agentix-cli 0.49.0 → 0.50.1

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 (241) hide show
  1. package/README.md +17 -0
  2. package/dist/{App-KE4SURSS.js → App-TDUUFVDV.js} +2 -2
  3. package/dist/{ChatApp-NNHIKXO2.js → ChatApp-IOWDXM3R.js} +2 -2
  4. package/dist/agent-KRLAT3YJ.js +2 -0
  5. package/dist/{article-fields-L4D2BOGY.js → article-fields-PITN4NHA.js} +2 -2
  6. package/dist/{article-quality-44ONVGLN.js → article-quality-JFJMZWFQ.js} +2 -2
  7. package/dist/{audit-4245CX6P.js → audit-CMJ2TZ3K.js} +2 -2
  8. package/dist/{backfill-MTD2B62I.js → backfill-7TCF4SHG.js} +2 -2
  9. package/dist/{board-dashboard-LG3ECH7C.js → board-dashboard-VA4VSCMQ.js} +9 -9
  10. package/dist/board-dashboard-VA4VSCMQ.js.map +1 -0
  11. package/dist/{builtin-B67DMJ3M.js → builtin-W6KNX7RS.js} +2 -2
  12. package/dist/calibration-MCCVYGZQ.js +2 -0
  13. package/dist/{chunk-3SCPRYJB.js → chunk-2AXFYDWF.js} +2 -2
  14. package/dist/{chunk-MWUJOAAW.js → chunk-2BRX2EMT.js} +6 -6
  15. package/dist/{chunk-DLKRPK5M.js → chunk-4BNQSUWV.js} +7 -2
  16. package/dist/{chunk-DLKRPK5M.js.map → chunk-4BNQSUWV.js.map} +1 -1
  17. package/dist/{chunk-OHA3J5ZV.js → chunk-5KCOH5FQ.js} +2 -2
  18. package/dist/{chunk-F4HZTZHW.js → chunk-72SZI2UW.js} +2 -2
  19. package/dist/{chunk-L2WSPY6S.js → chunk-7I7IEX4S.js} +2 -2
  20. package/dist/{chunk-GCHUE3TN.js → chunk-7WDJW37G.js} +2 -2
  21. package/dist/{chunk-QDE75R4U.js → chunk-A6IV2VQY.js} +2 -2
  22. package/dist/{chunk-JVNFRS26.js → chunk-AVJRATR5.js} +2 -2
  23. package/dist/{chunk-PZCTCCC5.js → chunk-BVRUDRCM.js} +2 -2
  24. package/dist/{chunk-4NBWF4TL.js → chunk-F2PEUQW4.js} +2 -2
  25. package/dist/{chunk-ZTEU5JVQ.js → chunk-FCPTN6NF.js} +2 -2
  26. package/dist/{chunk-5ALS7SVV.js → chunk-FDYGTQVW.js} +2 -2
  27. package/dist/{chunk-AJONZWLT.js → chunk-FX3D7YON.js} +2 -2
  28. package/dist/{chunk-OTW5MPFT.js → chunk-HHY3MSMN.js} +2 -2
  29. package/dist/chunk-HRBKSZ34.js +2 -0
  30. package/dist/chunk-HRBKSZ34.js.map +1 -0
  31. package/dist/{chunk-WPMX3VGI.js → chunk-J3SOEFRE.js} +2 -2
  32. package/dist/{chunk-3L2FKVR6.js → chunk-JUJ3TCOE.js} +3 -3
  33. package/dist/{chunk-FM2GGPSD.js → chunk-JWLTI6NZ.js} +68 -68
  34. package/dist/chunk-JWLTI6NZ.js.map +1 -0
  35. package/dist/{chunk-B5XHX44Y.js → chunk-JY7POTMB.js} +2 -2
  36. package/dist/{chunk-DTJKN5VT.js → chunk-KH6L7GDO.js} +2 -2
  37. package/dist/chunk-QIJLFPWE.js +2 -0
  38. package/dist/{chunk-BH3GTCZ6.js → chunk-RGDKHYY2.js} +2 -2
  39. package/dist/{chunk-HGT4AKOH.js → chunk-RP7GLXOA.js} +8 -8
  40. package/dist/{chunk-K33GIBSE.js → chunk-SIU6STB2.js} +2 -2
  41. package/dist/{chunk-LCIREYTD.js → chunk-SZJMS7K4.js} +2 -2
  42. package/dist/{chunk-AJ5RMU7X.js → chunk-TFVUOC2C.js} +2 -2
  43. package/dist/{chunk-DVNIFP7S.js → chunk-WKTFP3SK.js} +3 -3
  44. package/dist/{chunk-Q7C3X3R6.js → chunk-WP6KLXTP.js} +2 -2
  45. package/dist/{chunk-RKAJR37K.js → chunk-WUDXUY7H.js} +2 -2
  46. package/dist/{chunk-NLZD2QKF.js → chunk-WW6KNRIR.js} +2 -2
  47. package/dist/{chunk-5XQCGPQJ.js → chunk-X5K3HR4V.js} +2 -2
  48. package/dist/{chunk-P2ZYT5D6.js → chunk-XSFXAJDA.js} +2 -2
  49. package/dist/{chunk-W5C2GDNC.js → chunk-Y57CULGE.js} +2 -2
  50. package/dist/{chunk-HVQJIROJ.js → chunk-ZKDWQJVS.js} +9 -9
  51. package/dist/{chunk-IXUEJBHD.js → chunk-ZN7637EF.js} +2 -2
  52. package/dist/{chunk-OUZ7YVQZ.js → chunk-ZQSB6IX4.js} +2 -2
  53. package/dist/{chunk-4TITGMPX.js → chunk-ZWGRRFJI.js} +2 -2
  54. package/dist/cli.js +1 -1
  55. package/dist/client-PC7OEKSK.js +2 -0
  56. package/dist/{compaction-U5SAYTX6.js → compaction-NWPBPWY2.js} +4 -4
  57. package/dist/{config-R47ITLIY.js → config-I4GWI22T.js} +2 -2
  58. package/dist/config-mutator-3RFKH3OV.js +2 -0
  59. package/dist/{conflict-detector-ZPOT3M2C.js → conflict-detector-KS7OSS45.js} +2 -2
  60. package/dist/{context-planner-FJMU5WAT.js → context-planner-LJT5IKH6.js} +3 -3
  61. package/dist/debug-FTAGG7MN.js +2 -0
  62. package/dist/{discover-D4VVRNAI.js → discover-7YFQNYLC.js} +2 -2
  63. package/dist/doctor-OG6DK52Y.js +2 -0
  64. package/dist/{editor-chat-MOMQHMO4.js → editor-chat-V24MXQIB.js} +2 -2
  65. package/dist/{entry-triage-LK34TSQD.js → entry-triage-LZWMMLLN.js} +2 -2
  66. package/dist/{facts-YVEJOM7O.js → facts-4YPSHIXJ.js} +2 -2
  67. package/dist/{failure-candidates-ARRMFXRY.js → failure-candidates-RIXA3Y6D.js} +2 -2
  68. package/dist/heal-HVYQD3EZ.js +2 -0
  69. package/dist/index.d.ts +1 -1
  70. package/dist/index.js +2 -2
  71. package/dist/{ingest-whatsapp-NS4OWDOU.js → ingest-whatsapp-4POCTRTP.js} +2 -2
  72. package/dist/loader-EVHZ2R73.js +2 -0
  73. package/dist/loader-KKMG24O5.js +2 -0
  74. package/dist/memory-extract-MGGXIZTE.js +2 -0
  75. package/dist/{migrate-v2-V4WN2VVM.js → migrate-v2-5VGHWPBW.js} +2 -2
  76. package/dist/{ntfy-X7EPB3TG.js → ntfy-ZY2NPGBA.js} +2 -2
  77. package/dist/processes-CMTMB7LG.js +2 -0
  78. package/dist/program-RFAHI4SS.js +2 -0
  79. package/dist/{projects-api-QE6L65SK.js → projects-api-E337EQNV.js} +2 -2
  80. package/dist/{projects-mutate-MY7JTLSZ.js → projects-mutate-S5MY7V3V.js} +2 -2
  81. package/dist/promote-EDEG2HQR.js +2 -0
  82. package/dist/proposals-O4B5LD5T.js +2 -0
  83. package/dist/providers-NRPX2FHP.js +2 -0
  84. package/dist/query-P5LMGXVS.js +2 -0
  85. package/dist/{questions-4B4KSPXG.js → questions-2V2VGIT4.js} +2 -2
  86. package/dist/recipes-423CIPZ3.js +2 -0
  87. package/dist/registry-GJLY5J5E.js +2 -0
  88. package/dist/{request-planner-PEAYYXAP.js → request-planner-JDBXFNQ4.js} +2 -2
  89. package/dist/{review-candidates-W7NIHNAI.js → review-candidates-EBP5CFOB.js} +2 -2
  90. package/dist/{review-store-B4YE3EFK.js → review-store-PW3OBGZQ.js} +2 -2
  91. package/dist/{rotation-memo-QEO3COFH.js → rotation-memo-453FXKHQ.js} +2 -2
  92. package/dist/routing-Q2EOZ3VW.js +2 -0
  93. package/dist/runner-56G3N7M4.js +2 -0
  94. package/dist/schedule-tool-N2Z5E6AR.js +2 -0
  95. package/dist/scheduler-WTPERNYJ.js +2 -0
  96. package/dist/seat-LV3STEXI.js +2 -0
  97. package/dist/{select-4XYRIZ5L.js → select-5NHY4T5A.js} +2 -2
  98. package/dist/shutdown-ZAF7RW25.js +2 -0
  99. package/dist/store-TWQPEM5V.js +2 -0
  100. package/dist/{subagent-2SJHSSJS.js → subagent-XY5N7TUU.js} +2 -2
  101. package/dist/{surface-usage-V2BX4SBD.js → surface-usage-HVVP22SA.js} +2 -2
  102. package/dist/timers-KK7GF77Y.js +2 -0
  103. package/dist/{tool-PAQ47HV2.js → tool-2RKPJWDG.js} +2 -2
  104. package/dist/{triage-backtest-JNO7RKX7.js → triage-backtest-DLKYJSEB.js} +2 -2
  105. package/dist/types-DO3KLIBS.js +2 -0
  106. package/dist/types-S6NHM5C3.js +2 -0
  107. package/dist/{whatsapp-state-6D6FHHD2.js → whatsapp-state-LB3R32BK.js} +2 -2
  108. package/dist/wiki-XQMJ2FPU.js +2 -0
  109. package/dist/{workspace-setup-G6KGWPHY.js → workspace-setup-42ARC42I.js} +2 -2
  110. package/package.json +1 -1
  111. package/dist/agent-J7SLJYQ6.js +0 -2
  112. package/dist/board-dashboard-LG3ECH7C.js.map +0 -1
  113. package/dist/calibration-ILS5OI44.js +0 -2
  114. package/dist/chunk-7DXE264B.js +0 -2
  115. package/dist/chunk-7DXE264B.js.map +0 -1
  116. package/dist/chunk-FIOB3MEX.js +0 -2
  117. package/dist/chunk-FM2GGPSD.js.map +0 -1
  118. package/dist/client-JZTH46N2.js +0 -2
  119. package/dist/config-mutator-T6JGXJ26.js +0 -2
  120. package/dist/debug-3MEUO2P2.js +0 -2
  121. package/dist/doctor-2DMGAWMW.js +0 -2
  122. package/dist/heal-FVLBHYP7.js +0 -2
  123. package/dist/loader-4ZGTK7LD.js +0 -2
  124. package/dist/loader-BOKE5M5S.js +0 -2
  125. package/dist/memory-extract-YZI2QZVR.js +0 -2
  126. package/dist/processes-XWRGOLMT.js +0 -2
  127. package/dist/program-3CDFUJVE.js +0 -2
  128. package/dist/promote-57YNOVXV.js +0 -2
  129. package/dist/proposals-TX2HBBYV.js +0 -2
  130. package/dist/providers-KO2DODIO.js +0 -2
  131. package/dist/query-ZT7WXY2F.js +0 -2
  132. package/dist/recipes-7S4MC5OJ.js +0 -2
  133. package/dist/registry-722GXALE.js +0 -2
  134. package/dist/routing-7LCO7UJ7.js +0 -2
  135. package/dist/runner-YRBVNYTY.js +0 -2
  136. package/dist/schedule-tool-ZD3VBUBW.js +0 -2
  137. package/dist/scheduler-GC3FQKXY.js +0 -2
  138. package/dist/seat-HR6QMAR2.js +0 -2
  139. package/dist/shutdown-6GCMKYAD.js +0 -2
  140. package/dist/store-MCOA6N4F.js +0 -2
  141. package/dist/timers-PCB4ZIBD.js +0 -2
  142. package/dist/types-H5ENIUIT.js +0 -2
  143. package/dist/types-OIFU3KSQ.js +0 -2
  144. package/dist/wiki-EREMPSAE.js +0 -2
  145. /package/dist/{App-KE4SURSS.js.map → App-TDUUFVDV.js.map} +0 -0
  146. /package/dist/{ChatApp-NNHIKXO2.js.map → ChatApp-IOWDXM3R.js.map} +0 -0
  147. /package/dist/{agent-J7SLJYQ6.js.map → agent-KRLAT3YJ.js.map} +0 -0
  148. /package/dist/{article-fields-L4D2BOGY.js.map → article-fields-PITN4NHA.js.map} +0 -0
  149. /package/dist/{article-quality-44ONVGLN.js.map → article-quality-JFJMZWFQ.js.map} +0 -0
  150. /package/dist/{audit-4245CX6P.js.map → audit-CMJ2TZ3K.js.map} +0 -0
  151. /package/dist/{backfill-MTD2B62I.js.map → backfill-7TCF4SHG.js.map} +0 -0
  152. /package/dist/{builtin-B67DMJ3M.js.map → builtin-W6KNX7RS.js.map} +0 -0
  153. /package/dist/{calibration-ILS5OI44.js.map → calibration-MCCVYGZQ.js.map} +0 -0
  154. /package/dist/{chunk-3SCPRYJB.js.map → chunk-2AXFYDWF.js.map} +0 -0
  155. /package/dist/{chunk-MWUJOAAW.js.map → chunk-2BRX2EMT.js.map} +0 -0
  156. /package/dist/{chunk-OHA3J5ZV.js.map → chunk-5KCOH5FQ.js.map} +0 -0
  157. /package/dist/{chunk-F4HZTZHW.js.map → chunk-72SZI2UW.js.map} +0 -0
  158. /package/dist/{chunk-L2WSPY6S.js.map → chunk-7I7IEX4S.js.map} +0 -0
  159. /package/dist/{chunk-GCHUE3TN.js.map → chunk-7WDJW37G.js.map} +0 -0
  160. /package/dist/{chunk-QDE75R4U.js.map → chunk-A6IV2VQY.js.map} +0 -0
  161. /package/dist/{chunk-JVNFRS26.js.map → chunk-AVJRATR5.js.map} +0 -0
  162. /package/dist/{chunk-PZCTCCC5.js.map → chunk-BVRUDRCM.js.map} +0 -0
  163. /package/dist/{chunk-4NBWF4TL.js.map → chunk-F2PEUQW4.js.map} +0 -0
  164. /package/dist/{chunk-ZTEU5JVQ.js.map → chunk-FCPTN6NF.js.map} +0 -0
  165. /package/dist/{chunk-5ALS7SVV.js.map → chunk-FDYGTQVW.js.map} +0 -0
  166. /package/dist/{chunk-AJONZWLT.js.map → chunk-FX3D7YON.js.map} +0 -0
  167. /package/dist/{chunk-OTW5MPFT.js.map → chunk-HHY3MSMN.js.map} +0 -0
  168. /package/dist/{chunk-WPMX3VGI.js.map → chunk-J3SOEFRE.js.map} +0 -0
  169. /package/dist/{chunk-3L2FKVR6.js.map → chunk-JUJ3TCOE.js.map} +0 -0
  170. /package/dist/{chunk-B5XHX44Y.js.map → chunk-JY7POTMB.js.map} +0 -0
  171. /package/dist/{chunk-DTJKN5VT.js.map → chunk-KH6L7GDO.js.map} +0 -0
  172. /package/dist/{chunk-FIOB3MEX.js.map → chunk-QIJLFPWE.js.map} +0 -0
  173. /package/dist/{chunk-BH3GTCZ6.js.map → chunk-RGDKHYY2.js.map} +0 -0
  174. /package/dist/{chunk-HGT4AKOH.js.map → chunk-RP7GLXOA.js.map} +0 -0
  175. /package/dist/{chunk-K33GIBSE.js.map → chunk-SIU6STB2.js.map} +0 -0
  176. /package/dist/{chunk-LCIREYTD.js.map → chunk-SZJMS7K4.js.map} +0 -0
  177. /package/dist/{chunk-AJ5RMU7X.js.map → chunk-TFVUOC2C.js.map} +0 -0
  178. /package/dist/{chunk-DVNIFP7S.js.map → chunk-WKTFP3SK.js.map} +0 -0
  179. /package/dist/{chunk-Q7C3X3R6.js.map → chunk-WP6KLXTP.js.map} +0 -0
  180. /package/dist/{chunk-RKAJR37K.js.map → chunk-WUDXUY7H.js.map} +0 -0
  181. /package/dist/{chunk-NLZD2QKF.js.map → chunk-WW6KNRIR.js.map} +0 -0
  182. /package/dist/{chunk-5XQCGPQJ.js.map → chunk-X5K3HR4V.js.map} +0 -0
  183. /package/dist/{chunk-P2ZYT5D6.js.map → chunk-XSFXAJDA.js.map} +0 -0
  184. /package/dist/{chunk-W5C2GDNC.js.map → chunk-Y57CULGE.js.map} +0 -0
  185. /package/dist/{chunk-HVQJIROJ.js.map → chunk-ZKDWQJVS.js.map} +0 -0
  186. /package/dist/{chunk-IXUEJBHD.js.map → chunk-ZN7637EF.js.map} +0 -0
  187. /package/dist/{chunk-OUZ7YVQZ.js.map → chunk-ZQSB6IX4.js.map} +0 -0
  188. /package/dist/{chunk-4TITGMPX.js.map → chunk-ZWGRRFJI.js.map} +0 -0
  189. /package/dist/{client-JZTH46N2.js.map → client-PC7OEKSK.js.map} +0 -0
  190. /package/dist/{compaction-U5SAYTX6.js.map → compaction-NWPBPWY2.js.map} +0 -0
  191. /package/dist/{config-R47ITLIY.js.map → config-I4GWI22T.js.map} +0 -0
  192. /package/dist/{config-mutator-T6JGXJ26.js.map → config-mutator-3RFKH3OV.js.map} +0 -0
  193. /package/dist/{conflict-detector-ZPOT3M2C.js.map → conflict-detector-KS7OSS45.js.map} +0 -0
  194. /package/dist/{context-planner-FJMU5WAT.js.map → context-planner-LJT5IKH6.js.map} +0 -0
  195. /package/dist/{debug-3MEUO2P2.js.map → debug-FTAGG7MN.js.map} +0 -0
  196. /package/dist/{discover-D4VVRNAI.js.map → discover-7YFQNYLC.js.map} +0 -0
  197. /package/dist/{doctor-2DMGAWMW.js.map → doctor-OG6DK52Y.js.map} +0 -0
  198. /package/dist/{editor-chat-MOMQHMO4.js.map → editor-chat-V24MXQIB.js.map} +0 -0
  199. /package/dist/{entry-triage-LK34TSQD.js.map → entry-triage-LZWMMLLN.js.map} +0 -0
  200. /package/dist/{facts-YVEJOM7O.js.map → facts-4YPSHIXJ.js.map} +0 -0
  201. /package/dist/{failure-candidates-ARRMFXRY.js.map → failure-candidates-RIXA3Y6D.js.map} +0 -0
  202. /package/dist/{heal-FVLBHYP7.js.map → heal-HVYQD3EZ.js.map} +0 -0
  203. /package/dist/{ingest-whatsapp-NS4OWDOU.js.map → ingest-whatsapp-4POCTRTP.js.map} +0 -0
  204. /package/dist/{loader-4ZGTK7LD.js.map → loader-EVHZ2R73.js.map} +0 -0
  205. /package/dist/{loader-BOKE5M5S.js.map → loader-KKMG24O5.js.map} +0 -0
  206. /package/dist/{memory-extract-YZI2QZVR.js.map → memory-extract-MGGXIZTE.js.map} +0 -0
  207. /package/dist/{migrate-v2-V4WN2VVM.js.map → migrate-v2-5VGHWPBW.js.map} +0 -0
  208. /package/dist/{ntfy-X7EPB3TG.js.map → ntfy-ZY2NPGBA.js.map} +0 -0
  209. /package/dist/{processes-XWRGOLMT.js.map → processes-CMTMB7LG.js.map} +0 -0
  210. /package/dist/{program-3CDFUJVE.js.map → program-RFAHI4SS.js.map} +0 -0
  211. /package/dist/{projects-api-QE6L65SK.js.map → projects-api-E337EQNV.js.map} +0 -0
  212. /package/dist/{projects-mutate-MY7JTLSZ.js.map → projects-mutate-S5MY7V3V.js.map} +0 -0
  213. /package/dist/{promote-57YNOVXV.js.map → promote-EDEG2HQR.js.map} +0 -0
  214. /package/dist/{proposals-TX2HBBYV.js.map → proposals-O4B5LD5T.js.map} +0 -0
  215. /package/dist/{providers-KO2DODIO.js.map → providers-NRPX2FHP.js.map} +0 -0
  216. /package/dist/{query-ZT7WXY2F.js.map → query-P5LMGXVS.js.map} +0 -0
  217. /package/dist/{questions-4B4KSPXG.js.map → questions-2V2VGIT4.js.map} +0 -0
  218. /package/dist/{recipes-7S4MC5OJ.js.map → recipes-423CIPZ3.js.map} +0 -0
  219. /package/dist/{registry-722GXALE.js.map → registry-GJLY5J5E.js.map} +0 -0
  220. /package/dist/{request-planner-PEAYYXAP.js.map → request-planner-JDBXFNQ4.js.map} +0 -0
  221. /package/dist/{review-candidates-W7NIHNAI.js.map → review-candidates-EBP5CFOB.js.map} +0 -0
  222. /package/dist/{review-store-B4YE3EFK.js.map → review-store-PW3OBGZQ.js.map} +0 -0
  223. /package/dist/{rotation-memo-QEO3COFH.js.map → rotation-memo-453FXKHQ.js.map} +0 -0
  224. /package/dist/{routing-7LCO7UJ7.js.map → routing-Q2EOZ3VW.js.map} +0 -0
  225. /package/dist/{runner-YRBVNYTY.js.map → runner-56G3N7M4.js.map} +0 -0
  226. /package/dist/{schedule-tool-ZD3VBUBW.js.map → schedule-tool-N2Z5E6AR.js.map} +0 -0
  227. /package/dist/{scheduler-GC3FQKXY.js.map → scheduler-WTPERNYJ.js.map} +0 -0
  228. /package/dist/{seat-HR6QMAR2.js.map → seat-LV3STEXI.js.map} +0 -0
  229. /package/dist/{select-4XYRIZ5L.js.map → select-5NHY4T5A.js.map} +0 -0
  230. /package/dist/{shutdown-6GCMKYAD.js.map → shutdown-ZAF7RW25.js.map} +0 -0
  231. /package/dist/{store-MCOA6N4F.js.map → store-TWQPEM5V.js.map} +0 -0
  232. /package/dist/{subagent-2SJHSSJS.js.map → subagent-XY5N7TUU.js.map} +0 -0
  233. /package/dist/{surface-usage-V2BX4SBD.js.map → surface-usage-HVVP22SA.js.map} +0 -0
  234. /package/dist/{timers-PCB4ZIBD.js.map → timers-KK7GF77Y.js.map} +0 -0
  235. /package/dist/{tool-PAQ47HV2.js.map → tool-2RKPJWDG.js.map} +0 -0
  236. /package/dist/{triage-backtest-JNO7RKX7.js.map → triage-backtest-DLKYJSEB.js.map} +0 -0
  237. /package/dist/{types-H5ENIUIT.js.map → types-DO3KLIBS.js.map} +0 -0
  238. /package/dist/{types-OIFU3KSQ.js.map → types-S6NHM5C3.js.map} +0 -0
  239. /package/dist/{whatsapp-state-6D6FHHD2.js.map → whatsapp-state-LB3R32BK.js.map} +0 -0
  240. /package/dist/{wiki-EREMPSAE.js.map → wiki-XQMJ2FPU.js.map} +0 -0
  241. /package/dist/{workspace-setup-G6KGWPHY.js.map → workspace-setup-42ARC42I.js.map} +0 -0
