@iowarp/clio-coder 0.4.1 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (437) hide show
  1. package/CHANGELOG.md +92 -0
  2. package/CONTRIBUTING.md +59 -36
  3. package/README.md +404 -472
  4. package/SECURITY.md +2 -1
  5. package/dist/{acp-ZILU3AUO.js → acp-TMDQZDIG.js} +7 -7
  6. package/dist/{agents-HYWGBGQR.js → agents-5N5NG3XG.js} +28 -28
  7. package/dist/assets/codewiki.json +1 -1
  8. package/dist/{auth-N3QT7CBO.js → auth-Z5CCBXKQ.js} +8 -9
  9. package/dist/{builtins-UJLMOVOV.js → builtins-K6TNDT24.js} +4 -4
  10. package/dist/{chunk-GVQJ5CCZ.js → chunk-2HFQNRV3.js} +7 -7
  11. package/dist/{chunk-QMXC4JB7.js → chunk-2NHR3NAY.js} +163 -1401
  12. package/dist/chunk-2X4RYJTJ.js +39 -0
  13. package/dist/{chunk-Y45G3AXC.js → chunk-2Z2IKEXI.js} +6 -10
  14. package/dist/{chunk-EIMVLWB3.js → chunk-34BHNEE3.js} +7 -3
  15. package/dist/{chunk-GIZNH63R.js → chunk-35MSIRKH.js} +9 -4
  16. package/dist/chunk-3EBYEESD.js +314 -0
  17. package/dist/{chunk-CTJ4RNAA.js → chunk-3F7VUY77.js} +2 -2
  18. package/dist/{chunk-AP73CFDC.js → chunk-3KIPBMUA.js} +2 -2
  19. package/dist/{chunk-J5LZHVIT.js → chunk-3M6DQK6S.js} +113 -35
  20. package/dist/{chunk-VEGN6WIQ.js → chunk-462T4EGZ.js} +2 -2
  21. package/dist/{chunk-AFKWHWXF.js → chunk-4JDLP6ZS.js} +33 -16
  22. package/dist/{chunk-6FN3E6KX.js → chunk-4O6MANBS.js} +2 -2
  23. package/dist/{chunk-AKB4GYDL.js → chunk-54ODD65L.js} +5 -5
  24. package/dist/{chunk-BBTJOK6Y.js → chunk-5KW52TEP.js} +3 -3
  25. package/dist/{chunk-6CCS4G3W.js → chunk-5PFYMY2V.js} +2 -2
  26. package/dist/chunk-77QIVUZB.js +1334 -0
  27. package/dist/{chunk-7OBGU7UB.js → chunk-7BHIY2MW.js} +7 -13
  28. package/dist/{chunk-3QSOM6PA.js → chunk-AZ4WMN4W.js} +2 -2
  29. package/dist/{chunk-6NJQITNH.js → chunk-B74PXLU7.js} +6 -3
  30. package/dist/{chunk-R23Z6K6I.js → chunk-B7HM5Z7T.js} +15 -15
  31. package/dist/{chunk-R32CLGZ6.js → chunk-BO7Y52RY.js} +81 -20
  32. package/dist/{chunk-UEDMSP56.js → chunk-BYMNWQ7O.js} +123 -148
  33. package/dist/{chunk-ZJLUDYFY.js → chunk-CRFOIAX3.js} +4 -4
  34. package/dist/{chunk-2NM363SV.js → chunk-CYZW7JHJ.js} +7 -7
  35. package/dist/{chunk-6HMJX2VU.js → chunk-DYHAXKHD.js} +38 -10
  36. package/dist/{chunk-THYWACCR.js → chunk-DZAW46HP.js} +3 -3
  37. package/dist/{chunk-FYUN5KZ3.js → chunk-DZEK6CJN.js} +17 -17
  38. package/dist/{chunk-3I5NY75V.js → chunk-E7GT7O5N.js} +5 -5
  39. package/dist/{chunk-VKFQTNDV.js → chunk-F2I26BDK.js} +4 -4
  40. package/dist/{chunk-HLW2MRKE.js → chunk-F4EKGO4N.js} +3 -1
  41. package/dist/{chunk-IXJT6DCX.js → chunk-FVDGR2ZL.js} +3 -3
  42. package/dist/{chunk-TZSKNMZG.js → chunk-GTUD2WMY.js} +2 -1
  43. package/dist/{chunk-7EPLI7VL.js → chunk-HIICAHCJ.js} +2 -2
  44. package/dist/{chunk-E67WX76H.js → chunk-HKMD33FO.js} +29 -80
  45. package/dist/chunk-HLAFFSEK.js +360 -0
  46. package/dist/{chunk-UAPGZHYC.js → chunk-I64IFBLB.js} +9 -2
  47. package/dist/{chunk-XKA2ICR3.js → chunk-I66ZTYNP.js} +440 -175
  48. package/dist/{chunk-7PWAODYW.js → chunk-I7XBWTYH.js} +2 -2
  49. package/dist/{chunk-PVAMAVBB.js → chunk-IDNA72AH.js} +102 -2
  50. package/dist/{chunk-GCSMB2KY.js → chunk-IKOZFYBN.js} +1 -1
  51. package/dist/{chunk-2VG7KLYV.js → chunk-IKSLQ4XV.js} +5460 -3241
  52. package/dist/{chunk-QKIFBZKT.js → chunk-IMXMHHMQ.js} +166 -25
  53. package/dist/{chunk-74YWRRU5.js → chunk-JBCS7CRR.js} +2 -2
  54. package/dist/{chunk-BDPT6GTK.js → chunk-JWJGP5DQ.js} +2 -2
  55. package/dist/{chunk-K6BF4U2H.js → chunk-KKOJXO6R.js} +62 -14
  56. package/dist/chunk-KPXDY6QF.js +47 -0
  57. package/dist/{chunk-ABLSQ6JX.js → chunk-LJID3DYZ.js} +7 -1
  58. package/dist/{chunk-VKRH2TCS.js → chunk-M2DAX4F6.js} +2 -2
  59. package/dist/{chunk-6I5ILFOF.js → chunk-M2WXEHER.js} +2 -2
  60. package/dist/{chunk-YPI3QQCF.js → chunk-MCEPRMZW.js} +2 -4
  61. package/dist/{chunk-N5UK64DP.js → chunk-MCMZMDAC.js} +2 -2
  62. package/dist/{chunk-Y4CAGMM6.js → chunk-MNJGS2IN.js} +5 -6
  63. package/dist/{chunk-TVHHYFHE.js → chunk-NEDJ26B5.js} +2 -2
  64. package/dist/{chunk-U2WB7TZS.js → chunk-NMJXSHBJ.js} +97 -85
  65. package/dist/{chunk-HUAS7ITX.js → chunk-O3YUNJZ2.js} +13 -21
  66. package/dist/{chunk-MA3H6DM5.js → chunk-P75RZCJW.js} +25 -3
  67. package/dist/{chunk-IG7BCQBA.js → chunk-PGF63K6I.js} +2 -2
  68. package/dist/chunk-PJX3WQUQ.js +42 -0
  69. package/dist/{chunk-6DWBAZ5U.js → chunk-Q4XWMHX6.js} +4 -6
  70. package/dist/{chunk-OJTRZGR3.js → chunk-QQLGQY2A.js} +8 -8
  71. package/dist/{chunk-J4HBWF6Y.js → chunk-RLYRBIYQ.js} +115 -20
  72. package/dist/{chunk-NLFAQR7Z.js → chunk-S66XZJOF.js} +3 -23
  73. package/dist/{chunk-C537JADH.js → chunk-SSEYRH53.js} +6 -7
  74. package/dist/chunk-SZAA6XDG.js +30 -0
  75. package/dist/{chunk-MOPSG2X7.js → chunk-TPEQIQIE.js} +6 -6
  76. package/dist/{chunk-JA5QWE4Z.js → chunk-UBRFI4HS.js} +1879 -1650
  77. package/dist/{chunk-BTGG6BG2.js → chunk-UH347SHR.js} +154 -15
  78. package/dist/{chunk-5YHDIDBP.js → chunk-UH632ZYL.js} +2 -2
  79. package/dist/{chunk-BWW4HLO4.js → chunk-UXCU4E3T.js} +8 -6
  80. package/dist/{chunk-6VC4OV3Z.js → chunk-VIA6RFQZ.js} +3 -11
  81. package/dist/{chunk-ZAZB4JMW.js → chunk-VKPAQYEB.js} +27 -8
  82. package/dist/{chunk-UXN6JT4W.js → chunk-W4YEMFBX.js} +2 -2
  83. package/dist/{chunk-TD3PGPQA.js → chunk-W6NIE6OW.js} +2 -2
  84. package/dist/{chunk-TVH4ONAM.js → chunk-X7IARSHT.js} +3 -3
  85. package/dist/{chunk-PJJ6MY27.js → chunk-XE3PCIXH.js} +3 -3
  86. package/dist/{chunk-FEFIFZTL.js → chunk-XGDPUNND.js} +2 -2
  87. package/dist/{chunk-SCYB3HA4.js → chunk-XOXV5GKE.js} +51 -16
  88. package/dist/{chunk-QTFGO774.js → chunk-XQRY4DTA.js} +24 -11
  89. package/dist/{chunk-BJGUKIG4.js → chunk-YJISEZKC.js} +2 -2
  90. package/dist/{chunk-GPPB3JBE.js → chunk-ZGNYYXQ6.js} +2 -2
  91. package/dist/{chunk-SINK3QR6.js → chunk-ZNT2M6TG.js} +7 -7
  92. package/dist/{chunk-7RY5VZPH.js → chunk-ZW4HH5JJ.js} +6 -6
  93. package/dist/cli/index.js +33 -32
  94. package/dist/{clio-IT3G3VQH.js → clio-7VB377CC.js} +7 -7
  95. package/dist/{code-nav-RK6S7F6E.js → code-nav-YVLCYA7V.js} +85 -17
  96. package/dist/{config-3QZRWZJF.js → config-4HVOS65E.js} +88 -43
  97. package/dist/{configure-FL7Y3KJF.js → configure-PIWO7B24.js} +10 -10
  98. package/dist/{context-5HE7ODYK.js → context-IYEHL3WQ.js} +33 -31
  99. package/dist/{context-XNHL75JV.js → context-KQYIWPWT.js} +47 -34
  100. package/dist/{context-KYQFRVDC.js → context-N6ZE3LGJ.js} +11 -11
  101. package/dist/{context-clear-N545L53A.js → context-clear-G4OGZJDS.js} +33 -31
  102. package/dist/{context-working-set-QHKXSV2F.js → context-working-set-BWLF6LJP.js} +7 -7
  103. package/dist/{dispatch-runner-RGIE5PCT.js → dispatch-runner-2QQAITS3.js} +38 -38
  104. package/dist/{docs-5NAF6AU7.js → docs-PD3EXDKU.js} +21 -20
  105. package/dist/{doctor-ZGPEGHIP.js → doctor-LHBD36VU.js} +23 -22
  106. package/dist/{eval-GXLL44RD.js → eval-C45FYRJ6.js} +21 -20
  107. package/dist/{eval-inventory-HBWSWQOK.js → eval-inventory-6DEJPLBF.js} +2 -2
  108. package/dist/{evidence-HWLBRH3Q.js → evidence-6SHONYAF.js} +30 -28
  109. package/dist/{evolve-FTZBMNVW.js → evolve-KRKMV72X.js} +30 -28
  110. package/dist/{extensions-VHRBEID7.js → extensions-KPZ2UHBB.js} +5 -3
  111. package/dist/{fleet-CKZHJWZJ.js → fleet-IVTCKDHT.js} +62 -61
  112. package/dist/{fleet-commands-EXDXBMV6.js → fleet-commands-EDWL3IT7.js} +5 -5
  113. package/dist/{fleet-decisions-OTHB6KRL.js → fleet-decisions-YP3YEFGK.js} +4 -4
  114. package/dist/{fleet-graph-YTEZUCUT.js → fleet-graph-ZFWKHY2M.js} +16 -14
  115. package/dist/{fleet-inspect-SS6YMDCK.js → fleet-inspect-FVUNCBML.js} +31 -29
  116. package/dist/{fleet-preflight-PBY4VYOM.js → fleet-preflight-UN5XED4R.js} +2 -2
  117. package/dist/{fleet-validate-KMEM5L3S.js → fleet-validate-XOWC4HSX.js} +17 -15
  118. package/dist/{fleet-verify-QD5M7E7Q.js → fleet-verify-UN3SODEL.js} +30 -28
  119. package/dist/{fleet-view-WAMJYNDT.js → fleet-view-TWHJKCN6.js} +31 -29
  120. package/dist/{init-5XQRBOFV.js → init-T2QORQ3Y.js} +50 -49
  121. package/dist/{interop-34TVO25M.js → interop-IN5I2A66.js} +5 -5
  122. package/dist/{library-3QY6KF57.js → library-LSCATDLZ.js} +15 -13
  123. package/dist/{memory-L4UTIIIW.js → memory-HYOKAGGJ.js} +31 -29
  124. package/dist/{models-ZVX3QOWE.js → models-2GPMFYCM.js} +22 -21
  125. package/dist/{monitor-CEKVSYTS.js → monitor-E4ASVUJH.js} +34 -32
  126. package/dist/{orchestrator-77BAP6BC.js → orchestrator-DDMPR3PY.js} +984 -583
  127. package/dist/{panes-7STHOAUJ.js → panes-E3RUXOW5.js} +4 -4
  128. package/dist/{panes-SHAUIRXY.js → panes-IXKLOKA2.js} +23 -8
  129. package/dist/{reset-EOLM7GVE.js → reset-OAQP3W4O.js} +4 -4
  130. package/dist/{resources-74GKTLSF.js → resources-OTRSN34L.js} +15 -13
  131. package/dist/{run-HBAUJNNZ.js → run-5DEYH5QK.js} +60 -59
  132. package/dist/{share-G3APVLVP.js → share-IHWTLO3M.js} +19 -15
  133. package/dist/{skills-35HHUKCR.js → skills-IYMXMKW4.js} +17 -15
  134. package/dist/{skills-eval-QN4HSHDC.js → skills-eval-DROHSJAR.js} +36 -36
  135. package/dist/{skills-inventory-J357J34F.js → skills-inventory-D7X4L4ZX.js} +15 -13
  136. package/dist/{slash-commands-JZZCQA32.js → slash-commands-QBM7UZ3B.js} +21 -18
  137. package/dist/{steer-XAVHJM22.js → steer-Z5DO23FJ.js} +2 -2
  138. package/dist/{targets-DSM6CY3M.js → targets-P2FUC4IL.js} +25 -28
  139. package/dist/{terminal-lease-JOPFUVEM.js → terminal-lease-YREJ3JX2.js} +5 -5
  140. package/dist/{tools-MKNWVPBH.js → tools-5B7RO6MV.js} +4 -4
  141. package/dist/{trace-ECQ7TIYZ.js → trace-YMGMUM6A.js} +55 -7
  142. package/dist/{upgrade-H7TOM7YL.js → upgrade-PXK3S2YM.js} +11 -9
  143. package/dist/{usage-X52N3IDJ.js → usage-ME5MPXGX.js} +36 -34
  144. package/dist/{verifiers-EJTVVSMA.js → verifiers-BVZ7IWOO.js} +5 -5
  145. package/dist/{verify-YJL6XET2.js → verify-5K7ZKQFC.js} +4 -4
  146. package/dist/{web-fetch-MPIFL3LL.js → web-fetch-MPARV2K7.js} +2 -2
  147. package/dist/{wiki-generate-4NDZTQ4B.js → wiki-generate-F5W5QTYY.js} +48 -47
  148. package/dist/{with-panes-OBOBFIIR.js → with-panes-BYOJCLAM.js} +51 -255
  149. package/dist/worker/entry.js +45 -30
  150. package/docs/README.md +176 -81
  151. package/docs/{acp.md → architecture/acp.md} +36 -20
  152. package/docs/{alcf-provider.md → architecture/alcf-provider.md} +8 -5
  153. package/docs/{architecture.md → architecture/architecture.md} +43 -22
  154. package/docs/{artifact-placement.md → architecture/artifact-placement.md} +26 -23
  155. package/docs/architecture/artifact-versions.md +90 -0
  156. package/docs/{capacity-and-scheduling.md → architecture/capacity-and-scheduling.md} +26 -13
  157. package/docs/{context-engine.md → architecture/context-engine.md} +25 -25
  158. package/docs/{context-working-set.md → architecture/context-working-set.md} +13 -10
  159. package/docs/{dispatch-architecture-rationale.md → architecture/dispatch-architecture-rationale.md} +12 -9
  160. package/docs/{dispatch-typed-intent.md → architecture/dispatch-typed-intent.md} +68 -46
  161. package/docs/{evidence-and-memory.md → architecture/evidence-and-memory.md} +23 -16
  162. package/docs/{middleware-and-components.md → architecture/middleware-and-components.md} +11 -5
  163. package/docs/{model-catalog.md → architecture/model-catalog.md} +40 -17
  164. package/docs/{observability.md → architecture/observability.md} +26 -13
  165. package/docs/{pi-boundary.md → architecture/pi-boundary.md} +24 -11
  166. package/docs/{prompt-envelope-and-tools.md → architecture/prompt-envelope-and-tools.md} +55 -20
  167. package/docs/{provider-adapter-cookbook.md → architecture/provider-adapter-cookbook.md} +35 -24
  168. package/docs/{safety-model.md → architecture/safety-model.md} +20 -15
  169. package/docs/{session-lifecycle.md → architecture/session-lifecycle.md} +8 -5
  170. package/docs/architecture/time-conventions.md +125 -0
  171. package/docs/{trace-store.md → architecture/trace-store.md} +13 -5
  172. package/docs/{tui-design.md → architecture/tui-design.md} +13 -13
  173. package/docs/{worker-dispatch-mechanics.md → architecture/worker-dispatch-mechanics.md} +27 -30
  174. package/docs/{built-in-agents.md → guide/built-in-agents.md} +50 -34
  175. package/docs/{commands-and-modes.md → guide/commands-and-modes.md} +65 -60
  176. package/docs/{configuration-and-targets.md → guide/configuration-and-targets.md} +227 -289
  177. package/docs/guide/configuration-reference.md +1158 -0
  178. package/docs/{environment-variables.md → guide/environment-variables.md} +31 -28
  179. package/docs/{exit-codes-and-output.md → guide/exit-codes-and-output.md} +6 -3
  180. package/docs/{extensions-and-sharing.md → guide/extensions-and-sharing.md} +41 -14
  181. package/docs/{fleet-dispatch.md → guide/fleet-dispatch.md} +39 -43
  182. package/docs/{glossary.md → guide/glossary.md} +14 -11
  183. package/docs/{installation-and-lifecycle.md → guide/installation-and-lifecycle.md} +44 -13
  184. package/docs/guide/panes-and-files.md +290 -0
  185. package/docs/{proactive-memory.md → guide/proactive-memory.md} +79 -66
  186. package/docs/{resource-library.md → guide/resource-library.md} +13 -4
  187. package/docs/{skills-marketplace.md → guide/skills-marketplace.md} +7 -3
  188. package/docs/{tool-usage.md → guide/tool-usage.md} +87 -23
  189. package/docs/{troubleshooting.md → guide/troubleshooting.md} +9 -4
  190. package/docs/{config-knobs-audit.md → history/config-knobs-audit.md} +11 -11
  191. package/docs/{release-cut-checklist.md → history/release-cut-checklist.md} +29 -2
  192. package/docs/{development-pipeline.md → process/development-pipeline.md} +24 -26
  193. package/docs/process/documentation-coverage.md +100 -0
  194. package/docs/process/documentation-guide.md +187 -0
  195. package/docs/{eval-runner.md → process/eval-runner.md} +41 -50
  196. package/docs/{evals-internal.md → process/evals-internal.md} +10 -10
  197. package/docs/{evolution.md → process/evolution.md} +2 -2
  198. package/docs/{fleet-demo-runbook.md → process/fleet-demo-runbook.md} +11 -7
  199. package/docs/{git-commit-provenance.md → process/git-commit-provenance.md} +11 -4
  200. package/docs/{performance-methodology.md → process/performance-methodology.md} +87 -69
  201. package/docs/{scientific-validation.md → process/scientific-validation.md} +4 -4
  202. package/evals/README.md +2 -2
  203. package/package.json +9 -7
  204. package/skills/README.md +46 -37
  205. package/skills/coding/ast-grep/SKILL.md +2 -2
  206. package/skills/coding/coding-standards/SKILL.md +2 -2
  207. package/skills/coding/prototype/SKILL.md +2 -2
  208. package/skills/coding/tdd/SKILL.md +2 -2
  209. package/skills/context/context-handoff/SKILL.md +2 -2
  210. package/skills/context/context-prime/SKILL.md +2 -2
  211. package/skills/git/file-ticket/SKILL.md +2 -2
  212. package/skills/git/fix-issue/SKILL.md +3 -3
  213. package/skills/git/resolve-merge-conflicts/SKILL.md +2 -2
  214. package/skills/git/ship/SKILL.md +2 -2
  215. package/skills/git/worktree-create/SKILL.md +2 -2
  216. package/skills/git/worktree-merge/SKILL.md +2 -2
  217. package/skills/meta/clio-coder-dev/SKILL.md +9 -5
  218. package/skills/meta/clio-coder-dev/evals.md +3 -2
  219. package/skills/meta/clio-coder-test/SKILL.md +102 -95
  220. package/skills/meta/clio-coder-test/evals.md +9 -4
  221. package/skills/meta/clio-coder-test/references/harness.md +100 -124
  222. package/skills/meta/clio-coder-test/references/test-map.md +77 -50
  223. package/skills/meta/credentials/SKILL.md +2 -2
  224. package/skills/meta/find-skills/SKILL.md +2 -2
  225. package/skills/meta/herdr/SKILL.md +2 -2
  226. package/skills/meta/skill-craft/SKILL.md +22 -16
  227. package/skills/planning/architecture/SKILL.md +2 -2
  228. package/skills/planning/backlog/SKILL.md +2 -2
  229. package/skills/planning/prd/SKILL.md +2 -2
  230. package/skills/planning/product-intent/SKILL.md +2 -2
  231. package/skills/planning/tech-spec/SKILL.md +2 -2
  232. package/skills/registry.yaml +62 -62
  233. package/skills/research/arxiv-literature/SKILL.md +2 -2
  234. package/skills/research/experiment-protocol/SKILL.md +2 -2
  235. package/skills/research/scientific-debugging/SKILL.md +2 -2
  236. package/skills/research/scientific-modernization/SKILL.md +2 -2
  237. package/skills/skill-marketplace.json +62 -62
  238. package/skills/workflow/cut-it/SKILL.md +2 -2
  239. package/skills/workflow/design-council/SKILL.md +2 -2
  240. package/skills/workflow/grill-me/SKILL.md +2 -2
  241. package/skills/workflow/workflow-distiller/SKILL.md +2 -2
  242. package/src/cli/args.ts +2 -2
  243. package/src/cli/bootstrap-generate.ts +1 -1
  244. package/src/cli/config-inspect.ts +65 -12
  245. package/src/cli/configure.ts +0 -4
  246. package/src/cli/docs.ts +22 -14
  247. package/src/cli/doctor-naming.ts +5 -5
  248. package/src/cli/doctor-toolchain.ts +3 -3
  249. package/src/cli/eval.ts +1 -2
  250. package/src/cli/extensions.ts +2 -1
  251. package/src/cli/fleet.ts +1 -1
  252. package/src/cli/index.ts +2 -1
  253. package/src/cli/internal-dispatch.ts +3 -4
  254. package/src/cli/panes.ts +19 -5
  255. package/src/cli/run.ts +2 -2
  256. package/src/cli/share.ts +5 -1
  257. package/src/cli/skills-eval.ts +3 -3
  258. package/src/cli/targets.ts +2 -6
  259. package/src/cli/trace.ts +55 -4
  260. package/src/cli/wiki-generate.ts +1 -1
  261. package/src/core/artifact-paths.ts +1 -1
  262. package/src/core/bash-exec.ts +131 -86
  263. package/src/core/bus-events.ts +51 -6
  264. package/src/core/config.ts +5 -1
  265. package/src/core/defaults.ts +7 -4
  266. package/src/core/dispatch-outcome.ts +16 -0
  267. package/src/core/guardrails.ts +10 -49
  268. package/src/core/prompt-hint.ts +9 -0
  269. package/src/domains/agents/builtins/architect.md +2 -3
  270. package/src/domains/agents/builtins/coder.md +3 -2
  271. package/src/domains/agents/builtins/debugger.md +2 -2
  272. package/src/domains/agents/builtins/documenter.md +2 -2
  273. package/src/domains/agents/builtins/git-master.md +1 -1
  274. package/src/domains/agents/builtins/oracle.md +1 -1
  275. package/src/domains/agents/builtins/provenance.md +1 -1
  276. package/src/domains/agents/builtins/researcher.md +1 -1
  277. package/src/domains/agents/builtins/scout.md +1 -1
  278. package/src/domains/agents/builtins/tester.md +2 -2
  279. package/src/domains/agents/builtins/verifier.md +2 -2
  280. package/src/domains/agents/builtins/wiki-writer.md +1 -1
  281. package/src/domains/agents/catalog.ts +12 -14
  282. package/src/domains/agents/contract.ts +2 -0
  283. package/src/domains/agents/extension.ts +23 -1
  284. package/src/domains/config/keybindings.ts +8 -0
  285. package/src/domains/context/extension.ts +0 -3
  286. package/src/domains/context/working-set/path-index.ts +1 -0
  287. package/src/domains/dispatch/capability-match.ts +10 -0
  288. package/src/domains/dispatch/extension.ts +105 -22
  289. package/src/domains/dispatch/host-verification.ts +435 -39
  290. package/src/domains/dispatch/intent-requirements.ts +10 -0
  291. package/src/domains/dispatch/intent.ts +18 -1
  292. package/src/domains/dispatch/path-scope.ts +235 -24
  293. package/src/domains/dispatch/run-event-journal.ts +4 -15
  294. package/src/domains/dispatch/state.ts +2 -3
  295. package/src/domains/dispatch/transport.ts +45 -21
  296. package/src/domains/dispatch/types.ts +55 -3
  297. package/src/domains/eval/artifacts/store.ts +5 -0
  298. package/src/domains/eval/store.ts +8 -1
  299. package/src/domains/evidence/trust-status.ts +10 -1
  300. package/src/domains/extensions/contract.ts +15 -1
  301. package/src/domains/extensions/discovery.ts +238 -41
  302. package/src/domains/extensions/extension.ts +105 -6
  303. package/src/domains/extensions/index.ts +24 -0
  304. package/src/domains/extensions/integrity.ts +189 -0
  305. package/src/domains/extensions/manager.ts +17 -1
  306. package/src/domains/extensions/resource-path.ts +27 -0
  307. package/src/domains/extensions/resources.ts +18 -38
  308. package/src/domains/extensions/snapshot-store.ts +39 -0
  309. package/src/domains/extensions/snapshot.ts +180 -0
  310. package/src/domains/extensions/state.ts +385 -57
  311. package/src/domains/extensions/types.ts +118 -1
  312. package/src/domains/lifecycle/migrations/2026-09-01-extension-install-digests.ts +27 -0
  313. package/src/domains/lifecycle/migrations/index.ts +2 -0
  314. package/src/domains/lifecycle/naming-resources.ts +19 -4
  315. package/src/domains/lifecycle/naming-yazi.ts +10 -5
  316. package/src/domains/middleware/contract.ts +26 -0
  317. package/src/domains/middleware/extension.ts +24 -24
  318. package/src/domains/middleware/hook-receipts.ts +27 -4
  319. package/src/domains/middleware/hooks-io.ts +65 -32
  320. package/src/domains/middleware/hooks.ts +64 -0
  321. package/src/domains/middleware/index.ts +28 -4
  322. package/src/domains/middleware/registrations.ts +326 -0
  323. package/src/domains/middleware/runtime.ts +28 -0
  324. package/src/domains/middleware/snapshot.ts +20 -7
  325. package/src/domains/mux/contract.ts +38 -0
  326. package/src/domains/mux/detect.ts +6 -13
  327. package/src/domains/mux/index.ts +1 -1
  328. package/src/domains/mux/operations.ts +44 -5
  329. package/src/domains/mux/yazi/assets/yazi.toml +2 -2
  330. package/src/domains/mux/yazi/session.ts +53 -4
  331. package/src/domains/mux/yazi/theme.ts +117 -17
  332. package/src/domains/observability/contract.ts +10 -11
  333. package/src/domains/observability/extension.ts +11 -3
  334. package/src/domains/observability/projection.ts +14 -90
  335. package/src/domains/observability/trace-store.ts +43 -7
  336. package/src/domains/prompts/compiler.ts +73 -53
  337. package/src/domains/prompts/contract.ts +15 -3
  338. package/src/domains/prompts/extension.ts +97 -9
  339. package/src/domains/prompts/fragments/identity/clio-worker.md +1 -3
  340. package/src/domains/prompts/fragments/identity/clio.md +6 -12
  341. package/src/domains/prompts/fragments/identity/docs-routing.md +1 -2
  342. package/src/domains/prompts/fragments/identity/self-awareness.md +3 -11
  343. package/src/domains/prompts/fragments/operating/contract.md +7 -15
  344. package/src/domains/prompts/fragments/operating/delegation.md +32 -34
  345. package/src/domains/prompts/fragments/operating/skills.md +10 -24
  346. package/src/domains/prompts/fragments/operating/worker.md +1 -8
  347. package/src/domains/providers/index.ts +1 -1
  348. package/src/domains/providers/model-runtime-capabilities.ts +85 -21
  349. package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +669 -104
  350. package/src/domains/providers/runtime-resolution.ts +31 -0
  351. package/src/domains/providers/runtimes/common/probe-helpers.ts +7 -2
  352. package/src/domains/providers/runtimes/local-native/llamacpp.ts +9 -1
  353. package/src/domains/providers/types/cost-provenance.ts +19 -0
  354. package/src/domains/providers/types/local-model-quirks.ts +85 -37
  355. package/src/domains/resources/skills/loader.ts +16 -19
  356. package/src/domains/safety/call-target.ts +1 -1
  357. package/src/domains/safety/loop-detector.ts +7 -4
  358. package/src/domains/session/task-board.ts +10 -9
  359. package/src/domains/share/archive.ts +164 -7
  360. package/src/engine/acp/server.ts +62 -9
  361. package/src/engine/apis/llamacpp-residency.ts +3 -4
  362. package/src/engine/apis/lmstudio.ts +3 -3
  363. package/src/engine/apis/ollama-native.ts +6 -6
  364. package/src/engine/apis/openai-completions.ts +28 -25
  365. package/src/engine/apis/output-budget.ts +8 -18
  366. package/src/engine/apis/residency.ts +8 -27
  367. package/src/engine/gemma-channel-filter.ts +19 -0
  368. package/src/engine/loop-guard.ts +92 -12
  369. package/src/engine/worker-runtime.ts +40 -11
  370. package/src/engine/worker-tools.ts +3 -1
  371. package/src/entry/extension-hook-sources.ts +28 -0
  372. package/src/entry/extension-reload.ts +309 -0
  373. package/src/entry/orchestrator.ts +59 -35
  374. package/src/interactive/application-controller.ts +2 -1
  375. package/src/interactive/bus-notices.ts +8 -1
  376. package/src/interactive/chat-loop-messages.ts +3 -13
  377. package/src/interactive/chat-loop.ts +10 -1
  378. package/src/interactive/chat-panel.ts +36 -13
  379. package/src/interactive/chat-renderer.ts +71 -7
  380. package/src/interactive/dispatch-board.ts +6 -11
  381. package/src/interactive/footer/widgets.ts +13 -0
  382. package/src/interactive/interactive-application.ts +39 -4
  383. package/src/interactive/interactive-input-runtime.ts +4 -0
  384. package/src/interactive/interactive-presentation.ts +2 -2
  385. package/src/interactive/interactive-slash-runtime.ts +2 -0
  386. package/src/interactive/overlays/extensions.ts +9 -1
  387. package/src/interactive/overlays/help-reference.ts +13 -0
  388. package/src/interactive/overlays/settings.ts +27 -16
  389. package/src/interactive/panes-runtime.ts +111 -35
  390. package/src/interactive/prompt-cache-identity.ts +88 -0
  391. package/src/interactive/slash-commands.ts +129 -14
  392. package/src/interactive/stream-pacing-policy.ts +0 -23
  393. package/src/interactive/turn-context.ts +30 -15
  394. package/src/interactive/yazi-bridge.ts +60 -6
  395. package/src/tools/agent-tools.ts +30 -1
  396. package/src/tools/artifact.ts +2 -2
  397. package/src/tools/ask-user.ts +3 -3
  398. package/src/tools/bash.ts +1 -1
  399. package/src/tools/bootstrap.ts +4 -0
  400. package/src/tools/builtin-tool-catalog.ts +52 -22
  401. package/src/tools/codewiki/code-nav-surface.ts +6 -0
  402. package/src/tools/codewiki/code-nav.ts +99 -13
  403. package/src/tools/context/docs-engine.ts +20 -7
  404. package/src/tools/context/index.ts +29 -12
  405. package/src/tools/core-bootstrap.ts +28 -6
  406. package/src/tools/credential-present.ts +1 -2
  407. package/src/tools/dispatch-arguments.ts +5 -1
  408. package/src/tools/dispatch-plan.ts +48 -4
  409. package/src/tools/dispatch-run-events.ts +1 -1
  410. package/src/tools/dispatch-schema.ts +338 -0
  411. package/src/tools/dispatch-types.ts +3 -0
  412. package/src/tools/dispatch.ts +9 -254
  413. package/src/tools/ledger.ts +3 -5
  414. package/src/tools/monitor-surface.ts +5 -13
  415. package/src/tools/observation.ts +4 -5
  416. package/src/tools/panes-surface.ts +4 -11
  417. package/src/tools/panes.ts +4 -2
  418. package/src/tools/policy.ts +15 -2
  419. package/src/tools/read.ts +5 -6
  420. package/src/tools/registry.ts +30 -7
  421. package/src/tools/result-shaping.ts +18 -14
  422. package/src/tools/steer-surface.ts +1 -1
  423. package/src/tools/tasks.ts +1 -1
  424. package/src/tools/truncate.ts +6 -5
  425. package/src/tools/verify/surface.ts +6 -12
  426. package/src/tools/web-fetch-surface.ts +1 -3
  427. package/dist/chunk-5QIAJV2D.js +0 -48
  428. package/dist/chunk-JZWT5J3Y.js +0 -814
  429. package/dist/chunk-K7VKOLQQ.js +0 -15
  430. package/dist/chunk-PMZCIOCJ.js +0 -25
  431. package/dist/chunk-SUW5DORT.js +0 -819
  432. package/dist/chunk-UOV2BYIW.js +0 -107
  433. package/dist/chunk-WR6U3OVP.js +0 -45
  434. package/docs/artifact-versions.md +0 -67
  435. package/docs/documentation-coverage.md +0 -46
  436. package/docs/documentation-guide.md +0 -167
  437. package/docs/time-conventions.md +0 -101
