agentix-cli 0.25.0 → 0.26.0

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 (57) hide show
  1. package/README.md +2 -0
  2. package/dist/{App-6Y7B3YQH.js → App-BPNHIGUX.js} +2 -2
  3. package/dist/{ChatApp-KIEUJ2DS.js → ChatApp-6XSSZB4U.js} +2 -2
  4. package/dist/{agent-QGZIAZMY.js → agent-5QMITZT6.js} +2 -2
  5. package/dist/{board-dashboard-CQ5F4GPD.js → board-dashboard-M3372FLO.js} +1191 -225
  6. package/dist/board-dashboard-M3372FLO.js.map +1 -0
  7. package/dist/{chunk-JXWAGMI2.js → chunk-BTHHSY7D.js} +7 -7
  8. package/dist/chunk-BTHHSY7D.js.map +1 -0
  9. package/dist/{chunk-TRJTTBE2.js → chunk-BVGJSPW4.js} +2 -2
  10. package/dist/{chunk-53GCFZPR.js → chunk-D46VZ7K7.js} +2 -2
  11. package/dist/{chunk-HA3XI7Z2.js → chunk-E5CXCI33.js} +27 -27
  12. package/dist/chunk-E5CXCI33.js.map +1 -0
  13. package/dist/{chunk-FDMWOPEL.js → chunk-K2CAPYES.js} +2 -2
  14. package/dist/{chunk-TMKLHTCG.js → chunk-METYYZKQ.js} +264 -120
  15. package/dist/chunk-METYYZKQ.js.map +1 -0
  16. package/dist/{chunk-Q6YO7LYE.js → chunk-MTAPOCGA.js} +2 -2
  17. package/dist/{chunk-G57RZCXM.js → chunk-O6YPEOQF.js} +2 -2
  18. package/dist/{chunk-KUCCW2VG.js → chunk-UHE5FCPB.js} +8 -8
  19. package/dist/{chunk-LNXCJWOU.js → chunk-V3U4OF7L.js} +2 -2
  20. package/dist/{chunk-NGSIRE4X.js → chunk-VT5XYFDD.js} +2 -2
  21. package/dist/cli.js +1 -1
  22. package/dist/client-HGKAC6VP.js +2 -0
  23. package/dist/{config-7FSZFRTQ.js → config-A4RWEJHV.js} +2 -2
  24. package/dist/config-mutator-MNSFUN7D.js +2 -0
  25. package/dist/doctor-3Q36ZFE6.js +2 -0
  26. package/dist/index.d.ts +58 -1
  27. package/dist/index.js +1 -1
  28. package/dist/{program-WVAVJFND.js → program-SAUNRCCD.js} +2 -2
  29. package/dist/{registry-T36ZIAWV.js → registry-HK3WQ7BS.js} +2 -2
  30. package/dist/scheduler-6T2SU5ST.js +2 -0
  31. package/package.json +1 -1
  32. package/dist/board-dashboard-CQ5F4GPD.js.map +0 -1
  33. package/dist/chunk-HA3XI7Z2.js.map +0 -1
  34. package/dist/chunk-JXWAGMI2.js.map +0 -1
  35. package/dist/chunk-TMKLHTCG.js.map +0 -1
  36. package/dist/client-GGVVLOOF.js +0 -2
  37. package/dist/config-mutator-POCOYYJ4.js +0 -2
  38. package/dist/doctor-DHLBEKA4.js +0 -2
  39. package/dist/scheduler-GH7TIKYS.js +0 -2
  40. /package/dist/{App-6Y7B3YQH.js.map → App-BPNHIGUX.js.map} +0 -0
  41. /package/dist/{ChatApp-KIEUJ2DS.js.map → ChatApp-6XSSZB4U.js.map} +0 -0
  42. /package/dist/{agent-QGZIAZMY.js.map → agent-5QMITZT6.js.map} +0 -0
  43. /package/dist/{chunk-TRJTTBE2.js.map → chunk-BVGJSPW4.js.map} +0 -0
  44. /package/dist/{chunk-53GCFZPR.js.map → chunk-D46VZ7K7.js.map} +0 -0
  45. /package/dist/{chunk-FDMWOPEL.js.map → chunk-K2CAPYES.js.map} +0 -0
  46. /package/dist/{chunk-Q6YO7LYE.js.map → chunk-MTAPOCGA.js.map} +0 -0
  47. /package/dist/{chunk-G57RZCXM.js.map → chunk-O6YPEOQF.js.map} +0 -0
  48. /package/dist/{chunk-KUCCW2VG.js.map → chunk-UHE5FCPB.js.map} +0 -0
  49. /package/dist/{chunk-LNXCJWOU.js.map → chunk-V3U4OF7L.js.map} +0 -0
  50. /package/dist/{chunk-NGSIRE4X.js.map → chunk-VT5XYFDD.js.map} +0 -0
  51. /package/dist/{client-GGVVLOOF.js.map → client-HGKAC6VP.js.map} +0 -0
  52. /package/dist/{config-7FSZFRTQ.js.map → config-A4RWEJHV.js.map} +0 -0
  53. /package/dist/{config-mutator-POCOYYJ4.js.map → config-mutator-MNSFUN7D.js.map} +0 -0
  54. /package/dist/{doctor-DHLBEKA4.js.map → doctor-3Q36ZFE6.js.map} +0 -0
  55. /package/dist/{program-WVAVJFND.js.map → program-SAUNRCCD.js.map} +0 -0
  56. /package/dist/{registry-T36ZIAWV.js.map → registry-HK3WQ7BS.js.map} +0 -0
  57. /package/dist/{scheduler-GH7TIKYS.js.map → scheduler-6T2SU5ST.js.map} +0 -0
