@iowarp/clio-coder 0.3.1 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (595) hide show
  1. package/CHANGELOG.md +90 -2
  2. package/CONTRIBUTING.md +23 -23
  3. package/README.md +284 -613
  4. package/dist/{acp-FPR54DGL.js → acp-BIYHVZIM.js} +43 -53
  5. package/dist/{agents-OGPIHPJH.js → agents-YT6SSRIT.js} +43 -26
  6. package/dist/assets/codewiki.json +1 -1
  7. package/dist/{auth-IC3K6NIZ.js → auth-5TWEIYDN.js} +20 -12
  8. package/dist/{chunk-PV4JUBVJ.js → chunk-2EHAIA3X.js} +40 -21
  9. package/dist/{chunk-IS3ONKU3.js → chunk-2IR2NMPA.js} +6 -4
  10. package/dist/chunk-2SFS6XQE.js +122 -0
  11. package/dist/chunk-2VTFPG5O.js +48 -0
  12. package/dist/{chunk-MAR7Y6HW.js → chunk-3ZXDFGR5.js} +23 -16
  13. package/dist/chunk-4BJ5BYCE.js +61 -0
  14. package/dist/{chunk-474KN5II.js → chunk-4BPJXDWC.js} +111 -181
  15. package/dist/chunk-4KLWL3UC.js +18 -0
  16. package/dist/chunk-4VP4KH3K.js +962 -0
  17. package/dist/chunk-4ZG3XFUR.js +77 -0
  18. package/dist/chunk-5B2AEOW5.js +5407 -0
  19. package/dist/{chunk-K2ITRMHZ.js → chunk-5TSRNF4G.js} +6 -138
  20. package/dist/{chunk-OLBBMFRD.js → chunk-5UUP6MWO.js} +24 -62
  21. package/dist/chunk-65DEGPJ6.js +52 -0
  22. package/dist/chunk-6EJMN2Y3.js +17 -0
  23. package/dist/chunk-6EJV5X2W.js +16405 -0
  24. package/dist/chunk-6N5PTWMY.js +136 -0
  25. package/dist/chunk-6XLNIQDB.js +27 -0
  26. package/dist/{chunk-TEKV33Q5.js → chunk-77VKQEHF.js} +65 -33
  27. package/dist/chunk-7CR24IG7.js +242 -0
  28. package/dist/{chunk-M5T5VO65.js → chunk-7EYHLWU7.js} +837 -635
  29. package/dist/chunk-7MNJORFF.js +22 -0
  30. package/dist/{chunk-KY56HMHH.js → chunk-A3CYT5EX.js} +125 -31
  31. package/dist/chunk-AGYYIBLL.js +1069 -0
  32. package/dist/chunk-AO4RKG4M.js +277 -0
  33. package/dist/{chunk-GB6QRBXN.js → chunk-APJ265NV.js} +54 -1187
  34. package/dist/chunk-ARBGF5F7.js +174 -0
  35. package/dist/{chunk-673JJUWJ.js → chunk-BMEMKKIT.js} +2 -2
  36. package/dist/chunk-CBCAPZAA.js +229 -0
  37. package/dist/chunk-CMZWFGD2.js +352 -0
  38. package/dist/chunk-ECH6PKUQ.js +39 -0
  39. package/dist/chunk-ED4KHGC3.js +143 -0
  40. package/dist/chunk-EKMEHE4H.js +340 -0
  41. package/dist/{chunk-RPTR2H26.js → chunk-EPVUXGXG.js} +21 -15
  42. package/dist/chunk-FCSXB6T2.js +338 -0
  43. package/dist/chunk-FJ3H4MN5.js +48 -0
  44. package/dist/chunk-FQ4SKYE4.js +29 -0
  45. package/dist/chunk-G2DE3C7R.js +644 -0
  46. package/dist/chunk-G4BMMOKF.js +182 -0
  47. package/dist/{chunk-ZPY3JZ5E.js → chunk-GGXXDWE4.js} +183 -1233
  48. package/dist/chunk-HC4CLZ2Y.js +68 -0
  49. package/dist/{chunk-LU4TK2PR.js → chunk-HFSBBKSQ.js} +5 -56
  50. package/dist/{chunk-PIUMUEMV.js → chunk-HKIYEGME.js} +10 -6
  51. package/dist/chunk-I4HZDVNP.js +73 -0
  52. package/dist/{chunk-4QKXUHSR.js → chunk-IGLFWIYI.js} +70 -20
  53. package/dist/chunk-IKCO5N3L.js +162 -0
  54. package/dist/chunk-IR4CFBFN.js +56 -0
  55. package/dist/{chunk-PFEFKVGL.js → chunk-J5HN4RYU.js} +13 -11
  56. package/dist/{chunk-R5KLMSBV.js → chunk-J5Q24KAG.js} +2 -2
  57. package/dist/{chunk-K5XEMXTI.js → chunk-JVCV3ICN.js} +1 -1
  58. package/dist/chunk-KJ5LWLOE.js +1077 -0
  59. package/dist/chunk-LBMZMYH2.js +285 -0
  60. package/dist/{chunk-G34LV2PF.js → chunk-LBNRH5WM.js} +84 -170
  61. package/dist/{chunk-H6F6BYOH.js → chunk-LZSJBIVT.js} +7003 -7434
  62. package/dist/{chunk-HQQID6OA.js → chunk-M6SHUN7Q.js} +5 -5
  63. package/dist/chunk-MAW544W2.js +1882 -0
  64. package/dist/chunk-MBS4V7ZP.js +217 -0
  65. package/dist/{chunk-FST4FYJB.js → chunk-MFFY33HR.js} +99 -140
  66. package/dist/chunk-MNA4JGU4.js +255 -0
  67. package/dist/chunk-MQSRRFWA.js +3428 -0
  68. package/dist/{chunk-BSU2YIWB.js → chunk-MVVUPGPW.js} +131 -136
  69. package/dist/chunk-OAO4GE4M.js +619 -0
  70. package/dist/chunk-OHHN2SO4.js +5135 -0
  71. package/dist/chunk-OKGUZO2U.js +34 -0
  72. package/dist/{chunk-GAEBEQVI.js → chunk-OOJYHWRB.js} +32 -346
  73. package/dist/{chunk-Q5WJOSJ7.js → chunk-OQ33BKR3.js} +2 -1
  74. package/dist/chunk-OQE5J4C6.js +73 -0
  75. package/dist/{chunk-KKNLWXI6.js → chunk-ORBHGJC5.js} +8 -8
  76. package/dist/chunk-POHLU5DW.js +1186 -0
  77. package/dist/chunk-QKMUKYO7.js +4961 -0
  78. package/dist/{chunk-ASND7OZK.js → chunk-QTYWRVRA.js} +13 -13
  79. package/dist/{chunk-EYOKLTMF.js → chunk-SRF2PJNW.js} +17 -3
  80. package/dist/chunk-SST6Z5JA.js +80 -0
  81. package/dist/chunk-STBPMHSX.js +2456 -0
  82. package/dist/chunk-T6YILFSB.js +80 -0
  83. package/dist/chunk-TZTZS7QK.js +227 -0
  84. package/dist/chunk-UOV2BYIW.js +107 -0
  85. package/dist/{chunk-Q3RUPKEJ.js → chunk-V4RXGQ5Q.js} +58 -189
  86. package/dist/chunk-VAKQQHWR.js +434 -0
  87. package/dist/chunk-VG7TBQIY.js +128 -0
  88. package/dist/chunk-VJWL6YS5.js +244 -0
  89. package/dist/chunk-WEH5XRJQ.js +32 -0
  90. package/dist/chunk-WMSVI4G2.js +2095 -0
  91. package/dist/chunk-WVO7V2QY.js +797 -0
  92. package/dist/chunk-X4RCMKVQ.js +641 -0
  93. package/dist/chunk-X75S7HFS.js +374 -0
  94. package/dist/chunk-XN3L4EYL.js +46 -0
  95. package/dist/{chunk-RDLVBZEO.js → chunk-YCWGATWI.js} +6 -4
  96. package/dist/chunk-YHZX5GEU.js +193 -0
  97. package/dist/chunk-YXLYO42X.js +91 -0
  98. package/dist/{chunk-NMOX6HFD.js → chunk-ZDOOVTXZ.js} +29 -77
  99. package/dist/chunk-ZI647VB5.js +37 -0
  100. package/dist/{chunk-C4PTHK7P.js → chunk-ZWLZP4ZT.js} +5 -5
  101. package/dist/cli/index.js +62 -54
  102. package/dist/clio-4LY5K2AC.js +25 -0
  103. package/dist/code-nav-7AX6FYE6.js +600 -0
  104. package/dist/codewiki/build-worker.js +66 -0
  105. package/dist/compile-cache-CVJMMODC.js +18 -0
  106. package/dist/{components-DMAOEKFB.js → components-KELWS457.js} +11 -6
  107. package/dist/{config-IRUQ7SE4.js → config-GTLUW2PR.js} +92 -55
  108. package/dist/configure-R6A64DHX.js +42 -0
  109. package/dist/context-5VKGUVJJ.js +866 -0
  110. package/dist/{context-3KWFLHJG.js → context-JFZEJ7W5.js} +15 -13
  111. package/dist/{context-5RADCKTR.js → context-RW5HC47S.js} +71 -35
  112. package/dist/{context-clear-7TSNPAAI.js → context-clear-6ZHBAZZT.js} +54 -28
  113. package/dist/{context-index-W4RLWOQH.js → context-index-BZ4UYMTC.js} +30 -24
  114. package/dist/dispatch-runner-VKBRCWQC.js +1997 -0
  115. package/dist/{docs-5AWSPS37.js → docs-2C2LTVT2.js} +23 -10
  116. package/dist/{doctor-UC5NAJYQ.js → doctor-KI767GSN.js} +27 -17
  117. package/dist/{eval-U6TJHRLX.js → eval-XSSNATB4.js} +29 -16
  118. package/dist/{evidence-YEGUW4L3.js → evidence-UA6AWDQQ.js} +46 -26
  119. package/dist/{evolve-TXARCTPG.js → evolve-QNTFGV6Z.js} +45 -25
  120. package/dist/{extensions-OZFJ3A3G.js → extensions-QVDOHDGJ.js} +16 -7
  121. package/dist/{fleet-6G3DHNYE.js → fleet-Q7UOMUSG.js} +163 -54
  122. package/dist/{fleet-preflight-DSNT37JK.js → fleet-preflight-DDN536IT.js} +7 -4
  123. package/dist/{init-KZ5QTF6M.js → init-WBB65ZHQ.js} +69 -32
  124. package/dist/{memory-73ESV5YC.js → memory-MD3O64RI.js} +48 -27
  125. package/dist/{models-A4PVNWJK.js → models-BZU34YWD.js} +39 -25
  126. package/dist/monitor-MEQA5C3I.js +661 -0
  127. package/dist/{chunk-FCIH3BIZ.js → orchestrator-CGFKEP27.js} +11832 -8687
  128. package/dist/{paths-C4H6IV77.js → paths-UXLN5YYZ.js} +10 -5
  129. package/dist/{preload-6WVMHX3A.js → preload-P6DGH2PZ.js} +2 -2
  130. package/dist/{reset-BGW6OGMV.js → reset-L2FQEE3E.js} +16 -10
  131. package/dist/{run-YTPEYQOH.js → run-IV4Q6RLN.js} +101 -61
  132. package/dist/{share-YIFFV4NQ.js → share-S5BZQC5I.js} +15 -8
  133. package/dist/{skills-2V6RA3OQ.js → skills-LQEKRDTN.js} +34 -14
  134. package/dist/{skills-eval-S2TVJO4F.js → skills-eval-3DC4HEWS.js} +70 -34
  135. package/dist/steer-GGWFUJUD.js +77 -0
  136. package/dist/{targets-TYXLPB23.js → targets-C4SSGQOB.js} +43 -27
  137. package/dist/terminal-lease-IT5JW2NR.js +395 -0
  138. package/dist/{trace-GGOJ6Q6Z.js → trace-PNCASAXC.js} +41 -16
  139. package/dist/{chunk-N6F52NLF.js → tree-sitter-HGKH6LG4.js} +28 -2306
  140. package/dist/{uninstall-LLLT4F4W.js → uninstall-FZCQCDKC.js} +10 -5
  141. package/dist/{upgrade-33G2LMM5.js → upgrade-7TT7SQ3G.js} +45 -25
  142. package/dist/{usage-ZAFSXKKG.js → usage-GV4PKT3M.js} +62 -31
  143. package/dist/verify-G6V4D2G7.js +716 -0
  144. package/dist/web-fetch-2YHJ3KTG.js +638 -0
  145. package/dist/{wiki-generate-NUQCVOQ3.js → wiki-generate-DQF6Z66B.js} +74 -34
  146. package/dist/worker/entry.js +221 -36
  147. package/dist/workspace-G4ZWUIPR.js +22 -0
  148. package/docs/README.md +22 -17
  149. package/docs/acp.md +168 -16
  150. package/docs/alcf-provider.md +1 -1
  151. package/docs/architecture.md +136 -7
  152. package/docs/artifact-versions.md +1 -1
  153. package/docs/built-in-agents.md +1 -1
  154. package/docs/capacity-and-scheduling.md +1 -1
  155. package/docs/commands-and-modes.md +114 -71
  156. package/docs/config-knobs-audit.md +1 -3
  157. package/docs/configuration-and-targets.md +174 -46
  158. package/docs/context-engine.md +29 -6
  159. package/docs/development-pipeline.md +26 -1
  160. package/docs/dispatch-architecture-rationale.md +1 -1
  161. package/docs/documentation-coverage.md +2 -2
  162. package/docs/documentation-guide.md +1 -1
  163. package/docs/environment-variables.md +13 -5
  164. package/docs/eval-runner.md +1 -1
  165. package/docs/evals-internal.md +1 -1
  166. package/docs/evidence-and-memory.md +6 -2
  167. package/docs/evolution.md +2 -2
  168. package/docs/exit-codes-and-output.md +15 -9
  169. package/docs/extensions-and-sharing.md +9 -9
  170. package/docs/fleet-dispatch.md +7 -5
  171. package/docs/git-commit-provenance.md +120 -0
  172. package/docs/glossary.md +1 -1
  173. package/docs/installation-and-lifecycle.md +34 -27
  174. package/docs/middleware-and-components.md +1 -1
  175. package/docs/model-catalog.md +45 -14
  176. package/docs/observability.md +8 -5
  177. package/docs/performance-methodology.md +491 -0
  178. package/docs/pi-boundary.md +72 -0
  179. package/docs/proactive-memory.md +3 -3
  180. package/docs/prompt-envelope-and-tools.md +24 -3
  181. package/docs/provider-adapter-cookbook.md +57 -4
  182. package/docs/release-cut-checklist.md +129 -115
  183. package/docs/safety-model.md +9 -5
  184. package/docs/scientific-validation.md +3 -3
  185. package/docs/session-lifecycle.md +55 -12
  186. package/docs/skills-marketplace.md +12 -8
  187. package/docs/time-conventions.md +1 -1
  188. package/docs/tool-usage.md +3 -3
  189. package/docs/trace-store.md +1 -1
  190. package/docs/troubleshooting.md +10 -7
  191. package/docs/tui-design.md +47 -10
  192. package/docs/worker-dispatch-mechanics.md +1 -1
  193. package/package.json +19 -22
  194. package/skills/coding/ast-grep/SKILL.md +136 -0
  195. package/skills/coding/ast-grep/evals.md +56 -0
  196. package/skills/coding/ast-grep/references/rule_reference.md +297 -0
  197. package/skills/coding/coding-standards/SKILL.md +113 -0
  198. package/skills/coding/coding-standards/evals.md +34 -0
  199. package/skills/coding/prototype/SKILL.md +86 -0
  200. package/skills/coding/prototype/evals.md +42 -0
  201. package/skills/coding/prototype/references/LOGIC.md +67 -0
  202. package/skills/coding/prototype/references/UI.md +112 -0
  203. package/skills/coding/tdd/SKILL.md +101 -0
  204. package/skills/coding/tdd/evals.md +41 -0
  205. package/skills/coding/tdd/references/mocking.md +59 -0
  206. package/skills/coding/tdd/references/tests.md +77 -0
  207. package/skills/context/context-handoff/SKILL.md +126 -0
  208. package/skills/context/context-handoff/evals.md +57 -0
  209. package/skills/context/context-handoff/scripts/new-handoff.sh +26 -0
  210. package/skills/context/context-prime/SKILL.md +95 -0
  211. package/skills/context/context-prime/evals.md +54 -0
  212. package/skills/meta/clio-dev/SKILL.md +91 -0
  213. package/skills/meta/clio-dev/evals.md +45 -0
  214. package/skills/meta/clio-test/SKILL.md +130 -0
  215. package/skills/meta/clio-test/evals.md +43 -0
  216. package/skills/meta/clio-test/references/harness.md +97 -0
  217. package/skills/meta/clio-test/references/test-map.md +59 -0
  218. package/skills/meta/credentials/SKILL.md +125 -0
  219. package/skills/meta/credentials/evals.md +104 -0
  220. package/skills/meta/find-skills/SKILL.md +72 -0
  221. package/skills/meta/find-skills/evals.md +47 -0
  222. package/skills/meta/herdr/SKILL.md +127 -0
  223. package/skills/meta/herdr/evals.md +38 -0
  224. package/skills/meta/skill-craft/SKILL.md +102 -0
  225. package/skills/meta/skill-craft/evals.md +41 -0
  226. package/skills/planning/architecture/SKILL.md +129 -0
  227. package/skills/planning/architecture/evals.md +36 -0
  228. package/skills/planning/backlog/SKILL.md +90 -0
  229. package/skills/planning/backlog/evals.md +43 -0
  230. package/skills/planning/prd/SKILL.md +82 -0
  231. package/skills/planning/prd/evals.md +49 -0
  232. package/skills/planning/product-intent/SKILL.md +112 -0
  233. package/skills/planning/product-intent/evals.md +36 -0
  234. package/skills/planning/tech-spec/SKILL.md +115 -0
  235. package/skills/planning/tech-spec/evals.md +47 -0
  236. package/skills/registry.yaml +136 -0
  237. package/skills/research/arxiv-literature/SKILL.md +104 -0
  238. package/skills/research/arxiv-literature/evals.md +58 -0
  239. package/skills/research/experiment-protocol/SKILL.md +122 -0
  240. package/skills/research/experiment-protocol/evals.md +91 -0
  241. package/skills/research/scientific-debugging/SKILL.md +119 -0
  242. package/skills/research/scientific-debugging/evals.md +138 -0
  243. package/skills/research/scientific-modernization/SKILL.md +138 -0
  244. package/skills/research/scientific-modernization/evals.md +84 -0
  245. package/skills/workflow/design-council/SKILL.md +139 -0
  246. package/skills/workflow/design-council/evals.md +97 -0
  247. package/skills/workflow/grill-me/SKILL.md +186 -0
  248. package/skills/workflow/grill-me/evals.md +78 -0
  249. package/skills/workflow/workflow-distiller/SKILL.md +136 -0
  250. package/skills/workflow/workflow-distiller/evals.md +107 -0
  251. package/src/cli/acp.ts +31 -4
  252. package/src/cli/clio.ts +68 -6
  253. package/src/cli/config-inspect.ts +28 -22
  254. package/src/cli/configure.ts +47 -9
  255. package/src/cli/context-clear.ts +2 -2
  256. package/src/cli/context-index.ts +21 -23
  257. package/src/cli/context.ts +13 -8
  258. package/src/cli/default-target.ts +9 -17
  259. package/src/cli/docs.ts +11 -5
  260. package/src/cli/evidence.ts +4 -1
  261. package/src/cli/extensions.ts +10 -1
  262. package/src/cli/fleet.ts +47 -6
  263. package/src/cli/index.ts +55 -26
  264. package/src/cli/memory.ts +3 -1
  265. package/src/cli/models.ts +1 -1
  266. package/src/cli/modes/json-stream.ts +37 -1
  267. package/src/cli/modes/print.ts +24 -9
  268. package/src/cli/run.ts +2 -2
  269. package/src/cli/skills-eval.ts +23 -8
  270. package/src/cli/skills.ts +19 -4
  271. package/src/cli/targets.ts +4 -0
  272. package/src/cli/text-layout.ts +15 -5
  273. package/src/cli/trace.ts +62 -14
  274. package/src/cli/upgrade.ts +18 -2
  275. package/src/cli/usage.ts +10 -3
  276. package/src/cli/wiki-generate.ts +2 -1
  277. package/src/core/agent-environment.ts +7 -0
  278. package/src/core/bash-exec.ts +72 -1
  279. package/src/core/boot-trace.ts +9 -4
  280. package/src/core/bus-events.ts +20 -4
  281. package/src/core/commit-attribution.ts +157 -0
  282. package/src/core/compile-cache.ts +159 -0
  283. package/src/core/config.ts +131 -2
  284. package/src/core/defaults.ts +39 -5
  285. package/src/core/domain-loader.ts +12 -5
  286. package/src/core/git-commit-attribution.ts +362 -0
  287. package/src/core/incomplete-installation.ts +45 -0
  288. package/src/core/response-schema.ts +1 -1
  289. package/src/core/safe-exec.ts +13 -1
  290. package/src/core/settings-layers.ts +155 -21
  291. package/src/core/skill-activation.ts +1 -1
  292. package/src/core/startup-timer.ts +3 -3
  293. package/src/core/state-file-lock.ts +13 -1
  294. package/src/core/termination.ts +78 -5
  295. package/src/domains/config/classify.ts +15 -3
  296. package/src/domains/config/extension.ts +19 -13
  297. package/src/domains/config/index.ts +10 -0
  298. package/src/domains/config/keybindings.ts +42 -6
  299. package/src/domains/context/bootstrap-prompt.ts +1 -1
  300. package/src/domains/context/bootstrap.ts +111 -18
  301. package/src/domains/context/clear.ts +16 -11
  302. package/src/domains/context/clio-md.ts +111 -9
  303. package/src/domains/context/codewiki/artifact.ts +400 -0
  304. package/src/domains/context/codewiki/build-worker-protocol.ts +24 -0
  305. package/src/domains/context/codewiki/build-worker.ts +54 -0
  306. package/src/domains/context/codewiki/coordinator.ts +182 -0
  307. package/src/domains/context/codewiki/indexer.ts +59 -144
  308. package/src/domains/context/codewiki/paths.ts +67 -0
  309. package/src/domains/context/codewiki/schema.ts +80 -0
  310. package/src/domains/context/codewiki/tree-sitter.ts +1 -1
  311. package/src/domains/context/contract.ts +11 -5
  312. package/src/domains/context/extension.ts +94 -143
  313. package/src/domains/context/fingerprint.ts +3 -1
  314. package/src/domains/context/index.ts +12 -22
  315. package/src/domains/context/project-metadata.ts +19 -0
  316. package/src/domains/context/prompt-context.ts +9 -10
  317. package/src/domains/context/refresh.ts +29 -21
  318. package/src/domains/context/runtime.ts +17 -0
  319. package/src/domains/context/wiki/generate.ts +39 -34
  320. package/src/domains/context/wiki/plan.ts +1 -1
  321. package/src/domains/context/wiki/prompts.ts +21 -8
  322. package/src/domains/dispatch/code-step.ts +20 -1
  323. package/src/domains/dispatch/extension.ts +158 -21
  324. package/src/domains/dispatch/failure-classification.ts +6 -0
  325. package/src/domains/dispatch/fleet-commit-attribution.ts +56 -0
  326. package/src/domains/dispatch/orphan-recovery.ts +50 -8
  327. package/src/domains/dispatch/receipt-integrity.ts +5 -0
  328. package/src/domains/dispatch/state.ts +31 -6
  329. package/src/domains/dispatch/transport.ts +2 -1
  330. package/src/domains/dispatch/types.ts +14 -0
  331. package/src/domains/dispatch/worker-spawn.ts +21 -2
  332. package/src/domains/eval/metrics/context.ts +1 -1
  333. package/src/domains/eval/types.ts +0 -1
  334. package/src/domains/evidence/build.ts +41 -1
  335. package/src/domains/lifecycle/migrations/2026-08-18-lmstudio-runtime-id.ts +52 -0
  336. package/src/domains/lifecycle/migrations/index.ts +24 -4
  337. package/src/domains/middleware/hooks-io.ts +12 -0
  338. package/src/domains/middleware/skills-reminder.ts +30 -15
  339. package/src/domains/prompts/compiler.ts +142 -84
  340. package/src/domains/prompts/contract.ts +18 -2
  341. package/src/domains/prompts/extension.ts +39 -7
  342. package/src/domains/prompts/fragment-loader.ts +0 -1
  343. package/src/domains/prompts/fragments/identity/clio.md +2 -4
  344. package/src/domains/prompts/fragments/identity/docs-routing.md +10 -0
  345. package/src/domains/prompts/fragments/identity/self-awareness.md +1 -45
  346. package/src/domains/prompts/fragments/operating/contract.md +4 -50
  347. package/src/domains/prompts/fragments/operating/delegation.md +42 -0
  348. package/src/domains/prompts/fragments/operating/skills.md +26 -0
  349. package/src/domains/prompts/fragments/operating/worker.md +16 -0
  350. package/src/domains/prompts/fragments/safety/auto-edit.md +5 -5
  351. package/src/domains/prompts/fragments/safety/full-auto.md +3 -3
  352. package/src/domains/prompts/fragments/safety/read-only.md +4 -4
  353. package/src/domains/prompts/fragments/safety/suggest.md +2 -2
  354. package/src/domains/prompts/fragments/wiki/page.md +10 -0
  355. package/src/domains/prompts/fragments/wiki/plan.md +10 -0
  356. package/src/domains/prompts/preload.ts +3 -3
  357. package/src/domains/providers/auth/api-key.ts +1 -1
  358. package/src/domains/providers/auth/backend-file.ts +20 -10
  359. package/src/domains/providers/auth/backend-memory.ts +59 -4
  360. package/src/domains/providers/auth/boot-status.ts +65 -0
  361. package/src/domains/providers/auth/oauth.ts +2 -1
  362. package/src/domains/providers/auth/storage.ts +97 -38
  363. package/src/domains/providers/capabilities.ts +12 -4
  364. package/src/domains/providers/contract.ts +15 -4
  365. package/src/domains/providers/extension.ts +18 -6
  366. package/src/domains/providers/model-runtime-capabilities.ts +15 -4
  367. package/src/domains/providers/models/local-models/clio-local-coding-targets.yaml +118 -35
  368. package/src/domains/providers/plugins.ts +5 -3
  369. package/src/domains/providers/probe/fingerprint.ts +25 -5
  370. package/src/domains/providers/registry.ts +31 -10
  371. package/src/domains/providers/runtimes/boot-manifest.ts +55 -0
  372. package/src/domains/providers/runtimes/builtins.ts +2 -2
  373. package/src/domains/providers/runtimes/common/lmstudio-http.ts +423 -0
  374. package/src/domains/providers/runtimes/common/local-synth.ts +6 -7
  375. package/src/domains/providers/runtimes/local-native/lmstudio.ts +241 -0
  376. package/src/domains/providers/support.ts +6 -3
  377. package/src/domains/providers/types/local-model-quirks.ts +7 -9
  378. package/src/domains/providers/types/runtime-descriptor.ts +12 -1
  379. package/src/domains/providers/types/target-descriptor.ts +22 -0
  380. package/src/domains/resources/contract.ts +0 -1
  381. package/src/domains/resources/extension.ts +1 -3
  382. package/src/domains/resources/loader.ts +3 -4
  383. package/src/domains/resources/prompts/loader.ts +16 -2
  384. package/src/domains/resources/prompts/substitute.ts +1 -65
  385. package/src/domains/resources/skills/content-hash.ts +2 -0
  386. package/src/domains/resources/skills/install.ts +17 -0
  387. package/src/domains/resources/skills/loader.ts +17 -10
  388. package/src/domains/resources/skills/marketplace.ts +55 -9
  389. package/src/domains/safety/action-classifier.ts +4 -2
  390. package/src/domains/safety/audit.ts +8 -2
  391. package/src/domains/safety/extension.ts +1 -1
  392. package/src/domains/session/compaction/branch-summary.ts +3 -2
  393. package/src/domains/session/compaction/cut-point.ts +2 -1
  394. package/src/domains/session/compaction/tokens.ts +2 -1
  395. package/src/domains/session/context-ledger.ts +14 -0
  396. package/src/domains/session/contract.ts +15 -0
  397. package/src/domains/session/decision-board.ts +190 -0
  398. package/src/domains/session/entries.ts +66 -3
  399. package/src/domains/session/extension.ts +93 -12
  400. package/src/domains/session/retry.ts +10 -18
  401. package/src/domains/session/session-artifacts.ts +107 -0
  402. package/src/domains/session/task-board.ts +207 -13
  403. package/src/domains/session/tree/active-path.ts +44 -5
  404. package/src/domains/session/tree/fork.ts +26 -27
  405. package/src/domains/session/tree/preview.ts +2 -2
  406. package/src/domains/session/workspace/git-probe.ts +17 -11
  407. package/src/domains/user-tasks/store.ts +297 -0
  408. package/src/engine/acp/errors.ts +96 -0
  409. package/src/engine/acp/server.ts +1728 -146
  410. package/src/engine/acp/transport.ts +135 -14
  411. package/src/engine/acp/types.ts +26 -0
  412. package/src/engine/agent.ts +3 -3
  413. package/src/engine/ai.ts +32 -27
  414. package/src/engine/alcf-oauth.ts +26 -19
  415. package/src/engine/api-registry.ts +223 -0
  416. package/src/engine/apis/index.ts +3 -7
  417. package/src/engine/apis/llamacpp-residency.ts +49 -9
  418. package/src/engine/apis/lmstudio-residency.ts +5 -21
  419. package/src/engine/apis/lmstudio.ts +243 -0
  420. package/src/engine/apis/ollama-native.ts +24 -3
  421. package/src/engine/apis/openai-completions.ts +170 -91
  422. package/src/engine/apis/residency.ts +139 -3
  423. package/src/engine/apis/types.ts +16 -0
  424. package/src/engine/env-api-keys.ts +98 -0
  425. package/src/engine/gemma-channel-filter.ts +223 -0
  426. package/src/engine/instrumented-tui.ts +192 -0
  427. package/src/engine/messages.ts +14 -0
  428. package/src/engine/models.ts +42 -0
  429. package/src/engine/oauth.ts +16 -12
  430. package/src/engine/prompt-templates.ts +1 -0
  431. package/src/engine/provider-payload.ts +16 -59
  432. package/src/engine/strip-tokenizer-sentinels.ts +1 -1
  433. package/src/engine/truncate.ts +9 -0
  434. package/src/engine/tui.ts +17 -9
  435. package/src/engine/types.ts +3 -6
  436. package/src/engine/worker-runtime-capabilities.ts +5 -0
  437. package/src/engine/worker-runtime.ts +1 -1
  438. package/src/engine/worker-tools.ts +9 -4
  439. package/src/entry/boot-options.ts +50 -0
  440. package/src/entry/orchestrator.ts +288 -150
  441. package/src/interactive/application-controller.ts +89 -2
  442. package/src/interactive/chat-loop.ts +266 -41
  443. package/src/interactive/chat-panel.ts +173 -47
  444. package/src/interactive/chat-renderer.ts +262 -72
  445. package/src/interactive/clio-editor.ts +3 -8
  446. package/src/interactive/command-fallbacks.ts +2 -2
  447. package/src/interactive/context-overlay.ts +27 -1
  448. package/src/interactive/editor-submit.ts +228 -24
  449. package/src/interactive/export-html/ansi-to-html.ts +161 -0
  450. package/src/interactive/export-html/index.ts +51 -0
  451. package/src/interactive/export-html/template.ts +45 -0
  452. package/src/interactive/export-html/tool-renderer.ts +54 -0
  453. package/src/interactive/footer/dashboard.ts +4 -0
  454. package/src/interactive/footer/notifications.ts +1 -1
  455. package/src/interactive/footer/widgets.ts +20 -2
  456. package/src/interactive/footer-panel.ts +2 -2
  457. package/src/interactive/format-time.ts +14 -2
  458. package/src/interactive/interactive-application.ts +201 -17
  459. package/src/interactive/interactive-event-projection.ts +6 -1
  460. package/src/interactive/interactive-input-runtime.ts +50 -4
  461. package/src/interactive/interactive-presentation.ts +151 -19
  462. package/src/interactive/interactive-shell.ts +268 -14
  463. package/src/interactive/interactive-slash-runtime.ts +176 -114
  464. package/src/interactive/interactive-tickers.ts +38 -7
  465. package/src/interactive/keybinding-manager.ts +1 -1
  466. package/src/interactive/layout.ts +40 -3
  467. package/src/interactive/overlay-frame.ts +1 -1
  468. package/src/interactive/overlay-general-openers.ts +58 -1
  469. package/src/interactive/overlay-key-routing.ts +3 -0
  470. package/src/interactive/overlay-lifecycle.ts +13 -0
  471. package/src/interactive/overlay-permission-lifecycle.ts +2 -1
  472. package/src/interactive/overlay-session-lifecycle.ts +69 -12
  473. package/src/interactive/overlays/decisions.ts +300 -0
  474. package/src/interactive/overlays/help-reference.ts +15 -10
  475. package/src/interactive/overlays/model-selector.ts +34 -16
  476. package/src/interactive/overlays/session-selector.ts +18 -0
  477. package/src/interactive/overlays/settings.ts +105 -17
  478. package/src/interactive/overlays/skills-hub.ts +4 -4
  479. package/src/interactive/overlays/tree-selector.ts +41 -6
  480. package/src/interactive/render-trace.ts +499 -90
  481. package/src/interactive/renderers/compaction-summary.ts +2 -2
  482. package/src/interactive/renderers/diff.ts +115 -104
  483. package/src/interactive/renderers/mermaid.ts +53 -0
  484. package/src/interactive/renderers/tool-execution.ts +386 -133
  485. package/src/interactive/renderers/worker-entry.ts +20 -4
  486. package/src/interactive/session-switch-settlement.ts +10 -0
  487. package/src/interactive/slash-autocomplete.ts +6 -114
  488. package/src/interactive/slash-commands.ts +135 -47
  489. package/src/interactive/slash-spec.ts +9 -38
  490. package/src/interactive/status/controller.ts +5 -1
  491. package/src/interactive/stdout-backpressure.ts +99 -0
  492. package/src/interactive/stream-pacer.ts +530 -0
  493. package/src/interactive/stream-pacing-policy.ts +66 -0
  494. package/src/interactive/tasks-overlay.ts +368 -14
  495. package/src/interactive/terminal-lease.ts +485 -0
  496. package/src/interactive/theme/tokens.ts +1 -1
  497. package/src/interactive/turn-context.ts +4 -3
  498. package/src/interactive/turn-persistence.ts +30 -13
  499. package/src/interactive/turn-queues.ts +12 -0
  500. package/src/interactive/turn-recovery.ts +25 -8
  501. package/src/interactive/turn-runtime.ts +79 -12
  502. package/src/interactive/turn-state.ts +10 -0
  503. package/src/interactive/view/artifacts.ts +114 -4
  504. package/src/interactive/view/view-overlay.ts +3 -0
  505. package/src/interactive/welcome-dashboard.ts +17 -16
  506. package/src/interactive/worker-receipts.ts +52 -3
  507. package/src/interactive/worker-stream.ts +5 -1
  508. package/src/tools/agent-tools.ts +23 -3
  509. package/src/tools/artifact.ts +2 -2
  510. package/src/tools/ask-user.ts +23 -13
  511. package/src/tools/bash.ts +30 -2
  512. package/src/tools/bootstrap.ts +34 -431
  513. package/src/tools/builtin-tool-catalog.ts +265 -0
  514. package/src/tools/codewiki/code-nav-surface.ts +29 -0
  515. package/src/tools/codewiki/code-nav.ts +8 -22
  516. package/src/tools/codewiki/shared.ts +41 -38
  517. package/src/tools/context/docs-engine.ts +14 -3
  518. package/src/tools/context/index.ts +107 -28
  519. package/src/tools/context/surface.ts +19 -0
  520. package/src/tools/core-bootstrap.ts +168 -0
  521. package/src/tools/credential-present.ts +5 -5
  522. package/src/tools/dispatch-admission.ts +533 -0
  523. package/src/tools/dispatch-background.ts +54 -0
  524. package/src/tools/dispatch-event-text.ts +6 -0
  525. package/src/tools/dispatch-plan.ts +9 -4
  526. package/src/tools/dispatch-run-events.ts +238 -0
  527. package/src/tools/dispatch-runner.ts +2370 -0
  528. package/src/tools/dispatch-scout-admission.ts +295 -0
  529. package/src/tools/dispatch-types.ts +77 -0
  530. package/src/tools/dispatch.ts +67 -3161
  531. package/src/tools/find.ts +4 -2
  532. package/src/tools/grep.ts +2 -2
  533. package/src/tools/lazy-tool.ts +60 -0
  534. package/src/tools/ledger.ts +3 -3
  535. package/src/tools/monitor-surface.ts +36 -0
  536. package/src/tools/monitor.ts +2 -32
  537. package/src/tools/observers.ts +2 -2
  538. package/src/tools/registry.ts +39 -27
  539. package/src/tools/safe-exec.ts +2 -2
  540. package/src/tools/steer-surface.ts +17 -0
  541. package/src/tools/steer.ts +2 -13
  542. package/src/tools/tasks.ts +108 -11
  543. package/src/tools/truncate.ts +25 -184
  544. package/src/tools/verify/frontend.ts +3 -1
  545. package/src/tools/verify/index.ts +3 -38
  546. package/src/tools/verify/surface.ts +46 -0
  547. package/src/tools/web-fetch-surface.ts +23 -0
  548. package/src/tools/web-fetch.ts +2 -20
  549. package/src/tools/write.ts +7 -2
  550. package/src/worker/entry.ts +39 -2
  551. package/src/worker/spec-contract.ts +26 -5
  552. package/dist/chunk-7SS2CTV2.js +0 -61361
  553. package/dist/chunk-DKGKUHFA.js +0 -924
  554. package/dist/chunk-GEP36Y4X.js +0 -12796
  555. package/dist/chunk-XYWBQRDM.js +0 -137
  556. package/dist/clio-BZVGEUFJ.js +0 -58
  557. package/dist/configure-S7S6F6CL.js +0 -32
  558. package/docs/html/agents_blueprint.html +0 -936
  559. package/docs/html/alcf_blueprint.html +0 -324
  560. package/docs/html/architecture_blueprint.html +0 -850
  561. package/docs/html/commands_blueprint.html +0 -939
  562. package/docs/html/config_knobs_audit_blueprint.html +0 -178
  563. package/docs/html/configuration_blueprint.html +0 -1080
  564. package/docs/html/context_blueprint.html +0 -603
  565. package/docs/html/documentation_blueprint.html +0 -832
  566. package/docs/html/environment_blueprint.html +0 -404
  567. package/docs/html/eval_blueprint.html +0 -743
  568. package/docs/html/evals_internal_blueprint.html +0 -190
  569. package/docs/html/evolution_blueprint.html +0 -674
  570. package/docs/html/extensions_blueprint.html +0 -2065
  571. package/docs/html/fleet_dispatch_blueprint.html +0 -286
  572. package/docs/html/index.html +0 -919
  573. package/docs/html/lifecycle_blueprint.html +0 -723
  574. package/docs/html/memory_blueprint.html +0 -699
  575. package/docs/html/middleware_blueprint.html +0 -664
  576. package/docs/html/models_blueprint.html +0 -2366
  577. package/docs/html/observability_blueprint.html +0 -683
  578. package/docs/html/provider_adapter_blueprint.html +0 -245
  579. package/docs/html/safety_blueprint.html +0 -1386
  580. package/docs/html/shared.css +0 -571
  581. package/docs/html/shared.js +0 -143
  582. package/docs/html/skills_blueprint.html +0 -671
  583. package/docs/html/soak_blueprint.html +0 -182
  584. package/docs/html/tool_usage_blueprint.html +0 -350
  585. package/docs/html/tools_blueprint.html +0 -2249
  586. package/docs/html/trace_blueprint.html +0 -235
  587. package/docs/html/tui_design_blueprint.html +0 -374
  588. package/docs/html/validation_blueprint.html +0 -961
  589. package/docs/html/worker_dispatch_blueprint.html +0 -231
  590. package/src/core/release.ts +0 -2
  591. package/src/domains/providers/runtimes/common/lmstudio-logger.ts +0 -32
  592. package/src/domains/providers/runtimes/local-native/lmstudio-native.ts +0 -491
  593. package/src/engine/apis/lmstudio-native.ts +0 -1438
  594. package/src/engine/apis/thinking-replay.ts +0 -11
  595. package/src/tools/string-enum.ts +0 -15
