agentix-cli 0.143.0 → 0.145.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 (156) hide show
  1. package/dist/{App-UTDCBFZI.js → App-MYHUCIKZ.js} +2 -2
  2. package/dist/{ChatApp-7P22XAL2.js → ChatApp-D6QN6HJP.js} +2 -2
  3. package/dist/{absorb-eval-EGO6JJOV.js → absorb-eval-UAGD42BG.js} +2 -2
  4. package/dist/{agent-AI6LNZV2.js → agent-HEGEDDUE.js} +2 -2
  5. package/dist/{board-dashboard-ZKN5Y3GJ.js → board-dashboard-4KIFLAFO.js} +4 -4
  6. package/dist/{chunk-5BXAKMYK.js → chunk-42BEORFZ.js} +2 -2
  7. package/dist/chunk-4NKPVTVP.js +62 -0
  8. package/dist/chunk-4NKPVTVP.js.map +1 -0
  9. package/dist/{chunk-YYPTXXCJ.js → chunk-5E37FADJ.js} +2 -2
  10. package/dist/{chunk-QSKG754X.js → chunk-5TTHN7DP.js} +12 -8
  11. package/dist/chunk-5TTHN7DP.js.map +1 -0
  12. package/dist/{chunk-XWHD2Z3Z.js → chunk-BPOMIEEE.js} +2 -2
  13. package/dist/chunk-DG2DC43E.js +11 -0
  14. package/dist/chunk-DG2DC43E.js.map +1 -0
  15. package/dist/{chunk-AJUWIBLV.js → chunk-EV76NT3E.js} +2 -2
  16. package/dist/{chunk-O2CYERSX.js → chunk-GMVWDQFF.js} +2 -2
  17. package/dist/{chunk-GB4YT5IG.js → chunk-HCSIM2QW.js} +294 -287
  18. package/dist/chunk-HCSIM2QW.js.map +1 -0
  19. package/dist/{chunk-6CTQPGBR.js → chunk-HP2NWDCS.js} +2 -2
  20. package/dist/{chunk-IABJLTZN.js → chunk-HSRNH4NR.js} +2 -2
  21. package/dist/{chunk-PYI7ZAU3.js → chunk-JTDQO4LI.js} +2 -2
  22. package/dist/{chunk-RB5W3FVO.js → chunk-KAGLCJA3.js} +2 -2
  23. package/dist/{chunk-NYWIN4BW.js → chunk-LJ62ABOZ.js} +2 -2
  24. package/dist/{chunk-YXFTUOZR.js → chunk-LLJZMS23.js} +2 -2
  25. package/dist/{chunk-UNIXYV3U.js → chunk-MMBFAVBR.js} +2 -2
  26. package/dist/{chunk-7H6HDN3K.js → chunk-OFJKTKRM.js} +2 -2
  27. package/dist/{chunk-THWDSPX4.js → chunk-P42M6CYF.js} +2 -2
  28. package/dist/{chunk-N2HLL25P.js → chunk-QXPMWP4R.js} +2 -2
  29. package/dist/{chunk-WY5ZOEOE.js → chunk-SANYTBHX.js} +2 -2
  30. package/dist/{chunk-HPQ3AAG3.js → chunk-SH5TNMS5.js} +2 -2
  31. package/dist/chunk-TJZGAKIB.js +4 -0
  32. package/dist/chunk-TJZGAKIB.js.map +1 -0
  33. package/dist/{chunk-OMO7UTWW.js → chunk-TM3I6C4V.js} +2 -2
  34. package/dist/{chunk-L4RCA3OC.js → chunk-VDJZ2Q3M.js} +2 -2
  35. package/dist/{chunk-QVPBSV5Z.js → chunk-VMMCT27Z.js} +2 -2
  36. package/dist/{chunk-ERG5OUKH.js → chunk-VTVEJ3RA.js} +2 -2
  37. package/dist/{chunk-YVNGPYXN.js → chunk-VXBL2DET.js} +58 -55
  38. package/dist/chunk-VXBL2DET.js.map +1 -0
  39. package/dist/{chunk-Y4CYQV7G.js → chunk-VY7TBMJU.js} +2 -2
  40. package/dist/chunk-VY7TBMJU.js.map +1 -0
  41. package/dist/{chunk-SHEUCITK.js → chunk-WBG6NA7R.js} +2 -2
  42. package/dist/{chunk-SHEUCITK.js.map → chunk-WBG6NA7R.js.map} +1 -1
  43. package/dist/{chunk-MFUN3ZS3.js → chunk-WUBSX6S5.js} +2 -2
  44. package/dist/{chunk-3WBOWXAN.js → chunk-YEFEUSB2.js} +2 -2
  45. package/dist/{chunk-SDSSRNSU.js → chunk-YUY35PY7.js} +3 -3
  46. package/dist/{chunk-DKLVB5L6.js → chunk-YWDXRGVC.js} +6 -6
  47. package/dist/chunk-YWDXRGVC.js.map +1 -0
  48. package/dist/cli.js +1 -1
  49. package/dist/{client-E66ELJK7.js → client-ZU5AWBXQ.js} +2 -2
  50. package/dist/config-Q4MNOHRI.js +2 -0
  51. package/dist/{config-mutate-QBDKJNHA.js → config-mutate-DVARJ4KM.js} +2 -2
  52. package/dist/config-mutator-5NYGSUJD.js +2 -0
  53. package/dist/{contributions-L5XZJ3DP.js → contributions-HKWDGIQV.js} +2 -2
  54. package/dist/{doctor-3ZUFSE6R.js → doctor-RTVGZP3X.js} +2 -2
  55. package/dist/{failure-candidates-XZSZP4HT.js → failure-candidates-NQX2JMMS.js} +2 -2
  56. package/dist/{follow-up-tool-6OCQUSC3.js → follow-up-tool-2T4SIFY2.js} +2 -2
  57. package/dist/{grants-CEUGZBQ4.js → grants-O7SJ2J4B.js} +2 -2
  58. package/dist/{hub-MOQRSVCQ.js → hub-3LDKRLTH.js} +2 -2
  59. package/dist/index.d.ts +295 -76
  60. package/dist/index.js +1 -1
  61. package/dist/{program-AR6F763U.js → program-MAM4NX5P.js} +289 -254
  62. package/dist/program-MAM4NX5P.js.map +1 -0
  63. package/dist/{promote-ZGJEPCBE.js → promote-YOV5ELNF.js} +2 -2
  64. package/dist/{query-JLTHESIZ.js → query-LTKK3M2Y.js} +2 -2
  65. package/dist/{query-settings-GMEL3EKR.js → query-settings-ACXSGMDU.js} +2 -2
  66. package/dist/{registry-MFD3XJBR.js → registry-NIAPKDQF.js} +2 -2
  67. package/dist/{request-planner-4ORFYSAT.js → request-planner-433C7M3L.js} +2 -2
  68. package/dist/{review-candidates-77NDFTGM.js → review-candidates-SI3QBYNH.js} +2 -2
  69. package/dist/{routing-3FL3KYPJ.js → routing-CXT77HBF.js} +2 -2
  70. package/dist/schedule-tool-3R4ISM5R.js +2 -0
  71. package/dist/{scheduler-QLL7ZHYW.js → scheduler-SFHWPWCA.js} +2 -2
  72. package/dist/{seat-RBKONP63.js → seat-CJVTUIM2.js} +2 -2
  73. package/dist/{select-MOUDR6PQ.js → select-JHGDG4H2.js} +2 -2
  74. package/dist/{set-enabled-JKYF3QIA.js → set-enabled-NOJGCJAL.js} +2 -2
  75. package/dist/{tool-Y3ZTSZGE.js → tool-ERK543LL.js} +3 -3
  76. package/dist/{tool-Y3ZTSZGE.js.map → tool-ERK543LL.js.map} +1 -1
  77. package/dist/tool-YOSMTSJM.js +6 -0
  78. package/dist/tool-YOSMTSJM.js.map +1 -0
  79. package/dist/traces-GVEQZX24.js +2 -0
  80. package/dist/{wiki-3FSSLQAE.js → wiki-2LLXQUEP.js} +2 -2
  81. package/dist/wiki-enrich-6C2O2MNV.js +2 -0
  82. package/dist/wiki-enrich-6C2O2MNV.js.map +1 -0
  83. package/dist/workflow-pilot-HCPSMGIC.js +2 -0
  84. package/dist/workflow-pilot-HCPSMGIC.js.map +1 -0
  85. package/package.json +1 -1
  86. package/dist/chunk-3W2BHUGM.js +0 -11
  87. package/dist/chunk-3W2BHUGM.js.map +0 -1
  88. package/dist/chunk-AKWBDCMU.js +0 -4
  89. package/dist/chunk-AKWBDCMU.js.map +0 -1
  90. package/dist/chunk-DKLVB5L6.js.map +0 -1
  91. package/dist/chunk-GB4YT5IG.js.map +0 -1
  92. package/dist/chunk-K22XMF6M.js +0 -62
  93. package/dist/chunk-K22XMF6M.js.map +0 -1
  94. package/dist/chunk-QSKG754X.js.map +0 -1
  95. package/dist/chunk-Y4CYQV7G.js.map +0 -1
  96. package/dist/chunk-YVNGPYXN.js.map +0 -1
  97. package/dist/config-3C3Z7VKG.js +0 -2
  98. package/dist/config-mutator-ZI3SQIUN.js +0 -2
  99. package/dist/program-AR6F763U.js.map +0 -1
  100. package/dist/schedule-tool-5KJMXBRZ.js +0 -2
  101. package/dist/tool-C4JNMTEF.js +0 -6
  102. package/dist/tool-C4JNMTEF.js.map +0 -1
  103. package/dist/wiki-enrich-HQWXZRID.js +0 -2
  104. /package/dist/{App-UTDCBFZI.js.map → App-MYHUCIKZ.js.map} +0 -0
  105. /package/dist/{ChatApp-7P22XAL2.js.map → ChatApp-D6QN6HJP.js.map} +0 -0
  106. /package/dist/{absorb-eval-EGO6JJOV.js.map → absorb-eval-UAGD42BG.js.map} +0 -0
  107. /package/dist/{agent-AI6LNZV2.js.map → agent-HEGEDDUE.js.map} +0 -0
  108. /package/dist/{board-dashboard-ZKN5Y3GJ.js.map → board-dashboard-4KIFLAFO.js.map} +0 -0
  109. /package/dist/{chunk-5BXAKMYK.js.map → chunk-42BEORFZ.js.map} +0 -0
  110. /package/dist/{chunk-YYPTXXCJ.js.map → chunk-5E37FADJ.js.map} +0 -0
  111. /package/dist/{chunk-XWHD2Z3Z.js.map → chunk-BPOMIEEE.js.map} +0 -0
  112. /package/dist/{chunk-AJUWIBLV.js.map → chunk-EV76NT3E.js.map} +0 -0
  113. /package/dist/{chunk-O2CYERSX.js.map → chunk-GMVWDQFF.js.map} +0 -0
  114. /package/dist/{chunk-6CTQPGBR.js.map → chunk-HP2NWDCS.js.map} +0 -0
  115. /package/dist/{chunk-IABJLTZN.js.map → chunk-HSRNH4NR.js.map} +0 -0
  116. /package/dist/{chunk-PYI7ZAU3.js.map → chunk-JTDQO4LI.js.map} +0 -0
  117. /package/dist/{chunk-RB5W3FVO.js.map → chunk-KAGLCJA3.js.map} +0 -0
  118. /package/dist/{chunk-NYWIN4BW.js.map → chunk-LJ62ABOZ.js.map} +0 -0
  119. /package/dist/{chunk-YXFTUOZR.js.map → chunk-LLJZMS23.js.map} +0 -0
  120. /package/dist/{chunk-UNIXYV3U.js.map → chunk-MMBFAVBR.js.map} +0 -0
  121. /package/dist/{chunk-7H6HDN3K.js.map → chunk-OFJKTKRM.js.map} +0 -0
  122. /package/dist/{chunk-THWDSPX4.js.map → chunk-P42M6CYF.js.map} +0 -0
  123. /package/dist/{chunk-N2HLL25P.js.map → chunk-QXPMWP4R.js.map} +0 -0
  124. /package/dist/{chunk-WY5ZOEOE.js.map → chunk-SANYTBHX.js.map} +0 -0
  125. /package/dist/{chunk-HPQ3AAG3.js.map → chunk-SH5TNMS5.js.map} +0 -0
  126. /package/dist/{chunk-OMO7UTWW.js.map → chunk-TM3I6C4V.js.map} +0 -0
  127. /package/dist/{chunk-L4RCA3OC.js.map → chunk-VDJZ2Q3M.js.map} +0 -0
  128. /package/dist/{chunk-QVPBSV5Z.js.map → chunk-VMMCT27Z.js.map} +0 -0
  129. /package/dist/{chunk-ERG5OUKH.js.map → chunk-VTVEJ3RA.js.map} +0 -0
  130. /package/dist/{chunk-MFUN3ZS3.js.map → chunk-WUBSX6S5.js.map} +0 -0
  131. /package/dist/{chunk-3WBOWXAN.js.map → chunk-YEFEUSB2.js.map} +0 -0
  132. /package/dist/{chunk-SDSSRNSU.js.map → chunk-YUY35PY7.js.map} +0 -0
  133. /package/dist/{client-E66ELJK7.js.map → client-ZU5AWBXQ.js.map} +0 -0
  134. /package/dist/{config-3C3Z7VKG.js.map → config-Q4MNOHRI.js.map} +0 -0
  135. /package/dist/{config-mutate-QBDKJNHA.js.map → config-mutate-DVARJ4KM.js.map} +0 -0
  136. /package/dist/{config-mutator-ZI3SQIUN.js.map → config-mutator-5NYGSUJD.js.map} +0 -0
  137. /package/dist/{contributions-L5XZJ3DP.js.map → contributions-HKWDGIQV.js.map} +0 -0
  138. /package/dist/{doctor-3ZUFSE6R.js.map → doctor-RTVGZP3X.js.map} +0 -0
  139. /package/dist/{failure-candidates-XZSZP4HT.js.map → failure-candidates-NQX2JMMS.js.map} +0 -0
  140. /package/dist/{follow-up-tool-6OCQUSC3.js.map → follow-up-tool-2T4SIFY2.js.map} +0 -0
  141. /package/dist/{grants-CEUGZBQ4.js.map → grants-O7SJ2J4B.js.map} +0 -0
  142. /package/dist/{hub-MOQRSVCQ.js.map → hub-3LDKRLTH.js.map} +0 -0
  143. /package/dist/{promote-ZGJEPCBE.js.map → promote-YOV5ELNF.js.map} +0 -0
  144. /package/dist/{query-JLTHESIZ.js.map → query-LTKK3M2Y.js.map} +0 -0
  145. /package/dist/{query-settings-GMEL3EKR.js.map → query-settings-ACXSGMDU.js.map} +0 -0
  146. /package/dist/{registry-MFD3XJBR.js.map → registry-NIAPKDQF.js.map} +0 -0
  147. /package/dist/{request-planner-4ORFYSAT.js.map → request-planner-433C7M3L.js.map} +0 -0
  148. /package/dist/{review-candidates-77NDFTGM.js.map → review-candidates-SI3QBYNH.js.map} +0 -0
  149. /package/dist/{routing-3FL3KYPJ.js.map → routing-CXT77HBF.js.map} +0 -0
  150. /package/dist/{schedule-tool-5KJMXBRZ.js.map → schedule-tool-3R4ISM5R.js.map} +0 -0
  151. /package/dist/{scheduler-QLL7ZHYW.js.map → scheduler-SFHWPWCA.js.map} +0 -0
  152. /package/dist/{seat-RBKONP63.js.map → seat-CJVTUIM2.js.map} +0 -0
  153. /package/dist/{select-MOUDR6PQ.js.map → select-JHGDG4H2.js.map} +0 -0
  154. /package/dist/{set-enabled-JKYF3QIA.js.map → set-enabled-NOJGCJAL.js.map} +0 -0
  155. /package/dist/{wiki-3FSSLQAE.js.map → traces-GVEQZX24.js.map} +0 -0
  156. /package/dist/{wiki-enrich-HQWXZRID.js.map → wiki-2LLXQUEP.js.map} +0 -0
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 e=o(process.versions.node);e&&(console.error(e),process.exit(1));var{buildProgram:s}=await import("./program-AR6F763U.js"),{installCliSignalExit:r}=await import("./signal-exit-WL7G3EEZ.js"),{applyConnectAttemptTimeout:i,configPathFromArgv:a,readConnectAttemptTimeout:n}=await import("./net-family-X2P3OVDP.js");r();i(n(process.cwd(),a(process.argv.slice(2))));var t=await s();process.argv.slice(2).length===0?t.outputHelp():t.parse();
2
+ import{b as o}from"./chunk-JXF54PT7.js";import"./chunk-QIJLFPWE.js";var e=o(process.versions.node);e&&(console.error(e),process.exit(1));var{buildProgram:s}=await import("./program-MAM4NX5P.js"),{installCliSignalExit:r}=await import("./signal-exit-WL7G3EEZ.js"),{applyConnectAttemptTimeout:i,configPathFromArgv:a,readConnectAttemptTimeout:n}=await import("./net-family-X2P3OVDP.js");r();i(n(process.cwd(),a(process.argv.slice(2))));var t=await s();process.argv.slice(2).length===0?t.outputHelp():t.parse();
3
3
  //# sourceMappingURL=cli.js.map
