@aragon-agent/cli 0.6.47 → 0.6.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (775) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +27 -6
  3. package/dist/agent/coalesce.d.ts +1 -1
  4. package/dist/agent/controller.d.ts +21 -21
  5. package/dist/agent/controller.js +13 -13
  6. package/dist/agent/conversation-reset.d.ts +1 -1
  7. package/dist/agent/governance-wiring.d.ts +6 -6
  8. package/dist/agent/governance-wiring.js +4 -4
  9. package/dist/agent/headless.d.ts +5 -5
  10. package/dist/agent/headless.js +4 -4
  11. package/dist/agent/job-notices.d.ts +1 -1
  12. package/dist/agent/job-notices.js +1 -1
  13. package/dist/agent/kit-apply.d.ts +3 -3
  14. package/dist/agent/kit-apply.js +3 -3
  15. package/dist/agent/model-profile-settings.d.ts +2 -2
  16. package/dist/agent/model-profile-settings.js +6 -6
  17. package/dist/agent/prompt-options.d.ts +1 -1
  18. package/dist/agent/system-prompt.d.ts +1 -1
  19. package/dist/{ui → app}/App.d.ts +9 -9
  20. package/dist/{ui → app}/App.js +79 -79
  21. package/dist/{ui → app}/use-startup-notices.d.ts +1 -1
  22. package/dist/{ui → app}/use-startup-notices.js +2 -2
  23. package/dist/cli.js +29 -29
  24. package/dist/commands/agents-command.js +1 -1
  25. package/dist/commands/builtins.js +9 -9
  26. package/dist/commands/governance-command.js +2 -2
  27. package/dist/commands/governance-runs-table.js +1 -1
  28. package/dist/commands/kit-command.js +1 -1
  29. package/dist/commands/perf.d.ts +3 -3
  30. package/dist/commands/perf.js +1 -1
  31. package/dist/commands/registry.d.ts +8 -8
  32. package/dist/commands/skills.js +2 -2
  33. package/dist/commands/team-command.js +1 -1
  34. package/dist/compaction/archive.d.ts +1 -1
  35. package/dist/compaction/archive.js +1 -1
  36. package/dist/compaction/child.d.ts +3 -3
  37. package/dist/compaction/child.js +4 -4
  38. package/dist/compaction/command.js +5 -5
  39. package/dist/compaction/compactor.d.ts +6 -6
  40. package/dist/compaction/compactor.js +6 -6
  41. package/dist/compaction/context-command.js +1 -1
  42. package/dist/compaction/digest.js +1 -1
  43. package/dist/compaction/memory-input.js +1 -1
  44. package/dist/compaction/memory-validation.js +1 -1
  45. package/dist/compaction/memory.js +1 -1
  46. package/dist/compaction/summarize-call.js +1 -1
  47. package/dist/compaction/summary-prompt.js +1 -1
  48. package/dist/compaction/tail-budget.js +2 -2
  49. package/dist/compaction/wiring.d.ts +5 -5
  50. package/dist/compaction/wiring.js +2 -2
  51. package/dist/config/cli-commands.d.ts +1 -1
  52. package/dist/config/cli-commands.js +3 -3
  53. package/dist/config/env.d.ts +1 -1
  54. package/dist/config/env.js +4 -4
  55. package/dist/config/load.d.ts +2 -2
  56. package/dist/config/load.js +6 -6
  57. package/dist/config/migrate-state-out-of-config.js +1 -1
  58. package/dist/config/model-profile-store.d.ts +4 -54
  59. package/dist/config/model-profile-store.js +3 -3
  60. package/dist/config/prompt-history.js +1 -1
  61. package/dist/config/store.d.ts +2 -2
  62. package/dist/config/store.js +3 -3
  63. package/dist/diagnostics/doctor.js +4 -4
  64. package/dist/exec/bridge/decisions.d.ts +1 -1
  65. package/dist/exec/bridge/human-answers.d.ts +1 -1
  66. package/dist/exec/bridge/human-answers.js +1 -1
  67. package/dist/exec/bridge/protocol.d.ts +1 -1
  68. package/dist/exec/bridge/server.js +1 -1
  69. package/dist/exec/events.d.ts +2 -2
  70. package/dist/exec/index.d.ts +1 -1
  71. package/dist/exec/index.js +1 -1
  72. package/dist/exec/permission.js +1 -1
  73. package/dist/exec/runner.d.ts +3 -3
  74. package/dist/exec/runner.js +2 -2
  75. package/dist/exec/threads/runtime.js +1 -1
  76. package/dist/fast/digest.d.ts +1 -1
  77. package/dist/fast/digest.js +1 -1
  78. package/dist/fast/frames.d.ts +1 -1
  79. package/dist/fast/frames.js +1 -1
  80. package/dist/fast/prompt.d.ts +1 -1
  81. package/dist/fast/prompt.js +1 -1
  82. package/dist/fast/review-call.js +1 -1
  83. package/dist/fast/reviewer.d.ts +3 -3
  84. package/dist/fast/reviewer.js +1 -1
  85. package/dist/fast/summary-call.d.ts +3 -3
  86. package/dist/fast/summary-call.js +2 -2
  87. package/dist/fast/summary-prompt.d.ts +1 -1
  88. package/dist/fast/summary-prompt.js +1 -1
  89. package/dist/fast/wiring.d.ts +4 -4
  90. package/dist/fast/wiring.js +1 -1
  91. package/dist/governance/card-normalize.d.ts +1 -1
  92. package/dist/governance/copy.d.ts +1 -1
  93. package/dist/governance/copy.js +2 -2
  94. package/dist/governance/engine/artifact-persist.d.ts +1 -1
  95. package/dist/governance/engine/budget.d.ts +1 -1
  96. package/dist/governance/engine/budget.js +1 -1
  97. package/dist/governance/engine/cards.d.ts +1 -1
  98. package/dist/governance/engine/digest.js +1 -1
  99. package/dist/governance/engine/engine-core.d.ts +5 -5
  100. package/dist/governance/engine/engine-core.js +1 -1
  101. package/dist/governance/engine/engine.d.ts +1 -1
  102. package/dist/governance/engine/engine.js +1 -1
  103. package/dist/governance/engine/estimate.d.ts +1 -1
  104. package/dist/governance/engine/estimate.js +1 -1
  105. package/dist/governance/engine/inspector.js +2 -2
  106. package/dist/governance/engine/integration.d.ts +1 -1
  107. package/dist/governance/engine/lifecycle.d.ts +1 -1
  108. package/dist/governance/engine/lifecycle.js +1 -1
  109. package/dist/governance/engine/phase-members.d.ts +1 -1
  110. package/dist/governance/engine/phase-planner.d.ts +1 -1
  111. package/dist/governance/engine/phase-planner.js +1 -1
  112. package/dist/governance/engine/rebuild.d.ts +1 -1
  113. package/dist/governance/engine/report.d.ts +1 -1
  114. package/dist/governance/engine/report.js +1 -1
  115. package/dist/governance/engine/run-digest.d.ts +1 -1
  116. package/dist/governance/engine/spec-builder.d.ts +2 -2
  117. package/dist/governance/engine/spec-builder.js +2 -2
  118. package/dist/governance/engine/stage-runner.js +2 -2
  119. package/dist/governance/engine/start-input.d.ts +1 -1
  120. package/dist/governance/engine/start-input.js +1 -1
  121. package/dist/governance/engine/state-machine.d.ts +1 -1
  122. package/dist/governance/engine/state-machine.js +3 -3
  123. package/dist/governance/engine/submission-queries.d.ts +1 -1
  124. package/dist/governance/engine/submission-render.d.ts +1 -1
  125. package/dist/governance/engine/submissions.d.ts +1 -1
  126. package/dist/governance/engine/submissions.js +1 -1
  127. package/dist/governance/engine/visibility.d.ts +1 -1
  128. package/dist/governance/engine/visibility.js +1 -1
  129. package/dist/governance/posture-transition.d.ts +2 -2
  130. package/dist/governance/posture-transition.js +1 -1
  131. package/dist/governance/profiles.d.ts +1 -1
  132. package/dist/governance/prompts/orchestrator-block.d.ts +2 -2
  133. package/dist/governance/prompts/orchestrator-block.js +2 -2
  134. package/dist/governance/prompts/plan-addendum.d.ts +1 -1
  135. package/dist/governance/prompts/plan-addendum.js +1 -1
  136. package/dist/governance/prompts/role-blocks.d.ts +2 -2
  137. package/dist/governance/prompts/role-blocks.js +1 -1
  138. package/dist/governance/report-reader.js +1 -1
  139. package/dist/governance/roles.d.ts +1 -1
  140. package/dist/governance/rules/claims.d.ts +1 -1
  141. package/dist/governance/rules/claims.js +1 -1
  142. package/dist/governance/rules/elimination.d.ts +1 -1
  143. package/dist/governance/rules/elimination.js +1 -1
  144. package/dist/governance/rules/failure-analysis.d.ts +2 -2
  145. package/dist/governance/rules/failure-analysis.js +1 -1
  146. package/dist/governance/rules/ledger-replay.d.ts +1 -1
  147. package/dist/governance/rules/ledger-state.d.ts +1 -1
  148. package/dist/governance/rules/ledger-state.js +1 -1
  149. package/dist/governance/rules/ledger.d.ts +2 -2
  150. package/dist/governance/rules/ledger.js +2 -2
  151. package/dist/governance/rules/rca.d.ts +1 -1
  152. package/dist/governance/rules/rca.js +1 -1
  153. package/dist/governance/rules/settlement.d.ts +2 -2
  154. package/dist/governance/rules/settlement.js +2 -2
  155. package/dist/governance/rules/suspicion.d.ts +1 -1
  156. package/dist/governance/store/artifacts.d.ts +1 -1
  157. package/dist/governance/store/artifacts.js +1 -1
  158. package/dist/governance/store/events-log.d.ts +1 -1
  159. package/dist/governance/store/run-store.d.ts +1 -1
  160. package/dist/governance/store/run-store.js +1 -1
  161. package/dist/governance/store/scoreboard-export.d.ts +1 -1
  162. package/dist/governance/tools/child-tools.d.ts +1 -1
  163. package/dist/governance/tools/guard.d.ts +1 -1
  164. package/dist/governance/tools/guard.js +1 -1
  165. package/dist/governance/tools/inspector-tools.d.ts +2 -2
  166. package/dist/governance/tools/inspector-tools.js +2 -2
  167. package/dist/governance/tools/lead-tools.d.ts +1 -1
  168. package/dist/governance/tools/lead-tools.js +1 -1
  169. package/dist/governance/tools/normalize-util.js +1 -1
  170. package/dist/governance/tools/scan-incomplete.js +1 -1
  171. package/dist/governance/tools/shared-tools.d.ts +1 -1
  172. package/dist/governance/tools/shared-tools.js +1 -1
  173. package/dist/governance/tools/submit-normalizers.d.ts +1 -1
  174. package/dist/governance/tools/submit-normalizers.js +1 -1
  175. package/dist/governance/tools/submit-tools.d.ts +1 -1
  176. package/dist/logging/cli-commands.js +1 -1
  177. package/dist/logging/install.d.ts +1 -1
  178. package/dist/logging/install.js +3 -3
  179. package/dist/logging/logger.d.ts +2 -2
  180. package/dist/logging/logger.js +31 -2
  181. package/dist/proc/kill-tree.js +1 -1
  182. package/dist/proc/log-mirror.js +1 -1
  183. package/dist/proc/log-ring.js +2 -2
  184. package/dist/proc/notices.d.ts +1 -1
  185. package/dist/proc/notices.js +2 -2
  186. package/dist/proc/prompt.d.ts +1 -1
  187. package/dist/proc/prompt.js +1 -1
  188. package/dist/proc/readiness.js +1 -1
  189. package/dist/proc/supervisor.d.ts +1 -1
  190. package/dist/proc/supervisor.js +3 -3
  191. package/dist/proc/wait.d.ts +1 -1
  192. package/dist/proc/wait.js +1 -1
  193. package/dist/prompts/command.d.ts +1 -1
  194. package/dist/prompts/command.js +1 -1
  195. package/dist/prompts/normalize.d.ts +1 -1
  196. package/dist/prompts/normalize.js +1 -1
  197. package/dist/prompts/resolve.d.ts +1 -1
  198. package/dist/prompts/store.d.ts +2 -12
  199. package/dist/prompts/store.js +6 -60
  200. package/dist/session/checkpoint.d.ts +2 -2
  201. package/dist/session/clear-archive.d.ts +2 -2
  202. package/dist/session/persist.d.ts +2 -2
  203. package/dist/session/persist.js +1 -1
  204. package/dist/session/startup-session.d.ts +2 -2
  205. package/dist/session/validate-session.js +3 -3
  206. package/dist/skills/service.d.ts +2 -2
  207. package/dist/team/bus.d.ts +1 -1
  208. package/dist/team/bus.js +1 -1
  209. package/dist/team/child-reviewer.d.ts +2 -2
  210. package/dist/team/child-reviewer.js +1 -1
  211. package/dist/team/comm-tools.js +1 -1
  212. package/dist/team/dispatch-gate.js +1 -1
  213. package/dist/team/forced-dispatch.js +1 -1
  214. package/dist/team/forced-mode.d.ts +1 -1
  215. package/dist/team/forced-prompt.d.ts +1 -1
  216. package/dist/team/forced-prompt.js +1 -1
  217. package/dist/team/normalize.d.ts +1 -1
  218. package/dist/team/normalize.js +1 -1
  219. package/dist/team/overseer.d.ts +3 -3
  220. package/dist/team/overseer.js +3 -3
  221. package/dist/team/prompt.d.ts +1 -1
  222. package/dist/team/prompt.js +1 -1
  223. package/dist/team/report.d.ts +2 -2
  224. package/dist/team/report.js +2 -2
  225. package/dist/team/retry.d.ts +1 -1
  226. package/dist/team/retry.js +1 -1
  227. package/dist/team/runtime.d.ts +4 -4
  228. package/dist/team/runtime.js +2 -2
  229. package/dist/team/settled.d.ts +2 -2
  230. package/dist/team/subagent.d.ts +4 -4
  231. package/dist/team/subagent.js +5 -5
  232. package/dist/team/task-tool.d.ts +1 -1
  233. package/dist/team/task-tool.js +1 -1
  234. package/dist/todo/normalize.d.ts +1 -1
  235. package/dist/todo/normalize.js +1 -1
  236. package/dist/todo/prompt.d.ts +1 -1
  237. package/dist/todo/prompt.js +1 -1
  238. package/dist/todo/store.d.ts +1 -1
  239. package/dist/todo/store.js +2 -2
  240. package/dist/todo/todo-tool.d.ts +1 -1
  241. package/dist/todo/todo-tool.js +2 -2
  242. package/dist/tools/bash-tool.d.ts +1 -1
  243. package/dist/tools/bash-tool.js +2 -2
  244. package/dist/tools/diff.d.ts +1 -1
  245. package/dist/tools/diff.js +1 -1
  246. package/dist/tools/file-change-store.d.ts +1 -1
  247. package/dist/tools/fs-tools.d.ts +2 -2
  248. package/dist/tools/fs-tools.js +1 -1
  249. package/dist/tools/index.d.ts +3 -3
  250. package/dist/tools/index.js +1 -1
  251. package/dist/tools/job-tools.d.ts +2 -2
  252. package/dist/tools/job-tools.js +4 -4
  253. package/dist/tools/plan-tools.d.ts +1 -1
  254. package/dist/tools/plan-tools.js +1 -1
  255. package/dist/tools/proc-tools.d.ts +1 -1
  256. package/dist/tools/proc-tools.js +2 -2
  257. package/dist/update/classify-failure.d.ts +1 -1
  258. package/dist/update/install-lock.js +1 -1
  259. package/dist/update/install-source.d.ts +1 -1
  260. package/dist/update/installer.js +2 -2
  261. package/dist/update/npm-view.d.ts +1 -1
  262. package/dist/update/npm-view.js +1 -1
  263. package/dist/update/registry.d.ts +1 -1
  264. package/dist/update/registry.js +1 -1
  265. package/dist/update/service.d.ts +2 -2
  266. package/dist/update/service.js +2 -2
  267. package/package.json +7 -7
  268. package/dist/agent/agent-mode.d.ts +0 -108
  269. package/dist/agent/agent-mode.js +0 -121
  270. package/dist/agent/entry-limits.d.ts +0 -65
  271. package/dist/agent/entry-limits.js +0 -133
  272. package/dist/agent/governance-view.d.ts +0 -40
  273. package/dist/agent/governance-view.js +0 -40
  274. package/dist/agent/invocation-card.d.ts +0 -77
  275. package/dist/agent/invocation-card.js +0 -169
  276. package/dist/agent/model-probe-limits.d.ts +0 -39
  277. package/dist/agent/model-probe-limits.js +0 -25
  278. package/dist/agent/model-probe.d.ts +0 -104
  279. package/dist/agent/model-probe.js +0 -391
  280. package/dist/agent/queued-messages.d.ts +0 -23
  281. package/dist/agent/queued-messages.js +0 -49
  282. package/dist/agent/reducer.d.ts +0 -857
  283. package/dist/agent/reducer.js +0 -1646
  284. package/dist/agent/retry-view.d.ts +0 -68
  285. package/dist/agent/retry-view.js +0 -95
  286. package/dist/agent/usage.d.ts +0 -47
  287. package/dist/agent/usage.js +0 -84
  288. package/dist/compaction/limits.d.ts +0 -61
  289. package/dist/compaction/limits.js +0 -64
  290. package/dist/compaction/meter.d.ts +0 -276
  291. package/dist/compaction/meter.js +0 -512
  292. package/dist/compaction/pressure.d.ts +0 -163
  293. package/dist/compaction/pressure.js +0 -199
  294. package/dist/compaction/reason-text.d.ts +0 -36
  295. package/dist/compaction/reason-text.js +0 -78
  296. package/dist/compaction/types.d.ts +0 -360
  297. package/dist/compaction/types.js +0 -22
  298. package/dist/config/governance-config.d.ts +0 -125
  299. package/dist/config/governance-config.js +0 -164
  300. package/dist/config/kit-resolution.d.ts +0 -93
  301. package/dist/config/kit-resolution.js +0 -226
  302. package/dist/config/model-kits.d.ts +0 -225
  303. package/dist/config/model-kits.js +0 -302
  304. package/dist/config/model-profile-resolution.d.ts +0 -28
  305. package/dist/config/model-profile-resolution.js +0 -88
  306. package/dist/config/model-profiles.d.ts +0 -103
  307. package/dist/config/model-profiles.js +0 -188
  308. package/dist/config/schema.d.ts +0 -1645
  309. package/dist/config/schema.js +0 -1383
  310. package/dist/fast/limits.d.ts +0 -152
  311. package/dist/fast/limits.js +0 -152
  312. package/dist/fast/resolve.d.ts +0 -44
  313. package/dist/fast/resolve.js +0 -107
  314. package/dist/fast/task-summary-types.d.ts +0 -66
  315. package/dist/fast/task-summary-types.js +0 -17
  316. package/dist/fast/types.d.ts +0 -141
  317. package/dist/fast/types.js +0 -14
  318. package/dist/governance/governed-dispatch.d.ts +0 -19
  319. package/dist/governance/governed-dispatch.js +0 -17
  320. package/dist/governance/limits.d.ts +0 -107
  321. package/dist/governance/limits.js +0 -131
  322. package/dist/governance/posture.d.ts +0 -35
  323. package/dist/governance/posture.js +0 -59
  324. package/dist/governance/rules/events-table.d.ts +0 -46
  325. package/dist/governance/rules/events-table.js +0 -94
  326. package/dist/governance/types.d.ts +0 -661
  327. package/dist/governance/types.js +0 -27
  328. package/dist/input/control-sequences.d.ts +0 -71
  329. package/dist/input/control-sequences.js +0 -222
  330. package/dist/input/csiu-keys.d.ts +0 -66
  331. package/dist/input/csiu-keys.js +0 -181
  332. package/dist/input/cursor-report.d.ts +0 -61
  333. package/dist/input/cursor-report.js +0 -97
  334. package/dist/input/enter-sequences.d.ts +0 -64
  335. package/dist/input/enter-sequences.js +0 -153
  336. package/dist/input/interrupt-gesture.d.ts +0 -18
  337. package/dist/input/interrupt-gesture.js +0 -19
  338. package/dist/input/keyboard-enhancement.d.ts +0 -42
  339. package/dist/input/keyboard-enhancement.js +0 -65
  340. package/dist/input/keymap.d.ts +0 -20
  341. package/dist/input/keymap.js +0 -99
  342. package/dist/input/limits.d.ts +0 -118
  343. package/dist/input/limits.js +0 -109
  344. package/dist/input/mouse-events.d.ts +0 -87
  345. package/dist/input/mouse-events.js +0 -212
  346. package/dist/input/paste-parse.d.ts +0 -83
  347. package/dist/input/paste-parse.js +0 -107
  348. package/dist/input/pointer-router.d.ts +0 -11
  349. package/dist/input/pointer-router.js +0 -14
  350. package/dist/input/stdin-filter.d.ts +0 -112
  351. package/dist/input/stdin-filter.js +0 -657
  352. package/dist/input/win32-input-mode.d.ts +0 -61
  353. package/dist/input/win32-input-mode.js +0 -269
  354. package/dist/logging/levels.d.ts +0 -40
  355. package/dist/logging/levels.js +0 -59
  356. package/dist/logging/secret-registry.d.ts +0 -32
  357. package/dist/logging/secret-registry.js +0 -73
  358. package/dist/proc/limits.d.ts +0 -214
  359. package/dist/proc/limits.js +0 -221
  360. package/dist/proc/progress.d.ts +0 -47
  361. package/dist/proc/progress.js +0 -163
  362. package/dist/proc/types.d.ts +0 -269
  363. package/dist/proc/types.js +0 -15
  364. package/dist/proc/wait-view.d.ts +0 -65
  365. package/dist/proc/wait-view.js +0 -66
  366. package/dist/prompts/copy.d.ts +0 -89
  367. package/dist/prompts/copy.js +0 -131
  368. package/dist/prompts/fill.d.ts +0 -51
  369. package/dist/prompts/fill.js +0 -46
  370. package/dist/prompts/limits.d.ts +0 -53
  371. package/dist/prompts/limits.js +0 -53
  372. package/dist/prompts/search.d.ts +0 -58
  373. package/dist/prompts/search.js +0 -146
  374. package/dist/prompts/types.d.ts +0 -204
  375. package/dist/prompts/types.js +0 -13
  376. package/dist/team/activity.d.ts +0 -67
  377. package/dist/team/activity.js +0 -130
  378. package/dist/team/limits.d.ts +0 -308
  379. package/dist/team/limits.js +0 -330
  380. package/dist/team/model.d.ts +0 -104
  381. package/dist/team/model.js +0 -150
  382. package/dist/team/panel-rows.d.ts +0 -48
  383. package/dist/team/panel-rows.js +0 -75
  384. package/dist/team/timeline.d.ts +0 -74
  385. package/dist/team/timeline.js +0 -101
  386. package/dist/team/types.d.ts +0 -354
  387. package/dist/team/types.js +0 -13
  388. package/dist/todo/acceptance.d.ts +0 -120
  389. package/dist/todo/acceptance.js +0 -399
  390. package/dist/todo/follow-through.d.ts +0 -138
  391. package/dist/todo/follow-through.js +0 -248
  392. package/dist/todo/limits.d.ts +0 -152
  393. package/dist/todo/limits.js +0 -152
  394. package/dist/todo/panel-rows.d.ts +0 -45
  395. package/dist/todo/panel-rows.js +0 -70
  396. package/dist/todo/plan-sections.d.ts +0 -60
  397. package/dist/todo/plan-sections.js +0 -108
  398. package/dist/todo/row-window.d.ts +0 -51
  399. package/dist/todo/row-window.js +0 -107
  400. package/dist/todo/types.d.ts +0 -124
  401. package/dist/todo/types.js +0 -12
  402. package/dist/tools/human-input.d.ts +0 -212
  403. package/dist/tools/human-input.js +0 -265
  404. package/dist/tools/patch.d.ts +0 -115
  405. package/dist/tools/patch.js +0 -453
  406. package/dist/tools/terminal-output.d.ts +0 -115
  407. package/dist/tools/terminal-output.js +0 -201
  408. package/dist/tools/tool-output-store.d.ts +0 -68
  409. package/dist/tools/tool-output-store.js +0 -102
  410. package/dist/ui/ActivityLine.d.ts +0 -26
  411. package/dist/ui/ActivityLine.js +0 -51
  412. package/dist/ui/AutocompletePopup.d.ts +0 -23
  413. package/dist/ui/AutocompletePopup.js +0 -17
  414. package/dist/ui/BottomStatusRow.d.ts +0 -10
  415. package/dist/ui/BottomStatusRow.js +0 -9
  416. package/dist/ui/Composer.d.ts +0 -115
  417. package/dist/ui/Composer.js +0 -64
  418. package/dist/ui/GovernancePanel.d.ts +0 -50
  419. package/dist/ui/GovernancePanel.js +0 -77
  420. package/dist/ui/GovernanceRun.d.ts +0 -18
  421. package/dist/ui/GovernanceRun.js +0 -11
  422. package/dist/ui/Header.d.ts +0 -48
  423. package/dist/ui/Header.js +0 -27
  424. package/dist/ui/Logo.d.ts +0 -32
  425. package/dist/ui/Logo.js +0 -65
  426. package/dist/ui/Markdown.d.ts +0 -29
  427. package/dist/ui/Markdown.js +0 -116
  428. package/dist/ui/PromptCaret.d.ts +0 -11
  429. package/dist/ui/PromptCaret.js +0 -31
  430. package/dist/ui/PromptInput.d.ts +0 -192
  431. package/dist/ui/PromptInput.js +0 -689
  432. package/dist/ui/QueuePanel.d.ts +0 -8
  433. package/dist/ui/QueuePanel.js +0 -9
  434. package/dist/ui/QueueStatusRow.d.ts +0 -24
  435. package/dist/ui/QueueStatusRow.js +0 -51
  436. package/dist/ui/ScrollbackShell.d.ts +0 -132
  437. package/dist/ui/ScrollbackShell.js +0 -26
  438. package/dist/ui/SessionOpener.d.ts +0 -30
  439. package/dist/ui/SessionOpener.js +0 -12
  440. package/dist/ui/StatusBar.d.ts +0 -130
  441. package/dist/ui/StatusBar.js +0 -61
  442. package/dist/ui/TeamPanel.d.ts +0 -76
  443. package/dist/ui/TeamPanel.js +0 -103
  444. package/dist/ui/ToastStack.d.ts +0 -8
  445. package/dist/ui/ToastStack.js +0 -31
  446. package/dist/ui/TodoPanel.d.ts +0 -52
  447. package/dist/ui/TodoPanel.js +0 -214
  448. package/dist/ui/Transcript.d.ts +0 -105
  449. package/dist/ui/Transcript.js +0 -258
  450. package/dist/ui/UpdateLine.d.ts +0 -44
  451. package/dist/ui/UpdateLine.js +0 -129
  452. package/dist/ui/activity-phrases.d.ts +0 -33
  453. package/dist/ui/activity-phrases.js +0 -50
  454. package/dist/ui/capabilities.d.ts +0 -27
  455. package/dist/ui/capabilities.js +0 -65
  456. package/dist/ui/clipboard-task.d.ts +0 -29
  457. package/dist/ui/clipboard-task.js +0 -66
  458. package/dist/ui/clipboard.d.ts +0 -31
  459. package/dist/ui/clipboard.js +0 -157
  460. package/dist/ui/color-runtime.d.ts +0 -5
  461. package/dist/ui/color-runtime.js +0 -29
  462. package/dist/ui/composer-input.d.ts +0 -38
  463. package/dist/ui/composer-input.js +0 -79
  464. package/dist/ui/composer-limits.d.ts +0 -30
  465. package/dist/ui/composer-limits.js +0 -45
  466. package/dist/ui/composer-rows.d.ts +0 -73
  467. package/dist/ui/composer-rows.js +0 -129
  468. package/dist/ui/console-bridge.d.ts +0 -19
  469. package/dist/ui/console-bridge.js +0 -52
  470. package/dist/ui/density.d.ts +0 -26
  471. package/dist/ui/density.js +0 -34
  472. package/dist/ui/display-tab.d.ts +0 -51
  473. package/dist/ui/display-tab.js +0 -82
  474. package/dist/ui/editor-navigation.d.ts +0 -55
  475. package/dist/ui/editor-navigation.js +0 -96
  476. package/dist/ui/editor-reducer.d.ts +0 -108
  477. package/dist/ui/editor-reducer.js +0 -187
  478. package/dist/ui/enter-frames.d.ts +0 -47
  479. package/dist/ui/enter-frames.js +0 -117
  480. package/dist/ui/entries/AssistantEntry.d.ts +0 -37
  481. package/dist/ui/entries/AssistantEntry.js +0 -43
  482. package/dist/ui/entries/CompactionCard.d.ts +0 -88
  483. package/dist/ui/entries/CompactionCard.js +0 -222
  484. package/dist/ui/entries/DiffView.d.ts +0 -61
  485. package/dist/ui/entries/DiffView.js +0 -103
  486. package/dist/ui/entries/EntryFrame.d.ts +0 -23
  487. package/dist/ui/entries/EntryFrame.js +0 -6
  488. package/dist/ui/entries/FastCard.d.ts +0 -53
  489. package/dist/ui/entries/FastCard.js +0 -105
  490. package/dist/ui/entries/GovernanceCard.d.ts +0 -30
  491. package/dist/ui/entries/GovernanceCard.js +0 -32
  492. package/dist/ui/entries/InvocationCard.d.ts +0 -20
  493. package/dist/ui/entries/InvocationCard.js +0 -32
  494. package/dist/ui/entries/QueuedEntry.d.ts +0 -27
  495. package/dist/ui/entries/QueuedEntry.js +0 -33
  496. package/dist/ui/entries/RetryCard.d.ts +0 -56
  497. package/dist/ui/entries/RetryCard.js +0 -60
  498. package/dist/ui/entries/ServiceCard.d.ts +0 -82
  499. package/dist/ui/entries/ServiceCard.js +0 -151
  500. package/dist/ui/entries/TeamCard.d.ts +0 -55
  501. package/dist/ui/entries/TeamCard.js +0 -94
  502. package/dist/ui/entries/TodoCard.d.ts +0 -54
  503. package/dist/ui/entries/TodoCard.js +0 -98
  504. package/dist/ui/entries/ToolCard.d.ts +0 -81
  505. package/dist/ui/entries/ToolCard.js +0 -169
  506. package/dist/ui/entries/ToolPreview.d.ts +0 -59
  507. package/dist/ui/entries/ToolPreview.js +0 -208
  508. package/dist/ui/entries/UserEntry.d.ts +0 -36
  509. package/dist/ui/entries/UserEntry.js +0 -57
  510. package/dist/ui/entries/WaitCard.d.ts +0 -37
  511. package/dist/ui/entries/WaitCard.js +0 -92
  512. package/dist/ui/exit-snapshot.d.ts +0 -43
  513. package/dist/ui/exit-snapshot.js +0 -26
  514. package/dist/ui/frame-differ.d.ts +0 -166
  515. package/dist/ui/frame-differ.js +0 -354
  516. package/dist/ui/frame-observer.d.ts +0 -17
  517. package/dist/ui/frame-observer.js +0 -94
  518. package/dist/ui/frame-parser.d.ts +0 -7
  519. package/dist/ui/frame-parser.js +0 -18
  520. package/dist/ui/gauge.d.ts +0 -39
  521. package/dist/ui/gauge.js +0 -55
  522. package/dist/ui/glyphs.d.ts +0 -178
  523. package/dist/ui/glyphs.js +0 -165
  524. package/dist/ui/governance-copy.d.ts +0 -69
  525. package/dist/ui/governance-copy.js +0 -104
  526. package/dist/ui/governance-status.d.ts +0 -145
  527. package/dist/ui/governance-status.js +0 -326
  528. package/dist/ui/gradient.d.ts +0 -11
  529. package/dist/ui/gradient.js +0 -50
  530. package/dist/ui/ink-runtime.d.ts +0 -4
  531. package/dist/ui/ink-runtime.js +0 -51
  532. package/dist/ui/interaction-copy.d.ts +0 -84
  533. package/dist/ui/interaction-copy.js +0 -41
  534. package/dist/ui/interaction-hints.d.ts +0 -44
  535. package/dist/ui/interaction-hints.js +0 -97
  536. package/dist/ui/layout/AppShell.d.ts +0 -17
  537. package/dist/ui/layout/AppShell.js +0 -6
  538. package/dist/ui/layout/Gutter.d.ts +0 -67
  539. package/dist/ui/layout/Gutter.js +0 -42
  540. package/dist/ui/layout/MeasuredEntry.d.ts +0 -21
  541. package/dist/ui/layout/MeasuredEntry.js +0 -30
  542. package/dist/ui/layout/OverlayFrame.d.ts +0 -73
  543. package/dist/ui/layout/OverlayFrame.js +0 -110
  544. package/dist/ui/layout/ScrollIndicator.d.ts +0 -32
  545. package/dist/ui/layout/ScrollIndicator.js +0 -22
  546. package/dist/ui/layout/ScrollViewport.d.ts +0 -40
  547. package/dist/ui/layout/ScrollViewport.js +0 -222
  548. package/dist/ui/layout/agents-board.d.ts +0 -102
  549. package/dist/ui/layout/agents-board.js +0 -389
  550. package/dist/ui/layout/autocomplete.d.ts +0 -18
  551. package/dist/ui/layout/autocomplete.js +0 -26
  552. package/dist/ui/layout/budget.d.ts +0 -43
  553. package/dist/ui/layout/budget.js +0 -52
  554. package/dist/ui/layout/cells.d.ts +0 -61
  555. package/dist/ui/layout/cells.js +0 -156
  556. package/dist/ui/layout/document-layout.d.ts +0 -13
  557. package/dist/ui/layout/document-layout.js +0 -10
  558. package/dist/ui/layout/follow-state.d.ts +0 -138
  559. package/dist/ui/layout/follow-state.js +0 -148
  560. package/dist/ui/layout/frame.d.ts +0 -36
  561. package/dist/ui/layout/frame.js +0 -39
  562. package/dist/ui/layout/governance-board.d.ts +0 -121
  563. package/dist/ui/layout/governance-board.js +0 -382
  564. package/dist/ui/layout/governance-card.d.ts +0 -53
  565. package/dist/ui/layout/governance-card.js +0 -134
  566. package/dist/ui/layout/governance-chip.d.ts +0 -38
  567. package/dist/ui/layout/governance-chip.js +0 -64
  568. package/dist/ui/layout/governance-panel.d.ts +0 -85
  569. package/dist/ui/layout/governance-panel.js +0 -358
  570. package/dist/ui/layout/governance-roster.d.ts +0 -65
  571. package/dist/ui/layout/governance-roster.js +0 -275
  572. package/dist/ui/layout/header-hints.d.ts +0 -90
  573. package/dist/ui/layout/header-hints.js +0 -110
  574. package/dist/ui/layout/header-left.d.ts +0 -115
  575. package/dist/ui/layout/header-left.js +0 -206
  576. package/dist/ui/layout/invocation-card.d.ts +0 -41
  577. package/dist/ui/layout/invocation-card.js +0 -91
  578. package/dist/ui/layout/kit-chip.d.ts +0 -50
  579. package/dist/ui/layout/kit-chip.js +0 -81
  580. package/dist/ui/layout/overlay-window.d.ts +0 -43
  581. package/dist/ui/layout/overlay-window.js +0 -51
  582. package/dist/ui/layout/queue-layout.d.ts +0 -19
  583. package/dist/ui/layout/queue-layout.js +0 -26
  584. package/dist/ui/layout/rail.d.ts +0 -7
  585. package/dist/ui/layout/rail.js +0 -16
  586. package/dist/ui/layout/scroll-indicator.d.ts +0 -27
  587. package/dist/ui/layout/scroll-indicator.js +0 -36
  588. package/dist/ui/layout/scroll.d.ts +0 -37
  589. package/dist/ui/layout/scroll.js +0 -99
  590. package/dist/ui/layout/scrollbar-geometry.d.ts +0 -17
  591. package/dist/ui/layout/scrollbar-geometry.js +0 -13
  592. package/dist/ui/layout/session-chip.d.ts +0 -52
  593. package/dist/ui/layout/session-chip.js +0 -64
  594. package/dist/ui/layout/shortcut-panel-layout.d.ts +0 -191
  595. package/dist/ui/layout/shortcut-panel-layout.js +0 -321
  596. package/dist/ui/layout/status-detail-layout.d.ts +0 -9
  597. package/dist/ui/layout/status-detail-layout.js +0 -79
  598. package/dist/ui/layout/status-layout.d.ts +0 -140
  599. package/dist/ui/layout/status-layout.js +0 -262
  600. package/dist/ui/layout/task-summary-cell.d.ts +0 -61
  601. package/dist/ui/layout/task-summary-cell.js +0 -65
  602. package/dist/ui/layout/team-panel.d.ts +0 -18
  603. package/dist/ui/layout/team-panel.js +0 -25
  604. package/dist/ui/layout/team-row.d.ts +0 -139
  605. package/dist/ui/layout/team-row.js +0 -246
  606. package/dist/ui/layout/todo-layout.d.ts +0 -62
  607. package/dist/ui/layout/todo-layout.js +0 -102
  608. package/dist/ui/layout/useTerminalSize.d.ts +0 -13
  609. package/dist/ui/layout/useTerminalSize.js +0 -50
  610. package/dist/ui/layout/viewport-geometry.d.ts +0 -29
  611. package/dist/ui/layout/viewport-geometry.js +0 -28
  612. package/dist/ui/layout/virtual-window.d.ts +0 -112
  613. package/dist/ui/layout/virtual-window.js +0 -494
  614. package/dist/ui/layout/wait-bar.d.ts +0 -34
  615. package/dist/ui/layout/wait-bar.js +0 -48
  616. package/dist/ui/layout/wrap-rows.d.ts +0 -26
  617. package/dist/ui/layout/wrap-rows.js +0 -88
  618. package/dist/ui/live-clamp.d.ts +0 -14
  619. package/dist/ui/live-clamp.js +0 -46
  620. package/dist/ui/markdown-blocks.d.ts +0 -107
  621. package/dist/ui/markdown-blocks.js +0 -240
  622. package/dist/ui/overlays/AgentsBoardOverlay.d.ts +0 -57
  623. package/dist/ui/overlays/AgentsBoardOverlay.js +0 -183
  624. package/dist/ui/overlays/ConfirmDialog.d.ts +0 -31
  625. package/dist/ui/overlays/ConfirmDialog.js +0 -44
  626. package/dist/ui/overlays/GovernanceBoardOverlay.d.ts +0 -41
  627. package/dist/ui/overlays/GovernanceBoardOverlay.js +0 -76
  628. package/dist/ui/overlays/GovernanceSettingsPage.d.ts +0 -48
  629. package/dist/ui/overlays/GovernanceSettingsPage.js +0 -93
  630. package/dist/ui/overlays/HelpOverlay.d.ts +0 -29
  631. package/dist/ui/overlays/HelpOverlay.js +0 -232
  632. package/dist/ui/overlays/KitEditor.d.ts +0 -23
  633. package/dist/ui/overlays/KitEditor.js +0 -101
  634. package/dist/ui/overlays/KitManager.d.ts +0 -23
  635. package/dist/ui/overlays/KitManager.js +0 -104
  636. package/dist/ui/overlays/KitPicker.d.ts +0 -49
  637. package/dist/ui/overlays/KitPicker.js +0 -58
  638. package/dist/ui/overlays/ModelDiscoveryList.d.ts +0 -23
  639. package/dist/ui/overlays/ModelDiscoveryList.js +0 -161
  640. package/dist/ui/overlays/ModelPicker.d.ts +0 -26
  641. package/dist/ui/overlays/ModelPicker.js +0 -63
  642. package/dist/ui/overlays/ModelProfileEditor.d.ts +0 -29
  643. package/dist/ui/overlays/ModelProfileEditor.js +0 -168
  644. package/dist/ui/overlays/ModelProfilePicker.d.ts +0 -48
  645. package/dist/ui/overlays/ModelProfilePicker.js +0 -231
  646. package/dist/ui/overlays/PlanReviewOverlay.d.ts +0 -51
  647. package/dist/ui/overlays/PlanReviewOverlay.js +0 -132
  648. package/dist/ui/overlays/PromptEditorPage.d.ts +0 -48
  649. package/dist/ui/overlays/PromptEditorPage.js +0 -227
  650. package/dist/ui/overlays/PromptLibraryOverlay.d.ts +0 -37
  651. package/dist/ui/overlays/PromptLibraryOverlay.js +0 -191
  652. package/dist/ui/overlays/PromptPicker.d.ts +0 -36
  653. package/dist/ui/overlays/PromptPicker.js +0 -129
  654. package/dist/ui/overlays/PromptTextArea.d.ts +0 -86
  655. package/dist/ui/overlays/PromptTextArea.js +0 -141
  656. package/dist/ui/overlays/QuestionOverlay.d.ts +0 -39
  657. package/dist/ui/overlays/QuestionOverlay.js +0 -258
  658. package/dist/ui/overlays/QueueOverlay.d.ts +0 -22
  659. package/dist/ui/overlays/QueueOverlay.js +0 -79
  660. package/dist/ui/overlays/SettingsScreen.d.ts +0 -228
  661. package/dist/ui/overlays/SettingsScreen.js +0 -1037
  662. package/dist/ui/overlays/ShortcutPanel.d.ts +0 -39
  663. package/dist/ui/overlays/ShortcutPanel.js +0 -106
  664. package/dist/ui/overlays/TeamFanoutPage.d.ts +0 -51
  665. package/dist/ui/overlays/TeamFanoutPage.js +0 -90
  666. package/dist/ui/overlays/governance-settings.d.ts +0 -79
  667. package/dist/ui/overlays/governance-settings.js +0 -140
  668. package/dist/ui/overlays/kit-picker-state.d.ts +0 -87
  669. package/dist/ui/overlays/kit-picker-state.js +0 -136
  670. package/dist/ui/overlays/kit-settings-state.d.ts +0 -129
  671. package/dist/ui/overlays/kit-settings-state.js +0 -268
  672. package/dist/ui/overlays/model-probe-view.d.ts +0 -128
  673. package/dist/ui/overlays/model-probe-view.js +0 -225
  674. package/dist/ui/overlays/model-profile-state.d.ts +0 -177
  675. package/dist/ui/overlays/model-profile-state.js +0 -301
  676. package/dist/ui/overlays/prompt-library-state.d.ts +0 -162
  677. package/dist/ui/overlays/prompt-library-state.js +0 -335
  678. package/dist/ui/overlays/prompt-picker-state.d.ts +0 -71
  679. package/dist/ui/overlays/prompt-picker-state.js +0 -98
  680. package/dist/ui/overlays/team-fanout-state.d.ts +0 -106
  681. package/dist/ui/overlays/team-fanout-state.js +0 -155
  682. package/dist/ui/overlays/use-model-probe.d.ts +0 -30
  683. package/dist/ui/overlays/use-model-probe.js +0 -109
  684. package/dist/ui/palettes.d.ts +0 -112
  685. package/dist/ui/palettes.js +0 -130
  686. package/dist/ui/paste-frames.d.ts +0 -91
  687. package/dist/ui/paste-frames.js +0 -117
  688. package/dist/ui/paste-tokens.d.ts +0 -90
  689. package/dist/ui/paste-tokens.js +0 -147
  690. package/dist/ui/render-cache.d.ts +0 -81
  691. package/dist/ui/render-cache.js +0 -196
  692. package/dist/ui/render-governor.d.ts +0 -54
  693. package/dist/ui/render-governor.js +0 -78
  694. package/dist/ui/run-metrics.d.ts +0 -23
  695. package/dist/ui/run-metrics.js +0 -27
  696. package/dist/ui/run-status-row.d.ts +0 -63
  697. package/dist/ui/run-status-row.js +0 -54
  698. package/dist/ui/screen.d.ts +0 -107
  699. package/dist/ui/screen.js +0 -234
  700. package/dist/ui/scrollback/LiveTail.d.ts +0 -115
  701. package/dist/ui/scrollback/LiveTail.js +0 -48
  702. package/dist/ui/scrollback/band.d.ts +0 -114
  703. package/dist/ui/scrollback/band.js +0 -143
  704. package/dist/ui/scrollback/budget.d.ts +0 -90
  705. package/dist/ui/scrollback/budget.js +0 -100
  706. package/dist/ui/scrollback/canvas.d.ts +0 -100
  707. package/dist/ui/scrollback/canvas.js +0 -114
  708. package/dist/ui/scrollback/cursor-probe.d.ts +0 -71
  709. package/dist/ui/scrollback/cursor-probe.js +0 -133
  710. package/dist/ui/scrollback/drain.d.ts +0 -32
  711. package/dist/ui/scrollback/drain.js +0 -64
  712. package/dist/ui/scrollback/exit-summary.d.ts +0 -23
  713. package/dist/ui/scrollback/exit-summary.js +0 -25
  714. package/dist/ui/scrollback/limits.d.ts +0 -98
  715. package/dist/ui/scrollback/limits.js +0 -98
  716. package/dist/ui/scrollback/live-preview.d.ts +0 -34
  717. package/dist/ui/scrollback/live-preview.js +0 -130
  718. package/dist/ui/scrollback/overflow-print.d.ts +0 -108
  719. package/dist/ui/scrollback/overflow-print.js +0 -120
  720. package/dist/ui/scrollback/renderer.d.ts +0 -48
  721. package/dist/ui/scrollback/renderer.js +0 -186
  722. package/dist/ui/scrollback/scrollback-writer.d.ts +0 -174
  723. package/dist/ui/scrollback/scrollback-writer.js +0 -648
  724. package/dist/ui/scrollback/settled-boundary.d.ts +0 -42
  725. package/dist/ui/scrollback/settled-boundary.js +0 -109
  726. package/dist/ui/scrollback/tail-anchor.d.ts +0 -71
  727. package/dist/ui/scrollback/tail-anchor.js +0 -79
  728. package/dist/ui/scrollback/tail-window.d.ts +0 -73
  729. package/dist/ui/scrollback/tail-window.js +0 -89
  730. package/dist/ui/scrollback/use-scrollback-view.d.ts +0 -139
  731. package/dist/ui/scrollback/use-scrollback-view.js +0 -601
  732. package/dist/ui/scrollback/writer-shapes.d.ts +0 -127
  733. package/dist/ui/scrollback/writer-shapes.js +0 -159
  734. package/dist/ui/scrollbar-controller.d.ts +0 -30
  735. package/dist/ui/scrollbar-controller.js +0 -124
  736. package/dist/ui/selection/highlight.d.ts +0 -39
  737. package/dist/ui/selection/highlight.js +0 -64
  738. package/dist/ui/selection/screen-mirror.d.ts +0 -24
  739. package/dist/ui/selection/screen-mirror.js +0 -35
  740. package/dist/ui/selection/selection-controller.d.ts +0 -104
  741. package/dist/ui/selection/selection-controller.js +0 -372
  742. package/dist/ui/selection/selection.d.ts +0 -90
  743. package/dist/ui/selection/selection.js +0 -223
  744. package/dist/ui/shortcuts.d.ts +0 -81
  745. package/dist/ui/shortcuts.js +0 -221
  746. package/dist/ui/status-feedback.d.ts +0 -35
  747. package/dist/ui/status-feedback.js +0 -38
  748. package/dist/ui/stdout-frame-writer.d.ts +0 -74
  749. package/dist/ui/stdout-frame-writer.js +0 -155
  750. package/dist/ui/team-status.d.ts +0 -166
  751. package/dist/ui/team-status.js +0 -252
  752. package/dist/ui/terminal-plan.d.ts +0 -52
  753. package/dist/ui/terminal-plan.js +0 -49
  754. package/dist/ui/theme.d.ts +0 -96
  755. package/dist/ui/theme.js +0 -130
  756. package/dist/ui/transcript-text.d.ts +0 -41
  757. package/dist/ui/transcript-text.js +0 -282
  758. package/dist/ui/use-height-store.d.ts +0 -31
  759. package/dist/ui/use-height-store.js +0 -76
  760. package/dist/ui/use-render-governor.d.ts +0 -39
  761. package/dist/ui/use-render-governor.js +0 -57
  762. package/dist/ui/use-wheel-routing.d.ts +0 -57
  763. package/dist/ui/use-wheel-routing.js +0 -152
  764. package/dist/ui/win-vt-force.d.ts +0 -136
  765. package/dist/ui/win-vt-force.js +0 -237
  766. package/dist/ui/win-vt-input.d.ts +0 -57
  767. package/dist/ui/win-vt-input.js +0 -62
  768. package/dist/update/limits.d.ts +0 -111
  769. package/dist/update/limits.js +0 -111
  770. package/dist/update/semver.d.ts +0 -89
  771. package/dist/update/semver.js +0 -295
  772. package/dist/update/types.d.ts +0 -169
  773. package/dist/update/types.js +0 -68
  774. /package/dist/{ui → app}/session-bridge.d.ts +0 -0
  775. /package/dist/{ui → app}/session-bridge.js +0 -0
