@iowarp/clio-coder 0.3.3 → 0.3.6

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 (370) hide show
  1. package/CHANGELOG.md +74 -0
  2. package/CONTRIBUTING.md +7 -7
  3. package/README.md +3 -3
  4. package/dist/{acp-P2AQILE2.js → acp-2BEHC4DL.js} +9 -8
  5. package/dist/{agents-72W3BI7I.js → agents-LNNFTM53.js} +29 -24
  6. package/dist/assets/codewiki.json +1 -1
  7. package/dist/{auth-5TWEIYDN.js → auth-KXXFI2VS.js} +14 -10
  8. package/dist/{chunk-GGXXDWE4.js → chunk-22NAGB7X.js} +2 -2
  9. package/dist/{chunk-YCWGATWI.js → chunk-24I7BN55.js} +2 -2
  10. package/dist/{chunk-EKMEHE4H.js → chunk-33YXPOE3.js} +2 -3
  11. package/dist/chunk-3BPUFZDL.js +37 -0
  12. package/dist/chunk-43AOLP7E.js +375 -0
  13. package/dist/{chunk-ZDOOVTXZ.js → chunk-4OC57DA6.js} +27 -4
  14. package/dist/{chunk-6SGHMWE3.js → chunk-5JGRAMKL.js} +5 -5
  15. package/dist/{chunk-V6RTAOC2.js → chunk-6US73PDB.js} +572 -51
  16. package/dist/{chunk-5UFT4SUX.js → chunk-6XXKFVSN.js} +3 -3
  17. package/dist/{chunk-A3CYT5EX.js → chunk-AD2SYQYC.js} +55 -2
  18. package/dist/chunk-AOCYTWAV.js +449 -0
  19. package/dist/chunk-CFGTUFWB.js +67 -0
  20. package/dist/chunk-CJUB2JJ2.js +1478 -0
  21. package/dist/{chunk-FNTMWMX5.js → chunk-CKXWIANG.js} +14 -12
  22. package/dist/{chunk-PIWWS5BL.js → chunk-CYQKWTG3.js} +63 -78
  23. package/dist/{chunk-LZSJBIVT.js → chunk-DJVECN66.js} +271 -762
  24. package/dist/{chunk-CBCAPZAA.js → chunk-E25LMLRW.js} +2 -2
  25. package/dist/{chunk-ZWMF7253.js → chunk-E2ER4LJF.js} +304 -9
  26. package/dist/{chunk-STBPMHSX.js → chunk-EKY57CSP.js} +51 -84
  27. package/dist/{chunk-DUYJ5IO6.js → chunk-EYPA3EGJ.js} +12 -4
  28. package/dist/{chunk-M6SHUN7Q.js → chunk-FO5ZOVUY.js} +2 -2
  29. package/dist/chunk-FYYLNIL5.js +313 -0
  30. package/dist/{chunk-OQ33BKR3.js → chunk-G7MUEIGA.js} +3 -60
  31. package/dist/chunk-GEYXPTRF.js +613 -0
  32. package/dist/chunk-GOXNB3AO.js +261 -0
  33. package/dist/{chunk-G4BMMOKF.js → chunk-HVDIIIQW.js} +2 -2
  34. package/dist/chunk-HWUFFB6L.js +83 -0
  35. package/dist/{chunk-4XUGQOHA.js → chunk-K7T3E2SR.js} +15 -8
  36. package/dist/chunk-K7VKOLQQ.js +15 -0
  37. package/dist/{chunk-UFIIWP2H.js → chunk-KHSFENX2.js} +8 -8
  38. package/dist/{chunk-BMEMKKIT.js → chunk-KOHPCX4K.js} +2 -2
  39. package/dist/chunk-LCGCVYZ4.js +57 -0
  40. package/dist/chunk-LL4KHSZI.js +22 -0
  41. package/dist/{chunk-PAJK6MAQ.js → chunk-LYF7OHWH.js} +42 -15
  42. package/dist/{chunk-POHLU5DW.js → chunk-M6L6IDJG.js} +3 -3
  43. package/dist/{chunk-5UUP6MWO.js → chunk-MV3K5QF2.js} +5 -436
  44. package/dist/{chunk-X4RCMKVQ.js → chunk-NDINPTJ4.js} +2 -2
  45. package/dist/{chunk-TZK7PACC.js → chunk-NILBFAPG.js} +14 -8
  46. package/dist/chunk-ODFEOB4F.js +1082 -0
  47. package/dist/{chunk-AGYYIBLL.js → chunk-OH3TOQTB.js} +6 -2
  48. package/dist/chunk-OZNBF4L3.js +23 -0
  49. package/dist/{chunk-DSELYM6W.js → chunk-PBTHKCPN.js} +30 -10
  50. package/dist/{verify-375KUB3Y.js → chunk-PCZJO5TI.js} +127 -42
  51. package/dist/{chunk-ED4KHGC3.js → chunk-PPAMZ32Z.js} +9 -2
  52. package/dist/{chunk-SRDMMSEP.js → chunk-QM3F2GKX.js} +1063 -1645
  53. package/dist/{chunk-X6IAEBZR.js → chunk-QNQHSOLF.js} +7 -7
  54. package/dist/{chunk-OC7FIQPC.js → chunk-R46L2BIR.js} +10 -7
  55. package/dist/{chunk-2TLUCQVG.js → chunk-RD5U66HV.js} +3 -3
  56. package/dist/{chunk-6N5PTWMY.js → chunk-RY3LY4J5.js} +50 -13
  57. package/dist/{chunk-OKGUZO2U.js → chunk-SPULKLCF.js} +4 -3
  58. package/dist/{chunk-OOJYHWRB.js → chunk-TSHXZTOQ.js} +6 -5
  59. package/dist/chunk-TZSKNMZG.js +434 -0
  60. package/dist/{chunk-7MNJORFF.js → chunk-UL3WSD3F.js} +6 -1
  61. package/dist/{chunk-VJWL6YS5.js → chunk-UUVG37B4.js} +2 -2
  62. package/dist/{chunk-COU2UHX6.js → chunk-VEZEGCGW.js} +170 -2
  63. package/dist/chunk-W6GROXXM.js +69 -0
  64. package/dist/{chunk-OAO4GE4M.js → chunk-WHGPSPT5.js} +2 -2
  65. package/dist/chunk-WHJYKASB.js +677 -0
  66. package/dist/{chunk-ORBHGJC5.js → chunk-WR67VIZY.js} +3 -3
  67. package/dist/{chunk-YHZX5GEU.js → chunk-XAKHZX5N.js} +2 -2
  68. package/dist/{chunk-TZTZS7QK.js → chunk-XE2VEJHX.js} +5 -3
  69. package/dist/{chunk-LM5TQCJZ.js → chunk-XF5N4U5A.js} +8 -7
  70. package/dist/{chunk-LWLEKMDQ.js → chunk-XXQNGV4M.js} +1073 -552
  71. package/dist/{chunk-KZWTDYJF.js → chunk-XYDYPRZI.js} +7 -7
  72. package/dist/chunk-ZGVHUX3M.js +66 -0
  73. package/dist/{chunk-LW6DSM3M.js → chunk-ZRGEBJ4T.js} +1192 -1119
  74. package/dist/{chunk-2DJ2KNFG.js → chunk-ZXF4XRKW.js} +202 -40
  75. package/dist/chunk-ZZMN5OM4.js +122 -0
  76. package/dist/cli/index.js +34 -30
  77. package/dist/{clio-JOU4FXVA.js → clio-M2KGYUFZ.js} +7 -6
  78. package/dist/{code-nav-7AX6FYE6.js → code-nav-GQNL7XA6.js} +8 -6
  79. package/dist/codewiki/build-worker.js +4 -4
  80. package/dist/{components-KELWS457.js → components-5TTYYX6G.js} +3 -3
  81. package/dist/{config-XCDVKR23.js → config-XUUYQIWO.js} +47 -35
  82. package/dist/{configure-4GAP54ZW.js → configure-IHJ7YOMV.js} +18 -15
  83. package/dist/{context-77FM5DV5.js → context-74JLXAWD.js} +18 -10
  84. package/dist/{context-4UOGGLQ5.js → context-75MIWW3U.js} +41 -29
  85. package/dist/{context-5VKGUVJJ.js → context-ZQ7SIFJV.js} +85 -9
  86. package/dist/{context-clear-XXJRLCJJ.js → context-clear-GYKWNUML.js} +41 -29
  87. package/dist/{context-index-BZ4UYMTC.js → context-index-SSR5ECNE.js} +3 -3
  88. package/dist/context-working-set-UX5KEP4J.js +1553 -0
  89. package/dist/{dispatch-runner-QPRDDBDX.js → dispatch-runner-GIJBHNFL.js} +47 -32
  90. package/dist/{docs-2C2LTVT2.js → docs-6FZSCG5B.js} +3 -3
  91. package/dist/{doctor-HR46URBJ.js → doctor-SVJ5BZCW.js} +12 -12
  92. package/dist/{eval-XSSNATB4.js → eval-CG6LLBLD.js} +54 -238
  93. package/dist/{evidence-6HG2PY2B.js → evidence-ZYFIEN42.js} +57 -28
  94. package/dist/{evolve-K7YU3NCY.js → evolve-QGEXEMDW.js} +36 -25
  95. package/dist/{extensions-QVDOHDGJ.js → extensions-ADGNCJJD.js} +3 -3
  96. package/dist/{fleet-VY3HHKN6.js → fleet-S5R4ZOQY.js} +73 -44
  97. package/dist/{fleet-preflight-DDN536IT.js → fleet-preflight-BHSNPBMH.js} +3 -3
  98. package/dist/{init-JYGXI3FK.js → init-5DRU55YR.js} +49 -37
  99. package/dist/memory-7YKKR6UC.js +467 -0
  100. package/dist/{models-I5QWSEOM.js → models-ZPOLRU2C.js} +24 -21
  101. package/dist/{monitor-GE4ID3IA.js → monitor-US5F5YGZ.js} +73 -46
  102. package/dist/{orchestrator-EM5MC3HM.js → orchestrator-E2AL4T5N.js} +1624 -1007
  103. package/dist/{paths-UXLN5YYZ.js → paths-E7KYAQWE.js} +3 -3
  104. package/dist/{reset-L2FQEE3E.js → reset-KZ652EK6.js} +6 -5
  105. package/dist/{run-ZU3QMZPZ.js → run-SRNBKDWD.js} +76 -54
  106. package/dist/{share-S5BZQC5I.js → share-CGZE33UP.js} +7 -6
  107. package/dist/{skills-X5VXCRNQ.js → skills-S2X4DLY5.js} +4 -4
  108. package/dist/{skills-eval-WKIHWTHR.js → skills-eval-W2GGIC4R.js} +40 -29
  109. package/dist/{targets-SNCPI2NR.js → targets-54SWINWB.js} +28 -23
  110. package/dist/{terminal-lease-BNAHVHBS.js → terminal-lease-SAIF2OGY.js} +6 -4
  111. package/dist/{uninstall-FZCQCDKC.js → uninstall-BVLWXKBT.js} +3 -3
  112. package/dist/{upgrade-JQHHPQ4K.js → upgrade-JKAR27XC.js} +20 -19
  113. package/dist/{usage-OR4O5SMZ.js → usage-MSAWCLX4.js} +79 -36
  114. package/dist/verifiers-NCBTHHN2.js +1220 -0
  115. package/dist/verify-X5HDROLA.js +25 -0
  116. package/dist/{wiki-generate-UEXP2ARI.js → wiki-generate-GUSOQ6ZP.js} +50 -37
  117. package/dist/worker/entry.js +90 -70
  118. package/dist/{workspace-G4ZWUIPR.js → workspace-ZJ6BFM3Q.js} +4 -4
  119. package/docs/README.md +8 -7
  120. package/docs/acp.md +1 -1
  121. package/docs/alcf-provider.md +1 -1
  122. package/docs/architecture.md +2 -2
  123. package/docs/artifact-placement.md +1 -2
  124. package/docs/artifact-versions.md +1 -1
  125. package/docs/built-in-agents.md +1 -1
  126. package/docs/capacity-and-scheduling.md +1 -1
  127. package/docs/commands-and-modes.md +60 -26
  128. package/docs/config-knobs-audit.md +1 -2
  129. package/docs/configuration-and-targets.md +26 -1
  130. package/docs/context-engine.md +67 -13
  131. package/docs/context-working-set.md +194 -0
  132. package/docs/development-pipeline.md +1 -1
  133. package/docs/documentation-coverage.md +6 -6
  134. package/docs/documentation-guide.md +7 -6
  135. package/docs/environment-variables.md +2 -1
  136. package/docs/eval-runner.md +1 -1
  137. package/docs/evals-internal.md +4 -32
  138. package/docs/evidence-and-memory.md +139 -7
  139. package/docs/evolution.md +1 -1
  140. package/docs/exit-codes-and-output.md +1 -1
  141. package/docs/extensions-and-sharing.md +2 -2
  142. package/docs/fleet-dispatch.md +49 -8
  143. package/docs/glossary.md +21 -1
  144. package/docs/installation-and-lifecycle.md +2 -2
  145. package/docs/middleware-and-components.md +19 -2
  146. package/docs/model-catalog.md +7 -9
  147. package/docs/observability.md +4 -4
  148. package/docs/proactive-memory.md +26 -16
  149. package/docs/prompt-envelope-and-tools.md +7 -5
  150. package/docs/provider-adapter-cookbook.md +1 -1
  151. package/docs/release-cut-checklist.md +43 -40
  152. package/docs/safety-model.md +49 -8
  153. package/docs/scientific-validation.md +21 -3
  154. package/docs/session-lifecycle.md +3 -3
  155. package/docs/skills-marketplace.md +1 -1
  156. package/docs/tool-usage.md +79 -12
  157. package/docs/trace-store.md +1 -1
  158. package/docs/troubleshooting.md +1 -1
  159. package/docs/tui-design.md +38 -4
  160. package/docs/worker-dispatch-mechanics.md +11 -1
  161. package/package.json +13 -13
  162. package/skills/meta/clio-test/SKILL.md +20 -17
  163. package/skills/meta/clio-test/evals.md +3 -3
  164. package/skills/meta/clio-test/references/harness.md +35 -6
  165. package/skills/meta/clio-test/references/test-map.md +20 -10
  166. package/skills/registry.yaml +2 -2
  167. package/skills/skill-marketplace.json +1 -1
  168. package/src/cli/agents.ts +2 -3
  169. package/src/cli/argv.ts +14 -1
  170. package/src/cli/context-working-set.ts +513 -0
  171. package/src/cli/context.ts +8 -0
  172. package/src/cli/evidence.ts +20 -2
  173. package/src/cli/fleet.ts +15 -0
  174. package/src/cli/index.ts +5 -1
  175. package/src/cli/memory.ts +272 -10
  176. package/src/cli/modes/json-stream.ts +2 -2
  177. package/src/cli/modes/print.ts +12 -1
  178. package/src/cli/run.ts +22 -2
  179. package/src/cli/targets.ts +12 -3
  180. package/src/cli/usage.ts +55 -7
  181. package/src/cli/verifiers.ts +325 -0
  182. package/src/core/bash-exec.ts +39 -14
  183. package/src/core/bus-events.ts +22 -4
  184. package/src/core/config.ts +54 -0
  185. package/src/core/defaults.ts +50 -3
  186. package/src/core/response-model-id.ts +134 -0
  187. package/src/core/toml.ts +62 -0
  188. package/src/core/verification-scripts.ts +6 -0
  189. package/src/core/workspace-files.ts +0 -1
  190. package/src/domains/agents/builtins/architect.md +1 -1
  191. package/src/domains/agents/builtins/verifier.md +3 -0
  192. package/src/domains/agents/catalog.ts +5 -4
  193. package/src/domains/agents/recipe.ts +54 -14
  194. package/src/domains/agents/result-contract.ts +7 -4
  195. package/src/domains/config/classify.ts +1 -0
  196. package/src/domains/context/bootstrap.ts +36 -27
  197. package/src/domains/context/project-metadata.ts +19 -63
  198. package/src/domains/context/prompt-context.ts +8 -0
  199. package/src/domains/context/working-set/contract.ts +161 -0
  200. package/src/domains/context/working-set/defaults.ts +28 -0
  201. package/src/domains/context/working-set/engine.ts +203 -0
  202. package/src/domains/context/working-set/fold.ts +62 -0
  203. package/src/domains/context/working-set/horizon.ts +38 -0
  204. package/src/domains/context/working-set/marker.ts +103 -0
  205. package/src/domains/context/working-set/path-index.ts +436 -0
  206. package/src/domains/context/working-set/payload.ts +152 -0
  207. package/src/domains/context/working-set/policies/age-horizon.ts +55 -0
  208. package/src/domains/context/working-set/policies/index.ts +20 -0
  209. package/src/domains/context/working-set/policies/structural.ts +160 -0
  210. package/src/domains/context/working-set/project.ts +132 -0
  211. package/src/domains/context/working-set/protect.ts +109 -0
  212. package/src/domains/context/working-set/recall.ts +177 -0
  213. package/src/domains/context/working-set/replay/controls.ts +112 -0
  214. package/src/domains/context/working-set/replay/load-clio.ts +199 -0
  215. package/src/domains/context/working-set/replay/metrics.ts +185 -0
  216. package/src/domains/context/working-set/replay/reference-graph.ts +79 -0
  217. package/src/domains/context/working-set/replay/report.ts +139 -0
  218. package/src/domains/context/working-set/replay/runner.ts +325 -0
  219. package/src/domains/context/working-set/replay/synthetic.ts +422 -0
  220. package/src/domains/context/working-set/replay/trace.ts +21 -0
  221. package/src/domains/context/working-set/visible.ts +54 -0
  222. package/src/domains/dispatch/budget-envelope.ts +396 -0
  223. package/src/domains/dispatch/contract.ts +2 -0
  224. package/src/domains/dispatch/extension.ts +81 -27
  225. package/src/domains/dispatch/orphan-recovery.ts +1 -0
  226. package/src/domains/dispatch/receipt-integrity.ts +4 -0
  227. package/src/domains/dispatch/state.ts +1 -0
  228. package/src/domains/dispatch/types.ts +10 -3
  229. package/src/domains/dispatch/validation.ts +14 -0
  230. package/src/domains/dispatch/worker-spawn.ts +14 -3
  231. package/src/domains/eval/metrics/evidence.ts +0 -116
  232. package/src/domains/eval/metrics/invariants.ts +1 -1
  233. package/src/domains/eval/runners/clio-run.ts +1 -10
  234. package/src/domains/eval/runners/external-command.ts +2 -29
  235. package/src/domains/eval/schema/suite.ts +0 -7
  236. package/src/domains/eval/suites/run.ts +1 -7
  237. package/src/domains/evidence/build.ts +112 -45
  238. package/src/domains/evidence/eval.ts +24 -7
  239. package/src/domains/evidence/index.ts +53 -0
  240. package/src/domains/evidence/ordering.ts +12 -0
  241. package/src/domains/evidence/run-trust.ts +221 -0
  242. package/src/domains/evidence/store.ts +46 -6
  243. package/src/domains/evidence/trust-status.ts +854 -0
  244. package/src/domains/evidence/types.ts +26 -0
  245. package/src/domains/memory/index.ts +22 -0
  246. package/src/domains/memory/operations.ts +58 -1
  247. package/src/domains/memory/promotion.ts +281 -0
  248. package/src/domains/memory/prompt-section.ts +25 -5
  249. package/src/domains/memory/proposal.ts +51 -7
  250. package/src/domains/memory/task-bank.ts +3 -2
  251. package/src/domains/memory/task-memory-handoff.ts +181 -24
  252. package/src/domains/memory/task-memory-policy.ts +3 -1
  253. package/src/domains/memory/types.ts +37 -0
  254. package/src/domains/memory/validate.ts +178 -0
  255. package/src/domains/middleware/memory-intervention.ts +38 -25
  256. package/src/domains/middleware/runtime.ts +6 -0
  257. package/src/domains/middleware/skills-reminder.ts +19 -4
  258. package/src/domains/middleware/stalled-turn.ts +208 -5
  259. package/src/domains/middleware/types.ts +10 -0
  260. package/src/domains/observability/contract.ts +6 -1
  261. package/src/domains/observability/cost.ts +20 -4
  262. package/src/domains/observability/extension.ts +2 -2
  263. package/src/domains/providers/index.ts +3 -0
  264. package/src/domains/providers/model-discovery.ts +9 -0
  265. package/src/domains/providers/runtime-resolution.ts +38 -1
  266. package/src/domains/providers/runtimes/common/probe-helpers.ts +97 -16
  267. package/src/domains/providers/types/context-window-slots.ts +18 -0
  268. package/src/domains/providers/types/runtime-descriptor.ts +3 -1
  269. package/src/domains/safety/autonomy.ts +1 -1
  270. package/src/domains/safety/call-target.ts +211 -14
  271. package/src/domains/safety/decision-presentation.ts +268 -0
  272. package/src/domains/safety/default-path-policy.ts +8 -0
  273. package/src/domains/safety/finish-contract.ts +4 -3
  274. package/src/domains/safety/policy-engine.ts +48 -6
  275. package/src/domains/safety/redaction.ts +73 -0
  276. package/src/domains/session/compaction/compact.ts +23 -1
  277. package/src/domains/session/compaction/cut-point.ts +2 -0
  278. package/src/domains/session/compaction/tokens.ts +16 -1
  279. package/src/domains/session/context-ledger.ts +12 -1
  280. package/src/domains/session/decision-board.ts +4 -0
  281. package/src/domains/session/entries.ts +110 -1
  282. package/src/domains/session/history.ts +68 -19
  283. package/src/domains/session/manager.ts +9 -2
  284. package/src/domains/session/migrations/index.ts +22 -3
  285. package/src/domains/session/usage.ts +24 -7
  286. package/src/engine/acp/event-mapper.ts +7 -0
  287. package/src/engine/acp/server.ts +32 -2
  288. package/src/engine/agent.ts +18 -1
  289. package/src/engine/apis/lmstudio.ts +25 -4
  290. package/src/engine/apis/openai-completions.ts +147 -22
  291. package/src/engine/claude/sdk-runtime.ts +8 -2
  292. package/src/engine/claude/tool-safety.ts +13 -0
  293. package/src/engine/loop-guard.ts +27 -3
  294. package/src/engine/session.ts +9 -3
  295. package/src/engine/worker-events.ts +4 -3
  296. package/src/engine/worker-runtime.ts +59 -54
  297. package/src/entry/orchestrator.ts +34 -5
  298. package/src/interactive/chat-loop-messages.ts +40 -6
  299. package/src/interactive/chat-loop.ts +13 -0
  300. package/src/interactive/chat-panel.ts +17 -1
  301. package/src/interactive/chat-renderer.ts +49 -24
  302. package/src/interactive/clio-editor.ts +44 -7
  303. package/src/interactive/context-meter.ts +10 -0
  304. package/src/interactive/context-overlay.ts +120 -7
  305. package/src/interactive/context-recall-command.ts +110 -0
  306. package/src/interactive/cost-overlay.ts +39 -8
  307. package/src/interactive/dispatch-board.ts +212 -35
  308. package/src/interactive/footer/widgets.ts +13 -0
  309. package/src/interactive/interactive-application.ts +6 -1
  310. package/src/interactive/interactive-input-runtime.ts +11 -1
  311. package/src/interactive/interactive-presentation.ts +11 -1
  312. package/src/interactive/interactive-slash-runtime.ts +37 -1
  313. package/src/interactive/memory-overlay.ts +89 -4
  314. package/src/interactive/model-session-replay.ts +21 -0
  315. package/src/interactive/overlay-ask-user-lifecycle.ts +1 -1
  316. package/src/interactive/overlay-frame.ts +5 -2
  317. package/src/interactive/overlay-general-openers.ts +46 -1
  318. package/src/interactive/overlay-key-routing.ts +41 -1
  319. package/src/interactive/overlay-lifecycle.ts +11 -4
  320. package/src/interactive/overlay-permission-lifecycle.ts +23 -8
  321. package/src/interactive/overlay-session-lifecycle.ts +8 -4
  322. package/src/interactive/overlay-transitions.ts +11 -0
  323. package/src/interactive/overlays/ask-user.ts +74 -30
  324. package/src/interactive/overlays/decisions.ts +3 -1
  325. package/src/interactive/permission-hint.ts +35 -0
  326. package/src/interactive/permission-overlay.ts +95 -45
  327. package/src/interactive/renderers/tool-execution.ts +37 -51
  328. package/src/interactive/session-last-turn.ts +8 -1
  329. package/src/interactive/session-transcript.ts +2 -2
  330. package/src/interactive/session-usage-reseed.ts +36 -10
  331. package/src/interactive/slash-commands.ts +31 -4
  332. package/src/interactive/status/summary.ts +5 -0
  333. package/src/interactive/status/types.ts +5 -0
  334. package/src/interactive/terminal-lease.ts +1 -0
  335. package/src/interactive/turn-context.ts +333 -110
  336. package/src/interactive/turn-middleware.ts +7 -6
  337. package/src/interactive/turn-runtime.ts +37 -8
  338. package/src/interactive/turn-state.ts +3 -0
  339. package/src/interactive/worker-progress.ts +440 -0
  340. package/src/interactive/worker-stream.ts +51 -110
  341. package/src/tools/agent-tools.ts +39 -7
  342. package/src/tools/ask-user.ts +21 -1
  343. package/src/tools/bash.ts +144 -82
  344. package/src/tools/builtin-tool-catalog.ts +11 -5
  345. package/src/tools/context/index.ts +107 -5
  346. package/src/tools/context/surface.ts +3 -2
  347. package/src/tools/core-bootstrap.ts +21 -0
  348. package/src/tools/dispatch-arguments.ts +8 -0
  349. package/src/tools/dispatch-event-text.ts +19 -0
  350. package/src/tools/dispatch-runner.ts +9 -7
  351. package/src/tools/dispatch.ts +24 -1
  352. package/src/tools/monitor.ts +43 -20
  353. package/src/tools/registry.ts +72 -10
  354. package/src/tools/result-disposition.ts +706 -0
  355. package/src/tools/result-shaping.ts +321 -20
  356. package/src/tools/safe-exec.ts +2 -0
  357. package/src/tools/verify/authoring.ts +1120 -0
  358. package/src/tools/verify/catalog.ts +346 -0
  359. package/src/tools/verify/index.ts +13 -3
  360. package/src/tools/verify/scripts.ts +135 -37
  361. package/src/tools/verify/surface.ts +9 -5
  362. package/src/tools/worker-evidence.ts +54 -12
  363. package/src/worker/spec-contract.ts +43 -3
  364. package/dist/chunk-J7CWMCQD.js +0 -255
  365. package/dist/chunk-T6YILFSB.js +0 -80
  366. package/dist/chunk-VAKQQHWR.js +0 -434
  367. package/dist/chunk-VPAYEGVX.js +0 -184
  368. package/dist/chunk-XBXAASKX.js +0 -18
  369. package/dist/memory-WFZMGYHX.js +0 -236
  370. package/src/domains/eval/metrics/chaos-stream.ts +0 -93
