@wrongstack/tui 0.284.1 → 0.286.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 (249) hide show
  1. package/dist/app-initial-state.d.ts +28 -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 +1841 -0
  6. package/dist/app-state.d.ts.map +1 -0
  7. package/dist/app.d.ts +593 -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 +114 -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-model.d.ts +107 -0
  26. package/dist/components/brain-panel-model.d.ts.map +1 -0
  27. package/dist/components/brain-panel.d.ts +22 -0
  28. package/dist/components/brain-panel.d.ts.map +1 -0
  29. package/dist/components/checkpoint-timeline.d.ts +19 -0
  30. package/dist/components/checkpoint-timeline.d.ts.map +1 -0
  31. package/dist/components/confirm-prompt.d.ts +26 -0
  32. package/dist/components/confirm-prompt.d.ts.map +1 -0
  33. package/dist/components/continue-confirm-panel.d.ts +47 -0
  34. package/dist/components/continue-confirm-panel.d.ts.map +1 -0
  35. package/dist/components/coordinator-panel.d.ts +11 -0
  36. package/dist/components/coordinator-panel.d.ts.map +1 -0
  37. package/dist/components/design-picker.d.ts +14 -0
  38. package/dist/components/design-picker.d.ts.map +1 -0
  39. package/dist/components/enhance-panel.d.ts +36 -0
  40. package/dist/components/enhance-panel.d.ts.map +1 -0
  41. package/dist/components/esc-confirm-prompt.d.ts +17 -0
  42. package/dist/components/esc-confirm-prompt.d.ts.map +1 -0
  43. package/dist/components/f-key-picker.d.ts +13 -0
  44. package/dist/components/f-key-picker.d.ts.map +1 -0
  45. package/dist/components/file-picker.d.ts +8 -0
  46. package/dist/components/file-picker.d.ts.map +1 -0
  47. package/dist/components/fleet-monitor.d.ts +60 -0
  48. package/dist/components/fleet-monitor.d.ts.map +1 -0
  49. package/dist/components/fleet-panel.d.ts +69 -0
  50. package/dist/components/fleet-panel.d.ts.map +1 -0
  51. package/dist/components/goal-panel.d.ts +17 -0
  52. package/dist/components/goal-panel.d.ts.map +1 -0
  53. package/dist/components/help-overlay.d.ts +27 -0
  54. package/dist/components/help-overlay.d.ts.map +1 -0
  55. package/dist/components/help-panel.d.ts +16 -0
  56. package/dist/components/help-panel.d.ts.map +1 -0
  57. package/dist/components/history/assistant.d.ts +61 -0
  58. package/dist/components/history/assistant.d.ts.map +1 -0
  59. package/dist/components/history/banner.d.ts +13 -0
  60. package/dist/components/history/banner.d.ts.map +1 -0
  61. package/dist/components/history/code-block.d.ts +217 -0
  62. package/dist/components/history/code-block.d.ts.map +1 -0
  63. package/dist/components/history/entry.d.ts +19 -0
  64. package/dist/components/history/entry.d.ts.map +1 -0
  65. package/dist/components/history/index.d.ts +21 -0
  66. package/dist/components/history/index.d.ts.map +1 -0
  67. package/dist/components/history/replay.d.ts +44 -0
  68. package/dist/components/history/replay.d.ts.map +1 -0
  69. package/dist/components/history/types.d.ts +146 -0
  70. package/dist/components/history/types.d.ts.map +1 -0
  71. package/dist/components/history/utils.d.ts +65 -0
  72. package/dist/components/history/utils.d.ts.map +1 -0
  73. package/dist/components/history.d.ts +2 -0
  74. package/dist/components/history.d.ts.map +1 -0
  75. package/dist/components/input.d.ts +57 -0
  76. package/dist/components/input.d.ts.map +1 -0
  77. package/dist/components/kanban-panel.d.ts +7 -0
  78. package/dist/components/kanban-panel.d.ts.map +1 -0
  79. package/dist/components/key-hint-bar.d.ts +31 -0
  80. package/dist/components/key-hint-bar.d.ts.map +1 -0
  81. package/dist/components/live-activity-strip.d.ts +39 -0
  82. package/dist/components/live-activity-strip.d.ts.map +1 -0
  83. package/dist/components/mailbox-panel.d.ts +40 -0
  84. package/dist/components/mailbox-panel.d.ts.map +1 -0
  85. package/dist/components/mcp-picker.d.ts +18 -0
  86. package/dist/components/mcp-picker.d.ts.map +1 -0
  87. package/dist/components/mode-picker.d.ts +17 -0
  88. package/dist/components/mode-picker.d.ts.map +1 -0
  89. package/dist/components/model-picker.d.ts +37 -0
  90. package/dist/components/model-picker.d.ts.map +1 -0
  91. package/dist/components/phase-monitor.d.ts +33 -0
  92. package/dist/components/phase-monitor.d.ts.map +1 -0
  93. package/dist/components/phase-panel.d.ts +22 -0
  94. package/dist/components/phase-panel.d.ts.map +1 -0
  95. package/dist/components/plan-panel.d.ts +17 -0
  96. package/dist/components/plan-panel.d.ts.map +1 -0
  97. package/dist/components/plugin-picker.d.ts +22 -0
  98. package/dist/components/plugin-picker.d.ts.map +1 -0
  99. package/dist/components/process-list.d.ts +14 -0
  100. package/dist/components/process-list.d.ts.map +1 -0
  101. package/dist/components/project-picker.d.ts +21 -0
  102. package/dist/components/project-picker.d.ts.map +1 -0
  103. package/dist/components/prompt-picker.d.ts +31 -0
  104. package/dist/components/prompt-picker.d.ts.map +1 -0
  105. package/dist/components/provider-colors.d.ts +40 -0
  106. package/dist/components/provider-colors.d.ts.map +1 -0
  107. package/dist/components/queue-panel.d.ts +16 -0
  108. package/dist/components/queue-panel.d.ts.map +1 -0
  109. package/dist/components/resume-picker.d.ts +16 -0
  110. package/dist/components/resume-picker.d.ts.map +1 -0
  111. package/dist/components/scrollable-history.d.ts +60 -0
  112. package/dist/components/scrollable-history.d.ts.map +1 -0
  113. package/dist/components/sdd-board-overlay.d.ts +15 -0
  114. package/dist/components/sdd-board-overlay.d.ts.map +1 -0
  115. package/dist/components/send-mode-picker.d.ts +64 -0
  116. package/dist/components/send-mode-picker.d.ts.map +1 -0
  117. package/dist/components/sessions-panel.d.ts +46 -0
  118. package/dist/components/sessions-panel.d.ts.map +1 -0
  119. package/dist/components/settings-picker.d.ts +387 -0
  120. package/dist/components/settings-picker.d.ts.map +1 -0
  121. package/dist/components/shadow-panel.d.ts +13 -0
  122. package/dist/components/shadow-panel.d.ts.map +1 -0
  123. package/dist/components/shell-command-warning.d.ts +9 -0
  124. package/dist/components/shell-command-warning.d.ts.map +1 -0
  125. package/dist/components/slash-menu.d.ts +9 -0
  126. package/dist/components/slash-menu.d.ts.map +1 -0
  127. package/dist/components/status-bar.d.ts +378 -0
  128. package/dist/components/status-bar.d.ts.map +1 -0
  129. package/dist/components/statusline-picker.d.ts +55 -0
  130. package/dist/components/statusline-picker.d.ts.map +1 -0
  131. package/dist/components/suggestions.d.ts +9 -0
  132. package/dist/components/suggestions.d.ts.map +1 -0
  133. package/dist/components/todos-monitor.d.ts +13 -0
  134. package/dist/components/todos-monitor.d.ts.map +1 -0
  135. package/dist/components/tools-picker.d.ts +20 -0
  136. package/dist/components/tools-picker.d.ts.map +1 -0
  137. package/dist/components/worktree-monitor.d.ts +23 -0
  138. package/dist/components/worktree-monitor.d.ts.map +1 -0
  139. package/dist/components/worktree-panel.d.ts +21 -0
  140. package/dist/components/worktree-panel.d.ts.map +1 -0
  141. package/dist/f-key-panels.d.ts +46 -0
  142. package/dist/f-key-panels.d.ts.map +1 -0
  143. package/dist/file-search.d.ts +3 -0
  144. package/dist/file-search.d.ts.map +1 -0
  145. package/dist/fn-keys.d.ts +20 -0
  146. package/dist/fn-keys.d.ts.map +1 -0
  147. package/dist/git-info.d.ts +20 -0
  148. package/dist/git-info.d.ts.map +1 -0
  149. package/dist/heap-watchdog.d.ts +41 -0
  150. package/dist/heap-watchdog.d.ts.map +1 -0
  151. package/dist/highlight.d.ts +30 -0
  152. package/dist/highlight.d.ts.map +1 -0
  153. package/dist/hit-test.d.ts +75 -0
  154. package/dist/hit-test.d.ts.map +1 -0
  155. package/dist/hooks/fleet-chat-coalescer.d.ts +32 -0
  156. package/dist/hooks/fleet-chat-coalescer.d.ts.map +1 -0
  157. package/dist/hooks/use-auth-panel.d.ts +38 -0
  158. package/dist/hooks/use-auth-panel.d.ts.map +1 -0
  159. package/dist/hooks/use-autonomous-coordinator.d.ts +21 -0
  160. package/dist/hooks/use-autonomous-coordinator.d.ts.map +1 -0
  161. package/dist/hooks/use-brain-events.d.ts +7 -0
  162. package/dist/hooks/use-brain-events.d.ts.map +1 -0
  163. package/dist/hooks/use-brain-panel.d.ts +43 -0
  164. package/dist/hooks/use-brain-panel.d.ts.map +1 -0
  165. package/dist/hooks/use-director-fleet-bridge.d.ts +31 -0
  166. package/dist/hooks/use-director-fleet-bridge.d.ts.map +1 -0
  167. package/dist/hooks/use-file-search.d.ts +42 -0
  168. package/dist/hooks/use-file-search.d.ts.map +1 -0
  169. package/dist/hooks/use-input-history-persistence.d.ts +14 -0
  170. package/dist/hooks/use-input-history-persistence.d.ts.map +1 -0
  171. package/dist/hooks/use-mode-picker.d.ts +15 -0
  172. package/dist/hooks/use-mode-picker.d.ts.map +1 -0
  173. package/dist/hooks/use-model-pick.d.ts +34 -0
  174. package/dist/hooks/use-model-pick.d.ts.map +1 -0
  175. package/dist/hooks/use-paste-handling.d.ts +30 -0
  176. package/dist/hooks/use-paste-handling.d.ts.map +1 -0
  177. package/dist/hooks/use-picker-keys.d.ts +72 -0
  178. package/dist/hooks/use-picker-keys.d.ts.map +1 -0
  179. package/dist/hooks/use-prompt-picker.d.ts +28 -0
  180. package/dist/hooks/use-prompt-picker.d.ts.map +1 -0
  181. package/dist/hooks/use-queue-manager.d.ts +26 -0
  182. package/dist/hooks/use-queue-manager.d.ts.map +1 -0
  183. package/dist/hooks/use-statusline-hidden-sync.d.ts +14 -0
  184. package/dist/hooks/use-statusline-hidden-sync.d.ts.map +1 -0
  185. package/dist/hooks/use-statusline-state.d.ts +44 -0
  186. package/dist/hooks/use-statusline-state.d.ts.map +1 -0
  187. package/dist/hooks/use-stream-chip-expiration.d.ts +25 -0
  188. package/dist/hooks/use-stream-chip-expiration.d.ts.map +1 -0
  189. package/dist/hooks/use-subagent-events.d.ts +16 -0
  190. package/dist/hooks/use-subagent-events.d.ts.map +1 -0
  191. package/dist/hooks/use-token-counter-refresh.d.ts +30 -0
  192. package/dist/hooks/use-token-counter-refresh.d.ts.map +1 -0
  193. package/dist/hooks/use-tui-controllers.d.ts +37 -0
  194. package/dist/hooks/use-tui-controllers.d.ts.map +1 -0
  195. package/dist/hooks/use-tui-event-bridge.d.ts +29 -0
  196. package/dist/hooks/use-tui-event-bridge.d.ts.map +1 -0
  197. package/dist/hooks/use-working-dir-chip.d.ts +8 -0
  198. package/dist/hooks/use-working-dir-chip.d.ts.map +1 -0
  199. package/dist/index.d.ts +12 -910
  200. package/dist/index.d.ts.map +1 -0
  201. package/dist/index.js +4348 -2974
  202. package/dist/index.js.map +7 -1
  203. package/dist/ink.d.ts +20 -0
  204. package/dist/ink.d.ts.map +1 -0
  205. package/dist/input-editing.d.ts +76 -0
  206. package/dist/input-editing.d.ts.map +1 -0
  207. package/dist/input-tokens.d.ts +65 -0
  208. package/dist/input-tokens.d.ts.map +1 -0
  209. package/dist/kill-slash.d.ts +3 -0
  210. package/dist/kill-slash.d.ts.map +1 -0
  211. package/dist/markdown-table.d.ts +45 -0
  212. package/dist/markdown-table.d.ts.map +1 -0
  213. package/dist/markdown.d.ts +47 -0
  214. package/dist/markdown.d.ts.map +1 -0
  215. package/dist/mouse.d.ts +73 -0
  216. package/dist/mouse.d.ts.map +1 -0
  217. package/dist/on-panel-open.d.ts +62 -0
  218. package/dist/on-panel-open.d.ts.map +1 -0
  219. package/dist/paste-accumulator.d.ts +19 -0
  220. package/dist/paste-accumulator.d.ts.map +1 -0
  221. package/dist/ps-slash.d.ts +7 -0
  222. package/dist/ps-slash.d.ts.map +1 -0
  223. package/dist/queue-slash.d.ts +24 -0
  224. package/dist/queue-slash.d.ts.map +1 -0
  225. package/dist/reducers/fleet.d.ts +16 -0
  226. package/dist/reducers/fleet.d.ts.map +1 -0
  227. package/dist/reducers/helpers.d.ts +38 -0
  228. package/dist/reducers/helpers.d.ts.map +1 -0
  229. package/dist/rehydrate-history.d.ts +40 -0
  230. package/dist/rehydrate-history.d.ts.map +1 -0
  231. package/dist/run-tui.d.ts +522 -0
  232. package/dist/run-tui.d.ts.map +1 -0
  233. package/dist/sdd-lifecycle-entry.d.ts +18 -0
  234. package/dist/sdd-lifecycle-entry.d.ts.map +1 -0
  235. package/dist/slash-command-search.d.ts +10 -0
  236. package/dist/slash-command-search.d.ts.map +1 -0
  237. package/dist/steering-preamble.d.ts +25 -0
  238. package/dist/steering-preamble.d.ts.map +1 -0
  239. package/dist/submit-history.d.ts +17 -0
  240. package/dist/submit-history.d.ts.map +1 -0
  241. package/dist/terminal-title.d.ts +12 -0
  242. package/dist/terminal-title.d.ts.map +1 -0
  243. package/dist/theme.d.ts +91 -0
  244. package/dist/theme.d.ts.map +1 -0
  245. package/dist/thinking-word.d.ts +26 -0
  246. package/dist/thinking-word.d.ts.map +1 -0
  247. package/dist/tool-glyph.d.ts +18 -0
  248. package/dist/tool-glyph.d.ts.map +1 -0
  249. package/package.json +8 -9
