@iowarp/clio-coder 0.4.2 → 0.4.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 (369) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/CONTRIBUTING.md +86 -19
  3. package/README.md +35 -6
  4. package/dist/{acp-TMDQZDIG.js → acp-H2NGRPWO.js} +11 -11
  5. package/dist/{agents-5N5NG3XG.js → agents-TL5LLUQP.js} +54 -53
  6. package/dist/assets/codewiki.json +1 -1
  7. package/dist/{auth-Z5CCBXKQ.js → auth-E5SW4HMS.js} +19 -16
  8. package/dist/{builtins-K6TNDT24.js → builtins-IA7V7FUC.js} +9 -4
  9. package/dist/{chunk-ZW4HH5JJ.js → chunk-2APPQIER.js} +6 -6
  10. package/dist/{chunk-72GZI5EV.js → chunk-2JH2WHGE.js} +2 -2
  11. package/dist/{chunk-UBRFI4HS.js → chunk-2UG5F4C5.js} +127 -47
  12. package/dist/{chunk-UH632ZYL.js → chunk-2UH2KFUP.js} +2 -2
  13. package/dist/{chunk-3F7VUY77.js → chunk-2VIKGWFZ.js} +2 -2
  14. package/dist/{chunk-I66EAJFY.js → chunk-2WZ546HR.js} +267 -232
  15. package/dist/{chunk-RKSR6VSF.js → chunk-4IUZQIJ3.js} +29 -1
  16. package/dist/{chunk-2X4RYJTJ.js → chunk-4UVU7BJ5.js} +2 -2
  17. package/dist/{chunk-M2DAX4F6.js → chunk-4WR7VSYB.js} +2 -2
  18. package/dist/{chunk-5KW52TEP.js → chunk-54CBCGIR.js} +5 -5
  19. package/dist/{chunk-3KIPBMUA.js → chunk-5ICU3EUH.js} +2 -2
  20. package/dist/{chunk-77QIVUZB.js → chunk-5MEZN6CB.js} +4 -4
  21. package/dist/{chunk-O42A54GG.js → chunk-5OIVVPHF.js} +2 -2
  22. package/dist/{chunk-LJID3DYZ.js → chunk-64I3JVYM.js} +2 -2
  23. package/dist/{chunk-4JDLP6ZS.js → chunk-6PTFB5VS.js} +7 -7
  24. package/dist/{chunk-VN3SHNBN.js → chunk-7DICMOS6.js} +2 -2
  25. package/dist/{chunk-HLAFFSEK.js → chunk-7DRAWPTZ.js} +2 -2
  26. package/dist/chunk-7E7I3WLS.js +3762 -0
  27. package/dist/{chunk-YJISEZKC.js → chunk-7ZYNNDKC.js} +6 -6
  28. package/dist/{chunk-I66ZTYNP.js → chunk-AF4YM7Z4.js} +236 -101
  29. package/dist/{chunk-2HFQNRV3.js → chunk-AX2THNSA.js} +12 -12
  30. package/dist/{chunk-PGF63K6I.js → chunk-B4OAX3SI.js} +65 -3
  31. package/dist/{chunk-W6NIE6OW.js → chunk-B4VEBZKF.js} +3 -3
  32. package/dist/{chunk-JBCS7CRR.js → chunk-BEPZRGGU.js} +10 -10
  33. package/dist/{chunk-XGDPUNND.js → chunk-CE5AX47J.js} +2 -2
  34. package/dist/{chunk-I64IFBLB.js → chunk-DWUOQKRU.js} +17 -10
  35. package/dist/{chunk-DZAW46HP.js → chunk-E3TPLWFX.js} +3 -3
  36. package/dist/{chunk-HIICAHCJ.js → chunk-EKCHAPYA.js} +2 -2
  37. package/dist/{chunk-XE3PCIXH.js → chunk-F5JHEYZM.js} +7 -7
  38. package/dist/{chunk-5PFYMY2V.js → chunk-FTMGRKEF.js} +2 -2
  39. package/dist/{chunk-ZNT2M6TG.js → chunk-G76U63X4.js} +17 -17
  40. package/dist/{chunk-34BHNEE3.js → chunk-GHS5EBTQ.js} +58 -7
  41. package/dist/{chunk-2NHR3NAY.js → chunk-GI7YYQ3F.js} +40 -34
  42. package/dist/{chunk-DYHAXKHD.js → chunk-GWZNEVM2.js} +12 -8
  43. package/dist/chunk-GYV6VZOC.js +26 -0
  44. package/dist/{chunk-MQXIVJ35.js → chunk-HAXOFFRH.js} +5 -5
  45. package/dist/{chunk-W4YEMFBX.js → chunk-HEQY7ZFI.js} +2 -2
  46. package/dist/{chunk-IKOZFYBN.js → chunk-I7ZPNEJM.js} +145 -102
  47. package/dist/{chunk-WNP7O5WZ.js → chunk-ID64D7PE.js} +4 -4
  48. package/dist/{chunk-XQRY4DTA.js → chunk-IGLP3ODT.js} +10 -10
  49. package/dist/chunk-IJNZMHLA.js +101 -0
  50. package/dist/{chunk-JWJGP5DQ.js → chunk-INY6HTFL.js} +7 -7
  51. package/dist/{chunk-PBP4B7XR.js → chunk-IUE3Y34X.js} +2 -2
  52. package/dist/{chunk-B74PXLU7.js → chunk-IWT4SF4R.js} +3 -3
  53. package/dist/{chunk-B7HM5Z7T.js → chunk-JDAY6FIL.js} +5 -5
  54. package/dist/{chunk-PJX3WQUQ.js → chunk-JEQ3XTHC.js} +2 -2
  55. package/dist/{chunk-FSP7CMNU.js → chunk-JGRC33J2.js} +50 -4
  56. package/dist/{chunk-X7IARSHT.js → chunk-JKKCYP3C.js} +9 -9
  57. package/dist/{chunk-HJWWJ6IL.js → chunk-JSC3U7TI.js} +16 -4
  58. package/dist/{chunk-SSEYRH53.js → chunk-KK4JZPBQ.js} +19 -140
  59. package/dist/{chunk-IHXBNWMM.js → chunk-KXDSS5WJ.js} +7 -3
  60. package/dist/{chunk-Q4XWMHX6.js → chunk-L47TF46W.js} +2 -2
  61. package/dist/{chunk-O3YUNJZ2.js → chunk-LDJG7DW3.js} +81 -24
  62. package/dist/{chunk-CDNVLKUX.js → chunk-LLDJM5XK.js} +13 -7
  63. package/dist/{chunk-F2I26BDK.js → chunk-MUW2BDDH.js} +4 -4
  64. package/dist/{chunk-HKMD33FO.js → chunk-MWUZBSAQ.js} +79 -76
  65. package/dist/{chunk-QQLGQY2A.js → chunk-N2Z7HLVY.js} +20 -20
  66. package/dist/{chunk-DZEK6CJN.js → chunk-NIQJ66N4.js} +19 -19
  67. package/dist/{chunk-CWVRRIEI.js → chunk-NZMNUPZZ.js} +2 -2
  68. package/dist/{chunk-462T4EGZ.js → chunk-O5CVSAG5.js} +2 -2
  69. package/dist/{chunk-TPEQIQIE.js → chunk-OML5D5V5.js} +8 -8
  70. package/dist/{chunk-IKSLQ4XV.js → chunk-PAJQJ7BS.js} +558 -216
  71. package/dist/{chunk-ZW55JB7N.js → chunk-PUVDKJ2Y.js} +2 -2
  72. package/dist/{chunk-UH347SHR.js → chunk-QWGDJJYJ.js} +11 -11
  73. package/dist/chunk-R6Q67RJH.js +134 -0
  74. package/dist/{chunk-CRFOIAX3.js → chunk-RRNP2ANY.js} +6 -6
  75. package/dist/{chunk-IDNA72AH.js → chunk-RSJ25QSL.js} +2 -2
  76. package/dist/chunk-SKHCAU7K.js +385 -0
  77. package/dist/{chunk-RLYRBIYQ.js → chunk-TM6LQDI3.js} +20 -12
  78. package/dist/chunk-UOIZ7DA4.js +41 -0
  79. package/dist/{chunk-P75RZCJW.js → chunk-UPZU6GE4.js} +3 -3
  80. package/dist/{chunk-MCMZMDAC.js → chunk-V2ANDPVT.js} +4 -4
  81. package/dist/{chunk-AK5XEFVZ.js → chunk-VA5FNYMT.js} +26 -13
  82. package/dist/{chunk-IMXMHHMQ.js → chunk-VW6DOEDG.js} +332 -57
  83. package/dist/{chunk-XOXV5GKE.js → chunk-W6RRQCPQ.js} +16 -7
  84. package/dist/{chunk-CYZW7JHJ.js → chunk-WBKFA554.js} +8 -8
  85. package/dist/{chunk-BO7Y52RY.js → chunk-WCXUNS7U.js} +7 -7
  86. package/dist/{chunk-ZGNYYXQ6.js → chunk-WRBAGUNF.js} +3 -3
  87. package/dist/{chunk-FVDGR2ZL.js → chunk-XIVNBFZS.js} +85 -30
  88. package/dist/{chunk-BYMNWQ7O.js → chunk-XPWWI35G.js} +299 -58
  89. package/dist/{chunk-KPXDY6QF.js → chunk-XRZT5WY5.js} +2 -2
  90. package/dist/{chunk-AZ4WMN4W.js → chunk-Y3CBHOR6.js} +2 -2
  91. package/dist/{chunk-VXMFAE2W.js → chunk-YPC6ZR5L.js} +19 -6
  92. package/dist/{chunk-54ODD65L.js → chunk-YQWYVTMC.js} +4 -4
  93. package/dist/{chunk-M2WXEHER.js → chunk-ZA4VCIGV.js} +2 -2
  94. package/dist/{chunk-7BHIY2MW.js → chunk-ZDN3Y73Y.js} +6 -6
  95. package/dist/{chunk-E7GT7O5N.js → chunk-ZWPRK62N.js} +7 -4
  96. package/dist/cli/index.js +38 -37
  97. package/dist/{clio-7VB377CC.js → clio-CMMK4KRR.js} +7 -7
  98. package/dist/{code-nav-YVLCYA7V.js → code-nav-MDZNQS33.js} +7 -7
  99. package/dist/{components-UBWCQSRW.js → components-UCUQ4QXW.js} +4 -4
  100. package/dist/{config-4HVOS65E.js → config-SVM5P5YI.js} +76 -74
  101. package/dist/{configure-PIWO7B24.js → configure-LE3IK2TJ.js} +26 -24
  102. package/dist/{context-IYEHL3WQ.js → context-2OHRKS42.js} +66 -63
  103. package/dist/{context-N6ZE3LGJ.js → context-E3VC7RX5.js} +15 -11
  104. package/dist/{context-KQYIWPWT.js → context-VNCR7KAG.js} +60 -45
  105. package/dist/{context-clear-G4OGZJDS.js → context-clear-BW4O37TG.js} +61 -59
  106. package/dist/context-map-COB37XXN.js +505 -0
  107. package/dist/{context-working-set-BWLF6LJP.js → context-working-set-VDS25HXZ.js} +17 -16
  108. package/dist/{dispatch-runner-2QQAITS3.js → dispatch-runner-5AHT53RF.js} +85 -74
  109. package/dist/{doctor-LHBD36VU.js → doctor-WNNVO6FY.js} +37 -37
  110. package/dist/{eval-C45FYRJ6.js → eval-7G7SGAYO.js} +285 -114
  111. package/dist/{eval-inventory-6DEJPLBF.js → eval-inventory-Y6QRFOH5.js} +4 -4
  112. package/dist/{evidence-6SHONYAF.js → evidence-VD6736FQ.js} +63 -62
  113. package/dist/{evolve-KRKMV72X.js → evolve-AL3NGVRL.js} +62 -61
  114. package/dist/{extensions-KPZ2UHBB.js → extensions-MOVJ32NM.js} +7 -7
  115. package/dist/{fleet-IVTCKDHT.js → fleet-QZHUMAGI.js} +110 -108
  116. package/dist/{fleet-commands-EDWL3IT7.js → fleet-commands-BAYT5FJZ.js} +10 -10
  117. package/dist/{fleet-decisions-YP3YEFGK.js → fleet-decisions-IREVMRU4.js} +7 -6
  118. package/dist/{fleet-graph-ZFWKHY2M.js → fleet-graph-YCTT3HTI.js} +19 -18
  119. package/dist/{fleet-inspect-FVUNCBML.js → fleet-inspect-QVJTDAVB.js} +55 -54
  120. package/dist/{fleet-preflight-UN5XED4R.js → fleet-preflight-25QAFPK4.js} +4 -4
  121. package/dist/{fleet-validate-XOWC4HSX.js → fleet-validate-5O57AAJ7.js} +23 -22
  122. package/dist/{fleet-verify-UN3SODEL.js → fleet-verify-CPH2W2T6.js} +56 -55
  123. package/dist/{fleet-view-TWHJKCN6.js → fleet-view-SWBR3VGQ.js} +55 -54
  124. package/dist/{init-T2QORQ3Y.js → init-J477LKZH.js} +78 -76
  125. package/dist/{interop-IN5I2A66.js → interop-3FCM6XLG.js} +11 -11
  126. package/dist/{library-LSCATDLZ.js → library-QUQEIUG6.js} +28 -27
  127. package/dist/{memory-HYOKAGGJ.js → memory-SGGSEP65.js} +64 -63
  128. package/dist/{models-2GPMFYCM.js → models-HEKUAXXK.js} +49 -43
  129. package/dist/{monitor-E4ASVUJH.js → monitor-HKU57TYQ.js} +61 -60
  130. package/dist/{orchestrator-DDMPR3PY.js → orchestrator-VDFAEFAI.js} +919 -546
  131. package/dist/{panes-E3RUXOW5.js → panes-DN2SSFOH.js} +3 -3
  132. package/dist/{panes-IXKLOKA2.js → panes-TALGNPZT.js} +8 -8
  133. package/dist/{paths-L7LGY6RN.js → paths-NBMFAIEZ.js} +5 -5
  134. package/dist/reset-EAJFFJVB.js +344 -0
  135. package/dist/{resources-OTRSN34L.js → resources-OVKSEFVE.js} +27 -20
  136. package/dist/{run-5DEYH5QK.js → run-7DP7ZF2J.js} +113 -109
  137. package/dist/{share-IHWTLO3M.js → share-WML67FT3.js} +26 -25
  138. package/dist/{skills-IYMXMKW4.js → skills-SG662R2K.js} +39 -31
  139. package/dist/{skills-eval-DROHSJAR.js → skills-eval-VVZEUU46.js} +74 -73
  140. package/dist/{skills-inventory-D7X4L4ZX.js → skills-inventory-I2E23GET.js} +21 -20
  141. package/dist/{slash-commands-QBM7UZ3B.js → slash-commands-S7MBJDQK.js} +35 -34
  142. package/dist/{steer-Z5DO23FJ.js → steer-2LQOMCPB.js} +3 -3
  143. package/dist/{support-U7QOWY26.js → support-CC2UJBJ6.js} +6 -6
  144. package/dist/{targets-P2FUC4IL.js → targets-4QC3HIEW.js} +48 -45
  145. package/dist/{terminal-lease-YREJ3JX2.js → terminal-lease-TUHIJ6Y2.js} +2 -2
  146. package/dist/{tools-5B7RO6MV.js → tools-TFGJICCU.js} +8 -8
  147. package/dist/{trace-YMGMUM6A.js → trace-FXMXUZUF.js} +7 -7
  148. package/dist/uninstall-5PEVOE5B.js +408 -0
  149. package/dist/upgrade-M4WXY6KN.js +303 -0
  150. package/dist/{usage-ME5MPXGX.js → usage-N7ZNVLEM.js} +147 -102
  151. package/dist/{verifiers-BVZ7IWOO.js → verifiers-DJTP4XX6.js} +15 -15
  152. package/dist/{verify-5K7ZKQFC.js → verify-RWE4PPEK.js} +9 -9
  153. package/dist/{wiki-generate-F5W5QTYY.js → wiki-generate-C7IQOXSP.js} +84 -82
  154. package/dist/{with-panes-BYOJCLAM.js → with-panes-4GCGSL7J.js} +9 -9
  155. package/dist/worker/entry.js +61 -60
  156. package/docs/architecture/artifact-placement.md +1 -0
  157. package/docs/architecture/artifact-versions.md +1 -1
  158. package/docs/architecture/context-engine.md +4 -0
  159. package/docs/architecture/middleware-and-components.md +1 -1
  160. package/docs/architecture/model-catalog.md +21 -10
  161. package/docs/architecture/observability.md +12 -1
  162. package/docs/architecture/prompt-envelope-and-tools.md +2 -0
  163. package/docs/architecture/provider-adapter-cookbook.md +63 -0
  164. package/docs/architecture/safety-model.md +15 -5
  165. package/docs/guide/built-in-agents.md +17 -3
  166. package/docs/guide/commands-and-modes.md +1 -1
  167. package/docs/guide/configuration-and-targets.md +97 -9
  168. package/docs/guide/configuration-reference.md +7 -2
  169. package/docs/guide/environment-variables.md +2 -0
  170. package/docs/guide/installation-and-lifecycle.md +37 -4
  171. package/docs/guide/proactive-memory.md +66 -55
  172. package/docs/guide/skills-marketplace.md +18 -0
  173. package/docs/process/development-pipeline.md +34 -1
  174. package/docs/process/eval-runner.md +67 -3
  175. package/evals/behavioral-model.yaml +3 -2
  176. package/package.json +2 -2
  177. package/skills/README.md +7 -5
  178. package/skills/coding/ast-grep/SKILL.md +101 -30
  179. package/skills/coding/ast-grep/evals.md +26 -0
  180. package/skills/coding/coding-standards/SKILL.md +40 -5
  181. package/skills/coding/coding-standards/evals.md +23 -0
  182. package/skills/coding/prototype/SKILL.md +87 -28
  183. package/skills/coding/prototype/evals.md +19 -0
  184. package/skills/coding/tdd/SKILL.md +80 -53
  185. package/skills/coding/tdd/evals.md +20 -0
  186. package/skills/context/context-handoff/SKILL.md +43 -2
  187. package/skills/context/context-handoff/evals.md +44 -0
  188. package/skills/context/context-prime/SKILL.md +45 -15
  189. package/skills/context/context-prime/evals.md +45 -0
  190. package/skills/git/branch-closeout/SKILL.md +132 -0
  191. package/skills/git/branch-closeout/evals.md +133 -0
  192. package/skills/git/branch-closeout/references/closeout-checklist.md +81 -0
  193. package/skills/git/file-ticket/SKILL.md +77 -63
  194. package/skills/git/file-ticket/assets/issue-template.md +22 -0
  195. package/skills/git/file-ticket/evals.md +31 -26
  196. package/skills/git/file-ticket/references/issue-discovery.md +49 -0
  197. package/skills/git/fix-issue/SKILL.md +87 -64
  198. package/skills/git/fix-issue/evals.md +35 -31
  199. package/skills/git/fix-issue/references/diagnosis-and-rca.md +46 -0
  200. package/skills/git/resolve-merge-conflicts/SKILL.md +100 -51
  201. package/skills/git/resolve-merge-conflicts/evals.md +52 -25
  202. package/skills/git/resolve-merge-conflicts/references/conflict-matrix.md +126 -0
  203. package/skills/git/ship/SKILL.md +103 -67
  204. package/skills/git/ship/assets/pr-template.md +21 -0
  205. package/skills/git/ship/evals.md +44 -28
  206. package/skills/git/ship/references/remote-and-branch-policy.md +62 -0
  207. package/skills/git/worktree-create/SKILL.md +80 -50
  208. package/skills/git/worktree-create/evals.md +40 -33
  209. package/skills/git/worktree-create/references/worktree-setup.md +62 -66
  210. package/skills/git/worktree-merge/SKILL.md +112 -65
  211. package/skills/git/worktree-merge/evals.md +42 -34
  212. package/skills/git/worktree-merge/references/merge-strategies.md +52 -0
  213. package/skills/planning/archify/SKILL.md +196 -0
  214. package/skills/planning/archify/evals.md +65 -0
  215. package/skills/planning/architecture/SKILL.md +61 -12
  216. package/skills/planning/architecture/evals.md +65 -0
  217. package/skills/planning/backlog/SKILL.md +130 -14
  218. package/skills/planning/backlog/evals.md +142 -0
  219. package/skills/planning/prd/SKILL.md +46 -6
  220. package/skills/planning/prd/evals.md +54 -0
  221. package/skills/planning/product-intent/SKILL.md +57 -2
  222. package/skills/planning/product-intent/evals.md +70 -0
  223. package/skills/planning/tech-spec/SKILL.md +53 -2
  224. package/skills/planning/tech-spec/evals.md +73 -0
  225. package/skills/registry.yaml +58 -50
  226. package/skills/remote.yaml +13 -0
  227. package/skills/research/arxiv-literature/SKILL.md +76 -18
  228. package/skills/research/arxiv-literature/evals.md +50 -0
  229. package/skills/research/experiment-protocol/SKILL.md +20 -1
  230. package/skills/research/experiment-protocol/evals.md +23 -0
  231. package/skills/research/scientific-debugging/SKILL.md +23 -1
  232. package/skills/research/scientific-debugging/evals.md +18 -0
  233. package/skills/research/scientific-modernization/SKILL.md +26 -1
  234. package/skills/research/scientific-modernization/evals.md +27 -0
  235. package/skills/skill-marketplace.json +63 -28
  236. package/skills/workflow/cut-it/SKILL.md +65 -5
  237. package/skills/workflow/cut-it/evals.md +101 -0
  238. package/skills/workflow/design-council/SKILL.md +117 -27
  239. package/skills/workflow/design-council/evals.md +161 -0
  240. package/skills/workflow/grill-me/SKILL.md +86 -10
  241. package/skills/workflow/grill-me/evals.md +153 -0
  242. package/skills/workflow/workflow-distiller/SKILL.md +76 -17
  243. package/skills/workflow/workflow-distiller/evals.md +118 -0
  244. package/src/cli/configure-interop.ts +105 -13
  245. package/src/cli/configure-oauth.ts +57 -0
  246. package/src/cli/configure-onboarding.ts +980 -0
  247. package/src/cli/configure-target.ts +594 -0
  248. package/src/cli/configure.ts +1082 -528
  249. package/src/cli/context-map.ts +114 -0
  250. package/src/cli/context.ts +4 -0
  251. package/src/cli/index.ts +1 -0
  252. package/src/cli/lifecycle-presenter.ts +436 -0
  253. package/src/cli/models.ts +10 -2
  254. package/src/cli/modes/print.ts +5 -1
  255. package/src/cli/reset.ts +228 -106
  256. package/src/cli/run.ts +7 -2
  257. package/src/cli/select.ts +664 -0
  258. package/src/cli/skills.ts +9 -2
  259. package/src/cli/targets.ts +3 -0
  260. package/src/cli/uninstall.ts +233 -165
  261. package/src/cli/upgrade.ts +204 -149
  262. package/src/cli/usage.ts +86 -27
  263. package/src/cli/validate-model.ts +3 -3
  264. package/src/core/config.ts +56 -0
  265. package/src/core/external-diagnostic.ts +44 -0
  266. package/src/core/gateway-routing.ts +157 -0
  267. package/src/core/safe-exec.ts +17 -2
  268. package/src/core/skill-activation.ts +89 -2
  269. package/src/domains/agents/builtins/world-knowledge.md +31 -0
  270. package/src/domains/agents/catalog.ts +1 -1
  271. package/src/domains/agents/result-contract.ts +70 -0
  272. package/src/domains/context/wiki/map-seed.ts +589 -0
  273. package/src/domains/context/wiki/plan.ts +2 -2
  274. package/src/domains/dispatch/admission.ts +29 -0
  275. package/src/domains/dispatch/agent-candidates.ts +10 -0
  276. package/src/domains/dispatch/budget-envelope.ts +86 -1
  277. package/src/domains/dispatch/capability-match.ts +1 -0
  278. package/src/domains/dispatch/capacity-lease.ts +17 -0
  279. package/src/domains/dispatch/contract.ts +11 -1
  280. package/src/domains/dispatch/extension.ts +134 -29
  281. package/src/domains/dispatch/types.ts +3 -0
  282. package/src/domains/dispatch/worker-model-metadata.ts +38 -0
  283. package/src/domains/eval/metrics/call-ledger-stream.ts +34 -11
  284. package/src/domains/eval/metrics/token-stream.ts +201 -31
  285. package/src/domains/eval/metrics/tracked.ts +40 -4
  286. package/src/domains/eval/runners/clio-run.ts +5 -2
  287. package/src/domains/eval/schema/suite.ts +28 -0
  288. package/src/domains/eval/schema/verdict.ts +2 -2
  289. package/src/domains/eval/suites/resolve.ts +13 -1
  290. package/src/domains/eval/suites/run.ts +24 -3
  291. package/src/domains/interop/registry.ts +6 -2
  292. package/src/domains/interop/types.ts +4 -0
  293. package/src/domains/lifecycle/migrations/index.ts +4 -0
  294. package/src/domains/memory/task-memory-policy.ts +70 -26
  295. package/src/domains/memory/task-memory-telemetry.ts +1 -0
  296. package/src/domains/middleware/index.ts +0 -1
  297. package/src/domains/middleware/marketplace-offer.ts +3 -35
  298. package/src/domains/middleware/memory-intervention.ts +127 -32
  299. package/src/domains/middleware/memory-step-endpoint.ts +3 -2
  300. package/src/domains/middleware/skills-reminder.ts +31 -2
  301. package/src/domains/observability/compaction-usage.ts +118 -0
  302. package/src/domains/observability/cost.ts +1 -1
  303. package/src/domains/observability/extension.ts +6 -1
  304. package/src/domains/observability/out-of-turn-usage.ts +52 -21
  305. package/src/domains/providers/contract.ts +4 -1
  306. package/src/domains/providers/extension.ts +40 -9
  307. package/src/domains/providers/model-capabilities.ts +9 -0
  308. package/src/domains/providers/model-discovery.ts +2 -0
  309. package/src/domains/providers/model-runtime-capabilities.ts +15 -5
  310. package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +32 -12
  311. package/src/domains/providers/runtimes/antigravity/antigravity-code.ts +225 -45
  312. package/src/domains/providers/runtimes/common/lmstudio-http.ts +6 -2
  313. package/src/domains/providers/runtimes/common/local-synth.ts +2 -0
  314. package/src/domains/providers/runtimes/protocol/litellm.ts +119 -29
  315. package/src/domains/providers/support.ts +11 -5
  316. package/src/domains/providers/target-model-cache.ts +25 -2
  317. package/src/domains/providers/types/capability-flags.ts +2 -0
  318. package/src/domains/providers/types/runtime-descriptor.ts +20 -1
  319. package/src/domains/providers/types/target-descriptor.ts +19 -0
  320. package/src/domains/resources/index.ts +3 -0
  321. package/src/domains/resources/skills/install.ts +72 -7
  322. package/src/domains/resources/skills/loader.ts +7 -0
  323. package/src/domains/resources/skills/marketplace.ts +63 -11
  324. package/src/domains/safety/autonomy.ts +15 -0
  325. package/src/domains/safety/index.ts +1 -0
  326. package/src/domains/safety/path-policy.ts +1 -1
  327. package/src/domains/safety/policy-engine.ts +34 -11
  328. package/src/domains/safety/protected-artifacts.ts +191 -88
  329. package/src/domains/safety/run-effects.ts +2 -22
  330. package/src/domains/safety/skill-authority.ts +55 -0
  331. package/src/domains/session/compaction/compact.ts +72 -22
  332. package/src/domains/session/entries.ts +6 -0
  333. package/src/domains/session/usage.ts +3 -3
  334. package/src/engine/agent.ts +13 -3
  335. package/src/engine/ai.ts +26 -8
  336. package/src/engine/antigravity/subprocess-runtime.ts +386 -120
  337. package/src/engine/api-registry.ts +3 -0
  338. package/src/engine/apis/openai-completions.ts +117 -14
  339. package/src/engine/external-subprocess.ts +114 -6
  340. package/src/entry/background-model-metadata.ts +18 -0
  341. package/src/entry/compaction-prompt.ts +57 -0
  342. package/src/entry/orchestrator.ts +405 -216
  343. package/src/entry/task-memory-lifecycle.ts +35 -0
  344. package/src/interactive/chat-loop-messages.ts +13 -4
  345. package/src/interactive/chat-loop.ts +65 -2
  346. package/src/interactive/chat-renderer.ts +1 -0
  347. package/src/interactive/cost-overlay.ts +26 -2
  348. package/src/interactive/interactive-slash-runtime.ts +2 -1
  349. package/src/interactive/renderers/worker-entry.ts +32 -0
  350. package/src/interactive/slash-commands.ts +24 -6
  351. package/src/interactive/theme/labels.ts +19 -13
  352. package/src/interactive/turn-context.ts +9 -5
  353. package/src/interactive/turn-recovery.ts +8 -0
  354. package/src/interactive/turn-runtime.ts +27 -11
  355. package/src/interactive/turn-state.ts +7 -0
  356. package/src/interactive/worker-receipts.ts +1 -0
  357. package/src/interactive/worker-stream.ts +6 -1
  358. package/src/tools/context/index.ts +30 -9
  359. package/src/tools/dispatch-arguments.ts +1 -0
  360. package/src/tools/dispatch-event-text.ts +10 -0
  361. package/src/tools/dispatch-plan.ts +1 -0
  362. package/src/tools/dispatch-runner.ts +12 -0
  363. package/src/tools/registry.ts +11 -5
  364. package/src/tools/worker-evidence.ts +3 -1
  365. package/src/worker/spec-contract.ts +4 -0
  366. package/dist/chunk-2Z2IKEXI.js +0 -1554
  367. package/dist/reset-OAQP3W4O.js +0 -230
  368. package/dist/uninstall-N34PCTGJ.js +0 -331
  369. package/dist/upgrade-PXK3S2YM.js +0 -325