package/README.md CHANGED
@@ -111,6 +111,13 @@ Telegram and WhatsApp have pairing flows. GitLab, GitHub, and generic webhooks c
111
111
 
112
112
  Real agents need a configured model. An API provider needs a key; Claude Code, Codex CLI, and OpenCode need their CLI installed and authenticated on the host. Model-provider charges or subscription terms depend on your chosen provider.
113
113
 
114
+ ## Integrations
115
+
116
+ - **Channels:** Telegram, WhatsApp, GitLab, GitHub, and generic webhooks. [Channel reference](docs/reference/channels.md).
117
+ - **Models:** API providers, plus the Claude Code, Codex CLI, and OpenCode CLIs.
118
+ - **Other programs:** the local daemon accepts tasks over HTTP, and `agentx a2a` serves the A2A protocol. [Agent-to-agent reference](docs/reference/a2a.md).
119
+ - **Raycast:** ask your agents and list them from Raycast. [Install from this checkout](integrations/raycast/README.md); not in the Raycast Store yet.
120
+
114
121
  ## Help test and improve AgentX
115
122
 
116
123
  The most valuable contribution right now is **trying AgentX and reporting what happens**. You do not need to write code to help.
@@ -123,6 +130,16 @@ The most valuable contribution right now is **trying AgentX and reporting what h
123
130
 
