@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,127 +0,0 @@
1
- /**
2
- * Byte shapes of the native-scroll writer (tui-native-terminal-scroll §4.3 /
3
- * Appendix A). Stateless string assembly only — the state machine that decides
4
- * WHICH shape to emit lives in `scrollback-writer.ts`.
5
- *
6
- * THE WHITELIST (I-S5 / I-S6). Every byte produced here is drawn from: SGR, CUU,
7
- * CUD, CR, CRLF, ED0, EL0, DEC 2026 and DECTCEM. There is no absolute CUP, no
8
- * scroll region, no `CSI S/T`, no `ED2/ED3`. Relative addressing is what makes the
9
- * geometry independent of the terminal scrolling underneath it (spec appendix B).
10
- *
11
- * Each row is `SGR0 · text · SGR0`: the leading reset stops one row's style leaking
12
- * into the next, and the trailing one stops a background-colour-erase terminal from
13
- * painting the following ED0/EL0 in the row's last colour.
14
- */
15
- export declare const SGR0 = "\u001B[0m";
16
- /** First write of a session: the cursor is already on a fresh line at column 0. */
17
- export declare function seedBytes(input: {
18
- lines: readonly string[];
19
- statics: readonly string[];
20
- sync: boolean;
21
- /** After a foreign write the cursor may sit mid-line; start on a new one (RV-11). */
22
- reseed: boolean;
23
- }): string;
24
- /**
25
- * CUD(n): move down n rows WITHOUT writing a single cell.
26
- *
27
- * This is how the canvas spends its `gap` (D3). A blank row that is never written
28
- * cannot be pushed into the scrollback by a later overflow, which is the whole
29
- * reason the gap is not a run of `\r\n` (I-B3). The sequence is already whitelisted
30
- * (`diffBytes` uses it to step between changed rows); this is the same CUD used to
31
- * skip empty space instead.
32
- */
33
- export declare function skipRows(rows: number): string;
34
- /**
35
- * First canvas batch (or the first one after a reset): the screen below the cursor
36
- * is assumed empty, so there is nothing to erase — only `[gap][content][region]` to
37
- * write, ending with the cursor parked on the last row.
38
- */
39
- export declare function canvasSeedBytes(input: {
40
- /**
41
- * Rows to descend from the cursor to the canvas top, when the canvas is shorter
42
- * than the space measured below the cursor.
43
- *
44
- * Non-zero only on a terminal taller than the start-of-canvas cap: the canvas then
45
- * begins BELOW the cursor, and a seed that started writing at the cursor would park
46
- * the region low and leave the top of the canvas empty for the whole session.
47
- */
48
- downToTop: number;
49
- /** Blank rows to skip before the first content row. */
50
- gap: number;
51
- /** Content rows, already clipped, oldest first. */
52
- held: readonly string[];
53
- /** The live region. */
54
- lines: readonly string[];
55
- sync: boolean;
56
- /** After a foreign write the cursor may sit mid-line; start on a new one. */
57
- reseed: boolean;
58
- }): string;
59
- /**
60
- * Redraw the whole canvas: erase the previous one, then write `[gap][content][region]`.
61
- *
62
- * ORDER IS SEMANTICS: `ED0`, then the gap, then the content, then the region. Moving
63
- * the gap after the content puts the blank space back between the reply and the
64
- * composer, which is the exact defect this feature fixes (M1 in the spec).
65
- *
66
- * `held` is the FULL content sequence, not the part that will still be on screen: the
67
- * rows that do not fit are supposed to leave through the bottom, and the terminal can
68
- * only scroll away what it was given.
69
- */
70
- export declare function canvasBytes(input: {
71
- /** Previous canvas height: the erase distance. */
72
- eraseUp: number;
73
- gap: number;
74
- held: readonly string[];
75
- lines: readonly string[];
76
- sync: boolean;
77
- }): string;
78
- /** Erase exactly the previous live region, print static rows, redraw the region. */
79
- export declare function fullBytes(input: {
80
- lines: readonly string[];
81
- statics: readonly string[];
82
- /** Rows between the region top and the parked cursor. */
83
- eraseUp: number;
84
- sync: boolean;
85
- }): string;
86
- /**
87
- * Fill the screen down to the LAST row before the first batch (D4 rung 2 / §4.3).
88
- *
89
- * This is the fallback for a terminal that never answers `ESC[6n`: from any row, a
90
- * run of `rows - 1` line feeds is guaranteed to leave the cursor on the bottom row
91
- * (extra feeds only scroll, which is why the count is the caller's business). It is
92
- * written ONCE, before anything else, so the rows it scrolls away are the host's old
93
- * output — which is still in the scrollback — and never this session's content.
94
- *
95
- * The argument is the NUMBER OF LINE FEEDS, not the terminal height: `cli.tsx` passes
96
- * `rows - 1`. Naming it after the height instead made the caller subtract twice and
97
- * left the cursor one row short of the bottom.
98
- */
99
- export declare function fillBytes(count: number): string;
100
- /** Same height, no static rows: rewrite only the rows that changed. `''` if none did. */
101
- export declare function diffBytes(input: {
102
- lines: readonly string[];
103
- prev: readonly string[];
104
- sync: boolean;
105
- }): string;
106
- /**
107
- * Exit: erase the live region, flush leftover static rows, print the summary.
108
- * `eraseUp < 0` means the geometry is unknown (a foreign write intervened), in
109
- * which case the only safe move is to start on a fresh line and erase nothing.
110
- */
111
- export declare function finalizeBytes(input: {
112
- eraseUp: number;
113
- statics: readonly string[];
114
- summary: readonly string[];
115
- }): string;
116
- /**
117
- * Cut a row to `maxCols` DISPLAY columns (I-S13), keeping SGR / OSC 8 intact.
118
- *
119
- * Returns the input unchanged (same reference) when it already fits, which is the
120
- * overwhelmingly common case. Width is measured the way Ink measures it
121
- * (`string-width` over the ANSI-stripped text): that is the number Ink used to
122
- * wrap, so a disagreement with the terminal is the only way a row can exceed it.
123
- */
124
- export declare function clipLine(line: string, maxCols: number): {
125
- text: string;
126
- clipped: boolean;
127
- };
@@ -1,159 +0,0 @@
1
- /**
2
- * Byte shapes of the native-scroll writer (tui-native-terminal-scroll §4.3 /
3
- * Appendix A). Stateless string assembly only — the state machine that decides
4
- * WHICH shape to emit lives in `scrollback-writer.ts`.
5
- *
6
- * THE WHITELIST (I-S5 / I-S6). Every byte produced here is drawn from: SGR, CUU,
7
- * CUD, CR, CRLF, ED0, EL0, DEC 2026 and DECTCEM. There is no absolute CUP, no
8
- * scroll region, no `CSI S/T`, no `ED2/ED3`. Relative addressing is what makes the
9
- * geometry independent of the terminal scrolling underneath it (spec appendix B).
10
- *
11
- * Each row is `SGR0 · text · SGR0`: the leading reset stops one row's style leaking
12
- * into the next, and the trailing one stops a background-colour-erase terminal from
13
- * painting the following ED0/EL0 in the row's last colour.
14
- */
15
- import stringWidth from 'string-width';
16
- import stripAnsi from 'strip-ansi';
17
- const CSI = '\x1b[';
18
- export const SGR0 = `${CSI}0m`;
19
- const ED0 = `${CSI}J`;
20
- const EL0 = `${CSI}K`;
21
- const SYNC_BEGIN = `${CSI}?2026h`;
22
- const SYNC_END = `${CSI}?2026l`;
23
- const SHOW_CURSOR = `${CSI}?25h`;
24
- const OSC8_CLOSE = '\x1b]8;;\x07';
25
- const up = (n) => (n > 0 ? `${CSI}${n}A` : '');
26
- const down = (n) => (n > 0 ? `${CSI}${n}B` : '');
27
- const row = (text) => SGR0 + text + SGR0 + '\r\n';
28
- const rows = (list) => list.map(row).join('');
29
- const wrapSync = (payload, sync) => sync ? SYNC_BEGIN + payload + SYNC_END : payload;
30
- /** First write of a session: the cursor is already on a fresh line at column 0. */
31
- export function seedBytes(input) {
32
- const lead = input.reseed ? '\r\n' : '';
33
- return wrapSync(lead + '\r' + SGR0 + rows(input.statics) + rows(input.lines), input.sync);
34
- }
35
- /**
36
- * CUD(n): move down n rows WITHOUT writing a single cell.
37
- *
38
- * This is how the canvas spends its `gap` (D3). A blank row that is never written
39
- * cannot be pushed into the scrollback by a later overflow, which is the whole
40
- * reason the gap is not a run of `\r\n` (I-B3). The sequence is already whitelisted
41
- * (`diffBytes` uses it to step between changed rows); this is the same CUD used to
42
- * skip empty space instead.
43
- */
44
- export function skipRows(rows) {
45
- return down(Math.max(0, Math.floor(Number.isFinite(rows) ? rows : 0)));
46
- }
47
- /**
48
- * First canvas batch (or the first one after a reset): the screen below the cursor
49
- * is assumed empty, so there is nothing to erase — only `[gap][content][region]` to
50
- * write, ending with the cursor parked on the last row.
51
- */
52
- export function canvasSeedBytes(input) {
53
- const lead = input.reseed ? '\r\n' : '';
54
- const skip = skipRows(input.downToTop) + skipRows(input.gap);
55
- return wrapSync(lead + '\r' + SGR0 + skip + rows(input.held) + rows(input.lines), input.sync);
56
- }
57
- /**
58
- * Redraw the whole canvas: erase the previous one, then write `[gap][content][region]`.
59
- *
60
- * ORDER IS SEMANTICS: `ED0`, then the gap, then the content, then the region. Moving
61
- * the gap after the content puts the blank space back between the reply and the
62
- * composer, which is the exact defect this feature fixes (M1 in the spec).
63
- *
64
- * `held` is the FULL content sequence, not the part that will still be on screen: the
65
- * rows that do not fit are supposed to leave through the bottom, and the terminal can
66
- * only scroll away what it was given.
67
- */
68
- export function canvasBytes(input) {
69
- return wrapSync(up(input.eraseUp) + '\r' + SGR0 + ED0 + skipRows(input.gap) +
70
- rows(input.held) + rows(input.lines), input.sync);
71
- }
72
- /** Erase exactly the previous live region, print static rows, redraw the region. */
73
- export function fullBytes(input) {
74
- return wrapSync(up(input.eraseUp) + '\r' + SGR0 + ED0 + rows(input.statics) + rows(input.lines), input.sync);
75
- }
76
- /**
77
- * Fill the screen down to the LAST row before the first batch (D4 rung 2 / §4.3).
78
- *
79
- * This is the fallback for a terminal that never answers `ESC[6n`: from any row, a
80
- * run of `rows - 1` line feeds is guaranteed to leave the cursor on the bottom row
81
- * (extra feeds only scroll, which is why the count is the caller's business). It is
82
- * written ONCE, before anything else, so the rows it scrolls away are the host's old
83
- * output — which is still in the scrollback — and never this session's content.
84
- *
85
- * The argument is the NUMBER OF LINE FEEDS, not the terminal height: `cli.tsx` passes
86
- * `rows - 1`. Naming it after the height instead made the caller subtract twice and
87
- * left the cursor one row short of the bottom.
88
- */
89
- export function fillBytes(count) {
90
- return '\r\n'.repeat(Math.max(0, Math.floor(count)));
91
- }
92
- /** Same height, no static rows: rewrite only the rows that changed. `''` if none did. */
93
- export function diffBytes(input) {
94
- const { lines, prev } = input;
95
- const height = lines.length;
96
- let out = '';
97
- let cursor = -1;
98
- for (let i = 0; i < height; i += 1) {
99
- if (lines[i] === prev[i])
100
- continue;
101
- // Paint, THEN clear the tail: never ESC[2K first, which would blank the row
102
- // the user is looking at for the instant between the two writes.
103
- out += (cursor < 0 ? up(height - i) : down(i - cursor)) + '\r' + SGR0 + lines[i] + SGR0 + EL0;
104
- cursor = i;
105
- }
106
- if (cursor < 0)
107
- return '';
108
- // Park on the row below the region, column 0 (I-S4).
109
- return wrapSync(out + down(height - cursor) + '\r', input.sync);
110
- }
111
- /**
112
- * Exit: erase the live region, flush leftover static rows, print the summary.
113
- * `eraseUp < 0` means the geometry is unknown (a foreign write intervened), in
114
- * which case the only safe move is to start on a fresh line and erase nothing.
115
- */
116
- export function finalizeBytes(input) {
117
- const head = input.eraseUp < 0 ? '\r\n' : up(input.eraseUp) + '\r' + SGR0 + ED0;
118
- return head + rows(input.statics) + rows(input.summary) + SHOW_CURSOR;
119
- }
120
- const ESCAPE = /(\x1b\[[0-?]*[ -/]*[@-~]|\x1b\][^\x07\x1b]*(?:\x07|\x1b\\))/;
121
- const segmenter = typeof Intl !== 'undefined' && 'Segmenter' in Intl
122
- ? new Intl.Segmenter(undefined, { granularity: 'grapheme' })
123
- : null;
124
- function graphemes(text) {
125
- return segmenter ? Array.from(segmenter.segment(text), (part) => part.segment) : Array.from(text);
126
- }
127
- /**
128
- * Cut a row to `maxCols` DISPLAY columns (I-S13), keeping SGR / OSC 8 intact.
129
- *
130
- * Returns the input unchanged (same reference) when it already fits, which is the
131
- * overwhelmingly common case. Width is measured the way Ink measures it
132
- * (`string-width` over the ANSI-stripped text): that is the number Ink used to
133
- * wrap, so a disagreement with the terminal is the only way a row can exceed it.
134
- */
135
- export function clipLine(line, maxCols) {
136
- if (maxCols < 1)
137
- return { text: '', clipped: line.length > 0 };
138
- if (stringWidth(stripAnsi(line)) <= maxCols)
139
- return { text: line, clipped: false };
140
- let out = '';
141
- let width = 0;
142
- let linkOpen = false;
143
- for (const part of line.split(ESCAPE)) {
144
- if (part.startsWith('\x1b')) {
145
- out += part;
146
- if (part.startsWith('\x1b]8;'))
147
- linkOpen = !/^\x1b\]8;[^;]*;(?:\x07|\x1b\\)$/.test(part);
148
- continue;
149
- }
150
- for (const glyph of graphemes(part)) {
151
- const glyphWidth = stringWidth(glyph);
152
- if (width + glyphWidth > maxCols)
153
- return { text: out + SGR0 + (linkOpen ? OSC8_CLOSE : ''), clipped: true };
154
- out += glyph;
155
- width += glyphWidth;
156
- }
157
- }
158
- return { text: out, clipped: false };
159
- }
@@ -1,30 +0,0 @@
1
- import type { MouseEvent } from '../input/mouse-events.js';
2
- import { type ScrollbarGeometry } from './layout/scrollbar-geometry.js';
3
- export interface ScrollbarController {
4
- handle(event: MouseEvent): boolean;
5
- cancel(): void;
6
- dispose(): void;
7
- isCaptured(): boolean;
8
- }
9
- export interface ScrollbarOptions {
10
- getGeometry(): ScrollbarGeometry | null;
11
- setOffset(offset: number): void;
12
- page(direction: 'pageUp' | 'pageDown'): void;
13
- onHold(held: boolean): void;
14
- onStart(): void;
15
- isEnabled(): boolean;
16
- }
17
- export interface ScrollbarBridge {
18
- controller: ScrollbarController | null;
19
- geometry: ScrollbarGeometry | null;
20
- frameReady: boolean;
21
- isEnabled(): boolean;
22
- onStart?: () => void;
23
- onGeometry?: () => void;
24
- requestRedraw?: () => void;
25
- invalidate(): void;
26
- }
27
- /** Build the late-bound terminal bridge; no scroll position is owned here. */
28
- export declare function createScrollbarBridge(isEnabled: () => boolean): ScrollbarBridge;
29
- /** Own one pointer gesture and bounded timers; positioning remains in the viewport. */
30
- export declare function createScrollbarController(options: ScrollbarOptions): ScrollbarController;
@@ -1,124 +0,0 @@
1
- import { offsetForThumb } from './layout/scrollbar-geometry.js';
2
- /** Build the late-bound terminal bridge; no scroll position is owned here. */
3
- export function createScrollbarBridge(isEnabled) {
4
- const bridge = {
5
- controller: null, geometry: null, frameReady: false, isEnabled,
6
- invalidate: () => { bridge.frameReady = false; bridge.controller?.cancel(); },
7
- };
8
- return bridge;
9
- }
10
- /** Own one pointer gesture and bounded timers; positioning remains in the viewport. */
11
- export function createScrollbarController(options) {
12
- return new ScrollbarGesture(options);
13
- }
14
- class ScrollbarGesture {
15
- options;
16
- capture = null;
17
- timer = null;
18
- watchdog = null;
19
- swallowLate = false;
20
- disposed = false;
21
- constructor(options) {
22
- this.options = options;
23
- }
24
- isCaptured() { return this.capture !== null; }
25
- cancel() {
26
- if (this.timer)
27
- clearTimeout(this.timer);
28
- if (this.watchdog)
29
- clearTimeout(this.watchdog);
30
- this.timer = this.watchdog = null;
31
- const held = this.capture !== null;
32
- this.capture = null;
33
- if (held) {
34
- this.swallowLate = true;
35
- this.options.onHold(false);
36
- }
37
- }
38
- dispose() { this.cancel(); this.disposed = true; }
39
- armWatchdog() {
40
- if (this.watchdog)
41
- clearTimeout(this.watchdog);
42
- this.watchdog = setTimeout(() => this.cancel(), 30000);
43
- this.watchdog.unref?.();
44
- }
45
- flush() {
46
- if (this.timer)
47
- clearTimeout(this.timer);
48
- this.timer = null;
49
- const g = this.options.getGeometry();
50
- if (!this.capture || !g || !this.options.isEnabled() ||
51
- g.revision !== this.capture.revision) {
52
- this.cancel();
53
- return;
54
- }
55
- const y = this.capture.pendingY;
56
- this.capture.pendingY = null;
57
- if (y !== null)
58
- this.options.setOffset(offsetForThumb({ geometry: g,
59
- pointerY: y, grabRow: this.capture.grabRow }));
60
- }
61
- move(y) {
62
- if (!this.capture || this.capture.kind !== 'thumb' || y === this.capture.lastPointerY)
63
- return;
64
- this.capture.lastPointerY = y;
65
- this.capture.pendingY = y;
66
- if (!this.timer) {
67
- this.timer = setTimeout(() => this.flush(), 16);
68
- this.timer.unref?.();
69
- }
70
- }
71
- press(event) {
72
- this.cancel();
73
- this.swallowLate = false;
74
- const g = this.options.getGeometry();
75
- if (!g || !this.canPress(event, g))
76
- return false;
77
- const row = event.y - g.trackTop;
78
- const thumb = g.thumb;
79
- const inside = thumb && row >= thumb.start && row < thumb.start + thumb.size;
80
- this.capture = { kind: inside && g.trackRows > thumb.size ? 'thumb' : 'track',
81
- grabRow: inside ? row - thumb.start : 0, revision: g.revision,
82
- lastPointerY: event.y, pendingY: null };
83
- this.options.onStart();
84
- this.options.onHold(true);
85
- this.armWatchdog();
86
- if (thumb && !inside)
87
- this.options.page(row < thumb.start ? 'pageUp' : 'pageDown');
88
- return true;
89
- }
90
- canPress(event, g) {
91
- const plainLeft = event.button === 0 && !event.shift && !event.alt && !event.ctrl;
92
- const inTrack = event.x === g.trackCol && event.y >= g.trackTop &&
93
- event.y < g.trackTop + g.trackRows;
94
- return this.options.isEnabled() && plainLeft && inTrack;
95
- }
96
- handle(event) {
97
- if (this.disposed)
98
- return false;
99
- if (event.kind === 'wheel')
100
- return this.capture !== null;
101
- if (![event.x, event.y].every(Number.isFinite))
102
- return this.capture !== null;
103
- if (event.kind === 'press')
104
- return this.press(event);
105
- if (!this.capture)
106
- return this.swallowLate;
107
- if (event.button !== 0) {
108
- this.cancel();
109
- return false;
110
- }
111
- if (!this.options.isEnabled()) {
112
- this.cancel();
113
- return true;
114
- }
115
- this.move(event.y);
116
- if (event.kind === 'release') {
117
- this.flush();
118
- this.cancel();
119
- }
120
- else
121
- this.armWatchdog();
122
- return true;
123
- }
124
- }
@@ -1,39 +0,0 @@
1
- /**
2
- * The row painter (tui-selection-and-scroll-follow §4.4.4). PURE — strings in,
3
- * strings out.
4
- *
5
- * It runs inside the frame differ's `decorate` hook rather than in React (D-6):
6
- * a re-render per drag event goes through the render governor and the whole
7
- * component tree, while this repaints one to three rows with no commit at all.
8
- */
9
- import type { Theme } from '../theme.js';
10
- import type { TermCapabilities } from '../capabilities.js';
11
- /**
12
- * The SGR sequence that opens a highlighted run.
13
- *
14
- * TRUECOLOR OR REVERSE VIDEO, WITH NOTHING IN BETWEEN, and that is deliberate.
15
- * `getTheme` degrades every palette colour to the terminal's depth, so below
16
- * ansi-256 `theme.selectionBg` is a CHALK COLOUR NAME (`'blue'`) rather than a
17
- * hex triple — and a name cannot be turned into an escape sequence here without
18
- * duplicating chalk's own table. Reverse video is what a terminal that shallow
19
- * would render anyway, it needs no colour support at all, and it is exactly what
20
- * the emulator's own selection looks like. The `HEX` test is therefore both the
21
- * colour-depth check and the type check.
22
- */
23
- export declare function selectionOpen(theme: Theme, caps: TermCapabilities): string;
24
- /**
25
- * Paint `[from, to)` of one frame line.
26
- *
27
- * `to` is already clamped to the terminal width by the caller, so `Infinity`
28
- * never reaches here.
29
- *
30
- * STRIPPING SGR INSIDE THE SELECTION IS NOT LAZINESS. An inner `\x1b[0m` — which
31
- * `Markdown` and `cli-highlight` emit constantly — would cancel the highlight
32
- * attribute mid-run and leave holes in it. Terminals repaint selected text in
33
- * the selection's own colours for exactly this reason.
34
- *
35
- * `pad` is what gives a multi-row selection a straight right edge over short
36
- * lines, and it measures with `columnsOf` — the same oracle `sliceColumns`
37
- * charges with — rather than reaching for a third width function (I-12).
38
- */
39
- export declare function paintRow(line: string, from: number, to: number, open: string): string;
@@ -1,64 +0,0 @@
1
- /**
2
- * The row painter (tui-selection-and-scroll-follow §4.4.4). PURE — strings in,
3
- * strings out.
4
- *
5
- * It runs inside the frame differ's `decorate` hook rather than in React (D-6):
6
- * a re-render per drag event goes through the render governor and the whole
7
- * component tree, while this repaints one to three rows with no commit at all.
8
- */
9
- import stripAnsi from 'strip-ansi';
10
- import { columnsOf, sliceColumns } from './selection.js';
11
- const CSI = '\x1b[';
12
- const SGR_RESET = `${CSI}0m`;
13
- /** Reverse video — the universal fallback, and what a monochrome terminal gets. */
14
- const REVERSE = `${CSI}7m`;
15
- const HEX = /^#[0-9a-f]{6}$/i;
16
- function rgb(hex) {
17
- const n = Number.parseInt(hex.slice(1), 16);
18
- return `${(n >> 16) & 0xff};${(n >> 8) & 0xff};${n & 0xff}`;
19
- }
20
- /**
21
- * The SGR sequence that opens a highlighted run.
22
- *
23
- * TRUECOLOR OR REVERSE VIDEO, WITH NOTHING IN BETWEEN, and that is deliberate.
24
- * `getTheme` degrades every palette colour to the terminal's depth, so below
25
- * ansi-256 `theme.selectionBg` is a CHALK COLOUR NAME (`'blue'`) rather than a
26
- * hex triple — and a name cannot be turned into an escape sequence here without
27
- * duplicating chalk's own table. Reverse video is what a terminal that shallow
28
- * would render anyway, it needs no colour support at all, and it is exactly what
29
- * the emulator's own selection looks like. The `HEX` test is therefore both the
30
- * colour-depth check and the type check.
31
- */
32
- export function selectionOpen(theme, caps) {
33
- if (caps.colorLevel < 2)
34
- return REVERSE;
35
- const bg = theme.selectionBg;
36
- const fg = theme.selectionFg;
37
- if (!bg || !fg || !HEX.test(bg) || !HEX.test(fg))
38
- return REVERSE;
39
- return `${CSI}48;2;${rgb(bg)}m${CSI}38;2;${rgb(fg)}m`;
40
- }
41
- /**
42
- * Paint `[from, to)` of one frame line.
43
- *
44
- * `to` is already clamped to the terminal width by the caller, so `Infinity`
45
- * never reaches here.
46
- *
47
- * STRIPPING SGR INSIDE THE SELECTION IS NOT LAZINESS. An inner `\x1b[0m` — which
48
- * `Markdown` and `cli-highlight` emit constantly — would cancel the highlight
49
- * attribute mid-run and leave holes in it. Terminals repaint selected text in
50
- * the selection's own colours for exactly this reason.
51
- *
52
- * `pad` is what gives a multi-row selection a straight right edge over short
53
- * lines, and it measures with `columnsOf` — the same oracle `sliceColumns`
54
- * charges with — rather than reaching for a third width function (I-12).
55
- */
56
- export function paintRow(line, from, to, open) {
57
- if (!(to > from))
58
- return line;
59
- const head = sliceColumns(line, 0, from);
60
- const mid = stripAnsi(sliceColumns(line, from, to));
61
- const pad = ' '.repeat(Math.max(0, to - from - columnsOf(mid)));
62
- const tail = sliceColumns(line, to);
63
- return `${head}${open}${mid}${pad}${SGR_RESET}${tail}`;
64
- }
@@ -1,24 +0,0 @@
1
- /**
2
- * The screen mirror (tui-selection-and-scroll-follow §7) — the single source of
3
- * truth for what text is on which row.
4
- *
5
- * I-4 RIDES ON THIS OBJECT. The highlight and the clipboard both read the rows
6
- * stored here, written by the same `decorate` call, so whatever changes under a
7
- * selection is simultaneously what is highlighted and what would be copied. What
8
- * you see is what you get BY CONSTRUCTION, rather than by a staleness check that
9
- * can be wrong.
10
- *
11
- * `plain` is computed LAZILY. `decorate` runs on every frame Ink produces —
12
- * 15-30 times a second during a run — while a copy happens when a human releases
13
- * a mouse button, so stripping every row eagerly would spend H regex passes per
14
- * frame to serve an event that may never come. The cache is dropped by `set`, so
15
- * the laziness is invisible to callers and cannot go stale.
16
- */
17
- export interface ScreenMirror {
18
- /** Last frame, ANSI intact — what `decorate` paints over. */
19
- readonly raw: readonly string[];
20
- /** The same rows, ANSI stripped — what `selectedText` reads. */
21
- readonly plain: readonly string[];
22
- set(lines: readonly string[]): void;
23
- }
24
- export declare function createScreenMirror(): ScreenMirror;
@@ -1,35 +0,0 @@
1
- /**
2
- * The screen mirror (tui-selection-and-scroll-follow §7) — the single source of
3
- * truth for what text is on which row.
4
- *
5
- * I-4 RIDES ON THIS OBJECT. The highlight and the clipboard both read the rows
6
- * stored here, written by the same `decorate` call, so whatever changes under a
7
- * selection is simultaneously what is highlighted and what would be copied. What
8
- * you see is what you get BY CONSTRUCTION, rather than by a staleness check that
9
- * can be wrong.
10
- *
11
- * `plain` is computed LAZILY. `decorate` runs on every frame Ink produces —
12
- * 15-30 times a second during a run — while a copy happens when a human releases
13
- * a mouse button, so stripping every row eagerly would spend H regex passes per
14
- * frame to serve an event that may never come. The cache is dropped by `set`, so
15
- * the laziness is invisible to callers and cannot go stale.
16
- */
17
- import stripAnsi from 'strip-ansi';
18
- export function createScreenMirror() {
19
- let raw = [];
20
- let plain = null;
21
- return {
22
- get raw() {
23
- return raw;
24
- },
25
- get plain() {
26
- if (plain === null)
27
- plain = raw.map((line) => stripAnsi(line));
28
- return plain;
29
- },
30
- set(lines) {
31
- raw = lines;
32
- plain = null;
33
- },
34
- };
35
- }