@@ -1,42 +0,0 @@
1
- /**
2
- * Settled boundary — which transcript entries may be PRINTED
3
- * (tui-native-terminal-scroll §4.4).
4
- *
5
- * Printed rows live in the host terminal's scrollback and can never be rewritten
6
- * ("printed is forever"). So the only entries that may be printed are the ones the
7
- * reducer will NEVER write to again. This module derives that from the reducer's
8
- * real write set, one exhaustive `switch` per entry kind. Adding an `Entry` kind is
9
- * a compile error here (`never`), which is the whole point; widening the write set
10
- * of an EXISTING kind is not caught by the compiler, so `agent/reducer.ts` carries
11
- * a pointer comment beside the `Entry` union and the unit tests pin each row.
12
- *
13
- * Three rules that are easy to "simplify" wrongly:
14
- * - A tool is stable only when `done` or `error`. `pending` is NOT stable: the
15
- * card is created at `pending` and `toolCallDelta` keeps rewriting `argsRaw`
16
- * while the model streams its arguments (RV-1).
17
- * - A trailing `Context length exceeded` error notice is NOT stable while a run is
18
- * active: `compactionStart` rewrites it in place into an info notice (RV-4).
19
- * - A non-terminal `service` card is neither printed nor a wall (RV-3). It is
20
- * rewritten for the whole session; the one-row `terminal: true` record the
21
- * reducer appends at the end is an ordinary stable entry and carries the news.
22
- */
23
- import type { Entry } from '../../agent/reducer.js';
24
- /** Never printed and never a wall: rewritten for the whole session (RV-3). */
25
- export declare function isExcluded(entry: Entry): boolean;
26
- /** True when the reducer will never write to `entry` again. */
27
- export declare function isEntryStable(entry: Entry, runActive: boolean, isTail: boolean): boolean;
28
- /**
29
- * Length of the printable PREFIX of `entries`.
30
- *
31
- * The first unstable (non-excluded) entry is a wall: everything before it may
32
- * print, nothing after it may, which keeps scrollback order equal to conversation
33
- * order (I-S3). Excluded entries are skipped, so a long-lived service card never
34
- * blocks the conversation behind it.
35
- */
36
- export declare function settledCount(entries: readonly Entry[], runActive: boolean): number;
37
- /**
38
- * Everything printable at shutdown: all entries except those that never settle
39
- * (`queued`, non-terminal services). The last answer must not be lost to a
40
- * boundary that was waiting for a frame that will never come.
41
- */
42
- export declare function settleAllEntries(entries: readonly Entry[]): Entry[];
@@ -1,109 +0,0 @@
1
- /**
2
- * Settled boundary — which transcript entries may be PRINTED
3
- * (tui-native-terminal-scroll §4.4).
4
- *
5
- * Printed rows live in the host terminal's scrollback and can never be rewritten
6
- * ("printed is forever"). So the only entries that may be printed are the ones the
7
- * reducer will NEVER write to again. This module derives that from the reducer's
8
- * real write set, one exhaustive `switch` per entry kind. Adding an `Entry` kind is
9
- * a compile error here (`never`), which is the whole point; widening the write set
10
- * of an EXISTING kind is not caught by the compiler, so `agent/reducer.ts` carries
11
- * a pointer comment beside the `Entry` union and the unit tests pin each row.
12
- *
13
- * Three rules that are easy to "simplify" wrongly:
14
- * - A tool is stable only when `done` or `error`. `pending` is NOT stable: the
15
- * card is created at `pending` and `toolCallDelta` keeps rewriting `argsRaw`
16
- * while the model streams its arguments (RV-1).
17
- * - A trailing `Context length exceeded` error notice is NOT stable while a run is
18
- * active: `compactionStart` rewrites it in place into an info notice (RV-4).
19
- * - A non-terminal `service` card is neither printed nor a wall (RV-3). It is
20
- * rewritten for the whole session; the one-row `terminal: true` record the
21
- * reducer appends at the end is an ordinary stable entry and carries the news.
22
- */
23
- import { CONTEXT_OVERFLOW_NOTICE_PREFIX } from '../../agent/reducer.js';
24
- /** Kinds the reducer may still rewrite while a run is active, so a tail one is held. */
25
- const MUTABLE_TAIL_KINDS = new Set([
26
- 'assistant', 'tool', 'compaction', 'todo', 'team', 'fast', 'retry', 'queued',
27
- ]);
28
- /** Never printed and never a wall: rewritten for the whole session (RV-3). */
29
- export function isExcluded(entry) {
30
- return entry.kind === 'service' && entry.terminal !== true;
31
- }
32
- /** True when the reducer will never write to `entry` again. */
33
- export function isEntryStable(entry, runActive, isTail) {
34
- switch (entry.kind) {
35
- case 'user':
36
- return true;
37
- case 'notice':
38
- return !(runActive &&
39
- isTail &&
40
- entry.level === 'error' &&
41
- entry.text.startsWith(CONTEXT_OVERFLOW_NOTICE_PREFIX));
42
- case 'assistant':
43
- return !entry.streaming;
44
- case 'tool':
45
- return entry.status === 'done' || entry.status === 'error';
46
- case 'compaction':
47
- return entry.live !== true;
48
- case 'todo':
49
- return entry.live === false;
50
- case 'team':
51
- return entry.active === false;
52
- case 'fast':
53
- return entry.live === false;
54
- case 'retry':
55
- return (entry.phase === 'recovered' ||
56
- entry.phase === 'exhausted' ||
57
- entry.phase === 'interrupted');
58
- case 'queued':
59
- // Rewritten in place into a `user` entry by the matching receipt.
60
- return false;
61
- case 'service':
62
- // Only the terminal record is ever a candidate; `isExcluded` filters the rest.
63
- return entry.terminal === true;
64
- case 'governance':
65
- // A settlement card is appended once, already complete.
66
- return true;
67
- default: {
68
- const exhaustive = entry;
69
- return exhaustive;
70
- }
71
- }
72
- }
73
- /**
74
- * Length of the printable PREFIX of `entries`.
75
- *
76
- * The first unstable (non-excluded) entry is a wall: everything before it may
77
- * print, nothing after it may, which keeps scrollback order equal to conversation
78
- * order (I-S3). Excluded entries are skipped, so a long-lived service card never
79
- * blocks the conversation behind it.
80
- */
81
- export function settledCount(entries, runActive) {
82
- const last = entries.length - 1;
83
- let count = entries.length;
84
- for (let i = 0; i < entries.length; i += 1) {
85
- const entry = entries[i];
86
- if (isExcluded(entry))
87
- continue;
88
- if (!isEntryStable(entry, runActive, i === last)) {
89
- count = i;
90
- break;
91
- }
92
- }
93
- // Hold a mutable TAIL while a run is active, but only a mutable one: a `user` or
94
- // `notice` at the tail prints immediately (a submitted message must appear at once).
95
- if (runActive && count === entries.length && count > 0) {
96
- const tail = entries[last];
97
- if (!isExcluded(tail) && MUTABLE_TAIL_KINDS.has(tail.kind))
98
- return last;
99
- }
100
- return count;
101
- }
102
- /**
103
- * Everything printable at shutdown: all entries except those that never settle
104
- * (`queued`, non-terminal services). The last answer must not be lost to a
105
- * boundary that was waiting for a frame that will never come.
106
- */
107
- export function settleAllEntries(entries) {
108
- return entries.filter((entry) => entry.kind !== 'queued' && !isExcluded(entry));
109
- }
@@ -1,71 +0,0 @@
1
- /**
2
- * Where the live tail sits inside the band's preview box
3
- * (tui-first-reply-bottom-aligned, plan A-prime).
4
- *
5
- * THE DEFECT THIS ANSWERS. The box is always the whole pool (`band.previewRows`, 24 rows
6
- * on a 30-row terminal) while a first turn is four rows tall. A constant
7
- * `justifyContent="flex-end"` therefore pushed those four rows against the composer and
8
- * left every unused row ABOVE the conversation - the "the first reply starts at the
9
- * bottom of the screen" report. The answer is conditional anchoring: top while the
10
- * content fits, so the conversation is written downwards from the region's top row
11
- * (`tui-header-leaks-into-scrollback` took the identity row off that row and put it
12
- * below the composer, so the first line of the band is now the first line of the screen).
13
- *
14
- * WHY THE FALLBACK IS `bottom` AND NOT THE OTHER WAY ROUND. `flex-start` inside an
15
- * `overflow="hidden"` box clips the NEWEST rows (Ink's clip rectangle is the box's
16
- * `[top, top + height]`), and a streaming entry is never printable
17
- * (`settled-boundary.ts` holds it unstable, and "printed is forever"). Overflowing to
18
- * `flex-start` would hide the text the user is waiting for; overflowing to `flex-end`
19
- * hides the oldest rows, which the tail window prints on its way out.
20
- *
21
- * THE THRESHOLD CARRIES A MARGIN. `rowOf` is an ESTIMATE, and the one available
22
- * (`layout/virtual-window.ts::estimateEntryRows`) under-counts a `#` heading and a code
23
- * block. The margin in `SCROLLBACK_LIMITS.tailAnchorSlackRows` absorbs that error on the
24
- * `bottom` side, the only direction that cannot clip something new.
25
- *
26
- * PURE: no Ink, no I/O, no clock, and deliberately no import of `virtual-window.ts` (its
27
- * import graph reaches a `.tsx` gutter). The row height is injected, so this stays three
28
- * parameters and a unit test can drive it with any table it likes.
29
- */
30
- import type { Entry } from '../../agent/reducer.js';
31
- /** `top` = content grows down from the region's top row; `bottom` = newest row hugs the
32
- * composer. */
33
- export type TailAnchor = 'top' | 'bottom';
34
- /**
35
- * Which alignment the live tail should use for the entries it is about to render.
36
- *
37
- * @param entries The entries THIS FRAME renders (already windowed by `selectTailEntries`;
38
- * summing the whole conversation would make every session past the entry cap overflow and
39
- * anchor to the bottom forever).
40
- * @param budgetRows Height of the box that will clip them, in rows.
41
- * @param rowOf Estimated height of one entry, including its separation row.
42
- * @returns `top` when the estimates plus `tailAnchorSlackRows` fit in `budgetRows`,
43
- * `bottom` otherwise (and for the first entry that does not fit, so the loop stops early).
44
- */
45
- export declare function tailAnchor(entries: readonly Entry[], budgetRows: number, rowOf: (entry: Entry) => number): TailAnchor;
46
- /**
47
- * The anchor this frame really uses: MEASURED when the measurement exists, estimated
48
- * otherwise.
49
- *
50
- * WHY A MEASURED ANSWER WINS (tui-final-reply-truncated-unscrollable). The estimate is an
51
- * upper bound that charges a separation row this renderer may not draw, so it can claim the
52
- * content overflows while it actually fits (the block sits at the bottom of a half-empty
53
- * box - the very complaint `tui-first-reply-bottom-aligned` answered) and it under-counts a
54
- * heading or a wrapped code block, so it can claim the content fits while the box is really
55
- * clipping. The second error is the expensive one now: "top give-way" only prints while the
56
- * box is bottom-anchored (that is the branch that clips the TOP), so a wrongly top-anchored
57
- * box would clip the newest rows and print the oldest ones - the wrong half, twice.
58
- *
59
- * A measured total is available only when every window entry is stable AND already measured
60
- * at the current geometry (`use-scrollback-view.ts` keeps that cache), which is exactly the
61
- * frame on which a print decision is being made. Every other frame - streaming, resize,
62
- * first sight of a new entry - falls back to the estimate, unchanged.
63
- *
64
- * @param measuredRows Measured height of the same entries, or `undefined` when unknown.
65
- */
66
- export declare function resolveTailAnchor(input: {
67
- entries: readonly Entry[];
68
- budgetRows: number;
69
- rowOf: (entry: Entry) => number;
70
- measuredRows: number | undefined;
71
- }): TailAnchor;
@@ -1,79 +0,0 @@
1
- /**
2
- * Where the live tail sits inside the band's preview box
3
- * (tui-first-reply-bottom-aligned, plan A-prime).
4
- *
5
- * THE DEFECT THIS ANSWERS. The box is always the whole pool (`band.previewRows`, 24 rows
6
- * on a 30-row terminal) while a first turn is four rows tall. A constant
7
- * `justifyContent="flex-end"` therefore pushed those four rows against the composer and
8
- * left every unused row ABOVE the conversation - the "the first reply starts at the
9
- * bottom of the screen" report. The answer is conditional anchoring: top while the
10
- * content fits, so the conversation is written downwards from the region's top row
11
- * (`tui-header-leaks-into-scrollback` took the identity row off that row and put it
12
- * below the composer, so the first line of the band is now the first line of the screen).
13
- *
14
- * WHY THE FALLBACK IS `bottom` AND NOT THE OTHER WAY ROUND. `flex-start` inside an
15
- * `overflow="hidden"` box clips the NEWEST rows (Ink's clip rectangle is the box's
16
- * `[top, top + height]`), and a streaming entry is never printable
17
- * (`settled-boundary.ts` holds it unstable, and "printed is forever"). Overflowing to
18
- * `flex-start` would hide the text the user is waiting for; overflowing to `flex-end`
19
- * hides the oldest rows, which the tail window prints on its way out.
20
- *
21
- * THE THRESHOLD CARRIES A MARGIN. `rowOf` is an ESTIMATE, and the one available
22
- * (`layout/virtual-window.ts::estimateEntryRows`) under-counts a `#` heading and a code
23
- * block. The margin in `SCROLLBACK_LIMITS.tailAnchorSlackRows` absorbs that error on the
24
- * `bottom` side, the only direction that cannot clip something new.
25
- *
26
- * PURE: no Ink, no I/O, no clock, and deliberately no import of `virtual-window.ts` (its
27
- * import graph reaches a `.tsx` gutter). The row height is injected, so this stays three
28
- * parameters and a unit test can drive it with any table it likes.
29
- */
30
- import { SCROLLBACK_LIMITS } from './limits.js';
31
- /**
32
- * Which alignment the live tail should use for the entries it is about to render.
33
- *
34
- * @param entries The entries THIS FRAME renders (already windowed by `selectTailEntries`;
35
- * summing the whole conversation would make every session past the entry cap overflow and
36
- * anchor to the bottom forever).
37
- * @param budgetRows Height of the box that will clip them, in rows.
38
- * @param rowOf Estimated height of one entry, including its separation row.
39
- * @returns `top` when the estimates plus `tailAnchorSlackRows` fit in `budgetRows`,
40
- * `bottom` otherwise (and for the first entry that does not fit, so the loop stops early).
41
- */
42
- export function tailAnchor(entries, budgetRows, rowOf) {
43
- const budget = Number.isFinite(budgetRows) ? Math.max(0, Math.floor(budgetRows)) : 0;
44
- let rows = 0;
45
- for (const entry of entries) {
46
- rows += Math.max(0, rowOf(entry));
47
- if (rows + SCROLLBACK_LIMITS.tailAnchorSlackRows > budget)
48
- return 'bottom';
49
- }
50
- return 'top';
51
- }
52
- /**
53
- * The anchor this frame really uses: MEASURED when the measurement exists, estimated
54
- * otherwise.
55
- *
56
- * WHY A MEASURED ANSWER WINS (tui-final-reply-truncated-unscrollable). The estimate is an
57
- * upper bound that charges a separation row this renderer may not draw, so it can claim the
58
- * content overflows while it actually fits (the block sits at the bottom of a half-empty
59
- * box - the very complaint `tui-first-reply-bottom-aligned` answered) and it under-counts a
60
- * heading or a wrapped code block, so it can claim the content fits while the box is really
61
- * clipping. The second error is the expensive one now: "top give-way" only prints while the
62
- * box is bottom-anchored (that is the branch that clips the TOP), so a wrongly top-anchored
63
- * box would clip the newest rows and print the oldest ones - the wrong half, twice.
64
- *
65
- * A measured total is available only when every window entry is stable AND already measured
66
- * at the current geometry (`use-scrollback-view.ts` keeps that cache), which is exactly the
67
- * frame on which a print decision is being made. Every other frame - streaming, resize,
68
- * first sight of a new entry - falls back to the estimate, unchanged.
69
- *
70
- * @param measuredRows Measured height of the same entries, or `undefined` when unknown.
71
- */
72
- export function resolveTailAnchor(input) {
73
- const { entries, budgetRows, rowOf, measuredRows } = input;
74
- if (measuredRows === undefined || !Number.isFinite(measuredRows)) {
75
- return tailAnchor(entries, budgetRows, rowOf);
76
- }
77
- const budget = Number.isFinite(budgetRows) ? Math.max(0, Math.floor(budgetRows)) : 0;
78
- return measuredRows > budget ? 'bottom' : 'top';
79
- }
@@ -1,73 +0,0 @@
1
- /**
2
- * The TAIL WINDOW of the native-scroll live region
3
- * (tui-full-height-live-region D6 / D7, I-F8 / I-F9).
4
- *
5
- * WHAT CHANGED AND WHY. The region used to show only the entries the reducer had not
6
- * finished writing (`entries.slice(settledCount)`), and everything settled was printed
7
- * into the terminal's scrollback the moment it settled. Once the region is the WHOLE
8
- * screen (`liveRows = rows - 1`), a printed row is pushed off the top by the very next
9
- * frame, so "print on settle" would leave the user staring at a screen of blanks with
10
- * only the unfinished cards on it. So the region now shows the last `K` PRINTABLE
11
- * entries - settled or not - and an entry is printed when it LEAVES that window.
12
- *
13
- * The window is defined by ENTRY COUNT, never by measured height; what a single entry
14
- * taller than the region used to do is the whole subject of
15
- * `overflow-print.ts` (tui-final-reply-truncated-unscrollable). The box still clips it
16
- * from the top with `justifyContent="flex-end"`, but the rows it hides are now PRINTED
17
- * into the terminal's scrollback, where the wheel already reaches, instead of waiting for
18
- * `K` further entries (README, known limitation 2 - rewritten by that fix).
19
- *
20
- * PURE: no Ink, no I/O, no clock. `promote()` (the writer's only feeder) takes
21
- * `printBoundary`'s result and keeps its own `printed` authority, so "printed is
22
- * forward-only" (RV-7) is unchanged.
23
- *
24
- * PRINTABILITY != VISIBILITY. `isExcluded` entries (a non-terminal `service` card) never
25
- * print and never take a slot in the window; an entry that is in the window may still be
26
- * scrolled out of sight by a taller neighbour. That second gap is what the row-level plan
27
- * closes, and `/perf`'s `window=<start>/<n> head=<rows>` is how it stays observable.
28
- */
29
- import type { Entry } from '../../agent/reducer.js';
30
- /**
31
- * Entries that take NO slot in the window: they neither print nor take a row.
32
- *
33
- * A LIVE DISPATCH CARD JOINS THE NON-TERMINAL SERVICE CARD HERE
34
- * (tui-subagent-double-roster A-2'): the roster draws the live dispatch and the
35
- * transcript draws nothing, so the window must not spend one of its slots on an
36
- * entry that is not on screen. THE PRINT PUMP AND THE BOX MUST AGREE ABOUT SLOTS:
37
- * so both window functions below skip it, and `LiveTail.selectTailEntries` - the
38
- * window function the box renders - imports this one instead of spelling the
39
- * composition out a second time.
40
- */
41
- export declare function isSlotless(entry: Entry): boolean;
42
- export interface TailWindow {
43
- /** First index of the window inside the full entry list. */
44
- start: number;
45
- /** Entries inside the window, oldest first (excluded entries already dropped). */
46
- entries: readonly Entry[];
47
- }
48
- /**
49
- * The index of the first entry that is still on screen: count backwards up to
50
- * `maxEntries` PRINTABLE entries. Everything before it has left the region and is the
51
- * writer's business.
52
- *
53
- * `maxEntries <= 0` returns `entries.length` - an empty window, which is the old
54
- * behaviour ("everything printable may print") and the reason the guard is written as
55
- * an early return rather than as a loop bound.
56
- */
57
- export declare function tailWindowStart(entries: readonly Entry[], maxEntries: number): number;
58
- /** `entries.slice(start)` with the entries that never print dropped. */
59
- export declare function selectTailWindow(entries: readonly Entry[], maxEntries: number): TailWindow;
60
- /**
61
- * The print boundary: never print what the region is still showing.
62
- *
63
- * THIS IS THE ONLY PLACE THAT COMBINES "settled" WITH "in the window" (RV-P2-13), which
64
- * is why the composition lives here instead of at the pump: `promote()` must keep
65
- * receiving one number, and the two authorities it is derived from - `settledCount`
66
- * (what may print at all) and `tailWindowStart` (what is still visible) - then cannot
67
- * drift apart in a future edit.
68
- *
69
- * `settleAllEntries` is the OTHER authority, not a duplicate: it answers "what must be
70
- * printed when the conversation is being torn down", while this answers "how far may
71
- * this frame print".
72
- */
73
- export declare function printBoundary(entries: readonly Entry[], runActive: boolean, maxEntries: number): number;
@@ -1,89 +0,0 @@
1
- /**
2
- * The TAIL WINDOW of the native-scroll live region
3
- * (tui-full-height-live-region D6 / D7, I-F8 / I-F9).
4
- *
5
- * WHAT CHANGED AND WHY. The region used to show only the entries the reducer had not
6
- * finished writing (`entries.slice(settledCount)`), and everything settled was printed
7
- * into the terminal's scrollback the moment it settled. Once the region is the WHOLE
8
- * screen (`liveRows = rows - 1`), a printed row is pushed off the top by the very next
9
- * frame, so "print on settle" would leave the user staring at a screen of blanks with
10
- * only the unfinished cards on it. So the region now shows the last `K` PRINTABLE
11
- * entries - settled or not - and an entry is printed when it LEAVES that window.
12
- *
13
- * The window is defined by ENTRY COUNT, never by measured height; what a single entry
14
- * taller than the region used to do is the whole subject of
15
- * `overflow-print.ts` (tui-final-reply-truncated-unscrollable). The box still clips it
16
- * from the top with `justifyContent="flex-end"`, but the rows it hides are now PRINTED
17
- * into the terminal's scrollback, where the wheel already reaches, instead of waiting for
18
- * `K` further entries (README, known limitation 2 - rewritten by that fix).
19
- *
20
- * PURE: no Ink, no I/O, no clock. `promote()` (the writer's only feeder) takes
21
- * `printBoundary`'s result and keeps its own `printed` authority, so "printed is
22
- * forward-only" (RV-7) is unchanged.
23
- *
24
- * PRINTABILITY != VISIBILITY. `isExcluded` entries (a non-terminal `service` card) never
25
- * print and never take a slot in the window; an entry that is in the window may still be
26
- * scrolled out of sight by a taller neighbour. That second gap is what the row-level plan
27
- * closes, and `/perf`'s `window=<start>/<n> head=<rows>` is how it stays observable.
28
- */
29
- import { isExcluded, settledCount } from './settled-boundary.js';
30
- import { isLiveTeamCard } from '../team-status.js';
31
- /**
32
- * Entries that take NO slot in the window: they neither print nor take a row.
33
- *
34
- * A LIVE DISPATCH CARD JOINS THE NON-TERMINAL SERVICE CARD HERE
35
- * (tui-subagent-double-roster A-2'): the roster draws the live dispatch and the
36
- * transcript draws nothing, so the window must not spend one of its slots on an
37
- * entry that is not on screen. THE PRINT PUMP AND THE BOX MUST AGREE ABOUT SLOTS:
38
- * so both window functions below skip it, and `LiveTail.selectTailEntries` - the
39
- * window function the box renders - imports this one instead of spelling the
40
- * composition out a second time.
41
- */
42
- export function isSlotless(entry) {
43
- return isExcluded(entry) || isLiveTeamCard(entry);
44
- }
45
- /**
46
- * The index of the first entry that is still on screen: count backwards up to
47
- * `maxEntries` PRINTABLE entries. Everything before it has left the region and is the
48
- * writer's business.
49
- *
50
- * `maxEntries <= 0` returns `entries.length` - an empty window, which is the old
51
- * behaviour ("everything printable may print") and the reason the guard is written as
52
- * an early return rather than as a loop bound.
53
- */
54
- export function tailWindowStart(entries, maxEntries) {
55
- const limit = Number.isFinite(maxEntries) ? Math.floor(maxEntries) : 0;
56
- if (limit <= 0)
57
- return entries.length;
58
- let seen = 0;
59
- for (let i = entries.length - 1; i >= 0; i -= 1) {
60
- if (isSlotless(entries[i]))
61
- continue;
62
- seen += 1;
63
- if (seen === limit)
64
- return i;
65
- }
66
- // Fewer printable entries than the window holds: the whole conversation is on screen.
67
- return 0;
68
- }
69
- /** `entries.slice(start)` with the entries that never print dropped. */
70
- export function selectTailWindow(entries, maxEntries) {
71
- const start = tailWindowStart(entries, maxEntries);
72
- return { start, entries: entries.slice(start).filter((entry) => !isSlotless(entry)) };
73
- }
74
- /**
75
- * The print boundary: never print what the region is still showing.
76
- *
77
- * THIS IS THE ONLY PLACE THAT COMBINES "settled" WITH "in the window" (RV-P2-13), which
78
- * is why the composition lives here instead of at the pump: `promote()` must keep
79
- * receiving one number, and the two authorities it is derived from - `settledCount`
80
- * (what may print at all) and `tailWindowStart` (what is still visible) - then cannot
81
- * drift apart in a future edit.
82
- *
83
- * `settleAllEntries` is the OTHER authority, not a duplicate: it answers "what must be
84
- * printed when the conversation is being torn down", while this answers "how far may
85
- * this frame print".
86
- */
87
- export function printBoundary(entries, runActive, maxEntries) {
88
- return Math.min(settledCount(entries, runActive), tailWindowStart(entries, maxEntries));
89
- }
@@ -1,139 +0,0 @@
1
- /**
2
- * `useScrollbackView` — the promotion pipeline of native-scroll mode
3
- * (tui-native-terminal-scroll §4.4 / §6.2, tui-full-height-live-region D3/D4/D7/D8,
4
- * tui-final-reply-truncated-unscrollable A-prime).
5
- *
6
- * `App` calls it ALWAYS (hooks cannot be conditional); `enabled: false` makes every
7
- * effect a no-op and keeps `scrollMode: 'app'` byte-identical to the pre-feature
8
- * build (I-S9 / I-F10).
9
- *
10
- * What it does when enabled:
11
- * 1. On every entries change, promotes each entry that has LEFT THE TAIL WINDOW:
12
- * renders it once through the offscreen renderer and enqueues the rows for the
13
- * writer. Entries still on screen are never printed - at `H = rows - 1` a printed
14
- * row is pushed back off the top by the next frame, and a second copy in the
15
- * scrollback would be a duplicate the user meets by scrolling up (I-F8).
16
- * 2. Gives way at the TOP (tui-final-reply-truncated-unscrollable). The window is still
17
- * counted in ENTRIES, so a settled answer taller than the box used to sit inside the
18
- * window forever, clipped by `justifyContent="flex-end"`, in a mode whose wheel only
19
- * scrolls the terminal's scrollback: the clipped rows existed nowhere the user could
20
- * reach. The rows the box hides are now measured (`overflow-print.ts`) and printed, so
21
- * `scrollback + screen` covers every row exactly once. Screen unchanged, reachability
22
- * fixed.
23
- * 3. Computes the live-region budget, the window and the tail rows for the shell.
24
- * 4. Flushes the window before either reset path (`/clear`, `--resume`) and on exit,
25
- * so "on screen but not printed yet" can never become "lost" (D8 / I-F12).
26
- *
27
- * THE HEADER AND THE OPENER ARE NOT PRINTED HERE ANY MORE (D3/D4). They are slots of
28
- * `ScrollbackShell` now, rendered inside the region: `H = rows - 1` means any printed
29
- * row is immediately scrolled off the screen, so printing the banner would be the same
30
- * as not drawing it. Their `renderNode` path, the `startedRef` latch that kept their
31
- * element identities stable, and the `printBanner()` call in `settleAll()` are gone.
32
- *
33
- * THE PROMOTION RUNS IN A MICROTASK, NOT IN THE EFFECT. The offscreen renderer is a
34
- * second Ink instance, and both instances share one React reconciler. A `rerender`
35
- * issued from inside the main tree's commit (a layout effect) is deferred until that
36
- * commit finishes, so its frame would not exist when the effect reads it. A microtask
37
- * runs after the commit has unwound, where the offscreen render is synchronous again.
38
- *
39
- * THE PASS READS THE COMMITTED FRAME, NOT THE LATEST RENDER. `latest` is refreshed during
40
- * render, so it can be a frame ahead of the screen; `committed` is written by a layout
41
- * effect and therefore describes exactly the frame the user is looking at. With
42
- * entry-granular bookkeeping the difference was harmless (printing was idempotent per
43
- * entry); with ROW-granular bookkeeping it would slice this frame's picture with another
44
- * frame's row numbers, and the result is a duplicate or a hole.
45
- *
46
- * `printed` is the ONLY authority on "already printed" (RV-7): a `Map` from entry id to
47
- * the leading rows already handed to the writer, and the width they were measured at. The
48
- * cursor is just a hint for where to resume scanning: entries leave the list by retain-ring
49
- * trimming AND by reducer deletion (empty settled assistants, abandoned tool cards), so an
50
- * id-keyed cursor can dangle, and then the only correct answer is to rescan and let
51
- * `printed` skip.
52
- */
53
- import type { Entry } from '../../agent/reducer.js';
54
- import type { TermCapabilities } from '../capabilities.js';
55
- import type { DensityMode } from '../density.js';
56
- import type { Theme } from '../theme.js';
57
- import { type ScrollbackBudget } from './budget.js';
58
- import type { ScrollbackDrain } from './drain.js';
59
- import type { ScrollbackWriter } from './scrollback-writer.js';
60
- /** The channel between `cli.tsx` (which owns the stream) and the React tree. */
61
- export interface ScrollbackBridge {
62
- writer: ScrollbackWriter;
63
- drain: ScrollbackDrain;
64
- /** Installed by `cli.tsx`: schedule `writer.repaint()` soon. */
65
- requestFlush: () => void;
66
- /**
67
- * Installed by the hook on mount (reads the latest entries through a ref).
68
- * `restore()` calls it on every exit path; it is idempotent through `printed`
69
- * and it releases the offscreen renderer when done.
70
- */
71
- settleAllNow: () => void;
72
- /** Installed by `App`; at most `exitSummaryMaxRows` rows. Wrapped in try/catch by the caller. */
73
- getSummaryRows: () => readonly string[];
74
- /** Installed by `App`: the writer swallowed repeated tall frames (degrade to the placeholder). */
75
- onGuardTrip: (() => void) | null;
76
- }
77
- export declare function createScrollbackBridge(parts: Pick<ScrollbackBridge, 'writer' | 'drain'> & {
78
- requestFlush?: () => void;
79
- }): ScrollbackBridge;
80
- export type ScrollbackResetKind = 'clear' | 'restore';
81
- export interface UseScrollbackViewArgs {
82
- /** `scrollMode === 'native'`. */
83
- enabled: boolean;
84
- bridge: ScrollbackBridge | undefined;
85
- entries: readonly Entry[];
86
- runActive: boolean;
87
- theme: Theme;
88
- caps: TermCapabilities;
89
- density: DensityMode;
90
- thinkingVisible: boolean;
91
- reducedMotion: boolean;
92
- /** Terminal size. */
93
- rows: number;
94
- cols: number;
95
- overlayOpen: boolean;
96
- draftRows: number;
97
- popupRows: number;
98
- statusExpanded: boolean;
99
- /** Degrade the region to the placeholder (the writer's tall-frame guard tripped). */
100
- forceInactive?: boolean;
101
- /** `state.todos.items.length` - 0 means there is no plan, so the rail has no work to show. */
102
- itemCount: number;
103
- /** `cfg.todo.panel`: the user can switch the rail off entirely. */
104
- panelEnabled: boolean;
105
- /** `buildTeamPanelLayout().rowCount`; 0 when nothing is dispatched. */
106
- teamRowsNatural: number;
107
- /**
108
- * `state.expandedToolIds` - REQUIRED, because the height of a window entry depends on it
109
- * and a forgotten value would measure an expansion the region is not drawing.
110
- */
111
- expandedToolIds: Record<string, true>;
112
- }
113
- export interface ScrollbackView {
114
- budget: ScrollbackBudget | null;
115
- liveTailLines: string[];
116
- /**
117
- * The entries the region is showing, in order (excluded kinds already dropped).
118
- * `windowStart` is their index in the full list - together they are what `/perf`
119
- * reports as `window=<start>/<n>`, the number that makes the "visible vs printable"
120
- * gap observable instead of a guess (known limitation 5).
121
- */
122
- tailEntries: readonly Entry[];
123
- windowStart: number;
124
- /**
125
- * Measured height of `tailEntries`, once every one of them is stable AND measured at the
126
- * current geometry; `undefined` otherwise. `LiveTail` prefers it over the estimate - see
127
- * `tail-anchor.ts::resolveTailAnchor` for why the measured answer has to win.
128
- */
129
- measuredTailRows: number | undefined;
130
- /** Rows the top give-way has printed this session; `/perf`'s `head=`. */
131
- headRows: number;
132
- /** Print a fresh EXPANDED copy of an entry; false when it cannot be found / rendered. */
133
- reprintExpanded(entryId: string): boolean;
134
- /** Promote everything still unprinted (shutdown) - `flushUnprinted(latest entries)`. */
135
- settleAll(): void;
136
- /** Called by `App`'s dispatch wrapper BEFORE a reset action reaches the reducer. */
137
- notifyReset(kind: ScrollbackResetKind): void;
138
- }
139
- export declare function useScrollbackView(args: UseScrollbackViewArgs): ScrollbackView;