@aragon-agent/cli 0.6.46 → 0.6.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (775) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +80 -12
  3. package/dist/agent/coalesce.d.ts +5 -1
  4. package/dist/agent/coalesce.js +13 -0
  5. package/dist/agent/controller.d.ts +41 -20
  6. package/dist/agent/controller.js +68 -15
  7. package/dist/agent/conversation-reset.d.ts +1 -1
  8. package/dist/agent/governance-wiring.d.ts +6 -6
  9. package/dist/agent/governance-wiring.js +4 -4
  10. package/dist/agent/headless.d.ts +5 -5
  11. package/dist/agent/headless.js +4 -4
  12. package/dist/agent/job-notices.d.ts +1 -1
  13. package/dist/agent/job-notices.js +1 -1
  14. package/dist/agent/kit-apply.d.ts +3 -3
  15. package/dist/agent/kit-apply.js +3 -3
  16. package/dist/agent/model-profile-settings.d.ts +2 -2
  17. package/dist/agent/model-profile-settings.js +6 -6
  18. package/dist/agent/prompt-options.d.ts +1 -1
  19. package/dist/agent/system-prompt.d.ts +1 -1
  20. package/dist/agent/user-attention.d.ts +17 -0
  21. package/dist/agent/user-attention.js +32 -0
  22. package/dist/{ui → app}/App.d.ts +9 -9
  23. package/dist/{ui → app}/App.js +113 -79
  24. package/dist/{ui → app}/use-startup-notices.d.ts +1 -1
  25. package/dist/{ui → app}/use-startup-notices.js +2 -2
  26. package/dist/cli.js +31 -32
  27. package/dist/commands/agents-command.js +1 -1
  28. package/dist/commands/builtins.js +9 -9
  29. package/dist/commands/governance-command.js +2 -2
  30. package/dist/commands/governance-runs-table.js +1 -1
  31. package/dist/commands/kit-command.js +1 -1
  32. package/dist/commands/perf.d.ts +3 -3
  33. package/dist/commands/perf.js +1 -1
  34. package/dist/commands/registry.d.ts +8 -8
  35. package/dist/commands/skills.js +2 -2
  36. package/dist/commands/team-command.js +1 -1
  37. package/dist/compaction/archive.d.ts +1 -1
  38. package/dist/compaction/archive.js +1 -1
  39. package/dist/compaction/child.d.ts +3 -3
  40. package/dist/compaction/child.js +4 -4
  41. package/dist/compaction/command.js +5 -5
  42. package/dist/compaction/compactor.d.ts +6 -6
  43. package/dist/compaction/compactor.js +6 -6
  44. package/dist/compaction/context-command.js +1 -1
  45. package/dist/compaction/digest.js +1 -1
  46. package/dist/compaction/memory-input.js +1 -1
  47. package/dist/compaction/memory-validation.js +1 -1
  48. package/dist/compaction/memory.js +1 -1
  49. package/dist/compaction/summarize-call.js +1 -1
  50. package/dist/compaction/summary-prompt.js +1 -1
  51. package/dist/compaction/tail-budget.js +2 -2
  52. package/dist/compaction/wiring.d.ts +5 -5
  53. package/dist/compaction/wiring.js +2 -2
  54. package/dist/config/cli-commands.d.ts +1 -1
  55. package/dist/config/cli-commands.js +3 -3
  56. package/dist/config/env.d.ts +1 -1
  57. package/dist/config/env.js +4 -4
  58. package/dist/config/load.d.ts +2 -2
  59. package/dist/config/load.js +10 -31
  60. package/dist/config/migrate-state-out-of-config.js +1 -1
  61. package/dist/config/model-profile-store.d.ts +4 -54
  62. package/dist/config/model-profile-store.js +3 -3
  63. package/dist/config/prompt-history.js +1 -1
  64. package/dist/config/store.d.ts +2 -2
  65. package/dist/config/store.js +3 -3
  66. package/dist/diagnostics/doctor.js +4 -4
  67. package/dist/exec/bridge/decisions.d.ts +1 -1
  68. package/dist/exec/bridge/human-answers.d.ts +1 -1
  69. package/dist/exec/bridge/human-answers.js +1 -1
  70. package/dist/exec/bridge/protocol.d.ts +1 -1
  71. package/dist/exec/bridge/server.js +1 -1
  72. package/dist/exec/events.d.ts +2 -2
  73. package/dist/exec/index.d.ts +1 -1
  74. package/dist/exec/index.js +1 -1
  75. package/dist/exec/permission.js +1 -1
  76. package/dist/exec/runner.d.ts +3 -3
  77. package/dist/exec/runner.js +2 -2
  78. package/dist/exec/threads/runtime.js +1 -1
  79. package/dist/fast/digest.d.ts +1 -1
  80. package/dist/fast/digest.js +1 -1
  81. package/dist/fast/frames.d.ts +1 -1
  82. package/dist/fast/frames.js +1 -1
  83. package/dist/fast/prompt.d.ts +1 -1
  84. package/dist/fast/prompt.js +1 -1
  85. package/dist/fast/review-call.js +1 -1
  86. package/dist/fast/reviewer.d.ts +3 -3
  87. package/dist/fast/reviewer.js +1 -1
  88. package/dist/fast/summary-call.d.ts +3 -3
  89. package/dist/fast/summary-call.js +2 -2
  90. package/dist/fast/summary-prompt.d.ts +1 -1
  91. package/dist/fast/summary-prompt.js +1 -1
  92. package/dist/fast/wiring.d.ts +4 -4
  93. package/dist/fast/wiring.js +1 -1
  94. package/dist/governance/card-normalize.d.ts +1 -1
  95. package/dist/governance/copy.d.ts +1 -1
  96. package/dist/governance/copy.js +2 -2
  97. package/dist/governance/engine/artifact-persist.d.ts +1 -1
  98. package/dist/governance/engine/budget.d.ts +1 -1
  99. package/dist/governance/engine/budget.js +1 -1
  100. package/dist/governance/engine/cards.d.ts +1 -1
  101. package/dist/governance/engine/digest.js +1 -1
  102. package/dist/governance/engine/engine-core.d.ts +5 -5
  103. package/dist/governance/engine/engine-core.js +1 -1
  104. package/dist/governance/engine/engine.d.ts +1 -1
  105. package/dist/governance/engine/engine.js +1 -1
  106. package/dist/governance/engine/estimate.d.ts +1 -1
  107. package/dist/governance/engine/estimate.js +1 -1
  108. package/dist/governance/engine/inspector.js +2 -2
  109. package/dist/governance/engine/integration.d.ts +1 -1
  110. package/dist/governance/engine/lifecycle.d.ts +1 -1
  111. package/dist/governance/engine/lifecycle.js +1 -1
  112. package/dist/governance/engine/phase-members.d.ts +1 -1
  113. package/dist/governance/engine/phase-planner.d.ts +1 -1
  114. package/dist/governance/engine/phase-planner.js +1 -1
  115. package/dist/governance/engine/rebuild.d.ts +1 -1
  116. package/dist/governance/engine/report.d.ts +1 -1
  117. package/dist/governance/engine/report.js +1 -1
  118. package/dist/governance/engine/run-digest.d.ts +1 -1
  119. package/dist/governance/engine/spec-builder.d.ts +2 -2
  120. package/dist/governance/engine/spec-builder.js +2 -2
  121. package/dist/governance/engine/stage-runner.js +2 -2
  122. package/dist/governance/engine/start-input.d.ts +1 -1
  123. package/dist/governance/engine/start-input.js +1 -1
  124. package/dist/governance/engine/state-machine.d.ts +1 -1
  125. package/dist/governance/engine/state-machine.js +3 -3
  126. package/dist/governance/engine/submission-queries.d.ts +1 -1
  127. package/dist/governance/engine/submission-render.d.ts +1 -1
  128. package/dist/governance/engine/submissions.d.ts +1 -1
  129. package/dist/governance/engine/submissions.js +1 -1
  130. package/dist/governance/engine/visibility.d.ts +1 -1
  131. package/dist/governance/engine/visibility.js +1 -1
  132. package/dist/governance/posture-transition.d.ts +2 -2
  133. package/dist/governance/posture-transition.js +1 -1
  134. package/dist/governance/profiles.d.ts +1 -1
  135. package/dist/governance/prompts/orchestrator-block.d.ts +2 -2
  136. package/dist/governance/prompts/orchestrator-block.js +2 -2
  137. package/dist/governance/prompts/plan-addendum.d.ts +1 -1
  138. package/dist/governance/prompts/plan-addendum.js +1 -1
  139. package/dist/governance/prompts/role-blocks.d.ts +2 -2
  140. package/dist/governance/prompts/role-blocks.js +1 -1
  141. package/dist/governance/report-reader.js +1 -1
  142. package/dist/governance/roles.d.ts +1 -1
  143. package/dist/governance/rules/claims.d.ts +1 -1
  144. package/dist/governance/rules/claims.js +1 -1
  145. package/dist/governance/rules/elimination.d.ts +1 -1
  146. package/dist/governance/rules/elimination.js +1 -1
  147. package/dist/governance/rules/failure-analysis.d.ts +2 -2
  148. package/dist/governance/rules/failure-analysis.js +1 -1
  149. package/dist/governance/rules/ledger-replay.d.ts +1 -1
  150. package/dist/governance/rules/ledger-state.d.ts +1 -1
  151. package/dist/governance/rules/ledger-state.js +1 -1
  152. package/dist/governance/rules/ledger.d.ts +2 -2
  153. package/dist/governance/rules/ledger.js +2 -2
  154. package/dist/governance/rules/rca.d.ts +1 -1
  155. package/dist/governance/rules/rca.js +1 -1
  156. package/dist/governance/rules/settlement.d.ts +2 -2
  157. package/dist/governance/rules/settlement.js +2 -2
  158. package/dist/governance/rules/suspicion.d.ts +1 -1
  159. package/dist/governance/store/artifacts.d.ts +1 -1
  160. package/dist/governance/store/artifacts.js +1 -1
  161. package/dist/governance/store/events-log.d.ts +1 -1
  162. package/dist/governance/store/run-store.d.ts +1 -1
  163. package/dist/governance/store/run-store.js +1 -1
  164. package/dist/governance/store/scoreboard-export.d.ts +1 -1
  165. package/dist/governance/tools/child-tools.d.ts +1 -1
  166. package/dist/governance/tools/guard.d.ts +1 -1
  167. package/dist/governance/tools/guard.js +1 -1
  168. package/dist/governance/tools/inspector-tools.d.ts +2 -2
  169. package/dist/governance/tools/inspector-tools.js +2 -2
  170. package/dist/governance/tools/lead-tools.d.ts +1 -1
  171. package/dist/governance/tools/lead-tools.js +1 -1
  172. package/dist/governance/tools/normalize-util.js +1 -1
  173. package/dist/governance/tools/scan-incomplete.js +1 -1
  174. package/dist/governance/tools/shared-tools.d.ts +1 -1
  175. package/dist/governance/tools/shared-tools.js +1 -1
  176. package/dist/governance/tools/submit-normalizers.d.ts +1 -1
  177. package/dist/governance/tools/submit-normalizers.js +1 -1
  178. package/dist/governance/tools/submit-tools.d.ts +1 -1
  179. package/dist/logging/cli-commands.js +1 -1
  180. package/dist/logging/install.d.ts +1 -1
  181. package/dist/logging/install.js +3 -3
  182. package/dist/logging/logger.d.ts +2 -2
  183. package/dist/logging/logger.js +31 -2
  184. package/dist/proc/kill-tree.js +1 -1
  185. package/dist/proc/log-mirror.js +1 -1
  186. package/dist/proc/log-ring.js +2 -2
  187. package/dist/proc/notices.d.ts +1 -1
  188. package/dist/proc/notices.js +2 -2
  189. package/dist/proc/prompt.d.ts +1 -1
  190. package/dist/proc/prompt.js +8 -5
  191. package/dist/proc/readiness.js +1 -1
  192. package/dist/proc/supervisor.d.ts +1 -1
  193. package/dist/proc/supervisor.js +10 -4
  194. package/dist/proc/wait-plan.d.ts +39 -0
  195. package/dist/proc/wait-plan.js +77 -0
  196. package/dist/proc/wait.d.ts +37 -4
  197. package/dist/proc/wait.js +68 -5
  198. package/dist/prompts/command.d.ts +1 -1
  199. package/dist/prompts/command.js +1 -1
  200. package/dist/prompts/normalize.d.ts +1 -1
  201. package/dist/prompts/normalize.js +1 -1
  202. package/dist/prompts/resolve.d.ts +1 -1
  203. package/dist/prompts/store.d.ts +2 -12
  204. package/dist/prompts/store.js +6 -60
  205. package/dist/session/checkpoint.d.ts +2 -2
  206. package/dist/session/checkpoint.js +2 -0
  207. package/dist/session/clear-archive.d.ts +2 -2
  208. package/dist/session/persist.d.ts +2 -2
  209. package/dist/session/persist.js +20 -3
  210. package/dist/session/startup-session.d.ts +2 -2
  211. package/dist/session/validate-session.js +6 -3
  212. package/dist/skills/service.d.ts +2 -2
  213. package/dist/team/bus.d.ts +1 -1
  214. package/dist/team/bus.js +1 -1
  215. package/dist/team/child-reviewer.d.ts +2 -2
  216. package/dist/team/child-reviewer.js +1 -1
  217. package/dist/team/comm-tools.js +1 -1
  218. package/dist/team/dispatch-gate.js +1 -1
  219. package/dist/team/forced-dispatch.js +1 -1
  220. package/dist/team/forced-mode.d.ts +1 -1
  221. package/dist/team/forced-prompt.d.ts +1 -1
  222. package/dist/team/forced-prompt.js +1 -1
  223. package/dist/team/normalize.d.ts +1 -1
  224. package/dist/team/normalize.js +1 -1
  225. package/dist/team/overseer.d.ts +3 -3
  226. package/dist/team/overseer.js +3 -3
  227. package/dist/team/prompt.d.ts +1 -1
  228. package/dist/team/prompt.js +1 -1
  229. package/dist/team/report.d.ts +2 -2
  230. package/dist/team/report.js +2 -2
  231. package/dist/team/retry.d.ts +1 -1
  232. package/dist/team/retry.js +1 -1
  233. package/dist/team/runtime.d.ts +4 -4
  234. package/dist/team/runtime.js +2 -2
  235. package/dist/team/settled.d.ts +2 -2
  236. package/dist/team/subagent.d.ts +4 -4
  237. package/dist/team/subagent.js +5 -5
  238. package/dist/team/task-tool.d.ts +1 -1
  239. package/dist/team/task-tool.js +1 -1
  240. package/dist/todo/normalize.d.ts +1 -1
  241. package/dist/todo/normalize.js +1 -1
  242. package/dist/todo/prompt.d.ts +1 -1
  243. package/dist/todo/prompt.js +1 -1
  244. package/dist/todo/store.d.ts +1 -1
  245. package/dist/todo/store.js +2 -2
  246. package/dist/todo/todo-tool.d.ts +1 -1
  247. package/dist/todo/todo-tool.js +2 -2
  248. package/dist/tools/bash-tool.d.ts +1 -1
  249. package/dist/tools/bash-tool.js +2 -2
  250. package/dist/tools/diff.d.ts +1 -1
  251. package/dist/tools/diff.js +1 -1
  252. package/dist/tools/file-change-store.d.ts +1 -1
  253. package/dist/tools/fs-tools.d.ts +2 -2
  254. package/dist/tools/fs-tools.js +1 -1
  255. package/dist/tools/index.d.ts +3 -3
  256. package/dist/tools/index.js +1 -1
  257. package/dist/tools/job-tools.d.ts +14 -3
  258. package/dist/tools/job-tools.js +158 -35
  259. package/dist/tools/plan-tools.d.ts +1 -1
  260. package/dist/tools/plan-tools.js +1 -1
  261. package/dist/tools/proc-tools.d.ts +1 -1
  262. package/dist/tools/proc-tools.js +2 -2
  263. package/dist/update/classify-failure.d.ts +1 -1
  264. package/dist/update/install-lock.js +1 -1
  265. package/dist/update/install-source.d.ts +1 -1
  266. package/dist/update/installer.js +2 -2
  267. package/dist/update/npm-view.d.ts +1 -1
  268. package/dist/update/npm-view.js +1 -1
  269. package/dist/update/registry.d.ts +1 -1
  270. package/dist/update/registry.js +1 -1
  271. package/dist/update/service.d.ts +2 -2
  272. package/dist/update/service.js +2 -2
  273. package/package.json +7 -7
  274. package/dist/agent/agent-mode.d.ts +0 -108
  275. package/dist/agent/agent-mode.js +0 -121
  276. package/dist/agent/entry-limits.d.ts +0 -65
  277. package/dist/agent/entry-limits.js +0 -133
  278. package/dist/agent/governance-view.d.ts +0 -40
  279. package/dist/agent/governance-view.js +0 -40
  280. package/dist/agent/invocation-card.d.ts +0 -77
  281. package/dist/agent/invocation-card.js +0 -169
  282. package/dist/agent/model-probe-limits.d.ts +0 -39
  283. package/dist/agent/model-probe-limits.js +0 -25
  284. package/dist/agent/model-probe.d.ts +0 -104
  285. package/dist/agent/model-probe.js +0 -391
  286. package/dist/agent/queued-messages.d.ts +0 -23
  287. package/dist/agent/queued-messages.js +0 -49
  288. package/dist/agent/reducer.d.ts +0 -837
  289. package/dist/agent/reducer.js +0 -1617
  290. package/dist/agent/retry-view.d.ts +0 -68
  291. package/dist/agent/retry-view.js +0 -95
  292. package/dist/agent/usage.d.ts +0 -47
  293. package/dist/agent/usage.js +0 -84
  294. package/dist/compaction/limits.d.ts +0 -61
  295. package/dist/compaction/limits.js +0 -64
  296. package/dist/compaction/meter.d.ts +0 -276
  297. package/dist/compaction/meter.js +0 -512
  298. package/dist/compaction/pressure.d.ts +0 -163
  299. package/dist/compaction/pressure.js +0 -199
  300. package/dist/compaction/reason-text.d.ts +0 -36
  301. package/dist/compaction/reason-text.js +0 -78
  302. package/dist/compaction/types.d.ts +0 -360
  303. package/dist/compaction/types.js +0 -22
  304. package/dist/config/governance-config.d.ts +0 -125
  305. package/dist/config/governance-config.js +0 -164
  306. package/dist/config/kit-resolution.d.ts +0 -93
  307. package/dist/config/kit-resolution.js +0 -226
  308. package/dist/config/model-kits.d.ts +0 -225
  309. package/dist/config/model-kits.js +0 -302
  310. package/dist/config/model-profile-resolution.d.ts +0 -28
  311. package/dist/config/model-profile-resolution.js +0 -88
  312. package/dist/config/model-profiles.d.ts +0 -103
  313. package/dist/config/model-profiles.js +0 -188
  314. package/dist/config/schema.d.ts +0 -1645
  315. package/dist/config/schema.js +0 -1377
  316. package/dist/fast/limits.d.ts +0 -152
  317. package/dist/fast/limits.js +0 -152
  318. package/dist/fast/resolve.d.ts +0 -44
  319. package/dist/fast/resolve.js +0 -107
  320. package/dist/fast/task-summary-types.d.ts +0 -66
  321. package/dist/fast/task-summary-types.js +0 -17
  322. package/dist/fast/types.d.ts +0 -141
  323. package/dist/fast/types.js +0 -14
  324. package/dist/governance/governed-dispatch.d.ts +0 -19
  325. package/dist/governance/governed-dispatch.js +0 -17
  326. package/dist/governance/limits.d.ts +0 -107
  327. package/dist/governance/limits.js +0 -131
  328. package/dist/governance/posture.d.ts +0 -35
  329. package/dist/governance/posture.js +0 -59
  330. package/dist/governance/rules/events-table.d.ts +0 -46
  331. package/dist/governance/rules/events-table.js +0 -94
  332. package/dist/governance/types.d.ts +0 -661
  333. package/dist/governance/types.js +0 -27
  334. package/dist/input/control-sequences.d.ts +0 -71
  335. package/dist/input/control-sequences.js +0 -222
  336. package/dist/input/csiu-keys.d.ts +0 -66
  337. package/dist/input/csiu-keys.js +0 -181
  338. package/dist/input/cursor-report.d.ts +0 -61
  339. package/dist/input/cursor-report.js +0 -97
  340. package/dist/input/enter-sequences.d.ts +0 -64
  341. package/dist/input/enter-sequences.js +0 -153
  342. package/dist/input/interrupt-gesture.d.ts +0 -18
  343. package/dist/input/interrupt-gesture.js +0 -19
  344. package/dist/input/keyboard-enhancement.d.ts +0 -42
  345. package/dist/input/keyboard-enhancement.js +0 -65
  346. package/dist/input/keymap.d.ts +0 -20
  347. package/dist/input/keymap.js +0 -99
  348. package/dist/input/limits.d.ts +0 -118
  349. package/dist/input/limits.js +0 -109
  350. package/dist/input/mouse-events.d.ts +0 -87
  351. package/dist/input/mouse-events.js +0 -212
  352. package/dist/input/paste-parse.d.ts +0 -83
  353. package/dist/input/paste-parse.js +0 -107
  354. package/dist/input/pointer-router.d.ts +0 -11
  355. package/dist/input/pointer-router.js +0 -14
  356. package/dist/input/stdin-filter.d.ts +0 -112
  357. package/dist/input/stdin-filter.js +0 -657
  358. package/dist/input/win32-input-mode.d.ts +0 -61
  359. package/dist/input/win32-input-mode.js +0 -269
  360. package/dist/logging/levels.d.ts +0 -40
  361. package/dist/logging/levels.js +0 -59
  362. package/dist/logging/secret-registry.d.ts +0 -32
  363. package/dist/logging/secret-registry.js +0 -73
  364. package/dist/proc/limits.d.ts +0 -200
  365. package/dist/proc/limits.js +0 -207
  366. package/dist/proc/progress.d.ts +0 -40
  367. package/dist/proc/progress.js +0 -135
  368. package/dist/proc/types.d.ts +0 -263
  369. package/dist/proc/types.js +0 -15
  370. package/dist/prompts/copy.d.ts +0 -89
  371. package/dist/prompts/copy.js +0 -131
  372. package/dist/prompts/fill.d.ts +0 -51
  373. package/dist/prompts/fill.js +0 -46
  374. package/dist/prompts/limits.d.ts +0 -53
  375. package/dist/prompts/limits.js +0 -53
  376. package/dist/prompts/search.d.ts +0 -58
  377. package/dist/prompts/search.js +0 -146
  378. package/dist/prompts/types.d.ts +0 -204
  379. package/dist/prompts/types.js +0 -13
  380. package/dist/team/activity.d.ts +0 -67
  381. package/dist/team/activity.js +0 -130
  382. package/dist/team/limits.d.ts +0 -308
  383. package/dist/team/limits.js +0 -330
  384. package/dist/team/model.d.ts +0 -104
  385. package/dist/team/model.js +0 -150
  386. package/dist/team/panel-rows.d.ts +0 -48
  387. package/dist/team/panel-rows.js +0 -75
  388. package/dist/team/timeline.d.ts +0 -74
  389. package/dist/team/timeline.js +0 -101
  390. package/dist/team/types.d.ts +0 -354
  391. package/dist/team/types.js +0 -13
  392. package/dist/todo/acceptance.d.ts +0 -120
  393. package/dist/todo/acceptance.js +0 -399
  394. package/dist/todo/follow-through.d.ts +0 -138
  395. package/dist/todo/follow-through.js +0 -248
  396. package/dist/todo/limits.d.ts +0 -152
  397. package/dist/todo/limits.js +0 -152
  398. package/dist/todo/panel-rows.d.ts +0 -45
  399. package/dist/todo/panel-rows.js +0 -70
  400. package/dist/todo/plan-sections.d.ts +0 -60
  401. package/dist/todo/plan-sections.js +0 -108
  402. package/dist/todo/row-window.d.ts +0 -51
  403. package/dist/todo/row-window.js +0 -107
  404. package/dist/todo/types.d.ts +0 -124
  405. package/dist/todo/types.js +0 -12
  406. package/dist/tools/human-input.d.ts +0 -212
  407. package/dist/tools/human-input.js +0 -265
  408. package/dist/tools/patch.d.ts +0 -115
  409. package/dist/tools/patch.js +0 -453
  410. package/dist/tools/terminal-output.d.ts +0 -115
  411. package/dist/tools/terminal-output.js +0 -201
  412. package/dist/tools/tool-output-store.d.ts +0 -68
  413. package/dist/tools/tool-output-store.js +0 -102
  414. package/dist/ui/ActivityLine.d.ts +0 -26
  415. package/dist/ui/ActivityLine.js +0 -48
  416. package/dist/ui/AutocompletePopup.d.ts +0 -23
  417. package/dist/ui/AutocompletePopup.js +0 -17
  418. package/dist/ui/BottomStatusRow.d.ts +0 -10
  419. package/dist/ui/BottomStatusRow.js +0 -9
  420. package/dist/ui/Composer.d.ts +0 -115
  421. package/dist/ui/Composer.js +0 -64
  422. package/dist/ui/GovernancePanel.d.ts +0 -50
  423. package/dist/ui/GovernancePanel.js +0 -77
  424. package/dist/ui/GovernanceRun.d.ts +0 -18
  425. package/dist/ui/GovernanceRun.js +0 -11
  426. package/dist/ui/Header.d.ts +0 -48
  427. package/dist/ui/Header.js +0 -27
  428. package/dist/ui/Logo.d.ts +0 -32
  429. package/dist/ui/Logo.js +0 -65
  430. package/dist/ui/Markdown.d.ts +0 -29
  431. package/dist/ui/Markdown.js +0 -116
  432. package/dist/ui/PromptCaret.d.ts +0 -11
  433. package/dist/ui/PromptCaret.js +0 -31
  434. package/dist/ui/PromptInput.d.ts +0 -192
  435. package/dist/ui/PromptInput.js +0 -689
  436. package/dist/ui/QueuePanel.d.ts +0 -8
  437. package/dist/ui/QueuePanel.js +0 -9
  438. package/dist/ui/QueueStatusRow.d.ts +0 -24
  439. package/dist/ui/QueueStatusRow.js +0 -51
  440. package/dist/ui/ScrollbackShell.d.ts +0 -132
  441. package/dist/ui/ScrollbackShell.js +0 -26
  442. package/dist/ui/SessionOpener.d.ts +0 -30
  443. package/dist/ui/SessionOpener.js +0 -12
  444. package/dist/ui/StatusBar.d.ts +0 -129
  445. package/dist/ui/StatusBar.js +0 -61
  446. package/dist/ui/TeamPanel.d.ts +0 -76
  447. package/dist/ui/TeamPanel.js +0 -103
  448. package/dist/ui/ToastStack.d.ts +0 -8
  449. package/dist/ui/ToastStack.js +0 -31
  450. package/dist/ui/TodoPanel.d.ts +0 -52
  451. package/dist/ui/TodoPanel.js +0 -214
  452. package/dist/ui/Transcript.d.ts +0 -105
  453. package/dist/ui/Transcript.js +0 -251
  454. package/dist/ui/UpdateLine.d.ts +0 -44
  455. package/dist/ui/UpdateLine.js +0 -129
  456. package/dist/ui/activity-phrases.d.ts +0 -33
  457. package/dist/ui/activity-phrases.js +0 -50
  458. package/dist/ui/capabilities.d.ts +0 -27
  459. package/dist/ui/capabilities.js +0 -65
  460. package/dist/ui/clipboard-task.d.ts +0 -29
  461. package/dist/ui/clipboard-task.js +0 -66
  462. package/dist/ui/clipboard.d.ts +0 -31
  463. package/dist/ui/clipboard.js +0 -157
  464. package/dist/ui/color-runtime.d.ts +0 -5
  465. package/dist/ui/color-runtime.js +0 -29
  466. package/dist/ui/composer-input.d.ts +0 -38
  467. package/dist/ui/composer-input.js +0 -79
  468. package/dist/ui/composer-limits.d.ts +0 -30
  469. package/dist/ui/composer-limits.js +0 -45
  470. package/dist/ui/composer-rows.d.ts +0 -73
  471. package/dist/ui/composer-rows.js +0 -129
  472. package/dist/ui/console-bridge.d.ts +0 -19
  473. package/dist/ui/console-bridge.js +0 -52
  474. package/dist/ui/density.d.ts +0 -26
  475. package/dist/ui/density.js +0 -34
  476. package/dist/ui/display-tab.d.ts +0 -51
  477. package/dist/ui/display-tab.js +0 -82
  478. package/dist/ui/editor-navigation.d.ts +0 -55
  479. package/dist/ui/editor-navigation.js +0 -96
  480. package/dist/ui/editor-reducer.d.ts +0 -108
  481. package/dist/ui/editor-reducer.js +0 -187
  482. package/dist/ui/enter-frames.d.ts +0 -47
  483. package/dist/ui/enter-frames.js +0 -117
  484. package/dist/ui/entries/AssistantEntry.d.ts +0 -37
  485. package/dist/ui/entries/AssistantEntry.js +0 -43
  486. package/dist/ui/entries/CompactionCard.d.ts +0 -88
  487. package/dist/ui/entries/CompactionCard.js +0 -222
  488. package/dist/ui/entries/DiffView.d.ts +0 -61
  489. package/dist/ui/entries/DiffView.js +0 -103
  490. package/dist/ui/entries/EntryFrame.d.ts +0 -23
  491. package/dist/ui/entries/EntryFrame.js +0 -6
  492. package/dist/ui/entries/FastCard.d.ts +0 -53
  493. package/dist/ui/entries/FastCard.js +0 -105
  494. package/dist/ui/entries/GovernanceCard.d.ts +0 -30
  495. package/dist/ui/entries/GovernanceCard.js +0 -32
  496. package/dist/ui/entries/InvocationCard.d.ts +0 -20
  497. package/dist/ui/entries/InvocationCard.js +0 -32
  498. package/dist/ui/entries/QueuedEntry.d.ts +0 -27
  499. package/dist/ui/entries/QueuedEntry.js +0 -33
  500. package/dist/ui/entries/RetryCard.d.ts +0 -56
  501. package/dist/ui/entries/RetryCard.js +0 -60
  502. package/dist/ui/entries/ServiceCard.d.ts +0 -82
  503. package/dist/ui/entries/ServiceCard.js +0 -151
  504. package/dist/ui/entries/TeamCard.d.ts +0 -55
  505. package/dist/ui/entries/TeamCard.js +0 -94
  506. package/dist/ui/entries/TodoCard.d.ts +0 -54
  507. package/dist/ui/entries/TodoCard.js +0 -98
  508. package/dist/ui/entries/ToolCard.d.ts +0 -81
  509. package/dist/ui/entries/ToolCard.js +0 -160
  510. package/dist/ui/entries/ToolPreview.d.ts +0 -59
  511. package/dist/ui/entries/ToolPreview.js +0 -208
  512. package/dist/ui/entries/UserEntry.d.ts +0 -36
  513. package/dist/ui/entries/UserEntry.js +0 -57
  514. package/dist/ui/exit-snapshot.d.ts +0 -43
  515. package/dist/ui/exit-snapshot.js +0 -26
  516. package/dist/ui/frame-differ.d.ts +0 -166
  517. package/dist/ui/frame-differ.js +0 -354
  518. package/dist/ui/frame-observer.d.ts +0 -17
  519. package/dist/ui/frame-observer.js +0 -94
  520. package/dist/ui/frame-parser.d.ts +0 -7
  521. package/dist/ui/frame-parser.js +0 -18
  522. package/dist/ui/gauge.d.ts +0 -39
  523. package/dist/ui/gauge.js +0 -55
  524. package/dist/ui/glyphs.d.ts +0 -178
  525. package/dist/ui/glyphs.js +0 -165
  526. package/dist/ui/governance-copy.d.ts +0 -69
  527. package/dist/ui/governance-copy.js +0 -104
  528. package/dist/ui/governance-status.d.ts +0 -145
  529. package/dist/ui/governance-status.js +0 -326
  530. package/dist/ui/gradient.d.ts +0 -11
  531. package/dist/ui/gradient.js +0 -50
  532. package/dist/ui/ink-runtime.d.ts +0 -4
  533. package/dist/ui/ink-runtime.js +0 -51
  534. package/dist/ui/interaction-copy.d.ts +0 -82
  535. package/dist/ui/interaction-copy.js +0 -38
  536. package/dist/ui/interaction-hints.d.ts +0 -44
  537. package/dist/ui/interaction-hints.js +0 -97
  538. package/dist/ui/layout/AppShell.d.ts +0 -17
  539. package/dist/ui/layout/AppShell.js +0 -6
  540. package/dist/ui/layout/Gutter.d.ts +0 -67
  541. package/dist/ui/layout/Gutter.js +0 -42
  542. package/dist/ui/layout/MeasuredEntry.d.ts +0 -21
  543. package/dist/ui/layout/MeasuredEntry.js +0 -30
  544. package/dist/ui/layout/OverlayFrame.d.ts +0 -73
  545. package/dist/ui/layout/OverlayFrame.js +0 -110
  546. package/dist/ui/layout/ScrollIndicator.d.ts +0 -32
  547. package/dist/ui/layout/ScrollIndicator.js +0 -22
  548. package/dist/ui/layout/ScrollViewport.d.ts +0 -40
  549. package/dist/ui/layout/ScrollViewport.js +0 -222
  550. package/dist/ui/layout/agents-board.d.ts +0 -102
  551. package/dist/ui/layout/agents-board.js +0 -389
  552. package/dist/ui/layout/autocomplete.d.ts +0 -18
  553. package/dist/ui/layout/autocomplete.js +0 -26
  554. package/dist/ui/layout/budget.d.ts +0 -43
  555. package/dist/ui/layout/budget.js +0 -52
  556. package/dist/ui/layout/cells.d.ts +0 -61
  557. package/dist/ui/layout/cells.js +0 -156
  558. package/dist/ui/layout/document-layout.d.ts +0 -13
  559. package/dist/ui/layout/document-layout.js +0 -10
  560. package/dist/ui/layout/follow-state.d.ts +0 -138
  561. package/dist/ui/layout/follow-state.js +0 -148
  562. package/dist/ui/layout/frame.d.ts +0 -36
  563. package/dist/ui/layout/frame.js +0 -39
  564. package/dist/ui/layout/governance-board.d.ts +0 -121
  565. package/dist/ui/layout/governance-board.js +0 -382
  566. package/dist/ui/layout/governance-card.d.ts +0 -53
  567. package/dist/ui/layout/governance-card.js +0 -134
  568. package/dist/ui/layout/governance-chip.d.ts +0 -38
  569. package/dist/ui/layout/governance-chip.js +0 -64
  570. package/dist/ui/layout/governance-panel.d.ts +0 -85
  571. package/dist/ui/layout/governance-panel.js +0 -358
  572. package/dist/ui/layout/governance-roster.d.ts +0 -65
  573. package/dist/ui/layout/governance-roster.js +0 -275
  574. package/dist/ui/layout/header-hints.d.ts +0 -90
  575. package/dist/ui/layout/header-hints.js +0 -110
  576. package/dist/ui/layout/header-left.d.ts +0 -115
  577. package/dist/ui/layout/header-left.js +0 -206
  578. package/dist/ui/layout/invocation-card.d.ts +0 -41
  579. package/dist/ui/layout/invocation-card.js +0 -91
  580. package/dist/ui/layout/kit-chip.d.ts +0 -50
  581. package/dist/ui/layout/kit-chip.js +0 -81
  582. package/dist/ui/layout/overlay-window.d.ts +0 -43
  583. package/dist/ui/layout/overlay-window.js +0 -51
  584. package/dist/ui/layout/queue-layout.d.ts +0 -19
  585. package/dist/ui/layout/queue-layout.js +0 -26
  586. package/dist/ui/layout/rail.d.ts +0 -7
  587. package/dist/ui/layout/rail.js +0 -16
  588. package/dist/ui/layout/scroll-indicator.d.ts +0 -27
  589. package/dist/ui/layout/scroll-indicator.js +0 -36
  590. package/dist/ui/layout/scroll.d.ts +0 -37
  591. package/dist/ui/layout/scroll.js +0 -99
  592. package/dist/ui/layout/scrollbar-geometry.d.ts +0 -17
  593. package/dist/ui/layout/scrollbar-geometry.js +0 -13
  594. package/dist/ui/layout/session-chip.d.ts +0 -52
  595. package/dist/ui/layout/session-chip.js +0 -64
  596. package/dist/ui/layout/shortcut-panel-layout.d.ts +0 -191
  597. package/dist/ui/layout/shortcut-panel-layout.js +0 -321
  598. package/dist/ui/layout/status-detail-layout.d.ts +0 -9
  599. package/dist/ui/layout/status-detail-layout.js +0 -79
  600. package/dist/ui/layout/status-layout.d.ts +0 -139
  601. package/dist/ui/layout/status-layout.js +0 -253
  602. package/dist/ui/layout/task-summary-cell.d.ts +0 -61
  603. package/dist/ui/layout/task-summary-cell.js +0 -65
  604. package/dist/ui/layout/team-panel.d.ts +0 -18
  605. package/dist/ui/layout/team-panel.js +0 -25
  606. package/dist/ui/layout/team-row.d.ts +0 -139
  607. package/dist/ui/layout/team-row.js +0 -246
  608. package/dist/ui/layout/todo-layout.d.ts +0 -62
  609. package/dist/ui/layout/todo-layout.js +0 -102
  610. package/dist/ui/layout/useTerminalSize.d.ts +0 -13
  611. package/dist/ui/layout/useTerminalSize.js +0 -50
  612. package/dist/ui/layout/viewport-geometry.d.ts +0 -29
  613. package/dist/ui/layout/viewport-geometry.js +0 -28
  614. package/dist/ui/layout/virtual-window.d.ts +0 -112
  615. package/dist/ui/layout/virtual-window.js +0 -488
  616. package/dist/ui/layout/wrap-rows.d.ts +0 -26
  617. package/dist/ui/layout/wrap-rows.js +0 -88
  618. package/dist/ui/live-clamp.d.ts +0 -14
  619. package/dist/ui/live-clamp.js +0 -46
  620. package/dist/ui/markdown-blocks.d.ts +0 -107
  621. package/dist/ui/markdown-blocks.js +0 -240
  622. package/dist/ui/overlays/AgentsBoardOverlay.d.ts +0 -57
  623. package/dist/ui/overlays/AgentsBoardOverlay.js +0 -183
  624. package/dist/ui/overlays/ConfirmDialog.d.ts +0 -31
  625. package/dist/ui/overlays/ConfirmDialog.js +0 -44
  626. package/dist/ui/overlays/GovernanceBoardOverlay.d.ts +0 -41
  627. package/dist/ui/overlays/GovernanceBoardOverlay.js +0 -76
  628. package/dist/ui/overlays/GovernanceSettingsPage.d.ts +0 -48
  629. package/dist/ui/overlays/GovernanceSettingsPage.js +0 -93
  630. package/dist/ui/overlays/HelpOverlay.d.ts +0 -29
  631. package/dist/ui/overlays/HelpOverlay.js +0 -232
  632. package/dist/ui/overlays/KitEditor.d.ts +0 -23
  633. package/dist/ui/overlays/KitEditor.js +0 -101
  634. package/dist/ui/overlays/KitManager.d.ts +0 -23
  635. package/dist/ui/overlays/KitManager.js +0 -104
  636. package/dist/ui/overlays/KitPicker.d.ts +0 -49
  637. package/dist/ui/overlays/KitPicker.js +0 -58
  638. package/dist/ui/overlays/ModelDiscoveryList.d.ts +0 -23
  639. package/dist/ui/overlays/ModelDiscoveryList.js +0 -161
  640. package/dist/ui/overlays/ModelPicker.d.ts +0 -26
  641. package/dist/ui/overlays/ModelPicker.js +0 -63
  642. package/dist/ui/overlays/ModelProfileEditor.d.ts +0 -29
  643. package/dist/ui/overlays/ModelProfileEditor.js +0 -168
  644. package/dist/ui/overlays/ModelProfilePicker.d.ts +0 -48
  645. package/dist/ui/overlays/ModelProfilePicker.js +0 -231
  646. package/dist/ui/overlays/PlanReviewOverlay.d.ts +0 -51
  647. package/dist/ui/overlays/PlanReviewOverlay.js +0 -132
  648. package/dist/ui/overlays/PromptEditorPage.d.ts +0 -48
  649. package/dist/ui/overlays/PromptEditorPage.js +0 -227
  650. package/dist/ui/overlays/PromptLibraryOverlay.d.ts +0 -37
  651. package/dist/ui/overlays/PromptLibraryOverlay.js +0 -191
  652. package/dist/ui/overlays/PromptPicker.d.ts +0 -36
  653. package/dist/ui/overlays/PromptPicker.js +0 -129
  654. package/dist/ui/overlays/PromptTextArea.d.ts +0 -86
  655. package/dist/ui/overlays/PromptTextArea.js +0 -141
  656. package/dist/ui/overlays/QuestionOverlay.d.ts +0 -39
  657. package/dist/ui/overlays/QuestionOverlay.js +0 -258
  658. package/dist/ui/overlays/QueueOverlay.d.ts +0 -22
  659. package/dist/ui/overlays/QueueOverlay.js +0 -79
  660. package/dist/ui/overlays/SettingsScreen.d.ts +0 -228
  661. package/dist/ui/overlays/SettingsScreen.js +0 -1037
  662. package/dist/ui/overlays/ShortcutPanel.d.ts +0 -39
  663. package/dist/ui/overlays/ShortcutPanel.js +0 -106
  664. package/dist/ui/overlays/TeamFanoutPage.d.ts +0 -51
  665. package/dist/ui/overlays/TeamFanoutPage.js +0 -90
  666. package/dist/ui/overlays/governance-settings.d.ts +0 -79
  667. package/dist/ui/overlays/governance-settings.js +0 -140
  668. package/dist/ui/overlays/kit-picker-state.d.ts +0 -87
  669. package/dist/ui/overlays/kit-picker-state.js +0 -136
  670. package/dist/ui/overlays/kit-settings-state.d.ts +0 -129
  671. package/dist/ui/overlays/kit-settings-state.js +0 -268
  672. package/dist/ui/overlays/model-probe-view.d.ts +0 -128
  673. package/dist/ui/overlays/model-probe-view.js +0 -225
  674. package/dist/ui/overlays/model-profile-state.d.ts +0 -177
  675. package/dist/ui/overlays/model-profile-state.js +0 -301
  676. package/dist/ui/overlays/prompt-library-state.d.ts +0 -162
  677. package/dist/ui/overlays/prompt-library-state.js +0 -335
  678. package/dist/ui/overlays/prompt-picker-state.d.ts +0 -71
  679. package/dist/ui/overlays/prompt-picker-state.js +0 -98
  680. package/dist/ui/overlays/team-fanout-state.d.ts +0 -106
  681. package/dist/ui/overlays/team-fanout-state.js +0 -155
  682. package/dist/ui/overlays/use-model-probe.d.ts +0 -30
  683. package/dist/ui/overlays/use-model-probe.js +0 -109
  684. package/dist/ui/palettes.d.ts +0 -112
  685. package/dist/ui/palettes.js +0 -130
  686. package/dist/ui/paste-frames.d.ts +0 -91
  687. package/dist/ui/paste-frames.js +0 -117
  688. package/dist/ui/paste-tokens.d.ts +0 -90
  689. package/dist/ui/paste-tokens.js +0 -147
  690. package/dist/ui/render-cache.d.ts +0 -81
  691. package/dist/ui/render-cache.js +0 -196
  692. package/dist/ui/render-governor.d.ts +0 -54
  693. package/dist/ui/render-governor.js +0 -78
  694. package/dist/ui/run-metrics.d.ts +0 -23
  695. package/dist/ui/run-metrics.js +0 -27
  696. package/dist/ui/run-status-row.d.ts +0 -61
  697. package/dist/ui/run-status-row.js +0 -54
  698. package/dist/ui/screen.d.ts +0 -107
  699. package/dist/ui/screen.js +0 -234
  700. package/dist/ui/scrollback/LiveTail.d.ts +0 -115
  701. package/dist/ui/scrollback/LiveTail.js +0 -48
  702. package/dist/ui/scrollback/band.d.ts +0 -114
  703. package/dist/ui/scrollback/band.js +0 -143
  704. package/dist/ui/scrollback/budget.d.ts +0 -90
  705. package/dist/ui/scrollback/budget.js +0 -100
  706. package/dist/ui/scrollback/canvas.d.ts +0 -100
  707. package/dist/ui/scrollback/canvas.js +0 -114
  708. package/dist/ui/scrollback/cursor-probe.d.ts +0 -71
  709. package/dist/ui/scrollback/cursor-probe.js +0 -133
  710. package/dist/ui/scrollback/drain.d.ts +0 -32
  711. package/dist/ui/scrollback/drain.js +0 -64
  712. package/dist/ui/scrollback/exit-summary.d.ts +0 -23
  713. package/dist/ui/scrollback/exit-summary.js +0 -25
  714. package/dist/ui/scrollback/limits.d.ts +0 -98
  715. package/dist/ui/scrollback/limits.js +0 -98
  716. package/dist/ui/scrollback/live-preview.d.ts +0 -34
  717. package/dist/ui/scrollback/live-preview.js +0 -118
  718. package/dist/ui/scrollback/overflow-print.d.ts +0 -108
  719. package/dist/ui/scrollback/overflow-print.js +0 -120
  720. package/dist/ui/scrollback/renderer.d.ts +0 -48
  721. package/dist/ui/scrollback/renderer.js +0 -186
  722. package/dist/ui/scrollback/scrollback-writer.d.ts +0 -174
  723. package/dist/ui/scrollback/scrollback-writer.js +0 -648
  724. package/dist/ui/scrollback/settled-boundary.d.ts +0 -42
  725. package/dist/ui/scrollback/settled-boundary.js +0 -109
  726. package/dist/ui/scrollback/tail-anchor.d.ts +0 -71
  727. package/dist/ui/scrollback/tail-anchor.js +0 -79
  728. package/dist/ui/scrollback/tail-window.d.ts +0 -73
  729. package/dist/ui/scrollback/tail-window.js +0 -89
  730. package/dist/ui/scrollback/use-scrollback-view.d.ts +0 -139
  731. package/dist/ui/scrollback/use-scrollback-view.js +0 -601
  732. package/dist/ui/scrollback/writer-shapes.d.ts +0 -127
  733. package/dist/ui/scrollback/writer-shapes.js +0 -159
  734. package/dist/ui/scrollbar-controller.d.ts +0 -30
  735. package/dist/ui/scrollbar-controller.js +0 -124
  736. package/dist/ui/selection/highlight.d.ts +0 -39
  737. package/dist/ui/selection/highlight.js +0 -64
  738. package/dist/ui/selection/screen-mirror.d.ts +0 -24
  739. package/dist/ui/selection/screen-mirror.js +0 -35
  740. package/dist/ui/selection/selection-controller.d.ts +0 -104
  741. package/dist/ui/selection/selection-controller.js +0 -372
  742. package/dist/ui/selection/selection.d.ts +0 -90
  743. package/dist/ui/selection/selection.js +0 -223
  744. package/dist/ui/shortcuts.d.ts +0 -81
  745. package/dist/ui/shortcuts.js +0 -221
  746. package/dist/ui/status-feedback.d.ts +0 -35
  747. package/dist/ui/status-feedback.js +0 -38
  748. package/dist/ui/stdout-frame-writer.d.ts +0 -74
  749. package/dist/ui/stdout-frame-writer.js +0 -155
  750. package/dist/ui/team-status.d.ts +0 -166
  751. package/dist/ui/team-status.js +0 -252
  752. package/dist/ui/terminal-plan.d.ts +0 -52
  753. package/dist/ui/terminal-plan.js +0 -49
  754. package/dist/ui/theme.d.ts +0 -96
  755. package/dist/ui/theme.js +0 -130
  756. package/dist/ui/transcript-text.d.ts +0 -41
  757. package/dist/ui/transcript-text.js +0 -282
  758. package/dist/ui/use-height-store.d.ts +0 -31
  759. package/dist/ui/use-height-store.js +0 -76
  760. package/dist/ui/use-render-governor.d.ts +0 -39
  761. package/dist/ui/use-render-governor.js +0 -57
  762. package/dist/ui/use-wheel-routing.d.ts +0 -57
  763. package/dist/ui/use-wheel-routing.js +0 -152
  764. package/dist/ui/win-vt-force.d.ts +0 -136
  765. package/dist/ui/win-vt-force.js +0 -237
  766. package/dist/ui/win-vt-input.d.ts +0 -57
  767. package/dist/ui/win-vt-input.js +0 -62
  768. package/dist/update/limits.d.ts +0 -111
  769. package/dist/update/limits.js +0 -111
  770. package/dist/update/semver.d.ts +0 -89
  771. package/dist/update/semver.js +0 -295
  772. package/dist/update/types.d.ts +0 -169
  773. package/dist/update/types.js +0 -68
  774. /package/dist/{ui → app}/session-bridge.d.ts +0 -0
  775. /package/dist/{ui → app}/session-bridge.js +0 -0