@@ -0,0 +1,217 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ readLayeredSettings,
4
+ readStrictLayeredSettings
5
+ } from "./chunk-CBCAPZAA.js";
6
+ import {
7
+ formatBootTrace
8
+ } from "./chunk-HKIYEGME.js";
9
+ import {
10
+ initializeClioHome
11
+ } from "./chunk-BMEMKKIT.js";
12
+ import {
13
+ readSettings
14
+ } from "./chunk-A3CYT5EX.js";
15
+ import {
16
+ require_dist
17
+ } from "./chunk-APJ265NV.js";
18
+ import {
19
+ findEngineEnvKeys,
20
+ getEngineEnvApiKey
21
+ } from "./chunk-YXLYO42X.js";
22
+ import {
23
+ clioConfigDir
24
+ } from "./chunk-BNAZZHFG.js";
25
+ import {
26
+ __toESM,
27
+ init_esm_shims
28
+ } from "./chunk-3R73A4XB.js";
29
+
30
+ // src/cli/clio.ts
31
+ init_esm_shims();
32
+
33
+ // src/cli/default-target.ts
34
+ init_esm_shims();
35
+
36
+ // src/domains/providers/auth/boot-status.ts
37
+ init_esm_shims();
38
+ var import_yaml = __toESM(require_dist(), 1);
39
+ import { existsSync, readFileSync } from "node:fs";
40
+ import { join } from "node:path";
41
+ function record(value) {
42
+ return value !== null && typeof value === "object" && !Array.isArray(value) ? value : null;
43
+ }
44
+ function storedCredentialPresent(providerId) {
45
+ const path = join(clioConfigDir(), "credentials.yaml");
46
+ if (!existsSync(path)) return false;
47
+ try {
48
+ const root = record((0, import_yaml.parse)(readFileSync(path, "utf8")));
49
+ const entry = record(record(root?.entries)?.[providerId]);
50
+ if (!entry) return false;
51
+ if (entry.type === "api_key") return typeof entry.key === "string" && entry.key.trim().length > 0;
52
+ if (entry.type === "oauth") {
53
+ return typeof entry.access === "string" && typeof entry.refresh === "string" && typeof entry.expires === "number";
54
+ }
55
+ return typeof entry.key === "string" && entry.key.trim().length > 0;
56
+ } catch {
57
+ return false;
58
+ }
59
+ }
60
+ function environmentCredentialPresent(providerId, explicitEnvVar) {
61
+ if (explicitEnvVar && process.env[explicitEnvVar]?.trim()) return true;
62
+ for (const name of findEngineEnvKeys(providerId) ?? []) {
63
+ if (process.env[name]?.trim()) return true;
64
+ }
65
+ return Boolean(getEngineEnvApiKey(providerId)?.trim());
66
+ }
67
+ function bootAuthStatus(target, runtime) {
68
+ const required = runtime.auth === "oauth" || runtime.auth === "api-key" && (Boolean(target.auth?.apiKeyEnvVar || target.auth?.apiKeyRef || target.auth?.oauthProfile) || runtime.tier === "cloud" || Boolean(runtime.credentialsEnvVar));
69
+ const providerId = target.auth?.oauthProfile?.trim() || target.auth?.apiKeyRef?.trim() || runtime.oauthProviderId || runtime.id;
70
+ if (!required) return { providerId, required: false, available: true };
71
+ const explicitEnvVar = target.auth?.apiKeyEnvVar ?? runtime.credentialsEnvVar;
72
+ return {
73
+ providerId,
74
+ required: true,
75
+ available: storedCredentialPresent(providerId) || environmentCredentialPresent(providerId, explicitEnvVar)
76
+ };
77
+ }
78
+
79
+ // src/domains/providers/runtimes/boot-manifest.ts
80
+ init_esm_shims();
81
+ var BUILTIN_RUNTIME_BOOT_MANIFEST = [
82
+ { id: "alcf", kind: "http", tier: "cloud", auth: "oauth" },
83
+ { id: "anthropic", kind: "http", tier: "cloud", auth: "api-key", credentialsEnvVar: "ANTHROPIC_API_KEY" },
84
+ { id: "anthropic-max", kind: "http", tier: "cloud", auth: "oauth", oauthProviderId: "anthropic" },
85
+ { id: "bedrock", kind: "http", tier: "cloud", auth: "aws-sdk" },
86
+ { id: "deepseek", kind: "http", tier: "cloud", auth: "api-key", credentialsEnvVar: "DEEPSEEK_API_KEY" },
87
+ { id: "google", kind: "http", tier: "cloud", auth: "api-key", credentialsEnvVar: "GOOGLE_API_KEY" },
88
+ { id: "groq", kind: "http", tier: "cloud", auth: "api-key", credentialsEnvVar: "GROQ_API_KEY" },
89
+ { id: "mistral", kind: "http", tier: "cloud", auth: "api-key", credentialsEnvVar: "MISTRAL_API_KEY" },
90
+ { id: "openai", kind: "http", tier: "cloud", auth: "api-key", credentialsEnvVar: "OPENAI_API_KEY" },
91
+ { id: "openai-codex", kind: "http", tier: "cloud", auth: "oauth" },
92
+ { id: "openrouter", kind: "http", tier: "cloud", auth: "api-key", credentialsEnvVar: "OPENROUTER_API_KEY" },
93
+ { id: "lemonade-anthropic", kind: "http", tier: "local-native", auth: "api-key" },
94
+ { id: "lemonade", kind: "http", tier: "local-native", auth: "api-key" },
95
+ { id: "llamacpp", kind: "http", tier: "local-native", auth: "api-key" },
96
+ { id: "llamacpp-anthropic", kind: "http", tier: "local-native", auth: "api-key" },
97
+ { id: "llamacpp-completion", kind: "http", tier: "local-native", auth: "api-key" },
98
+ { id: "llamacpp-embed", kind: "http", tier: "local-native", auth: "api-key" },
99
+ { id: "llamacpp-rerank", kind: "http", tier: "local-native", auth: "api-key" },
100
+ { id: "lmstudio", aliases: ["lmstudio-native"], kind: "http", tier: "local-native", auth: "api-key" },
101
+ { id: "ollama-native", kind: "http", tier: "local-native", auth: "none" },
102
+ { id: "anthropic-compat", kind: "http", tier: "protocol", auth: "api-key" },
103
+ { id: "openai-compat", kind: "http", tier: "protocol", auth: "api-key" },
104
+ { id: "sglang", kind: "http", tier: "local-native", auth: "api-key" },
105
+ { id: "vllm", kind: "http", tier: "local-native", auth: "api-key" },
106
+ { id: "claude-code", kind: "subprocess", tier: "subscription", auth: "claude-cli" },
107
+ { id: "claude-sdk", kind: "sdk", tier: "subscription", auth: "claude-cli" },
108
+ { id: "antigravity-code", kind: "subprocess", tier: "subscription", auth: "none" }
109
+ ];
110
+ function findBuiltinRuntimeBootMetadata(id) {
111
+ return BUILTIN_RUNTIME_BOOT_MANIFEST.find((runtime) => runtime.id === id || runtime.aliases?.includes(id)) ?? null;
112
+ }
113
+
114
+ // src/cli/default-target.ts
115
+ function classifyDefaultTarget(settings = readSettings()) {
116
+ const targetId = settings.orchestrator.target;
117
+ if (!targetId) return { kind: "no-target" };
118
+ const target = settings.targets.find((entry) => entry.id === targetId);
119
+ if (!target) return { kind: "no-target" };
120
+ const runtime = findBuiltinRuntimeBootMetadata(target.runtime);
121
+ if (runtime?.kind !== "http") {
122
+ return { kind: "ineligible-runtime", targetId, runtime: target.runtime };
123
+ }
124
+ const auth = bootAuthStatus(target, runtime);
125
+ if (auth.available) return { kind: "usable" };
126
+ return { kind: "missing-credential", targetId, store: auth.providerId };
127
+ }
128
+ function describeVerdict(verdict) {
129
+ switch (verdict.kind) {
130
+ case "no-target":
131
+ return "No model target is configured.";
132
+ case "ineligible-runtime":
133
+ return `Target '${verdict.targetId}' runs on '${verdict.runtime}', which cannot drive the main agent.`;
134
+ default:
135
+ return "No usable default target is configured.";
136
+ }
137
+ }
138
+
139
+ // src/cli/clio.ts
140
+ function terminalLeaseEligible(options, env = process.env) {
141
+ return !options.headless && !options.acp && env.CLIO_CODER_INTERACTIVE === "1";
142
+ }
143
+ async function runClioCommand(options = {}) {
144
+ if (!options.headless && !options.acp && process.env.CLIO_CODER_INTERACTIVE === void 0 && process.stdin.isTTY) {
145
+ process.env.CLIO_CODER_INTERACTIVE = "1";
146
+ }
147
+ let startupSettings;
148
+ if (terminalLeaseEligible(options)) {
149
+ initializeClioHome();
150
+ startupSettings = readStrictLayeredSettings(process.cwd()).settings;
151
+ const verdict = classifyDefaultTarget(startupSettings);
152
+ if (verdict.kind === "missing-credential") {
153
+ process.stdout.write(
154
+ `Target '${verdict.targetId}' has no stored credential under '${verdict.store}'.
155
+ Run \`clio-coder auth login ${verdict.store}\` if the endpoint requires one; local runtimes that ignore keys work as is.
156
+ `
157
+ );
158
+ } else if (verdict.kind !== "usable") {
159
+ process.stdout.write(`${describeVerdict(verdict)} Starting \`clio-coder configure\`.
160
+ `);
161
+ const { runConfigureCommand } = await import("./configure-R6A64DHX.js");
162
+ const configured = await runConfigureCommand([]);
163
+ if (configured !== 0) return configured;
164
+ startupSettings = readStrictLayeredSettings(process.cwd()).settings;
165
+ }
166
+ }
167
+ let terminalLease;
168
+ try {
169
+ if (terminalLeaseEligible(options)) {
170
+ const { createProcessTerminalLease, instantShellEnabled } = await import("./terminal-lease-IT5JW2NR.js");
171
+ if (instantShellEnabled()) {
172
+ let stage0FrameId = null;
173
+ terminalLease = createProcessTerminalLease({
174
+ settings: startupSettings ?? readLayeredSettings(process.cwd()).settings,
175
+ onStage0Commit: (frameId) => {
176
+ stage0FrameId = frameId;
177
+ }
178
+ });
179
+ if (stage0FrameId !== null) {
180
+ const line = formatBootTrace("Stage 0 shell commit", `frameId=${stage0FrameId}`);
181
+ if (line) terminalLease.deferDiagnostic("stderr", line);
182
+ }
183
+ }
184
+ }
185
+ if (terminalLease && process.env.NODE_ENV === "test") {
186
+ const requestedDelay = Number.parseInt(process.env.CLIO_CODER_TEST_STAGE1_DELAY_MS ?? "0", 10);
187
+ const delayMs = Number.isFinite(requestedDelay) ? Math.max(0, Math.min(5e3, requestedDelay)) : 0;
188
+ if (delayMs > 0) await new Promise((resolve) => setTimeout(resolve, delayMs));
189
+ if (process.env.CLIO_CODER_TEST_STAGE1_FAIL === "1") {
190
+ throw new Error("injected Stage 1 hydration failure");
191
+ }
192
+ }
193
+ const { bootOrchestrator } = await import("./orchestrator-CGFKEP27.js");
194
+ const result = await bootOrchestrator({
195
+ ...options,
196
+ ...startupSettings ? { startupSettings } : {},
197
+ ...terminalLease ? { terminalLease } : {}
198
+ });
199
+ return result.exitCode;
200
+ } catch (error) {
201
+ try {
202
+ await terminalLease?.fail();
203
+ } catch (cleanupError) {
204
+ process.stderr.write(
205
+ `Clio Coder: terminal cleanup also failed: ${cleanupError instanceof Error ? cleanupError.message : String(cleanupError)}
206
+ `
207
+ );
208
+ }
209
+ throw error;
210
+ }
211
+ }
212
+
213
+ export {
214
+ terminalLeaseEligible,
215
+ runClioCommand
216
+ };
217
+ //# sourceMappingURL=chunk-MBS4V7ZP.js.map
@@ -1,23 +1,27 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
- COMPAT_RESOURCE_PRECEDENCE,
4
- defaultScopedResourceRoots,
5
3
  expandSkillInvocationInput,
