@iowarp/clio-coder 0.3.4 → 0.3.7

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 (376) hide show
  1. package/CHANGELOG.md +65 -2
  2. package/CONTRIBUTING.md +6 -6
  3. package/README.md +16 -5
  4. package/dist/{acp-S5R4RR5B.js → acp-SK4MD6MM.js} +11 -11
  5. package/dist/{agents-P6DMMVZY.js → agents-2FN2K6ME.js} +33 -26
  6. package/dist/assets/codewiki.json +1 -1
  7. package/dist/{auth-2XCZLPKS.js → auth-QIYZWM5I.js} +15 -15
  8. package/dist/{chunk-EKMEHE4H.js → chunk-33YXPOE3.js} +2 -3
  9. package/dist/{chunk-VAWWTKDP.js → chunk-3HAPLH5M.js} +11 -11
  10. package/dist/{chunk-YCWGATWI.js → chunk-465YSENW.js} +3 -3
  11. package/dist/{chunk-4OC57DA6.js → chunk-4DGYLA73.js} +53 -2
  12. package/dist/{chunk-UZHIZC5S.js → chunk-4DWFMQDR.js} +61 -76
  13. package/dist/{chunk-ZWMF7253.js → chunk-5C3AQNDW.js} +328 -9
  14. package/dist/{chunk-22NAGB7X.js → chunk-5C77SEEY.js} +5 -94
  15. package/dist/{chunk-WPQLXFOZ.js → chunk-5FR74PWO.js} +3 -2
  16. package/dist/{chunk-35MKKU5R.js → chunk-5UJ6ECTS.js} +18 -10
  17. package/dist/{chunk-BRXQQJFP.js → chunk-6M7VS3J3.js} +571 -50
  18. package/dist/{chunk-QQK64KLB.js → chunk-6TUKSZVF.js} +141 -23
  19. package/dist/{chunk-N4CZJQRK.js → chunk-AB4XIIVB.js} +8 -6
  20. package/dist/{chunk-KRPY7NTG.js → chunk-BMWK7ZIZ.js} +14 -20
  21. package/dist/{chunk-4BPJXDWC.js → chunk-C4JBQ5SR.js} +30 -14
  22. package/dist/{chunk-ZYKPLLNQ.js → chunk-CEYBNUGC.js} +821 -83
  23. package/dist/{chunk-VEZEGCGW.js → chunk-D4MDIG46.js} +20 -18
  24. package/dist/chunk-DJNLUABN.js +843 -0
  25. package/dist/{chunk-BP4OYD6A.js → chunk-DMD2AGVS.js} +21 -2
  26. package/dist/{chunk-KOHPCX4K.js → chunk-DOOEX22V.js} +2 -2
  27. package/dist/chunk-DQA7QLMD.js +123 -0
  28. package/dist/chunk-DR52UMZW.js +21 -0
  29. package/dist/{chunk-3HZ5RWN2.js → chunk-EBEFWSGL.js} +9 -7
  30. package/dist/{chunk-EDRHSCIE.js → chunk-EELBMBT6.js} +128 -13
  31. package/dist/{chunk-HV5X7OR2.js → chunk-EOOQZZDE.js} +16 -14
  32. package/dist/{chunk-WR67VIZY.js → chunk-FOT2FX5J.js} +63 -5
  33. package/dist/{chunk-BPGS2WCQ.js → chunk-GEYXPTRF.js} +2 -1
  34. package/dist/{chunk-FYYLNIL5.js → chunk-GH5622CP.js} +2 -2
  35. package/dist/{chunk-BEY543CS.js → chunk-GOXNB3AO.js} +5 -2
  36. package/dist/chunk-GWS3VEIW.js +195 -0
  37. package/dist/{chunk-G4BMMOKF.js → chunk-HVDIIIQW.js} +2 -2
  38. package/dist/chunk-HWUFFB6L.js +83 -0
  39. package/dist/{chunk-X6COSD2O.js → chunk-J7PIKKWC.js} +8 -436
  40. package/dist/{chunk-NILBFAPG.js → chunk-JNXPYBB4.js} +2 -2
  41. package/dist/{chunk-4VP4KH3K.js → chunk-JRIO5UD2.js} +4 -4
  42. package/dist/{chunk-K6WL7QZT.js → chunk-JTSEDYVQ.js} +7 -7
  43. package/dist/{chunk-QKMUKYO7.js → chunk-KCMKRQX4.js} +236 -84
  44. package/dist/chunk-KZ2H5X4G.js +1026 -0
  45. package/dist/{chunk-A2GZF7DC.js → chunk-LADCF22A.js} +13 -13
  46. package/dist/chunk-LCGCVYZ4.js +57 -0
  47. package/dist/chunk-M4AKACEO.js +382 -0
  48. package/dist/{chunk-POHLU5DW.js → chunk-M6L6IDJG.js} +3 -3
  49. package/dist/{chunk-4JUF2NNX.js → chunk-MXI6J5JF.js} +7 -7
  50. package/dist/{chunk-X4RCMKVQ.js → chunk-NDINPTJ4.js} +2 -2
  51. package/dist/{chunk-TTNYS3EA.js → chunk-OB5HIGJY.js} +1 -1
  52. package/dist/{chunk-7RXG6QRZ.js → chunk-OBMAI2DP.js} +61 -840
  53. package/dist/{chunk-5M54SPOL.js → chunk-ODFEOB4F.js} +161 -5
  54. package/dist/chunk-PD3MESLB.js +242 -0
  55. package/dist/{chunk-ED4KHGC3.js → chunk-PPAMZ32Z.js} +9 -2
  56. package/dist/{chunk-VMNQ6OZA.js → chunk-QCTRSGHQ.js} +963 -786
  57. package/dist/chunk-RVG5JXAL.js +41 -0
  58. package/dist/{chunk-RD5U66HV.js → chunk-SROCI7ZU.js} +7 -7
  59. package/dist/{chunk-MFFY33HR.js → chunk-THKY7CD7.js} +466 -205
  60. package/dist/{chunk-34475P3I.js → chunk-TSHXZTOQ.js} +5 -4
  61. package/dist/{chunk-PCZJO5TI.js → chunk-UFQ3F4FW.js} +13 -178
  62. package/dist/{chunk-AD2SYQYC.js → chunk-UHXRNZ2J.js} +121 -3
  63. package/dist/chunk-UND3GU2L.js +103 -0
  64. package/dist/{chunk-QQL5RT5M.js → chunk-UUANF5CR.js} +2323 -2114
  65. package/dist/{chunk-VJWL6YS5.js → chunk-UUVG37B4.js} +2 -2
  66. package/dist/chunk-UVDSQ6LW.js +472 -0
  67. package/dist/{chunk-QWU7ZBO7.js → chunk-VQNODYQ4.js} +215 -56
  68. package/dist/chunk-VREKEFLL.js +37 -0
  69. package/dist/{chunk-2TZWSW76.js → chunk-WHGPSPT5.js} +2 -2
  70. package/dist/{chunk-TW3WDMVS.js → chunk-WHJYKASB.js} +2 -2
  71. package/dist/{chunk-MEQ45TQ4.js → chunk-WJHBC77E.js} +21 -7
  72. package/dist/{chunk-HXG4IURW.js → chunk-X2KV5FXT.js} +2 -2
  73. package/dist/{chunk-YHZX5GEU.js → chunk-XAKHZX5N.js} +2 -2
  74. package/dist/{chunk-2LZI5CAG.js → chunk-XEGB6BCN.js} +228 -36
  75. package/dist/{chunk-E25LMLRW.js → chunk-YD734TPH.js} +2 -2
  76. package/dist/{verifiers-4UUM6TEE.js → chunk-YTYFXUI3.js} +121 -372
  77. package/dist/{chunk-3JLKSKD7.js → chunk-ZGH7FGS5.js} +17 -7
  78. package/dist/{chunk-VSNATDE6.js → chunk-ZZMN5OM4.js} +2 -2
  79. package/dist/cli/index.js +34 -32
  80. package/dist/{clio-J5JIOIDS.js → clio-WBVQEBKO.js} +7 -7
  81. package/dist/{code-nav-AXCXSBHX.js → code-nav-FGGFIE7L.js} +7 -7
  82. package/dist/codewiki/build-worker.js +4 -4
  83. package/dist/{components-KELWS457.js → components-F7OEATSO.js} +5 -5
  84. package/dist/{config-OEBMIN2U.js → config-TRBL3RCF.js} +48 -41
  85. package/dist/{configure-PUQOSIXQ.js → configure-OLCVPHNM.js} +17 -17
  86. package/dist/{context-URSXPBCK.js → context-MJIJ6GOX.js} +12 -12
  87. package/dist/{context-EKDCKUUZ.js → context-WFPKQSM6.js} +26 -9
  88. package/dist/{context-MGSE4Z2T.js → context-XEWE3MOJ.js} +44 -37
  89. package/dist/{context-clear-KDAJRNUK.js → context-clear-KNOS2JPB.js} +44 -37
  90. package/dist/{context-index-BZ4UYMTC.js → context-index-SSR5ECNE.js} +3 -3
  91. package/dist/{context-working-set-SBKMPPI2.js → context-working-set-EUXAZI6N.js} +14 -13
  92. package/dist/{dispatch-runner-MSWN72NK.js → dispatch-runner-B7MTOVKL.js} +321 -60
  93. package/dist/{docs-2C2LTVT2.js → docs-FLJTIDSE.js} +5 -5
  94. package/dist/{doctor-7BSE27PJ.js → doctor-RN4YKO2X.js} +15 -15
  95. package/dist/{eval-IZGDOO4H.js → eval-RUBJVSNQ.js} +52 -236
  96. package/dist/{evidence-SR7WXB5B.js → evidence-JZNBUOQZ.js} +39 -33
  97. package/dist/{evolve-K7VE2CBX.js → evolve-FJVC4KKI.js} +39 -33
  98. package/dist/{extensions-QVDOHDGJ.js → extensions-IQL36S7K.js} +5 -5
  99. package/dist/{fleet-7XMJNQNF.js → fleet-BDKYJFCP.js} +243 -370
  100. package/dist/fleet-commands-ZFIWZSB3.js +70 -0
  101. package/dist/fleet-graph-Y6HPXIVF.js +125 -0
  102. package/dist/fleet-new-RDVJLHHH.js +48 -0
  103. package/dist/{fleet-preflight-AQNAH644.js → fleet-preflight-BHSNPBMH.js} +2 -2
  104. package/dist/fleet-validate-BIYREGIK.js +79 -0
  105. package/dist/{init-JGNPAYXT.js → init-LQUB5COQ.js} +57 -48
  106. package/dist/library-NJAHIGG4.js +217 -0
  107. package/dist/memory-OG6HOYKM.js +472 -0
  108. package/dist/{models-ZMMLFJNN.js → models-5ZG5XY7J.js} +23 -22
  109. package/dist/{monitor-2F3T5KHP.js → monitor-TJ7AMTGB.js} +69 -35
  110. package/dist/{orchestrator-ORHT43JB.js → orchestrator-WZYB54DM.js} +4868 -1189
  111. package/dist/{paths-UXLN5YYZ.js → paths-XUC7GS6E.js} +5 -5
  112. package/dist/{reset-NXGTYNUO.js → reset-PXQT45IY.js} +8 -8
  113. package/dist/{run-RF4WJGMT.js → run-FQ74YF62.js} +82 -62
  114. package/dist/{share-UT3W6E4M.js → share-FW7SVCL3.js} +34 -10
  115. package/dist/{skills-PSACKC5Q.js → skills-7E7IRB3R.js} +25 -9
  116. package/dist/{skills-eval-WJSI55RZ.js → skills-eval-LI75W6OK.js} +43 -35
  117. package/dist/{targets-PIIRAOYS.js → targets-4CIFKCTW.js} +27 -24
  118. package/dist/{terminal-lease-ULWXWNVY.js → terminal-lease-WUZY7ZV5.js} +5 -4
  119. package/dist/{uninstall-FZCQCDKC.js → uninstall-7FV7IP4E.js} +5 -5
  120. package/dist/{upgrade-346TZ6AV.js → upgrade-K2HVIVMQ.js} +21 -20
  121. package/dist/{usage-6KKXR32N.js → usage-GTZELZQX.js} +159 -59
  122. package/dist/verifiers-RLAHT27O.js +336 -0
  123. package/dist/{verify-X5HDROLA.js → verify-BX3BRKH5.js} +7 -6
  124. package/dist/{wiki-generate-7STOCIFZ.js → wiki-generate-ASIFASCN.js} +58 -48
  125. package/dist/worker/entry.js +98 -84
  126. package/dist/{workspace-G4ZWUIPR.js → workspace-ZJ6BFM3Q.js} +4 -4
  127. package/docs/README.md +4 -3
  128. package/docs/acp.md +1 -1
  129. package/docs/alcf-provider.md +1 -1
  130. package/docs/architecture.md +2 -2
  131. package/docs/artifact-placement.md +1 -2
  132. package/docs/artifact-versions.md +10 -6
  133. package/docs/built-in-agents.md +26 -2
  134. package/docs/capacity-and-scheduling.md +1 -1
  135. package/docs/commands-and-modes.md +90 -8
  136. package/docs/configuration-and-targets.md +90 -2
  137. package/docs/context-engine.md +4 -2
  138. package/docs/context-working-set.md +4 -4
  139. package/docs/development-pipeline.md +1 -1
  140. package/docs/dispatch-architecture-rationale.md +1 -1
  141. package/docs/documentation-coverage.md +4 -4
  142. package/docs/documentation-guide.md +4 -4
  143. package/docs/eval-runner.md +1 -1
  144. package/docs/evals-internal.md +4 -45
  145. package/docs/evidence-and-memory.md +70 -10
  146. package/docs/evolution.md +1 -1
  147. package/docs/exit-codes-and-output.md +4 -1
  148. package/docs/extensions-and-sharing.md +6 -2
  149. package/docs/fleet-demo-runbook.md +2 -2
  150. package/docs/fleet-dispatch.md +224 -11
  151. package/docs/git-commit-provenance.md +2 -2
  152. package/docs/glossary.md +1 -1
  153. package/docs/installation-and-lifecycle.md +2 -2
  154. package/docs/middleware-and-components.md +20 -2
  155. package/docs/model-catalog.md +1 -1
  156. package/docs/observability.md +55 -8
  157. package/docs/proactive-memory.md +26 -16
  158. package/docs/prompt-envelope-and-tools.md +4 -2
  159. package/docs/provider-adapter-cookbook.md +1 -1
  160. package/docs/release-cut-checklist.md +83 -65
  161. package/docs/resource-library.md +59 -0
  162. package/docs/safety-model.md +29 -7
  163. package/docs/scientific-validation.md +3 -3
  164. package/docs/session-lifecycle.md +37 -1
  165. package/docs/skills-marketplace.md +16 -3
  166. package/docs/tool-usage.md +14 -7
  167. package/docs/trace-store.md +1 -1
  168. package/docs/troubleshooting.md +1 -1
  169. package/docs/tui-design.md +38 -4
  170. package/docs/worker-dispatch-mechanics.md +3 -3
  171. package/package.json +7 -4
  172. package/src/cli/agents.ts +2 -3
  173. package/src/cli/argv.ts +14 -1
  174. package/src/cli/fleet-commands.ts +37 -0
  175. package/src/cli/fleet-graph.ts +102 -0
  176. package/src/cli/fleet-new.ts +36 -0
  177. package/src/cli/fleet-preflight.ts +121 -0
  178. package/src/cli/fleet-validate.ts +30 -0
  179. package/src/cli/fleet.ts +188 -335
  180. package/src/cli/index.ts +4 -2
  181. package/src/cli/library.ts +190 -0
  182. package/src/cli/memory.ts +272 -10
  183. package/src/cli/modes/json-stream.ts +2 -2
  184. package/src/cli/modes/print.ts +12 -1
  185. package/src/cli/run.ts +22 -2
  186. package/src/cli/share.ts +13 -1
  187. package/src/cli/targets.ts +12 -3
  188. package/src/cli/usage.ts +160 -20
  189. package/src/core/bus-events.ts +7 -0
  190. package/src/core/commit-attribution.ts +4 -4
  191. package/src/core/config.ts +130 -0
  192. package/src/core/defaults.ts +81 -0
  193. package/src/core/response-model-id.ts +134 -0
  194. package/src/core/toml.ts +62 -0
  195. package/src/core/workspace-files.ts +0 -1
  196. package/src/domains/agents/builtins/architect.md +2 -1
  197. package/src/domains/agents/builtins/oracle.md +33 -0
  198. package/src/domains/agents/catalog.ts +18 -5
  199. package/src/domains/agents/fleet-contract.ts +278 -16
  200. package/src/domains/agents/index.ts +14 -0
  201. package/src/domains/agents/recipe.ts +54 -14
  202. package/src/domains/agents/result-contract.ts +242 -5
  203. package/src/domains/config/classify.ts +4 -0
  204. package/src/domains/context/bootstrap.ts +36 -27
  205. package/src/domains/context/project-metadata.ts +19 -63
  206. package/src/domains/context/prompt-context.ts +8 -0
  207. package/src/domains/context/working-set/policies/index.ts +3 -4
  208. package/src/domains/dispatch/active-route-planner.ts +14 -0
  209. package/src/domains/dispatch/backoff.ts +2 -1
  210. package/src/domains/dispatch/budget-envelope.ts +396 -0
  211. package/src/domains/dispatch/capability-match.ts +1 -0
  212. package/src/domains/dispatch/checkout-writer-lease.ts +175 -0
  213. package/src/domains/dispatch/contract.ts +36 -0
  214. package/src/domains/dispatch/delegation-plan.ts +167 -0
  215. package/src/domains/dispatch/execution-plan.ts +76 -5
  216. package/src/domains/dispatch/execution-role.ts +3 -1
  217. package/src/domains/dispatch/execution-scheduler.ts +183 -67
  218. package/src/domains/dispatch/extension.ts +339 -36
  219. package/src/domains/dispatch/fleet-gate.ts +14 -0
  220. package/src/domains/dispatch/fleet-plan.ts +63 -3
  221. package/src/domains/dispatch/fleet-run.ts +737 -0
  222. package/src/domains/dispatch/gate-role-prompts.ts +9 -0
  223. package/src/domains/dispatch/host-verification.ts +178 -0
  224. package/src/domains/dispatch/index.ts +38 -0
  225. package/src/domains/dispatch/intent.ts +159 -0
  226. package/src/domains/dispatch/orphan-recovery.ts +1 -0
  227. package/src/domains/dispatch/receipt-integrity.ts +12 -4
  228. package/src/domains/dispatch/state.ts +37 -3
  229. package/src/domains/dispatch/types.ts +61 -9
  230. package/src/domains/dispatch/validation.ts +80 -6
  231. package/src/domains/dispatch/worker-spawn.ts +14 -3
  232. package/src/domains/eval/metrics/evidence.ts +0 -116
  233. package/src/domains/eval/metrics/invariants.ts +1 -1
  234. package/src/domains/eval/runners/clio-run.ts +1 -10
  235. package/src/domains/eval/runners/external-command.ts +2 -29
  236. package/src/domains/eval/schema/suite.ts +0 -7
  237. package/src/domains/eval/suites/run.ts +1 -7
  238. package/src/domains/evidence/trust-status.ts +10 -1
  239. package/src/domains/memory/index.ts +22 -0
  240. package/src/domains/memory/operations.ts +58 -1
  241. package/src/domains/memory/promotion.ts +281 -0
  242. package/src/domains/memory/prompt-section.ts +25 -5
  243. package/src/domains/memory/proposal.ts +51 -7
  244. package/src/domains/memory/task-bank.ts +3 -2
  245. package/src/domains/memory/task-memory-handoff.ts +181 -24
  246. package/src/domains/memory/task-memory-policy.ts +3 -1
  247. package/src/domains/memory/types.ts +37 -0
  248. package/src/domains/memory/validate.ts +178 -0
  249. package/src/domains/middleware/index.ts +15 -0
  250. package/src/domains/middleware/memory-intervention.ts +35 -25
  251. package/src/domains/middleware/runtime.ts +6 -0
  252. package/src/domains/middleware/skills-reminder.ts +19 -4
  253. package/src/domains/middleware/stalled-turn.ts +43 -1
  254. package/src/domains/middleware/types.ts +10 -0
  255. package/src/domains/middleware/watchdog.ts +281 -0
  256. package/src/domains/observability/contract.ts +9 -2
  257. package/src/domains/observability/cost.ts +31 -4
  258. package/src/domains/observability/extension.ts +2 -2
  259. package/src/domains/observability/index.ts +10 -0
  260. package/src/domains/observability/out-of-turn-usage.ts +223 -0
  261. package/src/domains/providers/index.ts +3 -0
  262. package/src/domains/providers/model-discovery.ts +9 -0
  263. package/src/domains/providers/runtime-resolution.ts +38 -1
  264. package/src/domains/providers/runtimes/common/probe-helpers.ts +97 -16
  265. package/src/domains/providers/types/context-window-slots.ts +18 -0
  266. package/src/domains/providers/types/runtime-descriptor.ts +3 -1
  267. package/src/domains/resources/index.ts +20 -0
  268. package/src/domains/resources/library.ts +326 -0
  269. package/src/domains/resources/skills/marketplace.ts +37 -12
  270. package/src/domains/safety/call-target.ts +211 -14
  271. package/src/domains/safety/decision-presentation.ts +268 -0
  272. package/src/domains/safety/redaction.ts +73 -0
  273. package/src/domains/session/context-ledger.ts +10 -1
  274. package/src/domains/session/decision-board.ts +4 -0
  275. package/src/domains/session/entries.ts +3 -0
  276. package/src/domains/session/handoff.ts +629 -0
  277. package/src/domains/session/history.ts +68 -19
  278. package/src/domains/session/usage.ts +24 -7
  279. package/src/domains/share/archive.ts +67 -2
  280. package/src/engine/acp/event-mapper.ts +7 -0
  281. package/src/engine/acp/server.ts +29 -2
  282. package/src/engine/apis/lmstudio.ts +25 -4
  283. package/src/engine/apis/openai-completions.ts +147 -22
  284. package/src/engine/claude/sdk-runtime.ts +8 -2
  285. package/src/engine/claude/tool-safety.ts +13 -0
  286. package/src/engine/loop-guard.ts +27 -3
  287. package/src/engine/worker-events.ts +4 -3
  288. package/src/engine/worker-runtime.ts +59 -54
  289. package/src/entry/orchestrator.ts +55 -1
  290. package/src/interactive/bus-notices.ts +26 -0
  291. package/src/interactive/chat-loop-messages.ts +22 -0
  292. package/src/interactive/chat-loop.ts +248 -1
  293. package/src/interactive/chat-renderer.ts +41 -3
  294. package/src/interactive/clio-editor.ts +44 -7
  295. package/src/interactive/context-overlay.ts +43 -5
  296. package/src/interactive/cost-overlay.ts +70 -11
  297. package/src/interactive/council-dispatch.ts +30 -0
  298. package/src/interactive/council-grid.ts +213 -0
  299. package/src/interactive/council.ts +99 -0
  300. package/src/interactive/dispatch-board.ts +471 -50
  301. package/src/interactive/fleet-run-preview.ts +307 -0
  302. package/src/interactive/footer/notifications.ts +219 -0
  303. package/src/interactive/footer/widgets.ts +13 -0
  304. package/src/interactive/handoff-round.ts +56 -0
  305. package/src/interactive/interactive-application.ts +49 -2
  306. package/src/interactive/interactive-event-projection.ts +9 -1
  307. package/src/interactive/interactive-input-runtime.ts +11 -1
  308. package/src/interactive/interactive-presentation.ts +11 -1
  309. package/src/interactive/interactive-slash-runtime.ts +52 -2
  310. package/src/interactive/interactive-subscriptions.ts +14 -2
  311. package/src/interactive/memory-overlay.ts +89 -4
  312. package/src/interactive/oracle.ts +179 -0
  313. package/src/interactive/overlay-ask-user-lifecycle.ts +7 -1
  314. package/src/interactive/overlay-frame.ts +5 -2
  315. package/src/interactive/overlay-general-openers.ts +230 -2
  316. package/src/interactive/overlay-key-routing.ts +58 -2
  317. package/src/interactive/overlay-lifecycle.ts +52 -5
  318. package/src/interactive/overlay-permission-lifecycle.ts +33 -8
  319. package/src/interactive/overlay-resource-openers.ts +11 -3
  320. package/src/interactive/overlay-session-lifecycle.ts +234 -2
  321. package/src/interactive/overlay-transitions.ts +11 -0
  322. package/src/interactive/overlays/ask-user.ts +74 -30
  323. package/src/interactive/overlays/decisions.ts +3 -1
  324. package/src/interactive/overlays/fleet-run-approval.ts +208 -0
  325. package/src/interactive/overlays/handoff-review.ts +185 -0
  326. package/src/interactive/overlays/library-install-confirm.ts +151 -0
  327. package/src/interactive/overlays/list-overlay.ts +168 -2
  328. package/src/interactive/overlays/settings.ts +101 -4
  329. package/src/interactive/overlays/side-question.ts +139 -0
  330. package/src/interactive/overlays/skills-hub.ts +401 -15
  331. package/src/interactive/permission-hint.ts +35 -0
  332. package/src/interactive/permission-overlay.ts +95 -45
  333. package/src/interactive/renderers/tool-execution.ts +19 -49
  334. package/src/interactive/session-last-turn.ts +8 -1
  335. package/src/interactive/session-usage-reseed.ts +36 -10
  336. package/src/interactive/side-question.ts +171 -0
  337. package/src/interactive/slash-commands.ts +434 -7
  338. package/src/interactive/slash-spec.ts +19 -6
  339. package/src/interactive/status/summary.ts +5 -0
  340. package/src/interactive/status/types.ts +5 -0
  341. package/src/interactive/terminal-lease.ts +1 -0
  342. package/src/interactive/theme/tokens.ts +30 -0
  343. package/src/interactive/turn-context.ts +96 -23
  344. package/src/interactive/turn-middleware.ts +16 -1
  345. package/src/interactive/turn-runtime.ts +37 -8
  346. package/src/interactive/turn-state.ts +3 -0
  347. package/src/interactive/watchdog-run.ts +75 -0
  348. package/src/interactive/worker-progress.ts +440 -0
  349. package/src/interactive/worker-share.ts +56 -1
  350. package/src/interactive/worker-stream.ts +58 -110
  351. package/src/tools/agent-tools.ts +28 -3
  352. package/src/tools/ask-user.ts +21 -1
  353. package/src/tools/bootstrap.ts +3 -0
  354. package/src/tools/compete-worktrees.ts +13 -79
  355. package/src/tools/context/index.ts +2 -2
  356. package/src/tools/dispatch-admission.ts +242 -8
  357. package/src/tools/dispatch-arguments.ts +65 -1
  358. package/src/tools/dispatch-event-text.ts +19 -0
  359. package/src/tools/dispatch-plan.ts +136 -6
  360. package/src/tools/dispatch-runner.ts +319 -13
  361. package/src/tools/dispatch-types.ts +20 -1
  362. package/src/tools/dispatch.ts +96 -3
  363. package/src/tools/monitor.ts +31 -0
  364. package/src/tools/profiles.ts +18 -4
  365. package/src/tools/registry.ts +15 -5
  366. package/src/tools/result-disposition.ts +156 -0
  367. package/src/tools/result-shaping.ts +59 -1
  368. package/src/tools/task-worktree.ts +238 -0
  369. package/src/tools/verify/authoring.ts +116 -55
  370. package/src/tools/verify/scripts.ts +62 -0
  371. package/src/tools/worker-evidence.ts +21 -1
  372. package/src/worker/spec-contract.ts +44 -3
  373. package/dist/chunk-EFADSJET.js +0 -18
  374. package/dist/chunk-HC4CLZ2Y.js +0 -68
  375. package/dist/memory-4ALKDJ4Q.js +0 -246
  376. package/src/domains/eval/metrics/chaos-stream.ts +0 -93