@@ -1,86 +0,0 @@
1
- /**
2
- * The one editable multi-line field in this feature (quick-prompt-library D-11).
3
- *
4
- * ASCII ONLY - `src/ui/**` is inside `glyphs.test.ts::inScope`.
5
- *
6
- * RENDER AND CARET COME FROM THE SAME FUNCTION. `layoutComposer` wraps the buffer and
7
- * reports the caret's row and column from ONE `buildEditorVisualMap` pass, and the
8
- * drawing below splits that same row at that same column. Every second authority
9
- * here - a prose wrapper, a second width table, a "count the characters instead" -
10
- * puts the caret on a cell that does not hold the character it points at, and the
11
- * only symptom is that the user's edits land one column off in Chinese text.
12
- *
13
- * WHY `layout/wrap-rows.ts::wrapToRows` IS BANNED HERE (it is used one directory
14
- * away, for the list's read-only preview): it splits on whitespace and rejoins with
15
- * single spaces, so it eats indentation and destroys the character-index-to-cell
16
- * mapping. `composer-rows.ts:16-20` says so in as many words, and that is the module
17
- * this one borrows from.
18
- *
19
- * NO PASTE-COLLAPSE TOKENS, deliberately. The token machinery exists so a 218-line
20
- * paste does not have to live in a one-line input; this IS a multi-line field, and a
21
- * token inside a saved prompt body would be data corruption the user could not undo.
22
- */
23
- import React from 'react';
24
- import type { Theme } from '../theme.js';
25
- import type { TermCapabilities } from '../capabilities.js';
26
- export interface PromptTextAreaState {
27
- buffer: string;
28
- cursor: number;
29
- /** Kept across vertical moves, cleared by any horizontal one (composer parity). */
30
- preferredVisualColumn?: number;
31
- }
32
- export declare const EMPTY_TEXT_AREA: PromptTextAreaState;
33
- export type PromptTextAreaAction = {
34
- type: 'insert';
35
- text: string;
36
- } | {
37
- type: 'newline';
38
- } | {
39
- type: 'backspace';
40
- } | {
41
- type: 'delete';
42
- } | {
43
- type: 'left';
44
- } | {
45
- type: 'right';
46
- } | {
47
- type: 'home';
48
- } | {
49
- type: 'end';
50
- }
51
- /** Vertical moves need the wrap width; it is part of the ACTION, not of the state. */
52
- | {
53
- type: 'up';
54
- cols: number;
55
- } | {
56
- type: 'down';
57
- cols: number;
58
- } | {
59
- type: 'replace';
60
- buffer: string;
61
- cursor: number;
62
- };
63
- /**
64
- * Pure. No React, no Ink, no filesystem - so the twelve editing cases are a table
65
- * test rather than a rendered frame assertion.
66
- */
67
- export declare function promptTextAreaReducer(state: PromptTextAreaState, action: PromptTextAreaAction): PromptTextAreaState;
68
- export interface PromptTextAreaProps {
69
- state: PromptTextAreaState;
70
- /** Wrap width, in cells, already net of the field's own chrome. */
71
- cols: number;
72
- /** Rows the field may occupy. `1` is the single-line case for title/description. */
73
- rows: number;
74
- focused: boolean;
75
- theme: Theme;
76
- caps: TermCapabilities;
77
- reducedMotion?: boolean;
78
- }
79
- /**
80
- * One field's worth of rows.
81
- *
82
- * The overflow chip is a plain `+N` on the LAST row rather than a row of its own:
83
- * an extra row would make this component draw one more line than the caller budgeted
84
- * for, and the frame it lives in has no way to find out.
85
- */
86
- export declare function PromptTextArea(props: PromptTextAreaProps): React.ReactElement;
@@ -1,141 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /**
3
- * The one editable multi-line field in this feature (quick-prompt-library D-11).
4
- *
5
- * ASCII ONLY - `src/ui/**` is inside `glyphs.test.ts::inScope`.
6
- *
7
- * RENDER AND CARET COME FROM THE SAME FUNCTION. `layoutComposer` wraps the buffer and
8
- * reports the caret's row and column from ONE `buildEditorVisualMap` pass, and the
9
- * drawing below splits that same row at that same column. Every second authority
10
- * here - a prose wrapper, a second width table, a "count the characters instead" -
11
- * puts the caret on a cell that does not hold the character it points at, and the
12
- * only symptom is that the user's edits land one column off in Chinese text.
13
- *
14
- * WHY `layout/wrap-rows.ts::wrapToRows` IS BANNED HERE (it is used one directory
15
- * away, for the list's read-only preview): it splits on whitespace and rejoins with
16
- * single spaces, so it eats indentation and destroys the character-index-to-cell
17
- * mapping. `composer-rows.ts:16-20` says so in as many words, and that is the module
18
- * this one borrows from.
19
- *
20
- * NO PASTE-COLLAPSE TOKENS, deliberately. The token machinery exists so a 218-line
21
- * paste does not have to live in a one-line input; this IS a multi-line field, and a
22
- * token inside a saved prompt body would be data corruption the user could not undo.
23
- */
24
- import React from 'react';
25
- import { Box, Text } from 'ink';
26
- import { pickGlyphs } from '../glyphs.js';
27
- import { layoutComposer, splitRowAtColumn } from '../composer-rows.js';
28
- import { moveVisualCursor, snapGrapheme, stepGrapheme } from '../editor-navigation.js';
29
- import { PromptCaret } from '../PromptCaret.js';
30
- export const EMPTY_TEXT_AREA = { buffer: '', cursor: 0 };
31
- function withCursor(state, buffer, cursor) {
32
- return { buffer, cursor: snapGrapheme(buffer, cursor, true) };
33
- }
34
- /**
35
- * Pure. No React, no Ink, no filesystem - so the twelve editing cases are a table
36
- * test rather than a rendered frame assertion.
37
- */
38
- export function promptTextAreaReducer(state, action) {
39
- switch (action.type) {
40
- case 'insert': {
41
- const cursor = snapGrapheme(state.buffer, state.cursor);
42
- const buffer = state.buffer.slice(0, cursor) + action.text + state.buffer.slice(cursor);
43
- return {
44
- buffer,
45
- cursor: snapGrapheme(buffer, cursor + action.text.length, true),
46
- };
47
- }
48
- case 'newline': {
49
- const cursor = snapGrapheme(state.buffer, state.cursor);
50
- const buffer = `${state.buffer.slice(0, cursor)}\n${state.buffer.slice(cursor)}`;
51
- return { buffer, cursor: cursor + 1 };
52
- }
53
- case 'backspace':
54
- case 'delete': {
55
- const cursor = snapGrapheme(state.buffer, state.cursor);
56
- if (action.type === 'backspace') {
57
- if (cursor <= 0)
58
- return state;
59
- const from = stepGrapheme(state.buffer, cursor, 'left');
60
- return withCursor(state, state.buffer.slice(0, from) + state.buffer.slice(cursor), from);
61
- }
62
- if (cursor >= state.buffer.length)
63
- return state;
64
- const to = stepGrapheme(state.buffer, cursor, 'right');
65
- return withCursor(state, state.buffer.slice(0, cursor) + state.buffer.slice(to), cursor);
66
- }
67
- case 'left':
68
- return {
69
- buffer: state.buffer,
70
- cursor: stepGrapheme(state.buffer, state.cursor, 'left'),
71
- };
72
- case 'right':
73
- return {
74
- buffer: state.buffer,
75
- cursor: stepGrapheme(state.buffer, state.cursor, 'right'),
76
- };
77
- case 'home':
78
- return { buffer: state.buffer, cursor: 0 };
79
- case 'end':
80
- return { buffer: state.buffer, cursor: snapGrapheme(state.buffer, state.buffer.length) };
81
- case 'up':
82
- case 'down': {
83
- const moved = moveVisualCursor({
84
- buffer: state.buffer,
85
- cursor: state.cursor,
86
- cols: action.cols,
87
- direction: action.type,
88
- ...(state.preferredVisualColumn === undefined
89
- ? {}
90
- : { preferredVisualColumn: state.preferredVisualColumn }),
91
- });
92
- // A vertical move at the first or last visual row stays put rather than
93
- // jumping to the buffer's edge: the composer behaves the same way, and a jump
94
- // here would silently relocate the caret in a field the user is editing.
95
- return moved === null
96
- ? state
97
- : {
98
- buffer: state.buffer,
99
- cursor: moved.cursor,
100
- preferredVisualColumn: moved.preferredVisualColumn,
101
- };
102
- }
103
- case 'replace':
104
- return withCursor(state, action.buffer, action.cursor);
105
- }
106
- }
107
- function renderSegments(segments, keyPrefix) {
108
- return segments.map((segment, at) => (_jsx(Text, { children: segment.text }, `${keyPrefix}${at}`)));
109
- }
110
- /**
111
- * One field's worth of rows.
112
- *
113
- * The overflow chip is a plain `+N` on the LAST row rather than a row of its own:
114
- * an extra row would make this component draw one more line than the caller budgeted
115
- * for, and the frame it lives in has no way to find out.
116
- */
117
- export function PromptTextArea(props) {
118
- const { state, cols, rows, focused } = props;
119
- const glyphs = pickGlyphs(props.caps);
120
- const layout = layoutComposer({
121
- buffer: state.buffer,
122
- cursor: state.cursor,
123
- cols: Math.max(4, cols),
124
- maxRows: Math.max(1, rows),
125
- active: focused,
126
- });
127
- const hidden = layout.hiddenAbove + layout.hiddenBelow;
128
- const resetKey = React.useMemo(() => ({}), [state.buffer, state.cursor, focused, props.cols, rows]);
129
- if (state.buffer.length === 0) {
130
- return (_jsxs(Text, { wrap: "truncate", color: props.theme.muted, children: [_jsx(PromptCaret, { text: " ", active: focused, reducedMotion: props.reducedMotion ?? false, colorLevel: props.caps.colorLevel, color: props.theme.muted, resetKey: resetKey }), glyphs.ellipsis] }));
131
- }
132
- return (_jsx(Box, { flexDirection: "column", children: layout.rows.map((row, at) => {
133
- if (at !== layout.cursorRow) {
134
- return _jsx(Text, { wrap: "truncate", children: renderSegments(row.segments, `r${at}.`) }, at);
135
- }
136
- const split = splitRowAtColumn(row, layout.cursorCol);
137
- return (_jsxs(Text, { wrap: "truncate", children: [renderSegments(split.before, `b${at}.`), _jsx(PromptCaret, { text: split.at ? split.at.text : ' ', active: focused, reducedMotion: props.reducedMotion ?? false, colorLevel: props.caps.colorLevel, resetKey: resetKey }), renderSegments(split.after, `a${at}.`), at === layout.rows.length - 1 && hidden > 0
138
- ? _jsx(Text, { color: props.theme.muted, children: ` +${hidden}` })
139
- : null] }, at));
140
- }) }));
141
- }
@@ -1,39 +0,0 @@
1
- /**
2
- * QuestionOverlay — the keyboard-driven multiple-choice wizard `ask_user`
3
- * renders (plan-mode §6.5).
4
- *
5
- * `OverlayFrame` MODE B (self-managed): the content is a small state machine,
6
- * not a list of rows, and slicing it by element would be meaningless.
7
- *
8
- * THE SINGLE HIGHEST-VALUE DECISION HERE is that the recommended option is the
9
- * initial highlight for every question, so `Enter Enter Enter` is a correct,
10
- * deliberate "use your judgement" path rather than an accident.
11
- *
12
- * `Esc` IS NOT HANDLED HERE. `App` owns it, and the bridge's `settle()` is the
13
- * only place a human request is ever answered. `ConfirmDialog` does the
14
- * opposite — both it and `App` call `resolve` — which is harmless there only by
15
- * accident of promise semantics, and is not a pattern to copy (R-P12).
16
- */
17
- import React from 'react';
18
- import type { Theme } from '../theme.js';
19
- import type { TermCapabilities } from '../capabilities.js';
20
- import type { Answer, NormalizedQuestion } from '../../tools/human-input.js';
21
- interface QuestionOverlayProps {
22
- isActive?: boolean;
23
- questions: NormalizedQuestion[];
24
- maxRows: number;
25
- cols: number;
26
- theme: Theme;
27
- caps: TermCapabilities;
28
- onSubmit: (answers: Answer[]) => void;
29
- /**
30
- * PLAN+GOVERN interview progress (governance-mode 9 / 10.6). Present only in that
31
- * posture; absent leaves the title byte-identical to the pre-governance overlay.
32
- */
33
- interview?: {
34
- round: number;
35
- required: number;
36
- };
37
- }
38
- export declare function QuestionOverlay({ isActive, questions, maxRows, cols, theme, caps, onSubmit, interview, }: QuestionOverlayProps): React.ReactElement;
39
- export {};
@@ -1,258 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- /**
3
- * QuestionOverlay — the keyboard-driven multiple-choice wizard `ask_user`
4
- * renders (plan-mode §6.5).
5
- *
6
- * `OverlayFrame` MODE B (self-managed): the content is a small state machine,
7
- * not a list of rows, and slicing it by element would be meaningless.
8
- *
9
- * THE SINGLE HIGHEST-VALUE DECISION HERE is that the recommended option is the
10
- * initial highlight for every question, so `Enter Enter Enter` is a correct,
11
- * deliberate "use your judgement" path rather than an accident.
12
- *
13
- * `Esc` IS NOT HANDLED HERE. `App` owns it, and the bridge's `settle()` is the
14
- * only place a human request is ever answered. `ConfirmDialog` does the
15
- * opposite — both it and `App` call `resolve` — which is harmless there only by
16
- * accident of promise semantics, and is not a pattern to copy (R-P12).
17
- */
18
- import { useState, useLayoutEffect } from 'react';
19
- import { Text, useInput } from 'ink';
20
- import { pickGlyphs } from '../glyphs.js';
21
- import { wrapToRows } from '../layout/wrap-rows.js';
22
- import { OverlayFrame, overlayBodyRows } from '../layout/OverlayFrame.js';
23
- import { stripPasteFrames } from '../paste-frames.js';
24
- import { stripEnterFrames } from '../enter-frames.js';
25
- import { interviewChipText } from '../governance-status.js';
26
- /** Which option index each question starts on: the recommended one. */
27
- function initialCursors(questions) {
28
- return questions.map((q) => Math.max(0, q.options.findIndex((o) => o.recommended)));
29
- }
30
- function initialSelections(questions) {
31
- return questions.map((q) => {
32
- const recommended = q.options.findIndex((o) => o.recommended);
33
- return new Set(recommended >= 0 ? [recommended] : [0]);
34
- });
35
- }
36
- export function QuestionOverlay({ isActive = true, questions, maxRows, cols, theme, caps, onSubmit, interview, }) {
37
- const glyphs = pickGlyphs(caps);
38
- const [step, setStep] = useState(0);
39
- const [phase, setPhase] = useState('choosing');
40
- const [cursors, setCursors] = useState(() => initialCursors(questions));
41
- const [selections, setSelections] = useState(() => initialSelections(questions));
42
- /**
43
- * THE PER-QUESTION EXPLICIT-MARK BIT (V-1 / D-8).
44
- *
45
- * `initialSelections` PRE-SELECTS the recommended option on EVERY question
46
- * (or the first option when there is none), so "the selection set is empty"
47
- * is unreachable and can never be the test for "did the user choose?". The
48
- * only reliable discriminator is the fact itself: the user pressed SPACE on
49
- * this question. Without it, a user who only MOVES the cursor and presses
50
- * Enter would submit the RECOMMENDED option instead of the highlighted one -
51
- * a silent regression of the wizard's most common path. The bit survives
52
- * Left/Right navigation exactly like `selections` and `cursors` do, and a
53
- * single-choice mark is idempotent (no un-mark; Enter always has at least
54
- * the marked item to submit).
55
- */
56
- const [markedSteps, setMarkedSteps] = useState(() => questions.map(() => false));
57
- const [customs, setCustoms] = useState(() => questions.map(() => ''));
58
- const [draft, setDraft] = useState('');
59
- const [offset, setOffset] = useState(0);
60
- const question = questions[Math.min(step, questions.length - 1)];
61
- const cursor = cursors[step] ?? 0;
62
- const setCursorAt = (index, value) => setCursors((prev) => prev.map((c, i) => (i === index ? value : c)));
63
- const setCustomAt = (index, value) => setCustoms((prev) => prev.map((c, i) => (i === index ? value : c)));
64
- const toggleAt = (index, option) => setSelections((prev) => prev.map((set, i) => {
65
- if (i !== index)
66
- return set;
67
- const next = new Set(set);
68
- if (next.has(option))
69
- next.delete(option);
70
- else
71
- next.add(option);
72
- return next;
73
- }));
74
- const chooseAt = (index, option) => setSelections((prev) => prev.map((set, i) => (i === index ? new Set([option]) : set)));
75
- const markAt = (index) => setMarkedSteps((prev) => prev.map((marked, i) => (i === index ? true : marked)));
76
- const buildAnswers = () => questions.map((q, i) => {
77
- const chosen = [...(selections[i] ?? new Set())].sort((a, b) => a - b);
78
- const labels = chosen.map((index) => q.options[index]?.label ?? '').filter((l) => l.length > 0);
79
- const pickedOther = chosen.some((index) => q.options[index]?.isOther);
80
- return {
81
- id: q.id,
82
- question: q.question,
83
- selected: labels,
84
- custom: pickedOther && (customs[i] ?? '').length > 0 ? customs[i] : null,
85
- };
86
- });
87
- const advance = () => {
88
- if (step + 1 >= questions.length)
89
- setPhase('review');
90
- else {
91
- setStep(step + 1);
92
- setPhase('choosing');
93
- }
94
- };
95
- const goBack = () => {
96
- if (step === 0)
97
- return; // No-op on the first question, by design.
98
- setStep(step - 1);
99
- setPhase('choosing');
100
- };
101
- useInput((input, key) => {
102
- if (!isActive)
103
- return;
104
- if (key.pageUp) {
105
- setOffset(n => Math.max(0, n - 1));
106
- return;
107
- }
108
- if (key.pageDown) {
109
- setOffset(n => n + 1);
110
- return;
111
- }
112
- // App owns Esc for both new overlays (R-P12). Swallow it here so the
113
- // free-text editor below cannot eat the raw escape byte as a character.
114
- if (key.escape)
115
- return;
116
- if (phase === 'review') {
117
- if (key.return) {
118
- onSubmit(buildAnswers());
119
- return;
120
- }
121
- if (key.leftArrow) {
122
- setStep(questions.length - 1);
123
- setPhase('choosing');
124
- }
125
- return;
126
- }
127
- if (phase === 'typingOther') {
128
- if (key.return) {
129
- // An empty commit falls back to the recommended option rather than
130
- // recording a blank answer: the user pressed Enter, which everywhere
131
- // else in this wizard means "accept the sensible default".
132
- if (draft.trim().length === 0) {
133
- const recommended = Math.max(0, question.options.findIndex((o) => o.recommended));
134
- chooseAt(step, recommended);
135
- setCursorAt(step, recommended);
136
- setCustomAt(step, '');
137
- }
138
- else {
139
- setCustomAt(step, draft.trim());
140
- }
141
- setDraft('');
142
- setPhase('choosing');
143
- advance();
144
- return;
145
- }
146
- if (key.leftArrow) {
147
- setDraft('');
148
- setPhase('choosing');
149
- return;
150
- }
151
- if (key.backspace || key.delete) {
152
- setDraft(draft.slice(0, -1));
153
- return;
154
- }
155
- // `stripPasteFrames`, NOT `input` (I-12 / P0-2) -- the same broadcast
156
- // hazard `SettingsScreen` documents at length: a framed paste appended
157
- // verbatim stores NULs that render as nothing.
158
- // `stripEnterFrames` rides inside it for the newline frame a
159
- // Shift+Enter broadcasts (tui-shift-enter-copy-queue 3.5): same hazard,
160
- // same fix, and this order is the one that leaves no NUL in the draft.
161
- if (input && !key.ctrl && !key.meta && !key.tab) {
162
- setDraft(draft + stripPasteFrames(stripEnterFrames(input)));
163
- }
164
- return;
165
- }
166
- // phase === 'choosing'
167
- if (key.upArrow) {
168
- setCursorAt(step, (cursor - 1 + question.options.length) % question.options.length);
169
- return;
170
- }
171
- if (key.downArrow) {
172
- setCursorAt(step, (cursor + 1) % question.options.length);
173
- return;
174
- }
175
- if (key.leftArrow) {
176
- goBack();
177
- return;
178
- }
179
- // SPACE, BY QUESTION SHAPE (D-8). The strict `input === ' '` keeps a
180
- // multi-character paste frame from ever matching (R-8); the Other row is
181
- // a no-op in both shapes because it needs TEXT, and Enter is its key.
182
- if (input === ' ' && !question.options[cursor]?.isOther) {
183
- if (question.allowMultiple) {
184
- toggleAt(step, cursor);
185
- return;
186
- }
187
- // SINGLE CHOICE: mark the highlighted item and STAY - the terminal
188
- // convention of "space selects, enter confirms". The mark is recorded
189
- // both in the selection set (so `[x]` renders) and in the explicit
190
- // mark bit (so a later Enter submits THIS item even after the cursor
191
- // has moved on).
192
- chooseAt(step, cursor);
193
- markAt(step);
194
- return;
195
- }
196
- if (key.return) {
197
- if (question.options[cursor]?.isOther) {
198
- chooseAt(step, cursor);
199
- setDraft(customs[step] ?? '');
200
- setPhase('typingOther');
201
- return;
202
- }
203
- // A single-choice Enter submits the CURSOR item unless the user has
204
- // explicitly space-marked this question, in which case the marked item
205
- // wins even if the cursor has since moved (V-1's regression guard:
206
- // cursor + Enter alone keeps today's behavior, recommended preselect
207
- // and all).
208
- if (!question.allowMultiple) {
209
- if (!markedSteps[step])
210
- chooseAt(step, cursor);
211
- }
212
- else if (!(selections[step] ?? new Set()).has(cursor))
213
- toggleAt(step, cursor);
214
- advance();
215
- }
216
- });
217
- const title = phase === 'review' ? 'Review your answers' : 'Clarify the request';
218
- const position = phase === 'review' ? '' : ` ${step + 1}/${questions.length}`;
219
- const interviewChip = interview ? ` ${interviewChipText(interview.round, interview.required)}` : '';
220
- const hint = phase === 'typingOther'
221
- ? `type your answer ${glyphs.midDot} ${glyphs.enterKey} commit ${glyphs.midDot} ${glyphs.arrowLeft} back ${glyphs.midDot} esc cancel`
222
- : phase === 'review'
223
- ? `${glyphs.enterKey} submit ${glyphs.midDot} ${glyphs.arrowLeft} back ${glyphs.midDot} esc cancel`
224
- : question.options[cursor]?.isOther
225
- ? `${glyphs.arrowUp}${glyphs.arrowDown} choose ${glyphs.midDot} ${glyphs.enterKey} to type ${glyphs.midDot} ${glyphs.arrowLeft} back ${glyphs.midDot} esc cancel`
226
- : `${glyphs.arrowUp}${glyphs.arrowDown} choose ${glyphs.midDot} space select ${glyphs.midDot} ${glyphs.enterKey} next ${glyphs.midDot} ${glyphs.arrowLeft} back ${glyphs.midDot} esc cancel`;
227
- const rowTexts = [];
228
- const optionStarts = [];
229
- const push = (text) => { rowTexts.push(...wrapToRows(text, Math.max(1, cols - 4))); };
230
- if (phase === 'review') {
231
- buildAnswers().forEach((answer, index) => push(`${questions[index].header}: ${answer.custom ?? answer.selected.join(', ')}`));
232
- }
233
- else {
234
- push(question.header);
235
- push(question.question);
236
- question.options.forEach((option, index) => {
237
- optionStarts.push(rowTexts.length);
238
- const mark = (selections[step] ?? new Set()).has(index) ? '[x]' : '[ ]';
239
- push(`${index === cursor ? glyphs.caret : ' '} ${mark} ${option.label}${option.recommended ? ' RECOMMENDED' : ''} ${option.description}`);
240
- });
241
- if (phase === 'typingOther')
242
- push(`${glyphs.caret} ${draft || 'type your own answer'} `);
243
- }
244
- const focus = phase === 'review' ? 0 : phase === 'typingOther'
245
- ? Math.max(0, rowTexts.length - 1) : optionStarts[cursor] ?? 0;
246
- useLayoutEffect(() => {
247
- const height = overlayBodyRows(maxRows, cols);
248
- setOffset(previous => focus < previous ? focus : focus >= previous + height
249
- ? focus - height + 1 : previous);
250
- }, [focus, maxRows, cols, step, phase]);
251
- // `space select` shows for BOTH shapes (AC-10) - 42 characters on the
252
- // single-choice shape without `cancel`, a deliberate 5-column growth inside
253
- // the `cols <= 48` budget this hint exists for (V-12).
254
- const shortHint = phase === 'typingOther' ? 'Enter commit | Left back | Esc cancel'
255
- : phase === 'review' ? 'Enter submit | Left back | Esc cancel'
256
- : '^v choose Space select Enter next Esc';
257
- return _jsx(OverlayFrame, { title: `${title}${position}${interviewChip}`, hint: cols <= 48 ? shortHint : hint, maxRows: maxRows, cols: cols, theme: theme, caps: caps, rows: rowTexts.map((line, index) => _jsx(Text, { wrap: "truncate", children: line || ' ' }, index)), scrollOffset: offset, onScrollClamp: setOffset });
258
- }
@@ -1,22 +0,0 @@
1
- import React from 'react';
2
- import type { PendingSteering } from '../../agent/queued-messages.js';
3
- import type { Theme } from '../theme.js';
4
- import type { TermCapabilities } from '../capabilities.js';
5
- export interface QueueTextRow {
6
- queueId: string;
7
- offset: number;
8
- text: string;
9
- }
10
- /** Preserve visible whitespace and display terminal controls as harmless escapes. */
11
- export declare function projectQueueRows(pending: readonly PendingSteering[], columns: number): QueueTextRow[];
12
- /** Anchor by stable message ID and source offset, including long soft-wrapped lines. */
13
- export declare function restoreQueueAnchor(before: readonly QueueTextRow[], after: readonly QueueTextRow[], scroll: number): number;
14
- export declare function QueueOverlay(props: {
15
- pending: readonly PendingSteering[];
16
- cols: number;
17
- maxRows: number;
18
- scrollOffset: number;
19
- onScrollClamp: (offset: number) => void;
20
- theme: Theme;
21
- caps: TermCapabilities;
22
- }): React.ReactElement;
@@ -1,79 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { useEffect, useMemo, useRef } from 'react';
3
- import { Text } from 'ink';
4
- import stringWidth from 'string-width';
5
- import { OverlayFrame } from '../layout/OverlayFrame.js';
6
- import { graphemes } from '../editor-navigation.js';
7
- /** Preserve visible whitespace and display terminal controls as harmless escapes. */
8
- export function projectQueueRows(pending, columns) {
9
- const width = Math.max(1, columns);
10
- const rows = [];
11
- for (const [index, item] of pending.entries()) {
12
- rows.push({ queueId: item.queueId, offset: -1, text: `Queue ${index + 1}` });
13
- let text = '';
14
- let cells = 0;
15
- let offset = 0;
16
- const flush = () => {
17
- rows.push({ queueId: item.queueId, offset, text });
18
- text = '';
19
- cells = 0;
20
- };
21
- for (const part of graphemes(item.text)) {
22
- if (part.text === '\n' || part.text === '\r\n') {
23
- flush();
24
- offset = part.end;
25
- continue;
26
- }
27
- const safe = part.text === '\t' ? ' '.repeat(4 - cells % 4)
28
- : part.text.replace(/[\x00-\x1f\x7f-\x9f]/g, (char) => `\\x${char.charCodeAt(0).toString(16).padStart(2, '0')}`);
29
- const units = safe === part.text ? [safe] : Array.from(safe);
30
- for (const unit of units) {
31
- const size = stringWidth(unit);
32
- if (cells + size > width && text) {
33
- flush();
34
- offset = part.index;
35
- }
36
- text += unit;
37
- cells += size;
38
- }
39
- }
40
- flush();
41
- }
42
- return rows;
43
- }
44
- /** Anchor by stable message ID and source offset, including long soft-wrapped lines. */
45
- export function restoreQueueAnchor(before, after, scroll) {
46
- const anchor = before[Math.min(scroll, before.length - 1)];
47
- if (!anchor || !after.length)
48
- return 0;
49
- let target = -1;
50
- for (let i = 0; i < after.length; i++) {
51
- if (after[i].queueId === anchor.queueId && after[i].offset <= anchor.offset)
52
- target = i;
53
- }
54
- if (target >= 0)
55
- return target;
56
- const next = before.slice(scroll).find((row) => after.some((item) => item.queueId === row.queueId));
57
- if (next)
58
- return after.findIndex((row) => row.queueId === next.queueId);
59
- const previous = [...before.slice(0, scroll)].reverse()
60
- .find((row) => after.some((item) => item.queueId === row.queueId));
61
- return previous ? after.findIndex((row) => row.queueId === previous.queueId) : 0;
62
- }
63
- export function QueueOverlay(props) {
64
- const { pending, cols, scrollOffset, onScrollClamp, theme } = props;
65
- const projected = useMemo(() => projectQueueRows(pending, cols - (cols >= 48 ? 4 : 2)), [pending, cols]);
66
- const previous = useRef({ rows: projected, scroll: scrollOffset });
67
- const anchored = previous.current.rows === projected ? scrollOffset
68
- : restoreQueueAnchor(previous.current.rows, projected, previous.current.scroll);
69
- const bodyRows = Math.max(1, Math.floor(props.maxRows) - (cols >= 48 ? 5 : 3));
70
- const offset = Math.max(0, Math.min(anchored, projected.length - bodyRows));
71
- useEffect(() => {
72
- previous.current = { rows: projected, scroll: offset };
73
- if (offset !== scrollOffset)
74
- onScrollClamp(offset);
75
- }, [projected, offset, scrollOffset, onScrollClamp]);
76
- const rows = useMemo(() => projected.length ? projected.map((row, index) => _jsx(Text, { wrap: "truncate", color: theme.primary, children: row.text || ' ' }, `${row.queueId}:${index}`))
77
- : [_jsx(Text, { children: "Queue is empty" }, "empty")], [projected, theme]);
78
- return _jsx(OverlayFrame, { ...props, title: `Queue: ${pending.length} pending`, hint: "PgUp/PgDn | Up/Down | Esc", rows: rows, scrollOffset: offset });
79
- }