@iowarp/clio-coder 0.4.2 → 0.4.4

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 (523) hide show
  1. package/CHANGELOG.md +98 -0
  2. package/CONTRIBUTING.md +86 -19
  3. package/README.md +35 -6
  4. package/dist/{acp-TMDQZDIG.js → acp-WNAYYF4F.js} +12 -13
  5. package/dist/{agents-5N5NG3XG.js → agents-3OKXHLOI.js} +60 -57
  6. package/dist/assets/codewiki.json +1 -1
  7. package/dist/{auth-Z5CCBXKQ.js → auth-VKNNMGPU.js} +21 -19
  8. package/dist/{builtins-K6TNDT24.js → builtins-WGALA46I.js} +9 -4
  9. package/dist/{chunk-XE3PCIXH.js → chunk-23L32XTI.js} +12 -9
  10. package/dist/{chunk-I64IFBLB.js → chunk-25QBEXRS.js} +18 -11
  11. package/dist/{chunk-CDNVLKUX.js → chunk-26QSH3EJ.js} +13 -7
  12. package/dist/{chunk-QQLGQY2A.js → chunk-2ASED4PZ.js} +22 -22
  13. package/dist/{chunk-MCEPRMZW.js → chunk-2CU2H6KE.js} +2 -2
  14. package/dist/chunk-2DSOYNFC.js +108 -0
  15. package/dist/{chunk-72GZI5EV.js → chunk-2JH2WHGE.js} +2 -2
  16. package/dist/{chunk-I66EAJFY.js → chunk-2WZ546HR.js} +267 -232
  17. package/dist/{chunk-O3YUNJZ2.js → chunk-2ZSONWVL.js} +82 -25
  18. package/dist/{chunk-2NHR3NAY.js → chunk-36CT5VVL.js} +331 -42
  19. package/dist/{chunk-2X4RYJTJ.js → chunk-3GY4F45V.js} +3 -3
  20. package/dist/{chunk-ZW55JB7N.js → chunk-3ODX73FK.js} +4 -6
  21. package/dist/{chunk-PBP4B7XR.js → chunk-3UNOLWNZ.js} +3 -3
  22. package/dist/{chunk-4JDLP6ZS.js → chunk-3UUXNFEX.js} +14 -10
  23. package/dist/{chunk-RKSR6VSF.js → chunk-4IUZQIJ3.js} +29 -1
  24. package/dist/{chunk-ZW4HH5JJ.js → chunk-4M6Z5QVF.js} +6 -6
  25. package/dist/{chunk-K6BSR66V.js → chunk-4NSRCOYP.js} +4 -1
  26. package/dist/{chunk-M2DAX4F6.js → chunk-4WR7VSYB.js} +2 -2
  27. package/dist/{chunk-FSP7CMNU.js → chunk-54X7T7DK.js} +61 -6
  28. package/dist/{chunk-54ODD65L.js → chunk-5636DCO5.js} +4 -4
  29. package/dist/chunk-57XXR6DR.js +3763 -0
  30. package/dist/{chunk-3KIPBMUA.js → chunk-5ICU3EUH.js} +2 -2
  31. package/dist/{chunk-77QIVUZB.js → chunk-5MEZN6CB.js} +4 -4
  32. package/dist/{chunk-O42A54GG.js → chunk-5OIVVPHF.js} +2 -2
  33. package/dist/{chunk-YJISEZKC.js → chunk-5TUB6SLS.js} +6 -6
  34. package/dist/{chunk-IMXMHHMQ.js → chunk-6OSVSQL5.js} +341 -57
  35. package/dist/{chunk-Q4XWMHX6.js → chunk-6PAZTBPA.js} +14 -2
  36. package/dist/{chunk-FVDGR2ZL.js → chunk-6Q3CYFD3.js} +112 -39
  37. package/dist/{chunk-IDNA72AH.js → chunk-6QOTUPRG.js} +155 -36
  38. package/dist/{chunk-X7IARSHT.js → chunk-6UINWWS6.js} +16 -10
  39. package/dist/{chunk-CYZW7JHJ.js → chunk-72YIHOZQ.js} +9 -9
  40. package/dist/{chunk-IKSLQ4XV.js → chunk-75W7L2E2.js} +752 -861
  41. package/dist/{chunk-CRFOIAX3.js → chunk-7UGL4MB5.js} +6 -6
  42. package/dist/{chunk-HIICAHCJ.js → chunk-AUPNRN7C.js} +2 -2
  43. package/dist/{chunk-7BHIY2MW.js → chunk-BJVFZO5U.js} +8 -50
  44. package/dist/{chunk-B74PXLU7.js → chunk-CUSRQKPU.js} +65 -3
  45. package/dist/chunk-DQOVN6KV.js +386 -0
  46. package/dist/{chunk-E7GT7O5N.js → chunk-DT3LWJOB.js} +7 -4
  47. package/dist/chunk-DXKJURES.js +671 -0
  48. package/dist/{chunk-JBCS7CRR.js → chunk-EL24TAU4.js} +10 -10
  49. package/dist/{chunk-TPEQIQIE.js → chunk-ELWDPP3Y.js} +8 -8
  50. package/dist/{chunk-NDINPTJ4.js → chunk-ELZVTCGV.js} +5 -4
  51. package/dist/chunk-EXLD33WO.js +381 -0
  52. package/dist/chunk-FEAXX7B6.js +101 -0
  53. package/dist/{chunk-RLYRBIYQ.js → chunk-FFUPXJC4.js} +90 -331
  54. package/dist/{chunk-5PFYMY2V.js → chunk-FTMGRKEF.js} +2 -2
  55. package/dist/{chunk-34BHNEE3.js → chunk-GHS5EBTQ.js} +58 -7
  56. package/dist/{chunk-DYHAXKHD.js → chunk-GWZNEVM2.js} +12 -8
  57. package/dist/chunk-GX5WYQO4.js +59 -0
  58. package/dist/chunk-GYV6VZOC.js +26 -0
  59. package/dist/{chunk-MQXIVJ35.js → chunk-HAXOFFRH.js} +5 -5
  60. package/dist/chunk-I2DWJ4GM.js +390 -0
  61. package/dist/{chunk-TXOTCRLG.js → chunk-I5FWO7L5.js} +5 -5
  62. package/dist/{chunk-WNP7O5WZ.js → chunk-ID64D7PE.js} +4 -4
  63. package/dist/{chunk-XQRY4DTA.js → chunk-IGLP3ODT.js} +10 -10
  64. package/dist/chunk-IRXAATOX.js +539 -0
  65. package/dist/chunk-IXIY2H4R.js +44 -0
  66. package/dist/{chunk-SSEYRH53.js → chunk-IZXGRF7P.js} +92 -147
  67. package/dist/{chunk-5TSRNF4G.js → chunk-JCI2ROMZ.js} +164 -6
  68. package/dist/{chunk-JWJGP5DQ.js → chunk-JEIYHLOR.js} +7 -7
  69. package/dist/{chunk-F2I26BDK.js → chunk-JQLNNIKT.js} +4 -4
  70. package/dist/{chunk-BYMNWQ7O.js → chunk-JSD46VO2.js} +315 -63
  71. package/dist/{chunk-AK5XEFVZ.js → chunk-JT2RFCC5.js} +64 -14
  72. package/dist/{chunk-MCMZMDAC.js → chunk-K6T2ZAMZ.js} +168 -6
  73. package/dist/{chunk-PGF63K6I.js → chunk-KFV5L5SK.js} +73 -4
  74. package/dist/{chunk-IHXBNWMM.js → chunk-KXDSS5WJ.js} +7 -3
  75. package/dist/{chunk-PJX3WQUQ.js → chunk-LLXSDWXS.js} +3 -3
  76. package/dist/{chunk-DZAW46HP.js → chunk-LTIKRKFL.js} +3 -3
  77. package/dist/{chunk-DZEK6CJN.js → chunk-N56KALIC.js} +21 -21
  78. package/dist/{chunk-B7HM5Z7T.js → chunk-NAI6ZFCY.js} +9 -5
  79. package/dist/{chunk-I66ZTYNP.js → chunk-NRO2BJRH.js} +2656 -2213
  80. package/dist/{chunk-ZGNYYXQ6.js → chunk-NXIMQY5W.js} +3 -3
  81. package/dist/{chunk-IKOZFYBN.js → chunk-NXYCB2VD.js} +149 -106
  82. package/dist/{chunk-CWVRRIEI.js → chunk-NZMNUPZZ.js} +2 -2
  83. package/dist/{chunk-462T4EGZ.js → chunk-O5CVSAG5.js} +2 -2
  84. package/dist/chunk-ODGTEFFI.js +50 -0
  85. package/dist/{chunk-3F7VUY77.js → chunk-OEJSLEPW.js} +2 -2
  86. package/dist/{chunk-KKOJXO6R.js → chunk-OMQNJVKW.js} +4 -2
  87. package/dist/{chunk-5KW52TEP.js → chunk-Q4WO54TA.js} +132 -77
  88. package/dist/{chunk-W6NIE6OW.js → chunk-QUFRYSWI.js} +13 -7
  89. package/dist/{chunk-42FMPA75.js → chunk-QZWQA4DE.js} +2 -2
  90. package/dist/chunk-R6Q67RJH.js +134 -0
  91. package/dist/{chunk-W4YEMFBX.js → chunk-RAY4OVGZ.js} +3 -3
  92. package/dist/{chunk-ZNT2M6TG.js → chunk-RQCKCSRL.js} +17 -17
  93. package/dist/{chunk-LJID3DYZ.js → chunk-RXTN6AKH.js} +3 -3
  94. package/dist/{chunk-P75RZCJW.js → chunk-RZDWV63N.js} +3 -3
  95. package/dist/{chunk-UH632ZYL.js → chunk-S6PYF2XF.js} +2 -2
  96. package/dist/{chunk-HJWWJ6IL.js → chunk-TOIVGRUX.js} +17 -5
  97. package/dist/{chunk-HLAFFSEK.js → chunk-TQAHXW6Y.js} +2 -2
  98. package/dist/{chunk-JIEGK6UF.js → chunk-U6TMQNSI.js} +48 -4
  99. package/dist/{chunk-2HFQNRV3.js → chunk-UEPWCCTY.js} +12 -12
  100. package/dist/chunk-UOIZ7DA4.js +41 -0
  101. package/dist/{chunk-UH347SHR.js → chunk-USR47QNF.js} +11 -11
  102. package/dist/{chunk-AZ4WMN4W.js → chunk-V6HJFQZE.js} +2 -2
  103. package/dist/chunk-V76WTFTW.js +318 -0
  104. package/dist/{chunk-NMJXSHBJ.js → chunk-W54I7H25.js} +2 -2
  105. package/dist/{chunk-KPXDY6QF.js → chunk-XRZT5WY5.js} +2 -2
  106. package/dist/{chunk-UBRFI4HS.js → chunk-XULDXHTN.js} +142 -50
  107. package/dist/chunk-XXYSBZIQ.js +283 -0
  108. package/dist/{chunk-HKMD33FO.js → chunk-Y55JBDO5.js} +405 -122
  109. package/dist/{chunk-XOXV5GKE.js → chunk-YD5GIKET.js} +17 -8
  110. package/dist/{chunk-XGDPUNND.js → chunk-YECAMM3D.js} +2 -2
  111. package/dist/{chunk-BO7Y52RY.js → chunk-YNFKXPEC.js} +7 -7
  112. package/dist/{chunk-VXMFAE2W.js → chunk-YPC6ZR5L.js} +19 -6
  113. package/dist/{chunk-M2WXEHER.js → chunk-ZA4VCIGV.js} +2 -2
  114. package/dist/cli/index.js +42 -40
  115. package/dist/{clio-7VB377CC.js → clio-QLICPCF5.js} +7 -7
  116. package/dist/{code-nav-YVLCYA7V.js → code-nav-IJR2DBPR.js} +9 -9
  117. package/dist/{components-UBWCQSRW.js → components-2TGAI2RC.js} +5 -6
  118. package/dist/{config-4HVOS65E.js → config-IUA6OYNS.js} +88 -81
  119. package/dist/{configure-PIWO7B24.js → configure-VEPX4NMX.js} +26 -25
  120. package/dist/{context-KQYIWPWT.js → context-2DKHWH2T.js} +60 -45
  121. package/dist/{context-IYEHL3WQ.js → context-4MPR7WKB.js} +78 -69
  122. package/dist/{context-N6ZE3LGJ.js → context-BOYF5EJM.js} +15 -11
  123. package/dist/{context-clear-G4OGZJDS.js → context-clear-S4ZJCQUX.js} +73 -65
  124. package/dist/context-map-COB37XXN.js +505 -0
  125. package/dist/{context-working-set-BWLF6LJP.js → context-working-set-3I3FYX6Y.js} +18 -17
  126. package/dist/detail-A7JAVSIG.js +98 -0
  127. package/dist/{dispatch-runner-2QQAITS3.js → dispatch-runner-RJ5I2F2O.js} +99 -75
  128. package/dist/{docs-PD3EXDKU.js → docs-SPOV3BAN.js} +3 -5
  129. package/dist/{doctor-LHBD36VU.js → doctor-DKICC2SN.js} +71 -48
  130. package/dist/{eval-C45FYRJ6.js → eval-OQOQUDHK.js} +308 -146
  131. package/dist/{eval-inventory-6DEJPLBF.js → eval-inventory-Y6QRFOH5.js} +4 -4
  132. package/dist/{evidence-6SHONYAF.js → evidence-4DQ25GUQ.js} +79 -175
  133. package/dist/evidence-4F5USFKH.js +208 -0
  134. package/dist/{evolve-KRKMV72X.js → evolve-GSS52E5J.js} +71 -67
  135. package/dist/{extensions-KPZ2UHBB.js → extensions-G7MFLYHT.js} +8 -9
  136. package/dist/{fleet-IVTCKDHT.js → fleet-Q37YHHAQ.js} +126 -118
  137. package/dist/{fleet-commands-EDWL3IT7.js → fleet-commands-G7E4N7SM.js} +16 -13
  138. package/dist/{fleet-decisions-YP3YEFGK.js → fleet-decisions-O7M6QBA2.js} +9 -8
  139. package/dist/{fleet-graph-ZFWKHY2M.js → fleet-graph-TOUBW6OW.js} +21 -20
  140. package/dist/{fleet-inspect-FVUNCBML.js → fleet-inspect-SW33JJNI.js} +65 -60
  141. package/dist/{fleet-preflight-UN5XED4R.js → fleet-preflight-CV2655TW.js} +4 -5
  142. package/dist/{fleet-validate-XOWC4HSX.js → fleet-validate-KESZX2YH.js} +25 -24
  143. package/dist/{fleet-verify-UN3SODEL.js → fleet-verify-UQPMTVE3.js} +66 -61
  144. package/dist/{fleet-view-TWHJKCN6.js → fleet-view-MN2VG4MR.js} +65 -60
  145. package/dist/{init-T2QORQ3Y.js → init-PXEXQSBF.js} +90 -82
  146. package/dist/{interop-IN5I2A66.js → interop-ZG5T62U3.js} +12 -13
  147. package/dist/inventory-C26CFDRR.js +101 -0
  148. package/dist/{library-LSCATDLZ.js → library-B2W4N74O.js} +29 -29
  149. package/dist/{memory-HYOKAGGJ.js → memory-YCANYS5A.js} +73 -69
  150. package/dist/{models-2GPMFYCM.js → models-GERTU3YI.js} +51 -47
  151. package/dist/{monitor-E4ASVUJH.js → monitor-CPNIUULB.js} +74 -67
  152. package/dist/{orchestrator-DDMPR3PY.js → orchestrator-J4BSH4WQ.js} +1288 -1606
  153. package/dist/{panes-E3RUXOW5.js → panes-BOHAEGYC.js} +4 -4
  154. package/dist/{panes-IXKLOKA2.js → panes-NXSLDQZ2.js} +10 -11
  155. package/dist/{paths-L7LGY6RN.js → paths-VSUWNC22.js} +6 -7
  156. package/dist/reset-TNWTB5LU.js +343 -0
  157. package/dist/{resources-OTRSN34L.js → resources-4PXNMD5G.js} +29 -22
  158. package/dist/{run-5DEYH5QK.js → run-D6XJ34CN.js} +132 -132
  159. package/dist/{share-IHWTLO3M.js → share-2NWMJJEE.js} +27 -27
  160. package/dist/{skills-IYMXMKW4.js → skills-KR7WON5G.js} +40 -33
  161. package/dist/{skills-eval-DROHSJAR.js → skills-eval-O2ZNOLDS.js} +81 -77
  162. package/dist/{skills-inventory-D7X4L4ZX.js → skills-inventory-ZZOUBK7O.js} +23 -22
  163. package/dist/{slash-commands-QBM7UZ3B.js → slash-commands-ZXPJD64J.js} +47 -37
  164. package/dist/{steer-Z5DO23FJ.js → steer-XA25PSCS.js} +4 -4
  165. package/dist/{support-U7QOWY26.js → support-7EMVWYG2.js} +6 -6
  166. package/dist/{targets-P2FUC4IL.js → targets-OMH2XCSN.js} +50 -49
  167. package/dist/tasks-IPAGMEIX.js +36 -0
  168. package/dist/{terminal-lease-YREJ3JX2.js → terminal-lease-C2J3JYRE.js} +4 -4
  169. package/dist/{tools-5B7RO6MV.js → tools-EFFEAIDP.js} +8 -9
  170. package/dist/{trace-YMGMUM6A.js → trace-FXMXUZUF.js} +7 -7
  171. package/dist/uninstall-HALS6BLF.js +407 -0
  172. package/dist/upgrade-MS72RJEP.js +306 -0
  173. package/dist/{usage-ME5MPXGX.js → usage-NHG6MCJM.js} +162 -108
  174. package/dist/{verifiers-BVZ7IWOO.js → verifiers-7AUNVXDY.js} +155 -22
  175. package/dist/{verify-5K7ZKQFC.js → verify-FWYGPKMR.js} +14 -12
  176. package/dist/{web-fetch-MPARV2K7.js → web-fetch-V4FKSDAV.js} +4 -4
  177. package/dist/{wiki-generate-F5W5QTYY.js → wiki-generate-743CIGJW.js} +99 -90
  178. package/dist/{with-panes-BYOJCLAM.js → with-panes-BDQEWBRT.js} +10 -10
  179. package/dist/worker/entry.js +72 -68
  180. package/docs/README.md +3 -2
  181. package/docs/architecture/acp.md +17 -0
  182. package/docs/architecture/artifact-placement.md +1 -0
  183. package/docs/architecture/artifact-versions.md +2 -2
  184. package/docs/architecture/context-engine.md +4 -0
  185. package/docs/architecture/dispatch-typed-intent.md +1 -1
  186. package/docs/architecture/evidence-and-memory.md +1 -1
  187. package/docs/architecture/middleware-and-components.md +1 -1
  188. package/docs/architecture/model-catalog.md +21 -10
  189. package/docs/architecture/observability.md +19 -2
  190. package/docs/architecture/prompt-envelope-and-tools.md +17 -5
  191. package/docs/architecture/provider-adapter-cookbook.md +63 -0
  192. package/docs/architecture/safety-model.md +25 -22
  193. package/docs/architecture/tui-design.md +1 -1
  194. package/docs/guide/built-in-agents.md +25 -11
  195. package/docs/guide/commands-and-modes.md +18 -3
  196. package/docs/guide/configuration-and-targets.md +100 -10
  197. package/docs/guide/configuration-reference.md +17 -7
  198. package/docs/guide/environment-variables.md +4 -2
  199. package/docs/guide/installation-and-lifecycle.md +37 -4
  200. package/docs/guide/proactive-memory.md +66 -55
  201. package/docs/guide/skills-marketplace.md +18 -0
  202. package/docs/guide/tool-usage.md +78 -3
  203. package/docs/history/config-knobs-audit.md +2 -2
  204. package/docs/process/development-pipeline.md +40 -2
  205. package/docs/process/eval-runner.md +67 -3
  206. package/docs/process/git-commit-provenance.md +15 -0
  207. package/docs/process/release-cut-checklist.md +207 -0
  208. package/docs/process/scientific-validation.md +18 -17
  209. package/evals/behavioral-machinery-support.ts +1 -0
  210. package/evals/behavioral-machinery.yaml +1 -1
  211. package/evals/behavioral-model.yaml +3 -2
  212. package/package.json +2 -2
  213. package/skills/README.md +7 -5
  214. package/skills/coding/ast-grep/SKILL.md +101 -30
  215. package/skills/coding/ast-grep/evals.md +26 -0
  216. package/skills/coding/coding-standards/SKILL.md +47 -2
  217. package/skills/coding/coding-standards/evals.md +23 -0
  218. package/skills/coding/prototype/SKILL.md +87 -28
  219. package/skills/coding/prototype/evals.md +19 -0
  220. package/skills/coding/tdd/SKILL.md +80 -53
  221. package/skills/coding/tdd/evals.md +20 -0
  222. package/skills/context/context-handoff/SKILL.md +43 -2
  223. package/skills/context/context-handoff/evals.md +44 -0
  224. package/skills/context/context-prime/SKILL.md +45 -15
  225. package/skills/context/context-prime/evals.md +45 -0
  226. package/skills/git/branch-closeout/SKILL.md +132 -0
  227. package/skills/git/branch-closeout/evals.md +133 -0
  228. package/skills/git/branch-closeout/references/closeout-checklist.md +81 -0
  229. package/skills/git/file-ticket/SKILL.md +77 -63
  230. package/skills/git/file-ticket/assets/issue-template.md +22 -0
  231. package/skills/git/file-ticket/evals.md +31 -26
  232. package/skills/git/file-ticket/references/issue-discovery.md +49 -0
  233. package/skills/git/fix-issue/SKILL.md +87 -64
  234. package/skills/git/fix-issue/evals.md +35 -31
  235. package/skills/git/fix-issue/references/diagnosis-and-rca.md +46 -0
  236. package/skills/git/resolve-merge-conflicts/SKILL.md +100 -51
  237. package/skills/git/resolve-merge-conflicts/evals.md +52 -25
  238. package/skills/git/resolve-merge-conflicts/references/conflict-matrix.md +126 -0
  239. package/skills/git/ship/SKILL.md +103 -67
  240. package/skills/git/ship/assets/pr-template.md +21 -0
  241. package/skills/git/ship/evals.md +44 -28
  242. package/skills/git/ship/references/remote-and-branch-policy.md +62 -0
  243. package/skills/git/worktree-create/SKILL.md +80 -50
  244. package/skills/git/worktree-create/evals.md +40 -33
  245. package/skills/git/worktree-create/references/worktree-setup.md +62 -66
  246. package/skills/git/worktree-merge/SKILL.md +112 -65
  247. package/skills/git/worktree-merge/evals.md +42 -34
  248. package/skills/git/worktree-merge/references/merge-strategies.md +52 -0
  249. package/skills/planning/archify/SKILL.md +196 -0
  250. package/skills/planning/archify/evals.md +65 -0
  251. package/skills/planning/architecture/SKILL.md +61 -12
  252. package/skills/planning/architecture/evals.md +65 -0
  253. package/skills/planning/backlog/SKILL.md +130 -14
  254. package/skills/planning/backlog/evals.md +142 -0
  255. package/skills/planning/prd/SKILL.md +47 -6
  256. package/skills/planning/prd/evals.md +54 -0
  257. package/skills/planning/product-intent/SKILL.md +57 -2
  258. package/skills/planning/product-intent/evals.md +70 -0
  259. package/skills/planning/tech-spec/SKILL.md +53 -2
  260. package/skills/planning/tech-spec/evals.md +73 -0
  261. package/skills/registry.yaml +58 -50
  262. package/skills/remote.yaml +13 -0
  263. package/skills/research/arxiv-literature/SKILL.md +76 -18
  264. package/skills/research/arxiv-literature/evals.md +50 -0
  265. package/skills/research/experiment-protocol/SKILL.md +20 -1
  266. package/skills/research/experiment-protocol/evals.md +23 -0
  267. package/skills/research/scientific-debugging/SKILL.md +24 -1
  268. package/skills/research/scientific-debugging/evals.md +18 -0
  269. package/skills/research/scientific-modernization/SKILL.md +26 -1
  270. package/skills/research/scientific-modernization/evals.md +27 -0
  271. package/skills/skill-marketplace.json +63 -28
  272. package/skills/workflow/cut-it/SKILL.md +64 -5
  273. package/skills/workflow/cut-it/evals.md +101 -0
  274. package/skills/workflow/design-council/SKILL.md +112 -27
  275. package/skills/workflow/design-council/evals.md +161 -0
  276. package/skills/workflow/grill-me/SKILL.md +85 -10
  277. package/skills/workflow/grill-me/evals.md +153 -0
  278. package/skills/workflow/workflow-distiller/SKILL.md +76 -17
  279. package/skills/workflow/workflow-distiller/evals.md +118 -0
  280. package/src/cli/args.ts +0 -8
  281. package/src/cli/configure-interop.ts +105 -13
  282. package/src/cli/configure-oauth.ts +57 -0
  283. package/src/cli/configure-onboarding.ts +980 -0
  284. package/src/cli/configure-target.ts +594 -0
  285. package/src/cli/configure.ts +1084 -529
  286. package/src/cli/context-map.ts +114 -0
  287. package/src/cli/context.ts +4 -0
  288. package/src/cli/doctor-state-size.ts +1 -12
  289. package/src/cli/doctor-validation-contract.ts +28 -0
  290. package/src/cli/doctor.ts +5 -0
  291. package/src/cli/evidence-detail.ts +1 -75
  292. package/src/cli/evidence-inventory.ts +1 -167
  293. package/src/cli/index.ts +3 -0
  294. package/src/cli/lifecycle-presenter.ts +436 -0
  295. package/src/cli/models.ts +10 -2
  296. package/src/cli/modes/print.ts +5 -1
  297. package/src/cli/reset.ts +228 -106
  298. package/src/cli/run.ts +7 -4
  299. package/src/cli/select.ts +664 -0
  300. package/src/cli/skills.ts +9 -2
  301. package/src/cli/targets.ts +3 -0
  302. package/src/cli/tasks.ts +84 -0
  303. package/src/cli/uninstall.ts +233 -165
  304. package/src/cli/upgrade.ts +210 -150
  305. package/src/cli/usage.ts +92 -27
  306. package/src/cli/validate-model.ts +3 -3
  307. package/src/cli/verifiers.ts +147 -1
  308. package/src/cli/wiki-generate.ts +1 -0
  309. package/src/core/commit-attribution.ts +41 -1
  310. package/src/core/config.ts +56 -0
  311. package/src/core/external-diagnostic.ts +44 -0
  312. package/src/core/gateway-routing.ts +157 -0
  313. package/src/core/git-commit-attribution.ts +46 -3
  314. package/src/core/run-overrides.ts +0 -5
  315. package/src/core/safe-exec.ts +17 -2
  316. package/src/core/skill-activation.ts +92 -2
  317. package/src/core/tool-names.ts +5 -2
  318. package/src/domains/agents/builtins/architect.md +1 -1
  319. package/src/domains/agents/builtins/coder.md +1 -1
  320. package/src/domains/agents/builtins/documenter.md +1 -1
  321. package/src/domains/agents/builtins/git-master.md +1 -1
  322. package/src/domains/agents/builtins/provenance.md +7 -7
  323. package/src/domains/agents/builtins/tester.md +1 -1
  324. package/src/domains/agents/builtins/verifier.md +2 -2
  325. package/src/domains/agents/builtins/wiki-writer.md +4 -3
  326. package/src/domains/agents/builtins/world-knowledge.md +31 -0
  327. package/src/domains/agents/catalog.ts +1 -1
  328. package/src/domains/agents/result-contract.ts +70 -0
  329. package/src/domains/context/extension.ts +31 -7
  330. package/src/domains/context/refresh.ts +3 -0
  331. package/src/domains/context/wiki/frontmatter.ts +5 -2
  332. package/src/domains/context/wiki/generate.ts +6 -0
  333. package/src/domains/context/wiki/map-seed.ts +589 -0
  334. package/src/domains/context/wiki/plan.ts +2 -2
  335. package/src/domains/context/wiki/prompts.ts +43 -0
  336. package/src/domains/dispatch/active-route-planner.ts +4 -0
  337. package/src/domains/dispatch/admission.ts +29 -0
  338. package/src/domains/dispatch/agent-candidates.ts +10 -0
  339. package/src/domains/dispatch/budget-envelope.ts +86 -1
  340. package/src/domains/dispatch/capability-match.ts +1 -0
  341. package/src/domains/dispatch/capacity-lease.ts +17 -0
  342. package/src/domains/dispatch/code-step.ts +11 -4
  343. package/src/domains/dispatch/contract.ts +42 -8
  344. package/src/domains/dispatch/execution-scheduler.ts +2 -0
  345. package/src/domains/dispatch/extension.ts +184 -56
  346. package/src/domains/dispatch/fleet-commit-attribution.ts +5 -0
  347. package/src/domains/dispatch/fleet-run.ts +1 -0
  348. package/src/domains/dispatch/host-verification.ts +114 -13
  349. package/src/domains/dispatch/intent.ts +28 -18
  350. package/src/domains/dispatch/orphan-recovery.ts +2 -0
  351. package/src/domains/dispatch/receipt-integrity.ts +4 -0
  352. package/src/domains/dispatch/reservation-store.ts +5 -3
  353. package/src/domains/dispatch/state.ts +15 -2
  354. package/src/domains/dispatch/types.ts +20 -2
  355. package/src/domains/dispatch/worker-model-metadata.ts +38 -0
  356. package/src/domains/eval/metrics/call-ledger-stream.ts +34 -11
  357. package/src/domains/eval/metrics/token-stream.ts +201 -31
  358. package/src/domains/eval/metrics/tracked.ts +40 -4
  359. package/src/domains/eval/runners/clio-run.ts +17 -11
  360. package/src/domains/eval/runners/context-index.ts +2 -7
  361. package/src/domains/eval/runners/context-init.ts +3 -6
  362. package/src/domains/eval/runners/external-command.ts +29 -11
  363. package/src/domains/eval/schema/suite.ts +28 -0
  364. package/src/domains/eval/schema/verdict.ts +2 -2
  365. package/src/domains/eval/suites/resolve.ts +13 -1
  366. package/src/domains/eval/suites/run.ts +24 -3
  367. package/src/domains/evidence/build.ts +102 -15
  368. package/src/domains/evidence/detail.ts +69 -0
  369. package/src/domains/evidence/eval.ts +13 -1
  370. package/src/domains/evidence/finish-contract-map.ts +5 -1
  371. package/src/domains/evidence/inventory.ts +167 -0
  372. package/src/domains/evidence/store.ts +16 -0
  373. package/src/domains/evidence/types.ts +12 -0
  374. package/src/domains/extensions/resources.ts +7 -0
  375. package/src/domains/interop/registry.ts +6 -2
  376. package/src/domains/interop/types.ts +4 -0
  377. package/src/domains/lifecycle/migrations/index.ts +4 -0
  378. package/src/domains/memory/task-memory-policy.ts +70 -26
  379. package/src/domains/memory/task-memory-telemetry.ts +1 -0
  380. package/src/domains/middleware/index.ts +0 -1
  381. package/src/domains/middleware/marketplace-offer.ts +22 -35
  382. package/src/domains/middleware/memory-intervention.ts +127 -32
  383. package/src/domains/middleware/memory-step-endpoint.ts +3 -2
  384. package/src/domains/middleware/runtime.ts +7 -3
  385. package/src/domains/middleware/skills-reminder.ts +31 -2
  386. package/src/domains/mux/detect.ts +3 -6
  387. package/src/domains/observability/accountability.ts +15 -1
  388. package/src/domains/observability/compaction-usage.ts +118 -0
  389. package/src/domains/observability/contract.ts +52 -7
  390. package/src/domains/observability/cost.ts +1 -1
  391. package/src/domains/observability/evidence-index.ts +10 -0
  392. package/src/domains/observability/extension.ts +15 -6
  393. package/src/domains/observability/out-of-turn-usage.ts +52 -21
  394. package/src/domains/observability/projection.ts +394 -45
  395. package/src/{interactive → domains/observability}/worker-progress.ts +3 -3
  396. package/src/domains/prompts/fragments/operating/contract.md +2 -0
  397. package/src/domains/prompts/fragments/wiki/page.md +8 -0
  398. package/src/domains/providers/contract.ts +4 -1
  399. package/src/domains/providers/extension.ts +40 -9
  400. package/src/domains/providers/model-capabilities.ts +9 -0
  401. package/src/domains/providers/model-discovery.ts +3 -4
  402. package/src/domains/providers/model-runtime-capabilities.ts +15 -5
  403. package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +48 -26
  404. package/src/domains/providers/runtimes/antigravity/antigravity-code.ts +225 -45
  405. package/src/domains/providers/runtimes/claude/claude-code.ts +9 -0
  406. package/src/domains/providers/runtimes/common/lmstudio-http.ts +6 -2
  407. package/src/domains/providers/runtimes/common/local-synth.ts +2 -0
  408. package/src/domains/providers/runtimes/protocol/litellm.ts +119 -29
  409. package/src/domains/providers/support.ts +11 -5
  410. package/src/domains/providers/target-model-cache.ts +25 -2
  411. package/src/domains/providers/types/capability-flags.ts +2 -0
  412. package/src/domains/providers/types/runtime-descriptor.ts +20 -1
  413. package/src/domains/providers/types/target-descriptor.ts +19 -0
  414. package/src/domains/resources/index.ts +3 -0
  415. package/src/domains/resources/skills/install.ts +72 -7
  416. package/src/domains/resources/skills/loader.ts +7 -0
  417. package/src/domains/resources/skills/marketplace.ts +63 -11
  418. package/src/domains/safety/action-classifier.ts +7 -0
  419. package/src/domains/safety/autonomy.ts +15 -0
  420. package/src/domains/safety/default-path-policy.ts +2 -0
  421. package/src/domains/safety/finish-contract-registration.ts +29 -14
  422. package/src/domains/safety/finish-contract.ts +252 -40
  423. package/src/domains/safety/index.ts +21 -1
  424. package/src/domains/safety/path-policy.ts +1 -1
  425. package/src/domains/safety/policy-engine.ts +60 -17
  426. package/src/domains/safety/protected-artifacts.ts +191 -88
  427. package/src/domains/safety/rigor.ts +53 -39
  428. package/src/domains/safety/run-effects.ts +2 -22
  429. package/src/domains/safety/skill-authority.ts +55 -0
  430. package/src/domains/safety/validation-contract.ts +388 -0
  431. package/src/domains/session/archive-readers.ts +10 -1
  432. package/src/domains/session/compaction/compact.ts +72 -22
  433. package/src/domains/session/decision-board.ts +101 -2
  434. package/src/domains/session/entries.ts +50 -7
  435. package/src/domains/session/extension.ts +4 -4
  436. package/src/domains/session/handoff.ts +2 -1
  437. package/src/domains/session/manager.ts +2 -3
  438. package/src/domains/session/task-board.ts +14 -1
  439. package/src/domains/session/tree/fork.ts +1 -2
  440. package/src/domains/session/tree/navigator.ts +1 -1
  441. package/src/domains/session/usage.ts +3 -3
  442. package/src/domains/user-tasks/acceptance.ts +56 -0
  443. package/src/domains/user-tasks/active-acceptance.ts +40 -0
  444. package/src/domains/user-tasks/store.ts +34 -3
  445. package/src/engine/acp/adapter.ts +24 -6
  446. package/src/engine/acp/server.ts +21 -4
  447. package/src/engine/acp/transport.ts +53 -8
  448. package/src/engine/acp/types.ts +4 -0
  449. package/src/engine/agent.ts +13 -3
  450. package/src/engine/ai.ts +26 -8
  451. package/src/engine/antigravity/subprocess-runtime.ts +386 -120
  452. package/src/engine/api-registry.ts +3 -0
  453. package/src/engine/apis/ollama-native.ts +15 -0
  454. package/src/engine/apis/openai-completions.ts +117 -14
  455. package/src/engine/claude/subprocess-runtime.ts +107 -60
  456. package/src/engine/external-subprocess.ts +122 -6
  457. package/src/entry/background-model-metadata.ts +18 -0
  458. package/src/entry/compaction-prompt.ts +57 -0
  459. package/src/entry/orchestrator.ts +416 -218
  460. package/src/entry/task-memory-lifecycle.ts +35 -0
  461. package/src/interactive/chat-loop-messages.ts +13 -4
  462. package/src/interactive/chat-loop.ts +65 -2
  463. package/src/interactive/chat-renderer.ts +1 -0
  464. package/src/interactive/cost-overlay.ts +26 -2
  465. package/src/interactive/dispatch-board.ts +46 -717
  466. package/src/interactive/fleet-run-preview.ts +2 -1
  467. package/src/interactive/interactive-application.ts +3 -2
  468. package/src/interactive/interactive-presentation.ts +55 -12
  469. package/src/interactive/interactive-slash-runtime.ts +4 -2
  470. package/src/interactive/oracle.ts +5 -2
  471. package/src/interactive/overlays/fleet-run-approval.ts +3 -2
  472. package/src/interactive/overlays/message-picker.ts +2 -2
  473. package/src/interactive/overlays/settings.ts +2 -2
  474. package/src/interactive/overlays/tree-selector.ts +2 -2
  475. package/src/interactive/renderers/branch-summary.ts +1 -1
  476. package/src/interactive/renderers/worker-entry.ts +32 -0
  477. package/src/interactive/slash-autocomplete.ts +4 -6
  478. package/src/interactive/slash-commands.ts +49 -45
  479. package/src/interactive/slash-spec.ts +28 -0
  480. package/src/interactive/theme/labels.ts +19 -13
  481. package/src/interactive/turn-context.ts +9 -5
  482. package/src/interactive/turn-recovery.ts +8 -0
  483. package/src/interactive/turn-runtime.ts +27 -11
  484. package/src/interactive/turn-state.ts +7 -0
  485. package/src/interactive/view/artifacts.ts +2 -0
  486. package/src/interactive/worker-receipts.ts +1 -0
  487. package/src/interactive/worker-stream.ts +13 -4
  488. package/src/tools/bootstrap.ts +4 -0
  489. package/src/tools/builtin-tool-catalog.ts +31 -0
  490. package/src/tools/compete-worktrees.ts +7 -1
  491. package/src/tools/context/index.ts +30 -9
  492. package/src/tools/core-bootstrap.ts +16 -0
  493. package/src/tools/decide.ts +136 -0
  494. package/src/tools/dispatch-admission.ts +21 -0
  495. package/src/tools/dispatch-arguments.ts +1 -0
  496. package/src/tools/dispatch-event-text.ts +10 -0
  497. package/src/tools/dispatch-plan.ts +6 -2
  498. package/src/tools/dispatch-runner.ts +27 -1
  499. package/src/tools/dispatch-types.ts +6 -0
  500. package/src/tools/evidence.ts +96 -0
  501. package/src/tools/limitation.ts +76 -0
  502. package/src/tools/policy.ts +9 -0
  503. package/src/tools/presentation.ts +3 -0
  504. package/src/tools/registry.ts +11 -5
  505. package/src/tools/result-shaping.ts +17 -5
  506. package/src/tools/task-worktree.ts +13 -3
  507. package/src/tools/tasks.ts +10 -1
  508. package/src/tools/verify/authoring.ts +170 -83
  509. package/src/tools/verify/catalog.ts +122 -5
  510. package/src/tools/verify/index.ts +2 -1
  511. package/src/tools/verify/numeric.ts +298 -0
  512. package/src/tools/verify/perf.ts +143 -0
  513. package/src/tools/verify/scripts.ts +229 -2
  514. package/src/tools/worker-evidence.ts +3 -1
  515. package/src/worker/spec-contract.ts +4 -0
  516. package/dist/chunk-2Z2IKEXI.js +0 -1554
  517. package/dist/chunk-RVG5JXAL.js +0 -41
  518. package/dist/chunk-T56WDKA5.js +0 -183
  519. package/dist/chunk-VN3SHNBN.js +0 -313
  520. package/dist/chunk-VPKWYKEY.js +0 -169
  521. package/dist/reset-OAQP3W4O.js +0 -230
  522. package/dist/uninstall-N34PCTGJ.js +0 -331
  523. package/dist/upgrade-PXK3S2YM.js +0 -325
