@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,69 @@
1
+ /**
2
+ * Pure prompt-draft validation, split out of `store.ts` (tui-package-split S3).
3
+ *
4
+ * ASCII ONLY - `src/prompts/**` is inside `glyphs.test.ts::inScope`.
5
+ *
6
+ * NO I/O. The prompt-library editor (a terminal-UI view model) calls these on every keystroke
7
+ * to decide which field owns an error, while the store that persists the library also reads
8
+ * and writes files. Splitting them lets the editor live in a package without filesystem
9
+ * persistence. `store.ts` re-exports both names, so every existing importer is unchanged.
10
+ */
11
+ import { PROMPT_LIMITS } from './limits.js';
12
+ export function codePoints(text) {
13
+ return [...text].length;
14
+ }
15
+ /**
16
+ * Validate one draft, at the boundary where a draft becomes data (I-5).
17
+ *
18
+ * The editor calls this too, so the code that decides "that title is too long" and
19
+ * the code that decides which ROW owns the error cannot disagree - which is why it
20
+ * lives here rather than in the view model.
21
+ */
22
+ export function validatePromptDraft(input) {
23
+ const title = input.title.trim();
24
+ const content = input.content;
25
+ if (title.length === 0)
26
+ return { ok: false, code: 'title_required', field: 'title' };
27
+ if (codePoints(title) > PROMPT_LIMITS.titleMaxChars) {
28
+ return { ok: false, code: 'title_too_long', field: 'title' };
29
+ }
30
+ if (content.trim().length === 0)
31
+ return { ok: false, code: 'content_required', field: 'content' };
32
+ if (codePoints(content) > PROMPT_LIMITS.contentMaxChars) {
33
+ return { ok: false, code: 'content_too_long', field: 'content' };
34
+ }
35
+ const description = (input.description ?? '').trim();
36
+ if (codePoints(description) > PROMPT_LIMITS.descriptionMaxChars) {
37
+ return { ok: false, code: 'description_too_long', field: 'description' };
38
+ }
39
+ const tags = input.tags ?? [];
40
+ if (tags.length > PROMPT_LIMITS.maxTags) {
41
+ return { ok: false, code: 'too_many_tags', field: 'tags' };
42
+ }
43
+ if (tags.some((tag) => codePoints(tag) > PROMPT_LIMITS.tagMaxChars)) {
44
+ return { ok: false, code: 'tag_too_long', field: 'tags' };
45
+ }
46
+ const verdict = { title, content };
47
+ if (description.length > 0)
48
+ verdict.description = description;
49
+ if (tags.length > 0)
50
+ verdict.tags = [...tags];
51
+ if (input.favorite === true)
52
+ verdict.favorite = true;
53
+ return { ok: true, input: verdict };
54
+ }
55
+ /** Parsed tags from the editor's raw comma/space separated field. Never throws. */
56
+ export function parsePromptTags(raw) {
57
+ const seen = new Set();
58
+ const tags = [];
59
+ for (const part of raw.split(/[,;\s]+/)) {
60
+ const tag = part.trim();
61
+ if (tag.length === 0 || seen.has(tag))
62
+ continue;
63
+ seen.add(tag);
64
+ tags.push(tag);
65
+ if (tags.length >= PROMPT_LIMITS.maxTags)
66
+ break;
67
+ }
68
+ return tags;
69
+ }
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Activity strings for the live roster (team-live-activity F-1).
3
+ *
4
+ * ASCII ONLY: `src/team/**` is inside the glyph scanner's scope. That rule binds
5
+ * the LITERALS IN THIS FILE, not the runtime data flowing through it - a child
6
+ * may well be reading a CJK path, and `run.description` already carries model
7
+ * text into the same row.
8
+ */
9
+ /**
10
+ * The only part of a tool call this module will ever render (P1-4).
11
+ *
12
+ * A PICKED SUBSET, NOT THE ARGS OBJECT. Storing `event.args` whole would put
13
+ * `write_file`'s `content` - a whole file - on the run, and `TeamRuntime.publish`
14
+ * shallow-copies the run into the live snapshot AND into every `agent_update`
15
+ * event, and `dispatch()` copies it again into `DispatchOutcome.runs`, which
16
+ * `TeamCard` holds in the transcript for the rest of the session. Two facts make
17
+ * that unacceptable rather than merely wasteful: the retention is unbounded in
18
+ * the file's size, and one `JSON.stringify` anywhere downstream would put a file
19
+ * body into a log - the exact liability the logging section spends a paragraph
20
+ * avoiding.
21
+ *
22
+ * This costs nothing in maintenance: the switch below is ALREADY a per-tool
23
+ * table, so a new tool is one entry either way.
24
+ */
25
+ export interface ActivityArgs {
26
+ path?: string;
27
+ pattern?: string;
28
+ command?: string;
29
+ to?: string;
30
+ from?: string;
31
+ }
32
+ /** Pick at capture time. Called once per `tool_execution_start`. */
33
+ export declare function pickActivityArgs(args: unknown): ActivityArgs;
34
+ /**
35
+ * Strip anything that could corrupt the frame, collapse whitespace, and clamp.
36
+ *
37
+ * THE CONTROL-CHARACTER STRIP IS A CORRECTNESS BOUNDARY, NOT TIDINESS. This
38
+ * string is model-chosen and reaches an Ink <Text> unescaped. A child running
39
+ * `bash` with an ANSI escape in the command line would otherwise write that
40
+ * escape into the roster: at best a mangled row, at worst a cleared screen or a
41
+ * moved cursor in the middle of someone's transcript. `bash`'s own output never
42
+ * reaches the panel; its ARGUMENTS now do.
43
+ *
44
+ * SURROGATES ARE GUARDED AT BOTH ENDS (P2-3). The trailing guard is the obvious
45
+ * one. The LEADING one is needed because the caller feeds this a rolling tail
46
+ * built with `String.slice(-n)`, which cuts on a UTF-16 code-unit boundary and
47
+ * can therefore hand us a lone LOW surrogate at index 0. Either half of a split
48
+ * pair renders as a replacement character - the same failure `truncateBytes`
49
+ * guards one layer down (report.ts).
50
+ */
51
+ export declare function sanitizeActivity(raw: string, maxChars: number): string;
52
+ /**
53
+ * One short phrase describing a tool call.
54
+ *
55
+ * `wide` false is the narrow-terminal form (D-4). For a path-valued argument
56
+ * that is the basename; for `bash` it is the PROGRAM NAME (P1-6). Running the
57
+ * command line through `basename` is wrong twice over: `basename` splits on `/`,
58
+ * so `npm test -w cli` comes back whole and `./scripts/build.sh --prod` comes
59
+ * back as `build.sh --prod`. Neither is shorter and the second is a lie about
60
+ * what ran.
61
+ *
62
+ * Anything not in the table renders as its own name. That is the correct
63
+ * degradation for `skill_find` and for any tool a later round registers on a
64
+ * child: a name is always true, and inventing an argument mapping for a tool
65
+ * this module has not been taught is how a formatter starts lying.
66
+ */
67
+ export declare function describeToolActivity(toolName: string, args: ActivityArgs | undefined, wide: boolean): string;
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Activity strings for the live roster (team-live-activity F-1).
3
+ *
4
+ * ASCII ONLY: `src/team/**` is inside the glyph scanner's scope. That rule binds
5
+ * the LITERALS IN THIS FILE, not the runtime data flowing through it - a child
6
+ * may well be reading a CJK path, and `run.description` already carries model
7
+ * text into the same row.
8
+ */
9
+ import { TEAM_LIMITS } from './limits.js';
10
+ /** Pick at capture time. Called once per `tool_execution_start`. */
11
+ export function pickActivityArgs(args) {
12
+ const a = (args ?? {});
13
+ const str = (v) => typeof v === 'string' && v.length > 0 ? v.slice(0, TEAM_LIMITS.activityArgChars) : undefined;
14
+ const picked = {};
15
+ const path = str(a.path);
16
+ const pattern = str(a.pattern);
17
+ const command = str(a.command);
18
+ const to = str(a.to);
19
+ const from = str(a.from);
20
+ if (path !== undefined)
21
+ picked.path = path;
22
+ if (pattern !== undefined)
23
+ picked.pattern = pattern;
24
+ if (command !== undefined)
25
+ picked.command = command;
26
+ if (to !== undefined)
27
+ picked.to = to;
28
+ if (from !== undefined)
29
+ picked.from = from;
30
+ return picked;
31
+ }
32
+ /**
33
+ * Strip anything that could corrupt the frame, collapse whitespace, and clamp.
34
+ *
35
+ * THE CONTROL-CHARACTER STRIP IS A CORRECTNESS BOUNDARY, NOT TIDINESS. This
36
+ * string is model-chosen and reaches an Ink <Text> unescaped. A child running
37
+ * `bash` with an ANSI escape in the command line would otherwise write that
38
+ * escape into the roster: at best a mangled row, at worst a cleared screen or a
39
+ * moved cursor in the middle of someone's transcript. `bash`'s own output never
40
+ * reaches the panel; its ARGUMENTS now do.
41
+ *
42
+ * SURROGATES ARE GUARDED AT BOTH ENDS (P2-3). The trailing guard is the obvious
43
+ * one. The LEADING one is needed because the caller feeds this a rolling tail
44
+ * built with `String.slice(-n)`, which cuts on a UTF-16 code-unit boundary and
45
+ * can therefore hand us a lone LOW surrogate at index 0. Either half of a split
46
+ * pair renders as a replacement character - the same failure `truncateBytes`
47
+ * guards one layer down (report.ts).
48
+ */
49
+ export function sanitizeActivity(raw, maxChars) {
50
+ let src = raw;
51
+ const head = src.charCodeAt(0);
52
+ if (head >= 0xdc00 && head <= 0xdfff)
53
+ src = src.slice(1);
54
+ const flat = src
55
+ // eslint-disable-next-line no-control-regex
56
+ .replace(/[\x00-\x1f\x7f]/g, ' ')
57
+ .replace(/\s+/g, ' ')
58
+ .trim();
59
+ if (maxChars <= 0)
60
+ return '';
61
+ if (flat.length <= maxChars)
62
+ return flat;
63
+ if (maxChars <= 3)
64
+ return flat.slice(0, maxChars);
65
+ let cut = maxChars - 3;
66
+ const code = flat.charCodeAt(cut - 1);
67
+ if (code >= 0xd800 && code <= 0xdbff)
68
+ cut -= 1;
69
+ return `${flat.slice(0, cut)}...`;
70
+ }
71
+ /** The basename of a path, for the narrow form. Pure string work: no `path`. */
72
+ function basename(p) {
73
+ const parts = p.split(/[\\/]/);
74
+ return parts[parts.length - 1] || p;
75
+ }
76
+ /** The program name of a command line, for the narrow form. */
77
+ function program(commandLine) {
78
+ const first = commandLine.trim().split(/\s+/)[0] ?? '';
79
+ return basename(first) || commandLine;
80
+ }
81
+ /**
82
+ * One short phrase describing a tool call.
83
+ *
84
+ * `wide` false is the narrow-terminal form (D-4). For a path-valued argument
85
+ * that is the basename; for `bash` it is the PROGRAM NAME (P1-6). Running the
86
+ * command line through `basename` is wrong twice over: `basename` splits on `/`,
87
+ * so `npm test -w cli` comes back whole and `./scripts/build.sh --prod` comes
88
+ * back as `build.sh --prod`. Neither is shorter and the second is a lie about
89
+ * what ran.
90
+ *
91
+ * Anything not in the table renders as its own name. That is the correct
92
+ * degradation for `skill_find` and for any tool a later round registers on a
93
+ * child: a name is always true, and inventing an argument mapping for a tool
94
+ * this module has not been taught is how a formatter starts lying.
95
+ */
96
+ export function describeToolActivity(toolName, args, wide) {
97
+ const a = args ?? {};
98
+ switch (toolName) {
99
+ case 'read_file':
100
+ return detail('read', a.path, wide, basename);
101
+ case 'write_file':
102
+ return detail('write', a.path, wide, basename);
103
+ case 'edit_file':
104
+ return detail('edit', a.path, wide, basename);
105
+ case 'list_dir':
106
+ return detail('list', a.path ?? '.', wide, basename);
107
+ case 'glob':
108
+ return detail('glob', a.pattern, wide, basename);
109
+ case 'grep':
110
+ return detail('grep', a.pattern, wide, basename);
111
+ case 'bash':
112
+ return detail('bash', a.command, wide, program);
113
+ case 'team_send': {
114
+ const to = (a.to ?? '').trim();
115
+ return to ? `messaging ${to}` : 'messaging';
116
+ }
117
+ case 'team_wait': {
118
+ const from = (a.from ?? '').trim();
119
+ return from ? `waiting for ${from}` : 'waiting for mail';
120
+ }
121
+ default:
122
+ return toolName;
123
+ }
124
+ }
125
+ function detail(verb, value, wide, narrow) {
126
+ const v = (value ?? '').trim();
127
+ if (v.length === 0)
128
+ return verb;
129
+ return `${verb}: ${wide ? v : narrow(v)}`;
130
+ }
@@ -0,0 +1,308 @@
1
+ /**
2
+ * TEAM_LIMITS — the single authority on every bound this subsystem enforces
3
+ * (team-subagents §3.5 / §3.6).
4
+ *
5
+ * ASCII ONLY: `src/team/**` is inside the glyph scanner's scope
6
+ * (`glyphs.test.ts`), so no literal in this tree may hold a non-ASCII byte.
7
+ *
8
+ * TWO KINDS OF NUMBER LIVE HERE AND THEY ARE NOT INTERCHANGEABLE.
9
+ *
10
+ * - The `TEAM_LIMITS` entries below are STRUCTURAL: they describe what the
11
+ * report format, the message channel and the panel can physically carry, and
12
+ * a user has no business tuning them. They are constants.
13
+ * - The six `team.*` config keys (`config/schema.ts`) are POLICY: how wide to
14
+ * fan out, how long to wait. They are clamped, persisted and user-facing.
15
+ *
16
+ * `hardMaxSubagents` sits on the structural side ON PURPOSE even though it
17
+ * bounds a config key: the requirement caps the fan-out at 10 (R-g), so a
18
+ * hand-edited `config.json` must not be able to raise it. It is applied twice —
19
+ * once in `clampTeamConfig` and once in `normalizeSubagentSpecs` — because a
20
+ * clamp that only runs on the read path leaves a bad value on disk.
21
+ *
22
+ * BYTES, NOT CHARACTERS, for every report budget (D-8 / I-9). `ToolExecutor`
23
+ * truncates combined tool text at 100 000 BYTES; a 24 000-character CJK report
24
+ * is 72 000 bytes, so a character-denominated cap would let the executor chop
25
+ * the report mid-section and take the failure count with it.
26
+ */
27
+ export declare const TEAM_LIMITS: {
28
+ /**
29
+ * The requirement's ceiling (R-g). Enforced in `clampTeamConfig` AND in
30
+ * `normalizeSubagentSpecs`, so neither a hand-edited file nor a model asking
31
+ * for thirty can exceed it.
32
+ *
33
+ * 10 IS THE CEILING, 8 IS THE DEFAULT (`DEFAULT_TEAM_CONFIG`): different
34
+ * numbers on purpose (subagent-fanout D-1 / D-2). The default is a policy
35
+ * choice the user may move in either direction from the settings screen; this
36
+ * bound is what no user may move.
37
+ */
38
+ readonly hardMaxSubagents: 10;
39
+ /** `SubagentSpec.description`, clamped (never rejected). */
40
+ readonly descriptionChars: 60;
41
+ /** `SubagentSpec.prompt`, clamped. The child cannot see the conversation, so
42
+ * this has to be generous enough to carry a whole brief. */
43
+ readonly promptChars: 8000;
44
+ /**
45
+ * The brief `/subagent <brief>` copies into its forced-directive turn
46
+ * (subagent-fanout 3.5.4 / R-10). CHARACTERS, not bytes, because this bound
47
+ * feeds a user-visible truncation marker rather than a wire budget: past it
48
+ * the directive says `[brief truncated]` so a clipped instruction is never
49
+ * mistaken for a complete one.
50
+ */
51
+ readonly forcedBriefChars: 4000;
52
+ /**
53
+ * Parts `/subagent --parts a,b,c` may name BEFORE `maxSubagents` narrows them
54
+ * (subagent-fanout 3.5.2 rule 3). The second, smaller ceiling is the policy
55
+ * number and belongs to the command body; this one only bounds what one
56
+ * argument can carry.
57
+ */
58
+ readonly forcedPartsMax: 8;
59
+ /** Slugified `SubagentSpec.label`. Long enough to be meaningful in the panel,
60
+ * short enough that five of them fit one row of an 80-column terminal. */
61
+ readonly labelChars: 12;
62
+ readonly reportMaxBytes: 48000;
63
+ readonly summaryMaxBytes: 6000;
64
+ /**
65
+ * Floor a summary is trimmed TO, never below. A section trimmed to nothing is
66
+ * indistinguishable from a child that reported nothing, which is exactly the
67
+ * distinction the report exists to preserve.
68
+ */
69
+ readonly summaryFloorBytes: 400;
70
+ /** Deduped `write_file` / `edit_file` paths recorded per child (§3.4). */
71
+ readonly filesTouchedMax: 30;
72
+ /** `team_send` calls one child may spend on a whole dispatch. */
73
+ readonly messagesPerAgent: 6;
74
+ /** `team_send` calls the whole dispatch may spend. */
75
+ readonly messagesPerDispatch: 24;
76
+ /** Minimum gap between one child's sends. */
77
+ readonly minSendIntervalMs: 15000;
78
+ /** Quota units a `to: "all"` broadcast costs. */
79
+ readonly broadcastCost: 2;
80
+ readonly subjectChars: 80;
81
+ readonly bodyChars: 800;
82
+ /** `team_wait` timeout clamp, in seconds. */
83
+ readonly waitMinSeconds: 5;
84
+ readonly waitMaxSeconds: 120;
85
+ readonly waitDefaultSeconds: 30;
86
+ /**
87
+ * `agent_update` coalescing window (§5.2). Five children streaming tokens must
88
+ * not push five React renders per token; phase transitions always pass.
89
+ */
90
+ readonly agentUpdateThrottleMs: 120;
91
+ /** Agent rows the live panel renders before collapsing to `+N more` (§6.1). */
92
+ readonly panelMaxRows: 5;
93
+ /** Below this many terminal rows the panel collapses to its header line. */
94
+ readonly panelCollapseRows: 20;
95
+ /** Below this many columns the status-bar readout degrades to `[3]` (D-20). */
96
+ readonly statusCompactCols: 100;
97
+ /**
98
+ * STORAGE ceiling for a prose activity tail (P0-1). The most a `SubagentRun`
99
+ * may carry, NOT the width of the column: `TeamPanel.activityBudget(cols)`
100
+ * derives the display budget from the terminal and is always <= this.
101
+ */
102
+ readonly activityChars: 64;
103
+ /**
104
+ * Floor under `activityBudget`. Below roughly 46 columns the roster has bigger
105
+ * problems than an elided activity line, and a column narrower than this shows
106
+ * nothing but an ellipsis - at which point the phase word is more informative.
107
+ */
108
+ readonly activityMinChars: 12;
109
+ /** Rolling text buffer kept per child. The only per-token allocation. */
110
+ readonly activityTailChars: 160;
111
+ /** Per picked tool argument (P1-4). A path or a command longer than this is
112
+ * elided on capture, so a run can never carry more than a few hundred bytes
113
+ * of argument however large the real call was. */
114
+ readonly activityArgChars: 120;
115
+ /** At or above this many columns the activity line carries a full path or
116
+ * command; below it, a basename or a program name. Mirrors `statusCompactCols`.
117
+ * This chooses WHICH FACT to show; `activityBudget` chooses how much of it. */
118
+ readonly activityWideCols: 100;
119
+ /**
120
+ * Below this many columns the roster's activity cell gives way ENTIRELY
121
+ * (tui-subagent-panel §4.2.2).
122
+ *
123
+ * STRUCTURAL, like everything else in this block: twelve characters of prose in
124
+ * a 40-column terminal push the description column below its own twelve-column
125
+ * floor, and "who is doing what" outranks "what they are writing right now" when
126
+ * there is room for only one. That is why the cell returns 0 rather than
127
+ * `activityMinChars` below this width.
128
+ */
129
+ readonly activityDropCols: 56;
130
+ /**
131
+ * Events kept per child in `SubagentRun.timeline` (§4.5.3). Twenty-four covers
132
+ * a typical dispatch's complete tool sequence; ten children x 24 x 120 chars is
133
+ * about 29 KB at peak, and the ring is EPHEMERAL - it never reaches a file.
134
+ */
135
+ readonly timelineEntries: 24;
136
+ /** Display clamp on one timeline line; the same order as `activityArgChars`. */
137
+ readonly timelineTextChars: 120;
138
+ /**
139
+ * Row ceiling of the Agents board's projection. The overlay scrolls, so this is
140
+ * a memory bound rather than a fit: one row per fact and at most ten children
141
+ * plus one detail section, which no healthy dispatch can reach.
142
+ */
143
+ readonly boardMaxRows: 240;
144
+ /** Retries of a child that produced NOTHING. One, and not configurable: a
145
+ * second retry doubles the worst-case latency of a failing dispatch and buys
146
+ * nothing a re-dispatch by the lead would not buy better. */
147
+ readonly maxColdStartRetries: 1;
148
+ readonly retryBackoffMs: 2000;
149
+ /**
150
+ * Wall-clock budget of everything one SINGLE inspection may carry (the
151
+ * silence-triggered path). The digest holds run facts, the supervisor's own
152
+ * memory and the tail of the child's live history; unbounded, one look at a
153
+ * child that read five big files would make the "cheap" supervision call
154
+ * cost more than the child (the argument FAST_LIMITS.digestMaxChars makes,
155
+ * one level up).
156
+ */
157
+ readonly overseerDigestBytes: 8000;
158
+ /** Clamp on a `nudge` guidance text. Advice, not a second brief. */
159
+ readonly overseerGuidanceChars: 1200;
160
+ /** Clamp on the decision `reason` recorded in the report. */
161
+ readonly overseerReasonChars: 200;
162
+ /**
163
+ * Per-child slice of a BATCH digest (D-3 / R-P2-5). 6.7x tighter than the
164
+ * single-inspection budget above: a batch carries up to ten children in one
165
+ * call, and memory plus the history tail are the first to give way (the
166
+ * facts-first assembly order already puts them last).
167
+ */
168
+ readonly overseerPerChildDigestBytes: 1200;
169
+ /** Whole-batch digest ceiling (D-3): 10 children x 1 200 B fits exactly. */
170
+ readonly overseerBatchDigestBytes: 12000;
171
+ /**
172
+ * Output budget of ONE batch inspection (R-P0-1). The single-inspection path
173
+ * keeps `FAST_LIMITS.reviewOutputTokens` (512); a batch must return up to
174
+ * ten decision objects, and 512 tokens cannot physically hold ten x
175
+ * (reason <= 200 + guidance <= 1200). A truncated batch reply fails
176
+ * "first `[` to last `]`" parsing and degrades to all-wait - exactly the
177
+ * failure this separate, larger budget exists to prevent.
178
+ */
179
+ readonly overseerBatchOutputTokens: 2048;
180
+ /** Tighter `reason` clamp inside the batch protocol (R-P0-1). */
181
+ readonly overseerBatchReasonChars: 80;
182
+ /** Tighter `guidance` clamp inside the batch protocol (R-P0-1). */
183
+ readonly overseerBatchGuidanceChars: 400;
184
+ /**
185
+ * LOOKS per child per dispatch (D-5). A look is cost, not mutation: every
186
+ * inspection of a child - silence-triggered, cadence tick or post-mortem -
187
+ * spends one, including a call that failed softly. Twelve with the cadence
188
+ * ladder covers hours of healthy slow work; past the budget the supervisor
189
+ * says so once (`trigger: 'quiet'`) and stops waking that child up.
190
+ */
191
+ readonly overseerMaxLooksPerChild: 12;
192
+ /**
193
+ * LOOKS per dispatch, the fool-proof total (R-P1-6):
194
+ * hardMaxSubagents x overseerMaxLooksPerChild = 120. A mathematical upper
195
+ * bound, not a tuning knob - the per-child budget always binds first; this
196
+ * one exists so a bug cannot loop calls forever. When it trips, the whole
197
+ * MonitorLoop stops with one aggregate notice.
198
+ */
199
+ readonly overseerMaxLooksPerDispatch: number;
200
+ /**
201
+ * NUDGES per child per dispatch (D-5). Advice is cheap but not free: a
202
+ * supervisor that steers the same child forever is one that never decided.
203
+ */
204
+ readonly overseerMaxNudgesPerChild: 3;
205
+ /**
206
+ * Rebuilds PER CHILD per dispatch. One: a replacement that also stalls dies
207
+ * on its own watchdog rather than ping-ponging fresh children at a task the
208
+ * supervisor already failed to rescue once.
209
+ */
210
+ readonly overseerMaxReplacementsPerChild: 1;
211
+ /**
212
+ * Abandons PER CHILD per dispatch (D-5). One, so a supervisor that has
213
+ * already given up on a brief cannot keep re-killing bodies of it.
214
+ */
215
+ readonly overseerMaxAbandonsPerChild: 1;
216
+ /**
217
+ * Cadence ladder growth factor (D-2). Each no-action inspection schedules
218
+ * the next `previous * ratio` out, so a healthy slow child is looked at
219
+ * logarithmically in its run time rather than every five minutes.
220
+ */
221
+ readonly overseerCadenceRatio: 1.6;
222
+ /**
223
+ * First cadence check when neither `team.overseerIntervalMs` nor
224
+ * `team.subagentTimeoutMs` names one (the shipped defaults): the supervisor
225
+ * still looks even when no ceiling was configured.
226
+ */
227
+ readonly overseerDefaultCheckMs: 300000;
228
+ /** Clamp on a ladder step / model-chosen `nextCheckMs`, lower bound. */
229
+ readonly overseerNextCheckMinMs: 60000;
230
+ /** Clamp on a ladder step / model-chosen `nextCheckMs`, upper bound. */
231
+ readonly overseerNextCheckMaxMs: 900000;
232
+ /**
233
+ * A child's OWN idle watchdog, multiplied by this while the supervisor is
234
+ * active, so the soft silence inspection at `idleTimeoutMs` always precedes
235
+ * the hard abort. The watchdog stays as the backstop for a child that
236
+ * wedges past every inspection.
237
+ */
238
+ readonly overseerWatchdogFactor: 4;
239
+ };
240
+ /**
241
+ * The pseudo-label the runtime's AGGREGATE supervisor notices travel under
242
+ * (subagent-overseer-v2 D-5 / R-P1-6): the dispatch-total look-budget notice
243
+ * is one fact about the whole roster, not a row any child owns. RESERVED at
244
+ * normalization (`normalizeSubagentSpecs` seeds `dedupeLabel` with it), so a
245
+ * spec asking for the bare label `team` is handed `team-2` instead - the
246
+ * report ledger and the exec stream can then never attribute an aggregate
247
+ * notice to a real child, or swallow that child's own quiet note.
248
+ */
249
+ export declare const TEAM_AGGREGATE_LABEL = "team";
250
+ /**
251
+ * The two comm tools, which are POLICY-EXEMPT inside a child (§3.11).
252
+ *
253
+ * They are not in the lead's registered tool list, so evaluating them against
254
+ * the lead's `allowed-tools` ceiling would refuse them and dead-end the channel
255
+ * — the same dead end `SKILL_TOOL_FLOOR` exists to prevent one level up.
256
+ *
257
+ * Deliberately NOT added to `HOST_TOOL_NAMES` (P2-5). That constant answers
258
+ * "can a skill's `allowed-tools` declaration ever take effect?", and these two
259
+ * are never registered on a lead — so a skill naming them genuinely IS
260
+ * unenforceable, and `aragon skills doctor` reporting it as such is correct
261
+ * rather than a gap.
262
+ */
263
+ export declare const TEAM_SUBAGENT_TOOL_NAMES: ReadonlySet<string>;
264
+ /**
265
+ * Bumped whenever the wording of either prompt block changes, so a behaviour
266
+ * report can be tied to a block revision with one grep.
267
+ */
268
+ export declare const TEAM_BLOCK_VERSION = "v3-2026-10";
269
+ /**
270
+ * The version string on `<forced_team_mode>`'s first line.
271
+ *
272
+ * The block's words are a CONTRACT with the model, so a behaviour report ("it
273
+ * still did the work itself") has to be tieable to one revision. Kept beside
274
+ * `TEAM_BLOCK_VERSION` rather than reusing it: the two blocks answer different
275
+ * questions ("can dispatch" versus "must dispatch") and a shared number would
276
+ * name neither revision.
277
+ */
278
+ export declare const FORCED_TEAM_BLOCK_VERSION = "v1-2026-10";
279
+ /**
280
+ * Length ceiling of the `<forced_team_mode>` text.
281
+ *
282
+ * THE FIRST BLOCK LENGTH IN THIS SUBSYSTEM THAT A TEST ASSERTS: the `<team_mode>`
283
+ * block's 1200 is a comment in `team/prompt.ts`, and unifying the two is a
284
+ * separate small refactor (deliberately out of scope here). Looser than 1200
285
+ * because this block is only ever paid for while the session is ARMED, and it
286
+ * carries three layers of instruction rather than one.
287
+ */
288
+ export declare const FORCED_TEAM_BLOCK_MAX_CHARS = 1400;
289
+ /**
290
+ * Fallback nudges per user turn. ONE, and not configurable.
291
+ *
292
+ * The gate exists because the first two layers (the directive and the prompt
293
+ * block) both depend on the model cooperating. A second nudge would double the
294
+ * worst case of a model that is simply not going to dispatch - at N children per
295
+ * attempt - and D-8's whole argument is that the mechanical layer must be
296
+ * bounded by something other than the model's willingness.
297
+ */
298
+ export declare const FORCED_NUDGE_LIMIT = 1;
299
+ /**
300
+ * Grace window before the fallback nudge fires, in milliseconds.
301
+ *
302
+ * SAME ORDER AS THE TODO FOLLOW-THROUGH GRACE, for a structural reason rather
303
+ * than a stylistic one: both continuations share ONE `followTimer` in `App`
304
+ * (I-9), so "at most one armed continuation" is only explicable while the two
305
+ * numbers stay in the same order of magnitude. **Changing todo's grace means
306
+ * re-reading this constant.**
307
+ */
308
+ export declare const FORCED_NUDGE_GRACE_MS = 3000;