@wrongstack/tui 0.295.1 → 0.296.3

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 (279) hide show
  1. package/dist/app-action-type.d.ts +988 -0
  2. package/dist/app-action-type.d.ts.map +1 -0
  3. package/dist/app-initial-state.d.ts +1 -1
  4. package/dist/app-initial-state.d.ts.map +1 -1
  5. package/dist/app-key-handler.d.ts +11 -3
  6. package/dist/app-key-handler.d.ts.map +1 -1
  7. package/dist/app-props.d.ts +4 -2
  8. package/dist/app-props.d.ts.map +1 -1
  9. package/dist/app-reducer.d.ts +4 -2
  10. package/dist/app-reducer.d.ts.map +1 -1
  11. package/dist/app-settings-type.d.ts +75 -0
  12. package/dist/app-settings-type.d.ts.map +1 -0
  13. package/dist/app-state-core-types.d.ts +52 -0
  14. package/dist/app-state-core-types.d.ts.map +1 -0
  15. package/dist/app-state-fleet.d.ts +44 -0
  16. package/dist/app-state-fleet.d.ts.map +1 -0
  17. package/dist/app-state.d.ts +49 -1180
  18. package/dist/app-state.d.ts.map +1 -1
  19. package/dist/app-ui-state.d.ts +5 -0
  20. package/dist/app-ui-state.d.ts.map +1 -0
  21. package/dist/app-view-contract.d.ts +8 -1
  22. package/dist/app-view-contract.d.ts.map +1 -1
  23. package/dist/app-view.d.ts.map +1 -1
  24. package/dist/app.d.ts.map +1 -1
  25. package/dist/brain-panel-model.d.ts +8 -0
  26. package/dist/brain-panel-model.d.ts.map +1 -1
  27. package/dist/clipboard.d.ts +1 -1
  28. package/dist/clipboard.d.ts.map +1 -1
  29. package/dist/components/agents-monitor-constants.d.ts +12 -0
  30. package/dist/components/agents-monitor-constants.d.ts.map +1 -0
  31. package/dist/components/agents-monitor.d.ts +1 -7
  32. package/dist/components/agents-monitor.d.ts.map +1 -1
  33. package/dist/components/auth-panel.d.ts +2 -0
  34. package/dist/components/auth-panel.d.ts.map +1 -1
  35. package/dist/components/brain-panel.d.ts.map +1 -1
  36. package/dist/components/connections-panel.d.ts +7 -0
  37. package/dist/components/connections-panel.d.ts.map +1 -0
  38. package/dist/components/f-key-picker.d.ts.map +1 -1
  39. package/dist/components/history/basic-format.d.ts +19 -0
  40. package/dist/components/history/basic-format.d.ts.map +1 -0
  41. package/dist/components/history/code-block-diff-helpers.d.ts +28 -0
  42. package/dist/components/history/code-block-diff-helpers.d.ts.map +1 -0
  43. package/dist/components/history/code-block.d.ts +1 -1
  44. package/dist/components/history/code-block.d.ts.map +1 -1
  45. package/dist/components/history/copy-icon.d.ts +25 -0
  46. package/dist/components/history/copy-icon.d.ts.map +1 -0
  47. package/dist/components/history/entry.d.ts.map +1 -1
  48. package/dist/components/history/index.d.ts +5 -6
  49. package/dist/components/history/index.d.ts.map +1 -1
  50. package/dist/components/history/sage-output-format.d.ts +58 -0
  51. package/dist/components/history/sage-output-format.d.ts.map +1 -0
  52. package/dist/components/history/stream-box.d.ts +23 -0
  53. package/dist/components/history/stream-box.d.ts.map +1 -0
  54. package/dist/components/history/tool-arg-format.d.ts +5 -0
  55. package/dist/components/history/tool-arg-format.d.ts.map +1 -0
  56. package/dist/components/history/tool-group.d.ts.map +1 -1
  57. package/dist/components/history/tool-output-summary.d.ts +4 -0
  58. package/dist/components/history/tool-output-summary.d.ts.map +1 -0
  59. package/dist/components/history/tool-visual-command.d.ts +3 -0
  60. package/dist/components/history/tool-visual-command.d.ts.map +1 -0
  61. package/dist/components/history/tool-visual-domain.d.ts +8 -0
  62. package/dist/components/history/tool-visual-domain.d.ts.map +1 -0
  63. package/dist/components/history/tool-visual-format.d.ts +13 -0
  64. package/dist/components/history/tool-visual-format.d.ts.map +1 -0
  65. package/dist/components/history/tool-visual-lsp.d.ts +4 -0
  66. package/dist/components/history/tool-visual-lsp.d.ts.map +1 -0
  67. package/dist/components/history/tool-visual-misc.d.ts +7 -0
  68. package/dist/components/history/tool-visual-misc.d.ts.map +1 -0
  69. package/dist/components/history/tool-visual-mode-workdir.d.ts +4 -0
  70. package/dist/components/history/tool-visual-mode-workdir.d.ts.map +1 -0
  71. package/dist/components/history/tool-visual-types.d.ts +9 -0
  72. package/dist/components/history/tool-visual-types.d.ts.map +1 -0
  73. package/dist/components/history/utils.d.ts +16 -54
  74. package/dist/components/history/utils.d.ts.map +1 -1
  75. package/dist/components/history/visual-lines.d.ts +7 -0
  76. package/dist/components/history/visual-lines.d.ts.map +1 -0
  77. package/dist/components/history/visual-memory-logs.d.ts +4 -0
  78. package/dist/components/history/visual-memory-logs.d.ts.map +1 -0
  79. package/dist/components/input.d.ts.map +1 -1
  80. package/dist/components/kanban-panel.d.ts.map +1 -1
  81. package/dist/components/key-hint-bar.d.ts +11 -0
  82. package/dist/components/key-hint-bar.d.ts.map +1 -1
  83. package/dist/components/powerline-rail.d.ts +11 -4
  84. package/dist/components/powerline-rail.d.ts.map +1 -1
  85. package/dist/components/provider-colors.d.ts.map +1 -1
  86. package/dist/components/refine-countdown-panel.d.ts +25 -0
  87. package/dist/components/refine-countdown-panel.d.ts.map +1 -0
  88. package/dist/components/refine-failure-panel.d.ts +3 -1
  89. package/dist/components/refine-failure-panel.d.ts.map +1 -1
  90. package/dist/components/resume-picker.d.ts.map +1 -1
  91. package/dist/components/scrollable-history.d.ts +96 -17
  92. package/dist/components/scrollable-history.d.ts.map +1 -1
  93. package/dist/components/settings-picker-filter.d.ts +20 -0
  94. package/dist/components/settings-picker-filter.d.ts.map +1 -0
  95. package/dist/components/settings-picker-jumps.d.ts +16 -0
  96. package/dist/components/settings-picker-jumps.d.ts.map +1 -0
  97. package/dist/components/settings-picker-model.d.ts +271 -0
  98. package/dist/components/settings-picker-model.d.ts.map +1 -0
  99. package/dist/components/settings-picker-row-list.d.ts +21 -0
  100. package/dist/components/settings-picker-row-list.d.ts.map +1 -0
  101. package/dist/components/settings-picker.d.ts +8 -313
  102. package/dist/components/settings-picker.d.ts.map +1 -1
  103. package/dist/components/status-bar-format.d.ts +65 -0
  104. package/dist/components/status-bar-format.d.ts.map +1 -0
  105. package/dist/components/status-bar-helpers.d.ts +19 -0
  106. package/dist/components/status-bar-helpers.d.ts.map +1 -0
  107. package/dist/components/status-bar-types.d.ts +350 -0
  108. package/dist/components/status-bar-types.d.ts.map +1 -0
  109. package/dist/components/status-bar.d.ts +4 -444
  110. package/dist/components/status-bar.d.ts.map +1 -1
  111. package/dist/components/statusline-detail-panel.d.ts.map +1 -1
  112. package/dist/components/statusline-picker.d.ts +5 -3
  113. package/dist/components/statusline-picker.d.ts.map +1 -1
  114. package/dist/connections-health.d.ts +39 -0
  115. package/dist/connections-health.d.ts.map +1 -0
  116. package/dist/connections-slash.d.ts +12 -0
  117. package/dist/connections-slash.d.ts.map +1 -0
  118. package/dist/esc-close-panels.d.ts.map +1 -1
  119. package/dist/f-key-panels.d.ts +4 -2
  120. package/dist/f-key-panels.d.ts.map +1 -1
  121. package/dist/heap-watchdog.d.ts.map +1 -1
  122. package/dist/height-cache.d.ts.map +1 -1
  123. package/dist/history-archive.d.ts +69 -0
  124. package/dist/history-archive.d.ts.map +1 -0
  125. package/dist/history-entry.d.ts +52 -0
  126. package/dist/history-entry.d.ts.map +1 -1
  127. package/dist/hit-test.d.ts +3 -4
  128. package/dist/hit-test.d.ts.map +1 -1
  129. package/dist/hooks/use-app-picker-keys.d.ts +3 -2
  130. package/dist/hooks/use-app-picker-keys.d.ts.map +1 -1
  131. package/dist/hooks/use-app-runtime-refs.d.ts +38 -0
  132. package/dist/hooks/use-app-runtime-refs.d.ts.map +1 -0
  133. package/dist/hooks/use-app-session-state.d.ts +28 -0
  134. package/dist/hooks/use-app-session-state.d.ts.map +1 -0
  135. package/dist/hooks/use-autonomy-drivers.d.ts +1 -1
  136. package/dist/hooks/use-autonomy-drivers.d.ts.map +1 -1
  137. package/dist/hooks/use-brain-panel.d.ts +1 -1
  138. package/dist/hooks/use-brain-panel.d.ts.map +1 -1
  139. package/dist/hooks/use-brain-risk-sync.d.ts +11 -0
  140. package/dist/hooks/use-brain-risk-sync.d.ts.map +1 -0
  141. package/dist/hooks/use-client-telemetry.d.ts +1 -1
  142. package/dist/hooks/use-client-telemetry.d.ts.map +1 -1
  143. package/dist/hooks/use-core-tui-commands.d.ts +2 -1
  144. package/dist/hooks/use-core-tui-commands.d.ts.map +1 -1
  145. package/dist/hooks/use-director-fleet-bridge.d.ts.map +1 -1
  146. package/dist/hooks/use-enhance-runtime-state.d.ts +23 -0
  147. package/dist/hooks/use-enhance-runtime-state.d.ts.map +1 -0
  148. package/dist/hooks/use-git-session-status.d.ts.map +1 -1
  149. package/dist/hooks/use-help-panel.d.ts +6 -0
  150. package/dist/hooks/use-help-panel.d.ts.map +1 -0
  151. package/dist/hooks/use-history-copy-notice.d.ts +4 -0
  152. package/dist/hooks/use-history-copy-notice.d.ts.map +1 -0
  153. package/dist/hooks/use-history-viewport-sync.d.ts +13 -0
  154. package/dist/hooks/use-history-viewport-sync.d.ts.map +1 -0
  155. package/dist/hooks/use-initial-prompt.d.ts +1 -1
  156. package/dist/hooks/use-initial-prompt.d.ts.map +1 -1
  157. package/dist/hooks/use-interrupt-ladder.d.ts +2 -1
  158. package/dist/hooks/use-interrupt-ladder.d.ts.map +1 -1
  159. package/dist/hooks/use-kanban-board-focus.d.ts +8 -0
  160. package/dist/hooks/use-kanban-board-focus.d.ts.map +1 -0
  161. package/dist/hooks/use-live-settings-state.d.ts +20 -0
  162. package/dist/hooks/use-live-settings-state.d.ts.map +1 -0
  163. package/dist/hooks/use-mailbox-view-model.d.ts.map +1 -1
  164. package/dist/hooks/use-model-pick.d.ts +1 -1
  165. package/dist/hooks/use-model-pick.d.ts.map +1 -1
  166. package/dist/hooks/use-mouse-tracking.d.ts +15 -0
  167. package/dist/hooks/use-mouse-tracking.d.ts.map +1 -0
  168. package/dist/hooks/use-next-steps-auto-submit.d.ts +2 -1
  169. package/dist/hooks/use-next-steps-auto-submit.d.ts.map +1 -1
  170. package/dist/hooks/use-panel-controllers.d.ts +2 -1
  171. package/dist/hooks/use-panel-controllers.d.ts.map +1 -1
  172. package/dist/hooks/use-picker-keys-types.d.ts +56 -0
  173. package/dist/hooks/use-picker-keys-types.d.ts.map +1 -0
  174. package/dist/hooks/use-picker-keys.d.ts +2 -64
  175. package/dist/hooks/use-picker-keys.d.ts.map +1 -1
  176. package/dist/hooks/use-provider-event-bridge.d.ts +1 -1
  177. package/dist/hooks/use-provider-event-bridge.d.ts.map +1 -1
  178. package/dist/hooks/use-session-interrupt-controller.d.ts +6 -1
  179. package/dist/hooks/use-session-interrupt-controller.d.ts.map +1 -1
  180. package/dist/hooks/use-settings-auto-save.d.ts +2 -1
  181. package/dist/hooks/use-settings-auto-save.d.ts.map +1 -1
  182. package/dist/hooks/use-shadow-panel.d.ts +17 -0
  183. package/dist/hooks/use-shadow-panel.d.ts.map +1 -0
  184. package/dist/hooks/use-slash-picker.d.ts +2 -1
  185. package/dist/hooks/use-slash-picker.d.ts.map +1 -1
  186. package/dist/hooks/use-stable-key-handler.d.ts +5 -0
  187. package/dist/hooks/use-stable-key-handler.d.ts.map +1 -0
  188. package/dist/hooks/use-statusbar-view-model.d.ts.map +1 -1
  189. package/dist/hooks/use-subagent-events.d.ts.map +1 -1
  190. package/dist/hooks/use-terminal-render-lifecycle.d.ts.map +1 -1
  191. package/dist/hooks/use-todos-auto-clear.d.ts +3 -0
  192. package/dist/hooks/use-todos-auto-clear.d.ts.map +1 -0
  193. package/dist/hooks/use-tui-activity.d.ts +7 -1
  194. package/dist/hooks/use-tui-activity.d.ts.map +1 -1
  195. package/dist/hooks/use-tui-environment-state.d.ts +1 -0
  196. package/dist/hooks/use-tui-environment-state.d.ts.map +1 -1
  197. package/dist/hooks/use-tui-slash-commands.d.ts +2 -1
  198. package/dist/hooks/use-tui-slash-commands.d.ts.map +1 -1
  199. package/dist/index.js +22376 -20119
  200. package/dist/index.js.map +4 -4
  201. package/dist/input-validation/action-helpers.d.ts +12 -0
  202. package/dist/input-validation/action-helpers.d.ts.map +1 -0
  203. package/dist/input-validation/action-types.d.ts +4 -0
  204. package/dist/input-validation/action-types.d.ts.map +1 -0
  205. package/dist/input-validation/allow-lists.d.ts +29 -0
  206. package/dist/input-validation/allow-lists.d.ts.map +1 -0
  207. package/dist/input-validation/limits.d.ts +27 -0
  208. package/dist/input-validation/limits.d.ts.map +1 -0
  209. package/dist/input-validation/result.d.ts +10 -0
  210. package/dist/input-validation/result.d.ts.map +1 -0
  211. package/dist/input-validation/state-entries.d.ts +22 -0
  212. package/dist/input-validation/state-entries.d.ts.map +1 -0
  213. package/dist/input-validation/terminal.d.ts +69 -0
  214. package/dist/input-validation/terminal.d.ts.map +1 -0
  215. package/dist/input-validation.d.ts +7 -176
  216. package/dist/input-validation.d.ts.map +1 -1
  217. package/dist/layout-engine.d.ts +5 -1
  218. package/dist/layout-engine.d.ts.map +1 -1
  219. package/dist/layout-store.d.ts.map +1 -1
  220. package/dist/mailbox-view-model-types.d.ts +19 -0
  221. package/dist/mailbox-view-model-types.d.ts.map +1 -0
  222. package/dist/memory-context-monitor.d.ts +6 -0
  223. package/dist/memory-context-monitor.d.ts.map +1 -1
  224. package/dist/memory-slash-format.d.ts +10 -0
  225. package/dist/memory-slash-format.d.ts.map +1 -0
  226. package/dist/memory-slash.d.ts.map +1 -1
  227. package/dist/mouse.d.ts +11 -4
  228. package/dist/mouse.d.ts.map +1 -1
  229. package/dist/on-panel-open.d.ts +1 -1
  230. package/dist/on-panel-open.d.ts.map +1 -1
  231. package/dist/overlay-key-router.d.ts +1 -1
  232. package/dist/overlay-key-router.d.ts.map +1 -1
  233. package/dist/reducers/activity.d.ts +2 -1
  234. package/dist/reducers/activity.d.ts.map +1 -1
  235. package/dist/reducers/composer.d.ts +2 -1
  236. package/dist/reducers/composer.d.ts.map +1 -1
  237. package/dist/reducers/conversation.d.ts +3 -2
  238. package/dist/reducers/conversation.d.ts.map +1 -1
  239. package/dist/reducers/dialogs.d.ts +3 -2
  240. package/dist/reducers/dialogs.d.ts.map +1 -1
  241. package/dist/reducers/fleet.d.ts +2 -1
  242. package/dist/reducers/fleet.d.ts.map +1 -1
  243. package/dist/reducers/helpers.d.ts +1 -1
  244. package/dist/reducers/helpers.d.ts.map +1 -1
  245. package/dist/reducers/panel-pickers.d.ts +2 -1
  246. package/dist/reducers/panel-pickers.d.ts.map +1 -1
  247. package/dist/reducers/settings-panel.d.ts +2 -1
  248. package/dist/reducers/settings-panel.d.ts.map +1 -1
  249. package/dist/reducers/settings-values.d.ts +2 -1
  250. package/dist/reducers/settings-values.d.ts.map +1 -1
  251. package/dist/reducers/workspace-panels.d.ts +3 -2
  252. package/dist/reducers/workspace-panels.d.ts.map +1 -1
  253. package/dist/run-tui-client-registration.d.ts +18 -0
  254. package/dist/run-tui-client-registration.d.ts.map +1 -0
  255. package/dist/run-tui-options.d.ts +569 -0
  256. package/dist/run-tui-options.d.ts.map +1 -0
  257. package/dist/run-tui-title-controller.d.ts +16 -0
  258. package/dist/run-tui-title-controller.d.ts.map +1 -0
  259. package/dist/run-tui.d.ts +5 -572
  260. package/dist/run-tui.d.ts.map +1 -1
  261. package/dist/scroll-anchor.d.ts +10 -14
  262. package/dist/scroll-anchor.d.ts.map +1 -1
  263. package/dist/settings-contracts.d.ts +6 -1
  264. package/dist/settings-contracts.d.ts.map +1 -1
  265. package/dist/submit-controller.d.ts +4 -0
  266. package/dist/submit-controller.d.ts.map +1 -1
  267. package/dist/submit-prompt-refinement.d.ts +2 -0
  268. package/dist/submit-prompt-refinement.d.ts.map +1 -1
  269. package/dist/terminal-modes.d.ts +3 -0
  270. package/dist/terminal-modes.d.ts.map +1 -0
  271. package/dist/terminal-silence.d.ts +3 -0
  272. package/dist/terminal-silence.d.ts.map +1 -0
  273. package/dist/terminal-title.d.ts +7 -1
  274. package/dist/terminal-title.d.ts.map +1 -1
  275. package/dist/tui-host-capabilities.d.ts +1 -1
  276. package/dist/tui-host-capabilities.d.ts.map +1 -1
  277. package/dist/ui-contracts.d.ts +2 -1
  278. package/dist/ui-contracts.d.ts.map +1 -1
  279. package/package.json +11 -12
