@iowarp/clio-coder 0.5.1 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. package/.claude-plugin/marketplace.json +4 -4
  2. package/CHANGELOG.md +24 -0
  3. package/CONTRIBUTING.md +9 -0
  4. package/README.md +3 -3
  5. package/ROADMAP.md +30 -5
  6. package/dist/{acp-X3N7JDGS.js → acp-F6PGOFZ4.js} +2 -2
  7. package/dist/{agents-UYGSMAWR.js → agents-ZHP4R6EX.js} +22 -21
  8. package/dist/assets/codewiki.json +1 -1
  9. package/dist/{auth-CEDCO6O6.js → auth-N75U2H3Z.js} +4 -4
  10. package/dist/{chunk-DGMY2DWE.js → chunk-23UIXH6Z.js} +3 -3
  11. package/dist/{chunk-QTYRMBW6.js → chunk-36XVK5P5.js} +5 -5
  12. package/dist/{chunk-BIQLF3NZ.js → chunk-3DZ4LPLS.js} +6 -6
  13. package/dist/{chunk-7VNLPEUG.js → chunk-3GSPCWFX.js} +12 -12
  14. package/dist/{chunk-CRHPCPZP.js → chunk-4KC4CHKJ.js} +2 -2
  15. package/dist/{chunk-M5FPIZQW.js → chunk-4WJBWKMI.js} +2 -2
  16. package/dist/{chunk-KBUTSJSR.js → chunk-4XBYHXGK.js} +2 -2
  17. package/dist/{chunk-6W75D37F.js → chunk-53P775GE.js} +6 -3
  18. package/dist/{chunk-XZWSP67B.js → chunk-5APYAXCB.js} +2 -2
  19. package/dist/{chunk-A7G7OUND.js → chunk-67HPYNTJ.js} +2 -2
  20. package/dist/{chunk-5JQR5B4D.js → chunk-6KV4KCQZ.js} +4 -4
  21. package/dist/{chunk-V4XJWDHR.js → chunk-6UKFRTXI.js} +2 -1
  22. package/dist/{chunk-NDPF2N2L.js → chunk-7DW7CJW2.js} +2 -2
  23. package/dist/{chunk-5KQEUIWM.js → chunk-7LUEQODV.js} +4 -4
  24. package/dist/{chunk-LNOXCGN2.js → chunk-7UFDIOBT.js} +3 -3
  25. package/dist/{chunk-DXSETN72.js → chunk-7WUGNN43.js} +2 -2
  26. package/dist/{chunk-GW2KVAVI.js → chunk-AA3GRZWS.js} +2 -2
  27. package/dist/{chunk-6B76U65H.js → chunk-ADO3OQIC.js} +3 -3
  28. package/dist/{chunk-UX2L5CUD.js → chunk-AI36V3ON.js} +3 -3
  29. package/dist/{chunk-B7GY6QER.js → chunk-B26OUMJW.js} +2 -2
  30. package/dist/{chunk-LAR7DX5E.js → chunk-B5TASTCK.js} +153 -62
  31. package/dist/{chunk-TGWZXJ7L.js → chunk-BEMQK5Q7.js} +92 -84
  32. package/dist/{chunk-RNDCROSG.js → chunk-CNXU7TR2.js} +3 -3
  33. package/dist/{chunk-AKQ3N3L4.js → chunk-CVMUXT64.js} +35 -66
  34. package/dist/{chunk-733ZBT5P.js → chunk-E74MJF6G.js} +4 -4
  35. package/dist/{chunk-T2MDZES3.js → chunk-EBMTBE76.js} +3 -3
  36. package/dist/{chunk-OZ76TLGU.js → chunk-EEITU7S6.js} +2 -2
  37. package/dist/{chunk-7KI4ZSEB.js → chunk-ELDJWJKM.js} +97 -14
  38. package/dist/{chunk-GCQFN7YI.js → chunk-EMYEQLWO.js} +2 -2
  39. package/dist/{chunk-7FHSA7VB.js → chunk-EQPFEDFV.js} +222 -127
  40. package/dist/{chunk-TDGYTWM6.js → chunk-F4I3H56H.js} +2 -2
  41. package/dist/chunk-F6KCJO3U.js +523 -0
  42. package/dist/{chunk-FGSQHUCK.js → chunk-F6VKWTTY.js} +5 -5
  43. package/dist/{chunk-UJD5MPP6.js → chunk-FLNXQQ5B.js} +2 -2
  44. package/dist/{chunk-GGEEG7CD.js → chunk-FOSRJ2VZ.js} +4 -4
  45. package/dist/{chunk-ZARZ4POR.js → chunk-G5ZDQQE3.js} +3 -3
  46. package/dist/{chunk-QM7HFPQQ.js → chunk-G62JBPXN.js} +7 -7
  47. package/dist/{chunk-ZJPORZTC.js → chunk-GIAI7A2K.js} +2 -2
  48. package/dist/chunk-GPTR6OTU.js +2551 -0
  49. package/dist/{chunk-EZD2BXGP.js → chunk-GUFQPTQK.js} +2 -2
  50. package/dist/{chunk-OPD7GL6F.js → chunk-H6FQVNZC.js} +8 -7
  51. package/dist/chunk-H7REJ7L5.js +80 -0
  52. package/dist/{chunk-EYTLV3W3.js → chunk-HTWTORF7.js} +2 -2
  53. package/dist/{chunk-DF6PI6GN.js → chunk-I6UKQPGS.js} +3 -3
  54. package/dist/{chunk-ISHUS7HC.js → chunk-JRW236JT.js} +3 -3
  55. package/dist/{chunk-DE2LU267.js → chunk-KKAJGT3B.js} +3 -2
  56. package/dist/{chunk-OV62D6KO.js → chunk-KQMYL5GR.js} +3 -3
  57. package/dist/{chunk-WAISUJNQ.js → chunk-KWMFC7FN.js} +3 -3
  58. package/dist/{chunk-4D7QM7S5.js → chunk-LXYHCCIZ.js} +9 -9
  59. package/dist/{chunk-NFSK2VNU.js → chunk-LZMTVVN4.js} +2 -2
  60. package/dist/{chunk-ZNTGRDFA.js → chunk-M5PMRZSR.js} +123 -37
  61. package/dist/chunk-MMZMM6SW.js +131 -0
  62. package/dist/{chunk-FFYTC2KQ.js → chunk-MNABNEBX.js} +2 -2
  63. package/dist/{chunk-XMDBTYCH.js → chunk-N3CWOGVF.js} +3 -3
  64. package/dist/{chunk-VYRQHORQ.js → chunk-NMQSO6Z6.js} +4 -3
  65. package/dist/{chunk-4SYHGVDE.js → chunk-OQNCLZI4.js} +4 -4
  66. package/dist/{chunk-EG4ARXPC.js → chunk-OX6QTA4N.js} +3 -3
  67. package/dist/{chunk-P4GNZPXO.js → chunk-OYUS3UZP.js} +2 -2
  68. package/dist/{chunk-VWKR2NN5.js → chunk-PF36KOGI.js} +290 -111
  69. package/dist/{chunk-LFYA3HYH.js → chunk-PIU6BXXW.js} +2 -2
  70. package/dist/{chunk-EKV4UBCM.js → chunk-PZBQUJ2F.js} +2 -2
  71. package/dist/{chunk-7RET77VB.js → chunk-Q2HKY32Y.js} +2 -2
  72. package/dist/{chunk-VMTCZ2GR.js → chunk-Q4RMNWMZ.js} +4 -4
  73. package/dist/chunk-Q6FRR3AQ.js +48 -0
  74. package/dist/{chunk-6RJMYYIE.js → chunk-QJSIAJBY.js} +3 -3
  75. package/dist/{chunk-DOUISWEE.js → chunk-QOJ4ERMU.js} +5 -5
  76. package/dist/{chunk-IFPDAD7R.js → chunk-RWSRKXLT.js} +3 -3
  77. package/dist/{chunk-T33IYTZM.js → chunk-SAASVMIY.js} +3 -3
  78. package/dist/{chunk-2DTIWSAW.js → chunk-SEQDH6JC.js} +3 -3
  79. package/dist/{chunk-BRCOSE7O.js → chunk-SZUO5BSE.js} +2 -2
  80. package/dist/{chunk-HOEDA42N.js → chunk-T7HZ7KJF.js} +2 -2
  81. package/dist/{chunk-UCINIRHW.js → chunk-TPCZXWLT.js} +3 -3
  82. package/dist/{chunk-ZUKUCZYZ.js → chunk-TQ2KTH4A.js} +2 -2
  83. package/dist/{chunk-4WOOTKFD.js → chunk-U3FETNQB.js} +341 -20
  84. package/dist/{chunk-5B3RTYAK.js → chunk-UGDSB4AN.js} +2 -2
  85. package/dist/{chunk-VKHLUZNO.js → chunk-UZ7YBL43.js} +3 -3
  86. package/dist/{chunk-OXWRE2QJ.js → chunk-VKMSEO7Y.js} +4 -4
  87. package/dist/{chunk-FBXTHPNZ.js → chunk-VLX5VZ35.js} +5 -5
  88. package/dist/{chunk-KIAUZGKF.js → chunk-WAGBMMNX.js} +5 -5
  89. package/dist/{chunk-BFOSV5EZ.js → chunk-WX2YCH7F.js} +2 -2
  90. package/dist/{chunk-SAL2SBP4.js → chunk-XBIGUILU.js} +25 -10
  91. package/dist/{chunk-XOH3SD7H.js → chunk-XKYBFRWR.js} +5 -5
  92. package/dist/{chunk-U5QU5ZOD.js → chunk-XYPWFSU5.js} +3 -3
  93. package/dist/{chunk-YBUECLAF.js → chunk-YEJQDODA.js} +2 -2
  94. package/dist/{chunk-YQ6XEFVK.js → chunk-Z74OGONW.js} +39 -7
  95. package/dist/{chunk-I4ELN5BX.js → chunk-ZTNOEJRI.js} +2 -2
  96. package/dist/cli/index.js +25 -25
  97. package/dist/{clio-Z3JTEL2I.js → clio-4IKFE25F.js} +2 -2
  98. package/dist/{clio-context-tools-GR4OHFSO.js → clio-context-tools-OHJXYX4R.js} +25 -23
  99. package/dist/{code-nav-4X3OI6DK.js → code-nav-XPM3MY5I.js} +7 -7
  100. package/dist/{config-QYIRZHI7.js → config-343YS25T.js} +42 -40
  101. package/dist/{config-graph-TS3SGGQW.js → config-graph-WI263KDX.js} +42 -40
  102. package/dist/{configure-OX7KVJTQ.js → configure-GZDG4HER.js} +21 -21
  103. package/dist/{context-2BNF6HTP.js → context-4OFO7N7Y.js} +12 -12
  104. package/dist/{context-GTMUGAR4.js → context-JLK2RLOG.js} +41 -39
  105. package/dist/{context-NNLBES2Y.js → context-O6DIWCF6.js} +23 -21
  106. package/dist/{context-clear-FVJQBBL7.js → context-clear-MR7KOGQI.js} +41 -39
  107. package/dist/{context-working-set-MOE72SD6.js → context-working-set-YZAD3KWO.js} +14 -13
  108. package/dist/{data-tool-JJPBGMQJ.js → data-tool-EKD7DFHG.js} +7 -7
  109. package/dist/{detail-QZM3QAAU.js → detail-YZPHFEVJ.js} +42 -40
  110. package/dist/{dispatch-runner-2KSQO5FU.js → dispatch-runner-VKVXVTWJ.js} +43 -41
  111. package/dist/{doctor-2U6YR5NH.js → doctor-53AVQXAO.js} +16 -15
  112. package/dist/{doctor-deep-2EJQSHIZ.js → doctor-deep-BLRB2NCG.js} +5 -5
  113. package/dist/{eval-ZKK77JWZ.js → eval-P3BQSLQE.js} +21 -20
  114. package/dist/{evidence-POSEQW4Q.js → evidence-6LLI6SZH.js} +43 -41
  115. package/dist/{evidence-FMP7KZZ2.js → evidence-HTN3JLUO.js} +41 -39
  116. package/dist/{evidence-PJTOE7JA.js → evidence-NJRE3R5H.js} +41 -39
  117. package/dist/{evolve-JT6PAMZE.js → evolve-WWZHJVJP.js} +41 -39
  118. package/dist/{fleet-4XR2ZEOF.js → fleet-GGZ4BVJE.js} +63 -61
  119. package/dist/{fleet-6JJKNIMV.js → fleet-QG3IIWWM.js} +43 -41
  120. package/dist/{fleet-commands-L6WFT7KZ.js → fleet-commands-J2ZIKISQ.js} +7 -7
  121. package/dist/{fleet-decisions-BTQMWU5A.js → fleet-decisions-Y2Q7375Q.js} +8 -8
  122. package/dist/{fleet-graph-553DZ67Q.js → fleet-graph-TCBCCCBP.js} +11 -11
  123. package/dist/{fleet-inspect-SWJMFVDP.js → fleet-inspect-KOLKBC56.js} +43 -41
  124. package/dist/{fleet-preflight-KSIHWQAU.js → fleet-preflight-44UNCC4Y.js} +26 -24
  125. package/dist/{fleet-validate-7NLAE26R.js → fleet-validate-K2FXRZVA.js} +13 -13
  126. package/dist/{fleet-verify-QM6XU2KL.js → fleet-verify-AS444WDW.js} +41 -39
  127. package/dist/{fleet-view-RLKFHFCM.js → fleet-view-X4JU4J6O.js} +42 -40
  128. package/dist/gui/ops-worker.js +9 -9
  129. package/dist/gui/reads-worker.js +9 -8
  130. package/dist/{init-VBUPHABR.js → init-VSOWFHVL.js} +53 -51
  131. package/dist/{interactive-JCVBPVYT.js → interactive-JRCBENLZ.js} +154 -92
  132. package/dist/{interop-J7UOBOSF.js → interop-JR6BCY7R.js} +10 -10
  133. package/dist/{inventory-54G7FSVY.js → inventory-3JUGLVJI.js} +42 -40
  134. package/dist/{library-ROZAMUIL.js → library-7BOH3Y7N.js} +15 -15
  135. package/dist/{library-B3UPGY4V.js → library-7PFONXUI.js} +9 -9
  136. package/dist/{library-MXQA5DLT.js → library-TUYZMFIA.js} +7 -7
  137. package/dist/{library-import-2LTWOVBD.js → library-import-TJVXKLDK.js} +10 -10
  138. package/dist/{library-inventory-LJ3XHLWO.js → library-inventory-MD3AYTP4.js} +9 -9
  139. package/dist/{library-validation-DARHHUNW.js → library-validation-ZDLITEA3.js} +7 -7
  140. package/dist/{memory-5BPQSSOP.js → memory-Q2YVOKK5.js} +41 -39
  141. package/dist/{models-R6HILX6X.js → models-M7BOCW7F.js} +17 -16
  142. package/dist/{monitor-HVRKSFEQ.js → monitor-2HD3MC67.js} +46 -44
  143. package/dist/{orchestrator-OR7V4YWK.js → orchestrator-OUW3ZN6Y.js} +1890 -222
  144. package/dist/{panes-A743ONZ5.js → panes-TTPPSYCL.js} +3 -3
  145. package/dist/{preload-KLXFOX2F.js → preload-A47C2NUF.js} +41 -39
  146. package/dist/{providers-CMETPZNS.js → providers-T43W7EL4.js} +4 -4
  147. package/dist/{resources-FY6XYFN2.js → resources-TP6X2V6W.js} +20 -11
  148. package/dist/{run-UIDRUYAY.js → run-LDSBPMCS.js} +60 -58
  149. package/dist/{share-CAFMMQLM.js → share-URHKKMHR.js} +9 -9
  150. package/dist/{skills-ERKQUC7L.js → skills-E477MOOO.js} +13 -11
  151. package/dist/{skills-eval-JDAXOPWC.js → skills-eval-AIBR2L7H.js} +582 -92
  152. package/dist/{skills-inventory-TVUYJDVN.js → skills-inventory-HLMKY3R5.js} +13 -11
  153. package/dist/{slash-commands-MNKQ5QP3.js → slash-commands-LIIZKA5Y.js} +26 -24
  154. package/dist/{startup-background-PJMWTKVO.js → startup-background-JR2KDK6R.js} +42 -40
  155. package/dist/{steer-KKYXJSH4.js → steer-D7RTAPCM.js} +3 -3
  156. package/dist/{system-IVVZRKGI.js → system-X2P5N4IY.js} +14 -13
  157. package/dist/{targets-RFRUMCQ5.js → targets-VFFAKUFM.js} +25 -24
  158. package/dist/{tasks-6L2JJRC5.js → tasks-ERAWZA22.js} +6 -6
  159. package/dist/{trace-LA5MVR4Y.js → trace-MA5BT7XY.js} +3 -3
  160. package/dist/{usage-LA33SG3R.js → usage-WYFY2L6M.js} +49 -47
  161. package/dist/{verifiers-ECA5GIHL.js → verifiers-TYIW2XKF.js} +7 -7
  162. package/dist/{verify-R6QQCCEB.js → verify-242UFYTP.js} +6 -6
  163. package/dist/{web-fetch-PVZNMBOB.js → web-fetch-LRAGYU6Y.js} +3 -3
  164. package/dist/{wiki-generate-HL73TICA.js → wiki-generate-OFKOX2T6.js} +52 -50
  165. package/dist/worker/entry.js +30 -28
  166. package/docs/architecture/context-engine.md +2 -0
  167. package/docs/guide/context-continuity.md +49 -0
  168. package/docs/guide/proactive-memory.md +3 -0
  169. package/library/registry.yaml +292 -32
  170. package/library/skills/README.md +27 -2
  171. package/library/skills/context/context-handoff/SKILL.md +10 -4
  172. package/library/skills/meta/clio-coder-dev/SKILL.md +92 -88
  173. package/library/skills/meta/clio-coder-dev/evals.md +51 -46
  174. package/library/skills/meta/clio-coder-dev/plugin.json +2 -2
  175. package/library/skills/meta/clio-coder-dev/references/change-map.md +49 -0
  176. package/library/skills/meta/clio-coder-test/SKILL.md +89 -142
  177. package/library/skills/meta/clio-coder-test/evals.md +58 -62
  178. package/library/skills/meta/clio-coder-test/plugin.json +2 -2
  179. package/library/skills/meta/clio-coder-test/references/harness.md +3 -3
  180. package/library/skills/meta/clio-coder-test/references/lifecycle-validation.md +30 -0
  181. package/library/skills/meta/clio-coder-test/references/test-map.md +60 -89
  182. package/library/skills/registry.yaml +5 -5
  183. package/library/skills/skill-marketplace.json +12 -14
  184. package/package.json +1 -1
  185. package/src/cli/skills-eval.ts +1064 -54
  186. package/src/core/clio-repo.ts +3 -0
  187. package/src/core/tool-names.ts +1 -0
  188. package/src/domains/context/budget/inspection.ts +9 -0
  189. package/src/domains/context/budget/live-view.ts +418 -0
  190. package/src/domains/context/budget/pressure.ts +393 -0
  191. package/src/domains/context/budget/request-fit.ts +15 -0
  192. package/src/domains/evidence/build.ts +24 -0
  193. package/src/domains/memory/commit-state.ts +160 -0
  194. package/src/domains/memory/operations.ts +18 -10
  195. package/src/domains/memory/prompt-cache.ts +95 -0
  196. package/src/domains/memory/prompt-section.ts +50 -7
  197. package/src/domains/memory/relevance.ts +93 -0
  198. package/src/domains/memory/restoration.ts +78 -0
  199. package/src/domains/memory/store.ts +39 -1
  200. package/src/domains/middleware/memory-intervention.ts +116 -24
  201. package/src/domains/prompts/compiler.ts +1 -1
  202. package/src/domains/prompts/extension.ts +38 -1
  203. package/src/domains/resources/index.ts +11 -0
  204. package/src/domains/resources/skills/catalog-view.ts +571 -0
  205. package/src/domains/resources/skills/lexical-match.ts +136 -0
  206. package/src/domains/resources/skills/loader.ts +38 -0
  207. package/src/domains/resources/skills/promotion.ts +1 -55
  208. package/src/domains/resources/skills/provenance-pin.ts +50 -20
  209. package/src/domains/safety/action-classifier.ts +1 -0
  210. package/src/domains/session/compaction/branch-summary.ts +4 -1
  211. package/src/domains/session/compaction/compact.ts +18 -2
  212. package/src/domains/session/compaction/cut-point.ts +20 -1
  213. package/src/domains/session/compaction/tokens.ts +48 -3
  214. package/src/domains/session/context-accounting.ts +8 -1
  215. package/src/domains/session/continuity/carry.ts +59 -0
  216. package/src/domains/session/continuity/contract.ts +592 -0
  217. package/src/domains/session/continuity/evidence.ts +290 -0
  218. package/src/domains/session/continuity/fold.ts +1075 -0
  219. package/src/domains/session/continuity/note.ts +79 -0
  220. package/src/domains/session/continuity/operator-request.ts +104 -0
  221. package/src/domains/session/continuity/persistence.ts +408 -0
  222. package/src/domains/session/continuity/ports.ts +231 -0
  223. package/src/domains/session/continuity/projection.ts +538 -0
  224. package/src/domains/session/continuity/validate.ts +352 -0
  225. package/src/domains/session/entries.ts +50 -3
  226. package/src/domains/session/index.ts +48 -0
  227. package/src/domains/session/migrations/index.ts +7 -3
  228. package/src/domains/session/tree/fork.ts +15 -1
  229. package/src/engine/agent.ts +133 -9
  230. package/src/engine/session.ts +13 -6
  231. package/src/entry/orchestrator.ts +114 -31
  232. package/src/interactive/chat-loop.ts +216 -60
  233. package/src/interactive/chat-renderer.ts +99 -8
  234. package/src/interactive/context-overlay.ts +24 -3
  235. package/src/interactive/continuity-controller.ts +526 -0
  236. package/src/interactive/footer/dashboard.ts +12 -1
  237. package/src/interactive/footer/pages.ts +15 -7
  238. package/src/interactive/footer/widgets.ts +32 -7
  239. package/src/interactive/interactive-application.ts +2 -0
  240. package/src/interactive/interactive-slash-runtime.ts +43 -6
  241. package/src/interactive/model-session-replay.ts +130 -3
  242. package/src/interactive/output-reserve.ts +35 -0
  243. package/src/interactive/overlay-session-lifecycle.ts +18 -11
  244. package/src/interactive/session-transcript.ts +2 -1
  245. package/src/interactive/slash-commands.ts +20 -1
  246. package/src/interactive/turn-context.ts +685 -62
  247. package/src/interactive/turn-middleware.ts +39 -6
  248. package/src/interactive/turn-persistence.ts +15 -2
  249. package/src/interactive/turn-runtime.ts +48 -5
  250. package/src/tools/agent-tools.ts +3 -1
  251. package/src/tools/bootstrap.ts +6 -0
  252. package/src/tools/builtin-tool-catalog.ts +9 -0
  253. package/src/tools/context/index.ts +148 -113
  254. package/src/tools/context/surface.ts +11 -7
  255. package/src/tools/core-bootstrap.ts +4 -0
  256. package/src/tools/observation.ts +8 -2
  257. package/src/tools/policy.ts +3 -0
  258. package/src/tools/self-compact.ts +31 -0
  259. package/src/tools/surface.ts +1 -0
  260. package/src/tools/tasks.ts +1 -1
  261. package/dist/chunk-3OODBJ45.js +0 -1325
  262. package/dist/chunk-CTFPFW3H.js +0 -44
  263. package/dist/chunk-I4Y4WKZR.js +0 -386
