@arcforge/axon 1.0.23 → 1.0.24

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.
Files changed (2) hide show
  1. package/index.js +3 -3
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -804,8 +804,8 @@ ${gn}`:""}`})},se.config.performance=!1,se.config.compilerOptions.isCustomElemen
804
804
  `+b:b,D=null;try{D=JSON.parse(y),p=""}catch{if(p)try{D=JSON.parse(b),p=""}catch{p=y;continue}else{p=b;continue}}if(!D)continue;try{let I=D;if(I.type==="capsule:query:result"){let x=s.get(I.queryId);if(x)clearTimeout(x.timeoutHandle),s.delete(I.queryId),x.resolve(I.result);continue}if(I.type==="capsule:query:error"){let x=s.get(I.queryId);if(x)clearTimeout(x.timeoutHandle),s.delete(I.queryId),x.reject(Error(I.error));continue}if(I.type==="module:loaded"||I.type==="module:unloaded"){let x=u.get(I.module);if(x)clearTimeout(x.timer),u.delete(I.module),x.resolve()}if(I.type==="module:error"){let x=u.get(I.module);if(x)clearTimeout(x.timer),u.delete(I.module),x.reject(Error(I.error))}if(I.type==="proc:self")i.set(".",{procId:".",command:I.command,pid:I.pid,cwd:I.cwd,status:"running",stdout:[],stderr:[],startedAt:I.startedAt});else if(I.type==="proc:spawned")i.set(I.procId,{procId:I.procId,command:I.command,pid:I.pid,cwd:I.cwd,status:"running",stdout:[],stderr:[],startedAt:Date.now()});else if(I.type==="proc:stdout"){let x=i.get(I.procId);if(x){if(x.stdout.push(I.data),x.stdout.length>Ikt)x.stdout.shift();let k=c.get(I.procId);if(k?.size)for(let E of I.data.split(`
805
805
  `)){if(!E)continue;for(let B of k)try{B(E)}catch{}}}}else if(I.type==="proc:stderr"){let x=i.get(I.procId);if(x){if(x.stderr.push(I.data),x.stderr.length>Ikt)x.stderr.shift()}}else if(I.type==="cwd:changed"){let x=i.get(".");if(x)x.cwd=I.cwd}else if(I.type==="proc:exit"){let x=i.get(I.procId);if(x){x.status="exited",x.exitCode=I.code,x.endedAt=Date.now();let k=c.get(I.procId+":exit");if(k?.size)for(let E of k)try{E("")}catch{}}}else if(I.type==="proc:denied")i.delete(I.procId);for(let x of r)x(I)}catch{}}}),a.stderr.on("data",(g)=>{for(let f of r)try{f({type:"proc:stderr",procId:".",data:g.toString()})}catch{}});function d(g){a.stdin.write(JSON.stringify(g)+`
806
806
  `)}return{proc:a,getCwd(){return i.get(".")?.cwd??null},async command(g){let f={id:g.id??sDe(),...g};return await new Promise((b,y)=>{a.stdin.write(JSON.stringify(f)+`
