@iowarp/clio-coder 0.4.1 → 0.4.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 (437) hide show
  1. package/CHANGELOG.md +92 -0
  2. package/CONTRIBUTING.md +59 -36
  3. package/README.md +404 -472
  4. package/SECURITY.md +2 -1
  5. package/dist/{acp-ZILU3AUO.js → acp-TMDQZDIG.js} +7 -7
  6. package/dist/{agents-HYWGBGQR.js → agents-5N5NG3XG.js} +28 -28
  7. package/dist/assets/codewiki.json +1 -1
  8. package/dist/{auth-N3QT7CBO.js → auth-Z5CCBXKQ.js} +8 -9
  9. package/dist/{builtins-UJLMOVOV.js → builtins-K6TNDT24.js} +4 -4
  10. package/dist/{chunk-GVQJ5CCZ.js → chunk-2HFQNRV3.js} +7 -7
  11. package/dist/{chunk-QMXC4JB7.js → chunk-2NHR3NAY.js} +163 -1401
  12. package/dist/chunk-2X4RYJTJ.js +39 -0
  13. package/dist/{chunk-Y45G3AXC.js → chunk-2Z2IKEXI.js} +6 -10
  14. package/dist/{chunk-EIMVLWB3.js → chunk-34BHNEE3.js} +7 -3
  15. package/dist/{chunk-GIZNH63R.js → chunk-35MSIRKH.js} +9 -4
  16. package/dist/chunk-3EBYEESD.js +314 -0
  17. package/dist/{chunk-CTJ4RNAA.js → chunk-3F7VUY77.js} +2 -2
  18. package/dist/{chunk-AP73CFDC.js → chunk-3KIPBMUA.js} +2 -2
  19. package/dist/{chunk-J5LZHVIT.js → chunk-3M6DQK6S.js} +113 -35
  20. package/dist/{chunk-VEGN6WIQ.js → chunk-462T4EGZ.js} +2 -2
  21. package/dist/{chunk-AFKWHWXF.js → chunk-4JDLP6ZS.js} +33 -16
  22. package/dist/{chunk-6FN3E6KX.js → chunk-4O6MANBS.js} +2 -2
  23. package/dist/{chunk-AKB4GYDL.js → chunk-54ODD65L.js} +5 -5
  24. package/dist/{chunk-BBTJOK6Y.js → chunk-5KW52TEP.js} +3 -3
  25. package/dist/{chunk-6CCS4G3W.js → chunk-5PFYMY2V.js} +2 -2
  26. package/dist/chunk-77QIVUZB.js +1334 -0
  27. package/dist/{chunk-7OBGU7UB.js → chunk-7BHIY2MW.js} +7 -13
  28. package/dist/{chunk-3QSOM6PA.js → chunk-AZ4WMN4W.js} +2 -2
  29. package/dist/{chunk-6NJQITNH.js → chunk-B74PXLU7.js} +6 -3
  30. package/dist/{chunk-R23Z6K6I.js → chunk-B7HM5Z7T.js} +15 -15
  31. package/dist/{chunk-R32CLGZ6.js → chunk-BO7Y52RY.js} +81 -20
  32. package/dist/{chunk-UEDMSP56.js → chunk-BYMNWQ7O.js} +123 -148
  33. package/dist/{chunk-ZJLUDYFY.js → chunk-CRFOIAX3.js} +4 -4
  34. package/dist/{chunk-2NM363SV.js → chunk-CYZW7JHJ.js} +7 -7
  35. package/dist/{chunk-6HMJX2VU.js → chunk-DYHAXKHD.js} +38 -10
  36. package/dist/{chunk-THYWACCR.js → chunk-DZAW46HP.js} +3 -3
  37. package/dist/{chunk-FYUN5KZ3.js → chunk-DZEK6CJN.js} +17 -17
  38. package/dist/{chunk-3I5NY75V.js → chunk-E7GT7O5N.js} +5 -5
  39. package/dist/{chunk-VKFQTNDV.js → chunk-F2I26BDK.js} +4 -4
  40. package/dist/{chunk-HLW2MRKE.js → chunk-F4EKGO4N.js} +3 -1
  41. package/dist/{chunk-IXJT6DCX.js → chunk-FVDGR2ZL.js} +3 -3
  42. package/dist/{chunk-TZSKNMZG.js → chunk-GTUD2WMY.js} +2 -1
  43. package/dist/{chunk-7EPLI7VL.js → chunk-HIICAHCJ.js} +2 -2
  44. package/dist/{chunk-E67WX76H.js → chunk-HKMD33FO.js} +29 -80
  45. package/dist/chunk-HLAFFSEK.js +360 -0
  46. package/dist/{chunk-UAPGZHYC.js → chunk-I64IFBLB.js} +9 -2
  47. package/dist/{chunk-XKA2ICR3.js → chunk-I66ZTYNP.js} +440 -175
  48. package/dist/{chunk-7PWAODYW.js → chunk-I7XBWTYH.js} +2 -2
  49. package/dist/{chunk-PVAMAVBB.js → chunk-IDNA72AH.js} +102 -2
  50. package/dist/{chunk-GCSMB2KY.js → chunk-IKOZFYBN.js} +1 -1
  51. package/dist/{chunk-2VG7KLYV.js → chunk-IKSLQ4XV.js} +5460 -3241
  52. package/dist/{chunk-QKIFBZKT.js → chunk-IMXMHHMQ.js} +166 -25
  53. package/dist/{chunk-74YWRRU5.js → chunk-JBCS7CRR.js} +2 -2
  54. package/dist/{chunk-BDPT6GTK.js → chunk-JWJGP5DQ.js} +2 -2
  55. package/dist/{chunk-K6BF4U2H.js → chunk-KKOJXO6R.js} +62 -14
  56. package/dist/chunk-KPXDY6QF.js +47 -0
  57. package/dist/{chunk-ABLSQ6JX.js → chunk-LJID3DYZ.js} +7 -1
  58. package/dist/{chunk-VKRH2TCS.js → chunk-M2DAX4F6.js} +2 -2
  59. package/dist/{chunk-6I5ILFOF.js → chunk-M2WXEHER.js} +2 -2
  60. package/dist/{chunk-YPI3QQCF.js → chunk-MCEPRMZW.js} +2 -4
  61. package/dist/{chunk-N5UK64DP.js → chunk-MCMZMDAC.js} +2 -2
  62. package/dist/{chunk-Y4CAGMM6.js → chunk-MNJGS2IN.js} +5 -6
  63. package/dist/{chunk-TVHHYFHE.js → chunk-NEDJ26B5.js} +2 -2
  64. package/dist/{chunk-U2WB7TZS.js → chunk-NMJXSHBJ.js} +97 -85
  65. package/dist/{chunk-HUAS7ITX.js → chunk-O3YUNJZ2.js} +13 -21
  66. package/dist/{chunk-MA3H6DM5.js → chunk-P75RZCJW.js} +25 -3
  67. package/dist/{chunk-IG7BCQBA.js → chunk-PGF63K6I.js} +2 -2
  68. package/dist/chunk-PJX3WQUQ.js +42 -0
  69. package/dist/{chunk-6DWBAZ5U.js → chunk-Q4XWMHX6.js} +4 -6
  70. package/dist/{chunk-OJTRZGR3.js → chunk-QQLGQY2A.js} +8 -8
  71. package/dist/{chunk-J4HBWF6Y.js → chunk-RLYRBIYQ.js} +115 -20
  72. package/dist/{chunk-NLFAQR7Z.js → chunk-S66XZJOF.js} +3 -23
  73. package/dist/{chunk-C537JADH.js → chunk-SSEYRH53.js} +6 -7
  74. package/dist/chunk-SZAA6XDG.js +30 -0
  75. package/dist/{chunk-MOPSG2X7.js → chunk-TPEQIQIE.js} +6 -6
  76. package/dist/{chunk-JA5QWE4Z.js → chunk-UBRFI4HS.js} +1879 -1650
  77. package/dist/{chunk-BTGG6BG2.js → chunk-UH347SHR.js} +154 -15
  78. package/dist/{chunk-5YHDIDBP.js → chunk-UH632ZYL.js} +2 -2
  79. package/dist/{chunk-BWW4HLO4.js → chunk-UXCU4E3T.js} +8 -6
  80. package/dist/{chunk-6VC4OV3Z.js → chunk-VIA6RFQZ.js} +3 -11
  81. package/dist/{chunk-ZAZB4JMW.js → chunk-VKPAQYEB.js} +27 -8
  82. package/dist/{chunk-UXN6JT4W.js → chunk-W4YEMFBX.js} +2 -2
  83. package/dist/{chunk-TD3PGPQA.js → chunk-W6NIE6OW.js} +2 -2
  84. package/dist/{chunk-TVH4ONAM.js → chunk-X7IARSHT.js} +3 -3
  85. package/dist/{chunk-PJJ6MY27.js → chunk-XE3PCIXH.js} +3 -3
  86. package/dist/{chunk-FEFIFZTL.js → chunk-XGDPUNND.js} +2 -2
  87. package/dist/{chunk-SCYB3HA4.js → chunk-XOXV5GKE.js} +51 -16
  88. package/dist/{chunk-QTFGO774.js → chunk-XQRY4DTA.js} +24 -11
  89. package/dist/{chunk-BJGUKIG4.js → chunk-YJISEZKC.js} +2 -2
  90. package/dist/{chunk-GPPB3JBE.js → chunk-ZGNYYXQ6.js} +2 -2
  91. package/dist/{chunk-SINK3QR6.js → chunk-ZNT2M6TG.js} +7 -7
  92. package/dist/{chunk-7RY5VZPH.js → chunk-ZW4HH5JJ.js} +6 -6
  93. package/dist/cli/index.js +33 -32
  94. package/dist/{clio-IT3G3VQH.js → clio-7VB377CC.js} +7 -7
  95. package/dist/{code-nav-RK6S7F6E.js → code-nav-YVLCYA7V.js} +85 -17
  96. package/dist/{config-3QZRWZJF.js → config-4HVOS65E.js} +88 -43
  97. package/dist/{configure-FL7Y3KJF.js → configure-PIWO7B24.js} +10 -10
  98. package/dist/{context-5HE7ODYK.js → context-IYEHL3WQ.js} +33 -31
  99. package/dist/{context-XNHL75JV.js → context-KQYIWPWT.js} +47 -34
  100. package/dist/{context-KYQFRVDC.js → context-N6ZE3LGJ.js} +11 -11
  101. package/dist/{context-clear-N545L53A.js → context-clear-G4OGZJDS.js} +33 -31
  102. package/dist/{context-working-set-QHKXSV2F.js → context-working-set-BWLF6LJP.js} +7 -7
  103. package/dist/{dispatch-runner-RGIE5PCT.js → dispatch-runner-2QQAITS3.js} +38 -38
  104. package/dist/{docs-5NAF6AU7.js → docs-PD3EXDKU.js} +21 -20
  105. package/dist/{doctor-ZGPEGHIP.js → doctor-LHBD36VU.js} +23 -22
  106. package/dist/{eval-GXLL44RD.js → eval-C45FYRJ6.js} +21 -20
  107. package/dist/{eval-inventory-HBWSWQOK.js → eval-inventory-6DEJPLBF.js} +2 -2
  108. package/dist/{evidence-HWLBRH3Q.js → evidence-6SHONYAF.js} +30 -28
  109. package/dist/{evolve-FTZBMNVW.js → evolve-KRKMV72X.js} +30 -28
  110. package/dist/{extensions-VHRBEID7.js → extensions-KPZ2UHBB.js} +5 -3
  111. package/dist/{fleet-CKZHJWZJ.js → fleet-IVTCKDHT.js} +62 -61
  112. package/dist/{fleet-commands-EXDXBMV6.js → fleet-commands-EDWL3IT7.js} +5 -5
  113. package/dist/{fleet-decisions-OTHB6KRL.js → fleet-decisions-YP3YEFGK.js} +4 -4
  114. package/dist/{fleet-graph-YTEZUCUT.js → fleet-graph-ZFWKHY2M.js} +16 -14
  115. package/dist/{fleet-inspect-SS6YMDCK.js → fleet-inspect-FVUNCBML.js} +31 -29
  116. package/dist/{fleet-preflight-PBY4VYOM.js → fleet-preflight-UN5XED4R.js} +2 -2
  117. package/dist/{fleet-validate-KMEM5L3S.js → fleet-validate-XOWC4HSX.js} +17 -15
  118. package/dist/{fleet-verify-QD5M7E7Q.js → fleet-verify-UN3SODEL.js} +30 -28
  119. package/dist/{fleet-view-WAMJYNDT.js → fleet-view-TWHJKCN6.js} +31 -29
  120. package/dist/{init-5XQRBOFV.js → init-T2QORQ3Y.js} +50 -49
  121. package/dist/{interop-34TVO25M.js → interop-IN5I2A66.js} +5 -5
  122. package/dist/{library-3QY6KF57.js → library-LSCATDLZ.js} +15 -13
  123. package/dist/{memory-L4UTIIIW.js → memory-HYOKAGGJ.js} +31 -29
  124. package/dist/{models-ZVX3QOWE.js → models-2GPMFYCM.js} +22 -21
  125. package/dist/{monitor-CEKVSYTS.js → monitor-E4ASVUJH.js} +34 -32
  126. package/dist/{orchestrator-77BAP6BC.js → orchestrator-DDMPR3PY.js} +984 -583
  127. package/dist/{panes-7STHOAUJ.js → panes-E3RUXOW5.js} +4 -4
  128. package/dist/{panes-SHAUIRXY.js → panes-IXKLOKA2.js} +23 -8
  129. package/dist/{reset-EOLM7GVE.js → reset-OAQP3W4O.js} +4 -4
  130. package/dist/{resources-74GKTLSF.js → resources-OTRSN34L.js} +15 -13
  131. package/dist/{run-HBAUJNNZ.js → run-5DEYH5QK.js} +60 -59
  132. package/dist/{share-G3APVLVP.js → share-IHWTLO3M.js} +19 -15
  133. package/dist/{skills-35HHUKCR.js → skills-IYMXMKW4.js} +17 -15
  134. package/dist/{skills-eval-QN4HSHDC.js → skills-eval-DROHSJAR.js} +36 -36
  135. package/dist/{skills-inventory-J357J34F.js → skills-inventory-D7X4L4ZX.js} +15 -13
  136. package/dist/{slash-commands-JZZCQA32.js → slash-commands-QBM7UZ3B.js} +21 -18
  137. package/dist/{steer-XAVHJM22.js → steer-Z5DO23FJ.js} +2 -2
  138. package/dist/{targets-DSM6CY3M.js → targets-P2FUC4IL.js} +25 -28
  139. package/dist/{terminal-lease-JOPFUVEM.js → terminal-lease-YREJ3JX2.js} +5 -5
  140. package/dist/{tools-MKNWVPBH.js → tools-5B7RO6MV.js} +4 -4
  141. package/dist/{trace-ECQ7TIYZ.js → trace-YMGMUM6A.js} +55 -7
  142. package/dist/{upgrade-H7TOM7YL.js → upgrade-PXK3S2YM.js} +11 -9
  143. package/dist/{usage-X52N3IDJ.js → usage-ME5MPXGX.js} +36 -34
  144. package/dist/{verifiers-EJTVVSMA.js → verifiers-BVZ7IWOO.js} +5 -5
  145. package/dist/{verify-YJL6XET2.js → verify-5K7ZKQFC.js} +4 -4
  146. package/dist/{web-fetch-MPIFL3LL.js → web-fetch-MPARV2K7.js} +2 -2
  147. package/dist/{wiki-generate-4NDZTQ4B.js → wiki-generate-F5W5QTYY.js} +48 -47
  148. package/dist/{with-panes-OBOBFIIR.js → with-panes-BYOJCLAM.js} +51 -255
  149. package/dist/worker/entry.js +45 -30
  150. package/docs/README.md +176 -81
  151. package/docs/{acp.md → architecture/acp.md} +36 -20
  152. package/docs/{alcf-provider.md → architecture/alcf-provider.md} +8 -5
  153. package/docs/{architecture.md → architecture/architecture.md} +43 -22
  154. package/docs/{artifact-placement.md → architecture/artifact-placement.md} +26 -23
  155. package/docs/architecture/artifact-versions.md +90 -0
  156. package/docs/{capacity-and-scheduling.md → architecture/capacity-and-scheduling.md} +26 -13
  157. package/docs/{context-engine.md → architecture/context-engine.md} +25 -25
  158. package/docs/{context-working-set.md → architecture/context-working-set.md} +13 -10
  159. package/docs/{dispatch-architecture-rationale.md → architecture/dispatch-architecture-rationale.md} +12 -9
  160. package/docs/{dispatch-typed-intent.md → architecture/dispatch-typed-intent.md} +68 -46
  161. package/docs/{evidence-and-memory.md → architecture/evidence-and-memory.md} +23 -16
  162. package/docs/{middleware-and-components.md → architecture/middleware-and-components.md} +11 -5
  163. package/docs/{model-catalog.md → architecture/model-catalog.md} +40 -17
  164. package/docs/{observability.md → architecture/observability.md} +26 -13
  165. package/docs/{pi-boundary.md → architecture/pi-boundary.md} +24 -11
  166. package/docs/{prompt-envelope-and-tools.md → architecture/prompt-envelope-and-tools.md} +55 -20
  167. package/docs/{provider-adapter-cookbook.md → architecture/provider-adapter-cookbook.md} +35 -24
  168. package/docs/{safety-model.md → architecture/safety-model.md} +20 -15
  169. package/docs/{session-lifecycle.md → architecture/session-lifecycle.md} +8 -5
  170. package/docs/architecture/time-conventions.md +125 -0
  171. package/docs/{trace-store.md → architecture/trace-store.md} +13 -5
  172. package/docs/{tui-design.md → architecture/tui-design.md} +13 -13
  173. package/docs/{worker-dispatch-mechanics.md → architecture/worker-dispatch-mechanics.md} +27 -30
  174. package/docs/{built-in-agents.md → guide/built-in-agents.md} +50 -34
  175. package/docs/{commands-and-modes.md → guide/commands-and-modes.md} +65 -60
  176. package/docs/{configuration-and-targets.md → guide/configuration-and-targets.md} +227 -289
  177. package/docs/guide/configuration-reference.md +1158 -0
  178. package/docs/{environment-variables.md → guide/environment-variables.md} +31 -28
  179. package/docs/{exit-codes-and-output.md → guide/exit-codes-and-output.md} +6 -3
  180. package/docs/{extensions-and-sharing.md → guide/extensions-and-sharing.md} +41 -14
  181. package/docs/{fleet-dispatch.md → guide/fleet-dispatch.md} +39 -43
  182. package/docs/{glossary.md → guide/glossary.md} +14 -11
  183. package/docs/{installation-and-lifecycle.md → guide/installation-and-lifecycle.md} +44 -13
  184. package/docs/guide/panes-and-files.md +290 -0
  185. package/docs/{proactive-memory.md → guide/proactive-memory.md} +79 -66
  186. package/docs/{resource-library.md → guide/resource-library.md} +13 -4
  187. package/docs/{skills-marketplace.md → guide/skills-marketplace.md} +7 -3
  188. package/docs/{tool-usage.md → guide/tool-usage.md} +87 -23
  189. package/docs/{troubleshooting.md → guide/troubleshooting.md} +9 -4
  190. package/docs/{config-knobs-audit.md → history/config-knobs-audit.md} +11 -11
  191. package/docs/{release-cut-checklist.md → history/release-cut-checklist.md} +29 -2
  192. package/docs/{development-pipeline.md → process/development-pipeline.md} +24 -26
  193. package/docs/process/documentation-coverage.md +100 -0
  194. package/docs/process/documentation-guide.md +187 -0
  195. package/docs/{eval-runner.md → process/eval-runner.md} +41 -50
  196. package/docs/{evals-internal.md → process/evals-internal.md} +10 -10
  197. package/docs/{evolution.md → process/evolution.md} +2 -2
  198. package/docs/{fleet-demo-runbook.md → process/fleet-demo-runbook.md} +11 -7
  199. package/docs/{git-commit-provenance.md → process/git-commit-provenance.md} +11 -4
  200. package/docs/{performance-methodology.md → process/performance-methodology.md} +87 -69
  201. package/docs/{scientific-validation.md → process/scientific-validation.md} +4 -4
  202. package/evals/README.md +2 -2
  203. package/package.json +9 -7
  204. package/skills/README.md +46 -37
  205. package/skills/coding/ast-grep/SKILL.md +2 -2
  206. package/skills/coding/coding-standards/SKILL.md +2 -2
  207. package/skills/coding/prototype/SKILL.md +2 -2
  208. package/skills/coding/tdd/SKILL.md +2 -2
  209. package/skills/context/context-handoff/SKILL.md +2 -2
  210. package/skills/context/context-prime/SKILL.md +2 -2
  211. package/skills/git/file-ticket/SKILL.md +2 -2
  212. package/skills/git/fix-issue/SKILL.md +3 -3
  213. package/skills/git/resolve-merge-conflicts/SKILL.md +2 -2
  214. package/skills/git/ship/SKILL.md +2 -2
  215. package/skills/git/worktree-create/SKILL.md +2 -2
  216. package/skills/git/worktree-merge/SKILL.md +2 -2
  217. package/skills/meta/clio-coder-dev/SKILL.md +9 -5
  218. package/skills/meta/clio-coder-dev/evals.md +3 -2
  219. package/skills/meta/clio-coder-test/SKILL.md +102 -95
  220. package/skills/meta/clio-coder-test/evals.md +9 -4
  221. package/skills/meta/clio-coder-test/references/harness.md +100 -124
  222. package/skills/meta/clio-coder-test/references/test-map.md +77 -50
  223. package/skills/meta/credentials/SKILL.md +2 -2
  224. package/skills/meta/find-skills/SKILL.md +2 -2
  225. package/skills/meta/herdr/SKILL.md +2 -2
  226. package/skills/meta/skill-craft/SKILL.md +22 -16
  227. package/skills/planning/architecture/SKILL.md +2 -2
  228. package/skills/planning/backlog/SKILL.md +2 -2
  229. package/skills/planning/prd/SKILL.md +2 -2
  230. package/skills/planning/product-intent/SKILL.md +2 -2
  231. package/skills/planning/tech-spec/SKILL.md +2 -2
  232. package/skills/registry.yaml +62 -62
  233. package/skills/research/arxiv-literature/SKILL.md +2 -2
  234. package/skills/research/experiment-protocol/SKILL.md +2 -2
  235. package/skills/research/scientific-debugging/SKILL.md +2 -2
  236. package/skills/research/scientific-modernization/SKILL.md +2 -2
  237. package/skills/skill-marketplace.json +62 -62
  238. package/skills/workflow/cut-it/SKILL.md +2 -2
  239. package/skills/workflow/design-council/SKILL.md +2 -2
  240. package/skills/workflow/grill-me/SKILL.md +2 -2
  241. package/skills/workflow/workflow-distiller/SKILL.md +2 -2
  242. package/src/cli/args.ts +2 -2
  243. package/src/cli/bootstrap-generate.ts +1 -1
  244. package/src/cli/config-inspect.ts +65 -12
  245. package/src/cli/configure.ts +0 -4
  246. package/src/cli/docs.ts +22 -14
  247. package/src/cli/doctor-naming.ts +5 -5
  248. package/src/cli/doctor-toolchain.ts +3 -3
  249. package/src/cli/eval.ts +1 -2
  250. package/src/cli/extensions.ts +2 -1
  251. package/src/cli/fleet.ts +1 -1
  252. package/src/cli/index.ts +2 -1
  253. package/src/cli/internal-dispatch.ts +3 -4
  254. package/src/cli/panes.ts +19 -5
  255. package/src/cli/run.ts +2 -2
  256. package/src/cli/share.ts +5 -1
  257. package/src/cli/skills-eval.ts +3 -3
  258. package/src/cli/targets.ts +2 -6
  259. package/src/cli/trace.ts +55 -4
  260. package/src/cli/wiki-generate.ts +1 -1
  261. package/src/core/artifact-paths.ts +1 -1
  262. package/src/core/bash-exec.ts +131 -86
  263. package/src/core/bus-events.ts +51 -6
  264. package/src/core/config.ts +5 -1
  265. package/src/core/defaults.ts +7 -4
  266. package/src/core/dispatch-outcome.ts +16 -0
  267. package/src/core/guardrails.ts +10 -49
  268. package/src/core/prompt-hint.ts +9 -0
  269. package/src/domains/agents/builtins/architect.md +2 -3
  270. package/src/domains/agents/builtins/coder.md +3 -2
  271. package/src/domains/agents/builtins/debugger.md +2 -2
  272. package/src/domains/agents/builtins/documenter.md +2 -2
  273. package/src/domains/agents/builtins/git-master.md +1 -1
  274. package/src/domains/agents/builtins/oracle.md +1 -1
  275. package/src/domains/agents/builtins/provenance.md +1 -1
  276. package/src/domains/agents/builtins/researcher.md +1 -1
  277. package/src/domains/agents/builtins/scout.md +1 -1
  278. package/src/domains/agents/builtins/tester.md +2 -2
  279. package/src/domains/agents/builtins/verifier.md +2 -2
  280. package/src/domains/agents/builtins/wiki-writer.md +1 -1
  281. package/src/domains/agents/catalog.ts +12 -14
  282. package/src/domains/agents/contract.ts +2 -0
  283. package/src/domains/agents/extension.ts +23 -1
  284. package/src/domains/config/keybindings.ts +8 -0
  285. package/src/domains/context/extension.ts +0 -3
  286. package/src/domains/context/working-set/path-index.ts +1 -0
  287. package/src/domains/dispatch/capability-match.ts +10 -0
  288. package/src/domains/dispatch/extension.ts +105 -22
  289. package/src/domains/dispatch/host-verification.ts +435 -39
  290. package/src/domains/dispatch/intent-requirements.ts +10 -0
  291. package/src/domains/dispatch/intent.ts +18 -1
  292. package/src/domains/dispatch/path-scope.ts +235 -24
  293. package/src/domains/dispatch/run-event-journal.ts +4 -15
  294. package/src/domains/dispatch/state.ts +2 -3
  295. package/src/domains/dispatch/transport.ts +45 -21
  296. package/src/domains/dispatch/types.ts +55 -3
  297. package/src/domains/eval/artifacts/store.ts +5 -0
  298. package/src/domains/eval/store.ts +8 -1
  299. package/src/domains/evidence/trust-status.ts +10 -1
  300. package/src/domains/extensions/contract.ts +15 -1
  301. package/src/domains/extensions/discovery.ts +238 -41
  302. package/src/domains/extensions/extension.ts +105 -6
  303. package/src/domains/extensions/index.ts +24 -0
  304. package/src/domains/extensions/integrity.ts +189 -0
  305. package/src/domains/extensions/manager.ts +17 -1
  306. package/src/domains/extensions/resource-path.ts +27 -0
  307. package/src/domains/extensions/resources.ts +18 -38
  308. package/src/domains/extensions/snapshot-store.ts +39 -0
  309. package/src/domains/extensions/snapshot.ts +180 -0
  310. package/src/domains/extensions/state.ts +385 -57
  311. package/src/domains/extensions/types.ts +118 -1
  312. package/src/domains/lifecycle/migrations/2026-09-01-extension-install-digests.ts +27 -0
  313. package/src/domains/lifecycle/migrations/index.ts +2 -0
  314. package/src/domains/lifecycle/naming-resources.ts +19 -4
  315. package/src/domains/lifecycle/naming-yazi.ts +10 -5
  316. package/src/domains/middleware/contract.ts +26 -0
  317. package/src/domains/middleware/extension.ts +24 -24
  318. package/src/domains/middleware/hook-receipts.ts +27 -4
  319. package/src/domains/middleware/hooks-io.ts +65 -32
  320. package/src/domains/middleware/hooks.ts +64 -0
  321. package/src/domains/middleware/index.ts +28 -4
  322. package/src/domains/middleware/registrations.ts +326 -0
  323. package/src/domains/middleware/runtime.ts +28 -0
  324. package/src/domains/middleware/snapshot.ts +20 -7
  325. package/src/domains/mux/contract.ts +38 -0
  326. package/src/domains/mux/detect.ts +6 -13
  327. package/src/domains/mux/index.ts +1 -1
  328. package/src/domains/mux/operations.ts +44 -5
  329. package/src/domains/mux/yazi/assets/yazi.toml +2 -2
  330. package/src/domains/mux/yazi/session.ts +53 -4
  331. package/src/domains/mux/yazi/theme.ts +117 -17
  332. package/src/domains/observability/contract.ts +10 -11
  333. package/src/domains/observability/extension.ts +11 -3
  334. package/src/domains/observability/projection.ts +14 -90
  335. package/src/domains/observability/trace-store.ts +43 -7
  336. package/src/domains/prompts/compiler.ts +73 -53
  337. package/src/domains/prompts/contract.ts +15 -3
  338. package/src/domains/prompts/extension.ts +97 -9
  339. package/src/domains/prompts/fragments/identity/clio-worker.md +1 -3
  340. package/src/domains/prompts/fragments/identity/clio.md +6 -12
  341. package/src/domains/prompts/fragments/identity/docs-routing.md +1 -2
  342. package/src/domains/prompts/fragments/identity/self-awareness.md +3 -11
  343. package/src/domains/prompts/fragments/operating/contract.md +7 -15
  344. package/src/domains/prompts/fragments/operating/delegation.md +32 -34
  345. package/src/domains/prompts/fragments/operating/skills.md +10 -24
  346. package/src/domains/prompts/fragments/operating/worker.md +1 -8
  347. package/src/domains/providers/index.ts +1 -1
  348. package/src/domains/providers/model-runtime-capabilities.ts +85 -21
  349. package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +669 -104
  350. package/src/domains/providers/runtime-resolution.ts +31 -0
  351. package/src/domains/providers/runtimes/common/probe-helpers.ts +7 -2
  352. package/src/domains/providers/runtimes/local-native/llamacpp.ts +9 -1
  353. package/src/domains/providers/types/cost-provenance.ts +19 -0
  354. package/src/domains/providers/types/local-model-quirks.ts +85 -37
  355. package/src/domains/resources/skills/loader.ts +16 -19
  356. package/src/domains/safety/call-target.ts +1 -1
  357. package/src/domains/safety/loop-detector.ts +7 -4
  358. package/src/domains/session/task-board.ts +10 -9
  359. package/src/domains/share/archive.ts +164 -7
  360. package/src/engine/acp/server.ts +62 -9
  361. package/src/engine/apis/llamacpp-residency.ts +3 -4
  362. package/src/engine/apis/lmstudio.ts +3 -3
  363. package/src/engine/apis/ollama-native.ts +6 -6
  364. package/src/engine/apis/openai-completions.ts +28 -25
  365. package/src/engine/apis/output-budget.ts +8 -18
  366. package/src/engine/apis/residency.ts +8 -27
  367. package/src/engine/gemma-channel-filter.ts +19 -0
  368. package/src/engine/loop-guard.ts +92 -12
  369. package/src/engine/worker-runtime.ts +40 -11
  370. package/src/engine/worker-tools.ts +3 -1
  371. package/src/entry/extension-hook-sources.ts +28 -0
  372. package/src/entry/extension-reload.ts +309 -0
  373. package/src/entry/orchestrator.ts +59 -35
  374. package/src/interactive/application-controller.ts +2 -1
  375. package/src/interactive/bus-notices.ts +8 -1
  376. package/src/interactive/chat-loop-messages.ts +3 -13
  377. package/src/interactive/chat-loop.ts +10 -1
  378. package/src/interactive/chat-panel.ts +36 -13
  379. package/src/interactive/chat-renderer.ts +71 -7
  380. package/src/interactive/dispatch-board.ts +6 -11
  381. package/src/interactive/footer/widgets.ts +13 -0
  382. package/src/interactive/interactive-application.ts +39 -4
  383. package/src/interactive/interactive-input-runtime.ts +4 -0
  384. package/src/interactive/interactive-presentation.ts +2 -2
  385. package/src/interactive/interactive-slash-runtime.ts +2 -0
  386. package/src/interactive/overlays/extensions.ts +9 -1
  387. package/src/interactive/overlays/help-reference.ts +13 -0
  388. package/src/interactive/overlays/settings.ts +27 -16
  389. package/src/interactive/panes-runtime.ts +111 -35
  390. package/src/interactive/prompt-cache-identity.ts +88 -0
  391. package/src/interactive/slash-commands.ts +129 -14
  392. package/src/interactive/stream-pacing-policy.ts +0 -23
  393. package/src/interactive/turn-context.ts +30 -15
  394. package/src/interactive/yazi-bridge.ts +60 -6
  395. package/src/tools/agent-tools.ts +30 -1
  396. package/src/tools/artifact.ts +2 -2
  397. package/src/tools/ask-user.ts +3 -3
  398. package/src/tools/bash.ts +1 -1
  399. package/src/tools/bootstrap.ts +4 -0
  400. package/src/tools/builtin-tool-catalog.ts +52 -22
  401. package/src/tools/codewiki/code-nav-surface.ts +6 -0
  402. package/src/tools/codewiki/code-nav.ts +99 -13
  403. package/src/tools/context/docs-engine.ts +20 -7
  404. package/src/tools/context/index.ts +29 -12
  405. package/src/tools/core-bootstrap.ts +28 -6
  406. package/src/tools/credential-present.ts +1 -2
  407. package/src/tools/dispatch-arguments.ts +5 -1
  408. package/src/tools/dispatch-plan.ts +48 -4
  409. package/src/tools/dispatch-run-events.ts +1 -1
  410. package/src/tools/dispatch-schema.ts +338 -0
  411. package/src/tools/dispatch-types.ts +3 -0
  412. package/src/tools/dispatch.ts +9 -254
  413. package/src/tools/ledger.ts +3 -5
  414. package/src/tools/monitor-surface.ts +5 -13
  415. package/src/tools/observation.ts +4 -5
  416. package/src/tools/panes-surface.ts +4 -11
  417. package/src/tools/panes.ts +4 -2
  418. package/src/tools/policy.ts +15 -2
  419. package/src/tools/read.ts +5 -6
  420. package/src/tools/registry.ts +30 -7
  421. package/src/tools/result-shaping.ts +18 -14
  422. package/src/tools/steer-surface.ts +1 -1
  423. package/src/tools/tasks.ts +1 -1
  424. package/src/tools/truncate.ts +6 -5
  425. package/src/tools/verify/surface.ts +6 -12
  426. package/src/tools/web-fetch-surface.ts +1 -3
  427. package/dist/chunk-5QIAJV2D.js +0 -48
  428. package/dist/chunk-JZWT5J3Y.js +0 -814
  429. package/dist/chunk-K7VKOLQQ.js +0 -15
  430. package/dist/chunk-PMZCIOCJ.js +0 -25
  431. package/dist/chunk-SUW5DORT.js +0 -819
  432. package/dist/chunk-UOV2BYIW.js +0 -107
  433. package/dist/chunk-WR6U3OVP.js +0 -45
  434. package/docs/artifact-versions.md +0 -67
  435. package/docs/documentation-coverage.md +0 -46
  436. package/docs/documentation-guide.md +0 -167
  437. package/docs/time-conventions.md +0 -101
