@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,35 +1,41 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ createWorkerProgressFold
4
+ } from "./chunk-XXYSBZIQ.js";
2
5
  import {
3
6
  PANES_PRESETS,
4
7
  PANES_PRESET_IDS,
5
8
  resolvePanesPresetId
6
9
  } from "./chunk-35MSIRKH.js";
10
+ import {
11
+ acceptanceFromTaskFlags
12
+ } from "./chunk-EXLD33WO.js";
7
13
  import {
8
14
  AdmissionCanceledError,
9
15
  WORKER_OUTPUT_MAX_BYTES,
10
- durableAssistantTextFromEvent
11
- } from "./chunk-T56WDKA5.js";
16
+ decisionRationale
17
+ } from "./chunk-I2DWJ4GM.js";
12
18
  import {
13
19
  SKILL_SURFACE_CLEAR_ARG,
14
20
  parseSkillCommand
15
- } from "./chunk-LDJG7DW3.js";
21
+ } from "./chunk-2ZSONWVL.js";
16
22
  import {
17
23
  TOOL_PROFILE_NAMES,
18
24
  isToolProfileName
19
- } from "./chunk-42FMPA75.js";
25
+ } from "./chunk-QZWQA4DE.js";
20
26
  import {
21
27
  requestExecutionRole
22
28
  } from "./chunk-H7IXIC72.js";
23
29
  import {
24
30
  parseCouncilReport,
25
31
  parseOracleResult
26
- } from "./chunk-B4OAX3SI.js";
32
+ } from "./chunk-KFV5L5SK.js";
27
33
  import {
28
34
  truncateUtf8
29
35
  } from "./chunk-6XLNIQDB.js";
30
36
  import {
31
37
  resolveModelReference
32
- } from "./chunk-XPWWI35G.js";
38
+ } from "./chunk-JSD46VO2.js";
33
39
  import {
34
40
  BusChannels
35
41
  } from "./chunk-F4EKGO4N.js";
@@ -106,12 +112,15 @@ function clamp(text, maxBytes) {
106
112
  return { text: `${buffer.subarray(0, cut).toString("utf8")}${ORACLE_TRUNCATION_MARKER}`, truncated: true };
107
113
  }
108
114
  function decisionLine(decision) {
115
+ const argument = decisionRationale(decision);
116
+ const details = argument ? `
117
+ ${argument}` : "";
109
118
  const label = decision.label ? ` (${decision.label})` : "";
110
119
  if (decision.status === "superseded") {
111
120
  const correction = decision.correction ? `; corrected to ${decision.correction}` : "";
112
- return `- ${decision.key}${label}: ${decision.value} [superseded${correction}]`;
121
+ return `- ${decision.key}${label}: ${decision.value} [superseded${correction}]${details}`;
113
122
  }
114
- return `- ${decision.key}${label}: ${decision.value}`;
123
+ return `- ${decision.key}${label}: ${decision.value}${details}`;
115
124
  }
