@wrongstack/tui 0.313.1 → 0.316.1
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 +56 -0
- package/dist/app-initial-state.d.ts +2 -1
- package/dist/app-props.d.ts +45 -2
- package/dist/app-settings-type.d.ts +7 -0
- package/dist/app-state-core-types.d.ts +18 -0
- package/dist/app-state.d.ts +42 -0
- package/dist/app-status-region.d.ts +1 -1
- package/dist/app-view-contract.d.ts +2 -1
- package/dist/app-view-pickers.d.ts +2 -1
- package/dist/app-view-sidebar.d.ts +2 -1
- package/dist/brain-panel-model.d.ts +0 -2
- package/dist/checkpoint-retention.d.ts +2 -3
- package/dist/components/agents-monitor.d.ts +3 -3
- package/dist/components/auth-panel.d.ts +2 -1
- package/dist/components/brain-decision-prompt.d.ts +2 -1
- package/dist/components/clear-confirm-panel.d.ts +4 -3
- package/dist/components/composer-status-chip.d.ts +3 -2
- package/dist/components/confirm-prompt.d.ts +2 -1
- package/dist/components/context-panel.d.ts +2 -1
- package/dist/components/continue-confirm-panel.d.ts +3 -2
- package/dist/components/coordinator-panel.d.ts +2 -1
- package/dist/components/cron-jobs.d.ts +2 -1
- package/dist/components/design-picker.d.ts +2 -1
- package/dist/components/enhance-panel.d.ts +4 -3
- package/dist/components/esc-confirm-prompt.d.ts +2 -1
- package/dist/components/exit-confirm-panel.d.ts +3 -2
- package/dist/components/f-key-picker.d.ts +1 -2
- package/dist/components/fallback-overlay.d.ts +2 -1
- package/dist/components/fleet-monitor.d.ts +2 -1
- package/dist/components/fleet-panel.d.ts +4 -4
- package/dist/components/goal-kanban-panel.d.ts +2 -1
- package/dist/components/help-overlay.d.ts +2 -1
- package/dist/components/help-panel.d.ts +2 -1
- package/dist/components/history/code-block-diff-helpers.d.ts +1 -6
- package/dist/components/history/code-block.d.ts +0 -2
- package/dist/components/history/copy-registry.d.ts +2 -1
- package/dist/components/history/index.d.ts +2 -2
- package/dist/components/history/replay.d.ts +2 -1
- package/dist/components/history/sage-memory-block.d.ts +0 -6
- package/dist/components/history/scroll-controller-types.d.ts +7 -12
- package/dist/components/history/selection-band-store.d.ts +3 -2
- package/dist/components/history/selection-helpers.d.ts +24 -65
- package/dist/components/history/tool-card.d.ts +2 -1
- package/dist/components/history/tool-group.d.ts +0 -7
- package/dist/components/history/use-history-controller.d.ts +2 -1
- package/dist/components/history/utils.d.ts +1 -1
- package/dist/components/history/wrap-geometry.d.ts +18 -125
- package/dist/components/history.d.ts +1 -1
- package/dist/components/kanban-panel.d.ts +7 -25
- package/dist/components/live-activity-strip.d.ts +2 -1
- package/dist/components/mailbox-panel.d.ts +2 -1
- package/dist/components/mcp-picker.d.ts +2 -1
- package/dist/components/mode-picker.d.ts +2 -1
- package/dist/components/model-picker.d.ts +2 -1
- package/dist/components/monitor-shell.d.ts +3 -2
- package/dist/components/phase-monitor.d.ts +2 -1
- package/dist/components/plan-panel.d.ts +3 -2
- package/dist/components/plugin-picker.d.ts +2 -1
- package/dist/components/powerline-rail.d.ts +2 -1
- package/dist/components/project-picker.d.ts +2 -1
- package/dist/components/prompt-picker.d.ts +2 -1
- package/dist/components/refine-countdown-panel.d.ts +3 -2
- package/dist/components/refine-failure-panel.d.ts +2 -1
- package/dist/components/resource-menu.d.ts +2 -1
- package/dist/components/resume-picker.d.ts +2 -1
- package/dist/components/scrollable-history.d.ts +2 -2
- package/dist/components/send-mode-picker.d.ts +3 -2
- package/dist/components/sessions-panel.d.ts +2 -1
- package/dist/components/settings-picker-filter.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/shell-command-warning.d.ts +2 -1
- package/dist/components/sidebar-content.d.ts +4 -9
- package/dist/components/sidebar-panel-frame.d.ts +2 -13
- package/dist/components/sidebar.d.ts +2 -1
- package/dist/components/skill-picker.d.ts +2 -1
- package/dist/components/slash-confirm-panel.d.ts +3 -2
- package/dist/components/slash-menu.d.ts +2 -1
- package/dist/components/status-bar-format.d.ts +2 -0
- package/dist/components/status-bar-icons.d.ts +4 -0
- package/dist/components/status-bar-rails.d.ts +19 -6
- package/dist/components/status-bar-types.d.ts +18 -0
- package/dist/components/status-bar.d.ts +17 -7
- package/dist/components/status-line-registry.d.ts +62 -0
- package/dist/components/statusline-picker.d.ts +5 -27
- package/dist/components/theme-picker.d.ts +2 -1
- package/dist/components/theme-preview.d.ts +2 -1
- package/dist/components/tools-picker.d.ts +2 -1
- package/dist/components/topic-check-panel.d.ts +2 -1
- package/dist/connections-slash.d.ts +2 -1
- package/dist/context-fill.d.ts +4 -3
- package/dist/context-slash.d.ts +3 -2
- package/dist/cron-slash.d.ts +2 -1
- package/dist/esc-close-panels.d.ts +2 -1
- package/dist/f-key-panels.d.ts +1 -1
- package/dist/git-info.d.ts +22 -3
- package/dist/height-cache.d.ts +2 -8
- package/dist/history-entry.d.ts +4 -3
- package/dist/history-retention.d.ts +16 -6
- package/dist/hit-test.d.ts +2 -1
- package/dist/hooks/subagent-history-format.d.ts +2 -1
- package/dist/hooks/use-app-session-state.d.ts +2 -1
- package/dist/hooks/use-auth-panel.d.ts +2 -1
- package/dist/hooks/use-brain-panel.d.ts +2 -1
- package/dist/hooks/use-chip-staleness-guard.d.ts +4 -3
- package/dist/hooks/use-core-tui-commands.d.ts +1 -1
- package/dist/hooks/use-director-fleet-bridge.d.ts +2 -4
- package/dist/hooks/use-exit-command.d.ts +1 -1
- package/dist/hooks/use-file-search.d.ts +3 -7
- package/dist/hooks/use-fleet-generation-gate.d.ts +2 -1
- package/dist/hooks/use-git-session-status.d.ts +1 -1
- package/dist/hooks/use-history-archive.d.ts +3 -2
- package/dist/hooks/use-input-history-persistence.d.ts +2 -1
- package/dist/hooks/use-mode-picker.d.ts +2 -1
- package/dist/hooks/use-model-pick.d.ts +2 -1
- package/dist/hooks/use-next-steps-auto-submit.d.ts +2 -2
- package/dist/hooks/use-panel-controllers.d.ts +3 -1
- package/dist/hooks/use-paste-handling.d.ts +2 -1
- package/dist/hooks/use-prompt-picker.d.ts +4 -3
- package/dist/hooks/use-session-rewind.d.ts +2 -1
- package/dist/hooks/use-shadow-panel.d.ts +2 -1
- package/dist/hooks/use-sidebar-panel-data.d.ts +4 -3
- package/dist/hooks/use-status-sync-interval.d.ts +2 -1
- package/dist/hooks/use-statusline-hidden-sync.d.ts +2 -1
- package/dist/hooks/use-statusline-state.d.ts +9 -3
- package/dist/hooks/use-stream-chip-expiration.d.ts +3 -2
- package/dist/hooks/use-terminal-size.d.ts +3 -2
- package/dist/hooks/use-theme-picker-handler.d.ts +2 -1
- package/dist/hooks/use-tui-activity.d.ts +2 -1
- package/dist/hooks/use-tui-controllers.d.ts +2 -1
- package/dist/hooks/use-tui-environment-state.d.ts +7 -5
- package/dist/hooks/use-tui-event-bridge.d.ts +1 -1
- package/dist/index.js +8509 -8341
- package/dist/ink.d.ts +1 -1
- package/dist/input-editing.d.ts +2 -1
- package/dist/input-tokens.d.ts +2 -1
- package/dist/input-validation/action-types.d.ts +1 -1
- package/dist/input-validation.d.ts +4 -4
- package/dist/kanban-slash.d.ts +8 -32
- package/dist/layout-store.d.ts +2 -1
- package/dist/markdown-table.d.ts +1 -3
- package/dist/memory-context-monitor.d.ts +3 -2
- package/dist/memory-lifecycle-entry.d.ts +2 -1
- package/dist/memory-slash-format.d.ts +0 -1
- package/dist/mouse.d.ts +3 -2
- package/dist/overlay-key-router.d.ts +5 -4
- package/dist/paste-accumulator.d.ts +3 -2
- package/dist/prompt-refinement-start.d.ts +1 -1
- package/dist/reducers/composer.d.ts +1 -1
- package/dist/reducers/conversation.d.ts +1 -1
- package/dist/reducers/helpers.d.ts +16 -3
- package/dist/resume-load.d.ts +131 -0
- package/dist/run-blocks-controller.d.ts +2 -1
- package/dist/run-tui-client-registration.d.ts +3 -2
- package/dist/run-tui-options.d.ts +35 -2
- package/dist/run-tui-teardown.d.ts +2 -1
- package/dist/run-tui-title-controller.d.ts +2 -1
- package/dist/scroll-anchor.d.ts +2 -4
- package/dist/slash-command-lifecycle.d.ts +2 -1
- package/dist/submit-history.d.ts +2 -1
- package/dist/submit-prompt-refinement.d.ts +3 -2
- package/dist/terminal-title.d.ts +2 -1
- package/dist/theme.d.ts +2 -2
- package/dist/token-previews.d.ts +2 -1
- package/dist/tui-host-capabilities.d.ts +1 -1
- package/dist/tui-memory-counters.d.ts +2 -1
- package/dist/ui-contracts.d.ts +1 -1
- package/dist/ui-glyphs.d.ts +3 -1
- package/dist/workbench-slash.d.ts +2 -1
- package/package.json +8 -8
- package/dist/react-children-flatten.d.ts +0 -28
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
2
|
import type { FleetEntry } from '../app-state.js';
|
|
3
|
-
|
|
3
|
+
interface FleetMonitorProps {
|
|
4
4
|
entries: Record<string, FleetEntry>;
|
|
5
5
|
/** Fleet-wide accumulated cost. */
|
|
6
6
|
totalCost: number;
|
|
@@ -57,4 +57,5 @@ export declare function fmtModelLabel(provider?: string, model?: string): string
|
|
|
57
57
|
* timeline to prevent unbounded growth in long-running sessions.
|
|
58
58
|
*/
|
|
59
59
|
export declare function FleetMonitor({ entries, totalCost, totalTokens, maxConcurrent, nowTick, collabSession, }: FleetMonitorProps): React.ReactElement;
|
|
60
|
+
export {};
|
|
60
61
|
//# sourceMappingURL=fleet-monitor.d.ts.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { TodoItem } from '@wrongstack/core/agent';
|
|
2
2
|
import type React from 'react';
|
|
3
3
|
import type { FleetEntry } from '../app-state.js';
|
|
4
|
-
|
|
4
|
+
interface FleetPanelProps {
|
|
5
5
|
/** Per-subagent state, keyed by subagentId. */
|
|
6
6
|
entries: Record<string, FleetEntry>;
|
|
7
7
|
/** Fleet-wide accumulated cost (from FleetUsageAggregator). */
|
|
@@ -25,7 +25,7 @@ export interface FleetPanelProps {
|
|
|
25
25
|
maxWidth?: number | undefined;
|
|
26
26
|
}
|
|
27
27
|
type SwarmColor = 'blue' | 'cyan' | 'green' | 'gray' | 'red' | 'yellow';
|
|
28
|
-
|
|
28
|
+
interface SwarmCell {
|
|
29
29
|
id: string;
|
|
30
30
|
index: string;
|
|
31
31
|
name: string;
|
|
@@ -38,13 +38,13 @@ export interface SwarmCell {
|
|
|
38
38
|
color: SwarmColor;
|
|
39
39
|
dim?: boolean | undefined;
|
|
40
40
|
}
|
|
41
|
-
|
|
41
|
+
interface SwarmGrid {
|
|
42
42
|
columns: number;
|
|
43
43
|
tileWidth: number;
|
|
44
44
|
overflow: number;
|
|
45
45
|
rows: SwarmCell[][];
|
|
46
46
|
}
|
|
47
|
-
|
|
47
|
+
interface TodoPreviewRow {
|
|
48
48
|
id: string;
|
|
49
49
|
marker: string;
|
|
50
50
|
text: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
2
|
import type { GoalSummary } from '../app-state.js';
|
|
3
|
-
|
|
3
|
+
interface GoalKanbanPanelProps {
|
|
4
4
|
projectRoot: string;
|
|
5
5
|
goal: GoalSummary | null;
|
|
6
6
|
onClose: () => void;
|
|
@@ -11,4 +11,5 @@ export interface GoalKanbanPanelProps {
|
|
|
11
11
|
* tasks in columns (Backlog → In Progress → Done) with live auto-refresh.
|
|
12
12
|
*/
|
|
13
13
|
export declare function GoalKanbanPanel({ projectRoot, goal, onClose, }: GoalKanbanPanelProps): React.ReactElement;
|
|
14
|
+
export {};
|
|
14
15
|
//# sourceMappingURL=goal-kanban-panel.d.ts.map
|
|
@@ -5,7 +5,7 @@ export interface HelpEntry {
|
|
|
5
5
|
/** What it does. */
|
|
6
6
|
desc: string;
|
|
7
7
|
}
|
|
8
|
-
|
|
8
|
+
interface HelpSection {
|
|
9
9
|
title: string;
|
|
10
10
|
entries: HelpEntry[];
|
|
11
11
|
}
|
|
@@ -24,4 +24,5 @@ export declare function helpSections(): HelpSection[];
|
|
|
24
24
|
* so all legend entries fit without scrolling.
|
|
25
25
|
*/
|
|
26
26
|
export declare function HelpOverlay(): React.ReactElement;
|
|
27
|
+
export {};
|
|
27
28
|
//# sourceMappingURL=help-overlay.d.ts.map
|
|
@@ -6,11 +6,12 @@ export interface HelpEntry {
|
|
|
6
6
|
aliases?: string[] | undefined;
|
|
7
7
|
argsHint?: string | undefined;
|
|
8
8
|
}
|
|
9
|
-
|
|
9
|
+
interface HelpPanelProps {
|
|
10
10
|
entries: HelpEntry[];
|
|
11
11
|
filter: string;
|
|
12
12
|
selected: number;
|
|
13
13
|
hint?: string | undefined;
|
|
14
14
|
}
|
|
15
15
|
export declare function HelpPanel({ entries, filter, selected, hint, }: HelpPanelProps): React.ReactElement;
|
|
16
|
+
export {};
|
|
16
17
|
//# sourceMappingURL=help-panel.d.ts.map
|
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
interface
|
|
2
|
-
path?: string | undefined;
|
|
3
|
-
diff: string;
|
|
4
|
-
}
|
|
5
|
-
export interface PathedDiffItem {
|
|
1
|
+
interface PathedDiffItem {
|
|
6
2
|
path?: string | undefined;
|
|
7
3
|
diff: string;
|
|
8
4
|
}
|
|
9
5
|
export declare function joinReplaceDiffs(obj: Record<string, unknown>): string | undefined;
|
|
10
|
-
export declare function splitReplaceDiffs(obj: Record<string, unknown>): ReplaceDiffItem[];
|
|
11
6
|
export declare function countUnifiedDiffChanges(diff: string): {
|
|
12
7
|
added: number;
|
|
13
8
|
removed: number;
|
|
@@ -20,8 +20,6 @@ interface OmittedDiffSummary {
|
|
|
20
20
|
export type DiffFilePreviews = DiffFilePreview[] & {
|
|
21
21
|
omitted?: OmittedDiffSummary | undefined;
|
|
22
22
|
};
|
|
23
|
-
/** Max code-block lines rendered before a "+N more" footer. */
|
|
24
|
-
export declare const MAX_CODE_LINES = 80;
|
|
25
23
|
/**
|
|
26
24
|
* Hard ceiling for one file's rendered diff preview. Diff rows are React/Ink
|
|
27
25
|
* elements and therefore retained by the active virtual-history window; an
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { EntryHeightCache } from '../../height-cache.js';
|
|
2
2
|
import type { CopyHit } from './copy-geometry.js';
|
|
3
3
|
import { type RenderGroup } from './tool-group.js';
|
|
4
|
-
|
|
4
|
+
interface CopyRegistry {
|
|
5
5
|
hits: CopyHit[];
|
|
6
6
|
liveHit: CopyHit | null;
|
|
7
7
|
}
|
|
@@ -25,4 +25,5 @@ export declare function buildCopyRegistry(opts: {
|
|
|
25
25
|
showModelReasoning?: boolean | undefined;
|
|
26
26
|
liveToolVisible: boolean;
|
|
27
27
|
}): CopyRegistry;
|
|
28
|
+
export {};
|
|
28
29
|
//# sourceMappingURL=copy-registry.d.ts.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
2
|
import type { HistoryProps } from './types.js';
|
|
3
|
-
export { AssistantBody, assistantContentWidth, MESSAGE_PANEL_BORDER_WIDTH, MESSAGE_PANEL_CHROME_WIDTH,
|
|
3
|
+
export { AssistantBody, assistantContentWidth, MESSAGE_PANEL_BORDER_WIDTH, MESSAGE_PANEL_CHROME_WIDTH, splitFencedBlocks } from './assistant.js';
|
|
4
4
|
export { Banner } from './banner.js';
|
|
5
5
|
export { CodeBlock, DiffBlock, DiffFileBlock, type DiffFilePreview, type DiffLineKind, type DiffLineRow, type DiffPreview, extractDiffPreview, extractMultiFileDiffs, extractReplaceDiffs, formatDiffStats, formatMultiDiffSummary, MULTI_DIFF_MAX_FILES, MULTI_DIFF_MAX_ROWS, MULTI_DIFF_SUMMARY_THRESHOLD, type MultiDiffSummary, parseUnifiedDiff, summarizeMultiFileDiffs, } from './code-block.js';
|
|
6
6
|
export { Entry } from './entry.js';
|
|
7
7
|
export type { AutonomyAgentStatus, BodySegment, HistoryEntry, HistoryProps } from './types.js';
|
|
8
|
-
export { countLines, firstNonEmpty, fmtBytes, fmtDuration, fmtTok, formatMatchHit, formatToolArgs, formatToolOutput, formatToolVisualOutput, MAX_STREAM_DISPLAY_CHARS, numOf,
|
|
8
|
+
export { countLines, firstNonEmpty, fmtBytes, fmtDuration, fmtTok, formatMatchHit, formatToolArgs, formatToolOutput, formatToolVisualOutput, MAX_STREAM_DISPLAY_CHARS, numOf, scanNumberedRange, shortenPath, streamBoxRows, stringOf, ToolOutputLines, ToolStreamBox, type ToolVisualLine, type ToolVisualLineKind, tailForDisplay, toolStreamBoxHeight, truncMid, tryParseJson } from './utils.js';
|
|
9
9
|
/**
|
|
10
10
|
* History component — renders committed entries via <Static> so they
|
|
11
11
|
* flow into terminal scrollback.
|
|
@@ -6,7 +6,8 @@ import type { HistoryEntry } from './types.js';
|
|
|
6
6
|
* backbone — user/assistant/system text, thinking blocks, and tool calls with
|
|
7
7
|
* their input + output) and interleaves the audit `events` marker stream
|
|
8
8
|
* (mode/compaction/checkpoint/skill/agent/error/retry/truncation) at their
|
|
9
|
-
* chronological positions.
|
|
9
|
+
* chronological positions. Subagent/delegate lifecycle markers are excluded
|
|
10
|
+
* from the main resume screen.
|
|
10
11
|
*
|
|
11
12
|
* Ordering is a two-pointer merge of two already-chronological sequences
|
|
12
13
|
* (message backbone by construction, marker events by JSONL order) so the
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
-
import { type ParsedSageMemoryLine } from './utils.js';
|
|
3
2
|
/**
|
|
4
3
|
* Compact magenta-bordered panel rendering SAGE memory-injection lines
|
|
5
4
|
* appended to a tool result. Renders nothing when `sageLines` is empty.
|
|
@@ -31,11 +30,6 @@ export declare function SageMemoryBlock({ sageLines, toolName, stats, compact, }
|
|
|
31
30
|
*/
|
|
32
31
|
compact?: boolean | undefined;
|
|
33
32
|
}): React.ReactElement | null;
|
|
34
|
-
/** One parsed memory, rendered as a structured key/value row block. */
|
|
35
|
-
export declare function SageMemoryRow({ parsed, index, }: {
|
|
36
|
-
parsed: ParsedSageMemoryLine;
|
|
37
|
-
index: number;
|
|
38
|
-
}): React.ReactElement;
|
|
39
33
|
/** Compact key/value row used inside `SageMemoryRow`. */
|
|
40
34
|
export declare function SageKv({ label, value }: {
|
|
41
35
|
label: string;
|
|
@@ -63,18 +63,13 @@ export interface HistoryScrollController {
|
|
|
63
63
|
* margin-click behavior. Gutterless kinds (info, memory-lifecycle, tool
|
|
64
64
|
* groups, …) pass the column through unchanged.
|
|
65
65
|
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
* together exactly as the renderer's single Text node does, and
|
|
74
|
-
* resolveRowCol shifts row-0 columns past the measured prefix width
|
|
75
|
-
* (string-width cells), clamping label/icon clicks to the text start —
|
|
76
|
-
* the same margin-click semantics as the gutter clamp above. Constants
|
|
77
|
-
* are single-sourced in wrap-geometry.ts and consumed by entry.tsx.
|
|
66
|
+
* Copy contract (block-based): the selection rect only decides WHICH
|
|
67
|
+
* blocks it touches — every touched block is copied in full via
|
|
68
|
+
* copyableTextForEntry (the same payload the copy icon writes), so inline
|
|
69
|
+
* chrome (card gutter, `👤 USER ` label, `ℹ ` icon) neither leaks into
|
|
70
|
+
* nor offsets the payload. Columns still drive the GESTURE: band bounds
|
|
71
|
+
* (`isOutOfBand`), the highlight band, and the drag-vs-click distinction
|
|
72
|
+
* (a zero-size selection commits nothing).
|
|
78
73
|
*/
|
|
79
74
|
beginSelection(row: number, col: number): void;
|
|
80
75
|
/**
|
|
@@ -15,14 +15,14 @@
|
|
|
15
15
|
* drag that holds the same row span doesn't spam listeners.
|
|
16
16
|
*/
|
|
17
17
|
/** Row span of an in-progress drag, in viewport rows (0-based, inclusive). */
|
|
18
|
-
|
|
18
|
+
interface SelectionBand {
|
|
19
19
|
readonly topRow: number;
|
|
20
20
|
readonly bottomRow: number;
|
|
21
21
|
/** Row under the live drag head — rendered denser so the user can see
|
|
22
22
|
* where the gesture currently points. */
|
|
23
23
|
readonly headRow: number;
|
|
24
24
|
}
|
|
25
|
-
|
|
25
|
+
type SelectionBandSnapshot = SelectionBand | null;
|
|
26
26
|
export interface SelectionBandStore {
|
|
27
27
|
subscribe(listener: () => void): () => void;
|
|
28
28
|
getSnapshot(): SelectionBandSnapshot;
|
|
@@ -35,4 +35,5 @@ export declare function bandFromSelection(anchor: {
|
|
|
35
35
|
row: number;
|
|
36
36
|
}): SelectionBand;
|
|
37
37
|
export declare function createSelectionBandStore(): SelectionBandStore;
|
|
38
|
+
export {};
|
|
38
39
|
//# sourceMappingURL=selection-band-store.d.ts.map
|
|
@@ -32,44 +32,17 @@ export declare function normalizeSelection(a: {
|
|
|
32
32
|
* calling into the controller — we only check the band bounds here. */
|
|
33
33
|
export declare function isOutOfBand(col: number, termWidth: number): boolean;
|
|
34
34
|
/**
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
* column — the gutter is excluded by the caller before reaching here).
|
|
40
|
-
* `end` is inclusive. When `startRow === endRow`, the slice is one row; the
|
|
41
|
-
* caller is responsible for translating text columns into source offsets.
|
|
42
|
-
*/
|
|
43
|
-
export interface SelectionSlice {
|
|
44
|
-
entryId: number;
|
|
45
|
-
/** Inclusive row-in-card for the start of the slice. */
|
|
46
|
-
startRow: number;
|
|
47
|
-
/** Inclusive column, 0-based, inside the card's text area (gutter excluded). */
|
|
48
|
-
startCol: number;
|
|
49
|
-
/** Inclusive end row. */
|
|
50
|
-
endRow: number;
|
|
51
|
-
/** Inclusive end column, 0-based. */
|
|
52
|
-
endCol: number;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Translate a viewport-cell selection into per-entry row/col slices, walking
|
|
56
|
-
* the same mounted-group geometry the copy-hit registry uses so the two
|
|
57
|
-
* systems share one row index. Entries wholly outside the selection return
|
|
58
|
-
* nothing. Entries whose vertical span is wholly inside the selection are
|
|
59
|
-
* returned as a single row-range; entries the selection clips at the top or
|
|
60
|
-
* bottom are returned with row bounds matching the clip.
|
|
61
|
-
*
|
|
62
|
-
* `cardVisibleCols` is the number of columns inside the card the user can
|
|
63
|
-
* see — the band width minus the right gutter (`viewportWidth - SCROLLBAR_HIT_WIDTH`).
|
|
64
|
-
* Slices never include the gutter or any column to its right; the caller has
|
|
65
|
-
* already validated that.
|
|
35
|
+
* Ordered ids of the head entries whose visible rows the selection touches.
|
|
36
|
+
* A block counts as touched when the selection rectangle overlaps ANY of its
|
|
37
|
+
* viewport rows — even a single row — which is what makes the copy
|
|
38
|
+
* block-based: partial vertical contact yields the whole block.
|
|
66
39
|
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
* the
|
|
70
|
-
*
|
|
40
|
+
* `cards` are the mounted spans in document order (as produced by
|
|
41
|
+
* `buildMountedCardSpans`), so the returned ids follow the same top-to-bottom
|
|
42
|
+
* order the blocks appear in on screen, regardless of drag direction
|
|
43
|
+
* (`normalizeSelection` has already ordered the rect).
|
|
71
44
|
*/
|
|
72
|
-
export declare function
|
|
45
|
+
export declare function selectionTouchedEntryIds(opts: {
|
|
73
46
|
selection: SelectionRect;
|
|
74
47
|
cards: ReadonlyArray<{
|
|
75
48
|
entryId: number;
|
|
@@ -78,41 +51,27 @@ export declare function selectionToSlices(opts: {
|
|
|
78
51
|
/** 0-based viewport row just past the card's last visible row. */
|
|
79
52
|
viewportEndRow: number;
|
|
80
53
|
}>;
|
|
81
|
-
|
|
82
|
-
}): SelectionSlice[];
|
|
54
|
+
}): number[];
|
|
83
55
|
/**
|
|
84
|
-
* Build the clipboard payload for a selection
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
* `startCol`/`endCol` in card-local coordinates; we split the entry's
|
|
88
|
-
* text on `\n`, keep only the rows inside the row range, and within those
|
|
89
|
-
* rows apply the column range. The matrix matches what the source line
|
|
90
|
-
* index would be when no wrapping occurs — i.e. one card row maps to one
|
|
91
|
-
* source line. Wrap-geometry translation is intentionally absent in v1
|
|
92
|
-
* because the layout store does not yet expose per-card-row wrap segments;
|
|
93
|
-
* it returns when those segments exist and a v1.1 test demands it.
|
|
56
|
+
* Build the clipboard payload for a block-based selection: every touched
|
|
57
|
+
* head id contributes its block's FULL copyable text, in the order given
|
|
58
|
+
* (the assembler never reorders or slices).
|
|
94
59
|
*
|
|
95
|
-
* `toolGroupsByHeadId` lets a multi-member tool-group expand
|
|
96
|
-
* head id
|
|
97
|
-
* `copyableTextForEntries` (raw ordered JSON of every member, matching
|
|
98
|
-
*
|
|
99
|
-
*
|
|
60
|
+
* `toolGroupsByHeadId` lets a multi-member tool-group expand as ONE block:
|
|
61
|
+
* when the head id maps to member ids, the block copies via
|
|
62
|
+
* `copyableTextForEntries` (raw ordered JSON of every member, matching the
|
|
63
|
+
* existing copy-icon contract). A single-entry head falls through to
|
|
64
|
+
* `copyableTextForEntry`.
|
|
100
65
|
*
|
|
101
|
-
*
|
|
102
|
-
* where one card ends and the next begins.
|
|
103
|
-
*
|
|
104
|
-
* through
|
|
66
|
+
* Multiple touched blocks are joined with `\n---\n` so the user can see
|
|
67
|
+
* where one card ends and the next begins. Unknown ids (entries no longer
|
|
68
|
+
* retained) and blocks that resolve to empty text are skipped; a selection
|
|
69
|
+
* that resolves to no text returns `""` so the caller can fall through
|
|
70
|
+
* silently.
|
|
105
71
|
*/
|
|
106
72
|
export declare function assembleSelectionText(opts: {
|
|
107
|
-
|
|
73
|
+
entryIds: readonly number[];
|
|
108
74
|
entriesById: ReadonlyMap<number, HistoryEntry>;
|
|
109
75
|
toolGroupsByHeadId?: ReadonlyMap<number, readonly number[]> | undefined;
|
|
110
|
-
/**
|
|
111
|
-
* Render width used to build the wrap-aware row→line translation for
|
|
112
|
-
* assistant/thinking cards (v1.1 M4). When omitted, wrapped kinds fall
|
|
113
|
-
* back to the v1 naive mapping below — callers that cannot know the
|
|
114
|
-
* width keep their existing behavior.
|
|
115
|
-
*/
|
|
116
|
-
termWidth?: number | undefined;
|
|
117
76
|
}): string;
|
|
118
77
|
//# sourceMappingURL=selection-helpers.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
-
|
|
2
|
+
interface ToolCardProps {
|
|
3
3
|
glyph: string;
|
|
4
4
|
color: string;
|
|
5
5
|
title: string;
|
|
@@ -17,4 +17,5 @@ export interface ToolCardProps {
|
|
|
17
17
|
* easy to scan in long transcripts.
|
|
18
18
|
*/
|
|
19
19
|
export declare function ToolCard({ glyph, color, title, detail, meta, ok, termWidth, hasBody, children, }: ToolCardProps): React.ReactElement;
|
|
20
|
+
export {};
|
|
20
21
|
//# sourceMappingURL=tool-card.d.ts.map
|
|
@@ -35,13 +35,6 @@ export type RenderGroup = {
|
|
|
35
35
|
type: 'tool-group';
|
|
36
36
|
data: ToolGroupData;
|
|
37
37
|
};
|
|
38
|
-
/**
|
|
39
|
-
* Hard ceiling for one rendered tool group. A group is a virtualization unit,
|
|
40
|
-
* so allowing an arbitrarily long same-tool run (for example 400 consecutive
|
|
41
|
-
* reads) would mount the whole run on every streaming redraw and defeat the
|
|
42
|
-
* bounded history window.
|
|
43
|
-
*/
|
|
44
|
-
export declare const MAX_TOOL_GROUP_ENTRIES = 12;
|
|
45
38
|
/** Stable id used by the height cache and React keys for a render group. */
|
|
46
39
|
export declare function renderGroupId(group: RenderGroup): number;
|
|
47
40
|
/** Conservative, bounded row estimate used before a group is measured. */
|
|
@@ -4,7 +4,7 @@ import type { HistoryScrollController } from './scroll-controller-types.js';
|
|
|
4
4
|
import type { MountedCardSpan } from './scrollbar-geometry.js';
|
|
5
5
|
import { type SelectionBandStore } from './selection-band-store.js';
|
|
6
6
|
import type { HistoryEntry } from './types.js';
|
|
7
|
-
|
|
7
|
+
interface UseHistoryControllerOptions {
|
|
8
8
|
geometry: ScrollGeometry;
|
|
9
9
|
effectiveAnchor: ScrollAnchor | null;
|
|
10
10
|
groupIds: readonly number[];
|
|
@@ -68,4 +68,5 @@ export declare function useHistoryController(opts: UseHistoryControllerOptions):
|
|
|
68
68
|
current: readonly number[];
|
|
69
69
|
};
|
|
70
70
|
};
|
|
71
|
+
export {};
|
|
71
72
|
//# sourceMappingURL=use-history-controller.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { countLines, firstNonEmpty, fmtBytes, fmtDuration, fmtTok, formatMatchHit, numOf,
|
|
1
|
+
export { countLines, firstNonEmpty, fmtBytes, fmtDuration, fmtTok, formatMatchHit, numOf, scanNumberedRange, shortenPath, stringOf, truncMid, tryParseJson } from './basic-format.js';
|
|
2
2
|
export { MAX_STREAM_DISPLAY_CHARS, streamBoxRows, ToolStreamBox, tailForDisplay, toolStreamBoxHeight, } from './stream-box.js';
|
|
3
3
|
export { ToolOutputLines } from './visual-lines.js';
|
|
4
4
|
export type { ToolVisualLine, ToolVisualLineKind } from './tool-visual-types.js';
|
|
@@ -1,130 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* the
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* wrote, not the renderer's decoration. Visual-row alignment for
|
|
19
|
-
* heavily-structured markdown is approximate and documented as such.
|
|
20
|
-
*
|
|
21
|
-
* The render truth this mirrors (verified against the components):
|
|
22
|
-
* - `assistant` cards (entry.tsx) render `parseNextSteps(text, true).stripped`
|
|
23
|
-
* through AssistantBody → MarkdownView, wrapped by Ink's Text at
|
|
24
|
-
* `assistantContentWidth(termWidth)` = termWidth − 2. Ink wraps via
|
|
25
|
-
* wrap-ansi with `{ trim: false, hard: true }` (ink/build/wrap-text.js).
|
|
26
|
-
* The markdown transform above applies only to structured spans; plain
|
|
27
|
-
* prose lines pass through unwrapped-by-markdown and are exact here.
|
|
28
|
-
* - `thinking` cards render sanitizeTerminalText(text) at the same width
|
|
29
|
-
* with no markdown transform — exact.
|
|
30
|
-
* - `user` cards render the `'👤 USER '` label inline before the text in
|
|
31
|
-
* the same bordered Text (entry.tsx), so row 0 = label cells then text;
|
|
32
|
-
* wrapped continuation rows start at the text. `pasteContent` renders as
|
|
33
|
-
* a second block (`' ↳ '` preview) after a newline; the copy base is
|
|
34
|
-
* `pasteContent || text` (copy-icon.ts), so a card with BOTH blocks shows
|
|
35
|
-
* two text regions while the base holds one — those keep the v1 naive
|
|
36
|
-
* mapping (assembler-side residual, documented here).
|
|
37
|
-
* - `info` cards are unbordered plain Text: the `'ℹ '` icon inline before
|
|
38
|
-
* the text, wrapped at the FULL termWidth (no panel gutter).
|
|
39
|
-
*
|
|
40
|
-
* Inline-prefix translation: the label/icon cells are chrome, not copyable
|
|
41
|
-
* text. buildBodyRowMap wraps `prefix + first line` together — the renderer
|
|
42
|
-
* concatenates them into one Text node before Ink wraps it, so the wrap
|
|
43
|
-
* boundaries are only correct when the prefix participates in the wrap — and
|
|
44
|
-
* records the prefix width in terminal cells (string-width, the project's
|
|
45
|
-
* measurer; 👤 is a surrogate pair — 2 code units AND 2 cells — so both
|
|
46
|
-
* shipped prefixes happen to have prefixWidth === prefix.length). resolveRowCol
|
|
47
|
-
* shifts row-0 columns past it, clamping prefix clicks to the text start:
|
|
48
|
-
* the same margin-click semantics M3 gives the card gutter. The clamp works
|
|
49
|
-
* in CELLS while segment ranges are in CHARACTERS — exact when the body's
|
|
50
|
-
* characters are single-cell, the same standing M4 approximation that
|
|
51
|
-
* already governs text content. Narrow panes where the label alone exceeds
|
|
52
|
-
* the content width produce label-only rows (zero-width spans) — that
|
|
53
|
-
* mirrors Ink's render exactly and is deliberately preserved: any divergence
|
|
54
|
-
* between the map and the renderer breaks WYSIWYG slicing.
|
|
55
|
-
*
|
|
56
|
-
* Origin: card row 0 = body row 0, matching v1's documented origin (one card
|
|
57
|
-
* row per source line when nothing wraps). Any chrome-row offset above the
|
|
58
|
-
* body is a preexisting v1 approximation outside M4's scope — preserved, not
|
|
59
|
-
* altered, so every pinned expectation keeps its exact meaning.
|
|
60
|
-
*
|
|
61
|
-
* The load-bearing invariant (verified empirically against wrap-ansi@10.0.1,
|
|
62
|
-
* the exact version ink 7.1.1 resolves): for each source line,
|
|
63
|
-
* `wrapAnsi(line, w, {trim:false, hard:true}).split('\n').join('') === line`.
|
|
64
|
-
* Segment prefix sums therefore give EXACT source offsets. For a non-wrapped
|
|
65
|
-
* line the single segment spans the whole line with `start = 0`, so every
|
|
66
|
-
* resolve here reduces to v1's math (`offset = col`, end = `col + 1`).
|
|
2
|
+
* Inline render-chrome constants shared by the chat-history renderer.
|
|
3
|
+
*
|
|
4
|
+
* `USER_LABEL` is the inline label entry.tsx renders before a user card's
|
|
5
|
+
* text (`<Text bold>👤 USER </Text>` then the text, one Text node) and
|
|
6
|
+
* `INFO_PREFIX` is the inline icon before an info card's text
|
|
7
|
+
* (`<Text>ℹ </Text>` then the text). Both live here so entry.tsx consumes
|
|
8
|
+
* the single source (p3) — drift between the render and these constants
|
|
9
|
+
* would silently mis-offset any column math built on them.
|
|
10
|
+
*
|
|
11
|
+
* The per-card-row wrap map (`buildBodyRowMap` / `hasWrapMap` /
|
|
12
|
+
* `resolveRowCol`) that used to live here was removed on 2026-08-29:
|
|
13
|
+
* drag-select copy became BLOCK-based (see selection-helpers.ts), and
|
|
14
|
+
* whole-block copies need the entry's source text, not per-row geometry.
|
|
15
|
+
* Git history preserves the machinery if a future feature (e.g. layout-
|
|
16
|
+
* store-exposed wrap segments) needs it again. The cells === code-units
|
|
17
|
+
* assumption both prefixes rely on is pinned by tests/wrap-geometry.test.ts.
|
|
67
18
|
*/
|
|
68
|
-
|
|
69
|
-
/** One wrapped visual row inside a card body: the source line it shows and
|
|
70
|
-
* the half-open [start, end) character range of that line it covers. */
|
|
71
|
-
export interface BodyRowSpan {
|
|
72
|
-
line: number;
|
|
73
|
-
start: number;
|
|
74
|
-
end: number;
|
|
75
|
-
}
|
|
76
|
-
export interface BodyRowMap {
|
|
77
|
-
/** Per-card-row spans, index 0 = card row 0 (v1 origin). */
|
|
78
|
-
rows: readonly BodyRowSpan[];
|
|
79
|
-
/** The exact text the map indexes into — the render base (sanitized; for
|
|
80
|
-
* assistant entries with the next-steps block stripped exactly like the
|
|
81
|
-
* renderer). Slicing this text is WYSIWYG for the wrapped kinds. */
|
|
82
|
-
text: string;
|
|
83
|
-
/** Terminal CELLS of inline chrome rendered before the first text
|
|
84
|
-
* character on row 0 (user label / info icon). 0 for prefix-less kinds. */
|
|
85
|
-
prefixWidth: number;
|
|
86
|
-
}
|
|
87
|
-
/** Inline label the renderer places before a user card's text
|
|
88
|
-
* (entry.tsx: `<Text bold>👤 USER </Text>` then the text, one Text node).
|
|
89
|
-
* Exported so entry.tsx consumes the single source (p3) — drift between the
|
|
90
|
-
* render and this constant silently mis-offsets user-card selection. */
|
|
19
|
+
/** Inline label the renderer places before a user card's text. */
|
|
91
20
|
export declare const USER_LABEL = "\uD83D\uDC64 USER ";
|
|
92
|
-
/** Inline icon the renderer places before an info card's text
|
|
93
|
-
* (entry.tsx: `<Text>ℹ </Text>` then the text, one Text node). */
|
|
21
|
+
/** Inline icon the renderer places before an info card's text. */
|
|
94
22
|
export declare const INFO_PREFIX = "\u2139 ";
|
|
95
|
-
/** Kinds whose render path this module mirrors. Everything else uses the
|
|
96
|
-
* v1 naive mapping in assembleSelectionText. Declared as a type predicate
|
|
97
|
-
* (taking the entry, not the kind) so call sites narrow the HistoryEntry
|
|
98
|
-
* union — every member kind carries `text`, the others may not. The
|
|
99
|
-
* assembler additionally restricts user cards to the no-pasteContent shape
|
|
100
|
-
* (see selection-helpers): a card with a paste block renders two text
|
|
101
|
-
* regions but the copy base holds one, so those stay on the v1 path. */
|
|
102
|
-
export declare function hasWrapMap(entry: HistoryEntry): entry is Extract<HistoryEntry, {
|
|
103
|
-
kind: 'assistant' | 'thinking' | 'user' | 'info';
|
|
104
|
-
}>;
|
|
105
|
-
/**
|
|
106
|
-
* Build the card-row → (source line, char range) map for one text card.
|
|
107
|
-
* Pure and deterministic from (kind, text, termWidth).
|
|
108
|
-
*
|
|
109
|
-
* For prefixed kinds (user label, info icon) line 0 is wrapped AS the
|
|
110
|
-
* renderer sees it — `prefix + line` in one Text node — so wrap boundaries
|
|
111
|
-
* match the visual rows; each segment is then translated back to
|
|
112
|
-
* text-local character coordinates (the prefix chars subtracted, clamped).
|
|
113
|
-
*/
|
|
114
|
-
export declare function buildBodyRowMap(kind: HistoryEntry['kind'], rawText: string, termWidth: number): BodyRowMap;
|
|
115
|
-
/**
|
|
116
|
-
* Resolve the (source line, char offset) a card row + column points at,
|
|
117
|
-
* clamping out-of-range rows to the last body row and columns to the
|
|
118
|
-
* wrapped segment.
|
|
119
|
-
*
|
|
120
|
-
* Column semantics match v1: `col` is a body-local character offset (v1
|
|
121
|
-
* sliced the source line by it directly), so a non-wrapped line resolves to
|
|
122
|
-
* exactly v1's numbers. `atEnd` is set for an inclusive drag endpoint (end
|
|
123
|
-
* of a selection range): the offset then counts one past the column,
|
|
124
|
-
* clamped to the segment's end — mirroring v1's `endCol + 1`.
|
|
125
|
-
*/
|
|
126
|
-
export declare function resolveRowCol(map: BodyRowMap, row: number, col: number, atEnd: boolean): {
|
|
127
|
-
line: number;
|
|
128
|
-
offset: number;
|
|
129
|
-
};
|
|
130
23
|
//# sourceMappingURL=wrap-geometry.d.ts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { AssistantBody, type AutonomyAgentStatus, assistantContentWidth, Banner, type BodySegment, CodeBlock, countLines, DiffBlock, DiffFileBlock, type DiffFilePreview, type DiffLineKind, type DiffLineRow, type DiffPreview, Entry, extractDiffPreview, extractMultiFileDiffs, extractReplaceDiffs, firstNonEmpty, fmtBytes, fmtDuration, fmtTok, formatMatchHit, formatMultiDiffSummary, formatToolArgs, formatToolOutput, formatToolVisualOutput, History, type HistoryEntry, type HistoryProps, MAX_STREAM_DISPLAY_CHARS, MESSAGE_PANEL_BORDER_WIDTH, MESSAGE_PANEL_CHROME_WIDTH,
|
|
1
|
+
export { AssistantBody, type AutonomyAgentStatus, assistantContentWidth, Banner, type BodySegment, CodeBlock, countLines, DiffBlock, DiffFileBlock, type DiffFilePreview, type DiffLineKind, type DiffLineRow, type DiffPreview, Entry, extractDiffPreview, extractMultiFileDiffs, extractReplaceDiffs, firstNonEmpty, fmtBytes, fmtDuration, fmtTok, formatMatchHit, formatMultiDiffSummary, formatToolArgs, formatToolOutput, formatToolVisualOutput, History, type HistoryEntry, type HistoryProps, MAX_STREAM_DISPLAY_CHARS, MESSAGE_PANEL_BORDER_WIDTH, MESSAGE_PANEL_CHROME_WIDTH, MULTI_DIFF_MAX_FILES, MULTI_DIFF_MAX_ROWS, MULTI_DIFF_SUMMARY_THRESHOLD, type MultiDiffSummary, numOf, parseUnifiedDiff, scanNumberedRange, shortenPath, splitFencedBlocks, streamBoxRows, stringOf, summarizeMultiFileDiffs, ToolOutputLines, ToolStreamBox, type ToolVisualLine, type ToolVisualLineKind, tailForDisplay, toolStreamBoxHeight, truncMid, tryParseJson } from './history/index.js';
|
|
2
2
|
//# sourceMappingURL=history.d.ts.map
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import type { Context } from '@wrongstack/core/agent';
|
|
2
2
|
import { type KanbanBoard, type KanbanLifecycleStage, type KanbanTask } from '@wrongstack/kanban';
|
|
3
3
|
import type React from 'react';
|
|
4
|
-
|
|
5
|
-
export interface KanbanPanelProps {
|
|
4
|
+
interface KanbanPanelProps {
|
|
6
5
|
projectRoot: string;
|
|
7
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Session driving the panel. Required: every board mutation the panel makes
|
|
8
|
+
* writes a durable event attributed to this session.
|
|
9
|
+
*/
|
|
10
|
+
sessionId: string;
|
|
8
11
|
sessionContext?: Context | undefined;
|
|
9
12
|
onClose: () => void;
|
|
10
13
|
/**
|
|
@@ -54,15 +57,6 @@ export declare function nextManagedStage(current: KanbanLifecycleStage): KanbanL
|
|
|
54
57
|
* as a legacy/custom column by the renderer).
|
|
55
58
|
*/
|
|
56
59
|
export declare function stageForColumn(board: Pick<KanbanBoard, 'lifecycle'>, columnId: string): KanbanLifecycleStage | null;
|
|
57
|
-
/**
|
|
58
|
-
* Map a lifecycle stage to the visual indicator shown in the column
|
|
59
|
-
* header. Mirrors the WebUI palette so the same board reads the same in
|
|
60
|
-
* either surface.
|
|
61
|
-
*/
|
|
62
|
-
export declare function stageToIndicator(stage: KanbanLifecycleStage): {
|
|
63
|
-
glyph: string;
|
|
64
|
-
color: string;
|
|
65
|
-
};
|
|
66
60
|
/**
|
|
67
61
|
* Pure success-criteria summary string. Returns null when there are no
|
|
68
62
|
* checks. Format: "Criteria N/M passed".
|
|
@@ -74,17 +68,5 @@ export declare function summarizeSuccessCriteria(task: KanbanTask): string | nul
|
|
|
74
68
|
* are skipped to keep the line short).
|
|
75
69
|
*/
|
|
76
70
|
export declare function summarizeGoalMetrics(task: KanbanTask): string | null;
|
|
77
|
-
|
|
78
|
-
* Inline Kanban Cleaner summary — mirrors the WebUI's `KanbanCleanerAlert`
|
|
79
|
-
* but pinned to the project root. Shows the headline counts at the top
|
|
80
|
-
* of the panel and the top-3 issues, scoped per board so users see what
|
|
81
|
-
* the Cleaner would flag without leaving the TUI.
|
|
82
|
-
*
|
|
83
|
-
* The component renders nothing when the audit is empty so a clean
|
|
84
|
-
* board doesn't add visual noise.
|
|
85
|
-
*/
|
|
86
|
-
export declare function AuditAlert({ summary, topN, }: {
|
|
87
|
-
summary: KanbanAuditSummary;
|
|
88
|
-
topN?: number | undefined;
|
|
89
|
-
}): React.ReactElement | null;
|
|
71
|
+
export {};
|
|
90
72
|
//# sourceMappingURL=kanban-panel.d.ts.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { FleetEntry } from '../app.js';
|
|
3
|
-
|
|
3
|
+
interface LiveActivityStripProps {
|
|
4
4
|
/** Per-subagent state from the FleetEntry table. */
|
|
5
5
|
entries: Record<string, FleetEntry>;
|
|
6
6
|
/** Re-renders every tick so elapsed timers stay live; otherwise the
|
|
@@ -36,4 +36,5 @@ export declare function activityStripRows(entries: Record<string, FleetEntry>, n
|
|
|
36
36
|
* after /clear), so the input sits flush against history during solo work.
|
|
37
37
|
*/
|
|
38
38
|
export declare const LiveActivityStrip: React.MemoExoticComponent<({ entries, nowTick, maxRows, }: LiveActivityStripProps) => React.ReactElement | null>;
|
|
39
|
+
export {};
|
|
39
40
|
//# sourceMappingURL=live-activity-strip.d.ts.map
|