@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
@@ -15,7 +15,7 @@
15
15
  * different agent.
16
16
  */
17
17
  import { textResult } from '@aragon-agent/core';
18
- import { GOV_LIMITS } from '../limits.js';
18
+ import { GOV_LIMITS } from '@aragon-agent/tui/model/governance/limits';
19
19
  import { Issues, formatNotAccepted, isRecord, readBool, readInteger, withNotes, } from './normalize-util.js';
20
20
  const ARTIFACT_ID_CHARS = 120;
21
21
  const VIEW_TARGET_CHARS = 200;
@@ -15,7 +15,7 @@
15
15
  * finding, or an `ALL_PASS` next to a `gap` row, is not repairable: either the verdict or
16
16
  * the evidence is wrong and only the author knows which.
17
17
  */
18
- import type { ReviewSubmission, TestSubmission, WorkSubmission } from '../types.js';
18
+ import type { ReviewSubmission, TestSubmission, WorkSubmission } from '@aragon-agent/tui/model/governance/types';
19
19
  import { type Normalized } from './normalize-util.js';
20
20
  export type WorkSubmissionInput = Pick<WorkSubmission, 'wpId' | 'summary' | 'filesChanged' | 'interfaceContracts' | 'verification'> & Partial<Pick<WorkSubmission, 'appeal' | 'escalate'>>;
21
21
  /** Validate and repair a `gov_submit_work` argument object. Pure. */
@@ -15,7 +15,7 @@
15
15
  * finding, or an `ALL_PASS` next to a `gap` row, is not repairable: either the verdict or
16
16
  * the evidence is wrong and only the author knows which.
17
17
  */
18
- import { GOV_LIMITS } from '../limits.js';
18
+ import { GOV_LIMITS } from '@aragon-agent/tui/model/governance/limits';
19
19
  import { Issues, SUBMIT_LIMITS as L, isRecord, readBool, readInteger, } from './normalize-util.js';
20
20
  const VERDICTS = ['PASS', 'PASS_WITH_FIXES', 'NEEDS_REWORK'];