@@ -5,44 +5,46 @@ import {
5
5
  import {
6
6
  SchedulingDomainModule,
7
7
  createPromptsDomainModule
8
- } from "./chunk-LM5TQCJZ.js";
8
+ } from "./chunk-XF5N4U5A.js";
9
9
  import {
10
10
  AgentsDomainModule,
11
11
  SafetyDomainModule
12
- } from "./chunk-PAJK6MAQ.js";
12
+ } from "./chunk-LYF7OHWH.js";
13
13
  import {
14
14
  ConfigDomainModule,
15
15
  loadDomains
16
- } from "./chunk-OC7FIQPC.js";
16
+ } from "./chunk-R46L2BIR.js";
17
17
  import {
18
18
  createObservabilityDomainModule
19
- } from "./chunk-4XUGQOHA.js";
19
+ } from "./chunk-K7T3E2SR.js";
20
20
  import {
21
21
  fallbackBootstrapOutput
22
- } from "./chunk-PIWWS5BL.js";
22
+ } from "./chunk-CYQKWTG3.js";
23
23
  import {
24
24
  renderCodewikiDigest
25
25
  } from "./chunk-5WIGXA4T.js";
26
26
  import {
27
- DispatchDomainModule,
27
+ DispatchDomainModule
28
+ } from "./chunk-QM3F2GKX.js";
29
+ import {
28
30
  SessionDomainModule
29
- } from "./chunk-SRDMMSEP.js";
31
+ } from "./chunk-CJUB2JJ2.js";
30
32
  import {
31
33
  ResourcesDomainModule
32
34
  } from "./chunk-MFFY33HR.js";