@@ -1,2 +1,2 @@
1
- import{a,b,c,d,e,f,g}from"./chunk-7H6HDN3K.js";import"./chunk-K22XMF6M.js";import"./chunk-BRK6M6LA.js";import"./chunk-UIBUZ2N3.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-E66ELJK7.js.map
1
+ import{a,b,c,d,e,f,g}from"./chunk-OFJKTKRM.js";import"./chunk-4NKPVTVP.js";import"./chunk-BRK6M6LA.js";import"./chunk-UIBUZ2N3.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-ZU5AWBXQ.js.map
@@ -0,0 +1,2 @@
1
+ import{Aa as g,Ba as h,Ca as i,Da as j,Ea as k,Fa as l,Ga as m,Ha as n,Ia as o,Ja as p,Ka as q,La as r,Ma as s,Na as t,Oa as u,Pa as v,Qa as w,Ra as x,Ta as y,ua as a,va as b,wa as c,xa as d,ya as e,za as f}from"./chunk-4NKPVTVP.js";import"./chunk-BRK6M6LA.js";import"./chunk-UIBUZ2N3.js";import"./chunk-2QNT5JDS.js";import"./chunk-QIJLFPWE.js";y();export{a as INTEGRATION_KINDS,t as WIKI_CONTRIBUTE_JOB,u as WIKI_CONTRIBUTE_MERGE_JOB,w as WIKI_SUMMARIZE_JOB,o as approvalsConfigSchema,e as callsSchema,c as cameraBotSchema,p as daemonConfigSchema,b as eventSubscriptionSchema,q as expandEnvVars,d as isCronExpression,r as loadDaemonConfig,l as membersConfigSchema,g as mergePolicyConfigSchema,k as peopleConfigSchema,j as personSchema,n as qualityReportConfigSchema,m as requestStatusConfigSchema,i as requestsConfigSchema,f as reviewGateConfigSchema,s as validateWorkspaces,h as watchersConfigSchema,v as withContributionJobs,x as withSummariesJob};
2
+ //# sourceMappingURL=config-Q4MNOHRI.js.map
@@ -1,2 +1,2 @@
1
- import{a,b}from"./chunk-YYPTXXCJ.js";import"./chunk-K22XMF6M.js";import"./chunk-BRK6M6LA.js";import"./chunk-UIBUZ2N3.js";import"./chunk-2QNT5JDS.js";import"./chunk-QIJLFPWE.js";export{a as mutateAgentxConfig,b as writeAgentxConfig};
2
- //# sourceMappingURL=config-mutate-QBDKJNHA.js.map
1
+ import{a,b}from"./chunk-5E37FADJ.js";import"./chunk-4NKPVTVP.js";import"./chunk-BRK6M6LA.js";import"./chunk-UIBUZ2N3.js";import"./chunk-2QNT5JDS.js";import"./chunk-QIJLFPWE.js";export{a as mutateAgentxConfig,b as writeAgentxConfig};
2
+ //# sourceMappingURL=config-mutate-DVARJ4KM.js.map
@@ -0,0 +1,2 @@
1
+ import{a,b,c,d,e}from"./chunk-VMMCT27Z.js";import"./chunk-4NKPVTVP.js";import"./chunk-BRK6M6LA.js";import"./chunk-UIBUZ2N3.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-5NYGSUJD.js.map
@@ -1,4 +1,4 @@
1
- import{a as ee}from"./chunk-3WBOWXAN.js";import"./chunk-OMO7UTWW.js";import{f as Q,k as V}from"./chunk-QSKG754X.js";import{b as O}from"./chunk-PE5V2LI7.js";import"./chunk-GQ76J72O.js";import"./chunk-ILEC3IAV.js";import"./chunk-OWNQ2FD4.js";import{b as X}from"./chunk-KEXBEUSU.js";import"./chunk-SDSSRNSU.js";import"./chunk-SKSYII3K.js";import"./chunk-XWHD2Z3Z.js";import"./chunk-WPNRDEHW.js";import"./chunk-MWNCS57L.js";import"./chunk-4LWFJ4MZ.js";import"./chunk-BIJHMWXK.js";import"./chunk-HPQ3AAG3.js";import"./chunk-72SZI2UW.js";import"./chunk-FCPTN6NF.js";import"./chunk-MCI3DIWW.js";import"./chunk-6TURWSMN.js";import"./chunk-QD6IICK7.js";import{b as N,c as H}from"./chunk-QOYAX2FT.js";import"./chunk-2PJKGZWP.js";import"./chunk-7I7IEX4S.js";import"./chunk-K22XMF6M.js";import"./chunk-BRK6M6LA.js";import"./chunk-UIBUZ2N3.js";import"./chunk-2QNT5JDS.js";import"./chunk-RGDKHYY2.js";import"./chunk-QIJLFPWE.js";import{createHash as le}from"crypto";import{existsSync as z,mkdirSync as ne,readdirSync as re,readFileSync as ge,renameSync as se,writeFileSync as pe}from"fs";import{resolve as w}from"path";var _={maxPatches:30,maxCostUsd:.5,maxItems:60},he=12,fe=2e3,me=1500,M=8,U=300,be=12,B="## Checked facts";function S(n){return w(n,"_contributions")}function E(n,r){if(!z(n))return r;try{return JSON.parse(ge(n,"utf-8"))}catch(t){throw new Error(`${n} is not valid JSON: ${t.message}`)}}function L(n,r){ne(w(n,".."),{recursive:!0});let t=`${n}.${process.pid}.tmp`;pe(t,`${JSON.stringify(r,null,2)}
1
+ import{a as ee}from"./chunk-YEFEUSB2.js";import"./chunk-TM3I6C4V.js";import{f as Q,k as V}from"./chunk-5TTHN7DP.js";import{b as O}from"./chunk-PE5V2LI7.js";import"./chunk-GQ76J72O.js";import"./chunk-ILEC3IAV.js";import"./chunk-OWNQ2FD4.js";import{b as X}from"./chunk-KEXBEUSU.js";import"./chunk-YUY35PY7.js";import"./chunk-SKSYII3K.js";import"./chunk-BPOMIEEE.js";import"./chunk-WPNRDEHW.js";import"./chunk-MWNCS57L.js";import"./chunk-4LWFJ4MZ.js";import"./chunk-BIJHMWXK.js";import"./chunk-SH5TNMS5.js";import"./chunk-72SZI2UW.js";import"./chunk-FCPTN6NF.js";import"./chunk-MCI3DIWW.js";import"./chunk-6TURWSMN.js";import"./chunk-QD6IICK7.js";import{b as N,c as H}from"./chunk-QOYAX2FT.js";import"./chunk-2PJKGZWP.js";import"./chunk-7I7IEX4S.js";import"./chunk-4NKPVTVP.js";import"./chunk-BRK6M6LA.js";import"./chunk-UIBUZ2N3.js";import"./chunk-2QNT5JDS.js";import"./chunk-RGDKHYY2.js";import"./chunk-QIJLFPWE.js";import{createHash as le}from"crypto";import{existsSync as z,mkdirSync as ne,readdirSync as re,readFileSync as ge,renameSync as se,writeFileSync as pe}from"fs";import{resolve as w}from"path";var _={maxPatches:30,maxCostUsd:.5,maxItems:60},he=12,fe=2e3,me=1500,M=8,U=300,be=12,B="## Checked facts";function S(n){return w(n,"_contributions")}function E(n,r){if(!z(n))return r;try{return JSON.parse(ge(n,"utf-8"))}catch(t){throw new Error(`${n} is not valid JSON: ${t.message}`)}}function L(n,r){ne(w(n,".."),{recursive:!0});let t=`${n}.${process.pid}.tmp`;pe(t,`${JSON.stringify(r,null,2)}
2
2
  `),se(t,n)}function ie(n){return{agents:E(w(S(n),"state.json"),{agents:{}}).agents??{}}}function ye(n){let r=w(S(n),"pending");return z(r)?re(r).filter(t=>t.endsWith(".json")).sort().map(t=>E(w(r,t),null)).filter(t=>!!t):[]}function G(n){return w(S(n),"held.json")}function K(n,r={}){let t=E(G(n),[]);return r.all?t:t.filter(a=>a.status==="held")}function _e(n){let r=w(S(n),"reports");if(!z(r))return null;let t=re(r).filter(a=>a.endsWith(".json")).sort().pop();return t?E(w(r,t),null):null}function ke(n,r,t,a={}){let o=ie(r).agents[t],c=a.now??Date.now(),e=a.since??o?.lastRunAt??new Date(c-864e5).toISOString(),d=e.slice(0,10),u=new Set(o?.processed??[]),s=[];for(let g of n.getAgentEntries(t))g.date<d||u.has(g.id)||s.push({id:g.id,at:g.date,kind:"chat",title:[g.source,g.sourceContext].filter(Boolean).join(" \xB7 "),text:g.content});if(a.db){let g=Date.parse(e);for(let l of V(a.db,{agentId:t,since:Number.isFinite(g)?g:void 0,limit:500})){if(l.status==="in-flight"||u.has(l.taskId))continue;let k=(Q(a.db,l.taskId)?.steps??[]).filter(b=>b.name==="tool_use"||b.action).slice(0,be).map(b=>`- ${b.action??b.name}${b.inputSummary?` ${x(b.inputSummary,160)}`:""}${b.outputSummary?` \u2192 ${x(b.outputSummary,240)}`:""}${b.error?` \u2717 ${x(b.error,120)}`:""}`),y=[`Request: ${x(l.originalMessage??l.messagePreview??"",600)}`,k.length?`Tool calls:
3
3
  ${k.join(`
4
4
  `)}`:"",l.finalResponse?`Reply: ${x(l.finalResponse,800)}`:""].filter(Boolean).join(`
@@ -54,4 +54,4 @@ _Sources: ${t.sources.join("; ")}._`,a);return n.writeArticle(r,{title:t.title,.
54
54
  `).replace(/\n{3,}/g,`
55
55
 
56
56
  `).trim(),superseded:d}}function Ce(n){let r=n.previous?` (previously: ${n.previous})`:"";return`- **${n.attribute}:** ${n.value} \u2014 ${n.source}; checked ${n.checkedAt.slice(0,10)} by ${n.by}${r}`}function Re(n){let r=n.match(/^- \*\*.+?:\*\* (.*?) — .*?; checked (\S+) by \S+(?: \(previously: (.*)\))?$/);return r?{value:r[1],checkedAt:r[2],...r[3]?{previous:r[3]}:{}}:void 0}function J(n,r){return`contribution:${n}@${r.slice(0,10)}`}var Te={person:"people",project:"projects",place:"places",concept:"concepts",event:"events",decision:"decisions",pattern:"patterns"};function de(n,r,t){let a=r.toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,"").slice(0,60)||"page",o=t?Te[t]:"contributions",c=`${o}/${a}.md`;for(let e=2;n.readArticle(c);e++)c=`${o}/${a}-${e}.md`;return c}export{_ as DEFAULT_CONTRIBUTION_LIMITS,B as FACTS_HEADING,ue as applyFactLines,De as approveHeld,xe as buildContributionPrompt,S as contributionsDir,_e as latestReport,K as listHeld,ye as listPendingBatches,Be as mergeContributions,W as pageKey,Ae as parseContributionPatches,ke as pendingWork,Se as possibleDuplicate,Fe as rejectHeld,ce as replaceOnce,Me as runContribution};
