@iowarp/clio-coder 0.4.3 → 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 (340) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/README.md +1 -1
  3. package/dist/{acp-H2NGRPWO.js → acp-WNAYYF4F.js} +4 -5
  4. package/dist/{agents-TL5LLUQP.js → agents-3OKXHLOI.js} +33 -31
  5. package/dist/assets/codewiki.json +1 -1
  6. package/dist/{auth-E5SW4HMS.js → auth-VKNNMGPU.js} +10 -11
  7. package/dist/{builtins-IA7V7FUC.js → builtins-WGALA46I.js} +4 -4
  8. package/dist/{chunk-F5JHEYZM.js → chunk-23L32XTI.js} +10 -7
  9. package/dist/{chunk-DWUOQKRU.js → chunk-25QBEXRS.js} +2 -2
  10. package/dist/{chunk-LLDJM5XK.js → chunk-26QSH3EJ.js} +2 -2
  11. package/dist/{chunk-N2Z7HLVY.js → chunk-2ASED4PZ.js} +10 -10
  12. package/dist/{chunk-MCEPRMZW.js → chunk-2CU2H6KE.js} +2 -2
  13. package/dist/chunk-2DSOYNFC.js +108 -0
  14. package/dist/{chunk-LDJG7DW3.js → chunk-2ZSONWVL.js} +4 -4
  15. package/dist/{chunk-GI7YYQ3F.js → chunk-36CT5VVL.js} +324 -41
  16. package/dist/{chunk-4UVU7BJ5.js → chunk-3GY4F45V.js} +2 -2
  17. package/dist/{chunk-PUVDKJ2Y.js → chunk-3ODX73FK.js} +3 -5
  18. package/dist/{chunk-IUE3Y34X.js → chunk-3UNOLWNZ.js} +2 -2
  19. package/dist/{chunk-6PTFB5VS.js → chunk-3UUXNFEX.js} +8 -4
  20. package/dist/{chunk-2APPQIER.js → chunk-4M6Z5QVF.js} +4 -4
  21. package/dist/{chunk-K6BSR66V.js → chunk-4NSRCOYP.js} +4 -1
  22. package/dist/{chunk-JGRC33J2.js → chunk-54X7T7DK.js} +12 -3
  23. package/dist/{chunk-YQWYVTMC.js → chunk-5636DCO5.js} +4 -4
  24. package/dist/{chunk-7E7I3WLS.js → chunk-57XXR6DR.js} +23 -22
  25. package/dist/{chunk-7ZYNNDKC.js → chunk-5TUB6SLS.js} +2 -2
  26. package/dist/{chunk-VW6DOEDG.js → chunk-6OSVSQL5.js} +11 -2
  27. package/dist/{chunk-L47TF46W.js → chunk-6PAZTBPA.js} +14 -2
  28. package/dist/{chunk-XIVNBFZS.js → chunk-6Q3CYFD3.js} +34 -16
  29. package/dist/{chunk-RSJ25QSL.js → chunk-6QOTUPRG.js} +155 -36
  30. package/dist/{chunk-JKKCYP3C.js → chunk-6UINWWS6.js} +10 -4
  31. package/dist/{chunk-WBKFA554.js → chunk-72YIHOZQ.js} +2 -2
  32. package/dist/{chunk-PAJQJ7BS.js → chunk-75W7L2E2.js} +246 -697
  33. package/dist/{chunk-RRNP2ANY.js → chunk-7UGL4MB5.js} +4 -4
  34. package/dist/{chunk-EKCHAPYA.js → chunk-AUPNRN7C.js} +2 -2
  35. package/dist/{chunk-ZDN3Y73Y.js → chunk-BJVFZO5U.js} +6 -48
  36. package/dist/{chunk-IWT4SF4R.js → chunk-CUSRQKPU.js} +64 -2
  37. package/dist/{chunk-SKHCAU7K.js → chunk-DQOVN6KV.js} +3 -2
  38. package/dist/{chunk-ZWPRK62N.js → chunk-DT3LWJOB.js} +4 -4
  39. package/dist/chunk-DXKJURES.js +671 -0
  40. package/dist/{chunk-BEPZRGGU.js → chunk-EL24TAU4.js} +2 -2
  41. package/dist/{chunk-OML5D5V5.js → chunk-ELWDPP3Y.js} +5 -5
  42. package/dist/{chunk-NDINPTJ4.js → chunk-ELZVTCGV.js} +5 -4
  43. package/dist/chunk-EXLD33WO.js +381 -0
  44. package/dist/{chunk-IJNZMHLA.js → chunk-FEAXX7B6.js} +2 -2
  45. package/dist/{chunk-TM6LQDI3.js → chunk-FFUPXJC4.js} +74 -323
  46. package/dist/chunk-GX5WYQO4.js +59 -0
  47. package/dist/chunk-I2DWJ4GM.js +390 -0
  48. package/dist/{chunk-TXOTCRLG.js → chunk-I5FWO7L5.js} +5 -5
  49. package/dist/chunk-IRXAATOX.js +539 -0
  50. package/dist/chunk-IXIY2H4R.js +44 -0
  51. package/dist/{chunk-KK4JZPBQ.js → chunk-IZXGRF7P.js} +76 -10
  52. package/dist/{chunk-5TSRNF4G.js → chunk-JCI2ROMZ.js} +164 -6
  53. package/dist/{chunk-INY6HTFL.js → chunk-JEIYHLOR.js} +2 -2
  54. package/dist/{chunk-MUW2BDDH.js → chunk-JQLNNIKT.js} +2 -2
  55. package/dist/{chunk-XPWWI35G.js → chunk-JSD46VO2.js} +19 -8
  56. package/dist/{chunk-VA5FNYMT.js → chunk-JT2RFCC5.js} +39 -2
  57. package/dist/{chunk-V2ANDPVT.js → chunk-K6T2ZAMZ.js} +168 -6
  58. package/dist/{chunk-B4OAX3SI.js → chunk-KFV5L5SK.js} +13 -6
  59. package/dist/{chunk-JEQ3XTHC.js → chunk-LLXSDWXS.js} +2 -2
  60. package/dist/{chunk-E3TPLWFX.js → chunk-LTIKRKFL.js} +3 -3
  61. package/dist/{chunk-NIQJ66N4.js → chunk-N56KALIC.js} +17 -17
  62. package/dist/{chunk-JDAY6FIL.js → chunk-NAI6ZFCY.js} +13 -9
  63. package/dist/{chunk-AF4YM7Z4.js → chunk-NRO2BJRH.js} +2490 -2182
  64. package/dist/{chunk-WRBAGUNF.js → chunk-NXIMQY5W.js} +2 -2
  65. package/dist/{chunk-I7ZPNEJM.js → chunk-NXYCB2VD.js} +5 -5
  66. package/dist/chunk-ODGTEFFI.js +50 -0
  67. package/dist/{chunk-2VIKGWFZ.js → chunk-OEJSLEPW.js} +2 -2
  68. package/dist/{chunk-KKOJXO6R.js → chunk-OMQNJVKW.js} +4 -2
  69. package/dist/{chunk-54CBCGIR.js → chunk-Q4WO54TA.js} +132 -77
  70. package/dist/{chunk-B4VEBZKF.js → chunk-QUFRYSWI.js} +12 -6
  71. package/dist/{chunk-42FMPA75.js → chunk-QZWQA4DE.js} +2 -2
  72. package/dist/{chunk-HEQY7ZFI.js → chunk-RAY4OVGZ.js} +2 -2
  73. package/dist/{chunk-G76U63X4.js → chunk-RQCKCSRL.js} +7 -7
  74. package/dist/{chunk-64I3JVYM.js → chunk-RXTN6AKH.js} +2 -2
  75. package/dist/{chunk-UPZU6GE4.js → chunk-RZDWV63N.js} +3 -3
  76. package/dist/{chunk-2UH2KFUP.js → chunk-S6PYF2XF.js} +2 -2
  77. package/dist/{chunk-JSC3U7TI.js → chunk-TOIVGRUX.js} +2 -2
  78. package/dist/{chunk-7DRAWPTZ.js → chunk-TQAHXW6Y.js} +1 -1
  79. package/dist/{chunk-JIEGK6UF.js → chunk-U6TMQNSI.js} +48 -4
  80. package/dist/{chunk-AX2THNSA.js → chunk-UEPWCCTY.js} +4 -4
  81. package/dist/{chunk-QWGDJJYJ.js → chunk-USR47QNF.js} +4 -4
  82. package/dist/{chunk-Y3CBHOR6.js → chunk-V6HJFQZE.js} +2 -2
  83. package/dist/chunk-V76WTFTW.js +318 -0
  84. package/dist/{chunk-NMJXSHBJ.js → chunk-W54I7H25.js} +2 -2
  85. package/dist/{chunk-2UG5F4C5.js → chunk-XULDXHTN.js} +24 -12
  86. package/dist/chunk-XXYSBZIQ.js +283 -0
  87. package/dist/{chunk-MWUZBSAQ.js → chunk-Y55JBDO5.js} +331 -51
  88. package/dist/{chunk-W6RRQCPQ.js → chunk-YD5GIKET.js} +4 -4
  89. package/dist/{chunk-CE5AX47J.js → chunk-YECAMM3D.js} +2 -2
  90. package/dist/{chunk-WCXUNS7U.js → chunk-YNFKXPEC.js} +6 -6
  91. package/dist/cli/index.js +36 -35
  92. package/dist/{clio-CMMK4KRR.js → clio-QLICPCF5.js} +2 -2
  93. package/dist/{code-nav-MDZNQS33.js → code-nav-IJR2DBPR.js} +6 -6
  94. package/dist/{components-UCUQ4QXW.js → components-2TGAI2RC.js} +3 -4
  95. package/dist/{config-SVM5P5YI.js → config-IUA6OYNS.js} +52 -47
  96. package/dist/{configure-LE3IK2TJ.js → configure-VEPX4NMX.js} +14 -15
  97. package/dist/{context-VNCR7KAG.js → context-2DKHWH2T.js} +23 -23
  98. package/dist/{context-2OHRKS42.js → context-4MPR7WKB.js} +48 -42
  99. package/dist/{context-E3VC7RX5.js → context-BOYF5EJM.js} +11 -11
  100. package/dist/{context-clear-BW4O37TG.js → context-clear-S4ZJCQUX.js} +48 -42
  101. package/dist/{context-working-set-VDS25HXZ.js → context-working-set-3I3FYX6Y.js} +8 -8
  102. package/dist/detail-A7JAVSIG.js +98 -0
  103. package/dist/{dispatch-runner-5AHT53RF.js → dispatch-runner-RJ5I2F2O.js} +71 -58
  104. package/dist/{docs-PD3EXDKU.js → docs-SPOV3BAN.js} +3 -5
  105. package/dist/{doctor-WNNVO6FY.js → doctor-DKICC2SN.js} +54 -31
  106. package/dist/{eval-7G7SGAYO.js → eval-OQOQUDHK.js} +47 -56
  107. package/dist/{evidence-VD6736FQ.js → evidence-4DQ25GUQ.js} +53 -150
  108. package/dist/evidence-4F5USFKH.js +208 -0
  109. package/dist/{evolve-AL3NGVRL.js → evolve-GSS52E5J.js} +44 -41
  110. package/dist/{extensions-MOVJ32NM.js → extensions-G7MFLYHT.js} +4 -5
  111. package/dist/{fleet-QZHUMAGI.js → fleet-Q37YHHAQ.js} +74 -68
  112. package/dist/{fleet-commands-BAYT5FJZ.js → fleet-commands-G7E4N7SM.js} +14 -11
  113. package/dist/{fleet-decisions-IREVMRU4.js → fleet-decisions-O7M6QBA2.js} +6 -6
  114. package/dist/{fleet-graph-YCTT3HTI.js → fleet-graph-TOUBW6OW.js} +13 -13
  115. package/dist/{fleet-inspect-QVJTDAVB.js → fleet-inspect-SW33JJNI.js} +43 -39
  116. package/dist/{fleet-preflight-25QAFPK4.js → fleet-preflight-CV2655TW.js} +2 -3
  117. package/dist/{fleet-validate-5O57AAJ7.js → fleet-validate-KESZX2YH.js} +16 -16
  118. package/dist/{fleet-verify-CPH2W2T6.js → fleet-verify-UQPMTVE3.js} +42 -38
  119. package/dist/{fleet-view-SWBR3VGQ.js → fleet-view-MN2VG4MR.js} +43 -39
  120. package/dist/{init-J477LKZH.js → init-PXEXQSBF.js} +60 -54
  121. package/dist/{interop-3FCM6XLG.js → interop-ZG5T62U3.js} +6 -7
  122. package/dist/inventory-C26CFDRR.js +101 -0
  123. package/dist/{library-QUQEIUG6.js → library-B2W4N74O.js} +16 -17
  124. package/dist/{memory-SGGSEP65.js → memory-YCANYS5A.js} +45 -42
  125. package/dist/{models-HEKUAXXK.js → models-GERTU3YI.js} +20 -22
  126. package/dist/{monitor-HKU57TYQ.js → monitor-CPNIUULB.js} +50 -44
  127. package/dist/{orchestrator-VDFAEFAI.js → orchestrator-J4BSH4WQ.js} +491 -1182
  128. package/dist/{panes-DN2SSFOH.js → panes-BOHAEGYC.js} +3 -3
  129. package/dist/{panes-TALGNPZT.js → panes-NXSLDQZ2.js} +5 -6
  130. package/dist/{paths-NBMFAIEZ.js → paths-VSUWNC22.js} +3 -4
  131. package/dist/{reset-EAJFFJVB.js → reset-TNWTB5LU.js} +5 -6
  132. package/dist/{resources-OVKSEFVE.js → resources-4PXNMD5G.js} +14 -14
  133. package/dist/{run-7DP7ZF2J.js → run-D6XJ34CN.js} +79 -83
  134. package/dist/{share-WML67FT3.js → share-2NWMJJEE.js} +14 -15
  135. package/dist/{skills-SG662R2K.js → skills-KR7WON5G.js} +18 -19
  136. package/dist/{skills-eval-VVZEUU46.js → skills-eval-O2ZNOLDS.js} +49 -46
  137. package/dist/{skills-inventory-I2E23GET.js → skills-inventory-ZZOUBK7O.js} +14 -14
  138. package/dist/{slash-commands-S7MBJDQK.js → slash-commands-ZXPJD64J.js} +32 -23
  139. package/dist/{steer-2LQOMCPB.js → steer-XA25PSCS.js} +3 -3
  140. package/dist/{support-CC2UJBJ6.js → support-7EMVWYG2.js} +2 -2
  141. package/dist/{targets-4QC3HIEW.js → targets-OMH2XCSN.js} +25 -27
  142. package/dist/tasks-IPAGMEIX.js +36 -0
  143. package/dist/{terminal-lease-TUHIJ6Y2.js → terminal-lease-C2J3JYRE.js} +4 -4
  144. package/dist/{tools-TFGJICCU.js → tools-EFFEAIDP.js} +5 -6
  145. package/dist/{uninstall-5PEVOE5B.js → uninstall-HALS6BLF.js} +7 -8
  146. package/dist/{upgrade-M4WXY6KN.js → upgrade-MS72RJEP.js} +14 -11
  147. package/dist/{usage-N7ZNVLEM.js → usage-NHG6MCJM.js} +60 -51
  148. package/dist/{verifiers-DJTP4XX6.js → verifiers-7AUNVXDY.js} +150 -17
  149. package/dist/{verify-RWE4PPEK.js → verify-FWYGPKMR.js} +12 -10
  150. package/dist/{web-fetch-MPARV2K7.js → web-fetch-V4FKSDAV.js} +4 -4
  151. package/dist/{wiki-generate-C7IQOXSP.js → wiki-generate-743CIGJW.js} +63 -56
  152. package/dist/{with-panes-4GCGSL7J.js → with-panes-BDQEWBRT.js} +2 -2
  153. package/dist/worker/entry.js +36 -33
  154. package/docs/README.md +3 -2
  155. package/docs/architecture/acp.md +17 -0
  156. package/docs/architecture/artifact-versions.md +1 -1
  157. package/docs/architecture/dispatch-typed-intent.md +1 -1
  158. package/docs/architecture/evidence-and-memory.md +1 -1
  159. package/docs/architecture/observability.md +7 -1
  160. package/docs/architecture/prompt-envelope-and-tools.md +15 -5
  161. package/docs/architecture/safety-model.md +10 -17
  162. package/docs/architecture/tui-design.md +1 -1
  163. package/docs/guide/built-in-agents.md +8 -8
  164. package/docs/guide/commands-and-modes.md +17 -2
  165. package/docs/guide/configuration-and-targets.md +3 -1
  166. package/docs/guide/configuration-reference.md +10 -5
  167. package/docs/guide/environment-variables.md +2 -2
  168. package/docs/guide/tool-usage.md +78 -3
  169. package/docs/history/config-knobs-audit.md +2 -2
  170. package/docs/process/development-pipeline.md +6 -1
  171. package/docs/process/git-commit-provenance.md +15 -0
  172. package/docs/process/release-cut-checklist.md +207 -0
  173. package/docs/process/scientific-validation.md +18 -17
  174. package/evals/behavioral-machinery-support.ts +1 -0
  175. package/evals/behavioral-machinery.yaml +1 -1
  176. package/package.json +1 -1
  177. package/skills/coding/coding-standards/SKILL.md +14 -4
  178. package/skills/context/context-handoff/SKILL.md +3 -3
  179. package/skills/context/context-prime/SKILL.md +3 -3
  180. package/skills/planning/architecture/SKILL.md +5 -5
  181. package/skills/planning/backlog/SKILL.md +4 -4
  182. package/skills/planning/prd/SKILL.md +4 -3
  183. package/skills/planning/product-intent/SKILL.md +8 -8
  184. package/skills/planning/tech-spec/SKILL.md +4 -4
  185. package/skills/registry.yaml +32 -32
  186. package/skills/research/arxiv-literature/SKILL.md +3 -3
  187. package/skills/research/experiment-protocol/SKILL.md +3 -3
  188. package/skills/research/scientific-debugging/SKILL.md +3 -2
  189. package/skills/research/scientific-modernization/SKILL.md +3 -3
  190. package/skills/skill-marketplace.json +16 -16
  191. package/skills/workflow/cut-it/SKILL.md +3 -4
  192. package/skills/workflow/design-council/SKILL.md +5 -10
  193. package/skills/workflow/grill-me/SKILL.md +14 -15
  194. package/skills/workflow/workflow-distiller/SKILL.md +4 -4
  195. package/src/cli/args.ts +0 -8
  196. package/src/cli/configure.ts +2 -1
  197. package/src/cli/doctor-state-size.ts +1 -12
  198. package/src/cli/doctor-validation-contract.ts +28 -0
  199. package/src/cli/doctor.ts +5 -0
  200. package/src/cli/evidence-detail.ts +1 -75
  201. package/src/cli/evidence-inventory.ts +1 -167
  202. package/src/cli/index.ts +2 -0
  203. package/src/cli/run.ts +0 -2
  204. package/src/cli/targets.ts +1 -1
  205. package/src/cli/tasks.ts +84 -0
  206. package/src/cli/upgrade.ts +10 -5
  207. package/src/cli/usage.ts +6 -0
  208. package/src/cli/verifiers.ts +147 -1
  209. package/src/cli/wiki-generate.ts +1 -0
  210. package/src/core/commit-attribution.ts +41 -1
  211. package/src/core/git-commit-attribution.ts +46 -3
  212. package/src/core/run-overrides.ts +0 -5
  213. package/src/core/skill-activation.ts +3 -0
  214. package/src/core/tool-names.ts +5 -2
  215. package/src/domains/agents/builtins/architect.md +1 -1
  216. package/src/domains/agents/builtins/coder.md +1 -1
  217. package/src/domains/agents/builtins/documenter.md +1 -1
  218. package/src/domains/agents/builtins/git-master.md +1 -1
  219. package/src/domains/agents/builtins/provenance.md +7 -7
  220. package/src/domains/agents/builtins/tester.md +1 -1
  221. package/src/domains/agents/builtins/verifier.md +2 -2
  222. package/src/domains/agents/builtins/wiki-writer.md +4 -3
  223. package/src/domains/context/extension.ts +31 -7
  224. package/src/domains/context/refresh.ts +3 -0
  225. package/src/domains/context/wiki/frontmatter.ts +5 -2
  226. package/src/domains/context/wiki/generate.ts +6 -0
  227. package/src/domains/context/wiki/prompts.ts +43 -0
  228. package/src/domains/dispatch/active-route-planner.ts +4 -0
  229. package/src/domains/dispatch/code-step.ts +11 -4
  230. package/src/domains/dispatch/contract.ts +31 -7
  231. package/src/domains/dispatch/execution-scheduler.ts +2 -0
  232. package/src/domains/dispatch/extension.ts +50 -27
  233. package/src/domains/dispatch/fleet-commit-attribution.ts +5 -0
  234. package/src/domains/dispatch/fleet-run.ts +1 -0
  235. package/src/domains/dispatch/host-verification.ts +114 -13
  236. package/src/domains/dispatch/intent.ts +28 -18
  237. package/src/domains/dispatch/orphan-recovery.ts +2 -0
  238. package/src/domains/dispatch/receipt-integrity.ts +4 -0
  239. package/src/domains/dispatch/reservation-store.ts +5 -3
  240. package/src/domains/dispatch/state.ts +15 -2
  241. package/src/domains/dispatch/types.ts +17 -2
  242. package/src/domains/eval/runners/clio-run.ts +12 -9
  243. package/src/domains/eval/runners/context-index.ts +2 -7
  244. package/src/domains/eval/runners/context-init.ts +3 -6
  245. package/src/domains/eval/runners/external-command.ts +29 -11
  246. package/src/domains/evidence/build.ts +102 -15
  247. package/src/domains/evidence/detail.ts +69 -0
  248. package/src/domains/evidence/eval.ts +13 -1
  249. package/src/domains/evidence/finish-contract-map.ts +5 -1
  250. package/src/domains/evidence/inventory.ts +167 -0
  251. package/src/domains/evidence/store.ts +16 -0
  252. package/src/domains/evidence/types.ts +12 -0
  253. package/src/domains/extensions/resources.ts +7 -0
  254. package/src/domains/middleware/marketplace-offer.ts +20 -1
  255. package/src/domains/middleware/runtime.ts +7 -3
  256. package/src/domains/mux/detect.ts +3 -6
  257. package/src/domains/observability/accountability.ts +15 -1
  258. package/src/domains/observability/contract.ts +52 -7
  259. package/src/domains/observability/evidence-index.ts +10 -0
  260. package/src/domains/observability/extension.ts +9 -5
  261. package/src/domains/observability/projection.ts +394 -45
  262. package/src/{interactive → domains/observability}/worker-progress.ts +3 -3
  263. package/src/domains/prompts/fragments/operating/contract.md +2 -0
  264. package/src/domains/prompts/fragments/wiki/page.md +8 -0
  265. package/src/domains/providers/model-discovery.ts +1 -4
  266. package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +16 -14
  267. package/src/domains/providers/runtimes/claude/claude-code.ts +9 -0
  268. package/src/domains/providers/support.ts +1 -1
  269. package/src/domains/providers/types/runtime-descriptor.ts +1 -1
  270. package/src/domains/safety/action-classifier.ts +7 -0
  271. package/src/domains/safety/default-path-policy.ts +2 -0
  272. package/src/domains/safety/finish-contract-registration.ts +29 -14
  273. package/src/domains/safety/finish-contract.ts +252 -40
  274. package/src/domains/safety/index.ts +20 -1
  275. package/src/domains/safety/policy-engine.ts +26 -6
  276. package/src/domains/safety/rigor.ts +53 -39
  277. package/src/domains/safety/validation-contract.ts +388 -0
  278. package/src/domains/session/archive-readers.ts +10 -1
  279. package/src/domains/session/decision-board.ts +101 -2
  280. package/src/domains/session/entries.ts +44 -7
  281. package/src/domains/session/extension.ts +4 -4
  282. package/src/domains/session/handoff.ts +2 -1
  283. package/src/domains/session/manager.ts +2 -3
  284. package/src/domains/session/task-board.ts +14 -1
  285. package/src/domains/session/tree/fork.ts +1 -2
  286. package/src/domains/session/tree/navigator.ts +1 -1
  287. package/src/domains/user-tasks/acceptance.ts +56 -0
  288. package/src/domains/user-tasks/active-acceptance.ts +40 -0
  289. package/src/domains/user-tasks/store.ts +34 -3
  290. package/src/engine/acp/adapter.ts +24 -6
  291. package/src/engine/acp/server.ts +21 -4
  292. package/src/engine/acp/transport.ts +53 -8
  293. package/src/engine/acp/types.ts +4 -0
  294. package/src/engine/apis/ollama-native.ts +15 -0
  295. package/src/engine/claude/subprocess-runtime.ts +107 -60
  296. package/src/engine/external-subprocess.ts +12 -4
  297. package/src/entry/orchestrator.ts +11 -2
  298. package/src/interactive/dispatch-board.ts +46 -717
  299. package/src/interactive/fleet-run-preview.ts +2 -1
  300. package/src/interactive/interactive-application.ts +3 -2
  301. package/src/interactive/interactive-presentation.ts +55 -12
  302. package/src/interactive/interactive-slash-runtime.ts +2 -1
  303. package/src/interactive/oracle.ts +5 -2
  304. package/src/interactive/overlays/fleet-run-approval.ts +3 -2
  305. package/src/interactive/overlays/message-picker.ts +2 -2
  306. package/src/interactive/overlays/settings.ts +2 -2
  307. package/src/interactive/overlays/tree-selector.ts +2 -2
  308. package/src/interactive/renderers/branch-summary.ts +1 -1
  309. package/src/interactive/slash-autocomplete.ts +4 -6
  310. package/src/interactive/slash-commands.ts +25 -39
  311. package/src/interactive/slash-spec.ts +28 -0
  312. package/src/interactive/view/artifacts.ts +2 -0
  313. package/src/interactive/worker-stream.ts +7 -3
  314. package/src/tools/bootstrap.ts +4 -0
  315. package/src/tools/builtin-tool-catalog.ts +31 -0
  316. package/src/tools/compete-worktrees.ts +7 -1
  317. package/src/tools/core-bootstrap.ts +16 -0
  318. package/src/tools/decide.ts +136 -0
  319. package/src/tools/dispatch-admission.ts +21 -0
  320. package/src/tools/dispatch-plan.ts +5 -2
  321. package/src/tools/dispatch-runner.ts +15 -1
  322. package/src/tools/dispatch-types.ts +6 -0
  323. package/src/tools/evidence.ts +96 -0
  324. package/src/tools/limitation.ts +76 -0
  325. package/src/tools/policy.ts +9 -0
  326. package/src/tools/presentation.ts +3 -0
  327. package/src/tools/registry.ts +1 -1
  328. package/src/tools/result-shaping.ts +17 -5
  329. package/src/tools/task-worktree.ts +13 -3
  330. package/src/tools/tasks.ts +10 -1
  331. package/src/tools/verify/authoring.ts +170 -83
  332. package/src/tools/verify/catalog.ts +122 -5
  333. package/src/tools/verify/index.ts +2 -1
  334. package/src/tools/verify/numeric.ts +298 -0
  335. package/src/tools/verify/perf.ts +143 -0
  336. package/src/tools/verify/scripts.ts +229 -2
  337. package/dist/chunk-7DICMOS6.js +0 -313
  338. package/dist/chunk-RVG5JXAL.js +0 -41
  339. package/dist/chunk-T56WDKA5.js +0 -183
  340. package/dist/chunk-VPKWYKEY.js +0 -169