124
131
  See [Contributing](CONTRIBUTING.md) for testing, issue triage, and development instructions.
125
132
 
133
+ ## Sponsors
134
+
135
+ We are grateful for the support of our sponsors, who help make AgentX possible.
136
+
137
+ <p align="center">
138
+ <a href="https://noqta.tn"><img src="docs/public/sponsors/noqta.svg" alt="Noqta" height="48" /></a>
139
+ </p>
140
+
141
+ Want to sponsor AgentX? [Start a discussion](https://github.com/anis-marrouchi/agentx/discussions) and we will add you here.
142
+
126
143
  ## Help and development
127
144
 
128
145
  - [Start here](docs/index.md) · [Troubleshooting](docs/help/its-not-answering.md) · [CLI reference](docs/reference/cli.md)
@@ -1,8 +1,8 @@
1
- import{a as F,b as L,c as U,d as N,e as O,f as H,g as j}from"./chunk-U2CKL755.js";import{b as B,c as D,d as A,e as P,g as M}from"./chunk-OUZ7YVQZ.js";import"./chunk-P2ZYT5D6.js";import"./chunk-FIOB3MEX.js";import{useEffect as R,useReducer as V,useRef as G}from"react";import{Box as i,Text as o,useApp as W,useInput as J}from"ink";import{randomUUID as z}from"crypto";async function*q(e){let r=[];e.type&&r.push(`type=${encodeURIComponent(e.type)}`);let t=`${e.baseUrl.replace(/\/+$/,"")}/events${r.length?`?${r.join("&")}`:""}`,n={Accept:"text/event-stream"};e.token&&(n.Authorization=`Bearer ${e.token}`);let s=await fetch(t,{headers:n,signal:e.signal});if(!s.ok||!s.body)throw new Error(`SSE connect failed: HTTP ${s.status}`);let u=s.body.getReader(),p=new TextDecoder,y="";try{for(;;){let{done:f,value:l}=await u.read();if(f)return;y+=p.decode(l,{stream:!0});let d;for(;(d=y.indexOf(`
1
+ import{a as F,b as L,c as U,d as N,e as O,f as H,g as j}from"./chunk-U2CKL755.js";import{b as B,c as D,d as A,e as P,g as M}from"./chunk-ZQSB6IX4.js";import"./chunk-XSFXAJDA.js";import"./chunk-QIJLFPWE.js";import{useEffect as R,useReducer as V,useRef as G}from"react";import{Box as i,Text as o,useApp as W,useInput as J}from"ink";import{randomUUID as z}from"crypto";async function*q(e){let r=[];e.type&&r.push(`type=${encodeURIComponent(e.type)}`);let t=`${e.baseUrl.replace(/\/+$/,"")}/events${r.length?`?${r.join("&")}`:""}`,n={Accept:"text/event-stream"};e.token&&(n.Authorization=`Bearer ${e.token}`);let s=await fetch(t,{headers:n,signal:e.signal});if(!s.ok||!s.body)throw new Error(`SSE connect failed: HTTP ${s.status}`);let u=s.body.getReader(),p=new TextDecoder,y="";try{for(;;){let{done:f,value:l}=await u.read();if(f)return;y+=p.decode(l,{stream:!0});let d;for(;(d=y.indexOf(`
2
2
 
3
3
  `))>=0;){let h=y.slice(0,d);y=y.slice(d+2);let m=X(h);m&&(yield m)}}}finally{try{u.releaseLock()}catch{}}}function X(e){let r="message",t="";for(let s of e.split(`
4
4
  `))s.startsWith("event: ")?r=s.slice(7):s.startsWith("data: ")&&(t=s.slice(6));if(!t)return null;let n;try{n=JSON.parse(t)}catch{n=t}return{event:r,data:n}}import{jsx as a,jsxs as c}from"react/jsx-runtime";function $(e,r){return r<=0||e<0?0:e>=r?r-1:e}function E(){return`tui:${z().slice(0,12)}`}function k(e,r){let t=[...e,r];return t.length>50&&t.splice(0,t.length-50),t}function Y(e,r){switch(r.type){case"agents":return{...e,agents:r.data,cursor:{...e.cursor,agents:$(e.cursor.agents,r.data.length)}};case"processes":return{...e,processes:r.data,cursor:{...e.cursor,processes:$(e.cursor.processes,r.data.length)}};case"crons":return{...e,crons:r.data};case"event":{let t=[r.row,...e.events];t.length>200&&(t.length=200);let n=e.channels;return r.channelTally&&(n=new Map(e.channels),n.set(r.channelTally.channel,r.channelTally)),{...e,events:t,channels:n}}case"connError":return{...e,connError:r.error};case"tick":return{...e,lastTick:Date.now()};case"focus":return{...e,focus:r.pane};case"cursor":{let t=r.pane==="agents"?e.agents.length:r.pane==="processes"?e.processes.length:e.events.length;return{...e,cursor:{...e.cursor,[r.pane]:$(e.cursor[r.pane]+r.delta,t)}}}case"bottomRight":return{...e,bottomRight:r.pane};case"chatStart":return{...e,chat:{active:!0,agentId:r.agentId,chatId:E(),history:[],text:"",status:"idle",error:null}};case"chatExit":return{...e,chat:{...e.chat,active:!1}};case"chatClear":return{...e,chat:{...e.chat,chatId:E(),history:[],text:"",status:"idle",error:null}};case"chatText":return{...e,chat:{...e.chat,text:r.text}};case"chatSubmitStart":return{...e,chat:{...e.chat,history:k(e.chat.history,r.you),text:"",status:"sending",error:null}};case"chatSubmitDone":return{...e,chat:{...e.chat,history:k(e.chat.history,r.reply),status:"idle",error:null}};case"chatSubmitError":return{...e,chat:{...e.chat,history:k(e.chat.history,{role:"error",text:r.error,at:Date.now()}),status:"idle",error:r.error}};case"chatStreamStart":{let t=k(e.chat.history,r.you),n=k(t,{role:"agent",text:"",at:Date.now(),streaming:!0,tools:[]});return{...e,chat:{...e.chat,history:n,text:"",status:"sending",error:null}}}case"chatStreamDelta":{let t=e.chat.history.slice(),n=t[t.length-1];return n?.role==="agent"&&n.streaming&&(t[t.length-1]={...n,text:n.text+r.text}),{...e,chat:{...e.chat,history:t}}}case"chatStreamThinking":{let t=e.chat.history.slice(),n=t[t.length-1];return n?.role==="agent"&&n.streaming&&(t[t.length-1]={...n,thinking:(n.thinking??"")+r.text}),{...e,chat:{...e.chat,history:t}}}case"chatStreamTool":{let t=e.chat.history.slice(),n=t[t.length-1];return n?.role==="agent"&&n.streaming&&(t[t.length-1]={...n,tools:[...n.tools??[],{name:r.name,arg:r.arg,error:r.error}]}),{...e,chat:{...e.chat,history:t}}}case"chatStreamEnd":{let t=e.chat.history.slice(),n=t[t.length-1];return n?.role==="agent"&&n.streaming&&(t[t.length-1]=r.error?{...n,streaming:!1,role:"error",text:r.error}:{...n,streaming:!1,elapsedMs:r.elapsedMs,outTokens:r.outTokens}),{...e,chat:{...e.chat,history:t,status:"idle",error:r.error??null}}}case"toast":return{...e,toast:{text:r.text,color:r.color,at:Date.now()}};case"clearToast":return{...e,toast:null}}}var _={agents:[],processes:[],crons:[],events:[],channels:new Map,connError:null,lastTick:0,focus:"agents",cursor:{agents:0,processes:0,events:0},bottomRight:"crons",chat:{active:!1,agentId:null,chatId:E(),history:[],text:"",status:"idle",error:null},toast:null};function be({conn:e,pollMs:r=3e3}){let[t,n]=V(Y,_),{exit:s}=W(),u=G(null),p=G(null),y=t.agents.map(l=>l.id),f=t.chat.active?L(t.chat.text,y,process.cwd()):null;return R(()=>{if(!t.toast)return;let l=setTimeout(()=>n({type:"clearToast"}),3500);return()=>clearTimeout(l)},[t.toast]),J((l,d)=>{if(t.chat.active){if(d.escape){n({type:"chatExit"});return}if(d.ctrl&&l==="l"){n({type:"chatClear"});return}if(d.tab){let m=U(t.chat.text,p,y,process.cwd());m!==null&&n({type:"chatText",text:m});return}if(d.backspace||d.delete){p.current=null,n({type:"chatText",text:t.chat.text.slice(0,-1)});return}if(d.ctrl||d.meta)return;let h=N(l??"",d.return,t.chat.text);if(h.kind==="paste"||h.kind==="type"){p.current=null,n({type:"chatText",text:t.chat.text+h.text});return}if(h.kind==="continue"){n({type:"chatText",text:h.buffer});return}if(h.kind==="submit"){let m=h.text.trim(),g=t.chat.agentId;if(!m||!g||t.chat.status==="sending"){n({type:"chatText",text:""});return}p.current=null;let b=Date.now(),w=t.chat.chatId;n({type:"chatStreamStart",you:{role:"you",text:m,at:b}}),(async()=>{try{let C=await M(e,g,m,{channel:"tui",chatId:w,onText:x=>n({type:"chatStreamDelta",text:x}),onThinking:x=>n({type:"chatStreamThinking",text:x}),onTool:x=>{x.status==="start"&&x.name?n({type:"chatStreamTool",name:x.name,arg:x.arg}):x.status==="result"&&x.error&&n({type:"chatStreamTool",name:x.name??"tool",error:!0})}});n({type:"chatStreamEnd",elapsedMs:Date.now()-b,outTokens:C.usage?.outputTokens,error:C.error})}catch(C){n({type:"chatStreamEnd",elapsedMs:Date.now()-b,error:C?.message||String(C)})}})();return}return}if(l==="q"||d.ctrl&&l==="c"){u.current?.abort(),s();return}if(d.tab){let h=["agents","processes","events"],m=h.indexOf(t.focus);n({type:"focus",pane:h[(m+1)%h.length]});return}if(l==="a"){n({type:"focus",pane:"agents"});return}if(l==="p"){n({type:"focus",pane:"processes"});return}if(l==="e"){n({type:"focus",pane:"events"});return}if(l==="c"){n({type:"bottomRight",pane:t.bottomRight==="crons"?"channels":"crons"});return}if(d.upArrow){n({type:"cursor",pane:t.focus,delta:-1});return}if(d.downArrow){n({type:"cursor",pane:t.focus,delta:1});return}if(d.return&&t.focus==="agents"){let h=t.agents[t.cursor.agents];if(!h){n({type:"toast",text:"no agent selected",color:"yellow"});return}n({type:"chatStart",agentId:h.id});return}if(l==="k"&&t.focus==="processes"){let h=t.processes[t.cursor.processes];if(!h){n({type:"toast",text:"no process selected",color:"yellow"});return}(async()=>{try{await P(e,h.key,"tui"),n({type:"toast",text:`killed ${h.key.agentId}/${h.key.channel}/${h.key.chatId}`,color:"green"})}catch(m){n({type:"toast",text:`kill failed: ${m?.message||m}`,color:"red"})}})();return}}),R(()=>{let l=new AbortController;u.current=l;let d=!1,h=async()=>{try{let[g,b,w]=await Promise.all([B(e,l.signal).catch(()=>[]),D(e,l.signal).catch(()=>[]),A(e,l.signal).catch(()=>[])]);if(d)return;n({type:"agents",data:g}),n({type:"processes",data:b}),n({type:"crons",data:w}),n({type:"tick"}),n({type:"connError",error:null})}catch(g){d||n({type:"connError",error:g?.message||String(g)})}};h();let m=setInterval(h,r);return()=>{d=!0,clearInterval(m),l.abort()}},[e.baseUrl,e.token,r]),R(()=>{let l=!1,d=new AbortController,h=new Map;return(async()=>{let m=500;for(;!l;){try{for await(let g of q({baseUrl:e.baseUrl,token:e.token,signal:d.signal})){let b=ae(g),w;if(g.event==="channel"&&typeof g.data?.channel=="string"){let S=h.get(g.data.channel)??{channel:g.data.channel,inbound:0,outbound:0,lastAt:0,lastPreview:""},C=S.inbound+(g.data.direction==="in"?1:0),x=S.outbound+(g.data.direction==="out"?1:0);w={channel:g.data.channel,inbound:C,outbound:x,lastAt:b.at,lastPreview:(g.data.textPreview||"").slice(0,60)},h.set(g.data.channel,w)}n({type:"event",row:b,channelTally:w}),m=500}}catch(g){if(l)return;n({type:"connError",error:`events: ${g?.message||g}`})}await new Promise(g=>setTimeout(g,m)),m=Math.min(m*2,1e4)}})(),()=>{l=!0,d.abort()}},[e.baseUrl,e.token]),c(i,{flexDirection:"column",width:"100%",children:[a(K,{conn:e,lastTick:t.lastTick,connError:t.connError,chat:t.chat}),c(i,{flexDirection:"row",flexGrow:1,children:[c(i,{flexDirection:"column",width:"50%",children:[a(v,{title:"AGENTS",focused:!t.chat.active&&t.focus==="agents",children:a(Z,{rows:t.agents,cursor:t.cursor.agents,focused:!t.chat.active&&t.focus==="agents",talkingTo:t.chat.active?t.chat.agentId:null})}),a(v,{title:"PROCESSES",focused:!t.chat.active&&t.focus==="processes",children:a(ee,{rows:t.processes,cursor:t.cursor.processes,focused:!t.chat.active&&t.focus==="processes"})})]}),t.chat.active?a(oe,{chat:t.chat,suggest:f,agents:t.agents}):c(i,{flexDirection:"column",width:"50%",children:[a(v,{title:"LIVE EVENTS",focused:t.focus==="events",children:a(ne,{rows:t.events,cursor:t.cursor.events,focused:t.focus==="events"})}),a(v,{title:t.bottomRight==="crons"?"CRONS / SCHEDULES":"CHANNELS",focused:!1,children:t.bottomRight==="crons"?a(te,{rows:t.crons}):a(re,{rows:Array.from(t.channels.values())})})]})]}),a(Q,{focus:t.focus,bottomRight:t.bottomRight,chat:t.chat,toast:t.toast})]})}function K({conn:e,lastTick:r,connError:t,chat:n}){let s=t?c(o,{color:"red",children:["\u25CF ",t]}):r===0?a(o,{color:"yellow",children:"\u25CF connecting\u2026"}):a(o,{color:"green",children:"\u25CF live"}),u=n.active?c(o,{color:"green",bold:!0,children:["CHAT @",n.agentId]}):a(o,{bold:!0,children:"agentx tui"});return c(i,{paddingX:1,justifyContent:"space-between",children:[a(i,{children:u}),a(o,{dimColor:!0,children:e.baseUrl}),a(i,{children:s})]})}function Q({focus:e,bottomRight:r,chat:t,toast:n}){let s=t.active?["[Enter] send","[Esc] exit chat","[Ctrl-L] new session"]:[`[Tab/a/p/e] focus (now: ${e})`,e==="agents"?"[Enter] chat":null,e==="processes"?"[k] kill":null,`[c] ${r==="crons"?"\u2192channels":"\u2192crons"}`,"[\u2191/\u2193] move","[q] quit"].filter(Boolean);return c(i,{paddingX:1,borderStyle:"single",borderTop:!0,borderBottom:!1,borderLeft:!1,borderRight:!1,justifyContent:"space-between",children:[a(o,{dimColor:!0,children:s.join(" \xB7 ")}),n?a(o,{color:n.color,children:n.text}):a(o,{children:" "})]})}function v({title:e,focused:r,children:t}){return c(i,{flexDirection:"column",width:"100%",borderStyle:r?"double":"single",borderColor:r?"cyan":void 0,paddingX:1,children:[c(o,{bold:!0,color:r?"cyan":"white",children:[e,r?" \u25CF":""]}),a(i,{flexDirection:"column",marginTop:1,children:t})]})}function I(e,r){return e&&r?{inverse:!0}:{}}function Z({rows:e,cursor:r,focused:t,talkingTo:n}){return e.length===0?a(o,{dimColor:!0,children:"no agents"}):a(i,{flexDirection:"column",children:e.slice(0,12).map((s,u)=>{let p=I(t,u===r),y=s.errors>0?"red":s.active>0?"yellow":"green",f=s.id===n;return c(i,{children:[a(o,{...p,color:y,children:"\u25CF"}),c(o,{...p,children:[" ",T(s.name,14)]}),c(o,{...p,children:[T(s.tier,6)," "]}),c(o,{...p,children:[s.active,"/",s.total]}),s.errors>0?c(o,{...p,color:"red",children:[" err=",s.errors]}):null,f?a(o,{color:"green",children:" \u2194 chatting"}):null]},s.id)})})}function ee({rows:e,cursor:r,focused:t}){if(e.length===0)return a(o,{dimColor:!0,children:"no live processes"});let n=Date.now();return a(i,{flexDirection:"column",children:e.slice(0,12).map((s,u)=>{let p=I(t,u===r),y=Math.max(0,Math.round((n-(s.lastTurnAt||s.spawnedAt))/1e3)),f=s.state==="dead"?"red":s.state==="warm-hot"?"green":"yellow";return c(i,{children:[a(o,{...p,color:f,children:T(s.state,10)}),a(o,{...p,children:T(s.key.agentId,12)}),a(o,{...p,children:T(s.key.channel,10)}),c(o,{...p,children:[s.turnCount,"t ",y,"s"]})]},`${s.key.agentId}-${s.key.channel}-${s.key.chatId}-${u}`)})})}function te({rows:e}){return e.length===0?a(o,{dimColor:!0,children:"no crons"}):a(i,{flexDirection:"column",children:e.slice(0,12).map(r=>{let t=r.enabled?r.consecutiveErrors>0?a(o,{color:"red",children:"err"}):a(o,{color:"green",children:"ok"}):a(o,{dimColor:!0,children:"off"}),n=r.nextRun?new Date(r.nextRun).toLocaleTimeString():"\u2014";return c(i,{children:[a(o,{children:T(r.id,16)}),a(o,{dimColor:!0,children:T(r.schedule,12)}),a(o,{children:T(n,10)}),a(i,{children:t})]},r.id)})})}function re({rows:e}){if(e.length===0)return a(o,{dimColor:!0,children:"(waiting for channel events\u2026)"});let r=[...e].sort((t,n)=>n.lastAt-t.lastAt);return a(i,{flexDirection:"column",children:r.slice(0,12).map(t=>c(i,{children:[a(o,{children:T(t.channel,12)}),c(o,{color:"cyan",children:["\u2190",T(String(t.inbound),4)]}),c(o,{color:"magenta",children:["\u2192",T(String(t.outbound),4)]}),a(o,{dimColor:!0,children:t.lastPreview})]},t.channel))})}function ne({rows:e,cursor:r,focused:t}){return e.length===0?a(o,{dimColor:!0,children:"(waiting for events\u2026)"}):a(i,{flexDirection:"column",children:e.slice(0,18).map((n,s)=>{let u=I(t,s===r);return c(i,{children:[a(o,{...u,dimColor:!0,children:new Date(n.at).toLocaleTimeString().padEnd(10)}),a(o,{...u,color:ce(n.kind),children:T(n.kind,8)}),a(o,{...u,children:n.line})]},`${n.at}-${s}`)})})}function oe({chat:e,suggest:r,agents:t}){let n=e.history.slice(-14),s=t.find(f=>f.id===e.agentId),u=H(s?.tier??"",s?.model),p=e.status==="sending"?[...e.history].reverse().find(f=>f.role==="agent"&&f.streaming):void 0,y=e.status==="sending"?a(O,{startedAt:p?.at??Date.now(),phase:p?.text?"responding":"thinking",indent:""}):e.error?c(o,{color:"red",children:["\u25CF ",e.error]}):a(o,{dimColor:!0,children:"\u25CF ready"});return c(i,{flexDirection:"column",width:"50%",borderStyle:"double",borderColor:"green",paddingX:1,children:[c(i,{justifyContent:"space-between",children:[c(o,{bold:!0,color:"green",children:["CHAT \xB7 @",e.agentId]}),a(i,{children:y})]}),c(o,{children:[c(o,{color:u.color,bold:!0,children:[u.glyph," ",u.label]}),s?.model?c(o,{dimColor:!0,children:[" ",j(s.model)]}):null,c(o,{dimColor:!0,children:[" \xB7 ",e.chatId]})]}),a(i,{flexDirection:"column",flexGrow:1,marginTop:1,children:n.length===0?a(o,{dimColor:!0,children:"(type a message and press Enter \u2014 Esc exits, Ctrl-L starts fresh)"}):n.map((f,l)=>a(se,{turn:f,agentId:e.agentId},`${f.at}-${l}`))}),r?c(o,{dimColor:!0,children:[a(o,{color:"cyan",children:"\u21B9"})," ",r.items.slice(0,5).map((f,l)=>l===0?a(o,{color:"cyan",children:f},l):c(o,{children:[" ",f]},l))]}):null,c(i,{children:[a(o,{color:"cyan",children:"you \u203A "}),a(o,{children:e.text}),a(o,{inverse:!0,children:" "})]})]})}function se({turn:e,agentId:r}){if(e.role==="you")return c(i,{flexDirection:"column",marginBottom:1,children:[a(o,{color:"cyan",children:"you"}),e.text.split(`
5
5
  `).map((s,u)=>c(o,{children:[" ",s]},u))]});if(e.role==="error")return c(i,{flexDirection:"column",marginBottom:1,children:[a(o,{color:"red",children:"error"}),c(o,{color:"red",children:[" ",e.text]})]});let t=e.elapsedMs!=null?` \xB7 ${(e.elapsedMs/1e3).toFixed(1)}s${e.outTokens!=null?`, ${e.outTokens} tok`:""}`:e.streaming?" \xB7 \u2026":"",n=F(e.text,58,{balance:e.streaming});return c(i,{flexDirection:"column",marginBottom:1,children:[c(o,{color:"green",children:["@",r??"agent",a(o,{dimColor:!0,children:t})]}),e.thinking?e.thinking.split(`
6
6
  `).filter(s=>s.trim()).slice(-2).map((s,u)=>c(o,{dimColor:!0,italic:!0,children:[" ",s]},`th${u}`)):null,(e.tools??[]).map((s,u)=>c(o,{color:s.error?"red":"green",children:[" \u25CF ",c(o,{bold:!s.error,dimColor:s.error,children:[s.name,s.arg?c(o,{dimColor:!0,children:["(",s.arg,")"]}):null,s.error?" failed":""]})]},`tool${u}`)),n.split(`
7
7
  `).slice(0,14).map((s,u)=>c(o,{children:[" ",s]},u))]})}function ae(e){let r=e.data??{},t=typeof r.at=="string"||typeof r.at=="number"?new Date(r.at).getTime():Date.now(),n="";switch(e.event){case"run":n=`${r.phase??""} ${r.workflowId??""} ${(r.runId??"").slice(0,8)} ${r.nodeId??""}`.trim();break;case"task":n=`${r.phase??""} ${r.workflowId??""} ${Array.isArray(r.assignedTo)?r.assignedTo.join(","):""} ${r.title?`"${r.title}"`:""}`.trim();break;case"signal":n=`${r.name??""} (${r.scope??""}) ${r.workflowId??""}`.trim();break;case"mesh":n=`${r.peer??""} ${r.healthy?"healthy":"lost"} ${r.delta??""}`.trim();break;case"channel":{n=`${r.direction==="in"?"\u2190":"\u2192"} ${r.channel??""}:${r.chatId??""} ${r.textPreview??""}`.trim();break}case"status":n=`node=${r.node??""} agents=${r.agents??0} active=${(r.active??[]).length}`;break;default:n=typeof r=="string"?r:JSON.stringify(r).slice(0,80)}return{at:Number.isFinite(t)?t:Date.now(),kind:e.event,line:n}}function ce(e){switch(e){case"run":return"cyan";case"task":return"magenta";case"signal":return"green";case"mesh":return"blue";case"channel":return"yellow";default:return"white"}}function T(e,r){let t=(e??"").toString();return t.length>=r?t.slice(0,r-1)+" ":t+" ".repeat(r-t.length)}export{be as App};
8
- //# sourceMappingURL=App-KE4SURSS.js.map
8
+ //# sourceMappingURL=App-TDUUFVDV.js.map
@@ -1,7 +1,7 @@
1
- import{a as Y,b as Z,c as _,d as ee,e as te,f as ne,g as re}from"./chunk-U2CKL755.js";import{b as Q,g as X}from"./chunk-OUZ7YVQZ.js";import"./chunk-P2ZYT5D6.js";import"./chunk-FIOB3MEX.js";import{useCallback as oe,useMemo as H,useRef as P,useState as k}from"react";import{Box as g,Text as t,useApp as he,useInput as xe,useStdout as Te}from"ink";import{randomUUID as se}from"crypto";var m={accent:"cyan",agent:"green",working:"magenta",error:"red",muted:"gray"},q="\u25C7 agentx",F="\u258C";import{jsx as c,jsxs as o}from"react/jsx-runtime";var ie="/help /agent <id> /agents /clear /who /exit",be=[{cmd:"/agent",desc:"switch the target agent (/agent <id>)"},{cmd:"/agents",desc:"list registered agents"},{cmd:"/clear",desc:"start a fresh session"},{cmd:"/who",desc:"show agent + chat id"},{cmd:"/help",desc:"list commands"},{cmd:"/exit",desc:"quit the chat"}];function Pe({conn:n,agentId:p,channel:f,chatId:a,agents:h}){let{exit:w}=he(),{stdout:O}=Te(),V=Math.max(40,Math.min((O?.columns||80)-4,100)),[z,U]=k([]),[$,S]=k(null),[T,le]=k(p),[A,ae]=k(h),[E,ue]=k(a),[y,x]=k(""),[J,de]=k(""),W=P([]),u=P(-1),M=P(null),R=P(null),v=$?.live??!1,j=H(()=>Z(y,A.map(s=>s.id),process.cwd()),[y,A]),N=H(()=>{let s=/^\/(\w*)$/.exec(y);if(!s)return null;let e=be.filter(r=>r.cmd.slice(1).startsWith(s[1].toLowerCase()));return e.length?e:null},[y]),b=s=>de(s),K=oe(s=>{let e=se().slice(0,8),r=Date.now(),i=new AbortController;R.current=i;let d={id:e,you:s,agentId:T,segs:[],live:!0,startedAt:r};S({...d});let L=()=>S({...d,segs:d.segs.map(C=>({...C}))});(async()=>{try{let C=await X(n,T,s,{channel:f,chatId:E,signal:i.signal,onText:l=>{let I=d.segs[d.segs.length-1];I&&I.type==="text"?I.content=(I.content??"")+l:d.segs.push({type:"text",content:l}),L()},onThinking:l=>{d.thinking=(d.thinking??"")+l,L()},onTool:l=>{l.status==="start"&&l.name?(d.segs.push({type:"tool",name:l.name,arg:l.arg}),L()):l.status==="result"&&l.error&&(d.segs.push({type:"tool",name:l.name??"tool",error:!0}),L())}});U(l=>[...l,{...d,live:!1,elapsedMs:Date.now()-r,outTokens:C.usage?.outputTokens,error:C.error}]),S(null)}catch(C){let l=i.signal.aborted||C?.name==="AbortError";U(I=>[...I,{...d,live:!1,elapsedMs:Date.now()-r,interrupted:l,error:l?void 0:C?.message||String(C)}]),S(null)}finally{R.current===i&&(R.current=null)}})()},[n,T,f,E]),me=oe(s=>{let e=s.trim();if(e){if(W.current.push(e),u.current=-1,e==="/exit"||e==="/quit"){w();return}if(e==="/help"){b(ie);return}if(e==="/who"){b(`@${T} \xB7 chatId=${E} \xB7 channel=${f}`);return}if(e==="/clear"){let r=`chat-cli:${se().slice(0,12)}`;ue(r),U([]),b(`fresh chatId=${r} (warm process dropped)`);return}if(e==="/agents"){Q(n).then(r=>{ae(r),b(r.map(i=>i.id===T?`[${i.id}]`:i.id).join(" "))}).catch(r=>b(`failed to list agents: ${r?.message||r}`));return}if(e.startsWith("/agent ")){let r=e.slice(7).replace(/^@/,"").trim();if(!r){b("usage: /agent <id>");return}if(!A.find(i=>i.id===r)){b(`unknown agent: @${r}`);return}le(r),b(`now talking to @${r}`);return}if(e.startsWith("/")){b(`unknown command \xB7 ${ie}`);return}K(e)}},[n,T,A,f,E,w,K]);xe((s,e)=>{if(e.ctrl&&s==="c"){w();return}if(e.escape){if(v&&R.current){R.current.abort();return}w();return}if(e.tab){if(N){x(N[0].cmd+" ");return}let i=_(y,M,A.map(d=>d.id),process.cwd());i!==null&&(x(i),u.current=-1);return}if(e.upArrow){let i=W.current;if(!i.length)return;u.current=u.current<0?i.length-1:Math.max(0,u.current-1),x(i[u.current]??"");return}if(e.downArrow){let i=W.current;if(u.current<0)return;if(u.current=u.current+1,u.current>=i.length){u.current=-1,x("");return}x(i[u.current]??"");return}if(e.backspace||e.delete){M.current=null,x(i=>i.slice(0,-1));return}if(e.ctrl||e.meta)return;let r=ee(s??"",e.return,y);switch(r.kind){case"paste":M.current=null,x(i=>i+r.text),u.current=-1;return;case"type":M.current=null,x(i=>i+r.text),u.current=-1;return;case"continue":x(r.buffer);return;case"submit":if(v)return;M.current=null,x(""),me(r.text);return;case"none":return}});let G=v?m.working:m.accent,ge=y.length?y.split(`
1
+ import{a as Y,b as Z,c as _,d as ee,e as te,f as ne,g as re}from"./chunk-U2CKL755.js";import{b as Q,g as X}from"./chunk-ZQSB6IX4.js";import"./chunk-XSFXAJDA.js";import"./chunk-QIJLFPWE.js";import{useCallback as oe,useMemo as H,useRef as P,useState as k}from"react";import{Box as g,Text as t,useApp as he,useInput as xe,useStdout as Te}from"ink";import{randomUUID as se}from"crypto";var m={accent:"cyan",agent:"green",working:"magenta",error:"red",muted:"gray"},q="\u25C7 agentx",F="\u258C";import{jsx as c,jsxs as o}from"react/jsx-runtime";var ie="/help /agent <id> /agents /clear /who /exit",be=[{cmd:"/agent",desc:"switch the target agent (/agent <id>)"},{cmd:"/agents",desc:"list registered agents"},{cmd:"/clear",desc:"start a fresh session"},{cmd:"/who",desc:"show agent + chat id"},{cmd:"/help",desc:"list commands"},{cmd:"/exit",desc:"quit the chat"}];function Pe({conn:n,agentId:p,channel:f,chatId:a,agents:h}){let{exit:w}=he(),{stdout:O}=Te(),V=Math.max(40,Math.min((O?.columns||80)-4,100)),[z,U]=k([]),[$,S]=k(null),[T,le]=k(p),[A,ae]=k(h),[E,ue]=k(a),[y,x]=k(""),[J,de]=k(""),W=P([]),u=P(-1),M=P(null),R=P(null),v=$?.live??!1,j=H(()=>Z(y,A.map(s=>s.id),process.cwd()),[y,A]),N=H(()=>{let s=/^\/(\w*)$/.exec(y);if(!s)return null;let e=be.filter(r=>r.cmd.slice(1).startsWith(s[1].toLowerCase()));return e.length?e:null},[y]),b=s=>de(s),K=oe(s=>{let e=se().slice(0,8),r=Date.now(),i=new AbortController;R.current=i;let d={id:e,you:s,agentId:T,segs:[],live:!0,startedAt:r};S({...d});let L=()=>S({...d,segs:d.segs.map(C=>({...C}))});(async()=>{try{let C=await X(n,T,s,{channel:f,chatId:E,signal:i.signal,onText:l=>{let I=d.segs[d.segs.length-1];I&&I.type==="text"?I.content=(I.content??"")+l:d.segs.push({type:"text",content:l}),L()},onThinking:l=>{d.thinking=(d.thinking??"")+l,L()},onTool:l=>{l.status==="start"&&l.name?(d.segs.push({type:"tool",name:l.name,arg:l.arg}),L()):l.status==="result"&&l.error&&(d.segs.push({type:"tool",name:l.name??"tool",error:!0}),L())}});U(l=>[...l,{...d,live:!1,elapsedMs:Date.now()-r,outTokens:C.usage?.outputTokens,error:C.error}]),S(null)}catch(C){let l=i.signal.aborted||C?.name==="AbortError";U(I=>[...I,{...d,live:!1,elapsedMs:Date.now()-r,interrupted:l,error:l?void 0:C?.message||String(C)}]),S(null)}finally{R.current===i&&(R.current=null)}})()},[n,T,f,E]),me=oe(s=>{let e=s.trim();if(e){if(W.current.push(e),u.current=-1,e==="/exit"||e==="/quit"){w();return}if(e==="/help"){b(ie);return}if(e==="/who"){b(`@${T} \xB7 chatId=${E} \xB7 channel=${f}`);return}if(e==="/clear"){let r=`chat-cli:${se().slice(0,12)}`;ue(r),U([]),b(`fresh chatId=${r} (warm process dropped)`);return}if(e==="/agents"){Q(n).then(r=>{ae(r),b(r.map(i=>i.id===T?`[${i.id}]`:i.id).join(" "))}).catch(r=>b(`failed to list agents: ${r?.message||r}`));return}if(e.startsWith("/agent ")){let r=e.slice(7).replace(/^@/,"").trim();if(!r){b("usage: /agent <id>");return}if(!A.find(i=>i.id===r)){b(`unknown agent: @${r}`);return}le(r),b(`now talking to @${r}`);return}if(e.startsWith("/")){b(`unknown command \xB7 ${ie}`);return}K(e)}},[n,T,A,f,E,w,K]);xe((s,e)=>{if(e.ctrl&&s==="c"){w();return}if(e.escape){if(v&&R.current){R.current.abort();return}w();return}if(e.tab){if(N){x(N[0].cmd+" ");return}let i=_(y,M,A.map(d=>d.id),process.cwd());i!==null&&(x(i),u.current=-1);return}if(e.upArrow){let i=W.current;if(!i.length)return;u.current=u.current<0?i.length-1:Math.max(0,u.current-1),x(i[u.current]??"");return}if(e.downArrow){let i=W.current;if(u.current<0)return;if(u.current=u.current+1,u.current>=i.length){u.current=-1,x("");return}x(i[u.current]??"");return}if(e.backspace||e.delete){M.current=null,x(i=>i.slice(0,-1));return}if(e.ctrl||e.meta)return;let r=ee(s??"",e.return,y);switch(r.kind){case"paste":M.current=null,x(i=>i+r.text),u.current=-1;return;case"type":M.current=null,x(i=>i+r.text),u.current=-1;return;case"continue":x(r.buffer);return;case"submit":if(v)return;M.current=null,x(""),me(r.text);return;case"none":return}});let G=v?m.working:m.accent,ge=y.length?y.split(`
2
2
  `):[""],B=A.find(s=>s.id===T),D=ne(B?.tier??"",B?.model),pe=O?.rows||24,fe=z.slice(-40);return o(g,{flexDirection:"column",height:pe,children:[o(g,{flexDirection:"column",flexGrow:1,justifyContent:"flex-end",overflow:"hidden",children:[z.length===0&&!$?o(g,{flexDirection:"column",children:[o(t,{children:[c(t,{color:m.accent,bold:!0,children:q}),c(t,{dimColor:!0,children:" \u2014 chat with "}),o(t,{color:m.accent,children:["@",T]}),c(t,{dimColor:!0,children:" via "}),o(t,{color:D.color,bold:!0,children:[D.glyph," ",D.label]}),B?.model?o(t,{dimColor:!0,children:[" (",B.model,")"]}):null]}),c(t,{dimColor:!0,children:"streaming \xB7 markdown \xB7 tools \xB7 type a message, or / for commands"})]}):null,fe.map(s=>c(ce,{turn:s,width:V},s.id)),$?c(ce,{turn:$,width:V}):null]}),N?c(g,{flexDirection:"column",marginTop:1,children:N.map((s,e)=>o(g,{children:[c(t,{color:e===0?m.accent:m.muted,bold:e===0,children:s.cmd.padEnd(10)}),c(t,{dimColor:!0,children:s.desc})]},s.cmd))}):j?o(g,{marginTop:1,children:[c(t,{color:m.accent,children:"\u21B9 "}),j.items.map((s,e)=>o(t,{color:e===0?m.accent:m.muted,children:[s,e<j.items.length-1?" ":""]},e))]}):J?c(g,{marginTop:1,children:c(t,{dimColor:!0,children:J})}):null,c(g,{borderStyle:"single",borderColor:G,borderLeft:!1,borderRight:!1,borderDimColor:!v,width:"100%",children:c(g,{flexDirection:"column",width:"100%",children:ge.map((s,e,r)=>o(g,{children:[c(t,{color:G,bold:!0,children:e===0?"\u203A ":" "}),c(t,{children:s}),e===r.length-1&&!v?c(t,{color:G,children:"\u258F"}):null]},e))})}),o(g,{justifyContent:"space-between",children:[o(t,{children:[c(t,{color:m.accent,bold:!0,children:q}),o(t,{dimColor:!0,children:[" \xB7 @",T," \xB7 "]}),o(t,{color:D.color,bold:!0,children:[D.glyph," ",D.label]}),B?.model?o(t,{dimColor:!0,children:[" ",re(B.model)]}):null]}),o(t,{dimColor:!0,children:["\u21B5 send / cmds @ mention esc ",v?"stop":"exit"]})]})]})}function ce({turn:n,width:p}){let f=H(()=>ye(n,p),[n,p]),a=n.segs.some(h=>h.type==="text"&&h.content);return o(g,{flexDirection:"column",marginBottom:1,children:[o(t,{color:m.accent,bold:!0,children:[F," you"]}),n.you.split(`
3
3
  `).map((h,w)=>o(t,{color:"white",children:[" ",h]},`u${w}`)),o(t,{color:m.agent,bold:!0,children:[F," ",n.agentId??"agent"]}),n.thinking?c(g,{flexDirection:"column",children:we(n.thinking,n.live?3:2).map((h,w)=>o(t,{dimColor:!0,italic:!0,children:[" ",h]},`th${w}`))}):null,f,n.live?c(te,{startedAt:n.startedAt,phase:a?"responding":"thinking",hint:"esc to interrupt"}):n.interrupted?o(t,{dimColor:!0,children:[" \u2298 interrupted \xB7 ",(n.elapsedMs/1e3).toFixed(1),"s"]}):n.error?o(t,{color:"red",children:[" \u2717 ",n.error]}):n.elapsedMs!=null?o(t,{dimColor:!0,children:[" \xB7 ",(n.elapsedMs/1e3).toFixed(1),"s",n.outTokens!=null?`, ${n.outTokens} tok`:""]}):null]})}function we(n,p){return n.split(`
4
4
  `).filter(a=>a.trim()).slice(-p)}function ye(n,p){let f=[];return n.segs.forEach((a,h)=>{a.type==="tool"?f.push(o(t,{color:a.error?"red":"green",children:[" ","\u25CF ",o(t,{bold:!a.error,dimColor:a.error,children:[a.name,a.arg?o(t,{dimColor:!0,children:["(",a.arg,")"]}):null,a.error?" failed":""]})]},h)):a.content&&f.push(c(t,{children:Ce(Y(a.content,p,{balance:n.live}))},h))}),f}function Ce(n){return n.split(`
5
5
  `).map(p=>p.length?" "+p:p).join(`
6
6
  `)}export{Pe as ChatApp};
7
- //# sourceMappingURL=ChatApp-NNHIKXO2.js.map
7
+ //# sourceMappingURL=ChatApp-IOWDXM3R.js.map
@@ -0,0 +1,2 @@
1
+ import{A as a,B as b,C as c}from"./chunk-2BRX2EMT.js";import"./chunk-SFQUP3BP.js";import"./chunk-QOYAX2FT.js";import"./chunk-SZJMS7K4.js";import"./chunk-7I7IEX4S.js";import"./chunk-VDMYBPYB.js";import"./chunk-DSYKYZMT.js";import"./chunk-QIJLFPWE.js";export{a as createAgentContext,b as generate,c as generateStream};
2
+ //# sourceMappingURL=agent-KRLAT3YJ.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}from"./chunk-3SCPRYJB.js";import"./chunk-F4HZTZHW.js";import"./chunk-FIOB3MEX.js";export{a as ARTICLE_FIELDS_SEAT,h as BACKFILLABLE,i as BACKFILL_ORDER,j as FIELD_SOURCES,g as IDENTITY_SLOTS,f as REQUIRED_FIELDS,b as TIERS,d as TIER_MEANING,c as TIER_RANK,n as articleFieldsState,q as fieldChecklistMarkdown,m as fieldQuestions,l as fieldsByTier,k as fieldsFor,e as isCritical,p as nextActions,o as reportFields,r as tierLadderMarkdown};
2
- //# sourceMappingURL=article-fields-L4D2BOGY.js.map
1
+ import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r}from"./chunk-2AXFYDWF.js";import"./chunk-72SZI2UW.js";import"./chunk-QIJLFPWE.js";export{a as ARTICLE_FIELDS_SEAT,h as BACKFILLABLE,i as BACKFILL_ORDER,j as FIELD_SOURCES,g as IDENTITY_SLOTS,f as REQUIRED_FIELDS,b as TIERS,d as TIER_MEANING,c as TIER_RANK,n as articleFieldsState,q as fieldChecklistMarkdown,m as fieldQuestions,l as fieldsByTier,k as fieldsFor,e as isCritical,p as nextActions,o as reportFields,r as tierLadderMarkdown};
2
+ //# sourceMappingURL=article-fields-PITN4NHA.js.map
@@ -1,3 +1,3 @@
1
- import{a as s,b as n,c as a,f as h}from"./chunk-F4HZTZHW.js";import"./chunk-FIOB3MEX.js";h();var b="article-quality",d={identityFirst:s("Does the article state what the subject is before recounting what happened to it?"),hasIdentifiers:s("Does the article contain a concrete identifier \u2014 a phone number, address, URL, path, account or handle?"),standsAlone:s("Could a reader who has never seen the source material act on this article without going back to it?"),completeness:a(["A log of events; the subject itself is barely described","Describes the subject loosely, but a reader would still have to ask basics","Covers the subject, with one or two facts a reader would expect and not find","A reader could act on this without asking anything further"],"How completely does this article describe its subject?")};function p(e){let t={none:"Nothing important is missing",purpose:"Does not say what the subject is for, or why it matters to us",identifiers:"Describes things by name where a concrete value was available",relationships:"Does not connect the subject to the projects or people around it","too-narrative":"Mostly a chronology of events rather than a description"};return(e==="person"||e==="place"||e==="project")&&(t["contact-details"]="No way to reach, locate or access the subject"),(e==="person"||e==="project")&&(t["role-or-org"]="Does not say what the subject's role is, or what it belongs to"),t}function y(e){return{...d,biggestGap:n(p(e),"What is most conspicuously missing from this article?")}}function w(e,t=12e3){let o=String(e.body??"").trim();return{title:e.title,type:e.type??null,tags:e.tags?.length?e.tags.join(", "):null,body:o.length>t?`${o.slice(0,t)}
1
+ import{a as s,b as n,c as a,f as h}from"./chunk-72SZI2UW.js";import"./chunk-QIJLFPWE.js";h();var b="article-quality",d={identityFirst:s("Does the article state what the subject is before recounting what happened to it?"),hasIdentifiers:s("Does the article contain a concrete identifier \u2014 a phone number, address, URL, path, account or handle?"),standsAlone:s("Could a reader who has never seen the source material act on this article without going back to it?"),completeness:a(["A log of events; the subject itself is barely described","Describes the subject loosely, but a reader would still have to ask basics","Covers the subject, with one or two facts a reader would expect and not find","A reader could act on this without asking anything further"],"How completely does this article describe its subject?")};function p(e){let t={none:"Nothing important is missing",purpose:"Does not say what the subject is for, or why it matters to us",identifiers:"Describes things by name where a concrete value was available",relationships:"Does not connect the subject to the projects or people around it","too-narrative":"Mostly a chronology of events rather than a description"};return(e==="person"||e==="place"||e==="project")&&(t["contact-details"]="No way to reach, locate or access the subject"),(e==="person"||e==="project")&&(t["role-or-org"]="Does not say what the subject's role is, or what it belongs to"),t}function y(e){return{...d,biggestGap:n(p(e),"What is most conspicuously missing from this article?")}}function w(e,t=12e3){let o=String(e.body??"").trim();return{title:e.title,type:e.type??null,tags:e.tags?.length?e.tags.join(", "):null,body:o.length>t?`${o.slice(0,t)}
2
2
  \u2026[truncated]`:o,truncated:o.length>t}}function f(e,t={}){let o=e.completeness.score,c=e.identityFirst.noul,l=e.hasIdentifiers.noul,r=e.standsAlone.noul,u=e.biggestGap.choice,i=t.minCompleteness??2;return{completeness:o,identityFirst:c,hasIdentifiers:l,standsAlone:r,biggestGap:u,adequate:o>=i&&r>=.5,needsRework:o<i||r<.5}}export{b as ARTICLE_QUALITY_SEAT,d as articleQualityQuestions,y as articleQualityQuestionsFor,w as articleQualityState,p as gapCriteria,f as gradeArticle};
3
- //# sourceMappingURL=article-quality-44ONVGLN.js.map
3
+ //# sourceMappingURL=article-quality-JFJMZWFQ.js.map
@@ -1,3 +1,3 @@
1
- import"./chunk-FIOB3MEX.js";function h(e,t,o,n){let r=[],s=e.frontmatter,f=e.instructions??"",l="PASS";if(s.references?.length)for(let i of s.references)m(i,t)||(l="FAILING",r.push(`references: "${i}" does not resolve in the registry`));if(s.delegatesTo?.length)for(let i of s.delegatesTo)n.has(i)||(l="FAILING",r.push(`delegatesTo: "${i}" has no installed SKILL.md`));k(f)&&(l!=="FAILING"&&(l="REVIEW"),r.push("body contains raw `python3 ~/scripts/...` inside a code block \u2014 delegate to the relevant skill instead"));let d=["deploy","ssh","email","gitlab","ops"],p=(s.category||"").toLowerCase(),I=(s.tags||[]).map(i=>i.toLowerCase());(d.includes(p)||I.some(i=>d.includes(i))||/\b(deploy|ssh|gitlab|hotmail|server|host)\b/i.test(s.description||""))&&(!s.references||s.references.length===0)&&(l==="PASS"&&(l="REVIEW"),r.push("infrastructure-flavored skill has no `references:` frontmatter \u2014 facts should be cited from the registry"));let c=f.match(/\b\d{1,3}(?:\.\d{1,3}){3}\b/g);if(c&&c.length>0){let i=new Set([...t.byId.values()].flatMap(a=>Object.values(a.fields).filter(g=>typeof g=="string"))),u=c.filter(a=>!i.has(a));u.length>0&&(l==="PASS"&&(l="REVIEW"),r.push(`body contains raw IP(s) not in the registry: ${[...new Set(u)].slice(0,3).join(", ")}`))}return{skill:e,name:s.name,verdict:l,reasons:r}}function S(e,t){let o=new Set;for(let r of e.recipes)for(let s of r.skills)o.add(s);let n=[];for(let r of o)t.has(r)||n.push({skill:null,name:r,verdict:"FAILING",reasons:["required by a recipe, but no SKILL.md is installed"]});return n}function A(e){let t=new Set(e.skills.map(n=>n.frontmatter.name));return[...e.skills.map(n=>h(n,e.references,e.recipes,t)),...S(e.recipes,t)]}function k(e){let t=!1;for(let o of e.split(`
1
+ import"./chunk-QIJLFPWE.js";function h(e,t,o,n){let r=[],s=e.frontmatter,f=e.instructions??"",l="PASS";if(s.references?.length)for(let i of s.references)m(i,t)||(l="FAILING",r.push(`references: "${i}" does not resolve in the registry`));if(s.delegatesTo?.length)for(let i of s.delegatesTo)n.has(i)||(l="FAILING",r.push(`delegatesTo: "${i}" has no installed SKILL.md`));k(f)&&(l!=="FAILING"&&(l="REVIEW"),r.push("body contains raw `python3 ~/scripts/...` inside a code block \u2014 delegate to the relevant skill instead"));let d=["deploy","ssh","email","gitlab","ops"],p=(s.category||"").toLowerCase(),I=(s.tags||[]).map(i=>i.toLowerCase());(d.includes(p)||I.some(i=>d.includes(i))||/\b(deploy|ssh|gitlab|hotmail|server|host)\b/i.test(s.description||""))&&(!s.references||s.references.length===0)&&(l==="PASS"&&(l="REVIEW"),r.push("infrastructure-flavored skill has no `references:` frontmatter \u2014 facts should be cited from the registry"));let c=f.match(/\b\d{1,3}(?:\.\d{1,3}){3}\b/g);if(c&&c.length>0){let i=new Set([...t.byId.values()].flatMap(a=>Object.values(a.fields).filter(g=>typeof g=="string"))),u=c.filter(a=>!i.has(a));u.length>0&&(l==="PASS"&&(l="REVIEW"),r.push(`body contains raw IP(s) not in the registry: ${[...new Set(u)].slice(0,3).join(", ")}`))}return{skill:e,name:s.name,verdict:l,reasons:r}}function S(e,t){let o=new Set;for(let r of e.recipes)for(let s of r.skills)o.add(s);let n=[];for(let r of o)t.has(r)||n.push({skill:null,name:r,verdict:"FAILING",reasons:["required by a recipe, but no SKILL.md is installed"]});return n}function A(e){let t=new Set(e.skills.map(n=>n.frontmatter.name));return[...e.skills.map(n=>h(n,e.references,e.recipes,t)),...S(e.recipes,t)]}function k(e){let t=!1;for(let o of e.split(`
2
2
  `)){if(/^\s*```/.test(o)){t=!t;continue}if(t&&/python3\s+~\/scripts\//.test(o))return!0}return!1}function m(e,t){if(e.endsWith(".*")){let o=e.slice(0,-2);for(let n of t.byId.keys())if(n===o||n.startsWith(`${o}.`))return!0;return!1}return t.byId.has(e)}export{A as auditAll,S as auditMissingSkills,h as auditSkill};
3
- //# sourceMappingURL=audit-4245CX6P.js.map
3
+ //# sourceMappingURL=audit-CMJ2TZ3K.js.map
@@ -1,6 +1,6 @@
1
- import{g as d,h as u,i as g}from"./chunk-3SCPRYJB.js";import"./chunk-F4HZTZHW.js";import"./chunk-FIOB3MEX.js";function h(c,f){let i=[];for(let n of f){let t=c.fields[n];t?.value?.trim()&&i.push(`${t.value} (${n}, via ${t.source})`)}return i.length>0?i.join("; "):null}var p="## Identity";function E(c,f,i){let n=d[f];if(!n)return null;let t=c.split(`
1
+ import{g as d,h as u,i as g}from"./chunk-2AXFYDWF.js";import"./chunk-72SZI2UW.js";import"./chunk-QIJLFPWE.js";function h(c,f){let i=[];for(let n of f){let t=c.fields[n];t?.value?.trim()&&i.push(`${t.value} (${n}, via ${t.source})`)}return i.length>0?i.join("; "):null}var p="## Identity";function E(c,f,i){let n=d[f];if(!n)return null;let t=c.split(`
2
2
  `),r=`- **${n.heading}:** ${i}`,l=t.findIndex(e=>e.trim().toLowerCase()===p.toLowerCase()),o=t.length;if(l>=0){for(let e=l+1;e<t.length;e++)if(/^##\s/.test(t[e])){o=e;break}}if(l>=0){for(let e=l+1;e<o;e++){let a=t[e].match(/^\s*-\s*\*\*([^*]+)\*\*\s*:?/);if(!(!a||!n.match.test(a[1])))return t[e].includes(i)?null:(t[e]=r,{content:t.join(`
3
3
  `),replaced:!0})}return t.splice(o,0,r),{content:t.join(`
4
4
  `),replaced:!1}}let s=t.length;for(let e=0;e<t.length;e++)if(/^##\s/.test(t[e])){s=e;break}return t.splice(s,0,p,"",r,""),{content:t.join(`
5
5
  `),replaced:!1}}function I(c,f,i){let n=c,t=[];for(let r of g){if(!i.includes(r))continue;let l=u[r],o=h(f,l.from);if(!o)continue;let s=E(n,r,o);s&&(n=s.content,t.push({field:r,heading:l.heading,value:o,replaced:s.replaced}))}return{content:n,edits:t}}export{I as backfillArticle,E as patchIdentityField,h as renderValue};
6
- //# sourceMappingURL=backfill-MTD2B62I.js.map
6
+ //# sourceMappingURL=backfill-7TCF4SHG.js.map