@@ -39,7 +39,10 @@ import {
39
39
  clockLocal,
40
40
  compactReasoningTokens,
41
41
  contextCategorySwatch,
42
+ contextOccupancyBar,
42
43
  contextQuadrant,
44
+ contextUsageText,
45
+ continuityContextFromSession,
43
46
  createAssistantGenerationTiming,
44
47
  createCoalescingChatRenderer,
45
48
  createDefaultArtifactProviders,
@@ -91,7 +94,6 @@ import {
91
94
  rehydrateChatPanelFromTurns,
92
95
  relative,
93
96
  renderBashTranscriptExecution,
94
- renderContextMeterBar,
95
97
  renderContextMeterGrid,
96
98
  renderDispatchActivity,
97
99
  renderEvictedTokensLine,
@@ -120,18 +122,19 @@ import {
120
122
  validateHandoffFiles,
121
123
  validateHandoffGoal,
122
124
  verifyReceiptFileReport,
125
+ withContinuityReplay,
123
126
  workerEscalationNotice,
124
127
  workerRunEntryFields,
125
128
  workspaceQuadrant,
126
129
  zipColumnBlocks,
127
130
  zipColumns
128
- } from "./chunk-ZNTGRDFA.js";
129
- import "./chunk-YQ6XEFVK.js";
131
+ } from "./chunk-M5PMRZSR.js";
132
+ import "./chunk-Z74OGONW.js";
130
133
  import {
131
134
  extractText,
132
135
  isSelfExplainingAbort
133
- } from "./chunk-QTYRMBW6.js";
134
- import "./chunk-ZJPORZTC.js";
136
+ } from "./chunk-36XVK5P5.js";
137
+ import "./chunk-GIAI7A2K.js";
135
138
  import {
136
139
  CLIO_APP_KEYBINDINGS,
137
140
  CLIO_APP_KEYBINDING_IDS,
@@ -187,7 +190,7 @@ import {
187
190
  planLibraryImport,
188
191
  releaseLibraryImport,
189
192
  renderProposalEntry
190
- } from "./chunk-T2MDZES3.js";
193
+ } from "./chunk-EBMTBE76.js";
191
194
  import {
192
195
  detectInteropAgents
193
196
  } from "./chunk-4A6YRGV4.js";
