@aragon-agent/cli 0.6.47 → 0.6.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (775) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +27 -6
  3. package/dist/agent/coalesce.d.ts +1 -1
  4. package/dist/agent/controller.d.ts +21 -21
  5. package/dist/agent/controller.js +13 -13
  6. package/dist/agent/conversation-reset.d.ts +1 -1
  7. package/dist/agent/governance-wiring.d.ts +6 -6
  8. package/dist/agent/governance-wiring.js +4 -4
  9. package/dist/agent/headless.d.ts +5 -5
  10. package/dist/agent/headless.js +4 -4
  11. package/dist/agent/job-notices.d.ts +1 -1
  12. package/dist/agent/job-notices.js +1 -1
  13. package/dist/agent/kit-apply.d.ts +3 -3
  14. package/dist/agent/kit-apply.js +3 -3
  15. package/dist/agent/model-profile-settings.d.ts +2 -2
  16. package/dist/agent/model-profile-settings.js +6 -6
  17. package/dist/agent/prompt-options.d.ts +1 -1
  18. package/dist/agent/system-prompt.d.ts +1 -1
  19. package/dist/{ui → app}/App.d.ts +9 -9
  20. package/dist/{ui → app}/App.js +79 -79
  21. package/dist/{ui → app}/use-startup-notices.d.ts +1 -1
  22. package/dist/{ui → app}/use-startup-notices.js +2 -2
  23. package/dist/cli.js +29 -29
  24. package/dist/commands/agents-command.js +1 -1
  25. package/dist/commands/builtins.js +9 -9
  26. package/dist/commands/governance-command.js +2 -2
  27. package/dist/commands/governance-runs-table.js +1 -1
  28. package/dist/commands/kit-command.js +1 -1
  29. package/dist/commands/perf.d.ts +3 -3
  30. package/dist/commands/perf.js +1 -1
  31. package/dist/commands/registry.d.ts +8 -8
  32. package/dist/commands/skills.js +2 -2
  33. package/dist/commands/team-command.js +1 -1
  34. package/dist/compaction/archive.d.ts +1 -1
  35. package/dist/compaction/archive.js +1 -1
  36. package/dist/compaction/child.d.ts +3 -3
  37. package/dist/compaction/child.js +4 -4
  38. package/dist/compaction/command.js +5 -5
  39. package/dist/compaction/compactor.d.ts +6 -6
  40. package/dist/compaction/compactor.js +6 -6
  41. package/dist/compaction/context-command.js +1 -1
  42. package/dist/compaction/digest.js +1 -1
  43. package/dist/compaction/memory-input.js +1 -1
  44. package/dist/compaction/memory-validation.js +1 -1
  45. package/dist/compaction/memory.js +1 -1
  46. package/dist/compaction/summarize-call.js +1 -1
  47. package/dist/compaction/summary-prompt.js +1 -1
  48. package/dist/compaction/tail-budget.js +2 -2
  49. package/dist/compaction/wiring.d.ts +5 -5
  50. package/dist/compaction/wiring.js +2 -2
  51. package/dist/config/cli-commands.d.ts +1 -1
  52. package/dist/config/cli-commands.js +3 -3
  53. package/dist/config/env.d.ts +1 -1
  54. package/dist/config/env.js +4 -4
  55. package/dist/config/load.d.ts +2 -2
  56. package/dist/config/load.js +6 -6
  57. package/dist/config/migrate-state-out-of-config.js +1 -1
  58. package/dist/config/model-profile-store.d.ts +4 -54
  59. package/dist/config/model-profile-store.js +3 -3
  60. package/dist/config/prompt-history.js +1 -1
  61. package/dist/config/store.d.ts +2 -2
  62. package/dist/config/store.js +3 -3
  63. package/dist/diagnostics/doctor.js +4 -4
  64. package/dist/exec/bridge/decisions.d.ts +1 -1
  65. package/dist/exec/bridge/human-answers.d.ts +1 -1
  66. package/dist/exec/bridge/human-answers.js +1 -1
  67. package/dist/exec/bridge/protocol.d.ts +1 -1
  68. package/dist/exec/bridge/server.js +1 -1
  69. package/dist/exec/events.d.ts +2 -2
  70. package/dist/exec/index.d.ts +1 -1
  71. package/dist/exec/index.js +1 -1
  72. package/dist/exec/permission.js +1 -1
  73. package/dist/exec/runner.d.ts +3 -3
  74. package/dist/exec/runner.js +2 -2
  75. package/dist/exec/threads/runtime.js +1 -1
  76. package/dist/fast/digest.d.ts +1 -1
  77. package/dist/fast/digest.js +1 -1
  78. package/dist/fast/frames.d.ts +1 -1
  79. package/dist/fast/frames.js +1 -1
  80. package/dist/fast/prompt.d.ts +1 -1
  81. package/dist/fast/prompt.js +1 -1
  82. package/dist/fast/review-call.js +1 -1
  83. package/dist/fast/reviewer.d.ts +3 -3
  84. package/dist/fast/reviewer.js +1 -1
  85. package/dist/fast/summary-call.d.ts +3 -3
  86. package/dist/fast/summary-call.js +2 -2
  87. package/dist/fast/summary-prompt.d.ts +1 -1
  88. package/dist/fast/summary-prompt.js +1 -1
  89. package/dist/fast/wiring.d.ts +4 -4
  90. package/dist/fast/wiring.js +1 -1
  91. package/dist/governance/card-normalize.d.ts +1 -1
  92. package/dist/governance/copy.d.ts +1 -1
  93. package/dist/governance/copy.js +2 -2
  94. package/dist/governance/engine/artifact-persist.d.ts +1 -1
  95. package/dist/governance/engine/budget.d.ts +1 -1
  96. package/dist/governance/engine/budget.js +1 -1
  97. package/dist/governance/engine/cards.d.ts +1 -1
  98. package/dist/governance/engine/digest.js +1 -1
  99. package/dist/governance/engine/engine-core.d.ts +5 -5
  100. package/dist/governance/engine/engine-core.js +1 -1
  101. package/dist/governance/engine/engine.d.ts +1 -1
  102. package/dist/governance/engine/engine.js +1 -1
  103. package/dist/governance/engine/estimate.d.ts +1 -1
  104. package/dist/governance/engine/estimate.js +1 -1
  105. package/dist/governance/engine/inspector.js +2 -2
  106. package/dist/governance/engine/integration.d.ts +1 -1
  107. package/dist/governance/engine/lifecycle.d.ts +1 -1
  108. package/dist/governance/engine/lifecycle.js +1 -1
  109. package/dist/governance/engine/phase-members.d.ts +1 -1
  110. package/dist/governance/engine/phase-planner.d.ts +1 -1
  111. package/dist/governance/engine/phase-planner.js +1 -1
  112. package/dist/governance/engine/rebuild.d.ts +1 -1
  113. package/dist/governance/engine/report.d.ts +1 -1
  114. package/dist/governance/engine/report.js +1 -1
  115. package/dist/governance/engine/run-digest.d.ts +1 -1
  116. package/dist/governance/engine/spec-builder.d.ts +2 -2
  117. package/dist/governance/engine/spec-builder.js +2 -2
  118. package/dist/governance/engine/stage-runner.js +2 -2
  119. package/dist/governance/engine/start-input.d.ts +1 -1
  120. package/dist/governance/engine/start-input.js +1 -1
  121. package/dist/governance/engine/state-machine.d.ts +1 -1
  122. package/dist/governance/engine/state-machine.js +3 -3
  123. package/dist/governance/engine/submission-queries.d.ts +1 -1
  124. package/dist/governance/engine/submission-render.d.ts +1 -1
  125. package/dist/governance/engine/submissions.d.ts +1 -1
  126. package/dist/governance/engine/submissions.js +1 -1
  127. package/dist/governance/engine/visibility.d.ts +1 -1
  128. package/dist/governance/engine/visibility.js +1 -1
  129. package/dist/governance/posture-transition.d.ts +2 -2
  130. package/dist/governance/posture-transition.js +1 -1
  131. package/dist/governance/profiles.d.ts +1 -1
  132. package/dist/governance/prompts/orchestrator-block.d.ts +2 -2
  133. package/dist/governance/prompts/orchestrator-block.js +2 -2
  134. package/dist/governance/prompts/plan-addendum.d.ts +1 -1
  135. package/dist/governance/prompts/plan-addendum.js +1 -1
  136. package/dist/governance/prompts/role-blocks.d.ts +2 -2
  137. package/dist/governance/prompts/role-blocks.js +1 -1
  138. package/dist/governance/report-reader.js +1 -1
  139. package/dist/governance/roles.d.ts +1 -1
  140. package/dist/governance/rules/claims.d.ts +1 -1
  141. package/dist/governance/rules/claims.js +1 -1
  142. package/dist/governance/rules/elimination.d.ts +1 -1
  143. package/dist/governance/rules/elimination.js +1 -1
  144. package/dist/governance/rules/failure-analysis.d.ts +2 -2
  145. package/dist/governance/rules/failure-analysis.js +1 -1
  146. package/dist/governance/rules/ledger-replay.d.ts +1 -1
  147. package/dist/governance/rules/ledger-state.d.ts +1 -1
  148. package/dist/governance/rules/ledger-state.js +1 -1
  149. package/dist/governance/rules/ledger.d.ts +2 -2
  150. package/dist/governance/rules/ledger.js +2 -2
  151. package/dist/governance/rules/rca.d.ts +1 -1
  152. package/dist/governance/rules/rca.js +1 -1
  153. package/dist/governance/rules/settlement.d.ts +2 -2
  154. package/dist/governance/rules/settlement.js +2 -2
  155. package/dist/governance/rules/suspicion.d.ts +1 -1
  156. package/dist/governance/store/artifacts.d.ts +1 -1
  157. package/dist/governance/store/artifacts.js +1 -1
  158. package/dist/governance/store/events-log.d.ts +1 -1
  159. package/dist/governance/store/run-store.d.ts +1 -1
  160. package/dist/governance/store/run-store.js +1 -1
  161. package/dist/governance/store/scoreboard-export.d.ts +1 -1
  162. package/dist/governance/tools/child-tools.d.ts +1 -1
  163. package/dist/governance/tools/guard.d.ts +1 -1
  164. package/dist/governance/tools/guard.js +1 -1
  165. package/dist/governance/tools/inspector-tools.d.ts +2 -2
  166. package/dist/governance/tools/inspector-tools.js +2 -2
  167. package/dist/governance/tools/lead-tools.d.ts +1 -1
  168. package/dist/governance/tools/lead-tools.js +1 -1
  169. package/dist/governance/tools/normalize-util.js +1 -1
  170. package/dist/governance/tools/scan-incomplete.js +1 -1
  171. package/dist/governance/tools/shared-tools.d.ts +1 -1
  172. package/dist/governance/tools/shared-tools.js +1 -1
  173. package/dist/governance/tools/submit-normalizers.d.ts +1 -1
  174. package/dist/governance/tools/submit-normalizers.js +1 -1
  175. package/dist/governance/tools/submit-tools.d.ts +1 -1
  176. package/dist/logging/cli-commands.js +1 -1
  177. package/dist/logging/install.d.ts +1 -1
  178. package/dist/logging/install.js +3 -3
  179. package/dist/logging/logger.d.ts +2 -2
  180. package/dist/logging/logger.js +31 -2
  181. package/dist/proc/kill-tree.js +1 -1
  182. package/dist/proc/log-mirror.js +1 -1
  183. package/dist/proc/log-ring.js +2 -2
  184. package/dist/proc/notices.d.ts +1 -1
  185. package/dist/proc/notices.js +2 -2
  186. package/dist/proc/prompt.d.ts +1 -1
  187. package/dist/proc/prompt.js +1 -1
  188. package/dist/proc/readiness.js +1 -1
  189. package/dist/proc/supervisor.d.ts +1 -1
  190. package/dist/proc/supervisor.js +3 -3
  191. package/dist/proc/wait.d.ts +1 -1
  192. package/dist/proc/wait.js +1 -1
  193. package/dist/prompts/command.d.ts +1 -1
  194. package/dist/prompts/command.js +1 -1
  195. package/dist/prompts/normalize.d.ts +1 -1
  196. package/dist/prompts/normalize.js +1 -1
  197. package/dist/prompts/resolve.d.ts +1 -1
  198. package/dist/prompts/store.d.ts +2 -12
  199. package/dist/prompts/store.js +6 -60
  200. package/dist/session/checkpoint.d.ts +2 -2
  201. package/dist/session/clear-archive.d.ts +2 -2
  202. package/dist/session/persist.d.ts +2 -2
  203. package/dist/session/persist.js +1 -1
  204. package/dist/session/startup-session.d.ts +2 -2
  205. package/dist/session/validate-session.js +3 -3
  206. package/dist/skills/service.d.ts +2 -2
  207. package/dist/team/bus.d.ts +1 -1
  208. package/dist/team/bus.js +1 -1
  209. package/dist/team/child-reviewer.d.ts +2 -2
  210. package/dist/team/child-reviewer.js +1 -1
  211. package/dist/team/comm-tools.js +1 -1
  212. package/dist/team/dispatch-gate.js +1 -1
  213. package/dist/team/forced-dispatch.js +1 -1
  214. package/dist/team/forced-mode.d.ts +1 -1
  215. package/dist/team/forced-prompt.d.ts +1 -1
  216. package/dist/team/forced-prompt.js +1 -1
  217. package/dist/team/normalize.d.ts +1 -1
  218. package/dist/team/normalize.js +1 -1
  219. package/dist/team/overseer.d.ts +3 -3
  220. package/dist/team/overseer.js +3 -3
  221. package/dist/team/prompt.d.ts +1 -1
  222. package/dist/team/prompt.js +1 -1
  223. package/dist/team/report.d.ts +2 -2
  224. package/dist/team/report.js +2 -2
  225. package/dist/team/retry.d.ts +1 -1
  226. package/dist/team/retry.js +1 -1
  227. package/dist/team/runtime.d.ts +4 -4
  228. package/dist/team/runtime.js +2 -2
  229. package/dist/team/settled.d.ts +2 -2
  230. package/dist/team/subagent.d.ts +4 -4
  231. package/dist/team/subagent.js +5 -5
  232. package/dist/team/task-tool.d.ts +1 -1
  233. package/dist/team/task-tool.js +1 -1
  234. package/dist/todo/normalize.d.ts +1 -1
  235. package/dist/todo/normalize.js +1 -1
  236. package/dist/todo/prompt.d.ts +1 -1
  237. package/dist/todo/prompt.js +1 -1
  238. package/dist/todo/store.d.ts +1 -1
  239. package/dist/todo/store.js +2 -2
  240. package/dist/todo/todo-tool.d.ts +1 -1
  241. package/dist/todo/todo-tool.js +2 -2
  242. package/dist/tools/bash-tool.d.ts +1 -1
  243. package/dist/tools/bash-tool.js +2 -2
  244. package/dist/tools/diff.d.ts +1 -1
  245. package/dist/tools/diff.js +1 -1
  246. package/dist/tools/file-change-store.d.ts +1 -1
  247. package/dist/tools/fs-tools.d.ts +2 -2
  248. package/dist/tools/fs-tools.js +1 -1
  249. package/dist/tools/index.d.ts +3 -3
  250. package/dist/tools/index.js +1 -1
  251. package/dist/tools/job-tools.d.ts +2 -2
  252. package/dist/tools/job-tools.js +4 -4
  253. package/dist/tools/plan-tools.d.ts +1 -1
  254. package/dist/tools/plan-tools.js +1 -1
  255. package/dist/tools/proc-tools.d.ts +1 -1
  256. package/dist/tools/proc-tools.js +2 -2
  257. package/dist/update/classify-failure.d.ts +1 -1
  258. package/dist/update/install-lock.js +1 -1
  259. package/dist/update/install-source.d.ts +1 -1
  260. package/dist/update/installer.js +2 -2
  261. package/dist/update/npm-view.d.ts +1 -1
  262. package/dist/update/npm-view.js +1 -1
  263. package/dist/update/registry.d.ts +1 -1
  264. package/dist/update/registry.js +1 -1
  265. package/dist/update/service.d.ts +2 -2
  266. package/dist/update/service.js +2 -2
  267. package/package.json +7 -7
  268. package/dist/agent/agent-mode.d.ts +0 -108
  269. package/dist/agent/agent-mode.js +0 -121
  270. package/dist/agent/entry-limits.d.ts +0 -65
  271. package/dist/agent/entry-limits.js +0 -133
  272. package/dist/agent/governance-view.d.ts +0 -40
  273. package/dist/agent/governance-view.js +0 -40
  274. package/dist/agent/invocation-card.d.ts +0 -77
  275. package/dist/agent/invocation-card.js +0 -169
  276. package/dist/agent/model-probe-limits.d.ts +0 -39
  277. package/dist/agent/model-probe-limits.js +0 -25
  278. package/dist/agent/model-probe.d.ts +0 -104
  279. package/dist/agent/model-probe.js +0 -391
  280. package/dist/agent/queued-messages.d.ts +0 -23
  281. package/dist/agent/queued-messages.js +0 -49
  282. package/dist/agent/reducer.d.ts +0 -857
  283. package/dist/agent/reducer.js +0 -1646
  284. package/dist/agent/retry-view.d.ts +0 -68
  285. package/dist/agent/retry-view.js +0 -95
  286. package/dist/agent/usage.d.ts +0 -47
  287. package/dist/agent/usage.js +0 -84
  288. package/dist/compaction/limits.d.ts +0 -61
  289. package/dist/compaction/limits.js +0 -64
  290. package/dist/compaction/meter.d.ts +0 -276
  291. package/dist/compaction/meter.js +0 -512
  292. package/dist/compaction/pressure.d.ts +0 -163
  293. package/dist/compaction/pressure.js +0 -199
  294. package/dist/compaction/reason-text.d.ts +0 -36
  295. package/dist/compaction/reason-text.js +0 -78
  296. package/dist/compaction/types.d.ts +0 -360
  297. package/dist/compaction/types.js +0 -22
  298. package/dist/config/governance-config.d.ts +0 -125
  299. package/dist/config/governance-config.js +0 -164
  300. package/dist/config/kit-resolution.d.ts +0 -93
  301. package/dist/config/kit-resolution.js +0 -226
  302. package/dist/config/model-kits.d.ts +0 -225
  303. package/dist/config/model-kits.js +0 -302
  304. package/dist/config/model-profile-resolution.d.ts +0 -28
  305. package/dist/config/model-profile-resolution.js +0 -88
  306. package/dist/config/model-profiles.d.ts +0 -103
  307. package/dist/config/model-profiles.js +0 -188
  308. package/dist/config/schema.d.ts +0 -1645
  309. package/dist/config/schema.js +0 -1383
  310. package/dist/fast/limits.d.ts +0 -152
  311. package/dist/fast/limits.js +0 -152
  312. package/dist/fast/resolve.d.ts +0 -44
  313. package/dist/fast/resolve.js +0 -107
  314. package/dist/fast/task-summary-types.d.ts +0 -66
  315. package/dist/fast/task-summary-types.js +0 -17
  316. package/dist/fast/types.d.ts +0 -141
  317. package/dist/fast/types.js +0 -14
  318. package/dist/governance/governed-dispatch.d.ts +0 -19
  319. package/dist/governance/governed-dispatch.js +0 -17
  320. package/dist/governance/limits.d.ts +0 -107
  321. package/dist/governance/limits.js +0 -131
  322. package/dist/governance/posture.d.ts +0 -35
  323. package/dist/governance/posture.js +0 -59
  324. package/dist/governance/rules/events-table.d.ts +0 -46
  325. package/dist/governance/rules/events-table.js +0 -94
  326. package/dist/governance/types.d.ts +0 -661
  327. package/dist/governance/types.js +0 -27
  328. package/dist/input/control-sequences.d.ts +0 -71
  329. package/dist/input/control-sequences.js +0 -222
  330. package/dist/input/csiu-keys.d.ts +0 -66
  331. package/dist/input/csiu-keys.js +0 -181
  332. package/dist/input/cursor-report.d.ts +0 -61
  333. package/dist/input/cursor-report.js +0 -97
  334. package/dist/input/enter-sequences.d.ts +0 -64
  335. package/dist/input/enter-sequences.js +0 -153
  336. package/dist/input/interrupt-gesture.d.ts +0 -18
  337. package/dist/input/interrupt-gesture.js +0 -19
  338. package/dist/input/keyboard-enhancement.d.ts +0 -42
  339. package/dist/input/keyboard-enhancement.js +0 -65
  340. package/dist/input/keymap.d.ts +0 -20
  341. package/dist/input/keymap.js +0 -99
  342. package/dist/input/limits.d.ts +0 -118
  343. package/dist/input/limits.js +0 -109
  344. package/dist/input/mouse-events.d.ts +0 -87
  345. package/dist/input/mouse-events.js +0 -212
  346. package/dist/input/paste-parse.d.ts +0 -83
  347. package/dist/input/paste-parse.js +0 -107
  348. package/dist/input/pointer-router.d.ts +0 -11
  349. package/dist/input/pointer-router.js +0 -14
  350. package/dist/input/stdin-filter.d.ts +0 -112
  351. package/dist/input/stdin-filter.js +0 -657
  352. package/dist/input/win32-input-mode.d.ts +0 -61
  353. package/dist/input/win32-input-mode.js +0 -269
  354. package/dist/logging/levels.d.ts +0 -40
  355. package/dist/logging/levels.js +0 -59
  356. package/dist/logging/secret-registry.d.ts +0 -32
  357. package/dist/logging/secret-registry.js +0 -73
  358. package/dist/proc/limits.d.ts +0 -214
  359. package/dist/proc/limits.js +0 -221
  360. package/dist/proc/progress.d.ts +0 -47
  361. package/dist/proc/progress.js +0 -163
  362. package/dist/proc/types.d.ts +0 -269
  363. package/dist/proc/types.js +0 -15
  364. package/dist/proc/wait-view.d.ts +0 -65
  365. package/dist/proc/wait-view.js +0 -66
  366. package/dist/prompts/copy.d.ts +0 -89
  367. package/dist/prompts/copy.js +0 -131
  368. package/dist/prompts/fill.d.ts +0 -51
  369. package/dist/prompts/fill.js +0 -46
  370. package/dist/prompts/limits.d.ts +0 -53
  371. package/dist/prompts/limits.js +0 -53
  372. package/dist/prompts/search.d.ts +0 -58
  373. package/dist/prompts/search.js +0 -146
  374. package/dist/prompts/types.d.ts +0 -204
  375. package/dist/prompts/types.js +0 -13
  376. package/dist/team/activity.d.ts +0 -67
  377. package/dist/team/activity.js +0 -130
  378. package/dist/team/limits.d.ts +0 -308
  379. package/dist/team/limits.js +0 -330
  380. package/dist/team/model.d.ts +0 -104
  381. package/dist/team/model.js +0 -150
  382. package/dist/team/panel-rows.d.ts +0 -48
  383. package/dist/team/panel-rows.js +0 -75
  384. package/dist/team/timeline.d.ts +0 -74
  385. package/dist/team/timeline.js +0 -101
  386. package/dist/team/types.d.ts +0 -354
  387. package/dist/team/types.js +0 -13
  388. package/dist/todo/acceptance.d.ts +0 -120
  389. package/dist/todo/acceptance.js +0 -399
  390. package/dist/todo/follow-through.d.ts +0 -138
  391. package/dist/todo/follow-through.js +0 -248
  392. package/dist/todo/limits.d.ts +0 -152
  393. package/dist/todo/limits.js +0 -152
  394. package/dist/todo/panel-rows.d.ts +0 -45
  395. package/dist/todo/panel-rows.js +0 -70
  396. package/dist/todo/plan-sections.d.ts +0 -60
  397. package/dist/todo/plan-sections.js +0 -108
  398. package/dist/todo/row-window.d.ts +0 -51
  399. package/dist/todo/row-window.js +0 -107
  400. package/dist/todo/types.d.ts +0 -124
  401. package/dist/todo/types.js +0 -12
  402. package/dist/tools/human-input.d.ts +0 -212
  403. package/dist/tools/human-input.js +0 -265
  404. package/dist/tools/patch.d.ts +0 -115
  405. package/dist/tools/patch.js +0 -453
  406. package/dist/tools/terminal-output.d.ts +0 -115
  407. package/dist/tools/terminal-output.js +0 -201
  408. package/dist/tools/tool-output-store.d.ts +0 -68
  409. package/dist/tools/tool-output-store.js +0 -102
  410. package/dist/ui/ActivityLine.d.ts +0 -26
  411. package/dist/ui/ActivityLine.js +0 -51
  412. package/dist/ui/AutocompletePopup.d.ts +0 -23
  413. package/dist/ui/AutocompletePopup.js +0 -17
  414. package/dist/ui/BottomStatusRow.d.ts +0 -10
  415. package/dist/ui/BottomStatusRow.js +0 -9
  416. package/dist/ui/Composer.d.ts +0 -115
  417. package/dist/ui/Composer.js +0 -64
  418. package/dist/ui/GovernancePanel.d.ts +0 -50
  419. package/dist/ui/GovernancePanel.js +0 -77
  420. package/dist/ui/GovernanceRun.d.ts +0 -18
  421. package/dist/ui/GovernanceRun.js +0 -11
  422. package/dist/ui/Header.d.ts +0 -48
  423. package/dist/ui/Header.js +0 -27
  424. package/dist/ui/Logo.d.ts +0 -32
  425. package/dist/ui/Logo.js +0 -65
  426. package/dist/ui/Markdown.d.ts +0 -29
  427. package/dist/ui/Markdown.js +0 -116
  428. package/dist/ui/PromptCaret.d.ts +0 -11
  429. package/dist/ui/PromptCaret.js +0 -31
  430. package/dist/ui/PromptInput.d.ts +0 -192
  431. package/dist/ui/PromptInput.js +0 -689
  432. package/dist/ui/QueuePanel.d.ts +0 -8
  433. package/dist/ui/QueuePanel.js +0 -9
  434. package/dist/ui/QueueStatusRow.d.ts +0 -24
  435. package/dist/ui/QueueStatusRow.js +0 -51
  436. package/dist/ui/ScrollbackShell.d.ts +0 -132
  437. package/dist/ui/ScrollbackShell.js +0 -26
  438. package/dist/ui/SessionOpener.d.ts +0 -30
  439. package/dist/ui/SessionOpener.js +0 -12
  440. package/dist/ui/StatusBar.d.ts +0 -130
  441. package/dist/ui/StatusBar.js +0 -61
  442. package/dist/ui/TeamPanel.d.ts +0 -76
  443. package/dist/ui/TeamPanel.js +0 -103
  444. package/dist/ui/ToastStack.d.ts +0 -8
  445. package/dist/ui/ToastStack.js +0 -31
  446. package/dist/ui/TodoPanel.d.ts +0 -52
  447. package/dist/ui/TodoPanel.js +0 -214
  448. package/dist/ui/Transcript.d.ts +0 -105
  449. package/dist/ui/Transcript.js +0 -258
  450. package/dist/ui/UpdateLine.d.ts +0 -44
  451. package/dist/ui/UpdateLine.js +0 -129
  452. package/dist/ui/activity-phrases.d.ts +0 -33
  453. package/dist/ui/activity-phrases.js +0 -50
  454. package/dist/ui/capabilities.d.ts +0 -27
  455. package/dist/ui/capabilities.js +0 -65
  456. package/dist/ui/clipboard-task.d.ts +0 -29
  457. package/dist/ui/clipboard-task.js +0 -66
  458. package/dist/ui/clipboard.d.ts +0 -31
  459. package/dist/ui/clipboard.js +0 -157
  460. package/dist/ui/color-runtime.d.ts +0 -5
  461. package/dist/ui/color-runtime.js +0 -29
  462. package/dist/ui/composer-input.d.ts +0 -38
  463. package/dist/ui/composer-input.js +0 -79
  464. package/dist/ui/composer-limits.d.ts +0 -30
  465. package/dist/ui/composer-limits.js +0 -45
  466. package/dist/ui/composer-rows.d.ts +0 -73
  467. package/dist/ui/composer-rows.js +0 -129
  468. package/dist/ui/console-bridge.d.ts +0 -19
  469. package/dist/ui/console-bridge.js +0 -52
  470. package/dist/ui/density.d.ts +0 -26
  471. package/dist/ui/density.js +0 -34
  472. package/dist/ui/display-tab.d.ts +0 -51
  473. package/dist/ui/display-tab.js +0 -82
  474. package/dist/ui/editor-navigation.d.ts +0 -55
  475. package/dist/ui/editor-navigation.js +0 -96
  476. package/dist/ui/editor-reducer.d.ts +0 -108
  477. package/dist/ui/editor-reducer.js +0 -187
  478. package/dist/ui/enter-frames.d.ts +0 -47
  479. package/dist/ui/enter-frames.js +0 -117
  480. package/dist/ui/entries/AssistantEntry.d.ts +0 -37
  481. package/dist/ui/entries/AssistantEntry.js +0 -43
  482. package/dist/ui/entries/CompactionCard.d.ts +0 -88
  483. package/dist/ui/entries/CompactionCard.js +0 -222
  484. package/dist/ui/entries/DiffView.d.ts +0 -61
  485. package/dist/ui/entries/DiffView.js +0 -103
  486. package/dist/ui/entries/EntryFrame.d.ts +0 -23
  487. package/dist/ui/entries/EntryFrame.js +0 -6
  488. package/dist/ui/entries/FastCard.d.ts +0 -53
  489. package/dist/ui/entries/FastCard.js +0 -105
  490. package/dist/ui/entries/GovernanceCard.d.ts +0 -30
  491. package/dist/ui/entries/GovernanceCard.js +0 -32
  492. package/dist/ui/entries/InvocationCard.d.ts +0 -20
  493. package/dist/ui/entries/InvocationCard.js +0 -32
  494. package/dist/ui/entries/QueuedEntry.d.ts +0 -27
  495. package/dist/ui/entries/QueuedEntry.js +0 -33
  496. package/dist/ui/entries/RetryCard.d.ts +0 -56
  497. package/dist/ui/entries/RetryCard.js +0 -60
  498. package/dist/ui/entries/ServiceCard.d.ts +0 -82
  499. package/dist/ui/entries/ServiceCard.js +0 -151
  500. package/dist/ui/entries/TeamCard.d.ts +0 -55
  501. package/dist/ui/entries/TeamCard.js +0 -94
  502. package/dist/ui/entries/TodoCard.d.ts +0 -54
  503. package/dist/ui/entries/TodoCard.js +0 -98
  504. package/dist/ui/entries/ToolCard.d.ts +0 -81
  505. package/dist/ui/entries/ToolCard.js +0 -169
  506. package/dist/ui/entries/ToolPreview.d.ts +0 -59
  507. package/dist/ui/entries/ToolPreview.js +0 -208
  508. package/dist/ui/entries/UserEntry.d.ts +0 -36
  509. package/dist/ui/entries/UserEntry.js +0 -57
  510. package/dist/ui/entries/WaitCard.d.ts +0 -37
  511. package/dist/ui/entries/WaitCard.js +0 -92
  512. package/dist/ui/exit-snapshot.d.ts +0 -43
  513. package/dist/ui/exit-snapshot.js +0 -26
  514. package/dist/ui/frame-differ.d.ts +0 -166
  515. package/dist/ui/frame-differ.js +0 -354
  516. package/dist/ui/frame-observer.d.ts +0 -17
  517. package/dist/ui/frame-observer.js +0 -94
  518. package/dist/ui/frame-parser.d.ts +0 -7
  519. package/dist/ui/frame-parser.js +0 -18
  520. package/dist/ui/gauge.d.ts +0 -39
  521. package/dist/ui/gauge.js +0 -55
  522. package/dist/ui/glyphs.d.ts +0 -178
  523. package/dist/ui/glyphs.js +0 -165
  524. package/dist/ui/governance-copy.d.ts +0 -69
  525. package/dist/ui/governance-copy.js +0 -104
  526. package/dist/ui/governance-status.d.ts +0 -145
  527. package/dist/ui/governance-status.js +0 -326
  528. package/dist/ui/gradient.d.ts +0 -11
  529. package/dist/ui/gradient.js +0 -50
  530. package/dist/ui/ink-runtime.d.ts +0 -4
  531. package/dist/ui/ink-runtime.js +0 -51
  532. package/dist/ui/interaction-copy.d.ts +0 -84
  533. package/dist/ui/interaction-copy.js +0 -41
  534. package/dist/ui/interaction-hints.d.ts +0 -44
  535. package/dist/ui/interaction-hints.js +0 -97
  536. package/dist/ui/layout/AppShell.d.ts +0 -17
  537. package/dist/ui/layout/AppShell.js +0 -6
  538. package/dist/ui/layout/Gutter.d.ts +0 -67
  539. package/dist/ui/layout/Gutter.js +0 -42
  540. package/dist/ui/layout/MeasuredEntry.d.ts +0 -21
  541. package/dist/ui/layout/MeasuredEntry.js +0 -30
  542. package/dist/ui/layout/OverlayFrame.d.ts +0 -73
  543. package/dist/ui/layout/OverlayFrame.js +0 -110
  544. package/dist/ui/layout/ScrollIndicator.d.ts +0 -32
  545. package/dist/ui/layout/ScrollIndicator.js +0 -22
  546. package/dist/ui/layout/ScrollViewport.d.ts +0 -40
  547. package/dist/ui/layout/ScrollViewport.js +0 -222
  548. package/dist/ui/layout/agents-board.d.ts +0 -102
  549. package/dist/ui/layout/agents-board.js +0 -389
  550. package/dist/ui/layout/autocomplete.d.ts +0 -18
  551. package/dist/ui/layout/autocomplete.js +0 -26
  552. package/dist/ui/layout/budget.d.ts +0 -43
  553. package/dist/ui/layout/budget.js +0 -52
  554. package/dist/ui/layout/cells.d.ts +0 -61
  555. package/dist/ui/layout/cells.js +0 -156
  556. package/dist/ui/layout/document-layout.d.ts +0 -13
  557. package/dist/ui/layout/document-layout.js +0 -10
  558. package/dist/ui/layout/follow-state.d.ts +0 -138
  559. package/dist/ui/layout/follow-state.js +0 -148
  560. package/dist/ui/layout/frame.d.ts +0 -36
  561. package/dist/ui/layout/frame.js +0 -39
  562. package/dist/ui/layout/governance-board.d.ts +0 -121
  563. package/dist/ui/layout/governance-board.js +0 -382
  564. package/dist/ui/layout/governance-card.d.ts +0 -53
  565. package/dist/ui/layout/governance-card.js +0 -134
  566. package/dist/ui/layout/governance-chip.d.ts +0 -38
  567. package/dist/ui/layout/governance-chip.js +0 -64
  568. package/dist/ui/layout/governance-panel.d.ts +0 -85
  569. package/dist/ui/layout/governance-panel.js +0 -358
  570. package/dist/ui/layout/governance-roster.d.ts +0 -65
  571. package/dist/ui/layout/governance-roster.js +0 -275
  572. package/dist/ui/layout/header-hints.d.ts +0 -90
  573. package/dist/ui/layout/header-hints.js +0 -110
  574. package/dist/ui/layout/header-left.d.ts +0 -115
  575. package/dist/ui/layout/header-left.js +0 -206
  576. package/dist/ui/layout/invocation-card.d.ts +0 -41
  577. package/dist/ui/layout/invocation-card.js +0 -91
  578. package/dist/ui/layout/kit-chip.d.ts +0 -50
  579. package/dist/ui/layout/kit-chip.js +0 -81
  580. package/dist/ui/layout/overlay-window.d.ts +0 -43
  581. package/dist/ui/layout/overlay-window.js +0 -51
  582. package/dist/ui/layout/queue-layout.d.ts +0 -19
  583. package/dist/ui/layout/queue-layout.js +0 -26
  584. package/dist/ui/layout/rail.d.ts +0 -7
  585. package/dist/ui/layout/rail.js +0 -16
  586. package/dist/ui/layout/scroll-indicator.d.ts +0 -27
  587. package/dist/ui/layout/scroll-indicator.js +0 -36
  588. package/dist/ui/layout/scroll.d.ts +0 -37
  589. package/dist/ui/layout/scroll.js +0 -99
  590. package/dist/ui/layout/scrollbar-geometry.d.ts +0 -17
  591. package/dist/ui/layout/scrollbar-geometry.js +0 -13
  592. package/dist/ui/layout/session-chip.d.ts +0 -52
  593. package/dist/ui/layout/session-chip.js +0 -64
  594. package/dist/ui/layout/shortcut-panel-layout.d.ts +0 -191
  595. package/dist/ui/layout/shortcut-panel-layout.js +0 -321
  596. package/dist/ui/layout/status-detail-layout.d.ts +0 -9
  597. package/dist/ui/layout/status-detail-layout.js +0 -79
  598. package/dist/ui/layout/status-layout.d.ts +0 -140
  599. package/dist/ui/layout/status-layout.js +0 -262
  600. package/dist/ui/layout/task-summary-cell.d.ts +0 -61
  601. package/dist/ui/layout/task-summary-cell.js +0 -65
  602. package/dist/ui/layout/team-panel.d.ts +0 -18
  603. package/dist/ui/layout/team-panel.js +0 -25
  604. package/dist/ui/layout/team-row.d.ts +0 -139
  605. package/dist/ui/layout/team-row.js +0 -246
  606. package/dist/ui/layout/todo-layout.d.ts +0 -62
  607. package/dist/ui/layout/todo-layout.js +0 -102
  608. package/dist/ui/layout/useTerminalSize.d.ts +0 -13
  609. package/dist/ui/layout/useTerminalSize.js +0 -50
  610. package/dist/ui/layout/viewport-geometry.d.ts +0 -29
  611. package/dist/ui/layout/viewport-geometry.js +0 -28
  612. package/dist/ui/layout/virtual-window.d.ts +0 -112
  613. package/dist/ui/layout/virtual-window.js +0 -494
  614. package/dist/ui/layout/wait-bar.d.ts +0 -34
  615. package/dist/ui/layout/wait-bar.js +0 -48
  616. package/dist/ui/layout/wrap-rows.d.ts +0 -26
  617. package/dist/ui/layout/wrap-rows.js +0 -88
  618. package/dist/ui/live-clamp.d.ts +0 -14
  619. package/dist/ui/live-clamp.js +0 -46
  620. package/dist/ui/markdown-blocks.d.ts +0 -107
  621. package/dist/ui/markdown-blocks.js +0 -240
  622. package/dist/ui/overlays/AgentsBoardOverlay.d.ts +0 -57
  623. package/dist/ui/overlays/AgentsBoardOverlay.js +0 -183
  624. package/dist/ui/overlays/ConfirmDialog.d.ts +0 -31
  625. package/dist/ui/overlays/ConfirmDialog.js +0 -44
  626. package/dist/ui/overlays/GovernanceBoardOverlay.d.ts +0 -41
  627. package/dist/ui/overlays/GovernanceBoardOverlay.js +0 -76
  628. package/dist/ui/overlays/GovernanceSettingsPage.d.ts +0 -48
  629. package/dist/ui/overlays/GovernanceSettingsPage.js +0 -93
  630. package/dist/ui/overlays/HelpOverlay.d.ts +0 -29
  631. package/dist/ui/overlays/HelpOverlay.js +0 -232
  632. package/dist/ui/overlays/KitEditor.d.ts +0 -23
  633. package/dist/ui/overlays/KitEditor.js +0 -101
  634. package/dist/ui/overlays/KitManager.d.ts +0 -23
  635. package/dist/ui/overlays/KitManager.js +0 -104
  636. package/dist/ui/overlays/KitPicker.d.ts +0 -49
  637. package/dist/ui/overlays/KitPicker.js +0 -58
  638. package/dist/ui/overlays/ModelDiscoveryList.d.ts +0 -23
  639. package/dist/ui/overlays/ModelDiscoveryList.js +0 -161
  640. package/dist/ui/overlays/ModelPicker.d.ts +0 -26
  641. package/dist/ui/overlays/ModelPicker.js +0 -63
  642. package/dist/ui/overlays/ModelProfileEditor.d.ts +0 -29
  643. package/dist/ui/overlays/ModelProfileEditor.js +0 -168
  644. package/dist/ui/overlays/ModelProfilePicker.d.ts +0 -48
  645. package/dist/ui/overlays/ModelProfilePicker.js +0 -231
  646. package/dist/ui/overlays/PlanReviewOverlay.d.ts +0 -51
  647. package/dist/ui/overlays/PlanReviewOverlay.js +0 -132
  648. package/dist/ui/overlays/PromptEditorPage.d.ts +0 -48
  649. package/dist/ui/overlays/PromptEditorPage.js +0 -227
  650. package/dist/ui/overlays/PromptLibraryOverlay.d.ts +0 -37
  651. package/dist/ui/overlays/PromptLibraryOverlay.js +0 -191
  652. package/dist/ui/overlays/PromptPicker.d.ts +0 -36
  653. package/dist/ui/overlays/PromptPicker.js +0 -129
  654. package/dist/ui/overlays/PromptTextArea.d.ts +0 -86
  655. package/dist/ui/overlays/PromptTextArea.js +0 -141
  656. package/dist/ui/overlays/QuestionOverlay.d.ts +0 -39
  657. package/dist/ui/overlays/QuestionOverlay.js +0 -258
  658. package/dist/ui/overlays/QueueOverlay.d.ts +0 -22
  659. package/dist/ui/overlays/QueueOverlay.js +0 -79
  660. package/dist/ui/overlays/SettingsScreen.d.ts +0 -228
  661. package/dist/ui/overlays/SettingsScreen.js +0 -1037
  662. package/dist/ui/overlays/ShortcutPanel.d.ts +0 -39
  663. package/dist/ui/overlays/ShortcutPanel.js +0 -106
  664. package/dist/ui/overlays/TeamFanoutPage.d.ts +0 -51
  665. package/dist/ui/overlays/TeamFanoutPage.js +0 -90
  666. package/dist/ui/overlays/governance-settings.d.ts +0 -79
  667. package/dist/ui/overlays/governance-settings.js +0 -140
  668. package/dist/ui/overlays/kit-picker-state.d.ts +0 -87
  669. package/dist/ui/overlays/kit-picker-state.js +0 -136
  670. package/dist/ui/overlays/kit-settings-state.d.ts +0 -129
  671. package/dist/ui/overlays/kit-settings-state.js +0 -268
  672. package/dist/ui/overlays/model-probe-view.d.ts +0 -128
  673. package/dist/ui/overlays/model-probe-view.js +0 -225
  674. package/dist/ui/overlays/model-profile-state.d.ts +0 -177
  675. package/dist/ui/overlays/model-profile-state.js +0 -301
  676. package/dist/ui/overlays/prompt-library-state.d.ts +0 -162
  677. package/dist/ui/overlays/prompt-library-state.js +0 -335
  678. package/dist/ui/overlays/prompt-picker-state.d.ts +0 -71
  679. package/dist/ui/overlays/prompt-picker-state.js +0 -98
  680. package/dist/ui/overlays/team-fanout-state.d.ts +0 -106
  681. package/dist/ui/overlays/team-fanout-state.js +0 -155
  682. package/dist/ui/overlays/use-model-probe.d.ts +0 -30
  683. package/dist/ui/overlays/use-model-probe.js +0 -109
  684. package/dist/ui/palettes.d.ts +0 -112
  685. package/dist/ui/palettes.js +0 -130
  686. package/dist/ui/paste-frames.d.ts +0 -91
  687. package/dist/ui/paste-frames.js +0 -117
  688. package/dist/ui/paste-tokens.d.ts +0 -90
  689. package/dist/ui/paste-tokens.js +0 -147
  690. package/dist/ui/render-cache.d.ts +0 -81
  691. package/dist/ui/render-cache.js +0 -196
  692. package/dist/ui/render-governor.d.ts +0 -54
  693. package/dist/ui/render-governor.js +0 -78
  694. package/dist/ui/run-metrics.d.ts +0 -23
  695. package/dist/ui/run-metrics.js +0 -27
  696. package/dist/ui/run-status-row.d.ts +0 -63
  697. package/dist/ui/run-status-row.js +0 -54
  698. package/dist/ui/screen.d.ts +0 -107
  699. package/dist/ui/screen.js +0 -234
  700. package/dist/ui/scrollback/LiveTail.d.ts +0 -115
  701. package/dist/ui/scrollback/LiveTail.js +0 -48
  702. package/dist/ui/scrollback/band.d.ts +0 -114
  703. package/dist/ui/scrollback/band.js +0 -143
  704. package/dist/ui/scrollback/budget.d.ts +0 -90
  705. package/dist/ui/scrollback/budget.js +0 -100
  706. package/dist/ui/scrollback/canvas.d.ts +0 -100
  707. package/dist/ui/scrollback/canvas.js +0 -114
  708. package/dist/ui/scrollback/cursor-probe.d.ts +0 -71
  709. package/dist/ui/scrollback/cursor-probe.js +0 -133
  710. package/dist/ui/scrollback/drain.d.ts +0 -32
  711. package/dist/ui/scrollback/drain.js +0 -64
  712. package/dist/ui/scrollback/exit-summary.d.ts +0 -23
  713. package/dist/ui/scrollback/exit-summary.js +0 -25
  714. package/dist/ui/scrollback/limits.d.ts +0 -98
  715. package/dist/ui/scrollback/limits.js +0 -98
  716. package/dist/ui/scrollback/live-preview.d.ts +0 -34
  717. package/dist/ui/scrollback/live-preview.js +0 -130
  718. package/dist/ui/scrollback/overflow-print.d.ts +0 -108
  719. package/dist/ui/scrollback/overflow-print.js +0 -120
  720. package/dist/ui/scrollback/renderer.d.ts +0 -48
  721. package/dist/ui/scrollback/renderer.js +0 -186
  722. package/dist/ui/scrollback/scrollback-writer.d.ts +0 -174
  723. package/dist/ui/scrollback/scrollback-writer.js +0 -648
  724. package/dist/ui/scrollback/settled-boundary.d.ts +0 -42
  725. package/dist/ui/scrollback/settled-boundary.js +0 -109
  726. package/dist/ui/scrollback/tail-anchor.d.ts +0 -71
  727. package/dist/ui/scrollback/tail-anchor.js +0 -79
  728. package/dist/ui/scrollback/tail-window.d.ts +0 -73
  729. package/dist/ui/scrollback/tail-window.js +0 -89
  730. package/dist/ui/scrollback/use-scrollback-view.d.ts +0 -139
  731. package/dist/ui/scrollback/use-scrollback-view.js +0 -601
  732. package/dist/ui/scrollback/writer-shapes.d.ts +0 -127
  733. package/dist/ui/scrollback/writer-shapes.js +0 -159
  734. package/dist/ui/scrollbar-controller.d.ts +0 -30
  735. package/dist/ui/scrollbar-controller.js +0 -124
  736. package/dist/ui/selection/highlight.d.ts +0 -39
  737. package/dist/ui/selection/highlight.js +0 -64
  738. package/dist/ui/selection/screen-mirror.d.ts +0 -24
  739. package/dist/ui/selection/screen-mirror.js +0 -35
  740. package/dist/ui/selection/selection-controller.d.ts +0 -104
  741. package/dist/ui/selection/selection-controller.js +0 -372
  742. package/dist/ui/selection/selection.d.ts +0 -90
  743. package/dist/ui/selection/selection.js +0 -223
  744. package/dist/ui/shortcuts.d.ts +0 -81
  745. package/dist/ui/shortcuts.js +0 -221
  746. package/dist/ui/status-feedback.d.ts +0 -35
  747. package/dist/ui/status-feedback.js +0 -38
  748. package/dist/ui/stdout-frame-writer.d.ts +0 -74
  749. package/dist/ui/stdout-frame-writer.js +0 -155
  750. package/dist/ui/team-status.d.ts +0 -166
  751. package/dist/ui/team-status.js +0 -252
  752. package/dist/ui/terminal-plan.d.ts +0 -52
  753. package/dist/ui/terminal-plan.js +0 -49
  754. package/dist/ui/theme.d.ts +0 -96
  755. package/dist/ui/theme.js +0 -130
  756. package/dist/ui/transcript-text.d.ts +0 -41
  757. package/dist/ui/transcript-text.js +0 -282
  758. package/dist/ui/use-height-store.d.ts +0 -31
  759. package/dist/ui/use-height-store.js +0 -76
  760. package/dist/ui/use-render-governor.d.ts +0 -39
  761. package/dist/ui/use-render-governor.js +0 -57
  762. package/dist/ui/use-wheel-routing.d.ts +0 -57
  763. package/dist/ui/use-wheel-routing.js +0 -152
  764. package/dist/ui/win-vt-force.d.ts +0 -136
  765. package/dist/ui/win-vt-force.js +0 -237
  766. package/dist/ui/win-vt-input.d.ts +0 -57
  767. package/dist/ui/win-vt-input.js +0 -62
  768. package/dist/update/limits.d.ts +0 -111
  769. package/dist/update/limits.js +0 -111
  770. package/dist/update/semver.d.ts +0 -89
  771. package/dist/update/semver.js +0 -295
  772. package/dist/update/types.d.ts +0 -169
  773. package/dist/update/types.js +0 -68
  774. /package/dist/{ui → app}/session-bridge.d.ts +0 -0
  775. /package/dist/{ui → app}/session-bridge.js +0 -0