@@ -1,60 +1,73 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
3
  runContextClear
4
- } from "./chunk-SSEYRH53.js";
5
- import "./chunk-AZ4WMN4W.js";
6
- import "./chunk-JBCS7CRR.js";
7
- import "./chunk-LCGCVYZ4.js";
4
+ } from "./chunk-KK4JZPBQ.js";
5
+ import "./chunk-R6Q67RJH.js";
6
+ import "./chunk-Y3CBHOR6.js";
7
+ import "./chunk-BEPZRGGU.js";
8
8
  import "./chunk-NDINPTJ4.js";
9
9
  import "./chunk-MXHC5QYU.js";
10
- import "./chunk-I66ZTYNP.js";
11
- import "./chunk-ZGNYYXQ6.js";
12
- import "./chunk-B74PXLU7.js";
13
- import "./chunk-X7IARSHT.js";
14
- import "./chunk-KPXDY6QF.js";
15
- import "./chunk-W6NIE6OW.js";
16
- import "./chunk-DZAW46HP.js";
10
+ import "./chunk-AF4YM7Z4.js";
11
+ import "./chunk-B4VEBZKF.js";
12
+ import "./chunk-E3TPLWFX.js";
13
+ import "./chunk-WRBAGUNF.js";
14
+ import "./chunk-IWT4SF4R.js";
15
+ import "./chunk-JKKCYP3C.js";
16
+ import "./chunk-FTMGRKEF.js";
17
+ import "./chunk-XRZT5WY5.js";
17
18
  import "./chunk-RVG5JXAL.js";
