@iowarp/clio-coder 0.3.4 → 0.3.7

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 (376) hide show
  1. package/CHANGELOG.md +65 -2
  2. package/CONTRIBUTING.md +6 -6
  3. package/README.md +16 -5
  4. package/dist/{acp-S5R4RR5B.js → acp-SK4MD6MM.js} +11 -11
  5. package/dist/{agents-P6DMMVZY.js → agents-2FN2K6ME.js} +33 -26
  6. package/dist/assets/codewiki.json +1 -1
  7. package/dist/{auth-2XCZLPKS.js → auth-QIYZWM5I.js} +15 -15
  8. package/dist/{chunk-EKMEHE4H.js → chunk-33YXPOE3.js} +2 -3
  9. package/dist/{chunk-VAWWTKDP.js → chunk-3HAPLH5M.js} +11 -11
  10. package/dist/{chunk-YCWGATWI.js → chunk-465YSENW.js} +3 -3
  11. package/dist/{chunk-4OC57DA6.js → chunk-4DGYLA73.js} +53 -2
  12. package/dist/{chunk-UZHIZC5S.js → chunk-4DWFMQDR.js} +61 -76
  13. package/dist/{chunk-ZWMF7253.js → chunk-5C3AQNDW.js} +328 -9
  14. package/dist/{chunk-22NAGB7X.js → chunk-5C77SEEY.js} +5 -94
  15. package/dist/{chunk-WPQLXFOZ.js → chunk-5FR74PWO.js} +3 -2
  16. package/dist/{chunk-35MKKU5R.js → chunk-5UJ6ECTS.js} +18 -10
  17. package/dist/{chunk-BRXQQJFP.js → chunk-6M7VS3J3.js} +571 -50
  18. package/dist/{chunk-QQK64KLB.js → chunk-6TUKSZVF.js} +141 -23
  19. package/dist/{chunk-N4CZJQRK.js → chunk-AB4XIIVB.js} +8 -6
  20. package/dist/{chunk-KRPY7NTG.js → chunk-BMWK7ZIZ.js} +14 -20
  21. package/dist/{chunk-4BPJXDWC.js → chunk-C4JBQ5SR.js} +30 -14
  22. package/dist/{chunk-ZYKPLLNQ.js → chunk-CEYBNUGC.js} +821 -83
  23. package/dist/{chunk-VEZEGCGW.js → chunk-D4MDIG46.js} +20 -18
  24. package/dist/chunk-DJNLUABN.js +843 -0
  25. package/dist/{chunk-BP4OYD6A.js → chunk-DMD2AGVS.js} +21 -2
  26. package/dist/{chunk-KOHPCX4K.js → chunk-DOOEX22V.js} +2 -2
  27. package/dist/chunk-DQA7QLMD.js +123 -0
  28. package/dist/chunk-DR52UMZW.js +21 -0
  29. package/dist/{chunk-3HZ5RWN2.js → chunk-EBEFWSGL.js} +9 -7
  30. package/dist/{chunk-EDRHSCIE.js → chunk-EELBMBT6.js} +128 -13
  31. package/dist/{chunk-HV5X7OR2.js → chunk-EOOQZZDE.js} +16 -14
  32. package/dist/{chunk-WR67VIZY.js → chunk-FOT2FX5J.js} +63 -5
  33. package/dist/{chunk-BPGS2WCQ.js → chunk-GEYXPTRF.js} +2 -1
  34. package/dist/{chunk-FYYLNIL5.js → chunk-GH5622CP.js} +2 -2
  35. package/dist/{chunk-BEY543CS.js → chunk-GOXNB3AO.js} +5 -2
  36. package/dist/chunk-GWS3VEIW.js +195 -0
  37. package/dist/{chunk-G4BMMOKF.js → chunk-HVDIIIQW.js} +2 -2
  38. package/dist/chunk-HWUFFB6L.js +83 -0
  39. package/dist/{chunk-X6COSD2O.js → chunk-J7PIKKWC.js} +8 -436
  40. package/dist/{chunk-NILBFAPG.js → chunk-JNXPYBB4.js} +2 -2
  41. package/dist/{chunk-4VP4KH3K.js → chunk-JRIO5UD2.js} +4 -4
  42. package/dist/{chunk-K6WL7QZT.js → chunk-JTSEDYVQ.js} +7 -7
  43. package/dist/{chunk-QKMUKYO7.js → chunk-KCMKRQX4.js} +236 -84
  44. package/dist/chunk-KZ2H5X4G.js +1026 -0
  45. package/dist/{chunk-A2GZF7DC.js → chunk-LADCF22A.js} +13 -13
  46. package/dist/chunk-LCGCVYZ4.js +57 -0
  47. package/dist/chunk-M4AKACEO.js +382 -0
  48. package/dist/{chunk-POHLU5DW.js → chunk-M6L6IDJG.js} +3 -3
  49. package/dist/{chunk-4JUF2NNX.js → chunk-MXI6J5JF.js} +7 -7
  50. package/dist/{chunk-X4RCMKVQ.js → chunk-NDINPTJ4.js} +2 -2
  51. package/dist/{chunk-TTNYS3EA.js → chunk-OB5HIGJY.js} +1 -1
  52. package/dist/{chunk-7RXG6QRZ.js → chunk-OBMAI2DP.js} +61 -840
  53. package/dist/{chunk-5M54SPOL.js → chunk-ODFEOB4F.js} +161 -5
  54. package/dist/chunk-PD3MESLB.js +242 -0
  55. package/dist/{chunk-ED4KHGC3.js → chunk-PPAMZ32Z.js} +9 -2
  56. package/dist/{chunk-VMNQ6OZA.js → chunk-QCTRSGHQ.js} +963 -786
  57. package/dist/chunk-RVG5JXAL.js +41 -0
  58. package/dist/{chunk-RD5U66HV.js → chunk-SROCI7ZU.js} +7 -7
  59. package/dist/{chunk-MFFY33HR.js → chunk-THKY7CD7.js} +466 -205
  60. package/dist/{chunk-34475P3I.js → chunk-TSHXZTOQ.js} +5 -4
  61. package/dist/{chunk-PCZJO5TI.js → chunk-UFQ3F4FW.js} +13 -178
  62. package/dist/{chunk-AD2SYQYC.js → chunk-UHXRNZ2J.js} +121 -3
  63. package/dist/chunk-UND3GU2L.js +103 -0
  64. package/dist/{chunk-QQL5RT5M.js → chunk-UUANF5CR.js} +2323 -2114
  65. package/dist/{chunk-VJWL6YS5.js → chunk-UUVG37B4.js} +2 -2
  66. package/dist/chunk-UVDSQ6LW.js +472 -0
  67. package/dist/{chunk-QWU7ZBO7.js → chunk-VQNODYQ4.js} +215 -56
  68. package/dist/chunk-VREKEFLL.js +37 -0
  69. package/dist/{chunk-2TZWSW76.js → chunk-WHGPSPT5.js} +2 -2
  70. package/dist/{chunk-TW3WDMVS.js → chunk-WHJYKASB.js} +2 -2
  71. package/dist/{chunk-MEQ45TQ4.js → chunk-WJHBC77E.js} +21 -7
  72. package/dist/{chunk-HXG4IURW.js → chunk-X2KV5FXT.js} +2 -2
  73. package/dist/{chunk-YHZX5GEU.js → chunk-XAKHZX5N.js} +2 -2
  74. package/dist/{chunk-2LZI5CAG.js → chunk-XEGB6BCN.js} +228 -36
  75. package/dist/{chunk-E25LMLRW.js → chunk-YD734TPH.js} +2 -2
  76. package/dist/{verifiers-4UUM6TEE.js → chunk-YTYFXUI3.js} +121 -372
  77. package/dist/{chunk-3JLKSKD7.js → chunk-ZGH7FGS5.js} +17 -7
  78. package/dist/{chunk-VSNATDE6.js → chunk-ZZMN5OM4.js} +2 -2
  79. package/dist/cli/index.js +34 -32
  80. package/dist/{clio-J5JIOIDS.js → clio-WBVQEBKO.js} +7 -7
  81. package/dist/{code-nav-AXCXSBHX.js → code-nav-FGGFIE7L.js} +7 -7
  82. package/dist/codewiki/build-worker.js +4 -4
  83. package/dist/{components-KELWS457.js → components-F7OEATSO.js} +5 -5
  84. package/dist/{config-OEBMIN2U.js → config-TRBL3RCF.js} +48 -41
  85. package/dist/{configure-PUQOSIXQ.js → configure-OLCVPHNM.js} +17 -17
  86. package/dist/{context-URSXPBCK.js → context-MJIJ6GOX.js} +12 -12
  87. package/dist/{context-EKDCKUUZ.js → context-WFPKQSM6.js} +26 -9
  88. package/dist/{context-MGSE4Z2T.js → context-XEWE3MOJ.js} +44 -37
  89. package/dist/{context-clear-KDAJRNUK.js → context-clear-KNOS2JPB.js} +44 -37
  90. package/dist/{context-index-BZ4UYMTC.js → context-index-SSR5ECNE.js} +3 -3
  91. package/dist/{context-working-set-SBKMPPI2.js → context-working-set-EUXAZI6N.js} +14 -13
  92. package/dist/{dispatch-runner-MSWN72NK.js → dispatch-runner-B7MTOVKL.js} +321 -60
  93. package/dist/{docs-2C2LTVT2.js → docs-FLJTIDSE.js} +5 -5
  94. package/dist/{doctor-7BSE27PJ.js → doctor-RN4YKO2X.js} +15 -15
  95. package/dist/{eval-IZGDOO4H.js → eval-RUBJVSNQ.js} +52 -236
  96. package/dist/{evidence-SR7WXB5B.js → evidence-JZNBUOQZ.js} +39 -33
  97. package/dist/{evolve-K7VE2CBX.js → evolve-FJVC4KKI.js} +39 -33
  98. package/dist/{extensions-QVDOHDGJ.js → extensions-IQL36S7K.js} +5 -5
  99. package/dist/{fleet-7XMJNQNF.js → fleet-BDKYJFCP.js} +243 -370
  100. package/dist/fleet-commands-ZFIWZSB3.js +70 -0
  101. package/dist/fleet-graph-Y6HPXIVF.js +125 -0
  102. package/dist/fleet-new-RDVJLHHH.js +48 -0
  103. package/dist/{fleet-preflight-AQNAH644.js → fleet-preflight-BHSNPBMH.js} +2 -2
  104. package/dist/fleet-validate-BIYREGIK.js +79 -0
  105. package/dist/{init-JGNPAYXT.js → init-LQUB5COQ.js} +57 -48
  106. package/dist/library-NJAHIGG4.js +217 -0
  107. package/dist/memory-OG6HOYKM.js +472 -0
  108. package/dist/{models-ZMMLFJNN.js → models-5ZG5XY7J.js} +23 -22
  109. package/dist/{monitor-2F3T5KHP.js → monitor-TJ7AMTGB.js} +69 -35
  110. package/dist/{orchestrator-ORHT43JB.js → orchestrator-WZYB54DM.js} +4868 -1189
  111. package/dist/{paths-UXLN5YYZ.js → paths-XUC7GS6E.js} +5 -5
  112. package/dist/{reset-NXGTYNUO.js → reset-PXQT45IY.js} +8 -8
  113. package/dist/{run-RF4WJGMT.js → run-FQ74YF62.js} +82 -62
  114. package/dist/{share-UT3W6E4M.js → share-FW7SVCL3.js} +34 -10
  115. package/dist/{skills-PSACKC5Q.js → skills-7E7IRB3R.js} +25 -9
  116. package/dist/{skills-eval-WJSI55RZ.js → skills-eval-LI75W6OK.js} +43 -35
  117. package/dist/{targets-PIIRAOYS.js → targets-4CIFKCTW.js} +27 -24
  118. package/dist/{terminal-lease-ULWXWNVY.js → terminal-lease-WUZY7ZV5.js} +5 -4
  119. package/dist/{uninstall-FZCQCDKC.js → uninstall-7FV7IP4E.js} +5 -5
  120. package/dist/{upgrade-346TZ6AV.js → upgrade-K2HVIVMQ.js} +21 -20
  121. package/dist/{usage-6KKXR32N.js → usage-GTZELZQX.js} +159 -59
  122. package/dist/verifiers-RLAHT27O.js +336 -0
  123. package/dist/{verify-X5HDROLA.js → verify-BX3BRKH5.js} +7 -6
  124. package/dist/{wiki-generate-7STOCIFZ.js → wiki-generate-ASIFASCN.js} +58 -48
  125. package/dist/worker/entry.js +98 -84
  126. package/dist/{workspace-G4ZWUIPR.js → workspace-ZJ6BFM3Q.js} +4 -4
  127. package/docs/README.md +4 -3
  128. package/docs/acp.md +1 -1
  129. package/docs/alcf-provider.md +1 -1
  130. package/docs/architecture.md +2 -2
  131. package/docs/artifact-placement.md +1 -2
  132. package/docs/artifact-versions.md +10 -6
  133. package/docs/built-in-agents.md +26 -2
  134. package/docs/capacity-and-scheduling.md +1 -1
  135. package/docs/commands-and-modes.md +90 -8
  136. package/docs/configuration-and-targets.md +90 -2
  137. package/docs/context-engine.md +4 -2
  138. package/docs/context-working-set.md +4 -4
  139. package/docs/development-pipeline.md +1 -1
  140. package/docs/dispatch-architecture-rationale.md +1 -1
  141. package/docs/documentation-coverage.md +4 -4
  142. package/docs/documentation-guide.md +4 -4
  143. package/docs/eval-runner.md +1 -1
  144. package/docs/evals-internal.md +4 -45
  145. package/docs/evidence-and-memory.md +70 -10
  146. package/docs/evolution.md +1 -1
  147. package/docs/exit-codes-and-output.md +4 -1
  148. package/docs/extensions-and-sharing.md +6 -2
  149. package/docs/fleet-demo-runbook.md +2 -2
  150. package/docs/fleet-dispatch.md +224 -11
  151. package/docs/git-commit-provenance.md +2 -2
  152. package/docs/glossary.md +1 -1
  153. package/docs/installation-and-lifecycle.md +2 -2
  154. package/docs/middleware-and-components.md +20 -2
  155. package/docs/model-catalog.md +1 -1
  156. package/docs/observability.md +55 -8
  157. package/docs/proactive-memory.md +26 -16
  158. package/docs/prompt-envelope-and-tools.md +4 -2
  159. package/docs/provider-adapter-cookbook.md +1 -1
  160. package/docs/release-cut-checklist.md +83 -65
  161. package/docs/resource-library.md +59 -0
  162. package/docs/safety-model.md +29 -7
  163. package/docs/scientific-validation.md +3 -3
  164. package/docs/session-lifecycle.md +37 -1
  165. package/docs/skills-marketplace.md +16 -3
  166. package/docs/tool-usage.md +14 -7
  167. package/docs/trace-store.md +1 -1
  168. package/docs/troubleshooting.md +1 -1
  169. package/docs/tui-design.md +38 -4
  170. package/docs/worker-dispatch-mechanics.md +3 -3
  171. package/package.json +7 -4
  172. package/src/cli/agents.ts +2 -3
  173. package/src/cli/argv.ts +14 -1
  174. package/src/cli/fleet-commands.ts +37 -0
  175. package/src/cli/fleet-graph.ts +102 -0
  176. package/src/cli/fleet-new.ts +36 -0
  177. package/src/cli/fleet-preflight.ts +121 -0
  178. package/src/cli/fleet-validate.ts +30 -0
  179. package/src/cli/fleet.ts +188 -335
  180. package/src/cli/index.ts +4 -2
  181. package/src/cli/library.ts +190 -0
  182. package/src/cli/memory.ts +272 -10
  183. package/src/cli/modes/json-stream.ts +2 -2
  184. package/src/cli/modes/print.ts +12 -1
  185. package/src/cli/run.ts +22 -2
  186. package/src/cli/share.ts +13 -1
  187. package/src/cli/targets.ts +12 -3
  188. package/src/cli/usage.ts +160 -20
  189. package/src/core/bus-events.ts +7 -0
  190. package/src/core/commit-attribution.ts +4 -4
  191. package/src/core/config.ts +130 -0
  192. package/src/core/defaults.ts +81 -0
  193. package/src/core/response-model-id.ts +134 -0
  194. package/src/core/toml.ts +62 -0
  195. package/src/core/workspace-files.ts +0 -1
  196. package/src/domains/agents/builtins/architect.md +2 -1
  197. package/src/domains/agents/builtins/oracle.md +33 -0
  198. package/src/domains/agents/catalog.ts +18 -5
  199. package/src/domains/agents/fleet-contract.ts +278 -16
  200. package/src/domains/agents/index.ts +14 -0
  201. package/src/domains/agents/recipe.ts +54 -14
  202. package/src/domains/agents/result-contract.ts +242 -5
  203. package/src/domains/config/classify.ts +4 -0
  204. package/src/domains/context/bootstrap.ts +36 -27
  205. package/src/domains/context/project-metadata.ts +19 -63
  206. package/src/domains/context/prompt-context.ts +8 -0
  207. package/src/domains/context/working-set/policies/index.ts +3 -4
  208. package/src/domains/dispatch/active-route-planner.ts +14 -0
  209. package/src/domains/dispatch/backoff.ts +2 -1
  210. package/src/domains/dispatch/budget-envelope.ts +396 -0
  211. package/src/domains/dispatch/capability-match.ts +1 -0
  212. package/src/domains/dispatch/checkout-writer-lease.ts +175 -0
  213. package/src/domains/dispatch/contract.ts +36 -0
  214. package/src/domains/dispatch/delegation-plan.ts +167 -0
  215. package/src/domains/dispatch/execution-plan.ts +76 -5
  216. package/src/domains/dispatch/execution-role.ts +3 -1
  217. package/src/domains/dispatch/execution-scheduler.ts +183 -67
  218. package/src/domains/dispatch/extension.ts +339 -36
  219. package/src/domains/dispatch/fleet-gate.ts +14 -0
  220. package/src/domains/dispatch/fleet-plan.ts +63 -3
  221. package/src/domains/dispatch/fleet-run.ts +737 -0
  222. package/src/domains/dispatch/gate-role-prompts.ts +9 -0
  223. package/src/domains/dispatch/host-verification.ts +178 -0
  224. package/src/domains/dispatch/index.ts +38 -0
  225. package/src/domains/dispatch/intent.ts +159 -0
  226. package/src/domains/dispatch/orphan-recovery.ts +1 -0
  227. package/src/domains/dispatch/receipt-integrity.ts +12 -4
  228. package/src/domains/dispatch/state.ts +37 -3
  229. package/src/domains/dispatch/types.ts +61 -9
  230. package/src/domains/dispatch/validation.ts +80 -6
  231. package/src/domains/dispatch/worker-spawn.ts +14 -3
  232. package/src/domains/eval/metrics/evidence.ts +0 -116
  233. package/src/domains/eval/metrics/invariants.ts +1 -1
  234. package/src/domains/eval/runners/clio-run.ts +1 -10
  235. package/src/domains/eval/runners/external-command.ts +2 -29
  236. package/src/domains/eval/schema/suite.ts +0 -7
  237. package/src/domains/eval/suites/run.ts +1 -7
  238. package/src/domains/evidence/trust-status.ts +10 -1
  239. package/src/domains/memory/index.ts +22 -0
  240. package/src/domains/memory/operations.ts +58 -1
  241. package/src/domains/memory/promotion.ts +281 -0
  242. package/src/domains/memory/prompt-section.ts +25 -5
  243. package/src/domains/memory/proposal.ts +51 -7
  244. package/src/domains/memory/task-bank.ts +3 -2
  245. package/src/domains/memory/task-memory-handoff.ts +181 -24
  246. package/src/domains/memory/task-memory-policy.ts +3 -1
  247. package/src/domains/memory/types.ts +37 -0
  248. package/src/domains/memory/validate.ts +178 -0
  249. package/src/domains/middleware/index.ts +15 -0
  250. package/src/domains/middleware/memory-intervention.ts +35 -25
  251. package/src/domains/middleware/runtime.ts +6 -0
  252. package/src/domains/middleware/skills-reminder.ts +19 -4
  253. package/src/domains/middleware/stalled-turn.ts +43 -1
  254. package/src/domains/middleware/types.ts +10 -0
  255. package/src/domains/middleware/watchdog.ts +281 -0
  256. package/src/domains/observability/contract.ts +9 -2
  257. package/src/domains/observability/cost.ts +31 -4
  258. package/src/domains/observability/extension.ts +2 -2
  259. package/src/domains/observability/index.ts +10 -0
  260. package/src/domains/observability/out-of-turn-usage.ts +223 -0
  261. package/src/domains/providers/index.ts +3 -0
  262. package/src/domains/providers/model-discovery.ts +9 -0
  263. package/src/domains/providers/runtime-resolution.ts +38 -1
  264. package/src/domains/providers/runtimes/common/probe-helpers.ts +97 -16
  265. package/src/domains/providers/types/context-window-slots.ts +18 -0
  266. package/src/domains/providers/types/runtime-descriptor.ts +3 -1
  267. package/src/domains/resources/index.ts +20 -0
  268. package/src/domains/resources/library.ts +326 -0
  269. package/src/domains/resources/skills/marketplace.ts +37 -12
  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/redaction.ts +73 -0
  273. package/src/domains/session/context-ledger.ts +10 -1
  274. package/src/domains/session/decision-board.ts +4 -0
  275. package/src/domains/session/entries.ts +3 -0
  276. package/src/domains/session/handoff.ts +629 -0
  277. package/src/domains/session/history.ts +68 -19
  278. package/src/domains/session/usage.ts +24 -7
  279. package/src/domains/share/archive.ts +67 -2
  280. package/src/engine/acp/event-mapper.ts +7 -0
  281. package/src/engine/acp/server.ts +29 -2
  282. package/src/engine/apis/lmstudio.ts +25 -4
  283. package/src/engine/apis/openai-completions.ts +147 -22
  284. package/src/engine/claude/sdk-runtime.ts +8 -2
  285. package/src/engine/claude/tool-safety.ts +13 -0
  286. package/src/engine/loop-guard.ts +27 -3
  287. package/src/engine/worker-events.ts +4 -3
  288. package/src/engine/worker-runtime.ts +59 -54
  289. package/src/entry/orchestrator.ts +55 -1
  290. package/src/interactive/bus-notices.ts +26 -0
  291. package/src/interactive/chat-loop-messages.ts +22 -0
  292. package/src/interactive/chat-loop.ts +248 -1
  293. package/src/interactive/chat-renderer.ts +41 -3
  294. package/src/interactive/clio-editor.ts +44 -7
  295. package/src/interactive/context-overlay.ts +43 -5
  296. package/src/interactive/cost-overlay.ts +70 -11
  297. package/src/interactive/council-dispatch.ts +30 -0
  298. package/src/interactive/council-grid.ts +213 -0
  299. package/src/interactive/council.ts +99 -0
  300. package/src/interactive/dispatch-board.ts +471 -50
  301. package/src/interactive/fleet-run-preview.ts +307 -0
  302. package/src/interactive/footer/notifications.ts +219 -0
  303. package/src/interactive/footer/widgets.ts +13 -0
  304. package/src/interactive/handoff-round.ts +56 -0
  305. package/src/interactive/interactive-application.ts +49 -2
  306. package/src/interactive/interactive-event-projection.ts +9 -1
  307. package/src/interactive/interactive-input-runtime.ts +11 -1
  308. package/src/interactive/interactive-presentation.ts +11 -1
  309. package/src/interactive/interactive-slash-runtime.ts +52 -2
  310. package/src/interactive/interactive-subscriptions.ts +14 -2
  311. package/src/interactive/memory-overlay.ts +89 -4
  312. package/src/interactive/oracle.ts +179 -0
  313. package/src/interactive/overlay-ask-user-lifecycle.ts +7 -1
  314. package/src/interactive/overlay-frame.ts +5 -2
  315. package/src/interactive/overlay-general-openers.ts +230 -2
  316. package/src/interactive/overlay-key-routing.ts +58 -2
  317. package/src/interactive/overlay-lifecycle.ts +52 -5
  318. package/src/interactive/overlay-permission-lifecycle.ts +33 -8
  319. package/src/interactive/overlay-resource-openers.ts +11 -3
  320. package/src/interactive/overlay-session-lifecycle.ts +234 -2
  321. package/src/interactive/overlay-transitions.ts +11 -0
  322. package/src/interactive/overlays/ask-user.ts +74 -30
  323. package/src/interactive/overlays/decisions.ts +3 -1
  324. package/src/interactive/overlays/fleet-run-approval.ts +208 -0
  325. package/src/interactive/overlays/handoff-review.ts +185 -0
  326. package/src/interactive/overlays/library-install-confirm.ts +151 -0
  327. package/src/interactive/overlays/list-overlay.ts +168 -2
  328. package/src/interactive/overlays/settings.ts +101 -4
  329. package/src/interactive/overlays/side-question.ts +139 -0
  330. package/src/interactive/overlays/skills-hub.ts +401 -15
  331. package/src/interactive/permission-hint.ts +35 -0
  332. package/src/interactive/permission-overlay.ts +95 -45
  333. package/src/interactive/renderers/tool-execution.ts +19 -49
  334. package/src/interactive/session-last-turn.ts +8 -1
  335. package/src/interactive/session-usage-reseed.ts +36 -10
  336. package/src/interactive/side-question.ts +171 -0
  337. package/src/interactive/slash-commands.ts +434 -7
  338. package/src/interactive/slash-spec.ts +19 -6
  339. package/src/interactive/status/summary.ts +5 -0
  340. package/src/interactive/status/types.ts +5 -0
  341. package/src/interactive/terminal-lease.ts +1 -0
  342. package/src/interactive/theme/tokens.ts +30 -0
  343. package/src/interactive/turn-context.ts +96 -23
  344. package/src/interactive/turn-middleware.ts +16 -1
  345. package/src/interactive/turn-runtime.ts +37 -8
  346. package/src/interactive/turn-state.ts +3 -0
  347. package/src/interactive/watchdog-run.ts +75 -0
  348. package/src/interactive/worker-progress.ts +440 -0
  349. package/src/interactive/worker-share.ts +56 -1
  350. package/src/interactive/worker-stream.ts +58 -110
  351. package/src/tools/agent-tools.ts +28 -3
  352. package/src/tools/ask-user.ts +21 -1
  353. package/src/tools/bootstrap.ts +3 -0
  354. package/src/tools/compete-worktrees.ts +13 -79
  355. package/src/tools/context/index.ts +2 -2
  356. package/src/tools/dispatch-admission.ts +242 -8
  357. package/src/tools/dispatch-arguments.ts +65 -1
  358. package/src/tools/dispatch-event-text.ts +19 -0
  359. package/src/tools/dispatch-plan.ts +136 -6
  360. package/src/tools/dispatch-runner.ts +319 -13
  361. package/src/tools/dispatch-types.ts +20 -1
  362. package/src/tools/dispatch.ts +96 -3
  363. package/src/tools/monitor.ts +31 -0
  364. package/src/tools/profiles.ts +18 -4
  365. package/src/tools/registry.ts +15 -5
  366. package/src/tools/result-disposition.ts +156 -0
  367. package/src/tools/result-shaping.ts +59 -1
  368. package/src/tools/task-worktree.ts +238 -0
  369. package/src/tools/verify/authoring.ts +116 -55
  370. package/src/tools/verify/scripts.ts +62 -0
  371. package/src/tools/worker-evidence.ts +21 -1
  372. package/src/worker/spec-contract.ts +44 -3
  373. package/dist/chunk-EFADSJET.js +0 -18
  374. package/dist/chunk-HC4CLZ2Y.js +0 -68
  375. package/dist/memory-4ALKDJ4Q.js +0 -246
  376. package/src/domains/eval/metrics/chaos-stream.ts +0 -93