@@ -14,15 +14,15 @@ import {
14
14
  import {
15
15
  getSharedBus
16
16
  } from "./chunk-PMZVFWSR.js";
17
- import {
18
- BusChannels
19
- } from "./chunk-HLW2MRKE.js";
20
17
  import {
21
18
  readSettings
22
- } from "./chunk-EIMVLWB3.js";
19
+ } from "./chunk-34BHNEE3.js";
23
20
  import {
24
21
  warnLegacyNaming
25
22
  } from "./chunk-D7E7WCDF.js";
23
+ import {
24
+ BusChannels
25
+ } from "./chunk-F4EKGO4N.js";
26
26
  import {
27
27
  sleep
28
28
  } from "./chunk-EBY63B7G.js";
@@ -30,14 +30,19 @@ import {
30
30
  CLIO_CONTEXT_WINDOW_WARN_BELOW,
31
31
  CLIO_MIN_CONTEXT_WINDOW,
32
32
  CLIO_MIN_MAX_OUTPUT_TOKENS,
33
+ EMPTY_CAPABILITIES,
34
+ VALID_THINKING_LEVELS,
35
+ availableThinkingLevels,
33
36
  extractLocalModelQuirks,
37
+ inferLocalModelFamily,
38
+ isHarmonyModelId,
34
39
  listLmStudioModels,
35
40
  lmStudioReasoningEffort,
36
41
  lmStudioRootUrl,
37
42
  registerBuiltinRuntimes,
38
43
  requestLmStudioJson,
39
44
  resolveLmStudioInstance
40
- } from "./chunk-QKIFBZKT.js";
45
+ } from "./chunk-IMXMHHMQ.js";
41
46
  import {
42
47
  listKnownModelsForRuntime
43
48
  } from "./chunk-CDNVLKUX.js";
