@aragon-agent/cli 0.6.46 → 0.6.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (775) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +80 -12
  3. package/dist/agent/coalesce.d.ts +5 -1
  4. package/dist/agent/coalesce.js +13 -0
  5. package/dist/agent/controller.d.ts +41 -20
  6. package/dist/agent/controller.js +68 -15
  7. package/dist/agent/conversation-reset.d.ts +1 -1
  8. package/dist/agent/governance-wiring.d.ts +6 -6
  9. package/dist/agent/governance-wiring.js +4 -4
  10. package/dist/agent/headless.d.ts +5 -5
  11. package/dist/agent/headless.js +4 -4
  12. package/dist/agent/job-notices.d.ts +1 -1
  13. package/dist/agent/job-notices.js +1 -1
  14. package/dist/agent/kit-apply.d.ts +3 -3
  15. package/dist/agent/kit-apply.js +3 -3
  16. package/dist/agent/model-profile-settings.d.ts +2 -2
  17. package/dist/agent/model-profile-settings.js +6 -6
  18. package/dist/agent/prompt-options.d.ts +1 -1
  19. package/dist/agent/system-prompt.d.ts +1 -1
  20. package/dist/agent/user-attention.d.ts +17 -0
  21. package/dist/agent/user-attention.js +32 -0
  22. package/dist/{ui → app}/App.d.ts +9 -9
  23. package/dist/{ui → app}/App.js +113 -79
  24. package/dist/{ui → app}/use-startup-notices.d.ts +1 -1
  25. package/dist/{ui → app}/use-startup-notices.js +2 -2
  26. package/dist/cli.js +31 -32
  27. package/dist/commands/agents-command.js +1 -1
  28. package/dist/commands/builtins.js +9 -9
  29. package/dist/commands/governance-command.js +2 -2
  30. package/dist/commands/governance-runs-table.js +1 -1
  31. package/dist/commands/kit-command.js +1 -1
  32. package/dist/commands/perf.d.ts +3 -3
  33. package/dist/commands/perf.js +1 -1
  34. package/dist/commands/registry.d.ts +8 -8
  35. package/dist/commands/skills.js +2 -2
  36. package/dist/commands/team-command.js +1 -1
  37. package/dist/compaction/archive.d.ts +1 -1
  38. package/dist/compaction/archive.js +1 -1
  39. package/dist/compaction/child.d.ts +3 -3
  40. package/dist/compaction/child.js +4 -4
  41. package/dist/compaction/command.js +5 -5
  42. package/dist/compaction/compactor.d.ts +6 -6
  43. package/dist/compaction/compactor.js +6 -6
  44. package/dist/compaction/context-command.js +1 -1
  45. package/dist/compaction/digest.js +1 -1
  46. package/dist/compaction/memory-input.js +1 -1
  47. package/dist/compaction/memory-validation.js +1 -1
  48. package/dist/compaction/memory.js +1 -1
  49. package/dist/compaction/summarize-call.js +1 -1
  50. package/dist/compaction/summary-prompt.js +1 -1
  51. package/dist/compaction/tail-budget.js +2 -2
  52. package/dist/compaction/wiring.d.ts +5 -5
  53. package/dist/compaction/wiring.js +2 -2
  54. package/dist/config/cli-commands.d.ts +1 -1
  55. package/dist/config/cli-commands.js +3 -3
  56. package/dist/config/env.d.ts +1 -1
  57. package/dist/config/env.js +4 -4
  58. package/dist/config/load.d.ts +2 -2
  59. package/dist/config/load.js +10 -31
  60. package/dist/config/migrate-state-out-of-config.js +1 -1
  61. package/dist/config/model-profile-store.d.ts +4 -54
  62. package/dist/config/model-profile-store.js +3 -3
  63. package/dist/config/prompt-history.js +1 -1
  64. package/dist/config/store.d.ts +2 -2
  65. package/dist/config/store.js +3 -3
  66. package/dist/diagnostics/doctor.js +4 -4
  67. package/dist/exec/bridge/decisions.d.ts +1 -1
  68. package/dist/exec/bridge/human-answers.d.ts +1 -1
  69. package/dist/exec/bridge/human-answers.js +1 -1
  70. package/dist/exec/bridge/protocol.d.ts +1 -1
  71. package/dist/exec/bridge/server.js +1 -1
  72. package/dist/exec/events.d.ts +2 -2
  73. package/dist/exec/index.d.ts +1 -1
  74. package/dist/exec/index.js +1 -1
  75. package/dist/exec/permission.js +1 -1
  76. package/dist/exec/runner.d.ts +3 -3
  77. package/dist/exec/runner.js +2 -2
  78. package/dist/exec/threads/runtime.js +1 -1
  79. package/dist/fast/digest.d.ts +1 -1
  80. package/dist/fast/digest.js +1 -1
  81. package/dist/fast/frames.d.ts +1 -1
  82. package/dist/fast/frames.js +1 -1
  83. package/dist/fast/prompt.d.ts +1 -1
  84. package/dist/fast/prompt.js +1 -1
  85. package/dist/fast/review-call.js +1 -1
  86. package/dist/fast/reviewer.d.ts +3 -3
  87. package/dist/fast/reviewer.js +1 -1
  88. package/dist/fast/summary-call.d.ts +3 -3
  89. package/dist/fast/summary-call.js +2 -2
  90. package/dist/fast/summary-prompt.d.ts +1 -1
  91. package/dist/fast/summary-prompt.js +1 -1
  92. package/dist/fast/wiring.d.ts +4 -4
  93. package/dist/fast/wiring.js +1 -1
  94. package/dist/governance/card-normalize.d.ts +1 -1
  95. package/dist/governance/copy.d.ts +1 -1
  96. package/dist/governance/copy.js +2 -2
  97. package/dist/governance/engine/artifact-persist.d.ts +1 -1
  98. package/dist/governance/engine/budget.d.ts +1 -1
  99. package/dist/governance/engine/budget.js +1 -1
  100. package/dist/governance/engine/cards.d.ts +1 -1
  101. package/dist/governance/engine/digest.js +1 -1
  102. package/dist/governance/engine/engine-core.d.ts +5 -5
  103. package/dist/governance/engine/engine-core.js +1 -1
  104. package/dist/governance/engine/engine.d.ts +1 -1
  105. package/dist/governance/engine/engine.js +1 -1
  106. package/dist/governance/engine/estimate.d.ts +1 -1
  107. package/dist/governance/engine/estimate.js +1 -1
  108. package/dist/governance/engine/inspector.js +2 -2
  109. package/dist/governance/engine/integration.d.ts +1 -1
  110. package/dist/governance/engine/lifecycle.d.ts +1 -1
  111. package/dist/governance/engine/lifecycle.js +1 -1
  112. package/dist/governance/engine/phase-members.d.ts +1 -1
  113. package/dist/governance/engine/phase-planner.d.ts +1 -1
  114. package/dist/governance/engine/phase-planner.js +1 -1
  115. package/dist/governance/engine/rebuild.d.ts +1 -1
  116. package/dist/governance/engine/report.d.ts +1 -1
  117. package/dist/governance/engine/report.js +1 -1
  118. package/dist/governance/engine/run-digest.d.ts +1 -1
  119. package/dist/governance/engine/spec-builder.d.ts +2 -2
  120. package/dist/governance/engine/spec-builder.js +2 -2
  121. package/dist/governance/engine/stage-runner.js +2 -2
  122. package/dist/governance/engine/start-input.d.ts +1 -1
  123. package/dist/governance/engine/start-input.js +1 -1
  124. package/dist/governance/engine/state-machine.d.ts +1 -1
  125. package/dist/governance/engine/state-machine.js +3 -3
  126. package/dist/governance/engine/submission-queries.d.ts +1 -1
  127. package/dist/governance/engine/submission-render.d.ts +1 -1
  128. package/dist/governance/engine/submissions.d.ts +1 -1
  129. package/dist/governance/engine/submissions.js +1 -1
  130. package/dist/governance/engine/visibility.d.ts +1 -1
  131. package/dist/governance/engine/visibility.js +1 -1
  132. package/dist/governance/posture-transition.d.ts +2 -2
  133. package/dist/governance/posture-transition.js +1 -1
  134. package/dist/governance/profiles.d.ts +1 -1
  135. package/dist/governance/prompts/orchestrator-block.d.ts +2 -2
  136. package/dist/governance/prompts/orchestrator-block.js +2 -2
  137. package/dist/governance/prompts/plan-addendum.d.ts +1 -1
  138. package/dist/governance/prompts/plan-addendum.js +1 -1
  139. package/dist/governance/prompts/role-blocks.d.ts +2 -2
  140. package/dist/governance/prompts/role-blocks.js +1 -1
  141. package/dist/governance/report-reader.js +1 -1
  142. package/dist/governance/roles.d.ts +1 -1
  143. package/dist/governance/rules/claims.d.ts +1 -1
  144. package/dist/governance/rules/claims.js +1 -1
  145. package/dist/governance/rules/elimination.d.ts +1 -1
  146. package/dist/governance/rules/elimination.js +1 -1
  147. package/dist/governance/rules/failure-analysis.d.ts +2 -2
  148. package/dist/governance/rules/failure-analysis.js +1 -1
  149. package/dist/governance/rules/ledger-replay.d.ts +1 -1
  150. package/dist/governance/rules/ledger-state.d.ts +1 -1
  151. package/dist/governance/rules/ledger-state.js +1 -1
  152. package/dist/governance/rules/ledger.d.ts +2 -2
  153. package/dist/governance/rules/ledger.js +2 -2
  154. package/dist/governance/rules/rca.d.ts +1 -1
  155. package/dist/governance/rules/rca.js +1 -1
  156. package/dist/governance/rules/settlement.d.ts +2 -2
  157. package/dist/governance/rules/settlement.js +2 -2
  158. package/dist/governance/rules/suspicion.d.ts +1 -1
  159. package/dist/governance/store/artifacts.d.ts +1 -1
  160. package/dist/governance/store/artifacts.js +1 -1
  161. package/dist/governance/store/events-log.d.ts +1 -1
  162. package/dist/governance/store/run-store.d.ts +1 -1
  163. package/dist/governance/store/run-store.js +1 -1
  164. package/dist/governance/store/scoreboard-export.d.ts +1 -1
  165. package/dist/governance/tools/child-tools.d.ts +1 -1
  166. package/dist/governance/tools/guard.d.ts +1 -1
  167. package/dist/governance/tools/guard.js +1 -1
  168. package/dist/governance/tools/inspector-tools.d.ts +2 -2
  169. package/dist/governance/tools/inspector-tools.js +2 -2
  170. package/dist/governance/tools/lead-tools.d.ts +1 -1
  171. package/dist/governance/tools/lead-tools.js +1 -1
  172. package/dist/governance/tools/normalize-util.js +1 -1
  173. package/dist/governance/tools/scan-incomplete.js +1 -1
  174. package/dist/governance/tools/shared-tools.d.ts +1 -1
  175. package/dist/governance/tools/shared-tools.js +1 -1
  176. package/dist/governance/tools/submit-normalizers.d.ts +1 -1
  177. package/dist/governance/tools/submit-normalizers.js +1 -1
  178. package/dist/governance/tools/submit-tools.d.ts +1 -1
  179. package/dist/logging/cli-commands.js +1 -1
  180. package/dist/logging/install.d.ts +1 -1
  181. package/dist/logging/install.js +3 -3
  182. package/dist/logging/logger.d.ts +2 -2
  183. package/dist/logging/logger.js +31 -2
  184. package/dist/proc/kill-tree.js +1 -1
  185. package/dist/proc/log-mirror.js +1 -1
  186. package/dist/proc/log-ring.js +2 -2
  187. package/dist/proc/notices.d.ts +1 -1
  188. package/dist/proc/notices.js +2 -2
  189. package/dist/proc/prompt.d.ts +1 -1
  190. package/dist/proc/prompt.js +8 -5
  191. package/dist/proc/readiness.js +1 -1
  192. package/dist/proc/supervisor.d.ts +1 -1
  193. package/dist/proc/supervisor.js +10 -4
  194. package/dist/proc/wait-plan.d.ts +39 -0
  195. package/dist/proc/wait-plan.js +77 -0
  196. package/dist/proc/wait.d.ts +37 -4
  197. package/dist/proc/wait.js +68 -5
  198. package/dist/prompts/command.d.ts +1 -1
  199. package/dist/prompts/command.js +1 -1
  200. package/dist/prompts/normalize.d.ts +1 -1
  201. package/dist/prompts/normalize.js +1 -1
  202. package/dist/prompts/resolve.d.ts +1 -1
  203. package/dist/prompts/store.d.ts +2 -12
  204. package/dist/prompts/store.js +6 -60
  205. package/dist/session/checkpoint.d.ts +2 -2
  206. package/dist/session/checkpoint.js +2 -0
  207. package/dist/session/clear-archive.d.ts +2 -2
  208. package/dist/session/persist.d.ts +2 -2
  209. package/dist/session/persist.js +20 -3
  210. package/dist/session/startup-session.d.ts +2 -2
  211. package/dist/session/validate-session.js +6 -3
  212. package/dist/skills/service.d.ts +2 -2
  213. package/dist/team/bus.d.ts +1 -1
  214. package/dist/team/bus.js +1 -1
  215. package/dist/team/child-reviewer.d.ts +2 -2
  216. package/dist/team/child-reviewer.js +1 -1
  217. package/dist/team/comm-tools.js +1 -1
  218. package/dist/team/dispatch-gate.js +1 -1
  219. package/dist/team/forced-dispatch.js +1 -1
  220. package/dist/team/forced-mode.d.ts +1 -1
  221. package/dist/team/forced-prompt.d.ts +1 -1
  222. package/dist/team/forced-prompt.js +1 -1
  223. package/dist/team/normalize.d.ts +1 -1
  224. package/dist/team/normalize.js +1 -1
  225. package/dist/team/overseer.d.ts +3 -3
  226. package/dist/team/overseer.js +3 -3
  227. package/dist/team/prompt.d.ts +1 -1
  228. package/dist/team/prompt.js +1 -1
  229. package/dist/team/report.d.ts +2 -2
  230. package/dist/team/report.js +2 -2
  231. package/dist/team/retry.d.ts +1 -1
  232. package/dist/team/retry.js +1 -1
  233. package/dist/team/runtime.d.ts +4 -4
  234. package/dist/team/runtime.js +2 -2
  235. package/dist/team/settled.d.ts +2 -2
  236. package/dist/team/subagent.d.ts +4 -4
  237. package/dist/team/subagent.js +5 -5
  238. package/dist/team/task-tool.d.ts +1 -1
  239. package/dist/team/task-tool.js +1 -1
  240. package/dist/todo/normalize.d.ts +1 -1
  241. package/dist/todo/normalize.js +1 -1
  242. package/dist/todo/prompt.d.ts +1 -1
  243. package/dist/todo/prompt.js +1 -1
  244. package/dist/todo/store.d.ts +1 -1
  245. package/dist/todo/store.js +2 -2
  246. package/dist/todo/todo-tool.d.ts +1 -1
  247. package/dist/todo/todo-tool.js +2 -2
  248. package/dist/tools/bash-tool.d.ts +1 -1
  249. package/dist/tools/bash-tool.js +2 -2
  250. package/dist/tools/diff.d.ts +1 -1
  251. package/dist/tools/diff.js +1 -1
  252. package/dist/tools/file-change-store.d.ts +1 -1
  253. package/dist/tools/fs-tools.d.ts +2 -2
  254. package/dist/tools/fs-tools.js +1 -1
  255. package/dist/tools/index.d.ts +3 -3
  256. package/dist/tools/index.js +1 -1
  257. package/dist/tools/job-tools.d.ts +14 -3
  258. package/dist/tools/job-tools.js +158 -35
  259. package/dist/tools/plan-tools.d.ts +1 -1
  260. package/dist/tools/plan-tools.js +1 -1
  261. package/dist/tools/proc-tools.d.ts +1 -1
  262. package/dist/tools/proc-tools.js +2 -2
  263. package/dist/update/classify-failure.d.ts +1 -1
  264. package/dist/update/install-lock.js +1 -1
  265. package/dist/update/install-source.d.ts +1 -1
  266. package/dist/update/installer.js +2 -2
  267. package/dist/update/npm-view.d.ts +1 -1
  268. package/dist/update/npm-view.js +1 -1
  269. package/dist/update/registry.d.ts +1 -1
  270. package/dist/update/registry.js +1 -1
  271. package/dist/update/service.d.ts +2 -2
  272. package/dist/update/service.js +2 -2
  273. package/package.json +7 -7
  274. package/dist/agent/agent-mode.d.ts +0 -108
  275. package/dist/agent/agent-mode.js +0 -121
  276. package/dist/agent/entry-limits.d.ts +0 -65
  277. package/dist/agent/entry-limits.js +0 -133
  278. package/dist/agent/governance-view.d.ts +0 -40
  279. package/dist/agent/governance-view.js +0 -40
  280. package/dist/agent/invocation-card.d.ts +0 -77
  281. package/dist/agent/invocation-card.js +0 -169
  282. package/dist/agent/model-probe-limits.d.ts +0 -39
  283. package/dist/agent/model-probe-limits.js +0 -25
  284. package/dist/agent/model-probe.d.ts +0 -104
  285. package/dist/agent/model-probe.js +0 -391
  286. package/dist/agent/queued-messages.d.ts +0 -23
  287. package/dist/agent/queued-messages.js +0 -49
  288. package/dist/agent/reducer.d.ts +0 -837
  289. package/dist/agent/reducer.js +0 -1617
  290. package/dist/agent/retry-view.d.ts +0 -68
  291. package/dist/agent/retry-view.js +0 -95
  292. package/dist/agent/usage.d.ts +0 -47
  293. package/dist/agent/usage.js +0 -84
  294. package/dist/compaction/limits.d.ts +0 -61
  295. package/dist/compaction/limits.js +0 -64
  296. package/dist/compaction/meter.d.ts +0 -276
  297. package/dist/compaction/meter.js +0 -512
  298. package/dist/compaction/pressure.d.ts +0 -163
  299. package/dist/compaction/pressure.js +0 -199
  300. package/dist/compaction/reason-text.d.ts +0 -36
  301. package/dist/compaction/reason-text.js +0 -78
  302. package/dist/compaction/types.d.ts +0 -360
  303. package/dist/compaction/types.js +0 -22
  304. package/dist/config/governance-config.d.ts +0 -125
  305. package/dist/config/governance-config.js +0 -164
  306. package/dist/config/kit-resolution.d.ts +0 -93
  307. package/dist/config/kit-resolution.js +0 -226
  308. package/dist/config/model-kits.d.ts +0 -225
  309. package/dist/config/model-kits.js +0 -302
  310. package/dist/config/model-profile-resolution.d.ts +0 -28
  311. package/dist/config/model-profile-resolution.js +0 -88
  312. package/dist/config/model-profiles.d.ts +0 -103
  313. package/dist/config/model-profiles.js +0 -188
  314. package/dist/config/schema.d.ts +0 -1645
  315. package/dist/config/schema.js +0 -1377
  316. package/dist/fast/limits.d.ts +0 -152
  317. package/dist/fast/limits.js +0 -152
  318. package/dist/fast/resolve.d.ts +0 -44
  319. package/dist/fast/resolve.js +0 -107
  320. package/dist/fast/task-summary-types.d.ts +0 -66
  321. package/dist/fast/task-summary-types.js +0 -17
  322. package/dist/fast/types.d.ts +0 -141
  323. package/dist/fast/types.js +0 -14
  324. package/dist/governance/governed-dispatch.d.ts +0 -19
  325. package/dist/governance/governed-dispatch.js +0 -17
  326. package/dist/governance/limits.d.ts +0 -107
  327. package/dist/governance/limits.js +0 -131
  328. package/dist/governance/posture.d.ts +0 -35
  329. package/dist/governance/posture.js +0 -59
  330. package/dist/governance/rules/events-table.d.ts +0 -46
  331. package/dist/governance/rules/events-table.js +0 -94
  332. package/dist/governance/types.d.ts +0 -661
  333. package/dist/governance/types.js +0 -27
  334. package/dist/input/control-sequences.d.ts +0 -71
  335. package/dist/input/control-sequences.js +0 -222
  336. package/dist/input/csiu-keys.d.ts +0 -66
  337. package/dist/input/csiu-keys.js +0 -181
  338. package/dist/input/cursor-report.d.ts +0 -61
  339. package/dist/input/cursor-report.js +0 -97
  340. package/dist/input/enter-sequences.d.ts +0 -64
  341. package/dist/input/enter-sequences.js +0 -153
  342. package/dist/input/interrupt-gesture.d.ts +0 -18
  343. package/dist/input/interrupt-gesture.js +0 -19
  344. package/dist/input/keyboard-enhancement.d.ts +0 -42
  345. package/dist/input/keyboard-enhancement.js +0 -65
  346. package/dist/input/keymap.d.ts +0 -20
  347. package/dist/input/keymap.js +0 -99
  348. package/dist/input/limits.d.ts +0 -118
  349. package/dist/input/limits.js +0 -109
  350. package/dist/input/mouse-events.d.ts +0 -87
  351. package/dist/input/mouse-events.js +0 -212
  352. package/dist/input/paste-parse.d.ts +0 -83
  353. package/dist/input/paste-parse.js +0 -107
  354. package/dist/input/pointer-router.d.ts +0 -11
  355. package/dist/input/pointer-router.js +0 -14
  356. package/dist/input/stdin-filter.d.ts +0 -112
  357. package/dist/input/stdin-filter.js +0 -657
  358. package/dist/input/win32-input-mode.d.ts +0 -61
  359. package/dist/input/win32-input-mode.js +0 -269
  360. package/dist/logging/levels.d.ts +0 -40
  361. package/dist/logging/levels.js +0 -59
  362. package/dist/logging/secret-registry.d.ts +0 -32
  363. package/dist/logging/secret-registry.js +0 -73
  364. package/dist/proc/limits.d.ts +0 -200
  365. package/dist/proc/limits.js +0 -207
  366. package/dist/proc/progress.d.ts +0 -40
  367. package/dist/proc/progress.js +0 -135
  368. package/dist/proc/types.d.ts +0 -263
  369. package/dist/proc/types.js +0 -15
  370. package/dist/prompts/copy.d.ts +0 -89
  371. package/dist/prompts/copy.js +0 -131
  372. package/dist/prompts/fill.d.ts +0 -51
  373. package/dist/prompts/fill.js +0 -46
  374. package/dist/prompts/limits.d.ts +0 -53
  375. package/dist/prompts/limits.js +0 -53
  376. package/dist/prompts/search.d.ts +0 -58
  377. package/dist/prompts/search.js +0 -146
  378. package/dist/prompts/types.d.ts +0 -204
  379. package/dist/prompts/types.js +0 -13
  380. package/dist/team/activity.d.ts +0 -67
  381. package/dist/team/activity.js +0 -130
  382. package/dist/team/limits.d.ts +0 -308
  383. package/dist/team/limits.js +0 -330
  384. package/dist/team/model.d.ts +0 -104
  385. package/dist/team/model.js +0 -150
  386. package/dist/team/panel-rows.d.ts +0 -48
  387. package/dist/team/panel-rows.js +0 -75
  388. package/dist/team/timeline.d.ts +0 -74
  389. package/dist/team/timeline.js +0 -101
  390. package/dist/team/types.d.ts +0 -354
  391. package/dist/team/types.js +0 -13
  392. package/dist/todo/acceptance.d.ts +0 -120
  393. package/dist/todo/acceptance.js +0 -399
  394. package/dist/todo/follow-through.d.ts +0 -138
  395. package/dist/todo/follow-through.js +0 -248
  396. package/dist/todo/limits.d.ts +0 -152
  397. package/dist/todo/limits.js +0 -152
  398. package/dist/todo/panel-rows.d.ts +0 -45
  399. package/dist/todo/panel-rows.js +0 -70
  400. package/dist/todo/plan-sections.d.ts +0 -60
  401. package/dist/todo/plan-sections.js +0 -108
  402. package/dist/todo/row-window.d.ts +0 -51
  403. package/dist/todo/row-window.js +0 -107
  404. package/dist/todo/types.d.ts +0 -124
  405. package/dist/todo/types.js +0 -12
  406. package/dist/tools/human-input.d.ts +0 -212
  407. package/dist/tools/human-input.js +0 -265
  408. package/dist/tools/patch.d.ts +0 -115
  409. package/dist/tools/patch.js +0 -453
  410. package/dist/tools/terminal-output.d.ts +0 -115
  411. package/dist/tools/terminal-output.js +0 -201
  412. package/dist/tools/tool-output-store.d.ts +0 -68
  413. package/dist/tools/tool-output-store.js +0 -102
  414. package/dist/ui/ActivityLine.d.ts +0 -26
  415. package/dist/ui/ActivityLine.js +0 -48
  416. package/dist/ui/AutocompletePopup.d.ts +0 -23
  417. package/dist/ui/AutocompletePopup.js +0 -17
  418. package/dist/ui/BottomStatusRow.d.ts +0 -10
  419. package/dist/ui/BottomStatusRow.js +0 -9
  420. package/dist/ui/Composer.d.ts +0 -115
  421. package/dist/ui/Composer.js +0 -64
  422. package/dist/ui/GovernancePanel.d.ts +0 -50
  423. package/dist/ui/GovernancePanel.js +0 -77
  424. package/dist/ui/GovernanceRun.d.ts +0 -18
  425. package/dist/ui/GovernanceRun.js +0 -11
  426. package/dist/ui/Header.d.ts +0 -48
  427. package/dist/ui/Header.js +0 -27
  428. package/dist/ui/Logo.d.ts +0 -32
  429. package/dist/ui/Logo.js +0 -65
  430. package/dist/ui/Markdown.d.ts +0 -29
  431. package/dist/ui/Markdown.js +0 -116
  432. package/dist/ui/PromptCaret.d.ts +0 -11
  433. package/dist/ui/PromptCaret.js +0 -31
  434. package/dist/ui/PromptInput.d.ts +0 -192
  435. package/dist/ui/PromptInput.js +0 -689
  436. package/dist/ui/QueuePanel.d.ts +0 -8
  437. package/dist/ui/QueuePanel.js +0 -9
  438. package/dist/ui/QueueStatusRow.d.ts +0 -24
  439. package/dist/ui/QueueStatusRow.js +0 -51
  440. package/dist/ui/ScrollbackShell.d.ts +0 -132
  441. package/dist/ui/ScrollbackShell.js +0 -26
  442. package/dist/ui/SessionOpener.d.ts +0 -30
  443. package/dist/ui/SessionOpener.js +0 -12
  444. package/dist/ui/StatusBar.d.ts +0 -129
  445. package/dist/ui/StatusBar.js +0 -61
  446. package/dist/ui/TeamPanel.d.ts +0 -76
  447. package/dist/ui/TeamPanel.js +0 -103
  448. package/dist/ui/ToastStack.d.ts +0 -8
  449. package/dist/ui/ToastStack.js +0 -31
  450. package/dist/ui/TodoPanel.d.ts +0 -52
  451. package/dist/ui/TodoPanel.js +0 -214
  452. package/dist/ui/Transcript.d.ts +0 -105
  453. package/dist/ui/Transcript.js +0 -251
  454. package/dist/ui/UpdateLine.d.ts +0 -44
  455. package/dist/ui/UpdateLine.js +0 -129
  456. package/dist/ui/activity-phrases.d.ts +0 -33
  457. package/dist/ui/activity-phrases.js +0 -50
  458. package/dist/ui/capabilities.d.ts +0 -27
  459. package/dist/ui/capabilities.js +0 -65
  460. package/dist/ui/clipboard-task.d.ts +0 -29
  461. package/dist/ui/clipboard-task.js +0 -66
  462. package/dist/ui/clipboard.d.ts +0 -31
  463. package/dist/ui/clipboard.js +0 -157
  464. package/dist/ui/color-runtime.d.ts +0 -5
  465. package/dist/ui/color-runtime.js +0 -29
  466. package/dist/ui/composer-input.d.ts +0 -38
  467. package/dist/ui/composer-input.js +0 -79
  468. package/dist/ui/composer-limits.d.ts +0 -30
  469. package/dist/ui/composer-limits.js +0 -45
  470. package/dist/ui/composer-rows.d.ts +0 -73
  471. package/dist/ui/composer-rows.js +0 -129
  472. package/dist/ui/console-bridge.d.ts +0 -19
  473. package/dist/ui/console-bridge.js +0 -52
  474. package/dist/ui/density.d.ts +0 -26
  475. package/dist/ui/density.js +0 -34
  476. package/dist/ui/display-tab.d.ts +0 -51
  477. package/dist/ui/display-tab.js +0 -82
  478. package/dist/ui/editor-navigation.d.ts +0 -55
  479. package/dist/ui/editor-navigation.js +0 -96
  480. package/dist/ui/editor-reducer.d.ts +0 -108
  481. package/dist/ui/editor-reducer.js +0 -187
  482. package/dist/ui/enter-frames.d.ts +0 -47
  483. package/dist/ui/enter-frames.js +0 -117
  484. package/dist/ui/entries/AssistantEntry.d.ts +0 -37
  485. package/dist/ui/entries/AssistantEntry.js +0 -43
  486. package/dist/ui/entries/CompactionCard.d.ts +0 -88
  487. package/dist/ui/entries/CompactionCard.js +0 -222
  488. package/dist/ui/entries/DiffView.d.ts +0 -61
  489. package/dist/ui/entries/DiffView.js +0 -103
  490. package/dist/ui/entries/EntryFrame.d.ts +0 -23
  491. package/dist/ui/entries/EntryFrame.js +0 -6
  492. package/dist/ui/entries/FastCard.d.ts +0 -53
  493. package/dist/ui/entries/FastCard.js +0 -105
  494. package/dist/ui/entries/GovernanceCard.d.ts +0 -30
  495. package/dist/ui/entries/GovernanceCard.js +0 -32
  496. package/dist/ui/entries/InvocationCard.d.ts +0 -20
  497. package/dist/ui/entries/InvocationCard.js +0 -32
  498. package/dist/ui/entries/QueuedEntry.d.ts +0 -27
  499. package/dist/ui/entries/QueuedEntry.js +0 -33
  500. package/dist/ui/entries/RetryCard.d.ts +0 -56
  501. package/dist/ui/entries/RetryCard.js +0 -60
  502. package/dist/ui/entries/ServiceCard.d.ts +0 -82
  503. package/dist/ui/entries/ServiceCard.js +0 -151
  504. package/dist/ui/entries/TeamCard.d.ts +0 -55
  505. package/dist/ui/entries/TeamCard.js +0 -94
  506. package/dist/ui/entries/TodoCard.d.ts +0 -54
  507. package/dist/ui/entries/TodoCard.js +0 -98
  508. package/dist/ui/entries/ToolCard.d.ts +0 -81
  509. package/dist/ui/entries/ToolCard.js +0 -160
  510. package/dist/ui/entries/ToolPreview.d.ts +0 -59
  511. package/dist/ui/entries/ToolPreview.js +0 -208
  512. package/dist/ui/entries/UserEntry.d.ts +0 -36
  513. package/dist/ui/entries/UserEntry.js +0 -57
  514. package/dist/ui/exit-snapshot.d.ts +0 -43
  515. package/dist/ui/exit-snapshot.js +0 -26
  516. package/dist/ui/frame-differ.d.ts +0 -166
  517. package/dist/ui/frame-differ.js +0 -354
  518. package/dist/ui/frame-observer.d.ts +0 -17
  519. package/dist/ui/frame-observer.js +0 -94
  520. package/dist/ui/frame-parser.d.ts +0 -7
  521. package/dist/ui/frame-parser.js +0 -18
  522. package/dist/ui/gauge.d.ts +0 -39
  523. package/dist/ui/gauge.js +0 -55
  524. package/dist/ui/glyphs.d.ts +0 -178
  525. package/dist/ui/glyphs.js +0 -165
  526. package/dist/ui/governance-copy.d.ts +0 -69
  527. package/dist/ui/governance-copy.js +0 -104
  528. package/dist/ui/governance-status.d.ts +0 -145
  529. package/dist/ui/governance-status.js +0 -326
  530. package/dist/ui/gradient.d.ts +0 -11
  531. package/dist/ui/gradient.js +0 -50
  532. package/dist/ui/ink-runtime.d.ts +0 -4
  533. package/dist/ui/ink-runtime.js +0 -51
  534. package/dist/ui/interaction-copy.d.ts +0 -82
  535. package/dist/ui/interaction-copy.js +0 -38
  536. package/dist/ui/interaction-hints.d.ts +0 -44
  537. package/dist/ui/interaction-hints.js +0 -97
  538. package/dist/ui/layout/AppShell.d.ts +0 -17
  539. package/dist/ui/layout/AppShell.js +0 -6
  540. package/dist/ui/layout/Gutter.d.ts +0 -67
  541. package/dist/ui/layout/Gutter.js +0 -42
  542. package/dist/ui/layout/MeasuredEntry.d.ts +0 -21
  543. package/dist/ui/layout/MeasuredEntry.js +0 -30
  544. package/dist/ui/layout/OverlayFrame.d.ts +0 -73
  545. package/dist/ui/layout/OverlayFrame.js +0 -110
  546. package/dist/ui/layout/ScrollIndicator.d.ts +0 -32
  547. package/dist/ui/layout/ScrollIndicator.js +0 -22
  548. package/dist/ui/layout/ScrollViewport.d.ts +0 -40
  549. package/dist/ui/layout/ScrollViewport.js +0 -222
  550. package/dist/ui/layout/agents-board.d.ts +0 -102
  551. package/dist/ui/layout/agents-board.js +0 -389
  552. package/dist/ui/layout/autocomplete.d.ts +0 -18
  553. package/dist/ui/layout/autocomplete.js +0 -26
  554. package/dist/ui/layout/budget.d.ts +0 -43
  555. package/dist/ui/layout/budget.js +0 -52
  556. package/dist/ui/layout/cells.d.ts +0 -61
  557. package/dist/ui/layout/cells.js +0 -156
  558. package/dist/ui/layout/document-layout.d.ts +0 -13
  559. package/dist/ui/layout/document-layout.js +0 -10
  560. package/dist/ui/layout/follow-state.d.ts +0 -138
  561. package/dist/ui/layout/follow-state.js +0 -148
  562. package/dist/ui/layout/frame.d.ts +0 -36
  563. package/dist/ui/layout/frame.js +0 -39
  564. package/dist/ui/layout/governance-board.d.ts +0 -121
  565. package/dist/ui/layout/governance-board.js +0 -382
  566. package/dist/ui/layout/governance-card.d.ts +0 -53
  567. package/dist/ui/layout/governance-card.js +0 -134
  568. package/dist/ui/layout/governance-chip.d.ts +0 -38
  569. package/dist/ui/layout/governance-chip.js +0 -64
  570. package/dist/ui/layout/governance-panel.d.ts +0 -85
  571. package/dist/ui/layout/governance-panel.js +0 -358
  572. package/dist/ui/layout/governance-roster.d.ts +0 -65
  573. package/dist/ui/layout/governance-roster.js +0 -275
  574. package/dist/ui/layout/header-hints.d.ts +0 -90
  575. package/dist/ui/layout/header-hints.js +0 -110
  576. package/dist/ui/layout/header-left.d.ts +0 -115
  577. package/dist/ui/layout/header-left.js +0 -206
  578. package/dist/ui/layout/invocation-card.d.ts +0 -41
  579. package/dist/ui/layout/invocation-card.js +0 -91
  580. package/dist/ui/layout/kit-chip.d.ts +0 -50
  581. package/dist/ui/layout/kit-chip.js +0 -81
  582. package/dist/ui/layout/overlay-window.d.ts +0 -43
  583. package/dist/ui/layout/overlay-window.js +0 -51
  584. package/dist/ui/layout/queue-layout.d.ts +0 -19
  585. package/dist/ui/layout/queue-layout.js +0 -26
  586. package/dist/ui/layout/rail.d.ts +0 -7
  587. package/dist/ui/layout/rail.js +0 -16
  588. package/dist/ui/layout/scroll-indicator.d.ts +0 -27
  589. package/dist/ui/layout/scroll-indicator.js +0 -36
  590. package/dist/ui/layout/scroll.d.ts +0 -37
  591. package/dist/ui/layout/scroll.js +0 -99
  592. package/dist/ui/layout/scrollbar-geometry.d.ts +0 -17
  593. package/dist/ui/layout/scrollbar-geometry.js +0 -13
  594. package/dist/ui/layout/session-chip.d.ts +0 -52
  595. package/dist/ui/layout/session-chip.js +0 -64
  596. package/dist/ui/layout/shortcut-panel-layout.d.ts +0 -191
  597. package/dist/ui/layout/shortcut-panel-layout.js +0 -321
  598. package/dist/ui/layout/status-detail-layout.d.ts +0 -9
  599. package/dist/ui/layout/status-detail-layout.js +0 -79
  600. package/dist/ui/layout/status-layout.d.ts +0 -139
  601. package/dist/ui/layout/status-layout.js +0 -253
  602. package/dist/ui/layout/task-summary-cell.d.ts +0 -61
  603. package/dist/ui/layout/task-summary-cell.js +0 -65
  604. package/dist/ui/layout/team-panel.d.ts +0 -18
  605. package/dist/ui/layout/team-panel.js +0 -25
  606. package/dist/ui/layout/team-row.d.ts +0 -139
  607. package/dist/ui/layout/team-row.js +0 -246
  608. package/dist/ui/layout/todo-layout.d.ts +0 -62
  609. package/dist/ui/layout/todo-layout.js +0 -102
  610. package/dist/ui/layout/useTerminalSize.d.ts +0 -13
  611. package/dist/ui/layout/useTerminalSize.js +0 -50
  612. package/dist/ui/layout/viewport-geometry.d.ts +0 -29
  613. package/dist/ui/layout/viewport-geometry.js +0 -28
  614. package/dist/ui/layout/virtual-window.d.ts +0 -112
  615. package/dist/ui/layout/virtual-window.js +0 -488
  616. package/dist/ui/layout/wrap-rows.d.ts +0 -26
  617. package/dist/ui/layout/wrap-rows.js +0 -88
  618. package/dist/ui/live-clamp.d.ts +0 -14
  619. package/dist/ui/live-clamp.js +0 -46
  620. package/dist/ui/markdown-blocks.d.ts +0 -107
  621. package/dist/ui/markdown-blocks.js +0 -240
  622. package/dist/ui/overlays/AgentsBoardOverlay.d.ts +0 -57
  623. package/dist/ui/overlays/AgentsBoardOverlay.js +0 -183
  624. package/dist/ui/overlays/ConfirmDialog.d.ts +0 -31
  625. package/dist/ui/overlays/ConfirmDialog.js +0 -44
  626. package/dist/ui/overlays/GovernanceBoardOverlay.d.ts +0 -41
  627. package/dist/ui/overlays/GovernanceBoardOverlay.js +0 -76
  628. package/dist/ui/overlays/GovernanceSettingsPage.d.ts +0 -48
  629. package/dist/ui/overlays/GovernanceSettingsPage.js +0 -93
  630. package/dist/ui/overlays/HelpOverlay.d.ts +0 -29
  631. package/dist/ui/overlays/HelpOverlay.js +0 -232
  632. package/dist/ui/overlays/KitEditor.d.ts +0 -23
  633. package/dist/ui/overlays/KitEditor.js +0 -101
  634. package/dist/ui/overlays/KitManager.d.ts +0 -23
  635. package/dist/ui/overlays/KitManager.js +0 -104
  636. package/dist/ui/overlays/KitPicker.d.ts +0 -49
  637. package/dist/ui/overlays/KitPicker.js +0 -58
  638. package/dist/ui/overlays/ModelDiscoveryList.d.ts +0 -23
  639. package/dist/ui/overlays/ModelDiscoveryList.js +0 -161
  640. package/dist/ui/overlays/ModelPicker.d.ts +0 -26
  641. package/dist/ui/overlays/ModelPicker.js +0 -63
  642. package/dist/ui/overlays/ModelProfileEditor.d.ts +0 -29
  643. package/dist/ui/overlays/ModelProfileEditor.js +0 -168
  644. package/dist/ui/overlays/ModelProfilePicker.d.ts +0 -48
  645. package/dist/ui/overlays/ModelProfilePicker.js +0 -231
  646. package/dist/ui/overlays/PlanReviewOverlay.d.ts +0 -51
  647. package/dist/ui/overlays/PlanReviewOverlay.js +0 -132
  648. package/dist/ui/overlays/PromptEditorPage.d.ts +0 -48
  649. package/dist/ui/overlays/PromptEditorPage.js +0 -227
  650. package/dist/ui/overlays/PromptLibraryOverlay.d.ts +0 -37
  651. package/dist/ui/overlays/PromptLibraryOverlay.js +0 -191
  652. package/dist/ui/overlays/PromptPicker.d.ts +0 -36
  653. package/dist/ui/overlays/PromptPicker.js +0 -129
  654. package/dist/ui/overlays/PromptTextArea.d.ts +0 -86
  655. package/dist/ui/overlays/PromptTextArea.js +0 -141
  656. package/dist/ui/overlays/QuestionOverlay.d.ts +0 -39
  657. package/dist/ui/overlays/QuestionOverlay.js +0 -258
  658. package/dist/ui/overlays/QueueOverlay.d.ts +0 -22
  659. package/dist/ui/overlays/QueueOverlay.js +0 -79
  660. package/dist/ui/overlays/SettingsScreen.d.ts +0 -228
  661. package/dist/ui/overlays/SettingsScreen.js +0 -1037
  662. package/dist/ui/overlays/ShortcutPanel.d.ts +0 -39
  663. package/dist/ui/overlays/ShortcutPanel.js +0 -106
  664. package/dist/ui/overlays/TeamFanoutPage.d.ts +0 -51
  665. package/dist/ui/overlays/TeamFanoutPage.js +0 -90
  666. package/dist/ui/overlays/governance-settings.d.ts +0 -79
  667. package/dist/ui/overlays/governance-settings.js +0 -140
  668. package/dist/ui/overlays/kit-picker-state.d.ts +0 -87
  669. package/dist/ui/overlays/kit-picker-state.js +0 -136
  670. package/dist/ui/overlays/kit-settings-state.d.ts +0 -129
  671. package/dist/ui/overlays/kit-settings-state.js +0 -268
  672. package/dist/ui/overlays/model-probe-view.d.ts +0 -128
  673. package/dist/ui/overlays/model-probe-view.js +0 -225
  674. package/dist/ui/overlays/model-profile-state.d.ts +0 -177
  675. package/dist/ui/overlays/model-profile-state.js +0 -301
  676. package/dist/ui/overlays/prompt-library-state.d.ts +0 -162
  677. package/dist/ui/overlays/prompt-library-state.js +0 -335
  678. package/dist/ui/overlays/prompt-picker-state.d.ts +0 -71
  679. package/dist/ui/overlays/prompt-picker-state.js +0 -98
  680. package/dist/ui/overlays/team-fanout-state.d.ts +0 -106
  681. package/dist/ui/overlays/team-fanout-state.js +0 -155
  682. package/dist/ui/overlays/use-model-probe.d.ts +0 -30
  683. package/dist/ui/overlays/use-model-probe.js +0 -109
  684. package/dist/ui/palettes.d.ts +0 -112
  685. package/dist/ui/palettes.js +0 -130
  686. package/dist/ui/paste-frames.d.ts +0 -91
  687. package/dist/ui/paste-frames.js +0 -117
  688. package/dist/ui/paste-tokens.d.ts +0 -90
  689. package/dist/ui/paste-tokens.js +0 -147
  690. package/dist/ui/render-cache.d.ts +0 -81
  691. package/dist/ui/render-cache.js +0 -196
  692. package/dist/ui/render-governor.d.ts +0 -54
  693. package/dist/ui/render-governor.js +0 -78
  694. package/dist/ui/run-metrics.d.ts +0 -23
  695. package/dist/ui/run-metrics.js +0 -27
  696. package/dist/ui/run-status-row.d.ts +0 -61
  697. package/dist/ui/run-status-row.js +0 -54
  698. package/dist/ui/screen.d.ts +0 -107
  699. package/dist/ui/screen.js +0 -234
  700. package/dist/ui/scrollback/LiveTail.d.ts +0 -115
  701. package/dist/ui/scrollback/LiveTail.js +0 -48
  702. package/dist/ui/scrollback/band.d.ts +0 -114
  703. package/dist/ui/scrollback/band.js +0 -143
  704. package/dist/ui/scrollback/budget.d.ts +0 -90
  705. package/dist/ui/scrollback/budget.js +0 -100
  706. package/dist/ui/scrollback/canvas.d.ts +0 -100
  707. package/dist/ui/scrollback/canvas.js +0 -114
  708. package/dist/ui/scrollback/cursor-probe.d.ts +0 -71
  709. package/dist/ui/scrollback/cursor-probe.js +0 -133
  710. package/dist/ui/scrollback/drain.d.ts +0 -32
  711. package/dist/ui/scrollback/drain.js +0 -64
  712. package/dist/ui/scrollback/exit-summary.d.ts +0 -23
  713. package/dist/ui/scrollback/exit-summary.js +0 -25
  714. package/dist/ui/scrollback/limits.d.ts +0 -98
  715. package/dist/ui/scrollback/limits.js +0 -98
  716. package/dist/ui/scrollback/live-preview.d.ts +0 -34
  717. package/dist/ui/scrollback/live-preview.js +0 -118
  718. package/dist/ui/scrollback/overflow-print.d.ts +0 -108
  719. package/dist/ui/scrollback/overflow-print.js +0 -120
  720. package/dist/ui/scrollback/renderer.d.ts +0 -48
  721. package/dist/ui/scrollback/renderer.js +0 -186
  722. package/dist/ui/scrollback/scrollback-writer.d.ts +0 -174
  723. package/dist/ui/scrollback/scrollback-writer.js +0 -648
  724. package/dist/ui/scrollback/settled-boundary.d.ts +0 -42
  725. package/dist/ui/scrollback/settled-boundary.js +0 -109
  726. package/dist/ui/scrollback/tail-anchor.d.ts +0 -71
  727. package/dist/ui/scrollback/tail-anchor.js +0 -79
  728. package/dist/ui/scrollback/tail-window.d.ts +0 -73
  729. package/dist/ui/scrollback/tail-window.js +0 -89
  730. package/dist/ui/scrollback/use-scrollback-view.d.ts +0 -139
  731. package/dist/ui/scrollback/use-scrollback-view.js +0 -601
  732. package/dist/ui/scrollback/writer-shapes.d.ts +0 -127
  733. package/dist/ui/scrollback/writer-shapes.js +0 -159
  734. package/dist/ui/scrollbar-controller.d.ts +0 -30
  735. package/dist/ui/scrollbar-controller.js +0 -124
  736. package/dist/ui/selection/highlight.d.ts +0 -39
  737. package/dist/ui/selection/highlight.js +0 -64
  738. package/dist/ui/selection/screen-mirror.d.ts +0 -24
  739. package/dist/ui/selection/screen-mirror.js +0 -35
  740. package/dist/ui/selection/selection-controller.d.ts +0 -104
  741. package/dist/ui/selection/selection-controller.js +0 -372
  742. package/dist/ui/selection/selection.d.ts +0 -90
  743. package/dist/ui/selection/selection.js +0 -223
  744. package/dist/ui/shortcuts.d.ts +0 -81
  745. package/dist/ui/shortcuts.js +0 -221
  746. package/dist/ui/status-feedback.d.ts +0 -35
  747. package/dist/ui/status-feedback.js +0 -38
  748. package/dist/ui/stdout-frame-writer.d.ts +0 -74
  749. package/dist/ui/stdout-frame-writer.js +0 -155
  750. package/dist/ui/team-status.d.ts +0 -166
  751. package/dist/ui/team-status.js +0 -252
  752. package/dist/ui/terminal-plan.d.ts +0 -52
  753. package/dist/ui/terminal-plan.js +0 -49
  754. package/dist/ui/theme.d.ts +0 -96
  755. package/dist/ui/theme.js +0 -130
  756. package/dist/ui/transcript-text.d.ts +0 -41
  757. package/dist/ui/transcript-text.js +0 -282
  758. package/dist/ui/use-height-store.d.ts +0 -31
  759. package/dist/ui/use-height-store.js +0 -76
  760. package/dist/ui/use-render-governor.d.ts +0 -39
  761. package/dist/ui/use-render-governor.js +0 -57
  762. package/dist/ui/use-wheel-routing.d.ts +0 -57
  763. package/dist/ui/use-wheel-routing.js +0 -152
  764. package/dist/ui/win-vt-force.d.ts +0 -136
  765. package/dist/ui/win-vt-force.js +0 -237
  766. package/dist/ui/win-vt-input.d.ts +0 -57
  767. package/dist/ui/win-vt-input.js +0 -62
  768. package/dist/update/limits.d.ts +0 -111
  769. package/dist/update/limits.js +0 -111
  770. package/dist/update/semver.d.ts +0 -89
  771. package/dist/update/semver.js +0 -295
  772. package/dist/update/types.d.ts +0 -169
  773. package/dist/update/types.js +0 -68
  774. /package/dist/{ui → app}/session-bridge.d.ts +0 -0
  775. /package/dist/{ui → app}/session-bridge.js +0 -0