@@ -2,17 +2,11 @@
2
2
  * Guardrail policy values: the numeric backstops that bound runaway agent
3
3
  * behavior (tool-call budgets, tool output byte caps, dispatch ledger size).
4
4
  *
5
- * These are durable operator policy, the same species as
6
- * `compaction.threshold`, so their primary home is the `guardrails:` section
7
- * of settings.yaml. The composition roots (orchestrator entry and worker
8
- * runtime) wire that section in via {@link configureGuardrails}; consumers
9
- * resolve values through {@link resolveGuardrail}, which layers a per-process
10
- * env override on top for CI and one-off experiments:
11
- *
12
- * env var > settings.yaml guardrails > built-in default
13
- *
14
- * Every value is a positive safe integer; invalid overrides fall through to
15
- * the next layer rather than erroring.
5
+ * These are durable operator policy, so their only configurable home is the
6
+ * canonical version 2 settings tree. Composition roots project that tree into
7
+ * this process through {@link configureGuardrails}; hot-path consumers resolve
8
+ * the current projection through {@link resolveGuardrail} without reading
9
+ * settings.yaml themselves.
16
10
  */
17
11
 
18
12
  export interface GuardrailValues {
@@ -66,16 +60,6 @@ export const GUARDRAIL_DEFAULTS: GuardrailValues = {
66
60
  internalDispatchTimeoutMs: 15 * 60 * 1000,
67
61
  };
68
62
 
69
- /** Per-process env overrides, one per guardrail. */
70
- export const GUARDRAIL_ENV_VARS: Readonly<Record<keyof GuardrailValues, string>> = {
71
- turnToolCallBudget: "CLIO_CODER_TURN_TOOL_CALL_BUDGET",
72
- workerToolCallCap: "CLIO_CODER_WORKER_TOOL_CALL_CAP",
73
- maxDispatchRuns: "CLIO_CODER_MAX_DISPATCH_RUNS",
74
- readMaxBytes: "CLIO_CODER_READ_MAX_BYTES",
75
- observationTurnBudgetBytes: "CLIO_CODER_OBSERVATION_TURN_BUDGET_BYTES",
76
- internalDispatchTimeoutMs: "CLIO_CODER_INTERNAL_DISPATCH_TIMEOUT_MS",
77
- };
78
-
79
63
  /** Project canonical v2 settings leaves onto the process-local guardrail registry. */
80
64
  export function guardrailValuesFromSettings(settings: {
81
65
  safety: {
@@ -100,15 +84,6 @@ export function guardrailValuesFromSettings(settings: {
100
84
  };
101
85
  }
102
86
 
103
- /**
104
- * Older env spellings that still read. `CLIO_CODER_MAX_RUNS` was the only
105
- * guardrail whose variable was not the SCREAMING_SNAKE of its key, and CI
106
- * environments already set it, so it keeps working behind the canonical name.
107
- */
108
- const GUARDRAIL_ENV_ALIASES: Readonly<Partial<Record<keyof GuardrailValues, string>>> = {
109
- maxDispatchRuns: "CLIO_CODER_MAX_RUNS",
110
- };
111
-
112
87
  /**
113
88
  * One-shot annotation attached to the first tool result inside the reserve
114
89
  * window. Advisory: the call that carried it still ran; only subsequent
@@ -178,28 +153,14 @@ export function mentionsWorkerToolCallCap(text: string | null | undefined): bool
178
153
  let configured: Partial<GuardrailValues> = {};
179
154
 
180
155
  /**
181
- * Install the settings.yaml `guardrails:` section. Called once per process by
182
- * the composition roots; later calls replace the whole layer (used by tests).
156
+ * Install the effective settings projection. Later calls replace the whole
157
+ * layer when a session override or configuration reload changes the view.
183
158
  */
184
159
  export function configureGuardrails(values: Partial<GuardrailValues> | undefined): void {
185
160
  configured = { ...(values ?? {}) };
186
161
  }
187
162
 
188
- function parsePositiveSafeInt(raw: string | undefined): number | undefined {
189
- if (raw === undefined) return undefined;
190
- const normalized = raw.trim();
191
- if (!/^[1-9]\d*$/.test(normalized)) return undefined;
192
- const parsed = Number(normalized);
193
- return Number.isSafeInteger(parsed) ? parsed : undefined;
194
- }
195
-
196
- /** Resolve one guardrail: env override > configured settings > default. */
197
- export function resolveGuardrail(key: keyof GuardrailValues, env: NodeJS.ProcessEnv = process.env): number {
198
- const alias = GUARDRAIL_ENV_ALIASES[key];
199
- return (
200
- parsePositiveSafeInt(env[GUARDRAIL_ENV_VARS[key]]) ??
201
- (alias ? parsePositiveSafeInt(env[alias]) : undefined) ??
202
- configured[key] ??
203
- GUARDRAIL_DEFAULTS[key]
204
- );
163
+ /** Resolve one guardrail from the effective settings projection or its default. */
164
+ export function resolveGuardrail(key: keyof GuardrailValues): number {
165
+ return configured[key] ?? GUARDRAIL_DEFAULTS[key];
205
166
  }
@@ -0,0 +1,9 @@
1
+ /** Collapse descriptor-authored prompt guidance to one byte-stable line. */
2
+ export function normalizePromptHint(text: string | undefined): string | undefined {
3
+ if (!text) return undefined;
4
+ const normalized = text
5
+ .replace(/[\r\n]+/gu, " ")
6
+ .replace(/\s+/gu, " ")
7
+ .trim();
8
+ return normalized.length > 0 ? normalized : undefined;
9
+ }
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  version: 1
3
3
  name: Architect
4
- description: Designs coding changes across boundaries, contracts, migrations, and validation gates; slices an existing plan into an executable dependency-ordered sprint via its bound cut-it skill.
4
+ description: Designs a change across boundaries and slices it into a sprint. Covers contracts, migrations, and validation gates, and turns an existing plan into a dependency-ordered sprint through its bound cut-it skill.
5
5
  tools:
6
6
  required: [artifact, context]
7
7
  optional: [read, grep, find, ls, code_nav, git, ledger]
@@ -22,8 +22,7 @@ You are Architect, the base design agent for coding work.
22
22
  Start by restating the requested change, the affected modules, and the decision the operator needs.
23
23
  Read contracts, manifests, call sites, and recent diffs before recommending a shape.
24
24
  Map ownership boundaries first: domains, engine, worker, tools, prompts, tests, docs, and runtime receipts.
25
- Before broad exploration, check `code_nav mode=wiki` and read `.clio-coder/wiki/quickstart.md` when a wiki exists.
26
- Use codewiki tools only when the assignment is navigation-heavy. Otherwise rely on the provided context and targeted reads.
25
+ When `code_nav` is among your tools and a wiki exists, check `code_nav mode=wiki` and read `.clio-coder/wiki/quickstart.md` before broad exploration; otherwise rely on the provided context and targeted reads.
27
26
  Prefer extending existing contracts over adding abstractions unless the new surface removes real complexity.
28
27
  Separate the required implementation slice from optional follow-up work.
29
28
  Call out prompt, safety, persistence, worker-runtime, and test consequences when they apply.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  version: 1
3
3
  name: Coder
4
- description: Implements bounded code changes, repairs, and behavior-preserving refactors.
4
+ description: Implements bounded code changes, repairs, and refactors. Behavior-preserving by default.
5
5
  tools:
6
6
  required: [read, {anyOf: [write, edit]}, context]
7
7
  optional: [grep, find, ls, web_fetch, git, verify, code_nav, bash, ledger]
@@ -21,12 +21,13 @@ tags: [implementation, repair, refactor]
21
21
  You are Coder, the base implementation agent.
22
22
  Start by restating the assigned coding task and the finished-state criteria.
23
23
  Read the local code, tests, and call sites before changing files.
24
- When the task is navigation-heavy and a codewiki exists, prefer `code_nav` (symbol, deps, dependents) over broad reads to locate definitions and call sites.
24
+ When `code_nav` is among your tools, prefer it (symbol, deps, dependents) over broad reads to locate definitions and call sites.
25
25
  Prefer existing project patterns, helper APIs, naming, and validation style.
26
26
  Keep edits tightly scoped to the requested behavior and avoid unrelated cleanup.
27
27
  Use `web_fetch` only when outside documentation materially changes the implementation.
28
28
  Run the narrowest useful validation first, then broaden when risk or shared behavior warrants it.
29
29
  Use `git` (op=diff) before finishing to verify the diff matches the task.
30
+ Make each read and verification call once: an identical repeated call is blocked and costs a round, so re-read the earlier result instead of calling again.
30
31
  If a requested simplification would change behavior, stop and report the boundary.
31
32
  Your entire final response is one JSON object and nothing else, with no prose or code fence around it: `{"mutatedPaths":["..."],"validations":[{"name":"...","passed":true,"evidence":"..."}]}`. Report every mutation and at least one concrete validation result.
32
33
  `validations` is never empty and never a list of strings. Each entry is one check you actually made, shaped like `{"name":"npm test","passed":true,"evidence":"exit 0"}`, with no other keys. When the task changed nothing, the read or command you did run is still the validation: name it and quote what it showed.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  version: 1
3
3
  name: Debugger
4
- description: Diagnoses failing code, tests, receipts, or runtime behavior without making edits.
4
+ description: Diagnoses failing code, tests, or runs without editing. Reads receipts, logs, and runtime behavior to name the cause.
5
5
  tools:
6
6
  required: [verify]
7
7
  optional: [read, grep, find, ls, git, code_nav, ledger]
@@ -21,7 +21,7 @@ tags: [debugging, root-cause, tests]
21
21
  You are Debugger, the base diagnostic agent for coding failures.
22
22
  Start by restating the failing behavior, expected behavior, and evidence source you were given.
23
23
  Inspect the relevant files, tests, commands, receipts, or logs before forming a hypothesis.
24
- When a codewiki exists, prefer `code_nav` (symbol, deps, dependents) over broad reads to trace the failing path.
24
+ When `code_nav` is among your tools, prefer it (symbol, deps, dependents) over broad reads to trace the failing path.
25
25
  Run only the narrow validation commands needed to reproduce or falsify the suspected failure.
26
26
  Classify the likely cause as code, test, configuration, dependency, runtime, prompt/tooling, or environment.
27
27
  Distinguish confirmed evidence from speculation and name any missing evidence explicitly.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  version: 1
3
3
  name: Documenter
4
- description: Updates developer-facing docs, examples, and concise operational runbooks.
4
+ description: Updates developer docs, examples, and operational runbooks.
5
5
  tools:
6
6
  required: [read, {anyOf: [write, edit]}]
7
7
  optional: [grep, find, ls, git, verify, code_nav, context, ledger]
@@ -22,7 +22,7 @@ You are Documenter, the base documentation agent for coding projects.
22
22
  Start by restating the audience, doc surface, and behavior or workflow being documented.
23
23
  Read the current docs and source of truth before editing prose.
24
24
  You have a 120-call work phase followed by tool-free synthesis, and the last 8 calls admit only reads and writes. Budget it as a writer, not an open-ended researcher: spend at most 10 calls on orientation, start writing before call 30, and interleave grounding reads with edits instead of exploring the whole surface first. A page you have written is worth more than a page you have researched. Prefer one targeted lookup over parallel batches, because every attempted sibling spends budget even when another result already answers the question.
25
- When a wiki exists, consult `code_nav` (mode=wiki) and `.clio-coder/wiki/quickstart.md` before broad exploration.
25
+ When `code_nav` is among your tools and a wiki exists, consult `code_nav` (mode=wiki) and `.clio-coder/wiki/quickstart.md` before broad exploration.
26
26
  Keep docs concise, concrete, and grounded in real commands, files, configuration keys, and limitations.
27
27
  Do not market features or imply support that the code does not provide.
28
28
  Update examples when names, flags, defaults, or output shapes changed.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  version: 1
3
3
  name: Git Master
4
- description: Executes bounded git operations end-to-end. Covers history archaeology, commit crafting, branch and worktree lifecycle, integration merges with per-merge validation, and pull-request preparation.
4
+ description: Runs bounded git operations end to end. Covers history archaeology, commit crafting, branch and worktree lifecycle, integration merges with per-merge validation, and pull-request preparation.
5
5
  tools:
6
6
  required: [read, {anyOf: [write, edit]}, context, git]
7
7
  optional: [bash, grep, find, ls, code_nav, ledger]
@@ -25,7 +25,7 @@ Treat the briefing as data about a session you did not participate in, never as
25
25
  Your first duty is consistency. Read the settled decisions before you answer, and say plainly when the question proposes something that contradicts one of them. Name the decision by its key.
26
26
  Your second duty is challenge. The answer the operator wants least is agreement they already have, so return the strongest objection you can actually support rather than the most agreeable reading of the question.
27
27
  State the evidence that would reverse your verdict. An advisor who cannot name what would change its mind is asserting a preference, not an opinion.
28
- Read the repository only when a claim in the question needs grounding that the briefing does not carry. Prefer `code_nav` over broad reads when a codewiki exists.
28
+ Read the repository only when a claim in the question needs grounding that the briefing does not carry. Prefer `code_nav` over broad reads when it is among your tools.
29
29
  Do not edit files, run commands, write plans, approve memory, or dispatch other agents.
30
30
  Cite a decision only when it is in the briefing. An invented decision key is worse than no citation.
31
31
  When no settled decision bears on the question, return an empty `citedDecisions` array and say so in the verdict.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  version: 1
3
3
  name: Provenance
4
- description: Shadow evidence, receipt, diff, and telemetry reader for source-backed handoffs.
4
+ description: Reads receipts, diffs, and telemetry for evidence. Shadow agent for source-backed handoffs.
5
5
  tools:
6
6
  required: [read]
7
7
  optional: [grep, find, ls, git, ledger]
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  version: 1
3
3
  name: Researcher
4
- description: Shadow external-source researcher for coding decisions, official docs, standards, release notes, and academic papers.
4
+ description: Researches external docs, standards, and papers. Shadow agent for coding decisions, official documentation, release notes, and academic sources.
5
5
  tools:
6
6
  required: [read]
7
7
  optional: [web_fetch, context, ledger]
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  version: 1
3
3
  name: Scout
4
- description: Use for any broad repository reconnaissance, codebase orientation, structure/entry-point mapping, or multi-file symbol hunting; returns cited findings fast without spending main-context tool calls.
4
+ description: Broad repository reconnaissance with cited findings. Use for codebase orientation, structure and entry-point mapping, or multi-file symbol hunting; spends no main-context tool calls.
5
5
  tools:
6
6
  required: [read]
7
7
  optional: [grep, find, ls, context, code_nav, git, ledger]
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  version: 1
3
3
  name: Tester
4
- description: Adds focused deterministic tests for regressions and missing coverage.
4
+ description: Adds focused deterministic regression and coverage tests.
5
5
  tools:
6
6
  required: [read, {anyOf: [write, edit]}]
7
7
  optional: [grep, find, ls, git, verify, code_nav, ledger]
@@ -21,7 +21,7 @@ tags: [tests, regression, validation]
21
21
  You are Tester, the base test-authoring agent.
22
22
  Start by restating the behavior under test and the failure mode the test must catch.
23
23
  Read the existing test style before adding or changing tests.
24
- When a codewiki exists, prefer `code_nav` (symbol, dependents) over broad reads to find the code under test and its callers.
24
+ When `code_nav` is among your tools, prefer it (symbol, dependents) over broad reads to find the code under test and its callers.
25
25
  Prefer the smallest deterministic unit, contract, boundary, or smoke test that proves the behavior.
26
26
  Mock external services and unstable runtimes unless the task explicitly asks for live validation.
27
27
  Do not change production code unless the test harness needs a minimal exported seam.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  version: 1
3
3
  name: Verifier
4
- description: Independently runs and reports test, lint, build, review, and release gates.
4
+ description: Runs test, lint, build, review, and release gates. Reports each gate independently.
5
5
  tools:
6
6
  required: [verify]
7
7
  optional: [read, grep, find, ls, git, code_nav, ledger]
@@ -21,7 +21,7 @@ tags: [verification, gates, review]
21
21
  You are Verifier, the base independent quality agent.
22
22
  Start by restating the artifact, diff, command, or release gate you are validating.
23
23
  Inspect scripts, docs, recent diffs, and touched files before choosing commands.
24
- When a codewiki exists, prefer `code_nav` (symbol, dependents) over broad reads to scope what a diff touches.
24
+ When `code_nav` is among your tools, prefer it (symbol, dependents) over broad reads to scope what a diff touches.
25
25
  Run only the checks required for the requested confidence level.
26
26
  Prefer typed validation tools over arbitrary shell execution.
27
27
  Call `verify()` before choosing an executable check. It lists package scripts and strict project entries from `.clio-coder/verifiers.yaml` through the same metadata shape.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  version: 1
3
3
  name: Wiki Writer
4
- description: Plans one repository wiki, or researches and writes one wiki page, against a supplied plan.
4
+ description: Plans a repository wiki or writes one wiki page. Works against a supplied plan.
5
5
  tools:
6
6
  required: [read, {anyOf: [write, edit]}]
7
7
  optional: [grep, find, ls, code_nav, context, ledger]
@@ -22,20 +22,15 @@ export interface AgentCatalogSections {
22
22
  /** Keeps one roster line short enough that the whole fleet block stays near its token budget. */
23
23
  const FLEET_PROMPT_PURPOSE_MAX_CHARS = 64;
24
24
 
25
- /**
26
- * The delegation default stated as a rule the model can evaluate against the
27
- * task in front of it. The E19 drive found the previous phrasing lost to
28
- * inertia every time: an incentive ("dispatch is the cheap path") is not a
29
- * test, so a model that had already started reading simply kept reading. A
30
- * threshold it can count against is.
31
- */
32
- export const FLEET_DELEGATION_RULE =
33
- "Delegate when the task has two or more independent file-scoped subtasks, or any broad exploration. You keep synthesis and validation; a single narrow change stays with you.";
34
-
35
25
  /**
36
26
  * S3 handed two files to a worker, then edited both itself before dispatching,
37
- * reverted one, and disclosed neither. The delegation rule above says what to
38
- * hand off; this says what handing off costs you.
27
+ * reverted one, and disclosed neither. The threshold that says what to hand
28
+ * off lives in the Delegation section (`operating.delegation`), stated once
29
+ * as a count taken before the first edit with the dispatch call shape next
30
+ * to it; the E19 drive found an incentive ("dispatch is the cheap path") lost
31
+ * to inertia every time, and the round-2 drive found the bare threshold here,
32
+ * after the tool contract and without a call shape, lost the same way on
33
+ * two of two runs. This line says what handing off costs you.
39
34
  */
40
35
  export const FLEET_HANDOFF_RULE =
41
36
  "A file you assigned to a worker is not yours to edit while its dispatch is pending or after it succeeds; if you already changed it, say so in your report.";
@@ -104,11 +99,14 @@ export function renderFleetPromptSection(input: ReadonlyArray<AgentSpec>): strin
104
99
 
105
100
  const lines: string[] = [
106
101
  "# Fleet",
107
- FLEET_DELEGATION_RULE,
108
102
  FLEET_HANDOFF_RULE,
109
103
  FLEET_ANTI_CHURN_RULE,
110
104
  FLEET_REFUSAL_DISCLOSURE,
111
- `Workers you reach with \`dispatch\`, by \`agent\` id (default ${DEFAULT_DISPATCH_AGENT_ID}). Capability class is what a worker may do: a read-only worker cannot edit.`,
105
+ // `agent:"auto"` baselines by task shape and can still land on a worker
106
+ // whose capability class is wrong for the job, so a pinned id is the
107
+ // reliable path; said here, next to the ids, rather than in the Tool
108
+ // Contract.
109
+ `Workers you reach with \`dispatch\` by \`agent\` id (default ${DEFAULT_DISPATCH_AGENT_ID}); agent:"auto" is a fallback, not a router. Capability class is what a worker may do: a read-only worker cannot edit.`,
112
110
  FLEET_SPECIALIST_ROUTING,
113
111
  ];
114
112
  if (publicSpecs.length > 0) {
@@ -3,6 +3,8 @@ import type { AgentRecipeDiagnostic } from "./registry.js";
3
3
  import type { AgentSpec } from "./spec.js";
4
4
 
5
5
  export interface AgentsContract {
6
+ /** Monotonic catalog revision; changes after every successful discovery. */
7
+ revision(): number;
6
8
  /** Raw recipes as loaded from Markdown files. */
7
9
  list(): ReadonlyArray<AgentRecipe>;
8
10
  get(id: string): AgentRecipe | null;
@@ -1,3 +1,4 @@
1
+ import { BusChannels } from "../../core/bus-events.js";
1
2
  import type { DomainBundle, DomainContext, DomainExtension } from "../../core/domain-loader.js";
2
3
  import { assertAgentIdNamespace } from "../config/agent-namespace.js";
3
4
  import type { ConfigContract } from "../config/contract.js";
@@ -10,6 +11,7 @@ export function createAgentsBundle(_context: DomainContext): DomainBundle<Agents
10
11
  let recipes: ReadonlyArray<AgentRecipe> = [];
11
12
  let specs: ReadonlyArray<AgentSpec> = [];
12
13
  let diagnostics: ReadonlyArray<AgentRecipeDiagnostic> = [];
14
+ let revision = 0;
13
15
 
14
16
  function discover(): void {
15
17
  const nextDiagnostics: AgentRecipeDiagnostic[] = [];
@@ -19,16 +21,36 @@ export function createAgentsBundle(_context: DomainContext): DomainBundle<Agents
19
21
  recipes = merged;
20
22
  specs = recipes.map(normalizeAgentSpec);
21
23
  diagnostics = nextDiagnostics;
24
+ revision += 1;
22
25
  }
23
26
 
27
+ let unsubscribeExtensionsReload: (() => void) | null = null;
24
28
  const extension: DomainExtension = {
25
29
  async start() {
26
30
  discover();
31
+ // Recipes are cached at start; extension agent roots come from the
32
+ // committed extension generation, so a changed generation rediscovers.
33
+ unsubscribeExtensionsReload = _context.bus.on(BusChannels.ExtensionsReloaded, (payload: unknown) => {
34
+ if ((payload as { changed?: unknown } | undefined)?.changed !== true) return;
35
+ try {
36
+ discover();
37
+ } catch (error) {
38
+ process.stderr.write(
39
+ `[clio-coder:agents] rediscovery after extension reload failed: ${error instanceof Error ? error.message : String(error)}\n`,
40
+ );
41
+ }
42
+ });
43
+ },
44
+ async stop() {
45
+ unsubscribeExtensionsReload?.();
46
+ unsubscribeExtensionsReload = null;
27
47
  },
28
- async stop() {},
29
48
  };
30
49
 
31
50
  const contract: AgentsContract = {
51
+ revision() {
52
+ return revision;
53
+ },
32
54
  list() {
33
55
  return recipes;
34
56
  },
@@ -24,6 +24,7 @@ export interface ClioAppKeybindings {
24
24
  "clio-coder.status.toggle": true;
25
25
  "clio-coder.session.tree": true;
26
26
  "clio-coder.dispatchBoard.toggle": true;
27
+ "clio-coder.files.toggle": true;
27
28
  "clio-coder.tasks.open": true;
28
29
  "clio-coder.decisions.open": true;
29
30
  "clio-coder.dispatch.background": true;
@@ -90,6 +91,13 @@ export const CLIO_APP_KEYBINDINGS = {
90
91
  defaultKeys: "alt+w",
91
92
  description: "Toggle the dispatch (workers) board overlay",
92
93
  },
94
+ "clio-coder.files.toggle": {
95
+ // Alt+F is a pi-tui editor reserve (word-forward), so the files pane
96
+ // takes the next letter that reads as "explorer" and stays inside the
97
+ // Alt+<letter> scheme, which also earns it the Ctrl+G leader fallback.
98
+ defaultKeys: "alt+e",
99
+ description: "Toggle the files pane beside the session (a --with-panes session inside herdr)",
100
+ },
93
101
  "clio-coder.tasks.open": {
94
102
  // Approved application-boundary override of pi-tui editor word-back.
95
103
  defaultKeys: "alt+b",
@@ -59,9 +59,6 @@ function persistState(
59
59
  * because nothing inside it awaited.
60
60
  */
61
61
  async function ensureCodewikiFresh(cwd: string): Promise<void> {
62
- // The bootstrap model-generation child runs a headless session purely to draft
63
- // CLIO-CODER.md; it must not re-index while the parent context-init owns the rebuild.
64
- if (process.env.CLIO_CODER_BOOTSTRAP_GENERATE_CHILD === "1") return;
65
62
  const state = readClioState(cwd);
66
63
  if (!state && !existsSync(codewikiPath(cwd))) return;
67
64
  const indexedAt = new Date().toISOString();
@@ -241,6 +241,7 @@ function observedPath(op: PathOp, args: Record<string, unknown> | null, cwd: str
241
241
  return explicit === null ? "" : canonicalize(explicit, cwd);
242
242
  }
243
243
  if (op === "code_nav") {
244
+ if (stringField(args, "source") === "clio") return "";
244
245
  const mode = stringField(args, "mode");
245
246
  if (mode === null || !CODE_NAV_PATH_MODES.has(mode)) return "";
246
247
  const query = stringField(args, "query");
@@ -34,6 +34,7 @@
34
34
  import type { ResultContract } from "../agents/result-contract.js";
35
35
  import type { AgentCapabilityClass, AgentSpec } from "../agents/spec.js";
36
36
  import { type AgentTaskType, classifyAgentTask } from "./agent-candidates.js";
37
+ import type { DispatchIntent } from "./intent.js";
37
38
 
38
39
  /** Capability classes that cannot change the workspace, whatever the task says. */
39
40
  const READ_ONLY_CAPABILITY_CLASSES: ReadonlySet<AgentCapabilityClass> = new Set(["read-only", "verification"]);
@@ -112,6 +113,14 @@ export interface CapabilityMismatchInput {
112
113
  resultContractKind: ResultContract["kind"] | null;
113
114
  /** Installed recipes, used only to name a suggestion that actually resolves. */
114
115
  specs: ReadonlyArray<AgentSpec>;
116
+ /**
117
+ * The caller's typed intent, when it sent one. An intent that declares no
118
+ * write roots and no expected outputs is the caller saying in the schema
119
+ * that this run changes nothing, which outranks a verb the prose classifier
120
+ * read as mutating ("write the failing test first" inside a survey question
121
+ * refused a scout and cost the orchestrator a round).
122
+ */
123
+ intent?: Pick<DispatchIntent, "writeRoots" | "expectedOutputs"> | null;
115
124
  }
116
125
 
117
126
  function suggestedSpecialist(taskType: AgentTaskType, specs: ReadonlyArray<AgentSpec>): string | null {
@@ -130,6 +139,7 @@ function suggestedSpecialist(taskType: AgentTaskType, specs: ReadonlyArray<Agent
130
139
  */
131
140
  export function assessCapabilityMismatch(input: CapabilityMismatchInput): CapabilityMismatch | null {
132
141
  if (!READ_ONLY_CAPABILITY_CLASSES.has(input.capabilityClass)) return null;
142
+ if (input.intent && input.intent.writeRoots.length === 0 && input.intent.expectedOutputs.length === 0) return null;
133
143
  const features = classifyAgentTask(input.task);
134
144
  if (!MUTATING_TASK_TYPES.has(features.taskType)) return null;
135
145
  const readShaped = READ_SHAPED_PATTERNS.some((pattern) => pattern.test(input.task));