@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,100 +0,0 @@
1
- /**
2
- * Canvas arithmetic for native-scroll mode (tui-canvas-bottom-anchor §5.3).
3
- *
4
- * The defect this exists for: the bottom anchor of
5
- * `tui-bottom-anchored-live-region` pinned the live region to the last two rows by
6
- * prepending `pad` blank rows to the region's own block, so the blank space of a
7
- * conversation that does not fill the screen sat BETWEEN the newest printed row and
8
- * the composer. The user sees a reply that is not attached to the input box.
9
- *
10
- * The fix is a position change, not a value change: every row above the parked row
11
- * becomes a CANVAS the writer owns, laid out top-down as `[gap][content][region]`.
12
- * The blank space therefore lives ABOVE every visible content row, and the newest
13
- * content row always touches the top row of the live region. The steady state is
14
- * unchanged: `gap` equals the old `pad` row for row (the screen holds the same
15
- * number of content rows either way).
16
- *
17
- * EVERYTHING HERE IS PURE: no I/O, no terminal, no clock, no `node:*` import. The
18
- * writer's state machine decides which measurement is authoritative; this module
19
- * only does the arithmetic, so the arithmetic can be property-tested over every
20
- * combination instead of being sampled through a screen.
21
- */
22
- /**
23
- * How far the canvas may reach and how tall it may be, as far as anything measured.
24
- *
25
- * `pinned` carries BOTH numbers because they are not independent: the writer parks
26
- * the cursor on the last row, so `top + capacity === rows - 1` at all times
27
- * (invariant LB-3). Storing one and deriving the other is what makes an off-by-one
28
- * invisible until a blank row lands in the scrollback.
29
- */
30
- export type CanvasAnchor = {
31
- kind: 'unknown';
32
- } | {
33
- kind: 'pinned';
34
- top: number;
35
- capacity: number;
36
- };
37
- /** Nothing measured yet: the pre-canvas append path, byte for byte (I-A3 / I-A8). */
38
- export declare const UNKNOWN_CANVAS: CanvasAnchor;
39
- /** Where a `pinned` anchor came from; `/perf` reports it so a fallback is visible. */
40
- export type AnchorSource = 'probe' | 'fill' | 'none';
41
- export interface CanvasLayoutInput {
42
- /** Rows the canvas may occupy, as measured (`rows - top`). */
43
- capacity: number;
44
- /** Canvas top row (0-based). */
45
- top: number;
46
- /** Content rows already on screen. */
47
- heldRows: number;
48
- /** Content rows arriving in this batch. */
49
- statRows: number;
50
- /** Height of the live region in this batch. */
51
- frameRows: number;
52
- /** 1 when the batch is a re-seed and starts with its own CRLF, else 0. */
53
- lead: number;
54
- }
55
- /** The whole geometry of one batch, as pure numbers (never strings). */
56
- export interface CanvasLayout {
57
- /** Content rows the canvas holds after this batch, i.e. after the trim. */
58
- heldRows: number;
59
- /** Blank rows above the content. Skipped with CUD, never written (I-B3). */
60
- gap: number;
61
- /** Rows this batch writes past the screen bottom; the terminal scrolls them away. */
62
- scroll: number;
63
- /** Content rows dropped from the head because they left the screen for good. */
64
- dropped: number;
65
- /** The canvas top after this batch. */
66
- top: number;
67
- /** The canvas height after this batch, which is the next erase distance. */
68
- canvasRows: number;
69
- }
70
- /** The capacity above the parked row: `rows - 1`. Degrades to 0, never negative. */
71
- export declare function screenCapacity(rows: number | undefined): number;
72
- /**
73
- * Clamp a measured "rows below the cursor" figure into `[0, rows - 1]`.
74
- *
75
- * `rows` unknown is treated as `0`: the caller is then exactly at the bottom, which
76
- * is the conservative branch (no canvas to open up).
77
- */
78
- export declare function clampSpaceBelow(spaceBelow: number, rows: number | undefined): number;
79
- /**
80
- * A terminal that grew adds rows BELOW the cursor, so the capacity grows by the
81
- * exact difference (D6). Shrinking is NOT handled here either: the writer keeps the
82
- * rows the screen still has and re-pins them (I-B17) instead of guessing a smaller
83
- * value, which would only hide a lost measurement (D5).
84
- */
85
- export declare function applyResizeGrowth(capacity: number, rowsPrev: number, rowsNow: number): number;
86
- /**
87
- * The layout of one batch.
88
- *
89
- * `heldRows` / `statRows` / `frameRows` are COUNTS, never strings, so this function
90
- * can be property-tested over every combination without building a screen.
91
- *
92
- * TWO BRANCHES, and the difference is physical rather than cosmetic:
93
- * - FIT: the content plus the region fits the capacity, so the leftover becomes the
94
- * `gap` at the TOP of the canvas and nothing scrolls.
95
- * - SCROLL: the canvas cannot hold everything. The batch writes every content row
96
- * (the caller passes them untrimmed for exactly this reason), the terminal scrolls
97
- * `scroll` rows away, and the rows that leave are the oldest content rows plus the
98
- * host output above the canvas. `dropped` is how many content rows left.
99
- */
100
- export declare function resolveCanvasLayout(input: CanvasLayoutInput): CanvasLayout;
@@ -1,114 +0,0 @@
1
- /**
2
- * Canvas arithmetic for native-scroll mode (tui-canvas-bottom-anchor §5.3).
3
- *
4
- * The defect this exists for: the bottom anchor of
5
- * `tui-bottom-anchored-live-region` pinned the live region to the last two rows by
6
- * prepending `pad` blank rows to the region's own block, so the blank space of a
7
- * conversation that does not fill the screen sat BETWEEN the newest printed row and
8
- * the composer. The user sees a reply that is not attached to the input box.
9
- *
10
- * The fix is a position change, not a value change: every row above the parked row
11
- * becomes a CANVAS the writer owns, laid out top-down as `[gap][content][region]`.
12
- * The blank space therefore lives ABOVE every visible content row, and the newest
13
- * content row always touches the top row of the live region. The steady state is
14
- * unchanged: `gap` equals the old `pad` row for row (the screen holds the same
15
- * number of content rows either way).
16
- *
17
- * EVERYTHING HERE IS PURE: no I/O, no terminal, no clock, no `node:*` import. The
18
- * writer's state machine decides which measurement is authoritative; this module
19
- * only does the arithmetic, so the arithmetic can be property-tested over every
20
- * combination instead of being sampled through a screen.
21
- */
22
- /** Nothing measured yet: the pre-canvas append path, byte for byte (I-A3 / I-A8). */
23
- export const UNKNOWN_CANVAS = { kind: 'unknown' };
24
- /**
25
- * `Math.floor` with the two answers a measurement must never produce collapsed onto
26
- * `fallback`: `NaN` and `Infinity`. A `NaN` row count would make `Array(n)` throw and
27
- * would turn `rows - 1 - n` into a lie, so a broken number degrades to "nothing".
28
- */
29
- function whole(value, fallback) {
30
- return Number.isFinite(value) ? Math.floor(value) : fallback;
31
- }
32
- /** The capacity above the parked row: `rows - 1`. Degrades to 0, never negative. */
33
- export function screenCapacity(rows) {
34
- if (rows === undefined || !Number.isFinite(rows))
35
- return 0;
36
- return Math.max(0, Math.floor(rows) - 1);
37
- }
38
- /**
39
- * Clamp a measured "rows below the cursor" figure into `[0, rows - 1]`.
40
- *
41
- * `rows` unknown is treated as `0`: the caller is then exactly at the bottom, which
42
- * is the conservative branch (no canvas to open up).
43
- */
44
- export function clampSpaceBelow(spaceBelow, rows) {
45
- const upper = screenCapacity(rows);
46
- const value = Number.isFinite(spaceBelow) ? Math.floor(spaceBelow) : 0;
47
- return Math.min(upper, Math.max(0, value));
48
- }
49
- /**
50
- * A terminal that grew adds rows BELOW the cursor, so the capacity grows by the
51
- * exact difference (D6). Shrinking is NOT handled here either: the writer keeps the
52
- * rows the screen still has and re-pins them (I-B17) instead of guessing a smaller
53
- * value, which would only hide a lost measurement (D5).
54
- */
55
- export function applyResizeGrowth(capacity, rowsPrev, rowsNow) {
56
- // No capacity to grow: a broken number must not become a canvas by arithmetic.
57
- if (!Number.isFinite(capacity))
58
- return 0;
59
- const base = Math.max(0, Math.floor(capacity));
60
- const delta = Number.isFinite(rowsNow) && Number.isFinite(rowsPrev) ? rowsNow - rowsPrev : 0;
61
- return base + Math.max(0, Math.floor(delta));
62
- }
63
- /**
64
- * The layout of one batch.
65
- *
66
- * `heldRows` / `statRows` / `frameRows` are COUNTS, never strings, so this function
67
- * can be property-tested over every combination without building a screen.
68
- *
69
- * TWO BRANCHES, and the difference is physical rather than cosmetic:
70
- * - FIT: the content plus the region fits the capacity, so the leftover becomes the
71
- * `gap` at the TOP of the canvas and nothing scrolls.
72
- * - SCROLL: the canvas cannot hold everything. The batch writes every content row
73
- * (the caller passes them untrimmed for exactly this reason), the terminal scrolls
74
- * `scroll` rows away, and the rows that leave are the oldest content rows plus the
75
- * host output above the canvas. `dropped` is how many content rows left.
76
- */
77
- export function resolveCanvasLayout(input) {
78
- // A re-seed writes its own leading CRLF, which eats one row of the space below the
79
- // cursor and starts the canvas one row lower (P1-1 in the canvas model).
80
- const lead = Math.max(0, whole(input.lead, 0));
81
- const capacity = Math.max(0, whole(input.capacity, 0) - lead);
82
- const held = Math.max(0, whole(input.heldRows, 0));
83
- const stat = Math.max(0, whole(input.statRows, 0));
84
- const frame = Math.max(0, whole(input.frameRows, 0));
85
- const top = Math.max(0, whole(input.top, 0)) + lead;
86
- const content = held + stat;
87
- const need = content + frame;
88
- if (need <= capacity) {
89
- return {
90
- heldRows: content,
91
- gap: capacity - need,
92
- scroll: 0,
93
- dropped: 0,
94
- top,
95
- canvasRows: capacity,
96
- };
97
- }
98
- const scroll = need - capacity;
99
- // Rows above the canvas are the host's old output: they leave the screen first.
100
- const hostUsed = Math.min(scroll, top);
101
- const grown = capacity + hostUsed;
102
- const dropped = Math.min(scroll - hostUsed, content);
103
- const keptContent = content - dropped;
104
- return {
105
- heldRows: keptContent,
106
- // Zero whenever anything scrolled, and that is what keeps blank rows out of the
107
- // scrollback: a skipped gap is un-written cells, a scrolled one is a written row.
108
- gap: Math.max(0, grown - keptContent - frame),
109
- scroll,
110
- dropped,
111
- top: top - hostUsed,
112
- canvasRows: grown,
113
- };
114
- }
@@ -1,71 +0,0 @@
1
- /**
2
- * Cursor-position probe — the one measurement the bottom anchor cannot do without
3
- * (tui-bottom-anchored-live-region §4.4 / §6.3).
4
- *
5
- * WHY IT EXISTS. "How many rows are left below the cursor" cannot be derived from
6
- * anything the process already knows: `CUD` clamps silently at the last row and
7
- * reports nothing, and the only other way to reach the bottom is to print `rows - 1`
8
- * newlines, which scrolls the user's screen. `ESC[6n` asks instead of guessing, and
9
- * every target terminal answers it — Windows Terminal, conhost through ConPTY, tmux,
10
- * screen, xterm/vte/alacritty/kitty/wezterm/foot/ghostty, the VS Code terminal and an
11
- * SSH session's far end.
12
- *
13
- * WHAT IT DOES NOT DO:
14
- * - It does not touch raw mode. Raising raw is the HOST's job and must happen BEFORE
15
- * the query (P0-1 / I-A10): in canonical mode the reply is line-buffered until a
16
- * newline and the terminal ECHOES it as `^[[12;1R` onto the screen, so the probe
17
- * would time out forever on Linux/macOS while printing garbage.
18
- * - It does not consume input. The filter ahead of Ink owns every byte; this module
19
- * is a second `'data'` listener that never `pause()`s, `read()`s or `unshift()`s
20
- * (D5 / R2).
21
- * - It does not retry. One query, one bounded wait, then the caller degrades.
22
- *
23
- * FAILURE IS NORMAL, NOT AN ERROR: a terminal that never answers is a terminal that
24
- * gets the one-off screen fill instead (rung 2 of the ladder). Nothing here throws,
25
- * and nothing here can keep the process alive: the timer is `unref()`ed and the
26
- * listener is always removed.
27
- */
28
- export interface CursorProbeOptions {
29
- /** The REAL stdin — not the filter's PassThrough, and not Ink's stream. */
30
- stdin: NodeJS.ReadStream;
31
- stdout: NodeJS.WriteStream;
32
- /** Terminal height, read at answer time so a mid-wait resize is not fatal. */
33
- rows: () => number | undefined;
34
- /** Overrides `SCROLLBACK_LIMITS.anchorProbeTimeoutMs` (tests). */
35
- timeoutMs?: number;
36
- /**
37
- * Keep the event loop alive while waiting for the answer.
38
- *
39
- * THE STARTUP PROBE MUST SET THIS, and the reason is measured rather than
40
- * theoretical: an `unref()`ed timer is invisible to the event loop, so on a session
41
- * where nothing is referenced yet — stdin already at EOF, a piped stdin, a console
42
- * whose reader is paused — the process can exit BEFORE the first frame is ever
43
- * drawn. `screen.test.ts`'s subprocess probe caught exactly that: exit code 0,
44
- * `ESC[6n` on screen and no application at all.
45
- *
46
- * Background re-probes keep the default (`false`): a teardown must never be
47
- * delayed, and by then the UI itself is holding the loop.
48
- */
49
- holdProcess?: boolean;
50
- }
51
- /**
52
- * Arm or disarm the switch. `true` is permanent for the process: there is no
53
- * legitimate reason to probe after the screen has been handed back.
54
- */
55
- export declare function setAnchorProbeDisabled(value: boolean): void;
56
- /** Test hook — the switch is process-wide by design, so tests must reset it. */
57
- export declare function resetAnchorProbeForTests(): void;
58
- /**
59
- * Ask the terminal where the cursor is and return the rows left below it
60
- * (`0` = already on the last row). Returns `null` for every failure mode:
61
- *
62
- * | Situation | Result |
63
- * |----------------------------------|---------------------------------|
64
- * | switches off / not a TTY / rows unknown | `null`, synchronously, zero bytes |
65
- * | terminal answers | `rows - 1 - (row - 1)` |
66
- * | timeout (`anchorProbeTimeoutMs`) | `null`, timer and listener removed |
67
- * | concurrent call | the same promise; one query only |
68
- * | `stdout.write` throws | `null` |
69
- * | a late reply after the timeout | ignored here; the filter strips it |
70
- */
71
- export declare function probeAnchorSpaceBelow(o: CursorProbeOptions): Promise<number | null>;
@@ -1,133 +0,0 @@
1
- /**
2
- * Cursor-position probe — the one measurement the bottom anchor cannot do without
3
- * (tui-bottom-anchored-live-region §4.4 / §6.3).
4
- *
5
- * WHY IT EXISTS. "How many rows are left below the cursor" cannot be derived from
6
- * anything the process already knows: `CUD` clamps silently at the last row and
7
- * reports nothing, and the only other way to reach the bottom is to print `rows - 1`
8
- * newlines, which scrolls the user's screen. `ESC[6n` asks instead of guessing, and
9
- * every target terminal answers it — Windows Terminal, conhost through ConPTY, tmux,
10
- * screen, xterm/vte/alacritty/kitty/wezterm/foot/ghostty, the VS Code terminal and an
11
- * SSH session's far end.
12
- *
13
- * WHAT IT DOES NOT DO:
14
- * - It does not touch raw mode. Raising raw is the HOST's job and must happen BEFORE
15
- * the query (P0-1 / I-A10): in canonical mode the reply is line-buffered until a
16
- * newline and the terminal ECHOES it as `^[[12;1R` onto the screen, so the probe
17
- * would time out forever on Linux/macOS while printing garbage.
18
- * - It does not consume input. The filter ahead of Ink owns every byte; this module
19
- * is a second `'data'` listener that never `pause()`s, `read()`s or `unshift()`s
20
- * (D5 / R2).
21
- * - It does not retry. One query, one bounded wait, then the caller degrades.
22
- *
23
- * FAILURE IS NORMAL, NOT AN ERROR: a terminal that never answers is a terminal that
24
- * gets the one-off screen fill instead (rung 2 of the ladder). Nothing here throws,
25
- * and nothing here can keep the process alive: the timer is `unref()`ed and the
26
- * listener is always removed.
27
- */
28
- import { SCROLLBACK_LIMITS } from './limits.js';
29
- import { formatCursorReportQuery, spaceBelowFromReport, splitCursorReports, } from '../../input/cursor-report.js';
30
- /** Longest acceptable report prefix we buffer before giving up on the chunk. */
31
- const MAX_BUFFER_CHARS = 64;
32
- /**
33
- * THE DEATH SWITCH (I-A9 / P1-6).
34
- *
35
- * Once the session is over — `finalizeNativeScreen()`, `disposeFrameWriter()`, a
36
- * disposed filter, the process `exit` hook — a query must never reach the terminal
37
- * again. It would be written at a terminal already handed back to the shell, where
38
- * nothing strips the reply, and the user's prompt would gain a literal `^[[12;1R`.
39
- * The flag lives at module level because `cli.tsx`'s four exit paths converge on one
40
- * call and must not each own a copy of the state.
41
- */
42
- let disabled = false;
43
- /** Single-flight: a drag can ask twice inside one settle window. */
44
- let inFlight = null;
45
- /**
46
- * Arm or disarm the switch. `true` is permanent for the process: there is no
47
- * legitimate reason to probe after the screen has been handed back.
48
- */
49
- export function setAnchorProbeDisabled(value) {
50
- disabled = value;
51
- if (value)
52
- inFlight = null;
53
- }
54
- /** Test hook — the switch is process-wide by design, so tests must reset it. */
55
- export function resetAnchorProbeForTests() {
56
- disabled = false;
57
- inFlight = null;
58
- }
59
- /**
60
- * Ask the terminal where the cursor is and return the rows left below it
61
- * (`0` = already on the last row). Returns `null` for every failure mode:
62
- *
63
- * | Situation | Result |
64
- * |----------------------------------|---------------------------------|
65
- * | switches off / not a TTY / rows unknown | `null`, synchronously, zero bytes |
66
- * | terminal answers | `rows - 1 - (row - 1)` |
67
- * | timeout (`anchorProbeTimeoutMs`) | `null`, timer and listener removed |
68
- * | concurrent call | the same promise; one query only |
69
- * | `stdout.write` throws | `null` |
70
- * | a late reply after the timeout | ignored here; the filter strips it |
71
- */
72
- export function probeAnchorSpaceBelow(o) {
73
- if (disabled)
74
- return Promise.resolve(null);
75
- if (!o.stdin.isTTY || !o.stdout.isTTY)
76
- return Promise.resolve(null);
77
- if (inFlight)
78
- return inFlight;
79
- const rowsNow = o.rows();
80
- if (rowsNow === undefined || !Number.isFinite(rowsNow) || rowsNow < 1) {
81
- return Promise.resolve(null);
82
- }
83
- const promise = new Promise((resolve) => {
84
- const timeoutMs = o.timeoutMs ?? SCROLLBACK_LIMITS.anchorProbeTimeoutMs;
85
- let buffer = '';
86
- let settled = false;
87
- let timer = null;
88
- const finish = (value) => {
89
- if (settled)
90
- return;
91
- settled = true;
92
- if (timer) {
93
- clearTimeout(timer);
94
- timer = null;
95
- }
96
- o.stdin.removeListener('data', onData);
97
- resolve(value);
98
- };
99
- function onData(chunk) {
100
- if (settled)
101
- return;
102
- buffer += typeof chunk === 'string' ? chunk : chunk.toString('utf8');
103
- if (buffer.length > MAX_BUFFER_CHARS)
104
- buffer = buffer.slice(-MAX_BUFFER_CHARS);
105
- const split = splitCursorReports(buffer);
106
- const report = split.reports[0];
107
- if (!report)
108
- return;
109
- finish(spaceBelowFromReport(report, o.rows() ?? undefined));
110
- }
111
- try {
112
- o.stdout.write(formatCursorReportQuery());
113
- }
114
- catch {
115
- // A closed or broken stdout is an ordinary failure, not a crash on startup.
116
- finish(null);
117
- return;
118
- }
119
- o.stdin.on('data', onData);
120
- timer = setTimeout(() => finish(null), Math.max(1, Math.floor(timeoutMs)));
121
- // `unref()` by default (see `holdProcess`), so a stray re-probe can never keep a
122
- // teardown alive. The startup probe opts back in: there it is the ONLY thing
123
- // holding the loop, and losing the session to save 150 ms is not a trade.
124
- if (!o.holdProcess)
125
- timer.unref?.();
126
- });
127
- inFlight = promise;
128
- void promise.then(() => {
129
- if (inFlight === promise)
130
- inFlight = null;
131
- });
132
- return promise;
133
- }
@@ -1,32 +0,0 @@
1
- /**
2
- * Static-row feed — the queue between the promotion pipeline (which decides an
3
- * entry is final) and the scrollback writer (which prints it)
4
- * (tui-native-terminal-scroll §4.3 "feed").
5
- *
6
- * FIFO, bounded. When the writer falls behind and the queue overflows, the OLDEST
7
- * pending entries are folded into one ASCII marker and counted: a visible, counted
8
- * omission, never a silent one (I-S2). Entries are taken as whole blocks and never
9
- * split, so a batch boundary can never land inside one entry's rows.
10
- */
11
- export interface EntryRef {
12
- id: string;
13
- kind: string;
14
- }
15
- export interface ScrollbackDrain {
16
- enqueue(rows: readonly string[], meta: EntryRef): void;
17
- takeAll(): readonly string[];
18
- /** Whole entries only; always takes at least one when anything is pending. */
19
- takeUpTo(maxRows: number): readonly string[];
20
- /** Rows waiting, including a pending overflow marker. */
21
- pending(): number;
22
- /** Whole entries waiting (the overflow marker is not an entry). */
23
- pendingEntries(): number;
24
- /** Entries folded away by overflow, cumulative. */
25
- elided(): number;
26
- onEnqueue: (() => void) | null;
27
- onDrained: (() => void) | null;
28
- }
29
- export declare function overflowMarker(count: number): string;
30
- export declare function createScrollbackDrain(options?: {
31
- capacity?: number;
32
- }): ScrollbackDrain;
@@ -1,64 +0,0 @@
1
- /**
2
- * Static-row feed — the queue between the promotion pipeline (which decides an
3
- * entry is final) and the scrollback writer (which prints it)
4
- * (tui-native-terminal-scroll §4.3 "feed").
5
- *
6
- * FIFO, bounded. When the writer falls behind and the queue overflows, the OLDEST
7
- * pending entries are folded into one ASCII marker and counted: a visible, counted
8
- * omission, never a silent one (I-S2). Entries are taken as whole blocks and never
9
- * split, so a batch boundary can never land inside one entry's rows.
10
- */
11
- import { SCROLLBACK_LIMITS } from './limits.js';
12
- export function overflowMarker(count) {
13
- return `[${count} earlier ${count === 1 ? 'entry' : 'entries'} not printed - scrollback feed overflow]`;
14
- }
15
- export function createScrollbackDrain(options = {}) {
16
- const capacity = Math.max(1, options.capacity ?? SCROLLBACK_LIMITS.feedCapacity);
17
- const queue = [];
18
- /** Entries folded since the marker was last printed. */
19
- let foldedPending = 0;
20
- let foldedTotal = 0;
21
- const markerRows = () => (foldedPending > 0 ? 1 : 0);
22
- const takeWhile = (fits) => {
23
- const out = [];
24
- if (foldedPending > 0) {
25
- out.push(overflowMarker(foldedPending));
26
- foldedPending = 0;
27
- }
28
- while (queue.length > 0) {
29
- const next = queue[0];
30
- // Always take the first entry, however tall: a block taller than the cap
31
- // still has to print, and the writer splits at ENTRY boundaries only.
32
- if (out.length > 0 && !fits(out.length, next.rows.length))
33
- break;
34
- queue.shift();
35
- for (const row of next.rows)
36
- out.push(row);
37
- }
38
- return out;
39
- };
40
- const drained = (taken) => {
41
- if (taken.length > 0)
42
- drain.onDrained?.();
43
- return taken;
44
- };
45
- const drain = {
46
- onEnqueue: null,
47
- onDrained: null,
48
- enqueue(rows, meta) {
49
- queue.push({ id: meta.id, kind: meta.kind, rows });
50
- while (queue.length > capacity) {
51
- queue.shift();
52
- foldedPending += 1;
53
- foldedTotal += 1;
54
- }
55
- drain.onEnqueue?.();
56
- },
57
- takeAll: () => drained(takeWhile(() => true)),
58
- takeUpTo: (maxRows) => drained(takeWhile((taken, next) => taken + next <= maxRows)),
59
- pending: () => queue.reduce((sum, entry) => sum + entry.rows.length, markerRows()),
60
- pendingEntries: () => queue.length,
61
- elided: () => foldedTotal,
62
- };
63
- return drain;
64
- }
@@ -1,23 +0,0 @@
1
- /**
2
- * Exit summary for native-scroll mode (tui-native-terminal-scroll §4.8 / D9).
3
- *
4
- * The conversation is already in the terminal's scrollback, so exit does NOT replay
5
- * it (that would print every message twice). It prints at most four short lines and
6
- * leaves the cursor on a fresh line.
7
- *
8
- * PURE and ASCII-safe: glyphs come from `pickGlyphs`, and the figures come from the
9
- * same `formatSessionStats` the full-screen replay uses.
10
- */
11
- import type { Entry, UsageTotal } from '../../agent/reducer.js';
12
- import type { Glyphs } from '../glyphs.js';
13
- export interface ExitSummaryInput {
14
- entries: readonly Entry[];
15
- usageTotal: UsageTotal;
16
- provider: string;
17
- model: string;
18
- elapsedMs: number;
19
- /** The session id, when this process has one worth resuming. */
20
- sessionId?: string;
21
- glyphs: Pick<Glyphs, 'midDot' | 'arrowUp' | 'arrowDown'>;
22
- }
23
- export declare function buildExitSummary(input: ExitSummaryInput): string[];
@@ -1,25 +0,0 @@
1
- /**
2
- * Exit summary for native-scroll mode (tui-native-terminal-scroll §4.8 / D9).
3
- *
4
- * The conversation is already in the terminal's scrollback, so exit does NOT replay
5
- * it (that would print every message twice). It prints at most four short lines and
6
- * leaves the cursor on a fresh line.
7
- *
8
- * PURE and ASCII-safe: glyphs come from `pickGlyphs`, and the figures come from the
9
- * same `formatSessionStats` the full-screen replay uses.
10
- */
11
- import { formatDuration } from '../../agent/usage.js';
12
- import { formatSessionStats } from '../transcript-text.js';
13
- import { SCROLLBACK_LIMITS } from './limits.js';
14
- export function buildExitSummary(input) {
15
- const { glyphs: g } = input;
16
- const stats = formatSessionStats(input.entries, input.usageTotal, g);
17
- const rows = [
18
- ['Session ended', `${input.provider}:${input.model}`, formatDuration(Math.max(0, input.elapsedMs))]
19
- .join(` ${g.midDot} `),
20
- [stats.turns, stats.tokens, stats.cost].join(` ${g.midDot} `),
21
- ];
22
- if (input.sessionId)
23
- rows.push(`Resume: aragon --resume ${input.sessionId}`);
24
- return rows.slice(0, SCROLLBACK_LIMITS.exitSummaryMaxRows);
25
- }
@@ -1,98 +0,0 @@
1
- /**
2
- * Structural limits of native-scroll mode (tui-native-terminal-scroll §4.3-§4.6).
3
- *
4
- * Structural caps live here; tunable policy lives in `config/schema.ts`. None of
5
- * these is a user preference: each one bounds a failure (a runaway write, a live
6
- * region that eats the screen) rather than expressing a taste.
7
- */
8
- export declare const SCROLLBACK_LIMITS: {
9
- /** Pending static entries the drain holds before folding the oldest into a marker. */
10
- readonly feedCapacity: 32;
11
- /** Rows one entry may print; the rest is replaced by one ASCII notice row. */
12
- readonly maxRowsPerEntry: 400;
13
- /** Static rows per `stdout.write`; larger feeds are split into consecutive batches. */
14
- readonly maxRowsPerBatch: 2000;
15
- /** tall-frame swallows within this window after a resize are expected and uncounted. */
16
- readonly guardResizeGraceMs: 250;
17
- /** Consecutive out-of-resize tall frames that degrade the app to the placeholder. */
18
- readonly guardTripCount: 3;
19
- /** Session summary rows printed on exit. */
20
- readonly exitSummaryMaxRows: 4;
21
- /**
22
- * Entries the region may hold on screen at once
23
- * (tui-full-height-live-region D6; the WINDOW is defined by I-F8 and computed in
24
- * `tail-window.ts`).
25
- *
26
- * 10 is DERIVED, not a preference. The band's left column is the whole pool
27
- * (`pool = rows - 1 - header - composer - status`, i.e. 24 rows on a 30-row
28
- * terminal) and one entry occupies about 2.4 rows, so a window of 4 would leave
29
- * the column half empty - the blank band this feature removes. It stays in the
30
- * per-frame COST class the old value of 4 was measured in: `EntryView` is
31
- * memoised and only the streaming entry re-renders, so this bounds component
32
- * instances, not per-frame work.
33
- *
34
- * There is deliberately NO companion row cap any more (retired: the old
35
- * `maxLiveTailRows` / `liveTailRowShare` pair). The rows a tail may take are
36
- * `band.previewRows` - the whole left column - and "the region can never be
37
- * taller than the screen" is `liveRows === rows - 1`'s job (I-F5), not a second
38
- * number's. Those two caps disagreed with the pool, and that disagreement WAS the
39
- * blank band between the result and the running card.
40
- */
41
- readonly liveTailMaxEntries: 10;
42
- /**
43
- * Safety margin the live tail asks for before it anchors its content to the TOP of
44
- * the region (tui-first-reply-bottom-aligned, plan A-prime; the decision itself is
45
- * `tail-anchor.ts`).
46
- *
47
- * 2 is DERIVED, not a preference. The anchor is decided from
48
- * `layout/virtual-window.ts::estimateEntryRows`, which charges one separation row per
49
- * entry and counts RAW markdown lines - so it UNDER-estimates a `#` heading (which
50
- * also draws an `hrule`) and a code block (whose rail narrows the text by two columns,
51
- * making long lines wrap). Inside a virtual window that error self-corrects when the
52
- * entry is measured; the live region has no measurement pass, so the same error would
53
- * decide which rows get CLIPPED - and `flex-start` clips the NEWEST rows.
54
- * The margin must therefore always stay on the `bottom` side: a needless fallback
55
- * costs one stacked frame, an early anchor hides the text the user is waiting for.
56
- */
57
- readonly tailAnchorSlackRows: 2;
58
- /**
59
- * Rows the rail needs before the band will show it: `TODO_LIMITS.panelMinRows + 1`.
60
- *
61
- * The `+ 1` is not decoration - the rail takes its rows from the same pool as one
62
- * preview row, and a band that seats the rail but no preview loses the streaming
63
- * answer entirely (band.ts step 3 / AC-12).
64
- */
65
- readonly railBandMinRows: 4;
66
- /**
67
- * How long the cursor-position probe waits for `ESC[<row>;<col>R`.
68
- *
69
- * A STRUCTURAL CAP, not a preference (tui-bottom-anchored-live-region §4.4): it
70
- * bounds "how much startup latency a terminal that does not answer may cost". The
71
- * round trip is under 5 ms locally and under 60 ms over SSH, so 150 ms is
72
- * generous, and the probe runs once per session — never per frame, never per
73
- * keystroke. Anything longer and a terminal without CPR support would pay it on
74
- * every launch.
75
- */
76
- readonly anchorProbeTimeoutMs: 150;
77
- /**
78
- * Settle window before re-measuring the cursor after a resize.
79
- *
80
- * A STRUCTURAL CAP for the same reason: a drag fires dozens of resize events, and
81
- * one CPR per event would both flood the input channel and make the region jitter.
82
- * 200 ms is below the point a user perceives as "the input box is stuck".
83
- */
84
- readonly anchorReprobeDelayMs: 200;
85
- /**
86
- * Structural ceiling on the height of a STARTING canvas.
87
- *
88
- * It bounds the bytes a batch may write and the rows the content cache may hold on
89
- * an extreme terminal (`rows` 3000). Two limits on how it may be applied, both
90
- * arithmetic rather than taste:
91
- * - the rows a canvas leaves unused do not disappear, they stay above it as the
92
- * permanent region, so a smaller starting canvas never loses content;
93
- * - it must NEVER clip a live canvas. A canvas that has overflowed and scrolled
94
- * grows to `rows - 1`, and shrinking one back would make the next erase reach
95
- * above its own top: host output erased, every visible row printed twice.
96
- */
97
- readonly maxCanvasRows: 200;
98
- };