openhorse 0.1.19 → 0.1.21
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/cli.js +446 -33
- package/dist/cli.js.map +1 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +99 -40
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/types.d.ts +14 -0
- package/dist/commands/types.d.ts.map +1 -1
- package/dist/commands/types.js.map +1 -1
- package/dist/framework/query.d.ts.map +1 -1
- package/dist/framework/query.js +25 -7
- package/dist/framework/query.js.map +1 -1
- package/dist/runtime/turn-controller.d.ts +37 -0
- package/dist/runtime/turn-controller.d.ts.map +1 -0
- package/dist/runtime/turn-controller.js +84 -0
- package/dist/runtime/turn-controller.js.map +1 -0
- package/dist/services/config.d.ts +4 -2
- package/dist/services/config.d.ts.map +1 -1
- package/dist/services/config.js +30 -0
- package/dist/services/config.js.map +1 -1
- package/dist/services/global-config.d.ts +13 -0
- package/dist/services/global-config.d.ts.map +1 -1
- package/dist/services/global-config.js +4 -0
- package/dist/services/global-config.js.map +1 -1
- package/dist/services/llm.d.ts +4 -1
- package/dist/services/llm.d.ts.map +1 -1
- package/dist/services/llm.js +15 -2
- package/dist/services/llm.js.map +1 -1
- package/dist/ui/command-panel.d.ts +17 -0
- package/dist/ui/command-panel.d.ts.map +1 -1
- package/dist/ui/command-panel.js +234 -93
- package/dist/ui/command-panel.js.map +1 -1
- package/dist/ui/file-completion.d.ts +3 -0
- package/dist/ui/file-completion.d.ts.map +1 -1
- package/dist/ui/file-completion.js +7 -2
- package/dist/ui/file-completion.js.map +1 -1
- package/dist/ui/multiline-input.d.ts +4 -0
- package/dist/ui/multiline-input.d.ts.map +1 -1
- package/dist/ui/multiline-input.js +7 -0
- package/dist/ui/multiline-input.js.map +1 -1
- package/dist/ui/user-input.d.ts +1 -0
- package/dist/ui/user-input.d.ts.map +1 -1
- package/dist/ui/user-input.js +8 -4
- package/dist/ui/user-input.js.map +1 -1
- package/dist/ui-v2/components/command-palette.d.ts +6 -0
- package/dist/ui-v2/components/command-palette.d.ts.map +1 -0
- package/dist/ui-v2/components/command-palette.js +57 -0
- package/dist/ui-v2/components/command-palette.js.map +1 -0
- package/dist/ui-v2/components/session-picker.d.ts +17 -0
- package/dist/ui-v2/components/session-picker.d.ts.map +1 -0
- package/dist/ui-v2/components/session-picker.js +23 -0
- package/dist/ui-v2/components/session-picker.js.map +1 -0
- package/dist/ui-v2/components/shell.d.ts +49 -0
- package/dist/ui-v2/components/shell.d.ts.map +1 -0
- package/dist/ui-v2/components/shell.js +190 -0
- package/dist/ui-v2/components/shell.js.map +1 -0
- package/dist/ui-v2/index.d.ts +10 -0
- package/dist/ui-v2/index.d.ts.map +1 -0
- package/dist/ui-v2/index.js +26 -0
- package/dist/ui-v2/index.js.map +1 -0
- package/dist/ui-v2/runtime/text.d.ts +8 -0
- package/dist/ui-v2/runtime/text.d.ts.map +1 -0
- package/dist/ui-v2/runtime/text.js +58 -0
- package/dist/ui-v2/runtime/text.js.map +1 -0
- package/dist/ui-v2/state/input-reducer.d.ts +39 -0
- package/dist/ui-v2/state/input-reducer.d.ts.map +1 -0
- package/dist/ui-v2/state/input-reducer.js +82 -0
- package/dist/ui-v2/state/input-reducer.js.map +1 -0
- package/dist/ui-v2/state/picker.d.ts +16 -0
- package/dist/ui-v2/state/picker.d.ts.map +1 -0
- package/dist/ui-v2/state/picker.js +52 -0
- package/dist/ui-v2/state/picker.js.map +1 -0
- package/dist/ui-v2/state/sessions.d.ts +14 -0
- package/dist/ui-v2/state/sessions.d.ts.map +1 -0
- package/dist/ui-v2/state/sessions.js +65 -0
- package/dist/ui-v2/state/sessions.js.map +1 -0
- package/dist/ui-v2/state/suggestions.d.ts +22 -0
- package/dist/ui-v2/state/suggestions.d.ts.map +1 -0
- package/dist/ui-v2/state/suggestions.js +55 -0
- package/dist/ui-v2/state/suggestions.js.map +1 -0
- package/dist/ui-v2/types.d.ts +33 -0
- package/dist/ui-v2/types.d.ts.map +1 -0
- package/dist/ui-v2/types.js +9 -0
- package/dist/ui-v2/types.js.map +1 -0
- package/package.json +2 -2
package/dist/ui/user-input.js
CHANGED
|
@@ -9,11 +9,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
9
9
|
exports.renderUserInputPrompt = renderUserInputPrompt;
|
|
10
10
|
exports.renderUserInputContent = renderUserInputContent;
|
|
11
11
|
exports.renderUserInputEcho = renderUserInputEcho;
|
|
12
|
+
exports.renderUserInputEchoFrame = renderUserInputEchoFrame;
|
|
12
13
|
const INPUT_BG = [56, 56, 56];
|
|
13
14
|
const INPUT_FG = [226, 232, 240];
|
|
14
|
-
const ACCENT_FG = [0, 212, 170];
|
|
15
15
|
const DEFAULT_TERMINAL_WIDTH = 80;
|
|
16
|
-
const PROMPT_WIDTH = 2;
|
|
17
16
|
const CONTENT_PADDING = 2;
|
|
18
17
|
function colorsDisabled() {
|
|
19
18
|
return process.env.NO_COLOR !== undefined || process.env.TERM === 'dumb';
|
|
@@ -48,11 +47,11 @@ function visualWidth(text) {
|
|
|
48
47
|
return width;
|
|
49
48
|
}
|
|
50
49
|
function renderUserInputPrompt() {
|
|
51
|
-
return
|
|
50
|
+
return '';
|
|
52
51
|
}
|
|
53
52
|
function renderUserInputContent(text, width) {
|
|
54
53
|
const terminalWidth = Math.max(1, width || process.stdout.columns || DEFAULT_TERMINAL_WIDTH);
|
|
55
|
-
const targetWidth = Math.max(CONTENT_PADDING, terminalWidth
|
|
54
|
+
const targetWidth = Math.max(CONTENT_PADDING, terminalWidth);
|
|
56
55
|
const visibleWidth = CONTENT_PADDING + visualWidth(text);
|
|
57
56
|
const fill = Math.max(0, targetWidth - visibleWidth);
|
|
58
57
|
return style(` ${text}${' '.repeat(fill)} `, INPUT_FG);
|
|
@@ -63,4 +62,9 @@ function renderUserInputEcho(input, width) {
|
|
|
63
62
|
.map(line => renderUserInputPrompt() + renderUserInputContent(line, width))
|
|
64
63
|
.join('\n');
|
|
65
64
|
}
|
|
65
|
+
function renderUserInputEchoFrame(input, width) {
|
|
66
|
+
// Kept for compatibility with the v2 caller. Submitted input should read as
|
|
67
|
+
// conversation content, not as a bordered live input frame.
|
|
68
|
+
return renderUserInputEcho(input, width);
|
|
69
|
+
}
|
|
66
70
|
//# sourceMappingURL=user-input.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-input.js","sourceRoot":"","sources":["../../src/ui/user-input.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;
|
|
1
|
+
{"version":3,"file":"user-input.js","sourceRoot":"","sources":["../../src/ui/user-input.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-palette.d.ts","sourceRoot":"","sources":["../../../src/ui-v2/components/command-palette.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAkB,MAAM,UAAU,CAAC;AAMrE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,EAAE,CAiC5E"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* UI v2 command palette renderer.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.renderCommandPalette = renderCommandPalette;
|
|
7
|
+
const text_1 = require("../runtime/text");
|
|
8
|
+
const MIN_PALETTE_WIDTH = 28;
|
|
9
|
+
const MAX_PALETTE_WIDTH = 64;
|
|
10
|
+
function renderCommandPalette(options) {
|
|
11
|
+
const innerWidth = Math.max(MIN_PALETTE_WIDTH, Math.min(options.width - 4, MAX_PALETTE_WIDTH));
|
|
12
|
+
const title = (0, text_1.truncateVisible)(options.title, Math.max(8, innerWidth - 4));
|
|
13
|
+
const titleWidth = (0, text_1.visualWidth)(title);
|
|
14
|
+
const headerFill = Math.max(1, innerWidth - titleWidth - 3);
|
|
15
|
+
const lines = [
|
|
16
|
+
options.theme.dim(`┌─ ${title} ${'─'.repeat(headerFill)}┐`),
|
|
17
|
+
];
|
|
18
|
+
if (options.items.length === 0) {
|
|
19
|
+
lines.push(renderEmptyRow(options.emptyLabel ?? 'No matches', innerWidth, options.theme.dim));
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
options.items.forEach((item, index) => {
|
|
23
|
+
lines.push(renderSuggestionRow({
|
|
24
|
+
item,
|
|
25
|
+
selected: index === options.selectedIndex,
|
|
26
|
+
innerWidth,
|
|
27
|
+
theme: options.theme,
|
|
28
|
+
}));
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
if (options.moreCount && options.moreCount > 0) {
|
|
32
|
+
const more = `${options.moreCount} more results`;
|
|
33
|
+
lines.push(options.theme.dim(`│ ${(0, text_1.padEndVisible)(more, innerWidth - 2)} │`));
|
|
34
|
+
}
|
|
35
|
+
lines.push(options.theme.dim(`└${'─'.repeat(innerWidth)}┘`));
|
|
36
|
+
lines.push(options.theme.dim(options.footer ?? ' ↑↓ Select Enter Esc'));
|
|
37
|
+
return lines;
|
|
38
|
+
}
|
|
39
|
+
function renderSuggestionRow(options) {
|
|
40
|
+
const label = formatLabel(options.item);
|
|
41
|
+
const detailWidth = Math.max(0, options.innerWidth - (0, text_1.visualWidth)(label) - 3);
|
|
42
|
+
const detail = options.item.detail ? (0, text_1.truncateVisible)(options.item.detail, detailWidth) : '';
|
|
43
|
+
const gapWidth = Math.max(1, options.innerWidth - (0, text_1.visualWidth)(label) - (0, text_1.visualWidth)(detail) - 2);
|
|
44
|
+
const rowContent = label + ' '.repeat(gapWidth) + detail;
|
|
45
|
+
const padded = (0, text_1.padEndVisible)(rowContent, options.innerWidth - 2);
|
|
46
|
+
if (options.selected) {
|
|
47
|
+
return options.theme.dim('│ ') + options.theme.selected(padded) + options.theme.dim(' │');
|
|
48
|
+
}
|
|
49
|
+
return options.theme.dim('│ ') + options.theme.accent(label) + ' '.repeat(gapWidth) + options.theme.dim(detail) + options.theme.dim(' │');
|
|
50
|
+
}
|
|
51
|
+
function renderEmptyRow(label, innerWidth, dim) {
|
|
52
|
+
return dim(`│ ${(0, text_1.padEndVisible)((0, text_1.truncateVisible)(label, innerWidth - 2), innerWidth - 2)} │`);
|
|
53
|
+
}
|
|
54
|
+
function formatLabel(item) {
|
|
55
|
+
return item.shortcut ? `${item.label} (${item.shortcut})` : item.label;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=command-palette.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-palette.js","sourceRoot":"","sources":["../../../src/ui-v2/components/command-palette.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UI v2 session picker renderer.
|
|
3
|
+
*/
|
|
4
|
+
import type { SessionMeta } from '../../services/session-storage';
|
|
5
|
+
import type { PaletteTheme } from '../types';
|
|
6
|
+
export interface RenderSessionPickerOptions {
|
|
7
|
+
title?: string;
|
|
8
|
+
sessions: SessionMeta[];
|
|
9
|
+
selectedIndex?: number;
|
|
10
|
+
width: number;
|
|
11
|
+
showProject?: boolean;
|
|
12
|
+
moreCount?: number;
|
|
13
|
+
footer?: string;
|
|
14
|
+
theme: PaletteTheme;
|
|
15
|
+
}
|
|
16
|
+
export declare function renderSessionPicker(options: RenderSessionPickerOptions): string[];
|
|
17
|
+
//# sourceMappingURL=session-picker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-picker.d.ts","sourceRoot":"","sources":["../../../src/ui-v2/components/session-picker.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAI7C,MAAM,WAAW,0BAA0B;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,YAAY,CAAC;CACrB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,MAAM,EAAE,CAajF"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* UI v2 session picker renderer.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.renderSessionPicker = renderSessionPicker;
|
|
7
|
+
const command_palette_1 = require("./command-palette");
|
|
8
|
+
const sessions_1 = require("../state/sessions");
|
|
9
|
+
function renderSessionPicker(options) {
|
|
10
|
+
return (0, command_palette_1.renderCommandPalette)({
|
|
11
|
+
title: options.title ?? 'Pick a Session',
|
|
12
|
+
items: (0, sessions_1.buildSessionSuggestions)(options.sessions, {
|
|
13
|
+
showProject: options.showProject,
|
|
14
|
+
}),
|
|
15
|
+
selectedIndex: options.selectedIndex ?? 0,
|
|
16
|
+
width: options.width,
|
|
17
|
+
moreCount: options.moreCount,
|
|
18
|
+
emptyLabel: 'No sessions found',
|
|
19
|
+
footer: options.footer ?? ' ↑↓ Select Enter Resume Esc Cancel',
|
|
20
|
+
theme: options.theme,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=session-picker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-picker.js","sourceRoot":"","sources":["../../../src/ui-v2/components/session-picker.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAkBH,kDAaC;AA3BD,uDAAyD;AACzD,gDAA4D;AAa5D,SAAgB,mBAAmB,CAAC,OAAmC;IACrE,OAAO,IAAA,sCAAoB,EAAC;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,gBAAgB;QACxC,KAAK,EAAE,IAAA,kCAAuB,EAAC,OAAO,CAAC,QAAQ,EAAE;YAC/C,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,CAAC;QACF,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,CAAC;QACzC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,UAAU,EAAE,mBAAmB;QAC/B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,uCAAuC;QACjE,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UI v2 visible shell components.
|
|
3
|
+
*/
|
|
4
|
+
export interface V2ShellHeaderConfig {
|
|
5
|
+
provider: string;
|
|
6
|
+
model: string;
|
|
7
|
+
projectPath: string;
|
|
8
|
+
status: 'ready' | 'loading' | 'error' | 'processing';
|
|
9
|
+
statusText?: string;
|
|
10
|
+
version: string;
|
|
11
|
+
width?: number;
|
|
12
|
+
}
|
|
13
|
+
export interface V2StatusLineStats {
|
|
14
|
+
model: string;
|
|
15
|
+
tokens: number;
|
|
16
|
+
promptTokens: number;
|
|
17
|
+
completionTokens: number;
|
|
18
|
+
cost: number;
|
|
19
|
+
ctxPercent: number;
|
|
20
|
+
mcpConnected: number;
|
|
21
|
+
mcpTotal: number;
|
|
22
|
+
sessionId?: string;
|
|
23
|
+
modeText?: string;
|
|
24
|
+
width?: number;
|
|
25
|
+
}
|
|
26
|
+
export interface V2ShortcutItem {
|
|
27
|
+
key: string;
|
|
28
|
+
label: string;
|
|
29
|
+
}
|
|
30
|
+
export interface V2InputFrameOptions {
|
|
31
|
+
input: string;
|
|
32
|
+
modeIndicator?: string;
|
|
33
|
+
width?: number;
|
|
34
|
+
statusText?: string;
|
|
35
|
+
}
|
|
36
|
+
export interface V2InputFrameRender {
|
|
37
|
+
output: string;
|
|
38
|
+
height: number;
|
|
39
|
+
cursorRow: number;
|
|
40
|
+
cursorColumn: number;
|
|
41
|
+
}
|
|
42
|
+
export declare function renderV2ShellHeader(config: V2ShellHeaderConfig): string;
|
|
43
|
+
export declare function renderV2Prompt(modeIndicator?: string): string;
|
|
44
|
+
export declare function renderV2InputFrame(options: V2InputFrameOptions): V2InputFrameRender;
|
|
45
|
+
export declare function renderV2StatusBadge(stats: V2StatusLineStats): string;
|
|
46
|
+
export declare function renderV2StatusLine(stats: V2StatusLineStats): string;
|
|
47
|
+
export declare function renderV2FooterHint(width?: number): string;
|
|
48
|
+
export declare function renderV2Shortcuts(width?: number): string;
|
|
49
|
+
//# sourceMappingURL=shell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../src/ui-v2/components/shell.ts"],"names":[],"mappings":"AAAA;;GAEG;AA+BH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,YAAY,CAAC;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAWD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAoBvE;AAED,wBAAgB,cAAc,CAAC,aAAa,GAAE,MAAW,GAAG,MAAM,CAGjE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,kBAAkB,CA4BnF;AAoBD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAIpE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAInE;AAcD,wBAAgB,kBAAkB,CAAC,KAAK,GAAE,MAAqC,GAAG,MAAM,CAMvF;AAED,wBAAgB,iBAAiB,CAAC,KAAK,GAAE,MAAqC,GAAG,MAAM,CAetF"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* UI v2 visible shell components.
|
|
4
|
+
*/
|
|
5
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
6
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.renderV2ShellHeader = renderV2ShellHeader;
|
|
10
|
+
exports.renderV2Prompt = renderV2Prompt;
|
|
11
|
+
exports.renderV2InputFrame = renderV2InputFrame;
|
|
12
|
+
exports.renderV2StatusBadge = renderV2StatusBadge;
|
|
13
|
+
exports.renderV2StatusLine = renderV2StatusLine;
|
|
14
|
+
exports.renderV2FooterHint = renderV2FooterHint;
|
|
15
|
+
exports.renderV2Shortcuts = renderV2Shortcuts;
|
|
16
|
+
const path_1 = require("path");
|
|
17
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
18
|
+
const text_1 = require("../runtime/text");
|
|
19
|
+
const NO_COLOR = process.env.NO_COLOR !== undefined || process.env.TERM === 'dumb';
|
|
20
|
+
const colorize = NO_COLOR ? {
|
|
21
|
+
brand: (s) => s,
|
|
22
|
+
accent: (s) => s,
|
|
23
|
+
dim: (s) => s,
|
|
24
|
+
success: (s) => s,
|
|
25
|
+
warn: (s) => s,
|
|
26
|
+
danger: (s) => s,
|
|
27
|
+
label: (s) => s,
|
|
28
|
+
} : {
|
|
29
|
+
brand: chalk_1.default.hex('#FF6B35').bold,
|
|
30
|
+
accent: chalk_1.default.hex('#00D4AA'),
|
|
31
|
+
dim: chalk_1.default.dim,
|
|
32
|
+
success: chalk_1.default.green,
|
|
33
|
+
warn: chalk_1.default.yellow,
|
|
34
|
+
danger: chalk_1.default.red,
|
|
35
|
+
label: chalk_1.default.hex('#94A3B8'),
|
|
36
|
+
};
|
|
37
|
+
const INPUT_BG = '\x1b[48;2;56;56;56m';
|
|
38
|
+
const INPUT_FG = '\x1b[38;2;226;232;240m';
|
|
39
|
+
const RESET_COLORS = '\x1b[39;49m';
|
|
40
|
+
const CLEAR_TO_EOL = '\x1b[K';
|
|
41
|
+
const DEFAULT_SHORTCUTS = [
|
|
42
|
+
{ key: '/', label: 'commands' },
|
|
43
|
+
{ key: '@', label: 'files' },
|
|
44
|
+
{ key: 'Ctrl+R', label: 'history' },
|
|
45
|
+
{ key: 'Ctrl+L', label: 'clear view' },
|
|
46
|
+
{ key: '?', label: 'shortcuts' },
|
|
47
|
+
{ key: 'Ctrl+C', label: 'exit' },
|
|
48
|
+
];
|
|
49
|
+
function renderV2ShellHeader(config) {
|
|
50
|
+
const width = Math.max(44, config.width || process.stdout.columns || 80);
|
|
51
|
+
const innerWidth = Math.max(24, width - 4);
|
|
52
|
+
const title = `OpenHorse v${config.version}`;
|
|
53
|
+
const topFill = Math.max(1, innerWidth - (0, text_1.visualWidth)(title) - 3);
|
|
54
|
+
const projectName = (0, path_1.basename)(config.projectPath) || config.projectPath;
|
|
55
|
+
const status = renderStatus(config.status, config.statusText);
|
|
56
|
+
const body = [
|
|
57
|
+
renderToken('model', config.model),
|
|
58
|
+
renderToken('provider', shortProvider(config.provider)),
|
|
59
|
+
renderToken('project', projectName),
|
|
60
|
+
status,
|
|
61
|
+
].filter(Boolean).join(colorize.dim(' | '));
|
|
62
|
+
return [
|
|
63
|
+
colorize.dim(`╭─ ${colorize.brand(title)} ${'─'.repeat(topFill)}╮`),
|
|
64
|
+
colorize.dim('│ ') + (0, text_1.padEndVisible)((0, text_1.truncateVisible)(body, innerWidth - 2), innerWidth - 2) + colorize.dim(' │'),
|
|
65
|
+
colorize.dim(`╰${'─'.repeat(innerWidth)}╯`),
|
|
66
|
+
].join('\n');
|
|
67
|
+
}
|
|
68
|
+
function renderV2Prompt(modeIndicator = '') {
|
|
69
|
+
const mode = modeIndicator ? colorize.dim(`${modeIndicator} `) : '';
|
|
70
|
+
return `${colorize.accent('›')} ${mode}`;
|
|
71
|
+
}
|
|
72
|
+
function renderV2InputFrame(options) {
|
|
73
|
+
const width = Math.max(24, options.width || process.stdout.columns || 80);
|
|
74
|
+
const inputWidth = Math.max(1, width - 1);
|
|
75
|
+
const logicalLines = options.input.length > 0 ? options.input.split('\n') : [''];
|
|
76
|
+
const firstPrompt = renderV2Prompt(options.modeIndicator || '');
|
|
77
|
+
const continuationPrompt = ' '.repeat((0, text_1.visualWidth)(firstPrompt));
|
|
78
|
+
const renderedLines = logicalLines.map((line, index) => {
|
|
79
|
+
const prefix = index === 0 ? firstPrompt : continuationPrompt;
|
|
80
|
+
return renderInputLine((0, text_1.truncateVisible)(prefix + line, inputWidth));
|
|
81
|
+
});
|
|
82
|
+
const statusLine = options.statusText ? renderInputStatusLine(inputWidth, options.statusText) : undefined;
|
|
83
|
+
const rowSpans = logicalLines.map((line, index) => {
|
|
84
|
+
const prefix = index === 0 ? firstPrompt : continuationPrompt;
|
|
85
|
+
return terminalRowsFor((0, text_1.visualWidth)(prefix) + (0, text_1.visualWidth)(line), width);
|
|
86
|
+
});
|
|
87
|
+
const rowsBeforeCursor = rowSpans.slice(0, -1).reduce((sum, rows) => sum + rows, 0);
|
|
88
|
+
const lastLine = logicalLines[logicalLines.length - 1] || '';
|
|
89
|
+
const lastPrefix = logicalLines.length === 1 ? firstPrompt : continuationPrompt;
|
|
90
|
+
const lastVisibleWidth = (0, text_1.visualWidth)(lastPrefix) + (0, text_1.visualWidth)(lastLine);
|
|
91
|
+
return {
|
|
92
|
+
output: [...renderedLines, ...(statusLine ? [statusLine] : [])].join('\n'),
|
|
93
|
+
height: rowSpans.reduce((sum, rows) => sum + rows, 0) + (statusLine ? 1 : 0),
|
|
94
|
+
cursorRow: rowsBeforeCursor + Math.floor(lastVisibleWidth / width),
|
|
95
|
+
cursorColumn: (lastVisibleWidth % width) + 1,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
function renderInputLine(content) {
|
|
99
|
+
if (NO_COLOR) {
|
|
100
|
+
return content;
|
|
101
|
+
}
|
|
102
|
+
return `${INPUT_BG}${INPUT_FG}${content}${CLEAR_TO_EOL}${RESET_COLORS}`;
|
|
103
|
+
}
|
|
104
|
+
function renderInputStatusLine(width, statusText) {
|
|
105
|
+
const badge = ` ${statusText} `;
|
|
106
|
+
const badgeWidth = (0, text_1.visualWidth)(badge);
|
|
107
|
+
if (badgeWidth >= width) {
|
|
108
|
+
return (0, text_1.truncateVisible)(badge, width);
|
|
109
|
+
}
|
|
110
|
+
return ' '.repeat(width - badgeWidth) + badge;
|
|
111
|
+
}
|
|
112
|
+
function renderV2StatusBadge(stats) {
|
|
113
|
+
const width = Math.max(20, stats.width || process.stdout.columns || 80);
|
|
114
|
+
const parts = buildStatusParts(stats).join(colorize.dim(' '));
|
|
115
|
+
return (0, text_1.truncateVisible)(parts, Math.max(1, width));
|
|
116
|
+
}
|
|
117
|
+
function renderV2StatusLine(stats) {
|
|
118
|
+
const width = Math.max(44, stats.width || process.stdout.columns || 80);
|
|
119
|
+
const content = buildStatusParts(stats).join(colorize.dim(' '));
|
|
120
|
+
return colorize.dim(' ') + (0, text_1.truncateVisible)(content, Math.max(1, width - 2));
|
|
121
|
+
}
|
|
122
|
+
function buildStatusParts(stats) {
|
|
123
|
+
return [
|
|
124
|
+
renderToken('model', stats.model),
|
|
125
|
+
stats.sessionId ? renderToken('session', stats.sessionId.slice(0, 8)) : '',
|
|
126
|
+
renderToken('tokens', formatTokens(stats.tokens)),
|
|
127
|
+
stats.cost > 0 ? renderToken('cost', formatCost(stats.cost)) : '',
|
|
128
|
+
stats.ctxPercent > 0 ? renderToken('ctx', `${stats.ctxPercent}%`) : '',
|
|
129
|
+
stats.mcpTotal > 0 ? renderToken('mcp', `${stats.mcpConnected}/${stats.mcpTotal}`) : '',
|
|
130
|
+
stats.modeText ? renderToken('mode', stats.modeText) : '',
|
|
131
|
+
].filter(Boolean);
|
|
132
|
+
}
|
|
133
|
+
function renderV2FooterHint(width = process.stdout.columns || 80) {
|
|
134
|
+
const text = DEFAULT_SHORTCUTS
|
|
135
|
+
.slice(0, 5)
|
|
136
|
+
.map(item => `${colorize.accent(item.key)} ${colorize.label(item.label)}`)
|
|
137
|
+
.join(colorize.dim(' '));
|
|
138
|
+
return colorize.dim(' ') + (0, text_1.truncateVisible)(text, Math.max(1, width - 2));
|
|
139
|
+
}
|
|
140
|
+
function renderV2Shortcuts(width = process.stdout.columns || 80) {
|
|
141
|
+
const innerWidth = Math.max(36, Math.min(width - 4, 72));
|
|
142
|
+
const title = 'Shortcuts';
|
|
143
|
+
const titleFill = Math.max(1, innerWidth - (0, text_1.visualWidth)(title) - 3);
|
|
144
|
+
const rows = DEFAULT_SHORTCUTS.map(item => {
|
|
145
|
+
const key = (0, text_1.padEndVisible)(item.key, 8);
|
|
146
|
+
const content = `${colorize.accent(key)} ${colorize.label(item.label)}`;
|
|
147
|
+
return colorize.dim('│ ') + (0, text_1.padEndVisible)((0, text_1.truncateVisible)(content, innerWidth - 2), innerWidth - 2) + colorize.dim(' │');
|
|
148
|
+
});
|
|
149
|
+
return [
|
|
150
|
+
colorize.dim(`┌─ ${title} ${'─'.repeat(titleFill)}┐`),
|
|
151
|
+
...rows,
|
|
152
|
+
colorize.dim(`└${'─'.repeat(innerWidth)}┘`),
|
|
153
|
+
].join('\n');
|
|
154
|
+
}
|
|
155
|
+
function renderStatus(status, text) {
|
|
156
|
+
const dot = status === 'ready'
|
|
157
|
+
? colorize.success('●')
|
|
158
|
+
: status === 'loading'
|
|
159
|
+
? colorize.warn('●')
|
|
160
|
+
: status === 'error'
|
|
161
|
+
? colorize.danger('●')
|
|
162
|
+
: colorize.accent('●');
|
|
163
|
+
return `${dot} ${colorize.label(text || status)}`;
|
|
164
|
+
}
|
|
165
|
+
function renderToken(label, value) {
|
|
166
|
+
return `${colorize.label(label)}=${colorize.accent(value)}`;
|
|
167
|
+
}
|
|
168
|
+
function terminalRowsFor(visibleWidth, terminalWidth) {
|
|
169
|
+
if (visibleWidth <= 0)
|
|
170
|
+
return 1;
|
|
171
|
+
return Math.floor(visibleWidth / terminalWidth) + 1;
|
|
172
|
+
}
|
|
173
|
+
function shortProvider(provider) {
|
|
174
|
+
return provider === 'Alibaba Cloud' ? 'Qwen' : provider;
|
|
175
|
+
}
|
|
176
|
+
function formatTokens(tokens) {
|
|
177
|
+
if (tokens >= 1000000)
|
|
178
|
+
return `${(tokens / 1000000).toFixed(1)}M`;
|
|
179
|
+
if (tokens >= 1000)
|
|
180
|
+
return `${(tokens / 1000).toFixed(1)}K`;
|
|
181
|
+
return String(tokens);
|
|
182
|
+
}
|
|
183
|
+
function formatCost(cost) {
|
|
184
|
+
if (cost < 0.01)
|
|
185
|
+
return `$${cost.toFixed(4)}`;
|
|
186
|
+
if (cost < 1)
|
|
187
|
+
return `$${cost.toFixed(2)}`;
|
|
188
|
+
return `$${cost.toFixed(1)}`;
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=shell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../src/ui-v2/components/shell.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from './types';
|
|
2
|
+
export * from './runtime/text';
|
|
3
|
+
export * from './state/suggestions';
|
|
4
|
+
export * from './state/sessions';
|
|
5
|
+
export * from './state/picker';
|
|
6
|
+
export * from './state/input-reducer';
|
|
7
|
+
export * from './components/command-palette';
|
|
8
|
+
export * from './components/session-picker';
|
|
9
|
+
export * from './components/shell';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui-v2/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./types"), exports);
|
|
18
|
+
__exportStar(require("./runtime/text"), exports);
|
|
19
|
+
__exportStar(require("./state/suggestions"), exports);
|
|
20
|
+
__exportStar(require("./state/sessions"), exports);
|
|
21
|
+
__exportStar(require("./state/picker"), exports);
|
|
22
|
+
__exportStar(require("./state/input-reducer"), exports);
|
|
23
|
+
__exportStar(require("./components/command-palette"), exports);
|
|
24
|
+
__exportStar(require("./components/session-picker"), exports);
|
|
25
|
+
__exportStar(require("./components/shell"), exports);
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui-v2/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,iDAA+B;AAC/B,sDAAoC;AACpC,mDAAiC;AACjC,iDAA+B;AAC/B,wDAAsC;AACtC,+DAA6C;AAC7C,8DAA4C;AAC5C,qDAAmC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text measurement helpers for terminal UI rendering.
|
|
3
|
+
*/
|
|
4
|
+
export declare function stripAnsi(text: string): string;
|
|
5
|
+
export declare function visualWidth(text: string): number;
|
|
6
|
+
export declare function padEndVisible(text: string, targetWidth: number): string;
|
|
7
|
+
export declare function truncateVisible(text: string, targetWidth: number): string;
|
|
8
|
+
//# sourceMappingURL=text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/ui-v2/runtime/text.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOhD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAGvE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAkBzE"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Text measurement helpers for terminal UI rendering.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.stripAnsi = stripAnsi;
|
|
7
|
+
exports.visualWidth = visualWidth;
|
|
8
|
+
exports.padEndVisible = padEndVisible;
|
|
9
|
+
exports.truncateVisible = truncateVisible;
|
|
10
|
+
const ANSI_PATTERN = /\x1b\[[0-9;]*m/g;
|
|
11
|
+
function stripAnsi(text) {
|
|
12
|
+
return text.replace(ANSI_PATTERN, '');
|
|
13
|
+
}
|
|
14
|
+
function visualWidth(text) {
|
|
15
|
+
let width = 0;
|
|
16
|
+
for (const ch of stripAnsi(text)) {
|
|
17
|
+
const cp = ch.codePointAt(0) || 0;
|
|
18
|
+
width += isWideCodePoint(cp) ? 2 : 1;
|
|
19
|
+
}
|
|
20
|
+
return width;
|
|
21
|
+
}
|
|
22
|
+
function padEndVisible(text, targetWidth) {
|
|
23
|
+
const width = visualWidth(text);
|
|
24
|
+
return width >= targetWidth ? text : text + ' '.repeat(targetWidth - width);
|
|
25
|
+
}
|
|
26
|
+
function truncateVisible(text, targetWidth) {
|
|
27
|
+
if (targetWidth <= 0)
|
|
28
|
+
return '';
|
|
29
|
+
if (visualWidth(text) <= targetWidth)
|
|
30
|
+
return text;
|
|
31
|
+
if (targetWidth <= 1)
|
|
32
|
+
return '…';
|
|
33
|
+
let out = '';
|
|
34
|
+
let width = 0;
|
|
35
|
+
const limit = targetWidth - 1;
|
|
36
|
+
for (const ch of text) {
|
|
37
|
+
const cp = ch.codePointAt(0) || 0;
|
|
38
|
+
const chWidth = isWideCodePoint(cp) ? 2 : 1;
|
|
39
|
+
if (width + chWidth > limit)
|
|
40
|
+
break;
|
|
41
|
+
out += ch;
|
|
42
|
+
width += chWidth;
|
|
43
|
+
}
|
|
44
|
+
return out + '…';
|
|
45
|
+
}
|
|
46
|
+
function isWideCodePoint(cp) {
|
|
47
|
+
return cp >= 0x1100 && (cp <= 0x115F || cp === 0x2329 || cp === 0x232A ||
|
|
48
|
+
(cp >= 0x2E80 && cp <= 0xA4CF && cp !== 0x303F) ||
|
|
49
|
+
(cp >= 0xAC00 && cp <= 0xD7A3) ||
|
|
50
|
+
(cp >= 0xF900 && cp <= 0xFAFF) ||
|
|
51
|
+
(cp >= 0xFE10 && cp <= 0xFE19) ||
|
|
52
|
+
(cp >= 0xFE30 && cp <= 0xFE6F) ||
|
|
53
|
+
(cp >= 0xFF01 && cp <= 0xFF60) ||
|
|
54
|
+
(cp >= 0xFFE0 && cp <= 0xFFE6) ||
|
|
55
|
+
(cp >= 0x20000 && cp <= 0x2FFFD) ||
|
|
56
|
+
(cp >= 0x30000 && cp <= 0x3FFFD));
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../../src/ui-v2/runtime/text.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAIH,8BAEC;AAED,kCAOC;AAED,sCAGC;AAED,0CAkBC;AAtCD,MAAM,YAAY,GAAG,iBAAiB,CAAC;AAEvC,SAAgB,SAAS,CAAC,IAAY;IACpC,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,SAAgB,WAAW,CAAC,IAAY;IACtC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAClC,KAAK,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,aAAa,CAAC,IAAY,EAAE,WAAmB;IAC7D,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAgB,eAAe,CAAC,IAAY,EAAE,WAAmB;IAC/D,IAAI,WAAW,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,WAAW;QAAE,OAAO,IAAI,CAAC;IAClD,IAAI,WAAW,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC;IAEjC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,KAAK,GAAG,WAAW,GAAG,CAAC,CAAC;IAE9B,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;QACtB,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,KAAK,GAAG,OAAO,GAAG,KAAK;YAAE,MAAM;QACnC,GAAG,IAAI,EAAE,CAAC;QACV,KAAK,IAAI,OAAO,CAAC;IACnB,CAAC;IAED,OAAO,GAAG,GAAG,GAAG,CAAC;AACnB,CAAC;AAED,SAAS,eAAe,CAAC,EAAU;IACjC,OAAO,EAAE,IAAI,MAAM,IAAI,CACrB,EAAE,IAAI,MAAM,IAAI,EAAE,KAAK,MAAM,IAAI,EAAE,KAAK,MAAM;QAC9C,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,IAAI,EAAE,KAAK,MAAM,CAAC;QAC/C,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC;QAC9B,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC;QAC9B,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC;QAC9B,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC;QAC9B,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC;QAC9B,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC;QAC9B,CAAC,EAAE,IAAI,OAAO,IAAI,EAAE,IAAI,OAAO,CAAC;QAChC,CAAC,EAAE,IAAI,OAAO,IAAI,EAAE,IAAI,OAAO,CAAC,CACjC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt input reducer for UI v2.
|
|
3
|
+
*/
|
|
4
|
+
export interface InputState {
|
|
5
|
+
value: string;
|
|
6
|
+
cursor: number;
|
|
7
|
+
multiline: boolean;
|
|
8
|
+
historyIndex: number | null;
|
|
9
|
+
searchQuery: string | null;
|
|
10
|
+
}
|
|
11
|
+
export type InputAction = {
|
|
12
|
+
type: 'insert';
|
|
13
|
+
text: string;
|
|
14
|
+
} | {
|
|
15
|
+
type: 'backspace';
|
|
16
|
+
} | {
|
|
17
|
+
type: 'delete';
|
|
18
|
+
} | {
|
|
19
|
+
type: 'move';
|
|
20
|
+
direction: 'left' | 'right' | 'home' | 'end';
|
|
21
|
+
} | {
|
|
22
|
+
type: 'set';
|
|
23
|
+
value: string;
|
|
24
|
+
cursor?: number;
|
|
25
|
+
} | {
|
|
26
|
+
type: 'clear';
|
|
27
|
+
} | {
|
|
28
|
+
type: 'setMultiline';
|
|
29
|
+
multiline: boolean;
|
|
30
|
+
} | {
|
|
31
|
+
type: 'setHistoryIndex';
|
|
32
|
+
historyIndex: number | null;
|
|
33
|
+
} | {
|
|
34
|
+
type: 'setSearchQuery';
|
|
35
|
+
searchQuery: string | null;
|
|
36
|
+
};
|
|
37
|
+
export declare const initialInputState: InputState;
|
|
38
|
+
export declare function reduceInput(state: InputState, action: InputAction): InputState;
|
|
39
|
+
//# sourceMappingURL=input-reducer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-reducer.d.ts","sourceRoot":"","sources":["../../../src/ui-v2/state/input-reducer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAA;CAAE,GAC9D;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACxD;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAE3D,eAAO,MAAM,iBAAiB,EAAE,UAM/B,CAAC;AAEF,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,GAAG,UAAU,CAqD9E"}
|