@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,40 @@
1
+ /**
2
+ * Log levels — the ordering, the names, and the two coercion helpers.
3
+ *
4
+ * Kept in its own module because it is the one piece of the logging subsystem
5
+ * the config layer (`schema.ts`) and the settings screen need, and neither
6
+ * should have to pull in a file sink to learn what "debug" is called.
7
+ *
8
+ * PRIVACY IS PART OF THE LADDER, not a side effect of it:
9
+ *
10
+ * error crashes, failed requests, config write/parse failures
11
+ * warn degraded migrations, clamped values, dropped records
12
+ * info lifecycle, config writes, turn boundaries + token counts, tool
13
+ * names and durations — NO conversation content at all
14
+ * debug the above plus prompts / replies / tool args truncated to
15
+ * `previewChars`
16
+ * trace full message bodies, full tool arguments and output
17
+ *
18
+ * `info` is the default precisely so that "send me your log" is a safe thing to
19
+ * ask a user. `debug` and above are not, and the README says so.
20
+ */
21
+ export declare const LOG_LEVELS: {
22
+ readonly silent: 0;
23
+ readonly error: 10;
24
+ readonly warn: 20;
25
+ readonly info: 30;
26
+ readonly debug: 40;
27
+ readonly trace: 50;
28
+ };
29
+ export type LogLevelName = keyof typeof LOG_LEVELS;
30
+ export declare const LOG_LEVEL_NAMES: readonly LogLevelName[];
31
+ export declare function isLogLevel(v: unknown): v is LogLevelName;
32
+ /**
33
+ * Coerce anything into a level, falling back rather than throwing.
34
+ *
35
+ * Same discipline as `clampTheme` / `clampThinkingLevel`: a nonsense value in
36
+ * the config file must not stop the CLI from starting.
37
+ */
38
+ export declare function clampLogLevel(v: unknown, fallback: LogLevelName): LogLevelName;
39
+ /** True when a record at `level` should be emitted under `threshold`. */
40
+ export declare function isLevelEnabled(level: LogLevelName, threshold: LogLevelName): boolean;
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Log levels — the ordering, the names, and the two coercion helpers.
3
+ *
4
+ * Kept in its own module because it is the one piece of the logging subsystem
5
+ * the config layer (`schema.ts`) and the settings screen need, and neither
6
+ * should have to pull in a file sink to learn what "debug" is called.
7
+ *
8
+ * PRIVACY IS PART OF THE LADDER, not a side effect of it:
9
+ *
10
+ * error crashes, failed requests, config write/parse failures
11
+ * warn degraded migrations, clamped values, dropped records
12
+ * info lifecycle, config writes, turn boundaries + token counts, tool
13
+ * names and durations — NO conversation content at all
14
+ * debug the above plus prompts / replies / tool args truncated to
15
+ * `previewChars`
16
+ * trace full message bodies, full tool arguments and output
17
+ *
18
+ * `info` is the default precisely so that "send me your log" is a safe thing to
19
+ * ask a user. `debug` and above are not, and the README says so.
20
+ */
21
+ export const LOG_LEVELS = {
22
+ silent: 0,
23
+ error: 10,
24
+ warn: 20,
25
+ info: 30,
26
+ debug: 40,
27
+ trace: 50,
28
+ };
29
+ export const LOG_LEVEL_NAMES = [
30
+ 'silent',
31
+ 'error',
32
+ 'warn',
33
+ 'info',
34
+ 'debug',
35
+ 'trace',
36
+ ];
37
+ export function isLogLevel(v) {
38
+ return typeof v === 'string' && Object.prototype.hasOwnProperty.call(LOG_LEVELS, v);
39
+ }
40
+ /**
41
+ * Coerce anything into a level, falling back rather than throwing.
42
+ *
43
+ * Same discipline as `clampTheme` / `clampThinkingLevel`: a nonsense value in
44
+ * the config file must not stop the CLI from starting.
45
+ */
46
+ export function clampLogLevel(v, fallback) {
47
+ if (isLogLevel(v))
48
+ return v;
49
+ if (typeof v === 'string' && isLogLevel(v.trim().toLowerCase())) {
50
+ return v.trim().toLowerCase();
51
+ }
52
+ return fallback;
53
+ }
54
+ /** True when a record at `level` should be emitted under `threshold`. */
55
+ export function isLevelEnabled(level, threshold) {
56
+ if (threshold === 'silent')
57
+ return false;
58
+ return LOG_LEVELS[level] <= LOG_LEVELS[threshold];
59
+ }
@@ -0,0 +1,38 @@
1
+ /**
2
+ * The logging PORT the terminal-UI code writes to (tui-package-split S1 / D10).
3
+ *
4
+ * WHY A PORT AND NOT THE LOGGER. The process-wide `Logger` (file sink, redaction, session
5
+ * id, the four process hooks) is infrastructure that belongs to the executable, not to the
6
+ * terminal runtime. Four view-model / renderer modules used to call `getLogger()`
7
+ * directly; once those modules live in their own package they must not reach back into
8
+ * the CLI to do it. They call `getTuiLogger()` instead, with the SAME arguments, and the
9
+ * CLI connects the real logger when `logging/logger.ts` is loaded (see the bottom of that file).
10
+ *
11
+ * THE DEFAULT IS A NO-OP, AND THAT IS DELIBERATE: a consumer that never installs a
12
+ * logger (the package's own tests, an embedder) gets silence rather than a crash or a
13
+ * stray file. `getTuiLogger()` NEVER returns `undefined`, so a call site needs no guard.
14
+ *
15
+ * `TuiLogScope` must stay a SUBSET of the CLI's `LogScope`: that is what lets the CLI's
16
+ * `Logger` be assigned to this port with no cast. The compiler enforces it at the single
17
+ * wiring site at the bottom of `logger.ts`; widening this union without widening `LogScope` there is a
18
+ * compile error, not a silently dropped record.
19
+ */
20
+ export type TuiLogScope = 'cli' | 'config' | 'compaction' | 'llm';
21
+ export type TuiLogData = Record<string, unknown>;
22
+ export interface TuiScopedLogger {
23
+ error(msg: string, data?: TuiLogData): void;
24
+ warn(msg: string, data?: TuiLogData): void;
25
+ info(msg: string, data?: TuiLogData): void;
26
+ debug(msg: string, data?: TuiLogData): void;
27
+ }
28
+ export interface TuiLogger {
29
+ error(scope: TuiLogScope, msg: string, data?: TuiLogData): void;
30
+ warn(scope: TuiLogScope, msg: string, data?: TuiLogData): void;
31
+ info(scope: TuiLogScope, msg: string, data?: TuiLogData): void;
32
+ debug(scope: TuiLogScope, msg: string, data?: TuiLogData): void;
33
+ child(scope: TuiLogScope): TuiScopedLogger;
34
+ }
35
+ /** Installs the real logger; `null` restores the no-op default (tests, teardown). */
36
+ export declare function setTuiLogger(logger: TuiLogger | null): void;
37
+ /** Never `undefined`: the default is a no-op, so call sites need no guard. */
38
+ export declare function getTuiLogger(): TuiLogger;
@@ -0,0 +1,41 @@
1
+ /**
2
+ * The logging PORT the terminal-UI code writes to (tui-package-split S1 / D10).
3
+ *
4
+ * WHY A PORT AND NOT THE LOGGER. The process-wide `Logger` (file sink, redaction, session
5
+ * id, the four process hooks) is infrastructure that belongs to the executable, not to the
6
+ * terminal runtime. Four view-model / renderer modules used to call `getLogger()`
7
+ * directly; once those modules live in their own package they must not reach back into
8
+ * the CLI to do it. They call `getTuiLogger()` instead, with the SAME arguments, and the
9
+ * CLI connects the real logger when `logging/logger.ts` is loaded (see the bottom of that file).
10
+ *
11
+ * THE DEFAULT IS A NO-OP, AND THAT IS DELIBERATE: a consumer that never installs a
12
+ * logger (the package's own tests, an embedder) gets silence rather than a crash or a
13
+ * stray file. `getTuiLogger()` NEVER returns `undefined`, so a call site needs no guard.
14
+ *
15
+ * `TuiLogScope` must stay a SUBSET of the CLI's `LogScope`: that is what lets the CLI's
16
+ * `Logger` be assigned to this port with no cast. The compiler enforces it at the single
17
+ * wiring site at the bottom of `logger.ts`; widening this union without widening `LogScope` there is a
18
+ * compile error, not a silently dropped record.
19
+ */
20
+ const NOOP_SCOPED = {
21
+ error: () => { },
22
+ warn: () => { },
23
+ info: () => { },
24
+ debug: () => { },
25
+ };
26
+ const NOOP_LOGGER = {
27
+ error: () => { },
28
+ warn: () => { },
29
+ info: () => { },
30
+ debug: () => { },
31
+ child: () => NOOP_SCOPED,
32
+ };
33
+ let installed = null;
34
+ /** Installs the real logger; `null` restores the no-op default (tests, teardown). */
35
+ export function setTuiLogger(logger) {
36
+ installed = logger;
37
+ }
38
+ /** Never `undefined`: the default is a no-op, so call sites need no guard. */
39
+ export function getTuiLogger() {
40
+ return installed ?? NOOP_LOGGER;
41
+ }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * The live set of secret literals the redactor must never let reach disk.
3
+ *
4
+ * WHY A REGISTRY AND NOT A SNAPSHOT (aragon-home-config-and-logging P0-3):
5
+ *
6
+ * The format regexes in `redact.ts` catch the three vendors we know about. This
7
+ * registry is the backstop for everything else — a custom endpoint whose key
8
+ * looks like nothing in particular. That backstop only works if it holds the
9
+ * keys we ACTUALLY have, which is a moving target: `installLogging()` runs
10
+ * before commander has parsed `--api-key`, and a key the user types into the
11
+ * settings screen mid-session arrives later still. A set captured at startup
12
+ * would miss the single most common path by which a key enters the process, and
13
+ * would miss it silently, because the vendor regexes happen to cover the keys
14
+ * we test with.
15
+ *
16
+ * Process-lifetime, append-only, never serialised, never written anywhere.
17
+ */
18
+ export declare function registerSecret(value: string | undefined | null): void;
19
+ /** Convenience for the `apiKeys` maps every registration site happens to hold. */
20
+ export declare function registerSecretsFrom(keys: Record<string, string | null | undefined> | undefined): void;
21
+ /** Register dedicated credentials in untrusted parsed config before schema validation. */
22
+ export declare function registerProfileSecrets(value: unknown): void;
23
+ /**
24
+ * Every known secret, LONGEST FIRST.
25
+ *
26
+ * Order matters: when one key is a prefix of another, replacing the short one
27
+ * first leaves the remainder of the long one in the file — a partial key is
28
+ * still a leak, and a more convincing one for being partial.
29
+ */
30
+ export declare function getSecrets(): readonly string[];
31
+ /** Tests only. Production code has no reason to forget a secret. */
32
+ export declare function clearSecretsForTest(): void;
@@ -0,0 +1,73 @@
1
+ /**
2
+ * The live set of secret literals the redactor must never let reach disk.
3
+ *
4
+ * WHY A REGISTRY AND NOT A SNAPSHOT (aragon-home-config-and-logging P0-3):
5
+ *
6
+ * The format regexes in `redact.ts` catch the three vendors we know about. This
7
+ * registry is the backstop for everything else — a custom endpoint whose key
8
+ * looks like nothing in particular. That backstop only works if it holds the
9
+ * keys we ACTUALLY have, which is a moving target: `installLogging()` runs
10
+ * before commander has parsed `--api-key`, and a key the user types into the
11
+ * settings screen mid-session arrives later still. A set captured at startup
12
+ * would miss the single most common path by which a key enters the process, and
13
+ * would miss it silently, because the vendor regexes happen to cover the keys
14
+ * we test with.
15
+ *
16
+ * Process-lifetime, append-only, never serialised, never written anywhere.
17
+ */
18
+ const secrets = new Set();
19
+ /**
20
+ * Minimum length for a value to count as a secret.
21
+ *
22
+ * Registering `"1"` or `"off"` would blank out every occurrence of that
23
+ * substring in ordinary log text, which destroys the log's usefulness while
24
+ * protecting nothing.
25
+ */
26
+ const MIN_SECRET_LENGTH = 8;
27
+ export function registerSecret(value) {
28
+ if (typeof value !== 'string')
29
+ return;
30
+ const trimmed = value.trim();
31
+ if (trimmed.length < MIN_SECRET_LENGTH)
32
+ return;
33
+ secrets.add(trimmed);
34
+ }
35
+ /** Convenience for the `apiKeys` maps every registration site happens to hold. */
36
+ export function registerSecretsFrom(keys) {
37
+ if (!keys)
38
+ return;
39
+ for (const value of Object.values(keys))
40
+ registerSecret(value);
41
+ }
42
+ /** Register dedicated credentials in untrusted parsed config before schema validation. */
43
+ export function registerProfileSecrets(value) {
44
+ if (!value || typeof value !== 'object')
45
+ return;
46
+ const profiles = value.modelProfiles;
47
+ if (!profiles || typeof profiles !== 'object')
48
+ return;
49
+ const entries = profiles.entries;
50
+ if (!Array.isArray(entries))
51
+ return;
52
+ for (const entry of entries) {
53
+ if (!entry || typeof entry !== 'object')
54
+ continue;
55
+ const key = entry.apiKey;
56
+ if (typeof key === 'string')
57
+ registerSecret(key);
58
+ }
59
+ }
60
+ /**
61
+ * Every known secret, LONGEST FIRST.
62
+ *
63
+ * Order matters: when one key is a prefix of another, replacing the short one
64
+ * first leaves the remainder of the long one in the file — a partial key is
65
+ * still a leak, and a more convincing one for being partial.
66
+ */
67
+ export function getSecrets() {
68
+ return [...secrets].sort((a, b) => b.length - a.length);
69
+ }
70
+ /** Tests only. Production code has no reason to forget a secret. */
71
+ export function clearSecretsForTest() {
72
+ secrets.clear();
73
+ }
@@ -0,0 +1,214 @@
1
+ /**
2
+ * PROC_LIMITS — the single authority on every structural bound the process
3
+ * supervisor enforces (background-service-supervision §6).
4
+ *
5
+ * ASCII ONLY: `src/proc/**` is inside the glyph scanner's scope
6
+ * (`glyphs.test.ts::inScope`), whose hardcoded directory regex this feature
7
+ * extends. A NEW TREE IS INVISIBLE TO THAT SCAN UNTIL IT IS NAMED THERE, and a
8
+ * guard rail that silently stops guarding is worse than no guard rail — this
9
+ * package has now paid for that edit eleven times.
10
+ *
11
+ * TWO KINDS OF NUMBER, AND THEY ARE NOT INTERCHANGEABLE — the distinction
12
+ * `TODO_LIMITS` and `TEAM_LIMITS` each record at length:
13
+ *
14
+ * - Everything below is STRUCTURAL: how many rows a tail can physically carry,
15
+ * how many children one session may hold, how long a kill may take before it
16
+ * stops being a kill. A user has no business tuning them, so they are
17
+ * constants.
18
+ * - The four `bash.*` config keys (`config/schema.ts`) are POLICY: register the
19
+ * tools at all, let the classifier fire, how long a launch may block the
20
+ * turn, how long to wait for readiness. They are clamped, persisted and
21
+ * user-facing.
22
+ */
23
+ export declare const PROC_LIMITS: {
24
+ /**
25
+ * Rows the per-service ring retains.
26
+ *
27
+ * DELIBERATELY A DIFFERENT NUMBER FROM `cardTailRows` BELOW, and from
28
+ * `LIVE_TAIL_ROWS` (8) in `tools/tool-output-store.ts`. They bound unrelated
29
+ * things — what `bash_output` can page back through, versus what one card
30
+ * draws — and a shared literal is how a later edit collapses two bounds into
31
+ * one.
32
+ */
33
+ readonly serviceTailRows: 200;
34
+ /** Rows a snapshot (and therefore a card) carries. */
35
+ readonly cardTailRows: 8;
36
+ /**
37
+ * JOB RECORDS one session may hold — services AND tasks share the number.
38
+ *
39
+ * NAMED `maxJobs`, NOT `maxServices` (long-task-jobs D-7). A constant that
40
+ * counts two kinds of job while being called `maxServices` is the next edit's
41
+ * bug: the limit and its refusal message would go on saying "service" while
42
+ * the model is holding a training run.
43
+ *
44
+ * Eviction only ever removes a record in a TERMINAL state
45
+ * (`exited | failed | stopped`). When all 16 are live `start()` refuses and
46
+ * names the oldest ids rather than evicting: evicting a live record would
47
+ * orphan a running server that nothing can any longer name or stop.
48
+ */
49
+ readonly maxJobs: 16;
50
+ /**
51
+ * How long `bash` waits after `'exit'` for the stdio streams to close before
52
+ * settling anyway.
53
+ *
54
+ * This number IS defence 1. `'close'` fires only once every stream is closed,
55
+ * and a detached grandchild that inherited the pipe keeps it open after the
56
+ * shell is long gone — so a tool that settles on `'close'` alone has a path
57
+ * that never settles at all.
58
+ *
59
+ * IT IS A BOUND, NOT A VERDICT. Expiry says "stop waiting"; it does NOT say
60
+ * the pipe was held, and the note is only printed when the streams are
61
+ * observed still open at that moment (`proc/output-streams.ts` records the
62
+ * release-gate failure a timer-based verdict caused). The ordinary path does
63
+ * not even reach this bound: two ended streams after `'exit'` settle the call
64
+ * with the byte-identical body, one notification earlier.
65
+ */
66
+ readonly drainMs: 250;
67
+ /**
68
+ * How long an aborted/timed-out `bash` waits after the kill before settling
69
+ * WHETHER OR NOT the child ever reported exit.
70
+ *
71
+ * A pending promise after an abort is the bug; a possibly-premature result is
72
+ * not.
73
+ */
74
+ readonly killGraceMs: 2000;
75
+ /** Readiness port probe interval. */
76
+ readonly probeIntervalMs: 500;
77
+ /** Socket timeout for one readiness probe. */
78
+ readonly probeSocketTimeoutMs: 1000;
79
+ /**
80
+ * Output-event coalescing window inside the supervisor.
81
+ *
82
+ * At the SOURCE rather than in the view, because the same event is also
83
+ * consumed by `/bg` and by `bash_output`. A webpack build emitting thousands
84
+ * of lines a second must not become thousands of React renders.
85
+ */
86
+ readonly outputCoalesceMs: 100;
87
+ /** `SIGTERM` -> `SIGKILL` escalation window for a graceful stop. */
88
+ readonly stopGraceMs: 3000;
89
+ /**
90
+ * How long to KEEP ASKING whether the `SIGKILL` actually landed before
91
+ * declaring the job `stopped`.
92
+ *
93
+ * THIS NUMBER IS NOT A GUESS ABOUT THE PLATFORM. `killTree` spawns `taskkill`,
94
+ * which is a process of its own: a Windows tree kill of a shell plus its node
95
+ * child measures ~0.8 s on the reference machine (while starting `cmd` costs
96
+ * 50 ms), so the fixed 250 ms this used to allow expired first and `stop()`
97
+ * reported `stopped` with the child still running - AC-18 caught exactly that.
98
+ * The wait stays BOUNDED against the opposite failure (a promise that never
99
+ * resolves); at this deadline the record keeps the honest `killIncomplete`
100
+ * flag instead.
101
+ */
102
+ readonly killVerifyMs: 2000;
103
+ /** Liveness poll interval while waiting for a `SIGKILL` to land. */
104
+ readonly killVerifyPollMs: 50;
105
+ /**
106
+ * How long ONE synchronous tree kill (`killTreeSync`) may take.
107
+ *
108
+ * MEASURED, NOT GUESSED. A `taskkill /pid <shell> /t /f` of a shell plus its
109
+ * node child takes 1027-1058 ms on the reference machine on an IDLE host (five
110
+ * samples, 2026-10-23), so the old 2000 ms was 1.9x the honest cost and the
111
+ * 2026-10-23 release run - where the whole suite took 340 s against the usual
112
+ * 200-240 s - is comfortably inside the range where a single tree kill exceeds
113
+ * it. Crossing it is not a slow kill, it is NO kill: `spawnSync` kills
114
+ * `taskkill` itself at the deadline and the tree keeps running (verified: a
115
+ * 150 ms budget left the child alive 1.5 s later, `ETIMEDOUT` / `status null`).
116
+ *
117
+ * 5000 ms is ~5x the measured cost. It is a CEILING and not a cost: a tree that
118
+ * dies in the usual second still returns in that second. The worst case is
119
+ * `maxJobs` (16) trees at the ceiling on an exit hook, which is why this is not
120
+ * any larger - the reaper prefers a reported miss to an exit that never ends,
121
+ * and the miss is now reported (`ProcRecord.killIncomplete`).
122
+ */
123
+ readonly killTreeSyncTimeoutMs: 5000;
124
+ /** Below this many terminal columns the status chip degrades to `[N]`. */
125
+ readonly statusCompactCols: 92;
126
+ /**
127
+ * Rows of new output one `job_wait` result carries, in addition to its status,
128
+ * progress, cursor, `[note]`/`[stalled]` and `[next]` lines.
129
+ *
130
+ * THE NUMBER IS THE FEATURE. One wait must cost ~150 tokens, not the ~6k a
131
+ * 200-row tail costs - that economy is the whole reason `job_wait` exists
132
+ * instead of a seventh `bash_output` poll.
133
+ */
134
+ readonly waitTailRows: 6;
135
+ /**
136
+ * Seconds a single wait may block, as a STRUCTURAL floor and ceiling (`jobs.waitSeconds` is clamped into this range).
137
+ *
138
+ * THE ONE AUTHORITY FOR THE CEILING (extended-job-wait I-2): the executor
139
+ * override (`JOB_WAIT_TOOL_CEILING_MS`), `WAIT_SECONDS_RANGE.max`, the tool
140
+ * description and the prompt block all derive from, or are asserted equal to,
141
+ * `waitMaxSeconds`. Changing it here and missing another reader is how a wait
142
+ * is silently cut short by a layer nobody remembered.
143
+ */
144
+ readonly waitMinSeconds: 5;
145
+ readonly waitMaxSeconds: 1200;
146
+ /**
147
+ * Cadence of the in-wait heartbeat, in ms.
148
+ *
149
+ * ONE HZ because the reader needs "a few seconds ago" precision, not a stream:
150
+ * subscribing to the supervisor's 100 ms output coalescing would mean ~12000
151
+ * pointless view updates across a 20-minute wait. The same beat also carries the
152
+ * wall-clock deadline re-check (see `proc/wait.ts`).
153
+ */
154
+ readonly waitHeartbeatMs: 1000;
155
+ /**
156
+ * Characters one extracted progress line may occupy.
157
+ *
158
+ * Also the width the card's progress row is assumed to take, which is why
159
+ * `ui/layout/virtual-window.ts` can count it as exactly one row.
160
+ */
161
+ readonly waitProgressChars: 80;
162
+ /**
163
+ * Rows `extractProgress` scans, from the tail, before giving up.
164
+ *
165
+ * Eight because a tqdm bar plus its ETA plus the loss line above it is the
166
+ * realistic worst case, and because a wider window is how a stale `100%` from
167
+ * an earlier phase wins over the live one.
168
+ */
169
+ readonly progressScanRows: 8;
170
+ /** Notices one `<job_notices>` block may render. Bounded so the block stays ~8 lines. */
171
+ readonly maxNotices: 8;
172
+ /** Log rows a failed job's notice carries. Two: the message and the frame above it. */
173
+ readonly noticeTailRows: 2;
174
+ /** Rows `job_list` prints before it collapses the rest into `+N more`. */
175
+ readonly listRows: 8;
176
+ /**
177
+ * Consecutive waits with no new row and no progress change before the
178
+ * `[guard]` line is prepended (R-3).
179
+ *
180
+ * A HINT, NEVER A REFUSAL: the seventh wait still waits. Refusing would take
181
+ * the decision away from the model at exactly the point where it has the most
182
+ * context.
183
+ */
184
+ readonly maxConsecutiveWaits: 6;
185
+ /** Bytes one mirrored job log may occupy before it stops appending. */
186
+ readonly logMirrorMaxBytes: 2000000;
187
+ /** Coalescing window for the log mirror's appends (<=4 writes/second). */
188
+ readonly mirrorFlushMs: 250;
189
+ /** Session directories the mirror keeps, newest by mtime. */
190
+ readonly mirrorRetainDirs: 5;
191
+ };
192
+ /**
193
+ * Bumped whenever the wording of the `<background_services>` block changes, so a
194
+ * behaviour report can be tied to a block revision with one grep.
195
+ */
196
+ export declare const BACKGROUND_SERVICES_BLOCK_VERSION = "v1";
197
+ /**
198
+ * The same discipline for the `<background_jobs>` block. A SEPARATE CONSTANT,
199
+ * not a bump of the one above: the two blocks are spliced by different flags
200
+ * (`bash.background` and `jobs.enabled`), so one version number covering both
201
+ * would make "which block changed" unanswerable from a report.
202
+ */
203
+ export declare const JOBS_BLOCK_VERSION = "v2-2026-10";
204
+ /**
205
+ * Head-room the executor's own `job_wait` timer leaves above the longest wait.
206
+ *
207
+ * It is a SECOND, INDEPENDENT clock, not a coupling to `toolTimeoutMs`
208
+ * (extended-job-wait I-4'): the idle watchdog is paused for the whole wait, so
209
+ * when `waitForJob` itself misbehaves this is the only thing left that can end
210
+ * the call. `toolTimeoutMs` no longer constrains a wait at all.
211
+ */
212
+ export declare const JOB_WAIT_MARGIN_MS = 30000;
213
+ /** The executor ceiling for `job_wait`: the longest wait plus its margin (1230 s). */
214
+ export declare const JOB_WAIT_TOOL_CEILING_MS: number;