@@ -10,14 +10,14 @@ import {
10
10
  import {
11
11
  credentialWriteFailed,
12
12
  printPlaintextCredentialWarning
13
- } from "./chunk-YCWGATWI.js";
13
+ } from "./chunk-465YSENW.js";
14
14
  import {
15
15
  columnWidths,
16
16
  formatColumnRow,
17
17
  formatColumns,
18
18
  printError,
19
19
  printOk
20
- } from "./chunk-ED4KHGC3.js";
20
+ } from "./chunk-PPAMZ32Z.js";
21
21
  import "./chunk-5TSRNF4G.js";
22
22
  import {
23
23
  EMPTY_CAPABILITIES,
@@ -26,35 +26,35 @@ import {
26
26
  registerBuiltinRuntimes,
27
27
  resolveProviderReference,
28
28
  supportGroupLabel
29
- } from "./chunk-QWU7ZBO7.js";
29
+ } from "./chunk-VQNODYQ4.js";
30
30
  import "./chunk-CFGTUFWB.js";
31
- import {
32
- readSettings
33
- } from "./chunk-AD2SYQYC.js";
34
- import "./chunk-4OC57DA6.js";
35
- import "./chunk-LL4KHSZI.js";
36
31
  import {
37
32
  authNotRequiredStatus,
38
33
  openAuthStorage,
39
34
  registerClioOAuthProviders,
40
35
  resolveRuntimeAuthTarget,
41
36
  targetRequiresAuth
42
- } from "./chunk-4VP4KH3K.js";
43
- import "./chunk-FQ4SKYE4.js";
44
- import "./chunk-IKCO5N3L.js";
45
- import "./chunk-3I7MS7N2.js";
46
- import "./chunk-BPGS2WCQ.js";
37
+ } from "./chunk-JRIO5UD2.js";
38
+ import "./chunk-GEYXPTRF.js";
39
+ import {
40
+ readSettings
41
+ } from "./chunk-UHXRNZ2J.js";
42
+ import "./chunk-4DGYLA73.js";
43
+ import "./chunk-LL4KHSZI.js";
47
44
  import "./chunk-SST6Z5JA.js";