@@ -1,4 +1,4 @@
1
- import{a as K,b as X,c as D,d as I,e as M,f as W}from"./chunk-P4VWIVKN.js";import{f as B}from"./chunk-JXWAGMI2.js";import{f as J}from"./chunk-BFXONUUN.js";import{existsSync as _,readFileSync as ae,writeFileSync as ne,appendFileSync as ve,mkdirSync as xe}from"fs";import{dirname as be,resolve as R}from"path";import{fileURLToPath as ye}from"url";import{hostname as ke}from"os";import{spawn as we}from"child_process";import{existsSync as G,readFileSync as Y,writeFileSync as j,copyFileSync as me}from"fs";import{resolve as V}from"path";function Q(e,t={}){let n=t.configPath||V(process.cwd(),"agentx.json");if(!G(n))throw new Error(`agentx.json not found at ${n}`);let a=JSON.parse(Y(n,"utf-8")),r=e(a),s=typeof r=="string"?{summary:r}:r,o=JSON.stringify(a,null,2)+`
1
+ import{a as K,b as X,c as D,d as I,e as M,f as W}from"./chunk-P4VWIVKN.js";import{f as B}from"./chunk-BTHHSY7D.js";import{f as J}from"./chunk-BFXONUUN.js";import{existsSync as _,readFileSync as ae,writeFileSync as ne,appendFileSync as ve,mkdirSync as xe}from"fs";import{dirname as be,resolve as R}from"path";import{fileURLToPath as ye}from"url";import{hostname as ke}from"os";import{spawn as we}from"child_process";import{existsSync as G,readFileSync as Y,writeFileSync as j,copyFileSync as me}from"fs";import{resolve as V}from"path";function Q(e,t={}){let n=t.configPath||V(process.cwd(),"agentx.json");if(!G(n))throw new Error(`agentx.json not found at ${n}`);let a=JSON.parse(Y(n,"utf-8")),r=e(a),s=typeof r=="string"?{summary:r}:r,o=JSON.stringify(a,null,2)+`
2
2
  `,p=n+".tmp";j(p,o,"utf-8");try{JSON.parse(Y(p,"utf-8"))}catch(d){throw new Error(`config did not round-trip cleanly: ${d.message}`)}let i;return t.skipBackup||(i=`${n}.bak.${Date.now()}`,me(n,i)),j(n,o,"utf-8"),t.skipReload||he().catch(()=>{}),{summary:s.summary,payload:s.payload,backupPath:i}}function Z(e,t={}){let n=t.configPath||V(process.cwd(),"agentx.json");if(G(n)&&!t.overwrite)throw new Error(`agentx.json already exists at ${n}. Pass overwrite=true to replace it.`);return j(n,JSON.stringify(e,null,2)+`
3
3
  `,"utf-8"),{file:n}}async function he(){try{let t=B().dashboard.daemonUrl?.replace(/\/+$/,"")||"http://127.0.0.1:18800";await fetch(`${t}/reload`,{method:"POST"}).catch(()=>null)}catch{}}function ee(e,t){let n=e.configExists?e.agentCount===0?"Add your first agent":"Add another agent":"Set up your team",a=`<header class="ax-topbar">
4
4
  <div class="ax-topbar__left">
@@ -739,4 +739,4 @@ tr:hover td { background: var(--bg-hover); }
739
739
  <div class="meta-line">${U((d.meta.tags||[]).slice(0,6),t)}</div>
740
740
  <h3><a href="${p}/article/${encodeURIComponent(d.path)}">${l(d.meta.title)}</a></h3>
741
741
  </div>`;return $(`${t} \xB7 ${n}`,C(r),i)}function P(e,t,n){let a=e.rebuildIndex(),r=L(a.articles.map(o=>({title:o.title,path:o.path,tags:o.tags}))),s='<div class="nav-section">';s+=`<div class="nav-section-title">${l(t)}</div>`,s+=`<a class="nav-item${n?"":" active"}" href="/">Home</a>`,s+='<a class="nav-item" href="/lint">Health check</a>',s+="</div>";for(let[o,p]of r){s+='<div class="nav-section">',s+=`<div class="nav-section-title">${q(o)}</div>`;for(let i of p){let d=i.path===n;s+=`<a class="nav-item${d?" active":""}" href="/article/${encodeURIComponent(i.path)}">${l(i.title)}</a>`}s+="</div>"}return s}function Xe(e){let{wikiDir:t,agentFilter:n,peerUrls:a=[],mode:r="graph",pathPrefix:s=""}=e,o=s.replace(/\/+$/,""),p=new J(t,void 0,r),i=a.length>0?new H(a):null;return async(d,g)=>{let x=new URL(d.url||"/","http://localhost"),c=decodeURIComponent(x.pathname),u=o&&c.startsWith(o)?c.slice(o.length)||"/":c,f=null,z=200;try{if(u.startsWith("/remote/")&&i){let y=u.slice(8).split("/article/");if(y.length===2){let[b,v]=y,m=b.indexOf("/"),k=decodeURIComponent(b.slice(0,m)),h=b.slice(m+1),w=await i.getRemoteArticle(k,h,v);if(w){let E=await i.getRemoteAgents(),N=[...p.summary(),...E.map(S=>({...S,agentId:`${S.agentId} @${S.nodeId}`}))],A=`<div class="breadcrumb"><a href="/">Hub</a> / <span class="tag">remote</span> ${l(h)} @ ${l(k)}</div>`;A+=`<h1>${l(w.meta.title)}</h1>`,A+='<dl class="meta">',A+=`<dt>Tags</dt><dd>${(w.meta.tags||[]).map(S=>`<span class="tag">${S}</span>`).join(" ")}</dd>`,A+=`<dt>Owner</dt><dd>${l(w.meta.owner)}</dd>`,A+=`<dt>Source</dt><dd><span class="tag">remote</span> ${l(k)}</dd>`,A+=`<dt>Updated</dt><dd>${w.meta.lastUpdated}</dd>`,A+="</dl>";let T=new Map;A+=O(w.content,T),f=$(w.meta.title,C(N),A)}}}if(!f&&n){let y=p.getAgentWiki(n);if(u==="/"||u===""){let b=y.rebuildIndex(),v=p.getAgentEntries(n),m=`<h1>${l(n)}</h1>`;if(m+='<div class="stats">',m+=`<div class="stat-card"><div class="number">${b.articles.length}</div><div class="label">Articles</div></div>`,m+=`<div class="stat-card"><div class="number">${v.length}</div><div class="label">Entries</div></div>`,m+="</div>",b.articles.length>0){m+="<h2>Articles</h2><table><tr><th>Title</th><th>Type</th><th>Updated</th></tr>";for(let k of b.articles)m+=`<tr><td><a href="/article/${encodeURIComponent(k.path)}">${l(k.title)}</a></td><td><span class="tag">${(k.tags||[]).slice(0,3).join(", ")}</span></td><td>${k.lastUpdated||""}</td></tr>`;m+="</table>"}f=$(n,P(y,n),m)}else if(u.startsWith("/article/")){let b=u.slice(9),v=y.readArticle(b);if(v){let m=y.rebuildIndex(),k=new Map;for(let w of m.articles)k.set(w.title,w.path);let h=`<h1>${l(v.meta.title)}</h1>`;h+='<dl class="meta">',h+=`<dt>Tags</dt><dd>${(v.meta.tags||[]).map(w=>`<span class="tag">${w}</span>`).join(" ")}</dd>`,h+=`<dt>Updated</dt><dd>${v.meta.lastUpdated}</dd>`,v.meta.sources?.length&&(h+=`<dt>Sources</dt><dd>${v.meta.sources.length} entries</dd>`),h+="</dl>",h+=O(v.content,k),f=$(v.meta.title,P(y,n,b),h)}}else if(u==="/lint"){let b=y.lint(),v="<h1>Health Check</h1>";if(b.length===0)v+='<p style="color:green;">No issues.</p>';else{v+="<table><tr><th>Type</th><th>Article</th><th>Issue</th></tr>";for(let m of b)v+=`<tr><td><span class="tag">${m.type}</span></td><td>${l(m.article)}</td><td>${l(m.message)}</td></tr>`;v+="</table>"}f=$("Health Check",P(y,n),v)}else if(u==="/search"){let b=x.searchParams.get("q")||"",v=y.findRelevant(b,void 0,20),m=`<h1>Search: "${l(b)}"</h1>`;for(let k of v)m+=`<div class="entry-card"><h3><a href="/article/${encodeURIComponent(k.path)}">${l(k.meta.title)}</a></h3><p>${l(k.content.slice(0,200))}...</p></div>`;v.length===0&&(m+="<p>No results.</p>"),f=$(`Search: ${b}`,P(y,n),m)}else if(u.startsWith("/tag/")){let b=decodeURIComponent(u.slice(5)),v=y.findByTags([b],void 0,100),m=`<h1>Tag: <a class="tag" href="#">${l(b)}</a></h1>`;m+=`<p>${v.length} article${v.length===1?"":"s"} tagged <code>${l(b)}</code></p>`;for(let k of v)m+=`<div class="entry-card"><h3><a href="/article/${encodeURIComponent(k.path)}">${l(k.meta.title)}</a></h3><div class="meta-line">${U((k.meta.tags||[]).slice(0,6))}</div></div>`;v.length===0&&(m+="<p>No articles with this tag.</p>"),f=$(`Tag: ${b}`,P(y,n),m)}}else{let y=i?await i.getRemoteAgents():[],b=p.summary(),v=new Map(b.map(h=>[h.agentId,h])),m=[],k=new Set;for(let h of b){let w=y.find(E=>E.agentId===h.agentId);w&&w.totalArticles>h.totalArticles?m.push({...w,totalEntries:Math.max(h.totalEntries,w.totalEntries),unabsorbed:Math.max(h.unabsorbed,w.unabsorbed)}):m.push(h),k.add(h.agentId)}for(let h of y)k.has(h.agentId)||(m.push(h),k.add(h.agentId));if(u==="/"||u==="")f=Me(p,m,y);else if(u==="/entries")f=Le(p,m);else if(u==="/search")f=qe(p,x.searchParams.get("q")||"",m);else if(u.startsWith("/tag/"))f=Je(p,decodeURIComponent(u.slice(5)),m);else if(u.match(/^\/agent\/[^/]+\/tag\/.+/)){let h=u.match(/^\/agent\/([^/]+)\/tag\/(.+)$/);f=Ke(p,decodeURIComponent(h[1]),decodeURIComponent(h[2]),m)}else if(u.startsWith("/agent/")){let h=u.slice(7),w=h.indexOf("/article/");if(w===-1)f=je(p,h,m);else{let E=h.slice(0,w),N=h.slice(w+9);if(f=Fe(p,E,N,m),!f&&i){let A=y.find(T=>T.agentId===E);if(A){let T=await i.getRemoteArticle(A.peerUrl,E,N);if(T){let S=`<div class="breadcrumb"><a href="/">Hub</a> / <span class="tag">remote @ ${l(A.nodeId)}</span> / ${l(E)}</div>`;S+=`<h1>${l(T.meta.title)}</h1>`,S+='<dl class="meta">',S+=`<dt>Tags</dt><dd>${(T.meta.tags||[]).map(ge=>`<span class="tag">${ge}</span>`).join(" ")}</dd>`,S+=`<dt>Source</dt><dd><span class="tag">remote</span> ${l(A.nodeId)}</dd>`,S+=`<dt>Updated</dt><dd>${T.meta.lastUpdated}</dd>`,S+="</dl>",S+=O(T.content,new Map),f=$(T.meta.title,C(m),S)}}}}}}if(!f){z=404;let y=n?P(p.getAgentWiki(n),n):C(p.summary());f=$("Not Found",y,"<h1>Page not found</h1>")}}catch(y){z=500,f=$("Error","",`<h1>Error</h1><pre>${l(y.message)}</pre>`)}g.writeHead(z,{"Content-Type":"text/html; charset=utf-8"}),g.end(o?Ye(f,o):f)}}function Ye(e,t){e=e.replace(/(\s(?:href|action)=")\/(?!\/)/g,`$1${t}/`),e=e.replace(new RegExp(`(${t})${t}/`,"g"),`${t}/`);let n=`<a href="/admin" style="position:fixed;top:10px;right:14px;z-index:9999;padding:5px 11px;background:rgba(0,0,0,0.55);color:#fff;font:12px/1.2 'IBM Plex Sans',system-ui,sans-serif;text-decoration:none;border-radius:6px;border:1px solid rgba(255,255,255,0.18);backdrop-filter:blur(6px)">\u2190 Dashboard</a>`;return e=e.replace(/<body([^>]*)>/,`<body$1>${n}`),e}function At(e,t=4200,n,a=[],r="graph"){let s=Xe({wikiDir:e,agentFilter:n,peerUrls:a,mode:r});Ne((p,i)=>{s(p,i)}).listen(t)}export{Q as a,re as b,dt as c,pt as d,gt as e,ce as f,vt as g,xt as h,Xe as i,At as j};
742
- //# sourceMappingURL=chunk-LNXCJWOU.js.map
742
+ //# sourceMappingURL=chunk-V3U4OF7L.js.map
@@ -48,7 +48,7 @@ The "modified" field is optional and can contain updated values to pass forward.
48
48
  ... (output truncated)`:i;return s.exitCode!==0?{tool_use_id:e.id,content:`Command exited with code ${s.exitCode}:
49
49
  ${c}`,is_error:!0}:{tool_use_id:e.id,content:c||"(no output)"}}async editFile(e){let t=String(e.input.path||""),o=e.input.edits,n=ge.resolve(this.cwd,t);if(!o||o.length===0)return{tool_use_id:e.id,content:"No edits provided.",is_error:!0};let s=await W.checkFileWrite(t);if(s==="deny")return{tool_use_id:e.id,content:`File write blocked by permissions: ${t}`,is_error:!0};if(s==="skip")return{tool_use_id:e.id,content:`File write skipped (plan mode): ${t}`};if(f.has("pre:file-write")){let a=await f.execute("pre:file-write",{event:"pre:file-write",file:n,cwd:this.cwd});if(a.blocked)return{tool_use_id:e.id,content:a.message||`File edit blocked by pre:file-write hook: ${t}`,is_error:!0}}let i=await re.readFile(n,"utf8"),c=[];for(let a of o)i.includes(a.old_text)?(i=i.replace(a.old_text,a.new_text),c.push(`Replaced: "${a.old_text.slice(0,40)}..."`)):c.push(`Not found: "${a.old_text.slice(0,40)}..."`);return this.options.dryRun||await re.writeFile(n,i,"utf8"),f.has("post:file-write")&&await f.execute("post:file-write",{event:"post:file-write",file:n,fileContent:i,cwd:this.cwd}),{tool_use_id:e.id,content:`Edited ${t}:
50
50
  ${c.join(`
51
- `)}`}}async createFiles(e){let t=e.input,o=t.files||[];return{tool_use_id:e.id,content:t.summary||`Queued ${o.length} file(s) for creation.`,files:o}}async spawnAgent(e){let t=String(e.input.agent_id||""),o=String(e.input.prompt||""),n=Number(e.input.timeout_seconds)||300;if(!t||!o)return{tool_use_id:e.id,content:"agent_id and prompt are required.",is_error:!0};try{let{SubAgentManager:s}=await import("./subagent-WV7QKQ3L.js"),{getGlobalRegistry:i}=await import("./registry-T36ZIAWV.js"),c=i();if(!c)return{tool_use_id:e.id,content:"Sub-agent spawning requires the daemon to be running.",is_error:!0};let p=await new s(c).spawn({targetAgentId:t,prompt:o,parentAgentId:"orchestrator",timeout:n*1e3});return p.success?{tool_use_id:e.id,content:`Sub-agent "${t}" completed (${Math.round(p.duration/1e3)}s):
51
+ `)}`}}async createFiles(e){let t=e.input,o=t.files||[];return{tool_use_id:e.id,content:t.summary||`Queued ${o.length} file(s) for creation.`,files:o}}async spawnAgent(e){let t=String(e.input.agent_id||""),o=String(e.input.prompt||""),n=Number(e.input.timeout_seconds)||300;if(!t||!o)return{tool_use_id:e.id,content:"agent_id and prompt are required.",is_error:!0};try{let{SubAgentManager:s}=await import("./subagent-WV7QKQ3L.js"),{getGlobalRegistry:i}=await import("./registry-HK3WQ7BS.js"),c=i();if(!c)return{tool_use_id:e.id,content:"Sub-agent spawning requires the daemon to be running.",is_error:!0};let p=await new s(c).spawn({targetAgentId:t,prompt:o,parentAgentId:"orchestrator",timeout:n*1e3});return p.success?{tool_use_id:e.id,content:`Sub-agent "${t}" completed (${Math.round(p.duration/1e3)}s):
52
52
 
53
53
  ${p.content}`}:{tool_use_id:e.id,content:`Sub-agent "${t}" failed: ${p.error}`,is_error:!0}}catch(s){return{tool_use_id:e.id,content:`Failed to spawn sub-agent: ${s.message}`,is_error:!0}}}async askUser(e){let t=String(e.input.question||""),o=e.input.options,n=t;return o?.length&&(n+=`
54
54
  Options: ${o.join(", ")}`),{tool_use_id:e.id,content:"Question sent to user.",followUp:n}}};async function Me(r){let{provider:e,systemPrompt:t,messages:o,providerOptions:n,cwd:s,maxIterations:i=20,enabledTools:c,interactive:a=!0,overwrite:p=!1,dryRun:l=!1,onProgress:d,abortSignal:u}=r,m=u?{...n,abortSignal:u}:n;if(!e.generateRaw)return lt(r);let I=new se(s,{interactive:a,overwrite:p,dryRun:l,noqtaContext:r.noqtaContext,abortSignal:u}),H=we(c);if(r.noqtaContext)for(let g of st)H.push({name:g.name,description:g.description,input_schema:g.input_schema});let O=new Set;if(r.mcpTools?.length)for(let g of r.mcpTools)H.push({name:g.name,description:g.description,input_schema:g.input_schema}),O.add(g.name);let P=o.filter(g=>g.role!=="system").map(g=>({role:g.role,content:g.content})),B=[],G=0,F=0,E=0,A="",j,_=0;for(;_<i;){if(_++,u?.aborted)throw new Error("cancelled");d?.({type:"iteration_start",iteration:_}),b.step(_,`Agentic loop iteration (${H.length} tools available)`);let g,$=!!e.generateRawStream&&!!d;try{if($){let S=null,N=null,v="";for await(let x of e.generateRawStream(P,t,H,m))x.type==="text_delta"?(v+=x.text,d?.({type:"text_delta",text:x.text})):x.type==="thinking_delta"?d?.({type:"thinking_delta",text:x.text}):x.type==="raw_result"?S=x.result:x.type==="error"&&(N=x.error);if(N&&!S)throw new Error(N);if(!S)throw new Error("generateRawStream returned no raw_result event");g=S,g._streamedText=v}else g=await e.generateRaw(P,t,H,m)}catch(S){if(S.message?.includes("not available"))return lt(r);throw S}G+=g.usage.input_tokens+g.usage.output_tokens,F+=g.usage.input_tokens,E+=g.usage.output_tokens;let C=g._streamedText;for(let S of g.content)S.type==="text"&&(A+=S.text,C===void 0&&d?.({type:"text_delta",text:S.text}));if(C!==void 0&&delete g._streamedText,g.stop_reason==="end_turn"||g.stop_reason==="max_tokens")break;if(g.stop_reason==="tool_use"){let S=g.content.filter(v=>v.type==="tool_use");if(S.length===0)break;P.push({role:"assistant",content:g.content});let N=[];for(let v of S){d?.({type:"tool_call",name:v.name,id:v.id,input:v.input}),b.step(_,`Tool call: ${v.name}`);let x;if(O.has(v.name)&&r.mcpDispatch){let h=await r.mcpDispatch(v.name,v.input);x={tool_use_id:v.id,content:h.content,is_error:h.isError}}else x=await I.execute({name:v.name,id:v.id,input:v.input});d?.({type:"tool_result",name:v.name,id:v.id,content:x.content.slice(0,200),is_error:x.is_error}),x.files?.length&&(B.push(...x.files),d?.({type:"files_created",files:x.files})),x.followUp&&(j=x.followUp),N.push({type:"tool_result",tool_use_id:x.tool_use_id,content:x.content,is_error:x.is_error})}if(P.push({role:"user",content:N}),j)break;continue}break}return d?.({type:"complete",iterations:_,totalTokens:G}),{files:B,content:A,followUp:j,tokensUsed:G,inputTokens:F||void 0,outputTokens:E||void 0,iterations:_}}async function lt(r){let{provider:e,systemPrompt:t,messages:o,providerOptions:n,maxIterations:s=5}=r,c=[{role:"system",content:t+`
@@ -123,4 +123,4 @@ ${r.projectInstructions}`),r.memoryContext&&o.push(r.memoryContext),o.push(`# Ou
123
123
  Generate output appropriate for: ${e}. Use the \`create_files\` tool to output all files.`),o.join(`
124
124
 
125
125
  `)}export{Fe as a,Wt as b,zt as c,qe as d,Be as e,Je as f,Ke as g,Se as h,ee as i,Pe as j,le as k,te as l,xt as m,oe as n,St as o,f as p,Xe as q,Ze as r,Ce as s,de as t,W as u,ne as v,rt as w,$e as x,Re as y,se as z,dt as A,Qn as B,Vn as C};