@@ -1,26 +1,33 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
3
  runVectorTool
4
- } from "./chunk-ZDN3Y73Y.js";
4
+ } from "./chunk-BJVFZO5U.js";
5
5
  import {
6
6
  PROJECT_VERIFIER_CATALOG_RELATIVE_PATH,
7
+ compareNumeric,
8
+ evaluatePerfBudget,
7
9
  loadProjectVerifierCatalog,
8
10
  packageDeclaredCheck,
11
+ parseNumericPayload,
12
+ parsePerfBaseline,
13
+ renderNumericReport,
14
+ renderPerfBaseline,
9
15
  resolveProjectVerifierExecutionCwd
10
- } from "./chunk-7DICMOS6.js";
16
+ } from "./chunk-DXKJURES.js";
11
17
  import {
12
18
  declaredVerificationScripts
13
19
  } from "./chunk-UL3WSD3F.js";
14
20
  import {
15
- resolveSafeCwd
16
- } from "./chunk-JSC3U7TI.js";
21
+ resolveSafeCwd,
22
+ runCommandVector
23
+ } from "./chunk-TOIVGRUX.js";
17
24
  import {
18
25
  init_esm_shims
19
26
  } from "./chunk-3R73A4XB.js";
20
27
 
21
28
  // src/tools/verify/scripts.ts
