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.
- package/README.md +2 -0
- package/dist/{App-6Y7B3YQH.js → App-BPNHIGUX.js} +2 -2
- package/dist/{ChatApp-KIEUJ2DS.js → ChatApp-6XSSZB4U.js} +2 -2
- package/dist/{agent-QGZIAZMY.js → agent-5QMITZT6.js} +2 -2
- package/dist/{board-dashboard-CQ5F4GPD.js → board-dashboard-M3372FLO.js} +1191 -225
- package/dist/board-dashboard-M3372FLO.js.map +1 -0
- package/dist/{chunk-JXWAGMI2.js → chunk-BTHHSY7D.js} +7 -7
- package/dist/chunk-BTHHSY7D.js.map +1 -0
- package/dist/{chunk-TRJTTBE2.js → chunk-BVGJSPW4.js} +2 -2
- package/dist/{chunk-53GCFZPR.js → chunk-D46VZ7K7.js} +2 -2
- package/dist/{chunk-HA3XI7Z2.js → chunk-E5CXCI33.js} +27 -27
- package/dist/chunk-E5CXCI33.js.map +1 -0
- package/dist/{chunk-FDMWOPEL.js → chunk-K2CAPYES.js} +2 -2
- package/dist/{chunk-TMKLHTCG.js → chunk-METYYZKQ.js} +264 -120
- package/dist/chunk-METYYZKQ.js.map +1 -0
- package/dist/{chunk-Q6YO7LYE.js → chunk-MTAPOCGA.js} +2 -2
- package/dist/{chunk-G57RZCXM.js → chunk-O6YPEOQF.js} +2 -2
- package/dist/{chunk-KUCCW2VG.js → chunk-UHE5FCPB.js} +8 -8
- package/dist/{chunk-LNXCJWOU.js → chunk-V3U4OF7L.js} +2 -2
- package/dist/{chunk-NGSIRE4X.js → chunk-VT5XYFDD.js} +2 -2
- package/dist/cli.js +1 -1
- package/dist/client-HGKAC6VP.js +2 -0
- package/dist/{config-7FSZFRTQ.js → config-A4RWEJHV.js} +2 -2
- package/dist/config-mutator-MNSFUN7D.js +2 -0
- package/dist/doctor-3Q36ZFE6.js +2 -0
- package/dist/index.d.ts +58 -1
- package/dist/index.js +1 -1
- package/dist/{program-WVAVJFND.js → program-SAUNRCCD.js} +2 -2
- package/dist/{registry-T36ZIAWV.js → registry-HK3WQ7BS.js} +2 -2
- package/dist/scheduler-6T2SU5ST.js +2 -0
- package/package.json +1 -1
- package/dist/board-dashboard-CQ5F4GPD.js.map +0 -1
- package/dist/chunk-HA3XI7Z2.js.map +0 -1
- package/dist/chunk-JXWAGMI2.js.map +0 -1
- package/dist/chunk-TMKLHTCG.js.map +0 -1
- package/dist/client-GGVVLOOF.js +0 -2
- package/dist/config-mutator-POCOYYJ4.js +0 -2
- package/dist/doctor-DHLBEKA4.js +0 -2
- package/dist/scheduler-GH7TIKYS.js +0 -2
- /package/dist/{App-6Y7B3YQH.js.map → App-BPNHIGUX.js.map} +0 -0
- /package/dist/{ChatApp-KIEUJ2DS.js.map → ChatApp-6XSSZB4U.js.map} +0 -0
- /package/dist/{agent-QGZIAZMY.js.map → agent-5QMITZT6.js.map} +0 -0
- /package/dist/{chunk-TRJTTBE2.js.map → chunk-BVGJSPW4.js.map} +0 -0
- /package/dist/{chunk-53GCFZPR.js.map → chunk-D46VZ7K7.js.map} +0 -0
- /package/dist/{chunk-FDMWOPEL.js.map → chunk-K2CAPYES.js.map} +0 -0
- /package/dist/{chunk-Q6YO7LYE.js.map → chunk-MTAPOCGA.js.map} +0 -0
- /package/dist/{chunk-G57RZCXM.js.map → chunk-O6YPEOQF.js.map} +0 -0
- /package/dist/{chunk-KUCCW2VG.js.map → chunk-UHE5FCPB.js.map} +0 -0
- /package/dist/{chunk-LNXCJWOU.js.map → chunk-V3U4OF7L.js.map} +0 -0
- /package/dist/{chunk-NGSIRE4X.js.map → chunk-VT5XYFDD.js.map} +0 -0
- /package/dist/{client-GGVVLOOF.js.map → client-HGKAC6VP.js.map} +0 -0
- /package/dist/{config-7FSZFRTQ.js.map → config-A4RWEJHV.js.map} +0 -0
- /package/dist/{config-mutator-POCOYYJ4.js.map → config-mutator-MNSFUN7D.js.map} +0 -0
- /package/dist/{doctor-DHLBEKA4.js.map → doctor-3Q36ZFE6.js.map} +0 -0
- /package/dist/{program-WVAVJFND.js.map → program-SAUNRCCD.js.map} +0 -0
- /package/dist/{registry-T36ZIAWV.js.map → registry-HK3WQ7BS.js.map} +0 -0
- /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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{c as a,d as b,e as c,f as d,g as e}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=config-
|
|
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
|
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-
|
|
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-
|
|
2
|
-
//# sourceMappingURL=program-
|
|
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
|
|
2
|
-
//# sourceMappingURL=registry-
|
|
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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentix-cli",
|
|
3
|
-
"version": "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": {
|