48
45
  import "./chunk-FO5ZOVUY.js";
49
46
  import "./chunk-R346GLFC.js";
47
+ import "./chunk-FQ4SKYE4.js";
50
48
  import "./chunk-4ZG3XFUR.js";
49
+ import "./chunk-IKCO5N3L.js";
50
+ import "./chunk-3I7MS7N2.js";
51
51
  import "./chunk-FCSXB6T2.js";
52
52
  import "./chunk-APJ265NV.js";
53
53
  import "./chunk-YXLYO42X.js";
54
54
  import "./chunk-BNAZZHFG.js";
55
55
  import "./chunk-WEPFGWHJ.js";
56
56
  import "./chunk-ZGVHUX3M.js";
57
- import "./chunk-TTNYS3EA.js";
57
+ import "./chunk-OB5HIGJY.js";
58
58
  import "./chunk-IWHMRKLL.js";
59
59
  import {
60
60
  init_esm_shims
@@ -537,4 +537,4 @@ async function runAuthCommand(args) {
537
537
  export {
538
538
  runAuthCommand
539
539
  };
540
- //# sourceMappingURL=auth-2XCZLPKS.js.map
540
+ //# sourceMappingURL=auth-QIYZWM5I.js.map
@@ -94,8 +94,7 @@ var WORKSPACE_EXCLUDED_DIRS = /* @__PURE__ */ new Set([
94
94
  "vendor",
95
95
  ".superpowers",
96
96
  ".codex",
97
- ".claude",
98
- ".clio-coder-benchmark"
97
+ ".claude"
99
98
  ]);
100
99
  function comparePaths(a, b) {
101
100
  return a === b ? 0 : a < b ? -1 : 1;
@@ -337,4 +336,4 @@ export {
337
336
  enumerateWorkspaceFilesAsync,
338
337
  filterWorkspaceFileCandidates
339
338
  };
340
- //# sourceMappingURL=chunk-EKMEHE4H.js.map
339
+ //# sourceMappingURL=chunk-33YXPOE3.js.map
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
3
  loadSkills
4
- } from "./chunk-4BPJXDWC.js";
4
+ } from "./chunk-C4JBQ5SR.js";
5
5
  import {
6
6
  getVersionInfo
7
7
  } from "./chunk-XPLRXC72.js";
@@ -9,21 +9,21 @@ import {
9
9
  detectInteropAgents,
10
10
  fingerprintNativeRuntime,
11
11
  resolveOnPath
12
- } from "./chunk-RD5U66HV.js";
12
+ } from "./chunk-SROCI7ZU.js";
13
13
  import {
14
14
  initializeClioHome
15
- } from "./chunk-KOHPCX4K.js";
16
- import {
17
- formatSettingsIssues,
18
- readSettings,
19
- validateSettingsFile
20
- } from "./chunk-AD2SYQYC.js";
15
+ } from "./chunk-DOOEX22V.js";
21
16
  import {
22
17
  openAuthStorage
23
- } from "./chunk-4VP4KH3K.js";
18
+ } from "./chunk-JRIO5UD2.js";
24
19
  import {
25
20
  interopAgentKind
26
21
  } from "./chunk-IHXBNWMM.js";