22
29
  init_esm_shims();
23
- import { existsSync, readFileSync } from "node:fs";
30
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
24
31
  import path from "node:path";
25
32
  function repositoryRelativeCwd(workspaceRoot, resolved) {
26
33
  const relative = path.relative(workspaceRoot, resolved);
@@ -174,6 +181,7 @@ function withDeclaredEvidence(result, check) {
174
181
  ...result.details,
175
182
  action: "verify",
176
183
  check: check.id,
184
+ kind: check.kind,
177
185
  source: { ...check.source },
178
186
  description: check.description,
179
187
  declaredCommand: [...check.command],
@@ -183,14 +191,165 @@ function withDeclaredEvidence(result, check) {
183
191
  }
184
192
  };
185
193
  }
194
+ function extractNumericPayloadText(output) {
195
+ const trimmed = output.trim();
196
+ try {
197
+ JSON.parse(trimmed);
198
+ return trimmed;
199
+ } catch {
200
+ const start = trimmed.indexOf("{");
201
+ const end = trimmed.lastIndexOf("}");
202
+ return start >= 0 && end > start ? trimmed.slice(start, end + 1) : trimmed;
203
+ }
204
+ }
205
+ function readCheckFile(workspaceRoot, relative, label) {
206
+ let resolved;
207
+ try {
208
+ resolved = resolveSafeCwd(relative, workspaceRoot);
209
+ } catch (error) {
210
+ return new Error(`${label} ${error instanceof Error ? error.message : String(error)}`);
211
+ }
212
+ if (!existsSync(resolved)) return new Error(`${label} '${relative}' does not exist`);
213
+ try {
214
+ return readFileSync(resolved, "utf8");
215
+ } catch (error) {
216
+ return new Error(`${label} '${relative}' cannot be read (${error instanceof Error ? error.message : String(error)})`);
217
+ }
218
+ }
219
+ function judgeNumericTexts(stdout, referenceText, tolerance, referenceLabel) {
220
+ const reference = parseNumericPayload(referenceText, referenceLabel);
221
+ if (reference instanceof Error) return reference;
222
+ const actual = parseNumericPayload(extractNumericPayloadText(stdout), "command output");
223
+ if (actual instanceof Error) return actual;
224
+ return compareNumeric(actual, reference, tolerance);
225
+ }
226
+ function judgeNumericCompare(stdout, numeric, workspaceRoot) {
227
+ const referenceText = readCheckFile(workspaceRoot, numeric.reference, "reference");
228
+ if (referenceText instanceof Error) return referenceText;
229
+ return judgeNumericTexts(stdout, referenceText, numeric.tolerance, `reference '${numeric.reference}'`);
230
+ }
231
+ function judgePerfTexts(measuredMs, perf, baselineText, baselineLabel) {
232
+ let baseline;
233
+ if (perf.baseline !== void 0) {
234
+ if (baselineText === void 0) {
235
+ return new Error(`${baselineLabel} is missing; record it with \`clio-coder verifiers baseline <id>\``);
236
+ }
237
+ const parsed = parsePerfBaseline(baselineText, baselineLabel);
238
+ if (parsed instanceof Error) return parsed;
239
+ baseline = parsed;
240
+ }
241
+ return evaluatePerfBudget(measuredMs, {
242
+ ...perf.budget !== void 0 ? { budget: perf.budget } : {},
243
+ ...baseline !== void 0 ? { baseline } : {},
244
+ ...perf.tolerance?.relative !== void 0 ? { relative: perf.tolerance.relative } : {}
245
+ });
246
+ }
247
+ function judgePerfBudget(measuredMs, perf, workspaceRoot) {
248
+ let baselineText;
249
+ if (perf.baseline !== void 0) {
250
+ const text = readCheckFile(workspaceRoot, perf.baseline, "baseline");
251
+ if (text instanceof Error) {
252
+ return new Error(`${text.message}; record it with \`clio-coder verifiers baseline <id>\``);
253
+ }
254
+ baselineText = text;
255
+ }
256
+ return judgePerfTexts(measuredMs, perf, baselineText, `baseline '${perf.baseline ?? ""}'`);
257
+ }
258
+ function commandFacts(result) {
259
+ return {
260
+ command: [result.file, ...result.args].join(" "),
261
+ argv: [result.file, ...result.args],
262
+ cwd: result.cwd,
263
+ exitCode: result.exitCode,
264
+ durationMs: result.durationMs,
265
+ aborted: result.aborted,
266
+ timedOut: result.timedOut,
267
+ outputCapped: result.outputCapped
268
+ };
269
+ }
270
+ async function runJudgedCheck(check, file, vector, cwd, options) {
271
+ let result;
272
+ try {
273
+ result = await runCommandVector(file, vector, {
274
+ cwd,
275
+ timeoutMs: check.timeoutMs,
276
+ ...options?.signal !== void 0 ? { signal: options.signal } : {}
277
+ });
278
+ } catch (error) {
279
+ return { kind: "error", message: `verify: ${error instanceof Error ? error.message : String(error)}` };
280
+ }
281
+ const facts = commandFacts(result);
282
+ const tail = `${result.stdout}${result.stderr}`.trim().slice(-2e3);
283
+ if (result.aborted) return { kind: "error", message: "verify: aborted", details: facts };
284
+ if (result.timedOut) return { kind: "error", message: `verify: timed out after ${check.timeoutMs}ms`, details: facts };
285
+ if (result.exitCode !== 0) {
286
+ return {
287
+ kind: "error",
288
+ message: `verify: ${check.kind} command exited with code ${result.exitCode ?? "?"} before judgement: ${tail}`,
289
+ details: facts
290
+ };
291
+ }
292
+ const report = check.kind === "numeric-compare" && check.numeric !== void 0 ? judgeNumericCompare(result.stdout, check.numeric, process.cwd()) : check.kind === "perf-budget" && check.perf !== void 0 ? judgePerfBudget(result.durationMs, check.perf, process.cwd()) : new Error(`declared check '${check.id}' has kind ${check.kind} without its parameters`);
293
+ if (report instanceof Error) return { kind: "error", message: `verify: ${report.message}`, details: facts };
294
+ const rendered = report.kind === "numeric-compare" ? renderNumericReport(report) : report.summary;
295
+ const details = { ...facts, report };
296
+ if (!report.passed) return { kind: "error", message: `verify: ${rendered}`, details };
297
+ return { kind: "ok", output: `${rendered}
298
+ `, details };
299
+ }
186
300
  async function runProjectCheck(check, options) {
187
301
  const [file, ...vector] = check.command;
188
302
  if (file === void 0) return { kind: "error", message: `verify: declared check '${check.id}' has empty argv` };
189
303
  const cwd = resolveProjectVerifierExecutionCwd(check.cwd, process.cwd());
190
304
  if (cwd instanceof Error) return { kind: "error", message: `verify: ${cwd.message}` };
305
+ if (check.kind !== "command") {
306
+ return withDeclaredEvidence(await runJudgedCheck(check, file, vector, cwd, options), check);
307
+ }
191
308
  const result = await runVectorTool("verify", file, vector, { cwd, timeout_ms: check.timeoutMs }, options);
192
309
  return withDeclaredEvidence(result, check);
193
310
  }