6
4
  loadSkills,
7
5
  parsePendingSkillRequests,
8
- projectCompatTrusted,
6
+ projectCompatTrusted
7
+ } from "./chunk-4BPJXDWC.js";
8
+ import {
9
+ COMPAT_RESOURCE_PRECEDENCE,
10
+ defaultScopedResourceRoots,
9
11
  readRootEntries,
10
12
  sourceInfoForRoot,
11
13
  splitYamlFrontmatter,
12
14
  stringField
13
- } from "./chunk-474KN5II.js";
15
+ } from "./chunk-2SFS6XQE.js";
14
16
  import {
15
17
  INTEROP_AGENT_KINDS
16
18
  } from "./chunk-IHXBNWMM.js";
17
19
  import {
18
- expandConfigPath,
20
+ expandConfigPath
21
+ } from "./chunk-SST6Z5JA.js";
22
+ import {
19
23
  require_dist
20
- } from "./chunk-GB6QRBXN.js";
24
+ } from "./chunk-APJ265NV.js";
21
25
  import {
22
26
  __toESM,
23
27
  init_esm_shims
@@ -152,6 +156,66 @@ function extractExpected(block) {
152
156
  return bullets.map((bullet) => bullet.trim()).filter((bullet) => bullet.length > 0);
153
157
  }
154
158
 
159
+ // src/domains/resources/skills/provenance-pin.ts
160
+ init_esm_shims();
161
+ var import_yaml = __toESM(require_dist(), 1);
162
+ import { existsSync, readFileSync } from "node:fs";
163
+ import path from "node:path";
164
+ var SKILL_PIN_MANIFEST_FILENAME = "registry.yaml";
165
+ function isPlainObject(value) {
166
+ return typeof value === "object" && value !== null && !Array.isArray(value);
167
+ }
168
+ function resolveSkillPinManifestPath(cwd) {
169
+ const fromEnv = process.env.CLIO_CODER_SKILL_CATALOG_DIR;
170
+ const catalogDir = fromEnv && fromEnv.trim().length > 0 ? path.resolve(fromEnv.trim()) : path.join(cwd, "skills");
171
+ const manifestPath = path.join(catalogDir, SKILL_PIN_MANIFEST_FILENAME);
172
+ return existsSync(manifestPath) ? manifestPath : null;
173
+ }
174
+ function loadSkillPinManifest(manifestPath) {
175
+ let parsed;
176
+ try {
177
+ parsed = import_yaml.default.parse(readFileSync(manifestPath, "utf8"));
178
+ } catch {
179
+ return null;
180
+ }
181
+ if (!isPlainObject(parsed) || !Array.isArray(parsed.skills)) return null;
182
+ const entries = /* @__PURE__ */ new Map();
183
+ for (const raw of parsed.skills) {
184
+ if (!isPlainObject(raw)) continue;
185
+ const name = typeof raw.name === "string" ? raw.name.trim() : "";
186
+ const sha256 = typeof raw.sha256 === "string" ? raw.sha256.trim().toLowerCase() : "";
187
+ if (name.length === 0 || !/^[0-9a-f]{64}$/.test(sha256)) continue;
188
+ entries.set(name, {
189
+ name,
190
+ version: typeof raw.version === "string" && raw.version.trim().length > 0 ? raw.version.trim() : null,
191
+ sha256
192
+ });
193
+ }
194
+ return entries;
195
+ }
196
+ function checkSkillDrift(skill, cwd) {
197
+ const actual = skill.normalizedHash.toLowerCase();
198
+ const manifestPath = resolveSkillPinManifestPath(cwd);
199
+ const manifest = manifestPath === null ? null : loadSkillPinManifest(manifestPath);
200
+ const pinned = manifest?.get(skill.name);
201
+ if (pinned !== void 0) {
202
+ return {
203
+ verdict: pinned.sha256 === actual ? "match" : "mismatch",
204
+ authority: "pinned-manifest",
205
+ expected: pinned.sha256
206
+ };
207
+ }
208
+ const recorded = skill.provenance?.installedHash?.trim().toLowerCase();
209
+ if (recorded !== void 0 && /^[0-9a-f]{64}$/.test(recorded)) {
210
+ return {
211
+ verdict: recorded === actual ? "match" : "mismatch",
212
+ authority: "install-record",
213
+ expected: recorded
214
+ };
215
+ }
216
+ return null;
217
+ }
218
+
155
219
  // src/domains/resources/index.ts
156
220
  init_esm_shims();
157
221
 
@@ -163,9 +227,13 @@ init_esm_shims();
163
227
 
164
228
  // src/domains/resources/prompts/loader.ts
165
229
  init_esm_shims();
166
- import { readFileSync } from "node:fs";
230
+ import { readFileSync as readFileSync2 } from "node:fs";
167
231
  import { homedir } from "node:os";
168
- import path from "node:path";
232
+ import path2 from "node:path";
233
+
234
+ // src/engine/prompt-templates.ts
235
+ init_esm_shims();
236
+ import { parseCommandArgs, substituteArgs } from "@earendil-works/pi-agent-core";
169
237
 
170
238
  // src/domains/resources/collision.ts
171
239
  init_esm_shims();
@@ -217,66 +285,6 @@ function resolveResourceCollisions(candidates) {
217
285
  return { winners, diagnostics };
218
286
  }
219
287
 
220
- // src/domains/resources/prompts/substitute.ts
221
- init_esm_shims();
222
- function parseCommandArgs(input) {
223
- const args = [];
224
- let current = "";
225
- let hasToken = false;
226
- let quote = null;
227
- const push = () => {
228
- if (!hasToken) return;
229
- args.push(current);
230
- current = "";
231
- hasToken = false;
232
- };
233
- for (let i = 0; i < input.length; i += 1) {
234
- const ch = input[i];
235
- if (!ch) continue;
236
- if (quote) {
237
- if (ch === quote) {
238
- quote = null;
239
- } else {
240
- current += ch;
241
- }
242
- continue;
243
- }
244
- if (ch === "'" || ch === `"`) {
245
- quote = ch;
246
- hasToken = true;
247
- continue;
248
- }
249
- if (/\s/.test(ch)) {
250
- push();
251
- continue;
252
- }
253
- current += ch;
254
- hasToken = true;
255
- }
256
- push();
257
- return args;
258
- }
259
- function sliceArgs(args, startText, lengthText) {
260
- const start = Number.parseInt(startText, 10);
261
- if (!Number.isFinite(start) || start <= 0) return "";
262
- const zeroBased = start - 1;
263
- if (lengthText === void 0) return args.slice(zeroBased).join(" ");
264
- const length = Number.parseInt(lengthText, 10);
265
- if (!Number.isFinite(length) || length <= 0) return "";
266
- return args.slice(zeroBased, zeroBased + length).join(" ");
267
- }
268
- function substituteArgs(content, args) {
269
- const allArgs = args.join(" ");
270
- return content.replace(
271
- /\$\{@:(\d+)(?::(\d+))?\}/g,
272
- (_match, start, length) => sliceArgs(args, start, length)
273
- ).replace(/\$ARGUMENTS/g, allArgs).replace(/\$@/g, allArgs).replace(/\$(\d+)/g, (_match, indexText) => {
274
- const index = Number.parseInt(indexText, 10);
275
- if (!Number.isFinite(index) || index <= 0) return "";
276
- return args[index - 1] ?? "";
277
- });
278
- }
279
-
280
288
  // src/domains/resources/prompts/loader.ts
281
289
  function defaultPromptTemplateRoots(input = {}) {
282
290
  const cwd = input.cwd ?? process.cwd();
@@ -286,7 +294,7 @@ function defaultPromptTemplateRoots(input = {}) {
286
294
  for (const kind of INTEROP_AGENT_KINDS) {
287
295
  if (kind.userPromptRoot !== void 0) {
288
296
  compat.push({
289
- path: path.join(home, kind.userPromptRoot),
297
+ path: path2.join(home, kind.userPromptRoot),
290
298
  scope: "user",
291
299
  source: `${kind.id}-user`,
292
300
  precedence: COMPAT_RESOURCE_PRECEDENCE.userCompat,
@@ -295,7 +303,7 @@ function defaultPromptTemplateRoots(input = {}) {
295
303
  }
296
304
  if (kind.projectPromptRoot !== void 0) {
297
305
  compat.push({
298
- path: path.join(cwd, kind.projectPromptRoot),
306
+ path: path2.join(cwd, kind.projectPromptRoot),
299
307
  scope: "project",
300
308
  source: `${kind.id}-project`,
301
309
  precedence: COMPAT_RESOURCE_PRECEDENCE.projectCompat,
@@ -320,17 +328,17 @@ function fallbackDescription(body) {
320
328
  return normalized.length > 60 ? `${normalized.slice(0, 57)}...` : normalized;
321
329
  }
322
330
  function loadPromptFile(filePath, root, diagnostics) {
323
- const ext = path.extname(filePath).toLowerCase();
331
+ const ext = path2.extname(filePath).toLowerCase();
324
332
  if (ext !== ".md") return null;
325
333
  let raw;
326
334
  try {
327
- raw = readFileSync(filePath, "utf8");
335
+ raw = readFileSync2(filePath, "utf8");
328
336
  } catch (err) {
329
337
  const reason = err instanceof Error ? err.message : String(err);
330
338
  diagnostics.push({ type: "warning", message: `prompt template could not be read: ${reason}`, path: filePath });
331
339
  return null;
332
340
  }
333
- const name = path.basename(filePath, ext);
341
+ const name = path2.basename(filePath, ext);
334
342
  if (name.trim().length === 0) return null;
335
343
  const { frontmatter, body } = splitOptionalFrontmatter(raw, filePath, diagnostics);
336
344
  const description = stringField(frontmatter, "description") ?? fallbackDescription(body);
@@ -351,7 +359,7 @@ function loadPromptRoot(root, diagnostics) {
351
359
  const candidates = [];
352
360
  for (const entry of readRootEntries(root, "prompt template", diagnostics)) {
353
361
  if (!entry.isFile()) continue;
354
- const candidate = loadPromptFile(path.join(root.path, entry.name), root, diagnostics);
362
+ const candidate = loadPromptFile(path2.join(root.path, entry.name), root, diagnostics);
355
363
  if (candidate) candidates.push(candidate);
356
364
  }
357
365
  return candidates;
@@ -361,8 +369,20 @@ function loadPromptTemplates(input = {}) {
361
369
  const diagnostics = [];
362
370
  const candidates = roots.flatMap((root) => loadPromptRoot(root, diagnostics));
363
371
  const resolved = resolveResourceCollisions(candidates);
372
+ const items = [];
373
+ for (const template of resolved.winners) {
374
+ if (input.reservedNames?.has(template.name) === true) {
375
+ diagnostics.push({
376
+ type: "collision",
377
+ message: `prompt template /${template.name} conflicts with the built-in slash command /${template.name} and was ignored`,
378
+ path: template.filePath
379
+ });
380
+ continue;
381
+ }
382
+ items.push(template);
383
+ }
364
384
  return {
365
- items: [...resolved.winners].sort((a, b) => a.name.localeCompare(b.name)),
385
+ items: items.sort((a, b) => a.name.localeCompare(b.name)),
366
386
  diagnostics: [...diagnostics, ...resolved.diagnostics]
367
387
  };
368
388
  }
@@ -407,6 +427,7 @@ function createResourcesLoader(options = {}) {
407
427
  const skillOptions2 = () => options.skills?.() ?? {};
408
428
  const promptOptions = (cwd) => ({
409
429
  cwd,
430
+ ...options.reservedPromptNames !== void 0 ? { reservedNames: options.reservedPromptNames } : {},
410
431
  ...skillOptions2().trustProjectCompatRoots !== void 0 ? { trustProjectCompatRoots: skillOptions2().trustProjectCompatRoots === true } : {}
411
432
  });
412
433
  return {
@@ -425,9 +446,6 @@ function createResourcesLoader(options = {}) {
425
446
  expandPromptTemplate(text, cwd = defaultCwd) {
426
447
  return expandPromptTemplateInput(text, loadPromptTemplates(promptOptions(cwd)));
427
448
  },
428
- themes() {
429
- return { items: [], diagnostics: [] };
430
- },
431
449
  resolvePath(value, cwd = defaultCwd) {
432
450
  return expandConfigPath(value, { cwd });
433
451
  },
@@ -442,6 +460,7 @@ function createResourcesBundle(context, options = {}) {
442
460
  const config = () => context.getContract("config");
443
461
  const loader = createResourcesLoader({
444
462
  ...options.cwd !== void 0 ? { cwd: options.cwd } : {},
463
+ ...options.reservedPromptNames !== void 0 ? { reservedPromptNames: options.reservedPromptNames } : {},
445
464
  skills: () => ({
446
465
  ...skillOptions(config()?.get().skills.trustProjectCompatRoots === true, options)
447
466
  })
@@ -467,9 +486,6 @@ function createResourcesBundle(context, options = {}) {
467
486
  expandPromptTemplate(text, cwd) {
468
487
  return loader.expandPromptTemplate(text, cwd);
469
488
  },
470
- themes() {
471
- return loader.themes();
472
- },
473
489
  resolvePath(value, cwd) {
474
490
  return loader.resolvePath(value, cwd);
475
491
  },
@@ -495,65 +511,8 @@ var ResourcesManifest = {
495
511
  dependsOn: ["config"]
496
512
  };
497
513
 
498
- // src/domains/resources/skills/provenance-pin.ts
514
+ // src/domains/resources/prompts/substitute.ts
499
515
  init_esm_shims();
500
- var import_yaml = __toESM(require_dist(), 1);
501
- import { existsSync, readFileSync as readFileSync2 } from "node:fs";
502
- import path2 from "node:path";
503
- var SKILL_PIN_MANIFEST_FILENAME = "registry.yaml";
504
- function isPlainObject(value) {
505
- return typeof value === "object" && value !== null && !Array.isArray(value);
506
- }
507
- function resolveSkillPinManifestPath(cwd) {
508
- const fromEnv = process.env.CLIO_CODER_SKILL_CATALOG_DIR;
509
- const catalogDir = fromEnv && fromEnv.trim().length > 0 ? path2.resolve(fromEnv.trim()) : path2.join(cwd, "skills");
510
- const manifestPath = path2.join(catalogDir, SKILL_PIN_MANIFEST_FILENAME);
511
- return existsSync(manifestPath) ? manifestPath : null;
512
- }
513
- function loadSkillPinManifest(manifestPath) {
514
- let parsed;
515
- try {
516
- parsed = import_yaml.default.parse(readFileSync2(manifestPath, "utf8"));
517
- } catch {
518
- return null;
519
- }
520
- if (!isPlainObject(parsed) || !Array.isArray(parsed.skills)) return null;
521
- const entries = /* @__PURE__ */ new Map();
522
- for (const raw of parsed.skills) {
523
- if (!isPlainObject(raw)) continue;
524
- const name = typeof raw.name === "string" ? raw.name.trim() : "";
525
- const sha256 = typeof raw.sha256 === "string" ? raw.sha256.trim().toLowerCase() : "";
526
- if (name.length === 0 || !/^[0-9a-f]{64}$/.test(sha256)) continue;
527
- entries.set(name, {
528
- name,
529
- version: typeof raw.version === "string" && raw.version.trim().length > 0 ? raw.version.trim() : null,
530
- sha256
531
- });
532
- }
533
- return entries;
534
- }
535
- function checkSkillDrift(skill, cwd) {
536
- const actual = skill.normalizedHash.toLowerCase();
537
- const manifestPath = resolveSkillPinManifestPath(cwd);
538
- const manifest = manifestPath === null ? null : loadSkillPinManifest(manifestPath);
539
- const pinned = manifest?.get(skill.name);
540
- if (pinned !== void 0) {
541
- return {
542
- verdict: pinned.sha256 === actual ? "match" : "mismatch",
543
- authority: "pinned-manifest",
544
- expected: pinned.sha256
545
- };
546
- }
547
- const recorded = skill.provenance?.installedHash?.trim().toLowerCase();
548
- if (recorded !== void 0 && /^[0-9a-f]{64}$/.test(recorded)) {
549
- return {
550
- verdict: recorded === actual ? "match" : "mismatch",
551
- authority: "install-record",
552
- expected: recorded
553
- };
554
- }
555
- return null;
556
- }
557
516
 
558
517
  // src/domains/resources/index.ts
559
518
  var ResourcesDomainModule = {
@@ -573,4 +532,4 @@ export {
573
532
  ResourcesDomainModule,
574
533
  createResourcesDomainModule
575
534
  };
576
- //# sourceMappingURL=chunk-FST4FYJB.js.map
535
+ //# sourceMappingURL=chunk-MFFY33HR.js.map