@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,54 +0,0 @@
1
- /**
2
- * TodoCard — the transcript checklist entry (todo-plan-execution §6.2;
3
- * todo-acceptance-criteria §6.10).
4
- *
5
- * ASCII ONLY: every glyph comes from `pickGlyphs`.
6
- *
7
- * ONE CARD PER USER TURN, REWRITTEN IN PLACE. The rail is EPHEMERAL and this is the
8
- * HISTORY, exactly as `TeamPanel` and `TeamCard` divide the same work. It renders
9
- * through the shared `EntryFrame` supplied by `EntryView`, so a plan reads as one
10
- * more step in the transcript rather than a second kind of object.
11
- *
12
- * THE FULL LIST, NO WINDOWING (the transcript scrolls; the rail does not), and
13
- * NEVER ANIMATED even while `live` — a resumed session would otherwise spin forever
14
- * on a card whose run ended days ago.
15
- *
16
- * THE ACCEPTANCE BLOCK ADDS ROWS, NOT A CARD (§6.10): same frame, same marker
17
- * column, one block underneath. Only a FAILED criterion gets an evidence line
18
- * (D-14), which is what keeps the height exactly `1 + items.length + failedCount`.
19
- */
20
- import React from 'react';
21
- import type { Theme } from '../theme.js';
22
- import type { TermCapabilities } from '../capabilities.js';
23
- import type { AcceptanceSnapshot, TodoItem } from '../../todo/types.js';
24
- export interface TodoCardProps {
25
- items: TodoItem[];
26
- doneCount: number;
27
- total: number;
28
- /**
29
- * The acceptance projection (todo-acceptance-criteria §6.10).
30
- *
31
- * OPTIONAL, unlike `TodoSnapshot.acceptance` (P1-4): a `TodoSnapshot` has exactly
32
- * one writer and can fail closed, while this entry's sources include transcript
33
- * entries read back from a session file written before the feature existed. A
34
- * required field there would be typed "present" and be `undefined` at runtime.
35
- */
36
- acceptance?: AcceptanceSnapshot | null;
37
- live: boolean;
38
- /** Saved mid-run and resumed: the run behind this card died with the process. */
39
- interrupted?: boolean;
40
- theme: Theme;
41
- caps: TermCapabilities;
42
- }
43
- /** The card's aggregate colour: complete is done, anything else is in flight. */
44
- export declare function todoCardColor(doneCount: number, total: number, live: boolean, theme: Theme): string | undefined;
45
- declare function TodoCardImpl(props: TodoCardProps): React.ReactElement;
46
- /**
47
- * `React.memo` with the DEFAULT comparator (tui-render-performance L2 / R3).
48
- * `mapEntry` already preserves object identity for untouched entries, so the array
49
- * props below are stable references on a settled card, and `theme` / `caps` are
50
- * `useMemo`d in `App.tsx` (I-L2-1). `acceptance` is a NEW object whenever a verdict
51
- * lands and the SAME reference otherwise, which is exactly what the comparator wants.
52
- */
53
- export declare const TodoCard: React.MemoExoticComponent<typeof TodoCardImpl>;
54
- export {};
@@ -1,98 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /**
3
- * TodoCard — the transcript checklist entry (todo-plan-execution §6.2;
4
- * todo-acceptance-criteria §6.10).
5
- *
6
- * ASCII ONLY: every glyph comes from `pickGlyphs`.
7
- *
8
- * ONE CARD PER USER TURN, REWRITTEN IN PLACE. The rail is EPHEMERAL and this is the
9
- * HISTORY, exactly as `TeamPanel` and `TeamCard` divide the same work. It renders
10
- * through the shared `EntryFrame` supplied by `EntryView`, so a plan reads as one
11
- * more step in the transcript rather than a second kind of object.
12
- *
13
- * THE FULL LIST, NO WINDOWING (the transcript scrolls; the rail does not), and
14
- * NEVER ANIMATED even while `live` — a resumed session would otherwise spin forever
15
- * on a card whose run ended days ago.
16
- *
17
- * THE ACCEPTANCE BLOCK ADDS ROWS, NOT A CARD (§6.10): same frame, same marker
18
- * column, one block underneath. Only a FAILED criterion gets an evidence line
19
- * (D-14), which is what keeps the height exactly `1 + items.length + failedCount`.
20
- */
21
- import React from 'react';
22
- import { Box, Text } from 'ink';
23
- import { pickGlyphs } from '../glyphs.js';
24
- import { railBorderProps } from '../layout/Gutter.js';
25
- import { derivePlanPhase } from '../../todo/acceptance.js';
26
- /** The card's aggregate colour: complete is done, anything else is in flight. */
27
- export function todoCardColor(doneCount, total, live, theme) {
28
- if (live)
29
- return theme.toolRunning;
30
- if (total > 0 && doneCount === total)
31
- return theme.toolDone;
32
- return theme.muted;
33
- }
34
- function marker(item, glyphs) {
35
- if (item.status === 'completed')
36
- return glyphs.todoDone;
37
- if (item.status === 'in_progress')
38
- return glyphs.todoActive;
39
- return glyphs.todoPending;
40
- }
41
- function rowColor(item, theme) {
42
- if (item.status === 'completed')
43
- return theme.muted;
44
- if (item.status === 'in_progress')
45
- return theme.primary;
46
- return theme.hintFg ?? theme.muted;
47
- }
48
- /** `passed` reuses the done glyph; `failed` is the one new meaning (D-9). */
49
- function acceptanceMarker(item, glyphs) {
50
- if (item.status === 'passed')
51
- return glyphs.todoDone;
52
- if (item.status === 'failed')
53
- return glyphs.todoFail;
54
- if (item.status === 'in_progress')
55
- return glyphs.todoActive;
56
- return glyphs.todoPending;
57
- }
58
- function acceptanceRowColor(item, theme) {
59
- if (item.status === 'failed')
60
- return theme.toolError;
61
- if (item.status === 'passed')
62
- return theme.muted;
63
- if (item.status === 'in_progress')
64
- return theme.primary;
65
- return theme.hintFg ?? theme.muted;
66
- }
67
- /**
68
- * All passed reads as done, any failure as an error, otherwise muted; while the run
69
- * is live and the plan is in VERIFY it reads as running - the same expression family
70
- * `todoCardColor` uses one level up.
71
- */
72
- function acceptanceTitleColor(acceptance, items, live, theme) {
73
- if (acceptance.failedCount > 0)
74
- return theme.toolError;
75
- if (live && derivePlanPhase(items, acceptance.items) === 'verify')
76
- return theme.toolRunning;
77
- if (acceptance.total > 0 && acceptance.checkedCount === acceptance.total)
78
- return theme.toolDone;
79
- return theme.muted;
80
- }
81
- function TodoCardImpl(props) {
82
- const { items, doneCount, total, acceptance, live, interrupted, theme, caps } = props;
83
- const glyphs = pickGlyphs(caps);
84
- const criteria = acceptance && acceptance.total > 0 ? acceptance : null;
85
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: theme.accent, bold: true, children: "Todos" }), _jsxs(Text, { color: todoCardColor(doneCount, total, live, theme), children: [' ', doneCount, "/", total] }), interrupted && (
86
- // A resumed `2/7` would otherwise read as a run still in flight (P2-6).
87
- // Saying so plainly is the same fix `TeamCard` makes for a dispatch that
88
- // never got a duration.
89
- _jsxs(Text, { color: theme.muted, children: [' ', "interrupted (session resumed)"] }))] }), _jsx(Box, { flexDirection: "column", flexShrink: 0, paddingLeft: 1, ...railBorderProps(glyphs.railVertical, theme.border), children: items.map((item, index) => (_jsxs(Text, { wrap: "truncate", color: rowColor(item, theme), children: [marker(item, glyphs).padEnd(3), item.status === 'in_progress' ? item.activeForm : item.content] }, `${index}-${item.content}`))) }), criteria && (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { wrap: "truncate", children: [_jsx(Text, { color: theme.accent, bold: true, children: "Acceptance" }), _jsxs(Text, { color: acceptanceTitleColor(criteria, items, live, theme), children: [' ', criteria.checkedCount, "/", criteria.total, " checked", criteria.failedCount > 0 ? ` !${criteria.failedCount} failed` : ''] })] }), _jsx(Box, { flexDirection: "column", flexShrink: 0, paddingLeft: 1, ...railBorderProps(glyphs.railVertical, theme.border), children: criteria.items.map((item, index) => (_jsxs(React.Fragment, { children: [_jsxs(Text, { wrap: "truncate", color: acceptanceRowColor(item, theme), children: [acceptanceMarker(item, glyphs).padEnd(3), item.content] }), item.status === 'failed' && item.evidence.length > 0 && (_jsxs(Text, { wrap: "truncate", color: theme.muted, children: [' ', item.evidence] }))] }, `acc-${index}-${item.content}`))) })] }))] }));
90
- }
91
- /**
92
- * `React.memo` with the DEFAULT comparator (tui-render-performance L2 / R3).
93
- * `mapEntry` already preserves object identity for untouched entries, so the array
94
- * props below are stable references on a settled card, and `theme` / `caps` are
95
- * `useMemo`d in `App.tsx` (I-L2-1). `acceptance` is a NEW object whenever a verdict
96
- * lands and the SAME reference otherwise, which is exactly what the comparator wants.
97
- */
98
- export const TodoCard = React.memo(TodoCardImpl);
@@ -1,81 +0,0 @@
1
- /**
2
- * Tool-call card (spec §3.5): a per-tool glyph, the tool name, a compact args
3
- * summary, a colored status badge, and a duration, over a collapsible rich
4
- * preview delegated to `<ToolPreview>`. Collapsed to the first 8 lines with a
5
- * `+M lines (Ctrl+O)` footer; `Ctrl+O` / `/expand` toggle the full preview.
6
- *
7
- * Two v0.4.0 changes (§4.1 / §4.3):
8
- * - capabilities arrive as a prop. This used to infer Unicode support by
9
- * comparing `theme.symbols.gaugeFull` against a literal block character, so
10
- * editing an unrelated gauge glyph would have silently sent every tool icon
11
- * back to ASCII;
12
- * - the preview's round border is gone. It cost 2 rows and 4 columns per card,
13
- * and nested visibly inside markdown code blocks. A left rail carries the
14
- * same grouping in 1 column and 0 rows.
15
- */
16
- import React from 'react';
17
- import type { Theme } from '../theme.js';
18
- import type { TermCapabilities } from '../capabilities.js';
19
- import type { ToolStatus } from '../../agent/reducer.js';
20
- import type { FilePatch } from '../../tools/patch.js';
21
- interface ToolCardProps {
22
- name: string;
23
- label: string;
24
- argsRaw: string;
25
- args?: Record<string, unknown>;
26
- status: ToolStatus;
27
- preview?: string;
28
- /**
29
- * The structured file diff, when the tool produced one (§3.4). Present it and
30
- * `DiffView` draws INSTEAD of `ToolPreview`; absent — a session saved by an
31
- * older build, an entry the store's 64-write ring evicted, or a toolset built
32
- * without a recorder — and the text preview renders exactly what it does
33
- * today. Nothing ever renders blank.
34
- */
35
- patch?: FilePatch;
36
- durationMs?: number;
37
- isError?: boolean;
38
- expanded?: boolean;
39
- reducedMotion?: boolean;
40
- /**
41
- * The sanitised live tail while the tool runs
42
- * (agent-activity-presentation-live §3.3.4).
43
- *
44
- * PASSED AS `live={entry.live}` AND NEVER `live={entry.live ?? []}` (P2-4).
45
- * This component is `React.memo` with the DEFAULT comparator, so a fresh `[]`
46
- * per render is a changed prop and defeats the boundary for every settled card
47
- * in the transcript — which is exactly why `EMPTY_LINES` above exists.
48
- */
49
- live?: readonly string[];
50
- /** Epoch ms of the last output row; with `nowSec`, the stall row's clock. */
51
- lastOutputAt?: number;
52
- /**
53
- * Wall-clock SECONDS, passed ONLY to running entries (D-29 / D-36).
54
- *
55
- * Seconds and not milliseconds, and `undefined` on every other card, for the
56
- * same reason: a prop that changed five times a second on every entry would
57
- * defeat this memo boundary transcript-wide. The value is wall-clock rather
58
- * than the ticker's `elapsedMs` because the stall is `now - lastOutputAt` and
59
- * `lastOutputAt` is epoch ms; the ticker's job is to cause the render.
60
- */
61
- nowSec?: number;
62
- theme: Theme;
63
- caps: TermCapabilities;
64
- }
65
- export declare function statusColor(status: ToolStatus, theme: Theme): string | undefined;
66
- /** The tool's own glyph, used by `EntryView` as the entry's rail marker. */
67
- export declare function toolEntryGlyph(name: string, caps: TermCapabilities): string;
68
- declare function ToolCardImpl(props: ToolCardProps): React.ReactElement;
69
- /**
70
- * `React.memo` with the DEFAULT comparator (tui-render-performance L2 / R3).
71
- * Every prop is a scalar except `args` (a stable reference on a settled entry),
72
- * `patch` and `theme` / `caps` (both `useMemo`d in `App.tsx` — I-L2-1).
73
- *
74
- * `patch` QUALIFIES ONLY BECAUSE THE REDUCER WRITES IT ONCE, at `toolExecEnd`,
75
- * and never rebuilds it — `mapEntry` preserves object identity for untouched
76
- * entries. A future action that recomputed or normalized a patch would turn this
77
- * boundary into a no-op WITH NOTHING FAILING, which is the same trap I-L2-1
78
- * exists to catch for `theme` and `caps` (P2-9).
79
- */
80
- export declare const ToolCard: React.MemoExoticComponent<typeof ToolCardImpl>;
81
- export {};
@@ -1,160 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- /**
3
- * Tool-call card (spec §3.5): a per-tool glyph, the tool name, a compact args
4
- * summary, a colored status badge, and a duration, over a collapsible rich
5
- * preview delegated to `<ToolPreview>`. Collapsed to the first 8 lines with a
6
- * `+M lines (Ctrl+O)` footer; `Ctrl+O` / `/expand` toggle the full preview.
7
- *
8
- * Two v0.4.0 changes (§4.1 / §4.3):
9
- * - capabilities arrive as a prop. This used to infer Unicode support by
10
- * comparing `theme.symbols.gaugeFull` against a literal block character, so
11
- * editing an unrelated gauge glyph would have silently sent every tool icon
12
- * back to ASCII;
13
- * - the preview's round border is gone. It cost 2 rows and 4 columns per card,
14
- * and nested visibly inside markdown code blocks. A left rail carries the
15
- * same grouping in 1 column and 0 rows.
16
- */
17
- import React from 'react';
18
- import { Box, Text } from 'ink';
19
- import Spinner from 'ink-spinner';
20
- import { pickGlyphs, toolGlyph } from '../glyphs.js';
21
- import { railBorderProps } from '../layout/Gutter.js';
22
- import { splitLinesCached } from '../render-cache.js';
23
- import { formatDuration } from '../../agent/usage.js';
24
- import { ToolPreview, bashBadge } from './ToolPreview.js';
25
- import { DiffView } from './DiffView.js';
26
- import { STALL_AFTER_MS } from '../../tools/tool-output-store.js';
27
- /** Number of preview lines shown before collapse. */
28
- const COLLAPSED_LINES = 8;
29
- /** Shared empty slice, so an argument-less card allocates nothing per frame. */
30
- const EMPTY_LINES = [];
31
- export function statusColor(status, theme) {
32
- switch (status) {
33
- case 'pending':
34
- return theme.toolPending;
35
- case 'running':
36
- return theme.toolRunning;
37
- case 'done':
38
- return theme.toolDone;
39
- case 'error':
40
- return theme.toolError;
41
- }
42
- }
43
- /** One-line summary of the tool arguments for the card header. */
44
- function summarizeArgs(name, ellipsis, args, argsRaw) {
45
- if (args) {
46
- if (name === 'bash' && typeof args.command === 'string')
47
- return args.command;
48
- if (typeof args.path === 'string')
49
- return args.path;
50
- if (typeof args.pattern === 'string')
51
- return args.pattern;
52
- const keys = Object.keys(args);
53
- if (keys.length > 0)
54
- return keys.map((k) => `${k}=${short(args[k], ellipsis)}`).join(' ');
55
- }
56
- return (argsRaw ?? '').slice(0, 60);
57
- }
58
- function short(v, ellipsis) {
59
- const s = typeof v === 'string' ? v : JSON.stringify(v);
60
- return s.length > 40 ? `${s.slice(0, 40)}${ellipsis}` : s;
61
- }
62
- /** The badge label shown to the right of the tool name. */
63
- function badgeLabel(name, status, preview) {
64
- if (name === 'bash' && (status === 'done' || status === 'error')) {
65
- return bashBadge(status, preview).text;
66
- }
67
- switch (status) {
68
- case 'pending':
69
- return 'queued';
70
- case 'running':
71
- return 'running';
72
- case 'done':
73
- return 'done';
74
- case 'error':
75
- return 'failed';
76
- }
77
- }
78
- /** The tool's own glyph, used by `EntryView` as the entry's rail marker. */
79
- export function toolEntryGlyph(name, caps) {
80
- return toolGlyph(pickGlyphs(caps), name);
81
- }
82
- function ToolCardImpl(props) {
83
- const { name, argsRaw, args, status, preview, patch, durationMs, isError, expanded, reducedMotion, live, lastOutputAt, nowSec, theme, caps, } = props;
84
- const glyphs = pickGlyphs(caps);
85
- const color = statusColor(status, theme);
86
- const previewText = preview ?? '';
87
- // `splitLinesCached` rather than `previewText.split('\n')`: a stored preview
88
- // is immutable once written, and this used to reallocate up to 200 strings per
89
- // card per frame (R3).
90
- const previewLines = previewText.length > 0 ? splitLinesCached(previewText) : EMPTY_LINES;
91
- const ceiling = expanded ? previewLines.length : COLLAPSED_LINES;
92
- const visibleLines = ceiling >= previewLines.length ? previewLines : previewLines.slice(0, ceiling);
93
- const hidden = previewLines.length - visibleLines.length;
94
- const settled = status === 'done' || status === 'error';
95
- const showPatch = !!patch && settled;
96
- // The live tail (agent-activity-presentation-live §3.3.4). `expanded` is
97
- // deliberately ABSENT from this arithmetic: `Ctrl+O` is inert on a live card
98
- // (D-26), because expansion is a promise about STORED content and the store
99
- // deliberately holds eight rows. A key that silently does nothing is better
100
- // than a key that promises the rest of a 400 MB stream.
101
- //
102
- // THE TAIL IS THE **LAST** ROWS, and the settled preview above keeps its
103
- // head-first slice (E-21). Two different ends because they answer two
104
- // different questions — "what did this command do" versus "what is it doing
105
- // NOW" (D-25). Head-first while live would freeze on the first eight lines a
106
- // build ever printed and then never change again.
107
- const liveRows = live ?? EMPTY_LINES;
108
- const liveCeiling = COLLAPSED_LINES;
109
- const visibleLive = liveRows.length > liveCeiling ? liveRows.slice(-Math.max(1, liveCeiling)) : liveRows;
110
- const showLive = !settled && visibleLive.length > 0;
111
- // THE OUTER GUARD WIDENS WITH THE BRANCH (P2-2). It was `previewLines.length >
112
- // 0 && ...`, and the reducer now truncates the stored preview to ONE LINE when
113
- // a patch is attached (D-19) — so a card whose preview were ever empty would
114
- // render its header and swallow the diff, silently. It widens a second time
115
- // here, for the third branch: without `|| showLive` the tail would be computed
116
- // and never drawn.
117
- const showBody = ((previewLines.length > 0 || showPatch) && settled) || showLive;
118
- // ONE FOOTER ROW, ALWAYS, matching `estimateEntryRows`'s arithmetic exactly: a
119
- // CONSTANT row count is what lets the estimate be exact rather than an upper
120
- // bound. `nowSec` is absent until the first tick, which reads as "not stalled".
121
- const stalledFor = nowSec !== undefined && lastOutputAt !== undefined
122
- ? nowSec * 1000 - lastOutputAt
123
- : 0;
124
- const liveFooter = stalledFor >= STALL_AFTER_MS
125
- ? `no output for ${Math.floor(stalledFor / 1000)}s`
126
- : '(running)';
127
- const badge = status === 'running' && !reducedMotion && caps.unicode ? (_jsxs(Text, { color: color, children: [_jsx(Spinner, { type: "dots" }), " running"] })) : (_jsxs(Text, { color: color, children: [status === 'running' ? `${glyphs.spinnerStill} ` : '', badgeLabel(name, status, previewText)] }));
128
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: theme.accent, bold: true, children: name }), _jsxs(Text, { color: theme.muted, children: [" ", summarizeArgs(name, glyphs.ellipsis, args, argsRaw), " "] }), badge, durationMs !== undefined && (_jsxs(Text, { color: theme.muted, children: [" (", formatDuration(durationMs), ")"] }))] }), showBody && (_jsx(Box, { flexDirection: "column", flexShrink: 0, paddingLeft: 1, ...railBorderProps(glyphs.railVertical, isError ? theme.toolError : theme.border), children: showLive ? (_jsxs(_Fragment, { children: [visibleLive.map((row, i) => (
129
- // The row is already terminal-safe and clipped at
130
- // `LIVE_ROW_MAX_CHARS` by `sanitizeChunk`, so `wrap="truncate"`
131
- // is an exact height rather than a hope — which is the coupling
132
- // `estimateEntryRows`'s live branch relies on.
133
- //
134
- // The index IS the key: these rows are positional slots in a
135
- // ring, not identities, and the whole array is replaced on every
136
- // chunk anyway.
137
- //
138
- // AN EMPTY ROW RENDERS AS A SPACE, and that is not cosmetic:
139
- // Ink measures a `<Text>` with an empty child as ZERO rows, so a
140
- // blank separator line — which `npm test`, `cargo` and every
141
- // build tool print — would make the card shorter than
142
- // `estimateEntryRows` charged for it. That is an over-estimate,
143
- // the safe direction, but it would quietly cost §3.3.4's
144
- // "constant row count" the exactness its arithmetic claims. A
145
- // space is also what the terminal itself shows for a blank line.
146
- // eslint-disable-next-line react/no-array-index-key
147
- _jsx(Text, { wrap: "truncate", color: theme.muted, children: row.length > 0 ? row : ' ' }, i))), _jsx(Text, { color: theme.muted, children: liveFooter })] })) : showPatch ? (_jsx(DiffView, { patch: patch, expanded: expanded, theme: theme })) : (_jsxs(_Fragment, { children: [_jsx(ToolPreview, { name: name, lines: visibleLines, theme: theme, isError: isError }), !expanded && hidden > 0 && (_jsxs(Text, { color: theme.muted, children: ["+", hidden, " ", hidden === 1 ? 'line' : 'lines', " (Ctrl+O)"] })), expanded && hidden > 0 && (_jsxs(Text, { color: theme.muted, children: ["+", hidden, " ", hidden === 1 ? 'line' : 'lines', " ", glyphs.midDot, " shown in full when this entry finishes"] })), expanded && previewLines.length > COLLAPSED_LINES && (_jsx(Text, { color: theme.muted, children: "(Ctrl+O to collapse)" }))] })) }))] }));
148
- }
149
- /**
150
- * `React.memo` with the DEFAULT comparator (tui-render-performance L2 / R3).
151
- * Every prop is a scalar except `args` (a stable reference on a settled entry),
152
- * `patch` and `theme` / `caps` (both `useMemo`d in `App.tsx` — I-L2-1).
153
- *
154
- * `patch` QUALIFIES ONLY BECAUSE THE REDUCER WRITES IT ONCE, at `toolExecEnd`,
155
- * and never rebuilds it — `mapEntry` preserves object identity for untouched
156
- * entries. A future action that recomputed or normalized a patch would turn this
157
- * boundary into a no-op WITH NOTHING FAILING, which is the same trap I-L2-1
158
- * exists to catch for `theme` and `caps` (P2-9).
159
- */
160
- export const ToolCard = React.memo(ToolCardImpl);
@@ -1,59 +0,0 @@
1
- /**
2
- * Per-tool rich preview (spec §3.5). Selects a renderer by tool name: colored
3
- * unified diffs (`edit_file`), a byte/path summary (`write_file`), a dimmed
4
- * line-number gutter (`read_file`), a status-authoritative exit badge with a
5
- * best-effort footer parse (`bash`), a dir/file/size listing (`list_dir`), a
6
- * flat path list (`glob`), and a plain fallback (`grep` / default).
7
- *
8
- * The classification helpers are pure and exported so they are unit-testable
9
- * without Ink.
10
- */
11
- import React from 'react';
12
- import type { Theme } from '../theme.js';
13
- import { type ToolStatus } from '../../agent/reducer.js';
14
- export type DiffClass = 'add' | 'remove' | 'meta' | 'context';
15
- /**
16
- * Classify a unified-diff line. Meta prefixes (`@@`, `---`, `+++`) are tested
17
- * FIRST so a `--- path` header is not mis-read as a single-char removal (P2-8);
18
- * the `Applied edit to <path>:` lead-in falls through to `context`.
19
- */
20
- export declare function classifyDiffLine(line: string): DiffClass;
21
- /**
22
- * Derive the bash badge. The exit status is authoritative (the tool returns an
23
- * error result iff the exit code is non-zero), so the label is `exit 0` /
24
- * `failed` from `status`; a real `[exit code N]` / `[signal X]` last line is
25
- * parsed best-effort for the exact number, falling back to the status label
26
- * when the footer was truncated out of the stored preview (P1-2).
27
- */
28
- export declare function bashBadge(status: ToolStatus, preview: string): {
29
- text: string;
30
- ok: boolean;
31
- };
32
- /** Parse the real `Wrote <n> bytes to <path>` result — bytes+path only (P2-7). */
33
- export declare function parseWriteFile(text: string): {
34
- bytes: number;
35
- path: string;
36
- } | null;
37
- /** `3 questions · Postgres · REST` — or `dismissed`. */
38
- export declare function summarizeAskUser(lines: readonly string[]): string | null;
39
- export interface ListRow {
40
- kind: 'dir' | 'file';
41
- name: string;
42
- size?: string;
43
- }
44
- /** Parse a real `list_dir` row (`dir <name>/` / `file <name> (<n>b)`) (P2-9). */
45
- export declare function parseListRow(line: string): ListRow | null;
46
- /**
47
- * No `caps` here on purpose. The only glyph this component ever spelled was the
48
- * preview truncation marker, and that now comes from the constant its producer
49
- * writes (`PREVIEW_TRUNCATION_MARK`), so there is nothing left to degrade — and
50
- * a prop no body reads is exactly the kind of dead weight the last round removed.
51
- */
52
- interface ToolPreviewProps {
53
- name: string;
54
- lines: readonly string[];
55
- theme: Theme;
56
- isError?: boolean;
57
- }
58
- export declare function ToolPreview({ name, lines, theme, isError }: ToolPreviewProps): React.ReactElement;
59
- export {};
@@ -1,208 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box, Text } from 'ink';
3
- import { PREVIEW_TRUNCATION_MARK } from '../../agent/reducer.js';
4
- /**
5
- * Classify a unified-diff line. Meta prefixes (`@@`, `---`, `+++`) are tested
6
- * FIRST so a `--- path` header is not mis-read as a single-char removal (P2-8);
7
- * the `Applied edit to <path>:` lead-in falls through to `context`.
8
- */
9
- export function classifyDiffLine(line) {
10
- if (line.startsWith('@@') || line.startsWith('---') || line.startsWith('+++'))
11
- return 'meta';
12
- if (line.startsWith('+'))
13
- return 'add';
14
- if (line.startsWith('-'))
15
- return 'remove';
16
- return 'context';
17
- }
18
- const BASH_FOOTER_RE = /^\[(?:exit code (\d+)|signal (\w+))\]$/;
19
- /**
20
- * Derive the bash badge. The exit status is authoritative (the tool returns an
21
- * error result iff the exit code is non-zero), so the label is `exit 0` /
22
- * `failed` from `status`; a real `[exit code N]` / `[signal X]` last line is
23
- * parsed best-effort for the exact number, falling back to the status label
24
- * when the footer was truncated out of the stored preview (P1-2).
25
- */
26
- export function bashBadge(status, preview) {
27
- const ok = status === 'done';
28
- const lines = preview.split('\n').map((l) => l.trimEnd()).filter((l) => l.length > 0);
29
- const last = lines[lines.length - 1] ?? '';
30
- const m = BASH_FOOTER_RE.exec(last);
31
- if (m) {
32
- if (m[1] !== undefined)
33
- return { text: `exit ${m[1]}`, ok };
34
- return { text: `signal ${m[2]}`, ok };
35
- }
36
- return { text: ok ? 'exit 0' : status === 'error' ? 'failed' : 'pending', ok };
37
- }
38
- const WRITE_RE = /^Wrote (\d+) bytes to (.+)$/;
39
- /** Parse the real `Wrote <n> bytes to <path>` result — bytes+path only (P2-7). */
40
- export function parseWriteFile(text) {
41
- const line = text.split('\n').find((l) => l.trim().length > 0) ?? '';
42
- const m = WRITE_RE.exec(line.trim());
43
- if (!m)
44
- return null;
45
- return { bytes: Number.parseInt(m[1], 10), path: m[2] };
46
- }
47
- /**
48
- * Parse the JSON tail of a tool result whose first line is prose.
49
- *
50
- * FAILS SOFT, ALWAYS. This runs inside a render pass, and the stored preview may
51
- * have been truncated at `STORED_PREVIEW_CHARS` or restored from a session file
52
- * written by another build. `null` means "fall through to the generic
53
- * renderer", never "throw while drawing the transcript".
54
- */
55
- function parseJsonTail(lines) {
56
- const start = lines.findIndex((l) => l.trimStart().startsWith('{'));
57
- if (start < 0)
58
- return null;
59
- try {
60
- return JSON.parse(lines.slice(start).join('\n'));
61
- }
62
- catch {
63
- return null;
64
- }
65
- }
66
- /** `3 questions · Postgres · REST` — or `dismissed`. */
67
- export function summarizeAskUser(lines) {
68
- const parsed = parseJsonTail(lines);
69
- if (!parsed || !Array.isArray(parsed.answers))
70
- return null;
71
- if (parsed.cancelled)
72
- return 'dismissed';
73
- const count = parsed.answers.length;
74
- const picks = parsed.answers
75
- .map((a) => (typeof a.custom === 'string' && a.custom.length > 0
76
- ? a.custom
77
- : Array.isArray(a.selected) ? a.selected.join('/') : ''))
78
- .filter((s) => s.length > 0);
79
- return [`${count} question${count === 1 ? '' : 's'}`, ...picks].join(' - ');
80
- }
81
- /** Parse a real `list_dir` row (`dir <name>/` / `file <name> (<n>b)`) (P2-9). */
82
- export function parseListRow(line) {
83
- const dir = /^dir\s+(.*?)\/?\s*$/.exec(line);
84
- if (dir)
85
- return { kind: 'dir', name: dir[1].trimEnd() };
86
- const file = /^file\s+(.*?)(?:\s+\((\d+b)\))?\s*$/.exec(line);
87
- if (file)
88
- return { kind: 'file', name: file[1].trimEnd(), size: file[2] };
89
- return null;
90
- }
91
- function diffColor(cls, theme) {
92
- switch (cls) {
93
- case 'add':
94
- return theme.diff.add;
95
- case 'remove':
96
- return theme.diff.remove;
97
- case 'meta':
98
- return theme.diff.meta;
99
- case 'context':
100
- return theme.diff.context;
101
- }
102
- }
103
- function renderDiff(lines, theme) {
104
- return lines.map((line, i) => (_jsx(Text, { color: diffColor(classifyDiffLine(line), theme), children: line.length > 0 ? line : ' ' }, i)));
105
- }
106
- function renderWrite(lines, theme) {
107
- const parsed = parseWriteFile(lines.join('\n'));
108
- if (!parsed)
109
- return renderPlain(lines, theme, false);
110
- return [
111
- _jsxs(Text, { color: theme.diff.add, children: ["+ wrote ", parsed.path, " (", parsed.bytes, " B)"] }, "w"),
112
- ];
113
- }
114
- function renderRead(lines, theme) {
115
- // Numbered lines are `%5d content`; dim the 7-char gutter, keep content plain.
116
- return lines.map((line, i) => (_jsxs(Text, { children: [_jsx(Text, { color: theme.muted, children: line.slice(0, 7) }), line.slice(7)] }, i)));
117
- }
118
- function renderBash(lines, theme) {
119
- return lines.map((line, i) => {
120
- // The truncation marker is compared against the constant the reducer
121
- // actually writes. These used to be two independently spelled `…` literals;
122
- // once the producer moved to ASCII, a re-spelled copy here would have
123
- // stopped matching and quietly lost the dimming.
124
- const dim = line.startsWith('$ ') ||
125
- BASH_FOOTER_RE.test(line.trimEnd()) ||
126
- line === PREVIEW_TRUNCATION_MARK;
127
- return (_jsx(Text, { color: dim ? theme.muted : undefined, children: line.length > 0 ? line : ' ' }, i));
128
- });
129
- }
130
- function renderList(lines, theme) {
131
- return lines.map((line, i) => {
132
- const row = parseListRow(line);
133
- if (!row)
134
- return _jsx(Text, { children: line }, i);
135
- if (row.kind === 'dir') {
136
- return (_jsx(Text, { children: _jsxs(Text, { color: theme.accent, children: [row.name, "/"] }) }, i));
137
- }
138
- return (_jsxs(Text, { children: [row.name, row.size ? _jsxs(Text, { color: theme.muted, children: [" (", row.size, ")"] }) : null] }, i));
139
- });
140
- }
141
- function renderGlob(lines, theme) {
142
- // Flat relative paths — dim the directory portion of each path.
143
- return lines.map((line, i) => {
144
- const slash = line.lastIndexOf('/');
145
- if (slash < 0)
146
- return _jsx(Text, { children: line }, i);
147
- return (_jsxs(Text, { children: [_jsx(Text, { color: theme.muted, children: line.slice(0, slash + 1) }), line.slice(slash + 1)] }, i));
148
- });
149
- }
150
- function renderAskUser(lines, theme) {
151
- const summary = summarizeAskUser(lines);
152
- // An unparseable preview falls through to the generic renderer rather than
153
- // rendering nothing: a truncated result is still information.
154
- if (!summary)
155
- return renderPlain(lines, theme, false);
156
- return [
157
- _jsx(Text, { color: theme.muted, children: summary }, "q"),
158
- ];
159
- }
160
- /**
161
- * `Plan approved.` / `Plan rejected. ...` — the verdict is the whole content of
162
- * a `submit_plan` result, and it is the first line, so this needs no parsing.
163
- */
164
- function renderSubmitPlan(lines, theme) {
165
- const first = lines.find((l) => l.trim().length > 0) ?? '';
166
- const approved = /^Plan approved/.test(first);
167
- const rejected = /^Plan rejected/.test(first);
168
- if (!approved && !rejected)
169
- return renderPlain(lines, theme, false);
170
- return [
171
- _jsx(Text, { color: approved ? theme.toolDone : theme.noticeWarn, children: first }, "v"),
172
- ];
173
- }
174
- function renderPlain(lines, theme, error) {
175
- return lines.map((line, i) => (_jsx(Text, { color: error ? theme.toolError : theme.muted, children: line.length > 0 ? line : ' ' }, i)));
176
- }
177
- export function ToolPreview({ name, lines, theme, isError }) {
178
- let body;
179
- switch (name) {
180
- case 'edit_file':
181
- body = renderDiff(lines, theme);
182
- break;
183
- case 'write_file':
184
- body = renderWrite(lines, theme);
185
- break;
186
- case 'read_file':
187
- body = renderRead(lines, theme);
188
- break;
189
- case 'bash':
190
- body = renderBash(lines, theme);
191
- break;
192
- case 'list_dir':
193
- body = renderList(lines, theme);
194
- break;
195
- case 'glob':
196
- body = renderGlob(lines, theme);
197
- break;
198
- case 'ask_user':
199
- body = renderAskUser(lines, theme);
200
- break;
201
- case 'submit_plan':
202
- body = renderSubmitPlan(lines, theme);
203
- break;
204
- default:
205
- body = renderPlain(lines, theme, isError);
206
- }
207
- return _jsx(Box, { flexDirection: "column", children: body });
208
- }