311
+ async function recordPerfBaseline(check, options) {
312
+ if (check.kind !== "perf-budget" || check.perf?.baseline === void 0) {
313
+ return { ok: false, message: `check '${check.id}' is not a perf-budget check with a baseline path` };
314
+ }
315
+ const [file, ...vector] = check.command;
316
+ if (file === void 0) return { ok: false, message: `declared check '${check.id}' has empty argv` };
317
+ const cwd = resolveProjectVerifierExecutionCwd(check.cwd, process.cwd());
318
+ if (cwd instanceof Error) return { ok: false, message: cwd.message };
319
+ let result;
320
+ try {
321
+ result = await runCommandVector(file, vector, {
322
+ cwd,
323
+ timeoutMs: check.timeoutMs,
324
+ ...options?.signal !== void 0 ? { signal: options.signal } : {}
325
+ });
326
+ } catch (error) {
327
+ return { ok: false, message: error instanceof Error ? error.message : String(error) };
328
+ }
329
+ if (result.aborted || result.timedOut || result.exitCode !== 0) {
330
+ return {
331
+ ok: false,
332
+ message: `command ${result.timedOut ? "timed out" : result.aborted ? "was aborted" : `exited with code ${result.exitCode ?? "?"}`}; no baseline recorded`
333
+ };
334
+ }
335
+ let target;
336
+ try {
337
+ target = resolveSafeCwd(check.perf.baseline, process.cwd());
338
+ } catch (error) {
339
+ return { ok: false, message: `baseline ${error instanceof Error ? error.message : String(error)}` };
340
+ }
341
+ const recordedAt = (options?.now?.() ?? /* @__PURE__ */ new Date()).toISOString();
342
+ try {
343
+ mkdirSync(path.dirname(target), { recursive: true });
344
+ writeFileSync(target, renderPerfBaseline({ wallTimeMs: result.durationMs, check: check.id, recordedAt }), "utf8");
345
+ } catch (error) {
346
+ return {
347
+ ok: false,
348
+ message: `cannot write baseline '${check.perf.baseline}' (${error instanceof Error ? error.message : String(error)})`
349
+ };
350
+ }
351
+ return { ok: true, path: check.perf.baseline, wallTimeMs: result.durationMs };
352
+ }
194
353
  async function runScriptCheck(check, args, options) {
195
354
  let cwd;
196
355
  try {
@@ -236,7 +395,10 @@ export {
236
395
  discoverDeclaredChecksAtRoot,
237
396
  discoverDeclaredChecks,
238
397
  listChecks,
398
+ judgeNumericTexts,
399
+ judgePerfTexts,
239
400
  runProjectCheck,
401
+ recordPerfBaseline,
240
402
  runScriptCheck
241
403
  };
242
- //# sourceMappingURL=chunk-V2ANDPVT.js.map
404
+ //# sourceMappingURL=chunk-K6T2ZAMZ.js.map
@@ -2,17 +2,17 @@ import { createRequire as __clioCreateRequire } from "node:module"; const requir
2
2
  import {
3
3
  extractCommandCdTargets,
4
4
  extractCommandWriteTargets
5
- } from "./chunk-I7ZPNEJM.js";
6
- import {
7
- artifactDefaultPath
8
- } from "./chunk-GYV6VZOC.js";
5
+ } from "./chunk-NXYCB2VD.js";
9
6
  import {
10
7
  canonicalizeExistingPath
11
8
  } from "./chunk-ECH6PKUQ.js";
9
+ import {
10
+ artifactDefaultPath
11
+ } from "./chunk-GYV6VZOC.js";
12
12
  import {
13
13
  ToolNames,
14
14
  isBuiltinToolName
15
- } from "./chunk-K6BSR66V.js";
15
+ } from "./chunk-4NSRCOYP.js";
16
16
  import {
17
17
  init_esm_shims
18
18
  } from "./chunk-3R73A4XB.js";
