@iowarp/clio-coder 0.3.1 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (601) hide show
  1. package/CHANGELOG.md +233 -373
  2. package/CONTRIBUTING.md +23 -23
  3. package/README.md +284 -613
  4. package/dist/{acp-FPR54DGL.js → acp-P2AQILE2.js} +43 -53
  5. package/dist/{agents-OGPIHPJH.js → agents-72W3BI7I.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-2DJ2KNFG.js +2095 -0
  9. package/dist/{chunk-IS3ONKU3.js → chunk-2IR2NMPA.js} +6 -4
  10. package/dist/chunk-2SFS6XQE.js +122 -0
  11. package/dist/{chunk-PV4JUBVJ.js → chunk-2TLUCQVG.js} +40 -21
  12. package/dist/chunk-2VTFPG5O.js +48 -0
  13. package/dist/chunk-4BJ5BYCE.js +61 -0
  14. package/dist/{chunk-474KN5II.js → chunk-4BPJXDWC.js} +111 -181
  15. package/dist/chunk-4VP4KH3K.js +962 -0
  16. package/dist/chunk-4XUGQOHA.js +797 -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-4QKXUHSR.js → chunk-5UFT4SUX.js} +70 -20
  21. package/dist/{chunk-OLBBMFRD.js → chunk-5UUP6MWO.js} +24 -62
  22. package/dist/chunk-65DEGPJ6.js +52 -0
  23. package/dist/chunk-6EJMN2Y3.js +17 -0
  24. package/dist/chunk-6N5PTWMY.js +136 -0
  25. package/dist/chunk-6SGHMWE3.js +277 -0
  26. package/dist/chunk-6XLNIQDB.js +27 -0
  27. package/dist/chunk-7CR24IG7.js +242 -0
  28. package/dist/chunk-7MNJORFF.js +22 -0
  29. package/dist/{chunk-KY56HMHH.js → chunk-A3CYT5EX.js} +125 -31
  30. package/dist/chunk-AGYYIBLL.js +1069 -0
  31. package/dist/{chunk-GB6QRBXN.js → chunk-APJ265NV.js} +54 -1187
  32. package/dist/{chunk-673JJUWJ.js → chunk-BMEMKKIT.js} +2 -2
  33. package/dist/chunk-CBCAPZAA.js +229 -0
  34. package/dist/chunk-CMZWFGD2.js +352 -0
  35. package/dist/chunk-COU2UHX6.js +400 -0
  36. package/dist/chunk-DSELYM6W.js +1077 -0
  37. package/dist/chunk-DUYJ5IO6.js +644 -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-FCSXB6T2.js +338 -0
  42. package/dist/chunk-FJ3H4MN5.js +48 -0
  43. package/dist/{chunk-RPTR2H26.js → chunk-FNTMWMX5.js} +21 -15
  44. package/dist/chunk-FQ4SKYE4.js +29 -0
  45. package/dist/chunk-G4BMMOKF.js +182 -0
  46. package/dist/{chunk-ZPY3JZ5E.js → chunk-GGXXDWE4.js} +183 -1233
  47. package/dist/chunk-HC4CLZ2Y.js +68 -0
  48. package/dist/{chunk-LU4TK2PR.js → chunk-HFSBBKSQ.js} +5 -56
  49. package/dist/{chunk-PIUMUEMV.js → chunk-HKIYEGME.js} +10 -6
  50. package/dist/chunk-I4HZDVNP.js +73 -0
  51. package/dist/chunk-IKCO5N3L.js +162 -0
  52. package/dist/chunk-IR4CFBFN.js +56 -0
  53. package/dist/{chunk-R5KLMSBV.js → chunk-J5Q24KAG.js} +2 -2
  54. package/dist/chunk-J7CWMCQD.js +255 -0
  55. package/dist/{chunk-K5XEMXTI.js → chunk-JVCV3ICN.js} +1 -1
  56. package/dist/chunk-KZWTDYJF.js +217 -0
  57. package/dist/chunk-LBMZMYH2.js +285 -0
  58. package/dist/{chunk-G34LV2PF.js → chunk-LM5TQCJZ.js} +84 -170
  59. package/dist/chunk-LW6DSM3M.js +5135 -0
  60. package/dist/chunk-LWLEKMDQ.js +3482 -0
  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-FST4FYJB.js → chunk-MFFY33HR.js} +99 -140
  64. package/dist/{chunk-BSU2YIWB.js → chunk-MVVUPGPW.js} +131 -136
  65. package/dist/chunk-OAO4GE4M.js +619 -0
  66. package/dist/{chunk-Q3RUPKEJ.js → chunk-OC7FIQPC.js} +58 -189
  67. package/dist/chunk-OKGUZO2U.js +34 -0
  68. package/dist/{chunk-GAEBEQVI.js → chunk-OOJYHWRB.js} +32 -346
  69. package/dist/{chunk-Q5WJOSJ7.js → chunk-OQ33BKR3.js} +2 -1
  70. package/dist/chunk-OQE5J4C6.js +73 -0
  71. package/dist/{chunk-KKNLWXI6.js → chunk-ORBHGJC5.js} +8 -8
  72. package/dist/{chunk-MAR7Y6HW.js → chunk-PAJK6MAQ.js} +23 -16
  73. package/dist/{chunk-M5T5VO65.js → chunk-PIWWS5BL.js} +837 -635
  74. package/dist/chunk-POHLU5DW.js +1186 -0
  75. package/dist/chunk-QKMUKYO7.js +4961 -0
  76. package/dist/chunk-SRDMMSEP.js +16405 -0
  77. package/dist/chunk-SST6Z5JA.js +80 -0
  78. package/dist/chunk-STBPMHSX.js +2456 -0
  79. package/dist/chunk-T6YILFSB.js +80 -0
  80. package/dist/chunk-TZK7PACC.js +174 -0
  81. package/dist/chunk-TZTZS7QK.js +227 -0
  82. package/dist/{chunk-ASND7OZK.js → chunk-UFIIWP2H.js} +13 -13
  83. package/dist/chunk-UOV2BYIW.js +107 -0
  84. package/dist/{chunk-PFEFKVGL.js → chunk-V6RTAOC2.js} +13 -11
  85. package/dist/chunk-VAKQQHWR.js +434 -0
  86. package/dist/chunk-VG7TBQIY.js +128 -0
  87. package/dist/chunk-VJWL6YS5.js +244 -0
  88. package/dist/{chunk-EYOKLTMF.js → chunk-VPAYEGVX.js} +17 -3
  89. package/dist/chunk-WEH5XRJQ.js +32 -0
  90. package/dist/chunk-X4RCMKVQ.js +641 -0
  91. package/dist/{chunk-TEKV33Q5.js → chunk-X6IAEBZR.js} +65 -33
  92. package/dist/chunk-XBXAASKX.js +18 -0
  93. package/dist/chunk-XN3L4EYL.js +46 -0
  94. package/dist/{chunk-RDLVBZEO.js → chunk-YCWGATWI.js} +6 -4
  95. package/dist/chunk-YHZX5GEU.js +193 -0
  96. package/dist/chunk-YXLYO42X.js +91 -0
  97. package/dist/{chunk-NMOX6HFD.js → chunk-ZDOOVTXZ.js} +29 -77
  98. package/dist/chunk-ZI647VB5.js +37 -0
  99. package/dist/{chunk-C4PTHK7P.js → chunk-ZWLZP4ZT.js} +5 -5
  100. package/dist/chunk-ZWMF7253.js +1882 -0
  101. package/dist/cli/index.js +62 -54
  102. package/dist/clio-JOU4FXVA.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-XCDVKR23.js} +92 -55
  108. package/dist/configure-4GAP54ZW.js +42 -0
  109. package/dist/{context-5RADCKTR.js → context-4UOGGLQ5.js} +71 -35
  110. package/dist/context-5VKGUVJJ.js +866 -0
  111. package/dist/{context-3KWFLHJG.js → context-77FM5DV5.js} +15 -13
  112. package/dist/{context-clear-7TSNPAAI.js → context-clear-XXJRLCJJ.js} +54 -28
  113. package/dist/{context-index-W4RLWOQH.js → context-index-BZ4UYMTC.js} +30 -24
  114. package/dist/dispatch-runner-QPRDDBDX.js +1997 -0
  115. package/dist/{docs-5AWSPS37.js → docs-2C2LTVT2.js} +23 -10
  116. package/dist/{doctor-UC5NAJYQ.js → doctor-HR46URBJ.js} +27 -17
  117. package/dist/{eval-U6TJHRLX.js → eval-XSSNATB4.js} +29 -16
  118. package/dist/{evidence-YEGUW4L3.js → evidence-6HG2PY2B.js} +46 -26
  119. package/dist/{evolve-TXARCTPG.js → evolve-K7YU3NCY.js} +45 -25
  120. package/dist/{extensions-OZFJ3A3G.js → extensions-QVDOHDGJ.js} +16 -7
  121. package/dist/{fleet-6G3DHNYE.js → fleet-VY3HHKN6.js} +163 -54
  122. package/dist/{fleet-preflight-DSNT37JK.js → fleet-preflight-DDN536IT.js} +7 -4
  123. package/dist/{init-KZ5QTF6M.js → init-JYGXI3FK.js} +69 -32
  124. package/dist/{memory-73ESV5YC.js → memory-WFZMGYHX.js} +48 -27
  125. package/dist/{models-A4PVNWJK.js → models-I5QWSEOM.js} +39 -25
  126. package/dist/monitor-GE4ID3IA.js +661 -0
  127. package/dist/{chunk-FCIH3BIZ.js → orchestrator-EM5MC3HM.js} +15979 -12407
  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-ZU3QMZPZ.js} +101 -61
  132. package/dist/{share-YIFFV4NQ.js → share-S5BZQC5I.js} +15 -8
  133. package/dist/{skills-2V6RA3OQ.js → skills-X5VXCRNQ.js} +34 -14
  134. package/dist/{skills-eval-S2TVJO4F.js → skills-eval-WKIHWTHR.js} +70 -34
  135. package/dist/steer-GGWFUJUD.js +77 -0
  136. package/dist/{targets-TYXLPB23.js → targets-SNCPI2NR.js} +43 -27
  137. package/dist/terminal-lease-BNAHVHBS.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-JQHHPQ4K.js} +45 -25
  142. package/dist/{usage-ZAFSXKKG.js → usage-OR4O5SMZ.js} +62 -31
  143. package/dist/verify-375KUB3Y.js +716 -0
  144. package/dist/web-fetch-2YHJ3KTG.js +638 -0
  145. package/dist/{wiki-generate-NUQCVOQ3.js → wiki-generate-UEXP2ARI.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 +387 -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 +45 -9
  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 +715 -278
  444. package/src/interactive/chat-renderer.ts +306 -85
  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 +253 -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 +42 -22
  456. package/src/interactive/footer-panel.ts +8 -3
  457. package/src/interactive/format-time.ts +14 -2
  458. package/src/interactive/interactive-application.ts +203 -17
  459. package/src/interactive/interactive-event-projection.ts +18 -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 +184 -117
  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/ask-user.ts +146 -24
  474. package/src/interactive/overlays/decisions.ts +300 -0
  475. package/src/interactive/overlays/help-reference.ts +15 -10
  476. package/src/interactive/overlays/model-selector.ts +34 -16
  477. package/src/interactive/overlays/session-selector.ts +18 -0
  478. package/src/interactive/overlays/settings.ts +105 -17
  479. package/src/interactive/overlays/skills-hub.ts +4 -4
  480. package/src/interactive/overlays/tree-selector.ts +41 -6
  481. package/src/interactive/render-trace.ts +499 -90
  482. package/src/interactive/renderers/compaction-summary.ts +2 -2
  483. package/src/interactive/renderers/diff.ts +115 -104
  484. package/src/interactive/renderers/mermaid.ts +53 -0
  485. package/src/interactive/renderers/tool-execution.ts +516 -168
  486. package/src/interactive/renderers/worker-entry.ts +20 -4
  487. package/src/interactive/session-switch-settlement.ts +10 -0
  488. package/src/interactive/slash-autocomplete.ts +6 -114
  489. package/src/interactive/slash-commands.ts +135 -47
  490. package/src/interactive/slash-spec.ts +9 -38
  491. package/src/interactive/status/controller.ts +5 -1
  492. package/src/interactive/status/index.ts +12 -1
  493. package/src/interactive/status/reasoning.ts +87 -0
  494. package/src/interactive/status/summary.ts +13 -2
  495. package/src/interactive/stdout-backpressure.ts +99 -0
  496. package/src/interactive/stream-pacer.ts +530 -0
  497. package/src/interactive/stream-pacing-policy.ts +66 -0
  498. package/src/interactive/tasks-overlay.ts +368 -14
  499. package/src/interactive/terminal-lease.ts +485 -0
  500. package/src/interactive/theme/tokens.ts +1 -1
  501. package/src/interactive/transcript-detail.ts +120 -0
  502. package/src/interactive/turn-context.ts +4 -3
  503. package/src/interactive/turn-persistence.ts +30 -13
  504. package/src/interactive/turn-queues.ts +12 -0
  505. package/src/interactive/turn-recovery.ts +25 -8
  506. package/src/interactive/turn-runtime.ts +79 -12
  507. package/src/interactive/turn-state.ts +10 -0
  508. package/src/interactive/view/artifacts.ts +114 -4
  509. package/src/interactive/view/view-overlay.ts +3 -0
  510. package/src/interactive/welcome-dashboard.ts +17 -16
  511. package/src/interactive/worker-receipts.ts +52 -3
  512. package/src/interactive/worker-stream.ts +5 -1
  513. package/src/tools/agent-tools.ts +23 -3
  514. package/src/tools/artifact.ts +2 -2
  515. package/src/tools/ask-user.ts +23 -13
  516. package/src/tools/bash.ts +30 -2
  517. package/src/tools/bootstrap.ts +34 -431
  518. package/src/tools/builtin-tool-catalog.ts +271 -0
  519. package/src/tools/codewiki/code-nav-surface.ts +29 -0
  520. package/src/tools/codewiki/code-nav.ts +8 -22
  521. package/src/tools/codewiki/shared.ts +41 -38
  522. package/src/tools/context/docs-engine.ts +14 -3
  523. package/src/tools/context/index.ts +107 -28
  524. package/src/tools/context/surface.ts +19 -0
  525. package/src/tools/core-bootstrap.ts +168 -0
  526. package/src/tools/credential-present.ts +5 -5
  527. package/src/tools/dispatch-admission.ts +533 -0
  528. package/src/tools/dispatch-background.ts +54 -0
  529. package/src/tools/dispatch-event-text.ts +6 -0
  530. package/src/tools/dispatch-plan.ts +9 -4
  531. package/src/tools/dispatch-run-events.ts +238 -0
  532. package/src/tools/dispatch-runner.ts +2370 -0
  533. package/src/tools/dispatch-scout-admission.ts +295 -0
  534. package/src/tools/dispatch-types.ts +77 -0
  535. package/src/tools/dispatch.ts +67 -3161
  536. package/src/tools/find.ts +4 -2
  537. package/src/tools/grep.ts +2 -2
  538. package/src/tools/lazy-tool.ts +60 -0
  539. package/src/tools/ledger.ts +3 -3
  540. package/src/tools/monitor-surface.ts +36 -0
  541. package/src/tools/monitor.ts +2 -32
  542. package/src/tools/observers.ts +2 -2
  543. package/src/tools/presentation.ts +107 -0
  544. package/src/tools/registry.ts +45 -27
  545. package/src/tools/safe-exec.ts +2 -2
  546. package/src/tools/steer-surface.ts +17 -0
  547. package/src/tools/steer.ts +2 -13
  548. package/src/tools/tasks.ts +108 -11
  549. package/src/tools/truncate.ts +25 -184
  550. package/src/tools/verify/frontend.ts +3 -1
  551. package/src/tools/verify/index.ts +3 -38
  552. package/src/tools/verify/surface.ts +46 -0
  553. package/src/tools/web-fetch-surface.ts +23 -0
  554. package/src/tools/web-fetch.ts +2 -20
  555. package/src/tools/write.ts +7 -2
  556. package/src/worker/entry.ts +39 -2
  557. package/src/worker/spec-contract.ts +26 -5
  558. package/dist/chunk-7SS2CTV2.js +0 -61361
  559. package/dist/chunk-DKGKUHFA.js +0 -924
  560. package/dist/chunk-GEP36Y4X.js +0 -12796
  561. package/dist/chunk-XYWBQRDM.js +0 -137
  562. package/dist/clio-BZVGEUFJ.js +0 -58
  563. package/dist/configure-S7S6F6CL.js +0 -32
  564. package/docs/html/agents_blueprint.html +0 -936
  565. package/docs/html/alcf_blueprint.html +0 -324
  566. package/docs/html/architecture_blueprint.html +0 -850
  567. package/docs/html/commands_blueprint.html +0 -939
  568. package/docs/html/config_knobs_audit_blueprint.html +0 -178
  569. package/docs/html/configuration_blueprint.html +0 -1080
  570. package/docs/html/context_blueprint.html +0 -603
  571. package/docs/html/documentation_blueprint.html +0 -832
  572. package/docs/html/environment_blueprint.html +0 -404
  573. package/docs/html/eval_blueprint.html +0 -743
  574. package/docs/html/evals_internal_blueprint.html +0 -190
  575. package/docs/html/evolution_blueprint.html +0 -674
  576. package/docs/html/extensions_blueprint.html +0 -2065
  577. package/docs/html/fleet_dispatch_blueprint.html +0 -286
  578. package/docs/html/index.html +0 -919
  579. package/docs/html/lifecycle_blueprint.html +0 -723
  580. package/docs/html/memory_blueprint.html +0 -699
  581. package/docs/html/middleware_blueprint.html +0 -664
  582. package/docs/html/models_blueprint.html +0 -2366
  583. package/docs/html/observability_blueprint.html +0 -683
  584. package/docs/html/provider_adapter_blueprint.html +0 -245
  585. package/docs/html/safety_blueprint.html +0 -1386
  586. package/docs/html/shared.css +0 -571
  587. package/docs/html/shared.js +0 -143
  588. package/docs/html/skills_blueprint.html +0 -671
  589. package/docs/html/soak_blueprint.html +0 -182
  590. package/docs/html/tool_usage_blueprint.html +0 -350
  591. package/docs/html/tools_blueprint.html +0 -2249
  592. package/docs/html/trace_blueprint.html +0 -235
  593. package/docs/html/tui_design_blueprint.html +0 -374
  594. package/docs/html/validation_blueprint.html +0 -961
  595. package/docs/html/worker_dispatch_blueprint.html +0 -231
  596. package/src/core/release.ts +0 -2
  597. package/src/domains/providers/runtimes/common/lmstudio-logger.ts +0 -32
  598. package/src/domains/providers/runtimes/local-native/lmstudio-native.ts +0 -491
  599. package/src/engine/apis/lmstudio-native.ts +0 -1438
  600. package/src/engine/apis/thinking-replay.ts +0 -11
  601. package/src/tools/string-enum.ts +0 -15
@@ -0,0 +1,285 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ safeResourceWrite
4
+ } from "./chunk-WEPFGWHJ.js";
5
+ import {
6
+ init_esm_shims
7
+ } from "./chunk-3R73A4XB.js";
8
+
9
+ // src/domains/context/codewiki/schema.ts
10
+ init_esm_shims();
11
+ var CODEWIKI_VERSION = 5;
12
+
13
+ // src/domains/context/codewiki/artifact.ts
14
+ init_esm_shims();
15
+ import { createHash } from "node:crypto";
16
+ import { existsSync, readFileSync } from "node:fs";
17
+ import { readFile } from "node:fs/promises";
18
+ import { join } from "node:path";
19
+ function uniqueSorted(values) {
20
+ return [...new Set([...values].filter((item) => item.length > 0))].sort((a, b) => a.localeCompare(b));
21
+ }
22
+ function stableFileId(path) {
23
+ return `f_${createHash("sha256").update(path).digest("hex").slice(0, 16)}`;
24
+ }
25
+ function languageForLegacyPath(path) {
26
+ if (path.endsWith(".d.ts")) return null;
27
+ const extension = path.slice(path.lastIndexOf("."));
28
+ const source = (/* @__PURE__ */ new Map([
29
+ [".ts", "typescript"],
30
+ [".tsx", "typescript"],
31
+ [".mts", "typescript"],
32
+ [".cts", "typescript"],
33
+ [".js", "javascript"],
34
+ [".jsx", "javascript"],
35
+ [".mjs", "javascript"],
36
+ [".cjs", "javascript"],
37
+ [".py", "python"],
38
+ [".pyw", "python"],
39
+ [".rs", "rust"],
40
+ [".go", "go"],
41
+ [".c", "c"],
42
+ [".h", "c"],
43
+ [".cc", "c++"],
44
+ [".cpp", "c++"],
45
+ [".cxx", "c++"],
46
+ [".hpp", "c++"],
47
+ [".hh", "c++"],
48
+ [".hxx", "c++"],
49
+ [".cu", "c++"],
50
+ [".cuh", "c++"],
51
+ [".java", "java"],
52
+ [".rb", "ruby"],
53
+ [".cs", "c#"]
54
+ ])).get(extension);
55
+ if (source) return source;
56
+ const name = path.split("/").pop() ?? path;
57
+ return (/* @__PURE__ */ new Set([
58
+ "package.json",
59
+ "pyproject.toml",
60
+ "setup.py",
61
+ "Cargo.toml",
62
+ "go.mod",
63
+ "pom.xml",
64
+ "CMakeLists.txt",
65
+ "compile_commands.json",
66
+ "Gemfile"
67
+ ])).has(name) || name.endsWith(".csproj") || name.toLowerCase().endsWith(".cmake") ? "config" : null;
68
+ }
69
+ function compareFiles(a, b) {
70
+ return a.path.localeCompare(b.path);
71
+ }
72
+ function compareSymbols(a, b) {
73
+ return a.fileId.localeCompare(b.fileId) || a.line - b.line || a.name.localeCompare(b.name) || a.kind.localeCompare(b.kind);
74
+ }
75
+ function compareEdges(a, b) {
76
+ const file = a.fileId.localeCompare(b.fileId);
77
+ if (file !== 0) return file;
78
+ const left = "toFileId" in a ? a.toFileId : `~${a.externalModule}`;
79
+ const right = "toFileId" in b ? b.toFileId : `~${b.externalModule}`;
80
+ return left.localeCompare(right);
81
+ }
82
+ var SIG_KINDS = /* @__PURE__ */ new Set(["func", "class", "method", "type"]);
83
+ function normalizeSymbol(symbol) {
84
+ const sig = SIG_KINDS.has(symbol.kind) ? symbol.sig?.trim().slice(0, 240) : void 0;
85
+ return { name: symbol.name, kind: symbol.kind, fileId: symbol.fileId, line: symbol.line, ...sig ? { sig } : {} };
86
+ }
87
+ function normalizeCodewiki(codewiki) {
88
+ return {
89
+ version: CODEWIKI_VERSION,
90
+ language: codewiki.language,
91
+ files: codewiki.files.map((file) => ({
92
+ id: file.id,
93
+ path: file.path,
94
+ lang: file.lang,
95
+ loc: file.loc,
96
+ role: file.role,
97
+ hash: file.hash,
98
+ imports: uniqueSorted(file.imports),
99
+ ...file.summary ? { summary: file.summary } : {}
100
+ })).sort(compareFiles),
101
+ symbols: codewiki.symbols.map(normalizeSymbol).sort(compareSymbols),
102
+ edges: [...codewiki.edges].sort(compareEdges)
103
+ };
104
+ }
105
+ function codewikiPath(cwd) {
106
+ return join(cwd, ".clio-coder", "codewiki.json");
107
+ }
108
+ function serializeCodewiki(codewiki) {
109
+ return `${JSON.stringify(normalizeCodewiki(codewiki))}
110
+ `;
111
+ }
112
+ function writeCodewiki(cwd, codewiki) {
113
+ const serialized = serializeCodewiki(codewiki);
114
+ safeResourceWrite(codewikiPath(cwd), serialized, { encoding: "utf8" });
115
+ return serialized;
116
+ }
117
+ function upgradeV3(value) {
118
+ return normalizeCodewiki({
119
+ version: CODEWIKI_VERSION,
120
+ language: value.language,
121
+ files: value.files.map((file) => ({ ...file, hash: "", imports: [] })),
122
+ symbols: value.symbols,
123
+ edges: value.edges
124
+ });
125
+ }
126
+ function upgradeV4(value) {
127
+ return normalizeCodewiki({
128
+ version: CODEWIKI_VERSION,
129
+ language: value.language,
130
+ files: value.files.map((file) => ({ ...file, hash: "" })),
131
+ symbols: value.symbols,
132
+ edges: value.edges
133
+ });
134
+ }
135
+ function upgradeV2(value) {
136
+ const files = value.entries.map((entry) => ({
137
+ id: stableFileId(entry.path),
138
+ path: entry.path,
139
+ lang: languageForLegacyPath(entry.path) ?? (value.language === "unknown" || value.language === "polyglot" || value.language === "dotfiles" ? "config" : value.language),
140
+ loc: 0,
141
+ role: entry.kind === "entry-point" ? "entry" : entry.kind === "test" ? "test" : "module"
142
+ }));
143
+ const ids = new Map(files.map((file) => [file.path, file.id]));
144
+ const symbols = value.entries.flatMap(
145
+ (entry) => entry.exports.map((name) => ({ name, kind: "const", fileId: ids.get(entry.path) ?? "", line: 1 }))
146
+ ).filter((symbol) => symbol.fileId);
147
+ const edges = value.entries.flatMap(
148
+ (entry) => entry.imports.map((item) => {
149
+ const fileId = ids.get(entry.path) ?? "";
150
+ const toFileId = ids.get(item);
151
+ return toFileId ? { fileId, toFileId } : { fileId, externalModule: item };
152
+ })
153
+ ).filter((edge) => edge.fileId);
154
+ return upgradeV3({ version: 3, language: value.language, files, symbols, edges });
155
+ }
156
+ var LANGUAGES = /* @__PURE__ */ new Set([
157
+ "typescript",
158
+ "javascript",
159
+ "python",
160
+ "rust",
161
+ "go",
162
+ "c",
163
+ "c++",
164
+ "java",
165
+ "ruby",
166
+ "c#",
167
+ "config"
168
+ ]);
169
+ var ROLES = /* @__PURE__ */ new Set(["entry", "test", "module", "config"]);
170
+ var KINDS = /* @__PURE__ */ new Set(["func", "class", "method", "type", "const", "var", "trait", "iface"]);
171
+ function object(value) {
172
+ return typeof value === "object" && value !== null && !Array.isArray(value) ? value : null;
173
+ }
174
+ function validFile(value, hash) {
175
+ const item = object(value);
176
+ if (!item) return false;
177
+ return typeof item.id === "string" && typeof item.path === "string" && typeof item.lang === "string" && LANGUAGES.has(item.lang) && Number.isInteger(item.loc) && item.loc >= 0 && typeof item.role === "string" && ROLES.has(item.role) && (!hash || typeof item.hash === "string" && Array.isArray(item.imports) && item.imports.every((v) => typeof v === "string")) && (!("summary" in item) || typeof item.summary === "string");
178
+ }
179
+ function validSymbol(value) {
180
+ const item = object(value);
181
+ if (!item) return false;
182
+ return typeof item.name === "string" && typeof item.kind === "string" && KINDS.has(item.kind) && typeof item.fileId === "string" && Number.isInteger(item.line) && item.line >= 1 && (!("sig" in item) || typeof item.sig === "string");
183
+ }
184
+ function validEdge(value) {
185
+ const item = object(value);
186
+ if (!item || typeof item.fileId !== "string") return false;
187
+ return typeof item.toFileId === "string" !== (typeof item.externalModule === "string");
188
+ }
189
+ function validEntry(value) {
190
+ const item = object(value);
191
+ if (!item || typeof item.path !== "string") return false;
192
+ return Array.isArray(item.exports) && item.exports.every((v) => typeof v === "string") && Array.isArray(item.imports) && item.imports.every((v) => typeof v === "string") && (item.kind === "entry-point" || item.kind === "test" || item.kind === "module") && (!("summary" in item) || typeof item.summary === "string");
193
+ }
194
+ function validNative(value) {
195
+ const ids = /* @__PURE__ */ new Set();
196
+ const paths = /* @__PURE__ */ new Set();
197
+ const loc = /* @__PURE__ */ new Map();
198
+ for (const file of value.files) {
199
+ const segments = file.path.split("/");
200
+ if (ids.has(file.id) || paths.has(file.path) || file.path.length === 0 || file.path.includes("\0") || file.path.includes("\\") || file.path.startsWith("/") || /^[A-Za-z]:\//.test(file.path) || segments.some((part) => part.length === 0 || part === "." || part === "..") || !/^[0-9a-f]{16}$/.test(file.hash))
201
+ return false;
202
+ ids.add(file.id);
203
+ paths.add(file.path);
204
+ loc.set(file.id, file.loc);
205
+ }
206
+ for (const symbol of value.symbols) {
207
+ const lines = loc.get(symbol.fileId);
208
+ if (lines === void 0 || symbol.line > lines) return false;
209
+ }
210
+ return value.edges.every((edge) => ids.has(edge.fileId) && (!("toFileId" in edge) || ids.has(edge.toFileId)));
211
+ }
212
+ function upgrade(value) {
213
+ const item = object(value);
214
+ if (!item || typeof item.language !== "string") return null;
215
+ if (item.version === 5 && Array.isArray(item.files) && item.files.every((v) => validFile(v, true)) && Array.isArray(item.symbols) && item.symbols.every(validSymbol) && Array.isArray(item.edges) && item.edges.every(validEdge) && validNative(item))
216
+ return normalizeCodewiki(item);
217
+ if (item.version === 4 && Array.isArray(item.files) && item.files.every((v) => validFile(v, true)) && Array.isArray(item.symbols) && item.symbols.every(validSymbol) && Array.isArray(item.edges) && item.edges.every(validEdge))
218
+ return upgradeV4(item);
219
+ if (item.version === 3 && Array.isArray(item.files) && item.files.every((v) => validFile(v, false)) && Array.isArray(item.symbols) && item.symbols.every(validSymbol) && Array.isArray(item.edges) && item.edges.every(validEdge))
220
+ return upgradeV3(item);
221
+ if (item.version === 2 && typeof item.generatedAt === "string" && Array.isArray(item.entries) && item.entries.every(validEntry))
222
+ return upgradeV2(item);
223
+ return null;
224
+ }
225
+ function parseCodewikiRaw(raw) {
226
+ try {
227
+ return upgrade(JSON.parse(raw));
228
+ } catch {
229
+ return null;
230
+ }
231
+ }
232
+ function readCodewiki(cwd) {
233
+ const path = codewikiPath(cwd);
234
+ if (!existsSync(path)) return null;
235
+ try {
236
+ return parseCodewikiRaw(readFileSync(path, "utf8"));
237
+ } catch {
238
+ return null;
239
+ }
240
+ }
241
+ async function readCodewikiAsync(cwd) {
242
+ try {
243
+ return parseCodewikiRaw(await readFile(codewikiPath(cwd), "utf8"));
244
+ } catch {
245
+ return null;
246
+ }
247
+ }
248
+ function codewikiNeedsBackfill(codewiki) {
249
+ return codewiki.files.some((file) => file.lang !== "config" && file.hash.length === 0);
250
+ }
251
+ function structuralCodewikiHash(codewiki) {
252
+ return createHash("sha256").update(JSON.stringify(normalizeCodewiki(codewiki))).digest("hex");
253
+ }
254
+ function codewikiEntries(codewiki) {
255
+ const files = new Map(codewiki.files.map((file) => [file.id, file]));
256
+ const exports = /* @__PURE__ */ new Map();
257
+ const imports = /* @__PURE__ */ new Map();
258
+ for (const symbol of codewiki.symbols)
259
+ exports.set(symbol.fileId, [...exports.get(symbol.fileId) ?? [], symbol.name]);
260
+ for (const edge of codewiki.edges) {
261
+ const value = "toFileId" in edge ? files.get(edge.toFileId)?.path : edge.externalModule;
262
+ if (value) imports.set(edge.fileId, [...imports.get(edge.fileId) ?? [], value]);
263
+ }
264
+ return codewiki.files.filter((file) => file.lang !== "config").map((file) => ({
265
+ path: file.path,
266
+ exports: uniqueSorted(exports.get(file.id) ?? []),
267
+ imports: uniqueSorted(imports.get(file.id) ?? []),
268
+ kind: file.role === "entry" ? "entry-point" : file.role === "test" ? "test" : "module",
269
+ ...file.summary ? { summary: file.summary } : {}
270
+ })).sort((a, b) => a.path.localeCompare(b.path));
271
+ }
272
+
273
+ export {
274
+ CODEWIKI_VERSION,
275
+ codewikiPath,
276
+ serializeCodewiki,
277
+ writeCodewiki,
278
+ parseCodewikiRaw,
279
+ readCodewiki,
280
+ readCodewikiAsync,
281
+ codewikiNeedsBackfill,
282
+ structuralCodewikiHash,
283
+ codewikiEntries
284
+ };
285
+ //# sourceMappingURL=chunk-LBMZMYH2.js.map
@@ -1,101 +1,29 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
+ loadFragments,
3
4
  loadOperatorProfile,
4
5
  loadProjectRules,
5
6
  renderOperatorProfile,
6
7
  selectActiveRules
7
- } from "./chunk-M5T5VO65.js";
8
+ } from "./chunk-PIWWS5BL.js";
8
9
  import {
9
10
  compile,
10
11
  compileWorker,
11
12
  sha256
12
- } from "./chunk-7SS2CTV2.js";
13
+ } from "./chunk-SRDMMSEP.js";
13
14
  import {
14
15
  isUserVisibleAgent
15
- } from "./chunk-OLBBMFRD.js";
16
- import {
17
- classifyProjectPreload
18
- } from "./chunk-K5XEMXTI.js";
16
+ } from "./chunk-5UUP6MWO.js";
19
17
  import {
20
18
  BusChannels
21
- } from "./chunk-Q5WJOSJ7.js";
22
- import {
23
- require_dist
24
- } from "./chunk-GB6QRBXN.js";
19
+ } from "./chunk-OQ33BKR3.js";
25
20
  import {
26
- resolvePackageRoot
27
- } from "./chunk-IWHMRKLL.js";
21
+ classifyProjectPreload
22
+ } from "./chunk-JVCV3ICN.js";
28
23
  import {
29
- __toESM,
30
24
  init_esm_shims
31
25
  } from "./chunk-3R73A4XB.js";
