gaunt-sloth 2.0.0-alpha.31 → 2.0.0-alpha.32
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/tui/colour.d.ts +2 -2
- package/dist/tui/colour.js +2 -2
- package/dist/tui/components/App.js +7 -4
- package/dist/tui/components/App.js.map +1 -1
- package/dist/tui/components/PromptEditor.d.ts +19 -0
- package/dist/tui/components/PromptEditor.js +147 -0
- package/dist/tui/components/PromptEditor.js.map +1 -0
- package/dist/tui/components/PromptInput.d.ts +30 -0
- package/dist/tui/components/PromptInput.js +131 -107
- package/dist/tui/components/PromptInput.js.map +1 -1
- package/dist/tui/keyBindings.d.ts +2 -1
- package/dist/tui/keyBindings.js +20 -2
- package/dist/tui/keyBindings.js.map +1 -1
- package/dist/tui/lineEditor.d.ts +99 -0
- package/dist/tui/lineEditor.js +250 -0
- package/dist/tui/lineEditor.js.map +1 -0
- package/package.json +6 -7
package/dist/tui/colour.d.ts
CHANGED
|
@@ -16,8 +16,8 @@ import { type ChalkInstance, type ColorSupportLevel } from 'chalk';
|
|
|
16
16
|
* into the one knob that reaches every renderer: `chalk.level` on the shared instance.
|
|
17
17
|
*
|
|
18
18
|
* **Why one knob is enough.** Ink imports the same `chalk` default export we do (`colorize.js`
|
|
19
|
-
* and `render-border.js` both `import chalk from 'chalk'`), and under the scoped `ink>chalk`
|
|
20
|
-
*
|
|
19
|
+
* and `render-border.js` both `import chalk from 'chalk'`), and under the scoped `ink>chalk`
|
|
20
|
+
* override in `pnpm-workspace.yaml` that resolves to the very same
|
|
21
21
|
* physical module as the app's. Mutating it therefore clamps every `<Text color>` Ink paints as
|
|
22
22
|
* well as our markdown styling. Break the single-module property and this hook silently covers
|
|
23
23
|
* only half the screen, which is why the overrides carry a comment saying so.
|
package/dist/tui/colour.js
CHANGED
|
@@ -16,8 +16,8 @@ import chalk from 'chalk';
|
|
|
16
16
|
* into the one knob that reaches every renderer: `chalk.level` on the shared instance.
|
|
17
17
|
*
|
|
18
18
|
* **Why one knob is enough.** Ink imports the same `chalk` default export we do (`colorize.js`
|
|
19
|
-
* and `render-border.js` both `import chalk from 'chalk'`), and under the scoped `ink>chalk`
|
|
20
|
-
*
|
|
19
|
+
* and `render-border.js` both `import chalk from 'chalk'`), and under the scoped `ink>chalk`
|
|
20
|
+
* override in `pnpm-workspace.yaml` that resolves to the very same
|
|
21
21
|
* physical module as the app's. Mutating it therefore clamps every `<Text color>` Ink paints as
|
|
22
22
|
* well as our markdown styling. Break the single-module property and this hook silently covers
|
|
23
23
|
* only half the screen, which is why the overrides carry a comment saying so.
|
|
@@ -745,9 +745,9 @@ export function App(props) {
|
|
|
745
745
|
// typed twin of the same toggle, not a substitute for reaching it from the keyboard.
|
|
746
746
|
//
|
|
747
747
|
// The stray letter this used to stand off from is handled where it happens rather than by
|
|
748
|
-
// declining to bind the key:
|
|
749
|
-
//
|
|
750
|
-
//
|
|
748
|
+
// declining to bind the key: <PromptEditor>'s insert branch refuses every ctrl and meta chord,
|
|
749
|
+
// so a key bound here cannot also land in the buffer (the prompt is mounted while a turn
|
|
750
|
+
// streams too, so gating on `running` never prevented it).
|
|
751
751
|
if (key.ctrl && input === 't') {
|
|
752
752
|
// Share the /verbose helper so the same state-aware notice is committed (TUI-C14).
|
|
753
753
|
toggleTools();
|
|
@@ -784,7 +784,10 @@ export function App(props) {
|
|
|
784
784
|
key.pageDown) {
|
|
785
785
|
return;
|
|
786
786
|
}
|
|
787
|
-
|
|
787
|
+
// A chord belongs to whoever bound it, never to a text buffer — the same four modifiers the
|
|
788
|
+
// attack-banner phrase and the prompt's own editor refuse, so every buffer in the TUI reads
|
|
789
|
+
// a chord the same way. `shift` is excluded deliberately: it is how a capital is typed.
|
|
790
|
+
if (input && !key.ctrl && !key.meta && !key.super && !key.hyper) {
|
|
788
791
|
setDebugSearch(debugSearchQueryRef.current + input);
|
|
789
792
|
}
|
|
790
793
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.js","sourceRoot":"","sources":["../../../src/tui/components/App.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"App.js","sourceRoot":"","sources":["../../../src/tui/components/App.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type EditorState } from '#src/tui/lineEditor.js';
|
|
3
|
+
export declare function PromptEditor({ state, onChange, onEnter, menuActive, }: {
|
|
4
|
+
/** The buffer and caret to RENDER. Owned by the parent — this component never stores them. */
|
|
5
|
+
state: EditorState;
|
|
6
|
+
/**
|
|
7
|
+
* Applies one edit or motion. Takes an updater rather than a finished state, and that is
|
|
8
|
+
* load-bearing rather than a style choice — see the note on batching in the doc comment above.
|
|
9
|
+
*/
|
|
10
|
+
onChange: (update: (previous: EditorState) => EditorState) => void;
|
|
11
|
+
/**
|
|
12
|
+
* Enter was pressed with the menu closed. Reported, not interpreted: what Enter means depends on
|
|
13
|
+
* the buffer, so the parent decides it inside the buffer's own updater, for the same reason
|
|
14
|
+
* {@link onChange} is an updater.
|
|
15
|
+
*/
|
|
16
|
+
onEnter: () => void;
|
|
17
|
+
/** While true the editor ignores Up/Down and Enter — the slash menu owns them. */
|
|
18
|
+
menuActive: boolean;
|
|
19
|
+
}): React.ReactElement;
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text, useInput } from 'ink';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { deleteBackward, insertText, layout, moveLeft, moveLineDown, moveLineEnd, moveLineStart, moveLineUp, moveRight, moveWordLeft, moveWordRight, } from '#src/tui/lineEditor.js';
|
|
5
|
+
/**
|
|
6
|
+
* TUI-C25 — the prompt's editor: the keyboard on one side, {@link EditorState} on the other.
|
|
7
|
+
*
|
|
8
|
+
* Everything that *decides* lives in `#src/tui/lineEditor.js`; this file only translates keys into
|
|
9
|
+
* calls on it and paints the result. It is a controlled component — the buffer belongs to
|
|
10
|
+
* `<PromptInput>` — so a caret this moves is a caret the parent can also set (after a submit, a
|
|
11
|
+
* paste or a Tab completion) without a second source of truth.
|
|
12
|
+
*
|
|
13
|
+
* **No platform branch, anywhere.** All three word-motion spellings are bound unconditionally:
|
|
14
|
+
* `Meta+B`/`Meta+F` is what macOS Terminal.app and Ghostty send for `Option+←/→` and what a readline
|
|
15
|
+
* user types directly, `Ctrl+←/→` is the xterm/Konsole spelling, and `Meta+←/→` is a third spelling
|
|
16
|
+
* Konsole sends for `Alt+←/→`. They are alternatives, not fallbacks. A platform check here would
|
|
17
|
+
* buy nothing but a way to be wrong on a terminal nobody measured.
|
|
18
|
+
*
|
|
19
|
+
* **Control chords are refused, never typed.** The insert branch takes an event only when none of
|
|
20
|
+
* `ctrl`/`meta`/`super`/`hyper` is set, so a chord bound elsewhere in the app — or bound nowhere at
|
|
21
|
+
* all — cannot drop its letter into what the user is writing. That is a property of owning the
|
|
22
|
+
* editor, and it is what makes a separate guard component in front of the prompt unnecessary.
|
|
23
|
+
*
|
|
24
|
+
* **Every edit is an UPDATER, because keystrokes share a stdin chunk.** Ink splits one chunk into
|
|
25
|
+
* several key events and dispatches them synchronously, so every handler after the first in a chunk
|
|
26
|
+
* still closes over the `state` prop from before its predecessor's edit. A handler computing from
|
|
27
|
+
* that prop therefore throws its predecessor's work away — and this is not a rare shape: Ink
|
|
28
|
+
* deliberately splits repeated backspace bytes into separate events *because holding the key sends
|
|
29
|
+
* them in one chunk*, so a buffer that computed from the prop would answer a held Backspace with a
|
|
30
|
+
* single deletion. Handing the parent an updater makes each keystroke compose on the result of the
|
|
31
|
+
* one before it, whatever the batching did.
|
|
32
|
+
*
|
|
33
|
+
* The same rule is why `Enter` is *reported* rather than interpreted here (`onEnter`): whether it
|
|
34
|
+
* continues the line or submits is a question about the buffer, and a held Backspace released into
|
|
35
|
+
* Enter is exactly the shape that asks it about text the user has already corrected. So nothing in
|
|
36
|
+
* this component reads {@link state} except the renderer.
|
|
37
|
+
*
|
|
38
|
+
* **Two deliberate v1 narrowings.**
|
|
39
|
+
*
|
|
40
|
+
* - Up/Down move over LOGICAL lines (the `\n`-separated ones), not visual wrapped rows. A long line
|
|
41
|
+
* that the terminal wraps is one line, so Up/Down on it do nothing. Visual-line motion would have
|
|
42
|
+
* to thread the terminal width into the model, coupling a pure module to terminal geometry, and
|
|
43
|
+
* word motion plus `Ctrl+A`/`Ctrl+E` already give a wrapped line the navigation it needs.
|
|
44
|
+
* - `Ctrl+A`/`Ctrl+E` and `Home`/`End` go to the ends of the caret's OWN logical line, not of the
|
|
45
|
+
* whole buffer. There is no buffer-start/buffer-end binding.
|
|
46
|
+
*/
|
|
47
|
+
/** The ` > ` the first row of the buffer is written after. */
|
|
48
|
+
const PROMPT_PREFIX = ' > ';
|
|
49
|
+
/**
|
|
50
|
+
* Every continuation row's prefix. Deliberately the same four columns wide as ` > `, so the text
|
|
51
|
+
* of every row of a multi-line buffer starts in the same column.
|
|
52
|
+
*/
|
|
53
|
+
const CONTINUATION_PREFIX = ' … ';
|
|
54
|
+
/**
|
|
55
|
+
* A row with the caret drawn into it as an inverse-video cell — the way `ink-text-input` drew it,
|
|
56
|
+
* because a terminal cursor Ink does not move is not an option and this is what users already read
|
|
57
|
+
* as "the caret is here".
|
|
58
|
+
*
|
|
59
|
+
* Takes the WHOLE code point under the caret: inverting one code unit of a surrogate pair renders
|
|
60
|
+
* the emoji as two pieces of garbage. At end-of-line there is nothing to invert, so an inverse space
|
|
61
|
+
* stands in — which is also what an empty buffer renders as.
|
|
62
|
+
*/
|
|
63
|
+
function withCaret(line, column) {
|
|
64
|
+
const codePoint = line.codePointAt(column);
|
|
65
|
+
if (codePoint === undefined)
|
|
66
|
+
return line + chalk.inverse(' ');
|
|
67
|
+
const character = String.fromCodePoint(codePoint);
|
|
68
|
+
return line.slice(0, column) + chalk.inverse(character) + line.slice(column + character.length);
|
|
69
|
+
}
|
|
70
|
+
export function PromptEditor({ state, onChange, onEnter, menuActive, }) {
|
|
71
|
+
useInput((input, key) => {
|
|
72
|
+
// Word motion — three spellings, none of them a fallback for another (see the doc comment).
|
|
73
|
+
if ((key.meta && input === 'b') || ((key.ctrl || key.meta) && key.leftArrow)) {
|
|
74
|
+
onChange(moveWordLeft);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
if ((key.meta && input === 'f') || ((key.ctrl || key.meta) && key.rightArrow)) {
|
|
78
|
+
onChange(moveWordRight);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
// Line start / end. `Home`/`End` are claimed only WITHOUT Ctrl: <App> binds Ctrl+Home/Ctrl+End
|
|
82
|
+
// to scrolling the transcript, and leaving those two alone is what keeps both bindings working.
|
|
83
|
+
if ((key.ctrl && input === 'a') || (key.home && !key.ctrl)) {
|
|
84
|
+
onChange(moveLineStart);
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
if ((key.ctrl && input === 'e') || (key.end && !key.ctrl)) {
|
|
88
|
+
onChange(moveLineEnd);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
// One character at a time. Reached only after the word-motion branches above, so an arrow that
|
|
92
|
+
// arrives carrying Ctrl or Meta has already been handled as a word motion.
|
|
93
|
+
//
|
|
94
|
+
// `Shift` is deliberately NOT tested on any motion branch: a terminal that reports Shift with an
|
|
95
|
+
// arrow (`\x1b[1;2D`) performs the plain motion. Selection is not a concept this editor has, so
|
|
96
|
+
// there is nothing else the shifted key could mean, and refusing it would make a key a user
|
|
97
|
+
// pressed do nothing at all.
|
|
98
|
+
if (key.leftArrow) {
|
|
99
|
+
onChange(moveLeft);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
if (key.rightArrow) {
|
|
103
|
+
onChange(moveRight);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
// Up/Down have exactly TWO claimants at the prompt, and this is where they are arbitrated:
|
|
107
|
+
//
|
|
108
|
+
// 1. The slash menu is open → the menu owns them (it moves its highlight). `menuActive` says
|
|
109
|
+
// so, and this branch stands down completely.
|
|
110
|
+
// 2. Otherwise → the buffer owns them, moving the caret between the logical
|
|
111
|
+
// lines of a multi-line entry. On a single-line buffer that is a no-op by construction.
|
|
112
|
+
//
|
|
113
|
+
// There is NO third claimant: input-history recall is not implemented at this prompt and is not
|
|
114
|
+
// built here, so nothing is waiting behind the buffer for the no-op case to fall through to.
|
|
115
|
+
// (The debug panel also binds Up/Down, but the prompt is unmounted while that panel is focused.)
|
|
116
|
+
if (key.upArrow || key.downArrow) {
|
|
117
|
+
if (menuActive || key.ctrl || key.meta)
|
|
118
|
+
return;
|
|
119
|
+
onChange(key.upArrow ? moveLineUp : moveLineDown);
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
if (key.backspace || key.delete) {
|
|
123
|
+
onChange(deleteBackward);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
if (key.return) {
|
|
127
|
+
// With the menu open Enter belongs to it — the parent dispatches the highlighted command.
|
|
128
|
+
if (menuActive)
|
|
129
|
+
return;
|
|
130
|
+
// Reported rather than decided, and for the same reason every other branch hands up an
|
|
131
|
+
// updater: what Enter means is a question about the buffer, and answering it from the
|
|
132
|
+
// rendered `state` answers it about the text as it stood before whatever shared this chunk.
|
|
133
|
+
onEnter();
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
// Everything else that carries text. The guard is the point: a chord belongs to whoever bound
|
|
137
|
+
// it, and an editor whose insert branch is the fall-through for unrecognised chords types `t`
|
|
138
|
+
// when the user presses Ctrl+T. Ours refuses every modifier that makes a key a chord, silently.
|
|
139
|
+
// `shift` is the one deliberately absent: it is how a capital is typed, not a different key.
|
|
140
|
+
if (input.length > 0 && !key.ctrl && !key.meta && !key.super && !key.hyper) {
|
|
141
|
+
onChange((previous) => insertText(previous, input));
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
const { lines, line: caretLine, column } = layout(state);
|
|
145
|
+
return (_jsx(Box, { flexDirection: "column", children: lines.map((text, index) => (_jsxs(Box, { children: [_jsx(Box, { flexShrink: 0, children: index === 0 ? (_jsx(Text, { color: "cyan", children: PROMPT_PREFIX })) : (_jsx(Text, { dimColor: true, children: CONTINUATION_PREFIX })) }), _jsx(Text, { children: index === caretLine ? withCaret(text, column) : text })] }, index))) }));
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=PromptEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PromptEditor.js","sourceRoot":"","sources":["../../../src/tui/components/PromptEditor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,35 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { type SlashCommand } from '@gaunt-sloth/agent/modules/slashCommands.js';
|
|
3
|
+
/**
|
|
4
|
+
* The user prompt line. Mirrors the readline ` > ` prompt. Clears on submit; the parent
|
|
5
|
+
* hides it while a turn is running so Ink owns stdin uncontended during streaming.
|
|
6
|
+
*
|
|
7
|
+
* The buffer and caret live here as an {@link import('#src/tui/lineEditor.js').EditorState} and are
|
|
8
|
+
* rendered and driven by `<PromptEditor>` (TUI-C25), which owns the keyboard for everything that
|
|
9
|
+
* edits text. This component owns what the buffer *means*: the slash menu it may open, and the
|
|
10
|
+
* submission it becomes — including what Enter means, which is decided against the authoritative
|
|
11
|
+
* buffer so that it reads the text its predecessors in the same stdin chunk produced.
|
|
12
|
+
*
|
|
13
|
+
* TUI-C10 — while the user is typing a bare slash command (input starts with `/`, no space yet),
|
|
14
|
+
* a discovery menu of the matching registered commands appears just above the prompt. The registry
|
|
15
|
+
* (`commands`) is the single source, so extension-registered commands show automatically. Arrow
|
|
16
|
+
* keys move the highlight, Tab completes the highlighted name, Enter dispatches it, Esc dismisses
|
|
17
|
+
* the menu. The keyboard split is stated in one place and honoured on both sides of it: while the
|
|
18
|
+
* menu is open `<PromptEditor>` stands down from Up/Down and Enter (its `menuActive` prop) and this
|
|
19
|
+
* component's `useInput` claims them, so no key is handled twice. A fully-typed command still
|
|
20
|
+
* dispatches exactly as before (Enter with the menu open submits the highlighted command, which
|
|
21
|
+
* equals what was typed).
|
|
22
|
+
*
|
|
23
|
+
* A buffer with a newline in it never opens the menu, and does not need a guard of its own to stop
|
|
24
|
+
* it: `slashMenuQuery` matches `/` followed by non-whitespace to the end of the input, and `\n` is
|
|
25
|
+
* whitespace — so a continued or pasted multi-line entry beginning with `/` is not a command query.
|
|
26
|
+
*
|
|
27
|
+
* TUI-C24 — multiline paste. `usePaste` puts the terminal into bracketed-paste mode (`\x1b[?2004h`)
|
|
28
|
+
* while the prompt is mounted and disables it on unmount, and Ink delivers the pasted text on a
|
|
29
|
+
* channel separate from `useInput` — so an embedded newline in a pasted burst is never read as
|
|
30
|
+
* Enter and can never submit the turn mid-paste. The normalized paste (CRLF/CR → `\n`) is inserted
|
|
31
|
+
* at the caret without submitting; a subsequent explicit Enter submits the whole multi-line value.
|
|
32
|
+
*/
|
|
3
33
|
export declare function PromptInput({ onSubmit, commands, onMenuStateChange, }: {
|
|
4
34
|
onSubmit: (value: string) => void;
|
|
5
35
|
/** The slash-command registry (App builds it once) — the menu's single source of truth. */
|
|
@@ -1,154 +1,178 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useEffect, useRef, useState } from 'react';
|
|
3
|
-
import { Box,
|
|
4
|
-
import
|
|
3
|
+
import { Box, useInput, usePaste } from 'ink';
|
|
4
|
+
import { PromptEditor } from '#src/tui/components/PromptEditor.js';
|
|
5
5
|
import { SlashCommandMenu } from '#src/tui/components/SlashCommandMenu.js';
|
|
6
6
|
import { filterSlashCommands, slashMenuQuery, } from '@gaunt-sloth/agent/modules/slashCommands.js';
|
|
7
|
+
import { createEditorState, insertText, pressEnter, } from '#src/tui/lineEditor.js';
|
|
7
8
|
import { normalizePastedText } from '#src/tui/pasteParser.js';
|
|
8
9
|
/**
|
|
9
10
|
* The user prompt line. Mirrors the readline ` > ` prompt. Clears on submit; the parent
|
|
10
11
|
* hides it while a turn is running so Ink owns stdin uncontended during streaming.
|
|
11
12
|
*
|
|
13
|
+
* The buffer and caret live here as an {@link import('#src/tui/lineEditor.js').EditorState} and are
|
|
14
|
+
* rendered and driven by `<PromptEditor>` (TUI-C25), which owns the keyboard for everything that
|
|
15
|
+
* edits text. This component owns what the buffer *means*: the slash menu it may open, and the
|
|
16
|
+
* submission it becomes — including what Enter means, which is decided against the authoritative
|
|
17
|
+
* buffer so that it reads the text its predecessors in the same stdin chunk produced.
|
|
18
|
+
*
|
|
12
19
|
* TUI-C10 — while the user is typing a bare slash command (input starts with `/`, no space yet),
|
|
13
20
|
* a discovery menu of the matching registered commands appears just above the prompt. The registry
|
|
14
21
|
* (`commands`) is the single source, so extension-registered commands show automatically. Arrow
|
|
15
22
|
* keys move the highlight, Tab completes the highlighted name, Enter dispatches it, Esc dismisses
|
|
16
|
-
* the menu. The keyboard split is
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* the menu open
|
|
23
|
+
* the menu. The keyboard split is stated in one place and honoured on both sides of it: while the
|
|
24
|
+
* menu is open `<PromptEditor>` stands down from Up/Down and Enter (its `menuActive` prop) and this
|
|
25
|
+
* component's `useInput` claims them, so no key is handled twice. A fully-typed command still
|
|
26
|
+
* dispatches exactly as before (Enter with the menu open submits the highlighted command, which
|
|
27
|
+
* equals what was typed).
|
|
20
28
|
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* and disables it on unmount, and Ink delivers the pasted text on a channel separate from
|
|
25
|
-
* `useInput` — so the payload never reaches `TextInput`'s Enter handling. We append the normalized
|
|
26
|
-
* paste (CRLF/CR → `\n`) to the buffer without submitting; a subsequent explicit Enter submits the
|
|
27
|
-
* whole multi-line value through the existing `onSubmit` path. Rich multi-line cursor editing /
|
|
28
|
-
* continuation-line rendering is intentionally NOT handled here — that is node TUI-C25; a buffered
|
|
29
|
-
* multi-line value may render imperfectly, but the submitted value is correct and intact.
|
|
30
|
-
*/
|
|
31
|
-
/**
|
|
32
|
-
* Records whether the input event now being delivered is a control chord.
|
|
29
|
+
* A buffer with a newline in it never opens the menu, and does not need a guard of its own to stop
|
|
30
|
+
* it: `slashMenuQuery` matches `/` followed by non-whitespace to the end of the input, and `\n` is
|
|
31
|
+
* whitespace — so a continued or pasted multi-line entry beginning with `/` is not a command query.
|
|
33
32
|
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
* Ink fans one event out to every registered handler and offers no way to stop it, so the only
|
|
40
|
-
* place to catch this is *before* the text input sees it — which is what this is for.
|
|
41
|
-
*
|
|
42
|
-
* It renders nothing and exists only for its position: `useInput` subscribes from an effect, and
|
|
43
|
-
* effects fire in mount order, so a sibling rendered ahead of the text input is called ahead of it.
|
|
44
|
-
* That ordering is what the "leaves the buffer alone" case pins.
|
|
33
|
+
* TUI-C24 — multiline paste. `usePaste` puts the terminal into bracketed-paste mode (`\x1b[?2004h`)
|
|
34
|
+
* while the prompt is mounted and disables it on unmount, and Ink delivers the pasted text on a
|
|
35
|
+
* channel separate from `useInput` — so an embedded newline in a pasted burst is never read as
|
|
36
|
+
* Enter and can never submit the turn mid-paste. The normalized paste (CRLF/CR → `\n`) is inserted
|
|
37
|
+
* at the caret without submitting; a subsequent explicit Enter submits the whole multi-line value.
|
|
45
38
|
*/
|
|
46
|
-
function ControlChordSentinel({ onKey }) {
|
|
47
|
-
useInput((input, key) => {
|
|
48
|
-
onKey(key.ctrl && input.length > 0);
|
|
49
|
-
});
|
|
50
|
-
return null;
|
|
51
|
-
}
|
|
52
39
|
export function PromptInput({ onSubmit, commands = [], onMenuStateChange, }) {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
40
|
+
/**
|
|
41
|
+
* The buffer and its edit serial — authoritative in a REF, mirrored into state for rendering.
|
|
42
|
+
*
|
|
43
|
+
* A keystroke is not delivered alone: Ink splits one stdin chunk into several key events and
|
|
44
|
+
* dispatches them synchronously, so a handler that computes from the rendered value computes from
|
|
45
|
+
* the text as it stood before its predecessors in that chunk. Holding a Backspace is exactly that
|
|
46
|
+
* shape — Ink splits repeated backspace bytes into separate events precisely *because* holding the
|
|
47
|
+
* key sends them in one chunk. A ref is written and read synchronously, so each keystroke sees
|
|
48
|
+
* what the one before it did, and `onSubmit` can still be called straight from the handler that
|
|
49
|
+
* decided on it (which a `setState` updater, being pure, could not do). It is the same
|
|
50
|
+
* ref-plus-mirror shape `<App>` uses for its own keystroke-driven text buffers.
|
|
51
|
+
*
|
|
52
|
+
* `edits` counts only the updates that CHANGED the text, and it is the key the menu's transient
|
|
53
|
+
* bookkeeping hangs on. Keying that bookkeeping on the text itself is the obvious thing and it is
|
|
54
|
+
* wrong: an Esc-dismissal or a stale highlight resurrects the moment an edit returns the buffer to
|
|
55
|
+
* a value it has already held — a Backspace back to the previous query, or the same query typed
|
|
56
|
+
* again in a later message. A serial never repeats, so the bookkeeping is invalidated by any edit
|
|
57
|
+
* and by nothing else; a bare caret move leaves it alone, which is what lets Esc survive an arrow.
|
|
58
|
+
*/
|
|
59
|
+
const [buffer, setBuffer] = useState(() => ({
|
|
60
|
+
state: createEditorState(),
|
|
61
|
+
edits: 0,
|
|
62
|
+
}));
|
|
63
|
+
const bufferRef = useRef(buffer);
|
|
64
|
+
const state = buffer.state;
|
|
65
|
+
/** Make `next` the buffer: authoritative immediately, on screen at the next render. */
|
|
66
|
+
const commitBuffer = (next) => {
|
|
67
|
+
bufferRef.current = next;
|
|
68
|
+
setBuffer(next);
|
|
69
|
+
};
|
|
70
|
+
/** Apply one edit or motion, counting it as an edit only if it changed the text. */
|
|
71
|
+
const applyEdit = (update) => {
|
|
72
|
+
const previous = bufferRef.current;
|
|
73
|
+
const next = update(previous.state);
|
|
74
|
+
commitBuffer({
|
|
75
|
+
state: next,
|
|
76
|
+
edits: next.value === previous.state.value ? previous.edits : previous.edits + 1,
|
|
77
|
+
});
|
|
78
|
+
};
|
|
79
|
+
/** Submit `value` and clear the buffer; the bumped serial resets the menu (see `bufferRef`). */
|
|
80
|
+
const submit = (value) => {
|
|
81
|
+
commitBuffer({ state: createEditorState(), edits: bufferRef.current.edits + 1 });
|
|
82
|
+
onSubmit(value);
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Enter, with the menu closed — decided here rather than in the editor.
|
|
86
|
+
*
|
|
87
|
+
* What Enter means depends on the buffer (a trailing backslash continues the line, anything else
|
|
88
|
+
* submits it), so the decision reads the same authoritative buffer every other keystroke writes.
|
|
89
|
+
* Decided from a render instead, an Enter sharing a chunk with an edit answers about the text
|
|
90
|
+
* before that edit: a held Backspace released into Enter shows the corrected text on screen and
|
|
91
|
+
* sends the uncorrected text, then clears the buffer so nothing survives to show it.
|
|
92
|
+
*/
|
|
93
|
+
const pressEnterOnBuffer = () => {
|
|
94
|
+
const result = pressEnter(bufferRef.current.state);
|
|
95
|
+
if (result.kind === 'continue') {
|
|
96
|
+
commitBuffer({ state: result.state, edits: bufferRef.current.edits + 1 });
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
submit(result.value);
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* The menu's transient state, keyed on the edit serial it belongs to.
|
|
103
|
+
*
|
|
104
|
+
* `dismissed` is Esc's, so the menu can be sent away without clearing the input; `index` is the
|
|
105
|
+
* highlighted row, which starts at the most-relevant match whenever the query changes under it.
|
|
106
|
+
*/
|
|
107
|
+
const [menu, setMenu] = useState({
|
|
108
|
+
forEdit: 0,
|
|
109
|
+
dismissed: false,
|
|
110
|
+
index: 0,
|
|
111
|
+
});
|
|
112
|
+
const menuAppliesToBuffer = menu.forEdit === buffer.edits;
|
|
113
|
+
const query = slashMenuQuery(state.value);
|
|
114
|
+
const dismissed = menuAppliesToBuffer && menu.dismissed;
|
|
65
115
|
const matches = query !== null && !dismissed ? filterSlashCommands(commands, query) : [];
|
|
66
116
|
const menuActive = matches.length > 0;
|
|
67
|
-
// Clamp defensively in case the filtered list shrank below the
|
|
68
|
-
const selectedIndex = menuActive
|
|
117
|
+
// Clamp defensively in case the filtered list shrank below the highlight between renders.
|
|
118
|
+
const selectedIndex = menuActive
|
|
119
|
+
? Math.min(menuAppliesToBuffer ? menu.index : 0, matches.length - 1)
|
|
120
|
+
: 0;
|
|
69
121
|
// Let the parent suppress its competing Tab handler (debug-panel focus) while the menu is open.
|
|
70
122
|
useEffect(() => {
|
|
71
123
|
onMenuStateChange?.(menuActive);
|
|
72
124
|
}, [menuActive, onMenuStateChange]);
|
|
125
|
+
/** Step the highlight by `step`, wrapping — the menu is open, so there is a list to step. */
|
|
126
|
+
const moveHighlight = (step) => {
|
|
127
|
+
const forEdit = bufferRef.current.edits;
|
|
128
|
+
setMenu((previous) => {
|
|
129
|
+
const current = previous.forEdit === forEdit ? previous.index : 0;
|
|
130
|
+
const clamped = Math.min(current, matches.length - 1);
|
|
131
|
+
return {
|
|
132
|
+
forEdit,
|
|
133
|
+
dismissed: false,
|
|
134
|
+
index: (clamped + step + matches.length) % matches.length,
|
|
135
|
+
};
|
|
136
|
+
});
|
|
137
|
+
};
|
|
73
138
|
// TUI-C24 — capture a bracketed paste as buffered text instead of keystrokes. Ink enables
|
|
74
139
|
// bracketed-paste mode while this hook is mounted and routes the pasted payload here (off the
|
|
75
|
-
// `useInput` channel), so its embedded newlines never reach
|
|
76
|
-
//
|
|
77
|
-
// (Appending, rather than inserting at TextInput's internal cursor, is deliberate: multi-line
|
|
78
|
-
// cursor editing is TUI-C25's scope; the submitted value stays correct and intact.)
|
|
140
|
+
// `useInput` channel), so its embedded newlines never reach Enter handling. The paste is inserted
|
|
141
|
+
// AT THE CARET and does NOT submit — a later explicit Enter submits it all.
|
|
79
142
|
usePaste((text) => {
|
|
80
143
|
const pasted = normalizePastedText(text);
|
|
81
144
|
if (!pasted)
|
|
82
145
|
return;
|
|
83
|
-
|
|
84
|
-
// Mirror onChange's menu bookkeeping so a paste can't leave a stale/incorrectly-open menu.
|
|
85
|
-
setDismissed(false);
|
|
86
|
-
setCursor(0);
|
|
146
|
+
applyEdit((current) => insertText(current, pasted));
|
|
87
147
|
});
|
|
88
148
|
useInput((_input, key) => {
|
|
89
|
-
// Only claim keys while the menu is visible; otherwise
|
|
149
|
+
// Only claim keys while the menu is visible; otherwise the editor handles everything.
|
|
90
150
|
if (!menuActive)
|
|
91
151
|
return;
|
|
92
152
|
if (key.upArrow) {
|
|
93
|
-
|
|
153
|
+
moveHighlight(-1);
|
|
94
154
|
}
|
|
95
155
|
else if (key.downArrow) {
|
|
96
|
-
|
|
156
|
+
moveHighlight(1);
|
|
97
157
|
}
|
|
98
158
|
else if (key.tab) {
|
|
99
159
|
// Complete to the highlighted name plus a trailing space: the space closes the menu (the
|
|
100
|
-
// input now has whitespace) and leaves the
|
|
101
|
-
|
|
102
|
-
setDismissed(false);
|
|
103
|
-
setCursor(0);
|
|
160
|
+
// input now has whitespace) and leaves the caret ready for args, without dispatching.
|
|
161
|
+
applyEdit(() => createEditorState(`/${matches[selectedIndex].name} `));
|
|
104
162
|
}
|
|
105
163
|
else if (key.escape) {
|
|
106
|
-
|
|
164
|
+
setMenu({ forEdit: bufferRef.current.edits, dismissed: true, index: 0 });
|
|
165
|
+
}
|
|
166
|
+
else if (key.return) {
|
|
167
|
+
// With the menu open, Enter dispatches the HIGHLIGHTED command (so "/mo"+Enter runs
|
|
168
|
+
// "/mode") rather than the typed text. The parent's handler parses + dispatches through
|
|
169
|
+
// the registry either way, so fully-typed dispatch is unchanged. <PromptEditor> stands
|
|
170
|
+
// down from Enter while `menuActive`, so this is the only claimant.
|
|
171
|
+
submit(`/${matches[selectedIndex].name}`);
|
|
107
172
|
}
|
|
108
|
-
// Enter is intentionally NOT handled here — TextInput's onSubmit owns it (see onSubmit).
|
|
109
173
|
},
|
|
110
174
|
// Active only while the prompt is mounted; harmless when the menu is closed (early return).
|
|
111
175
|
{ isActive: true });
|
|
112
|
-
return (_jsxs(Box, { flexDirection: "column", children: [menuActive ? _jsx(SlashCommandMenu, { commands: matches, selectedIndex: selectedIndex }) : null, _jsx(
|
|
113
|
-
controlChordRef.current = isControlChord;
|
|
114
|
-
} }), _jsxs(Box, { children: [_jsx(Text, { color: "cyan", children: ' > ' }), _jsx(TextInput, { value: value, onChange: (next) => {
|
|
115
|
-
// A control chord belongs to whoever bound it, never to the buffer.
|
|
116
|
-
//
|
|
117
|
-
// Refusing the value is only half of it. `ink-text-input` commits its internal cursor
|
|
118
|
-
// offset BEFORE it asks whether the value may change, and it repairs an out-of-range
|
|
119
|
-
// offset only from an effect keyed on the value — which a refusal, by definition, does
|
|
120
|
-
// not change. So a refused chord leaves the offset one past the value, the reverse-video
|
|
121
|
-
// cursor cell matches no character and disappears, and every later character inserts one
|
|
122
|
-
// position early: `draft` + one chord + `m,o,r,e` submits `draftorem`.
|
|
123
|
-
//
|
|
124
|
-
// Remounting is what puts the offset back, because the component derives it from the
|
|
125
|
-
// value at mount. The cost is that a cursor the user had moved into the middle of the
|
|
126
|
-
// buffer returns to the end — visible, recoverable with the arrow keys, and not the
|
|
127
|
-
// value. [[TUI-C25]] builds the real line editor, binds Ctrl+A/Ctrl+E to line start/end
|
|
128
|
-
// and will own the cursor outright; until then this is the cheap half of the trade.
|
|
129
|
-
//
|
|
130
|
-
// It also re-subscribes the text input's `useInput`, which moves that listener to the
|
|
131
|
-
// back of Ink's emitter. Harmless, and checked rather than assumed: the ONE ordering
|
|
132
|
-
// anything here depends on is the sentinel being ahead of the text input, and the
|
|
133
|
-
// sentinel never re-subscribes. App's handler ending up ahead of the text input's is
|
|
134
|
-
// independent — they act on disjoint state, and App returns early from every branch it
|
|
135
|
-
// claims.
|
|
136
|
-
if (controlChordRef.current) {
|
|
137
|
-
setTextInputGeneration((generation) => generation + 1);
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
setValue(next);
|
|
141
|
-
setDismissed(false);
|
|
142
|
-
setCursor(0);
|
|
143
|
-
}, onSubmit: (submitted) => {
|
|
144
|
-
// With the menu open, Enter dispatches the HIGHLIGHTED command (so "/mo"+Enter runs
|
|
145
|
-
// "/mode"); otherwise submit exactly what was typed. Either way the parent's handler
|
|
146
|
-
// parses + dispatches through the registry, so fully-typed dispatch is unchanged.
|
|
147
|
-
const toSubmit = menuActive ? `/${matches[selectedIndex].name}` : submitted;
|
|
148
|
-
setValue('');
|
|
149
|
-
setDismissed(false);
|
|
150
|
-
setCursor(0);
|
|
151
|
-
onSubmit(toSubmit);
|
|
152
|
-
} }, textInputGeneration)] })] }));
|
|
176
|
+
return (_jsxs(Box, { flexDirection: "column", children: [menuActive ? _jsx(SlashCommandMenu, { commands: matches, selectedIndex: selectedIndex }) : null, _jsx(PromptEditor, { state: state, onChange: applyEdit, onEnter: pressEnterOnBuffer, menuActive: menuActive })] }));
|
|
153
177
|
}
|
|
154
178
|
//# sourceMappingURL=PromptInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PromptInput.js","sourceRoot":"","sources":["../../../src/tui/components/PromptInput.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"PromptInput.js","sourceRoot":"","sources":["../../../src/tui/components/PromptInput.tsx"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
* construction** rather than by anyone remembering (GS2-87: divergence is deliberate and stated).
|
|
11
11
|
*
|
|
12
12
|
* The bindings are the ones the code actually binds — `<App>`'s `useInput` and wheel subscription,
|
|
13
|
-
*
|
|
13
|
+
* `<PromptInput>`'s menu handler and `<PromptEditor>`'s. Adding an entry here does not add a
|
|
14
|
+
* binding; it promises one.
|
|
14
15
|
*/
|
|
15
16
|
import type { KeyBindingGroup } from '@gaunt-sloth/agent/modules/slashCommands.js';
|
|
16
17
|
/**
|
package/dist/tui/keyBindings.js
CHANGED
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
* construction** rather than by anyone remembering (GS2-87: divergence is deliberate and stated).
|
|
11
11
|
*
|
|
12
12
|
* The bindings are the ones the code actually binds — `<App>`'s `useInput` and wheel subscription,
|
|
13
|
-
*
|
|
13
|
+
* `<PromptInput>`'s menu handler and `<PromptEditor>`'s. Adding an entry here does not add a
|
|
14
|
+
* binding; it promises one.
|
|
14
15
|
*/
|
|
15
16
|
/**
|
|
16
17
|
* The scroll fragment this surface appends to the shared hint row.
|
|
@@ -64,7 +65,6 @@ export const TUI_KEY_BINDINGS = [
|
|
|
64
65
|
title: 'At the prompt',
|
|
65
66
|
bindings: [
|
|
66
67
|
{ keys: '/', description: 'open the slash-command menu' },
|
|
67
|
-
{ keys: '↑ / ↓', description: 'move through the open menu' },
|
|
68
68
|
{ keys: 'Tab', description: 'complete the highlighted command' },
|
|
69
69
|
{
|
|
70
70
|
// Worth a line precisely because it is not what the buffer shows: with the menu open,
|
|
@@ -73,6 +73,24 @@ export const TUI_KEY_BINDINGS = [
|
|
|
73
73
|
description: 'send the line — or run the highlighted command, while the menu is open',
|
|
74
74
|
},
|
|
75
75
|
{ keys: 'Esc', description: 'dismiss the menu' },
|
|
76
|
+
{
|
|
77
|
+
// The one binding here a user cannot discover by pressing something: it is a character
|
|
78
|
+
// they already type for other reasons, and nothing on screen suggests it means anything.
|
|
79
|
+
keys: '\\ then Enter',
|
|
80
|
+
description: 'carry the message onto another line instead of sending it',
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
// Both meanings on one line, because the key is the same key and which one it has is
|
|
84
|
+
// decided by whether the menu is open — a reader who gets only one of them is misled.
|
|
85
|
+
keys: '↑ / ↓',
|
|
86
|
+
description: 'move between the lines of the message — or through the open menu',
|
|
87
|
+
},
|
|
88
|
+
{ keys: '← / →', description: 'a character' },
|
|
89
|
+
{ keys: 'Alt+← / Alt+→, or Ctrl+← / Ctrl+→', description: 'a word' },
|
|
90
|
+
{
|
|
91
|
+
keys: 'Ctrl+A / Ctrl+E, or Home / End',
|
|
92
|
+
description: 'the start / end of the current line',
|
|
93
|
+
},
|
|
76
94
|
],
|
|
77
95
|
},
|
|
78
96
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyBindings.js","sourceRoot":"","sources":["../../src/tui/keyBindings.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"keyBindings.js","sourceRoot":"","sources":["../../src/tui/keyBindings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,gCAAgC,CAAC;AAEhE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAA+B;IAC1D;QACE,KAAK,EAAE,uEAAuE;QAC9E,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,aAAa;gBACnB,WAAW,EAAE,mEAAmE;aACjF;YACD,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,8CAA8C,EAAE;YAC7F,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,yDAAyD,EAAE;YACzF;gBACE,IAAI,EAAE,aAAa;gBACnB,WAAW,EAAE,wEAAwE;aACtF;YACD;gBACE,0FAA0F;gBAC1F,yFAAyF;gBACzF,qFAAqF;gBACrF,IAAI,EAAE,2BAA2B;gBACjC,WAAW,EAAE,6EAA6E;aAC3F;SACF;KACF;IACD;QACE,KAAK,EAAE,4BAA4B;QACnC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;KAC1D;IACD;QACE,KAAK,EAAE,eAAe;QACtB,QAAQ,EAAE;YACR,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,6BAA6B,EAAE;YACzD,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,kCAAkC,EAAE;YAChE;gBACE,sFAAsF;gBACtF,0FAA0F;gBAC1F,IAAI,EAAE,OAAO;gBACb,WAAW,EAAE,wEAAwE;aACtF;YACD,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE;YAChD;gBACE,uFAAuF;gBACvF,yFAAyF;gBACzF,IAAI,EAAE,eAAe;gBACrB,WAAW,EAAE,2DAA2D;aACzE;YACD;gBACE,qFAAqF;gBACrF,sFAAsF;gBACtF,IAAI,EAAE,OAAO;gBACb,WAAW,EAAE,kEAAkE;aAChF;YACD,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE;YAC7C,EAAE,IAAI,EAAE,mCAAmC,EAAE,WAAW,EAAE,QAAQ,EAAE;YACpE;gBACE,IAAI,EAAE,gCAAgC;gBACtC,WAAW,EAAE,qCAAqC;aACnD;SACF;KACF;IACD;QACE,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,6DAA6D;aAC3E;YACD;gBACE,IAAI,EAAE,KAAK;gBACX,WAAW,EACT,uFAAuF;aAC1F;YACD,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,4CAA4C,EAAE;YACtF,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,sCAAsC,EAAE;YACnF;gBACE,6FAA6F;gBAC7F,2FAA2F;gBAC3F,6FAA6F;gBAC7F,IAAI,EAAE,2BAA2B;gBACjC,WAAW,EAAE,sEAAsE;aACpF;YACD,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,6CAA6C,EAAE;YACzE,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,6DAA6D,EAAE;SAC5F;KACF;IACD;QACE,gGAAgG;QAChG,6FAA6F;QAC7F,sBAAsB;QACtB,KAAK,EAAE,iEAAiE;QACxE,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,6BAA6B;gBACnC,WAAW,EAAE,iDAAiD;aAC/D;SACF;KACF;IACD;QACE,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gDAAgD,EAAE,CAAC;KAC9F;CACF,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TUI-C25 — the prompt's buffer and caret, as a pure model.
|
|
3
|
+
*
|
|
4
|
+
* `ink-text-input` is a single-line widget: one cursor offset, one `<Text>`, no concept of a
|
|
5
|
+
* logical line, and it returns early on Up/Down. Multi-line entry, cross-line caret movement, word
|
|
6
|
+
* motion and line-start/end motion cannot be expressed through it, so the prompt owns its own
|
|
7
|
+
* editor. Everything the editor *decides* lives here, with no React, no Ink and no terminal — which
|
|
8
|
+
* is what makes the behaviour assertable deterministically on every platform of the unit matrix,
|
|
9
|
+
* including the Windows cells, without a PTY.
|
|
10
|
+
*
|
|
11
|
+
* **Code points, not code units.** {@link EditorState.cursor} is a JS string index, but every
|
|
12
|
+
* movement and deletion steps a whole code point, so a surrogate pair is never split down the
|
|
13
|
+
* middle: one Backspace removes a plain emoji whole rather than leaving half of it on screen, and
|
|
14
|
+
* every offset handed back is a boundary the renderer can invert a whole character at.
|
|
15
|
+
*
|
|
16
|
+
* **The unit is the code point, not the grapheme cluster** — a deliberate v1 narrowing, stated
|
|
17
|
+
* because the difference is visible. A sequence joined by ZWJ (`👨👩👧`) or trailed by a combining
|
|
18
|
+
* mark is several code points, so Backspace takes the last of them rather than the whole cluster.
|
|
19
|
+
* Cluster segmentation needs `Intl.Segmenter` and a rule for every operation here; nothing in the
|
|
20
|
+
* prompt's own behaviour depends on it, and half-doing it is worse than a boundary that is at least
|
|
21
|
+
* always the same one.
|
|
22
|
+
*
|
|
23
|
+
* **Enter's continuation syntax.** A backslash immediately before the caret makes Enter continue
|
|
24
|
+
* the line instead of submitting: the backslash is consumed and a newline takes its place, the way
|
|
25
|
+
* a shell reads a trailing `\`. **Known v1 limitation, intentional:** because the backslash is
|
|
26
|
+
* always consumed there is no escape for a literal one, so a submitted line cannot end in a
|
|
27
|
+
* backslash.
|
|
28
|
+
*
|
|
29
|
+
* Every exported function is pure: it returns a new {@link EditorState} and never mutates its
|
|
30
|
+
* argument. A movement that cannot move returns an equivalent state.
|
|
31
|
+
*/
|
|
32
|
+
/** An immutable snapshot of the prompt buffer and where the caret sits in it. */
|
|
33
|
+
export interface EditorState {
|
|
34
|
+
/** The whole buffer. Logical lines are separated by `\n`. */
|
|
35
|
+
readonly value: string;
|
|
36
|
+
/** Caret offset as a JS string index into `value`, 0..value.length. */
|
|
37
|
+
readonly cursor: number;
|
|
38
|
+
/**
|
|
39
|
+
* The column Up/Down are trying to return to, in code points from the start of the logical line.
|
|
40
|
+
* Set by {@link moveLineUp}/{@link moveLineDown}, cleared (undefined) by every other operation.
|
|
41
|
+
*/
|
|
42
|
+
readonly desiredColumn?: number;
|
|
43
|
+
}
|
|
44
|
+
export declare function createEditorState(value?: string): EditorState;
|
|
45
|
+
/** Insert literal text at the caret; caret lands after it. `desiredColumn` clears. */
|
|
46
|
+
export declare function insertText(state: EditorState, text: string): EditorState;
|
|
47
|
+
/** Backspace: remove the code point before the caret. No-op at offset 0. */
|
|
48
|
+
export declare function deleteBackward(state: EditorState): EditorState;
|
|
49
|
+
export declare function moveLeft(state: EditorState): EditorState;
|
|
50
|
+
export declare function moveRight(state: EditorState): EditorState;
|
|
51
|
+
/**
|
|
52
|
+
* Word motion (readline `Alt+B`): skip separators leftward, then the word itself, landing on its
|
|
53
|
+
* start. `\n` is just another separator, so the motion crosses lines freely.
|
|
54
|
+
*/
|
|
55
|
+
export declare function moveWordLeft(state: EditorState): EditorState;
|
|
56
|
+
/**
|
|
57
|
+
* Word motion (readline `Alt+F`): skip separators rightward, then the word itself, landing just
|
|
58
|
+
* after its end.
|
|
59
|
+
*/
|
|
60
|
+
export declare function moveWordRight(state: EditorState): EditorState;
|
|
61
|
+
/** Start of the caret's own LOGICAL line (not of the whole buffer). */
|
|
62
|
+
export declare function moveLineStart(state: EditorState): EditorState;
|
|
63
|
+
/** End of the caret's own LOGICAL line (not of the whole buffer). */
|
|
64
|
+
export declare function moveLineEnd(state: EditorState): EditorState;
|
|
65
|
+
/**
|
|
66
|
+
* Up one logical line, honouring the sticky {@link EditorState.desiredColumn}.
|
|
67
|
+
*
|
|
68
|
+
* On the first line there is nowhere to go, but the column is still recorded: that is what lets
|
|
69
|
+
* Up-Down-Up out of a long line and back keep the column it started from.
|
|
70
|
+
*/
|
|
71
|
+
export declare function moveLineUp(state: EditorState): EditorState;
|
|
72
|
+
/** Down one logical line, honouring the sticky {@link EditorState.desiredColumn}. */
|
|
73
|
+
export declare function moveLineDown(state: EditorState): EditorState;
|
|
74
|
+
export type EnterResult = {
|
|
75
|
+
readonly kind: 'continue';
|
|
76
|
+
readonly state: EditorState;
|
|
77
|
+
} | {
|
|
78
|
+
readonly kind: 'submit';
|
|
79
|
+
readonly value: string;
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* What Enter means for this state: a backslash immediately before the caret continues the line
|
|
83
|
+
* (the backslash is replaced by a newline), anything else submits the buffer exactly as typed —
|
|
84
|
+
* untrimmed, newlines intact. Clearing the buffer and dispatching the submission belong to the
|
|
85
|
+
* caller.
|
|
86
|
+
*/
|
|
87
|
+
export declare function pressEnter(state: EditorState): EnterResult;
|
|
88
|
+
/**
|
|
89
|
+
* What the renderer needs: the logical lines and where the caret is among them. An empty buffer is
|
|
90
|
+
* one empty line, and a trailing `\n` yields a final empty line — the row the caret sits on after
|
|
91
|
+
* a continuation, which still has to be drawn.
|
|
92
|
+
*/
|
|
93
|
+
export declare function layout(state: EditorState): {
|
|
94
|
+
readonly lines: readonly string[];
|
|
95
|
+
/** 0-based index into `lines`. */
|
|
96
|
+
readonly line: number;
|
|
97
|
+
/** Caret offset within that line, as a JS string index into `lines[line]`. */
|
|
98
|
+
readonly column: number;
|
|
99
|
+
};
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TUI-C25 — the prompt's buffer and caret, as a pure model.
|
|
3
|
+
*
|
|
4
|
+
* `ink-text-input` is a single-line widget: one cursor offset, one `<Text>`, no concept of a
|
|
5
|
+
* logical line, and it returns early on Up/Down. Multi-line entry, cross-line caret movement, word
|
|
6
|
+
* motion and line-start/end motion cannot be expressed through it, so the prompt owns its own
|
|
7
|
+
* editor. Everything the editor *decides* lives here, with no React, no Ink and no terminal — which
|
|
8
|
+
* is what makes the behaviour assertable deterministically on every platform of the unit matrix,
|
|
9
|
+
* including the Windows cells, without a PTY.
|
|
10
|
+
*
|
|
11
|
+
* **Code points, not code units.** {@link EditorState.cursor} is a JS string index, but every
|
|
12
|
+
* movement and deletion steps a whole code point, so a surrogate pair is never split down the
|
|
13
|
+
* middle: one Backspace removes a plain emoji whole rather than leaving half of it on screen, and
|
|
14
|
+
* every offset handed back is a boundary the renderer can invert a whole character at.
|
|
15
|
+
*
|
|
16
|
+
* **The unit is the code point, not the grapheme cluster** — a deliberate v1 narrowing, stated
|
|
17
|
+
* because the difference is visible. A sequence joined by ZWJ (`👨👩👧`) or trailed by a combining
|
|
18
|
+
* mark is several code points, so Backspace takes the last of them rather than the whole cluster.
|
|
19
|
+
* Cluster segmentation needs `Intl.Segmenter` and a rule for every operation here; nothing in the
|
|
20
|
+
* prompt's own behaviour depends on it, and half-doing it is worse than a boundary that is at least
|
|
21
|
+
* always the same one.
|
|
22
|
+
*
|
|
23
|
+
* **Enter's continuation syntax.** A backslash immediately before the caret makes Enter continue
|
|
24
|
+
* the line instead of submitting: the backslash is consumed and a newline takes its place, the way
|
|
25
|
+
* a shell reads a trailing `\`. **Known v1 limitation, intentional:** because the backslash is
|
|
26
|
+
* always consumed there is no escape for a literal one, so a submitted line cannot end in a
|
|
27
|
+
* backslash.
|
|
28
|
+
*
|
|
29
|
+
* Every exported function is pure: it returns a new {@link EditorState} and never mutates its
|
|
30
|
+
* argument. A movement that cannot move returns an equivalent state.
|
|
31
|
+
*/
|
|
32
|
+
/** A word character for word motion; everything else — including a space and `\n` — separates. */
|
|
33
|
+
const WORD_CHARACTER = /[\p{L}\p{N}_]/u;
|
|
34
|
+
export function createEditorState(value = '') {
|
|
35
|
+
return { value, cursor: value.length };
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* A state at `cursor` with no sticky column — the shape every operation but Up/Down returns.
|
|
39
|
+
* Hands back the same object when that is already true, so an unmoved caret cannot look like a
|
|
40
|
+
* change to a caller comparing by identity.
|
|
41
|
+
*/
|
|
42
|
+
function at(state, cursor) {
|
|
43
|
+
if (state.cursor === cursor && state.desiredColumn === undefined)
|
|
44
|
+
return state;
|
|
45
|
+
return { value: state.value, cursor };
|
|
46
|
+
}
|
|
47
|
+
/** The index where the code point ending at `index` starts. `index` 0 stays 0. */
|
|
48
|
+
function previousCodePointStart(value, index) {
|
|
49
|
+
if (index <= 0)
|
|
50
|
+
return 0;
|
|
51
|
+
const code = value.charCodeAt(index - 1);
|
|
52
|
+
// A low surrogate only ever ends a pair, so its high half is the real start of the character.
|
|
53
|
+
if (code >= 0xdc00 && code <= 0xdfff && index >= 2) {
|
|
54
|
+
const high = value.charCodeAt(index - 2);
|
|
55
|
+
if (high >= 0xd800 && high <= 0xdbff)
|
|
56
|
+
return index - 2;
|
|
57
|
+
}
|
|
58
|
+
return index - 1;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* The index just past the code point starting at `index` — the forward twin of
|
|
62
|
+
* {@link previousCodePointStart}, holding the same invariant from the other side: an index handed
|
|
63
|
+
* back by either is always the start of a whole character, never the middle of a surrogate pair.
|
|
64
|
+
* Forward, `codePointAt` does the pairing for us, so only its width has to be decided here; a code
|
|
65
|
+
* point above the BMP is the pair, everything else is one unit.
|
|
66
|
+
*/
|
|
67
|
+
function nextCodePointEnd(value, index) {
|
|
68
|
+
if (index >= value.length)
|
|
69
|
+
return value.length;
|
|
70
|
+
const codePoint = value.codePointAt(index);
|
|
71
|
+
return index + (codePoint !== undefined && codePoint > 0xffff ? 2 : 1);
|
|
72
|
+
}
|
|
73
|
+
/** Whether the code point starting at `index` is a word character. */
|
|
74
|
+
function isWordAt(value, index) {
|
|
75
|
+
const codePoint = value.codePointAt(index);
|
|
76
|
+
if (codePoint === undefined)
|
|
77
|
+
return false;
|
|
78
|
+
return WORD_CHARACTER.test(String.fromCodePoint(codePoint));
|
|
79
|
+
}
|
|
80
|
+
/** How many code points `text` holds — the unit the sticky column is measured in. */
|
|
81
|
+
function codePointCount(text) {
|
|
82
|
+
let count = 0;
|
|
83
|
+
for (let i = 0; i < text.length; i = nextCodePointEnd(text, i))
|
|
84
|
+
count += 1;
|
|
85
|
+
return count;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* The start of the logical line `cursor` sits on: just past the preceding `\n`, or 0.
|
|
89
|
+
*
|
|
90
|
+
* The zero guard is load-bearing, not defensive. `lastIndexOf` **clamps a negative `fromIndex` to
|
|
91
|
+
* 0** instead of reporting no match, so on a buffer that begins with `\n` — which is exactly what
|
|
92
|
+
* the backslash continuation produces — the caret at offset 0 would find that newline and report
|
|
93
|
+
* the line as starting at 1: `moveLineStart` would move the caret to the *right*, and `layout`
|
|
94
|
+
* would name the wrong row with a column of -1.
|
|
95
|
+
*/
|
|
96
|
+
function lineStartOffset(value, cursor) {
|
|
97
|
+
if (cursor <= 0)
|
|
98
|
+
return 0;
|
|
99
|
+
return value.lastIndexOf('\n', cursor - 1) + 1;
|
|
100
|
+
}
|
|
101
|
+
/** How many newlines precede `offset` — which is the index of the line `offset` sits on. */
|
|
102
|
+
function lineIndexAt(value, offset) {
|
|
103
|
+
let count = 0;
|
|
104
|
+
for (let i = value.indexOf('\n'); i !== -1 && i < offset; i = value.indexOf('\n', i + 1)) {
|
|
105
|
+
count += 1;
|
|
106
|
+
}
|
|
107
|
+
return count;
|
|
108
|
+
}
|
|
109
|
+
/** The end of the logical line `cursor` sits on: the next `\n`, or the end of the buffer. */
|
|
110
|
+
function lineEndOffset(value, cursor) {
|
|
111
|
+
const newline = value.indexOf('\n', cursor);
|
|
112
|
+
return newline === -1 ? value.length : newline;
|
|
113
|
+
}
|
|
114
|
+
/** The offset `column` code points into the line `start`..`end`, clamped to `end`. */
|
|
115
|
+
function offsetForColumn(value, start, end, column) {
|
|
116
|
+
let offset = start;
|
|
117
|
+
for (let stepped = 0; stepped < column && offset < end; stepped += 1) {
|
|
118
|
+
offset = nextCodePointEnd(value, offset);
|
|
119
|
+
}
|
|
120
|
+
return Math.min(offset, end);
|
|
121
|
+
}
|
|
122
|
+
/** The caret's column on its own line, in code points. */
|
|
123
|
+
function currentColumn(state) {
|
|
124
|
+
const start = lineStartOffset(state.value, state.cursor);
|
|
125
|
+
return codePointCount(state.value.slice(start, state.cursor));
|
|
126
|
+
}
|
|
127
|
+
/** Insert literal text at the caret; caret lands after it. `desiredColumn` clears. */
|
|
128
|
+
export function insertText(state, text) {
|
|
129
|
+
if (text === '')
|
|
130
|
+
return at(state, state.cursor);
|
|
131
|
+
return {
|
|
132
|
+
value: state.value.slice(0, state.cursor) + text + state.value.slice(state.cursor),
|
|
133
|
+
cursor: state.cursor + text.length,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
/** Backspace: remove the code point before the caret. No-op at offset 0. */
|
|
137
|
+
export function deleteBackward(state) {
|
|
138
|
+
if (state.cursor <= 0)
|
|
139
|
+
return at(state, 0);
|
|
140
|
+
const start = previousCodePointStart(state.value, state.cursor);
|
|
141
|
+
return {
|
|
142
|
+
value: state.value.slice(0, start) + state.value.slice(state.cursor),
|
|
143
|
+
cursor: start,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
export function moveLeft(state) {
|
|
147
|
+
return at(state, previousCodePointStart(state.value, state.cursor));
|
|
148
|
+
}
|
|
149
|
+
export function moveRight(state) {
|
|
150
|
+
return at(state, nextCodePointEnd(state.value, state.cursor));
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Word motion (readline `Alt+B`): skip separators leftward, then the word itself, landing on its
|
|
154
|
+
* start. `\n` is just another separator, so the motion crosses lines freely.
|
|
155
|
+
*/
|
|
156
|
+
export function moveWordLeft(state) {
|
|
157
|
+
const { value } = state;
|
|
158
|
+
let offset = state.cursor;
|
|
159
|
+
while (offset > 0 && !isWordAt(value, previousCodePointStart(value, offset))) {
|
|
160
|
+
offset = previousCodePointStart(value, offset);
|
|
161
|
+
}
|
|
162
|
+
while (offset > 0 && isWordAt(value, previousCodePointStart(value, offset))) {
|
|
163
|
+
offset = previousCodePointStart(value, offset);
|
|
164
|
+
}
|
|
165
|
+
return at(state, offset);
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Word motion (readline `Alt+F`): skip separators rightward, then the word itself, landing just
|
|
169
|
+
* after its end.
|
|
170
|
+
*/
|
|
171
|
+
export function moveWordRight(state) {
|
|
172
|
+
const { value } = state;
|
|
173
|
+
let offset = state.cursor;
|
|
174
|
+
while (offset < value.length && !isWordAt(value, offset)) {
|
|
175
|
+
offset = nextCodePointEnd(value, offset);
|
|
176
|
+
}
|
|
177
|
+
while (offset < value.length && isWordAt(value, offset)) {
|
|
178
|
+
offset = nextCodePointEnd(value, offset);
|
|
179
|
+
}
|
|
180
|
+
return at(state, offset);
|
|
181
|
+
}
|
|
182
|
+
/** Start of the caret's own LOGICAL line (not of the whole buffer). */
|
|
183
|
+
export function moveLineStart(state) {
|
|
184
|
+
return at(state, lineStartOffset(state.value, state.cursor));
|
|
185
|
+
}
|
|
186
|
+
/** End of the caret's own LOGICAL line (not of the whole buffer). */
|
|
187
|
+
export function moveLineEnd(state) {
|
|
188
|
+
return at(state, lineEndOffset(state.value, state.cursor));
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Up one logical line, honouring the sticky {@link EditorState.desiredColumn}.
|
|
192
|
+
*
|
|
193
|
+
* On the first line there is nowhere to go, but the column is still recorded: that is what lets
|
|
194
|
+
* Up-Down-Up out of a long line and back keep the column it started from.
|
|
195
|
+
*/
|
|
196
|
+
export function moveLineUp(state) {
|
|
197
|
+
const { value } = state;
|
|
198
|
+
const column = state.desiredColumn ?? currentColumn(state);
|
|
199
|
+
const start = lineStartOffset(value, state.cursor);
|
|
200
|
+
if (start === 0)
|
|
201
|
+
return { value, cursor: state.cursor, desiredColumn: column };
|
|
202
|
+
const previousStart = lineStartOffset(value, start - 1);
|
|
203
|
+
return {
|
|
204
|
+
value,
|
|
205
|
+
cursor: offsetForColumn(value, previousStart, start - 1, column),
|
|
206
|
+
desiredColumn: column,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
/** Down one logical line, honouring the sticky {@link EditorState.desiredColumn}. */
|
|
210
|
+
export function moveLineDown(state) {
|
|
211
|
+
const { value } = state;
|
|
212
|
+
const column = state.desiredColumn ?? currentColumn(state);
|
|
213
|
+
const end = lineEndOffset(value, state.cursor);
|
|
214
|
+
if (end === value.length)
|
|
215
|
+
return { value, cursor: state.cursor, desiredColumn: column };
|
|
216
|
+
const nextStart = end + 1;
|
|
217
|
+
return {
|
|
218
|
+
value,
|
|
219
|
+
cursor: offsetForColumn(value, nextStart, lineEndOffset(value, nextStart), column),
|
|
220
|
+
desiredColumn: column,
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* What Enter means for this state: a backslash immediately before the caret continues the line
|
|
225
|
+
* (the backslash is replaced by a newline), anything else submits the buffer exactly as typed —
|
|
226
|
+
* untrimmed, newlines intact. Clearing the buffer and dispatching the submission belong to the
|
|
227
|
+
* caller.
|
|
228
|
+
*/
|
|
229
|
+
export function pressEnter(state) {
|
|
230
|
+
const { value, cursor } = state;
|
|
231
|
+
const start = previousCodePointStart(value, cursor);
|
|
232
|
+
if (cursor > 0 && value.slice(start, cursor) === '\\') {
|
|
233
|
+
return {
|
|
234
|
+
kind: 'continue',
|
|
235
|
+
state: { value: `${value.slice(0, start)}\n${value.slice(cursor)}`, cursor: start + 1 },
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
return { kind: 'submit', value };
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* What the renderer needs: the logical lines and where the caret is among them. An empty buffer is
|
|
242
|
+
* one empty line, and a trailing `\n` yields a final empty line — the row the caret sits on after
|
|
243
|
+
* a continuation, which still has to be drawn.
|
|
244
|
+
*/
|
|
245
|
+
export function layout(state) {
|
|
246
|
+
const lines = state.value.split('\n');
|
|
247
|
+
const start = lineStartOffset(state.value, state.cursor);
|
|
248
|
+
return { lines, line: lineIndexAt(state.value, start), column: state.cursor - start };
|
|
249
|
+
}
|
|
250
|
+
//# sourceMappingURL=lineEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lineEditor.js","sourceRoot":"","sources":["../../src/tui/lineEditor.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gaunt-sloth",
|
|
3
|
-
"version": "2.0.0-alpha.
|
|
3
|
+
"version": "2.0.0-alpha.32",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Andrew Kondratev",
|
|
@@ -44,17 +44,16 @@
|
|
|
44
44
|
"@langchain/xai": "^1.4.5",
|
|
45
45
|
"commander": "^15.0.0",
|
|
46
46
|
"zod": "^4.4.3",
|
|
47
|
-
"@gaunt-sloth/
|
|
48
|
-
"@gaunt-sloth/
|
|
49
|
-
"@gaunt-sloth/
|
|
50
|
-
"@gaunt-sloth/
|
|
51
|
-
"@gaunt-sloth/
|
|
47
|
+
"@gaunt-sloth/agent": "2.0.0-alpha.32",
|
|
48
|
+
"@gaunt-sloth/batch": "2.0.0-alpha.32",
|
|
49
|
+
"@gaunt-sloth/review": "2.0.0-alpha.32",
|
|
50
|
+
"@gaunt-sloth/core": "2.0.0-alpha.32",
|
|
51
|
+
"@gaunt-sloth/eval-reporter-junit": "0.1.0"
|
|
52
52
|
},
|
|
53
53
|
"optionalDependencies": {
|
|
54
54
|
"chalk": "^6.0.0",
|
|
55
55
|
"ink": "^7.1.1",
|
|
56
56
|
"ink-spinner": "^5.0.0",
|
|
57
|
-
"ink-text-input": "^6.0.0",
|
|
58
57
|
"react": "^19.2.8"
|
|
59
58
|
},
|
|
60
59
|
"devDependencies": {
|