agentix-cli 0.111.1 → 0.112.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 (99) hide show
  1. package/dist/{App-T4Q7SW6M.js → App-4AX6LR6Q.js} +2 -2
  2. package/dist/{ChatApp-BKUJUIDL.js → ChatApp-HAIPYO4I.js} +2 -2
  3. package/dist/{agent-YZVEXFE7.js → agent-Q7MDX45J.js} +2 -2
  4. package/dist/{board-dashboard-MZVUQ2YO.js → board-dashboard-RNWZ3H2T.js} +4 -4
  5. package/dist/{chunk-XEOT2F4C.js → chunk-2JEJIVOZ.js} +2 -2
  6. package/dist/{chunk-7UNS34CN.js → chunk-2S5T3VT5.js} +2 -2
  7. package/dist/{chunk-SIOWVLZG.js → chunk-34KJ4Q4E.js} +2 -2
  8. package/dist/chunk-34KJ4Q4E.js.map +1 -0
  9. package/dist/{chunk-U52IS3AF.js → chunk-6DGPWKRK.js} +2 -2
  10. package/dist/{chunk-M2L6S3Z5.js → chunk-7MTHXIT5.js} +2 -2
  11. package/dist/{chunk-HCTWKWS3.js → chunk-ANV4T62P.js} +2 -2
  12. package/dist/{chunk-53OS4TDU.js → chunk-ETV2UH66.js} +2 -2
  13. package/dist/{chunk-RS2T53EC.js → chunk-EUCLJ2VL.js} +2 -2
  14. package/dist/{chunk-GQMUFSKB.js → chunk-HIVQHFPT.js} +2 -2
  15. package/dist/{chunk-3RHFEKFX.js → chunk-HNRQQEDE.js} +2 -2
  16. package/dist/{chunk-WSKQUKCF.js → chunk-JRMYIPIL.js} +2 -2
  17. package/dist/{chunk-3RTOS727.js → chunk-K4TN34OM.js} +4 -4
  18. package/dist/{chunk-3RTOS727.js.map → chunk-K4TN34OM.js.map} +1 -1
  19. package/dist/{chunk-Z7L74GGT.js → chunk-MOO6DKMZ.js} +2 -2
  20. package/dist/{chunk-LWYKS5JU.js → chunk-NHAVY7VU.js} +2 -2
  21. package/dist/{chunk-4NFDDTGA.js → chunk-Q6ILGUDE.js} +2 -2
  22. package/dist/{chunk-DXWDVKMX.js → chunk-R4KGAIBF.js} +2 -2
  23. package/dist/{chunk-DTQQ4DAY.js → chunk-RXAR3JIV.js} +5 -5
  24. package/dist/{chunk-K24MYJFP.js → chunk-SFAZ6IH2.js} +219 -219
  25. package/dist/chunk-SFAZ6IH2.js.map +1 -0
  26. package/dist/{chunk-FBODSJU6.js → chunk-WN5MCIVA.js} +2 -2
  27. package/dist/{chunk-WXQQO2PD.js → chunk-XEJ4E5HH.js} +2 -2
  28. package/dist/{chunk-QJP37VVA.js → chunk-ZVUVFMYN.js} +2 -2
  29. package/dist/cli.js +1 -1
  30. package/dist/{client-O7SPKO5X.js → client-MYU23KWY.js} +2 -2
  31. package/dist/{config-ZHQYXFOJ.js → config-45OK6PHO.js} +2 -2
  32. package/dist/config-mutator-4SUOOBNK.js +2 -0
  33. package/dist/{doctor-XP7O45RC.js → doctor-AUF5HJPW.js} +2 -2
  34. package/dist/index.d.ts +50 -0
  35. package/dist/index.js +1 -1
  36. package/dist/{program-YK3YR2CQ.js → program-7ZNCVU5A.js} +169 -169
  37. package/dist/program-7ZNCVU5A.js.map +1 -0
  38. package/dist/{promote-UGWANGI2.js → promote-FP4LHKWZ.js} +2 -2
  39. package/dist/{query-ZET7Z5FT.js → query-IJWC42YJ.js} +2 -2
  40. package/dist/{registry-UXWOY52B.js → registry-US7IWI5G.js} +2 -2
  41. package/dist/{request-planner-W5YLKCGG.js → request-planner-SDUMKFFP.js} +2 -2
  42. package/dist/{review-candidates-GU4S5VQH.js → review-candidates-QOKFHMPL.js} +2 -2
  43. package/dist/{routing-GJ4VXKIC.js → routing-XZBHJ63Q.js} +2 -2
  44. package/dist/schedule-tool-XQYEDYXX.js +2 -0
  45. package/dist/scheduler-VDIZDO6Y.js +2 -0
  46. package/dist/{seat-L6XJ2BFA.js → seat-OU3VAP5Y.js} +2 -2
  47. package/dist/{select-T7CKKLC2.js → select-S6E3HJPE.js} +2 -2
  48. package/dist/{set-enabled-U2HGNY2O.js → set-enabled-GY7O7IRS.js} +2 -2
  49. package/dist/{tool-2FMWZB4N.js → tool-RGYNLN6I.js} +2 -2
  50. package/dist/{tool-TX622HEB.js → tool-RT5REMY7.js} +2 -2
  51. package/dist/wiki-3UTXUIN6.js +2 -0
  52. package/package.json +1 -1
  53. package/dist/chunk-K24MYJFP.js.map +0 -1
  54. package/dist/chunk-SIOWVLZG.js.map +0 -1
  55. package/dist/config-mutator-RS2NTDNO.js +0 -2
  56. package/dist/program-YK3YR2CQ.js.map +0 -1
  57. package/dist/schedule-tool-HD4LWKVC.js +0 -2
  58. package/dist/scheduler-3LEHZHWJ.js +0 -2
  59. package/dist/wiki-MYJBOJSM.js +0 -2
  60. /package/dist/{App-T4Q7SW6M.js.map → App-4AX6LR6Q.js.map} +0 -0
  61. /package/dist/{ChatApp-BKUJUIDL.js.map → ChatApp-HAIPYO4I.js.map} +0 -0
  62. /package/dist/{agent-YZVEXFE7.js.map → agent-Q7MDX45J.js.map} +0 -0
  63. /package/dist/{board-dashboard-MZVUQ2YO.js.map → board-dashboard-RNWZ3H2T.js.map} +0 -0
  64. /package/dist/{chunk-XEOT2F4C.js.map → chunk-2JEJIVOZ.js.map} +0 -0
  65. /package/dist/{chunk-7UNS34CN.js.map → chunk-2S5T3VT5.js.map} +0 -0
  66. /package/dist/{chunk-U52IS3AF.js.map → chunk-6DGPWKRK.js.map} +0 -0
  67. /package/dist/{chunk-M2L6S3Z5.js.map → chunk-7MTHXIT5.js.map} +0 -0
  68. /package/dist/{chunk-HCTWKWS3.js.map → chunk-ANV4T62P.js.map} +0 -0
  69. /package/dist/{chunk-53OS4TDU.js.map → chunk-ETV2UH66.js.map} +0 -0
  70. /package/dist/{chunk-RS2T53EC.js.map → chunk-EUCLJ2VL.js.map} +0 -0
  71. /package/dist/{chunk-GQMUFSKB.js.map → chunk-HIVQHFPT.js.map} +0 -0
  72. /package/dist/{chunk-3RHFEKFX.js.map → chunk-HNRQQEDE.js.map} +0 -0
  73. /package/dist/{chunk-WSKQUKCF.js.map → chunk-JRMYIPIL.js.map} +0 -0
  74. /package/dist/{chunk-Z7L74GGT.js.map → chunk-MOO6DKMZ.js.map} +0 -0
  75. /package/dist/{chunk-LWYKS5JU.js.map → chunk-NHAVY7VU.js.map} +0 -0
  76. /package/dist/{chunk-4NFDDTGA.js.map → chunk-Q6ILGUDE.js.map} +0 -0
  77. /package/dist/{chunk-DXWDVKMX.js.map → chunk-R4KGAIBF.js.map} +0 -0
  78. /package/dist/{chunk-DTQQ4DAY.js.map → chunk-RXAR3JIV.js.map} +0 -0
  79. /package/dist/{chunk-FBODSJU6.js.map → chunk-WN5MCIVA.js.map} +0 -0
  80. /package/dist/{chunk-WXQQO2PD.js.map → chunk-XEJ4E5HH.js.map} +0 -0
  81. /package/dist/{chunk-QJP37VVA.js.map → chunk-ZVUVFMYN.js.map} +0 -0
  82. /package/dist/{client-O7SPKO5X.js.map → client-MYU23KWY.js.map} +0 -0
  83. /package/dist/{config-ZHQYXFOJ.js.map → config-45OK6PHO.js.map} +0 -0
  84. /package/dist/{config-mutator-RS2NTDNO.js.map → config-mutator-4SUOOBNK.js.map} +0 -0
  85. /package/dist/{doctor-XP7O45RC.js.map → doctor-AUF5HJPW.js.map} +0 -0
  86. /package/dist/{promote-UGWANGI2.js.map → promote-FP4LHKWZ.js.map} +0 -0
  87. /package/dist/{query-ZET7Z5FT.js.map → query-IJWC42YJ.js.map} +0 -0
  88. /package/dist/{registry-UXWOY52B.js.map → registry-US7IWI5G.js.map} +0 -0
  89. /package/dist/{request-planner-W5YLKCGG.js.map → request-planner-SDUMKFFP.js.map} +0 -0
  90. /package/dist/{review-candidates-GU4S5VQH.js.map → review-candidates-QOKFHMPL.js.map} +0 -0
  91. /package/dist/{routing-GJ4VXKIC.js.map → routing-XZBHJ63Q.js.map} +0 -0
  92. /package/dist/{schedule-tool-HD4LWKVC.js.map → schedule-tool-XQYEDYXX.js.map} +0 -0
  93. /package/dist/{scheduler-3LEHZHWJ.js.map → scheduler-VDIZDO6Y.js.map} +0 -0
  94. /package/dist/{seat-L6XJ2BFA.js.map → seat-OU3VAP5Y.js.map} +0 -0
  95. /package/dist/{select-T7CKKLC2.js.map → select-S6E3HJPE.js.map} +0 -0
  96. /package/dist/{set-enabled-U2HGNY2O.js.map → set-enabled-GY7O7IRS.js.map} +0 -0
  97. /package/dist/{tool-2FMWZB4N.js.map → tool-RGYNLN6I.js.map} +0 -0
  98. /package/dist/{tool-TX622HEB.js.map → tool-RT5REMY7.js.map} +0 -0
  99. /package/dist/{wiki-MYJBOJSM.js.map → wiki-3UTXUIN6.js.map} +0 -0