18
- import "./chunk-3DPEIQKN.js";
19
- import "./chunk-5PFYMY2V.js";
20
19
  import "./chunk-VIA6RFQZ.js";
21
20
  import "./chunk-T56WDKA5.js";
22
21
  import "./chunk-W6GROXXM.js";
23
- import "./chunk-JVCV3ICN.js";
24
- import "./chunk-4JDLP6ZS.js";
22
+ import "./chunk-2VIKGWFZ.js";
23
+ import "./chunk-RKKLTLYB.js";
24
+ import "./chunk-6PTFB5VS.js";
25
25
  import "./chunk-TXOTCRLG.js";
26
+ import "./chunk-LCGCVYZ4.js";
27
+ import "./chunk-3DPEIQKN.js";
28
+ import "./chunk-7DRAWPTZ.js";
29
+ import "./chunk-5MEZN6CB.js";
30
+ import "./chunk-JVCV3ICN.js";
26
31
  import "./chunk-HVDIIIQW.js";
27
- import "./chunk-3F7VUY77.js";
28
- import "./chunk-RKKLTLYB.js";
29
- import "./chunk-HLAFFSEK.js";
30
- import "./chunk-77QIVUZB.js";
31
- import "./chunk-I66EAJFY.js";
32
+ import "./chunk-2WZ546HR.js";
32
33
  import "./chunk-VG7TBQIY.js";
