@aragon-agent/cli 0.6.47 → 0.6.48

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 (775) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +27 -6
  3. package/dist/agent/coalesce.d.ts +1 -1
  4. package/dist/agent/controller.d.ts +21 -21
  5. package/dist/agent/controller.js +13 -13
  6. package/dist/agent/conversation-reset.d.ts +1 -1
  7. package/dist/agent/governance-wiring.d.ts +6 -6
  8. package/dist/agent/governance-wiring.js +4 -4
  9. package/dist/agent/headless.d.ts +5 -5
  10. package/dist/agent/headless.js +4 -4
  11. package/dist/agent/job-notices.d.ts +1 -1
  12. package/dist/agent/job-notices.js +1 -1
  13. package/dist/agent/kit-apply.d.ts +3 -3
  14. package/dist/agent/kit-apply.js +3 -3
  15. package/dist/agent/model-profile-settings.d.ts +2 -2
  16. package/dist/agent/model-profile-settings.js +6 -6
  17. package/dist/agent/prompt-options.d.ts +1 -1
  18. package/dist/agent/system-prompt.d.ts +1 -1
  19. package/dist/{ui → app}/App.d.ts +9 -9
  20. package/dist/{ui → app}/App.js +79 -79
  21. package/dist/{ui → app}/use-startup-notices.d.ts +1 -1
  22. package/dist/{ui → app}/use-startup-notices.js +2 -2
  23. package/dist/cli.js +29 -29
  24. package/dist/commands/agents-command.js +1 -1
  25. package/dist/commands/builtins.js +9 -9
  26. package/dist/commands/governance-command.js +2 -2
  27. package/dist/commands/governance-runs-table.js +1 -1
  28. package/dist/commands/kit-command.js +1 -1
  29. package/dist/commands/perf.d.ts +3 -3
  30. package/dist/commands/perf.js +1 -1
  31. package/dist/commands/registry.d.ts +8 -8
  32. package/dist/commands/skills.js +2 -2
  33. package/dist/commands/team-command.js +1 -1
  34. package/dist/compaction/archive.d.ts +1 -1
  35. package/dist/compaction/archive.js +1 -1
  36. package/dist/compaction/child.d.ts +3 -3
  37. package/dist/compaction/child.js +4 -4
  38. package/dist/compaction/command.js +5 -5
  39. package/dist/compaction/compactor.d.ts +6 -6
  40. package/dist/compaction/compactor.js +6 -6
  41. package/dist/compaction/context-command.js +1 -1
  42. package/dist/compaction/digest.js +1 -1
  43. package/dist/compaction/memory-input.js +1 -1
  44. package/dist/compaction/memory-validation.js +1 -1
  45. package/dist/compaction/memory.js +1 -1
  46. package/dist/compaction/summarize-call.js +1 -1
  47. package/dist/compaction/summary-prompt.js +1 -1
  48. package/dist/compaction/tail-budget.js +2 -2
  49. package/dist/compaction/wiring.d.ts +5 -5
  50. package/dist/compaction/wiring.js +2 -2
  51. package/dist/config/cli-commands.d.ts +1 -1
  52. package/dist/config/cli-commands.js +3 -3
  53. package/dist/config/env.d.ts +1 -1
  54. package/dist/config/env.js +4 -4
  55. package/dist/config/load.d.ts +2 -2
  56. package/dist/config/load.js +6 -6
  57. package/dist/config/migrate-state-out-of-config.js +1 -1
  58. package/dist/config/model-profile-store.d.ts +4 -54
  59. package/dist/config/model-profile-store.js +3 -3
  60. package/dist/config/prompt-history.js +1 -1
  61. package/dist/config/store.d.ts +2 -2
  62. package/dist/config/store.js +3 -3
  63. package/dist/diagnostics/doctor.js +4 -4
  64. package/dist/exec/bridge/decisions.d.ts +1 -1
  65. package/dist/exec/bridge/human-answers.d.ts +1 -1
  66. package/dist/exec/bridge/human-answers.js +1 -1
  67. package/dist/exec/bridge/protocol.d.ts +1 -1
  68. package/dist/exec/bridge/server.js +1 -1
  69. package/dist/exec/events.d.ts +2 -2
  70. package/dist/exec/index.d.ts +1 -1
  71. package/dist/exec/index.js +1 -1
  72. package/dist/exec/permission.js +1 -1
  73. package/dist/exec/runner.d.ts +3 -3
  74. package/dist/exec/runner.js +2 -2
  75. package/dist/exec/threads/runtime.js +1 -1
  76. package/dist/fast/digest.d.ts +1 -1
  77. package/dist/fast/digest.js +1 -1
  78. package/dist/fast/frames.d.ts +1 -1
  79. package/dist/fast/frames.js +1 -1
  80. package/dist/fast/prompt.d.ts +1 -1
  81. package/dist/fast/prompt.js +1 -1
  82. package/dist/fast/review-call.js +1 -1
  83. package/dist/fast/reviewer.d.ts +3 -3
  84. package/dist/fast/reviewer.js +1 -1
  85. package/dist/fast/summary-call.d.ts +3 -3
  86. package/dist/fast/summary-call.js +2 -2
  87. package/dist/fast/summary-prompt.d.ts +1 -1
  88. package/dist/fast/summary-prompt.js +1 -1
  89. package/dist/fast/wiring.d.ts +4 -4
  90. package/dist/fast/wiring.js +1 -1
  91. package/dist/governance/card-normalize.d.ts +1 -1
  92. package/dist/governance/copy.d.ts +1 -1
  93. package/dist/governance/copy.js +2 -2
  94. package/dist/governance/engine/artifact-persist.d.ts +1 -1
  95. package/dist/governance/engine/budget.d.ts +1 -1
  96. package/dist/governance/engine/budget.js +1 -1
  97. package/dist/governance/engine/cards.d.ts +1 -1
  98. package/dist/governance/engine/digest.js +1 -1
  99. package/dist/governance/engine/engine-core.d.ts +5 -5
  100. package/dist/governance/engine/engine-core.js +1 -1
  101. package/dist/governance/engine/engine.d.ts +1 -1
  102. package/dist/governance/engine/engine.js +1 -1
  103. package/dist/governance/engine/estimate.d.ts +1 -1
  104. package/dist/governance/engine/estimate.js +1 -1
  105. package/dist/governance/engine/inspector.js +2 -2
  106. package/dist/governance/engine/integration.d.ts +1 -1
  107. package/dist/governance/engine/lifecycle.d.ts +1 -1
  108. package/dist/governance/engine/lifecycle.js +1 -1
  109. package/dist/governance/engine/phase-members.d.ts +1 -1
  110. package/dist/governance/engine/phase-planner.d.ts +1 -1
  111. package/dist/governance/engine/phase-planner.js +1 -1
  112. package/dist/governance/engine/rebuild.d.ts +1 -1
  113. package/dist/governance/engine/report.d.ts +1 -1
  114. package/dist/governance/engine/report.js +1 -1
  115. package/dist/governance/engine/run-digest.d.ts +1 -1
  116. package/dist/governance/engine/spec-builder.d.ts +2 -2
  117. package/dist/governance/engine/spec-builder.js +2 -2
  118. package/dist/governance/engine/stage-runner.js +2 -2
  119. package/dist/governance/engine/start-input.d.ts +1 -1
  120. package/dist/governance/engine/start-input.js +1 -1
  121. package/dist/governance/engine/state-machine.d.ts +1 -1
  122. package/dist/governance/engine/state-machine.js +3 -3
  123. package/dist/governance/engine/submission-queries.d.ts +1 -1
  124. package/dist/governance/engine/submission-render.d.ts +1 -1
  125. package/dist/governance/engine/submissions.d.ts +1 -1
  126. package/dist/governance/engine/submissions.js +1 -1
  127. package/dist/governance/engine/visibility.d.ts +1 -1
  128. package/dist/governance/engine/visibility.js +1 -1
  129. package/dist/governance/posture-transition.d.ts +2 -2
  130. package/dist/governance/posture-transition.js +1 -1
  131. package/dist/governance/profiles.d.ts +1 -1
  132. package/dist/governance/prompts/orchestrator-block.d.ts +2 -2
  133. package/dist/governance/prompts/orchestrator-block.js +2 -2
  134. package/dist/governance/prompts/plan-addendum.d.ts +1 -1
  135. package/dist/governance/prompts/plan-addendum.js +1 -1
  136. package/dist/governance/prompts/role-blocks.d.ts +2 -2
  137. package/dist/governance/prompts/role-blocks.js +1 -1
  138. package/dist/governance/report-reader.js +1 -1
  139. package/dist/governance/roles.d.ts +1 -1
  140. package/dist/governance/rules/claims.d.ts +1 -1
  141. package/dist/governance/rules/claims.js +1 -1
  142. package/dist/governance/rules/elimination.d.ts +1 -1
  143. package/dist/governance/rules/elimination.js +1 -1
  144. package/dist/governance/rules/failure-analysis.d.ts +2 -2
  145. package/dist/governance/rules/failure-analysis.js +1 -1
  146. package/dist/governance/rules/ledger-replay.d.ts +1 -1
  147. package/dist/governance/rules/ledger-state.d.ts +1 -1
  148. package/dist/governance/rules/ledger-state.js +1 -1
  149. package/dist/governance/rules/ledger.d.ts +2 -2
  150. package/dist/governance/rules/ledger.js +2 -2
  151. package/dist/governance/rules/rca.d.ts +1 -1
  152. package/dist/governance/rules/rca.js +1 -1
  153. package/dist/governance/rules/settlement.d.ts +2 -2
  154. package/dist/governance/rules/settlement.js +2 -2
  155. package/dist/governance/rules/suspicion.d.ts +1 -1
  156. package/dist/governance/store/artifacts.d.ts +1 -1
  157. package/dist/governance/store/artifacts.js +1 -1
  158. package/dist/governance/store/events-log.d.ts +1 -1
  159. package/dist/governance/store/run-store.d.ts +1 -1
  160. package/dist/governance/store/run-store.js +1 -1
  161. package/dist/governance/store/scoreboard-export.d.ts +1 -1
  162. package/dist/governance/tools/child-tools.d.ts +1 -1
  163. package/dist/governance/tools/guard.d.ts +1 -1
  164. package/dist/governance/tools/guard.js +1 -1
  165. package/dist/governance/tools/inspector-tools.d.ts +2 -2
  166. package/dist/governance/tools/inspector-tools.js +2 -2
  167. package/dist/governance/tools/lead-tools.d.ts +1 -1
  168. package/dist/governance/tools/lead-tools.js +1 -1
  169. package/dist/governance/tools/normalize-util.js +1 -1
  170. package/dist/governance/tools/scan-incomplete.js +1 -1
  171. package/dist/governance/tools/shared-tools.d.ts +1 -1
  172. package/dist/governance/tools/shared-tools.js +1 -1
  173. package/dist/governance/tools/submit-normalizers.d.ts +1 -1
  174. package/dist/governance/tools/submit-normalizers.js +1 -1
  175. package/dist/governance/tools/submit-tools.d.ts +1 -1
  176. package/dist/logging/cli-commands.js +1 -1
  177. package/dist/logging/install.d.ts +1 -1
  178. package/dist/logging/install.js +3 -3
  179. package/dist/logging/logger.d.ts +2 -2
  180. package/dist/logging/logger.js +31 -2
  181. package/dist/proc/kill-tree.js +1 -1
  182. package/dist/proc/log-mirror.js +1 -1
  183. package/dist/proc/log-ring.js +2 -2
  184. package/dist/proc/notices.d.ts +1 -1
  185. package/dist/proc/notices.js +2 -2
  186. package/dist/proc/prompt.d.ts +1 -1
  187. package/dist/proc/prompt.js +1 -1
  188. package/dist/proc/readiness.js +1 -1
  189. package/dist/proc/supervisor.d.ts +1 -1
  190. package/dist/proc/supervisor.js +3 -3
  191. package/dist/proc/wait.d.ts +1 -1
  192. package/dist/proc/wait.js +1 -1
  193. package/dist/prompts/command.d.ts +1 -1
  194. package/dist/prompts/command.js +1 -1
  195. package/dist/prompts/normalize.d.ts +1 -1
  196. package/dist/prompts/normalize.js +1 -1
  197. package/dist/prompts/resolve.d.ts +1 -1
  198. package/dist/prompts/store.d.ts +2 -12
  199. package/dist/prompts/store.js +6 -60
  200. package/dist/session/checkpoint.d.ts +2 -2
  201. package/dist/session/clear-archive.d.ts +2 -2
  202. package/dist/session/persist.d.ts +2 -2
  203. package/dist/session/persist.js +1 -1
  204. package/dist/session/startup-session.d.ts +2 -2
  205. package/dist/session/validate-session.js +3 -3
  206. package/dist/skills/service.d.ts +2 -2
  207. package/dist/team/bus.d.ts +1 -1
  208. package/dist/team/bus.js +1 -1
  209. package/dist/team/child-reviewer.d.ts +2 -2
  210. package/dist/team/child-reviewer.js +1 -1
  211. package/dist/team/comm-tools.js +1 -1
  212. package/dist/team/dispatch-gate.js +1 -1
  213. package/dist/team/forced-dispatch.js +1 -1
  214. package/dist/team/forced-mode.d.ts +1 -1
  215. package/dist/team/forced-prompt.d.ts +1 -1
  216. package/dist/team/forced-prompt.js +1 -1
  217. package/dist/team/normalize.d.ts +1 -1
  218. package/dist/team/normalize.js +1 -1
  219. package/dist/team/overseer.d.ts +3 -3
  220. package/dist/team/overseer.js +3 -3
  221. package/dist/team/prompt.d.ts +1 -1
  222. package/dist/team/prompt.js +1 -1
  223. package/dist/team/report.d.ts +2 -2
  224. package/dist/team/report.js +2 -2
  225. package/dist/team/retry.d.ts +1 -1
  226. package/dist/team/retry.js +1 -1
  227. package/dist/team/runtime.d.ts +4 -4
  228. package/dist/team/runtime.js +2 -2
  229. package/dist/team/settled.d.ts +2 -2
  230. package/dist/team/subagent.d.ts +4 -4
  231. package/dist/team/subagent.js +5 -5
  232. package/dist/team/task-tool.d.ts +1 -1
  233. package/dist/team/task-tool.js +1 -1
  234. package/dist/todo/normalize.d.ts +1 -1
  235. package/dist/todo/normalize.js +1 -1
  236. package/dist/todo/prompt.d.ts +1 -1
  237. package/dist/todo/prompt.js +1 -1
  238. package/dist/todo/store.d.ts +1 -1
  239. package/dist/todo/store.js +2 -2
  240. package/dist/todo/todo-tool.d.ts +1 -1
  241. package/dist/todo/todo-tool.js +2 -2
  242. package/dist/tools/bash-tool.d.ts +1 -1
  243. package/dist/tools/bash-tool.js +2 -2
  244. package/dist/tools/diff.d.ts +1 -1
  245. package/dist/tools/diff.js +1 -1
  246. package/dist/tools/file-change-store.d.ts +1 -1
  247. package/dist/tools/fs-tools.d.ts +2 -2
  248. package/dist/tools/fs-tools.js +1 -1
  249. package/dist/tools/index.d.ts +3 -3
  250. package/dist/tools/index.js +1 -1
  251. package/dist/tools/job-tools.d.ts +2 -2
  252. package/dist/tools/job-tools.js +4 -4
  253. package/dist/tools/plan-tools.d.ts +1 -1
  254. package/dist/tools/plan-tools.js +1 -1
  255. package/dist/tools/proc-tools.d.ts +1 -1
  256. package/dist/tools/proc-tools.js +2 -2
  257. package/dist/update/classify-failure.d.ts +1 -1
  258. package/dist/update/install-lock.js +1 -1
  259. package/dist/update/install-source.d.ts +1 -1
  260. package/dist/update/installer.js +2 -2
  261. package/dist/update/npm-view.d.ts +1 -1
  262. package/dist/update/npm-view.js +1 -1
  263. package/dist/update/registry.d.ts +1 -1
  264. package/dist/update/registry.js +1 -1
  265. package/dist/update/service.d.ts +2 -2
  266. package/dist/update/service.js +2 -2
  267. package/package.json +7 -7
  268. package/dist/agent/agent-mode.d.ts +0 -108
  269. package/dist/agent/agent-mode.js +0 -121
  270. package/dist/agent/entry-limits.d.ts +0 -65
  271. package/dist/agent/entry-limits.js +0 -133
  272. package/dist/agent/governance-view.d.ts +0 -40
  273. package/dist/agent/governance-view.js +0 -40
  274. package/dist/agent/invocation-card.d.ts +0 -77
  275. package/dist/agent/invocation-card.js +0 -169
  276. package/dist/agent/model-probe-limits.d.ts +0 -39
  277. package/dist/agent/model-probe-limits.js +0 -25
  278. package/dist/agent/model-probe.d.ts +0 -104
  279. package/dist/agent/model-probe.js +0 -391
  280. package/dist/agent/queued-messages.d.ts +0 -23
  281. package/dist/agent/queued-messages.js +0 -49
  282. package/dist/agent/reducer.d.ts +0 -857
  283. package/dist/agent/reducer.js +0 -1646
  284. package/dist/agent/retry-view.d.ts +0 -68
  285. package/dist/agent/retry-view.js +0 -95
  286. package/dist/agent/usage.d.ts +0 -47
  287. package/dist/agent/usage.js +0 -84
  288. package/dist/compaction/limits.d.ts +0 -61
  289. package/dist/compaction/limits.js +0 -64
  290. package/dist/compaction/meter.d.ts +0 -276
  291. package/dist/compaction/meter.js +0 -512
  292. package/dist/compaction/pressure.d.ts +0 -163
  293. package/dist/compaction/pressure.js +0 -199
  294. package/dist/compaction/reason-text.d.ts +0 -36
  295. package/dist/compaction/reason-text.js +0 -78
  296. package/dist/compaction/types.d.ts +0 -360
  297. package/dist/compaction/types.js +0 -22
  298. package/dist/config/governance-config.d.ts +0 -125
  299. package/dist/config/governance-config.js +0 -164
  300. package/dist/config/kit-resolution.d.ts +0 -93
  301. package/dist/config/kit-resolution.js +0 -226
  302. package/dist/config/model-kits.d.ts +0 -225
  303. package/dist/config/model-kits.js +0 -302
  304. package/dist/config/model-profile-resolution.d.ts +0 -28
  305. package/dist/config/model-profile-resolution.js +0 -88
  306. package/dist/config/model-profiles.d.ts +0 -103
  307. package/dist/config/model-profiles.js +0 -188
  308. package/dist/config/schema.d.ts +0 -1645
  309. package/dist/config/schema.js +0 -1383
  310. package/dist/fast/limits.d.ts +0 -152
  311. package/dist/fast/limits.js +0 -152
  312. package/dist/fast/resolve.d.ts +0 -44
  313. package/dist/fast/resolve.js +0 -107
  314. package/dist/fast/task-summary-types.d.ts +0 -66
  315. package/dist/fast/task-summary-types.js +0 -17
  316. package/dist/fast/types.d.ts +0 -141
  317. package/dist/fast/types.js +0 -14
  318. package/dist/governance/governed-dispatch.d.ts +0 -19
  319. package/dist/governance/governed-dispatch.js +0 -17
  320. package/dist/governance/limits.d.ts +0 -107
  321. package/dist/governance/limits.js +0 -131
  322. package/dist/governance/posture.d.ts +0 -35
  323. package/dist/governance/posture.js +0 -59
  324. package/dist/governance/rules/events-table.d.ts +0 -46
  325. package/dist/governance/rules/events-table.js +0 -94
  326. package/dist/governance/types.d.ts +0 -661
  327. package/dist/governance/types.js +0 -27
  328. package/dist/input/control-sequences.d.ts +0 -71
  329. package/dist/input/control-sequences.js +0 -222
  330. package/dist/input/csiu-keys.d.ts +0 -66
  331. package/dist/input/csiu-keys.js +0 -181
  332. package/dist/input/cursor-report.d.ts +0 -61
  333. package/dist/input/cursor-report.js +0 -97
  334. package/dist/input/enter-sequences.d.ts +0 -64
  335. package/dist/input/enter-sequences.js +0 -153
  336. package/dist/input/interrupt-gesture.d.ts +0 -18
  337. package/dist/input/interrupt-gesture.js +0 -19
  338. package/dist/input/keyboard-enhancement.d.ts +0 -42
  339. package/dist/input/keyboard-enhancement.js +0 -65
  340. package/dist/input/keymap.d.ts +0 -20
  341. package/dist/input/keymap.js +0 -99
  342. package/dist/input/limits.d.ts +0 -118
  343. package/dist/input/limits.js +0 -109
  344. package/dist/input/mouse-events.d.ts +0 -87
  345. package/dist/input/mouse-events.js +0 -212
  346. package/dist/input/paste-parse.d.ts +0 -83
  347. package/dist/input/paste-parse.js +0 -107
  348. package/dist/input/pointer-router.d.ts +0 -11
  349. package/dist/input/pointer-router.js +0 -14
  350. package/dist/input/stdin-filter.d.ts +0 -112
  351. package/dist/input/stdin-filter.js +0 -657
  352. package/dist/input/win32-input-mode.d.ts +0 -61
  353. package/dist/input/win32-input-mode.js +0 -269
  354. package/dist/logging/levels.d.ts +0 -40
  355. package/dist/logging/levels.js +0 -59
  356. package/dist/logging/secret-registry.d.ts +0 -32
  357. package/dist/logging/secret-registry.js +0 -73
  358. package/dist/proc/limits.d.ts +0 -214
  359. package/dist/proc/limits.js +0 -221
  360. package/dist/proc/progress.d.ts +0 -47
  361. package/dist/proc/progress.js +0 -163
  362. package/dist/proc/types.d.ts +0 -269
  363. package/dist/proc/types.js +0 -15
  364. package/dist/proc/wait-view.d.ts +0 -65
  365. package/dist/proc/wait-view.js +0 -66
  366. package/dist/prompts/copy.d.ts +0 -89
  367. package/dist/prompts/copy.js +0 -131
  368. package/dist/prompts/fill.d.ts +0 -51
  369. package/dist/prompts/fill.js +0 -46
  370. package/dist/prompts/limits.d.ts +0 -53
  371. package/dist/prompts/limits.js +0 -53
  372. package/dist/prompts/search.d.ts +0 -58
  373. package/dist/prompts/search.js +0 -146
  374. package/dist/prompts/types.d.ts +0 -204
  375. package/dist/prompts/types.js +0 -13
  376. package/dist/team/activity.d.ts +0 -67
  377. package/dist/team/activity.js +0 -130
  378. package/dist/team/limits.d.ts +0 -308
  379. package/dist/team/limits.js +0 -330
  380. package/dist/team/model.d.ts +0 -104
  381. package/dist/team/model.js +0 -150
  382. package/dist/team/panel-rows.d.ts +0 -48
  383. package/dist/team/panel-rows.js +0 -75
  384. package/dist/team/timeline.d.ts +0 -74
  385. package/dist/team/timeline.js +0 -101
  386. package/dist/team/types.d.ts +0 -354
  387. package/dist/team/types.js +0 -13
  388. package/dist/todo/acceptance.d.ts +0 -120
  389. package/dist/todo/acceptance.js +0 -399
  390. package/dist/todo/follow-through.d.ts +0 -138
  391. package/dist/todo/follow-through.js +0 -248
  392. package/dist/todo/limits.d.ts +0 -152
  393. package/dist/todo/limits.js +0 -152
  394. package/dist/todo/panel-rows.d.ts +0 -45
  395. package/dist/todo/panel-rows.js +0 -70
  396. package/dist/todo/plan-sections.d.ts +0 -60
  397. package/dist/todo/plan-sections.js +0 -108
  398. package/dist/todo/row-window.d.ts +0 -51
  399. package/dist/todo/row-window.js +0 -107
  400. package/dist/todo/types.d.ts +0 -124
  401. package/dist/todo/types.js +0 -12
  402. package/dist/tools/human-input.d.ts +0 -212
  403. package/dist/tools/human-input.js +0 -265
  404. package/dist/tools/patch.d.ts +0 -115
  405. package/dist/tools/patch.js +0 -453
  406. package/dist/tools/terminal-output.d.ts +0 -115
  407. package/dist/tools/terminal-output.js +0 -201
  408. package/dist/tools/tool-output-store.d.ts +0 -68
  409. package/dist/tools/tool-output-store.js +0 -102
  410. package/dist/ui/ActivityLine.d.ts +0 -26
  411. package/dist/ui/ActivityLine.js +0 -51
  412. package/dist/ui/AutocompletePopup.d.ts +0 -23
  413. package/dist/ui/AutocompletePopup.js +0 -17
  414. package/dist/ui/BottomStatusRow.d.ts +0 -10
  415. package/dist/ui/BottomStatusRow.js +0 -9
  416. package/dist/ui/Composer.d.ts +0 -115
  417. package/dist/ui/Composer.js +0 -64
  418. package/dist/ui/GovernancePanel.d.ts +0 -50
  419. package/dist/ui/GovernancePanel.js +0 -77
  420. package/dist/ui/GovernanceRun.d.ts +0 -18
  421. package/dist/ui/GovernanceRun.js +0 -11
  422. package/dist/ui/Header.d.ts +0 -48
  423. package/dist/ui/Header.js +0 -27
  424. package/dist/ui/Logo.d.ts +0 -32
  425. package/dist/ui/Logo.js +0 -65
  426. package/dist/ui/Markdown.d.ts +0 -29
  427. package/dist/ui/Markdown.js +0 -116
  428. package/dist/ui/PromptCaret.d.ts +0 -11
  429. package/dist/ui/PromptCaret.js +0 -31
  430. package/dist/ui/PromptInput.d.ts +0 -192
  431. package/dist/ui/PromptInput.js +0 -689
  432. package/dist/ui/QueuePanel.d.ts +0 -8
  433. package/dist/ui/QueuePanel.js +0 -9
  434. package/dist/ui/QueueStatusRow.d.ts +0 -24
  435. package/dist/ui/QueueStatusRow.js +0 -51
  436. package/dist/ui/ScrollbackShell.d.ts +0 -132
  437. package/dist/ui/ScrollbackShell.js +0 -26
  438. package/dist/ui/SessionOpener.d.ts +0 -30
  439. package/dist/ui/SessionOpener.js +0 -12
  440. package/dist/ui/StatusBar.d.ts +0 -130
  441. package/dist/ui/StatusBar.js +0 -61
  442. package/dist/ui/TeamPanel.d.ts +0 -76
  443. package/dist/ui/TeamPanel.js +0 -103
  444. package/dist/ui/ToastStack.d.ts +0 -8
  445. package/dist/ui/ToastStack.js +0 -31
  446. package/dist/ui/TodoPanel.d.ts +0 -52
  447. package/dist/ui/TodoPanel.js +0 -214
  448. package/dist/ui/Transcript.d.ts +0 -105
  449. package/dist/ui/Transcript.js +0 -258
  450. package/dist/ui/UpdateLine.d.ts +0 -44
  451. package/dist/ui/UpdateLine.js +0 -129
  452. package/dist/ui/activity-phrases.d.ts +0 -33
  453. package/dist/ui/activity-phrases.js +0 -50
  454. package/dist/ui/capabilities.d.ts +0 -27
  455. package/dist/ui/capabilities.js +0 -65
  456. package/dist/ui/clipboard-task.d.ts +0 -29
  457. package/dist/ui/clipboard-task.js +0 -66
  458. package/dist/ui/clipboard.d.ts +0 -31
  459. package/dist/ui/clipboard.js +0 -157
  460. package/dist/ui/color-runtime.d.ts +0 -5
  461. package/dist/ui/color-runtime.js +0 -29
  462. package/dist/ui/composer-input.d.ts +0 -38
  463. package/dist/ui/composer-input.js +0 -79
  464. package/dist/ui/composer-limits.d.ts +0 -30
  465. package/dist/ui/composer-limits.js +0 -45
  466. package/dist/ui/composer-rows.d.ts +0 -73
  467. package/dist/ui/composer-rows.js +0 -129
  468. package/dist/ui/console-bridge.d.ts +0 -19
  469. package/dist/ui/console-bridge.js +0 -52
  470. package/dist/ui/density.d.ts +0 -26
  471. package/dist/ui/density.js +0 -34
  472. package/dist/ui/display-tab.d.ts +0 -51
  473. package/dist/ui/display-tab.js +0 -82
  474. package/dist/ui/editor-navigation.d.ts +0 -55
  475. package/dist/ui/editor-navigation.js +0 -96
  476. package/dist/ui/editor-reducer.d.ts +0 -108
  477. package/dist/ui/editor-reducer.js +0 -187
  478. package/dist/ui/enter-frames.d.ts +0 -47
  479. package/dist/ui/enter-frames.js +0 -117
  480. package/dist/ui/entries/AssistantEntry.d.ts +0 -37
  481. package/dist/ui/entries/AssistantEntry.js +0 -43
  482. package/dist/ui/entries/CompactionCard.d.ts +0 -88
  483. package/dist/ui/entries/CompactionCard.js +0 -222
  484. package/dist/ui/entries/DiffView.d.ts +0 -61
  485. package/dist/ui/entries/DiffView.js +0 -103
  486. package/dist/ui/entries/EntryFrame.d.ts +0 -23
  487. package/dist/ui/entries/EntryFrame.js +0 -6
  488. package/dist/ui/entries/FastCard.d.ts +0 -53
  489. package/dist/ui/entries/FastCard.js +0 -105
  490. package/dist/ui/entries/GovernanceCard.d.ts +0 -30
  491. package/dist/ui/entries/GovernanceCard.js +0 -32
  492. package/dist/ui/entries/InvocationCard.d.ts +0 -20
  493. package/dist/ui/entries/InvocationCard.js +0 -32
  494. package/dist/ui/entries/QueuedEntry.d.ts +0 -27
  495. package/dist/ui/entries/QueuedEntry.js +0 -33
  496. package/dist/ui/entries/RetryCard.d.ts +0 -56
  497. package/dist/ui/entries/RetryCard.js +0 -60
  498. package/dist/ui/entries/ServiceCard.d.ts +0 -82
  499. package/dist/ui/entries/ServiceCard.js +0 -151
  500. package/dist/ui/entries/TeamCard.d.ts +0 -55
  501. package/dist/ui/entries/TeamCard.js +0 -94
  502. package/dist/ui/entries/TodoCard.d.ts +0 -54
  503. package/dist/ui/entries/TodoCard.js +0 -98
  504. package/dist/ui/entries/ToolCard.d.ts +0 -81
  505. package/dist/ui/entries/ToolCard.js +0 -169
  506. package/dist/ui/entries/ToolPreview.d.ts +0 -59
  507. package/dist/ui/entries/ToolPreview.js +0 -208
  508. package/dist/ui/entries/UserEntry.d.ts +0 -36
  509. package/dist/ui/entries/UserEntry.js +0 -57
  510. package/dist/ui/entries/WaitCard.d.ts +0 -37
  511. package/dist/ui/entries/WaitCard.js +0 -92
  512. package/dist/ui/exit-snapshot.d.ts +0 -43
  513. package/dist/ui/exit-snapshot.js +0 -26
  514. package/dist/ui/frame-differ.d.ts +0 -166
  515. package/dist/ui/frame-differ.js +0 -354
  516. package/dist/ui/frame-observer.d.ts +0 -17
  517. package/dist/ui/frame-observer.js +0 -94
  518. package/dist/ui/frame-parser.d.ts +0 -7
  519. package/dist/ui/frame-parser.js +0 -18
  520. package/dist/ui/gauge.d.ts +0 -39
  521. package/dist/ui/gauge.js +0 -55
  522. package/dist/ui/glyphs.d.ts +0 -178
  523. package/dist/ui/glyphs.js +0 -165
  524. package/dist/ui/governance-copy.d.ts +0 -69
  525. package/dist/ui/governance-copy.js +0 -104
  526. package/dist/ui/governance-status.d.ts +0 -145
  527. package/dist/ui/governance-status.js +0 -326
  528. package/dist/ui/gradient.d.ts +0 -11
  529. package/dist/ui/gradient.js +0 -50
  530. package/dist/ui/ink-runtime.d.ts +0 -4
  531. package/dist/ui/ink-runtime.js +0 -51
  532. package/dist/ui/interaction-copy.d.ts +0 -84
  533. package/dist/ui/interaction-copy.js +0 -41
  534. package/dist/ui/interaction-hints.d.ts +0 -44
  535. package/dist/ui/interaction-hints.js +0 -97
  536. package/dist/ui/layout/AppShell.d.ts +0 -17
  537. package/dist/ui/layout/AppShell.js +0 -6
  538. package/dist/ui/layout/Gutter.d.ts +0 -67
  539. package/dist/ui/layout/Gutter.js +0 -42
  540. package/dist/ui/layout/MeasuredEntry.d.ts +0 -21
  541. package/dist/ui/layout/MeasuredEntry.js +0 -30
  542. package/dist/ui/layout/OverlayFrame.d.ts +0 -73
  543. package/dist/ui/layout/OverlayFrame.js +0 -110
  544. package/dist/ui/layout/ScrollIndicator.d.ts +0 -32
  545. package/dist/ui/layout/ScrollIndicator.js +0 -22
  546. package/dist/ui/layout/ScrollViewport.d.ts +0 -40
  547. package/dist/ui/layout/ScrollViewport.js +0 -222
  548. package/dist/ui/layout/agents-board.d.ts +0 -102
  549. package/dist/ui/layout/agents-board.js +0 -389
  550. package/dist/ui/layout/autocomplete.d.ts +0 -18
  551. package/dist/ui/layout/autocomplete.js +0 -26
  552. package/dist/ui/layout/budget.d.ts +0 -43
  553. package/dist/ui/layout/budget.js +0 -52
  554. package/dist/ui/layout/cells.d.ts +0 -61
  555. package/dist/ui/layout/cells.js +0 -156
  556. package/dist/ui/layout/document-layout.d.ts +0 -13
  557. package/dist/ui/layout/document-layout.js +0 -10
  558. package/dist/ui/layout/follow-state.d.ts +0 -138
  559. package/dist/ui/layout/follow-state.js +0 -148
  560. package/dist/ui/layout/frame.d.ts +0 -36
  561. package/dist/ui/layout/frame.js +0 -39
  562. package/dist/ui/layout/governance-board.d.ts +0 -121
  563. package/dist/ui/layout/governance-board.js +0 -382
  564. package/dist/ui/layout/governance-card.d.ts +0 -53
  565. package/dist/ui/layout/governance-card.js +0 -134
  566. package/dist/ui/layout/governance-chip.d.ts +0 -38
  567. package/dist/ui/layout/governance-chip.js +0 -64
  568. package/dist/ui/layout/governance-panel.d.ts +0 -85
  569. package/dist/ui/layout/governance-panel.js +0 -358
  570. package/dist/ui/layout/governance-roster.d.ts +0 -65
  571. package/dist/ui/layout/governance-roster.js +0 -275
  572. package/dist/ui/layout/header-hints.d.ts +0 -90
  573. package/dist/ui/layout/header-hints.js +0 -110
  574. package/dist/ui/layout/header-left.d.ts +0 -115
  575. package/dist/ui/layout/header-left.js +0 -206
  576. package/dist/ui/layout/invocation-card.d.ts +0 -41
  577. package/dist/ui/layout/invocation-card.js +0 -91
  578. package/dist/ui/layout/kit-chip.d.ts +0 -50
  579. package/dist/ui/layout/kit-chip.js +0 -81
  580. package/dist/ui/layout/overlay-window.d.ts +0 -43
  581. package/dist/ui/layout/overlay-window.js +0 -51
  582. package/dist/ui/layout/queue-layout.d.ts +0 -19
  583. package/dist/ui/layout/queue-layout.js +0 -26
  584. package/dist/ui/layout/rail.d.ts +0 -7
  585. package/dist/ui/layout/rail.js +0 -16
  586. package/dist/ui/layout/scroll-indicator.d.ts +0 -27
  587. package/dist/ui/layout/scroll-indicator.js +0 -36
  588. package/dist/ui/layout/scroll.d.ts +0 -37
  589. package/dist/ui/layout/scroll.js +0 -99
  590. package/dist/ui/layout/scrollbar-geometry.d.ts +0 -17
  591. package/dist/ui/layout/scrollbar-geometry.js +0 -13
  592. package/dist/ui/layout/session-chip.d.ts +0 -52
  593. package/dist/ui/layout/session-chip.js +0 -64
  594. package/dist/ui/layout/shortcut-panel-layout.d.ts +0 -191
  595. package/dist/ui/layout/shortcut-panel-layout.js +0 -321
  596. package/dist/ui/layout/status-detail-layout.d.ts +0 -9
  597. package/dist/ui/layout/status-detail-layout.js +0 -79
  598. package/dist/ui/layout/status-layout.d.ts +0 -140
  599. package/dist/ui/layout/status-layout.js +0 -262
  600. package/dist/ui/layout/task-summary-cell.d.ts +0 -61
  601. package/dist/ui/layout/task-summary-cell.js +0 -65
  602. package/dist/ui/layout/team-panel.d.ts +0 -18
  603. package/dist/ui/layout/team-panel.js +0 -25
  604. package/dist/ui/layout/team-row.d.ts +0 -139
  605. package/dist/ui/layout/team-row.js +0 -246
  606. package/dist/ui/layout/todo-layout.d.ts +0 -62
  607. package/dist/ui/layout/todo-layout.js +0 -102
  608. package/dist/ui/layout/useTerminalSize.d.ts +0 -13
  609. package/dist/ui/layout/useTerminalSize.js +0 -50
  610. package/dist/ui/layout/viewport-geometry.d.ts +0 -29
  611. package/dist/ui/layout/viewport-geometry.js +0 -28
  612. package/dist/ui/layout/virtual-window.d.ts +0 -112
  613. package/dist/ui/layout/virtual-window.js +0 -494
  614. package/dist/ui/layout/wait-bar.d.ts +0 -34
  615. package/dist/ui/layout/wait-bar.js +0 -48
  616. package/dist/ui/layout/wrap-rows.d.ts +0 -26
  617. package/dist/ui/layout/wrap-rows.js +0 -88
  618. package/dist/ui/live-clamp.d.ts +0 -14
  619. package/dist/ui/live-clamp.js +0 -46
  620. package/dist/ui/markdown-blocks.d.ts +0 -107
  621. package/dist/ui/markdown-blocks.js +0 -240
  622. package/dist/ui/overlays/AgentsBoardOverlay.d.ts +0 -57
  623. package/dist/ui/overlays/AgentsBoardOverlay.js +0 -183
  624. package/dist/ui/overlays/ConfirmDialog.d.ts +0 -31
  625. package/dist/ui/overlays/ConfirmDialog.js +0 -44
  626. package/dist/ui/overlays/GovernanceBoardOverlay.d.ts +0 -41
  627. package/dist/ui/overlays/GovernanceBoardOverlay.js +0 -76
  628. package/dist/ui/overlays/GovernanceSettingsPage.d.ts +0 -48
  629. package/dist/ui/overlays/GovernanceSettingsPage.js +0 -93
  630. package/dist/ui/overlays/HelpOverlay.d.ts +0 -29
  631. package/dist/ui/overlays/HelpOverlay.js +0 -232
  632. package/dist/ui/overlays/KitEditor.d.ts +0 -23
  633. package/dist/ui/overlays/KitEditor.js +0 -101
  634. package/dist/ui/overlays/KitManager.d.ts +0 -23
  635. package/dist/ui/overlays/KitManager.js +0 -104
  636. package/dist/ui/overlays/KitPicker.d.ts +0 -49
  637. package/dist/ui/overlays/KitPicker.js +0 -58
  638. package/dist/ui/overlays/ModelDiscoveryList.d.ts +0 -23
  639. package/dist/ui/overlays/ModelDiscoveryList.js +0 -161
  640. package/dist/ui/overlays/ModelPicker.d.ts +0 -26
  641. package/dist/ui/overlays/ModelPicker.js +0 -63
  642. package/dist/ui/overlays/ModelProfileEditor.d.ts +0 -29
  643. package/dist/ui/overlays/ModelProfileEditor.js +0 -168
  644. package/dist/ui/overlays/ModelProfilePicker.d.ts +0 -48
  645. package/dist/ui/overlays/ModelProfilePicker.js +0 -231
  646. package/dist/ui/overlays/PlanReviewOverlay.d.ts +0 -51
  647. package/dist/ui/overlays/PlanReviewOverlay.js +0 -132
  648. package/dist/ui/overlays/PromptEditorPage.d.ts +0 -48
  649. package/dist/ui/overlays/PromptEditorPage.js +0 -227
  650. package/dist/ui/overlays/PromptLibraryOverlay.d.ts +0 -37
  651. package/dist/ui/overlays/PromptLibraryOverlay.js +0 -191
  652. package/dist/ui/overlays/PromptPicker.d.ts +0 -36
  653. package/dist/ui/overlays/PromptPicker.js +0 -129
  654. package/dist/ui/overlays/PromptTextArea.d.ts +0 -86
  655. package/dist/ui/overlays/PromptTextArea.js +0 -141
  656. package/dist/ui/overlays/QuestionOverlay.d.ts +0 -39
  657. package/dist/ui/overlays/QuestionOverlay.js +0 -258
  658. package/dist/ui/overlays/QueueOverlay.d.ts +0 -22
  659. package/dist/ui/overlays/QueueOverlay.js +0 -79
  660. package/dist/ui/overlays/SettingsScreen.d.ts +0 -228
  661. package/dist/ui/overlays/SettingsScreen.js +0 -1037
  662. package/dist/ui/overlays/ShortcutPanel.d.ts +0 -39
  663. package/dist/ui/overlays/ShortcutPanel.js +0 -106
  664. package/dist/ui/overlays/TeamFanoutPage.d.ts +0 -51
  665. package/dist/ui/overlays/TeamFanoutPage.js +0 -90
  666. package/dist/ui/overlays/governance-settings.d.ts +0 -79
  667. package/dist/ui/overlays/governance-settings.js +0 -140
  668. package/dist/ui/overlays/kit-picker-state.d.ts +0 -87
  669. package/dist/ui/overlays/kit-picker-state.js +0 -136
  670. package/dist/ui/overlays/kit-settings-state.d.ts +0 -129
  671. package/dist/ui/overlays/kit-settings-state.js +0 -268
  672. package/dist/ui/overlays/model-probe-view.d.ts +0 -128
  673. package/dist/ui/overlays/model-probe-view.js +0 -225
  674. package/dist/ui/overlays/model-profile-state.d.ts +0 -177
  675. package/dist/ui/overlays/model-profile-state.js +0 -301
  676. package/dist/ui/overlays/prompt-library-state.d.ts +0 -162
  677. package/dist/ui/overlays/prompt-library-state.js +0 -335
  678. package/dist/ui/overlays/prompt-picker-state.d.ts +0 -71
  679. package/dist/ui/overlays/prompt-picker-state.js +0 -98
  680. package/dist/ui/overlays/team-fanout-state.d.ts +0 -106
  681. package/dist/ui/overlays/team-fanout-state.js +0 -155
  682. package/dist/ui/overlays/use-model-probe.d.ts +0 -30
  683. package/dist/ui/overlays/use-model-probe.js +0 -109
  684. package/dist/ui/palettes.d.ts +0 -112
  685. package/dist/ui/palettes.js +0 -130
  686. package/dist/ui/paste-frames.d.ts +0 -91
  687. package/dist/ui/paste-frames.js +0 -117
  688. package/dist/ui/paste-tokens.d.ts +0 -90
  689. package/dist/ui/paste-tokens.js +0 -147
  690. package/dist/ui/render-cache.d.ts +0 -81
  691. package/dist/ui/render-cache.js +0 -196
  692. package/dist/ui/render-governor.d.ts +0 -54
  693. package/dist/ui/render-governor.js +0 -78
  694. package/dist/ui/run-metrics.d.ts +0 -23
  695. package/dist/ui/run-metrics.js +0 -27
  696. package/dist/ui/run-status-row.d.ts +0 -63
  697. package/dist/ui/run-status-row.js +0 -54
  698. package/dist/ui/screen.d.ts +0 -107
  699. package/dist/ui/screen.js +0 -234
  700. package/dist/ui/scrollback/LiveTail.d.ts +0 -115
  701. package/dist/ui/scrollback/LiveTail.js +0 -48
  702. package/dist/ui/scrollback/band.d.ts +0 -114
  703. package/dist/ui/scrollback/band.js +0 -143
  704. package/dist/ui/scrollback/budget.d.ts +0 -90
  705. package/dist/ui/scrollback/budget.js +0 -100
  706. package/dist/ui/scrollback/canvas.d.ts +0 -100
  707. package/dist/ui/scrollback/canvas.js +0 -114
  708. package/dist/ui/scrollback/cursor-probe.d.ts +0 -71
  709. package/dist/ui/scrollback/cursor-probe.js +0 -133
  710. package/dist/ui/scrollback/drain.d.ts +0 -32
  711. package/dist/ui/scrollback/drain.js +0 -64
  712. package/dist/ui/scrollback/exit-summary.d.ts +0 -23
  713. package/dist/ui/scrollback/exit-summary.js +0 -25
  714. package/dist/ui/scrollback/limits.d.ts +0 -98
  715. package/dist/ui/scrollback/limits.js +0 -98
  716. package/dist/ui/scrollback/live-preview.d.ts +0 -34
  717. package/dist/ui/scrollback/live-preview.js +0 -130
  718. package/dist/ui/scrollback/overflow-print.d.ts +0 -108
  719. package/dist/ui/scrollback/overflow-print.js +0 -120
  720. package/dist/ui/scrollback/renderer.d.ts +0 -48
  721. package/dist/ui/scrollback/renderer.js +0 -186
  722. package/dist/ui/scrollback/scrollback-writer.d.ts +0 -174
  723. package/dist/ui/scrollback/scrollback-writer.js +0 -648
  724. package/dist/ui/scrollback/settled-boundary.d.ts +0 -42
  725. package/dist/ui/scrollback/settled-boundary.js +0 -109
  726. package/dist/ui/scrollback/tail-anchor.d.ts +0 -71
  727. package/dist/ui/scrollback/tail-anchor.js +0 -79
  728. package/dist/ui/scrollback/tail-window.d.ts +0 -73
  729. package/dist/ui/scrollback/tail-window.js +0 -89
  730. package/dist/ui/scrollback/use-scrollback-view.d.ts +0 -139
  731. package/dist/ui/scrollback/use-scrollback-view.js +0 -601
  732. package/dist/ui/scrollback/writer-shapes.d.ts +0 -127
  733. package/dist/ui/scrollback/writer-shapes.js +0 -159
  734. package/dist/ui/scrollbar-controller.d.ts +0 -30
  735. package/dist/ui/scrollbar-controller.js +0 -124
  736. package/dist/ui/selection/highlight.d.ts +0 -39
  737. package/dist/ui/selection/highlight.js +0 -64
  738. package/dist/ui/selection/screen-mirror.d.ts +0 -24
  739. package/dist/ui/selection/screen-mirror.js +0 -35
  740. package/dist/ui/selection/selection-controller.d.ts +0 -104
  741. package/dist/ui/selection/selection-controller.js +0 -372
  742. package/dist/ui/selection/selection.d.ts +0 -90
  743. package/dist/ui/selection/selection.js +0 -223
  744. package/dist/ui/shortcuts.d.ts +0 -81
  745. package/dist/ui/shortcuts.js +0 -221
  746. package/dist/ui/status-feedback.d.ts +0 -35
  747. package/dist/ui/status-feedback.js +0 -38
  748. package/dist/ui/stdout-frame-writer.d.ts +0 -74
  749. package/dist/ui/stdout-frame-writer.js +0 -155
  750. package/dist/ui/team-status.d.ts +0 -166
  751. package/dist/ui/team-status.js +0 -252
  752. package/dist/ui/terminal-plan.d.ts +0 -52
  753. package/dist/ui/terminal-plan.js +0 -49
  754. package/dist/ui/theme.d.ts +0 -96
  755. package/dist/ui/theme.js +0 -130
  756. package/dist/ui/transcript-text.d.ts +0 -41
  757. package/dist/ui/transcript-text.js +0 -282
  758. package/dist/ui/use-height-store.d.ts +0 -31
  759. package/dist/ui/use-height-store.js +0 -76
  760. package/dist/ui/use-render-governor.d.ts +0 -39
  761. package/dist/ui/use-render-governor.js +0 -57
  762. package/dist/ui/use-wheel-routing.d.ts +0 -57
  763. package/dist/ui/use-wheel-routing.js +0 -152
  764. package/dist/ui/win-vt-force.d.ts +0 -136
  765. package/dist/ui/win-vt-force.js +0 -237
  766. package/dist/ui/win-vt-input.d.ts +0 -57
  767. package/dist/ui/win-vt-input.js +0 -62
  768. package/dist/update/limits.d.ts +0 -111
  769. package/dist/update/limits.js +0 -111
  770. package/dist/update/semver.d.ts +0 -89
  771. package/dist/update/semver.js +0 -295
  772. package/dist/update/types.d.ts +0 -169
  773. package/dist/update/types.js +0 -68
  774. /package/dist/{ui → app}/session-bridge.d.ts +0 -0
  775. /package/dist/{ui → app}/session-bridge.js +0 -0
