@aragon-agent/cli 0.6.46 → 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 +28 -0
  2. package/README.md +80 -12
  3. package/dist/agent/coalesce.d.ts +5 -1
  4. package/dist/agent/coalesce.js +13 -0
  5. package/dist/agent/controller.d.ts +41 -20
  6. package/dist/agent/controller.js +68 -15
  7. package/dist/agent/conversation-reset.d.ts +1 -1
  8. package/dist/agent/governance-wiring.d.ts +6 -6
  9. package/dist/agent/governance-wiring.js +4 -4
  10. package/dist/agent/headless.d.ts +5 -5
  11. package/dist/agent/headless.js +4 -4
  12. package/dist/agent/job-notices.d.ts +1 -1
  13. package/dist/agent/job-notices.js +1 -1
  14. package/dist/agent/kit-apply.d.ts +3 -3
  15. package/dist/agent/kit-apply.js +3 -3
  16. package/dist/agent/model-profile-settings.d.ts +2 -2
  17. package/dist/agent/model-profile-settings.js +6 -6
  18. package/dist/agent/prompt-options.d.ts +1 -1
  19. package/dist/agent/system-prompt.d.ts +1 -1
  20. package/dist/agent/user-attention.d.ts +17 -0
  21. package/dist/agent/user-attention.js +32 -0
  22. package/dist/{ui → app}/App.d.ts +9 -9
  23. package/dist/{ui → app}/App.js +113 -79
  24. package/dist/{ui → app}/use-startup-notices.d.ts +1 -1
  25. package/dist/{ui → app}/use-startup-notices.js +2 -2
  26. package/dist/cli.js +31 -32
  27. package/dist/commands/agents-command.js +1 -1
  28. package/dist/commands/builtins.js +9 -9
  29. package/dist/commands/governance-command.js +2 -2
  30. package/dist/commands/governance-runs-table.js +1 -1
  31. package/dist/commands/kit-command.js +1 -1
  32. package/dist/commands/perf.d.ts +3 -3
  33. package/dist/commands/perf.js +1 -1
  34. package/dist/commands/registry.d.ts +8 -8
  35. package/dist/commands/skills.js +2 -2
  36. package/dist/commands/team-command.js +1 -1
  37. package/dist/compaction/archive.d.ts +1 -1
  38. package/dist/compaction/archive.js +1 -1
  39. package/dist/compaction/child.d.ts +3 -3
  40. package/dist/compaction/child.js +4 -4
  41. package/dist/compaction/command.js +5 -5
  42. package/dist/compaction/compactor.d.ts +6 -6
  43. package/dist/compaction/compactor.js +6 -6
  44. package/dist/compaction/context-command.js +1 -1
  45. package/dist/compaction/digest.js +1 -1
  46. package/dist/compaction/memory-input.js +1 -1
  47. package/dist/compaction/memory-validation.js +1 -1
  48. package/dist/compaction/memory.js +1 -1
  49. package/dist/compaction/summarize-call.js +1 -1
  50. package/dist/compaction/summary-prompt.js +1 -1
  51. package/dist/compaction/tail-budget.js +2 -2
  52. package/dist/compaction/wiring.d.ts +5 -5
  53. package/dist/compaction/wiring.js +2 -2
  54. package/dist/config/cli-commands.d.ts +1 -1
  55. package/dist/config/cli-commands.js +3 -3
  56. package/dist/config/env.d.ts +1 -1
  57. package/dist/config/env.js +4 -4
  58. package/dist/config/load.d.ts +2 -2
  59. package/dist/config/load.js +10 -31
  60. package/dist/config/migrate-state-out-of-config.js +1 -1
  61. package/dist/config/model-profile-store.d.ts +4 -54
  62. package/dist/config/model-profile-store.js +3 -3
  63. package/dist/config/prompt-history.js +1 -1
  64. package/dist/config/store.d.ts +2 -2
  65. package/dist/config/store.js +3 -3
  66. package/dist/diagnostics/doctor.js +4 -4
  67. package/dist/exec/bridge/decisions.d.ts +1 -1
  68. package/dist/exec/bridge/human-answers.d.ts +1 -1
  69. package/dist/exec/bridge/human-answers.js +1 -1
  70. package/dist/exec/bridge/protocol.d.ts +1 -1
  71. package/dist/exec/bridge/server.js +1 -1
  72. package/dist/exec/events.d.ts +2 -2
  73. package/dist/exec/index.d.ts +1 -1
  74. package/dist/exec/index.js +1 -1
  75. package/dist/exec/permission.js +1 -1
  76. package/dist/exec/runner.d.ts +3 -3
  77. package/dist/exec/runner.js +2 -2
  78. package/dist/exec/threads/runtime.js +1 -1
  79. package/dist/fast/digest.d.ts +1 -1
  80. package/dist/fast/digest.js +1 -1
  81. package/dist/fast/frames.d.ts +1 -1
  82. package/dist/fast/frames.js +1 -1
  83. package/dist/fast/prompt.d.ts +1 -1
  84. package/dist/fast/prompt.js +1 -1
  85. package/dist/fast/review-call.js +1 -1
  86. package/dist/fast/reviewer.d.ts +3 -3
  87. package/dist/fast/reviewer.js +1 -1
  88. package/dist/fast/summary-call.d.ts +3 -3
  89. package/dist/fast/summary-call.js +2 -2
  90. package/dist/fast/summary-prompt.d.ts +1 -1
  91. package/dist/fast/summary-prompt.js +1 -1
  92. package/dist/fast/wiring.d.ts +4 -4
  93. package/dist/fast/wiring.js +1 -1
  94. package/dist/governance/card-normalize.d.ts +1 -1
  95. package/dist/governance/copy.d.ts +1 -1
  96. package/dist/governance/copy.js +2 -2
  97. package/dist/governance/engine/artifact-persist.d.ts +1 -1
  98. package/dist/governance/engine/budget.d.ts +1 -1
  99. package/dist/governance/engine/budget.js +1 -1
  100. package/dist/governance/engine/cards.d.ts +1 -1
  101. package/dist/governance/engine/digest.js +1 -1
  102. package/dist/governance/engine/engine-core.d.ts +5 -5
  103. package/dist/governance/engine/engine-core.js +1 -1
  104. package/dist/governance/engine/engine.d.ts +1 -1
  105. package/dist/governance/engine/engine.js +1 -1
  106. package/dist/governance/engine/estimate.d.ts +1 -1
  107. package/dist/governance/engine/estimate.js +1 -1
  108. package/dist/governance/engine/inspector.js +2 -2
  109. package/dist/governance/engine/integration.d.ts +1 -1
  110. package/dist/governance/engine/lifecycle.d.ts +1 -1
  111. package/dist/governance/engine/lifecycle.js +1 -1
  112. package/dist/governance/engine/phase-members.d.ts +1 -1
  113. package/dist/governance/engine/phase-planner.d.ts +1 -1
  114. package/dist/governance/engine/phase-planner.js +1 -1
  115. package/dist/governance/engine/rebuild.d.ts +1 -1
  116. package/dist/governance/engine/report.d.ts +1 -1
  117. package/dist/governance/engine/report.js +1 -1
  118. package/dist/governance/engine/run-digest.d.ts +1 -1
  119. package/dist/governance/engine/spec-builder.d.ts +2 -2
  120. package/dist/governance/engine/spec-builder.js +2 -2
  121. package/dist/governance/engine/stage-runner.js +2 -2
  122. package/dist/governance/engine/start-input.d.ts +1 -1
  123. package/dist/governance/engine/start-input.js +1 -1
  124. package/dist/governance/engine/state-machine.d.ts +1 -1
  125. package/dist/governance/engine/state-machine.js +3 -3
  126. package/dist/governance/engine/submission-queries.d.ts +1 -1
  127. package/dist/governance/engine/submission-render.d.ts +1 -1
  128. package/dist/governance/engine/submissions.d.ts +1 -1
  129. package/dist/governance/engine/submissions.js +1 -1
  130. package/dist/governance/engine/visibility.d.ts +1 -1
  131. package/dist/governance/engine/visibility.js +1 -1
  132. package/dist/governance/posture-transition.d.ts +2 -2
  133. package/dist/governance/posture-transition.js +1 -1
  134. package/dist/governance/profiles.d.ts +1 -1
  135. package/dist/governance/prompts/orchestrator-block.d.ts +2 -2
  136. package/dist/governance/prompts/orchestrator-block.js +2 -2
  137. package/dist/governance/prompts/plan-addendum.d.ts +1 -1
  138. package/dist/governance/prompts/plan-addendum.js +1 -1
  139. package/dist/governance/prompts/role-blocks.d.ts +2 -2
  140. package/dist/governance/prompts/role-blocks.js +1 -1
  141. package/dist/governance/report-reader.js +1 -1
  142. package/dist/governance/roles.d.ts +1 -1
  143. package/dist/governance/rules/claims.d.ts +1 -1
  144. package/dist/governance/rules/claims.js +1 -1
  145. package/dist/governance/rules/elimination.d.ts +1 -1
  146. package/dist/governance/rules/elimination.js +1 -1
  147. package/dist/governance/rules/failure-analysis.d.ts +2 -2
  148. package/dist/governance/rules/failure-analysis.js +1 -1
  149. package/dist/governance/rules/ledger-replay.d.ts +1 -1
  150. package/dist/governance/rules/ledger-state.d.ts +1 -1
  151. package/dist/governance/rules/ledger-state.js +1 -1
  152. package/dist/governance/rules/ledger.d.ts +2 -2
  153. package/dist/governance/rules/ledger.js +2 -2
  154. package/dist/governance/rules/rca.d.ts +1 -1
  155. package/dist/governance/rules/rca.js +1 -1
  156. package/dist/governance/rules/settlement.d.ts +2 -2
  157. package/dist/governance/rules/settlement.js +2 -2
  158. package/dist/governance/rules/suspicion.d.ts +1 -1
  159. package/dist/governance/store/artifacts.d.ts +1 -1
  160. package/dist/governance/store/artifacts.js +1 -1
  161. package/dist/governance/store/events-log.d.ts +1 -1
  162. package/dist/governance/store/run-store.d.ts +1 -1
  163. package/dist/governance/store/run-store.js +1 -1
  164. package/dist/governance/store/scoreboard-export.d.ts +1 -1
  165. package/dist/governance/tools/child-tools.d.ts +1 -1
  166. package/dist/governance/tools/guard.d.ts +1 -1
  167. package/dist/governance/tools/guard.js +1 -1
  168. package/dist/governance/tools/inspector-tools.d.ts +2 -2
  169. package/dist/governance/tools/inspector-tools.js +2 -2
  170. package/dist/governance/tools/lead-tools.d.ts +1 -1
  171. package/dist/governance/tools/lead-tools.js +1 -1
  172. package/dist/governance/tools/normalize-util.js +1 -1
  173. package/dist/governance/tools/scan-incomplete.js +1 -1
  174. package/dist/governance/tools/shared-tools.d.ts +1 -1
  175. package/dist/governance/tools/shared-tools.js +1 -1
  176. package/dist/governance/tools/submit-normalizers.d.ts +1 -1
  177. package/dist/governance/tools/submit-normalizers.js +1 -1
  178. package/dist/governance/tools/submit-tools.d.ts +1 -1
  179. package/dist/logging/cli-commands.js +1 -1
  180. package/dist/logging/install.d.ts +1 -1
  181. package/dist/logging/install.js +3 -3
  182. package/dist/logging/logger.d.ts +2 -2
  183. package/dist/logging/logger.js +31 -2
  184. package/dist/proc/kill-tree.js +1 -1
  185. package/dist/proc/log-mirror.js +1 -1
  186. package/dist/proc/log-ring.js +2 -2
  187. package/dist/proc/notices.d.ts +1 -1
  188. package/dist/proc/notices.js +2 -2
  189. package/dist/proc/prompt.d.ts +1 -1
  190. package/dist/proc/prompt.js +8 -5
  191. package/dist/proc/readiness.js +1 -1
  192. package/dist/proc/supervisor.d.ts +1 -1
  193. package/dist/proc/supervisor.js +10 -4
  194. package/dist/proc/wait-plan.d.ts +39 -0
  195. package/dist/proc/wait-plan.js +77 -0
  196. package/dist/proc/wait.d.ts +37 -4
  197. package/dist/proc/wait.js +68 -5
  198. package/dist/prompts/command.d.ts +1 -1
  199. package/dist/prompts/command.js +1 -1
  200. package/dist/prompts/normalize.d.ts +1 -1
  201. package/dist/prompts/normalize.js +1 -1
  202. package/dist/prompts/resolve.d.ts +1 -1
  203. package/dist/prompts/store.d.ts +2 -12
  204. package/dist/prompts/store.js +6 -60
  205. package/dist/session/checkpoint.d.ts +2 -2
  206. package/dist/session/checkpoint.js +2 -0
  207. package/dist/session/clear-archive.d.ts +2 -2
  208. package/dist/session/persist.d.ts +2 -2
  209. package/dist/session/persist.js +20 -3
  210. package/dist/session/startup-session.d.ts +2 -2
  211. package/dist/session/validate-session.js +6 -3
  212. package/dist/skills/service.d.ts +2 -2
  213. package/dist/team/bus.d.ts +1 -1
  214. package/dist/team/bus.js +1 -1
  215. package/dist/team/child-reviewer.d.ts +2 -2
  216. package/dist/team/child-reviewer.js +1 -1
  217. package/dist/team/comm-tools.js +1 -1
  218. package/dist/team/dispatch-gate.js +1 -1
  219. package/dist/team/forced-dispatch.js +1 -1
  220. package/dist/team/forced-mode.d.ts +1 -1
  221. package/dist/team/forced-prompt.d.ts +1 -1
  222. package/dist/team/forced-prompt.js +1 -1
  223. package/dist/team/normalize.d.ts +1 -1
  224. package/dist/team/normalize.js +1 -1
  225. package/dist/team/overseer.d.ts +3 -3
  226. package/dist/team/overseer.js +3 -3
  227. package/dist/team/prompt.d.ts +1 -1
  228. package/dist/team/prompt.js +1 -1
  229. package/dist/team/report.d.ts +2 -2
  230. package/dist/team/report.js +2 -2
  231. package/dist/team/retry.d.ts +1 -1
  232. package/dist/team/retry.js +1 -1
  233. package/dist/team/runtime.d.ts +4 -4
  234. package/dist/team/runtime.js +2 -2
  235. package/dist/team/settled.d.ts +2 -2
  236. package/dist/team/subagent.d.ts +4 -4
  237. package/dist/team/subagent.js +5 -5
  238. package/dist/team/task-tool.d.ts +1 -1
  239. package/dist/team/task-tool.js +1 -1
  240. package/dist/todo/normalize.d.ts +1 -1
  241. package/dist/todo/normalize.js +1 -1
  242. package/dist/todo/prompt.d.ts +1 -1
  243. package/dist/todo/prompt.js +1 -1
  244. package/dist/todo/store.d.ts +1 -1
  245. package/dist/todo/store.js +2 -2
  246. package/dist/todo/todo-tool.d.ts +1 -1
  247. package/dist/todo/todo-tool.js +2 -2
  248. package/dist/tools/bash-tool.d.ts +1 -1
  249. package/dist/tools/bash-tool.js +2 -2
  250. package/dist/tools/diff.d.ts +1 -1
  251. package/dist/tools/diff.js +1 -1
  252. package/dist/tools/file-change-store.d.ts +1 -1
  253. package/dist/tools/fs-tools.d.ts +2 -2
  254. package/dist/tools/fs-tools.js +1 -1
  255. package/dist/tools/index.d.ts +3 -3
  256. package/dist/tools/index.js +1 -1
  257. package/dist/tools/job-tools.d.ts +14 -3
  258. package/dist/tools/job-tools.js +158 -35
  259. package/dist/tools/plan-tools.d.ts +1 -1
  260. package/dist/tools/plan-tools.js +1 -1
  261. package/dist/tools/proc-tools.d.ts +1 -1
  262. package/dist/tools/proc-tools.js +2 -2
  263. package/dist/update/classify-failure.d.ts +1 -1
  264. package/dist/update/install-lock.js +1 -1
  265. package/dist/update/install-source.d.ts +1 -1
  266. package/dist/update/installer.js +2 -2
  267. package/dist/update/npm-view.d.ts +1 -1
  268. package/dist/update/npm-view.js +1 -1
  269. package/dist/update/registry.d.ts +1 -1
  270. package/dist/update/registry.js +1 -1
  271. package/dist/update/service.d.ts +2 -2
  272. package/dist/update/service.js +2 -2
  273. package/package.json +7 -7
  274. package/dist/agent/agent-mode.d.ts +0 -108
  275. package/dist/agent/agent-mode.js +0 -121
  276. package/dist/agent/entry-limits.d.ts +0 -65
  277. package/dist/agent/entry-limits.js +0 -133
  278. package/dist/agent/governance-view.d.ts +0 -40
  279. package/dist/agent/governance-view.js +0 -40
  280. package/dist/agent/invocation-card.d.ts +0 -77
  281. package/dist/agent/invocation-card.js +0 -169
  282. package/dist/agent/model-probe-limits.d.ts +0 -39
  283. package/dist/agent/model-probe-limits.js +0 -25
  284. package/dist/agent/model-probe.d.ts +0 -104
  285. package/dist/agent/model-probe.js +0 -391
  286. package/dist/agent/queued-messages.d.ts +0 -23
  287. package/dist/agent/queued-messages.js +0 -49
  288. package/dist/agent/reducer.d.ts +0 -837
  289. package/dist/agent/reducer.js +0 -1617
  290. package/dist/agent/retry-view.d.ts +0 -68
  291. package/dist/agent/retry-view.js +0 -95
  292. package/dist/agent/usage.d.ts +0 -47
  293. package/dist/agent/usage.js +0 -84
  294. package/dist/compaction/limits.d.ts +0 -61
  295. package/dist/compaction/limits.js +0 -64
  296. package/dist/compaction/meter.d.ts +0 -276
  297. package/dist/compaction/meter.js +0 -512
  298. package/dist/compaction/pressure.d.ts +0 -163
  299. package/dist/compaction/pressure.js +0 -199
  300. package/dist/compaction/reason-text.d.ts +0 -36
  301. package/dist/compaction/reason-text.js +0 -78
  302. package/dist/compaction/types.d.ts +0 -360
  303. package/dist/compaction/types.js +0 -22
  304. package/dist/config/governance-config.d.ts +0 -125
  305. package/dist/config/governance-config.js +0 -164
  306. package/dist/config/kit-resolution.d.ts +0 -93
  307. package/dist/config/kit-resolution.js +0 -226
  308. package/dist/config/model-kits.d.ts +0 -225
  309. package/dist/config/model-kits.js +0 -302
  310. package/dist/config/model-profile-resolution.d.ts +0 -28
  311. package/dist/config/model-profile-resolution.js +0 -88
  312. package/dist/config/model-profiles.d.ts +0 -103
  313. package/dist/config/model-profiles.js +0 -188
  314. package/dist/config/schema.d.ts +0 -1645
  315. package/dist/config/schema.js +0 -1377
  316. package/dist/fast/limits.d.ts +0 -152
  317. package/dist/fast/limits.js +0 -152
  318. package/dist/fast/resolve.d.ts +0 -44
  319. package/dist/fast/resolve.js +0 -107
  320. package/dist/fast/task-summary-types.d.ts +0 -66
  321. package/dist/fast/task-summary-types.js +0 -17
  322. package/dist/fast/types.d.ts +0 -141
  323. package/dist/fast/types.js +0 -14
  324. package/dist/governance/governed-dispatch.d.ts +0 -19
  325. package/dist/governance/governed-dispatch.js +0 -17
  326. package/dist/governance/limits.d.ts +0 -107
  327. package/dist/governance/limits.js +0 -131
  328. package/dist/governance/posture.d.ts +0 -35
  329. package/dist/governance/posture.js +0 -59
  330. package/dist/governance/rules/events-table.d.ts +0 -46
  331. package/dist/governance/rules/events-table.js +0 -94
  332. package/dist/governance/types.d.ts +0 -661
  333. package/dist/governance/types.js +0 -27
  334. package/dist/input/control-sequences.d.ts +0 -71
  335. package/dist/input/control-sequences.js +0 -222
  336. package/dist/input/csiu-keys.d.ts +0 -66
  337. package/dist/input/csiu-keys.js +0 -181
  338. package/dist/input/cursor-report.d.ts +0 -61
  339. package/dist/input/cursor-report.js +0 -97
  340. package/dist/input/enter-sequences.d.ts +0 -64
  341. package/dist/input/enter-sequences.js +0 -153
  342. package/dist/input/interrupt-gesture.d.ts +0 -18
  343. package/dist/input/interrupt-gesture.js +0 -19
  344. package/dist/input/keyboard-enhancement.d.ts +0 -42
  345. package/dist/input/keyboard-enhancement.js +0 -65
  346. package/dist/input/keymap.d.ts +0 -20
  347. package/dist/input/keymap.js +0 -99
  348. package/dist/input/limits.d.ts +0 -118
  349. package/dist/input/limits.js +0 -109
  350. package/dist/input/mouse-events.d.ts +0 -87
  351. package/dist/input/mouse-events.js +0 -212
  352. package/dist/input/paste-parse.d.ts +0 -83
  353. package/dist/input/paste-parse.js +0 -107
  354. package/dist/input/pointer-router.d.ts +0 -11
  355. package/dist/input/pointer-router.js +0 -14
  356. package/dist/input/stdin-filter.d.ts +0 -112
  357. package/dist/input/stdin-filter.js +0 -657
  358. package/dist/input/win32-input-mode.d.ts +0 -61
  359. package/dist/input/win32-input-mode.js +0 -269
  360. package/dist/logging/levels.d.ts +0 -40
  361. package/dist/logging/levels.js +0 -59
  362. package/dist/logging/secret-registry.d.ts +0 -32
  363. package/dist/logging/secret-registry.js +0 -73
  364. package/dist/proc/limits.d.ts +0 -200
  365. package/dist/proc/limits.js +0 -207
  366. package/dist/proc/progress.d.ts +0 -40
  367. package/dist/proc/progress.js +0 -135
  368. package/dist/proc/types.d.ts +0 -263
  369. package/dist/proc/types.js +0 -15
  370. package/dist/prompts/copy.d.ts +0 -89
  371. package/dist/prompts/copy.js +0 -131
  372. package/dist/prompts/fill.d.ts +0 -51
  373. package/dist/prompts/fill.js +0 -46
  374. package/dist/prompts/limits.d.ts +0 -53
  375. package/dist/prompts/limits.js +0 -53
  376. package/dist/prompts/search.d.ts +0 -58
  377. package/dist/prompts/search.js +0 -146
  378. package/dist/prompts/types.d.ts +0 -204
  379. package/dist/prompts/types.js +0 -13
  380. package/dist/team/activity.d.ts +0 -67
  381. package/dist/team/activity.js +0 -130
  382. package/dist/team/limits.d.ts +0 -308
  383. package/dist/team/limits.js +0 -330
  384. package/dist/team/model.d.ts +0 -104
  385. package/dist/team/model.js +0 -150
  386. package/dist/team/panel-rows.d.ts +0 -48
  387. package/dist/team/panel-rows.js +0 -75
  388. package/dist/team/timeline.d.ts +0 -74
  389. package/dist/team/timeline.js +0 -101
  390. package/dist/team/types.d.ts +0 -354
  391. package/dist/team/types.js +0 -13
  392. package/dist/todo/acceptance.d.ts +0 -120
  393. package/dist/todo/acceptance.js +0 -399
  394. package/dist/todo/follow-through.d.ts +0 -138
  395. package/dist/todo/follow-through.js +0 -248
  396. package/dist/todo/limits.d.ts +0 -152
  397. package/dist/todo/limits.js +0 -152
  398. package/dist/todo/panel-rows.d.ts +0 -45
  399. package/dist/todo/panel-rows.js +0 -70
  400. package/dist/todo/plan-sections.d.ts +0 -60
  401. package/dist/todo/plan-sections.js +0 -108
  402. package/dist/todo/row-window.d.ts +0 -51
  403. package/dist/todo/row-window.js +0 -107
  404. package/dist/todo/types.d.ts +0 -124
  405. package/dist/todo/types.js +0 -12
  406. package/dist/tools/human-input.d.ts +0 -212
  407. package/dist/tools/human-input.js +0 -265
  408. package/dist/tools/patch.d.ts +0 -115
  409. package/dist/tools/patch.js +0 -453
  410. package/dist/tools/terminal-output.d.ts +0 -115
  411. package/dist/tools/terminal-output.js +0 -201
  412. package/dist/tools/tool-output-store.d.ts +0 -68
  413. package/dist/tools/tool-output-store.js +0 -102
  414. package/dist/ui/ActivityLine.d.ts +0 -26
  415. package/dist/ui/ActivityLine.js +0 -48
  416. package/dist/ui/AutocompletePopup.d.ts +0 -23
  417. package/dist/ui/AutocompletePopup.js +0 -17
  418. package/dist/ui/BottomStatusRow.d.ts +0 -10
  419. package/dist/ui/BottomStatusRow.js +0 -9
  420. package/dist/ui/Composer.d.ts +0 -115
  421. package/dist/ui/Composer.js +0 -64
  422. package/dist/ui/GovernancePanel.d.ts +0 -50
  423. package/dist/ui/GovernancePanel.js +0 -77
  424. package/dist/ui/GovernanceRun.d.ts +0 -18
  425. package/dist/ui/GovernanceRun.js +0 -11
  426. package/dist/ui/Header.d.ts +0 -48
  427. package/dist/ui/Header.js +0 -27
  428. package/dist/ui/Logo.d.ts +0 -32
  429. package/dist/ui/Logo.js +0 -65
  430. package/dist/ui/Markdown.d.ts +0 -29
  431. package/dist/ui/Markdown.js +0 -116
  432. package/dist/ui/PromptCaret.d.ts +0 -11
  433. package/dist/ui/PromptCaret.js +0 -31
  434. package/dist/ui/PromptInput.d.ts +0 -192
  435. package/dist/ui/PromptInput.js +0 -689
  436. package/dist/ui/QueuePanel.d.ts +0 -8
  437. package/dist/ui/QueuePanel.js +0 -9
  438. package/dist/ui/QueueStatusRow.d.ts +0 -24
  439. package/dist/ui/QueueStatusRow.js +0 -51
  440. package/dist/ui/ScrollbackShell.d.ts +0 -132
  441. package/dist/ui/ScrollbackShell.js +0 -26
  442. package/dist/ui/SessionOpener.d.ts +0 -30
  443. package/dist/ui/SessionOpener.js +0 -12
  444. package/dist/ui/StatusBar.d.ts +0 -129
  445. package/dist/ui/StatusBar.js +0 -61
  446. package/dist/ui/TeamPanel.d.ts +0 -76
  447. package/dist/ui/TeamPanel.js +0 -103
  448. package/dist/ui/ToastStack.d.ts +0 -8
  449. package/dist/ui/ToastStack.js +0 -31
  450. package/dist/ui/TodoPanel.d.ts +0 -52
  451. package/dist/ui/TodoPanel.js +0 -214
  452. package/dist/ui/Transcript.d.ts +0 -105
  453. package/dist/ui/Transcript.js +0 -251
  454. package/dist/ui/UpdateLine.d.ts +0 -44
  455. package/dist/ui/UpdateLine.js +0 -129
  456. package/dist/ui/activity-phrases.d.ts +0 -33
  457. package/dist/ui/activity-phrases.js +0 -50
  458. package/dist/ui/capabilities.d.ts +0 -27
  459. package/dist/ui/capabilities.js +0 -65
  460. package/dist/ui/clipboard-task.d.ts +0 -29
  461. package/dist/ui/clipboard-task.js +0 -66
  462. package/dist/ui/clipboard.d.ts +0 -31
  463. package/dist/ui/clipboard.js +0 -157
  464. package/dist/ui/color-runtime.d.ts +0 -5
  465. package/dist/ui/color-runtime.js +0 -29
  466. package/dist/ui/composer-input.d.ts +0 -38
  467. package/dist/ui/composer-input.js +0 -79
  468. package/dist/ui/composer-limits.d.ts +0 -30
  469. package/dist/ui/composer-limits.js +0 -45
  470. package/dist/ui/composer-rows.d.ts +0 -73
  471. package/dist/ui/composer-rows.js +0 -129
  472. package/dist/ui/console-bridge.d.ts +0 -19
  473. package/dist/ui/console-bridge.js +0 -52
  474. package/dist/ui/density.d.ts +0 -26
  475. package/dist/ui/density.js +0 -34
  476. package/dist/ui/display-tab.d.ts +0 -51
  477. package/dist/ui/display-tab.js +0 -82
  478. package/dist/ui/editor-navigation.d.ts +0 -55
  479. package/dist/ui/editor-navigation.js +0 -96
  480. package/dist/ui/editor-reducer.d.ts +0 -108
  481. package/dist/ui/editor-reducer.js +0 -187
  482. package/dist/ui/enter-frames.d.ts +0 -47
  483. package/dist/ui/enter-frames.js +0 -117
  484. package/dist/ui/entries/AssistantEntry.d.ts +0 -37
  485. package/dist/ui/entries/AssistantEntry.js +0 -43
  486. package/dist/ui/entries/CompactionCard.d.ts +0 -88
  487. package/dist/ui/entries/CompactionCard.js +0 -222
  488. package/dist/ui/entries/DiffView.d.ts +0 -61
  489. package/dist/ui/entries/DiffView.js +0 -103
  490. package/dist/ui/entries/EntryFrame.d.ts +0 -23
  491. package/dist/ui/entries/EntryFrame.js +0 -6
  492. package/dist/ui/entries/FastCard.d.ts +0 -53
  493. package/dist/ui/entries/FastCard.js +0 -105
  494. package/dist/ui/entries/GovernanceCard.d.ts +0 -30
  495. package/dist/ui/entries/GovernanceCard.js +0 -32
  496. package/dist/ui/entries/InvocationCard.d.ts +0 -20
  497. package/dist/ui/entries/InvocationCard.js +0 -32
  498. package/dist/ui/entries/QueuedEntry.d.ts +0 -27
  499. package/dist/ui/entries/QueuedEntry.js +0 -33
  500. package/dist/ui/entries/RetryCard.d.ts +0 -56
  501. package/dist/ui/entries/RetryCard.js +0 -60
  502. package/dist/ui/entries/ServiceCard.d.ts +0 -82
  503. package/dist/ui/entries/ServiceCard.js +0 -151
  504. package/dist/ui/entries/TeamCard.d.ts +0 -55
  505. package/dist/ui/entries/TeamCard.js +0 -94
  506. package/dist/ui/entries/TodoCard.d.ts +0 -54
  507. package/dist/ui/entries/TodoCard.js +0 -98
  508. package/dist/ui/entries/ToolCard.d.ts +0 -81
  509. package/dist/ui/entries/ToolCard.js +0 -160
  510. package/dist/ui/entries/ToolPreview.d.ts +0 -59
  511. package/dist/ui/entries/ToolPreview.js +0 -208
  512. package/dist/ui/entries/UserEntry.d.ts +0 -36
  513. package/dist/ui/entries/UserEntry.js +0 -57
  514. package/dist/ui/exit-snapshot.d.ts +0 -43
  515. package/dist/ui/exit-snapshot.js +0 -26
  516. package/dist/ui/frame-differ.d.ts +0 -166
  517. package/dist/ui/frame-differ.js +0 -354
  518. package/dist/ui/frame-observer.d.ts +0 -17
  519. package/dist/ui/frame-observer.js +0 -94
  520. package/dist/ui/frame-parser.d.ts +0 -7
  521. package/dist/ui/frame-parser.js +0 -18
  522. package/dist/ui/gauge.d.ts +0 -39
  523. package/dist/ui/gauge.js +0 -55
  524. package/dist/ui/glyphs.d.ts +0 -178
  525. package/dist/ui/glyphs.js +0 -165
  526. package/dist/ui/governance-copy.d.ts +0 -69
  527. package/dist/ui/governance-copy.js +0 -104
  528. package/dist/ui/governance-status.d.ts +0 -145
  529. package/dist/ui/governance-status.js +0 -326
  530. package/dist/ui/gradient.d.ts +0 -11
  531. package/dist/ui/gradient.js +0 -50
  532. package/dist/ui/ink-runtime.d.ts +0 -4
  533. package/dist/ui/ink-runtime.js +0 -51
  534. package/dist/ui/interaction-copy.d.ts +0 -82
  535. package/dist/ui/interaction-copy.js +0 -38
  536. package/dist/ui/interaction-hints.d.ts +0 -44
  537. package/dist/ui/interaction-hints.js +0 -97
  538. package/dist/ui/layout/AppShell.d.ts +0 -17
  539. package/dist/ui/layout/AppShell.js +0 -6
  540. package/dist/ui/layout/Gutter.d.ts +0 -67
  541. package/dist/ui/layout/Gutter.js +0 -42
  542. package/dist/ui/layout/MeasuredEntry.d.ts +0 -21
  543. package/dist/ui/layout/MeasuredEntry.js +0 -30
  544. package/dist/ui/layout/OverlayFrame.d.ts +0 -73
  545. package/dist/ui/layout/OverlayFrame.js +0 -110
  546. package/dist/ui/layout/ScrollIndicator.d.ts +0 -32
  547. package/dist/ui/layout/ScrollIndicator.js +0 -22
  548. package/dist/ui/layout/ScrollViewport.d.ts +0 -40
  549. package/dist/ui/layout/ScrollViewport.js +0 -222
  550. package/dist/ui/layout/agents-board.d.ts +0 -102
  551. package/dist/ui/layout/agents-board.js +0 -389
  552. package/dist/ui/layout/autocomplete.d.ts +0 -18
  553. package/dist/ui/layout/autocomplete.js +0 -26
  554. package/dist/ui/layout/budget.d.ts +0 -43
  555. package/dist/ui/layout/budget.js +0 -52
  556. package/dist/ui/layout/cells.d.ts +0 -61
  557. package/dist/ui/layout/cells.js +0 -156
  558. package/dist/ui/layout/document-layout.d.ts +0 -13
  559. package/dist/ui/layout/document-layout.js +0 -10
  560. package/dist/ui/layout/follow-state.d.ts +0 -138
  561. package/dist/ui/layout/follow-state.js +0 -148
  562. package/dist/ui/layout/frame.d.ts +0 -36
  563. package/dist/ui/layout/frame.js +0 -39
  564. package/dist/ui/layout/governance-board.d.ts +0 -121
  565. package/dist/ui/layout/governance-board.js +0 -382
  566. package/dist/ui/layout/governance-card.d.ts +0 -53
  567. package/dist/ui/layout/governance-card.js +0 -134
  568. package/dist/ui/layout/governance-chip.d.ts +0 -38
  569. package/dist/ui/layout/governance-chip.js +0 -64
  570. package/dist/ui/layout/governance-panel.d.ts +0 -85
  571. package/dist/ui/layout/governance-panel.js +0 -358
  572. package/dist/ui/layout/governance-roster.d.ts +0 -65
  573. package/dist/ui/layout/governance-roster.js +0 -275
  574. package/dist/ui/layout/header-hints.d.ts +0 -90
  575. package/dist/ui/layout/header-hints.js +0 -110
  576. package/dist/ui/layout/header-left.d.ts +0 -115
  577. package/dist/ui/layout/header-left.js +0 -206
  578. package/dist/ui/layout/invocation-card.d.ts +0 -41
  579. package/dist/ui/layout/invocation-card.js +0 -91
  580. package/dist/ui/layout/kit-chip.d.ts +0 -50
  581. package/dist/ui/layout/kit-chip.js +0 -81
  582. package/dist/ui/layout/overlay-window.d.ts +0 -43
  583. package/dist/ui/layout/overlay-window.js +0 -51
  584. package/dist/ui/layout/queue-layout.d.ts +0 -19
  585. package/dist/ui/layout/queue-layout.js +0 -26
  586. package/dist/ui/layout/rail.d.ts +0 -7
  587. package/dist/ui/layout/rail.js +0 -16
  588. package/dist/ui/layout/scroll-indicator.d.ts +0 -27
  589. package/dist/ui/layout/scroll-indicator.js +0 -36
  590. package/dist/ui/layout/scroll.d.ts +0 -37
  591. package/dist/ui/layout/scroll.js +0 -99
  592. package/dist/ui/layout/scrollbar-geometry.d.ts +0 -17
  593. package/dist/ui/layout/scrollbar-geometry.js +0 -13
  594. package/dist/ui/layout/session-chip.d.ts +0 -52
  595. package/dist/ui/layout/session-chip.js +0 -64
  596. package/dist/ui/layout/shortcut-panel-layout.d.ts +0 -191
  597. package/dist/ui/layout/shortcut-panel-layout.js +0 -321
  598. package/dist/ui/layout/status-detail-layout.d.ts +0 -9
  599. package/dist/ui/layout/status-detail-layout.js +0 -79
  600. package/dist/ui/layout/status-layout.d.ts +0 -139
  601. package/dist/ui/layout/status-layout.js +0 -253
  602. package/dist/ui/layout/task-summary-cell.d.ts +0 -61
  603. package/dist/ui/layout/task-summary-cell.js +0 -65
  604. package/dist/ui/layout/team-panel.d.ts +0 -18
  605. package/dist/ui/layout/team-panel.js +0 -25
  606. package/dist/ui/layout/team-row.d.ts +0 -139
  607. package/dist/ui/layout/team-row.js +0 -246
  608. package/dist/ui/layout/todo-layout.d.ts +0 -62
  609. package/dist/ui/layout/todo-layout.js +0 -102
  610. package/dist/ui/layout/useTerminalSize.d.ts +0 -13
  611. package/dist/ui/layout/useTerminalSize.js +0 -50
  612. package/dist/ui/layout/viewport-geometry.d.ts +0 -29
  613. package/dist/ui/layout/viewport-geometry.js +0 -28
  614. package/dist/ui/layout/virtual-window.d.ts +0 -112
  615. package/dist/ui/layout/virtual-window.js +0 -488
  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 -61
  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 -118
  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,512 +0,0 @@