32
26
 
33
- // src/domains/prompts/index.ts
34
- init_esm_shims();
35
-
36
- // src/domains/prompts/extension.ts
37
- init_esm_shims();
38
- import { isAbsolute, relative } from "node:path";
39
-
40
- // src/core/clio-repo.ts
41
- init_esm_shims();
42
- import { existsSync, readFileSync, statSync } from "node:fs";
43
- import path from "node:path";
44
- var CLIO_PACKAGE_NAME = "@iowarp/clio-coder";
45
- var SOURCE_MARKERS = [
46
- "src/entry/orchestrator.ts",
47
- "src/worker/entry.ts",
48
- "src/domains/prompts/fragments/identity/clio.md"
49
- ];
50
- function isFile(filePath) {
51
- try {
52
- return statSync(filePath).isFile();
53
- } catch {
54
- return false;
55
- }
56
- }
57
- function readPackageJson(root) {
58
- try {
59
- const raw = readFileSync(path.join(root, "package.json"), "utf8");
60
- const parsed = JSON.parse(raw);
61
- return parsed && typeof parsed === "object" ? parsed : null;
62
- } catch {
63
- return null;
64
- }
65
- }
66
- function repositoryMatches(value) {
67
- if (typeof value === "string") return value.includes("iowarp/clio-coder");
68
- if (!value || typeof value !== "object") return false;
69
- const url = value.url;
70
- return typeof url === "string" && url.includes("iowarp/clio-coder");
71
- }
72
- function hasGitMarker(root) {
73
- return existsSync(path.join(root, ".git"));
74
- }
75
- function hasSourceMarkers(root) {
76
- return SOURCE_MARKERS.every((marker) => isFile(path.join(root, marker)));
77
- }
78
- function isClioCoderRepoRoot(root) {
79
- const pkg = readPackageJson(root);
80
- if (pkg?.name !== CLIO_PACKAGE_NAME) return false;
81
- if (!repositoryMatches(pkg.repository)) return false;
82
- if (!hasGitMarker(root)) return false;
83
- return hasSourceMarkers(root);
84
- }
85
- function detectClioCoderRepo(cwd = process.cwd()) {
86
- let current = path.resolve(cwd);
87
- for (; ; ) {
88
- if (isClioCoderRepoRoot(current)) {
89
- return { isClioCoderRepo: true, repoRoot: current };
90
- }
91
- if (hasGitMarker(current)) break;
92
- const parent = path.dirname(current);
93
- if (parent === current) break;
94
- current = parent;
95
- }
96
- return { isClioCoderRepo: false, repoRoot: null };
97
- }
98
-
99
27
  // src/domains/agents/catalog.ts