@@ -70,7 +75,6 @@ import {
70
75
  } from "./chunk-NUGM5KR6.js";
71
76
  import {
72
77
  capabilitiesFromCatalogModel,
73
- catalogThinkingLevelsForRuntime,
74
78
  getCatalogModelForRuntime,
75
79
  mergeCapabilities,
76
80
  resolveCostProvenance
@@ -430,7 +434,7 @@ function evictionNotice(facts, entry) {
430
434
  facts,
431
435
  "swap",
432
436
  "warning",
433
- `swapping resident '${entry.modelId}' for requested '${facts.keepModelId}' on '${facts.targetId}' (Clio did not load it; recorded transition instead of a silent unload; set CLIO_CODER_RESIDENCY=observe or lifecycle: user-managed to forbid swaps).`,
437
+ `swapping resident '${entry.modelId}' for requested '${facts.keepModelId}' on '${facts.targetId}' (Clio did not load it; recorded transition instead of a silent unload; set lifecycle: user-managed to forbid swaps).`,
434
438
  {
435
439
  ...entry.sizeVramBytes !== void 0 ? { freedVramBytes: entry.sizeVramBytes } : {},
436
440
  swappedOut: entry.modelId
@@ -733,16 +737,8 @@ async function reconcileResidency(adapter) {
733
737
  }
734
738
  return plan;
735
739
  }
736
- function residencyManaged(env = process.env) {
737
- const opt = (env.CLIO_CODER_RESIDENCY ?? "").trim().toLowerCase();
738
- if (opt === "observe" || opt === "off" || opt === "0" || opt === "false" || opt === "user" || opt === "user-managed") {
739
- return false;
740
- }
741
- return true;
742
- }
743
- function residencyManagedFor(lifecycle, env = process.env) {
744
- if (lifecycle === "user-managed") return false;
745
- return residencyManaged(env);
740
+ function residencyManagedFor(lifecycle) {
741
+ return lifecycle !== "user-managed";
746
742
  }
747
743
 
748
744
  // src/core/run-overrides.ts
@@ -790,97 +786,6 @@ async function withRunOverrides(overrides, fn) {
790
786
  }
791
787
  }
792
788
 
793
- // src/domains/providers/types/capability-flags.ts
794
- init_esm_shims();
795
-
796
- // src/domains/providers/model-family.ts
797
- init_esm_shims();
798
- function normalizeModelIdForFamily(modelId) {
799
- return (modelId ?? "").trim().toLowerCase().replace(/_/g, "-");
800
- }
801
- function isHarmonyModelId(modelId) {
802
- return normalizeModelIdForFamily(modelId).includes("gpt-oss");
803
- }
804
- function inferLocalModelFamily(modelId) {
805
- const normalized = normalizeModelIdForFamily(modelId);
806
- if (normalized.length === 0) return "unknown";
807
- if (normalized.includes("gpt-oss")) return "openai-gpt-oss";
808
- if (normalized.includes("nemotron-cascade-2") || normalized.includes("nemotron-cascade2")) {
809
- return "nemotron-cascade-2";
810
- }
811
- if (normalized.includes("nemotron-3-nano-omni") || normalized.includes("nemotron-nano-omni")) {
812
- return "nemotron-3-nano-omni";
813
- }
814
- if (normalized.includes("qwen3")) return "qwen3";
815
- if (normalized.includes("gemma-4") || normalized.includes("gemma4") || normalized.includes("gemopus")) {
816
- return "gemma-4";
817
- }
818
- return "unknown";
819
- }
820
-
821
- // src/domains/providers/types/capability-flags.ts
822
- var EMPTY_CAPABILITIES = {
823
- chat: false,
824
- tools: false,
825
- reasoning: false,
826
- vision: false,
827
- audio: false,
828
- embeddings: false,
829
- rerank: false,
830
- fim: false,
831
- contextWindow: 0,
832
- maxTokens: 0
833
- };
834
- var VALID_THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
835
- var THINKING_LEVELS_WITHOUT_XHIGH = ["off", "minimal", "low", "medium", "high"];
836
- var THINKING_LEVELS_OPENAI_5_1_MINI = ["off", "minimal", "low", "medium", "high"];
837
- var THINKING_LEVELS_OPENAI_5_2_PLUS = [
838
- "off",
839
- "minimal",
840
- "low",
841
- "medium",
842
- "high",
843
- "xhigh"
844
- ];
845
- var THINKING_LEVELS_OPENAI_5_6 = [...THINKING_LEVELS_OPENAI_5_2_PLUS, "max"];
846
- var THINKING_LEVELS_HARMONY = ["low", "medium", "high"];
847
- function normalizeModelId(modelId) {
848
- if (!modelId) return void 0;
849
- const trimmed = modelId.trim();
850
- if (trimmed.length === 0) return void 0;
851
- return trimmed.includes("/") ? trimmed.split("/").pop() ?? trimmed : trimmed;
852
- }
853
- function availableOpenAICodexThinkingLevels(modelId) {
854
- const normalized = normalizeModelId(modelId);
855
- if (!normalized) return VALID_THINKING_LEVELS;
856
- if (normalized === "gpt-5.1-codex-mini") return THINKING_LEVELS_OPENAI_5_1_MINI;
857
- if (normalized.startsWith("gpt-5.2") || normalized.startsWith("gpt-5.3") || normalized.startsWith("gpt-5.4") || normalized.startsWith("gpt-5.5")) {
858
- return THINKING_LEVELS_OPENAI_5_2_PLUS;
859
- }
860
- if (normalized.startsWith("gpt-5.6")) {
861
- return THINKING_LEVELS_OPENAI_5_6;
862
- }
863
- return THINKING_LEVELS_WITHOUT_XHIGH;
864
- }
865
- function availableThinkingLevels(caps, options) {
866
- if (!caps.reasoning) return ["off"];
867
- if (caps.thinkingFormat === "harmony" || isHarmonyModelId(options?.modelId)) {
868
- return THINKING_LEVELS_HARMONY;
869
- }
870
- const catalogLevels = options?.runtimeId && options.modelId ? catalogThinkingLevelsForRuntime(options.runtimeId, options.modelId) : void 0;
871
- if (catalogLevels) {
872
- if (!catalogLevels.includes("xhigh")) return catalogLevels.filter((level) => level !== "max");
873
- return catalogLevels;
874
- }
875
- if (caps.thinkingFormat === "openai-codex" || options?.runtimeId === "openai-codex") {
876
- return availableOpenAICodexThinkingLevels(options?.modelId);
877
- }
878
- if (caps.thinkingFormat === "anthropic-extended") {
879
- return THINKING_LEVELS_WITHOUT_XHIGH;
880
- }
881
- return THINKING_LEVELS_WITHOUT_XHIGH;
882
- }
883
-
884
789
  // src/domains/providers/model-capabilities.ts
885
790
  init_esm_shims();
886
791
  function normalizedModelId(wireModelId) {
@@ -1140,14 +1045,15 @@ function supportedBudgetLevels(baseLevels, quirks) {
1140
1045
  function supportedEffortLevels(baseLevels, quirks, harmony) {
1141
1046
  if (harmony) return HARMONY_LEVELS;
1142
1047
  const efforts = quirks?.thinking?.effortByLevel;
1143
- if (!efforts) return baseLevels;
1048
+ const byLevelValues = (quirks?.chatTemplateKwargs ?? quirks?.thinking?.chatTemplateKwargs)?.byLevel?.values;
1049
+ if (!efforts && !byLevelValues) return baseLevels;
1144
1050
  const out = [];
1145
1051
  if (baseLevels.includes("off")) out.push("off");
1146
- if (efforts.minimal !== void 0) out.push("minimal");
1147
- if (efforts.low !== void 0) out.push("low");
1148
- if (efforts.medium !== void 0) out.push("medium");
1149
- if (efforts.high !== void 0) out.push("high");
1150
- if (efforts.xhigh !== void 0) out.push("xhigh");
1052
+ if (efforts?.minimal !== void 0 || byLevelValues?.minimal !== void 0) out.push("minimal");
1053
+ if (efforts?.low !== void 0 || byLevelValues?.low !== void 0) out.push("low");
1054
+ if (efforts?.medium !== void 0 || byLevelValues?.medium !== void 0) out.push("medium");
1055
+ if (efforts?.high !== void 0 || byLevelValues?.high !== void 0) out.push("high");
1056
+ if (efforts?.xhigh !== void 0 || byLevelValues?.xhigh !== void 0) out.push("xhigh");
1151
1057
  return out.length > 0 ? out : baseLevels;
1152
1058
  }
1153
1059
  function restrictThinkingLevelsByMechanism(levels, mechanism, quirks, options) {
@@ -1283,12 +1189,45 @@ function resolveThinkingCapability(input, quirks, parser) {
1283
1189
  budgetEnforcement
1284
1190
  };
1285
1191
  }
1286
- var REASONING_EFFORT_ON_OFF_RUNTIMES = /* @__PURE__ */ new Set(["lmstudio"]);
1192
+ var REASONING_EFFORT_ONLY_RUNTIMES = /* @__PURE__ */ new Set(["lmstudio"]);
1287
1193
  function onOffReasoningEffort(thinkingActive) {
1288
1194
  return thinkingActive ? "low" : "none";
1289
1195
  }
1290
- function resolveRequestCapability(thinking, parser, runtimeId) {
1196
+ function resolveFamilyChatTemplateKwargs(quirks, effectiveLevel, configuredLevel) {
1197
+ const block = quirks?.chatTemplateKwargs ?? quirks?.thinking?.chatTemplateKwargs;
1198
+ if (!block) return void 0;
1199
+ const out = {};
1200
+ if (block.static) {
1201
+ for (const [k, v] of Object.entries(block.static)) {
1202
+ out[k] = v;
1203
+ }
1204
+ }
1205
+ if (block.byLevel) {
1206
+ const byLevel = block.byLevel;
1207
+ const val = byLevel.values[effectiveLevel] ?? byLevel.values[configuredLevel];
1208
+ if (val !== void 0) {
1209
+ out[byLevel.key] = val;
1210
+ }
1211
+ }
1212
+ return Object.keys(out).length > 0 ? out : void 0;
1213
+ }
1214
+ function familyKwargsDeclaredUnsupported(quirks, runtimeId) {
1215
+ if (runtimeId !== "lmstudio") return false;
1216
+ const block = quirks?.chatTemplateKwargs ?? quirks?.thinking?.chatTemplateKwargs;
1217
+ return block?.lmstudio === "unsupported" || block?.byLevel?.lmstudio === "unsupported";
1218
+ }
1219
+ function resolveRequestCapability(thinking, parser, runtimeId, quirks) {
1291
1220
  const request = { budgetEnforcement: thinking.budgetEnforcement };
1221
+ const effortOnly = REASONING_EFFORT_ONLY_RUNTIMES.has(runtimeId);
1222
+ const familyKwargs = resolveFamilyChatTemplateKwargs(quirks, thinking.effectiveLevel, thinking.configuredLevel);
1223
+ if (familyKwargs && effortOnly) {
1224
+ request.undeliverableChatTemplateKwargs = {
1225
+ keys: Object.keys(familyKwargs),
1226
+ declaredUnsupported: familyKwargsDeclaredUnsupported(quirks, runtimeId)
1227
+ };
1228
+ } else if (familyKwargs) {
1229
+ request.chatTemplateKwargs = { ...familyKwargs };
1230
+ }
1292
1231
  if (thinking.mechanism === "effort-levels" && thinking.effort) {
1293
1232
  request.reasoningEffort = thinking.effort;
1294
1233
  }
@@ -1299,15 +1238,16 @@ function resolveRequestCapability(thinking, parser, runtimeId) {
1299
1238
  request.budgetTokens = thinking.budgetTokens;
1300
1239
  }
1301
1240
  if (thinking.mechanism === "on-off" && thinking.chatTemplateKwargs) {
1302
- request.chatTemplateKwargs = { ...thinking.chatTemplateKwargs };
1303
- if (REASONING_EFFORT_ON_OFF_RUNTIMES.has(runtimeId)) {
1304
- request.reasoningEffort = onOffReasoningEffort(thinking.thinkingActive);
1305
- }
1241
+ request.chatTemplateKwargs = { ...request.chatTemplateKwargs ?? {}, ...thinking.chatTemplateKwargs };
1306
1242
  }
1307
1243
  if (parser === "harmony" && thinking.effort) {
1308
1244
  request.reasoningEffort = thinking.effort;
1309
1245
  request.chatTemplateKwargs = { ...request.chatTemplateKwargs ?? {}, reasoning_effort: thinking.effort };
1310
1246
  }
1247
+ if (effortOnly && thinking.mechanism !== "none" && thinking.mechanism !== "always-on") {
1248
+ if (!thinking.thinkingActive) request.reasoningEffort = onOffReasoningEffort(false);
1249
+ else if (thinking.mechanism === "on-off") request.reasoningEffort = onOffReasoningEffort(true);
1250
+ }
1311
1251
  return request;
1312
1252
  }
1313
1253
  function resolveModelRuntimeCapabilities(input) {
@@ -1323,7 +1263,7 @@ function resolveModelRuntimeCapabilities(input) {
1323
1263
  family,
1324
1264
  capabilities: input.capabilities,
1325
1265
  thinking,
1326
- request: resolveRequestCapability(thinking, parser, input.runtimeId),
1266
+ request: resolveRequestCapability(thinking, parser, input.runtimeId, quirks),
1327
1267
  response: {
1328
1268
  parser,
1329
1269
  stripTokenizerSentinels: true
@@ -1821,6 +1761,20 @@ function appendThinkingDiagnostics(diagnostics, resolved, requested) {
1821
1761
  const severity = thinking.noticeKind === "unsupported" || thinking.noticeKind === "always-on" || thinking.noticeKind === "ignored-on-off" ? "warning" : "info";
1822
1762
  diagnostics.push(diagnostic(severity, `thinking-${thinking.noticeKind}`, thinking.notice));
1823
1763
  }
1764
+ var CHAT_TEMPLATE_KWARGS_UNDELIVERABLE = "chat-template-kwargs-undeliverable";
1765
+ function appendChatTemplateKwargsDiagnostics(diagnostics, resolved) {
1766
+ const undeliverable = resolved.request.undeliverableChatTemplateKwargs;
1767
+ if (!undeliverable || undeliverable.keys.length === 0) return;
1768
+ const keys = undeliverable.keys.join(", ");
1769
+ const declared = undeliverable.declaredUnsupported ? "its family entry marks them unsupported there" : "its family entry does not say so";
1770
+ diagnostics.push(
1771
+ diagnostic(
1772
+ "warning",
1773
+ CHAT_TEMPLATE_KWARGS_UNDELIVERABLE,
1774
+ `chat-template kwargs ${keys} cannot reach ${resolved.runtimeId}, which ignores chat_template_kwargs; ${resolved.modelId} runs without them and ${declared}`
1775
+ )
1776
+ );
1777
+ }
1824
1778
  function nonNegativeFiniteNumber(value) {
1825
1779
  return typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : void 0;
1826
1780
  }
@@ -1948,6 +1902,7 @@ function resolveRuntimeTarget(providers, input) {
1948
1902
  const decisions = capabilityDecisions(runtime, capabilities);
1949
1903
  appendCapabilityDiagnostics(diagnostics, input, capabilities, decisions, targetId);
1950
1904
  appendThinkingDiagnostics(diagnostics, modelRuntime, requestedThinkingLevel);
1905
+ appendChatTemplateKwargsDiagnostics(diagnostics, modelRuntime);
1951
1906
  if (hasError(diagnostics)) return { ok: false, diagnostics };
1952
1907
  const resolved = {
1953
1908
  targetId: target.id,
@@ -1987,6 +1942,7 @@ function modelHintPatch(target, model) {
1987
1942
  function withoutStaleRuntimeDiagnostics(diagnostics, decisions) {
1988
1943
  return diagnostics.filter((entry) => {
1989
1944
  if (entry.code.startsWith("thinking-")) return false;
1945
+ if (entry.code === CHAT_TEMPLATE_KWARGS_UNDELIVERABLE) return false;
1990
1946
  if (entry.code === "output-budget-unknown" && decisions.maxTokens > 0) return false;
1991
1947
  if (entry.code === "tools-unsupported" && decisions.tools) return false;
1992
1948
  return true;
@@ -2025,6 +1981,7 @@ function refineRuntimeTargetWithModelHints(target, model, knowledgeBase) {
2025
1981
  const decisions = capabilityDecisions(target.runtime, capabilities);
2026
1982
  const diagnostics = withoutStaleRuntimeDiagnostics(target.diagnostics, decisions);
2027
1983
  appendThinkingDiagnostics(diagnostics, modelRuntime, target.requestedThinkingLevel);
1984
+ appendChatTemplateKwargsDiagnostics(diagnostics, modelRuntime);
2028
1985
  return {
2029
1986
  ...target,
2030
1987
  capabilities,
@@ -2152,6 +2109,15 @@ init_esm_shims();
2152
2109
  function normalizeCostProvenance(value) {
2153
2110
  return value ?? "unknown";
2154
2111
  }
2112
+ var COST_PROVENANCE_VALUES = /* @__PURE__ */ new Set([
2113
+ "known",
2114
+ "known_free",
2115
+ "estimated",
2116
+ "unknown"
2117
+ ]);
2118
+ function resolveCostProvenance2(value, fallback) {
2119
+ return typeof value === "string" && COST_PROVENANCE_VALUES.has(value) ? value : fallback;
2120
+ }
2155
2121
 
2156
2122
  // src/domains/providers/index.ts
2157
2123
  init_esm_shims();
@@ -2185,6 +2151,9 @@ function residencyTargetKey(runtimeId, baseUrl) {
2185
2151
  // src/engine/gemma-channel-filter.ts
2186
2152
  init_esm_shims();
2187
2153
  import { createAssistantMessageEventStream } from "@earendil-works/pi-ai";
2154
+ function usesGemmaChannelMarkers(modelId) {
2155
+ return inferLocalModelFamily(modelId) === "gemma-4";
2156
+ }
2188
2157
  var THOUGHT_START = /<\|channel>[^\n]*\n/;
2189
2158
  var BARE_THOUGHT_START = /^\s*(?:thought|own[- ]?(?:thought|think))\s*\n/i;
2190
2159
  var BARE_THOUGHT_ONLY = /^\s*(?:thought|own[- ]?(?:thought|think))\s*$/i;
@@ -2384,7 +2353,6 @@ var globalDefaultMaxOutputTokens = 0;
2384
2353
  function setGlobalDefaultMaxOutputTokens(value) {
2385
2354
  globalDefaultMaxOutputTokens = Number.isFinite(value) && value > 0 ? Math.floor(value) : 0;
2386
2355
  }
2387
- var LOCAL_TOOL_TURN_MAX_OUTPUT_TOKENS = CLIO_MIN_MAX_OUTPUT_TOKENS;
2388
2356
  function resolveReservedOutputTokens(maxOutputTokens) {
2389
2357
  const limit = typeof maxOutputTokens === "number" && Number.isFinite(maxOutputTokens) && maxOutputTokens > 0 ? maxOutputTokens : DEFAULT_MAX_OUTPUT_TOKENS;
2390
2358
  return Math.min(limit, DEFAULT_MAX_OUTPUT_TOKENS);
@@ -2403,7 +2371,7 @@ function remainingContextMaxTokens(model, context, options, limits) {
2403
2371
  const contextWindow = Math.min(configuredContextWindow, loadedContextWindow);
2404
2372
  const budget = Number.isFinite(contextWindow) ? Math.max(1, contextWindow - inputTokens - safety) : Number.POSITIVE_INFINITY;
2405
2373
  const modelLimit = model.maxTokens > 0 ? model.maxTokens : Number.POSITIVE_INFINITY;
2406
- const defaultLimit = limits?.maxOutputTokens !== void 0 && limits.maxOutputTokens > 0 ? limits.maxOutputTokens : globalDefaultMaxOutputTokens > 0 ? globalDefaultMaxOutputTokens : modelLimit;
2374
+ const defaultLimit = limits?.maxOutputTokens !== void 0 && limits.maxOutputTokens > 0 ? limits.maxOutputTokens : globalDefaultMaxOutputTokens > 0 ? globalDefaultMaxOutputTokens : model.maxTokens > 0 ? modelLimit : DEFAULT_MAX_OUTPUT_TOKENS;
2407
2375
  const requested = options?.maxTokens ?? defaultLimit;
2408
2376
  const resolved = Math.min(requested, modelLimit, budget);
2409
2377
  return Number.isFinite(resolved) ? resolved : DEFAULT_MAX_OUTPUT_TOKENS;
@@ -2441,15 +2409,15 @@ function mergeSamplingOverride(profile, override = runSamplingOverrides()) {
2441
2409
  // src/engine/apis/ollama-native.ts
2442
2410
  var REASONING_CHARS_PER_TOKEN = 4;
2443
2411
  function clioQuirks(model) {
2444
- return model.clio?.quirks;
2412
+ return model.clioCoder?.quirks;
2445
2413
  }
2446
2414
  function ollamaTargetId(model) {
2447
- return model.clio?.targetId ?? model.provider;
2415
+ return model.clioCoder?.targetId ?? model.provider;
2448
2416
  }
2449
2417
  async function reconcileOllamaResidency(model, headers) {
2450
2418
  const baseUrl = model.baseUrl;
2451
2419
  if (!baseUrl) return;
2452
- const metadata2 = model.clio;
2420
+ const metadata2 = model.clioCoder;
2453
2421
  const adapter = {
2454
2422
  targetKey: residencyTargetKey("ollama-native", baseUrl),
2455
2423
  targetId: ollamaTargetId(model),
@@ -2681,7 +2649,7 @@ function runStream(model, context, options, thinkingLevel) {
2681
2649
  let doneReason;
2682
2650
  const sentinelStripper = createSentinelStripper();
2683
2651
  const resolved = resolveModelRuntimeCapabilitiesForModel(model, thinkingLevel);
2684
- const channelFilter = resolved.family === "gemma-4" ? createGemmaChannelFilter() : null;
2652
+ const channelFilter = usesGemmaChannelMarkers(resolved.modelId) ? createGemmaChannelFilter() : null;
2685
2653
  const closeActiveThinking = () => {
2686
2654
  if (!activeThinking) return;
2687
2655
  stream.push({
@@ -3113,7 +3081,7 @@ async function ensureLlamaCppResidency(input) {
3113
3081
  targetId: input.targetId,
3114
3082
  runtimeId: input.runtimeId,
3115
3083
  keepModelId: input.keepModelId,
3116
- managed: input.managed ?? residencyManaged(),
3084
+ managed: input.managed ?? true,
3117
3085
  strategy: "router",
3118
3086
  listResident: async () => {
3119
3087
  const models = await fetchRouterModels(input, fetchImpl);
@@ -3193,7 +3161,7 @@ function responseInstanceId(data) {
3193
3161
  return typeof id === "string" && id.trim().length > 0 ? id.trim() : void 0;
3194
3162
  }
3195
3163
  function metadata(model) {
3196
- return model.clio;
3164
+ return model.clioCoder;
3197
3165
  }
3198
3166
  function targetForModel(model) {
3199
3167
  const info = metadata(model);
@@ -3390,10 +3358,10 @@ async function ensureLmStudioResidency(model, options = {}) {
3390
3358
  var piOpenAICompletions = openAICompletionsApi();
3391
3359
  var REASONING_CHARS_PER_TOKEN2 = 4;
3392
3360
  function chatTemplateKwargsUnsupported(model) {
3393
- return model.clio?.chatTemplateKwargsUnsupported === true;
3361
+ return model.clioCoder?.chatTemplateKwargsUnsupported === true;
3394
3362
  }
3395
3363
  function clioQuirks2(model) {
3396
- return model.clio?.quirks;
3364
+ return model.clioCoder?.quirks;
3397
3365
  }
3398
3366
  function pickSamplingProfile2(quirks, thinkingActive) {
3399
3367
  const sampling = quirks?.sampling;
@@ -3424,7 +3392,7 @@ function backendCompletionTimings(value, source) {
3424
3392
  };
3425
3393
  }
3426
3394
  function backendTimingsSourceForModel(model) {
3427
- const metadata2 = model.clio;
3395
+ const metadata2 = model.clioCoder;
3428
3396
  if (model.provider === "llamacpp" && metadata2?.runtimeId === "llamacpp") return "llamacpp-timings";
3429
3397
  if (model.provider === "lmstudio" && metadata2?.runtimeId === "lmstudio") return "lmstudio-timings";
3430
3398
  return null;
@@ -3602,8 +3570,23 @@ function withStrippedPartial(event) {
3602
3570
  return { ...event, partial: stripThinkingFromMessage(event.partial) };
3603
3571
  }
3604
3572
  function applyThinkingPayload(payload, applied, resolved, model) {
3605
- if (applied.mechanism === "none") return stripThinkingRequestFields(payload);
3606
- if (applied.mechanism === "always-on") return payload;
3573
+ if (applied.mechanism === "none") {
3574
+ const next2 = stripThinkingRequestFields(payload);
3575
+ if (resolved.request.chatTemplateKwargs && !chatTemplateKwargsUnsupported(model)) {
3576
+ const existing = isPlainRecord(next2.chat_template_kwargs) ? next2.chat_template_kwargs : {};
3577
+ next2.chat_template_kwargs = { ...existing, ...resolved.request.chatTemplateKwargs };
3578
+ }
3579
+ return next2;
3580
+ }
3581
+ if (applied.mechanism === "always-on") {
3582
+ if (resolved.request.chatTemplateKwargs && !chatTemplateKwargsUnsupported(model)) {
3583
+ const next2 = { ...payload };
3584
+ const existing = isPlainRecord(next2.chat_template_kwargs) ? next2.chat_template_kwargs : {};
3585
+ next2.chat_template_kwargs = { ...existing, ...resolved.request.chatTemplateKwargs };
3586
+ return next2;
3587
+ }
3588
+ return payload;
3589
+ }
3607
3590
  const next = { ...payload };
3608
3591
  if (resolved.request.reasoningEffort && (next.reasoning_effort === void 0 || resolved.response.parser === "harmony")) {
3609
3592
  next.reasoning_effort = resolved.request.reasoningEffort;
@@ -3734,16 +3717,9 @@ function thinkingLevelFromSimple2(options) {
3734
3717
  return reasoning;
3735
3718
  }
3736
3719
  function withRemainingContextBudget(model, context, options) {
3737
- const metadata2 = runtimeMetadata(model);
3738
- const localToolOutputLimit = options?.maxTokens === void 0 && (context.tools?.length ?? 0) > 0 && (model.provider === "llamacpp" || metadata2?.runtimeId === "llamacpp") ? LOCAL_TOOL_TURN_MAX_OUTPUT_TOKENS : void 0;
3739
3720
  return {
3740
3721
  ...options ?? {},
3741
- maxTokens: remainingContextMaxTokens(
3742
- model,
3743
- context,
3744
- options,
3745
- localToolOutputLimit === void 0 ? void 0 : { maxOutputTokens: localToolOutputLimit }
3746
- )
3722
+ maxTokens: remainingContextMaxTokens(model, context, options)
3747
3723
  };
3748
3724
  }
3749
3725
  function requiredToolArguments(tool) {
@@ -3757,7 +3733,7 @@ function hasEmptyArguments(args) {
3757
3733
  return Object.keys(args).length === 0;
3758
3734
  }
3759
3735
  function runtimeMetadata(model) {
3760
- return model.clio;
3736
+ return model.clioCoder;
3761
3737
  }
3762
3738
  function emptyErrorMessage(model, message) {
3763
3739
  return {
@@ -4031,7 +4007,7 @@ var openAICompletionsApiProvider = {
4031
4007
  (requestModel) => piOpenAICompletions.stream(requestModel, effectiveContext, capturedOptions)
4032
4008
  )
4033
4009
  ),
4034
- resolved.family === "gemma-4"
4010
+ usesGemmaChannelMarkers(resolved.modelId)
4035
4011
  ),
4036
4012
  resolved
4037
4013
  ),
@@ -4063,7 +4039,7 @@ var openAICompletionsApiProvider = {
4063
4039
  (requestModel) => piOpenAICompletions.streamSimple(requestModel, effectiveContext, capturedOptions)
4064
4040
  )
4065
4041
  ),
4066
- resolved.family === "gemma-4"
4042
+ usesGemmaChannelMarkers(resolved.modelId)
4067
4043
  ),
4068
4044
  resolved
4069
4045
  ),
@@ -4783,8 +4759,6 @@ export {
4783
4759
  setResidencyNoticeSink,
4784
4760
  setProtectedModelsProvider,
4785
4761
  withRunOverrides,
4786
- EMPTY_CAPABILITIES,
4787
- VALID_THINKING_LEVELS,
4788
4762
  applyModelCapabilityPatch,
4789
4763
  probeCapabilitiesForModel,
4790
4764
  resolveModelCapabilities,
@@ -4813,6 +4787,7 @@ export {
4813
4787
  runtimeResolutionWarnings,
4814
4788
  runtimeResolutionWarningsBesideThinkingNotice,
4815
4789
  normalizeCostProvenance,
4790
+ resolveCostProvenance2 as resolveCostProvenance,
4816
4791
  ProvidersDomainModule
4817
4792
  };
4818
- //# sourceMappingURL=chunk-UEDMSP56.js.map
4793
+ //# sourceMappingURL=chunk-BYMNWQ7O.js.map
@@ -1,13 +1,13 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
3
  loadSkills
4
- } from "./chunk-HUAS7ITX.js";
4
+ } from "./chunk-O3YUNJZ2.js";
5
5
  import {
6
6
  parseFrontmatter
7
7
  } from "./chunk-RKKLTLYB.js";
8
8
  import {
9
9
  enabledExtensionResourceRoots
10
- } from "./chunk-SUW5DORT.js";
10
+ } from "./chunk-HLAFFSEK.js";
11
11
  import {
12
12
  assertAgentSpecPolicy,
13
13
  isAgentAudience,
@@ -19,7 +19,7 @@ import {
19
19
  isShadowAgent,
20
20
  normalizeAgentSpec,
21
21
  parseResultContract
22
- } from "./chunk-IG7BCQBA.js";
22
+ } from "./chunk-PGF63K6I.js";
23
23
  import {
24
24
  resolvePackageRoot
25
25
  } from "./chunk-IWHMRKLL.js";
@@ -396,4 +396,4 @@ export {
396
396
  parseAgentRecipeSchema,
397
397
  discoverAgentRecipes
398
398
  };
399
- //# sourceMappingURL=chunk-ZJLUDYFY.js.map
399
+ //# sourceMappingURL=chunk-CRFOIAX3.js.map
@@ -2,25 +2,25 @@ import { createRequire as __clioCreateRequire } from "node:module"; const requir
2
2
  import {
3
3
  readStrictLayeredSettings,
4
4
  updateLayeredSettings
5
- } from "./chunk-VKRH2TCS.js";
5
+ } from "./chunk-M2DAX4F6.js";
6
6
  import {
7
7
  resolveShutdownHookBudgetMs,
8
8
  runWithBudget,
9
9
  writeShutdownNotice
10
- } from "./chunk-6FN3E6KX.js";
10
+ } from "./chunk-4O6MANBS.js";
11
11
  import {
12
12
  assertAgentIdNamespace
13
13
  } from "./chunk-DR52UMZW.js";
14
14
  import {
15
15
  getSharedBus
16
16
  } from "./chunk-PMZVFWSR.js";
17
- import {
18
- BusChannels
19
- } from "./chunk-HLW2MRKE.js";
20
17
  import {
21
18
  formatSettingsFailure,
22
19
  settingsPath
23
- } from "./chunk-EIMVLWB3.js";
20
+ } from "./chunk-34BHNEE3.js";
21
+ import {
22
+ BusChannels
23
+ } from "./chunk-F4EKGO4N.js";
24
24
  import {
25
25
  setGitCommitAttributionEnabled
26
26
  } from "./chunk-JIEGK6UF.js";
@@ -377,4 +377,4 @@ export {
377
377
  ConfigDomainModule,
378
378
  createConfigDomainModule
379
379
  };
380
- //# sourceMappingURL=chunk-2NM363SV.js.map
380
+ //# sourceMappingURL=chunk-CYZW7JHJ.js.map