@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,4 +1,7 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ artifactDefaultPath
4
+ } from "./chunk-GYV6VZOC.js";
2
5
  import {
3
6
  isVerificationScriptName
4
7
  } from "./chunk-UL3WSD3F.js";
@@ -12,26 +15,13 @@ import {
12
15
  init_esm_shims
13
16
  } from "./chunk-3R73A4XB.js";
14
17
 
15
- // src/core/artifact-paths.ts
16
- init_esm_shims();
17
- var CLIO_PROJECT_DIR = ".clio-coder";
18
- var CLIO_ARTIFACT_DIR = `${CLIO_PROJECT_DIR}/artifacts`;
19
- var KIND_FILENAMES = {
20
- plan: "PLAN.md",
21
- review: "REVIEW.md",
22
- report: "REPORT.md"
23
- };
24
- var DEFAULT_FILENAME = KIND_FILENAMES.plan;
25
- function artifactDefaultPath(kind) {
26
- const filename = typeof kind === "string" ? KIND_FILENAMES[kind] ?? DEFAULT_FILENAME : DEFAULT_FILENAME;
27
- return `${CLIO_ARTIFACT_DIR}/${filename}`;
28
- }
29
-
30
18
  // src/domains/safety/protected-artifacts.ts
31
19
  init_esm_shims();
32
20
  import path from "node:path";
33
- var COMMAND_SEPARATORS = /* @__PURE__ */ new Set([";", "&&", "||", "|"]);
21
+ var COMMAND_SEPARATORS = /* @__PURE__ */ new Set([";", "&", "&&", "||", "|"]);
34
22
  var SHELL_WRAPPERS = /* @__PURE__ */ new Set(["command", "builtin", "sudo", "doas"]);