@@ -1,129 +0,0 @@
1
- /**
2
- * Composer layout (tui-paste-handling section 5.5) -- pure. No Ink, no React.
3
- *
4
- * THE ONE PLACE THAT MAPS A BUFFER INDEX TO A SCREEN CELL (I-9). The composer
5
- * used to hand its buffer to Ink one `<Text>` per logical line and let Yoga wrap
6
- * it, which is fine until the draft is taller than the frame: `AppShell` gives
7
- * the bottom chrome `flexShrink={0}`, so a tall composer does not grow the frame
8
- * -- Yoga takes the rows out of the transcript and `overflow: hidden` clips them
9
- * away, while `layout/budget.ts` keeps telling five consumers the composer is
10
- * three rows tall. Four hundred presses of `Shift+Enter` do it without pasting
11
- * anything.
12
- *
13
- * So the wrap happens HERE, the row count is a number this module returns, and
14
- * `budget.ts` is told that number (I-8).
15
- *
16
- * HARD WRAP BY DISPLAY COLUMN, NEVER `layout/wrap-rows.ts::wrapToRows` (D-15).
17
- * That function is a PROSE wrapper: it splits on `/\s+/` and rejoins with single
18
- * spaces, so it destroys indentation and makes the character-index-to-screen-cell
19
- * mapping the caret depends on impossible to state, let alone compute.
20
- */
21
- import { buildEditorVisualMap, graphemes, graphemeWidth } from './editor-navigation.js';
22
- import { tokenSpans } from './paste-tokens.js';
23
- /** Width of a displayed run, measured by complete graphemes. */
24
- export function displayWidth(text) {
25
- return graphemes(text).reduce((width, part) => width + graphemeWidth(part.text), 0);
26
- }
27
- /**
28
- * Wrap `buffer` into rows, locate the caret, and select a window of at most
29
- * `maxRows` rows that contains it.
30
- *
31
- * The window is pinned to the BOTTOM -- where the user is typing -- and pulled up
32
- * only far enough to keep the caret visible. That is deterministic, which matters
33
- * because this function holds no state between calls: a scroll offset would have
34
- * to live in the reducer and would then need its own invalidation rules.
35
- */
36
- export function layoutComposer(input) {
37
- const { buffer, active } = input;
38
- const maxRows = input.maxRows >= 1 ? Math.floor(input.maxRows) : 1;
39
- const map = buildEditorVisualMap(input);
40
- const cursorRowAbs = active ? map.cursor.row : -1;
41
- const cursorCol = map.cursor.column;
42
- const spans = tokenSpans(buffer);
43
- let spanIndex = 0;
44
- const rows = map.rows.map((cells) => {
45
- const segments = [];
46
- for (const cell of cells) {
47
- while (spanIndex < spans.length && spans[spanIndex].end <= cell.index)
48
- spanIndex += 1;
49
- const span = spans[spanIndex];
50
- const kind = span && cell.index >= span.start && cell.index < span.end ? 'token' : 'text';
51
- const last = segments[segments.length - 1];
52
- if (last && last.kind === kind)
53
- segments[segments.length - 1] = {
54
- text: last.text + cell.text, kind,
55
- };
56
- else
57
- segments.push({ text: cell.text, kind });
58
- }
59
- return { segments };
60
- });
61
- const totalRows = rows.length;
62
- const cap = Math.max(1, Math.min(maxRows, totalRows));
63
- let start = Math.max(0, totalRows - cap);
64
- if (cursorRowAbs >= 0) {
65
- if (cursorRowAbs < start)
66
- start = cursorRowAbs;
67
- else if (cursorRowAbs >= start + cap)
68
- start = Math.min(totalRows - cap, cursorRowAbs - cap + 1);
69
- }
70
- const windowed = rows.slice(start, start + cap);
71
- return {
72
- rows: windowed,
73
- cursorRow: cursorRowAbs >= 0 ? cursorRowAbs - start : -1,
74
- cursorCol,
75
- totalRows,
76
- hiddenAbove: start,
77
- hiddenBelow: totalRows - start - windowed.length,
78
- };
79
- }
80
- /**
81
- * Split one row at a display column so the renderer can draw an inverse caret on
82
- * exactly one cell.
83
- *
84
- * Lives here rather than in the component because it walks the SAME width table
85
- * `layoutComposer` walked (I-9): a second, subtly different measurement is how
86
- * the caret ends up drawn on a cell that does not hold the character it is on.
87
- */
88
- export function splitRowAtColumn(row, column) {
89
- const before = [];
90
- const after = [];
91
- let at = null;
92
- let x = 0;
93
- const push = (list, text, kind) => {
94
- const last = list[list.length - 1];
95
- if (last && last.kind === kind)
96
- list[list.length - 1] = { text: last.text + text, kind };
97
- else
98
- list.push({ text, kind });
99
- };
100
- const cells = [];
101
- let leading = '';
102
- for (const segment of row.segments) {
103
- for (const { text: ch } of graphemes(segment.text)) {
104
- if (graphemeWidth(ch) === 0) {
105
- const last = cells[cells.length - 1];
106
- if (last)
107
- cells[cells.length - 1] = { ...last, text: last.text + ch };
108
- else
109
- leading += ch;
110
- }
111
- else {
112
- cells.push({ text: leading + ch, kind: segment.kind });
113
- leading = '';
114
- }
115
- }
116
- }
117
- // A zero-width-only row keeps its text before the explicitly budgeted space.
118
- if (leading)
119
- push(before, leading, row.segments[0]?.kind ?? 'text');
120
- for (const cell of cells) {
121
- const width = displayWidth(cell.text);
122
- if (at === null && column >= x && column < x + width)
123
- at = cell;
124
- else
125
- push(at === null ? before : after, cell.text, cell.kind);
126
- x += width;
127
- }
128
- return { before, at, after };
129
- }
@@ -1,19 +0,0 @@
1
- /**
2
- * Console bridge — invariant I-4 (spec §4.9).
3
- *
4
- * `patchConsole: true` makes Ink do `log.clear() → stdout.write(data) →
5
- * log(lastOutput)`. Under a fixed frame that write pushes the frame down a row
6
- * and permanently corrupts the line accounting described in §4.2: from then on
7
- * `eraseLines(previousLineCount)` is off by one and the frame slowly eats the
8
- * content above it.
9
- *
10
- * So full-screen mode runs with `patchConsole: false` and routes `console.*`
11
- * into the transcript as notice entries, where the output is actually READABLE
12
- * instead of merely being somewhere on screen. Inline mode keeps Ink's patching.
13
- */
14
- import type { NoticeLevel } from '../agent/reducer.js';
15
- /**
16
- * Hijack `console.*` for the lifetime of the returned restore function.
17
- * Returns a restore callback; calling it twice is harmless.
18
- */
19
- export declare function installConsoleBridge(sink: (level: NoticeLevel, text: string) => void): () => void;
@@ -1,52 +0,0 @@
1
- /**
2
- * Console bridge — invariant I-4 (spec §4.9).
3
- *
4
- * `patchConsole: true` makes Ink do `log.clear() → stdout.write(data) →
5
- * log(lastOutput)`. Under a fixed frame that write pushes the frame down a row
6
- * and permanently corrupts the line accounting described in §4.2: from then on
7
- * `eraseLines(previousLineCount)` is off by one and the frame slowly eats the
8
- * content above it.
9
- *
10
- * So full-screen mode runs with `patchConsole: false` and routes `console.*`
11
- * into the transcript as notice entries, where the output is actually READABLE
12
- * instead of merely being somewhere on screen. Inline mode keeps Ink's patching.
13
- */
14
- import { format } from 'node:util';
15
- const LEVEL_BY_METHOD = {
16
- log: 'info',
17
- info: 'info',
18
- warn: 'warn',
19
- error: 'error',
20
- debug: 'info',
21
- };
22
- /**
23
- * Hijack `console.*` for the lifetime of the returned restore function.
24
- * Returns a restore callback; calling it twice is harmless.
25
- */
26
- export function installConsoleBridge(sink) {
27
- const methods = Object.keys(LEVEL_BY_METHOD);
28
- const originals = new Map();
29
- for (const method of methods) {
30
- originals.set(method, console[method].bind(console));
31
- console[method] = (...args) => {
32
- const text = format(...args);
33
- if (text.length === 0)
34
- return;
35
- try {
36
- sink(LEVEL_BY_METHOD[method], text);
37
- }
38
- catch {
39
- // A failing sink must never turn a stray console.log into a crash.
40
- }
41
- };
42
- }
43
- let restored = false;
44
- return () => {
45
- if (restored)
46
- return;
47
- restored = true;
48
- for (const [method, original] of originals) {
49
- console[method] = original;
50
- }
51
- };
52
- }
@@ -1,26 +0,0 @@
1
- /**
2
- * Entry spacing policy (spec §4.3).
3
- *
4
- * Replaces four unconditional `marginTop={1}` sites (`UserEntry`,
5
- * `AssistantEntry`, `ToolCard`, the notice branch in `Transcript`). Those spent
6
- * a blank row on EVERY entry, so a plain "ask -> read a file -> answer" turn was
7
- * 17 rows tall against a 13-16 row viewport: the user could only ever see the
8
- * current step.
9
- *
10
- * Blank space now marks the one boundary that means something — the start of a
11
- * new user turn. Everything inside a turn stays contiguous, and the left rail
12
- * (§4.3) provides the grouping the blank rows used to.
13
- *
14
- * Pure and free of React so `density.test.ts` can enumerate the whole matrix.
15
- */
16
- import type { Entry } from '../agent/reducer.js';
17
- import type { DensityMode } from '../config/schema.js';
18
- export type { DensityMode };
19
- /**
20
- * Blank rows to insert BEFORE `next`. `prev === undefined` means `next` is the
21
- * first item in the list.
22
- *
23
- * This is the ONLY place allowed to decide entry spacing: if a component also
24
- * sets its own `marginTop`, the two stack and the turn boundary becomes 2 rows.
25
- */
26
- export declare function separationRows(prev: Entry | undefined, next: Entry, mode: DensityMode): 0 | 1;
@@ -1,34 +0,0 @@
1
- /**
2
- * Entry spacing policy (spec §4.3).
3
- *
4
- * Replaces four unconditional `marginTop={1}` sites (`UserEntry`,
5
- * `AssistantEntry`, `ToolCard`, the notice branch in `Transcript`). Those spent
6
- * a blank row on EVERY entry, so a plain "ask -> read a file -> answer" turn was
7
- * 17 rows tall against a 13-16 row viewport: the user could only ever see the
8
- * current step.
9
- *
10
- * Blank space now marks the one boundary that means something — the start of a
11
- * new user turn. Everything inside a turn stays contiguous, and the left rail
12
- * (§4.3) provides the grouping the blank rows used to.
13
- *
14
- * Pure and free of React so `density.test.ts` can enumerate the whole matrix.
15
- */
16
- /**
17
- * Blank rows to insert BEFORE `next`. `prev === undefined` means `next` is the
18
- * first item in the list.
19
- *
20
- * This is the ONLY place allowed to decide entry spacing: if a component also
21
- * sets its own `marginTop`, the two stack and the turn boundary becomes 2 rows.
22
- */
23
- export function separationRows(prev, next, mode) {
24
- if (!prev)
25
- return 0;
26
- if (mode === 'compact')
27
- return 0;
28
- // Consecutive tool calls read as one action; keep them tight.
29
- if (prev.kind === 'tool' && next.kind === 'tool')
30
- return 0;
31
- if (next.kind === 'user')
32
- return 1;
33
- return 0;
34
- }
@@ -1,51 +0,0 @@
1
- /**
2
- * TAB expansion that agrees with the TERMINAL, not with UTF-16 (fix A'-2 of
3
- * paste-control-sequence-residue).
4
- *
5
- * WHY THIS IS A MODULE OF ITS OWN. A TAB has no width; it advances the pen to
6
- * the next tab stop, so what it occupies depends on where the line currently
7
- * is. That makes "one TAB" a property of a CURSOR, and the same character was
8
- * being read three different ways in this package:
9
- *
10
- * - `ui/editor-navigation.ts` painted it at FOUR-column stops in the composer,
11
- * - `entries/UserEntry.tsx` handed the raw byte to `<Text>`, so the terminal
12
- * painted it at EIGHT-column stops in the transcript,
13
- * - `tools/terminal-output.ts` expanded it by UTF-16 code-unit count, so a
14
- * pasted `中文<TAB>X` table came out two columns short.
15
- *
16
- * A user who pastes a TAB-indented block or an Excel/Word table therefore saw
17
- * the draft and the sent message disagree about their own text. One function,
18
- * used by the composer AND by every renderer of stored text, is what makes the
19
- * "before send" and "after send" rows character-identical.
20
- *
21
- * `input/` is the wrong home for it: `cli/input` may depend on `node:stream`
22
- * and nothing else (`.claude-index/index.md`), and column arithmetic needs the
23
- * width table. `ui/` already owns that (`selection/selection.ts` uses
24
- * `string-width` for exactly this reason).
25
- *
26
- * Pure, React-free, Ink-free.
27
- */
28
- /**
29
- * Tab stop width, matching every terminal's default.
30
- *
31
- * A COPY OF `tools/terminal-output.ts`'s number, on purpose and in the same
32
- * shape `composer-limits.ts` copies `budget.ts::HINT_MIN_ROWS`: importing the
33
- * tools module here would point an arrow from `ui/` into `tools/` for one
34
- * integer, and the two are asserted equal by a test instead. (`tools/` keeps
35
- * its own expander because its rows are clipped to 200 columns before anyone
36
- * looks at them, so a code-unit approximation there cannot reach a user.)
37
- */
38
- export declare const TAB_WIDTH = 8;
39
- /**
40
- * Expand every TAB in `text` to spaces up to the next `TAB_WIDTH` stop, given
41
- * the display column the first character will be painted at.
42
- *
43
- * `fromColumn` is a DISPLAY column, not an offset: a caller that has already
44
- * painted `中文` must pass 4. Lines are independent -- a `\n` resets the column
45
- * to zero, because the terminal's pen returns to column 0.
46
- *
47
- * Non-ASCII text is measured with `string-width`, which is the whole point: a
48
- * CJK glyph occupies two cells, and counting it as one space is what left
49
- * CJK-plus-TAB tables misaligned.
50
- */
51
- export declare function expandTabs(text: string, fromColumn?: number): string;
@@ -1,82 +0,0 @@
1
- /**
2
- * TAB expansion that agrees with the TERMINAL, not with UTF-16 (fix A'-2 of
3
- * paste-control-sequence-residue).
4
- *
5
- * WHY THIS IS A MODULE OF ITS OWN. A TAB has no width; it advances the pen to
6
- * the next tab stop, so what it occupies depends on where the line currently
7
- * is. That makes "one TAB" a property of a CURSOR, and the same character was
8
- * being read three different ways in this package:
9
- *
10
- * - `ui/editor-navigation.ts` painted it at FOUR-column stops in the composer,
11
- * - `entries/UserEntry.tsx` handed the raw byte to `<Text>`, so the terminal
12
- * painted it at EIGHT-column stops in the transcript,
13
- * - `tools/terminal-output.ts` expanded it by UTF-16 code-unit count, so a
14
- * pasted `中文<TAB>X` table came out two columns short.
15
- *
16
- * A user who pastes a TAB-indented block or an Excel/Word table therefore saw
17
- * the draft and the sent message disagree about their own text. One function,
18
- * used by the composer AND by every renderer of stored text, is what makes the
19
- * "before send" and "after send" rows character-identical.
20
- *
21
- * `input/` is the wrong home for it: `cli/input` may depend on `node:stream`
22
- * and nothing else (`.claude-index/index.md`), and column arithmetic needs the
23
- * width table. `ui/` already owns that (`selection/selection.ts` uses
24
- * `string-width` for exactly this reason).
25
- *
26
- * Pure, React-free, Ink-free.
27
- */
28
- import stringWidth from 'string-width';
29
- /**
30
- * Tab stop width, matching every terminal's default.
31
- *
32
- * A COPY OF `tools/terminal-output.ts`'s number, on purpose and in the same
33
- * shape `composer-limits.ts` copies `budget.ts::HINT_MIN_ROWS`: importing the
34
- * tools module here would point an arrow from `ui/` into `tools/` for one
35
- * integer, and the two are asserted equal by a test instead. (`tools/` keeps
36
- * its own expander because its rows are clipped to 200 columns before anyone
37
- * looks at them, so a code-unit approximation there cannot reach a user.)
38
- */
39
- export const TAB_WIDTH = 8;
40
- /**
41
- * Expand every TAB in `text` to spaces up to the next `TAB_WIDTH` stop, given
42
- * the display column the first character will be painted at.
43
- *
44
- * `fromColumn` is a DISPLAY column, not an offset: a caller that has already
45
- * painted `中文` must pass 4. Lines are independent -- a `\n` resets the column
46
- * to zero, because the terminal's pen returns to column 0.
47
- *
48
- * Non-ASCII text is measured with `string-width`, which is the whole point: a
49
- * CJK glyph occupies two cells, and counting it as one space is what left
50
- * CJK-plus-TAB tables misaligned.
51
- */
52
- export function expandTabs(text, fromColumn = 0) {
53
- if (text.indexOf('\t') === -1)
54
- return text;
55
- let out = '';
56
- let column = Math.max(0, Math.floor(fromColumn));
57
- let run = '';
58
- for (const part of graphemesOf(text)) {
59
- if (part === '\t') {
60
- out += run;
61
- run = '';
62
- const width = TAB_WIDTH - (column % TAB_WIDTH);
63
- out += ' '.repeat(width);
64
- column += width;
65
- continue;
66
- }
67
- run += part;
68
- if (part === '\n')
69
- column = 0;
70
- else
71
- column += stringWidth(part);
72
- }
73
- return out + run;
74
- }
75
- const segmenter = new Intl.Segmenter(undefined, { granularity: 'grapheme' });
76
- /**
77
- * Grapheme clusters rather than code units, so a combining mark or an emoji ZWJ
78
- * sequence advances the column once, exactly as the terminal draws it.
79
- */
80
- function graphemesOf(text) {
81
- return Array.from(segmenter.segment(text), ({ segment }) => segment);
82
- }
@@ -1,55 +0,0 @@
1
- export interface EditorGrapheme {
2
- readonly text: string;
3
- readonly index: number;
4
- readonly end: number;
5
- }
6
- /** Segment text without changing its UTF-16 offsets or stored whitespace. */
7
- export declare function graphemes(text: string): EditorGrapheme[];
8
- /** Snap an arbitrary UTF-16 offset to a complete grapheme boundary. */
9
- export declare function snapGrapheme(text: string, cursor: number, right?: boolean): number;
10
- /** Move one complete grapheme, leaving the two buffer edges unchanged. */
11
- export declare function stepGrapheme(text: string, cursor: number, direction: 'left' | 'right'): number;
12
- /** Width of one grapheme (ASCII avoids the Unicode width-table lookup). */
13
- export declare function graphemeWidth(text: string): number;
14
- export interface VisualCell extends EditorGrapheme {
15
- readonly column: number;
16
- readonly width: number;
17
- }
18
- export interface VisualPosition {
19
- readonly index: number;
20
- readonly row: number;
21
- readonly column: number;
22
- }
23
- export interface EditorVisualMap {
24
- readonly rows: VisualCell[][];
25
- readonly positions: VisualPosition[];
26
- readonly cursor: VisualPosition;
27
- }
28
- /**
29
- * Map graphemes to hard-wrapped rows, sharing tab stops and caret reservation.
30
- *
31
- * THE TAB STOP IS THE TERMINAL'S (`TAB_WIDTH`), NOT AN EDITOR-SIZED FOUR. It
32
- * used to be four, while the transcript handed the raw `\t` to `<Text>` and
33
- * the terminal painted it at eight: the same pasted table sat one column off
34
- * from itself before and after sending. A tab that would cross the right edge
35
- * is still clipped to the row (the caret cannot point past the last cell), so
36
- * a tab STRADDLING the wrap is the one shape where the draft and the stored
37
- * text can differ by the remainder of the advance.
38
- */
39
- export declare function buildEditorVisualMap(input: {
40
- buffer: string;
41
- cols: number;
42
- cursor: number;
43
- active?: boolean;
44
- }): EditorVisualMap;
45
- /** Move to the closest boundary at or left of the preferred display column. */
46
- export declare function moveVisualCursor(input: {
47
- buffer: string;
48
- cursor: number;
49
- cols: number;
50
- direction: 'up' | 'down';
51
- preferredVisualColumn?: number;
52
- }): {
53
- cursor: number;
54
- preferredVisualColumn: number;
55
- } | null;
@@ -1,96 +0,0 @@
1
- /** Shared UTF-16 grapheme boundaries and terminal-cell layout for the editor. */
2
- import stringWidth from 'string-width';
3
- import { TAB_WIDTH } from './display-tab.js';
4
- const segmenter = new Intl.Segmenter(undefined, { granularity: 'grapheme' });
5
- /** Segment text without changing its UTF-16 offsets or stored whitespace. */
6
- export function graphemes(text) {
7
- return Array.from(segmenter.segment(text), ({ segment, index }) => ({
8
- text: segment, index, end: index + segment.length,
9
- }));
10
- }
11
- /** Snap an arbitrary UTF-16 offset to a complete grapheme boundary. */
12
- export function snapGrapheme(text, cursor, right = false) {
13
- const clamped = Math.max(0, Math.min(text.length, cursor));
14
- for (const part of segmenter.segment(text)) {
15
- const end = part.index + part.segment.length;
16
- if (clamped > part.index && clamped < end)
17
- return right ? end : part.index;
18
- if (part.index >= clamped)
19
- break;
20
- }
21
- return clamped;
22
- }
23
- /** Move one complete grapheme, leaving the two buffer edges unchanged. */
24
- export function stepGrapheme(text, cursor, direction) {
25
- if (direction === 'left')
26
- return snapGrapheme(text, Math.max(0, cursor - 1));
27
- return snapGrapheme(text, Math.min(text.length, cursor + 1), true);
28
- }
29
- /** Width of one grapheme (ASCII avoids the Unicode width-table lookup). */
30
- export function graphemeWidth(text) {
31
- if (text.length === 1 && text >= ' ' && text <= '~')
32
- return 1;
33
- return stringWidth(text);
34
- }
35
- /**
36
- * Map graphemes to hard-wrapped rows, sharing tab stops and caret reservation.
37
- *
38
- * THE TAB STOP IS THE TERMINAL'S (`TAB_WIDTH`), NOT AN EDITOR-SIZED FOUR. It
39
- * used to be four, while the transcript handed the raw `\t` to `<Text>` and
40
- * the terminal painted it at eight: the same pasted table sat one column off
41
- * from itself before and after sending. A tab that would cross the right edge
42
- * is still clipped to the row (the caret cannot point past the last cell), so
43
- * a tab STRADDLING the wrap is the one shape where the draft and the stored
44
- * text can differ by the remainder of the advance.
45
- */
46
- export function buildEditorVisualMap(input) {
47
- const cols = Math.max(1, Math.floor(input.cols));
48
- const cursor = snapGrapheme(input.buffer, input.cursor);
49
- const rows = [[]];
50
- const positions = [];
51
- let column = 0;
52
- const breakRow = () => { rows.push([]); column = 0; };
53
- const locate = (index) => {
54
- positions.push({ index, row: rows.length - 1, column });
55
- };
56
- for (const part of graphemes(input.buffer)) {
57
- if (part.text === '\n') {
58
- if (input.active !== false && part.index === cursor && column >= cols)
59
- breakRow();
60
- locate(part.index);
61
- breakRow();
62
- continue;
63
- }
64
- let width = part.text === '\t' ? Math.min(cols, TAB_WIDTH - column % TAB_WIDTH)
65
- : graphemeWidth(part.text);
66
- if (column > 0 && column + width > cols) {
67
- breakRow();
68
- if (part.text === '\t')
69
- width = Math.min(cols, TAB_WIDTH);
70
- }
71
- locate(part.index);
72
- rows[rows.length - 1].push({ ...part,
73
- text: part.text === '\t' ? ' '.repeat(width) : part.text, column, width });
74
- column += width;
75
- }
76
- if (input.active !== false && cursor === input.buffer.length && column >= cols)
77
- breakRow();
78
- locate(input.buffer.length);
79
- const caret = positions.find((position) => position.index === cursor);
80
- return { rows, positions, cursor: caret };
81
- }
82
- /** Move to the closest boundary at or left of the preferred display column. */
83
- export function moveVisualCursor(input) {
84
- const map = buildEditorVisualMap(input);
85
- const row = map.cursor.row + (input.direction === 'up' ? -1 : 1);
86
- if (row < 0 || row >= map.rows.length)
87
- return null;
88
- const preferredVisualColumn = input.preferredVisualColumn ?? map.cursor.column;
89
- const candidates = map.positions.filter((position) => position.row === row);
90
- let target = candidates[0];
91
- for (const position of candidates) {
92
- if (position.column <= preferredVisualColumn)
93
- target = position;
94
- }
95
- return target ? { cursor: target.index, preferredVisualColumn } : null;
96
- }
@@ -1,108 +0,0 @@
1
- /**
2
- * Composer editor state — F3 of tui-input-flicker-fix (§3.4).
3
- *
4
- * Ink creates its container with tag `0` — a LEGACY React root
5
- * (`ink/build/ink.js:59-61`). In a legacy root, `setState` called outside a
6
- * React event handler is NOT batched: each call schedules and immediately
7
- * flushes a synchronous render. `useInput`'s callback runs from a stdin
8
- * `'data'` listener, which is outside React entirely, so `PromptInput.insert`'s
9
- * five `setState` calls became five commits, five whole-tree Yoga layouts, and
10
- * — through Ink's 32 ms leading+trailing throttle — TWO full-frame repaints per
11
- * printable character (§2 R3). The flicker got worse the faster the user typed,
12
- * which is exactly what the report described.
13
- *
14
- * Collapsing the five always-together pieces of state into one reducer makes a
15
- * keystroke cost one commit. `fileMatches` deliberately stays a separate
16
- * `useState` in the component: it is written from the debounced async glob
17
- * effect, not from the key handler, so folding it in here would couple two
18
- * unrelated update sources.
19
- *
20
- * THE RULE A REVIEWER SHOULD CHECK LINE BY LINE: every branch of the `useInput`
21
- * callback performs at most ONE `dispatch` and then returns.
22
- *
23
- * Extracted from the component so it is unit-testable without mounting Ink.
24
- */
25
- import { type PasteRecord } from './paste-tokens.js';
26
- export interface EditorState {
27
- buffer: string;
28
- cursor: number;
29
- preferredVisualColumn?: number;
30
- historyIndex: number | null;
31
- dismissed: boolean;
32
- sel: number;
33
- /**
34
- * Payloads for the collapse tokens currently in `buffer`
35
- * (tui-paste-handling section 5.3).
36
- *
37
- * Pruned to `referencedIds(buffer)` on EVERY buffer-changing action and
38
- * emptied by `clear` (I-7). Without both, a payload outlives the draft that
39
- * referenced it, unbounded, for the whole session.
40
- */
41
- pastes: ReadonlyMap<number, PasteRecord>;
42
- }
43
- /**
44
- * One run of an `input` chunk that mixed typing and pasting.
45
- *
46
- * THE `id` IS ALLOCATED BY THE CALLER (P1-5). React may run a reducer more than
47
- * once for a single action -- eager evaluation in `dispatchSetState`, base-queue
48
- * replay after a bailout, StrictMode -- so a counter read and written inside one
49
- * would skip ids and produce two computed states differing in the token TEXT.
50
- * `PromptInput` calls `allocatePasteId()` while building these segments, and the
51
- * reducer stays a pure function of `(state, action)`.
52
- */
53
- export type InputSegment = {
54
- readonly kind: 'text';
55
- readonly text: string;
56
- } | {
57
- readonly kind: 'paste';
58
- readonly text: string;
59
- readonly id: number;
60
- };
61
- /**
62
- * A `type` and not an `interface` because it is a discriminated union — the one
63
- * documented exception to this package's interface-first convention.
64
- */
65
- export type EditorAction = {
66
- type: 'insert';
67
- text: string;
68
- } | {
69
- type: 'replace';
70
- buffer: string;
71
- cursor: number;
72
- } | {
73
- type: 'backspace';
74
- } | {
75
- type: 'delete';
76
- } | {
77
- type: 'moveCursor';
78
- cursor: number;
79
- preferredVisualColumn?: number;
80
- } | {
81
- type: 'recall';
82
- buffer: string;
83
- cursor: number;
84
- historyIndex: number | null;
85
- } | {
86
- type: 'select';
87
- sel: number;
88
- } | {
89
- type: 'dismiss';
90
- } | {
91
- type: 'clear';
92
- }
93
- /** Only local reducer-planned states may be adopted; prune token payloads again. */
94
- | {
95
- type: 'adopt';
96
- state: EditorState;
97
- }
98
- /**
99
- * ONE chunk of stdin, already split into ordered runs. The only new action,
100
- * and it is what keeps the one-dispatch-per-key rule true for a chunk that
101
- * carried both a paste and the keystrokes beside it.
102
- */
103
- | {
104
- type: 'input';
105
- segments: InputSegment[];
106
- };
107
- export declare const INITIAL_EDITOR_STATE: EditorState;
108
- export declare function editorReducer(state: EditorState, action: EditorAction): EditorState;