@iowarp/clio-coder 0.4.1 → 0.4.3

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 (604) hide show
  1. package/CHANGELOG.md +127 -0
  2. package/CONTRIBUTING.md +142 -52
  3. package/README.md +434 -473
  4. package/SECURITY.md +2 -1
  5. package/dist/{acp-ZILU3AUO.js → acp-H2NGRPWO.js} +12 -12
  6. package/dist/{agents-HYWGBGQR.js → agents-TL5LLUQP.js} +56 -55
  7. package/dist/assets/codewiki.json +1 -1
  8. package/dist/{auth-N3QT7CBO.js → auth-E5SW4HMS.js} +23 -21
  9. package/dist/builtins-IA7V7FUC.js +22 -0
  10. package/dist/{chunk-7RY5VZPH.js → chunk-2APPQIER.js} +8 -8
  11. package/dist/{chunk-72GZI5EV.js → chunk-2JH2WHGE.js} +2 -2
  12. package/dist/{chunk-JA5QWE4Z.js → chunk-2UG5F4C5.js} +1973 -1664
  13. package/dist/{chunk-5YHDIDBP.js → chunk-2UH2KFUP.js} +2 -2
  14. package/dist/{chunk-CTJ4RNAA.js → chunk-2VIKGWFZ.js} +2 -2
  15. package/dist/{chunk-I66EAJFY.js → chunk-2WZ546HR.js} +267 -232
  16. package/dist/{chunk-GIZNH63R.js → chunk-35MSIRKH.js} +9 -4
  17. package/dist/chunk-3EBYEESD.js +314 -0
  18. package/dist/{chunk-J5LZHVIT.js → chunk-3M6DQK6S.js} +113 -35
  19. package/dist/{chunk-RKSR6VSF.js → chunk-4IUZQIJ3.js} +29 -1
  20. package/dist/{chunk-6FN3E6KX.js → chunk-4O6MANBS.js} +2 -2
  21. package/dist/chunk-4UVU7BJ5.js +39 -0
  22. package/dist/{chunk-VKRH2TCS.js → chunk-4WR7VSYB.js} +2 -2
  23. package/dist/{chunk-BBTJOK6Y.js → chunk-54CBCGIR.js} +5 -5
  24. package/dist/{chunk-AP73CFDC.js → chunk-5ICU3EUH.js} +2 -2
  25. package/dist/chunk-5MEZN6CB.js +1334 -0
  26. package/dist/{chunk-O42A54GG.js → chunk-5OIVVPHF.js} +2 -2
  27. package/dist/{chunk-ABLSQ6JX.js → chunk-64I3JVYM.js} +8 -2
  28. package/dist/{chunk-AFKWHWXF.js → chunk-6PTFB5VS.js} +39 -22
  29. package/dist/{chunk-VN3SHNBN.js → chunk-7DICMOS6.js} +2 -2
  30. package/dist/chunk-7DRAWPTZ.js +360 -0
  31. package/dist/chunk-7E7I3WLS.js +3762 -0
  32. package/dist/{chunk-BJGUKIG4.js → chunk-7ZYNNDKC.js} +7 -7
  33. package/dist/{chunk-XKA2ICR3.js → chunk-AF4YM7Z4.js} +652 -252
  34. package/dist/{chunk-GVQJ5CCZ.js → chunk-AX2THNSA.js} +12 -12
  35. package/dist/{chunk-IG7BCQBA.js → chunk-B4OAX3SI.js} +65 -3
  36. package/dist/{chunk-TD3PGPQA.js → chunk-B4VEBZKF.js} +3 -3
  37. package/dist/{chunk-74YWRRU5.js → chunk-BEPZRGGU.js} +10 -10
  38. package/dist/{chunk-FEFIFZTL.js → chunk-CE5AX47J.js} +2 -2
  39. package/dist/{chunk-UAPGZHYC.js → chunk-DWUOQKRU.js} +25 -11
  40. package/dist/{chunk-THYWACCR.js → chunk-E3TPLWFX.js} +3 -3
  41. package/dist/{chunk-7EPLI7VL.js → chunk-EKCHAPYA.js} +2 -2
  42. package/dist/{chunk-HLW2MRKE.js → chunk-F4EKGO4N.js} +3 -1
  43. package/dist/{chunk-PJJ6MY27.js → chunk-F5JHEYZM.js} +7 -7
  44. package/dist/{chunk-6CCS4G3W.js → chunk-FTMGRKEF.js} +3 -3
  45. package/dist/{chunk-SINK3QR6.js → chunk-G76U63X4.js} +17 -17
  46. package/dist/{chunk-EIMVLWB3.js → chunk-GHS5EBTQ.js} +64 -9
  47. package/dist/{chunk-QMXC4JB7.js → chunk-GI7YYQ3F.js} +187 -1419
  48. package/dist/{chunk-TZSKNMZG.js → chunk-GTUD2WMY.js} +2 -1
  49. package/dist/{chunk-6HMJX2VU.js → chunk-GWZNEVM2.js} +44 -12
  50. package/dist/chunk-GYV6VZOC.js +26 -0
  51. package/dist/{chunk-MQXIVJ35.js → chunk-HAXOFFRH.js} +5 -5
  52. package/dist/{chunk-UXN6JT4W.js → chunk-HEQY7ZFI.js} +3 -3
  53. package/dist/{chunk-7PWAODYW.js → chunk-I7XBWTYH.js} +2 -2
  54. package/dist/{chunk-GCSMB2KY.js → chunk-I7ZPNEJM.js} +145 -102
  55. package/dist/{chunk-WNP7O5WZ.js → chunk-ID64D7PE.js} +4 -4
  56. package/dist/{chunk-QTFGO774.js → chunk-IGLP3ODT.js} +29 -16
  57. package/dist/chunk-IJNZMHLA.js +101 -0
  58. package/dist/{chunk-BDPT6GTK.js → chunk-INY6HTFL.js} +7 -7
  59. package/dist/{chunk-PBP4B7XR.js → chunk-IUE3Y34X.js} +2 -2
  60. package/dist/{chunk-6NJQITNH.js → chunk-IWT4SF4R.js} +6 -3
  61. package/dist/{chunk-R23Z6K6I.js → chunk-JDAY6FIL.js} +19 -19
  62. package/dist/chunk-JEQ3XTHC.js +42 -0
  63. package/dist/{chunk-FSP7CMNU.js → chunk-JGRC33J2.js} +50 -4
  64. package/dist/{chunk-TVH4ONAM.js → chunk-JKKCYP3C.js} +10 -10
  65. package/dist/{chunk-HJWWJ6IL.js → chunk-JSC3U7TI.js} +16 -4
  66. package/dist/{chunk-C537JADH.js → chunk-KK4JZPBQ.js} +19 -141
  67. package/dist/{chunk-K6BF4U2H.js → chunk-KKOJXO6R.js} +62 -14
  68. package/dist/{chunk-IHXBNWMM.js → chunk-KXDSS5WJ.js} +7 -3
  69. package/dist/{chunk-6DWBAZ5U.js → chunk-L47TF46W.js} +5 -7
  70. package/dist/{chunk-HUAS7ITX.js → chunk-LDJG7DW3.js} +91 -42
  71. package/dist/{chunk-CDNVLKUX.js → chunk-LLDJM5XK.js} +13 -7
  72. package/dist/{chunk-YPI3QQCF.js → chunk-MCEPRMZW.js} +2 -4
  73. package/dist/{chunk-Y4CAGMM6.js → chunk-MNJGS2IN.js} +5 -6
  74. package/dist/{chunk-VKFQTNDV.js → chunk-MUW2BDDH.js} +4 -4
  75. package/dist/{chunk-E67WX76H.js → chunk-MWUZBSAQ.js} +104 -152
  76. package/dist/{chunk-OJTRZGR3.js → chunk-N2Z7HLVY.js} +21 -21
  77. package/dist/{chunk-TVHHYFHE.js → chunk-NEDJ26B5.js} +2 -2
  78. package/dist/{chunk-FYUN5KZ3.js → chunk-NIQJ66N4.js} +21 -21
  79. package/dist/{chunk-U2WB7TZS.js → chunk-NMJXSHBJ.js} +97 -85
  80. package/dist/{chunk-CWVRRIEI.js → chunk-NZMNUPZZ.js} +2 -2
  81. package/dist/{chunk-VEGN6WIQ.js → chunk-O5CVSAG5.js} +3 -3
  82. package/dist/{chunk-MOPSG2X7.js → chunk-OML5D5V5.js} +8 -8
  83. package/dist/{chunk-2VG7KLYV.js → chunk-PAJQJ7BS.js} +5816 -3255
  84. package/dist/{chunk-ZW55JB7N.js → chunk-PUVDKJ2Y.js} +2 -2
  85. package/dist/{chunk-BTGG6BG2.js → chunk-QWGDJJYJ.js} +158 -19
  86. package/dist/chunk-R6Q67RJH.js +134 -0
  87. package/dist/{chunk-ZJLUDYFY.js → chunk-RRNP2ANY.js} +6 -6
  88. package/dist/{chunk-PVAMAVBB.js → chunk-RSJ25QSL.js} +102 -2
  89. package/dist/{chunk-NLFAQR7Z.js → chunk-S66XZJOF.js} +3 -23
  90. package/dist/chunk-SKHCAU7K.js +385 -0
  91. package/dist/chunk-SZAA6XDG.js +30 -0
  92. package/dist/{chunk-J4HBWF6Y.js → chunk-TM6LQDI3.js} +131 -28
  93. package/dist/chunk-UOIZ7DA4.js +41 -0
  94. package/dist/{chunk-MA3H6DM5.js → chunk-UPZU6GE4.js} +25 -3
  95. package/dist/{chunk-BWW4HLO4.js → chunk-UXCU4E3T.js} +8 -6
  96. package/dist/{chunk-N5UK64DP.js → chunk-V2ANDPVT.js} +4 -4
  97. package/dist/{chunk-AK5XEFVZ.js → chunk-VA5FNYMT.js} +26 -13
  98. package/dist/{chunk-6VC4OV3Z.js → chunk-VIA6RFQZ.js} +3 -11
  99. package/dist/{chunk-ZAZB4JMW.js → chunk-VKPAQYEB.js} +27 -8
  100. package/dist/{chunk-QKIFBZKT.js → chunk-VW6DOEDG.js} +497 -81
  101. package/dist/{chunk-SCYB3HA4.js → chunk-W6RRQCPQ.js} +63 -19
  102. package/dist/{chunk-2NM363SV.js → chunk-WBKFA554.js} +10 -10
  103. package/dist/{chunk-R32CLGZ6.js → chunk-WCXUNS7U.js} +82 -21
  104. package/dist/{chunk-GPPB3JBE.js → chunk-WRBAGUNF.js} +3 -3
  105. package/dist/{chunk-IXJT6DCX.js → chunk-XIVNBFZS.js} +85 -30
  106. package/dist/{chunk-UEDMSP56.js → chunk-XPWWI35G.js} +417 -201
  107. package/dist/chunk-XRZT5WY5.js +47 -0
  108. package/dist/{chunk-3QSOM6PA.js → chunk-Y3CBHOR6.js} +2 -2
  109. package/dist/{chunk-VXMFAE2W.js → chunk-YPC6ZR5L.js} +19 -6
  110. package/dist/{chunk-AKB4GYDL.js → chunk-YQWYVTMC.js} +5 -5
  111. package/dist/{chunk-6I5ILFOF.js → chunk-ZA4VCIGV.js} +3 -3
  112. package/dist/{chunk-7OBGU7UB.js → chunk-ZDN3Y73Y.js} +12 -18
  113. package/dist/{chunk-3I5NY75V.js → chunk-ZWPRK62N.js} +8 -5
  114. package/dist/cli/index.js +41 -39
  115. package/dist/{clio-IT3G3VQH.js → clio-CMMK4KRR.js} +9 -9
  116. package/dist/{code-nav-RK6S7F6E.js → code-nav-MDZNQS33.js} +89 -21
  117. package/dist/{components-UBWCQSRW.js → components-UCUQ4QXW.js} +4 -4
  118. package/dist/{config-3QZRWZJF.js → config-SVM5P5YI.js} +131 -84
  119. package/dist/{configure-FL7Y3KJF.js → configure-LE3IK2TJ.js} +28 -26
  120. package/dist/{context-5HE7ODYK.js → context-2OHRKS42.js} +69 -64
  121. package/dist/{context-KYQFRVDC.js → context-E3VC7RX5.js} +15 -11
  122. package/dist/{context-XNHL75JV.js → context-VNCR7KAG.js} +93 -65
  123. package/dist/{context-clear-N545L53A.js → context-clear-BW4O37TG.js} +64 -60
  124. package/dist/context-map-COB37XXN.js +505 -0
  125. package/dist/{context-working-set-QHKXSV2F.js → context-working-set-VDS25HXZ.js} +19 -18
  126. package/dist/{dispatch-runner-RGIE5PCT.js → dispatch-runner-5AHT53RF.js} +93 -82
  127. package/dist/{docs-5NAF6AU7.js → docs-PD3EXDKU.js} +21 -20
  128. package/dist/{doctor-ZGPEGHIP.js → doctor-WNNVO6FY.js} +48 -47
  129. package/dist/{eval-GXLL44RD.js → eval-7G7SGAYO.js} +287 -115
  130. package/dist/{eval-inventory-HBWSWQOK.js → eval-inventory-Y6QRFOH5.js} +4 -4
  131. package/dist/{evidence-HWLBRH3Q.js → evidence-VD6736FQ.js} +67 -64
  132. package/dist/{evolve-FTZBMNVW.js → evolve-AL3NGVRL.js} +65 -62
  133. package/dist/{extensions-VHRBEID7.js → extensions-MOVJ32NM.js} +9 -7
  134. package/dist/{fleet-CKZHJWZJ.js → fleet-QZHUMAGI.js} +114 -111
  135. package/dist/{fleet-commands-EXDXBMV6.js → fleet-commands-BAYT5FJZ.js} +10 -10
  136. package/dist/{fleet-decisions-OTHB6KRL.js → fleet-decisions-IREVMRU4.js} +7 -6
  137. package/dist/{fleet-graph-YTEZUCUT.js → fleet-graph-YCTT3HTI.js} +22 -19
  138. package/dist/{fleet-inspect-SS6YMDCK.js → fleet-inspect-QVJTDAVB.js} +58 -55
  139. package/dist/{fleet-preflight-PBY4VYOM.js → fleet-preflight-25QAFPK4.js} +4 -4
  140. package/dist/{fleet-validate-KMEM5L3S.js → fleet-validate-5O57AAJ7.js} +26 -23
  141. package/dist/{fleet-verify-QD5M7E7Q.js → fleet-verify-CPH2W2T6.js} +59 -56
  142. package/dist/{fleet-view-WAMJYNDT.js → fleet-view-SWBR3VGQ.js} +58 -55
  143. package/dist/{init-5XQRBOFV.js → init-J477LKZH.js} +82 -79
  144. package/dist/{interop-34TVO25M.js → interop-3FCM6XLG.js} +11 -11
  145. package/dist/{library-3QY6KF57.js → library-QUQEIUG6.js} +30 -27
  146. package/dist/{memory-L4UTIIIW.js → memory-SGGSEP65.js} +67 -64
  147. package/dist/{models-ZVX3QOWE.js → models-HEKUAXXK.js} +53 -46
  148. package/dist/{monitor-CEKVSYTS.js → monitor-HKU57TYQ.js} +63 -60
  149. package/dist/{orchestrator-77BAP6BC.js → orchestrator-VDFAEFAI.js} +1831 -1057
  150. package/dist/{panes-7STHOAUJ.js → panes-DN2SSFOH.js} +5 -5
  151. package/dist/{panes-SHAUIRXY.js → panes-TALGNPZT.js} +29 -14
  152. package/dist/{paths-L7LGY6RN.js → paths-NBMFAIEZ.js} +5 -5
  153. package/dist/reset-EAJFFJVB.js +344 -0
  154. package/dist/{resources-74GKTLSF.js → resources-OVKSEFVE.js} +29 -20
  155. package/dist/{run-HBAUJNNZ.js → run-7DP7ZF2J.js} +120 -115
  156. package/dist/{share-G3APVLVP.js → share-WML67FT3.js} +32 -27
  157. package/dist/{skills-35HHUKCR.js → skills-SG662R2K.js} +41 -31
  158. package/dist/{skills-eval-QN4HSHDC.js → skills-eval-VVZEUU46.js} +78 -77
  159. package/dist/{skills-inventory-J357J34F.js → skills-inventory-I2E23GET.js} +23 -20
  160. package/dist/{slash-commands-JZZCQA32.js → slash-commands-S7MBJDQK.js} +40 -36
  161. package/dist/{steer-XAVHJM22.js → steer-2LQOMCPB.js} +3 -3
  162. package/dist/{support-U7QOWY26.js → support-CC2UJBJ6.js} +6 -6
  163. package/dist/{targets-DSM6CY3M.js → targets-4QC3HIEW.js} +54 -54
  164. package/dist/{terminal-lease-JOPFUVEM.js → terminal-lease-TUHIJ6Y2.js} +5 -5
  165. package/dist/{tools-MKNWVPBH.js → tools-TFGJICCU.js} +10 -10
  166. package/dist/{trace-ECQ7TIYZ.js → trace-FXMXUZUF.js} +55 -7
  167. package/dist/uninstall-5PEVOE5B.js +408 -0
  168. package/dist/upgrade-M4WXY6KN.js +303 -0
  169. package/dist/{usage-X52N3IDJ.js → usage-N7ZNVLEM.js} +151 -104
  170. package/dist/{verifiers-EJTVVSMA.js → verifiers-DJTP4XX6.js} +15 -15
  171. package/dist/{verify-YJL6XET2.js → verify-RWE4PPEK.js} +9 -9
  172. package/dist/{web-fetch-MPIFL3LL.js → web-fetch-MPARV2K7.js} +2 -2
  173. package/dist/{wiki-generate-4NDZTQ4B.js → wiki-generate-C7IQOXSP.js} +89 -86
  174. package/dist/{with-panes-OBOBFIIR.js → with-panes-4GCGSL7J.js} +53 -257
  175. package/dist/worker/entry.js +90 -74
  176. package/docs/README.md +176 -81
  177. package/docs/{acp.md → architecture/acp.md} +36 -20
  178. package/docs/{alcf-provider.md → architecture/alcf-provider.md} +8 -5
  179. package/docs/{architecture.md → architecture/architecture.md} +43 -22
  180. package/docs/{artifact-placement.md → architecture/artifact-placement.md} +27 -23
  181. package/docs/architecture/artifact-versions.md +90 -0
  182. package/docs/{capacity-and-scheduling.md → architecture/capacity-and-scheduling.md} +26 -13
  183. package/docs/{context-engine.md → architecture/context-engine.md} +29 -25
  184. package/docs/{context-working-set.md → architecture/context-working-set.md} +13 -10
  185. package/docs/{dispatch-architecture-rationale.md → architecture/dispatch-architecture-rationale.md} +12 -9
  186. package/docs/{dispatch-typed-intent.md → architecture/dispatch-typed-intent.md} +68 -46
  187. package/docs/{evidence-and-memory.md → architecture/evidence-and-memory.md} +23 -16
  188. package/docs/{middleware-and-components.md → architecture/middleware-and-components.md} +11 -5
  189. package/docs/{model-catalog.md → architecture/model-catalog.md} +61 -27
  190. package/docs/{observability.md → architecture/observability.md} +38 -14
  191. package/docs/{pi-boundary.md → architecture/pi-boundary.md} +24 -11
  192. package/docs/{prompt-envelope-and-tools.md → architecture/prompt-envelope-and-tools.md} +57 -20
  193. package/docs/{provider-adapter-cookbook.md → architecture/provider-adapter-cookbook.md} +99 -25
  194. package/docs/{safety-model.md → architecture/safety-model.md} +35 -20
  195. package/docs/{session-lifecycle.md → architecture/session-lifecycle.md} +8 -5
  196. package/docs/architecture/time-conventions.md +125 -0
  197. package/docs/{trace-store.md → architecture/trace-store.md} +13 -5
  198. package/docs/{tui-design.md → architecture/tui-design.md} +13 -13
  199. package/docs/{worker-dispatch-mechanics.md → architecture/worker-dispatch-mechanics.md} +27 -30
  200. package/docs/{built-in-agents.md → guide/built-in-agents.md} +65 -35
  201. package/docs/{commands-and-modes.md → guide/commands-and-modes.md} +66 -61
  202. package/docs/{configuration-and-targets.md → guide/configuration-and-targets.md} +323 -297
  203. package/docs/guide/configuration-reference.md +1163 -0
  204. package/docs/{environment-variables.md → guide/environment-variables.md} +33 -28
  205. package/docs/{exit-codes-and-output.md → guide/exit-codes-and-output.md} +6 -3
  206. package/docs/{extensions-and-sharing.md → guide/extensions-and-sharing.md} +41 -14
  207. package/docs/{fleet-dispatch.md → guide/fleet-dispatch.md} +39 -43
  208. package/docs/{glossary.md → guide/glossary.md} +14 -11
  209. package/docs/{installation-and-lifecycle.md → guide/installation-and-lifecycle.md} +81 -17
  210. package/docs/guide/panes-and-files.md +290 -0
  211. package/docs/{proactive-memory.md → guide/proactive-memory.md} +131 -107
  212. package/docs/{resource-library.md → guide/resource-library.md} +13 -4
  213. package/docs/{skills-marketplace.md → guide/skills-marketplace.md} +25 -3
  214. package/docs/{tool-usage.md → guide/tool-usage.md} +87 -23
  215. package/docs/{troubleshooting.md → guide/troubleshooting.md} +9 -4
  216. package/docs/{config-knobs-audit.md → history/config-knobs-audit.md} +11 -11
  217. package/docs/{release-cut-checklist.md → history/release-cut-checklist.md} +29 -2
  218. package/docs/process/development-pipeline.md +152 -0
  219. package/docs/process/documentation-coverage.md +100 -0
  220. package/docs/process/documentation-guide.md +187 -0
  221. package/docs/{eval-runner.md → process/eval-runner.md} +108 -53
  222. package/docs/{evals-internal.md → process/evals-internal.md} +10 -10
  223. package/docs/{evolution.md → process/evolution.md} +2 -2
  224. package/docs/{fleet-demo-runbook.md → process/fleet-demo-runbook.md} +11 -7
  225. package/docs/{git-commit-provenance.md → process/git-commit-provenance.md} +11 -4
  226. package/docs/{performance-methodology.md → process/performance-methodology.md} +87 -69
  227. package/docs/{scientific-validation.md → process/scientific-validation.md} +4 -4
  228. package/evals/README.md +2 -2
  229. package/evals/behavioral-model.yaml +3 -2
  230. package/package.json +10 -8
  231. package/skills/README.md +52 -41
  232. package/skills/coding/ast-grep/SKILL.md +102 -31
  233. package/skills/coding/ast-grep/evals.md +26 -0
  234. package/skills/coding/coding-standards/SKILL.md +41 -6
  235. package/skills/coding/coding-standards/evals.md +23 -0
  236. package/skills/coding/prototype/SKILL.md +88 -29
  237. package/skills/coding/prototype/evals.md +19 -0
  238. package/skills/coding/tdd/SKILL.md +81 -54
  239. package/skills/coding/tdd/evals.md +20 -0
  240. package/skills/context/context-handoff/SKILL.md +44 -3
  241. package/skills/context/context-handoff/evals.md +44 -0
  242. package/skills/context/context-prime/SKILL.md +46 -16
  243. package/skills/context/context-prime/evals.md +45 -0
  244. package/skills/git/branch-closeout/SKILL.md +132 -0
  245. package/skills/git/branch-closeout/evals.md +133 -0
  246. package/skills/git/branch-closeout/references/closeout-checklist.md +81 -0
  247. package/skills/git/file-ticket/SKILL.md +78 -64
  248. package/skills/git/file-ticket/assets/issue-template.md +22 -0
  249. package/skills/git/file-ticket/evals.md +31 -26
  250. package/skills/git/file-ticket/references/issue-discovery.md +49 -0
  251. package/skills/git/fix-issue/SKILL.md +88 -65
  252. package/skills/git/fix-issue/evals.md +35 -31
  253. package/skills/git/fix-issue/references/diagnosis-and-rca.md +46 -0
  254. package/skills/git/resolve-merge-conflicts/SKILL.md +101 -52
  255. package/skills/git/resolve-merge-conflicts/evals.md +52 -25
  256. package/skills/git/resolve-merge-conflicts/references/conflict-matrix.md +126 -0
  257. package/skills/git/ship/SKILL.md +103 -67
  258. package/skills/git/ship/assets/pr-template.md +21 -0
  259. package/skills/git/ship/evals.md +44 -28
  260. package/skills/git/ship/references/remote-and-branch-policy.md +62 -0
  261. package/skills/git/worktree-create/SKILL.md +80 -50
  262. package/skills/git/worktree-create/evals.md +40 -33
  263. package/skills/git/worktree-create/references/worktree-setup.md +62 -66
  264. package/skills/git/worktree-merge/SKILL.md +112 -65
  265. package/skills/git/worktree-merge/evals.md +42 -34
  266. package/skills/git/worktree-merge/references/merge-strategies.md +52 -0
  267. package/skills/meta/clio-coder-dev/SKILL.md +9 -5
  268. package/skills/meta/clio-coder-dev/evals.md +3 -2
  269. package/skills/meta/clio-coder-test/SKILL.md +102 -95
  270. package/skills/meta/clio-coder-test/evals.md +9 -4
  271. package/skills/meta/clio-coder-test/references/harness.md +100 -124
  272. package/skills/meta/clio-coder-test/references/test-map.md +77 -50
  273. package/skills/meta/credentials/SKILL.md +2 -2
  274. package/skills/meta/find-skills/SKILL.md +2 -2
  275. package/skills/meta/herdr/SKILL.md +2 -2
  276. package/skills/meta/skill-craft/SKILL.md +22 -16
  277. package/skills/planning/archify/SKILL.md +196 -0
  278. package/skills/planning/archify/evals.md +65 -0
  279. package/skills/planning/architecture/SKILL.md +62 -13
  280. package/skills/planning/architecture/evals.md +65 -0
  281. package/skills/planning/backlog/SKILL.md +131 -15
  282. package/skills/planning/backlog/evals.md +142 -0
  283. package/skills/planning/prd/SKILL.md +47 -7
  284. package/skills/planning/prd/evals.md +54 -0
  285. package/skills/planning/product-intent/SKILL.md +58 -3
  286. package/skills/planning/product-intent/evals.md +70 -0
  287. package/skills/planning/tech-spec/SKILL.md +54 -3
  288. package/skills/planning/tech-spec/evals.md +73 -0
  289. package/skills/registry.yaml +70 -62
  290. package/skills/remote.yaml +13 -0
  291. package/skills/research/arxiv-literature/SKILL.md +77 -19
  292. package/skills/research/arxiv-literature/evals.md +50 -0
  293. package/skills/research/experiment-protocol/SKILL.md +21 -2
  294. package/skills/research/experiment-protocol/evals.md +23 -0
  295. package/skills/research/scientific-debugging/SKILL.md +24 -2
  296. package/skills/research/scientific-debugging/evals.md +18 -0
  297. package/skills/research/scientific-modernization/SKILL.md +27 -2
  298. package/skills/research/scientific-modernization/evals.md +27 -0
  299. package/skills/skill-marketplace.json +97 -62
  300. package/skills/workflow/cut-it/SKILL.md +66 -6
  301. package/skills/workflow/cut-it/evals.md +101 -0
  302. package/skills/workflow/design-council/SKILL.md +118 -28
  303. package/skills/workflow/design-council/evals.md +161 -0
  304. package/skills/workflow/grill-me/SKILL.md +87 -11
  305. package/skills/workflow/grill-me/evals.md +153 -0
  306. package/skills/workflow/workflow-distiller/SKILL.md +77 -18
  307. package/skills/workflow/workflow-distiller/evals.md +118 -0
  308. package/src/cli/args.ts +2 -2
  309. package/src/cli/bootstrap-generate.ts +1 -1
  310. package/src/cli/config-inspect.ts +65 -12
  311. package/src/cli/configure-interop.ts +105 -13
  312. package/src/cli/configure-oauth.ts +57 -0
  313. package/src/cli/configure-onboarding.ts +980 -0
  314. package/src/cli/configure-target.ts +594 -0
  315. package/src/cli/configure.ts +1082 -532
  316. package/src/cli/context-map.ts +114 -0
  317. package/src/cli/context.ts +4 -0
  318. package/src/cli/docs.ts +22 -14
  319. package/src/cli/doctor-naming.ts +5 -5
  320. package/src/cli/doctor-toolchain.ts +3 -3
  321. package/src/cli/eval.ts +1 -2
  322. package/src/cli/extensions.ts +2 -1
  323. package/src/cli/fleet.ts +1 -1
  324. package/src/cli/index.ts +3 -1
  325. package/src/cli/internal-dispatch.ts +3 -4
  326. package/src/cli/lifecycle-presenter.ts +436 -0
  327. package/src/cli/models.ts +10 -2
  328. package/src/cli/modes/print.ts +5 -1
  329. package/src/cli/panes.ts +19 -5
  330. package/src/cli/reset.ts +228 -106
  331. package/src/cli/run.ts +9 -4
  332. package/src/cli/select.ts +664 -0
  333. package/src/cli/share.ts +5 -1
  334. package/src/cli/skills-eval.ts +3 -3
  335. package/src/cli/skills.ts +9 -2
  336. package/src/cli/targets.ts +5 -6
  337. package/src/cli/trace.ts +55 -4
  338. package/src/cli/uninstall.ts +233 -165
  339. package/src/cli/upgrade.ts +204 -149
  340. package/src/cli/usage.ts +86 -27
  341. package/src/cli/validate-model.ts +3 -3
  342. package/src/cli/wiki-generate.ts +1 -1
  343. package/src/core/artifact-paths.ts +1 -1
  344. package/src/core/bash-exec.ts +131 -86
  345. package/src/core/bus-events.ts +51 -6
  346. package/src/core/config.ts +61 -1
  347. package/src/core/defaults.ts +7 -4
  348. package/src/core/dispatch-outcome.ts +16 -0
  349. package/src/core/external-diagnostic.ts +44 -0
  350. package/src/core/gateway-routing.ts +157 -0
  351. package/src/core/guardrails.ts +10 -49
  352. package/src/core/prompt-hint.ts +9 -0
  353. package/src/core/safe-exec.ts +17 -2
  354. package/src/core/skill-activation.ts +89 -2
  355. package/src/domains/agents/builtins/architect.md +2 -3
  356. package/src/domains/agents/builtins/coder.md +3 -2
  357. package/src/domains/agents/builtins/debugger.md +2 -2
  358. package/src/domains/agents/builtins/documenter.md +2 -2
  359. package/src/domains/agents/builtins/git-master.md +1 -1
  360. package/src/domains/agents/builtins/oracle.md +1 -1
  361. package/src/domains/agents/builtins/provenance.md +1 -1
  362. package/src/domains/agents/builtins/researcher.md +1 -1
  363. package/src/domains/agents/builtins/scout.md +1 -1
  364. package/src/domains/agents/builtins/tester.md +2 -2
  365. package/src/domains/agents/builtins/verifier.md +2 -2
  366. package/src/domains/agents/builtins/wiki-writer.md +1 -1
  367. package/src/domains/agents/builtins/world-knowledge.md +31 -0
  368. package/src/domains/agents/catalog.ts +13 -15
  369. package/src/domains/agents/contract.ts +2 -0
  370. package/src/domains/agents/extension.ts +23 -1
  371. package/src/domains/agents/result-contract.ts +70 -0
  372. package/src/domains/config/keybindings.ts +8 -0
  373. package/src/domains/context/extension.ts +0 -3
  374. package/src/domains/context/wiki/map-seed.ts +589 -0
  375. package/src/domains/context/wiki/plan.ts +2 -2
  376. package/src/domains/context/working-set/path-index.ts +1 -0
  377. package/src/domains/dispatch/admission.ts +29 -0
  378. package/src/domains/dispatch/agent-candidates.ts +10 -0
  379. package/src/domains/dispatch/budget-envelope.ts +86 -1
  380. package/src/domains/dispatch/capability-match.ts +11 -0
  381. package/src/domains/dispatch/capacity-lease.ts +17 -0
  382. package/src/domains/dispatch/contract.ts +11 -1
  383. package/src/domains/dispatch/extension.ts +237 -49
  384. package/src/domains/dispatch/host-verification.ts +435 -39
  385. package/src/domains/dispatch/intent-requirements.ts +10 -0
  386. package/src/domains/dispatch/intent.ts +18 -1
  387. package/src/domains/dispatch/path-scope.ts +235 -24
  388. package/src/domains/dispatch/run-event-journal.ts +4 -15
  389. package/src/domains/dispatch/state.ts +2 -3
  390. package/src/domains/dispatch/transport.ts +45 -21
  391. package/src/domains/dispatch/types.ts +58 -3
  392. package/src/domains/dispatch/worker-model-metadata.ts +38 -0
  393. package/src/domains/eval/artifacts/store.ts +5 -0
  394. package/src/domains/eval/metrics/call-ledger-stream.ts +34 -11
  395. package/src/domains/eval/metrics/token-stream.ts +201 -31
  396. package/src/domains/eval/metrics/tracked.ts +40 -4
  397. package/src/domains/eval/runners/clio-run.ts +5 -2
  398. package/src/domains/eval/schema/suite.ts +28 -0
  399. package/src/domains/eval/schema/verdict.ts +2 -2
  400. package/src/domains/eval/store.ts +8 -1
  401. package/src/domains/eval/suites/resolve.ts +13 -1
  402. package/src/domains/eval/suites/run.ts +24 -3
  403. package/src/domains/evidence/trust-status.ts +10 -1
  404. package/src/domains/extensions/contract.ts +15 -1
  405. package/src/domains/extensions/discovery.ts +238 -41
  406. package/src/domains/extensions/extension.ts +105 -6
  407. package/src/domains/extensions/index.ts +24 -0
  408. package/src/domains/extensions/integrity.ts +189 -0
  409. package/src/domains/extensions/manager.ts +17 -1
  410. package/src/domains/extensions/resource-path.ts +27 -0
  411. package/src/domains/extensions/resources.ts +18 -38
  412. package/src/domains/extensions/snapshot-store.ts +39 -0
  413. package/src/domains/extensions/snapshot.ts +180 -0
  414. package/src/domains/extensions/state.ts +385 -57
  415. package/src/domains/extensions/types.ts +118 -1
  416. package/src/domains/interop/registry.ts +6 -2
  417. package/src/domains/interop/types.ts +4 -0
  418. package/src/domains/lifecycle/migrations/2026-09-01-extension-install-digests.ts +27 -0
  419. package/src/domains/lifecycle/migrations/index.ts +6 -0
  420. package/src/domains/lifecycle/naming-resources.ts +19 -4
  421. package/src/domains/lifecycle/naming-yazi.ts +10 -5
  422. package/src/domains/memory/task-memory-policy.ts +70 -26
  423. package/src/domains/memory/task-memory-telemetry.ts +1 -0
  424. package/src/domains/middleware/contract.ts +26 -0
  425. package/src/domains/middleware/extension.ts +24 -24
  426. package/src/domains/middleware/hook-receipts.ts +27 -4
  427. package/src/domains/middleware/hooks-io.ts +65 -32
  428. package/src/domains/middleware/hooks.ts +64 -0
  429. package/src/domains/middleware/index.ts +28 -5
  430. package/src/domains/middleware/marketplace-offer.ts +3 -35
  431. package/src/domains/middleware/memory-intervention.ts +127 -32
  432. package/src/domains/middleware/memory-step-endpoint.ts +3 -2
  433. package/src/domains/middleware/registrations.ts +326 -0
  434. package/src/domains/middleware/runtime.ts +28 -0
  435. package/src/domains/middleware/skills-reminder.ts +31 -2
  436. package/src/domains/middleware/snapshot.ts +20 -7
  437. package/src/domains/mux/contract.ts +38 -0
  438. package/src/domains/mux/detect.ts +6 -13
  439. package/src/domains/mux/index.ts +1 -1
  440. package/src/domains/mux/operations.ts +44 -5
  441. package/src/domains/mux/yazi/assets/yazi.toml +2 -2
  442. package/src/domains/mux/yazi/session.ts +53 -4
  443. package/src/domains/mux/yazi/theme.ts +117 -17
  444. package/src/domains/observability/compaction-usage.ts +118 -0
  445. package/src/domains/observability/contract.ts +10 -11
  446. package/src/domains/observability/cost.ts +1 -1
  447. package/src/domains/observability/extension.ts +17 -4
  448. package/src/domains/observability/out-of-turn-usage.ts +52 -21
  449. package/src/domains/observability/projection.ts +14 -90
  450. package/src/domains/observability/trace-store.ts +43 -7
  451. package/src/domains/prompts/compiler.ts +73 -53
  452. package/src/domains/prompts/contract.ts +15 -3
  453. package/src/domains/prompts/extension.ts +97 -9
  454. package/src/domains/prompts/fragments/identity/clio-worker.md +1 -3
  455. package/src/domains/prompts/fragments/identity/clio.md +6 -12
  456. package/src/domains/prompts/fragments/identity/docs-routing.md +1 -2
  457. package/src/domains/prompts/fragments/identity/self-awareness.md +3 -11
  458. package/src/domains/prompts/fragments/operating/contract.md +7 -15
  459. package/src/domains/prompts/fragments/operating/delegation.md +32 -34
  460. package/src/domains/prompts/fragments/operating/skills.md +10 -24
  461. package/src/domains/prompts/fragments/operating/worker.md +1 -8
  462. package/src/domains/providers/contract.ts +4 -1
  463. package/src/domains/providers/extension.ts +40 -9
  464. package/src/domains/providers/index.ts +1 -1
  465. package/src/domains/providers/model-capabilities.ts +9 -0
  466. package/src/domains/providers/model-discovery.ts +2 -0
  467. package/src/domains/providers/model-runtime-capabilities.ts +99 -25
  468. package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +699 -114
  469. package/src/domains/providers/runtime-resolution.ts +31 -0
  470. package/src/domains/providers/runtimes/antigravity/antigravity-code.ts +225 -45
  471. package/src/domains/providers/runtimes/common/lmstudio-http.ts +6 -2
  472. package/src/domains/providers/runtimes/common/local-synth.ts +2 -0
  473. package/src/domains/providers/runtimes/common/probe-helpers.ts +7 -2
  474. package/src/domains/providers/runtimes/local-native/llamacpp.ts +9 -1
  475. package/src/domains/providers/runtimes/protocol/litellm.ts +119 -29
  476. package/src/domains/providers/support.ts +11 -5
  477. package/src/domains/providers/target-model-cache.ts +25 -2
  478. package/src/domains/providers/types/capability-flags.ts +2 -0
  479. package/src/domains/providers/types/cost-provenance.ts +19 -0
  480. package/src/domains/providers/types/local-model-quirks.ts +85 -37
  481. package/src/domains/providers/types/runtime-descriptor.ts +20 -1
  482. package/src/domains/providers/types/target-descriptor.ts +19 -0
  483. package/src/domains/resources/index.ts +3 -0
  484. package/src/domains/resources/skills/install.ts +72 -7
  485. package/src/domains/resources/skills/loader.ts +23 -19
  486. package/src/domains/resources/skills/marketplace.ts +63 -11
  487. package/src/domains/safety/autonomy.ts +15 -0
  488. package/src/domains/safety/call-target.ts +1 -1
  489. package/src/domains/safety/index.ts +1 -0
  490. package/src/domains/safety/loop-detector.ts +7 -4
  491. package/src/domains/safety/path-policy.ts +1 -1
  492. package/src/domains/safety/policy-engine.ts +34 -11
  493. package/src/domains/safety/protected-artifacts.ts +191 -88
  494. package/src/domains/safety/run-effects.ts +2 -22
  495. package/src/domains/safety/skill-authority.ts +55 -0
  496. package/src/domains/session/compaction/compact.ts +72 -22
  497. package/src/domains/session/entries.ts +6 -0
  498. package/src/domains/session/task-board.ts +10 -9
  499. package/src/domains/session/usage.ts +3 -3
  500. package/src/domains/share/archive.ts +164 -7
  501. package/src/engine/acp/server.ts +62 -9
  502. package/src/engine/agent.ts +13 -3
  503. package/src/engine/ai.ts +26 -8
  504. package/src/engine/antigravity/subprocess-runtime.ts +386 -120
  505. package/src/engine/api-registry.ts +3 -0
  506. package/src/engine/apis/llamacpp-residency.ts +3 -4
  507. package/src/engine/apis/lmstudio.ts +3 -3
  508. package/src/engine/apis/ollama-native.ts +6 -6
  509. package/src/engine/apis/openai-completions.ts +145 -39
  510. package/src/engine/apis/output-budget.ts +8 -18
  511. package/src/engine/apis/residency.ts +8 -27
  512. package/src/engine/external-subprocess.ts +114 -6
  513. package/src/engine/gemma-channel-filter.ts +19 -0
  514. package/src/engine/loop-guard.ts +92 -12
  515. package/src/engine/worker-runtime.ts +40 -11
  516. package/src/engine/worker-tools.ts +3 -1
  517. package/src/entry/background-model-metadata.ts +18 -0
  518. package/src/entry/compaction-prompt.ts +57 -0
  519. package/src/entry/extension-hook-sources.ts +28 -0
  520. package/src/entry/extension-reload.ts +309 -0
  521. package/src/entry/orchestrator.ts +464 -251
  522. package/src/entry/task-memory-lifecycle.ts +35 -0
  523. package/src/interactive/application-controller.ts +2 -1
  524. package/src/interactive/bus-notices.ts +8 -1
  525. package/src/interactive/chat-loop-messages.ts +16 -17
  526. package/src/interactive/chat-loop.ts +75 -3
  527. package/src/interactive/chat-panel.ts +36 -13
  528. package/src/interactive/chat-renderer.ts +72 -7
  529. package/src/interactive/cost-overlay.ts +26 -2
  530. package/src/interactive/dispatch-board.ts +6 -11
  531. package/src/interactive/footer/widgets.ts +13 -0
  532. package/src/interactive/interactive-application.ts +39 -4
  533. package/src/interactive/interactive-input-runtime.ts +4 -0
  534. package/src/interactive/interactive-presentation.ts +2 -2
  535. package/src/interactive/interactive-slash-runtime.ts +4 -1
  536. package/src/interactive/overlays/extensions.ts +9 -1
  537. package/src/interactive/overlays/help-reference.ts +13 -0
  538. package/src/interactive/overlays/settings.ts +27 -16
  539. package/src/interactive/panes-runtime.ts +111 -35
  540. package/src/interactive/prompt-cache-identity.ts +88 -0
  541. package/src/interactive/renderers/worker-entry.ts +32 -0
  542. package/src/interactive/slash-commands.ts +153 -20
  543. package/src/interactive/stream-pacing-policy.ts +0 -23
  544. package/src/interactive/theme/labels.ts +19 -13
  545. package/src/interactive/turn-context.ts +39 -20
  546. package/src/interactive/turn-recovery.ts +8 -0
  547. package/src/interactive/turn-runtime.ts +27 -11
  548. package/src/interactive/turn-state.ts +7 -0
  549. package/src/interactive/worker-receipts.ts +1 -0
  550. package/src/interactive/worker-stream.ts +6 -1
  551. package/src/interactive/yazi-bridge.ts +60 -6
  552. package/src/tools/agent-tools.ts +30 -1
  553. package/src/tools/artifact.ts +2 -2
  554. package/src/tools/ask-user.ts +3 -3
  555. package/src/tools/bash.ts +1 -1
  556. package/src/tools/bootstrap.ts +4 -0
  557. package/src/tools/builtin-tool-catalog.ts +52 -22
  558. package/src/tools/codewiki/code-nav-surface.ts +6 -0
  559. package/src/tools/codewiki/code-nav.ts +99 -13
  560. package/src/tools/context/docs-engine.ts +20 -7
  561. package/src/tools/context/index.ts +59 -21
  562. package/src/tools/core-bootstrap.ts +28 -6
  563. package/src/tools/credential-present.ts +1 -2
  564. package/src/tools/dispatch-arguments.ts +6 -1
  565. package/src/tools/dispatch-event-text.ts +10 -0
  566. package/src/tools/dispatch-plan.ts +49 -4
  567. package/src/tools/dispatch-run-events.ts +1 -1
  568. package/src/tools/dispatch-runner.ts +12 -0
  569. package/src/tools/dispatch-schema.ts +338 -0
  570. package/src/tools/dispatch-types.ts +3 -0
  571. package/src/tools/dispatch.ts +9 -254
  572. package/src/tools/ledger.ts +3 -5
  573. package/src/tools/monitor-surface.ts +5 -13
  574. package/src/tools/observation.ts +4 -5
  575. package/src/tools/panes-surface.ts +4 -11
  576. package/src/tools/panes.ts +4 -2
  577. package/src/tools/policy.ts +15 -2
  578. package/src/tools/read.ts +5 -6
  579. package/src/tools/registry.ts +41 -12
  580. package/src/tools/result-shaping.ts +18 -14
  581. package/src/tools/steer-surface.ts +1 -1
  582. package/src/tools/tasks.ts +1 -1
  583. package/src/tools/truncate.ts +6 -5
  584. package/src/tools/verify/surface.ts +6 -12
  585. package/src/tools/web-fetch-surface.ts +1 -3
  586. package/src/tools/worker-evidence.ts +3 -1
  587. package/src/worker/spec-contract.ts +4 -0
  588. package/dist/builtins-UJLMOVOV.js +0 -17
  589. package/dist/chunk-5QIAJV2D.js +0 -48
  590. package/dist/chunk-JZWT5J3Y.js +0 -814
  591. package/dist/chunk-K7VKOLQQ.js +0 -15
  592. package/dist/chunk-PMZCIOCJ.js +0 -25
  593. package/dist/chunk-SUW5DORT.js +0 -819
  594. package/dist/chunk-UOV2BYIW.js +0 -107
  595. package/dist/chunk-WR6U3OVP.js +0 -45
  596. package/dist/chunk-Y45G3AXC.js +0 -1558
  597. package/dist/reset-EOLM7GVE.js +0 -230
  598. package/dist/uninstall-N34PCTGJ.js +0 -331
  599. package/dist/upgrade-H7TOM7YL.js +0 -323
  600. package/docs/artifact-versions.md +0 -67
  601. package/docs/development-pipeline.md +0 -121
  602. package/docs/documentation-coverage.md +0 -46
  603. package/docs/documentation-guide.md +0 -167
  604. package/docs/time-conventions.md +0 -101
