@wrongstack/tui 0.284.1 → 0.285.0

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 (239) hide show
  1. package/dist/app-initial-state.d.ts +26 -0
  2. package/dist/app-initial-state.d.ts.map +1 -0
  3. package/dist/app-reducer.d.ts +5 -0
  4. package/dist/app-reducer.d.ts.map +1 -0
  5. package/dist/app-state.d.ts +1801 -0
  6. package/dist/app-state.d.ts.map +1 -0
  7. package/dist/app.d.ts +579 -0
  8. package/dist/app.d.ts.map +1 -0
  9. package/dist/clipboard.d.ts +2 -0
  10. package/dist/clipboard.d.ts.map +1 -0
  11. package/dist/components/agents-monitor.d.ts +49 -0
  12. package/dist/components/agents-monitor.d.ts.map +1 -0
  13. package/dist/components/animation-style.d.ts +51 -0
  14. package/dist/components/animation-style.d.ts.map +1 -0
  15. package/dist/components/audit-panel.d.ts +9 -0
  16. package/dist/components/audit-panel.d.ts.map +1 -0
  17. package/dist/components/auth-panel-model.d.ts +150 -0
  18. package/dist/components/auth-panel-model.d.ts.map +1 -0
  19. package/dist/components/auth-panel.d.ts +8 -0
  20. package/dist/components/auth-panel.d.ts.map +1 -0
  21. package/dist/components/autonomy-picker.d.ts +15 -0
  22. package/dist/components/autonomy-picker.d.ts.map +1 -0
  23. package/dist/components/brain-decision-prompt.d.ts +28 -0
  24. package/dist/components/brain-decision-prompt.d.ts.map +1 -0
  25. package/dist/components/brain-panel.d.ts +16 -0
  26. package/dist/components/brain-panel.d.ts.map +1 -0
  27. package/dist/components/checkpoint-timeline.d.ts +19 -0
  28. package/dist/components/checkpoint-timeline.d.ts.map +1 -0
  29. package/dist/components/confirm-prompt.d.ts +26 -0
  30. package/dist/components/confirm-prompt.d.ts.map +1 -0
  31. package/dist/components/continue-confirm-panel.d.ts +47 -0
  32. package/dist/components/continue-confirm-panel.d.ts.map +1 -0
  33. package/dist/components/coordinator-panel.d.ts +11 -0
  34. package/dist/components/coordinator-panel.d.ts.map +1 -0
  35. package/dist/components/design-picker.d.ts +14 -0
  36. package/dist/components/design-picker.d.ts.map +1 -0
  37. package/dist/components/enhance-panel.d.ts +36 -0
  38. package/dist/components/enhance-panel.d.ts.map +1 -0
  39. package/dist/components/esc-confirm-prompt.d.ts +17 -0
  40. package/dist/components/esc-confirm-prompt.d.ts.map +1 -0
  41. package/dist/components/f-key-picker.d.ts +13 -0
  42. package/dist/components/f-key-picker.d.ts.map +1 -0
  43. package/dist/components/file-picker.d.ts +8 -0
  44. package/dist/components/file-picker.d.ts.map +1 -0
  45. package/dist/components/fleet-monitor.d.ts +60 -0
  46. package/dist/components/fleet-monitor.d.ts.map +1 -0
  47. package/dist/components/fleet-panel.d.ts +69 -0
  48. package/dist/components/fleet-panel.d.ts.map +1 -0
  49. package/dist/components/goal-panel.d.ts +17 -0
  50. package/dist/components/goal-panel.d.ts.map +1 -0
  51. package/dist/components/help-overlay.d.ts +27 -0
  52. package/dist/components/help-overlay.d.ts.map +1 -0
  53. package/dist/components/help-panel.d.ts +16 -0
  54. package/dist/components/help-panel.d.ts.map +1 -0
  55. package/dist/components/history/assistant.d.ts +61 -0
  56. package/dist/components/history/assistant.d.ts.map +1 -0
  57. package/dist/components/history/banner.d.ts +13 -0
  58. package/dist/components/history/banner.d.ts.map +1 -0
  59. package/dist/components/history/code-block.d.ts +217 -0
  60. package/dist/components/history/code-block.d.ts.map +1 -0
  61. package/dist/components/history/entry.d.ts +19 -0
  62. package/dist/components/history/entry.d.ts.map +1 -0
  63. package/dist/components/history/index.d.ts +21 -0
  64. package/dist/components/history/index.d.ts.map +1 -0
  65. package/dist/components/history/replay.d.ts +44 -0
  66. package/dist/components/history/replay.d.ts.map +1 -0
  67. package/dist/components/history/types.d.ts +146 -0
  68. package/dist/components/history/types.d.ts.map +1 -0
  69. package/dist/components/history/utils.d.ts +65 -0
  70. package/dist/components/history/utils.d.ts.map +1 -0
  71. package/dist/components/history.d.ts +2 -0
  72. package/dist/components/history.d.ts.map +1 -0
  73. package/dist/components/input.d.ts +57 -0
  74. package/dist/components/input.d.ts.map +1 -0
  75. package/dist/components/kanban-panel.d.ts +7 -0
  76. package/dist/components/kanban-panel.d.ts.map +1 -0
  77. package/dist/components/key-hint-bar.d.ts +31 -0
  78. package/dist/components/key-hint-bar.d.ts.map +1 -0
  79. package/dist/components/live-activity-strip.d.ts +39 -0
  80. package/dist/components/live-activity-strip.d.ts.map +1 -0
  81. package/dist/components/mailbox-panel.d.ts +40 -0
  82. package/dist/components/mailbox-panel.d.ts.map +1 -0
  83. package/dist/components/mcp-picker.d.ts +18 -0
  84. package/dist/components/mcp-picker.d.ts.map +1 -0
  85. package/dist/components/mode-picker.d.ts +17 -0
  86. package/dist/components/mode-picker.d.ts.map +1 -0
  87. package/dist/components/model-picker.d.ts +32 -0
  88. package/dist/components/model-picker.d.ts.map +1 -0
  89. package/dist/components/phase-monitor.d.ts +33 -0
  90. package/dist/components/phase-monitor.d.ts.map +1 -0
  91. package/dist/components/phase-panel.d.ts +22 -0
  92. package/dist/components/phase-panel.d.ts.map +1 -0
  93. package/dist/components/plan-panel.d.ts +17 -0
  94. package/dist/components/plan-panel.d.ts.map +1 -0
  95. package/dist/components/plugin-picker.d.ts +22 -0
  96. package/dist/components/plugin-picker.d.ts.map +1 -0
  97. package/dist/components/process-list.d.ts +14 -0
  98. package/dist/components/process-list.d.ts.map +1 -0
  99. package/dist/components/project-picker.d.ts +21 -0
  100. package/dist/components/project-picker.d.ts.map +1 -0
  101. package/dist/components/prompt-picker.d.ts +31 -0
  102. package/dist/components/prompt-picker.d.ts.map +1 -0
  103. package/dist/components/provider-colors.d.ts +40 -0
  104. package/dist/components/provider-colors.d.ts.map +1 -0
  105. package/dist/components/queue-panel.d.ts +16 -0
  106. package/dist/components/queue-panel.d.ts.map +1 -0
  107. package/dist/components/resume-picker.d.ts +16 -0
  108. package/dist/components/resume-picker.d.ts.map +1 -0
  109. package/dist/components/scrollable-history.d.ts +60 -0
  110. package/dist/components/scrollable-history.d.ts.map +1 -0
  111. package/dist/components/sdd-board-overlay.d.ts +15 -0
  112. package/dist/components/sdd-board-overlay.d.ts.map +1 -0
  113. package/dist/components/send-mode-picker.d.ts +64 -0
  114. package/dist/components/send-mode-picker.d.ts.map +1 -0
  115. package/dist/components/sessions-panel.d.ts +46 -0
  116. package/dist/components/sessions-panel.d.ts.map +1 -0
  117. package/dist/components/settings-picker.d.ts +371 -0
  118. package/dist/components/settings-picker.d.ts.map +1 -0
  119. package/dist/components/shadow-panel.d.ts +13 -0
  120. package/dist/components/shadow-panel.d.ts.map +1 -0
  121. package/dist/components/shell-command-warning.d.ts +9 -0
  122. package/dist/components/shell-command-warning.d.ts.map +1 -0
  123. package/dist/components/slash-menu.d.ts +9 -0
  124. package/dist/components/slash-menu.d.ts.map +1 -0
  125. package/dist/components/status-bar.d.ts +378 -0
  126. package/dist/components/status-bar.d.ts.map +1 -0
  127. package/dist/components/statusline-picker.d.ts +55 -0
  128. package/dist/components/statusline-picker.d.ts.map +1 -0
  129. package/dist/components/suggestions.d.ts +9 -0
  130. package/dist/components/suggestions.d.ts.map +1 -0
  131. package/dist/components/todos-monitor.d.ts +13 -0
  132. package/dist/components/todos-monitor.d.ts.map +1 -0
  133. package/dist/components/tools-picker.d.ts +20 -0
  134. package/dist/components/tools-picker.d.ts.map +1 -0
  135. package/dist/components/worktree-monitor.d.ts +23 -0
  136. package/dist/components/worktree-monitor.d.ts.map +1 -0
  137. package/dist/components/worktree-panel.d.ts +21 -0
  138. package/dist/components/worktree-panel.d.ts.map +1 -0
  139. package/dist/f-key-panels.d.ts +46 -0
  140. package/dist/f-key-panels.d.ts.map +1 -0
  141. package/dist/file-search.d.ts +3 -0
  142. package/dist/file-search.d.ts.map +1 -0
  143. package/dist/fn-keys.d.ts +20 -0
  144. package/dist/fn-keys.d.ts.map +1 -0
  145. package/dist/git-info.d.ts +20 -0
  146. package/dist/git-info.d.ts.map +1 -0
  147. package/dist/heap-watchdog.d.ts +41 -0
  148. package/dist/heap-watchdog.d.ts.map +1 -0
  149. package/dist/highlight.d.ts +30 -0
  150. package/dist/highlight.d.ts.map +1 -0
  151. package/dist/hit-test.d.ts +75 -0
  152. package/dist/hit-test.d.ts.map +1 -0
  153. package/dist/hooks/use-auth-panel.d.ts +38 -0
  154. package/dist/hooks/use-auth-panel.d.ts.map +1 -0
  155. package/dist/hooks/use-autonomous-coordinator.d.ts +21 -0
  156. package/dist/hooks/use-autonomous-coordinator.d.ts.map +1 -0
  157. package/dist/hooks/use-brain-events.d.ts +7 -0
  158. package/dist/hooks/use-brain-events.d.ts.map +1 -0
  159. package/dist/hooks/use-director-fleet-bridge.d.ts +17 -0
  160. package/dist/hooks/use-director-fleet-bridge.d.ts.map +1 -0
  161. package/dist/hooks/use-file-search.d.ts +42 -0
  162. package/dist/hooks/use-file-search.d.ts.map +1 -0
  163. package/dist/hooks/use-input-history-persistence.d.ts +14 -0
  164. package/dist/hooks/use-input-history-persistence.d.ts.map +1 -0
  165. package/dist/hooks/use-mode-picker.d.ts +15 -0
  166. package/dist/hooks/use-mode-picker.d.ts.map +1 -0
  167. package/dist/hooks/use-paste-handling.d.ts +30 -0
  168. package/dist/hooks/use-paste-handling.d.ts.map +1 -0
  169. package/dist/hooks/use-picker-keys.d.ts +58 -0
  170. package/dist/hooks/use-picker-keys.d.ts.map +1 -0
  171. package/dist/hooks/use-prompt-picker.d.ts +28 -0
  172. package/dist/hooks/use-prompt-picker.d.ts.map +1 -0
  173. package/dist/hooks/use-queue-manager.d.ts +26 -0
  174. package/dist/hooks/use-queue-manager.d.ts.map +1 -0
  175. package/dist/hooks/use-statusline-hidden-sync.d.ts +14 -0
  176. package/dist/hooks/use-statusline-hidden-sync.d.ts.map +1 -0
  177. package/dist/hooks/use-statusline-state.d.ts +44 -0
  178. package/dist/hooks/use-statusline-state.d.ts.map +1 -0
  179. package/dist/hooks/use-stream-chip-expiration.d.ts +25 -0
  180. package/dist/hooks/use-stream-chip-expiration.d.ts.map +1 -0
  181. package/dist/hooks/use-subagent-events.d.ts +8 -0
  182. package/dist/hooks/use-subagent-events.d.ts.map +1 -0
  183. package/dist/hooks/use-token-counter-refresh.d.ts +30 -0
  184. package/dist/hooks/use-token-counter-refresh.d.ts.map +1 -0
  185. package/dist/hooks/use-tui-controllers.d.ts +31 -0
  186. package/dist/hooks/use-tui-controllers.d.ts.map +1 -0
  187. package/dist/hooks/use-tui-event-bridge.d.ts +29 -0
  188. package/dist/hooks/use-tui-event-bridge.d.ts.map +1 -0
  189. package/dist/hooks/use-working-dir-chip.d.ts +8 -0
  190. package/dist/hooks/use-working-dir-chip.d.ts.map +1 -0
  191. package/dist/index.d.ts +11 -910
  192. package/dist/index.d.ts.map +1 -0
  193. package/dist/index.js +2633 -2188
  194. package/dist/index.js.map +7 -1
  195. package/dist/ink.d.ts +20 -0
  196. package/dist/ink.d.ts.map +1 -0
  197. package/dist/input-editing.d.ts +76 -0
  198. package/dist/input-editing.d.ts.map +1 -0
  199. package/dist/input-tokens.d.ts +65 -0
  200. package/dist/input-tokens.d.ts.map +1 -0
  201. package/dist/kill-slash.d.ts +3 -0
  202. package/dist/kill-slash.d.ts.map +1 -0
  203. package/dist/markdown-table.d.ts +45 -0
  204. package/dist/markdown-table.d.ts.map +1 -0
  205. package/dist/markdown.d.ts +47 -0
  206. package/dist/markdown.d.ts.map +1 -0
  207. package/dist/mouse.d.ts +73 -0
  208. package/dist/mouse.d.ts.map +1 -0
  209. package/dist/on-panel-open.d.ts +62 -0
  210. package/dist/on-panel-open.d.ts.map +1 -0
  211. package/dist/paste-accumulator.d.ts +19 -0
  212. package/dist/paste-accumulator.d.ts.map +1 -0
  213. package/dist/ps-slash.d.ts +7 -0
  214. package/dist/ps-slash.d.ts.map +1 -0
  215. package/dist/queue-slash.d.ts +24 -0
  216. package/dist/queue-slash.d.ts.map +1 -0
  217. package/dist/reducers/fleet.d.ts +16 -0
  218. package/dist/reducers/fleet.d.ts.map +1 -0
  219. package/dist/reducers/helpers.d.ts +38 -0
  220. package/dist/reducers/helpers.d.ts.map +1 -0
  221. package/dist/rehydrate-history.d.ts +40 -0
  222. package/dist/rehydrate-history.d.ts.map +1 -0
  223. package/dist/run-tui.d.ts +507 -0
  224. package/dist/run-tui.d.ts.map +1 -0
  225. package/dist/slash-command-search.d.ts +10 -0
  226. package/dist/slash-command-search.d.ts.map +1 -0
  227. package/dist/steering-preamble.d.ts +25 -0
  228. package/dist/steering-preamble.d.ts.map +1 -0
  229. package/dist/submit-history.d.ts +17 -0
  230. package/dist/submit-history.d.ts.map +1 -0
  231. package/dist/terminal-title.d.ts +12 -0
  232. package/dist/terminal-title.d.ts.map +1 -0
  233. package/dist/theme.d.ts +91 -0
  234. package/dist/theme.d.ts.map +1 -0
  235. package/dist/thinking-word.d.ts +26 -0
  236. package/dist/thinking-word.d.ts.map +1 -0
  237. package/dist/tool-glyph.d.ts +18 -0
  238. package/dist/tool-glyph.d.ts.map +1 -0
  239. package/package.json +8 -9