@@ -0,0 +1,31 @@
1
+ import type React from 'react';
2
+ /** Which interactive context is active — drives which shortcuts the bar shows.
3
+ * Ordered by priority (a confirm prompt overrides a picker, etc.). */
4
+ export interface KeyHintContext {
5
+ confirm?: boolean | undefined;
6
+ picker?: boolean | undefined;
7
+ monitor?: boolean;
8
+ managed?: boolean;
9
+ /** Hint for the next panel: key combination and panel name to encourage discovery. */
10
+ nextPanelHint?: {
11
+ key: string;
12
+ label: string;
13
+ } | undefined;
14
+ }
15
+ export interface Hint {
16
+ key: string;
17
+ label: string;
18
+ /** When true, render in a distinct color to highlight panel discovery. */
19
+ discovery?: boolean | undefined;
20
+ }
21
+ export declare function hintsFor(ctx: KeyHintContext): Hint[];
22
+ /**
23
+ * Persistent one-line keybinding hint bar shown at the very bottom of the TUI,
24
+ * like a status-line cheat sheet. Context-aware: surfaces the keys that matter
25
+ * for whatever is on screen (confirm prompt → y/n/a/d, picker → ↑↓/↵, etc.).
26
+ * Discovery hints (next panel) are rendered in a distinct color to encourage exploration.
27
+ */
28
+ export declare function KeyHintBar({ context }: {
29
+ context: KeyHintContext;
30
+ }): React.ReactElement;
31
+ //# sourceMappingURL=key-hint-bar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key-hint-bar.d.ts","sourceRoot":"","sources":["../../src/components/key-hint-bar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B;uEACuE;AACvE,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sFAAsF;IACtF,aAAa,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CAC5D;AAED,MAAM,WAAW,IAAI;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACjC;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI,EAAE,CAsCpD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,cAAc,CAAA;CAAE,GAAG,KAAK,CAAC,YAAY,CAYvF"}
@@ -0,0 +1,39 @@
1
+ import React from 'react';
2
+ import type { FleetEntry } from '../app.js';
3
+ export interface LiveActivityStripProps {
4
+ /** Per-subagent state from the FleetEntry table. */
5
+ entries: Record<string, FleetEntry>;
6
+ /** Re-renders every tick so elapsed timers stay live; otherwise the
7
+ * bar freezes between FleetEntry updates (which can be 30s+ apart
8
+ * if a subagent is parked in one tool). */
9
+ nowTick: number;
10
+ /** Optional cap on rows so a 20-subagent fleet doesn't push the
11
+ * input off-screen. Default 4 — matches the status bar's 4th line. */
12
+ maxRows?: number | undefined;
13
+ }
14
+ /**
15
+ * Build the fixed-height set of strip rows. ALWAYS returns exactly
16
+ * `maxRows` strings, each already truncated to `width` columns (no wrap).
17
+ *
18
+ * This is the inline-mode contract every bottom live region in the TUI
19
+ * must honor (see live-tail-fixed-height.test.ts): a region whose height
20
+ * or visual-row count changes between renders scrolls the screen on every
21
+ * update, and in inline mode each scroll strands the changed rows into
22
+ * native scrollback — the "● Security Scanner …" line re-stamped dozens of
23
+ * times per second when a fleet is busy. Constant height + hard truncation
24
+ * keeps Ink's log-update clear-and-rewrite in lockstep with what's drawn,
25
+ * so nothing leaks. The leading "● " bullet is rendered by the component
26
+ * (colored), so these strings exclude it and are truncated to `width - 2`.
27
+ */
28
+ export declare function activityStripRows(entries: Record<string, FleetEntry>, now: number, maxRows: number, width: number): string[];
29
+ /**
30
+ * Compact strip that sits directly above the input area, one line per
31
+ * running subagent. Renders at a CONSTANT height (`maxRows`) with every
32
+ * row hard-truncated to the terminal width, so it can never bleed into
33
+ * native scrollback in inline mode (see `activityStripRows`).
34
+ *
35
+ * Renders nothing only when the fleet table is completely empty (e.g.
36
+ * after /clear), so the input sits flush against history during solo work.
37
+ */
38
+ export declare const LiveActivityStrip: React.MemoExoticComponent<({ entries, nowTick, maxRows, }: LiveActivityStripProps) => React.ReactElement | null>;
39
+ //# sourceMappingURL=live-activity-strip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-activity-strip.d.ts","sourceRoot":"","sources":["../../src/components/live-activity-strip.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAG5C,MAAM,WAAW,sBAAsB;IACrC,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACpC;;gDAE4C;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB;2EACuE;IACvE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AA4CD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACnC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,MAAM,EAAE,CAkBV;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,6DAI3B,sBAAsB,KAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAgCnD,CAAC"}
@@ -0,0 +1,40 @@
1
+ import type React from 'react';
2
+ export interface MailboxMessageEntry {
3
+ id: string;
4
+ from: string;
5
+ to: string;
6
+ type: string;
7
+ subject: string;
8
+ body: string;
9
+ priority: string;
10
+ timestamp: string;
11
+ readByCount: number;
12
+ readByMe: boolean;
13
+ completed: boolean;
14
+ completedBy?: string;
15
+ outcome?: string;
16
+ }
17
+ export interface MailboxAgentEntry {
18
+ agentId: string;
19
+ name: string;
20
+ role?: string | undefined;
21
+ sessionId: string;
22
+ status: string;
23
+ currentTool?: string | undefined;
24
+ currentTask?: string | undefined;
25
+ lastSeenAt: string;
26
+ online: boolean;
27
+ source?: string | undefined;
28
+ }
29
+ export interface MailboxPanelProps {
30
+ /** Recent messages (newest first). */
31
+ messages: MailboxMessageEntry[];
32
+ /** Online agents in this project. */
33
+ agents: MailboxAgentEntry[];
34
+ /** Total unread count. */
35
+ unreadCount: number;
36
+ /** Whether the panel is visible. When false, returns null. */
37
+ open: boolean;
38
+ }
39
+ export declare function MailboxPanel({ messages, agents, unreadCount, open, }: MailboxPanelProps): React.ReactElement | null;
40
+ //# sourceMappingURL=mailbox-panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mailbox-panel.d.ts","sourceRoot":"","sources":["../../src/components/mailbox-panel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,sCAAsC;IACtC,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,qCAAqC;IACrC,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,0BAA0B;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,IAAI,EAAE,OAAO,CAAC;CACf;AAgCD,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,MAAM,EACN,WAAW,EACX,IAAI,GACL,EAAE,iBAAiB,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAiH/C"}
@@ -0,0 +1,18 @@
1
+ import type React from 'react';
2
+ export interface McpPickerItem {
3
+ name: string;
4
+ enabled: boolean;
5
+ status: string;
6
+ transport: string;
7
+ description?: string | undefined;
8
+ toolCount: number;
9
+ lazy?: boolean | undefined;
10
+ }
11
+ export interface McpPickerProps {
12
+ items: McpPickerItem[];
13
+ selected: number;
14
+ busy?: boolean | undefined;
15
+ hint?: string | undefined;
16
+ }
17
+ export declare function McpPicker({ items, selected, busy, hint, }: McpPickerProps): React.ReactElement;
18
+ //# sourceMappingURL=mcp-picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-picker.d.ts","sourceRoot":"","sources":["../../src/components/mcp-picker.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AA6BD,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,QAAQ,EACR,IAAY,EACZ,IAAI,GACL,EAAE,cAAc,GAAG,KAAK,CAAC,YAAY,CAyDrC"}
@@ -0,0 +1,17 @@
1
+ import type { Mode } from '@wrongstack/core';
2
+ import type React from 'react';
3
+ export interface ModeOption {
4
+ id: string;
5
+ name: string;
6
+ description: string;
7
+ family: 'lite' | 'deep' | 'balanced' | 'custom';
8
+ isActive: boolean;
9
+ }
10
+ export interface ModePickerProps {
11
+ modes: ModeOption[];
12
+ selected: number;
13
+ hint?: string | undefined;
14
+ }
15
+ export declare function toModeOptions(modes: Mode[], activeId: string | null): ModeOption[];
16
+ export declare function ModePicker({ modes, selected, hint, }: ModePickerProps): React.ReactElement;
17
+ //# sourceMappingURL=mode-picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mode-picker.d.ts","sourceRoot":"","sources":["../../src/components/mode-picker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAC;IAChD,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AAUD,wBAAgB,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,UAAU,EAAE,CAQlF;AA4BD,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,IAAI,GACL,EAAE,eAAe,GAAG,KAAK,CAAC,YAAY,CAkCtC"}
@@ -0,0 +1,37 @@
1
+ import type React from 'react';
2
+ export interface ProviderOption {
3
+ id: string;
4
+ family: string;
5
+ /** Model ids the picker offers in step 2 for this provider. */
6
+ models: string[];
7
+ /** Optional dim hint shown next to the model list (e.g. "from saved config"). */
8
+ modelsLabel?: string | undefined;
9
+ }
10
+ export interface ModelPickerProps {
11
+ step: 'provider' | 'model';
12
+ providerOptions: ProviderOption[];
13
+ /** All model options for the current provider. */
14
+ modelOptions: string[];
15
+ /** Filtered/searched model options (may differ when searchQuery is active). */
16
+ filteredOptions: string[];
17
+ selected: number;
18
+ pickedProviderId?: string | undefined;
19
+ /** Current search query (step 2 only). */
20
+ searchQuery?: string | undefined;
21
+ /** Status hint (e.g. error from a failed switch attempt) shown at the bottom. */
22
+ hint?: string | undefined;
23
+ /**
24
+ * Overlay title. Defaults to 'Switch model' (the /model command); generic
25
+ * `requestModelPick` callers pass their own (e.g. "Add council voter").
26
+ */
27
+ titleLabel?: string | undefined;
28
+ }
29
+ /**
30
+ * Two-step Ink overlay for the TUI's `/model` command.
31
+ * Step 1: pick a provider that has a key.
32
+ * Step 2: pick a model bound to that provider (type to filter).
33
+ *
34
+ * Driven entirely by props — App owns cursor state, key events, and search.
35
+ */
36
+ export declare function ModelPicker({ step, providerOptions, filteredOptions, selected, pickedProviderId, searchQuery, hint, titleLabel, }: ModelPickerProps): React.ReactElement;
37
+ //# sourceMappingURL=model-picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-picker.d.ts","sourceRoot":"","sources":["../../src/components/model-picker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,iFAAiF;IACjF,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC;IAC3B,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,kDAAkD;IAClD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,+EAA+E;IAC/E,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAoBD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,eAAe,EACf,eAAe,EACf,QAAQ,EACR,gBAAgB,EAChB,WAAW,EACX,IAAI,EACJ,UAAU,GACX,EAAE,gBAAgB,GAAG,KAAK,CAAC,YAAY,CAiGvC"}
@@ -0,0 +1,33 @@
1
+ import type React from 'react';
2
+ export interface PhaseMonitorProps {
3
+ /** Per-phase state from the App reducer. */
4
+ phases: Record<string, {
5
+ name: string;
6
+ status: string;
7
+ completedTasks: number;
8
+ totalTasks: number;
9
+ startedAt?: number | undefined;
10
+ activeTasks?: Array<{
11
+ taskId: string;
12
+ title: string;
13
+ agent?: string | undefined;
14
+ }> | undefined;
15
+ }>;
16
+ /** IDs of currently running phases. */
17
+ runningPhaseIds: string[];
18
+ /** Session-level elapsed ms. */
19
+ elapsedMs: number;
20
+ /** nowTick for elapsed time calculation. */
21
+ nowTick: number;
22
+ }
23
+ /**
24
+ * Full-screen PhaseMonitor overlay (Ctrl+P in TUI).
25
+ *
26
+ * Layout:
27
+ * Header: project title + elapsed time + Ctrl+P to close
28
+ * Per-phase rows:
29
+ * · icon · name · status · (task progress) · started/elapsed
30
+ * Bottom: keyboard hint
31
+ */
32
+ export declare function PhaseMonitor({ phases, runningPhaseIds, elapsedMs, nowTick, }: PhaseMonitorProps): React.ReactElement;
33
+ //# sourceMappingURL=phase-monitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phase-monitor.d.ts","sourceRoot":"","sources":["../../src/components/phase-monitor.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CACZ,MAAM,EACN;QACE,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC/B,WAAW,CAAC,EAAE,KAAK,CAAC;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;SAAE,CAAC,GAAG,SAAS,CAAC;KAChG,CACF,CAAC;IACF,uCAAuC;IACvC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;CACjB;AAgBD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EACN,eAAe,EACf,SAAS,EACT,OAAO,GACR,EAAE,iBAAiB,GAAG,KAAK,CAAC,YAAY,CAqFxC"}
@@ -0,0 +1,22 @@
1
+ import type React from 'react';
2
+ export interface PhasePanelProps {
3
+ /** Per-phase state from the App reducer. */
4
+ phases: Record<string, {
5
+ name: string;
6
+ status: string;
7
+ completedTasks: number;
8
+ totalTasks: number;
9
+ startedAt?: number | undefined;
10
+ }>;
11
+ /** Active running phase IDs. */
12
+ runningPhaseIds: string[];
13
+ /** nowTick for elapsed time display. */
14
+ nowTick: number;
15
+ }
16
+ /**
17
+ * AutoPhase sidebar panel — shown below fleet panel when AutoPhase is active.
18
+ * Compact 2-line-per-phase view optimized for the TUI layout.
19
+ * Unlike PhaseMonitor (an overlay), PhasePanel is always visible while active.
20
+ */
21
+ export declare function PhasePanel({ phases, nowTick }: PhasePanelProps): React.ReactElement | null;
22
+ //# sourceMappingURL=phase-panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phase-panel.d.ts","sourceRoot":"","sources":["../../src/components/phase-panel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,MAAM,WAAW,eAAe;IAC9B,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CACZ,MAAM,EACN;QACE,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAChC,CACF,CAAC;IACF,gCAAgC;IAChC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC;CACjB;AAgBD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,eAAe,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAkD1F"}
@@ -0,0 +1,17 @@
1
+ import type React from 'react';
2
+ export interface PlanPanelProps {
3
+ /** Absolute path to the project root. */
4
+ projectRoot: string;
5
+ /** Current session ID (null if no active session). */
6
+ sessionId: string | null;
7
+ /** Called when the user presses F5 / Esc to close. */
8
+ onClose: () => void;
9
+ }
10
+ /**
11
+ * Full-screen plan panel (F5 in TUI).
12
+ *
13
+ * Reads the active plan JSON file from disk and renders plan items grouped by status.
14
+ * Shows the current scope and a hint for switching scopes via the /plan tool.
15
+ */
16
+ export declare function PlanPanel({ projectRoot, sessionId, onClose: _onClose }: PlanPanelProps): React.ReactElement;
17
+ //# sourceMappingURL=plan-panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-panel.d.ts","sourceRoot":"","sources":["../../src/components/plan-panel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAwB/B,MAAM,WAAW,cAAc;IAC7B,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,sDAAsD;IACtD,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AA8BD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,cAAc,GAAG,KAAK,CAAC,YAAY,CAoJ3G"}
@@ -0,0 +1,22 @@
1
+ import type React from 'react';
2
+ export interface PluginPickerItem {
3
+ name: string;
4
+ enabled: boolean;
5
+ risk: 'low' | 'medium' | 'high';
6
+ summary: string;
7
+ /**
8
+ * When false the row is locked: the picker renders a 🔒 marker and ignores
9
+ * Enter/←/→ on it. The current built-in audit list is fully toggleable, but
10
+ * the component keeps this marker for future or externally supplied locked
11
+ * rows.
12
+ */
13
+ lockable?: boolean | undefined;
14
+ }
15
+ export interface PluginPickerProps {
16
+ items: PluginPickerItem[];
17
+ selected: number;
18
+ busy?: boolean | undefined;
19
+ hint?: string | undefined;
20
+ }
21
+ export declare function PluginPicker({ items, selected, busy, hint, }: PluginPickerProps): React.ReactElement;
22
+ //# sourceMappingURL=plugin-picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-picker.d.ts","sourceRoot":"","sources":["../../src/components/plugin-picker.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAChC;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AAUD,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,QAAQ,EACR,IAAY,EACZ,IAAI,GACL,EAAE,iBAAiB,GAAG,KAAK,CAAC,YAAY,CA8DxC"}
@@ -0,0 +1,14 @@
1
+ import type React from 'react';
2
+ /**
3
+ * F8 — Process List Monitor.
4
+ *
5
+ * Live view of all background bash/exec processes tracked by the global
6
+ * ProcessRegistry. This panel OWNS the keyboard while open:
7
+ * every keystroke is captured here and NEVER reaches the chat input,
8
+ * because handleKey in app.tsx returns early when processListOpen is true
9
+ * (before it can modify the input buffer). This two-layer design —
10
+ * ProcessList's own useInput for shortcuts, handleKey's guard to suppress
11
+ * everything else — keeps the input field completely unaffected.
12
+ */
13
+ export declare function ProcessListMonitor(): React.ReactElement;
14
+ //# sourceMappingURL=process-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-list.d.ts","sourceRoot":"","sources":["../../src/components/process-list.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,IAAI,KAAK,CAAC,YAAY,CAuIvD"}
@@ -0,0 +1,21 @@
1
+ import type React from 'react';
2
+ /** A single row in the project picker. Matches the CLI's PickerItem shape. */
3
+ export interface ProjectPickerItem {
4
+ key: string;
5
+ label: string;
6
+ subtitle?: string | undefined;
7
+ meta?: string | undefined;
8
+ kind: 'project' | 'action';
9
+ }
10
+ export interface ProjectPickerProps {
11
+ /** Already-filtered items. Navigation indices target this list directly. */
12
+ items: ProjectPickerItem[];
13
+ /** Index into `items`. Guaranteed to never point at a divider. */
14
+ selected: number;
15
+ /** Current filter text (for the filter bar display only). */
16
+ filter: string;
17
+ /** Optional status/error hint shown below the list. */
18
+ hint?: string | undefined;
19
+ }
20
+ export declare function ProjectPicker({ items, selected, filter, hint, }: ProjectPickerProps): React.ReactElement;
21
+ //# sourceMappingURL=project-picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-picker.d.ts","sourceRoot":"","sources":["../../src/components/project-picker.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,8EAA8E;AAC9E,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,4EAA4E;IAC5E,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AAwBD,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,QAAQ,EACR,MAAM,EACN,IAAI,GACL,EAAE,kBAAkB,GAAG,KAAK,CAAC,YAAY,CAqFzC"}
@@ -0,0 +1,31 @@
1
+ import type React from 'react';
2
+ export interface PromptPickEntry {
3
+ slug: string;
4
+ title: string;
5
+ description: string;
6
+ category: string;
7
+ source: string;
8
+ content: string;
9
+ favorite: boolean;
10
+ }
11
+ /**
12
+ * Apply the picker's category filter. catIndex 0 (= "all") returns everything;
13
+ * "★ favorites" filters by the favorite flag; "🕘 recent" orders by the
14
+ * recently-used slug list (most-recent first).
15
+ */
16
+ export declare function filterPromptPicker(all: PromptPickEntry[], categories: string[], catIndex: number, recentSlugs?: string[]): PromptPickEntry[];
17
+ export interface PromptPickerProps {
18
+ /** Already-filtered entries for the active category. */
19
+ entries: PromptPickEntry[];
20
+ selected: number;
21
+ category: string;
22
+ total: number;
23
+ }
24
+ /**
25
+ * Prompt library picker overlay (opened by a bare `/prompt` in the TUI).
26
+ * Presentational only — navigation/category/selection state lives in the
27
+ * reducer; Enter sets the input buffer to the chosen prompt's content (with
28
+ * any `{{variables}}` left in place for the user to fill inline).
29
+ */
30
+ export declare function PromptPicker({ entries, selected, category, total }: PromptPickerProps): React.ReactElement;
31
+ //# sourceMappingURL=prompt-picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-picker.d.ts","sourceRoot":"","sources":["../../src/components/prompt-picker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAmBD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,eAAe,EAAE,EACtB,UAAU,EAAE,MAAM,EAAE,EACpB,QAAQ,EAAE,MAAM,EAChB,WAAW,GAAE,MAAM,EAAO,GACzB,eAAe,EAAE,CASnB;AAMD,MAAM,WAAW,iBAAiB;IAChC,wDAAwD;IACxD,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,iBAAiB,GAAG,KAAK,CAAC,YAAY,CAyB1G"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Shared provider-family → Ink color mapping for the TUI model picker,
3
+ * auth panel, and statusline. All values are hex strings compatible with
4
+ * Ink's `<Text color="...">` prop.
5
+ *
6
+ * Palette is aligned with Catppuccin Mocha pastels from animation-style.tsx
7
+ * so the whole TUI feels cohesive.
8
+ */
9
+ /** Return a hex color for a known provider family, or a neutral fallback. */
10
+ export declare function colorForFamily(family: string | undefined): string;
11
+ /** Return a dimmer variant (used for unselected / secondary text). */
12
+ export declare function dimColorForFamily(family: string | undefined): string;
13
+ /** Map a provider or OAuth kind to a badge-like color label. */
14
+ export declare function badgeForKind(kind: 'oauth' | 'api_key' | 'session_token' | undefined): {
15
+ label: string;
16
+ color: string;
17
+ } | undefined;
18
+ /** Colors for the three OAuth kinds shown in the auth panel. */
19
+ export declare const OAUTH_KIND_COLORS: Record<string, string>;
20
+ /** Semantic UI colors used across auth / model panels. */
21
+ export declare const UI_COLORS: {
22
+ readonly focused: '#89b4fa';
23
+ readonly active: '#a6e3a1';
24
+ readonly inactive: '#585b70';
25
+ readonly warning: '#f9e2af';
26
+ readonly error: '#f38ba8';
27
+ readonly hint: '#f9e2af';
28
+ readonly border: '#89b4fa';
29
+ readonly title: '#89b4fa';
30
+ readonly selectedModel: '#89b4fa';
31
+ readonly dimmed: string | undefined;
32
+ };
33
+ /**
34
+ * Statusline item category colors — imported by status-bar.tsx and
35
+ * statusline-picker.tsx so chips are distinguishable at a glance.
36
+ *
37
+ * Keys match `StatuslineItem` union member names.
38
+ */
39
+ export declare const STATUSLINE_ITEM_COLORS: Record<string, string>;
40
+ //# sourceMappingURL=provider-colors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-colors.d.ts","sourceRoot":"","sources":["../../src/components/provider-colors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAEjE;AAED,sEAAsE;AACtE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAEpE;AA4CD,gEAAgE;AAChE,wBAAgB,YAAY,CAC1B,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,eAAe,GAAG,SAAS,GACtD;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAS9C;AAED,gEAAgE;AAChE,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIpD,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,SAAS;aACpB,OAAO,EAAE,SAAS;aAClB,MAAM,EAAE,SAAS;aACjB,QAAQ,EAAE,SAAS;aACnB,OAAO,EAAE,SAAS;aAClB,KAAK,EAAE,SAAS;aAChB,IAAI,EAAE,SAAS;aACf,MAAM,EAAE,SAAS;aACjB,KAAK,EAAE,SAAS;aAChB,aAAa,EAAE,SAAS;aACxB,MAAM,EAAe,MAAM,GAAG,SAAS;CAC/B,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA8CzD,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { ContentBlock } from '@wrongstack/core';
2
+ import type React from 'react';
3
+ export interface QueueItem {
4
+ id: number;
5
+ displayText: string;
6
+ blocks: ContentBlock[];
7
+ }
8
+ /**
9
+ * Compact queue panel. Shows pending messages with position numbers,
10
+ * auto-truncated labels, and a "+N more" overflow indicator. Designed
11
+ * to sit beside the chat area like the CompactTodosPanel.
12
+ */
13
+ export declare function QueuePanel({ items }: {
14
+ items: QueueItem[];
15
+ }): React.ReactElement;
16
+ //# sourceMappingURL=queue-panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue-panel.d.ts","sourceRoot":"","sources":["../../src/components/queue-panel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,SAAS,EAAE,CAAA;CAAE,GAAG,KAAK,CAAC,YAAY,CAuDhF"}
@@ -0,0 +1,16 @@
1
+ import type React from 'react';
2
+ import type { ResumeSessionEntry } from '../app.js';
3
+ export interface ResumePickerProps {
4
+ sessions: ResumeSessionEntry[];
5
+ selected: number;
6
+ busy: boolean;
7
+ error?: string | undefined;
8
+ hint?: string | undefined;
9
+ }
10
+ /**
11
+ * Interactive session-resume picker. Renders a scrollable list of recent
12
+ * sessions with metadata (id, date, tokens, tools, outcome badge) so the user
13
+ * can pick one to resume. The current session is grayed out and non-selectable.
14
+ */
15
+ export declare function ResumePicker({ sessions, selected, busy, error, hint, }: ResumePickerProps): React.ReactElement;
16
+ //# sourceMappingURL=resume-picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resume-picker.d.ts","sourceRoot":"","sources":["../../src/components/resume-picker.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAEpD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,IAAI,GACL,EAAE,iBAAiB,GAAG,KAAK,CAAC,YAAY,CAqExC"}
@@ -0,0 +1,60 @@
1
+ import type React from 'react';
2
+ import { type HistoryEntry, type HistoryProps } from './history.js';
3
+ export interface ScrollableHistoryProps extends HistoryProps {
4
+ /** Lines scrolled up from the bottom. 0 = pinned to the newest output. */
5
+ scrollOffset: number;
6
+ /** Height of the viewport in rows, computed by App from the bottom region. */
7
+ viewportRows: number;
8
+ /** Last measured total content height (rows). Drives the scrollbar thumb. */
9
+ totalLines: number;
10
+ /** Reports the measured total content height (rows) after every layout so
11
+ * App can clamp the scroll offset and drive the "N new lines" affordance. */
12
+ onMeasure: (totalLines: number) => void;
13
+ /** Optional cap on the width used for entry wrapping (right panel mode). */
14
+ maxWidth?: number | undefined;
15
+ }
16
+ /**
17
+ * Right-edge scrollbar for the managed viewport. A 1-column track with a thumb
18
+ * sized + positioned from (scrollOffset, totalLines, viewportRows). Always
19
+ * reserves its column so toggling scrollability doesn't reflow the content.
20
+ */
21
+ /** Pure thumb geometry for the scrollbar: where the thumb starts and how many
22
+ * cells it spans, given the track height, scroll offset, and total content
23
+ * height. Exported for testing. */
24
+ export declare function scrollbarThumb(rows: number, offset: number, total: number): {
25
+ top: number;
26
+ size: number;
27
+ scrollable: boolean;
28
+ };
29
+ /** Inverse of {@link scrollbarThumb}: given a clicked/dragged 0-based cell on a
30
+ * track of `rows` height, return the scroll offset (rows up from the bottom)
31
+ * that lands the visible window there. Cell 0 (top) → oldest content (max
32
+ * offset); cell rows-1 (bottom) → newest (offset 0). Exported for testing and
33
+ * the TUI scrollbar mouse handler. */
34
+ export declare function scrollOffsetForTrackRow(rows: number, total: number, cell: number): number;
35
+ /**
36
+ * Mouse-mode replacement for {@link History}. Instead of streaming each entry
37
+ * into the terminal's native scrollback via `<Static>`, it renders all entries
38
+ * into a fixed-height, `overflowY:'hidden'` viewport that the app scrolls
39
+ * itself. The terminal's wheel is captured by mouse mode, so scrolling MUST be
40
+ * managed here.
41
+ *
42
+ * Mechanism (Ink-5 verified): the parent Box is height-bounded with
43
+ * `justifyContent:'flex-end'`, so when content overflows, its BOTTOM aligns to
44
+ * the viewport bottom — newest output visible, oldest clipped off the top. That
45
+ * is the pinned (offset 0) state for free, with no height math. Scrolling up is
46
+ * a single `marginBottom={scrollOffset}` on the content box: it pushes the
47
+ * content up, dropping `scrollOffset` rows off the bottom of the clip and
48
+ * revealing that many older rows at the top. Ink's output clipper slices the
49
+ * over/underflowing child at both edges while preserving ANSI styling.
50
+ *
51
+ * Streaming tails (assistant + tool) are the last children of the content box,
52
+ * so they participate in the scrolled content and auto-follow when pinned.
53
+ *
54
+ * Wrapped in `React.memo` so keystrokes in the input buffer don't
55
+ * trigger a full managed-viewport re-layout. All props are primitives
56
+ * or stable reducer references.
57
+ */
58
+ export declare const ScrollableHistory: React.MemoExoticComponent<({ entries, streamingText, toolStream, scrollOffset, viewportRows, totalLines, onMeasure, maxWidth, setSuggestions, autonomyMode, todos, }: ScrollableHistoryProps) => React.ReactElement>;
59
+ export type { HistoryEntry };
60
+ //# sourceMappingURL=scrollable-history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scrollable-history.d.ts","sourceRoot":"","sources":["../../src/components/scrollable-history.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,YAAY,EAIlB,MAAM,cAAc,CAAC;AAOtB,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D,0EAA0E;IAC1E,YAAY,EAAE,MAAM,CAAC;IACrB,8EAA8E;IAC9E,YAAY,EAAE,MAAM,CAAC;IACrB,6EAA6E;IAC7E,UAAU,EAAE,MAAM,CAAC;IACnB;kFAC8E;IAC9E,SAAS,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAED;;;;GAIG;AACH;;oCAEoC;AACpC,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CASpD;AAED;;;;uCAIuC;AACvC,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMzF;AA2BD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,iBAAiB,wKAY3B,sBAAsB,KAAG,KAAK,CAAC,YAAY,CA8E5C,CAAC;AAGH,YAAY,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { SddBoardSnapshot } from '@wrongstack/sdd';
2
+ import type React from 'react';
3
+ /**
4
+ * Full-screen live SDD board overlay (Ctrl+B in TUI).
5
+ *
6
+ * Renders the CLI-owned multi-agent SDD run as FORGE-style topological
7
+ * dependency columns (Start / Phase N), with the live worker + worktree on
8
+ * each card. Read-only mirror of the EventBus `sdd.board.snapshot`; steering
9
+ * happens from the WebUI or slash commands.
10
+ */
11
+ export declare function SddBoardOverlay({ snapshot, focusColumn, }: {
12
+ snapshot: SddBoardSnapshot;
13
+ focusColumn?: number | null | undefined;
14
+ }): React.ReactElement;
15
+ //# sourceMappingURL=sdd-board-overlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdd-board-overlay.d.ts","sourceRoot":"","sources":["../../src/components/sdd-board-overlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAsC,MAAM,iBAAiB,CAAC;AAC5F,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA4E/B;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,WAAkB,GACnB,EAAE;IACD,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CACzC,GAAG,KAAK,CAAC,YAAY,CAkGrB"}