@@ -1,24 +1,38 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
3
  appendOutOfTurnUsageRow,
4
- readEvidenceIndex,
4
+ readAccountabilitySummary,
5
5
  writeEvidenceIndexRowQueued
6
- } from "./chunk-AK5XEFVZ.js";
6
+ } from "./chunk-JT2RFCC5.js";
7
7
  import {
8
- createDispatchTraceMirror,
9
- traceDatabasePath
10
- } from "./chunk-VKPAQYEB.js";
8
+ createWorkerProgressFold
9
+ } from "./chunk-XXYSBZIQ.js";
10
+ import {
11
+ truncateToWidth
12
+ } from "./chunk-YAKGTXEV.js";
11
13
  import {
12
- FAILURE_CAUSE_TAGS,
13
14
  buildEvidence,
14
15
  createCostTracker
15
- } from "./chunk-I66ZTYNP.js";
16
+ } from "./chunk-NRO2BJRH.js";
17
+ import {
18
+ summarizeTrustStatus
19
+ } from "./chunk-CUSRQKPU.js";
20
+ import {
21
+ createDispatchTraceMirror,
22
+ traceDatabasePath
23
+ } from "./chunk-VKPAQYEB.js";
16
24
  import {
17
25
  uncachedPrefillTokens
18
26
  } from "./chunk-3DPEIQKN.js";
