71 lines
17 KiB
JavaScript
71 lines
17 KiB
JavaScript
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{Ei as t,Jt as n,er as r,ki as i}from"./control-ui-foundation-CeFMP1Ly.js";import{Dc as a,Ic as o,Na as s,To as c,b as ee,bc as l,dl as u,ml as d,no as te,to as ne,vr as f,w as p,xo as m,yr as h}from"./control-ui-core-pH6nakZ-.js";import{G as g,J as _,W as re,Z as ie,_ as ae,at as v,b as oe,rt as y}from"./lit-runtime-BEtFSUCp.js";import{Jt as se,Sn as ce,Ut as le,Wn as ue,ln as de,m as fe,on as pe,p as me,vn as he,wn as ge,zn as _e}from"./control-ui-core-DGVkFhVB.js";import{Ht as b,Lt as x,Nt as S,Rt as ve,_ as ye,m as be,p as xe,qt as C,w as Se,y as Ce}from"./control-ui-core-Br5DB0Zj.js";import{In as we,Ln as Te}from"./control-ui-boot-wpHCbPL9.js";import{a as w,r as Ee}from"./gateway-runtime-DUNO4Mi1.js";import{n as T,t as E}from"./transcript-search-BCLBZZfW.js";function D(e){switch(e){case`search`:return C(`palette.categories.search`);case`navigation`:return C(`palette.categories.navigation`);case`skills`:return C(`palette.categories.skills`);case`agents`:return C(`palette.items.agents`);case`apps`:return C(`palette.items.apps`);case`automations`:return C(`palette.items.scheduled`);case`models`:return C(`routeTitles.modelProviders`);case`plugins`:return C(`palette.items.plugins`);case`settings`:return C(`palette.items.settings`);case`chats`:return C(`sessionsView.title`);default:return e}}function De(e,t){return[{id:`nav-new-session`,label:C(`newSession.title`),icon:`plus`,category:`navigation`,action:`nav:new-session`},{id:`nav-sessions`,label:C(`palette.items.sessions`),icon:`fileText`,category:`navigation`,action:`nav:sessions`},{id:`nav-cron`,label:C(`palette.items.scheduled`),icon:`scrollText`,category:`navigation`,action:`nav:cron`},{id:`nav-skills`,label:C(`palette.items.skills`),icon:`zap`,category:`navigation`,action:`nav:skills`},{id:`nav-plugins`,label:C(`palette.items.plugins`),icon:`puzzle`,category:`navigation`,action:`nav:plugins`},{id:`nav-apps`,label:C(`palette.items.apps`),icon:`layoutGrid`,category:`navigation`,action:`nav:apps`},{id:`nav-config`,label:C(`palette.items.settings`),icon:`settings`,category:`navigation`,action:`nav:config`},{id:`nav-agents`,label:C(`palette.items.agents`),icon:`folder`,category:`navigation`,action:`nav:agents`},{id:`slash:verbose`,label:`/verbose`,icon:`terminal`,category:`search`,action:`/verbose full`,description:C(`palette.descriptions.verboseMode`)},...e?[{id:`panel-desktop`,label:C(`palette.items.desktop`),icon:`monitor`,category:`navigation`,action:`panel:desktop`}]:[],...t?[{id:`panel-custodian`,label:C(`nav.askOpenClaw`),icon:`lobster`,category:`navigation`,action:`panel:custodian`}]:[]]}function Oe(e){let n=De(e.desktopAvailable,e.custodianAvailable).filter(t=>e.includeSlashCommands||t.category!==`search`);if(!e.query)return n;let r=t(e.query),i=e=>{let n=t(e.label);return n===r?3:n.startsWith(r)?2:n.includes(r)||t(e.description).includes(r)||t(e.searchText).includes(r)?1:0},a=n.filter(e=>i(e)>0),o=e.catalogItems.map(e=>({item:e,rank:i(e)})).filter(({rank:e})=>e>0).toSorted((e,t)=>t.rank-e.rank||e.item.label.localeCompare(t.item.label)).slice(0,k).map(({item:e})=>e);return[...e.sessionItems,...a,...o]}function O(e){return e.map(e=>({id:e.id,label:e.label,icon:e.icon,category:e.category,action:`nav:${e.routeId}`,agentId:e.agentId,description:e.description,searchText:e.searchText}))}function ke(e){let t=ge(e).flatMap(e=>e.routes).concat(pe).map(e=>({id:`settings-${e}`,label:he(e),icon:`settings`,category:`settings`,routeId:e,description:ce(e),searchText:e})),n=A.map(e=>({id:`app-${e}`,label:C(`appsPage.cards.${e}.title`),icon:`layoutGrid`,category:`apps`,routeId:`apps`,description:C(`appsPage.cards.${e}.desc`),searchText:e}));return[...t,...n]}async function Ae(e){let t=async(t,n)=>e.methodAvailable(t)?e.client.request(t,n).catch(()=>null):null,[n,r,i,a,o]=await Promise.all([e.agents().catch(()=>null),t(`cron.list`,{includeDisabled:!0,limit:200,offset:0,sortBy:`name`,sortDir:`asc`,compact:!0}),t(`skills.status`,{agentId:e.agentId}),t(`plugins.list`,{}),t(`models.list`,{view:`configured`,agentId:e.agentId,preparedOnly:!0})]);return[...(n?.agents??[]).map(e=>({id:`agent-${e.id}`,label:e.identity?.name??e.name??e.id,icon:`bot`,category:`agents`,routeId:`agents`,agentId:e.id,description:e.id,searchText:[e.id,e.workspace,e.model?.primary,e.identity?.theme].filter(Boolean).join(` `)})),...(r?.jobs??[]).map(e=>({id:`automation-${e.id}`,label:e.displayName??e.name,icon:`calendarClock`,category:`automations`,routeId:`cron`,description:e.description,searchText:[e.id,e.declarationKey,e.name,e.agentId].filter(Boolean).join(` `)})),...(i?.skills??[]).map(e=>({id:`skill-${e.skillKey}`,label:e.name,icon:`zap`,category:`skills`,routeId:`skills`,description:e.description,searchText:[e.skillKey,e.source].filter(Boolean).join(` `)})),...(a?.plugins??[]).map(e=>({id:`plugin-${e.id}`,label:e.name,icon:`puzzle`,category:`plugins`,routeId:`plugins`,description:e.description,searchText:[e.id,e.packageName,e.category,e.kind?.join(` `)].filter(Boolean).join(` `)})),...(o?.models??[]).map(e=>({id:`model-${JSON.stringify([e.provider,e.id])}`,label:e.name||e.id,icon:`brain`,category:`models`,routeId:`model-providers`,description:e.provider,searchText:[e.id,e.provider,e.alias,e.tags?.join(` `)].filter(Boolean).join(` `)}))]}var k,A;function j(){return(j=e((()=>{de(),b(),k=10,A=[`ios`,`android`,`appleWatch`,`wearOs`,`macos`,`windows`,`linux`,`chrome`,`plugins`]})))()}function M(e,n){let r=t(n),i=[c(e.key,e),e.key,e.label,e.subject,e.category,e.kind,e.model,e.modelProvider,e.owner?.actor.label,e.owner?.actor.id,e.createdActor?.label,e.createdActor?.id].map(e=>t(e)).filter(Boolean);return i.some(e=>e===r)?3:i.some(e=>e.startsWith(r))?2:+!!i.some(e=>e.includes(r))}function je(e){let t=e.replace(/\s+/gu,` `).trim();return t.length>N?`${n(t,159)}…`:t}var N;function P(){return(P=e((()=>{m(),N=160})))()}function Me(e){let t=new Map;for(let n of e){let e=t.get(n.category)??[];e.push(n),t.set(n.category,e)}return[...t.entries()]}function F(e,t){if(e.action.startsWith(`nav:`)){let n=e.action.slice(4);e.agentId?t.onNavigate?.(n,{pathname:ue(e.agentId,null,t.basePath)}):t.onNavigate?.(n)}else e.action.startsWith(z)?t.onSelectSession?.(e.action.slice(8)):e.action===`panel:desktop`?window.dispatchEvent(new CustomEvent(Ce,{detail:{open:!0}})):e.action===`panel:custodian`?window.dispatchEvent(new CustomEvent(ye,{detail:{open:!0}})):t.onSlashCommand?.(e.action);t.onToggle()}function I(e){e.onToggle()}function L(){requestAnimationFrame(()=>{document.querySelector(`.cmd-palette__item--active`)?.scrollIntoView({block:`nearest`})})}function Ne(e,t,n,r){if(n.length!==0||e.key!==`ArrowDown`&&e.key!==`ArrowUp`&&e.key!==`Enter`)switch(e.key){case`ArrowDown`:e.preventDefault(),t.onActiveIdChange(n[(r+1)%n.length].id),L();break;case`ArrowUp`:e.preventDefault(),t.onActiveIdChange(n[(r-1+n.length)%n.length].id),L();break;case`Enter`:e.preventDefault();{let e=n[r];e&&F(e,t)}break;case`Escape`:e.preventDefault(),e.stopPropagation(),I(t)}}function R(e){return`cmd-palette-option-${e}`}function Pe(e){e instanceof HTMLInputElement&&requestAnimationFrame(()=>{e.isConnected&&e.focus()})}function Fe(e){if(!e.open)return g;let t=Me(Oe({...e,includeSlashCommands:!!e.onSlashCommand})),n=t.flatMap(([,e])=>e),r=Math.max(0,n.findIndex(t=>t.id===e.activeId)),i=n[r]?R(r):g,a=C(`palette.placeholder`);return _`
|
|
<openclaw-modal-dialog
|
|
class="cmd-palette-overlay palette"
|
|
label=${a}
|
|
style="--openclaw-modal-width: min(640px, calc(100vw - 32px));"
|
|
@modal-cancel=${()=>I(e)}
|
|
>
|
|
<div
|
|
class="cmd-palette"
|
|
@click=${e=>e.stopPropagation()}
|
|
@keydown=${t=>Ne(t,e,n,r)}
|
|
>
|
|
<label id=${Y} class="cmd-palette__label" for=${X}
|
|
>${a}</label
|
|
>
|
|
<input
|
|
${oe(e.onInputRef)}
|
|
autofocus
|
|
id=${X}
|
|
class="cmd-palette__input"
|
|
role="combobox"
|
|
aria-autocomplete="list"
|
|
aria-controls=${Z}
|
|
aria-activedescendant=${i}
|
|
aria-expanded="true"
|
|
placeholder=${a}
|
|
.value=${e.query}
|
|
@input=${t=>e.onQueryChange(t.target.value)}
|
|
/>
|
|
<div id=${Z} class="cmd-palette__results" role="listbox">
|
|
${e.sessionSearchPartial||e.sessionSearchIncomplete?_`<div class="cmd-palette__empty" role="status">
|
|
${C(e.sessionSearchIncomplete?`palette.searchIncomplete`:`palette.searchPartial`)}
|
|
</div>`:g}
|
|
${t.length===0?_`<div class="cmd-palette__empty">
|
|
<span class="nav-item__icon" style="opacity:0.3;width:20px;height:20px"
|
|
>${x.search}</span
|
|
>
|
|
<span
|
|
>${e.sessionSearchFailed?C(`palette.searchFailed`):C(`palette.noResults`)}</span
|
|
>
|
|
</div>`:t.map(([t,i])=>_`
|
|
<div class="cmd-palette__group-label">
|
|
${D(t)}
|
|
</div>
|
|
${i.map(t=>{let i=n.indexOf(t),a=i===r;return _`
|
|
<div
|
|
id=${R(i)}
|
|
class="cmd-palette__item ${a?`cmd-palette__item--active`:``}"
|
|
role="option"
|
|
aria-selected=${a?`true`:`false`}
|
|
@click=${n=>{n.stopPropagation(),F(t,e)}}
|
|
@mouseenter=${()=>e.onActiveIdChange(t.id)}
|
|
>
|
|
<span class="nav-item__icon">${x[t.icon]}</span>
|
|
<span>${t.label}</span>
|
|
${t.description?_`<span class="cmd-palette__item-desc muted"
|
|
>${t.description}</span
|
|
>`:g}
|
|
</div>
|
|
`})}
|
|
`)}
|
|
</div>
|
|
<div class="cmd-palette__footer">
|
|
<span><kbd>↑↓</kbd> ${C(`palette.footer.navigate`)}</span>
|
|
<span><kbd>↵</kbd> ${C(`palette.footer.select`)}</span>
|
|
<span><kbd>esc</kbd> ${C(`palette.footer.close`)}</span>
|
|
</div>
|
|
</div>
|
|
</openclaw-modal-dialog>
|
|
`}var z,B,V,H,U,W,G,K,q,J,Y,X,Z,Q;function $(){return($=e((()=>{Te(),re(),ie(),ae(),_e(),fe(),se(),b(),p(),Ee(),m(),s(),l(),E(),d(),h(),j(),xe(),P(),ve(),S(),Se(),z=`session:`,B=50,V=2,H=10,U=4,W=50,G=4,K=4,q=200,J=3e4,Y=`cmd-palette-label`,X=`cmd-palette-input`,Z=`cmd-palette-listbox`,Q=class extends u{constructor(){super(),this.desktopAvailable=!1,this.custodianAvailable=!1,this.open=!1,this.query=``,this.activeId=null,this.sessionItems=[],this.catalogItems=[],this.sessionSearchFailed=!1,this.sessionSearchPartial=!1,this.sessionSearchIncomplete=!1,this.subscriptions=new f(this),this.sessionSearchTimer=null,this.sessionSearchId=0,this.togglePalette=()=>{if(this.open){this.open=!1,this.clearSessionSearch();return}this.openPalette()},this.handleInputRef=e=>{this.open&&Pe(e)},this.handleGlobalKeydown=e=>{if(!e.defaultPrevented&&e.key===`Escape`&&this.open){e.preventDefault(),this.togglePalette();return}be(e)&&(e.preventDefault(),this.togglePalette())},this.subscriptions.watch(()=>this.context?.gateway,(e,t)=>e.subscribe(t),e=>this.synchronizeGateway(e))}connectedCallback(){super.connectedCallback(),document.addEventListener(`keydown`,this.handleGlobalKeydown)}disconnectedCallback(){document.removeEventListener(`keydown`,this.handleGlobalKeydown),this.open=!1,this.query=``,this.activeId=null,this.clearSessionSearch(),this.clearCatalogSearch(),this.sessionSearchSource=void 0,super.disconnectedCallback()}openPalette(){this.open=!0,this.query=``,this.activeId=null,this.clearSessionSearch()}get isOpen(){return this.open}synchronizeGateway(e){let t=e.snapshot,n=this.sessionSearchSource,r=n?.gateway!==e,i=n?.client!==t.client,a=n?.connected===!1&&t.phase===`connected`;this.sessionSearchSource={gateway:e,client:t.client,connected:t.phase===`connected`},(r||i||t.phase!==`connected`)&&(this.clearSessionSearch(),this.clearCatalogSearch()),t.phase===`connected`&&(r||i||a)&&this.scheduleSessionSearch(this.query)}clearSessionSearch(){this.sessionSearchTimer!==null&&(globalThis.clearTimeout(this.sessionSearchTimer),this.sessionSearchTimer=null),this.sessionSearchId+=1,this.sessionItems=[],this.sessionSearchFailed=!1,this.sessionSearchPartial=!1,this.sessionSearchIncomplete=!1}clearCatalogSearch(){this.catalogLoad=void 0,this.catalogItems=[]}ensureCatalogItems(){let e=this.context,t=e?.gateway,n=t?.snapshot.client;if(!e||t?.snapshot.phase!==`connected`||!n)return Promise.resolve();let r=o(t.snapshot),i=this.catalogLoad;if(i?.client===n&&i.agentId===r&&(i.loadedAt===void 0||Date.now()-i.loadedAt<J))return i.promise;let a=t.snapshot,s=Ae({client:n,agentId:r,agents:()=>e.agents?.ensureList?.()??Promise.resolve(null),methodAvailable:e=>!!w(a,e)}).then(e=>{this.catalogLoad?.promise===s&&this.context?.gateway===t&&t.snapshot.client===n&&(this.catalogItems=O(e),this.catalogLoad.loadedAt=Date.now())});return this.catalogLoad={client:n,agentId:r,promise:s},s}scheduleSessionSearch(e){this.clearSessionSearch();let t=i(e);!this.open||!t||t.length<V||(this.sessionSearchTimer=globalThis.setTimeout(()=>{this.sessionSearchTimer=null,this.ensureCatalogItems(),this.onSelectSession&&this.searchSessions(t)},B))}async searchSessions(e){let t=this.context,n=t?.sessions,r=t?.gateway,i=r?.snapshot.client;if(!n||r?.snapshot.phase!==`connected`||!i)return;let s=++this.sessionSearchId,l=()=>s===this.sessionSearchId&&this.open&&this.context?.sessions===n&&this.context?.gateway===r&&r.snapshot.client===i&&r.snapshot.phase===`connected`,u=w(r.snapshot,`sessions.search`),d=o(r.snapshot),f=u?T({client:i,query:e,result:void 0,listSessions:n.list,listOptions:{includeGlobal:!1,includeUnknown:!1,configuredAgentsOnly:!0},resolveAgentId:e=>a(e)?.agentId??d,isCurrent:l,maxListPages:G,maxSearchRequests:K,maxSessionKeys:q,mapPageRows:e=>ne(e,{agentId:``,defaultAgentId:d,filterByAgent:!1})}).then(e=>({error:!1,result:e})).catch(()=>({error:!0,result:null})):Promise.resolve(null),p=[],m=new Set,h=new Set([0]),g=0,_;try{for(;p.length<H&&g<U;){let t=await n.list({search:e,limit:W,..._===void 0?{}:{offset:_},includeGlobal:!1,includeUnknown:!1});if(g+=1,!l()||!t)return;let r=te(t,{agentId:``,defaultAgentId:d,filterByAgent:!1});for(let e of r)m.has(e.key)||(m.add(e.key),p.push(e));if(p.length>=H||!t.hasMore)break;let i=typeof t.nextOffset==`number`&&Number.isFinite(t.nextOffset)?Math.max(0,Math.floor(t.nextOffset)):t.sessions.length>0?(_??0)+t.sessions.length:null;if(i===null||h.has(i))break;h.add(i),_=i}let t=await f;if(!l())return;let r=t?.result??null;this.sessionSearchPartial=t?.error===!0,this.sessionSearchIncomplete=t?.error!==!0&&(r?.indexing===!0||r?.truncated===!0);let i=new Map;for(let e of r?.results??[])i.has(e.sessionKey)||i.set(e.sessionKey,e);let a=new Map(p.map(e=>[e.key,e]));for(let e of r?.sessions??[])a.has(e.key)||a.set(e.key,e);this.sessionItems=[...a.values()].map(t=>({row:t,metadataRank:Math.max(+!!m.has(t.key),M(t,e)),transcriptHit:i.get(t.key)})).filter(({metadataRank:e,transcriptHit:t})=>e>0||t).toSorted((e,t)=>{let n=t.metadataRank-e.metadataRank;return n===0?(t.transcriptHit?.score??-1/0)-(e.transcriptHit?.score??-1/0)||(t.row.updatedAt??0)-(e.row.updatedAt??0):n}).slice(0,H).map(({row:t,transcriptHit:n})=>({id:`session-${t.key}`,label:c(t.key,t),icon:`messageSquare`,category:`chats`,action:`${z}${t.key}`,description:n&&M(t,e)===0?je(n.snippet):ee(t.updatedAt,{fallback:``})}))}catch{s===this.sessionSearchId&&this.open&&(this.sessionSearchFailed=!0)}}render(){return Fe({basePath:this.context?.basePath??``,open:this.open,query:this.query,activeId:this.activeId,sessionItems:this.sessionItems,catalogItems:[...O(ke(le(this.context?.gateway.snapshot.hello?.auth??null))),...this.catalogItems],sessionSearchFailed:this.sessionSearchFailed,sessionSearchPartial:this.sessionSearchPartial,sessionSearchIncomplete:this.sessionSearchIncomplete,desktopAvailable:this.desktopAvailable,custodianAvailable:this.custodianAvailable,onToggle:this.togglePalette,onQueryChange:e=>{this.query=e,this.activeId=null,this.scheduleSessionSearch(e)},onActiveIdChange:e=>{this.activeId=e},onNavigate:this.onNavigate,onSelectSession:this.onSelectSession,onSlashCommand:this.onSlashCommand,onInputRef:this.handleInputRef})}},r([v({attribute:!1})],Q.prototype,`onNavigate`,void 0),r([v({attribute:!1})],Q.prototype,`onSelectSession`,void 0),r([v({attribute:!1})],Q.prototype,`onSlashCommand`,void 0),r([v({attribute:!1})],Q.prototype,`desktopAvailable`,void 0),r([v({attribute:!1})],Q.prototype,`custodianAvailable`,void 0),r([we({context:me,subscribe:!0})],Q.prototype,`context`,void 0),r([y()],Q.prototype,`open`,void 0),r([y()],Q.prototype,`query`,void 0),r([y()],Q.prototype,`activeId`,void 0),r([y()],Q.prototype,`sessionItems`,void 0),r([y()],Q.prototype,`catalogItems`,void 0),r([y()],Q.prototype,`sessionSearchFailed`,void 0),r([y()],Q.prototype,`sessionSearchPartial`,void 0),r([y()],Q.prototype,`sessionSearchIncomplete`,void 0),customElements.get(`openclaw-command-palette`)||customElements.define(`openclaw-command-palette`,Q)})))()}$();export{Q as CommandPalette};
|
|
//# sourceMappingURL=command-palette-BoOc-8Xf.js.map
|