@@ -1,14 +1,15 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
- import "./chunk-K6WL7QZT.js";
2
+ import "./chunk-JTSEDYVQ.js";
3
3
  import {
4
4
  ensureClioState
5
- } from "./chunk-VAWWTKDP.js";
5
+ } from "./chunk-3HAPLH5M.js";
6
6
  import {
7
7
  ConfigDomainModule,
8
8
  loadDomains
9
- } from "./chunk-KRPY7NTG.js";
10
- import "./chunk-E25LMLRW.js";
11
- import "./chunk-4BPJXDWC.js";
9
+ } from "./chunk-BMWK7ZIZ.js";
10
+ import "./chunk-YD734TPH.js";
11
+ import "./chunk-DR52UMZW.js";
12
+ import "./chunk-C4JBQ5SR.js";
12
13
  import "./chunk-2SFS6XQE.js";
13
14
  import "./chunk-ZWLZP4ZT.js";
14
15
  import "./chunk-CGKSTWHD.js";
@@ -17,20 +18,20 @@ import {
17
18
  runConfigureCommand,
18
19
  runTargetRemove,
19
20
  runTargetRename
20
- } from "./chunk-A2GZF7DC.js";
21
- import "./chunk-RD5U66HV.js";
22
- import "./chunk-KOHPCX4K.js";
21
+ } from "./chunk-LADCF22A.js";
22
+ import "./chunk-SROCI7ZU.js";
23
+ import "./chunk-DOOEX22V.js";
23
24
  import "./chunk-2STGEDFV.js";
