@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,837 +0,0 @@
1
- /**
2
- * Pure event → view reducer (spec §3.4 / §6.2).
3
- *
4
- * `reduceEvent(event)` maps a raw core `AgentEvent` into zero or more view
5
- * actions; `viewReducer(state, action)` folds an action into the immutable
6
- * `ViewState`. Keeping this pure lets the whole UI be tested without a live LLM.
7
- *
8
- * Two load-bearing behaviors from R2 (silent-failure surfacing) live here:
9
- * - the `error` StreamEvent is rendered as an error notice, and
10
- * - `agent_end` after a turn that produced no `turn_end` and no error notice
11
- * synthesizes a generic error notice (a swallowed throw is never a no-op).
12
- */
13
- import type { PendingSteering } from './queued-messages.js';
14
- import type { InvocationCard } from './invocation-card.js';
15
- import type { AgentEvent, ModelCost, ToolResult, TokenUsage } from '@aragon-agent/core';
16
- import type { AgentMode } from './agent-mode.js';
17
- import type { DispatchOutcome, SubagentRun, SubagentSpec, TeamSnapshot } from '../team/types.js';
18
- import type { FastReview, FastSnapshot } from '../fast/types.js';
19
- import type { CompactionMode, CompactionPhase, CompactionRecord, CompactionSnapshot, CompactionUiTrigger, ContextUsageSnapshot } from '../compaction/types.js';
20
- import type { AcceptanceSnapshot, TodoItem, TodoSnapshot } from '../todo/types.js';
21
- import type { JobKind, ServiceSnapshot, ServiceStatus } from '../proc/types.js';
22
- import type { RetryPhase } from './retry-view.js';
23
- import type { FilePatch } from '../tools/patch.js';
24
- import type { TaskSummaryView } from '../fast/task-summary-types.js';
25
- import type { GovernanceCardData, GovernanceSnapshot } from '../governance/types.js';
26
- import type { Posture } from '../governance/posture.js';
27
- export type NoticeLevel = 'info' | 'warn' | 'error';
28
- export type ToastLevel = NoticeLevel | 'success';
29
- export type Overlay = null | 'settings' | 'model' | 'help' | 'queue' | 'confirm' | 'question' | 'plan' | 'kit' | 'prompts' | 'prompt-pick' | 'agents' | 'governance'
30
- /**
31
- * tui-shortcut-drawer-and-task-summary §4.5: the keyboard drawer (`Ctrl+G` /
32
- * `/keys`). A single field, so the drawer and `/help` cannot both hold the
33
- * keyboard - which is also why `Ctrl+G` TAKES OVER from another overlay instead
34
- * of being swallowed while one is open (P2-3).
35
- */
36
- | 'shortcuts';
37
- export type ToolStatus = 'pending' | 'running' | 'done' | 'error';
38
- /** Ephemeral, auto-dismissed acknowledgement (spec §3.9). */
39
- export interface Toast {
40
- id: string;
41
- level: ToastLevel;
42
- text: string;
43
- ttlMs: number;
44
- }
45
- /** Default auto-dismiss window for a toast. */
46
- export declare const DEFAULT_TOAST_TTL_MS = 2500;
47
- export type Entry = {
48
- id: string;
49
- kind: 'user';
50
- text: string;
51
- invocation?: InvocationCard;
52
- }
53
- /**
54
- * A message submitted while a run was in flight (tui-shift-enter-copy-queue
55
- * 5.2). It renders as `Queue: <first line>` and is rewritten IN PLACE, same
56
- * id, into the `user` entry above by the matching receipt that proves Core
57
- * accepted it -- so the id-based height cache re-measures rather than
58
- * freezes, and the settled boundary (positional, monotonic) never moves.
59
- *
60
- * NOT A LIVE TARGET: no id pointer in `ViewState` names it, so the trim
61
- * ring and the `appendEntry` assertions need no new member.
62
- */
63
- | {
64
- id: string;
65
- kind: 'queued';
66
- text: string;
67
- queueId?: string;
68
- invocation?: InvocationCard;
69
- } | {
70
- id: string;
71
- kind: 'assistant';
72
- text: string;
73
- thinking?: string;
74
- thinkingOpen: boolean;
75
- streaming: boolean;
76
- aborted?: boolean;
77
- usage?: TokenUsage;
78
- /**
79
- * Epoch ms the turn started reasoning (agent-activity-presentation §3.1.2).
80
- * Set by `thinkingStart`, cleared by `streamRestart`.
81
- */
82
- thinkingStartedAt?: number;
83
- /**
84
- * Wall-clock reasoning time, SEALED ONCE — at the first text delta, or at
85
- * turn/run end for a turn that thought and then called a tool without
86
- * emitting any text.
87
- *
88
- * With thinking hidden this is the only thing the collapsed marker can say
89
- * that the user could not otherwise know, which is the whole argument for
90
- * having a marker at all (§1.2).
91
- */
92
- thinkingMs?: number;
93
- } | {
94
- id: string;
95
- kind: 'tool';
96
- toolCallId: string;
97
- name: string;
98
- label: string;
99
- argsRaw: string;
100
- args?: Record<string, unknown>;
101
- status: ToolStatus;
102
- preview?: string;
103
- durationMs?: number;
104
- isError?: boolean;
105
- /**
106
- * The structured file diff (agent-activity-presentation §3.3), or absent.
107
- *
108
- * IMMUTABLE AND WRITTEN ONCE, by `toolExecEnd`. `ToolCard` is `React.memo`'d
109
- * with the DEFAULT comparator, so this object is only free while its
110
- * reference is stable — which it is, because the reducer never rebuilds it
111
- * and `mapEntry` preserves identity for untouched entries. A future action
112
- * that recomputed or normalized a patch would turn that memo boundary into
113
- * a no-op WITH NOTHING FAILING (P2-9).
114
- *
115
- * Needs no clause in `normalizeLoadedEntries` (D-9): the four that exist
116
- * are all about a LIVE flag that would never settle, and a patch is settled
117
- * by construction.
118
- */
119
- patch?: FilePatch;
120
- /**
121
- * The sanitised live tail while the tool runs
122
- * (agent-activity-presentation-live §3.3.1). Cleared at settle (D-23), and
123
- * cleared again by EVERY path that reaches `status: 'idle'` (D-35).
124
- *
125
- * REDUCER STATE RATHER THAN A STORE READ DURING RENDER, and that is the
126
- * load-bearing decision of the round (D-22): `entryRevision` is what tells
127
- * the height cache an entry's rendered output changed, and an entry mutated
128
- * outside `ViewState` keeps its revision and freezes at a stale height AND
129
- * a stale subtree with nothing anywhere reporting it (I-L3-1).
130
- */
131
- live?: readonly string[];
132
- /**
133
- * Monotonic counter -- the revision term for a NON-APPEND mutation (D-22).
134
- *
135
- * A COUNTER AND NOT `live.length`: a fixed-size tail evicting its oldest
136
- * row while appending a new one of the same width leaves the joined length
137
- * unchanged, which is exactly the lossy case `virtual-window.ts` says the
138
- * reducer cannot produce today and that this round introduces.
139
- */
140
- liveSeq?: number;
141
- /** Epoch ms of the last output row, for the stall row (§3.3.4). */
142
- lastOutputAt?: number;
143
- } | {
144
- id: string;
145
- kind: 'notice';
146
- level: NoticeLevel;
147
- text: string;
148
- } | {
149
- id: string;
150
- kind: 'governance';
151
- at: number;
152
- card: GovernanceCardData;
153
- } | {
154
- id: string;
155
- kind: 'team';
156
- dispatchId: string;
157
- requested: number;
158
- runs: SubagentRun[];
159
- aborted: boolean;
160
- durationMs?: number;
161
- active: boolean;
162
- } | {
163
- id: string;
164
- kind: 'todo';
165
- items: TodoItem[];
166
- doneCount: number;
167
- total: number;
168
- /**
169
- * The acceptance projection, copied from `TodoSnapshot.acceptance` on every
170
- * `todoUpdate` (todo-acceptance-criteria §6.10).
171
- *
172
- * OPTIONAL, NOT `AcceptanceSnapshot | null` REQUIRED, and that asymmetry with
173
- * the snapshot is deliberate (P1-4): `TodoSnapshot` has exactly one writer, so
174
- * it can fail closed; an `Entry` does not - its sources include `entries` read
175
- * back from a session file written before this feature existed, where the key
176
- * is simply absent.
177
- */
178
- acceptance?: AcceptanceSnapshot | null;
179
- /** The turn that owns this card is still running, so it may be rewritten. */
180
- live: boolean;
181
- /**
182
- * Set by `normalizeLoadedEntries` on a card saved while its run was live
183
- * (P2-6). The todo analogue of the team entry's `aborted`, and true for the
184
- * same reason: the run behind it died with the process. Absent on every
185
- * card this session produced.
186
- */
187
- interrupted?: boolean;
188
- } | {
189
- id: string;
190
- kind: 'retry';
191
- /** 1-based retry index of the LATEST attempt this card has seen. */
192
- attempt: number;
193
- maxRetries: number;
194
- errorType: string;
195
- message: string;
196
- delayMs: number;
197
- /** Epoch ms the next attempt fires; the UI ticks against this. */
198
- resumeAt?: number;
199
- phase: RetryPhase;
200
- startedAt: number;
201
- /** Filled on settle. */
202
- totalRetries?: number;
203
- elapsedMs?: number;
204
- } | {
205
- id: string;
206
- kind: 'fast';
207
- /** 1-based within the session, so the card can name itself. */
208
- reviewIndex: number;
209
- model: string;
210
- status: 'running' | 'ok' | 'advice' | 'empty' | 'failed' | 'dropped';
211
- /** Present only for `advice`. */
212
- text?: string;
213
- /** Failure / drop reason, shown as one muted line. */
214
- detail?: string;
215
- turn: number;
216
- durationMs?: number;
217
- live: boolean;
218
- } | {
219
- id: string;
220
- kind: 'compaction';
221
- decision?: CompactionRecord['decision'];
222
- memoryVersion?: CompactionRecord['memoryVersion'];
223
- /** 1-based within the session, so the card can name itself. */
224
- index: number;
225
- trigger: CompactionUiTrigger;
226
- mode: CompactionMode;
227
- applied: boolean;
228
- reason?: string;
229
- messagesBefore: number;
230
- messagesAfter: number;
231
- tokensBefore: number;
232
- tokensAfter: number;
233
- summary?: string;
234
- model: string;
235
- durationMs?: number;
236
- /**
237
- * When the live card opened, so the elapsed counter has an origin
238
- * (context-auto-compaction-hardening §3.6 / W5).
239
- *
240
- * JSON-SERIALIZABLE like every other field here, and harmless on reload:
241
- * `session/persist.ts` normalizes `live` to false, and a settled card
242
- * renders `durationMs` rather than an elapsed figure.
243
- */
244
- startedAt?: number;
245
- /** Set when tail relief clipped the retained turns (W2). */
246
- tailRelief?: {
247
- messages: number;
248
- charsRemoved: number;
249
- };
250
- /**
251
- * The stage the LIVE card is in (context-compaction-never-fires C).
252
- *
253
- * Absent on a settled card and on every card written before this field
254
- * existed, which is why the renderer treats it as optional and falls back to
255
- * the old `summarizing with <model>` line.
256
- */
257
- phase?: CompactionPhase;
258
- /** Set when the cut relaxed `keepRecentTurns` to exist at all (B). */
259
- keepRelaxed?: boolean;
260
- retainedTurns?: number;
261
- /** Messages the relaxed cut left verbatim - the number the card states. */
262
- retainedMessages?: number;
263
- keepRecentTurnsUsed?: number;
264
- /** Messages the digest left out, so they cannot be quoted (A1). */
265
- elidedMessages?: number;
266
- live: boolean;
267
- } | {
268
- id: string;
269
- kind: 'service';
270
- /** `s1`, `s2`, ... — the id the model quotes back. */
271
- serviceId: string;
272
- command: string;
273
- status: ServiceStatus;
274
- url?: string;
275
- port?: number;
276
- exitCode: number | null;
277
- startedAt: number;
278
- readyAt?: number;
279
- endedAt?: number;
280
- rows: readonly string[];
281
- /**
282
- * MONOTONIC row cursor — the revision term, NEVER `rows.length` (P0-3).
283
- *
284
- * The tail is a FIXED-SIZE RING: it evicts its oldest row while appending
285
- * a new one, so the joined length is unchanged while the content is not.
286
- * That is verbatim the non-append mutation the `tool` branch's `liveSeq`
287
- * comment was written for, and a length term would go on matching while
288
- * the card changed underneath it.
289
- */
290
- rowsSeen: number;
291
- /** The one-row entry a terminal transition appends (D-11). */
292
- terminal?: boolean;
293
- /** The stop reported the pid still alive afterwards (R-2 / P2-6). */
294
- killIncomplete?: boolean;
295
- /**
296
- * WHICH KIND OF JOB THIS CARD DRAWS (long-task-jobs §4.9 / I-2).
297
- *
298
- * It changes the NOUN and the status wording only. Renaming the entry kind
299
- * from `service` to `job` would be a pure regression: ordinary assertions pin
300
- * `[background] service s1 started` word for word, `bg-command.test.ts` pins
301
- * `/bg stop`'s `Stopped N services` toast, and there are no snapshot files in
302
- * this package to absorb the churn. The few strings that DID move to "job"
303
- * are the model-facing unknown-id messages in `proc-tools.ts`, which name an
304
- * id space that now holds both kinds.
305
- */
306
- jobKind: JobKind;
307
- /** Latest extracted progress line; one extra row when present. */
308
- progress?: string;
309
- /** When output last arrived, so `stalled` can be evaluated at render time. */
310
- lastOutputAt: number;
311
- /** Derived at snapshot time by the supervisor, carried here so it survives a save. */
312
- stalled?: boolean;
313
- /** Where the on-disk mirror wrote this job's full log. */
314
- logPath?: string;
315
- };
316
- export interface UsageTotal {
317
- inputTokens: number;
318
- outputTokens: number;
319
- /**
320
- * Cache read hits (context-usage-gauge-accuracy §3.6 / P1-3).
321
- *
322
- * `occupiedTokens` counts them and `computeCost` PRICES them, so a session
323
- * total that omits them makes the status bar's `^` read lower than the `$`
324
- * next to it - on the same row, from the same turns. That was three units on
325
- * one line, and this field plus its sibling are what collapse them to one.
326
- */
327
- cacheReadTokens: number;
328
- cacheWriteTokens: number;
329
- costUsd: number;
330
- }
331
- /**
332
- * The ephemeral retry projection held in `ViewState.retry` (§9).
333
- *
334
- * Only the two IN-FLIGHT phases exist here: once a card settles the projection is
335
- * `null`, because the settled card IS the history and a chip that reported a
336
- * finished retry would never go away.
337
- */
338
- export interface RetrySnapshot {
339
- attempt: number;
340
- maxRetries: number;
341
- resumeAt?: number;
342
- phase: 'waiting' | 'retrying';
343
- errorType: string;
344
- }
345
- export interface ViewState {
346
- entries: Entry[];
347
- pendingSteering: PendingSteering[];
348
- seenSteeringIds: ReadonlySet<string>;
349
- runPhase: 'idle' | 'starting' | 'waiting' | 'thinking' | 'generating' | 'preparing-tool' | 'tool';
350
- activeTool?: {
351
- toolCallId: string;
352
- name: string;
353
- };
354
- runOutcome: 'none' | 'ended' | 'interrupted' | 'failed';
355
- status: 'idle' | 'running';
356
- usageTotal: UsageTotal;
357
- /**
358
- * Context occupancy, as published by `AgentController`'s `ContextMeter`.
359
- *
360
- * ITS ONLY WRITER IS `case 'contextUsage'` (I-1), and that is the structural
361
- * half of the P0-1 fix. It replaced `contextTokens` + `contextTokensEstimated`,
362
- * which between them had THREE writing branches (`turnEnd`,
363
- * `contextTokensEstimated`, `resetConversation`) fed by two competing
364
- * upstreams. Two writers in one synchronous fan-out means the later one wins,
365
- * and the later one was the stale `snapshot` carrying the PRE-compaction
366
- * figure - so the bar fell and bounced straight back, every time, with nothing
367
- * logging a fault. `context-one-writer.test.ts` scans this file to keep it
368
- * that way.
369
- */
370
- context: ContextUsageSnapshot;
371
- overlay: Overlay;
372
- thinkingVisible: boolean;
373
- /** Ephemeral acks; auto-dismissed by App (spec §3.9). */
374
- toasts: Toast[];
375
- /** Which tool cards are expanded to their full stored preview (spec §3.7). */
376
- expandedToolIds: Record<string, true>;
377
- /**
378
- * MIRROR of the controller's effective mode, for rendering only (plan-mode
379
- * §3.1). Written exclusively from what `controller.setAgentMode()` reports it
380
- * adopted — never from what the UI asked for.
381
- */
382
- agentMode: AgentMode;
383
- /** Set only by a DEFERRED `plan -> build`; drives the `PLAN -> BUILD` readout. */
384
- pendingAgentMode: AgentMode | null;
385
- /**
386
- * The user-visible posture and its deferred twin (governance-mode 4.3). Written in the
387
- * SAME dispatch as `agentMode` / `pendingAgentMode` and only from what the controller
388
- * adopted, so the badge and the gate cannot diverge. `agentMode` keeps gating.
389
- */
390
- posture: Posture;
391
- pendingPosture: Posture | null;
392
- /**
393
- * The live governed-run snapshot, or `null` when there is no run.
394
- *
395
- * NEVER PERSISTED, like `team`: `/save` writes `entries` (the settlement cards are the
396
- * history) and a resumed session has no live run to show.
397
- */
398
- governance: GovernanceSnapshot | null;
399
- /**
400
- * The live team roster, or `null` when no dispatch is running.
401
- *
402
- * NEVER PERSISTED. `/save` writes `entries`, and the settled `team` entry is
403
- * the history; this field is the ephemeral panel, and a resumed session has no
404
- * live dispatch to show (§6.4).
405
- */
406
- team: TeamSnapshot | null;
407
- /**
408
- * The live todo list, or `null` when there is none.
409
- *
410
- * NEVER PERSISTED HERE — `entries` is the history and `SavedSession.todos` is
411
- * the list (§3.13). `null` is what leaves the rail unmounted entirely, which
412
- * is why a session that never plans has byte-identical layout to a pre-feature
413
- * build (AC-24).
414
- */
415
- todos: TodoSnapshot | null;
416
- /**
417
- * The live retry projection, or `null` when nothing is retrying.
418
- *
419
- * NEVER PERSISTED — `entries` is the history and the settled card is the
420
- * record. It drives the status-bar chip and the 1 Hz tick, and it is nulled on
421
- * every settle path. Same contract as `team`.
422
- */
423
- retry: RetrySnapshot | null;
424
- /**
425
- * The live fast-tier projection, or `null` when the tier is off for this
426
- * session (fast-model-tier §5.2).
427
- *
428
- * NEVER PERSISTED — `entries` is the history and the settled cards are the
429
- * record. It drives the status chip and `/fast status`'s totals. `null` is
430
- * what leaves an ordinary session's status bar byte-identical (AC-4).
431
- */
432
- fast: FastSnapshot | null;
433
- /**
434
- * The live compaction projection, or `null` when the feature is off for this
435
- * session (context-auto-compaction §5.5).
436
- *
437
- * NEVER PERSISTED — `entries` is the history and the settled cards are the
438
- * record. It drives the status chip, the gauge's marks and `/compact status`'s
439
- * totals. `null` is what leaves an ordinary session's status bar unchanged.
440
- */
441
- compaction: CompactionSnapshot | null;
442
- /**
443
- * The session's task label, or `null` while there is none
444
- * (tui-shortcut-drawer-and-task-summary D-13).
445
- *
446
- * PURE VIEW STATE: never persisted, never in the conversation history, never in
447
- * `config.json`. It lives here because the header and the drawer must read the
448
- * SAME field - two copies would be two labels for one task.
449
- *
450
- * THE TWO WRITERS ARE `taskSummaryPending` / `taskSummaryReady`, and the two
451
- * CLEARERS are `resetConversation` and `restoreEntries`: clearing is the
452
- * reducer's job (it is the only place that knows a task ended), while
453
- * REBUILDING after `/resume` is the App wrapper's job, because only it can see
454
- * the restored entries before they are reduced.
455
- */
456
- taskSummary: TaskSummaryView | null;
457
- /** A summary call is in flight. Drives the drawer's `summarizing` line and `/task`. */
458
- taskSummaryPending: boolean;
459
- seq: number;
460
- /** The `kind: 'team'` entry the live dispatch is writing into. */
461
- teamEntryId?: string;
462
- /** The `kind: 'todo'` entry this turn is writing into. */
463
- todoEntryId?: string;
464
- /** The `kind: 'retry'` entry this turn is writing into. */
465
- retryEntryId?: string;
466
- /** The `kind: 'fast'` entry the in-flight review is writing into. */
467
- fastEntryId?: string;
468
- /** The `kind: 'compaction'` entry the in-flight compaction is writing into. */
469
- compactionEntryId?: string;
470
- streamingId?: string;
471
- turnProduced: boolean;
472
- errorNoticed: boolean;
473
- /** The current run was aborted by the user (suppresses the failure guard). */
474
- aborted: boolean;
475
- /**
476
- * Entries removed by `transcriptRetain` (tui-render-performance L1).
477
- *
478
- * Rendered by `transcript-text` and reported by `/perf`; NEVER PERSISTED —
479
- * `SavedSession` keeps `{ model, messages, entries, todos }` exactly as it is,
480
- * so `/save` and `/resume` need no format change and old files load unchanged.
481
- */
482
- droppedEntries: number;
483
- }
484
- /**
485
- * The zero session total.
486
- *
487
- * ONE LITERAL FOR TWO SITES (`initialViewState` and `resetConversation`). They
488
- * used to spell the object out twice, which is how `cacheReadTokens` would have
489
- * been added to one of them and not the other.
490
- */
491
- export declare const EMPTY_USAGE_TOTAL: UsageTotal;
492
- export interface ViewStateSeed {
493
- /** Start with thinking blocks expanded. Defaults to FALSE, the product default. */
494
- thinkingVisible?: boolean;
495
- }
496
- /**
497
- * The initial view state, optionally seeded from config.
498
- *
499
- * THE DEFAULT IS `false`, NOT `true`, AND THAT IS THE WHOLE SAFETY ARGUMENT
500
- * (D-2). There is exactly one production call site — `App`'s `useReducer`, which
501
- * passes `cfg.showThinking`. Every other caller is a test. A future call site
502
- * that forgets the seed fails CLOSED, toward the product default, rather than
503
- * silently restoring the reasoning firehose for one code path with nothing
504
- * reporting it.
505
- *
506
- * The seed is a PARAMETER rather than a post-mount dispatch so that `/resume`
507
- * cannot flash a restored thinking block on frame 1.
508
- */
509
- export declare function initialViewState(seed?: ViewStateSeed): ViewState;
510
- export type ViewAction = {
511
- type: 'submit';
512
- text: string;
513
- invocation?: InvocationCard;
514
- }
515
- /**
516
- * `controller.steer` was accepted; append the persistent queue marker
517
- * (5.2.2). Dispatched from exactly one place -- `App.submitMessage`'s
518
- * running branch -- beside the `controller.steer` call it mirrors.
519
- */
520
- | {
521
- type: 'steerQueued';
522
- queueId: string;
523
- text: string;
524
- invocation?: InvocationCard;
525
- } | {
526
- type: 'steeringAccepted';
527
- ids: readonly string[];
528
- } | {
529
- type: 'runStart';
530
- } | {
531
- type: 'runStarting';
532
- } | {
533
- type: 'runError';
534
- } | {
535
- type: 'turnStart';
536
- } | {
537
- type: 'thinkingStart';
538
- } | {
539
- type: 'thinkingDelta';
540
- delta: string;
541
- } | {
542
- type: 'textDelta';
543
- delta: string;
544
- } | {
545
- type: 'toolCallStart';
546
- toolCallId: string;
547
- toolName: string;
548
- label?: string;
549
- } | {
550
- type: 'toolCallDelta';
551
- toolCallId: string;
552
- argsDelta: string;
553
- } | {
554
- type: 'toolCallEnd';
555
- toolCallId: string;
556
- args: Record<string, unknown>;
557
- } | {
558
- type: 'toolExecStart';
559
- toolCallId: string;
560
- toolName?: string;
561
- } | {
562
- type: 'toolExecEnd';
563
- toolCallId: string;
564
- isError: boolean;
565
- duration: number;
566
- preview: string;
567
- /** A fully-built, immutable diff, so the reducer stays pure (§3.3.7). */
568
- patch?: FilePatch;
569
- }
570
- /**
571
- * A running tool's live tail (agent-activity-presentation-live §3.3.1).
572
- *
573
- * `rows` IS THE WHOLE TAIL, not an increment: the store replaces it on every
574
- * chunk, which is what lets `mergeDeltas` keep only the last action per
575
- * `toolCallId` (D-30). `at` is read in `App`'s listener rather than here, so
576
- * this reducer stays pure.
577
- */
578
- | {
579
- type: 'toolOutputDelta';
580
- toolCallId: string;
581
- rows: readonly string[];
582
- at: number;
583
- } | {
584
- type: 'turnEnd';
585
- usage: TokenUsage;
586
- costDelta: number;
587
- } | {
588
- type: 'runEnd';
589
- } | {
590
- type: 'notice';
591
- level: NoticeLevel;
592
- text: string;
593
- } | {
594
- type: 'abortMark';
595
- } | {
596
- type: 'clearTranscript';
597
- } | {
598
- type: 'resetConversation';
599
- }
600
- /**
601
- * Zero the session's spend WITHOUT touching the conversation
602
- * (tui-session-id-resume D-10 / R-9 / T-45).
603
- *
604
- * A separate action rather than `resetConversation`, because the two mean
605
- * different things: `/clear` ends the conversation and the spend together,
606
- * while an in-TUI `/resume` adopts another conversation and starts a NEW id -
607
- * so the counter must restart, but the entries that were just restored must
608
- * not be thrown away with it. `context` is left untouched for the reason
609
- * `resetConversation` records: the meter, not the reducer, owns occupancy.
610
- */
611
- | {
612
- type: 'resetUsage';
613
- } | {
614
- type: 'setOverlay';
615
- overlay: Overlay;
616
- } | {
617
- type: 'toggleThinking';
618
- } | {
619
- type: 'pushToast';
620
- level: ToastLevel;
621
- text: string;
622
- ttlMs?: number;
623
- } | {
624
- type: 'dismissToast';
625
- id: string;
626
- } | {
627
- type: 'toggleExpand';
628
- id: string;
629
- } | {
630
- type: 'restoreEntries';
631
- entries: Entry[];
632
- }
633
- /**
634
- * The task label lifecycle (tui-shortcut-drawer-and-task-summary §7.1).
635
- *
636
- * TWO ACTIONS, because "a call started" and "a call finished" are different
637
- * facts and the drawer reports them differently (`summarizing` vs the label).
638
- * `taskSummaryReady` carries `null` in exactly one case: the call failed AND
639
- * `taskSummary.fallback` is off, which is a deliberate "show nothing" rather
640
- * than an empty string that would read as a broken feature.
641
- */
642
- | {
643
- type: 'taskSummaryPending';
644
- } | {
645
- type: 'taskSummaryReady';
646
- view: TaskSummaryView | null;
647
- } | {
648
- type: 'setAgentMode';
649
- mode: AgentMode;
650
- pending: AgentMode | null;
651
- posture?: Posture;
652
- pendingPosture?: Posture | null;
653
- } | {
654
- type: 'govSnapshot';
655
- snapshot: GovernanceSnapshot;
656
- } | {
657
- type: 'govEnd';
658
- } | {
659
- type: 'governanceCard';
660
- card: GovernanceCardData;
661
- at?: number;
662
- } | {
663
- type: 'teamStart';
664
- dispatchId: string;
665
- requested: number;
666
- specs: SubagentSpec[];
667
- } | {
668
- type: 'teamUpdate';
669
- snapshot: TeamSnapshot;
670
- } | {
671
- type: 'teamUsage';
672
- usage: TokenUsage;
673
- costDelta: number;
674
- } | {
675
- type: 'teamEnd';
676
- outcome: DispatchOutcome;
677
- } | {
678
- type: 'todoUpdate';
679
- snapshot: TodoSnapshot;
680
- } | {
681
- type: 'todoCleared';
682
- } | {
683
- type: 'retryScheduled';
684
- attempt: number;
685
- maxRetries: number;
686
- delayMs: number;
687
- resumeAt: number;
688
- errorType: string;
689
- message: string;
690
- } | {
691
- type: 'retryAttempt';
692
- attempt: number;
693
- maxRetries: number;
694
- } | {
695
- type: 'streamRestart';
696
- discardedToolCallIds: string[];
697
- }
698
- /**
699
- * The 1 Hz countdown tick. NO STATE OF ITS OWN — it bumps `seq` so the frame
700
- * re-renders and the card recomputes `resumeAt - Date.now()`. `App` runs the
701
- * interval ONLY while `state.retry?.phase === 'waiting'`, so an idle session has
702
- * no timer at all.
703
- */
704
- | {
705
- type: 'retryTick';
706
- } | {
707
- type: 'fastStart';
708
- index: number;
709
- turn: number;
710
- model: string;
711
- } | {
712
- type: 'fastEnd';
713
- review: FastReview;
714
- }
715
- /**
716
- * Review spend.
717
- *
718
- * `costDelta` IS PRECOMPUTED BY THE CALLER, exactly as `teamUsage`'s is: the
719
- * reducer stays pure and cost-table-free, which is the property that makes it
720
- * testable — and the fast tier has a DIFFERENT cost table from the lead, so a
721
- * reducer that computed its own would have to know about both (§3.6 / R-7).
722
- */
723
- | {
724
- type: 'fastUsage';
725
- usage: TokenUsage;
726
- costDelta: number;
727
- } | {
728
- type: 'fastTier';
729
- snapshot: FastSnapshot;
730
- } | {
731
- type: 'compactionStart';
732
- index: number;
733
- trigger: CompactionUiTrigger;
734
- model: string;
735
- } | {
736
- type: 'compactionEnd';
737
- record: CompactionRecord;
738
- }
739
- /**
740
- * The live card's stage (context-compaction-never-fires C).
741
- *
742
- * Its own action rather than a field on `compactionStart` because the phases
743
- * arrive AFTER it, one per step, and because a phase must be able to land on a
744
- * card that a previous attempt already settled into the same entry id.
745
- */
746
- | {
747
- type: 'compactionPhase';
748
- index: number;
749
- phase: CompactionPhase;
750
- }
751
- /**
752
- * Compaction spend.
753
- *
754
- * `costDelta` IS PRECOMPUTED BY THE CALLER, exactly as `teamUsage`'s and
755
- * `fastUsage`'s are: the reducer stays pure and cost-table-free. It matters
756
- * MORE here than for either of those, because the summarizer may be a
757
- * different model from the lead AND from the fast tier, so a reducer that
758
- * computed its own would have to know about three price tables.
759
- */
760
- | {
761
- type: 'compactionUsage';
762
- usage: TokenUsage;
763
- costDelta: number;
764
- } | {
765
- type: 'compactionSnapshot';
766
- snapshot: CompactionSnapshot;
767
- }
768
- /**
769
- * The occupancy reading, from `AgentController.subscribeContextUsage`.
770
- *
771
- * THE ONLY ACTION THAT WRITES `state.context`, AND IT IS DISPATCHED FROM
772
- * EXACTLY ONE PLACE (I-1 / T11). It replaced `contextTokensEstimated`, which
773
- * `App` fired from two branches of the compaction stream while `turnEnd` wrote
774
- * the same field from the agent stream - three writers, two upstreams, one
775
- * number, and the P0-1 bounce as the result.
776
- */
777
- | {
778
- type: 'contextUsage';
779
- snapshot: ContextUsageSnapshot;
780
- } | {
781
- type: 'serviceStart';
782
- service: ServiceSnapshot;
783
- } | {
784
- type: 'serviceUpdate';
785
- service: ServiceSnapshot;
786
- } | {
787
- type: 'serviceEnd';
788
- service: ServiceSnapshot;
789
- };
790
- export declare const STORED_PREVIEW_CHARS = 8000;
791
- export declare const STORED_PREVIEW_LINES = 200;
792
- /**
793
- * Marker appended to a truncated tool preview. ASCII on purpose: this string is
794
- * produced outside `src/ui/**`, where no terminal capabilities are available, so
795
- * it must be safe on a legacy `cmd.exe` (spec §4.1 tier A). `ToolPreview` dims
796
- * this line and imports the constant rather than re-spelling it — the two used
797
- * to be a matched pair of `…` literals, and splitting the spelling would break
798
- * the dimming silently.
799
- */
800
- export declare const PREVIEW_TRUNCATION_MARK = "...";
801
- /**
802
- * Flatten a ToolResult into a stored preview string. Truncation appends
803
- * `PREVIEW_TRUNCATION_MARK` (line- or char-based) so a card footer never
804
- * over-promises how much more is expandable.
805
- */
806
- export declare function buildToolPreview(result: ToolResult): string;
807
- /**
808
- * Where a `FilePatch` is collected from on `tool_execution_end`.
809
- *
810
- * Supplying one makes `reduceEvent` CONSUME-ONCE rather than pure, which is safe
811
- * because `App.tsx` calls it exactly once per event and `mergeDeltas` only ever
812
- * merges `textDelta` / `thinkingDelta`, never `toolExecEnd`.
813
- */
814
- export interface PatchSource {
815
- take(toolCallId: string): FilePatch | undefined;
816
- }
817
- /**
818
- * Map one core `AgentEvent` to view actions. `cost` (the active model's cost
819
- * table) lets `turn_end` accumulate USD cost; omit it in tests that only assert
820
- * token totals. `patches` is the CLI-local diff side channel (§3.3.7); omitting
821
- * it — every existing test, and headless mode — produces byte-identical actions.
822
- */
823
- export declare function reduceEvent(event: AgentEvent, cost?: ModelCost, patches?: PatchSource): ViewAction[];
824
- /**
825
- * The opening words of the `context_overflow` banner.
826
- *
827
- * A SHARED CONSTANT RATHER THAN TWO LITERALS, because `compactionStart` matches
828
- * on it to rewrite the notice a successful reactive recovery would otherwise
829
- * leave behind (P1-4). Two spellings that must agree, with nothing checking that
830
- * they do, is how that rewrite silently stops matching — at which point the red
831
- * "start over" banner comes back and only on the recovery path, which is the one
832
- * place nobody re-tests.
833
- */
834
- export declare const CONTEXT_OVERFLOW_NOTICE_PREFIX = "Context length exceeded";
835
- /** Turn a provider error into a friendly banner, mapping LLMError.errorType. */
836
- export declare function formatStreamError(error: Error): string;
837
- export declare function viewReducer(state: ViewState, action: ViewAction): ViewState;