1
- /**
2
- * `ContextMeter` - the ONE owner of "how full is the context right now"
3
- * (context-usage-gauge-accuracy §3.2 / W1).
4
- *
5
- * ASCII ONLY: `src/compaction/**` is inside the glyph scanner's scope
6
- * (`glyphs.test.ts::inScope`). If this module is ever moved to a new tree, the
7
- * scanner's hardcoded directory list must be widened IN THE SAME COMMIT - a
8
- * scanner that silently stops scanning is worse than no scanner, and this
9
- * package has paid for that edit eleven times (I-7).
10
- *
11
- * IT LIVES HERE BUT IT IS NOT PART OF COMPACTION, and that is deliberate. The
12
- * whole point of this class is that occupancy is measurable when compaction is
13
- * OFF: `AgentController` builds a `CompactionWiring` only when
14
- * `compaction.enabled` is true, so a measurement owned by the compactor is
15
- * unreachable for exactly the sessions that most need a working gauge. It sits
16
- * in this directory because `pressure.ts` - the arithmetic it drives - already
17
- * does, and because moving it would cost a scanner edit for no gain (R-10).
18
- *
19
- * THE STATE MACHINE IN ONE PARAGRAPH. Every mutation of the history marks the
20
- * meter DIRTY; every read that finds it dirty re-measures SYNCHRONOUSLY. That
21
- * ordering is what removes the subscription-order dependency in the APPEND
22
- * direction: it does not matter whether this class or the compaction wiring
23
- * hears `tool_execution_end` first, because whoever reads gets a number that
24
- * includes the appended message either way (I-2). It does NOT remove the
25
- * dependency in the REPLACE direction - a splice does not announce itself to a
26
- * listener that has not run yet - which is why the splice marks this dirty from
27
- * `CompactionWiring.settlePending`'s own synchronous code (I-9), and why
28
- * `current()` carries a structural belt for a missed invalidation site.
29
- */
30
- import { getLogger } from '../logging/logger.js';
31
- import { computeEstimateOffset, computePressure, isInputSideUnmeasured } from './pressure.js';
32
- /**
33
- * How long a scheduled publish waits.
34
- *
35
- * IT MUST BE A DELAY, NOT ZERO, AND NOT A SYNCHRONOUS MEASUREMENT (I-3). The
36
- * loop emits `tool_execution_end` BEFORE it pushes the `tool_result` message, so
37
- * anything that measures inside that event measures a history missing the single
38
- * largest message of the turn - silently, and every turn. A `setTimeout` is
39
- * necessarily later than that synchronous push.
40
- *
41
- * 400 ms also caps the publish rate at 2.5 Hz, which together with the reducer's
42
- * identity short-circuit keeps a permanently visible row from becoming a
43
- * re-render source (R-3).
44
- */
45
- export const CONTEXT_METER_TICK_MS = 400;
46
- /**
47
- * The projection `ViewState` and `/context` read (§4.1).
48
- *
49
- * THE ONLY CONVERTER between `Pressure` and `ContextUsageSnapshot`. Two of them
50
- * would eventually round the percentage differently, and "the status bar says 43
51
- * and `/context` says 44" is the exact class of disagreement this whole feature
52
- * exists to remove.
53
- */
54
- export function toContextUsage(p) {
55
- return {
56
- occupied: p.occupied,
57
- ...(p.windowSource ? { windowSource: p.windowSource } : {}),
58
- window: p.contextWindow,
59
- // FROM `ratio`, NOT FROM A SECOND DIVISION. `computePressure` already
60
- // clamped it to [0, 1] and already decided what a zero window means.
61
- pct: Math.max(0, Math.min(100, Math.round(p.ratio * 100))),
62
- source: p.source,
63
- deltaTokens: p.deltaTokens,
64
- windowKnown: p.windowKnown,
65
- windowOverridden: p.windowOverridden,
66
- ...(p.windowOverrideOrigin !== undefined
67
- ? { windowOverrideOrigin: p.windowOverrideOrigin }
68
- : {}),
69
- };
70
- }
71
- /** The reading a meter with nothing measured yet reports. */
72
- export function emptyContextUsage() {
73
- return {
74
- occupied: 0,
75
- window: 0,
76
- pct: 0,
77
- source: 'estimate',
78
- deltaTokens: 0,
79
- windowKnown: false,
80
- windowOverridden: false,
81
- };
82
- }
83
- export class ContextMeter {
84
- deps;
85
- listeners = new Set();
86
- unsubscribe = null;
87
- timer = null;
88
- disposed = false;
89
- /**
90
- * The authoritative usage of the last completed turn.
91
- *
92
- * Its presence is what selects `computePressure`'s MEASURED branch, so
93
- * dropping it is how every reset degrades to an estimate rather than to a
94
- * number describing a history that no longer exists.
95
- */
96
- lastUsage;
97
- /**
98
- * The systematic difference between what `estimatePromptTokens` counts and
99
- * what the provider bills (D-23) - chiefly the tool schemas.
100
- *
101
- * SURVIVES A SPLICE AND NOT A SESSION CHANGE (I-8). See `onHistorySpliced`.
102
- */
103
- estimateOffset;
104
- /** `messages.length` at the `turn_end` that produced `lastUsage`. */
105
- measuredPrefixLength;
106
- /** The last pressure PUBLISHED. Never re-derived on read - see `lastPublished`. */
107
- last = null;
108
- /** Whether the history has changed since the last measurement. */
109
- dirty = true;
110
- /** Whether the one-per-run empty-measurement warning has been spent. */
111
- hasWarnedUnmeasuredInput = false;
112
- prefixLast;
113
- sampledPrompt;
114
- sampledVersion;
115
- publishedLength = -1;
116
- publishedLast;
117
- publishedPrompt;
118
- publishedVersion;
119
- constructor(deps) {
120
- this.deps = deps;
121
- }
122
- // =========================================================================
123
- // Reading
124
- // =========================================================================
125
- /**
126
- * Occupancy right now. FOR THE SCREEN.
127
- *
128
- * Re-measures synchronously when dirty (I-2), and publishes when it does - the
129
- * gauge has to fall in the SAME FRAME as the compaction that caused it (AC-1),
130
- * and the caller that triggers this re-measurement is `CompactionWiring`'s own
131
- * synchronous `snapshot()` inside `settlePending`. Leaving the publish to the
132
- * scheduled tick instead would be worse than slow: the tick fires only when
133
- * `dirty`, and this call is what clears it.
134
- *
135
- * NEVER THROWS. A meter that can throw is a status bar that can take the
136
- * process down.
137
- */
138
- current() {
139
- // THE BELT (I-9), AND IT RUNS EVEN WHEN NOT DIRTY. The case it exists for is
140
- // a splice that NOBODY announced, and in that case a missing `dirty` flag is
141
- // precisely the symptom. `estimateAppendedTokens` bounds-checks too, but it
142
- // only zeroes the DELTA and keeps the wrong measured base, so that belt does
143
- // not cover this.
144
- this.refreshValidity();
145
- if (!this.dirty && this.last)
146
- return this.last;
147
- return this.measureAndPublish(this.lastUsage);
148
- }
149
- /**
150
- * The last pressure this meter PUBLISHED. FOR THE BOOKS. Never re-measures.
151
- *
152
- * `Compactor.lastMeasured()` forwards here and not to `current()`, and the
153
- * distinction is load-bearing (I-10): `compactor.ts`'s `tokensBefore` is the
154
- * sole upstream of `tokensReclaimed`, the card's "reclaimed N tokens" line and
155
- * `/compact status`'s session total. It wants the occupancy BEFORE the splice.
156
- * Wired to `current()` it would re-measure the already-spliced history, report
157
- * `reclaimed 0`, and render that number without a single log line about it.
158
- */
159
- lastPublished() {
160
- return this.last;
161
- }
162
- /** The published projection, or a zeroed one before the first measurement. */
163
- currentUsage() {
164
- return toContextUsage(this.current());
165
- }
166
- // =========================================================================
167
- // Writing
168
- // =========================================================================
169
- /** Compatibility reads cannot establish or resurrect a provider sample. */
170
- measureWith(_lastUsage) {
171
- return this.current();
172
- }
173
- /**
174
- * `turn_end` - the one moment in the whole flow that is FULLY measured.
175
- *
176
- * The loop emits it BEFORE pushing the assistant message, so the history right
177
- * now is exactly the history the reported `usage` was billed for: the offset
178
- * and the prefix length describe the same array by construction, and
179
- * `deltaTokens` is 0. Published immediately for that reason - there is no
180
- * better number to wait for.
181
- */
182
- onTurnEnd(usage) {
183
- if (isInputSideUnmeasured(usage)) {
184
- // A usage that discloses NOTHING on the input side is not a
185
- // measurement of this history (context-usage-zero-input-tokens B):
186
- // arming the measured branch with it collapses occupancy to the
187
- // turn's own outputTokens and strips the `~` off the gauge. KEEP
188
- // WHATEVER IS STILL TRUSTED - an earlier good measurement of a
189
- // prefix that still exists (the history only grows between splices,
190
- // so "old good base + appended estimate" stays self-consistent), and
191
- // the estimate offset it calibrated - and re-measure NOW so the
192
- // gauge degrades in this frame instead of after the next turn.
193
- this.warnUnmeasuredInputOnce(usage);
194
- this.dirty = true;
195
- this.current();
196
- return;
197
- }
198
- const messages = this.deps.getMessages();
199
- const systemPrompt = this.readSystemPrompt();
200
- this.lastUsage = usage;
201
- this.estimateOffset = computeEstimateOffset(usage, messages, systemPrompt);
202
- this.measuredPrefixLength = messages.length;
203
- this.prefixLast = messages[messages.length - 1];
204
- this.sampledPrompt = systemPrompt;
205
- this.sampledVersion = this.deps.getRequestVersion?.() ?? 0;
206
- this.measureAndPublish(usage);
207
- }
208
- /**
209
- * A compaction spliced the history (I-8, the SHALLOW reset).
210
- *
211
- * `estimateOffset` IS KEPT, and that is the whole reason this method is not
212
- * `onHistoryReplaced`. The offset describes "what this toolset costs on this
213
- * model above what the estimator counts"; a splice changes neither the toolset
214
- * nor the model, so it is still valid - and it is the only calibration the
215
- * estimate branch has until the next `turn_end`. Dropping it makes the gauge
216
- * fall several thousand tokens too far and then visibly climb back on the next
217
- * turn, for no reason the user can see (I-5).
218
- *
219
- * IDEMPOTENT. Both `settlePending` (the authority, I-9) and this meter's own
220
- * `compaction_end` handler reach it, and the second one must cost nothing.
221
- */
222
- onHistorySpliced() {
223
- this.lastUsage = undefined;
224
- this.measuredPrefixLength = undefined;
225
- this.prefixLast = undefined;
226
- if (this.dirty)
227
- return;
228
- this.dirty = true;
229
- this.scheduleTick();
230
- }
231
- /**
232
- * The history came from somewhere else entirely (I-8, the DEEP reset):
233
- * `/clear`, `/reset`, `/resume`.
234
- *
235
- * `estimateOffset` GOES TOO, unlike the shallow reset above. `/resume` can
236
- * change the model in the same breath (`builtins.ts`'s restore path does), and
237
- * an offset carried across that is a calibration constant applied to something
238
- * it never calibrated. The first reading afterwards is therefore a bare
239
- * estimate - biased LOW, and corrected by the very next `turn_end`. Biased low
240
- * and self-correcting beats biased high and permanent.
241
- */
242
- onHistoryReplaced() {
243
- this.lastUsage = undefined;
244
- this.measuredPrefixLength = undefined;
245
- this.prefixLast = undefined;
246
- this.estimateOffset = undefined;
247
- this.sampledPrompt = undefined;
248
- this.sampledVersion = undefined;
249
- this.dirty = true;
250
- this.scheduleTick();
251
- }
252
- /**
253
- * Only the denominator moved (window override or model metadata refresh).
254
- *
255
- * DELIBERATELY NOT A RESET. The measured base is still a true statement about
256
- * the history, so throwing it away would trade a correct numerator for a whole
257
- * history estimate and produce a visible jump on a common operation. The
258
- * Changing the model connection or request environment requires the deep
259
- * invalidation path instead; its measurement is no longer transferable.
260
- */
261
- onWindowChanged() {
262
- this.dirty = true;
263
- this.current();
264
- }
265
- /**
266
- * Something was appended. Mark dirty, arrange a throttled publish, MEASURE
267
- * NOTHING (I-3).
268
- */
269
- scheduleTick() {
270
- this.dirty = true;
271
- // NO SUBSCRIBERS, NO TIMER (I-11). `AgentController` is shared with
272
- // `aragon exec`, where nothing reads this number; a headless run must not
273
- // pay a timer per tool call, and a pending tick must never be able to hold
274
- // the process open for an extra 400 ms. `current()` is unaffected - it
275
- // measures on demand, so `wiring.snapshot()` and `/context` still work in a
276
- // host with no UI.
277
- if (this.listeners.size === 0)
278
- return;
279
- if (this.timer !== null || this.disposed)
280
- return;
281
- const handle = setTimeout(() => {
282
- this.timer = null;
283
- if (!this.dirty || this.disposed)
284
- return;
285
- this.current();
286
- }, CONTEXT_METER_TICK_MS);
287
- // The other half of I-11: an armed tick must not keep the event loop alive.
288
- const unrefable = handle;
289
- if (typeof unrefable.unref === 'function')
290
- unrefable.unref();
291
- this.timer = handle;
292
- }
293
- // =========================================================================
294
- // Plumbing
295
- // =========================================================================
296
- /** Publish to this meter's own subscribers. Returns an unsubscribe function. */
297
- subscribe(listener) {
298
- this.listeners.add(listener);
299
- return () => {
300
- this.listeners.delete(listener);
301
- };
302
- }
303
- /**
304
- * Subscribe to the lead agent's stream. IDEMPOTENT.
305
- *
306
- * THIS TABLE IS NOT THE SOURCE OF COMPACTION CORRECTNESS (I-9). The splice is
307
- * marked dirty by `CompactionWiring.settlePending` inside its own synchronous
308
- * code, BEFORE it emits either event, so a reader is correct regardless of
309
- * which listener the emitter reaches first. The `compaction_end` row below is
310
- * a second, idempotent path that serves the manual `/compact` route and any
311
- * future splicer.
312
- */
313
- attach(subscribe) {
314
- if (this.unsubscribe)
315
- return;
316
- this.unsubscribe = subscribe((event) => this.onAgentEvent(event));
317
- }
318
- dispose() {
319
- this.disposed = true;
320
- if (this.timer !== null) {
321
- clearTimeout(this.timer);
322
- this.timer = null;
323
- }
324
- this.unsubscribe?.();
325
- this.unsubscribe = null;
326
- this.listeners.clear();
327
- }
328
- // =========================================================================
329
- // Internals
330
- // =========================================================================
331
- /**
332
- * ONE warn per run (context-usage-zero-input-tokens B). A single day of
333
- * real usage logged 1,973 zero-input turns; a per-turn warning is a flood
334
- * that teaches whoever reads the file to ignore it.
335
- *
336
- * The logger is resolved LAZILY rather than captured at construction:
337
- * hosts build this class before `installLogging()`, and a child captured
338
- * then would stay bound to the silent pre-install logger forever.
339
- */
340
- warnUnmeasuredInputOnce(usage) {
341
- if (this.hasWarnedUnmeasuredInput)
342
- return;
343
- this.hasWarnedUnmeasuredInput = true;
344
- getLogger().warn('compaction', 'context_input_tokens_unreported', { in: usage.inputTokens, out: usage.outputTokens });
345
- }
346
- onAgentEvent(event) {
347
- switch (event.type) {
348
- case 'turn_end':
349
- this.onTurnEnd(event.usage);
350
- return;
351
- case 'tool_execution_end':
352
- // DELAYED, NEVER SYNCHRONOUS. See `CONTEXT_METER_TICK_MS` (I-3).
353
- this.scheduleTick();
354
- return;
355
- case 'compaction_end':
356
- // The engine's verdict. `applied` means the history really was replaced.
357
- if (event.applied)
358
- this.onHistorySpliced();
359
- else
360
- this.scheduleTick();
361
- return;
362
- case 'agent_end':
363
- this.scheduleTick();
364
- return;
365
- default:
366
- // `message_update` is a STREAM event and is deliberately ignored (N-2):
367
- // the output tokens of an in-flight reply are not knowable until `done`,
368
- // and guessing them would add a third approximation to a number that
369
- // already carries two.
370
- return;
371
- }
372
- }
373
- /**
374
- * The structural belt for a missed invalidation site (I-9).
375
- *
376
- * A recorded prefix that is LONGER than the history it indexes describes an
377
- * array that no longer exists. Rather than merely zeroing the delta - which is
378
- * what `estimateAppendedTokens` does, keeping the wrong measured base - this
379
- * drops the base too and forces the estimate branch.
380
- *
381
- * THE COMPARISON IS STRICT, AND THAT BOUNDARY IS LOAD-BEARING (IF-1). The
382
- * design document wrote `length <= measuredPrefixLength`, which is off by one:
383
- * `turn_end` is emitted BEFORE the assistant message is pushed, so the instant
384
- * `onTurnEnd` records the prefix the history is EXACTLY that long. An
385
- * inclusive test therefore discards a measurement one statement after taking
386
- * it - but only when this meter's listener runs before the compaction wiring's,
387
- * because the wiring's `snapshot()` is what reads in that window. That is a
388
- * silent, subscription-order-dependent fallback to the estimate branch on
389
- * every single turn, which is the exact class of bug this feature exists to
390
- * remove. A measurement taken at length N describes every history of length
391
- * >= N; only a SHORTER one is impossible.
392
- *
393
- * Returns whether anything was discarded.
394
- */
395
- discardStalePrefix() {
396
- if (this.measuredPrefixLength === undefined)
397
- return false;
398
- const messages = this.deps.getMessages();
399
- if (messages.length >= this.measuredPrefixLength &&
400
- messages[this.measuredPrefixLength - 1] === this.prefixLast)
401
- return false;
402
- this.lastUsage = undefined;
403
- this.measuredPrefixLength = undefined;
404
- this.prefixLast = undefined;
405
- return true;
406
- }
407
- /**
408
- * Measure, cache, clear the dirty flag, publish. The ONE write path.
409
- *
410
- * Every public mutator funnels through here so "what was published" and "what
411
- * is cached" cannot drift, which is what makes `lastPublished()` a meaningful
412
- * answer rather than a stale one.
413
- */
414
- refreshValidity() {
415
- const messages = this.deps.getMessages();
416
- const prompt = this.readSystemPrompt();
417
- const version = this.deps.getRequestVersion?.() ?? 0;
418
- if (this.sampledPrompt !== undefined &&
419
- (prompt !== this.sampledPrompt || version !== this.sampledVersion)) {
420
- this.onHistoryReplaced();
421
- }
422
- if (this.discardStalePrefix())
423
- this.dirty = true;
424
- const window = this.resolveWindow();
425
- const last = this.last;
426
- if (messages.length !== this.publishedLength ||
427
- messages[messages.length - 1] !== this.publishedLast ||
428
- prompt !== this.publishedPrompt || version !== this.publishedVersion ||
429
- window.contextWindow !== last?.contextWindow ||
430
- window.windowKnown !== last?.windowKnown ||
431
- window.windowOverridden !== last?.windowOverridden ||
432
- // ORIGIN IS PART OF THE DIRTY CHECK: a save that keeps the same number
433
- // but moves it from the legacy key to the bound profile would otherwise
434
- // leave `/context` naming the old source until the next measurement.
435
- window.windowOverrideOrigin !== last?.windowOverrideOrigin ||
436
- this.deps.getModelInfo().contextWindowSource !== last?.windowSource)
437
- this.dirty = true;
438
- }
439
- measureAndPublish(lastUsage) {
440
- const pressure = this.compute(lastUsage);
441
- const messages = this.deps.getMessages();
442
- this.publishedLength = messages.length;
443
- this.publishedLast = messages[messages.length - 1];
444
- this.publishedPrompt = this.readSystemPrompt();
445
- this.publishedVersion = this.deps.getRequestVersion?.() ?? 0;
446
- this.last = pressure;
447
- this.dirty = false;
448
- this.publish(pressure);
449
- return pressure;
450
- }
451
- compute(lastUsage) {
452
- const window = this.resolveWindow();
453
- return computePressure({
454
- ...(lastUsage ? { lastUsage } : {}),
455
- messages: this.deps.getMessages(),
456
- systemPrompt: this.readSystemPrompt(),
457
- contextWindow: window.contextWindow,
458
- windowSource: this.deps.getModelInfo().contextWindowSource,
459
- windowKnown: window.windowKnown,
460
- windowOverridden: window.windowOverridden,
461
- ...(window.windowOverrideOrigin !== undefined
462
- ? { windowOverrideOrigin: window.windowOverrideOrigin }
463
- : {}),
464
- ...(this.estimateOffset !== undefined ? { estimateOffset: this.estimateOffset } : {}),
465
- ...(this.measuredPrefixLength !== undefined
466
- ? { measuredPrefixLength: this.measuredPrefixLength }
467
- : {}),
468
- });
469
- }
470
- /**
471
- * Where the denominator comes from, and whether it can be trusted.
472
- *
473
- * AN OVERRIDE MAKES THE WINDOW KNOWN (I-6): the user asserted it, so the `~`
474
- * that means "this denominator is a guess" has no business staying on the
475
- * percentage. `windowOverridden` travels separately so `/context` can still
476
- * name the source - a hand-typed window that is wrong is exactly the case that
477
- * most needs to be visible.
478
- */
479
- resolveWindow() {
480
- const override = this.deps.getWindowOverride();
481
- if (override !== null && Number.isFinite(override) && override > 0) {
482
- // ORIGIN ONLY RIDES THE OVERRIDE BRANCH: the AUTO branch names its own
483
- // source through `getModelInfo().contextWindowSource`, and the two must
484
- // never both claim the denominator (profile-context-window §6.1).
485
- const origin = this.deps.getWindowOverrideOrigin?.();
486
- return { contextWindow: override, windowKnown: true, windowOverridden: true,
487
- ...(origin !== undefined ? { windowOverrideOrigin: origin } : {}) };
488
- }
489
- return {
490
- contextWindow: this.deps.getModelInfo().contextWindow,
491
- windowKnown: this.deps.isWindowKnown(),
492
- windowOverridden: false,
493
- };
494
- }
495
- readSystemPrompt() {
496
- return this.deps.getSystemPrompt();
497
- }
498
- publish(pressure) {
499
- if (this.listeners.size === 0)
500
- return;
501
- const usage = toContextUsage(pressure);
502
- for (const listener of [...this.listeners]) {
503
- try {
504
- listener(usage);
505
- }
506
- catch {
507
- // One bad subscriber must not take the run down with it - the rule
508
- // `CompactionWiring.emit` and `TeamRuntime.emit` both already state.
509
- }
510
- }
511
- }
512
- }
@@ -1,163 +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 { type Message, type TokenUsage } from '@aragon-agent/core';
11
- import type { Pressure } from './types.js';
12
- /**
13
- * How much of the window the conversation occupies, from ONE reported usage.
14
- *
15
- * THE CACHE TERMS ARE NOT DECORATION. Anthropic's `message_start` reports
16
- * `input_tokens` EXCLUDING cached tokens and puts them in
17
- * `cache_read_input_tokens` / `cache_creation_input_tokens`. This CLI never sends
18
- * `cache_control`, so on a direct connection they are absent and the sum is
19
- * unchanged - but any gateway or proxy that caches on the user's behalf makes
20
- * them non-zero, and the status bar's old formula
21
- * (`usage.inputTokens + usage.outputTokens`) silently UNDER-reports occupancy for
22
- * exactly those users. That is a live, pre-existing defect in the number this
23
- * feature triggers on.
24
- *
25
- * THIS SUM IS ONLY VALID FOR *ADDITIVE* CACHE FIELDS, AND THAT IS A PROVIDER-SIDE
26
- * INVARIANT RATHER THAN A PROPERTY OF `TokenUsage` (C-14 / P1-10). It holds today
27
- * because exactly one adapter writes those fields: `openai.ts` sets
28
- * `inputTokens = prompt_tokens` and `google.ts` sets it from `promptTokenCount`,
29
- * and NEITHER ever mentions `cacheReadTokens` / `cacheWriteTokens`. OpenAI's
30
- * `prompt_tokens` ALREADY INCLUDES cached tokens, so mapping
31
- * `prompt_tokens_details.cached_tokens` onto the existing field - a change that
32
- * reads as a pure improvement and would sail through review - turns this into a
33
- * double-count and fires compaction early on every OpenAI session, with the gauge
34
- * agreeing with it and nothing reporting a fault. A provider that reports an
35
- * INCLUSIVE total must add a DIFFERENTLY NAMED field. `compaction-pressure.test.ts`
36
- * scans the adapters so the trap fails loudly at the moment someone opens it.
37
- *
38
- * THE GAUGE AND THE TRIGGER MUST READ THIS SAME FUNCTION (R-11 / AC-3). If they
39
- * diverge, a user watching 78 % on the status bar sees compaction fire, concludes
40
- * the feature is broken, and turns it off.
41
- */
42
- export declare function occupiedTokens(usage: TokenUsage): number;
43
- /**
44
- * Whether a usage measured ANYTHING on the input side
45
- * (context-usage-zero-input-tokens B).
46
- *
47
- * THE EMPTY MEASUREMENT THIS EXISTS FOR. A turn that billed output tokens
48
- * while reporting inputTokens 0 AND no cache terms did not measure the
49
- * request - no real request is free of input. Anthropic-COMPATIBLE relays
50
- * emit exactly this shape (bigmodel on every turn, Kimi intermittently),
51
- * and the meter used to arm its measured branch with it: occupancy collapsed
52
- * to the turn's own outputTokens, the `~` honesty marker vanished with
53
- * `source: 'usage'`, and the trigger - which reads the same number - never
54
- * fired. The defense is to not trust such a usage as a measurement.
55
- *
56
- * THE CACHE TERMS ARE PART OF THE INPUT SIDE, DELIBERATELY. Anthropic's real
57
- * `input_tokens` EXCLUDES cached tokens, so a deeply cached turn reports a
58
- * tiny `input_tokens` next to a huge `cache_read_input_tokens`. That IS a
59
- * valid measurement (C-14), and judging on `inputTokens === 0` alone would
60
- * reject it and strand a correct gauge on the estimator.
61
- *
62
- * `outputTokens > 0` separates "the stream ran, billed output, and disclosed
63
- * no input" from a degenerate all-zero usage, which the reviewed predicate
64
- * deliberately does not speak for.
65
- *
66
- * SINGLE AUTHORITY. The meter consumes this, and any future observability
67
- * hint (fix C) must too: two inline copies of "did the gateway disclose
68
- * input" would drift apart exactly the way the gauge and the trigger once
69
- * could (R-11).
70
- */
71
- export declare function isInputSideUnmeasured(usage: TokenUsage): boolean;
72
- /**
73
- * The calibration offset for this turn (D-23 / P1-11).
74
- *
75
- * Clamped at 0: a NEGATIVE offset would mean the estimator over-counted, which
76
- * is possible for a tool-free session on a verbose model, and applying it would
77
- * make the fallback read LOWER than the raw estimate - moving the one number
78
- * that is already biased low further in the wrong direction.
79
- */
80
- export declare function computeEstimateOffset(usage: TokenUsage, messages: readonly Message[], systemPrompt: string): number;
81
- export interface PressureInput {
82
- windowSource?: Pressure['windowSource'];
83
- /** Authoritative usage of the last completed turn, or `undefined` (§3.4.2). */
84
- lastUsage?: TokenUsage;
85
- messages: readonly Message[];
86
- systemPrompt: string;
87
- contextWindow: number;
88
- /** False when the window is `buildRuntimeModel`'s 128k placeholder. */
89
- windowKnown: boolean;
90
- /**
91
- * Whether `contextWindow` came from the user's `contextWindow` override
92
- * (context-usage-gauge-accuracy I-6). Defaults to `false`, so every existing
93
- * construction site is unchanged and the arithmetic below is untouched.
94
- */
95
- windowOverridden?: boolean;
96
- /**
97
- * Which override surface supplied `contextWindow` (profile-context-window).
98
- * PURE PASS-THROUGH like `windowOverridden` - the arithmetic below never
99
- * reads it; it only travels with the number so `/context` can name the
100
- * source honestly.
101
- */
102
- windowOverrideOrigin?: Pressure['windowOverrideOrigin'];
103
- /** Carried from the last `turn_end`; applied to every ESTIMATED figure. */
104
- estimateOffset?: number;
105
- /**
106
- * The history LENGTH the measurement in `lastUsage` covered - i.e.
107
- * `messages.length` at the `turn_end` that produced it, BEFORE the assistant
108
- * message was pushed.
109
- *
110
- * `undefined` DISABLES THE DELTA ENTIRELY and reproduces round 1's behaviour
111
- * exactly, which is what makes a missed invalidation cost accuracy rather than
112
- * correctness.
113
- */
114
- measuredPrefixLength?: number;
115
- }
116
- /**
117
- * Tokens appended to the history since the measurement that produced `lastUsage`
118
- * (context-auto-compaction-hardening §3.2.2 / W1).
119
- *
120
- * `+ 1` SKIPS THE ASSISTANT MESSAGE, and that is not an off-by-one to tidy away:
121
- * `turn_end` is emitted BEFORE the push (`agent-loop.ts:478` / `:497`, and
122
- * `Agent.emit` is synchronous), so the message at index `measuredPrefixLength` is
123
- * the assistant turn whose cost is ALREADY inside `usage.outputTokens`. Counting
124
- * it again double-charges every turn.
125
- *
126
- * NO `estimateOffset` IS APPLIED HERE. That offset is the systematic difference
127
- * between what `estimatePromptTokens` counts and what the provider bills for a
128
- * WHOLE REQUEST - chiefly the tool schemas, which are sent once per request and
129
- * are already inside the measured base. It is a per-request constant, not a
130
- * per-message rate; adding it to a slice would inflate occupancy by several
131
- * thousand tokens on every turn and fire compaction early on short
132
- * conversations.
133
- *
134
- * BOUNDS-CHECKED RATHER THAN TRUSTED. If the recorded prefix no longer indexes
135
- * this array - a `/clear`, a `/resume`, a splice whose invalidation call was
136
- * missed - the delta is 0 and the function degrades to round 1's number.
137
- */
138
- export declare function estimateAppendedTokens(messages: readonly Message[], measuredPrefixLength: number | undefined): number;
139
- /**
140
- * THE ONE RULE FOR "PART OF THIS NUMBER IS A GUESS" (§6.3).
141
- *
142
- * `Pressure.source` deliberately keeps two members: it answers "where did the
143
- * BASE come from", and a third member would force every existing consumer of the
144
- * union to be revisited for a distinction none of them acts on. The `~` question
145
- * is this function, and it has one test.
146
- */
147
- export declare function isApproximate(p: Pressure): boolean;
148
- /**
149
- * Occupancy right now, measured when there is a measurement and calibrated when
150
- * there is not.
151
- *
152
- * `source` is CARRIED, never re-derived, and it reaches the UI: the status bar
153
- * already renders a leading `~` when the window is unknown, and this widens that
154
- * to "the NUMBER is approximate too". Honesty about a guess is cheaper than a
155
- * support thread about a wrong percentage.
156
- */
157
- export declare function computePressure(input: PressureInput): Pressure;
158
- /** Only actual occupancy authorizes automatic compaction. */
159
- export declare function shouldCompactAt(p: Pressure, threshold: number): boolean;
160
- /** Capacity helper retained for the standalone tail-budget API, never a trigger. */
161
- export declare function requiredHeadroom(req: {
162
- maxOutputTokens: number;
163
- }): number;