33
35
  import {
34
36
  MiddlewareDomainModule
35
- } from "./chunk-2DJ2KNFG.js";
37
+ } from "./chunk-ZXF4XRKW.js";
36
38
  import {
37
39
  UnsupportedResponseSchemaError,
38
40
  isResponseSchemaRejection
39
- } from "./chunk-LWLEKMDQ.js";
41
+ } from "./chunk-XXQNGV4M.js";
40
42
  import {
41
43
  parseJsonObjectPayload
42
- } from "./chunk-STBPMHSX.js";
44
+ } from "./chunk-EKY57CSP.js";
43
45
  import {
44
46
  ProvidersDomainModule
45
- } from "./chunk-LZSJBIVT.js";
47
+ } from "./chunk-DJVECN66.js";
46
48
  import {
47
49
  init_esm_shims
48
50
  } from "./chunk-3R73A4XB.js";
@@ -671,4 +673,4 @@ export {
671
673
  validateInitOptions,
672
674
  bootstrapInputFromInitOptions
673
675
  };
674
- //# sourceMappingURL=chunk-FNTMWMX5.js.map
676
+ //# sourceMappingURL=chunk-CKXWIANG.js.map
@@ -1,13 +1,17 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ createTomlFileReader,
4
+ tomlTableAt
5
+ } from "./chunk-LCGCVYZ4.js";
2
6
  import {
3
7
  renderCodewikiDigest
4
8
  } from "./chunk-5WIGXA4T.js";
