@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,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;