24
25
  import {
25
26
  column,
26
27
  terminalColumns,
27
28
  truncate
28
29
  } from "./chunk-2IR2NMPA.js";
29
- import "./chunk-YCWGATWI.js";
30
+ import "./chunk-465YSENW.js";
30
31
  import {
31
32
  printError,
32
33
  printOk
33
- } from "./chunk-ED4KHGC3.js";
34
+ } from "./chunk-PPAMZ32Z.js";
34
35
  import {
35
36
  source_default
36
37
  } from "./chunk-5TSRNF4G.js";
@@ -40,8 +41,11 @@ import {
40
41
  isDispatchEligibleRuntime,
41
42
  isOrchestratorEligibleRuntime,
42
43
  registerBuiltinRuntimes
43
- } from "./chunk-QWU7ZBO7.js";
44
+ } from "./chunk-VQNODYQ4.js";
44
45
  import "./chunk-CFGTUFWB.js";
46
+ import "./chunk-JRIO5UD2.js";
47
+ import "./chunk-IHXBNWMM.js";
48
+ import "./chunk-GEYXPTRF.js";
45
49
  import {
46
50
  bindAgentProfileInSettings,
47
51
  readSettings,
@@ -49,31 +53,28 @@ import {
49
53
  setFleetProfileInSettings,
50
54
  updateSettings,
51
55
  useTargetInSettings
52
- } from "./chunk-AD2SYQYC.js";
56
+ } from "./chunk-UHXRNZ2J.js";
53
57
  import {
54
58
  THINKING_LEVELS
55
- } from "./chunk-4OC57DA6.js";
59
+ } from "./chunk-4DGYLA73.js";
56
60
  import "./chunk-LL4KHSZI.js";
