@aragon-agent/tui 0.0.0-stage → 0.0.1

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 (528) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/LICENSE +21 -0
  3. package/README.md +81 -2
  4. package/dist/index.d.ts +11 -0
  5. package/dist/index.js +11 -0
  6. package/dist/input/control-sequences.d.ts +71 -0
  7. package/dist/input/control-sequences.js +222 -0
  8. package/dist/input/csiu-keys.d.ts +66 -0
  9. package/dist/input/csiu-keys.js +181 -0
  10. package/dist/input/cursor-report.d.ts +61 -0
  11. package/dist/input/cursor-report.js +97 -0
  12. package/dist/input/enter-sequences.d.ts +64 -0
  13. package/dist/input/enter-sequences.js +153 -0
  14. package/dist/input/interrupt-gesture.d.ts +18 -0
  15. package/dist/input/interrupt-gesture.js +19 -0
  16. package/dist/input/keyboard-enhancement.d.ts +42 -0
  17. package/dist/input/keyboard-enhancement.js +65 -0
  18. package/dist/input/keymap.d.ts +20 -0
  19. package/dist/input/keymap.js +99 -0
  20. package/dist/input/limits.d.ts +118 -0
  21. package/dist/input/limits.js +109 -0
  22. package/dist/input/mouse-events.d.ts +87 -0
  23. package/dist/input/mouse-events.js +212 -0
  24. package/dist/input/paste-parse.d.ts +83 -0
  25. package/dist/input/paste-parse.js +107 -0
  26. package/dist/input/pointer-router.d.ts +11 -0
  27. package/dist/input/pointer-router.js +14 -0
  28. package/dist/input/stdin-filter.d.ts +112 -0
  29. package/dist/input/stdin-filter.js +657 -0
  30. package/dist/input/win32-input-mode.d.ts +61 -0
  31. package/dist/input/win32-input-mode.js +269 -0
  32. package/dist/model/agent/agent-mode.d.ts +108 -0
  33. package/dist/model/agent/agent-mode.js +121 -0
  34. package/dist/model/agent/entry-limits.d.ts +65 -0
  35. package/dist/model/agent/entry-limits.js +133 -0
  36. package/dist/model/agent/governance-view.d.ts +40 -0
  37. package/dist/model/agent/governance-view.js +40 -0
  38. package/dist/model/agent/invocation-card.d.ts +77 -0
  39. package/dist/model/agent/invocation-card.js +169 -0
  40. package/dist/model/agent/model-probe-limits.d.ts +39 -0
  41. package/dist/model/agent/model-probe-limits.js +25 -0
  42. package/dist/model/agent/model-probe.d.ts +104 -0
  43. package/dist/model/agent/model-probe.js +391 -0
  44. package/dist/model/agent/queued-messages.d.ts +23 -0
  45. package/dist/model/agent/queued-messages.js +49 -0
  46. package/dist/model/agent/reducer.d.ts +857 -0
  47. package/dist/model/agent/reducer.js +1646 -0
  48. package/dist/model/agent/retry-view.d.ts +68 -0
  49. package/dist/model/agent/retry-view.js +95 -0
  50. package/dist/model/agent/usage.d.ts +47 -0
  51. package/dist/model/agent/usage.js +84 -0
  52. package/dist/model/compaction/limits.d.ts +61 -0
  53. package/dist/model/compaction/limits.js +64 -0
  54. package/dist/model/compaction/meter.d.ts +276 -0
  55. package/dist/model/compaction/meter.js +512 -0
  56. package/dist/model/compaction/pressure.d.ts +163 -0
  57. package/dist/model/compaction/pressure.js +199 -0
  58. package/dist/model/compaction/reason-text.d.ts +36 -0
  59. package/dist/model/compaction/reason-text.js +78 -0
  60. package/dist/model/compaction/types.d.ts +360 -0
  61. package/dist/model/compaction/types.js +22 -0
  62. package/dist/model/config/governance-config.d.ts +125 -0
  63. package/dist/model/config/governance-config.js +164 -0
  64. package/dist/model/config/kit-resolution.d.ts +93 -0
  65. package/dist/model/config/kit-resolution.js +226 -0
  66. package/dist/model/config/model-kits.d.ts +225 -0
  67. package/dist/model/config/model-kits.js +302 -0
  68. package/dist/model/config/model-profile-resolution.d.ts +28 -0
  69. package/dist/model/config/model-profile-resolution.js +88 -0
  70. package/dist/model/config/model-profiles.d.ts +103 -0
  71. package/dist/model/config/model-profiles.js +188 -0
  72. package/dist/model/config/model-settings-types.d.ts +71 -0
  73. package/dist/model/config/model-settings-types.js +18 -0
  74. package/dist/model/config/schema.d.ts +1645 -0
  75. package/dist/model/config/schema.js +1383 -0
  76. package/dist/model/fast/limits.d.ts +152 -0
  77. package/dist/model/fast/limits.js +152 -0
  78. package/dist/model/fast/resolve.d.ts +44 -0
  79. package/dist/model/fast/resolve.js +107 -0
  80. package/dist/model/fast/task-summary-types.d.ts +66 -0
  81. package/dist/model/fast/task-summary-types.js +17 -0
  82. package/dist/model/fast/types.d.ts +141 -0
  83. package/dist/model/fast/types.js +14 -0
  84. package/dist/model/governance/governed-dispatch.d.ts +19 -0
  85. package/dist/model/governance/governed-dispatch.js +17 -0
  86. package/dist/model/governance/limits.d.ts +107 -0
  87. package/dist/model/governance/limits.js +131 -0
  88. package/dist/model/governance/posture.d.ts +35 -0
  89. package/dist/model/governance/posture.js +59 -0
  90. package/dist/model/governance/rules/events-table.d.ts +46 -0
  91. package/dist/model/governance/rules/events-table.js +94 -0
  92. package/dist/model/governance/types.d.ts +661 -0
  93. package/dist/model/governance/types.js +27 -0
  94. package/dist/model/logging/levels.d.ts +40 -0
  95. package/dist/model/logging/levels.js +59 -0
  96. package/dist/model/logging/log-port.d.ts +38 -0
  97. package/dist/model/logging/log-port.js +41 -0
  98. package/dist/model/logging/secret-registry.d.ts +32 -0
  99. package/dist/model/logging/secret-registry.js +73 -0
  100. package/dist/model/proc/limits.d.ts +214 -0
  101. package/dist/model/proc/limits.js +221 -0
  102. package/dist/model/proc/progress.d.ts +47 -0
  103. package/dist/model/proc/progress.js +163 -0
  104. package/dist/model/proc/types.d.ts +269 -0
  105. package/dist/model/proc/types.js +15 -0
  106. package/dist/model/proc/wait-view.d.ts +65 -0
  107. package/dist/model/proc/wait-view.js +66 -0
  108. package/dist/model/prompts/copy.d.ts +89 -0
  109. package/dist/model/prompts/copy.js +131 -0
  110. package/dist/model/prompts/fill.d.ts +51 -0
  111. package/dist/model/prompts/fill.js +46 -0
  112. package/dist/model/prompts/limits.d.ts +53 -0
  113. package/dist/model/prompts/limits.js +53 -0
  114. package/dist/model/prompts/search.d.ts +58 -0
  115. package/dist/model/prompts/search.js +146 -0
  116. package/dist/model/prompts/types.d.ts +204 -0
  117. package/dist/model/prompts/types.js +13 -0
  118. package/dist/model/prompts/validate.d.ts +22 -0
  119. package/dist/model/prompts/validate.js +69 -0
  120. package/dist/model/team/activity.d.ts +67 -0
  121. package/dist/model/team/activity.js +130 -0
  122. package/dist/model/team/limits.d.ts +308 -0
  123. package/dist/model/team/limits.js +330 -0
  124. package/dist/model/team/model.d.ts +104 -0
  125. package/dist/model/team/model.js +150 -0
  126. package/dist/model/team/panel-rows.d.ts +48 -0
  127. package/dist/model/team/panel-rows.js +75 -0
  128. package/dist/model/team/timeline.d.ts +74 -0
  129. package/dist/model/team/timeline.js +101 -0
  130. package/dist/model/team/types.d.ts +354 -0
  131. package/dist/model/team/types.js +13 -0
  132. package/dist/model/todo/acceptance.d.ts +120 -0
  133. package/dist/model/todo/acceptance.js +399 -0
  134. package/dist/model/todo/follow-through.d.ts +138 -0
  135. package/dist/model/todo/follow-through.js +248 -0
  136. package/dist/model/todo/limits.d.ts +152 -0
  137. package/dist/model/todo/limits.js +152 -0
  138. package/dist/model/todo/panel-rows.d.ts +45 -0
  139. package/dist/model/todo/panel-rows.js +70 -0
  140. package/dist/model/todo/plan-sections.d.ts +60 -0
  141. package/dist/model/todo/plan-sections.js +108 -0
  142. package/dist/model/todo/row-window.d.ts +51 -0
  143. package/dist/model/todo/row-window.js +107 -0
  144. package/dist/model/todo/types.d.ts +124 -0
  145. package/dist/model/todo/types.js +12 -0
  146. package/dist/model/tools/human-input.d.ts +212 -0
  147. package/dist/model/tools/human-input.js +265 -0
  148. package/dist/model/tools/patch.d.ts +115 -0
  149. package/dist/model/tools/patch.js +453 -0
  150. package/dist/model/tools/terminal-output.d.ts +115 -0
  151. package/dist/model/tools/terminal-output.js +201 -0
  152. package/dist/model/tools/tool-output-store.d.ts +68 -0
  153. package/dist/model/tools/tool-output-store.js +102 -0
  154. package/dist/model/update/limits.d.ts +111 -0
  155. package/dist/model/update/limits.js +111 -0
  156. package/dist/model/update/semver.d.ts +89 -0
  157. package/dist/model/update/semver.js +295 -0
  158. package/dist/model/update/types.d.ts +169 -0
  159. package/dist/model/update/types.js +68 -0
  160. package/dist/testing/governance-fixtures.d.ts +13 -0
  161. package/dist/testing/governance-fixtures.js +98 -0
  162. package/dist/testing/mini-vt.d.ts +28 -0
  163. package/dist/testing/mini-vt.js +158 -0
  164. package/dist/testing/render-at-width.d.ts +16 -0
  165. package/dist/testing/render-at-width.js +57 -0
  166. package/dist/testing/terminal-harness.d.ts +15 -0
  167. package/dist/testing/terminal-harness.js +40 -0
  168. package/dist/testing/vt-screen.d.ts +28 -0
  169. package/dist/testing/vt-screen.js +139 -0
  170. package/dist/ui/ActivityLine.d.ts +26 -0
  171. package/dist/ui/ActivityLine.js +51 -0
  172. package/dist/ui/AutocompletePopup.d.ts +23 -0
  173. package/dist/ui/AutocompletePopup.js +17 -0
  174. package/dist/ui/BottomStatusRow.d.ts +10 -0
  175. package/dist/ui/BottomStatusRow.js +9 -0
  176. package/dist/ui/Composer.d.ts +115 -0
  177. package/dist/ui/Composer.js +64 -0
  178. package/dist/ui/GovernancePanel.d.ts +50 -0
  179. package/dist/ui/GovernancePanel.js +77 -0
  180. package/dist/ui/GovernanceRun.d.ts +18 -0
  181. package/dist/ui/GovernanceRun.js +11 -0
  182. package/dist/ui/Header.d.ts +48 -0
  183. package/dist/ui/Header.js +27 -0
  184. package/dist/ui/Logo.d.ts +32 -0
  185. package/dist/ui/Logo.js +65 -0
  186. package/dist/ui/Markdown.d.ts +29 -0
  187. package/dist/ui/Markdown.js +116 -0
  188. package/dist/ui/PromptCaret.d.ts +11 -0
  189. package/dist/ui/PromptCaret.js +31 -0
  190. package/dist/ui/PromptInput.d.ts +192 -0
  191. package/dist/ui/PromptInput.js +689 -0
  192. package/dist/ui/QueuePanel.d.ts +8 -0
  193. package/dist/ui/QueuePanel.js +9 -0
  194. package/dist/ui/QueueStatusRow.d.ts +24 -0
  195. package/dist/ui/QueueStatusRow.js +51 -0
  196. package/dist/ui/ScrollbackShell.d.ts +132 -0
  197. package/dist/ui/ScrollbackShell.js +26 -0
  198. package/dist/ui/SessionOpener.d.ts +30 -0
  199. package/dist/ui/SessionOpener.js +12 -0
  200. package/dist/ui/StatusBar.d.ts +130 -0
  201. package/dist/ui/StatusBar.js +61 -0
  202. package/dist/ui/TeamPanel.d.ts +76 -0
  203. package/dist/ui/TeamPanel.js +103 -0
  204. package/dist/ui/ToastStack.d.ts +8 -0
  205. package/dist/ui/ToastStack.js +31 -0
  206. package/dist/ui/TodoPanel.d.ts +52 -0
  207. package/dist/ui/TodoPanel.js +214 -0
  208. package/dist/ui/Transcript.d.ts +105 -0
  209. package/dist/ui/Transcript.js +258 -0
  210. package/dist/ui/UpdateLine.d.ts +44 -0
  211. package/dist/ui/UpdateLine.js +129 -0
  212. package/dist/ui/activity-phrases.d.ts +33 -0
  213. package/dist/ui/activity-phrases.js +50 -0
  214. package/dist/ui/capabilities.d.ts +27 -0
  215. package/dist/ui/capabilities.js +65 -0
  216. package/dist/ui/clipboard-task.d.ts +29 -0
  217. package/dist/ui/clipboard-task.js +66 -0
  218. package/dist/ui/clipboard.d.ts +31 -0
  219. package/dist/ui/clipboard.js +157 -0
  220. package/dist/ui/color-runtime.d.ts +5 -0
  221. package/dist/ui/color-runtime.js +29 -0
  222. package/dist/ui/composer-input.d.ts +38 -0
  223. package/dist/ui/composer-input.js +79 -0
  224. package/dist/ui/composer-limits.d.ts +30 -0
  225. package/dist/ui/composer-limits.js +45 -0
  226. package/dist/ui/composer-rows.d.ts +73 -0
  227. package/dist/ui/composer-rows.js +129 -0
  228. package/dist/ui/console-bridge.d.ts +19 -0
  229. package/dist/ui/console-bridge.js +52 -0
  230. package/dist/ui/density.d.ts +26 -0
  231. package/dist/ui/density.js +34 -0
  232. package/dist/ui/display-tab.d.ts +51 -0
  233. package/dist/ui/display-tab.js +82 -0
  234. package/dist/ui/editor-navigation.d.ts +55 -0
  235. package/dist/ui/editor-navigation.js +96 -0
  236. package/dist/ui/editor-reducer.d.ts +108 -0
  237. package/dist/ui/editor-reducer.js +187 -0
  238. package/dist/ui/enter-frames.d.ts +47 -0
  239. package/dist/ui/enter-frames.js +117 -0
  240. package/dist/ui/entries/AssistantEntry.d.ts +37 -0
  241. package/dist/ui/entries/AssistantEntry.js +43 -0
  242. package/dist/ui/entries/CompactionCard.d.ts +88 -0
  243. package/dist/ui/entries/CompactionCard.js +222 -0
  244. package/dist/ui/entries/DiffView.d.ts +61 -0
  245. package/dist/ui/entries/DiffView.js +103 -0
  246. package/dist/ui/entries/EntryFrame.d.ts +23 -0
  247. package/dist/ui/entries/EntryFrame.js +6 -0
  248. package/dist/ui/entries/FastCard.d.ts +53 -0
  249. package/dist/ui/entries/FastCard.js +105 -0
  250. package/dist/ui/entries/GovernanceCard.d.ts +30 -0
  251. package/dist/ui/entries/GovernanceCard.js +32 -0
  252. package/dist/ui/entries/InvocationCard.d.ts +20 -0
  253. package/dist/ui/entries/InvocationCard.js +32 -0
  254. package/dist/ui/entries/QueuedEntry.d.ts +27 -0
  255. package/dist/ui/entries/QueuedEntry.js +33 -0
  256. package/dist/ui/entries/RetryCard.d.ts +56 -0
  257. package/dist/ui/entries/RetryCard.js +60 -0
  258. package/dist/ui/entries/ServiceCard.d.ts +82 -0
  259. package/dist/ui/entries/ServiceCard.js +151 -0
  260. package/dist/ui/entries/TeamCard.d.ts +55 -0
  261. package/dist/ui/entries/TeamCard.js +94 -0
  262. package/dist/ui/entries/TodoCard.d.ts +54 -0
  263. package/dist/ui/entries/TodoCard.js +98 -0
  264. package/dist/ui/entries/ToolCard.d.ts +81 -0
  265. package/dist/ui/entries/ToolCard.js +169 -0
  266. package/dist/ui/entries/ToolPreview.d.ts +59 -0
  267. package/dist/ui/entries/ToolPreview.js +208 -0
  268. package/dist/ui/entries/UserEntry.d.ts +36 -0
  269. package/dist/ui/entries/UserEntry.js +57 -0
  270. package/dist/ui/entries/WaitCard.d.ts +37 -0
  271. package/dist/ui/entries/WaitCard.js +92 -0
  272. package/dist/ui/exit-snapshot.d.ts +43 -0
  273. package/dist/ui/exit-snapshot.js +26 -0
  274. package/dist/ui/frame-differ.d.ts +166 -0
  275. package/dist/ui/frame-differ.js +354 -0
  276. package/dist/ui/frame-observer.d.ts +17 -0
  277. package/dist/ui/frame-observer.js +94 -0
  278. package/dist/ui/frame-parser.d.ts +7 -0
  279. package/dist/ui/frame-parser.js +18 -0
  280. package/dist/ui/gauge.d.ts +39 -0
  281. package/dist/ui/gauge.js +55 -0
  282. package/dist/ui/glyphs.d.ts +178 -0
  283. package/dist/ui/glyphs.js +165 -0
  284. package/dist/ui/governance-copy.d.ts +69 -0
  285. package/dist/ui/governance-copy.js +104 -0
  286. package/dist/ui/governance-status.d.ts +145 -0
  287. package/dist/ui/governance-status.js +326 -0
  288. package/dist/ui/gradient.d.ts +11 -0
  289. package/dist/ui/gradient.js +50 -0
  290. package/dist/ui/ink-runtime.d.ts +4 -0
  291. package/dist/ui/ink-runtime.js +51 -0
  292. package/dist/ui/interaction-copy.d.ts +84 -0
  293. package/dist/ui/interaction-copy.js +41 -0
  294. package/dist/ui/interaction-hints.d.ts +44 -0
  295. package/dist/ui/interaction-hints.js +97 -0
  296. package/dist/ui/layout/AppShell.d.ts +17 -0
  297. package/dist/ui/layout/AppShell.js +6 -0
  298. package/dist/ui/layout/Gutter.d.ts +67 -0
  299. package/dist/ui/layout/Gutter.js +42 -0
  300. package/dist/ui/layout/MeasuredEntry.d.ts +21 -0
  301. package/dist/ui/layout/MeasuredEntry.js +30 -0
  302. package/dist/ui/layout/OverlayFrame.d.ts +73 -0
  303. package/dist/ui/layout/OverlayFrame.js +110 -0
  304. package/dist/ui/layout/ScrollIndicator.d.ts +32 -0
  305. package/dist/ui/layout/ScrollIndicator.js +22 -0
  306. package/dist/ui/layout/ScrollViewport.d.ts +40 -0
  307. package/dist/ui/layout/ScrollViewport.js +222 -0
  308. package/dist/ui/layout/agents-board.d.ts +102 -0
  309. package/dist/ui/layout/agents-board.js +389 -0
  310. package/dist/ui/layout/autocomplete.d.ts +18 -0
  311. package/dist/ui/layout/autocomplete.js +26 -0
  312. package/dist/ui/layout/budget.d.ts +43 -0
  313. package/dist/ui/layout/budget.js +52 -0
  314. package/dist/ui/layout/cells.d.ts +61 -0
  315. package/dist/ui/layout/cells.js +156 -0
  316. package/dist/ui/layout/document-layout.d.ts +13 -0
  317. package/dist/ui/layout/document-layout.js +10 -0
  318. package/dist/ui/layout/follow-state.d.ts +138 -0
  319. package/dist/ui/layout/follow-state.js +148 -0
  320. package/dist/ui/layout/frame.d.ts +36 -0
  321. package/dist/ui/layout/frame.js +39 -0
  322. package/dist/ui/layout/governance-board.d.ts +121 -0
  323. package/dist/ui/layout/governance-board.js +382 -0
  324. package/dist/ui/layout/governance-card.d.ts +53 -0
  325. package/dist/ui/layout/governance-card.js +134 -0
  326. package/dist/ui/layout/governance-chip.d.ts +38 -0
  327. package/dist/ui/layout/governance-chip.js +64 -0
  328. package/dist/ui/layout/governance-panel.d.ts +85 -0
  329. package/dist/ui/layout/governance-panel.js +358 -0
  330. package/dist/ui/layout/governance-roster.d.ts +65 -0
  331. package/dist/ui/layout/governance-roster.js +275 -0
  332. package/dist/ui/layout/header-hints.d.ts +90 -0
  333. package/dist/ui/layout/header-hints.js +110 -0
  334. package/dist/ui/layout/header-left.d.ts +115 -0
  335. package/dist/ui/layout/header-left.js +206 -0
  336. package/dist/ui/layout/invocation-card.d.ts +41 -0
  337. package/dist/ui/layout/invocation-card.js +91 -0
  338. package/dist/ui/layout/kit-chip.d.ts +50 -0
  339. package/dist/ui/layout/kit-chip.js +81 -0
  340. package/dist/ui/layout/overlay-window.d.ts +43 -0
  341. package/dist/ui/layout/overlay-window.js +51 -0
  342. package/dist/ui/layout/queue-layout.d.ts +19 -0
  343. package/dist/ui/layout/queue-layout.js +26 -0
  344. package/dist/ui/layout/rail.d.ts +7 -0
  345. package/dist/ui/layout/rail.js +16 -0
  346. package/dist/ui/layout/scroll-indicator.d.ts +27 -0
  347. package/dist/ui/layout/scroll-indicator.js +36 -0
  348. package/dist/ui/layout/scroll.d.ts +37 -0
  349. package/dist/ui/layout/scroll.js +99 -0
  350. package/dist/ui/layout/scrollbar-geometry.d.ts +17 -0
  351. package/dist/ui/layout/scrollbar-geometry.js +13 -0
  352. package/dist/ui/layout/session-chip.d.ts +52 -0
  353. package/dist/ui/layout/session-chip.js +64 -0
  354. package/dist/ui/layout/shortcut-panel-layout.d.ts +191 -0
  355. package/dist/ui/layout/shortcut-panel-layout.js +321 -0
  356. package/dist/ui/layout/status-detail-layout.d.ts +9 -0
  357. package/dist/ui/layout/status-detail-layout.js +79 -0
  358. package/dist/ui/layout/status-layout.d.ts +140 -0
  359. package/dist/ui/layout/status-layout.js +262 -0
  360. package/dist/ui/layout/task-summary-cell.d.ts +61 -0
  361. package/dist/ui/layout/task-summary-cell.js +65 -0
  362. package/dist/ui/layout/team-panel.d.ts +18 -0
  363. package/dist/ui/layout/team-panel.js +25 -0
  364. package/dist/ui/layout/team-row.d.ts +139 -0
  365. package/dist/ui/layout/team-row.js +246 -0
  366. package/dist/ui/layout/todo-layout.d.ts +62 -0
  367. package/dist/ui/layout/todo-layout.js +102 -0
  368. package/dist/ui/layout/useTerminalSize.d.ts +13 -0
  369. package/dist/ui/layout/useTerminalSize.js +50 -0
  370. package/dist/ui/layout/viewport-geometry.d.ts +29 -0
  371. package/dist/ui/layout/viewport-geometry.js +28 -0
  372. package/dist/ui/layout/virtual-window.d.ts +112 -0
  373. package/dist/ui/layout/virtual-window.js +494 -0
  374. package/dist/ui/layout/wait-bar.d.ts +34 -0
  375. package/dist/ui/layout/wait-bar.js +48 -0
  376. package/dist/ui/layout/wrap-rows.d.ts +26 -0
  377. package/dist/ui/layout/wrap-rows.js +88 -0
  378. package/dist/ui/live-clamp.d.ts +14 -0
  379. package/dist/ui/live-clamp.js +46 -0
  380. package/dist/ui/markdown-blocks.d.ts +107 -0
  381. package/dist/ui/markdown-blocks.js +240 -0
  382. package/dist/ui/overlays/AgentsBoardOverlay.d.ts +57 -0
  383. package/dist/ui/overlays/AgentsBoardOverlay.js +183 -0
  384. package/dist/ui/overlays/ConfirmDialog.d.ts +31 -0
  385. package/dist/ui/overlays/ConfirmDialog.js +44 -0
  386. package/dist/ui/overlays/GovernanceBoardOverlay.d.ts +41 -0
  387. package/dist/ui/overlays/GovernanceBoardOverlay.js +76 -0
  388. package/dist/ui/overlays/GovernanceSettingsPage.d.ts +48 -0
  389. package/dist/ui/overlays/GovernanceSettingsPage.js +93 -0
  390. package/dist/ui/overlays/HelpOverlay.d.ts +29 -0
  391. package/dist/ui/overlays/HelpOverlay.js +232 -0
  392. package/dist/ui/overlays/KitEditor.d.ts +23 -0
  393. package/dist/ui/overlays/KitEditor.js +101 -0
  394. package/dist/ui/overlays/KitManager.d.ts +23 -0
  395. package/dist/ui/overlays/KitManager.js +104 -0
  396. package/dist/ui/overlays/KitPicker.d.ts +49 -0
  397. package/dist/ui/overlays/KitPicker.js +58 -0
  398. package/dist/ui/overlays/ModelDiscoveryList.d.ts +23 -0
  399. package/dist/ui/overlays/ModelDiscoveryList.js +161 -0
  400. package/dist/ui/overlays/ModelPicker.d.ts +26 -0
  401. package/dist/ui/overlays/ModelPicker.js +63 -0
  402. package/dist/ui/overlays/ModelProfileEditor.d.ts +29 -0
  403. package/dist/ui/overlays/ModelProfileEditor.js +168 -0
  404. package/dist/ui/overlays/ModelProfilePicker.d.ts +48 -0
  405. package/dist/ui/overlays/ModelProfilePicker.js +231 -0
  406. package/dist/ui/overlays/PlanReviewOverlay.d.ts +51 -0
  407. package/dist/ui/overlays/PlanReviewOverlay.js +132 -0
  408. package/dist/ui/overlays/PromptEditorPage.d.ts +48 -0
  409. package/dist/ui/overlays/PromptEditorPage.js +227 -0
  410. package/dist/ui/overlays/PromptLibraryOverlay.d.ts +37 -0
  411. package/dist/ui/overlays/PromptLibraryOverlay.js +191 -0
  412. package/dist/ui/overlays/PromptPicker.d.ts +36 -0
  413. package/dist/ui/overlays/PromptPicker.js +129 -0
  414. package/dist/ui/overlays/PromptTextArea.d.ts +86 -0
  415. package/dist/ui/overlays/PromptTextArea.js +141 -0
  416. package/dist/ui/overlays/QuestionOverlay.d.ts +39 -0
  417. package/dist/ui/overlays/QuestionOverlay.js +258 -0
  418. package/dist/ui/overlays/QueueOverlay.d.ts +22 -0
  419. package/dist/ui/overlays/QueueOverlay.js +79 -0
  420. package/dist/ui/overlays/SettingsScreen.d.ts +228 -0
  421. package/dist/ui/overlays/SettingsScreen.js +1037 -0
  422. package/dist/ui/overlays/ShortcutPanel.d.ts +39 -0
  423. package/dist/ui/overlays/ShortcutPanel.js +106 -0
  424. package/dist/ui/overlays/TeamFanoutPage.d.ts +51 -0
  425. package/dist/ui/overlays/TeamFanoutPage.js +90 -0
  426. package/dist/ui/overlays/governance-settings.d.ts +79 -0
  427. package/dist/ui/overlays/governance-settings.js +140 -0
  428. package/dist/ui/overlays/kit-picker-state.d.ts +87 -0
  429. package/dist/ui/overlays/kit-picker-state.js +136 -0
  430. package/dist/ui/overlays/kit-settings-state.d.ts +129 -0
  431. package/dist/ui/overlays/kit-settings-state.js +268 -0
  432. package/dist/ui/overlays/model-probe-view.d.ts +128 -0
  433. package/dist/ui/overlays/model-probe-view.js +225 -0
  434. package/dist/ui/overlays/model-profile-state.d.ts +177 -0
  435. package/dist/ui/overlays/model-profile-state.js +301 -0
  436. package/dist/ui/overlays/prompt-library-state.d.ts +162 -0
  437. package/dist/ui/overlays/prompt-library-state.js +335 -0
  438. package/dist/ui/overlays/prompt-picker-state.d.ts +71 -0
  439. package/dist/ui/overlays/prompt-picker-state.js +98 -0
  440. package/dist/ui/overlays/team-fanout-state.d.ts +106 -0
  441. package/dist/ui/overlays/team-fanout-state.js +155 -0
  442. package/dist/ui/overlays/use-model-probe.d.ts +30 -0
  443. package/dist/ui/overlays/use-model-probe.js +109 -0
  444. package/dist/ui/palettes.d.ts +112 -0
  445. package/dist/ui/palettes.js +130 -0
  446. package/dist/ui/paste-frames.d.ts +91 -0
  447. package/dist/ui/paste-frames.js +117 -0
  448. package/dist/ui/paste-tokens.d.ts +90 -0
  449. package/dist/ui/paste-tokens.js +147 -0
  450. package/dist/ui/render-cache.d.ts +81 -0
  451. package/dist/ui/render-cache.js +196 -0
  452. package/dist/ui/render-governor.d.ts +54 -0
  453. package/dist/ui/render-governor.js +78 -0
  454. package/dist/ui/run-metrics.d.ts +23 -0
  455. package/dist/ui/run-metrics.js +27 -0
  456. package/dist/ui/run-status-row.d.ts +63 -0
  457. package/dist/ui/run-status-row.js +54 -0
  458. package/dist/ui/screen.d.ts +107 -0
  459. package/dist/ui/screen.js +234 -0
  460. package/dist/ui/scrollback/LiveTail.d.ts +115 -0
  461. package/dist/ui/scrollback/LiveTail.js +48 -0
  462. package/dist/ui/scrollback/band.d.ts +114 -0
  463. package/dist/ui/scrollback/band.js +143 -0
  464. package/dist/ui/scrollback/budget.d.ts +90 -0
  465. package/dist/ui/scrollback/budget.js +100 -0
  466. package/dist/ui/scrollback/canvas.d.ts +100 -0
  467. package/dist/ui/scrollback/canvas.js +114 -0
  468. package/dist/ui/scrollback/cursor-probe.d.ts +71 -0
  469. package/dist/ui/scrollback/cursor-probe.js +133 -0
  470. package/dist/ui/scrollback/drain.d.ts +32 -0
  471. package/dist/ui/scrollback/drain.js +64 -0
  472. package/dist/ui/scrollback/exit-summary.d.ts +23 -0
  473. package/dist/ui/scrollback/exit-summary.js +25 -0
  474. package/dist/ui/scrollback/limits.d.ts +98 -0
  475. package/dist/ui/scrollback/limits.js +98 -0
  476. package/dist/ui/scrollback/live-preview.d.ts +34 -0
  477. package/dist/ui/scrollback/live-preview.js +130 -0
  478. package/dist/ui/scrollback/overflow-print.d.ts +108 -0
  479. package/dist/ui/scrollback/overflow-print.js +120 -0
  480. package/dist/ui/scrollback/renderer.d.ts +48 -0
  481. package/dist/ui/scrollback/renderer.js +186 -0
  482. package/dist/ui/scrollback/scrollback-writer.d.ts +174 -0
  483. package/dist/ui/scrollback/scrollback-writer.js +648 -0
  484. package/dist/ui/scrollback/settled-boundary.d.ts +42 -0
  485. package/dist/ui/scrollback/settled-boundary.js +109 -0
  486. package/dist/ui/scrollback/tail-anchor.d.ts +71 -0
  487. package/dist/ui/scrollback/tail-anchor.js +79 -0
  488. package/dist/ui/scrollback/tail-window.d.ts +73 -0
  489. package/dist/ui/scrollback/tail-window.js +89 -0
  490. package/dist/ui/scrollback/use-scrollback-view.d.ts +139 -0
  491. package/dist/ui/scrollback/use-scrollback-view.js +601 -0
  492. package/dist/ui/scrollback/writer-shapes.d.ts +127 -0
  493. package/dist/ui/scrollback/writer-shapes.js +159 -0
  494. package/dist/ui/scrollbar-controller.d.ts +30 -0
  495. package/dist/ui/scrollbar-controller.js +124 -0
  496. package/dist/ui/selection/highlight.d.ts +39 -0
  497. package/dist/ui/selection/highlight.js +64 -0
  498. package/dist/ui/selection/screen-mirror.d.ts +24 -0
  499. package/dist/ui/selection/screen-mirror.js +35 -0
  500. package/dist/ui/selection/selection-controller.d.ts +104 -0
  501. package/dist/ui/selection/selection-controller.js +372 -0
  502. package/dist/ui/selection/selection.d.ts +90 -0
  503. package/dist/ui/selection/selection.js +223 -0
  504. package/dist/ui/shortcuts.d.ts +81 -0
  505. package/dist/ui/shortcuts.js +221 -0
  506. package/dist/ui/status-feedback.d.ts +35 -0
  507. package/dist/ui/status-feedback.js +38 -0
  508. package/dist/ui/stdout-frame-writer.d.ts +74 -0
  509. package/dist/ui/stdout-frame-writer.js +155 -0
  510. package/dist/ui/team-status.d.ts +166 -0
  511. package/dist/ui/team-status.js +252 -0
  512. package/dist/ui/terminal-plan.d.ts +52 -0
  513. package/dist/ui/terminal-plan.js +49 -0
  514. package/dist/ui/theme.d.ts +96 -0
  515. package/dist/ui/theme.js +130 -0
  516. package/dist/ui/transcript-text.d.ts +41 -0
  517. package/dist/ui/transcript-text.js +282 -0
  518. package/dist/ui/use-height-store.d.ts +31 -0
  519. package/dist/ui/use-height-store.js +76 -0
  520. package/dist/ui/use-render-governor.d.ts +39 -0
  521. package/dist/ui/use-render-governor.js +57 -0
  522. package/dist/ui/use-wheel-routing.d.ts +57 -0
  523. package/dist/ui/use-wheel-routing.js +152 -0
  524. package/dist/ui/win-vt-force.d.ts +136 -0
  525. package/dist/ui/win-vt-force.js +237 -0
  526. package/dist/ui/win-vt-input.d.ts +57 -0
  527. package/dist/ui/win-vt-input.js +62 -0
  528. package/package.json +86 -4