21
21
  const TEST_VERDICTS = [
@@ -15,7 +15,7 @@
15
15
  * fields they know and the engine call receives the bound identity.
16
16
  */
17
17
  import { type AgentTool } from '@aragon-agent/core';
18
- import type { GovernanceEngineApi, Identity } from '../types.js';
18
+ import type { GovernanceEngineApi, Identity } from '@aragon-agent/tui/model/governance/types';
19
19
  export * from './normalize-util.js';
20
20
  export * from './submit-normalizers.js';
21
21
  /** `gov_submit_work`: DEV (and the FIX developer). */
@@ -20,7 +20,7 @@ import { getLogsDir } from '../config/app-paths.js';
20
20
  import { loadConfig } from '../config/load.js';
21
21
  import { isLogFileName } from './file-sink.js';
22
22
  import { getLogger } from './logger.js';
23
- import { LOG_LEVELS, isLogLevel } from './levels.js';
23
+ import { LOG_LEVELS, isLogLevel } from '@aragon-agent/tui/model/logging/levels';
24
24
  const EXIT_OK = 0;
25
25
  const EXIT_RUNTIME = 1;
26
26
  const EXIT_USAGE = 2;
@@ -36,7 +36,7 @@
36
36
  * subcommand; the full-screen branch swaps in one that restores first.
37
37
  * ══════════════════════════════════════════════════════════════════════════
38
38
  */
39
- import { type LogConfig } from '../config/schema.js';
39
+ import { type LogConfig } from '@aragon-agent/tui/model/config/schema';
40
40
  import { Logger, type LogScope } from './logger.js';
41
41
  /**
42
42
  * Hand the screen-restore duty to whoever actually owns the screen.
@@ -39,10 +39,10 @@
39
39
  import process from 'node:process';
40
40
  import { getHomeResolutionWarning } from '../config/app-paths.js';
41
41
  import { readConfigFile } from '../config/store.js';
42
- import { clampLogConfig } from '../config/schema.js';
43
- import { clampLogLevel } from './levels.js';
42
+ import { clampLogConfig } from '@aragon-agent/tui/model/config/schema';
43
+ import { clampLogLevel } from '@aragon-agent/tui/model/logging/levels';
44
44
  import { Logger, setActiveLogger } from './logger.js';
45
- import { registerProfileSecrets, registerSecretsFrom } from './secret-registry.js';
45
+ import { registerProfileSecrets, registerSecretsFrom } from '@aragon-agent/tui/model/logging/secret-registry';
46
46
  /** POSIX signal numbers for the `128 + signo` exit-code convention. */
47
47
  const SIGNAL_NUMBERS = { SIGINT: 2, SIGTERM: 15, SIGHUP: 1 };
48
48
  let screenRestore = () => { };
@@ -20,8 +20,8 @@
20
20
  * same day's file: `sid` separates their interleaved lines, and `pid` is what
21
21
  * still matches up with what the OS recorded after a crash.
22
22
  */
23
- import type { LogConfig } from '../config/schema.js';
24
- import { type LogLevelName } from './levels.js';
23
+ import type { LogConfig } from '@aragon-agent/tui/model/config/schema';
24
+ import { type LogLevelName } from '@aragon-agent/tui/model/logging/levels';
25
25
  /** Closed set, not free text: a typo'd scope is a record nobody can filter on. */
26
26
  export type LogScope = 'cli' | 'config' | 'agent' | 'tool' | 'skills' | 'llm' | 'migrate' | 'log' | 'fast' | 'history' | 'update' | 'compaction' | 'session' | 'branch' | 'bridge';
27
27
  export interface LogRecord {
@@ -25,9 +25,10 @@ import { join } from 'node:path';
25
25
  import process from 'node:process';
26
26
  import { getLogsDir } from '../config/app-paths.js';
27
27
  import { FileSink, currentLogFileName } from './file-sink.js';
28
- import { isLevelEnabled } from './levels.js';
28
+ import { isLevelEnabled } from '@aragon-agent/tui/model/logging/levels';
29
+ import { setTuiLogger } from '@aragon-agent/tui/model/logging/log-port';
29
30
  import { redactRecord } from './redact.js';
30
- import { getSecrets } from './secret-registry.js';
31
+ import { getSecrets } from '@aragon-agent/tui/model/logging/secret-registry';
31
32
  const DISABLED_CONFIG = {
32
33
  level: 'silent',
33
34
  toFile: false,
@@ -235,3 +236,31 @@ export function resetLoggerForTest() {
235
236
  active?.closeSink();
236
237
  active = null;
237
238
  }
239
+ /**
240
+ * Connects the terminal-UI log port to this logger (tui-package-split S1).
241
+ *
242
+ * Four view-model / renderer modules log through `log-port` instead of importing this file,
243
+ * because they live in another package. The wiring is HERE, as an import side effect, and not
244
+ * in `installLogging()` or a test setup file, for two reasons that each cost a failed run:
245
+ *
246
+ * - Anything that can observe those records imports this module (`getLogger()` is how a test
247
+ * spies on them, `installLogging()` is how the executable gets a real one), so the port is
248
+ * connected in exactly the processes where it matters and nowhere else.
249
+ * - A vitest `setupFiles` entry cannot do it: setup runs before the test file, and importing
250
+ * this module's dependency `config/app-paths` from there captures the home directory BEFORE
251
+ * a test that sets `ARAGON_HOME` at the top of its file gets to - 66 cases then read and
252
+ * write the wrong directory.
253
+ *
254
+ * LAZY: every call re-reads `getLogger()`. `installLogging()` replaces the singleton and
255
+ * `resetLoggerForTest()` discards it; a forwarder that captured the instance would keep writing
256
+ * to a closed logger and drop every record after the swap. No cast is needed: `Logger` accepts
257
+ * every `TuiLogScope` because that union is a subset of `LogScope`, so widening the port without
258
+ * widening `LogScope` is a compile error right here.
259
+ */
260
+ setTuiLogger({
261
+ error: (scope, msg, data) => getLogger().error(scope, msg, data),
262
+ warn: (scope, msg, data) => getLogger().warn(scope, msg, data),
263
+ info: (scope, msg, data) => getLogger().info(scope, msg, data),
264
+ debug: (scope, msg, data) => getLogger().debug(scope, msg, data),
265
+ child: (scope) => getLogger().child(scope),
266
+ });
@@ -24,7 +24,7 @@
24
24
  */
25
25
  import { spawn, spawnSync } from 'node:child_process';
26
26
  import process from 'node:process';
27
- import { PROC_LIMITS } from './limits.js';
27
+ import { PROC_LIMITS } from '@aragon-agent/tui/model/proc/limits';
28
28
  /** Is the pid still there? `signal 0` tests for existence without delivering. */
29
29
  export function isAlive(pid) {
30
30
  if (pid === undefined || !Number.isFinite(pid) || pid <= 0)
@@ -28,7 +28,7 @@ import { appendFile, appendFileSync, mkdirSync, readdirSync, rmSync, statSync }
28
28
  import { existsSync } from 'node:fs';
29
29
  import { dirname, join } from 'node:path';
30
30
  import { getLogger } from '../logging/logger.js';
31
- import { PROC_LIMITS } from './limits.js';
31
+ import { PROC_LIMITS } from '@aragon-agent/tui/model/proc/limits';
32
32
  /**
33
33
  * True when `path` holds nothing but `<jobId>.log` files, or nothing at all.
34
34
  *
@@ -18,8 +18,8 @@
18
18
  * is "terminal-safe rows", and no consumer can forget — and it follows the same
19
19
  * "two bounds are two different literals" rule.
20
20
  */
21
- import { sanitizeChunk, toDisplayRow } from '../tools/terminal-output.js';
22
- import { PROC_LIMITS } from './limits.js';
21
+ import { sanitizeChunk, toDisplayRow } from '@aragon-agent/tui/model/tools/terminal-output';
22
+ import { PROC_LIMITS } from '@aragon-agent/tui/model/proc/limits';
23
23
  /**
24
24
  * A per-service ring.
25
25
  *
@@ -15,7 +15,7 @@
15
15
  * second notice for the same id is always the same fact restated - which is what
16
16
  * makes the relay's re-queueing after a queue wipe idempotent (I-11).
17
17
  */
18
- import type { JobKind, ServiceStatus } from './types.js';
18
+ import type { JobKind, ServiceStatus } from '@aragon-agent/tui/model/proc/types';
19
19
  export interface JobNotice {
20
20
  /** The job: `t3` / `s1`. */
21
21
  id: string;
@@ -15,8 +15,8 @@
15
15
  * second notice for the same id is always the same fact restated - which is what
16
16
  * makes the relay's re-queueing after a queue wipe idempotent (I-11).
17
17
  */
18
- import { formatDuration } from '../agent/usage.js';
19
- import { PROC_LIMITS } from './limits.js';
18
+ import { formatDuration } from '@aragon-agent/tui/model/agent/usage';
19
+ import { PROC_LIMITS } from '@aragon-agent/tui/model/proc/limits';
20
20
  /**
21
21
  * Insertion-ordered, deduplicated by id, bounded by `PROC_LIMITS.maxNotices`.
22
22
  *
@@ -40,7 +40,7 @@
40
40
  * `JOBS_BLOCK_VERSION` exists so a change to this wording is greppable from a
41
41
  * behaviour report.
42
42
  */
43
- import { JOBS_BLOCK_VERSION } from './limits.js';
43
+ import { JOBS_BLOCK_VERSION } from '@aragon-agent/tui/model/proc/limits';
44
44
  export { JOBS_BLOCK_VERSION };
45
45
  export declare function buildBackgroundJobsBlock(): string;
46
46
  export declare function buildBackgroundServicesBlock(): string;
@@ -40,7 +40,7 @@
40
40
  * `JOBS_BLOCK_VERSION` exists so a change to this wording is greppable from a
41
41
  * behaviour report.
42
42
  */
43
- import { JOBS_BLOCK_VERSION } from './limits.js';
43
+ import { JOBS_BLOCK_VERSION } from '@aragon-agent/tui/model/proc/limits';
44
44
  export { JOBS_BLOCK_VERSION };
45
45
  export function buildBackgroundJobsBlock() {
46
46
  return [
@@ -53,10 +53,13 @@ export function buildBackgroundJobsBlock() {
53
53
  '- Start one with bash({ command, background: true }). You get a job id: `t1` for a',
54
54
  ' task (it will finish) or `s1` for a service (it will not). The call returns in a',
55
55
  ' few seconds with the first lines of output.',
56
- '- Wait with job_wait({ job: "t1" }). Every wait is bounded (default 30s, at most',
57
- ' 60s) and returns one status line, one progress line, and only the output since',
58
- ' your last cursor. Call it again only after deciding something; do other work in',
59
- ' between if you have any.',
56
+ '- Wait with job_wait({ job: "t1" }). Every wait is bounded (default 30s, at most 20',
57
+ ' minutes = timeoutSeconds 1200) and returns one status line, one progress line, and',
58
+ ' only the output since your last cursor. Prefer ONE long wait over several short',
59
+ ' ones: follow the [next] suggestion or the job\'s ETA. A wait ends the moment the job',
60
+ ' finishes or the user sends a message. Use job "any" to wake on the first of several',
61
+ ' jobs, "all" for the last. Call it again only after deciding something; do other',
62
+ ' work in between if you have any.',
60
63
  '- Nothing but a bounded wait tells you a job finished. When one finishes while you',
61
64
  ' are busy, a <job_notices> block appears at the end of a tool result - that is the',
62
65
  ' notification, not an error.',
@@ -14,7 +14,7 @@
14
14
  * hold the loop open, and they are reaped on exit.
15
15
  */
16
16
  import net from 'node:net';
17
- import { PROC_LIMITS } from './limits.js';
17
+ import { PROC_LIMITS } from '@aragon-agent/tui/model/proc/limits';
18
18
  /**
19
19
  * A loopback/wildcard `http(s)` URL, with an optional port and path.
20
20
  *
@@ -18,7 +18,7 @@
18
18
  * unconditionally. With the flag off this object holds foreground pids, nothing
19
19
  * else, and allocates no timers.
20
20
  */
21
- import { type JobLogMirrorPort, type ProcEventListener, type ProcSupervisorPort, type ServiceLogPage, type ServiceSnapshot, type ServiceStartRequest, type ServiceStartResult } from './types.js';
21
+ import { type JobLogMirrorPort, type ProcEventListener, type ProcSupervisorPort, type ServiceLogPage, type ServiceSnapshot, type ServiceStartRequest, type ServiceStartResult } from '@aragon-agent/tui/model/proc/types';
22
22
  export interface ProcSupervisorOptions {
23
23
  /** `cfg.bash.readyTimeoutMs`, read once per service at spawn. */
24
24
  readyTimeoutMs: () => number;
@@ -23,11 +23,11 @@ import process from 'node:process';
23
23
  import { getLogger } from '../logging/logger.js';
24
24
  import { extractPortHint } from './classify.js';
25
25
  import { isAlive, killTree, killTreeSync } from './kill-tree.js';
26
- import { PROC_LIMITS } from './limits.js';
26
+ import { PROC_LIMITS } from '@aragon-agent/tui/model/proc/limits';
27
27
  import { LogRing } from './log-ring.js';
28
- import { extractProgress } from './progress.js';
28
+ import { extractProgress } from '@aragon-agent/tui/model/proc/progress';
29
29
  import { probePort, ReadinessWatcher } from './readiness.js';
30
- import { isTerminalStatus, } from './types.js';
30
+ import { isTerminalStatus, } from '@aragon-agent/tui/model/proc/types';
31
31
  export class ProcSupervisor {
32
32
  opts;
33
33
  services = new Map();
@@ -590,7 +590,13 @@ export class ProcSupervisor {
590
590
  // covered by AC-26 / AC-38 instead.
591
591
  lastOutputAt: r.lastOutputAt,
592
592
  ...(r.progress
593
- ? { progress: { text: r.progress.text, kind: r.progress.kind } }
593
+ ? {
594
+ progress: {
595
+ text: r.progress.text,
596
+ kind: r.progress.kind,
597
+ fraction: r.progress.fraction,
598
+ },
599
+ }
594
600
  : {}),
595
601
  ...(this.isStalled(r) ? { stalled: true } : {}),
596
602
  ...(r.logPath !== undefined ? { logPath: r.logPath } : {}),
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Wait-length advice for `job_wait` (extended-job-wait §3.5).
3
+ *
4
+ * ASCII ONLY: `src/proc/**` is inside the glyph scanner's scope.
5
+ *
6
+ * PURE: no IO, no clock. The output is TEXT for the model (the `[next]` line) and
7
+ * nothing else (I-13): the tool never refuses or rewrites a wait because it
8
+ * differs from the suggestion, for the reason `[guard]` only hints. The aim is
9
+ * fewer, longer waits - one 10-minute wait costs one LLM round trip, twenty
10
+ * 30-second waits cost twenty.
11
+ */
12
+ /** Sizes a suggestion snaps UP to, so the model sees round numbers it can reuse. */
13
+ export declare const NICE_WAIT_SECONDS: readonly number[];
14
+ /** The raw token after `ETA` in a progress line (`13m`, `01:23:45`), if any. */
15
+ export declare function extractEtaText(progressText: string | undefined): string | undefined;
16
+ /**
17
+ * Remaining seconds from the text after `ETA` in a progress line.
18
+ *
19
+ * Accepts `13m`, `45s`, `2h`, `13m20s`, `1h02m`, `01:23:45`, `12:30`, `0:45`.
20
+ * Anything else - including no `ETA` at all - is `undefined`; never throws.
21
+ */
22
+ export declare function parseEtaSeconds(progressText: string | undefined): number | undefined;
23
+ export interface SuggestWaitInput {
24
+ jobAgeMs: number;
25
+ /** The clamped request of the previous wait (not the time it actually ran). */
26
+ lastWaitSeconds: number;
27
+ /** Consecutive waits with no new row and no progress change. */
28
+ quietWaits: number;
29
+ etaSeconds?: number | undefined;
30
+ /** `jobs.waitSeconds`. */
31
+ configuredSeconds: number;
32
+ minSeconds: number;
33
+ maxSeconds: number;
34
+ }
35
+ /**
36
+ * The wait length to suggest next, deterministic and always within
37
+ * `[minSeconds, maxSeconds]`.
38
+ */
39
+ export declare function suggestWaitSeconds(input: SuggestWaitInput): number;
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Wait-length advice for `job_wait` (extended-job-wait §3.5).
3
+ *
4
+ * ASCII ONLY: `src/proc/**` is inside the glyph scanner's scope.
5
+ *
6
+ * PURE: no IO, no clock. The output is TEXT for the model (the `[next]` line) and
7
+ * nothing else (I-13): the tool never refuses or rewrites a wait because it
8
+ * differs from the suggestion, for the reason `[guard]` only hints. The aim is
9
+ * fewer, longer waits - one 10-minute wait costs one LLM round trip, twenty
10
+ * 30-second waits cost twenty.
11
+ */
12
+ /** Sizes a suggestion snaps UP to, so the model sees round numbers it can reuse. */
13
+ export const NICE_WAIT_SECONDS = [30, 60, 120, 180, 300, 420, 600, 900, 1200];
14
+ const UNIT_SECONDS = { h: 3600, m: 60, s: 1 };
15
+ /** The raw token after `ETA` in a progress line (`13m`, `01:23:45`), if any. */
16
+ export function extractEtaText(progressText) {
17
+ if (progressText === undefined)
18
+ return undefined;
19
+ return /ETA[^0-9]{0,4}([0-9][0-9a-z:]*)/i.exec(progressText)?.[1];
20
+ }
21
+ /**
22
+ * Remaining seconds from the text after `ETA` in a progress line.
23
+ *
24
+ * Accepts `13m`, `45s`, `2h`, `13m20s`, `1h02m`, `01:23:45`, `12:30`, `0:45`.
25
+ * Anything else - including no `ETA` at all - is `undefined`; never throws.
26
+ */
27
+ export function parseEtaSeconds(progressText) {
28
+ const value = extractEtaText(progressText)?.toLowerCase();
29
+ if (value === undefined)
30
+ return undefined;
31
+ if (value.includes(':')) {
32
+ const parts = value.split(':');
33
+ if (parts.length < 2 || parts.length > 3 || !parts.every((p) => /^\d{1,3}$/.test(p))) {
34
+ return undefined;
35
+ }
36
+ const numbers = parts.map(Number);
37
+ return numbers.length === 3
38
+ ? numbers[0] * 3600 + numbers[1] * 60 + numbers[2]
39
+ : numbers[0] * 60 + numbers[1];
40
+ }
41
+ const units = /^(?:\d+[hms])+$/.exec(value);
42
+ if (!units)
43
+ return undefined;
44
+ let total = 0;
45
+ for (const part of value.matchAll(/(\d+)([hms])/g)) {
46
+ total += Number(part[1]) * (UNIT_SECONDS[part[2]] ?? 0);
47
+ }
48
+ return total > 0 ? total : undefined;
49
+ }
50
+ /** Age ladder: the older the job, the longer one wait should be. */
51
+ function ladderSeconds(jobAgeMs) {
52
+ if (jobAgeMs < 2 * 60_000)
53
+ return 30;
54
+ if (jobAgeMs < 10 * 60_000)
55
+ return 120;
56
+ if (jobAgeMs < 30 * 60_000)
57
+ return 300;
58
+ return 600;
59
+ }
60
+ /**
61
+ * The wait length to suggest next, deterministic and always within
62
+ * `[minSeconds, maxSeconds]`.
63
+ */
64
+ export function suggestWaitSeconds(input) {
65
+ const finite = (n, fallback) => (Number.isFinite(n) ? n : fallback);
66
+ const ladder = ladderSeconds(finite(input.jobAgeMs, 0));
67
+ const last = finite(input.lastWaitSeconds, 0);
68
+ let candidate = input.quietWaits >= 2 ? Math.max(ladder, last * 2) : ladder;
69
+ // The ETA outranks the ladder: wait until just after the job says it is done.
70
+ // Early ETAs swing wildly, which is fine - the next result re-suggests.
71
+ if (input.etaSeconds !== undefined && Number.isFinite(input.etaSeconds)) {
72
+ candidate = input.etaSeconds + 15;
73
+ }
74
+ candidate = Math.max(candidate, finite(input.configuredSeconds, 0));
75
+ const snapped = NICE_WAIT_SECONDS.find((n) => n >= candidate) ?? input.maxSeconds;
76
+ return Math.max(input.minSeconds, Math.min(snapped, input.maxSeconds));
77
+ }
@@ -23,33 +23,66 @@
23
23
  * nothing at all (the supervisor now emits `stopped` from it), and
24
24
  * `dispose()` clears its listener set without emitting; the self-timeout is
25
25
  * therefore a real second path, not belt-and-braces.
26
+ * 5. THE HEARTBEAT RE-CHECKS THE DEADLINE AGAINST `now()`, NOT AGAINST THE
27
+ * TIMER (extended-job-wait). A 20-minute wait spans a laptop lid: Node's
28
+ * monotonic `setTimeout` does not count the sleep, so a "10 minute" wait can
29
+ * run 40 minutes of wall clock. Each beat compares `now() - startedAt` with
30
+ * the budget and settles on the first beat after resume.
31
+ *
32
+ * THE WAKE SOURCE IS EDGE-TRIGGERED ONLY - there is no "is something pending"
33
+ * probe. The engine drains steering before EVERY tool execution
34
+ * (`core/src/engine/agent-loop.ts`), so input that arrived before this wait began
35
+ * has already been accepted; only input that arrives AFTER `subscribe()` needs to
36
+ * end the wait. Between the engine's decision to run `job_wait` and the
37
+ * `subscribe()` below there is no `await`, so no notification can fall into the
38
+ * gap. A level-triggered probe would add a stale-state hot loop (every wait
39
+ * returning at once) for no reachable gain.
26
40
  */
27
- import type { ProcSupervisorPort, ServiceLogPage, ServiceSnapshot } from './types.js';
41
+ import type { ProcSupervisorPort, ServiceLogPage, ServiceSnapshot } from '@aragon-agent/tui/model/proc/types';
28
42
  /** The port surface this module needs. Deliberately narrower than the full port. */
29
43
  export type WaitPort = Pick<ProcSupervisorPort, 'get' | 'read' | 'subscribe'>;
44
+ /** Anything that can say "the user just spoke". Edge-triggered; see rule 5 above. */
45
+ export interface WakeSource {
46
+ /** Calls `listener` once per new user input after this call; returns the unsubscribe. */
47
+ subscribe(listener: () => void): () => void;
48
+ }
30
49
  export interface WaitForJobsRequest {
31
50
  /** Ids already resolved by the caller. An empty list returns immediately. */
32
51
  targets: readonly string[];
33
- /** Already clamped by the caller (`jobs.waitSeconds`, I-4 and `WAIT_SECONDS_RANGE`). */
52
+ /** Already clamped by the caller (`jobs.waitSeconds` and `WAIT_SECONDS_RANGE`). */
34
53
  timeoutMs: number;
35
54
  /** The tool call's `ctx.signal`. Aborting resolves the wait with `aborted: true`. */
36
55
  signal?: AbortSignal;
37
56
  /** Cursor from a previous `job_wait` / `bash_output`; omit for the whole tail. */
38
57
  since?: number;
58
+ /** 'all' (default): every target must end. 'any': the first terminal target ends the wait. */
59
+ mode?: 'all' | 'any';
60
+ /** User-input wake source; absent for a sub-agent, a test or an old caller. */
61
+ wakeOn?: WakeSource;
62
+ /** Beat that drives the live view and re-checks the deadline against `now()`. */
63
+ heartbeat?: {
64
+ everyMs: number;
65
+ onBeat: (nowMs: number) => void;
66
+ };
39
67
  }
40
68
  export interface JobWaitOutcome {
41
69
  /** One snapshot per target that still exists, in the requested order. */
42
70
  jobs: ServiceSnapshot[];
43
- /** Every target reached a terminal status. */
71
+ /**
72
+ * `mode: 'all'` (default): every target reached a terminal status.
73
+ * `mode: 'any'`: at least one did.
74
+ */
44
75
  terminal: boolean;
45
76
  waitedMs: number;
46
77
  timedOut: boolean;
47
78
  aborted: boolean;
79
+ /** The wait ended because the user sent a message. */
80
+ woken: boolean;
48
81
  /** Incremental page per target, read at settle time. */
49
82
  pages: ReadonlyMap<string, ServiceLogPage>;
50
83
  }
51
84
  /**
52
- * Wait up to `timeoutMs` for every target to reach a terminal status.
85
+ * Wait up to `timeoutMs` for the targets to reach a terminal status.
53
86
  *
54
87
  * Resolves - never rejects - and always after at most `timeoutMs`. `now` is
55
88
  * injectable so a test can assert `waitedMs` without depending on wall clock.
package/dist/proc/wait.js CHANGED
@@ -23,8 +23,22 @@
23
23
  * nothing at all (the supervisor now emits `stopped` from it), and
24
24
  * `dispose()` clears its listener set without emitting; the self-timeout is
25
25
  * therefore a real second path, not belt-and-braces.
26
+ * 5. THE HEARTBEAT RE-CHECKS THE DEADLINE AGAINST `now()`, NOT AGAINST THE
27
+ * TIMER (extended-job-wait). A 20-minute wait spans a laptop lid: Node's
28
+ * monotonic `setTimeout` does not count the sleep, so a "10 minute" wait can
29
+ * run 40 minutes of wall clock. Each beat compares `now() - startedAt` with
30
+ * the budget and settles on the first beat after resume.
31
+ *
32
+ * THE WAKE SOURCE IS EDGE-TRIGGERED ONLY - there is no "is something pending"
33
+ * probe. The engine drains steering before EVERY tool execution
34
+ * (`core/src/engine/agent-loop.ts`), so input that arrived before this wait began
35
+ * has already been accepted; only input that arrives AFTER `subscribe()` needs to
36
+ * end the wait. Between the engine's decision to run `job_wait` and the
37
+ * `subscribe()` below there is no `await`, so no notification can fall into the
38
+ * gap. A level-triggered probe would add a stale-state hot loop (every wait
39
+ * returning at once) for no reachable gain.
26
40
  */
27
- import { isTerminalStatus } from './types.js';
41
+ import { isTerminalStatus } from '@aragon-agent/tui/model/proc/types';
28
42
  /** Read one bounded page per target; `read()` returns `undefined` for a vanished id. */
29
43
  function readPages(port, targets, since) {
30
44
  const pages = new Map();
@@ -49,24 +63,41 @@ function allSettled(port, targets) {
49
63
  return snapshot === undefined || isTerminalStatus(snapshot.status);
50
64
  });
51
65
  }
66
+ /** Has any target ended? Same unknown-id rule as `allSettled`. */
67
+ function anySettled(port, targets) {
68
+ return targets.some((id) => {
69
+ const snapshot = port.get(id);
70
+ return snapshot === undefined || isTerminalStatus(snapshot.status);
71
+ });
72
+ }
52
73
  /**
53
- * Wait up to `timeoutMs` for every target to reach a terminal status.
74
+ * THE ONE PREDICATE for "is this wait over", shared by the entry fast path and the
75
+ * `finish` funnel. Using it in only one of them makes `mode: 'any'` subscribe and
76
+ * burn the whole timeout when a target had already ended.
77
+ */
78
+ function isDone(port, targets, mode) {
79
+ return mode === 'any' ? anySettled(port, targets) : allSettled(port, targets);
80
+ }
81
+ /**
82
+ * Wait up to `timeoutMs` for the targets to reach a terminal status.
54
83
  *
55
84
  * Resolves - never rejects - and always after at most `timeoutMs`. `now` is
56
85
  * injectable so a test can assert `waitedMs` without depending on wall clock.
57
86
  */
58
87
  export async function waitForJob(port, req, now = Date.now) {
59
88
  const { targets, signal } = req;
89
+ const mode = req.mode ?? 'all';
60
90
  const startedAt = now();
61
91
  // RULE 1. Nothing to wait for at all, or everything already ended: no
62
92
  // subscription, no timer, `waitedMs: 0`.
63
- if (targets.length === 0 || allSettled(port, targets)) {
93
+ if (targets.length === 0 || isDone(port, targets, mode)) {
64
94
  return {
65
95
  jobs: collect(port, targets),
66
96
  terminal: true,
67
97
  waitedMs: 0,
68
98
  timedOut: false,
69
99
  aborted: false,
100
+ woken: false,
70
101
  pages: readPages(port, targets, req.since),
71
102
  };
72
103
  }
@@ -79,6 +110,8 @@ export async function waitForJob(port, req, now = Date.now) {
79
110
  // from inside the listener instead of resolving the wait.
80
111
  let unsubscribe = () => { };
81
112
  let timer;
113
+ let beat;
114
+ let unwake = () => { };
82
115
  /** Assigned below; declared here so `finish` never reads an uninitialised binding. */
83
116
  let onAbort = () => { };
84
117
  // RULE 3: the one funnel. Idempotent, and it releases every reference before
@@ -88,15 +121,19 @@ export async function waitForJob(port, req, now = Date.now) {
88
121
  return;
89
122
  done = true;
90
123
  unsubscribe();
124
+ unwake();
91
125
  if (timer !== undefined)
92
126
  clearTimeout(timer);
127
+ if (beat !== undefined)
128
+ clearInterval(beat);
93
129
  signal?.removeEventListener('abort', onAbort);
94
130
  resolve({
95
131
  jobs: collect(port, targets),
96
- terminal: reason === 'terminal' || allSettled(port, targets),
132
+ terminal: reason === 'terminal' || isDone(port, targets, mode),
97
133
  waitedMs: now() - startedAt,
98
134
  timedOut: reason === 'timeout',
99
135
  aborted: reason === 'abort',
136
+ woken: reason === 'wake',
100
137
  pages: readPages(port, targets, req.since),
101
138
  });
102
139
  };
@@ -105,12 +142,38 @@ export async function waitForJob(port, req, now = Date.now) {
105
142
  return;
106
143
  if (!targets.includes(event.service.id))
107
144
  return;
108
- if (allSettled(port, targets))
145
+ if (isDone(port, targets, mode))
109
146
  finish('terminal');
110
147
  });
148
+ // The user spoke. Edge-triggered: only a notification after this line counts.
149
+ unwake = req.wakeOn?.subscribe(() => finish('wake')) ?? (() => { });
150
+ if (done) {
151
+ // A source that notifies synchronously inside `subscribe` already settled us.
152
+ unwake();
153
+ return;
154
+ }
111
155
  // RULE 2: `unref`, so a pending wait never keeps a quitting process alive.
112
156
  timer = setTimeout(() => finish('timeout'), Math.max(0, req.timeoutMs));
113
157
  timer.unref?.();
158
+ // RULE 5. Also the view's 1 Hz clock. A throwing `onBeat` is a renderer bug and
159
+ // must never kill a 20-minute wait.
160
+ if (req.heartbeat) {
161
+ const { everyMs, onBeat } = req.heartbeat;
162
+ beat = setInterval(() => {
163
+ const current = now();
164
+ if (current - startedAt >= req.timeoutMs) {
165
+ finish('timeout');
166
+ return;
167
+ }
168
+ try {
169
+ onBeat(current);
170
+ }
171
+ catch {
172
+ // Deliberately swallowed: see above.
173
+ }
174
+ }, Math.max(1, everyMs));
175
+ beat.unref?.();
176
+ }
114
177
  onAbort = () => finish('abort');
115
178
  // `{ once: true }` AND the explicit removal in `finish`: the option alone
116
179
  // leaves the listener registered on a signal that outlives this wait.
@@ -21,7 +21,7 @@
21
21
  * with candidates rather than a guess (D-22).
22
22
  */
23
23
  import type { CommandContext, CommandRegistry } from '../commands/registry.js';
24
- import type { QuickPrompt } from './types.js';
24
+ import type { QuickPrompt } from '@aragon-agent/tui/model/prompts/types';
25
25
  export declare function registerPromptCommands(registry: CommandRegistry): void;
26
26
  /** `1. title [fav] #tag 12 uses` - no body, ever (D-17). */
27
27
  export declare function promptListLine(prompt: QuickPrompt, at: number): string;
@@ -20,7 +20,7 @@
20
20
  * repeat, and `rm` has no recycle bin, so an ambiguous reference is a NAMED failure
21
21
  * with candidates rather than a guess (D-22).
22
22
  */
23
- import { PROMPT_DISABLED_COPY, PROMPT_HISTORY_REMINDER_COPY, PROMPT_LIST_EMPTY_COPY, PROMPT_SHOW_WARNING_COPY, PROMPT_UNKNOWN_SUBCOMMAND_COPY, PROMPT_UNAVAILABLE_COPY, promptAmbiguousCopy, promptDeletedCopy, promptErrorCopy, promptFavoriteCopy, promptInvalidSortCopy, promptListFooterCopy, promptMovedCopy, promptMoveRangeCopy, promptNotFoundCopy, promptRmConfirmCopy, promptSavedCopy, promptSortedCopy, } from './copy.js';
23
+ import { PROMPT_DISABLED_COPY, PROMPT_HISTORY_REMINDER_COPY, PROMPT_LIST_EMPTY_COPY, PROMPT_SHOW_WARNING_COPY, PROMPT_UNKNOWN_SUBCOMMAND_COPY, PROMPT_UNAVAILABLE_COPY, promptAmbiguousCopy, promptDeletedCopy, promptErrorCopy, promptFavoriteCopy, promptInvalidSortCopy, promptListFooterCopy, promptMovedCopy, promptMoveRangeCopy, promptNotFoundCopy, promptRmConfirmCopy, promptSavedCopy, promptSortedCopy, } from '@aragon-agent/tui/model/prompts/copy';
24
24
  import { promptIndexOf } from './resolve.js';
25
25
  import { createPrompt, deletePrompt, loadPromptLibrary, reorderPrompt, reorderPrompts, setPromptFavorite, sortPromptIds, } from './store.js';
26
26
  /**
@@ -16,7 +16,7 @@
16
16
  * because by then the text is the only copy and dropping the entry to protect a
17
17
  * ceiling would delete the user's work to keep a number tidy.
18
18
  */
19
- import type { PromptLibrary, QuickPrompt } from './types.js';
19
+ import type { PromptLibrary, QuickPrompt } from '@aragon-agent/tui/model/prompts/types';
20
20
  /**
21
21
  * One entry, or `null` when it cannot be salvaged.
22
22
  *