agentix-cli 0.75.2 → 0.76.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 (115) hide show
  1. package/README.md +21 -6
  2. package/dist/{App-N2ZWRJKV.js → App-NCTXMA2P.js} +2 -2
  3. package/dist/{ChatApp-PGQKQBHF.js → ChatApp-CQIQEKZ2.js} +2 -2
  4. package/dist/{agent-B46X7Y6V.js → agent-5GQLISLJ.js} +2 -2
  5. package/dist/{board-dashboard-W64VXH6Y.js → board-dashboard-E4CXJUK5.js} +5 -4
  6. package/dist/board-dashboard-E4CXJUK5.js.map +1 -0
  7. package/dist/{chunk-6CCJMHBA.js → chunk-2KOWJNQJ.js} +2 -2
  8. package/dist/{chunk-TS4JCBSP.js → chunk-676OIOHG.js} +30 -30
  9. package/dist/chunk-676OIOHG.js.map +1 -0
  10. package/dist/{chunk-NWL5KPBJ.js → chunk-72P53PGX.js} +2 -2
  11. package/dist/{chunk-663BLK67.js → chunk-7GC42WAK.js} +32 -32
  12. package/dist/chunk-7GC42WAK.js.map +1 -0
  13. package/dist/{chunk-S5JGQKON.js → chunk-A4ACRRRP.js} +2 -2
  14. package/dist/{chunk-JGEHN4VE.js → chunk-B556VD7A.js} +2 -2
  15. package/dist/{chunk-PUU2ESI2.js → chunk-CW42OBFL.js} +2 -2
  16. package/dist/{chunk-Q2FFZX7Y.js → chunk-EAMSULHF.js} +2 -2
  17. package/dist/{chunk-KIXYU2DD.js → chunk-GT6ZDLXU.js} +197 -189
  18. package/dist/chunk-GT6ZDLXU.js.map +1 -0
  19. package/dist/{chunk-UJ5JLS6Z.js → chunk-IYLQBBON.js} +2 -2
  20. package/dist/{chunk-CUXYJNWT.js → chunk-LQ3PEMBH.js} +2 -2
  21. package/dist/{chunk-55RM7V4N.js → chunk-MODPTVA6.js} +2 -2
  22. package/dist/chunk-N3Y3NORE.js +7 -0
  23. package/dist/chunk-N3Y3NORE.js.map +1 -0
  24. package/dist/{chunk-PBUJBWOF.js → chunk-P27P7GFY.js} +5 -5
  25. package/dist/{chunk-KHEI4VNM.js → chunk-PDSCFOC4.js} +2 -2
  26. package/dist/{chunk-F2RIMHW5.js → chunk-PK6EBDBU.js} +2 -2
  27. package/dist/{chunk-2HMI5PJG.js → chunk-QGTQ4PIL.js} +2 -2
  28. package/dist/chunk-R5BXA7TL.js +3 -0
  29. package/dist/chunk-R5BXA7TL.js.map +1 -0
  30. package/dist/{chunk-BYJ3A55Y.js → chunk-S2GAEH2F.js} +2 -2
  31. package/dist/{chunk-IR2Q63IV.js → chunk-SC6Q5M4C.js} +2 -2
  32. package/dist/{chunk-RGTHA2EI.js → chunk-SY7ENNNK.js} +2 -2
  33. package/dist/{chunk-CXZ4YDHJ.js → chunk-SZZSUW42.js} +2 -2
  34. package/dist/{chunk-CXZ4YDHJ.js.map → chunk-SZZSUW42.js.map} +1 -1
  35. package/dist/{chunk-7ZO2UZRI.js → chunk-URINHGJF.js} +233 -233
  36. package/dist/chunk-URINHGJF.js.map +1 -0
  37. package/dist/{chunk-CAVAMWI5.js → chunk-ZPM7SSJM.js} +2 -2
  38. package/dist/cli.js +1 -1
  39. package/dist/cli.js.map +1 -1
  40. package/dist/client-HLCKITQJ.js +2 -0
  41. package/dist/{config-A23CU2XT.js → config-QLCPWIJN.js} +2 -2
  42. package/dist/config-mutator-BCTMKRPT.js +2 -0
  43. package/dist/doctor-74P5CWVW.js +2 -0
  44. package/dist/index.d.ts +60 -0
  45. package/dist/index.js +1 -1
  46. package/dist/index.js.map +1 -1
  47. package/dist/program-ONWCNXKS.js +2 -0
  48. package/dist/{promote-PMMUU4G2.js → promote-VFL66JD2.js} +2 -2
  49. package/dist/{query-CB6FV6JU.js → query-MCCWN6XA.js} +2 -2
  50. package/dist/{registry-A2LPURNS.js → registry-43X3DQTI.js} +2 -2
  51. package/dist/{request-planner-44WOTYCY.js → request-planner-GSGBUGNG.js} +2 -2
  52. package/dist/{review-candidates-BZLS37MN.js → review-candidates-4Z6QTMN2.js} +2 -2
  53. package/dist/{routing-CPLPRA2E.js → routing-T66LO3JY.js} +2 -2
  54. package/dist/schedule-tool-ORNG6HMN.js +2 -0
  55. package/dist/scheduler-VIWJITKR.js +2 -0
  56. package/dist/{seat-CBAZAYGY.js → seat-4H7TTV5X.js} +2 -2
  57. package/dist/{select-4CW3CXBU.js → select-YCVNOR5Q.js} +2 -2
  58. package/dist/{set-enabled-QNSLVBGT.js → set-enabled-6UGUPYW4.js} +2 -2
  59. package/dist/tool-EID3ZKQK.js +4 -0
  60. package/dist/tool-EID3ZKQK.js.map +1 -0
  61. package/dist/wiki-SHHIVZPT.js +2 -0
  62. package/package.json +2 -2
  63. package/dist/board-dashboard-W64VXH6Y.js.map +0 -1
  64. package/dist/chunk-663BLK67.js.map +0 -1
  65. package/dist/chunk-7ZO2UZRI.js.map +0 -1
  66. package/dist/chunk-GZAGG3ES.js +0 -7
  67. package/dist/chunk-GZAGG3ES.js.map +0 -1
  68. package/dist/chunk-KIXYU2DD.js.map +0 -1
  69. package/dist/chunk-TS4JCBSP.js.map +0 -1
  70. package/dist/client-5DVNJ4VZ.js +0 -2
  71. package/dist/config-mutator-WDZ6F6Q4.js +0 -2
  72. package/dist/doctor-MVV47YVK.js +0 -2
  73. package/dist/program-3DBXC6DX.js +0 -2
  74. package/dist/schedule-tool-4I3QUXJK.js +0 -2
  75. package/dist/scheduler-LJ32FB5N.js +0 -2
  76. package/dist/tool-544FGIJK.js +0 -2
  77. package/dist/tool-544FGIJK.js.map +0 -1
  78. package/dist/wiki-4LKOLCP4.js +0 -2
  79. /package/dist/{App-N2ZWRJKV.js.map → App-NCTXMA2P.js.map} +0 -0
  80. /package/dist/{ChatApp-PGQKQBHF.js.map → ChatApp-CQIQEKZ2.js.map} +0 -0
  81. /package/dist/{agent-B46X7Y6V.js.map → agent-5GQLISLJ.js.map} +0 -0
  82. /package/dist/{chunk-6CCJMHBA.js.map → chunk-2KOWJNQJ.js.map} +0 -0
  83. /package/dist/{chunk-NWL5KPBJ.js.map → chunk-72P53PGX.js.map} +0 -0
  84. /package/dist/{chunk-S5JGQKON.js.map → chunk-A4ACRRRP.js.map} +0 -0
  85. /package/dist/{chunk-JGEHN4VE.js.map → chunk-B556VD7A.js.map} +0 -0
  86. /package/dist/{chunk-PUU2ESI2.js.map → chunk-CW42OBFL.js.map} +0 -0
  87. /package/dist/{chunk-Q2FFZX7Y.js.map → chunk-EAMSULHF.js.map} +0 -0
  88. /package/dist/{chunk-UJ5JLS6Z.js.map → chunk-IYLQBBON.js.map} +0 -0
  89. /package/dist/{chunk-CUXYJNWT.js.map → chunk-LQ3PEMBH.js.map} +0 -0
  90. /package/dist/{chunk-55RM7V4N.js.map → chunk-MODPTVA6.js.map} +0 -0
  91. /package/dist/{chunk-PBUJBWOF.js.map → chunk-P27P7GFY.js.map} +0 -0
  92. /package/dist/{chunk-KHEI4VNM.js.map → chunk-PDSCFOC4.js.map} +0 -0
  93. /package/dist/{chunk-F2RIMHW5.js.map → chunk-PK6EBDBU.js.map} +0 -0
  94. /package/dist/{chunk-2HMI5PJG.js.map → chunk-QGTQ4PIL.js.map} +0 -0
  95. /package/dist/{chunk-BYJ3A55Y.js.map → chunk-S2GAEH2F.js.map} +0 -0
  96. /package/dist/{chunk-IR2Q63IV.js.map → chunk-SC6Q5M4C.js.map} +0 -0
  97. /package/dist/{chunk-RGTHA2EI.js.map → chunk-SY7ENNNK.js.map} +0 -0
  98. /package/dist/{chunk-CAVAMWI5.js.map → chunk-ZPM7SSJM.js.map} +0 -0
  99. /package/dist/{client-5DVNJ4VZ.js.map → client-HLCKITQJ.js.map} +0 -0
  100. /package/dist/{config-A23CU2XT.js.map → config-QLCPWIJN.js.map} +0 -0
  101. /package/dist/{config-mutator-WDZ6F6Q4.js.map → config-mutator-BCTMKRPT.js.map} +0 -0
  102. /package/dist/{doctor-MVV47YVK.js.map → doctor-74P5CWVW.js.map} +0 -0
  103. /package/dist/{program-3DBXC6DX.js.map → program-ONWCNXKS.js.map} +0 -0
  104. /package/dist/{promote-PMMUU4G2.js.map → promote-VFL66JD2.js.map} +0 -0
  105. /package/dist/{query-CB6FV6JU.js.map → query-MCCWN6XA.js.map} +0 -0
  106. /package/dist/{registry-A2LPURNS.js.map → registry-43X3DQTI.js.map} +0 -0
  107. /package/dist/{request-planner-44WOTYCY.js.map → request-planner-GSGBUGNG.js.map} +0 -0
  108. /package/dist/{review-candidates-BZLS37MN.js.map → review-candidates-4Z6QTMN2.js.map} +0 -0
  109. /package/dist/{routing-CPLPRA2E.js.map → routing-T66LO3JY.js.map} +0 -0
  110. /package/dist/{schedule-tool-4I3QUXJK.js.map → schedule-tool-ORNG6HMN.js.map} +0 -0
  111. /package/dist/{scheduler-LJ32FB5N.js.map → scheduler-VIWJITKR.js.map} +0 -0
  112. /package/dist/{seat-CBAZAYGY.js.map → seat-4H7TTV5X.js.map} +0 -0
  113. /package/dist/{select-4CW3CXBU.js.map → select-YCVNOR5Q.js.map} +0 -0
  114. /package/dist/{set-enabled-QNSLVBGT.js.map → set-enabled-6UGUPYW4.js.map} +0 -0
  115. /package/dist/{wiki-4LKOLCP4.js.map → wiki-SHHIVZPT.js.map} +0 -0
