@wrongstack/tui 1.0.3 → 1.0.5
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/README.md +3 -0
- package/dist/app-action-type.d.ts +29 -1
- package/dist/app-key-handler.d.ts +5 -120
- package/dist/app-settings-type.d.ts +3 -0
- package/dist/app-state.d.ts +21 -12
- package/dist/app-view-contract.d.ts +3 -0
- package/dist/app-view-sidebar.d.ts +9 -1
- package/dist/app.d.ts +3 -3
- package/dist/components/confirm-prompt.d.ts +1 -1
- package/dist/components/history/copy-geometry.d.ts +41 -0
- package/dist/components/history/copy-icon.d.ts +17 -0
- package/dist/components/history/copy-registry.d.ts +2 -0
- package/dist/components/history/entry-helpers.d.ts +7 -15
- package/dist/components/history/entry.d.ts +17 -1
- package/dist/components/history/index.d.ts +1 -1
- package/dist/components/history/sage-memory-block.d.ts +7 -9
- package/dist/components/history/scroll-controller-types.d.ts +16 -1
- package/dist/components/history/scrollbar-rail.d.ts +3 -4
- package/dist/components/history/stream-box.d.ts +7 -0
- package/dist/components/history/tool-card-geometry.d.ts +35 -0
- package/dist/components/history/tool-card.d.ts +3 -1
- package/dist/components/history/tool-entry.d.ts +3 -1
- package/dist/components/history/tool-group.d.ts +5 -3
- package/dist/components/history/tool-visual-types.d.ts +1 -1
- package/dist/components/history/types.d.ts +9 -0
- package/dist/components/history/use-history-controller.d.ts +2 -0
- package/dist/components/history/utils.d.ts +2 -2
- package/dist/components/history/visual-lines.d.ts +1 -1
- package/dist/components/history/wrap-geometry.d.ts +4 -4
- package/dist/components/history.d.ts +1 -1
- package/dist/components/inspect-overlay.d.ts +52 -0
- package/dist/components/powerline-rail.d.ts +4 -7
- package/dist/components/scrollable-history.d.ts +4 -4
- package/dist/components/settings-picker-constants.d.ts +11 -0
- package/dist/components/settings-picker-model.d.ts +8 -0
- package/dist/components/settings-picker.d.ts +4 -7
- package/dist/components/sidebar-panel-frame.d.ts +31 -0
- package/dist/components/sidebar-panels-workspace.d.ts +11 -2
- package/dist/components/sidebar-scrollbar.d.ts +36 -0
- package/dist/components/sidebar.d.ts +13 -1
- package/dist/components/status-bar-icons.d.ts +0 -7
- package/dist/history-entry.d.ts +4 -0
- package/dist/hit-test.d.ts +5 -5
- package/dist/hooks/subagent-history-format.d.ts +12 -0
- package/dist/hooks/tui-slash-command-options.d.ts +30 -0
- package/dist/hooks/use-app-environment.d.ts +136 -0
- package/dist/hooks/use-app-pipeline-builders.d.ts +1 -0
- package/dist/hooks/use-app-ref-spine.d.ts +74 -0
- package/dist/hooks/use-app-state.d.ts +20 -0
- package/dist/hooks/use-design-kit-slash-commands.d.ts +8 -0
- package/dist/hooks/use-next-steps-auto-submit.d.ts +1 -0
- package/dist/hooks/use-provider-slash-commands.d.ts +13 -0
- package/dist/hooks/use-resource-slash-commands.d.ts +11 -0
- package/dist/hooks/use-session-slash-commands.d.ts +17 -0
- package/dist/hooks/use-settings-slash-commands.d.ts +22 -0
- package/dist/hooks/use-theme-state.d.ts +3 -9
- package/dist/hooks/use-tui-slash-commands.d.ts +2 -29
- package/dist/index.js +8659 -7144
- package/dist/input-validation/action-types.d.ts +1 -1
- package/dist/key-handler-context.d.ts +142 -0
- package/dist/key-routes/key-route-busy.d.ts +23 -0
- package/dist/key-routes/key-route-composer.d.ts +33 -0
- package/dist/key-routes/key-route-overlay.d.ts +65 -0
- package/dist/key-routes/key-route-paste.d.ts +17 -0
- package/dist/key-routes/key-route-pointer.d.ts +18 -0
- package/dist/overlay-key-router.d.ts +2 -0
- package/dist/reducers/conversation.d.ts +1 -1
- package/dist/reducers/dialogs.d.ts +1 -1
- package/dist/reducers/helpers.d.ts +3 -1
- package/dist/reducers/workspace-panels.d.ts +11 -1
- package/dist/run-tui-exits.d.ts +46 -0
- package/dist/run-tui-launch.d.ts +23 -0
- package/dist/run-tui-mount.d.ts +28 -0
- package/dist/run-tui-session.d.ts +13 -0
- package/dist/run-tui.d.ts +1 -2
- package/dist/settings-contracts.d.ts +4 -0
- package/dist/sidebar-sizing.d.ts +2 -1
- package/dist/theme.d.ts +7 -0
- package/dist/tool-result-view-mode.d.ts +8 -0
- package/dist/ui-contracts.d.ts +17 -3
- package/package.json +7 -7
|
@@ -4,6 +4,13 @@ export declare const MAX_STREAM_DISPLAY_CHARS = 480;
|
|
|
4
4
|
export declare function assistantStreamBoxHeight(): number;
|
|
5
5
|
/** Fixed layout height of the live tool-stream tail for scroll-range math. */
|
|
6
6
|
export declare function toolStreamBoxHeight(name: string): number;
|
|
7
|
+
/** A started tool without partial output occupies one stable live-tail row. */
|
|
8
|
+
export declare function toolPendingLineHeight(): number;
|
|
9
|
+
export declare const ToolPendingLine: React.MemoExoticComponent<({ name, startedAt, termWidth, }: {
|
|
10
|
+
name: string;
|
|
11
|
+
startedAt: number;
|
|
12
|
+
termWidth: number;
|
|
13
|
+
}) => React.ReactElement>;
|
|
7
14
|
/**
|
|
8
15
|
* Build the CONSTANT-height content block for the live tool-stream box: always
|
|
9
16
|
* exactly `maxLines` rows, newest-pinned-to-bottom, every line truncated to
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared geometry for the committed tool card / tool group header.
|
|
3
|
+
*
|
|
4
|
+
* The header is rendered as a single `<Text>` run but hit-tested by column in
|
|
5
|
+
* `copy-registry.ts`, so the two MUST agree on where the ▲ / ▼ view-mode
|
|
6
|
+
* controls sit. They did not: the registry hard-coded columns 2 and 5 while
|
|
7
|
+
* the glyphs render at 3 and 6 (the card lead is three cells), so a click on
|
|
8
|
+
* either triangle landed one cell left of the glyph and did nothing. Both
|
|
9
|
+
* sides now derive their columns from the strings below — the same
|
|
10
|
+
* render/hit-test single-source pattern the status-bar chips use.
|
|
11
|
+
*/
|
|
12
|
+
/** Card lead for a card that owns a body (`hasBody`), and for a closed one. */
|
|
13
|
+
export declare const CARD_LEAD_OPEN = "\u256D\u2500 ";
|
|
14
|
+
export declare const CARD_LEAD_CLOSED = "\u2514\u2500 ";
|
|
15
|
+
/** "Show less" (▲) and "show more" (▼) controls: glyph plus two spaces. */
|
|
16
|
+
export declare const VIEW_CONTROL_LESS = "\u25B2 ";
|
|
17
|
+
export declare const VIEW_CONTROL_MORE = "\u25BC ";
|
|
18
|
+
export declare const VIEW_CONTROL_PREFIX = "\u25B2 \u25BC ";
|
|
19
|
+
/**
|
|
20
|
+
* Clickable width of one control: the glyph plus one trailing space. A
|
|
21
|
+
* one-cell-wide target in a one-row-tall header is unforgiving enough that a
|
|
22
|
+
* correct column still feels broken. The SECOND trailing space is
|
|
23
|
+
* deliberately excluded so a dead cell separates the two controls and a
|
|
24
|
+
* slightly-right click on ▲ can never fire ▼.
|
|
25
|
+
*/
|
|
26
|
+
export declare const VIEW_CONTROL_HIT_WIDTH = 2;
|
|
27
|
+
/**
|
|
28
|
+
* 0-based history-band columns of the two controls. Both card leads are the
|
|
29
|
+
* same width, so the columns do not depend on `hasBody` or view mode.
|
|
30
|
+
*/
|
|
31
|
+
export declare function viewControlColumns(): {
|
|
32
|
+
lessCol: number;
|
|
33
|
+
moreCol: number;
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=tool-card-geometry.d.ts.map
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
+
import type { ToolResultViewMode } from '../../tool-result-view-mode.js';
|
|
2
3
|
interface ToolCardProps {
|
|
3
4
|
glyph: string;
|
|
4
5
|
color: string;
|
|
@@ -9,6 +10,7 @@ interface ToolCardProps {
|
|
|
9
10
|
termWidth: number;
|
|
10
11
|
hasBody: boolean;
|
|
11
12
|
children?: React.ReactNode;
|
|
13
|
+
viewMode?: ToolResultViewMode | undefined;
|
|
12
14
|
}
|
|
13
15
|
/**
|
|
14
16
|
* Shared terminal-native anatomy for committed tool results. The open left
|
|
@@ -16,6 +18,6 @@ interface ToolCardProps {
|
|
|
16
18
|
* heavy full-width modal, while the compact header makes tool/state/timing
|
|
17
19
|
* easy to scan in long transcripts.
|
|
18
20
|
*/
|
|
19
|
-
export declare function ToolCard({ glyph, color, title, detail, meta, ok, termWidth, hasBody, children, }: ToolCardProps): React.ReactElement;
|
|
21
|
+
export declare function ToolCard({ glyph, color, title, detail, meta, ok, termWidth, hasBody, children, viewMode, }: ToolCardProps): React.ReactElement;
|
|
20
22
|
export {};
|
|
21
23
|
//# sourceMappingURL=tool-card.d.ts.map
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
+
import type { ToolResultViewMode } from '../../tool-result-view-mode.js';
|
|
2
3
|
import type { HistoryEntry } from './types.js';
|
|
3
|
-
export declare function ToolEntry({ entry, termWidth, multiDiffSummaryThreshold, showSageMemoryInject, }: {
|
|
4
|
+
export declare function ToolEntry({ entry, termWidth, multiDiffSummaryThreshold, showSageMemoryInject, viewMode, }: {
|
|
4
5
|
entry: Extract<HistoryEntry, {
|
|
5
6
|
kind: 'tool';
|
|
6
7
|
}>;
|
|
7
8
|
termWidth: number;
|
|
8
9
|
multiDiffSummaryThreshold?: number | undefined;
|
|
9
10
|
showSageMemoryInject?: boolean | undefined;
|
|
11
|
+
viewMode?: ToolResultViewMode | undefined;
|
|
10
12
|
}): React.ReactElement;
|
|
11
13
|
//# sourceMappingURL=tool-entry.d.ts.map
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
* isolated tool entries pass through unchanged.
|
|
16
16
|
*/
|
|
17
17
|
import type React from 'react';
|
|
18
|
+
import type { ToolResultViewMode } from '../../tool-result-view-mode.js';
|
|
18
19
|
import type { HistoryEntry } from './types.js';
|
|
19
20
|
export interface ToolGroupData {
|
|
20
21
|
/** Shared tool name (e.g. "read", "bash", "grep"). */
|
|
@@ -38,13 +39,13 @@ export type RenderGroup = {
|
|
|
38
39
|
/** Stable id used by the height cache and React keys for a render group. */
|
|
39
40
|
export declare function renderGroupId(group: RenderGroup): number;
|
|
40
41
|
/** Conservative, bounded row estimate used before a group is measured. */
|
|
41
|
-
export declare function estimateRenderGroupRows(group: RenderGroup, contentWidth: number, showSageMemoryInject?: boolean): number;
|
|
42
|
+
export declare function estimateRenderGroupRows(group: RenderGroup, contentWidth: number, showSageMemoryInject?: boolean, viewMode?: ToolResultViewMode): number;
|
|
42
43
|
/**
|
|
43
44
|
* Walk entries and merge consecutive same-tool entries into bounded groups.
|
|
44
45
|
* Non-tool entries and isolated tool entries (no consecutive sibling)
|
|
45
46
|
* remain as individual items.
|
|
46
47
|
*/
|
|
47
|
-
export declare function groupEntries(entries: readonly HistoryEntry[]): RenderGroup[];
|
|
48
|
+
export declare function groupEntries(entries: readonly HistoryEntry[], viewModeForEntry?: (entryId: number) => ToolResultViewMode): RenderGroup[];
|
|
48
49
|
/**
|
|
49
50
|
* Render a group of consecutive same-tool entries.
|
|
50
51
|
*
|
|
@@ -59,9 +60,10 @@ export declare function groupEntries(entries: readonly HistoryEntry[]): RenderGr
|
|
|
59
60
|
* Each sub-entry is rendered as a compact list item with its index,
|
|
60
61
|
* arg summary, timing, and a single-line output preview.
|
|
61
62
|
*/
|
|
62
|
-
declare function ToolGroupImpl({ data, termWidth, }: {
|
|
63
|
+
declare function ToolGroupImpl({ data, termWidth, viewMode, }: {
|
|
63
64
|
data: ToolGroupData;
|
|
64
65
|
termWidth: number;
|
|
66
|
+
viewMode?: ToolResultViewMode | undefined;
|
|
65
67
|
}): React.ReactElement;
|
|
66
68
|
/**
|
|
67
69
|
* One render group of compacted tool calls.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type ToolVisualLineKind = 'ok' | 'warn' | 'error' | 'meta' | 'path' | 'match' | 'code' | 'stdout' | 'stderr';
|
|
1
|
+
export type ToolVisualLineKind = 'ok' | 'warn' | 'error' | 'meta' | 'path' | 'match' | 'context' | 'code' | 'stdout' | 'stderr';
|
|
2
2
|
export interface ToolVisualLine {
|
|
3
3
|
kind: ToolVisualLineKind;
|
|
4
4
|
text: string;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { TodoItem } from '@wrongstack/core/agent';
|
|
2
2
|
import type { Lang } from '../../highlight.js';
|
|
3
3
|
import type { HistoryEntry } from '../../history-entry.js';
|
|
4
|
+
import type { ToolResultViewMode } from '../../tool-result-view-mode.js';
|
|
4
5
|
export type { AutonomyAgentStatus, HistoryEntry, MemoryActivationItem, } from '../../history-entry.js';
|
|
5
6
|
export interface HistoryProps {
|
|
6
7
|
entries: HistoryEntry[];
|
|
@@ -14,6 +15,10 @@ export interface HistoryProps {
|
|
|
14
15
|
* next-step suggestion indicating it will be auto-submitted.
|
|
15
16
|
*/
|
|
16
17
|
autonomyMode?: string | undefined;
|
|
18
|
+
/** Label of the next step currently armed for automatic submission. */
|
|
19
|
+
nextStepsAutoSubmitLabel?: string | null | undefined;
|
|
20
|
+
/** Exact automatic-submit deadline used by the final 10-second text sweep. */
|
|
21
|
+
nextStepsAutoSubmitDeadlineMs?: number | null | undefined;
|
|
17
22
|
/**
|
|
18
23
|
* Generation counter for wholesale history replacements (session resume).
|
|
19
24
|
* Keys the internal <Static> so a replacement remounts it — Ink's Static
|
|
@@ -64,6 +69,10 @@ export interface HistoryProps {
|
|
|
64
69
|
* Default: false.
|
|
65
70
|
*/
|
|
66
71
|
showSageMemoryInject?: boolean | undefined;
|
|
72
|
+
/** Global default; individual entry ids may override it. */
|
|
73
|
+
toolResultViewMode?: ToolResultViewMode | undefined;
|
|
74
|
+
toolResultViewOverrides?: ReadonlyMap<number, ToolResultViewMode> | undefined;
|
|
75
|
+
onToolResultViewChange?: ((entryIds: readonly number[], mode: ToolResultViewMode) => void) | undefined;
|
|
67
76
|
}
|
|
68
77
|
export interface BodySegment {
|
|
69
78
|
type: 'prose' | 'code';
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type ScrollAnchor, type ScrollGeometry } from '../../scroll-anchor.js';
|
|
2
|
+
import type { ToolResultViewMode } from '../../tool-result-view-mode.js';
|
|
2
3
|
import type { CopyHit } from './copy-geometry.js';
|
|
3
4
|
import type { HistoryScrollController } from './scroll-controller-types.js';
|
|
4
5
|
import type { MountedCardSpan } from './scrollbar-geometry.js';
|
|
@@ -54,6 +55,7 @@ interface UseHistoryControllerOptions {
|
|
|
54
55
|
controllerRef?: {
|
|
55
56
|
current: HistoryScrollController | null;
|
|
56
57
|
} | undefined;
|
|
58
|
+
onToolResultViewChange?: ((entryIds: readonly number[], mode: ToolResultViewMode) => void) | undefined;
|
|
57
59
|
}
|
|
58
60
|
export declare function useHistoryController(opts: UseHistoryControllerOptions): {
|
|
59
61
|
controller: HistoryScrollController;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export { countLines, firstNonEmpty, fmtBytes, fmtDuration, fmtTok, formatMatchHit, numOf, scanNumberedRange, shortenPath, stringOf, truncMid, tryParseJson, } from './basic-format.js';
|
|
2
2
|
export { AssistantStreamBox, assistantStreamBoxHeight, MAX_STREAM_DISPLAY_CHARS, streamBoxRows, ToolStreamBox, tailForDisplay, toolStreamBoxHeight, } from './stream-box.js';
|
|
3
|
-
export { ToolOutputLines } from './visual-lines.js';
|
|
4
3
|
export type { ToolVisualLine, ToolVisualLineKind } from './tool-visual-types.js';
|
|
4
|
+
export { ToolOutputLines } from './visual-lines.js';
|
|
5
5
|
import type { ToolVisualLine } from './tool-visual-types.js';
|
|
6
|
+
export { extractSageBlock, type ParsedSageMemoryLine, parseSageMemoryLine, resolveEntrySage, type SageSplit, } from './sage-output-format.js';
|
|
6
7
|
export { formatToolArgs } from './tool-arg-format.js';
|
|
7
|
-
export { extractSageBlock, resolveEntrySage, type SageSplit, parseSageMemoryLine, type ParsedSageMemoryLine, } from './sage-output-format.js';
|
|
8
8
|
/**
|
|
9
9
|
* Like `formatToolOutput` but strips SAGE-injected memory lines first.
|
|
10
10
|
* Returns the tool output lines and any SAGE block lines separately.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
2
|
import type { ToolVisualLine } from './tool-visual-types.js';
|
|
3
|
-
export declare function ToolOutputLines({ lines,
|
|
3
|
+
export declare function ToolOutputLines({ lines, }: {
|
|
4
4
|
lines: ToolVisualLine[];
|
|
5
5
|
hasFollowingBlock?: boolean | undefined;
|
|
6
6
|
}): React.ReactElement;
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
* Inline render-chrome constants shared by the chat-history renderer.
|
|
3
3
|
*
|
|
4
4
|
* `USER_LABEL` is the inline label entry.tsx renders before a user card's
|
|
5
|
-
* text (`<Text bold
|
|
5
|
+
* text (`<Text bold>▸ USER </Text>` then the text, one Text node) and
|
|
6
6
|
* `INFO_PREFIX` is the inline icon before an info card's text
|
|
7
|
-
* (`<Text
|
|
7
|
+
* (`<Text>· </Text>` then the text). Both live here so entry.tsx consumes
|
|
8
8
|
* the single source (p3) — drift between the render and these constants
|
|
9
9
|
* would silently mis-offset any column math built on them.
|
|
10
10
|
*
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* assumption both prefixes rely on is pinned by tests/wrap-geometry.test.ts.
|
|
18
18
|
*/
|
|
19
19
|
/** Inline label the renderer places before a user card's text. */
|
|
20
|
-
export declare const USER_LABEL = "\
|
|
20
|
+
export declare const USER_LABEL = "\u25B8 USER ";
|
|
21
21
|
/** Inline icon the renderer places before an info card's text. */
|
|
22
|
-
export declare const INFO_PREFIX = "\
|
|
22
|
+
export declare const INFO_PREFIX = "\u00B7 ";
|
|
23
23
|
//# sourceMappingURL=wrap-geometry.d.ts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { AssistantBody, AssistantStreamBox,
|
|
1
|
+
export { AssistantBody, AssistantStreamBox, type AutonomyAgentStatus, assistantContentWidth, assistantStreamBoxHeight, 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
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type React from 'react';
|
|
2
|
+
import type { MutableRefObject } from 'react';
|
|
3
|
+
import { type DOMElement } from '../ink.js';
|
|
4
|
+
import type { HistoryEntry } from './history/types.js';
|
|
5
|
+
export declare const INSPECT_OVERLAY_MIN_ROWS = 15;
|
|
6
|
+
export type InspectOverlayHeaderAction = 'copy' | 'close';
|
|
7
|
+
export declare function resolveInspectOverlayContent(overlay: {
|
|
8
|
+
entryId: number;
|
|
9
|
+
entryIds?: readonly number[] | undefined;
|
|
10
|
+
}, entries: readonly HistoryEntry[], toolStream: {
|
|
11
|
+
name: string;
|
|
12
|
+
text: string;
|
|
13
|
+
} | null): {
|
|
14
|
+
title: string;
|
|
15
|
+
body: string;
|
|
16
|
+
};
|
|
17
|
+
export declare function wrapInspectLines(text: string, width: number): string[];
|
|
18
|
+
export declare function inspectOverlaySize(termCols: number, viewportRows: number): {
|
|
19
|
+
width: number;
|
|
20
|
+
height: number;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Resolve a terminal click against the two fixed-width controls rendered at
|
|
24
|
+
* the right edge of the centered inspect-overlay title row. Mouse coordinates
|
|
25
|
+
* are the terminal protocol's one-based cells.
|
|
26
|
+
*/
|
|
27
|
+
export declare function inspectOverlayHeaderActionAt(header: DOMElement | null, x: number, y: number): InspectOverlayHeaderAction | null;
|
|
28
|
+
/**
|
|
29
|
+
* Thumb geometry for the overlay's vertical scrollbar. The track is
|
|
30
|
+
* `visibleRows` tall; when the wrapped body fits, the thumb covers the whole
|
|
31
|
+
* (dim) track. Otherwise the thumb length is proportional to the visible
|
|
32
|
+
* fraction and travels from the top (offset 0) to flush bottom
|
|
33
|
+
* (offset = totalRows - visibleRows).
|
|
34
|
+
*/
|
|
35
|
+
export declare function scrollbarThumbGeometry(totalRows: number, visibleRows: number, offset: number): {
|
|
36
|
+
thumbStart: number;
|
|
37
|
+
thumbLength: number;
|
|
38
|
+
};
|
|
39
|
+
interface InspectOverlayProps {
|
|
40
|
+
title: string;
|
|
41
|
+
body: string;
|
|
42
|
+
scroll: number;
|
|
43
|
+
termCols: number;
|
|
44
|
+
viewportRows: number;
|
|
45
|
+
onScroll: (delta: number) => void;
|
|
46
|
+
onClose: () => void;
|
|
47
|
+
copied?: boolean | undefined;
|
|
48
|
+
headerRef?: MutableRefObject<DOMElement | null> | undefined;
|
|
49
|
+
}
|
|
50
|
+
export declare function InspectOverlay({ title, body, scroll, termCols, viewportRows, onScroll, onClose, copied, headerRef, }: InspectOverlayProps): React.ReactElement;
|
|
51
|
+
export {};
|
|
52
|
+
//# sourceMappingURL=inspect-overlay.d.ts.map
|
|
@@ -62,9 +62,6 @@ interface PowerlineRailProps {
|
|
|
62
62
|
/** Chips in render order. Plain elements are treated as single-level chips. */
|
|
63
63
|
segments: Array<React.ReactElement | RailSpanEntry>;
|
|
64
64
|
budget: number;
|
|
65
|
-
monochrome?: boolean | undefined;
|
|
66
|
-
/** Override the filler background for per-line tonal layering. */
|
|
67
|
-
fillBg?: string | undefined;
|
|
68
65
|
/**
|
|
69
66
|
* Optional right-anchored segment. When provided, the rail reserves
|
|
70
67
|
* space for this segment at the right edge of the budget so its
|
|
@@ -74,10 +71,10 @@ interface PowerlineRailProps {
|
|
|
74
71
|
rightAnchor?: React.ReactElement | null | undefined;
|
|
75
72
|
}
|
|
76
73
|
/**
|
|
77
|
-
*
|
|
78
|
-
* No per-chip backgrounds,
|
|
79
|
-
*
|
|
74
|
+
* Status segments on the terminal's natural background.
|
|
75
|
+
* No per-chip backgrounds, transition glyphs, or segment caps — just clean
|
|
76
|
+
* chips separated by whitespace. The caller owns any outer side inset.
|
|
80
77
|
*/
|
|
81
|
-
export declare function PowerlineRail({ segments, budget,
|
|
78
|
+
export declare function PowerlineRail({ segments, budget, rightAnchor, }: PowerlineRailProps): React.ReactElement;
|
|
82
79
|
export {};
|
|
83
80
|
//# sourceMappingURL=powerline-rail.d.ts.map
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
2
|
import { type HistoryEntry } from './history.js';
|
|
3
|
+
export { type CopyHit, copyRegistryVisibleClip, findCopyHit, findInspectHit, LIVE_TOOL_STREAM_COPY_ID, liveToolStreamCopyHit, resolveCopyPayload, resolveInspectPayload, SELECTION_COPY_ID, } from './history/copy-geometry.js';
|
|
3
4
|
export type { HistoryScrollController } from './history/scroll-controller-types.js';
|
|
4
|
-
export {
|
|
5
|
-
export { type SelectionRect, normalizeSelection, isOutOfBand, selectionTouchedEntryIds, assembleSelectionText, } from './history/selection-helpers.js';
|
|
6
|
-
export { type MountedCardSpan, scrollbarThumb, scrollOffsetForTrackRow, buildMountedCardSpans, selectionHitAt, } from './history/scrollbar-geometry.js';
|
|
5
|
+
export { buildMountedCardSpans, type MountedCardSpan, scrollbarThumb, scrollOffsetForTrackRow, selectionHitAt, } from './history/scrollbar-geometry.js';
|
|
7
6
|
export { Scrollbar } from './history/scrollbar-rail.js';
|
|
7
|
+
export { assembleSelectionText, isOutOfBand, normalizeSelection, type SelectionRect, selectionTouchedEntryIds, } from './history/selection-helpers.js';
|
|
8
8
|
import type { ScrollableHistoryProps } from './history/scroll-controller-types.js';
|
|
9
9
|
/**
|
|
10
10
|
* Bounded history viewport with stable-anchor virtual scrolling.
|
|
11
11
|
*/
|
|
12
|
-
export declare const ScrollableHistory: React.MemoExoticComponent<({ entries, toolStream, streamingText, viewportRows, controllerRef, onScrollInfo, maxWidth, setSuggestions, autonomyMode, multiDiffSummaryThreshold, todos, showModelReasoning, showSageMemoryInject, layoutStore, copiedEntryId, onRequestOlderEntries, }: ScrollableHistoryProps) => React.ReactElement>;
|
|
12
|
+
export declare const ScrollableHistory: React.MemoExoticComponent<({ entries, toolStream, streamingText, viewportRows, controllerRef, onScrollInfo, maxWidth, setSuggestions, autonomyMode, nextStepsAutoSubmitLabel, nextStepsAutoSubmitDeadlineMs, multiDiffSummaryThreshold, todos, showModelReasoning, showSageMemoryInject, layoutStore, copiedEntryId, onRequestOlderEntries, toolResultViewMode, toolResultViewOverrides, onToolResultViewChange, }: ScrollableHistoryProps) => React.ReactElement>;
|
|
13
13
|
export type { HistoryEntry };
|
|
14
14
|
//# sourceMappingURL=scrollable-history.d.ts.map
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ReasoningEffort as CoreReasoningEffort } from '@wrongstack/core/types';
|
|
2
|
+
export { DEFAULT_TOOL_RESULT_VIEW_MODE, TOOL_RESULT_VIEW_MODE_DESCS, TOOL_RESULT_VIEW_MODES, type ToolResultViewMode, } from '../tool-result-view-mode.js';
|
|
2
3
|
/** Selectable presets for the auto-proceed delay, so the field is fully
|
|
3
4
|
* keyboard-cyclable (←/→) instead of needing typed numeric input. */
|
|
4
5
|
export declare const DELAY_PRESETS_MS: number[];
|
|
@@ -43,6 +44,16 @@ export declare const ENHANCE_LANGUAGES: readonly ['original', 'english'];
|
|
|
43
44
|
export type EnhanceLanguage = (typeof ENHANCE_LANGUAGES)[number];
|
|
44
45
|
export declare const TOKEN_SAVING_TIERS: readonly ['auto', 'off', 'minimal', 'light', 'medium', 'aggressive'];
|
|
45
46
|
export type TokenSavingTierTui = (typeof TOKEN_SAVING_TIERS)[number];
|
|
47
|
+
/**
|
|
48
|
+
* Tier descriptions. Every tier moves BOTH halves together - the direct tool
|
|
49
|
+
* surface and the prompt shape - because the host resolves the tier once at
|
|
50
|
+
* boot and hands the same concrete value to the registry and to the prompt
|
|
51
|
+
* builder. `auto` used to be the exception (medium surface, window-resolved
|
|
52
|
+
* prompt); it no longer is.
|
|
53
|
+
*
|
|
54
|
+
* `minimal` and `aggressive` currently select the same Tier-1 tool set; the
|
|
55
|
+
* difference is how hard tool descriptions are trimmed.
|
|
56
|
+
*/
|
|
46
57
|
export declare const TOKEN_SAVING_TIER_DESCS: Record<TokenSavingTierTui, string>;
|
|
47
58
|
export declare const FLEET_CHAT_MODES: readonly ['off', 'full'];
|
|
48
59
|
export type FleetChatVerbosityTui = (typeof FLEET_CHAT_MODES)[number];
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import type { SettingsPickerPatch } from '../settings-contracts.js';
|
|
2
|
+
import type { ToolResultViewMode } from '../tool-result-view-mode.js';
|
|
3
|
+
export type { ToolResultViewMode } from '../tool-result-view-mode.js';
|
|
4
|
+
export { cycleToolResultViewMode } from '../tool-result-view-mode.js';
|
|
2
5
|
export * from './settings-picker-constants.js';
|
|
3
6
|
export * from './settings-picker-resolver.js';
|
|
4
7
|
/**
|
|
@@ -46,6 +49,11 @@ export declare function formatAllSettingsSummary(values: SettingsPickerValues):
|
|
|
46
49
|
export declare const SAGE_THRESHOLD_PRESETS: number[];
|
|
47
50
|
/** Format the threshold value. All valid values are in {@link SAGE_THRESHOLD_PRESETS}. */
|
|
48
51
|
export declare function formatSageThreshold(t: number): string;
|
|
52
|
+
export declare function toolResultViewSettingRow(mode: ToolResultViewMode): {
|
|
53
|
+
label: string;
|
|
54
|
+
value: string;
|
|
55
|
+
detail: string;
|
|
56
|
+
};
|
|
49
57
|
/**
|
|
50
58
|
* Default values for all configurable settings fields, in the same
|
|
51
59
|
* shape as {@link SettingsPickerValues}. Extracted from the reducer's
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
-
import type { AnimationStyleChoice, AuditLevel, CacheTtl, CompactorStrategy, ConfigScope, ContextMode, EnhanceLanguage, FleetChatVerbosityTui, LogLevel, ReasoningEffort, ReasoningMode, SettingsMode, StatuslineMode, TokenSavingTierTui } from './settings-picker-model.js';
|
|
2
|
+
import type { AnimationStyleChoice, AuditLevel, CacheTtl, CompactorStrategy, ConfigScope, ContextMode, EnhanceLanguage, FleetChatVerbosityTui, LogLevel, ReasoningEffort, ReasoningMode, SettingsMode, StatuslineMode, TokenSavingTierTui, ToolResultViewMode } from './settings-picker-model.js';
|
|
3
3
|
import { type SettingsPickerRowData } from './settings-picker-row-list.js';
|
|
4
4
|
export { SETTINGS_PICKER_JUMP_CHORDS, type SettingsPickerJumpChord, type SettingsPickerJumpMod, settingsPickerJumpByName, settingsPickerJumpField, settingsPickerJumpNames, } from './settings-picker-jumps.js';
|
|
5
5
|
export * from './settings-picker-model.js';
|
|
@@ -66,11 +66,8 @@ export interface SettingsPickerProps {
|
|
|
66
66
|
breakerAutoKillResetMs: number;
|
|
67
67
|
/** Show the "Model Reasoning" blocks in chat history. Default: true. */
|
|
68
68
|
showModelReasoning: boolean;
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
* lower-region FleetPanel is always visible when there is fleet activity;
|
|
72
|
-
* this toggle controls only the sidebar mission queue. Default: 'bottom'.
|
|
73
|
-
*/
|
|
69
|
+
toolResultViewMode: ToolResultViewMode;
|
|
70
|
+
/** Agent swarm placement. */
|
|
74
71
|
showAgentSwarmPanel: import('../app-settings-type.js').AgentSwarmPanelMode;
|
|
75
72
|
/** Right sidebar master toggle. */
|
|
76
73
|
showSidebar?: boolean | undefined;
|
|
@@ -137,5 +134,5 @@ export interface SettingsPickerProps {
|
|
|
137
134
|
fieldRowIndex: readonly number[];
|
|
138
135
|
}) => void) | undefined;
|
|
139
136
|
}
|
|
140
|
-
export declare function SettingsPicker({ field, filter, mode, delayMs, titleAnimation, yolo, fleetChat, chime, confirmExit, nextPrediction, featureMcp, featurePlugins, featureMemory, featureSkills, featureModelsRegistry, tokenSavingTier, allowOutsideProjectRoot, maxIterations, autoProceedMaxIterations, enhanceDelayMs, enhanceEnabled, enhanceLanguage, preRefineSeconds, indexOnStart, multiDiffSummaryThreshold, thinkingWord, thinkingWordEditing, thinkingWordDraft, wrongProxyUrlEditing, wrongProxyUrlDraft, reasoningMode, reasoningEffort, reasoningEffortLevels, reasoningPreserve, cacheTtl, contextAutoCompact, contextStrategy, contextMode, maxConcurrent, logLevel, auditLevel, debugStream, statuslineMode, configScope, profileConfigPath, animationStyle, breakerEnabled, breakerAutoKillResetMs, showModelReasoning, showAgentSwarmPanel, showSidebar, showSageMemoryInject, sageMemoryInjectThreshold, nextStepsTool, readSymbols, panelPositions, wrongProxyEnabled, wrongProxyUrl, inputHeight, hint, onLayoutComputed, }: SettingsPickerProps): React.ReactElement;
|
|
137
|
+
export declare function SettingsPicker({ field, filter, mode, delayMs, titleAnimation, yolo, fleetChat, chime, confirmExit, nextPrediction, featureMcp, featurePlugins, featureMemory, featureSkills, featureModelsRegistry, tokenSavingTier, allowOutsideProjectRoot, maxIterations, autoProceedMaxIterations, enhanceDelayMs, enhanceEnabled, enhanceLanguage, preRefineSeconds, indexOnStart, multiDiffSummaryThreshold, thinkingWord, thinkingWordEditing, thinkingWordDraft, wrongProxyUrlEditing, wrongProxyUrlDraft, reasoningMode, reasoningEffort, reasoningEffortLevels, reasoningPreserve, cacheTtl, contextAutoCompact, contextStrategy, contextMode, maxConcurrent, logLevel, auditLevel, debugStream, statuslineMode, configScope, profileConfigPath, animationStyle, breakerEnabled, breakerAutoKillResetMs, showModelReasoning, toolResultViewMode, showAgentSwarmPanel, showSidebar, showSageMemoryInject, sageMemoryInjectThreshold, nextStepsTool, readSymbols, panelPositions, wrongProxyEnabled, wrongProxyUrl, inputHeight, hint, onLayoutComputed, }: SettingsPickerProps): React.ReactElement;
|
|
141
138
|
//# sourceMappingURL=settings-picker.d.ts.map
|
|
@@ -129,6 +129,37 @@ export declare function SidebarPanelCard(props: CardProps): React.ReactElement;
|
|
|
129
129
|
* "framed" look on rails wide enough to afford them.
|
|
130
130
|
*/
|
|
131
131
|
export declare function SidebarPanelFrame({ accent, icon, title, width, kicker, right, pillLabel, pillColor, footer, children, }: SidebarPanelFrameProps): React.ReactElement;
|
|
132
|
+
/**
|
|
133
|
+
* A fixed-width progress meter row: `▮▮▮▮▮░░░░░` filling exactly
|
|
134
|
+
* `innerWidth` columns (no label — pair it with a `SidebarSectionHeader`
|
|
135
|
+
* badge for the numeric readout). Replaces the hand-rolled bar pairs that
|
|
136
|
+
* Plan / Goal / Connections used to render inline so every sidebar panel
|
|
137
|
+
* shows the same meter texture. Pure display — clamps the ratio to [0, 1].
|
|
138
|
+
*/
|
|
139
|
+
export declare function SidebarMeter({ ratio, innerWidth, color, trackColor, marginTop, }: {
|
|
140
|
+
/** Fill ratio 0..1 (values outside are clamped). */
|
|
141
|
+
ratio: number;
|
|
142
|
+
innerWidth: number;
|
|
143
|
+
color: string;
|
|
144
|
+
trackColor?: string | undefined;
|
|
145
|
+
marginTop?: number | undefined;
|
|
146
|
+
}): React.ReactElement;
|
|
147
|
+
/**
|
|
148
|
+
* A single row of colored count chips — `●2 ◐1 ✓4 !1` — the shared idiom
|
|
149
|
+
* for "state distribution" summaries (fleet statuses, worktree states,
|
|
150
|
+
* connection health). Chips whose count is 0 are omitted so the row stays
|
|
151
|
+
* quiet on idle rails; render nothing at all when every count is 0.
|
|
152
|
+
*/
|
|
153
|
+
export declare function SidebarCountsRow({ counts, innerWidth, marginTop, }: {
|
|
154
|
+
/** Chip order is render order; zero-count chips are dropped. */
|
|
155
|
+
counts: readonly {
|
|
156
|
+
label: string;
|
|
157
|
+
count: number;
|
|
158
|
+
color: string;
|
|
159
|
+
}[];
|
|
160
|
+
innerWidth: number;
|
|
161
|
+
marginTop?: number | undefined;
|
|
162
|
+
}): React.ReactElement | null;
|
|
132
163
|
/**
|
|
133
164
|
* useSidebarPanelSize — returns a sensible default width / height for a
|
|
134
165
|
* sidebar panel given the terminal dimensions. Width mirrors
|
|
@@ -14,10 +14,17 @@ export interface ProjectPickerSidebarProps {
|
|
|
14
14
|
export declare function ProjectPickerSidebar({ items, selected, filter, hint, currentProject, width, }: ProjectPickerSidebarProps): React.ReactElement;
|
|
15
15
|
export interface FleetPanelSidebarProps {
|
|
16
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
|
+
*/
|
|
17
22
|
runningCount: number;
|
|
23
|
+
/** Live tick (ms) — drives per-agent elapsed labels. Defaults to Date.now(). */
|
|
24
|
+
nowTick?: number | undefined;
|
|
18
25
|
width: number;
|
|
19
26
|
}
|
|
20
|
-
export declare function FleetPanelSidebar({ entries,
|
|
27
|
+
export declare function FleetPanelSidebar({ entries, nowTick, width, }: FleetPanelSidebarProps): React.ReactElement;
|
|
21
28
|
export interface AgentsPanelSidebarProps {
|
|
22
29
|
entries: Record<string, FleetEntry>;
|
|
23
30
|
totalCost: number;
|
|
@@ -27,9 +34,11 @@ export interface AgentsPanelSidebarProps {
|
|
|
27
34
|
export declare function AgentsPanelSidebar({ entries, totalCost, nowTick, width, }: AgentsPanelSidebarProps): React.ReactElement;
|
|
28
35
|
export interface WorktreePanelSidebarProps {
|
|
29
36
|
worktrees: Record<string, WorktreeRow>;
|
|
37
|
+
/** Live tick (ms) — drives per-worktree age labels. Defaults to Date.now(). */
|
|
38
|
+
nowTick?: number | undefined;
|
|
30
39
|
width: number;
|
|
31
40
|
}
|
|
32
|
-
export declare function WorktreePanelSidebar({ worktrees, width, }: WorktreePanelSidebarProps): React.ReactElement;
|
|
41
|
+
export declare function WorktreePanelSidebar({ worktrees, nowTick, width, }: WorktreePanelSidebarProps): React.ReactElement;
|
|
33
42
|
export interface CoordinatorPanelSidebarProps {
|
|
34
43
|
running: boolean;
|
|
35
44
|
activePhases: number;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type React from 'react';
|
|
2
|
+
/** Thumb geometry for a given scroll state. Pure — unit-tested. */
|
|
3
|
+
export declare function sidebarScrollbarThumb(viewportRows: number, maxScroll: number, offset: number): {
|
|
4
|
+
size: number;
|
|
5
|
+
top: number;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Inverse mapping: a 0-based track cell (mouse row − 1 over the rail)
|
|
9
|
+
* becomes the absolute scroll offset at that track position — top of track
|
|
10
|
+
* = 0, bottom of track = maxScroll. Pure — unit-tested and shared with the
|
|
11
|
+
* press/drag dispatcher in `app-key-handler.ts` so click-scrubbing reaches
|
|
12
|
+
* the exact extremes the wheel can reach.
|
|
13
|
+
*/
|
|
14
|
+
export declare function sidebarOffsetForCell(cell: number, viewportRows: number, maxScroll: number): number;
|
|
15
|
+
export interface SidebarScrollbarProps {
|
|
16
|
+
/** Visible content rows — the track height (RightSidebar's innerHeight). */
|
|
17
|
+
viewportRows: number;
|
|
18
|
+
/** Current scroll offset in rows. */
|
|
19
|
+
offset: number;
|
|
20
|
+
/**
|
|
21
|
+
* Estimated overflow beyond the viewport; ≤ 0 renders a dimmed,
|
|
22
|
+
* thumb-less track — the rail column itself stays visible.
|
|
23
|
+
*/
|
|
24
|
+
maxScroll: number;
|
|
25
|
+
/** When true the thumb reads in the accent color (keyboard focus). */
|
|
26
|
+
focused?: boolean | undefined;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* The rail itself: one column of `░` track cells with a `▉` thumb segment.
|
|
30
|
+
* Persistent by design: when there is nothing to scroll it renders a dimmed
|
|
31
|
+
* thumb-less track (not null) so the rail never pops in and out of existence
|
|
32
|
+
* as the content-height estimate fluctuates. Returns null only when there is
|
|
33
|
+
* no room to draw a track at all (< 1 viewport row).
|
|
34
|
+
*/
|
|
35
|
+
export declare function SidebarScrollbar({ viewportRows, offset, maxScroll, focused, }: SidebarScrollbarProps): React.ReactElement | null;
|
|
36
|
+
//# sourceMappingURL=sidebar-scrollbar.d.ts.map
|
|
@@ -39,12 +39,24 @@ interface RightSidebarProps {
|
|
|
39
39
|
* When true, the sidebar border is highlighted to indicate keyboard focus.
|
|
40
40
|
*/
|
|
41
41
|
focused?: boolean | undefined;
|
|
42
|
+
/**
|
|
43
|
+
* Current sidebar scroll offset in rows. Positions the scrollbar thumb.
|
|
44
|
+
*/
|
|
45
|
+
scrollOffset?: number | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* Estimated scrollable overflow in rows (from
|
|
48
|
+
* `estimateSidebarMaxScroll`). > 0 draws a one-column scrollbar with a
|
|
49
|
+
* thumb in the rail's right padding column; ≤ 0 keeps the rail visible
|
|
50
|
+
* as a dimmed, thumb-less track (persistent rail — no bottom-right
|
|
51
|
+
* flicker). Content columns are untouched either way.
|
|
52
|
+
*/
|
|
53
|
+
maxScroll?: number | undefined;
|
|
42
54
|
/**
|
|
43
55
|
* Content to render inside the sidebar. When omitted, a dimmed placeholder
|
|
44
56
|
* label is shown so the reserved region is visually self-documenting.
|
|
45
57
|
*/
|
|
46
58
|
children?: React.ReactNode | undefined;
|
|
47
59
|
}
|
|
48
|
-
export declare function RightSidebar({ width, maxHeight, focused, children, }: RightSidebarProps): React.ReactElement | null;
|
|
60
|
+
export declare function RightSidebar({ width, maxHeight, focused, scrollOffset, maxScroll, children, }: RightSidebarProps): React.ReactElement | null;
|
|
49
61
|
export {};
|
|
50
62
|
//# sourceMappingURL=sidebar.d.ts.map
|
|
@@ -44,13 +44,6 @@ export declare const STATUSLINE_ICONS: {
|
|
|
44
44
|
export declare const COMPACT_THRESHOLD = 50;
|
|
45
45
|
export declare function chipColor(color: string, isNoColor: boolean): string | undefined;
|
|
46
46
|
export declare const STACK_ORANGE = "#FD9F02";
|
|
47
|
-
/**
|
|
48
|
-
* Per-rail background tone. Read through a function (not a frozen array) so
|
|
49
|
-
* it follows a live `/theme` switch, and genuinely alternated so the four
|
|
50
|
-
* rails read as four bands instead of one block: identity/safety sit on the
|
|
51
|
-
* base surface, vitals/async on the raised one.
|
|
52
|
-
*/
|
|
53
|
-
export declare function lineBackground(logical: 0 | 1 | 2 | 3): string;
|
|
54
47
|
export declare const SPINNER_FRAMES: string[];
|
|
55
48
|
export declare const SPINNER_INTERVAL_MS = 1000;
|
|
56
49
|
//# sourceMappingURL=status-bar-icons.d.ts.map
|
package/dist/history-entry.d.ts
CHANGED
|
@@ -197,6 +197,10 @@ export type HistoryEntry = {
|
|
|
197
197
|
requestTokens?: number | undefined;
|
|
198
198
|
/** The leader run was active when the switch was requested. */
|
|
199
199
|
runActive?: boolean | undefined;
|
|
200
|
+
/** Automatic hop after a failed primary (rate-limit / overload). */
|
|
201
|
+
cause?: 'fallback' | undefined;
|
|
202
|
+
/** HTTP status that triggered a fallback hop, when known. */
|
|
203
|
+
status?: number | undefined;
|
|
200
204
|
} | {
|
|
201
205
|
id: number;
|
|
202
206
|
kind: 'memory-activation';
|
package/dist/hit-test.d.ts
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Ink exposes no absolute terminal coordinates, but the mouse-mode layout is
|
|
5
5
|
* deterministic top-down: the chat history occupies the first `viewportRows`
|
|
6
|
-
* rows of the terminal (its managed
|
|
6
|
+
* rows of the terminal (its managed copy/inspect/scroll rail is the last
|
|
7
|
+
* columns of that band),
|
|
7
8
|
* and everything below it (rows viewportRows+1 .. termRows) is the bottom region
|
|
8
9
|
* — input, pickers, confirm prompt, status bar, panels. That is enough to map a
|
|
9
10
|
* 1-based SGR mouse report (x,y) onto a coarse region without any DOM measuring.
|
|
@@ -39,11 +40,10 @@ type HitRegion =
|
|
|
39
40
|
row: number;
|
|
40
41
|
};
|
|
41
42
|
/**
|
|
42
|
-
* Columns at the right edge of the history viewport reserved for the
|
|
43
|
-
*
|
|
44
|
-
* scrollbar track in the last column.
|
|
43
|
+
* Columns at the right edge of the history viewport reserved for the rail.
|
|
44
|
+
* Layout: copy · gap · inspect · selection band · scrollbar track.
|
|
45
45
|
*/
|
|
46
|
-
export declare const SCROLLBAR_HIT_WIDTH =
|
|
46
|
+
export declare const SCROLLBAR_HIT_WIDTH = 5;
|
|
47
47
|
/** Rows available to managed history after reserving the measured bottom UI. */
|
|
48
48
|
export declare function historyViewportRows(termRows: number, bottomHeight: number): number;
|
|
49
49
|
/**
|
|
@@ -6,6 +6,18 @@
|
|
|
6
6
|
* - Duration that reads as 12s / 2m 51s rather than 171s
|
|
7
7
|
* - Delegate start shows a tight task preview, not a paragraph
|
|
8
8
|
*/
|
|
9
|
+
/** `provider / model` for history chips. Empty parts are dropped. */
|
|
10
|
+
export declare function formatModelRef(provider: string | undefined, model: string | undefined): string;
|
|
11
|
+
/** One-line subagent fallback hop. */
|
|
12
|
+
export declare function formatSubagentFallbackText(from: {
|
|
13
|
+
providerId?: string | undefined;
|
|
14
|
+
model?: string | undefined;
|
|
15
|
+
} | undefined, to: {
|
|
16
|
+
providerId: string;
|
|
17
|
+
model: string;
|
|
18
|
+
}): string;
|
|
19
|
+
/** One-line recoverable model failure (the hop usually follows). */
|
|
20
|
+
export declare function formatSubagentModelFailedText(description: string | undefined): string;
|
|
9
21
|
/** Format a duration for a history chip. */
|
|
10
22
|
export declare function formatHistoryDuration(ms: number): string;
|
|
11
23
|
/** Collapse whitespace and hard-cap a task/description for a single history line. */
|