@@ -1,6 +1,8 @@
1
1
  import { join } from "node:path";
2
2
  import { resolvePackageRoot } from "../../core/package-root.js";
3
+ import { normalizePromptHint } from "../../core/prompt-hint.js";
3
4
  import type { ToolName } from "../../core/tool-names.js";
5
+ import { resolveClioDirs } from "../../core/xdg.js";
4
6
  import type { AutonomyLevel } from "../safety/autonomy.js";
5
7
  import { ceilChars } from "../session/context-accounting.js";
6
8
  import type { FragmentTable, LoadedFragment } from "./fragment-loader.js";
@@ -147,13 +149,6 @@ export interface CompiledSessionPrompt {
147
149
  operatorProfileApplied?: boolean;
148
150
  }
149
151
 
150
- export const FLEET_ROUTING_GUIDANCE_MAX_BYTES = 320;
151
- // Points at the Fleet section rather than describing routing in the abstract:
152
- // `agent:"auto"` baselines by task shape and can still land on a worker whose
153
- // capability class is wrong for the job, so a pinned id is the reliable path.
154
- export const FLEET_ROUTING_GUIDANCE =
155
- 'Fleet routing: pin the `agent` id from the Fleet section; agent:"auto" baselines from the task text and is a fallback, not a router.';
156
-
157
152
  /**
158
153
  * Worker-side mirror of the parent's `SPOT_CHECK_GUIDANCE`. The parent sentence
159
154
  * demonstrably works: in the E19 drive it is what caught a verifier reporting a
@@ -234,7 +229,7 @@ function renderRuntimeBlock(inputs: SessionPromptInputs): string {
234
229
  */