@@ -1,4 +1,4 @@
1
- import{a as j,b as O,c as T,d as D,e as _,j as N}from"./chunk-RS2T53EC.js";import{b as R}from"./chunk-2GIDVZ4H.js";import{y as C,z as I}from"./chunk-GQMUFSKB.js";import{b as v,c as W}from"./chunk-QOYAX2FT.js";import{readFileSync as Y,existsSync as B}from"fs";I();import{resolve as x}from"path";import{execSync as L}from"child_process";async function nt(n,a,o,t={}){let u=t.selectorModel??"haiku",g=t.synthModel??"sonnet",l=t.maxCandidates??3,r=t.maxHops??2,s=t.maxArticles??8,h=t.timeoutMs??6e4,p=t.log??console.error.bind(console,"[wiki-query]"),m=t.messagePath?.length?t.messagePath:void 0,w=t.graphWeight??$,i=x(a.baseDir,"_index.md");if(!B(i))return A("no-catalog",n,"No _index.md found \u2014 run `agentx wiki status` to rebuild.");let e=Y(i,"utf-8"),d=Date.now(),f=[],y="";try{let c=await G(n,a,o,l,m,w);c?(f=c,y=`[wiki-rerank seat] ${c.map(k=>k.title).join(" | ")}`):(y=await Q(q(n,e,l,m),u,h),f=K(y))}catch(c){return p("selector failed:",c?.message),{...A("error",n,`Selector: ${c?.message||"unknown"}`),trace:{selectorMs:Date.now()-d,synthesisMs:0,selectorOutput:y}}}let S=Date.now()-d;if(f.length===0)return{...A("no-candidates",n,"Selector returned no candidates."),trace:{selectorMs:S,synthesisMs:0,selectorOutput:y}};let b=F(f,a,o,r,s);if(b.length===0)return{...A("no-candidates",n,"Candidates did not resolve to readable articles."),candidates:f,trace:{selectorMs:S,synthesisMs:0,selectorOutput:y}};let M=Date.now(),P="";try{P=await Q(J(n,b),g,h*2)}catch(c){return p("synthesis failed:",c?.message),{...A("error",n,`Synthesis: ${c?.message||"unknown"}`),candidates:f,walked:b.map(k=>({title:k.meta.title,path:k.path,type:k.meta.type,hop:k.hop??0})),trace:{selectorMs:S,synthesisMs:Date.now()-M,selectorOutput:y}}}let E=Date.now()-M;return{answer:P.trim(),citations:b.map(c=>({title:c.meta.title,path:c.path,type:c.meta.type})),candidates:f,walked:b.map(c=>({title:c.meta.title,path:c.path,type:c.meta.type,hop:c.hop??0})),status:"ok",trace:{selectorMs:S,synthesisMs:E,selectorOutput:y}}}function A(n,a,o){return{answer:"",citations:[],candidates:[],walked:[],status:n,error:o}}function F(n,a,o,t,u){let g=new Map;for(let s of a.listArticles(o||""))g.set(s.meta.title.toLowerCase(),s.path);let l=new Map,r=[];for(let s of n)l.has(s.path)||r.push({path:s.path,hop:0});for(;r.length&&l.size<u;){let s=r.shift();if(l.has(s.path)||s.hop>t)continue;let h=o?a.readArticleAs(s.path,o):a.readArticle(s.path);if(h&&(l.set(s.path,{...h,hop:s.hop}),!(s.hop>=t)))for(let p of h.meta.related||[]){let m=g.get(p.toLowerCase());m&&!l.has(m)&&r.push({path:m,hop:s.hop+1})}}return Array.from(l.values())}async function G(n,a,o,t,u,g=$){try{let r=(a.rebuildIndex().articles??[]).filter(i=>i.path&&!i.path.includes("/_versions/"));if(r.length<2)return null;let h=H(n,r,u,g).slice(0,O).map(i=>({id:`k${i}`,title:r[i].title||r[i].path,tags:r[i].tags,excerpt:[r[i].type?`type: ${r[i].type}`:"",(r[i].related??[]).length?`related: ${(r[i].related??[]).join(", ")}`:"",(r[i].graphPath??[]).length?`graph: ${(r[i].graphPath??[]).join(" \u203A ")}`:""].filter(Boolean).join(" \xB7 ")})),p=await C(j,T({query:n,candidates:h,excerptChars:300}),D(h),{features:{agent:o??"unknown",stage:"catalog-selector"}});if(!p||p.mode!=="active")return null;let w=_(p.answers,h).ranked.slice(0,t).map(i=>r[Number(i.slice(1))]).filter(Boolean).map(i=>({title:i.title,path:i.path}));return w.length>0?w:null}catch{return null}}var $=.6;function H(n,a,o,t=$){let u=a.map(e=>[e.title,(e.tags??[]).join(" "),(e.related??[]).join(" ")].join(" ")),g=W(n,v(u)),l=g.reduce((e,d)=>Math.max(e,d.score),0),r=new Map(g.map(e=>[e.docIndex,l>0?e.score/l:0])),s=!!o?.length,h=e=>s&&e.graphPath?.length?N(o,e.graphPath):0,p=(e,d)=>d.score-e.score||e.i-d.i,m=a.map((e,d)=>({i:d,score:(r.get(d)??0)*(1+t*h(e))})).filter(e=>r.has(e.i)).sort(p),w=a.map((e,d)=>({i:d,score:h(e)})).filter(e=>!r.has(e.i)&&e.score>0).sort(p),i=[...m,...w].map(e=>e.i);for(let e=0;e<a.length;e++)i.includes(e)||i.push(e);return i}function q(n,a,o,t){let u=t?.length?`
1
+ import{a as j,b as O,c as T,d as D,e as _,j as N}from"./chunk-EUCLJ2VL.js";import{b as R}from"./chunk-2GIDVZ4H.js";import{y as C,z as I}from"./chunk-HIVQHFPT.js";import{b as v,c as W}from"./chunk-QOYAX2FT.js";import{readFileSync as Y,existsSync as B}from"fs";I();import{resolve as x}from"path";import{execSync as L}from"child_process";async function nt(n,a,o,t={}){let u=t.selectorModel??"haiku",g=t.synthModel??"sonnet",l=t.maxCandidates??3,r=t.maxHops??2,s=t.maxArticles??8,h=t.timeoutMs??6e4,p=t.log??console.error.bind(console,"[wiki-query]"),m=t.messagePath?.length?t.messagePath:void 0,w=t.graphWeight??$,i=x(a.baseDir,"_index.md");if(!B(i))return A("no-catalog",n,"No _index.md found \u2014 run `agentx wiki status` to rebuild.");let e=Y(i,"utf-8"),d=Date.now(),f=[],y="";try{let c=await G(n,a,o,l,m,w);c?(f=c,y=`[wiki-rerank seat] ${c.map(k=>k.title).join(" | ")}`):(y=await Q(q(n,e,l,m),u,h),f=K(y))}catch(c){return p("selector failed:",c?.message),{...A("error",n,`Selector: ${c?.message||"unknown"}`),trace:{selectorMs:Date.now()-d,synthesisMs:0,selectorOutput:y}}}let S=Date.now()-d;if(f.length===0)return{...A("no-candidates",n,"Selector returned no candidates."),trace:{selectorMs:S,synthesisMs:0,selectorOutput:y}};let b=F(f,a,o,r,s);if(b.length===0)return{...A("no-candidates",n,"Candidates did not resolve to readable articles."),candidates:f,trace:{selectorMs:S,synthesisMs:0,selectorOutput:y}};let M=Date.now(),P="";try{P=await Q(J(n,b),g,h*2)}catch(c){return p("synthesis failed:",c?.message),{...A("error",n,`Synthesis: ${c?.message||"unknown"}`),candidates:f,walked:b.map(k=>({title:k.meta.title,path:k.path,type:k.meta.type,hop:k.hop??0})),trace:{selectorMs:S,synthesisMs:Date.now()-M,selectorOutput:y}}}let E=Date.now()-M;return{answer:P.trim(),citations:b.map(c=>({title:c.meta.title,path:c.path,type:c.meta.type})),candidates:f,walked:b.map(c=>({title:c.meta.title,path:c.path,type:c.meta.type,hop:c.hop??0})),status:"ok",trace:{selectorMs:S,synthesisMs:E,selectorOutput:y}}}function A(n,a,o){return{answer:"",citations:[],candidates:[],walked:[],status:n,error:o}}function F(n,a,o,t,u){let g=new Map;for(let s of a.listArticles(o||""))g.set(s.meta.title.toLowerCase(),s.path);let l=new Map,r=[];for(let s of n)l.has(s.path)||r.push({path:s.path,hop:0});for(;r.length&&l.size<u;){let s=r.shift();if(l.has(s.path)||s.hop>t)continue;let h=o?a.readArticleAs(s.path,o):a.readArticle(s.path);if(h&&(l.set(s.path,{...h,hop:s.hop}),!(s.hop>=t)))for(let p of h.meta.related||[]){let m=g.get(p.toLowerCase());m&&!l.has(m)&&r.push({path:m,hop:s.hop+1})}}return Array.from(l.values())}async function G(n,a,o,t,u,g=$){try{let r=(a.rebuildIndex().articles??[]).filter(i=>i.path&&!i.path.includes("/_versions/"));if(r.length<2)return null;let h=H(n,r,u,g).slice(0,O).map(i=>({id:`k${i}`,title:r[i].title||r[i].path,tags:r[i].tags,excerpt:[r[i].type?`type: ${r[i].type}`:"",(r[i].related??[]).length?`related: ${(r[i].related??[]).join(", ")}`:"",(r[i].graphPath??[]).length?`graph: ${(r[i].graphPath??[]).join(" \u203A ")}`:""].filter(Boolean).join(" \xB7 ")})),p=await C(j,T({query:n,candidates:h,excerptChars:300}),D(h),{features:{agent:o??"unknown",stage:"catalog-selector"}});if(!p||p.mode!=="active")return null;let w=_(p.answers,h).ranked.slice(0,t).map(i=>r[Number(i.slice(1))]).filter(Boolean).map(i=>({title:i.title,path:i.path}));return w.length>0?w:null}catch{return null}}var $=.6;function H(n,a,o,t=$){let u=a.map(e=>[e.title,(e.tags??[]).join(" "),(e.related??[]).join(" ")].join(" ")),g=W(n,v(u)),l=g.reduce((e,d)=>Math.max(e,d.score),0),r=new Map(g.map(e=>[e.docIndex,l>0?e.score/l:0])),s=!!o?.length,h=e=>s&&e.graphPath?.length?N(o,e.graphPath):0,p=(e,d)=>d.score-e.score||e.i-d.i,m=a.map((e,d)=>({i:d,score:(r.get(d)??0)*(1+t*h(e))})).filter(e=>r.has(e.i)).sort(p),w=a.map((e,d)=>({i:d,score:h(e)})).filter(e=>!r.has(e.i)&&e.score>0).sort(p),i=[...m,...w].map(e=>e.i);for(let e=0;e<a.length;e++)i.includes(e)||i.push(e);return i}function q(n,a,o,t){let u=t?.length?`
2
2
  ## Intent
3
3
 
4
4
  The request was classified under the intent-graph path "${t.join(" \u203A ")}". Prefer articles filed under the same branch when their titles are equally plausible.
@@ -46,4 +46,4 @@ ${o}
46
46
  Answer the question in 2\u20136 sentences. Cite articles by their title in square brackets like [Article Title]. If the articles do not answer the question, say so plainly (do not invent). Prefer concrete facts over hedging.
47
47
 
48
48
  Output ONLY the answer \u2014 no preamble, no "here is my answer:", no markdown fencing.`}function K(n){let a=n.match(/\[[\s\S]*?\]/);if(!a)return[];try{let o=JSON.parse(a[0]);return Array.isArray(o)?o.filter(t=>t&&typeof t.title=="string"&&typeof t.path=="string").map(t=>({title:t.title,path:t.path})):[]}catch{return[]}}async function Q(n,a,o){let{writeFileSync:t,mkdirSync:u,rmSync:g}=await import("fs"),{tmpdir:l}=await import("os"),r=x(l(),`agentx-wiki-query-${process.pid}`);u(r,{recursive:!0});let s=x(r,`prompt-${Date.now()}.txt`);t(s,n);try{let h=`cat '${s}' | claude -p - --output-format json --max-turns 1 --model ${a} --disallowedTools "Bash Read Write Edit Glob Grep Agent WebSearch WebFetch NotebookEdit"`,p=L(h,{env:R({...process.env}),encoding:"utf-8",timeout:o,maxBuffer:4*1024*1024});try{let m=JSON.parse(p);return String(m.result||m.content||"")}catch{return p}}finally{try{g(s,{force:!0})}catch{}}}export{nt as a,$ as b,H as c};
49
- //# sourceMappingURL=chunk-FBODSJU6.js.map
49
+ //# sourceMappingURL=chunk-WN5MCIVA.js.map
@@ -1,2 +1,2 @@
1
- import{q as p}from"./chunk-M2L6S3Z5.js";import{b as i,c as u,d as l,e as c}from"./chunk-QJP37VVA.js";import d from"cronstrue";var f=Intl.DateTimeFormat().resolvedOptions().timeZone,m=600,E='Try: "every morning at 9", "weekdays at 6pm", "every 15 minutes", "every monday at 10am", "1st of every month at noon", "daily at 9:30am", "every hour"',g=/^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$/;function w(e){return g.test(e)}function x(e){try{return new Intl.DateTimeFormat("en-US",{timeZone:e}),!0}catch{return!1}}function $(e){return e?e.split(",").map(r=>r.trim().toLowerCase()).filter(r=>r==="log"||r==="notify"||r==="disable"):["log"]}function S(e){let r=[...e.onError??["log"]];e.notify&&!r.includes("notify")&&r.push("notify");let t={enabled:e.enabled??!0,schedule:e.parsed.cron,timezone:e.timezone||f,agent:e.agent,prompt:e.prompt,timeout:e.timeout??m,onError:r};return e.model&&(t.model=e.model),e.notify&&(t.notify=e.notify),e.createdBy&&(t.createdBy=e.createdBy),e.approval&&(t.approval=e.approval),t}function P(e){try{return d.toString(e,{use24HourTimeFormat:!1})}catch{return e}}function T(e,r,t=new Date){try{return p(e,t,r)}catch{return null}}function A(e,r){if(!e)return"unknown (no match within a year)";try{return`${new Intl.DateTimeFormat("en-GB",{timeZone:r,weekday:"short",day:"2-digit",month:"short",year:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1}).format(e)} (${r})`}catch{return e.toISOString()}}function h(e){return e?.approval?.action==="create"}async function D(e,r={}){let t="",o=await i(n=>{let a=l(n,`crons.${e}`);if(!a)throw new Error(`cron "${e}" not found`);let s=a.approval;if(!s)throw new Error(`cron "${e}" has no pending request`);s.action==="create"?(delete a.approval,a.enabled=!0,t=`${e} approved and enabled (requested by ${s.requestedBy})`):(c(n,`crons.${e}`),t=`${e} deletion approved; job removed (requested by ${s.requestedBy})`)},{configPath:r.configPath,reload:r.reload});return o.success?{success:!0,message:t,result:o}:{success:!1,message:o.error||"failed",result:o}}async function I(e,r={}){let t="",o=await i(n=>{let a=l(n,`crons.${e}`);if(!a)throw new Error(`cron "${e}" not found`);let s=a.approval;if(!s)throw new Error(`cron "${e}" has no pending request`);s.action==="create"?(c(n,`crons.${e}`),t=`${e} rejected; pending job removed`):(delete a.approval,t=`${e} deletion rejected; job kept`)},{configPath:r.configPath,reload:r.reload});return o.success?{success:!0,message:t,result:o}:{success:!1,message:o.error||"failed",result:o}}async function O(e,r,t={}){return i(o=>{let n=l(o,`crons.${e}`);if(!n)throw new Error(`cron "${e}" not found`);if(r&&h(n))throw new Error(`cron "${e}" is awaiting approval; run \`agentx schedule approve ${e}\``);u(o,`crons.${e}.enabled`,r)},{configPath:t.configPath,reload:t.reload})}export{f as a,E as b,w as c,x as d,$ as e,S as f,P as g,T as h,A as i,h as j,D as k,I as l,O as m};
2
- //# sourceMappingURL=chunk-WXQQO2PD.js.map
1
+ import{q as p}from"./chunk-7MTHXIT5.js";import{b as i,c as u,d as l,e as c}from"./chunk-ZVUVFMYN.js";import d from"cronstrue";var f=Intl.DateTimeFormat().resolvedOptions().timeZone,m=600,E='Try: "every morning at 9", "weekdays at 6pm", "every 15 minutes", "every monday at 10am", "1st of every month at noon", "daily at 9:30am", "every hour"',g=/^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$/;function w(e){return g.test(e)}function x(e){try{return new Intl.DateTimeFormat("en-US",{timeZone:e}),!0}catch{return!1}}function $(e){return e?e.split(",").map(r=>r.trim().toLowerCase()).filter(r=>r==="log"||r==="notify"||r==="disable"):["log"]}function S(e){let r=[...e.onError??["log"]];e.notify&&!r.includes("notify")&&r.push("notify");let t={enabled:e.enabled??!0,schedule:e.parsed.cron,timezone:e.timezone||f,agent:e.agent,prompt:e.prompt,timeout:e.timeout??m,onError:r};return e.model&&(t.model=e.model),e.notify&&(t.notify=e.notify),e.createdBy&&(t.createdBy=e.createdBy),e.approval&&(t.approval=e.approval),t}function P(e){try{return d.toString(e,{use24HourTimeFormat:!1})}catch{return e}}function T(e,r,t=new Date){try{return p(e,t,r)}catch{return null}}function A(e,r){if(!e)return"unknown (no match within a year)";try{return`${new Intl.DateTimeFormat("en-GB",{timeZone:r,weekday:"short",day:"2-digit",month:"short",year:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1}).format(e)} (${r})`}catch{return e.toISOString()}}function h(e){return e?.approval?.action==="create"}async function D(e,r={}){let t="",o=await i(n=>{let a=l(n,`crons.${e}`);if(!a)throw new Error(`cron "${e}" not found`);let s=a.approval;if(!s)throw new Error(`cron "${e}" has no pending request`);s.action==="create"?(delete a.approval,a.enabled=!0,t=`${e} approved and enabled (requested by ${s.requestedBy})`):(c(n,`crons.${e}`),t=`${e} deletion approved; job removed (requested by ${s.requestedBy})`)},{configPath:r.configPath,reload:r.reload});return o.success?{success:!0,message:t,result:o}:{success:!1,message:o.error||"failed",result:o}}async function I(e,r={}){let t="",o=await i(n=>{let a=l(n,`crons.${e}`);if(!a)throw new Error(`cron "${e}" not found`);let s=a.approval;if(!s)throw new Error(`cron "${e}" has no pending request`);s.action==="create"?(c(n,`crons.${e}`),t=`${e} rejected; pending job removed`):(delete a.approval,t=`${e} deletion rejected; job kept`)},{configPath:r.configPath,reload:r.reload});return o.success?{success:!0,message:t,result:o}:{success:!1,message:o.error||"failed",result:o}}async function O(e,r,t={}){return i(o=>{let n=l(o,`crons.${e}`);if(!n)throw new Error(`cron "${e}" not found`);if(r&&h(n))throw new Error(`cron "${e}" is awaiting approval; run \`agentx schedule approve ${e}\``);u(o,`crons.${e}.enabled`,r)},{configPath:t.configPath,reload:t.reload})}export{f as a,E as b,w as c,x as d,$ as e,S as f,P as g,T as h,A as i,h as j,D as k,I as l,O as m};
2
+ //# sourceMappingURL=chunk-XEJ4E5HH.js.map
@@ -1,5 +1,5 @@
1
- import{ga as m,ha as $,la as x}from"./chunk-SIOWVLZG.js";x();import{readFileSync as S,writeFileSync as P,existsSync as b}from"fs";import{resolve as f}from"path";function w(r){if(r)return f(r);let e=[f(process.cwd(),"agentx.json"),f(process.cwd(),".agentx/config.json")];for(let n of e)if(b(n))return n;return e[0]}function v(r){return JSON.parse(JSON.stringify(r))}async function O(r){try{let e=await fetch(`${r.replace(/\/$/,"")}/reload`,{method:"POST",signal:AbortSignal.timeout(3e3)});return e.ok?{ok:!0}:{ok:!1,reason:`HTTP ${e.status}`}}catch(e){return{ok:!1,reason:e?.cause?.code||e?.message||"unreachable"}}}async function J(r,e={}){let{validate:n=!0,dryRun:t=!1,reload:s=!0,configPath:u,daemonUrl:c}=e,o=w(u);if(!b(o))return{success:!1,path:o,error:`Config not found at ${o}. Run \`agentx init\` first.`};let d;try{d=S(o,"utf-8")}catch(a){return{success:!1,path:o,error:`Cannot read ${o}: ${a.message}`}}let g;try{g=JSON.parse(d)}catch(a){return{success:!1,path:o,error:`Invalid JSON in ${o}: ${a.message}`}}let i=v(g);try{await r(i)}catch(a){return{success:!1,path:o,error:`Mutator threw: ${a.message}`}}if(n){let a=$(i),l=m.safeParse(a);if(!l.success){let k=l.error.issues.map(y=>` ${y.path.join(".")||"<root>"}: ${y.message}`).join(`
1
+ import{ga as m,ha as $,la as x}from"./chunk-34KJ4Q4E.js";x();import{readFileSync as S,writeFileSync as P,existsSync as b}from"fs";import{resolve as f}from"path";function w(r){if(r)return f(r);let e=[f(process.cwd(),"agentx.json"),f(process.cwd(),".agentx/config.json")];for(let n of e)if(b(n))return n;return e[0]}function v(r){return JSON.parse(JSON.stringify(r))}async function O(r){try{let e=await fetch(`${r.replace(/\/$/,"")}/reload`,{method:"POST",signal:AbortSignal.timeout(3e3)});return e.ok?{ok:!0}:{ok:!1,reason:`HTTP ${e.status}`}}catch(e){return{ok:!1,reason:e?.cause?.code||e?.message||"unreachable"}}}async function J(r,e={}){let{validate:n=!0,dryRun:t=!1,reload:s=!0,configPath:u,daemonUrl:c}=e,o=w(u);if(!b(o))return{success:!1,path:o,error:`Config not found at ${o}. Run \`agentx init\` first.`};let d;try{d=S(o,"utf-8")}catch(a){return{success:!1,path:o,error:`Cannot read ${o}: ${a.message}`}}let g;try{g=JSON.parse(d)}catch(a){return{success:!1,path:o,error:`Invalid JSON in ${o}: ${a.message}`}}let i=v(g);try{await r(i)}catch(a){return{success:!1,path:o,error:`Mutator threw: ${a.message}`}}if(n){let a=$(i),l=m.safeParse(a);if(!l.success){let k=l.error.issues.map(y=>` ${y.path.join(".")||"<root>"}: ${y.message}`).join(`
2
2
  `);return{success:!1,path:o,error:`Validation failed:
3
3
  ${k}`,after:i}}}if(t)return{success:!0,path:o,after:i,dryRun:!0};try{P(o,JSON.stringify(i,null,2)+`
4
4
  `)}catch(a){return{success:!1,path:o,error:`Write failed: ${a.message}`,after:i}}let p=!1,h;if(s){let a=c||R(i),l=await O(a);l.ok?p=!0:h=l.reason}return{success:!0,path:o,after:i,reloaded:p,reloadSkipped:h}}function R(r){let e=r?.node?.bind;if(!e)return"http://127.0.0.1:18800";let[n,t]=e.split(":");return`http://${n==="0.0.0.0"||n==="::"?"127.0.0.1":n}:${t}`}function N(r,e,n){let t=e.split("."),s=r;for(let u=0;u<t.length-1;u++){let c=t[u];(s[c]===void 0||s[c]===null)&&(s[c]={}),s=s[c]}s[t[t.length-1]]=n}function j(r,e){let n=e.split("."),t=r;for(let s of n){if(t==null)return;t=t[s]}return t}function A(r,e){let n=e.split("."),t=r;for(let s=0;s<n.length-1;s++){if(t==null)return;t=t[n[s]]}t!=null&&delete t[n[n.length-1]]}export{w as a,J as b,N as c,j as d,A as e};
5
- //# sourceMappingURL=chunk-QJP37VVA.js.map
5
+ //# sourceMappingURL=chunk-ZVUVFMYN.js.map
package/dist/cli.js CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
- import{b as o}from"./chunk-JXF54PT7.js";import"./chunk-QIJLFPWE.js";var s=o(process.versions.node);s&&(console.error(s),process.exit(1));var{buildProgram:r}=await import("./program-YK3YR2CQ.js"),{installCliSignalExit:i}=await import("./signal-exit-WL7G3EEZ.js");i();var e=await r();process.argv.slice(2).length===0?e.outputHelp():e.parse();
2
+ import{b as o}from"./chunk-JXF54PT7.js";import"./chunk-QIJLFPWE.js";var s=o(process.versions.node);s&&(console.error(s),process.exit(1));var{buildProgram:r}=await import("./program-7ZNCVU5A.js"),{installCliSignalExit:i}=await import("./signal-exit-WL7G3EEZ.js");i();var e=await r();process.argv.slice(2).length===0?e.outputHelp():e.parse();
3
3
  //# sourceMappingURL=cli.js.map
@@ -1,2 +1,2 @@
1
- import{a,b,c,d,e,f,g}from"./chunk-XEOT2F4C.js";import"./chunk-SIOWVLZG.js";import"./chunk-UIBUZ2N3.js";import"./chunk-BRK6M6LA.js";import"./chunk-2QNT5JDS.js";import"./chunk-QIJLFPWE.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-O7SPKO5X.js.map
1
+ import{a,b,c,d,e,f,g}from"./chunk-2JEJIVOZ.js";import"./chunk-34KJ4Q4E.js";import"./chunk-UIBUZ2N3.js";import"./chunk-BRK6M6LA.js";import"./chunk-2QNT5JDS.js";import"./chunk-QIJLFPWE.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-MYU23KWY.js.map
@@ -1,2 +1,2 @@
1
- import{$ as d,Y as a,Z as b,_ as c,aa as e,ba as f,ca as g,da as h,ea as i,fa as j,ga as k,ha as l,ia as m,ja as n,la as o}from"./chunk-SIOWVLZG.js";import"./chunk-UIBUZ2N3.js";import"./chunk-BRK6M6LA.js";import"./chunk-2QNT5JDS.js";import"./chunk-QIJLFPWE.js";o();export{a as INTEGRATION_KINDS,j as approvalsConfigSchema,d as callsSchema,c as cameraBotSchema,k as daemonConfigSchema,b as eventSubscriptionSchema,l as expandEnvVars,m as loadDaemonConfig,h as membersConfigSchema,g as peopleConfigSchema,f as personSchema,i as requestStatusConfigSchema,e as requestsConfigSchema,n as validateWorkspaces};
2
- //# sourceMappingURL=config-ZHQYXFOJ.js.map
1
+ import{$ as d,Y as a,Z as b,_ as c,aa as e,ba as f,ca as g,da as h,ea as i,fa as j,ga as k,ha as l,ia as m,ja as n,la as o}from"./chunk-34KJ4Q4E.js";import"./chunk-UIBUZ2N3.js";import"./chunk-BRK6M6LA.js";import"./chunk-2QNT5JDS.js";import"./chunk-QIJLFPWE.js";o();export{a as INTEGRATION_KINDS,j as approvalsConfigSchema,d as callsSchema,c as cameraBotSchema,k as daemonConfigSchema,b as eventSubscriptionSchema,l as expandEnvVars,m as loadDaemonConfig,h as membersConfigSchema,g as peopleConfigSchema,f as personSchema,i as requestStatusConfigSchema,e as requestsConfigSchema,n as validateWorkspaces};
2
+ //# sourceMappingURL=config-45OK6PHO.js.map
@@ -0,0 +1,2 @@
1
+ import{a,b,c,d,e}from"./chunk-ZVUVFMYN.js";import"./chunk-34KJ4Q4E.js";import"./chunk-UIBUZ2N3.js";import"./chunk-BRK6M6LA.js";import"./chunk-2QNT5JDS.js";import"./chunk-QIJLFPWE.js";export{b as applyConfigMutation,a as findConfigPath,d as getAtPath,c as setAtPath,e as unsetAtPath};
2
+ //# sourceMappingURL=config-mutator-4SUOOBNK.js.map
@@ -1,2 +1,2 @@
1
- import{b as a,c as b,d as c,e as d,f as e}from"./chunk-4NFDDTGA.js";import"./chunk-S2GAEH2F.js";import"./chunk-JXF54PT7.js";import"./chunk-SIOWVLZG.js";import"./chunk-UIBUZ2N3.js";import"./chunk-BRK6M6LA.js";import"./chunk-2QNT5JDS.js";import"./chunk-QIJLFPWE.js";export{e as daemonVoiceCheck,b as doctor,a as runDoctorChecks,c as runNotificationChecks,d as runReminderChecks};
2
- //# sourceMappingURL=doctor-XP7O45RC.js.map
1
+ import{b as a,c as b,d as c,e as d,f as e}from"./chunk-Q6ILGUDE.js";import"./chunk-S2GAEH2F.js";import"./chunk-JXF54PT7.js";import"./chunk-34KJ4Q4E.js";import"./chunk-UIBUZ2N3.js";import"./chunk-BRK6M6LA.js";import"./chunk-2QNT5JDS.js";import"./chunk-QIJLFPWE.js";export{e as daemonVoiceCheck,b as doctor,a as runDoctorChecks,c as runNotificationChecks,d as runReminderChecks};
2
+ //# sourceMappingURL=doctor-AUF5HJPW.js.map
package/dist/index.d.ts CHANGED
@@ -4836,6 +4836,9 @@ declare const daemonConfigSchema: z.ZodObject<{
4836
4836
  people: z.ZodEffects<z.ZodDefault<z.ZodArray<z.ZodObject<{
4837
4837
  id: z.ZodString;
4838
4838
  name: z.ZodString;
4839
+ /** How this person's name is said aloud, e.g. "A-neess Ma-roo-shee"
4840
+ * (#433). Written forms stay as they are; see voice.pronunciations. */
4841
+ say: z.ZodOptional<z.ZodString>;
4839
4842
  /** `client` (#453): someone the owner works for; /member shows them
4840
4843
  * "Your project", not a teammate's "My work". */
4841
4844
  role: z.ZodDefault<z.ZodEnum<["owner", "member", "client", "guest"]>>;
@@ -4869,6 +4872,7 @@ declare const daemonConfigSchema: z.ZodObject<{
4869
4872
  };
4870
4873
  role: "client" | "guest" | "owner" | "member";
4871
4874
  identities: string[];
4875
+ say?: string | undefined;
4872
4876
  }, {
4873
4877
  id: string;
4874
4878
  name: string;
@@ -4878,6 +4882,7 @@ declare const daemonConfigSchema: z.ZodObject<{
4878
4882
  tools?: string[] | undefined;
4879
4883
  } | undefined;
4880
4884
  role?: "client" | "guest" | "owner" | "member" | undefined;
4885
+ say?: string | undefined;
4881
4886
  identities?: string[] | undefined;
4882
4887
  }>, "many">>, {
4883
4888
  agents: string[];
@@ -4889,6 +4894,7 @@ declare const daemonConfigSchema: z.ZodObject<{
4889
4894
  };
4890
4895
  role: "client" | "guest" | "owner" | "member";
4891
4896
  identities: string[];
4897
+ say?: string | undefined;
4892
4898
  }[], {
4893
4899
  id: string;
4894
4900
  name: string;
@@ -4898,6 +4904,7 @@ declare const daemonConfigSchema: z.ZodObject<{
4898
4904
  tools?: string[] | undefined;
4899
4905
  } | undefined;
4900
4906
  role?: "client" | "guest" | "owner" | "member" | undefined;
4907
+ say?: string | undefined;
4901
4908
  identities?: string[] | undefined;
4902
4909
  }[] | undefined>;
4903
4910
  members: z.ZodDefault<z.ZodObject<{
@@ -5247,6 +5254,25 @@ declare const daemonConfigSchema: z.ZodObject<{
5247
5254
  /** What agents call the person they talk with, e.g. a first name.
5248
5255
  * Unset: "the user". */
5249
5256
  listener: z.ZodOptional<z.ZodString>;
5257
+ /** How a word is said aloud without changing how it is written
5258
+ * (#433): each pair's `written` form, matched as a whole word
5259
+ * without case, is spoken as `spoken`. `languages` ("en", "fr",
5260
+ * "ar") limits a pair to lines in those languages. Only speech
5261
+ * changes; cards, transcripts and messages keep the written form.
5262
+ * See src/voice/pronounce.ts. */
5263
+ pronunciations: z.ZodDefault<z.ZodArray<z.ZodObject<{
5264
+ written: z.ZodString;
5265
+ spoken: z.ZodString;
5266
+ languages: z.ZodOptional<z.ZodArray<z.ZodEnum<["en", "fr", "ar"]>, "many">>;
5267
+ }, "strict", z.ZodTypeAny, {
5268
+ written: string;
5269
+ spoken: string;
5270
+ languages?: ("en" | "fr" | "ar")[] | undefined;
5271
+ }, {
5272
+ written: string;
5273
+ spoken: string;
5274
+ languages?: ("en" | "fr" | "ar")[] | undefined;
5275
+ }>, "many">>;
5250
5276
  /** The agent's drawn pointer and name tag during a lesson. false: it
5251
5277
  * is never drawn, and a lesson is spoken only. */
5252
5278
  pointer: z.ZodDefault<z.ZodBoolean>;
@@ -5341,6 +5367,11 @@ declare const daemonConfigSchema: z.ZodObject<{
5341
5367
  maxHeight: number;
5342
5368
  };
5343
5369
  locale: string;
5370
+ pronunciations: {
5371
+ written: string;
5372
+ spoken: string;
5373
+ languages?: ("en" | "fr" | "ar")[] | undefined;
5374
+ }[];
5344
5375
  pointer: boolean;
5345
5376
  stt: "auto" | "local" | "elevenlabs";
5346
5377
  allowUnmeasured: boolean;
@@ -5373,6 +5404,11 @@ declare const daemonConfigSchema: z.ZodObject<{
5373
5404
  } | undefined;
5374
5405
  locale?: string | undefined;
5375
5406
  listener?: string | undefined;
5407
+ pronunciations?: {
5408
+ written: string;
5409
+ spoken: string;
5410
+ languages?: ("en" | "fr" | "ar")[] | undefined;
5411
+ }[] | undefined;
5376
5412
  pointer?: boolean | undefined;
5377
5413
  stt?: "auto" | "local" | "elevenlabs" | undefined;
5378
5414
  allowUnmeasured?: boolean | undefined;
@@ -6942,6 +6978,11 @@ declare const daemonConfigSchema: z.ZodObject<{
6942
6978
  maxHeight: number;
6943
6979
  };
6944
6980
  locale: string;
6981
+ pronunciations: {
6982
+ written: string;
6983
+ spoken: string;
6984
+ languages?: ("en" | "fr" | "ar")[] | undefined;
6985
+ }[];
6945
6986
  pointer: boolean;
6946
6987
  stt: "auto" | "local" | "elevenlabs";
6947
6988
  allowUnmeasured: boolean;
@@ -7337,6 +7378,7 @@ declare const daemonConfigSchema: z.ZodObject<{
7337
7378
  };
7338
7379
  role: "client" | "guest" | "owner" | "member";
7339
7380
  identities: string[];
7381
+ say?: string | undefined;
7340
7382
  }[];
7341
7383
  members: {
7342
7384
  logRetentionDays: number;
@@ -7748,6 +7790,11 @@ declare const daemonConfigSchema: z.ZodObject<{
7748
7790
  } | undefined;
7749
7791
  locale?: string | undefined;
7750
7792
  listener?: string | undefined;
7793
+ pronunciations?: {
7794
+ written: string;
7795
+ spoken: string;
7796
+ languages?: ("en" | "fr" | "ar")[] | undefined;
7797
+ }[] | undefined;
7751
7798
  pointer?: boolean | undefined;
7752
7799
  stt?: "auto" | "local" | "elevenlabs" | undefined;
7753
7800
  allowUnmeasured?: boolean | undefined;
@@ -8202,6 +8249,7 @@ declare const daemonConfigSchema: z.ZodObject<{
8202
8249
  tools?: string[] | undefined;
8203
8250
  } | undefined;
8204
8251
  role?: "client" | "guest" | "owner" | "member" | undefined;
8252
+ say?: string | undefined;
8205
8253
  identities?: string[] | undefined;
8206
8254
  }[] | undefined;
8207
8255
  members?: {
@@ -9115,6 +9163,8 @@ declare class AgentXDaemon {
9115
9163
  private voiceIntros;
9116
9164
  /** Talk mode and task narration: see src/daemon/voice-talk-api.ts. */
9117
9165
  private voiceTalk;
9166
+ /** Words as the voice says them (voice.pronunciations, people[].say). */
9167
+ private sayAs;
9118
9168
  private screenBuffer?;
9119
9169
  /** Voice for agents on mesh peers: see src/daemon/voice-mesh-proxy.ts. */
9120
9170
  private voiceMesh;
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import{a as St,b as kt,c as vt,d as xt,e as $t,f as Ct,g as Pt,h as bt,ia as Tt,ja as Mt}from"./chunk-K24MYJFP.js";import"./chunk-3RTOS727.js";import"./chunk-U52IS3AF.js";import"./chunk-S2GAEH2F.js";import"./chunk-GTJIKXDB.js";import"./chunk-DG5I6PPM.js";import"./chunk-ZVP6GB4G.js";import"./chunk-PPUN7YHA.js";import"./chunk-VZLIBDLH.js";import"./chunk-EKJG63EJ.js";import"./chunk-LWYKS5JU.js";import"./chunk-2AXFYDWF.js";import"./chunk-AQASR6KR.js";import"./chunk-ACFQBLPX.js";import"./chunk-LQE73AZR.js";import"./chunk-2D3RYIDU.js";import"./chunk-QLWGLRT5.js";import"./chunk-JIT5GPTX.js";import{ca as yt,m as lt,n as ct,o as dt,p as mt,q as pt}from"./chunk-DTQQ4DAY.js";import"./chunk-53OS4TDU.js";import"./chunk-GLQLCBJS.js";import"./chunk-6W74CHNW.js";import{a as L}from"./chunk-C245D4BZ.js";import{A as D,B as z,C as V,a as ye,b as we,c as Se,d as Ae,e as Ie,f as Oe,g as Ne,h as He,i as je,j as Ue,k as _e,l as I,m as q,n as Be,o as qe,p as Ye,q as O,r as ze,s as Ve,t as Xe,u as x,v as Y,w as Qe,x as Ze,y as et,z as wt}from"./chunk-HCTWKWS3.js";import{a as B,b as M,c as F}from"./chunk-SFQUP3BP.js";import"./chunk-LLNPKE7H.js";import"./chunk-SHEUCITK.js";import"./chunk-Y4CYQV7G.js";import"./chunk-WXQQO2PD.js";import"./chunk-GV7S5BAX.js";import"./chunk-SZDACK6O.js";import"./chunk-76Z4VHDX.js";import"./chunk-W4YR2RO2.js";import"./chunk-AFRHKA7B.js";import{s as ut}from"./chunk-M2L6S3Z5.js";import"./chunk-QJP37VVA.js";import"./chunk-VWTBHLMX.js";import"./chunk-DXWDVKMX.js";import{a as ht}from"./chunk-Z7L74GGT.js";import"./chunk-36AXN6ZB.js";import"./chunk-KA2UIZXG.js";import"./chunk-GQ76J72O.js";import"./chunk-ILEC3IAV.js";import"./chunk-J3SOEFRE.js";import"./chunk-SIU6STB2.js";import"./chunk-X5C5W3E4.js";import"./chunk-GSX4NK2N.js";import"./chunk-7UNS34CN.js";import"./chunk-MYVHVJWZ.js";import"./chunk-AV7T3SYT.js";import"./chunk-23A5K5UW.js";import"./chunk-QD6IICK7.js";import"./chunk-CECHWYJ2.js";import"./chunk-FBODSJU6.js";import{f as gt,g as ft}from"./chunk-RS2T53EC.js";import"./chunk-WPNRDEHW.js";import"./chunk-2GIDVZ4H.js";import{j as it,k as rt,l as at}from"./chunk-GQMUFSKB.js";import"./chunk-72SZI2UW.js";import"./chunk-FX3D7YON.js";import"./chunk-FCPTN6NF.js";import"./chunk-QOYAX2FT.js";import{a as ke,b as ve,c as xe,d as $e,e as Ce,f as Pe,g as be,h as Te,i as Me,j as Re,l as Ee,m as Ge,o as T,p as W}from"./chunk-5MUJZODV.js";import{a as m,b as G}from"./chunk-7I7IEX4S.js";import{b as Fe,c as Le,d as A,e as De}from"./chunk-JHCI6XCJ.js";import{a as Ke,b as Je,e as We}from"./chunk-DSYKYZMT.js";import{ga as tt,ia as st,ja as ot,la as nt}from"./chunk-SIOWVLZG.js";import"./chunk-UIBUZ2N3.js";import"./chunk-BRK6M6LA.js";import"./chunk-2QNT5JDS.js";import"./chunk-RGDKHYY2.js";import"./chunk-QIJLFPWE.js";W();G();import{execa as Rt}from"execa";import{existsSync as se,promises as X}from"fs";import S from"path";import ie from"node-fetch";async function Et(o,e){let t=o.split("/");if(t.length<2)throw new Error(`Invalid skill package ID: ${o}. Expected format: owner/repo`);let s=t[0],i=t[1],n=t[2];try{let a=n?`${s}/${i}/${n}`:`${s}/${i}`;await Rt("npx",["-y","skills","add",a],{cwd:e,stdio:"pipe"}),m.success(`Installed skill package: ${o}`);let r=S.resolve(e,".skills",`${s}_${i}`);if(se(r))return await ne(r,o);let d=S.resolve(e,".skills");return se(d)?await ne(d,o):[]}catch{return m.info(`Fetching skills directly from GitHub: ${s}/${i}`),await Gt(s,i,n,e)}}async function Gt(o,e,t,s){let i=[];try{let n=`https://api.github.com/repos/${o}/${e}/git/trees/main?recursive=1`,a=await ie(n);if(!a.ok)throw new Error(`GitHub API error: ${a.status}`);let d=(await a.json()).tree.filter(p=>p.type==="blob"&&p.path.endsWith("SKILL.md"));if(t){let p=d.find(f=>f.path.includes(`/${t}/`)||f.path===`${t}/SKILL.md`);if(p){let f=await oe(o,e,p.path,s);f&&i.push(f)}}else for(let p of d){let f=await oe(o,e,p.path,s);f&&i.push(f)}}catch(n){m.error(`Failed to fetch skills from GitHub: ${n.message}`)}return i}async function oe(o,e,t,s){try{let i=`https://raw.githubusercontent.com/${o}/${e}/main/${t}`,n=await ie(i);if(!n.ok)return null;let a=await n.text(),r=A(a);if(r){r.source="remote",r.packageId=`${o}/${e}`;let d=S.dirname(t),p=S.resolve(s,".skills",`${o}_${e}`,d);await X.mkdir(p,{recursive:!0}),await X.writeFile(S.resolve(p,"SKILL.md"),a),r.path=S.resolve(p,"SKILL.md")}return r}catch{return null}}async function ne(o,e){let t=[],{default:s}=await import("fast-glob"),i=await s.glob("**/SKILL.md",{cwd:o,deep:5});for(let n of i)try{let a=S.resolve(o,n),r=await X.readFile(a,"utf8"),d=A(r);d&&(d.source="remote",d.path=a,d.packageId=e,t.push(d))}catch{}return t}async function At(o,e,t,s,i){let n=["---",`name: ${o}`,`description: ${e}`];if(s?.length){n.push("tags:");for(let a of s)n.push(` - ${a}`)}if(i?.length){n.push("globs:");for(let a of i)n.push(` - ${a}`)}return n.push("---"),`${n.join(`
1
+ import{a as St,b as kt,c as vt,d as xt,e as $t,f as Ct,g as Pt,h as bt,ia as Tt,ja as Mt}from"./chunk-SFAZ6IH2.js";import"./chunk-K4TN34OM.js";import"./chunk-6DGPWKRK.js";import"./chunk-S2GAEH2F.js";import"./chunk-GTJIKXDB.js";import"./chunk-DG5I6PPM.js";import"./chunk-ZVP6GB4G.js";import"./chunk-PPUN7YHA.js";import"./chunk-VZLIBDLH.js";import"./chunk-EKJG63EJ.js";import"./chunk-NHAVY7VU.js";import"./chunk-2AXFYDWF.js";import"./chunk-AQASR6KR.js";import"./chunk-ACFQBLPX.js";import"./chunk-LQE73AZR.js";import"./chunk-2D3RYIDU.js";import"./chunk-QLWGLRT5.js";import"./chunk-JIT5GPTX.js";import{ca as yt,m as lt,n as ct,o as dt,p as mt,q as pt}from"./chunk-RXAR3JIV.js";import"./chunk-ETV2UH66.js";import"./chunk-GLQLCBJS.js";import"./chunk-6W74CHNW.js";import{a as L}from"./chunk-C245D4BZ.js";import{A as D,B as z,C as V,a as ye,b as we,c as Se,d as Ae,e as Ie,f as Oe,g as Ne,h as He,i as je,j as Ue,k as _e,l as I,m as q,n as Be,o as qe,p as Ye,q as O,r as ze,s as Ve,t as Xe,u as x,v as Y,w as Qe,x as Ze,y as et,z as wt}from"./chunk-ANV4T62P.js";import{a as B,b as M,c as F}from"./chunk-SFQUP3BP.js";import"./chunk-LLNPKE7H.js";import"./chunk-SHEUCITK.js";import"./chunk-Y4CYQV7G.js";import"./chunk-XEJ4E5HH.js";import"./chunk-GV7S5BAX.js";import"./chunk-SZDACK6O.js";import"./chunk-76Z4VHDX.js";import"./chunk-W4YR2RO2.js";import"./chunk-AFRHKA7B.js";import{s as ut}from"./chunk-7MTHXIT5.js";import"./chunk-ZVUVFMYN.js";import"./chunk-VWTBHLMX.js";import"./chunk-R4KGAIBF.js";import{a as ht}from"./chunk-MOO6DKMZ.js";import"./chunk-36AXN6ZB.js";import"./chunk-KA2UIZXG.js";import"./chunk-GQ76J72O.js";import"./chunk-ILEC3IAV.js";import"./chunk-J3SOEFRE.js";import"./chunk-SIU6STB2.js";import"./chunk-X5C5W3E4.js";import"./chunk-GSX4NK2N.js";import"./chunk-2S5T3VT5.js";import"./chunk-MYVHVJWZ.js";import"./chunk-AV7T3SYT.js";import"./chunk-23A5K5UW.js";import"./chunk-QD6IICK7.js";import"./chunk-CECHWYJ2.js";import"./chunk-WN5MCIVA.js";import{f as gt,g as ft}from"./chunk-EUCLJ2VL.js";import"./chunk-WPNRDEHW.js";import"./chunk-2GIDVZ4H.js";import{j as it,k as rt,l as at}from"./chunk-HIVQHFPT.js";import"./chunk-72SZI2UW.js";import"./chunk-FX3D7YON.js";import"./chunk-FCPTN6NF.js";import"./chunk-QOYAX2FT.js";import{a as ke,b as ve,c as xe,d as $e,e as Ce,f as Pe,g as be,h as Te,i as Me,j as Re,l as Ee,m as Ge,o as T,p as W}from"./chunk-5MUJZODV.js";import{a as m,b as G}from"./chunk-7I7IEX4S.js";import{b as Fe,c as Le,d as A,e as De}from"./chunk-JHCI6XCJ.js";import{a as Ke,b as Je,e as We}from"./chunk-DSYKYZMT.js";import{ga as tt,ia as st,ja as ot,la as nt}from"./chunk-34KJ4Q4E.js";import"./chunk-UIBUZ2N3.js";import"./chunk-BRK6M6LA.js";import"./chunk-2QNT5JDS.js";import"./chunk-RGDKHYY2.js";import"./chunk-QIJLFPWE.js";W();G();import{execa as Rt}from"execa";import{existsSync as se,promises as X}from"fs";import S from"path";import ie from"node-fetch";async function Et(o,e){let t=o.split("/");if(t.length<2)throw new Error(`Invalid skill package ID: ${o}. Expected format: owner/repo`);let s=t[0],i=t[1],n=t[2];try{let a=n?`${s}/${i}/${n}`:`${s}/${i}`;await Rt("npx",["-y","skills","add",a],{cwd:e,stdio:"pipe"}),m.success(`Installed skill package: ${o}`);let r=S.resolve(e,".skills",`${s}_${i}`);if(se(r))return await ne(r,o);let d=S.resolve(e,".skills");return se(d)?await ne(d,o):[]}catch{return m.info(`Fetching skills directly from GitHub: ${s}/${i}`),await Gt(s,i,n,e)}}async function Gt(o,e,t,s){let i=[];try{let n=`https://api.github.com/repos/${o}/${e}/git/trees/main?recursive=1`,a=await ie(n);if(!a.ok)throw new Error(`GitHub API error: ${a.status}`);let d=(await a.json()).tree.filter(p=>p.type==="blob"&&p.path.endsWith("SKILL.md"));if(t){let p=d.find(f=>f.path.includes(`/${t}/`)||f.path===`${t}/SKILL.md`);if(p){let f=await oe(o,e,p.path,s);f&&i.push(f)}}else for(let p of d){let f=await oe(o,e,p.path,s);f&&i.push(f)}}catch(n){m.error(`Failed to fetch skills from GitHub: ${n.message}`)}return i}async function oe(o,e,t,s){try{let i=`https://raw.githubusercontent.com/${o}/${e}/main/${t}`,n=await ie(i);if(!n.ok)return null;let a=await n.text(),r=A(a);if(r){r.source="remote",r.packageId=`${o}/${e}`;let d=S.dirname(t),p=S.resolve(s,".skills",`${o}_${e}`,d);await X.mkdir(p,{recursive:!0}),await X.writeFile(S.resolve(p,"SKILL.md"),a),r.path=S.resolve(p,"SKILL.md")}return r}catch{return null}}async function ne(o,e){let t=[],{default:s}=await import("fast-glob"),i=await s.glob("**/SKILL.md",{cwd:o,deep:5});for(let n of i)try{let a=S.resolve(o,n),r=await X.readFile(a,"utf8"),d=A(r);d&&(d.source="remote",d.path=a,d.packageId=e,t.push(d))}catch{}return t}async function At(o,e,t,s,i){let n=["---",`name: ${o}`,`description: ${e}`];if(s?.length){n.push("tags:");for(let a of s)n.push(` - ${a}`)}if(i?.length){n.push("globs:");for(let a of i)n.push(` - ${a}`)}return n.push("---"),`${n.join(`
2
2
  `)}
3
3
 
4
4
  ${t}`}async function It(o){let{loadLocalSkills:e}=await import("./loader-YFVSSYSL.js");return e(o)}async function Ot(o,e,t,s,i){let a=[{role:"system",content:`You are a skill author for the Agent Skills ecosystem (skills.sh).