@@ -205,23 +208,23 @@ import {
205
208
  parseSlashCommand,
206
209
  renderArgsSpec,
207
210
  workerAskedByModel
208
- } from "./chunk-SAL2SBP4.js";
211
+ } from "./chunk-XBIGUILU.js";
209
212
  import "./chunk-DGC6X6XR.js";
210
213
  import {
211
214
  resolveExtensionCommands
212
215
  } from "./chunk-RFCKPS2V.js";
213
216
  import "./chunk-QUIJZSDW.js";
214
- import "./chunk-UCINIRHW.js";
217
+ import "./chunk-TPCZXWLT.js";
215
218
  import "./chunk-TL6LNERH.js";
216
219
  import "./chunk-GGPF6LLE.js";
217
220
  import {
218
221
  formatUserTaskHandoff
219
- } from "./chunk-ISHUS7HC.js";
220
- import "./chunk-QM7HFPQQ.js";
222
+ } from "./chunk-JRW236JT.js";
223
+ import "./chunk-G62JBPXN.js";
221
224
  import {
222
225
  appendOutOfTurnUsageRow
223
- } from "./chunk-GW2KVAVI.js";
224
- import "./chunk-HOEDA42N.js";
226
+ } from "./chunk-AA3GRZWS.js";
227
+ import "./chunk-T7HZ7KJF.js";
225
228
  import {
226
229
  SETTINGS_DESCRIPTIONS_BY_ID,
227
230
  SETTINGS_HELP_BY_ID,
@@ -239,10 +242,10 @@ import {
239
242
  recallErrorMessage,
240
243
  recallParentTurnId,
241
244
  resolveRecall
242
- } from "./chunk-EG4ARXPC.js";
245
+ } from "./chunk-OX6QTA4N.js";
243
246
  import {
244
247
  foldWorkingSet
245
- } from "./chunk-EZD2BXGP.js";
248
+ } from "./chunk-GUFQPTQK.js";
246
249
  import {
247
250
  getAtPath,
248
251
  isRoutingPath,
@@ -254,7 +257,7 @@ import {
254
257
  settingsGroupForPath,
255
258
  settingsSectionForPath
256
259
  } from "./chunk-LJRBX7QR.js";
257
- import "./chunk-4WOOTKFD.js";
260
+ import "./chunk-U3FETNQB.js";
258
261
  import "./chunk-Y3JU5RPK.js";
259
262
  import {
260
263
  CombinedAutocompleteProvider,
@@ -293,20 +296,20 @@ import {
293
296
  loadMemoryRecordsSync,
294
297
  proposeMemoryPromotion,
295
298
  renderCostAggregate
296
- } from "./chunk-7FHSA7VB.js";
299
+ } from "./chunk-EQPFEDFV.js";
297
300
  import "./chunk-PECBKCDK.js";
298
- import "./chunk-OV62D6KO.js";
299
- import "./chunk-I4ELN5BX.js";
301
+ import "./chunk-KQMYL5GR.js";
302
+ import "./chunk-ZTNOEJRI.js";
300
303
  import {
301
304
  preflightWriteBoundaries
302
- } from "./chunk-DXSETN72.js";
305
+ } from "./chunk-7WUGNN43.js";
303
306
  import {
304
307
  bindExecutionPlanEndpoints,
305
308
  compileFleetExecutionPlan
306
- } from "./chunk-NFSK2VNU.js";
309
+ } from "./chunk-LZMTVVN4.js";
307
310
  import {
308
311
  trustStateWord
309
- } from "./chunk-OZ76TLGU.js";
312
+ } from "./chunk-EEITU7S6.js";
310
313
  import {
311
314
  addResponseModelIdObservationCount,
312
315
  addResponseModelIdObservationCounts,
@@ -315,12 +318,12 @@ import {
315
318
  ledgerUsageCalls,
316
319
  responseModelIdObservationCountsLabel,
317
320
  responseModelIdObservationFromRecord
318
- } from "./chunk-3OODBJ45.js";
321
+ } from "./chunk-GPTR6OTU.js";
319
322
  import "./chunk-BOBCCDJ6.js";