807
- `,(D)=>{if(D)y(D);else b()})}),f.id},setPolicy(g){d({type:"policy:update",policy:g})},loadModule(g,f){return d({type:"module:load",modulePath:g,moduleName:f}),new Promise((b,y)=>{let D=setTimeout(()=>{if(u.delete(f))y(Error(`module:load timed out for "${f}" \u2014 subprocess did not confirm within 30s`))},30000);u.set(f,{resolve:b,reject:y,timer:D})})},unloadModule(g){return d({type:"module:unload",moduleName:g}),new Promise((f,b)=>{let y=setTimeout(()=>{if(u.delete(g))b(Error(`module:unload timed out for "${g}" \u2014 subprocess did not confirm within 5s`))},5000);u.set(g,{resolve:f,reject:b,timer:y})})},onEvent(g){return r.add(g),()=>r.delete(g)},query(g,f){return new Promise((b,y)=>{let D=sDe(),I=f?.timeout??1e4,x=setTimeout(()=>{s.delete(D),y(Error(`Capsule query timed out after ${I}ms`))},I);s.set(D,{resolve:b,reject:y,timeoutHandle:x}),d({type:"capsule:query",queryId:D,request:g})})},procManager:{_makeImpl(g){return{kill:()=>new Promise((f)=>{let b=g+":exit",y=c.get(b);if(!y)y=new Set,c.set(b,y);let D=()=>{y.delete(D),f()};y.add(D),d({type:"proc:kill",procId:g})}),sendInput:(f)=>d({type:"proc:stdin",procId:g,data:f}),subscribe:(f,b)=>{let y=c.get(f);if(!y)y=new Set,c.set(f,y);return y.add(b),()=>y.delete(b)}}},spawn(g,f){let b=sDe();d({type:"proc:spawn",procId:b,command:g,cwd:f?.cwd});let y={procId:b,command:g,status:"running",stdout:[],stderr:[],startedAt:Date.now()};return i.set(b,y),lS(y,this._makeImpl(b))},get(g){let f=i.get(g);if(!f)return;return lS(f,this._makeImpl(g))},list(){return Array.from(i.values()).map((g)=>lS(g,this._makeImpl(g.procId)))},queryAll(g={}){return Array.from(i.values()).map((f)=>Rae(f.procId,f.stdout,f.stderr,g))},sendInput(g,f){d({type:"proc:stdin",procId:g,data:f})}}}}import{randomUUID as w5a}from"crypto";import{existsSync as k5a}from"fs";import{join as uU}from"path";import{homedir as ADe}from"os";import{existsSync as cU,mkdirSync as a5a,writeFileSync as r5a,readFileSync as i5a}from"fs";import{join as cDe}from"path";import{spawn as Skt}from"child_process";var mj="https://axon.arclabs.it/api/capsuleer/modules",Rur=`${mj}/publish`;function Tkt(){let e=process.env.HOME;if(!e)throw Error("HOME environment variable not set");return cDe(e,".capsuleer","installed.json")}function Oae(){let e=Tkt();if(!cU(e))return[];try{return JSON.parse(i5a(e,"utf-8"))}catch{return[]}}function Fkt(e){let t=Tkt(),n=cDe(t,"..");if(!cU(n))a5a(n,{recursive:!0});r5a(t,JSON.stringify(e,null,2)+`
808
- `)}var MB={list(){return Oae()},get(e){return Oae().find((t)=>t.id===e)},add(e){let t=Oae().filter((n)=>n.id!==e.id);t.push({...e,manifest:e.manifest??[],installedAt:Date.now()}),Fkt(t)},remove(e){Fkt(Oae().filter((t)=>t.id!==e))}};function uDe(){return cDe(process.env.HOME,".capsuleer","environment")}function Nkt(e,t){return new Promise((n,a)=>{let r=Skt("bun",["add",e],{cwd:t,stdio:"pipe"}),i="";r.stderr?.on("data",(s)=>{i+=s.toString()}),r.on("close",(s)=>s===0?n():a(Error(i.trim()||`bun add failed with code ${s}`))),r.on("error",a)})}function o5a(e,t){return new Promise((n,a)=>{let r=Skt("bun",["remove",e],{cwd:t,stdio:"pipe"}),i="";r.stderr?.on("data",(s)=>{i+=s.toString()}),r.on("close",(s)=>s===0?n():a(Error(i.trim()||`bun remove failed with code ${s}`))),r.on("error",a)})}async function Lkt(e){let t=e?`${mj}?q=${encodeURIComponent(e)}`:mj,n=await fetch(t);if(!n.ok)throw Error(`Registry error: ${n.status} ${n.statusText}`);return n.json()}async function Gae(e){let t=uDe();if(!cU(t))throw Error("Environment not installed. Run: capsuleer env:install");let n=await fetch(`${mj}/${e}?track=true`);if(n.status===404)throw Error(`Module "${e}" not found in registry`);if(!n.ok)throw Error(`Registry error: ${n.status} ${n.statusText}`);let a=await n.json(),r=MB.get(a.id);if(r&&r.version===a.version)return{mod:a,alreadyInstalled:!0,upgraded:!1};let i=!!r;return await Nkt(a.npm_package,t),MB.add({id:a.id,version:a.version,npm_package:a.npm_package,manifest:a.manifest??[],scope:a.scope}),{mod:a,alreadyInstalled:!1,upgraded:i}}async function Uae(e){let t=uDe();if(!cU(t))throw Error("Environment not installed. Run: capsuleer env:install");let n=MB.get(e);if(!n)throw Error(`"${e}" is not installed`);return await o5a(n.npm_package,t),MB.remove(e),n}async function jkt(e=!0){let t=MB.list(),n={};if(e)try{let a=await fetch(mj);if(a.ok){let r=await a.json();for(let i of r)n[i.id]=i.version}}catch{}return t.map((a)=>{let r=n[a.id];return{...a,latest:r,outdated:!!r&&r!==a.version}})}async function zae(e){let t=uDe();if(!cU(t))throw Error("Environment not installed. Run: capsuleer env:install");let n=e?[MB.get(e)].filter((r)=>!!r):MB.list();if(e&&n.length===0)throw Error(`"${e}" is not installed`);let a=[];for(let r of n)try{let i=await fetch(`${mj}/${r.id}`);if(!i.ok)throw Error(`registry returned ${i.status} ${i.statusText}`);let s=await i.json();if(s.version===r.version){a.push({id:r.id,from:r.version,to:r.version,ok:!0});continue}await Nkt(s.npm_package,t),MB.add({id:s.id,version:s.version,npm_package:s.npm_package,manifest:s.manifest??[]}),a.push({id:r.id,from:r.version,to:s.version,ok:!0})}catch(i){a.push({id:r.id,from:r.version,to:r.version,ok:!1,error:i.message})}return a}var C5a=uU(ADe(),".capsuleer","environment","index.ts");async function t1t(e,t={}){let n="boot"in e&&typeof e.boot==="function"?e:Ekt(e),a={sessionName:n.name,started:!1},r=w5a();function i(A){if(!t.on?.event)return;try{t.on.event({...A,capsuleSessionId:r,time:Date.now()})}catch{}}let s;if(n.inproc){let{inproctime:A}=await Promise.resolve().then(() => (e1t(),Xkt));s=await A({policy:n.policy})}else{let A=n.entrypoint??C5a;if(!k5a(A))throw Error(`Capsuleer environment not installed. Run: capsuleer env:install
807
+ `,(D)=>{if(D)y(D);else b()})}),f.id},setPolicy(g){d({type:"policy:update",policy:g})},loadModule(g,f){return d({type:"module:load",modulePath:g,moduleName:f}),new Promise((b,y)=>{let D=setTimeout(()=>{if(u.delete(f))y(Error(`module:load timed out for "${f}" \u2014 subprocess did not confirm within 30s`))},30000);u.set(f,{resolve:b,reject:y,timer:D})})},unloadModule(g){return d({type:"module:unload",moduleName:g}),new Promise((f,b)=>{let y=setTimeout(()=>{if(u.delete(g))b(Error(`module:unload timed out for "${g}" \u2014 subprocess did not confirm within 5s`))},5000);u.set(g,{resolve:f,reject:b,timer:y})})},onEvent(g){return r.add(g),()=>r.delete(g)},query(g,f){return new Promise((b,y)=>{let D=sDe(),I=f?.timeout??1e4,x=setTimeout(()=>{s.delete(D),y(Error(`Capsule query timed out after ${I}ms`))},I);s.set(D,{resolve:b,reject:y,timeoutHandle:x}),d({type:"capsule:query",queryId:D,request:g})})},procManager:{_makeImpl(g){return{kill:()=>new Promise((f)=>{let b=g+":exit",y=c.get(b);if(!y)y=new Set,c.set(b,y);let D=()=>{y.delete(D),f()};y.add(D),d({type:"proc:kill",procId:g})}),sendInput:(f)=>d({type:"proc:stdin",procId:g,data:f}),subscribe:(f,b)=>{let y=c.get(f);if(!y)y=new Set,c.set(f,y);return y.add(b),()=>y.delete(b)}}},spawn(g,f){let b=sDe();d({type:"proc:spawn",procId:b,command:g,cwd:f?.cwd});let y={procId:b,command:g,status:"running",stdout:[],stderr:[],startedAt:Date.now()};return i.set(b,y),lS(y,this._makeImpl(b))},get(g){let f=i.get(g);if(!f)return;return lS(f,this._makeImpl(g))},list(){return Array.from(i.values()).map((g)=>lS(g,this._makeImpl(g.procId)))},queryAll(g={}){return Array.from(i.values()).map((f)=>Rae(f.procId,f.stdout,f.stderr,g))},sendInput(g,f){d({type:"proc:stdin",procId:g,data:f})}}}}import{randomUUID as w5a}from"crypto";import{existsSync as k5a}from"fs";import{join as uU}from"path";import{homedir as ADe}from"os";import{existsSync as cU,mkdirSync as a5a,writeFileSync as r5a,readFileSync as i5a}from"fs";import{join as cDe}from"path";import{spawn as Skt}from"child_process";var mj="https://axon.arclabs.it/api/capsuleer/modules",Rur=`${mj}/publish`;function Tkt(){let e=process.env.HOME??process.env.USERPROFILE;if(!e)throw Error("HOME environment variable not set");return cDe(e,".capsuleer","installed.json")}function Oae(){let e=Tkt();if(!cU(e))return[];try{return JSON.parse(i5a(e,"utf-8"))}catch{return[]}}function Fkt(e){let t=Tkt(),n=cDe(t,"..");if(!cU(n))a5a(n,{recursive:!0});r5a(t,JSON.stringify(e,null,2)+`
808
+ `)}var MB={list(){return Oae()},get(e){return Oae().find((t)=>t.id===e)},add(e){let t=Oae().filter((n)=>n.id!==e.id);t.push({...e,manifest:e.manifest??[],installedAt:Date.now()}),Fkt(t)},remove(e){Fkt(Oae().filter((t)=>t.id!==e))}};function uDe(){return cDe(process.env.HOME??process.env.USERPROFILE,".capsuleer","environment")}function Nkt(e,t){return new Promise((n,a)=>{let r=Skt("bun",["add",e],{cwd:t,stdio:"pipe"}),i="";r.stderr?.on("data",(s)=>{i+=s.toString()}),r.on("close",(s)=>s===0?n():a(Error(i.trim()||`bun add failed with code ${s}`))),r.on("error",a)})}function o5a(e,t){return new Promise((n,a)=>{let r=Skt("bun",["remove",e],{cwd:t,stdio:"pipe"}),i="";r.stderr?.on("data",(s)=>{i+=s.toString()}),r.on("close",(s)=>s===0?n():a(Error(i.trim()||`bun remove failed with code ${s}`))),r.on("error",a)})}async function Lkt(e){let t=e?`${mj}?q=${encodeURIComponent(e)}`:mj,n=await fetch(t);if(!n.ok)throw Error(`Registry error: ${n.status} ${n.statusText}`);return n.json()}async function Gae(e){let t=uDe();if(!cU(t))throw Error("Environment not installed. Run: capsuleer env:install");let n=await fetch(`${mj}/${e}?track=true`);if(n.status===404)throw Error(`Module "${e}" not found in registry`);if(!n.ok)throw Error(`Registry error: ${n.status} ${n.statusText}`);let a=await n.json(),r=MB.get(a.id);if(r&&r.version===a.version)return{mod:a,alreadyInstalled:!0,upgraded:!1};let i=!!r;return await Nkt(a.npm_package,t),MB.add({id:a.id,version:a.version,npm_package:a.npm_package,manifest:a.manifest??[],scope:a.scope}),{mod:a,alreadyInstalled:!1,upgraded:i}}async function Uae(e){let t=uDe();if(!cU(t))throw Error("Environment not installed. Run: capsuleer env:install");let n=MB.get(e);if(!n)throw Error(`"${e}" is not installed`);return await o5a(n.npm_package,t),MB.remove(e),n}async function jkt(e=!0){let t=MB.list(),n={};if(e)try{let a=await fetch(mj);if(a.ok){let r=await a.json();for(let i of r)n[i.id]=i.version}}catch{}return t.map((a)=>{let r=n[a.id];return{...a,latest:r,outdated:!!r&&r!==a.version}})}async function zae(e){let t=uDe();if(!cU(t))throw Error("Environment not installed. Run: capsuleer env:install");let n=e?[MB.get(e)].filter((r)=>!!r):MB.list();if(e&&n.length===0)throw Error(`"${e}" is not installed`);let a=[];for(let r of n)try{let i=await fetch(`${mj}/${r.id}`);if(!i.ok)throw Error(`registry returned ${i.status} ${i.statusText}`);let s=await i.json();if(s.version===r.version){a.push({id:r.id,from:r.version,to:r.version,ok:!0});continue}await Nkt(s.npm_package,t),MB.add({id:s.id,version:s.version,npm_package:s.npm_package,manifest:s.manifest??[]}),a.push({id:r.id,from:r.version,to:s.version,ok:!0})}catch(i){a.push({id:r.id,from:r.version,to:r.version,ok:!1,error:i.message})}return a}var C5a=uU(ADe(),".capsuleer","environment","index.ts");async function t1t(e,t={}){let n="boot"in e&&typeof e.boot==="function"?e:Ekt(e),a={sessionName:n.name,started:!1},r=w5a();function i(A){if(!t.on?.event)return;try{t.on.event({...A,capsuleSessionId:r,time:Date.now()})}catch{}}let s;if(n.inproc){let{inproctime:A}=await Promise.resolve().then(() => (e1t(),Xkt));s=await A({policy:n.policy})}else{let A=n.entrypoint??C5a;if(!k5a(A))throw Error(`Capsuleer environment not installed. Run: capsuleer env:install
809
809
  Expected: ${A}`);s=await Qkt({entrypoint:n.entrypoint,maxMemoryMb:n.policy?.resources?.maxMemoryMb,env:{...n.env,...n.policy?{CAPSULEER_POLICY:JSON.stringify(n.policy)}:{}}})}let c=new Map;s.onEvent((A)=>{let p=A,d=p.id,g=d?c.get(d):void 0;i(g?{...p,...g}:p)});let u={blueprint:n,capsuleSessionId:r,async boot(){if(a.started)return;a.started=!0,i({type:"capsule:boot",name:n.name,inproc:n.inproc??!1})},command:s.command,onEvent:s.onEvent,subprocess:s.proc,async query(A,p,d){let g=Date.now();i({type:"capsule:query",kind:A.kind,correlationId:d?.correlationId,parentId:d?.parentId});try{let f=await s.query(A,p);return i({type:"capsule:query:complete",kind:A.kind,durationMs:Date.now()-g,correlationId:d?.correlationId,parentId:d?.parentId}),f}catch(f){throw i({type:"capsule:query:error",kind:A.kind,error:f instanceof Error?f.message:String(f),durationMs:Date.now()-g,correlationId:d?.correlationId,parentId:d?.parentId}),f}},proc:{...s.procManager,spawn(A,p,d){return i({type:"capsule:proc:spawn",command:A,cwd:p?.cwd,correlationId:d?.correlationId,parentId:d?.parentId}),s.procManager.spawn(A,p)}},async run(A,p,d){let g=p?.type??"ts",f=await s.command({type:g,code:A}),b=p?.timeout??35000,y=Date.now();if(d?.correlationId||d?.parentId)c.set(f,{correlationId:d.correlationId,parentId:d.parentId});return i({type:"capsule:run",commandId:f,codeType:g,correlationId:d?.correlationId,parentId:d?.parentId}),new Promise((D,I)=>{let x=setTimeout(()=>{k(),c.delete(f),i({type:"capsule:run:timeout",commandId:f,durationMs:Date.now()-y,correlationId:d?.correlationId,parentId:d?.parentId}),I(Error(`capsule.run timed out after ${b}ms. For long-running processes use capsule.proc.spawn()`))},b),k=s.onEvent((E)=>{if(!("id"in E)||E.id!==f)return;if(E.type==="exit")clearTimeout(x),k(),c.delete(f),i({type:"capsule:run:complete",commandId:f,ok:!0,durationMs:Date.now()-y,correlationId:d?.correlationId,parentId:d?.parentId}),D(E.result);else if(E.type==="error")clearTimeout(x),k(),c.delete(f),i({type:"capsule:run:complete",commandId:f,ok:!1,error:E.error,durationMs:Date.now()-y,correlationId:d?.correlationId,parentId:d?.parentId}),I(Error(E.error))})})},policy:{set(A){s.setPolicy(A)}},modules:{search:Lkt,list(A){return jkt(A)},async install(A){let p=uU(ADe(),".capsuleer","environment"),{mod:d}=await Gae(A),g=uU(p,"node_modules","@capsuleer",d.id,"index.ts");return await s.loadModule(g,d.id),d},async remove(A){await s.unloadModule(A),await Uae(A)},async upgrade(A){let p=uU(ADe(),".capsuleer","environment"),d=await zae(A);for(let g of d){if(!g.ok||g.from===g.to)continue;let f=uU(p,"node_modules","@capsuleer",g.id,"index.ts");try{await s.loadModule(f,g.id)}catch(b){g.ok=!1,g.error=`hot-load failed: ${b.message}`}}return d}},async shutdown(){if(!a.started)return;if(a.started=!1,i({type:"capsule:shutdown",name:n.name}),!s.proc)return;let A=new Promise((p)=>s.proc.once("exit",p));s.proc.kill("SIGTERM"),await Promise.race([A,new Promise((p)=>setTimeout(p,3000))]);try{s.proc.kill("SIGKILL")}catch{}}};return await u.boot(),u}import{homedir as x5a}from"os";import{join as v5a}from"path";var B5a=v5a(x5a(),".capsuleer","environment","index.ts");function E5a(e){return{run:(t,n)=>e.run(t,n),query:(t,n)=>e.query(t,n),onEvent:(t)=>e.onEvent(t),proc:{spawn(t,n){return e.proc.spawn(t,n).procId},kill(t){e.proc.get(t)?.kill()},sendInput(t,n){e.proc.sendInput(t,n)}},modules:{install:(t)=>e.modules.install(t),remove:(t)=>e.modules.remove(t)}}}function pDe(e){return{get procId(){return e.procId},get command(){return e.command},get status(){return e.status},get pid(){return e.pid},get exitCode(){return e.exitCode},read(t){return e.read(t)},tail(t,n){return e.tail(t,n)},query(t){let n=e.query(t?{search:typeof t.match==="string"?t.match:void 0}:{});return{lines:n.lines,stdout:n.lines,stderr:[]}},on(t,n){return e.on(t,n)},watch(t){return e.watch(t)},sendInput(t){e.sendInput(t)},kill(){return e.kill()}}}function n1t(e,t,n){let a=wt.ref("idle"),r=wt.ref([]),i=wt.ref([]),s=null,c=null;function u(p){if(r.value.push(p),r.value.length>200)r.value.shift()}(async()=>{try{let d=await t1t({name:"axon-agent",entrypoint:e&&e!=="default"?e:B5a,policy:t});s=d,d.onEvent((f)=>{if(u(f),f.type==="policy:escalation")n?.(f);if(f.type==="proc:spawned"&&"procId"in f){let b=d.proc.get(f.procId);if(b)i.value.push(pDe(b))}if(f.type==="proc:exit"&&"procId"in f)i.value=i.value.filter((b)=>b.procId!==f.procId)});let g=d.proc.get(".");if(g)c=pDe(g);a.value="booted"}catch(p){console.error("[capsule-runtime] boot failed:",p),a.value="error"}})();let A={procId:".",command:e,status:"running",pid:void 0,exitCode:void 0,read:()=>"",tail:()=>"",query:()=>({lines:[],stdout:[],stderr:[]}),on:()=>()=>{},async*watch(){},sendInput:()=>{},kill:async()=>{}};return{status:a,events:r,get main(){return c??A},procs:i,proc(p){if(p===".")return c??A;return i.value.find((d)=>d.procId===p)},async run(p,d="ts"){if(!s||a.value!=="booted")throw Error("Capsule not booted");await s.run(p,{type:d})},spawn(p,d){if(!s||a.value!=="booted")throw Error("Capsule not booted");let g=s.proc.spawn(p,d),f=pDe(g);return i.value.push(f),f},async query(p){if(!s||a.value!=="booted")return{kind:String(p.kind??""),items:[],durationMs:0};return s.query(p)},async teardown(){if(s)await s.shutdown(),s=null;i.value=[],r.value=[],c=null,a.value="idle"},asWs2Instance(){if(!s)throw Error("Capsule not booted");return E5a(s)},respondEscalation(p,d){if(!s)return;s.command({id:p,type:"policy:response",allow:d})},setPolicy(p){if(!s)return;s.policy.set(p)},modules:{install(p){if(!s)return Promise.reject(Error("Capsule not booted"));return s.modules.install(p)},remove(p){if(!s)return Promise.reject(Error("Capsule not booted"));return s.modules.remove(p)}}}}import mw from"fs";var D5a=600000,a1t={fs:{read:!0,write:!0,delete:"escalate",list:!0,find:!0,grep:!0,mkdir:!0,cd:!0},shell:!1,network:{fetch:!0},proc:"escalate",resources:{maxMemoryMb:512,maxCommandTimeMs:30000}};function r1t(e){let{config:t,auth:n,accessToken:a,store:r,capsuleService:i,capsuleerSetup:s,pathsFn:c=GA,voiceFactory:u,capsuleFactory:A=n1t,refreshUser:p,emit:d}=e,g=wt.ref("offline"),f=wt.ref(null),b=wt.ref(!1),y=wt.ref(null),D=wt.shallowRef(null),I=wt.shallowRef(null),x=wt.shallowRef(null),k=wt.ref(null),E=wt.ref(0),B=wt.ref(null),Q=wt.ref([]),T=wt.ref([]),N=wt.ref(null),j=null;function R(){return n.value?.id??null}function $(nt){if(!nt.id||nt.time?.ms==null){console.warn("[handle] dropping malformed entry \u2014 missing id or time:",nt.type,JSON.stringify(nt).slice(0,200));return}let kt=Q.value,rt=kt.findIndex((Jt)=>Jt.id===nt.id);if(rt!==-1){let Jt=[...kt];Jt[rt]=nt,Q.value=Jt,console.log(`[handle] upsert replace id=${nt.id} type=${nt.type} total=${Jt.length}`)}else Q.value=[...kt,nt],console.log(`[handle] upsert push id=${nt.id} type=${nt.type} total=${Q.value.length}`)}function H(nt){if(g.value=nt,nt==="connected")K();else Z()}function K(){Z(),j=setTimeout(()=>{if(g.value==="connected"&&!b.value)H("idle")},D5a)}function Z(){if(j!==null)clearTimeout(j),j=null}let V={initialDelayMs:2000,maxDelayMs:30000,maxAttempts:8},re=wt.ref(0),ke={get attempt(){return re.value},set attempt(nt){re.value=nt},nextDelayMs:V.initialDelayMs,timer:null};function je(){return V}function Ye(){let nt=je();ke.attempt=0,ke.nextDelayMs=nt.initialDelayMs,ve()}function Ve(){if(ke.timer)clearTimeout(ke.timer),ke.timer=null;ke.attempt=0,ke.nextDelayMs=je().initialDelayMs}function ve(){let nt=je();if(ke.attempt>=nt.maxAttempts){Ve(),H("offline");return}ke.attempt++,H("reconnecting"),ke.timer=setTimeout(async()=>{if(g.value!=="reconnecting")return;try{await Fn.connect(!0)}catch(kt){ke.nextDelayMs=Math.min(ke.nextDelayMs*2,nt.maxDelayMs),ve()}},ke.nextDelayMs)}function Pe(){if(g.value==="online"||g.value==="connected")Ye()}function we(){T.value=sU(t.name,t.userOwned,R(),c)}function He(nt){let kt=R(),rt=rDe(nt,t.name,t.userOwned,kt,c);B.value=nt,Q.value=rt}async function tt(nt){if(D.value)await D.value.request("/api/session:load",{events:nt})}function De(){if(!x.value){let nt=R();if(!nt)return null;x.value=u(t.name,nt,a)}return x.value}let se={id:wt.computed(()=>B.value),messages:wt.computed(()=>Q.value),list:wt.computed(()=>T.value),async new(){if(b.value)Fn.abort();let nt=R(),kt=aDe(t.name,t.userOwned,nt,c);if(we(),He(kt.id),D.value)await tt([])},async switch(nt){if(b.value)Fn.abort();if(!T.value.find((rt)=>rt.id===nt))throw es("SESSION_NOT_FOUND",`Session ${nt} not found`,"agents");if(He(nt),D.value)await tt(Q.value)},async remove(nt){let kt=R();if(Akt(nt,t.name,t.userOwned,kt,c),we(),B.value===nt)if(T.value.length>0)await se.switch(T.value[0].id);else await se.new()},async branch(nt){if(!B.value)return;let kt=R(),rt=lkt(B.value,t.name,t.userOwned,kt,c,nt);if(we(),He(rt.id),D.value)await tt(Q.value)}},me={status:wt.computed(()=>I.value?.status.value??"idle"),events:wt.computed(()=>I.value?.events.value??[]),get main(){return I.value?.main??null},procs:wt.computed(()=>I.value?.procs.value??[]),proc(nt){return I.value?.proc(nt)},async run(nt,kt){if(!I.value)throw es("CAPSULE_NOT_BOOTED","Capsule not available","agents");return I.value.run(nt,kt)},spawn(nt,kt){if(!I.value)throw es("CAPSULE_NOT_BOOTED","Capsule not available","agents");return I.value.spawn(nt,kt)},async query(nt){if(!I.value)return{kind:String(nt.kind??""),items:[],durationMs:0};return I.value.query(nt)},modules:{install(nt){if(!I.value)throw es("CAPSULE_NOT_BOOTED","Capsule not available","agents");return I.value.modules.install(nt)},remove(nt){if(!I.value)throw es("CAPSULE_NOT_BOOTED","Capsule not available","agents");return I.value.modules.remove(nt)}}},de={async get(){let nt=R();if(!nt)return structuredClone(a1t);let kt=c(nt).policy;try{let rt=mw.readFileSync(kt,"utf-8");return JSON.parse(rt)}catch{return structuredClone(a1t)}},async set(nt){let kt=R();if(!kt)return;let rt=c(kt);mw.mkdirSync(rt.root,{recursive:!0}),mw.writeFileSync(rt.policy,JSON.stringify(nt,null,2)),I.value?.setPolicy(nt)},async update(nt){let kt=await de.get();await de.set({...kt,...nt})}},at={async get(nt,kt){if(!t.userOwned)return null;let rt=R();if(!rt)return null;let Jt=c(rt).agents.store(t.name,nt,kt);try{return JSON.parse(mw.readFileSync(Jt,"utf-8"))}catch{return null}},async set(nt,kt,rt){if(!t.userOwned)return;let Jt=R();if(!Jt)return;let gn=c(Jt),he=gn.agents.store(t.name,nt,kt),_e=gn.agents.storeDir(t.name,nt);mw.mkdirSync(_e,{recursive:!0}),mw.writeFileSync(he,JSON.stringify(rt,null,2))},async query(nt,kt){if(!t.userOwned)return[];let rt=R();if(!rt)return[];let Jt=c(rt).agents.storeDir(t.name,nt);try{let he=mw.readdirSync(Jt).filter((_e)=>_e.endsWith(".json")).map((_e)=>{try{return JSON.parse(mw.readFileSync(`${Jt}/${_e}`,"utf-8"))}catch{return null}}).filter((_e)=>_e!==null);return kt?he.filter(kt):he}catch{return[]}},async remove(nt,kt){if(!t.userOwned)return;let rt=R();if(!rt)return;let Jt=c(rt).agents.store(t.name,nt,kt);try{mw.unlinkSync(Jt)}catch{}},async clear(nt){if(!t.userOwned)return;let kt=R();if(!kt)return;let rt=c(kt);if(nt){let Jt=rt.agents.storeDir(t.name,nt);try{mw.rmSync(Jt,{recursive:!0,force:!0})}catch{}}else{let Jt=`${rt.agents.agent(t.name)}/store`;try{mw.rmSync(Jt,{recursive:!0,force:!0})}catch{}}}};wt.watch(n,(nt)=>{if(nt&&!x.value)x.value=u(t.name,nt.id,a)},{immediate:!0});let Je=wt.ref([]),_n=wt.ref(!1),Le=wt.ref(""),Ke=wt.ref("idle"),Ot=wt.ref(null),nn=wt.ref(null),zt=wt.ref(null),lt=wt.ref([]);wt.watch(x,(nt)=>{if(!nt){Je.value=[],_n.value=!1,Le.value="",Ke.value="idle",Ot.value=null,nn.value=null,zt.value=null,lt.value=[];return}wt.watch(nt.bars,(kt)=>{Je.value=kt},{immediate:!0}),wt.watch(nt.mic.isActive,(kt)=>{_n.value=kt},{immediate:!0}),wt.watch(nt.braille,(kt)=>{Le.value=kt},{immediate:!0}),wt.watch(nt.stt.status,(kt)=>{Ke.value=kt},{immediate:!0}),wt.watch(nt.stt.result,(kt)=>{Ot.value=kt,zt.value=kt?.text??null},{immediate:!0}),wt.watch(nt.stt.error,(kt)=>{nn.value=kt},{immediate:!0}),wt.watch(nt.history.list,(kt)=>{lt.value=kt},{immediate:!0})},{immediate:!0});let en={isActive:_n,bars:Je,braille:Le,mic:{async on(){let nt=De();if(!nt)throw Error("voice requires authenticated user");return nt.mic.on()},async stop(){return De()?.mic.stop()},async cancel(){return De()?.mic.cancel()}},stt:{status:Ke,result:Ot,transcript:zt,error:nn,reset(){De()?.stt.reset(),nn.value=null}},history:{list:lt,get(nt){let kt=De();if(!kt)return Promise.reject(Error("voice requires authenticated user"));return kt.history.get(nt)},remove(nt){return De()?.history.remove(nt)??Promise.resolve()},clear(){return De()?.history.clear()??Promise.resolve()}}},Fn={config:t,status:wt.computed(()=>g.value),error:f,isStreaming:b,connectedAt:k,eventCount:E,reconnectAttempt:re,async connect(nt=!1){if(console.log(`[handle:connect] called fromReconnect=${nt} status=${g.value} auth=${!!n.value} token=${a.value?a.value.slice(0,20)+"...":"null"}`),!n.value)throw es("AUTH_REQUIRED","Not authenticated","agents",{recoverable:!0});if(g.value==="reconnecting"&&!nt)return;try{if(s&&!s.isInstalled())H("booting");if(console.log("[handle:connect] step: capsuleerSetup.ensure"),s)await s.ensure();if(console.log("[handle:connect] step: capsule boot, hasCapule=",!!I.value),!I.value){let rt=t.capsuleBlueprint??"default",Jt=await de.get();I.value=A(rt,Jt,(gn)=>{console.log("[handle] escalation from LOCAL capsule:",JSON.stringify(gn)),N.value=gn}),H("booting")}console.log("[handle:connect] step: waiting for capsule, status=",I.value.status.value);let kt=0;while(I.value.status.value!=="booted")if(await new Promise((rt)=>setTimeout(rt,50)),kt++,kt>100)throw es("CAPSULE_BOOT_TIMEOUT","Capsule failed to boot within 5 seconds","agents",{recoverable:!0});if(console.log("[handle:connect] step: create transport, endpoint=",t.model.endpoint),!D.value)D.value=Bkt(t.model.endpoint,()=>a.value,()=>I.value,()=>r.credentials.get(),()=>t.provider,(rt)=>{if(rt==="offline")Pe()},(rt)=>{console.log("[handle] escalation from TRANSPORT (server):",JSON.stringify(rt)),N.value=rt},d);H("connecting"),await D.value.connect(),we(),await se.new(),k.value=Date.now(),E.value=0,Ve(),H("online"),d?.({type:"axon:agent:connect",agent:t.name,endpoint:t.model.endpoint,sessionId:B.value})}catch(kt){console.error("[handle:connect] FAILED:",kt instanceof Error?kt.message:String(kt),kt);let rt=es("CONNECT_FAILED",kt instanceof Error?kt.message:String(kt),"agents",{recoverable:!0});if(f.value=rt,d?.({type:"axon:error",code:rt.code,message:rt.message,agent:t.name,context:"connect"}),s?.status.value==="error")throw H("offline"),kt;if(k.value!==null)Ye();else H("error");throw kt}},async disconnect(){if(Z(),Ve(),b.value=!1,y.value)y.value.abort(),y.value=null;if(D.value)D.value.disconnect(),D.value=null;if(I.value)await I.value.teardown(),I.value=null;k.value=null,B.value=null,Q.value=[],T.value=[],H("offline"),d?.({type:"axon:agent:disconnect",agent:t.name})},abort(){if(y.value)y.value.abort(),d?.({type:"axon:agent:pathway:abort",agent:t.name,sessionId:B.value})},async pathway(nt,kt,rt){if(!n.value)throw es("AUTH_REQUIRED","Not authenticated","agents",{recoverable:!0});let Jt=t.provider==="axon"||t.provider===void 0;if(!t.userOwned&&Jt&&n.value.psi<=0)throw es("INSUFFICIENT_CREDITS","Insufficient credits (psi)","agents",{recoverable:!1});if(!D.value)throw es("NOT_CONNECTED","Not connected","agents",{recoverable:!0});if(b.value)throw es("ALREADY_STREAMING","A stream is already active","agents",{recoverable:!1});b.value=!0,y.value=new AbortController;let gn=Date.now();if(d?.({type:"axon:agent:pathway:start",agent:t.name,pathway:nt,sessionId:B.value}),rt&&kt?.data?.text){let he={id:rt,time:{ms:Date.now(),seq:0},threadId:B.value??"",type:"user:message",payload:{content:kt.data.text}};$(he)}try{K();let he=n.value.id,_e=B.value;for await(let fe of D.value.pathway(nt,kt,y.value.signal)){let Ne=fe;$(Ne),E.value++,oU(_e,t.name,t.userOwned,he,c,Ne)}if(y.value?.signal.aborted){let fe={id:crypto.randomUUID(),type:"agent:interrupt",threadId:B.value,time:{ms:Date.now(),seq:Q.value.length},payload:{reason:"user"}};if(Q.value.push(fe),n.value)oU(B.value,t.name,t.userOwned,n.value.id,c,fe)}}catch(he){if(y.value?.signal.aborted){let _e={id:crypto.randomUUID(),type:"agent:interrupt",threadId:B.value,time:{ms:Date.now(),seq:Q.value.length},payload:{reason:"user"}};if(Q.value.push(_e),n.value)oU(B.value,t.name,t.userOwned,n.value.id,c,_e)}else{if(he&&typeof he==="object"&&"code"in he){let _e=he;f.value=_e,d?.({type:"axon:error",code:_e.code,message:_e.message,agent:t.name,context:"pathway",pathway:nt,sessionId:B.value})}throw he}}finally{b.value=!1,y.value=null,d?.({type:"axon:agent:pathway:end",agent:t.name,pathway:nt,sessionId:B.value,durationMs:Date.now()-gn}),p?.().catch(()=>{})}},async request(nt,kt){if(!n.value)throw es("AUTH_REQUIRED","Not authenticated","agents",{recoverable:!0});if(!D.value)throw es("NOT_CONNECTED","Not connected","agents",{recoverable:!0});return D.value.request(nt,kt)},escalation:{pending:wt.computed(()=>N.value),respond(nt){if(!N.value)return;let kt=N.value.id;console.log("[handle] escalation.respond id=",kt,"allow=",nt,"hasCapsule=",!!I.value,"hasTransport=",!!D.value),I.value?.respondEscalation(kt,nt),N.value=null},simulate(nt){N.value=nt}},session:se,capsule:me,policy:de,store:at,voice:en};return Fn}var i1t=!1,o1t=Nae.devAgents;function s1t(e){let{store:t,auth:n,accessToken:a,registry:r,modelRegistry:i,capsuleService:s,capsuleerSetup:c,ollamaRegistry:u,pathsFn:A=GA,voiceFactory:p,prefs:d,refreshUser:g,emit:f}=e,b=new Map,y=wt.ref(null),D=wt.computed(()=>{let j=i.list.value.map((H)=>{let Z=r.list.value.find((V)=>V.id===H.harness_id)?.url??"";return{name:H.name,description:H.description,model:{id:H.id,endpoint:Z,pathway:"api/chat",modelId:H.model_id},userOwned:!1,provider:H.provider,tags:H.tags}}).filter((H)=>H.model.endpoint!==""),R=r.list.value.find((H)=>H.id==="helios")?.url??"",$=(u?.models.value??[]).filter(()=>R!=="").map((H)=>({...H,model:{...H.model,endpoint:R}}));return[...j,...$]}),I=wt.computed(()=>t.agents.list()),x=wt.computed(()=>i1t?o1t:[]),k=wt.computed(()=>D.value.map((j)=>({...j,name:j.name+" (dev)",model:{...j.model,endpoint:"ws://localhost:3010"},devOnly:!0}))),E=wt.computed(()=>{let j=i1t?[...o1t,...k.value]:[];for(let R of D.value){let $=j.findIndex((H)=>H.name===R.name);if($>=0)j[$]=R;else j.push(R)}for(let R of I.value){let $=j.findIndex((H)=>H.name===R.name);if($>=0)j[$]=R;else j.push(R)}return j}),B=wt.computed(()=>{if(!y.value)return null;return E.value.find((j)=>j.name===y.value)??null});function Q(j){if(b.has(j))return b.get(j);let R=E.value.find((H)=>H.name===j);if(!R)throw es("AGENT_NOT_FOUND",`Agent '${j}' not found`,"agents",{recoverable:!1});let $=r1t({config:R,auth:n,accessToken:a,store:t,capsuleService:s,capsuleerSetup:c,pathsFn:A,voiceFactory:p,refreshUser:g,emit:f});return b.set(j,$),$}let T=wt.computed(()=>{let j=[];for(let[R,$]of b){let H=$.status.value;if(H!=="offline"){let K=$.connectedAt.value;j.push({agentName:R,status:H,connectedAt:K??0,durationMs:K?Date.now()-K:0,eventCount:$.eventCount.value,reconnectAttempt:$.reconnectAttempt.value})}}return j});return{list:E,dev:x,models:D,devModels:k,owned:I,selected:B,select(j){if(!E.value.find(($)=>$.name===j))throw es("AGENT_NOT_FOUND",`Agent '${j}' not found`,"agents",{recoverable:!1});y.value=j,d.set("selectedAgent",j)},get(j){return Q(j)},async create(j){if(!j.userOwned)throw es("INVALID_OPERATION","Cannot create non-user-owned agents via this API","agents",{recoverable:!1});t.agents.save(j),b.delete(j.name)},async update(j,R){let $=t.agents.get(j);if(!$)throw es("AGENT_NOT_FOUND",`Agent '${j}' not found`,"agents",{recoverable:!1});let H={...$,...R};t.agents.save(H),b.delete(j)},async remove(j){let R=b.get(j);if(R&&R.status.value!=="offline")await R.disconnect();if(t.agents.remove(j),b.delete(j),y.value===j)y.value=null},connections:T,async switchSession(j){let R=B.value;if(!R)return;await Q(R.name).session.switch(j)},async disconnectAll(){await Promise.all([...b.values()].map((j)=>j.disconnect())),y.value=null},async load(){let j=d.settings.value?.selectedAgent;if(j&&E.value.find(($)=>$.name===j)){y.value=j;return}let R=E.value.find(($)=>!$.devOnly);if(R)y.value=R.name,d.set("selectedAgent",y.value);else{let $=wt.watch(E,(H)=>{if(!y.value){let K=H.find((Z)=>!Z.devOnly)??H[0];if(K)y.value=K.name,d.set("selectedAgent",y.value),$()}})}}}}import{execSync as I5a}from"child_process";function Q5a(){let e=process.platform==="darwin"?["sox","ffmpeg"]:["arecord","ffmpeg"];for(let t of e)try{return I5a(`which ${t}`,{stdio:"ignore"}),t}catch{}return null}function F5a(e){if(e==="arecord")return["-t","raw","-f","S16_LE","-r","8000","-c","1","-"];if(e==="sox")if(process.platform==="darwin")return["-d","-r","8000","-c","1","-e","signed-integer","-b","16","-t","raw","-"];else return["-t","alsa","default","-r","8000","-c","1","-e","signed-integer","-b","16","-t","raw","-"];if(e==="ffmpeg")if(process.platform==="darwin")return["-f","avfoundation","-i",":0","-ac","1","-ar","8000","-f","s16le","-"];else return["-f","alsa","-i","default","-ac","1","-ar","8000","-f","s16le","-"];return[]}function c1t(){let e=null,t=!1,n=[];async function a(){let i=Q5a();if(!i)throw console.error("[voice/source] no audio capture tool found \u2014 install arecord, sox, or ffmpeg"),es("AUDIO_CAPTURE_NOT_AVAILABLE","No audio capture tool found (arecord, sox, or ffmpeg required)","voice",{recoverable:!1});let s=F5a(i),{spawn:c}=await import("child_process"),u=c(i,s,{stdio:["ignore","pipe","pipe"]});e=u;let A="";return u.stderr?.on("data",(p)=>{A+=p.toString()}),u.stdout?.on("data",(p)=>{let d=new Float32Array(p.length/2);for(let g=0;g<d.length;g++)d[g]=p.readInt16LE(g*2)/32768;for(let g of n)g(d)}),new Promise((p,d)=>{let g=!1;function f(){if(!g)g=!0,t=!0,p()}u.stdout?.once("data",f),u.on("error",(b)=>{if(!g)t=!1,e=null,d(es("AUDIO_CAPTURE_ERROR",`Failed to start audio capture: ${b.message}`,"voice",{recoverable:!0}))}),u.on("exit",(b)=>{if(t=!1,e=null,!g)console.error("[voice/source] process exited before producing data, code:",b,A?"stderr: "+A:""),d(es("AUDIO_CAPTURE_FAILED",`Audio capture exited before producing data (code ${b})${A?": "+A:""}`,"voice",{recoverable:!0}))})})}async function r(){let i=e;if(!i||!t)return;return new Promise((s)=>{let c=!1,u=()=>{if(c)return;c=!0,t=!1,e=null,s()},A=setTimeout(()=>{try{i.kill("SIGKILL")}catch{}u()},500);i.once("exit",()=>{clearTimeout(A),u()});try{i.kill("SIGTERM")}catch{u()}})}return{async on(){if(t)return;await a()},async stop(){await r()},async cancel(){await r()},isActive(){return t},onChunk(i){return n.push(i),()=>{let s=n.indexOf(i);if(s!==-1)n.splice(s,1)}}}}function S5a(e){let t=Buffer.alloc(44),n=0;return t.write("RIFF",n,"ascii"),n+=4,t.writeUInt32LE(e+36,n),n+=4,t.write("WAVE",n,"ascii"),n+=4,t.write("fmt ",n,"ascii"),n+=4,t.writeUInt32LE(16,n),n+=4,t.writeUInt16LE(1,n),n+=2,t.writeUInt16LE(1,n),n+=2,t.writeUInt32LE(8000,n),n+=4,t.writeUInt32LE(16000,n),n+=4,t.writeUInt16LE(2,n),n+=2,t.writeUInt16LE(16,n),n+=2,t.write("data",n,"ascii"),n+=4,t.writeUInt32LE(e,n),n+=4,t}function T5a(e){let t=Math.max(-1,Math.min(1,e));return t<0?t*32768:t*32767}class dDe{chunks=[];totalSamples=0;append(e){this.chunks.push(new Float32Array(e)),this.totalSamples+=e.length}getDurationSeconds(){return this.totalSamples/8000}toWav(){let e=this.totalSamples*2,t=S5a(e),n=Buffer.alloc(e),a=0;for(let r of this.chunks)for(let i=0;i<r.length;i++){let s=T5a(r[i]);n.writeInt16LE(s,a),a+=2}return Buffer.concat([t,n])}toBase64(){return this.toWav().toString("base64")}reset(){this.chunks=[],this.totalSamples=0}}var p1t=ko(l1t(),1);var k4=512,A1t=4,N5a=15.625,mDe=()=>Nae.voice.visualizer;class gDe{fft;input;output;constructor(){this.fft=new p1t.default(k4),this.input=Array(k4).fill(0),this.output=Array(k4*2).fill(0)}process(e){let t=Math.max(0,e.length-k4);for(let a=0;a<k4;a++)this.input[a]=e[t+a]??0;this.fft.realTransform(this.output,this.input);let n=[];for(let a=0;a<k4*2;a+=2){let r=this.output[a],i=this.output[a+1]||0;n.push(Math.sqrt(r*r+i*i))}return n.slice(0,k4/2)}}class fDe{rollingMax=0.01;MIN_MAX=0.001;peakValues=new Float32Array(256);peakTimers=new Uint8Array(256);logBin(e,t){let{minHz:n,maxHz:a}=mDe(),r=e/t,i=n*Math.pow(a/n,r),s=k4/2;return Math.min(s-1,Math.round(i/N5a))}bucketFrequencies(e){let{bucketCount:t}=mDe(),n=Array(t).fill(0);for(let a=0;a<t;a++){let r=this.logBin(a,t),i=this.logBin(a+1,t),s=0,c=r===i?r+1:i;for(let u=r;u<c;u++){let A=e[u]??0;if(A>s)s=A}n[a]=s}return n}normalizeToHeights(e){let{noiseGate:t,sharpen:n,peakHold:a,rollingMaxDecay:r}=mDe(),i=Math.max(...e);if(i>this.rollingMax)this.rollingMax=i;else this.rollingMax=Math.max(this.MIN_MAX,this.rollingMax*r);let s=e.map((A)=>A/this.rollingMax);for(let A=0;A<s.length;A++)if(s[A]<t)s[A]=0;let c=3;return s.map((A,p)=>{if(A===0)return 0;let d=A;for(let g=1;g<=c;g++){let f=s[p-g]??0,b=s[p+g]??0;if(f<d)d=f;if(b<d)d=b}return Math.max(0,A-d*n)}).map((A,p)=>{let d=Math.pow(A,0.55),g=Math.min(A1t,Math.floor(d*(A1t+1)));if(g>=(this.peakValues[p]??0))this.peakValues[p]=g,this.peakTimers[p]=a;else if((this.peakTimers[p]??0)>0)this.peakTimers[p]--;else this.peakValues[p]=Math.max(0,(this.peakValues[p]??0)-1);return Math.max(g,this.peakValues[p]??0)})}bucket(e){let t=this.bucketFrequencies(e);return this.normalizeToHeights(t)}}import gw from"fs";import d1t from"path";var L5a=1200;function m1t(e,t,n){let a=wt.ref([]);function r(){try{if(!gw.existsSync(t)){a.value=[];return}let u=JSON.parse(gw.readFileSync(t,"utf-8"));a.value=u.sort((A,p)=>p.recordedAt-A.recordedAt)}catch{a.value=[]}}function i(){try{gw.mkdirSync(d1t.dirname(t),{recursive:!0}),gw.writeFileSync(t,JSON.stringify(a.value,null,2),"utf-8")}catch(u){if(u?.code==="ENOSPC")Xo.push({kind:"error",title:"Disk Full",message:"Your disk is full \u2014 voice recording history could not be saved.",source:"voice",dismissable:!1})}}function s(){return a.value.reduce((u,A)=>u+A.durationSeconds,0)}r();function c(){while(s()>L5a&&a.value.length>0){let u=a.value[a.value.length-1];try{gw.unlinkSync(n(u.id))}catch{}a.value.pop()}i()}return{list:a,write(u,A){let p=n(u.id);try{gw.mkdirSync(d1t.dirname(p),{recursive:!0}),gw.writeFileSync(p,A)}catch(d){if(d?.code==="ENOSPC"){Xo.push({kind:"error",title:"Disk Full",message:"Your disk is full \u2014 voice recording could not be saved.",source:"voice",dismissable:!1});return}throw d}a.value.unshift(u),i(),c()},get(u){try{let A=n(u);if(!gw.existsSync(A))return null;return gw.readFileSync(A).toString("base64")}catch{return null}},remove(u){try{gw.unlinkSync(n(u))}catch{}a.value=a.value.filter((A)=>A.id!==u),i()},clear(){for(let u of a.value)try{gw.unlinkSync(n(u.id))}catch{}a.value=[],i()},prune:c}}async function g1t(e,t){if(!t)throw es("STT_UNAUTHENTICATED","No access token available for STT","voice",{recoverable:!1});try{let n=new FormData,a=new Blob([e],{type:"audio/wav"});n.append("file",a,"audio.wav"),n.append("language","en");let r=await fetch(`${Mb()}/api/stt`,{method:"POST",headers:{Authorization:`Bearer ${t}`},body:n});if(r.status===401)throw es("STT_UNAUTHENTICATED","Unauthenticated: Invalid or expired access token","voice",{recoverable:!1});if(r.status===402)throw es("STT_INSUFFICIENT_CREDITS","Insufficient credits for STT","voice",{recoverable:!1});if(r.status===413)throw es("STT_FILE_TOO_LARGE","Audio file too large","voice",{recoverable:!1});if(r.status>=500)throw es("STT_SERVICE_ERROR",`STT service error: HTTP ${r.status}`,"voice",{recoverable:!0});if(!r.ok)throw es("STT_REQUEST_FAILED",`STT request failed: HTTP ${r.status}`,"voice",{recoverable:!0});return await r.json()}catch(n){if(n instanceof TypeError&&n.message.includes("fetch"))throw es("STT_NETWORK_ERROR",`Network error during STT: ${n.message}`,"voice",{recoverable:!0});if(n&&typeof n==="object"&&"code"in n)throw n;throw es("STT_FAILED",`STT submission failed: ${n instanceof Error?n.message:"unknown error"}`,"voice",{recoverable:!0})}}var j5a=[64,4,2,1],P5a=[128,32,16,8];function f1t(e,t){let n=Math.max(0,Math.min(4,Math.round(e))),a=0;for(let r=0;r<n;r++)a|=t[r];return a}function Kae(e){let t=[];for(let n=0;n<e.length;n+=2){let a=e[n]??0,r=e[n+1]??0,i=f1t(a,j5a)|f1t(r,P5a);t.push(String.fromCharCode(10240+i))}return t.join("")}function b1t(e,t,n,a){let i=(a??GA)(t).agents.voice,s=c1t(),c=new dDe,u=new gDe,A=new fDe,p=m1t(e,i.index(e),(x)=>i.recording(e,x)),d=wt.ref(!1),g=wt.ref(Array(96).fill(0)),f=wt.computed(()=>Kae(g.value)),b=wt.ref("idle"),y=wt.ref(null),D=wt.ref(null);s.onChunk((x)=>{c.append(x);let k=u.process(Array.from(x));g.value=A.bucket(k)});async function I(x,k){if(!n.value){b.value="error",D.value=es("STT_UNAUTHENTICATED","No access token","voice",{recoverable:!1});return}b.value="transcribing";try{let E=await g1t(x,n.value);y.value=E,b.value="done";let B=p.list.value.find((Q)=>Q.id===k);if(B)B.transcript=E.text}catch(E){b.value="error",D.value=E&&typeof E==="object"&&"code"in E?E:es("STT_FAILED",E instanceof Error?E.message:"Transcription failed","voice",{recoverable:!0})}}return{mic:{isActive:d,async on(){if(d.value)return;b.value="idle",y.value=null,D.value=null,g.value=Array(96).fill(0);try{await s.on(),d.value=!0}catch(x){throw D.value=es("MIC_ERROR",x instanceof Error?x.message:"Failed to start microphone","voice",{recoverable:!0}),x}},async stop(){if(!d.value)return;await s.stop(),d.value=!1;let x=c.toWav(),k=c.getDurationSeconds();c.reset();let E={id:Date.now().toString(36),recordedAt:Date.now(),durationSeconds:k,transcript:void 0};p.write(E,x),g.value=Array(96).fill(0),await I(x,E.id)},async cancel(){if(!d.value)return;await s.cancel(),d.value=!1,c.reset(),b.value="idle",y.value=null,D.value=null,g.value=Array(96).fill(0)}},bars:g,braille:f,stt:{status:b,result:y,error:D,reset(){b.value="idle",y.value=null,D.value=null}},history:{list:p.list,async get(x){let k=p.get(x);if(!k)throw Error(`Recording ${x} not found`);return k},async remove(x){p.remove(x)},async clear(){p.clear()}}}}import gj from"fs";import M5a from"path";var bDe=200;function hDe(e,t){return t(e).history}function q5a(e,t){try{gj.mkdirSync(M5a.dirname(t),{recursive:!0}),gj.appendFileSync(t,JSON.stringify(e)+`