22
+ import {
23
+ formatSettingsIssues,
24
+ readSettings,
25
+ validateSettingsFile
26
+ } from "./chunk-UHXRNZ2J.js";
27
27
  import {
28
28
  readSessionFileEntries
29
29
  } from "./chunk-FO5ZOVUY.js";
@@ -337,7 +337,7 @@ async function runDoctorFleetChecks(projectRoot = process.cwd()) {
337
337
  }
338
338
  const nodes = settings.fleet?.nodes ?? [];
339
339
  if (nodes.length === 0) return [];
340
- const { recordFleetPreflight, runFleetNodePreflight } = await import("./fleet-preflight-AQNAH644.js");
340
+ const { recordFleetPreflight, runFleetNodePreflight } = await import("./fleet-preflight-BHSNPBMH.js");
341
341
  const targets = (settings.targets ?? []).map((target) => ({
342
342
  id: target.id,
343
343
  runtimeId: target.runtime,
@@ -437,4 +437,4 @@ export {
437
437
  runDoctorInteropChecks,
438
438
  runDoctorRuntimeChecks
439
439
  };
440
- //# sourceMappingURL=chunk-VAWWTKDP.js.map
440
+ //# sourceMappingURL=chunk-3HAPLH5M.js.map
@@ -1,13 +1,13 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
3
  printError
4
- } from "./chunk-ED4KHGC3.js";
4
+ } from "./chunk-PPAMZ32Z.js";
5
5
  import {
6
6
  source_default
7
7
  } from "./chunk-5TSRNF4G.js";
8
8
  import {
9
9
  authStoragePath
10
- } from "./chunk-4VP4KH3K.js";
10
+ } from "./chunk-JRIO5UD2.js";
11
11
  import {
12
12
  init_esm_shims
13
13
  } from "./chunk-3R73A4XB.js";