320
323
  import {
321
324
  describeLocalCapacity
322
325
  } from "./chunk-E6IPKW2E.js";
323
- import "./chunk-XMDBTYCH.js";
326
+ import "./chunk-N3CWOGVF.js";
324
327
  import "./chunk-UQIVHSE4.js";
325
328
  import "./chunk-BYFHHCFV.js";
326
329
  import {
@@ -331,7 +334,7 @@ import "./chunk-LQTKDAUO.js";
331
334
  import "./chunk-ZU4JPCPR.js";
332
335
  import {
333
336
  foldDecisionBoard
334
- } from "./chunk-U5QU5ZOD.js";
337
+ } from "./chunk-XYPWFSU5.js";
335
338
  import {
336
339
  emptyWorkspaceSnapshot,
337
340
  probeGitStatusAsync,
@@ -340,9 +343,9 @@ import {
340
343
  import {
341
344
  filterEntriesToActivePath
342
345
  } from "./chunk-O5F25NIE.js";
343
- import "./chunk-VMTCZ2GR.js";
346
+ import "./chunk-Q4RMNWMZ.js";
344
347
  import "./chunk-SD7SHNDW.js";
345
- import "./chunk-7RET77VB.js";
348
+ import "./chunk-Q2HKY32Y.js";
346
349
  import "./chunk-YQ3GFEUY.js";
347
350
  import "./chunk-WTQGRBHV.js";
348
351
  import "./chunk-GLIQT7SU.js";
@@ -357,23 +360,23 @@ import {
357
360
  } from "./chunk-XISLDHEL.js";
358
361
  import {
359
362
  collectSessionEntries
360
- } from "./chunk-RNDCROSG.js";
363
+ } from "./chunk-CNXU7TR2.js";
361
364
  import {
362
365
  applyLibraryLifecycle,
363
366
  libraryImportOutcome,
364
367
  planLibraryLifecycle,
365
368
  releaseLibraryLifecycle,
366
369
  retryLibraryRefresh
367
- } from "./chunk-5KQEUIWM.js";
370
+ } from "./chunk-7LUEQODV.js";
368
371
  import {
369
372
  inspectLibraryCopy,
370
373
  readLibraryInventory
371
- } from "./chunk-5JQR5B4D.js";
372
- import "./chunk-ZARZ4POR.js";
373
- import "./chunk-UX2L5CUD.js";
374
+ } from "./chunk-6KV4KCQZ.js";
375
+ import "./chunk-G5ZDQQE3.js";
376
+ import "./chunk-AI36V3ON.js";
374
377
  import {
375
378
  installSkill
376
- } from "./chunk-LAR7DX5E.js";
379
+ } from "./chunk-B5TASTCK.js";
377
380
  import "./chunk-DNCE23JJ.js";
