@aragon-agent/cli 0.6.46 → 0.6.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (775) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +80 -12
  3. package/dist/agent/coalesce.d.ts +5 -1
  4. package/dist/agent/coalesce.js +13 -0
  5. package/dist/agent/controller.d.ts +41 -20
  6. package/dist/agent/controller.js +68 -15
  7. package/dist/agent/conversation-reset.d.ts +1 -1
  8. package/dist/agent/governance-wiring.d.ts +6 -6
  9. package/dist/agent/governance-wiring.js +4 -4
  10. package/dist/agent/headless.d.ts +5 -5
  11. package/dist/agent/headless.js +4 -4
  12. package/dist/agent/job-notices.d.ts +1 -1
  13. package/dist/agent/job-notices.js +1 -1
  14. package/dist/agent/kit-apply.d.ts +3 -3
  15. package/dist/agent/kit-apply.js +3 -3
  16. package/dist/agent/model-profile-settings.d.ts +2 -2
  17. package/dist/agent/model-profile-settings.js +6 -6
  18. package/dist/agent/prompt-options.d.ts +1 -1
  19. package/dist/agent/system-prompt.d.ts +1 -1
  20. package/dist/agent/user-attention.d.ts +17 -0
  21. package/dist/agent/user-attention.js +32 -0
  22. package/dist/{ui → app}/App.d.ts +9 -9
  23. package/dist/{ui → app}/App.js +113 -79
  24. package/dist/{ui → app}/use-startup-notices.d.ts +1 -1
  25. package/dist/{ui → app}/use-startup-notices.js +2 -2
  26. package/dist/cli.js +31 -32
  27. package/dist/commands/agents-command.js +1 -1
  28. package/dist/commands/builtins.js +9 -9
  29. package/dist/commands/governance-command.js +2 -2
  30. package/dist/commands/governance-runs-table.js +1 -1
  31. package/dist/commands/kit-command.js +1 -1
  32. package/dist/commands/perf.d.ts +3 -3
  33. package/dist/commands/perf.js +1 -1
  34. package/dist/commands/registry.d.ts +8 -8
  35. package/dist/commands/skills.js +2 -2
  36. package/dist/commands/team-command.js +1 -1
  37. package/dist/compaction/archive.d.ts +1 -1
  38. package/dist/compaction/archive.js +1 -1
  39. package/dist/compaction/child.d.ts +3 -3
  40. package/dist/compaction/child.js +4 -4
  41. package/dist/compaction/command.js +5 -5
  42. package/dist/compaction/compactor.d.ts +6 -6
  43. package/dist/compaction/compactor.js +6 -6
  44. package/dist/compaction/context-command.js +1 -1
  45. package/dist/compaction/digest.js +1 -1
  46. package/dist/compaction/memory-input.js +1 -1
  47. package/dist/compaction/memory-validation.js +1 -1
  48. package/dist/compaction/memory.js +1 -1
  49. package/dist/compaction/summarize-call.js +1 -1
  50. package/dist/compaction/summary-prompt.js +1 -1
  51. package/dist/compaction/tail-budget.js +2 -2
  52. package/dist/compaction/wiring.d.ts +5 -5
  53. package/dist/compaction/wiring.js +2 -2
  54. package/dist/config/cli-commands.d.ts +1 -1
  55. package/dist/config/cli-commands.js +3 -3
  56. package/dist/config/env.d.ts +1 -1
  57. package/dist/config/env.js +4 -4
  58. package/dist/config/load.d.ts +2 -2
  59. package/dist/config/load.js +10 -31
  60. package/dist/config/migrate-state-out-of-config.js +1 -1
  61. package/dist/config/model-profile-store.d.ts +4 -54
  62. package/dist/config/model-profile-store.js +3 -3
  63. package/dist/config/prompt-history.js +1 -1
  64. package/dist/config/store.d.ts +2 -2
  65. package/dist/config/store.js +3 -3
  66. package/dist/diagnostics/doctor.js +4 -4
  67. package/dist/exec/bridge/decisions.d.ts +1 -1
  68. package/dist/exec/bridge/human-answers.d.ts +1 -1
  69. package/dist/exec/bridge/human-answers.js +1 -1
  70. package/dist/exec/bridge/protocol.d.ts +1 -1
  71. package/dist/exec/bridge/server.js +1 -1
  72. package/dist/exec/events.d.ts +2 -2
  73. package/dist/exec/index.d.ts +1 -1
  74. package/dist/exec/index.js +1 -1
  75. package/dist/exec/permission.js +1 -1
  76. package/dist/exec/runner.d.ts +3 -3
  77. package/dist/exec/runner.js +2 -2
  78. package/dist/exec/threads/runtime.js +1 -1
  79. package/dist/fast/digest.d.ts +1 -1
  80. package/dist/fast/digest.js +1 -1
  81. package/dist/fast/frames.d.ts +1 -1
  82. package/dist/fast/frames.js +1 -1
  83. package/dist/fast/prompt.d.ts +1 -1
  84. package/dist/fast/prompt.js +1 -1
  85. package/dist/fast/review-call.js +1 -1
  86. package/dist/fast/reviewer.d.ts +3 -3
  87. package/dist/fast/reviewer.js +1 -1
  88. package/dist/fast/summary-call.d.ts +3 -3
  89. package/dist/fast/summary-call.js +2 -2
  90. package/dist/fast/summary-prompt.d.ts +1 -1
  91. package/dist/fast/summary-prompt.js +1 -1
  92. package/dist/fast/wiring.d.ts +4 -4
  93. package/dist/fast/wiring.js +1 -1
  94. package/dist/governance/card-normalize.d.ts +1 -1
  95. package/dist/governance/copy.d.ts +1 -1
  96. package/dist/governance/copy.js +2 -2
  97. package/dist/governance/engine/artifact-persist.d.ts +1 -1
  98. package/dist/governance/engine/budget.d.ts +1 -1
  99. package/dist/governance/engine/budget.js +1 -1
  100. package/dist/governance/engine/cards.d.ts +1 -1
  101. package/dist/governance/engine/digest.js +1 -1
  102. package/dist/governance/engine/engine-core.d.ts +5 -5
  103. package/dist/governance/engine/engine-core.js +1 -1
  104. package/dist/governance/engine/engine.d.ts +1 -1
  105. package/dist/governance/engine/engine.js +1 -1
  106. package/dist/governance/engine/estimate.d.ts +1 -1
  107. package/dist/governance/engine/estimate.js +1 -1
  108. package/dist/governance/engine/inspector.js +2 -2
  109. package/dist/governance/engine/integration.d.ts +1 -1
  110. package/dist/governance/engine/lifecycle.d.ts +1 -1
  111. package/dist/governance/engine/lifecycle.js +1 -1
  112. package/dist/governance/engine/phase-members.d.ts +1 -1
  113. package/dist/governance/engine/phase-planner.d.ts +1 -1
  114. package/dist/governance/engine/phase-planner.js +1 -1
  115. package/dist/governance/engine/rebuild.d.ts +1 -1
  116. package/dist/governance/engine/report.d.ts +1 -1
  117. package/dist/governance/engine/report.js +1 -1
  118. package/dist/governance/engine/run-digest.d.ts +1 -1
  119. package/dist/governance/engine/spec-builder.d.ts +2 -2
  120. package/dist/governance/engine/spec-builder.js +2 -2
  121. package/dist/governance/engine/stage-runner.js +2 -2
  122. package/dist/governance/engine/start-input.d.ts +1 -1
  123. package/dist/governance/engine/start-input.js +1 -1
  124. package/dist/governance/engine/state-machine.d.ts +1 -1
  125. package/dist/governance/engine/state-machine.js +3 -3
  126. package/dist/governance/engine/submission-queries.d.ts +1 -1
  127. package/dist/governance/engine/submission-render.d.ts +1 -1
  128. package/dist/governance/engine/submissions.d.ts +1 -1
  129. package/dist/governance/engine/submissions.js +1 -1
  130. package/dist/governance/engine/visibility.d.ts +1 -1
  131. package/dist/governance/engine/visibility.js +1 -1
  132. package/dist/governance/posture-transition.d.ts +2 -2
  133. package/dist/governance/posture-transition.js +1 -1
  134. package/dist/governance/profiles.d.ts +1 -1
  135. package/dist/governance/prompts/orchestrator-block.d.ts +2 -2
  136. package/dist/governance/prompts/orchestrator-block.js +2 -2
  137. package/dist/governance/prompts/plan-addendum.d.ts +1 -1
  138. package/dist/governance/prompts/plan-addendum.js +1 -1
  139. package/dist/governance/prompts/role-blocks.d.ts +2 -2
  140. package/dist/governance/prompts/role-blocks.js +1 -1
  141. package/dist/governance/report-reader.js +1 -1
  142. package/dist/governance/roles.d.ts +1 -1
  143. package/dist/governance/rules/claims.d.ts +1 -1
  144. package/dist/governance/rules/claims.js +1 -1
  145. package/dist/governance/rules/elimination.d.ts +1 -1
  146. package/dist/governance/rules/elimination.js +1 -1
  147. package/dist/governance/rules/failure-analysis.d.ts +2 -2
  148. package/dist/governance/rules/failure-analysis.js +1 -1
  149. package/dist/governance/rules/ledger-replay.d.ts +1 -1
  150. package/dist/governance/rules/ledger-state.d.ts +1 -1
  151. package/dist/governance/rules/ledger-state.js +1 -1
  152. package/dist/governance/rules/ledger.d.ts +2 -2
  153. package/dist/governance/rules/ledger.js +2 -2
  154. package/dist/governance/rules/rca.d.ts +1 -1
  155. package/dist/governance/rules/rca.js +1 -1
  156. package/dist/governance/rules/settlement.d.ts +2 -2
  157. package/dist/governance/rules/settlement.js +2 -2
  158. package/dist/governance/rules/suspicion.d.ts +1 -1
  159. package/dist/governance/store/artifacts.d.ts +1 -1
  160. package/dist/governance/store/artifacts.js +1 -1
  161. package/dist/governance/store/events-log.d.ts +1 -1
  162. package/dist/governance/store/run-store.d.ts +1 -1
  163. package/dist/governance/store/run-store.js +1 -1
  164. package/dist/governance/store/scoreboard-export.d.ts +1 -1
  165. package/dist/governance/tools/child-tools.d.ts +1 -1
  166. package/dist/governance/tools/guard.d.ts +1 -1
  167. package/dist/governance/tools/guard.js +1 -1
  168. package/dist/governance/tools/inspector-tools.d.ts +2 -2
  169. package/dist/governance/tools/inspector-tools.js +2 -2
  170. package/dist/governance/tools/lead-tools.d.ts +1 -1
  171. package/dist/governance/tools/lead-tools.js +1 -1
  172. package/dist/governance/tools/normalize-util.js +1 -1
  173. package/dist/governance/tools/scan-incomplete.js +1 -1
  174. package/dist/governance/tools/shared-tools.d.ts +1 -1
  175. package/dist/governance/tools/shared-tools.js +1 -1
  176. package/dist/governance/tools/submit-normalizers.d.ts +1 -1
  177. package/dist/governance/tools/submit-normalizers.js +1 -1
  178. package/dist/governance/tools/submit-tools.d.ts +1 -1
  179. package/dist/logging/cli-commands.js +1 -1
  180. package/dist/logging/install.d.ts +1 -1
  181. package/dist/logging/install.js +3 -3
  182. package/dist/logging/logger.d.ts +2 -2
  183. package/dist/logging/logger.js +31 -2
  184. package/dist/proc/kill-tree.js +1 -1
  185. package/dist/proc/log-mirror.js +1 -1
  186. package/dist/proc/log-ring.js +2 -2
  187. package/dist/proc/notices.d.ts +1 -1
  188. package/dist/proc/notices.js +2 -2
  189. package/dist/proc/prompt.d.ts +1 -1
  190. package/dist/proc/prompt.js +8 -5
  191. package/dist/proc/readiness.js +1 -1
  192. package/dist/proc/supervisor.d.ts +1 -1
  193. package/dist/proc/supervisor.js +10 -4
  194. package/dist/proc/wait-plan.d.ts +39 -0
  195. package/dist/proc/wait-plan.js +77 -0
  196. package/dist/proc/wait.d.ts +37 -4
  197. package/dist/proc/wait.js +68 -5
  198. package/dist/prompts/command.d.ts +1 -1
  199. package/dist/prompts/command.js +1 -1
  200. package/dist/prompts/normalize.d.ts +1 -1
  201. package/dist/prompts/normalize.js +1 -1
  202. package/dist/prompts/resolve.d.ts +1 -1
  203. package/dist/prompts/store.d.ts +2 -12
  204. package/dist/prompts/store.js +6 -60
  205. package/dist/session/checkpoint.d.ts +2 -2
  206. package/dist/session/checkpoint.js +2 -0
  207. package/dist/session/clear-archive.d.ts +2 -2
  208. package/dist/session/persist.d.ts +2 -2
  209. package/dist/session/persist.js +20 -3
  210. package/dist/session/startup-session.d.ts +2 -2
  211. package/dist/session/validate-session.js +6 -3
  212. package/dist/skills/service.d.ts +2 -2
  213. package/dist/team/bus.d.ts +1 -1
  214. package/dist/team/bus.js +1 -1
  215. package/dist/team/child-reviewer.d.ts +2 -2
  216. package/dist/team/child-reviewer.js +1 -1
  217. package/dist/team/comm-tools.js +1 -1
  218. package/dist/team/dispatch-gate.js +1 -1
  219. package/dist/team/forced-dispatch.js +1 -1
  220. package/dist/team/forced-mode.d.ts +1 -1
  221. package/dist/team/forced-prompt.d.ts +1 -1
  222. package/dist/team/forced-prompt.js +1 -1
  223. package/dist/team/normalize.d.ts +1 -1
  224. package/dist/team/normalize.js +1 -1
  225. package/dist/team/overseer.d.ts +3 -3
  226. package/dist/team/overseer.js +3 -3
  227. package/dist/team/prompt.d.ts +1 -1
  228. package/dist/team/prompt.js +1 -1
  229. package/dist/team/report.d.ts +2 -2
  230. package/dist/team/report.js +2 -2
  231. package/dist/team/retry.d.ts +1 -1
  232. package/dist/team/retry.js +1 -1
  233. package/dist/team/runtime.d.ts +4 -4
  234. package/dist/team/runtime.js +2 -2
  235. package/dist/team/settled.d.ts +2 -2
  236. package/dist/team/subagent.d.ts +4 -4
  237. package/dist/team/subagent.js +5 -5
  238. package/dist/team/task-tool.d.ts +1 -1
  239. package/dist/team/task-tool.js +1 -1
  240. package/dist/todo/normalize.d.ts +1 -1
  241. package/dist/todo/normalize.js +1 -1
  242. package/dist/todo/prompt.d.ts +1 -1
  243. package/dist/todo/prompt.js +1 -1
  244. package/dist/todo/store.d.ts +1 -1
  245. package/dist/todo/store.js +2 -2
  246. package/dist/todo/todo-tool.d.ts +1 -1
  247. package/dist/todo/todo-tool.js +2 -2
  248. package/dist/tools/bash-tool.d.ts +1 -1
  249. package/dist/tools/bash-tool.js +2 -2
  250. package/dist/tools/diff.d.ts +1 -1
  251. package/dist/tools/diff.js +1 -1
  252. package/dist/tools/file-change-store.d.ts +1 -1
  253. package/dist/tools/fs-tools.d.ts +2 -2
  254. package/dist/tools/fs-tools.js +1 -1
  255. package/dist/tools/index.d.ts +3 -3
  256. package/dist/tools/index.js +1 -1
  257. package/dist/tools/job-tools.d.ts +14 -3
  258. package/dist/tools/job-tools.js +158 -35
  259. package/dist/tools/plan-tools.d.ts +1 -1
  260. package/dist/tools/plan-tools.js +1 -1
  261. package/dist/tools/proc-tools.d.ts +1 -1
  262. package/dist/tools/proc-tools.js +2 -2
  263. package/dist/update/classify-failure.d.ts +1 -1
  264. package/dist/update/install-lock.js +1 -1
  265. package/dist/update/install-source.d.ts +1 -1
  266. package/dist/update/installer.js +2 -2
  267. package/dist/update/npm-view.d.ts +1 -1
  268. package/dist/update/npm-view.js +1 -1
  269. package/dist/update/registry.d.ts +1 -1
  270. package/dist/update/registry.js +1 -1
  271. package/dist/update/service.d.ts +2 -2
  272. package/dist/update/service.js +2 -2
  273. package/package.json +7 -7
  274. package/dist/agent/agent-mode.d.ts +0 -108
  275. package/dist/agent/agent-mode.js +0 -121
  276. package/dist/agent/entry-limits.d.ts +0 -65
  277. package/dist/agent/entry-limits.js +0 -133
  278. package/dist/agent/governance-view.d.ts +0 -40
  279. package/dist/agent/governance-view.js +0 -40
  280. package/dist/agent/invocation-card.d.ts +0 -77
  281. package/dist/agent/invocation-card.js +0 -169
  282. package/dist/agent/model-probe-limits.d.ts +0 -39
  283. package/dist/agent/model-probe-limits.js +0 -25
  284. package/dist/agent/model-probe.d.ts +0 -104
  285. package/dist/agent/model-probe.js +0 -391
  286. package/dist/agent/queued-messages.d.ts +0 -23
  287. package/dist/agent/queued-messages.js +0 -49
  288. package/dist/agent/reducer.d.ts +0 -837
  289. package/dist/agent/reducer.js +0 -1617
  290. package/dist/agent/retry-view.d.ts +0 -68
  291. package/dist/agent/retry-view.js +0 -95
  292. package/dist/agent/usage.d.ts +0 -47
  293. package/dist/agent/usage.js +0 -84
  294. package/dist/compaction/limits.d.ts +0 -61
  295. package/dist/compaction/limits.js +0 -64
  296. package/dist/compaction/meter.d.ts +0 -276
  297. package/dist/compaction/meter.js +0 -512
  298. package/dist/compaction/pressure.d.ts +0 -163
  299. package/dist/compaction/pressure.js +0 -199
  300. package/dist/compaction/reason-text.d.ts +0 -36
  301. package/dist/compaction/reason-text.js +0 -78
  302. package/dist/compaction/types.d.ts +0 -360
  303. package/dist/compaction/types.js +0 -22
  304. package/dist/config/governance-config.d.ts +0 -125
  305. package/dist/config/governance-config.js +0 -164
  306. package/dist/config/kit-resolution.d.ts +0 -93
  307. package/dist/config/kit-resolution.js +0 -226
  308. package/dist/config/model-kits.d.ts +0 -225
  309. package/dist/config/model-kits.js +0 -302
  310. package/dist/config/model-profile-resolution.d.ts +0 -28
  311. package/dist/config/model-profile-resolution.js +0 -88
  312. package/dist/config/model-profiles.d.ts +0 -103
  313. package/dist/config/model-profiles.js +0 -188
  314. package/dist/config/schema.d.ts +0 -1645
  315. package/dist/config/schema.js +0 -1377
  316. package/dist/fast/limits.d.ts +0 -152
  317. package/dist/fast/limits.js +0 -152
  318. package/dist/fast/resolve.d.ts +0 -44
  319. package/dist/fast/resolve.js +0 -107
  320. package/dist/fast/task-summary-types.d.ts +0 -66
  321. package/dist/fast/task-summary-types.js +0 -17
  322. package/dist/fast/types.d.ts +0 -141
  323. package/dist/fast/types.js +0 -14
  324. package/dist/governance/governed-dispatch.d.ts +0 -19
  325. package/dist/governance/governed-dispatch.js +0 -17
  326. package/dist/governance/limits.d.ts +0 -107
  327. package/dist/governance/limits.js +0 -131
  328. package/dist/governance/posture.d.ts +0 -35
  329. package/dist/governance/posture.js +0 -59
  330. package/dist/governance/rules/events-table.d.ts +0 -46
  331. package/dist/governance/rules/events-table.js +0 -94
  332. package/dist/governance/types.d.ts +0 -661
  333. package/dist/governance/types.js +0 -27
  334. package/dist/input/control-sequences.d.ts +0 -71
  335. package/dist/input/control-sequences.js +0 -222
  336. package/dist/input/csiu-keys.d.ts +0 -66
  337. package/dist/input/csiu-keys.js +0 -181
  338. package/dist/input/cursor-report.d.ts +0 -61
  339. package/dist/input/cursor-report.js +0 -97
  340. package/dist/input/enter-sequences.d.ts +0 -64
  341. package/dist/input/enter-sequences.js +0 -153
  342. package/dist/input/interrupt-gesture.d.ts +0 -18
  343. package/dist/input/interrupt-gesture.js +0 -19
  344. package/dist/input/keyboard-enhancement.d.ts +0 -42
  345. package/dist/input/keyboard-enhancement.js +0 -65
  346. package/dist/input/keymap.d.ts +0 -20
  347. package/dist/input/keymap.js +0 -99
  348. package/dist/input/limits.d.ts +0 -118
  349. package/dist/input/limits.js +0 -109
  350. package/dist/input/mouse-events.d.ts +0 -87
  351. package/dist/input/mouse-events.js +0 -212
  352. package/dist/input/paste-parse.d.ts +0 -83
  353. package/dist/input/paste-parse.js +0 -107
  354. package/dist/input/pointer-router.d.ts +0 -11
  355. package/dist/input/pointer-router.js +0 -14
  356. package/dist/input/stdin-filter.d.ts +0 -112
  357. package/dist/input/stdin-filter.js +0 -657
  358. package/dist/input/win32-input-mode.d.ts +0 -61
  359. package/dist/input/win32-input-mode.js +0 -269
  360. package/dist/logging/levels.d.ts +0 -40
  361. package/dist/logging/levels.js +0 -59
  362. package/dist/logging/secret-registry.d.ts +0 -32
  363. package/dist/logging/secret-registry.js +0 -73
  364. package/dist/proc/limits.d.ts +0 -200
  365. package/dist/proc/limits.js +0 -207
  366. package/dist/proc/progress.d.ts +0 -40
  367. package/dist/proc/progress.js +0 -135
  368. package/dist/proc/types.d.ts +0 -263
  369. package/dist/proc/types.js +0 -15
  370. package/dist/prompts/copy.d.ts +0 -89
  371. package/dist/prompts/copy.js +0 -131
  372. package/dist/prompts/fill.d.ts +0 -51
  373. package/dist/prompts/fill.js +0 -46
  374. package/dist/prompts/limits.d.ts +0 -53
  375. package/dist/prompts/limits.js +0 -53
  376. package/dist/prompts/search.d.ts +0 -58
  377. package/dist/prompts/search.js +0 -146
  378. package/dist/prompts/types.d.ts +0 -204
  379. package/dist/prompts/types.js +0 -13
  380. package/dist/team/activity.d.ts +0 -67
  381. package/dist/team/activity.js +0 -130
  382. package/dist/team/limits.d.ts +0 -308
  383. package/dist/team/limits.js +0 -330
  384. package/dist/team/model.d.ts +0 -104
  385. package/dist/team/model.js +0 -150
  386. package/dist/team/panel-rows.d.ts +0 -48
  387. package/dist/team/panel-rows.js +0 -75
  388. package/dist/team/timeline.d.ts +0 -74
  389. package/dist/team/timeline.js +0 -101
  390. package/dist/team/types.d.ts +0 -354
  391. package/dist/team/types.js +0 -13
  392. package/dist/todo/acceptance.d.ts +0 -120
  393. package/dist/todo/acceptance.js +0 -399
  394. package/dist/todo/follow-through.d.ts +0 -138
  395. package/dist/todo/follow-through.js +0 -248
  396. package/dist/todo/limits.d.ts +0 -152
  397. package/dist/todo/limits.js +0 -152
  398. package/dist/todo/panel-rows.d.ts +0 -45
  399. package/dist/todo/panel-rows.js +0 -70
  400. package/dist/todo/plan-sections.d.ts +0 -60
  401. package/dist/todo/plan-sections.js +0 -108
  402. package/dist/todo/row-window.d.ts +0 -51
  403. package/dist/todo/row-window.js +0 -107
  404. package/dist/todo/types.d.ts +0 -124
  405. package/dist/todo/types.js +0 -12
  406. package/dist/tools/human-input.d.ts +0 -212
  407. package/dist/tools/human-input.js +0 -265
  408. package/dist/tools/patch.d.ts +0 -115
  409. package/dist/tools/patch.js +0 -453
  410. package/dist/tools/terminal-output.d.ts +0 -115
  411. package/dist/tools/terminal-output.js +0 -201
  412. package/dist/tools/tool-output-store.d.ts +0 -68
  413. package/dist/tools/tool-output-store.js +0 -102
  414. package/dist/ui/ActivityLine.d.ts +0 -26
  415. package/dist/ui/ActivityLine.js +0 -48
  416. package/dist/ui/AutocompletePopup.d.ts +0 -23
  417. package/dist/ui/AutocompletePopup.js +0 -17
  418. package/dist/ui/BottomStatusRow.d.ts +0 -10
  419. package/dist/ui/BottomStatusRow.js +0 -9
  420. package/dist/ui/Composer.d.ts +0 -115
  421. package/dist/ui/Composer.js +0 -64
  422. package/dist/ui/GovernancePanel.d.ts +0 -50
  423. package/dist/ui/GovernancePanel.js +0 -77
  424. package/dist/ui/GovernanceRun.d.ts +0 -18
  425. package/dist/ui/GovernanceRun.js +0 -11
  426. package/dist/ui/Header.d.ts +0 -48
  427. package/dist/ui/Header.js +0 -27
  428. package/dist/ui/Logo.d.ts +0 -32
  429. package/dist/ui/Logo.js +0 -65
  430. package/dist/ui/Markdown.d.ts +0 -29
  431. package/dist/ui/Markdown.js +0 -116
  432. package/dist/ui/PromptCaret.d.ts +0 -11
  433. package/dist/ui/PromptCaret.js +0 -31
  434. package/dist/ui/PromptInput.d.ts +0 -192
  435. package/dist/ui/PromptInput.js +0 -689
  436. package/dist/ui/QueuePanel.d.ts +0 -8
  437. package/dist/ui/QueuePanel.js +0 -9
  438. package/dist/ui/QueueStatusRow.d.ts +0 -24
  439. package/dist/ui/QueueStatusRow.js +0 -51
  440. package/dist/ui/ScrollbackShell.d.ts +0 -132
  441. package/dist/ui/ScrollbackShell.js +0 -26
  442. package/dist/ui/SessionOpener.d.ts +0 -30
  443. package/dist/ui/SessionOpener.js +0 -12
  444. package/dist/ui/StatusBar.d.ts +0 -129
  445. package/dist/ui/StatusBar.js +0 -61
  446. package/dist/ui/TeamPanel.d.ts +0 -76
  447. package/dist/ui/TeamPanel.js +0 -103
  448. package/dist/ui/ToastStack.d.ts +0 -8
  449. package/dist/ui/ToastStack.js +0 -31
  450. package/dist/ui/TodoPanel.d.ts +0 -52
  451. package/dist/ui/TodoPanel.js +0 -214
  452. package/dist/ui/Transcript.d.ts +0 -105
  453. package/dist/ui/Transcript.js +0 -251
  454. package/dist/ui/UpdateLine.d.ts +0 -44
  455. package/dist/ui/UpdateLine.js +0 -129
  456. package/dist/ui/activity-phrases.d.ts +0 -33
  457. package/dist/ui/activity-phrases.js +0 -50
  458. package/dist/ui/capabilities.d.ts +0 -27
  459. package/dist/ui/capabilities.js +0 -65
  460. package/dist/ui/clipboard-task.d.ts +0 -29
  461. package/dist/ui/clipboard-task.js +0 -66
  462. package/dist/ui/clipboard.d.ts +0 -31
  463. package/dist/ui/clipboard.js +0 -157
  464. package/dist/ui/color-runtime.d.ts +0 -5
  465. package/dist/ui/color-runtime.js +0 -29
  466. package/dist/ui/composer-input.d.ts +0 -38
  467. package/dist/ui/composer-input.js +0 -79
  468. package/dist/ui/composer-limits.d.ts +0 -30
  469. package/dist/ui/composer-limits.js +0 -45
  470. package/dist/ui/composer-rows.d.ts +0 -73
  471. package/dist/ui/composer-rows.js +0 -129
  472. package/dist/ui/console-bridge.d.ts +0 -19
  473. package/dist/ui/console-bridge.js +0 -52
  474. package/dist/ui/density.d.ts +0 -26
  475. package/dist/ui/density.js +0 -34
  476. package/dist/ui/display-tab.d.ts +0 -51
  477. package/dist/ui/display-tab.js +0 -82
  478. package/dist/ui/editor-navigation.d.ts +0 -55
  479. package/dist/ui/editor-navigation.js +0 -96
  480. package/dist/ui/editor-reducer.d.ts +0 -108
  481. package/dist/ui/editor-reducer.js +0 -187
  482. package/dist/ui/enter-frames.d.ts +0 -47
  483. package/dist/ui/enter-frames.js +0 -117
  484. package/dist/ui/entries/AssistantEntry.d.ts +0 -37
  485. package/dist/ui/entries/AssistantEntry.js +0 -43
  486. package/dist/ui/entries/CompactionCard.d.ts +0 -88
  487. package/dist/ui/entries/CompactionCard.js +0 -222
  488. package/dist/ui/entries/DiffView.d.ts +0 -61
  489. package/dist/ui/entries/DiffView.js +0 -103
  490. package/dist/ui/entries/EntryFrame.d.ts +0 -23
  491. package/dist/ui/entries/EntryFrame.js +0 -6
  492. package/dist/ui/entries/FastCard.d.ts +0 -53
  493. package/dist/ui/entries/FastCard.js +0 -105
  494. package/dist/ui/entries/GovernanceCard.d.ts +0 -30
  495. package/dist/ui/entries/GovernanceCard.js +0 -32
  496. package/dist/ui/entries/InvocationCard.d.ts +0 -20
  497. package/dist/ui/entries/InvocationCard.js +0 -32
  498. package/dist/ui/entries/QueuedEntry.d.ts +0 -27
  499. package/dist/ui/entries/QueuedEntry.js +0 -33
  500. package/dist/ui/entries/RetryCard.d.ts +0 -56
  501. package/dist/ui/entries/RetryCard.js +0 -60
  502. package/dist/ui/entries/ServiceCard.d.ts +0 -82
  503. package/dist/ui/entries/ServiceCard.js +0 -151
  504. package/dist/ui/entries/TeamCard.d.ts +0 -55
  505. package/dist/ui/entries/TeamCard.js +0 -94
  506. package/dist/ui/entries/TodoCard.d.ts +0 -54
  507. package/dist/ui/entries/TodoCard.js +0 -98
  508. package/dist/ui/entries/ToolCard.d.ts +0 -81
  509. package/dist/ui/entries/ToolCard.js +0 -160
  510. package/dist/ui/entries/ToolPreview.d.ts +0 -59
  511. package/dist/ui/entries/ToolPreview.js +0 -208
  512. package/dist/ui/entries/UserEntry.d.ts +0 -36
  513. package/dist/ui/entries/UserEntry.js +0 -57
  514. package/dist/ui/exit-snapshot.d.ts +0 -43
  515. package/dist/ui/exit-snapshot.js +0 -26
  516. package/dist/ui/frame-differ.d.ts +0 -166
  517. package/dist/ui/frame-differ.js +0 -354
  518. package/dist/ui/frame-observer.d.ts +0 -17
  519. package/dist/ui/frame-observer.js +0 -94
  520. package/dist/ui/frame-parser.d.ts +0 -7
  521. package/dist/ui/frame-parser.js +0 -18
  522. package/dist/ui/gauge.d.ts +0 -39
  523. package/dist/ui/gauge.js +0 -55
  524. package/dist/ui/glyphs.d.ts +0 -178
  525. package/dist/ui/glyphs.js +0 -165
  526. package/dist/ui/governance-copy.d.ts +0 -69
  527. package/dist/ui/governance-copy.js +0 -104
  528. package/dist/ui/governance-status.d.ts +0 -145
  529. package/dist/ui/governance-status.js +0 -326
  530. package/dist/ui/gradient.d.ts +0 -11
  531. package/dist/ui/gradient.js +0 -50
  532. package/dist/ui/ink-runtime.d.ts +0 -4
  533. package/dist/ui/ink-runtime.js +0 -51
  534. package/dist/ui/interaction-copy.d.ts +0 -82
  535. package/dist/ui/interaction-copy.js +0 -38
  536. package/dist/ui/interaction-hints.d.ts +0 -44
  537. package/dist/ui/interaction-hints.js +0 -97
  538. package/dist/ui/layout/AppShell.d.ts +0 -17
  539. package/dist/ui/layout/AppShell.js +0 -6
  540. package/dist/ui/layout/Gutter.d.ts +0 -67
  541. package/dist/ui/layout/Gutter.js +0 -42
  542. package/dist/ui/layout/MeasuredEntry.d.ts +0 -21
  543. package/dist/ui/layout/MeasuredEntry.js +0 -30
  544. package/dist/ui/layout/OverlayFrame.d.ts +0 -73
  545. package/dist/ui/layout/OverlayFrame.js +0 -110
  546. package/dist/ui/layout/ScrollIndicator.d.ts +0 -32
  547. package/dist/ui/layout/ScrollIndicator.js +0 -22
  548. package/dist/ui/layout/ScrollViewport.d.ts +0 -40
  549. package/dist/ui/layout/ScrollViewport.js +0 -222
  550. package/dist/ui/layout/agents-board.d.ts +0 -102
  551. package/dist/ui/layout/agents-board.js +0 -389
  552. package/dist/ui/layout/autocomplete.d.ts +0 -18
  553. package/dist/ui/layout/autocomplete.js +0 -26
  554. package/dist/ui/layout/budget.d.ts +0 -43
  555. package/dist/ui/layout/budget.js +0 -52
  556. package/dist/ui/layout/cells.d.ts +0 -61
  557. package/dist/ui/layout/cells.js +0 -156
  558. package/dist/ui/layout/document-layout.d.ts +0 -13
  559. package/dist/ui/layout/document-layout.js +0 -10
  560. package/dist/ui/layout/follow-state.d.ts +0 -138
  561. package/dist/ui/layout/follow-state.js +0 -148
  562. package/dist/ui/layout/frame.d.ts +0 -36
  563. package/dist/ui/layout/frame.js +0 -39
  564. package/dist/ui/layout/governance-board.d.ts +0 -121
  565. package/dist/ui/layout/governance-board.js +0 -382
  566. package/dist/ui/layout/governance-card.d.ts +0 -53
  567. package/dist/ui/layout/governance-card.js +0 -134
  568. package/dist/ui/layout/governance-chip.d.ts +0 -38
  569. package/dist/ui/layout/governance-chip.js +0 -64
  570. package/dist/ui/layout/governance-panel.d.ts +0 -85
  571. package/dist/ui/layout/governance-panel.js +0 -358
  572. package/dist/ui/layout/governance-roster.d.ts +0 -65
  573. package/dist/ui/layout/governance-roster.js +0 -275
  574. package/dist/ui/layout/header-hints.d.ts +0 -90
  575. package/dist/ui/layout/header-hints.js +0 -110
  576. package/dist/ui/layout/header-left.d.ts +0 -115
  577. package/dist/ui/layout/header-left.js +0 -206
  578. package/dist/ui/layout/invocation-card.d.ts +0 -41
  579. package/dist/ui/layout/invocation-card.js +0 -91
  580. package/dist/ui/layout/kit-chip.d.ts +0 -50
  581. package/dist/ui/layout/kit-chip.js +0 -81
  582. package/dist/ui/layout/overlay-window.d.ts +0 -43
  583. package/dist/ui/layout/overlay-window.js +0 -51
  584. package/dist/ui/layout/queue-layout.d.ts +0 -19
  585. package/dist/ui/layout/queue-layout.js +0 -26
  586. package/dist/ui/layout/rail.d.ts +0 -7
  587. package/dist/ui/layout/rail.js +0 -16
  588. package/dist/ui/layout/scroll-indicator.d.ts +0 -27
  589. package/dist/ui/layout/scroll-indicator.js +0 -36
  590. package/dist/ui/layout/scroll.d.ts +0 -37
  591. package/dist/ui/layout/scroll.js +0 -99
  592. package/dist/ui/layout/scrollbar-geometry.d.ts +0 -17
  593. package/dist/ui/layout/scrollbar-geometry.js +0 -13
  594. package/dist/ui/layout/session-chip.d.ts +0 -52
  595. package/dist/ui/layout/session-chip.js +0 -64
  596. package/dist/ui/layout/shortcut-panel-layout.d.ts +0 -191
  597. package/dist/ui/layout/shortcut-panel-layout.js +0 -321
  598. package/dist/ui/layout/status-detail-layout.d.ts +0 -9
  599. package/dist/ui/layout/status-detail-layout.js +0 -79
  600. package/dist/ui/layout/status-layout.d.ts +0 -139
  601. package/dist/ui/layout/status-layout.js +0 -253
  602. package/dist/ui/layout/task-summary-cell.d.ts +0 -61
  603. package/dist/ui/layout/task-summary-cell.js +0 -65
  604. package/dist/ui/layout/team-panel.d.ts +0 -18
  605. package/dist/ui/layout/team-panel.js +0 -25
  606. package/dist/ui/layout/team-row.d.ts +0 -139
  607. package/dist/ui/layout/team-row.js +0 -246
  608. package/dist/ui/layout/todo-layout.d.ts +0 -62
  609. package/dist/ui/layout/todo-layout.js +0 -102
  610. package/dist/ui/layout/useTerminalSize.d.ts +0 -13
  611. package/dist/ui/layout/useTerminalSize.js +0 -50
  612. package/dist/ui/layout/viewport-geometry.d.ts +0 -29
  613. package/dist/ui/layout/viewport-geometry.js +0 -28
  614. package/dist/ui/layout/virtual-window.d.ts +0 -112
  615. package/dist/ui/layout/virtual-window.js +0 -488
  616. package/dist/ui/layout/wrap-rows.d.ts +0 -26
  617. package/dist/ui/layout/wrap-rows.js +0 -88
  618. package/dist/ui/live-clamp.d.ts +0 -14
  619. package/dist/ui/live-clamp.js +0 -46
  620. package/dist/ui/markdown-blocks.d.ts +0 -107
  621. package/dist/ui/markdown-blocks.js +0 -240
  622. package/dist/ui/overlays/AgentsBoardOverlay.d.ts +0 -57
  623. package/dist/ui/overlays/AgentsBoardOverlay.js +0 -183
  624. package/dist/ui/overlays/ConfirmDialog.d.ts +0 -31
  625. package/dist/ui/overlays/ConfirmDialog.js +0 -44
  626. package/dist/ui/overlays/GovernanceBoardOverlay.d.ts +0 -41
  627. package/dist/ui/overlays/GovernanceBoardOverlay.js +0 -76
  628. package/dist/ui/overlays/GovernanceSettingsPage.d.ts +0 -48
  629. package/dist/ui/overlays/GovernanceSettingsPage.js +0 -93
  630. package/dist/ui/overlays/HelpOverlay.d.ts +0 -29
  631. package/dist/ui/overlays/HelpOverlay.js +0 -232
  632. package/dist/ui/overlays/KitEditor.d.ts +0 -23
  633. package/dist/ui/overlays/KitEditor.js +0 -101
  634. package/dist/ui/overlays/KitManager.d.ts +0 -23
  635. package/dist/ui/overlays/KitManager.js +0 -104
  636. package/dist/ui/overlays/KitPicker.d.ts +0 -49
  637. package/dist/ui/overlays/KitPicker.js +0 -58
  638. package/dist/ui/overlays/ModelDiscoveryList.d.ts +0 -23
  639. package/dist/ui/overlays/ModelDiscoveryList.js +0 -161
  640. package/dist/ui/overlays/ModelPicker.d.ts +0 -26
  641. package/dist/ui/overlays/ModelPicker.js +0 -63
  642. package/dist/ui/overlays/ModelProfileEditor.d.ts +0 -29
  643. package/dist/ui/overlays/ModelProfileEditor.js +0 -168
  644. package/dist/ui/overlays/ModelProfilePicker.d.ts +0 -48
  645. package/dist/ui/overlays/ModelProfilePicker.js +0 -231
  646. package/dist/ui/overlays/PlanReviewOverlay.d.ts +0 -51
  647. package/dist/ui/overlays/PlanReviewOverlay.js +0 -132
  648. package/dist/ui/overlays/PromptEditorPage.d.ts +0 -48
  649. package/dist/ui/overlays/PromptEditorPage.js +0 -227
  650. package/dist/ui/overlays/PromptLibraryOverlay.d.ts +0 -37
  651. package/dist/ui/overlays/PromptLibraryOverlay.js +0 -191
  652. package/dist/ui/overlays/PromptPicker.d.ts +0 -36
  653. package/dist/ui/overlays/PromptPicker.js +0 -129
  654. package/dist/ui/overlays/PromptTextArea.d.ts +0 -86
  655. package/dist/ui/overlays/PromptTextArea.js +0 -141
  656. package/dist/ui/overlays/QuestionOverlay.d.ts +0 -39
  657. package/dist/ui/overlays/QuestionOverlay.js +0 -258
  658. package/dist/ui/overlays/QueueOverlay.d.ts +0 -22
  659. package/dist/ui/overlays/QueueOverlay.js +0 -79
  660. package/dist/ui/overlays/SettingsScreen.d.ts +0 -228
  661. package/dist/ui/overlays/SettingsScreen.js +0 -1037
  662. package/dist/ui/overlays/ShortcutPanel.d.ts +0 -39
  663. package/dist/ui/overlays/ShortcutPanel.js +0 -106
  664. package/dist/ui/overlays/TeamFanoutPage.d.ts +0 -51
  665. package/dist/ui/overlays/TeamFanoutPage.js +0 -90
  666. package/dist/ui/overlays/governance-settings.d.ts +0 -79
  667. package/dist/ui/overlays/governance-settings.js +0 -140
  668. package/dist/ui/overlays/kit-picker-state.d.ts +0 -87
  669. package/dist/ui/overlays/kit-picker-state.js +0 -136
  670. package/dist/ui/overlays/kit-settings-state.d.ts +0 -129
  671. package/dist/ui/overlays/kit-settings-state.js +0 -268
  672. package/dist/ui/overlays/model-probe-view.d.ts +0 -128
  673. package/dist/ui/overlays/model-probe-view.js +0 -225
  674. package/dist/ui/overlays/model-profile-state.d.ts +0 -177
  675. package/dist/ui/overlays/model-profile-state.js +0 -301
  676. package/dist/ui/overlays/prompt-library-state.d.ts +0 -162
  677. package/dist/ui/overlays/prompt-library-state.js +0 -335
  678. package/dist/ui/overlays/prompt-picker-state.d.ts +0 -71
  679. package/dist/ui/overlays/prompt-picker-state.js +0 -98
  680. package/dist/ui/overlays/team-fanout-state.d.ts +0 -106
  681. package/dist/ui/overlays/team-fanout-state.js +0 -155
  682. package/dist/ui/overlays/use-model-probe.d.ts +0 -30
  683. package/dist/ui/overlays/use-model-probe.js +0 -109
  684. package/dist/ui/palettes.d.ts +0 -112
  685. package/dist/ui/palettes.js +0 -130
  686. package/dist/ui/paste-frames.d.ts +0 -91
  687. package/dist/ui/paste-frames.js +0 -117
  688. package/dist/ui/paste-tokens.d.ts +0 -90
  689. package/dist/ui/paste-tokens.js +0 -147
  690. package/dist/ui/render-cache.d.ts +0 -81
  691. package/dist/ui/render-cache.js +0 -196
  692. package/dist/ui/render-governor.d.ts +0 -54
  693. package/dist/ui/render-governor.js +0 -78
  694. package/dist/ui/run-metrics.d.ts +0 -23
  695. package/dist/ui/run-metrics.js +0 -27
  696. package/dist/ui/run-status-row.d.ts +0 -61
  697. package/dist/ui/run-status-row.js +0 -54
  698. package/dist/ui/screen.d.ts +0 -107
  699. package/dist/ui/screen.js +0 -234
  700. package/dist/ui/scrollback/LiveTail.d.ts +0 -115
  701. package/dist/ui/scrollback/LiveTail.js +0 -48
  702. package/dist/ui/scrollback/band.d.ts +0 -114
  703. package/dist/ui/scrollback/band.js +0 -143
  704. package/dist/ui/scrollback/budget.d.ts +0 -90
  705. package/dist/ui/scrollback/budget.js +0 -100
  706. package/dist/ui/scrollback/canvas.d.ts +0 -100
  707. package/dist/ui/scrollback/canvas.js +0 -114
  708. package/dist/ui/scrollback/cursor-probe.d.ts +0 -71
  709. package/dist/ui/scrollback/cursor-probe.js +0 -133
  710. package/dist/ui/scrollback/drain.d.ts +0 -32
  711. package/dist/ui/scrollback/drain.js +0 -64
  712. package/dist/ui/scrollback/exit-summary.d.ts +0 -23
  713. package/dist/ui/scrollback/exit-summary.js +0 -25
  714. package/dist/ui/scrollback/limits.d.ts +0 -98
  715. package/dist/ui/scrollback/limits.js +0 -98
  716. package/dist/ui/scrollback/live-preview.d.ts +0 -34
  717. package/dist/ui/scrollback/live-preview.js +0 -118
  718. package/dist/ui/scrollback/overflow-print.d.ts +0 -108
  719. package/dist/ui/scrollback/overflow-print.js +0 -120
  720. package/dist/ui/scrollback/renderer.d.ts +0 -48
  721. package/dist/ui/scrollback/renderer.js +0 -186
  722. package/dist/ui/scrollback/scrollback-writer.d.ts +0 -174
  723. package/dist/ui/scrollback/scrollback-writer.js +0 -648
  724. package/dist/ui/scrollback/settled-boundary.d.ts +0 -42
  725. package/dist/ui/scrollback/settled-boundary.js +0 -109
  726. package/dist/ui/scrollback/tail-anchor.d.ts +0 -71
  727. package/dist/ui/scrollback/tail-anchor.js +0 -79
  728. package/dist/ui/scrollback/tail-window.d.ts +0 -73
  729. package/dist/ui/scrollback/tail-window.js +0 -89
  730. package/dist/ui/scrollback/use-scrollback-view.d.ts +0 -139
  731. package/dist/ui/scrollback/use-scrollback-view.js +0 -601
  732. package/dist/ui/scrollback/writer-shapes.d.ts +0 -127
  733. package/dist/ui/scrollback/writer-shapes.js +0 -159
  734. package/dist/ui/scrollbar-controller.d.ts +0 -30
  735. package/dist/ui/scrollbar-controller.js +0 -124
  736. package/dist/ui/selection/highlight.d.ts +0 -39
  737. package/dist/ui/selection/highlight.js +0 -64
  738. package/dist/ui/selection/screen-mirror.d.ts +0 -24
  739. package/dist/ui/selection/screen-mirror.js +0 -35
  740. package/dist/ui/selection/selection-controller.d.ts +0 -104
  741. package/dist/ui/selection/selection-controller.js +0 -372
  742. package/dist/ui/selection/selection.d.ts +0 -90
  743. package/dist/ui/selection/selection.js +0 -223
  744. package/dist/ui/shortcuts.d.ts +0 -81
  745. package/dist/ui/shortcuts.js +0 -221
  746. package/dist/ui/status-feedback.d.ts +0 -35
  747. package/dist/ui/status-feedback.js +0 -38
  748. package/dist/ui/stdout-frame-writer.d.ts +0 -74
  749. package/dist/ui/stdout-frame-writer.js +0 -155
  750. package/dist/ui/team-status.d.ts +0 -166
  751. package/dist/ui/team-status.js +0 -252
  752. package/dist/ui/terminal-plan.d.ts +0 -52
  753. package/dist/ui/terminal-plan.js +0 -49
  754. package/dist/ui/theme.d.ts +0 -96
  755. package/dist/ui/theme.js +0 -130
  756. package/dist/ui/transcript-text.d.ts +0 -41
  757. package/dist/ui/transcript-text.js +0 -282
  758. package/dist/ui/use-height-store.d.ts +0 -31
  759. package/dist/ui/use-height-store.js +0 -76
  760. package/dist/ui/use-render-governor.d.ts +0 -39
  761. package/dist/ui/use-render-governor.js +0 -57
  762. package/dist/ui/use-wheel-routing.d.ts +0 -57
  763. package/dist/ui/use-wheel-routing.js +0 -152
  764. package/dist/ui/win-vt-force.d.ts +0 -136
  765. package/dist/ui/win-vt-force.js +0 -237
  766. package/dist/ui/win-vt-input.d.ts +0 -57
  767. package/dist/ui/win-vt-input.js +0 -62
  768. package/dist/update/limits.d.ts +0 -111
  769. package/dist/update/limits.js +0 -111
  770. package/dist/update/semver.d.ts +0 -89
  771. package/dist/update/semver.js +0 -295
  772. package/dist/update/types.d.ts +0 -169
  773. package/dist/update/types.js +0 -68
  774. /package/dist/{ui → app}/session-bridge.d.ts +0 -0
  775. /package/dist/{ui → app}/session-bridge.js +0 -0
