@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
@@ -6,7 +6,7 @@ import type { ToolSurface } from "./lazy-tool.js";
6
6
  export const monitorToolSurface = {
7
7
  name: ToolNames.Monitor,
8
8
  description:
9
- "Inspect known dispatched runs. Parent-model mid-run observation requires detach:true because ordinary dispatch auto-waits. wait observes without collecting. collect is the authoritative terminal batch operation; collect detached runs before final synthesis. receipt exposes stored evidence. Receipt integrity, evidence verification, briefing provenance, and project-context provenance are separate fields.",
9
+ "Inspect dispatched runs: list enumerates them; status, peek, receipt, and tools observe one run; wait blocks on one run without collecting; collect is the terminal operation for a detached batch or run list, required before final synthesis.",
10
10
  parameters: Type.Object({
11
11
  run_id: Type.Optional(
12
12
  Type.String({ description: "Run id from dispatch output or monitor list; omit with mode=list." }),
@@ -14,21 +14,13 @@ export const monitorToolSurface = {
14
14
  mode: Type.Optional(
15
15
  StringEnum(["status", "peek", "receipt", "list", "wait", "collect", "tools"], {
16
16
  description:
17
- "What to return. Defaults to status when run_id is present and list when it is absent. status, peek, receipt, tools, and wait each observe one run and require a run_id; list takes none. tools answers what a run executed: its tool calls with outcomes, plus per-tool totals from the receipt.",
18
- }),
19
- ),
20
- batch_id: Type.Optional(Type.String({ description: "Detached batch id from dispatch detach:true (mode=collect)." })),
21
- run_ids: Type.Optional(
22
- Type.Array(Type.String(), {
23
- description:
24
- "Explicit run ids for mode=collect; a one-element array is also accepted by single-run modes when run_id is absent.",
17
+ "Defaults to status with run_id and list without. tools lists a run's tool calls with outcomes and per-tool totals.",
25
18
  }),
26
19
  ),
20
+ batch_id: Type.Optional(Type.String({ description: "Detached batch id (mode=collect)." })),
21
+ run_ids: Type.Optional(Type.Array(Type.String(), { description: "Run ids to collect (mode=collect)." })),
27
22
  timeout_ms: Type.Optional(
28
- Type.Number({
29
- description:
30
- "mode=wait: max ms to block (default 60000, capped at 600000); mode=collect never blocks and ignores this value with a notice.",
31
- }),
23
+ Type.Number({ description: "mode=wait: max ms to block (default 60000, max 600000); collect never blocks." }),
32
24
  ),
33
25
  }),
34
26
  baseActionClass: "read",
@@ -1,4 +1,4 @@
1
- import { GUARDRAIL_DEFAULTS, GUARDRAIL_ENV_VARS, resolveGuardrail } from "../core/guardrails.js";
1
+ import { GUARDRAIL_DEFAULTS, resolveGuardrail } from "../core/guardrails.js";
2
2
  import type { ToolInvokeOptions, ToolResult } from "./registry.js";
3
3
  import { offloadPointer, writeToolOffload } from "./result-shaping.js";
4
4
  import { formatSize } from "./truncate.js";
@@ -64,9 +64,8 @@ export const OBSERVE_SELF_CAPS = {
64
64
 
65
65
  // Per-turn observation budget pool. One pool per sessionId:turnId shared by
66
66
  // every OBSERVE tool; LRU-pruned so abandoned turns cannot grow the map.
67
- // Value, settings key, and env override live in core/guardrails.ts.
67
+ // The configurable value lives at safety.limits.observationBytesPerTurn.
68
68
  export const DEFAULT_OBSERVATION_TURN_BUDGET_BYTES = GUARDRAIL_DEFAULTS.observationTurnBudgetBytes;
69
- export const OBSERVATION_TURN_BUDGET_ENV = GUARDRAIL_ENV_VARS.observationTurnBudgetBytes;
70
69
  const MIN_BUDGET_SLICE_BYTES = 1024;
71
70
  const BUDGET_TRACK_LIMIT = 256;
72
71
 
@@ -130,8 +129,8 @@ function boundContinuation(next: string | undefined): string | undefined {
130
129
  return `${Array.from(next).slice(0, MAX_CONTINUATION_CHARS).join("")}…`;
131
130
  }
132
131
 
133
- function observationTurnBudgetLimit(env: NodeJS.ProcessEnv = process.env): number {
134
- return Math.max(MIN_BUDGET_SLICE_BYTES, resolveGuardrail("observationTurnBudgetBytes", env));
132
+ function observationTurnBudgetLimit(): number {
133
+ return Math.max(MIN_BUDGET_SLICE_BYTES, resolveGuardrail("observationTurnBudgetBytes"));
135
134
  }
136
135
 
137
136
  function budgetKey(options: ToolInvokeOptions | undefined): string | null {
@@ -15,23 +15,16 @@ import type { ToolSurface } from "./lazy-tool.js";
15
15
  export const panesToolSurface = {
16
16
  name: ToolNames.Panes,
17
17
  description:
18
- "Look at, focus, and manage the terminal panes Clio owns beside this session. Use show to bring a dispatched run's live viewer pane to the front when the operator asks to see an agent (\"show me the tester\"). open starts one of the fixed utility presets; there is no way to run an arbitrary command. close removes a pane Clio created. list reports the current inventory and the pane layer's health.",
18
+ "Manage the terminal panes Clio owns beside this session: show focuses a dispatched run's viewer pane, open starts a fixed utility preset (files, logs, or shell; never an arbitrary command) or focuses it when it is already open, close removes a Clio-created pane, list reports the inventory and the pane layer's health.",
19
19
  parameters: Type.Object({
20
- action: StringEnum(["show", "open", "close", "list"], {
21
- description:
22
- "show focuses a run's viewer pane; open starts a preset utility pane; close removes a Clio-owned pane; list reports the inventory.",
23
- }),
20
+ action: StringEnum(["show", "open", "close", "list"], { description: "Pane action." }),
24
21
  target: Type.Optional(
25
22
  Type.String({
26
23
  description:
27
- 'action=show: an agent id or run id prefix, most recent match wins. action=close: a pane id, a pane label, an agent id, or "all".',
28
- }),
29
- ),
30
- preset: Type.Optional(
31
- StringEnum([...PANES_PRESET_IDS], {
32
- description: "action=open: which fixed utility pane to start.",
24
+ 'show: an agent id or run id prefix, most recent match wins. close: a pane id, label, agent id, or "all".',
33
25
  }),
34
26
  ),
27
+ preset: Type.Optional(StringEnum([...PANES_PRESET_IDS], { description: "open: which utility pane to start." })),
35
28
  }),
36
29
  baseActionClass: "read",
37
30
  executionMode: "sequential",
@@ -78,8 +78,10 @@ export function createPanesTool(deps: PanesToolDeps): ToolSpec {
78
78
  kind: "ok",
79
79
  output:
80
80
  result.paneId === null
81
- ? `completed the ${result.label} chooser.`
82
- : `opened the ${result.label} pane (${result.paneId}).`,
81
+ ? `completed the ${result.label} pick.`
82
+ : result.existing
83
+ ? `the ${result.label} pane was already open and is now focused (${result.paneId}).`
84
+ : `opened the ${result.label} pane (${result.paneId}).`,
83
85
  details: { action: "open", preset, paneId: result.paneId },
84
86
  };
85
87
  }
@@ -81,6 +81,13 @@ const DISPATCH_BOUND_TOOLS = new Set<ToolName>([ToolNames.Dispatch, ToolNames.Mo
81
81
  const INTERACTIVE_BOUND_TOOLS = new Set<ToolName>([ToolNames.AskUser]);
82
82
  /** Registered only when a pane host answered detection and the mux is live. */
83
83
  const PANES_BOUND_TOOLS = new Set<ToolName>([ToolNames.Panes]);
84
+ /**
85
+ * Registered only when a dispatch bound an agent-ledger port to this registry,
86
+ * which only a worker process does. The session has no peers to coordinate
87
+ * with, so on that surface the tool could only answer "no ledger" and its
88
+ * schema was 444 tokens of every first turn for nothing.
89
+ */
90
+ const LEDGER_BOUND_TOOLS = new Set<ToolName>([ToolNames.Ledger]);
84
91
  /** The RETRIEVE plane, omitted wholesale by a hermetic run (tools/network-policy.ts). */
85
92
  const NETWORK_BOUND_TOOLS = new Set<ToolName>([ToolNames.WebFetch]);
86
93
 
@@ -89,15 +96,19 @@ export interface BuiltinToolPolicyOptions {
89
96
  includeDispatchTools?: boolean;
90
97
  includeInteractiveTools?: boolean;
91
98
  includePanesTools?: boolean;
99
+ includeLedgerTools?: boolean;
92
100
  /**
93
- * Unlike the other four, this defaults to true: every registry registers
101
+ * Unlike the others, this defaults to true: every registry registers
94
102
  * the network plane unless a run explicitly asked to be hermetic, so an
95
103
  * unset option must keep demanding it.
96
104
  */
97
105
  includeNetworkTools?: boolean;
98
106
  }
99
107
 
100
- function validateBuiltinToolPolicy(specs: ReadonlyArray<ToolSpec>, options: BuiltinToolPolicyOptions = {}): string[] {
108
+ export function validateBuiltinToolPolicy(
109
+ specs: ReadonlyArray<ToolSpec>,
110
+ options: BuiltinToolPolicyOptions = {},
111
+ ): string[] {
101
112
  const errors: string[] = [];
102
113
  const registered = new Map<ToolName, ToolSpec>();
103
114
 
@@ -140,6 +151,7 @@ function validateBuiltinToolPolicy(specs: ReadonlyArray<ToolSpec>, options: Buil
140
151
  const includeDispatchTools = options.includeDispatchTools ?? false;
141
152
  const includeInteractiveTools = options.includeInteractiveTools ?? false;
142
153
  const includePanesTools = options.includePanesTools ?? false;
154
+ const includeLedgerTools = options.includeLedgerTools ?? false;
143
155
  const includeNetworkTools = options.includeNetworkTools ?? true;
144
156
  const required = new Set<ToolName>(Object.values(ToolNames));
145
157
  for (const tool of [...required]) {
@@ -147,6 +159,7 @@ function validateBuiltinToolPolicy(specs: ReadonlyArray<ToolSpec>, options: Buil
147
159
  if (!includeDispatchTools && DISPATCH_BOUND_TOOLS.has(tool)) required.delete(tool);
148
160
  if (!includeInteractiveTools && INTERACTIVE_BOUND_TOOLS.has(tool)) required.delete(tool);
149
161
  if (!includePanesTools && PANES_BOUND_TOOLS.has(tool)) required.delete(tool);
162
+ if (!includeLedgerTools && LEDGER_BOUND_TOOLS.has(tool)) required.delete(tool);
150
163
  if (!includeNetworkTools && NETWORK_BOUND_TOOLS.has(tool)) required.delete(tool);
151
164
  }
152
165
  for (const tool of required) {
package/src/tools/read.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { readFileSync, statSync } from "node:fs";
2
2
  import { Type } from "typebox";
3
- import { GUARDRAIL_DEFAULTS, GUARDRAIL_ENV_VARS, resolveGuardrail } from "../core/guardrails.js";
3
+ import { GUARDRAIL_DEFAULTS, resolveGuardrail } from "../core/guardrails.js";
4
4
  import { ToolNames } from "../core/tool-names.js";
5
5
  import { finalizeObservation, observationBudgetExhausted, reserveObservation } from "./observation.js";
6
6
  import { resolveReadPath } from "./path-utils.js";
@@ -19,14 +19,13 @@ import { truncateUtf8 } from "./truncate-utf8.js";
19
19
  // Per-call read cap. Raised from the 16KB per-observation source cap toward
20
20
  // pi's 50KB so large source/generated files finish in fewer calls (a 144KB file
21
21
  // took ~9 sequential 16KB reads before). The per-turn observation budget
22
- // (src/tools/observation.ts) still bounds the aggregate. Value, settings key,
23
- // and env override (CLIO_CODER_READ_MAX_BYTES) live in core/guardrails.ts.
22
+ // (src/tools/observation.ts) still bounds the aggregate. The configurable
23
+ // value lives at safety.limits.readBytesPerCall.
24
24
  export const DEFAULT_READ_MAX_BYTES = GUARDRAIL_DEFAULTS.readMaxBytes;
25
- export const READ_MAX_BYTES_ENV = GUARDRAIL_ENV_VARS.readMaxBytes;
26
25
  const MIN_READ_CAP_BYTES = 1024;
27
26
 
28
- export function readMaxBytes(env: NodeJS.ProcessEnv = process.env): number {
29
- return Math.max(MIN_READ_CAP_BYTES, resolveGuardrail("readMaxBytes", env));
27
+ export function readMaxBytes(): number {
28
+ return Math.max(MIN_READ_CAP_BYTES, resolveGuardrail("readMaxBytes"));
30
29
  }
31
30
 
32
31
  export const readTool: ToolSpec = {
@@ -2,6 +2,7 @@ import { createHash, randomBytes } from "node:crypto";
2
2
  import type { TSchema } from "typebox";
3
3
  import { isWorkerToolCallCapExceededReason } from "../core/guardrails.js";
4
4
  import { HEADLESS_PERMISSION_DENIED_MARKER } from "../core/headless-permission.js";
5
+ import { normalizePromptHint } from "../core/prompt-hint.js";
5
6
  import {
6
7
  evaluateSkillToolSurface,
7
8
  type PendingSkillToolPolicy,
@@ -49,6 +50,27 @@ export type ToolExecutionMode = "sequential" | "parallel";
49
50
  export type ToolSourceScope = "core" | "domain";
50
51
  export type ToolRetrySafety = "idempotent" | "retry_safe" | "not_retry_safe" | "unknown";
51
52
  export type ToolCostLatencyClass = "local_fast" | "local_medium" | "local_slow" | "network" | "agent";
53
+ export type ToolPromptHintRole = "session" | "worker" | "bound-worker";
54
+
55
+ export interface ToolPromptHintVariants {
56
+ session?: string;
57
+ worker?: string;
58
+ boundWorker?: string;
59
+ }
60
+
61
+ export type ToolPromptHintMetadata = string | ToolPromptHintVariants;
62
+
63
+ /** Resolve one tool's guidance for the exact prompt role being compiled. */
64
+ export function resolveToolPromptHint(
65
+ hint: ToolPromptHintMetadata | undefined,
66
+ role: ToolPromptHintRole,
67
+ ): string | undefined {
68
+ if (typeof hint === "string") return normalizePromptHint(hint);
69
+ if (!hint) return undefined;
70
+ const selected =
71
+ role === "session" ? hint.session : role === "bound-worker" ? (hint.boundWorker ?? hint.worker) : hint.worker;
72
+ return normalizePromptHint(selected);
73
+ }
52
74
 
53
75
  export interface ToolSourceInfo {
54
76
  path: string;
@@ -77,12 +99,11 @@ export interface ToolMetadata {
77
99
  /** Coarse cost/latency bucket for dashboard diagnostics. */
78
100
  costLatency: ToolCostLatencyClass;
79
101
  /**
80
- * One sentence of usage guidance rendered into the session Tool Contract
81
- * when this tool is on the frozen surface. Hints render sorted by tool
82
- * name, so the compiled prompt stays byte-stable per surface. Most tools
83
- * need none; the schema description covers them.
102
+ * One sentence of usage guidance rendered when this tool is on the frozen
103
+ * surface. A string applies to every role; variants keep session consent
104
+ * rules out of ordinary and recipe-bound workers. Most tools need none.
84
105
  */
85
- promptHint?: string;
106
+ promptHint?: ToolPromptHintMetadata;
86
107
  /**
87
108
  * How transcript surfaces present this tool's block under `/output default`.
88
109
  * Optional: tools that declare nothing fold like every other tool.
@@ -199,6 +220,8 @@ export interface ToolInvokeOptions {
199
220
  turnId?: string;
200
221
  toolCallId?: string;
201
222
  correlationId?: string;
223
+ /** Session-effective ceiling for one tool result, read again before every invocation. */
224
+ toolResultMaxBytes?: number;
202
225
  pendingSkillPolicy?: PendingSkillToolPolicy;
203
226
  askUserPolicy?: AskUserToolPolicy;
204
227
  /** Host-derived display copy for an ask_user round. It has no admission authority. */
@@ -442,14 +465,14 @@ export function createRegistry(deps: RegistryDeps): ToolRegistry {
442
465
  const preparedArgs = prepareToolArgs(spec, call.args ?? {});
443
466
  resultDisposition = resolveToolResultDisposition(spec, preparedArgs);
444
467
  const result = await spec.run(preparedArgs, options);
445
- const digest = toolResultDigestFor(spec, result, resultDisposition);
468
+ const digest = toolResultDigestFor(spec, result, resultDisposition, options);
446
469
  const afterEffects = runToolHook("after_tool", spec, call, decision, options, result, digest);
447
470
  const finalResult = shapeToolResult(spec, applyToolResultEffects(result, afterEffects), options, resultDisposition);
448
471
  return { kind: "ok", result: finalResult, decision };
449
472
  } catch (err) {
450
473
  const message = err instanceof Error ? err.message : String(err);
451
474
  const result: ToolResult = { kind: "error", message };
452
- const digest = toolResultDigestFor(spec, result, resultDisposition);
475
+ const digest = toolResultDigestFor(spec, result, resultDisposition, options);
453
476
  const afterEffects = runToolHook("after_tool", spec, call, decision, options, result, digest);
454
477
  return {
455
478
  kind: "ok",
@@ -504,9 +527,12 @@ export function createRegistry(deps: RegistryDeps): ToolRegistry {
504
527
  }
505
528
  // Stage 1.5, the skill tool surface: a loaded SKILL.md that declares
506
529
  // allowed-tools or disallowed-tools narrows the surface until the
507
- // policy's lifetime ends (turn end for the main agent, run end for
508
- // workers). Narrowing only blocks; it never grants, and an out-of-
509
- // surface call blocks terminally instead of parking for confirmation.
530
+ // policy's lifetime ends. Interactively that is the session: the
531
+ // narrowing stays armed across the operator's later turns until a
532
+ // different skill replaces it, `/skill off` clears it, or the session
533
+ // ends. A worker keeps the run-scoped lifetime. Narrowing only blocks;
534
+ // it never grants, and an out-of-surface call blocks terminally
535
+ // instead of parking for confirmation.
510
536
  const surfaceViolation = evaluateSkillToolSurface(options?.pendingSkillPolicy, call.tool);
511
537
  if (surfaceViolation) {
512
538
  const verdict = skillSurfaceBlockedVerdict(decision, call.tool, surfaceViolation);
@@ -1067,10 +1093,13 @@ function skillSurfaceBlockedVerdict(
1067
1093
  tool: string,
1068
1094
  violation: SkillToolSurfaceViolation,
1069
1095
  ): Extract<RegistryVerdict, { kind: "blocked" }> {
1096
+ const lifetime = violation.carriedSurface
1097
+ ? "The narrowing stays active for the rest of the session, across the operator's later turns, until a different skill replaces it or the operator clears it with /skill off."
1098
+ : "The narrowing ends when the skill policy's turn or worker run ends.";
1070
1099
  const reason =
1071
1100
  violation.disallowedBy.length > 0
1072
- ? `${tool} is disallowed by the active skill(s) ${violation.disallowedBy.join(", ")} (disallowed-tools). The narrowing ends when the skill policy's turn or worker run ends. Work within the skill workflow; if it genuinely needs this step, use ask_user when available or state the blocker in your reply.`
1073
- : `${tool} is outside the tool surface declared by the active skill(s) ${violation.skills.join(", ")}. Tools are narrowed to: ${(violation.mergedAllowedTools ?? []).join(", ")} (plus context and ask_user). The narrowing ends when the skill policy's turn or worker run ends. Work within the skill workflow; if it genuinely needs this step, use ask_user when available or state the blocker in your reply.`;
1101
+ ? `${tool} is disallowed by the active skill(s) ${violation.disallowedBy.join(", ")} (disallowed-tools). ${lifetime} Work within the skill workflow; if it genuinely needs this step, use ask_user when available or state the blocker in your reply.`
1102
+ : `${tool} is outside the tool surface declared by the active skill(s) ${violation.skills.join(", ")}. Tools are narrowed to: ${(violation.mergedAllowedTools ?? []).join(", ")} (plus context and ask_user). ${lifetime} Work within the skill workflow; if it genuinely needs this step, use ask_user when available or state the blocker in your reply.`;
1074
1103
  const blocked: SafetyDecision = {
1075
1104
  kind: "block",
1076
1105
  classification: decision.classification,
@@ -16,27 +16,30 @@ import {
16
16
  import { DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, formatSize, truncateTail } from "./truncate.js";
17
17
  import { byteLength, truncateUtf8 } from "./truncate-utf8.js";
18
18
 
19
- // Backstop for tools without an explicit resultSizePolicy. Sits above the
20
- // per-observation source cap (src/tools/truncate.ts) so a tool's own truncation
21
- // notice (with its precise continuation offset) survives shaping instead of
22
- // being cut again and replaced by a generic hint.
23
- export const DEFAULT_TOOL_RESULT_MAX_BYTES = DEFAULT_MAX_BYTES + 2 * 1024;
19
+ // Backstop for tools without an explicit resultSizePolicy. Session settings may
20
+ // lower or raise this fallback, while explicit per-tool policies remain tighter.
21
+ export const DEFAULT_TOOL_RESULT_MAX_BYTES = DEFAULT_MAX_BYTES;
24
22
  const RESULT_TRUNCATION_MARKER = "\n[tool result truncated]";
25
23
  const RESULT_OFFLOAD_MAX_BYTES = 10 * 1024 * 1024;
26
24
  const TAIL_NOTICE_RESERVE_BYTES = 512;
27
25
  export const TOOL_OFFLOAD_MAX_AGE_MS = 14 * 24 * 60 * 60 * 1000;
28
26
 
29
- type ToolResultShapeContext = Pick<ToolInvokeOptions, "sessionId" | "toolCallId">;
27
+ type ToolResultShapeContext = Pick<ToolInvokeOptions, "sessionId" | "toolCallId" | "toolResultMaxBytes">;
30
28
 
31
29
  function mergeDetails(details: ToolResultDetails | undefined, resultSize: Record<string, unknown>): ToolResultDetails {
32
30
  return { ...(details ?? {}), resultSize };
33
31
  }
34
32
 
35
- function maxBytesFor(spec: ToolSpec): number {
33
+ function maxBytesFor(spec: ToolSpec, context?: ToolResultShapeContext): number {
36
34
  const configured = spec.metadata?.resultSizePolicy?.maxBytes;
37
- return typeof configured === "number" && Number.isFinite(configured) && configured > 0
38
- ? Math.floor(configured)
39
- : DEFAULT_TOOL_RESULT_MAX_BYTES;
35
+ const policyMax =
36
+ typeof configured === "number" && Number.isFinite(configured) && configured > 0
37
+ ? Math.floor(configured)
38
+ : DEFAULT_TOOL_RESULT_MAX_BYTES;
39
+ const sessionMax = context?.toolResultMaxBytes;
40
+ return typeof sessionMax === "number" && Number.isFinite(sessionMax) && sessionMax > 0
41
+ ? Math.min(policyMax, Math.floor(sessionMax))
42
+ : policyMax;
40
43
  }
41
44
 
42
45
  function followUpHint(spec: ToolSpec): string {
@@ -61,11 +64,12 @@ export function toolResultDigestFor(
61
64
  spec: ToolSpec,
62
65
  result: ToolResult,
63
66
  requestedDisposition?: ToolResultDisposition,
67
+ context?: ToolResultShapeContext,
64
68
  ): ToolResultDigest {
65
69
  const text = resultText(result);
66
- const disposition = normalizeToolResultDisposition(spec, maxBytesFor(spec), requestedDisposition);
70
+ const disposition = normalizeToolResultDisposition(spec, maxBytesFor(spec, context), requestedDisposition);
67
71
  if (disposition === null) {
68
- const projected = shapeLegacyToolResult(spec, result);
72
+ const projected = shapeLegacyToolResult(spec, result, context);
69
73
  return legacyToolResultDigest(resultText(projected), { outcome: result.kind });
70
74
  }
71
75
  const capturedBytes = capturedBytesFor(result, text);
@@ -298,7 +302,7 @@ function shapeLegacyToolResult(
298
302
  overflow: "head" | "tail" = "head",
299
303
  ): ToolResult {
300
304
  if (existingOffloadPath(result.details) !== null) return result;
301
- const maxBytes = maxBytesFor(spec);
305
+ const maxBytes = maxBytesFor(spec, context);
302
306
  const offloadMaxBytes = offloadMaxBytesFor(spec);
303
307
  const text = result.kind === "ok" ? result.output : result.message;
304
308
  const bytes = byteLength(text);
@@ -410,7 +414,7 @@ export function shapeToolResult(
410
414
  requestedDisposition?: ToolResultDisposition,
411
415
  ): ToolResult {
412
416
  if (existingDisposition(result.details) !== null) return result;
413
- const hardMaxBytes = maxBytesFor(spec);
417
+ const hardMaxBytes = maxBytesFor(spec, context);
414
418
  const disposition = normalizeToolResultDisposition(spec, hardMaxBytes, requestedDisposition);
415
419
  if (disposition === null) return shapeLegacyToolResult(spec, result, context);
416
420
 
@@ -6,7 +6,7 @@ import type { ToolSurface } from "./lazy-tool.js";
6
6
  export const steerToolSurface = {
7
7
  name: ToolNames.Steer,
8
8
  description:
9
- "Control a running native worker whose run id is already available. Parent-model mid-run control requires detach:true because ordinary dispatch auto-waits and dispatch/steer are sequential; the interactive operator/TUI may steer an active synchronous native run through the dispatch contract. ACP runs have no input channel.",
9
+ "Guide or cancel a running native worker by run id. Only a detached run can be steered from here, because an ordinary dispatch auto-waits; ACP runs have no input channel.",
10
10
  parameters: Type.Object({
11
11
  run_id: Type.String({ description: "Run id from dispatch output or monitor list." }),
12
12
  action: StringEnum(["guide", "cancel"], { description: "What to do." }),
@@ -139,7 +139,7 @@ export function createTasksTool(deps: TasksToolDeps): ToolSpec {
139
139
  description:
140
140
  "Session task board. plan declares a titled board (replaces any prior board); add appends tasks; " +
141
141
  "pick moves one operator task uN onto the board; start marks one task active (the current focus); " +
142
- "done completes a started task and requires note as the " +
142
+ "done completes a task (started or still pending) and requires note as the " +
143
143
  "evidence the work actually finished; block parks it with a required reason; drop cancels it; list shows the board. " +
144
144
  "Work that did not happen is blocked or dropped, never done.",
145
145
  parameters: Type.Object({
@@ -8,12 +8,13 @@ import {
8
8
  truncateTail as truncatePiTail,
9
9
  } from "../engine/truncate.js";
10
10
 
11
- // Per-observation source cap. Pi defaults to 50 KiB; Clio deliberately keeps
12
- // one result proportional to its per-turn observation budget at 16 KiB. The
13
- // wrappers below retain only that product-level delta while Pi owns UTF-8-safe
14
- // head/tail truncation, line limits, grep-line clipping, and size formatting.
11
+ // Per-observation source cap. Pi defaults to 50 KiB; Clio allows 64 KiB while
12
+ // its default 192 KiB turn pool remains authoritative across calls. Three full
13
+ // results consume that pool, so a fourth finds it filled. The wrappers below
14
+ // retain only that product-level delta while Pi owns UTF-8-safe head/tail
15
+ // truncation, line limits, grep-line clipping, and size formatting.
15
16
  export const DEFAULT_MAX_LINES = 2000;
16
- export const DEFAULT_MAX_BYTES = 16 * 1024;
17
+ export const DEFAULT_MAX_BYTES = 64 * 1024;
17
18
  export type { TruncationResult };
18
19
  export { formatSize, GREP_MAX_LINE_LENGTH, truncateLine };
19
20
 
@@ -28,20 +28,14 @@ export const verifyToolSurface = {
28
28
  parameters: Type.Object({
29
29
  check: Type.Optional(
30
30
  Type.String({
31
- description: `Declared project check ID, package script (${VERIFICATION_SCRIPT_FAMILY_HINT}), or "frontend". Omit to list available checks.`,
31
+ description: `Check id, package script (${VERIFICATION_SCRIPT_FAMILY_HINT}), or "frontend"; omit to list.`,
32
32
  }),
33
33
  ),
34
- path: Type.Optional(Type.String({ description: "check=frontend: artifact file under the workspace root." })),
35
- args: Type.Optional(
36
- Type.Array(Type.String(), { description: "Package scripts only: extra arguments passed after --." }),
37
- ),
38
- browser: Type.Optional(
39
- StringEnum(BROWSER_MODES, { description: "check=frontend: headless browser mode (default auto)." }),
40
- ),
41
- cwd: Type.Optional(Type.String({ description: "Package-script working directory; ignored by project checks." })),
42
- timeout_ms: Type.Optional(
43
- Type.Number({ description: "Package/frontend timeout in ms; project checks use their declared timeoutMs." }),
44
- ),
34
+ path: Type.Optional(Type.String({ description: "frontend: artifact file under the workspace root." })),
35
+ args: Type.Optional(Type.Array(Type.String(), { description: "Package scripts only: arguments after --." })),
36
+ browser: Type.Optional(StringEnum(BROWSER_MODES, { description: "frontend: headless browser mode (default auto)." })),
37
+ cwd: Type.Optional(Type.String({ description: "Package scripts only: working directory." })),
38
+ timeout_ms: Type.Optional(Type.Number({ description: "Package and frontend checks only: timeout in ms." })),
45
39
  max_output_bytes: Type.Optional(Type.Number({ description: "Output cap in bytes (default 600000)." })),
46
40
  }),
47
41
  baseActionClass: "execute",
@@ -13,9 +13,7 @@ export const webFetchToolSurface = {
13
13
  timeout_ms: Type.Optional(Type.Number({ description: "Timeout ms (default 30000)." })),
14
14
  max_bytes: Type.Optional(Type.Number({ description: "Max bytes returned (default 600000)." })),
15
15
  format: Type.Optional(
16
- Type.String({
17
- description: "auto (default: HTML is cleaned to Markdown, other content passes through) or raw (no conversion).",
18
- }),
16
+ Type.String({ description: "auto (default) converts HTML to Markdown; raw returns the body unconverted." }),
19
17
  ),
20
18
  }),
21
19
  baseActionClass: "read",
@@ -9,7 +9,7 @@ import type { ReceiptIntegrityResult } from "../domains/dispatch/receipt-integri
9
9
  import type { RunReceipt, RunReceiptVerification } from "../domains/dispatch/types.js";
10
10
  import { formatTrustAxes, formatTrustSummary } from "../domains/evidence/trust-projection.js";
11
11
  import { adaptRunReceiptTrustStatus, type CanonicalTrustStatus } from "../domains/evidence/trust-status.js";
12
- import { receiptResponseModelIdObservationLabel } from "./dispatch-event-text.js";
12
+ import { receiptGatewayRoutingLabel, receiptResponseModelIdObservationLabel } from "./dispatch-event-text.js";
13
13
 
14
14
  /** Matches a source citation the parent can independently spot-check. */
15
15
  const SOURCE_CITATION_PATTERN = /([\w./~-]+):(\d+)/g;
@@ -145,6 +145,7 @@ export function receiptEvidenceLabels(
145
145
  }${receipt.projectContext.contentHash !== undefined ? ` sha256:${receipt.projectContext.contentHash}` : ""}`;
146
146
  }
147
147
  const responseModelIdObservation = receiptResponseModelIdObservationLabel(receipt);
148
+ const gatewayRouting = receiptGatewayRoutingLabel(receipt);
148
149
  const budget =
149
150
  receipt.budget === undefined
150
151
  ? []
@@ -160,6 +161,7 @@ export function receiptEvidenceLabels(
160
161
  `evidence_verification=${verification.state}/${verification.basis}`,
161
162
  `host_verification=${receipt.hostVerification?.status ?? "not_requested"}`,
162
163
  ...(responseModelIdObservation ? [responseModelIdObservation] : []),
164
+ ...(gatewayRouting ? [gatewayRouting] : []),
163
165
  ...budget,
164
166
  ...receiptAdmissionLabels(receipt),
165
167
  ...receiptActivityLabels(receipt, status),
@@ -213,6 +213,7 @@ const RUNTIME_API_FAMILIES = [
213
213
  "embeddings-http",
214
214
  "claude-agent-sdk",
215
215
  "claude-code-subprocess",
216
+ "external-agent-subprocess",
216
217
  ] as const satisfies ReadonlyArray<RuntimeApiFamily>;
217
218
  const RUNTIME_AUTHS = [
218
219
  "api-key",
@@ -412,6 +413,9 @@ function validateCapabilityPatch(value: unknown, source: string): void {
412
413
  for (const key of ["contextWindow", "maxTokens"] as const) {
413
414
  readOptionalNumber(caps, key, source);
414
415
  }
416
+ if (caps.thinkingControlRuntime !== undefined) {
417
+ readEnum(caps.thinkingControlRuntime, `${source}.thinkingControlRuntime`, ["lmstudio", "llamacpp"]);
418
+ }
415
419
  for (const key of ["toolCallFormat", "thinkingFormat", "structuredOutputs"] as const) {
416
420
  readOptionalString(caps, key, source);
417
421
  }
@@ -1,17 +0,0 @@
1
- import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
- import {
3
- BUILTIN_RUNTIMES,
4
- registerBuiltinRuntimes
5
- } from "./chunk-QKIFBZKT.js";
6
- import "./chunk-BWW4HLO4.js";
7
- import "./chunk-LL4KHSZI.js";
8
- import "./chunk-NLFAQR7Z.js";
9
- import "./chunk-O42A54GG.js";
10
- import "./chunk-VXMFAE2W.js";
11
- import "./chunk-YXLYO42X.js";
12
- import "./chunk-3R73A4XB.js";
13
- export {
14
- BUILTIN_RUNTIMES,
15
- registerBuiltinRuntimes
16
- };
17
- //# sourceMappingURL=builtins-UJLMOVOV.js.map
@@ -1,48 +0,0 @@
1
- import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
- import {
3
- typebox_exports
4
- } from "./chunk-5B2AEOW5.js";
5
- import {
6
- ToolNames
7
- } from "./chunk-K6BSR66V.js";
8
- import {
9
- StringEnum
10
- } from "./chunk-VXMFAE2W.js";
11
- import {
12
- init_esm_shims
13
- } from "./chunk-3R73A4XB.js";
14
-
15
- // src/tools/monitor-surface.ts
16
- init_esm_shims();
17
- var monitorToolSurface = {
18
- name: ToolNames.Monitor,
19
- description: "Inspect known dispatched runs. Parent-model mid-run observation requires detach:true because ordinary dispatch auto-waits. wait observes without collecting. collect is the authoritative terminal batch operation; collect detached runs before final synthesis. receipt exposes stored evidence. Receipt integrity, evidence verification, briefing provenance, and project-context provenance are separate fields.",
20
- parameters: typebox_exports.Object({
21
- run_id: typebox_exports.Optional(
22
- typebox_exports.String({ description: "Run id from dispatch output or monitor list; omit with mode=list." })
23
- ),
24
- mode: typebox_exports.Optional(
25
- StringEnum(["status", "peek", "receipt", "list", "wait", "collect", "tools"], {
26
- description: "What to return. Defaults to status when run_id is present and list when it is absent. status, peek, receipt, tools, and wait each observe one run and require a run_id; list takes none. tools answers what a run executed: its tool calls with outcomes, plus per-tool totals from the receipt."
27
- })
28
- ),
29
- batch_id: typebox_exports.Optional(typebox_exports.String({ description: "Detached batch id from dispatch detach:true (mode=collect)." })),
30
- run_ids: typebox_exports.Optional(
31
- typebox_exports.Array(typebox_exports.String(), {
32
- description: "Explicit run ids for mode=collect; a one-element array is also accepted by single-run modes when run_id is absent."
33
- })
34
- ),
35
- timeout_ms: typebox_exports.Optional(
36
- typebox_exports.Number({
37
- description: "mode=wait: max ms to block (default 60000, capped at 600000); mode=collect never blocks and ignores this value with a notice."
38
- })
39
- )
40
- }),
41
- baseActionClass: "read",
42
- executionMode: "parallel"
43
- };
44
-
45
- export {
46
- monitorToolSurface
47
- };
48
- //# sourceMappingURL=chunk-5QIAJV2D.js.map