378
381
  import "./chunk-CDQ2UC6W.js";
379
382
  import {
@@ -387,11 +390,11 @@ import {
387
390
  validateFleetGraph
388
391
  } from "./chunk-5LP5FNNR.js";
389
392
  import "./chunk-NVPXXW2H.js";
390
- import "./chunk-4D7QM7S5.js";
391
- import "./chunk-DOUISWEE.js";
393
+ import "./chunk-LXYHCCIZ.js";
394
+ import "./chunk-QOJ4ERMU.js";
392
395
  import {
393
396
  retiredIntegrityVersionOf
394
- } from "./chunk-VKHLUZNO.js";
397
+ } from "./chunk-UZ7YBL43.js";
395
398
  import {
396
399
  askAxis,
397
400
  askUserExposure,
@@ -402,14 +405,14 @@ import {
402
405
  decisionFactsForAnswer,
403
406
  openDetachedBatchViews,
404
407
  runBashCommand
405
- } from "./chunk-VWKR2NN5.js";
408
+ } from "./chunk-PF36KOGI.js";
406
409
  import {
407
410
  foldSessionTaskHistory,
408
411
  foldTaskBoard,
409
412
  taskBoardCounts
410
- } from "./chunk-NDPF2N2L.js";
413
+ } from "./chunk-7DW7CJW2.js";
411
414
  import "./chunk-7QXCO3AF.js";
412
- import "./chunk-T33IYTZM.js";
415
+ import "./chunk-SAASVMIY.js";
413
416
  import "./chunk-OH3YYA3B.js";
414
417
  import {
415
418
  extensionPanelText
@@ -422,31 +425,32 @@ import {
422
425
  sanitizeCallTargetText,
423
426
  sanitizeMultilineDisplayText
424
427
  } from "./chunk-XNIZBOFV.js";
425
- import "./chunk-XZWSP67B.js";
428
+ import "./chunk-5APYAXCB.js";
426
429
  import {
427
430
  agentRoleFactsResolver,
428
431
  requestExecutionRole,
429
432
  withAttemptRole
430
- } from "./chunk-BRCOSE7O.js";
433
+ } from "./chunk-SZUO5BSE.js";
431
434
  import "./chunk-PGQG7ZMW.js";
432
435
  import "./chunk-L4N3DWNW.js";
433
- import "./chunk-TDGYTWM6.js";
434
- import "./chunk-CTFPFW3H.js";
435
- import "./chunk-DE2LU267.js";
436
+ import "./chunk-F4I3H56H.js";
437
+ import "./chunk-Q6FRR3AQ.js";
438
+ import "./chunk-KKAJGT3B.js";
439
+ import "./chunk-H7REJ7L5.js";
436
440
  import "./chunk-YYLCPDCC.js";
437
441
  import {
438
442
  redactSecretString
439
443
  } from "./chunk-EFSEIZE6.js";
440
- import "./chunk-KBUTSJSR.js";
444
+ import "./chunk-4XBYHXGK.js";
441
445
  import {
442
446
  expandInlineFileReferencesAsync
443
- } from "./chunk-YBUECLAF.js";
444
- import "./chunk-CRHPCPZP.js";
445
- import "./chunk-FFYTC2KQ.js";
446
- import "./chunk-UJD5MPP6.js";
447
+ } from "./chunk-YEJQDODA.js";
448
+ import "./chunk-4KC4CHKJ.js";
449
+ import "./chunk-MNABNEBX.js";
450
+ import "./chunk-FLNXQQ5B.js";
447
451
  import "./chunk-DZLR4UEH.js";
448
- import "./chunk-OPD7GL6F.js";
449
- import "./chunk-733ZBT5P.js";
452
+ import "./chunk-H6FQVNZC.js";
453
+ import "./chunk-E74MJF6G.js";
450
454
  import "./chunk-GHXGMFQ5.js";
451
455
  import "./chunk-KECNXMDE.js";
452
456
  import "./chunk-WXA2CFJO.js";
@@ -462,7 +466,7 @@ import {
462
466
  resolveRuntimeTarget,
463
467
  thinkingLevelChoiceLabel,
464
468
  thinkingLevelFromChoiceLabel
465
- } from "./chunk-EYTLV3W3.js";
469
+ } from "./chunk-HTWTORF7.js";
466
470
  import "./chunk-MCJKEGHO.js";
467
471
  import "./chunk-DVTBERFY.js";
468
472
  import {
@@ -478,7 +482,7 @@ import {
478
482
  ceilChars,
479
483
  contentChars,
480
484
  extractReasoningTokens
481
- } from "./chunk-6W75D37F.js";
485
+ } from "./chunk-53P775GE.js";
482
486
  import {
483
487
  formatContextWindowSlots
484
488
  } from "./chunk-77DCC6JZ.js";
@@ -501,25 +505,26 @@ import "./chunk-L7G7K4I2.js";
501
505
  import "./chunk-ALJWT6O6.js";
502
506
  import "./chunk-4WV4PI66.js";
503
507
  import "./chunk-HMN2C6YL.js";