@@ -1,143 +1,23 @@
1
1
  import type { AutonomyStage, ContentBlock, DesignKitEntry, FleetChatVerbosity, TokenSavingTier } from '@wrongstack/core/types';
2
2
  import type { SddBoardSnapshot } from '@wrongstack/sdd';
3
- import type { AuthCatalogRow, AuthConfirmAction, AuthLocalPresetRow, AuthPanelState, AuthPanelView, AuthProviderRow } from './auth-panel-model.js';
4
- import type { HistoryEntry } from './history-entry.js';
3
+ import type { GoalSummary, QueueItem, ResumeSessionEntry, SlashCommandMatch } from './app-state-core-types.js';
4
+ import type { FleetEntry } from './app-state-fleet.js';
5
+ import type { AuthPanelState } from './auth-panel-model.js';
5
6
  import type { BrainLogEntry, BrainRiskLevel } from './brain-contracts.js';
6
7
  import type { BrainPanelSettings } from './brain-panel-model.js';
7
- import type { AuditLevel, CacheTtl, CompactorStrategy, ContextMode, LogLevel, ReasoningEffort, SettingsMode, SettingsPickerPatch, StatuslineMode } from './settings-contracts.js';
8
+ import type { HistoryEntry } from './history-entry.js';
9
+ import type { AuditLevel, CacheTtl, CompactorStrategy, ContextMode, LogLevel, ReasoningEffort, SettingsMode, StatuslineMode } from './settings-contracts.js';
8
10
  import type { AutonomyOption, ChipMeta, HelpEntry, LiveSessionEntry, McpPickerItem, ModeOption, PluginPickerItem, ProjectPickerItem, PromptPickEntry, ProviderOption, RefineFailureDecision, RefineFailureModel, SendMode, ShadowState, StatuslineItem, ToolPickerItem, WorktreeRow } from './ui-contracts.js';