@@ -0,0 +1,222 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';
3
+ import { Box, measureElement, useStdout } from 'ink';
4
+ import { createScrollbarController } from '../scrollbar-controller.js';
5
+ import { ViewportGeometryContext } from './viewport-geometry.js';
6
+ import { applyScrollTimes } from './scroll.js';
7
+ import { reduceFollow, shouldArmResume } from './follow-state.js';
8
+ import { thumbRange } from './scroll-indicator.js';
9
+ import { ScrollIndicator } from './ScrollIndicator.js';
10
+ import { buildDocumentLayout } from './document-layout.js';
11
+ /**
12
+ * Whether `element` lies fully inside `clip`. A missing element (not mounted) or
13
+ * clip reports `true`, so a caller that consumes the answer must first know the
14
+ * element is actually mounted. Rows are one line tall, so "partially visible"
15
+ * cannot occur for the run status row.
16
+ */
17
+ function elementVisible(element, clip) {
18
+ if (!element || !clip)
19
+ return true;
20
+ let top = 0;
21
+ let current = element;
22
+ while (current && current !== clip) {
23
+ top += current.yogaNode?.getComputedTop() ?? 0;
24
+ current = current.parentNode;
25
+ }
26
+ return current === clip && top >= 0 &&
27
+ top + measureElement(element).height <= measureElement(clip).height;
28
+ }
29
+ /** One offset for messages, padding and panels; hidden trees keep their local state. */
30
+ export function ScrollViewport(props) {
31
+ const { stdout } = useStdout();
32
+ const { active = true, hold = false, resumeMs = 0, scrollbar } = props;
33
+ const cols = props.cols ?? stdout?.columns ?? 80;
34
+ const clipRef = useRef(null);
35
+ const bodyRef = useRef(null);
36
+ const footerRef = useRef(null);
37
+ const [{ metrics, offset }, setGeometry] = useState({
38
+ metrics: { viewport: 0, content: 0, padding: 0, footer: 0 }, offset: 0,
39
+ });
40
+ const pendingMetrics = useRef(metrics);
41
+ const geometryScheduled = useRef(false);
42
+ const mounted = useRef(true);
43
+ const [dragging, setDragging] = useState(false);
44
+ const offsetRef = useRef(0);
45
+ const baseline = useRef(null);
46
+ const latest = useRef({ active, hold, resumeMs, metrics, scrollbar });
47
+ latest.current = { active, hold, resumeMs, metrics, scrollbar };
48
+ const pausedLines = useRef(0);
49
+ const resumeTimer = useRef(null);
50
+ const lastIntent = useRef(props.intent?.nonce);
51
+ const lastPin = useRef(props.pinToBottomNonce);
52
+ const lastReset = useRef(props.resetKey);
53
+ const lastVisible = useRef();
54
+ const lastActivityVisible = useRef();
55
+ const previousActive = useRef(active);
56
+ const geometryRevision = useRef(0);
57
+ const geometryBounds = useRef('');
58
+ const lastGeometryKey = useRef(props.geometryKey);
59
+ const clearResume = useCallback(() => {
60
+ if (resumeTimer.current)
61
+ clearTimeout(resumeTimer.current);
62
+ resumeTimer.current = null;
63
+ }, []);
64
+ const publishGeometry = useCallback(() => {
65
+ if (geometryScheduled.current)
66
+ return;
67
+ geometryScheduled.current = true;
68
+ queueMicrotask(() => {
69
+ geometryScheduled.current = false;
70
+ if (!mounted.current)
71
+ return;
72
+ const nextMetrics = pendingMetrics.current;
73
+ const nextOffset = offsetRef.current;
74
+ setGeometry((previous) => previous.offset === nextOffset &&
75
+ Object.keys(nextMetrics).every((key) => previous.metrics[key] ===
76
+ nextMetrics[key])
77
+ ? previous : { metrics: nextMetrics, offset: nextOffset });
78
+ });
79
+ }, []);
80
+ const publishOffset = useCallback((next) => {
81
+ offsetRef.current = next;
82
+ if (next === 0)
83
+ pausedLines.current = 0;
84
+ publishGeometry();
85
+ }, [publishGeometry]);
86
+ const isHeld = useCallback(() => latest.current.hold ||
87
+ !!latest.current.scrollbar?.controller?.isCaptured(), []);
88
+ const armResume = useCallback(() => {
89
+ clearResume();
90
+ const current = latest.current;
91
+ if (!current.active || !shouldArmResume({ resumeMs: current.resumeMs,
92
+ offset: offsetRef.current, newLinesWhilePaused: pausedLines.current, hold: isHeld() }))
93
+ return;
94
+ resumeTimer.current = setTimeout(() => {
95
+ resumeTimer.current = null;
96
+ if (latest.current.active && !isHeld())
97
+ publishOffset(0);
98
+ }, current.resumeMs);
99
+ resumeTimer.current.unref?.();
100
+ }, [clearResume, isHeld, publishOffset]);
101
+ useLayoutEffect(() => {
102
+ if (!scrollbar)
103
+ return;
104
+ const controller = createScrollbarController({
105
+ getGeometry: () => scrollbar.geometry,
106
+ isEnabled: () => latest.current.active && scrollbar.frameReady && scrollbar.isEnabled(),
107
+ setOffset: (next) => { publishOffset(next); armResume(); },
108
+ page: (kind) => {
109
+ publishOffset(applyScrollTimes({ offset: offsetRef.current }, kind, latest.current.metrics, 1).offset);
110
+ },
111
+ onStart: () => { clearResume(); scrollbar.onStart?.(); },
112
+ onHold: (held) => { setDragging(held); armResume(); },
113
+ });
114
+ scrollbar.controller = controller;
115
+ return () => {
116
+ controller.dispose();
117
+ scrollbar.controller = null;
118
+ scrollbar.geometry = null;
119
+ scrollbar.invalidate();
120
+ };
121
+ }, [scrollbar, publishOffset, armResume, clearResume]);
122
+ useEffect(() => clearResume, [clearResume]);
123
+ useLayoutEffect(() => {
124
+ mounted.current = true;
125
+ return () => { mounted.current = false; };
126
+ }, []);
127
+ useEffect(() => { armResume(); }, [hold, resumeMs, armResume]);
128
+ useLayoutEffect(() => {
129
+ if (lastGeometryKey.current !== props.geometryKey) {
130
+ props.onGeometryChange?.();
131
+ scrollbar?.controller?.cancel();
132
+ scrollbar?.invalidate();
133
+ geometryRevision.current++;
134
+ lastGeometryKey.current = props.geometryKey;
135
+ }
136
+ const reset = lastReset.current !== props.resetKey;
137
+ lastReset.current = props.resetKey;
138
+ const pin = lastPin.current !== props.pinToBottomNonce;
139
+ lastPin.current = props.pinToBottomNonce;
140
+ const intent = lastIntent.current !== props.intent?.nonce ? props.intent : undefined;
141
+ lastIntent.current = props.intent?.nonce;
142
+ if (reset) {
143
+ baseline.current = null;
144
+ pausedLines.current = 0;
145
+ publishOffset(0);
146
+ scrollbar?.controller?.cancel();
147
+ }
148
+ if (!active) {
149
+ clearResume();
150
+ scrollbar?.invalidate();
151
+ if (scrollbar)
152
+ scrollbar.geometry = null;
153
+ previousActive.current = false;
154
+ return;
155
+ }
156
+ const viewport = clipRef.current ? measureElement(clipRef.current).height : 0;
157
+ const body = bodyRef.current ? measureElement(bodyRef.current).height : 0;
158
+ const footer = footerRef.current ? measureElement(footerRef.current).height : 0;
159
+ const layout = buildDocumentLayout({ viewportRows: viewport, bodyRows: body, footerRows: footer });
160
+ const padding = props.footer === undefined ? 0 : layout.paddingRows;
161
+ const content = body + footer + padding;
162
+ const tail = props.tailRowsRef?.current.rows ?? 0;
163
+ const old = baseline.current;
164
+ const reflow = !old || old.cols !== cols || old.viewport !== viewport;
165
+ const tailDelta = reflow ? 0 : tail - old.tail;
166
+ const footerDelta = reflow ? 0 : footer - old.footer;
167
+ const paddingDelta = !old || reflow || props.footer === undefined ? 0 :
168
+ Math.max(0, viewport - old.body - old.footer - tailDelta - footerDelta) - old.padding;
169
+ const nextMetrics = { viewport, content, padding, footer };
170
+ latest.current.metrics = nextMetrics;
171
+ // Markdown estimates may take more than 50 measurements to converge in a
172
+ // tall viewport. Publishing during the layout commit recursively mounts
173
+ // another window before the height store's microtask can finish. Coalesce
174
+ // geometry with that store outside the commit; keep measuring every frame.
175
+ // Offset clamps must join the same publication: at the top, each corrected
176
+ // estimate shrinks the overflow and would otherwise recurse via setOffset.
177
+ pendingMetrics.current = nextMetrics;
178
+ publishGeometry();
179
+ const followed = reduceFollow({ offset: offsetRef.current,
180
+ overflowLines: Math.max(0, content - viewport), tailDelta,
181
+ layoutTailDelta: footerDelta + paddingDelta, hold: isHeld(),
182
+ newLinesWhilePaused: pausedLines.current });
183
+ pausedLines.current = followed.newLinesWhilePaused;
184
+ let next = pin || reset ? 0 : followed.offset;
185
+ if (!pin && intent)
186
+ next = applyScrollTimes({ offset: next }, intent.kind, nextMetrics, intent.repeat ?? 1).offset;
187
+ publishOffset(next);
188
+ baseline.current = { viewport, content, body, footer, padding, cols, tail };
189
+ if (tailDelta !== 0 || pin || intent || !previousActive.current)
190
+ armResume();
191
+ previousActive.current = true;
192
+ const bounds = `${cols}:${stdout?.columns}:${stdout?.rows}:${viewport}`;
193
+ if (bounds !== geometryBounds.current) {
194
+ geometryBounds.current = bounds;
195
+ geometryRevision.current++;
196
+ scrollbar?.invalidate();
197
+ }
198
+ if (scrollbar) {
199
+ scrollbar.geometry = { trackTop: 2, trackCol: stdout?.columns ?? cols,
200
+ trackRows: viewport, contentRows: content, offset: next,
201
+ thumb: thumbRange(viewport, content, next, true), revision: geometryRevision.current };
202
+ scrollbar.onGeometry?.();
203
+ }
204
+ const visible = elementVisible(props.composerRef?.current ?? null, clipRef.current);
205
+ if (lastVisible.current !== visible) {
206
+ lastVisible.current = visible;
207
+ props.onComposerVisibilityChange?.(visible);
208
+ }
209
+ const activityVisible = elementVisible(props.activityRef?.current ?? null, clipRef.current);
210
+ if (lastActivityVisible.current !== activityVisible) {
211
+ lastActivityVisible.current = activityVisible;
212
+ props.onActivityVisibilityChange?.(activityVisible);
213
+ }
214
+ });
215
+ const shiftUp = Math.max(0, metrics.content - metrics.viewport - offset);
216
+ useEffect(() => { props.onScrolledLinesChange?.(offset); }, [offset, props.onScrolledLinesChange]);
217
+ useEffect(() => { if (active)
218
+ props.onViewportShiftChange?.(shiftUp); }, [active, shiftUp, props.onViewportShiftChange]);
219
+ const geometry = useMemo(() => ({ viewportRows: metrics.viewport, offset,
220
+ contentRows: metrics.content, trailingContentRows: metrics.padding + metrics.footer }), [metrics, offset]);
221
+ return (_jsxs(Box, { flexDirection: "column", flexGrow: 1, flexShrink: 1, overflow: "hidden", children: [_jsxs(Box, { display: active ? 'flex' : 'none', flexDirection: "row", flexGrow: 1, flexShrink: 1, overflow: "hidden", children: [_jsx(Box, { ref: clipRef, flexDirection: "column", flexGrow: 1, flexShrink: 1, overflow: "hidden", children: _jsxs(Box, { flexDirection: "column", flexShrink: 0, marginTop: -shiftUp, children: [_jsx(ViewportGeometryContext.Provider, { value: geometry, children: _jsx(Box, { ref: bodyRef, flexDirection: "column", flexShrink: 0, children: props.children }) }), _jsx(Box, { height: metrics.padding, flexShrink: 0 }), _jsx(Box, { ref: footerRef, flexDirection: "column", flexShrink: 0, children: props.footer })] }) }), props.rail, props.showScrollIndicator && _jsx(ScrollIndicator, { rows: metrics.viewport, thumb: thumbRange(metrics.viewport, metrics.content, offset, true), dragging: dragging, theme: props.theme, caps: props.caps })] }), _jsx(Box, { display: active ? 'none' : 'flex', flexDirection: "column", flexGrow: 1, flexShrink: 1, overflow: "hidden", children: props.overlay ?? null })] }));
222
+ }
@@ -0,0 +1,102 @@
1
+ /**
2
+ * The Agents board's row model — pure projection, no Ink (tui-subagent-panel §4.4 / §7).
3
+ *
4
+ * WHY A PURE MODULE AND NOT JSX. The board's whole value is that it shows EVERY fact
5
+ * about every child, and the two things that can go wrong with that are both
6
+ * properties of a list: a row wider than the overlay (which silently desynchronises
7
+ * `OverlayFrame`'s position indicator) and a row count that grows without a bound.
8
+ * Both are assertable here, against plain strings, without a terminal - which is the
9
+ * same reason `layout/team-panel.ts` and `layout/budget.ts` are separate modules.
10
+ *
11
+ * LIVE-ONLY RULE (§4.4.2, RV-P0-2). The board has two sources with DIFFERENT fields:
12
+ * a live `TeamSnapshot` (has `messageCount`, `startedAt`, the activity prose and the
13
+ * timeline) and a settled `kind: 'team'` entry (has `durationMs` and the runs, and
14
+ * nothing else - `agent/reducer.ts`'s entry member carries no `messageCount` and no
15
+ * `startedAt`). A section whose source is missing is OMITTED, never filled with a
16
+ * zero: `mail 0` would be a lie, and an empty section title tells the reader nothing.
17
+ * The one section that survives both sources is `result` (`summary` / `error` is
18
+ * never stripped), which is precisely the fact a user opens the board to find.
19
+ *
20
+ * ASCII ONLY: `src/ui/**` is inside `glyphs.test.ts`'s static scan, so every symbol
21
+ * (the ellipsis, the separator, the cursor) arrives through `glyphs`.
22
+ */
23
+ import type { Entry } from '../../model/agent/reducer.js';
24
+ import type { SubagentRun, TeamSnapshot } from '../../model/team/types.js';
25
+ import type { Glyphs } from '../glyphs.js';
26
+ export type BoardRowKind = 'summary' | 'blank' | 'section' | 'child' | 'field' | 'event' | 'hint';
27
+ /** Which palette slot a row draws with. Mapped to `Theme` one level up, in the component. */
28
+ export type BoardTone = 'accent' | 'primary' | 'muted' | 'warn' | 'error' | 'done' | 'hint';
29
+ export interface BoardRow {
30
+ /** React key: stable and unique (`kind:subject:index`). */
31
+ key: string;
32
+ kind: BoardRowKind;
33
+ /** One already-folded line, safe to hand to `<Text wrap="truncate">`. */
34
+ text: string;
35
+ tone: BoardTone;
36
+ selected?: boolean;
37
+ }
38
+ export interface BoardSource {
39
+ dispatchId: string;
40
+ active: boolean;
41
+ /**
42
+ * When the dispatch started. **A settled `team` entry has no such field**
43
+ * (`agent/reducer.ts`'s entry member), so it is optional: with no `startedAt` the
44
+ * summary shows `durationMs` alone rather than inventing an absolute instant.
45
+ */
46
+ startedAt?: number;
47
+ endedAt?: number;
48
+ requested: number;
49
+ runs: readonly SubagentRun[];
50
+ /**
51
+ * Team-mail count. Live snapshots carry it; a settled entry does **not** - absent
52
+ * means the clause is omitted rather than rendered as `mail 0` (RV-P0-2).
53
+ */
54
+ messageCount?: number;
55
+ /** A settled entry's own total (`teamEnd` writes it). */
56
+ durationMs?: number;
57
+ }
58
+ /**
59
+ * The board's single source shape, resolved in ONE place.
60
+ *
61
+ * PRIORITY: live snapshot > (the component's frozen copy) > the most recent settled
62
+ * entry. This function answers the first and the third; the frozen copy belongs to
63
+ * the component because it only exists while a dispatch is being read (§4.4.5).
64
+ */
65
+ export declare function resolveBoardSource(input: {
66
+ team: TeamSnapshot | null;
67
+ entries: readonly Entry[];
68
+ }): BoardSource | null;
69
+ /**
70
+ * The child the board is showing, resolved from its LABEL every frame (D-8).
71
+ *
72
+ * Labels are the only stable handle: `panel-rows.ts` re-sorts the roster by phase, so
73
+ * an index would silently jump to a different child the moment one of them settles.
74
+ * Fallback order is "the first running child, else the first child", which is the
75
+ * one a reader opening the board mid-dispatch wants.
76
+ */
77
+ export declare function resolveSelection(runs: readonly SubagentRun[], label: string | null): SubagentRun | null;
78
+ export interface AgentBoardInput {
79
+ source: BoardSource;
80
+ /** Overlay content width. */
81
+ cols: number;
82
+ now: number;
83
+ selectedLabel: string | null;
84
+ glyphs: Glyphs;
85
+ native: boolean;
86
+ }
87
+ /**
88
+ * The board's rows, in the order a reader wants them: what the dispatch did, then who
89
+ * is in it, then everything about the selected child, then its history.
90
+ *
91
+ * Bounded by `TEAM_LIMITS.boardMaxRows`, and the truncation is ANNOUNCED rather than
92
+ * silent - a list that stops mid-fact with no notice reads as a rendering bug.
93
+ */
94
+ export declare function buildAgentBoardRows(input: AgentBoardInput): BoardRow[];
95
+ /**
96
+ * The facts, in a FIXED order, and with the zero-valued ones ABSENT.
97
+ *
98
+ * `supervisor` / `retries` / `compactions` / `truncated` only appear when they carry a
99
+ * fact; a row reading `supervisor 0` teaches a reader nothing and pushes the section
100
+ * a row down for every child that was never touched.
101
+ */
102
+ export declare function factPairs(run: SubagentRun, glyphs: Glyphs): [string, string][];