@iowarp/clio-coder 0.3.1 → 0.3.2

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 (595) hide show
  1. package/CHANGELOG.md +90 -2
  2. package/CONTRIBUTING.md +23 -23
  3. package/README.md +284 -613
  4. package/dist/{acp-FPR54DGL.js → acp-BIYHVZIM.js} +43 -53
  5. package/dist/{agents-OGPIHPJH.js → agents-YT6SSRIT.js} +43 -26
  6. package/dist/assets/codewiki.json +1 -1
  7. package/dist/{auth-IC3K6NIZ.js → auth-5TWEIYDN.js} +20 -12
  8. package/dist/{chunk-PV4JUBVJ.js → chunk-2EHAIA3X.js} +40 -21
  9. package/dist/{chunk-IS3ONKU3.js → chunk-2IR2NMPA.js} +6 -4
  10. package/dist/chunk-2SFS6XQE.js +122 -0
  11. package/dist/chunk-2VTFPG5O.js +48 -0
  12. package/dist/{chunk-MAR7Y6HW.js → chunk-3ZXDFGR5.js} +23 -16
  13. package/dist/chunk-4BJ5BYCE.js +61 -0
  14. package/dist/{chunk-474KN5II.js → chunk-4BPJXDWC.js} +111 -181
  15. package/dist/chunk-4KLWL3UC.js +18 -0
  16. package/dist/chunk-4VP4KH3K.js +962 -0
  17. package/dist/chunk-4ZG3XFUR.js +77 -0
  18. package/dist/chunk-5B2AEOW5.js +5407 -0
  19. package/dist/{chunk-K2ITRMHZ.js → chunk-5TSRNF4G.js} +6 -138
  20. package/dist/{chunk-OLBBMFRD.js → chunk-5UUP6MWO.js} +24 -62
  21. package/dist/chunk-65DEGPJ6.js +52 -0
  22. package/dist/chunk-6EJMN2Y3.js +17 -0
  23. package/dist/chunk-6EJV5X2W.js +16405 -0
  24. package/dist/chunk-6N5PTWMY.js +136 -0
  25. package/dist/chunk-6XLNIQDB.js +27 -0
  26. package/dist/{chunk-TEKV33Q5.js → chunk-77VKQEHF.js} +65 -33
  27. package/dist/chunk-7CR24IG7.js +242 -0
  28. package/dist/{chunk-M5T5VO65.js → chunk-7EYHLWU7.js} +837 -635
  29. package/dist/chunk-7MNJORFF.js +22 -0
  30. package/dist/{chunk-KY56HMHH.js → chunk-A3CYT5EX.js} +125 -31
  31. package/dist/chunk-AGYYIBLL.js +1069 -0
  32. package/dist/chunk-AO4RKG4M.js +277 -0
  33. package/dist/{chunk-GB6QRBXN.js → chunk-APJ265NV.js} +54 -1187
  34. package/dist/chunk-ARBGF5F7.js +174 -0
  35. package/dist/{chunk-673JJUWJ.js → chunk-BMEMKKIT.js} +2 -2
  36. package/dist/chunk-CBCAPZAA.js +229 -0
  37. package/dist/chunk-CMZWFGD2.js +352 -0
  38. package/dist/chunk-ECH6PKUQ.js +39 -0
  39. package/dist/chunk-ED4KHGC3.js +143 -0
  40. package/dist/chunk-EKMEHE4H.js +340 -0
  41. package/dist/{chunk-RPTR2H26.js → chunk-EPVUXGXG.js} +21 -15
  42. package/dist/chunk-FCSXB6T2.js +338 -0
  43. package/dist/chunk-FJ3H4MN5.js +48 -0
  44. package/dist/chunk-FQ4SKYE4.js +29 -0
  45. package/dist/chunk-G2DE3C7R.js +644 -0
  46. package/dist/chunk-G4BMMOKF.js +182 -0
  47. package/dist/{chunk-ZPY3JZ5E.js → chunk-GGXXDWE4.js} +183 -1233
  48. package/dist/chunk-HC4CLZ2Y.js +68 -0
  49. package/dist/{chunk-LU4TK2PR.js → chunk-HFSBBKSQ.js} +5 -56
  50. package/dist/{chunk-PIUMUEMV.js → chunk-HKIYEGME.js} +10 -6
  51. package/dist/chunk-I4HZDVNP.js +73 -0
  52. package/dist/{chunk-4QKXUHSR.js → chunk-IGLFWIYI.js} +70 -20
  53. package/dist/chunk-IKCO5N3L.js +162 -0
  54. package/dist/chunk-IR4CFBFN.js +56 -0
  55. package/dist/{chunk-PFEFKVGL.js → chunk-J5HN4RYU.js} +13 -11
  56. package/dist/{chunk-R5KLMSBV.js → chunk-J5Q24KAG.js} +2 -2
  57. package/dist/{chunk-K5XEMXTI.js → chunk-JVCV3ICN.js} +1 -1
  58. package/dist/chunk-KJ5LWLOE.js +1077 -0
  59. package/dist/chunk-LBMZMYH2.js +285 -0
  60. package/dist/{chunk-G34LV2PF.js → chunk-LBNRH5WM.js} +84 -170
  61. package/dist/{chunk-H6F6BYOH.js → chunk-LZSJBIVT.js} +7003 -7434
  62. package/dist/{chunk-HQQID6OA.js → chunk-M6SHUN7Q.js} +5 -5
  63. package/dist/chunk-MAW544W2.js +1882 -0
  64. package/dist/chunk-MBS4V7ZP.js +217 -0
  65. package/dist/{chunk-FST4FYJB.js → chunk-MFFY33HR.js} +99 -140
  66. package/dist/chunk-MNA4JGU4.js +255 -0
  67. package/dist/chunk-MQSRRFWA.js +3428 -0
  68. package/dist/{chunk-BSU2YIWB.js → chunk-MVVUPGPW.js} +131 -136
  69. package/dist/chunk-OAO4GE4M.js +619 -0
  70. package/dist/chunk-OHHN2SO4.js +5135 -0
  71. package/dist/chunk-OKGUZO2U.js +34 -0
  72. package/dist/{chunk-GAEBEQVI.js → chunk-OOJYHWRB.js} +32 -346
  73. package/dist/{chunk-Q5WJOSJ7.js → chunk-OQ33BKR3.js} +2 -1
  74. package/dist/chunk-OQE5J4C6.js +73 -0
  75. package/dist/{chunk-KKNLWXI6.js → chunk-ORBHGJC5.js} +8 -8
  76. package/dist/chunk-POHLU5DW.js +1186 -0
  77. package/dist/chunk-QKMUKYO7.js +4961 -0
  78. package/dist/{chunk-ASND7OZK.js → chunk-QTYWRVRA.js} +13 -13
  79. package/dist/{chunk-EYOKLTMF.js → chunk-SRF2PJNW.js} +17 -3
  80. package/dist/chunk-SST6Z5JA.js +80 -0
  81. package/dist/chunk-STBPMHSX.js +2456 -0
  82. package/dist/chunk-T6YILFSB.js +80 -0
  83. package/dist/chunk-TZTZS7QK.js +227 -0
  84. package/dist/chunk-UOV2BYIW.js +107 -0
  85. package/dist/{chunk-Q3RUPKEJ.js → chunk-V4RXGQ5Q.js} +58 -189
  86. package/dist/chunk-VAKQQHWR.js +434 -0
  87. package/dist/chunk-VG7TBQIY.js +128 -0
  88. package/dist/chunk-VJWL6YS5.js +244 -0
  89. package/dist/chunk-WEH5XRJQ.js +32 -0
  90. package/dist/chunk-WMSVI4G2.js +2095 -0
  91. package/dist/chunk-WVO7V2QY.js +797 -0
  92. package/dist/chunk-X4RCMKVQ.js +641 -0
  93. package/dist/chunk-X75S7HFS.js +374 -0
  94. package/dist/chunk-XN3L4EYL.js +46 -0
  95. package/dist/{chunk-RDLVBZEO.js → chunk-YCWGATWI.js} +6 -4
  96. package/dist/chunk-YHZX5GEU.js +193 -0
  97. package/dist/chunk-YXLYO42X.js +91 -0
  98. package/dist/{chunk-NMOX6HFD.js → chunk-ZDOOVTXZ.js} +29 -77
  99. package/dist/chunk-ZI647VB5.js +37 -0
  100. package/dist/{chunk-C4PTHK7P.js → chunk-ZWLZP4ZT.js} +5 -5
  101. package/dist/cli/index.js +62 -54
  102. package/dist/clio-4LY5K2AC.js +25 -0
  103. package/dist/code-nav-7AX6FYE6.js +600 -0
  104. package/dist/codewiki/build-worker.js +66 -0
  105. package/dist/compile-cache-CVJMMODC.js +18 -0
  106. package/dist/{components-DMAOEKFB.js → components-KELWS457.js} +11 -6
  107. package/dist/{config-IRUQ7SE4.js → config-GTLUW2PR.js} +92 -55
  108. package/dist/configure-R6A64DHX.js +42 -0
  109. package/dist/context-5VKGUVJJ.js +866 -0
  110. package/dist/{context-3KWFLHJG.js → context-JFZEJ7W5.js} +15 -13
  111. package/dist/{context-5RADCKTR.js → context-RW5HC47S.js} +71 -35
  112. package/dist/{context-clear-7TSNPAAI.js → context-clear-6ZHBAZZT.js} +54 -28
  113. package/dist/{context-index-W4RLWOQH.js → context-index-BZ4UYMTC.js} +30 -24
  114. package/dist/dispatch-runner-VKBRCWQC.js +1997 -0
  115. package/dist/{docs-5AWSPS37.js → docs-2C2LTVT2.js} +23 -10
  116. package/dist/{doctor-UC5NAJYQ.js → doctor-KI767GSN.js} +27 -17
  117. package/dist/{eval-U6TJHRLX.js → eval-XSSNATB4.js} +29 -16
  118. package/dist/{evidence-YEGUW4L3.js → evidence-UA6AWDQQ.js} +46 -26
  119. package/dist/{evolve-TXARCTPG.js → evolve-QNTFGV6Z.js} +45 -25
  120. package/dist/{extensions-OZFJ3A3G.js → extensions-QVDOHDGJ.js} +16 -7
  121. package/dist/{fleet-6G3DHNYE.js → fleet-Q7UOMUSG.js} +163 -54
  122. package/dist/{fleet-preflight-DSNT37JK.js → fleet-preflight-DDN536IT.js} +7 -4
  123. package/dist/{init-KZ5QTF6M.js → init-WBB65ZHQ.js} +69 -32
  124. package/dist/{memory-73ESV5YC.js → memory-MD3O64RI.js} +48 -27
  125. package/dist/{models-A4PVNWJK.js → models-BZU34YWD.js} +39 -25
  126. package/dist/monitor-MEQA5C3I.js +661 -0
  127. package/dist/{chunk-FCIH3BIZ.js → orchestrator-CGFKEP27.js} +11832 -8687
  128. package/dist/{paths-C4H6IV77.js → paths-UXLN5YYZ.js} +10 -5
  129. package/dist/{preload-6WVMHX3A.js → preload-P6DGH2PZ.js} +2 -2
  130. package/dist/{reset-BGW6OGMV.js → reset-L2FQEE3E.js} +16 -10
  131. package/dist/{run-YTPEYQOH.js → run-IV4Q6RLN.js} +101 -61
  132. package/dist/{share-YIFFV4NQ.js → share-S5BZQC5I.js} +15 -8
  133. package/dist/{skills-2V6RA3OQ.js → skills-LQEKRDTN.js} +34 -14
  134. package/dist/{skills-eval-S2TVJO4F.js → skills-eval-3DC4HEWS.js} +70 -34
  135. package/dist/steer-GGWFUJUD.js +77 -0
  136. package/dist/{targets-TYXLPB23.js → targets-C4SSGQOB.js} +43 -27
  137. package/dist/terminal-lease-IT5JW2NR.js +395 -0
  138. package/dist/{trace-GGOJ6Q6Z.js → trace-PNCASAXC.js} +41 -16
  139. package/dist/{chunk-N6F52NLF.js → tree-sitter-HGKH6LG4.js} +28 -2306
  140. package/dist/{uninstall-LLLT4F4W.js → uninstall-FZCQCDKC.js} +10 -5
  141. package/dist/{upgrade-33G2LMM5.js → upgrade-7TT7SQ3G.js} +45 -25
  142. package/dist/{usage-ZAFSXKKG.js → usage-GV4PKT3M.js} +62 -31
  143. package/dist/verify-G6V4D2G7.js +716 -0
  144. package/dist/web-fetch-2YHJ3KTG.js +638 -0
  145. package/dist/{wiki-generate-NUQCVOQ3.js → wiki-generate-DQF6Z66B.js} +74 -34
  146. package/dist/worker/entry.js +221 -36
  147. package/dist/workspace-G4ZWUIPR.js +22 -0
  148. package/docs/README.md +22 -17
  149. package/docs/acp.md +168 -16
  150. package/docs/alcf-provider.md +1 -1
  151. package/docs/architecture.md +136 -7
  152. package/docs/artifact-versions.md +1 -1
  153. package/docs/built-in-agents.md +1 -1
  154. package/docs/capacity-and-scheduling.md +1 -1
  155. package/docs/commands-and-modes.md +114 -71
  156. package/docs/config-knobs-audit.md +1 -3
  157. package/docs/configuration-and-targets.md +174 -46
  158. package/docs/context-engine.md +29 -6
  159. package/docs/development-pipeline.md +26 -1
  160. package/docs/dispatch-architecture-rationale.md +1 -1
  161. package/docs/documentation-coverage.md +2 -2
  162. package/docs/documentation-guide.md +1 -1
  163. package/docs/environment-variables.md +13 -5
  164. package/docs/eval-runner.md +1 -1
  165. package/docs/evals-internal.md +1 -1
  166. package/docs/evidence-and-memory.md +6 -2
  167. package/docs/evolution.md +2 -2
  168. package/docs/exit-codes-and-output.md +15 -9
  169. package/docs/extensions-and-sharing.md +9 -9
  170. package/docs/fleet-dispatch.md +7 -5
  171. package/docs/git-commit-provenance.md +120 -0
  172. package/docs/glossary.md +1 -1
  173. package/docs/installation-and-lifecycle.md +34 -27
  174. package/docs/middleware-and-components.md +1 -1
  175. package/docs/model-catalog.md +45 -14
  176. package/docs/observability.md +8 -5
  177. package/docs/performance-methodology.md +491 -0
  178. package/docs/pi-boundary.md +72 -0
  179. package/docs/proactive-memory.md +3 -3
  180. package/docs/prompt-envelope-and-tools.md +24 -3
  181. package/docs/provider-adapter-cookbook.md +57 -4
  182. package/docs/release-cut-checklist.md +129 -115
  183. package/docs/safety-model.md +9 -5
  184. package/docs/scientific-validation.md +3 -3
  185. package/docs/session-lifecycle.md +55 -12
  186. package/docs/skills-marketplace.md +12 -8
  187. package/docs/time-conventions.md +1 -1
  188. package/docs/tool-usage.md +3 -3
  189. package/docs/trace-store.md +1 -1
  190. package/docs/troubleshooting.md +10 -7
  191. package/docs/tui-design.md +47 -10
  192. package/docs/worker-dispatch-mechanics.md +1 -1
  193. package/package.json +19 -22
  194. package/skills/coding/ast-grep/SKILL.md +136 -0
  195. package/skills/coding/ast-grep/evals.md +56 -0
  196. package/skills/coding/ast-grep/references/rule_reference.md +297 -0
  197. package/skills/coding/coding-standards/SKILL.md +113 -0
  198. package/skills/coding/coding-standards/evals.md +34 -0
  199. package/skills/coding/prototype/SKILL.md +86 -0
  200. package/skills/coding/prototype/evals.md +42 -0
  201. package/skills/coding/prototype/references/LOGIC.md +67 -0
  202. package/skills/coding/prototype/references/UI.md +112 -0
  203. package/skills/coding/tdd/SKILL.md +101 -0
  204. package/skills/coding/tdd/evals.md +41 -0
  205. package/skills/coding/tdd/references/mocking.md +59 -0
  206. package/skills/coding/tdd/references/tests.md +77 -0
  207. package/skills/context/context-handoff/SKILL.md +126 -0
  208. package/skills/context/context-handoff/evals.md +57 -0
  209. package/skills/context/context-handoff/scripts/new-handoff.sh +26 -0
  210. package/skills/context/context-prime/SKILL.md +95 -0
  211. package/skills/context/context-prime/evals.md +54 -0
  212. package/skills/meta/clio-dev/SKILL.md +91 -0
  213. package/skills/meta/clio-dev/evals.md +45 -0
  214. package/skills/meta/clio-test/SKILL.md +130 -0
  215. package/skills/meta/clio-test/evals.md +43 -0
  216. package/skills/meta/clio-test/references/harness.md +97 -0
  217. package/skills/meta/clio-test/references/test-map.md +59 -0
  218. package/skills/meta/credentials/SKILL.md +125 -0
  219. package/skills/meta/credentials/evals.md +104 -0
  220. package/skills/meta/find-skills/SKILL.md +72 -0
  221. package/skills/meta/find-skills/evals.md +47 -0
  222. package/skills/meta/herdr/SKILL.md +127 -0
  223. package/skills/meta/herdr/evals.md +38 -0
  224. package/skills/meta/skill-craft/SKILL.md +102 -0
  225. package/skills/meta/skill-craft/evals.md +41 -0
  226. package/skills/planning/architecture/SKILL.md +129 -0
  227. package/skills/planning/architecture/evals.md +36 -0
  228. package/skills/planning/backlog/SKILL.md +90 -0
  229. package/skills/planning/backlog/evals.md +43 -0
  230. package/skills/planning/prd/SKILL.md +82 -0
  231. package/skills/planning/prd/evals.md +49 -0
  232. package/skills/planning/product-intent/SKILL.md +112 -0
  233. package/skills/planning/product-intent/evals.md +36 -0
  234. package/skills/planning/tech-spec/SKILL.md +115 -0
  235. package/skills/planning/tech-spec/evals.md +47 -0
  236. package/skills/registry.yaml +136 -0
  237. package/skills/research/arxiv-literature/SKILL.md +104 -0
  238. package/skills/research/arxiv-literature/evals.md +58 -0
  239. package/skills/research/experiment-protocol/SKILL.md +122 -0
  240. package/skills/research/experiment-protocol/evals.md +91 -0
  241. package/skills/research/scientific-debugging/SKILL.md +119 -0
  242. package/skills/research/scientific-debugging/evals.md +138 -0
  243. package/skills/research/scientific-modernization/SKILL.md +138 -0
  244. package/skills/research/scientific-modernization/evals.md +84 -0
  245. package/skills/workflow/design-council/SKILL.md +139 -0
  246. package/skills/workflow/design-council/evals.md +97 -0
  247. package/skills/workflow/grill-me/SKILL.md +186 -0
  248. package/skills/workflow/grill-me/evals.md +78 -0
  249. package/skills/workflow/workflow-distiller/SKILL.md +136 -0
  250. package/skills/workflow/workflow-distiller/evals.md +107 -0
  251. package/src/cli/acp.ts +31 -4
  252. package/src/cli/clio.ts +68 -6
  253. package/src/cli/config-inspect.ts +28 -22
  254. package/src/cli/configure.ts +47 -9
  255. package/src/cli/context-clear.ts +2 -2
  256. package/src/cli/context-index.ts +21 -23
  257. package/src/cli/context.ts +13 -8
  258. package/src/cli/default-target.ts +9 -17
  259. package/src/cli/docs.ts +11 -5
  260. package/src/cli/evidence.ts +4 -1
  261. package/src/cli/extensions.ts +10 -1
  262. package/src/cli/fleet.ts +47 -6
  263. package/src/cli/index.ts +55 -26
  264. package/src/cli/memory.ts +3 -1
  265. package/src/cli/models.ts +1 -1
  266. package/src/cli/modes/json-stream.ts +37 -1
  267. package/src/cli/modes/print.ts +24 -9
  268. package/src/cli/run.ts +2 -2
  269. package/src/cli/skills-eval.ts +23 -8
  270. package/src/cli/skills.ts +19 -4
  271. package/src/cli/targets.ts +4 -0
  272. package/src/cli/text-layout.ts +15 -5
  273. package/src/cli/trace.ts +62 -14
  274. package/src/cli/upgrade.ts +18 -2
  275. package/src/cli/usage.ts +10 -3
  276. package/src/cli/wiki-generate.ts +2 -1
  277. package/src/core/agent-environment.ts +7 -0
  278. package/src/core/bash-exec.ts +72 -1
  279. package/src/core/boot-trace.ts +9 -4
  280. package/src/core/bus-events.ts +20 -4
  281. package/src/core/commit-attribution.ts +157 -0
  282. package/src/core/compile-cache.ts +159 -0
  283. package/src/core/config.ts +131 -2
  284. package/src/core/defaults.ts +39 -5
  285. package/src/core/domain-loader.ts +12 -5
  286. package/src/core/git-commit-attribution.ts +362 -0
  287. package/src/core/incomplete-installation.ts +45 -0
  288. package/src/core/response-schema.ts +1 -1
  289. package/src/core/safe-exec.ts +13 -1
  290. package/src/core/settings-layers.ts +155 -21
  291. package/src/core/skill-activation.ts +1 -1
  292. package/src/core/startup-timer.ts +3 -3
  293. package/src/core/state-file-lock.ts +13 -1
  294. package/src/core/termination.ts +78 -5
  295. package/src/domains/config/classify.ts +15 -3
  296. package/src/domains/config/extension.ts +19 -13
  297. package/src/domains/config/index.ts +10 -0
  298. package/src/domains/config/keybindings.ts +42 -6
  299. package/src/domains/context/bootstrap-prompt.ts +1 -1
  300. package/src/domains/context/bootstrap.ts +111 -18
  301. package/src/domains/context/clear.ts +16 -11
  302. package/src/domains/context/clio-md.ts +111 -9
  303. package/src/domains/context/codewiki/artifact.ts +400 -0
  304. package/src/domains/context/codewiki/build-worker-protocol.ts +24 -0
  305. package/src/domains/context/codewiki/build-worker.ts +54 -0
  306. package/src/domains/context/codewiki/coordinator.ts +182 -0
  307. package/src/domains/context/codewiki/indexer.ts +59 -144
  308. package/src/domains/context/codewiki/paths.ts +67 -0
  309. package/src/domains/context/codewiki/schema.ts +80 -0
  310. package/src/domains/context/codewiki/tree-sitter.ts +1 -1
  311. package/src/domains/context/contract.ts +11 -5
  312. package/src/domains/context/extension.ts +94 -143
  313. package/src/domains/context/fingerprint.ts +3 -1
  314. package/src/domains/context/index.ts +12 -22
  315. package/src/domains/context/project-metadata.ts +19 -0
  316. package/src/domains/context/prompt-context.ts +9 -10
  317. package/src/domains/context/refresh.ts +29 -21
  318. package/src/domains/context/runtime.ts +17 -0
  319. package/src/domains/context/wiki/generate.ts +39 -34
  320. package/src/domains/context/wiki/plan.ts +1 -1
  321. package/src/domains/context/wiki/prompts.ts +21 -8
  322. package/src/domains/dispatch/code-step.ts +20 -1
  323. package/src/domains/dispatch/extension.ts +158 -21
  324. package/src/domains/dispatch/failure-classification.ts +6 -0
  325. package/src/domains/dispatch/fleet-commit-attribution.ts +56 -0
  326. package/src/domains/dispatch/orphan-recovery.ts +50 -8
  327. package/src/domains/dispatch/receipt-integrity.ts +5 -0
  328. package/src/domains/dispatch/state.ts +31 -6
  329. package/src/domains/dispatch/transport.ts +2 -1
  330. package/src/domains/dispatch/types.ts +14 -0
  331. package/src/domains/dispatch/worker-spawn.ts +21 -2
  332. package/src/domains/eval/metrics/context.ts +1 -1
  333. package/src/domains/eval/types.ts +0 -1
  334. package/src/domains/evidence/build.ts +41 -1
  335. package/src/domains/lifecycle/migrations/2026-08-18-lmstudio-runtime-id.ts +52 -0
  336. package/src/domains/lifecycle/migrations/index.ts +24 -4
  337. package/src/domains/middleware/hooks-io.ts +12 -0
  338. package/src/domains/middleware/skills-reminder.ts +30 -15
  339. package/src/domains/prompts/compiler.ts +142 -84
  340. package/src/domains/prompts/contract.ts +18 -2
  341. package/src/domains/prompts/extension.ts +39 -7
  342. package/src/domains/prompts/fragment-loader.ts +0 -1
  343. package/src/domains/prompts/fragments/identity/clio.md +2 -4
  344. package/src/domains/prompts/fragments/identity/docs-routing.md +10 -0
  345. package/src/domains/prompts/fragments/identity/self-awareness.md +1 -45
  346. package/src/domains/prompts/fragments/operating/contract.md +4 -50
  347. package/src/domains/prompts/fragments/operating/delegation.md +42 -0
  348. package/src/domains/prompts/fragments/operating/skills.md +26 -0
  349. package/src/domains/prompts/fragments/operating/worker.md +16 -0
  350. package/src/domains/prompts/fragments/safety/auto-edit.md +5 -5
  351. package/src/domains/prompts/fragments/safety/full-auto.md +3 -3
  352. package/src/domains/prompts/fragments/safety/read-only.md +4 -4
  353. package/src/domains/prompts/fragments/safety/suggest.md +2 -2
  354. package/src/domains/prompts/fragments/wiki/page.md +10 -0
  355. package/src/domains/prompts/fragments/wiki/plan.md +10 -0
  356. package/src/domains/prompts/preload.ts +3 -3
  357. package/src/domains/providers/auth/api-key.ts +1 -1
  358. package/src/domains/providers/auth/backend-file.ts +20 -10
  359. package/src/domains/providers/auth/backend-memory.ts +59 -4
  360. package/src/domains/providers/auth/boot-status.ts +65 -0
  361. package/src/domains/providers/auth/oauth.ts +2 -1
  362. package/src/domains/providers/auth/storage.ts +97 -38
  363. package/src/domains/providers/capabilities.ts +12 -4
  364. package/src/domains/providers/contract.ts +15 -4
  365. package/src/domains/providers/extension.ts +18 -6
  366. package/src/domains/providers/model-runtime-capabilities.ts +15 -4
  367. package/src/domains/providers/models/local-models/clio-local-coding-targets.yaml +118 -35
  368. package/src/domains/providers/plugins.ts +5 -3
  369. package/src/domains/providers/probe/fingerprint.ts +25 -5
  370. package/src/domains/providers/registry.ts +31 -10
  371. package/src/domains/providers/runtimes/boot-manifest.ts +55 -0
  372. package/src/domains/providers/runtimes/builtins.ts +2 -2
  373. package/src/domains/providers/runtimes/common/lmstudio-http.ts +423 -0
  374. package/src/domains/providers/runtimes/common/local-synth.ts +6 -7
  375. package/src/domains/providers/runtimes/local-native/lmstudio.ts +241 -0
  376. package/src/domains/providers/support.ts +6 -3
  377. package/src/domains/providers/types/local-model-quirks.ts +7 -9
  378. package/src/domains/providers/types/runtime-descriptor.ts +12 -1
  379. package/src/domains/providers/types/target-descriptor.ts +22 -0
  380. package/src/domains/resources/contract.ts +0 -1
  381. package/src/domains/resources/extension.ts +1 -3
  382. package/src/domains/resources/loader.ts +3 -4
  383. package/src/domains/resources/prompts/loader.ts +16 -2
  384. package/src/domains/resources/prompts/substitute.ts +1 -65
  385. package/src/domains/resources/skills/content-hash.ts +2 -0
  386. package/src/domains/resources/skills/install.ts +17 -0
  387. package/src/domains/resources/skills/loader.ts +17 -10
  388. package/src/domains/resources/skills/marketplace.ts +55 -9
  389. package/src/domains/safety/action-classifier.ts +4 -2
  390. package/src/domains/safety/audit.ts +8 -2
  391. package/src/domains/safety/extension.ts +1 -1
  392. package/src/domains/session/compaction/branch-summary.ts +3 -2
  393. package/src/domains/session/compaction/cut-point.ts +2 -1
  394. package/src/domains/session/compaction/tokens.ts +2 -1
  395. package/src/domains/session/context-ledger.ts +14 -0
  396. package/src/domains/session/contract.ts +15 -0
  397. package/src/domains/session/decision-board.ts +190 -0
  398. package/src/domains/session/entries.ts +66 -3
  399. package/src/domains/session/extension.ts +93 -12
  400. package/src/domains/session/retry.ts +10 -18
  401. package/src/domains/session/session-artifacts.ts +107 -0
  402. package/src/domains/session/task-board.ts +207 -13
  403. package/src/domains/session/tree/active-path.ts +44 -5
  404. package/src/domains/session/tree/fork.ts +26 -27
  405. package/src/domains/session/tree/preview.ts +2 -2
  406. package/src/domains/session/workspace/git-probe.ts +17 -11
  407. package/src/domains/user-tasks/store.ts +297 -0
  408. package/src/engine/acp/errors.ts +96 -0
  409. package/src/engine/acp/server.ts +1728 -146
  410. package/src/engine/acp/transport.ts +135 -14
  411. package/src/engine/acp/types.ts +26 -0
  412. package/src/engine/agent.ts +3 -3
  413. package/src/engine/ai.ts +32 -27
  414. package/src/engine/alcf-oauth.ts +26 -19
  415. package/src/engine/api-registry.ts +223 -0
  416. package/src/engine/apis/index.ts +3 -7
  417. package/src/engine/apis/llamacpp-residency.ts +49 -9
  418. package/src/engine/apis/lmstudio-residency.ts +5 -21
  419. package/src/engine/apis/lmstudio.ts +243 -0
  420. package/src/engine/apis/ollama-native.ts +24 -3
  421. package/src/engine/apis/openai-completions.ts +170 -91
  422. package/src/engine/apis/residency.ts +139 -3
  423. package/src/engine/apis/types.ts +16 -0
  424. package/src/engine/env-api-keys.ts +98 -0
  425. package/src/engine/gemma-channel-filter.ts +223 -0
  426. package/src/engine/instrumented-tui.ts +192 -0
  427. package/src/engine/messages.ts +14 -0
  428. package/src/engine/models.ts +42 -0
  429. package/src/engine/oauth.ts +16 -12
  430. package/src/engine/prompt-templates.ts +1 -0
  431. package/src/engine/provider-payload.ts +16 -59
  432. package/src/engine/strip-tokenizer-sentinels.ts +1 -1
  433. package/src/engine/truncate.ts +9 -0
  434. package/src/engine/tui.ts +17 -9
  435. package/src/engine/types.ts +3 -6
  436. package/src/engine/worker-runtime-capabilities.ts +5 -0
  437. package/src/engine/worker-runtime.ts +1 -1
  438. package/src/engine/worker-tools.ts +9 -4
  439. package/src/entry/boot-options.ts +50 -0
  440. package/src/entry/orchestrator.ts +288 -150
  441. package/src/interactive/application-controller.ts +89 -2
  442. package/src/interactive/chat-loop.ts +266 -41
  443. package/src/interactive/chat-panel.ts +173 -47
  444. package/src/interactive/chat-renderer.ts +262 -72
  445. package/src/interactive/clio-editor.ts +3 -8
  446. package/src/interactive/command-fallbacks.ts +2 -2
  447. package/src/interactive/context-overlay.ts +27 -1
  448. package/src/interactive/editor-submit.ts +228 -24
  449. package/src/interactive/export-html/ansi-to-html.ts +161 -0
  450. package/src/interactive/export-html/index.ts +51 -0
  451. package/src/interactive/export-html/template.ts +45 -0
  452. package/src/interactive/export-html/tool-renderer.ts +54 -0
  453. package/src/interactive/footer/dashboard.ts +4 -0
  454. package/src/interactive/footer/notifications.ts +1 -1
  455. package/src/interactive/footer/widgets.ts +20 -2
  456. package/src/interactive/footer-panel.ts +2 -2
  457. package/src/interactive/format-time.ts +14 -2
  458. package/src/interactive/interactive-application.ts +201 -17
  459. package/src/interactive/interactive-event-projection.ts +6 -1
  460. package/src/interactive/interactive-input-runtime.ts +50 -4
  461. package/src/interactive/interactive-presentation.ts +151 -19
  462. package/src/interactive/interactive-shell.ts +268 -14
  463. package/src/interactive/interactive-slash-runtime.ts +176 -114
  464. package/src/interactive/interactive-tickers.ts +38 -7
  465. package/src/interactive/keybinding-manager.ts +1 -1
  466. package/src/interactive/layout.ts +40 -3
  467. package/src/interactive/overlay-frame.ts +1 -1
  468. package/src/interactive/overlay-general-openers.ts +58 -1
  469. package/src/interactive/overlay-key-routing.ts +3 -0
  470. package/src/interactive/overlay-lifecycle.ts +13 -0
  471. package/src/interactive/overlay-permission-lifecycle.ts +2 -1
  472. package/src/interactive/overlay-session-lifecycle.ts +69 -12
  473. package/src/interactive/overlays/decisions.ts +300 -0
  474. package/src/interactive/overlays/help-reference.ts +15 -10
  475. package/src/interactive/overlays/model-selector.ts +34 -16
  476. package/src/interactive/overlays/session-selector.ts +18 -0
  477. package/src/interactive/overlays/settings.ts +105 -17
  478. package/src/interactive/overlays/skills-hub.ts +4 -4
  479. package/src/interactive/overlays/tree-selector.ts +41 -6
  480. package/src/interactive/render-trace.ts +499 -90
  481. package/src/interactive/renderers/compaction-summary.ts +2 -2
  482. package/src/interactive/renderers/diff.ts +115 -104
  483. package/src/interactive/renderers/mermaid.ts +53 -0
  484. package/src/interactive/renderers/tool-execution.ts +386 -133
  485. package/src/interactive/renderers/worker-entry.ts +20 -4
  486. package/src/interactive/session-switch-settlement.ts +10 -0
  487. package/src/interactive/slash-autocomplete.ts +6 -114
  488. package/src/interactive/slash-commands.ts +135 -47
  489. package/src/interactive/slash-spec.ts +9 -38
  490. package/src/interactive/status/controller.ts +5 -1
  491. package/src/interactive/stdout-backpressure.ts +99 -0
  492. package/src/interactive/stream-pacer.ts +530 -0
  493. package/src/interactive/stream-pacing-policy.ts +66 -0
  494. package/src/interactive/tasks-overlay.ts +368 -14
  495. package/src/interactive/terminal-lease.ts +485 -0
  496. package/src/interactive/theme/tokens.ts +1 -1
  497. package/src/interactive/turn-context.ts +4 -3
  498. package/src/interactive/turn-persistence.ts +30 -13
  499. package/src/interactive/turn-queues.ts +12 -0
  500. package/src/interactive/turn-recovery.ts +25 -8
  501. package/src/interactive/turn-runtime.ts +79 -12
  502. package/src/interactive/turn-state.ts +10 -0
  503. package/src/interactive/view/artifacts.ts +114 -4
  504. package/src/interactive/view/view-overlay.ts +3 -0
  505. package/src/interactive/welcome-dashboard.ts +17 -16
  506. package/src/interactive/worker-receipts.ts +52 -3
  507. package/src/interactive/worker-stream.ts +5 -1
  508. package/src/tools/agent-tools.ts +23 -3
  509. package/src/tools/artifact.ts +2 -2
  510. package/src/tools/ask-user.ts +23 -13
  511. package/src/tools/bash.ts +30 -2
  512. package/src/tools/bootstrap.ts +34 -431
  513. package/src/tools/builtin-tool-catalog.ts +265 -0
  514. package/src/tools/codewiki/code-nav-surface.ts +29 -0
  515. package/src/tools/codewiki/code-nav.ts +8 -22
  516. package/src/tools/codewiki/shared.ts +41 -38
  517. package/src/tools/context/docs-engine.ts +14 -3
  518. package/src/tools/context/index.ts +107 -28
  519. package/src/tools/context/surface.ts +19 -0
  520. package/src/tools/core-bootstrap.ts +168 -0
  521. package/src/tools/credential-present.ts +5 -5
  522. package/src/tools/dispatch-admission.ts +533 -0
  523. package/src/tools/dispatch-background.ts +54 -0
  524. package/src/tools/dispatch-event-text.ts +6 -0
  525. package/src/tools/dispatch-plan.ts +9 -4
  526. package/src/tools/dispatch-run-events.ts +238 -0
  527. package/src/tools/dispatch-runner.ts +2370 -0
  528. package/src/tools/dispatch-scout-admission.ts +295 -0
  529. package/src/tools/dispatch-types.ts +77 -0
  530. package/src/tools/dispatch.ts +67 -3161
  531. package/src/tools/find.ts +4 -2
  532. package/src/tools/grep.ts +2 -2
  533. package/src/tools/lazy-tool.ts +60 -0
  534. package/src/tools/ledger.ts +3 -3
  535. package/src/tools/monitor-surface.ts +36 -0
  536. package/src/tools/monitor.ts +2 -32
  537. package/src/tools/observers.ts +2 -2
  538. package/src/tools/registry.ts +39 -27
  539. package/src/tools/safe-exec.ts +2 -2
  540. package/src/tools/steer-surface.ts +17 -0
  541. package/src/tools/steer.ts +2 -13
  542. package/src/tools/tasks.ts +108 -11
  543. package/src/tools/truncate.ts +25 -184
  544. package/src/tools/verify/frontend.ts +3 -1
  545. package/src/tools/verify/index.ts +3 -38
  546. package/src/tools/verify/surface.ts +46 -0
  547. package/src/tools/web-fetch-surface.ts +23 -0
  548. package/src/tools/web-fetch.ts +2 -20
  549. package/src/tools/write.ts +7 -2
  550. package/src/worker/entry.ts +39 -2
  551. package/src/worker/spec-contract.ts +26 -5
  552. package/dist/chunk-7SS2CTV2.js +0 -61361
  553. package/dist/chunk-DKGKUHFA.js +0 -924
  554. package/dist/chunk-GEP36Y4X.js +0 -12796
  555. package/dist/chunk-XYWBQRDM.js +0 -137
  556. package/dist/clio-BZVGEUFJ.js +0 -58
  557. package/dist/configure-S7S6F6CL.js +0 -32
  558. package/docs/html/agents_blueprint.html +0 -936
  559. package/docs/html/alcf_blueprint.html +0 -324
  560. package/docs/html/architecture_blueprint.html +0 -850
  561. package/docs/html/commands_blueprint.html +0 -939
  562. package/docs/html/config_knobs_audit_blueprint.html +0 -178
  563. package/docs/html/configuration_blueprint.html +0 -1080
  564. package/docs/html/context_blueprint.html +0 -603
  565. package/docs/html/documentation_blueprint.html +0 -832
  566. package/docs/html/environment_blueprint.html +0 -404
  567. package/docs/html/eval_blueprint.html +0 -743
  568. package/docs/html/evals_internal_blueprint.html +0 -190
  569. package/docs/html/evolution_blueprint.html +0 -674
  570. package/docs/html/extensions_blueprint.html +0 -2065
  571. package/docs/html/fleet_dispatch_blueprint.html +0 -286
  572. package/docs/html/index.html +0 -919
  573. package/docs/html/lifecycle_blueprint.html +0 -723
  574. package/docs/html/memory_blueprint.html +0 -699
  575. package/docs/html/middleware_blueprint.html +0 -664
  576. package/docs/html/models_blueprint.html +0 -2366
  577. package/docs/html/observability_blueprint.html +0 -683
  578. package/docs/html/provider_adapter_blueprint.html +0 -245
  579. package/docs/html/safety_blueprint.html +0 -1386
  580. package/docs/html/shared.css +0 -571
  581. package/docs/html/shared.js +0 -143
  582. package/docs/html/skills_blueprint.html +0 -671
  583. package/docs/html/soak_blueprint.html +0 -182
  584. package/docs/html/tool_usage_blueprint.html +0 -350
  585. package/docs/html/tools_blueprint.html +0 -2249
  586. package/docs/html/trace_blueprint.html +0 -235
  587. package/docs/html/tui_design_blueprint.html +0 -374
  588. package/docs/html/validation_blueprint.html +0 -961
  589. package/docs/html/worker_dispatch_blueprint.html +0 -231
  590. package/src/core/release.ts +0 -2
  591. package/src/domains/providers/runtimes/common/lmstudio-logger.ts +0 -32
  592. package/src/domains/providers/runtimes/local-native/lmstudio-native.ts +0 -491
  593. package/src/engine/apis/lmstudio-native.ts +0 -1438
  594. package/src/engine/apis/thinking-replay.ts +0 -11
  595. package/src/tools/string-enum.ts +0 -15
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  id: operating.contract
3
3
  version: 1