27
+ import {
28
+ cloneRunToolBudgetEnvelope
29
+ } from "./chunk-75W7L2E2.js";
30
+ import {
31
+ sanitizeCallTargetText
32
+ } from "./chunk-NEDJ26B5.js";
19
33
  import {
20
34
  resolveCostProvenance
21
- } from "./chunk-BYMNWQ7O.js";
35
+ } from "./chunk-JSD46VO2.js";
22
36
  import {
23
37
  BusChannels
24
38
  } from "./chunk-F4EKGO4N.js";
@@ -30,104 +44,12 @@ import {
30
44
  init_esm_shims
31
45
  } from "./chunk-3R73A4XB.js";
32
46
 
33
- // src/domains/observability/background-memory-usage.ts
34
- init_esm_shims();
35
- function backgroundMemoryUsageRow(usage, options) {
36
- return {
37
- label: "background-memory",
38
- sessionId: options.sessionId,
39
- repoIdentity: options.repoIdentity,
40
- timestamp: (options.now ?? /* @__PURE__ */ new Date()).toISOString(),
41
- target: usage.targetId,
42
- attributedModelId: usage.attributedModelId,
43
- usage: {
44
- input: usage.input,
45
- output: usage.output,
46
- cacheRead: usage.cacheRead,
47
- cacheWrite: usage.cacheWrite,
48
- reasoning: usage.reasoning,
49
- totalTokens: usage.totalTokens,
50
- costUsd: usage.costUsd,
51
- costProvenance: usage.costProvenance
52
- },
53
- timing: { durationMs: usage.durationMs },
54
- ...usage.backend === null ? {} : {
55
- promptCache: {
56
- promptTokens: usage.backend.promptTokens,
57
- cachedTokens: usage.backend.cachedTokens,
58
- uncachedPrefillTokens: uncachedPrefillTokens({
59
- promptTokens: usage.backend.promptTokens,
60
- cachedTokens: usage.backend.cachedTokens,
61
- predictedTokens: 0,
62
- promptMs: usage.backend.promptMs,
63
- predictedMs: 0,
64
- source: "llamacpp-timings"
65
- }),
66
- promptMs: usage.backend.promptMs,
67
- source: usage.backend.source
68
- }
69
- }
70
- };
71
- }
72
- function recordBackgroundMemoryStep(input) {
73
- input.observability?.recordTokens(
74
- input.usage.targetId,
75
- input.usage.attributedModelId,
76
- input.usage.totalTokens,
77
- input.usage.costUsd,
78
- {
79
- input: input.usage.input,
80
- output: input.usage.output,
81
- cacheRead: input.usage.cacheRead,
82
- cacheWrite: input.usage.cacheWrite,
83
- reasoningTokens: input.usage.reasoning,
84
- totalTokens: input.usage.totalTokens,
85
- apiCalls: 1
86
- },
87
- input.usage.costProvenance,
88
- void 0,
89
- "background-memory"
90
- );
91
- const row = backgroundMemoryUsageRow(input.usage, {
92
- sessionId: input.sessionId,
93
- repoIdentity: input.repoIdentity,
94
- ...input.now === void 0 ? {} : { now: input.now }
95
- });
96
- (input.appendRow ?? appendOutOfTurnUsageRow)(input.stateDir, row);
97
- return row;
98
- }
99
-
100
47
  // src/domains/observability/index.ts
