@supanadit/morse-web 0.9.4 → 0.9.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/ui/index.html
CHANGED
|
@@ -40,5 +40,5 @@
|
|
|
40
40
|
});
|
|
41
41
|
})();
|
|
42
42
|
</script>
|
|
43
|
-
<script src="main-
|
|
43
|
+
<script src="main-DSKZFA2H.js" type="module"></script><script>document.querySelectorAll('link[data-beasties-media]').forEach(function(l){l.media=l.getAttribute('data-beasties-media');l.removeAttribute('data-beasties-media')})</script></body>
|
|
44
44
|
</html>
|
|
@@ -10,7 +10,7 @@ ${s}`}var Oo=class{messageListeners=new Set;statusListeners=new Set;onMessage(e)
|
|
|
10
10
|
|
|
11
11
|
This response is produced in the browser, with no pi process and no server, so you can iterate on the frontend (or a new frontend framework) freely.`,r=this.nextId("assistant");this.schedule(()=>{this.appendItem({kind:"assistant",id:r,at:Date.now(),text:"",thinking:"",streaming:!0,model:this.state.model?.name})},n),n+=40;for(let s of Kb(o)){let a=s;this.schedule(()=>{this.emit({type:"transcript/delta",payload:{id:r,text:a}})},n),n+=55}this.schedule(()=>{this.streaming=!1,this.updateItem({kind:"assistant",id:r,at:Date.now(),text:o,thinking:"",streaming:!1,model:this.state.model?.name}),this.emit({type:"session/state",payload:K(V({},this.state),{streaming:!1})}),this.emitActivity()},n+80)}appendItem(e){this.items=[...this.items,e],this.emit({type:"transcript/append",payload:e})}updateItem(e){this.items=this.items.map(n=>n.id===e.id?e:n),this.emit({type:"transcript/update",payload:e})}abortRun(){for(let e of this.timers)clearTimeout(e);this.timers.clear(),this.streaming&&(this.streaming=!1,this.emitActivity())}notify(e,n){this.emit({type:"notice",payload:{level:e,text:n,at:Date.now()}})}schedule(e,n){let i=setTimeout(()=>{this.timers.delete(i),this.disposed||e()},n);this.timers.add(i)}nextId(e){return this.counter+=1,`mock-${e}-${this.counter}`}emitActivity(){let e=this.sessions.filter(n=>this.hot.has(n.id)).slice(0,4).map(n=>({sessionKey:n.id,streaming:this.streaming,busy:!1,agentReady:!0,agentStarting:!1}));this.emit({type:"session/activity",payload:{sessions:e}})}emit(e){this.emitMessage(e)}},CI={isRepo:!0,root:"/mock/workspace",branch:"main",commits:[Ss("f1a2b3c4","Add the git panel to the browser host",["e2f3a4b5"],["HEAD -> main"],2),Ss("e2f3a4b5","Merge branch feature/graph",["d3e4f5a6","c4d5e6f7"],["origin/main"],5),Ss("d3e4f5a6","Wire the graph lanes",["b5c6d7e8"],[],8),Ss("c4d5e6f7","Fix the lane colours in light mode",["b5c6d7e8"],[],11),Ss("b5c6d7e8","Bump the protocol version",["a6b7c8d9"],["tag: v0.8.0"],26),Ss("a6b7c8d9","Initial commit",[],[],52)]};function Ss(t,e,n,i,o){return{hash:t,shortHash:t.slice(0,7),parents:n,refs:i,author:"Morse Dev",date:new Date(Date.now()-o*36e5).toISOString(),subject:e}}var EI={isRepo:!0,files:[{path:"README.md",status:" M"},{path:"package.json",status:" M"},{path:"packages/protocol/src/wire.ts",status:"A "},{path:"packages/ui-angular/src/app/core/markdown.ts",status:"??"}]},wI=["diff --git a/README.md b/README.md","index 1111111..2222222 100644","--- a/README.md","+++ b/README.md","@@ -1,4 +1,5 @@"," # Morse"," ","-An old line","+A new line","+A line that was added"," A line that stayed",""].join(`
|
|
12
12
|
`),SI=["AGENTS.md","README.md","package.json","packages/core/src/chat/service.ts","packages/core/src/domain.ts","packages/core/src/session/service.ts","packages/host-runtime/src/session-controller.ts","packages/protocol/src/wire.ts","packages/ui-angular/src/app/app.ts","packages/ui-angular/src/app/chat/chat-composer/chat-composer.ts","packages/ui-angular/src/app/core/markdown.ts","packages/ui-runtime/src/client.ts"],TI={"/mock":[{name:"home",path:"/mock/home"},{name:"projects",path:"/mock/projects"},{name:"workspace",path:"/mock/workspace"}],"/mock/home":[{name:"projects",path:"/mock/home/projects"}],"/mock/home/projects":[],"/mock/projects":[{name:"morse",path:"/mock/projects/morse"},{name:"other",path:"/mock/projects/other"}],"/mock/projects/morse":[{name:"packages",path:"/mock/projects/morse/packages"}],"/mock/projects/other":[],"/mock/projects/morse/packages":[],"/mock/workspace":[]};function DI(t){let e=typeof t=="string"&&t.trim().length>0?t.trim():Ts.cwd,n=e==="/mock"?void 0:e.slice(0,e.lastIndexOf("/"))||"/";return{path:e,parent:n,directories:TI[e]??[],isGitRepo:e==="/mock/projects/morse",canOpen:!0,roots:[{name:"mock",path:"/mock"},{name:"workspace",path:Ts.cwd}]}}function Kb(t){return t.match(/.{1,14}/g)??[]}function Qb(){return typeof location>"u"?!1:new URL(location.href).searchParams.get("scope")==="workspace"}function MI(){return typeof location>"u"?!1:new URL(location.href).searchParams.get("empty")==="1"}function Xb(){let t=Date.now(),e=[{id:"/mock/morse/2026-01-01_ui-overhaul.jsonl",title:"Sidebar overhaul: projects, sessions, composer",cwd:Ts.cwd,updatedAt:t-6e4,messageCount:12},{id:"/mock/morse/2026-01-01_scrollbar.jsonl",title:"Improve native scrollbar: compact and themed",cwd:Ts.cwd,updatedAt:t-7*6e4,messageCount:6}];return Qb()?e:[...e,{id:"/mock/morse/2026-01-01_providers.jsonl",title:"Add provider picker with context sizes",cwd:"/mock/morse",updatedAt:t-20*6e4,messageCount:24},{id:"/mock/morse/2026-01-01_greeting.jsonl",title:"Greeting",cwd:"/mock/morse",updatedAt:t-180*6e4,messageCount:2},{id:"/mock/eigen-morph/2026-01-01_manifest.jsonl",title:"Manifest report-worker untuk production",cwd:"/mock/eigen-morph",updatedAt:t-1560*6e4,messageCount:31}]}function Zb(){let t=new Map;for(let e of Xb()){let n=t.get(e.cwd);if(n){n.sessionCount+=1,n.lastUsedAt=Math.max(n.lastUsedAt,e.updatedAt);continue}t.set(e.cwd,{path:e.cwd,name:e.cwd.split("/").filter(Boolean).at(-1)??e.cwd,sessionCount:1,lastUsedAt:e.updatedAt})}return[...t.values()].sort((e,n)=>n.lastUsedAt-e.lastUsedAt)}function kI(){let t=Date.now(),e=["Plan:","","1. **Navigation** \u2014 projects \u2192 sessions, collapsible, with a session search and a project filter.","2. **Header** \u2014 session title, scope, status badge, `Compact`, and the sidebar fold.","3. **Composer** \u2014 model + thinking + send in one control row.","","Two shapes, because the hosts differ: the browser host is *global* (many projects), VS Code is scoped to the folders it has open.","","```ts","export class SessionNav {"," protected readonly scope = computed(() => this.morse.capabilities()?.scope ?? 'global');",""," protected readonly groups = computed(() => {",' return this.scope() === "global"'," ? this.projects().map((project) => ({ ... }))"," : [{ path: this.workspace().cwd, name: this.workspace().name, sessions }];"," });","}","```","","And a small overview of what each scope renders:","","| Host | Scope | Navigation shape |","|---|---|---|","| NestJS browser | `global` | projects \u2192 sessions |","| VS Code | `workspace` | one group (open folders) |","","See `docs/FRONTENDS.md` for the rule that frontends must read capabilities instead of guessing."].join(`
|
|
13
|
-
`);return[{kind:"user",id:"mock-seed-user-1",at:t-15e4,text:"Refactor the sidebar to match the reference, make it responsive, and render markdown properly."},{kind:"tool",id:"mock-seed-tool-1",at:t-14e4,name:"bash",title:"bash: ls packages/ui-angular/src/app",status:"ok",output:"app.css app.html app.ts chat/ core/ nav/",durationMs:12},{kind:"tool",id:"mock-seed-tool-2",at:t-138e3,name:"read",title:"read: packages/ui-angular/src/app/app.css",status:"ok",output:"42 lines, 4 media queries",durationMs:8},{kind:"tool",id:"mock-seed-tool-3",at:t-13e4,name:"edit",title:"edit: packages/ui-angular/src/app/nav/session-nav.ts",status:"ok",output:"+26 -7",durationMs:190},{kind:"tool",id:"mock-seed-tool-4",at:t-128e3,name:"edit",title:"edit: packages/ui-angular/src/app/app.css",status:"ok",output:"+18 -4",durationMs:140},{kind:"tool",id:"mock-seed-tool-5",at:t-1800,name:"bash",title:"bash: npm run build:ui",status:"running",output:"Application bundle generation complete. [1.2 seconds]"},{kind:"assistant",id:"mock-seed-assistant-1",at:t-1e5,text:e,thinking:"The webview is narrow, so the navigation has to become a drawer below ~760px instead of a second column.",streaming:!1,model:"Mock Model"},{kind:"notice",id:"mock-seed-notice-1",at:t-6e4,level:"info",text:"Everything is wired through the same wire protocol \u2014 try ?scope=workspace to see the VS Code shape."}]}function Jb(t={}){if(Yb())return new $d;let e=t.href??(typeof location<"u"?location.href:"http://localhost/"),n=new URL(e,"http://localhost/");if(t.forceMock===!0||n.searchParams.get("mock")==="1")return new Bd;let i=n.searchParams.get("server");if(i)return new Xa({url:i,WebSocketImpl:t.WebSocketImpl});let o=n.protocol==="https:",r=t.websocketPath??"/ws";return new Xa({url:`${o?"wss":"ws"}://${n.host}${r}`,WebSocketImpl:t.WebSocketImpl})}var Ui=class t{attached=O([]);pinned=O([]);live=O(null);pendingMentions=O([]);message=O(null);counter=0;images=this.attached.asReadonly();pins=this.pinned.asReadonly();livePreview=this.live.asReadonly();mentions=this.pendingMentions.asReadonly();notice=this.message.asReadonly();count=E(()=>this.attached().length+this.pinned().length+this.pendingMentions().length);async read(e){let n=[],i=[];for(let o of e){if(!o.type.startsWith("image/")){i.push(o.name);continue}let r=await vh(o);if(!r){i.push(o.name);continue}this.counter+=1,n.push({id:`attachment-${this.counter}`,name:o.name||`image-${this.counter}.png`,mimeType:o.type,data:r,bytes:o.size})}return{images:n,skipped:i}}add(e){e.length!==0&&this.attached.update(n=>[...n,...e])}async accept(e){let{images:n,skipped:i}=await this.read(e);return this.add(n),{attached:n.length,skipped:i}}addMentions(e){let n=e.map(i=>i.trim()).filter(i=>i.length>0);n.length!==0&&this.pendingMentions.update(i=>[...i,...n])}seed(e,n){e.length>0&&this.add(e.map((i,o)=>{this.counter+=1;let s=(i.mimeType.split("/")[1]?.toLowerCase()??"").replace(/[^a-z0-9]/g,"")||"png";return{id:`seed-${this.counter}`,name:o===0?`image.${s}`:`image-${o+1}.${s}`,mimeType:i.mimeType,data:i.data,bytes:Math.floor(i.data.length*3/4)}}));for(let i of n)this.pin({path:i.path,startLine:i.startLine,endLine:i.endLine})}setPinRange(e,n){this.pinned.update(i=>i.map(o=>o.id===e?K(V({},o),{startLine:n.startLine,endLine:n.endLine}):o))}pin(e,n){if(e.path.length===0)return"";if(e.startLine===void 0){let _=this.pinned().find(C=>C.path===e.path&&C.startLine===void 0);if(_!==void 0)return _.id;this.counter+=1;let x=`pin-${this.counter}`;return this.pinned.update(C=>[...C,K(V({},e),{id:x})]),x}let i=this.pinned(),o=e.startLine,r=e.endLine??e.startLine,s=new Set(n===void 0?[]:[n]),a,c=!0;for(;c;){c=!1;for(let _ of i){if(s.has(_.id)||_.path!==e.path||_.startLine===void 0)continue;let x=_.startLine,C=_.endLine??x;x<=r+1&&C+1>=o&&(o=Math.min(o,x),r=Math.max(r,C),s.add(_.id),a??=_.id,c=!0)}}this.counter+=1;let l={id:n??a??`pin-${this.counter}`,path:e.path,startLine:o,endLine:r>o?r:void 0},p=[],f=!1;for(let _ of i){if(s.has(_.id)){f||(p.push(l),f=!0);continue}p.push(_)}return f||p.push(l),this.pinned.set(p),l.id}removePin(e){this.pinned.update(n=>n.filter(i=>i.id!==e))}setLivePreview(e){if(e===null||e.path.length===0||e.startLine===void 0){this.live.set(null);return}let n=this.live();n&&n.path===e.path&&n.startLine===e.startLine&&n.endLine===e.endLine||this.live.set({id:"live-preview",path:e.path,startLine:e.startLine,endLine:e.endLine})}lockLivePreview(){let e=this.live();e&&(this.live.set(null),this.pin({path:e.path,startLine:e.startLine,endLine:e.endLine}))}remove(e){this.attached.update(n=>n.filter(i=>i.id!==e))}takeImages(){let e=this.attached().map(({data:n,mimeType:i})=>({data:n,mimeType:i}));return this.attached.set([]),e}takePins(){let e=this.pinned().map(({path:n,startLine:i,endLine:o})=>{let r={path:n};return i!==void 0&&(r.startLine=i),o!==void 0&&(r.endLine=o),r});return this.pinned.set([]),e}takeMentions(){let e=this.pendingMentions();return this.pendingMentions.set([]),e}clear(){this.attached.set([]),this.pinned.set([]),this.live.set(null),this.pendingMentions.set([])}say(e,n){this.message.set({level:e,text:n,at:Date.now()})}static \u0275fac=function(n){return new(n||t)};static \u0275prov=xe({token:t,factory:t.\u0275fac,providedIn:"root"})};function vh(t){return new Promise(e=>{if(typeof FileReader>"u"){e(void 0);return}let n=new FileReader;n.onerror=()=>e(void 0),n.onload=()=>{let i=n.result;if(typeof i!="string"){e(void 0);return}let o=i.indexOf(",");e(o===-1?void 0:i.slice(o+1))},n.readAsDataURL(t)})}var ex=new He("morse.transport",{providedIn:"root",factory:()=>Jb()});var tx={name:"@morse/ui-angular",version:"0.9.4"},NI=6e3,Ze=class t{transport=N(ex);destroyRef=N(pt);view=O(jd());client;actions;slowConnectionTimer;connection=E(()=>this.view().connection);connectionDetail=E(()=>this.view().connectionDetail);protocolVersion=E(()=>this.view().protocolVersion);frontend=E(()=>this.view().frontend);version=E(()=>this.frontend()?.version??tx.version);slowConnection=O(!1);capabilities=E(()=>this.view().capabilities);state=E(()=>this.view().state);items=E(()=>this.view().items);projects=E(()=>this.view().projects);sessions=E(()=>this.view().sessions);activity=E(()=>this.view().activity);sessionActivity=E(()=>{let e=new Map;for(let n of this.view().activity)e.set(n.sessionKey,n);return e});pendingInteraction=E(()=>this.view().pendingInteraction);lastNotice=E(()=>this.view().lastNotice);lastError=E(()=>this.view().lastError);agentReady=E(()=>this.view().state.agentReady);agentStarting=E(()=>this.view().state.agentStarting);agentError=E(()=>this.view().state.agentError);agentFailure=E(()=>this.view().state.agentFailure);running=E(()=>this.view().state.streaming||this.view().state.busy);workspace=E(()=>this.view().state.workspace);model=E(()=>this.view().state.model);thinkingLevel=E(()=>this.view().state.thinkingLevel);availableModels=E(()=>this.view().state.availableModels);availableThinkingLevels=E(()=>this.view().state.availableThinkingLevels);availableCommands=E(()=>this.view().state.availableCommands);usage=E(()=>this.view().state.usage);hasOlderHistory=E(()=>this.view().state.hasOlderHistory===!0);loadingOlderHistory=E(()=>this.view().state.loadingOlderHistory===!0);constructor(){this.client=Bb({transport:this.transport,frontend:tx}),this.actions=this.client.actions;let e=this.client.getView();this.view.set(e),this.trackSlowConnection(e.connection),this.client.subscribe(n=>{this.view.set(n),this.trackSlowConnection(n.connection)}),this.destroyRef.onDestroy(()=>{this.clearSlowConnectionTimer(),this.client.dispose()})}trackSlowConnection(e){if(e!=="connecting"){this.clearSlowConnectionTimer(),this.slowConnection.set(!1);return}this.slowConnectionTimer===void 0&&(this.slowConnectionTimer=setTimeout(()=>{this.slowConnection.set(!0)},NI))}clearSlowConnectionTimer(){this.slowConnectionTimer!==void 0&&(clearTimeout(this.slowConnectionTimer),this.slowConnectionTimer=void 0)}prompt(e,n="new",i,o){this.actions.prompt(e,n,i,o)}editMessage(e,n){this.actions.editMessage(e,n)}forkMessage(e){this.actions.forkMessage(e)}onComposerSeed(e){return this.client.onComposerSeed(e)}onContextSelection(e){return this.client.onContextSelection(e)}onContextSelectionLive(e){return this.client.onContextSelectionLive(e)}ready(){this.actions.ready()}abort(){this.actions.abort()}newSession(e){this.actions.newSession(e)}openProject(e){this.actions.openProject(e)}requestProjects(){this.actions.requestProjects()}activateSession(e,n){this.actions.activateSession(e,n)}closeSession(e){this.actions.closeSession(e)}deleteSession(e){this.actions.deleteSession(e)}compactSession(e){this.actions.compactSession(e)}loadOlderHistory(){this.actions.loadOlderHistory()}loadSession(e){this.actions.loadSession(e)}requestSessions(){this.actions.requestSessions()}refreshCommands(){this.actions.refreshCommands()}setModel(e,n){this.actions.setModel(e,n)}setThinkingLevel(e){this.actions.setThinkingLevel(e)}respond(e){this.actions.respond(e)}hostCommand(e,n){this.actions.hostCommand(e,n)}requestHostCommand(e,n){return this.actions.hostCommand(e,n)}static \u0275fac=function(n){return new(n||t)};static \u0275prov=xe({token:t,factory:t.\u0275fac,providedIn:"root"})};var Hd=class t{items=O([]);counter=0;queued=this.items.asReadonly();count=E(()=>this.items().length);head(e){return this.items().find(n=>n.sessionId===e)}enqueue(e,n){this.counter+=1;let i=`queued-${this.counter}`;return this.items.update(o=>[...o,K(V({},e),{id:i,sessionId:n})]),i}remove(e){this.items.update(n=>n.filter(i=>i.id!==e))}shift(e){let n=this.head(e);if(n!==void 0)return this.remove(n.id),n}clear(){this.items.set([])}static \u0275fac=function(n){return new(n||t)};static \u0275prov=xe({token:t,factory:t.\u0275fac,providedIn:"root"})};var sx="morse.navigation.collapsed",ax="morse.git.open",cx="morse.git.expanded",bh="morse.git.width",OI=220,PI=1600,lx="morse.git.changesHeight",nx="morse.git.changesCollapsed",ix="morse.git.historyCollapsed",AI=48,RI=1200,dx="morse.explorer.height",LI=140,FI=720;function VI(){try{return globalThis.localStorage?.getItem(sx)==="1"}catch{return!1}}function jI(t){try{globalThis.localStorage?.setItem(sx,t?"1":"0")}catch{}}function $I(){try{return globalThis.localStorage?.getItem(ax)==="1"}catch{return!1}}function BI(t){try{globalThis.localStorage?.setItem(ax,t?"1":"0")}catch{}}function HI(){try{return globalThis.localStorage?.getItem(cx)==="1"}catch{return!1}}function UI(t){try{globalThis.localStorage?.setItem(cx,t?"1":"0")}catch{}}function ux(t){return Math.round(Math.min(RI,Math.max(AI,t)))}function px(t){return Math.round(Math.min(PI,Math.max(OI,t)))}function zI(){try{let t=globalThis.localStorage?.getItem(bh);if(t==null)return;let e=Number.parseInt(t,10);return Number.isFinite(e)?px(e):void 0}catch{return}}function GI(t){try{globalThis.localStorage?.setItem(bh,String(t))}catch{}}function qI(){try{let t=globalThis.localStorage?.getItem(lx);if(t==null)return;let e=Number.parseInt(t,10);return Number.isFinite(e)?ux(e):void 0}catch{return}}function WI(t){try{globalThis.localStorage?.setItem(lx,String(t))}catch{}}function ox(t){try{return globalThis.localStorage?.getItem(t)==="1"}catch{return!1}}function rx(t,e){try{globalThis.localStorage?.setItem(t,e?"1":"0")}catch{}}function fx(t){return Math.round(Math.min(FI,Math.max(LI,t)))}function YI(){try{let t=globalThis.localStorage?.getItem(dx);if(t==null)return;let e=Number.parseInt(t,10);return Number.isFinite(e)?fx(e):void 0}catch{return}}function KI(t){try{globalThis.localStorage?.setItem(dx,String(t))}catch{}}var Ht=class t{navigationVisible=O(!1);navigationOpen=this.navigationVisible.asReadonly();collapsed=O(VI());navigationCollapsed=this.collapsed.asReadonly();gitPanel=O($I());gitPanelOpen=this.gitPanel.asReadonly();gitExpanded=O(HI());gitPanelExpanded=this.gitExpanded.asReadonly();gitWidthSignal=O(zI());gitPanelWidth=this.gitWidthSignal.asReadonly();changesHeightSignal=O(qI());gitChangesHeight=this.changesHeightSignal.asReadonly();changesCollapsedSignal=O(ox(nx));gitChangesCollapsed=this.changesCollapsedSignal.asReadonly();historyCollapsedSignal=O(ox(ix));gitHistoryCollapsed=this.historyCollapsedSignal.asReadonly();explorer=O(YI());explorerHeight=this.explorer.asReadonly();projectPicker=O(!1);projectPickerOpen=this.projectPicker.asReadonly();about=O(!1);aboutOpen=this.about.asReadonly();shortcuts=O(!1);shortcutsOpen=this.shortcuts.asReadonly();projectFilter=O(!1);projectFilterOpen=this.projectFilter.asReadonly();promptTemplate=O(!1);promptTemplateOpen=this.promptTemplate.asReadonly();compactPrompt=O(void 0);compactConfirmOpen=E(()=>this.compactPrompt()!==void 0);compactInstructions=E(()=>this.compactPrompt()?.instructions);modalOpen=E(()=>this.about()||this.shortcuts()||this.projectPicker()||this.projectFilter()||this.promptTemplate()||this.compactPrompt()!==void 0);toggleNavigation(){this.navigationVisible.update(e=>!e)}openNavigation(){this.navigationVisible.set(!0)}closeNavigation(){this.navigationVisible.set(!1)}toggleNavigationCollapsed(){this.setCollapsed(!this.collapsed())}unfoldNavigation(){this.setCollapsed(!1)}setCollapsed(e){this.collapsed.set(e),jI(e)}toggleGitPanel(){this.setGitPanel(!this.gitPanel())}closeGitPanel(){this.setGitPanel(!1)}setGitPanel(e){this.gitPanel.set(e),BI(e)}toggleGitPanelExpanded(){this.setGitExpanded(!this.gitExpanded())}setGitExpanded(e){this.gitExpanded.set(e),UI(e)}toggleGitChanges(){this.changesCollapsedSignal.update(e=>!e),rx(nx,this.changesCollapsedSignal())}toggleGitHistory(){this.historyCollapsedSignal.update(e=>!e),rx(ix,this.historyCollapsedSignal())}setGitChangesHeight(e,n=!0){let i=ux(e);this.changesHeightSignal.set(i),n&&WI(i)}setGitPanelWidth(e,n=!0){let i=px(e);this.gitWidthSignal.set(i),n&&GI(i)}resetGitPanelWidth(){this.gitWidthSignal.set(void 0);try{globalThis.localStorage?.removeItem(bh)}catch{}}setExplorerHeight(e){let n=fx(e);this.explorer.set(n),KI(n)}openAbout(){this.about.set(!0)}closeAbout(){this.about.set(!1)}openShortcuts(){this.shortcuts.set(!0)}closeShortcuts(){this.shortcuts.set(!1)}toggleShortcuts(){this.shortcuts.update(e=>!e)}openProjectFilter(){this.projectFilter.set(!0)}closeProjectFilter(){this.projectFilter.set(!1)}setPromptTemplateOpen(e){this.promptTemplate.set(e)}openProjectPicker(){this.projectPicker.set(!0)}closeProjectPicker(){this.projectPicker.set(!1)}requestCompact(e){this.compactPrompt.set(e?{instructions:e}:{})}closeCompactPrompt(){this.compactPrompt.set(void 0)}static \u0275fac=function(n){return new(n||t)};static \u0275prov=xe({token:t,factory:t.\u0275fac,providedIn:"root"})};var Ja=[{id:"session.new",group:"Session",label:"New session",detail:"The sidebar button, on the keyboard \u2014 and on a browser host it still asks which folder first.",binding:{key:"n",mod:!0,alt:!0}},{id:"session.search",group:"Session",label:"Focus the session search",detail:"Opens the sidebar when the layout hid it, and puts the caret in the field. In the prompt, `/` opens the command palette instead.",binding:{key:"/"}},{id:"project.filter",group:"Navigate",label:"Change project focus",detail:"Narrows the sidebar to one project. Only a host with several projects has this.",binding:{key:"p",mod:!0,alt:!0},overlay:!0},{id:"view.git",group:"Navigate",label:"Toggle the git panel",detail:"Shows or hides the history and graph for the active project. The browser host only \u2014 VS Code has its own Source Control view.",binding:{key:"g",mod:!0,alt:!0},overlay:!0,whileTyping:!0},{id:"model.pick",group:"Model",label:"Change model",detail:"Opens the model chooser above the prompt.",binding:{key:"m",mod:!0,alt:!0},overlay:!0,whileTyping:!0},{id:"thinking.pick",group:"Model",label:"Change thinking level",detail:"Opens the reasoning-level chooser next to the model.",binding:{key:"t",mod:!0,alt:!0},overlay:!0,whileTyping:!0},{id:"context.compact",group:"Context",label:"Compact the conversation",detail:"Asks first: pi replaces what it remembers with a summary.",binding:{key:"c",mod:!0,alt:!0},overlay:!0,whileTyping:!0},{id:"prompt.send",group:"Typing",label:"Send the prompt",detail:"While the prompt has the caret. During a run, the same key steers the agent instead.",keys:"Enter"},{id:"prompt.newline",group:"Typing",label:"New line",detail:"The prompt grows with the text rather than sending it.",keys:"Shift+Enter"},{id:"prompt.mention",group:"Typing",label:"Mention a file",detail:"Opens the picker that inserts an @path mention.",keys:"@"},{id:"prompt.commands",group:"Typing",label:"Command palette",detail:"The slash commands Morse and pi understand, filtered as you type.",keys:"/"},{id:"help.shortcuts",group:"Help",label:"This list",detail:"Opens and closes these rows, outside a text field.",binding:{key:"?"},overlay:!0}];function ec(t){return"binding"in t}function mx(){let t=globalThis.navigator;return/mac|iphone|ipad/i.test(t?.userAgent??"")}function hx(t,e=mx()){let n=[];return t.mod===!0&&n.push(e?"\u2318":"Ctrl"),t.alt===!0&&n.push(e?"\u2325":"Alt"),n.push(t.key.length===1&&/[a-z]/.test(t.key)?t.key.toUpperCase():t.key),e?n.join(""):n.join("+")}var An=class t{shell=N(Ht);handlers=new Map;revision=O(0);catalog=Ja;available=E(()=>{this.revision();let e=new Map;for(let n of Ja){if(!ec(n))continue;let i=this.handlers.get(n.id);e.set(n.id,i!==void 0&&(i.enabled?.()??!0))}return e});constructor(){let e=globalThis.document;e&&(e.addEventListener("keydown",this.onKeydown,!0),N(pt).onDestroy(()=>e.removeEventListener("keydown",this.onKeydown,!0)))}bind(e,n,i){let o={run:n,enabled:i};return this.handlers.set(e,o),this.bump(),()=>{this.handlers.get(e)===o&&(this.handlers.delete(e),this.bump())}}bump(){this.revision.update(e=>e+1)}onKeydown=e=>{if(e.defaultPrevented||e.isComposing||e.getModifierState?.("AltGraph")===!0)return;let n=Ja.find(o=>ec(o)&&ZI(o.binding,e));if(n===void 0||n.whileTyping!==!0&&QI(e.target)||n.overlay===!0&&this.shell.modalOpen()&&!(n.id==="help.shortcuts"&&this.shell.shortcutsOpen()))return;let i=this.handlers.get(n.id);i===void 0||i.enabled!==void 0&&!i.enabled()||(e.preventDefault(),i.run())};static \u0275fac=function(n){return new(n||t)};static \u0275prov=xe({token:t,factory:t.\u0275fac,providedIn:"root"})};function ZI(t,e){return e.key.toLowerCase()!==t.key.toLowerCase()||t.mod===!0!==(mx()?e.metaKey:e.ctrlKey)?!1:t.alt===!0===e.altKey}function QI(t){let e=t;if(e===null||typeof e.tagName!="string")return!1;let n=e.tagName.toLowerCase();return n==="input"||n==="textarea"||n==="select"||e.isContentEditable===!0}var XI=10*1024*1024,Ds=class t{morse=N(Ze);available=E(()=>this.morse.capabilities()?.fileUpload===!0);async upload(e){let n=[],i=[];for(let o of e){if(o.size>XI){i.push(o.name);continue}let r=await vh(o);if(!r){i.push(o.name);continue}let s=await this.morse.requestHostCommand("uploadFile",{name:o.name,mimeType:o.type,data:r}),a=typeof s?.path=="string"?s.path:void 0;if(!a){i.push(o.name);continue}n.push({path:a,name:o.name,bytes:typeof s?.bytes=="number"?s.bytes:o.size})}return{added:n,failed:i}}static \u0275fac=function(n){return new(n||t)};static \u0275prov=xe({token:t,factory:t.\u0275fac,providedIn:"root"})};function xh(t){if(t==="??")return"U";if(t.includes("U")||t==="AA"||t==="DD")return"C";if(t.includes("R")||t.includes("C"))return"R";if(t.includes("D"))return"D";if(t.includes("A"))return"A";if(t.includes("M")||t.includes("T"))return"M"}function gx(t){if(typeof t!="object"||t===null)return;let e=t;return e.isRepo!==!0?typeof e.isRepo=="boolean"?{isRepo:!1,files:[]}:void 0:{isRepo:!0,files:Array.isArray(e.files)?e.files.map(JI).filter(i=>i!==void 0):[]}}function Ud(t){let e=new Map;for(let n of t?.files??[]){let i=xh(n.status);i!==void 0&&e.set(n.path,i)}return e}function JI(t){if(typeof t!="object"||t===null)return;let e=t,n=e.path,i=e.status;if(!(typeof n!="string"||typeof i!="string"))return{path:n,status:i}}var eN=4e3,zi=class t{morse=N(Ze);cache=O([]);loading=O(!1);statuses=O(void 0);failure=O(void 0);loadedFor;inFlight=!1;files=this.cache.asReadonly();busy=this.loading.asReadonly();status=this.statuses.asReadonly();error=this.failure.asReadonly();available=E(()=>this.morse.capabilities()?.filePicker===!0);gitAvailable=E(()=>this.morse.capabilities()?.gitPanel===!0);constructor(){se(()=>{if(!this.available())return;let e=this.morse.workspace().cwd;this.ensureLoaded(this.loadedFor!==void 0&&this.loadedFor!==e)}),se(e=>{if(!this.available())return;let n=setInterval(()=>{typeof document<"u"&&document.hidden||this.ensureLoaded(!0,!0)},eN);e(()=>clearInterval(n))})}refresh(){this.ensureLoaded(!0)}ensureLoaded(e=!1,n=!1){let i=this.morse.workspace().cwd;i.length===0||this.inFlight||!e&&this.loadedFor===i||(this.inFlight=!0,n||(this.loading.set(!0),this.failure.set(void 0)),Promise.all([this.morse.requestHostCommand("listFiles",e?{fresh:!0}:void 0),this.gitAvailable()?this.morse.requestHostCommand("gitStatus"):Promise.resolve(void 0)]).then(([o,r])=>{if(this.morse.workspace().cwd!==i)return;let s=tN(o);if(s===void 0){this.failure.set("Could not list this project.");return}this.loadedFor=i,this.cache.set(s),this.statuses.set(gx(r))}).finally(()=>{this.inFlight=!1,n||this.loading.set(!1),this.morse.workspace().cwd!==i&&this.ensureLoaded(!0)}))}static \u0275fac=function(n){return new(n||t)};static \u0275prov=xe({token:t,factory:t.\u0275fac,providedIn:"root"})};function tN(t){if(typeof t!="object"||t===null)return;let e=t.files;if(Array.isArray(e))return e.filter(n=>typeof n=="string")}var Fx=_1(Lx(),1);var Kd=Fx.default;function Vx(t){let e=t.regex,n={},i={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{begin:e.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},i]});let o={className:"subst",begin:/\$\(/,end:/\)/,contains:[t.BACKSLASH_ESCAPE]},r=t.inherit(t.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),s={begin:/<<-?\s*(?=\w+)/,starts:{contains:[t.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},a={className:"string",begin:/"/,end:/"/,contains:[t.BACKSLASH_ESCAPE,n,o]};o.contains.push(a);let c={match:/\\"/},l={className:"string",begin:/'/,end:/'/},p={match:/\\'/},f={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},t.NUMBER_MODE,n]},_=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],x=t.SHEBANG({binary:`(${_.join("|")})`,relevance:10}),C={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[t.inherit(t.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},T=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],P=["true","false"],Y={match:/(\/[a-z._-]+)+/},W=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],be=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],ye=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],Me=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:T,literal:P,built_in:[...W,...be,"set","shopt",...ye,...Me]},contains:[x,t.SHEBANG(),C,f,r,s,Y,a,c,l,p,n]}}var GN=t=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:t.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},UNICODE_RANGE:{scope:"number",begin:/\b[Uu]\+[0-9A-Fa-f][0-9A-Fa-f?]{0,5}(-[0-9A-Fa-f][0-9A-Fa-f]{0,5})?/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:t.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),qN=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],WN=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],YN=[...qN,...WN],KN=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),ZN=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),QN=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),XN=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","corner-bottom-left-shape","corner-bottom-right-shape","corner-shape","corner-top-left-shape","corner-top-right-shape","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","unicode-range","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function jx(t){let e=t.regex,n=GN(t),i={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},o="and or not only",r=/@-?\w[\w]*(-\w+)*/,s="[a-zA-Z-][a-zA-Z0-9_-]*",a=[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[n.BLOCK_COMMENT,i,n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\."+s,relevance:0},n.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+ZN.join("|")+")"},{begin:":(:)?("+QN.join("|")+")"}]},n.CSS_VARIABLE,{className:"attribute",begin:"\\b("+XN.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[n.BLOCK_COMMENT,n.HEXCOLOR,n.IMPORTANT,n.CSS_NUMBER_MODE,n.UNICODE_RANGE,...a,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...a,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},n.FUNCTION_DISPATCH]},{begin:e.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:r},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:o,attribute:KN.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...a,n.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+YN.join("|")+")\\b"}]}}function $x(t){let e=t.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:e.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^@@ +-\d+ +\+\d+,\d+ +@@/,/^@@ +-\d+,\d+ +\+\d+ +@@/,/^@@ +-\d+ +\+\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:e.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}}function Bx(t){let r={keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],literal:["true","false","iota","nil"],built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"]};return{name:"Go",aliases:["golang"],keywords:r,illegal:"</",contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,{className:"string",variants:[t.QUOTE_STRING_MODE,t.APOS_STRING_MODE,{begin:"`",end:"`"}]},{className:"number",variants:[{match:/-?\b0[xX]\.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\d(_?\d)*i?/,relevance:0},{match:/-?\b0[xX](_?[a-fA-F0-9])+((\.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b0[oO](_?[0-7])*i?/,relevance:0},{match:/-?\b0[bB](_?[01])*i?/,relevance:0},{match:/-?\.\d(_?\d)*([eE][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b\d(_?\d)*(\.(\d(_?\d)*)?)?([eE][+-]?\d(_?\d)*)?i?/,relevance:0}]},{begin:/:=/},{className:"function",beginKeywords:"func",end:"\\s*(\\{|$)",excludeEnd:!0,contains:[t.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:r,illegal:/["']/}]}]}}var Hx="[A-Za-z$_][0-9A-Za-z$_]*",JN=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],eO=["true","false","null","undefined","NaN","Infinity"],Ux=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],zx=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],Gx=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],tO=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","self","global"],nO=[].concat(Gx,Ux,zx);function qx(t){let e=t.regex,n=(G,{after:L})=>{let ne="</"+G[0].slice(1);return G.input.indexOf(ne,L)!==-1},i=Hx,o={begin:"<>",end:"</>"},r=/<[A-Za-z0-9\\._:-]+\s*\/>/,s={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(G,L)=>{let ne=G[0].length+G.index,Le=G.input[ne];if(Le==="<"||Le===","){L.ignoreMatch();return}Le===">"&&(n(G,{after:ne})||L.ignoreMatch());let tt,Ut=G.input.substring(ne);if(tt=Ut.match(/^\s*=/)){L.ignoreMatch();return}if((tt=Ut.match(/^\s+extends\s+/))&&tt.index===0){L.ignoreMatch();return}}},a={$pattern:Hx,keyword:JN,literal:eO,built_in:nO,"variable.language":tO},c="[0-9](_?[0-9])*",l=`\\.(${c})`,p="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",f={className:"number",variants:[{begin:`(\\b(${p})((${l})|\\.)?|(${l}))[eE][+-]?(${c})\\b`},{begin:`\\b(${p})\\b((${l})\\b|\\.)?|(${l})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},_={className:"subst",begin:"\\$\\{",end:"\\}",keywords:a,contains:[]},x={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,_],subLanguage:"xml"}},C={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,_],subLanguage:"css"}},T={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,_],subLanguage:"graphql"}},P={className:"string",begin:"`",end:"`",contains:[t.BACKSLASH_ESCAPE,_]},W={className:"comment",variants:[t.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:i+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE]},be=[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,x,C,T,P,{match:/\$\d+/},f];_.contains=be.concat({begin:/\{/,end:/\}/,keywords:a,contains:["self"].concat(be)});let ye=[].concat(W,_.contains),Me=ye.concat([{begin:/(\s*)\(/,end:/\)/,keywords:a,contains:["self"].concat(ye)}]),me={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:Me},Je={variants:[{match:[/class/,/\s+/,i,/\s+/,/extends/,/\s+/,e.concat(i,"(",e.concat(/\./,i),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,i],scope:{1:"keyword",3:"title.class"}}]},je={relevance:0,match:e.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...Ux,...zx]}},Be={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},ft={variants:[{match:[/function/,/\s+/,i,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[me],illegal:/%/},St={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function Rt(G){return e.concat("(?!",G.join("|"),")")}let kt={match:e.concat(/\b/,Rt([...Gx,"super","import","await"].map(G=>`${G}\\s*\\(`)),i,e.lookahead(/\s*\(/)),className:"title.function",relevance:0},et={begin:e.concat(/\./,e.lookahead(e.concat(i,/(?![0-9A-Za-z$_(])/))),end:i,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},Se={match:[/get|set/,/\s+/,i,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},me]},R="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+t.UNDERSCORE_IDENT_RE+")\\s*=>",Q={match:[/const|var|let/,/\s+/,i,/\s*/,/=\s*/,/(async\s*)?/,e.lookahead(R)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[me]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:a,exports:{PARAMS_CONTAINS:Me,CLASS_REFERENCE:je},illegal:/#(?![$_A-Za-z])/,contains:[t.SHEBANG({label:"shebang",binary:"node",relevance:5}),Be,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,x,C,T,P,W,{match:/\$\d+/},f,je,{scope:"attr",match:i+e.lookahead(":"),relevance:0},Q,{begin:"("+t.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[W,t.REGEXP_MODE,{className:"function",begin:R,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:Me}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:o.begin,end:o.end},{match:r},{begin:s.begin,"on:begin":s.isTrulyOpeningTag,end:s.end}],subLanguage:"xml",contains:[{begin:s.begin,end:s.end,skip:!0,contains:["self"]}]}]},ft,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+t.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[me,t.inherit(t.TITLE_MODE,{begin:i,className:"title.function"})]},{match:/\.\.\./,relevance:0},et,{match:"\\$"+i,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[me]},kt,St,Je,Se,{match:/\$[(.]/}]}}var iO="([-+]?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)|NaN|[-+]?Infinity",oO={scope:"number",match:iO,relevance:0};function Wx(t){let e={className:"attr",begin:/(("(\\.|[^\\"\r\n])*")|('(\\.|[^\\'\r\n])*'))(?=\s*:)/,relevance:1.01},n={match:/[{}[\],:]/,className:"punctuation",relevance:0},i=["true","false","null"],o={scope:"literal",beginKeywords:i.join(" ")};return{name:"JSON",aliases:["jsonc","json5"],keywords:{literal:i},contains:[e,n,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,o,oO,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}function Yx(t){let e=t.regex,n={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},i={match:/^ {0,3}([-*_])[ \t]*(?:\1[ \t]*){2,}$/},o={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},r={className:"bullet",begin:"^[ ]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},s={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},a=/[A-Za-z][A-Za-z0-9+.-]*/,c={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:e.concat(/\[.+?\]\(/,a,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},l={className:"strong",contains:[],variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}]},p={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{begin:/_(?![_\s])/,end:/_/,relevance:0}]},f=t.inherit(l,{contains:[]}),_=t.inherit(p,{contains:[]});l.contains.push(_),p.contains.push(f);let x=[n,c];return[l,p,f,_].forEach(Y=>{Y.contains=Y.contains.concat(x)}),x=x.concat(l,p),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:x},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:x}]}]},n,r,i,l,p,{className:"quote",begin:"^>\\s+",contains:x,end:"$"},o,c,s,{scope:"literal",match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}function Kx(t){let e=t.regex,n=/(?![A-Za-z0-9])(?![$])/,i=e.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,n),o=e.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,n),r=e.concat(/[A-Z]+/,n),s={scope:"variable",match:"\\$+"+i},a={scope:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?=/},{begin:/<\?/,relevance:.1},{begin:/\?>/}]},c={scope:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},l=t.inherit(t.APOS_STRING_MODE,{illegal:null}),p=t.inherit(t.QUOTE_STRING_MODE,{illegal:null,contains:t.QUOTE_STRING_MODE.contains.concat(c)}),f={begin:/<<<[ \t]*(?:(\w+)|"(\w+)")\n/,end:/[ \t]*(\w+)\b/,contains:t.QUOTE_STRING_MODE.contains.concat(c),"on:begin":(et,Se)=>{Se.data._beginMatch=et[1]||et[2]},"on:end":(et,Se)=>{Se.data._beginMatch!==et[1]&&Se.ignoreMatch()}},_=t.END_SAME_AS_BEGIN({begin:/<<<[ \t]*'(\w+)'\n/,end:/[ \t]*(\w+)\b/}),x=`[
|
|
13
|
+
`);return[{kind:"user",id:"mock-seed-user-1",at:t-15e4,text:"Refactor the sidebar to match the reference, make it responsive, and render markdown properly."},{kind:"tool",id:"mock-seed-tool-1",at:t-14e4,name:"bash",title:"bash: ls packages/ui-angular/src/app",status:"ok",output:"app.css app.html app.ts chat/ core/ nav/",durationMs:12},{kind:"tool",id:"mock-seed-tool-2",at:t-138e3,name:"read",title:"read: packages/ui-angular/src/app/app.css",status:"ok",output:"42 lines, 4 media queries",durationMs:8},{kind:"tool",id:"mock-seed-tool-3",at:t-13e4,name:"edit",title:"edit: packages/ui-angular/src/app/nav/session-nav.ts",status:"ok",output:"+26 -7",durationMs:190},{kind:"tool",id:"mock-seed-tool-4",at:t-128e3,name:"edit",title:"edit: packages/ui-angular/src/app/app.css",status:"ok",output:"+18 -4",durationMs:140},{kind:"tool",id:"mock-seed-tool-5",at:t-1800,name:"bash",title:"bash: npm run build:ui",status:"running",output:"Application bundle generation complete. [1.2 seconds]"},{kind:"assistant",id:"mock-seed-assistant-1",at:t-1e5,text:e,thinking:"The webview is narrow, so the navigation has to become a drawer below ~760px instead of a second column.",streaming:!1,model:"Mock Model"},{kind:"notice",id:"mock-seed-notice-1",at:t-6e4,level:"info",text:"Everything is wired through the same wire protocol \u2014 try ?scope=workspace to see the VS Code shape."}]}function Jb(t={}){if(Yb())return new $d;let e=t.href??(typeof location<"u"?location.href:"http://localhost/"),n=new URL(e,"http://localhost/");if(t.forceMock===!0||n.searchParams.get("mock")==="1")return new Bd;let i=n.searchParams.get("server");if(i)return new Xa({url:i,WebSocketImpl:t.WebSocketImpl});let o=n.protocol==="https:",r=t.websocketPath??"/ws";return new Xa({url:`${o?"wss":"ws"}://${n.host}${r}`,WebSocketImpl:t.WebSocketImpl})}var Ui=class t{attached=O([]);pinned=O([]);live=O(null);pendingMentions=O([]);message=O(null);counter=0;images=this.attached.asReadonly();pins=this.pinned.asReadonly();livePreview=this.live.asReadonly();mentions=this.pendingMentions.asReadonly();notice=this.message.asReadonly();count=E(()=>this.attached().length+this.pinned().length+this.pendingMentions().length);async read(e){let n=[],i=[];for(let o of e){if(!o.type.startsWith("image/")){i.push(o.name);continue}let r=await vh(o);if(!r){i.push(o.name);continue}this.counter+=1,n.push({id:`attachment-${this.counter}`,name:o.name||`image-${this.counter}.png`,mimeType:o.type,data:r,bytes:o.size})}return{images:n,skipped:i}}add(e){e.length!==0&&this.attached.update(n=>[...n,...e])}async accept(e){let{images:n,skipped:i}=await this.read(e);return this.add(n),{attached:n.length,skipped:i}}addMentions(e){let n=e.map(i=>i.trim()).filter(i=>i.length>0);n.length!==0&&this.pendingMentions.update(i=>[...i,...n])}seed(e,n){e.length>0&&this.add(e.map((i,o)=>{this.counter+=1;let s=(i.mimeType.split("/")[1]?.toLowerCase()??"").replace(/[^a-z0-9]/g,"")||"png";return{id:`seed-${this.counter}`,name:o===0?`image.${s}`:`image-${o+1}.${s}`,mimeType:i.mimeType,data:i.data,bytes:Math.floor(i.data.length*3/4)}}));for(let i of n)this.pin({path:i.path,startLine:i.startLine,endLine:i.endLine})}setPinRange(e,n){this.pinned.update(i=>i.map(o=>o.id===e?K(V({},o),{startLine:n.startLine,endLine:n.endLine}):o))}pin(e,n){if(e.path.length===0)return"";if(e.startLine===void 0){let _=this.pinned().find(C=>C.path===e.path&&C.startLine===void 0);if(_!==void 0)return _.id;this.counter+=1;let x=`pin-${this.counter}`;return this.pinned.update(C=>[...C,K(V({},e),{id:x})]),x}let i=this.pinned(),o=e.startLine,r=e.endLine??e.startLine,s=new Set(n===void 0?[]:[n]),a,c=!0;for(;c;){c=!1;for(let _ of i){if(s.has(_.id)||_.path!==e.path||_.startLine===void 0)continue;let x=_.startLine,C=_.endLine??x;x<=r+1&&C+1>=o&&(o=Math.min(o,x),r=Math.max(r,C),s.add(_.id),a??=_.id,c=!0)}}this.counter+=1;let l={id:n??a??`pin-${this.counter}`,path:e.path,startLine:o,endLine:r>o?r:void 0},p=[],f=!1;for(let _ of i){if(s.has(_.id)){f||(p.push(l),f=!0);continue}p.push(_)}return f||p.push(l),this.pinned.set(p),l.id}removePin(e){this.pinned.update(n=>n.filter(i=>i.id!==e))}setLivePreview(e){if(e===null||e.path.length===0||e.startLine===void 0){this.live.set(null);return}let n=this.live();n&&n.path===e.path&&n.startLine===e.startLine&&n.endLine===e.endLine||this.live.set({id:"live-preview",path:e.path,startLine:e.startLine,endLine:e.endLine})}lockLivePreview(){let e=this.live();e&&(this.live.set(null),this.pin({path:e.path,startLine:e.startLine,endLine:e.endLine}))}remove(e){this.attached.update(n=>n.filter(i=>i.id!==e))}takeImages(){let e=this.attached().map(({data:n,mimeType:i})=>({data:n,mimeType:i}));return this.attached.set([]),e}takePins(){let e=this.pinned().map(({path:n,startLine:i,endLine:o})=>{let r={path:n};return i!==void 0&&(r.startLine=i),o!==void 0&&(r.endLine=o),r});return this.pinned.set([]),e}takeMentions(){let e=this.pendingMentions();return this.pendingMentions.set([]),e}clear(){this.attached.set([]),this.pinned.set([]),this.live.set(null),this.pendingMentions.set([])}say(e,n){this.message.set({level:e,text:n,at:Date.now()})}static \u0275fac=function(n){return new(n||t)};static \u0275prov=xe({token:t,factory:t.\u0275fac,providedIn:"root"})};function vh(t){return new Promise(e=>{if(typeof FileReader>"u"){e(void 0);return}let n=new FileReader;n.onerror=()=>e(void 0),n.onload=()=>{let i=n.result;if(typeof i!="string"){e(void 0);return}let o=i.indexOf(",");e(o===-1?void 0:i.slice(o+1))},n.readAsDataURL(t)})}var ex=new He("morse.transport",{providedIn:"root",factory:()=>Jb()});var tx={name:"@morse/ui-angular",version:"0.9.5"},NI=6e3,Ze=class t{transport=N(ex);destroyRef=N(pt);view=O(jd());client;actions;slowConnectionTimer;connection=E(()=>this.view().connection);connectionDetail=E(()=>this.view().connectionDetail);protocolVersion=E(()=>this.view().protocolVersion);frontend=E(()=>this.view().frontend);version=E(()=>this.frontend()?.version??tx.version);slowConnection=O(!1);capabilities=E(()=>this.view().capabilities);state=E(()=>this.view().state);items=E(()=>this.view().items);projects=E(()=>this.view().projects);sessions=E(()=>this.view().sessions);activity=E(()=>this.view().activity);sessionActivity=E(()=>{let e=new Map;for(let n of this.view().activity)e.set(n.sessionKey,n);return e});pendingInteraction=E(()=>this.view().pendingInteraction);lastNotice=E(()=>this.view().lastNotice);lastError=E(()=>this.view().lastError);agentReady=E(()=>this.view().state.agentReady);agentStarting=E(()=>this.view().state.agentStarting);agentError=E(()=>this.view().state.agentError);agentFailure=E(()=>this.view().state.agentFailure);running=E(()=>this.view().state.streaming||this.view().state.busy);workspace=E(()=>this.view().state.workspace);model=E(()=>this.view().state.model);thinkingLevel=E(()=>this.view().state.thinkingLevel);availableModels=E(()=>this.view().state.availableModels);availableThinkingLevels=E(()=>this.view().state.availableThinkingLevels);availableCommands=E(()=>this.view().state.availableCommands);usage=E(()=>this.view().state.usage);hasOlderHistory=E(()=>this.view().state.hasOlderHistory===!0);loadingOlderHistory=E(()=>this.view().state.loadingOlderHistory===!0);constructor(){this.client=Bb({transport:this.transport,frontend:tx}),this.actions=this.client.actions;let e=this.client.getView();this.view.set(e),this.trackSlowConnection(e.connection),this.client.subscribe(n=>{this.view.set(n),this.trackSlowConnection(n.connection)}),this.destroyRef.onDestroy(()=>{this.clearSlowConnectionTimer(),this.client.dispose()})}trackSlowConnection(e){if(e!=="connecting"){this.clearSlowConnectionTimer(),this.slowConnection.set(!1);return}this.slowConnectionTimer===void 0&&(this.slowConnectionTimer=setTimeout(()=>{this.slowConnection.set(!0)},NI))}clearSlowConnectionTimer(){this.slowConnectionTimer!==void 0&&(clearTimeout(this.slowConnectionTimer),this.slowConnectionTimer=void 0)}prompt(e,n="new",i,o){this.actions.prompt(e,n,i,o)}editMessage(e,n){this.actions.editMessage(e,n)}forkMessage(e){this.actions.forkMessage(e)}onComposerSeed(e){return this.client.onComposerSeed(e)}onContextSelection(e){return this.client.onContextSelection(e)}onContextSelectionLive(e){return this.client.onContextSelectionLive(e)}ready(){this.actions.ready()}abort(){this.actions.abort()}newSession(e){this.actions.newSession(e)}openProject(e){this.actions.openProject(e)}requestProjects(){this.actions.requestProjects()}activateSession(e,n){this.actions.activateSession(e,n)}closeSession(e){this.actions.closeSession(e)}deleteSession(e){this.actions.deleteSession(e)}compactSession(e){this.actions.compactSession(e)}loadOlderHistory(){this.actions.loadOlderHistory()}loadSession(e){this.actions.loadSession(e)}requestSessions(){this.actions.requestSessions()}refreshCommands(){this.actions.refreshCommands()}setModel(e,n){this.actions.setModel(e,n)}setThinkingLevel(e){this.actions.setThinkingLevel(e)}respond(e){this.actions.respond(e)}hostCommand(e,n){this.actions.hostCommand(e,n)}requestHostCommand(e,n){return this.actions.hostCommand(e,n)}static \u0275fac=function(n){return new(n||t)};static \u0275prov=xe({token:t,factory:t.\u0275fac,providedIn:"root"})};var Hd=class t{items=O([]);counter=0;queued=this.items.asReadonly();count=E(()=>this.items().length);head(e){return this.items().find(n=>n.sessionId===e)}enqueue(e,n){this.counter+=1;let i=`queued-${this.counter}`;return this.items.update(o=>[...o,K(V({},e),{id:i,sessionId:n})]),i}remove(e){this.items.update(n=>n.filter(i=>i.id!==e))}shift(e){let n=this.head(e);if(n!==void 0)return this.remove(n.id),n}clear(){this.items.set([])}static \u0275fac=function(n){return new(n||t)};static \u0275prov=xe({token:t,factory:t.\u0275fac,providedIn:"root"})};var sx="morse.navigation.collapsed",ax="morse.git.open",cx="morse.git.expanded",bh="morse.git.width",OI=220,PI=1600,lx="morse.git.changesHeight",nx="morse.git.changesCollapsed",ix="morse.git.historyCollapsed",AI=48,RI=1200,dx="morse.explorer.height",LI=140,FI=720;function VI(){try{return globalThis.localStorage?.getItem(sx)==="1"}catch{return!1}}function jI(t){try{globalThis.localStorage?.setItem(sx,t?"1":"0")}catch{}}function $I(){try{return globalThis.localStorage?.getItem(ax)==="1"}catch{return!1}}function BI(t){try{globalThis.localStorage?.setItem(ax,t?"1":"0")}catch{}}function HI(){try{return globalThis.localStorage?.getItem(cx)==="1"}catch{return!1}}function UI(t){try{globalThis.localStorage?.setItem(cx,t?"1":"0")}catch{}}function ux(t){return Math.round(Math.min(RI,Math.max(AI,t)))}function px(t){return Math.round(Math.min(PI,Math.max(OI,t)))}function zI(){try{let t=globalThis.localStorage?.getItem(bh);if(t==null)return;let e=Number.parseInt(t,10);return Number.isFinite(e)?px(e):void 0}catch{return}}function GI(t){try{globalThis.localStorage?.setItem(bh,String(t))}catch{}}function qI(){try{let t=globalThis.localStorage?.getItem(lx);if(t==null)return;let e=Number.parseInt(t,10);return Number.isFinite(e)?ux(e):void 0}catch{return}}function WI(t){try{globalThis.localStorage?.setItem(lx,String(t))}catch{}}function ox(t){try{return globalThis.localStorage?.getItem(t)==="1"}catch{return!1}}function rx(t,e){try{globalThis.localStorage?.setItem(t,e?"1":"0")}catch{}}function fx(t){return Math.round(Math.min(FI,Math.max(LI,t)))}function YI(){try{let t=globalThis.localStorage?.getItem(dx);if(t==null)return;let e=Number.parseInt(t,10);return Number.isFinite(e)?fx(e):void 0}catch{return}}function KI(t){try{globalThis.localStorage?.setItem(dx,String(t))}catch{}}var Ht=class t{navigationVisible=O(!1);navigationOpen=this.navigationVisible.asReadonly();collapsed=O(VI());navigationCollapsed=this.collapsed.asReadonly();gitPanel=O($I());gitPanelOpen=this.gitPanel.asReadonly();gitExpanded=O(HI());gitPanelExpanded=this.gitExpanded.asReadonly();gitWidthSignal=O(zI());gitPanelWidth=this.gitWidthSignal.asReadonly();changesHeightSignal=O(qI());gitChangesHeight=this.changesHeightSignal.asReadonly();changesCollapsedSignal=O(ox(nx));gitChangesCollapsed=this.changesCollapsedSignal.asReadonly();historyCollapsedSignal=O(ox(ix));gitHistoryCollapsed=this.historyCollapsedSignal.asReadonly();explorer=O(YI());explorerHeight=this.explorer.asReadonly();projectPicker=O(!1);projectPickerOpen=this.projectPicker.asReadonly();about=O(!1);aboutOpen=this.about.asReadonly();shortcuts=O(!1);shortcutsOpen=this.shortcuts.asReadonly();projectFilter=O(!1);projectFilterOpen=this.projectFilter.asReadonly();promptTemplate=O(!1);promptTemplateOpen=this.promptTemplate.asReadonly();compactPrompt=O(void 0);compactConfirmOpen=E(()=>this.compactPrompt()!==void 0);compactInstructions=E(()=>this.compactPrompt()?.instructions);modalOpen=E(()=>this.about()||this.shortcuts()||this.projectPicker()||this.projectFilter()||this.promptTemplate()||this.compactPrompt()!==void 0);toggleNavigation(){this.navigationVisible.update(e=>!e)}openNavigation(){this.navigationVisible.set(!0)}closeNavigation(){this.navigationVisible.set(!1)}toggleNavigationCollapsed(){this.setCollapsed(!this.collapsed())}unfoldNavigation(){this.setCollapsed(!1)}setCollapsed(e){this.collapsed.set(e),jI(e)}toggleGitPanel(){this.setGitPanel(!this.gitPanel())}closeGitPanel(){this.setGitPanel(!1)}setGitPanel(e){this.gitPanel.set(e),BI(e)}toggleGitPanelExpanded(){this.setGitExpanded(!this.gitExpanded())}setGitExpanded(e){this.gitExpanded.set(e),UI(e)}toggleGitChanges(){this.changesCollapsedSignal.update(e=>!e),rx(nx,this.changesCollapsedSignal())}toggleGitHistory(){this.historyCollapsedSignal.update(e=>!e),rx(ix,this.historyCollapsedSignal())}setGitChangesHeight(e,n=!0){let i=ux(e);this.changesHeightSignal.set(i),n&&WI(i)}setGitPanelWidth(e,n=!0){let i=px(e);this.gitWidthSignal.set(i),n&&GI(i)}resetGitPanelWidth(){this.gitWidthSignal.set(void 0);try{globalThis.localStorage?.removeItem(bh)}catch{}}setExplorerHeight(e){let n=fx(e);this.explorer.set(n),KI(n)}openAbout(){this.about.set(!0)}closeAbout(){this.about.set(!1)}openShortcuts(){this.shortcuts.set(!0)}closeShortcuts(){this.shortcuts.set(!1)}toggleShortcuts(){this.shortcuts.update(e=>!e)}openProjectFilter(){this.projectFilter.set(!0)}closeProjectFilter(){this.projectFilter.set(!1)}setPromptTemplateOpen(e){this.promptTemplate.set(e)}openProjectPicker(){this.projectPicker.set(!0)}closeProjectPicker(){this.projectPicker.set(!1)}requestCompact(e){this.compactPrompt.set(e?{instructions:e}:{})}closeCompactPrompt(){this.compactPrompt.set(void 0)}static \u0275fac=function(n){return new(n||t)};static \u0275prov=xe({token:t,factory:t.\u0275fac,providedIn:"root"})};var Ja=[{id:"session.new",group:"Session",label:"New session",detail:"The sidebar button, on the keyboard \u2014 and on a browser host it still asks which folder first.",binding:{key:"n",mod:!0,alt:!0}},{id:"session.search",group:"Session",label:"Focus the session search",detail:"Opens the sidebar when the layout hid it, and puts the caret in the field. In the prompt, `/` opens the command palette instead.",binding:{key:"/"}},{id:"project.filter",group:"Navigate",label:"Change project focus",detail:"Narrows the sidebar to one project. Only a host with several projects has this.",binding:{key:"p",mod:!0,alt:!0},overlay:!0},{id:"view.git",group:"Navigate",label:"Toggle the git panel",detail:"Shows or hides the history and graph for the active project. The browser host only \u2014 VS Code has its own Source Control view.",binding:{key:"g",mod:!0,alt:!0},overlay:!0,whileTyping:!0},{id:"model.pick",group:"Model",label:"Change model",detail:"Opens the model chooser above the prompt.",binding:{key:"m",mod:!0,alt:!0},overlay:!0,whileTyping:!0},{id:"thinking.pick",group:"Model",label:"Change thinking level",detail:"Opens the reasoning-level chooser next to the model.",binding:{key:"t",mod:!0,alt:!0},overlay:!0,whileTyping:!0},{id:"context.compact",group:"Context",label:"Compact the conversation",detail:"Asks first: pi replaces what it remembers with a summary.",binding:{key:"c",mod:!0,alt:!0},overlay:!0,whileTyping:!0},{id:"prompt.send",group:"Typing",label:"Send the prompt",detail:"While the prompt has the caret. During a run, the same key steers the agent instead.",keys:"Enter"},{id:"prompt.newline",group:"Typing",label:"New line",detail:"The prompt grows with the text rather than sending it.",keys:"Shift+Enter"},{id:"prompt.mention",group:"Typing",label:"Mention a file",detail:"Opens the picker that inserts an @path mention.",keys:"@"},{id:"prompt.commands",group:"Typing",label:"Command palette",detail:"The slash commands Morse and pi understand, filtered as you type.",keys:"/"},{id:"help.shortcuts",group:"Help",label:"This list",detail:"Opens and closes these rows, outside a text field.",binding:{key:"?"},overlay:!0}];function ec(t){return"binding"in t}function mx(){let t=globalThis.navigator;return/mac|iphone|ipad/i.test(t?.userAgent??"")}function hx(t,e=mx()){let n=[];return t.mod===!0&&n.push(e?"\u2318":"Ctrl"),t.alt===!0&&n.push(e?"\u2325":"Alt"),n.push(t.key.length===1&&/[a-z]/.test(t.key)?t.key.toUpperCase():t.key),e?n.join(""):n.join("+")}var An=class t{shell=N(Ht);handlers=new Map;revision=O(0);catalog=Ja;available=E(()=>{this.revision();let e=new Map;for(let n of Ja){if(!ec(n))continue;let i=this.handlers.get(n.id);e.set(n.id,i!==void 0&&(i.enabled?.()??!0))}return e});constructor(){let e=globalThis.document;e&&(e.addEventListener("keydown",this.onKeydown,!0),N(pt).onDestroy(()=>e.removeEventListener("keydown",this.onKeydown,!0)))}bind(e,n,i){let o={run:n,enabled:i};return this.handlers.set(e,o),this.bump(),()=>{this.handlers.get(e)===o&&(this.handlers.delete(e),this.bump())}}bump(){this.revision.update(e=>e+1)}onKeydown=e=>{if(e.defaultPrevented||e.isComposing||e.getModifierState?.("AltGraph")===!0)return;let n=Ja.find(o=>ec(o)&&ZI(o.binding,e));if(n===void 0||n.whileTyping!==!0&&QI(e.target)||n.overlay===!0&&this.shell.modalOpen()&&!(n.id==="help.shortcuts"&&this.shell.shortcutsOpen()))return;let i=this.handlers.get(n.id);i===void 0||i.enabled!==void 0&&!i.enabled()||(e.preventDefault(),i.run())};static \u0275fac=function(n){return new(n||t)};static \u0275prov=xe({token:t,factory:t.\u0275fac,providedIn:"root"})};function ZI(t,e){return e.key.toLowerCase()!==t.key.toLowerCase()||t.mod===!0!==(mx()?e.metaKey:e.ctrlKey)?!1:t.alt===!0===e.altKey}function QI(t){let e=t;if(e===null||typeof e.tagName!="string")return!1;let n=e.tagName.toLowerCase();return n==="input"||n==="textarea"||n==="select"||e.isContentEditable===!0}var XI=10*1024*1024,Ds=class t{morse=N(Ze);available=E(()=>this.morse.capabilities()?.fileUpload===!0);async upload(e){let n=[],i=[];for(let o of e){if(o.size>XI){i.push(o.name);continue}let r=await vh(o);if(!r){i.push(o.name);continue}let s=await this.morse.requestHostCommand("uploadFile",{name:o.name,mimeType:o.type,data:r}),a=typeof s?.path=="string"?s.path:void 0;if(!a){i.push(o.name);continue}n.push({path:a,name:o.name,bytes:typeof s?.bytes=="number"?s.bytes:o.size})}return{added:n,failed:i}}static \u0275fac=function(n){return new(n||t)};static \u0275prov=xe({token:t,factory:t.\u0275fac,providedIn:"root"})};function xh(t){if(t==="??")return"U";if(t.includes("U")||t==="AA"||t==="DD")return"C";if(t.includes("R")||t.includes("C"))return"R";if(t.includes("D"))return"D";if(t.includes("A"))return"A";if(t.includes("M")||t.includes("T"))return"M"}function gx(t){if(typeof t!="object"||t===null)return;let e=t;return e.isRepo!==!0?typeof e.isRepo=="boolean"?{isRepo:!1,files:[]}:void 0:{isRepo:!0,files:Array.isArray(e.files)?e.files.map(JI).filter(i=>i!==void 0):[]}}function Ud(t){let e=new Map;for(let n of t?.files??[]){let i=xh(n.status);i!==void 0&&e.set(n.path,i)}return e}function JI(t){if(typeof t!="object"||t===null)return;let e=t,n=e.path,i=e.status;if(!(typeof n!="string"||typeof i!="string"))return{path:n,status:i}}var eN=4e3,zi=class t{morse=N(Ze);cache=O([]);loading=O(!1);statuses=O(void 0);failure=O(void 0);loadedFor;inFlight=!1;files=this.cache.asReadonly();busy=this.loading.asReadonly();status=this.statuses.asReadonly();error=this.failure.asReadonly();available=E(()=>this.morse.capabilities()?.filePicker===!0);gitAvailable=E(()=>this.morse.capabilities()?.gitPanel===!0);constructor(){se(()=>{if(!this.available())return;let e=this.morse.workspace().cwd;this.ensureLoaded(this.loadedFor!==void 0&&this.loadedFor!==e)}),se(e=>{if(!this.available())return;let n=setInterval(()=>{typeof document<"u"&&document.hidden||this.ensureLoaded(!0,!0)},eN);e(()=>clearInterval(n))})}refresh(){this.ensureLoaded(!0)}ensureLoaded(e=!1,n=!1){let i=this.morse.workspace().cwd;i.length===0||this.inFlight||!e&&this.loadedFor===i||(this.inFlight=!0,n||(this.loading.set(!0),this.failure.set(void 0)),Promise.all([this.morse.requestHostCommand("listFiles",e?{fresh:!0}:void 0),this.gitAvailable()?this.morse.requestHostCommand("gitStatus"):Promise.resolve(void 0)]).then(([o,r])=>{if(this.morse.workspace().cwd!==i)return;let s=tN(o);if(s===void 0){this.failure.set("Could not list this project.");return}this.loadedFor=i,this.cache.set(s),this.statuses.set(gx(r))}).finally(()=>{this.inFlight=!1,n||this.loading.set(!1),this.morse.workspace().cwd!==i&&this.ensureLoaded(!0)}))}static \u0275fac=function(n){return new(n||t)};static \u0275prov=xe({token:t,factory:t.\u0275fac,providedIn:"root"})};function tN(t){if(typeof t!="object"||t===null)return;let e=t.files;if(Array.isArray(e))return e.filter(n=>typeof n=="string")}var Fx=_1(Lx(),1);var Kd=Fx.default;function Vx(t){let e=t.regex,n={},i={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{begin:e.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},i]});let o={className:"subst",begin:/\$\(/,end:/\)/,contains:[t.BACKSLASH_ESCAPE]},r=t.inherit(t.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),s={begin:/<<-?\s*(?=\w+)/,starts:{contains:[t.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},a={className:"string",begin:/"/,end:/"/,contains:[t.BACKSLASH_ESCAPE,n,o]};o.contains.push(a);let c={match:/\\"/},l={className:"string",begin:/'/,end:/'/},p={match:/\\'/},f={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},t.NUMBER_MODE,n]},_=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],x=t.SHEBANG({binary:`(${_.join("|")})`,relevance:10}),C={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[t.inherit(t.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},T=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],P=["true","false"],Y={match:/(\/[a-z._-]+)+/},W=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],be=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],ye=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],Me=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:T,literal:P,built_in:[...W,...be,"set","shopt",...ye,...Me]},contains:[x,t.SHEBANG(),C,f,r,s,Y,a,c,l,p,n]}}var GN=t=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:t.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},UNICODE_RANGE:{scope:"number",begin:/\b[Uu]\+[0-9A-Fa-f][0-9A-Fa-f?]{0,5}(-[0-9A-Fa-f][0-9A-Fa-f]{0,5})?/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:t.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),qN=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],WN=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],YN=[...qN,...WN],KN=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),ZN=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),QN=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),XN=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","corner-bottom-left-shape","corner-bottom-right-shape","corner-shape","corner-top-left-shape","corner-top-right-shape","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","unicode-range","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function jx(t){let e=t.regex,n=GN(t),i={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},o="and or not only",r=/@-?\w[\w]*(-\w+)*/,s="[a-zA-Z-][a-zA-Z0-9_-]*",a=[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[n.BLOCK_COMMENT,i,n.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\."+s,relevance:0},n.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+ZN.join("|")+")"},{begin:":(:)?("+QN.join("|")+")"}]},n.CSS_VARIABLE,{className:"attribute",begin:"\\b("+XN.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[n.BLOCK_COMMENT,n.HEXCOLOR,n.IMPORTANT,n.CSS_NUMBER_MODE,n.UNICODE_RANGE,...a,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...a,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},n.FUNCTION_DISPATCH]},{begin:e.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:r},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:o,attribute:KN.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...a,n.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+YN.join("|")+")\\b"}]}}function $x(t){let e=t.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:e.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^@@ +-\d+ +\+\d+,\d+ +@@/,/^@@ +-\d+,\d+ +\+\d+ +@@/,/^@@ +-\d+ +\+\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:e.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}}function Bx(t){let r={keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],literal:["true","false","iota","nil"],built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"]};return{name:"Go",aliases:["golang"],keywords:r,illegal:"</",contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,{className:"string",variants:[t.QUOTE_STRING_MODE,t.APOS_STRING_MODE,{begin:"`",end:"`"}]},{className:"number",variants:[{match:/-?\b0[xX]\.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\d(_?\d)*i?/,relevance:0},{match:/-?\b0[xX](_?[a-fA-F0-9])+((\.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b0[oO](_?[0-7])*i?/,relevance:0},{match:/-?\b0[bB](_?[01])*i?/,relevance:0},{match:/-?\.\d(_?\d)*([eE][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b\d(_?\d)*(\.(\d(_?\d)*)?)?([eE][+-]?\d(_?\d)*)?i?/,relevance:0}]},{begin:/:=/},{className:"function",beginKeywords:"func",end:"\\s*(\\{|$)",excludeEnd:!0,contains:[t.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:r,illegal:/["']/}]}]}}var Hx="[A-Za-z$_][0-9A-Za-z$_]*",JN=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],eO=["true","false","null","undefined","NaN","Infinity"],Ux=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],zx=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],Gx=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],tO=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","self","global"],nO=[].concat(Gx,Ux,zx);function qx(t){let e=t.regex,n=(G,{after:L})=>{let ne="</"+G[0].slice(1);return G.input.indexOf(ne,L)!==-1},i=Hx,o={begin:"<>",end:"</>"},r=/<[A-Za-z0-9\\._:-]+\s*\/>/,s={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(G,L)=>{let ne=G[0].length+G.index,Le=G.input[ne];if(Le==="<"||Le===","){L.ignoreMatch();return}Le===">"&&(n(G,{after:ne})||L.ignoreMatch());let tt,Ut=G.input.substring(ne);if(tt=Ut.match(/^\s*=/)){L.ignoreMatch();return}if((tt=Ut.match(/^\s+extends\s+/))&&tt.index===0){L.ignoreMatch();return}}},a={$pattern:Hx,keyword:JN,literal:eO,built_in:nO,"variable.language":tO},c="[0-9](_?[0-9])*",l=`\\.(${c})`,p="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",f={className:"number",variants:[{begin:`(\\b(${p})((${l})|\\.)?|(${l}))[eE][+-]?(${c})\\b`},{begin:`\\b(${p})\\b((${l})\\b|\\.)?|(${l})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},_={className:"subst",begin:"\\$\\{",end:"\\}",keywords:a,contains:[]},x={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,_],subLanguage:"xml"}},C={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,_],subLanguage:"css"}},T={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,_],subLanguage:"graphql"}},P={className:"string",begin:"`",end:"`",contains:[t.BACKSLASH_ESCAPE,_]},W={className:"comment",variants:[t.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:i+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE]},be=[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,x,C,T,P,{match:/\$\d+/},f];_.contains=be.concat({begin:/\{/,end:/\}/,keywords:a,contains:["self"].concat(be)});let ye=[].concat(W,_.contains),Me=ye.concat([{begin:/(\s*)\(/,end:/\)/,keywords:a,contains:["self"].concat(ye)}]),me={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:Me},Je={variants:[{match:[/class/,/\s+/,i,/\s+/,/extends/,/\s+/,e.concat(i,"(",e.concat(/\./,i),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,i],scope:{1:"keyword",3:"title.class"}}]},je={relevance:0,match:e.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...Ux,...zx]}},Be={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},ft={variants:[{match:[/function/,/\s+/,i,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[me],illegal:/%/},St={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function Rt(G){return e.concat("(?!",G.join("|"),")")}let kt={match:e.concat(/\b/,Rt([...Gx,"super","import","await"].map(G=>`${G}\\s*\\(`)),i,e.lookahead(/\s*\(/)),className:"title.function",relevance:0},et={begin:e.concat(/\./,e.lookahead(e.concat(i,/(?![0-9A-Za-z$_(])/))),end:i,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},Se={match:[/get|set/,/\s+/,i,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},me]},R="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+t.UNDERSCORE_IDENT_RE+")\\s*=>",Q={match:[/const|var|let/,/\s+/,i,/\s*/,/=\s*/,/(async\s*)?/,e.lookahead(R)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[me]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:a,exports:{PARAMS_CONTAINS:Me,CLASS_REFERENCE:je},illegal:/#(?![$_A-Za-z])/,contains:[t.SHEBANG({label:"shebang",binary:"node",relevance:5}),Be,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,x,C,T,P,W,{match:/\$\d+/},f,je,{scope:"attr",match:i+e.lookahead(":"),relevance:0},Q,{begin:"("+t.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[W,t.REGEXP_MODE,{className:"function",begin:R,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:Me}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:o.begin,end:o.end},{match:r},{begin:s.begin,"on:begin":s.isTrulyOpeningTag,end:s.end}],subLanguage:"xml",contains:[{begin:s.begin,end:s.end,skip:!0,contains:["self"]}]}]},ft,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+t.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[me,t.inherit(t.TITLE_MODE,{begin:i,className:"title.function"})]},{match:/\.\.\./,relevance:0},et,{match:"\\$"+i,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[me]},kt,St,Je,Se,{match:/\$[(.]/}]}}var iO="([-+]?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)|NaN|[-+]?Infinity",oO={scope:"number",match:iO,relevance:0};function Wx(t){let e={className:"attr",begin:/(("(\\.|[^\\"\r\n])*")|('(\\.|[^\\'\r\n])*'))(?=\s*:)/,relevance:1.01},n={match:/[{}[\],:]/,className:"punctuation",relevance:0},i=["true","false","null"],o={scope:"literal",beginKeywords:i.join(" ")};return{name:"JSON",aliases:["jsonc","json5"],keywords:{literal:i},contains:[e,n,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,o,oO,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}function Yx(t){let e=t.regex,n={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},i={match:/^ {0,3}([-*_])[ \t]*(?:\1[ \t]*){2,}$/},o={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},r={className:"bullet",begin:"^[ ]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},s={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},a=/[A-Za-z][A-Za-z0-9+.-]*/,c={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:e.concat(/\[.+?\]\(/,a,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},l={className:"strong",contains:[],variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}]},p={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{begin:/_(?![_\s])/,end:/_/,relevance:0}]},f=t.inherit(l,{contains:[]}),_=t.inherit(p,{contains:[]});l.contains.push(_),p.contains.push(f);let x=[n,c];return[l,p,f,_].forEach(Y=>{Y.contains=Y.contains.concat(x)}),x=x.concat(l,p),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:x},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:x}]}]},n,r,i,l,p,{className:"quote",begin:"^>\\s+",contains:x,end:"$"},o,c,s,{scope:"literal",match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}function Kx(t){let e=t.regex,n=/(?![A-Za-z0-9])(?![$])/,i=e.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,n),o=e.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,n),r=e.concat(/[A-Z]+/,n),s={scope:"variable",match:"\\$+"+i},a={scope:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?=/},{begin:/<\?/,relevance:.1},{begin:/\?>/}]},c={scope:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},l=t.inherit(t.APOS_STRING_MODE,{illegal:null}),p=t.inherit(t.QUOTE_STRING_MODE,{illegal:null,contains:t.QUOTE_STRING_MODE.contains.concat(c)}),f={begin:/<<<[ \t]*(?:(\w+)|"(\w+)")\n/,end:/[ \t]*(\w+)\b/,contains:t.QUOTE_STRING_MODE.contains.concat(c),"on:begin":(et,Se)=>{Se.data._beginMatch=et[1]||et[2]},"on:end":(et,Se)=>{Se.data._beginMatch!==et[1]&&Se.ignoreMatch()}},_=t.END_SAME_AS_BEGIN({begin:/<<<[ \t]*'(\w+)'\n/,end:/[ \t]*(\w+)\b/}),x=`[
|
|
14
14
|
]`,C={scope:"string",variants:[p,l,f,_]},T={scope:"number",variants:[{begin:"\\b0[bB][01]+(?:_[01]+)*\\b"},{begin:"\\b0[oO][0-7]+(?:_[0-7]+)*\\b"},{begin:"\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b"},{begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?"}],relevance:0},P=["false","null","true"],Y=["__CLASS__","__DIR__","__FILE__","__FUNCTION__","__COMPILER_HALT_OFFSET__","__LINE__","__METHOD__","__NAMESPACE__","__TRAIT__","die","echo","exit","include","include_once","print","require","require_once","array","abstract","and","as","binary","bool","boolean","break","callable","case","catch","class","clone","const","continue","declare","default","do","double","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","enum","eval","extends","final","finally","float","for","foreach","from","global","goto","if","implements","instanceof","insteadof","int","integer","interface","isset","iterable","list","match|0","mixed","new","never","object","or","private","protected","public","readonly","real","return","string","switch","throw","trait","try","unset","use","var","void","while","xor","yield"],W=["Error|0","AppendIterator","ArgumentCountError","ArithmeticError","ArrayIterator","ArrayObject","AssertionError","BadFunctionCallException","BadMethodCallException","CachingIterator","CallbackFilterIterator","CompileError","Countable","DirectoryIterator","DivisionByZeroError","DomainException","EmptyIterator","ErrorException","Exception","FilesystemIterator","FilterIterator","GlobIterator","InfiniteIterator","InvalidArgumentException","IteratorIterator","LengthException","LimitIterator","LogicException","MultipleIterator","NoRewindIterator","OutOfBoundsException","OutOfRangeException","OuterIterator","OverflowException","ParentIterator","ParseError","RangeException","RecursiveArrayIterator","RecursiveCachingIterator","RecursiveCallbackFilterIterator","RecursiveDirectoryIterator","RecursiveFilterIterator","RecursiveIterator","RecursiveIteratorIterator","RecursiveRegexIterator","RecursiveTreeIterator","RegexIterator","RuntimeException","SeekableIterator","SplDoublyLinkedList","SplFileInfo","SplFileObject","SplFixedArray","SplHeap","SplMaxHeap","SplMinHeap","SplObjectStorage","SplObserver","SplPriorityQueue","SplQueue","SplStack","SplSubject","SplTempFileObject","TypeError","UnderflowException","UnexpectedValueException","UnhandledMatchError","ArrayAccess","BackedEnum","Closure","Fiber","Generator","Iterator","IteratorAggregate","Serializable","Stringable","Throwable","Traversable","UnitEnum","WeakReference","WeakMap","Directory","__PHP_Incomplete_Class","parent","php_user_filter","self","static","stdClass"],ye={keyword:Y,literal:(et=>{let Se=[];return et.forEach(R=>{Se.push(R),R.toLowerCase()===R?Se.push(R.toUpperCase()):Se.push(R.toLowerCase())}),Se})(P),built_in:W},Me=et=>et.map(Se=>Se.replace(/\|\d+$/,"")),me={variants:[{match:[/new/,e.concat(x,"+"),e.concat("(?!",Me(W).join("\\b|"),"\\b)"),o],scope:{1:"keyword",4:"title.class"}}]},Je=e.concat(i,"\\b(?!\\()"),je={variants:[{match:[e.concat(/::/,e.lookahead(/(?!class\b)/)),Je],scope:{2:"variable.constant"}},{match:[/::/,/class/],scope:{2:"variable.language"}},{match:[o,e.concat(/::/,e.lookahead(/(?!class\b)/)),Je],scope:{1:"title.class",3:"variable.constant"}},{match:[o,e.concat("::",e.lookahead(/(?!class\b)/))],scope:{1:"title.class"}},{match:[o,/::/,/class/],scope:{1:"title.class",3:"variable.language"}}]},Be={scope:"attr",match:e.concat(i,e.lookahead(":"),e.lookahead(/(?!::)/))},ft={relevance:0,begin:/\(/,end:/\)/,keywords:ye,contains:[Be,s,je,t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE,t.HASH_COMMENT_MODE,C,T,me]},St={relevance:0,match:[/\b/,e.concat("(?!fn\\b|function\\b|",Me(Y).join("\\b|"),"|",Me(W).join("\\b|"),"\\b)"),i,e.concat(x,"*"),e.lookahead(/(?=\()/)],scope:{3:"title.function.invoke"},contains:[ft]};ft.contains.push(St);let Rt=[Be,je,t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE,t.HASH_COMMENT_MODE,C,T,me],kt={begin:e.concat(/#\[\s*\\?/,e.either(o,r)),beginScope:"meta",end:/]/,endScope:"meta",keywords:{literal:P,keyword:["new","array"]},contains:[{begin:/\[/,end:/]/,keywords:{literal:P,keyword:["new","array"]},contains:["self",...Rt]},...Rt,{scope:"meta",variants:[{match:o},{match:r}]}]};return{case_insensitive:!1,keywords:ye,contains:[kt,t.HASH_COMMENT_MODE,t.COMMENT("//","$"),t.COMMENT("/\\*","\\*/",{contains:[{scope:"doctag",match:"@[A-Za-z]+"}]}),{match:/__halt_compiler\(\);/,keywords:"__halt_compiler",starts:{scope:"comment",end:t.MATCH_NOTHING_RE,contains:[{match:/\?>/,scope:"meta",endsParent:!0}]}},a,{scope:"variable.language",match:/\$this\b/},s,St,je,{match:[/const/,/\s/,i],scope:{1:"keyword",3:"variable.constant"}},me,{scope:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use"},t.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{scope:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:ye,contains:["self",kt,s,je,t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE,t.HASH_COMMENT_MODE,C,T]}]},{scope:"class",variants:[{beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},t.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[t.inherit(t.UNDERSCORE_TITLE_MODE,{scope:"title.class"})]},{beginKeywords:"use",relevance:0,end:";",contains:[{match:/\b(as|const|function)\b/,scope:"keyword"},t.UNDERSCORE_TITLE_MODE]},C,T]}}function Zx(t){let e=t.regex,n=new RegExp("[\\p{XID_Start}_]\\p{XID_Continue}*","u"),i=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","lazy","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],a={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:i,built_in:["__import__","abs","aiter","all","anext","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozendict","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","sentinel","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]},c={className:"meta",begin:/^(>>>|\.\.\.) /},l={className:"subst",begin:/\{/,end:/\}/,keywords:a,illegal:/#/},p={begin:/\{\{/,relevance:0},f={className:"string",contains:[t.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[t.BACKSLASH_ESCAPE,c],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[t.BACKSLASH_ESCAPE,c],relevance:10},{begin:/([fFtT][rR]|[rR][fFtT]|[fFtT])'''/,end:/'''/,contains:[t.BACKSLASH_ESCAPE,c,p,l]},{begin:/([fFtT][rR]|[rR][fFtT]|[fFtT])"""/,end:/"""/,contains:[t.BACKSLASH_ESCAPE,c,p,l]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fFtT][rR]|[rR][fFtT]|[fFtT])'/,end:/'/,contains:[t.BACKSLASH_ESCAPE,p,l]},{begin:/([fFtT][rR]|[rR][fFtT]|[fFtT])"/,end:/"/,contains:[t.BACKSLASH_ESCAPE,p,l]},t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]},_="[0-9](_?[0-9])*",x=`(\\b(${_}))?\\.(${_})|\\b(${_})\\.`,C=`\\b|${i.join("|")}`,T={className:"number",relevance:0,variants:[{begin:`(\\b(${_})|(${x}))[eE][+-]?(${_})[jJ]?(?=${C})`},{begin:`(${x})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${C})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${C})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${C})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${C})`},{begin:`\\b(${_})[jJ](?=${C})`}]},P={className:"comment",begin:e.lookahead(/# type:/),end:/$/,keywords:a,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},Y={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:["self",c,T,f,t.HASH_COMMENT_MODE]}]};return l.contains=[f,T,c],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:a,illegal:/(<\/|\?)|=>/,contains:[c,T,{scope:"variable.language",match:/\bself\b/},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword"},f,P,t.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,n],scope:{1:"keyword",3:"title.function"},contains:[Y]},{variants:[{match:[/\bclass/,/\s+/,n,/\s*/,/\(\s*/,n,/\s*\)/]},{match:[/\bclass/,/\s+/,n]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[T,Y,f]}]}}var Zd="[A-Za-z$_][0-9A-Za-z$_]*",Qx=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],Xx=["true","false","null","undefined","NaN","Infinity"],Jx=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],eC=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],tC=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],nC=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","self","global"],iC=[].concat(tC,Jx,eC);function rO(t){let e=t.regex,n=(G,{after:L})=>{let ne="</"+G[0].slice(1);return G.input.indexOf(ne,L)!==-1},i=Zd,o={begin:"<>",end:"</>"},r=/<[A-Za-z0-9\\._:-]+\s*\/>/,s={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(G,L)=>{let ne=G[0].length+G.index,Le=G.input[ne];if(Le==="<"||Le===","){L.ignoreMatch();return}Le===">"&&(n(G,{after:ne})||L.ignoreMatch());let tt,Ut=G.input.substring(ne);if(tt=Ut.match(/^\s*=/)){L.ignoreMatch();return}if((tt=Ut.match(/^\s+extends\s+/))&&tt.index===0){L.ignoreMatch();return}}},a={$pattern:Zd,keyword:Qx,literal:Xx,built_in:iC,"variable.language":nC},c="[0-9](_?[0-9])*",l=`\\.(${c})`,p="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",f={className:"number",variants:[{begin:`(\\b(${p})((${l})|\\.)?|(${l}))[eE][+-]?(${c})\\b`},{begin:`\\b(${p})\\b((${l})\\b|\\.)?|(${l})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},_={className:"subst",begin:"\\$\\{",end:"\\}",keywords:a,contains:[]},x={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,_],subLanguage:"xml"}},C={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,_],subLanguage:"css"}},T={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[t.BACKSLASH_ESCAPE,_],subLanguage:"graphql"}},P={className:"string",begin:"`",end:"`",contains:[t.BACKSLASH_ESCAPE,_]},W={className:"comment",variants:[t.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:i+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),t.C_BLOCK_COMMENT_MODE,t.C_LINE_COMMENT_MODE]},be=[t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,x,C,T,P,{match:/\$\d+/},f];_.contains=be.concat({begin:/\{/,end:/\}/,keywords:a,contains:["self"].concat(be)});let ye=[].concat(W,_.contains),Me=ye.concat([{begin:/(\s*)\(/,end:/\)/,keywords:a,contains:["self"].concat(ye)}]),me={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:Me},Je={variants:[{match:[/class/,/\s+/,i,/\s+/,/extends/,/\s+/,e.concat(i,"(",e.concat(/\./,i),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,i],scope:{1:"keyword",3:"title.class"}}]},je={relevance:0,match:e.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...Jx,...eC]}},Be={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},ft={variants:[{match:[/function/,/\s+/,i,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[me],illegal:/%/},St={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function Rt(G){return e.concat("(?!",G.join("|"),")")}let kt={match:e.concat(/\b/,Rt([...tC,"super","import","await"].map(G=>`${G}\\s*\\(`)),i,e.lookahead(/\s*\(/)),className:"title.function",relevance:0},et={begin:e.concat(/\./,e.lookahead(e.concat(i,/(?![0-9A-Za-z$_(])/))),end:i,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},Se={match:[/get|set/,/\s+/,i,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},me]},R="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+t.UNDERSCORE_IDENT_RE+")\\s*=>",Q={match:[/const|var|let/,/\s+/,i,/\s*/,/=\s*/,/(async\s*)?/,e.lookahead(R)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[me]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:a,exports:{PARAMS_CONTAINS:Me,CLASS_REFERENCE:je},illegal:/#(?![$_A-Za-z])/,contains:[t.SHEBANG({label:"shebang",binary:"node",relevance:5}),Be,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,x,C,T,P,W,{match:/\$\d+/},f,je,{scope:"attr",match:i+e.lookahead(":"),relevance:0},Q,{begin:"("+t.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[W,t.REGEXP_MODE,{className:"function",begin:R,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:Me}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:o.begin,end:o.end},{match:r},{begin:s.begin,"on:begin":s.isTrulyOpeningTag,end:s.end}],subLanguage:"xml",contains:[{begin:s.begin,end:s.end,skip:!0,contains:["self"]}]}]},ft,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+t.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[me,t.inherit(t.TITLE_MODE,{begin:i,className:"title.function"})]},{match:/\.\.\./,relevance:0},et,{match:"\\$"+i,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[me]},kt,St,Je,Se,{match:/\$[(.]/}]}}function oC(t){let e=t.regex,n=rO(t),i=Zd,o=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],r={begin:[/namespace/,/\s+/,t.IDENT_RE],beginScope:{1:"keyword",3:"title.class"}},s={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:o},contains:[n.exports.CLASS_REFERENCE]},a={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},c=["type","interface","public","private","protected","implements","declare","abstract","readonly","enum","override","satisfies"],l={$pattern:Zd,keyword:Qx.concat(c),literal:Xx,built_in:iC.concat(o),"variable.language":nC},p={className:"meta",begin:"@"+i},f=(T,P,Y)=>{let W=T.contains.findIndex(be=>be.label===P);if(W===-1)throw new Error("can not find mode to replace");T.contains.splice(W,1,Y)};Object.assign(n.keywords,l),n.exports.PARAMS_CONTAINS.push(p);let _=n.contains.find(T=>T.scope==="attr"),x=Object.assign({},_,{match:e.concat(i,e.lookahead(/\s*\?:/))});n.exports.PARAMS_CONTAINS.push([n.exports.CLASS_REFERENCE,_,x]),n.contains=n.contains.concat([p,r,s,x]),f(n,"shebang",t.SHEBANG()),f(n,"use_strict",a);let C=n.contains.find(T=>T.label==="func.def");return C.relevance=0,Object.assign(n,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),n}function rC(t){let e=t.regex,n=e.concat(/[\p{L}_]/u,e.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),i=/[\p{L}0-9._:-]+/u,o={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},r={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},s=t.inherit(r,{begin:/\(/,end:/\)/}),a=t.inherit(t.APOS_STRING_MODE,{className:"string"}),c=t.inherit(t.QUOTE_STRING_MODE,{className:"string"}),l={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:i,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[o]},{begin:/'/,end:/'/,contains:[o]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,relevance:10,contains:[r,c,a,s,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,contains:[r,s,c,a]}]}]},t.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},o,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[c]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[l],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:"css"}},{className:"tag",begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[l],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:"javascript"}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:e.concat(/</,e.lookahead(e.concat(n,e.either(/\/>/,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:n,relevance:0,starts:l}]},{className:"tag",begin:e.concat(/<\//,e.lookahead(e.concat(n,/>/))),contains:[{className:"name",begin:n,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}function sC(t){let e="true false yes no null",n="[\\w#;/?:@&=+$,.~*'()[\\]]+",i={className:"attr",variants:[{begin:/[\w*@][\w*@ :()\./-]*:(?=[ \t]|$)/},{begin:/"[\w*@][\w*@ :()\./-]*":(?=[ \t]|$)/},{begin:/'[\w*@][\w*@ :()\./-]*':(?=[ \t]|$)/}]},o={className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]},r={className:"string",relevance:0,begin:/'/,end:/'/,contains:[{match:/''/,scope:"char.escape",relevance:0}]},s={className:"string",relevance:0,variants:[{begin:/"/,end:/"/},{begin:/\S+/}],contains:[t.BACKSLASH_ESCAPE,o]},a=t.inherit(s,{variants:[{begin:/'/,end:/'/,contains:[{begin:/''/,relevance:0}]},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),_={className:"number",begin:"\\b"+"[0-9]{4}(-[0-9][0-9]){0,2}"+"([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?"+"(\\.[0-9]*)?"+"([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?"+"\\b"},x={end:",",endsWithParent:!0,excludeEnd:!0,keywords:e,relevance:0},C={begin:/\{/,end:/\}/,contains:[x],illegal:"\\n",relevance:0},T={begin:"\\[",end:"\\]",contains:[x],illegal:"\\n",relevance:0},P=[i,{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+n},{className:"type",begin:"!<"+n+">"},{className:"type",begin:"!"+n},{className:"type",begin:"!!"+n},{className:"meta",begin:"&"+t.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+t.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},t.HASH_COMMENT_MODE,{beginKeywords:e,keywords:{literal:e}},_,{className:"number",begin:t.C_NUMBER_RE+"\\b",relevance:0},C,T,r,s],Y=[...P];return Y.pop(),Y.push(a),x.contains=Y,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:P}}for(let[t,e]of Object.entries({bash:Vx,css:jx,diff:$x,go:Bx,javascript:qx,json:Wx,markdown:Yx,php:Kx,python:Zx,typescript:oC,xml:rC,yaml:sC}))Kd.registerLanguage(t,e);var sO={sh:"bash",shell:"bash",zsh:"bash",js:"javascript",mjs:"javascript",cjs:"javascript",jsx:"javascript",ts:"typescript",mts:"typescript",cts:"typescript",tsx:"typescript",html:"xml",svg:"xml",md:"markdown",yml:"yaml"},aO={bash:"bash",cjs:"javascript",css:"css",diff:"diff",go:"go",html:"xml",js:"javascript",json:"json",jsx:"javascript",md:"markdown",mjs:"javascript",patch:"diff",php:"php",py:"python",sh:"bash",svg:"xml",ts:"typescript",tsx:"typescript",xml:"xml",yaml:"yaml",yml:"yaml",zsh:"bash"};function kh(t){let e=t.split("/").pop()??"",n=e.lastIndexOf(".");if(!(n<=0))return aO[e.slice(n+1).toLowerCase()]}function Is(t,e){let n=(e??"").trim().toLowerCase(),i=sO[n]??n;return i.length>0&&Kd.getLanguage(i)!==void 0?{html:Kd.highlight(t,{language:i,ignoreIllegals:!0}).value,language:i}:{html:cO(t),language:"text"}}function cO(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}var lO="file:",dO="mention:",Ao="draft",dn=class t{morse=N(Ze);items=O([]);active=O(void 0);tabs=this.items.asReadonly();activeId=this.active.asReadonly();mainTabs=E(()=>this.items().filter(e=>e.kind==="session"||e.mention!==!0));activeTab=E(()=>this.items().find(e=>e.id===this.active()));contextSessionId=E(()=>{let e=this.activeTab();return e?.kind==="session"?e.id:e?.kind==="file"&&e.mention===!0?e.sessionId:void 0});mentionTabs=E(()=>{let e=this.contextSessionId();return this.items().filter(n=>n.kind==="file"&&n.mention===!0&&(e===void 0?n.sessionId===void 0:n.sessionId===e))});openSessionIds=E(()=>new Set(this.items().filter(e=>e.kind==="session").map(e=>e.id)));ensureSession(e){if(this.findSession(e.id)===void 0){this.items.update(i=>[...i,V({kind:"session"},e)]),this.active()===void 0&&this.active.set(e.id);return}this.refreshSession(e)}refreshSession(e){let n=this.findSession(e.id);n===void 0||n.title===e.title&&n.cwd===e.cwd||this.items.update(i=>i.map(o=>o.kind==="session"&&o.id===e.id?V(V({},o),e):o))}startDraft(e){this.openDraft(e),this.morse.newSession(e)}openDraft(e){this.items().find(i=>i.kind==="session"&&i.id===Ao)===void 0&&this.items.update(i=>[...i,{kind:"session",id:Ao,title:"New session",cwd:e,draft:!0}]),this.active.set(Ao)}focusSession(e){this.discardDraft(),this.showSession(e),this.morse.activateSession(e.id,e.cwd)}showSession(e){this.promoteDraft(e),this.ensureSession(e),this.active.set(e.id)}openFile(e){this.openFileTab(e,!1,void 0)}openMentionFile(e){this.openFileTab(e,!0,this.contextSessionId())}openFileTab(e,n,i){let o=n?aC(i,e):`${lO}${e}`,r=this.items().find(s=>s.id===o);r===void 0&&this.items.update(s=>[...s,{kind:"file",id:o,path:e,title:fO(e),language:kh(e),loading:!0,mention:n,sessionId:n?i:void 0}]),this.active.set(o),(r===void 0||this.needsLoad(r))&&this.load(o)}select(e){let n=this.items().find(i=>i.id===e);if(n!==void 0){if(this.active.set(e),n.kind==="session"){n.draft!==!0&&this.morse.activateSession(n.id,n.cwd);return}this.needsLoad(n)&&this.load(e)}}close(e){let n=this.items().findIndex(s=>s.id===e);if(n===-1)return;let i=this.items()[n],o=i.kind==="session"&&i.draft!==!0,r=i.kind==="session"?i.cwd:void 0;this.remove(this.doomedWith(e),n),o&&this.fallBackToEmptySession(r)}forget(e){let n=this.items().findIndex(i=>i.id===e);n!==-1&&this.remove(this.doomedWith(e),n)}clearActiveSession(){let e=this.items().find(n=>n.id===this.active());e!==void 0&&e.kind==="session"&&e.draft!==!0&&this.active.set(void 0)}closeOthers(e){let n=this.items().find(a=>a.id===e);if(n===void 0)return;let i=new Set([e]);if(n.kind==="session")for(let a of this.mentionFilesOf(e))i.add(a.id);else n.mention===!0&&n.sessionId!==void 0&&i.add(n.sessionId);let o=this.items().filter(a=>!i.has(a.id)),r=o.some(a=>a.kind==="session"&&a.draft!==!0),s=o.find(a=>a.kind==="session")?.cwd;this.items.update(a=>a.filter(c=>i.has(c.id))),this.active.set(e),n.kind==="session"&&n.draft!==!0&&this.morse.activateSession(n.id,n.cwd),r&&this.fallBackToEmptySession(s)}closeToTheRight(e){let n=this.items().findIndex(c=>c.id===e);if(n===-1)return;let i=this.items().slice(n+1);if(i.length===0)return;let o=new Set(i.map(c=>c.id)),r=i.some(c=>c.kind==="session"&&c.draft!==!0),s=i.find(c=>c.kind==="session")?.cwd,a=this.active();this.items.update(c=>c.filter(l=>!o.has(l.id))),this.pruneOrphanMentions(),a!==void 0&&o.has(a)&&this.select(e),r&&this.fallBackToEmptySession(s)}closeAll(){let e=this.items().some(i=>i.kind==="session"&&i.draft!==!0),n=this.items().find(i=>i.kind==="session")?.cwd;this.items.set([]),this.active.set(void 0),e&&this.fallBackToEmptySession(n)}fallBackToEmptySession(e){this.items().some(n=>n.kind==="session")||this.morse.state().sessionId!==void 0&&this.morse.newSession(e??this.morse.state().workspace.cwd)}doomedWith(e){let n=new Set([e]),i=new Set(this.items().filter(o=>o.kind==="session"&&o.id!==e).map(o=>o.id));for(let o of this.items())o.kind!=="file"||o.mention!==!0||(o.sessionId===void 0||o.sessionId===e||!i.has(o.sessionId))&&n.add(o.id);return n}mentionFilesOf(e){return this.items().filter(n=>n.kind==="file"&&n.mention===!0&&n.sessionId===e)}remove(e,n){let i=this.active();if(this.items.update(s=>s.filter(a=>!e.has(a.id))),i===void 0||!e.has(i))return;let o=this.items(),r=o[Math.min(n,o.length-1)];if(r===void 0){this.active.set(void 0);return}this.select(r.id)}pruneOrphanMentions(){let e=new Set(this.items().filter(o=>o.kind==="session").map(o=>o.id)),n=this.items(),i=new Set(n.filter(o=>o.kind==="file"&&o.mention===!0&&(o.sessionId===void 0||!e.has(o.sessionId))).map(o=>o.id));i.size!==0&&this.remove(i,n.findIndex(o=>o.id===this.active()))}reload(e){this.patch(e,{diff:void 0,diffError:void 0}),this.load(e)}loadDiff(e){let n=this.items().find(i=>i.id===e);n===void 0||n.kind!=="file"||n.diff!==void 0||n.diffLoading===!0||(this.patch(e,{diffLoading:!0,diffError:void 0}),this.morse.requestHostCommand("gitDiff",{path:n.path}).then(i=>{let o=pO(i);if(o===void 0){this.patch(e,{diffLoading:!1,diffError:"Could not read this file\u2019s changes."});return}this.patch(e,{diffLoading:!1,diff:o})}))}findSession(e){return this.items().find(n=>n.kind==="session"&&n.id===e)}promoteDraft(e){this.items().some(i=>i.kind==="session"&&i.id===Ao)&&this.items.update(i=>i.map(o=>o.kind==="session"&&o.id===Ao?V({kind:"session"},e):o.kind==="file"&&o.mention===!0&&o.sessionId===Ao?K(V({},o),{sessionId:e.id,id:aC(e.id,o.path)}):o))}discardDraft(){this.items().some(n=>n.kind==="session"&&n.id===Ao)&&(this.items.update(n=>n.filter(i=>!(i.kind==="session"&&i.id===Ao))),this.pruneOrphanMentions())}needsLoad(e){return e.kind==="file"&&!e.loading&&e.content===void 0&&e.error===void 0}async load(e){let n=this.items().find(r=>r.id===e);if(n===void 0||n.kind!=="file")return;this.patch(e,{loading:!0,error:void 0});let i=await this.morse.requestHostCommand("readFile",{path:n.path}),o=uO(i);if(o===void 0){this.patch(e,{loading:!1,error:"Could not read this file."});return}this.patch(e,{loading:!1,content:o.content,size:o.size,truncated:o.truncated,binary:o.binary,language:kh(o.path)})}patch(e,n){this.items.update(i=>i.map(o=>o.id===e&&o.kind==="file"?V(V({},o),n):o))}static \u0275fac=function(n){return new(n||t)};static \u0275prov=xe({token:t,factory:t.\u0275fac,providedIn:"root"})};function uO(t){if(typeof t!="object"||t===null)return;let e=t,n=e.content,i=e.path;if(typeof n!="string"||typeof i!="string")return;let o=e.size;return{path:i,content:n,size:typeof o=="number"?o:n.length,truncated:e.truncated===!0,binary:e.binary===!0}}function pO(t){if(typeof t!="object"||t===null)return;let e=t.diff;return typeof e=="string"?e:void 0}function fO(t){let e=t.lastIndexOf("/");return e===-1?t:t.slice(e+1)}function aC(t,e){return`${dO}${t??""}:${e}`}function mO(t,e,n=80){let i=Math.floor(t-4-8);return Math.max(n,Math.min(e,i))}var Qd=class t{preferred=te(320,{alias:"morsePopoverFit"});host=N(Bt);renderer=N(Xi).createRenderer(null,null);observer;constructor(){no(()=>{this.fit();let e=this.anchor();e&&typeof ResizeObserver<"u"&&(this.observer=new ResizeObserver(()=>this.fit()),this.observer.observe(e))}),N(pt).onDestroy(()=>this.observer?.disconnect())}onWindowResize(){this.fit()}anchor(){let e=this.host.nativeElement;return e.offsetParent??e.parentElement}fit(){let e=this.anchor()?.getBoundingClientRect().top??0,n=mO(e,this.preferred());this.renderer.setStyle(this.host.nativeElement,"--morse-popover-max-height",`${n}px`)}static \u0275fac=function(n){return new(n||t)};static \u0275dir=br({type:t,selectors:[["","morsePopoverFit",""]],hostBindings:function(n,i){n&1&&A("resize",function(){return i.onWindowResize()},um)},inputs:{preferred:[1,"morsePopoverFit","preferred"]}})};var un=class t{morseEnter=te(0);morseEnterY=te(8);morseEnterDuration=te(260);morseEnterScale=te(void 0);element=N(Bt);animation=N(ln);ngAfterViewInit(){let e=Math.max(0,this.morseEnter());this.animation.enter(this.element.nativeElement,{y:this.morseEnterY(),duration:this.morseEnterDuration(),scale:this.morseEnterScale(),delay:Math.min(e,8)*24})}static \u0275fac=function(n){return new(n||t)};static \u0275dir=br({type:t,selectors:[["","morseEnter",""]],inputs:{morseEnter:[1,"morseEnter"],morseEnterY:[1,"morseEnterY"],morseEnterDuration:[1,"morseEnterDuration"],morseEnterScale:[1,"morseEnterScale"]}})};var hO=["list"];function gO(t,e){t&1&&(y(0,"div",2),u(1,"Reading the workspace\u2026"),b())}function yO(t,e){if(t&1&&(y(0,"div",4),u(1),b()),t&2){let n=m(2);d(),ae("No match for \u201C",n.query(),"\u201D.")}}function _O(t,e){if(t&1){let n=$();y(0,"div",4),u(1," The host returned no workspace files. "),y(2,"button",5),A("click",function(){D(n);let o=m(2);return M(o.reload.emit())}),u(3,"Load again"),b()()}}function vO(t,e){if(t&1&&w(0,yO,2,1,"div",4)(1,_O,4,0,"div",4),t&2){let n=m();S(n.query().length>0?0:1)}}function bO(t,e){if(t&1){let n=$();y(0,"button",12),A("mouseenter",function(){D(n);let o=m().$index,r=m(2);return M(r.activeChange.emit(o))})("click",function(){D(n);let o=m().$implicit,r=m(2);return M(r.quote.emit(o))}),u(1," \u29C9 "),b()}}function xO(t,e){if(t&1){let n=$();y(0,"li")(1,"button",7),A("mouseenter",function(){let o=D(n).$index,r=m(2);return M(r.activeChange.emit(o))})("click",function(){let o=D(n).$implicit,r=m(2);return M(r.pick.emit(o))}),y(2,"span",8),u(3),b(),y(4,"span",9)(5,"span",10),u(6),b(),u(7),b()(),w(8,bO,2,0,"button",11),b()}if(t&2){let n=e.$implicit,i=e.$index,o=m(2);X("active",i===o.active()),d(3),k(o.isDirectory(n)?"\u25B8":"\u25A4"),d(3),k(o.split(n).dir),d(),ae("",o.split(n).base," "),d(),S(o.isDirectory(n)?-1:8)}}function CO(t,e){if(t&1&&(y(0,"ul",null,0),oe(2,xO,9,6,"li",6,Ei),b()),t&2){let n=m();d(2),re(n.files())}}var Xd=class t{files=te.required();busy=te(!1);query=te("");active=te(0);pick=it();quote=it();close=it();reload=it();activeChange=it();list=Xe("list");constructor(){se(()=>{this.active(),this.files(),setTimeout(()=>this.revealActive(),0)})}revealActive(){let e=this.list()?.nativeElement,n=e?.children.item(this.active());if(!e||!n)return;let i=e.getBoundingClientRect(),o=n.getBoundingClientRect();o.top<i.top?e.scrollTop-=i.top-o.top:o.bottom>i.bottom&&(e.scrollTop+=o.bottom-i.bottom)}split(e){let n=e.lastIndexOf("/");return n===-1?{dir:"",base:e}:{dir:e.slice(0,n+1),base:e.slice(n+1)}}isDirectory(e){return Ih(e)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=ue({type:t,selectors:[["morse-file-picker"]],viewQuery:function(n,i){n&1&>(i.list,hO,5),n&2&&vt()},inputs:{files:[1,"files"],busy:[1,"busy"],query:[1,"query"],active:[1,"active"]},outputs:{pick:"pick",quote:"quote",close:"close",reload:"reload",activeChange:"activeChange"},decls:19,vars:3,consts:[["list",""],[1,"picker",3,"morseEnter","morseEnterY"],[1,"busy"],[1,"hint"],[1,"empty"],["type","button",1,"reload",3,"click"],[3,"active"],["type","button",1,"row",3,"mouseenter","click"],[1,"icon"],[1,"path"],[1,"dir"],["type","button","title","Mention and quote a line range","aria-label","Mention and quote a line range",1,"quote"],["type","button","title","Mention and quote a line range","aria-label","Mention and quote a line range",1,"quote",3,"mouseenter","click"]],template:function(n,i){n&1&&(y(0,"div",1),w(1,gO,2,0,"div",2)(2,vO,2,1)(3,CO,4,0,"ul"),y(4,"div",3)(5,"kbd"),u(6,"\u2191"),b(),y(7,"kbd"),u(8,"\u2193"),b(),u(9," move \xB7 "),y(10,"kbd"),u(11,"Enter"),b(),u(12," mention \xB7 "),y(13,"kbd"),u(14,"\u21E7Enter"),b(),u(15," quote \xB7 "),y(16,"kbd"),u(17,"Esc"),b(),u(18," close "),b()()),n&2&&(q("morseEnter",0)("morseEnterY",6),d(),S(i.busy()&&i.files().length===0?1:i.files().length===0?2:3))},dependencies:[un],styles:["[_nghost-%COMP%]{display:block}.picker[_ngcontent-%COMP%]{display:flex;flex-direction:column;max-height:var(--%NS%morse-popover-max-height, 300px);border:1px solid var(--%NS%morse-border);border-radius:var(--%NS%morse-radius-md);background:var(--%NS%morse-panel, var(--%NS%morse-bg));box-shadow:0 10px 28px #0000004d;overflow:hidden}ul[_ngcontent-%COMP%]{margin:0;padding:4px 0;list-style:none;overflow-y:auto}li[_ngcontent-%COMP%]{display:flex;align-items:center}li[_ngcontent-%COMP%] .row[_ngcontent-%COMP%]{flex:1;display:flex;align-items:center;gap:8px;padding:4px 10px;border:0;border-radius:0;background:transparent;color:var(--%NS%morse-fg);font-size:12px;text-align:left;cursor:pointer}li.active[_ngcontent-%COMP%] .row[_ngcontent-%COMP%]{background:var(--%NS%morse-active)}.quote[_ngcontent-%COMP%]{flex:none;width:26px;height:26px;margin-right:4px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:0;border-radius:var(--%NS%morse-radius-sm);background:transparent;color:var(--%NS%morse-fg-muted);font-size:12px;cursor:pointer;opacity:.55}.quote[_ngcontent-%COMP%]:hover:not(:disabled){background:var(--%NS%morse-hover);color:var(--%NS%morse-fg);opacity:1}.icon[_ngcontent-%COMP%]{flex:none;color:var(--%NS%morse-fg-muted);font-size:11px}.path[_ngcontent-%COMP%]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--%NS%morse-font-mono)}.dir[_ngcontent-%COMP%]{color:var(--%NS%morse-fg-muted)}.empty[_ngcontent-%COMP%], .busy[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;padding:8px 10px;color:var(--%NS%morse-fg-muted);font-size:12px}.reload[_ngcontent-%COMP%]{padding:1px 8px;border:1px solid var(--%NS%morse-border);border-radius:var(--%NS%morse-radius-sm);background:transparent;color:var(--%NS%morse-fg);font-size:11px;cursor:pointer}.reload[_ngcontent-%COMP%]:hover{background:var(--%NS%morse-hover)}.hint[_ngcontent-%COMP%]{padding:5px 10px;border-top:1px solid var(--%NS%morse-border);color:var(--%NS%morse-fg-muted);font-size:11px}kbd[_ngcontent-%COMP%]{font-family:var(--%NS%morse-font-mono);font-size:10px;padding:0 3px;border:1px solid var(--%NS%morse-border);border-radius:var(--%NS%morse-radius-sm)}"]})};function lC(t,e,n=50){let i=e.trim().toLowerCase();return t.map(o=>({file:o,score:i.length===0?0:EO(o,i)})).filter(o=>o.score<Number.POSITIVE_INFINITY).sort((o,r)=>cC(o.file)-cC(r.file)||o.score-r.score||o.file.length-r.file.length||o.file.localeCompare(r.file)).slice(0,n).map(o=>o.file)}function Ih(t){return t.endsWith("/")}function cC(t){return Ih(t)?0:1}function EO(t,e){let n=(Ih(t)?t.slice(0,-1):t).toLowerCase(),i=n.lastIndexOf("/"),o=i===-1?n:n.slice(i+1);return o.startsWith(e)?0:o.includes(e)?1:n.startsWith(e)?2:n.includes(e)?3:Number.POSITIVE_INFINITY}var wO=["list"],SO=(t,e)=>e.id;function TO(t,e){if(t&1&&(y(0,"div",3),u(1),b()),t&2){let n=m(2);d(),ae("No command matches \u201C",n.query(),"\u201D.")}}function DO(t,e){t&1&&(y(0,"div",3),u(1,"No commands available in this session."),b())}function MO(t,e){if(t&1&&w(0,TO,2,1,"div",3)(1,DO,2,0,"div",3),t&2){let n=m();S(n.query().length>0?0:1)}}function kO(t,e){if(t&1&&(y(0,"span",5),u(1),b()),t&2){let n=m().$implicit;d(),k(n.icon)}}function IO(t,e){if(t&1&&(y(0,"span",8),u(1),b()),t&2){let n=m().$implicit;d(),k(n.description)}}function NO(t,e){if(t&1&&(y(0,"span",9),u(1),b()),t&2){let n=m().$implicit;d(),k(n.badge)}}function OO(t,e){if(t&1){let n=$();y(0,"li")(1,"button",4),A("mouseenter",function(){let o=D(n).$index,r=m(2);return M(r.activeChange.emit(o))})("pointerdown",function(o){return o.preventDefault()})("click",function(){let o=D(n).$implicit,r=m(2);return M(r.pick.emit(o.id))}),w(2,kO,2,1,"span",5),y(3,"span",6)(4,"span",7),u(5),b(),w(6,IO,2,1,"span",8),b(),w(7,NO,2,1,"span",9),b()()}if(t&2){let n=e.$implicit,i=e.$index,o=m(2);d(),X("active",i===o.active()),d(),S(n.icon?2:-1),d(3),k(n.label),d(),S(n.description?6:-1),d(),S(n.badge?7:-1)}}function PO(t,e){if(t&1&&(y(0,"ul",null,0),oe(2,OO,8,6,"li",null,SO),b()),t&2){let n=m();d(2),re(n.items())}}var Jd=class t{items=te.required();query=te("");active=te(0);pick=it();close=it();activeChange=it();list=Xe("list");constructor(){se(()=>{this.active(),this.items(),setTimeout(()=>this.revealActive(),0)})}revealActive(){let e=this.list()?.nativeElement,n=e?.children.item(this.active());if(!e||!n)return;let i=e.getBoundingClientRect(),o=n.getBoundingClientRect();o.top<i.top?e.scrollTop-=i.top-o.top:o.bottom>i.bottom&&(e.scrollTop+=o.bottom-i.bottom)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=ue({type:t,selectors:[["morse-command-picker"]],viewQuery:function(n,i){n&1&>(i.list,wO,5),n&2&&vt()},inputs:{items:[1,"items"],query:[1,"query"],active:[1,"active"]},outputs:{pick:"pick",close:"close",activeChange:"activeChange"},decls:18,vars:3,consts:[["list",""],[1,"picker",3,"morseEnter","morseEnterY"],[1,"hint"],[1,"empty"],["type","button",3,"mouseenter","pointerdown","click"],[1,"icon"],[1,"text"],[1,"label"],[1,"description"],[1,"badge"]],template:function(n,i){n&1&&(y(0,"div",1),w(1,MO,2,1)(2,PO,4,0,"ul"),y(3,"div",2)(4,"kbd"),u(5,"\u2191"),b(),y(6,"kbd"),u(7,"\u2193"),b(),u(8," move \xB7 "),y(9,"kbd"),u(10,"Enter"),b(),u(11," run \xB7 "),y(12,"kbd"),u(13,"Tab"),b(),u(14," insert \xB7 "),y(15,"kbd"),u(16,"Esc"),b(),u(17," close "),b()()),n&2&&(q("morseEnter",0)("morseEnterY",6),d(),S(i.items().length===0?1:2))},dependencies:[un],styles:["[_nghost-%COMP%]{display:block}.picker[_ngcontent-%COMP%]{display:flex;flex-direction:column;max-height:var(--%NS%morse-popover-max-height, 320px);border:1px solid var(--%NS%morse-border);border-radius:var(--%NS%morse-radius-md);background:var(--%NS%morse-panel, var(--%NS%morse-bg));box-shadow:0 10px 28px #0000004d;overflow:hidden}ul[_ngcontent-%COMP%]{margin:0;padding:4px 0;list-style:none;overflow-y:auto}li[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;width:100%;padding:5px 10px;border:0;border-radius:0;background:transparent;color:var(--%NS%morse-fg);font-size:12px;text-align:left;cursor:pointer}li[_ngcontent-%COMP%] button.active[_ngcontent-%COMP%]{background:var(--%NS%morse-active)}.icon[_ngcontent-%COMP%]{flex:none;width:14px;color:var(--%NS%morse-fg-muted);text-align:center}.text[_ngcontent-%COMP%]{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.label[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--%NS%morse-font-mono)}.description[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--%NS%morse-fg-muted);font-size:11px}.badge[_ngcontent-%COMP%]{flex:none;padding:1px 6px;border-radius:999px;background:var(--%NS%morse-badge-bg);color:var(--%NS%morse-badge-fg);font-size:10px}.empty[_ngcontent-%COMP%]{padding:8px 10px;color:var(--%NS%morse-fg-muted);font-size:12px}.hint[_ngcontent-%COMP%]{padding:5px 10px;border-top:1px solid var(--%NS%morse-border);color:var(--%NS%morse-fg-muted);font-size:11px}kbd[_ngcontent-%COMP%]{font-family:var(--%NS%morse-font-mono);font-size:10px;padding:0 3px;border:1px solid var(--%NS%morse-border);border-radius:var(--%NS%morse-radius-sm)}"]})};function dC(t,e,n=50){let i=e.trim().toLowerCase();return i.length===0?t.slice(0,n):t.map(o=>({item:o,score:AO(o,i)})).filter(o=>o.score<Number.POSITIVE_INFINITY).sort((o,r)=>o.score-r.score||o.item.label.length-r.item.label.length).slice(0,n).map(o=>o.item)}function AO(t,e){let n=t.label.toLowerCase();return n.startsWith(e)?0:n.includes(e)?1:t.description?.toLowerCase().includes(e)?2:Number.POSITIVE_INFINITY}var RO=["card"],LO=(t,e)=>e.id;function FO(t,e){t&1&&(h(0,"p",5),u(1),g()),t&2&&(d(),k(e))}function VO(t,e){t&1&&(h(0,"span",16),u(1,"required"),g())}function jO(t,e){if(t&1){let n=$();h(0,"textarea",19),F("input",function(o){D(n);let r=m().$implicit,s=m();return M(s.setValue(r.id,o))})("keydown",function(o){D(n);let r=m(2);return M(r.onSubmitKey(o))}),g()}if(t&2){let n=m().$implicit,i=m();ie("value",i.value(n.id)),J("aria-label",n.label)}}function $O(t,e){if(t&1){let n=$();h(0,"input",20),F("input",function(o){D(n);let r=m().$implicit,s=m();return M(s.setValue(r.id,o))})("keydown.enter",function(o){D(n);let r=m(2);return M(r.submit(o))}),g()}if(t&2){let n=m().$implicit,i=m();ie("value",i.value(n.id)),J("aria-label",n.label)}}function BO(t,e){if(t&1&&(h(0,"label",7)(1,"span",8),u(2),w(3,VO,2,0,"span",16),g(),w(4,jO,1,2,"textarea",17)(5,$O,1,2,"input",18),g()),t&2){let n=e.$implicit;d(2),ae(" ",n.label," "),d(),S(n.required?3:-1),d(),S(n.index===void 0?4:5)}}var eu=class t{request=te.required();submitted=it();cancelled=it();card=Xe("card");values=O({});extra=O("");preview=E(()=>Gb(this.request().form,this.values(),this.extra()));ready=E(()=>this.request().form.arguments.every(e=>!e.required||(this.values()[e.id]??"").trim().length>0));constructor(){se(()=>{this.request(),this.values.set({}),this.extra.set(""),setTimeout(()=>{this.card()?.nativeElement.querySelector("input, textarea")?.focus()},0)})}value(e){return this.values()[e]??""}setValue(e,n){let i=n.target.value;this.values.update(o=>K(V({},o),{[e]:i}))}setExtra(e){this.extra.set(e.target.value)}submit(e){e?.preventDefault(),this.ready()&&this.submitted.emit(this.preview())}onSubmitKey(e){e.key==="Enter"&&(e.ctrlKey||e.metaKey)&&this.submit(e)}onEscape(){this.cancelled.emit()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=ue({type:t,selectors:[["morse-prompt-template-dialog"]],viewQuery:function(n,i){n&1&>(i.card,RO,5),n&2&&vt()},hostBindings:function(n,i){n&1&&A("keydown.escape",function(){return i.onEscape()},Mt)},inputs:{request:[1,"request"]},outputs:{submitted:"submitted",cancelled:"cancelled"},decls:26,vars:5,consts:[["card",""],[1,"modal-layer",3,"click"],["role","dialog","aria-modal","true","aria-labelledby","template-title",1,"modal-card",3,"click"],[1,"head"],["id","template-title"],[1,"description"],[1,"fields"],[1,"field"],[1,"field-label"],[1,"optional"],["rows","3","aria-label","Additional instructions","placeholder","Anything the template does not cover",3,"input","keydown","value"],[1,"preview"],["aria-label","Prompt preview"],[1,"actions"],["type","button",1,"secondary",3,"click"],["type","button",3,"click","disabled"],[1,"required"],["rows","2","placeholder",'Shell-quoted arguments, e.g. "api tests" lint',3,"value"],["type","text",3,"value"],["rows","2","placeholder",'Shell-quoted arguments, e.g. "api tests" lint',3,"input","keydown","value"],["type","text",3,"input","keydown.enter","value"]],template:function(n,i){if(n&1&&(h(0,"div",1),F("click",function(){return i.cancelled.emit()}),h(1,"div",2,0),F("click",function(r){return r.stopPropagation()}),h(3,"header",3)(4,"h2",4),u(5),g(),w(6,FO,2,1,"p",5),g(),h(7,"div",6),oe(8,BO,6,3,"label",7,LO),h(10,"label",7)(11,"span",8),u(12," Additional instructions "),h(13,"span",9),u(14,"optional \xB7 appended below the template"),g()(),h(15,"textarea",10),F("input",function(r){return i.setExtra(r)})("keydown",function(r){return i.onSubmitKey(r)}),g()(),h(16,"div",11)(17,"span",8),u(18,"Preview"),g(),h(19,"pre",12),u(20),g()(),h(21,"div",13)(22,"button",14),F("click",function(){return i.cancelled.emit()}),u(23,"Cancel"),g(),h(24,"button",15),F("click",function(){return i.submit()}),u(25,"Send"),g()()()()()),n&2){let o;d(5),ae("/",i.request().name),d(),S((o=i.request().description)?6:-1,o),d(2),re(i.request().form.arguments),d(7),ie("value",i.extra()),d(5),k(i.preview()),d(4),ie("disabled",!i.ready())}},styles:["[_nghost-%COMP%]{display:contents}.modal-layer[_ngcontent-%COMP%]{position:fixed;inset:0;z-index:75;display:flex;align-items:center;justify-content:center;padding:24px;background:#00000073}.modal-card[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px;width:min(560px,100%);max-height:min(84vh,760px);overflow:auto;padding:16px 18px;border:1px solid var(--%NS%morse-border);border-radius:var(--%NS%morse-radius-lg);background:var(--%NS%morse-panel, var(--%NS%morse-bg));box-shadow:0 18px 48px #0006;animation:_ngcontent-%COMP%_template-in .14s ease-out}.head[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:3px}h2[_ngcontent-%COMP%]{margin:0;font-family:var(--%NS%morse-font-mono);font-size:14px;font-weight:600}.description[_ngcontent-%COMP%]{margin:0;font-size:12px;color:var(--%NS%morse-fg-muted)}form[_ngcontent-%COMP%], .fields[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:10px}.field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:4px}.field-label[_ngcontent-%COMP%]{font-size:11.5px;font-weight:600;color:var(--%NS%morse-fg-muted)}.required[_ngcontent-%COMP%], .optional[_ngcontent-%COMP%]{margin-left:4px;font-weight:400;font-size:10.5px}.required[_ngcontent-%COMP%]{color:var(--%NS%morse-warn)}.optional[_ngcontent-%COMP%]{color:var(--%NS%morse-fg-muted)}input[_ngcontent-%COMP%], textarea[_ngcontent-%COMP%]{width:100%;padding:6px 8px;border:1px solid var(--%NS%morse-border);border-radius:var(--%NS%morse-radius-sm);background:var(--%NS%morse-input-bg, transparent);color:var(--%NS%morse-fg);font-family:inherit;font-size:12.5px;resize:vertical}input[_ngcontent-%COMP%]:focus, textarea[_ngcontent-%COMP%]:focus{outline:none;border-color:var(--%NS%morse-accent)}.preview[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:4px}pre[_ngcontent-%COMP%]{margin:0;max-height:180px;overflow:auto;padding:8px 10px;border:1px solid var(--%NS%morse-border);border-radius:var(--%NS%morse-radius-sm);background:var(--%NS%morse-code-bg, rgb(0 0 0 / 18%));color:var(--%NS%morse-fg);font-family:var(--%NS%morse-font-mono);font-size:11.5px;line-height:1.55;white-space:pre-wrap;word-break:break-word}.actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:6px}@keyframes _ngcontent-%COMP%_template-in{0%{opacity:0;transform:translateY(6px)}}@media(prefers-reduced-motion:reduce){.modal-card[_ngcontent-%COMP%]{animation:none}}"]})};function li(t){return t<1e3?t.toString():t<1e4?`${(t/1e3).toFixed(1)}k`:t<1e6?`${Math.round(t/1e3)}k`:t<1e7?`${(t/1e6).toFixed(1)}M`:`${Math.round(t/1e6)}M`}function uC(t,e){let n=t?.[e];return typeof n=="number"?li(n):"\u2014"}function Nh(t){if(!t)return;let e=t.cacheReadTokens??0,n=t.cacheWriteTokens??0,i=t.inputTokens+e+n;if(!(i<=0||e===0&&n===0))return e/i*100}function Oh(t){if(!(t===void 0||t<=0))return`$${t.toFixed(3)}`}function Ph(t){let e=[],n=t.usage;if(n){n.inputTokens>0&&e.push(`\u2191${li(n.inputTokens)}`),n.outputTokens>0&&e.push(`\u2193${li(n.outputTokens)}`),n.cacheReadTokens&&e.push(`R${li(n.cacheReadTokens)}`),n.cacheWriteTokens&&e.push(`W${li(n.cacheWriteTokens)}`);let r=Nh(n);r!==void 0&&e.push(`CH${r.toFixed(1)}%`)}let i=Oh(t.costUsd);i&&e.push(i);let o=t.contextUsage;if(o){let r=o.percent!==null?`${o.percent.toFixed(1)}%`:"?";e.push(`${r}/${li(o.contextWindow)}`)}return e.join(" ")}var HO=["search"],UO=["list"],zO=(t,e)=>e.provider,GO=(t,e)=>e.index;function qO(t,e){if(t&1&&(y(0,"div",10),u(1),b()),t&2){let n=m();d(),ae("No model matches \u201C",n.filter(),"\u201D.")}}function WO(t,e){t&1&&(y(0,"span",15),u(1),b()),t&2&&(d(),k(e))}function YO(t,e){t&1&&(y(0,"span",16),u(1,"\u2713"),b())}function KO(t,e){if(t&1){let n=$();y(0,"button",13),A("mouseenter",function(){let o=D(n).$implicit,r=m(4);return M(r.active.set(o.index))})("click",function(){let o=D(n).$implicit,r=m(4);return M(r.pick.emit(o.model))}),y(1,"span",14),u(2),b(),w(3,WO,2,1,"span",15),w(4,YO,2,0,"span",16),b()}if(t&2){let n,i=e.$implicit,o=m(4);X("active",i.index===o.active())("selected",o.keyOf(i.model)===o.current()),q("title",o.keyOf(i.model)),J("aria-current",o.keyOf(i.model)===o.current()?"true":null),d(2),k(i.model.name),d(),S((n=o.context(i.model))?3:-1,n),d(),S(o.keyOf(i.model)===o.current()?4:-1)}}function ZO(t,e){if(t&1&&(y(0,"div",11),u(1),b(),oe(2,KO,5,9,"button",12,GO)),t&2){let n=m().$implicit;d(),k(n.provider),d(),re(n.rows)}}function QO(t,e){if(t&1&&w(0,ZO,4,1),t&2){let n=e.$implicit;S(n.rows.length>0?0:-1)}}function XO(t,e){if(t&1&&oe(0,QO,1,1,null,null,zO),t&2){let n=m();re(n.groups())}}function JO(t,e){let n=e.trim().toLowerCase(),i=new Map;for(let o of t){if(n.length>0&&!`${o.provider} ${o.id} ${o.name}`.toLowerCase().includes(n))continue;let r=i.get(o.provider);r?r.push(o):i.set(o.provider,[o])}return[...i].map(([o,r])=>({provider:o,models:r}))}var tu=class t{models=te.required();current=te("");pick=it();close=it();host=N(Bt);search=Xe("search");list=Xe("list");filter=O("");active=O(0);groups=E(()=>{let e=0;return JO(this.models(),this.filter()).map(n=>({provider:n.provider,rows:n.models.map(i=>({model:i,index:e++}))}))});visible=E(()=>this.groups().flatMap(e=>e.rows.map(n=>n.model)));constructor(){no(()=>this.search()?.nativeElement.focus()),se(()=>{if(this.groups(),this.filter().trim().length>0)return;let e=this.visible().findIndex(n=>this.keyOf(n)===this.current());e>=0&&this.active.set(e)}),se(()=>{this.active(),this.groups(),setTimeout(()=>this.revealActive(),0)})}revealActive(){let e=this.list()?.nativeElement,n=e?.querySelectorAll(".row")[this.active()];if(!e||!n)return;let i=e.getBoundingClientRect(),o=n.getBoundingClientRect(),r=e.querySelector(".group")?.offsetHeight??0,s=i.top+r;o.top<s?e.scrollTop-=s-o.top:o.bottom>i.bottom&&(e.scrollTop+=o.bottom-i.bottom)}keyOf(e){return`${e.provider}/${e.id}`}context(e){return e.contextWindow?li(e.contextWindow):""}onFilter(e){this.filter.set(e.target.value),this.active.set(0)}onKeydown(e){let n=this.visible();switch(e.key){case"Escape":e.preventDefault(),this.close.emit();return;case"ArrowDown":e.preventDefault(),this.active.update(i=>Math.min(i+1,Math.max(0,n.length-1)));return;case"ArrowUp":e.preventDefault(),this.active.update(i=>Math.max(0,i-1));return;case"Enter":{let i=n[this.active()];i&&(e.preventDefault(),this.pick.emit(i));return}default:return}}onDocumentPointerdown(e){let n=e.target;n&&!this.host.nativeElement.contains(n)&&this.close.emit()}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=ue({type:t,selectors:[["morse-model-picker"]],viewQuery:function(n,i){n&1&>(i.search,HO,5)(i.list,UO,5),n&2&&vt(2)},hostBindings:function(n,i){n&1&&A("pointerdown",function(r){return i.onDocumentPointerdown(r)},Mt)},inputs:{models:[1,"models"],current:[1,"current"]},outputs:{pick:"pick",close:"close"},decls:12,vars:4,consts:[["search",""],["list",""],[1,"panel",3,"morseEnter","morseEnterY"],[1,"search"],["aria-hidden","true",1,"search-icon"],["viewBox","0 0 16 16"],["cx","7","cy","7","r","4.2"],["d","M10.2 10.2 14 14"],["type","text","placeholder","Search models","aria-label","Search models",3,"input","keydown","value"],[1,"list"],[1,"empty"],[1,"group"],["type","button",1,"row",3,"active","selected","title"],["type","button",1,"row",3,"mouseenter","click","title"],[1,"name"],[1,"meta"],[1,"check"]],template:function(n,i){n&1&&(y(0,"div",2)(1,"div",3)(2,"span",4),st(),y(3,"svg",5),ve(4,"circle",6)(5,"path",7),b()(),Jt(),y(6,"input",8,0),A("input",function(r){return i.onFilter(r)})("keydown",function(r){return i.onKeydown(r)}),b()(),y(8,"div",9,1),w(10,qO,2,1,"div",10)(11,XO,2,0),b()()),n&2&&(q("morseEnter",0)("morseEnterY",6),d(6),q("value",i.filter()),d(4),S(i.visible().length===0?10:11))},dependencies:[un],styles:["[_nghost-%COMP%]{display:block}.panel[_ngcontent-%COMP%]{display:flex;flex-direction:column;max-height:var(--%NS%morse-popover-max-height, 340px);border:1px solid var(--%NS%morse-border);border-radius:var(--%NS%morse-radius-md);background:var(--%NS%morse-panel, var(--%NS%morse-bg));box-shadow:0 12px 32px #00000059;overflow:hidden}.search[_ngcontent-%COMP%]{position:relative;display:flex;align-items:center;padding:8px 10px;border-bottom:1px solid var(--%NS%morse-border)}.search-icon[_ngcontent-%COMP%]{position:absolute;left:19px;display:inline-flex;color:var(--%NS%morse-fg-muted);pointer-events:none}.search-icon[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round}.search[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{flex:1;min-width:0;padding-left:28px;font-size:12.5px}.search[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus-visible{outline:none}.list[_ngcontent-%COMP%]{flex:1;min-height:0;overflow-y:auto;padding-bottom:4px}.group[_ngcontent-%COMP%]{position:sticky;top:0;padding:8px 10px 4px;background:var(--%NS%morse-panel, var(--%NS%morse-bg));color:var(--%NS%morse-fg-muted);font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;width:100%;padding:5px 10px;border:0;border-radius:0;background:transparent;color:var(--%NS%morse-fg);font:inherit;font-size:12.5px;text-align:left;cursor:pointer}.row.active[_ngcontent-%COMP%], .row[_ngcontent-%COMP%]:hover{background:var(--%NS%morse-hover)}.row.selected[_ngcontent-%COMP%]{background:var(--%NS%morse-active)}.name[_ngcontent-%COMP%]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.meta[_ngcontent-%COMP%]{flex:none;color:var(--%NS%morse-fg-muted);font-size:11px}.check[_ngcontent-%COMP%]{flex:none;color:var(--%NS%morse-accent);font-size:12px}.empty[_ngcontent-%COMP%]{padding:12px 10px;color:var(--%NS%morse-fg-muted);font-size:12px}"]})};var eP=["brain"],tP=["halo"];function nP(t,e){if(t&1&&(st(),ce(0,"path")),t&2){let n=e.$implicit;J("d",n)}}function iP(t,e){t&1&&ce(0,"span",3,1)}function oP(t,e){t&1&&ce(0,"span",4,1)}var rP=["M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z","M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z","M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4","M17.599 6.5a3 3 0 0 0 .399-1.375","M6.003 5.125A3 3 0 0 0 6.401 6.5","M3.477 10.896a4 4 0 0 1 .585-.396","M19.938 10.5a4 4 0 0 1 .585.396","M6 18a4 4 0 0 1-1.967-.516","M19.967 17.484A4 4 0 0 1 18 18"],sP={off:0,minimal:1,low:2,medium:3,high:4,xhigh:5,max:6};function aP(t){return sP[t]??2}function cP(t){switch(t){case"off":return{params:{opacity:[.35,.6]},duration:5200,ease:"inOut(1)"};case"minimal":return{params:{opacity:[.6,1]},duration:2200};case"low":return{params:{rotate:["-7deg","7deg"]},duration:1500};case"medium":return{params:{scale:[1,1.14]},duration:950,halo:{duration:1300}};case"high":return{params:{scale:[1,1.18]},duration:560,halo:{duration:800}};case"xhigh":return{params:{scale:[1,1.16],rotate:["-8deg","8deg"]},duration:440,halo:{duration:620}};case"max":return{params:{scale:[1,1.22],rotate:["-12deg","12deg"]},duration:320,ease:"linear",halo:{duration:480}}}}var nu=class t{level=te.required();bumped=te(!1);host=N(Bt);animation=N(ln);brain=Xe("brain");halos=Cv("halo");stoppers=[];paths=rP;intensity=E(()=>aP(this.level()));constructor(){se(()=>{let e=this.level(),n=this.brain()?.nativeElement,i=this.halos().map(r=>r.nativeElement);if(this.stopLoops(),!n||!this.animation.isEnabled)return;let o=cP(e);this.stoppers.push(this.animation.loop(n,o.params,{duration:o.duration,delay:o.delay??0,ease:o.ease??"inOut(2)"})),o.halo&&i.forEach((r,s)=>{this.stoppers.push(this.animation.loop(r,{scale:[.72,1.9],opacity:[.55,0]},{duration:o.halo.duration,delay:(o.halo.delay??0)+s*o.halo.duration*.5,ease:"out(2)",alternate:!1}))})}),se(()=>{this.bumped()&&this.animation.pop(this.host.nativeElement,{scale:1.3,duration:420})}),N(pt).onDestroy(()=>this.stopLoops())}stopLoops(){for(let e of this.stoppers)e();this.stoppers=[]}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=ue({type:t,selectors:[["morse-brain"]],viewQuery:function(n,i){n&1&>(i.brain,eP,5)(i.halos,tP,5),n&2&&vt(2)},hostVars:3,hostBindings:function(n,i){n&2&&(J("data-level",i.level()),X("bumped",i.bumped()))},inputs:{level:[1,"level"],bumped:[1,"bumped"]},decls:6,vars:2,consts:[["brain",""],["halo",""],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","1.7","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true",1,"brain"],["aria-hidden","true",1,"wave","wave-a"],["aria-hidden","true",1,"wave","wave-b"]],template:function(n,i){n&1&&(st(),h(0,"svg",2,0),oe(2,nP,1,1,":svg:path",null,Ei),g(),w(4,iP,2,0,"span",3),w(5,oP,2,0,"span",4)),n&2&&(d(2),re(i.paths),d(2),S(i.intensity()>=3?4:-1),d(),S(i.intensity()>=4?5:-1))},styles:['[_nghost-%COMP%]{position:relative;display:inline-flex;width:16px;height:16px;color:var(--%NS%morse-accent)}.brain[_ngcontent-%COMP%]{width:100%;height:100%;transform-box:fill-box;transform-origin:center}.wave[_ngcontent-%COMP%]{position:absolute;inset:-1px;border-radius:50%;border:1px solid currentColor;opacity:0;pointer-events:none}[data-level="off"][_nghost-%COMP%]{color:var(--%NS%morse-fg-muted)}[data-level="minimal"][_nghost-%COMP%]{color:var(--%NS%morse-info)}[data-level="low"][_nghost-%COMP%]{color:var(--%NS%morse-success)}[data-level="medium"][_nghost-%COMP%]{color:var(--%NS%morse-warn)}[data-level="high"][_nghost-%COMP%]{color:var(--%NS%morse-error)}[data-level="xhigh"][_nghost-%COMP%]{color:var(--%NS%morse-error);color:color-mix(in srgb,var(--%NS%morse-error) 55%,var(--%NS%morse-typename))}[data-level="max"][_nghost-%COMP%]{color:var(--%NS%morse-typename)}']})};var lP=["panel"];function dP(t,e){t&1&&(y(0,"span",10),u(1,"\u2713"),b())}function uP(t,e){if(t&1){let n=$();y(0,"button",8),A("mouseenter",function(){let o=D(n).$index,r=m(2);return M(r.active.set(o))})("click",function(){let o=D(n).$implicit,r=m(2);return M(r.choose(o))}),ve(1,"morse-brain",2),y(2,"span",9),u(3),b(),w(4,dP,2,0,"span",10),b()}if(t&2){let n=e.$implicit,i=e.$index,o=m(2);X("active",i===o.active())("selected",n===o.current()),J("aria-selected",n===o.current()),d(),q("level",n),d(2),k(n),d(),S(n===o.current()?4:-1)}}function pP(t,e){if(t&1){let n=$();y(0,"div",6,0),A("keydown",function(o){D(n);let r=m();return M(r.onKeydown(o))}),oe(2,uP,5,8,"button",7,Ei),b()}if(t&2){let n=m();q("morseEnter",0)("morseEnterY",6),d(2),re(n.levels())}}var iu=class t{levels=te.required();current=te.required();pick=it();host=N(Bt);shortcuts=N(An);destroyRef=N(pt);panel=Xe("panel");open=O(!1);active=O(0);bumped=O(!1);constructor(){let e=this.shortcuts.bind("thinking.pick",()=>this.toggle(),()=>this.levels().length>0);this.destroyRef.onDestroy(e),se(()=>{this.open()&&setTimeout(()=>this.panel()?.nativeElement.focus(),0)})}toggle(){if(this.open()){this.close();return}this.bump();let e=this.levels().indexOf(this.current());this.active.set(e>=0?e:0),this.open.set(!0)}choose(e){this.pick.emit(e),this.close()}onKeydown(e){let n=this.levels();switch(e.key){case"Escape":e.preventDefault(),this.close();return;case"ArrowDown":e.preventDefault(),this.active.update(i=>Math.min(i+1,Math.max(0,n.length-1)));return;case"ArrowUp":e.preventDefault(),this.active.update(i=>Math.max(0,i-1));return;case"Enter":{let i=n[this.active()];i&&(e.preventDefault(),this.choose(i));return}default:return}}onDocumentPointerdown(e){let n=e.target;this.open()&&n&&!this.host.nativeElement.contains(n)&&this.close()}close(){this.open.set(!1),this.bumped.set(!1)}bump(){this.bumped.set(!1),setTimeout(()=>this.bumped.set(!0),0),setTimeout(()=>this.bumped.set(!1),520)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=ue({type:t,selectors:[["morse-thinking-picker"]],viewQuery:function(n,i){n&1&>(i.panel,lP,5),n&2&&vt()},hostBindings:function(n,i){n&1&&A("pointerdown",function(r){return i.onDocumentPointerdown(r)},Mt)},inputs:{levels:[1,"levels"],current:[1,"current"]},outputs:{pick:"pick"},decls:7,vars:5,consts:[["panel",""],["type","button","aria-haspopup","listbox",1,"trigger",3,"click","title"],[3,"level"],[1,"level"],["aria-hidden","true",1,"caret"],["role","listbox","aria-label","Thinking level","tabindex","-1",1,"panel",3,"morseEnter","morseEnterY"],["role","listbox","aria-label","Thinking level","tabindex","-1",1,"panel",3,"keydown","morseEnter","morseEnterY"],["type","button","role","option",1,"row",3,"active","selected"],["type","button","role","option",1,"row",3,"mouseenter","click"],[1,"name"],["aria-hidden","true",1,"check"]],template:function(n,i){n&1&&(y(0,"button",1),A("click",function(){return i.toggle()}),ve(1,"morse-brain",2),y(2,"span",3),u(3),b(),y(4,"span",4),u(5,"\u25BE"),b()(),w(6,pP,4,2,"div",5)),n&2&&(q("title","Thinking level: "+i.current()),J("aria-expanded",i.open()),d(),q("level",i.current()),d(2),k(i.current()),d(3),S(i.open()?6:-1))},dependencies:[un,nu],styles:["[_nghost-%COMP%]{position:relative;display:inline-block}.trigger[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border:1px solid var(--%NS%morse-input-border);border-radius:var(--%NS%morse-radius-sm);background:var(--%NS%morse-input-bg);color:var(--%NS%morse-input-fg);font-size:12px;cursor:pointer}.trigger[_ngcontent-%COMP%]:hover{border-color:var(--%NS%morse-fg-muted)}.trigger[aria-expanded=true][_ngcontent-%COMP%]{border-color:var(--%NS%morse-focus)}.trigger[_ngcontent-%COMP%] .level[_ngcontent-%COMP%]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-transform:capitalize}.trigger[_ngcontent-%COMP%] .caret[_ngcontent-%COMP%]{flex:none;color:var(--%NS%morse-fg-muted);font-size:10px}.panel[_ngcontent-%COMP%]{position:absolute;left:0;bottom:calc(100% + 6px);z-index:30;display:flex;flex-direction:column;min-width:180px;padding:4px;border:1px solid var(--%NS%morse-border);border-radius:var(--%NS%morse-radius-md);background:var(--%NS%morse-panel, var(--%NS%morse-bg));box-shadow:0 10px 28px #0000004d}.panel[_ngcontent-%COMP%]:focus-visible{outline:none}.row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;width:100%;padding:5px 8px;border:0;border-radius:var(--%NS%morse-radius-sm);background:transparent;color:var(--%NS%morse-fg);font:inherit;font-size:12px;text-align:left;cursor:pointer}.row.active[_ngcontent-%COMP%]{background:var(--%NS%morse-hover)}.row[_ngcontent-%COMP%] .name[_ngcontent-%COMP%]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-transform:capitalize}.row.selected[_ngcontent-%COMP%] .name[_ngcontent-%COMP%]{color:var(--%NS%morse-accent)}.row[_ngcontent-%COMP%] .check[_ngcontent-%COMP%]{flex:none;color:var(--%NS%morse-accent);font-size:12px}"]})};function fP(t,e){t&1&&(h(0,"span"),u(1),g()),t&2&&(d(),ae(" \xB7 ",e))}function mP(t,e){if(t&1&&(h(0,"section")(1,"h4"),u(2,"Last assistant message"),g(),h(3,"div",13)(4,"div",14)(5,"span",15),u(6,"Input"),g(),h(7,"span",16),u(8),g()(),h(9,"div",14)(10,"span",15),u(11,"Output"),g(),h(12,"span",16),u(13),g()(),h(14,"div",14)(15,"span",15),u(16,"Reasoning"),g(),h(17,"span",16),u(18),g()(),h(19,"div",14)(20,"span",15),u(21,"Cache read"),g(),h(22,"span",16),u(23),g()(),h(24,"div",14)(25,"span",15),u(26,"Cache write"),g(),h(27,"span",16),u(28),g()(),h(29,"div",14)(30,"span",15),u(31,"Cache hit"),g(),h(32,"span",16),u(33),g()()()()),t&2){let n=m(2);d(8),k(n.lastValue("inputTokens")),d(5),k(n.lastValue("outputTokens")),d(5),k(n.lastValue("reasoningTokens")),d(5),k(n.lastValue("cacheReadTokens")),d(5),k(n.lastValue("cacheWriteTokens")),d(5),k(n.cacheHitLabel())}}function hP(t,e){if(t&1){let n=$();h(0,"button",5),F("click",function(){D(n);let o=m();return M(o.close())}),g(),h(1,"div",6)(2,"header")(3,"h3"),u(4,"Context"),g(),h(5,"button",7),F("click",function(){D(n);let o=m();return M(o.close())}),u(6,"\xD7"),g()(),h(7,"div",8),u(8),w(9,fP,2,1,"span"),g(),h(10,"div",9)(11,"span"),u(12,"Context"),g(),h(13,"span"),u(14),g()(),h(15,"div",10),ce(16,"span",11),g(),h(17,"div",12)(18,"span"),u(19),g()(),h(20,"div",13)(21,"div",14)(22,"span",15),u(23,"Messages"),g(),h(24,"span",16),u(25),g()(),h(26,"div",14)(27,"span",15),u(28,"User"),g(),h(29,"span",16),u(30),g()(),h(31,"div",14)(32,"span",15),u(33,"Assistant"),g(),h(34,"span",16),u(35),g()(),h(36,"div",14)(37,"span",15),u(38,"Tool calls"),g(),h(39,"span",16),u(40),g()(),h(41,"div",14)(42,"span",15),u(43,"Cost"),g(),h(44,"span",16),u(45),g()(),h(46,"div",14)(47,"span",15),u(48,"Output limit"),g(),h(49,"span",16),u(50),g()()(),w(51,mP,34,6,"section"),h(52,"section")(53,"h4"),u(54,"Session totals"),g(),h(55,"div",17),u(56),g()()()}if(t&2){let n,i=m();d(8),ae(" ",i.modelLabel()),d(),S((n=i.sessionTitle())?9:-1,n),d(5),wo("",i.usedLabel()," / ",i.limitLabel()),d(2),At("width",i.fillPercent(),"%"),X("warn",i.level()==="warn")("danger",i.level()==="danger"),d(3),ae("",i.percentLabel()," used"),d(6),k(i.counts()?.totalMessages??"\u2014"),d(5),k(i.counts()?.userMessages??"\u2014"),d(5),k(i.counts()?.assistantMessages??"\u2014"),d(5),k(i.counts()?.toolCalls??"\u2014"),d(5),k(i.costLabel()),d(5),k(i.outputLimitLabel()),d(),S(i.lastUsage()?51:-1),d(5),k(i.sessionLine()||"No usage yet.")}}var gP=15.5,pC=2*Math.PI*gP,ou=class t{usage=te();lastUsage=te();costUsd=te();contextUsage=te();counts=te();model=te();sessionTitle=te();open=O(!1);circumference=pC;percent=E(()=>this.contextUsage()?.percent??void 0);percentLabel=E(()=>{let e=this.contextUsage()?.percent;return e==null?"\u2013":`${e.toFixed(1)}%`});level=E(()=>{let e=this.percent()??0;return e>90?"danger":e>70?"warn":"ok"});fillPercent=E(()=>Math.min(100,Math.max(0,this.percent()??0)));dashOffset=E(()=>pC*(1-this.fillPercent()/100));usedLabel=E(()=>{let e=this.contextUsage()?.tokens;return e==null?"\u2014":li(e)});limitLabel=E(()=>{let e=this.contextUsage()?.contextWindow;return e===void 0?"\u2014":li(e)});costLabel=E(()=>Oh(this.costUsd())??"\u2014");outputLimitLabel=E(()=>{let e=this.model()?.maxTokens;return e===void 0?"\u2014":li(e)});modelLabel=E(()=>this.model()?.name??this.model()?.id??"no model");tooltip=E(()=>{let e=[`Context ${this.percentLabel()} \xB7 ${this.usedLabel()} / ${this.limitLabel()}`],n=Ph({usage:this.usage(),costUsd:this.costUsd(),contextUsage:this.contextUsage()});return n.length>0&&e.push(n),e.join(`
|
|
15
15
|
`)});sessionLine=E(()=>Ph({usage:this.usage(),costUsd:this.costUsd(),contextUsage:this.contextUsage()}));cacheHitLabel=E(()=>{let e=Nh(this.lastUsage());return e===void 0?"\u2014":`${e.toFixed(1)}%`});lastValue(e){return uC(this.lastUsage(),e)}toggle(){this.open.update(e=>!e)}close(){this.open.set(!1)}static \u0275fac=function(n){return new(n||t)};static \u0275cmp=ue({type:t,selectors:[["morse-usage-indicator"]],hostBindings:function(n,i){n&1&&A("keydown.escape",function(){return i.close()},Mt)},inputs:{usage:[1,"usage"],lastUsage:[1,"lastUsage"],costUsd:[1,"costUsd"],contextUsage:[1,"contextUsage"],counts:[1,"counts"],model:[1,"model"],sessionTitle:[1,"sessionTitle"]},decls:7,vars:10,consts:[["type","button","aria-label","Context usage",1,"mini",3,"click","title"],["viewBox","0 0 36 36","aria-hidden","true",1,"ring"],["cx","18","cy","18","r","15.5",1,"track"],["cx","18","cy","18","r","15.5",1,"value"],[1,"pct"],["type","button","aria-label","Close usage",1,"scrim",3,"click"],["role","dialog","aria-label","Context usage",1,"panel"],["type","button","aria-label","Close",1,"close",3,"click"],[1,"subtitle"],[1,"bar-head"],[1,"bar"],[1,"fill"],[1,"bar-foot"],[1,"grid"],[1,"cell"],[1,"k"],[1,"v"],[1,"totals"]],template:function(n,i){n&1&&(h(0,"button",0),F("click",function(){return i.toggle()}),st(),h(1,"svg",1),ce(2,"circle",2)(3,"circle",3),g(),Jt(),h(4,"span",4),u(5),g()(),w(6,hP,57,19)),n&2&&(ie("title",i.tooltip()),J("aria-expanded",i.open()),d(),X("warn",i.level()==="warn")("danger",i.level()==="danger"),d(2),J("stroke-dasharray",i.circumference)("stroke-dashoffset",i.dashOffset()),d(2),k(i.percentLabel()),d(),S(i.open()?6:-1))},styles:["[_nghost-%COMP%]{position:relative;display:inline-flex;vertical-align:middle}.mini[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:5px;padding:2px 7px 2px 3px;border:1px solid transparent;border-radius:999px;background:transparent;color:var(--%NS%morse-fg-muted);font-size:11px;line-height:1;cursor:pointer}.mini[_ngcontent-%COMP%]:hover, .mini[aria-expanded=true][_ngcontent-%COMP%]{border-color:var(--%NS%morse-border);background:var(--%NS%morse-hover);color:var(--%NS%morse-fg)}.ring[_ngcontent-%COMP%]{width:20px;height:20px;transform:rotate(-90deg)}.track[_ngcontent-%COMP%]{fill:none;stroke:var(--%NS%morse-border);stroke-width:3.4}.value[_ngcontent-%COMP%]{fill:none;stroke:var(--%NS%morse-success);stroke-width:3.4;stroke-linecap:round;transition:stroke-dashoffset .3s ease}.ring.warn[_ngcontent-%COMP%] .value[_ngcontent-%COMP%]{stroke:var(--%NS%morse-warn)}.ring.danger[_ngcontent-%COMP%] .value[_ngcontent-%COMP%]{stroke:var(--%NS%morse-error)}.pct[_ngcontent-%COMP%]{font-family:var(--%NS%morse-font-mono);font-size:10.5px;font-variant-numeric:tabular-nums}.scrim[_ngcontent-%COMP%]{position:fixed;inset:0;z-index:30;padding:0;border:0;background:transparent;cursor:default}.scrim[_ngcontent-%COMP%]:hover, .scrim[_ngcontent-%COMP%]:active{background:transparent}.panel[_ngcontent-%COMP%]{position:absolute;z-index:31;right:0;bottom:calc(100% + 8px);width:320px;max-height:70vh;overflow-y:auto;padding:12px;border:1px solid var(--%NS%morse-border);border-radius:var(--%NS%morse-radius-md);background:var(--%NS%morse-panel, var(--%NS%morse-bg));box-shadow:0 16px 40px #00000059;color:var(--%NS%morse-fg);text-align:left}.panel[_ngcontent-%COMP%] header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;margin-bottom:2px}.panel[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{margin:0;font-size:13px;font-weight:600}.close[_ngcontent-%COMP%]{padding:0 6px;border:0;border-radius:var(--%NS%morse-radius-sm);background:transparent;color:var(--%NS%morse-fg-muted);font-size:15px;line-height:1.4;cursor:pointer}.close[_ngcontent-%COMP%]:hover{color:var(--%NS%morse-fg);background:var(--%NS%morse-active)}.subtitle[_ngcontent-%COMP%]{margin-bottom:10px;color:var(--%NS%morse-fg-muted);font-size:11px}.bar-head[_ngcontent-%COMP%], .bar-foot[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;color:var(--%NS%morse-fg-muted);font-size:11px}.bar[_ngcontent-%COMP%]{height:7px;margin:5px 0;border-radius:999px;background:var(--%NS%morse-border);overflow:hidden}.bar[_ngcontent-%COMP%] .fill[_ngcontent-%COMP%]{display:block;height:100%;border-radius:999px;background:var(--%NS%morse-success);transition:width .3s ease}.bar[_ngcontent-%COMP%] .fill.warn[_ngcontent-%COMP%]{background:var(--%NS%morse-warn)}.bar[_ngcontent-%COMP%] .fill.danger[_ngcontent-%COMP%]{background:var(--%NS%morse-error)}.grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:10px}.cell[_ngcontent-%COMP%]{padding:6px 8px;border:1px solid var(--%NS%morse-border);border-radius:var(--%NS%morse-radius-sm);background:var(--%NS%morse-input-bg, transparent)}.cell[_ngcontent-%COMP%] .k[_ngcontent-%COMP%]{display:block;color:var(--%NS%morse-fg-muted);font-size:10px;text-transform:uppercase;letter-spacing:.03em}.cell[_ngcontent-%COMP%] .v[_ngcontent-%COMP%]{display:block;margin-top:2px;font-family:var(--%NS%morse-font-mono);font-size:12px;font-variant-numeric:tabular-nums}section[_ngcontent-%COMP%]{margin-top:12px}section[_ngcontent-%COMP%] h4[_ngcontent-%COMP%]{margin:0 0 4px;color:var(--%NS%morse-fg-muted);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.03em}.totals[_ngcontent-%COMP%]{padding:7px 9px;border:1px solid var(--%NS%morse-border);border-radius:var(--%NS%morse-radius-sm);color:var(--%NS%morse-fg-muted);font-family:var(--%NS%morse-font-mono);font-size:11.5px;font-variant-numeric:tabular-nums}"]})};var yP=["promptInput"],_P=["fileInput"],Rh=(t,e)=>e.id;function vP(t,e){if(t&1){let n=$();y(0,"div",30)(1,"span",31),u(2,"\u283F"),b(),y(3,"span",32),u(4),b(),y(5,"div",33)(6,"button",34),A("click",function(){let o=D(n).$implicit,r=m(2);return M(r.editQueued(o))}),u(7," \u270E "),y(8,"span"),u(9,"edit"),b()(),y(10,"button",35),A("click",function(){let o=D(n).$implicit,r=m(2);return M(r.sendQueued(o))}),u(11," \u27A4 "),y(12,"span"),u(13,"send"),b()(),y(14,"button",36),A("click",function(){let o=D(n).$implicit,r=m(2);return M(r.removeQueued(o))}),u(15," \xD7 "),b()()()}if(t&2){let n=e.$implicit,i=e.$index;q("morseEnter",i)("morseEnterY",4),d(3),q("title",n.text),d(),k(n.text)}}function bP(t,e){if(t&1&&(y(0,"div",3)(1,"div",26)(2,"span",27),u(3,"\u23F2"),b(),y(4,"span",28),u(5,"Queued messages"),b(),y(6,"span",29),u(7),b()(),oe(8,vP,16,4,"div",30,Rh),b()),t&2){let n=m();d(7),k(n.queuedMessages().length),d(),re(n.queuedMessages())}}function xP(t,e){if(t&1){let n=$();y(0,"button",37),A("click",function(){D(n);let o=m();return M(o.attachSelection())}),u(1," \u29C9 "),b()}}function CP(t,e){t&1&&u(0," add files \xB7 @ to mention \xB7 / for commands ")}function EP(t,e){t&1&&u(0," upload or drop files \xB7 / for commands ")}function wP(t,e){t&1&&u(0," drop files here \xB7 / for commands ")}function SP(t,e){if(t&1){let n=$();y(0,"morse-file-picker",38),A("activeChange",function(o){D(n);let r=m();return M(r.mentionActive.set(o))})("pick",function(o){D(n);let r=m();return M(r.onPickFile(o))})("quote",function(o){D(n);let r=m();return M(r.onQuoteFile(o))})("reload",function(){D(n);let o=m();return M(o.reloadFiles())})("close",function(){D(n);let o=m();return M(o.onPickerClose())}),b()}if(t&2){let n=m();q("morsePopoverFit",300)("files",n.pickerMatches())("busy",n.loadingFiles())("query",n.pickerFilter())("active",n.mentionActive())}}function TP(t,e){if(t&1){let n=$();y(0,"morse-command-picker",39),A("activeChange",function(o){D(n);let r=m();return M(r.paletteActive.set(o))})("pick",function(o){D(n);let r=m();return M(r.activatePalette(o,"run"))})("close",function(){D(n);let o=m();return M(o.onPaletteClose())}),b()}if(t&2){let n=m();q("morsePopoverFit",320)("items",n.paletteItems())("query",n.paletteFilter())("active",n.paletteActive())}}function DP(t,e){if(t&1){let n=$();y(0,"li",40)(1,"button",42),A("click",function(){D(n);let o=m(2);return M(o.lockLive())}),y(2,"span",43),u(3,"\u29C9"),b(),y(4,"span",44),u(5),b(),y(6,"span",45),u(7),b()(),y(8,"button",46),A("click",function(){D(n);let o=m(2);return M(o.dismissLive())}),u(9," \xD7 "),b()()}if(t&2){let n=e,i=m(2);q("morseEnter",0)("morseEnterY",6)("morseEnterScale",.55)("morseEnterDuration",320),d(),q("title",i.lockLiveLabel()),J("aria-label","Lock the "+n.path+" selection as a pin"),d(3),q("title",n.path),d(),k(n.path),d(2),k(i.pinRange(n)),d(),J("aria-label","Dismiss the "+n.path+" selection preview")}}function MP(t,e){if(t&1){let n=$();y(0,"li",41),ve(1,"img",47),y(2,"span",44),u(3),b(),y(4,"button",48),A("click",function(){let o=D(n).$implicit,r=m(2);return M(r.removeImage(o.id))}),u(5," \xD7 "),b()()}if(t&2){let n=e.$implicit,i=e.$index,o=m(2);q("morseEnter",o.chipOffset()+i)("morseEnterY",6)("morseEnterScale",.55)("morseEnterDuration",320),d(),q("src",o.preview(n),xi)("alt",n.name),d(),q("title",n.name),d(),k(n.name),d(),J("aria-label","Remove "+n.name)}}function kP(t,e){if(t&1&&(y(0,"span",45),u(1),b()),t&2){let n=m().$implicit,i=m(2);d(),k(i.pinRange(n))}}function IP(t,e){if(t&1){let n=$();y(0,"li",41)(1,"button",42),A("click",function(){let o=D(n).$implicit,r=m(2);return M(r.openPinPreview(o))}),y(2,"span",43),u(3,"\u29C9"),b(),y(4,"span",49),u(5),b(),w(6,kP,2,1,"span",45),b(),y(7,"button",48),A("click",function(){let o=D(n).$implicit,r=m(2);return M(r.removePin(o.id))}),u(8," \xD7 "),b()()}if(t&2){let n=e.$implicit,i=e.$index,o=m(2);q("morseEnter",o.chipOffset()+o.images().length+i)("morseEnterY",6)("morseEnterScale",.55)("morseEnterDuration",320),d(),q("title","Open "+n.path+" in the preview"),d(4),k(n.path),d(),S(n.startLine!==void 0?6:-1),d(),J("aria-label","Unpin "+n.path)}}function NP(t,e){if(t&1&&(y(0,"ul",12),w(1,DP,10,10,"li",40),oe(2,MP,6,9,"li",41,Rh),oe(4,IP,9,8,"li",41,Rh),b()),t&2){let n,i=m();d(),S((n=i.livePreview())?1:-1,n),d(),re(i.images()),d(2),re(i.pins())}}function OP(t,e){if(t&1&&(y(0,"span",51),u(1),b()),t&2){let n=m(2);d(),wo(" \u2193",n.streamedTokens()," \xB7 ",n.tokensPerSecond()??0," t/s ")}}function PP(t,e){if(t&1&&(y(0,"span",53),ve(1,"span",55),y(2,"span"),u(3),b(),y(4,"span",56),ve(5,"i")(6,"i")(7,"i"),b()()),t&2){let n=m(2);d(3),ae("Working ",n.elapsed())}}function AP(t,e){if(t&1&&ve(0,"morse-usage-indicator",54),t&2){let n=m(2);q("usage",n.usageState().usage)("lastUsage",n.usageState().lastUsage)("costUsd",n.usageState().costUsd)("contextUsage",n.usageState().contextUsage)("counts",n.usageState().counts)("model",n.usageState().model)("sessionTitle",n.usageState().sessionTitle)}}function RP(t,e){if(t&1&&(y(0,"div",14)(1,"div",50),w(2,OP,2,2,"span",51),b(),y(3,"div",52),w(4,PP,8,1,"span",53),w(5,AP,1,7,"morse-usage-indicator",54),b()()),t&2){let n=m();d(2),S(n.running()?2:-1),d(2),S(n.running()?4:-1),d(),S(n.showUsage()?5:-1)}}function LP(t,e){if(t&1&&(y(0,"span",18),u(1),b()),t&2){let n=e;q("title",n),d(),k(n)}}function FP(t,e){if(t&1){let n=$();y(0,"morse-model-picker",57),A("pick",function(o){D(n);let r=m();return M(r.onModelPick(o))})("close",function(){D(n);let o=m();return M(o.closeModelPicker())}),b()}if(t&2){let n=m();q("morsePopoverFit",340)("models",n.models())("current",n.modelKey())}}function VP(t,e){if(t&1){let n=$();y(0,"button",58),A("click",function(){D(n);let o=m();return M(o.sendWith("steer"))}),u(1,"Steer"),b(),y(2,"button",58),A("click",function(){D(n);let o=m();return M(o.sendWith("followUp"))}),u(3,"Follow up"),b(),y(4,"button",59),A("click",function(){D(n);let o=m();return M(o.abort())}),u(5,"\u25A0"),b()}}function jP(t,e){if(t&1){let n=$();y(0,"button",60),A("click",function(){D(n);let o=m();return M(o.sendWith("new"))}),u(1," \u2191 "),b()}if(t&2){let n=m();q("disabled",!n.canSend())}}function $P(t,e){if(t&1){let n=$();y(0,"morse-prompt-template-dialog",61),A("submitted",function(o){D(n);let r=m();return M(r.onTemplateSubmit(o))})("cancelled",function(){D(n);let o=m();return M(o.closeTemplate())}),b()}t&2&&q("request",e)}var ru=class t{morse=N(Ze);shell=N(Ht);shortcuts=N(An);destroyRef=N(pt);attachments=N(Ui);queue=N(Hd);workspace=N(zi);tabs=N(dn);uploads=N(Ds);promptInput=Xe("promptInput");fileInput=Xe("fileInput");draining=!1;text=O("");connected=E(()=>this.morse.connection()==="ready");agentReady=this.morse.agentReady;agentStarting=this.morse.agentStarting;agentError=this.morse.agentError;streaming=E(()=>this.morse.state().streaming);canSend=E(()=>this.connected()&&!this.agentStarting()&&this.agentError()===void 0);canAttachSelection=E(()=>this.morse.capabilities()?.editorContext===!0);thinkingLevel=E(()=>this.morse.state().thinkingLevel);models=this.morse.availableModels;levels=this.morse.availableThinkingLevels;modelKey=E(()=>{let e=this.morse.state().model;return e?`${e.provider}/${e.id}`:""});usageState=this.morse.state;showUsage=E(()=>{let e=this.morse.state();return e.usage!==void 0||e.contextUsage!==void 0});showStatusRow=E(()=>this.running()||this.showUsage());streamedTokens=E(()=>Math.round(Math.max(0,Ah(this.morse.items())-this.baseline())/4));tokensPerSecond=O(void 0);baseline=O(0);throughput=[];images=this.attachments.images;pins=this.attachments.pins;queuedMessages=this.queue.queued;openPinPreview(e){this.morse.capabilities()?.filePreview&&this.tabs.openMentionFile(e.path)}livePreview=this.attachments.livePreview;chipOffset=E(()=>this.livePreview()?1:0);lockLiveLabel=E(()=>this.livePreview()?"Lock this selection \u2014 it stops following the editor; a new selection makes a new chip.":"");pickerOpen=O(!1);workspaceFiles=this.workspace.files;loadingFiles=this.workspace.busy;mentionMode=O(!1);pickerFilter=O("");pickerMatches=E(()=>lC(this.workspaceFiles(),this.pickerFilter()));mentionActive=O(0);canPickFiles=this.workspace.available;canUpload=this.uploads.available;paletteOpen=O(!1);paletteFilter=O("");paletteActive=O(0);templateRequest=O(void 0);availableCommands=this.morse.availableCommands;paletteItems=E(()=>{let e=[...fC.map(n=>({id:`builtin:${n.name}`,label:`/${n.name}`,description:n.description,badge:"built-in",icon:"\u203A"})),...this.availableCommands().map(n=>({id:`command:${n.name}`,label:`/${n.name}`,description:n.description,badge:n.source,icon:"\u2044"}))];return dC(e,this.paletteFilter())});modelPickerOpen=O(!1);currentModel=this.morse.model;currentProvider=E(()=>this.morse.model()?.provider??"");modelLabel=E(()=>{let e=this.morse.model();return e?`${e.provider} \xB7 ${e.name}`:"no model"});canAddFiles=E(()=>this.canPickFiles()||this.canUpload()||this.canAttachSelection());addFilesLabel=E(()=>this.canPickFiles()?"Add files to the prompt":this.canUpload()?"Upload files to the prompt":"Attach the active editor selection");running=E(()=>this.morse.state().streaming||this.morse.state().busy);elapsed=E(()=>{this.tick();let e=this.startedAt(),n=e===null?0:Date.now()-e;return n<1e3?"":UP(n)});startedAt=O(null);tick=O(0);constructor(){let e=this.shortcuts.bind("model.pick",()=>this.toggleModelPicker(),()=>this.models().length>0);this.destroyRef.onDestroy(e),se(()=>{if(this.attachments.mentions().length===0)return;let o=this.attachments.takeMentions().map(s=>s.startsWith("@")?s:`@${s}`).join(`
|
|
16
16
|
`);this.text.update(s=>s.trim().length===0?o:`${s.trimEnd()}
|