4
- budgetTokens: 680
5
- description: Single operating posture contract
4
+ budgetTokens: 400
5
+ description: Constitutional operating posture shared by every Clio prompt
6
6
  ---
7
7
 
8
8
  # Operating Contract
@@ -13,61 +13,15 @@ user-facing posture toggle.
13
13
  Use the available tools when they materially help the current task.
14
14
  Prefer structured tools over bash when a structured tool exists. For
15
15
  narrow file or symbol work, inspect directly with structured observe
16
- tools. Explicit broad repository or codebase exploration is bounded
17
- agent automation: when dispatch is available, use `agent: "auto"` with
18
- a concrete reconnaissance handoff before repo-wide reads. Use
19
- dispatch for other bounded fleet work with a clear handoff. A sealed run
20
- receipt is the durable record for delegated work. Receipt integrity verifies
21
- that record; evidence verification separately describes validation. The
22
- worker's prose remains an advisory claim unless its evidence is verified or
23
- the parent spot-checks it.
24
- A successful reconnaissance receipt is an index. Spot-check a small,
25
- risk-weighted subset of its citations, normally no more than six parent
26
- read/search calls, then proceed or delegate a narrower verification task.
27
- Spot-check delegated claims before repeating them: re-read any cited
28
- file:line location, and re-run or inspect the named validation before
29
- repeating a "tests pass" claim.
30
- Parent spot-checking is not independent specialist confirmation. Use the
31
- dispatch briefing field for receipt-derived context/data; keep it separate
32
- from task instructions. Collect detached runs before final synthesis.
33
- The operator can also run workers themselves with /run and /delegate,
34
- outside your dispatch history, and hand a finished answer to you with
35
- --share or /share. Such an answer arrives as operator text headed
36
- `[worker result] <agent> · run <id> · <outcome> · shared by the operator`,
37
- and its run id names a sealed receipt you can read. Treat that note as
38
- operator steering to use, like any operator text; it is not a tool result
39
- to check against your own dispatch history, and never dispatching that
40
- run is not a reason to dismiss it. Its prose is an advisory claim under
41
- the same spot-check discipline as any receipt.
42
- Report receipt integrity, evidence verification, briefing provenance, and
43
- project-context provenance separately. Failed, cap-exhausted, zero-tool,
44
- and citation-free reconnaissance is non-evidence: treat it as unconfirmed
45
- leads, never as validation. When a final report is requested but file
16
+ tools. When a final report is requested but file
46
17
  modification is forbidden, put the report in the final assistant response;
