@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,374 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ clioStateDir
4
+ } from "./chunk-BNAZZHFG.js";
5
+ import {
6
+ AI_AGENT_NAME
7
+ } from "./chunk-6EJMN2Y3.js";
8
+ import {
9
+ init_esm_shims
10
+ } from "./chunk-3R73A4XB.js";
11
+
12
+ // src/core/commit-attribution.ts
13
+ init_esm_shims();
14
+ var CLIO_COMMIT_IDENTITY = "Clio Coder <clio-coder@iowarp.ai>";
15
+ var CLIO_COMMIT_TRAILERS = {
16
+ assisted: `Assisted-by: ${CLIO_COMMIT_IDENTITY}`,
17
+ tested: `Tested-by: ${CLIO_COMMIT_IDENTITY}`,
18
+ reviewed: `Reviewed-by: ${CLIO_COMMIT_IDENTITY}`,
19
+ coAuthored: `Co-authored-by: ${CLIO_COMMIT_IDENTITY}`
20
+ };
21
+ var TRAILER_LINE = /^([A-Za-z0-9][A-Za-z0-9-]*):[ \t]+(.+)$/u;
22
+ var SHA256 = /^[0-9a-f]{64}$/u;
23
+ function normalizedTrailer(line) {
24
+ const match = TRAILER_LINE.exec(line);
25
+ if (match === null) return null;
26
+ return `${match[1]?.toLowerCase()}:${match[2]?.trim().replace(/[ \t]+/gu, " ").toLowerCase()}`;
27
+ }
28
+ var KNOWN_CLIO_TRAILERS = new Set(
29
+ Object.values(CLIO_COMMIT_TRAILERS).map((line) => normalizedTrailer(line)).filter((line) => line !== null)
30
+ );
31
+ function isClioTrailer(key) {
32
+ return KNOWN_CLIO_TRAILERS.has(key) || key.startsWith("clio-evidence:receipt-v15/sha256:");
33
+ }
34
+ function trailerBlockStart(lines) {
35
+ if (lines.length < 2) return null;
36
+ const separator = lines.lastIndexOf("");
37
+ const first = separator + 1;
38
+ if (separator < 0 || first >= lines.length) return null;
39
+ let sawTrailer = false;
40
+ for (const line of lines.slice(first)) {
41
+ if (TRAILER_LINE.test(line)) {
42
+ sawTrailer = true;
43
+ continue;
44
+ }
45
+ if (sawTrailer && /^[ \t]+/u.test(line)) continue;
46
+ return null;
47
+ }
48
+ return sawTrailer ? first : null;
49
+ }
50
+ function receiptTrailer(receipt) {
51
+ if (receipt?.version !== 15 || receipt.algorithm !== "sha256" || receipt.integrityValid !== true || receipt.directlyRelevant !== true || !SHA256.test(receipt.digest)) {
52
+ return null;
53
+ }
54
+ return `Clio-Evidence: receipt-v15/sha256:${receipt.digest}`;
55
+ }
56
+ function attributeCommitMessage(originalMessage, evidence, enabled = true) {
57
+ if (!enabled) return originalMessage;
58
+ const normalized = originalMessage.replace(/\r\n?/gu, "\n");
59
+ const lines = normalized.replace(/\n+$/u, "").split("\n");
60
+ const blockStart = trailerBlockStart(lines);
61
+ const seenClio = /* @__PURE__ */ new Set();
62
+ const retained = lines.filter((line, index) => {
63
+ if (blockStart === null || index < blockStart) return true;
64
+ const key = normalizedTrailer(line);
65
+ if (key === null || !isClioTrailer(key)) return true;
66
+ if (seenClio.has(key)) return false;
67
+ seenClio.add(key);
68
+ return true;
69
+ });
70
+ const desired = [];
71
+ if (evidence.materiallyAssisted === true || evidence.materiallyAuthored === true) {
72
+ desired.push(CLIO_COMMIT_TRAILERS.assisted);
73
+ }
74
+ if (evidence.validationSucceeded === true) desired.push(CLIO_COMMIT_TRAILERS.tested);
75
+ if (evidence.independentReviewPassed === true) desired.push(CLIO_COMMIT_TRAILERS.reviewed);
76
+ if (evidence.materiallyAuthored === true) desired.push(CLIO_COMMIT_TRAILERS.coAuthored);
77
+ const receipt = receiptTrailer(evidence.receipt);
78
+ if (receipt !== null) desired.push(receipt);
79
+ const existing = new Set(
80
+ (blockStart === null ? [] : retained.slice(blockStart)).map((line) => normalizedTrailer(line)).filter((line) => line !== null)
81
+ );
82
+ const additions = desired.filter((line) => !existing.has(normalizedTrailer(line) ?? ""));
83
+ if (additions.length === 0) return `${retained.join("\n")}
84
+ `;
85
+ if (blockStart === null) {
86
+ while (retained.at(-1) === "") retained.pop();
87
+ retained.push("", ...additions);
88
+ } else {
89
+ retained.push(...additions);
90
+ }
91
+ return `${retained.join("\n")}
92
+ `;
93
+ }
94
+
95
+ // src/core/git-commit-attribution.ts
96
+ init_esm_shims();
97
+ import { execFileSync } from "node:child_process";
98
+ import { chmodSync, existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs";
99
+ import { join, resolve } from "node:path";
100
+ var CLIO_GIT_COMMITS_ENABLED_ENV = "CLIO_CODER_GIT_COMMITS_ENABLED";
101
+ var ASSISTED_ENV = "CLIO_CODER_COMMIT_ASSISTED";
102
+ var AUTHORED_ENV = "CLIO_CODER_COMMIT_AUTHORED";
103
+ var CONFIG_BASE_COUNT_ENV = "CLIO_CODER_GIT_CONFIG_BASE_COUNT";
104
+ var DEFAULT_HOOKS_EQUIVALENT_ENV = "CLIO_CODER_GIT_DEFAULT_HOOKS_EQUIVALENT";
105
+ var MANAGED_HOOK_VERSION = 2;
106
+ var DIAGNOSTIC_MAX_CHARS = 300;
107
+ var COUNT = /^(?:0|[1-9][0-9]*)$/u;
108
+ var reportedDiagnostics = /* @__PURE__ */ new Set();
109
+ var PROBE_CACHE_TTL_MS = 1e4;
110
+ var PROBE_CACHE_MAX_ENTRIES = 32;
111
+ var probeCache = /* @__PURE__ */ new Map();
112
+ var installedHooksDirectory = null;
113
+ var PER_SPAWN_ENV_NAMES = [ASSISTED_ENV, AUTHORED_ENV, CONFIG_BASE_COUNT_ENV, DEFAULT_HOOKS_EQUIVALENT_ENV];
114
+ function reportCommitAttributionDiagnostic(diagnostic) {
115
+ if (diagnostic === null || reportedDiagnostics.has(diagnostic)) return;
116
+ reportedDiagnostics.add(diagnostic);
117
+ process.stderr.write(`[clio:attribution] ${diagnostic}
118
+ `);
119
+ }
120
+ function setGitCommitAttributionEnabled(enabled) {
121
+ process.env[CLIO_GIT_COMMITS_ENABLED_ENV] = enabled ? "1" : "0";
122
+ }
123
+ function gitCommitAttributionEnabled(source = process.env) {
124
+ return source[CLIO_GIT_COMMITS_ENABLED_ENV] !== "0";
125
+ }
126
+ function boundedDiagnostic(message) {
127
+ const folded = message.replace(/\s+/gu, " ").trim();
128
+ return folded.length <= DIAGNOSTIC_MAX_CHARS ? folded : `${folded.slice(0, DIAGNOSTIC_MAX_CHARS - 3)}...`;
129
+ }
130
+ function withoutManagedGitConfig(source) {
131
+ const env = { ...source };
132
+ const baseRaw = env[CONFIG_BASE_COUNT_ENV];
133
+ const currentRaw = env.GIT_CONFIG_COUNT;
134
+ if (baseRaw !== void 0 && COUNT.test(baseRaw) && currentRaw !== void 0 && COUNT.test(currentRaw)) {
135
+ const base = Number(baseRaw);
136
+ for (let index = base; index < Number(currentRaw); index += 1) {
137
+ Reflect.deleteProperty(env, `GIT_CONFIG_KEY_${index}`);
138
+ Reflect.deleteProperty(env, `GIT_CONFIG_VALUE_${index}`);
139
+ }
140
+ if (base === 0) Reflect.deleteProperty(env, "GIT_CONFIG_COUNT");
141
+ else env.GIT_CONFIG_COUNT = String(base);
142
+ }
143
+ for (const name of PER_SPAWN_ENV_NAMES) Reflect.deleteProperty(env, name);
144
+ return env;
145
+ }
146
+ function gitOutput(cwd, env, args) {
147
+ try {
148
+ return execFileSync("git", [...args], {
149
+ cwd,
150
+ env,
151
+ encoding: "utf8",
152
+ stdio: ["ignore", "pipe", "ignore"],
153
+ timeout: 5e3
154
+ }).trim();
155
+ } catch {
156
+ return null;
157
+ }
158
+ }
159
+ var MANAGED_HOOK_NAMES = [
160
+ "applypatch-msg",
161
+ "pre-applypatch",
162
+ "post-applypatch",
163
+ "pre-commit",
164
+ "pre-merge-commit",
165
+ "prepare-commit-msg",
166
+ "commit-msg",
167
+ "post-commit",
168
+ "pre-rebase",
169
+ "post-checkout",
170
+ "post-merge",
171
+ "pre-push",
172
+ "pre-receive",
173
+ "update",
174
+ "proc-receive",
175
+ "post-receive",
176
+ "post-update",
177
+ "reference-transaction",
178
+ "push-to-checkout",
179
+ "pre-auto-gc",
180
+ "post-rewrite",
181
+ "sendemail-validate",
182
+ "post-index-change"
183
+ ];
184
+ var MANAGED_HOOK_SCRIPT = `#!/bin/sh
185
+ # Clio Coder managed Git hook v${MANAGED_HOOK_VERSION}. Selected only through
186
+ # command-scope configuration in Clio child-process environments.
187
+
188
+ hook_name=$(basename "$0")
189
+
190
+ base_count=$${CONFIG_BASE_COUNT_ENV}
191
+ case "$base_count" in
192
+ '' | *[!0-9]*)
193
+ printf '%s\\n' '[clio:attribution] invalid managed hook environment' >&2
194
+ exit 0
195
+ ;;
196
+ 0) unset GIT_CONFIG_COUNT ;;
197
+ *)
198
+ GIT_CONFIG_COUNT=$base_count
199
+ export GIT_CONFIG_COUNT
200
+ ;;
201
+ esac
202
+
203
+ # A command may have moved into a different repository after Clio prepared the
204
+ # environment. A repository with its own core.hooksPath gets its hook run and
205
+ # is never attributed; composing an unknown setup is not attempted.
206
+ if [ "$${DEFAULT_HOOKS_EQUIVALENT_ENV}" != '1' ] && git config --get core.hooksPath >/dev/null 2>&1; then
207
+ custom_hooks=$(git config --path --get core.hooksPath 2>/dev/null || true)
208
+ case "$custom_hooks" in
209
+ '') ;;
210
+ /*) custom_hook=$custom_hooks/$hook_name ;;
211
+ *) custom_hook=$PWD/$custom_hooks/$hook_name ;;
212
+ esac
213
+ if [ -n "$custom_hooks" ] && [ -x "$custom_hook" ]; then exec "$custom_hook" "$@"; fi
214
+ exit 0
215
+ fi
216
+
217
+ common_dir=$(git rev-parse --git-common-dir 2>/dev/null || true)
218
+ case "$common_dir" in
219
+ '') default_hook= ;;
220
+ /*) default_hook=$common_dir/hooks/$hook_name ;;
221
+ *) default_hook=$PWD/$common_dir/hooks/$hook_name ;;
222
+ esac
223
+
224
+ if [ "$hook_name" != 'prepare-commit-msg' ]; then
225
+ if [ -n "$default_hook" ] && [ -x "$default_hook" ]; then exec "$default_hook" "$@"; fi
226
+ exit 0
227
+ fi
228
+
229
+ message_file=$1
230
+ message_source=$2
231
+
232
+ if [ -n "$default_hook" ] && [ -x "$default_hook" ]; then
233
+ "$default_hook" "$@" || exit $?
234
+ fi
235
+
236
+ # The repository's own hook semantics are settled. Everything below is
237
+ # fail-open and applies only to Clio-spawned commits with attribution enabled.
238
+ if [ "$AI_AGENT" != '${AI_AGENT_NAME}' ] || [ "$${CLIO_GIT_COMMITS_ENABLED_ENV}" != '1' ]; then exit 0; fi
239
+
240
+ # Only a message supplied up front (-m, -F, or a merge) is attributed. --amend,
241
+ # -c/-C, squash, and template sources reuse or lack a real message, and an
242
+ # editor session starts from an all-comment template where added trailers
243
+ # would turn an abandoned editor into a commit whose whole message is trailers.
244
+ case "$message_source" in message|merge) ;; *) exit 0 ;; esac
245
+ for marker in CHERRY_PICK_HEAD REVERT_HEAD rebase-apply rebase-merge sequencer; do
246
+ marker_path=$(git rev-parse --git-path "$marker" 2>/dev/null || true)
247
+ if [ -n "$marker_path" ] && [ -e "$marker_path" ]; then exit 0; fi
248
+ done
249
+
250
+ # Case-insensitive presence check on the whole message, so a human-written
251
+ # variant of a Clio trailer is respected rather than duplicated.
252
+ has_trailer() {
253
+ awk -v wanted="$(printf '%s' "$1" | tr '[:upper:]' '[:lower:]')" '
254
+ { line=$0; gsub(/[ \\t]+/, " ", line); sub(/ $/, "", line); if (tolower(line) == wanted) found=1 }
255
+ END { exit found ? 0 : 1 }' "$message_file"
256
+ }
257
+
258
+ append_trailer() {
259
+ if has_trailer "$1"; then return 0; fi
260
+ git interpret-trailers --in-place --if-exists=addIfDifferent --trailer "$1" "$message_file" ||
261
+ printf '%s\\n' '[clio:attribution] git interpret-trailers failed; commit left as written' >&2
262
+ }
263
+
264
+ if [ "$${ASSISTED_ENV}" = '1' ] || [ "$${AUTHORED_ENV}" = '1' ]; then
265
+ append_trailer '${CLIO_COMMIT_TRAILERS.assisted}'
266
+ fi
267
+ if [ "$${AUTHORED_ENV}" = '1' ]; then append_trailer '${CLIO_COMMIT_TRAILERS.coAuthored}'; fi
268
+ exit 0
269
+ `;
270
+ function installManagedHook(directory, name) {
271
+ const hook = join(directory, name);
272
+ try {
273
+ if (existsSync(hook) && readFileSync(hook, "utf8") === MANAGED_HOOK_SCRIPT) {
274
+ chmodSync(hook, 493);
275
+ return;
276
+ }
277
+ } catch {
278
+ }
279
+ const temporary = `${hook}.tmp-${process.pid}-${Date.now()}`;
280
+ try {
281
+ writeFileSync(temporary, MANAGED_HOOK_SCRIPT, { encoding: "utf8", mode: 493 });
282
+ renameSync(temporary, hook);
283
+ } finally {
284
+ rmSync(temporary, { force: true });
285
+ }
286
+ }
287
+ function managedHooksDirectory() {
288
+ const directory = join(clioStateDir(), "git-hooks", `v${MANAGED_HOOK_VERSION}`);
289
+ if (installedHooksDirectory === directory && existsSync(join(directory, "prepare-commit-msg"))) return directory;
290
+ mkdirSync(directory, { recursive: true, mode: 448 });
291
+ for (const name of MANAGED_HOOK_NAMES) installManagedHook(directory, name);
292
+ installedHooksDirectory = directory;
293
+ return directory;
294
+ }
295
+ function gitEnvironmentFingerprint(env) {
296
+ const parts = [];
297
+ for (const key of Object.keys(env)) {
298
+ if (key.startsWith("GIT_") || key === "HOME" || key === "XDG_CONFIG_HOME") parts.push(`${key}=${env[key] ?? ""}`);
299
+ }
300
+ return parts.sort().join("\0");
301
+ }
302
+ function probeRepositoryUncached(cwd, env) {
303
+ if (gitOutput(cwd, env, ["rev-parse", "--is-inside-work-tree"]) !== "true") return { kind: "outside" };
304
+ const customHooksPath = gitOutput(cwd, env, ["config", "--path", "--get", "core.hooksPath"]);
305
+ if (customHooksPath === null) return { kind: "default", declaredDefault: false };
306
+ const commonDirectory = gitOutput(cwd, env, ["rev-parse", "--git-common-dir"]);
307
+ const defaultHooksPath = commonDirectory === null ? null : resolve(cwd, commonDirectory, "hooks");
308
+ if (customHooksPath.length === 0 || resolve(cwd, customHooksPath) !== defaultHooksPath) {
309
+ return { kind: "custom", hooksPath: customHooksPath };
310
+ }
311
+ return { kind: "default", declaredDefault: true };
312
+ }
313
+ function probeRepository(cwd, env, now = Date.now()) {
314
+ const key = `${cwd}\0${gitEnvironmentFingerprint(env)}`;
315
+ const cached = probeCache.get(key);
316
+ if (cached !== void 0 && now - cached.at < PROBE_CACHE_TTL_MS && now >= cached.at) return cached.probe;
317
+ const probe = probeRepositoryUncached(cwd, env);
318
+ if (cached === void 0 && probeCache.size >= PROBE_CACHE_MAX_ENTRIES) {
319
+ const oldest = probeCache.keys().next().value;
320
+ if (oldest !== void 0) probeCache.delete(oldest);
321
+ }
322
+ probeCache.delete(key);
323
+ probeCache.set(key, { at: now, probe });
324
+ return probe;
325
+ }
326
+ function withManagedGitCommitAttributionEnvironment(source, options = {}) {
327
+ const env = withoutManagedGitConfig(source);
328
+ env.AI_AGENT = AI_AGENT_NAME;
329
+ const enabled = options.enabled ?? gitCommitAttributionEnabled(source);
330
+ env[CLIO_GIT_COMMITS_ENABLED_ENV] = enabled ? "1" : "0";
331
+ if (!enabled) return { env, diagnostic: null };
332
+ const evidence = options.evidence ?? { materiallyAssisted: true, materiallyAuthored: true };
333
+ env[ASSISTED_ENV] = evidence.materiallyAssisted === true ? "1" : "0";
334
+ env[AUTHORED_ENV] = evidence.materiallyAuthored === true ? "1" : "0";
335
+ const countRaw = env.GIT_CONFIG_COUNT;
336
+ const count = countRaw === void 0 ? 0 : COUNT.test(countRaw) ? Number(countRaw) : Number.NaN;
337
+ if (!Number.isSafeInteger(count) || count > 1024) {
338
+ return { env, diagnostic: boundedDiagnostic("GIT_CONFIG_COUNT is invalid; Clio commit attribution skipped") };
339
+ }
340
+ const cwd = resolve(options.cwd ?? process.cwd());
341
+ const probe = probeRepository(cwd, env);
342
+ if (probe.kind === "outside") return { env, diagnostic: null };
343
+ if (probe.kind === "custom") {
344
+ return {
345
+ env,
346
+ diagnostic: boundedDiagnostic(`core.hooksPath is set to '${probe.hooksPath}'; Clio commit attribution skipped`)
347
+ };
348
+ }
349
+ if (probe.declaredDefault) env[DEFAULT_HOOKS_EQUIVALENT_ENV] = "1";
350
+ let hooksDirectory;
351
+ try {
352
+ hooksDirectory = managedHooksDirectory();
353
+ } catch (error) {
354
+ const reason = error instanceof Error ? error.message : String(error);
355
+ return {
356
+ env,
357
+ diagnostic: boundedDiagnostic(`managed hooks unavailable; Clio commit attribution skipped (${reason})`)
358
+ };
359
+ }
360
+ env[CONFIG_BASE_COUNT_ENV] = String(count);
361
+ env.GIT_CONFIG_COUNT = String(count + 1);
362
+ env[`GIT_CONFIG_KEY_${count}`] = "core.hooksPath";
363
+ env[`GIT_CONFIG_VALUE_${count}`] = hooksDirectory;
364
+ return { env, diagnostic: null };
365
+ }
366
+
367
+ export {
368
+ attributeCommitMessage,
369
+ reportCommitAttributionDiagnostic,
370
+ setGitCommitAttributionEnabled,
371
+ gitCommitAttributionEnabled,
372
+ withManagedGitCommitAttributionEnvironment
373
+ };
374
+ //# sourceMappingURL=chunk-X75S7HFS.js.map
@@ -0,0 +1,46 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ typebox_exports
4
+ } from "./chunk-5B2AEOW5.js";
5
+ import {
6
+ ToolNames
7
+ } from "./chunk-CGKSTWHD.js";
8
+ import {
9
+ StringEnum
10
+ } from "./chunk-FCSXB6T2.js";
11
+ import {
12
+ init_esm_shims
13
+ } from "./chunk-3R73A4XB.js";
14
+
15
+ // src/tools/codewiki/code-nav-surface.ts
16
+ init_esm_shims();
17
+ var CODE_NAV_DEFAULT_LIMIT = 50;
18
+ var CODE_NAV_DEFAULT_ENTRY_LIMIT = 25;
19
+ var CODE_NAV_MAX_LIMIT = 200;
20
+ var codeNavToolSurface = {
21
+ name: ToolNames.CodeNav,
22
+ description: "Navigate the indexed codewiki: mode=symbol finds files by symbol, path finds files by glob/regex/substring, entries lists likely entry points, outline lists file symbols, deps lists imports, and dependents lists importers. mode=wiki without query lists generated Markdown wiki pages; with query it resolves a page id/title and returns its summary plus a path to open with read. For Clio's bundled product docs use context scope=docs.",
23
+ parameters: typebox_exports.Object({
24
+ mode: StringEnum(["symbol", "path", "entries", "outline", "deps", "dependents", "wiki"], {
25
+ description: "Lookup mode."
26
+ }),
27
+ query: typebox_exports.Optional(
28
+ typebox_exports.String({ description: "Symbol name, indexed path/pattern/substring, or wiki page id/title." })
29
+ ),
30
+ limit: typebox_exports.Optional(
31
+ typebox_exports.Number({
32
+ description: `Max results (default ${CODE_NAV_DEFAULT_LIMIT}, entries ${CODE_NAV_DEFAULT_ENTRY_LIMIT}, max ${CODE_NAV_MAX_LIMIT}).`
33
+ })
34
+ )
35
+ }),
36
+ baseActionClass: "read",
37
+ executionMode: "parallel"
38
+ };
39
+
40
+ export {
41
+ CODE_NAV_DEFAULT_LIMIT,
42
+ CODE_NAV_DEFAULT_ENTRY_LIMIT,
43
+ CODE_NAV_MAX_LIMIT,
44
+ codeNavToolSurface
45
+ };
46
+ //# sourceMappingURL=chunk-XN3L4EYL.js.map
@@ -1,11 +1,13 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
- printError,
3
+ printError
4
+ } from "./chunk-ED4KHGC3.js";
5
+ import {
4
6
  source_default
5
- } from "./chunk-K2ITRMHZ.js";
7
+ } from "./chunk-5TSRNF4G.js";
6
8
  import {
7
9
  authStoragePath
8
- } from "./chunk-GB6QRBXN.js";
10
+ } from "./chunk-4VP4KH3K.js";
9
11
  import {
10
12
  init_esm_shims
11
13
  } from "./chunk-3R73A4XB.js";