@@ -35,4 +35,4 @@ export {
35
35
  printPlaintextCredentialWarning,
36
36
  credentialWriteFailed
37
37
  };
38
- //# sourceMappingURL=chunk-YCWGATWI.js.map
38
+ //# sourceMappingURL=chunk-465YSENW.js.map
@@ -20,6 +20,22 @@ var THINKING_LEVELS = [
20
20
  "xhigh",
21
21
  "max"
22
22
  ];
23
+ var COUNCIL_MEMBER_LABEL_PATTERN = /^[a-z][a-z0-9_-]{0,31}$/u;
24
+ var THEME_NAMED_COLORS = [
25
+ "accent",
26
+ "accentDeep",
27
+ "action",
28
+ "success",
29
+ "warning",
30
+ "error",
31
+ "info",
32
+ "reason",
33
+ "dim",
34
+ "muted",
35
+ "title",
36
+ "frame",
37
+ "frameStrong"
38
+ ];
23
39
  var DEFAULT_DELEGATION_CONNECT_TIMEOUT_MS = 3e4;
24
40
  var DEFAULT_DELEGATION_TURN_TIMEOUT_MS = 3e5;
25
41
  var DEFAULT_DELEGATION_PERMISSION_TIMEOUT_MS = 12e4;
@@ -56,6 +72,7 @@ var DEFAULT_SETTINGS = {
56
72
  timeoutMs: 18e4
57
73
  }
