openhorse 0.2.1 → 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/Markdown.d.ts +1 -0
- package/dist/ink-ui/components/Markdown.d.ts.map +1 -1
- package/dist/ink-ui/components/Markdown.js +25 -3
- package/dist/ink-ui/components/Markdown.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 +13 -0
- package/dist/ink-ui/components/RunningHorseIndicator.d.ts.map +1 -0
- package/dist/ink-ui/components/RunningHorseIndicator.js +52 -0
- package/dist/ink-ui/components/RunningHorseIndicator.js.map +1 -0
- 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 +24 -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
|
@@ -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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.truncateVisual = truncateVisual;
|
|
7
|
+
exports.parseToolActivity = parseToolActivity;
|
|
8
|
+
exports.formatToolActivityLine = formatToolActivityLine;
|
|
9
|
+
exports.ToolActivityBlock = ToolActivityBlock;
|
|
10
|
+
const react_1 = __importDefault(require("react"));
|
|
11
|
+
const ink_1 = require("ink");
|
|
12
|
+
const string_width_1 = __importDefault(require("string-width"));
|
|
13
|
+
function takeVisualWidth(text, maxWidth) {
|
|
14
|
+
if (maxWidth <= 0)
|
|
15
|
+
return '';
|
|
16
|
+
let result = '';
|
|
17
|
+
for (const char of text) {
|
|
18
|
+
const next = `${result}${char}`;
|
|
19
|
+
if ((0, string_width_1.default)(next) > maxWidth)
|
|
20
|
+
break;
|
|
21
|
+
result = next;
|
|
22
|
+
}
|
|
23
|
+
return result;
|
|
24
|
+
}
|
|
25
|
+
function truncateVisual(text, maxWidth) {
|
|
26
|
+
if ((0, string_width_1.default)(text) <= maxWidth)
|
|
27
|
+
return text;
|
|
28
|
+
if (maxWidth <= 3)
|
|
29
|
+
return takeVisualWidth(text, maxWidth);
|
|
30
|
+
return `${takeVisualWidth(text, maxWidth - 3)}...`;
|
|
31
|
+
}
|
|
32
|
+
function parseDoneActivity(firstLine, lines) {
|
|
33
|
+
const match = firstLine.match(/^([✓✗])\s+(\S+)(?:\s+(.*))?$/u);
|
|
34
|
+
if (!match)
|
|
35
|
+
return null;
|
|
36
|
+
const rawDetail = match[3] ?? '';
|
|
37
|
+
const durationMatch = rawDetail.match(/\s+\((\d+ms)\)$/);
|
|
38
|
+
const duration = durationMatch?.[1];
|
|
39
|
+
const detail = durationMatch ? rawDetail.slice(0, durationMatch.index).trim() : rawDetail.trim();
|
|
40
|
+
const errorLine = lines.slice(1).find(line => line.startsWith('Error:'));
|
|
41
|
+
return {
|
|
42
|
+
state: match[1] === '✓' ? 'success' : 'error',
|
|
43
|
+
name: match[2],
|
|
44
|
+
detail,
|
|
45
|
+
duration,
|
|
46
|
+
error: errorLine ? errorLine.slice('Error:'.length).trim() : undefined,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function parseToolActivity(content) {
|
|
50
|
+
const lines = content.split('\n');
|
|
51
|
+
const firstLine = lines[0]?.trim() ?? '';
|
|
52
|
+
if (!firstLine)
|
|
53
|
+
return null;
|
|
54
|
+
const running = firstLine.match(/^Running\s+(\S+)(?:\s+(.*))?$/u);
|
|
55
|
+
if (running) {
|
|
56
|
+
return {
|
|
57
|
+
state: 'running',
|
|
58
|
+
name: running[1],
|
|
59
|
+
detail: (running[2] ?? '').trim(),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
const requested = firstLine.match(/^Requested\s+(\S+)(?:\s+(.*))?$/u);
|
|
63
|
+
if (requested) {
|
|
64
|
+
return {
|
|
65
|
+
state: 'requested',
|
|
66
|
+
name: requested[1],
|
|
67
|
+
detail: (requested[2] ?? '').trim(),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
return parseDoneActivity(firstLine, lines);
|
|
71
|
+
}
|
|
72
|
+
function formatToolActivityLine(activity, width) {
|
|
73
|
+
const symbol = activity.state === 'running'
|
|
74
|
+
? '›'
|
|
75
|
+
: activity.state === 'success'
|
|
76
|
+
? '✓'
|
|
77
|
+
: activity.state === 'error'
|
|
78
|
+
? '✗'
|
|
79
|
+
: '•';
|
|
80
|
+
const duration = activity.duration ? ` (${activity.duration})` : '';
|
|
81
|
+
const prefix = `${symbol} ${activity.name}`;
|
|
82
|
+
const detail = activity.detail ? ` ${activity.detail}` : '';
|
|
83
|
+
return truncateVisual(`${prefix}${detail}${duration}`, width);
|
|
84
|
+
}
|
|
85
|
+
function stateColor(state) {
|
|
86
|
+
switch (state) {
|
|
87
|
+
case 'running':
|
|
88
|
+
return 'cyan';
|
|
89
|
+
case 'success':
|
|
90
|
+
return 'green';
|
|
91
|
+
case 'error':
|
|
92
|
+
return 'red';
|
|
93
|
+
case 'requested':
|
|
94
|
+
return 'gray';
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
function ToolActivityBlock({ entry, width = 80 }) {
|
|
98
|
+
const activity = parseToolActivity(entry.content);
|
|
99
|
+
if (!activity)
|
|
100
|
+
return null;
|
|
101
|
+
const contentWidth = Math.max(1, width - 2);
|
|
102
|
+
const line = formatToolActivityLine(activity, contentWidth);
|
|
103
|
+
return (react_1.default.createElement(ink_1.Box, { flexDirection: "column", marginBottom: 1 },
|
|
104
|
+
react_1.default.createElement(ink_1.Text, { color: stateColor(activity.state), wrap: "truncate" }, line),
|
|
105
|
+
activity.error ? (react_1.default.createElement(ink_1.Text, { color: "red", wrap: "truncate" }, truncateVisual(` Error: ${activity.error}`, contentWidth))) : null));
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=ToolActivity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolActivity.js","sourceRoot":"","sources":["../../../src/ink-ui/components/ToolActivity.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,12 @@ export interface TranscriptProps {
|
|
|
3
3
|
entries: TranscriptEntry[];
|
|
4
4
|
maxItems?: number;
|
|
5
5
|
width?: number;
|
|
6
|
+
emptyMessage?: string | null;
|
|
6
7
|
}
|
|
7
|
-
export declare function
|
|
8
|
+
export declare function renderTranscriptEntryText(entry: TranscriptEntry, width?: number): string;
|
|
9
|
+
export declare function TranscriptEntryBlock({ entry, width }: {
|
|
10
|
+
entry: TranscriptEntry;
|
|
11
|
+
width?: number;
|
|
12
|
+
}): JSX.Element;
|
|
13
|
+
export declare function Transcript({ entries, maxItems, width, emptyMessage }: TranscriptProps): JSX.Element;
|
|
8
14
|
//# sourceMappingURL=Transcript.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transcript.d.ts","sourceRoot":"","sources":["../../../src/ink-ui/components/Transcript.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"Transcript.d.ts","sourceRoot":"","sources":["../../../src/ink-ui/components/Transcript.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAKhD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAyCD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,SAAK,GAAG,MAAM,CAKpF;AAED,wBAAgB,oBAAoB,CAAC,EAAE,KAAK,EAAE,KAAU,EAAE,EAAE;IAAE,KAAK,EAAE,eAAe,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CA4BnH;AAED,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAU,EAAE,YAAoC,EAAE,EAAE,eAAe,GAAG,GAAG,CAAC,OAAO,CAgBhI"}
|
|
@@ -3,13 +3,21 @@ 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.renderTranscriptEntryText = renderTranscriptEntryText;
|
|
7
|
+
exports.TranscriptEntryBlock = TranscriptEntryBlock;
|
|
6
8
|
exports.Transcript = Transcript;
|
|
7
9
|
const react_1 = __importDefault(require("react"));
|
|
8
10
|
const ink_1 = require("ink");
|
|
9
11
|
const string_width_1 = __importDefault(require("string-width"));
|
|
10
12
|
const prompt_layout_1 = require("../runtime/prompt-layout");
|
|
11
13
|
const Markdown_1 = require("./Markdown");
|
|
14
|
+
const ToolActivity_1 = require("./ToolActivity");
|
|
12
15
|
const USER_BACKGROUND = '#50545c';
|
|
16
|
+
const ANSI_RESET_BG = '\x1b[49m';
|
|
17
|
+
const ANSI_RESET_FG = '\x1b[39m';
|
|
18
|
+
const ANSI_USER_BG = '\x1b[48;5;102m';
|
|
19
|
+
const ANSI_GRAY = '\x1b[90m';
|
|
20
|
+
const ANSI_RED = '\x1b[31m';
|
|
13
21
|
function padLine(line, width) {
|
|
14
22
|
const padding = Math.max(0, width - (0, string_width_1.default)(line));
|
|
15
23
|
return line + ' '.repeat(padding);
|
|
@@ -21,9 +29,38 @@ function transcriptLines(entry, width) {
|
|
|
21
29
|
}
|
|
22
30
|
return rawLines.flatMap(line => (0, prompt_layout_1.splitByVisualWidth)(line || ' ', width).map(chunk => padLine(chunk, width)));
|
|
23
31
|
}
|
|
24
|
-
function
|
|
25
|
-
|
|
32
|
+
function colorTranscriptLine(entry, line) {
|
|
33
|
+
if (entry.role === 'user' || entry.role === 'command') {
|
|
34
|
+
return `${ANSI_USER_BG}${line}${ANSI_RESET_BG}`;
|
|
35
|
+
}
|
|
36
|
+
if (entry.role === 'tool') {
|
|
37
|
+
return `${ANSI_GRAY}${line}${ANSI_RESET_FG}`;
|
|
38
|
+
}
|
|
39
|
+
if (entry.role === 'error') {
|
|
40
|
+
return `${ANSI_RED}${line}${ANSI_RESET_FG}`;
|
|
41
|
+
}
|
|
42
|
+
return line;
|
|
43
|
+
}
|
|
44
|
+
function renderTranscriptEntryText(entry, width = 80) {
|
|
26
45
|
const contentWidth = Math.max(1, width - 2);
|
|
27
|
-
return
|
|
46
|
+
return transcriptLines(entry, contentWidth)
|
|
47
|
+
.map(line => colorTranscriptLine(entry, line))
|
|
48
|
+
.join('\n');
|
|
49
|
+
}
|
|
50
|
+
function TranscriptEntryBlock({ entry, width = 80 }) {
|
|
51
|
+
const contentWidth = Math.max(1, width - 2);
|
|
52
|
+
const toolActivity = entry.role === 'tool' || entry.role === 'error'
|
|
53
|
+
? (0, ToolActivity_1.parseToolActivity)(entry.content)
|
|
54
|
+
: null;
|
|
55
|
+
if (toolActivity) {
|
|
56
|
+
return react_1.default.createElement(ToolActivity_1.ToolActivityBlock, { entry: entry, width: width });
|
|
57
|
+
}
|
|
58
|
+
return (react_1.default.createElement(ink_1.Box, { flexDirection: "column", marginBottom: 1 }, entry.role === 'assistant' || entry.role === 'system' || entry.role === 'status' ? (react_1.default.createElement(Markdown_1.Markdown, { width: contentWidth }, entry.content)) : (transcriptLines(entry, contentWidth).map((line, index) => (react_1.default.createElement(ink_1.Text, { key: index, color: entry.role === 'error' ? 'red' : entry.role === 'tool' ? 'gray' : undefined, backgroundColor: entry.role === 'user' || entry.role === 'command' ? USER_BACKGROUND : undefined, wrap: "truncate" }, line))))));
|
|
59
|
+
}
|
|
60
|
+
function Transcript({ entries, maxItems, width = 80, emptyMessage = 'OpenHorse is ready.' }) {
|
|
61
|
+
const visible = typeof maxItems === 'number'
|
|
62
|
+
? entries.slice(Math.max(0, entries.length - maxItems))
|
|
63
|
+
: entries;
|
|
64
|
+
return (react_1.default.createElement(ink_1.Box, { flexDirection: "column" }, visible.length === 0 ? (emptyMessage ? react_1.default.createElement(ink_1.Text, { color: "gray" }, emptyMessage) : null) : (visible.map(entry => (react_1.default.createElement(TranscriptEntryBlock, { key: entry.id, entry: entry, width: width }))))));
|
|
28
65
|
}
|
|
29
66
|
//# sourceMappingURL=Transcript.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transcript.js","sourceRoot":"","sources":["../../../src/ink-ui/components/Transcript.tsx"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"Transcript.js","sourceRoot":"","sources":["../../../src/ink-ui/components/Transcript.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,34 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import type { OpenHorseInkRuntime, UiEventSink } from '../types';
|
|
3
|
-
export interface AssistantStreamPresenter {
|
|
4
|
-
appendChunk(chunk: string): void;
|
|
5
|
-
closeSegment(): void;
|
|
6
|
-
ensureMessage(content: string): void;
|
|
7
|
-
}
|
|
8
|
-
export declare function createAssistantStreamPresenter(events: UiEventSink, abortSignal?: AbortSignal): AssistantStreamPresenter;
|
|
9
|
-
type ToolCallEvent = Extract<QueryEvent, {
|
|
10
|
-
type: 'tool_call';
|
|
11
|
-
}>;
|
|
12
|
-
type ToolResultEvent = Extract<QueryEvent, {
|
|
13
|
-
type: 'tool_result';
|
|
14
|
-
}>;
|
|
15
|
-
export interface ToolEventPresenter {
|
|
16
|
-
start(event: ToolCallEvent): void;
|
|
17
|
-
finish(event: ToolResultEvent): void;
|
|
18
|
-
}
|
|
19
|
-
export declare function createToolEventPresenter(events: UiEventSink): ToolEventPresenter;
|
|
20
|
-
export interface RunInputOptions {
|
|
21
|
-
abortSignal?: AbortSignal;
|
|
22
|
-
}
|
|
23
|
-
export declare class InkChatController {
|
|
24
|
-
private readonly runtime;
|
|
25
|
-
private readonly events;
|
|
26
|
-
constructor(runtime: OpenHorseInkRuntime, events: UiEventSink);
|
|
27
|
-
runInput(input: string, options?: RunInputOptions): Promise<void>;
|
|
28
|
-
private createCommandContext;
|
|
29
|
-
private runChat;
|
|
30
|
-
}
|
|
31
|
-
export declare function loadSessionIntoRuntime(runtime: OpenHorseInkRuntime, sessionId: string): string;
|
|
32
|
-
export declare function closeSession(runtime: OpenHorseInkRuntime): void;
|
|
33
|
-
export {};
|
|
1
|
+
export * from '../../runtime/chat-controller';
|
|
34
2
|
//# sourceMappingURL=chat-controller.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-controller.d.ts","sourceRoot":"","sources":["../../../src/ink-ui/controllers/chat-controller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chat-controller.d.ts","sourceRoot":"","sources":["../../../src/ink-ui/controllers/chat-controller.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC"}
|