@@ -33,4 +35,4 @@ export {
33
35
  printPlaintextCredentialWarning,
34
36
  credentialWriteFailed
35
37
  };
36
- //# sourceMappingURL=chunk-RDLVBZEO.js.map
38
+ //# sourceMappingURL=chunk-YCWGATWI.js.map
@@ -0,0 +1,193 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ enumerateWorkspaceFiles
4
+ } from "./chunk-EKMEHE4H.js";
5
+ import {
6
+ classifyCHeaderLanguage
7
+ } from "./chunk-7CR24IG7.js";
8
+ import {
9
+ init_esm_shims
10
+ } from "./chunk-3R73A4XB.js";
11
+
12
+ // src/domains/session/workspace/project-type.ts
13
+ init_esm_shims();
14
+ import { readFileSync } from "node:fs";
15
+ import { join } from "node:path";
16
+ var SOURCE_LANGUAGES = [
17
+ "typescript",
18
+ "javascript",
19
+ "python",
20
+ "rust",
21
+ "go",
22
+ "c",
23
+ "c++",
24
+ "java",
25
+ "ruby",
26
+ "c#"
27
+ ];
28
+ var EXTENSION_LANGUAGES = /* @__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
+ ]);
55
+ var MANIFEST_LANGUAGES = [
56
+ { name: "package.json", type: "typescript" },
57
+ { name: "pyproject.toml", type: "python" },
58
+ { name: "setup.py", type: "python" },
59
+ { name: "Cargo.toml", type: "rust" },
60
+ { name: "go.mod", type: "go" },
61
+ { name: "pom.xml", type: "java" },
62
+ { name: "CMakeLists.txt", type: "c++" },
63
+ { name: "compile_commands.json", type: "c++" },
64
+ { name: "Gemfile", type: "ruby" },
65
+ { name: "*.csproj", type: "c#" }
66
+ ];
67
+ function emptyLanguageCounts() {
68
+ return {
69
+ typescript: 0,
70
+ javascript: 0,
71
+ python: 0,
72
+ rust: 0,
73
+ go: 0,
74
+ c: 0,
75
+ "c++": 0,
76
+ java: 0,
77
+ ruby: 0,
78
+ "c#": 0
79
+ };
80
+ }
81
+ function extensionOf(name) {
82
+ const index = name.lastIndexOf(".");
83
+ return index === -1 ? "" : name.slice(index);
84
+ }
85
+ function countManifest(name, manifestCounts) {
86
+ for (const marker of MANIFEST_LANGUAGES) {
87
+ if (marker.name.startsWith("*.")) {
88
+ const ext = marker.name.slice(1);
89
+ if (name.endsWith(ext)) {
90
+ manifestCounts[marker.type] = (manifestCounts[marker.type] ?? 0) + 1;
91
+ }
92
+ } else {
93
+ if (name !== marker.name) continue;
94
+ manifestCounts[marker.type] = (manifestCounts[marker.type] ?? 0) + 1;
95
+ }
96
+ }
97
+ }
98
+ function scanFiles(cwd, files, languageCounts, manifestCounts) {
99
+ for (const path of files) {
100
+ const name = path.split("/").pop() ?? path;
101
+ countManifest(name, manifestCounts);
102
+ if (name.endsWith(".d.ts")) continue;
103
+ const extension = extensionOf(name);
104
+ let language = EXTENSION_LANGUAGES.get(extension);
105
+ if (extension === ".h") {
106
+ try {
107
+ language = classifyCHeaderLanguage(readFileSync(join(cwd, path), "utf8"));
108
+ } catch {
109
+ language = "c";
110
+ }
111
+ }
112
+ if (language) languageCounts[language] += 1;
113
+ }
114
+ }
115
+ function looksLikeDotfiles(files) {
116
+ const dotDirs = /* @__PURE__ */ new Set();
117
+ for (const path of files) {
118
+ const [root, child] = path.split("/", 2);
119
+ if (child && root?.startsWith("dot-")) dotDirs.add(root);
120
+ }
121
+ return dotDirs.size >= 2;
122
+ }
123
+ function dominantFromCounts(counts) {
124
+ let best;
125
+ let bestCount = 0;
126
+ for (const language of SOURCE_LANGUAGES) {
127
+ const count = counts[language] ?? 0;
128
+ if (count > bestCount) {
129
+ best = language;
130
+ bestCount = count;
131
+ } else if (count === bestCount && count > 0) {
132
+ best = void 0;
133
+ }
134
+ }
135
+ return best;
136
+ }
137
+ function detectProjectProfile(cwd) {
138
+ const languageCounts = emptyLanguageCounts();
139
+ const manifestCounts = {};
140
+ const files = enumerateWorkspaceFiles(cwd);
141
+ scanFiles(cwd, files, languageCounts, manifestCounts);
142
+ const sourceFiles = SOURCE_LANGUAGES.reduce((sum, language) => sum + languageCounts[language], 0);
143
+ const dominantSource = dominantFromCounts(languageCounts);
144
+ const dominantCount = dominantSource ? languageCounts[dominantSource] : 0;
145
+ const polyglot = sourceFiles > 0 && dominantCount / sourceFiles <= 0.7;
146
+ if (sourceFiles > 0) {
147
+ return {
148
+ projectType: polyglot ? "polyglot" : dominantSource ?? "polyglot",
149
+ sourceFiles,
150
+ languageCounts,
151
+ manifestCounts,
152
+ ...dominantSource ? { dominantLanguage: dominantSource } : {},
153
+ polyglot
154
+ };
155
+ }
156
+ const manifestDominant = dominantFromCounts(manifestCounts);
157
+ if (manifestDominant) {
158
+ return {
159
+ projectType: manifestDominant,
160
+ sourceFiles,
161
+ languageCounts,
162
+ manifestCounts,
163
+ dominantLanguage: manifestDominant,
164
+ polyglot: false
165
+ };
166
+ }
167
+ const manifestTotal = SOURCE_LANGUAGES.reduce((sum, language) => sum + (manifestCounts[language] ?? 0), 0);
168
+ if (manifestTotal > 0) {
169
+ return {
170
+ projectType: "polyglot",
171
+ sourceFiles,
172
+ languageCounts,
173
+ manifestCounts,
174
+ polyglot: true
175
+ };
176
+ }
177
+ return {
178
+ projectType: looksLikeDotfiles(files) ? "dotfiles" : "unknown",
179
+ sourceFiles,
180
+ languageCounts,
181
+ manifestCounts,
182
+ polyglot: false
183
+ };
184
+ }
185
+ function detectProjectType(cwd) {
186
+ return detectProjectProfile(cwd).projectType;
187
+ }
188
+
189
+ export {
190
+ detectProjectProfile,
191
+ detectProjectType
192
+ };
193
+ //# sourceMappingURL=chunk-YHZX5GEU.js.map