9
- export interface QueueItem {
10
- id: number;
11
- displayText: string;
12
- blocks: ContentBlock[];
13
- /** When true, the item will be refined via model.refine before entering the agent context. */
14
- shouldRefine?: boolean | undefined;
15
- }
16
- /** Per-subagent state tracked live from the FleetBus. */
17
- export interface FleetEntry {
18
- id: string;
19
- name: string;
20
- provider?: string | undefined;
21
- model?: string | undefined;
22
- status: 'idle' | 'running' | 'success' | 'failed' | 'timeout' | 'stopped';
23
- streamingText: string;
24
- iterations: number;
25
- toolCalls: number;
26
- recentTools: Array<{
27
- name: string;
28
- ok?: boolean | undefined;
29
- durationMs?: number | undefined;
30
- outputBytes?: number | undefined;
31
- outputLines?: number | undefined;
32
- at: number;
33
- }>;
34
- recentMessages: Array<{
35
- text: string;
36
- at: number;
37
- }>;
38
- cost: number;
39
- startedAt: number;
40
- lastEventAt: number;
41
- /**
42
- * Tool the subagent is currently inside, set on `tool.started` and
43
- * cleared on `tool.executed`. Lets the FleetPanel render "running →
44
- * bash" instead of an opaque "running". Undefined when no tool is
45
- * mid-flight (between iterations, before the first tool, or after
46
- * the last tool of a run).
47
- */
48
- currentTool?: {
49
- name: string;
50
- startedAt: number;
51
- } | undefined;
52
- /**
53
- * Absolute path to the per-subagent JSONL transcript on disk, when
54
- * one was created. Surfaced so the FleetPanel can render `path:`
55
- * dim under the entry — users grep / tail the file for full
56
- * visibility into the subagent's run.
57
- */
58
- transcriptPath?: string | undefined;
59
- /**
60
- * Most recent budget warning: subagent hit a soft limit and the
61
- * coordinator is auto-extending. Rendered in FleetPanel as:
62
- * "⚡ hitting tool_calls limit (350/400) — extending"
63
- * Cleared on the next fleetDone or fleetStart.
64
- */
65
- budgetWarning?: {
66
- kind: string;
67
- used: number;
68
- limit: number;
69
- at: number;
70
- } | undefined;
71
- /**
72
- * Cumulative auto-extension grants for this subagent. Surfaced as a
73
- * persistent "⚡×N" badge in the monitor and 4th status line so the user
74
- * can see how often never-die kept the agent alive. Survives across tasks
75
- * within the same subagent entry (unlike `budgetWarning`, which clears).
76
- */
77
- extensions?: number | undefined;
78
- /**
79
- * Latest displayed context window fill percentage (0–1, capped at 1).
80
- * Emitted on every `iteration.completed` via `ctx.pct` event.
81
- * Rendered as a colored progress bar in the AgentsMonitor.
82
- */
83
- ctxPct?: number | undefined;
84
- /** Estimated total tokens in the context window (from ctx.pct event). */
85
- ctxTokens?: number | undefined;
86
- /** Provider's max context window in tokens (from ctx.pct event). */
87
- ctxMaxTokens?: number | undefined;
88
- /**
89
- * Estimated USD cost of the current context tokens. Derived from
90
- * ctxTokens × provider-specific input pricing when available.
91
- * Shown in the agents monitor as a per-agent cost breakdown.
92
- */
93
- ctxCost?: number | undefined;
94
- /**
95
- * Human-readable reason for terminal failure, when known.
96
- * E.g. "provider_auth", "rate_limit", "timeout", "budget_iterations".
97
- * Shown in the Fleet timeline and the per-agent card in the agents monitor.
98
- */
99
- failureReason?: string | undefined;
100
- }
101
- /** A registered slash command matched against the user's current / query. */
102
- export interface SlashCommandMatch {
103
- name: string;
104
- description: string;
105
- argsHint?: string | undefined;
106
- matchedAlias?: string | undefined;
107
- isBuiltin: boolean;
108
- category: 'Run' | 'Session' | 'Inspect' | 'Agent' | 'Config' | 'App';
109
- }
110
- /** Thin view over a SessionSummary for the resume picker. */
111
- export interface ResumeSessionEntry {
112
- id: string;
113
- title: string;
114
- startedAt: string;
115
- endedAt?: string | undefined;
116
- tokenTotal: number;
117
- iterationCount: number;
118
- toolCallCount: number;
119
- toolErrorCount: number;
120
- outcome?: 'completed' | 'error' | 'timeout' | 'aborted' | undefined;
121
- /** The current session — marked so the picker can disallow resuming into itself. */
122
- isCurrent?: boolean | undefined;
123
- }
124
- export type DraftEntry = HistoryEntry extends infer T ? T extends {
125
- id: number;
126
- } ? Omit<T, 'id'> : never : never;
127
- export type GoalSummary = {
128
- goal: string;
129
- refinedGoal?: string | undefined;
130
- goalState: 'active' | 'paused' | 'completed' | 'abandoned';
131
- iterations: number;
132
- progress?: number | undefined;
133
- progressNote?: string | undefined;
134
- progressTrend?: 'accelerating' | 'steady' | 'stalling' | undefined;
135
- deliverables?: string[] | undefined;
136
- lastTask?: string | undefined;
137
- lastStatus?: string | undefined;
138
- } | null;
11
+ export type { Settings } from './app-settings-type.js';
12
+ export type { DraftEntry, GoalSummary, QueueItem, ResumeSessionEntry, SlashCommandMatch, } from './app-state-core-types.js';
13
+ export type { FleetEntry } from './app-state-fleet.js';
139
14
  export type State = {
140
15
  entries: HistoryEntry[];
16
+ /**
17
+ * True while the history archive is loading older entries from disk.
18
+ * The UI may show a loading indicator for the scrollback area.
19
+ */
20
+ archiveLoading: boolean;
141
21
  /**
142
22
  * Monotonic generation counter retained for wholesale history replacement
143
23
  * compatibility and the legacy standalone History renderer.
@@ -187,6 +67,21 @@ export type State = {
187
67
  partialAssistantText: string;
188
68
  } | null;
189
69
  hint: string;
70
+ /**
71
+ * Transient "Copied" confirmation shown when a chat card's copy icon is
72
+ * clicked and its content lands on the clipboard. Separate from `hint` so it
73
+ * takes precedence over the running-tools indicator (copying tool output
74
+ * mid-run is a prime use case) and never races another hint producer. Empty
75
+ * string = no notice. Auto-cleared by a host timer.
76
+ */
77
+ copiedNotice: string;
78
+ /**
79
+ * Entry id of the card whose copy icon was just clicked, so ScrollableHistory
80
+ * can flash that specific icon in the success color while the "Copied" notice
81
+ * is active. `null` = no card highlighted. Set and cleared in lockstep with
82
+ * `copiedNotice`.
83
+ */
84
+ copiedEntryId: number | null;
190
85
  brain: {
191
86
  state: 'idle' | 'deciding' | 'answered' | 'ask_human' | 'denied';
192
87
  source?: string | undefined;
@@ -350,6 +245,8 @@ export type State = {
350
245
  autoProceedMaxIterations: number;
351
246
  /** Prompt refinement preview countdown (ms). */
352
247
  enhanceDelayMs: number;
248
+ /** Pre-refine grace period (seconds). 0 = skip countdown entirely. */
249
+ preRefineSeconds: number;
353
250
  /** Master toggle for the prompt refiner (mirrors Settings.enhanceEnabled). */
354
251
  enhanceEnabled: boolean;
355
252
  /** Refined-prompt language preference (mirrors Settings.enhanceLanguage). */
@@ -378,6 +275,8 @@ export type State = {
378
275
  showModelReasoning: boolean;
379
276
  /** Show the persistent AGENT SWARM and todo mission queue panel. Default: true. */
380
277
  showAgentSwarmPanel: boolean;
278
+ /** When true, read tool includes codebase-index symbols alongside file content. */
279
+ readSymbols: boolean;
381
280
  /** Prompt cache TTL. */
382
281
  cacheTtl: CacheTtl;
383
282
  /** Where to persist settings: 'global' or 'project'. */
@@ -526,6 +425,21 @@ export type State = {
526
425
  enhanceEnabled: boolean;
527
426
  /** True while the refiner LLM call is in flight (before the panel appears). Drives a "refining…" indicator. */
528
427
  enhanceBusy: boolean;
428
+ /**
429
+ * Active pre-refine grace countdown. Set after the user submits a prompt
430
+ * that passes the refiner gate but BEFORE the refiner LLM call starts.
431
+ * The user sees a "refining in Ns…" panel and can send as-is (any key),
432
+ * cancel back to the composer (Esc), or let the timer expire to proceed
433
+ * into normal refinement. Resolves to proceed / skip / cancel. Null when
434
+ * no countdown is active.
435
+ */
436
+ refineCountdown: {
437
+ /** The user's just-submitted message (shown as preview). */
438
+ original: string;
439
+ /** Grace period in seconds before the refiner call starts. */
440
+ seconds: number;
441
+ resolve: (decision: 'proceed' | 'skip' | 'cancel') => void;
442
+ } | null;
529
443
  /**
530
444
  * Active refinement-failure recovery panel. Set when a refine attempt (and
531
445
  * its automatic timeout retry) failed and the user must choose how to
@@ -694,6 +608,8 @@ export type State = {
694
608
  goalKanbanPanelOpen: boolean;
695
609
  /** When true, the interactive context monitor is shown (`/context`). */
696
610
  contextPanelOpen: boolean;
611
+ /** When true, the interactive service connections health panel is shown (`/connections`). */
612
+ connectionsPanelOpen: boolean;
697
613
  /** When true, the sessions panel is shown (F10). */
698
614
  sessionsPanelOpen: boolean;
699
615
  /** Live session data for the sessions panel (F10). */
@@ -866,1051 +782,4 @@ export type State = {
866
782
  remainingSeconds: number;
867
783
  } | null;
868
784
  };
869
- export type Settings = {
870
- mode: 'off' | 'suggest' | 'auto';
871
- delayMs: number;
872
- titleAnimation: boolean;
873
- yolo: boolean;
874
- /** Fleet-chat verbosity; wire name matches the CLI LiveSettingsInput. */
875
- fleetChatVerbosity: FleetChatVerbosity;
876
- chime: boolean;
877
- confirmExit: boolean;
878
- nextPrediction: boolean;
879
- featureMcp: boolean;
880
- featurePlugins: boolean;
881
- featureMemory: boolean;
882
- featureSkills: boolean;
883
- featureModelsRegistry: boolean;
884
- /** Token-saving tier: off | minimal | light | medium | aggressive. */
885
- featureTokenSaving: TokenSavingTier;
886
- /** Allow tools to access paths outside the project root. Default: true (open). */
887
- allowOutsideProjectRoot: boolean;
888
- contextAutoCompact: boolean;
889
- contextStrategy: 'hybrid' | 'intelligent' | 'selective';
890
- contextMode: ContextMode;
891
- maxConcurrent: number;
892
- logLevel: 'error' | 'warn' | 'info' | 'debug' | 'trace';
893
- auditLevel: 'minimal' | 'standard' | 'full';
894
- indexOnStart: boolean;
895
- /** Multi-file diff summary footer cutoff. 0 = off; positive = min file count. */
896
- multiDiffSummaryThreshold: number;
897
- /**
898
- * Settings-picker row the user last navigated to. Carried in the
899
- * canonical Settings shape so reopening the picker after a session
900
- * restart lands on the same row they were last tweaking, rather than
901
- * always resetting to 0. Updated on every `settingsFieldMove` /
902
- * `settingsFieldSet`; consumed by the `settingsOpen` action.
903
- */
904
- lastSettingsField: number;
905
- maxIterations: number;
906
- /** Maximum auto-proceed iterations (0 = unlimited). */
907
- autoProceedMaxIterations: number;
908
- /** Prompt refinement preview countdown (ms). */
909
- enhanceDelayMs: number;
910
- /** Enable/disable prompt refinement. */
911
- enhanceEnabled: boolean;
912
- /** Default language for refinement: original or english. */
913
- enhanceLanguage: 'original' | 'english';
914
- /**
915
- * When true (default), submitting a plain message while the agent is busy
916
- * pops the send-mode picker (queue / by-the-way / steer). Toggled via
917
- * `/queue picker on|off`; persisted to `autonomy.midRunSendPicker`.
918
- */
919
- midRunSendPicker?: boolean | undefined;
920
- /** Raw SSE stream debugging — hex-dump every byte received from providers. */
921
- debugStream: boolean;
922
- /** Skip the confirmation prompt for the `!<command>` shell shortcut. */
923
- shellBangWarningDontShowAgain?: boolean | undefined;
924
- /** Statusline density mode. Defaults to detailed. */
925
- statuslineMode: StatuslineMode;
926
- /** Reasoning mode: auto (provider default) | on | off. */
927
- reasoningMode: 'auto' | 'on' | 'off';
928
- /** Reasoning effort level. */
929
- reasoningEffort: ReasoningEffort;
930
- /** Preserve thinking across turns. */
931
- reasoningPreserve: boolean;
932
- /** Single word shown in the TUI rainbow working-state chip. */
933
- thinkingWord: string;
934
- /**
935
- * Show the "Model Reasoning" collapsible blocks in chat history.
936
- * Default: true.
937
- */
938
- showModelReasoning: boolean;
939
- /** Show the persistent AGENT SWARM and todo mission queue panel. Default: true. */
940
- showAgentSwarmPanel: boolean;
941
- /** Prompt cache TTL. */
942
- cacheTtl: CacheTtl;
943
- /** Where to persist settings: 'global' or 'project'. */
944
- configScope: 'global' | 'project';
945
- /**
946
- * Animation style for the working/thinking chip in the status bar. One of
947
- * the renderable styles plus the meta-mode `'cycle'` that rotates through
948
- * the variant styles every `CYCLE_INTERVAL_SECONDS`.
949
- */
950
- animationStyle: 'rainbow' | 'wave' | 'pulse' | 'dots' | 'breathe' | 'cycle';
951
- /** Full mouse mode: in-app managed scroll + clickable UI (SGR tracking on). */
952
- mouseMode?: boolean | undefined;
953
- /** Whether the process circuit breaker gates bash/exec. Default false (off). */
954
- breakerEnabled?: boolean | undefined;
955
- /** Auto kill/reset delay (ms) when the breaker trips. 0 = manual recovery. */
956
- breakerAutoKillResetMs?: number | undefined;
957
- };
958
- export type Action = {
959
- type: 'addEntry';
960
- entry: DraftEntry;
961
- } | {
962
- type: 'compactHistory';
963
- } | {
964
- type: 'setBuffer';
965
- buffer: string;
966
- cursor: number;
967
- } | {
968
- type: 'clearInput';
969
- } | {
970
- type: 'clearHistory';
971
- model?: string | undefined;
972
- provider?: string | undefined;
973
- } | {
974
- type: 'streamDelta';
975
- delta: string;
976
- } | {
977
- type: 'streamReset';
978
- } | {
979
- type: 'status';
980
- status: State['status'];
981
- } | {
982
- type: 'interrupt';
983
- } | {
984
- type: 'resetInterrupts';
985
- }
986
- /**
987
- * User pressed Esc mid-iteration — flag the next message for steering
988
- * AND stash a context snapshot so the preamble can tell the model
989
- * exactly what it was doing.
990
- */
991
- | {
992
- type: 'steerStart';
993
- snapshot: State['steerSnapshot'];
994
- }
995
- /** Submit handler consumed the steering flag; reset. */
996
- | {
997
- type: 'steerConsume';
998
- } | {
999
- type: 'hint';
1000
- text: string;
1001
- } | {
1002
- type: 'brainStatus';
1003
- state: State['brain']['state'];
1004
- source?: string | undefined;
1005
- risk?: State['brain']['risk'] | undefined;
1006
- summary?: string | undefined;
1007
- } | {
1008
- type: 'brainPromptSet';
1009
- prompt: NonNullable<State['brainPrompt']>;
1010
- } | {
1011
- type: 'brainPromptClear';
1012
- } | {
1013
- type: 'pickerOpen';
1014
- query: string;
1015
- } | {
1016
- type: 'pickerClose';
1017
- } | {
1018
- type: 'pickerSetMatches';
1019
- query: string;
1020
- matches: string[];
1021
- } | {
1022
- type: 'pickerMove';
1023
- delta: number;
1024
- } | {
1025
- type: 'toolStarted';
1026
- id: string;
1027
- name: string;
1028
- } | {
1029
- type: 'toolEnded';
1030
- id?: string | undefined;
1031
- name?: string | undefined;
1032
- } | {
1033
- type: 'toolStreamAppend';
1034
- toolUseId: string;
1035
- name: string;
1036
- text: string;
1037
- startedAt: number;
1038
- } | {
1039
- type: 'toolStreamClear';
1040
- toolUseId?: string | undefined;
1041
- name?: string | undefined;
1042
- } | {
1043
- type: 'enqueue';
1044
- item: Omit<QueueItem, 'id'>;
1045
- } | {
1046
- type: 'dequeueFirst';
1047
- } | {
1048
- type: 'queueClear';
1049
- } | {
1050
- type: 'queueDelete';
1051
- positions: number[];
1052
- } | {
1053
- type: 'queueToggleRefine';
1054
- position: number;
1055
- } | {
1056
- type: 'slashPickerOpen';
1057
- query: string;
1058
- matches: SlashCommandMatch[];
1059
- } | {
1060
- type: 'slashPickerClose';
1061
- } | {
1062
- type: 'slashPickerMove';
1063
- delta: number;
1064
- } | {
1065
- type: 'modelPickerOpen';
1066
- providers: ProviderOption[];
1067
- purpose?: 'switch' | 'pick' | undefined;
1068
- title?: string | undefined;
1069
- } | {
1070
- type: 'modelPickerClose';
1071
- } | {
1072
- type: 'modelPickerMove';
1073
- delta: number;
1074
- } | {
1075
- type: 'modelPickerPickProvider';
1076
- providerId: string;
1077
- models: string[];
1078
- } | {
1079
- type: 'modelPickerBack';
1080
- } | {
1081
- type: 'modelPickerHint';
1082
- text?: string | undefined;
1083
- }
1084
- /** Update the search filter in step 2. */
1085
- | {
1086
- type: 'modelPickerSearch';
1087
- query: string;
1088
- } | {
1089
- type: 'autonomyPickerOpen';
1090
- options: AutonomyOption[];
1091
- } | {
1092
- type: 'autonomyPickerClose';
1093
- } | {
1094
- type: 'autonomyPickerMove';
1095
- delta: number;
1096
- } | {
1097
- type: 'autonomyPickerHint';
1098
- text?: string | undefined;
1099
- } | {
1100
- type: 'modePickerOpen';
1101
- modes: ModeOption[];
1102
- } | {
1103
- type: 'modePickerClose';
1104
- } | {
1105
- type: 'modePickerMove';
1106
- delta: number;
1107
- } | {
1108
- type: 'modePickerHint';
1109
- text?: string | undefined;
1110
- } | {
1111
- type: 'designPickerOpen';
1112
- kits: DesignKitEntry[];
1113
- } | {
1114
- type: 'designPickerClose';
1115
- } | {
1116
- type: 'designPickerMove';
1117
- delta: number;
1118
- } | {
1119
- type: 'designPickerStack';
1120
- stack: string;
1121
- } | {
1122
- type: 'promptPickerOpen';
1123
- all: PromptPickEntry[];
1124
- categories: string[];
1125
- recentSlugs: string[];
1126
- } | {
1127
- type: 'promptPickerClose';
1128
- } | {
1129
- type: 'promptPickerMove';
1130
- delta: number;
1131
- } | {
1132
- type: 'promptPickerCategory';
1133
- delta: number;
1134
- } | {
1135
- type: 'resumePickerOpen';
1136
- sessions: ResumeSessionEntry[];
1137
- } | {
1138
- type: 'resumePickerClose';
1139
- } | {
1140
- type: 'resumePickerMove';
1141
- delta: number;
1142
- } | {
1143
- type: 'resumePickerBusy';
1144
- on: boolean;
1145
- } | {
1146
- type: 'resumePickerHint';
1147
- text?: string | undefined;
1148
- } | {
1149
- type: 'resumePickerError';
1150
- text: string;
1151
- }
1152
- /** Replace all history entries with the given hydrated entries from a resumed session. */
1153
- | {
1154
- type: 'replaceHistory';
1155
- entries: HistoryEntry[];
1156
- nextId: number;
1157
- } | {
1158
- type: 'settingsOpen';
1159
- mode: SettingsMode;
1160
- delayMs: number;
1161
- titleAnimation: boolean;
1162
- yolo: boolean;
1163
- fleetChat: FleetChatVerbosity;
1164
- chime: boolean;
1165
- confirmExit: boolean;
1166
- nextPrediction: boolean;
1167
- featureMcp: boolean;
1168
- featurePlugins: boolean;
1169
- featureMemory: boolean;
1170
- featureSkills: boolean;
1171
- featureModelsRegistry: boolean;
1172
- tokenSavingTier: TokenSavingTier;
1173
- allowOutsideProjectRoot: boolean;
1174
- contextAutoCompact: boolean;
1175
- contextStrategy: CompactorStrategy;
1176
- contextMode: ContextMode;
1177
- maxConcurrent: number;
1178
- logLevel: LogLevel;
1179
- auditLevel: AuditLevel;
1180
- indexOnStart: boolean;
1181
- multiDiffSummaryThreshold: number;
1182
- /**
1183
- * Animation style for the working/thinking chip in the status bar.
1184
- * One of the renderable styles plus the meta-mode `'cycle'`. Persisted
1185
- * to disk on every ←/→ change in `/settings`.
1186
- */
1187
- animationStyle: 'rainbow' | 'wave' | 'pulse' | 'dots' | 'breathe' | 'cycle';
1188
- /**
1189
- * Persisted row index for where to land when the picker reopens.
1190
- * See `Settings.lastSettingsField`.
1191
- */
1192
- lastSettingsField: number;
1193
- maxIterations: number;
1194
- autoProceedMaxIterations: number;
1195
- enhanceDelayMs: number;
1196
- enhanceEnabled: boolean;
1197
- enhanceLanguage: 'original' | 'english';
1198
- debugStream: boolean;
1199
- statuslineMode: StatuslineMode;
1200
- reasoningMode: 'auto' | 'on' | 'off';
1201
- reasoningEffort: ReasoningEffort;
1202
- reasoningPreserve: boolean;
1203
- thinkingWord: string;
1204
- cacheTtl: CacheTtl;
1205
- configScope: 'global' | 'project';
1206
- breakerEnabled: boolean;
1207
- breakerAutoKillResetMs: number;
1208
- showModelReasoning: boolean;
1209
- showAgentSwarmPanel: boolean;
1210
- } | {
1211
- type: 'settingsClose';
1212
- } | {
1213
- type: 'settingsFieldMove';
1214
- delta: number;
1215
- } | {
1216
- type: 'settingsFieldSet';
1217
- field: number;
1218
- } | {
1219
- type: 'settingsValueChange';
1220
- delta: number;
1221
- }
1222
- /**
1223
- * Set a settings value directly from a typed patch (used by the
1224
- * `/settings <chord> <value>` slash command). The patch is produced
1225
- * by `resolveSettingsFieldValue` in settings-picker.tsx and validated
1226
- * before dispatch, so the reducer just spreads it.
1227
- */
1228
- | {
1229
- type: 'settingsValueSet';
1230
- patch: SettingsPickerPatch;
1231
- }
1232
- /**
1233
- * Update the live row-search filter. Empty string clears the filter.
1234
- * Setting any non-empty value while the filter is empty also implicitly
1235
- * activates filter mode (the picker renders only matching rows).
1236
- */
1237
- | {
1238
- type: 'settingsFilterSet';
1239
- filter: string;
1240
- } | {
1241
- type: 'settingsHint';
1242
- text?: string | undefined;
1243
- }
1244
- /** Begin free-text editing of the thinking word (Enter on its row). */
1245
- | {
1246
- type: 'settingsThinkingEditStart';
1247
- }
1248
- /** Replace the in-progress thinking-word draft with the given buffer. */
1249
- | {
1250
- type: 'settingsThinkingEditChange';
1251
- draft: string;
1252
- }
1253
- /** Commit the draft as the new thinking word (validated in the reducer). */
1254
- | {
1255
- type: 'settingsThinkingEditCommit';
1256
- }
1257
- /** Discard the draft and leave edit mode without changing the word. */
1258
- | {
1259
- type: 'settingsThinkingEditCancel';
1260
- } | {
1261
- type: 'statuslineOpen';
1262
- hiddenItems: StatuslineItem[];
1263
- } | {
1264
- type: 'statuslineClose';
1265
- } | {
1266
- type: 'statuslineFieldMove';
1267
- delta: number;
1268
- } | {
1269
- type: 'statuslineFieldSet';
1270
- field: number;
1271
- } | {
1272
- type: 'statuslineToggle';
1273
- item: StatuslineItem;
1274
- } | {
1275
- type: 'statuslineHint';
1276
- text?: string | undefined;
1277
- }
1278
- /**
1279
- * A chip became visible due to data arriving (e.g., brain decision made,
1280
- * mailbox messages arrived). Adds it to visibleChips with optional expiration.
1281
- * If the chip is already in visibleChips, resets its shownAt timestamp.
1282
- */
1283
- | {
1284
- type: 'statuslineChipShow';
1285
- key: StatuslineItem;
1286
- expiresIn?: number;
1287
- }
1288
- /**
1289
- * Immediately remove a chip from visibleChips. Used when a stream ends
1290
- * (brain, mailbox, enhance, debug_stream) so it disappears right away
1291
- * even if it hasn't expired yet.
1292
- */
1293
- | {
1294
- type: 'statuslineChipExpire';
1295
- key: StatuslineItem;
1296
- }
1297
- /**
1298
- * Sync visibleChips from the parent (e.g., after /statusline reset).
1299
- * Replaces the entire visibleChips array.
1300
- */
1301
- | {
1302
- type: 'statuslineVisibleChipsSync';
1303
- visibleChips: ChipMeta[];
1304
- } | {
1305
- type: 'pluginPickerOpen';
1306
- items?: PluginPickerItem[] | undefined;
1307
- } | {
1308
- type: 'pluginPickerClose';
1309
- } | {
1310
- type: 'pluginPickerMove';
1311
- delta: number;
1312
- } | {
1313
- type: 'pluginPickerSetItems';
1314
- items: PluginPickerItem[];
1315
- } | {
1316
- type: 'pluginPickerBusy';
1317
- busy: boolean;
1318
- } | {
1319
- type: 'pluginPickerHint';
1320
- text?: string | undefined;
1321
- } | {
1322
- type: 'mcpPickerOpen';
1323
- items?: McpPickerItem[] | undefined;
1324
- } | {
1325
- type: 'mcpPickerClose';
1326
- } | {
1327
- type: 'mcpPickerMove';
1328
- delta: number;
1329
- } | {
1330
- type: 'mcpPickerSetItems';
1331
- items: McpPickerItem[];
1332
- } | {
1333
- type: 'mcpPickerBusy';
1334
- busy: boolean;
1335
- } | {
1336
- type: 'mcpPickerHint';
1337
- text?: string | undefined;
1338
- } | {
1339
- type: 'toolsPickerOpen';
1340
- items?: ToolPickerItem[] | undefined;
1341
- } | {
1342
- type: 'toolsPickerClose';
1343
- } | {
1344
- type: 'toolsPickerMove';
1345
- delta: number;
1346
- } | {
1347
- type: 'toolsPickerSetItems';
1348
- items: ToolPickerItem[];
1349
- } | {
1350
- type: 'toolsPickerToggle';
1351
- } | {
1352
- type: 'toolsPickerBusy';
1353
- busy: boolean;
1354
- } | {
1355
- type: 'toolsPickerHint';
1356
- text?: string | undefined;
1357
- } | {
1358
- type: 'toolsPickerFilter';
1359
- filter: string;
1360
- } | {
1361
- type: 'brainOpen';
1362
- riskLevel: BrainRiskLevel;
1363
- log: BrainLogEntry[];
1364
- settings?: BrainPanelSettings | undefined;
1365
- } | {
1366
- type: 'brainClose';
1367
- } | {
1368
- type: 'brainMove';
1369
- delta: number;
1370
- } | {
1371
- type: 'brainRiskChange';
1372
- delta: number;
1373
- } | {
1374
- type: 'brainSetLog';
1375
- log: BrainLogEntry[];
1376
- } | {
1377
- type: 'brainHint';
1378
- text?: string | undefined;
1379
- } | {
1380
- type: 'brainSettingsLoaded';
1381
- settings: BrainPanelSettings;
1382
- } | {
1383
- type: 'brainView';
1384
- view: 'settings' | 'log';
1385
- } | {
1386
- type: 'brainRowMove';
1387
- delta: number;
1388
- } | {
1389
- type: 'brainBusy';
1390
- busy: boolean;
1391
- } | {
1392
- type: 'helpOpen';
1393
- entries: HelpEntry[];
1394
- } | {
1395
- type: 'helpClose';
1396
- } | {
1397
- type: 'helpMove';
1398
- delta: number;
1399
- } | {
1400
- type: 'helpFilter';
1401
- filter: string;
1402
- } | {
1403
- type: 'helpHint';
1404
- text?: string | undefined;
1405
- } | {
1406
- type: 'shadowOpen';
1407
- shadow: ShadowState;
1408
- } | {
1409
- type: 'shadowClose';
1410
- } | {
1411
- type: 'shadowUpdate';
1412
- shadow: ShadowState;
1413
- } | {
1414
- type: 'shadowHint';
1415
- text?: string | undefined;
1416
- } | {
1417
- type: 'authOpen';
1418
- view?: Extract<AuthPanelView, 'list' | 'oauth'> | undefined;
1419
- providers?: AuthProviderRow[] | undefined;
1420
- presets?: AuthLocalPresetRow[] | undefined;
1421
- } | {
1422
- type: 'authClose';
1423
- } | {
1424
- type: 'authProviders';
1425
- providers: AuthProviderRow[];
1426
- } | {
1427
- type: 'authCatalog';
1428
- catalog: AuthCatalogRow[];
1429
- } | {
1430
- type: 'authView';
1431
- view: AuthPanelView;
1432
- providerId?: string | undefined;
1433
- } | {
1434
- type: 'authMove';
1435
- delta: number;
1436
- } | {
1437
- type: 'authBusy';
1438
- busy: boolean;
1439
- } | {
1440
- type: 'authHint';
1441
- text?: string | undefined;
1442
- } | {
1443
- type: 'authFilter';
1444
- filter: string;
1445
- } | {
1446
- type: 'authFlowStart';
1447
- title: string;
1448
- } | {
1449
- type: 'authFlowLog';
1450
- line: string;
1451
- } | {
1452
- type: 'authFlowDone';
1453
- ok: boolean;
1454
- message?: string | undefined;
1455
- } | {
1456
- type: 'authPromptStart';
1457
- label: string;
1458
- masked: boolean;
1459
- } | {
1460
- type: 'authPromptChange';
1461
- draft: string;
1462
- } | {
1463
- type: 'authPromptEnd';
1464
- } | {
1465
- type: 'authConfirmStart';
1466
- question: string;
1467
- action: AuthConfirmAction;
1468
- } | {
1469
- type: 'authConfirmEnd';
1470
- } | {
1471
- type: 'projectPickerOpen';
1472
- items: ProjectPickerItem[];
1473
- } | {
1474
- type: 'projectPickerClose';
1475
- } | {
1476
- type: 'projectPickerMove';
1477
- delta: number;
1478
- } | {
1479
- type: 'projectPickerFilter';
1480
- filter: string;
1481
- } | {
1482
- type: 'projectPickerHint';
1483
- text?: string | undefined;
1484
- } | {
1485
- type: 'fKeyPickerOpen';
1486
- } | {
1487
- type: 'fKeyPickerClose';
1488
- } | {
1489
- type: 'fKeyPickerMove';
1490
- delta: number;
1491
- } | {
1492
- type: 'historyPush';
1493
- text: string;
1494
- } | {
1495
- type: 'historyUp';
1496
- } | {
1497
- type: 'historyDown';
1498
- } | {
1499
- type: 'setInputHistory';
1500
- entries: string[];
1501
- } | {
1502
- type: 'clearInputHistory';
1503
- } | {
1504
- type: 'confirmOpen';
1505
- info: State['confirmQueue'][0];
1506
- } | {
1507
- type: 'confirmClose';
1508
- } | {
1509
- type: 'confirmClearAll';
1510
- } | {
1511
- type: 'shellCommandWarningOpen';
1512
- info: NonNullable<State['shellCommandWarning']>;
1513
- } | {
1514
- type: 'shellCommandWarningClose';
1515
- } | {
1516
- type: 'enhanceOpen';
1517
- info: NonNullable<State['enhance']>;
1518
- } | {
1519
- type: 'enhanceClose';
1520
- } | {
1521
- type: 'enhanceSet';
1522
- enabled: boolean;
1523
- } | {
1524
- type: 'enhanceBusy';
1525
- on: boolean;
1526
- } | {
1527
- type: 'refineFailureOpen';
1528
- info: NonNullable<State['refineFailure']>;
1529
- } | {
1530
- type: 'refineFailureClose';
1531
- } | {
1532
- type: 'continueConfirmOpen';
1533
- info: NonNullable<State['continueConfirm']>;
1534
- } | {
1535
- type: 'continueConfirmClose';
1536
- } | {
1537
- type: 'clearConfirmOpen';
1538
- info: NonNullable<State['clearConfirm']>;
1539
- } | {
1540
- type: 'clearConfirmSetValue';
1541
- value: string;
1542
- } | {
1543
- type: 'clearConfirmClose';
1544
- } | {
1545
- type: 'exitConfirmOpen';
1546
- info: NonNullable<State['exitConfirm']>;
1547
- } | {
1548
- type: 'exitConfirmClose';
1549
- } | {
1550
- type: 'slashConfirmOpen';
1551
- info: NonNullable<State['slashConfirm']>;
1552
- } | {
1553
- type: 'slashConfirmClose';
1554
- }
1555
- /**
1556
- * Open the ESC-interrupt confirmation dialog with a context snapshot.
1557
- * Fired when Esc is pressed mid-iteration and `confirmExit` is enabled.
1558
- * The snapshot is replayed into `steerStart` on confirmation so the
1559
- * STEERING preamble can describe the interrupted state to the LLM.
1560
- */
1561
- | {
1562
- type: 'escConfirmOpen';
1563
- snapshot: NonNullable<State['steerSnapshot']>;
1564
- }
1565
- /** Dismiss the ESC-interrupt confirmation (user cancelled). */
1566
- | {
1567
- type: 'escConfirmClose';
1568
- }
1569
- /** Open the mid-run send-mode picker with the resolved message + resolver. */
1570
- | {
1571
- type: 'sendModePickerOpen';
1572
- info: NonNullable<State['sendModePicker']>;
1573
- }
1574
- /** Move the send-mode highlight (wraps). */
1575
- | {
1576
- type: 'sendModePickerMove';
1577
- delta: number;
1578
- }
1579
- /** Close the send-mode picker. */
1580
- | {
1581
- type: 'sendModePickerClose';
1582
- } | {
1583
- type: 'resetContextChip';
1584
- } | {
1585
- type: 'fleetSeed';
1586
- entries: FleetEntry[];
1587
- cost: number;
1588
- } | {
1589
- type: 'fleetSpawn';
1590
- id: string;
1591
- name?: string | undefined;
1592
- provider?: string | undefined;
1593
- model?: string | undefined;
1594
- transcriptPath?: string | undefined;
1595
- } | {
1596
- type: 'fleetStart';
1597
- id: string;
1598
- taskId?: string | undefined;
1599
- } | {
1600
- type: 'fleetDelta';
1601
- id: string;
1602
- text: string;
1603
- } | {
1604
- type: 'fleetMessage';
1605
- id: string;
1606
- text: string;
1607
- } | {
1608
- type: 'fleetTool';
1609
- id: string;
1610
- name?: string | undefined;
1611
- ok?: boolean | undefined;
1612
- durationMs?: number | undefined;
1613
- outputBytes?: number | undefined;
1614
- outputLines?: number | undefined;
1615
- }
1616
- /** tool.started: pin the current tool name for status display. */
1617
- | {
1618
- type: 'fleetToolStart';
1619
- id: string;
1620
- name: string;
1621
- }
1622
- /** tool.executed: clear the current tool (paired with fleetTool). */
1623
- | {
1624
- type: 'fleetToolEnd';
1625
- id: string;
1626
- } | {
1627
- type: 'fleetUsage';
1628
- id: string;
1629
- input: number;
1630
- output: number;
1631
- cacheRead: number;
1632
- cacheWrite: number;
1633
- } | {
1634
- type: 'fleetDone';
1635
- id: string;
1636
- status: FleetEntry['status'];
1637
- iterations: number;
1638
- toolCalls: number;
1639
- /** Human-readable failure reason, e.g. "provider_auth", "rate_limit", "timeout". */
1640
- failureReason?: string | undefined;
1641
- } | {
1642
- type: 'fleetRemove';
1643
- id: string;
1644
- } | {
1645
- type: 'fleetBudgetWarning';
1646
- id: string;
1647
- kind: string;
1648
- used: number;
1649
- limit: number;
1650
- } | {
1651
- type: 'fleetBudgetExtended';
1652
- id: string;
1653
- totalExtensions: number;
1654
- } | {
1655
- type: 'fleetCtxPct';
1656
- id: string;
1657
- load: number;
1658
- tokens: number;
1659
- maxContext: number;
1660
- /** Estimated USD cost of the context tokens (optional — computed when pricing known). */
1661
- ctxCost?: number | undefined;
1662
- } | {
1663
- type: 'fleetCost';
1664
- cost: number;
1665
- input?: number | undefined;
1666
- output?: number | undefined;
1667
- /** Per-subagent usage keyed by subagent id (from the director snapshot). */
1668
- perAgent?: Record<string, {
1669
- cost: number;
1670
- }>;
1671
- }
1672
- /** Runtime concurrency ceiling change from CLI /fleet concurrency <n>. */
1673
- | {
1674
- type: 'fleetConcurrency';
1675
- n: number;
1676
- } | {
1677
- type: 'leaderIterStart';
1678
- } | {
1679
- type: 'leaderIterEnd';
1680
- } | {
1681
- type: 'leaderToolStart';
1682
- name: string;
1683
- } | {
1684
- type: 'leaderToolEnd';
1685
- name: string;
1686
- ok?: boolean | undefined;
1687
- durationMs?: number | undefined;
1688
- } | {
1689
- type: 'leaderCtxPct';
1690
- load: number;
1691
- tokens: number;
1692
- maxContext: number;
1693
- } | {
1694
- type: 'setFleetChat';
1695
- mode: FleetChatVerbosity;
1696
- } | {
1697
- type: 'toggleMonitor';
1698
- } | {
1699
- type: 'toggleAgentsMonitor';
1700
- } | {
1701
- type: 'toggleHelp';
1702
- } | {
1703
- type: 'toggleTodosMonitor';
1704
- } | {
1705
- type: 'toggleQueuePanel';
1706
- } | {
1707
- type: 'checkpointReceived';
1708
- cp: State['checkpoints'][0];
1709
- } | {
1710
- type: 'rewindOverlayOpen';
1711
- } | {
1712
- type: 'rewindOverlayClose';
1713
- } | {
1714
- type: 'rewindOverlayMove';
1715
- delta: number;
1716
- } | {
1717
- type: 'sessionRewound';
1718
- toPromptIndex: number;
1719
- } | {
1720
- type: 'eternalStage';
1721
- stage: AutonomyStage;
1722
- } | {
1723
- type: 'goalSummary';
1724
- summary: GoalSummary;
1725
- } | {
1726
- type: 'goalRunInit';
1727
- title: string;
1728
- } | {
1729
- type: 'goalRunPhaseUpdate';
1730
- phaseId: string;
1731
- name: string;
1732
- status: string;
1733
- completedTasks: number;
1734
- totalTasks: number;
1735
- startedAt?: number | undefined;
1736
- } | {
1737
- type: 'goalRunRunningPhases';
1738
- phaseIds: string[];
1739
- } | {
1740
- type: 'goalRunElapsed';
1741
- ms: number;
1742
- } | {
1743
- type: 'goalRunTaskActive';
1744
- phaseId: string;
1745
- taskId: string;
1746
- title: string;
1747
- agent?: string | undefined;
1748
- /** True when the task starts, false when it completes/fails. */
1749
- active: boolean;
1750
- } | {
1751
- type: 'goalRunMonitorToggle';
1752
- } | {
1753
- type: 'goalRunReset';
1754
- } | {
1755
- type: 'sddBoardSnapshot';
1756
- snapshot: SddBoardSnapshot;
1757
- } | {
1758
- type: 'toggleSddBoardMonitor';
1759
- } | {
1760
- type: 'sddBoardFocusNext';
1761
- } | {
1762
- type: 'sddBoardFocusPrev';
1763
- } | {
1764
- type: 'worktreeUpsert';
1765
- handleId: string;
1766
- row: Partial<WorktreeRow & {
1767
- baseBranch?: string | undefined;
1768
- }>;
1769
- baseBranch?: string | undefined;
1770
- } | {
1771
- type: 'worktreeRemove';
1772
- handleId: string;
1773
- } | {
1774
- type: 'toggleWorktreeMonitor';
1775
- }
1776
- /** ScrollableHistory reports whether the viewport is scrolled up. */
1777
- | {
1778
- type: 'setHistoryScrolled';
1779
- scrolled: boolean;
1780
- }
1781
- /** Report the computed viewport height. */
1782
- | {
1783
- type: 'setViewportRows';
1784
- rows: number;
1785
- }
1786
- /**
1787
- * Fold a batch of fleet/display actions through the reducer in ONE pass so
1788
- * a 150ms burst of subagent events produces a single React render instead
1789
- * of one per event. Order-preserving; only high-frequency display events
1790
- * are batched (correctness-sensitive events stay immediate).
1791
- */
1792
- | {
1793
- type: 'fleetBatch';
1794
- actions: Action[];
1795
- }
1796
- /** BugHunter emitted a bug.found event on the FleetBus. */
1797
- | {
1798
- type: 'collabBugFound';
1799
- sessionId: string;
1800
- bugId: string;
1801
- severity: string;
1802
- description: string;
1803
- }
1804
- /** RefactorPlanner emitted a refactor.plan event on the FleetBus. */
1805
- | {
1806
- type: 'collabPlanEmitted';
1807
- sessionId: string;
1808
- planId: string;
1809
- riskScore: string;
1810
- phaseCount: number;
1811
- }
1812
- /** Critic emitted a critic.evaluation event on the FleetBus. */
1813
- | {
1814
- type: 'collabEvalComplete';
1815
- sessionId: string;
1816
- evalId: string;
1817
- verdict: string;
1818
- score: number;
1819
- }
1820
- /** Collab session completed — overall verdict is available. */
1821
- | {
1822
- type: 'collabSessionDone';
1823
- sessionId: string;
1824
- verdict: 'approve' | 'needs_revision' | 'reject';
1825
- }
1826
- /** A collab subagent (bug-hunter / refactor-planner / critic) was spawned. */
1827
- | {
1828
- type: 'collabSubagentSpawned';
1829
- subagentId: string;
1830
- role: string;
1831
- }
1832
- /** Toggle the process list overlay (F8). */
1833
- | {
1834
- type: 'toggleProcessList';
1835
- }
1836
- /** Toggle the cron jobs monitor. */
1837
- | {
1838
- type: 'toggleCronMonitor';
1839
- }
1840
- /** Toggle the audit (side effects) panel. */
1841
- | {
1842
- type: 'toggleAuditPanel';
1843
- }
1844
- /** Toggle the plan panel (F5). */
1845
- | {
1846
- type: 'togglePlanPanel';
1847
- }
1848
- /** Close every open panel/monitor/overlay at once. */
1849
- | {
1850
- type: 'closeAllPanels';
1851
- } | {
1852
- type: 'toggleKanbanPanel';
1853
- } | {
1854
- type: 'toggleGoalPanel';
1855
- } | {
1856
- type: 'toggleGoalKanbanPanel';
1857
- } | {
1858
- type: 'toggleContextPanel';
1859
- } | {
1860
- type: 'toggleSessionsPanel';
1861
- } | {
1862
- type: 'sessionsPanelSet';
1863
- sessions: LiveSessionEntry[];
1864
- } | {
1865
- type: 'sessionsPanelMove';
1866
- delta: number;
1867
- } | {
1868
- type: 'sessionsPanelBusy';
1869
- on: boolean;
1870
- } | {
1871
- type: 'sessionResumeConfirmSet';
1872
- sessionId: string;
1873
- sessionName: string;
1874
- } | {
1875
- type: 'sessionResumeConfirmClear';
1876
- }
1877
- /** Push throttled debug-stream telemetry from the provider's chunk callback. */
1878
- | {
1879
- type: 'debugStreamStats';
1880
- chunkCount: number;
1881
- lastChunkSize: number;
1882
- lastDeltaMs: number;
1883
- totalBytes: number;
1884
- lastChunkAt: string;
1885
- }
1886
- /** Clear debug-stream stats (fired on stream reset / idle). */
1887
- | {
1888
- type: 'debugStreamStatsClear';
1889
- }
1890
- /** Auto-proceed countdown tick. Upserts the countdown; 0 clears it. */
1891
- | {
1892
- type: 'countdownTick';
1893
- remainingSeconds: number;
1894
- }
1895
- /** Auto-proceed countdown ended (completed or aborted). */
1896
- | {
1897
- type: 'countdownEnded';
1898
- }
1899
- /** Coordinator emitted a live event. */
1900
- | {
1901
- type: 'coordinatorEvent';
1902
- event: {
1903
- type: string;
1904
- goalId?: string | undefined;
1905
- taskId?: string | undefined;
1906
- knowledgeId?: string | undefined;
1907
- title?: string | undefined;
1908
- text?: string | undefined;
1909
- participants?: string[] | undefined;
1910
- };
1911
- }
1912
- /** Toggle the coordinator monitor overlay. */
1913
- | {
1914
- type: 'toggleCoordinatorMonitor';
1915
- };
1916
785
  //# sourceMappingURL=app-state.d.ts.map