openhorse 0.2.2 → 0.2.3
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 +23 -0
- package/dist/cli.js +163 -22
- package/dist/cli.js.map +1 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +82 -2
- package/dist/commands/index.js.map +1 -1
- package/dist/framework/prompt.d.ts +4 -0
- package/dist/framework/prompt.d.ts.map +1 -1
- package/dist/framework/prompt.js +18 -0
- package/dist/framework/prompt.js.map +1 -1
- package/dist/framework/query.d.ts +7 -0
- package/dist/framework/query.d.ts.map +1 -1
- package/dist/framework/query.js +14 -0
- package/dist/framework/query.js.map +1 -1
- package/dist/framework/store.d.ts +3 -1
- package/dist/framework/store.d.ts.map +1 -1
- package/dist/framework/store.js +1 -0
- package/dist/framework/store.js.map +1 -1
- package/dist/ink-ui/App.d.ts +4 -1
- package/dist/ink-ui/App.d.ts.map +1 -1
- package/dist/ink-ui/App.js +2 -2
- package/dist/ink-ui/App.js.map +1 -1
- package/dist/ink-ui/components/NativeCursor.d.ts +12 -0
- package/dist/ink-ui/components/NativeCursor.d.ts.map +1 -0
- package/dist/ink-ui/components/NativeCursor.js +35 -0
- package/dist/ink-ui/components/NativeCursor.js.map +1 -0
- package/dist/ink-ui/components/PromptInput.d.ts +5 -1
- package/dist/ink-ui/components/PromptInput.d.ts.map +1 -1
- package/dist/ink-ui/components/PromptInput.js +10 -6
- package/dist/ink-ui/components/PromptInput.js.map +1 -1
- package/dist/ink-ui/components/RunningHorseIndicator.d.ts +1 -1
- package/dist/ink-ui/components/RunningHorseIndicator.d.ts.map +1 -1
- package/dist/ink-ui/components/RunningHorseIndicator.js +3 -41
- package/dist/ink-ui/components/RunningHorseIndicator.js.map +1 -1
- package/dist/ink-ui/components/SelectList.d.ts +2 -1
- package/dist/ink-ui/components/SelectList.d.ts.map +1 -1
- package/dist/ink-ui/components/SelectList.js +26 -11
- package/dist/ink-ui/components/SelectList.js.map +1 -1
- package/dist/ink-ui/components/StatusLine.d.ts.map +1 -1
- package/dist/ink-ui/components/StatusLine.js +22 -31
- package/dist/ink-ui/components/StatusLine.js.map +1 -1
- package/dist/ink-ui/components/TerminalCursor.d.ts +4 -2
- package/dist/ink-ui/components/TerminalCursor.d.ts.map +1 -1
- package/dist/ink-ui/components/TerminalCursor.js +18 -43
- package/dist/ink-ui/components/TerminalCursor.js.map +1 -1
- package/dist/ink-ui/components/ToolActivity.d.ts +17 -0
- package/dist/ink-ui/components/ToolActivity.d.ts.map +1 -0
- package/dist/ink-ui/components/ToolActivity.js +107 -0
- package/dist/ink-ui/components/ToolActivity.js.map +1 -0
- package/dist/ink-ui/components/Transcript.d.ts +7 -1
- package/dist/ink-ui/components/Transcript.d.ts.map +1 -1
- package/dist/ink-ui/components/Transcript.js +40 -3
- package/dist/ink-ui/components/Transcript.js.map +1 -1
- package/dist/ink-ui/controllers/chat-controller.d.ts +1 -33
- package/dist/ink-ui/controllers/chat-controller.d.ts.map +1 -1
- package/dist/ink-ui/controllers/chat-controller.js +15 -437
- package/dist/ink-ui/controllers/chat-controller.js.map +1 -1
- package/dist/ink-ui/hooks/use-raw-input-bridge.d.ts +6 -0
- package/dist/ink-ui/hooks/use-raw-input-bridge.d.ts.map +1 -0
- package/dist/ink-ui/hooks/use-raw-input-bridge.js +27 -0
- package/dist/ink-ui/hooks/use-raw-input-bridge.js.map +1 -0
- package/dist/ink-ui/hooks/use-terminal-size.d.ts +7 -0
- package/dist/ink-ui/hooks/use-terminal-size.d.ts.map +1 -0
- package/dist/ink-ui/hooks/use-terminal-size.js +34 -0
- package/dist/ink-ui/hooks/use-terminal-size.js.map +1 -0
- package/dist/ink-ui/launch.d.ts +6 -0
- package/dist/ink-ui/launch.d.ts.map +1 -1
- package/dist/ink-ui/launch.js +60 -2
- package/dist/ink-ui/launch.js.map +1 -1
- package/dist/ink-ui/runtime/grapheme.d.ts +9 -0
- package/dist/ink-ui/runtime/grapheme.d.ts.map +1 -0
- package/dist/ink-ui/runtime/grapheme.js +63 -0
- package/dist/ink-ui/runtime/grapheme.js.map +1 -0
- package/dist/ink-ui/runtime/input-buffer.d.ts +32 -0
- package/dist/ink-ui/runtime/input-buffer.d.ts.map +1 -0
- package/dist/ink-ui/runtime/input-buffer.js +165 -0
- package/dist/ink-ui/runtime/input-buffer.js.map +1 -0
- package/dist/ink-ui/runtime/layout-budget.d.ts +13 -0
- package/dist/ink-ui/runtime/layout-budget.d.ts.map +1 -0
- package/dist/ink-ui/runtime/layout-budget.js +25 -0
- package/dist/ink-ui/runtime/layout-budget.js.map +1 -0
- package/dist/ink-ui/runtime/native-cursor.d.ts +62 -0
- package/dist/ink-ui/runtime/native-cursor.d.ts.map +1 -0
- package/dist/ink-ui/runtime/native-cursor.js +423 -0
- package/dist/ink-ui/runtime/native-cursor.js.map +1 -0
- package/dist/ink-ui/runtime/prompt-layout.d.ts +20 -1
- package/dist/ink-ui/runtime/prompt-layout.d.ts.map +1 -1
- package/dist/ink-ui/runtime/prompt-layout.js +129 -11
- package/dist/ink-ui/runtime/prompt-layout.js.map +1 -1
- package/dist/ink-ui/runtime/raw-input.d.ts +4 -0
- package/dist/ink-ui/runtime/raw-input.d.ts.map +1 -0
- package/dist/ink-ui/runtime/raw-input.js +15 -0
- package/dist/ink-ui/runtime/raw-input.js.map +1 -0
- package/dist/ink-ui/runtime/stdout.d.ts +11 -0
- package/dist/ink-ui/runtime/stdout.d.ts.map +1 -0
- package/dist/ink-ui/runtime/stdout.js +82 -0
- package/dist/ink-ui/runtime/stdout.js.map +1 -0
- package/dist/ink-ui/runtime/transcript-state.d.ts +37 -0
- package/dist/ink-ui/runtime/transcript-state.d.ts.map +1 -0
- package/dist/ink-ui/runtime/transcript-state.js +89 -0
- package/dist/ink-ui/runtime/transcript-state.js.map +1 -0
- package/dist/ink-ui/screens/ReplScreen.d.ts +8 -2
- package/dist/ink-ui/screens/ReplScreen.d.ts.map +1 -1
- package/dist/ink-ui/screens/ReplScreen.js +247 -151
- package/dist/ink-ui/screens/ReplScreen.js.map +1 -1
- package/dist/ink-ui/types.d.ts +1 -42
- package/dist/ink-ui/types.d.ts.map +1 -1
- package/dist/ink-ui/types.js +15 -0
- package/dist/ink-ui/types.js.map +1 -1
- package/dist/print-ui/launch.d.ts +8 -0
- package/dist/print-ui/launch.d.ts.map +1 -0
- package/dist/print-ui/launch.js +205 -0
- package/dist/print-ui/launch.js.map +1 -0
- package/dist/runtime/agent-runtime-controller.d.ts +69 -0
- package/dist/runtime/agent-runtime-controller.d.ts.map +1 -0
- package/dist/runtime/agent-runtime-controller.js +225 -0
- package/dist/runtime/agent-runtime-controller.js.map +1 -0
- package/dist/runtime/agent-runtime-protocol.d.ts +90 -0
- package/dist/runtime/agent-runtime-protocol.d.ts.map +1 -0
- package/dist/runtime/agent-runtime-protocol.js +80 -0
- package/dist/runtime/agent-runtime-protocol.js.map +1 -0
- package/dist/runtime/chat-controller.d.ts +41 -0
- package/dist/runtime/chat-controller.d.ts.map +1 -0
- package/dist/runtime/chat-controller.js +577 -0
- package/dist/runtime/chat-controller.js.map +1 -0
- package/dist/runtime/ui-events.d.ts +59 -0
- package/dist/runtime/ui-events.d.ts.map +1 -0
- package/dist/runtime/ui-events.js +3 -0
- package/dist/runtime/ui-events.js.map +1 -0
- package/dist/services/commit-plan.d.ts +17 -0
- package/dist/services/commit-plan.d.ts.map +1 -0
- package/dist/services/commit-plan.js +161 -0
- package/dist/services/commit-plan.js.map +1 -0
- package/dist/services/config.d.ts +3 -2
- package/dist/services/config.d.ts.map +1 -1
- package/dist/services/config.js +7 -6
- package/dist/services/config.js.map +1 -1
- package/dist/services/doctor.d.ts +33 -0
- package/dist/services/doctor.d.ts.map +1 -0
- package/dist/services/doctor.js +211 -0
- package/dist/services/doctor.js.map +1 -0
- package/dist/services/file-context.d.ts +21 -0
- package/dist/services/file-context.d.ts.map +1 -0
- package/dist/services/file-context.js +194 -0
- package/dist/services/file-context.js.map +1 -0
- package/dist/services/global-config.d.ts +1 -1
- package/dist/services/global-config.d.ts.map +1 -1
- package/dist/services/project-instructions.d.ts +16 -0
- package/dist/services/project-instructions.d.ts.map +1 -0
- package/dist/services/project-instructions.js +135 -0
- package/dist/services/project-instructions.js.map +1 -0
- package/dist/services/prompt-context.d.ts +3 -0
- package/dist/services/prompt-context.d.ts.map +1 -0
- package/dist/services/prompt-context.js +13 -0
- package/dist/services/prompt-context.js.map +1 -0
- package/dist/services/session-storage.d.ts +3 -0
- package/dist/services/session-storage.d.ts.map +1 -1
- package/dist/services/session-storage.js +11 -0
- package/dist/services/session-storage.js.map +1 -1
- package/dist/services/workspace-diff.d.ts +27 -0
- package/dist/services/workspace-diff.d.ts.map +1 -0
- package/dist/services/workspace-diff.js +129 -0
- package/dist/services/workspace-diff.js.map +1 -0
- package/dist/terminal-ui/completion.d.ts +6 -0
- package/dist/terminal-ui/completion.d.ts.map +1 -0
- package/dist/terminal-ui/completion.js +80 -0
- package/dist/terminal-ui/completion.js.map +1 -0
- package/dist/terminal-ui/editor.d.ts +17 -0
- package/dist/terminal-ui/editor.d.ts.map +1 -0
- package/dist/terminal-ui/editor.js +42 -0
- package/dist/terminal-ui/editor.js.map +1 -0
- package/dist/terminal-ui/launch.d.ts +23 -0
- package/dist/terminal-ui/launch.d.ts.map +1 -0
- package/dist/terminal-ui/launch.js +567 -0
- package/dist/terminal-ui/launch.js.map +1 -0
- package/dist/terminal-ui/raw-editor.d.ts +57 -0
- package/dist/terminal-ui/raw-editor.d.ts.map +1 -0
- package/dist/terminal-ui/raw-editor.js +339 -0
- package/dist/terminal-ui/raw-editor.js.map +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +61 -19
- package/dist/tools/index.js.map +1 -1
- package/dist/tui-core/frame.d.ts +25 -0
- package/dist/tui-core/frame.d.ts.map +1 -0
- package/dist/tui-core/frame.js +104 -0
- package/dist/tui-core/frame.js.map +1 -0
- package/dist/tui-core/input-parser.d.ts +25 -0
- package/dist/tui-core/input-parser.d.ts.map +1 -0
- package/dist/tui-core/input-parser.js +207 -0
- package/dist/tui-core/input-parser.js.map +1 -0
- package/dist/tui-core/terminal-writer.d.ts +34 -0
- package/dist/tui-core/terminal-writer.d.ts.map +1 -0
- package/dist/tui-core/terminal-writer.js +92 -0
- package/dist/tui-core/terminal-writer.js.map +1 -0
- package/dist/tui-ui/launch.d.ts +7 -0
- package/dist/tui-ui/launch.d.ts.map +1 -0
- package/dist/tui-ui/launch.js +194 -0
- package/dist/tui-ui/launch.js.map +1 -0
- package/dist/tui-ui/layout.d.ts +9 -0
- package/dist/tui-ui/layout.d.ts.map +1 -0
- package/dist/tui-ui/layout.js +239 -0
- package/dist/tui-ui/layout.js.map +1 -0
- package/dist/tui-ui/pickers.d.ts +13 -0
- package/dist/tui-ui/pickers.d.ts.map +1 -0
- package/dist/tui-ui/pickers.js +79 -0
- package/dist/tui-ui/pickers.js.map +1 -0
- package/dist/tui-ui/runner.d.ts +43 -0
- package/dist/tui-ui/runner.d.ts.map +1 -0
- package/dist/tui-ui/runner.js +387 -0
- package/dist/tui-ui/runner.js.map +1 -0
- package/dist/tui-ui/state.d.ts +106 -0
- package/dist/tui-ui/state.d.ts.map +1 -0
- package/dist/tui-ui/state.js +202 -0
- package/dist/tui-ui/state.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NativeCursor.d.ts","sourceRoot":"","sources":["../../../src/ink-ui/components/NativeCursor.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAExD,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC5B,MAAM,0BAA0B,CAAC;AAElC,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,EAAE,sBAAsB,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,YAAY,CAAC,EAC3B,gBAAgB,EAChB,KAAK,EACL,aAAa,EACb,SAAS,EACT,MAAqB,EACrB,OAAW,GACZ,EAAE,iBAAiB,GAAG,IAAI,CA8B1B"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NativeCursor = NativeCursor;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const prompt_layout_1 = require("../runtime/prompt-layout");
|
|
6
|
+
const native_cursor_1 = require("../runtime/native-cursor");
|
|
7
|
+
function NativeCursor({ cursorController, value, terminalWidth, promptRef, cursor = value.length, maxRows = 6, }) {
|
|
8
|
+
(0, react_1.useLayoutEffect)(() => {
|
|
9
|
+
const viewport = (0, prompt_layout_1.getPromptInputViewport)(value, terminalWidth, maxRows, cursor);
|
|
10
|
+
const declaredAnchor = (0, native_cursor_1.nativeCursorAnchorFromNode)(promptRef?.current, {
|
|
11
|
+
cursorColumn: viewport.cursorColumn,
|
|
12
|
+
cursorLineIndex: viewport.cursorLineIndex,
|
|
13
|
+
});
|
|
14
|
+
const anchor = declaredAnchor ?? {
|
|
15
|
+
column: viewport.cursorColumn,
|
|
16
|
+
rowsUp: viewport.rowsUpFromPromptBottom,
|
|
17
|
+
row: undefined,
|
|
18
|
+
};
|
|
19
|
+
cursorController.setState({
|
|
20
|
+
enabled: true,
|
|
21
|
+
column: anchor.column,
|
|
22
|
+
rowsUp: anchor.rowsUp,
|
|
23
|
+
row: anchor.row,
|
|
24
|
+
cursorLineIndex: viewport.cursorLineIndex,
|
|
25
|
+
});
|
|
26
|
+
cursorController.restore();
|
|
27
|
+
}, [value, terminalWidth, cursor, maxRows, promptRef, cursorController]);
|
|
28
|
+
(0, react_1.useLayoutEffect)(() => {
|
|
29
|
+
return () => {
|
|
30
|
+
cursorController.disable();
|
|
31
|
+
};
|
|
32
|
+
}, [cursorController]);
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=NativeCursor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NativeCursor.js","sourceRoot":"","sources":["../../../src/ink-ui/components/NativeCursor.tsx"],"names":[],"mappings":";;AAiBA,oCAqCC;AAtDD,iCAAwD;AACxD,4DAAkE;AAClE,4DAIkC;AAWlC,SAAgB,YAAY,CAAC,EAC3B,gBAAgB,EAChB,KAAK,EACL,aAAa,EACb,SAAS,EACT,MAAM,GAAG,KAAK,CAAC,MAAM,EACrB,OAAO,GAAG,CAAC,GACO;IAClB,IAAA,uBAAe,EAAC,GAAG,EAAE;QACnB,MAAM,QAAQ,GAAG,IAAA,sCAAsB,EAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/E,MAAM,cAAc,GAAG,IAAA,0CAA0B,EAAC,SAAS,EAAE,OAAO,EAAE;YACpE,YAAY,EAAE,QAAQ,CAAC,YAAY;YACnC,eAAe,EAAE,QAAQ,CAAC,eAAe;SAC1C,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,cAAc,IAAI;YAC/B,MAAM,EAAE,QAAQ,CAAC,YAAY;YAC7B,MAAM,EAAE,QAAQ,CAAC,sBAAsB;YACvC,GAAG,EAAE,SAAS;SACf,CAAC;QAEF,gBAAgB,CAAC,QAAQ,CAAC;YACxB,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,eAAe,EAAE,QAAQ,CAAC,eAAe;SAC1C,CAAC,CAAC;QACH,gBAAgB,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEzE,IAAA,uBAAe,EAAC,GAAG,EAAE;QACnB,OAAO,GAAG,EAAE;YACV,gBAAgB,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEvB,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { DOMElement } from 'ink/build/dom';
|
|
1
3
|
export interface PromptInputProps {
|
|
2
4
|
value: string;
|
|
3
5
|
running: boolean;
|
|
4
6
|
modeText?: string;
|
|
5
7
|
width?: number;
|
|
8
|
+
maxRows?: number;
|
|
9
|
+
cursor?: number;
|
|
6
10
|
}
|
|
7
11
|
export declare function formatPromptLine(line: string, index: number, width: number): string;
|
|
8
|
-
export declare
|
|
12
|
+
export declare const PromptInput: React.ForwardRefExoticComponent<PromptInputProps & React.RefAttributes<DOMElement>>;
|
|
9
13
|
//# sourceMappingURL=PromptInput.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PromptInput.d.ts","sourceRoot":"","sources":["../../../src/ink-ui/components/PromptInput.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PromptInput.d.ts","sourceRoot":"","sources":["../../../src/ink-ui/components/PromptInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnF;AAED,eAAO,MAAM,WAAW,qFA4BtB,CAAC"}
|
|
@@ -3,22 +3,26 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.PromptInput = void 0;
|
|
6
7
|
exports.formatPromptLine = formatPromptLine;
|
|
7
|
-
exports.PromptInput = PromptInput;
|
|
8
8
|
const react_1 = __importDefault(require("react"));
|
|
9
9
|
const ink_1 = require("ink");
|
|
10
10
|
const prompt_layout_1 = require("../runtime/prompt-layout");
|
|
11
11
|
const INPUT_BACKGROUND = '#50545c';
|
|
12
12
|
function formatPromptLine(line, index, width) {
|
|
13
|
-
return (0, prompt_layout_1.formatPromptVisualLine)({ logicalIndex: index, wrapIndex: 0, content: line }, width);
|
|
13
|
+
return (0, prompt_layout_1.formatPromptVisualLine)({ logicalIndex: index, wrapIndex: 0, content: line, start: 0, end: line.length }, width);
|
|
14
14
|
}
|
|
15
|
-
function PromptInput({ value, running, modeText, width = 80 }) {
|
|
16
|
-
const lines = (0, prompt_layout_1.
|
|
15
|
+
exports.PromptInput = react_1.default.forwardRef(function PromptInput({ value, running, modeText, width = 80, maxRows = 6, cursor = value.length }, ref) {
|
|
16
|
+
const { lines, hiddenRows, showHiddenIndicator } = (0, prompt_layout_1.getPromptInputViewport)(value, width, maxRows, cursor);
|
|
17
17
|
return (react_1.default.createElement(ink_1.Box, { flexDirection: "column" },
|
|
18
18
|
react_1.default.createElement(ink_1.Text, { color: "gray" },
|
|
19
19
|
"/ commands @ files ? shortcuts Alt+Enter newline Ctrl+C ",
|
|
20
20
|
running ? 'interrupt' : 'twice exits',
|
|
21
21
|
modeText ? ` ${modeText}` : ''),
|
|
22
|
-
react_1.default.createElement(ink_1.Box, { width: width, borderStyle: "single", borderColor: running ? 'yellow' : 'gray', paddingX: 1, flexDirection: "column" },
|
|
23
|
-
}
|
|
22
|
+
react_1.default.createElement(ink_1.Box, { ref: ref, width: width, borderStyle: "single", borderColor: running ? 'yellow' : 'gray', paddingX: 1, flexDirection: "column" },
|
|
23
|
+
showHiddenIndicator && hiddenRows > 0 ? (react_1.default.createElement(ink_1.Text, { color: "gray", wrap: "truncate" }, ` ... ${hiddenRows} hidden input line${hiddenRows === 1 ? '' : 's'}`)) : null,
|
|
24
|
+
lines.map((line, index) => {
|
|
25
|
+
return (react_1.default.createElement(ink_1.Text, { key: `${line.logicalIndex}:${line.wrapIndex}:${index}`, backgroundColor: INPUT_BACKGROUND, color: "white", wrap: "truncate" }, (0, prompt_layout_1.formatPromptVisualLine)(line, width)));
|
|
26
|
+
}))));
|
|
27
|
+
});
|
|
24
28
|
//# sourceMappingURL=PromptInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PromptInput.js","sourceRoot":"","sources":["../../../src/ink-ui/components/PromptInput.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PromptInput.js","sourceRoot":"","sources":["../../../src/ink-ui/components/PromptInput.tsx"],"names":[],"mappings":";;;;;;AAgBA,4CAEC;AAlBD,kDAA0B;AAC1B,6BAAgC;AAChC,4DAAiH;AAYjH,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAEnC,SAAgB,gBAAgB,CAAC,IAAY,EAAE,KAAa,EAAE,KAAa;IACzE,OAAO,IAAA,sCAAsB,EAAC,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC;AACzH,CAAC;AAEY,QAAA,WAAW,GAAG,eAAK,CAAC,UAAU,CAA+B,SAAS,WAAW,CAC5F,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,EAC5E,GAAG;IAEH,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,GAAG,IAAA,sCAAsB,EAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAEzG,OAAO,CACL,8BAAC,SAAG,IAAC,aAAa,EAAC,QAAQ;QACzB,8BAAC,UAAI,IAAC,KAAK,EAAC,MAAM;;YACiD,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa;YACrG,QAAQ,CAAC,CAAC,CAAC,MAAM,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAC5B;QACP,8BAAC,SAAG,IAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ;YAC5H,mBAAmB,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CACvC,8BAAC,UAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,UAAU,IAC/B,SAAS,UAAU,qBAAqB,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CACjE,CACR,CAAC,CAAC,CAAC,IAAI;YACP,KAAK,CAAC,GAAG,CAAC,CAAC,IAAsB,EAAE,KAAK,EAAE,EAAE;gBAC3C,OAAO,CACL,8BAAC,UAAI,IAAC,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,EAAE,EAAE,eAAe,EAAE,gBAAgB,EAAE,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,UAAU,IAC3H,IAAA,sCAAsB,EAAC,IAAI,EAAE,KAAK,CAAC,CAC/B,CACR,CAAC;YACJ,CAAC,CAAC,CACE,CACF,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -9,5 +9,5 @@ export interface RunningHorseIndicatorProps {
|
|
|
9
9
|
}
|
|
10
10
|
export declare function getRunningHorseFrame(tick: number): RunningHorseFrame;
|
|
11
11
|
export declare function runningHorseLabel(statusMessage?: string): string;
|
|
12
|
-
export declare function RunningHorseIndicator({ label, maxWidth, intervalMs, }: RunningHorseIndicatorProps): JSX.Element;
|
|
12
|
+
export declare function RunningHorseIndicator({ label, maxWidth, intervalMs: _intervalMs, }: RunningHorseIndicatorProps): JSX.Element;
|
|
13
13
|
//# sourceMappingURL=RunningHorseIndicator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RunningHorseIndicator.d.ts","sourceRoot":"","sources":["../../../src/ink-ui/components/RunningHorseIndicator.tsx"],"names":[],"mappings":"AAWA,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAEpE;AAcD,wBAAgB,iBAAiB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAIhE;AAED,wBAAgB,qBAAqB,CAAC,EACpC,KAAiB,EACjB,QAAa,EACb,
|
|
1
|
+
{"version":3,"file":"RunningHorseIndicator.d.ts","sourceRoot":"","sources":["../../../src/ink-ui/components/RunningHorseIndicator.tsx"],"names":[],"mappings":"AAWA,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAEpE;AAcD,wBAAgB,iBAAiB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAIhE;AAED,wBAAgB,qBAAqB,CAAC,EACpC,KAAiB,EACjB,QAAa,EACb,UAAU,EAAE,WAAiB,GAC9B,EAAE,0BAA0B,GAAG,GAAG,CAAC,OAAO,CAY1C"}
|
|
@@ -1,37 +1,4 @@
|
|
|
1
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
4
|
};
|
|
@@ -39,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
39
6
|
exports.getRunningHorseFrame = getRunningHorseFrame;
|
|
40
7
|
exports.runningHorseLabel = runningHorseLabel;
|
|
41
8
|
exports.RunningHorseIndicator = RunningHorseIndicator;
|
|
42
|
-
const react_1 =
|
|
9
|
+
const react_1 = __importDefault(require("react"));
|
|
43
10
|
const ink_1 = require("ink");
|
|
44
11
|
const string_width_1 = __importDefault(require("string-width"));
|
|
45
12
|
const HORSE_FRAMES = [
|
|
@@ -70,15 +37,10 @@ function runningHorseLabel(statusMessage) {
|
|
|
70
37
|
return 'working';
|
|
71
38
|
return trimmed;
|
|
72
39
|
}
|
|
73
|
-
function RunningHorseIndicator({ label = 'working', maxWidth = 32, intervalMs = 120, }) {
|
|
74
|
-
const
|
|
75
|
-
const frame = getRunningHorseFrame(tick);
|
|
40
|
+
function RunningHorseIndicator({ label = 'working', maxWidth = 32, intervalMs: _intervalMs = 120, }) {
|
|
41
|
+
const frame = getRunningHorseFrame(0);
|
|
76
42
|
const fixedWidth = (0, string_width_1.default)(`${frame.horse} ${frame.dust} `);
|
|
77
43
|
const text = truncateVisual(label, Math.max(0, maxWidth - fixedWidth));
|
|
78
|
-
(0, react_1.useEffect)(() => {
|
|
79
|
-
const timer = setInterval(() => setTick(current => current + 1), intervalMs);
|
|
80
|
-
return () => clearInterval(timer);
|
|
81
|
-
}, [intervalMs]);
|
|
82
44
|
return (react_1.default.createElement(ink_1.Box, null,
|
|
83
45
|
react_1.default.createElement(ink_1.Text, { color: "cyan" }, frame.horse),
|
|
84
46
|
react_1.default.createElement(ink_1.Text, { color: "gray" },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RunningHorseIndicator.js","sourceRoot":"","sources":["../../../src/ink-ui/components/RunningHorseIndicator.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RunningHorseIndicator.js","sourceRoot":"","sources":["../../../src/ink-ui/components/RunningHorseIndicator.tsx"],"names":[],"mappings":";;;;;AAsBA,oDAEC;AAcD,8CAIC;AAED,sDAgBC;AA5DD,kDAA0B;AAC1B,6BAAgC;AAChC,gEAAuC;AAEvC,MAAM,YAAY,GAAG;IACnB,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE;IAChC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE;IAChC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE;IAChC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE;CACjC,CAAC;AAaF,SAAgB,oBAAoB,CAAC,IAAY;IAC/C,OAAO,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,QAAgB;IACpD,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAC7B,IAAI,IAAA,sBAAW,EAAC,IAAI,CAAC,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE/C,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,IAAA,sBAAW,EAAC,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ;YAAE,MAAM;QAClD,MAAM,IAAI,IAAI,CAAC;IACjB,CAAC;IACD,OAAO,GAAG,MAAM,KAAK,CAAC;AACxB,CAAC;AAED,SAAgB,iBAAiB,CAAC,aAAsB;IACtD,MAAM,OAAO,GAAG,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC5C,IAAI,CAAC,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IACrE,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAgB,qBAAqB,CAAC,EACpC,KAAK,GAAG,SAAS,EACjB,QAAQ,GAAG,EAAE,EACb,UAAU,EAAE,WAAW,GAAG,GAAG,GACF;IAC3B,MAAM,KAAK,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG,IAAA,sBAAW,EAAC,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC;IAEvE,OAAO,CACL,8BAAC,SAAG;QACF,8BAAC,UAAI,IAAC,KAAK,EAAC,MAAM,IAAE,KAAK,CAAC,KAAK,CAAQ;QACvC,8BAAC,UAAI,IAAC,KAAK,EAAC,MAAM;;YAAG,KAAK,CAAC,IAAI;gBAAS;QACxC,8BAAC,UAAI,IAAC,KAAK,EAAC,QAAQ,IAAE,IAAI,CAAQ,CAC9B,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -10,6 +10,7 @@ export interface SelectListProps {
|
|
|
10
10
|
maxVisibleItems?: number;
|
|
11
11
|
emptyText?: string;
|
|
12
12
|
footer?: string;
|
|
13
|
+
width?: number;
|
|
13
14
|
}
|
|
14
|
-
export declare function SelectList({ title, items, selectedIndex, maxVisibleItems, emptyText, footer, }: SelectListProps): JSX.Element;
|
|
15
|
+
export declare function SelectList({ title, items, selectedIndex, maxVisibleItems, emptyText, footer, width, }: SelectListProps): JSX.Element;
|
|
15
16
|
//# sourceMappingURL=SelectList.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectList.d.ts","sourceRoot":"","sources":["../../../src/ink-ui/components/SelectList.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SelectList.d.ts","sourceRoot":"","sources":["../../../src/ink-ui/components/SelectList.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAoBD,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,KAAK,EACL,aAAa,EACb,eAAoB,EACpB,SAAwB,EACxB,MAAgD,EAChD,KAAU,GACX,EAAE,eAAe,GAAG,GAAG,CAAC,OAAO,CAmC/B"}
|
|
@@ -6,34 +6,49 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.SelectList = SelectList;
|
|
7
7
|
const react_1 = __importDefault(require("react"));
|
|
8
8
|
const ink_1 = require("ink");
|
|
9
|
+
const string_width_1 = __importDefault(require("string-width"));
|
|
9
10
|
function windowStartFor(selectedIndex, total, maxVisibleItems) {
|
|
10
11
|
if (total <= maxVisibleItems)
|
|
11
12
|
return 0;
|
|
12
13
|
const half = Math.floor(maxVisibleItems / 2);
|
|
13
14
|
return Math.min(Math.max(0, selectedIndex - half), total - maxVisibleItems);
|
|
14
15
|
}
|
|
15
|
-
function
|
|
16
|
+
function truncateVisual(text, maxWidth) {
|
|
17
|
+
if ((0, string_width_1.default)(text) <= maxWidth)
|
|
18
|
+
return text;
|
|
19
|
+
if (maxWidth <= 3)
|
|
20
|
+
return '.'.repeat(Math.max(0, maxWidth));
|
|
21
|
+
let result = '';
|
|
22
|
+
for (const char of text) {
|
|
23
|
+
if ((0, string_width_1.default)(`${result}${char}...`) > maxWidth)
|
|
24
|
+
break;
|
|
25
|
+
result += char;
|
|
26
|
+
}
|
|
27
|
+
return `${result}...`;
|
|
28
|
+
}
|
|
29
|
+
function SelectList({ title, items, selectedIndex, maxVisibleItems = 10, emptyText = 'No matches', footer = '↑↓ navigate Enter select Esc cancel', width = 80, }) {
|
|
16
30
|
const safeSelected = Math.max(0, Math.min(selectedIndex, Math.max(0, items.length - 1)));
|
|
17
31
|
const start = windowStartFor(safeSelected, items.length, maxVisibleItems);
|
|
18
32
|
const visible = items.slice(start, start + maxVisibleItems);
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
33
|
+
const contentWidth = Math.max(12, width - 4);
|
|
34
|
+
return (react_1.default.createElement(ink_1.Box, { width: width, flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1 },
|
|
35
|
+
react_1.default.createElement(ink_1.Text, { color: "cyan", wrap: "truncate" }, truncateVisual(title, contentWidth)),
|
|
36
|
+
items.length === 0 ? (react_1.default.createElement(ink_1.Text, { color: "gray", wrap: "truncate" }, truncateVisual(emptyText, contentWidth))) : (visible.map((item, offset) => {
|
|
22
37
|
const index = start + offset;
|
|
23
38
|
const selected = index === safeSelected;
|
|
24
|
-
|
|
25
|
-
selected ? '›
|
|
39
|
+
const label = [
|
|
40
|
+
selected ? '›' : ' ',
|
|
26
41
|
item.label,
|
|
27
|
-
item.description ?
|
|
28
|
-
|
|
29
|
-
|
|
42
|
+
item.description ? ` ${item.description}` : '',
|
|
43
|
+
].join(' ');
|
|
44
|
+
return (react_1.default.createElement(ink_1.Text, { key: `${item.value}:${index}`, color: selected ? 'black' : undefined, backgroundColor: selected ? 'cyan' : undefined, wrap: "truncate" }, truncateVisual(label, contentWidth)));
|
|
30
45
|
})),
|
|
31
|
-
items.length > maxVisibleItems ? (react_1.default.createElement(ink_1.Text, { color: "gray" },
|
|
46
|
+
items.length > maxVisibleItems ? (react_1.default.createElement(ink_1.Text, { color: "gray", wrap: "truncate" },
|
|
32
47
|
start + 1,
|
|
33
48
|
"-",
|
|
34
49
|
Math.min(start + maxVisibleItems, items.length),
|
|
35
50
|
" / ",
|
|
36
51
|
items.length)) : null,
|
|
37
|
-
react_1.default.createElement(ink_1.Text, { color: "gray" }, footer)));
|
|
52
|
+
react_1.default.createElement(ink_1.Text, { color: "gray", wrap: "truncate" }, truncateVisual(footer, contentWidth))));
|
|
38
53
|
}
|
|
39
54
|
//# sourceMappingURL=SelectList.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectList.js","sourceRoot":"","sources":["../../../src/ink-ui/components/SelectList.tsx"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"SelectList.js","sourceRoot":"","sources":["../../../src/ink-ui/components/SelectList.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusLine.d.ts","sourceRoot":"","sources":["../../../src/ink-ui/components/StatusLine.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAGpD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,mBAAmB,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAYD,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,KAAU,EAAE,EAAE,eAAe,GAAG,GAAG,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"StatusLine.d.ts","sourceRoot":"","sources":["../../../src/ink-ui/components/StatusLine.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAGpD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,mBAAmB,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAYD,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,KAAU,EAAE,EAAE,eAAe,GAAG,GAAG,CAAC,OAAO,CAmDxG"}
|
|
@@ -30,7 +30,7 @@ function StatusLine({ runtime, running, statusMessage, width = 80 }) {
|
|
|
30
30
|
const mcpStatus = mcp_1.mcpManager.getStatus();
|
|
31
31
|
const connectedMcp = mcpStatus.filter(item => item.connected).length;
|
|
32
32
|
const ctxPercent = (0, model_context_1.calculateCtxPercent)(totalTokens, snapshot.currentModel || snapshot.config.model);
|
|
33
|
-
const
|
|
33
|
+
const fullRightText = [
|
|
34
34
|
`model=${snapshot.currentModel}`,
|
|
35
35
|
`session=${session?.id.slice(0, 8) ?? 'none'}`,
|
|
36
36
|
`tokens=${(totalTokens / 1000).toFixed(1)}K`,
|
|
@@ -38,36 +38,27 @@ function StatusLine({ runtime, running, statusMessage, width = 80 }) {
|
|
|
38
38
|
`ctx=${ctxPercent}%`,
|
|
39
39
|
mcpStatus.length > 0 ? `mcp=${connectedMcp}/${mcpStatus.length}` : '',
|
|
40
40
|
].filter(Boolean).join(' ');
|
|
41
|
-
const
|
|
41
|
+
const mediumRightText = [
|
|
42
|
+
`model=${snapshot.currentModel}`,
|
|
43
|
+
`session=${session?.id.slice(0, 8) ?? 'none'}`,
|
|
44
|
+
`tokens=${(totalTokens / 1000).toFixed(1)}K`,
|
|
45
|
+
`ctx=${ctxPercent}%`,
|
|
46
|
+
].join(' ');
|
|
47
|
+
const compactRightText = [
|
|
48
|
+
`model=${snapshot.currentModel}`,
|
|
49
|
+
`ctx=${ctxPercent}%`,
|
|
50
|
+
].join(' ');
|
|
51
|
+
const usableWidth = Math.max(20, width);
|
|
52
|
+
const rightBudget = Math.max(10, Math.floor(usableWidth * 0.68));
|
|
53
|
+
const rightText = [fullRightText, mediumRightText, compactRightText]
|
|
54
|
+
.find(candidate => (0, string_width_1.default)(candidate) <= rightBudget)
|
|
55
|
+
?? compactRightText;
|
|
56
|
+
const rightMaxWidth = Math.max(10, Math.min((0, string_width_1.default)(rightText), rightBudget));
|
|
57
|
+
const rightDisplay = truncateVisual(rightText, rightMaxWidth);
|
|
58
|
+
const leftMaxWidth = Math.max(8, usableWidth - (0, string_width_1.default)(rightDisplay) - 2);
|
|
42
59
|
const leftText = truncateVisual(statusMessage || 'ready', leftMaxWidth);
|
|
43
|
-
return (react_1.default.createElement(ink_1.Box, { justifyContent: "space-between" },
|
|
44
|
-
running ? (react_1.default.createElement(RunningHorseIndicator_1.RunningHorseIndicator, { label: (0, RunningHorseIndicator_1.runningHorseLabel)(statusMessage), maxWidth: leftMaxWidth })) : (react_1.default.createElement(ink_1.Text, { color: "gray" }, leftText)),
|
|
45
|
-
react_1.default.createElement(ink_1.Text, { color: "gray" },
|
|
46
|
-
"model=",
|
|
47
|
-
react_1.default.createElement(ink_1.Text, { color: "cyan" }, snapshot.currentModel),
|
|
48
|
-
' ',
|
|
49
|
-
"session=",
|
|
50
|
-
react_1.default.createElement(ink_1.Text, { color: "cyan" }, session?.id.slice(0, 8) ?? 'none'),
|
|
51
|
-
' ',
|
|
52
|
-
"tokens=",
|
|
53
|
-
react_1.default.createElement(ink_1.Text, { color: "cyan" },
|
|
54
|
-
(totalTokens / 1000).toFixed(1),
|
|
55
|
-
"K"),
|
|
56
|
-
' ',
|
|
57
|
-
"cost=",
|
|
58
|
-
react_1.default.createElement(ink_1.Text, { color: "cyan" },
|
|
59
|
-
"$",
|
|
60
|
-
costStats.totalCost.toFixed(4)),
|
|
61
|
-
' ',
|
|
62
|
-
"ctx=",
|
|
63
|
-
react_1.default.createElement(ink_1.Text, { color: "cyan" },
|
|
64
|
-
ctxPercent,
|
|
65
|
-
"%"),
|
|
66
|
-
mcpStatus.length > 0 ? react_1.default.createElement(ink_1.Text, null,
|
|
67
|
-
" mcp=",
|
|
68
|
-
react_1.default.createElement(ink_1.Text, { color: "cyan" },
|
|
69
|
-
connectedMcp,
|
|
70
|
-
"/",
|
|
71
|
-
mcpStatus.length)) : null)));
|
|
60
|
+
return (react_1.default.createElement(ink_1.Box, { width: usableWidth, justifyContent: "space-between" },
|
|
61
|
+
running ? (react_1.default.createElement(RunningHorseIndicator_1.RunningHorseIndicator, { label: (0, RunningHorseIndicator_1.runningHorseLabel)(statusMessage), maxWidth: leftMaxWidth })) : (react_1.default.createElement(ink_1.Text, { color: "gray", wrap: "truncate" }, leftText)),
|
|
62
|
+
react_1.default.createElement(ink_1.Text, { color: "gray", wrap: "truncate" }, rightDisplay)));
|
|
72
63
|
}
|
|
73
64
|
//# sourceMappingURL=StatusLine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusLine.js","sourceRoot":"","sources":["../../../src/ink-ui/components/StatusLine.tsx"],"names":[],"mappings":";;;;;AAyBA,
|
|
1
|
+
{"version":3,"file":"StatusLine.js","sourceRoot":"","sources":["../../../src/ink-ui/components/StatusLine.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,12 +2,14 @@ export interface TerminalCursorProps {
|
|
|
2
2
|
value: string;
|
|
3
3
|
terminalHeight: number;
|
|
4
4
|
terminalWidth: number;
|
|
5
|
+
cursor?: number;
|
|
6
|
+
maxRows?: number;
|
|
5
7
|
sticky?: boolean;
|
|
6
8
|
}
|
|
7
9
|
export declare function getPromptCursorPosition(value: string, terminalHeight: number, terminalWidth: number): {
|
|
8
10
|
row: number;
|
|
9
11
|
column: number;
|
|
10
12
|
};
|
|
11
|
-
export declare function getCursorRestoreDelays(
|
|
12
|
-
export declare function TerminalCursor({ value,
|
|
13
|
+
export declare function getCursorRestoreDelays(_sticky?: boolean): number[];
|
|
14
|
+
export declare function TerminalCursor({ value, terminalWidth, cursor, maxRows, sticky }: TerminalCursorProps): null;
|
|
13
15
|
//# sourceMappingURL=TerminalCursor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TerminalCursor.d.ts","sourceRoot":"","sources":["../../../src/ink-ui/components/TerminalCursor.tsx"],"names":[],"mappings":"AAKA,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;
|
|
1
|
+
{"version":3,"file":"TerminalCursor.d.ts","sourceRoot":"","sources":["../../../src/ink-ui/components/TerminalCursor.tsx"],"names":[],"mappings":"AAKA,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAID,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,GACpB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAgBjC;AAED,wBAAgB,sBAAsB,CAAC,OAAO,UAAQ,GAAG,MAAM,EAAE,CAEhE;AAED,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,MAAqB,EAAE,OAAW,EAAE,MAAc,EAAE,EAAE,mBAAmB,GAAG,IAAI,CAgBtI"}
|
|
@@ -7,12 +7,11 @@ exports.getPromptCursorPosition = getPromptCursorPosition;
|
|
|
7
7
|
exports.getCursorRestoreDelays = getCursorRestoreDelays;
|
|
8
8
|
exports.TerminalCursor = TerminalCursor;
|
|
9
9
|
const react_1 = require("react");
|
|
10
|
-
const ink_1 = require("ink");
|
|
11
10
|
const string_width_1 = __importDefault(require("string-width"));
|
|
12
11
|
const prompt_layout_1 = require("../runtime/prompt-layout");
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
12
|
+
const stdout_1 = require("../runtime/stdout");
|
|
13
|
+
const NORMAL_RESTORE_DELAYS_MS = [0];
|
|
14
|
+
const STICKY_RESTORE_DELAYS_MS = [0];
|
|
16
15
|
function getPromptCursorPosition(value, terminalHeight, terminalWidth) {
|
|
17
16
|
const lines = value.length > 0 ? value.split('\n') : [''];
|
|
18
17
|
const maxTextWidth = (0, prompt_layout_1.promptTextWidth)(terminalWidth);
|
|
@@ -29,46 +28,22 @@ function getPromptCursorPosition(value, terminalHeight, terminalWidth) {
|
|
|
29
28
|
column: Math.max(1, 3 + columnInContent),
|
|
30
29
|
};
|
|
31
30
|
}
|
|
32
|
-
function
|
|
33
|
-
|
|
34
|
-
stream.write(`\x1b[?25h\x1b[${position.row};${position.column}H`);
|
|
31
|
+
function getCursorRestoreDelays(_sticky = false) {
|
|
32
|
+
return NORMAL_RESTORE_DELAYS_MS;
|
|
35
33
|
}
|
|
36
|
-
function
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
value,
|
|
50
|
-
terminalHeight,
|
|
51
|
-
terminalWidth,
|
|
52
|
-
};
|
|
53
|
-
// Ink leaves the terminal cursor after the last rendered text. During streaming
|
|
54
|
-
// the footer can flush after the input box, so restore the cursor in a few
|
|
55
|
-
// closely-spaced passes rather than racing Ink with a single setTimeout(0).
|
|
56
|
-
(0, react_1.useEffect)(() => {
|
|
57
|
-
const timers = getCursorRestoreDelays(sticky).map(delay => setTimeout(() => {
|
|
58
|
-
const latest = latestRef.current;
|
|
59
|
-
writePromptCursor(latest.stream, latest.value, latest.terminalHeight, latest.terminalWidth);
|
|
60
|
-
}, delay));
|
|
61
|
-
return () => timers.forEach(timer => clearTimeout(timer));
|
|
62
|
-
});
|
|
63
|
-
(0, react_1.useEffect)(() => {
|
|
64
|
-
if (!sticky)
|
|
65
|
-
return undefined;
|
|
66
|
-
const interval = setInterval(() => {
|
|
67
|
-
const latest = latestRef.current;
|
|
68
|
-
writePromptCursor(latest.stream, latest.value, latest.terminalHeight, latest.terminalWidth);
|
|
69
|
-
}, STICKY_RESTORE_INTERVAL_MS);
|
|
70
|
-
return () => clearInterval(interval);
|
|
71
|
-
}, [sticky]);
|
|
34
|
+
function TerminalCursor({ value, terminalWidth, cursor = value.length, maxRows = 6, sticky = false }) {
|
|
35
|
+
(0, react_1.useLayoutEffect)(() => {
|
|
36
|
+
const viewport = (0, prompt_layout_1.getPromptInputViewport)(value, terminalWidth, maxRows, cursor);
|
|
37
|
+
(0, stdout_1.setPromptCursorState)({
|
|
38
|
+
enabled: true,
|
|
39
|
+
column: viewport.cursorColumn,
|
|
40
|
+
rowsUp: viewport.rowsUpFromPromptBottom,
|
|
41
|
+
});
|
|
42
|
+
(0, stdout_1.schedulePromptCursorRestore)();
|
|
43
|
+
return () => {
|
|
44
|
+
(0, stdout_1.disablePromptCursor)();
|
|
45
|
+
};
|
|
46
|
+
}, [sticky, value, terminalWidth, cursor, maxRows]);
|
|
72
47
|
return null;
|
|
73
48
|
}
|
|
74
49
|
//# sourceMappingURL=TerminalCursor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TerminalCursor.js","sourceRoot":"","sources":["../../../src/ink-ui/components/TerminalCursor.tsx"],"names":[],"mappings":";;;;;AAgBA,0DAoBC;
|
|
1
|
+
{"version":3,"file":"TerminalCursor.js","sourceRoot":"","sources":["../../../src/ink-ui/components/TerminalCursor.tsx"],"names":[],"mappings":";;;;;AAgBA,0DAoBC;AAED,wDAEC;AAED,wCAgBC;AA1DD,iCAAwC;AACxC,gEAAuC;AACvC,4DAAuG;AACvG,8CAA2G;AAW3G,MAAM,wBAAwB,GAAG,CAAC,CAAC,CAAC,CAAC;AACrC,MAAM,wBAAwB,GAAG,CAAC,CAAC,CAAC,CAAC;AACrC,SAAgB,uBAAuB,CACrC,KAAa,EACb,cAAsB,EACtB,aAAqB;IAErB,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1D,MAAM,YAAY,GAAG,IAAA,+BAAe,EAAC,aAAa,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAA,kCAAkB,EAAC,IAAI,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;IAC9E,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,GAAG,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC;IACzE,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,GAAG,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC;IACpF,MAAM,YAAY,GAAG,IAAA,kCAAkB,EAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAClE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAChE,MAAM,eAAe,GAAG,CAAC,GAAG,IAAA,sBAAW,EAAC,WAAW,CAAC,CAAC;IAErD,OAAO;QACL,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,GAAG,cAAc,GAAG,YAAY,GAAG,OAAO,CAAC;QAC1E,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC;KACzC,CAAC;AACJ,CAAC;AAED,SAAgB,sBAAsB,CAAC,OAAO,GAAG,KAAK;IACpD,OAAO,wBAAwB,CAAC;AAClC,CAAC;AAED,SAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,EAAuB;IAC9H,IAAA,uBAAe,EAAC,GAAG,EAAE;QACnB,MAAM,QAAQ,GAAG,IAAA,sCAAsB,EAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/E,IAAA,6BAAoB,EAAC;YACnB,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,QAAQ,CAAC,YAAY;YAC7B,MAAM,EAAE,QAAQ,CAAC,sBAAsB;SACxC,CAAC,CAAC;QACH,IAAA,oCAA2B,GAAE,CAAC;QAE9B,OAAO,GAAG,EAAE;YACV,IAAA,4BAAmB,GAAE,CAAC;QACxB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAEpD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { TranscriptEntry } from '../types';
|
|
2
|
+
export type ToolActivityState = 'running' | 'success' | 'error' | 'requested';
|
|
3
|
+
export interface ParsedToolActivity {
|
|
4
|
+
state: ToolActivityState;
|
|
5
|
+
name: string;
|
|
6
|
+
detail: string;
|
|
7
|
+
duration?: string;
|
|
8
|
+
error?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function truncateVisual(text: string, maxWidth: number): string;
|
|
11
|
+
export declare function parseToolActivity(content: string): ParsedToolActivity | null;
|
|
12
|
+
export declare function formatToolActivityLine(activity: ParsedToolActivity, width: number): string;
|
|
13
|
+
export declare function ToolActivityBlock({ entry, width }: {
|
|
14
|
+
entry: TranscriptEntry;
|
|
15
|
+
width?: number;
|
|
16
|
+
}): JSX.Element | null;
|
|
17
|
+
//# sourceMappingURL=ToolActivity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolActivity.d.ts","sourceRoot":"","sources":["../../../src/ink-ui/components/ToolActivity.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,CAAC;AAE9E,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,iBAAiB,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAcD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIrE;AAqBD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAwB5E;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAY1F;AAeD,wBAAgB,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAU,EAAE,EAAE;IAAE,KAAK,EAAE,eAAe,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAmBvH"}
|