100
28
  init_esm_shims();
101
29
  var DEFAULT_DISPATCH_AGENT_ID = "coder";
@@ -186,101 +114,70 @@ function formatSpecLine(spec, suffix) {
186
114
  return `- ${spec.name} [${spec.id}] (${spec.audience}, ${spec.category}, ${spec.capabilityClass}, ${spec.latencyClass}, ${spec.source}${tags}${skills}${budget})${suffix}`;
187
115
  }
188
116
 
189
- // src/domains/prompts/fragment-loader.ts
117
+ // src/domains/prompts/index.ts
190
118
  init_esm_shims();
191
- var import_yaml = __toESM(require_dist(), 1);
192
- import { readdirSync, readFileSync as readFileSync2 } from "node:fs";
193
- import path2 from "node:path";
194
- var frontmatterRegex = /^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/;
195
- var fragmentIdRegex = /^[a-z0-9-]+(?:\.[a-z0-9-]+)+$/;
196
- function defaultRootDir() {
197
- return path2.join(resolvePackageRoot(), "src", "domains", "prompts", "fragments");
198
- }
199
- function walk(root) {
200
- const out = [];
201
- let entries;
119
+
120
+ // src/domains/prompts/extension.ts
121
+ init_esm_shims();
122
+ import { isAbsolute, relative } from "node:path";
123
+
124
+ // src/core/clio-repo.ts
125
+ init_esm_shims();
126
+ import { existsSync, readFileSync, statSync } from "node:fs";
127
+ import path from "node:path";
128
+ var CLIO_PACKAGE_NAME = "@iowarp/clio-coder";
129
+ var SOURCE_MARKERS = [
130
+ "src/entry/orchestrator.ts",
131
+ "src/worker/entry.ts",
132
+ "src/domains/prompts/fragments/identity/clio.md"
133
+ ];
134
+ function isFile(filePath) {
202
135
  try {
203
- entries = readdirSync(root, { withFileTypes: true });
136
+ return statSync(filePath).isFile();
204
137
  } catch {
205
- return out;
206
- }
207
- for (const entry of entries) {
208
- const full = path2.join(root, entry.name);
209
- if (entry.isDirectory()) {
210
- if (entry.name === "wiki") continue;
211
- out.push(...walk(full));
212
- continue;
213
- }
214
- if (entry.isFile() && entry.name.endsWith(".md")) {
215
- out.push(full);
216
- }
138
+ return false;
217
139
  }
218
- return out.sort((left, right) => left.localeCompare(right));
219
140
  }
220
- function parseFragment(filePath, rootDir) {
221
- const raw = readFileSync2(filePath, "utf8");
222
- const rawRel = path2.relative(rootDir, filePath);
223
- const relPath = rawRel.split(path2.sep).join("/");
224
- const match = raw.match(frontmatterRegex);
225
- if (!match) {
226
- throw new Error(`fragment-loader: ${relPath}: missing or malformed YAML frontmatter`);
227
- }
228
- const frontmatterText = match[1] ?? "";
229
- const body = match[2] ?? "";
230
- let parsed;
141
+ function readPackageJson(root) {
231
142
  try {
232
- parsed = import_yaml.default.parse(frontmatterText);
233
- } catch (err) {
234
- const reason = err instanceof Error ? err.message : String(err);
235
- throw new Error(`fragment-loader: ${relPath}: invalid YAML frontmatter (${reason})`);
236
- }
237
- if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
238
- throw new Error(`fragment-loader: ${relPath}: frontmatter must be a YAML object`);
239
- }
240
- const fm = parsed;
241
- const id = fm.id;
242
- if (typeof id !== "string" || !fragmentIdRegex.test(id)) {
243
- throw new Error(`fragment-loader: ${relPath}: frontmatter.id must be a dot-separated namespace`);
244
- }
245
- const version = fm.version;
246
- if (version !== 1) {
247
- throw new Error(`fragment-loader: ${relPath}: frontmatter.version must be 1`);
248
- }
249
- const description = fm.description;
250
- if (typeof description !== "string" || description.trim() === "") {
251
- throw new Error(`fragment-loader: ${relPath}: frontmatter.description must be a non-empty string`);
252
- }
253
- const dynamicRaw = fm.dynamic;
254
- if (dynamicRaw !== void 0 && typeof dynamicRaw !== "boolean") {
255
- throw new Error(`fragment-loader: ${relPath}: frontmatter.dynamic must be a boolean when present`);
143
+ const raw = readFileSync(path.join(root, "package.json"), "utf8");
144
+ const parsed = JSON.parse(raw);
145
+ return parsed && typeof parsed === "object" ? parsed : null;
146
+ } catch {
147
+ return null;
256
148
  }
257
- return {
258
- path: filePath,
259
- relPath,
260
- id,
261
- version,
262
- description,
263
- dynamic: dynamicRaw === true,
264
- body,
265
- contentHash: sha256(raw)
266
- };
267
149
  }
268
- function loadFragments(options) {
269
- const rootDir = typeof options === "string" ? options : options?.rootDir;
270
- const resolvedRoot = rootDir ? path2.resolve(rootDir) : defaultRootDir();
271
- const files = walk(resolvedRoot);
272
- const byId = /* @__PURE__ */ new Map();
273
- for (const file of files) {
274
- const fragment = parseFragment(file, resolvedRoot);
275
- const existing = byId.get(fragment.id);
276
- if (existing) {
277
- throw new Error(
278
- `fragment-loader: duplicate fragment id "${fragment.id}" in ${existing.relPath} and ${fragment.relPath}`
279
- );
150
+ function repositoryMatches(value) {
151
+ if (typeof value === "string") return value.includes("iowarp/clio-coder");
152
+ if (!value || typeof value !== "object") return false;
153
+ const url = value.url;
154
+ return typeof url === "string" && url.includes("iowarp/clio-coder");
155
+ }
156
+ function hasGitMarker(root) {
157
+ return existsSync(path.join(root, ".git"));
158
+ }
159
+ function hasSourceMarkers(root) {
160
+ return SOURCE_MARKERS.every((marker) => isFile(path.join(root, marker)));
161
+ }
162
+ function isClioCoderRepoRoot(root) {
163
+ const pkg = readPackageJson(root);
164
+ if (pkg?.name !== CLIO_PACKAGE_NAME) return false;
165
+ if (!repositoryMatches(pkg.repository)) return false;
166
+ if (!hasGitMarker(root)) return false;
167
+ return hasSourceMarkers(root);
168
+ }
169
+ function detectClioCoderRepo(cwd = process.cwd()) {
170
+ let current = path.resolve(cwd);
171
+ for (; ; ) {
172
+ if (isClioCoderRepoRoot(current)) {
173
+ return { isClioCoderRepo: true, repoRoot: current };
280
174
  }
281
- byId.set(fragment.id, fragment);
175
+ if (hasGitMarker(current)) break;
176
+ const parent = path.dirname(current);
177
+ if (parent === current) break;
178
+ current = parent;
282
179
  }
283
- return { byId, rootDir: resolvedRoot };
180
+ return { isClioCoderRepo: false, repoRoot: null };
284
181
  }
285
182
 
286
183
  // src/domains/prompts/extension.ts
@@ -329,6 +226,7 @@ function createPromptsBundle(context, options = {}) {
329
226
  const cwd = input.cwd ?? process.cwd();
330
227
  let contextFiles = "";
331
228
  let projectPreload = null;
229
+ let projectHandbookFiles = [];
332
230
  if (!suppressContextFiles) {
333
231
  const projectContext = contextDomain()?.renderPromptContext(cwd);
334
232
  contextFiles = projectContext ? selectProjectContext(projectContext, input.sessionInputs.providerSupportsTools ?? null) : "";
@@ -337,6 +235,7 @@ function createPromptsBundle(context, options = {}) {
337
235
  hasClioMd: projectContext.clioMd !== null,
338
236
  text: projectContext.text
339
237
  });
238
+ projectHandbookFiles = projectContext.handbookFiles;
340
239
  }
341
240
  for (const warning of projectContext?.warnings ?? []) process.stderr.write(`${warning}
342
241
  `);
@@ -355,17 +254,28 @@ function createPromptsBundle(context, options = {}) {
355
254
  additionalFragments: [
356
255
  ...workspaceRootFragment(cwd),
357
256
  ...clioRepoAwarenessFragments(cwd),
358
- ...customizationFragments(cwd, input.workingContextPaths ?? [])
257
+ ...customizationFragments(cwd, input.workingContextPaths ?? []).fragments
359
258
  ]
360
259
  });
361
- return { ...compiled, projectPreload };
260
+ return { ...compiled, projectPreload, projectHandbookFiles };
362
261
  },
363
262
  async compileWorkerPrompt(input) {
364
263
  if (!table) throw new Error("prompts domain not started");
365
264
  if (table.byId.size === 0) {
366
265
  throw new Error("prompts: no fragments loaded, check startup logs");
367
266
  }
368
- return compileWorker(table, input);
267
+ const { cwd: inputCwd, workingContextPaths, ...workerInputs } = input;
268
+ const cwd = inputCwd ?? process.cwd();
269
+ const customization = customizationFragments(cwd, workingContextPaths ?? []);
270
+ const compiled = compileWorker(table, {
271
+ ...workerInputs,
272
+ additionalFragments: customization.fragments
273
+ });
274
+ return {
275
+ ...compiled,
276
+ rulesApplied: customization.activeRuleIds,
277
+ operatorProfileApplied: customization.operatorProfileApplied
278
+ };
369
279
  },
370
280
  reload
371
281
  };
@@ -396,6 +306,8 @@ function createPromptsBundle(context, options = {}) {
396
306
  }
397
307
  function customizationFragments(cwd, workingContextPaths) {
398
308
  const fragments = [];
309
+ let activeRuleIds = [];
310
+ let operatorProfileApplied = false;
399
311
  try {
400
312
  const loaded = loadProjectRules(cwd);
401
313
  const active = selectActiveRules(loaded.rules, normalizeWorkingContextPaths(cwd, workingContextPaths));
@@ -408,6 +320,7 @@ function customizationFragments(cwd, workingContextPaths) {
408
320
  contentHash: sha256(body),
409
321
  dynamic: true
410
322
  });
323
+ activeRuleIds = active.map((rule) => rule.id);
411
324
  }
412
325
  } catch {
413
326
  }