@@ -0,0 +1,378 @@
1
+ import type { EventBus, TokenCounter, AutonomyStage, TokenSavingTier } from '@wrongstack/core';
2
+ import type React from 'react';
3
+ import type { ChipMeta, StatuslineItem } from './statusline-picker.js';
4
+ import type { StatuslineMode } from './settings-picker.js';
5
+ import type { GitInfo } from '../git-info.js';
6
+ import { type AnimationStyle } from './animation-style.js';
7
+ /**
8
+ * Head-truncate a chip's free-text payload (branch, path, project name) with a
9
+ * trailing ellipsis so one long value can't blow out the line width. Mirrors
10
+ * the inline pattern the goal/mailbox chips already use.
11
+ */
12
+ export declare function truncateChip(text: string, max: number): string;
13
+ /**
14
+ * Recover the visible plain text of a rendered chip by walking its React
15
+ * element tree (string/number leaves only). Used purely to estimate display
16
+ * width for overflow budgeting — deriving width from the SAME node we render
17
+ * means there's no parallel text to drift out of sync.
18
+ */
19
+ export declare function nodeText(node: React.ReactNode): string;
20
+ /**
21
+ * Decide how many leading chips fit within `budget` columns. Trailing (lowest
22
+ * priority) chips are dropped first, which keeps the high-value leading chips
23
+ * — and the columns the mouse hit-test spans assume — stable. The first chip is
24
+ * always kept even if it alone exceeds the budget (better one clipped chip than
25
+ * an empty line). Pure + exported for testing.
26
+ */
27
+ export declare function planChipFit(widths: number[], budget: number, sepCost?: number): number;
28
+ /** Minimum terminal width before we switch to ultra-compact mode. Exported so
29
+ * the TUI mouse hit-test can skip the model-chip click in compact mode (where
30
+ * line 1 uses a different layout than `statusBarModelSpan` assumes). */
31
+ export declare const COMPACT_THRESHOLD = 50;
32
+ export interface TokenDisplayTotals {
33
+ input: number;
34
+ output: number;
35
+ }
36
+ export declare function tokenDisplayTotals(usage: {
37
+ input: number;
38
+ output: number;
39
+ cacheRead?: number | undefined;
40
+ cacheWrite?: number | undefined;
41
+ } | undefined, currentRequest: {
42
+ input: number;
43
+ cacheRead: number;
44
+ cacheWrite?: number | undefined;
45
+ } | undefined): TokenDisplayTotals;
46
+ export declare function hasTokenDisplay(tokens: TokenDisplayTotals): boolean;
47
+ export interface TodoCounts {
48
+ pending: number;
49
+ inProgress: number;
50
+ completed: number;
51
+ }
52
+ export interface PlanCounts {
53
+ open: number;
54
+ inProgress: number;
55
+ done: number;
56
+ /** Active storage scope. Shown as a suffix in the plan chip. */
57
+ scope?: 'session' | 'project';
58
+ }
59
+ export interface TaskCounts {
60
+ pending: number;
61
+ inProgress: number;
62
+ completed: number;
63
+ blocked: number;
64
+ failed: number;
65
+ /** Active storage scope. Shown as a suffix in the task chip. */
66
+ scope?: 'session' | 'project';
67
+ }
68
+ /**
69
+ * Fleet activity breakdown surfaced on the work-in-flight line. Derived
70
+ * from `director.status()` in the host app and refreshed alongside the
71
+ * other dynamic chips. Kept optional (and the chip is only rendered
72
+ * when any field is non-zero) so single-agent sessions stay quiet.
73
+ */
74
+ export interface FleetCounts {
75
+ /** Subagents currently mid-task. */
76
+ running: number;
77
+ /** Subagents spawned but idle (no current task). */
78
+ idle: number;
79
+ /** Tasks queued but not yet picked up by a worker. */
80
+ pending: number;
81
+ /** Tasks resolved (success/failure/timeout/stopped). */
82
+ completed: number;
83
+ }
84
+ /**
85
+ * Per-agent detail surfaced on the optional 4th line — one chip per
86
+ * currently-running subagent so the user can see at a glance which
87
+ * agent is doing what, for how long, and how many tools it has called.
88
+ * Truncated to the top N by the host (typically 3-4) to keep the bar
89
+ * from wrapping.
90
+ */
91
+ export interface FleetAgentDetail {
92
+ /** Stable label used by the streaming history (e.g. "AGENT#1 bug-hunter"). */
93
+ label: string;
94
+ /** Ink color name — same palette as the per-agent history prefix. */
95
+ color: string;
96
+ /** Ms since the subagent's first iteration. */
97
+ elapsedMs: number;
98
+ /** Tool calls observed via tool.executed. */
99
+ toolCalls: number;
100
+ /** True when the subagent is actively iterating. */
101
+ running: boolean;
102
+ /** Current/last tool the subagent invoked, shown as its live action. */
103
+ tool?: string | undefined;
104
+ /** Cumulative budget auto-extensions granted — rendered as "⚡×N". */
105
+ extensions?: number | undefined;
106
+ }
107
+ export interface BrainStatusChip {
108
+ state: 'idle' | 'deciding' | 'answered' | 'ask_human' | 'denied';
109
+ source?: string | undefined;
110
+ risk?: 'low' | 'medium' | 'high' | 'critical' | undefined;
111
+ summary?: string | undefined;
112
+ }
113
+ export interface ContextWindow {
114
+ /** Input tokens of the most recent provider request — the de-facto live context size. */
115
+ used: number;
116
+ /** Provider's declared maxContext capability. */
117
+ max: number;
118
+ }
119
+ export interface MailboxStatus {
120
+ /** Number of unread messages for this agent. */
121
+ unread: number;
122
+ /** Number of online agents in the project. */
123
+ onlineAgents: number;
124
+ /** Per-source count of online clients. */
125
+ onlineClients: {
126
+ tui: number;
127
+ webui: number;
128
+ repl: number;
129
+ };
130
+ /** Latest received message subject (if any). Null = no messages yet. */
131
+ lastSubject?: string | null | undefined;
132
+ /** Latest received message sender (if any). */
133
+ lastFrom?: string | null | undefined;
134
+ }
135
+ export interface StatusBarProps {
136
+ model: string;
137
+ /**
138
+ * App version string (e.g. "0.7.0"). When set, renders a compact
139
+ * `WS v0.7.0` chip at the head of line 1 so the running build is always
140
+ * visible, not just in the startup banner.
141
+ */
142
+ version?: string | undefined;
143
+ state: 'idle' | 'running' | 'streaming' | 'aborting';
144
+ /** Single word rendered in the rainbow working-state chip. */
145
+ thinkingWord?: string | undefined;
146
+ /**
147
+ * Animation style for the working/thinking chip. Defaults to `'rainbow'`
148
+ * when omitted so legacy callers stay visually consistent. The special
149
+ * `'cycle'` value rotates through the variant styles every
150
+ * `CYCLE_INTERVAL_SECONDS`. Live-mirrored from the configStore so
151
+ * `/settings → Animation` updates the chip in the active chat.
152
+ */
153
+ thinkingAnimationStyle?: AnimationStyle | 'cycle' | undefined;
154
+ tokenCounter?: TokenCounter | undefined;
155
+ hint?: string | undefined;
156
+ queueCount?: number | undefined;
157
+ yolo?: boolean | undefined;
158
+ /** Session start timestamp (ms). Elapsed time is computed internally on
159
+ * the same interval as the spinner so the display stays live without
160
+ * forcing a full App tree re-render every second. */
161
+ startedAt?: number | undefined;
162
+ todos?: TodoCounts | undefined;
163
+ /**
164
+ * Plan board counts surfaced as a chip on line 2. Distinct from
165
+ * `todos` — plans are higher-level and persist across resume; the
166
+ * chip uses a different glyph (📋) so the user can tell them apart
167
+ * at a glance.
168
+ */
169
+ plan?: PlanCounts | undefined;
170
+ /**
171
+ * Task board counts surfaced as a chip on line 3. Shows structured
172
+ * work items (from the `task` tool) with type/priority/deps.
173
+ * Distinct from `plan` (strategic) and `todos` (tactical).
174
+ */
175
+ tasks?: TaskCounts | undefined;
176
+ /**
177
+ * Per-status fleet breakdown. When provided, takes precedence over
178
+ * `subagentCount` for chip rendering. `subagentCount` is kept for
179
+ * backwards compatibility when callers haven't wired the richer
180
+ * breakdown yet.
181
+ */
182
+ fleet?: FleetCounts | undefined;
183
+ /**
184
+ * Optional per-agent detail row (up to ~4 agents). Renders below the
185
+ * aggregate fleet chip on a dedicated 4th line so the user can see
186
+ * which specific agent is burning time/tools right now without
187
+ * scrolling history.
188
+ */
189
+ fleetAgents?: FleetAgentDetail[] | undefined;
190
+ git?: GitInfo | null | undefined;
191
+ subagentCount?: number | undefined;
192
+ /** Renders the "ctx ████░░ 42%" chip on line 1 when present. */
193
+ context?: ContextWindow | undefined;
194
+ /**
195
+ * Context compaction strategy. When provided alongside `context`, renders
196
+ * the strategy label (e.g. "hybrid", "intelligent", "selective") next to
197
+ * the context chip on line 1.
198
+ */
199
+ contextStrategy?: 'hybrid' | 'intelligent' | 'selective' | undefined;
200
+ /** Live Brain arbiter state, shown as a compact work chip when active/recent. */
201
+ brain?: BrainStatusChip | undefined;
202
+ /**
203
+ * Project / working-folder name. Rendered on line 2 just before the git
204
+ * branch so users running multiple WrongStack windows can tell at a
205
+ * glance which repo each one is pinned to. Usually the basename of
206
+ * `agent.ctx.projectRoot`.
207
+ */
208
+ projectName?: string | undefined;
209
+ /**
210
+ * Working directory relative to the project root. Rendered on line 2
211
+ * as a 📂 chip so the user knows which subdirectory tools will resolve
212
+ * against. Updated live via `ctx.onWorkingDirChanged()`.
213
+ */
214
+ workingDir?: string | undefined;
215
+ /** Autonomy mode chip: 'off' | 'suggest' | 'auto' | 'eternal' | 'eternal-parallel'. */
216
+ autonomy?: 'off' | 'suggest' | 'auto' | 'eternal' | 'eternal-parallel' | undefined;
217
+ /** Number of tracked bash/exec processes from the process registry. */
218
+ processCount?: number | undefined;
219
+ /** Items to hide from the status bar. Canonical set: {@link StatuslineItem}. */
220
+ hiddenItems?: StatuslineItem[] | undefined;
221
+ /** Statusline density. Detailed is the default to preserve the full multi-line display. */
222
+ mode?: StatuslineMode | undefined;
223
+ /** EventBus for subscribing to token.accounted events for real-time cost/token updates. */
224
+ events?: EventBus | undefined;
225
+ /** Active session id used to ignore token events from other same-process sessions. */
226
+ sessionId?: string | undefined;
227
+ /**
228
+ * Live iteration stage from the active autonomy engine. When set, renders
229
+ * a chip like `⏸ decide` or `▶ execute(todo:fix-auth)` next to the
230
+ * autonomy chip on line 2.
231
+ */
232
+ eternalStage?: AutonomyStage | null | undefined;
233
+ /** Active goal summary for startup banner display. */
234
+ goalSummary?: {
235
+ goal: string;
236
+ goalState: 'active' | 'paused' | 'completed' | 'abandoned';
237
+ iterations: number;
238
+ lastTask?: string | undefined;
239
+ lastStatus?: string | undefined;
240
+ } | null;
241
+ /**
242
+ * Seconds remaining in the auto-proceed countdown. null = not counting.
243
+ * Rendered as a chip on line 2 when non-null.
244
+ */
245
+ autoProceedCountdown?: number | null | undefined;
246
+ /** Codebase indexing state — rendered as a chip on line 1 when indexing. */
247
+ indexState?: {
248
+ ready: boolean;
249
+ indexing: boolean;
250
+ currentFile: number;
251
+ totalFiles: number;
252
+ /** Circuit-breaker snapshot — 'open' means indexing is paused after repeated failures. */
253
+ circuit?: {
254
+ state: 'closed' | 'open' | 'half-open';
255
+ cooldownRemainingMs: number;
256
+ };
257
+ };
258
+ /**
259
+ * Live countdown to the process circuit breaker's automatic kill/reset.
260
+ * Rendered as an urgent chip on line 1 ("⚡ kill/reset in Ns") while armed;
261
+ * null/undefined hides it. The host ticks this every second.
262
+ */
263
+ breakerCountdown?: {
264
+ remainingMs: number;
265
+ totalMs: number;
266
+ } | null | undefined;
267
+ /** Active agent mode label with icon (e.g. "🧑‍🏫 teach", "⚡ brief"). Rendered on line 2. */
268
+ modeLabel?: string | undefined;
269
+ /**
270
+ * Live debug-stream telemetry — pushed into the TUI reducer by the
271
+ * throttled callback from stream-debug-state.ts. When non-null, renders
272
+ * a "🐛 stream" chip on line 3 with chunk count, size, delta, and total
273
+ * bytes. Cleared on provider.response (per-iteration stream reset).
274
+ */
275
+ debugStreamStats?: {
276
+ chunkCount: number;
277
+ lastChunkSize: number;
278
+ lastDeltaMs: number;
279
+ totalBytes: number;
280
+ lastChunkAt: string;
281
+ } | null | undefined;
282
+ /**
283
+ * Seconds remaining in the prompt-refinement auto-send countdown.
284
+ * When non-null, replaces the old in-panel timer display with a
285
+ * line-3 chip like `⏳ auto-send in 5s` so the countdown never
286
+ * causes blank entries in the chat scrollback.
287
+ */
288
+ enhanceCountdown?: number | null | undefined;
289
+ /**
290
+ * Seconds remaining in the next-steps auto-submit countdown.
291
+ * When non-null, renders a line-3 chip like `⏳ next step in 3s`
292
+ * that auto-submits the suggested next step when the countdown reaches 0.
293
+ */
294
+ nextStepsAutoSubmitCountdown?: number | null | undefined;
295
+ /**
296
+ * Label of the step that will be auto-submitted (the suggestion text).
297
+ * When provided alongside countdown, renders as `⏳ step text in 3s`.
298
+ */
299
+ nextStepsAutoSubmitLabel?: string | null | undefined;
300
+ /** Number of live sessions across processes (from SessionRegistry). */
301
+ sessionCount?: number | undefined;
302
+ /** Mailbox activity — unread count, online agents, latest message. */
303
+ mailbox?: MailboxStatus | undefined;
304
+ /**
305
+ * Token-saving tier. When set and not `'off'`, renders a `💾 <tier>` chip
306
+ * on line 2 to remind the user that non-essential tools are omitted and
307
+ * system prompt sections are trimmed at that compactness level.
308
+ */
309
+ tokenSavingMode?: TokenSavingTier | undefined;
310
+ /**
311
+ * Number of registered tools. Rendered as a chip on line 2 so the user
312
+ * can see how many tools are available (lower count in token-saving mode).
313
+ */
314
+ toolCount?: number | undefined;
315
+ /** Visible stream chips (brain, mailbox, enhance, debug_stream) for expiration tracking. */
316
+ visibleChips?: ChipMeta[] | undefined;
317
+ /**
318
+ * Number of structured side effects (bash/install/fetch) recorded in the
319
+ * current session. Rendered as a compact "⚠ N" chip on line 2 when > 0.
320
+ * Clicking opens /audit (TUI) — in the REPL it's informational.
321
+ */
322
+ sideEffectCount?: number | undefined;
323
+ }
324
+ /**
325
+ * Two-line status bar. The first line stays compact and shows the
326
+ * runtime essentials (state · model · tokens · cost · queue · running
327
+ * tool). The second line opts in only when there's actually something
328
+ * to show — git branch, elapsed time, todo counts, YOLO marker — so a
329
+ * vanilla session keeps the original single-line footprint.
330
+ */
331
+ export declare function StatusBar({ model, version, state, thinkingWord, thinkingAnimationStyle, tokenCounter, hint, queueCount, yolo, autonomy, startedAt, todos, plan, tasks, fleet, fleetAgents, git, subagentCount, brain, projectName, workingDir, processCount, context, contextStrategy, hiddenItems, mode, events, sessionId, eternalStage, goalSummary, indexState, breakerCountdown, modeLabel, debugStreamStats, enhanceCountdown, nextStepsAutoSubmitCountdown, nextStepsAutoSubmitLabel, autoProceedCountdown, sessionCount, mailbox, tokenSavingMode, toolCount, visibleChips, sideEffectCount, }: StatusBarProps): React.ReactElement;
332
+ /**
333
+ * 0-based column span (offset from the box's left edge, including the left
334
+ * paddingX) of the `{provider}/{model}` chip on status-bar line 1. The TUI
335
+ * mouse handler uses it to make the model chip clickable (→ open model
336
+ * picker). Mirrors the line-1 flex layout: optional `WS v…` chip + `│`, then
337
+ * `● {stateLabel}` + `│`, then the model.
338
+ */
339
+ export declare function statusBarModelSpan(opts: {
340
+ version?: string | undefined;
341
+ state: 'idle' | 'running' | 'streaming' | 'aborting';
342
+ fleetRunning?: number | undefined;
343
+ thinkingWord?: string | undefined;
344
+ model: string;
345
+ }): {
346
+ start: number;
347
+ len: number;
348
+ };
349
+ /**
350
+ * 0-based column span of the `∞ MODE` autonomy chip on status-bar line 2, or
351
+ * null when it isn't shown (autonomy off/unset). When YOLO is on it precedes
352
+ * the autonomy chip (plus a `│` separator), so the span shifts right.
353
+ */
354
+ export declare function statusBarAutonomySpan(opts: {
355
+ yolo?: boolean | undefined;
356
+ autonomy?: 'off' | 'suggest' | 'auto' | 'eternal' | 'eternal-parallel' | undefined;
357
+ }): {
358
+ start: number;
359
+ len: number;
360
+ } | null;
361
+ /**
362
+ * 0-based column span of the `todos ⌛N ☐M ✓K` chip on status-bar line 3.
363
+ * Returns null when no todos are visible. Used by the TUI mouse handler
364
+ * to make the todos chip clickable (→ F5 right panel / F6 overlay).
365
+ * The chip is always at the start of line 3 with only left padding.
366
+ */
367
+ export declare function statusBarTodosSpan(): {
368
+ start: number;
369
+ len: number;
370
+ };
371
+ export declare function stateChip(state: 'idle' | 'running' | 'streaming' | 'aborting', fleetRunning: number, thinkingWord?: string | undefined): {
372
+ label: string;
373
+ color: string;
374
+ };
375
+ export declare function renderProgress(ratio: number, width: number): string;
376
+ export declare function renderMeter(ratio: number, width: number): string;
377
+ export declare function fmtElapsed(ms: number): string;
378
+ //# sourceMappingURL=status-bar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status-bar.d.ts","sourceRoot":"","sources":["../../src/components/status-bar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import type React from 'react';
2
+ /** All possible statusline chip keys. */
3
+ export type StatuslineItem = 'version' | 'state' | 'model' | 'tokens' | 'cache' | 'queue' | 'processes' | 'hint' | 'index' | 'breaker' | 'todos' | 'plan' | 'tasks' | 'fleet' | 'fleet_agents' | 'git' | 'elapsed' | 'context' | 'cost' | 'working_dir' | 'project' | 'yolo' | 'autonomy' | 'eternal_stage' | 'goal' | 'mode' | 'auto_proceed' | 'sessions' | 'tools' | 'token_saving' | 'brain' | 'mailbox' | 'enhance' | 'debug_stream' | 'next_steps';
4
+ /**
5
+ * Metadata for a temporarily-visible chip (one that appeared due to data,
6
+ * not user toggle). Tracked so the chip can auto-expire.
7
+ */
8
+ export interface ChipMeta {
9
+ key: StatuslineItem;
10
+ /** Unix timestamp (ms) when the chip was shown. */
11
+ shownAt: number;
12
+ /**
13
+ * Optional expiration time in minutes. Null/undefined = permanent (only
14
+ * hidden when user toggles it off). Stream chips get a default 5 min.
15
+ */
16
+ expiresIn?: number;
17
+ }
18
+ /** Default expiration for stream-triggered chips (5 minutes). */
19
+ export declare const STREAM_CHIP_EXPIRES_IN_MINUTES = 5;
20
+ /**
21
+ * Returns true if a chip with the given metadata has expired.
22
+ * Chips with no `expiresIn` never expire on their own.
23
+ */
24
+ export declare function isChipExpired(meta: ChipMeta, now?: number): boolean;
25
+ /**
26
+ * Returns a human-readable countdown label for a chip with expiration.
27
+ * Returns null if the chip has no expiration or has already expired.
28
+ */
29
+ export declare function getExpiresInLabel(meta: ChipMeta, now?: number): string | null;
30
+ /**
31
+ * Which TUI status bar line each chip appears on. Used to group chips
32
+ * visually in the picker. MUST mirror the actual render lines in
33
+ * `status-bar.tsx`: line 1 = runtime essentials, line 2 = session context,
34
+ * line 3 = active work, line 4 = mailbox + fleet-agent detail. Exported so
35
+ * the navigation-order test guards against drift instead of duplicating it.
36
+ */
37
+ export declare const ITEM_LINE: Record<StatuslineItem, number>;
38
+ export interface StatuslinePickerProps {
39
+ /** Focused field index. */
40
+ field: number;
41
+ /** Current hidden-items list. */
42
+ hiddenItems: StatuslineItem[];
43
+ /** Temporarily-visible chips with expiration metadata. */
44
+ visibleChips?: ChipMeta[] | undefined;
45
+ /** Optional hint message from the reducer. */
46
+ hint?: string | undefined;
47
+ }
48
+ /** Total number of statusline fields. */
49
+ export declare const STATUSLINE_FIELD_COUNT: number;
50
+ /** Ordered list of statusline items — grouped by display line, then alphabetically within each line for consistent navigation. */
51
+ export declare const STATUSLINE_ITEMS: StatuslineItem[];
52
+ /** Stream-triggered chips — these auto-expire unless the user has toggled them on permanently. */
53
+ export declare const STREAM_CHIP_KEYS: StatuslineItem[];
54
+ export declare function StatuslinePicker({ field, hiddenItems, visibleChips, hint, }: StatuslinePickerProps): React.ReactElement;
55
+ //# sourceMappingURL=statusline-picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statusline-picker.d.ts","sourceRoot":"","sources":["../../src/components/statusline-picker.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,yCAAyC;AACzC,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,OAAO,GACP,OAAO,GACP,QAAQ,GACR,OAAO,GACP,OAAO,GACP,WAAW,GACX,MAAM,GACN,OAAO,GACP,SAAS,GACT,OAAO,GACP,MAAM,GACN,OAAO,GACP,OAAO,GACP,cAAc,GACd,KAAK,GACL,SAAS,GACT,SAAS,GACT,MAAM,GACN,aAAa,GACb,SAAS,GACT,MAAM,GACN,UAAU,GACV,eAAe,GACf,MAAM,GACN,MAAM,GACN,cAAc,GACd,UAAU,GACV,OAAO,GACP,cAAc,GACd,OAAO,GACP,SAAS,GACT,SAAS,GACT,cAAc,GACd,YAAY,CAAC;AAEjB;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,cAAc,CAAC;IACpB,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,iEAAiE;AACjE,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAEhD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,SAAa,GAAG,OAAO,CAIvE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,SAAa,GAAG,MAAM,GAAG,IAAI,CAOjF;AAyCD;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAoCpD,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACpC,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,0DAA0D;IAC1D,YAAY,CAAC,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;IACtC,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AAED,yCAAyC;AACzC,eAAO,MAAM,sBAAsB,QAAgC,CAAC;AAEpE,kIAAkI;AAClI,eAAO,MAAM,gBAAgB,EAAE,cAAc,EAwC5C,CAAC;AAEF,kGAAkG;AAClG,eAAO,MAAM,gBAAgB,EAAE,cAAc,EAAoD,CAAC;AAalG,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,WAAW,EACX,YAAiB,EACjB,IAAI,GACL,EAAE,qBAAqB,GAAG,KAAK,CAAC,YAAY,CAqG5C"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Thin back-compat re-export — the canonical implementation lives in
3
+ * `@wrongstack/tools/next-steps` and is shared by the TUI, CLI, and WebUI.
4
+ *
5
+ * @deprecated import from `@wrongstack/tools/next-steps` directly. This
6
+ * back-compat shim will be removed in the next minor release.
7
+ */
8
+ export { parseNextSteps, stripNextStepsBlock, type ParsedNextStep, type ParseNextStepsResult, } from '@wrongstack/tools/next-steps';
9
+ //# sourceMappingURL=suggestions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggestions.d.ts","sourceRoot":"","sources":["../../src/components/suggestions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,KAAK,cAAc,EACnB,KAAK,oBAAoB,GAC1B,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { TodoItem } from '@wrongstack/core';
2
+ import type React from 'react';
3
+ /**
4
+ * Full-screen Todos monitor overlay (F6 to open, F6 to close).
5
+ * Surfaces the live agent.ctx.todos board — compact status-bar chips
6
+ * aren't enough when the board has 10+ items. Mirrors the bordered-
7
+ * panel look of the fleet/agents/worktree monitors so it sits naturally
8
+ * in the bottom region.
9
+ */
10
+ export declare function TodosMonitor({ todos }: {
11
+ todos: TodoItem[];
12
+ }): React.ReactElement;
13
+ //# sourceMappingURL=todos-monitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"todos-monitor.d.ts","sourceRoot":"","sources":["../../src/components/todos-monitor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;CAAE,GAAG,KAAK,CAAC,YAAY,CA8GjF"}
@@ -0,0 +1,20 @@
1
+ import type React from 'react';
2
+ export interface ToolPickerItem {
3
+ name: string;
4
+ owner: string;
5
+ category: string;
6
+ enabled: boolean;
7
+ mutating: boolean;
8
+ permission: string;
9
+ descMode: 'extend' | 'simple';
10
+ description: string;
11
+ }
12
+ export interface ToolsPickerProps {
13
+ items: ToolPickerItem[];
14
+ selected: number;
15
+ busy?: boolean | undefined;
16
+ hint?: string | undefined;
17
+ filter?: string | undefined;
18
+ }
19
+ export declare function ToolsPicker({ items, selected, busy, hint, filter, }: ToolsPickerProps): React.ReactElement;
20
+ //# sourceMappingURL=tools-picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools-picker.d.ts","sourceRoot":"","sources":["../../src/components/tools-picker.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAqHD,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,QAAQ,EACR,IAAY,EACZ,IAAI,EACJ,MAAM,GACP,EAAE,gBAAgB,GAAG,KAAK,CAAC,YAAY,CA4HvC"}
@@ -0,0 +1,23 @@
1
+ import type React from 'react';
2
+ import type { WorktreeRow } from './worktree-panel.js';
3
+ export declare function isWorktreeMonitorCloseKey(input: string, key: {
4
+ escape?: boolean | undefined;
5
+ ctrl?: boolean | undefined;
6
+ }): boolean;
7
+ /**
8
+ * Full-screen Worktree monitor overlay (Ctrl+T to open, Ctrl+T to close).
9
+ * Shows each AutoPhase worktree: branch, base→branch, owner phase, diff stats,
10
+ * and conflict files for any worktree left in needs-review.
11
+ *
12
+ * Prunes merged/failed worktrees older than TERMINAL_TTL_MS to prevent
13
+ * accumulation in long-running sessions.
14
+ */
15
+ export declare function WorktreeMonitor({ worktrees, baseBranch, nowTick, onClose, }: {
16
+ worktrees: Record<string, WorktreeRow & {
17
+ baseBranch?: string | undefined;
18
+ }>;
19
+ baseBranch?: string | undefined;
20
+ nowTick: number;
21
+ onClose: () => void;
22
+ }): React.ReactElement;
23
+ //# sourceMappingURL=worktree-monitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree-monitor.d.ts","sourceRoot":"","sources":["../../src/components/worktree-monitor.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAyBvD,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,EACb,GAAG,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAAE,GAChE,OAAO,CAET;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,UAAU,EACV,OAAO,EACP,OAAO,GACR,EAAE;IACD,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG;QAAE,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC,CAAC;IAC7E,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,GAAG,KAAK,CAAC,YAAY,CAwFrB"}
@@ -0,0 +1,21 @@
1
+ import type React from 'react';
2
+ export interface WorktreeRow {
3
+ branch: string;
4
+ ownerLabel: string;
5
+ status: string;
6
+ insertions: number;
7
+ deletions: number;
8
+ files: number;
9
+ allocatedAt: number;
10
+ conflictFiles?: string[] | undefined;
11
+ }
12
+ /**
13
+ * Worktree sidebar panel — shown beside the AutoPhase PhasePanel when git
14
+ * worktree isolation is active. One compact row per worktree (branch, owner
15
+ * phase, diff stats, status). Always visible while live; details on Ctrl+T.
16
+ */
17
+ export declare function WorktreePanel({ worktrees, nowTick, }: {
18
+ worktrees: Record<string, WorktreeRow>;
19
+ nowTick: number;
20
+ }): React.ReactElement | null;
21
+ //# sourceMappingURL=worktree-panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree-panel.d.ts","sourceRoot":"","sources":["../../src/components/worktree-panel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CACtC;AAgBD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,OAAO,GACR,EAAE;IACD,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CA2D5B"}
@@ -0,0 +1,46 @@
1
+ import type { Action } from './app-reducer.js';
2
+ import type { StatuslineItem } from './components/statusline-picker.js';
3
+ export type FKeyPanelAction = 'projectPickerOpen' | 'toggleMonitor' | 'toggleAgentsMonitor' | 'toggleWorktreeMonitor' | 'togglePlanPanel' | 'toggleTodosMonitor' | 'toggleQueuePanel' | 'toggleProcessList' | 'toggleGoalPanel' | 'toggleSessionsPanel' | 'toggleCoordinatorMonitor' | 'statuslineOpen';
4
+ /** A single F-key panel entry shared by the picker, help overlay, and tests. */
5
+ export interface FKeyPanelEntry {
6
+ key: number;
7
+ label: string;
8
+ action: FKeyPanelAction;
9
+ /** Shortcut label for user-facing help, including Ctrl aliases when available. */
10
+ helpKeys: string;
11
+ /** Short user-facing description for the help overlay. */
12
+ helpDescription: string;
13
+ }
14
+ /** All 12 F-key panels in order. */
15
+ export declare const F_KEY_PANEL_ENTRIES: readonly FKeyPanelEntry[];
16
+ type FKeyDispatchAction = Extract<Action, {
17
+ type: 'toggleMonitor';
18
+ } | {
19
+ type: 'toggleAgentsMonitor';
20
+ } | {
21
+ type: 'toggleWorktreeMonitor';
22
+ } | {
23
+ type: 'togglePlanPanel';
24
+ } | {
25
+ type: 'toggleTodosMonitor';
26
+ } | {
27
+ type: 'toggleQueuePanel';
28
+ } | {
29
+ type: 'toggleProcessList';
30
+ } | {
31
+ type: 'toggleGoalPanel';
32
+ } | {
33
+ type: 'toggleSessionsPanel';
34
+ } | {
35
+ type: 'toggleCoordinatorMonitor';
36
+ } | {
37
+ type: 'statuslineOpen';
38
+ }>;
39
+ /**
40
+ * Convert a picker entry into the reducer action it can dispatch directly.
41
+ * Returns null for entries that need host-side work before dispatching, such as
42
+ * F1/projectPickerOpen, which must load project items before opening.
43
+ */
44
+ export declare function actionForFKeyPanel(entry: FKeyPanelEntry, hiddenItems?: readonly StatuslineItem[]): FKeyDispatchAction | null;
45
+ export {};
46
+ //# sourceMappingURL=f-key-panels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"f-key-panels.d.ts","sourceRoot":"","sources":["../src/f-key-panels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAExE,MAAM,MAAM,eAAe,GACvB,mBAAmB,GACnB,eAAe,GACf,qBAAqB,GACrB,uBAAuB,GACvB,iBAAiB,GACjB,oBAAoB,GACpB,kBAAkB,GAClB,mBAAmB,GACnB,iBAAiB,GACjB,qBAAqB,GACrB,0BAA0B,GAC1B,gBAAgB,CAAC;AAErB,gFAAgF;AAChF,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,CAAC;IACxB,kFAAkF;IAClF,QAAQ,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,oCAAoC;AACpC,eAAO,MAAM,mBAAmB,EAAE,SAAS,cAAc,EAqFxD,CAAC;AAEF,KAAK,kBAAkB,GAAG,OAAO,CAC/B,MAAM,EACJ;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,GACzB;IAAE,IAAI,EAAE,qBAAqB,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,uBAAuB,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAC3B;IAAE,IAAI,EAAE,oBAAoB,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAC3B;IAAE,IAAI,EAAE,qBAAqB,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,0BAA0B,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAC7B,CAAC;AAeF;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,cAAc,EACrB,WAAW,GAAE,SAAS,cAAc,EAAO,GAC1C,kBAAkB,GAAG,IAAI,CAS3B"}
@@ -0,0 +1,3 @@
1
+ export declare function searchFiles(root: string, query: string, limit?: number): Promise<string[]>;
2
+ export declare function invalidateFileCache(): void;
3
+ //# sourceMappingURL=file-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-search.d.ts","sourceRoot":"","sources":["../src/file-search.ts"],"names":[],"mappings":"AAoFA,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAU3F;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Function-key decoding for raw terminal input.
3
+ *
4
+ * Ink's `useInput` does not decode F1–F12, so the Input component catches the
5
+ * raw escape sequences from stdin (the same mechanism it uses for Home/End)
6
+ * and turns them into a `KeyEvent.fn` number. F-keys are terminal-safe aliases
7
+ * for chords some terminals intercept before the app sees them — most notably
8
+ * Windows Terminal, which binds Ctrl+F to "Find".
9
+ *
10
+ * Kept in its own pure, dependency-free module so it can be unit-tested without
11
+ * importing the Ink/React component tree.
12
+ */
13
+ /**
14
+ * Map a raw terminal escape sequence to a plain function-key number (1–12),
15
+ * or null when it isn't a plain F-key. Covers both the SS3 form (xterm F1–F4,
16
+ * `ESC O P..S`) and the CSI `~` form used by F1–F12 across most terminals.
17
+ * Modifier-augmented variants (Shift+F2 = `ESC [ 1 ; 2 Q`, etc.) are ignored.
18
+ */
19
+ export declare function fnKey(data: string): number | null;
20
+ //# sourceMappingURL=fn-keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fn-keys.d.ts","sourceRoot":"","sources":["../src/fn-keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiCjD"}