57
- import "./chunk-4VP4KH3K.js";
58
- import "./chunk-VEZEGCGW.js";
59
- import "./chunk-FQ4SKYE4.js";
60
- import "./chunk-IKCO5N3L.js";
61
- import "./chunk-3I7MS7N2.js";
62
- import "./chunk-IHXBNWMM.js";
63
- import "./chunk-BPGS2WCQ.js";
64
61
  import "./chunk-SST6Z5JA.js";
65
62
  import "./chunk-FO5ZOVUY.js";
66
63
  import "./chunk-R346GLFC.js";
64
+ import "./chunk-D4MDIG46.js";
65
+ import "./chunk-FQ4SKYE4.js";
67
66
  import "./chunk-4ZG3XFUR.js";
67
+ import "./chunk-IKCO5N3L.js";
68
+ import "./chunk-3I7MS7N2.js";
68
69
  import "./chunk-FCSXB6T2.js";
69
70
  import "./chunk-APJ265NV.js";
70
71
  import "./chunk-YXLYO42X.js";
71
72
  import "./chunk-BNAZZHFG.js";
72
73
  import "./chunk-6EJMN2Y3.js";
73
74
  import "./chunk-WEPFGWHJ.js";
74
- import "./chunk-HXG4IURW.js";
75
+ import "./chunk-X2KV5FXT.js";
75
76
  import "./chunk-ZGVHUX3M.js";