101
48
  init_esm_shims();
102
49
 
103
50
  // src/domains/observability/extension.ts
104
51
  init_esm_shims();
105
52
 
106
- // src/domains/observability/accountability.ts
107
- init_esm_shims();
108
- function summarizeEvidenceIndex(rows) {
109
- const totalRuns = rows.length;
110
- let firstPassRuns = 0;
111
- const counts = /* @__PURE__ */ new Map();
112
- for (const row of rows) {
113
- if (row.firstPassSuccess) firstPassRuns += 1;
114
- for (const tag of row.tags) {
115
- if (!FAILURE_CAUSE_TAGS.has(tag)) continue;
116
- counts.set(tag, (counts.get(tag) ?? 0) + 1);
117
- }
118
- }
119
- const failureCauses = [...counts.entries()].map(([tag, count]) => ({ tag, count })).sort((a, b) => b.count !== a.count ? b.count - a.count : a.tag.localeCompare(b.tag));
120
- return {
121
- totalRuns,
122
- firstPassRuns,
123
- firstPassRate: totalRuns === 0 ? 0 : firstPassRuns / totalRuns,
124
- failureCauses
125
- };
126
- }
127
- function readAccountabilitySummary(stateDir) {
128
- return summarizeEvidenceIndex(readEvidenceIndex(stateDir));
129
- }
130
-
131
53
  // src/domains/observability/metrics.ts