126
- //# sourceMappingURL=chunk-NGSIRE4X.js.map
126
+ //# sourceMappingURL=chunk-VT5XYFDD.js.map
package/dist/cli.js CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
- import{a as s}from"./chunk-KUCCW2VG.js";import"./chunk-G57RZCXM.js";import"./chunk-TRJTTBE2.js";import"./chunk-LNXCJWOU.js";import"./chunk-UCQ2N3KO.js";import"./chunk-P4VWIVKN.js";import"./chunk-GV7S5BAX.js";import"./chunk-GSX4NK2N.js";import"./chunk-SZDACK6O.js";import"./chunk-TMKLHTCG.js";import"./chunk-3WQFCIB6.js";import"./chunk-HA3XI7Z2.js";import"./chunk-Q6YO7LYE.js";import"./chunk-M4AMWP3H.js";import"./chunk-NGSIRE4X.js";import"./chunk-SFQUP3BP.js";import"./chunk-I3SIXTJO.js";import"./chunk-67Q4DCPS.js";import"./chunk-LDHPMJ7M.js";import"./chunk-2WVX3LEC.js";import"./chunk-76Z4VHDX.js";import"./chunk-W4YR2RO2.js";import"./chunk-AFRHKA7B.js";import"./chunk-53GCFZPR.js";import"./chunk-FDMWOPEL.js";import"./chunk-JXWAGMI2.js";import"./chunk-ISEBLHWX.js";import"./chunk-HR4JSRZS.js";import"./chunk-VWTBHLMX.js";import"./chunk-BFXONUUN.js";import"./chunk-JTJIPNXY.js";import"./chunk-64P4QHSZ.js";import"./chunk-BFZUG66X.js";import"./chunk-SR3X25TN.js";import"./chunk-53NRX2NA.js";import"./chunk-FDWOECJY.js";import"./chunk-VJUTQAPJ.js";import"./chunk-DJEZ2HVU.js";import"./chunk-DSYKYZMT.js";import"./chunk-5U35WAZF.js";import"./chunk-QOYAX2FT.js";import"./chunk-4YCH6IZV.js";process.on("SIGINT",()=>process.exit(0));process.on("SIGTERM",()=>process.exit(0));async function o(){let r=await s();if(process.argv.slice(2).length===0){r.outputHelp();return}r.parse()}o();
2
+ import{a as s}from"./chunk-UHE5FCPB.js";import"./chunk-O6YPEOQF.js";import"./chunk-BVGJSPW4.js";import"./chunk-V3U4OF7L.js";import"./chunk-UCQ2N3KO.js";import"./chunk-P4VWIVKN.js";import"./chunk-GV7S5BAX.js";import"./chunk-GSX4NK2N.js";import"./chunk-SZDACK6O.js";import"./chunk-METYYZKQ.js";import"./chunk-3WQFCIB6.js";import"./chunk-E5CXCI33.js";import"./chunk-MTAPOCGA.js";import"./chunk-M4AMWP3H.js";import"./chunk-VT5XYFDD.js";import"./chunk-SFQUP3BP.js";import"./chunk-I3SIXTJO.js";import"./chunk-67Q4DCPS.js";import"./chunk-LDHPMJ7M.js";import"./chunk-2WVX3LEC.js";import"./chunk-76Z4VHDX.js";import"./chunk-W4YR2RO2.js";import"./chunk-AFRHKA7B.js";import"./chunk-D46VZ7K7.js";import"./chunk-K2CAPYES.js";import"./chunk-BTHHSY7D.js";import"./chunk-ISEBLHWX.js";import"./chunk-HR4JSRZS.js";import"./chunk-VWTBHLMX.js";import"./chunk-BFXONUUN.js";import"./chunk-JTJIPNXY.js";import"./chunk-64P4QHSZ.js";import"./chunk-BFZUG66X.js";import"./chunk-SR3X25TN.js";import"./chunk-53NRX2NA.js";import"./chunk-FDWOECJY.js";import"./chunk-VJUTQAPJ.js";import"./chunk-DJEZ2HVU.js";import"./chunk-DSYKYZMT.js";import"./chunk-5U35WAZF.js";import"./chunk-QOYAX2FT.js";import"./chunk-4YCH6IZV.js";process.on("SIGINT",()=>process.exit(0));process.on("SIGTERM",()=>process.exit(0));async function o(){let r=await s();if(process.argv.slice(2).length===0){r.outputHelp();return}r.parse()}o();
3
3
  //# sourceMappingURL=cli.js.map