33
- import "./chunk-IKSLQ4XV.js";
34
- import "./chunk-HIICAHCJ.js";
35
- import "./chunk-Q4XWMHX6.js";
36
- import "./chunk-IDNA72AH.js";
37
- import "./chunk-FVDGR2ZL.js";
34
+ import "./chunk-PAJQJ7BS.js";
35
+ import "./chunk-EKCHAPYA.js";
36
+ import "./chunk-L47TF46W.js";
37
+ import "./chunk-RSJ25QSL.js";
38
+ import "./chunk-XIVNBFZS.js";
38
39
  import "./chunk-NEDJ26B5.js";
39
40
  import "./chunk-42FMPA75.js";
40
41
  import "./chunk-H7IXIC72.js";
41
- import "./chunk-VN3SHNBN.js";
42
+ import "./chunk-7DICMOS6.js";
42
43
  import "./chunk-OQE5J4C6.js";
43
- import "./chunk-FSP7CMNU.js";
44
- import "./chunk-B7HM5Z7T.js";
45
- import "./chunk-OZNBF4L3.js";
46
- import "./chunk-4BJ5BYCE.js";
47
- import "./chunk-6XLNIQDB.js";
48
- import "./chunk-NMJXSHBJ.js";
49
- import "./chunk-VAVR4IJY.js";
50
- import "./chunk-2LEAKD4C.js";
51
44
  import "./chunk-HHV2GANA.js";