@@ -1,156 +0,0 @@
1
- /**
2
- * Display-width cell arithmetic (tui-subagent-panel §5 #1).
3
- *
4
- * EVERY FUNCTION HERE IS PURE AND TOTAL: no Ink, no clock, no terminal, and no
5
- * input that throws. The panel row and the Agents board both need to place text
6
- * in a FIXED number of terminal columns, and `padEnd` cannot do that: it counts
7
- * code units while a terminal counts cells, so a CJK description padded with
8
- * `padEnd` overflows its box by one column per wide character and pushes the
9
- * next cell off the row. That is exactly the defect this round removes from the
10
- * roster, one layer down.
11
- *
12
- * ASCII ONLY: `src/ui/**` is inside `glyphs.test.ts`'s static scan, so the
13
- * ellipsis and any other symbol a caller wants must be passed IN (the board
14
- * hands over `glyphs.ellipsis`), never spelled here.
15
- */
16
- import stringWidth from 'string-width';
17
- /** Invalid geometry becomes zero, exactly like the layout modules' `nonNegativeInt`. */
18
- function nonNegativeInt(value) {
19
- return Number.isFinite(value) ? Math.max(0, Math.floor(value)) : 0;
20
- }
21
- /** Display columns a string occupies, or 0 for a non-string (defensive at the edge only). */
22
- export function cellWidth(text) {
23
- if (typeof text !== 'string' || text.length === 0)
24
- return 0;
25
- return stringWidth(text);
26
- }
27
- /**
28
- * Cut `text` to at most `cells` display columns, marking the cut with `ellipsis`.
29
- *
30
- * THE ELLIPSIS IS PART OF THE BUDGET, not an extra column: a caller that asks for
31
- * 8 cells gets a string that MEASURES 8, which is what makes a fixed-width cell
32
- * a cell rather than a hope. When the budget cannot hold the ellipsis plus one
33
- * character, the string is hard-cut instead - a marker wider than the cell it
34
- * marks is the one outcome worse than no marker.
35
- *
36
- * Wide characters are never split: a surrogate pair or a double-width glyph that
37
- * does not fit is dropped whole, so the result can measure one column less than
38
- * asked but never one more.
39
- */
40
- export function fitCells(text, cells, ellipsis = '...') {
41
- const budget = nonNegativeInt(cells);
42
- if (budget === 0)
43
- return '';
44
- if (cellWidth(text) <= budget)
45
- return text;
46
- const mark = cellWidth(ellipsis) < budget ? ellipsis : '';
47
- const room = budget - cellWidth(mark);
48
- let out = '';
49
- let used = 0;
50
- // `Array.from` iterates by CODE POINT, so a surrogate pair is one step and can
51
- // never be cut in half by this loop.
52
- for (const char of Array.from(text)) {
53
- const width = cellWidth(char);
54
- if (used + width > room)
55
- break;
56
- out += char;
57
- used += width;
58
- }
59
- return `${out}${mark}`;
60
- }
61
- /**
62
- * Pad `text` to exactly `cells` columns (or leave it alone when it already
63
- * measures at least that).
64
- *
65
- * NOT `padEnd`: see this file's header. A padded cell is what keeps the next
66
- * column at a stable offset, which is the whole point of the panel's table.
67
- */
68
- export function padCells(text, cells) {
69
- const budget = nonNegativeInt(cells);
70
- const width = cellWidth(text);
71
- if (width >= budget)
72
- return text;
73
- return `${text}${' '.repeat(budget - width)}`;
74
- }
75
- /** `fitCells` then `padCells`: the result ALWAYS measures exactly `cells`. */
76
- export function alignRightCells(text, cells, ellipsis = '...') {
77
- const budget = nonNegativeInt(cells);
78
- return padCells(fitCells(text, budget, ellipsis), budget);
79
- }
80
- /**
81
- * Fold `text` into at most `maxRows` lines of at most `cells` columns each.
82
- *
83
- * BREAKS AT SPACES, HARD-CUTS ONLY WHEN A SINGLE TOKEN CANNOT FIT: a word that is
84
- * wider than the column is the one case where an honest over-long token beats a
85
- * line of nothing, so it is cut rather than pushed to a line that still cannot
86
- * hold it. The last allowed line, when text remains, carries the `(+N lines)`
87
- * tail so the reader learns that the section was truncated instead of believing
88
- * the prose ended mid-sentence.
89
- *
90
- * Pure and total: `cells <= 0` or `maxRows <= 0` yields no lines, and the caller
91
- * decides what an empty section means (the board omits it).
92
- */
93
- export function wrapCells(text, cells, maxRows, ellipsis = '...') {
94
- const width = nonNegativeInt(cells);
95
- const limit = nonNegativeInt(maxRows);
96
- const flat = (text ?? '').replace(/\s+/g, ' ').trim();
97
- if (width === 0 || limit === 0 || flat.length === 0) {
98
- return { lines: [], dropped: flat.length === 0 ? 0 : limit === 0 ? 1 : 0 };
99
- }
100
- const lines = [];
101
- let rest = flat;
102
- while (rest.length > 0) {
103
- if (cellWidth(rest) <= width) {
104
- lines.push(rest);
105
- rest = '';
106
- break;
107
- }
108
- const cut = breakCells(rest, width);
109
- lines.push(cut.line);
110
- rest = cut.rest;
111
- }
112
- if (lines.length <= limit)
113
- return { lines, dropped: 0 };
114
- const kept = lines.slice(0, limit);
115
- const dropped = lines.length - limit;
116
- const tail = `(+${dropped} lines)`;
117
- // THE ANNOUNCEMENT IS RESERVED, not appended and then truncated away: a reader who
118
- // sees prose stop mid-sentence with no marker reads it as the end of the fact, which
119
- // is exactly the wrong conclusion. When the column is too narrow to hold the marker
120
- // at all, the line is simply cut - the caller's section is unusable at that width.
121
- const tailCells = cellWidth(tail) + 1;
122
- const last = kept[limit - 1] ?? '';
123
- kept[limit - 1] = tailCells < width
124
- ? `${fitCells(last, width - tailCells, ellipsis)} ${tail}`
125
- : fitCells(last, width, ellipsis);
126
- return { lines: kept, dropped };
127
- }
128
- /**
129
- * The longest prefix of `text` that fits `width` columns, preferring a space.
130
- *
131
- * Returns the consumed line and what is left, so the caller's loop is one
132
- * assignment per iteration and the "one function does one thing" rule holds.
133
- */
134
- function breakCells(text, width) {
135
- let used = 0;
136
- let taken = 0;
137
- let lastSpace = -1;
138
- for (const char of Array.from(text)) {
139
- const charWidth = cellWidth(char);
140
- if (used + charWidth > width)
141
- break;
142
- used += charWidth;
143
- taken += char.length;
144
- if (char === ' ')
145
- lastSpace = taken;
146
- }
147
- // A single token wider than the column: hard-cut it rather than emit nothing.
148
- if (taken === 0) {
149
- const first = Array.from(text)[0] ?? '';
150
- return { line: fitCells(first, width), rest: text.slice(first.length) };
151
- }
152
- if (lastSpace > 0) {
153
- return { line: text.slice(0, lastSpace).trimEnd(), rest: text.slice(lastSpace).trimStart() };
154
- }
155
- return { line: text.slice(0, taken), rest: text.slice(taken).trimStart() };
156
- }
@@ -1,13 +0,0 @@
1
- export interface DocumentLayoutInput {
2
- viewportRows: number;
3
- bodyRows: number;
4
- footerRows: number;
5
- }
6
- export interface DocumentLayout {
7
- viewportRows: number;
8
- paddingRows: number;
9
- contentRows: number;
10
- trailingContentRows: number;
11
- }
12
- /** Allocate the shared document, filling short sessions before the panels. */
13
- export declare function buildDocumentLayout(input: DocumentLayoutInput): DocumentLayout;
@@ -1,10 +0,0 @@
1
- /** Allocate the shared document, filling short sessions before the panels. */
2
- export function buildDocumentLayout(input) {
3
- const count = (n) => Number.isFinite(n) ? Math.max(0, Math.floor(n)) : 0;
4
- const viewportRows = count(input.viewportRows);
5
- const body = count(input.bodyRows);
6
- const footer = count(input.footerRows);
7
- const paddingRows = Math.max(0, viewportRows - body - footer);
8
- return { viewportRows, paddingRows, contentRows: body + paddingRows + footer,
9
- trailingContentRows: paddingRows + footer };
10
- }
@@ -1,138 +0,0 @@
1
- /**
2
- * Follow rules for the self-drawn viewport (tui-selection-and-scroll-follow
3
- * §4.3). PURE, React-free, unit-tested — the shape `scroll.ts`,
4
- * `virtual-window.ts` and `frame-differ.ts` all already use.
5
- *
6
- * It lives here rather than inside `ScrollViewport` because
7
- * `ink-testing-library`'s stdout stub reports no height, so a MOUNTED viewport
8
- * measures `content === viewport`, `overflowLines === 0`, and neither rule below
9
- * ever engages (`__tests__/render-at-width.ts`, and `transcript-virtual.test.tsx`
10
- * records the same limitation and the same workaround). A state machine that can
11
- * only be exercised through a box the test cannot size is a state machine with
12
- * no tests (P1-10).
13
- *
14
- * ═══════════════════════════════════════════════════════════════════════════
15
- * NOTHING IN THIS FILE MAY READ A MEASUREMENT (AC-17, and it is a `grep`).
16
- *
17
- * The gate is a `grep` for the name of Ink's element-measuring helper returning
18
- * NOTHING from this file, so that name is deliberately left unspelled here and
19
- * below, even where writing it would read more directly. A grep a COMMENT can
20
- * trip is a grep whoever runs it learns to ignore, and then the import it exists
21
- * to catch walks straight past it — the same reason `glyphs.test.ts` strips
22
- * comments before judging a line.
23
- *
24
- * The transcript's MEASURED CONTENT HEIGHT — what `ScrollViewport` reads out of
25
- * Ink's layout for the inner box — is the height of everything the transcript is
26
- * currently drawing, and FOUR different things move it — only one of which is
27
- * "the agent produced output":
28
- *
29
- * 1. rows appended at the tail <- Rule A must react
30
- * 2. an entry ABOVE the reading position changing <- must NOT move
31
- * height (Ctrl+T, Ctrl+O, a first real measurement
32
- * of an entry that stood on an estimate)
33
- * 3. the scroll horizon dropping entries off the <- must NOT move
34
- * FRONT (`Transcript.tsx`, `entries.slice(-size)`)
35
- * 4. a re-wrap after a resize <- must NOT move
36
- *
37
- * For (2) and (3) `virtual-window.ts`'s invariant V-4 is explicit: counting the
38
- * offset FROM THE BOTTOM makes an above-the-viewport height change
39
- * self-compensating, and that is what buys virtualisation its "no
40
- * scroll-anchoring compensation pass required". Reacting to total content growth
41
- * would make Rule A that compensation pass, applied to changes that never needed
42
- * compensating — and it would additionally make (3) look like new output and arm
43
- * the idle timer on a transcript that produced nothing, the exact failure G6
44
- * exists to prevent.
45
- *
46
- * There is a second, sharper reason. `selectWindow` TAKES `offset` AS AN INPUT,
47
- * so the mounted set — and therefore which entries are measured rather than
48
- * estimated — is a function of the offset. An offset that is in turn a function
49
- * of the measured height closes a loop: offset -> mounted set -> measured
50
- * heights -> content height -> offset. The loop is broken by the INPUT rather
51
- * than by a convergence argument: `advanceTailRows` reads the height table and
52
- * never the geometry context (P0-1 / D-13).
53
- * ═══════════════════════════════════════════════════════════════════════════
54
- */
55
- export interface FollowInput {
56
- /** Current RENDERED (already clamped) offset — see the caller's P1-9 note. */
57
- offset: number;
58
- overflowLines: number;
59
- /** Signed: rows appended at (or removed from) the tail since the last frame. */
60
- tailDelta: number;
61
- layoutTailDelta?: number;
62
- /** True while a selection drag holds the viewport (§4.4). */
63
- hold: boolean;
64
- newLinesWhilePaused: number;
65
- }
66
- export interface FollowOutput {
67
- offset: number;
68
- newLinesWhilePaused: number;
69
- }
70
- /**
71
- * Rule A. When rows are appended AT THE TAIL while the user is not pinned to the
72
- * bottom, grow the offset by the same amount: `shiftUp = overflowLines - offset`
73
- * is then constant and the rows on screen do not move.
74
- *
75
- * SIGNED, NOT GROWTH-ONLY (I-7). A tail SHRINK is rows that no longer exist
76
- * below the reading position, so shrinking the offset by the same amount is what
77
- * keeps the screen still — and it is self-correcting when the source of the
78
- * delta was an upper-bound height estimate that a later measurement brings down
79
- * (`estimateEntryRows` is deliberately an upper bound). An unsigned rule
80
- * over-counts once and never finds its way back.
81
- */
82
- export declare function reduceFollow(input: FollowInput): FollowOutput;
83
- export interface ResumeInput {
84
- /** `scrollResumeMs`; `0` (or anything non-finite) disables auto-resume. */
85
- resumeMs: number;
86
- offset: number;
87
- newLinesWhilePaused: number;
88
- hold: boolean;
89
- }
90
- /**
91
- * Rule B's three conditions, and they are three rather than one on purpose:
92
- *
93
- * 1. `offset > 0` — there is somewhere to return FROM;
94
- * 2. `newLines > 0` — something arrived that is worth returning TO. THIS IS
95
- * G6: a user reading a FINISHED transcript is never yanked to the bottom,
96
- * which is the new bug that a timing-only rule would ship wearing the fix's
97
- * clothes (D-3);
98
- * 3. `!hold` — no selection drag is in progress (§4.4).
99
- *
100
- * AC-9 rides on the first line: with `scrollResumeMs: 0` this returns `false`
101
- * before anything else is considered, so no timer is ever created.
102
- */
103
- export declare function shouldArmResume(input: ResumeInput): boolean;
104
- /**
105
- * What the transcript publishes through a ref written during render.
106
- *
107
- * `lastHeight` is not decoration: §4.3.1a defines the per-frame delta as "heights
108
- * of entries after the previously-last entry PLUS the delta of that entry's own
109
- * height (a streaming entry grows in place)", and the second term cannot be
110
- * computed without remembering what that height was.
111
- */
112
- export interface TailState {
113
- /** Monotonic-ish cumulative count of rows produced at the tail. Signed deltas. */
114
- rows: number;
115
- /** Identity anchor — the last entry's id when this state was written. */
116
- lastId: string | null;
117
- /** That entry's height when this state was written. */
118
- lastHeight: number;
119
- }
120
- export interface TailSink {
121
- current: TailState;
122
- }
123
- export declare function emptyTailState(): TailState;
124
- /**
125
- * Advance the tail counter by one frame.
126
- *
127
- * `ids` are the entries the transcript is drawing, in order; `heightOf(index)`
128
- * is the transcript's own per-entry height table (measured where it exists, an
129
- * upper-bound estimate where it does not). NO GEOMETRY IS READ HERE, which is
130
- * what breaks P0-1's loop by construction.
131
- *
132
- * RE-ANCHORING CONTRIBUTES ZERO (R-11). When the scroll horizon drops the entry
133
- * this counter was anchored on, the anchor is simply moved to the new last entry
134
- * and the frame contributes a delta of 0. Losing one frame of anchoring is a row
135
- * of drift at worst; treating a FRONT-DROP as tail motion is a visible jump, and
136
- * an unbounded one.
137
- */
138
- export declare function advanceTailRows(prev: TailState, ids: readonly string[], heightOf: (index: number) => number): TailState;
@@ -1,148 +0,0 @@
1
- /**
2
- * Follow rules for the self-drawn viewport (tui-selection-and-scroll-follow
3
- * §4.3). PURE, React-free, unit-tested — the shape `scroll.ts`,
4
- * `virtual-window.ts` and `frame-differ.ts` all already use.
5
- *
6
- * It lives here rather than inside `ScrollViewport` because
7
- * `ink-testing-library`'s stdout stub reports no height, so a MOUNTED viewport
8
- * measures `content === viewport`, `overflowLines === 0`, and neither rule below
9
- * ever engages (`__tests__/render-at-width.ts`, and `transcript-virtual.test.tsx`
10
- * records the same limitation and the same workaround). A state machine that can
11
- * only be exercised through a box the test cannot size is a state machine with
12
- * no tests (P1-10).
13
- *
14
- * ═══════════════════════════════════════════════════════════════════════════
15
- * NOTHING IN THIS FILE MAY READ A MEASUREMENT (AC-17, and it is a `grep`).
16
- *
17
- * The gate is a `grep` for the name of Ink's element-measuring helper returning
18
- * NOTHING from this file, so that name is deliberately left unspelled here and
19
- * below, even where writing it would read more directly. A grep a COMMENT can
20
- * trip is a grep whoever runs it learns to ignore, and then the import it exists
21
- * to catch walks straight past it — the same reason `glyphs.test.ts` strips
22
- * comments before judging a line.
23
- *
24
- * The transcript's MEASURED CONTENT HEIGHT — what `ScrollViewport` reads out of
25
- * Ink's layout for the inner box — is the height of everything the transcript is
26
- * currently drawing, and FOUR different things move it — only one of which is
27
- * "the agent produced output":
28
- *
29
- * 1. rows appended at the tail <- Rule A must react
30
- * 2. an entry ABOVE the reading position changing <- must NOT move
31
- * height (Ctrl+T, Ctrl+O, a first real measurement
32
- * of an entry that stood on an estimate)
33
- * 3. the scroll horizon dropping entries off the <- must NOT move
34
- * FRONT (`Transcript.tsx`, `entries.slice(-size)`)
35
- * 4. a re-wrap after a resize <- must NOT move
36
- *
37
- * For (2) and (3) `virtual-window.ts`'s invariant V-4 is explicit: counting the
38
- * offset FROM THE BOTTOM makes an above-the-viewport height change
39
- * self-compensating, and that is what buys virtualisation its "no
40
- * scroll-anchoring compensation pass required". Reacting to total content growth
41
- * would make Rule A that compensation pass, applied to changes that never needed
42
- * compensating — and it would additionally make (3) look like new output and arm
43
- * the idle timer on a transcript that produced nothing, the exact failure G6
44
- * exists to prevent.
45
- *
46
- * There is a second, sharper reason. `selectWindow` TAKES `offset` AS AN INPUT,
47
- * so the mounted set — and therefore which entries are measured rather than
48
- * estimated — is a function of the offset. An offset that is in turn a function
49
- * of the measured height closes a loop: offset -> mounted set -> measured
50
- * heights -> content height -> offset. The loop is broken by the INPUT rather
51
- * than by a convergence argument: `advanceTailRows` reads the height table and
52
- * never the geometry context (P0-1 / D-13).
53
- * ═══════════════════════════════════════════════════════════════════════════
54
- */
55
- import { clampScroll } from './scroll.js';
56
- /**
57
- * Rule A. When rows are appended AT THE TAIL while the user is not pinned to the
58
- * bottom, grow the offset by the same amount: `shiftUp = overflowLines - offset`
59
- * is then constant and the rows on screen do not move.
60
- *
61
- * SIGNED, NOT GROWTH-ONLY (I-7). A tail SHRINK is rows that no longer exist
62
- * below the reading position, so shrinking the offset by the same amount is what
63
- * keeps the screen still — and it is self-correcting when the source of the
64
- * delta was an upper-bound height estimate that a later measurement brings down
65
- * (`estimateEntryRows` is deliberately an upper bound). An unsigned rule
66
- * over-counts once and never finds its way back.
67
- */
68
- export function reduceFollow(input) {
69
- const { offset, overflowLines, tailDelta, hold } = input;
70
- // Pinned and not holding: anchoring is free — `offset` stays 0 and the
71
- // existing arithmetic keeps showing the tail. `hold` LIFTS the precondition
72
- // because a drag that starts while pinned must still freeze the rows under the
73
- // pointer (S3), and freezing means the pin becomes an anchor for the duration
74
- // of the drag (T-20).
75
- if (offset === 0 && !hold)
76
- return { offset, newLinesWhilePaused: 0 };
77
- const next = clampScroll(offset + tailDelta + (input.layoutTailDelta ?? 0), overflowLines);
78
- return {
79
- offset: next,
80
- // Only real arrivals arm the resume timer, and reaching the bottom by ANY
81
- // route resets the count (Rule B condition 2 / G6). Expressing the reset
82
- // here is what keeps it one rule rather than two.
83
- newLinesWhilePaused: next === 0 ? 0 : Math.max(0, input.newLinesWhilePaused + tailDelta),
84
- };
85
- }
86
- /**
87
- * Rule B's three conditions, and they are three rather than one on purpose:
88
- *
89
- * 1. `offset > 0` — there is somewhere to return FROM;
90
- * 2. `newLines > 0` — something arrived that is worth returning TO. THIS IS
91
- * G6: a user reading a FINISHED transcript is never yanked to the bottom,
92
- * which is the new bug that a timing-only rule would ship wearing the fix's
93
- * clothes (D-3);
94
- * 3. `!hold` — no selection drag is in progress (§4.4).
95
- *
96
- * AC-9 rides on the first line: with `scrollResumeMs: 0` this returns `false`
97
- * before anything else is considered, so no timer is ever created.
98
- */
99
- export function shouldArmResume(input) {
100
- if (!Number.isFinite(input.resumeMs) || input.resumeMs <= 0)
101
- return false;
102
- if (input.offset <= 0)
103
- return false;
104
- if (input.newLinesWhilePaused <= 0)
105
- return false;
106
- if (input.hold)
107
- return false;
108
- return true;
109
- }
110
- export function emptyTailState() {
111
- return { rows: 0, lastId: null, lastHeight: 0 };
112
- }
113
- /**
114
- * Advance the tail counter by one frame.
115
- *
116
- * `ids` are the entries the transcript is drawing, in order; `heightOf(index)`
117
- * is the transcript's own per-entry height table (measured where it exists, an
118
- * upper-bound estimate where it does not). NO GEOMETRY IS READ HERE, which is
119
- * what breaks P0-1's loop by construction.
120
- *
121
- * RE-ANCHORING CONTRIBUTES ZERO (R-11). When the scroll horizon drops the entry
122
- * this counter was anchored on, the anchor is simply moved to the new last entry
123
- * and the frame contributes a delta of 0. Losing one frame of anchoring is a row
124
- * of drift at worst; treating a FRONT-DROP as tail motion is a visible jump, and
125
- * an unbounded one.
126
- */
127
- export function advanceTailRows(prev, ids, heightOf) {
128
- if (ids.length === 0)
129
- return { rows: prev.rows, lastId: null, lastHeight: 0 };
130
- const lastIndex = ids.length - 1;
131
- const lastId = ids[lastIndex];
132
- const lastHeight = heightOf(lastIndex);
133
- if (prev.lastId === null) {
134
- // First frame: there is no "before", so there is no delta to attribute.
135
- return { rows: prev.rows, lastId, lastHeight };
136
- }
137
- const anchor = ids.lastIndexOf(prev.lastId);
138
- if (anchor === -1) {
139
- // The anchor is gone (horizon front-drop, `/clear`, `/reset`, `/resume`).
140
- return { rows: prev.rows, lastId, lastHeight };
141
- }
142
- // The anchor entry may have grown in place (a streaming tail entry), and
143
- // everything after it is new. Both terms are signed.
144
- let delta = heightOf(anchor) - prev.lastHeight;
145
- for (let i = anchor + 1; i <= lastIndex; i += 1)
146
- delta += heightOf(i);
147
- return { rows: prev.rows + delta, lastId, lastHeight };
148
- }
@@ -1,36 +0,0 @@
1
- /**
2
- * Frame geometry + render-mode decision (spec §4.1 / §4.2).
3
- *
4
- * Two pure functions with zero React dependency so the load-bearing invariant
5
- * I-1 (`frameHeight(r) < r`) can be pinned by a unit test rather than by hope.
6
- */
7
- /** Below this many rows a full-screen frame has no usable viewport left. */
8
- export declare const MIN_FULLSCREEN_ROWS = 12;
9
- /** Below this many columns the chrome (composer + status bar) cannot line-wrap sanely. */
10
- export declare const MIN_FULLSCREEN_COLS = 40;
11
- /** Used when `stdout.rows` is missing (pipes, test stubs, some PTYs). */
12
- export declare const FALLBACK_ROWS = 24;
13
- /** Used when `stdout.columns` is missing. */
14
- export declare const FALLBACK_COLS = 80;
15
- /**
16
- * Frame height. MUST stay strictly below `rows`:
17
- * - `>= rows` hits ink.js:121, which drops incremental `eraseLines` updates and
18
- * writes `clearTerminal + <all Static history> + output` on EVERY frame —
19
- * 30×/s under a 33 ms streaming window, with write amplification that grows
20
- * monotonically with the session;
21
- * - `== rows` lets the trailing '\n' log-update appends scroll the buffer by one
22
- * line, so `eraseLines(previousLineCount)` drifts and the frame slowly eats
23
- * the content above it.
24
- * `frame.test.ts` asserts `frameHeight(r) < r` for every r in [1, 200].
25
- *
26
- * The lower clamp is 0 — NEVER `MIN_FULLSCREEN_ROWS - 1` (returns 11 for
27
- * rows ∈ [1, 11], i.e. `>= rows`: precisely the clearTerminal disaster this
28
- * function exists to prevent) and NEVER 1 either, because `Math.max(1, r - 1)`
29
- * returns 1 for r = 1 and `1 >= 1` violates the invariant all the same. That
30
- * range IS reachable: §4.11 keeps the alt-screen and renders a "terminal too
31
- * small" placeholder when a resize drops below MIN_FULLSCREEN_ROWS, so a user
32
- * dragging their window down lands in it. The placeholder takes its height from
33
- * this same function. A 0-height frame renders nothing, which on a 1-row
34
- * terminal is strictly better than a per-frame full-screen repaint.
35
- */
36
- export declare function frameHeight(rows: number | undefined): number;
@@ -1,39 +0,0 @@
1
- /**
2
- * Frame geometry + render-mode decision (spec §4.1 / §4.2).
3
- *
4
- * Two pure functions with zero React dependency so the load-bearing invariant
5
- * I-1 (`frameHeight(r) < r`) can be pinned by a unit test rather than by hope.
6
- */
7
- /** Below this many rows a full-screen frame has no usable viewport left. */
8
- export const MIN_FULLSCREEN_ROWS = 12;
9
- /** Below this many columns the chrome (composer + status bar) cannot line-wrap sanely. */
10
- export const MIN_FULLSCREEN_COLS = 40;
11
- /** Used when `stdout.rows` is missing (pipes, test stubs, some PTYs). */
12
- export const FALLBACK_ROWS = 24;
13
- /** Used when `stdout.columns` is missing. */
14
- export const FALLBACK_COLS = 80;
15
- /**
16
- * Frame height. MUST stay strictly below `rows`:
17
- * - `>= rows` hits ink.js:121, which drops incremental `eraseLines` updates and
18
- * writes `clearTerminal + <all Static history> + output` on EVERY frame —
19
- * 30×/s under a 33 ms streaming window, with write amplification that grows
20
- * monotonically with the session;
21
- * - `== rows` lets the trailing '\n' log-update appends scroll the buffer by one
22
- * line, so `eraseLines(previousLineCount)` drifts and the frame slowly eats
23
- * the content above it.
24
- * `frame.test.ts` asserts `frameHeight(r) < r` for every r in [1, 200].
25
- *
26
- * The lower clamp is 0 — NEVER `MIN_FULLSCREEN_ROWS - 1` (returns 11 for
27
- * rows ∈ [1, 11], i.e. `>= rows`: precisely the clearTerminal disaster this
28
- * function exists to prevent) and NEVER 1 either, because `Math.max(1, r - 1)`
29
- * returns 1 for r = 1 and `1 >= 1` violates the invariant all the same. That
30
- * range IS reachable: §4.11 keeps the alt-screen and renders a "terminal too
31
- * small" placeholder when a resize drops below MIN_FULLSCREEN_ROWS, so a user
32
- * dragging their window down lands in it. The placeholder takes its height from
33
- * this same function. A 0-height frame renders nothing, which on a 1-row
34
- * terminal is strictly better than a per-frame full-screen repaint.
35
- */
36
- export function frameHeight(rows) {
37
- const r = rows && rows > 0 ? rows : FALLBACK_ROWS;
38
- return Math.max(0, r - 1);
39
- }
@@ -1,121 +0,0 @@
1
- /**
2
- * The `/gov board` overlay's model and geometry (governance-mode section 10.5): the tab
3
- * model, the data adapters, the row builders and the scroll arithmetic - every decision
4
- * the overlay makes, in pure code.
5
- *
6
- * Pure and total: no Ink, no clock (`now` is not even needed: rows carry sequence
7
- * numbers, not times), no I/O. ASCII ONLY.
8
- *
9
- * TWO DATA SOURCES, ONE SHAPE. The live `GovernanceSnapshot` knows the roster and the
10
- * ticker; the work-package matrix, the full ledger and the claims live in `RunState` /
11
- * `LedgerState`. `GovernanceBoardData` is the UI's own flat projection of all of it, with
12
- * two builders: `boardDataFromSnapshot` (what the renderer always has) and
13
- * `boardDataFromRun` (what the wiring can supply). A board built from the snapshot alone
14
- * still reads correctly - the tabs it cannot fill say so instead of going blank.
15
- *
16
- * EVERY ROW IS ONE TERMINAL ROW. Rows are `Segment[]` rendered `wrap="truncate"`, so
17
- * scrolling is arithmetic on a list length (`sliceWindow`), never a re-measure.
18
- */
19
- import type { GovernanceSnapshot, LedgerState, RunState, WorkPackage } from '../../governance/types.js';
20
- import type { Glyphs } from '../glyphs.js';
21
- import { type Segment } from '../governance-status.js';
22
- export type BoardTab = 'roster' | 'work' | 'ledger' | 'claims';
23
- export declare const BOARD_TABS: readonly BoardTab[];
24
- /** Terminals narrower than this get the single-column form with a `1/4` pager. */
25
- export declare const BOARD_NARROW_COLS = 80;
26
- /** Recent ledger lines shown under each identity on the roster tab (spec 10.5). */
27
- export declare const BOARD_RECENT_PER_AGENT = 5;
28
- /** Ledger rows kept in the projection, newest first. */
29
- export declare const BOARD_LEDGER_MAX = 200;
30
- /** The tab `delta` steps away, wrapping at both ends. */
31
- export declare function stepTab(tab: BoardTab, delta: number): BoardTab;
32
- export declare function tabIndex(tab: BoardTab): number;
33
- export interface BoardLedgerRow {
34
- seq: number;
35
- agentId: string;
36
- code: string;
37
- delta: number;
38
- provisional: boolean;
39
- /** `engine` / `inspector:insp`; '' when the source does not say. */
40
- by: string;
41
- reason: string;
42
- evidence: string;
43
- capped: boolean;
44
- }
45
- export interface BoardWorkPackage {
46
- id: string;
47
- title: string;
48
- status: WorkPackage['status'];
49
- reworkCount: number;
50
- assignee: string;
51
- reviewer: string;
52
- tester: string;
53
- fileCount: number;
54
- blockedAt: string;
55
- }
56
- export interface BoardClaimRow {
57
- id: string;
58
- kind: 'claim' | 'escalation';
59
- status: string;
60
- /** `missed_by_review`, `wp_rework_cap`, ... */
61
- detail: string;
62
- /** Who is involved: `dev1 -> rev2` for a claim, the WP / phase for an escalation. */
63
- subject: string;
64
- text: string;
65
- }
66
- export interface GovernanceBoardData {
67
- snapshot: GovernanceSnapshot;
68
- workPackages: BoardWorkPackage[];
69
- ledger: BoardLedgerRow[];
70
- claims: BoardClaimRow[];
71
- /** Absolute path of `board.md`, for the `e` key; null when unknown. */
72
- boardPath: string | null;
73
- }
74
- /** What the renderer always has: the live snapshot. WPs and claims stay empty. */
75
- export declare function boardDataFromSnapshot(snapshot: GovernanceSnapshot, boardPath?: string | null): GovernanceBoardData;
76
- export interface BoardDataInput {
77
- snapshot: GovernanceSnapshot;
78
- run: RunState;
79
- ledger: LedgerState;
80
- boardPath?: string | null;
81
- }
82
- /** The full projection, for a wiring that can read the run and the ledger. */
83
- export declare function boardDataFromRun(input: BoardDataInput): GovernanceBoardData;
84
- export interface BoardLine {
85
- key: string;
86
- segments: Segment[];
87
- }
88
- export interface BoardTabStrip {
89
- segments: Segment[];
90
- /** `1/4` in the narrow form, `''` in the wide one. */
91
- pager: string;
92
- }
93
- export declare function buildTabStrip(tab: BoardTab, data: GovernanceBoardData, narrow: boolean, glyphs: Glyphs): BoardTabStrip;
94
- export interface GovernanceBoardInput {
95
- /** Overlay CONTENT width (the frame's chrome already subtracted). */
96
- cols: number;
97
- tab: BoardTab;
98
- data: GovernanceBoardData | null;
99
- glyphs: Glyphs;
100
- }
101
- export interface GovernanceBoardLayout {
102
- narrow: boolean;
103
- tabStrip: BoardTabStrip;
104
- /** Every row of the active tab; the overlay windows them. */
105
- lines: BoardLine[];
106
- }
107
- export declare function buildGovernanceBoardLayout(input: GovernanceBoardInput): GovernanceBoardLayout;
108
- /** Body rows left for content once the tab strip has taken one of the frame's rows. */
109
- export declare function boardBodyRows(frameBodyRows: number): number;
110
- export interface BoardWindow {
111
- start: number;
112
- visible: number;
113
- total: number;
114
- /** The offset after clamping: feed it back so the owner's counter cannot run away. */
115
- clamped: number;
116
- }
117
- export declare function boardWindow(total: number, offset: number, height: number): BoardWindow;
118
- /** Position text for the footer, e.g. `3-14/40`; '' when everything fits. */
119
- export declare function boardPosition(window: BoardWindow, glyphs: Glyphs): string;
120
- /** Footer hint, shortened to the width the frame can print on one row. */
121
- export declare function boardHint(cols: number, glyphs: Glyphs): string;