agentix-cli 0.48.0 → 0.50.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 (151) hide show
  1. package/README.md +17 -0
  2. package/apps/mac-voice/Sources/AgentXVoice/AgentClient.swift +17 -5
  3. package/apps/mac-voice/Sources/AgentXVoice/Config.swift +6 -1
  4. package/apps/mac-voice/Sources/AgentXVoice/main.swift +5 -2
  5. package/dist/{App-EXB4HP3B.js → App-KE4SURSS.js} +2 -2
  6. package/dist/{ChatApp-XMNE3SPH.js → ChatApp-NNHIKXO2.js} +2 -2
  7. package/dist/{agent-ORYXXL5K.js → agent-RY7Z3IYY.js} +2 -2
  8. package/dist/{board-dashboard-2B3HYIXD.js → board-dashboard-RUOASCSQ.js} +6 -6
  9. package/dist/board-dashboard-RUOASCSQ.js.map +1 -0
  10. package/dist/{chunk-DLKRPK5M.js → chunk-4BNQSUWV.js} +7 -2
  11. package/dist/{chunk-DLKRPK5M.js.map → chunk-4BNQSUWV.js.map} +1 -1
  12. package/dist/{chunk-26OP3X5B.js → chunk-4NBWF4TL.js} +2 -2
  13. package/dist/{chunk-P7MR53U7.js → chunk-4TITGMPX.js} +2 -2
  14. package/dist/{chunk-XM7ZQW4F.js → chunk-5ALS7SVV.js} +2 -2
  15. package/dist/{chunk-3ZHMIWSV.js → chunk-5XQCGPQJ.js} +2 -2
  16. package/dist/{chunk-DVNIFP7S.js → chunk-6VKCUMCN.js} +2 -2
  17. package/dist/{chunk-GCHUE3TN.js → chunk-7WDJW37G.js} +2 -2
  18. package/dist/{chunk-FRHSQVFN.js → chunk-AQASR6KR.js} +3 -3
  19. package/dist/chunk-AQASR6KR.js.map +1 -0
  20. package/dist/{chunk-M5R3PWW5.js → chunk-B5XHX44Y.js} +2 -2
  21. package/dist/{chunk-4ZX4E7P3.js → chunk-BYD55JXH.js} +8 -8
  22. package/dist/chunk-BYD55JXH.js.map +1 -0
  23. package/dist/{chunk-DIV66W3N.js → chunk-EMI3VJLH.js} +10 -10
  24. package/dist/chunk-EMI3VJLH.js.map +1 -0
  25. package/dist/chunk-HRBKSZ34.js +2 -0
  26. package/dist/chunk-HRBKSZ34.js.map +1 -0
  27. package/dist/{chunk-MLLEOFX2.js → chunk-IXUEJBHD.js} +2 -2
  28. package/dist/{chunk-LDILAHMN.js → chunk-JVNFRS26.js} +2 -2
  29. package/dist/{chunk-GIK7S3OY.js → chunk-N2XXKFJ6.js} +7 -7
  30. package/dist/chunk-N2XXKFJ6.js.map +1 -0
  31. package/dist/{chunk-DJQA2CWD.js → chunk-N6EWZGIX.js} +6 -6
  32. package/dist/{chunk-DJQA2CWD.js.map → chunk-N6EWZGIX.js.map} +1 -1
  33. package/dist/{chunk-HEQPHUTR.js → chunk-NLZD2QKF.js} +2 -2
  34. package/dist/chunk-OHA3J5ZV.js +243 -0
  35. package/dist/chunk-OHA3J5ZV.js.map +1 -0
  36. package/dist/{chunk-P5JXQRBH.js → chunk-OTW5MPFT.js} +2 -2
  37. package/dist/{chunk-WMI5B36E.js → chunk-OUZ7YVQZ.js} +2 -2
  38. package/dist/{chunk-GAGVFSZM.js → chunk-P2ZYT5D6.js} +2 -2
  39. package/dist/chunk-P2ZYT5D6.js.map +1 -0
  40. package/dist/{chunk-2WPTP5HO.js → chunk-PZCTCCC5.js} +2 -2
  41. package/dist/chunk-Q7C3X3R6.js +61 -0
  42. package/dist/chunk-Q7C3X3R6.js.map +1 -0
  43. package/dist/{chunk-3WLO2UKI.js → chunk-QDE75R4U.js} +2 -2
  44. package/dist/{chunk-ZUZESPCH.js → chunk-TTL37CS5.js} +64 -64
  45. package/dist/chunk-TTL37CS5.js.map +1 -0
  46. package/dist/{chunk-2GSEEKQK.js → chunk-TUNQFPVA.js} +2 -2
  47. package/dist/{chunk-SL657MIM.js → chunk-WQLBJ2O5.js} +2 -2
  48. package/dist/{chunk-OZX7HVHC.js → chunk-Y6I3BYWV.js} +172 -165
  49. package/dist/chunk-Y6I3BYWV.js.map +1 -0
  50. package/dist/{chunk-SFLF64Q3.js → chunk-Z3IP66SL.js} +2 -2
  51. package/dist/cli.js +1 -1
  52. package/dist/client-JZTH46N2.js +2 -0
  53. package/dist/{compaction-U5SAYTX6.js → compaction-PIZINFHR.js} +2 -2
  54. package/dist/{config-ROQ4VEU3.js → config-R47ITLIY.js} +2 -2
  55. package/dist/config-mutator-T6JGXJ26.js +2 -0
  56. package/dist/context-planner-FJMU5WAT.js +17 -0
  57. package/dist/context-planner-FJMU5WAT.js.map +1 -0
  58. package/dist/doctor-2DMGAWMW.js +2 -0
  59. package/dist/failure-candidates-ARRMFXRY.js +8 -0
  60. package/dist/failure-candidates-ARRMFXRY.js.map +1 -0
  61. package/dist/index.d.ts +15 -1
  62. package/dist/index.js +1 -1
  63. package/dist/memory-extract-OWTI6MN5.js +2 -0
  64. package/dist/processes-KUJJ7XE7.js +2 -0
  65. package/dist/program-KY5ZYPFN.js +2 -0
  66. package/dist/promote-57YNOVXV.js +2 -0
  67. package/dist/proposals-TX2HBBYV.js +2 -0
  68. package/dist/query-ZT7WXY2F.js +2 -0
  69. package/dist/registry-LLAFJJN4.js +2 -0
  70. package/dist/{request-planner-FAFNFVFX.js → request-planner-PEAYYXAP.js} +2 -2
  71. package/dist/{review-candidates-2XKJ2R6U.js → review-candidates-W7NIHNAI.js} +2 -2
  72. package/dist/{routing-PUPVGJ77.js → routing-7LCO7UJ7.js} +2 -2
  73. package/dist/schedule-tool-ZD3VBUBW.js +2 -0
  74. package/dist/scheduler-GC3FQKXY.js +2 -0
  75. package/dist/{seat-2MW3DEXX.js → seat-HR6QMAR2.js} +2 -2
  76. package/dist/{select-Q3AGLQQX.js → select-4XYRIZ5L.js} +2 -2
  77. package/dist/{surface-usage-FM2ZHGYE.js → surface-usage-V2BX4SBD.js} +2 -2
  78. package/dist/{tool-IVUNSAXY.js → tool-PAQ47HV2.js} +2 -2
  79. package/dist/wiki-EREMPSAE.js +2 -0
  80. package/package.json +1 -1
  81. package/dist/board-dashboard-2B3HYIXD.js.map +0 -1
  82. package/dist/chunk-4ZX4E7P3.js.map +0 -1
  83. package/dist/chunk-7DXE264B.js +0 -2
  84. package/dist/chunk-7DXE264B.js.map +0 -1
  85. package/dist/chunk-DIV66W3N.js.map +0 -1
  86. package/dist/chunk-FRHSQVFN.js.map +0 -1
  87. package/dist/chunk-GAGVFSZM.js.map +0 -1
  88. package/dist/chunk-GIK7S3OY.js.map +0 -1
  89. package/dist/chunk-OZX7HVHC.js.map +0 -1
  90. package/dist/chunk-RYLTCOYE.js +0 -241
  91. package/dist/chunk-RYLTCOYE.js.map +0 -1
  92. package/dist/chunk-WZGABQ72.js +0 -59
  93. package/dist/chunk-WZGABQ72.js.map +0 -1
  94. package/dist/chunk-ZUZESPCH.js.map +0 -1
  95. package/dist/client-6HCY7UMW.js +0 -2
  96. package/dist/config-mutator-ML4BAOFT.js +0 -2
  97. package/dist/context-planner-AQHJMVY2.js +0 -17
  98. package/dist/context-planner-AQHJMVY2.js.map +0 -1
  99. package/dist/doctor-3HWGAPET.js +0 -2
  100. package/dist/memory-extract-YZI2QZVR.js +0 -2
  101. package/dist/processes-XWRGOLMT.js +0 -2
  102. package/dist/program-JLZOHWIU.js +0 -2
  103. package/dist/promote-YGNTKEXI.js +0 -2
  104. package/dist/proposals-MWMEXRDW.js +0 -2
  105. package/dist/query-V76JDSOC.js +0 -2
  106. package/dist/registry-DKN4HEI3.js +0 -2
  107. package/dist/schedule-tool-6J7AHAHH.js +0 -2
  108. package/dist/scheduler-ZHQBSSRH.js +0 -2
  109. package/dist/wiki-FPX2YBKS.js +0 -2
  110. /package/dist/{App-EXB4HP3B.js.map → App-KE4SURSS.js.map} +0 -0
  111. /package/dist/{ChatApp-XMNE3SPH.js.map → ChatApp-NNHIKXO2.js.map} +0 -0
  112. /package/dist/{agent-ORYXXL5K.js.map → agent-RY7Z3IYY.js.map} +0 -0
  113. /package/dist/{chunk-26OP3X5B.js.map → chunk-4NBWF4TL.js.map} +0 -0
  114. /package/dist/{chunk-P7MR53U7.js.map → chunk-4TITGMPX.js.map} +0 -0
  115. /package/dist/{chunk-XM7ZQW4F.js.map → chunk-5ALS7SVV.js.map} +0 -0
  116. /package/dist/{chunk-3ZHMIWSV.js.map → chunk-5XQCGPQJ.js.map} +0 -0
  117. /package/dist/{chunk-DVNIFP7S.js.map → chunk-6VKCUMCN.js.map} +0 -0
  118. /package/dist/{chunk-GCHUE3TN.js.map → chunk-7WDJW37G.js.map} +0 -0
  119. /package/dist/{chunk-M5R3PWW5.js.map → chunk-B5XHX44Y.js.map} +0 -0
  120. /package/dist/{chunk-MLLEOFX2.js.map → chunk-IXUEJBHD.js.map} +0 -0
  121. /package/dist/{chunk-LDILAHMN.js.map → chunk-JVNFRS26.js.map} +0 -0
  122. /package/dist/{chunk-HEQPHUTR.js.map → chunk-NLZD2QKF.js.map} +0 -0
  123. /package/dist/{chunk-P5JXQRBH.js.map → chunk-OTW5MPFT.js.map} +0 -0
  124. /package/dist/{chunk-WMI5B36E.js.map → chunk-OUZ7YVQZ.js.map} +0 -0
  125. /package/dist/{chunk-2WPTP5HO.js.map → chunk-PZCTCCC5.js.map} +0 -0
  126. /package/dist/{chunk-3WLO2UKI.js.map → chunk-QDE75R4U.js.map} +0 -0
  127. /package/dist/{chunk-2GSEEKQK.js.map → chunk-TUNQFPVA.js.map} +0 -0
  128. /package/dist/{chunk-SL657MIM.js.map → chunk-WQLBJ2O5.js.map} +0 -0
  129. /package/dist/{chunk-SFLF64Q3.js.map → chunk-Z3IP66SL.js.map} +0 -0
  130. /package/dist/{client-6HCY7UMW.js.map → client-JZTH46N2.js.map} +0 -0
  131. /package/dist/{compaction-U5SAYTX6.js.map → compaction-PIZINFHR.js.map} +0 -0
  132. /package/dist/{config-ROQ4VEU3.js.map → config-R47ITLIY.js.map} +0 -0
  133. /package/dist/{config-mutator-ML4BAOFT.js.map → config-mutator-T6JGXJ26.js.map} +0 -0
  134. /package/dist/{doctor-3HWGAPET.js.map → doctor-2DMGAWMW.js.map} +0 -0
  135. /package/dist/{memory-extract-YZI2QZVR.js.map → memory-extract-OWTI6MN5.js.map} +0 -0
  136. /package/dist/{processes-XWRGOLMT.js.map → processes-KUJJ7XE7.js.map} +0 -0
  137. /package/dist/{program-JLZOHWIU.js.map → program-KY5ZYPFN.js.map} +0 -0
  138. /package/dist/{promote-YGNTKEXI.js.map → promote-57YNOVXV.js.map} +0 -0
  139. /package/dist/{proposals-MWMEXRDW.js.map → proposals-TX2HBBYV.js.map} +0 -0
  140. /package/dist/{query-V76JDSOC.js.map → query-ZT7WXY2F.js.map} +0 -0
  141. /package/dist/{registry-DKN4HEI3.js.map → registry-LLAFJJN4.js.map} +0 -0
  142. /package/dist/{request-planner-FAFNFVFX.js.map → request-planner-PEAYYXAP.js.map} +0 -0
  143. /package/dist/{review-candidates-2XKJ2R6U.js.map → review-candidates-W7NIHNAI.js.map} +0 -0
  144. /package/dist/{routing-PUPVGJ77.js.map → routing-7LCO7UJ7.js.map} +0 -0
  145. /package/dist/{schedule-tool-6J7AHAHH.js.map → schedule-tool-ZD3VBUBW.js.map} +0 -0
  146. /package/dist/{scheduler-ZHQBSSRH.js.map → scheduler-GC3FQKXY.js.map} +0 -0
  147. /package/dist/{seat-2MW3DEXX.js.map → seat-HR6QMAR2.js.map} +0 -0
  148. /package/dist/{select-Q3AGLQQX.js.map → select-4XYRIZ5L.js.map} +0 -0
  149. /package/dist/{surface-usage-FM2ZHGYE.js.map → surface-usage-V2BX4SBD.js.map} +0 -0
  150. /package/dist/{tool-IVUNSAXY.js.map → tool-PAQ47HV2.js.map} +0 -0
  151. /package/dist/{wiki-FPX2YBKS.js.map → wiki-EREMPSAE.js.map} +0 -0