@@ -1,97 +0,0 @@
1
- import stringWidth from 'string-width';
2
- import { interactionCopy as copy } from './interaction-copy.js';
3
- import { cleanStatusText } from './layout/status-layout.js';
4
- import { graphemes } from './editor-navigation.js';
5
- export function escapeClause(input) {
6
- if (input.overlay)
7
- return copy.close;
8
- if (input.completion && input.completion !== 'none' || input.escapeAction === 'menu')
9
- return copy.closeCompletion;
10
- if (input.escapeAction === 'force-stop' || input.interruptPhase === 'stopping')
11
- return copy.forceStop;
12
- if (input.interactionPhase === 'starting')
13
- return input.interruptPhase === 'armed' ? copy.cancelStartAgain : copy.cancelStart;
14
- if (input.interactionPhase !== 'running')
15
- return '';
16
- if (input.governed) {
17
- return input.interruptPhase === 'armed' ? copy.governInterruptAgain : copy.governInterrupt;
18
- }
19
- return input.interruptPhase === 'armed' ? copy.interruptAgain : copy.interrupt;
20
- }
21
- export function clipStatusText(text, cells) {
22
- let clipped = '';
23
- for (const part of graphemes(cleanStatusText(text))) {
24
- if (stringWidth(clipped + part.text) > cells)
25
- break;
26
- clipped += part.text;
27
- }
28
- return clipped;
29
- }
30
- /** Ordered actions before width allocation. No interpretation of translated feedback text. */
31
- export function actionCandidates(input) {
32
- if (input.overlay) {
33
- if (input.overlay === 'confirm')
34
- return [copy.approveTool, copy.rejectTool];
35
- // THE DRAWER SELECTS, IT DOES NOT SCROLL (tui-shortcut-drawer-and-task-summary
36
- // §5). It is a list with a cursor, so the generic `copy.scroll` fallback would
37
- // describe the wrong interaction - and the drawer's own footer already names
38
- // every key, so one clause is the whole line.
39
- if (input.overlay === 'shortcuts')
40
- return [copy.select];
41
- const selects = ['question', 'model', 'session', 'settings'].includes(input.overlay);
42
- return [selects ? copy.select : copy.scroll,
43
- ...(selects ? [input.overlay === 'settings' ? copy.saveSettings : copy.confirm] : [])];
44
- }
45
- const actions = [];
46
- if (input.governed && input.govPausePending && input.interactionPhase === 'running') {
47
- actions.push(copy.governPausePending);
48
- }
49
- if (input.selectionPending)
50
- actions.push(copy.copy);
51
- else if (input.services)
52
- actions.push(copy.stopServicesShort);
53
- if (input.completion && input.completion !== 'none') {
54
- actions.push(...(input.completion === 'slash' ? [copy.executeCommand] : []), copy.complete, copy.select);
55
- return actions;
56
- }
57
- // THE GOVERNED IDLE SENTENCE REPLACES `Enter send` / `newline` rather than joining them:
58
- // at 120 columns it is 53 of the row's 119 cells, and the clause that would be crowded
59
- // out is `Shift+Tab <next>`, the one the posture cycle most needs taught.
60
- if (input.hintsEnabled !== false && input.governed && input.interactionPhase === 'idle') {
61
- actions.push(copy.governIdle);
62
- }
63
- else if (input.hintsEnabled !== false && input.interactionPhase !== 'starting')
64
- actions.push(input.interactionPhase === 'running' ? copy.enqueue : copy.send, input.cols < 72 ? copy.newline : copy.newlineLong);
65
- return actions;
66
- }
67
- export function buildActionClauses(input) {
68
- const budget = Math.max(0, Math.floor(input.cols) - 1);
69
- const escape = escapeClause(input);
70
- const result = [];
71
- const feedback = input.feedback?.text || input.exitHint || (input.copyCleanupPending ? copy.copyCleanup
72
- : input.copyInFlight ? copy.copying : input.toast) || '';
73
- const reserve = escape ? stringWidth(escape) + 3 : 0;
74
- if (feedback) {
75
- const text = clipStatusText(feedback, Math.max(0, budget - reserve));
76
- if (text)
77
- result.push(text);
78
- }
79
- const add = (text, remaining = budget) => {
80
- if (stringWidth([...result, text].join(' | ')) <= remaining)
81
- result.push(cleanStatusText(text));
82
- };
83
- if (!feedback) {
84
- for (const action of actionCandidates(input))
85
- add(action, budget - reserve);
86
- }
87
- if (escape)
88
- add(escape);
89
- if (!feedback && input.hintsEnabled !== false && !input.overlay) {
90
- if (input.updateAvailable)
91
- add(copy.update);
92
- add(input.hasDraft ? copy.exitDraft : copy.exit);
93
- add((input.modeToggleKey ?? 'Shift+Tab') + ' ' + (input.nextPostureWord ?? copy.modeLabel));
94
- add(copy.help);
95
- }
96
- return result;
97
- }
@@ -1,17 +0,0 @@
1
- /** Stable fullscreen slots preserve the editor during overlays and small resizes. */
2
- import React from 'react';
3
- export interface AppShellProps {
4
- rows: number;
5
- cols: number;
6
- header: React.ReactNode;
7
- viewport: React.ReactNode;
8
- composer: React.ReactNode;
9
- composerSlotRows: number;
10
- viewportRows: number;
11
- details?: React.ReactNode;
12
- statusRows: 0 | 1 | 2;
13
- status: React.ReactNode;
14
- inactive?: boolean;
15
- placeholder?: React.ReactNode;
16
- }
17
- export declare function AppShell({ rows, cols, header, viewport, composer, composerSlotRows, viewportRows, details, statusRows, status, inactive, placeholder, }: AppShellProps): React.ReactElement;
@@ -1,6 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box } from 'ink';
3
- import { frameHeight } from './frame.js';
4
- export function AppShell({ rows, cols, header, viewport, composer, composerSlotRows, viewportRows, details, statusRows, status, inactive = false, placeholder, }) {
5
- return (_jsxs(Box, { flexDirection: "column", height: frameHeight(rows), width: cols, overflow: "hidden", flexShrink: 0, children: [_jsxs(Box, { display: inactive ? 'none' : 'flex', flexDirection: "column", height: frameHeight(rows), width: cols, overflow: "hidden", flexShrink: 0, children: [_jsx(Box, { height: 1, flexShrink: 0, overflow: "hidden", children: header }), _jsx(Box, { flexDirection: "column", height: viewportRows, flexShrink: 0, overflow: "hidden", children: viewport }), _jsx(Box, { flexDirection: "column", height: composerSlotRows, justifyContent: "flex-end", flexShrink: 0, overflow: "hidden", children: composer }), _jsx(Box, { height: statusRows > 0 ? 1 : 0, flexShrink: 0, overflow: "hidden", children: status }), statusRows === 2 && _jsx(Box, { height: 1, flexShrink: 0, overflow: "hidden", children: details })] }), _jsx(Box, { display: inactive ? 'flex' : 'none', height: frameHeight(rows), overflow: "hidden", children: placeholder })] }));
6
- }
@@ -1,67 +0,0 @@
1
- /**
2
- * Gutter (spec §4.3) — the two-column left rail every transcript entry sits in.
3
- *
4
- * Replaces the previous "blank line + round box per entry" idiom, which cost
5
- * 3-4 fixed rows for every entry and made one ordinary tool call fill the entire
6
- * viewport on a 24-row terminal. The rail carries the role glyph on the first
7
- * row and the status colour along the whole entry, so the grouping that the
8
- * border used to provide survives at a fraction of the vertical cost.
9
- *
10
- * INVARIANT I-2 — the content column MUST keep `flexShrink={0}`.
11
- * `ScrollViewport` measures content height with `measureElement`; if yoga is
12
- * allowed to squeeze this column down to the viewport height, the measurement
13
- * reports `content === viewport`, `overflowLines` is permanently 0, and
14
- * scrolling stops working with no error anywhere. Read the comment at
15
- * `ScrollViewport.tsx:94-99` before touching this. Guarded by A-6.
16
- */
17
- import React from 'react';
18
- /** Columns reserved for the rail, glyph included. */
19
- export declare const GUTTER_WIDTH = 2;
20
- export interface GutterProps {
21
- /**
22
- * Role marker on the first row (user / assistant / tool status / notice).
23
- *
24
- * A node rather than a string because while an answer streams the marker IS
25
- * the spinner — that used to live inside `AssistantEntry`, and moving the
26
- * glyph out here without moving the spinner would have silently dropped the
27
- * "something is happening" affordance.
28
- */
29
- glyph: React.ReactNode;
30
- color?: string;
31
- children: React.ReactNode;
32
- }
33
- export declare function Gutter({ glyph, color, children }: GutterProps): React.ReactElement;
34
- /**
35
- * The one-row gap between turns: a dim rail stub rather than a blank line, so
36
- * the eye still follows a continuous left edge across the turn boundary.
37
- */
38
- export declare function RailSpacer({ continuation, color, }: {
39
- continuation: string;
40
- color?: string;
41
- }): React.ReactElement;
42
- /**
43
- * A left-only border whose vertical character is the rail glyph.
44
- *
45
- * Used where a block owns its own lines (tool preview, fenced code) and used to
46
- * be wrapped in a round box: the border cost 2 rows plus 2 columns of padding
47
- * and nested visibly inside other round boxes. Ink repeats `box.left` for the
48
- * measured height of the child, so this is a continuous rail that costs 1 column
49
- * and 0 rows.
50
- */
51
- export declare function railBorderProps(rail: string, color?: string): {
52
- readonly borderStyle: {
53
- readonly topLeft: string;
54
- readonly top: "";
55
- readonly topRight: "";
56
- readonly right: "";
57
- readonly bottomRight: "";
58
- readonly bottom: "";
59
- readonly bottomLeft: string;
60
- readonly left: string;
61
- };
62
- readonly borderTop: false;
63
- readonly borderBottom: false;
64
- readonly borderRight: false;
65
- readonly borderLeft: true;
66
- readonly borderColor: string | undefined;
67
- };
@@ -1,42 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box, Text } from 'ink';
3
- /** Columns reserved for the rail, glyph included. */
4
- export const GUTTER_WIDTH = 2;
5
- export function Gutter({ glyph, color, children }) {
6
- return (_jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { flexShrink: 0, width: GUTTER_WIDTH, children: _jsx(Text, { color: color, children: glyph }) }), _jsx(Box, { flexDirection: "column", flexBasis: 0, flexGrow: 1, flexShrink: 0, children: children })] }));
7
- }
8
- /**
9
- * The one-row gap between turns: a dim rail stub rather than a blank line, so
10
- * the eye still follows a continuous left edge across the turn boundary.
11
- */
12
- export function RailSpacer({ continuation, color, }) {
13
- return (_jsx(Text, { color: color, children: continuation }));
14
- }
15
- /**
16
- * A left-only border whose vertical character is the rail glyph.
17
- *
18
- * Used where a block owns its own lines (tool preview, fenced code) and used to
19
- * be wrapped in a round box: the border cost 2 rows plus 2 columns of padding
20
- * and nested visibly inside other round boxes. Ink repeats `box.left` for the
21
- * measured height of the child, so this is a continuous rail that costs 1 column
22
- * and 0 rows.
23
- */
24
- export function railBorderProps(rail, color) {
25
- return {
26
- borderStyle: {
27
- topLeft: rail,
28
- top: '',
29
- topRight: '',
30
- right: '',
31
- bottomRight: '',
32
- bottom: '',
33
- bottomLeft: rail,
34
- left: rail,
35
- },
36
- borderTop: false,
37
- borderBottom: false,
38
- borderRight: false,
39
- borderLeft: true,
40
- borderColor: color,
41
- };
42
- }
@@ -1,21 +0,0 @@
1
- /**
2
- * One transcript entry, wrapped so its rendered height reaches the height store
3
- * (tui-render-performance L3).
4
- *
5
- * IT MUST NOT CONSTRAIN HEIGHT. The natural height IS the value being measured;
6
- * a `height` prop here would make every entry report back whatever it was told,
7
- * and the spacers would encode a fiction.
8
- *
9
- * Ink computes yoga layout in `onRender`, which React runs BEFORE layout
10
- * effects, so the measurement below reflects the commit that just happened —
11
- * the same mechanism `ScrollViewport.tsx:87-88` and `AppShell.tsx:100-102`
12
- * already document and rely on.
13
- */
14
- import React from 'react';
15
- import type { HeightKey } from './virtual-window.js';
16
- export interface MeasuredEntryProps {
17
- heightKey: HeightKey;
18
- onMeasure: (key: HeightKey, rows: number) => void;
19
- children: React.ReactNode;
20
- }
21
- export declare function MeasuredEntry({ heightKey, onMeasure, children, }: MeasuredEntryProps): React.ReactElement;
@@ -1,30 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- /**
3
- * One transcript entry, wrapped so its rendered height reaches the height store
4
- * (tui-render-performance L3).
5
- *
6
- * IT MUST NOT CONSTRAIN HEIGHT. The natural height IS the value being measured;
7
- * a `height` prop here would make every entry report back whatever it was told,
8
- * and the spacers would encode a fiction.
9
- *
10
- * Ink computes yoga layout in `onRender`, which React runs BEFORE layout
11
- * effects, so the measurement below reflects the commit that just happened —
12
- * the same mechanism `ScrollViewport.tsx:87-88` and `AppShell.tsx:100-102`
13
- * already document and rely on.
14
- */
15
- import { useLayoutEffect, useRef } from 'react';
16
- import { Box, measureElement } from 'ink';
17
- export function MeasuredEntry({ heightKey, onMeasure, children, }) {
18
- const ref = useRef(null);
19
- // No dependency array on purpose: the entry's content can change without the
20
- // key changing identity in a way this component can see, and `report` is a
21
- // no-op when the measurement is unchanged — so an unconditional effect costs
22
- // one `getComputedHeight()` read and cannot miss a resize.
23
- useLayoutEffect(() => {
24
- const node = ref.current;
25
- if (!node)
26
- return;
27
- onMeasure(heightKey, measureElement(node).height);
28
- });
29
- return (_jsx(Box, { ref: ref, flexDirection: "column", flexShrink: 0, children: children }));
30
- }
@@ -1,73 +0,0 @@
1
- import React from 'react';
2
- import type { Theme } from '../theme.js';
3
- import type { TermCapabilities } from '../capabilities.js';
4
- interface OverlayFrameBase {
5
- title: string;
6
- /** Footer text. Written by the CALLER so each overlay names its own keys. */
7
- hint: string;
8
- /** Viewport rows the overlay may occupy. */
9
- maxRows: number;
10
- cols?: number;
11
- theme: Theme;
12
- caps: TermCapabilities;
13
- /**
14
- * Where the frame sits on the row when `width` is given.
15
- *
16
- * DEFAULT `'left'` AND NO WRAPPER BOX: with neither new prop set, the render
17
- * tree is byte-identical to the pre-`shortcut-drawer` one, which is what keeps
18
- * the eight existing overlays' layout assertions green (`R-16`).
19
- */
20
- align?: 'left' | 'right';
21
- /**
22
- * An explicit width for a frame that is NOT the full terminal width - the
23
- * shortcut drawer's right-hand bar.
24
- *
25
- * THE FRAME STILL DECIDES ITS OWN FORM from `cols` (`BORDERLESS_COLS`), so the
26
- * caller passes the TERMINAL width here and the bar's width separately. Passing
27
- * the bar's width as `cols` would put a 46-cell drawer on a 200-column terminal
28
- * into the rail form for ever.
29
- */
30
- width?: number;
31
- }
32
- interface OverlayFrameControlled extends OverlayFrameBase {
33
- /** One element per row, each already `wrap="truncate"`. */
34
- rows: readonly React.ReactElement[];
35
- scrollOffset: number;
36
- /**
37
- * Report the offset back after clamping.
38
- *
39
- * `sliceWindow` clamps for DISPLAY, but the owner of the state does not learn
40
- * about it. A caller that just keeps adding a page per `PgDn` therefore ends
41
- * up parked far past the end, and the first several `PgUp` presses then move a
42
- * counter nobody can see while the screen sits still — the overlay reads as
43
- * frozen. Feeding the clamped value back keeps the two in step.
44
- */
45
- onScrollClamp?: (offset: number) => void;
46
- children?: undefined;
47
- }
48
- interface OverlayFrameSelfManaged extends OverlayFrameBase {
49
- rows?: undefined;
50
- scrollOffset?: undefined;
51
- onScrollClamp?: undefined;
52
- children: React.ReactNode;
53
- }
54
- export type OverlayFrameProps = OverlayFrameControlled | OverlayFrameSelfManaged;
55
- export declare function OverlayFrame(props: OverlayFrameProps): React.ReactElement;
56
- /**
57
- * Rows one PgUp/PgDn - and one Shift+wheel notch - turns inside a controlled
58
- * overlay (defect 11).
59
- *
60
- * THIS IS THE OVERLAY'S `scroll.pageSize`, deliberately the same rule: one window
61
- * minus `PAGE_CONTEXT_LINES` of overlap, so a reader keeps two rows of context
62
- * across a page turn exactly as `PgDn` in the transcript does. It replaces a
63
- * constant 8, which was 42% of `/help`'s 19-row window on a 100x24 terminal and
64
- * made reading a 93-row shortcut list a twelve-keystroke exercise.
65
- *
66
- * THE WINDOW HEIGHT COMES FROM `overlayBodyRows`, which is the same expression
67
- * `OverlayFrame` renders with - computed twice here would be the two-authorities
68
- * defect B1 is fixing one component over.
69
- */
70
- export declare function overlayPageSize(maxRows: number, cols: number): number;
71
- /** Body rows shared by controlled overlays and self-managed focused lists. */
72
- export declare function overlayBodyRows(maxRows: number, cols: number): number;
73
- export {};
@@ -1,110 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useEffect, useMemo } from 'react';
3
- import { Box, Text } from 'ink';
4
- import stringWidth from 'string-width';
5
- import { pickGlyphs } from '../glyphs.js';
6
- import { sliceWindow } from './overlay-window.js';
7
- import { pageSize } from './scroll.js';
8
- /** Below this width the round border costs more than it conveys (§5.2). */
9
- const BORDERLESS_COLS = 48;
10
- /** Title + footer + top and bottom border. */
11
- const CHROME_ROWS = 4;
12
- /**
13
- * The frame's own `marginTop`, which is spent out of the SAME `maxRows` budget.
14
- *
15
- * Leaving it out makes the box render one row taller than the viewport it sits
16
- * in, and the viewport's `overflow: hidden` then eats the bottom border — an
17
- * overlay silently clipped by exactly the mechanism this round exists to remove.
18
- * Verified by `overlay-frame-height.test.tsx`.
19
- */
20
- const MARGIN_ROWS = 1;
21
- export function OverlayFrame(props) {
22
- const { title, hint, maxRows, cols = 80, theme, caps } = props;
23
- const glyphs = pickGlyphs(caps);
24
- // Ink applies changed style keys alone. Recreating this object resets the
25
- // unchanged borderTop/borderBottom=false edges to one cell on a later render.
26
- const railBorderStyle = useMemo(() => ({
27
- topLeft: glyphs.railVertical, top: '', topRight: '', right: '',
28
- bottomRight: '', bottom: '', bottomLeft: glyphs.railVertical,
29
- left: glyphs.railVertical,
30
- }), [glyphs.railVertical]);
31
- const compact = Number.isFinite(maxRows) && maxRows < (cols >= BORDERLESS_COLS ? 6 : 4);
32
- const bordered = !compact && cols >= BORDERLESS_COLS;
33
- const unbounded = !Number.isFinite(maxRows);
34
- let body;
35
- let position = '';
36
- /** Set only in controlled mode; `null` means "nothing to report back". */
37
- let overflowOffset = null;
38
- if (props.rows) {
39
- const chrome = compact ? 2 : MARGIN_ROWS + (bordered ? CHROME_ROWS : CHROME_ROWS - 2);
40
- const height = unbounded ? props.rows.length : Math.max(1, Math.floor(maxRows) - chrome);
41
- const win = sliceWindow(props.rows.length, props.scrollOffset, height);
42
- body = props.rows.slice(win.start, win.start + win.visible);
43
- if (win.clamped !== props.scrollOffset)
44
- overflowOffset = win.clamped;
45
- if (!unbounded && win.visible < win.total) {
46
- const up = win.start > 0 ? glyphs.arrowUp : ' ';
47
- const down = win.start + win.visible < win.total ? glyphs.arrowDown : ' ';
48
- position = ` ${up}${down} ${win.start + 1}-${win.start + win.visible}/${win.total}`;
49
- }
50
- }
51
- else {
52
- body = props.children;
53
- }
54
- // In an effect, not in the branch above: calling the owner's setter mid-render
55
- // updates another component while this one renders. Clamping is idempotent, so
56
- // this settles after one extra pass.
57
- const onScrollClamp = props.onScrollClamp;
58
- useEffect(() => {
59
- if (overflowOffset !== null)
60
- onScrollClamp?.(overflowOffset);
61
- }, [overflowOffset, onScrollClamp]);
62
- const inner = (_jsxs(_Fragment, { children: [_jsxs(Box, { flexDirection: "row", height: 1, flexShrink: 0, children: [_jsx(Box, { flexGrow: 1, flexShrink: 1, children: _jsx(Text, { wrap: "truncate", color: theme.primary, bold: true, children: title }) }), position && _jsx(Box, { width: stringWidth(position), flexShrink: 0, children: _jsx(Text, { color: theme.muted, children: position }) })] }), _jsx(Box, { flexDirection: "column", flexShrink: 0, height: unbounded ? undefined : Math.max(1, maxRows - (compact ? 2 : bordered ? 5 : 3)), overflowY: "hidden", children: body }), _jsx(Text, { wrap: "truncate", color: theme.hintFg ?? theme.muted, children: hint })] }));
63
- // THE NEW PROPS ARE OPTIONAL AND THEIR DEFAULT IS TODAY'S BEHAVIOUR (R-16): the
64
- // three branches below return exactly what they always returned unless the
65
- // caller asked for a width or a right-hand placement. When it did, the SAME box
66
- // is built and then placed inside one row-wide wrapper, which is the only way
67
- // Ink can push a fixed-width child to the right edge (a `marginLeft: 'auto'`
68
- // does not exist here).
69
- const width = props.width;
70
- const align = props.align ?? 'left';
71
- const placed = (node) => {
72
- if (width === undefined && align === 'left')
73
- return node;
74
- return (_jsx(Box, { width: cols, flexDirection: "row", flexShrink: 0, justifyContent: align === 'right' ? 'flex-end' : 'flex-start', children: node }));
75
- };
76
- const boxWidth = width === undefined ? {} : { width };
77
- if (compact) {
78
- return placed(_jsx(Box, { ...boxWidth, width: width ?? cols, height: Math.max(0, maxRows), flexDirection: "column", flexShrink: 0, overflowY: "hidden", children: inner }));
79
- }
80
- if (!bordered) {
81
- // Narrow terminals trade the box for a rail: same grouping, 2 fewer rows
82
- // and 4 fewer columns (§5.2).
83
- return placed(_jsx(Box, { flexDirection: "column", flexShrink: 0, marginTop: 1, ...boxWidth, children: _jsx(Box, { flexDirection: "column", flexShrink: 0, borderStyle: railBorderStyle, borderTop: false, borderBottom: false, borderRight: false, borderColor: theme.primary, paddingLeft: 1, children: inner }) }));
84
- }
85
- return placed(_jsx(Box, { flexDirection: "column", flexShrink: 0, borderStyle: glyphs.boxStyle, borderColor: theme.primary, paddingX: 1, marginTop: 1, ...boxWidth, children: inner }));
86
- }
87
- /**
88
- * Rows one PgUp/PgDn - and one Shift+wheel notch - turns inside a controlled
89
- * overlay (defect 11).
90
- *
91
- * THIS IS THE OVERLAY'S `scroll.pageSize`, deliberately the same rule: one window
92
- * minus `PAGE_CONTEXT_LINES` of overlap, so a reader keeps two rows of context
93
- * across a page turn exactly as `PgDn` in the transcript does. It replaces a
94
- * constant 8, which was 42% of `/help`'s 19-row window on a 100x24 terminal and
95
- * made reading a 93-row shortcut list a twelve-keystroke exercise.
96
- *
97
- * THE WINDOW HEIGHT COMES FROM `overlayBodyRows`, which is the same expression
98
- * `OverlayFrame` renders with - computed twice here would be the two-authorities
99
- * defect B1 is fixing one component over.
100
- */
101
- export function overlayPageSize(maxRows, cols) {
102
- return pageSize(overlayBodyRows(maxRows, cols));
103
- }
104
- /** Body rows shared by controlled overlays and self-managed focused lists. */
105
- export function overlayBodyRows(maxRows, cols) {
106
- if (!Number.isFinite(maxRows))
107
- return 20;
108
- const compact = maxRows < (cols >= BORDERLESS_COLS ? 6 : 4);
109
- return Math.max(1, Math.floor(maxRows) - (compact ? 2 : cols >= BORDERLESS_COLS ? 5 : 3));
110
- }
@@ -1,32 +0,0 @@
1
- /**
2
- * ScrollIndicator (mouse-wheel-region-routing §4.8) — the one-column scroll
3
- * position rail on the viewport's right edge.
4
- *
5
- * NAMING (P2-1): this is NOT `layout/Gutter.tsx`. That one is the two-column
6
- * left rail every transcript entry sits in, and it carries an invariant of its
7
- * own. Two components called a gutter, on opposite edges, for unrelated
8
- * purposes, is how a codebase stops being able to say what it means.
9
- *
10
- * THE COLUMN IS RESERVED UNCONDITIONALLY, track glyph and all. Showing it only
11
- * while scrolled would change the content width, re-wrap every line, change the
12
- * content height, and feed that back into the measurement that decides whether
13
- * to show it — a shimmer at the exact moment the user is reading. Constant
14
- * width, no feedback loop (D-9); `width={1}` and `flexShrink={0}` hold the
15
- * column even on the first frame, before anything has been measured.
16
- */
17
- import React from 'react';
18
- import type { Theme } from '../theme.js';
19
- import type { TermCapabilities } from '../capabilities.js';
20
- import type { ThumbRange } from './scroll-indicator.js';
21
- /** Smallest supported fullscreen width; every usable chat frame reserves the column. */
22
- export declare const MIN_INDICATOR_COLS = 40;
23
- export interface ScrollIndicatorProps {
24
- /** Viewport height in rows, as measured by `ScrollViewport`. */
25
- rows: number;
26
- /** `null` when the content fits — the rail is drawn as bare track. */
27
- thumb: ThumbRange | null;
28
- dragging?: boolean;
29
- theme: Theme;
30
- caps: TermCapabilities;
31
- }
32
- export declare function ScrollIndicator({ rows, thumb, dragging, theme, caps, }: ScrollIndicatorProps): React.ReactElement;
@@ -1,22 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { Box, Text } from 'ink';
3
- import { pickGlyphs } from '../glyphs.js';
4
- /** Smallest supported fullscreen width; every usable chat frame reserves the column. */
5
- export const MIN_INDICATOR_COLS = 40;
6
- export function ScrollIndicator({ rows, thumb, dragging = false, theme, caps, }) {
7
- const glyphs = pickGlyphs(caps);
8
- const count = Math.max(0, Math.floor(rows) || 0);
9
- // NO CELLS WITHOUT A THUMB (defect 6). `thumb === null` means the content fits,
10
- // so there is no position to mark and a full-height column of track glyphs is
11
- // pure noise next to an empty transcript. The BOX below is still rendered
12
- // whatever the thumb is — see the feedback-loop note at the top of this file:
13
- // the reserved column, not the glyphs, is what keeps the width constant.
14
- const cells = [];
15
- if (thumb) {
16
- for (let i = 0; i < count; i += 1) {
17
- const onThumb = i >= thumb.start && i < thumb.start + thumb.size;
18
- cells.push(_jsx(Text, { color: onThumb ? theme.primary : theme.muted, bold: onThumb && dragging, children: onThumb ? glyphs.scrollThumb : glyphs.scrollTrack }, i));
19
- }
20
- }
21
- return (_jsx(Box, { flexDirection: "column", flexShrink: 0, width: 1, children: cells }));
22
- }
@@ -1,40 +0,0 @@
1
- import React from 'react';
2
- import { type DOMElement } from 'ink';
3
- import type { Theme } from '../theme.js';
4
- import type { TermCapabilities } from '../capabilities.js';
5
- import { type ScrollbarBridge } from '../scrollbar-controller.js';
6
- import { type ScrollIntent } from './scroll.js';
7
- import { type TailSink } from './follow-state.js';
8
- export interface ScrollViewportProps {
9
- intent?: {
10
- kind: ScrollIntent;
11
- nonce: number;
12
- repeat?: number;
13
- };
14
- pinToBottomNonce?: number;
15
- resetKey?: unknown;
16
- geometryKey?: string;
17
- onGeometryChange?: () => void;
18
- onScrolledLinesChange?: (lines: number) => void;
19
- onViewportShiftChange?: (shift: number) => void;
20
- tailRowsRef?: TailSink;
21
- hold?: boolean;
22
- resumeMs?: number;
23
- showScrollIndicator?: boolean;
24
- cols?: number;
25
- footer?: React.ReactNode;
26
- rail?: React.ReactNode;
27
- overlay?: React.ReactNode;
28
- active?: boolean;
29
- scrollbar?: ScrollbarBridge;
30
- composerRef?: React.RefObject<DOMElement>;
31
- onComposerVisibilityChange?: (visible: boolean) => void;
32
- /** The run status row above the input box (tui-scrollbar-edge-and-run-row). */
33
- activityRef?: React.RefObject<DOMElement>;
34
- onActivityVisibilityChange?: (visible: boolean) => void;
35
- theme: Theme;
36
- caps: TermCapabilities;
37
- children: React.ReactNode;
38
- }
39
- /** One offset for messages, padding and panels; hidden trees keep their local state. */
40
- export declare function ScrollViewport(props: ScrollViewportProps): React.ReactElement;