58
74
  },
75
+ watchdog: { enabled: false },
59
76
  workers: {
60
77
  default: {
61
78
  target: null,
@@ -63,6 +80,7 @@ var DEFAULT_SETTINGS = {
63
80
  thinkingLevel: "off"
64
81
  },
65
82
  profiles: {},
83
+ rosters: {},
66
84
  agentBindings: {},
67
85
  maxRetries: 2,
68
86
  onPermission: "deny",
@@ -100,11 +118,18 @@ var DEFAULT_SETTINGS = {
100
118
  outputVerbosity: "default",
101
119
  tuiMode: "regular",
102
120
  fullscreenScrollbar: "auto",
103
- smoothStreaming: "off"
121
+ smoothStreaming: "off",
122
+ notify: false
104
123
  },
105
124
  skills: {
106
125
  trustProjectCompatRoots: false
107
126
  },
127
+ library: {
128
+ catalog: null,
129
+ remote: null,
130
+ confirmedRemote: null,
131
+ sync: false
132
+ },
108
133
  attribution: {
109
134
  gitCommits: true
110
135
  },
@@ -214,6 +239,17 @@ memory:
214
239
  maxTokens: 400
215
240
  timeoutMs: 180000
216
241
 
242
+ # Opt-in turn-end watchdog. When enabled, a turn that changed the tree is
243
+ # reviewed by one read-only verifier run briefed with the turn's coalesced diff
244
+ # and the task board's current scope; its blockers become one transcript notice
245
+ # and nothing else. Set target to route the run at a cheap local model. Set
246
+ # cadenceToolCalls to also fire every N tool calls inside a turn. Headless and
247
+ # ACP runs never fire it.
248
+ watchdog:
249
+ enabled: false
250
+ # target: local-lmstudio
251
+ # cadenceToolCalls: 20
252
+
217
253
  # Worker targets for dispatch. \`default\` preserves the legacy behavior when a
218
254
  # recipe or request does not specify an override. \`profiles\` are named
219
255
  # target/model/thinking choices. \`agentBindings\` pins native Clio agents,
@@ -224,6 +260,7 @@ workers:
224
260
  model: null
225
261
  thinkingLevel: off
226
262
  profiles: {}
263
+ rosters: {}
227
264
  # Example profile entry:
228
265
  # profiles:
229
266
  # fast-local:
@@ -314,6 +351,11 @@ terminal:
314
351
  # accessibility-safe local TTY; on requests pacing but still honors stdout
315
352
  # backpressure. CLIO_CODER_SMOOTH_STREAM overrides this for one process.
316
353
  smoothStreaming: off
354
+ # Content-free desktop notification (OSC 777, or OSC 9 on iTerm2, Windows
355
+ # Terminal, and ConEmu) when a turn ends, a detached batch settles, or an
356
+ # approval parks. Interactive TTY runs only; the body never carries prompt
357
+ # text, file paths, or model output.
358
+ notify: false
317
359
 
318
360
  # Skills are local prompt resources. Project-local compatibility roots such as
319
361
  # .agents/skills, .claude/skills, .codex/skills, .github/skills, and
@@ -322,6 +364,13 @@ terminal:
322
364
  skills:
323
365
  trustProjectCompatRoots: false
324
366
 
367
+ # The private resource catalog stays local unless sync is explicitly enabled.
368
+ library:
369
+ catalog: null
370
+ remote: null
371
+ confirmedRemote: null
372
+ sync: false
373
+
325
374
  # Evidence-aware Git commit provenance. The identity and trailer semantics are
326
375
  # compiled into Clio; this switch only enables or disables attribution.
327
376
  attribution:
@@ -437,6 +486,8 @@ guardrails:
437
486
 
438
487
  export {
439
488
  THINKING_LEVELS,
489
+ COUNCIL_MEMBER_LABEL_PATTERN,
490
+ THEME_NAMED_COLORS,
440
491
  DEFAULT_DELEGATION_CONNECT_TIMEOUT_MS,
441
492
  DEFAULT_DELEGATION_TURN_TIMEOUT_MS,
442
493
  DEFAULT_DELEGATION_PERMISSION_TIMEOUT_MS,
@@ -446,4 +497,4 @@ export {
446
497
  DEFAULT_SETTINGS,
447
498
  DEFAULT_SETTINGS_YAML
448
499
  };
449
- //# sourceMappingURL=chunk-4OC57DA6.js.map
500
+ //# sourceMappingURL=chunk-4DGYLA73.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-BRXQQJFP.js";
11
+ } from "./chunk-6M7VS3J3.js";
8
12
  import {
9
13
  sha256
10
- } from "./chunk-QQL5RT5M.js";
14
+ } from "./chunk-UUANF5CR.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";
67
+ } from "./chunk-33YXPOE3.js";
64
68
  import {
65
69
  INTEROP_AGENT_KINDS
66
70
  } from "./chunk-IHXBNWMM.js";
67
71
  import {
68
72
  ceilChars
69
- } from "./chunk-BPGS2WCQ.js";
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-TTNYS3EA.js";
83
+ } from "./chunk-OB5HIGJY.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-UZHIZC5S.js.map
4160
+ //# sourceMappingURL=chunk-4DWFMQDR.js.map