5
9
  import {
6
10
  loadMemoryRecordsSync
7
- } from "./chunk-V6RTAOC2.js";
11
+ } from "./chunk-6US73PDB.js";
8
12
  import {
9
13
  sha256
10
- } from "./chunk-SRDMMSEP.js";
14
+ } from "./chunk-QM3F2GKX.js";
11
15
  import {
12
16
  WIKI_INDEX,
13
17
  WIKI_PLAN_FILE,
@@ -33,7 +37,7 @@ import {
33
37
  wikiStaleness,
34
38
  writeWikiMeta,
35
39
  writeWikiPlanFile
36
- } from "./chunk-X4RCMKVQ.js";
40
+ } from "./chunk-NDINPTJ4.js";
37
41
  import {
38
42
  buildCodewikiCandidate,
39
43
  coordinateCodewikiExclusive,
@@ -49,24 +53,24 @@ import {
49
53
  } from "./chunk-VG7TBQIY.js";
50
54
  import {
51
55
  detectProjectType
52
- } from "./chunk-YHZX5GEU.js";
56
+ } from "./chunk-XAKHZX5N.js";
53
57
  import {
54
58
  computeFingerprintCached,
55
59
  isStale
56
- } from "./chunk-VJWL6YS5.js";
60
+ } from "./chunk-UUVG37B4.js";
57
61
  import {
58
62
  codewikiPath,
59
63
  readCodewiki
60
64
  } from "./chunk-LBMZMYH2.js";
