@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,68 @@
1
+ /**
2
+ * Retry presentation — pure, React-free, unit-tested (llm-api-retry-backoff
3
+ * §6.5 / §6.6).
4
+ *
5
+ * ASCII ONLY: `src/agent/**` is inside the glyph scanner's scope
6
+ * (`glyphs.test.ts`). Every non-ASCII character in the rendered line comes from
7
+ * the `Glyphs` set the caller passes in, never from a literal here.
8
+ *
9
+ * The COUNTDOWN is derived from `resumeAt`, an absolute instant, and never from
10
+ * `delayMs`. Core deliberately sends the instant rather than a tick stream, so
11
+ * the clock belongs to whoever renders — and a card that recomputed from
12
+ * `delayMs` would freeze at the announced number the moment a frame was skipped.
13
+ */
14
+ import type { Glyphs } from '../../ui/glyphs.js';
15
+ /**
16
+ * Presentation bounds. NAMED `RETRY_UI`, NOT `RETRY_LIMITS_UI`: core's
17
+ * `RETRY_LIMITS` bounds what the mechanism can physically do, this is a column
18
+ * breakpoint, and a name that read as its sibling would invite the next reader to
19
+ * look here for the missing keys.
20
+ */
21
+ export declare const RETRY_UI: {
22
+ /** Below this many columns the status-bar chip degrades to `[r3]`. */
23
+ readonly statusCompactCols: 100;
24
+ };
25
+ /** The five phases of the one card a turn gets. */
26
+ export type RetryPhase = 'waiting' | 'retrying' | 'recovered' | 'exhausted' | 'interrupted';
27
+ /** The shape `formatRetryLine` reads — the `kind: 'retry'` entry, structurally. */
28
+ export interface RetryLineInput {
29
+ attempt: number;
30
+ maxRetries: number;
31
+ errorType: string;
32
+ phase: RetryPhase;
33
+ resumeAt?: number;
34
+ totalRetries?: number;
35
+ elapsedMs?: number;
36
+ }
37
+ /**
38
+ * Whole seconds until `resumeAt`, floored at 0.
39
+ *
40
+ * `Math.ceil` rather than `round`: a countdown that shows `0s` for half a second
41
+ * before firing reads as a stall, and showing `1s` for slightly too long does
42
+ * not.
43
+ */
44
+ export declare function secondsLeft(resumeAt: number | undefined, now: number): number;
45
+ /**
46
+ * A short headline for a provider failure.
47
+ *
48
+ * Deliberately shorter than `formatStreamError`'s: that one is a standalone
49
+ * notice and has to explain what to do, while this shares one line with a
50
+ * counter and a countdown. Derived from `errorType` ONLY — nothing here parses
51
+ * the provider's message, because a human-facing sentence must never become a
52
+ * machine-readable contract (the rule `SubagentRun.retryable` records).
53
+ */
54
+ export declare function retryHeadline(errorType: string): string;
55
+ /**
56
+ * The card's single line, WITHOUT the rail glyph — `EntryView` supplies that, the
57
+ * same way it does for every other entry kind.
58
+ *
59
+ * `now` is a parameter rather than a `Date.now()` call so the function stays pure
60
+ * and the render can be asserted without a clock.
61
+ */
62
+ export declare function formatRetryLine(entry: RetryLineInput, glyphs: Glyphs, now: number): string;
63
+ /** The status-bar chip text: full at width, `[r3]` when the row is tight. */
64
+ export declare function formatRetryChip(active: {
65
+ attempt: number;
66
+ max: number;
67
+ secondsLeft: number;
68
+ }, cols: number): string;
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Retry presentation — pure, React-free, unit-tested (llm-api-retry-backoff
3
+ * §6.5 / §6.6).
4
+ *
5
+ * ASCII ONLY: `src/agent/**` is inside the glyph scanner's scope
6
+ * (`glyphs.test.ts`). Every non-ASCII character in the rendered line comes from
7
+ * the `Glyphs` set the caller passes in, never from a literal here.
8
+ *
9
+ * The COUNTDOWN is derived from `resumeAt`, an absolute instant, and never from
10
+ * `delayMs`. Core deliberately sends the instant rather than a tick stream, so
11
+ * the clock belongs to whoever renders — and a card that recomputed from
12
+ * `delayMs` would freeze at the announced number the moment a frame was skipped.
13
+ */
14
+ import { formatDuration } from './usage.js';
15
+ /**
16
+ * Presentation bounds. NAMED `RETRY_UI`, NOT `RETRY_LIMITS_UI`: core's
17
+ * `RETRY_LIMITS` bounds what the mechanism can physically do, this is a column
18
+ * breakpoint, and a name that read as its sibling would invite the next reader to
19
+ * look here for the missing keys.
20
+ */
21
+ export const RETRY_UI = {
22
+ /** Below this many columns the status-bar chip degrades to `[r3]`. */
23
+ statusCompactCols: 100,
24
+ };
25
+ /**
26
+ * Whole seconds until `resumeAt`, floored at 0.
27
+ *
28
+ * `Math.ceil` rather than `round`: a countdown that shows `0s` for half a second
29
+ * before firing reads as a stall, and showing `1s` for slightly too long does
30
+ * not.
31
+ */
32
+ export function secondsLeft(resumeAt, now) {
33
+ if (resumeAt === undefined)
34
+ return 0;
35
+ return Math.max(0, Math.ceil((resumeAt - now) / 1000));
36
+ }
37
+ /**
38
+ * A short headline for a provider failure.
39
+ *
40
+ * Deliberately shorter than `formatStreamError`'s: that one is a standalone
41
+ * notice and has to explain what to do, while this shares one line with a
42
+ * counter and a countdown. Derived from `errorType` ONLY — nothing here parses
43
+ * the provider's message, because a human-facing sentence must never become a
44
+ * machine-readable contract (the rule `SubagentRun.retryable` records).
45
+ */
46
+ export function retryHeadline(errorType) {
47
+ switch (errorType) {
48
+ case 'rate_limit':
49
+ return 'Rate limited by the provider';
50
+ case 'overloaded':
51
+ return 'Provider overloaded';
52
+ case 'server_error':
53
+ return 'Provider error';
54
+ case 'network_error':
55
+ return 'Network error reaching the provider';
56
+ case 'timeout':
57
+ return 'The request timed out';
58
+ default:
59
+ return 'Provider call failed';
60
+ }
61
+ }
62
+ function plural(n) {
63
+ return n === 1 ? 'retry' : 'retries';
64
+ }
65
+ /**
66
+ * The card's single line, WITHOUT the rail glyph — `EntryView` supplies that, the
67
+ * same way it does for every other entry kind.
68
+ *
69
+ * `now` is a parameter rather than a `Date.now()` call so the function stays pure
70
+ * and the render can be asserted without a clock.
71
+ */
72
+ export function formatRetryLine(entry, glyphs, now) {
73
+ const dot = ` ${glyphs.midDot} `;
74
+ const counter = `retry ${entry.attempt}/${entry.maxRetries}`;
75
+ const settled = entry.totalRetries ?? entry.attempt;
76
+ switch (entry.phase) {
77
+ case 'waiting':
78
+ return `${retryHeadline(entry.errorType)}${dot}${counter} in ${secondsLeft(entry.resumeAt, now)}s`;
79
+ case 'retrying':
80
+ return `${retryHeadline(entry.errorType)}${dot}${counter} ${glyphs.ellipsis}`;
81
+ case 'recovered':
82
+ return `recovered after ${settled} ${plural(settled)}${entry.elapsedMs === undefined ? '' : `${dot}${formatDuration(entry.elapsedMs)}`}`;
83
+ case 'exhausted':
84
+ return `${retryHeadline(entry.errorType)}${dot}gave up after ${settled} ${plural(settled)}${entry.elapsedMs === undefined ? '' : `${dot}${formatDuration(entry.elapsedMs)}`}`;
85
+ case 'interrupted':
86
+ return `interrupted after ${settled} ${plural(settled)}`;
87
+ }
88
+ }
89
+ /** The status-bar chip text: full at width, `[r3]` when the row is tight. */
90
+ export function formatRetryChip(active, cols) {
91
+ if (cols >= RETRY_UI.statusCompactCols) {
92
+ return `retry ${active.attempt}/${active.max} ${active.secondsLeft}s`;
93
+ }
94
+ return `[r${active.attempt}]`;
95
+ }
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Token + cost accounting derived from `TokenUsage` and `ModelInfo.cost`
3
+ * (which is expressed in USD per 1M tokens). See spec §6.2 status bar.
4
+ */
5
+ import type { ModelCost, TokenUsage } from '@aragon-agent/core';
6
+ import type { UsageTotal } from './reducer.js';
7
+ /** Compute the USD cost of a single `TokenUsage` given a model's cost table. */
8
+ export declare function computeCost(usage: TokenUsage, cost?: ModelCost): number;
9
+ /**
10
+ * Fold one `TokenUsage` into a running session total
11
+ * (context-usage-gauge-accuracy §3.6 / W5).
12
+ *
13
+ * THE ONE ADDITION SITE, and collapsing four hand-written copies into it is the
14
+ * point rather than a tidy-up. The reducer had the same three lines in four
15
+ * branches - `turnEnd`, `teamUsage`, `fastUsage`, `compactionUsage` - and all
16
+ * four silently omitted the cache terms, so the status bar's `^` read LOWER than
17
+ * the `$` beside it on any session behind a caching gateway. A fifth source
18
+ * added later would have made the identical omission; now it cannot.
19
+ *
20
+ * `costDelta` IS PRECOMPUTED BY THE CALLER, exactly as the four branches already
21
+ * required: the summarizer and the fast tier may be different models with
22
+ * different price tables, and a reducer that priced its own would have to know
23
+ * about three of them.
24
+ */
25
+ export declare function addUsage(total: UsageTotal, usage: TokenUsage, costDelta: number): UsageTotal;
26
+ /**
27
+ * The number the status bar's `^` shows: the PROMPT side of the session total.
28
+ *
29
+ * DELIBERATELY THE SAME TERMS AS `occupiedTokens` MINUS `outputTokens`
30
+ * (`compaction/pressure.ts`). Anthropic reports `input_tokens` EXCLUDING cached
31
+ * tokens and puts them in two separate fields, so `inputTokens` alone
32
+ * under-reports for anyone behind a caching gateway - while `computeCost` above
33
+ * has always priced all three. That is the "three units on one row" defect
34
+ * (P1-3): the percentage counted cache, the dollars counted cache, and the arrow
35
+ * did not.
36
+ *
37
+ * `$` IS STILL NOT THE SAME TOTAL, and the distinction is worth keeping straight
38
+ * (RV-14): `computeCost` also prices OUTPUT tokens. What this function asserts is
39
+ * narrower and exact - both cache terms are counted, on both sides.
40
+ */
41
+ export declare function promptTokensOf(total: UsageTotal): number;
42
+ /** Format a USD amount for the status bar (`$0.0000`, or `$1.23` when large). */
43
+ export declare function formatCost(usd: number): string;
44
+ /** Format a token count compactly (`1.2k`, `3.4M`). */
45
+ export declare function formatTokens(n: number): string;
46
+ /** Format a millisecond duration compactly (`820ms`, `3.4s`, `1m02s`). */
47
+ export declare function formatDuration(ms: number): string;
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Token + cost accounting derived from `TokenUsage` and `ModelInfo.cost`
3
+ * (which is expressed in USD per 1M tokens). See spec §6.2 status bar.
4
+ */
5
+ /** Compute the USD cost of a single `TokenUsage` given a model's cost table. */
6
+ export function computeCost(usage, cost) {
7
+ if (!cost)
8
+ return 0;
9
+ const perM = (tokens, rate) => rate ? (tokens / 1_000_000) * rate : 0;
10
+ return (perM(usage.inputTokens, cost.input) +
11
+ perM(usage.outputTokens, cost.output) +
12
+ perM(usage.cacheReadTokens ?? 0, cost.cacheRead) +
13
+ perM(usage.cacheWriteTokens ?? 0, cost.cacheWrite));
14
+ }
15
+ /**
16
+ * Fold one `TokenUsage` into a running session total
17
+ * (context-usage-gauge-accuracy §3.6 / W5).
18
+ *
19
+ * THE ONE ADDITION SITE, and collapsing four hand-written copies into it is the
20
+ * point rather than a tidy-up. The reducer had the same three lines in four
21
+ * branches - `turnEnd`, `teamUsage`, `fastUsage`, `compactionUsage` - and all
22
+ * four silently omitted the cache terms, so the status bar's `^` read LOWER than
23
+ * the `$` beside it on any session behind a caching gateway. A fifth source
24
+ * added later would have made the identical omission; now it cannot.
25
+ *
26
+ * `costDelta` IS PRECOMPUTED BY THE CALLER, exactly as the four branches already
27
+ * required: the summarizer and the fast tier may be different models with
28
+ * different price tables, and a reducer that priced its own would have to know
29
+ * about three of them.
30
+ */
31
+ export function addUsage(total, usage, costDelta) {
32
+ return {
33
+ inputTokens: total.inputTokens + usage.inputTokens,
34
+ outputTokens: total.outputTokens + usage.outputTokens,
35
+ cacheReadTokens: total.cacheReadTokens + (usage.cacheReadTokens ?? 0),
36
+ cacheWriteTokens: total.cacheWriteTokens + (usage.cacheWriteTokens ?? 0),
37
+ costUsd: total.costUsd + costDelta,
38
+ };
39
+ }
40
+ /**
41
+ * The number the status bar's `^` shows: the PROMPT side of the session total.
42
+ *
43
+ * DELIBERATELY THE SAME TERMS AS `occupiedTokens` MINUS `outputTokens`
44
+ * (`compaction/pressure.ts`). Anthropic reports `input_tokens` EXCLUDING cached
45
+ * tokens and puts them in two separate fields, so `inputTokens` alone
46
+ * under-reports for anyone behind a caching gateway - while `computeCost` above
47
+ * has always priced all three. That is the "three units on one row" defect
48
+ * (P1-3): the percentage counted cache, the dollars counted cache, and the arrow
49
+ * did not.
50
+ *
51
+ * `$` IS STILL NOT THE SAME TOTAL, and the distinction is worth keeping straight
52
+ * (RV-14): `computeCost` also prices OUTPUT tokens. What this function asserts is
53
+ * narrower and exact - both cache terms are counted, on both sides.
54
+ */
55
+ export function promptTokensOf(total) {
56
+ return total.inputTokens + total.cacheReadTokens + total.cacheWriteTokens;
57
+ }
58
+ /** Format a USD amount for the status bar (`$0.0000`, or `$1.23` when large). */
59
+ export function formatCost(usd) {
60
+ if (usd <= 0)
61
+ return '$0.00';
62
+ if (usd < 1)
63
+ return `$${usd.toFixed(4)}`;
64
+ return `$${usd.toFixed(2)}`;
65
+ }
66
+ /** Format a token count compactly (`1.2k`, `3.4M`). */
67
+ export function formatTokens(n) {
68
+ if (n < 1000)
69
+ return String(n);
70
+ if (n < 1_000_000)
71
+ return `${(n / 1000).toFixed(1)}k`;
72
+ return `${(n / 1_000_000).toFixed(1)}M`;
73
+ }
74
+ /** Format a millisecond duration compactly (`820ms`, `3.4s`, `1m02s`). */
75
+ export function formatDuration(ms) {
76
+ if (ms < 1000)
77
+ return `${Math.round(ms)}ms`;
78
+ const s = ms / 1000;
79
+ if (s < 60)
80
+ return `${s.toFixed(1)}s`;
81
+ const m = Math.floor(s / 60);
82
+ const rem = Math.floor(s % 60);
83
+ return `${m}m${String(rem).padStart(2, '0')}s`;
84
+ }
@@ -0,0 +1,61 @@
1
+ /** Structural limits for v2 compaction. All character counts are UTF-16 units. */
2
+ export declare const COMPACTION_LIMITS: {
3
+ readonly digestMaxChars: 120000;
4
+ /**
5
+ * The smallest digest worth sending when the budget collapses (never-fires A1).
6
+ *
7
+ * `digestBudgetChars(7000)` is 0 - a summarizer whose window is smaller than the
8
+ * reserve has no input room - and before this change a 0 budget simply threw.
9
+ * Eliding is only safe while SOMETHING survives: a digest with no messages and no
10
+ * source map forces the model to invent a delta (`invalid_memory_delta`) or to
11
+ * return none, so the floor is spent on the first entry, the last entry and the
12
+ * elision marker.
13
+ */
14
+ readonly digestMinChars: 2000;
15
+ /**
16
+ * The tail budget the SECOND planning pass may fall back to (never-fires B).
17
+ *
18
+ * A MEANINGFUL TAIL, NOT A TOKEN-LEVEL FLOOR. `planCompaction` walks down from
19
+ * the LARGEST safe cut, so the cut it relaxes to leaves exactly this many
20
+ * messages behind; too small a number would satisfy the planner while breaking
21
+ * the thing the user asked for (the recent instructions stay verbatim). Tens of
22
+ * messages is one or two agentic turns' worth of tool calls.
23
+ */
24
+ readonly minRetainedMessages: 40;
25
+ readonly summarizerReserveTokens: 8000;
26
+ readonly summaryMaxChars: 32000;
27
+ readonly summaryOutputTokens: 4096;
28
+ readonly memoryJsonChars: 32000;
29
+ readonly memoryEnvelopeChars: 1024;
30
+ readonly protectedMemoryChars: 48000;
31
+ readonly memoryItems: 200;
32
+ readonly protectedUserMessages: 200;
33
+ readonly memoryAdditions: 64;
34
+ readonly coverageClips: 200;
35
+ readonly jsonDepth: 32;
36
+ readonly instructionsChars: 4000;
37
+ readonly itemTextChars: 1200;
38
+ readonly sourceExcerptChars: 512;
39
+ readonly itemSources: 8;
40
+ readonly toolResultEdgeChars: 1500;
41
+ readonly operationTimeoutMs: 120000;
42
+ readonly callTimeoutMs: 45000;
43
+ readonly minTurnsBetween: 2;
44
+ readonly maxPerRun: 5;
45
+ readonly minReclaimRatio: 0.15;
46
+ readonly stuckLimit: 2;
47
+ readonly tailToolResultChars: 2000;
48
+ readonly blockAllowanceTokens: 2000;
49
+ readonly archiveMaxFiles: 20;
50
+ readonly archiveMaxAgeMs: 604800000;
51
+ readonly archiveMaxBytes: 8000000;
52
+ readonly cardTextRows: 6;
53
+ readonly statusCompactCols: 100;
54
+ };
55
+ export declare const COMPACTION_BLOCK_VERSION = "v2-2026-10";
56
+ export declare const ANCHOR_TAG_OPEN = "<original_task>";
57
+ export declare const ANCHOR_TAG_CLOSE = "</original_task>";
58
+ export declare const BLOCK_TAG_OPEN = "<compacted_context";
59
+ export declare const BLOCK_TAG_CLOSE = "</compacted_context>";
60
+ /** Retained legacy helper for explicit callers; v2 compression never clips the tail. */
61
+ export declare function tailClipMarker(removed: number): string;
@@ -0,0 +1,64 @@
1
+ /** Structural limits for v2 compaction. All character counts are UTF-16 units. */
2
+ export const COMPACTION_LIMITS = {
3
+ digestMaxChars: 120_000,
4
+ /**
5
+ * The smallest digest worth sending when the budget collapses (never-fires A1).
6
+ *
7
+ * `digestBudgetChars(7000)` is 0 - a summarizer whose window is smaller than the
8
+ * reserve has no input room - and before this change a 0 budget simply threw.
9
+ * Eliding is only safe while SOMETHING survives: a digest with no messages and no
10
+ * source map forces the model to invent a delta (`invalid_memory_delta`) or to
11
+ * return none, so the floor is spent on the first entry, the last entry and the
12
+ * elision marker.
13
+ */
14
+ digestMinChars: 2_000,
15
+ /**
16
+ * The tail budget the SECOND planning pass may fall back to (never-fires B).
17
+ *
18
+ * A MEANINGFUL TAIL, NOT A TOKEN-LEVEL FLOOR. `planCompaction` walks down from
19
+ * the LARGEST safe cut, so the cut it relaxes to leaves exactly this many
20
+ * messages behind; too small a number would satisfy the planner while breaking
21
+ * the thing the user asked for (the recent instructions stay verbatim). Tens of
22
+ * messages is one or two agentic turns' worth of tool calls.
23
+ */
24
+ minRetainedMessages: 40,
25
+ summarizerReserveTokens: 8_000,
26
+ summaryMaxChars: 32_000,
27
+ summaryOutputTokens: 4_096,
28
+ memoryJsonChars: 32_000,
29
+ memoryEnvelopeChars: 1_024,
30
+ protectedMemoryChars: 48_000,
31
+ memoryItems: 200,
32
+ protectedUserMessages: 200,
33
+ memoryAdditions: 64,
34
+ coverageClips: 200,
35
+ jsonDepth: 32,
36
+ instructionsChars: 4_000,
37
+ itemTextChars: 1_200,
38
+ sourceExcerptChars: 512,
39
+ itemSources: 8,
40
+ toolResultEdgeChars: 1_500,
41
+ operationTimeoutMs: 120_000,
42
+ callTimeoutMs: 45_000,
43
+ minTurnsBetween: 2,
44
+ maxPerRun: 5,
45
+ minReclaimRatio: 0.15,
46
+ stuckLimit: 2,
47
+ // Legacy capacity helpers remain callable, but v2 never mutates retained tails.
48
+ tailToolResultChars: 2_000,
49
+ blockAllowanceTokens: 2_000,
50
+ archiveMaxFiles: 20,
51
+ archiveMaxAgeMs: 604_800_000,
52
+ archiveMaxBytes: 8_000_000,
53
+ cardTextRows: 6,
54
+ statusCompactCols: 100,
55
+ };
56
+ export const COMPACTION_BLOCK_VERSION = 'v2-2026-10';
57
+ export const ANCHOR_TAG_OPEN = '<original_task>';
58
+ export const ANCHOR_TAG_CLOSE = '</original_task>';
59
+ export const BLOCK_TAG_OPEN = '<compacted_context';
60
+ export const BLOCK_TAG_CLOSE = '</compacted_context>';
61
+ /** Retained legacy helper for explicit callers; v2 compression never clips the tail. */
62
+ export function tailClipMarker(removed) {
63
+ return `\n[... ${removed} characters removed by context compaction ...]`;
64
+ }