52
- import "./chunk-PGF63K6I.js";
53
- import "./chunk-IKOZFYBN.js";
45
+ import "./chunk-B4OAX3SI.js";
46
+ import "./chunk-I7ZPNEJM.js";
47
+ import "./chunk-GYV6VZOC.js";
54
48
  import "./chunk-UL3WSD3F.js";
49
+ import "./chunk-JDAY6FIL.js";
50
+ import "./chunk-OZNBF4L3.js";
55
51
  import "./chunk-ECH6PKUQ.js";
52
+ import "./chunk-6XLNIQDB.js";
56
53
  import "./chunk-5B2AEOW5.js";
54
+ import "./chunk-VAVR4IJY.js";
55
+ import "./chunk-JGRC33J2.js";
56
+ import "./chunk-4BJ5BYCE.js";
57
57
  import "./chunk-K6BSR66V.js";
58
+ import "./chunk-XPWWI35G.js";
59
+ import "./chunk-CFGTUFWB.js";
60
+ import "./chunk-NZMNUPZZ.js";
61
+ import "./chunk-2JH2WHGE.js";
62
+ import "./chunk-HAXOFFRH.js";
63
+ import "./chunk-R346GLFC.js";
64
+ import "./chunk-KXDSS5WJ.js";
65
+ import "./chunk-GHS5EBTQ.js";
66
+ import "./chunk-D7E7WCDF.js";
67
+ import "./chunk-BTK3SSSK.js";
68
+ import "./chunk-NMJXSHBJ.js";
69
+ import "./chunk-PMZVFWSR.js";
70
+ import "./chunk-F4EKGO4N.js";
58
71
  import "./chunk-BWH6N36D.js";
59
72
  import "./chunk-UUVG37B4.js";
60
73
  import "./chunk-LBMZMYH2.js";
@@ -62,39 +75,28 @@ import "./chunk-XAKHZX5N.js";
62
75
  import "./chunk-33YXPOE3.js";
63
76
  import "./chunk-7CR24IG7.js";
64
77
  import "./chunk-XPLRXC72.js";
65
- import "./chunk-BYMNWQ7O.js";
66
- import "./chunk-CFGTUFWB.js";
67
- import "./chunk-72GZI5EV.js";
68
- import "./chunk-CWVRRIEI.js";
69
- import "./chunk-MQXIVJ35.js";
70
- import "./chunk-R346GLFC.js";
71
- import "./chunk-PMZVFWSR.js";
72
- import "./chunk-BTK3SSSK.js";
73
- import "./chunk-IHXBNWMM.js";
74
- import "./chunk-34BHNEE3.js";
75
- import "./chunk-D7E7WCDF.js";
76
- import "./chunk-HJWWJ6IL.js";
77
- import "./chunk-F4EKGO4N.js";
78
- import "./chunk-JIEGK6UF.js";
79
- import "./chunk-EBY63B7G.js";
80
- import "./chunk-6EJMN2Y3.js";
81
78
  import "./chunk-IWHMRKLL.js";
82
- import "./chunk-IMXMHHMQ.js";
79
+ import "./chunk-VW6DOEDG.js";
83
80
  import "./chunk-UXCU4E3T.js";
84
81
  import "./chunk-LL4KHSZI.js";
82
+ import "./chunk-JSC3U7TI.js";
85
83
  import "./chunk-S66XZJOF.js";
86
- import "./chunk-CDNVLKUX.js";
87
- import "./chunk-WNP7O5WZ.js";
84
+ import "./chunk-JIEGK6UF.js";
85
+ import "./chunk-EBY63B7G.js";
86
+ import "./chunk-6EJMN2Y3.js";
87
+ import "./chunk-LLDJM5XK.js";
88
+ import "./chunk-ID64D7PE.js";
88
89
  import "./chunk-336NSSKI.js";
89
90
  import "./chunk-IKCO5N3L.js";
90
91
  import "./chunk-3I7MS7N2.js";
91
92
  import "./chunk-APJ265NV.js";
92
- import "./chunk-BYP5D4HI.js";
93
93
  import "./chunk-WEPFGWHJ.js";
94
94
  import "./chunk-NUGM5KR6.js";
95
- import "./chunk-O42A54GG.js";
96
- import "./chunk-VXMFAE2W.js";
95
+ import "./chunk-5OIVVPHF.js";
96
+ import "./chunk-YPC6ZR5L.js";
97
97
  import "./chunk-YXLYO42X.js";