@@ -80,6 +80,7 @@ function isUnderPrefix(abs, prefix) {
80
80
  }
81
81
  function baseClassify(tool) {
82
82
  switch (tool) {
83
+ case ToolNames.Evidence:
83
84
  case ToolNames.Read:
84
85
  case ToolNames.Grep:
85
86
  case ToolNames.Find:
@@ -106,6 +107,12 @@ function baseClassify(tool) {
106
107
  // or survives the session, so it is reversible, local, and never gated
107
108
  // behind a confirmation.
108
109
  case ToolNames.Panes:
110
+ // limitation appends a typed receipt to the session ledger and touches
111
+ // nothing else, so it is never gated behind a confirmation.
112
+ case ToolNames.Limitation:
113
+ // decide appends the model's own design decision to the session
114
+ // decision board. One ledger append, no workspace effect, never gated.
115
+ case ToolNames.Decide:
109
116
  return "read";
110
117
  case ToolNames.Write:
111
118
  case ToolNames.Edit:
@@ -1481,4 +1488,4 @@ export {
1481
1488
  parseResultContract,
1482
1489
  parseWorkerResultContract
1483
1490
  };
1484
- //# sourceMappingURL=chunk-B4OAX3SI.js.map
1491
+ //# sourceMappingURL=chunk-KFV5L5SK.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-5B2AEOW5.js";
5
5
  import {
6
6
  ToolNames
7
- } from "./chunk-K6BSR66V.js";
7
+ } from "./chunk-4NSRCOYP.js";
8
8
  import {
9
9
  StringEnum
10
10
  } from "./chunk-YPC6ZR5L.js";
@@ -39,4 +39,4 @@ var monitorToolSurface = {
39
39
  export {
40
40
  monitorToolSurface
41
41
  };
42
- //# sourceMappingURL=chunk-JEQ3XTHC.js.map
42
+ //# sourceMappingURL=chunk-LLXSDWXS.js.map
@@ -3,10 +3,10 @@ import {
3
3
  fleetLoopCheckStepId,
4
4
  fleetLoopRepairStepId,
5
5
  fleetStepWriteBoundary
6
- } from "./chunk-2VIKGWFZ.js";
6
+ } from "./chunk-OEJSLEPW.js";
7
7
  import {
8
8
  resultContractShape
9
- } from "./chunk-B4OAX3SI.js";
9
+ } from "./chunk-KFV5L5SK.js";
10
10
  import {
11
11
  init_esm_shims
12
12
  } from "./chunk-3R73A4XB.js";
@@ -435,4 +435,4 @@ export {
435
435
  spliceExecutionPlan,
436
436
  compileFleetExecutionPlan
437
437
  };
438
- //# sourceMappingURL=chunk-E3TPLWFX.js.map
438
+ //# sourceMappingURL=chunk-LTIKRKFL.js.map
@@ -5,48 +5,48 @@ import {
5
5
  import {
6
6
  SchedulingDomainModule,
7
7
  createPromptsDomainModule
8
- } from "./chunk-WCXUNS7U.js";
9
- import {
10
- SafetyDomainModule
11
- } from "./chunk-YQWYVTMC.js";
8
+ } from "./chunk-YNFKXPEC.js";
12
9
  import {
13
10
  ConfigDomainModule,
14
11
  loadDomains
15
- } from "./chunk-WBKFA554.js";
12
+ } from "./chunk-72YIHOZQ.js";
16
13
  import {
17
14
  createObservabilityDomainModule
18
- } from "./chunk-MWUZBSAQ.js";
15
+ } from "./chunk-Y55JBDO5.js";
19
16
  import {
20
17
  fallbackBootstrapOutput
21
- } from "./chunk-KK4JZPBQ.js";
18
+ } from "./chunk-IZXGRF7P.js";
19
+ import {
20
+ SafetyDomainModule
21
+ } from "./chunk-5636DCO5.js";
22
22
  import {
23
23
  renderCodewikiDigest
24
- } from "./chunk-Y3CBHOR6.js";
24
+ } from "./chunk-V6HJFQZE.js";
25
25
  import {
26
26
  ResourcesDomainModule
27
- } from "./chunk-G76U63X4.js";
27
+ } from "./chunk-RQCKCSRL.js";
28
28
  import {
29
29
  AgentsDomainModule
30
- } from "./chunk-UPZU6GE4.js";
30
+ } from "./chunk-RZDWV63N.js";
31
31
  import {
32
32
  DispatchDomainModule
33
- } from "./chunk-AF4YM7Z4.js";
33
+ } from "./chunk-NRO2BJRH.js";
34
34
  import {
35
35
  SessionDomainModule
36
- } from "./chunk-JKKCYP3C.js";
36
+ } from "./chunk-6UINWWS6.js";
37
37
  import {
38
38
  MiddlewareDomainModule
39
- } from "./chunk-2UG5F4C5.js";
39
+ } from "./chunk-XULDXHTN.js";
40
40
  import {
41
41
  UnsupportedResponseSchemaError,
42
42
  isResponseSchemaRejection
43
- } from "./chunk-PAJQJ7BS.js";
43
+ } from "./chunk-75W7L2E2.js";
44
44
  import {
45
45
  parseJsonObjectPayload
46
- } from "./chunk-B4OAX3SI.js";
46
+ } from "./chunk-KFV5L5SK.js";
47
47
  import {
48
48
  ProvidersDomainModule
49
- } from "./chunk-XPWWI35G.js";
49
+ } from "./chunk-JSD46VO2.js";
50
50
  import {
51
51
  init_esm_shims
52
52
  } from "./chunk-3R73A4XB.js";