47
18
  do not create a report artifact.
48
19
 
49
20
  Safety policy is authoritative for every tool call: allow decisions
50
- run normally; ask decisions pause that exact call for one operator
51
- confirmation, which grants only the parked action; cancellation
52
- cancels the parked call cleanly; hard blocks (destructive git,
21
+ run normally; hard blocks (destructive git,
53
22
  protected artifacts, project or path policy violations) remain hard
54
23
  blocks. When a call is blocked or cancelled, pivot to a safer
55
24
  approach or explain the blocker. Do not retry the same blocked
56
25
  action through another tool. After a loop guard blocks a repeated call,
57
26
  do not retry it or a syntactic variant: synthesize, delegate narrowly,
58
27
  use another source, or mark the claim unverified.
59
-
60
- # Skills
61
-
62
- Installed skills package proven workflows. Some tasks are
63
- skill-shaped: stress-testing a plan or idea, a benchmark or a change
64
- that must get faster or more accurate, a debug that has stalled or
65
- keeps flaking, turning an idea into a spec, slicing a plan into a
66
- sprint, or a run that needs an API key or token. On a skill-shaped
67
- task, first call context (scope="skills") and match the task against
68
- the catalog. Suggest the best match to the operator as /skill:<name>,
69
- or the sequence in order when skills compose, and let the operator
70
- decide before grinding through that workflow bare. Only an explicit
71
- operator request activates a skill; never load one on your own. If
72
- nothing fits or the task is routine, proceed normally and suggest
73
- nothing.
@@ -0,0 +1,42 @@
1
+ ---
2
+ id: operating.delegation
3
+ version: 1
4
+ budgetTokens: 620
5
+ description: Coordinator delegation and receipt discipline; rendered only when dispatch is on the surface
6
+ ---
7
+
8
+ # Delegation
9
+
10
+ You coordinate a fleet of Clio agents through the dispatch tool. You
11
+ plan, route, and synthesize work across turns.
12
+ Explicit broad repository or codebase exploration is bounded
13
+ agent automation: hand it to a worker with a concrete reconnaissance
14
+ handoff before repo-wide reads, pinning `scout` when the Fleet roster
15
+ lists it. Use dispatch for other bounded fleet work with a clear
16
+ handoff. A sealed run
17
+ receipt is the durable record for delegated work. Receipt integrity verifies
18
+ that record; evidence verification separately describes validation. The
19
+ worker's prose remains an advisory claim unless its evidence is verified or
20
+ the parent spot-checks it.
21
+ A successful reconnaissance receipt is an index. Spot-check a small,
22
+ risk-weighted subset of its citations, normally no more than six parent
23
+ read/search calls, then proceed or delegate a narrower verification task.
24
+ Spot-check delegated claims before repeating them: re-read any cited
25
+ file:line location, and re-run or inspect the named validation before
26
+ repeating a "tests pass" claim.
27
+ Parent spot-checking is not independent specialist confirmation. Use the
28
+ dispatch briefing field for receipt-derived context/data; keep it separate
29
+ from task instructions. Collect detached runs before final synthesis.
30
+ The operator can also run workers themselves with /run and /delegate,
31
+ outside your dispatch history, and hand a finished answer to you with
32
+ --share or /share. Such an answer arrives as operator text headed
33
+ `[worker result] <agent> · run <id> · <outcome> · shared by the operator`,
34
+ and its run id names a sealed receipt you can read. Treat that note as
35
+ operator steering to use, like any operator text; it is not a tool result
36
+ to check against your own dispatch history, and never dispatching that
37
+ run is not a reason to dismiss it. Its prose is an advisory claim under
38
+ the same spot-check discipline as any receipt.
39
+ Report receipt integrity, evidence verification, briefing provenance, and
40
+ project-context provenance separately. Failed, cap-exhausted, zero-tool,
41
+ and citation-free reconnaissance is non-evidence: treat it as unconfirmed
42
+ leads, never as validation.
@@ -0,0 +1,26 @@
1
+ ---
2
+ id: operating.skills
3
+ version: 1
4
+ budgetTokens: 260
5
+ description: Coordinator skill suggestion discipline; rendered only when context is on the surface
6
+ ---
7
+
8
+ # Skills
9
+
10
+ Skills package proven workflows. Some are installed; the rest sit in
11
+ a marketplace the operator installs from, and context (scope="skills")
12
+ lists both. Some tasks are skill-shaped: stress-testing a plan or
13
+ idea, a benchmark or a change that must get faster or more accurate, a
14
+ debug that has stalled or keeps flaking, turning an idea into a spec,
15
+ slicing a plan into a sprint, or a run that needs an API key or token.
16
+ On a skill-shaped task, first call context (scope="skills") and match
17
+ the task against the catalog. Suggest the best match to the operator
18
+ as /skill <name>, or the sequence in order when skills compose, and
19
+ let the operator decide before grinding through that workflow bare. A
20
+ marketplace match is suggested the same way; /skill <name> offers the
21
+ install. When the operator names a skill or asks how one works, call
22
+ context (scope="skills") before searching the repository: a skill is
23
+ not a file in the working tree. Only an explicit
24
+ operator request activates a skill; never load one on your own. If
25
+ nothing fits or the task is routine, proceed normally and suggest
26
+ nothing.
@@ -0,0 +1,16 @@
1
+ ---
2
+ id: operating.worker
3
+ version: 1
4
+ budgetTokens: 120
5
+ description: Assigned-task contract for a bounded fleet worker
6
+ ---
7
+
8
+ # Assigned Task Contract
9
+
10
+ The assigned task is authoritative. Role guidance is a persona, not a replacement task.
11
+
12
+ Do not invent a different task, source tree, file path, or implementation plan.
13
+
14
+ If the assigned task asks for an exact response, a direct answer, or no tool use, answer it directly without tool calls.
15
+
16
+ Use tools only when necessary for the assigned task and admitted by the worker tool contract.
@@ -6,9 +6,9 @@ description: Auto-edit autonomy level
6
6
 
7
7
  # Auto-edit autonomy
8
8
 
9
- At auto-edit autonomy, workspace edits and dispatches run without asking.
10
- Recognized commands also run: the builtin no-prompt set (tests, lint, build, git status/diff/log) and commands listed in `.clio-coder/safety.yaml`.
11
- Any other bash asks for one-shot operator approval instead of running silently. Prefer typed tools (`git`, `verify`) where they exist.
12
- Commands with pipes, `&&`, or redirects count as unrecognized and ask; `$(...)` and backticks always ask because the safety net cannot scan what they execute.
13
- system_modify actions ask. git_destructive actions are blocked by the safety net at every autonomy level.
9
+ At auto-edit autonomy, write actions and recognized commands run without asking.
10
+ Recognized commands are the builtin no-prompt set (tests, lint, build, git status/diff/log) and the commands listed in `.clio-coder/safety.yaml`; a `&&` chain whose every step is recognized runs too.
11
+ Any other command is approval-required instead of running silently: pipes, `;`, `||`, redirects, newlines, and a `&&` chain with an unrecognized step all count as unrecognized. Prefer a typed tool over raw shell where one is admitted.
12
+ `$(...)` and backticks are always approval-required because the safety net cannot scan what they execute.
13
+ system_modify actions are approval-required. git_destructive actions are blocked by the safety net at every autonomy level.
14
14
  Keep edits focused so each change is easy to review.
@@ -7,8 +7,8 @@ description: Full-auto autonomy level
7
7
  # Full-auto autonomy
8
8
 
9
9
  At full-auto autonomy, act on the task without asking permission to proceed.
10
- Writes, dispatches, and bash run without prompting, pipes and `&&` included; the safety net is the protection, not the prompt.
11
- `$(...)` and backticks still ask for one-shot confirmation because the safety net cannot scan what they execute; prefer typed tools (`git`, `verify`) or split the command.
12
- system_modify actions still ask: they reach outside the workspace where git cannot undo damage.
10
+ Write actions and commands run without prompting, unrecognized commands with pipes and `&&` included; the safety net is the protection, not the prompt.
11
+ `$(...)` and backticks remain approval-required because the safety net cannot scan what they execute; prefer a typed tool or split the command.
12
+ system_modify actions remain approval-required: they reach outside the workspace where git cannot undo damage.
13
13
  git_destructive actions are blocked by the safety net at every autonomy level.
14
14
  Confirm outcomes with focused verification instead of broad churn.
@@ -7,7 +7,7 @@ description: Read-only autonomy level
7
7
  # Read-only autonomy
8
8
 
9
9
  At read-only autonomy, inspect and answer; never mutate.
10
- Read-class tools (read, grep, find, ls, typed git inspection) run freely.
11
- Every write, command, and dispatch is auto-denied by the harness, and no approval prompt will appear.
12
- When a change is needed, propose it concretely: the exact file edits or commands the operator should apply.
13
- The safety net applies at every autonomy level.
10
+ Read-class actions run freely.
11
+ Every mutating call is denied by the harness, and no approval prompt appears.
12
+ When a change is needed, propose it concretely: the exact file edits or commands to apply.
13
+ git_destructive actions are blocked by the safety net at every autonomy level.
@@ -6,8 +6,8 @@ description: Suggest autonomy level
6
6
 
7
7
  # Suggest autonomy
8
8
 
9
- At suggest autonomy, the operator drives: every non-read action parks for one-shot approval before it runs.
10
- Read-class tools run freely. Writes, commands, and dispatches are real tool calls; the harness holds each one until the operator approves it.
9
+ At suggest autonomy, every non-read action is approval-required before it runs.
10
+ Read-class actions run freely. Every write, command, and other mutating action is a real call that is approval-required; none runs silently.
11
11
  Make each proposed action concrete and minimal so the approval decision is easy.
12
12
  Surface assumptions and risks alongside the call, not after it.
13
13
  git_destructive actions are blocked by the safety net at every autonomy level.
@@ -1,4 +1,14 @@
1
1
  ---
2
+ id: wiki.page
3
+ version: 1
4
+ description: >-
5
+ Wiki page-writing worker prompt, one dispatch per page. context/wiki/prompts.ts
6
+ substitutes {{pagePath}}, {{pageRelPath}}, and {{pageTitle}} per dispatch. The
7
+ body's leading and trailing standalone `---` lines predate this frontmatter and
8
+ are kept as ordinary body text, unchanged, so the substituted prompt this
9
+ fragment produces stays byte-identical to before it had an id.
10
+ ---
11
+ ---
2
12
  You are writing one page of a repository wiki. One page is your entire job this pass. Another
3
13
  writer owns every other page, so do not write, plan, or apologize for any of them.
4
14
 
@@ -1,4 +1,14 @@
1
1
  ---
2
+ id: wiki.plan
3
+ version: 1
4
+ description: >-
5
+ Wiki plan-revision worker prompt, one dispatch per generation. context/wiki/prompts.ts
6
+ substitutes {{planPath}} per dispatch. The body's leading and trailing standalone
7
+ `---` lines predate this frontmatter and are kept as ordinary body text, unchanged,
8
+ so the substituted prompt this fragment produces stays byte-identical to before it
9
+ had an id.
10
+ ---
11
+ ---
2
12
  You are planning a repository wiki. You are not writing it. Your entire job this pass is to
3
13
  improve one JSON file so that the writers who follow you each have a well-defined page.
4
14
 
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Project-context preload classification. One place owns the preload cliff:
3
- * the session compiler uses it to choose full-CLIO-CODER.md preload versus compact
3
+ * the session compiler uses it to choose a full effective-handbook preload versus compact
4
4
  * synopsis, and reporting surfaces (context-init output, `clio-coder config
5
5
  * inspect`, the context-window overlay) use it to make the cliff visible.
6
6
  */
@@ -29,7 +29,7 @@ export interface ProjectPreloadClass {
29
29
  }
30
30
 
31
31
  export interface ClassifyProjectPreloadInput {
32
- /** True when a parseable CLIO-CODER.md contributed to the rendered text. */
32
+ /** True when at least one selected project handbook contributed to the rendered text. */
33
33
  hasClioMd: boolean;
34
34
  /** The rendered project prompt context (ProjectPromptContext.text). */
35
35
  text: string;
@@ -42,7 +42,7 @@ function formatKb(chars: number): string {
42
42
  /**
43
43
  * Classify how the session compiler will treat this project context. Must
44
44
  * mirror the selection in prompts/extension.ts exactly: full preload only
45
- * when a parseable CLIO-CODER.md exists and the rendered text is within both the
45
+ * when a selected project handbook parses and the rendered text is within both the
46
46
  * char and line limits; empty text preloads nothing.
47
47
  */
48
48
  export function classifyProjectPreload(input: ClassifyProjectPreloadInput): ProjectPreloadClass {
@@ -1,5 +1,5 @@
1
1
  import { type ResolveConfigValueOptions, resolveDynamicConfigValue } from "../../../core/resolve-config-value.js";
2
- import { findEngineEnvKeys, getEngineEnvApiKey } from "../../../engine/oauth.js";
2
+ import { findEngineEnvKeys, getEngineEnvApiKey } from "../../../engine/env-api-keys.js";
3
3
 
4
4
  export interface EnvironmentApiKeyResolution {
5
5
  apiKey: string | undefined;
@@ -1,10 +1,10 @@
1
1
  import { chmodSync, closeSync, existsSync, mkdirSync, openSync, readFileSync } from "node:fs";
2
2
  import { readFile } from "node:fs/promises";
3
3
  import { dirname, join } from "node:path";
4
-
5
4
  import { safeResourceWrite } from "../../../core/safe-resource-write.js";
6
5
  import { withStateFileLock, withStateFileLockSync } from "../../../core/state-file-lock.js";
7
6
  import { clioConfigDir } from "../../../core/xdg.js";
7
+ import type { AuthOperationOptions } from "../../../engine/types.js";
8
8
 
9
9
  import type { AuthStorageBackend, LockResult } from "./storage.js";
10
10
 
@@ -54,16 +54,26 @@ export class FileAuthStorageBackend implements AuthStorageBackend {
54
54
  });
55
55
  }
56
56
 
57
- async withLockAsync<T>(fn: (current: string | undefined) => Promise<LockResult<T>>): Promise<T> {
57
+ async withLockAsync<T>(
58
+ fn: (current: string | undefined) => Promise<LockResult<T>>,
59
+ options?: AuthOperationOptions,
60
+ ): Promise<T> {
61
+ options?.signal?.throwIfAborted();
58
62
  this.ensureParentDir();
59
63
  this.ensureFileExists();
60
- return withStateFileLock(this.path, async () => {
61
- const current = existsSync(this.path) ? await readFile(this.path, "utf8") : undefined;
62
- const { result, next } = await fn(current);
63
- if (next !== undefined) {
64
- atomicWriteSecret(this.path, next);
65
- }
66
- return result;
67
- });
64
+ return withStateFileLock(
65
+ this.path,
66
+ async () => {
67
+ options?.signal?.throwIfAborted();
68
+ const current = existsSync(this.path) ? await readFile(this.path, "utf8") : undefined;
69
+ const { result, next } = await fn(current);
70
+ options?.signal?.throwIfAborted();
71
+ if (next !== undefined) {
72
+ atomicWriteSecret(this.path, next);
73
+ }
74
+ return result;
75
+ },
76
+ options?.signal ? { signal: options.signal } : {},
77
+ );
68
78
  }
69
79
  }
@@ -1,7 +1,51 @@
1
+ import type { AuthOperationOptions } from "../../../engine/types.js";
1
2
  import type { AuthStorageBackend, LockResult } from "./storage.js";
2
3
 
4
+ function abortReason(signal: AbortSignal): unknown {
5
+ if (signal.reason !== undefined) return signal.reason;
6
+ const error = new Error("The operation was aborted");
7
+ error.name = "AbortError";
8
+ return error;
9
+ }
10
+
11
+ /** Stop waiting immediately while the queued operation observes its eventual settlement. */
12
+ function raceWithAbortSignal<T>(operation: Promise<T>, signal?: AbortSignal): Promise<T> {
13
+ if (!signal) return operation;
14
+ if (signal.aborted) {
15
+ void operation.catch(() => {});
16
+ return Promise.reject(abortReason(signal));
17
+ }
18
+ return new Promise<T>((resolve, reject) => {
19
+ let settled = false;
20
+ const cleanup = (): void => signal.removeEventListener("abort", onAbort);
21
+ const onAbort = (): void => {
22
+ if (settled) return;
23
+ settled = true;
24
+ cleanup();
25
+ reject(abortReason(signal));
26
+ };
27
+ signal.addEventListener("abort", onAbort, { once: true });
28
+ void operation.then(
29
+ (value) => {
30
+ if (settled) return;
31
+ settled = true;
32
+ cleanup();
33
+ resolve(value);
34
+ },
35
+ (error: unknown) => {
36
+ if (settled) return;
37
+ settled = true;
38
+ cleanup();
39
+ reject(error);
40
+ },
41
+ );
42
+ if (signal.aborted) onAbort();
43
+ });
44
+ }
45
+
3
46
  export class InMemoryAuthStorageBackend implements AuthStorageBackend {
4
47
  private value: string | undefined;
48
+ private asyncChain: Promise<unknown> = Promise.resolve();
5
49
 
6
50
  withLock<T>(fn: (current: string | undefined) => LockResult<T>): T {
7
51
  const { result, next } = fn(this.value);
@@ -9,9 +53,20 @@ export class InMemoryAuthStorageBackend implements AuthStorageBackend {
9
53
  return result;
10
54
  }
11
55
 
12
- async withLockAsync<T>(fn: (current: string | undefined) => Promise<LockResult<T>>): Promise<T> {
13
- const { result, next } = await fn(this.value);
14
- if (next !== undefined) this.value = next;
15
- return result;
56
+ withLockAsync<T>(
57
+ fn: (current: string | undefined) => Promise<LockResult<T>>,
58
+ options?: AuthOperationOptions,
59
+ ): Promise<T> {
60
+ const previous = this.asyncChain;
61
+ const operation = (async (): Promise<T> => {
62
+ await previous.catch(() => {});
63
+ options?.signal?.throwIfAborted();
64
+ const { result, next } = await fn(this.value);
65
+ options?.signal?.throwIfAborted();
66
+ if (next !== undefined) this.value = next;
67
+ return result;
68
+ })();
69
+ this.asyncChain = operation.catch(() => {});
70
+ return raceWithAbortSignal(operation, options?.signal);
16
71
  }
17
72
  }
@@ -0,0 +1,65 @@
1
+ /** Read-only credential presence check for the pre-TUI target preflight. */
2
+
3
+ import { existsSync, readFileSync } from "node:fs";
4
+ import { join } from "node:path";
5
+ import { parse as parseYaml } from "yaml";
6
+ import { clioConfigDir } from "../../../core/xdg.js";
7
+ import { findEngineEnvKeys, getEngineEnvApiKey } from "../../../engine/env-api-keys.js";
8
+ import type { TargetDescriptor } from "../types/target-descriptor.js";
9
+ import type { RuntimeAuthMetadata } from "./storage.js";
10
+
11
+ function record(value: unknown): Record<string, unknown> | null {
12
+ return value !== null && typeof value === "object" && !Array.isArray(value)
13
+ ? (value as Record<string, unknown>)
14
+ : null;
15
+ }
16
+
17
+ function storedCredentialPresent(providerId: string): boolean {
18
+ const path = join(clioConfigDir(), "credentials.yaml");
19
+ if (!existsSync(path)) return false;
20
+ try {
21
+ const root = record(parseYaml(readFileSync(path, "utf8")));
22
+ const entry = record(record(root?.entries)?.[providerId]);
23
+ if (!entry) return false;
24
+ if (entry.type === "api_key") return typeof entry.key === "string" && entry.key.trim().length > 0;
25
+ if (entry.type === "oauth") {
26
+ return typeof entry.access === "string" && typeof entry.refresh === "string" && typeof entry.expires === "number";
27
+ }
28
+ // Version 1 (and the historical version-less form).
29
+ return typeof entry.key === "string" && entry.key.trim().length > 0;
30
+ } catch {
31
+ return false;
32
+ }
33
+ }
34
+
35
+ function environmentCredentialPresent(providerId: string, explicitEnvVar?: string): boolean {
36
+ if (explicitEnvVar && process.env[explicitEnvVar]?.trim()) return true;
37
+ for (const name of findEngineEnvKeys(providerId) ?? []) {
38
+ if (process.env[name]?.trim()) return true;
39
+ }
40
+ return Boolean(getEngineEnvApiKey(providerId)?.trim());
41
+ }
42
+
43
+ export interface BootAuthStatus {
44
+ providerId: string;
45
+ required: boolean;
46
+ available: boolean;
47
+ }
48
+
49
+ export function bootAuthStatus(target: TargetDescriptor, runtime: RuntimeAuthMetadata): BootAuthStatus {
50
+ const required =
51
+ runtime.auth === "oauth" ||
52
+ (runtime.auth === "api-key" &&
53
+ (Boolean(target.auth?.apiKeyEnvVar || target.auth?.apiKeyRef || target.auth?.oauthProfile) ||
54
+ runtime.tier === "cloud" ||
55
+ Boolean(runtime.credentialsEnvVar)));
56
+ const providerId =
57
+ target.auth?.oauthProfile?.trim() || target.auth?.apiKeyRef?.trim() || runtime.oauthProviderId || runtime.id;
58
+ if (!required) return { providerId, required: false, available: true };
59
+ const explicitEnvVar = target.auth?.apiKeyEnvVar ?? runtime.credentialsEnvVar;
60
+ return {
61
+ providerId,
62
+ required: true,
63
+ available: storedCredentialPresent(providerId) || environmentCredentialPresent(providerId, explicitEnvVar),
64
+ };
65
+ }
@@ -27,8 +27,9 @@ export async function loginWithOAuthProvider(
27
27
  export async function refreshOAuthCredentials(
28
28
  providerId: string,
29
29
  credentials: OAuthCredentials,
30
+ signal: AbortSignal,
30
31
  ): Promise<OAuthCredentials> {
31
- return refreshEngineOAuthCredentials(providerId, credentials);
32
+ return refreshEngineOAuthCredentials(providerId, credentials, signal);
32
33
  }
33
34
 
34
35
  export function getOAuthApiKey(providerId: string, credentials: OAuthCredentials): Promise<string> {