@@ -422,10 +335,11 @@ function customizationFragments(cwd, workingContextPaths) {
422
335
  contentHash: sha256(rendered.text),
423
336
  dynamic: true
424
337
  });
338
+ operatorProfileApplied = true;
425
339
  }
426
340
  } catch {
427
341
  }
428
- return fragments;
342
+ return { fragments, activeRuleIds, operatorProfileApplied };
429
343
  }
430
344
  function normalizeWorkingContextPaths(cwd, paths) {
431
345
  const normalized = /* @__PURE__ */ new Set();
@@ -492,7 +406,7 @@ function renderProjectSynopsis(context, providerSupportsTools) {
492
406
  if (context.clioMd) {
493
407
  lines.push(`Project: ${context.clioMd.projectName}`);
494
408
  lines.push(
495
- "CLIO-CODER.md: available; compact synopsis only because the handbook is too large for automatic preload."
409
+ "Project handbook: available; compact synopsis only because the effective layers are too large for automatic preload."
496
410
  );
497
411
  }
498
412
  if (hasCodewiki(context.text)) lines.push("Codewiki: available via code_nav.");
@@ -739,4 +653,4 @@ export {
739
653
  createPromptsDomainModule,
740
654
  SchedulingDomainModule
741
655
  };
742
- //# sourceMappingURL=chunk-G34LV2PF.js.map
656
+ //# sourceMappingURL=chunk-LM5TQCJZ.js.map