508
+ import "./chunk-F6KCJO3U.js";
509
+ import "./chunk-UZVYEF57.js";
504
510
  import {
505
511
  SKILL_SUGGESTION_PREFIX
506
- } from "./chunk-I4Y4WKZR.js";
507
- import "./chunk-UZVYEF57.js";
512
+ } from "./chunk-MMZMM6SW.js";
508
513
  import "./chunk-O3VV6IVK.js";
509
514
  import {
510
515
  openSession,
511
516
  sessionPaths
512
- } from "./chunk-EKV4UBCM.js";
517
+ } from "./chunk-PZBQUJ2F.js";
513
518
  import "./chunk-UHW5V7HC.js";
514
519
  import {
515
520
  isUserVisibleAgent
516
- } from "./chunk-LNOXCGN2.js";
521
+ } from "./chunk-7UFDIOBT.js";
517
522
  import "./chunk-BJH6WFIB.js";
518
523
  import {
519
524
  interopAgentKind
520
525
  } from "./chunk-5EQO5NWP.js";
521
- import "./chunk-VYRQHORQ.js";
522
- import "./chunk-P4GNZPXO.js";
526
+ import "./chunk-NMQSO6Z6.js";
527
+ import "./chunk-OYUS3UZP.js";
523
528
  import "./chunk-R2P2U3ZS.js";
524
529
  import "./chunk-NTTS3O53.js";
525
530
  import "./chunk-C2CPOIH2.js";
@@ -527,7 +532,7 @@ import "./chunk-MGLRTOCK.js";
527
532
  import "./chunk-M4KFUXS7.js";