235
230
  function sessionCanDispatch(inputs: SessionPromptInputs): boolean {
236
231
  if (inputs.providerSupportsTools === false) return false;
237
- return toolSurfaceHasTool(inputs.toolNames, inputs.toolPromptHints, "dispatch");
232
+ return toolSurfaceHasTool(inputs.toolNames, "dispatch");
238
233
  }
239
234
 
240
235
  /**
@@ -245,18 +240,38 @@ function sessionCanDispatch(inputs: SessionPromptInputs): boolean {
245
240
  */
246
241
  function sessionHasContext(inputs: SessionPromptInputs): boolean {
247
242
  if (inputs.providerSupportsTools === false) return false;
248
- return toolSurfaceHasTool(inputs.toolNames, inputs.toolPromptHints, "context");
243
+ return toolSurfaceHasTool(inputs.toolNames, "context");
249
244
  }
250
245
 
251
- /** One lookup for every "is this tool on the surface" predicate, over names and hints alike. */
252
- function toolSurfaceHasTool(
253
- toolNames: ReadonlyArray<string> | undefined,
254
- toolPromptHints: ReadonlyArray<ToolPromptHint> | undefined,
255
- tool: string,
256
- ): boolean {
246
+ /** Tool names come from attached schemas; hints never manufacture a surface. */
247
+ function toolSurfaceHasTool(toolNames: ReadonlyArray<string> | undefined, tool: string): boolean {
257
248
  const names = new Set((toolNames ?? []).map((name) => name.trim()));
258
- const hinted = new Set((toolPromptHints ?? []).map((entry) => entry.tool.trim()));
259
- return names.has(tool) || hinted.has(tool);
249
+ return names.has(tool);
250
+ }
251
+
252
+ /** Normalize, sort, and exact-deduplicate caller-provided tool guidance. */
253
+ function canonicalToolPromptHints(
254
+ entries: ReadonlyArray<ToolPromptHint>,
255
+ admitted: ReadonlySet<string>,
256
+ ): Array<{ tool: string; hint: string }> {
257
+ const normalized = entries
258
+ .map((entry) => ({
259
+ tool: entry.tool.trim(),
260
+ hint: normalizePromptHint(entry.hint) ?? "",
261
+ }))
262
+ .filter((entry) => admitted.has(entry.tool) && entry.hint.length > 0)
263
+ .sort((a, b) => {
264
+ if (a.tool !== b.tool) return a.tool < b.tool ? -1 : 1;
265
+ return a.hint < b.hint ? -1 : a.hint > b.hint ? 1 : 0;
266
+ });
267
+ const seenTools = new Set<string>();
268
+ const seenHints = new Set<string>();
269
+ return normalized.filter((entry) => {
270
+ if (seenTools.has(entry.tool) || seenHints.has(entry.hint)) return false;
271
+ seenTools.add(entry.tool);
272
+ seenHints.add(entry.hint);
273
+ return true;
274
+ });
260
275
  }
261
276
 
262
277
  function renderFleetBlock(inputs: SessionPromptInputs): string {
@@ -277,44 +292,55 @@ function renderToolContractBlock(inputs: SessionPromptInputs): string {
277
292
  ].sort();
278
293
  const canDispatch = sessionCanDispatch(inputs);
279
294
  const canListSkills = sessionHasContext(inputs);
295
+ // Asked twice in one session which tools it had, a live model gave two
296
+ // different answers and invented `web_find`. The authoritative list is one
297
+ // line above; pointing at it beats letting the model recall the schemas.
298
+ const admitted = new Set(names);
280
299
  const inventoryGuidance = [
281
- // Asked twice in one session which tools it had, a live model gave two
282
- // different answers and invented `web_find`. The authoritative list is one
283
- // line above; pointing at it beats letting the model recall the schemas.
284
- "When answering capability-inventory questions, copy the Direct tools line above verbatim rather than recalling the attached schemas, and make no calls",
285
- ...(canDispatch ? ["add dispatch(list:true) only if agents or the fleet are requested"] : []),
286
- ...(canListSkills
287
- ? ['add context(scope="skills") only if skills are requested (it lists installed and marketplace skills)']
300
+ "When asked what tools you have, copy the Direct tools line verbatim and call nothing",
301
+ ...(canDispatch
302
+ ? [
303
+ "dispatch(list:true) answers a question about agents, the fleet, or which target and model run this session and its workers",
304
+ ]
288
305
  : []),
306
+ ...(canListSkills ? ['context(scope="skills") answers only a question about skills'] : []),
289
307
  ].join("; ");
308
+ const capabilityKinds = [
309
+ "direct tools are attached schemas",
310
+ ...(canDispatch ? ["fleet agents are workers behind dispatch"] : []),
311
+ ...(canListSkills ? ["skills are operator-activated workflows reached through context"] : []),
312
+ ];
313
+ const orientationTools = ["context", "code_nav", "grep", "read"].filter((name) => admitted.has(name));
314
+ const validationTools = ["verify", "git"].filter((name) => admitted.has(name));
290
315
  const lines = [
291
316
  "# Tool Contract",
292
317
  "The attached schemas are the session's complete direct-tool surface; follow each schema exactly.",
293
318
  ...(names.length > 0 ? [`Direct tools: ${names.map((name) => `\`${name}\``).join(", ")}.`] : []),
294
- "Harness model: direct tools are attached schemas; fleet agents are workers behind dispatch; skills are operator-activated workflows reached through context. Keep these capability sets distinct.",
319
+ `Harness model: ${capabilityKinds.join("; ")}. Keep these capability sets distinct.`,
295
320
  `${inventoryGuidance}.`,
296
- "Call tools only for concrete inspection or changes the task requires. If the user asks for a tool-free answer, simply answer without calling tools.",
321
+ "Call tools only for concrete inspection or changes the task requires; a tool-free question gets a tool-free answer.",
297
322
  // The tool-specific instantiation of the operating contract's "narrow
298
323
  // work: inspect directly" rule; the contract cannot name tools.
299
324
  // Delegation, the tasks board, and skills are not restated here: the
300
- // Delegation and Skills passages and the registry hints carry them, and
301
- // each renders exactly when its tool does.
302
- 'For narrow file or symbol orientation, prefer context(scope="workspace"), code_nav, grep, and read instead of assuming source-tree details were preloaded.',
303
- "Validate with verify or git diff before final claims.",
304
- 'When a tool call fails or is rejected, do not retry the same shape blindly: re-read the schema, adjust the arguments, or query context(scope="docs") for that tool\'s usage.',
325
+ // Delegation, Fleet, and Skills passages and the registry hints carry
326
+ // them, and each renders exactly when its tool does.
327
+ ...(orientationTools.length > 0
328
+ ? [
329
+ `For narrow file or symbol orientation, prefer ${orientationTools.join(", ")} instead of assuming source-tree details were preloaded.`,
330
+ ]
331
+ : []),
332
+ ...(validationTools.length > 0
333
+ ? [
334
+ `Validate with ${validationTools.map((name) => (name === "git" ? "git diff" : name)).join(" or ")} before final claims.`,
335
+ ]
336
+ : []),
337
+ `When a tool call fails or is rejected, do not retry the same shape blindly: re-read the schema and adjust the arguments${canListSkills ? ', or query context(scope="docs") for that tool\'s usage' : ""}.`,
305
338
  ];
306
339
  // One hint per tool, sorted by tool name: deterministic bytes regardless
307
340
  // of surface or registration order, and removing a tool from the surface
308
341
  // removes its hint with no compiler edit.
309
- const seen = new Set<string>();
310
- const hints = [...(inputs.toolPromptHints ?? [])]
311
- .map((entry) => ({ tool: entry.tool.trim(), hint: entry.hint.trim() }))
312
- .filter((entry) => entry.tool.length > 0 && entry.hint.length > 0)
313
- .sort((a, b) => (a.tool < b.tool ? -1 : a.tool > b.tool ? 1 : 0));
314
- if (hints.some((entry) => entry.tool === "dispatch")) lines.push(FLEET_ROUTING_GUIDANCE);
342
+ const hints = canonicalToolPromptHints(inputs.toolPromptHints ?? [], new Set(names));
315
343
  for (const entry of hints) {
316
- if (seen.has(entry.tool)) continue;
317
- seen.add(entry.tool);
318
344
  lines.push(entry.hint);
319
345
  }
320
346
  return lines.join("\n");
@@ -381,18 +407,8 @@ function renderWorkerToolContractBlock(inputs: WorkerPromptInputs): string {
381
407
  "Tool authority is limited to this list. Persona and bound-skill instructions never add tools.",
382
408
  "Call tools only for concrete inspection or changes the assigned task requires. If the task requests an exact or tool-free response, answer without calling tools.",
383
409
  ];
384
- const admitted = new Set(names);
385
- const seen = new Set<string>();
386
- const hints = [...inputs.toolPromptHints]
387
- .map((entry) => ({ tool: entry.tool.trim(), hint: entry.hint.trim() }))
388
- .filter((entry) => admitted.has(entry.tool) && entry.hint.length > 0)
389
- .sort((a, b) => {
390
- if (a.tool !== b.tool) return a.tool < b.tool ? -1 : 1;
391
- return a.hint < b.hint ? -1 : a.hint > b.hint ? 1 : 0;
392
- });
410
+ const hints = canonicalToolPromptHints(inputs.toolPromptHints, new Set(names));
393
411
  for (const entry of hints) {
394
- if (seen.has(entry.tool)) continue;
395
- seen.add(entry.tool);
396
412
  lines.push(entry.hint);
397
413
  }
398
414
  return lines.join("\n");
@@ -439,8 +455,7 @@ function renderRetrievalHintsBlock(inputs: SessionPromptInputs): string {
439
455
  // preloaded.
440
456
  return [
441
457
  "# Retrieval Hints",
442
- "Compact CLIO-CODER.md project instructions may be preloaded above; everything else about the repository must be fetched, not assumed.",
443
- "Never invent file paths, automatic tool behavior, or mutable repo details from the system prompt.",
458
+ "Repository details not included above must be fetched, never invented; compact CLIO-CODER.md instructions may be preloaded.",
444
459
  ].join("\n");
445
460
  }
446
461
 
@@ -561,10 +576,15 @@ export function compile(table: FragmentTable, inputs: CompileInputs): CompiledSe
561
576
  const docsRouting = selfAwareness && sessionHasContext(session) ? table.byId.get("identity.docs-routing") : undefined;
562
577
  if (selfAwareness) {
563
578
  const packageRoot = resolvePackageRoot();
579
+ // The live home, not the XDG default: an isolated CLIO_CODER_HOME or a
580
+ // CLIO_CODER_CONFIG_DIR override moves the file the operator would edit.
581
+ const clioDirs = resolveClioDirs();
564
582
  const rendered = selfAwareness.body
565
583
  .replace("{CLIO_DOCS_PATH}", join(packageRoot, "docs"))
566
584
  .replace("{CLIO_SRC_PATH}", join(packageRoot, "src"))
567
- .replace("{CLIO_CODEWIKI_PATH}", join(packageRoot, "dist", "assets", "codewiki.json"));
585
+ .replace("{CLIO_CODEWIKI_PATH}", join(packageRoot, "dist", "assets", "codewiki.json"))
586
+ .replace("{CLIO_SETTINGS_PATH}", join(clioDirs.config, "settings.yaml"))
587
+ .replace("{CLIO_STATE_PATH}", clioDirs.state);
568
588
  identityBody = [identity.body.trim(), rendered.trim(), ...(docsRouting ? [docsRouting.body.trim()] : [])].join(
569
589
  "\n\n",
570
590
  );
@@ -1,6 +1,8 @@
1
1
  import type { CompiledSessionPrompt, SessionPromptInputs, WorkerPromptInputs } from "./compiler.js";
2
2
 
3
3
  export interface CompileSessionPromptInput {
4
+ /** Stable session identity that owns the compiler's frozen disk-input snapshot. */
5
+ sessionId: string;
4
6
  sessionInputs: SessionPromptInputs;
5
7
  autonomy?: string;
6
8
  cwd?: string;
@@ -23,11 +25,21 @@ export interface CompileWorkerPromptInput extends WorkerPromptInputs {
23
25
  }
24
26
 
25
27
  export interface PromptsContract {
28
+ /**
29
+ * Revision of compiler-owned inputs. Fragment, agent-catalog, and
30
+ * session-source invalidation components advance independently and are
31
+ * combined without loss. Project handbooks, rules, operator profile, and
32
+ * repo awareness are frozen in a real per-session snapshot until a config
33
+ * invalidation or a new session.
34
+ */
35
+ inputEpoch(): string;
36
+
26
37
  /**
27
38
  * Compile the session system prompt. Called once per session (and again
28
39
  * only on explicit, logged events: model/target change, autonomy-level
29
- * change, fragment reload, session switch). Inputs must be constant for
30
- * the session's lifetime.
40
+ * change, fragment reload, session switch). Compiler-owned disk inputs are
41
+ * selected from the session snapshot even when another identity input causes
42
+ * a recompile.
31
43
  */
32
44
  compileSessionPrompt(input: CompileSessionPromptInput): Promise<CompiledSessionPrompt>;
33
45
 
@@ -39,6 +51,6 @@ export interface PromptsContract {
39
51
  */
40
52
  compileWorkerPrompt(input: CompileWorkerPromptInput): Promise<CompiledSessionPrompt>;
41
53
 
42
- /** Reload fragment table (triggered by config.hotReload). */
54
+ /** Reload fragment table and advance `inputEpoch` after a successful load. */
43
55
  reload(): void;
44
56
  }
@@ -8,9 +8,11 @@ import type { AgentsContract } from "../agents/contract.js";
8
8
  import type { ConfigContract } from "../config/contract.js";
9
9
  import {
10
10
  type ContextContract,
11
+ type LoadedOperatorProfile,
11
12
  loadOperatorProfile,
12
13
  loadProjectRules,
13
14
  type ProjectPromptContext,
15
+ type ProjectRulesLoad,
14
16
  renderOperatorProfile,
15
17
  selectActiveRules,
16
18
  } from "../context/index.js";
@@ -28,11 +30,26 @@ export interface PromptsBundleOptions {
28
30
  const CLIO_REPO_AWARENESS_ID = "context.clio-repo-awareness";
29
31
  const WORKSPACE_ROOT_ID = "context.workspace-root";
30
32
 
33
+ interface CustomizationSourceSnapshot {
34
+ rules: ProjectRulesLoad["rules"];
35
+ operatorProfile: LoadedOperatorProfile | null;
36
+ }
37
+
38
+ interface SessionPromptSourceSnapshot {
39
+ projectContext: ProjectPromptContext | null;
40
+ customization: CustomizationSourceSnapshot;
41
+ workspaceRoot: RenderedPromptFragment[];
42
+ clioRepoAwareness: RenderedPromptFragment[];
43
+ }
44
+
31
45
  export function createPromptsBundle(
32
46
  context: DomainContext,
33
47
  options: PromptsBundleOptions = {},
34
48
  ): DomainBundle<PromptsContract> {
35
49
  let table: FragmentTable | null = null;
50
+ let fragmentEpoch = 0;
51
+ let sessionSourceEpoch = 0;
52
+ const sessionSourceSnapshots = new Map<string, SessionPromptSourceSnapshot>();
36
53
  const suppressContextFiles = options.noContextFiles === true;
37
54
 
38
55
  function config(): ConfigContract | undefined {
@@ -60,6 +77,7 @@ export function createPromptsBundle(
60
77
  function reload(): void {
61
78
  try {
62
79
  table = loadFragments();
80
+ fragmentEpoch += 1;
63
81
  } catch (err) {
64
82
  const msg = err instanceof Error ? err.message : String(err);
65
83
  process.stderr.write(`[clio-coder:prompts] reload failed: ${msg}\n`);
@@ -73,7 +91,42 @@ export function createPromptsBundle(
73
91
  return false;
74
92
  }
75
93
 
94
+ function sessionSourceKey(sessionId: string, cwd: string): string {
95
+ return `${sessionId}\0${cwd}`;
96
+ }
97
+
98
+ function captureSessionSourceSnapshot(cwd: string): SessionPromptSourceSnapshot {
99
+ let projectContext: ProjectPromptContext | null = null;
100
+ if (!suppressContextFiles) {
101
+ projectContext = contextDomain()?.renderPromptContext(cwd) ?? null;
102
+ for (const warning of projectContext?.warnings ?? []) process.stderr.write(`${warning}\n`);
103
+ }
104
+ return {
105
+ projectContext,
106
+ customization: captureCustomizationSources(cwd),
107
+ workspaceRoot: workspaceRootFragment(cwd),
108
+ clioRepoAwareness: clioRepoAwarenessFragments(cwd),
109
+ };
110
+ }
111
+
112
+ function sessionSourceSnapshot(sessionId: string, cwd: string): SessionPromptSourceSnapshot {
113
+ const key = sessionSourceKey(sessionId, cwd);
114
+ const existing = sessionSourceSnapshots.get(key);
115
+ if (existing) return existing;
116
+ const captured = captureSessionSourceSnapshot(cwd);
117
+ sessionSourceSnapshots.set(key, captured);
118
+ return captured;
119
+ }
120
+
121
+ function invalidateSessionSources(): void {
122
+ sessionSourceSnapshots.clear();
123
+ sessionSourceEpoch += 1;
124
+ }
125
+
76
126
  const contract: PromptsContract = {
127
+ inputEpoch() {
128
+ return `${fragmentEpoch}:${agentsDomain()?.revision() ?? 0}:${sessionSourceEpoch}`;
129
+ },
77
130
  async compileSessionPrompt(input: CompileSessionPromptInput) {
78
131
  if (!table) throw new Error("prompts domain not started");
79
132
  if (table.byId.size === 0) {
@@ -83,11 +136,12 @@ export function createPromptsBundle(
83
136
  const settings: Readonly<ClioSettings> | undefined = configContract?.get();
84
137
  const safety = input.autonomy ?? settings?.safety.autonomy ?? "auto-edit";
85
138
  const cwd = input.cwd ?? process.cwd();
139
+ const sources = sessionSourceSnapshot(input.sessionId, cwd);
86
140
  let contextFiles = "";
87
141
  let projectPreload: ProjectPreloadClass | null = null;
88
142
  let projectHandbookFiles: string[] = [];
89
143
  if (!suppressContextFiles) {
90
- const projectContext = contextDomain()?.renderPromptContext(cwd);
144
+ const projectContext = sources.projectContext;
91
145
  contextFiles = projectContext
92
146
  ? selectProjectContext(projectContext, input.sessionInputs.providerSupportsTools ?? null)
93
147
  : "";
@@ -98,7 +152,6 @@ export function createPromptsBundle(
98
152
  });
99
153
  projectHandbookFiles = projectContext.handbookFiles;
100
154
  }
101
- for (const warning of projectContext?.warnings ?? []) process.stderr.write(`${warning}\n`);
102
155
  }
103
156
  const roster = fleetRoster();
104
157
  const sessionInputs = {
@@ -112,9 +165,9 @@ export function createPromptsBundle(
112
165
  safety: `safety.${safety}`,
113
166
  sessionInputs,
114
167
  additionalFragments: [
115
- ...workspaceRootFragment(cwd),
116
- ...clioRepoAwarenessFragments(cwd),
117
- ...customizationFragments(cwd, input.workingContextPaths ?? []).fragments,
168
+ ...sources.workspaceRoot,
169
+ ...sources.clioRepoAwareness,
170
+ ...renderCustomizationFragments(sources.customization, cwd, input.workingContextPaths ?? []).fragments,
118
171
  ],
119
172
  });
120
173
  return { ...compiled, projectPreload, projectHandbookFiles };
@@ -141,25 +194,38 @@ export function createPromptsBundle(
141
194
  };
142
195
 
143
196
  let unsubscribeHotReload: (() => void) | null = null;
197
+ let unsubscribeExtensionsReload: (() => void) | null = null;
144
198
  const extension: DomainExtension = {
145
199
  async start() {
146
200
  try {
147
201
  table = loadFragments();
202
+ fragmentEpoch += 1;
148
203
  } catch (err) {
149
204
  const msg = err instanceof Error ? err.message : String(err);
150
205
  process.stderr.write(`[clio-coder:prompts] initial load failed: ${msg}\n`);
151
206
  table = { byId: new Map(), rootDir: "" };
152
207
  }
153
208
  unsubscribeHotReload = context.bus.on(BusChannels.ConfigHotReload, (payload: unknown) => {
209
+ invalidateSessionSources();
154
210
  const diff = (payload as { diff?: { hotReload?: string[] } } | undefined)?.diff;
155
211
  const paths = diff?.hotReload ?? [];
156
212
  if (!diffTouchesFragments(paths)) return;
157
213
  reload();
158
214
  });
215
+ // Extension prompt and skill roots feed fragments through the
216
+ // resources domain; a committed generation with new content means
217
+ // the table must be rebuilt from the new roots.
218
+ unsubscribeExtensionsReload = context.bus.on(BusChannels.ExtensionsReloaded, (payload: unknown) => {
219
+ if ((payload as { changed?: unknown } | undefined)?.changed !== true) return;
220
+ reload();
221
+ });
159
222
  },
160
223
  async stop() {
161
224
  unsubscribeHotReload?.();
162
225
  unsubscribeHotReload = null;
226
+ unsubscribeExtensionsReload?.();
227
+ unsubscribeExtensionsReload = null;
228
+ sessionSourceSnapshots.clear();
163
229
  },
164
230
  };
165
231
 
@@ -189,13 +255,36 @@ export interface CustomizationFragmentsResult {
189
255
  export function customizationFragments(
190
256
  cwd: string,
191
257
  workingContextPaths: ReadonlyArray<string>,
258
+ ): CustomizationFragmentsResult {
259
+ return renderCustomizationFragments(captureCustomizationSources(cwd), cwd, workingContextPaths);
260
+ }
261
+
262
+ function captureCustomizationSources(cwd: string): CustomizationSourceSnapshot {
263
+ let rules: ProjectRulesLoad["rules"] = [];
264
+ let operatorProfile: LoadedOperatorProfile | null = null;
265
+ try {
266
+ rules = loadProjectRules(cwd).rules;
267
+ } catch {
268
+ // Project rules are best-effort; a load failure freezes an empty set.
269
+ }
270
+ try {
271
+ operatorProfile = loadOperatorProfile(cwd);
272
+ } catch {
273
+ // The operator profile is best-effort; a load failure freezes no profile.
274
+ }
275
+ return { rules, operatorProfile };
276
+ }
277
+
278
+ function renderCustomizationFragments(
279
+ sources: CustomizationSourceSnapshot,
280
+ cwd: string,
281
+ workingContextPaths: ReadonlyArray<string>,
192
282
  ): CustomizationFragmentsResult {
193
283
  const fragments: RenderedPromptFragment[] = [];
194
284
  let activeRuleIds: string[] = [];
195
285
  let operatorProfileApplied = false;
196
286
  try {
197
- const loaded = loadProjectRules(cwd);
198
- const active = selectActiveRules(loaded.rules, normalizeWorkingContextPaths(cwd, workingContextPaths));
287
+ const active = selectActiveRules(sources.rules, normalizeWorkingContextPaths(cwd, workingContextPaths));
199
288
  if (active.length > 0) {
200
289
  const body = ["# Project rules", ...active.map((rule) => rule.body)].join("\n\n");
201
290
  fragments.push({
@@ -211,8 +300,7 @@ export function customizationFragments(
211
300
  // Project rules are best-effort; a load failure must not block compilation.
212
301
  }
213
302
  try {
214
- const profile = loadOperatorProfile(cwd);
215
- const rendered = renderOperatorProfile(profile.profile);
303
+ const rendered = renderOperatorProfile(sources.operatorProfile?.profile ?? {});
216
304
  if (rendered.text.length > 0) {
217
305
  fragments.push({
218
306
  id: "context.operator-profile",
@@ -6,6 +6,4 @@ description: Identity for a bounded Clio fleet worker
6
6
 
7
7
  # Identity
8
8
 
9
- You are Clio, IOWarp's coding agent, running as one bounded worker in a Clio fleet.
10
- Complete only the assigned task within the admitted tool and autonomy contracts, then return a concise handoff to the coordinating session.
11
- You do not coordinate the fleet unless an admitted tool and the assigned task explicitly authorize delegation.
9
+ You are Clio, IOWarp's coding agent, running as one bounded worker in a Clio fleet. Return a concise handoff to the coordinating session; do not coordinate the fleet unless the assigned task and an admitted tool explicitly authorize it.
@@ -1,25 +1,19 @@
1
1
  ---
2
2
  id: identity.clio
3
3
  version: 1
4
- budgetTokens: 200
5
4
  description: Clio identity and persona block
6
5
  ---
7
6
 
8
7
  # Clio identity
9
8
 
10
9
  You are Clio, the coding agent in IOWarp's CLIO ecosystem of agentic
11
- science (NSF-funded, iowarp.ai). CLIO stands for Context Layer for
12
- Input/Output. You are the first female agentic coder, named for the
13
- Greek muse of history who proclaimed and made famous the great
14
- deeds of the past. Developed by the Gnosis Research Center
15
- at Illinois Tech (github.com/grc-iit, @grc-iit) and the IOWarp
16
- team, you focus on HPC and scientific-software engineering for
17
- researchers and developers.
10
+ science (Context Layer for Input/Output), developed by the Gnosis
11
+ Research Center at Illinois Tech for HPC and scientific-software
12
+ engineering.
18
13
 
19
- Whichever weights run you, your name and persona are Clio. You are
20
- not Claude, GPT, Qwen, Gemini, Llama, Mistral, or any other vendor's
21
- assistant, and you do not claim to be from Anthropic, OpenAI,
22
- Alibaba, Google, Meta, or any other model vendor.
14
+ Whichever weights run you, your name and persona are Clio: not Claude,
15
+ GPT, Qwen, Gemini, Llama, Mistral, or any other vendor's assistant, and
16
+ you claim no model vendor.
23
17
 
24
18
  You do not invent capabilities, and you do not bypass confirmations,
25
19
  privilege limits, or git safety rails.
@@ -1,10 +1,9 @@
1
1
  ---
2
2
  id: identity.docs-routing
3
3
  version: 1
4
- budgetTokens: 120
5
4
  description: Directive to route questions about Clio herself through context(scope="docs"); rendered only when context is on the surface
6
5
  ---
7
6
 
8
7
  # Clio documentation routing
9
8
 
10
- When the user asks about Clio herself, her commands, configuration, targets, fleet, dispatch, extensions, skills, safety model, or any other Clio behavior, call context (scope="docs", query=<the question>) before answering and before any grep, find, or read: Clio's documentation ships with the package, not in the working tree, so searching the workspace for it finds nothing. Every response lists the whole corpus alongside the ranked sections, so one call routes the question to its document; then read that document completely from the installed documentation path above.
9
+ For a question about Clio herself, call context (scope="docs", query=<the question>) before answering and before any workspace search, then read the document it names from the installed documentation path above.
@@ -1,19 +1,11 @@
1
1
  ---
2
2
  id: identity.self-awareness
3
3
  version: 1
4
- budgetTokens: 260
5
4
  description: Clio self-awareness, installed documentation, and harness configuration paths
6
5
  ---
7
6
 
8
7
  # Clio's own harness
9
8
 
10
- Read these only when the user asks about Clio herself, her configuration, targets, fleet, extensions, skills, dispatch, or safety model; never for ordinary coding work.
11
-
12
- Installed documentation: {CLIO_DOCS_PATH}
13
- Installed source: {CLIO_SRC_PATH}
14
- Code map: {CLIO_CODEWIKI_PATH} (a structural index of Clio's own files, symbols, and import edges; paths are POSIX-relative to the installed source root)
15
- When reading Clio documentation, resolve docs/... there, not in the current working directory.
16
- Documentation routes, code decides: when precision matters, verify against the installed source, because code outranks docs.
17
-
18
- User configuration lives in ~/.config/clio-coder/settings.yaml and machine-produced session state lives in the XDG state directory (~/.local/state/clio-coder on Linux, ~/Library/Application Support/clio-coder/state on macOS, %LOCALAPPDATA%/clio-coder/state on Windows). Extension and skill authoring is documented in docs/extensions-and-sharing.md and docs/skills-marketplace.md.
19
- Always read Clio .md documentation files completely and follow cross-references before acting.
9
+ Only for questions about Clio herself (her commands, configuration, targets, fleet, dispatch, extensions, skills, or safety model), never for ordinary coding work.
10
+ Her documentation and source ship with the package, not in the workspace: documentation at {CLIO_DOCS_PATH}, source at {CLIO_SRC_PATH}. Code outranks docs when precision matters.
11
+ User settings live in {CLIO_SETTINGS_PATH}; session state lives in {CLIO_STATE_PATH}.
@@ -1,27 +1,19 @@
1
1
  ---
2
2
  id: operating.contract
3
3
  version: 1
4
- budgetTokens: 400
5
4
  description: Constitutional operating posture shared by every Clio prompt
6
5
  ---
7
6
 
8
7
  # Operating Contract
9
8
 
10
- Clio has one operating posture. There is no read-only posture or
11
- user-facing posture toggle.
9
+ Use tools when they materially help the task. Prefer a structured tool
10
+ over bash when one exists; for narrow file or symbol work, inspect
11
+ directly with the observe tools.
12
12
 
13
- Use the available tools when they materially help the current task.
14
- Prefer structured tools over bash when a structured tool exists. For
15
- narrow file or symbol work, inspect directly with structured observe
16
- tools. When a final report is requested but file
17
- modification is forbidden, put the report in the final assistant response;
18
- do not create a report artifact.
19
-
20
- Safety policy is authoritative for every tool call: allow decisions
21
- run normally; hard blocks (destructive git,
22
- protected artifacts, project or path policy violations) remain hard
23
- blocks. When a call is blocked or cancelled, pivot to a safer
24
- approach or explain the blocker. Do not retry the same blocked
13
+ Safety policy is authoritative for every tool call. Hard blocks
14
+ (destructive git, protected artifacts, project or path policy
15
+ violations) stay blocked: when a call is blocked or cancelled, pivot to
16
+ a safer approach or explain the blocker, and never retry the blocked
25
17
  action through another tool. After a loop guard blocks a repeated call,
26
18
  do not retry it or a syntactic variant: synthesize, delegate narrowly,
27
19
  use another source, or mark the claim unverified.