61
65
  import {
62
66
  enumerateWorkspaceFiles
63
- } from "./chunk-EKMEHE4H.js";
64
- import {
65
- ceilChars
66
- } from "./chunk-LZSJBIVT.js";
67
+ } from "./chunk-33YXPOE3.js";
67
68
  import {
68
69
  INTEROP_AGENT_KINDS
69
70
  } from "./chunk-IHXBNWMM.js";
71
+ import {
72
+ ceilChars
73
+ } from "./chunk-GEYXPTRF.js";
70
74
  import {
71
75
  require_dist
72
76
  } from "./chunk-APJ265NV.js";
@@ -76,7 +80,7 @@ import {
76
80
  } from "./chunk-BNAZZHFG.js";
77
81
  import {
78
82
  BusChannels
79
- } from "./chunk-OQ33BKR3.js";
83
+ } from "./chunk-G7MUEIGA.js";
80
84
  import {
81
85
  classifyProjectPreload
82
86
  } from "./chunk-JVCV3ICN.js";
@@ -1103,33 +1107,6 @@ function jsonRecord(cwd, relative6) {
1103
1107
  return null;
1104
1108
  }
1105
1109
  }
1106
- function tomlTableValue(raw, table, key) {
1107
- const lines = raw.split(/\r?\n/u);
1108
- let inTable = false;
1109
- for (const line of lines) {
1110
- const trimmed = line.trim();
1111
- if (trimmed.startsWith("[")) {
1112
- inTable = trimmed === `[${table}]`;
1113
- continue;
1114
- }
1115
- if (!inTable) continue;
1116
- const match = /^([A-Za-z0-9_-]+)\s*=\s*(.*)$/u.exec(trimmed);
1117
- if (!match || match[1] !== key) continue;
1118
- const value = (match[2] ?? "").trim();
1119
- const quoted = /^"((?:[^"\\]|\\.)*)"$/u.exec(value) ?? /^'([^']*)'$/u.exec(value);
1120
- if (!quoted) return null;
1121
- return (quoted[1] ?? "").replace(/\\"/gu, '"');
1122
- }
1123
- return null;
1124
- }
1125
- function hasTomlTable(raw, table) {
1126
- const header = `[${table}]`;
1127
- return raw.split(/\r?\n/u).some((line) => {
1128
- const trimmed = line.trim();
1129
- if (!trimmed.startsWith(header)) return false;
1130
- return /^\s*(?:#.*)?$/u.test(trimmed.slice(header.length));
1131
- });
1132
- }
1133
1110
  function keyEqualsValue(raw, key) {
1134
1111
  const match = new RegExp(`^[ \\t]*${key}[ \\t]*(?:\\+?=)[ \\t]*(.+)$`, "mu").exec(raw);
1135
1112
  const value = match?.[1]?.trim();
@@ -1172,24 +1149,28 @@ var packageJson = (cwd) => {
1172
1149
  if (!record) return null;
1173
1150
  return { file: "package.json", fragment: { name: name(record.name), description: description(record.description) } };
1174
1151
  };
1175
- var pyprojectToml = (cwd) => {
1176
- const raw = readText(cwd, "pyproject.toml");
1177
- if (raw === null) return null;
1178
- const projectName2 = tomlTableValue(raw, "project", "name") ?? tomlTableValue(raw, "tool.poetry", "name");
1179
- const projectDescription = tomlTableValue(raw, "project", "description") ?? tomlTableValue(raw, "tool.poetry", "description");
1152
+ var pyprojectToml = (_cwd, tomlFiles) => {
1153
+ const document = tomlFiles.read("pyproject.toml");
1154
+ if (document === null) return null;
1155
+ const project = tomlTableAt(document, ["project"]);
1156
+ const poetry = tomlTableAt(document, ["tool", "poetry"]);
1180
1157
  return {
1181
1158
  file: "pyproject.toml",
1182
- fragment: { name: name(projectName2), description: description(projectDescription) }
1159
+ fragment: {
1160
+ name: name(project?.name) ?? name(poetry?.name),
1161
+ description: description(project?.description) ?? description(poetry?.description)
1162
+ }
1183
1163
  };
1184
1164
  };
1185
- var cargoToml = (cwd) => {
1186
- const raw = readText(cwd, "Cargo.toml");
1187
- if (raw === null) return null;
1165
+ var cargoToml = (_cwd, tomlFiles) => {
1166
+ const document = tomlFiles.read("Cargo.toml");
1167
+ if (document === null) return null;
1168
+ const packageTable = tomlTableAt(document, ["package"]);
1188
1169
  return {
1189
1170
  file: "Cargo.toml",
1190
1171
  fragment: {
1191
- name: name(tomlTableValue(raw, "package", "name")),
1192
- description: description(tomlTableValue(raw, "package", "description"))
1172
+ name: name(packageTable?.name),
1173
+ description: description(packageTable?.description)
1193
1174
  }
1194
1175
  };
1195
1176
  };
@@ -1376,13 +1357,13 @@ function readmeTitle(content) {
1376
1357
  }
1377
1358
  return null;
1378
1359
  }
1379
- function readProjectMetadata(cwd) {
1360
+ function readProjectMetadata(cwd, tomlFiles = createTomlFileReader(cwd)) {
1380
1361
  const out3 = { name: null, description: null, nameSource: null, descriptionSource: null };
1381
1362
  for (const reader of METADATA_READERS) {
1382
1363
  if (out3.name !== null && out3.description !== null) break;
1383
1364
  let read;
1384
1365
  try {
1385
- read = reader(cwd);
1366
+ read = reader(cwd, tomlFiles);
1386
1367
  } catch {
1387
1368
  continue;
1388
1369
  }
@@ -1418,6 +1399,7 @@ function readProjectMetadata(cwd) {
1418
1399
 
1419
1400
  // src/domains/context/prompt-context.ts
1420
1401
  init_esm_shims();
1402
+ var HANDBOOK_ABSENT_FRAGMENT = "<handbook>none: this workspace has no CLIO-CODER.md, so do not read one; learn the repository from its files, and the operator can run /context init to write a handbook</handbook>";
1421
1403
  function renderPromptContext(cwd) {
1422
1404
  const projectType = detectProjectType(cwd);
1423
1405
  const pieces = [renderProjectTypeFragment(projectType)];
@@ -1428,6 +1410,7 @@ function renderPromptContext(cwd) {
1428
1410
  for (const issue of loadedClioMd.errors) {
1429
1411
  warnings.push(`clio: malformed ${issue.path} ignored: ${issue.error}`);
1430
1412
  }
1413
+ if (loadedClioMd.files.length === 0 && loadedClioMd.errors.length === 0) pieces.push(HANDBOOK_ABSENT_FRAGMENT);
1431
1414
  const codewiki = readCodewiki(cwd);
1432
1415
  if (codewiki) {
1433
1416
  const state = readClioState(cwd);
@@ -1485,8 +1468,8 @@ function projectNameFrom(metadata, cwd) {
1485
1468
  }
1486
1469
  return titleFromPackageName(parse(cwd).base || "Project");
1487
1470
  }
1488
- function projectName(cwd) {
1489
- return projectNameFrom(readProjectMetadata(cwd), cwd);
1471
+ function projectName(cwd, tomlFiles) {
1472
+ return projectNameFrom(readProjectMetadata(cwd, tomlFiles), cwd);
1490
1473
  }
1491
1474
  function projectTypeLabel(projectType) {
1492
1475
  switch (projectType) {
@@ -1521,8 +1504,8 @@ function projectTypeLabel(projectType) {
1521
1504
  function allContextText(files) {
1522
1505
  return files.map((file) => file.content).join("\n\n");
1523
1506
  }
1524
- function resolveDefaultIdentity(cwd, projectType, files) {
1525
- const metadata = readProjectMetadata(cwd);
1507
+ function resolveDefaultIdentity(cwd, projectType, files, tomlFiles) {
1508
+ const metadata = readProjectMetadata(cwd, tomlFiles);
1526
1509
  const name2 = projectNameFrom(metadata, cwd);
1527
1510
  const context = allContextText(files);
1528
1511
  if (/Clio owns the agent loop/i.test(context) && /pi-(?:ai|SDK)/i.test(context)) {
@@ -1544,8 +1527,8 @@ function resolveDefaultIdentity(cwd, projectType, files) {
1544
1527
  const role = /^[a-z]/.test(cleaned) ? `It is ${cleaned}.` : `${cleaned}.`;
1545
1528
  return { text: `${head} ${role}`.slice(0, 600), bare: false, descriptionSource: metadata.descriptionSource };
1546
1529
  }
1547
- function stabilizedIdentity(input, modelIdentity) {
1548
- const deterministic = resolveDefaultIdentity(input.cwd, input.projectType, input.siblingFiles);
1530
+ function stabilizedIdentity(input, modelIdentity, tomlFiles) {
1531
+ const deterministic = resolveDefaultIdentity(input.cwd, input.projectType, input.siblingFiles, tomlFiles);
1549
1532
  const model = typeof modelIdentity === "string" ? modelIdentity.trim() : "";
1550
1533
  if (deterministic.bare && model.length > 0) return model;
1551
1534
  return deterministic.text;
@@ -1687,22 +1670,17 @@ function cmakeVerificationLines(cwd) {
1687
1670
  if (test !== null) lines.push(`Run tests with \`ctest --preset ${test}\`.`);
1688
1671
  return lines;
1689
1672
  }
1690
- function pythonVerificationLines(cwd) {
1691
- let pyproject = "";
1692
- try {
1693
- pyproject = readFileSync4(join4(cwd, "pyproject.toml"), "utf8");
1694
- } catch {
1695
- pyproject = "";
1696
- }
1697
- if (existsSync4(join4(cwd, "tox.ini")) || hasTomlTable(pyproject, "tool.tox")) {
1673
+ function pythonVerificationLines(cwd, tomlFiles) {
1674
+ const pyproject = tomlFiles.read("pyproject.toml");
1675
+ if (existsSync4(join4(cwd, "tox.ini")) || pyproject !== null && tomlTableAt(pyproject, ["tool", "tox"])) {
1698
1676
  return ["Run `tox` before handoff."];
1699
1677
  }
1700
- if (existsSync4(join4(cwd, "pytest.ini")) || hasTomlTable(pyproject, "tool.pytest.ini_options")) {
1678
+ if (existsSync4(join4(cwd, "pytest.ini")) || pyproject !== null && tomlTableAt(pyproject, ["tool", "pytest", "ini_options"])) {
1701
1679
  return ["Run `pytest` before handoff."];
1702
1680
  }
1703
1681
  return [];
1704
1682
  }
1705
- function verificationSection(cwd) {
1683
+ function verificationSection(cwd, tomlFiles) {
1706
1684
  const scripts = packageScripts(cwd);
1707
1685
  const pm = packageManager(cwd);
1708
1686
  const hasScript = (name2) => typeof scripts[name2] === "string";
@@ -1730,13 +1708,14 @@ function verificationSection(cwd) {
1730
1708
  lines.push(`Use ${command("ci")} for the full local gate before committing broad or shared behavior changes.`);
1731
1709
  }
1732
1710
  lines.push(...cmakeVerificationLines(cwd));
1733
- if (existsSync4(join4(cwd, "Cargo.toml"))) {
1711
+ const cargo = tomlFiles.read("Cargo.toml");
1712
+ if (cargo !== null && (tomlTableAt(cargo, ["package"]) || tomlTableAt(cargo, ["workspace"]))) {
1734
1713
  lines.push("Run `cargo build` and `cargo test` before handoff.");
1735
1714
  }
1736
1715
  if (existsSync4(join4(cwd, "go.mod"))) {
1737
1716
  lines.push("Run `go build ./...` and `go test ./...` before handoff.");
1738
1717
  }
1739
- lines.push(...pythonVerificationLines(cwd));
1718
+ lines.push(...pythonVerificationLines(cwd, tomlFiles));
1740
1719
  if (lines.length === 0) return null;
1741
1720
  return { title: "Verification expectations", body: lines.join(" ") };
1742
1721
  }
@@ -1818,6 +1797,7 @@ function sanitizeModelSection(section, evidence) {
1818
1797
  return title.length > 0 ? { title, body } : null;
1819
1798
  }
1820
1799
  function stabilizeGeneratedOutput(input, base, onModelSectionRetained, groundModelOutput = false) {
1800
+ const tomlFiles = input.tomlFiles ?? createTomlFileReader(input.cwd);
1821
1801
  const existing = input.existingClioMd;
1822
1802
  const conventions = [];
1823
1803
  for (const convention of existing?.conventions ?? []) pushUnique(conventions, convention);
@@ -1827,7 +1807,7 @@ function stabilizeGeneratedOutput(input, base, onModelSectionRetained, groundMod
1827
1807
  const invariants = [];
1828
1808
  for (const invariant of existing?.invariants ?? []) pushUnique(invariants, invariant);
1829
1809
  for (const invariant of inferInvariants(input.siblingFiles)) pushUnique(invariants, invariant);
1830
- const verification = verificationSection(input.cwd);
1810
+ const verification = verificationSection(input.cwd, tomlFiles);
1831
1811
  const inferredSections = inferHeuristicSections(input);
1832
1812
  const existingSections = existing?.sections ?? [];
1833
1813
  const ordinarySections = [];
@@ -1854,8 +1834,8 @@ function stabilizeGeneratedOutput(input, base, onModelSectionRetained, groundMod
1854
1834
  }
1855
1835
  return {
1856
1836
  ...base,
1857
- projectName: existing?.projectName ?? projectName(input.cwd),
1858
- identity: existing?.identity ?? stabilizedIdentity(input, base.identity),
1837
+ projectName: existing?.projectName ?? projectName(input.cwd, tomlFiles),
1838
+ identity: existing?.identity ?? stabilizedIdentity(input, base.identity, tomlFiles),
1859
1839
  conventions: conventions.slice(0, 6),
1860
1840
  invariants: invariants.slice(0, 3),
1861
1841
  sections: [...retainedOrdinarySections, ...verification ? [verification] : []]
@@ -1897,9 +1877,11 @@ function inferHeuristicSections(input) {
1897
1877
  return sections.slice(0, 6);
1898
1878
  }
1899
1879
  function heuristicBootstrapOutputSync(input) {
1900
- return stabilizeGeneratedOutput(input, {
1901
- projectName: projectName(input.cwd),
1902
- identity: resolveDefaultIdentity(input.cwd, input.projectType, input.siblingFiles).text,
1880
+ const tomlFiles = input.tomlFiles ?? createTomlFileReader(input.cwd);
1881
+ const sharedInput = input.tomlFiles ? input : { ...input, tomlFiles };
1882
+ return stabilizeGeneratedOutput(sharedInput, {
1883
+ projectName: projectName(input.cwd, tomlFiles),
1884
+ identity: resolveDefaultIdentity(input.cwd, input.projectType, input.siblingFiles, tomlFiles).text,
1903
1885
  conventions: inferConventions(input.cwd, input.siblingFiles, input.codewiki),
1904
1886
  invariants: inferInvariants(input.siblingFiles),
1905
1887
  sections: inferHeuristicSections(input)
@@ -2210,6 +2192,7 @@ function codewikiEntryPoints(codewiki, limit = 6) {
2210
2192
  }
2211
2193
  async function runBootstrap(input = {}) {
2212
2194
  const cwd = input.cwd ?? process.cwd();
2195
+ const tomlFiles = createTomlFileReader(cwd);
2213
2196
  const projectType = detectProjectType(cwd);
2214
2197
  progress(input, {
2215
2198
  phase: "scan",
@@ -2286,7 +2269,8 @@ async function runBootstrap(input = {}) {
2286
2269
  });
2287
2270
  output = await (input.generate ?? heuristicBootstrapOutput)({
2288
2271
  cwd,
2289
- expectedProjectName: projectName(cwd),
2272
+ expectedProjectName: projectName(cwd, tomlFiles),
2273
+ tomlFiles,
2290
2274
  projectType,
2291
2275
  siblingFiles,
2292
2276
  adoption,
@@ -2301,7 +2285,8 @@ async function runBootstrap(input = {}) {
2301
2285
  output = stabilizeGeneratedOutput(
2302
2286
  {
2303
2287
  cwd,
2304
- expectedProjectName: projectName(cwd),
2288
+ expectedProjectName: projectName(cwd, tomlFiles),
2289
+ tomlFiles,
2305
2290
  projectType,
2306
2291
  siblingFiles,
2307
2292
  adoption,
@@ -2329,7 +2314,7 @@ async function runBootstrap(input = {}) {
2329
2314
  detail: `${generation.mode}; parser=${generation.parserOutcome}`
2330
2315
  });
2331
2316
  } else {
2332
- output = existingParsed ? bootstrapOutputFromParsed(existingParsed) : await heuristicBootstrapOutput({ cwd, projectType, siblingFiles, adoption, codewiki });
2317
+ output = existingParsed ? bootstrapOutputFromParsed(existingParsed) : await heuristicBootstrapOutput({ cwd, tomlFiles, projectType, siblingFiles, adoption, codewiki });
2333
2318
  progress(input, {
2334
2319
  phase: "generate",
2335
2320
  status: "completed",
@@ -4172,4 +4157,4 @@ export {
4172
4157
  buildWikiPlanPrompt,
4173
4158
  buildWikiPagePrompt
4174
4159
  };
4175
- //# sourceMappingURL=chunk-PIWWS5BL.js.map
4160
+ //# sourceMappingURL=chunk-CYQKWTG3.js.map