@@ -1,199 +0,0 @@
1
- /**
2
- * Context occupancy and the trigger (context-auto-compaction §3.4).
3
- *
4
- * ASCII ONLY: `src/compaction/**` is inside the glyph scanner's scope.
5
- *
6
- * PURE. No clock, no config read, no I/O - every input arrives as an argument,
7
- * which is what lets the trigger and the status-bar gauge share one function and
8
- * be tested without a live session.
9
- */
10
- import { CONTEXT_SAFETY_MARGIN_TOKENS, THINKING_HEADROOM_TOKENS, estimatePromptTokens, } from '@aragon-agent/core';
11
- /**
12
- * How much of the window the conversation occupies, from ONE reported usage.
13
- *
14
- * THE CACHE TERMS ARE NOT DECORATION. Anthropic's `message_start` reports
15
- * `input_tokens` EXCLUDING cached tokens and puts them in
16
- * `cache_read_input_tokens` / `cache_creation_input_tokens`. This CLI never sends
17
- * `cache_control`, so on a direct connection they are absent and the sum is
18
- * unchanged - but any gateway or proxy that caches on the user's behalf makes
19
- * them non-zero, and the status bar's old formula
20
- * (`usage.inputTokens + usage.outputTokens`) silently UNDER-reports occupancy for
21
- * exactly those users. That is a live, pre-existing defect in the number this
22
- * feature triggers on.
23
- *
24
- * THIS SUM IS ONLY VALID FOR *ADDITIVE* CACHE FIELDS, AND THAT IS A PROVIDER-SIDE
25
- * INVARIANT RATHER THAN A PROPERTY OF `TokenUsage` (C-14 / P1-10). It holds today
26
- * because exactly one adapter writes those fields: `openai.ts` sets
27
- * `inputTokens = prompt_tokens` and `google.ts` sets it from `promptTokenCount`,
28
- * and NEITHER ever mentions `cacheReadTokens` / `cacheWriteTokens`. OpenAI's
29
- * `prompt_tokens` ALREADY INCLUDES cached tokens, so mapping
30
- * `prompt_tokens_details.cached_tokens` onto the existing field - a change that
31
- * reads as a pure improvement and would sail through review - turns this into a
32
- * double-count and fires compaction early on every OpenAI session, with the gauge
33
- * agreeing with it and nothing reporting a fault. A provider that reports an
34
- * INCLUSIVE total must add a DIFFERENTLY NAMED field. `compaction-pressure.test.ts`
35
- * scans the adapters so the trap fails loudly at the moment someone opens it.
36
- *
37
- * THE GAUGE AND THE TRIGGER MUST READ THIS SAME FUNCTION (R-11 / AC-3). If they
38
- * diverge, a user watching 78 % on the status bar sees compaction fire, concludes
39
- * the feature is broken, and turns it off.
40
- */
41
- export function occupiedTokens(usage) {
42
- return (usage.inputTokens +
43
- (usage.cacheReadTokens ?? 0) +
44
- (usage.cacheWriteTokens ?? 0) +
45
- usage.outputTokens);
46
- }
47
- /**
48
- * Whether a usage measured ANYTHING on the input side
49
- * (context-usage-zero-input-tokens B).
50
- *
51
- * THE EMPTY MEASUREMENT THIS EXISTS FOR. A turn that billed output tokens
52
- * while reporting inputTokens 0 AND no cache terms did not measure the
53
- * request - no real request is free of input. Anthropic-COMPATIBLE relays
54
- * emit exactly this shape (bigmodel on every turn, Kimi intermittently),
55
- * and the meter used to arm its measured branch with it: occupancy collapsed
56
- * to the turn's own outputTokens, the `~` honesty marker vanished with
57
- * `source: 'usage'`, and the trigger - which reads the same number - never
58
- * fired. The defense is to not trust such a usage as a measurement.
59
- *
60
- * THE CACHE TERMS ARE PART OF THE INPUT SIDE, DELIBERATELY. Anthropic's real
61
- * `input_tokens` EXCLUDES cached tokens, so a deeply cached turn reports a
62
- * tiny `input_tokens` next to a huge `cache_read_input_tokens`. That IS a
63
- * valid measurement (C-14), and judging on `inputTokens === 0` alone would
64
- * reject it and strand a correct gauge on the estimator.
65
- *
66
- * `outputTokens > 0` separates "the stream ran, billed output, and disclosed
67
- * no input" from a degenerate all-zero usage, which the reviewed predicate
68
- * deliberately does not speak for.
69
- *
70
- * SINGLE AUTHORITY. The meter consumes this, and any future observability
71
- * hint (fix C) must too: two inline copies of "did the gateway disclose
72
- * input" would drift apart exactly the way the gauge and the trigger once
73
- * could (R-11).
74
- */
75
- export function isInputSideUnmeasured(usage) {
76
- const inputSide = usage.inputTokens + (usage.cacheReadTokens ?? 0) + (usage.cacheWriteTokens ?? 0);
77
- return inputSide === 0 && usage.outputTokens > 0;
78
- }
79
- /**
80
- * The calibration offset for this turn (D-23 / P1-11).
81
- *
82
- * Clamped at 0: a NEGATIVE offset would mean the estimator over-counted, which
83
- * is possible for a tool-free session on a verbose model, and applying it would
84
- * make the fallback read LOWER than the raw estimate - moving the one number
85
- * that is already biased low further in the wrong direction.
86
- */
87
- export function computeEstimateOffset(usage, messages, systemPrompt) {
88
- const measured = occupiedTokens(usage);
89
- const estimated = estimatePromptTokens(messages, systemPrompt);
90
- return Math.max(0, measured - estimated);
91
- }
92
- /**
93
- * Tokens appended to the history since the measurement that produced `lastUsage`
94
- * (context-auto-compaction-hardening §3.2.2 / W1).
95
- *
96
- * `+ 1` SKIPS THE ASSISTANT MESSAGE, and that is not an off-by-one to tidy away:
97
- * `turn_end` is emitted BEFORE the push (`agent-loop.ts:478` / `:497`, and
98
- * `Agent.emit` is synchronous), so the message at index `measuredPrefixLength` is
99
- * the assistant turn whose cost is ALREADY inside `usage.outputTokens`. Counting
100
- * it again double-charges every turn.
101
- *
102
- * NO `estimateOffset` IS APPLIED HERE. That offset is the systematic difference
103
- * between what `estimatePromptTokens` counts and what the provider bills for a
104
- * WHOLE REQUEST - chiefly the tool schemas, which are sent once per request and
105
- * are already inside the measured base. It is a per-request constant, not a
106
- * per-message rate; adding it to a slice would inflate occupancy by several
107
- * thousand tokens on every turn and fire compaction early on short
108
- * conversations.
109
- *
110
- * BOUNDS-CHECKED RATHER THAN TRUSTED. If the recorded prefix no longer indexes
111
- * this array - a `/clear`, a `/resume`, a splice whose invalidation call was
112
- * missed - the delta is 0 and the function degrades to round 1's number.
113
- */
114
- export function estimateAppendedTokens(messages, measuredPrefixLength) {
115
- if (measuredPrefixLength === undefined)
116
- return 0;
117
- const start = measuredPrefixLength + 1;
118
- if (start < 0 || start >= messages.length)
119
- return 0;
120
- return estimatePromptTokens(messages.slice(start));
121
- }
122
- /**
123
- * THE ONE RULE FOR "PART OF THIS NUMBER IS A GUESS" (§6.3).
124
- *
125
- * `Pressure.source` deliberately keeps two members: it answers "where did the
126
- * BASE come from", and a third member would force every existing consumer of the
127
- * union to be revisited for a distinction none of them acts on. The `~` question
128
- * is this function, and it has one test.
129
- */
130
- export function isApproximate(p) {
131
- return p.source === 'estimate' || p.deltaTokens > 0;
132
- }
133
- /**
134
- * Occupancy right now, measured when there is a measurement and calibrated when
135
- * there is not.
136
- *
137
- * `source` is CARRIED, never re-derived, and it reaches the UI: the status bar
138
- * already renders a leading `~` when the window is unknown, and this widens that
139
- * to "the NUMBER is approximate too". Honesty about a guess is cheaper than a
140
- * support thread about a wrong percentage.
141
- */
142
- export function computePressure(input) {
143
- const window = input.contextWindow > 0 ? input.contextWindow : 0;
144
- let occupied;
145
- let source;
146
- let deltaTokens = 0;
147
- if (input.lastUsage) {
148
- // THE MEASURED FIGURE STAYS AUTHORITATIVE FOR WHAT IT COVERS, and only the
149
- // messages appended since are estimated (W1 / DH-1). Mixing two units is the
150
- // trap D-23 warned about; this does not mix them, it adds a second term for
151
- // a range the first one demonstrably does not describe.
152
- const base = occupiedTokens(input.lastUsage);
153
- deltaTokens = estimateAppendedTokens(input.messages, input.measuredPrefixLength);
154
- occupied = base + deltaTokens;
155
- source = 'usage';
156
- }
157
- else {
158
- // Before the first turn_end there is no calibration. Keep the estimate
159
- // explicit: output reservations never authorize automatic compaction.
160
- const raw = estimatePromptTokens(input.messages, input.systemPrompt);
161
- occupied = raw + (input.estimateOffset ?? 0);
162
- source = 'estimate';
163
- }
164
- const ratio = window > 0 ? Math.max(0, Math.min(1, occupied / window)) : 0;
165
- return {
166
- occupied,
167
- ...(input.windowSource ? { windowSource: input.windowSource } : {}),
168
- contextWindow: window,
169
- ratio,
170
- headroom: Math.max(0, window - occupied),
171
- source,
172
- windowKnown: input.windowKnown,
173
- // PURE PASS-THROUGH. This function's arithmetic is unchanged by
174
- // context-usage-gauge-accuracy; the flag only travels with the number so
175
- // `/context` can name the denominator's source (I-6).
176
- windowOverridden: input.windowOverridden ?? false,
177
- // CONDITIONAL SPREAD: with no origin there is no KEY, keeping a
178
- // feature-off Pressure byte-identical to the pre-feature one (I-6).
179
- ...(input.windowOverrideOrigin !== undefined
180
- ? { windowOverrideOrigin: input.windowOverrideOrigin }
181
- : {}),
182
- ...(input.estimateOffset !== undefined ? { estimateOffset: input.estimateOffset } : {}),
183
- deltaTokens,
184
- };
185
- }
186
- /** Only actual occupancy authorizes automatic compaction. */
187
- export function shouldCompactAt(p, threshold) {
188
- if (!Number.isFinite(p.occupied) || p.occupied < 0)
189
- return false;
190
- if (!Number.isFinite(p.contextWindow) || p.contextWindow <= 0)
191
- return false;
192
- if (!Number.isFinite(threshold) || threshold < 0.5 || threshold > 0.95)
193
- return false;
194
- return p.occupied / p.contextWindow >= threshold;
195
- }
196
- /** Capacity helper retained for the standalone tail-budget API, never a trigger. */
197
- export function requiredHeadroom(req) {
198
- return req.maxOutputTokens + THINKING_HEADROOM_TOKENS + CONTEXT_SAFETY_MARGIN_TOKENS;
199
- }
@@ -1,36 +0,0 @@
1
- /**
2
- * Human wording for compaction outcomes (context-compaction-never-fires C).
3
- *
4
- * ASCII ONLY: `src/compaction/**` is inside the glyph scanner's scope
5
- * (`glyphs.test.ts::inScope`), so every glyph the card draws comes from
6
- * `pickGlyphs` and nothing here may carry a non-ASCII byte.
7
- *
8
- * WHY THIS MODULE EXISTS AT ALL. The card used to print the raw rejection code
9
- * (`context not compacted #4: digest_budget_exceeded: $.digest`), which names the
10
- * internal gate and tells the user nothing they can act on. A decline is a
11
- * QUESTION ("why, and what do I do now"), so each code gets one phrase and - for
12
- * the ones a user can act on - one remedy.
13
- *
14
- * IT IS ALSO THE SELF-DISABLE NOTICE'S SOURCE. The one line that says
15
- * auto-compaction has paused reads the same phrase, so the card and the toast
16
- * cannot describe one failure two ways.
17
- */
18
- import type { CompactionPhase } from './types.js';
19
- /** One phrase plus, where it helps, the thing the user can do about it. */
20
- export interface ReasonText {
21
- /** What happened, in one clause. Never contains the raw code. */
22
- text: string;
23
- /** The remedy, or `undefined` when there is nothing to offer. */
24
- action?: string;
25
- }
26
- /**
27
- * A phrase for a rejection code, falling back to the code itself.
28
- *
29
- * THE FALLBACK IS THE RAW CODE, deliberately: a new gate nobody wrote wording for
30
- * must still say SOMETHING specific on the card, and an invented sentence would
31
- * be worse than a code the next reviewer can grep.
32
- */
33
- export declare function describeCompactionReason(reason: string): ReasonText;
34
- /** The card's one-line reason, with the remedy appended when there is one. */
35
- export declare function compactionReasonLine(reason: string): string;
36
- export declare function compactionPhaseLabel(phase: CompactionPhase): string;
@@ -1,78 +0,0 @@
1
- const REASONS = {
2
- nothing_to_drop: {
3
- text: 'no safe cut - this run has too few user turns to keep',
4
- action: 'keep talking, or lower /compact keep',
5
- },
6
- digest_budget_exceeded: {
7
- text: 'the summary input was too large for one call',
8
- action: 'retry - the middle is elided now',
9
- },
10
- summarizer_window_exceeded: {
11
- text: 'the summary request does not fit the summarizer window',
12
- action: 'pick a summarizer with a larger window',
13
- },
14
- protected_memory_too_large: {
15
- text: 'the task memory does not fit its protection budget',
16
- action: 'start a fresh conversation',
17
- },
18
- invalid_memory_delta: {
19
- text: 'the summarizer returned an unusable memory delta',
20
- action: 'retry',
21
- },
22
- empty_memory_delta: {
23
- text: 'the summarizer returned an empty memory delta',
24
- action: 'retry',
25
- },
26
- no_token_reclaim: {
27
- text: 'the summary would not have reclaimed any tokens',
28
- },
29
- timeout: { text: 'the summarizer timed out', action: 'retry' },
30
- no_summarizer_model: {
31
- text: 'no summarizer model resolves',
32
- action: 'set a model or add a provider key',
33
- },
34
- no_api_key: { text: 'the summarizer provider has no API key' },
35
- already_running: { text: 'another compaction is already running' },
36
- invalid_prior_memory: {
37
- text: 'the existing task memory does not match this history',
38
- action: 'start a fresh conversation',
39
- },
40
- invalid_history: { text: 'this history cannot be split safely' },
41
- protected_multimodal_tail: {
42
- text: 'an image in the middle of this history would have to be dropped',
43
- },
44
- insufficient_reclaim: {
45
- text: 'the splice freed too little to stay below the threshold',
46
- },
47
- disabled: { text: 'auto-compaction is off for this session', action: '/compact on' },
48
- cancelled: { text: 'cancelled' },
49
- aborted: { text: 'cancelled' },
50
- stale_history: { text: 'the history changed while the summary was running' },
51
- adoption_failed: { text: 'the compacted history could not be adopted' },
52
- };
53
- /**
54
- * A phrase for a rejection code, falling back to the code itself.
55
- *
56
- * THE FALLBACK IS THE RAW CODE, deliberately: a new gate nobody wrote wording for
57
- * must still say SOMETHING specific on the card, and an invented sentence would
58
- * be worse than a code the next reviewer can grep.
59
- */
60
- export function describeCompactionReason(reason) {
61
- const code = reason.split(':', 1)[0].trim();
62
- return REASONS[code] ?? { text: reason };
63
- }
64
- /** The card's one-line reason, with the remedy appended when there is one. */
65
- export function compactionReasonLine(reason) {
66
- const { text, action } = describeCompactionReason(reason);
67
- return action ? `${text} (${action})` : text;
68
- }
69
- const PHASES = {
70
- planning: 'planning the cut',
71
- digesting: 'building the digest',
72
- summarizing: 'summarizing',
73
- validating: 'validating the summary',
74
- applying: 'applying',
75
- };
76
- export function compactionPhaseLabel(phase) {
77
- return PHASES[phase];
78
- }
@@ -1,360 +0,0 @@
1
- /**
2
- * CLI-local compaction shapes (context-auto-compaction §5.2 / §3.4.2).
3
- *
4
- * ASCII ONLY: `src/compaction/**` is inside the glyph scanner's scope.
5
- *
6
- * A CLI-LOCAL EVENT STREAM, like `FastEvent` / `TeamEvent` / `TodoEvent`, for
7
- * the reason each of those records: core's `AgentEvent` union is a public
8
- * contract and must not learn host shapes.
9
- *
10
- * NOTE THE ASYMMETRY WITH CORE. Core emits the two ENGINE events because the
11
- * engine is what performs the splice and decides `applied`; the CLI emits the
12
- * richer ones because only the CLI knows the model name, the price and the
13
- * session totals.
14
- *
15
- * THIS STREAM IS THE SOLE SOURCE OF REDUCER ACTIONS (D-20 / P1-6), and
16
- * `reduceEvent` gains NO cases for `compaction_start` / `compaction_end`. One
17
- * compaction arriving through two channels is two transcript cards and a doubled
18
- * `tokensReclaimed`; `reduceEvent`'s `default: return []` is already exactly
19
- * right for the two core events, which makes "one authority" also the smallest
20
- * possible change.
21
- */
22
- import type { ModelRef, TokenUsage } from '@aragon-agent/core';
23
- import type { ContextWindowOrigin } from '../config/schema.js';
24
- /** Billing belongs to the actual call, including fallback and late responses. */
25
- export interface CompactionBilling {
26
- modelRef?: ModelRef;
27
- costUsd?: number;
28
- pricingUnknown?: boolean;
29
- }
30
- /**
31
- * `relieved` MEANS THE TAIL WAS CLIPPED AND NOTHING WAS DROPPED (hardening
32
- * RV-5) — the `plan === null` recovery of §3.3.3.
33
- *
34
- * IT EXISTS ONLY HERE. The port still reports `'truncated'` for it (DH-5),
35
- * because the engine's question is narrower: "was this history reduced without a
36
- * summary", and the answer is yes.
37
- *
38
- * WITHOUT IT THE CARD LIES. `detailLine` renders
39
- * `summarized ${before - after} messages with ${model}` for `'summarized'`, and
40
- * relief drops NO messages — so a compaction in which no model was called would
41
- * render "summarized 0 messages with claude-haiku-4-5", in the rare and alarming
42
- * case the user most needs to read correctly.
43
- *
44
- * ANY NEW `switch` ON THIS UNION MUST PAIR ITS BRANCHES. TypeScript finds the
45
- * exhaustive switches; it does not find an `else` that meant `'summarized'`.
46
- */
47
- export type CompactionMode = 'summarized' | 'truncated' | 'relieved' | 'none';
48
- /**
49
- * `manual` exists ONLY here, never in core.
50
- *
51
- * The engine's `CompactionTrigger` is `pressure | overflow`, because those are
52
- * the two the LOOP can originate. A `/compact` while running is queued and then
53
- * arrives at the loop as an ordinary `pressure` checkpoint, so the distinction
54
- * is a host-side fact about WHY the flag was set - which is exactly the kind of
55
- * thing a CLI-local type is for.
56
- */
57
- export type CompactionUiTrigger = 'pressure' | 'overflow' | 'manual';
58
- /**
59
- * Where one attempt currently is, so "compacting context" can also say WHAT it is
60
- * doing for the forty-five seconds it is on screen.
61
- *
62
- * IT EXISTS BECAUSE THE GATES WERE INVISIBLE (context-compaction-never-fires
63
- * RC-3). Planning and digesting both run BEFORE any model call, and both used to
64
- * be able to reject while the only surface said `Context 95%` and nothing else.
65
- * A phase is the CLI's answer to "is this stuck, or merely slow", and it is
66
- * CLI-LOCAL for the reason the whole stream is: the engine has no phases, only a
67
- * splice.
68
- *
69
- * THERE IS NO `settled` MEMBER, deliberately: the settle is already the
70
- * `compaction_end` record. A phase restating it would give the card two ways to
71
- * learn one fact, and the extra phase would race the record whenever the engine's
72
- * verdict comes back first.
73
- */
74
- export type CompactionPhase = 'planning' | 'digesting' | 'summarizing' | 'validating' | 'applying';
75
- /** Whether a figure was measured by the provider or estimated by us. */
76
- export type PressureSource = 'usage' | 'estimate';
77
- /** The exact occupancy evidence at the compaction checkpoint. */
78
- export interface CompactionDecision {
79
- occupied: number;
80
- contextWindow: number;
81
- threshold: number;
82
- source: PressureSource;
83
- deltaTokens: number;
84
- }
85
- export interface Pressure {
86
- /**
87
- * `user` means the CLI's model-windows.json supplied the denominator - a
88
- * hand-typed window for a model no table knows. It outranks `api` and
89
- * `catalog` in `getModelInfoFor` precisely because the user asserted it.
90
- */
91
- windowSource?: 'api' | 'catalog' | 'fallback' | 'user';
92
- occupied: number;
93
- contextWindow: number;
94
- /** `occupied / contextWindow`, clamped to [0, 1]. */
95
- ratio: number;
96
- /** `contextWindow - occupied`, floored at 0. */
97
- headroom: number;
98
- source: PressureSource;
99
- /** False when the window came from `buildRuntimeModel`'s 128k placeholder. */
100
- windowKnown: boolean;
101
- /**
102
- * Whether the denominator came from the user's `contextWindow` override
103
- * (context-usage-gauge-accuracy I-6).
104
- *
105
- * SEPARATE FROM `windowKnown` RATHER THAN FOLDED INTO IT. An override makes
106
- * the window KNOWN - the user asserted it, so the `~` has no business staying
107
- * on the percentage - but `/context` still has to be able to say WHO supplied
108
- * the number. Collapsing the two into one boolean makes "found in the model
109
- * table" and "typed by hand" indistinguishable in the report, and the second
110
- * one being wrong is exactly the case that most needs to be visible.
111
- */
112
- windowOverridden: boolean;
113
- /**
114
- * WHICH override surface supplied the denominator (profile-context-window
115
- * §5.2): env / legacy top-level key / the profile bound as Main. Optional
116
- * and PURE PASS-THROUGH - present only when `windowOverridden` is true, and
117
- * `undefined` there means "config", the pre-feature answer. The arithmetic
118
- * never reads it; only `/context`'s window line does.
119
- */
120
- windowOverrideOrigin?: ContextWindowOrigin;
121
- /**
122
- * `occupiedTokens(lastUsage) - estimateOf(the history that produced it)`,
123
- * clamped to `>= 0`, or `undefined` before the first `turn_end`.
124
- *
125
- * THE SYSTEMATIC PART OF THE ESTIMATOR'S ERROR (D-23 / P1-11), chiefly the
126
- * TOOL SCHEMAS. `estimatePromptTokens` counts the system prompt and the message
127
- * bodies and NOTHING ELSE, while the loop also sends `tools: toolDefs` and the
128
- * provider's `input_tokens` includes them - several thousand tokens for this
129
- * CLI's toolset. So the estimate is biased LOW, always, in the one direction
130
- * that hurts: the resumed 180k-token session is exactly where the estimate is
131
- * used, and it reads lower than the truth.
132
- *
133
- * One shared FUNCTION is not the same as one shared UNIT. Everywhere an
134
- * estimated figure is compared against a threshold or shown to a user it is
135
- * `estimate + (estimateOffset ?? 0)`.
136
- */
137
- estimateOffset?: number;
138
- /**
139
- * Tokens estimated for messages APPENDED AFTER the measurement in `lastUsage`
140
- * (hardening §3.2 / W1). `0` on the estimate branch, and `0` whenever the
141
- * recorded prefix is unusable.
142
- *
143
- * ALWAYS PRESENT, never optional, so `isApproximate` is a total function and a
144
- * consumer cannot forget the `?? 0`. `> 0` is what makes the measured branch
145
- * approximate: the base is the provider's own number for a request that really
146
- * happened, and this is a guess about messages no request has yet carried.
147
- */
148
- deltaTokens: number;
149
- }
150
- /**
151
- * The ONE occupancy projection the status bar and `/context` read
152
- * (context-usage-gauge-accuracy §4.1).
153
- *
154
- * DELIBERATELY CARRIES NO TIMESTAMP. Its only consumer is the reducer's identity
155
- * short-circuit (§5.2), and a field that changes on every tick would make that
156
- * short-circuit never hold - turning a permanently visible row into a 2.5 Hz
157
- * re-render source and pushing the render governor up its ladder for nothing.
158
- *
159
- * `Pressure` is the compaction subsystem's shape and carries a headroom and a
160
- * ratio the UI does not want; this is the projection of it that crosses into
161
- * view state, and `toContextUsage` in `meter.ts` is the ONLY converter.
162
- */
163
- export interface ContextUsageSnapshot {
164
- windowSource?: Pressure['windowSource'];
165
- /** Occupied tokens (measured, plus an estimate of anything appended since). */
166
- occupied: number;
167
- /** The denominator actually used. */
168
- window: number;
169
- /** `occupied / window` as a percentage, clamped to [0, 100] and rounded. */
170
- pct: number;
171
- /** Where the BASE came from. */
172
- source: PressureSource;
173
- /** How much of `occupied` is an estimate of appended messages; `> 0` means approximate. */
174
- deltaTokens: number;
175
- /** Whether the denominator is trustworthy (in the model table, or overridden). */
176
- windowKnown: boolean;
177
- /** Whether the denominator came from the user's `contextWindow` (I-6). */
178
- windowOverridden: boolean;
179
- /** Which override surface named the denominator; see `Pressure` (pass-through). */
180
- windowOverrideOrigin?: ContextWindowOrigin;
181
- }
182
- /** One compaction, in whatever state it reached. Rendered by `CompactionCard`. */
183
- export interface CompactionRecord {
184
- decision?: CompactionDecision;
185
- memoryVersion?: 2;
186
- /** 1-based within the session, so the card can name itself. */
187
- index: number;
188
- trigger: CompactionUiTrigger;
189
- mode: CompactionMode;
190
- applied: boolean;
191
- reason?: string;
192
- messagesBefore: number;
193
- messagesAfter: number;
194
- tokensBefore: number;
195
- tokensAfter: number;
196
- summary?: string;
197
- model: string;
198
- durationMs: number;
199
- /** What the summarization call itself spent. */
200
- usage?: TokenUsage;
201
- /** Set when an overflow attempt halved `keepRecentTurns` for itself (D-24). */
202
- keepRecentTurnsUsed?: number;
203
- /**
204
- * Set when `planCompaction` had to relax `keepRecentTurns` to find a cut
205
- * (context-compaction-never-fires B).
206
- *
207
- * DISCLOSED ON THE CARD, never silent: the relaxation trades "the last N turns
208
- * are verbatim" for "compaction happens at all", and a user who is not told
209
- * which side they got cannot tell a lossless compaction from a lossy one.
210
- * `retainedTurns` and `retainedMessages` are what actually survived, so the card
211
- * can state all three numbers instead of implying one.
212
- */
213
- keepRelaxed?: boolean;
214
- retainedTurns?: number;
215
- /**
216
- * How many MESSAGES the relaxed cut left verbatim.
217
- *
218
- * `retainedTurns` COUNTS USER TURNS, and in the sessions this fix exists for - one
219
- * prompt followed by a hundred tool calls - that number is zero even though forty
220
- * messages survived word for word. A card reading "kept 0 recent turns" at that
221
- * moment says the opposite of what happened, so both numbers are recorded.
222
- */
223
- retainedMessages?: number;
224
- /**
225
- * Messages left OUT of the digest text and therefore not quotable by the
226
- * summarizer (context-compaction-never-fires A1).
227
- *
228
- * The elision is LOUD in three places: the digest text itself carries an
229
- * `[elided ...]` marker, this field puts the count on the card, and the elided
230
- * ids never enter the source map, so a delta citing one is rejected.
231
- */
232
- elidedMessages?: number;
233
- /**
234
- * Present ONLY when tail relief fired (hardening §3.3.4 / W2).
235
- *
236
- * A bounded, ANNOUNCED data loss inside the turns the run is about to continue
237
- * from, so it is disclosed on the card, in `/compact status`, on the JSON
238
- * stream and in the archive — the honesty rule `truncated` already follows.
239
- */
240
- tailRelief?: {
241
- messages: number;
242
- charsRemoved: number;
243
- };
244
- /**
245
- * The archive file this compaction was written to, for `/compact show`
246
- * (hardening §3.5 / W4). Absent when `compaction.archive` is off, and absent
247
- * when the write failed — a best-effort artefact never claims to exist.
248
- */
249
- archivePath?: string;
250
- }
251
- /**
252
- * WHAT DELIBERATELY DOES NOT LIVE ON `CompactionRecord` (hardening RV-3): the
253
- * dropped `Message[]`.
254
- *
255
- * This record is dispatched into the reducer (`App.tsx`'s `compaction_end` case)
256
- * and retained in view state for the transcript card's lifetime. Hanging a
257
- * megabyte-scale array off it would park the compacted history in React state
258
- * and drag it through every subsequent render — an archive feature that creates
259
- * the leak it audits. The messages travel on `Compactor.takeLastDropped()`
260
- * instead, which never enters the event stream.
261
- */
262
- /** Everything `/compact status`, the chip and the settings row read. */
263
- export interface CompactionSnapshot {
264
- /** Sum of known per-call costs; never reprice accumulated usage with a new model. */
265
- costUsd?: number;
266
- /** Registered AND enabled AND a summarizer model resolves. */
267
- live: boolean;
268
- /** The summarizer's model id, or `''`. */
269
- model: string;
270
- /**
271
- * How many compactions ANNOUNCED themselves, i.e. how many cards the user saw.
272
- *
273
- * IT COUNTS ATTEMPTS, NOT SPLICES (context-compaction-never-fires C). Before
274
- * this change only attempts that committed to work announced, so this was
275
- * "compactions that ran"; now every attempt opens a card - including the ones
276
- * that decline at the planner or the digest - because a silent decline is
277
- * indistinguishable from a dead feature, which is the bug this feature shipped
278
- * with. `applied` below is the other half, and `/compact status` prints both.
279
- */
280
- compactions: number;
281
- /**
282
- * How many of those attempts actually replaced the history.
283
- *
284
- * OPTIONAL SO EVERY EXISTING CONSTRUCTION SITE STAYS UNTOUCHED. Absent means
285
- * "not reported", which `/compact status` renders exactly as the pre-change
286
- * wording did.
287
- */
288
- applied?: number;
289
- /**
290
- * How many `pressure` checkpoints declined BEFORE committing to any work
291
- * (quiet-noop D-9 / P1-2).
292
- *
293
- * OPTIONAL SO EVERY EXISTING CONSTRUCTION SITE STAYS UNTOUCHED, and rendered
294
- * by `/compact status` only when non-zero — a healthy session must not read
295
- * `(0 checkpoints declined)`. This is the one human surface that still speaks
296
- * about a decline after the transcript went quiet, which is what keeps
297
- * `context-auto-compaction` §6.5's "guaranteed reporting surface" promise true.
298
- */
299
- declined?: number;
300
- /** Sum of `(tokensBefore - tokensAfter)` over applied compactions. */
301
- tokensReclaimed: number;
302
- /** What compaction itself has spent this session. */
303
- usage: TokenUsage;
304
- /**
305
- * CARRIED, NEVER RE-DERIVED (the C-11 / RV-4 lesson from `fast-model-tier`).
306
- * An unknown model priced at `$0.00` would make the feature look free while it
307
- * spends money - and here the DEFAULT summarizer is the session's own model.
308
- */
309
- pricingUnknown: boolean;
310
- inFlight: boolean;
311
- selfDisabled: boolean;
312
- selfDisabledReason?: string;
313
- /** How many times this history has been compacted, from the block's `generation`. */
314
- generation: number;
315
- pressure: Pressure;
316
- }
317
- /**
318
- * THE COMPACTION EVENT STREAM.
319
- *
320
- * EVERY ATTEMPT ANNOUNCES ITSELF (context-compaction-never-fires C, which
321
- * REVERSES quiet-noop §3.1). A `pressure` compaction used to reach
322
- * `compaction_start` only after it committed to paid work, so an attempt that
323
- * declined at the planner (`nothing_to_drop`) or at the digest budget produced
324
- * no card at all - and a user sitting at 95 % with a dead auto-compaction had no
325
- * way to learn that the feature was trying and failing 96 times. The card is now
326
- * opened at the entry of `compact()` and ALWAYS settled, so `#N` counts attempts
327
- * and the transcript carries one line per attempt, applied or not.
328
- *
329
- * WHY THE OLD DESIGN WAS DEFENSIBLE AND IS STILL WRONG. Its stated worry was a
330
- * red `context not compacted` card every two turns flooding the transcript. The
331
- * guards bound that to `stuckLimit` declines per run (`limits.ts`), and after
332
- * them the auto path self-disables and says so once - so the flood never
333
- * happens, while the silence happened every time.
334
- *
335
- * The pair is still BALANCED: every `compaction_start` is followed by exactly
336
- * one `compaction_end` (a `finally` in the engine guarantees the verdict, and
337
- * `settlePending` synthesizes a skeleton record when the compactor's own has not
338
- * arrived). `phase` events land BETWEEN them, in order, and only for the live
339
- * card.
340
- */
341
- export type CompactionEvent = {
342
- type: 'compaction_start';
343
- index: number;
344
- trigger: CompactionUiTrigger;
345
- model: string;
346
- } | {
347
- type: 'compaction_end';
348
- record: CompactionRecord;
349
- } | {
350
- type: 'phase';
351
- index: number;
352
- phase: CompactionPhase;
353
- } | ({
354
- type: 'usage';
355
- usage: TokenUsage;
356
- } & CompactionBilling) | {
357
- type: 'snapshot';
358
- snapshot: CompactionSnapshot;
359
- };
360
- export type CompactionEventListener = (event: CompactionEvent) => void;