810
810
  `,"utf-8")}catch(n){console.error("[history] failed to append entry:",n)}}function $5a(e,t){try{if(!gj.existsSync(e))return[];let a=gj.readFileSync(e,"utf-8").split(`
811
811
  `).filter((s)=>s.trim().length>0).slice(-t),r=[];for(let s of a)try{r.push(JSON.parse(s))}catch{}let i=[];for(let s=r.length-1;s>=0;s--){let c=r[s];if(i.length===0||i[0].text!==c.text)i.unshift(c)}return i.reverse()}catch(n){return console.error("[history] failed to load entries:",n),[]}}function h1t(e){let t=e?.paths??GA,n=wt.ref([]),a=null;return{entries:wt.computed(()=>n.value),append(i){if(!a)return;let s=i.trim();if(!s)return;let c={id:`${Date.now()}-${Math.random().toString(36).slice(2,8)}`,text:s,ts:Date.now()},u=hDe(a,t);q5a(c,u);let A=[c,...n.value];n.value=A.length>bDe?A.slice(0,bDe):A},clear(){if(!a)return;let i=hDe(a,t);try{if(gj.existsSync(i))gj.unlinkSync(i)}catch(s){console.error("[history] failed to clear:",s)}n.value=[]},init(i){a=i;let s=hDe(i,t);n.value=$5a(s,bDe)},teardown(){a=null,n.value=[]}}}function _1t(){let e=wt.ref([]),t=wt.ref(!1);function n(){e.value=MB.list()}async function a(s,c){if(t.value)return;t.value=!0;try{if(c?.aborted)throw new DOMException("Aborted","AbortError");let{mod:u,alreadyInstalled:A,upgraded:p}=await Gae(s);if(n(),A)Xo.push({kind:"info",title:"Already Installed",message:`${u.id}@${u.version} is already installed`,source:"capsule-modules",dismissable:!0});else Xo.push({kind:"info",title:p?"Module Upgraded":"Module Installed",message:p?`Upgraded ${u.id} to ${u.version}`:`Installed ${u.id}@${u.version} \u2014 restart capsule to load`,source:"capsule-modules",dismissable:!0})}catch(u){Xo.push({kind:"error",title:"Install Failed",message:u.message,source:"capsule-modules",dismissable:!0})}finally{t.value=!1}}async function r(s,c){if(t.value)return;t.value=!0;try{if(c?.aborted)throw new DOMException("Aborted","AbortError");await Uae(s),n(),Xo.push({kind:"info",title:"Module Removed",message:`${s} removed \u2014 restart capsule to reflect the change`,source:"capsule-modules",dismissable:!0})}catch(u){Xo.push({kind:"error",title:"Remove Failed",message:u.message,source:"capsule-modules",dismissable:!0})}finally{t.value=!1}}async function i(s,c){if(t.value)return;t.value=!0;try{if(c?.aborted)throw new DOMException("Aborted","AbortError");let u=await zae(s);n();let A=u.filter((g)=>g.ok&&g.from!==g.to),p=u.filter((g)=>!g.ok),d=u.filter((g)=>g.ok&&g.from===g.to);if(p.length>0)Xo.push({kind:"error",title:"Upgrade Failed",message:p.map((g)=>`${g.id}: ${g.error}`).join("; "),source:"capsule-modules",dismissable:!0});else if(A.length>0)Xo.push({kind:"info",title:"Modules Upgraded",message:A.map((g)=>`${g.id} ${g.from} \u2192 ${g.to}`).join(", ")+" \u2014 restart capsule to load",source:"capsule-modules",dismissable:!0});else Xo.push({kind:"info",title:"Already Up To Date",message:d.map((g)=>g.id).join(", ")+" \u2014 no updates available",source:"capsule-modules",dismissable:!0})}catch(u){Xo.push({kind:"error",title:"Upgrade Failed",message:u.message,source:"capsule-modules",dismissable:!0})}finally{t.value=!1}}return{installed:wt.computed(()=>e.value),isWorking:wt.computed(()=>t.value),reload:n,install:a,remove:r,upgrade:i}}import{readFileSync as R5a,writeFileSync as O5a,watchFile as G5a,unwatchFile as U5a,mkdirSync as z5a,renameSync as H5a}from"fs";import{resolve as Jae}from"path";import{homedir as K5a,tmpdir as J5a}from"os";import{randomUUID as W5a}from"crypto";var yDe=Jae(K5a(),".axon"),_De=Jae(yDe,"devtools-control.json"),Z5a=Jae(yDe,"devtools-state.json");function y1t(e){let t=wt.ref(!1),n=-1,a=0,r=!1;function i(){let p={seq:a++,updatedAt:Date.now(),connectedUrl:e.getConnectedUrl(),activeSessionId:e.getActiveSessionId(),status:e.getStatus(),sessionsDir:e.getSessionsDir()};Y5a(Z5a,JSON.stringify(p,null,2))}async function s(p){if(p.seq<=n)return;if(n=p.seq,Date.now()-p.sentAt>30000)return;switch(p.command){case"connect-agent":{let{url:d,agentName:g}=p.payload;if(d)await e.connectAgent(d,g);break}case"open-session":{let{sessionId:d,agentName:g}=p.payload;if(d)await e.openSession(d,g);break}case"disconnect":{await e.disconnect();break}}i()}function c(){try{let p=R5a(_De,"utf-8"),d=JSON.parse(p);if(typeof d.seq==="number"&&typeof d.command==="string"&&typeof d.sentAt==="number")return d;return null}catch{return null}}function u(){if(r)return;r=!0;let p=c();if(p)t.value=!0,s(p).catch(()=>{});G5a(_De,{interval:250,persistent:!1},(d,g)=>{let f=c();if(!f)return;t.value=!0,s(f).catch(()=>{})})}function A(){if(!r)return;r=!1,U5a(_De)}try{z5a(yDe,{recursive:!0})}catch{}return u(),{isActive:wt.readonly(t),pushState:i,stop:A}}function Y5a(e,t){let n=Jae(J5a(),`axon-bridge-${W5a()}.tmp`);try{O5a(n,t,"utf-8"),H5a(n,e)}catch{}}function w1t(e,t){let n=wt.ref([]),a=wt.ref(!1);async function r(){let i=await Ckt();if(a.value=i.available,!i.available){n.value=[];return}n.value=i.models.map((s)=>({name:xkt(s.name),description:`${s.details.parameter_size} \xB7 ${s.details.quantization_level} \xB7 local`,model:{id:`local:${s.name}`,endpoint:e,pathway:t,modelId:s.name},userOwned:!1,provider:"local",tags:["local",s.details.family]}))}return{models:wt.readonly(n),available:wt.readonly(a),probe:r}}import{appendFile as V5a,mkdir as X5a,readFile as eNa}from"fs/promises";import{appendFileSync as tNa,mkdirSync as nNa}from"fs";import{resolve as C1t}from"path";var Zae=new Set;function wDe(e){return e?.dir??process.env.CHRONICLE_DIR??C1t(process.cwd(),"lib/sessions")}function aNa(e){let t=e?.chronicleId??process.env.COGNOS_CHRONICLE_ID;if(!t)throw Error("[chronicle] No chronicleId provided and COGNOS_CHRONICLE_ID env var is not set.");return t}async function k1t(e){let t=wDe(e);if(Zae.has(t))return;await X5a(t,{recursive:!0}),Zae.add(t)}function Wae(e){let t=wDe(e),n=aNa(e);return C1t(t,`${n}.jsonl`)}var lU={async write(e,t){await k1t(t);let n=Wae(t);await V5a(n,JSON.stringify(e)+`
