@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,246 +0,0 @@
1
- /**
2
- * Panel row geometry — the ONE authority for how a subagent row is measured and
3
- * what it says (tui-subagent-panel §4.2 / §6.1).
4
- *
5
- * WHY THIS FILE EXISTS. The roster used to place its right-hand columns by
6
- * `flexGrow`, and a fixed-height parent box makes Yoga stretch the column to its
7
- * widest CHILD instead of to the available width: on a 100-column terminal inside
8
- * the band slot the row measured 48 (spec §0.1, cases 3/4), so `grep 22.1s` sat
9
- * hard against the description and the right half of the row was blank. Flex
10
- * cannot fix that, because the number it needs - "how wide is this terminal" - is
11
- * not part of the layout it is given. So the widths are COMPUTED here, by a total
12
- * pure function, and the component only places fixed-width boxes at the offsets
13
- * this module names.
14
- *
15
- * THE FIVE CELLS, in drawing order:
16
- *
17
- * marker(1+status+1) label(8) description(flex) gap(2) activity(n) clock(8)
18
- *
19
- * `description` is the ONLY flexible cell, and it is the one that absorbs every
20
- * width pressure - the same degradation discipline `StatusBar` documents for its
21
- * left cluster. The two right-hand cells are fixed and `flexShrink={0}`, so their
22
- * absolute offsets follow from `rowWidth = parentWidth` and the sum of the fixed
23
- * cells in front of them, and never from how a particular frame allocates slack.
24
- *
25
- * ASCII ONLY: `src/ui/**` is inside `glyphs.test.ts`'s static scan.
26
- *
27
- * THE ACTIVITY HELPERS LIVE HERE TOO (v2 implementation note, recorded in the
28
- * spec's "implementation findings"). `teamRowCells` has to compose the activity
29
- * text with the supervisor badge, which is what `activityWithBadge` already does;
30
- * leaving those in `TeamPanel.tsx` would make this module and the component
31
- * import each other. `TeamPanel` therefore RE-EXPORTS every symbol below, so the
32
- * existing import sites (three test files) keep their import path unchanged.
33
- */
34
- import { describeToolActivity, sanitizeActivity } from '../../team/activity.js';
35
- import { TEAM_LIMITS } from '../../team/limits.js';
36
- import { formatDuration } from '../../agent/usage.js';
37
- import { fitCells } from './cells.js';
38
- import { childElapsedMs, childStatus, statusMarkerCell, statusMarkerWidth } from '../team-status.js';
39
- /** The clock cell: wide enough for `125m07s` (7) with one column of headroom. */
40
- export const TEAM_CLOCK_CELLS = 8;
41
- /** `run.label.padEnd(8).slice(0,8)` — unchanged from the row this replaces. */
42
- export const TEAM_LABEL_CELLS = 8;
43
- /** The two spaces in front of the activity cell. */
44
- export const TEAM_GAP_CELLS = 2;
45
- /**
46
- * The description column's floor: below this the row is unreadable, so the
47
- * activity cell gives way instead (`activityDropCols`).
48
- */
49
- export const TEAM_MIN_DESCRIPTION_CELLS = 12;
50
- /**
51
- * The concession to code units vs terminal columns, inherited verbatim from the
52
- * `WIDE_CHAR_ALLOWANCE` comment on the row this replaces: this budget is
53
- * denominated in code units while the terminal is denominated in columns, and CJK
54
- * and emoji occupy two columns per unit, so the budget is halved against the
55
- * reserve rather than spent to the last cell. Erring small costs a few characters
56
- * of prose; erring large costs the clock column.
57
- */
58
- const WIDE_CHAR_ALLOWANCE = 2;
59
- /** The marker cell of the Unicode tier, used as the default by callers that pass no tier. */
60
- const DEFAULT_MARKER_CELLS = 3;
61
- function nonNegativeInt(value) {
62
- return Number.isFinite(value) ? Math.max(0, Math.floor(value)) : 0;
63
- }
64
- /**
65
- * How many characters the activity cell may spend at this width.
66
- *
67
- * `TEAM_LIMITS.activityChars` is a STORAGE ceiling; a terminal has a COLUMN
68
- * budget, and the two are not the same number. Below
69
- * `TEAM_LIMITS.activityDropCols` the cell gives way ENTIRELY (returns 0) rather
70
- * than shrinking to its 12-character floor: at 40 columns those twelve characters
71
- * would push the description below its own floor, and "who is doing what" outranks
72
- * "what they are writing right now" exactly when there is room for one of them.
73
- * That is a semantic change to a shipped assertion (`activityBudget(40)` used to
74
- * return 12) and is recorded in the spec's §10 collateral table.
75
- *
76
- * `markerCells` defaults to the Unicode tier so the three existing single-argument
77
- * call sites keep compiling; the panel passes the real tier's width.
78
- */
79
- export function activityBudget(cols, markerCells = DEFAULT_MARKER_CELLS) {
80
- if (!Number.isFinite(cols) || cols < TEAM_LIMITS.activityDropCols)
81
- return 0;
82
- const fixed = markerCells + TEAM_LABEL_CELLS + TEAM_GAP_CELLS + TEAM_CLOCK_CELLS
83
- + TEAM_MIN_DESCRIPTION_CELLS;
84
- const spare = Math.floor((cols - fixed) / WIDE_CHAR_ALLOWANCE);
85
- return Math.max(TEAM_LIMITS.activityMinChars, Math.min(TEAM_LIMITS.activityChars, spare));
86
- }
87
- /**
88
- * The row's cell widths. A TOTAL function: every cell is a non-negative integer
89
- * and the five of them never sum past `cols`, for any `cols >= 0` and either
90
- * glyph tier (I-3, `team-row-geometry.test.ts`'s property test).
91
- *
92
- * THE LADDER IS THE SPECIFICATION (§4.2.2), in the order the cells give way:
93
- * 1. a wide enough terminal gets the business budget;
94
- * 2. below `activityDropCols` the activity cell is 0;
95
- * 3. description still negative -> the gap goes;
96
- * 4. still negative -> the label shrinks to `max(3, cols - marker - clock)`;
97
- * 5. still negative -> the clock shrinks (`cols < marker + 3 + clock`);
98
- * 6. the residue (a terminal narrower than the marker itself) is clamped so the
99
- * sum stays inside `cols` — unreachable on a real device, where native mode
100
- * degrades to the placeholder below 40x12, but the function is total because
101
- * the property test runs `cols = 1..400`.
102
- */
103
- export function teamRowGeometry(cols, glyphs) {
104
- const width = nonNegativeInt(cols);
105
- const markerCells = 1 + statusMarkerWidth(glyphs) + 1;
106
- const cells = {
107
- marker: Math.min(markerCells, width),
108
- label: TEAM_LABEL_CELLS,
109
- gap: TEAM_GAP_CELLS,
110
- activity: activityBudget(width, markerCells),
111
- clock: TEAM_CLOCK_CELLS,
112
- minDescription: TEAM_MIN_DESCRIPTION_CELLS,
113
- };
114
- const sum = () => cells.marker + cells.label + cells.gap + cells.activity + cells.clock;
115
- if (sum() > width)
116
- cells.gap = 0;
117
- if (sum() > width)
118
- cells.label = Math.max(3, width - cells.marker - cells.clock);
119
- if (sum() > width)
120
- cells.clock = Math.max(0, Math.min(TEAM_CLOCK_CELLS, width - cells.marker - cells.label));
121
- if (sum() > width)
122
- cells.label = Math.max(0, Math.min(cells.label, width - cells.marker));
123
- cells.minDescription = sum() >= width ? 0 : TEAM_MIN_DESCRIPTION_CELLS;
124
- return cells;
125
- }
126
- /**
127
- * The clock cell's text: this child's elapsed time, or empty when it never
128
- * started (a `queued` row has no clock to show, and `0ms` would be a lie).
129
- */
130
- export function teamClockText(run, at) {
131
- return run.startedAt === undefined ? '' : formatDuration(childElapsedMs(run, at));
132
- }
133
- /** The past-tense word the supervisor badge and status line render. */
134
- export function interventionWord(action) {
135
- switch (action) {
136
- case 'nudge':
137
- return 'nudged';
138
- case 'replace':
139
- return 'replaced';
140
- case 'abandon':
141
- return 'abandoned';
142
- default:
143
- return 'waited';
144
- }
145
- }
146
- /**
147
- * The row's supervisor badge (subagent-overseer-v2 AC-5): what the supervisor
148
- * last did to THIS child and how long ago, e.g. `nudged 2m03s`.
149
- *
150
- * `lastIntervention.at` is ABSOLUTE epoch ms (R-P2-3), the same units as
151
- * `startedAt`, so this is one subtraction - no second clock convention.
152
- */
153
- export function overseerBadge(run, at) {
154
- const last = run.lastIntervention;
155
- if (last === undefined)
156
- return '';
157
- return `${interventionWord(last.action)} ${formatDuration(Math.max(0, at - last.at))}`;
158
- }
159
- /**
160
- * The middle cell: what this child is doing right now, in a few words.
161
- *
162
- * Two width policies, answering different questions. `wide` decides WHICH FACT to
163
- * show - a whole path or its basename, a whole command line or its program name -
164
- * mirroring `StatusBar`'s `statusCompactCols` degradation rather than inventing a
165
- * second threshold. `activityBudget(cols)` decides HOW MUCH OF IT FITS, and it is
166
- * a continuous function of width rather than a threshold, because the failure it
167
- * prevents - a row wider than the terminal - is continuous.
168
- */
169
- export function activityLine(run, cols, markerCells) {
170
- const wide = cols >= TEAM_LIMITS.activityWideCols;
171
- const budget = activityBudget(cols, markerCells);
172
- switch (run.phase) {
173
- case 'queued':
174
- return 'queued';
175
- case 'starting':
176
- // The one row that legitimately restarts its clock, saying why (P2-4):
177
- // F-2 ranks the running group by `startedAt` and a retry re-stamps it.
178
- return run.retries ? 'starting (retry)' : 'starting';
179
- case 'thinking':
180
- // Clamped AT RENDER, against this terminal's budget. `run.activity` was
181
- // clamped at STORE against `activityChars`; that is a ceiling, not a fit.
182
- return run.activity ? `writing: ${sanitizeActivity(run.activity, budget)}` : 'thinking';
183
- case 'tool':
184
- case 'waiting':
185
- return run.lastTool
186
- ? sanitizeActivity(describeToolActivity(run.lastTool, run.activityArgs, wide), budget)
187
- : run.phase === 'waiting'
188
- ? 'waiting for mail'
189
- : 'tool';
190
- case 'done':
191
- // `compacted N` ON THE SETTLED ROW ONLY (hardening §3.4.4 / W3). A running
192
- // row is already competing for `activityBudget(cols)` with the child's own
193
- // prose, and a marker that displaces what the child is DOING right now
194
- // buys nothing - the dispatch report carries the same fact for good.
195
- return run.compactions
196
- ? `done ${run.turns} turns compacted ${run.compactions}`
197
- : `done ${run.turns} turns`;
198
- case 'failed':
199
- return 'failed';
200
- case 'aborted':
201
- return 'aborted';
202
- }
203
- }
204
- /**
205
- * The activity cell WITH the badge composed in (AC-5 / risk table): the badge
206
- * rides the SAME allocation the prose uses, so a row can never grow past its
207
- * terminal; on a narrow terminal the badge degrades to the action word alone -
208
- * the who-acted fact outranks the what-they-are-doing tail exactly when there is
209
- * room for only one.
210
- */
211
- export function activityWithBadge(run, cols, at, markerCells) {
212
- const last = run.lastIntervention;
213
- if (last === undefined)
214
- return activityLine(run, cols, markerCells);
215
- const badge = overseerBadge(run, at);
216
- if (cols < TEAM_LIMITS.activityWideCols)
217
- return interventionWord(last.action);
218
- return sanitizeActivity(`${badge}; ${activityLine(run, cols, markerCells)}`, activityBudget(cols, markerCells));
219
- }
220
- /**
221
- * The five text fragments of one row.
222
- *
223
- * The description is normalized here rather than in the component because
224
- * truncation preserves explicit newlines and the band reserves exactly ONE row
225
- * for a child: a description carrying a newline would make the row two rows tall
226
- * and every row below it would land one row lower than `band.teamRows` allows.
227
- */
228
- export function teamRowCells(run, cols, at, glyphs) {
229
- const geometry = teamRowGeometry(cols, glyphs);
230
- // THE TEXT IS CLAMPED TO THE SAME WIDTH THE GEOMETRY ALLOCATED, so a cell's content
231
- // measures no more than its box. `activityWithBadge` already clamps to the business
232
- // budget; this is the belt-and-braces that also covers the two cases the budget alone
233
- // cannot express - a ZERO-width cell (below `activityDropCols`, where the answer is
234
- // "no activity column at all", not "a nine-character word in a zero-column box") and
235
- // a wide character straddling the edge.
236
- const activity = geometry.activity === 0
237
- ? ''
238
- : fitCells(activityWithBadge(run, cols, at, geometry.marker), geometry.activity, glyphs.ellipsis);
239
- return {
240
- marker: statusMarkerCell(childStatus(run), glyphs),
241
- label: run.label.padEnd(TEAM_LABEL_CELLS).slice(0, TEAM_LABEL_CELLS),
242
- description: run.description.replace(/\s+/g, ' '),
243
- activity,
244
- clock: teamClockText(run, at),
245
- };
246
- }
@@ -1,62 +0,0 @@
1
- import type { TodoSnapshot } from '../../todo/types.js';
2
- export interface TodoRailLayoutInput {
3
- cols: number;
4
- panelEnabled: boolean;
5
- overlayOpen: boolean;
6
- itemCount: number;
7
- viewportBudget: number;
8
- teamRows: number;
9
- queueRows?: number;
10
- popupRows: number;
11
- composerBaseRows?: number;
12
- }
13
- export interface TodoRailLayout {
14
- visible: boolean;
15
- reason: 'visible' | 'disabled' | 'overlay' | 'empty' | 'narrow' | 'short';
16
- width: number;
17
- rows: number;
18
- contentCols: number;
19
- popupMaxHeight: number;
20
- }
21
- /** Allocate columns and rows from the same team/menu projections as the renderers.
22
- * Invalid geometry becomes zero, excess team/menu rows are clamped. Menu capacity
23
- * never depends on menu occupancy or rail visibility, preventing feedback loops.
24
- */
25
- export declare function buildTodoRailLayout(input: TodoRailLayoutInput): TodoRailLayout;
26
- export interface AcceptanceChipInput {
27
- snapshot: TodoSnapshot | null;
28
- /** Rows the rail (in-band or full-screen) actually drew; 0 means it drew none. */
29
- railRows: number;
30
- width: number;
31
- }
32
- /**
33
- * Does the acceptance count still need the status-bar chip
34
- * (todo-acceptance-criteria §6.11)?
35
- *
36
- * HERE, NEXT TO `buildTodoRailLayout`, because it answers the same question from
37
- * the same inputs: "what did the rail actually draw". Putting it in `App` - a
38
- * 3,215-line registered oversize file - would give one fact a second owner, which
39
- * is precisely what `scrollback/band.ts`'s "one number, one owner" rule exists to
40
- * prevent (P1-8 / C-9).
41
- *
42
- * THE RULE IS ABOUT THE RAIL, NOT ABOUT THE SECTION: while the section is `visible`
43
- * or `summary` the rail is already reporting the count, so a chip would repeat it in
44
- * the same glance (RV-P2-4). Only two situations leave the count unreported - no rail
45
- * at all, and the single `rows === 3 && footer` corner where the panel is up but the
46
- * section could not be fitted.
47
- */
48
- export declare function acceptanceChip(input: AcceptanceChipInput): {
49
- checked: number;
50
- total: number;
51
- failed: number;
52
- } | null;
53
- /**
54
- * Which rung the acceptance section reached in the rail, for `/perf`'s band line
55
- * (§6.9.6).
56
- *
57
- * `n/a` means "this plan has no criteria", which is a different fact from `absent`
58
- * ("the plan has criteria and the rail could not show them"). Both come from the
59
- * same `buildPlanSections` call the rail rendered with, so the readout cannot
60
- * disagree with the screen.
61
- */
62
- export declare function acceptanceRung(input: AcceptanceChipInput): 'visible' | 'summary' | 'absent' | 'n/a';
@@ -1,102 +0,0 @@
1
- import { TODO_LIMITS } from '../../todo/limits.js';
2
- import { derivePlanPhase } from '../../todo/acceptance.js';
3
- import { buildPlanSections } from '../../todo/plan-sections.js';
4
- import { todoRailWidth } from './rail.js';
5
- /** Allocate columns and rows from the same team/menu projections as the renderers.
6
- * Invalid geometry becomes zero, excess team/menu rows are clamped. Menu capacity
7
- * never depends on menu occupancy or rail visibility, preventing feedback loops.
8
- */
9
- export function buildTodoRailLayout(input) {
10
- const cols = nonNegativeInt(input.cols);
11
- const budget = nonNegativeInt(input.viewportBudget);
12
- const teamRows = Math.min(budget, nonNegativeInt(input.teamRows));
13
- const popupMaxHeight = Math.max(0, budget - teamRows - nonNegativeInt(input.queueRows ?? 0) - 1
14
- - nonNegativeInt(input.composerBaseRows ?? 0));
15
- const popupRows = popupMaxHeight < 3 ? 0 : Math.min(nonNegativeInt(input.popupRows), popupMaxHeight);
16
- const rows = budget;
17
- const width = todoRailWidth(cols);
18
- const reason = !input.panelEnabled ? 'disabled'
19
- : input.overlayOpen ? 'overlay'
20
- : nonNegativeInt(input.itemCount) === 0 ? 'empty'
21
- : width === 0 ? 'narrow'
22
- : rows < TODO_LIMITS.panelMinRows ? 'short'
23
- : 'visible';
24
- const visible = reason === 'visible';
25
- return { visible, reason, width, rows, contentCols: cols - (visible ? width : 0), popupMaxHeight };
26
- }
27
- function nonNegativeInt(value) {
28
- return Number.isFinite(value) ? Math.max(0, Math.floor(value)) : 0;
29
- }
30
- /**
31
- * Does the acceptance count still need the status-bar chip
32
- * (todo-acceptance-criteria §6.11)?
33
- *
34
- * HERE, NEXT TO `buildTodoRailLayout`, because it answers the same question from
35
- * the same inputs: "what did the rail actually draw". Putting it in `App` - a
36
- * 3,215-line registered oversize file - would give one fact a second owner, which
37
- * is precisely what `scrollback/band.ts`'s "one number, one owner" rule exists to
38
- * prevent (P1-8 / C-9).
39
- *
40
- * THE RULE IS ABOUT THE RAIL, NOT ABOUT THE SECTION: while the section is `visible`
41
- * or `summary` the rail is already reporting the count, so a chip would repeat it in
42
- * the same glance (RV-P2-4). Only two situations leave the count unreported - no rail
43
- * at all, and the single `rows === 3 && footer` corner where the panel is up but the
44
- * section could not be fitted.
45
- */
46
- export function acceptanceChip(input) {
47
- const acceptance = input.snapshot?.acceptance;
48
- if (!acceptance || acceptance.total === 0)
49
- return null;
50
- const chip = {
51
- checked: acceptance.checkedCount,
52
- total: acceptance.total,
53
- failed: acceptance.failedCount,
54
- };
55
- if (input.railRows <= 0)
56
- return chip;
57
- return acceptanceSectionOf(input) === 'absent' ? chip : null;
58
- }
59
- /**
60
- * Which rung the acceptance section reached in the rail, for `/perf`'s band line
61
- * (§6.9.6).
62
- *
63
- * `n/a` means "this plan has no criteria", which is a different fact from `absent`
64
- * ("the plan has criteria and the rail could not show them"). Both come from the
65
- * same `buildPlanSections` call the rail rendered with, so the readout cannot
66
- * disagree with the screen.
67
- */
68
- export function acceptanceRung(input) {
69
- const acceptance = input.snapshot?.acceptance;
70
- if (!acceptance || acceptance.total === 0)
71
- return 'n/a';
72
- // No rail drawn at all: the section is not on screen, and saying `absent` is the
73
- // one honest answer for that.
74
- if (input.railRows <= 0)
75
- return 'absent';
76
- return acceptanceSectionOf(input) ?? 'absent';
77
- }
78
- /**
79
- * The section's reason for a given rail, or `null` when the plan has no criteria.
80
- *
81
- * `showGauge` is assumed TRUE. That is the conservative direction for the ROW BUDGET -
82
- * it can only make the rail look shorter - and it cannot change the REASON at all: the
83
- * compact rung (rows < 6, where the real gauge is always off) ignores `available`
84
- * entirely, and the full rung spends the difference on item rows. So this readout can
85
- * never disagree with the rail about `visible` / `summary` / `absent`, and the chip
86
- * therefore never duplicates a count the rail is already showing (RV-P2-4).
87
- */
88
- function acceptanceSectionOf(input) {
89
- const snapshot = input.snapshot;
90
- const acceptance = snapshot?.acceptance;
91
- if (!snapshot || !acceptance || acceptance.total === 0)
92
- return null;
93
- const sections = buildPlanSections({
94
- rows: input.railRows,
95
- width: input.width,
96
- phase: derivePlanPhase(snapshot.items, acceptance.items),
97
- todoCount: snapshot.items.length,
98
- acceptanceCount: acceptance.total,
99
- showGauge: true,
100
- });
101
- return sections.acceptance?.reason ?? null;
102
- }
@@ -1,13 +0,0 @@
1
- /**
2
- * Terminal size hook (spec §4.11).
3
- *
4
- * Ink recomputes its own layout on resize, but the React layer needs the new
5
- * `rows` to update `height={frameHeight(rows)}`. Without this hook the frame
6
- * keeps its old height after the window grows and leaves a dead band at the
7
- * bottom of the screen.
8
- */
9
- export interface TerminalSize {
10
- rows: number;
11
- cols: number;
12
- }
13
- export declare function useTerminalSize(): TerminalSize;
@@ -1,50 +0,0 @@
1
- /**
2
- * Terminal size hook (spec §4.11).
3
- *
4
- * Ink recomputes its own layout on resize, but the React layer needs the new
5
- * `rows` to update `height={frameHeight(rows)}`. Without this hook the frame
6
- * keeps its old height after the window grows and leaves a dead band at the
7
- * bottom of the screen.
8
- */
9
- import { useEffect, useState } from 'react';
10
- import { useStdout } from 'ink';
11
- import { FALLBACK_COLS, FALLBACK_ROWS } from './frame.js';
12
- /** Coalesce the burst of resize events a window drag produces. */
13
- const RESIZE_THROTTLE_MS = 50;
14
- function readSize(stdout) {
15
- const rows = stdout?.rows;
16
- const cols = stdout?.columns;
17
- return {
18
- rows: rows && rows > 0 ? rows : FALLBACK_ROWS,
19
- cols: cols && cols > 0 ? cols : FALLBACK_COLS,
20
- };
21
- }
22
- export function useTerminalSize() {
23
- const { stdout } = useStdout();
24
- const [size, setSize] = useState(() => readSize(stdout));
25
- useEffect(() => {
26
- const stream = stdout;
27
- if (!stream || typeof stream.on !== 'function')
28
- return undefined;
29
- let timer = null;
30
- const onResize = () => {
31
- if (timer)
32
- clearTimeout(timer);
33
- timer = setTimeout(() => {
34
- timer = null;
35
- const next = readSize(stream);
36
- setSize((prev) => (prev.rows === next.rows && prev.cols === next.cols ? prev : next));
37
- }, RESIZE_THROTTLE_MS);
38
- };
39
- stream.on('resize', onResize);
40
- return () => {
41
- if (timer)
42
- clearTimeout(timer);
43
- if (typeof stream.off === 'function')
44
- stream.off('resize', onResize);
45
- else if (typeof stream.removeListener === 'function')
46
- stream.removeListener('resize', onResize);
47
- };
48
- }, [stdout]);
49
- return size;
50
- }
@@ -1,29 +0,0 @@
1
- /**
2
- * Viewport geometry, published downward (tui-render-performance L3).
3
- *
4
- * `ScrollViewport`'s header records (P1-7) why it — and not its parent — owns
5
- * the metrics and the scroll offset: holding the offset in two places creates a
6
- * measure -> setState -> re-render -> measure loop whose convergence is provable
7
- * but whose frame count is not.
8
- *
9
- * Virtualisation needs those same three numbers one level DOWN, in
10
- * `TranscriptList`. So the viewport PUBLISHES rather than lifting: a `useMemo`d
11
- * context value, no new state, no second owner, no extra layout pass.
12
- */
13
- export interface ViewportGeometry {
14
- /** Visible height of the clipping box, in rows. `0` before the first measure. */
15
- viewportRows: number;
16
- /** Rows hidden BELOW the viewport (`layout/scroll.ts` semantics; V-4). */
17
- offset: number;
18
- /** Natural (unclipped) height of the content, in rows. */
19
- contentRows: number;
20
- trailingContentRows?: number;
21
- }
22
- /**
23
- * The default is the UNMEASURED geometry, and consumers must treat it as such:
24
- * a `TranscriptList` rendered outside a `ScrollViewport` (including
25
- * test that mounts it bare) sees `viewportRows: 0`, which `selectWindow` reads
26
- * as "first frame" and answers by pinning the live tail.
27
- */
28
- export declare const ViewportGeometryContext: import("react").Context<ViewportGeometry>;
29
- export declare function useViewportGeometry(): ViewportGeometry;
@@ -1,28 +0,0 @@
1
- /**
2
- * Viewport geometry, published downward (tui-render-performance L3).
3
- *
4
- * `ScrollViewport`'s header records (P1-7) why it — and not its parent — owns
5
- * the metrics and the scroll offset: holding the offset in two places creates a
6
- * measure -> setState -> re-render -> measure loop whose convergence is provable
7
- * but whose frame count is not.
8
- *
9
- * Virtualisation needs those same three numbers one level DOWN, in
10
- * `TranscriptList`. So the viewport PUBLISHES rather than lifting: a `useMemo`d
11
- * context value, no new state, no second owner, no extra layout pass.
12
- */
13
- import { createContext, useContext } from 'react';
14
- /**
15
- * The default is the UNMEASURED geometry, and consumers must treat it as such:
16
- * a `TranscriptList` rendered outside a `ScrollViewport` (including
17
- * test that mounts it bare) sees `viewportRows: 0`, which `selectWindow` reads
18
- * as "first frame" and answers by pinning the live tail.
19
- */
20
- export const ViewportGeometryContext = createContext({
21
- viewportRows: 0,
22
- offset: 0,
23
- contentRows: 0,
24
- trailingContentRows: 0,
25
- });
26
- export function useViewportGeometry() {
27
- return useContext(ViewportGeometryContext);
28
- }
@@ -1,112 +0,0 @@
1
- /**
2
- * Viewport virtualisation maths (tui-render-performance L3 / R1). Pure,
3
- * React-free, unit-tested.
4
- *
5
- * THE STRUCTURAL FIX. Ink's `renderNodeToOutput` has no early-out for clipped
6
- * subtrees: for every `ink-text` node it runs `squashTextNodes`, `widestLine`
7
- * and possibly `wrapText` — all O(chars) — and `Output.get()` then evaluates
8
- * `widestLine` a SECOND time before it is allowed to skip an out-of-clip
9
- * operation. A clipped 50 000-character entry therefore costs two full string
10
- * scans per frame and buys nothing. Bounding the ENTRY COUNT (`transcriptWindow`)
11
- * never bounded that, because one entry can be fifty thousand lines.
12
- *
13
- * So entries outside the visible band are not mounted at all. They are replaced
14
- * by two spacer boxes whose heights come from a height cache, which makes the
15
- * per-frame cost O(visible rows) instead of O(characters ever produced).
16
- *
17
- * V-4 — `offset` counts rows FROM THE BOTTOM (`layout/scroll.ts:1-13`), and that
18
- * is what makes virtualisation safe here for free: a height correction on an
19
- * entry ABOVE the viewport changes the content height and therefore
20
- * `overflowLines`, while `offset` — and hence what the user is looking at — is
21
- * unchanged. No scroll-anchoring compensation pass is required. Do NOT
22
- * "simplify" `offset` to count from the top.
23
- *
24
- * V-4 AS AMENDED BY tui-selection-and-scroll-follow (§4.3.1a). There is now
25
- * exactly ONE compensation pass — `follow-state.ts`'s Rule A — and it is
26
- * deliberately restricted to rows appended AT THE TAIL, published by
27
- * `Transcript.tsx` from the height table below. Everything the paragraph above
28
- * describes still self-compensates and is still not compensated for again.
29
- * The restriction is the whole of V-4's survival: an offset that reacted to
30
- * TOTAL measured height would turn every above-the-viewport correction into a
31
- * jump, would read a horizon front-drop as new output — and, because
32
- * `selectWindow` takes `offset` as an INPUT, would close a loop from the offset
33
- * through the mounted set and the measured heights back to the offset.
34
- */
35
- import type { Entry } from '../../agent/reducer.js';
36
- import type { DensityMode } from '../density.js';
37
- export declare const VIRTUAL_LIMITS: {
38
- /**
39
- * Entries kept mounted on each side of the visible band.
40
- *
41
- * V-2 — must stay `>= 2`, so a one-row scroll can never expose an entry whose
42
- * height has never been measured at the very edge of the viewport.
43
- */
44
- readonly overscan: 2;
45
- /** Height-cache ceiling (LRU). Four thousand numbers, not four thousand strings. */
46
- readonly heightEntries: 4096;
47
- };
48
- export type HeightKey = string;
49
- /**
50
- * A cheap content version: it changes exactly when the rendered content does.
51
- *
52
- * DERIVED, NEVER HASHED. Hashing a 256 KiB string once per entry per frame would
53
- * recreate the very cost this module exists to remove, so every field below is
54
- * an O(1) read of a length or a scalar.
55
- *
56
- * I-L3-1 — this must change whenever the rendered output changes. The only lossy
57
- * case is a same-LENGTH text replacement, which the reducer cannot produce: all
58
- * text fields are append-only (`appendBounded` only ever elides the middle,
59
- * which changes the length). A future NON-APPEND mutation MUST extend the
60
- * revision, or the entry freezes at a stale height AND a stale rendered subtree
61
- * with nothing anywhere reporting it. `virtual-window.test.ts` enumerates every
62
- * kind against every mutating action.
63
- */
64
- export declare function entryRevision(entry: Entry): string;
65
- /**
66
- * The height-cache key.
67
- *
68
- * V-5 — `cols` is part of the key, so a resize invalidates every entry. The
69
- * frame after a resize renders from estimates and re-measures lazily: one
70
- * reflow, no crash, no stale layout.
71
- *
72
- * `flags` carries the render-affecting switches that are neither per-entry nor
73
- * part of `density` — today only `thinkingVisible` (Ctrl+T). It is a parameter
74
- * rather than a fifth positional scalar so a future switch costs one character
75
- * at the call site instead of a signature change at four.
76
- */
77
- export declare function heightKey(entry: Entry, cols: number, expanded: boolean, density: DensityMode, flags?: string): HeightKey;
78
- /**
79
- * Pure UPPER-BOUND estimate of an entry's height, used until a real measurement
80
- * exists.
81
- *
82
- * Upper bound rather than best guess, and deliberately so: an over-estimate
83
- * makes the scroll position slightly conservative and self-corrects the frame
84
- * after the entry is measured, while an under-estimate can put the newest output
85
- * off the bottom of a viewport the user believes is pinned.
86
- */
87
- export declare function estimateEntryRows(entry: Entry, cols: number, density: DensityMode, expanded: boolean, thinkingVisible?: boolean): number;
88
- export interface WindowSelection {
89
- /** First mounted entry, inclusive. */
90
- startIndex: number;
91
- /** One past the last mounted entry. */
92
- endIndex: number;
93
- /** Spacer rows above the mounted slice. */
94
- leadingRows: number;
95
- /** Spacer rows below the mounted slice. */
96
- trailingRows: number;
97
- /** Sum of every entry height, measured or estimated. */
98
- totalRows: number;
99
- }
100
- export interface SelectWindowInput {
101
- trailingContentRows?: number;
102
- entries: readonly Entry[];
103
- /** Measured, else estimated; never 0 for a real entry. */
104
- heightOf: (index: number) => number;
105
- viewportRows: number;
106
- /** Rows hidden BELOW the viewport — the existing `scroll.ts` semantic (V-4). */
107
- offset: number;
108
- /** `>= 2` (V-2). Lower values are raised rather than honoured. */
109
- overscan: number;
110
- }
111
- /** Choose which entries to mount, and how tall the two spacers must be. */
112
- export declare function selectWindow(input: SelectWindowInput): WindowSelection;