528
533
  import {
529
534
  ToolNames
530
- } from "./chunk-V4XJWDHR.js";
535
+ } from "./chunk-6UKFRTXI.js";
531
536
  import {
532
537
  SettingsValidationError,
533
538
  bindAgentProfileInSettings,
@@ -3120,12 +3125,32 @@ function renderContextLedgerLines(ledger, contentWidth, workingSet, workingSetCo
3120
3125
  var STREAMING_FALLBACK_TICK_MS = 1e3;
3121
3126
  function openContextOverlay(tui, getLedger, options) {
3122
3127
  let contentWidth = DEFAULT_CONTENT_WIDTH;
3123
- const render2 = () => renderContextLedgerLines(
3124
- getLedger(),
3125
- contentWidth,
3126
- options?.getWorkingSet?.() ?? null,
3127
- options?.getWorkingSetConfig?.() ?? null
3128
- ).join("\n");
3128
+ const render2 = () => {
3129
+ const lines = renderContextLedgerLines(
3130
+ getLedger(),
3131
+ contentWidth,
3132
+ options?.getWorkingSet?.() ?? null,
3133
+ options?.getWorkingSetConfig?.() ?? null
3134
+ );
3135
+ const inspection = options?.chat?.inspectLiveBudget?.();
3136
+ if (inspection?.status === "available") {
3137
+ const view = inspection.view;
3138
+ const count = (value) => value === null ? "unknown" : formatTokens(value);
3139
+ lines.push(
3140
+ "",
3141
+ `Next request: ${count(view.inputTokens)} input + ${count(view.outputReserveTokens)} output`,
3142
+ `Headroom: ${count(view.headroomTokens)} \xB7 ${view.phase}`
3143
+ );
3144
+ if (view.pendingHandoff) {
3145
+ lines.push(
3146
+ `Handoff: ${view.lastOutcome?.outcome ?? "pending"}`,
3147
+ view.pendingHandoff.id,
3148
+ `/context recover ${view.pendingHandoff.id} reduce|deliver`
3149
+ );
3150
+ } else if (view.lastOutcome) lines.push(`Last handoff: ${view.lastOutcome.outcome}`);
3151
+ }
3152
+ return lines.join("\n");
3153
+ };
3129
3154
  const text = new Text(render2(), 0, 0);
3130
3155
  const body = {
3131
3156
  render(width) {
@@ -13549,7 +13574,7 @@ function createOverlaySessionLifecycle(deps) {
13549
13574
  try {
13550
13575
  const turns = deps.readStructuredEntries(sessionId);
13551
13576
  const leafTurnId = session.tree(sessionId).leafId;
13552
- const replayOptions = leafTurnId ? { activeLeafTurnId: leafTurnId } : {};
13577
+ const replayOptions = withContinuityReplay(turns, leafTurnId ? { activeLeafTurnId: leafTurnId } : {}, session);
13553
13578
  deps.resetTranscript();
13554
13579
  rehydrateChatPanelFromTurns(deps.chatPanel, turns, replayOptions);
13555
13580
  const replayMessages = buildModelReplayAgentMessagesFromTurns(turns, replayOptions);
@@ -13601,8 +13626,9 @@ function createOverlaySessionLifecycle(deps) {
13601
13626
  if (!sessionId) throw new Error("no current session after turn switch");
13602
13627
  const turns = deps.readStructuredEntries(sessionId);
13603
13628
  deps.resetTranscript();
13604
- rehydrateChatPanelFromTurns(deps.chatPanel, turns, { uptoTurnId: turnId });
13605
- const replayMessages = buildModelReplayAgentMessagesFromTurns(turns, { uptoTurnId: turnId });
13629
+ const replayOptions = withContinuityReplay(turns, { uptoTurnId: turnId }, session);
13630
+ rehydrateChatPanelFromTurns(deps.chatPanel, turns, replayOptions);
13631
+ const replayMessages = buildModelReplayAgentMessagesFromTurns(turns, replayOptions);
13606
13632
  deps.chat.resetForSession(turnId, replayMessages);
13607
13633
  rescopeToBranch(session, turns, turnId);
13608
13634
  } catch (error) {
@@ -13673,12 +13699,10 @@ function createOverlaySessionLifecycle(deps) {
13673
13699
  function replayFork(forkedSessionId, parentTurnId, session) {
13674
13700
  try {
13675
13701
  const turns = deps.readStructuredEntries(forkedSessionId);
13676
- rehydrateChatPanelFromTurns(deps.chatPanel, turns);
13677
13702
  const leafTurnId = session.tree(forkedSessionId).leafId ?? parentTurnId;
13678
- const replayMessages = buildModelReplayAgentMessagesFromTurns(
13679
- turns,
13680
- leafTurnId ? { activeLeafTurnId: leafTurnId } : {}
13681
- );
13703
+ const replayOptions = withContinuityReplay(turns, leafTurnId ? { activeLeafTurnId: leafTurnId } : {}, session);
13704
+ rehydrateChatPanelFromTurns(deps.chatPanel, turns, replayOptions);
13705
+ const replayMessages = buildModelReplayAgentMessagesFromTurns(turns, replayOptions);
13682
13706
  deps.chat.resetForSession(leafTurnId, replayMessages);
13683
13707
  rescopeToBranch(session, turns, leafTurnId);
13684
13708
  } catch (error) {
@@ -13901,8 +13925,9 @@ function createOverlaySessionLifecycle(deps) {
13901
13925
  try {
13902
13926
  const turns = deps.readStructuredEntries(toSessionId);
13903
13927
  deps.resetTranscript();
13904
- rehydrateChatPanelFromTurns(deps.chatPanel, turns);
13905
- deps.chat.resetForSession(null, buildModelReplayAgentMessagesFromTurns(turns));
13928
+ const replayOptions = withContinuityReplay(turns, {}, session);
13929
+ rehydrateChatPanelFromTurns(deps.chatPanel, turns, replayOptions);
13930
+ deps.chat.resetForSession(null, buildModelReplayAgentMessagesFromTurns(turns, replayOptions));
13906
13931
  rescopeToBranch(session, turns, null);
13907
13932
  } catch (error) {
13908
13933
  deps.stderr(`[/handoff] seeding replay failed: ${error instanceof Error ? error.message : String(error)}
@@ -17559,8 +17584,8 @@ function isMermaid(token) {
17559
17584
  }
17560
17585
  function codeSpan(line) {
17561
17586
  const content = line || "\xA0";
17562
- const longestBacktickRun = Math.max(0, ...Array.from(content.matchAll(/`+/g), (match) => match[0].length));
17563
- const fence = "`".repeat(longestBacktickRun + 1);
17587
+ const longestBacktickRun2 = Math.max(0, ...Array.from(content.matchAll(/`+/g), (match) => match[0].length));
17588
+ const fence = "`".repeat(longestBacktickRun2 + 1);
17564
17589
  const padding = content.startsWith("`") || content.endsWith("`") ? " " : "";
17565
17590
  return `${fence}${padding}${content}${padding}${fence}`;
17566
17591
  }
@@ -19245,13 +19270,13 @@ function contextPage(state, width) {
19245
19270
  ...wrapTextWithAnsi(
19246
19271
  theme2.style(
19247
19272
  "accent",
19248
- `${formatFooterTokens(ledger.usedTokens)} / ${ledger.contextWindow > 0 ? formatFooterTokens(ledger.contextWindow) : "unknown window"} tokens${ledger.percent === null ? "" : ` \xB7 ${ledger.percent.toFixed(1)}% occupied`}`,
19273
+ state.context.budget ? `${contextUsageText(state.context)} tokens` : `${formatFooterTokens(ledger.usedTokens)} / ${ledger.contextWindow > 0 ? formatFooterTokens(ledger.contextWindow) : "unknown window"} tokens${ledger.percent === null ? "" : ` \xB7 ${ledger.percent.toFixed(1)}% occupied`}`,
19249
19274
  { bold: true }
19250
19275
  ),
19251
19276
  width
19252
19277
  ),
19253
19278
  ...wrapTextWithAnsi(
19254
- `Free ${ledger.contextWindow > 0 ? formatFooterTokens(ledger.freeTokens) : "unknown"} \xB7 reserved ${formatFooterTokens(ledger.reserveTokens)} \xB7 ${ledger.toolCount} tool definitions \xB7 compaction ${ledger.compactionAuto ? `auto${ledger.compactionThreshold === null ? "" : ` @${Math.round(ledger.compactionThreshold * 100)}%`}` : "manual"}`,
19279
+ `${state.context.budget ? "Capture diagnostics: " : ""}Free ${ledger.contextWindow > 0 ? formatFooterTokens(ledger.freeTokens) : "unknown"} \xB7 reserved ${formatFooterTokens(ledger.reserveTokens)} \xB7 ${ledger.toolCount} tool definitions \xB7 compaction ${ledger.compactionAuto ? `auto${ledger.compactionThreshold === null ? "" : ` @${Math.round(ledger.compactionThreshold * 100)}%`}` : "manual"}`,
19255
19280
  width
19256
19281
  )
19257
19282
  ];
@@ -19266,7 +19291,13 @@ function contextPage(state, width) {
19266
19291
  legendWidth
19267
19292
  )
19268
19293
  );
19269
- out.push("", rule(theme2, width, { left: "CONTEXT COMPOSITION", leftToken: "accent" }));
19294
+ out.push(
19295
+ "",
19296
+ rule(theme2, width, {
19297
+ left: state.context.budget ? "CAPTURE DIAGNOSTICS" : "CONTEXT COMPOSITION",
19298
+ leftToken: "accent"
19299
+ })
19300
+ );
19270
19301
  out.push(...width >= 76 ? zipColumns(grid, legend, gridWidth, legendWidth, " ") : [...grid, "", ...legend]);
19271
19302
  out.push(
19272
19303
  ...wrapTextWithAnsi(
@@ -19326,8 +19357,8 @@ function renderCompactDashboard(state, width) {
19326
19357
  const activity = `${theme2.fg("accent", phase)}${workers ? theme2.fg("agent", ` \xB7 ${workers} active`) : ""}`;
19327
19358
  const identity = clean(state.session.target ?? "No model selected");
19328
19359
  const thinking = theme2.fg("reason", `think ${clean(state.session.thinking ?? "off")}`);
19329
- const usage = `${formatFooterTokens(ledger?.usedTokens ?? state.context.used ?? 0)} / ${ledger?.contextWindow ?? state.context.contextWindow ? formatFooterTokens(ledger?.contextWindow ?? state.context.contextWindow ?? 0) : "?"}`;
19330
- const context = `${ledger ? renderContextMeterBar(ledger, w >= 100 ? 14 : 8, theme2) : ""} ${usage}`;
19360
+ const usage = contextUsageText(state.context);
19361
+ const context = `${ledger || state.context.budget ? contextOccupancyBar(state.context, w >= 100 ? 14 : 8, theme2) : ""} ${usage}`;
19331
19362
  const rightWidth = Math.min(Math.floor(w * 0.48), visibleWidth(context));
19332
19363
  const weekly = state.quotaRoute ? routeWeeklyQuota(state.quotaRoute, state.quota ?? []) : null;
19333
19364
  const leftRoom = Math.max(1, w - rightWidth - 3);
@@ -19899,6 +19930,13 @@ function buildFooterDashboard(deps) {
19899
19930
  } : null
19900
19931
  },
19901
19932
  context: {
19933
+ ...contextUsage?.revision ? {
19934
+ budget: {
19935
+ revision: contextUsage.revision,
19936
+ historical: contextUsage.historical ?? true,
19937
+ inputSource: contextUsage.inputSource ?? "unknown"
19938
+ }
19939
+ } : {},
19902
19940
  label: null,
19903
19941
  used: contextUsage?.tokens ?? null,
19904
19942
  contextWindow: contextUsage?.contextWindow ?? null,
@@ -21647,6 +21685,13 @@ function renderDoctorReport(findings, width) {
21647
21685
 
21648
21686
  // src/interactive/interactive-slash-runtime.ts
21649
21687
  var EXPORT_RENDER_WIDTH = 100;
21688
+ function longestBacktickRun(lines) {
21689
+ let longest = 0;
21690
+ for (const line of lines) {
21691
+ for (const run of line.match(/`+/gu) ?? []) longest = Math.max(longest, run.length);
21692
+ }
21693
+ return longest;
21694
+ }
21650
21695
  function resolveThinkingCapability(providers, settings) {
21651
21696
  const resolved = resolveModelRuntimeCapabilitiesForProviders(
21652
21697
  providers,
@@ -21841,7 +21886,7 @@ function createInteractiveSlashRuntime(deps) {
21841
21886
  deps.requestRender();
21842
21887
  },
21843
21888
  runDoctor: async ({ deep }) => {
21844
- const { collectDoctorFindings, doctorNotice } = await import("./doctor-2U6YR5NH.js");
21889
+ const { collectDoctorFindings, doctorNotice } = await import("./doctor-53AVQXAO.js");
21845
21890
  const autonomy = deps.getSettings?.().safety.autonomy;
21846
21891
  const findings = await collectDoctorFindings({
21847
21892
  workspaceRoot: cwd(),
@@ -21985,6 +22030,15 @@ function createInteractiveSlashRuntime(deps) {
21985
22030
  deps.setEditorText(text);
21986
22031
  deps.requestRender();
21987
22032
  },
22033
+ runHandoffRecovery: (handoffId, action) => {
22034
+ if (!deps.onRecoverHandoff) {
22035
+ appendCommandNotice("error", "[/context recover] native handoff recovery is unavailable");
22036
+ return;
22037
+ }
22038
+ void deps.onRecoverHandoff(handoffId, action).catch(
22039
+ (error) => appendCommandNotice("error", `[/context recover] ${error instanceof Error ? error.message : String(error)}`)
22040
+ );
22041
+ },
21988
22042
  runCompact: (instructions) => {
21989
22043
  runCompactWithNotice(deps.onCompact, appendCommandNotice, instructions);
21990
22044
  },
@@ -21998,10 +22052,15 @@ function createInteractiveSlashRuntime(deps) {
21998
22052
  const turns = deps.readStructuredEntries(sessionId);
21999
22053
  const exportPanel = createChatPanel({ unboundedToolBodies: true, getOutputStyle: () => "detailed" });
22000
22054
  const leafTurnId = deps.session?.tree(sessionId).leafId ?? null;
22001
- rehydrateChatPanelFromTurns(exportPanel, turns, {
22002
- unboundedToolBodies: true,
22003
- ...leafTurnId ? { activeLeafTurnId: leafTurnId } : {}
22004
- });
22055
+ rehydrateChatPanelFromTurns(
22056
+ exportPanel,
22057
+ turns,
22058
+ withContinuityReplay(
22059
+ turns,
22060
+ { unboundedToolBodies: true, ...leafTurnId ? { activeLeafTurnId: leafTurnId } : {} },
22061
+ deps.session
22062
+ )
22063
+ );
22005
22064
  const ansiLines = exportPanel.render(EXPORT_RENDER_WIDTH);
22006
22065
  const exportedAt = deps.now?.() ?? /* @__PURE__ */ new Date();
22007
22066
  const date = dateLocal(exportedAt);
@@ -22013,8 +22072,9 @@ function createInteractiveSlashRuntime(deps) {
22013
22072
  mkdirSync(resolve4(target, ".."), { recursive: true });
22014
22073
  if (markdown) {
22015
22074
  const lines = ansiLines.map(stripTerminalSequences);
22016
- const header = [`# Clio session ${sessionId}`, "", `Exported ${exportedAt.toISOString()}`, "", "```text"];
22017
- writeFileSync(target, `${[...header, ...lines, "```", ""].join("\n")}`, "utf8");
22075
+ const fence = "`".repeat(Math.max(3, longestBacktickRun(lines) + 1));
22076
+ const header = [`# Clio session ${sessionId}`, "", `Exported ${exportedAt.toISOString()}`, "", `${fence}text`];
22077
+ writeFileSync(target, `${[...header, ...lines, fence, ""].join("\n")}`, "utf8");
22018
22078
  } else {
22019
22079
  writeFileSync(target, renderSessionHtml({ sessionId, exportedAt: exportedAt.toISOString(), ansiLines }), "utf8");
22020
22080
  }
@@ -22388,7 +22448,8 @@ function createSessionTranscript(deps) {
22388
22448
  deps.chat.resetForSession(
22389
22449
  leafTurnId,
22390
22450
  buildModelReplayAgentMessagesFromTurns(turns, {
22391
- ...leafTurnId ? { activeLeafTurnId: leafTurnId } : {}
22451
+ ...leafTurnId ? { activeLeafTurnId: leafTurnId } : {},
22452
+ continuity: continuityContextFromSession(deps.session)
22392
22453
  })
22393
22454
  );
22394
22455
  deps.refreshStatus();
@@ -22901,6 +22962,7 @@ async function createInteractiveApplication(deps) {
22901
22962
  ...deps.onSelectModel ? { onSelectModel: deps.onSelectModel } : {},
22902
22963
  ...deps.onSetThinkingLevel ? { onSetThinkingLevel: deps.onSetThinkingLevel } : {},
22903
22964
  ...deps.onCompact ? { onCompact: deps.onCompact } : {},
22965
+ ...deps.onRecoverHandoff ? { onRecoverHandoff: deps.onRecoverHandoff } : {},
22904
22966
  ...deps.onInit ? { onInit: deps.onInit } : {},
22905
22967
  ...deps.onContextClear ? { onContextClear: deps.onContextClear } : {},
22906
22968
  ...deps.onContextRefresh ? { onContextRefresh: deps.onContextRefresh } : {},
@@ -23379,7 +23441,7 @@ async function createInteractiveApplication(deps) {
23379
23441
  });
23380
23442
  const settings = deps.getSettings?.();
23381
23443
  if (settings)
23382
- void import("./startup-background-PJMWTKVO.js").then(
23444
+ void import("./startup-background-JR2KDK6R.js").then(
23383
23445
  ({ prepareWorkerTargets }) => prepareWorkerTargets({
23384
23446
  settings,
23385
23447
  providers: deps.providers,
@@ -23472,4 +23534,4 @@ export {
23472
23534
  routeOverlayKey,
23473
23535
  startInteractive
23474
23536
  };
23475
- //# sourceMappingURL=interactive-JCVBPVYT.js.map
23537
+ //# sourceMappingURL=interactive-JRCBENLZ.js.map
@@ -3,20 +3,20 @@ import {
3
3
  applyInteropAdoption,
4
4
  planInteropAdoption,
5
5
  renderInteropAdoptionPlan
6
- } from "./chunk-T2MDZES3.js";
6
+ } from "./chunk-EBMTBE76.js";
7
7
  import {
8
8
  detectInteropAgents
9
9
  } from "./chunk-4A6YRGV4.js";
10
- import "./chunk-UCINIRHW.js";
10
+ import "./chunk-TPCZXWLT.js";
11
11
  import "./chunk-GGPF6LLE.js";
12
12
  import "./chunk-3UW3KU4A.js";
13
13
  import {
14
14
  printError
15
15
  } from "./chunk-NBXFPI7U.js";
16
16
  import "./chunk-SQZHXUB3.js";
17
- import "./chunk-ZARZ4POR.js";
18
- import "./chunk-UX2L5CUD.js";
19
- import "./chunk-LAR7DX5E.js";
17
+ import "./chunk-G5ZDQQE3.js";
18
+ import "./chunk-AI36V3ON.js";
19
+ import "./chunk-B5TASTCK.js";
20
20
  import "./chunk-DNCE23JJ.js";
21
21
  import "./chunk-CDQ2UC6W.js";
22
22
  import "./chunk-5LP5FNNR.js";
@@ -24,20 +24,20 @@ import "./chunk-NVPXXW2H.js";
24
24
  import "./chunk-Z4GLJ6J4.js";
25
25
  import "./chunk-VNBICSS2.js";
26
26
  import "./chunk-ALJWT6O6.js";
27
- import "./chunk-LNOXCGN2.js";
27
+ import "./chunk-7UFDIOBT.js";
28
28
  import "./chunk-BJH6WFIB.js";
29
29
  import {
30
30
  INTEROP_AGENT_KINDS,
31
31
  interopAgentKind
32
32
  } from "./chunk-5EQO5NWP.js";
33
- import "./chunk-VYRQHORQ.js";
34
- import "./chunk-P4GNZPXO.js";
33
+ import "./chunk-NMQSO6Z6.js";
34
+ import "./chunk-OYUS3UZP.js";
35
35
  import "./chunk-R2P2U3ZS.js";
36
36
  import "./chunk-NTTS3O53.js";
37
37
  import "./chunk-C2CPOIH2.js";
38
38
  import "./chunk-MGLRTOCK.js";
39
39
  import "./chunk-M4KFUXS7.js";
40
- import "./chunk-V4XJWDHR.js";
40
+ import "./chunk-6UKFRTXI.js";
41
41
  import {
42
42
  readSettings
43
43
  } from "./chunk-56XP4FJU.js";
@@ -251,4 +251,4 @@ async function runAdopt(args) {
251
251
  export {
252
252
  runInteropCommand
253
253
  };
254
- //# sourceMappingURL=interop-J7UOBOSF.js.map
254
+ //# sourceMappingURL=interop-JR6BCY7R.js.map