@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,115 +0,0 @@
1
- /**
2
- * LiveTail - the band's TAIL WINDOW, rendered with the real entry components
3
- * (release-gate-and-native-panels §6.5, tui-full-height-live-region D6).
4
- *
5
- * WHY THIS FILE EXISTS. Native scroll mode cannot print an entry until it settles, so
6
- * the live region used to show `buildLivePreview`'s plain-text projection - and for a
7
- * running dispatch that projection was four grey rows saying `Team: 2/4 running`. It
8
- * was the "simple look" the feature was opened for. A text-only region can never fix
9
- * it, which is why the region's content type changed from `readonly string[]` to a
10
- * fixed-height box that can hold components.
11
- *
12
- * IT SHOWS THE CONVERSATION, NOT JUST THE UNFINISHED PART (D6/D7). The input used to be
13
- * `entries.slice(settledCount)` - the entries the reducer had not finished writing -
14
- * because everything settled was printed into the scrollback immediately. Now the region
15
- * is the whole screen, `H = rows - 1`, so a printed row is pushed off the top by the next
16
- * frame; the region therefore holds the last `SCROLLBACK_LIMITS.liveTailMaxEntries`
17
- * PRINTABLE entries, settled or not, and an entry is printed when it LEAVES that window.
18
- * The window is `tail-window.ts`'s definition; this component only slides it over the
19
- * list and lets the fixed-height box clip from the top when it overflows.
20
- *
21
- * IT RENDERS `EntryView` AND NOTHING ELSE. The mapping from an entry to its component
22
- * (`assistant` / `tool` / `team` / `todo` / service cards, notice frames, the `null`
23
- * cases) lives in `Transcript.tsx` exactly once, together with `EntryFrame`'s gutter,
24
- * the separation rows, the per-entry `nowSecFor` clock and the memo comparator. A
25
- * second enumeration here would be a copy that drifts: the band's cards would lose the
26
- * left rail glyph and the transcript's would keep it, and the two halves of one screen
27
- * would disagree about the same entry.
28
- *
29
- * TOP-ANCHORED WHILE THE CONTENT FITS, BOTTOM-ANCHORED WHEN IT DOES NOT
30
- * (tui-first-reply-bottom-aligned, plan A-prime). A constant `flex-end` is what a user
31
- * reports as "the first reply shows up at the bottom": the box is always the whole pool,
32
- * so a four-row first turn was pushed against the composer and every unused row sat ABOVE
33
- * the conversation. `tailAnchor` therefore sums the estimated height of exactly the
34
- * entries this frame renders and asks for `flex-start` while they fit - the conversation
35
- * is then written downwards from the region's top row, the way a terminal writes. (That row
36
- * belongs to the band: `tui-header-leaks-into-scrollback` moved the identity row below the
37
- * composer, so nothing sits between the newest printed row and the first row of the tail.)
38
- *
39
- * THE OVERFLOW FRAME STAYS `flex-end`, AND THAT IS THE OTHER HALF OF THE FIX.
40
- * `flex-start` PLUS `overflow="hidden"` clips the NEWEST rows (Ink's clip rectangle is
41
- * the box's own `[top, top + height]`), and a streaming entry can never be printed into
42
- * the scrollback to make up for it (`settled-boundary.ts` holds it unstable, and printed
43
- * rows are permanent). `flex-end` clips the OLDEST rows instead, which is the promise
44
- * `scrollback/canvas.ts` makes about the live tail: the newest line always sits against
45
- * the composer. Those clipped rows are what `overflow-print.ts` prints, which is why the
46
- * branch has to be `bottom` before anything is printed - and why `measuredRows` exists.
47
- *
48
- * THE SWITCH COSTS ONE DOWNWARD MOVE ON A STREAMING FRAME, AND IT IS NOT FREE. The two
49
- * branches are only pixel-identical where the content EXACTLY fills the box, and the
50
- * estimate cannot know that: `estimateEntryRows` charges every entry a separation row while
51
- * `density.ts::separationRows` only draws one above a `user` entry, so the frame that
52
- * flips is still a few rows short of the box and the block drops by those rows once -
53
- * three on a 30-row terminal (the margin plus that over-count) - before it starts
54
- * scrolling up a row per line. Accepted and pinned by
55
- * `scrollback-first-reply-anchor.test.tsx`: anchoring to the top until the content
56
- * really fills the box is exactly the frame that clips the newest row, and measuring the
57
- * box every frame is the cost plan A-prime exists to avoid.
58
- *
59
- * A SETTLED WINDOW IS MEASURED ANYWAY, so the move is exact there (`measuredRows`).
60
- * `use-scrollback-view.ts` has to measure the window to decide what the box hides, and
61
- * `resolveTailAnchor` lets that measurement decide the anchor: `flex-end` exactly when the
62
- * content is taller than the box. So the glitch above survives only on frames where no
63
- * measurement exists yet - every streaming frame, i.e. exactly the case the pin covers.
64
- *
65
- * BOUNDED: at most `SCROLLBACK_LIMITS.liveTailMaxEntries` component instances per frame
66
- * (I-10). That is what keeps the per-frame cost the same order as the full-screen live
67
- * tail; growing it makes the cost grow linearly because this box has no windowing.
68
- */
69
- import React from 'react';
70
- import type { Entry } from '../../agent/reducer.js';
71
- import type { TermCapabilities } from '../capabilities.js';
72
- import type { DensityMode } from '../density.js';
73
- import type { Theme } from '../theme.js';
74
- export interface LiveTailProps {
75
- /**
76
- * The whole entry list (settled and unfinished alike); the window is taken here.
77
- * Callers must not pre-slice it: `prev` has to come from the same list the transcript
78
- * draws, or the top card of the band loses the separator row it has upstairs.
79
- */
80
- entries: readonly Entry[];
81
- /** Render only the last N entries; the box clips the older ones from the top. */
82
- maxEntries: number;
83
- /** Fixed height: the root box's `height`. The content never decides it (I-4). */
84
- rows: number;
85
- /** `budget.previewCols` - the width left after the rail took its column (I-5). */
86
- cols: number;
87
- expandedToolIds: Record<string, true>;
88
- thinkingVisible: boolean;
89
- reducedMotion: boolean;
90
- density: DensityMode;
91
- nowSec?: number;
92
- theme: Theme;
93
- caps: TermCapabilities;
94
- /**
95
- * Measured height of exactly the entries this frame renders, when the owner of the
96
- * measurement (`use-scrollback-view.ts`) has it. It decides the anchor INSTEAD of the
97
- * estimate - see `resolveTailAnchor`. `undefined` on every frame without a full
98
- * measurement, which is every streaming frame: the estimate then decides, as before.
99
- */
100
- measuredRows?: number;
101
- }
102
- export interface TailEntry {
103
- entry: Entry;
104
- /** The entry before it in the passed list: `EntryView` decides the separator from it. */
105
- prev: Entry | undefined;
106
- }
107
- /**
108
- * The last `maxEntries` printable entries, each with its predecessor.
109
- *
110
- * `prev` must come from the same COMPLETE list rather than from the truncated slice, or
111
- * the first rendered entry would look like the head of the conversation and drop the
112
- * separation row the transcript shows above the same card.
113
- */
114
- export declare function selectTailEntries(entries: readonly Entry[], maxEntries: number): readonly TailEntry[];
115
- export declare function LiveTail({ entries, maxEntries, rows, cols, expandedToolIds, thinkingVisible, reducedMotion, density, nowSec, theme, caps, measuredRows, }: LiveTailProps): React.ReactElement;
@@ -1,48 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { Box } from 'ink';
3
- import { EntryView, nowSecFor } from '../Transcript.js';
4
- import { estimateEntryRows } from '../layout/virtual-window.js';
5
- import { SCROLLBACK_LIMITS } from './limits.js';
6
- import { isSlotless } from './tail-window.js';
7
- import { resolveTailAnchor } from './tail-anchor.js';
8
- /**
9
- * The last `maxEntries` printable entries, each with its predecessor.
10
- *
11
- * `prev` must come from the same COMPLETE list rather than from the truncated slice, or
12
- * the first rendered entry would look like the head of the conversation and drop the
13
- * separation row the transcript shows above the same card.
14
- */
15
- export function selectTailEntries(entries, maxEntries) {
16
- // A LIVE DISPATCH CARD TAKES NO SLOT (tui-subagent-double-roster A-2): the roster
17
- // draws it and `EntryView` returns null for it, so the window must not spend one of
18
- // its slots on an entry that is not on screen. `isSlotless` is `tail-window.ts`'s
19
- // predicate - the one `selectTailWindow` and the print pump apply - so the box and
20
- // `planOverflowPrint` cannot drift into different windows.
21
- const printable = entries.filter((entry) => !isSlotless(entry));
22
- const limit = Number.isFinite(maxEntries) ? Math.max(0, Math.floor(maxEntries)) : 0;
23
- if (limit === 0)
24
- return [];
25
- const start = Math.max(0, printable.length - limit);
26
- const selected = [];
27
- for (let index = start; index < printable.length; index += 1) {
28
- selected.push({
29
- entry: printable[index],
30
- prev: index > 0 ? printable[index - 1] : undefined,
31
- });
32
- }
33
- return selected;
34
- }
35
- export function LiveTail({ entries, maxEntries, rows, cols, expandedToolIds, thinkingVisible, reducedMotion, density, nowSec, theme, caps, measuredRows, }) {
36
- const limited = Math.min(maxEntries, SCROLLBACK_LIMITS.liveTailMaxEntries);
37
- const selected = selectTailEntries(entries, limited);
38
- // `estimateEntryRows` is the estimate the transcript's virtual window already uses, so
39
- // the anchor can never disagree with the height the rest of the interface plans for.
40
- const estimateRows = (entry) => estimateEntryRows(entry, cols, density, expandedToolIds[entry.id] === true, thinkingVisible);
41
- const anchor = resolveTailAnchor({
42
- entries: selected.map((tailEntry) => tailEntry.entry),
43
- budgetRows: rows,
44
- rowOf: estimateRows,
45
- measuredRows,
46
- });
47
- return (_jsx(Box, { flexDirection: "column", height: rows, width: cols, justifyContent: anchor === 'top' ? 'flex-start' : 'flex-end', flexShrink: 0, overflow: "hidden", children: selected.map(({ entry, prev }) => (_jsx(EntryView, { entry: entry, prev: prev, expanded: expandedToolIds[entry.id] === true, thinkingVisible: thinkingVisible, reducedMotion: reducedMotion, density: density, nowSec: nowSecFor(entry, nowSec), theme: theme, caps: caps }, entry.id))) }));
48
- }
@@ -1,114 +0,0 @@
1
- /**
2
- * Height and column budget of the native-scroll PANEL BAND
3
- * (release-gate-and-native-panels §6.2, tui-full-height-live-region D5).
4
- *
5
- * Native scroll mode drops the fixed frame, so it used to drop the panels with it:
6
- * the TODO rail lived in `AppShell`'s middle band and the subagent roster in the
7
- * viewport footer, and neither is rendered once `ScrollbackShell` takes over. The
8
- * band is the replacement - one row pool shared by the roster (`TeamPanel`), the tail
9
- * and the rail (`TodoPanel`), sitting directly above the composer.
10
- *
11
- * `fill` IS THE FEATURE (D5). In `fill` mode the band takes the WHOLE pool:
12
- * `bandRows = remaining`, `railRows = bandRows` (so the rail spans every row the user
13
- * can see) and `previewRows = bandRows - teamRows` (so the tail column ends against
14
- * the composer). Before `fill`, the band asked for "just enough" rows and every row it
15
- * did not ask for became the canvas `gap` - the blank band between the result and the
16
- * running card that this feature removes.
17
- *
18
- * PURE: no Ink, no clock, no terminal, no config read. Every invariant below is
19
- * therefore established BY CONSTRUCTION for all input combinations and can be
20
- * enumerated by a property test (AC-9..AC-14, AC-34, AC-F3/F4):
21
- *
22
- * - `bandRows <= remaining` and therefore `liveRows <= rows - 1` (I-4). Ink writes
23
- * `clearTerminal` - which contains `ESC[3J`, erasing the user's scrollback - as
24
- * soon as a frame is as tall as the terminal.
25
- * - `previewCols + railCols === contentCols`, always (AC-10). The rail is a column
26
- * INSIDE the region, so the preview loses exactly the columns the rail takes and
27
- * nothing else (I-5: printing keeps the full `contentCols`).
28
- * - `teamRows > 0` leaves room for the rail plus one preview row (AC-12).
29
- * - `fill` mode: `bandRows === remaining`, `railRows === bandRows` when the rail is
30
- * visible, and `teamRows + previewRows === bandRows`.
31
- *
32
- * THERE IS EXACTLY ONE CALL SITE: `buildScrollbackBudget` (I-8). This module is
33
- * exported so it can be tested, not so a second caller can allocate rows of its own
34
- * - `remaining` is computed there, and a second copy of it is a second authority.
35
- */
36
- export type BandReason =
37
- /** Both panels are on screen. */
38
- 'visible'
39
- /** No active plan: no rail. Same name and meaning as `TodoRailLayout`'s `'empty'`. */
40
- | 'empty'
41
- /** `cfg.todo.panel === false`. */
42
- | 'disabled'
43
- /** An overlay is open: the band yields to it. */
44
- | 'overlay'
45
- /** `todoRailWidth(contentCols) === 0` (terminal narrower than 76 columns). */
46
- | 'narrow'
47
- /** The remaining rows cannot hold `panelMinRows` for the rail. */
48
- | 'short';
49
- export interface LiveBandInput {
50
- /**
51
- * `buildFrameBudget().viewportRows`: every row the band may use (the pool). Computed
52
- * once by `buildScrollbackBudget`; callers must not re-derive it.
53
- */
54
- remaining: number;
55
- /** `cols - 1`: width of the whole band. `previewCols` is derived from it. */
56
- contentCols: number;
57
- /** `todoRailWidth(contentCols)`; `layout/rail.ts` stays the width authority. */
58
- railCols: number;
59
- /** `state.todos.items.length` (0 = no active plan). */
60
- itemCount: number;
61
- /** `cfg.todo.panel`. */
62
- panelEnabled: boolean;
63
- overlayOpen: boolean;
64
- /** `buildTeamPanelLayout().rowCount`; 0 when there is nothing to show. */
65
- teamRowsNatural: number;
66
- /** Hysteresis: the rail rows the previous frame already used. */
67
- heldRailRows: number;
68
- /** Hysteresis: the roster rows the previous frame already used. */
69
- heldTeamRows: number;
70
- /**
71
- * The band takes the whole pool (native mode: always true, set by the budget).
72
- *
73
- * A plain boolean rather than "absence of a cap" because the difference is semantic:
74
- * with `fill` the allocation is INDEPENDENT of the content (which is what makes the
75
- * region the screen), while without it the band is sized to what it has to show.
76
- */
77
- fill: boolean;
78
- }
79
- export interface LiveBand {
80
- reason: BandReason;
81
- /** Band height: `remaining` in `fill` mode, `teamRows + previewRows` otherwise. */
82
- bandRows: number;
83
- teamRows: number;
84
- previewRows: number;
85
- /** Row budget of the rail: the whole band (the rail spans it). 0 when hidden. */
86
- railRows: number;
87
- /** The input `railCols` when visible, 0 when hidden (`/perf` reads `rail=0x0`). */
88
- railCols: number;
89
- /** `max(0, contentCols - railCols)`; always sums with `railCols` to `contentCols`. */
90
- previewCols: number;
91
- /** Hysteresis output, fed back on the next frame. */
92
- heldRailRows: number;
93
- heldTeamRows: number;
94
- }
95
- /**
96
- * Allocate the band. THE ORDER OF THE STEPS IS THE SPECIFICATION - reordering them
97
- * changes the priority between "what this run is doing" (rail + roster) and "the
98
- * words arriving right now" (tail), which is a product decision, not a detail.
99
- *
100
- * 0. Normalise every numeric input (`NaN` / `Infinity` / negatives become 0).
101
- * 1. An open overlay takes the whole pool (the band would otherwise double-count it).
102
- * 2. Seat the roster first, but never at the cost of the rail plus one tail row:
103
- * a dispatch is transient, the plan is the shape of the turn, both must fit.
104
- * 3. Decide the rail's visibility, in the same reason order as `buildTodoRailLayout`.
105
- * 4. RESERVE the rail's rows - only when the band is NOT filling. `fill` derives
106
- * `railRows` from `bandRows` in step 7, so the reservation has no consumer there.
107
- * 5. The tail takes what is left: the whole column in `fill` mode, `previewWanted`
108
- * clamped by the pool otherwise.
109
- * 6. `bandRows`: the pool in `fill` mode, `max(railReserved, teamRows + previewRows)`
110
- * otherwise (where a rail must still be there with no tail rows).
111
- * 7. Columns: the input `contentCols` is the only width authority.
112
- * 8. Hand the late-arriving values (the hysteresis) back out for the next frame.
113
- */
114
- export declare function buildLiveBand(input: LiveBandInput): LiveBand;
@@ -1,143 +0,0 @@
1
- /**
2
- * Height and column budget of the native-scroll PANEL BAND
3
- * (release-gate-and-native-panels §6.2, tui-full-height-live-region D5).
4
- *
5
- * Native scroll mode drops the fixed frame, so it used to drop the panels with it:
6
- * the TODO rail lived in `AppShell`'s middle band and the subagent roster in the
7
- * viewport footer, and neither is rendered once `ScrollbackShell` takes over. The
8
- * band is the replacement - one row pool shared by the roster (`TeamPanel`), the tail
9
- * and the rail (`TodoPanel`), sitting directly above the composer.
10
- *
11
- * `fill` IS THE FEATURE (D5). In `fill` mode the band takes the WHOLE pool:
12
- * `bandRows = remaining`, `railRows = bandRows` (so the rail spans every row the user
13
- * can see) and `previewRows = bandRows - teamRows` (so the tail column ends against
14
- * the composer). Before `fill`, the band asked for "just enough" rows and every row it
15
- * did not ask for became the canvas `gap` - the blank band between the result and the
16
- * running card that this feature removes.
17
- *
18
- * PURE: no Ink, no clock, no terminal, no config read. Every invariant below is
19
- * therefore established BY CONSTRUCTION for all input combinations and can be
20
- * enumerated by a property test (AC-9..AC-14, AC-34, AC-F3/F4):
21
- *
22
- * - `bandRows <= remaining` and therefore `liveRows <= rows - 1` (I-4). Ink writes
23
- * `clearTerminal` - which contains `ESC[3J`, erasing the user's scrollback - as
24
- * soon as a frame is as tall as the terminal.
25
- * - `previewCols + railCols === contentCols`, always (AC-10). The rail is a column
26
- * INSIDE the region, so the preview loses exactly the columns the rail takes and
27
- * nothing else (I-5: printing keeps the full `contentCols`).
28
- * - `teamRows > 0` leaves room for the rail plus one preview row (AC-12).
29
- * - `fill` mode: `bandRows === remaining`, `railRows === bandRows` when the rail is
30
- * visible, and `teamRows + previewRows === bandRows`.
31
- *
32
- * THERE IS EXACTLY ONE CALL SITE: `buildScrollbackBudget` (I-8). This module is
33
- * exported so it can be tested, not so a second caller can allocate rows of its own
34
- * - `remaining` is computed there, and a second copy of it is a second authority.
35
- */
36
- import { TODO_LIMITS } from '../../todo/limits.js';
37
- import { SCROLLBACK_LIMITS } from './limits.js';
38
- /** Invalid geometry becomes zero, exactly like `layout/team-panel.ts::nonNegativeInt`. */
39
- function nonNegativeInt(value) {
40
- return Number.isFinite(value) ? Math.max(0, Math.floor(value)) : 0;
41
- }
42
- /**
43
- * Allocate the band. THE ORDER OF THE STEPS IS THE SPECIFICATION - reordering them
44
- * changes the priority between "what this run is doing" (rail + roster) and "the
45
- * words arriving right now" (tail), which is a product decision, not a detail.
46
- *
47
- * 0. Normalise every numeric input (`NaN` / `Infinity` / negatives become 0).
48
- * 1. An open overlay takes the whole pool (the band would otherwise double-count it).
49
- * 2. Seat the roster first, but never at the cost of the rail plus one tail row:
50
- * a dispatch is transient, the plan is the shape of the turn, both must fit.
51
- * 3. Decide the rail's visibility, in the same reason order as `buildTodoRailLayout`.
52
- * 4. RESERVE the rail's rows - only when the band is NOT filling. `fill` derives
53
- * `railRows` from `bandRows` in step 7, so the reservation has no consumer there.
54
- * 5. The tail takes what is left: the whole column in `fill` mode, `previewWanted`
55
- * clamped by the pool otherwise.
56
- * 6. `bandRows`: the pool in `fill` mode, `max(railReserved, teamRows + previewRows)`
57
- * otherwise (where a rail must still be there with no tail rows).
58
- * 7. Columns: the input `contentCols` is the only width authority.
59
- * 8. Hand the late-arriving values (the hysteresis) back out for the next frame.
60
- */
61
- export function buildLiveBand(input) {
62
- const remaining = nonNegativeInt(input.remaining);
63
- const contentCols = nonNegativeInt(input.contentCols);
64
- const railCols = nonNegativeInt(input.railCols);
65
- const itemCount = nonNegativeInt(input.itemCount);
66
- const teamRowsNatural = nonNegativeInt(input.teamRowsNatural);
67
- const heldRailRows = nonNegativeInt(input.heldRailRows);
68
- const heldTeamRows = nonNegativeInt(input.heldTeamRows);
69
- const fill = input.fill === true;
70
- if (input.overlayOpen) {
71
- return {
72
- reason: 'overlay', bandRows: remaining, teamRows: 0, previewRows: 0,
73
- railRows: 0, railCols: 0, previewCols: contentCols, heldRailRows: 0, heldTeamRows: 0,
74
- };
75
- }
76
- const teamCeiling = Math.min(teamRowsNatural, Math.max(0, remaining - TODO_LIMITS.panelMinRows - 1));
77
- // THE ROSTER IS SEATED AT ITS NATURAL (CLAMPED) HEIGHT, NOT AT THE REMEMBERED ONE.
78
- // Seeding from `heldTeamRows` deadlocks the panel: a fresh dispatch starts with no
79
- // memory, so frame one would seat zero rows, remember zero, and no later frame could
80
- // ever seat the roster - the panel this feature exists to restore would never appear
81
- // (found while implementing; recorded as IF-1 in the spec). The memory below only
82
- // ever ADDS height back after a squeeze; it never withholds it.
83
- //
84
- // THE FLOOR SURVIVES `fill` ON PURPOSE (spec §5.3.2; RV-P2-5, recorded as not changed
85
- // back). It holds 4 rows back from the roster even when the rail is not drawn, which
86
- // looks like waste in `fill` mode - but it is the vetted `AC-12` behaviour, and
87
- // `TodoPanel`'s 3-5 row compact form needs those rows to name the running item. The
88
- // only visible cost is 4 blank rows at the TOP of the left column (the tail still
89
- // ends against the composer), which is not one of the three reported defects; changing
90
- // it here would reopen a different feature in the same commit.
91
- const teamRows = teamCeiling;
92
- const reason = !input.panelEnabled ? 'disabled'
93
- : itemCount === 0 ? 'empty'
94
- : railCols === 0 ? 'narrow'
95
- : remaining - teamRows < SCROLLBACK_LIMITS.railBandMinRows ? 'short'
96
- : 'visible';
97
- const railVisible = reason === 'visible';
98
- // NO CONSUMER IN `fill` MODE (step 7 derives `railRows` from `bandRows`); kept as the
99
- // documented historical formula so the non-fill allocation stays readable and a future
100
- // caller that does not fill cannot silently lose the rail's reservation.
101
- const railReserved = railVisible && !fill
102
- ? Math.min(Math.max(heldRailRows, TODO_LIMITS.panelFullRows), Math.max(0, remaining - teamRows - 1))
103
- : 0;
104
- const previewRows = fill
105
- ? Math.max(0, remaining - teamRows)
106
- // Non-fill: the tail takes what the rail's reservation leaves. The two row caps that
107
- // used to clamp this line (`previewCap` / `previewWanted`) are RETIRED (D9) - they
108
- // were the only inputs that made this branch differ from `fill`, so a non-fill caller
109
- // now gets the pool too. The branch stays as the named expression of the older policy.
110
- : Math.max(0, remaining - teamRows - railReserved);
111
- const bandRows = fill ? remaining : Math.max(railReserved, teamRows + previewRows);
112
- // THE RAIL NO LONGER OWNS THE BAND'S FULL HEIGHT WHEN A ROSTER IS DRAWN
113
- // (tui-subagent-panel §4.1.2 / D-3). The roster is now a FULL-WIDTH slot below
114
- // the rail's row region, so the two no longer overlap: the rail gets exactly the
115
- // rows the roster does not take. With no roster this is `bandRows`, i.e.
116
- // byte-identical to the previous behaviour (I-6).
117
- //
118
- // I-6a, WHY THIS CANNOT STARVE THE RAIL: `teamRows <= teamCeiling =
119
- // min(teamRowsNatural, remaining - panelMinRows - 1)` (step 2 above) and in
120
- // `fill` mode `bandRows === remaining`, so `railRows >= panelMinRows + 1 = 4`.
121
- // Four satisfies both `TODO_LIMITS.panelMinRows(3)` (the rail stays mounted) and
122
- // `SCROLLBACK_LIMITS.railBandMinRows(4)` (the band still reports
123
- // `reason === 'visible'`). The price of a screen-right clock is a SHORTER rail
124
- // during a dispatch, never a missing one - see §4.1.4's worked example.
125
- const railRows = railVisible ? Math.max(0, bandRows - teamRows) : 0;
126
- const railColsOut = railVisible ? railCols : 0;
127
- return {
128
- reason,
129
- bandRows,
130
- teamRows,
131
- previewRows,
132
- railRows,
133
- railCols: railColsOut,
134
- previewCols: Math.max(0, contentCols - railColsOut),
135
- // MONOTONE MEMORY, NOT A SHRINKING ONE (I-6). A rail that collapsed to zero rows
136
- // because the terminal shrank for two frames would otherwise come back four rows
137
- // shorter and the band would visibly jump on every resize wobble. The RESET points
138
- // (an emptied plan, a finished dispatch, a resize) live in the one place that owns
139
- // the lifecycle, `use-scrollback-view.ts`; this function only remembers.
140
- heldRailRows: Math.max(heldRailRows, railRows),
141
- heldTeamRows: Math.max(heldTeamRows, teamRows),
142
- };
143
- }
@@ -1,90 +0,0 @@
1
- /**
2
- * Height budget of the native-scroll LIVE REGION
3
- * (tui-native-terminal-scroll §4.6, tui-full-height-live-region D1/D3/D5).
4
- *
5
- * I-S1 · `liveRows <= max(0, rows - 1)` for every input. Ink writes
6
- * `clearTerminal` (which contains `ESC[3J`, erasing the user's scrollback) as soon
7
- * as a frame is as tall as the terminal. This feature takes I-S1's ONE row of margin
8
- * and nothing else: `liveRows === rows - 1` exactly, which is why the frame-height
9
- * guard (I-F13 / AC-F17) exists - there is no slack left to absorb a stray row.
10
- *
11
- * THE REGION IS THE SCREEN. The region used to be only as tall as the band asked for,
12
- * and every row it did not ask for became `gap` - blank rows ABOVE the content, which
13
- * is what the user reported as "the app starts halfway down the screen" and as "a big
14
- * blank between the result and the running card". The band now takes the whole pool
15
- * (`fill`), so the region is `[band][composer][identity][status]` top to bottom and
16
- * `gap` cannot exist: `resolveCanvasLayout` is given `frameRows === capacity` and
17
- * derives `gap = 0` (see the spec's §5.5 proof, which is why the writer needs no
18
- * change at all).
19
- *
20
- * The composer, popup and status rows come from the SAME `buildFrameBudget` the
21
- * full-screen layout uses, so the two modes cannot disagree about how tall the
22
- * editor is. What differs is the top: the identity row is a real slot here (D3), and
23
- * the row it occupies is spent from the region, not from the printed transcript.
24
- * THE COUNT IS ALL THIS MODULE OWNS, NOT THE POSITION: since
25
- * `tui-header-leaks-into-scrollback` the identity row is drawn between the composer and
26
- * the status group (`ScrollbackShell.tsx`), because region row 0 is necessarily the
27
- * successor of the newest printed row and chrome there lands inside the conversation.
28
- * Moving it changed no number below: it is still 1 row, still taken out of `remaining`.
29
- *
30
- * THIS IS THE ONLY CALL SITE OF `buildLiveBand` (I-8). `remaining` is computed here
31
- * once and handed to the band; an `App` that computed its own copy would make
32
- * `liveRows <= rows - 1` depend on two numbers happening to agree instead of on the
33
- * construction that proves it.
34
- */
35
- import { type LiveBand, type LiveBandInput } from './band.js';
36
- import { type FrameBudgetInput } from '../layout/budget.js';
37
- /**
38
- * Everything the band needs that this module derives for itself: `remaining`,
39
- * `contentCols`, `railCols`, `overlayOpen` and `fill` are computed below - `fill` is
40
- * NOT part of the caller's input (I-8: the budget decides it, and "the band fills the
41
- * pool" is not a preference an `App` may hold). The caller supplies only the facts it
42
- * alone knows (plan, panel switch, roster size, hysteresis), never a number this
43
- * module is supposed to own.
44
- */
45
- export type ScrollbackBandInput = Omit<LiveBandInput, 'remaining' | 'contentCols' | 'railCols' | 'overlayOpen' | 'fill'>;
46
- export interface ScrollbackBudgetInput extends FrameBudgetInput {
47
- overlayOpen: boolean;
48
- /** The writer tripped its tall-frame guard: degrade to the placeholder until a resize. */
49
- forceInactive?: boolean;
50
- /**
51
- * REQUIRED, not optional (the same rule `TeamPanel`'s header records as D-13). An
52
- * optional band would mean "forgot to pass it" renders silently without panels -
53
- * exactly the defect this feature exists to remove - while a required field is a
54
- * compile error at the one place that forgets.
55
- */
56
- band: ScrollbackBandInput;
57
- }
58
- export interface ScrollbackBudget {
59
- rows: number;
60
- cols: number;
61
- /** Width everything is rendered and printed at (`cols - 1`, D5). */
62
- contentCols: number;
63
- /** Terminal below the 40x12 floor: the region is a one-row placeholder. */
64
- inactive: boolean;
65
- /**
66
- * The identity slot, a real row inside the region (D3), drawn between the composer and
67
- * the status group. 0 on a degraded frame: the placeholder draws no header, and
68
- * reporting 1 there would break the row identity (I-F4) on exactly the frames `/perf` is
69
- * read to explain.
70
- */
71
- headerRows: number;
72
- statusRows: 0 | 1 | 2;
73
- composerRows: number;
74
- composerSlotRows: number;
75
- composerCols: number;
76
- popupRows: number;
77
- popupMaxHeight: number;
78
- overlayRows: number;
79
- /** Tail rows: the band's left column below the roster (`= band.previewRows`). */
80
- liveTailRows: number;
81
- /** Rows above the composer: `= band.bandRows = remaining`. */
82
- topRows: number;
83
- /** Total live-region height: `rows - 1`, the whole screen above the parked row. */
84
- liveRows: number;
85
- /** Height and column allocation of the panel band; the single authority is `band.ts`. */
86
- band: LiveBand;
87
- /** Preview/tail width: `contentCols - railCols`. Printing keeps `contentCols`. */
88
- previewCols: number;
89
- }
90
- export declare function buildScrollbackBudget(input: ScrollbackBudgetInput): ScrollbackBudget;
@@ -1,100 +0,0 @@
1
- /**
2
- * Height budget of the native-scroll LIVE REGION
3
- * (tui-native-terminal-scroll §4.6, tui-full-height-live-region D1/D3/D5).
4
- *
5
- * I-S1 · `liveRows <= max(0, rows - 1)` for every input. Ink writes
6
- * `clearTerminal` (which contains `ESC[3J`, erasing the user's scrollback) as soon
7
- * as a frame is as tall as the terminal. This feature takes I-S1's ONE row of margin
8
- * and nothing else: `liveRows === rows - 1` exactly, which is why the frame-height
9
- * guard (I-F13 / AC-F17) exists - there is no slack left to absorb a stray row.
10
- *
11
- * THE REGION IS THE SCREEN. The region used to be only as tall as the band asked for,
12
- * and every row it did not ask for became `gap` - blank rows ABOVE the content, which
13
- * is what the user reported as "the app starts halfway down the screen" and as "a big
14
- * blank between the result and the running card". The band now takes the whole pool
15
- * (`fill`), so the region is `[band][composer][identity][status]` top to bottom and
16
- * `gap` cannot exist: `resolveCanvasLayout` is given `frameRows === capacity` and
17
- * derives `gap = 0` (see the spec's §5.5 proof, which is why the writer needs no
18
- * change at all).
19
- *
20
- * The composer, popup and status rows come from the SAME `buildFrameBudget` the
21
- * full-screen layout uses, so the two modes cannot disagree about how tall the
22
- * editor is. What differs is the top: the identity row is a real slot here (D3), and
23
- * the row it occupies is spent from the region, not from the printed transcript.
24
- * THE COUNT IS ALL THIS MODULE OWNS, NOT THE POSITION: since
25
- * `tui-header-leaks-into-scrollback` the identity row is drawn between the composer and
26
- * the status group (`ScrollbackShell.tsx`), because region row 0 is necessarily the
27
- * successor of the newest printed row and chrome there lands inside the conversation.
28
- * Moving it changed no number below: it is still 1 row, still taken out of `remaining`.
29
- *
30
- * THIS IS THE ONLY CALL SITE OF `buildLiveBand` (I-8). `remaining` is computed here
31
- * once and handed to the band; an `App` that computed its own copy would make
32
- * `liveRows <= rows - 1` depend on two numbers happening to agree instead of on the
33
- * construction that proves it.
34
- */
35
- import { buildLiveBand } from './band.js';
36
- import { buildFrameBudget } from '../layout/budget.js';
37
- import { todoRailWidth } from '../layout/rail.js';
38
- /**
39
- * The band of a frame that shows no content at all (below the 40x12 floor, or after
40
- * the writer's tall-frame guard tripped). It is a REAL value rather than `undefined`
41
- * because `/perf` and the render tests must be able to read the reason on exactly the
42
- * frames where something went wrong (I-14 / AC-23).
43
- */
44
- function degradedBand(contentCols) {
45
- return {
46
- reason: 'short', bandRows: 0, teamRows: 0, previewRows: 0,
47
- railRows: 0, railCols: 0, previewCols: contentCols, heldRailRows: 0, heldTeamRows: 0,
48
- };
49
- }
50
- export function buildScrollbackBudget(input) {
51
- const base = buildFrameBudget(input);
52
- const contentCols = Math.max(1, base.cols - 1);
53
- if (base.inactive || input.forceInactive === true) {
54
- return {
55
- rows: base.rows, cols: base.cols, contentCols, inactive: true, headerRows: 0,
56
- statusRows: 0, composerRows: 0, composerSlotRows: 0, composerCols: base.composerCols,
57
- popupRows: 0, popupMaxHeight: 0, overlayRows: 0, liveTailRows: 0, topRows: 0,
58
- liveRows: Math.max(0, Math.min(1, base.rows - 1)),
59
- band: degradedBand(contentCols), previewCols: contentCols,
60
- };
61
- }
62
- // D1 · H = C. `frameRows` is `rows - 1` by construction (`layout/budget.ts`), so the
63
- // region ends exactly on the row above the writer's parked cursor.
64
- // The identity row is drawn at the BOTTOM now; it is still one row and still deducted
65
- // here, which is why `liveRows`, `bandRows` and `previewRows` did not move with it.
66
- const headerRows = 1;
67
- const liveRows = Math.max(1, base.frameRows);
68
- // The whole pool: everything above the composer slot. Two independent
69
- // derivations put its floor at 1, so `max(0, ...)` is defensive only:
70
- // 1. `composerSlotRows = 2 + clampDraftRows(rows, draftRows)` and
71
- // `draftMaxRows(rows) = max(1, min(6, floor(rows / 4)))`, so on the narrowest
72
- // full-screen frame (`rows = 12`) `remaining >= 11 - 1 - 5 - 1 = 4`;
73
- // 2. with the completion menu at its maximum, `popupMaxHeight` already subtracts
74
- // this same pair of rows, so `remaining = popupMaxHeight + 1 - popupRows >= 1`.
75
- const remaining = Math.max(0, liveRows - headerRows - base.composerSlotRows - base.statusRows);
76
- const band = buildLiveBand({
77
- ...input.band,
78
- remaining,
79
- contentCols,
80
- railCols: todoRailWidth(contentCols),
81
- // The band fills the pool: no row of the region is left blank, which is the whole
82
- // point of the feature (D5). Taken from HERE, never from `input.band`.
83
- fill: true,
84
- // Taken from THIS input, never from `input.band`: an overlay that the frame knows
85
- // about but the band did not would draw no overlay at all, and the shell keys the
86
- // overlay's rows off the band.
87
- overlayOpen: input.overlayOpen,
88
- });
89
- const overlayRows = band.reason === 'overlay' ? band.bandRows : 0;
90
- const liveTailRows = band.previewRows;
91
- const topRows = band.bandRows;
92
- return {
93
- rows: base.rows, cols: base.cols, contentCols, inactive: false, headerRows,
94
- statusRows: base.statusRows, composerRows: base.composerRows,
95
- composerSlotRows: base.composerSlotRows, composerCols: base.composerCols,
96
- popupRows: base.popupRows, popupMaxHeight: base.popupMaxHeight, overlayRows,
97
- liveTailRows, topRows, liveRows,
98
- band, previewCols: band.previewCols,
99
- };
100
- }