@@ -1,2 +1,2 @@
1
- import{a as o}from"./chunk-UJ5JLS6Z.js";import{resolve as a}from"path";import{existsSync as d,readdirSync as c,mkdirSync as l}from"fs";var g=class{baseDir;agentsDir;mode;sharedStore;agentStores=new Map;log;constructor(t=a(process.cwd(),".agentx/wiki"),e=console.error.bind(console,"[wiki-hub]"),r="graph"){this.baseDir=t,this.agentsDir=a(t,"agents"),this.mode=r,this.log=e,l(this.agentsDir,{recursive:!0}),this.sharedStore=new o(t,e)}getMode(){return this.mode}getAgentWiki(t){let e=`${t}:${this.mode}`;if(this.agentStores.has(e))return this.agentStores.get(e);let r=a(this.agentsDir,t,this.mode),i=new o(r,this.log);return this.agentStores.set(e,i),i}getBaseDir(){return this.baseDir}getSharedStore(){return this.sharedStore}listAgents(){let t=new Set,e=this.sharedStore.listEntries();for(let r of e)t.add(r.agentId);if(d(this.agentsDir))for(let r of c(this.agentsDir))!r.startsWith("_")&&!r.startsWith(".")&&t.add(r);return[...t].sort()}getAgentEntries(t){return this.sharedStore.listEntries({agentId:t})}getUnabsorbedEntries(t){let e=this.getAgentWiki(t),r=this.getAgentEntries(t),i=new Set,n=e.rebuildIndex();for(let s of n.articles)if(s.sources)for(let h of s.sources)i.add(h);return r.filter(s=>!i.has(s.id))}summary(){return this.listAgents().map(e=>{let r=this.getAgentEntries(e),n=this.getAgentWiki(e).rebuildIndex(),s=this.getUnabsorbedEntries(e);return{agentId:e,totalEntries:r.length,totalArticles:n.articles.length,unabsorbed:s.length,articles:n.articles}})}};export{g as a};
2
- //# sourceMappingURL=chunk-CAVAMWI5.js.map
1
+ import{a as o}from"./chunk-IYLQBBON.js";import{resolve as a}from"path";import{existsSync as d,readdirSync as c,mkdirSync as l}from"fs";var g=class{baseDir;agentsDir;mode;sharedStore;agentStores=new Map;log;constructor(t=a(process.cwd(),".agentx/wiki"),e=console.error.bind(console,"[wiki-hub]"),r="graph"){this.baseDir=t,this.agentsDir=a(t,"agents"),this.mode=r,this.log=e,l(this.agentsDir,{recursive:!0}),this.sharedStore=new o(t,e)}getMode(){return this.mode}getAgentWiki(t){let e=`${t}:${this.mode}`;if(this.agentStores.has(e))return this.agentStores.get(e);let r=a(this.agentsDir,t,this.mode),i=new o(r,this.log);return this.agentStores.set(e,i),i}getBaseDir(){return this.baseDir}getSharedStore(){return this.sharedStore}listAgents(){let t=new Set,e=this.sharedStore.listEntries();for(let r of e)t.add(r.agentId);if(d(this.agentsDir))for(let r of c(this.agentsDir))!r.startsWith("_")&&!r.startsWith(".")&&t.add(r);return[...t].sort()}getAgentEntries(t){return this.sharedStore.listEntries({agentId:t})}getUnabsorbedEntries(t){let e=this.getAgentWiki(t),r=this.getAgentEntries(t),i=new Set,n=e.rebuildIndex();for(let s of n.articles)if(s.sources)for(let h of s.sources)i.add(h);return r.filter(s=>!i.has(s.id))}summary(){return this.listAgents().map(e=>{let r=this.getAgentEntries(e),n=this.getAgentWiki(e).rebuildIndex(),s=this.getUnabsorbedEntries(e);return{agentId:e,totalEntries:r.length,totalArticles:n.articles.length,unabsorbed:s.length,articles:n.articles}})}};export{g as a};
2
+ //# sourceMappingURL=chunk-ZPM7SSJM.js.map
package/dist/cli.js CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
- import{a as n}from"./chunk-7ZO2UZRI.js";import"./chunk-JGEHN4VE.js";import"./chunk-GZAGG3ES.js";import"./chunk-TS4JCBSP.js";import"./chunk-Z3IP66SL.js";import"./chunk-C4CDVE2E.js";import"./chunk-RKPAVWXF.js";import"./chunk-SZDACK6O.js";import"./chunk-GV7S5BAX.js";import"./chunk-GSX4NK2N.js";import"./chunk-KIXYU2DD.js";import"./chunk-663BLK67.js";import"./chunk-RGTHA2EI.js";import"./chunk-BYJ3A55Y.js";import"./chunk-7XB2CVC3.js";import"./chunk-LQRBGQIR.js";import"./chunk-ZVP6GB4G.js";import"./chunk-Q2FFZX7Y.js";import"./chunk-AQASR6KR.js";import"./chunk-2D3RYIDU.js";import"./chunk-EKJG63EJ.js";import"./chunk-PBUJBWOF.js";import"./chunk-2HMI5PJG.js";import"./chunk-WP6KLXTP.js";import"./chunk-N6EWZGIX.js";import"./chunk-DP7RTNDM.js";import"./chunk-F2RIMHW5.js";import"./chunk-SFQUP3BP.js";import"./chunk-S5JGQKON.js";import"./chunk-2AXFYDWF.js";import"./chunk-76Z4VHDX.js";import"./chunk-W4YR2RO2.js";import"./chunk-AFRHKA7B.js";import"./chunk-PUU2ESI2.js";import"./chunk-IR2Q63IV.js";import"./chunk-VWTBHLMX.js";import"./chunk-CAVAMWI5.js";import"./chunk-UJ5JLS6Z.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-6CCJMHBA.js";import"./chunk-MYVHVJWZ.js";import"./chunk-DWADWDMU.js";import"./chunk-23A5K5UW.js";import"./chunk-QD6IICK7.js";import"./chunk-CECHWYJ2.js";import"./chunk-55RM7V4N.js";import"./chunk-NWL5KPBJ.js";import"./chunk-WPNRDEHW.js";import"./chunk-2GIDVZ4H.js";import"./chunk-KHEI4VNM.js";import"./chunk-FX3D7YON.js";import"./chunk-72SZI2UW.js";import"./chunk-FCPTN6NF.js";import"./chunk-QOYAX2FT.js";import"./chunk-5MUJZODV.js";import"./chunk-7I7IEX4S.js";import"./chunk-JHCI6XCJ.js";import"./chunk-DSYKYZMT.js";import"./chunk-CXZ4YDHJ.js";import"./chunk-RGDKHYY2.js";import"./chunk-QIJLFPWE.js";var r=["SIGINT","SIGTERM"];function o(t=process){for(let i of r)t.on(i,()=>{t.listenerCount(i)<=1&&t.exit(0)})}o();async function s(){let t=await n();if(process.argv.slice(2).length===0){t.outputHelp();return}t.parse()}s();
2
+ import{a as n}from"./chunk-URINHGJF.js";import"./chunk-B556VD7A.js";import"./chunk-N3Y3NORE.js";import"./chunk-676OIOHG.js";import"./chunk-Z3IP66SL.js";import"./chunk-C4CDVE2E.js";import"./chunk-RKPAVWXF.js";import"./chunk-SZDACK6O.js";import"./chunk-GV7S5BAX.js";import"./chunk-GSX4NK2N.js";import"./chunk-GT6ZDLXU.js";import"./chunk-7GC42WAK.js";import"./chunk-SY7ENNNK.js";import"./chunk-S2GAEH2F.js";import"./chunk-7XB2CVC3.js";import"./chunk-LQRBGQIR.js";import"./chunk-ZVP6GB4G.js";import"./chunk-EAMSULHF.js";import"./chunk-AQASR6KR.js";import"./chunk-2D3RYIDU.js";import"./chunk-EKJG63EJ.js";import"./chunk-P27P7GFY.js";import"./chunk-QGTQ4PIL.js";import"./chunk-WP6KLXTP.js";import"./chunk-N6EWZGIX.js";import"./chunk-DP7RTNDM.js";import"./chunk-PK6EBDBU.js";import"./chunk-SFQUP3BP.js";import"./chunk-R5BXA7TL.js";import"./chunk-A4ACRRRP.js";import"./chunk-2AXFYDWF.js";import"./chunk-76Z4VHDX.js";import"./chunk-W4YR2RO2.js";import"./chunk-AFRHKA7B.js";import"./chunk-CW42OBFL.js";import"./chunk-SC6Q5M4C.js";import"./chunk-VWTBHLMX.js";import"./chunk-ZPM7SSJM.js";import"./chunk-IYLQBBON.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-2KOWJNQJ.js";import"./chunk-MYVHVJWZ.js";import"./chunk-DWADWDMU.js";import"./chunk-23A5K5UW.js";import"./chunk-QD6IICK7.js";import"./chunk-CECHWYJ2.js";import"./chunk-MODPTVA6.js";import"./chunk-72P53PGX.js";import"./chunk-WPNRDEHW.js";import"./chunk-2GIDVZ4H.js";import"./chunk-PDSCFOC4.js";import"./chunk-FX3D7YON.js";import"./chunk-72SZI2UW.js";import"./chunk-FCPTN6NF.js";import"./chunk-QOYAX2FT.js";import"./chunk-5MUJZODV.js";import"./chunk-7I7IEX4S.js";import"./chunk-JHCI6XCJ.js";import"./chunk-DSYKYZMT.js";import"./chunk-SZZSUW42.js";import"./chunk-RGDKHYY2.js";import"./chunk-QIJLFPWE.js";var r=["SIGINT","SIGTERM"];function o(t=process){for(let i of r)t.on(i,()=>{t.listenerCount(i)<=1&&t.exit(0)})}o();async function s(){let t=await n();if(process.argv.slice(2).length===0){t.outputHelp();return}t.parse()}s();
3
3
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/signal-exit.ts","../src/cli.ts"],"sourcesContent":["// --- Ctrl-C / SIGTERM for CLI commands ---\n//\n// Short commands should exit at once when stopped. Long-running ones (the\n// daemon above all) install their own handler to finish in-flight work first.\n// The CLI's quick exit used to be registered unconditionally, before the\n// daemon's, and Node runs listeners in registration order — so every stop\n// exited the process before the daemon's drain began and killed in-flight\n// agent tasks mid-turn (#103). Now the quick exit only fires when nobody\n// else handles the signal.\n\ntype SignalTarget = Pick<NodeJS.Process, \"on\" | \"listenerCount\" | \"exit\">\n\nexport const CLI_EXIT_SIGNALS = [\"SIGINT\", \"SIGTERM\"] as const\n\nexport function installCliSignalExit(proc: SignalTarget = process): void {\n for (const sig of CLI_EXIT_SIGNALS) {\n proc.on(sig, () => {\n // This listener is always one of them; anything more means a command\n // is handling the stop itself.\n if (proc.listenerCount(sig) <= 1) proc.exit(0)\n })\n }\n}\n","#!/usr/bin/env node\nimport { buildProgram } from \"@/program\"\nimport { installCliSignalExit } from \"@/utils/signal-exit\"\n\ninstallCliSignalExit()\n\nasync function main() {\n const program = await buildProgram()\n\n const args = process.argv.slice(2)\n if (args.length === 0) {\n program.outputHelp()\n return\n }\n\n program.parse()\n}\n\nmain()\n"],"mappings":";o0DAYO,IAAMA,EAAmB,CAAC,SAAU,SAAS,EAE7C,SAASC,EAAqBC,EAAqB,QAAe,CACvE,QAAWC,KAAOH,EAChBE,EAAK,GAAGC,EAAK,IAAM,CAGbD,EAAK,cAAcC,CAAG,GAAK,GAAGD,EAAK,KAAK,CAAC,CAC/C,CAAC,CAEL,CClBAE,EAAqB,EAErB,eAAeC,GAAO,CACpB,IAAMC,EAAU,MAAMC,EAAa,EAGnC,GADa,QAAQ,KAAK,MAAM,CAAC,EACxB,SAAW,EAAG,CACrBD,EAAQ,WAAW,EACnB,OAGFA,EAAQ,MAAM,CAChB,CAEAD,EAAK","names":["CLI_EXIT_SIGNALS","installCliSignalExit","proc","sig","installCliSignalExit","main","program","buildProgram"]}
1
+ {"version":3,"sources":["../src/utils/signal-exit.ts","../src/cli.ts"],"sourcesContent":["// --- Ctrl-C / SIGTERM for CLI commands ---\n//\n// Short commands should exit at once when stopped. Long-running ones (the\n// daemon above all) install their own handler to finish in-flight work first.\n// The CLI's quick exit used to be registered unconditionally, before the\n// daemon's, and Node runs listeners in registration order — so every stop\n// exited the process before the daemon's drain began and killed in-flight\n// agent tasks mid-turn (#103). Now the quick exit only fires when nobody\n// else handles the signal.\n\ntype SignalTarget = Pick<NodeJS.Process, \"on\" | \"listenerCount\" | \"exit\">\n\nexport const CLI_EXIT_SIGNALS = [\"SIGINT\", \"SIGTERM\"] as const\n\nexport function installCliSignalExit(proc: SignalTarget = process): void {\n for (const sig of CLI_EXIT_SIGNALS) {\n proc.on(sig, () => {\n // This listener is always one of them; anything more means a command\n // is handling the stop itself.\n if (proc.listenerCount(sig) <= 1) proc.exit(0)\n })\n }\n}\n","#!/usr/bin/env node\nimport { buildProgram } from \"@/program\"\nimport { installCliSignalExit } from \"@/utils/signal-exit\"\n\ninstallCliSignalExit()\n\nasync function main() {\n const program = await buildProgram()\n\n const args = process.argv.slice(2)\n if (args.length === 0) {\n program.outputHelp()\n return\n }\n\n program.parse()\n}\n\nmain()\n"],"mappings":";g2DAYO,IAAMA,EAAmB,CAAC,SAAU,SAAS,EAE7C,SAASC,EAAqBC,EAAqB,QAAe,CACvE,QAAWC,KAAOH,EAChBE,EAAK,GAAGC,EAAK,IAAM,CAGbD,EAAK,cAAcC,CAAG,GAAK,GAAGD,EAAK,KAAK,CAAC,CAC/C,CAAC,CAEL,CClBAE,EAAqB,EAErB,eAAeC,GAAO,CACpB,IAAMC,EAAU,MAAMC,EAAa,EAGnC,GADa,QAAQ,KAAK,MAAM,CAAC,EACxB,SAAW,EAAG,CACrBD,EAAQ,WAAW,EACnB,OAGFA,EAAQ,MAAM,CAChB,CAEAD,EAAK","names":["CLI_EXIT_SIGNALS","installCliSignalExit","proc","sig","installCliSignalExit","main","program","buildProgram"]}
@@ -0,0 +1,2 @@
1
+ import{a,b,c,d,e,f,g}from"./chunk-B556VD7A.js";import"./chunk-SZZSUW42.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-HLCKITQJ.js.map
@@ -1,2 +1,2 @@
1
- import{A as h,B as i,D as j,t as a,u as b,v as c,w as d,x as e,y as f,z as g}from"./chunk-CXZ4YDHJ.js";import"./chunk-QIJLFPWE.js";j();export{a as INTEGRATION_KINDS,e as approvalsConfigSchema,d as callsSchema,c as cameraBotSchema,f as daemonConfigSchema,b as eventSubscriptionSchema,g as expandEnvVars,h as loadDaemonConfig,i as validateWorkspaces};
2
- //# sourceMappingURL=config-A23CU2XT.js.map
1
+ import{A as h,B as i,D as j,t as a,u as b,v as c,w as d,x as e,y as f,z as g}from"./chunk-SZZSUW42.js";import"./chunk-QIJLFPWE.js";j();export{a as INTEGRATION_KINDS,e as approvalsConfigSchema,d as callsSchema,c as cameraBotSchema,f as daemonConfigSchema,b as eventSubscriptionSchema,g as expandEnvVars,h as loadDaemonConfig,i as validateWorkspaces};
2
+ //# sourceMappingURL=config-QLCPWIJN.js.map
@@ -0,0 +1,2 @@
1
+ import{a,b,c,d,e}from"./chunk-SC6Q5M4C.js";import"./chunk-SZZSUW42.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-BCTMKRPT.js.map
@@ -0,0 +1,2 @@
1
+ import{b as a,c as b,d as c,e as d,f as e,g as f}from"./chunk-N3Y3NORE.js";import"./chunk-S2GAEH2F.js";import"./chunk-SZZSUW42.js";import"./chunk-QIJLFPWE.js";export{f as daemonVoiceCheck,b as doctor,e as nodeVersionSupported,a as runDoctorChecks,c as runNotificationChecks,d as runReminderChecks};
2
+ //# sourceMappingURL=doctor-74P5CWVW.js.map
package/dist/index.d.ts CHANGED
@@ -4425,6 +4425,34 @@ declare const daemonConfigSchema: z.ZodObject<{
4425
4425
  accountId?: string | undefined;
4426
4426
  } | undefined;