132
54
  init_esm_shims();
133
55
  function percentile(sorted, p) {
@@ -154,6 +76,7 @@ function aggregateMetrics(snap) {
154
76
 
155
77
  // src/domains/observability/projection.ts
156
78
  init_esm_shims();
79
+ import { performance } from "node:perf_hooks";
157
80
 
158
81
  // src/core/dispatch-outcome.ts
159
82
  init_esm_shims();
@@ -192,8 +115,121 @@ function makeRef(parts) {
192
115
  }
193
116
  return Object.keys(ref).length > 0 ? ref : void 0;
194
117
  }
118
+ var TASK_SUMMARY_MAX_WIDTH = 240;
119
+ function finiteOrZero(value) {
120
+ return num(value, 0);
121
+ }
122
+ function parseRuntimeKind(value) {
123
+ if (value === "sdk" || value === "subprocess" || value === "acp-delegation") return value;
124
+ return "http";
125
+ }
126
+ function parseAgentAudience(value, fallback) {
127
+ if (value === "base" || value === "shadow" || value === "custom" || value === "internal") return value;
128
+ return fallback;
129
+ }
130
+ function parseRequestOrigin(value, fallback) {
131
+ if (value === "user" || value === "agent" || value === "internal") return value;
132
+ return fallback;
133
+ }
134
+ function parseNonEmptyString(value) {
135
+ return typeof value === "string" && value.length > 0 ? value : void 0;
136
+ }
137
+ function parseTaskSummary(raw, fallback) {
138
+ return sanitizeDispatchTaskSummary(raw.task) ?? sanitizeDispatchTaskSummary(raw.taskSummary) ?? fallback;
139
+ }
140
+ function parsePositiveInt(value) {
141
+ return typeof value === "number" && Number.isFinite(value) && value > 0 ? Math.floor(value) : void 0;
142
+ }
143
+ function parseGateBadge(value) {
144
+ if (typeof value !== "object" || value === null) return void 0;
145
+ const record = value;
146
+ if (typeof record.role !== "string" || record.role.length === 0) return void 0;
147
+ const cycle = parsePositiveInt(record.cycle) ?? 1;
148
+ return { role: record.role, cycle };
149
+ }
150
+ function parseEndpointCapacity(value) {
151
+ if (typeof value !== "object" || value === null) return void 0;
152
+ const record = value;
153
+ const key = parseNonEmptyString(record.key);
154
+ const label = parseNonEmptyString(record.label);
155
+ const limit = parsePositiveInt(record.limit);
156
+ return key === void 0 || label === void 0 || limit === void 0 ? void 0 : { key, label, limit };
157
+ }
158
+ function parseCouncilBadge(value) {
159
+ if (typeof value !== "object" || value === null) return void 0;
160
+ const record = value;
161
+ const group = parseNonEmptyString(record.group);
162
+ const label = parseNonEmptyString(record.label);
163
+ const round = parsePositiveInt(record.round);
164
+ if (group === void 0 || label === void 0 || round === void 0) return void 0;
165
+ return {
166
+ group,
167
+ label,
168
+ ...typeof record.color === "string" && record.color.length > 0 ? { color: record.color } : {},
169
+ round
170
+ };
171
+ }
172
+ function sanitizeDispatchTaskSummary(value) {
173
+ if (typeof value !== "string") return void 0;
174
+ const sanitized = sanitizeCallTargetText(value);
175
+ if (sanitized.length === 0) return void 0;
176
+ return sanitizeCallTargetText(truncateToWidth(sanitized, TASK_SUMMARY_MAX_WIDTH, "\u2026", false));
177
+ }
178
+ function parseRetrySnapshot(value) {
179
+ const attempt = parsePositiveInt(value.attempt);
180
+ const dueAtMs = Date.parse(value.dueAt);
181
+ if (attempt === void 0 || !Number.isFinite(dueAtMs)) return null;
182
+ return {
183
+ attempt,
184
+ dueAtMs,
185
+ reason: sanitizeCallTargetText(value.reason)
186
+ };
187
+ }
188
+ function readRetrySnapshot(snapshot) {
189
+ const retrying = /* @__PURE__ */ new Map();
190
+ try {
191
+ for (const value of snapshot.retrying) {
192
+ const runId = asRunId(value.runId);
193
+ const agentId = parseNonEmptyString(value.agentId);
194
+ const retry = parseRetrySnapshot(value);
195
+ const taskSummary = sanitizeDispatchTaskSummary(value.task);
196
+ if (runId && agentId && retry) {
197
+ retrying.set(runId, {
198
+ agentId,
199
+ ...taskSummary !== void 0 ? { taskSummary } : {},
200
+ retry
201
+ });
202
+ }
203
+ }
204
+ } catch {
205
+ }
206
+ return retrying;
207
+ }
208
+ function readRunningSnapshot(snapshot) {
209
+ const running = /* @__PURE__ */ new Map();
210
+ try {
211
+ for (const value of snapshot.running) {
212
+ const runId = asRunId(value.runId);
213
+ if (!runId) continue;
214
+ const budget = cloneRunToolBudgetEnvelope(value.budget);
215
+ running.set(runId, {
216
+ inputTokens: finiteOrZero(value.tokens.input),
217
+ outputTokens: finiteOrZero(value.tokens.output),
218
+ tokenCount: finiteOrZero(value.tokens.total),
219
+ costUsd: finiteOrZero(value.costUsd),
220
+ costProvenance: value.costProvenance ?? "unknown",
221
+ outcomePhase: value.outcomePhase,
222
+ ...budget !== void 0 ? { budget } : {}
223
+ });
224
+ }
225
+ } catch {
226
+ }
227
+ return running;
228
+ }
195
229
  function createObservabilityProjection(bus, deps) {
196
230
  const runs = /* @__PURE__ */ new Map();
231
+ const fleetPhases = /* @__PURE__ */ new Map();
232
+ let runReaders = deps;
197
233
  const notices = [];
198
234
  const providerHealth = /* @__PURE__ */ new Map();
199
235
  const pendingEvidence = /* @__PURE__ */ new Set();
@@ -218,7 +254,14 @@ function createObservabilityProjection(bus, deps) {
218
254
  accountability,
219
255
  // Newest-first: Map preserves first-seen (enqueue) order, so reversing
220
256
  // surfaces the most recently started runs at the head of the list.
221
- runs: [...runs.values()].reverse(),
257
+ runs: [...runs.values()].reverse().map((entry) => {
258
+ const { progressFold, startedAtClockMs: _clock, ...summary } = entry;
259
+ return structuredClone({
260
+ ...summary,
261
+ status: entry.retry ? "retrying" : entry.status,
262
+ progress: progressFold.snapshot()
263
+ });
264
+ }),
222
265
  providerHealth: providerHealthRecord,
223
266
  notices: [...notices],
224
267
  pendingEvidenceBuildRunIds: [...pendingEvidence]
@@ -252,12 +295,20 @@ function createObservabilityProjection(bus, deps) {
252
295
  const oldest = runs.keys().next().value;
253
296
  if (oldest === void 0) break;
254
297
  runs.delete(oldest);
298
+ fleetPhases.delete(oldest);
255
299
  }
256
300
  }
257
301
  function emptyRun(runId, now) {
302
+ const phase = fleetPhases.get(runId);
258
303
  return {
259
304
  runId,
260
305
  agentId: "-",
306
+ runtimeKind: "http",
307
+ progressFold: createWorkerProgressFold(),
308
+ startedAtClockMs: null,
309
+ ttftMs: null,
310
+ lastContextTokens: 0,
311
+ ...phase !== void 0 ? { phase: { ...phase } } : {},
261
312
  status: "enqueued",
262
313
  startedAtMs: now,
263
314
  updatedAtMs: now,
@@ -269,11 +320,25 @@ function createObservabilityProjection(bus, deps) {
269
320
  };
270
321
  }
271
322
  function applyIdentity(summary, id) {
323
+ delete summary.trust;
272
324
  if (typeof id.agentId === "string" && id.agentId.length > 0) summary.agentId = id.agentId;
273
325
  if (typeof id.targetId === "string" && id.targetId.length > 0) summary.targetId = id.targetId;
274
326
  if (typeof id.wireModelId === "string" && id.wireModelId.length > 0) summary.modelId = id.wireModelId;
275
327
  if (typeof id.runtimeId === "string" && id.runtimeId.length > 0) summary.runtimeId = id.runtimeId;
276
- if (typeof id.runtimeKind === "string" && id.runtimeKind.length > 0) summary.runtimeKind = id.runtimeKind;
328
+ summary.runtimeKind = parseRuntimeKind(id.runtimeKind ?? summary.runtimeKind);
329
+ const additions = {
330
+ agentAudience: parseAgentAudience(id.agentAudience, summary.agentAudience),
331
+ requestOrigin: parseRequestOrigin(id.requestOrigin, summary.requestOrigin),
332
+ node: parseNonEmptyString(id.node) ?? summary.node,
333
+ endpoint: parseEndpointCapacity(id.endpoint) ?? summary.endpoint,
334
+ gate: parseGateBadge(id.gate) ?? summary.gate,
335
+ council: parseCouncilBadge(id.council) ?? summary.council,
336
+ rerouteCount: parsePositiveInt(id.rerouteCount) ?? summary.rerouteCount,
337
+ contextWindow: parsePositiveInt(id.contextWindow) ?? summary.contextWindow,
338
+ taskSummary: parseTaskSummary(id, summary.taskSummary),
339
+ budget: cloneRunToolBudgetEnvelope(id.budget) ?? summary.budget
340
+ };
341
+ Object.assign(summary, Object.fromEntries(Object.entries(additions).filter(([, value]) => value !== void 0)));
277
342
  }
278
343
  function applyTerminalTokens(summary, payload) {
279
344
  summary.tokens.total = num(payload.tokenCount, summary.tokens.total);
@@ -300,6 +365,80 @@ function createObservabilityProjection(bus, deps) {
300
365
  }
301
366
  markChanged();
302
367
  }
368
+ function settleFromReceipt(summary) {
369
+ try {
370
+ const facts = runReaders.readReceipt?.(summary.runId);
371
+ const text = facts?.trust?.artifactIntegrity.state === "verified" ? facts.text : void 0;
372
+ summary.progressFold.settle(typeof text === "string" && text.trim().length > 0 ? text : void 0);
373
+ if (facts?.trust !== void 0) summary.trust = summarizeTrustStatus(facts.trust);
374
+ } catch {
375
+ summary.progressFold.settle();
376
+ }
377
+ }
378
+ function applyTerminalDetail(summary, payload) {
379
+ const host = payload.hostVerification;
380
+ if (host === "verified" || host === "rejected" || host === "skipped" || host === "not_implicated")
381
+ summary.hostVerification = host;
382
+ if (payload.reason !== "retry_denied") summary.receiptId = summary.runId;
383
+ delete summary.retry;
384
+ settleFromReceipt(summary);
385
+ }
386
+ function reconcileRuns() {
387
+ if (!runReaders.dispatchSnapshot) return;
388
+ let current;
389
+ try {
390
+ current = runReaders.dispatchSnapshot();
391
+ } catch {
392
+ return;
393
+ }
394
+ if (!Array.isArray(current?.retrying) || !Array.isArray(current?.running)) return;
395
+ const retrying = readRetrySnapshot(current);
396
+ const running = readRunningSnapshot(current);
397
+ const now = Date.now();
398
+ let changed = false;
399
+ for (const entry of runs.values()) {
400
+ if (entry.retry && !retrying.has(entry.runId)) {
401
+ delete entry.retry;
402
+ changed = true;
403
+ }
404
+ }
405
+ for (const [runId, retry] of retrying) {
406
+ const existing = runs.get(runId);
407
+ if (existing && existing.status !== "failed" && existing.status !== "dead") continue;
408
+ const entry = existing ?? emptyRun(runId, now);
409
+ if (!existing) {
410
+ entry.agentId = retry.agentId;
411
+ entry.status = "failed";
412
+ }
413
+ entry.retry = { ...retry.retry };
414
+ if (entry.taskSummary === void 0 && retry.taskSummary !== void 0) entry.taskSummary = retry.taskSummary;
415
+ putRun(runId, entry);
416
+ changed = true;
417
+ }
418
+ for (const [runId, live] of running) {
419
+ const entry = runs.get(runId);
420
+ if (!entry || isTerminal(entry.status) && live.outcomePhase !== "aborting") continue;
421
+ entry.tokens.input = live.inputTokens;
422
+ entry.tokens.output = live.outputTokens;
423
+ entry.tokens.total = live.tokenCount;
424
+ entry.costUsd = live.costUsd;
425
+ entry.costProvenance = live.costProvenance;
426
+ if (live.budget !== void 0) entry.budget = live.budget;
427
+ if (live.outcomePhase === "aborting" && entry.status !== "completed" && entry.status !== "aborted") {
428
+ entry.status = "cancelling";
429
+ delete entry.retry;
430
+ }
431
+ changed = true;
432
+ }
433
+ if (changed) markChanged();
434
+ }
435
+ function evidenceBuildSucceeded(runId, evidence) {
436
+ pendingEvidence.delete(runId);
437
+ const summary = runs.get(runId);
438
+ if (summary) summary.evidence = { ...evidence, tags: [...evidence.tags] };
439
+ accountability = deps.readAccountability();
440
+ markChanged();
441
+ }
303
442
  const unsubscribes = [
304
443
  bus.on(BusChannels.DispatchEnqueued, (raw) => {
305
444
  const payload = raw ?? {};
@@ -309,6 +448,7 @@ function createObservabilityProjection(bus, deps) {
309
448
  const summary = runs.get(runId) ?? emptyRun(runId, now);
310
449
  applyIdentity(summary, payload);
311
450
  summary.status = "enqueued";
451
+ delete summary.retry;
312
452
  summary.updatedAtMs = now;
313
453
  putRun(runId, summary);
314
454
  markChanged();
@@ -322,6 +462,8 @@ function createObservabilityProjection(bus, deps) {
322
462
  applyIdentity(summary, payload);
323
463
  summary.status = "running";
324
464
  summary.startedAtMs = now;
465
+ summary.startedAtClockMs = performance.now();
466
+ delete summary.retry;
325
467
  summary.updatedAtMs = now;
326
468
  summary.finishedAtMs = null;
327
469
  summary.durationMs = null;
@@ -340,10 +482,46 @@ function createObservabilityProjection(bus, deps) {
340
482
  const type = typeof event.type === "string" ? event.type : "";
341
483
  if (type === "heartbeat_status") {
342
484
  const status = resolveHeartbeat(event.status);
343
- if (status && !isTerminal(summary.status)) summary.status = status;
485
+ if (status && !isTerminal(summary.status) && summary.status !== "cancelling") summary.status = status;
486
+ if (status === "dead") summary.progressFold.settle();
344
487
  markChanged();
345
488
  return;
346
489
  }
490
+ if (type === "attempt_start") {
491
+ summary.failoverHops = (summary.failoverHops ?? 0) + 1;
492
+ summary.status = "running";
493
+ summary.finishedAtMs = null;
494
+ summary.durationMs = null;
495
+ summary.progressFold.restart();
496
+ delete summary.retry;
497
+ markChanged();
498
+ return;
499
+ }
500
+ if (type === "agent_start") summary.startedAtClockMs = performance.now();
501
+ if (type === "message_update") {
502
+ const assistantEvent = event.assistantMessageEvent ?? {};
503
+ const hasDelta = ["text_delta", "thinking_delta", "toolcall_start", "toolcall_delta"].includes(
504
+ String(assistantEvent.type)
505
+ );
506
+ if (hasDelta && summary.ttftMs === null && summary.startedAtClockMs !== null)
507
+ summary.ttftMs = Math.round(performance.now() - summary.startedAtClockMs);
508
+ }
509
+ if (type === "clio_coder_write_record_downgraded") {
510
+ const detail = event.payload ?? {};
511
+ const tool = parseNonEmptyString(detail.tool);
512
+ const toolCallId = parseNonEmptyString(detail.toolCallId);
513
+ if (detail.reason === "opaque_tool_succeeded" && tool !== void 0 && toolCallId !== void 0)
514
+ summary.writeRecordDowngrade = {
515
+ reason: "opaque_tool_succeeded",
516
+ tool: sanitizeCallTargetText(tool),
517
+ toolCallId: sanitizeCallTargetText(toolCallId)
518
+ };
519
+ }
520
+ summary.progressFold.observe(payload.event);
521
+ if (type === "clio_coder_steer_received") {
522
+ const detail = event.payload ?? {};
523
+ summary.steerAcknowledgement = { receivedAtMs: now, chars: Math.max(0, Math.floor(num(detail.chars, 0))) };
524
+ }
347
525
  if (type === "message_end" && !isTerminal(summary.status)) {
348
526
  const message = event.message ?? {};
349
527
  if (message.role === "assistant" && message.usage) {
@@ -352,8 +530,10 @@ function createObservabilityProjection(bus, deps) {
352
530
  summary.tokens.input += input;
353
531
  summary.tokens.output += output;
354
532
  summary.tokens.total += input + output + num(message.usage.cacheWrite, 0);
533
+ summary.lastContextTokens = input + output;
355
534
  }
356
535
  }
536
+ if (type === "agent_end") summary.progressFold.settle();
357
537
  markChanged();
358
538
  }),
359
539
  bus.on(BusChannels.DispatchCompleted, (raw) => {
@@ -368,6 +548,7 @@ function createObservabilityProjection(bus, deps) {
368
548
  summary.finishedAtMs = now;
369
549
  summary.durationMs = num(payload.durationMs, Math.max(0, now - summary.startedAtMs));
370
550
  applyTerminalTokens(summary, payload);
551
+ applyTerminalDetail(summary, payload);
371
552
  summary.outcome = str(payload.outcome, "succeeded");
372
553
  summary.outcomeDetail = typeof payload.outcomeDetail === "string" ? payload.outcomeDetail : null;
373
554
  putRun(runId, summary);
@@ -385,11 +566,34 @@ function createObservabilityProjection(bus, deps) {
385
566
  summary.finishedAtMs = now;
386
567
  summary.durationMs = num(payload.durationMs, Math.max(0, now - summary.startedAtMs));
387
568
  applyTerminalTokens(summary, payload);
569
+ applyTerminalDetail(summary, payload);
388
570
  summary.outcome = str(payload.outcome, str(payload.reason, "failed"));
389
571
  summary.outcomeDetail = typeof payload.outcomeDetail === "string" ? payload.outcomeDetail : null;
390
572
  putRun(runId, summary);
391
573
  markChanged();
392
574
  }),
575
+ bus.on(BusChannels.RunAborted, (raw) => {
576
+ const runId = asRunId(raw?.runId);
577
+ const summary = runId ? runs.get(runId) : void 0;
578
+ if (!summary) return;
579
+ const wasRetrying = summary.retry !== void 0;
580
+ delete summary.retry;
581
+ if (wasRetrying && raw.startedAt === null) {
582
+ summary.status = "aborted";
583
+ summary.finishedAtMs = Date.now();
584
+ summary.progressFold.settle();
585
+ } else {
586
+ if (isTerminal(summary.status) && !wasRetrying) return;
587
+ summary.status = "cancelling";
588
+ }
589
+ summary.outcomeDetail = typeof raw.reason === "string" ? raw.reason : summary.outcomeDetail ?? null;
590
+ summary.updatedAtMs = Date.now();
591
+ markChanged();
592
+ }),
593
+ bus.on(BusChannels.AccountabilityEvidenceReady, (payload) => {
594
+ const runId = asRunId(payload?.runId);
595
+ if (runId) evidenceBuildSucceeded(runId, payload);
596
+ }),
393
597
  bus.on(BusChannels.ProviderHealth, (raw) => {
394
598
  const payload = raw ?? {};
395
599
  if (typeof payload.id !== "string" || payload.id.length === 0) return;
@@ -400,6 +604,24 @@ function createObservabilityProjection(bus, deps) {
400
604
  ];
401
605
  return {
402
606
  snapshot: buildSnapshot,
607
+ bindRunReaders(readers) {
608
+ runReaders = readers;
609
+ return () => {
610
+ if (runReaders === readers) runReaders = deps;
611
+ };
612
+ },
613
+ reconcileRuns,
614
+ setFleetPhase(runId, phase) {
615
+ fleetPhases.set(runId, { ...phase });
616
+ while (fleetPhases.size > MAX_PROJECTION_RUNS) {
617
+ const oldest = fleetPhases.keys().next().value;
618
+ if (oldest === void 0) break;
619
+ fleetPhases.delete(oldest);
620
+ }
621
+ const summary = runs.get(runId);
622
+ if (summary) summary.phase = { ...phase };
623
+ markChanged();
624
+ },
403
625
  subscribe(listener) {
404
626
  listeners.add(listener);
405
627
  listener(buildSnapshot());
@@ -415,20 +637,6 @@ function createObservabilityProjection(bus, deps) {
415
637
  pendingEvidence.add(runId);
416
638
  markChanged();
417
639
  },
418
- evidenceBuildSucceeded(runId, evidence) {
419
- pendingEvidence.delete(runId);
420
- const summary = runs.get(runId);
421
- if (summary) {
422
- summary.evidence = {
423
- evidenceId: evidence.evidenceId,
424
- firstPassSuccess: evidence.firstPassSuccess,
425
- findingCount: evidence.findingCount,
426
- tags: [...evidence.tags]
427
- };
428
- }
429
- accountability = deps.readAccountability();
430
- markChanged();
431
- },
432
640
  evidenceBuildFailed(runId, message) {
433
641
  pendingEvidence.delete(runId);
434
642
  pushNotice(
@@ -504,6 +712,9 @@ function createTelemetry(histogramCapacity = DEFAULT_HISTOGRAM_CAPACITY) {
504
712
  }
505
713
 
506
714
  // src/domains/observability/extension.ts
715
+ function dispatchHasEvidenceLedger(payload) {
716
+ return payload.lineage !== void 0;
717
+ }
507
718
  function recordDispatchCost(telemetry, cost, payload) {
508
719
  if (!payload.targetId || !payload.wireModelId || typeof payload.tokenCount !== "number") {
509
720
  return;
@@ -555,6 +766,11 @@ function evidenceIndexRow(runId, result, succeeded, attempt) {
555
766
  tags: [...tags],
556
767
  firstPassSuccess,
557
768
  findingCount: result.findings.length,
769
+ succeeded,
770
+ completionEvidenceWarning: result.findings.some(
771
+ (finding) => finding.tag === "completion-evidence" && finding.severity === "warn"
772
+ ),
773
+ ungroundedClaims: result.ungroundedClaims,
558
774
  generatedAt: (/* @__PURE__ */ new Date()).toISOString()
559
775
  };
560
776
  }
@@ -581,7 +797,6 @@ function createObservabilityBundle(context, options = {}) {
581
797
  projection.evidenceBuildStarted(runId);
582
798
  const build = buildAndIndexEvidence(runId, succeeded, attempt, {
583
799
  onReady: (id, evidence) => {
584
- projection.evidenceBuildSucceeded(id, evidence);
585
800
  context.bus.emit(BusChannels.AccountabilityEvidenceReady, { runId: id, ...evidence });
586
801
  },
587
802
  onFailed: (id, message) => projection.evidenceBuildFailed(id, message)
@@ -621,7 +836,7 @@ function createObservabilityBundle(context, options = {}) {
621
836
  telemetry.record("histogram", "dispatch.duration_ms", payload.durationMs);
622
837
  }
623
838
  recordDispatchCost(telemetry, cost, payload);
624
- if (typeof payload.runId === "string" && payload.runId.length > 0) {
839
+ if (typeof payload.runId === "string" && payload.runId.length > 0 && dispatchHasEvidenceLedger(payload)) {
625
840
  trackBuild(payload.runId, false, payload.lineage?.attempt);
626
841
  }
627
842
  })
@@ -671,6 +886,9 @@ function createObservabilityBundle(context, options = {}) {
671
886
  telemetry.record("histogram", "tokens.ttft_ms", snapshot.ttftMs ?? 0);
672
887
  projection.refresh();
673
888
  },
889
+ bindRunReaders: (readers) => projection.bindRunReaders(readers),
890
+ reconcileRuns: () => projection.reconcileRuns(),
891
+ setFleetPhase: (runId, phase) => projection.setFleetPhase(runId, phase),
674
892
  snapshot: () => projection.snapshot(),
675
893
  subscribe: (listener) => projection.subscribe(listener)
676
894
  };
@@ -688,6 +906,73 @@ var ObservabilityManifest = {
688
906
  dependsOn: ["providers", "session"]
689
907
  };
690
908
 
909
+ // src/domains/observability/background-memory-usage.ts
910
+ init_esm_shims();
911
+ function backgroundMemoryUsageRow(usage, options) {
912
+ return {
913
+ label: "background-memory",
914
+ sessionId: options.sessionId,
915
+ repoIdentity: options.repoIdentity,
916
+ timestamp: (options.now ?? /* @__PURE__ */ new Date()).toISOString(),
917
+ target: usage.targetId,
918
+ attributedModelId: usage.attributedModelId,
919
+ usage: {
920
+ input: usage.input,
921
+ output: usage.output,
922
+ cacheRead: usage.cacheRead,
923
+ cacheWrite: usage.cacheWrite,
924
+ reasoning: usage.reasoning,
925
+ totalTokens: usage.totalTokens,
926
+ costUsd: usage.costUsd,
927
+ costProvenance: usage.costProvenance
928
+ },
929
+ timing: { durationMs: usage.durationMs },
930
+ ...usage.backend === null ? {} : {
931
+ promptCache: {
932
+ promptTokens: usage.backend.promptTokens,
933
+ cachedTokens: usage.backend.cachedTokens,
934
+ uncachedPrefillTokens: uncachedPrefillTokens({
935
+ promptTokens: usage.backend.promptTokens,
936
+ cachedTokens: usage.backend.cachedTokens,
937
+ predictedTokens: 0,
938
+ promptMs: usage.backend.promptMs,
939
+ predictedMs: 0,
940
+ source: "llamacpp-timings"
941
+ }),
942
+ promptMs: usage.backend.promptMs,
943
+ source: usage.backend.source
944
+ }
945
+ }
946
+ };
947
+ }
948
+ function recordBackgroundMemoryStep(input) {
949
+ input.observability?.recordTokens(
950
+ input.usage.targetId,
951
+ input.usage.attributedModelId,
952
+ input.usage.totalTokens,
953
+ input.usage.costUsd,
954
+ {
955
+ input: input.usage.input,
956
+ output: input.usage.output,
957
+ cacheRead: input.usage.cacheRead,
958
+ cacheWrite: input.usage.cacheWrite,
959
+ reasoningTokens: input.usage.reasoning,
960
+ totalTokens: input.usage.totalTokens,
961
+ apiCalls: 1
962
+ },
963
+ input.usage.costProvenance,
964
+ void 0,
965
+ "background-memory"
966
+ );
967
+ const row = backgroundMemoryUsageRow(input.usage, {
968
+ sessionId: input.sessionId,
969
+ repoIdentity: input.repoIdentity,
970
+ ...input.now === void 0 ? {} : { now: input.now }
971
+ });
972
+ (input.appendRow ?? appendOutOfTurnUsageRow)(input.stateDir, row);
973
+ return row;
974
+ }
975
+
691
976
  // src/domains/observability/index.ts
692
977
  var ObservabilityDomainModule = {
693
978
  manifest: ObservabilityManifest,
@@ -701,10 +986,8 @@ function createObservabilityDomainModule(options = {}) {
701
986
  }
702
987
 
703
988
  export {
704
- readAccountabilitySummary,
705
- resolveDispatchFailureStatus,
706
989
  recordBackgroundMemoryStep,
707
990
  ObservabilityDomainModule,
708
991
  createObservabilityDomainModule
709
992
  };
710
- //# sourceMappingURL=chunk-HKMD33FO.js.map
993
+ //# sourceMappingURL=chunk-Y55JBDO5.js.map