76
- import "./chunk-TTNYS3EA.js";
77
+ import "./chunk-OB5HIGJY.js";
77
78
  import "./chunk-IWHMRKLL.js";
78
79
  import {
79
80
  init_esm_shims
@@ -902,7 +903,9 @@ function residentModelsSummary(states) {
902
903
  }
903
904
  function formatContextWindow(status) {
904
905
  const window = status.capabilities.contextWindow;
905
- return status.contextWindowProvenance === "runtime-default" ? `ctx ${window} (unverified runtime default)` : `ctx ${window}`;
906
+ if (status.contextWindowProvenance === "runtime-default") return `ctx ${window} (unverified runtime default)`;
907
+ const slots = status.target?.defaultModel ? status.discoveredModelStates?.[status.target.defaultModel]?.contextSlots : void 0;
908
+ return slots && Math.floor(slots.totalContextSize / slots.slots) === window ? `ctx ${window} (${slots.totalContextSize} / ${slots.slots} slots)` : `ctx ${window}`;
906
909
  }
907
910
  function formatNotes(status) {
908
911
  const parts = [];
@@ -995,4 +998,4 @@ export {
995
998
  residentModelsSummary,
996
999
  runTargetsCommand
997
1000
  };
998
- //# sourceMappingURL=targets-PIIRAOYS.js.map
1001
+ //# sourceMappingURL=targets-4CIFKCTW.js.map
@@ -10,12 +10,12 @@ import {
10
10
  createKeybindingManager,
11
11
  createProcessInteractiveShell,
12
12
  matchesKey
13
- } from "./chunk-ZWMF7253.js";
13
+ } from "./chunk-5C3AQNDW.js";
14
14
  import {
15
15
  getTerminationCoordinator
16
- } from "./chunk-HXG4IURW.js";
16
+ } from "./chunk-X2KV5FXT.js";
17
17
  import "./chunk-ZGVHUX3M.js";
18
- import "./chunk-TTNYS3EA.js";
18
+ import "./chunk-OB5HIGJY.js";
19
19
  import {
20
20
  init_esm_shims
21
21
  } from "./chunk-3R73A4XB.js";
@@ -111,6 +111,7 @@ function createProcessTerminalLease(options) {
111
111
  getModelLabel: () => editorChrome.getModelLabel(),
112
112
  getThinkingLabel: () => editorChrome.getThinkingLabel(),
113
113
  isStreaming: () => editorChrome.isStreaming?.() ?? false,
114
+ isAwaitingApproval: () => editorChrome.isAwaitingApproval?.() ?? false,
114
115
  willEnterSteer: (text) => editorChrome.willEnterSteer?.(text) ?? false,
115
116
  getSubmitKeyLabel: () => editorChrome.getSubmitKeyLabel?.() ?? "Enter",
116
117
  getNewlineKeyLabel: () => editorChrome.getNewlineKeyLabel?.() ?? "Shift+Enter"
@@ -393,4 +394,4 @@ export {
393
394
  createProcessTerminalLease,
394
395
  instantShellEnabled
395
396
  };
396
- //# sourceMappingURL=terminal-lease-ULWXWNVY.js.map
397
+ //# sourceMappingURL=terminal-lease-WUZY7ZV5.js.map
@@ -3,17 +3,17 @@ import {
3
3
  removePath,
4
4
  reportRemovalFailures
5
5
  } from "./chunk-SVNXH4L2.js";
6
- import "./chunk-YCWGATWI.js";
6
+ import "./chunk-465YSENW.js";
7
7
  import {
8
8
  printError,
9
9
  printHeader,
10
10
  printOk
11
- } from "./chunk-ED4KHGC3.js";
11
+ } from "./chunk-PPAMZ32Z.js";
12
12
  import "./chunk-5TSRNF4G.js";