4427
4427
  }>>;
4428
+ /** A popup on this Mac for new decision cards: sound, a spoken line,
4429
+ * ready-made choices. Held during Focus. macOS only. */
4430
+ popup: z.ZodDefault<z.ZodObject<{
4431
+ enabled: z.ZodDefault<z.ZodBoolean>;
4432
+ /** Speak a short line when it opens. */
4433
+ speak: z.ZodDefault<z.ZodBoolean>;
4434
+ /** A macOS voice name for `say -v`. Unset: the system voice. */
4435
+ voice: z.ZodOptional<z.ZodString>;
4436
+ /** A system sound from /System/Library/Sounds; "" for none. */
4437
+ sound: z.ZodDefault<z.ZodString>;
4438
+ volume: z.ZodDefault<z.ZodNumber>;
4439
+ /** Seconds the popup waits for an answer; then the card stays in the inbox. */
4440
+ timeoutSeconds: z.ZodDefault<z.ZodNumber>;
4441
+ }, "strip", z.ZodTypeAny, {
4442
+ enabled: boolean;
4443
+ sound: string;
4444
+ volume: number;
4445
+ speak: boolean;
4446
+ timeoutSeconds: number;
4447
+ voice?: string | undefined;
4448
+ }, {
4449
+ enabled?: boolean | undefined;
4450
+ voice?: string | undefined;
4451
+ sound?: string | undefined;
4452
+ volume?: number | undefined;
4453
+ speak?: boolean | undefined;
4454
+ timeoutSeconds?: number | undefined;
4455
+ }>>;
4428
4456
  }, "strip", z.ZodTypeAny, {
4429
4457
  digest: {
4430
4458
  enabled: boolean;
@@ -4440,6 +4468,14 @@ declare const daemonConfigSchema: z.ZodObject<{
4440
4468
  maxExpiryDays: number;
4441
4469
  laterHours: number;
4442
4470
  notifyAgent: boolean;
4471
+ popup: {
4472
+ enabled: boolean;
4473
+ sound: string;
4474
+ volume: number;
4475
+ speak: boolean;
4476
+ timeoutSeconds: number;
4477
+ voice?: string | undefined;
4478
+ };
4443
4479
  }, {
4444
4480
  digest?: {
4445
4481
  enabled?: boolean | undefined;
@@ -4455,6 +4491,14 @@ declare const daemonConfigSchema: z.ZodObject<{
4455
4491
  maxExpiryDays?: number | undefined;
4456
4492
  laterHours?: number | undefined;
4457
4493
  notifyAgent?: boolean | undefined;
4494
+ popup?: {
4495
+ enabled?: boolean | undefined;
4496
+ voice?: string | undefined;
4497
+ sound?: string | undefined;
4498
+ volume?: number | undefined;
4499
+ speak?: boolean | undefined;
4500
+ timeoutSeconds?: number | undefined;
4501
+ } | undefined;
4458
4502
  }>>;
4459
4503
  /** How a daemon stop treats runs still in flight. */
4460
4504
  shutdown: z.ZodDefault<z.ZodObject<{
@@ -6681,6 +6725,14 @@ declare const daemonConfigSchema: z.ZodObject<{
6681
6725
  maxExpiryDays: number;
6682
6726
  laterHours: number;
6683
6727
  notifyAgent: boolean;
6728
+ popup: {
6729
+ enabled: boolean;
6730
+ sound: string;
6731
+ volume: number;
6732
+ speak: boolean;
6733
+ timeoutSeconds: number;
6734
+ voice?: string | undefined;
6735
+ };
6684
6736
  };
6685
6737
  shutdown: {
6686
6738
  restart: {
@@ -7393,6 +7445,14 @@ declare const daemonConfigSchema: z.ZodObject<{
7393
7445
  maxExpiryDays?: number | undefined;
7394
7446
  laterHours?: number | undefined;
7395
7447
  notifyAgent?: boolean | undefined;
7448
+ popup?: {
7449
+ enabled?: boolean | undefined;
7450
+ voice?: string | undefined;
7451
+ sound?: string | undefined;
7452
+ volume?: number | undefined;
7453
+ speak?: boolean | undefined;
7454
+ timeoutSeconds?: number | undefined;
7455
+ } | undefined;
7396
7456
  } | undefined;
7397
7457
  shutdown?: {
7398
7458
  restart?: {
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import{a as L}from"./chunk-C245D4BZ.js";import{d as St,e as kt,f as vt,fa as Tt,g as xt,ga as Mt,h as $t,i as Ct,j as Pt,k as bt}from"./chunk-KIXYU2DD.js";import"./chunk-663BLK67.js";import"./chunk-RGTHA2EI.js";import"./chunk-BYJ3A55Y.js";import"./chunk-7XB2CVC3.js";import"./chunk-LQRBGQIR.js";import"./chunk-ZVP6GB4G.js";import"./chunk-Q2FFZX7Y.js";import"./chunk-AQASR6KR.js";import"./chunk-2D3RYIDU.js";import"./chunk-EKJG63EJ.js";import{T as yt,k as lt,l as ct,m as dt,n as mt,o as pt}from"./chunk-PBUJBWOF.js";import"./chunk-2HMI5PJG.js";import"./chunk-WP6KLXTP.js";import"./chunk-N6EWZGIX.js";import"./chunk-DP7RTNDM.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-F2RIMHW5.js";import{a as B,b as M,c as F}from"./chunk-SFQUP3BP.js";import"./chunk-S5JGQKON.js";import"./chunk-2AXFYDWF.js";import"./chunk-76Z4VHDX.js";import"./chunk-W4YR2RO2.js";import"./chunk-AFRHKA7B.js";import{s as ut}from"./chunk-PUU2ESI2.js";import"./chunk-IR2Q63IV.js";import"./chunk-VWTBHLMX.js";import"./chunk-CAVAMWI5.js";import{a as ht}from"./chunk-UJ5JLS6Z.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-6CCJMHBA.js";import"./chunk-MYVHVJWZ.js";import"./chunk-DWADWDMU.js";import"./chunk-23A5K5UW.js";import"./chunk-QD6IICK7.js";import"./chunk-CECHWYJ2.js";import"./chunk-55RM7V4N.js";import{f as gt,g as ft}from"./chunk-NWL5KPBJ.js";import"./chunk-WPNRDEHW.js";import"./chunk-2GIDVZ4H.js";import{j as it,k as rt,l as at}from"./chunk-KHEI4VNM.js";import"./chunk-FX3D7YON.js";import"./chunk-72SZI2UW.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{A as st,B as ot,D as nt,y as tt}from"./chunk-CXZ4YDHJ.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 L}from"./chunk-C245D4BZ.js";import{d as St,e as kt,f as vt,g as xt,ga as Tt,h as $t,ha as Mt,i as Ct,j as Pt,k as bt}from"./chunk-GT6ZDLXU.js";import"./chunk-7GC42WAK.js";import"./chunk-SY7ENNNK.js";import"./chunk-S2GAEH2F.js";import"./chunk-7XB2CVC3.js";import"./chunk-LQRBGQIR.js";import"./chunk-ZVP6GB4G.js";import"./chunk-EAMSULHF.js";import"./chunk-AQASR6KR.js";import"./chunk-2D3RYIDU.js";import"./chunk-EKJG63EJ.js";import{T as yt,k as lt,l as ct,m as dt,n as mt,o as pt}from"./chunk-P27P7GFY.js";import"./chunk-QGTQ4PIL.js";import"./chunk-WP6KLXTP.js";import"./chunk-N6EWZGIX.js";import"./chunk-DP7RTNDM.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-PK6EBDBU.js";import{a as B,b as M,c as F}from"./chunk-SFQUP3BP.js";import"./chunk-R5BXA7TL.js";import"./chunk-A4ACRRRP.js";import"./chunk-2AXFYDWF.js";import"./chunk-76Z4VHDX.js";import"./chunk-W4YR2RO2.js";import"./chunk-AFRHKA7B.js";import{s as ut}from"./chunk-CW42OBFL.js";import"./chunk-SC6Q5M4C.js";import"./chunk-VWTBHLMX.js";import"./chunk-ZPM7SSJM.js";import{a as ht}from"./chunk-IYLQBBON.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-2KOWJNQJ.js";import"./chunk-MYVHVJWZ.js";import"./chunk-DWADWDMU.js";import"./chunk-23A5K5UW.js";import"./chunk-QD6IICK7.js";import"./chunk-CECHWYJ2.js";import"./chunk-MODPTVA6.js";import{f as gt,g as ft}from"./chunk-72P53PGX.js";import"./chunk-WPNRDEHW.js";import"./chunk-2GIDVZ4H.js";import{j as it,k as rt,l as at}from"./chunk-PDSCFOC4.js";import"./chunk-FX3D7YON.js";import"./chunk-72SZI2UW.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{A as st,B as ot,D as nt,y as tt}from"./chunk-SZZSUW42.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).