@@ -0,0 +1,2 @@
1
+ import{a,b,c,d,e,f,g}from"./chunk-O6YPEOQF.js";import"./chunk-BTHHSY7D.js";import"./chunk-4YCH6IZV.js";export{b as fetchAgents,d as fetchCrons,c as fetchProcesses,e as killProcess,a as resolveConn,f as sendTask,g as streamTask};
2
+ //# sourceMappingURL=client-HGKAC6VP.js.map
@@ -1,2 +1,2 @@
1
- import{c as a,d as b,e as c,f as d,g as e}from"./chunk-JXWAGMI2.js";import"./chunk-4YCH6IZV.js";export{a as INTEGRATION_KINDS,b as daemonConfigSchema,c as expandEnvVars,d as loadDaemonConfig,e as validateWorkspaces};
2
- //# sourceMappingURL=config-7FSZFRTQ.js.map
1
+ import{c as a,d as b,e as c,f as d,g as e}from"./chunk-BTHHSY7D.js";import"./chunk-4YCH6IZV.js";export{a as INTEGRATION_KINDS,b as daemonConfigSchema,c as expandEnvVars,d as loadDaemonConfig,e as validateWorkspaces};
2
+ //# sourceMappingURL=config-A4RWEJHV.js.map
@@ -0,0 +1,2 @@
1
+ import{a,b,c,d}from"./chunk-K2CAPYES.js";import"./chunk-BTHHSY7D.js";import"./chunk-4YCH6IZV.js";export{a as applyConfigMutation,c as getAtPath,b as setAtPath,d as unsetAtPath};
2
+ //# sourceMappingURL=config-mutator-MNSFUN7D.js.map
@@ -0,0 +1,2 @@
1
+ import{a,b}from"./chunk-BVGJSPW4.js";import"./chunk-BTHHSY7D.js";import"./chunk-4YCH6IZV.js";export{b as doctor,a as runDoctorChecks};
2
+ //# sourceMappingURL=doctor-3Q36ZFE6.js.map
package/dist/index.d.ts CHANGED
@@ -3201,6 +3201,21 @@ declare const daemonConfigSchema: z.ZodObject<{
3201
3201
  url: string;
3202
3202
  token?: string | undefined;
3203
3203
  }>, "many">>;