13
- import "./chunk-4VP4KH3K.js";
13
+ import "./chunk-JRIO5UD2.js";
14
+ import "./chunk-SST6Z5JA.js";
14
15
  import "./chunk-IKCO5N3L.js";
15
16
  import "./chunk-3I7MS7N2.js";
16
- import "./chunk-SST6Z5JA.js";
17
17
  import "./chunk-APJ265NV.js";
18
18
  import "./chunk-YXLYO42X.js";
19
19
  import {
@@ -330,4 +330,4 @@ export {
330
330
  projectContextInventory,
331
331
  runUninstallCommand
332
332
  };
333
- //# sourceMappingURL=uninstall-FZCQCDKC.js.map
333
+ //# sourceMappingURL=uninstall-7FV7IP4E.js.map
@@ -2,46 +2,47 @@ import { createRequire as __clioCreateRequire } from "node:module"; const requir
2
2
  import {
3
3
  LifecycleDomainModule,
4
4
  listMigrations
5
- } from "./chunk-K6WL7QZT.js";
5
+ } from "./chunk-JTSEDYVQ.js";
6
6
  import {
7
7
  readStateInfo
8
- } from "./chunk-VAWWTKDP.js";
8
+ } from "./chunk-3HAPLH5M.js";
9
9
  import {
10
10
  ConfigDomainModule,
11
11
  loadDomains
12
- } from "./chunk-KRPY7NTG.js";
13
- import "./chunk-E25LMLRW.js";
14
- import "./chunk-4BPJXDWC.js";
12
+ } from "./chunk-BMWK7ZIZ.js";
13
+ import "./chunk-YD734TPH.js";
14
+ import "./chunk-DR52UMZW.js";
15
+ import "./chunk-C4JBQ5SR.js";
15
16
  import "./chunk-2SFS6XQE.js";
16
17
  import "./chunk-ZWLZP4ZT.js";
17
18
  import "./chunk-CGKSTWHD.js";
18
19
  import {
19
20
  getVersionInfo
20
21
  } from "./chunk-XPLRXC72.js";
21
- import "./chunk-RD5U66HV.js";
22
+ import "./chunk-SROCI7ZU.js";
22
23
  import {
23
24
  initializeClioHome
24
- } from "./chunk-KOHPCX4K.js";
25
- import "./chunk-YCWGATWI.js";
25
+ } from "./chunk-DOOEX22V.js";
26
+ import "./chunk-465YSENW.js";
26
27
  import {
27
28
  printError,
28
29
  printHeader,
29
30
  printOk
30
- } from "./chunk-ED4KHGC3.js";
31
+ } from "./chunk-PPAMZ32Z.js";
31
32
  import "./chunk-5TSRNF4G.js";
32
- import "./chunk-AD2SYQYC.js";
33
- import "./chunk-4OC57DA6.js";
34
- import "./chunk-LL4KHSZI.js";
35
- import "./chunk-4VP4KH3K.js";
36
- import "./chunk-VEZEGCGW.js";
37
- import "./chunk-FQ4SKYE4.js";
38
- import "./chunk-IKCO5N3L.js";
39
- import "./chunk-3I7MS7N2.js";
33
+ import "./chunk-JRIO5UD2.js";
40
34
  import "./chunk-IHXBNWMM.js";
35
+ import "./chunk-UHXRNZ2J.js";
36
+ import "./chunk-4DGYLA73.js";
37
+ import "./chunk-LL4KHSZI.js";
41
38
  import "./chunk-SST6Z5JA.js";
42
39
  import "./chunk-FO5ZOVUY.js";
43
40
  import "./chunk-R346GLFC.js";
41
+ import "./chunk-D4MDIG46.js";
42
+ import "./chunk-FQ4SKYE4.js";
44
43
  import "./chunk-4ZG3XFUR.js";
44
+ import "./chunk-IKCO5N3L.js";
45
+ import "./chunk-3I7MS7N2.js";
45
46
  import "./chunk-APJ265NV.js";
46
47
  import "./chunk-YXLYO42X.js";
47
48
  import {
@@ -49,9 +50,9 @@ import {
49
50
  } from "./chunk-BNAZZHFG.js";
50
51
  import "./chunk-6EJMN2Y3.js";
51
52
  import "./chunk-WEPFGWHJ.js";
52
- import "./chunk-HXG4IURW.js";
53
+ import "./chunk-X2KV5FXT.js";
53
54
  import "./chunk-ZGVHUX3M.js";
54
- import "./chunk-TTNYS3EA.js";
55
+ import "./chunk-OB5HIGJY.js";
55
56
  import "./chunk-IWHMRKLL.js";
56
57
  import {
57
58
  init_esm_shims
@@ -341,4 +342,4 @@ async function runUpgradeCommand(argv) {
341
342
  export {
342
343
  runUpgradeCommand
343
344
  };
344
- //# sourceMappingURL=upgrade-346TZ6AV.js.map
345
+ //# sourceMappingURL=upgrade-K2HVIVMQ.js.map
@@ -1,75 +1,87 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
- readEvidenceIndex
4
- } from "./chunk-HC4CLZ2Y.js";
3
+ readEvidenceIndex,
4
+ readOutOfTurnUsageRows
5
+ } from "./chunk-GWS3VEIW.js";
5
6
  import {
6
7
  loadMemoryRecordsSync
7
- } from "./chunk-BRXQQJFP.js";
8
- import "./chunk-QQL5RT5M.js";
8
+ } from "./chunk-6M7VS3J3.js";
9
+ import "./chunk-UUANF5CR.js";
9
10
  import {
11
+ addResponseModelIdObservationCount,
12
+ emptyResponseModelIdObservationCounts,
10
13
  ledgerUsageCalls,
11
14
  listSessionLedgerRefs,
12
15
  parseSessionEntries,
13
- readAuditRows
14
- } from "./chunk-QQK64KLB.js";
15
- import "./chunk-QKMUKYO7.js";
16
- import "./chunk-3JLKSKD7.js";
17
- import "./chunk-34475P3I.js";
16
+ readAuditRows,
17
+ responseModelIdObservationCountsLabel
18
+ } from "./chunk-6TUKSZVF.js";
19
+ import "./chunk-KZ2H5X4G.js";
20
+ import "./chunk-M4AKACEO.js";
21
+ import "./chunk-RVG5JXAL.js";
22
+ import "./chunk-ZGH7FGS5.js";
23
+ import "./chunk-TSHXZTOQ.js";
18
24
  import "./chunk-TXOTCRLG.js";
19
- import "./chunk-G4BMMOKF.js";
20
- import "./chunk-MFFY33HR.js";
25
+ import "./chunk-HVDIIIQW.js";
26
+ import "./chunk-THKY7CD7.js";
27
+ import "./chunk-UVDSQ6LW.js";
28
+ import "./chunk-DR52UMZW.js";
21
29
  import {
22
30
  loadSkills
23
- } from "./chunk-4BPJXDWC.js";
31
+ } from "./chunk-C4JBQ5SR.js";
24
32
  import "./chunk-2SFS6XQE.js";
25
33
  import "./chunk-ZWLZP4ZT.js";
26
34
  import "./chunk-W6GROXXM.js";
