@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,118 +0,0 @@
1
- /**
2
- * Structural bounds for paste handling (tui-paste-handling D-10 / section 8).
3
- *
4
- * THESE ARE STRUCTURAL, NOT POLICY. The package convention recorded in
5
- * `.claude-index/index.md` is that `limits.ts` carries the numbers an
6
- * implementation needs to stay bounded, while `config/schema.ts` carries the
7
- * preferences a user is allowed to have. The only user-facing key this feature
8
- * adds is the boolean `paste`; a tunable collapse threshold is a preference
9
- * nobody has asked for, and a kill switch is what a bug report actually needs.
10
- *
11
- * The two framing constants below are the only bytes that cross from the stdin
12
- * filter into the composer, so they are load-bearing in a way a threshold is
13
- * not: see `PASTE_OPEN`.
14
- */
15
- /**
16
- * Ceiling on ONE paste. Above it the body is dropped and the user is told,
17
- * never truncated (D-11): a truncated paste loses data and looks like success.
18
- */
19
- export declare const PASTE_MAX_BYTES: number;
20
- /** Ceiling on every live payload in one draft, summed. Above it a paste is refused. */
21
- export declare const PASTE_DRAFT_MAX_BYTES: number;
22
- /** Ceiling on collapsed blocks in one draft. Above it a paste is refused. */
23
- export declare const PASTE_MAX_BLOCKS = 32;
24
- /**
25
- * Tier 2's single-line rule: a chunk of at least this many printable characters
26
- * with no line break is a paste.
27
- *
28
- * Safe because coalescing a keyboard burst into 25 characters inside one
29
- * event-loop turn needs roughly 1 500 WPM. It is a statement about what a
30
- * KEYBOARD can emit, not about what text looks like.
31
- */
32
- export declare const PASTE_MIN_BURST_CHARS = 25;
33
- /** Tier 2 coalescing window. Ordinary typing never opens it, so never pays it. */
34
- export declare const PASTE_BURST_MS = 15;
35
- /**
36
- * How long an unterminated Tier 1 body is held before it is force-flushed.
37
- *
38
- * I-4: an unterminated `\x1b[200~` must never be able to wedge keyboard input,
39
- * which is the rule `MAX_PENDING_MOUSE_CHARS` already encodes for mouse reports.
40
- */
41
- export declare const PASTE_ASSEMBLY_MAX_MS = 2000;
42
- /**
43
- * How long a paste-marker head that was ALREADY released to the pass-through as
44
- * ordinary text may still be recognised as the head of a marker (defect 2: the
45
- * torn-marker rescue in `stdin-filter.ts`).
46
- *
47
- * STRUCTURAL, NOT POLICY: no config key exposes it, because it bounds what the
48
- * byte stream can physically do -- a marker split across two reads -- and not
49
- * what a user prefers. What it does NOT do is delay a keystroke: the 12 ms
50
- * pending-flush window in `stdin-filter.ts` still releases a lone ESC exactly as
51
- * before, and this window only governs whether that release may be spliced back
52
- * in front of the next chunk so an assembled marker is consumed, not typed.
53
- *
54
- * THE FALSE POSITIVE IS THE TRADE-OFF, AND IT IS ACCEPTED. Firing the rescue
55
- * wrongly needs the user to press Esc and then TYPE the literal characters
56
- * `[200~` or `[201~` inside this window -- a sequence no keyboard produces, and
57
- * at worst five characters of lost typing. Paying that buys a fix for visible
58
- * `[200~` / `[201~` garbage in the draft, which is the failure the whole paste
59
- * feature exists to prevent.
60
- */
61
- export declare const PASTE_MARKER_RESCAN_TTL_MS = 250;
62
- /**
63
- * The inline frame the filter writes into the stream Ink reads (D-3 / I-5).
64
- *
65
- * ON THE SAME STREAM, NOT A SIDE CHANNEL. `wrapper.write(text)` is delivered
66
- * asynchronously; a synchronous side-channel emit would apply the paste BEFORE
67
- * text that preceded it in the same chunk. Framing preserves order by
68
- * construction.
69
- *
70
- * NUL is the delimiter because no terminal delivers it for any key, and because
71
- * `sanitisePaste` strips every NUL out of every payload -- so a payload can
72
- * never forge a frame boundary.
73
- */
74
- export declare const PASTE_OPEN = "\0[";
75
- export declare const PASTE_CLOSE = "\0]";
76
- /**
77
- * The inline frame that carries ONE newline intent from the stdin filter to the
78
- * composer (tui-shift-enter-copy-queue 3.2).
79
- *
80
- * SAME FAMILY AS `PASTE_OPEN`, with the same guarantee and for the same reason:
81
- * NUL is the delimiter because no terminal delivers it for any key, and because
82
- * `sanitisePaste` strips every NUL out of every payload -- so pasted text can
83
- * never forge this frame either. A newline intent is single, atomic and carries
84
- * no payload, so one constant replaces the OPEN/CLOSE pair.
85
- */
86
- export declare const ENTER_NEWLINE_FRAME = "\0n";
87
- /**
88
- * The inline frame that carries ONE "Ctrl+I was pressed" intent from the stdin
89
- * filter to `App` (project-indexer Ctrl+I trigger).
90
- *
91
- * WHY A FRAME AND NOT `key.ctrl && input === 'i'`. Legacy terminals encode
92
- * Ctrl+I as the same byte as Tab (0x09), so by the time the stream reaches Ink
93
- * the two are indistinguishable. Under win32-input-mode (`?9001h`) and kitty
94
- * CSI-u the modifiers ARE known at translation time, and both translators emit
95
- * this frame instead of the legacy Tab byte. Same NUL-delimiter guarantee as
96
- * `ENTER_NEWLINE_FRAME`: no terminal delivers NUL for a key and pasted text is
97
- * stripped of NUL, so a payload can never forge it. Terminals without keyboard
98
- * enhancement keep the legacy collapse — Ctrl+I there is Tab, documented in the
99
- * README keybindings table.
100
- */
101
- export declare const INDEX_KEY_FRAME = "\0i";
102
- /**
103
- * The one channel from the stdin filter to `App`'s notice dispatch (P1-3 / I-15).
104
- *
105
- * The filter is constructed in `cli.tsx` BEFORE `render()`, so it has no
106
- * `dispatch`. Its only other outlet is the logger, and a limit that writes only
107
- * to a log file is indistinguishable -- from the user's chair -- from a paste
108
- * that silently did nothing, which is exactly what D-11 exists to rule out.
109
- *
110
- * Same late-bound shape as `selectionBridge` / `updateBridge` / `terminalBridge`:
111
- * `cli.tsx` creates the object, `App` assigns `notify` on mount and clears it on
112
- * unmount, and the filter calls `bridge.notify?.(...)`.
113
- */
114
- export interface PasteBridge {
115
- notify: ((level: 'warn' | 'error', text: string) => void) | null;
116
- }
117
- /** Human-readable byte size for the refusal toast (`4.1 MB`, `812.0 KB`, `7 B`). */
118
- export declare function formatPasteSize(bytes: number): string;
@@ -1,109 +0,0 @@
1
- /**
2
- * Structural bounds for paste handling (tui-paste-handling D-10 / section 8).
3
- *
4
- * THESE ARE STRUCTURAL, NOT POLICY. The package convention recorded in
5
- * `.claude-index/index.md` is that `limits.ts` carries the numbers an
6
- * implementation needs to stay bounded, while `config/schema.ts` carries the
7
- * preferences a user is allowed to have. The only user-facing key this feature
8
- * adds is the boolean `paste`; a tunable collapse threshold is a preference
9
- * nobody has asked for, and a kill switch is what a bug report actually needs.
10
- *
11
- * The two framing constants below are the only bytes that cross from the stdin
12
- * filter into the composer, so they are load-bearing in a way a threshold is
13
- * not: see `PASTE_OPEN`.
14
- */
15
- /**
16
- * Ceiling on ONE paste. Above it the body is dropped and the user is told,
17
- * never truncated (D-11): a truncated paste loses data and looks like success.
18
- */
19
- export const PASTE_MAX_BYTES = 2 * 1024 * 1024;
20
- /** Ceiling on every live payload in one draft, summed. Above it a paste is refused. */
21
- export const PASTE_DRAFT_MAX_BYTES = 8 * 1024 * 1024;
22
- /** Ceiling on collapsed blocks in one draft. Above it a paste is refused. */
23
- export const PASTE_MAX_BLOCKS = 32;
24
- /**
25
- * Tier 2's single-line rule: a chunk of at least this many printable characters
26
- * with no line break is a paste.
27
- *
28
- * Safe because coalescing a keyboard burst into 25 characters inside one
29
- * event-loop turn needs roughly 1 500 WPM. It is a statement about what a
30
- * KEYBOARD can emit, not about what text looks like.
31
- */
32
- export const PASTE_MIN_BURST_CHARS = 25;
33
- /** Tier 2 coalescing window. Ordinary typing never opens it, so never pays it. */
34
- export const PASTE_BURST_MS = 15;
35
- /**
36
- * How long an unterminated Tier 1 body is held before it is force-flushed.
37
- *
38
- * I-4: an unterminated `\x1b[200~` must never be able to wedge keyboard input,
39
- * which is the rule `MAX_PENDING_MOUSE_CHARS` already encodes for mouse reports.
40
- */
41
- export const PASTE_ASSEMBLY_MAX_MS = 2_000;
42
- /**
43
- * How long a paste-marker head that was ALREADY released to the pass-through as
44
- * ordinary text may still be recognised as the head of a marker (defect 2: the
45
- * torn-marker rescue in `stdin-filter.ts`).
46
- *
47
- * STRUCTURAL, NOT POLICY: no config key exposes it, because it bounds what the
48
- * byte stream can physically do -- a marker split across two reads -- and not
49
- * what a user prefers. What it does NOT do is delay a keystroke: the 12 ms
50
- * pending-flush window in `stdin-filter.ts` still releases a lone ESC exactly as
51
- * before, and this window only governs whether that release may be spliced back
52
- * in front of the next chunk so an assembled marker is consumed, not typed.
53
- *
54
- * THE FALSE POSITIVE IS THE TRADE-OFF, AND IT IS ACCEPTED. Firing the rescue
55
- * wrongly needs the user to press Esc and then TYPE the literal characters
56
- * `[200~` or `[201~` inside this window -- a sequence no keyboard produces, and
57
- * at worst five characters of lost typing. Paying that buys a fix for visible
58
- * `[200~` / `[201~` garbage in the draft, which is the failure the whole paste
59
- * feature exists to prevent.
60
- */
61
- export const PASTE_MARKER_RESCAN_TTL_MS = 250;
62
- /**
63
- * The inline frame the filter writes into the stream Ink reads (D-3 / I-5).
64
- *
65
- * ON THE SAME STREAM, NOT A SIDE CHANNEL. `wrapper.write(text)` is delivered
66
- * asynchronously; a synchronous side-channel emit would apply the paste BEFORE
67
- * text that preceded it in the same chunk. Framing preserves order by
68
- * construction.
69
- *
70
- * NUL is the delimiter because no terminal delivers it for any key, and because
71
- * `sanitisePaste` strips every NUL out of every payload -- so a payload can
72
- * never forge a frame boundary.
73
- */
74
- export const PASTE_OPEN = '\u0000[';
75
- export const PASTE_CLOSE = '\u0000]';
76
- /**
77
- * The inline frame that carries ONE newline intent from the stdin filter to the
78
- * composer (tui-shift-enter-copy-queue 3.2).
79
- *
80
- * SAME FAMILY AS `PASTE_OPEN`, with the same guarantee and for the same reason:
81
- * NUL is the delimiter because no terminal delivers it for any key, and because
82
- * `sanitisePaste` strips every NUL out of every payload -- so pasted text can
83
- * never forge this frame either. A newline intent is single, atomic and carries
84
- * no payload, so one constant replaces the OPEN/CLOSE pair.
85
- */
86
- export const ENTER_NEWLINE_FRAME = '\u0000n';
87
- /**
88
- * The inline frame that carries ONE "Ctrl+I was pressed" intent from the stdin
89
- * filter to `App` (project-indexer Ctrl+I trigger).
90
- *
91
- * WHY A FRAME AND NOT `key.ctrl && input === 'i'`. Legacy terminals encode
92
- * Ctrl+I as the same byte as Tab (0x09), so by the time the stream reaches Ink
93
- * the two are indistinguishable. Under win32-input-mode (`?9001h`) and kitty
94
- * CSI-u the modifiers ARE known at translation time, and both translators emit
95
- * this frame instead of the legacy Tab byte. Same NUL-delimiter guarantee as
96
- * `ENTER_NEWLINE_FRAME`: no terminal delivers NUL for a key and pasted text is
97
- * stripped of NUL, so a payload can never forge it. Terminals without keyboard
98
- * enhancement keep the legacy collapse — Ctrl+I there is Tab, documented in the
99
- * README keybindings table.
100
- */
101
- export const INDEX_KEY_FRAME = '\u0000i';
102
- /** Human-readable byte size for the refusal toast (`4.1 MB`, `812.0 KB`, `7 B`). */
103
- export function formatPasteSize(bytes) {
104
- if (bytes >= 1024 * 1024)
105
- return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
106
- if (bytes >= 1024)
107
- return `${(bytes / 1024).toFixed(1)} KB`;
108
- return `${bytes} B`;
109
- }
@@ -1,87 +0,0 @@
1
- /**
2
- * Mouse-report parser (mouse-wheel-region-routing §5.1) — pure, stream-free.
3
- *
4
- * The alternate screen has no native scrollback, so every modern terminal turns
5
- * on DEC private mode 1007 (*alternate scroll*) and translates each wheel notch
6
- * into a burst of arrow keys. Arrow keys carry NO POINTER POSITION, which is
7
- * why region routing is impossible from that channel and why the CLI asks for
8
- * real SGR mouse reporting instead (`\x1b[?1000h\x1b[?1006h`).
9
- *
10
- * Asking for it is only half the job. Ink 5.2.1 has no mouse branch at all:
11
- * `parse-keypress.js` fails to match `\x1b[<64;40;12M`, `use-input.js` strips
12
- * the leading ESC, and `PromptInput`'s `isControlSeq` guard passes the
13
- * remainder (`[` is 0x5B, >= 0x20) straight into `insert()`. So an unfiltered
14
- * mouse report is not ignored — it is TYPED INTO THE USER'S MESSAGE. This
15
- * module exists so `stdin-mouse-filter.ts` can remove every byte of every
16
- * report before Ink ever sees the chunk (invariant I-1).
17
- *
18
- * Every mouse report is CONSUMED here whatever it turns out to be; what changed
19
- * with tui-selection-and-scroll-follow is that press / drag / release are now
20
- * EMITTED as well as consumed, so `SelectionController` can build a selection
21
- * out of them (§4.4.2). They were previously recognized and thrown away.
22
- */
23
- export interface WheelEvent {
24
- readonly kind: 'wheel';
25
- readonly dir: 'up' | 'down';
26
- /** 1-based terminal column, as reported. */
27
- readonly x: number;
28
- /** 1-based terminal row, as reported. */
29
- readonly y: number;
30
- readonly shift: boolean;
31
- readonly alt: boolean;
32
- readonly ctrl: boolean;
33
- }
34
- export interface ButtonEvent {
35
- readonly kind: 'press' | 'drag' | 'release';
36
- /** 0 = left, 1 = middle, 2 = right. Never 3 — see `decodeReport`. */
37
- readonly button: 0 | 1 | 2;
38
- /** 1-based terminal column, as reported. */
39
- readonly x: number;
40
- /** 1-based terminal row, as reported. */
41
- readonly y: number;
42
- readonly shift: boolean;
43
- readonly alt: boolean;
44
- readonly ctrl: boolean;
45
- }
46
- export type MouseEvent = WheelEvent | ButtonEvent;
47
- export interface MouseSplit {
48
- /** Mouse events, in arrival order. Unrecognized reports are dropped, not returned. */
49
- readonly events: MouseEvent[];
50
- /** Everything that was not a mouse report — forward this to Ink verbatim. */
51
- readonly text: string;
52
- /** Trailing strict prefix of a possible report; feed it back in with the next chunk. */
53
- readonly pending: string;
54
- }
55
- /**
56
- * Which wire encoding a report arrived in. It is a PARAMETER rather than a
57
- * remembered rule because the rule it expresses is invariant I-11 and the cost
58
- * of forgetting it is a permanently frozen viewport (see `decodeReport`).
59
- */
60
- export type MouseEncoding = 'sgr' | 'x10';
61
- /**
62
- * Ceiling on the held-back tail. A malformed sequence that looks like a prefix
63
- * forever must never be able to wedge input: past this length the tail is
64
- * flushed as ordinary text and parsing resumes from the next byte.
65
- */
66
- export declare const MAX_PENDING_MOUSE_CHARS = 32;
67
- /**
68
- * True when `s` is a PROPER prefix of a possible mouse report (never a full
69
- * one). Nothing a keyboard produces matches beyond `\x1b` and `\x1b[`, which is
70
- * why the filter's flush timer is a rare path rather than a latency tax on
71
- * typing: ordinary text and pasted blocks contain no `\x1b[<`.
72
- */
73
- export declare function isMousePrefix(s: string): boolean;
74
- /**
75
- * Split a decoded stdin chunk into mouse events, passthrough text, and a
76
- * trailing prefix to carry into the next chunk.
77
- *
78
- * The caller is expected to feed `pending + nextChunk` back in; ConPTY does
79
- * split writes mid-sequence, and a report torn across two chunks would
80
- * otherwise leak its tail into the composer (R-6).
81
- *
82
- * ONE CHANNEL, NOT TWO (§4.4.2). Widening this list to carry buttons alongside
83
- * wheel notches is what keeps ARRIVAL ORDER intact between them; a second
84
- * channel would let a press overtake the notch that preceded it, and the
85
- * selection would then be anchored against rows that had already scrolled.
86
- */
87
- export declare function splitMouseEvents(buffer: string): MouseSplit;
@@ -1,212 +0,0 @@
1
- /**
2
- * Mouse-report parser (mouse-wheel-region-routing §5.1) — pure, stream-free.
3
- *
4
- * The alternate screen has no native scrollback, so every modern terminal turns
5
- * on DEC private mode 1007 (*alternate scroll*) and translates each wheel notch
6
- * into a burst of arrow keys. Arrow keys carry NO POINTER POSITION, which is
7
- * why region routing is impossible from that channel and why the CLI asks for
8
- * real SGR mouse reporting instead (`\x1b[?1000h\x1b[?1006h`).
9
- *
10
- * Asking for it is only half the job. Ink 5.2.1 has no mouse branch at all:
11
- * `parse-keypress.js` fails to match `\x1b[<64;40;12M`, `use-input.js` strips
12
- * the leading ESC, and `PromptInput`'s `isControlSeq` guard passes the
13
- * remainder (`[` is 0x5B, >= 0x20) straight into `insert()`. So an unfiltered
14
- * mouse report is not ignored — it is TYPED INTO THE USER'S MESSAGE. This
15
- * module exists so `stdin-mouse-filter.ts` can remove every byte of every
16
- * report before Ink ever sees the chunk (invariant I-1).
17
- *
18
- * Every mouse report is CONSUMED here whatever it turns out to be; what changed
19
- * with tui-selection-and-scroll-follow is that press / drag / release are now
20
- * EMITTED as well as consumed, so `SelectionController` can build a selection
21
- * out of them (§4.4.2). They were previously recognized and thrown away.
22
- */
23
- /**
24
- * Ceiling on the held-back tail. A malformed sequence that looks like a prefix
25
- * forever must never be able to wedge input: past this length the tail is
26
- * flushed as ordinary text and parsing resumes from the next byte.
27
- */
28
- export const MAX_PENDING_MOUSE_CHARS = 32;
29
- const ESC = '\x1b';
30
- /** `\x1b[<b;x;yM` (press) or `…m` (release) — the only form we request. */
31
- const SGR_REPORT = /^\x1b\[<(\d+);(\d+);(\d+)([Mm])/;
32
- /** A strict prefix of an SGR report: `\x1b[<` plus digits and semicolons. */
33
- const SGR_PREFIX = /^\x1b\[<[\d;]*$/;
34
- /**
35
- * True when `s` is a PROPER prefix of a possible mouse report (never a full
36
- * one). Nothing a keyboard produces matches beyond `\x1b` and `\x1b[`, which is
37
- * why the filter's flush timer is a rare path rather than a latency tax on
38
- * typing: ordinary text and pasted blocks contain no `\x1b[<`.
39
- */
40
- export function isMousePrefix(s) {
41
- return /^\x1B(\[(<[\d;]*|M[\s\S]{0,2})?)?$/.test(s);
42
- }
43
- function modifiers(b) {
44
- return { shift: (b & 4) !== 0, alt: (b & 8) !== 0, ctrl: (b & 16) !== 0 };
45
- }
46
- /**
47
- * Decode one report, or `null` when it is a report we consume without acting on.
48
- *
49
- * THE ORDER OF THESE TESTS IS THE SPECIFICATION, not a presentation choice.
50
- * Button 66 (wheel-left) has `b & 1 === 0` and would decode as `'up'`, so the
51
- * horizontal test has to precede the direction decode; and `b & 32` (motion) has
52
- * to precede the `final` test, because a drag is reported with `M` exactly as a
53
- * press is.
54
- *
55
- * ═══════════════════════════════════════════════════════════════════════════
56
- * I-11 — BUTTON EVENTS COME FROM THE SGR PATH ONLY. X10 stays wheel-only, which
57
- * is exactly the contract it has today.
58
- *
59
- * `matchX10` reconstructs a legacy report and hard-codes `final = 'M'`, because
60
- * X10 HAS NO SEPARATE RELEASE FORM AT ALL — it encodes a release as button 3 of
61
- * a press. Fed through the table below, an X10 release would become a `press`
62
- * that is never followed by a `release`, whose `button` is 3 while the type says
63
- * `0 | 1 | 2`, and whose consequence is a `hold` that is set and never cleared:
64
- * content anchoring never lets go, the resume timer's third condition never
65
- * passes, and the transcript is frozen for the rest of the session with nothing
66
- * raised anywhere.
67
- *
68
- * This costs nothing real (D-16): we never REQUEST X10 — `?1006h` is over a
69
- * decade old and every terminal that implements `?1000` implements it — and a
70
- * terminal that ignored the SGR request also has no usable drag coordinates past
71
- * column 223 (R-2). X10 exists in this parser only so a stray report cannot
72
- * reach the user's draft.
73
- * ═══════════════════════════════════════════════════════════════════════════
74
- */
75
- function decodeReport(b, x, y, final, encoding) {
76
- // 1. Wheel. Buttons 64-67 in both encodings.
77
- if ((b & 64) !== 0) {
78
- // Horizontal wheel (66 = left, 67 = right). Consumed and dropped (non-goal).
79
- if ((b & 3) >= 2)
80
- return null;
81
- // Wheel buttons are press-only; a terminal that ever sent a release for one
82
- // must not produce a second step for the same physical notch.
83
- if (final !== 'M')
84
- return null;
85
- return { kind: 'wheel', dir: (b & 1) === 1 ? 'down' : 'up', x, y, ...modifiers(b) };
86
- }
87
- if (encoding !== 'sgr')
88
- return null; // I-11
89
- // 2. Motion while a button is held (`?1002h`). `3` is "no button", which
90
- // `?1002` should never send and `?1003` sends constantly — dropping it is
91
- // what keeps an any-event terminal from painting a selection with no button
92
- // down at all.
93
- if ((b & 32) !== 0) {
94
- const button = b & 3;
95
- if (button === 3)
96
- return null;
97
- return { kind: 'drag', button: button, x, y, ...modifiers(b) };
98
- }
99
- // 3. Release. In SGR the final byte carries the transition, so this is
100
- // unambiguous — unlike X10, which is why step 1's guard exists.
101
- //
102
- // A release whose button field reads `3` is a terminal saying "some button
103
- // came up" without naming it. It is mapped to button 0 rather than dropped:
104
- // the ONE thing a release must always do is let go of `hold`, and dropping
105
- // it would leave the viewport frozen — the exact failure I-11 is about. A
106
- // spurious button-0 release is harmless, because a selection can only exist
107
- // if button 0 was pressed in the first place.
108
- if (final === 'm') {
109
- const button = b & 3;
110
- return { kind: 'release', button: (button === 3 ? 0 : button), x, y, ...modifiers(b) };
111
- }
112
- // 4. Press.
113
- const button = b & 3;
114
- if (button === 3)
115
- return null;
116
- return { kind: 'press', button: button, x, y, ...modifiers(b) };
117
- }
118
- /**
119
- * X10 legacy reports (`\x1b[M` + three chars, each `code - 32`).
120
- *
121
- * We never request this encoding — `?1006h` is over a decade old and every
122
- * terminal that implements `?1000` implements it — but a terminal that ignored
123
- * the SGR request would fall back to it, and a leaked `\x1b[M` + garbage is
124
- * exactly the draft corruption I-1 exists to prevent. So it is consumed
125
- * unconditionally; the coordinates are only trusted when all three bytes are
126
- * plausible, because `setEncoding('utf8')` mangles raw bytes above 0x7F.
127
- */
128
- function matchX10(s) {
129
- if (s.length < 6)
130
- return { kind: 'partial' };
131
- const codes = [s.charCodeAt(3), s.charCodeAt(4), s.charCodeAt(5)];
132
- if (codes.some((c) => c < 32 || c > 255))
133
- return { kind: 'complete', length: 6, event: null };
134
- const [b, x, y] = codes;
135
- return {
136
- kind: 'complete',
137
- length: 6,
138
- // `'x10'` is what makes I-11 a property of the code rather than of somebody's
139
- // memory: this encoding yields wheel events or nothing, ever.
140
- event: decodeReport(b - 32, x - 32, y - 32, 'M', 'x10'),
141
- };
142
- }
143
- /** Classify the escape sequence starting at `s[0] === ESC`. */
144
- function matchReport(s) {
145
- if (s.length === 1)
146
- return { kind: 'partial' }; // lone ESC so far
147
- if (s[1] !== '[')
148
- return { kind: 'none' };
149
- if (s.length === 2)
150
- return { kind: 'partial' }; // `\x1b[`
151
- if (s[2] === '<') {
152
- const m = SGR_REPORT.exec(s);
153
- if (m) {
154
- const b = Number(m[1]);
155
- const x = Number(m[2]);
156
- const y = Number(m[3]);
157
- return { kind: 'complete', length: m[0].length, event: decodeReport(b, x, y, m[4], 'sgr') };
158
- }
159
- return SGR_PREFIX.test(s) ? { kind: 'partial' } : { kind: 'none' };
160
- }
161
- if (s[2] === 'M')
162
- return matchX10(s);
163
- return { kind: 'none' };
164
- }
165
- /**
166
- * Split a decoded stdin chunk into mouse events, passthrough text, and a
167
- * trailing prefix to carry into the next chunk.
168
- *
169
- * The caller is expected to feed `pending + nextChunk` back in; ConPTY does
170
- * split writes mid-sequence, and a report torn across two chunks would
171
- * otherwise leak its tail into the composer (R-6).
172
- *
173
- * ONE CHANNEL, NOT TWO (§4.4.2). Widening this list to carry buttons alongside
174
- * wheel notches is what keeps ARRIVAL ORDER intact between them; a second
175
- * channel would let a press overtake the notch that preceded it, and the
176
- * selection would then be anchored against rows that had already scrolled.
177
- */
178
- export function splitMouseEvents(buffer) {
179
- const events = [];
180
- let text = '';
181
- let i = 0;
182
- while (i < buffer.length) {
183
- const esc = buffer.indexOf(ESC, i);
184
- if (esc === -1) {
185
- text += buffer.slice(i);
186
- return { events, text, pending: '' };
187
- }
188
- text += buffer.slice(i, esc);
189
- const rest = buffer.slice(esc);
190
- const m = matchReport(rest);
191
- if (m.kind === 'complete') {
192
- if (m.event)
193
- events.push(m.event);
194
- i = esc + m.length;
195
- continue;
196
- }
197
- if (m.kind === 'partial') {
198
- // A tail that never resolves must not hold input hostage: past the
199
- // ceiling it is ordinary text, and parsing continues after the ESC.
200
- if (rest.length > MAX_PENDING_MOUSE_CHARS) {
201
- text += rest;
202
- return { events, text, pending: '' };
203
- }
204
- return { events, text, pending: rest };
205
- }
206
- // Not a mouse report — an arrow key, a paste, anything. Emit the ESC and
207
- // resume scanning after it so the rest of the sequence reaches Ink intact.
208
- text += ESC;
209
- i = esc + 1;
210
- }
211
- return { events, text, pending: '' };
212
- }
@@ -1,83 +0,0 @@
1
- /**
2
- * Paste recognition primitives (tui-paste-handling section 5.1) -- pure,
3
- * stream-free, no timers.
4
- *
5
- * WHY THIS LIVES BELOW INK. `ink/build/components/App.js:131-138` reads stdin on
6
- * `'readable'` and emits each chunk as one `'input'` event;
7
- * `parse-keypress.js:145-148` maps the exact string `'\r'` to `name: 'return'`,
8
- * which `PromptInput` reads as "send the message". A 15-line paste on a Windows
9
- * console routinely arrives as a dozen chunks that are exactly `"\r"`, and each
10
- * one SUBMITS THE DRAFT AS IT STOOD. No component-level heuristic can undo a
11
- * `key.return` that has already fired, so recognition has to happen on the byte
12
- * stream, in front of Ink -- the same lesson `mouse-events.ts` records.
13
- *
14
- * Two tiers feed one framing (D-4). Tier 1 is bracketed paste and is exact;
15
- * Tier 2 is a heuristic on chunk SHAPE for the terminals that ignore
16
- * `DECSET 2004`. Both are about what a keyboard can physically emit.
17
- */
18
- /** `DECSET 2004` wraps a paste in these two markers. */
19
- export declare const PASTE_BEGIN_MARK = "\u001B[200~";
20
- export declare const PASTE_END_MARK = "\u001B[201~";
21
- /** The longest tail worth holding back while a marker might still complete. */
22
- export declare const PASTE_MARK_LENGTH: number;
23
- /**
24
- * True when `s` is a PROPER prefix of either paste marker (never a whole one).
25
- *
26
- * Both markers are held, in every mode, whether or not THIS process enabled DEC
27
- * 2004 (I-16): the user's shell, `tmux` or a wrapper script may have left it on,
28
- * and an unconsumed marker is a literal `[200~` typed into the draft -- the
29
- * exact failure the feature exists to prevent.
30
- */
31
- export declare function isPastePrefix(s: string): boolean;
32
- /**
33
- * Length of the trailing run of `text` that is a proper prefix of a paste
34
- * marker, or 0. Shortest match wins, so only the bytes that could still become a
35
- * marker are held back.
36
- */
37
- export declare function trailingPastePrefixLength(text: string): number;
38
- /**
39
- * Tier 2: is this chunk a paste, or keystrokes?
40
- *
41
- * The PRIMARY rule -- "longer than one character AND contains a line break" --
42
- * is exactly the shape defect A needs, so the two coincide: any chunk that could
43
- * submit the draft by accident is classified as a paste. A lone `\r` is the
44
- * Enter key and stays `'keys'`.
45
- *
46
- * The SECONDARY rule needs `PASTE_MIN_BURST_CHARS` printable characters in one
47
- * chunk. It excludes chunks carrying any C0 byte but TAB, which is what keeps an
48
- * arrow-key burst (`\x1b[B\x1b[B...`, and every wheel notch translated by
49
- * alternate scroll) out of the paste path.
50
- */
51
- export declare function classifyChunk(text: string, minBurstChars?: number): 'paste' | 'keys';
52
- /**
53
- * Make a payload safe to put in a buffer and draw through `<Text>` (G2).
54
- *
55
- * 1. CRLF and lone CR both become exactly ONE `\n` -- terminals send CR for a
56
- * newline in pasted text, and a lone LF is dropped by Ink's key parser
57
- * entirely, so both have to be normalised here or a pasted line break either
58
- * submits the message or silently vanishes.
59
- * 2. Every escape SEQUENCE is removed AS A SEQUENCE (`stripControlSequences`).
60
- * Deleting only the introducer byte is what produced the reported defect:
61
- * `ESC [ 3 8 ; 2 ; 1 8 ; 5 2 ; 8 6 m` minus its ESC is `[38;2;18;52;86m`,
62
- * a run of digits Ink then writes to the terminal as ordinary text -- and it
63
- * reached the model, the prompt history and the session file too, because
64
- * this function is the only cleaning the payload ever gets.
65
- * 3. Every remaining C0 byte except `\n` and `\t` is removed. Ink writes
66
- * `<Text>` children to the terminal without escaping anything, so a
67
- * surviving `\r` overwrites the row it is drawn on and a surviving `ESC`
68
- * repaints the frame colours. Sequences are gone by this point, so what is
69
- * left for this step is a stray byte, never half of one.
70
- * 4. DEL and every C1 byte (U+0080..U+009F) go too, and that is NOT padding:
71
- * U+009B is the single-byte CSI and U+0085 is NEL, and a terminal that
72
- * decodes them acts on them exactly as it acts on `ESC [`. A file pasted out
73
- * of a non-UTF-8 editor walks straight through a "strip C0" rule.
74
- * 5. TAB is KEPT. Indentation is content, and it is what the model receives.
75
- * Expanding it is the RENDERERS' job (`ui/display-tab.ts`), so the model
76
- * keeps the original indentation while the screen, the composer and the
77
- * terminal all agree on what column a TAB lands on.
78
- *
79
- * Applied to PAYLOAD ONLY, never to keystrokes, so `Ctrl+A` and Escape keep
80
- * working. Non-ASCII text (CJK, emoji) is untouched. Idempotent, so the
81
- * second pass in `ui/paste-frames.ts` stays a byte-identical no-op.
82
- */
83
- export declare function sanitisePaste(raw: string): string;