3204
+ /** Empty by default — a node publishes no inboxes until an operator
3205
+ * declares one, so this feature is opt-in per node. */
3206
+ inboxes: z.ZodDefault<z.ZodArray<z.ZodObject<{
3207
+ name: z.ZodString;
3208
+ agent: z.ZodString;
3209
+ enabled: z.ZodDefault<z.ZodBoolean>;
3210
+ }, "strip", z.ZodTypeAny, {
3211
+ enabled: boolean;
3212
+ agent: string;
3213
+ name: string;
3214
+ }, {
3215
+ agent: string;
3216
+ name: string;
3217
+ enabled?: boolean | undefined;
3218
+ }>, "many">>;
3204
3219
  discovery: z.ZodDefault<z.ZodEnum<["static", "mdns"]>>;
3205
3220
  healthCheck: z.ZodDefault<z.ZodObject<{
3206
3221
  interval: z.ZodDefault<z.ZodNumber>;
@@ -3219,6 +3234,11 @@ declare const daemonConfigSchema: z.ZodObject<{
3219
3234
  url: string;
3220
3235
  token?: string | undefined;
3221
3236
  }[];
3237
+ inboxes: {
3238
+ enabled: boolean;
3239
+ agent: string;
3240
+ name: string;
3241
+ }[];
3222
3242
  discovery: "static" | "mdns";
3223
3243
  healthCheck: {
3224
3244
  timeout: number;
@@ -3231,6 +3251,11 @@ declare const daemonConfigSchema: z.ZodObject<{
3231
3251
  url: string;
3232
3252
  token?: string | undefined;
3233
3253
  }[] | undefined;
3254
+ inboxes?: {
3255
+ agent: string;
3256
+ name: string;
3257
+ enabled?: boolean | undefined;
3258
+ }[] | undefined;
3234
3259
  discovery?: "static" | "mdns" | undefined;
3235
3260
  healthCheck?: {
3236
3261
  timeout?: number | undefined;
@@ -4128,6 +4153,11 @@ declare const daemonConfigSchema: z.ZodObject<{
4128
4153
  url: string;
4129
4154
  token?: string | undefined;
4130
4155
  }[];
4156
+ inboxes: {
4157
+ enabled: boolean;
4158
+ agent: string;
4159
+ name: string;
4160
+ }[];
4131
4161
  discovery: "static" | "mdns";
4132
4162
  healthCheck: {
4133
4163
  timeout: number;
@@ -4550,6 +4580,11 @@ declare const daemonConfigSchema: z.ZodObject<{
4550
4580
  url: string;
4551
4581
  token?: string | undefined;
4552
4582
  }[] | undefined;
4583
+ inboxes?: {
4584
+ agent: string;
4585
+ name: string;
4586
+ enabled?: boolean | undefined;
4587
+ }[] | undefined;
4553
4588
  discovery?: "static" | "mdns" | undefined;
4554
4589
  healthCheck?: {
4555
4590
  timeout?: number | undefined;
@@ -5709,7 +5744,7 @@ interface TokenUsage {
5709
5744
  * Non-streaming — waits for full response.
5710
5745
  */
5711
5746
  declare function executeClaudeCode(agent: AgentDef, task: AgentTask, historyContext?: string, resumeSessionId?: string, abortSignal?: AbortSignal): Promise<AgentResponse>;
5712
- declare function executeOpenCodeCli(agent: AgentDef, task: AgentTask, onDelta?: StreamCallback, historyContext?: string, resumeSessionId?: string, onEvent?: (event: any) => void, abortSignal?: AbortSignal): Promise<AgentResponse>;
5747
+ declare function executeOpenCodeCli(agent: AgentDef, task: AgentTask, onDelta?: StreamCallback, historyContext?: string, resumeSessionId?: string, onEvent?: (event: any) => void, abortSignal?: AbortSignal, onThinking?: ThinkingCallback): Promise<AgentResponse>;
5713
5748
  /**
5714
5749
  * Execute a task using the Claude Agent SDK (tier: "sdk").
5715
5750
  */
@@ -8599,6 +8634,28 @@ declare class MessageRouter {
8599
8634
  private attachUiExtras;
8600
8635
  private adapterEdit;
8601
8636
  private adapterReact;
8637
+ /**
8638
+ * Threads that have already been told about a mesh failure, keyed
8639
+ * `${channel}:${chatId}`. Cleared on the next success for that thread, so a
8640
+ * fresh outage notifies again but a burst inside one outage does not.
8641
+ */
8642
+ private meshFailureNotified;
8643
+ /**
8644
+ * A mesh-routed task failed. React ❌ (as the agent, where the channel
8645
+ * supports identity) and — the FIRST time this thread fails — post one
8646
+ * short comment saying so.
8647
+ *
8648
+ * Why a comment at all: this used to be ❌-only, on the reasoning that
8649
+ * transient failures would pollute the thread. In practice a reporter who
8650
+ * @-mentions a bot and gets 👀 then silence assumes the bot is ignoring
8651
+ * them and keeps re-pinging — on noqta/minbar#46 that was 9 mentions over
8652
+ * 74 minutes of upstream 529s, every one of them silently dropped. One
8653
+ * comment per outage is far cheaper than that. Nothing retries on its own,
8654
+ * so the text says plainly that a re-mention is what resumes it.
8655
+ */
8656
+ private notifyMeshFailure;
8657
+ /** A mesh-routed task succeeded — re-arm the failure notice for this thread. */
8658
+ private clearMeshFailure;
8602
8659
  private startTypingLoop;
8603
8660
  private traceRoute;
8604
8661
  private runRoutingPipeline;
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import{a as U}from"./chunk-JP5IEXR7.js";import{a as xt,b as re,c as ae,d as Ct,e as Pt,f as bt,u as $t,v as Tt,w as Rt}from"./chunk-TMKLHTCG.js";import"./chunk-3WQFCIB6.js";import{C as St,d as lt,e as ct,f as dt,g as pt,h as gt}from"./chunk-HA3XI7Z2.js";import"./chunk-Q6YO7LYE.js";import"./chunk-M4AMWP3H.js";import{A as H,B as E,C as I,a as be,b as $e,c as Te,d as je,e as _e,f as Ue,g as Be,h as We,i as qe,j as Ve,k as Ye,l as F,m as Q,n as Ze,o as et,p as tt,q as j,r as st,s as ot,t as nt,u as P,v as Z,w as it,x as rt,y as at,z as vt}from"./chunk-NGSIRE4X.js";import{a as X,b as M,c as _}from"./chunk-SFQUP3BP.js";import"./chunk-I3SIXTJO.js";import"./chunk-67Q4DCPS.js";import"./chunk-LDHPMJ7M.js";import"./chunk-2WVX3LEC.js";import"./chunk-76Z4VHDX.js";import"./chunk-W4YR2RO2.js";import"./chunk-AFRHKA7B.js";import{i as wt}from"./chunk-53GCFZPR.js";import"./chunk-FDMWOPEL.js";import{d as ht,f as yt,g as kt}from"./chunk-JXWAGMI2.js";import"./chunk-ISEBLHWX.js";import"./chunk-HR4JSRZS.js";import"./chunk-VWTBHLMX.js";import{a as mt,b as ut,e as ft}from"./chunk-BFXONUUN.js";import"./chunk-JTJIPNXY.js";import"./chunk-64P4QHSZ.js";import"./chunk-BFZUG66X.js";import"./chunk-SR3X25TN.js";import"./chunk-53NRX2NA.js";import{a as Re,b as Ae,c as Me,d as Ee,e as Ie,f as Oe,g as Ge,h as De,i as Le,j as Ne,k as Fe,m as A}from"./chunk-FDWOECJY.js";import{a as m}from"./chunk-VJUTQAPJ.js";import{a as He,b as Je,c as N,d as Ke}from"./chunk-DJEZ2HVU.js";import{a as ze,b as Xe,e as Qe}from"./chunk-DSYKYZMT.js";import"./chunk-5U35WAZF.js";import"./chunk-QOYAX2FT.js";import"./chunk-4YCH6IZV.js";import{execa as At}from"execa";import{existsSync as le,promises as ee}from"fs";import x from"path";import pe from"node-fetch";async function Mt(n,e){let t=n.split("/");if(t.length<2)throw new Error(`Invalid skill package ID: ${n}. Expected format: owner/repo`);let s=t[0],i=t[1],o=t[2];try{let a=o?`${s}/${i}/${o}`:`${s}/${i}`;await At("npx",["-y","skills","add",a],{cwd:e,stdio:"pipe"}),m.success(`Installed skill package: ${n}`);let r=x.resolve(e,".skills",`${s}_${i}`);if(le(r))return await de(r,n);let l=x.resolve(e,".skills");return le(l)?await de(l,n):[]}catch{return m.info(`Fetching skills directly from GitHub: ${s}/${i}`),await Et(s,i,o,e)}}async function Et(n,e,t,s){let i=[];try{let o=`https://api.github.com/repos/${n}/${e}/git/trees/main?recursive=1`,a=await pe(o);if(!a.ok)throw new Error(`GitHub API error: ${a.status}`);let l=(await a.json()).tree.filter(c=>c.type==="blob"&&c.path.endsWith("SKILL.md"));if(t){let c=l.find(g=>g.path.includes(`/${t}/`)||g.path===`${t}/SKILL.md`);if(c){let g=await ce(n,e,c.path,s);g&&i.push(g)}}else for(let c of l){let g=await ce(n,e,c.path,s);g&&i.push(g)}}catch(o){m.error(`Failed to fetch skills from GitHub: ${o.message}`)}return i}async function ce(n,e,t,s){try{let i=`https://raw.githubusercontent.com/${n}/${e}/main/${t}`,o=await pe(i);if(!o.ok)return null;let a=await o.text(),r=N(a);if(r){r.source="remote",r.packageId=`${n}/${e}`;let l=x.dirname(t),c=x.resolve(s,".skills",`${n}_${e}`,l);await ee.mkdir(c,{recursive:!0}),await ee.writeFile(x.resolve(c,"SKILL.md"),a),r.path=x.resolve(c,"SKILL.md")}return r}catch{return null}}async function de(n,e){let t=[],{default:s}=await import("fast-glob"),i=await s.glob("**/SKILL.md",{cwd:n,deep:5});for(let o of i)try{let a=x.resolve(n,o),r=await ee.readFile(a,"utf8"),l=N(r);l&&(l.source="remote",l.path=a,l.packageId=e,t.push(l))}catch{}return t}async function It(n,e,t,s,i){let o=["---",`name: ${n}`,`description: ${e}`];if(s?.length){o.push("tags:");for(let a of s)o.push(` - ${a}`)}if(i?.length){o.push("globs:");for(let a of i)o.push(` - ${a}`)}return o.push("---"),`${o.join(`
1
+ import{a as U}from"./chunk-JP5IEXR7.js";import{a as xt,b as re,c as ae,d as Ct,e as Pt,f as bt,u as $t,v as Tt,w as Rt}from"./chunk-METYYZKQ.js";import"./chunk-3WQFCIB6.js";import{D as St,d as lt,e as ct,f as dt,g as pt,h as gt}from"./chunk-E5CXCI33.js";import"./chunk-MTAPOCGA.js";import"./chunk-M4AMWP3H.js";import{A as H,B as E,C as I,a as be,b as $e,c as Te,d as je,e as _e,f as Ue,g as Be,h as We,i as qe,j as Ve,k as Ye,l as F,m as Q,n as Ze,o as et,p as tt,q as j,r as st,s as ot,t as nt,u as P,v as Z,w as it,x as rt,y as at,z as vt}from"./chunk-VT5XYFDD.js";import{a as X,b as M,c as _}from"./chunk-SFQUP3BP.js";import"./chunk-I3SIXTJO.js";import"./chunk-67Q4DCPS.js";import"./chunk-LDHPMJ7M.js";import"./chunk-2WVX3LEC.js";import"./chunk-76Z4VHDX.js";import"./chunk-W4YR2RO2.js";import"./chunk-AFRHKA7B.js";import{i as wt}from"./chunk-D46VZ7K7.js";import"./chunk-K2CAPYES.js";import{d as ht,f as yt,g as kt}from"./chunk-BTHHSY7D.js";import"./chunk-ISEBLHWX.js";import"./chunk-HR4JSRZS.js";import"./chunk-VWTBHLMX.js";import{a as mt,b as ut,e as ft}from"./chunk-BFXONUUN.js";import"./chunk-JTJIPNXY.js";import"./chunk-64P4QHSZ.js";import"./chunk-BFZUG66X.js";import"./chunk-SR3X25TN.js";import"./chunk-53NRX2NA.js";import{a as Re,b as Ae,c as Me,d as Ee,e as Ie,f as Oe,g as Ge,h as De,i as Le,j as Ne,k as Fe,m as A}from"./chunk-FDWOECJY.js";import{a as m}from"./chunk-VJUTQAPJ.js";import{a as He,b as Je,c as N,d as Ke}from"./chunk-DJEZ2HVU.js";import{a as ze,b as Xe,e as Qe}from"./chunk-DSYKYZMT.js";import"./chunk-5U35WAZF.js";import"./chunk-QOYAX2FT.js";import"./chunk-4YCH6IZV.js";import{execa as At}from"execa";import{existsSync as le,promises as ee}from"fs";import x from"path";import pe from"node-fetch";async function Mt(n,e){let t=n.split("/");if(t.length<2)throw new Error(`Invalid skill package ID: ${n}. Expected format: owner/repo`);let s=t[0],i=t[1],o=t[2];try{let a=o?`${s}/${i}/${o}`:`${s}/${i}`;await At("npx",["-y","skills","add",a],{cwd:e,stdio:"pipe"}),m.success(`Installed skill package: ${n}`);let r=x.resolve(e,".skills",`${s}_${i}`);if(le(r))return await de(r,n);let l=x.resolve(e,".skills");return le(l)?await de(l,n):[]}catch{return m.info(`Fetching skills directly from GitHub: ${s}/${i}`),await Et(s,i,o,e)}}async function Et(n,e,t,s){let i=[];try{let o=`https://api.github.com/repos/${n}/${e}/git/trees/main?recursive=1`,a=await pe(o);if(!a.ok)throw new Error(`GitHub API error: ${a.status}`);let l=(await a.json()).tree.filter(c=>c.type==="blob"&&c.path.endsWith("SKILL.md"));if(t){let c=l.find(g=>g.path.includes(`/${t}/`)||g.path===`${t}/SKILL.md`);if(c){let g=await ce(n,e,c.path,s);g&&i.push(g)}}else for(let c of l){let g=await ce(n,e,c.path,s);g&&i.push(g)}}catch(o){m.error(`Failed to fetch skills from GitHub: ${o.message}`)}return i}async function ce(n,e,t,s){try{let i=`https://raw.githubusercontent.com/${n}/${e}/main/${t}`,o=await pe(i);if(!o.ok)return null;let a=await o.text(),r=N(a);if(r){r.source="remote",r.packageId=`${n}/${e}`;let l=x.dirname(t),c=x.resolve(s,".skills",`${n}_${e}`,l);await ee.mkdir(c,{recursive:!0}),await ee.writeFile(x.resolve(c,"SKILL.md"),a),r.path=x.resolve(c,"SKILL.md")}return r}catch{return null}}async function de(n,e){let t=[],{default:s}=await import("fast-glob"),i=await s.glob("**/SKILL.md",{cwd:n,deep:5});for(let o of i)try{let a=x.resolve(n,o),r=await ee.readFile(a,"utf8"),l=N(r);l&&(l.source="remote",l.path=a,l.packageId=e,t.push(l))}catch{}return t}async function It(n,e,t,s,i){let o=["---",`name: ${n}`,`description: ${e}`];if(s?.length){o.push("tags:");for(let a of s)o.push(` - ${a}`)}if(i?.length){o.push("globs:");for(let a of i)o.push(` - ${a}`)}return o.push("---"),`${o.join(`
2
2
  `)}
3
3
 
4
4
  ${t}`}async function Ot(n){let{loadLocalSkills:e}=await import("./loader-5CA3O5GM.js");return e(n)}async function Gt(n,e,t,s,i){let a=[{role:"system",content:`You are a skill author for the Agent Skills ecosystem (skills.sh).
@@ -1,2 +1,2 @@
1
- import{a}from"./chunk-KUCCW2VG.js";import"./chunk-G57RZCXM.js";import"./chunk-TRJTTBE2.js";import"./chunk-LNXCJWOU.js";import"./chunk-UCQ2N3KO.js";import"./chunk-P4VWIVKN.js";import"./chunk-GV7S5BAX.js";import"./chunk-GSX4NK2N.js";import"./chunk-SZDACK6O.js";import"./chunk-TMKLHTCG.js";import"./chunk-3WQFCIB6.js";import"./chunk-HA3XI7Z2.js";import"./chunk-Q6YO7LYE.js";import"./chunk-M4AMWP3H.js";import"./chunk-NGSIRE4X.js";import"./chunk-SFQUP3BP.js";import"./chunk-I3SIXTJO.js";import"./chunk-67Q4DCPS.js";import"./chunk-LDHPMJ7M.js";import"./chunk-2WVX3LEC.js";import"./chunk-76Z4VHDX.js";import"./chunk-W4YR2RO2.js";import"./chunk-AFRHKA7B.js";import"./chunk-53GCFZPR.js";import"./chunk-FDMWOPEL.js";import"./chunk-JXWAGMI2.js";import"./chunk-ISEBLHWX.js";import"./chunk-HR4JSRZS.js";import"./chunk-VWTBHLMX.js";import"./chunk-BFXONUUN.js";import"./chunk-JTJIPNXY.js";import"./chunk-64P4QHSZ.js";import"./chunk-BFZUG66X.js";import"./chunk-SR3X25TN.js";import"./chunk-53NRX2NA.js";import"./chunk-FDWOECJY.js";import"./chunk-VJUTQAPJ.js";import"./chunk-DJEZ2HVU.js";import"./chunk-DSYKYZMT.js";import"./chunk-5U35WAZF.js";import"./chunk-QOYAX2FT.js";import"./chunk-4YCH6IZV.js";export{a as buildProgram};
2
- //# sourceMappingURL=program-WVAVJFND.js.map
1
+ import{a}from"./chunk-UHE5FCPB.js";import"./chunk-O6YPEOQF.js";import"./chunk-BVGJSPW4.js";import"./chunk-V3U4OF7L.js";import"./chunk-UCQ2N3KO.js";import"./chunk-P4VWIVKN.js";import"./chunk-GV7S5BAX.js";import"./chunk-GSX4NK2N.js";import"./chunk-SZDACK6O.js";import"./chunk-METYYZKQ.js";import"./chunk-3WQFCIB6.js";import"./chunk-E5CXCI33.js";import"./chunk-MTAPOCGA.js";import"./chunk-M4AMWP3H.js";import"./chunk-VT5XYFDD.js";import"./chunk-SFQUP3BP.js";import"./chunk-I3SIXTJO.js";import"./chunk-67Q4DCPS.js";import"./chunk-LDHPMJ7M.js";import"./chunk-2WVX3LEC.js";import"./chunk-76Z4VHDX.js";import"./chunk-W4YR2RO2.js";import"./chunk-AFRHKA7B.js";import"./chunk-D46VZ7K7.js";import"./chunk-K2CAPYES.js";import"./chunk-BTHHSY7D.js";import"./chunk-ISEBLHWX.js";import"./chunk-HR4JSRZS.js";import"./chunk-VWTBHLMX.js";import"./chunk-BFXONUUN.js";import"./chunk-JTJIPNXY.js";import"./chunk-64P4QHSZ.js";import"./chunk-BFZUG66X.js";import"./chunk-SR3X25TN.js";import"./chunk-53NRX2NA.js";import"./chunk-FDWOECJY.js";import"./chunk-VJUTQAPJ.js";import"./chunk-DJEZ2HVU.js";import"./chunk-DSYKYZMT.js";import"./chunk-5U35WAZF.js";import"./chunk-QOYAX2FT.js";import"./chunk-4YCH6IZV.js";export{a as buildProgram};
2
+ //# sourceMappingURL=program-SAUNRCCD.js.map
@@ -1,2 +1,2 @@
1
- import{A as f,B as g,C as h,v as a,w as b,x as c,y as d,z as e}from"./chunk-HA3XI7Z2.js";import"./chunk-Q6YO7LYE.js";import"./chunk-M4AMWP3H.js";import"./chunk-67Q4DCPS.js";import"./chunk-W4YR2RO2.js";import"./chunk-AFRHKA7B.js";import"./chunk-53GCFZPR.js";import"./chunk-FDMWOPEL.js";import"./chunk-JXWAGMI2.js";import"./chunk-ISEBLHWX.js";import"./chunk-HR4JSRZS.js";import"./chunk-VWTBHLMX.js";import"./chunk-BFXONUUN.js";import"./chunk-JTJIPNXY.js";import"./chunk-64P4QHSZ.js";import"./chunk-BFZUG66X.js";import"./chunk-SR3X25TN.js";import"./chunk-53NRX2NA.js";import"./chunk-FDWOECJY.js";import"./chunk-VJUTQAPJ.js";import"./chunk-DSYKYZMT.js";import"./chunk-5U35WAZF.js";import"./chunk-QOYAX2FT.js";import"./chunk-4YCH6IZV.js";export{h as AgentRegistry,c as TRACE_STEP_SUMMARY_BYTES,d as clipForTrace,g as emitTraceStepsFromStreamEvent,f as firstMissingRequiredTool,b as getGlobalRegistry,a as setGlobalRegistry,e as tallyToolUses};
2
- //# sourceMappingURL=registry-T36ZIAWV.js.map
1
+ import{A as e,B as f,C as g,D as h,w as a,x as b,y as c,z as d}from"./chunk-E5CXCI33.js";import"./chunk-MTAPOCGA.js";import"./chunk-M4AMWP3H.js";import"./chunk-67Q4DCPS.js";import"./chunk-W4YR2RO2.js";import"./chunk-AFRHKA7B.js";import"./chunk-D46VZ7K7.js";import"./chunk-K2CAPYES.js";import"./chunk-BTHHSY7D.js";import"./chunk-ISEBLHWX.js";import"./chunk-HR4JSRZS.js";import"./chunk-VWTBHLMX.js";import"./chunk-BFXONUUN.js";import"./chunk-JTJIPNXY.js";import"./chunk-64P4QHSZ.js";import"./chunk-BFZUG66X.js";import"./chunk-SR3X25TN.js";import"./chunk-53NRX2NA.js";import"./chunk-FDWOECJY.js";import"./chunk-VJUTQAPJ.js";import"./chunk-DSYKYZMT.js";import"./chunk-5U35WAZF.js";import"./chunk-QOYAX2FT.js";import"./chunk-4YCH6IZV.js";export{h as AgentRegistry,c as TRACE_STEP_SUMMARY_BYTES,d as clipForTrace,g as emitTraceStepsFromStreamEvent,f as firstMissingRequiredTool,b as getGlobalRegistry,a as setGlobalRegistry,e as tallyToolUses};
2
+ //# sourceMappingURL=registry-HK3WQ7BS.js.map
@@ -0,0 +1,2 @@
1
+ import{h as a,i as b}from"./chunk-D46VZ7K7.js";import"./chunk-K2CAPYES.js";import"./chunk-BTHHSY7D.js";import"./chunk-VJUTQAPJ.js";import"./chunk-4YCH6IZV.js";export{b as CronScheduler,a as getNextCronDate};
2
+ //# sourceMappingURL=scheduler-6T2SU5ST.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentix-cli",
3
- "version": "0.25.0",
3
+ "version": "0.26.0",
4
4
  "description": "AI operations layer for small & medium businesses. Routes Telegram, WhatsApp, Slack, Discord, GitLab, crons, webhooks, and mesh tasks to AI agents on Claude, OpenAI, or any LLM. Web wizard for non-technical operators, CLI for engineers. Self-hosted.",
5
5
  "license": "MIT",
6
6
  "author": {