116
125
  function taskLine(task) {
117
126
  return `- ${task.id} [${task.status}] ${task.title}`;
@@ -368,6 +377,32 @@ function parseArgs(spec, argsLine) {
368
377
  while (index < argsLine.length) {
369
378
  const currentPositionalSpec = positionalSpecs[positionalIndex];
370
379
  if (currentPositionalSpec?.rest) {
380
+ if (currentSpec.parseFlagsInRest) {
381
+ const text = [];
382
+ while (index < argsLine.length) {
383
+ const start = index;
384
+ const read2 = readToken();
385
+ if (!read2) break;
386
+ if (read2.token === "--") {
387
+ text.push(argsLine.slice(index).trim());
388
+ index = argsLine.length;
389
+ break;
390
+ }
391
+ const flag = flagSpecs.find((item) => item.name === read2.token);
392
+ if (flag) {
393
+ const error = consumeFlag(flag, read2.token);
394
+ if (error) return errorResult(error);
395
+ } else if (read2.token.startsWith("--")) return errorResult(`Unknown flag: ${read2.token}`);
396
+ else text.push(argsLine.slice(start, index));
397
+ skipWhitespace();
398
+ }
399
+ const restVal2 = text.join(" ").trim();
400
+ if (!restVal2) return errorResult(`Missing required argument: ${currentPositionalSpec.name}`);
401
+ positionals.push(restVal2);
402
+ rest = restVal2;
403
+ positionalIndex++;
404
+ break;
405
+ }
371
406
  if (currentSpec.parseFlagsBeforeRest) {
372
407
  while (index < argsLine.length) {
373
408
  const tokenStart = index;
@@ -601,278 +636,10 @@ init_esm_shims();
601
636
 
602
637
  // src/interactive/worker-stream.ts
603
638
  init_esm_shims();
604
-
605
- // src/interactive/worker-progress.ts
606
- init_esm_shims();
607
- var WORKER_LIVE_TAIL_LINES = 40;
608
- var WORKER_LIVE_TAIL_MAX_BYTES = 4096;
609
- var WORKER_TOOL_NAME_LIMIT = 8;
610
- var WORKER_ACTION_TRAIL_LIMIT = 4;
611
- var WORKER_PROGRESS_WINDOW_MS = 250;
612
- var WORKER_PROGRESS_WINDOW_BYTES = 16384;
613
- var TAIL_TRUNCATION_MARKER = "";
614
- function isRecord(value) {
615
- return typeof value === "object" && value !== null && !Array.isArray(value);
616
- }
617
- function nonEmptyString(value) {
618
- return typeof value === "string" && value.trim().length > 0 ? value : void 0;
619
- }
620
- function workerTextDelta(event) {
621
- if (!isRecord(event)) return "";
622
- if (event.type === "message_update") {
623
- const assistantEvent = isRecord(event.assistantMessageEvent) ? event.assistantMessageEvent : null;
624
- if (assistantEvent?.type !== "text_delta") return "";
625
- return typeof assistantEvent.delta === "string" ? assistantEvent.delta : "";
626
- }
627
- if (event.type !== "text_delta") return "";
628
- if (typeof event.delta === "string") return event.delta;
629
- return typeof event.text === "string" ? event.text : "";
630
- }
631
- function isThinkingEvent(event) {
632
- if (event.type === "thinking_delta") return true;
633
- if (event.type !== "message_update") return false;
634
- const assistantEvent = isRecord(event.assistantMessageEvent) ? event.assistantMessageEvent : null;
635
- return assistantEvent?.type === "thinking_delta";
636
- }
637
- function toolEventAction(event) {
638
- if (event.type !== "clio_coder_tool_start" && event.type !== "clio_coder_tool_finish") return null;
639
- const payload = isRecord(event.payload) ? event.payload : null;
640
- const tool = nonEmptyString(payload?.tool);
641
- if (tool === void 0) return null;
642
- const toolCallId = nonEmptyString(payload?.toolCallId);
643
- const raw = isRecord(payload?.action) ? payload.action : void 0;
644
- const verb = nonEmptyString(raw?.verb);
645
- if (verb === void 0) return { tool, ...toolCallId !== void 0 ? { toolCallId } : {} };
646
- const object = nonEmptyString(raw?.object);
647
- return {
648
- tool,
649
- ...toolCallId !== void 0 ? { toolCallId } : {},
650
- descriptor: {
651
- verb,
652
- ...object !== void 0 ? { object } : {},
653
- ...raw?.truncated === true ? { truncated: true } : {}
654
- }
655
- };
656
- }
657
- function lineCount(text) {
658
- if (text.length === 0) return 0;
659
- let lines = 1;
660
- for (let index = 0; index < text.length; index += 1) {
661
- if (text[index] === "\n") lines += 1;
662
- }
663
- return lines;
664
- }
665
- function keepTailBytes(text, maxBytes) {
666
- const buffer = Buffer.from(text, "utf8");
667
- if (buffer.byteLength <= maxBytes) return text;
668
- let cut = buffer.byteLength - maxBytes;
669
- while (cut < buffer.byteLength) {
670
- const byte = buffer[cut];
671
- if (byte === void 0 || (byte & 192) !== 128) break;
672
- cut += 1;
673
- }
674
- return buffer.subarray(cut).toString("utf8");
675
- }
676
- function boundLiveTail(text) {
677
- const lines = text.split("\n");
678
- let droppedLines = 0;
679
- if (lines.length > WORKER_LIVE_TAIL_LINES) {
680
- droppedLines = lines.length - WORKER_LIVE_TAIL_LINES;
681
- lines.splice(0, droppedLines);
682
- }
683
- while (lines.length > 1 && Buffer.byteLength(lines.join("\n"), "utf8") > WORKER_LIVE_TAIL_MAX_BYTES) {
684
- lines.shift();
685
- droppedLines += 1;
686
- }
687
- const joined = lines.join("\n");
688
- const bytes = Buffer.byteLength(joined, "utf8");
689
- if (bytes <= WORKER_LIVE_TAIL_MAX_BYTES) return { text: joined, droppedLines, droppedBytes: 0 };
690
- const kept = keepTailBytes(joined, WORKER_LIVE_TAIL_MAX_BYTES);
691
- return { text: kept, droppedLines, droppedBytes: bytes - Buffer.byteLength(kept, "utf8") };
692
- }
693
- function boundSettledText(text) {
694
- const bounded = truncateUtf8(text, WORKER_OUTPUT_MAX_BYTES, TAIL_TRUNCATION_MARKER);
695
- if (bounded === text) return { text, dropped: 0 };
696
- return { text: bounded, dropped: Math.max(0, lineCount(text) - lineCount(bounded)) };
697
- }
698
- var EMPTY_SNAPSHOT = {
699
- revision: 0,
700
- phase: "starting",
701
- tailText: "",
702
- droppedLines: 0,
703
- droppedBytes: 0,
704
- currentAction: null,
705
- recentActions: [],
706
- toolNames: [],
707
- settled: false
708
- };
709
- function createWorkerProgressFold() {
710
- let revision = 0;
711
- let phase = "starting";
712
- let tailText = "";
713
- let droppedLines = 0;
714
- let droppedBytes = 0;
715
- let currentAction = null;
716
- const recentActions = [];
717
- const toolNames = [];
718
- let settled = false;
719
- let durable = "";
720
- let betweenAssistantMessages = false;
721
- const pendingActions = [];
722
- const pendingActionsById = /* @__PURE__ */ new Map();
723
- let windowStartMs = 0;
724
- let windowBytes = 0;
725
- let cached = EMPTY_SNAPSHOT;
726
- const touch = () => {
727
- revision += 1;
728
- cached = null;
729
- return true;
730
- };
731
- const setPhase = (next) => {
732
- if (phase === next) return false;
733
- phase = next;
734
- return touch();
735
- };
736
- const admitDelta = (delta, nowMs) => {
737
- if (nowMs - windowStartMs >= WORKER_PROGRESS_WINDOW_MS) {
738
- windowStartMs = nowMs;
739
- windowBytes = 0;
740
- }
741
- const bytes = Buffer.byteLength(delta, "utf8");
742
- if (windowBytes + bytes <= WORKER_PROGRESS_WINDOW_BYTES) {
743
- windowBytes += bytes;
744
- return delta;
745
- }
746
- windowBytes = WORKER_PROGRESS_WINDOW_BYTES;
747
- droppedBytes += bytes;
748
- return "";
749
- };
750
- const appendTail = (text) => {
751
- if (text.length === 0) return false;
752
- const bounded = boundLiveTail(tailText + text);
753
- tailText = bounded.text;
754
- droppedLines += bounded.droppedLines;
755
- droppedBytes += bounded.droppedBytes;
756
- return touch();
757
- };
758
- const noteToolName = (tool) => {
759
- if (toolNames.includes(tool) || toolNames.length >= WORKER_TOOL_NAME_LIMIT) return false;
760
- toolNames.push(tool);
761
- return touch();
762
- };
763
- const removePendingAction = (action) => {
764
- const index = pendingActions.lastIndexOf(action);
765
- if (index >= 0) pendingActions.splice(index, 1);
766
- if (action.toolCallId !== void 0 && pendingActionsById.get(action.toolCallId) === action) {
767
- pendingActionsById.delete(action.toolCallId);
768
- }
769
- };
770
- const lastPendingActionForTool = (tool) => {
771
- for (let index = pendingActions.length - 1; index >= 0; index -= 1) {
772
- const candidate = pendingActions[index];
773
- if (candidate?.tool === tool) return candidate;
774
- }
775
- return void 0;
776
- };
777
- return {
778
- observe(event, nowMs = Date.now()) {
779
- if (!isRecord(event) || settled) return false;
780
- let changed = false;
781
- const delta = workerTextDelta(event);
782
- if (delta.length > 0) {
783
- const separator = betweenAssistantMessages && tailText.length > 0 && !tailText.endsWith("\n") ? "\n\n" : "";
784
- betweenAssistantMessages = false;
785
- changed = appendTail(admitDelta(`${separator}${delta}`, nowMs)) || changed;
786
- changed = setPhase("writing") || changed;
787
- } else if (isThinkingEvent(event)) {
788
- changed = setPhase("thinking") || changed;
789
- }
790
- const durableText = durableAssistantTextFromEvent(event);
791
- if (durableText.trim().length > 0) {
792
- durable = durableText;
793
- if (delta.length === 0 && tailText.trim().length === 0) {
794
- changed = appendTail(durableText) || changed;
795
- }
796
- betweenAssistantMessages = true;
797
- }
798
- const action = toolEventAction(event);
799
- if (action !== null && event.type === "clio_coder_tool_start") {
800
- if (action.toolCallId !== void 0) {
801
- const duplicate = pendingActionsById.get(action.toolCallId);
802
- if (duplicate !== void 0) removePendingAction(duplicate);
803
- pendingActionsById.set(action.toolCallId, action);
804
- }
805
- pendingActions.push(action);
806
- currentAction = action;
807
- noteToolName(action.tool);
808
- touch();
809
- setPhase("tool");
810
- changed = true;
811
- } else if (action !== null && event.type === "clio_coder_tool_finish") {
812
- const finished = (action.toolCallId !== void 0 ? pendingActionsById.get(action.toolCallId) : void 0) ?? lastPendingActionForTool(action.tool) ?? action;
813
- removePendingAction(finished);
814
- currentAction = pendingActions[pendingActions.length - 1] ?? null;
815
- recentActions.unshift(finished);
816
- if (recentActions.length > WORKER_ACTION_TRAIL_LIMIT) recentActions.length = WORKER_ACTION_TRAIL_LIMIT;
817
- noteToolName(finished.tool);
818
- touch();
819
- setPhase(currentAction === null ? "waiting" : "tool");
820
- changed = true;
821
- }
822
- if (event.type === "agent_start") changed = setPhase("starting") || changed;
823
- return changed;
824
- },
825
- settle(text) {
826
- const sealed = nonEmptyString(text) ?? nonEmptyString(durable);
827
- if (sealed !== void 0) {
828
- const bounded = boundSettledText(sealed);
829
- tailText = bounded.text;
830
- droppedLines = bounded.dropped;
831
- }
832
- currentAction = null;
833
- pendingActions.length = 0;
834
- pendingActionsById.clear();
835
- settled = true;
836
- phase = "settled";
837
- touch();
838
- return true;
839
- },
840
- restart() {
841
- currentAction = null;
842
- pendingActions.length = 0;
843
- pendingActionsById.clear();
844
- durable = "";
845
- betweenAssistantMessages = false;
846
- settled = false;
847
- phase = "starting";
848
- touch();
849
- },
850
- snapshot() {
851
- if (cached !== null) return cached;
852
- cached = {
853
- revision,
854
- phase,
855
- tailText,
856
- droppedLines,
857
- droppedBytes,
858
- currentAction: currentAction === null ? null : { ...currentAction },
859
- recentActions: recentActions.map((entry) => ({ ...entry })),
860
- toolNames: [...toolNames],
861
- settled
862
- };
863
- return cached;
864
- },
865
- durableText() {
866
- return durable;
867
- }
868
- };
869
- }
870
-
871
- // src/interactive/worker-stream.ts
872
639
  function workerAskedByModel(state) {
873
640
  return state.parentToolCallId !== void 0 || state.origin === "agent";
874
641
  }
875
- function nonEmptyString2(value) {
642
+ function nonEmptyString(value) {
876
643
  return typeof value === "string" && value.trim().length > 0 ? value : void 0;
877
644
  }
878
645
  function finiteNumber(value) {
@@ -887,11 +654,11 @@ function workerRuntimeKind(runtimeKind, runtimeId) {
887
654
  function runtimeIdentity(payload) {
888
655
  const kind = workerRuntimeKind(payload.runtimeKind, payload.runtimeId);
889
656
  if (kind === "acp") {
890
- const peerId = nonEmptyString2(payload.agentId);
657
+ const peerId = nonEmptyString(payload.agentId);
891
658
  return { kind, ...peerId !== void 0 ? { peerId } : {} };
892
659
  }
893
- const targetId = nonEmptyString2(payload.targetId);
894
- const wireModelId = nonEmptyString2(payload.wireModelId);
660
+ const targetId = nonEmptyString(payload.targetId);
661
+ const wireModelId = nonEmptyString(payload.wireModelId);
895
662
  return {
896
663
  kind,
897
664
  ...targetId !== void 0 ? { targetId } : {},
@@ -906,7 +673,7 @@ function workerTargetLabel(runtime) {
906
673
  return runtime.targetId ?? runtime.wireModelId ?? "unknown";
907
674
  }
908
675
  function terminalFacts(payload) {
909
- const detail = nonEmptyString2(payload.outcomeDetail);
676
+ const detail = nonEmptyString(payload.outcomeDetail);
910
677
  const tokenCount = finiteNumber(payload.tokenCount);
911
678
  const durationMs = finiteNumber(payload.durationMs);
912
679
  const exitCode = finiteNumber(payload.exitCode);
@@ -938,7 +705,7 @@ function createWorkerStream(options = {}) {
938
705
  entry.progress = snapshot;
939
706
  };
940
707
  const currentEntryForRun = (runId) => {
941
- const id = nonEmptyString2(runId);
708
+ const id = nonEmptyString(runId);
942
709
  if (id === void 0) return void 0;
943
710
  const assignmentId = assignmentByRun.get(id);
944
711
  const entry = assignmentId === void 0 ? void 0 : byAssignment.get(assignmentId);
@@ -952,15 +719,15 @@ function createWorkerStream(options = {}) {
952
719
  if (attempt !== void 0) attempt.outcome = facts.outcome;
953
720
  const fold = progressByAssignment.get(entry.assignmentId);
954
721
  if (fold !== void 0) {
955
- fold.settle(nonEmptyString2(facts.text));
722
+ fold.settle(nonEmptyString(facts.text));
956
723
  applyProgress(entry, fold);
957
724
  }
958
725
  return { kind: "updated", entry };
959
726
  };
960
727
  return {
961
728
  started(payload) {
962
- const runId = nonEmptyString2(payload.runId);
963
- const assignmentId = nonEmptyString2(payload.assignmentId) ?? runId;
729
+ const runId = nonEmptyString(payload.runId);
730
+ const assignmentId = nonEmptyString(payload.assignmentId) ?? runId;
964
731
  if (runId === void 0 || assignmentId === void 0) return null;
965
732
  const runtime = runtimeIdentity(payload);
966
733
  const existing = byAssignment.get(assignmentId);
@@ -1025,7 +792,7 @@ function createWorkerStream(options = {}) {
1025
792
  const entry = currentEntryForRun(payload.runId);
1026
793
  if (entry === void 0 || !entry.pending) return null;
1027
794
  const durationMs = finiteNumber(payload.elapsedMs);
1028
- const failureMessage = nonEmptyString2(payload.reason);
795
+ const failureMessage = nonEmptyString(payload.reason);
1029
796
  entry.pending = false;
1030
797
  entry.receipt = {
1031
798
  outcome: "canceled",
@@ -1342,7 +1109,8 @@ function formatReceiptVerificationBlock(runId, result) {
1342
1109
  }
1343
1110
  function formatUserTaskHandoff(task) {
1344
1111
  const note = task.note ? ` ${task.note}.` : "";
1345
- return `Operator task ${task.id}: ${task.title}.${note} Pick it up with tasks action="pick" id="${task.id}" and work it when appropriate.`;
1112
+ const acceptance = task.acceptance ? ` Acceptance: ${JSON.stringify(task.acceptance)}.` : "";
1113
+ return `Operator task ${task.id}: ${task.title}.${note}${acceptance} Pick it up with tasks action="pick" id="${task.id}" and work it when appropriate.`;
1346
1114
  }
1347
1115
  var SLASH_COMMAND_GROUPS = ["Work", "Inspect", "Configure", "Session"];
1348
1116
  var RUN_THINKING_LEVELS = THINKING_LEVELS;
@@ -2005,7 +1773,14 @@ ${usage}` : usage);
2005
1773
  },
2006
1774
  args: {
2007
1775
  subcommands: {
2008
- add: { positionals: [{ name: "text", required: true, rest: true }] },
1776
+ add: {
1777
+ parseFlagsInRest: true,
1778
+ flags: [
1779
+ { name: "--expect", takesValue: true, repeatable: true, valueName: "path" },
1780
+ { name: "--verify", takesValue: true, repeatable: true, valueName: "checkId[:timeoutMs]" }
1781
+ ],
1782
+ positionals: [{ name: "text", required: true, rest: true }]
1783
+ },
2009
1784
  hand: { positionals: [{ name: "id", required: true }] },
2010
1785
  done: { positionals: [{ name: "id", required: true }] },
2011
1786
  drop: { positionals: [{ name: "id", required: true }] }
@@ -2015,7 +1790,12 @@ ${usage}` : usage);
2015
1790
  if (parsed.error) return { kind: "usage-error", command: "tasks", reason: parsed.error };
2016
1791
  switch (parsed.subcommand) {
2017
1792
  case "add":
2018
- return parsed.rest ? { kind: "tasks-add", text: parsed.rest } : { kind: "usage-error", command: "tasks", reason: "add requires task text" };
1793
+ return parsed.rest ? {
1794
+ kind: "tasks-add",
1795
+ text: parsed.rest,
1796
+ ...parsed.flagValues.has("--expect") ? { expectedOutputs: parsed.flagValues.get("--expect") ?? [] } : {},
1797
+ ...parsed.flagValues.has("--verify") ? { verification: parsed.flagValues.get("--verify") ?? [] } : {}
1798
+ } : { kind: "usage-error", command: "tasks", reason: "add requires task text" };
2019
1799
  case "hand":
2020
1800
  case "done":
2021
1801
  case "drop": {
@@ -2042,7 +1822,10 @@ ${usage}` : usage);
2042
1822
  }
2043
1823
  try {
2044
1824
  if (command.kind === "tasks-add") {
2045
- const task = ctx.userTasks.add(command.text);
1825
+ const task = ctx.userTasks.add(
1826
+ command.text,
1827
+ acceptanceFromTaskFlags(process.cwd(), command.expectedOutputs ?? [], command.verification ?? [])
1828
+ );
2046
1829
  ctx.notice("success", `logged operator task ${task.id}: ${task.title}`);
2047
1830
  return;
2048
1831
  }
@@ -2568,30 +2351,6 @@ for (const entry of BUILTIN_SLASH_COMMANDS) {
2568
2351
  }
2569
2352
  var COMMAND_SHAPED_TOKEN = /^[A-Za-z][A-Za-z0-9:-]*$/u;
2570
2353
  var COMMAND_ESCAPE = "\\/";
2571
- var RETIRED_COMMAND_HINTS = Object.freeze({
2572
- status: "Use the footer or Alt+U for status; /cost, /context, and /fleet inspect their own domains.",
2573
- receipts: "Use /view or /view verify <run-id>.",
2574
- "context-init": "Use /context init.",
2575
- "context-clear": "Use /context reset for project context or /new for a fresh session.",
2576
- "context-view": "Use /context.",
2577
- compact: "Use /context compact [instructions].",
2578
- skills: "Use /skill or /resources skills.",
2579
- exit: "Use /quit.",
2580
- config: "Use /settings.",
2581
- ctx: "Use /context.",
2582
- models: "Use /model.",
2583
- clear: "Use /new for a fresh session or /context reset for project context.",
2584
- library: "Use /resources library [kind].",
2585
- prompts: "Use /resources prompts.",
2586
- extensions: "Use /resources extensions.",
2587
- interop: "Use /agents connect.",
2588
- targets: "Use /settings targets.",
2589
- "scoped-models": "Use /settings chat model-picker."
2590
- });
2591
- function retiredCommandHint(token) {
2592
- if (/^skills?:[^\s]+$/u.test(token)) return "Use /skill <name> [task].";
2593
- return RETIRED_COMMAND_HINTS[token];
2594
- }
2595
2354
  function formatExtensionReloadNotice(outcome) {
2596
2355
  if (outcome.status !== "committed") {
2597
2356
  return ["error", `extensions: reload rejected (${outcome.reason}); generation ${outcome.generation} stays active`];
@@ -2637,12 +2396,6 @@ function dispatchSlashCommand(command, ctx) {
2637
2396
  return "accepted";
2638
2397
  }
2639
2398
  if (command.kind === "unknown-command") {
2640
- const retiredHint = retiredCommandHint(command.token);
2641
- if (retiredHint) {
2642
- ctx.notice("error", `/${command.token} is retired and did not run. ${retiredHint}`);
2643
- ctx.render();
2644
- return "rejected";
2645
- }
2646
2399
  const expansion = ctx.expandPromptTemplate?.(command.text);
2647
2400
  if (expansion?.expanded === true) {
2648
2401
  ctx.submitChat(command.text);
@@ -2714,8 +2467,6 @@ function commandReference() {
2714
2467
 
2715
2468
  export {
2716
2469
  COUNCIL_SYNTHESIS_LABEL,
2717
- boundSettledText,
2718
- createWorkerProgressFold,
2719
2470
  workerAskedByModel,
2720
2471
  workerTargetLabel,
2721
2472
  workerReceiptSummary,
@@ -2735,4 +2486,4 @@ export {
2735
2486
  dispatchSlashCommand,
2736
2487
  commandReference
2737
2488
  };
2738
- //# sourceMappingURL=chunk-TM6LQDI3.js.map
2489
+ //# sourceMappingURL=chunk-FFUPXJC4.js.map
@@ -0,0 +1,59 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ VERIFICATION_SCRIPT_FAMILY_HINT
4
+ } from "./chunk-UL3WSD3F.js";
5
+ import {
6
+ typebox_exports
7
+ } from "./chunk-5B2AEOW5.js";
8
+ import {
9
+ ToolNames
10
+ } from "./chunk-4NSRCOYP.js";
11
+ import {
12
+ StringEnum
13
+ } from "./chunk-YPC6ZR5L.js";
14
+ import {
15
+ init_esm_shims
16
+ } from "./chunk-3R73A4XB.js";
17
+
18
+ // src/tools/verify/surface.ts
19
+ init_esm_shims();
20
+ var BROWSER_MODES = ["auto", "required", "off"];
21
+ function prepareVerifyArguments(args) {
22
+ if (!args || typeof args !== "object" || Array.isArray(args)) return args;
23
+ const next = { ...args };
24
+ if (typeof next.args === "string") {
25
+ try {
26
+ const parsed = JSON.parse(next.args);
27
+ if (Array.isArray(parsed)) next.args = parsed;
28
+ } catch {
29
+ }
30
+ }
31
+ return next;
32
+ }
33
+ var verifyToolSurface = {
34
+ name: ToolNames.Verify,
35
+ description: 'Run a declared verification check: no arguments lists package scripts and .clio-coder/verifiers.yaml entries, check=<id> runs one, and check="frontend" with path validates an HTML/CSS/JS artifact.',
36
+ parameters: typebox_exports.Object({
37
+ check: typebox_exports.Optional(
38
+ typebox_exports.String({
39
+ description: `Check id, package script (${VERIFICATION_SCRIPT_FAMILY_HINT}), or "frontend"; omit to list.`
40
+ })
41
+ ),
42
+ path: typebox_exports.Optional(typebox_exports.String({ description: "frontend: artifact file under the workspace root." })),
43
+ args: typebox_exports.Optional(typebox_exports.Array(typebox_exports.String(), { description: "Package scripts only: arguments after --." })),
44
+ browser: typebox_exports.Optional(StringEnum(BROWSER_MODES, { description: "frontend: headless browser mode (default auto)." })),
45
+ cwd: typebox_exports.Optional(typebox_exports.String({ description: "Package scripts only: working directory." })),
46
+ timeout_ms: typebox_exports.Optional(typebox_exports.Number({ description: "Package and frontend checks only: timeout in ms." })),
47
+ max_output_bytes: typebox_exports.Optional(typebox_exports.Number({ description: "Output cap in bytes (default 600000)." }))
48
+ }),
49
+ baseActionClass: "execute",
50
+ executionMode: "sequential",
51
+ prepareArguments: prepareVerifyArguments
52
+ };
53
+
54
+ export {
55
+ BROWSER_MODES,
56
+ prepareVerifyArguments,
57
+ verifyToolSurface
58
+ };
59
+ //# sourceMappingURL=chunk-GX5WYQO4.js.map