98
+ import "./chunk-2LEAKD4C.js";
99
+ import "./chunk-BYP5D4HI.js";
98
100
  import {
99
101
  init_esm_shims
100
102
  } from "./chunk-3R73A4XB.js";
@@ -171,4 +173,4 @@ async function runContextClearCommand(args) {
171
173
  export {
172
174
  runContextClearCommand
173
175
  };
174
- //# sourceMappingURL=context-clear-G4OGZJDS.js.map
176
+ //# sourceMappingURL=context-clear-BW4O37TG.js.map
@@ -0,0 +1,505 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ WIKI_DEPTH_STRATEGY,
4
+ areaForPath,
5
+ classifyDepth
6
+ } from "./chunk-R6Q67RJH.js";
7
+ import {
8
+ CLIO_ARTIFACT_DIR
9
+ } from "./chunk-GYV6VZOC.js";
10
+ import {
11
+ readCodewiki
12
+ } from "./chunk-LBMZMYH2.js";
13
+ import "./chunk-WEPFGWHJ.js";
14
+ import {
15
+ init_esm_shims
16
+ } from "./chunk-3R73A4XB.js";
17
+
18
+ // src/cli/context-map.ts
19
+ init_esm_shims();
20
+ import { execFileSync } from "node:child_process";
21
+ import { mkdirSync, writeFileSync } from "node:fs";
22
+ import path from "node:path";
23
+
24
+ // src/domains/context/wiki/map-seed.ts
25
+ init_esm_shims();
26
+ var MAX_SEED_COMPONENTS = 12;
27
+ var MAX_SEED_EXTERNALS = 3;
28
+ var MAX_SEED_CONNECTIONS = 16;
29
+ var MAX_SEED_SOURCES = 3;
30
+ var GRID_COLS = 4;
31
+ var CELL_W = 220;
32
+ var CELL_H = 72;
33
+ var GAP_X = 70;
34
+ var LANE_STEP = 16;
35
+ var LANE_MARGIN = 24;
36
+ var LABEL_BESIDE_OFFSET = 48;
37
+ var GITHUB_REPOSITORY_URL = /^https:\/\/github\.com\/[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+(?:\.git)?\/?$/;
38
+ var FULL_REVISION = /^[a-fA-F0-9]{40}$/;
39
+ var DATABASE_DIR = /^(?:store|stores|storage|persistence|persist|db|database|databases|repository|repositories|dao)$/i;
40
+ function areaId(key) {
41
+ const slug = key.replace(/[^A-Za-z0-9]+/g, "-").replace(/^-+|-+$/g, "").toLowerCase();
42
+ const body = slug.length > 0 ? slug : "root";
43
+ return /^[a-z]/.test(body) ? body : `a-${body}`;
44
+ }
45
+ function uniqueIds(preferred) {
46
+ const reserved = new Set(preferred);
47
+ const used = /* @__PURE__ */ new Set();
48
+ return preferred.map((base) => {
49
+ let id = base;
50
+ if (used.has(id)) {
51
+ let suffix = 2;
52
+ do {
53
+ id = `${base}-${suffix++}`;
54
+ } while (reserved.has(id) || used.has(id));
55
+ }
56
+ used.add(id);
57
+ return id;
58
+ });
59
+ }
60
+ function componentTypeFor(area) {
61
+ const last = area.key.split("/").filter(Boolean).at(-1) ?? "";
62
+ if (DATABASE_DIR.test(last)) return "database";
63
+ if (area.files.some((file) => file.role === "entry")) return "frontend";
64
+ return "backend";
65
+ }
66
+ function collectAreas(files, areaDepth) {
67
+ const byKey = /* @__PURE__ */ new Map();
68
+ for (const file of files) {
69
+ const key = areaForPath(file.path, areaDepth);
70
+ const area = byKey.get(key) ?? { key, files: [], loc: 0 };
71
+ area.files.push(file);
72
+ area.loc += Math.max(0, file.loc);
73
+ byKey.set(key, area);
74
+ }
75
+ return [...byKey.values()].sort(
76
+ (a, b) => b.files.length - a.files.length || b.loc - a.loc || a.key.localeCompare(b.key)
77
+ );
78
+ }
79
+ function firstSymbolLines(symbols) {
80
+ const lines = /* @__PURE__ */ new Map();
81
+ for (const symbol of symbols) {
82
+ if (!Number.isInteger(symbol.line) || symbol.line < 1) continue;
83
+ const current = lines.get(symbol.fileId);
84
+ if (current === void 0 || symbol.line < current) lines.set(symbol.fileId, symbol.line);
85
+ }
86
+ return lines;
87
+ }
88
+ function sourcesFor(area, lines) {
89
+ return [...area.files].sort((a, b) => b.loc - a.loc || a.path.localeCompare(b.path)).slice(0, MAX_SEED_SOURCES).map((file) => {
90
+ const line = lines.get(file.id);
91
+ return line === void 0 ? { path: file.path } : { line, path: file.path };
92
+ });
93
+ }
94
+ function isInternalEdge(edge) {
95
+ return "toFileId" in edge;
96
+ }
97
+ function externalPackage(specifier) {
98
+ if (specifier.startsWith("node:") || NODE_BUILTINS.has(specifier)) return null;
99
+ const segments = specifier.split("/");
100
+ if (specifier.startsWith("@")) return segments.length >= 2 ? `${segments[0]}/${segments[1]}` : null;
101
+ return segments[0] && segments[0].length > 0 ? segments[0] : null;
102
+ }
103
+ var NODE_BUILTINS = /* @__PURE__ */ new Set([
104
+ "assert",
105
+ "buffer",
106
+ "child_process",
107
+ "crypto",
108
+ "events",
109
+ "fs",
110
+ "http",
111
+ "https",
112
+ "module",
113
+ "net",
114
+ "os",
115
+ "path",
116
+ "process",
117
+ "readline",
118
+ "stream",
119
+ "url",
120
+ "util",
121
+ "zlib"
122
+ ]);
123
+ function serializeArchitectureSeed(seed) {
124
+ const sortKeys = (value) => {
125
+ if (Array.isArray(value)) return value.map(sortKeys);
126
+ if (value && typeof value === "object") {
127
+ return Object.fromEntries(
128
+ Object.keys(value).sort().map((key) => [key, sortKeys(value[key])])
129
+ );
130
+ }
131
+ return value;
132
+ };
133
+ return `${JSON.stringify(sortKeys(seed), null, 2)}
134
+ `;
135
+ }
136
+ function assignRows(nodes, edges) {
137
+ const ids = nodes.filter((node) => node.type !== "external").map((node) => node.id);
138
+ const successors = new Map(ids.map((id) => [id, /* @__PURE__ */ new Set()]));
139
+ const reaches = (from, to) => {
140
+ const stack = [from];
141
+ const seen = /* @__PURE__ */ new Set();
142
+ while (stack.length > 0) {
143
+ const current = stack.pop();
144
+ if (current === to) return true;
145
+ if (seen.has(current)) continue;
146
+ seen.add(current);
147
+ for (const next of successors.get(current) ?? []) stack.push(next);
148
+ }
149
+ return false;
150
+ };
151
+ for (const edge of edges) {
152
+ if (!successors.has(edge.from) || !successors.has(edge.to)) continue;
153
+ if (reaches(edge.to, edge.from)) continue;
154
+ successors.get(edge.from)?.add(edge.to);
155
+ }
156
+ const layer = /* @__PURE__ */ new Map();
157
+ const depth = (id) => {
158
+ const known = layer.get(id);
159
+ if (known !== void 0) return known;
160
+ let best = 0;
161
+ for (const node of ids) {
162
+ if (successors.get(node)?.has(id)) best = Math.max(best, depth(node) + 1);
163
+ }
164
+ layer.set(id, best);
165
+ return best;
166
+ };
167
+ for (const id of ids) depth(id);
168
+ const rows = /* @__PURE__ */ new Map();
169
+ let row = 0;
170
+ const layers = [...new Set(ids.map((id) => layer.get(id)))].sort((a, b) => a - b);
171
+ for (const current of layers) {
172
+ const members = ids.filter((id) => layer.get(id) === current);
173
+ members.forEach((id, index) => {
174
+ rows.set(id, row + Math.floor(index / GRID_COLS));
175
+ });
176
+ row += Math.ceil(members.length / GRID_COLS);
177
+ }
178
+ const externals = nodes.filter((node) => node.type === "external");
179
+ externals.forEach((node, index) => {
180
+ rows.set(node.id, row + Math.floor(index / GRID_COLS));
181
+ });
182
+ return rows;
183
+ }
184
+ function placeAndRoute(nodes, edges) {
185
+ const rowOf = assignRows(nodes, edges);
186
+ const colOf = /* @__PURE__ */ new Map();
187
+ const used = /* @__PURE__ */ new Map();
188
+ for (const node of nodes) {
189
+ const row = rowOf.get(node.id);
190
+ const col = used.get(row) ?? 0;
191
+ colOf.set(node.id, col);
192
+ used.set(row, col + 1);
193
+ }
194
+ const gapLanes = /* @__PURE__ */ new Map();
195
+ const leftLanes = { count: 0 };
196
+ const rightLanes = { count: 0 };
197
+ const takeGap = (row) => {
198
+ const lane = gapLanes.get(row) ?? 0;
199
+ gapLanes.set(row, lane + 1);
200
+ return lane;
201
+ };
202
+ const plans = edges.map((edge) => {
203
+ const fromRow = rowOf.get(edge.from);
204
+ const toRow = rowOf.get(edge.to);
205
+ const sameCol = colOf.get(edge.from) === colOf.get(edge.to);
206
+ if (fromRow === toRow) {
207
+ return { edge, fromSide: "bottom", toSide: "bottom", straight: false, gaps: [[fromRow, takeGap(fromRow)]] };
208
+ }
209
+ if (fromRow < toRow) {
210
+ if (toRow === fromRow + 1) {
211
+ return {
212
+ edge,
213
+ fromSide: "bottom",
214
+ toSide: "top",
215
+ straight: sameCol,
216
+ gaps: sameCol ? [] : [[fromRow, takeGap(fromRow)]]
217
+ };
218
+ }
219
+ return {
220
+ edge,
221
+ fromSide: "bottom",
222
+ toSide: "top",
223
+ straight: false,
224
+ gaps: [
225
+ [fromRow, takeGap(fromRow)],
226
+ [toRow - 1, takeGap(toRow - 1)]
227
+ ],
228
+ margin: { side: "left", lane: leftLanes.count++ }
229
+ };
230
+ }
231
+ if (fromRow === toRow + 1) {
232
+ return {
233
+ edge,
234
+ fromSide: "top",
235
+ toSide: "bottom",
236
+ straight: sameCol,
237
+ gaps: sameCol ? [] : [[toRow, takeGap(toRow)]]
238
+ };
239
+ }
240
+ return {
241
+ edge,
242
+ fromSide: "top",
243
+ toSide: "bottom",
244
+ straight: false,
245
+ gaps: [
246
+ [fromRow - 1, takeGap(fromRow - 1)],
247
+ [toRow, takeGap(toRow)]
248
+ ],
249
+ margin: { side: "right", lane: rightLanes.count++ }
250
+ };
251
+ });
252
+ const maxGapLanes = Math.max(0, ...gapLanes.values());
253
+ const gapY = Math.max(90, 2 * LANE_MARGIN + Math.max(1, maxGapLanes) * LANE_STEP);
254
+ const originX = LANE_MARGIN + Math.max(1, leftLanes.count) * LANE_STEP + LANE_MARGIN;
255
+ const layout = {
256
+ mode: "grid",
257
+ origin: [originX, 80],
258
+ cols: GRID_COLS,
259
+ cellW: CELL_W,
260
+ cellH: CELL_H,
261
+ gapX: GAP_X,
262
+ gapY
263
+ };
264
+ const centerX = (id) => originX + colOf.get(id) * (CELL_W + GAP_X) + CELL_W / 2;
265
+ const topY = (row) => layout.origin[1] + row * (CELL_H + gapY);
266
+ const laneY = (row, lane) => topY(row) + CELL_H + LANE_MARGIN + lane * LANE_STEP;
267
+ const gridRight = originX + GRID_COLS * (CELL_W + GAP_X) - GAP_X;
268
+ const marginX = (margin) => margin.side === "left" ? originX - LANE_MARGIN - margin.lane * LANE_STEP : gridRight + LANE_MARGIN + margin.lane * LANE_STEP;
269
+ const components = nodes.map((node) => ({
270
+ id: node.id,
271
+ type: node.type,
272
+ label: node.label,
273
+ sublabel: node.sublabel,
274
+ row: rowOf.get(node.id),
275
+ col: colOf.get(node.id),
276
+ size: [CELL_W, CELL_H],
277
+ ...node.sources ? { sources: node.sources } : {}
278
+ }));
279
+ const connectionIds = uniqueIds(plans.map(({ edge }) => `${edge.from}-to-${edge.to}`));
280
+ const connections = plans.map((plan, index) => {
281
+ const { edge } = plan;
282
+ const base = {
283
+ id: connectionIds[index],
284
+ from: edge.from,
285
+ to: edge.to,
286
+ label: `${edge.weight} import${edge.weight === 1 ? "" : "s"}`,
287
+ fromSide: plan.fromSide,
288
+ toSide: plan.toSide
289
+ };
290
+ const xa = centerX(edge.from);
291
+ const xb = centerX(edge.to);
292
+ if (plan.straight) {
293
+ const upperRow = Math.min(rowOf.get(edge.from), rowOf.get(edge.to));
294
+ const gapMid = topY(upperRow) + CELL_H + gapY / 2;
295
+ return { ...base, route: "straight", labelAt: [xa + LABEL_BESIDE_OFFSET, gapMid] };
296
+ }
297
+ const [first, second] = plan.gaps;
298
+ if (!first) return { ...base, route: "straight" };
299
+ const y1 = laneY(first[0], first[1]);
300
+ if (!plan.margin || !second)
301
+ return {
302
+ ...base,
303
+ via: [
304
+ [xa, y1],
305
+ [xb, y1]
306
+ ]
307
+ };
308
+ const y2 = laneY(second[0], second[1]);
309
+ const mx = marginX(plan.margin);
310
+ return {
311
+ ...base,
312
+ via: [
313
+ [xa, y1],
314
+ [mx, y1],
315
+ [mx, y2],
316
+ [xb, y2]
317
+ ]
318
+ };
319
+ });
320
+ return { layout, components, connections };
321
+ }
322
+ function buildArchitectureSeed(codewiki, options) {
323
+ const source = codewiki.files.filter((file) => file.lang !== "config");
324
+ const sourceLines = source.reduce((total, file) => total + Math.max(0, file.loc), 0);
325
+ const { areaDepth } = WIKI_DEPTH_STRATEGY[classifyDepth(source.length, sourceLines)];
326
+ const areas = collectAreas(source, areaDepth).slice(0, MAX_SEED_COMPONENTS);
327
+ const lines = firstSymbolLines(codewiki.symbols);
328
+ const areaByFile = /* @__PURE__ */ new Map();
329
+ for (const area of areas) for (const file of area.files) areaByFile.set(file.id, area.key);
330
+ const repository = options.repository;
331
+ const pinned = repository && GITHUB_REPOSITORY_URL.test(repository.url) && FULL_REVISION.test(repository.revision) ? { url: repository.url, revision: repository.revision.toLowerCase() } : void 0;
332
+ const externalCounts = /* @__PURE__ */ new Map();
333
+ const externalWeights = /* @__PURE__ */ new Map();
334
+ for (const edge of codewiki.edges) {
335
+ if (isInternalEdge(edge)) continue;
336
+ const fromArea = areaByFile.get(edge.fileId);
337
+ const pkg = externalPackage(edge.externalModule);
338
+ if (fromArea === void 0 || pkg === null) continue;
339
+ externalCounts.set(pkg, (externalCounts.get(pkg) ?? 0) + 1);
340
+ const key = `${fromArea}\0${pkg}`;
341
+ externalWeights.set(key, (externalWeights.get(key) ?? 0) + 1);
342
+ }
343
+ const externals = [...externalCounts.entries()].sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0])).slice(0, MAX_SEED_EXTERNALS).map(([module]) => module);
344
+ const componentIds = uniqueIds([
345
+ ...areas.map((area) => areaId(area.key)),
346
+ ...externals.map((module) => `ext-${areaId(module)}`)
347
+ ]);
348
+ const idByArea = new Map(areas.map((area, index) => [area.key, componentIds[index]]));
349
+ const idByExternal = new Map(externals.map((module, index) => [module, componentIds[areas.length + index]]));
350
+ const nodes = areas.map((area) => {
351
+ const sources = pinned ? sourcesFor(area, lines) : [];
352
+ return {
353
+ id: idByArea.get(area.key),
354
+ type: componentTypeFor(area),
355
+ label: area.key,
356
+ sublabel: `${area.files.length} file${area.files.length === 1 ? "" : "s"}, ${area.loc} LOC`,
357
+ ...sources.length > 0 ? { sources } : {}
358
+ };
359
+ });
360
+ for (const module of externals) {
361
+ const count = externalCounts.get(module) ?? 0;
362
+ nodes.push({
363
+ id: idByExternal.get(module),
364
+ type: "external",
365
+ label: module,
366
+ sublabel: `${count} import${count === 1 ? "" : "s"}`
367
+ });
368
+ }
369
+ const weights = /* @__PURE__ */ new Map();
370
+ for (const edge of codewiki.edges) {
371
+ if (!isInternalEdge(edge)) continue;
372
+ const from = areaByFile.get(edge.fileId);
373
+ const to = areaByFile.get(edge.toFileId);
374
+ if (from === void 0 || to === void 0 || from === to) continue;
375
+ const key = `${from}\0${to}\0internal`;
376
+ weights.set(key, (weights.get(key) ?? 0) + 1);
377
+ }
378
+ for (const module of externals) {
379
+ for (const area of areas) {
380
+ const weight = externalWeights.get(`${area.key}\0${module}`);
381
+ if (weight) weights.set(`${area.key}\0${module}\0external`, weight);
382
+ }
383
+ }
384
+ const edges = [...weights.entries()].sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0])).slice(0, MAX_SEED_CONNECTIONS).map(([key, weight]) => {
385
+ const [fromKey, toKey, kind] = key.split("\0");
386
+ const from = idByArea.get(fromKey);
387
+ const to = (kind === "internal" ? idByArea : idByExternal).get(toKey);
388
+ return { from, to, weight };
389
+ });
390
+ const { layout, components, connections } = placeAndRoute(nodes, edges);
391
+ const meta = {
392
+ title: options.title,
393
+ quality_profile: "standard",
394
+ ...pinned ? { repository: pinned } : {}
395
+ };
396
+ return {
397
+ schema_version: 1,
398
+ diagram_type: "architecture",
399
+ meta,
400
+ layout,
401
+ components,
402
+ connections
403
+ };
404
+ }
405
+
406
+ // src/cli/context-map.ts
407
+ var HELP = `Usage:
408
+ clio-coder context map [--out <path>] [--json]
409
+
410
+ Write an archify architecture seed for the current repository from the codewiki
411
+ index, without model calls. The seed is the starting spec for the archify skill:
412
+ components are the largest directory areas, connections are collapsed import
413
+ edges, and sources point at indexed files and lines.
414
+
415
+ Options:
416
+ --out <path> where to write the seed (default: ${CLIO_ARTIFACT_DIR}/maps/<repo>.architecture.json)
417
+ --json print machine-readable details about the written seed
418
+ `;
419
+ function defaultMapSeedPath(cwd) {
420
+ return path.join(cwd, CLIO_ARTIFACT_DIR, "maps", `${path.basename(cwd)}.architecture.json`);
421
+ }
422
+ function gitValue(cwd, args) {
423
+ try {
424
+ const out = execFileSync("git", args, { cwd, timeout: 5e3, stdio: ["ignore", "pipe", "ignore"] }).toString("utf8").trim();
425
+ return out.length > 0 ? out : null;
426
+ } catch {
427
+ return null;
428
+ }
429
+ }
430
+ function repositoryFacts(cwd) {
431
+ const remote = gitValue(cwd, ["remote", "get-url", "origin"]);
432
+ const revision = gitValue(cwd, ["rev-parse", "--verify", "HEAD"]);
433
+ if (!remote || !revision) return void 0;
434
+ let url = remote.endsWith(".git") ? remote.slice(0, -4) : remote;
435
+ const ssh = /^git@([^:]+):(.+)$/.exec(url);
436
+ if (ssh) url = `https://${ssh[1]}/${ssh[2]}`;
437
+ return { url, revision };
438
+ }
439
+ async function runContextMapCommand(args) {
440
+ if (args.includes("--help") || args.includes("-h")) {
441
+ process.stdout.write(HELP);
442
+ return 0;
443
+ }
444
+ let out = null;
445
+ let json = false;
446
+ for (let index = 0; index < args.length; index += 1) {
447
+ const arg = args[index];
448
+ if (arg === "--json") {
449
+ json = true;
450
+ continue;
451
+ }
452
+ if (arg === "--out") {
453
+ const value = args[index + 1];
454
+ if (!value || value.startsWith("--")) {
455
+ process.stderr.write("clio-coder context map: --out requires a path\n");
456
+ return 2;
457
+ }
458
+ out = value;
459
+ index += 1;
460
+ continue;
461
+ }
462
+ process.stderr.write(`clio-coder context map: unknown flag ${arg}
463
+ `);
464
+ return 2;
465
+ }
466
+ const cwd = process.cwd();
467
+ const codewiki = readCodewiki(cwd);
468
+ if (!codewiki) {
469
+ process.stderr.write(
470
+ "clio-coder context map: no codewiki index in .clio-coder/codewiki.json; run `clio-coder context index` first\n"
471
+ );
472
+ return 1;
473
+ }
474
+ const seed = buildArchitectureSeed(codewiki, {
475
+ title: path.basename(cwd),
476
+ repository: repositoryFacts(cwd)
477
+ });
478
+ const target = out ? path.resolve(cwd, out) : defaultMapSeedPath(cwd);
479
+ mkdirSync(path.dirname(target), { recursive: true });
480
+ writeFileSync(target, serializeArchitectureSeed(seed), "utf8");
481
+ const payload = {
482
+ path: target,
483
+ components: seed.components.length,
484
+ connections: seed.connections.length,
485
+ repository: seed.meta.repository ?? null
486
+ };
487
+ if (json) {
488
+ process.stdout.write(`${JSON.stringify(payload, null, 2)}
489
+ `);
490
+ return 0;
491
+ }
492
+ process.stdout.write(
493
+ [
494
+ `clio-coder context map wrote ${target}`,
495
+ ` ${payload.components} components, ${payload.connections} connections${payload.repository ? `, sources pinned at ${payload.repository.revision.slice(0, 12)}` : "; no GitHub origin at a full revision, so no source citations"}`,
496
+ payload.repository ? " next: validate and deliver it with the archify skill, passing --repo-root ." : " next: validate and deliver it with the archify skill (without --repo-root)",
497
+ ""
498
+ ].join("\n")
499
+ );
500
+ return 0;
501
+ }
502
+ export {
503
+ runContextMapCommand
504
+ };
505
+ //# sourceMappingURL=context-map-COB37XXN.js.map