27
- import "./chunk-2TZWSW76.js";
28
- import "./chunk-ZYKPLLNQ.js";
29
- import "./chunk-WPQLXFOZ.js";
30
- import "./chunk-7RXG6QRZ.js";
31
- import "./chunk-22NAGB7X.js";
32
- import "./chunk-AOCYTWAV.js";
33
- import "./chunk-MV3K5QF2.js";
35
+ import "./chunk-KCMKRQX4.js";
36
+ import "./chunk-WHGPSPT5.js";
37
+ import "./chunk-CEYBNUGC.js";
38
+ import "./chunk-5FR74PWO.js";
39
+ import "./chunk-OBMAI2DP.js";
40
+ import "./chunk-5C77SEEY.js";
41
+ import "./chunk-UND3GU2L.js";
34
42
  import "./chunk-CMZWFGD2.js";
35
43
  import "./chunk-I4HZDVNP.js";
36
- import "./chunk-FYYLNIL5.js";
37
- import "./chunk-UL3WSD3F.js";
44
+ import "./chunk-GH5622CP.js";
38
45
  import "./chunk-OQE5J4C6.js";
39
- import "./chunk-ECH6PKUQ.js";
40
- import "./chunk-BEY543CS.js";
41
- import "./chunk-5M54SPOL.js";
46
+ import "./chunk-GOXNB3AO.js";
47
+ import "./chunk-HWUFFB6L.js";
48
+ import "./chunk-DJNLUABN.js";
49
+ import "./chunk-AOCYTWAV.js";
50
+ import "./chunk-MV3K5QF2.js";
51
+ import "./chunk-UL3WSD3F.js";
52
+ import "./chunk-ODFEOB4F.js";
42
53
  import "./chunk-OZNBF4L3.js";
43
54
  import "./chunk-4BJ5BYCE.js";
55
+ import "./chunk-ECH6PKUQ.js";
44
56
  import "./chunk-6XLNIQDB.js";
45
57
  import "./chunk-5B2AEOW5.js";
46
58
  import "./chunk-CGKSTWHD.js";
47
- import "./chunk-YHZX5GEU.js";
48
- import "./chunk-EKMEHE4H.js";
49
- import "./chunk-YCWGATWI.js";
59
+ import "./chunk-XAKHZX5N.js";
60
+ import "./chunk-33YXPOE3.js";
61
+ import "./chunk-465YSENW.js";
50
62
  import {
51
63
  formatColumns,
52
64
  printError
53
- } from "./chunk-ED4KHGC3.js";
65
+ } from "./chunk-PPAMZ32Z.js";
54
66
  import "./chunk-5TSRNF4G.js";
55
- import "./chunk-QWU7ZBO7.js";
67
+ import "./chunk-VQNODYQ4.js";
56
68
  import "./chunk-CFGTUFWB.js";
57
- import "./chunk-AD2SYQYC.js";
58
- import "./chunk-4OC57DA6.js";
59
- import "./chunk-LL4KHSZI.js";
60
- import "./chunk-4VP4KH3K.js";
61
- import "./chunk-VEZEGCGW.js";
62
- import "./chunk-FQ4SKYE4.js";
63
- import "./chunk-IKCO5N3L.js";
64
- import "./chunk-3I7MS7N2.js";
69
+ import "./chunk-JRIO5UD2.js";
65
70
  import "./chunk-IHXBNWMM.js";
66
- import "./chunk-BPGS2WCQ.js";
71
+ import "./chunk-GEYXPTRF.js";
72
+ import "./chunk-UHXRNZ2J.js";
73
+ import "./chunk-4DGYLA73.js";
74
+ import "./chunk-LL4KHSZI.js";
67
75
  import "./chunk-SST6Z5JA.js";
68
76
  import {
69
77
  cwdHash
70
78
  } from "./chunk-FO5ZOVUY.js";
71
79
  import "./chunk-R346GLFC.js";
80
+ import "./chunk-D4MDIG46.js";
81
+ import "./chunk-FQ4SKYE4.js";
72
82
  import "./chunk-4ZG3XFUR.js";
83
+ import "./chunk-IKCO5N3L.js";
84
+ import "./chunk-3I7MS7N2.js";
73
85
  import "./chunk-FCSXB6T2.js";
74
86
  import "./chunk-APJ265NV.js";
75
87
  import "./chunk-YXLYO42X.js";
