@wrongstack/tui 1.0.19 → 1.0.26
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-action-type.d.ts +85 -1
- package/dist/app-key-handler.d.ts +1 -1
- package/dist/app-panel-state.d.ts +561 -0
- package/dist/app-props.d.ts +21 -1
- package/dist/app-reducer.d.ts +1 -1
- package/dist/app-state-core-types.d.ts +13 -0
- package/dist/app-state.d.ts +8 -534
- package/dist/app-status-region.d.ts +2 -1
- package/dist/app-ui-state.d.ts +2 -0
- package/dist/app-view-contract.d.ts +1 -1
- package/dist/app-view-pickers.d.ts +2 -1
- package/dist/app-view-state.d.ts +2 -0
- package/dist/app.d.ts +2 -2
- package/dist/auth-panel-model.d.ts +1 -0
- package/dist/background-strip-model.d.ts +65 -0
- package/dist/brain-panel-model.d.ts +7 -7
- package/dist/chat-search-slash.d.ts +15 -0
- package/dist/clipboard.d.ts +14 -1
- package/dist/components/agent-monitor-presentation.d.ts +61 -0
- package/dist/components/agents-monitor.d.ts +3 -49
- package/dist/components/audit-panel.d.ts +2 -1
- package/dist/components/auth-panel.d.ts +3 -1
- package/dist/components/background-strip.d.ts +20 -0
- package/dist/components/brain-panel.d.ts +3 -1
- package/dist/components/chat-search-bar.d.ts +19 -0
- package/dist/components/checkpoint-timeline.d.ts +7 -3
- package/dist/components/confirm-prompt.d.ts +6 -7
- package/dist/components/connections-panel.d.ts +2 -1
- package/dist/components/context-panel-sections.d.ts +53 -0
- package/dist/components/context-panel-types.d.ts +66 -0
- package/dist/components/context-panel.d.ts +2 -66
- package/dist/components/exit-confirm-panel.d.ts +2 -0
- package/dist/components/file-picker.d.ts +2 -1
- package/dist/components/help-panel.d.ts +5 -3
- package/dist/components/history/code-block.d.ts +2 -136
- package/dist/components/history/diff-model.d.ts +143 -0
- package/dist/components/history/scroll-controller-types.d.ts +11 -0
- package/dist/components/history/scrollbar-rail.d.ts +14 -2
- package/dist/components/history/use-history-controller.d.ts +5 -0
- package/dist/components/history/utils.d.ts +3 -9
- package/dist/components/history/visual-tool-output.d.ts +8 -0
- package/dist/components/input.d.ts +1 -1
- package/dist/components/kanban-panel-presentation.d.ts +114 -0
- package/dist/components/kanban-panel.d.ts +2 -47
- package/dist/components/mailbox-panel.d.ts +2 -1
- package/dist/components/mcp-picker.d.ts +3 -1
- package/dist/components/mode-picker.d.ts +3 -1
- package/dist/components/model-picker.d.ts +1 -1
- package/dist/components/monitor-shell.d.ts +19 -4
- package/dist/components/phase-monitor.d.ts +3 -1
- package/dist/components/plugin-picker.d.ts +3 -1
- package/dist/components/powerline-rail.d.ts +6 -3
- package/dist/components/prompt-picker-model.d.ts +16 -0
- package/dist/components/prompt-picker.d.ts +2 -16
- package/dist/components/provider-colors.d.ts +2 -12
- package/dist/components/refine-countdown-panel.d.ts +4 -3
- package/dist/components/resource-menu-model.d.ts +3 -0
- package/dist/components/resource-menu.d.ts +3 -3
- package/dist/components/scrollable-history.d.ts +1 -1
- package/dist/components/send-mode-model.d.ts +44 -0
- package/dist/components/send-mode-picker.d.ts +2 -43
- package/dist/components/settings-picker-row-list.d.ts +2 -1
- package/dist/components/settings-picker.d.ts +3 -1
- package/dist/components/shadow-panel.d.ts +2 -1
- package/dist/components/sidebar-content.d.ts +1 -47
- package/dist/components/sidebar-ipc-icons.d.ts +9 -0
- package/dist/components/sidebar-panel-agents.d.ts +10 -0
- package/dist/components/sidebar-panel-connections.d.ts +11 -0
- package/dist/components/sidebar-panel-coordinator.d.ts +11 -0
- package/dist/components/sidebar-panel-fleet.d.ts +16 -0
- package/dist/components/sidebar-panel-project.d.ts +12 -0
- package/dist/components/sidebar-panel-worktree.d.ts +10 -0
- package/dist/components/sidebar-panel-wrong-proxy.d.ts +25 -0
- package/dist/components/sidebar-panels-workspace.d.ts +10 -79
- package/dist/components/sidebar-presentation.d.ts +98 -0
- package/dist/components/sidebar.d.ts +3 -1
- package/dist/components/skill-picker.d.ts +2 -1
- package/dist/components/slash-confirm-panel.d.ts +2 -0
- package/dist/components/slash-menu.d.ts +2 -1
- package/dist/components/slash-modal-frame.d.ts +9 -0
- package/dist/components/status-bar-rails-async.d.ts +2 -2
- package/dist/components/status-bar-types.d.ts +6 -0
- package/dist/components/status-bar.d.ts +1 -1
- package/dist/components/statusline-picker-model.d.ts +45 -0
- package/dist/components/statusline-picker.d.ts +2 -41
- package/dist/components/tools-picker.d.ts +3 -1
- package/dist/components/user-input-prompt.d.ts +4 -2
- package/dist/connection-actions.d.ts +20 -0
- package/dist/connections-health.d.ts +8 -1
- package/dist/esc-close-panels.d.ts +0 -1
- package/dist/f-key-panels.d.ts +4 -0
- package/dist/hooks/fork-at-checkpoint.d.ts +25 -0
- package/dist/hooks/use-active-theme.d.ts +2 -1
- package/dist/hooks/use-app-execution-pipeline.d.ts +1 -1
- package/dist/hooks/use-app-panels-state.d.ts +1 -1
- package/dist/hooks/use-app-picker-keys.d.ts +5 -2
- package/dist/hooks/use-chip-staleness-guard.d.ts +6 -0
- package/dist/hooks/use-core-tui-commands.d.ts +7 -2
- package/dist/hooks/use-file-search.d.ts +10 -0
- package/dist/hooks/use-fleet-generation-gate.d.ts +4 -3
- package/dist/hooks/use-panel-controllers.d.ts +1 -1
- package/dist/hooks/use-picker-keys-brain-statusline.d.ts +4 -0
- package/dist/hooks/use-picker-keys-types.d.ts +1 -0
- package/dist/hooks/use-provider-warmup.d.ts +9 -0
- package/dist/hooks/use-queue-manager.d.ts +11 -1
- package/dist/hooks/use-session-rewind.d.ts +8 -1
- package/dist/hooks/use-shadow-panel.d.ts +1 -1
- package/dist/hooks/use-sidebar-panel-data.d.ts +7 -5
- package/dist/hooks/use-skill-mention-picker.d.ts +6 -0
- package/dist/hooks/use-slash-picker.d.ts +1 -1
- package/dist/hooks/use-stable-key-handler.d.ts +8 -1
- package/dist/hooks/use-status-sync-interval.d.ts +3 -2
- package/dist/hooks/use-statusbar-view-model.d.ts +2 -2
- package/dist/hooks/use-tui-environment-state.d.ts +3 -0
- package/dist/hooks/use-tui-event-bridge.d.ts +12 -0
- package/dist/hooks/use-windowed-picker.d.ts +3 -4
- package/dist/index.js +29522 -25452
- package/dist/ink.d.ts +5 -5
- package/dist/input-graphemes.d.ts +4 -0
- package/dist/input-key-router.d.ts +2 -0
- package/dist/input-tokens.d.ts +10 -0
- package/dist/input-validation/action-types.d.ts +1 -1
- package/dist/input-validation/limits.d.ts +2 -0
- package/dist/input-validation-coordination.d.ts +9 -0
- package/dist/input-validation-display.d.ts +9 -0
- package/dist/input-validation.d.ts +0 -52
- package/dist/kanban-arguments.d.ts +48 -0
- package/dist/kanban-command-types.d.ts +53 -0
- package/dist/kanban-reports.d.ts +42 -0
- package/dist/kanban-slash.d.ts +4 -125
- package/dist/key-routes/key-route-background-strip.d.ts +14 -0
- package/dist/key-routes/key-route-chat-search.d.ts +24 -0
- package/dist/key-routes/key-route-overlay.d.ts +2 -2
- package/dist/layout-store.d.ts +2 -2
- package/dist/memory-slash-render.d.ts +1 -1
- package/dist/message-checkpoint.d.ts +19 -0
- package/dist/motion.d.ts +16 -0
- package/dist/on-panel-open.d.ts +1 -1
- package/dist/picker-text-input.d.ts +4 -0
- package/dist/reducers/chat-search.d.ts +11 -0
- package/dist/reducers/composer-action-types.d.ts +6 -0
- package/dist/reducers/composer-pickers.d.ts +4 -0
- package/dist/reducers/composer.d.ts +1 -5
- package/dist/reducers/message-jump.d.ts +16 -0
- package/dist/reducers/panel-pickers.d.ts +1 -1
- package/dist/reducers/workspace-panels.d.ts +1 -1
- package/dist/resume-session-tree.d.ts +8 -0
- package/dist/rewind-prompt.d.ts +24 -0
- package/dist/run-tui-options.d.ts +24 -5
- package/dist/scroll-anchor.d.ts +6 -0
- package/dist/statusline-palette.d.ts +4 -0
- package/dist/submit-controller.d.ts +1 -1
- package/dist/submit-slash-command.d.ts +67 -0
- package/dist/theme-utils.d.ts +1 -1
- package/dist/transcript-search.d.ts +38 -0
- package/dist/ui-contracts.d.ts +2 -1
- package/dist/use-app-controller.d.ts +157 -0
- package/dist/use-controller-key-pipeline.d.ts +217 -0
- package/package.json +7 -7
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type React from 'react';
|
|
2
|
+
import type { SidebarWrongProxy } from '../hooks/use-sidebar-panel-data.js';
|
|
3
|
+
export interface WrongProxyPanelSidebarProps {
|
|
4
|
+
/**
|
|
5
|
+
* Live probe state. When `null` (URL missing or probe disabled) the
|
|
6
|
+
* panel renders an idle placeholder inside the same frame so the
|
|
7
|
+
* layout never jumps when the toggle flips on mid-session.
|
|
8
|
+
*/
|
|
9
|
+
proxy: SidebarWrongProxy | null;
|
|
10
|
+
width: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Sidebar twin for the live WrongProxy / WrongTrace daemon. Renders the
|
|
14
|
+
* proxy URL with its round-trip latency, the probe error detail when
|
|
15
|
+
* warn/down, and — when the daemon's `/api/health` body exposes them —
|
|
16
|
+
* the WrongTrace IPC socket path and daemon version.
|
|
17
|
+
*
|
|
18
|
+
* The panel is mounted only when `wrongProxyEnabled` is true at the
|
|
19
|
+
* `app-view-sidebar.tsx` gate — see the `wrongProxyEnabled` usage there.
|
|
20
|
+
* This component still defensively renders an empty-state when
|
|
21
|
+
* `proxy === null` so a mount/unmount race during a toggle flip does
|
|
22
|
+
* not flash an inconsistent card.
|
|
23
|
+
*/
|
|
24
|
+
export declare function WrongProxyPanelSidebar({ proxy, width, }: WrongProxyPanelSidebarProps): React.ReactElement;
|
|
25
|
+
//# sourceMappingURL=sidebar-panel-wrong-proxy.d.ts.map
|
|
@@ -1,82 +1,13 @@
|
|
|
1
|
-
import type React from 'react';
|
|
2
|
-
import type { FleetEntry } from '../app-state.js';
|
|
3
|
-
import type { SidebarWrongProxy } from '../hooks/use-sidebar-panel-data.js';
|
|
4
|
-
import { type WorktreeRow } from '../ui-contracts.js';
|
|
5
|
-
import type { ProjectPickerItem } from './project-picker.js';
|
|
6
|
-
export interface ProjectPickerSidebarProps {
|
|
7
|
-
items: readonly ProjectPickerItem[];
|
|
8
|
-
selected: number;
|
|
9
|
-
filter: string;
|
|
10
|
-
hint?: string | undefined;
|
|
11
|
-
currentProject?: string | undefined;
|
|
12
|
-
width: number;
|
|
13
|
-
}
|
|
14
|
-
export declare function ProjectPickerSidebar({ items, selected, filter, hint, currentProject, width, }: ProjectPickerSidebarProps): React.ReactElement;
|
|
15
|
-
export interface FleetPanelSidebarProps {
|
|
16
|
-
entries: Record<string, FleetEntry>;
|
|
17
|
-
/**
|
|
18
|
-
* Pre-computed running count from the caller. Retained for interface
|
|
19
|
-
* compatibility; the panel derives every displayed count (pill + chips)
|
|
20
|
-
* from `entries` so leader and subagents can never diverge.
|
|
21
|
-
*/
|
|
22
|
-
runningCount: number;
|
|
23
|
-
/** Live tick (ms) — drives per-agent elapsed labels. Defaults to Date.now(). */
|
|
24
|
-
nowTick?: number | undefined;
|
|
25
|
-
width: number;
|
|
26
|
-
}
|
|
27
|
-
export declare function FleetPanelSidebar({ entries, nowTick, width, }: FleetPanelSidebarProps): React.ReactElement;
|
|
28
|
-
export interface AgentsPanelSidebarProps {
|
|
29
|
-
entries: Record<string, FleetEntry>;
|
|
30
|
-
totalCost: number;
|
|
31
|
-
nowTick: number;
|
|
32
|
-
width: number;
|
|
33
|
-
}
|
|
34
|
-
export declare function AgentsPanelSidebar({ entries, totalCost, nowTick, width, }: AgentsPanelSidebarProps): React.ReactElement;
|
|
35
|
-
export interface WorktreePanelSidebarProps {
|
|
36
|
-
worktrees: Record<string, WorktreeRow>;
|
|
37
|
-
/** Live tick (ms) — drives per-worktree age labels. Defaults to Date.now(). */
|
|
38
|
-
nowTick?: number | undefined;
|
|
39
|
-
width: number;
|
|
40
|
-
}
|
|
41
|
-
export declare function WorktreePanelSidebar({ worktrees, nowTick, width, }: WorktreePanelSidebarProps): React.ReactElement;
|
|
42
|
-
export interface CoordinatorPanelSidebarProps {
|
|
43
|
-
running: boolean;
|
|
44
|
-
activePhases: number;
|
|
45
|
-
completedPhases: number;
|
|
46
|
-
phaseNames: readonly string[];
|
|
47
|
-
elapsedMs: number;
|
|
48
|
-
width: number;
|
|
49
|
-
}
|
|
50
|
-
export declare function CoordinatorPanelSidebar({ running, activePhases, completedPhases, phaseNames, elapsedMs, width, }: CoordinatorPanelSidebarProps): React.ReactElement;
|
|
51
|
-
export interface ConnectionsPanelSidebarProps {
|
|
52
|
-
connections: readonly {
|
|
53
|
-
name: string;
|
|
54
|
-
status: 'ok' | 'warn' | 'down' | 'unknown';
|
|
55
|
-
latencyMs?: number | undefined;
|
|
56
|
-
}[];
|
|
57
|
-
width: number;
|
|
58
|
-
}
|
|
59
|
-
export declare function ConnectionsPanelSidebar({ connections, width, }: ConnectionsPanelSidebarProps): React.ReactElement;
|
|
60
|
-
export interface WrongProxyPanelSidebarProps {
|
|
61
|
-
/**
|
|
62
|
-
* Live probe state. When `null` (URL missing or probe disabled) the
|
|
63
|
-
* panel renders an idle placeholder inside the same frame so the
|
|
64
|
-
* layout never jumps when the toggle flips on mid-session.
|
|
65
|
-
*/
|
|
66
|
-
proxy: SidebarWrongProxy | null;
|
|
67
|
-
width: number;
|
|
68
|
-
}
|
|
69
1
|
/**
|
|
70
|
-
* Sidebar
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
* the WrongTrace IPC socket path and daemon version.
|
|
74
|
-
*
|
|
75
|
-
* The panel is mounted only when `wrongProxyEnabled` is true at the
|
|
76
|
-
* `app-view-sidebar.tsx` gate — see the `wrongProxyEnabled` usage there.
|
|
77
|
-
* This component still defensively renders an empty-state when
|
|
78
|
-
* `proxy === null` so a mount/unmount race during a toggle flip does
|
|
79
|
-
* not flash an inconsistent card.
|
|
2
|
+
* Sidebar twins of the workspace F-key panels. Each twin lives in its own
|
|
3
|
+
* `sidebar-panel-<name>.tsx` module; this barrel keeps the historical import
|
|
4
|
+
* path stable for `sidebar-panels.tsx` and tests.
|
|
80
5
|
*/
|
|
81
|
-
export
|
|
6
|
+
export { AgentsPanelSidebar, type AgentsPanelSidebarProps } from './sidebar-panel-agents.js';
|
|
7
|
+
export { ConnectionsPanelSidebar, type ConnectionsPanelSidebarProps, } from './sidebar-panel-connections.js';
|
|
8
|
+
export { CoordinatorPanelSidebar, type CoordinatorPanelSidebarProps, } from './sidebar-panel-coordinator.js';
|
|
9
|
+
export { FleetPanelSidebar, type FleetPanelSidebarProps } from './sidebar-panel-fleet.js';
|
|
10
|
+
export { ProjectPickerSidebar, type ProjectPickerSidebarProps } from './sidebar-panel-project.js';
|
|
11
|
+
export { WorktreePanelSidebar, type WorktreePanelSidebarProps } from './sidebar-panel-worktree.js';
|
|
12
|
+
export { WrongProxyPanelSidebar, type WrongProxyPanelSidebarProps, } from './sidebar-panel-wrong-proxy.js';
|
|
82
13
|
//# sourceMappingURL=sidebar-panels-workspace.d.ts.map
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import type { TodoItem } from '@wrongstack/core/agent';
|
|
2
|
+
import type { ContextBreakdown } from '@wrongstack/core/utils';
|
|
3
|
+
import type React from 'react';
|
|
4
|
+
import type { ResumeSessionEntry } from '../app-state.js';
|
|
5
|
+
import type { FleetEntry } from '../app-state-fleet.js';
|
|
6
|
+
/** Truncate a string to fit within `max` display columns, adding an ellipsis. */
|
|
7
|
+
export declare function trunc(s: string, max: number): string;
|
|
8
|
+
/**
|
|
9
|
+
* Normalized "is this session row the current session?" predicate used by
|
|
10
|
+
* both the `SidebarContent` SESSIONS card (live + resume rows) and the
|
|
11
|
+
* `SessionsPanelSidebar` (sidebar twin). The runtime `currentSessionId`
|
|
12
|
+
* is the authoritative source — when defined, the row whose id matches
|
|
13
|
+
* is the current row. When undefined (e.g. before the host registers a
|
|
14
|
+
* session), the per-row `isCurrent` flag is the fallback (carried over
|
|
15
|
+
* from the resume-picker domain for the case where the picker marks
|
|
16
|
+
* the current session as non-resumable but the host hasn't published
|
|
17
|
+
* the runtime id yet). A row without an id can never be the current
|
|
18
|
+
* row, regardless of what its fallback flag says. The two SESSIONS
|
|
19
|
+
* rows used to disagree on which key to read (live used strict id
|
|
20
|
+
* compare, resume used `rs.isCurrent` first); this helper is the
|
|
21
|
+
* single source of truth.
|
|
22
|
+
*/
|
|
23
|
+
export declare function isCurrentSession(rowId: string | undefined, currentSessionId: string | undefined, fallbackIsCurrent?: boolean | undefined): boolean;
|
|
24
|
+
/** Format a fleet entry's status as a compact colored glyph. */
|
|
25
|
+
export declare function statusGlyph(entry: FleetEntry): {
|
|
26
|
+
icon: string;
|
|
27
|
+
color: string;
|
|
28
|
+
};
|
|
29
|
+
/** Compact icon for a live session status. */
|
|
30
|
+
export declare function liveSessionIcon(status: string): string;
|
|
31
|
+
/** Compact color for a live session status. */
|
|
32
|
+
export declare function liveSessionColor(status: string): string;
|
|
33
|
+
/** Outcome badge for a resume session entry. */
|
|
34
|
+
export declare function outcomeBadge(outcome: ResumeSessionEntry['outcome']): {
|
|
35
|
+
label: string;
|
|
36
|
+
color: string;
|
|
37
|
+
} | null;
|
|
38
|
+
/** Short relative time like "3m", "2h", "1d". */
|
|
39
|
+
export declare function fmtRelative(iso: string | undefined): string;
|
|
40
|
+
/**
|
|
41
|
+
* (Replaced by `SidebarSectionHeader` in `./sidebar-panel-frame.tsx`.)
|
|
42
|
+
* Kept here as a doc-comment so anyone hunting for "the sidebar's section
|
|
43
|
+
* header" lands on the right file. The local `SectionHeader` symbol was
|
|
44
|
+
* promoted to the shared `sidebar-panel-frame.tsx` so routed panels and
|
|
45
|
+
* persistent content cards use the same capsuled-pill component.
|
|
46
|
+
*/
|
|
47
|
+
/**
|
|
48
|
+
* The `Card` component now lives in `./sidebar-card.tsx` as the shared
|
|
49
|
+
* raised-surface iskelet used by both the persistent cards (this file) and
|
|
50
|
+
* the routed F-key panel twins (`sidebar-panel-frame.tsx` +
|
|
51
|
+
* `sidebar-panels-{workspace,task}.tsx`). Imported at the top of this file
|
|
52
|
+
* for the `MODEL CORE`, `PROMPT CACHE`, `SYSTEM`, `AGENT SWARM`, `MISSIONS`,
|
|
53
|
+
* and `SESSIONS` cards — the migration keeps the persistent
|
|
54
|
+
* call sites identical because the shared component preserves the same
|
|
55
|
+
* `innerWidth` / `marginBottom` / `accent` / `children` contract.
|
|
56
|
+
*/
|
|
57
|
+
interface ContextSegment {
|
|
58
|
+
label: string;
|
|
59
|
+
shortLabel: string;
|
|
60
|
+
tokens: number;
|
|
61
|
+
color: string;
|
|
62
|
+
glyph: string;
|
|
63
|
+
}
|
|
64
|
+
export declare function contextSpectrum(breakdown: ContextBreakdown | undefined, contextWindow: {
|
|
65
|
+
used: number;
|
|
66
|
+
max: number;
|
|
67
|
+
} | undefined, width: number): Array<ContextSegment & {
|
|
68
|
+
cells: number;
|
|
69
|
+
}>;
|
|
70
|
+
export interface MissionRow {
|
|
71
|
+
id: string;
|
|
72
|
+
status: TodoItem['status'];
|
|
73
|
+
label: string;
|
|
74
|
+
}
|
|
75
|
+
/** Sort + cap the todo board for the mission queue, plus done/total stats. */
|
|
76
|
+
export declare function buildMissionRows(todos: readonly TodoItem[] | undefined, maxRows: number): {
|
|
77
|
+
rows: MissionRow[];
|
|
78
|
+
overflow: number;
|
|
79
|
+
done: number;
|
|
80
|
+
total: number;
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* A labeled system-vitals row: morphing dial glyph + right-aligned trend
|
|
84
|
+
* sparkline. Replaces the old block meter — still exactly one row per
|
|
85
|
+
* metric, so the SYSTEM card keeps its 5-row budget in
|
|
86
|
+
* computeMaxSidebarScroll(). The dial and value are colored by the *current*
|
|
87
|
+
* load via contextBarColor; the sparkline traces the recent history in the
|
|
88
|
+
* same heat color (latest sample at the right edge).
|
|
89
|
+
*/
|
|
90
|
+
export declare function DialRow({ label, value, ratio, history, innerWidth, }: {
|
|
91
|
+
label: string;
|
|
92
|
+
value: string;
|
|
93
|
+
ratio: number;
|
|
94
|
+
history?: readonly number[] | undefined;
|
|
95
|
+
innerWidth: number;
|
|
96
|
+
}): React.ReactElement;
|
|
97
|
+
export {};
|
|
98
|
+
//# sourceMappingURL=sidebar-presentation.d.ts.map
|
|
@@ -56,7 +56,9 @@ interface RightSidebarProps {
|
|
|
56
56
|
* label is shown so the reserved region is visually self-documenting.
|
|
57
57
|
*/
|
|
58
58
|
children?: React.ReactNode | undefined;
|
|
59
|
+
/** Icon-only live connection strip, sharing the existing one-row footer. */
|
|
60
|
+
statusIcons?: React.ReactNode | undefined;
|
|
59
61
|
}
|
|
60
|
-
export declare function RightSidebar({ width, maxHeight, focused, scrollOffset, maxScroll, children, }: RightSidebarProps): React.ReactElement | null;
|
|
62
|
+
export declare function RightSidebar({ width, maxHeight, focused, scrollOffset, maxScroll, children, statusIcons, }: RightSidebarProps): React.ReactElement | null;
|
|
61
63
|
export {};
|
|
62
64
|
//# sourceMappingURL=sidebar.d.ts.map
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { SkillEntry } from '@wrongstack/core/types';
|
|
2
2
|
import type React from 'react';
|
|
3
3
|
interface SkillPickerProps {
|
|
4
|
+
mention?: boolean | undefined;
|
|
4
5
|
entries: readonly SkillEntry[];
|
|
5
6
|
selected: number;
|
|
6
7
|
hint?: string | undefined;
|
|
@@ -8,6 +9,6 @@ interface SkillPickerProps {
|
|
|
8
9
|
maxRows?: number | undefined;
|
|
9
10
|
}
|
|
10
11
|
/** Interactive two-pane skill browser, matching the `/theme` picker layout. */
|
|
11
|
-
export declare function SkillPicker({ entries, selected, hint, columns, maxRows, }: SkillPickerProps): React.ReactElement;
|
|
12
|
+
export declare function SkillPicker({ mention, entries, selected, hint, columns, maxRows, }: SkillPickerProps): React.ReactElement;
|
|
12
13
|
export {};
|
|
13
14
|
//# sourceMappingURL=skill-picker.d.ts.map
|
|
@@ -4,7 +4,8 @@ interface SlashMenuProps {
|
|
|
4
4
|
query: string;
|
|
5
5
|
matches: SlashCommandMatch[];
|
|
6
6
|
selected: number;
|
|
7
|
+
maxRows?: number | undefined;
|
|
7
8
|
}
|
|
8
|
-
export declare function SlashMenu({ query, matches, selected }: SlashMenuProps): React.ReactElement;
|
|
9
|
+
export declare function SlashMenu({ query, matches, selected, maxRows, }: SlashMenuProps): React.ReactElement;
|
|
9
10
|
export {};
|
|
10
11
|
//# sourceMappingURL=slash-menu.d.ts.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
/** Pin a slash command's decision controls while its explanation scrolls. */
|
|
3
|
+
export declare function SlashModalFrame({ title, accent, children, footer, }: {
|
|
4
|
+
title: string;
|
|
5
|
+
accent: string;
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
footer: ReactNode;
|
|
8
|
+
}): import("react").JSX.Element;
|
|
9
|
+
//# sourceMappingURL=slash-modal-frame.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { RailSpanEntry } from
|
|
2
|
-
import { type StatusBarRailBuildParams } from
|
|
1
|
+
import type { RailSpanEntry } from './powerline-rail.js';
|
|
2
|
+
import { type StatusBarRailBuildParams } from './status-bar-rails-common.js';
|
|
3
3
|
/**
|
|
4
4
|
* Background activity: fleets, peers, services — plus the countdowns, which
|
|
5
5
|
* tick every second and belong with the other things that arrive and leave
|
|
@@ -125,6 +125,12 @@ export interface StatusBarProps {
|
|
|
125
125
|
* orange update notice on the status bar.
|
|
126
126
|
*/
|
|
127
127
|
updateAvailable?: boolean | undefined;
|
|
128
|
+
/**
|
|
129
|
+
* A newer standalone build downloaded and waiting to be swapped in when
|
|
130
|
+
* the session exits. Replaces the "(update v…)" suffix, since there is
|
|
131
|
+
* nothing left to run: a restart picks it up.
|
|
132
|
+
*/
|
|
133
|
+
updateReadyVersion?: string | undefined;
|
|
128
134
|
state: 'idle' | 'running' | 'streaming' | 'aborting';
|
|
129
135
|
/** Single word rendered in the rainbow working-state chip. */
|
|
130
136
|
thinkingWord?: string | undefined;
|
|
@@ -22,5 +22,5 @@ export type { BrainStatusChip, ContextWindow, FleetAgentDetail, FleetCounts, Mai
|
|
|
22
22
|
* the rendered entries themselves, so an empty rail never renders and a
|
|
23
23
|
* vanilla session keeps its two-line footprint.
|
|
24
24
|
*/
|
|
25
|
-
export declare const StatusBar: React.MemoExoticComponent<({ model, provider, version, latestVersion, updateAvailable, state, thinkingWord, thinkingAnimationStyle, tokenCounter, hint, queueCount, yolo, autonomy, fleetWorkingTime, todos, plan, tasks, fleet, fleetAgents, git, subagentCount, brain, projectName, workingDir, processCount, context, estimatedContextTokens, Sage, memoryContextMonitor, contextStrategy, hiddenItems, statuslineLines, statuslineDensities, statuslineOrder, mode, events, sessionId, eternalStage, goalSummary, droppedTools, indexState, breakerCountdown, modeLabel, promptVariant, themeName, debugStreamStats, enhanceCountdown, nextStepsAutoSubmitCountdown, nextStepsAutoSubmitLabel, autoProceedCountdown, sessionCount, mailbox, tokenSavingMode, toolCount, visibleChips, sideEffectCount, maxWidth, clickMapRef, }: StatusBarProps) => React.ReactElement>;
|
|
25
|
+
export declare const StatusBar: React.MemoExoticComponent<({ model, provider, version, latestVersion, updateAvailable, updateReadyVersion, state, thinkingWord, thinkingAnimationStyle, tokenCounter, hint, queueCount, yolo, autonomy, fleetWorkingTime, todos, plan, tasks, fleet, fleetAgents, git, subagentCount, brain, projectName, workingDir, processCount, context, estimatedContextTokens, Sage, memoryContextMonitor, contextStrategy, hiddenItems, statuslineLines, statuslineDensities, statuslineOrder, mode, events, sessionId, eternalStage, goalSummary, droppedTools, indexState, breakerCountdown, modeLabel, promptVariant, themeName, debugStreamStats, enhanceCountdown, nextStepsAutoSubmitCountdown, nextStepsAutoSubmitLabel, autoProceedCountdown, sessionCount, mailbox, tokenSavingMode, toolCount, visibleChips, sideEffectCount, maxWidth, clickMapRef, }: StatusBarProps) => React.ReactElement>;
|
|
26
26
|
//# sourceMappingURL=status-bar.d.ts.map
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { CHIP_DESCRIPTIONS, DEFAULT_LINES, STATUSLINE_FIELD_COUNT, STATUSLINE_ITEMS, type StatuslineDensity, type StatuslineItem, type StatuslineLines, type StatuslineOrder } from '@wrongstack/core/statusline';
|
|
2
|
+
import type { ChipMeta } from '../ui-contracts.js';
|
|
3
|
+
export type { StatuslineItem };
|
|
4
|
+
export { CHIP_DESCRIPTIONS, DEFAULT_LINES, DEFAULT_LINES as ITEM_LINE, STATUSLINE_FIELD_COUNT, STATUSLINE_ITEMS, };
|
|
5
|
+
/**
|
|
6
|
+
* Chips the composer's top rail already renders, so the status bar suppresses
|
|
7
|
+
* them to avoid a double display. They stay in `STATUSLINE_ITEMS` (the mouse
|
|
8
|
+
* hit-test indexes by position) and stay togglable — the picker just labels
|
|
9
|
+
* them so their "on" state doesn't read as a lie.
|
|
10
|
+
*/
|
|
11
|
+
export declare const COMPOSER_OWNED_CHIPS: StatuslineItem[];
|
|
12
|
+
/**
|
|
13
|
+
* Metadata for a temporarily-visible chip (one that appeared due to data,
|
|
14
|
+
* not user toggle). Tracked so the chip can auto-expire.
|
|
15
|
+
*
|
|
16
|
+
* Declared in the `ui-contracts` leaf and re-exported here under the picker's
|
|
17
|
+
* historical name: `status-bar-types.ts` needs the type, and owning it in a
|
|
18
|
+
* `.tsx` view module put the contracts leaf and the view in one type cycle.
|
|
19
|
+
*/
|
|
20
|
+
export type { ChipMeta };
|
|
21
|
+
/** Default expiration for stream-triggered chips (5 minutes). */
|
|
22
|
+
export declare const STREAM_CHIP_EXPIRES_IN_MINUTES = 5;
|
|
23
|
+
/**
|
|
24
|
+
* Returns true if a chip with the given metadata has expired.
|
|
25
|
+
* Chips with no `expiresIn` never expire on their own.
|
|
26
|
+
*/
|
|
27
|
+
export declare function isChipExpired(meta: ChipMeta, now?: number): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Returns a human-readable countdown label for a chip with expiration.
|
|
30
|
+
* Returns null if the chip has no expiration or has already expired.
|
|
31
|
+
*/
|
|
32
|
+
export declare function getExpiresInLabel(meta: ChipMeta, now?: number): string | null;
|
|
33
|
+
/** Stream-triggered chips — these auto-expire unless toggled on permanently. */
|
|
34
|
+
export declare const STREAM_CHIP_KEYS: StatuslineItem[];
|
|
35
|
+
/** Next density in the cycle: auto → full → short → micro → auto. */
|
|
36
|
+
export declare function nextDensity(current: StatuslineDensity, delta?: number): StatuslineDensity;
|
|
37
|
+
/**
|
|
38
|
+
* Whether `item` survives the picker's text filter. Matches the chip key and
|
|
39
|
+
* its description so "cost" finds `cost` and "cache" finds the cache chip by
|
|
40
|
+
* either its name or its blurb.
|
|
41
|
+
*/
|
|
42
|
+
export declare function matchesFilter(item: StatuslineItem, filter: string): boolean;
|
|
43
|
+
/** Shared visual/keyboard order: effective line groups, then saved order within each line. */
|
|
44
|
+
export declare function navigableFields(filter: string, order?: StatuslineOrder, lines?: StatuslineLines): number[];
|
|
45
|
+
//# sourceMappingURL=statusline-picker-model.d.ts.map
|
|
@@ -1,47 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type StatuslineDensities, type StatuslineItem, type StatuslineLine, type StatuslineLines, type StatuslineOrder } from '@wrongstack/core/statusline';
|
|
2
2
|
import type React from 'react';
|
|
3
3
|
import type { ChipMeta } from '../ui-contracts.js';
|
|
4
4
|
import type { StatusBarClickMap } from './status-bar-types.js';
|
|
5
|
-
export
|
|
6
|
-
export { CHIP_DESCRIPTIONS, DEFAULT_LINES, DEFAULT_LINES as ITEM_LINE, STATUSLINE_FIELD_COUNT, STATUSLINE_ITEMS, };
|
|
7
|
-
/**
|
|
8
|
-
* Chips the composer's top rail already renders, so the status bar suppresses
|
|
9
|
-
* them to avoid a double display. They stay in `STATUSLINE_ITEMS` (the mouse
|
|
10
|
-
* hit-test indexes by position) and stay togglable — the picker just labels
|
|
11
|
-
* them so their "on" state doesn't read as a lie.
|
|
12
|
-
*/
|
|
13
|
-
export declare const COMPOSER_OWNED_CHIPS: StatuslineItem[];
|
|
14
|
-
/**
|
|
15
|
-
* Metadata for a temporarily-visible chip (one that appeared due to data,
|
|
16
|
-
* not user toggle). Tracked so the chip can auto-expire.
|
|
17
|
-
*
|
|
18
|
-
* Declared in the `ui-contracts` leaf and re-exported here under the picker's
|
|
19
|
-
* historical name: `status-bar-types.ts` needs the type, and owning it in a
|
|
20
|
-
* `.tsx` view module put the contracts leaf and the view in one type cycle.
|
|
21
|
-
*/
|
|
22
|
-
export type { ChipMeta };
|
|
23
|
-
/** Default expiration for stream-triggered chips (5 minutes). */
|
|
24
|
-
export declare const STREAM_CHIP_EXPIRES_IN_MINUTES = 5;
|
|
25
|
-
/**
|
|
26
|
-
* Returns true if a chip with the given metadata has expired.
|
|
27
|
-
* Chips with no `expiresIn` never expire on their own.
|
|
28
|
-
*/
|
|
29
|
-
export declare function isChipExpired(meta: ChipMeta, now?: number): boolean;
|
|
30
|
-
/**
|
|
31
|
-
* Returns a human-readable countdown label for a chip with expiration.
|
|
32
|
-
* Returns null if the chip has no expiration or has already expired.
|
|
33
|
-
*/
|
|
34
|
-
export declare function getExpiresInLabel(meta: ChipMeta, now?: number): string | null;
|
|
35
|
-
/** Next density in the cycle: auto → full → short → micro → auto. */
|
|
36
|
-
export declare function nextDensity(current: StatuslineDensity, delta?: number): StatuslineDensity;
|
|
37
|
-
/**
|
|
38
|
-
* Whether `item` survives the picker's text filter. Matches the chip key and
|
|
39
|
-
* its description so "cost" finds `cost` and "cache" finds the cache chip by
|
|
40
|
-
* either its name or its blurb.
|
|
41
|
-
*/
|
|
42
|
-
export declare function matchesFilter(item: StatuslineItem, filter: string): boolean;
|
|
43
|
-
/** Field indices the arrow keys may land on under the current filter. */
|
|
44
|
-
export declare function navigableFields(filter: string, order?: StatuslineOrder): number[];
|
|
5
|
+
export * from './statusline-picker-model.js';
|
|
45
6
|
interface StatuslinePickerProps {
|
|
46
7
|
/** Focused field index into STATUSLINE_ITEMS. */
|
|
47
8
|
field: number;
|
|
@@ -11,12 +11,14 @@ export interface ToolPickerItem {
|
|
|
11
11
|
description: string;
|
|
12
12
|
}
|
|
13
13
|
interface ToolsPickerProps {
|
|
14
|
+
maxRows?: number | undefined;
|
|
15
|
+
columns?: number | undefined;
|
|
14
16
|
items: ToolPickerItem[];
|
|
15
17
|
selected: number;
|
|
16
18
|
busy?: boolean | undefined;
|
|
17
19
|
hint?: string | undefined;
|
|
18
20
|
filter?: string | undefined;
|
|
19
21
|
}
|
|
20
|
-
export declare function ToolsPicker({ items, selected, busy, hint, filter, }: ToolsPickerProps): React.ReactElement;
|
|
22
|
+
export declare function ToolsPicker({ items, selected, busy, hint, filter, maxRows, columns, }: ToolsPickerProps): React.ReactElement;
|
|
21
23
|
export {};
|
|
22
24
|
//# sourceMappingURL=tools-picker.d.ts.map
|
|
@@ -14,9 +14,11 @@ type AnswerDraft = {
|
|
|
14
14
|
};
|
|
15
15
|
type Draft = Record<string, AnswerDraft>;
|
|
16
16
|
export declare function usePendingUserInput(events: EventBus): PendingUserInput | null;
|
|
17
|
-
|
|
17
|
+
interface UserInputPromptProps {
|
|
18
18
|
pending: PendingUserInput;
|
|
19
|
-
|
|
19
|
+
onInterrupt?: (() => void) | undefined;
|
|
20
|
+
}
|
|
21
|
+
export declare function UserInputPrompt(props: UserInputPromptProps): React.ReactElement;
|
|
20
22
|
export declare function initialDraft(request: UserInputRequest): Draft;
|
|
21
23
|
export declare function validateDraft(questions: UserInputQuestion[], draft: Draft): {
|
|
22
24
|
valid: boolean;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ConnectionHealthServiceId } from './connections-health.js';
|
|
2
|
+
export interface ConnectionActionResult {
|
|
3
|
+
serviceId: ConnectionHealthServiceId;
|
|
4
|
+
action: 'shutdown' | 'restart';
|
|
5
|
+
success: boolean;
|
|
6
|
+
message: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const RESTARTABLE_SERVICES: readonly ConnectionHealthServiceId[];
|
|
9
|
+
export declare function isRestartableService(serviceId: ConnectionHealthServiceId): boolean;
|
|
10
|
+
export declare function isEndpointAlive(endpoint: string): Promise<boolean>;
|
|
11
|
+
export declare function waitForShutdown(probe?: () => Promise<boolean> | boolean): Promise<void>;
|
|
12
|
+
export declare function executeConnectionAction(serviceId: ConnectionHealthServiceId, action: 'shutdown' | 'restart', projectRoot: string, indexDir?: string | undefined): Promise<ConnectionActionResult>;
|
|
13
|
+
export declare function restartAllConnectionServices(projectRoot: string, indexDir?: string | undefined): Promise<ConnectionActionResult[]>;
|
|
14
|
+
export declare function killSessionCatalogServer(projectRoot: string, action: 'shutdown' | 'restart'): Promise<ConnectionActionResult>;
|
|
15
|
+
export declare function killKanbanServer(projectRoot: string, action: 'shutdown' | 'restart'): Promise<ConnectionActionResult>;
|
|
16
|
+
export declare function killSageServer(projectRoot: string, action: 'shutdown' | 'restart'): Promise<ConnectionActionResult>;
|
|
17
|
+
export declare function killChronicleServer(projectRoot: string, action: 'shutdown' | 'restart'): Promise<ConnectionActionResult>;
|
|
18
|
+
export declare function killCodebaseIndexServer(projectRoot: string, indexDir: string | undefined, action: 'shutdown' | 'restart'): Promise<ConnectionActionResult>;
|
|
19
|
+
export declare function killMailboxServer(projectRoot: string, action: 'shutdown' | 'restart'): Promise<ConnectionActionResult>;
|
|
20
|
+
//# sourceMappingURL=connection-actions.d.ts.map
|
|
@@ -9,8 +9,9 @@
|
|
|
9
9
|
* `@wrongstack/tools`).
|
|
10
10
|
*/
|
|
11
11
|
export type ConnectionHealthStatus = 'healthy' | 'degraded' | 'offline' | 'unavailable' | 'error';
|
|
12
|
+
export type ConnectionHealthServiceId = 'session-catalog' | 'chronicle' | 'codebase-index' | 'sage' | 'kanban' | 'mailbox' | 'governance';
|
|
12
13
|
export interface ConnectionHealthService {
|
|
13
|
-
id:
|
|
14
|
+
id: ConnectionHealthServiceId;
|
|
14
15
|
label: string;
|
|
15
16
|
status: ConnectionHealthStatus;
|
|
16
17
|
required: boolean;
|
|
@@ -29,6 +30,12 @@ export interface ConnectionHealthService {
|
|
|
29
30
|
watchedFiles?: number | undefined;
|
|
30
31
|
} | undefined;
|
|
31
32
|
lastError?: string | undefined;
|
|
33
|
+
control?: 'restart' | 'none' | undefined;
|
|
34
|
+
advisory?: {
|
|
35
|
+
code: string;
|
|
36
|
+
operatorAction: string;
|
|
37
|
+
executionDisposition: string;
|
|
38
|
+
} | undefined;
|
|
32
39
|
}
|
|
33
40
|
export interface ConnectionsHealthReport {
|
|
34
41
|
checkedAt: number;
|
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
*
|
|
15
15
|
* Excluded panels (own their own Esc):
|
|
16
16
|
* - worktreeMonitor — `isWorktreeMonitorCloseKey` in WorktreeMonitor.tsx
|
|
17
|
-
* - goalRun monitor — PhaseMonitor owns Esc via its own useInput
|
|
18
17
|
* - kanbanPanel — `key.escape || 'q' → onClose` in KanbanPanel.tsx
|
|
19
18
|
* - goalKanbanPanel — `key.escape || 'q' → onClose` in GoalKanbanPanel.tsx
|
|
20
19
|
*
|
package/dist/f-key-panels.d.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import type { Action } from './app-action-type.js';
|
|
2
|
+
import type { State } from './app-state.js';
|
|
2
3
|
import type { StatuslineItem } from './components/statusline-picker.js';
|
|
4
|
+
import type { PanelPositionMap } from './ui-contracts.js';
|
|
5
|
+
/** The bottom panel owns input; sidebar twins leave the composer available. */
|
|
6
|
+
export declare function activeBottomFKeyPanel(state: State, positions: PanelPositionMap): number | null;
|
|
3
7
|
export type FKeyPanelAction = 'projectPickerOpen' | 'toggleMonitor' | 'toggleAgentsMonitor' | 'toggleWorktreeMonitor' | 'togglePlanPanel' | 'toggleTodosMonitor' | 'toggleQueuePanel' | 'toggleProcessList' | 'toggleKanbanPanel' | 'toggleGoalPanel' | 'toggleSessionsPanel' | 'toggleCoordinatorMonitor' | 'toggleCronMonitor' | 'toggleConnectionsPanel' | 'statuslineOpen';
|
|
4
8
|
/** Host-side action keys that require work beyond a reducer dispatch. */
|
|
5
9
|
type FKeyHostAction = 'openProjectPicker' | 'loadLiveSessions' | 'openStatuslinePicker';
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Action } from '../app-action-type.js';
|
|
2
|
+
export interface ForkAtCheckpointDeps {
|
|
3
|
+
/** Host fork: branches `sessionId` at the checkpoint and returns the new id. */
|
|
4
|
+
forkSession: (sessionId: string, checkpointPromptIndex: number) => Promise<{
|
|
5
|
+
id: string;
|
|
6
|
+
}>;
|
|
7
|
+
/** The prompt recorded for the checkpoint (see `DefaultSessionRewinder.promptAt`). */
|
|
8
|
+
promptAt: (sessionId: string, checkpointPromptIndex: number) => Promise<string | undefined>;
|
|
9
|
+
/** The resume flow the /resume picker runs. */
|
|
10
|
+
resume: (sessionId: string, label: string) => Promise<void>;
|
|
11
|
+
/** The session the agent is on now; tells whether the resume attached the fork. */
|
|
12
|
+
currentSessionId: () => string | undefined;
|
|
13
|
+
dispatch: (action: Action) => void;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Fork the current session at a checkpoint and switch to the fork: the
|
|
17
|
+
* conversation up to that prompt continues in a new session, the original
|
|
18
|
+
* stays as it was, and the prompt is back in the composer to edit and send.
|
|
19
|
+
*/
|
|
20
|
+
export declare function forkAtCheckpoint(deps: ForkAtCheckpointDeps, request: {
|
|
21
|
+
sessionId: string;
|
|
22
|
+
promptIndex: number;
|
|
23
|
+
draft: string;
|
|
24
|
+
}): Promise<void>;
|
|
25
|
+
//# sourceMappingURL=fork-at-checkpoint.d.ts.map
|
|
@@ -4,7 +4,8 @@ import { type Theme } from '../theme.js';
|
|
|
4
4
|
* current `theme` snapshot. Used by the App shell to force a re-render
|
|
5
5
|
* when `setActiveTheme()` mutates the global theme — child components
|
|
6
6
|
* read `theme` directly via destructuring, so the parent re-render
|
|
7
|
-
* propagates the new palette into
|
|
7
|
+
* propagates the new palette into ordinary children. Memoized boundaries
|
|
8
|
+
* subscribe separately: unchanged props must not keep an old palette alive.
|
|
8
9
|
*
|
|
9
10
|
* The hook itself returns the live `theme` reference; callers don't
|
|
10
11
|
* typically need to use it (they can keep reading `theme` directly),
|
|
@@ -12,7 +12,7 @@ export interface AppExecutionPipelineArgs {
|
|
|
12
12
|
current: ReturnType<typeof createRunBlocksController>;
|
|
13
13
|
};
|
|
14
14
|
submitRef: {
|
|
15
|
-
current:
|
|
15
|
+
current: (text?: string) => void;
|
|
16
16
|
};
|
|
17
17
|
}
|
|
18
18
|
export declare function useAppExecutionPipeline(args: AppExecutionPipelineArgs): {
|
|
@@ -46,7 +46,7 @@ export declare function useAppPanelsState(params: {
|
|
|
46
46
|
brainCtl: import("./use-brain-panel.js").BrainPanelController;
|
|
47
47
|
openBrainPanel: () => void;
|
|
48
48
|
changeBrainRisk: (delta: number) => void;
|
|
49
|
-
openShadowPanel: () =>
|
|
49
|
+
openShadowPanel: () => boolean;
|
|
50
50
|
handleShadowStart: () => Promise<void>;
|
|
51
51
|
handleShadowStop: () => Promise<void>;
|
|
52
52
|
subagentModelsCtl: import("./use-subagent-models-panel.js").SubagentModelsPanelController;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type PromptUsageStore } from '@wrongstack/core/storage';
|
|
2
2
|
import type { Dispatch, MutableRefObject } from 'react';
|
|
3
3
|
import type { Action } from '../app-action-type.js';
|
|
4
4
|
import type { AppProps } from '../app-props.js';
|
|
@@ -11,6 +11,9 @@ import type { usePanelControllers } from './use-panel-controllers.js';
|
|
|
11
11
|
import type { useStatusbarViewModel } from './use-statusbar-view-model.js';
|
|
12
12
|
import type { useTuiEnvironmentState } from './use-tui-environment-state.js';
|
|
13
13
|
interface UseAppPickerKeysOptions {
|
|
14
|
+
sessionGenerationRef?: MutableRefObject<number> | undefined;
|
|
15
|
+
/** Move the input queue to a resumed session (see `useQueueManager`). */
|
|
16
|
+
switchQueueSession?: ((sessionId: string) => void) | undefined;
|
|
14
17
|
host: AppProps;
|
|
15
18
|
state: State;
|
|
16
19
|
dispatch: Dispatch<Action>;
|
|
@@ -36,6 +39,6 @@ interface UseAppPickerKeysOptions {
|
|
|
36
39
|
onThemePickerEnter?: () => void;
|
|
37
40
|
setPromptFavorite: (slug: string, favorite: boolean) => Promise<void>;
|
|
38
41
|
}
|
|
39
|
-
export declare function useAppPickerKeys({ host, state, dispatch, environment, statusbar, panelControllers, authPanelController, brainController, lastEnterAtRef, inputGateRef, submitRef, promptUsageRef, setDraft, acceptSlashPickerSelection, changeBrainRisk, handleModelPicked, handleShadowStart, handleShadowStop, subagentModelsController, statuslineHiddenForPicker, onPickerEnter, onThemePickerEnter, setPromptFavorite, }: UseAppPickerKeysOptions): (input: string, key: import("../components/input.js").KeyEvent, isEnter: boolean) => boolean;
|
|
42
|
+
export declare function useAppPickerKeys({ sessionGenerationRef, switchQueueSession, host, state, dispatch, environment, statusbar, panelControllers, authPanelController, brainController, lastEnterAtRef, inputGateRef, submitRef, promptUsageRef, setDraft, acceptSlashPickerSelection, changeBrainRisk, handleModelPicked, handleShadowStart, handleShadowStop, subagentModelsController, statuslineHiddenForPicker, onPickerEnter, onThemePickerEnter, setPromptFavorite, }: UseAppPickerKeysOptions): (input: string, key: import("../components/input.js").KeyEvent, isEnter: boolean) => boolean;
|
|
40
43
|
export {};
|
|
41
44
|
//# sourceMappingURL=use-app-picker-keys.d.ts.map
|
|
@@ -41,6 +41,12 @@ interface UseChipStalenessGuardOptions {
|
|
|
41
41
|
agentState: 'idle' | 'running' | 'streaming' | 'aborting';
|
|
42
42
|
/** Current spinner phase index (advances every SPINNER_INTERVAL_MS while active). */
|
|
43
43
|
spinnerPhase: number;
|
|
44
|
+
/**
|
|
45
|
+
* False while the spinner is deliberately still (the `static` animation
|
|
46
|
+
* style / reduced motion): a still spinner is then not a frozen one.
|
|
47
|
+
* Default true.
|
|
48
|
+
*/
|
|
49
|
+
spinnerAnimated?: boolean;
|
|
44
50
|
/** Token usage fingerprint — changes when new token events arrive. */
|
|
45
51
|
tokenFingerprint: string;
|
|
46
52
|
/** Context usage ratio (0..1) — changes as context grows. */
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import type { Director } from '@wrongstack/core/coordination';
|
|
2
|
+
import type { RedoRewindResult } from '@wrongstack/core/storage';
|
|
2
3
|
import { type Dispatch, type MutableRefObject, type SetStateAction } from 'react';
|
|
3
4
|
import type { Action } from '../app-action-type.js';
|
|
4
5
|
import type { AppProps } from '../app-props.js';
|
|
5
6
|
import type { State } from '../app-state.js';
|
|
6
7
|
import { createCronJobsGetter } from '../cron-slash.js';
|
|
7
8
|
import type { MemoryContextMonitorState } from '../memory-context-monitor.js';
|
|
9
|
+
import type { RewindOutcome } from './use-session-rewind.js';
|
|
8
10
|
interface CoreTuiCommandsOptions {
|
|
9
11
|
agent: AppProps['agent'];
|
|
10
12
|
slashRegistry: AppProps['slashRegistry'];
|
|
@@ -25,10 +27,13 @@ interface CoreTuiCommandsOptions {
|
|
|
25
27
|
liveDirector: () => Director | null | undefined;
|
|
26
28
|
streamingTextRef: MutableRefObject<string>;
|
|
27
29
|
director: AppProps['director'];
|
|
28
|
-
handleRewindTo: (index: number) => Promise<
|
|
30
|
+
handleRewindTo: (index: number) => Promise<RewindOutcome>;
|
|
31
|
+
/** `/rewind redo`: undo the newest rewind. */
|
|
32
|
+
handleRewindRedo: () => Promise<RedoRewindResult | null>;
|
|
33
|
+
getSettings?: AppProps['getSettings'] | undefined;
|
|
29
34
|
}
|
|
30
35
|
/** Registers process/context/kanban/steer/rewind/agents commands. */
|
|
31
|
-
export declare function useCoreTuiCommands({ agent, slashRegistry, memoryStore, onPanelOpen, memoryContextMonitorRef, memoryRecordTotalRef, stateRef, boardFocusRef, setFocusedBoardId, terminalWidth, getModeLabel, activeCtrlRef, clearPendingConfirms, dispatch, liveDirector, streamingTextRef, director, handleRewindTo, }: CoreTuiCommandsOptions): {
|
|
36
|
+
export declare function useCoreTuiCommands({ agent, slashRegistry, memoryStore, onPanelOpen, memoryContextMonitorRef, memoryRecordTotalRef, stateRef, boardFocusRef, setFocusedBoardId, terminalWidth, getModeLabel, activeCtrlRef, clearPendingConfirms, dispatch, liveDirector, streamingTextRef, director, handleRewindTo, handleRewindRedo, getSettings, }: CoreTuiCommandsOptions): {
|
|
32
37
|
getCronJobs: ReturnType<typeof createCronJobsGetter>;
|
|
33
38
|
runSteerSequence: (text: string) => {
|
|
34
39
|
preamble: string;
|