@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,352 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ init_esm_shims
4
+ } from "./chunk-3R73A4XB.js";
5
+
6
+ // src/worker/protocol.ts
7
+ init_esm_shims();
8
+ import { createHash } from "node:crypto";
9
+ var WORKER_PROTOCOL_VERSION = 1;
10
+ var CONTROL_FRAME_PREFIX = "@clio-control/1 ";
11
+ var WORKER_CONTROL_FRAME_MAX_BYTES = 16 * 1024;
12
+ var WORKER_BULK_FRAME_MAX_BYTES = 4 * 1024 * 1024;
13
+ var WORKER_STDIN_FRAME_MAX_BYTES = 1024 * 1024;
14
+ var WORKER_STDIN_QUEUE_MAX_BYTES = 4 * 1024 * 1024;
15
+ var WORKER_EVENT_QUEUE_MAX_FRAMES = 4096;
16
+ function knownResource(value) {
17
+ return { known: true, value };
18
+ }
19
+ var UNKNOWN_RESOURCE = { known: false };
20
+ var WORKER_RESOURCE_LABEL_MAX = 32;
21
+ var WORKER_RESIDENT_MODEL_MAX = 64;
22
+ var AGENT_LEDGER_SCOPE_MAX_ENTRIES = 8;
23
+ var AGENT_LEDGER_SCOPE_ENTRY_MAX_CHARS = 200;
24
+ var AGENT_LEDGER_INTENT_MAX_CHARS = 200;
25
+ var AGENT_LEDGER_CLAIM_MAX_CHARS = 400;
26
+ var AGENT_LEDGER_EVIDENCE_MAX_CHARS = 400;
27
+ var AGENT_LEDGER_PATH_MAX_CHARS = 400;
28
+ var AGENT_LEDGER_ENTRY_ID = /^e[1-9][0-9]*$/;
29
+ function isAgentLedgerEntryId(value) {
30
+ return typeof value === "string" && AGENT_LEDGER_ENTRY_ID.test(value);
31
+ }
32
+ function boundedString(value, max) {
33
+ return typeof value === "string" && value.length > 0 && value.length <= max;
34
+ }
35
+ function parseAgentLedgerBody(value) {
36
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
37
+ return { ok: false, reason: "ledger body is not an object" };
38
+ }
39
+ const record = value;
40
+ switch (record.kind) {
41
+ case "claim": {
42
+ const scope = record.scope;
43
+ if (!Array.isArray(scope) || scope.length === 0) {
44
+ return { ok: false, reason: "claim scope must be a non-empty array of path prefixes" };
45
+ }
46
+ if (scope.length > AGENT_LEDGER_SCOPE_MAX_ENTRIES) {
47
+ return { ok: false, reason: `claim scope exceeds ${AGENT_LEDGER_SCOPE_MAX_ENTRIES} entries` };
48
+ }
49
+ for (const entry of scope) {
50
+ if (!boundedString(entry, AGENT_LEDGER_SCOPE_ENTRY_MAX_CHARS)) {
51
+ return {
52
+ ok: false,
53
+ reason: `claim scope entries must be 1..${AGENT_LEDGER_SCOPE_ENTRY_MAX_CHARS} characters`
54
+ };
55
+ }
56
+ }
57
+ if (!boundedString(record.intent, AGENT_LEDGER_INTENT_MAX_CHARS)) {
58
+ return { ok: false, reason: `claim intent must be 1..${AGENT_LEDGER_INTENT_MAX_CHARS} characters` };
59
+ }
60
+ return { ok: true, body: { kind: "claim", scope: scope.map(String), intent: record.intent } };
61
+ }
62
+ case "finding": {
63
+ if (!boundedString(record.claim, AGENT_LEDGER_CLAIM_MAX_CHARS)) {
64
+ return { ok: false, reason: `finding claim must be 1..${AGENT_LEDGER_CLAIM_MAX_CHARS} characters` };
65
+ }
66
+ const body = {
67
+ kind: "finding",
68
+ claim: record.claim
69
+ };
70
+ if (record.path !== void 0) {
71
+ if (!boundedString(record.path, AGENT_LEDGER_PATH_MAX_CHARS)) {
72
+ return { ok: false, reason: `finding path must be 1..${AGENT_LEDGER_PATH_MAX_CHARS} characters` };
73
+ }
74
+ body.path = record.path;
75
+ }
76
+ if (record.line !== void 0) {
77
+ const line = record.line;
78
+ if (typeof line !== "number" || !Number.isSafeInteger(line) || line <= 0) {
79
+ return { ok: false, reason: "finding line must be a positive safe integer" };
80
+ }
81
+ body.line = line;
82
+ }
83
+ return { ok: true, body };
84
+ }
85
+ case "review": {
86
+ if (!isAgentLedgerEntryId(record.target)) {
87
+ return { ok: false, reason: "review target must be a ledger entry id such as e3" };
88
+ }
89
+ if (typeof record.passed !== "boolean") {
90
+ return { ok: false, reason: "review passed must be a boolean" };
91
+ }
92
+ if (!boundedString(record.evidence, AGENT_LEDGER_EVIDENCE_MAX_CHARS)) {
93
+ return { ok: false, reason: `review evidence must be 1..${AGENT_LEDGER_EVIDENCE_MAX_CHARS} characters` };
94
+ }
95
+ return {
96
+ ok: true,
97
+ body: { kind: "review", target: record.target, passed: record.passed, evidence: record.evidence }
98
+ };
99
+ }
100
+ default:
101
+ return { ok: false, reason: `unknown ledger entry kind ${String(record.kind)}` };
102
+ }
103
+ }
104
+ function parseAgentLedgerEntry(value) {
105
+ if (typeof value !== "object" || value === null || Array.isArray(value)) return null;
106
+ const record = value;
107
+ const sequence = record.sequence;
108
+ if (typeof sequence !== "number" || !Number.isSafeInteger(sequence) || sequence <= 0) return null;
109
+ if (!isAgentLedgerEntryId(record.id)) return null;
110
+ for (const key of ["at", "runId", "assignmentId", "agentId", "nodeId"]) {
111
+ if (typeof record[key] !== "string" || record[key].length === 0) return null;
112
+ }
113
+ const body = parseAgentLedgerBody(record.body);
114
+ if (!body.ok) return null;
115
+ const conflicts = record.conflictsWith;
116
+ if (conflicts !== void 0 && !(Array.isArray(conflicts) && conflicts.every(isAgentLedgerEntryId))) return null;
117
+ return {
118
+ id: record.id,
119
+ sequence,
120
+ at: record.at,
121
+ runId: record.runId,
122
+ assignmentId: record.assignmentId,
123
+ agentId: record.agentId,
124
+ nodeId: record.nodeId,
125
+ body: body.body,
126
+ ...conflicts === void 0 ? {} : { conflictsWith: [...conflicts] }
127
+ };
128
+ }
129
+ function sha256Hex(input) {
130
+ return createHash("sha256").update(input, "utf8").digest("hex");
131
+ }
132
+ var HEX_64 = /^[0-9a-f]{64}$/;
133
+ function endpointIdentityHash(url) {
134
+ if (url === void 0 || url.trim().length === 0) return sha256Hex("clio.endpoint:none");
135
+ const raw = url.trim();
136
+ let canonical;
137
+ try {
138
+ const parsed = new URL(raw);
139
+ const path = parsed.pathname.replace(/\/+$/u, "");
140
+ canonical = `${parsed.protocol}//${parsed.hostname}:${parsed.port}${path}`;
141
+ } catch {
142
+ canonical = raw.replace(/\/+$/u, "");
143
+ }
144
+ return sha256Hex(`clio.endpoint:${canonical}`);
145
+ }
146
+ function workerSpecDigest(spec) {
147
+ return sha256Hex(`clio.workerSpec:${canonicalJson(spec)}`);
148
+ }
149
+ function toolSignatureOf(names) {
150
+ return sha256Hex(`clio.tools:${[...names].sort().join(",")}`);
151
+ }
152
+ function canonicalJson(value) {
153
+ if (value === null) return "null";
154
+ if (typeof value === "number") return Number.isFinite(value) ? JSON.stringify(value) : "null";
155
+ if (typeof value === "string" || typeof value === "boolean") return JSON.stringify(value);
156
+ if (Array.isArray(value))
157
+ return `[${value.map((entry) => entry === void 0 ? "null" : canonicalJson(entry)).join(",")}]`;
158
+ if (typeof value === "object") {
159
+ const record = value;
160
+ const parts = [];
161
+ for (const key of Object.keys(record).sort()) {
162
+ const child = record[key];
163
+ if (child === void 0) continue;
164
+ parts.push(`${JSON.stringify(key)}:${canonicalJson(child)}`);
165
+ }
166
+ return `{${parts.join(",")}}`;
167
+ }
168
+ return "null";
169
+ }
170
+ function withinFrameBudget(line, maxBytes) {
171
+ return Buffer.byteLength(line, "utf8") <= maxBytes;
172
+ }
173
+ function parseJsonObject(line, maxBytes, lane) {
174
+ if (!withinFrameBudget(line, maxBytes)) {
175
+ return { ok: false, reason: `${lane} frame exceeds ${maxBytes} bytes` };
176
+ }
177
+ let value;
178
+ try {
179
+ value = JSON.parse(line);
180
+ } catch {
181
+ return { ok: false, reason: `${lane} frame is not JSON` };
182
+ }
183
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
184
+ return { ok: false, reason: `${lane} frame is not a JSON object` };
185
+ }
186
+ return { ok: true, value };
187
+ }
188
+ function parseBulkFrame(line) {
189
+ return parseJsonObject(line, WORKER_BULK_FRAME_MAX_BYTES, "bulk");
190
+ }
191
+ function isControlLine(line) {
192
+ return line.startsWith(CONTROL_FRAME_PREFIX);
193
+ }
194
+ function encodeControlFrame(frame) {
195
+ return `${CONTROL_FRAME_PREFIX}${JSON.stringify(frame)}
196
+ `;
197
+ }
198
+ function readFiniteNumber(record, key) {
199
+ const value = record[key];
200
+ return typeof value === "number" && Number.isFinite(value) ? value : null;
201
+ }
202
+ function readResourceValue(value, validate) {
203
+ if (typeof value !== "object" || value === null || Array.isArray(value)) return null;
204
+ const record = value;
205
+ if (record.known === false) return { known: false };
206
+ if (record.known !== true || !validate(record.value)) return null;
207
+ return { known: true, value: record.value };
208
+ }
209
+ function isFiniteNumber(value) {
210
+ return typeof value === "number" && Number.isFinite(value) && value >= 0;
211
+ }
212
+ function isBoundedStringArray(value, max) {
213
+ return Array.isArray(value) && value.length <= max && value.every((entry) => typeof entry === "string");
214
+ }
215
+ function parseResourceFacts(value) {
216
+ if (typeof value !== "object" || value === null || Array.isArray(value)) return null;
217
+ const record = value;
218
+ if (!isBoundedStringArray(record.labels, WORKER_RESOURCE_LABEL_MAX)) return null;
219
+ const numeric = ["cpuCount", "totalMemoryBytes", "freeMemoryBytes", "gpuCount", "vramBytes"];
220
+ const parsed = { labels: [...record.labels] };
221
+ for (const key of numeric) {
222
+ const fact = readResourceValue(record[key], isFiniteNumber);
223
+ if (fact === null) return null;
224
+ parsed[key] = fact;
225
+ }
226
+ const residentModels = readResourceValue(
227
+ record.residentModels,
228
+ (raw) => isBoundedStringArray(raw, WORKER_RESIDENT_MODEL_MAX)
229
+ );
230
+ if (residentModels === null) return null;
231
+ parsed.residentModels = residentModels;
232
+ return parsed;
233
+ }
234
+ function parseAttestation(value) {
235
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
236
+ return { ok: false, reason: "announce attestation is not an object" };
237
+ }
238
+ const record = value;
239
+ if (record.protocolVersion !== WORKER_PROTOCOL_VERSION) {
240
+ return { ok: false, reason: `announce protocol version ${String(record.protocolVersion)} is unsupported` };
241
+ }
242
+ const specVersion = readFiniteNumber(record, "specVersion");
243
+ if (specVersion === null) return { ok: false, reason: "announce specVersion must be a finite number" };
244
+ const pid = readFiniteNumber(record, "pid");
245
+ if (pid === null) return { ok: false, reason: "announce pid must be a finite number" };
246
+ const rawPgid = record.processGroupId;
247
+ if (rawPgid !== null && !(typeof rawPgid === "number" && Number.isFinite(rawPgid))) {
248
+ return { ok: false, reason: "announce processGroupId must be a finite number or null" };
249
+ }
250
+ for (const key of ["host", "runtimeId", "targetId", "wireModelId"]) {
251
+ if (typeof record[key] !== "string" || record[key].length === 0) {
252
+ return { ok: false, reason: `announce ${key} must be a non-empty string` };
253
+ }
254
+ }
255
+ for (const key of ["settingsFingerprint", "specDigest", "endpointIdentityHash", "toolSignature"]) {
256
+ if (typeof record[key] !== "string" || !HEX_64.test(record[key])) {
257
+ return { ok: false, reason: `announce ${key} must be a sha256 hex digest` };
258
+ }
259
+ }
260
+ const resources = parseResourceFacts(record.resources);
261
+ if (resources === null) return { ok: false, reason: "announce resources are missing or malformed" };
262
+ return {
263
+ ok: true,
264
+ value: {
265
+ protocolVersion: WORKER_PROTOCOL_VERSION,
266
+ specVersion,
267
+ pid,
268
+ processGroupId: typeof rawPgid === "number" ? rawPgid : null,
269
+ host: record.host,
270
+ settingsFingerprint: record.settingsFingerprint,
271
+ specDigest: record.specDigest,
272
+ runtimeId: record.runtimeId,
273
+ targetId: record.targetId,
274
+ endpointIdentityHash: record.endpointIdentityHash,
275
+ wireModelId: record.wireModelId,
276
+ toolSignature: record.toolSignature,
277
+ resources
278
+ }
279
+ };
280
+ }
281
+ function parseControlFrame(line) {
282
+ if (!isControlLine(line)) return { ok: false, reason: "control frame is missing its lane marker" };
283
+ const body = line.slice(CONTROL_FRAME_PREFIX.length);
284
+ const parsed = parseJsonObject(body, WORKER_CONTROL_FRAME_MAX_BYTES, "control");
285
+ if (!parsed.ok) return parsed;
286
+ const record = parsed.value;
287
+ switch (record.kind) {
288
+ case "announce": {
289
+ const attestation = parseAttestation(record.attestation);
290
+ if (!attestation.ok) return attestation;
291
+ return { ok: true, value: { kind: "announce", attestation: attestation.value } };
292
+ }
293
+ case "heartbeat":
294
+ return { ok: true, value: { kind: "heartbeat" } };
295
+ case "cancel_ack": {
296
+ const at = readFiniteNumber(record, "at");
297
+ if (at === null) return { ok: false, reason: "cancel_ack frame requires a finite at" };
298
+ return { ok: true, value: { kind: "cancel_ack", at } };
299
+ }
300
+ case "ledger_post": {
301
+ const body2 = parseAgentLedgerBody(record.body);
302
+ if (!body2.ok) return { ok: false, reason: `ledger_post frame rejected: ${body2.reason}` };
303
+ return { ok: true, value: { kind: "ledger_post", body: body2.body } };
304
+ }
305
+ default:
306
+ return { ok: false, reason: `unknown control frame kind ${String(record.kind)}` };
307
+ }
308
+ }
309
+ var RECEIPT_BEARING_BULK_TYPES = /* @__PURE__ */ new Set([
310
+ "message_end",
311
+ "clio_run_outcome",
312
+ "clio_permission_escalated",
313
+ "clio_permission_resolved",
314
+ "clio_steer_received",
315
+ "clio_tool_activity",
316
+ "clio_skill_activation",
317
+ "clio_safety_decision",
318
+ "clio_verification",
319
+ "clio_usage",
320
+ "tool_execution_end",
321
+ "spawn_error"
322
+ ]);
323
+ function isReceiptBearingFrame(value) {
324
+ if (typeof value !== "object" || value === null || Array.isArray(value)) return true;
325
+ const type = value.type;
326
+ if (typeof type !== "string") return true;
327
+ return RECEIPT_BEARING_BULK_TYPES.has(type);
328
+ }
329
+
330
+ export {
331
+ WORKER_PROTOCOL_VERSION,
332
+ WORKER_BULK_FRAME_MAX_BYTES,
333
+ WORKER_STDIN_FRAME_MAX_BYTES,
334
+ WORKER_STDIN_QUEUE_MAX_BYTES,
335
+ WORKER_EVENT_QUEUE_MAX_FRAMES,
336
+ knownResource,
337
+ UNKNOWN_RESOURCE,
338
+ WORKER_RESOURCE_LABEL_MAX,
339
+ parseAgentLedgerBody,
340
+ parseAgentLedgerEntry,
341
+ endpointIdentityHash,
342
+ workerSpecDigest,
343
+ toolSignatureOf,
344
+ canonicalJson,
345
+ withinFrameBudget,
346
+ parseBulkFrame,
347
+ isControlLine,
348
+ encodeControlFrame,
349
+ parseControlFrame,
350
+ isReceiptBearingFrame
351
+ };
352
+ //# sourceMappingURL=chunk-CMZWFGD2.js.map
@@ -0,0 +1,39 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ init_esm_shims
4
+ } from "./chunk-3R73A4XB.js";
5
+
6
+ // src/core/path-canonical.ts
7
+ init_esm_shims();
8
+ import { realpathSync } from "node:fs";
9
+ import path from "node:path";
10
+ function canonicalizeExistingPath(absPath) {
11
+ const resolved = path.resolve(absPath);
12
+ try {
13
+ return path.resolve(realpathSync(resolved));
14
+ } catch {
15
+ }
16
+ const tail = [];
17
+ let cursor = resolved;
18
+ while (true) {
19
+ const parent = path.dirname(cursor);
20
+ if (parent === cursor) {
21
+ try {
22
+ return path.resolve(realpathSync(cursor), ...tail);
23
+ } catch {
24
+ return resolved;
25
+ }
26
+ }
27
+ tail.unshift(path.basename(cursor));
28
+ cursor = parent;
29
+ try {
30
+ return path.resolve(realpathSync(cursor), ...tail);
31
+ } catch {
32
+ }
33
+ }
34
+ }
35
+
36
+ export {
37
+ canonicalizeExistingPath
38
+ };
39
+ //# sourceMappingURL=chunk-ECH6PKUQ.js.map
@@ -0,0 +1,143 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ source_default
4
+ } from "./chunk-5TSRNF4G.js";
5
+ import {
6
+ init_esm_shims
7
+ } from "./chunk-3R73A4XB.js";
8
+
9
+ // src/cli/argv.ts
10
+ init_esm_shims();
11
+ function printError(message, detail) {
12
+ const head = source_default.red("error:");
13
+ process.stderr.write(`${head} ${message}
14
+ `);
15
+ if (detail) process.stderr.write(` ${detail}
16
+ `);
17
+ }
18
+ function printOk(message) {
19
+ process.stdout.write(`${source_default.green("ok:")} ${message}
20
+ `);
21
+ }
22
+ function printHeader(message) {
23
+ process.stdout.write(`${source_default.cyan(message)}
24
+ `);
25
+ }
26
+ function columnWidths(rows) {
27
+ const widths = [];
28
+ for (const row of rows) {
29
+ for (let i = 0; i < row.length; i += 1) {
30
+ widths[i] = Math.max(widths[i] ?? 0, row[i]?.length ?? 0);
31
+ }
32
+ }
33
+ return widths;
34
+ }
35
+ function formatColumnRow(row, widths, gap = 2) {
36
+ return row.map((cell, index) => {
37
+ if (index === row.length - 1) return cell;
38
+ return cell.padEnd((widths[index] ?? cell.length) + gap);
39
+ }).join("").trimEnd();
40
+ }
41
+ function formatColumns(rows, gap = 2) {
42
+ if (rows.length === 0) return "";
43
+ const widths = columnWidths(rows);
44
+ return `${rows.map((row) => formatColumnRow(row, widths, gap)).join("\n")}
45
+ `;
46
+ }
47
+ function parseFlags(argv) {
48
+ const flags = /* @__PURE__ */ new Set();
49
+ const positional = [];
50
+ for (const arg of argv) {
51
+ if (arg.startsWith("--")) flags.add(arg.slice(2));
52
+ else if (arg.startsWith("-") && arg.length > 1) flags.add(arg.slice(1));
53
+ else positional.push(arg);
54
+ }
55
+ return { flags, positional };
56
+ }
57
+ var ROOT_FLAG_TOKENS = /* @__PURE__ */ new Set(["--help", "-h", "--all", "--version", "-v"]);
58
+ var GLOBAL_ONLY_FLAGS = /* @__PURE__ */ new Map([
59
+ ["--api-key", "--api-key <key>"],
60
+ ["--no-context-files", "--no-context-files"],
61
+ ["-nc", "-nc"]
62
+ ]);
63
+ function globalFlagPositionHint(arg, command) {
64
+ const usage = GLOBAL_ONLY_FLAGS.get(arg);
65
+ if (usage === void 0) return null;
66
+ return `${arg} is a global option and must come before the subcommand: clio-coder ${usage} ${command} ...`;
67
+ }
68
+ function extractGlobalFlags(argv, isSubcommand = () => false) {
69
+ const rest = [];
70
+ let apiKey;
71
+ let noContextFiles = false;
72
+ let noSkills = false;
73
+ const skillPaths = [];
74
+ for (let i = 0; i < argv.length; i++) {
75
+ const arg = argv[i];
76
+ if (arg === void 0) continue;
77
+ if (arg === "--") {
78
+ rest.push(...argv.slice(i + 1));
79
+ break;
80
+ }
81
+ if (!arg.startsWith("-")) {
82
+ rest.push(...argv.slice(i));
83
+ break;
84
+ }
85
+ if (ROOT_FLAG_TOKENS.has(arg)) {
86
+ rest.push(arg);
87
+ continue;
88
+ }
89
+ if (arg === "--no-context-files" || arg === "-nc") {
90
+ noContextFiles = true;
91
+ continue;
92
+ }
93
+ if (arg === "--no-skills") {
94
+ noSkills = true;
95
+ continue;
96
+ }
97
+ if (arg === "--api-key" || arg === "--skill") {
98
+ const value = argv[i + 1];
99
+ if (value === void 0 || value.startsWith("-") || isSubcommand(value)) {
100
+ return {
101
+ noContextFiles,
102
+ noSkills,
103
+ skillPaths,
104
+ rest,
105
+ error: `${arg} requires a value`,
106
+ ...apiKey === void 0 ? {} : { apiKey }
107
+ };
108
+ }
109
+ if (arg === "--api-key") apiKey = value;
110
+ else skillPaths.push(value);
111
+ i += 1;
112
+ continue;
113
+ }
114
+ return {
115
+ noContextFiles,
116
+ noSkills,
117
+ skillPaths,
118
+ rest,
119
+ error: `unknown global option: ${arg}`,
120
+ ...apiKey === void 0 ? {} : { apiKey }
121
+ };
122
+ }
123
+ return {
124
+ noContextFiles,
125
+ noSkills,
126
+ skillPaths,
127
+ rest,
128
+ ...apiKey === void 0 ? {} : { apiKey }
129
+ };
130
+ }
131
+
132
+ export {
133
+ printError,
134
+ printOk,
135
+ printHeader,
136
+ columnWidths,
137
+ formatColumnRow,
138
+ formatColumns,
139
+ parseFlags,
140
+ globalFlagPositionHint,
141
+ extractGlobalFlags
142
+ };
143
+ //# sourceMappingURL=chunk-ED4KHGC3.js.map