@@ -675,4 +675,4 @@ export {
675
675
  validateInitOptions,
676
676
  bootstrapInputFromInitOptions
677
677
  };
678
- //# sourceMappingURL=chunk-NIQJ66N4.js.map
678
+ //# sourceMappingURL=chunk-N56KALIC.js.map
@@ -4,14 +4,14 @@ import {
4
4
  truncateHead,
5
5
  truncateTail
6
6
  } from "./chunk-OZNBF4L3.js";
7
- import {
8
- byteLength,
9
- truncateUtf8
10
- } from "./chunk-6XLNIQDB.js";
11
7
  import {
12
8
  createRedactionTally,
13
9
  redactSecretsText
14
10
  } from "./chunk-4BJ5BYCE.js";
11
+ import {
12
+ byteLength,
13
+ truncateUtf8
14
+ } from "./chunk-6XLNIQDB.js";
15
15
  import {
16
16
  GUARDRAIL_DEFAULTS,
17
17
  resolveGuardrail
@@ -555,6 +555,7 @@ function sweepExpiredToolOffloads(now = Date.now()) {
555
555
  const root = join(clioStateDir(), "scratch");
556
556
  const cutoff = now - TOOL_OFFLOAD_MAX_AGE_MS;
557
557
  let removed = 0;
558
+ let skipped = 0;
558
559
  try {
559
560
  for (const session of readdirSync(root, { withFileTypes: true })) {
560
561
  if (!session.isDirectory()) continue;
@@ -566,17 +567,20 @@ function sweepExpiredToolOffloads(now = Date.now()) {
566
567
  if (statSync(path).mtimeMs >= cutoff) continue;
567
568
  rmSync(path, { force: true });
568
569
  removed += 1;
569
- } catch {
570
+ } catch (error) {
571
+ if (error?.code !== "ENOENT") skipped += 1;
570
572
  }
571
573
  }
572
574
  try {
573
575
  if (readdirSync(sessionDir).length === 0) rmdirSync(sessionDir);
574
- } catch {
576
+ } catch (error) {
577
+ if (error?.code !== "ENOENT") skipped += 1;
575
578
  }
576
579
  }
577
- } catch {
580
+ } catch (error) {
581
+ if (error?.code !== "ENOENT") skipped += 1;
578
582
  }
579
- return removed;
583
+ return { removed, skipped };
580
584
  }
581
585
  function writeToolOffload(text, context, maxBytes = RESULT_OFFLOAD_MAX_BYTES, digest = createHash2("sha256").update(text).digest("hex")) {
582
586
  try {
@@ -1097,4 +1101,4 @@ export {
1097
1101
  observationBudgetExhausted,
1098
1102
  finalizeObservation
1099
1103
  };
1100
- //# sourceMappingURL=chunk-JDAY6FIL.js.map
1104
+ //# sourceMappingURL=chunk-NAI6ZFCY.js.map