57
- //# sourceMappingURL=contributions-L5XZJ3DP.js.map
57
+ //# sourceMappingURL=contributions-HKWDGIQV.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-5BXAKMYK.js";import"./chunk-S2GAEH2F.js";import"./chunk-JXF54PT7.js";import"./chunk-K22XMF6M.js";import"./chunk-BRK6M6LA.js";import"./chunk-UIBUZ2N3.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-3ZUFSE6R.js.map
1
+ import{b as a,c as b,d as c,e as d,f as e}from"./chunk-42BEORFZ.js";import"./chunk-S2GAEH2F.js";import"./chunk-JXF54PT7.js";import"./chunk-4NKPVTVP.js";import"./chunk-BRK6M6LA.js";import"./chunk-UIBUZ2N3.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-RTVGZP3X.js.map
@@ -1,2 +1,2 @@
1
- import{a,b,c,d,e,f,g,h,i,j}from"./chunk-YXFTUOZR.js";import"./chunk-QSKG754X.js";import"./chunk-FCPTN6NF.js";import"./chunk-QIJLFPWE.js";export{b as DEFAULT_MIN_SESSIONS,a as FAILURE_STAMP_PREFIX,c as MAX_FAILURE_EXAMPLES,d as errorClass,i as failingTool,e as failureSignature,f as failureStamp,j as failuresToCandidates,h as loadFailedTraces,g as sessionOf};
2
- //# sourceMappingURL=failure-candidates-XZSZP4HT.js.map
1
+ import{a,b,c,d,e,f,g,h,i,j}from"./chunk-LLJZMS23.js";import"./chunk-5TTHN7DP.js";import"./chunk-FCPTN6NF.js";import"./chunk-QIJLFPWE.js";export{b as DEFAULT_MIN_SESSIONS,a as FAILURE_STAMP_PREFIX,c as MAX_FAILURE_EXAMPLES,d as errorClass,i as failingTool,e as failureSignature,f as failureStamp,j as failuresToCandidates,h as loadFailedTraces,g as sessionOf};
2
+ //# sourceMappingURL=failure-candidates-NQX2JMMS.js.map
@@ -1,7 +1,7 @@
1
- import{b as h}from"./chunk-AJUWIBLV.js";import"./chunk-RKPAVWXF.js";import{b as I}from"./chunk-3W2BHUGM.js";import"./chunk-SHEUCITK.js";import"./chunk-WY5ZOEOE.js";import"./chunk-NYWIN4BW.js";import"./chunk-QVPBSV5Z.js";import"./chunk-3UOTLMXD.js";import"./chunk-FCPTN6NF.js";import"./chunk-7I7IEX4S.js";import"./chunk-K22XMF6M.js";import"./chunk-BRK6M6LA.js";import"./chunk-UIBUZ2N3.js";import"./chunk-2QNT5JDS.js";import"./chunk-QIJLFPWE.js";var p=t=>typeof t=="string"?t.trim():"";function $(t){return[`Run ${t.runId} "${t.title}" [${t.status}] on step ${t.step}: waiting on ${t.waitingOn}.`,t.tags?.length?`Tags: ${t.tags.join(", ")}`:"",...(t.steps??[]).slice(-8).map(s=>`- ${String(s.at).slice(0,16).replace("T"," ")} ${s.step} ${s.status}${s.note?`: ${s.note}`:""}`)].filter(Boolean).join(`
1
+ import{b as h}from"./chunk-EV76NT3E.js";import"./chunk-RKPAVWXF.js";import{b as I}from"./chunk-DG2DC43E.js";import"./chunk-WBG6NA7R.js";import"./chunk-SANYTBHX.js";import"./chunk-LJ62ABOZ.js";import"./chunk-VMMCT27Z.js";import"./chunk-3UOTLMXD.js";import"./chunk-FCPTN6NF.js";import"./chunk-7I7IEX4S.js";import"./chunk-4NKPVTVP.js";import"./chunk-BRK6M6LA.js";import"./chunk-UIBUZ2N3.js";import"./chunk-2QNT5JDS.js";import"./chunk-QIJLFPWE.js";var p=t=>typeof t=="string"?t.trim():"";function $(t){return[`Run ${t.runId} "${t.title}" [${t.status}] on step ${t.step}: waiting on ${t.waitingOn}.`,t.tags?.length?`Tags: ${t.tags.join(", ")}`:"",...(t.steps??[]).slice(-8).map(s=>`- ${String(s.at).slice(0,16).replace("T"," ")} ${s.step} ${s.status}${s.note?`: ${s.note}`:""}`)].filter(Boolean).join(`
2
2
  `)}async function T(t,c){let s=c.fetch??fetch,m=c.daemonUrl.replace(/\/$/,""),r=(p(t.action)||"list").toLowerCase(),f=c.env??process.env,w=async i=>{let l=await s(`${m}${i}`,{signal:AbortSignal.timeout(1e4)}),n=await l.json().catch(()=>({}));return{ok:l.ok,status:l.status,data:n}};try{if(r==="list"){let e=await w("/follow-up");if(!e.ok)return`Error: ${e.data?.error||`HTTP ${e.status}`}`;let o=e.data.groups??[];return o.length?o.map(d=>[`${d.tag}:`,...d.rows.map(a=>`- ${a.runId} "${a.title}" on ${a.step}: waiting on ${a.waitingOn} (since ${String(a.since).slice(0,16).replace("T"," ")} UTC)`)].join(`
3
3
  `)).join(`
4
4
  `):"No follow-up workflows are running."}if(r==="match"){let e=p(t.request)||p(t.title);if(!e)return"Error: match needs `request`: the owner's request in their words.";let o=h(t,f),d=await w(`/follow-up/match?q=${encodeURIComponent(e)}${o?`&agentId=${encodeURIComponent(o.agentId)}`:""}`);if(!d.ok)return`Error: ${d.data?.error||`HTTP ${d.status}`}`;let a=d.data.matches??[];return a.length?["Saved workflows, best fit first (confidence 0-1):",...a.map(u=>`- ${u.workflowId} "${u.title}" (${u.confidence}${u.autoStart?", starts without asking":""}): ${u.steps.map(k=>k.id).join(" \u2192 ")}`),'Start one with {action:"start", workflowId:"<id>", title:"\u2026", tags:["client:<name>"]}. Run its steps through the workflow, not by hand.'].join(`
5
5
  `):"No saved workflow fits. If the request has several steps, build one: start with title and steps."}if(r==="status"){let e=p(t.runId);if(!e)return"Error: status needs runId.";let o=await w(`/follow-up/${encodeURIComponent(e)}`);return o.ok?$(o.data.run):`Error: ${o.data?.error||`HTTP ${o.status}`}`}let i=h(t,f);if(!i)return"Error: couldn't tell which agent you are. Pass callerAgentId.";let l=await s(`${m}/follow-up`,{method:"POST",headers:{"Content-Type":"application/json",...I(f)},body:JSON.stringify({action:r,agentId:i.agentId,workflowId:t.workflowId,title:t.title,description:t.description,tags:t.tags,inputs:t.inputs,steps:t.steps,edges:t.edges,approval:t.approval,autoStart:t.autoStart,requestId:t.requestId,runId:t.runId,step:t.step,evidence:t.evidence,note:t.note,reason:t.reason,fromRun:t.fromRun,status:t.status}),signal:AbortSignal.timeout(2e4)}),n=await l.json().catch(()=>({}));if(!l.ok)return`Error: ${n?.error||`HTTP ${l.status}`}`;if(r==="start"){let e=n.run;return[`Started run ${e.runId} "${e.title}"${n.built?" (built from the steps you gave; propose it with fromRun to keep it)":""}.`,n.awaitingApproval?"It waits for the owner's approval before the first step.":`It is on step ${e.step}: ${e.waitingOn}.`,"AgentX follows it from here: it starts each step, reminds whoever is slow, and tells the owner when it ends. Do not run its steps by hand.",...n.warning?[`Note: ${n.warning}`]:[]].join(" ")}return r==="plan"?[`Plan recorded on run ${n.run?.runId??t.runId}:`,...(n.plan??[]).map(e=>`- ${e.id} ${e.title}`),'Report each step with {action:"step", runId, step:"<id>", status:"started"|"done"|"failed"}.'].join(`
6
6
  `):r==="step"?`Step recorded. ${n.run?$(n.run):""}`.trim():r==="done"?`Step recorded as done. ${n.run?$(n.run):""}`.trim():r==="blocked"?"The step is marked blocked and the owner is told. Nothing more happens on it until it is sorted.":`Saved ${n.workflowId} switched off, and asked the owner (card ${n.cardId}) whether to keep it as a reusable workflow.`}catch(i){return`Error: couldn't reach the daemon (${i?.message??i}).`}}export{T as runWorkflowTool};
7
- //# sourceMappingURL=follow-up-tool-6OCQUSC3.js.map
7
+ //# sourceMappingURL=follow-up-tool-2T4SIFY2.js.map
@@ -1,2 +1,2 @@
1
- import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u}from"./chunk-UNIXYV3U.js";import"./chunk-AKWBDCMU.js";import"./chunk-Y4CYQV7G.js";import"./chunk-2QNT5JDS.js";import"./chunk-QIJLFPWE.js";export{c as DEFAULT_GRANT_DAYS,a as GUEST_SCOPE_PREFIX,b as JOIN_CARD_BY,h as JOIN_FAILED,d as MAX_GRANT_DAYS,j as NO_GRANT,l as PAUSED,k as WAITING_HOST,s as endGrant,o as grantBrief,u as grantForGuest,e as grantIdOf,n as guestAccess,p as guestTask,g as inviteGuest,i as joinGuest,f as newGrantId,q as pauseGrant,r as resumeGrant,m as settleGrant,t as updateGrant};
2
- //# sourceMappingURL=grants-CEUGZBQ4.js.map
1
+ import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u}from"./chunk-MMBFAVBR.js";import"./chunk-TJZGAKIB.js";import"./chunk-VY7TBMJU.js";import"./chunk-2QNT5JDS.js";import"./chunk-QIJLFPWE.js";export{c as DEFAULT_GRANT_DAYS,a as GUEST_SCOPE_PREFIX,b as JOIN_CARD_BY,h as JOIN_FAILED,d as MAX_GRANT_DAYS,j as NO_GRANT,l as PAUSED,k as WAITING_HOST,s as endGrant,o as grantBrief,u as grantForGuest,e as grantIdOf,n as guestAccess,p as guestTask,g as inviteGuest,i as joinGuest,f as newGrantId,q as pauseGrant,r as resumeGrant,m as settleGrant,t as updateGrant};
2
+ //# sourceMappingURL=grants-O7SJ2J4B.js.map
@@ -1,2 +1,2 @@
1
- import{a}from"./chunk-ERG5OUKH.js";import"./chunk-6CTQPGBR.js";import"./chunk-OWNQ2FD4.js";import"./chunk-KEXBEUSU.js";import"./chunk-ROLSSYXE.js";import"./chunk-XWHD2Z3Z.js";import"./chunk-WPNRDEHW.js";import"./chunk-HPQ3AAG3.js";import"./chunk-72SZI2UW.js";import"./chunk-FCPTN6NF.js";import"./chunk-MCI3DIWW.js";import"./chunk-QOYAX2FT.js";import"./chunk-2PJKGZWP.js";import"./chunk-7I7IEX4S.js";import"./chunk-K22XMF6M.js";import"./chunk-BRK6M6LA.js";import"./chunk-UIBUZ2N3.js";import"./chunk-2QNT5JDS.js";import"./chunk-RGDKHYY2.js";import"./chunk-QIJLFPWE.js";export{a as WikiHub};
2
- //# sourceMappingURL=hub-MOQRSVCQ.js.map
1
+ import{a}from"./chunk-VTVEJ3RA.js";import"./chunk-HP2NWDCS.js";import"./chunk-OWNQ2FD4.js";import"./chunk-KEXBEUSU.js";import"./chunk-ROLSSYXE.js";import"./chunk-BPOMIEEE.js";import"./chunk-WPNRDEHW.js";import"./chunk-SH5TNMS5.js";import"./chunk-72SZI2UW.js";import"./chunk-FCPTN6NF.js";import"./chunk-MCI3DIWW.js";import"./chunk-QOYAX2FT.js";import"./chunk-2PJKGZWP.js";import"./chunk-7I7IEX4S.js";import"./chunk-4NKPVTVP.js";import"./chunk-BRK6M6LA.js";import"./chunk-UIBUZ2N3.js";import"./chunk-2QNT5JDS.js";import"./chunk-RGDKHYY2.js";import"./chunk-QIJLFPWE.js";export{a as WikiHub};
2
+ //# sourceMappingURL=hub-3LDKRLTH.js.map
package/dist/index.d.ts CHANGED
@@ -5433,9 +5433,9 @@ declare const daemonConfigSchema: z.ZodObject<{
5433
5433
  style: "card" | "dialog";
5434
5434
  sound: string;
5435
5435
  volume: number;
5436
+ timeoutSeconds: number;
5436
5437
  theme: "system" | "light" | "dark";
5437
5438
  speak: boolean;
5438
- timeoutSeconds: number;
5439
5439
  voice?: string | undefined;
5440
5440
  }, {
5441
5441
  enabled?: boolean | undefined;
@@ -5443,9 +5443,9 @@ declare const daemonConfigSchema: z.ZodObject<{
5443
5443
  sound?: string | undefined;
5444
5444
  voice?: string | undefined;
5445
5445
  volume?: number | undefined;
5446
+ timeoutSeconds?: number | undefined;
5446
5447
  theme?: "system" | "light" | "dark" | undefined;
5447
5448
  speak?: boolean | undefined;
5448
- timeoutSeconds?: number | undefined;
5449
5449
  }>>;
5450
5450
  /** Check-ins (src/approvals/checkin.ts): a few times a day, waiting cards
5451
5451
  * come back to the Mac card and the operator's open Apple Reminders get
@@ -5510,9 +5510,9 @@ declare const daemonConfigSchema: z.ZodObject<{
5510
5510
  style: "card" | "dialog";
5511
5511
  sound: string;
5512
5512
  volume: number;
5513
+ timeoutSeconds: number;
5513
5514
  theme: "system" | "light" | "dark";
5514
5515
  speak: boolean;
5515
- timeoutSeconds: number;
5516
5516
  voice?: string | undefined;
5517
5517
  };
5518
5518
  checkin: {
@@ -5549,9 +5549,9 @@ declare const daemonConfigSchema: z.ZodObject<{
5549
5549
  sound?: string | undefined;
5550
5550
  voice?: string | undefined;
5551
5551
  volume?: number | undefined;
5552
+ timeoutSeconds?: number | undefined;
5552
5553
  theme?: "system" | "light" | "dark" | undefined;
5553
5554
  speak?: boolean | undefined;
5554
- timeoutSeconds?: number | undefined;
5555
5555
  } | undefined;
5556
5556
  checkin?: {
5557
5557
  enabled?: boolean | undefined;
@@ -5717,6 +5717,45 @@ declare const daemonConfigSchema: z.ZodObject<{
5717
5717
  ciWaitMinutes?: number | undefined;
5718
5718
  maxDiffKb?: number | undefined;
5719
5719
  }>>;
5720
+ /** Merge policy (#1047): core paths need a person's approval; the
5721
+ * commit status `agentx/merge-policy` says which a PR is. */
5722
+ mergePolicy: z.ZodDefault<z.ZodObject<{
5723
+ enabled: z.ZodDefault<z.ZodBoolean>;
5724
+ /** Advisory posts success marked "[advisory]" on an unapproved core PR;
5725
+ * required posts pending until a person approves. */
5726
+ mode: z.ZodDefault<z.ZodEnum<["advisory", "required"]>>;
5727
+ /** Core files, as globs (`*` within a folder, `**` across folders, a
5728
+ * folder name covers everything under it). */
5729
+ corePaths: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
5730
+ /** Exceptions carved out of corePaths: a file matching one is edge. */
5731
+ edgePaths: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
5732
+ /** Label put on a PR that changes a core path, and taken off when it no
5733
+ * longer does. */
5734
+ label: z.ZodDefault<z.ZodString>;
5735
+ /** GitHub logins whose reviews count. Empty: the repository's owners,
5736
+ * members and collaborators, other than the PR's author and the
5737
+ * accounts AgentX posts with. */
5738
+ approvers: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
5739
+ /** In required mode, raise an approvals card for the owner on each
5740
+ * unapproved core commit; YES approves that commit. */
5741
+ ownerCard: z.ZodDefault<z.ZodBoolean>;
5742
+ }, "strip", z.ZodTypeAny, {
5743
+ enabled: boolean;
5744
+ mode: "required" | "advisory";
5745
+ label: string;
5746
+ corePaths: string[];
5747
+ edgePaths: string[];
5748
+ approvers: string[];
5749
+ ownerCard: boolean;
5750
+ }, {
5751
+ enabled?: boolean | undefined;
5752
+ mode?: "required" | "advisory" | undefined;
5753
+ label?: string | undefined;
5754
+ corePaths?: string[] | undefined;
5755
+ edgePaths?: string[] | undefined;
5756
+ approvers?: string[] | undefined;
5757
+ ownerCard?: boolean | undefined;
5758
+ }>>;
5720
5759
  }, "strip", z.ZodTypeAny, {
5721
5760
  specTests: {
5722
5761
  enabled: boolean;
@@ -5751,6 +5790,15 @@ declare const daemonConfigSchema: z.ZodObject<{
5751
5790
  ciWaitMinutes: number;
5752
5791
  maxDiffKb: number;
5753
5792
  };
5793
+ mergePolicy: {
5794
+ enabled: boolean;
5795
+ mode: "required" | "advisory";
5796
+ label: string;
5797
+ corePaths: string[];
5798
+ edgePaths: string[];
5799
+ approvers: string[];
5800
+ ownerCard: boolean;
5801
+ };
5754
5802
  }, {
5755
5803
  specTests?: {
5756
5804
  model?: string | undefined;
@@ -5785,6 +5833,15 @@ declare const daemonConfigSchema: z.ZodObject<{
5785
5833
  ciWaitMinutes?: number | undefined;
5786
5834
  maxDiffKb?: number | undefined;
5787
5835
  } | undefined;
5836
+ mergePolicy?: {
5837
+ enabled?: boolean | undefined;
5838
+ mode?: "required" | "advisory" | undefined;
5839
+ label?: string | undefined;
5840
+ corePaths?: string[] | undefined;
5841
+ edgePaths?: string[] | undefined;
5842
+ approvers?: string[] | undefined;
5843
+ ownerCard?: boolean | undefined;
5844
+ } | undefined;
5788
5845
  }>>;
5789
5846
  /** How a daemon stop treats runs still in flight. */
5790
5847
  shutdown: z.ZodDefault<z.ZodObject<{
@@ -6249,6 +6306,105 @@ declare const daemonConfigSchema: z.ZodObject<{
6249
6306
  }, {
6250
6307
  channels?: string[] | undefined;
6251
6308
  }>>;
6309
+ /** Weekly quality report posted on the epic issue (src/quality, #994).
6310
+ * Off by default. */
6311
+ qualityReport: z.ZodEffects<z.ZodDefault<z.ZodObject<{
6312
+ /** Post the report every week. Off by default. */
6313
+ enabled: z.ZodDefault<z.ZodBoolean>;
6314
+ /** Where it goes: "owner/name" and the epic issue number. */
6315
+ repo: z.ZodOptional<z.ZodString>;
6316
+ issue: z.ZodOptional<z.ZodNumber>;
6317
+ /** Monday, local time, 24-hour HH:MM. */
6318
+ time: z.ZodDefault<z.ZodString>;
6319
+ /** IANA timezone for `time`. Unset: this machine's. */
6320
+ timezone: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
6321
+ /** The command whose output is posted, as a code block. AgentX adds
6322
+ * `--repo <repo>` (unless the command names one), `--since <Monday>
6323
+ * --until <Sunday>` for the week and `--compare <baseline>`. It must print no cost amounts and no names. */
6324
+ command: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
6325
+ /** The baseline saved with `agentx quality report --save-baseline`:
6326
+ * each week is compared with it, and the verdict quotes its fix share. */
6327
+ baseline: z.ZodDefault<z.ZodString>;
6328
+ timeoutSeconds: z.ZodDefault<z.ZodNumber>;
6329
+ /** The gates and the dates they were turned on (and off), so each week's
6330
+ * comment says which gates were on. */
6331
+ gates: z.ZodDefault<z.ZodArray<z.ZodObject<{
6332
+ id: z.ZodString;
6333
+ label: z.ZodOptional<z.ZodString>;
6334
+ since: z.ZodString;
6335
+ until: z.ZodOptional<z.ZodString>;
6336
+ }, "strip", z.ZodTypeAny, {
6337
+ id: string;
6338
+ since: string;
6339
+ label?: string | undefined;
6340
+ until?: string | undefined;
6341
+ }, {
6342
+ id: string;
6343
+ since: string;
6344
+ label?: string | undefined;
6345
+ until?: string | undefined;
6346
+ }>, "many">>;
6347
+ }, "strip", z.ZodTypeAny, {
6348
+ enabled: boolean;
6349
+ command: string[];
6350
+ time: string;
6351
+ baseline: string;
6352
+ timeoutSeconds: number;
6353
+ gates: {
6354
+ id: string;
6355
+ since: string;
6356
+ label?: string | undefined;
6357
+ until?: string | undefined;
6358
+ }[];
6359
+ repo?: string | undefined;
6360
+ timezone?: string | undefined;
6361
+ issue?: number | undefined;
6362
+ }, {
6363
+ enabled?: boolean | undefined;
6364
+ command?: string[] | undefined;
6365
+ repo?: string | undefined;
6366
+ timezone?: string | undefined;
6367
+ time?: string | undefined;
6368
+ issue?: number | undefined;
6369
+ baseline?: string | undefined;
6370
+ timeoutSeconds?: number | undefined;
6371
+ gates?: {
6372
+ id: string;
6373
+ since: string;
6374
+ label?: string | undefined;
6375
+ until?: string | undefined;
6376
+ }[] | undefined;
6377
+ }>>, {
6378
+ enabled: boolean;
6379
+ command: string[];
6380
+ time: string;
6381
+ baseline: string;
6382
+ timeoutSeconds: number;
6383
+ gates: {
6384
+ id: string;
6385
+ since: string;
6386
+ label?: string | undefined;
6387
+ until?: string | undefined;
6388
+ }[];
6389
+ repo?: string | undefined;
6390
+ timezone?: string | undefined;
6391
+ issue?: number | undefined;
6392
+ }, {
6393
+ enabled?: boolean | undefined;
6394
+ command?: string[] | undefined;
6395
+ repo?: string | undefined;
6396
+ timezone?: string | undefined;
6397
+ time?: string | undefined;
6398
+ issue?: number | undefined;
6399
+ baseline?: string | undefined;
6400
+ timeoutSeconds?: number | undefined;
6401
+ gates?: {
6402
+ id: string;
6403
+ since: string;
6404
+ label?: string | undefined;
6405
+ until?: string | undefined;
6406
+ }[] | undefined;
6407
+ } | undefined>;
6252
6408
  /** Hand due Apple Reminders back to the agent that created them
6253
6409
  * (src/reminders). macOS only; reads reminders whose notes end with the
6254
6410
  * mac-pim skill's `agentx: agent=<id>` trailer. */
@@ -9035,6 +9191,50 @@ declare const daemonConfigSchema: z.ZodObject<{
9035
9191
  region: string;
9036
9192
  };
9037
9193
  };
9194
+ quality: {
9195
+ specTests: {
9196
+ enabled: boolean;
9197
+ agent: string;
9198
+ paths: string[];
9199
+ maxMinutes: number;
9200
+ maxCostPerIssue: number;
9201
+ model?: string | undefined;
9202
+ };
9203
+ canary: {
9204
+ enabled: boolean;
9205
+ soakMinutes: number;
9206
+ thresholds: {
9207
+ maxRestarts: number;
9208
+ maxCrashes: number;
9209
+ maxFailedTasks: number;
9210
+ maxErrorRateIncrease: number;
9211
+ minTasksForRate: number;
9212
+ };
9213
+ };
9214
+ reviewGate: {
9215
+ enabled: boolean;
9216
+ mode: "required" | "advisory";
9217
+ reviewer: {
9218
+ model?: string | undefined;
9219
+ agent?: string | undefined;
9220
+ };
9221
+ paths: string[];
9222
+ maxCostPerReview: number;
9223
+ maxMinutes: number;
9224
+ maxReviewsPerPrPerDay: number;
9225
+ ciWaitMinutes: number;
9226
+ maxDiffKb: number;
9227
+ };
9228
+ mergePolicy: {
9229
+ enabled: boolean;
9230
+ mode: "required" | "advisory";
9231
+ label: string;
9232
+ corePaths: string[];
9233
+ edgePaths: string[];
9234
+ approvers: string[];
9235
+ ownerCard: boolean;
9236
+ };
9237
+ };
9038
9238
  providers: Record<string, {
9039
9239
  apiKey?: string | undefined;
9040
9240
  thinking?: boolean | undefined;
@@ -9147,9 +9347,9 @@ declare const daemonConfigSchema: z.ZodObject<{
9147
9347
  style: "card" | "dialog";
9148
9348
  sound: string;
9149
9349
  volume: number;
9350
+ timeoutSeconds: number;
9150
9351
  theme: "system" | "light" | "dark";
9151
9352
  speak: boolean;
9152
- timeoutSeconds: number;
9153
9353
  voice?: string | undefined;
9154
9354
  };
9155
9355
  checkin: {
@@ -9165,41 +9365,6 @@ declare const daemonConfigSchema: z.ZodObject<{
9165
9365
  };
9166
9366
  forwardTo?: string | undefined;
9167
9367
  };
9168
- quality: {
9169
- specTests: {
9170
- enabled: boolean;
9171
- agent: string;
9172
- paths: string[];
9173
- maxMinutes: number;
9174
- maxCostPerIssue: number;
9175
- model?: string | undefined;
9176
- };
9177
- canary: {
9178
- enabled: boolean;
9179
- soakMinutes: number;
9180
- thresholds: {
9181
- maxRestarts: number;
9182
- maxCrashes: number;
9183
- maxFailedTasks: number;
9184
- maxErrorRateIncrease: number;
9185
- minTasksForRate: number;
9186
- };
9187
- };
9188
- reviewGate: {
9189
- enabled: boolean;
9190
- mode: "required" | "advisory";
9191
- reviewer: {
9192
- model?: string | undefined;
9193
- agent?: string | undefined;
9194
- };
9195
- paths: string[];
9196
- maxCostPerReview: number;
9197
- maxMinutes: number;
9198
- maxReviewsPerPrPerDay: number;
9199
- ciWaitMinutes: number;
9200
- maxDiffKb: number;
9201
- };
9202
- };
9203
9368
  shutdown: {
9204
9369
  restart: {
9205
9370
  windowWaitMinutes: number;
@@ -9248,6 +9413,22 @@ declare const daemonConfigSchema: z.ZodObject<{
9248
9413
  requestStatus: {
9249
9414
  channels: string[];
9250
9415
  };
9416
+ qualityReport: {
9417
+ enabled: boolean;
9418
+ command: string[];
9419
+ time: string;
9420
+ baseline: string;
9421
+ timeoutSeconds: number;
9422
+ gates: {
9423
+ id: string;
9424
+ since: string;
9425
+ label?: string | undefined;
9426
+ until?: string | undefined;
9427
+ }[];
9428
+ repo?: string | undefined;
9429
+ timezone?: string | undefined;
9430
+ issue?: number | undefined;
9431
+ };
9251
9432
  reminders: {
9252
9433
  enabled: boolean;
9253
9434
  command: string;
@@ -10137,6 +10318,50 @@ declare const daemonConfigSchema: z.ZodObject<{
10137
10318
  region?: string | undefined;
10138
10319
  } | undefined;
10139
10320
  } | undefined;
10321
+ quality?: {
10322
+ specTests?: {
10323
+ model?: string | undefined;
10324
+ enabled?: boolean | undefined;
10325
+ agent?: string | undefined;
10326
+ paths?: string[] | undefined;
10327
+ maxMinutes?: number | undefined;
10328
+ maxCostPerIssue?: number | undefined;
10329
+ } | undefined;
10330
+ canary?: {
10331
+ enabled?: boolean | undefined;
10332
+ soakMinutes?: number | undefined;
10333
+ thresholds?: {
10334
+ maxRestarts?: number | undefined;
10335
+ maxCrashes?: number | undefined;
10336
+ maxFailedTasks?: number | undefined;
10337
+ maxErrorRateIncrease?: number | undefined;
10338
+ minTasksForRate?: number | undefined;
10339
+ } | undefined;
10340
+ } | undefined;
10341
+ reviewGate?: {
10342
+ enabled?: boolean | undefined;
10343
+ mode?: "required" | "advisory" | undefined;
10344
+ reviewer?: {
10345
+ model?: string | undefined;
10346
+ agent?: string | undefined;
10347
+ } | undefined;
10348
+ paths?: string[] | undefined;
10349
+ maxCostPerReview?: number | undefined;
10350
+ maxMinutes?: number | undefined;
10351
+ maxReviewsPerPrPerDay?: number | undefined;
10352
+ ciWaitMinutes?: number | undefined;
10353
+ maxDiffKb?: number | undefined;
10354
+ } | undefined;
10355
+ mergePolicy?: {
10356
+ enabled?: boolean | undefined;
10357
+ mode?: "required" | "advisory" | undefined;
10358
+ label?: string | undefined;
10359
+ corePaths?: string[] | undefined;
10360
+ edgePaths?: string[] | undefined;
10361
+ approvers?: string[] | undefined;
10362
+ ownerCard?: boolean | undefined;
10363
+ } | undefined;
10364
+ } | undefined;
10140
10365
  providers?: Record<string, {
10141
10366
  apiKey?: string | undefined;
10142
10367
  thinking?: boolean | undefined;
@@ -10251,9 +10476,9 @@ declare const daemonConfigSchema: z.ZodObject<{
10251
10476
  sound?: string | undefined;
10252
10477
  voice?: string | undefined;
10253
10478
  volume?: number | undefined;
10479
+ timeoutSeconds?: number | undefined;
10254
10480
  theme?: "system" | "light" | "dark" | undefined;
10255
10481
  speak?: boolean | undefined;
10256
- timeoutSeconds?: number | undefined;
10257
10482
  } | undefined;
10258
10483
  checkin?: {
10259
10484
  enabled?: boolean | undefined;
@@ -10267,41 +10492,6 @@ declare const daemonConfigSchema: z.ZodObject<{
10267
10492
  composeTimeoutSeconds?: number | undefined;
10268
10493
  } | undefined;
10269
10494
  } | undefined;
10270
- quality?: {
10271
- specTests?: {
10272
- model?: string | undefined;
10273
- enabled?: boolean | undefined;
10274
- agent?: string | undefined;
10275
- paths?: string[] | undefined;
10276
- maxMinutes?: number | undefined;
10277
- maxCostPerIssue?: number | undefined;
10278
- } | undefined;
10279
- canary?: {
10280
- enabled?: boolean | undefined;
10281
- soakMinutes?: number | undefined;
10282
- thresholds?: {
10283
- maxRestarts?: number | undefined;
10284
- maxCrashes?: number | undefined;
10285
- maxFailedTasks?: number | undefined;
10286
- maxErrorRateIncrease?: number | undefined;
10287
- minTasksForRate?: number | undefined;
10288
- } | undefined;
10289
- } | undefined;
10290
- reviewGate?: {
10291
- enabled?: boolean | undefined;
10292
- mode?: "required" | "advisory" | undefined;
10293
- reviewer?: {
10294
- model?: string | undefined;
10295
- agent?: string | undefined;
10296
- } | undefined;
10297
- paths?: string[] | undefined;
10298
- maxCostPerReview?: number | undefined;
10299
- maxMinutes?: number | undefined;
10300
- maxReviewsPerPrPerDay?: number | undefined;
10301
- ciWaitMinutes?: number | undefined;
10302
- maxDiffKb?: number | undefined;
10303
- } | undefined;
10304
- } | undefined;
10305
10495
  shutdown?: {
10306
10496
  restart?: {
10307
10497
  allowBy?: string | undefined;
@@ -10350,6 +10540,22 @@ declare const daemonConfigSchema: z.ZodObject<{
10350
10540
  requestStatus?: {
10351
10541
  channels?: string[] | undefined;
10352
10542
  } | undefined;
10543
+ qualityReport?: {
10544
+ enabled?: boolean | undefined;
10545
+ command?: string[] | undefined;
10546
+ repo?: string | undefined;
10547
+ timezone?: string | undefined;
10548
+ time?: string | undefined;
10549
+ issue?: number | undefined;
10550
+ baseline?: string | undefined;
10551
+ timeoutSeconds?: number | undefined;
10552
+ gates?: {
10553
+ id: string;
10554
+ since: string;
10555
+ label?: string | undefined;
10556
+ until?: string | undefined;
10557
+ }[] | undefined;
10558
+ } | undefined;
10353
10559
  reminders?: {
10354
10560
  enabled?: boolean | undefined;
10355
10561
  command?: string | undefined;
@@ -11265,6 +11471,9 @@ declare class AgentXDaemon {
11265
11471
  /** Pre-merge review gate (#990). Built with the GitHub channel; does
11266
11472
  * nothing while quality.reviewGate.enabled is false. */
11267
11473
  private reviewGate?;
11474
+ /** Core vs edge paths (#1047); does nothing while
11475
+ * quality.mergePolicy.enabled is false. */
11476
+ private mergePolicy?;
11268
11477
  private reviewLedger;
11269
11478
  private webrtc?;
11270
11479
  private botManager?;
@@ -11324,6 +11533,10 @@ declare class AgentXDaemon {
11324
11533
  constructor(configPath?: string);
11325
11534
  start(): Promise<void>;
11326
11535
  stop(): Promise<void>;
11536
+ /** The merge policy (#1047). The owner's approval is an approvals card
11537
+ * whose origin names the commit; the card store is the record, so an
11538
+ * approval survives a restart. */
11539
+ private buildMergePolicy;
11327
11540
  /** The review gate (#990): the reviewer runs as its own agent in a fresh
11328
11541
  * session keyed by the reviewed commit, so it never resumes the
11329
11542
  * author's conversation or an earlier review. */
@@ -11411,6 +11624,12 @@ declare class AgentXDaemon {
11411
11624
  private status;
11412
11625
  /** Send a status-comment edit to the peer that holds the agent's token. */
11413
11626
  private forwardCommentEdit;
11627
+ private qualityTimer?;
11628
+ private qualityPosting;
11629
+ /** Every minute: post the weekly quality report on the epic issue once
11630
+ * it is due (src/quality/epic-report.ts, #994). Failures are logged
11631
+ * and retried hourly; the settings are read on each tick. */
11632
+ private startQualityReport;
11414
11633
  private approvalsTimer?;
11415
11634
  /** On a push relay: sends the phone roster to the host (#711). */
11416
11635
  private pushRosterTimer?;
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,la as Tt,ma as Mt}from"./chunk-GB4YT5IG.js";import"./chunk-YVNGPYXN.js";import"./chunk-GTJIKXDB.js";import"./chunk-MFUN3ZS3.js";import"./chunk-S2GAEH2F.js";import"./chunk-7LN4VKDU.js";import"./chunk-IMLAPB7G.js";import"./chunk-ZVP6GB4G.js";import"./chunk-MRIVENBY.js";import"./chunk-UNIXYV3U.js";import"./chunk-AKWBDCMU.js";import"./chunk-PPUN7YHA.js";import"./chunk-VZLIBDLH.js";import"./chunk-EKJG63EJ.js";import"./chunk-N2HLL25P.js";import"./chunk-EMGB23H5.js";import"./chunk-JAML6222.js";import"./chunk-YMX3QCV7.js";import"./chunk-JWDJMFU6.js";import"./chunk-5HLD66CW.js";import"./chunk-IS2IWRP7.js";import"./chunk-LQE73AZR.js";import"./chunk-2D3RYIDU.js";import"./chunk-Y4CYQV7G.js";import"./chunk-3W2BHUGM.js";import"./chunk-SHEUCITK.js";import"./chunk-A5GYG56I.js";import"./chunk-2AXFYDWF.js";import"./chunk-AQASR6KR.js";import{m as lt,n as ct,na as yt,o as dt,p as mt,q as pt}from"./chunk-DKLVB5L6.js";import"./chunk-THWDSPX4.js";import"./chunk-QSKG754X.js";import"./chunk-MEFPXHQJ.js";import{a as L}from"./chunk-UG2OF2EI.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-O2CYERSX.js";import{a as B,b as M,c as F}from"./chunk-SFQUP3BP.js";import"./chunk-6TTGRTDO.js";import"./chunk-WY5ZOEOE.js";import"./chunk-SZDACK6O.js";import"./chunk-VE3SSOQX.js";import"./chunk-W4YR2RO2.js";import"./chunk-AFRHKA7B.js";import{s as ut}from"./chunk-NYWIN4BW.js";import"./chunk-QVPBSV5Z.js";import"./chunk-3UOTLMXD.js";import"./chunk-36AXN6ZB.js";import"./chunk-PE5V2LI7.js";import"./chunk-GQ76J72O.js";import"./chunk-ILEC3IAV.js";import"./chunk-J3SOEFRE.js";import"./chunk-SIU6STB2.js";import"./chunk-X5C5W3E4.js";import"./chunk-GV7S5BAX.js";import"./chunk-GSX4NK2N.js";import"./chunk-VWTBHLMX.js";import"./chunk-ERG5OUKH.js";import{a as ht}from"./chunk-6CTQPGBR.js";import"./chunk-OWNQ2FD4.js";import"./chunk-KEXBEUSU.js";import"./chunk-ROLSSYXE.js";import"./chunk-SDSSRNSU.js";import"./chunk-SKSYII3K.js";import{f as gt,g as ft}from"./chunk-XWHD2Z3Z.js";import"./chunk-WPNRDEHW.js";import"./chunk-MWNCS57L.js";import"./chunk-4LWFJ4MZ.js";import"./chunk-BIJHMWXK.js";import"./chunk-RB5W3FVO.js";import{j as it,k as rt,l as at}from"./chunk-HPQ3AAG3.js";import"./chunk-72SZI2UW.js";import"./chunk-FCPTN6NF.js";import"./chunk-MCI3DIWW.js";import"./chunk-MYVHVJWZ.js";import"./chunk-6TURWSMN.js";import"./chunk-AV7T3SYT.js";import"./chunk-Y5MFVVTM.js";import"./chunk-QD6IICK7.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-2PJKGZWP.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{Ha as tt,Ja as st,Ka as ot,Ra as nt}from"./chunk-K22XMF6M.js";import"./chunk-BRK6M6LA.js";import"./chunk-UIBUZ2N3.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{Aa as Tt,Ba as Mt,a as St,b as kt,c as vt,d as xt,e as $t,f as Ct,g as Pt,h as bt}from"./chunk-HCSIM2QW.js";import"./chunk-VXBL2DET.js";import"./chunk-GTJIKXDB.js";import"./chunk-WUBSX6S5.js";import"./chunk-S2GAEH2F.js";import"./chunk-7LN4VKDU.js";import"./chunk-IMLAPB7G.js";import"./chunk-ZVP6GB4G.js";import"./chunk-2D3RYIDU.js";import"./chunk-MRIVENBY.js";import"./chunk-MMBFAVBR.js";import"./chunk-TJZGAKIB.js";import"./chunk-PPUN7YHA.js";import"./chunk-VZLIBDLH.js";import"./chunk-EKJG63EJ.js";import"./chunk-QXPMWP4R.js";import"./chunk-AQASR6KR.js";import"./chunk-EMGB23H5.js";import"./chunk-JAML6222.js";import"./chunk-YMX3QCV7.js";import"./chunk-JWDJMFU6.js";import"./chunk-5HLD66CW.js";import"./chunk-IS2IWRP7.js";import"./chunk-LQE73AZR.js";import"./chunk-VY7TBMJU.js";import"./chunk-DG2DC43E.js";import"./chunk-WBG6NA7R.js";import"./chunk-SANYTBHX.js";import"./chunk-A5GYG56I.js";import"./chunk-2AXFYDWF.js";import{m as lt,n as ct,na as yt,o as dt,p as mt,q as pt}from"./chunk-YWDXRGVC.js";import"./chunk-P42M6CYF.js";import"./chunk-MEFPXHQJ.js";import{a as L}from"./chunk-UG2OF2EI.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-GMVWDQFF.js";import{a as B,b as M,c as F}from"./chunk-SFQUP3BP.js";import"./chunk-6TTGRTDO.js";import"./chunk-SZDACK6O.js";import"./chunk-VE3SSOQX.js";import"./chunk-W4YR2RO2.js";import"./chunk-AFRHKA7B.js";import"./chunk-5TTHN7DP.js";import{s as ut}from"./chunk-LJ62ABOZ.js";import"./chunk-VMMCT27Z.js";import"./chunk-3UOTLMXD.js";import"./chunk-36AXN6ZB.js";import"./chunk-PE5V2LI7.js";import"./chunk-GQ76J72O.js";import"./chunk-ILEC3IAV.js";import"./chunk-J3SOEFRE.js";import"./chunk-SIU6STB2.js";import"./chunk-X5C5W3E4.js";import"./chunk-GV7S5BAX.js";import"./chunk-GSX4NK2N.js";import"./chunk-VWTBHLMX.js";import"./chunk-VTVEJ3RA.js";import{a as ht}from"./chunk-HP2NWDCS.js";import"./chunk-OWNQ2FD4.js";import"./chunk-KEXBEUSU.js";import"./chunk-ROLSSYXE.js";import"./chunk-YUY35PY7.js";import"./chunk-SKSYII3K.js";import{f as gt,g as ft}from"./chunk-BPOMIEEE.js";import"./chunk-WPNRDEHW.js";import"./chunk-MWNCS57L.js";import"./chunk-4LWFJ4MZ.js";import"./chunk-BIJHMWXK.js";import"./chunk-KAGLCJA3.js";import{j as it,k as rt,l as at}from"./chunk-SH5TNMS5.js";import"./chunk-72SZI2UW.js";import"./chunk-FCPTN6NF.js";import"./chunk-MCI3DIWW.js";import"./chunk-MYVHVJWZ.js";import"./chunk-6TURWSMN.js";import"./chunk-AV7T3SYT.js";import"./chunk-Y5MFVVTM.js";import"./chunk-QD6IICK7.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-2PJKGZWP.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{Ja as tt,La as st,Ma as ot,Ta as nt}from"./chunk-4NKPVTVP.js";import"./chunk-BRK6M6LA.js";import"./chunk-UIBUZ2N3.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).