@@ -1,4 +1,4 @@
1
- import{b as Q,c as Z,d as ee,e as F,f as I,g as j,h as W}from"./chunk-DLKRPK5M.js";import{a as G,b as V}from"./chunk-HEQPHUTR.js";import{a as X}from"./chunk-MLLEOFX2.js";import{j as O,l as Y,m as B,p as M}from"./chunk-GAGVFSZM.js";import{existsSync as _,readFileSync as le,writeFileSync as de,appendFileSync as $e,mkdirSync as Ae}from"fs";import{dirname as Se,resolve as R}from"path";import{fileURLToPath as Ie}from"url";import{hostname as Ce}from"os";import{spawn as Ee}from"child_process";M();import{existsSync as ne,readFileSync as te,writeFileSync as L,copyFileSync as be}from"fs";import{resolve as ae}from"path";function re(e,t={}){let n=t.configPath||ae(process.cwd(),"agentx.json");if(!ne(n))throw new Error(`agentx.json not found at ${n}`);let a=JSON.parse(te(n,"utf-8")),r=e(a),i=typeof r=="string"?{summary:r}:r,l=JSON.stringify(a,null,2)+`
1
+ import{b as Q,c as Z,d as ee,e as F,f as I,g as j,h as W}from"./chunk-4BNQSUWV.js";import{a as G,b as V}from"./chunk-NLZD2QKF.js";import{a as X}from"./chunk-IXUEJBHD.js";import{j as O,l as Y,m as B,p as M}from"./chunk-P2ZYT5D6.js";import{existsSync as _,readFileSync as le,writeFileSync as de,appendFileSync as $e,mkdirSync as Ae}from"fs";import{dirname as Se,resolve as R}from"path";import{fileURLToPath as Ie}from"url";import{hostname as Ce}from"os";import{spawn as Ee}from"child_process";M();import{existsSync as ne,readFileSync as te,writeFileSync as L,copyFileSync as be}from"fs";import{resolve as ae}from"path";function re(e,t={}){let n=t.configPath||ae(process.cwd(),"agentx.json");if(!ne(n))throw new Error(`agentx.json not found at ${n}`);let a=JSON.parse(te(n,"utf-8")),r=e(a),i=typeof r=="string"?{summary:r}:r,l=JSON.stringify(a,null,2)+`
2
2
  `,p=n+".tmp";L(p,l,"utf-8");try{JSON.parse(te(p,"utf-8"))}catch(c){throw new Error(`config did not round-trip cleanly: ${c.message}`)}let s;return t.skipBackup||(s=`${n}.bak.${Date.now()}`,be(n,s)),L(n,l,"utf-8"),t.skipReload||ye().catch(()=>{}),{summary:i.summary,payload:i.payload,backupPath:s}}function ie(e,t={}){let n=t.configPath||ae(process.cwd(),"agentx.json");if(ne(n)&&!t.overwrite)throw new Error(`agentx.json already exists at ${n}. Pass overwrite=true to replace it.`);return L(n,JSON.stringify(e,null,2)+`
3
3
  `,"utf-8"),{file:n}}async function ye(){try{let t=B().dashboard.daemonUrl?.replace(/\/+$/,"")||"http://127.0.0.1:18800";await fetch(`${t}/reload`,{method:"POST"}).catch(()=>null)}catch{}}function se(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">
@@ -737,4 +737,4 @@ tr:hover td { background: var(--bg-hover); }
737
737
  <div class="meta-line">${P((c.meta.tags||[]).slice(0,6),t)}</div>
738
738
  <h3><a href="${p}/article/${encodeURIComponent(c.path)}">${o(c.meta.title)}</a></h3>
739
739
  </div>`;return $(`${t} \xB7 ${n}`,C(r),s)}function U(e,t,n){let a=e.rebuildIndex(),r=q(a.articles.map(l=>({title:l.title,path:l.path,tags:l.tags}))),i='<div class="nav-section">';i+=`<div class="nav-section-title">${o(t)}</div>`,i+=`<a class="nav-item${n?"":" active"}" href="/">Home</a>`,i+='<a class="nav-item" href="/lint">Health check</a>',i+="</div>";for(let[l,p]of r){i+='<div class="nav-section">',i+=`<div class="nav-section-title">${K(l)}</div>`;for(let s of p){let c=s.path===n;i+=`<a class="nav-item${c?" active":""}" href="/article/${encodeURIComponent(s.path)}">${o(s.title)}</a>`}i+="</div>"}return i}function et(e){let{wikiDir:t,agentFilter:n,peerUrls:a=[],mode:r="graph",pathPrefix:i=""}=e,l=i.replace(/\/+$/,""),p=new X(t,void 0,r),s=a.length>0?new D(a):null;return async(c,g)=>{let x=new URL(c.url||"/","http://localhost"),d=decodeURIComponent(x.pathname),h=l&&d.startsWith(l)?d.slice(l.length)||"/":d,f=null,T=200;try{if(h.startsWith("/remote/")&&s){let y=h.slice(8).split("/article/");if(y.length===2){let[b,v]=y,m=b.indexOf("/"),k=decodeURIComponent(b.slice(0,m)),u=b.slice(m+1),w=await s.getRemoteArticle(k,u,v);if(w){let z=await s.getRemoteAgents(),N=[...p.summary(),...z.map(S=>({...S,agentId:`${S.agentId} @${S.nodeId}`}))],A=`<div class="breadcrumb"><a href="/">Hub</a> / <span class="tag">remote</span> ${o(u)} @ ${o(k)}</div>`;A+=`<h1>${o(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>${o(w.meta.owner)}</dd>`,A+=`<dt>Source</dt><dd><span class="tag">remote</span> ${o(k)}</dd>`,A+=`<dt>Updated</dt><dd>${w.meta.lastUpdated}</dd>`,A+="</dl>";let E=new Map;A+=H(w.content,E),f=$(w.meta.title,C(N),A)}}}if(!f&&n){let y=p.getAgentWiki(n);if(h==="/"||h===""){let b=y.rebuildIndex(),v=p.getAgentEntries(n),m=`<h1>${o(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)}">${o(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,U(y,n),m)}else if(h.startsWith("/article/")){let b=h.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 u=`<h1>${o(v.meta.title)}</h1>`;u+='<dl class="meta">',u+=`<dt>Tags</dt><dd>${(v.meta.tags||[]).map(w=>`<span class="tag">${w}</span>`).join(" ")}</dd>`,u+=`<dt>Updated</dt><dd>${v.meta.lastUpdated}</dd>`,v.meta.sources?.length&&(u+=`<dt>Sources</dt><dd>${v.meta.sources.length} entries</dd>`),u+="</dl>",u+=H(v.content,k),f=$(v.meta.title,U(y,n,b),u)}}else if(h==="/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>${o(m.article)}</td><td>${o(m.message)}</td></tr>`;v+="</table>"}f=$("Health Check",U(y,n),v)}else if(h==="/search"){let b=x.searchParams.get("q")||"",v=await y.findRelevantReranked(b,void 0,20),m=`<h1>Search: "${o(b)}"</h1>`;for(let k of v)m+=`<div class="entry-card"><h3><a href="/article/${encodeURIComponent(k.path)}">${o(k.meta.title)}</a></h3><p>${o(k.content.slice(0,200))}...</p></div>`;v.length===0&&(m+="<p>No results.</p>"),f=$(`Search: ${b}`,U(y,n),m)}else if(h.startsWith("/tag/")){let b=decodeURIComponent(h.slice(5)),v=y.findByTags([b],void 0,100),m=`<h1>Tag: <a class="tag" href="#">${o(b)}</a></h1>`;m+=`<p>${v.length} article${v.length===1?"":"s"} tagged <code>${o(b)}</code></p>`;for(let k of v)m+=`<div class="entry-card"><h3><a href="/article/${encodeURIComponent(k.path)}">${o(k.meta.title)}</a></h3><div class="meta-line">${P((k.meta.tags||[]).slice(0,6))}</div></div>`;v.length===0&&(m+="<p>No articles with this tag.</p>"),f=$(`Tag: ${b}`,U(y,n),m)}}else{let y=s?await s.getRemoteAgents():[],b=p.summary(),v=new Map(b.map(u=>[u.agentId,u])),m=[],k=new Set;for(let u of b){let w=y.find(z=>z.agentId===u.agentId);w&&w.totalArticles>u.totalArticles?m.push({...w,totalEntries:Math.max(u.totalEntries,w.totalEntries),unabsorbed:Math.max(u.unabsorbed,w.unabsorbed)}):m.push(u),k.add(u.agentId)}for(let u of y)k.has(u.agentId)||(m.push(u),k.add(u.agentId));if(h==="/"||h==="")f=Ke(p,m,y);else if(h==="/entries")f=Ge(p,m);else if(h==="/search")f=Ve(p,x.searchParams.get("q")||"",m);else if(h.startsWith("/tag/"))f=Qe(p,decodeURIComponent(h.slice(5)),m);else if(h.match(/^\/agent\/[^/]+\/tag\/.+/)){let u=h.match(/^\/agent\/([^/]+)\/tag\/(.+)$/);f=Ze(p,decodeURIComponent(u[1]),decodeURIComponent(u[2]),m)}else if(h.startsWith("/agent/")){let u=h.slice(7),w=u.indexOf("/article/");if(w===-1)f=Ye(p,u,m);else{let z=u.slice(0,w),N=u.slice(w+9);if(f=Xe(p,z,N,m),!f&&s){let A=y.find(E=>E.agentId===z);if(A){let E=await s.getRemoteArticle(A.peerUrl,z,N);if(E){let S=`<div class="breadcrumb"><a href="/">Hub</a> / <span class="tag">remote @ ${o(A.nodeId)}</span> / ${o(z)}</div>`;S+=`<h1>${o(E.meta.title)}</h1>`,S+='<dl class="meta">',S+=`<dt>Tags</dt><dd>${(E.meta.tags||[]).map(xe=>`<span class="tag">${xe}</span>`).join(" ")}</dd>`,S+=`<dt>Source</dt><dd><span class="tag">remote</span> ${o(A.nodeId)}</dd>`,S+=`<dt>Updated</dt><dd>${E.meta.lastUpdated}</dd>`,S+="</dl>",S+=H(E.content,new Map),f=$(E.meta.title,C(m),S)}}}}}}if(!f){T=404;let y=n?U(p.getAgentWiki(n),n):C(p.summary());f=$("Not Found",y,"<h1>Page not found</h1>")}}catch(y){T=500,f=$("Error","",`<h1>Error</h1><pre>${o(y.message)}</pre>`)}g.writeHead(T,{"Content-Type":"text/html; charset=utf-8"}),g.end(l?tt(f,l):f)}}function tt(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 Wt(e,t=4200,n,a=[],r="graph"){let i=et({wikiDir:e,agentFilter:n,peerUrls:a,mode:r});Fe((p,s)=>{i(p,s)}).listen(t)}import{existsSync as nt,readFileSync as at}from"fs";M();function Ht(e){let t=G(e),n={};if(nt(t))try{n=Y(JSON.parse(at(t,"utf-8")))}catch{n={}}let a=O.safeParse(n?.approvals);return a.success?a.data:O.parse(void 0)}function Ot(e){let t=e.indexOf(":");return t<=0||t===e.length-1?null:{channel:e.slice(0,t).trim(),chatId:e.slice(t+1).trim()}}async function Mt(e,t={}){return V(n=>{let a=n.approvals??={};e.defaultExpiryDays!==void 0&&(a.defaultExpiryDays=e.defaultExpiryDays),e.maxExpiryDays!==void 0&&(a.maxExpiryDays=e.maxExpiryDays),e.laterHours!==void 0&&(a.laterHours=e.laterHours),e.notifyAgent!==void 0&&(a.notifyAgent=e.notifyAgent);let r=a.digest??={};e.digestEnabled!==void 0&&(r.enabled=e.digestEnabled),e.digestTime!==void 0&&(r.time=e.digestTime),e.digestTimezone===null?delete r.timezone:e.digestTimezone!==void 0&&(r.timezone=e.digestTimezone),e.destination===null?delete r.destination:e.destination!==void 0&&(r.destination=e.destination);let i=a.defaultExpiryDays??3,l=a.maxExpiryDays??30;if(i>l)throw new Error(`defaultExpiryDays (${i}) can't be more than maxExpiryDays (${l})`)},{configPath:t.configPath,reload:t.reload})}var rt="https://ntfy.sh";function jt(e){return{enabled:!!e?.enabled,server:e?.server||rt,topicSet:!!e?.topic,tokenSet:!!e?.token}}function Lt(e,t){let n={...e??{}};if("enabled"in t&&(n.enabled=!!t.enabled),"server"in t){let a=String(t.server).trim().replace(/\/+$/,"");if(!/^https?:\/\/\S+$/.test(a))throw new Error("ntfy server must be an http(s) URL");n.server=a}if("topic"in t){let a=String(t.topic).trim();if(!a)throw new Error("ntfy topic cannot be empty");n.topic=a}if("token"in t){let a=String(t.token??"").trim();a?n.token=a:delete n.token}if(n.enabled&&!n.topic)throw new Error("set a topic before enabling ntfy");return n}export{re as a,ce as b,bt as c,yt as d,kt as e,he as f,It as g,Ct as h,Ht as i,Ot as j,Mt as k,jt as l,Lt as m,et as n,Wt as o};
740
- //# sourceMappingURL=chunk-2GSEEKQK.js.map
740
+ //# sourceMappingURL=chunk-TUNQFPVA.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-2SJHSSJS.js"),{getGlobalRegistry:i}=await import("./registry-DKN4HEI3.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-2SJHSSJS.js"),{getGlobalRegistry:i}=await import("./registry-LLAFJJN4.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 Ae(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 dt(r);let I=new se(s,{interactive:a,overwrite:p,dryRun:l,acmeContext:r.acmeContext,abortSignal:u}),D=be(c);if(r.acmeContext)for(let g of at)D.push({name:g.name,description:g.description,input_schema:g.input_schema});let E=new Set;if(r.mcpTools?.length)for(let g of r.mcpTools)D.push({name:g.name,description:g.description,input_schema:g.input_schema}),E.add(g.name);let C=o.filter(g=>g.role!=="system").map(g=>({role:g.role,content:g.content})),B=[],G=0,F=0,A=0,O="",j,_=0;for(;_<i;){if(_++,u?.aborted)throw new Error("cancelled");d?.({type:"iteration_start",iteration:_}),b.step(_,`Agentic loop iteration (${D.length} tools available)`);let g,M=!!e.generateRawStream&&!!d;try{if(M){let T=null,U=null,v="";for await(let x of e.generateRawStream(C,t,D,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"?T=x.result:x.type==="error"&&(U=x.error);if(U&&!T)throw new Error(U);if(!T)throw new Error("generateRawStream returned no raw_result event");g=T,g._streamedText=v}else g=await e.generateRaw(C,t,D,m)}catch(T){if(T.message?.includes("not available"))return dt(r);throw T}G+=g.usage.input_tokens+g.usage.output_tokens,F+=g.usage.input_tokens,A+=g.usage.output_tokens;let P=g._streamedText;for(let T of g.content)T.type==="text"&&(O+=T.text,P===void 0&&d?.({type:"text_delta",text:T.text}));if(P!==void 0&&delete g._streamedText,g.stop_reason==="end_turn"||g.stop_reason==="max_tokens")break;if(g.stop_reason==="tool_use"){let T=g.content.filter(v=>v.type==="tool_use");if(T.length===0)break;C.push({role:"assistant",content:g.content});let U=[];for(let v of T){d?.({type:"tool_call",name:v.name,id:v.id,input:v.input}),b.step(_,`Tool call: ${v.name}`);let x;if(E.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),U.push({type:"tool_result",tool_use_id:x.tool_use_id,content:x.content,is_error:x.is_error})}if(C.push({role:"user",content:U}),j)break;continue}break}return d?.({type:"complete",iterations:_,totalTokens:G}),{files:B,content:O,followUp:j,tokensUsed:G,inputTokens:F||void 0,outputTokens:A||void 0,iterations:_}}async function dt(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{qe as a,Vt as b,Yt as c,We as d,ze as e,Ve as f,Ye as g,Pe as h,ee as i,Re as j,le as k,te as l,Tt as m,oe as n,Mt as o,f as p,et as q,tt as r,Me as s,de as t,W as u,ne as v,it as w,Ee as x,$e as y,se as z,mt as A,Zn as B,er as C};
126
- //# sourceMappingURL=chunk-SL657MIM.js.map
126
+ //# sourceMappingURL=chunk-WQLBJ2O5.js.map