openhorse 0.2.19 → 0.2.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/agents/coordinator.d.ts.map +1 -1
- package/dist/agents/fork.d.ts.map +1 -1
- package/dist/agents/fork.js +0 -1
- package/dist/agents/fork.js.map +1 -1
- package/dist/agents/worker-pool.d.ts.map +1 -1
- package/dist/agents/worker-pool.js +3 -1
- package/dist/agents/worker-pool.js.map +1 -1
- package/dist/cli.js +3 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +13 -28
- package/dist/commands/index.js.map +1 -1
- package/dist/core/checkpoint.d.ts.map +1 -1
- package/dist/core/checkpoint.js +3 -0
- package/dist/core/checkpoint.js.map +1 -1
- package/dist/framework/prompt.d.ts.map +1 -1
- package/dist/framework/prompt.js +16 -0
- package/dist/framework/prompt.js.map +1 -1
- package/dist/framework/query.d.ts.map +1 -1
- package/dist/framework/query.js +0 -7
- package/dist/framework/query.js.map +1 -1
- package/dist/harness/context-harness.d.ts.map +1 -1
- package/dist/harness/context-harness.js +6 -1
- package/dist/harness/context-harness.js.map +1 -1
- package/dist/harness/ledger.d.ts +1 -0
- package/dist/harness/ledger.d.ts.map +1 -1
- package/dist/harness/ledger.js +8 -0
- package/dist/harness/ledger.js.map +1 -1
- package/dist/harness/safety.d.ts +2 -0
- package/dist/harness/safety.d.ts.map +1 -1
- package/dist/harness/safety.js +27 -3
- package/dist/harness/safety.js.map +1 -1
- package/dist/init.d.ts +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +1 -1
- package/dist/init.js.map +1 -1
- package/dist/ink-ui/components/Markdown.d.ts +1 -1
- package/dist/ink-ui/components/Markdown.d.ts.map +1 -1
- package/dist/ink-ui/components/Markdown.js +1 -1
- package/dist/ink-ui/components/Markdown.js.map +1 -1
- package/dist/ink-ui/runtime/grapheme.d.ts +9 -8
- package/dist/ink-ui/runtime/grapheme.d.ts.map +1 -1
- package/dist/ink-ui/runtime/grapheme.js +14 -60
- package/dist/ink-ui/runtime/grapheme.js.map +1 -1
- package/dist/ink-ui/runtime/input-buffer.d.ts +9 -31
- package/dist/ink-ui/runtime/input-buffer.d.ts.map +1 -1
- package/dist/ink-ui/runtime/input-buffer.js +15 -162
- package/dist/ink-ui/runtime/input-buffer.js.map +1 -1
- package/dist/ink-ui/runtime/native-cursor.js +0 -25
- package/dist/ink-ui/runtime/native-cursor.js.map +1 -1
- package/dist/ink-ui/runtime/prompt-layout.d.ts +9 -29
- package/dist/ink-ui/runtime/prompt-layout.d.ts.map +1 -1
- package/dist/ink-ui/runtime/prompt-layout.js +18 -166
- package/dist/ink-ui/runtime/prompt-layout.js.map +1 -1
- package/dist/ink-ui/runtime/transcript-state.d.ts.map +1 -1
- package/dist/ink-ui/runtime/transcript-state.js +2 -0
- package/dist/ink-ui/runtime/transcript-state.js.map +1 -1
- package/dist/ink-ui/screens/ReplScreen.d.ts.map +1 -1
- package/dist/ink-ui/screens/ReplScreen.js +11 -0
- package/dist/ink-ui/screens/ReplScreen.js.map +1 -1
- package/dist/memory/entrypoint.js +1 -1
- package/dist/memory/entrypoint.js.map +1 -1
- package/dist/memory/storage.js +1 -1
- package/dist/memory/storage.js.map +1 -1
- package/dist/memory/store.d.ts +1 -0
- package/dist/memory/store.d.ts.map +1 -1
- package/dist/memory/store.js +9 -0
- package/dist/memory/store.js.map +1 -1
- package/dist/runtime/agent-runtime-controller.d.ts.map +1 -1
- package/dist/runtime/agent-runtime-controller.js +15 -0
- package/dist/runtime/agent-runtime-controller.js.map +1 -1
- package/dist/runtime/agent-runtime-protocol.d.ts +4 -1
- package/dist/runtime/agent-runtime-protocol.d.ts.map +1 -1
- package/dist/runtime/agent-runtime-protocol.js +6 -0
- package/dist/runtime/agent-runtime-protocol.js.map +1 -1
- package/dist/runtime/chat-controller.d.ts +27 -0
- package/dist/runtime/chat-controller.d.ts.map +1 -1
- package/dist/runtime/chat-controller.js +148 -5
- package/dist/runtime/chat-controller.js.map +1 -1
- package/dist/runtime/composer/buffer.d.ts +43 -0
- package/dist/runtime/composer/buffer.d.ts.map +1 -0
- package/dist/runtime/composer/buffer.js +176 -0
- package/dist/runtime/composer/buffer.js.map +1 -0
- package/dist/runtime/composer/grapheme.d.ts +19 -0
- package/dist/runtime/composer/grapheme.d.ts.map +1 -0
- package/dist/runtime/composer/grapheme.js +73 -0
- package/dist/runtime/composer/grapheme.js.map +1 -0
- package/dist/runtime/composer/history.d.ts +39 -0
- package/dist/runtime/composer/history.d.ts.map +1 -0
- package/dist/runtime/composer/history.js +91 -0
- package/dist/runtime/composer/history.js.map +1 -0
- package/dist/runtime/composer/layout.d.ts +40 -0
- package/dist/runtime/composer/layout.d.ts.map +1 -0
- package/dist/runtime/composer/layout.js +174 -0
- package/dist/runtime/composer/layout.js.map +1 -0
- package/dist/runtime/rich-text/ansi-parser.d.ts +31 -0
- package/dist/runtime/rich-text/ansi-parser.d.ts.map +1 -0
- package/dist/runtime/rich-text/ansi-parser.js +272 -0
- package/dist/runtime/rich-text/ansi-parser.js.map +1 -0
- package/dist/runtime/rich-text/layout.d.ts +21 -0
- package/dist/runtime/rich-text/layout.d.ts.map +1 -0
- package/dist/runtime/rich-text/layout.js +327 -0
- package/dist/runtime/rich-text/layout.js.map +1 -0
- package/dist/runtime/rich-text/markdown-parser.d.ts +17 -0
- package/dist/runtime/rich-text/markdown-parser.d.ts.map +1 -0
- package/dist/runtime/rich-text/markdown-parser.js +211 -0
- package/dist/runtime/rich-text/markdown-parser.js.map +1 -0
- package/dist/runtime/rich-text/sanitizer.d.ts +18 -0
- package/dist/runtime/rich-text/sanitizer.d.ts.map +1 -0
- package/dist/runtime/rich-text/sanitizer.js +32 -0
- package/dist/runtime/rich-text/sanitizer.js.map +1 -0
- package/dist/runtime/rich-text/types.d.ts +59 -0
- package/dist/runtime/rich-text/types.d.ts.map +1 -0
- package/dist/runtime/rich-text/types.js +17 -0
- package/dist/runtime/rich-text/types.js.map +1 -0
- package/dist/runtime/subagents/budget.d.ts +118 -0
- package/dist/runtime/subagents/budget.d.ts.map +1 -0
- package/dist/runtime/subagents/budget.js +173 -0
- package/dist/runtime/subagents/budget.js.map +1 -0
- package/dist/runtime/subagents/child-executor-guard.d.ts +60 -0
- package/dist/runtime/subagents/child-executor-guard.d.ts.map +1 -0
- package/dist/runtime/subagents/child-executor-guard.js +219 -0
- package/dist/runtime/subagents/child-executor-guard.js.map +1 -0
- package/dist/runtime/subagents/context-builder.d.ts +34 -0
- package/dist/runtime/subagents/context-builder.d.ts.map +1 -0
- package/dist/runtime/subagents/context-builder.js +99 -0
- package/dist/runtime/subagents/context-builder.js.map +1 -0
- package/dist/runtime/subagents/index.d.ts +21 -0
- package/dist/runtime/subagents/index.d.ts.map +1 -0
- package/dist/runtime/subagents/index.js +62 -0
- package/dist/runtime/subagents/index.js.map +1 -0
- package/dist/runtime/subagents/policy.d.ts +68 -0
- package/dist/runtime/subagents/policy.d.ts.map +1 -0
- package/dist/runtime/subagents/policy.js +230 -0
- package/dist/runtime/subagents/policy.js.map +1 -0
- package/dist/runtime/subagents/presets.d.ts +44 -0
- package/dist/runtime/subagents/presets.d.ts.map +1 -0
- package/dist/runtime/subagents/presets.js +148 -0
- package/dist/runtime/subagents/presets.js.map +1 -0
- package/dist/runtime/subagents/production.d.ts +44 -0
- package/dist/runtime/subagents/production.d.ts.map +1 -0
- package/dist/runtime/subagents/production.js +118 -0
- package/dist/runtime/subagents/production.js.map +1 -0
- package/dist/runtime/subagents/provider-gate.d.ts +99 -0
- package/dist/runtime/subagents/provider-gate.d.ts.map +1 -0
- package/dist/runtime/subagents/provider-gate.js +186 -0
- package/dist/runtime/subagents/provider-gate.js.map +1 -0
- package/dist/runtime/subagents/result-parser.d.ts +40 -0
- package/dist/runtime/subagents/result-parser.d.ts.map +1 -0
- package/dist/runtime/subagents/result-parser.js +226 -0
- package/dist/runtime/subagents/result-parser.js.map +1 -0
- package/dist/runtime/subagents/runner.d.ts +53 -0
- package/dist/runtime/subagents/runner.d.ts.map +1 -0
- package/dist/runtime/subagents/runner.js +172 -0
- package/dist/runtime/subagents/runner.js.map +1 -0
- package/dist/runtime/subagents/runtime-integration.d.ts +73 -0
- package/dist/runtime/subagents/runtime-integration.d.ts.map +1 -0
- package/dist/runtime/subagents/runtime-integration.js +148 -0
- package/dist/runtime/subagents/runtime-integration.js.map +1 -0
- package/dist/runtime/subagents/supervisor.d.ts +79 -0
- package/dist/runtime/subagents/supervisor.d.ts.map +1 -0
- package/dist/runtime/subagents/supervisor.js +301 -0
- package/dist/runtime/subagents/supervisor.js.map +1 -0
- package/dist/runtime/subagents/tool.d.ts +38 -0
- package/dist/runtime/subagents/tool.d.ts.map +1 -0
- package/dist/runtime/subagents/tool.js +171 -0
- package/dist/runtime/subagents/tool.js.map +1 -0
- package/dist/runtime/subagents/types.d.ts +150 -0
- package/dist/runtime/subagents/types.d.ts.map +1 -0
- package/dist/runtime/subagents/types.js +52 -0
- package/dist/runtime/subagents/types.js.map +1 -0
- package/dist/runtime/ui-events.d.ts +5 -0
- package/dist/runtime/ui-events.d.ts.map +1 -1
- package/dist/runtime/ui-events.js.map +1 -1
- package/dist/runtime/ui-view-model.d.ts +35 -1
- package/dist/runtime/ui-view-model.d.ts.map +1 -1
- package/dist/runtime/ui-view-model.js +32 -1
- package/dist/runtime/ui-view-model.js.map +1 -1
- package/dist/sdk/query.d.ts.map +1 -1
- package/dist/sdk/query.js +0 -1
- package/dist/sdk/query.js.map +1 -1
- package/dist/services/auto-fix/autoFixHook.d.ts.map +1 -1
- package/dist/services/auto-fix/autoFixHook.js +3 -2
- package/dist/services/auto-fix/autoFixHook.js.map +1 -1
- package/dist/services/auto-fix/autoFixRunner.d.ts +2 -2
- package/dist/services/auto-fix/autoFixRunner.d.ts.map +1 -1
- package/dist/services/auto-fix/autoFixRunner.js +2 -2
- package/dist/services/auto-fix/autoFixRunner.js.map +1 -1
- package/dist/services/compact/auto-compact.js +3 -3
- package/dist/services/compact/auto-compact.js.map +1 -1
- package/dist/services/compact/summary-generator.d.ts.map +1 -1
- package/dist/services/compact/summary-generator.js +0 -1
- package/dist/services/compact/summary-generator.js.map +1 -1
- package/dist/services/concurrent-sessions.d.ts.map +1 -1
- package/dist/services/concurrent-sessions.js +3 -0
- package/dist/services/concurrent-sessions.js.map +1 -1
- package/dist/services/config.d.ts +11 -4
- package/dist/services/config.d.ts.map +1 -1
- package/dist/services/config.js +45 -4
- package/dist/services/config.js.map +1 -1
- package/dist/services/doctor.d.ts.map +1 -1
- package/dist/services/doctor.js +1 -1
- package/dist/services/doctor.js.map +1 -1
- package/dist/services/global-config.d.ts +23 -1
- package/dist/services/global-config.d.ts.map +1 -1
- package/dist/services/global-config.js +3 -0
- package/dist/services/global-config.js.map +1 -1
- package/dist/services/llm.d.ts.map +1 -1
- package/dist/services/llm.js +9 -1
- package/dist/services/llm.js.map +1 -1
- package/dist/services/mcp/transports.d.ts +2 -0
- package/dist/services/mcp/transports.d.ts.map +1 -1
- package/dist/services/mcp/transports.js +23 -2
- package/dist/services/mcp/transports.js.map +1 -1
- package/dist/services/memory.d.ts.map +1 -1
- package/dist/services/memory.js.map +1 -1
- package/dist/services/model-context.d.ts.map +1 -1
- package/dist/services/model-context.js +7 -1
- package/dist/services/model-context.js.map +1 -1
- package/dist/services/session-memory/sessionMemory.js +1 -1
- package/dist/services/session-memory/sessionMemory.js.map +1 -1
- package/dist/services/session-storage.d.ts +1 -1
- package/dist/services/session-storage.d.ts.map +1 -1
- package/dist/services/session-storage.js +38 -4
- package/dist/services/session-storage.js.map +1 -1
- package/dist/services/task-manager.d.ts +2 -0
- package/dist/services/task-manager.d.ts.map +1 -1
- package/dist/services/task-manager.js +13 -0
- package/dist/services/task-manager.js.map +1 -1
- package/dist/services/usage-state.d.ts.map +1 -1
- package/dist/services/usage-state.js +3 -0
- package/dist/services/usage-state.js.map +1 -1
- package/dist/skills/loader.d.ts +1 -1
- package/dist/skills/loader.d.ts.map +1 -1
- package/dist/skills/loader.js +1 -1
- package/dist/skills/loader.js.map +1 -1
- package/dist/skills/registry.d.ts +1 -1
- package/dist/skills/registry.d.ts.map +1 -1
- package/dist/skills/registry.js +1 -1
- package/dist/skills/registry.js.map +1 -1
- package/dist/terminal-ui/launch.d.ts +18 -3
- package/dist/terminal-ui/launch.d.ts.map +1 -1
- package/dist/terminal-ui/launch.js +21 -4
- package/dist/terminal-ui/launch.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +3 -4
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/lsp.js.map +1 -1
- package/dist/tools/web.js +3 -3
- package/dist/tools/web.js.map +1 -1
- package/dist/tui-core/frame.d.ts +13 -1
- package/dist/tui-core/frame.d.ts.map +1 -1
- package/dist/tui-core/frame.js +61 -8
- package/dist/tui-core/frame.js.map +1 -1
- package/dist/tui-core/style.d.ts +87 -0
- package/dist/tui-core/style.d.ts.map +1 -0
- package/dist/tui-core/style.js +248 -0
- package/dist/tui-core/style.js.map +1 -0
- package/dist/tui-core/terminal-writer.d.ts.map +1 -1
- package/dist/tui-core/terminal-writer.js +16 -3
- package/dist/tui-core/terminal-writer.js.map +1 -1
- package/dist/tui-ui/inline-surface.d.ts +134 -0
- package/dist/tui-ui/inline-surface.d.ts.map +1 -0
- package/dist/tui-ui/inline-surface.js +364 -0
- package/dist/tui-ui/inline-surface.js.map +1 -0
- package/dist/tui-ui/launch.d.ts.map +1 -1
- package/dist/tui-ui/launch.js +249 -64
- package/dist/tui-ui/launch.js.map +1 -1
- package/dist/tui-ui/layout.js +15 -2
- package/dist/tui-ui/layout.js.map +1 -1
- package/dist/tui-ui/render-scheduler.d.ts +37 -0
- package/dist/tui-ui/render-scheduler.d.ts.map +1 -0
- package/dist/tui-ui/render-scheduler.js +118 -0
- package/dist/tui-ui/render-scheduler.js.map +1 -0
- package/dist/tui-ui/runner.d.ts +12 -0
- package/dist/tui-ui/runner.d.ts.map +1 -1
- package/dist/tui-ui/runner.js +34 -2
- package/dist/tui-ui/runner.js.map +1 -1
- package/dist/tui-ui/state.d.ts +33 -3
- package/dist/tui-ui/state.d.ts.map +1 -1
- package/dist/tui-ui/state.js +138 -25
- package/dist/tui-ui/state.js.map +1 -1
- package/dist/tui-ui/transcript-cache.d.ts +33 -0
- package/dist/tui-ui/transcript-cache.d.ts.map +1 -0
- package/dist/tui-ui/transcript-cache.js +67 -0
- package/dist/tui-ui/transcript-cache.js.map +1 -0
- package/dist/ui/box.d.ts.map +1 -1
- package/dist/ui/box.js +0 -11
- package/dist/ui/box.js.map +1 -1
- package/dist/ui/command-panel.d.ts.map +1 -1
- package/dist/ui/command-panel.js +1 -3
- package/dist/ui/command-panel.js.map +1 -1
- package/dist/ui/file-completion.js +1 -1
- package/dist/ui/file-completion.js.map +1 -1
- package/dist/ui/markdown.d.ts.map +1 -1
- package/dist/ui/markdown.js +1 -2
- package/dist/ui/markdown.js.map +1 -1
- package/dist/ui/multiline-input.d.ts.map +1 -1
- package/dist/ui/multiline-input.js +1 -2
- package/dist/ui/multiline-input.js.map +1 -1
- package/dist/ui/progress.d.ts.map +1 -1
- package/dist/ui/progress.js +0 -3
- package/dist/ui/progress.js.map +1 -1
- package/dist/ui/status-bar.d.ts.map +1 -1
- package/dist/ui/status-bar.js +0 -1
- package/dist/ui/status-bar.js.map +1 -1
- package/dist/ui/stream-markdown.d.ts +3 -0
- package/dist/ui/stream-markdown.d.ts.map +1 -1
- package/dist/ui/stream-markdown.js +0 -6
- package/dist/ui/stream-markdown.js.map +1 -1
- package/dist/ui/tool-preview.d.ts.map +1 -1
- package/dist/ui/tool-preview.js +0 -1
- package/dist/ui/tool-preview.js.map +1 -1
- package/package.json +1 -1
- package/dist/cli-dbg.js +0 -717
- package/dist/cli-debug.d.ts +0 -7
- package/dist/cli-debug.d.ts.map +0 -1
- package/dist/cli-debug.js +0 -717
- package/dist/cli-debug.js.map +0 -1
- package/dist/cli-debug2.d.ts +0 -7
- package/dist/cli-debug2.d.ts.map +0 -1
- package/dist/cli-debug2.js +0 -717
- package/dist/cli-debug2.js.map +0 -1
- package/dist/cli-debug3.d.ts +0 -7
- package/dist/cli-debug3.d.ts.map +0 -1
- package/dist/cli-debug3.js +0 -719
- package/dist/cli-debug3.js.map +0 -1
- package/dist/cli-ink.d.ts +0 -8
- package/dist/cli-ink.d.ts.map +0 -1
- package/dist/cli-ink.js +0 -32
- package/dist/cli-ink.js.map +0 -1
- package/dist/cli-patch.js +0 -716
- package/dist/cli-test.js +0 -726
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Shared grapheme segmentation utilities.
|
|
4
|
+
*
|
|
5
|
+
* Migrated from `src/ink-ui/runtime/grapheme.ts` to provide a
|
|
6
|
+
* renderer-independent grapheme boundary API. Ink re-exports from
|
|
7
|
+
* here; TUI imports directly.
|
|
8
|
+
*
|
|
9
|
+
* Grapheme boundaries are the atomic unit of cursor movement, deletion
|
|
10
|
+
* and visual width in both Ink and TUI prompt input.
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.segmentGraphemes = segmentGraphemes;
|
|
14
|
+
exports.previousGraphemeBoundary = previousGraphemeBoundary;
|
|
15
|
+
exports.nextGraphemeBoundary = nextGraphemeBoundary;
|
|
16
|
+
exports.floorGraphemeBoundary = floorGraphemeBoundary;
|
|
17
|
+
function segmentGraphemes(value) {
|
|
18
|
+
const SegmenterCtor = Intl.Segmenter;
|
|
19
|
+
if (typeof SegmenterCtor === 'function') {
|
|
20
|
+
try {
|
|
21
|
+
return Array.from(new SegmenterCtor(undefined, { granularity: 'grapheme' }).segment(value));
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
// Fall back to code point segmentation below.
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
const segments = [];
|
|
28
|
+
for (let index = 0; index < value.length;) {
|
|
29
|
+
const codePoint = value.codePointAt(index);
|
|
30
|
+
const segment = codePoint === undefined ? '' : String.fromCodePoint(codePoint);
|
|
31
|
+
if (!segment)
|
|
32
|
+
break;
|
|
33
|
+
segments.push({ segment, index });
|
|
34
|
+
index += segment.length;
|
|
35
|
+
}
|
|
36
|
+
return segments;
|
|
37
|
+
}
|
|
38
|
+
function previousGraphemeBoundary(value, cursor) {
|
|
39
|
+
const current = Math.min(Math.max(0, Math.floor(cursor)), value.length);
|
|
40
|
+
let previous = 0;
|
|
41
|
+
for (const part of segmentGraphemes(value)) {
|
|
42
|
+
if (part.index >= current)
|
|
43
|
+
break;
|
|
44
|
+
previous = part.index;
|
|
45
|
+
}
|
|
46
|
+
return previous;
|
|
47
|
+
}
|
|
48
|
+
function nextGraphemeBoundary(value, cursor) {
|
|
49
|
+
const current = Math.min(Math.max(0, Math.floor(cursor)), value.length);
|
|
50
|
+
if (current >= value.length)
|
|
51
|
+
return value.length;
|
|
52
|
+
for (const part of segmentGraphemes(value)) {
|
|
53
|
+
const end = part.index + part.segment.length;
|
|
54
|
+
if (end > current)
|
|
55
|
+
return end;
|
|
56
|
+
}
|
|
57
|
+
return value.length;
|
|
58
|
+
}
|
|
59
|
+
function floorGraphemeBoundary(value, cursor) {
|
|
60
|
+
const current = Math.min(Math.max(0, Math.floor(cursor)), value.length);
|
|
61
|
+
if (current >= value.length)
|
|
62
|
+
return value.length;
|
|
63
|
+
for (const part of segmentGraphemes(value)) {
|
|
64
|
+
const end = part.index + part.segment.length;
|
|
65
|
+
if (current < part.index)
|
|
66
|
+
break;
|
|
67
|
+
if (current <= end) {
|
|
68
|
+
return current === end ? end : part.index;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return value.length;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=grapheme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grapheme.js","sourceRoot":"","sources":["../../../src/runtime/composer/grapheme.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Input history for the shared composer.
|
|
3
|
+
*
|
|
4
|
+
* v0.2.21: provides in-memory input history with deduplication and
|
|
5
|
+
* a bounded LRU-like size limit. Not persisted to disk in v0.2.21.
|
|
6
|
+
*
|
|
7
|
+
* The history is only written on non-empty submit. Consecutive duplicate
|
|
8
|
+
* entries are collapsed. When navigating history, a draft of the current
|
|
9
|
+
* input is preserved and restored when returning to the present.
|
|
10
|
+
*/
|
|
11
|
+
export interface InputHistoryState {
|
|
12
|
+
entries: string[];
|
|
13
|
+
/** Index into entries, or null when at the present (draft). */
|
|
14
|
+
index: number | null;
|
|
15
|
+
/** Saved draft before first history navigation. */
|
|
16
|
+
draft: string;
|
|
17
|
+
}
|
|
18
|
+
export declare const MAX_HISTORY_ENTRIES = 100;
|
|
19
|
+
export declare const initialHistoryState: InputHistoryState;
|
|
20
|
+
/**
|
|
21
|
+
* Push a submitted value into history. Deduplicates consecutive identical
|
|
22
|
+
* entries. Trims to MAX_HISTORY_ENTRIES from the front (oldest evicted).
|
|
23
|
+
*/
|
|
24
|
+
export declare function pushHistoryEntry(state: InputHistoryState, value: string): InputHistoryState;
|
|
25
|
+
/**
|
|
26
|
+
* Navigate to the previous (older) history entry.
|
|
27
|
+
* Saves the current draft before first navigation.
|
|
28
|
+
*/
|
|
29
|
+
export declare function historyPrevious(state: InputHistoryState, currentDraft: string): InputHistoryState;
|
|
30
|
+
/**
|
|
31
|
+
* Navigate to the next (newer) history entry.
|
|
32
|
+
* Returns to draft when reaching the end.
|
|
33
|
+
*/
|
|
34
|
+
export declare function historyNext(state: InputHistoryState): InputHistoryState;
|
|
35
|
+
/**
|
|
36
|
+
* Get the value to display at the current history position.
|
|
37
|
+
*/
|
|
38
|
+
export declare function historyCurrentValue(state: InputHistoryState, currentDraft: string): string;
|
|
39
|
+
//# sourceMappingURL=history.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../../src/runtime/composer/history.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,+DAA+D;IAC/D,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC,eAAO,MAAM,mBAAmB,EAAE,iBAIjC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAe3F;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,GAAG,iBAAiB,CAYjG;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,iBAAiB,GAAG,iBAAiB,CAkBvE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAG1F"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Input history for the shared composer.
|
|
4
|
+
*
|
|
5
|
+
* v0.2.21: provides in-memory input history with deduplication and
|
|
6
|
+
* a bounded LRU-like size limit. Not persisted to disk in v0.2.21.
|
|
7
|
+
*
|
|
8
|
+
* The history is only written on non-empty submit. Consecutive duplicate
|
|
9
|
+
* entries are collapsed. When navigating history, a draft of the current
|
|
10
|
+
* input is preserved and restored when returning to the present.
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.initialHistoryState = exports.MAX_HISTORY_ENTRIES = void 0;
|
|
14
|
+
exports.pushHistoryEntry = pushHistoryEntry;
|
|
15
|
+
exports.historyPrevious = historyPrevious;
|
|
16
|
+
exports.historyNext = historyNext;
|
|
17
|
+
exports.historyCurrentValue = historyCurrentValue;
|
|
18
|
+
exports.MAX_HISTORY_ENTRIES = 100;
|
|
19
|
+
exports.initialHistoryState = {
|
|
20
|
+
entries: [],
|
|
21
|
+
index: null,
|
|
22
|
+
draft: '',
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Push a submitted value into history. Deduplicates consecutive identical
|
|
26
|
+
* entries. Trims to MAX_HISTORY_ENTRIES from the front (oldest evicted).
|
|
27
|
+
*/
|
|
28
|
+
function pushHistoryEntry(state, value) {
|
|
29
|
+
if (!value)
|
|
30
|
+
return state;
|
|
31
|
+
// Deduplicate consecutive identical.
|
|
32
|
+
const entries = state.entries[state.entries.length - 1] === value
|
|
33
|
+
? state.entries
|
|
34
|
+
: [...state.entries, value];
|
|
35
|
+
// Bound size.
|
|
36
|
+
const trimmed = entries.length > exports.MAX_HISTORY_ENTRIES
|
|
37
|
+
? entries.slice(entries.length - exports.MAX_HISTORY_ENTRIES)
|
|
38
|
+
: entries;
|
|
39
|
+
return {
|
|
40
|
+
entries: trimmed,
|
|
41
|
+
index: null,
|
|
42
|
+
draft: '',
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Navigate to the previous (older) history entry.
|
|
47
|
+
* Saves the current draft before first navigation.
|
|
48
|
+
*/
|
|
49
|
+
function historyPrevious(state, currentDraft) {
|
|
50
|
+
if (state.entries.length === 0)
|
|
51
|
+
return state;
|
|
52
|
+
const draft = state.index === null ? currentDraft : state.draft;
|
|
53
|
+
const currentIndex = state.index ?? state.entries.length;
|
|
54
|
+
const newIndex = currentIndex > 0 ? currentIndex - 1 : 0;
|
|
55
|
+
return {
|
|
56
|
+
entries: state.entries,
|
|
57
|
+
index: newIndex,
|
|
58
|
+
draft,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Navigate to the next (newer) history entry.
|
|
63
|
+
* Returns to draft when reaching the end.
|
|
64
|
+
*/
|
|
65
|
+
function historyNext(state) {
|
|
66
|
+
if (state.index === null)
|
|
67
|
+
return state;
|
|
68
|
+
const newIndex = state.index + 1;
|
|
69
|
+
if (newIndex >= state.entries.length) {
|
|
70
|
+
// Back to present — restore draft.
|
|
71
|
+
return {
|
|
72
|
+
entries: state.entries,
|
|
73
|
+
index: null,
|
|
74
|
+
draft: state.draft,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
return {
|
|
78
|
+
entries: state.entries,
|
|
79
|
+
index: newIndex,
|
|
80
|
+
draft: state.draft,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Get the value to display at the current history position.
|
|
85
|
+
*/
|
|
86
|
+
function historyCurrentValue(state, currentDraft) {
|
|
87
|
+
if (state.index === null)
|
|
88
|
+
return state.draft || currentDraft;
|
|
89
|
+
return state.entries[state.index] ?? currentDraft;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../../src/runtime/composer/history.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAsBH,4CAeC;AAMD,0CAYC;AAMD,kCAkBC;AAKD,kDAGC;AA7EY,QAAA,mBAAmB,GAAG,GAAG,CAAC;AAE1B,QAAA,mBAAmB,GAAsB;IACpD,OAAO,EAAE,EAAE;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,EAAE;CACV,CAAC;AAEF;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,KAAwB,EAAE,KAAa;IACtE,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,qCAAqC;IACrC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,KAAK;QAC/D,CAAC,CAAC,KAAK,CAAC,OAAO;QACf,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC9B,cAAc;IACd,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,2BAAmB;QAClD,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,2BAAmB,CAAC;QACrD,CAAC,CAAC,OAAO,CAAC;IACZ,OAAO;QACL,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,EAAE;KACV,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAAC,KAAwB,EAAE,YAAoB;IAC5E,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAE7C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;IAChE,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;IACzD,MAAM,QAAQ,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzD,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,KAAK,EAAE,QAAQ;QACf,KAAK;KACN,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAgB,WAAW,CAAC,KAAwB;IAClD,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAEvC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;IACjC,IAAI,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACrC,mCAAmC;QACnC,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,KAAwB,EAAE,YAAoB;IAChF,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC,KAAK,IAAI,YAAY,CAAC;IAC7D,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared prompt layout utilities.
|
|
3
|
+
*
|
|
4
|
+
* Migrated from `src/ink-ui/runtime/prompt-layout.ts` to provide a
|
|
5
|
+
* renderer-independent visual-line wrapping and viewport calculation.
|
|
6
|
+
* Ink re-exports from here; TUI imports directly.
|
|
7
|
+
*
|
|
8
|
+
* All width calculations use `string-width` for CJK/emoji correctness.
|
|
9
|
+
* Cursor positioning respects grapheme boundaries.
|
|
10
|
+
*/
|
|
11
|
+
export interface PromptVisualLine {
|
|
12
|
+
logicalIndex: number;
|
|
13
|
+
wrapIndex: number;
|
|
14
|
+
content: string;
|
|
15
|
+
start: number;
|
|
16
|
+
end: number;
|
|
17
|
+
}
|
|
18
|
+
export interface PromptInputViewport {
|
|
19
|
+
lines: PromptVisualLine[];
|
|
20
|
+
hiddenRows: number;
|
|
21
|
+
showHiddenIndicator: boolean;
|
|
22
|
+
cursorLineIndex: number;
|
|
23
|
+
cursorColumn: number;
|
|
24
|
+
rowsUpFromPromptBottom: number;
|
|
25
|
+
}
|
|
26
|
+
export declare const PROMPT_CURSOR_GLYPH = "\u258C";
|
|
27
|
+
export declare function promptContentWidth(width: number): number;
|
|
28
|
+
export declare function promptTextWidth(width: number): number;
|
|
29
|
+
export declare function splitByVisualWidth(text: string, maxWidth: number): string[];
|
|
30
|
+
export declare function getPromptVisualLines(value: string, width: number): PromptVisualLine[];
|
|
31
|
+
export declare function getVisiblePromptVisualLines(value: string, width: number, maxRows: number): {
|
|
32
|
+
lines: PromptVisualLine[];
|
|
33
|
+
hiddenRows: number;
|
|
34
|
+
};
|
|
35
|
+
export declare function getPromptInputViewport(value: string, width: number, maxRows: number, cursor?: number): PromptInputViewport;
|
|
36
|
+
export declare function formatPromptVisualLine(visualLine: PromptVisualLine, width: number, options?: {
|
|
37
|
+
showCursor?: boolean;
|
|
38
|
+
cursorOffset?: number;
|
|
39
|
+
}): string;
|
|
40
|
+
//# sourceMappingURL=layout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../src/runtime/composer/layout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAOD,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,eAAO,MAAM,mBAAmB,WAAM,CAAC;AAEvC,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAkB3E;AAwBD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAErF;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd;IAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAYnD;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,MAAqB,GAC5B,mBAAmB,CAyBrB;AA+DD,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,gBAAgB,EAC5B,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GAC5D,MAAM,CAoBR"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Shared prompt layout utilities.
|
|
4
|
+
*
|
|
5
|
+
* Migrated from `src/ink-ui/runtime/prompt-layout.ts` to provide a
|
|
6
|
+
* renderer-independent visual-line wrapping and viewport calculation.
|
|
7
|
+
* Ink re-exports from here; TUI imports directly.
|
|
8
|
+
*
|
|
9
|
+
* All width calculations use `string-width` for CJK/emoji correctness.
|
|
10
|
+
* Cursor positioning respects grapheme boundaries.
|
|
11
|
+
*/
|
|
12
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
13
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
14
|
+
};
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.PROMPT_CURSOR_GLYPH = void 0;
|
|
17
|
+
exports.promptContentWidth = promptContentWidth;
|
|
18
|
+
exports.promptTextWidth = promptTextWidth;
|
|
19
|
+
exports.splitByVisualWidth = splitByVisualWidth;
|
|
20
|
+
exports.getPromptVisualLines = getPromptVisualLines;
|
|
21
|
+
exports.getVisiblePromptVisualLines = getVisiblePromptVisualLines;
|
|
22
|
+
exports.getPromptInputViewport = getPromptInputViewport;
|
|
23
|
+
exports.formatPromptVisualLine = formatPromptVisualLine;
|
|
24
|
+
const string_width_1 = __importDefault(require("string-width"));
|
|
25
|
+
const grapheme_1 = require("./grapheme");
|
|
26
|
+
exports.PROMPT_CURSOR_GLYPH = '▌';
|
|
27
|
+
function promptContentWidth(width) {
|
|
28
|
+
return Math.max(1, width - 4);
|
|
29
|
+
}
|
|
30
|
+
function promptTextWidth(width) {
|
|
31
|
+
return Math.max(1, promptContentWidth(width) - 2);
|
|
32
|
+
}
|
|
33
|
+
function splitByVisualWidth(text, maxWidth) {
|
|
34
|
+
if (text.length === 0)
|
|
35
|
+
return [''];
|
|
36
|
+
const chunks = [];
|
|
37
|
+
let current = '';
|
|
38
|
+
for (const part of (0, grapheme_1.segmentGraphemes)(text)) {
|
|
39
|
+
const next = `${current}${part.segment}`;
|
|
40
|
+
if (current && (0, string_width_1.default)(next) > maxWidth) {
|
|
41
|
+
chunks.push(current);
|
|
42
|
+
current = part.segment;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
current = next;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
chunks.push(current);
|
|
49
|
+
return chunks;
|
|
50
|
+
}
|
|
51
|
+
function splitByVisualWidthWithOffsets(text, maxWidth) {
|
|
52
|
+
if (text.length === 0)
|
|
53
|
+
return [{ content: '', start: 0, end: 0 }];
|
|
54
|
+
const chunks = [];
|
|
55
|
+
let current = '';
|
|
56
|
+
let currentStart = 0;
|
|
57
|
+
for (const part of (0, grapheme_1.segmentGraphemes)(text)) {
|
|
58
|
+
const next = `${current}${part.segment}`;
|
|
59
|
+
if (current && (0, string_width_1.default)(next) > maxWidth) {
|
|
60
|
+
chunks.push({ content: current, start: currentStart, end: part.index });
|
|
61
|
+
current = part.segment;
|
|
62
|
+
currentStart = part.index;
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
current = next;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
chunks.push({ content: current, start: currentStart, end: text.length });
|
|
69
|
+
return chunks;
|
|
70
|
+
}
|
|
71
|
+
function getPromptVisualLines(value, width) {
|
|
72
|
+
return buildPromptVisualLines(value, width).lines;
|
|
73
|
+
}
|
|
74
|
+
function getVisiblePromptVisualLines(value, width, maxRows) {
|
|
75
|
+
const lines = getPromptVisualLines(value, width);
|
|
76
|
+
const rowLimit = Math.max(1, maxRows);
|
|
77
|
+
if (lines.length <= rowLimit) {
|
|
78
|
+
return { lines, hiddenRows: 0 };
|
|
79
|
+
}
|
|
80
|
+
return {
|
|
81
|
+
lines: lines.slice(-rowLimit),
|
|
82
|
+
hiddenRows: lines.length - rowLimit,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
function getPromptInputViewport(value, width, maxRows, cursor = value.length) {
|
|
86
|
+
const layout = buildPromptVisualLines(value, width, cursor);
|
|
87
|
+
const allLines = layout.lines;
|
|
88
|
+
const rowLimit = Math.max(1, maxRows);
|
|
89
|
+
const showHiddenIndicator = allLines.length > rowLimit && rowLimit > 1;
|
|
90
|
+
const visibleInputRows = showHiddenIndicator ? rowLimit - 1 : rowLimit;
|
|
91
|
+
const start = allLines.length <= visibleInputRows
|
|
92
|
+
? 0
|
|
93
|
+
: Math.min(Math.max(0, layout.cursorLineIndex - visibleInputRows + 1), allLines.length - visibleInputRows);
|
|
94
|
+
const lines = allLines.slice(start, start + visibleInputRows);
|
|
95
|
+
const indicatorRows = showHiddenIndicator ? 1 : 0;
|
|
96
|
+
const cursorLineIndex = indicatorRows + Math.max(0, layout.cursorLineIndex - start);
|
|
97
|
+
const contentRows = indicatorRows + lines.length;
|
|
98
|
+
return {
|
|
99
|
+
lines,
|
|
100
|
+
hiddenRows: allLines.length - lines.length,
|
|
101
|
+
showHiddenIndicator,
|
|
102
|
+
cursorLineIndex,
|
|
103
|
+
cursorColumn: layout.cursorColumn,
|
|
104
|
+
rowsUpFromPromptBottom: Math.max(1, contentRows - cursorLineIndex + 1),
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
function buildPromptVisualLines(value, width, cursor = value.length) {
|
|
108
|
+
const logicalLines = value.length > 0 ? value.split('\n') : [''];
|
|
109
|
+
const maxTextWidth = promptTextWidth(width);
|
|
110
|
+
const clampedCursor = Math.min(Math.max(0, cursor), value.length);
|
|
111
|
+
const visualLines = [];
|
|
112
|
+
let cursorLineIndex = 0;
|
|
113
|
+
let cursorColumn = 5;
|
|
114
|
+
let lineStart = 0;
|
|
115
|
+
logicalLines.forEach((line, logicalIndex) => {
|
|
116
|
+
const chunks = splitByVisualWidthWithOffsets(line, maxTextWidth);
|
|
117
|
+
const lineEnd = lineStart + line.length;
|
|
118
|
+
const cursorInThisLine = clampedCursor >= lineStart && clampedCursor <= lineEnd;
|
|
119
|
+
chunks.forEach((chunk, wrapIndex) => {
|
|
120
|
+
const visualLine = {
|
|
121
|
+
logicalIndex,
|
|
122
|
+
wrapIndex,
|
|
123
|
+
content: chunk.content,
|
|
124
|
+
start: lineStart + chunk.start,
|
|
125
|
+
end: lineStart + chunk.end,
|
|
126
|
+
chunkStart: chunk.start,
|
|
127
|
+
chunkEnd: chunk.end,
|
|
128
|
+
};
|
|
129
|
+
if (cursorInThisLine && clampedCursor - lineStart >= chunk.start && clampedCursor - lineStart <= chunk.end) {
|
|
130
|
+
cursorLineIndex = visualLines.length;
|
|
131
|
+
const cursorInChunk = Math.max(0, clampedCursor - lineStart - chunk.start);
|
|
132
|
+
cursorColumn = 5 + (0, string_width_1.default)(chunk.content.slice(0, cursorInChunk));
|
|
133
|
+
}
|
|
134
|
+
visualLines.push(visualLine);
|
|
135
|
+
});
|
|
136
|
+
lineStart = lineEnd + 1;
|
|
137
|
+
});
|
|
138
|
+
return {
|
|
139
|
+
lines: visualLines,
|
|
140
|
+
cursorLineIndex,
|
|
141
|
+
cursorColumn,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
function takeVisualWidth(text, maxWidth) {
|
|
145
|
+
if (maxWidth <= 0)
|
|
146
|
+
return '';
|
|
147
|
+
let result = '';
|
|
148
|
+
for (const part of (0, grapheme_1.segmentGraphemes)(text)) {
|
|
149
|
+
const next = `${result}${part.segment}`;
|
|
150
|
+
if ((0, string_width_1.default)(next) > maxWidth)
|
|
151
|
+
break;
|
|
152
|
+
result = next;
|
|
153
|
+
}
|
|
154
|
+
return result;
|
|
155
|
+
}
|
|
156
|
+
function formatPromptVisualLine(visualLine, width, options = {}) {
|
|
157
|
+
const prefix = visualLine.logicalIndex === 0 && visualLine.wrapIndex === 0 ? '› ' : ' ';
|
|
158
|
+
const maxContentWidth = Math.max(1, promptContentWidth(width) - (0, string_width_1.default)(prefix));
|
|
159
|
+
let content = visualLine.content;
|
|
160
|
+
if (options.showCursor) {
|
|
161
|
+
const requestedOffset = Math.min(Math.max(0, options.cursorOffset ?? content.length), content.length);
|
|
162
|
+
const offset = (0, grapheme_1.floorGraphemeBoundary)(content, requestedOffset);
|
|
163
|
+
const before = content.slice(0, offset);
|
|
164
|
+
const after = content.slice(offset);
|
|
165
|
+
const beforeWithCursor = `${before}${exports.PROMPT_CURSOR_GLYPH}`;
|
|
166
|
+
content = (0, string_width_1.default)(beforeWithCursor) >= maxContentWidth
|
|
167
|
+
? `${takeVisualWidth(before, maxContentWidth - (0, string_width_1.default)(exports.PROMPT_CURSOR_GLYPH))}${exports.PROMPT_CURSOR_GLYPH}`
|
|
168
|
+
: `${beforeWithCursor}${takeVisualWidth(after, maxContentWidth - (0, string_width_1.default)(beforeWithCursor))}`;
|
|
169
|
+
}
|
|
170
|
+
const raw = `${prefix}${content}`;
|
|
171
|
+
const padding = Math.max(0, promptContentWidth(width) - (0, string_width_1.default)(raw));
|
|
172
|
+
return raw + ' '.repeat(padding);
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../src/runtime/composer/layout.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight ANSI SGR-to-StyledSpan parser.
|
|
3
|
+
*
|
|
4
|
+
* Converts tool output containing basic SGR colour/style codes into StyledSpan[]
|
|
5
|
+
* for the rich-text layout engine, while stripping all other escape sequences
|
|
6
|
+
* (cursor movement, erase, absolute positioning, etc.) that would corrupt the
|
|
7
|
+
* TUI frame model.
|
|
8
|
+
*
|
|
9
|
+
* This is intentionally NOT a full terminal emulator. It only handles the
|
|
10
|
+
* subset of SGR codes that external tools (jest, eslint, compilers) commonly
|
|
11
|
+
* emit:
|
|
12
|
+
*
|
|
13
|
+
* - SGR reset (0)
|
|
14
|
+
* - bold (1), dim (2)
|
|
15
|
+
* - foreground colours (30-37)
|
|
16
|
+
* - background colours (40-47)
|
|
17
|
+
* - bright foreground (90-97)
|
|
18
|
+
*
|
|
19
|
+
* All other escape sequences are discarded.
|
|
20
|
+
*/
|
|
21
|
+
import type { StyledSpan } from '../../tui-core/style';
|
|
22
|
+
export interface AnsiParserResult {
|
|
23
|
+
spans: StyledSpan[];
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Parse tool output that may contain ANSI SGR escape codes into styled spans.
|
|
27
|
+
* Non-SGR escape sequences (cursor movement, clear screen, etc.) are stripped.
|
|
28
|
+
* Plain text between SGR codes is emitted with the current style.
|
|
29
|
+
*/
|
|
30
|
+
export declare function parseAnsiToStyledSpans(rawText: string): StyledSpan[];
|
|
31
|
+
//# sourceMappingURL=ansi-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ansi-parser.d.ts","sourceRoot":"","sources":["../../../src/runtime/rich-text/ansi-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAsB,MAAM,sBAAsB,CAAC;AAI3E,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CA+CpE"}
|