@@ -80,7 +92,7 @@ import {
80
92
  import "./chunk-6EJMN2Y3.js";
81
93
  import "./chunk-WEPFGWHJ.js";
82
94
  import "./chunk-ZGVHUX3M.js";
83
- import "./chunk-TTNYS3EA.js";
95
+ import "./chunk-OB5HIGJY.js";
84
96
  import "./chunk-7CR24IG7.js";
85
97
  import "./chunk-IWHMRKLL.js";
86
98
  import {
@@ -94,9 +106,10 @@ import { join, resolve } from "node:path";
94
106
  var HELP = `clio-coder usage report [--repo <path>] [--days <n>] [--json]
95
107
 
96
108
  Cross-session usage analyzer (experimental, read-only). Reads the local usage
97
- archive (receipts, session ledgers, audit rows, evidence index, memory store)
98
- and reports facts plus improvement opportunities, every line citing ids and
99
- counts. Nothing is written or stored; suggestions are printed only.
109
+ archive (receipts, session ledgers, the out-of-turn usage store, audit rows,
110
+ evidence index, memory store) and reports facts plus improvement opportunities,
111
+ every line citing ids and counts. Nothing is written or stored; suggestions are
112
+ printed only.
100
113
 
101
114
  Flags:
102
115
  --repo <path> restrict sessions (and runs via the run ledger) to one repo
@@ -127,6 +140,38 @@ function emptyUsageTotals() {
127
140
  costUsd: 0
128
141
  };
129
142
  }
143
+ function addResponseModelIdObservation(counts, call) {
144
+ addResponseModelIdObservationCount(counts, call.responseModelIdObservation, call.apiCalls ?? 1);
145
+ }
146
+ function emptyCallOrigins() {
147
+ return { rows: 0, sideQuestions: 0, handoffs: 0 };
148
+ }
149
+ function turnsOf(origins) {
150
+ return origins.rows - origins.sideQuestions - origins.handoffs;
151
+ }
152
+ function hasLabelledCall(origins) {
153
+ return origins.sideQuestions > 0 || origins.handoffs > 0;
154
+ }
155
+ function addOutOfTurnRow(origins, row) {
156
+ origins.rows += 1;
157
+ if (row.label === "side-question") origins.sideQuestions += 1;
158
+ else origins.handoffs += 1;
159
+ }
160
+ function outOfTurnUsageCall(row) {
161
+ return {
162
+ providerId: row.target,
163
+ attributedModelId: row.attributedModelId,
164
+ requestedModelId: row.attributedModelId,
165
+ responseModelIdObservation: { state: "not-observed" },
166
+ input: row.usage.input,
167
+ output: row.usage.output,
168
+ cacheRead: row.usage.cacheRead,
169
+ cacheWrite: row.usage.cacheWrite,
170
+ reasoningTokens: row.usage.reasoning,
171
+ totalTokens: row.usage.totalTokens,
172
+ costUsd: row.usage.costUsd
173
+ };
174
+ }
130
175
  function addUsageCall(totals, call) {
131
176
  totals.apiCalls += call.apiCalls ?? 1;
132
177
  totals.input += call.input;
@@ -238,6 +283,11 @@ async function runUsageCommand(argv) {
238
283
  (receipt) => repoRunIds === null || repoRunIds.has(receipt.runId)
239
284
  );
240
285
  const sessions = await readSessions(stateDir, windowStart, now, repoHash, diagnostics);
286
+ const outOfTurn = readOutOfTurnUsageRows(stateDir);
287
+ for (const error of outOfTurn.errors) diagnostics.notes.push(error);
288
+ const outOfTurnRows = outOfTurn.rows.filter(
289
+ (row) => inWindow(row.timestamp, windowStart, now) && (repoHash === void 0 || row.repoIdentity === repoHash)
290
+ );
241
291
  const auditRows = await readAuditRows(stateDir);
242
292
  diagnostics.malformedAuditRows = auditRows.errors.length;
243
293
  const auditInWindow = auditRows.rows.filter((row) => row.ts !== null && inWindow(row.ts, windowStart, now));
@@ -311,19 +361,33 @@ async function runUsageCommand(argv) {
311
361
  }
312
362
  const usageByModel = /* @__PURE__ */ new Map();
313
363
  const usageTotals = emptyUsageTotals();
364
+ const callOrigins = emptyCallOrigins();
365
+ const foldCall = (call) => {
366
+ addUsageCall(usageTotals, call);
367
+ const key = `${call.providerId}::${call.attributedModelId}`;
368
+ const entry = usageByModel.get(key) ?? {
369
+ providerId: call.providerId,
370
+ attributedModelId: call.attributedModelId,
371
+ requestedModelIds: /* @__PURE__ */ new Set(),
372
+ responseModelIdObservationCounts: emptyResponseModelIdObservationCounts(),
373
+ totals: emptyUsageTotals()
374
+ };
375
+ entry.requestedModelIds.add(call.requestedModelId);
376
+ addResponseModelIdObservation(entry.responseModelIdObservationCounts, call);
377
+ addUsageCall(entry.totals, call);
378
+ usageByModel.set(key, entry);
379
+ };
314
380
  for (const session of sessions) {
315
381
  for (const call of session.usageCalls) {
316
- addUsageCall(usageTotals, call);
317
- const key = `${call.providerId}::${call.modelId}`;
318
- const entry = usageByModel.get(key) ?? {
319
- providerId: call.providerId,
320
- modelId: call.modelId,
321
- totals: emptyUsageTotals()
322
- };
323
- addUsageCall(entry.totals, call);
324
- usageByModel.set(key, entry);
382
+ foldCall(call);
383
+ callOrigins.rows += 1;
325
384
  }
326
385
  }
386
+ for (const row of outOfTurnRows) {
387
+ foldCall(outOfTurnUsageCall(row));
388
+ addOutOfTurnRow(callOrigins, row);
389
+ }
390
+ const usageMeasurable = presence.sessionsPresent || outOfTurnRows.length > 0;
327
391
  const usageRows = [...usageByModel.values()].sort(
328
392
  (a, b) => b.totals.totalTokens - a.totals.totalTokens || a.providerId.localeCompare(b.providerId)
329
393
  );
@@ -393,10 +457,27 @@ async function runUsageCommand(argv) {
393
457
  if (presence.receiptsPresent) emit({ kind: "fact", fact: "dispatch-runs", value: receipts.length });
394
458
  else emit({ kind: "fact", fact: "receipt-store-missing", path: presence.receiptsPath });
395
459
  emit({ kind: "fact", fact: "audit-tool-calls", value: auditToolCalls.length, blocked: auditBlocked.length });
396
- if (presence.sessionsPresent) {
397
- emit({ kind: "fact", fact: "tokens", ...usageTotals });
460
+ if (usageMeasurable) {
461
+ emit({
462
+ kind: "fact",
463
+ fact: "tokens",
464
+ ...usageTotals,
465
+ ...hasLabelledCall(callOrigins) ? {
466
+ turns: turnsOf(callOrigins),
467
+ sideQuestions: callOrigins.sideQuestions,
468
+ handoffs: callOrigins.handoffs
469
+ } : {}
470
+ });
398
471
  for (const row of usageRows) {
399
- emit({ kind: "fact", fact: "model-usage", providerId: row.providerId, modelId: row.modelId, ...row.totals });
472
+ emit({
473
+ kind: "fact",
474
+ fact: "model-usage",
475
+ providerId: row.providerId,
476
+ attributedModelId: row.attributedModelId,
477
+ requestedModelIds: [...row.requestedModelIds].sort(),
478
+ responseModelIdObservationCounts: row.responseModelIdObservationCounts,
479
+ ...row.totals
480
+ });
400
481
  }
401
482
  }
402
483
  for (const [tool, totals] of topTools) emit({ kind: "fact", fact: "top-tool", tool, ...totals });
@@ -444,22 +525,41 @@ async function runUsageCommand(argv) {
444
525
  out(` receipt store missing at ${presence.receiptsPath}`);
445
526
  }
446
527
  out(` audited tool calls in window: ${auditToolCalls.length} (${auditBlocked.length} blocked/denied)`);
447
- if (presence.sessionsPresent) {
528
+ if (usageMeasurable) {
448
529
  out(
449
530
  ` tokens in window: ${usageTotals.totalTokens} over ${usageTotals.apiCalls} model calls (input ${usageTotals.input}, output ${usageTotals.output}, cache read ${usageTotals.cacheRead}, cache write ${usageTotals.cacheWrite}, reasoning ${usageTotals.reasoningTokens})`
450
531
  );
532
+ if (hasLabelledCall(callOrigins)) {
533
+ out(` turns in window: ${turnsOf(callOrigins)}`);
534
+ if (callOrigins.sideQuestions > 0) out(` side questions in window: ${callOrigins.sideQuestions}`);
535
+ if (callOrigins.handoffs > 0) out(` handoffs in window: ${callOrigins.handoffs}`);
536
+ }
451
537
  out(` provider-reported cost in window: $${usageTotals.costUsd.toFixed(4)}`);
452
538
  }
453
539
  if (usageRows.length > 0) {
454
540
  out("");
455
- out(" tokens by model (from session ledgers, provider-reported)");
541
+ out(" tokens by attributed model (from session ledgers and provider-reported usage)");
456
542
  process.stdout.write(
457
543
  indent(
458
544
  formatColumns([
459
- ["provider", "model", "calls", "input", "output", "cache read", "reasoning", "tokens", "cost"],
545
+ [
546
+ "provider",
547
+ "attributed model",
548
+ "requested model ids",
549
+ "response model id observation",
550
+ "calls",
551
+ "input",
552
+ "output",
553
+ "cache read",
554
+ "reasoning",
555
+ "tokens",
556
+ "cost"
557
+ ],
460
558
  ...usageRows.map((row) => [
461
559
  row.providerId,
462
- row.modelId,
560
+ row.attributedModelId,
561
+ [...row.requestedModelIds].sort().join(","),
562
+ responseModelIdObservationCountsLabel(row.responseModelIdObservationCounts),
463
563
  String(row.totals.apiCalls),
464
564
  String(row.totals.input),
465
565
  String(row.totals.output),
@@ -801,4 +901,4 @@ export {
801
901
  inWindow,
802
902
  runUsageCommand
803
903
  };
804
- //# sourceMappingURL=usage-6KKXR32N.js.map
904
+ //# sourceMappingURL=usage-GTZELZQX.js.map