@@ -834,4 +834,4 @@ Expected: ${A}`);s=await Qkt({entrypoint:n.entrypoint,maxMemoryMb:n.policy?.reso
834
834
  `).filter(Boolean));break}case"capsule:stderr":{let d=a.get(p.payload.commandId);if(d&&p.payload.data)d.stderr.push(...p.payload.data.split(`
835
835
  `).filter(Boolean));break}case"capsule:calls":{let d=a.get(p.payload.commandId);if(d)d.calls.push(...p.payload.calls);break}case"capsule:env":{let d=a.get(p.payload.commandId);if(d)d.envEvents.push(...p.payload.events);break}case"capsule:escalating":{let d=a.get(p.payload.commandId);if(d&&d.status==="running")d.status="waiting";break}case"capsule:denied":{let d=a.get(p.payload.commandId);if(d)d.status="denied";break}case"capsule:proc:spawned":{r.set(p.payload.procId,{kind:"proc",procId:p.payload.procId,command:p.payload.command,pid:p.payload.pid,stdout:[],stderr:[],status:"running"});break}case"capsule:proc:stdout":{let d=r.get(p.payload.procId);if(d)d.stdout.push(...p.payload.data.split(`
836
836
  `).filter(Boolean));break}case"capsule:proc:stderr":{let d=r.get(p.payload.procId);if(d)d.stderr.push(...p.payload.data.split(`
837
- `).filter(Boolean));break}case"capsule:proc:exit":{let d=r.get(p.payload.procId);if(d)d.exitCode=p.payload.exitCode,d.durationMs=p.payload.durationMs,d.status=p.payload.ok?"done":"error";break}}}let i=new Set,s=new Map,c=null;for(let A of e){if(Xm(A))continue;let p=A;if(p.type==="capsule:stdin")c=p.payload.commandId;if(p.type==="capsule:proc:spawned"&&c)s.set(p.payload.procId,c)}for(let[A,p]of s){let d=a.get(p),g=r.get(A);if(d&&g)d.proc=g}let u=null;for(let A of e){if(Xm(A))continue;let p=A;if(p.type==="pathway:start"){u=p.time?.ms??null;continue}if(p.type==="user:message"){n={id:p.id,userMessage:p,activity:[],agentMessage:null,isStreaming:!0,interrupted:!1,durationMs:null,billing:null},t.push(n);continue}if(!n)continue;if(p.type==="agent:message"){n.agentMessage=p,n.isStreaming=!1;for(let d of n.activity)if(d.status==="running"||d.status==="waiting")d.status="ok",d.renderKind=Are(d);continue}if(p.type==="agent:message:delta"){let d=n.agentMessage;if(d)d.payload.content+=p.payload.content;else n.agentMessage={...p,type:"agent:message",payload:{content:p.payload.content}};continue}if(p.type==="agent:interrupt"){if(n.interrupted=!0,n.isStreaming=!1,u!==null&&p.time?.ms!=null)n.durationMs=p.time.ms-u;for(let d of n.activity)if(d.status==="running"||d.status==="waiting")d.status="ok",d.renderKind=Are(d);continue}if(p.type==="pathway:complete"||p.type==="pathway:error"){for(let d of n.activity)if(d.status==="running"||d.status==="waiting")d.status="ok",d.renderKind=Are(d);if(p.type==="pathway:complete")n.isStreaming=!1,n.durationMs=p.payload.durationMs,n.billing=p.payload.billing;continue}if(p.type==="capsule:stdin"){for(let d of n.activity)if(d.status==="running"||d.status==="waiting")d.status="ok",d.renderKind=Are(d);if(!i.has(p.payload.commandId)){let d=a.get(p.payload.commandId);if(d)n.activity.push(d),i.add(p.payload.commandId)}continue}}return t}function jxt(e){let t=wt.computed(()=>Sja(e.value)),n=wt.computed(()=>e.value.filter((a)=>{if(Xm(a))return!0;let r=a.type;return r==="agent:boot"||r==="thread:start"||r==="pathway:start"||r==="agent:error"||r==="engine:retry"}));return{turns:t,preamble:n}}var Tja=Si.defineComponent;var HDe=Si.createCommentVNode,Sj=Si.openBlock,pre=Si.createElementBlock,Pxt=Si.createBlock;var Mxt=Si.renderList,qxt=Si.Fragment;var xU=Si.unref;var Nja=Si.createVNode;var $xt={"data-v-80f51792\x00.exit-hint":{visualStyles:{fg:"grey"},height:1},"data-v-80f51792\x00.chat-container":{display:"flex",paddingRight:2,flexDirection:"column",scrollable:!0,alwaysScroll:!0,scrollableY:!0,width:"100%",height:"100%"},"data-v-80f51792\x00.msg":{marginBottom:1}},Rxt=Tja({__name:"index",setup(e){Dc({layout:"default"});let t=C_(),n=jxt(t.messages),{scrollY:a,onNewContent:r}=Lxt();Si.watch(n.turns,r);let i=Gs(),s=Si.ref(!1),c=null,u=i.onBeforeExit(()=>{if(t.isStreaming.value)return t.abort(),!1;if(s.value)return;return s.value=!0,c=setTimeout(()=>{s.value=!1},1500),!1});return Si.onUnmounted(()=>{if(u(),c)clearTimeout(c)}),(A,p)=>{return Sj(),pre("div",{class:"chat-container","scroll-y":xU(a)},[Nja(I1t),HDe(" Pre-turn entries: connection events, errors, agent:boot "),(Sj(!0),pre(qxt,null,Mxt(xU(n).preamble.value,(d)=>{return Sj(),Pxt(UCt,{key:d.id,class:"msg",entry:d},null,8,["entry"])}),128)),HDe(" Turns: each user message + its activity + agent reply "),(Sj(!0),pre(qxt,null,Mxt(xU(n).turns.value,(d)=>{return Sj(),Pxt(fxt,{key:d.id,class:"msg",turn:d,"agent-name":xU(t).agentName.value},null,8,["turn","agent-name"])}),128)),xU(s)?(Sj(),pre("div",{key:0,class:"exit-hint"},"press C-c again to exit")):HDe("v-if",!0)],8,["scroll-y"])}}});Rxt.__scopeId="data-v-80f51792";var Oxt=Rxt;C2e({routes:[{path:"/account",component:Qxt,name:"account",meta:{layout:"default"}},{path:"/auth",component:Nxt,name:"auth",meta:{layout:"default"}},{path:"/",component:Oxt,name:"home",meta:{layout:"default"}}],styles:[E1t,S1t,iCt,cCt,ACt,mCt,bCt,yCt,GCt,KCt,ZCt,nxt,$Ct,xCt,DCt,PCt,TCt,mxt,lxt,pCt,oxt,wxt,q1t,tCt,j1t,kxt,Dxt,Sxt,$xt],layouts:new Map([["default",xxt]]),middleware:[B1t],screen:{title:"VTerm"},quitKeys:["C-c"],highlight:{theme:"dark-plus"},ui:{cursor:{shape:"line",blink:!0},scrollbar:{thumb:"\u2502",track:"\u2502"},smoothScroll:{friction:0.65,acceleration:1.05,minVelocity:0.1}}});
837
+ `).filter(Boolean));break}case"capsule:proc:exit":{let d=r.get(p.payload.procId);if(d)d.exitCode=p.payload.exitCode,d.durationMs=p.payload.durationMs,d.status=p.payload.ok?"done":"error";break}}}let i=new Set,s=new Map,c=null;for(let A of e){if(Xm(A))continue;let p=A;if(p.type==="capsule:stdin")c=p.payload.commandId;if(p.type==="capsule:proc:spawned"&&c)s.set(p.payload.procId,c)}for(let[A,p]of s){let d=a.get(p),g=r.get(A);if(d&&g)d.proc=g}let u=null;for(let A of e){if(Xm(A))continue;let p=A;if(p.type==="pathway:start"){u=p.time?.ms??null;continue}if(p.type==="user:message"){n={id:p.id,userMessage:p,activity:[],agentMessage:null,isStreaming:!0,interrupted:!1,durationMs:null,billing:null},t.push(n);continue}if(!n)continue;if(p.type==="agent:message"){n.agentMessage=p,n.isStreaming=!1;for(let d of n.activity)if(d.status==="running"||d.status==="waiting")d.status="ok",d.renderKind=Are(d);continue}if(p.type==="agent:message:delta"){let d=n.agentMessage;if(d)d.payload.content+=p.payload.content;else n.agentMessage={...p,type:"agent:message",payload:{content:p.payload.content}};continue}if(p.type==="agent:interrupt"){if(n.interrupted=!0,n.isStreaming=!1,u!==null&&p.time?.ms!=null)n.durationMs=p.time.ms-u;for(let d of n.activity)if(d.status==="running"||d.status==="waiting")d.status="ok",d.renderKind=Are(d);continue}if(p.type==="pathway:complete"||p.type==="pathway:error"){for(let d of n.activity)if(d.status==="running"||d.status==="waiting")d.status="ok",d.renderKind=Are(d);if(p.type==="pathway:complete")n.isStreaming=!1,n.durationMs=p.payload.durationMs,n.billing=p.payload.billing;continue}if(p.type==="capsule:stdin"){for(let d of n.activity)if(d.status==="running"||d.status==="waiting")d.status="ok",d.renderKind=Are(d);if(!i.has(p.payload.commandId)){let d=a.get(p.payload.commandId);if(d)n.activity.push(d),i.add(p.payload.commandId)}continue}}return t}function jxt(e){let t=wt.computed(()=>Sja(e.value)),n=wt.computed(()=>e.value.filter((a)=>{if(Xm(a))return!0;let r=a.type;return r==="agent:boot"||r==="thread:start"||r==="pathway:start"||r==="agent:error"||r==="engine:retry"}));return{turns:t,preamble:n}}var Tja=Si.defineComponent;var HDe=Si.createCommentVNode,Sj=Si.openBlock,pre=Si.createElementBlock,Pxt=Si.createBlock;var Mxt=Si.renderList,qxt=Si.Fragment;var xU=Si.unref;var Nja=Si.createVNode;var $xt={"data-v-80f51792\x00.exit-hint":{visualStyles:{fg:"grey"},height:1},"data-v-80f51792\x00.chat-container":{display:"flex",paddingRight:2,flexDirection:"column",scrollable:!0,alwaysScroll:!0,scrollableY:!0,width:"100%",height:"100%"},"data-v-80f51792\x00.msg":{marginBottom:1}},Rxt=Tja({__name:"index",setup(e){Dc({layout:"default"});let t=C_(),n=jxt(t.messages),{scrollY:a,onNewContent:r}=Lxt();Si.watch(n.turns,r);let i=Gs(),s=Si.ref(!1),c=null,u=i.onBeforeExit(()=>{if(t.isStreaming.value)return t.abort(),!1;if(s.value)return;return s.value=!0,c=setTimeout(()=>{s.value=!1},1500),!1});return Si.onUnmounted(()=>{if(u(),c)clearTimeout(c)}),(A,p)=>{return Sj(),pre("div",{class:"chat-container","scroll-y":xU(a)},[Nja(I1t),HDe(" Pre-turn entries: connection events, errors, agent:boot "),(Sj(!0),pre(qxt,null,Mxt(xU(n).preamble.value,(d)=>{return Sj(),Pxt(UCt,{key:d.id,class:"msg",entry:d},null,8,["entry"])}),128)),HDe(" Turns: each user message + its activity + agent reply "),(Sj(!0),pre(qxt,null,Mxt(xU(n).turns.value,(d)=>{return Sj(),Pxt(fxt,{key:d.id,class:"msg",turn:d,"agent-name":xU(t).agentName.value},null,8,["turn","agent-name"])}),128)),xU(s)?(Sj(),pre("div",{key:0,class:"exit-hint"},"press C-c again to exit")):HDe("v-if",!0)],8,["scroll-y"])}}});Rxt.__scopeId="data-v-80f51792";var Oxt=Rxt;C2e({routes:[{path:"/account",component:Qxt,name:"account",meta:{layout:"default"}},{path:"/auth",component:Nxt,name:"auth",meta:{layout:"default"}},{path:"/",component:Oxt,name:"home",meta:{layout:"default"}}],styles:[E1t,S1t,iCt,q1t,tCt,j1t,cCt,ACt,mCt,bCt,yCt,GCt,KCt,ZCt,nxt,$Ct,xCt,DCt,PCt,TCt,mxt,lxt,pCt,oxt,wxt,kxt,Dxt,Sxt,$xt],layouts:new Map([["default",xxt]]),middleware:[B1t],screen:{title:"VTerm"},quitKeys:["C-c"],highlight:{theme:"dark-plus"},ui:{cursor:{shape:"line",blink:!0},scrollbar:{thumb:"\u2502",track:"\u2502"},smoothScroll:{friction:0.65,acceleration:1.05,minVelocity:0.1}}});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcforge/axon",
3
- "version": "1.0.23",
3
+ "version": "1.0.24",
4
4
  "description": "coding agent cli",
5
5
  "type": "module",
6
6
  "bin": {