@wrongstack/tui 0.284.0 → 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.
- package/dist/app-initial-state.d.ts +26 -0
- package/dist/app-initial-state.d.ts.map +1 -0
- package/dist/app-reducer.d.ts +5 -0
- package/dist/app-reducer.d.ts.map +1 -0
- package/dist/app-state.d.ts +1801 -0
- package/dist/app-state.d.ts.map +1 -0
- package/dist/app.d.ts +579 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/clipboard.d.ts +2 -0
- package/dist/clipboard.d.ts.map +1 -0
- package/dist/components/agents-monitor.d.ts +49 -0
- package/dist/components/agents-monitor.d.ts.map +1 -0
- package/dist/components/animation-style.d.ts +51 -0
- package/dist/components/animation-style.d.ts.map +1 -0
- package/dist/components/audit-panel.d.ts +9 -0
- package/dist/components/audit-panel.d.ts.map +1 -0
- package/dist/components/auth-panel-model.d.ts +150 -0
- package/dist/components/auth-panel-model.d.ts.map +1 -0
- package/dist/components/auth-panel.d.ts +8 -0
- package/dist/components/auth-panel.d.ts.map +1 -0
- package/dist/components/autonomy-picker.d.ts +15 -0
- package/dist/components/autonomy-picker.d.ts.map +1 -0
- package/dist/components/brain-decision-prompt.d.ts +28 -0
- package/dist/components/brain-decision-prompt.d.ts.map +1 -0
- package/dist/components/brain-panel.d.ts +16 -0
- package/dist/components/brain-panel.d.ts.map +1 -0
- package/dist/components/checkpoint-timeline.d.ts +19 -0
- package/dist/components/checkpoint-timeline.d.ts.map +1 -0
- package/dist/components/confirm-prompt.d.ts +26 -0
- package/dist/components/confirm-prompt.d.ts.map +1 -0
- package/dist/components/continue-confirm-panel.d.ts +47 -0
- package/dist/components/continue-confirm-panel.d.ts.map +1 -0
- package/dist/components/coordinator-panel.d.ts +11 -0
- package/dist/components/coordinator-panel.d.ts.map +1 -0
- package/dist/components/design-picker.d.ts +14 -0
- package/dist/components/design-picker.d.ts.map +1 -0
- package/dist/components/enhance-panel.d.ts +36 -0
- package/dist/components/enhance-panel.d.ts.map +1 -0
- package/dist/components/esc-confirm-prompt.d.ts +17 -0
- package/dist/components/esc-confirm-prompt.d.ts.map +1 -0
- package/dist/components/f-key-picker.d.ts +13 -0
- package/dist/components/f-key-picker.d.ts.map +1 -0
- package/dist/components/file-picker.d.ts +8 -0
- package/dist/components/file-picker.d.ts.map +1 -0
- package/dist/components/fleet-monitor.d.ts +60 -0
- package/dist/components/fleet-monitor.d.ts.map +1 -0
- package/dist/components/fleet-panel.d.ts +69 -0
- package/dist/components/fleet-panel.d.ts.map +1 -0
- package/dist/components/goal-panel.d.ts +17 -0
- package/dist/components/goal-panel.d.ts.map +1 -0
- package/dist/components/help-overlay.d.ts +27 -0
- package/dist/components/help-overlay.d.ts.map +1 -0
- package/dist/components/help-panel.d.ts +16 -0
- package/dist/components/help-panel.d.ts.map +1 -0
- package/dist/components/history/assistant.d.ts +61 -0
- package/dist/components/history/assistant.d.ts.map +1 -0
- package/dist/components/history/banner.d.ts +13 -0
- package/dist/components/history/banner.d.ts.map +1 -0
- package/dist/components/history/code-block.d.ts +217 -0
- package/dist/components/history/code-block.d.ts.map +1 -0
- package/dist/components/history/entry.d.ts +19 -0
- package/dist/components/history/entry.d.ts.map +1 -0
- package/dist/components/history/index.d.ts +21 -0
- package/dist/components/history/index.d.ts.map +1 -0
- package/dist/components/history/replay.d.ts +44 -0
- package/dist/components/history/replay.d.ts.map +1 -0
- package/dist/components/history/types.d.ts +146 -0
- package/dist/components/history/types.d.ts.map +1 -0
- package/dist/components/history/utils.d.ts +65 -0
- package/dist/components/history/utils.d.ts.map +1 -0
- package/dist/components/history.d.ts +2 -0
- package/dist/components/history.d.ts.map +1 -0
- package/dist/components/input.d.ts +57 -0
- package/dist/components/input.d.ts.map +1 -0
- package/dist/components/kanban-panel.d.ts +7 -0
- package/dist/components/kanban-panel.d.ts.map +1 -0
- package/dist/components/key-hint-bar.d.ts +31 -0
- package/dist/components/key-hint-bar.d.ts.map +1 -0
- package/dist/components/live-activity-strip.d.ts +39 -0
- package/dist/components/live-activity-strip.d.ts.map +1 -0
- package/dist/components/mailbox-panel.d.ts +40 -0
- package/dist/components/mailbox-panel.d.ts.map +1 -0
- package/dist/components/mcp-picker.d.ts +18 -0
- package/dist/components/mcp-picker.d.ts.map +1 -0
- package/dist/components/mode-picker.d.ts +17 -0
- package/dist/components/mode-picker.d.ts.map +1 -0
- package/dist/components/model-picker.d.ts +32 -0
- package/dist/components/model-picker.d.ts.map +1 -0
- package/dist/components/phase-monitor.d.ts +33 -0
- package/dist/components/phase-monitor.d.ts.map +1 -0
- package/dist/components/phase-panel.d.ts +22 -0
- package/dist/components/phase-panel.d.ts.map +1 -0
- package/dist/components/plan-panel.d.ts +17 -0
- package/dist/components/plan-panel.d.ts.map +1 -0
- package/dist/components/plugin-picker.d.ts +22 -0
- package/dist/components/plugin-picker.d.ts.map +1 -0
- package/dist/components/process-list.d.ts +14 -0
- package/dist/components/process-list.d.ts.map +1 -0
- package/dist/components/project-picker.d.ts +21 -0
- package/dist/components/project-picker.d.ts.map +1 -0
- package/dist/components/prompt-picker.d.ts +31 -0
- package/dist/components/prompt-picker.d.ts.map +1 -0
- package/dist/components/provider-colors.d.ts +40 -0
- package/dist/components/provider-colors.d.ts.map +1 -0
- package/dist/components/queue-panel.d.ts +16 -0
- package/dist/components/queue-panel.d.ts.map +1 -0
- package/dist/components/resume-picker.d.ts +16 -0
- package/dist/components/resume-picker.d.ts.map +1 -0
- package/dist/components/scrollable-history.d.ts +60 -0
- package/dist/components/scrollable-history.d.ts.map +1 -0
- package/dist/components/sdd-board-overlay.d.ts +15 -0
- package/dist/components/sdd-board-overlay.d.ts.map +1 -0
- package/dist/components/send-mode-picker.d.ts +64 -0
- package/dist/components/send-mode-picker.d.ts.map +1 -0
- package/dist/components/sessions-panel.d.ts +46 -0
- package/dist/components/sessions-panel.d.ts.map +1 -0
- package/dist/components/settings-picker.d.ts +371 -0
- package/dist/components/settings-picker.d.ts.map +1 -0
- package/dist/components/shadow-panel.d.ts +13 -0
- package/dist/components/shadow-panel.d.ts.map +1 -0
- package/dist/components/shell-command-warning.d.ts +9 -0
- package/dist/components/shell-command-warning.d.ts.map +1 -0
- package/dist/components/slash-menu.d.ts +9 -0
- package/dist/components/slash-menu.d.ts.map +1 -0
- package/dist/components/status-bar.d.ts +378 -0
- package/dist/components/status-bar.d.ts.map +1 -0
- package/dist/components/statusline-picker.d.ts +55 -0
- package/dist/components/statusline-picker.d.ts.map +1 -0
- package/dist/components/suggestions.d.ts +9 -0
- package/dist/components/suggestions.d.ts.map +1 -0
- package/dist/components/todos-monitor.d.ts +13 -0
- package/dist/components/todos-monitor.d.ts.map +1 -0
- package/dist/components/tools-picker.d.ts +20 -0
- package/dist/components/tools-picker.d.ts.map +1 -0
- package/dist/components/worktree-monitor.d.ts +23 -0
- package/dist/components/worktree-monitor.d.ts.map +1 -0
- package/dist/components/worktree-panel.d.ts +21 -0
- package/dist/components/worktree-panel.d.ts.map +1 -0
- package/dist/f-key-panels.d.ts +46 -0
- package/dist/f-key-panels.d.ts.map +1 -0
- package/dist/file-search.d.ts +3 -0
- package/dist/file-search.d.ts.map +1 -0
- package/dist/fn-keys.d.ts +20 -0
- package/dist/fn-keys.d.ts.map +1 -0
- package/dist/git-info.d.ts +20 -0
- package/dist/git-info.d.ts.map +1 -0
- package/dist/heap-watchdog.d.ts +41 -0
- package/dist/heap-watchdog.d.ts.map +1 -0
- package/dist/highlight.d.ts +30 -0
- package/dist/highlight.d.ts.map +1 -0
- package/dist/hit-test.d.ts +75 -0
- package/dist/hit-test.d.ts.map +1 -0
- package/dist/hooks/use-auth-panel.d.ts +38 -0
- package/dist/hooks/use-auth-panel.d.ts.map +1 -0
- package/dist/hooks/use-autonomous-coordinator.d.ts +21 -0
- package/dist/hooks/use-autonomous-coordinator.d.ts.map +1 -0
- package/dist/hooks/use-brain-events.d.ts +7 -0
- package/dist/hooks/use-brain-events.d.ts.map +1 -0
- package/dist/hooks/use-director-fleet-bridge.d.ts +17 -0
- package/dist/hooks/use-director-fleet-bridge.d.ts.map +1 -0
- package/dist/hooks/use-file-search.d.ts +42 -0
- package/dist/hooks/use-file-search.d.ts.map +1 -0
- package/dist/hooks/use-input-history-persistence.d.ts +14 -0
- package/dist/hooks/use-input-history-persistence.d.ts.map +1 -0
- package/dist/hooks/use-mode-picker.d.ts +15 -0
- package/dist/hooks/use-mode-picker.d.ts.map +1 -0
- package/dist/hooks/use-paste-handling.d.ts +30 -0
- package/dist/hooks/use-paste-handling.d.ts.map +1 -0
- package/dist/hooks/use-picker-keys.d.ts +58 -0
- package/dist/hooks/use-picker-keys.d.ts.map +1 -0
- package/dist/hooks/use-prompt-picker.d.ts +28 -0
- package/dist/hooks/use-prompt-picker.d.ts.map +1 -0
- package/dist/hooks/use-queue-manager.d.ts +26 -0
- package/dist/hooks/use-queue-manager.d.ts.map +1 -0
- package/dist/hooks/use-statusline-hidden-sync.d.ts +14 -0
- package/dist/hooks/use-statusline-hidden-sync.d.ts.map +1 -0
- package/dist/hooks/use-statusline-state.d.ts +44 -0
- package/dist/hooks/use-statusline-state.d.ts.map +1 -0
- package/dist/hooks/use-stream-chip-expiration.d.ts +25 -0
- package/dist/hooks/use-stream-chip-expiration.d.ts.map +1 -0
- package/dist/hooks/use-subagent-events.d.ts +8 -0
- package/dist/hooks/use-subagent-events.d.ts.map +1 -0
- package/dist/hooks/use-token-counter-refresh.d.ts +30 -0
- package/dist/hooks/use-token-counter-refresh.d.ts.map +1 -0
- package/dist/hooks/use-tui-controllers.d.ts +31 -0
- package/dist/hooks/use-tui-controllers.d.ts.map +1 -0
- package/dist/hooks/use-tui-event-bridge.d.ts +29 -0
- package/dist/hooks/use-tui-event-bridge.d.ts.map +1 -0
- package/dist/hooks/use-working-dir-chip.d.ts +8 -0
- package/dist/hooks/use-working-dir-chip.d.ts.map +1 -0
- package/dist/index.d.ts +11 -910
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2633 -2188
- package/dist/index.js.map +7 -1
- package/dist/ink.d.ts +20 -0
- package/dist/ink.d.ts.map +1 -0
- package/dist/input-editing.d.ts +76 -0
- package/dist/input-editing.d.ts.map +1 -0
- package/dist/input-tokens.d.ts +65 -0
- package/dist/input-tokens.d.ts.map +1 -0
- package/dist/kill-slash.d.ts +3 -0
- package/dist/kill-slash.d.ts.map +1 -0
- package/dist/markdown-table.d.ts +45 -0
- package/dist/markdown-table.d.ts.map +1 -0
- package/dist/markdown.d.ts +47 -0
- package/dist/markdown.d.ts.map +1 -0
- package/dist/mouse.d.ts +73 -0
- package/dist/mouse.d.ts.map +1 -0
- package/dist/on-panel-open.d.ts +62 -0
- package/dist/on-panel-open.d.ts.map +1 -0
- package/dist/paste-accumulator.d.ts +19 -0
- package/dist/paste-accumulator.d.ts.map +1 -0
- package/dist/ps-slash.d.ts +7 -0
- package/dist/ps-slash.d.ts.map +1 -0
- package/dist/queue-slash.d.ts +24 -0
- package/dist/queue-slash.d.ts.map +1 -0
- package/dist/reducers/fleet.d.ts +16 -0
- package/dist/reducers/fleet.d.ts.map +1 -0
- package/dist/reducers/helpers.d.ts +38 -0
- package/dist/reducers/helpers.d.ts.map +1 -0
- package/dist/rehydrate-history.d.ts +40 -0
- package/dist/rehydrate-history.d.ts.map +1 -0
- package/dist/run-tui.d.ts +507 -0
- package/dist/run-tui.d.ts.map +1 -0
- package/dist/slash-command-search.d.ts +10 -0
- package/dist/slash-command-search.d.ts.map +1 -0
- package/dist/steering-preamble.d.ts +25 -0
- package/dist/steering-preamble.d.ts.map +1 -0
- package/dist/submit-history.d.ts +17 -0
- package/dist/submit-history.d.ts.map +1 -0
- package/dist/terminal-title.d.ts +12 -0
- package/dist/terminal-title.d.ts.map +1 -0
- package/dist/theme.d.ts +91 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/thinking-word.d.ts +26 -0
- package/dist/thinking-word.d.ts.map +1 -0
- package/dist/tool-glyph.d.ts +18 -0
- package/dist/tool-glyph.d.ts.map +1 -0
- package/package.json +8 -9
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { SessionEvent } from '@wrongstack/core';
|
|
2
|
+
import type { HistoryEntry } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Render a SessionEvent back into a TUI HistoryEntry so a resumed session
|
|
5
|
+
* displays exactly what the user saw during live interaction.
|
|
6
|
+
*
|
|
7
|
+
* ## Entry mapping
|
|
8
|
+
*
|
|
9
|
+
* | Event type | HistoryEntry kind |
|
|
10
|
+
* |--------------------------|-------------------|
|
|
11
|
+
* | `user_input` | `user` |
|
|
12
|
+
* | `llm_response` | `assistant` |
|
|
13
|
+
* | `tool_use` + `tool_result` | `tool` (paired) |
|
|
14
|
+
* | `tool_call_start`/`tool_call_end` | `tool` |
|
|
15
|
+
* | `compaction` | `info` |
|
|
16
|
+
* | `error` | `error` |
|
|
17
|
+
* | `provider_retry` | `warn` |
|
|
18
|
+
* | `provider_error` | `error` |
|
|
19
|
+
* | `checkpoint` | `info` |
|
|
20
|
+
* | `agent_spawned`/`agent_stopped` | `subagent` |
|
|
21
|
+
* | `agent_error` | `subagent` |
|
|
22
|
+
* | `mode_changed` | `info` |
|
|
23
|
+
* | `skill_activated`/`skill_deactivated` | `info` |
|
|
24
|
+
* | `message_truncated` | `warn` |
|
|
25
|
+
*
|
|
26
|
+
* ## Non-resumable events (subagent transcripts)
|
|
27
|
+
*
|
|
28
|
+
* Subagent events (`agent_spawned`, `agent_stopped`, `agent_error`) are
|
|
29
|
+
* rendered as `subagent` entries in the main TUI history but the full
|
|
30
|
+
* subagent tool-call details live in per-subagent JSONL files. The main
|
|
31
|
+
* session only holds the lifecycle markers.
|
|
32
|
+
*
|
|
33
|
+
* ## Compaction events
|
|
34
|
+
*
|
|
35
|
+
* Compaction boundaries are rendered as `info` entries showing how many
|
|
36
|
+
* tokens were collapsed. This keeps the display neat without pretending
|
|
37
|
+
* the full verbose context never existed.
|
|
38
|
+
*
|
|
39
|
+
* @param events Parsed SessionEvent[] from session JSONL
|
|
40
|
+
* @param startId Starting id counter for the generated entries
|
|
41
|
+
* @returns Ordered HistoryEntry[] ready for display
|
|
42
|
+
*/
|
|
43
|
+
export declare function replaySessionEvents(events: SessionEvent[], startId: number): HistoryEntry[];
|
|
44
|
+
//# sourceMappingURL=replay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replay.d.ts","sourceRoot":"","sources":["../../../src/components/history/replay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,YAAY,EAAE,EACtB,OAAO,EAAE,MAAM,GACd,YAAY,EAAE,CAgChB"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import type { TodoItem } from '@wrongstack/core';
|
|
2
|
+
import type { Lang } from '../../highlight.js';
|
|
3
|
+
export type HistoryEntry = {
|
|
4
|
+
id: number;
|
|
5
|
+
kind: 'user';
|
|
6
|
+
text: string;
|
|
7
|
+
queued?: boolean | undefined;
|
|
8
|
+
pasteContent?: string | undefined;
|
|
9
|
+
} | {
|
|
10
|
+
id: number;
|
|
11
|
+
kind: 'assistant';
|
|
12
|
+
text: string;
|
|
13
|
+
} | {
|
|
14
|
+
id: number;
|
|
15
|
+
kind: 'thinking';
|
|
16
|
+
text: string;
|
|
17
|
+
} | {
|
|
18
|
+
id: number;
|
|
19
|
+
kind: 'tool';
|
|
20
|
+
name: string;
|
|
21
|
+
durationMs: number;
|
|
22
|
+
ok: boolean;
|
|
23
|
+
input?: unknown | undefined;
|
|
24
|
+
output?: string | undefined;
|
|
25
|
+
/** Full byte length of the result body the model actually received
|
|
26
|
+
* (post-cap, post-scrub). Carried separately because `output` is a
|
|
27
|
+
* ~400-char preview — `outputBytes` is what the model paid for. */
|
|
28
|
+
outputBytes?: number | undefined;
|
|
29
|
+
/** ~3.5 chars/token estimate over `outputBytes`. Cheap to render in
|
|
30
|
+
* the chip; the authoritative count lives in provider.response.usage. */
|
|
31
|
+
outputTokens?: number | undefined;
|
|
32
|
+
/** Real line count for tools that have a meaningful one — read counts
|
|
33
|
+
* numbered prefixes, shell/grep/logs count newlines. Undefined for
|
|
34
|
+
* tools without a line notion (json, fetch, …). */
|
|
35
|
+
outputLines?: number | undefined;
|
|
36
|
+
/**
|
|
37
|
+
* Per-tool on-screen result render mode. `simple` hides the body
|
|
38
|
+
* preview and shows only meta (line count, byte size); `extend`
|
|
39
|
+
* shows the full preview. Mirrors the CLI's `setResultRenderMode`
|
|
40
|
+
* state. The frontend TUI reads this off the same
|
|
41
|
+
* `tools.resultRenderMode[name]` config the CLI uses.
|
|
42
|
+
*/
|
|
43
|
+
resultRenderMode?: 'simple' | 'extend' | undefined;
|
|
44
|
+
} | {
|
|
45
|
+
id: number;
|
|
46
|
+
kind: 'info';
|
|
47
|
+
text: string;
|
|
48
|
+
} | {
|
|
49
|
+
id: number;
|
|
50
|
+
kind: 'warn';
|
|
51
|
+
text: string;
|
|
52
|
+
} | {
|
|
53
|
+
id: number;
|
|
54
|
+
kind: 'error';
|
|
55
|
+
text: string;
|
|
56
|
+
} | {
|
|
57
|
+
id: number;
|
|
58
|
+
kind: 'turn-summary';
|
|
59
|
+
text: string;
|
|
60
|
+
} | {
|
|
61
|
+
id: number;
|
|
62
|
+
kind: 'brain';
|
|
63
|
+
status: 'thinking' | 'answered' | 'ask_human' | 'denied' | 'intervention';
|
|
64
|
+
source: string;
|
|
65
|
+
risk: 'low' | 'medium' | 'high' | 'critical';
|
|
66
|
+
question: string;
|
|
67
|
+
decision?: string | undefined;
|
|
68
|
+
rationale?: string | undefined;
|
|
69
|
+
} | {
|
|
70
|
+
id: number;
|
|
71
|
+
kind: 'banner';
|
|
72
|
+
version: string;
|
|
73
|
+
provider: string;
|
|
74
|
+
model: string;
|
|
75
|
+
cwd: string;
|
|
76
|
+
family?: string | undefined;
|
|
77
|
+
keyTail?: string | undefined;
|
|
78
|
+
} | {
|
|
79
|
+
id: number;
|
|
80
|
+
kind: 'confirm';
|
|
81
|
+
toolName: string;
|
|
82
|
+
input: unknown;
|
|
83
|
+
suggestedPattern: string;
|
|
84
|
+
} | {
|
|
85
|
+
id: number;
|
|
86
|
+
kind: 'subagent';
|
|
87
|
+
agentLabel: string;
|
|
88
|
+
agentColor: string;
|
|
89
|
+
icon: string;
|
|
90
|
+
text: string;
|
|
91
|
+
detail?: string | undefined;
|
|
92
|
+
};
|
|
93
|
+
export interface HistoryProps {
|
|
94
|
+
entries: HistoryEntry[];
|
|
95
|
+
/**
|
|
96
|
+
* Store parsed next steps in the shared suggestion store so /next 1 works.
|
|
97
|
+
* Called by the Entry component after parsing each assistant message.
|
|
98
|
+
*/
|
|
99
|
+
setSuggestions?: ((steps: string[]) => void) | undefined;
|
|
100
|
+
/**
|
|
101
|
+
* Current autonomy mode. When 'auto', a marker is shown next to the first
|
|
102
|
+
* next-step suggestion indicating it will be auto-submitted.
|
|
103
|
+
*/
|
|
104
|
+
autonomyMode?: string | undefined;
|
|
105
|
+
/**
|
|
106
|
+
* Generation counter for wholesale history replacements (session resume).
|
|
107
|
+
* Keys the internal <Static> so a replacement remounts it — Ink's Static
|
|
108
|
+
* tracks written items by index and would otherwise skip replayed entries
|
|
109
|
+
* whenever the new array is shorter than what it already printed.
|
|
110
|
+
*/
|
|
111
|
+
generation?: number | undefined;
|
|
112
|
+
streamingText?: string | undefined;
|
|
113
|
+
/**
|
|
114
|
+
* Optional live tail of the currently streaming tool. Rendered below the
|
|
115
|
+
* assistant tail so the user sees both at once: model thinking and tool
|
|
116
|
+
* output. Cleared automatically when the tool's `tool.executed` event
|
|
117
|
+
* fires and the final entry lands in `entries`.
|
|
118
|
+
*/
|
|
119
|
+
toolStream?: {
|
|
120
|
+
toolUseId: string;
|
|
121
|
+
name: string;
|
|
122
|
+
text: string;
|
|
123
|
+
startedAt: number;
|
|
124
|
+
} | null;
|
|
125
|
+
/**
|
|
126
|
+
* Minimum number of files before the per-tool multi-file diff summary
|
|
127
|
+
* footer is rendered. `0` suppresses the footer entirely; any positive
|
|
128
|
+
* number sets the cutoff. When `undefined`, the code-block module's
|
|
129
|
+
* default (`MULTI_DIFF_SUMMARY_THRESHOLD`) is used.
|
|
130
|
+
*/
|
|
131
|
+
multiDiffSummaryThreshold?: number | undefined;
|
|
132
|
+
/**
|
|
133
|
+
* Live todo list. When it has any `pending`/`in_progress` items, the
|
|
134
|
+
* `💡 NEXT STEPS` panel is hidden and the suggestion store is not
|
|
135
|
+
* written from the render path — mirrors the host callback's
|
|
136
|
+
* `hasOpenTodos` gate (b0970387) so the two paths can't disagree about
|
|
137
|
+
* whether suggestions are available.
|
|
138
|
+
*/
|
|
139
|
+
todos?: readonly TodoItem[] | undefined;
|
|
140
|
+
}
|
|
141
|
+
export interface BodySegment {
|
|
142
|
+
type: 'prose' | 'code';
|
|
143
|
+
text: string;
|
|
144
|
+
lang?: Lang | undefined;
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/history/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export declare function shortenPath(p: string, max: number): string;
|
|
3
|
+
export declare function previewArgs(input: unknown): string;
|
|
4
|
+
export declare function previewOutput(output: string): string;
|
|
5
|
+
export declare function fmtTok(n: number): string;
|
|
6
|
+
export declare function fmtDuration(ms: number): string;
|
|
7
|
+
export declare function fmtBytes(n: number): string;
|
|
8
|
+
export declare function truncMid(s: string, max: number): string;
|
|
9
|
+
export declare function stringOf(v: unknown): string | undefined;
|
|
10
|
+
export declare function numOf(v: unknown): number | undefined;
|
|
11
|
+
export declare function tryParseJson(s: string): unknown;
|
|
12
|
+
export declare function scanNumberedRange(text: string): {
|
|
13
|
+
first?: number | undefined;
|
|
14
|
+
last?: number | undefined;
|
|
15
|
+
count: number;
|
|
16
|
+
};
|
|
17
|
+
export declare function countLines(text: string): number;
|
|
18
|
+
export declare function firstNonEmpty(text: string): string | undefined;
|
|
19
|
+
export declare function formatMatchHit(hit: unknown): string | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* Render the most useful single-line description of a tool call's arguments.
|
|
22
|
+
*/
|
|
23
|
+
export declare function formatToolArgs(toolName: string, input: unknown): string;
|
|
24
|
+
/**
|
|
25
|
+
* Distil a tool's result text into 0–N digest lines the renderer can stack.
|
|
26
|
+
*/
|
|
27
|
+
export declare function formatToolOutput(toolName: string, output: string | undefined, ok: boolean, _outputBytes?: number | undefined, outputLines?: number | undefined): string[];
|
|
28
|
+
export type ToolVisualLineKind = 'ok' | 'warn' | 'error' | 'meta' | 'path' | 'match' | 'code' | 'stdout' | 'stderr';
|
|
29
|
+
export interface ToolVisualLine {
|
|
30
|
+
kind: ToolVisualLineKind;
|
|
31
|
+
text: string;
|
|
32
|
+
marker?: string | undefined;
|
|
33
|
+
lineNo?: string | undefined;
|
|
34
|
+
path?: string | undefined;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Build richer terminal-native rows for common tool outputs. This handles both
|
|
38
|
+
* raw JSON-shaped results used by unit tests and the compact serializer text
|
|
39
|
+
* emitted in real sessions.
|
|
40
|
+
*/
|
|
41
|
+
export declare function formatToolVisualOutput(toolName: string, output: string | undefined, ok: boolean, input?: unknown | undefined): ToolVisualLine[] | undefined;
|
|
42
|
+
export declare function ToolOutputLines({ lines, hasFollowingBlock, }: {
|
|
43
|
+
lines: ToolVisualLine[];
|
|
44
|
+
hasFollowingBlock?: boolean | undefined;
|
|
45
|
+
}): React.ReactElement;
|
|
46
|
+
export declare const MAX_STREAM_DISPLAY_CHARS = 480;
|
|
47
|
+
/**
|
|
48
|
+
* Build the CONSTANT-height content block for the live tool-stream box: always
|
|
49
|
+
* exactly `maxLines` rows, newest-pinned-to-bottom, every line truncated to
|
|
50
|
+
* `contentWidth` so nothing wraps. Holding the row count fixed is what stops the
|
|
51
|
+
* live region from growing (and thus scrolling the terminal + leaking the header
|
|
52
|
+
* into scrollback) as output streams in. Pure + exported for testing.
|
|
53
|
+
*/
|
|
54
|
+
export declare function streamBoxRows(text: string, maxLines: number, contentWidth: number): Array<{
|
|
55
|
+
text: string;
|
|
56
|
+
italic?: boolean | undefined;
|
|
57
|
+
}>;
|
|
58
|
+
export declare const ToolStreamBox: React.MemoExoticComponent<({ name, text, startedAt, termWidth, }: {
|
|
59
|
+
name: string;
|
|
60
|
+
text: string;
|
|
61
|
+
startedAt: number;
|
|
62
|
+
termWidth: number;
|
|
63
|
+
}) => React.ReactElement>;
|
|
64
|
+
export declare function tailForDisplay(text: string, maxChars: number): string;
|
|
65
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/history/utils.tsx"],"names":[],"mappings":"AACA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAOnD,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAG1D;AAID,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAQlD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpD;AAOD,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAKxC;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAK9C;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAI1C;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAEvD;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAEpD;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAQ/C;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG;IAC/C,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;CACf,CAgBA;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAI9D;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAc/D;AAyBD;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CA0NvE;AAuDD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,EAAE,EAAE,OAAO,EACX,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,EACjC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,GAC/B,MAAM,EAAE,CAucV;AAMD,MAAM,MAAM,kBAAkB,GAC1B,IAAI,GACJ,MAAM,GACN,OAAO,GACP,MAAM,GACN,MAAM,GACN,OAAO,GACP,MAAM,GACN,QAAQ,GACR,QAAQ,CAAC;AAEb,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,kBAAkB,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AAKD;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,EAAE,EAAE,OAAO,EACX,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,GAC1B,cAAc,EAAE,GAAG,SAAS,CA2E9B;AAED,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,iBAAiB,GAClB,EAAE;IACD,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,iBAAiB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACzC,GAAG,KAAK,CAAC,YAAY,CAkCrB;AA8/BD,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAI5C;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACnB,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAAE,CAAC,CAevD;AAED,eAAO,MAAM,aAAa,oEAKvB;IACD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,KAAG,KAAK,CAAC,YAAY,CAyCpB,CAAC;AAEH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQrE"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { History, type HistoryEntry, type HistoryProps, type BodySegment, type DiffFilePreview, type DiffLineKind, type DiffLineRow, type DiffPreview, type MultiDiffSummary, MULTI_DIFF_SUMMARY_THRESHOLD, Banner, CodeBlock, DiffBlock, DiffFileBlock, Entry, MESSAGE_PANEL_BORDER_WIDTH, MESSAGE_PANEL_CHROME_WIDTH, MESSAGE_PANEL_MARGIN, AssistantBody, AssistantTail, splitFencedBlocks, extractDiffPreview, extractMultiFileDiffs, extractReplaceDiffs, formatMultiDiffSummary, parseUnifiedDiff, shortenPath, previewArgs, previewOutput, summarizeMultiFileDiffs, fmtTok, fmtDuration, fmtBytes, truncMid, stringOf, numOf, tryParseJson, scanNumberedRange, countLines, firstNonEmpty, formatMatchHit, formatToolArgs, formatToolOutput, formatToolVisualOutput, type ToolVisualLine, type ToolVisualLineKind, ToolOutputLines, ToolStreamBox, streamBoxRows, assistantTailRows, MAX_STREAM_DISPLAY_CHARS, tailForDisplay, assistantContentWidth } from './history/index.js';
|
|
2
|
+
//# sourceMappingURL=history.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/components/history.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,gBAAgB,EAAE,4BAA4B,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,KAAK,cAAc,EAAE,KAAK,kBAAkB,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type React from 'react';
|
|
2
|
+
import { type MouseEventInfo } from '../mouse.js';
|
|
3
|
+
export interface InputProps {
|
|
4
|
+
prompt?: string | undefined;
|
|
5
|
+
value: string;
|
|
6
|
+
cursor: number;
|
|
7
|
+
disabled?: boolean | undefined;
|
|
8
|
+
hint?: string | undefined;
|
|
9
|
+
/**
|
|
10
|
+
* When true the visible prompt rows are replaced by an empty placeholder of
|
|
11
|
+
* `placeholderHeight` rows, but BOTH keyboard listeners (the Ink `useInput`
|
|
12
|
+
* and the raw-stdin parser that produces F-keys / Home / End / wheel) stay
|
|
13
|
+
* mounted. This is what keeps the central `handleKey` router — and therefore
|
|
14
|
+
* the F-key/Esc toggles that open and CLOSE the monitor overlays — alive
|
|
15
|
+
* while an overlay occupies the bottom region. Unmounting the Input here is
|
|
16
|
+
* what previously left overlays (e.g. the F3 agents monitor) un-closable.
|
|
17
|
+
*/
|
|
18
|
+
hidden?: boolean | undefined;
|
|
19
|
+
/** Row count for the hidden placeholder so the bottom region never resizes. */
|
|
20
|
+
placeholderHeight?: number | undefined;
|
|
21
|
+
onKey: (input: string, key: KeyEvent) => void;
|
|
22
|
+
}
|
|
23
|
+
export interface KeyEvent {
|
|
24
|
+
upArrow: boolean;
|
|
25
|
+
downArrow: boolean;
|
|
26
|
+
leftArrow: boolean;
|
|
27
|
+
rightArrow: boolean;
|
|
28
|
+
return: boolean;
|
|
29
|
+
escape: boolean;
|
|
30
|
+
ctrl: boolean;
|
|
31
|
+
meta: boolean;
|
|
32
|
+
shift: boolean;
|
|
33
|
+
tab: boolean;
|
|
34
|
+
backspace: boolean;
|
|
35
|
+
delete: boolean;
|
|
36
|
+
pageUp: boolean;
|
|
37
|
+
pageDown: boolean;
|
|
38
|
+
home: boolean;
|
|
39
|
+
end: boolean;
|
|
40
|
+
/** Mouse wheel scroll: positive = up (away from user), negative = down. */
|
|
41
|
+
wheelDeltaY?: number | undefined;
|
|
42
|
+
/**
|
|
43
|
+
* Full mouse report (click/release/drag/hover/wheel) when terminal mouse
|
|
44
|
+
* tracking is enabled. `wheelDeltaY` above is the back-compat shorthand for
|
|
45
|
+
* `mouse.wheel`; consumers wanting clicks/coords should read `mouse`.
|
|
46
|
+
*/
|
|
47
|
+
mouse?: MouseEventInfo | undefined;
|
|
48
|
+
/** Function-key number 1–12 when a plain F-key was pressed, else undefined.
|
|
49
|
+
* Ink's useInput does not decode F-keys, so these are caught from raw stdin
|
|
50
|
+
* (same mechanism as Home/End) and surfaced here. F-keys are terminal-safe
|
|
51
|
+
* aliases for chords some terminals intercept (e.g. Windows Terminal eats
|
|
52
|
+
* Ctrl+F for "Find"). */
|
|
53
|
+
fn?: number | undefined;
|
|
54
|
+
}
|
|
55
|
+
export declare const EMPTY_KEY: KeyEvent;
|
|
56
|
+
export declare const Input: React.MemoExoticComponent<({ prompt, value, cursor, disabled, hint, hidden, placeholderHeight, onKey, }: InputProps) => React.ReactElement>;
|
|
57
|
+
//# sourceMappingURL=input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/components/input.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,KAAK,cAAc,EAAwC,MAAM,aAAa,CAAC;AACxF,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,+EAA+E;IAC/E,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,KAAK,IAAI,CAAC;CAC/C;AAuDD,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;IACb,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC;;;;OAIG;IACH,KAAK,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACnC;;;;8BAI0B;IAC1B,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACzB;AAyCD,eAAO,MAAM,SAAS,EAAE,QAiBvB,CAAC;AAEF,eAAO,MAAM,KAAK,2GASf,UAAU,KAAG,KAAK,CAAC,YAAY,CAmNhC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kanban-panel.d.ts","sourceRoot":"","sources":["../../src/components/kanban-panel.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAOD,wBAAgB,WAAW,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,gBAAgB,GAAG,KAAK,CAAC,YAAY,CAqR1F"}
|
|
@@ -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,32 @@
|
|
|
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
|
+
/**
|
|
25
|
+
* Two-step Ink overlay for the TUI's `/model` command.
|
|
26
|
+
* Step 1: pick a provider that has a key.
|
|
27
|
+
* Step 2: pick a model bound to that provider (type to filter).
|
|
28
|
+
*
|
|
29
|
+
* Driven entirely by props — App owns cursor state, key events, and search.
|
|
30
|
+
*/
|
|
31
|
+
export declare function ModelPicker({ step, providerOptions, filteredOptions, selected, pickedProviderId, searchQuery, hint, }: ModelPickerProps): React.ReactElement;
|
|
32
|
+
//# 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;CAC3B;AAoBD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,eAAe,EACf,eAAe,EACf,QAAQ,EACR,gBAAgB,EAChB,WAAW,EACX,IAAI,GACL,EAAE,gBAAgB,GAAG,KAAK,CAAC,YAAY,CAgGvC"}
|
|
@@ -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"}
|