23
+ var SHELL_REDIRECTIONS = /* @__PURE__ */ new Set([">", ">>", "<", "<<", "<<<", "<&", ">&", "<>", ">|", "&>", "&>>"]);
24
+ var SHELL_WRITE_REDIRECTIONS = /* @__PURE__ */ new Set([">", ">>", ">&", "<>", ">|", "&>", "&>>"]);
35
25
  function toolMutationPaths(toolName, args) {
36
26
  if (toolName === ToolNames.Artifact) {
37
27
  return [mutationPathArg(args) ?? artifactDefaultPath(args?.kind)];
@@ -79,9 +69,9 @@ function isProtectedPath(state, artifactPath) {
79
69
  function classifyDestructiveCommand(command, protectedArtifacts) {
80
70
  const artifacts = normalizedArtifacts(protectedArtifacts);
81
71
  if (artifacts.length === 0) return { kind: "benign", matches: [] };
82
- const tokens = tokenizeShellLike(command);
83
- for (const segment of splitSegments(tokens)) {
84
- const redirect = classifyRedirect(segment, artifacts);
72
+ for (const tokens of splitSegments(scanShellLike(command))) {
73
+ const segment = shellCommandArguments(tokens);
74
+ const redirect = classifyRedirect(tokens, artifacts);
85
75
  if (redirect.kind === "destructive") return redirect;
86
76
  const commandIndex = commandTokenIndex(segment);
87
77
  if (commandIndex === null) continue;
@@ -141,8 +131,8 @@ function classifyDestructiveCommand(command, protectedArtifacts) {
141
131
  return { kind: "benign", matches: [] };
142
132
  }
143
133
  function detectValidationCommand(command, scope = "finish-contract") {
144
- const tokens = tokenizeShellLike(command);
145
- for (const segment of splitSegments(tokens)) {
134
+ for (const tokens of splitSegments(scanShellLike(command))) {
135
+ const segment = shellCommandArguments(tokens);
146
136
  const commandIndex = commandTokenIndex(segment);
147
137
  if (commandIndex === null) continue;
148
138
  const executable = basenameToken(segment[commandIndex]);
@@ -154,10 +144,11 @@ function detectValidationCommand(command, scope = "finish-contract") {
154
144
  }
155
145
  function extractCommandWriteTargets(command) {
156
146
  const targets = [];
157
- for (const segment of expandedSegments(command)) {
147
+ for (const segment of expandedShellSegments(command)) {
158
148
  collectRedirectTargets(segment, targets);
159
- collectInvokedWriteTargets(segment, targets);
160
- collectInPlaceEditTargets(segment, targets);
149
+ const argv = shellCommandArguments(segment);
150
+ collectInvokedWriteTargets(argv, targets);
151
+ collectInPlaceEditTargets(argv, targets);
161
152
  }
162
153
  return targets.filter(isInterestingWriteTarget);
163
154
  }
@@ -179,27 +170,28 @@ function segmentShellScript(segment) {
179
170
  }
180
171
  return null;
181
172
  }
182
- function expandedSegments(command, depth = 0) {
183
- const segments = splitSegments(tokenizeShellLike(command));
173
+ function expandedShellSegments(command, depth = 0) {
174
+ const segments = splitSegments(scanShellLike(command));
184
175
  if (depth >= INNER_SHELL_MAX_DEPTH) return segments;
185
176
  const out = [];
186
177
  for (const segment of segments) {
187
178
  out.push(segment);
188
- const script = segmentShellScript(segment);
189
- if (script !== null) out.push(...expandedSegments(script, depth + 1));
179
+ const script = segmentShellScript(shellCommandArguments(segment));
180
+ if (script !== null) out.push(...expandedShellSegments(script, depth + 1));
190
181
  }
191
182
  return out;
192
183
  }
193
184
  function inlineShellScript(command) {
194
- const segments = splitSegments(tokenizeShellLike(command));
185
+ const segments = splitSegments(scanShellLike(command));
195
186
  if (segments.length !== 1) return null;
196
187
  const segment = segments[0];
197
188
  if (segment === void 0) return null;
198
- return segmentShellScript(segment);
189
+ return segmentShellScript(shellCommandArguments(segment));
199
190
  }
200
191
  function extractCommandCdTargets(command) {
201
192
  const targets = [];
202
- for (const segment of expandedSegments(command)) {
193
+ for (const tokens of expandedShellSegments(command)) {
194
+ const segment = shellCommandArguments(tokens);
203
195
  const commandIndex = commandTokenIndex(segment);
204
196
  if (commandIndex === null) continue;
205
197
  const executable = basenameToken(segment[commandIndex]);
@@ -211,7 +203,8 @@ function extractCommandCdTargets(command) {
211
203
  }
212
204
  function extractCommandDeleteTargets(command) {
213
205
  const targets = [];
214
- for (const segment of expandedSegments(command)) {
206
+ for (const tokens of expandedShellSegments(command)) {
207
+ const segment = shellCommandArguments(tokens);
215
208
  const commandIndex = commandTokenIndex(segment);
216
209
  if (commandIndex === null) continue;
217
210
  const executable = basenameToken(segment[commandIndex]);
@@ -230,15 +223,85 @@ function extractCommandDeleteTargets(command) {
230
223
  }
231
224
  return targets.filter(isInterestingWriteTarget);
232
225
  }
226
+ function invokesClioSkillMutation(command) {
227
+ for (const segment of expandedShellSegments(command)) {
228
+ const argv = shellCommandArguments(segment);
229
+ const index = commandTokenIndex(argv);
230
+ if (index === null) continue;
231
+ let args = argv.slice(index);
232
+ const executable = basenameToken(args[0]);
233
+ if (executable === "npx" || executable === "npm" && args[1] === "exec") {
234
+ args = args.slice(executable === "npm" ? 2 : 1);
235
+ while (args[0]?.startsWith("-")) args = args.slice(1);
236
+ }
237
+ const program = args[0] ?? "";
238
+ if (basenameToken(program) === "node" || basenameToken(program) === "tsx") {
239
+ if (!/(?:^|\/)(?:src|dist)\/cli\/index\.(?:js|ts)$/.test(args[1] ?? "")) continue;
240
+ args = args.slice(2);
241
+ } else if (/^(?:@iowarp\/)?clio-coder(?:@[^/]+)?$/.test(program) || basenameToken(program) === "clio-coder") {
242
+ args = args.slice(1);
243
+ } else continue;
244
+ if (args.includes("--version") || args.includes("-v")) continue;
245
+ let rootHelp = false;
246
+ let firstRootFlag;
247
+ while (args[0]?.startsWith("-")) {
248
+ const flag = args[0];
249
+ if (flag === "--all" || flag === "--help" || flag === "-h") firstRootFlag ??= flag;
250
+ rootHelp = firstRootFlag === "--help" || firstRootFlag === "-h";
251
+ args = args.slice(flag === "--skill" || flag === "--api-key" ? 2 : 1);
252
+ }
253
+ if (rootHelp) continue;
254
+ if (args[0] !== "skills" && args[0] !== "library") continue;
255
+ if (resourceCliMutatesSkills(args[0], args.slice(1))) return true;
256
+ }
257
+ return false;
258
+ }
259
+ function shellCommandArguments(segment) {
260
+ const args = [];
261
+ for (let index = 0; index < segment.length; index += 1) {
262
+ const token = segment[index];
263
+ if (token === void 0) continue;
264
+ if (token.operator && SHELL_REDIRECTIONS.has(token.value)) {
265
+ const previous = args.at(-1);
266
+ if (previous && previous.end === token.start && !previous.quoted && /^\d+$/.test(previous.value)) args.pop();
267
+ if (segment[index + 1]?.operator === false) index += 1;
268
+ continue;
269
+ }
270
+ args.push(token);
271
+ }
272
+ return args.map((token) => token.value);
273
+ }
274
+ function resourceCliMutatesSkills(resource, args) {
275
+ const valueOptions = resource === "skills" ? ["--name", "--category", "--scenario", "--target", "--workspace", "--timeout"] : ["--kind", "--from"];
276
+ let verb;
277
+ let confirmed = false;
278
+ for (let index = 0; index < args.length; index += 1) {
279
+ const arg = args[index];
280
+ if (arg === void 0) continue;
281
+ if (valueOptions.includes(arg)) {
282
+ index += 1;
283
+ continue;
284
+ }
285
+ if (arg === "--help" || arg === "-h") return false;
286
+ if (arg === "--yes") confirmed = true;
287
+ if (!arg.startsWith("-")) verb ??= arg;
288
+ }
289
+ if (resource === "skills") return verb === "install" || verb === "update" || verb === "sync";
290
+ return verb === "add" && confirmed;
291
+ }
233
292
  var STANDARD_DEV_TARGETS = /* @__PURE__ */ new Set(["/dev/null", "/dev/stdout", "/dev/stderr", "/dev/tty", "/dev/zero"]);
234
293
  function collectRedirectTargets(segment, out) {
235
294
  for (let index = 0; index < segment.length - 1; index += 1) {
236
- const token = segment[index];
237
- if (token !== ">" && token !== ">>") continue;
238
- const target = segment[index + 1];
239
- if (target !== void 0) out.push(target);
295
+ const target = redirectWriteTarget(segment[index], segment[index + 1]);
296
+ if (target !== null) out.push(target);
240
297
  }
241
298
  }
299
+ function redirectWriteTarget(operator, target) {
300
+ if (!operator?.operator || target === void 0 || target.operator || !SHELL_WRITE_REDIRECTIONS.has(operator.value))
301
+ return null;
302
+ if (operator.value === ">&" && /^(?:\d+-?|-)$/u.test(target.value)) return null;
303
+ return target.value;
304
+ }
242
305
  function collectInvokedWriteTargets(segment, out) {
243
306
  const cmdIndex = commandTokenIndex(segment);
244
307
  if (cmdIndex === null) return;
@@ -274,7 +337,6 @@ function hasSedInPlaceFlag(segment, cmdIndex) {
274
337
  for (let index = cmdIndex + 1; index < segment.length; index += 1) {
275
338
  const token = segment[index];
276
339
  if (token === void 0) continue;
277
- if (COMMAND_SEPARATORS.has(token)) break;
278
340
  if (token === "--") break;
279
341
  if (token === "--in-place" || token.startsWith("--in-place=")) return true;
280
342
  if (token.startsWith("--")) continue;
@@ -289,7 +351,6 @@ function sedFileOperands(segment, cmdIndex) {
289
351
  for (let index = cmdIndex + 1; index < segment.length; index += 1) {
290
352
  const token = segment[index];
291
353
  if (token === void 0) continue;
292
- if (COMMAND_SEPARATORS.has(token)) break;
293
354
  if (!endOfOptions && token === "--") {
294
355
  endOfOptions = true;
295
356
  continue;
@@ -322,16 +383,15 @@ function sedFileOperands(segment, cmdIndex) {
322
383
  }
323
384
  function isInterestingWriteTarget(target) {
324
385
  if (target.length === 0) return false;
325
- if (target.startsWith("&")) return false;
326
386
  if (STANDARD_DEV_TARGETS.has(target)) return false;
327
387
  if (target.startsWith("/dev/fd/")) return false;
328
388
  return true;
329
389
  }
330
390
  function classifyRedirect(segment, artifacts) {
331
391
  for (let index = 0; index < segment.length; index += 1) {
332
- if (segment[index] !== ">") continue;
333
- const target = segment[index + 1];
334
- if (target === void 0) continue;
392
+ if (segment[index]?.value === ">>" || segment[index]?.value === "&>>") continue;
393
+ const target = redirectWriteTarget(segment[index], segment[index + 1]);
394
+ if (target === null) continue;
335
395
  const matches = matchesForPaths([target], artifacts, "target", "redirect can overwrite protected artifacts");
336
396
  if (matches.length > 0) {
337
397
  return {
@@ -528,28 +588,30 @@ function pathArgs(segment, commandIndex) {
528
588
  for (let index = commandIndex + 1; index < segment.length; index += 1) {
529
589
  const token = segment[index];
530
590
  if (token === void 0) continue;
531
- if (COMMAND_SEPARATORS.has(token)) break;
532
591
  if (!endOfOptions && token === "--") {
533
592
  endOfOptions = true;
534
593
  continue;
535
594
  }
536
595
  if (!endOfOptions && token.startsWith("-")) continue;
537
- if (token === ">" || token === ">>" || token === "<" || token === "<<") {
538
- index += 1;
539
- continue;
540
- }
541
596
  args.push(token);
542
597
  }
543
598
  return args;
544
599
  }
545
- function tokenizeShellLike(command) {
600
+ function commandArgumentSegments(command) {
601
+ return splitSegments(scanShellLike(command)).map(shellCommandArguments);
602
+ }
603
+ function scanShellLike(command) {
546
604
  const tokens = [];
547
605
  let current = "";
606
+ let wordStart = null;
607
+ let quoted = false;
548
608
  let quote = null;
549
- const pushCurrent = () => {
550
- if (current.length === 0) return;
551
- tokens.push(current);
609
+ const pushCurrent = (end) => {
610
+ if (wordStart === null) return;
611
+ tokens.push({ value: current, operator: false, quoted, start: wordStart, end });
552
612
  current = "";
613
+ wordStart = null;
614
+ quoted = false;
553
615
  };
554
616
  for (let index = 0; index < command.length; index += 1) {
555
617
  const char = command[index];
@@ -560,78 +622,60 @@ function tokenizeShellLike(command) {
560
622
  continue;
561
623
  }
562
624
  if (quote === '"' && char === "\\" && index + 1 < command.length) {
563
- index += 1;
564
- current += command[index] ?? "";
565
- continue;
625
+ const next = command[index + 1] ?? "";
626
+ if (next === "\n" || '$`"\\'.includes(next)) {
627
+ index += 1;
628
+ if (next !== "\n") current += next;
629
+ continue;
630
+ }
566
631
  }
567
632
  current += char;
568
633
  continue;
569
634
  }
570
635
  if (char === "'" || char === '"') {
636
+ wordStart ??= index;
637
+ quoted = true;
571
638
  quote = char;
572
639
  continue;
573
640
  }
574
641
  if (char === "\\" && index + 1 < command.length) {
575
- index += 1;
576
- current += command[index] ?? "";
577
- continue;
578
- }
579
- if (/\s/.test(char)) {
580
- pushCurrent();
581
- if (char === "\n") tokens.push(";");
582
- continue;
583
- }
584
- if (char === ";") {
585
- pushCurrent();
586
- tokens.push(";");
587
- continue;
588
- }
589
- if (char === "&" && command[index + 1] === "&") {
590
- pushCurrent();
591
- tokens.push("&&");
642
+ if (command[index + 1] !== "\n") {
643
+ wordStart ??= index;
644
+ quoted = true;
645
+ current += command[index + 1] ?? "";
646
+ }
592
647
  index += 1;
593
648
  continue;
594
649
  }
595
- if (char === "|") {
596
- pushCurrent();
597
- if (command[index + 1] === "|") {
598
- tokens.push("||");
599
- index += 1;
600
- } else {
601
- tokens.push("|");
602
- }
650
+ if (char === "#" && wordStart === null) {
651
+ while (index + 1 < command.length && command[index + 1] !== "\n") index += 1;
603
652
  continue;
604
653
  }
605
- if (char === ">") {
606
- pushCurrent();
607
- if (command[index + 1] === ">") {
608
- tokens.push(">>");
609
- index += 1;
610
- } else {
611
- tokens.push(">");
612
- }
654
+ if (/\s/.test(char)) {
655
+ pushCurrent(index);
656
+ if (char === "\n") tokens.push({ value: ";", operator: true, quoted: false, start: index, end: index + 1 });
613
657
  continue;
614
658
  }
615
- if (char === "<") {
616
- pushCurrent();
617
- if (command[index + 1] === "<") {
618
- tokens.push("<<");
619
- index += 1;
620
- } else {
621
- tokens.push("<");
622
- }
659
+ if (";&|><".includes(char)) {
660
+ pushCurrent(index);
661
+ const three = command.slice(index, index + 3);
662
+ const two = command.slice(index, index + 2);
663
+ const value = SHELL_REDIRECTIONS.has(three) || COMMAND_SEPARATORS.has(three) ? three : SHELL_REDIRECTIONS.has(two) || COMMAND_SEPARATORS.has(two) ? two : char;
664
+ tokens.push({ value, operator: true, quoted: false, start: index, end: index + value.length });
665
+ index += value.length - 1;
623
666
  continue;
624
667
  }
668
+ wordStart ??= index;
625
669
  current += char;
626
670
  }
627
- pushCurrent();
671
+ pushCurrent(command.length);
628
672
  return tokens;
629
673
  }
630
674
  function splitSegments(tokens) {
631
675
  const segments = [];
632
676
  let current = [];
633
677
  for (const token of tokens) {
634
- if (COMMAND_SEPARATORS.has(token)) {
678
+ if (token.operator && COMMAND_SEPARATORS.has(token.value)) {
635
679
  if (current.length > 0) segments.push(current);
636
680
  current = [];
637
681
  continue;
@@ -748,9 +792,6 @@ function compareStrings(left, right) {
748
792
  }
749
793
 
750
794
  export {
751
- CLIO_PROJECT_DIR,
752
- CLIO_ARTIFACT_DIR,
753
- artifactDefaultPath,
754
795
  toolMutationPaths,
755
796
  protectedArtifactMutationBlockReason,
756
797
  protectArtifact,
@@ -759,6 +800,8 @@ export {
759
800
  inlineShellScript,
760
801
  extractCommandCdTargets,
761
802
  extractCommandDeleteTargets,
762
- tokenizeShellLike
803
+ invokesClioSkillMutation,
804
+ commandArgumentSegments,
805
+ scanShellLike
763
806
  };
764
- //# sourceMappingURL=chunk-IKOZFYBN.js.map
807
+ //# sourceMappingURL=chunk-I7ZPNEJM.js.map
@@ -9,9 +9,6 @@ import {
9
9
  import {
10
10
  require_dist
11
11
  } from "./chunk-APJ265NV.js";
12
- import {
13
- clioConfigDir
14
- } from "./chunk-BYP5D4HI.js";
15
12
  import {
16
13
  safeResourceWrite
17
14
  } from "./chunk-WEPFGWHJ.js";
@@ -19,6 +16,9 @@ import {
19
16
  findEngineEnvKeys,
20
17
  getEngineEnvApiKey
21
18
  } from "./chunk-YXLYO42X.js";
19
+ import {
20
+ clioConfigDir
21
+ } from "./chunk-BYP5D4HI.js";
22
22
  import {
23
23
  __toESM,
24
24
  init_esm_shims
@@ -959,4 +959,4 @@ export {
959
959
  authNotRequiredStatus,
960
960
  openAuthStorage
961
961
  };
962
- //# sourceMappingURL=chunk-WNP7O5WZ.js.map
962
+ //# sourceMappingURL=chunk-ID64D7PE.js.map
@@ -8,36 +8,36 @@ import {
8
8
  normalizedSkillHash,
9
9
  stripProvenanceFrontmatter
10
10
  } from "./chunk-NDDGJUXD.js";
11
+ import {
12
+ initializeClioHome
13
+ } from "./chunk-I7XBWTYH.js";
11
14
  import {
12
15
  resolveToolBinary
13
16
  } from "./chunk-QSNYB6ZV.js";
14
17
  import {
15
18
  findPinnedTool
16
19
  } from "./chunk-QDC3K2U3.js";
17
- import {
18
- initializeClioHome
19
- } from "./chunk-I7XBWTYH.js";
20
20
  import {
21
21
  INTEROP_AGENT_KINDS
22
- } from "./chunk-IHXBNWMM.js";
22
+ } from "./chunk-KXDSS5WJ.js";
23
23
  import {
24
24
  settingsPath,
25
25
  withSettingsLock
26
- } from "./chunk-34BHNEE3.js";
26
+ } from "./chunk-GHS5EBTQ.js";
27
27
  import {
28
28
  resolvePackageRoot
29
29
  } from "./chunk-IWHMRKLL.js";
30
30
  import {
31
31
  require_dist
32
32
  } from "./chunk-APJ265NV.js";
33
- import {
34
- clioStatePath,
35
- resolveClioDirs
36
- } from "./chunk-BYP5D4HI.js";
37
33
  import {
38
34
  fsyncDirectory,
39
35
  safeResourceWrite
40
36
  } from "./chunk-WEPFGWHJ.js";
37
+ import {
38
+ clioStatePath,
39
+ resolveClioDirs
40
+ } from "./chunk-BYP5D4HI.js";
41
41
  import {
42
42
  __toESM,
43
43
  init_esm_shims
@@ -654,4 +654,4 @@ export {
654
654
  migrateNamingSettingsFile,
655
655
  clio_coder_naming_default
656
656
  };
657
- //# sourceMappingURL=chunk-XQRY4DTA.js.map
657
+ //# sourceMappingURL=chunk-IGLP3ODT.js.map
@@ -0,0 +1,101 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ appendOutOfTurnUsageRow
4
+ } from "./chunk-VA5FNYMT.js";
5
+ import {
6
+ extractReasoningTokens
7
+ } from "./chunk-NZMNUPZZ.js";
8
+ import {
9
+ init_esm_shims
10
+ } from "./chunk-3R73A4XB.js";
11
+
12
+ // src/domains/observability/compaction-usage.ts
13
+ init_esm_shims();
14
+ function observedUsage(call) {
15
+ const raw = isRecord(call.usage) ? call.usage : {};
16
+ const reading = (value) => typeof value === "number" && Number.isFinite(value) && value >= 0 && (call.outcome === "success" || value > 0) ? value : null;
17
+ const cost = isRecord(raw.cost) ? reading(raw.cost.total) : null;
18
+ const costUsd = cost !== null && cost > 0 ? cost : null;
19
+ const reasoning = extractReasoningTokens({ ...raw, reasoningTokens: void 0 });
20
+ return {
21
+ input: reading(raw.input),
22
+ output: reading(raw.output),
23
+ cacheRead: reading(raw.cacheRead),
24
+ cacheWrite: reading(raw.cacheWrite),
25
+ reasoning: reasoning !== null && reasoning > 0 ? reasoning : null,
26
+ totalTokens: reading(raw.totalTokens),
27
+ costUsd,
28
+ costProvenance: costUsd === null ? "unknown" : "estimated"
29
+ };
30
+ }
31
+ function recordFailedCompactionCalls(origin, calls, observability) {
32
+ for (const call of calls) {
33
+ const usage = observedUsage(call);
34
+ const row = {
35
+ label: "failed-compaction",
36
+ callOutcome: call.outcome,
37
+ sessionId: origin.sessionId,
38
+ repoIdentity: origin.repoIdentity,
39
+ timestamp: call.timestamp,
40
+ target: origin.target,
41
+ attributedModelId: origin.model,
42
+ usage,
43
+ timing: { durationMs: call.durationMs }
44
+ };
45
+ appendOutOfTurnUsageRow(origin.stateDir, row, { required: true });
46
+ if (!Object.values(usage).some((value) => typeof value === "number" && value > 0)) continue;
47
+ observability?.recordTokens(
48
+ origin.target,
49
+ origin.model,
50
+ usage.totalTokens ?? 0,
51
+ usage.costUsd ?? 0,
52
+ {
53
+ input: usage.input ?? 0,
54
+ output: usage.output ?? 0,
55
+ cacheRead: usage.cacheRead ?? 0,
56
+ cacheWrite: usage.cacheWrite ?? 0,
57
+ reasoningTokens: usage.reasoning ?? 0,
58
+ totalTokens: usage.totalTokens ?? 0,
59
+ apiCalls: 1
60
+ },
61
+ usage.costProvenance,
62
+ void 0,
63
+ "failed-compaction"
64
+ );
65
+ }
66
+ }
67
+ function isRecord(value) {
68
+ return typeof value === "object" && value !== null && !Array.isArray(value);
69
+ }
70
+ var USAGE_FIELDS = ["input", "output", "cacheRead", "cacheWrite", "reasoning", "totalTokens", "costUsd"];
71
+ function summarizeFailedCompactionUsage(rows) {
72
+ const calls = rows.filter((row) => row.label === "failed-compaction");
73
+ const knownUsage = Object.fromEntries(USAGE_FIELDS.map((field) => [field, null]));
74
+ const erroredKnownUsage = { ...knownUsage };
75
+ const unobservedUsageCalls = Object.fromEntries(USAGE_FIELDS.map((field) => [field, 0]));
76
+ for (const row of calls) {
77
+ for (const field of USAGE_FIELDS) {
78
+ const value = row.usage[field];
79
+ if (value === null) unobservedUsageCalls[field] += 1;
80
+ else {
81
+ knownUsage[field] = (knownUsage[field] ?? 0) + value;
82
+ if (row.callOutcome === "error") erroredKnownUsage[field] = (erroredKnownUsage[field] ?? 0) + value;
83
+ }
84
+ }
85
+ }
86
+ return {
87
+ calls: calls.length,
88
+ successfulCalls: calls.filter((row) => row.callOutcome === "success").length,
89
+ erroredCalls: calls.filter((row) => row.callOutcome === "error").length,
90
+ abortedCalls: calls.filter((row) => row.callOutcome === "aborted").length,
91
+ knownUsage,
92
+ erroredKnownUsage,
93
+ unobservedUsageCalls
94
+ };
95
+ }
96
+
97
+ export {
98
+ recordFailedCompactionCalls,
99
+ summarizeFailedCompactionUsage
100
+ };
101
+ //# sourceMappingURL=chunk-IJNZMHLA.js.map
@@ -2,26 +2,26 @@ import { createRequire as __clioCreateRequire } from "node:module"; const requir
2
2
  import {
3
3
  INTEROP_AGENT_KINDS,
4
4
  interopAgentKind
5
- } from "./chunk-IHXBNWMM.js";
5
+ } from "./chunk-KXDSS5WJ.js";
6
6
  import {
7
7
  readSettings,
8
8
  updateSettings
9
- } from "./chunk-34BHNEE3.js";
9
+ } from "./chunk-GHS5EBTQ.js";
10
10
  import {
11
11
  runCommandVector
12
- } from "./chunk-HJWWJ6IL.js";
12
+ } from "./chunk-JSC3U7TI.js";
13
13
  import {
14
14
  withStateFileLockSync
15
15
  } from "./chunk-IKCO5N3L.js";
16
16
  import {
17
17
  require_dist
18
18
  } from "./chunk-APJ265NV.js";
19
- import {
20
- clioStateDir
21
- } from "./chunk-BYP5D4HI.js";
22
19
  import {
23
20
  safeResourceWrite
24
21
  } from "./chunk-WEPFGWHJ.js";
22
+ import {
23
+ clioStateDir
24
+ } from "./chunk-BYP5D4HI.js";
25
25
  import {
26
26
  __toESM,
27
27
  init_esm_shims
@@ -430,4 +430,4 @@ export {
430
430
  detectInteropAgents,
431
431
  InteropDomainModule
432
432
  };
433
- //# sourceMappingURL=chunk-JWJGP5DQ.js.map
433
+ //# sourceMappingURL=chunk-INY6HTFL.js.map
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-K6BSR66V.js";
8
8
  import {
9
9
  StringEnum
10
- } from "./chunk-VXMFAE2W.js";
10
+ } from "./chunk-YPC6ZR5L.js";
11
11
  import {
12
12
  init_esm_shims
13
13
  } from "./chunk-3R73A4XB.js";
@@ -32,4 +32,4 @@ var contextToolSurface = {
32
32
  export {
33
33
  contextToolSurface
34
34
  };
35
- //# sourceMappingURL=chunk-PBP4B7XR.js.map
35
+ //# sourceMappingURL=chunk-IUE3Y34X.js.map
@@ -3,13 +3,13 @@ import {
3
3
  ROUTE_POLICY_VERSION,
4
4
  isRouteDecisionAgentSelection,
5
5
  isRoutingIntent
6
- } from "./chunk-HIICAHCJ.js";
6
+ } from "./chunk-EKCHAPYA.js";
7
7
  import {
8
8
  isExecutionRole
9
9
  } from "./chunk-H7IXIC72.js";
10
10
  import {
11
11
  readSettings
12
- } from "./chunk-34BHNEE3.js";
12
+ } from "./chunk-GHS5EBTQ.js";
13
13
  import {
14
14
  readClioVersion,
15
15
  resolvePackageRoot
@@ -1412,4 +1412,4 @@ export {
1412
1412
  loadEvalTaskFile,
1413
1413
  EvalTaskFileError
1414
1414
  };
1415
- //# sourceMappingURL=chunk-B74PXLU7.js.map
1415
+ //# sourceMappingURL=chunk-IWT4SF4R.js.map