codebase-cli 2.0.0-pre.2 → 2.0.0-pre.20
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/agent/agent.js +2 -0
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/config.js +76 -9
- package/dist/agent/config.js.map +1 -1
- package/dist/app-server/protocol.js +7 -0
- package/dist/app-server/protocol.js.map +1 -0
- package/dist/app-server/server.js +241 -0
- package/dist/app-server/server.js.map +1 -0
- package/dist/auth/flow.js +174 -41
- package/dist/auth/flow.js.map +1 -1
- package/dist/cli.js +47 -6
- package/dist/cli.js.map +1 -1
- package/dist/commands/builtins.js +88 -5
- package/dist/commands/builtins.js.map +1 -1
- package/dist/commands/registry.js +46 -1
- package/dist/commands/registry.js.map +1 -1
- package/dist/headless/run.js +1 -1
- package/dist/headless/run.js.map +1 -1
- package/dist/permissions/store.js +4 -0
- package/dist/permissions/store.js.map +1 -1
- package/dist/projects/cli.js +92 -0
- package/dist/projects/cli.js.map +1 -0
- package/dist/projects/client.js +120 -0
- package/dist/projects/client.js.map +1 -0
- package/dist/projects/types.js +2 -0
- package/dist/projects/types.js.map +1 -0
- package/dist/skills/platform-loader.js +133 -38
- package/dist/skills/platform-loader.js.map +1 -1
- package/dist/ui/App.js +122 -12
- package/dist/ui/App.js.map +1 -1
- package/dist/ui/FirstRunSetup.js +90 -15
- package/dist/ui/FirstRunSetup.js.map +1 -1
- package/dist/ui/Input.js +245 -13
- package/dist/ui/Input.js.map +1 -1
- package/dist/ui/Markdown.js +286 -0
- package/dist/ui/Markdown.js.map +1 -0
- package/dist/ui/Message.js +449 -25
- package/dist/ui/Message.js.map +1 -1
- package/dist/ui/MessageList.js +7 -2
- package/dist/ui/MessageList.js.map +1 -1
- package/dist/ui/Permission.js +43 -20
- package/dist/ui/Permission.js.map +1 -1
- package/dist/ui/PixelC.js +25 -0
- package/dist/ui/PixelC.js.map +1 -0
- package/dist/ui/Status.js +213 -7
- package/dist/ui/Status.js.map +1 -1
- package/dist/ui/Throbber.js +11 -7
- package/dist/ui/Throbber.js.map +1 -1
- package/dist/ui/Welcome.js +59 -0
- package/dist/ui/Welcome.js.map +1 -0
- package/dist/ui/attachments.js +68 -0
- package/dist/ui/attachments.js.map +1 -0
- package/dist/ui/debug-input.js +44 -0
- package/dist/ui/debug-input.js.map +1 -0
- package/dist/ui/highlight.js +324 -0
- package/dist/ui/highlight.js.map +1 -0
- package/dist/ui/history-store.js +60 -0
- package/dist/ui/history-store.js.map +1 -0
- package/dist/ui/path-complete.js +102 -0
- package/dist/ui/path-complete.js.map +1 -0
- package/dist/ui/terminal-restore.js +83 -0
- package/dist/ui/terminal-restore.js.map +1 -0
- package/package.json +3 -1
package/dist/ui/FirstRunSetup.js
CHANGED
|
@@ -3,6 +3,7 @@ import { Box, Text, useInput } from "ink";
|
|
|
3
3
|
import { useEffect, useMemo, useState } from "react";
|
|
4
4
|
import { CredentialsStore } from "../auth/credentials.js";
|
|
5
5
|
import { runOAuthLogin } from "../auth/flow.js";
|
|
6
|
+
import { PixelC } from "./PixelC.js";
|
|
6
7
|
const DEFAULT_AUTH_BASE = "https://codebase.design";
|
|
7
8
|
const PROVIDER_CHOICES = [
|
|
8
9
|
{ id: "anthropic", label: "Anthropic (Claude)", hint: "claude-sonnet-4 default", keyHint: "sk-ant-…" },
|
|
@@ -15,8 +16,14 @@ const PROVIDER_CHOICES = [
|
|
|
15
16
|
{ id: "xai", label: "xAI (Grok)", hint: "grok-4", keyHint: "xai-…" },
|
|
16
17
|
{ id: "cerebras", label: "Cerebras", hint: "fastest inference", keyHint: "" },
|
|
17
18
|
];
|
|
19
|
+
const MENU_OPTIONS = [
|
|
20
|
+
{ key: "oauth", label: "Login to Codebase", hint: "free credits · Codebase Auto model · curated skills" },
|
|
21
|
+
{ key: "byok", label: "Bring your own LLM key", hint: "paste an Anthropic / OpenAI / Groq / etc. key" },
|
|
22
|
+
{ key: "quit", label: "Quit", hint: "exit the wizard" },
|
|
23
|
+
];
|
|
18
24
|
export function FirstRunSetup({ onDone, onQuit, store, authBase = DEFAULT_AUTH_BASE }) {
|
|
19
|
-
const [mode, setMode] = useState({ kind: "menu" });
|
|
25
|
+
const [mode, setMode] = useState({ kind: "menu", cursor: 0 });
|
|
26
|
+
const [manualUrl, setManualUrl] = useState(undefined);
|
|
20
27
|
const credStore = useMemo(() => store ?? new CredentialsStore(), [store]);
|
|
21
28
|
useEffect(() => {
|
|
22
29
|
if (mode.kind !== "oauth-running")
|
|
@@ -25,7 +32,13 @@ export function FirstRunSetup({ onDone, onQuit, store, authBase = DEFAULT_AUTH_B
|
|
|
25
32
|
(async () => {
|
|
26
33
|
try {
|
|
27
34
|
const config = oauthConfigForBase(authBase);
|
|
28
|
-
const creds = await runOAuthLogin(config
|
|
35
|
+
const creds = await runOAuthLogin(config, {
|
|
36
|
+
onManualUrl: (url, reason) => {
|
|
37
|
+
if (cancelled)
|
|
38
|
+
return;
|
|
39
|
+
setManualUrl({ url, reason });
|
|
40
|
+
},
|
|
41
|
+
});
|
|
29
42
|
if (cancelled)
|
|
30
43
|
return;
|
|
31
44
|
credStore.save({
|
|
@@ -43,6 +56,7 @@ export function FirstRunSetup({ onDone, onQuit, store, authBase = DEFAULT_AUTH_B
|
|
|
43
56
|
if (cancelled)
|
|
44
57
|
return;
|
|
45
58
|
setMode({ kind: "error", message: err instanceof Error ? err.message : String(err) });
|
|
59
|
+
setManualUrl(undefined);
|
|
46
60
|
}
|
|
47
61
|
})();
|
|
48
62
|
return () => {
|
|
@@ -55,22 +69,48 @@ export function FirstRunSetup({ onDone, onQuit, store, authBase = DEFAULT_AUTH_B
|
|
|
55
69
|
return;
|
|
56
70
|
}
|
|
57
71
|
if (mode.kind === "menu") {
|
|
58
|
-
if (
|
|
59
|
-
setMode({ kind: "
|
|
72
|
+
if (key.upArrow || (key.shift && key.tab)) {
|
|
73
|
+
setMode({ kind: "menu", cursor: (mode.cursor - 1 + MENU_OPTIONS.length) % MENU_OPTIONS.length });
|
|
74
|
+
return;
|
|
60
75
|
}
|
|
61
|
-
|
|
62
|
-
setMode({ kind: "
|
|
76
|
+
if (key.downArrow || key.tab) {
|
|
77
|
+
setMode({ kind: "menu", cursor: (mode.cursor + 1) % MENU_OPTIONS.length });
|
|
78
|
+
return;
|
|
63
79
|
}
|
|
64
|
-
|
|
65
|
-
|
|
80
|
+
if (key.return) {
|
|
81
|
+
applyMenuChoice(MENU_OPTIONS[mode.cursor].key);
|
|
82
|
+
return;
|
|
66
83
|
}
|
|
84
|
+
// Number-key fast-path stays for muscle memory.
|
|
85
|
+
if (input === "1")
|
|
86
|
+
applyMenuChoice("oauth");
|
|
87
|
+
else if (input === "2")
|
|
88
|
+
applyMenuChoice("byok");
|
|
89
|
+
else if (input === "3" || input === "q")
|
|
90
|
+
applyMenuChoice("quit");
|
|
67
91
|
return;
|
|
68
92
|
}
|
|
69
93
|
if (mode.kind === "byok-provider") {
|
|
70
94
|
if (key.escape) {
|
|
71
|
-
setMode({ kind: "menu" });
|
|
95
|
+
setMode({ kind: "menu", cursor: 1 });
|
|
72
96
|
return;
|
|
73
97
|
}
|
|
98
|
+
if (key.upArrow || (key.shift && key.tab)) {
|
|
99
|
+
setMode({
|
|
100
|
+
kind: "byok-provider",
|
|
101
|
+
cursor: (mode.cursor - 1 + PROVIDER_CHOICES.length) % PROVIDER_CHOICES.length,
|
|
102
|
+
});
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
if (key.downArrow || key.tab) {
|
|
106
|
+
setMode({ kind: "byok-provider", cursor: (mode.cursor + 1) % PROVIDER_CHOICES.length });
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
if (key.return) {
|
|
110
|
+
setMode({ kind: "byok-key", provider: PROVIDER_CHOICES[mode.cursor], buffer: "" });
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
// Number-key fast-path stays.
|
|
74
114
|
const idx = Number.parseInt(input, 10) - 1;
|
|
75
115
|
if (Number.isInteger(idx) && idx >= 0 && idx < PROVIDER_CHOICES.length) {
|
|
76
116
|
setMode({ kind: "byok-key", provider: PROVIDER_CHOICES[idx], buffer: "" });
|
|
@@ -79,7 +119,7 @@ export function FirstRunSetup({ onDone, onQuit, store, authBase = DEFAULT_AUTH_B
|
|
|
79
119
|
}
|
|
80
120
|
if (mode.kind === "byok-key") {
|
|
81
121
|
if (key.escape) {
|
|
82
|
-
setMode({ kind: "byok-provider" });
|
|
122
|
+
setMode({ kind: "byok-provider", cursor: 0 });
|
|
83
123
|
return;
|
|
84
124
|
}
|
|
85
125
|
if (key.return) {
|
|
@@ -114,21 +154,44 @@ export function FirstRunSetup({ onDone, onQuit, store, authBase = DEFAULT_AUTH_B
|
|
|
114
154
|
}
|
|
115
155
|
if (mode.kind === "error") {
|
|
116
156
|
if (key.return || key.escape || input === " ") {
|
|
117
|
-
setMode({ kind: "menu" });
|
|
157
|
+
setMode({ kind: "menu", cursor: 0 });
|
|
118
158
|
}
|
|
119
159
|
}
|
|
120
160
|
}, { isActive: mode.kind !== "oauth-running" });
|
|
121
|
-
|
|
161
|
+
function applyMenuChoice(choice) {
|
|
162
|
+
if (choice === "oauth")
|
|
163
|
+
setMode({ kind: "oauth-running" });
|
|
164
|
+
else if (choice === "byok")
|
|
165
|
+
setMode({ kind: "byok-provider", cursor: 0 });
|
|
166
|
+
else
|
|
167
|
+
onQuit();
|
|
168
|
+
}
|
|
169
|
+
return (_jsxs(Box, { flexDirection: "column", paddingX: 1, paddingY: 1, children: [_jsx(BrandHeader, {}), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { dimColor: true, children: "Pick how you want to power the agent. You can change this later via `codebase auth`." }) }), renderBody(mode, authBase, manualUrl)] }));
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Branded header — static pixel C + "codebase" wordmark.
|
|
173
|
+
*/
|
|
174
|
+
function BrandHeader() {
|
|
175
|
+
return (_jsxs(Box, { flexDirection: "row", marginBottom: 1, children: [_jsx(Box, { marginRight: 2, children: _jsx(PixelC, {}) }), _jsxs(Box, { flexDirection: "column", justifyContent: "center", children: [_jsx(Text, { bold: true, color: "cyan", children: "codebase" }), _jsx(Text, { dimColor: true, children: "AI coding agent \u00B7 CLI" })] })] }));
|
|
122
176
|
}
|
|
123
|
-
function renderBody(mode, authBase) {
|
|
177
|
+
function renderBody(mode, authBase, manualUrl) {
|
|
124
178
|
if (mode.kind === "menu") {
|
|
125
|
-
return (_jsxs(Box, { flexDirection: "column", children: [
|
|
179
|
+
return (_jsxs(Box, { flexDirection: "column", children: [MENU_OPTIONS.map((opt, i) => {
|
|
180
|
+
const selected = i === mode.cursor;
|
|
181
|
+
return (_jsxs(Text, { children: [_jsx(Text, { color: selected ? "cyan" : "gray", children: selected ? "▸ " : " " }), _jsx(Text, { bold: selected, color: selected ? "white" : undefined, children: opt.label }), _jsx(Text, { dimColor: true, children: " — " + opt.hint })] }, opt.key));
|
|
182
|
+
}), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "\u2191\u2193 to move \u00B7 Enter to select \u00B7 1/2/3 fast-path \u00B7 Ctrl-C to quit" }) })] }));
|
|
126
183
|
}
|
|
127
184
|
if (mode.kind === "oauth-running") {
|
|
185
|
+
if (manualUrl) {
|
|
186
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, color: "yellow", children: "Sign in to continue" }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: manualUrl.reason }) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { bold: true, color: "cyan", children: osc8Link(manualUrl.url, "→ Click here to sign in (cmd-click in most terminals)") }) }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { dimColor: true, children: "If clicking didn't open a browser, copy this URL:" }), _jsx(Text, { dimColor: true, children: manualUrl.url })] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Waiting for the browser to redirect back. (Ctrl-C to cancel.)" }) })] }));
|
|
187
|
+
}
|
|
128
188
|
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { children: ["Opening ", _jsx(Text, { color: "cyan", children: authBase }), " in your browser\u2026"] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Complete sign-in in the browser tab. This window will continue automatically." }) })] }));
|
|
129
189
|
}
|
|
130
190
|
if (mode.kind === "byok-provider") {
|
|
131
|
-
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, children: "Pick a provider:" }), _jsx(Box, { flexDirection: "column",
|
|
191
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, children: "Pick a provider:" }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: PROVIDER_CHOICES.map((p, i) => {
|
|
192
|
+
const selected = i === mode.cursor;
|
|
193
|
+
return (_jsxs(Text, { children: [_jsx(Text, { color: selected ? "cyan" : "gray", children: selected ? "▸ " : " " }), _jsx(Text, { bold: selected, color: selected ? "white" : undefined, children: p.label }), _jsx(Text, { dimColor: true, children: " — " + p.hint })] }, p.id));
|
|
194
|
+
}) }), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { dimColor: true, children: ["\u2191\u2193 to move \u00B7 Enter to select \u00B7 1\u2013", PROVIDER_CHOICES.length, " fast-path \u00B7 Esc to go back"] }) })] }));
|
|
132
195
|
}
|
|
133
196
|
if (mode.kind === "byok-key") {
|
|
134
197
|
const masked = "•".repeat(Math.min(mode.buffer.length, 40));
|
|
@@ -139,6 +202,18 @@ function renderBody(mode, authBase) {
|
|
|
139
202
|
}
|
|
140
203
|
// Mirrors src/auth/cli.ts's defaultOAuthConfig — see that file for the
|
|
141
204
|
// canonical shape and the OAuth alignment audit.
|
|
205
|
+
/**
|
|
206
|
+
* Wrap text in an OSC 8 hyperlink escape so it renders as a single
|
|
207
|
+
* clickable element regardless of how the terminal wraps the visible
|
|
208
|
+
* text. Modern terminals (iTerm2, recent Terminal.app, Kitty,
|
|
209
|
+
* Wezterm, Alacritty, VSCode terminal) honor this; older terminals
|
|
210
|
+
* just see the display text. We always render the bare URL on a
|
|
211
|
+
* separate line below as a copy-paste fallback.
|
|
212
|
+
*/
|
|
213
|
+
function osc8Link(url, displayText) {
|
|
214
|
+
const ESC = "";
|
|
215
|
+
return `${ESC}]8;;${url}${ESC}\\${displayText}${ESC}]8;;${ESC}\\`;
|
|
216
|
+
}
|
|
142
217
|
function oauthConfigForBase(base) {
|
|
143
218
|
const trimmed = base.replace(/\/+$/, "");
|
|
144
219
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FirstRunSetup.js","sourceRoot":"","sources":["../../src/ui/FirstRunSetup.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FirstRunSetup.js","sourceRoot":"","sources":["../../src/ui/FirstRunSetup.tsx"],"names":[],"mappings":"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"}
|
package/dist/ui/Input.js
CHANGED
|
@@ -1,7 +1,32 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { Box, Text, useInput } from "ink";
|
|
3
|
-
import { useState } from "react";
|
|
3
|
+
import { useMemo, useRef, useState } from "react";
|
|
4
|
+
import { logInputEvent } from "./debug-input.js";
|
|
4
5
|
import { backspace, deleteForward, initialInputState, insertChar, killToEnd, killToStart, killWordBack, moveEnd, moveLeft, moveRight, moveStart, undo, yank, } from "./input-state.js";
|
|
6
|
+
import { completePath, findAtTokenAt } from "./path-complete.js";
|
|
7
|
+
const MAX_SUGGESTIONS = 6;
|
|
8
|
+
const PLACEHOLDERS_FRESH = [
|
|
9
|
+
"Ask anything · / for commands",
|
|
10
|
+
"Try /help to see what I can do",
|
|
11
|
+
"Tell me what to build · / for commands",
|
|
12
|
+
"Paste a stack trace, a TODO, or a question",
|
|
13
|
+
"What are we working on?",
|
|
14
|
+
];
|
|
15
|
+
const PLACEHOLDERS_RETURNING = [
|
|
16
|
+
"Welcome back · ↑ for prior prompts",
|
|
17
|
+
"Picking up where you left off · ↑ for history",
|
|
18
|
+
"What's next? · ↑ recalls past prompts",
|
|
19
|
+
"Ready when you are · / for commands · ↑ for history",
|
|
20
|
+
];
|
|
21
|
+
/**
|
|
22
|
+
* Pick a placeholder once per Input mount. The returning-user variants
|
|
23
|
+
* mention ↑ for history so users with persisted prompts learn the
|
|
24
|
+
* shortcut; fresh sessions emphasize / and free-form prompts.
|
|
25
|
+
*/
|
|
26
|
+
function pickPlaceholder(hasHistory) {
|
|
27
|
+
const pool = hasHistory ? PLACEHOLDERS_RETURNING : PLACEHOLDERS_FRESH;
|
|
28
|
+
return pool[Math.floor(Math.random() * pool.length)];
|
|
29
|
+
}
|
|
5
30
|
/**
|
|
6
31
|
* Single-line input with Emacs / readline editing. Cursor positioning,
|
|
7
32
|
* kill ring with Ctrl-K/U/W/Y, and Ctrl-Z undo. Stay in tight feedback
|
|
@@ -20,20 +45,166 @@ import { backspace, deleteForward, initialInputState, insertChar, killToEnd, kil
|
|
|
20
45
|
* Ctrl-Z undo
|
|
21
46
|
* Ctrl-C abort (busy → cancel turn, idle → exit app)
|
|
22
47
|
*/
|
|
23
|
-
export function Input({ disabled, onSubmit, onAbort }) {
|
|
48
|
+
export function Input({ disabled, onSubmit, onAbort, commands, history, cwd }) {
|
|
24
49
|
const [state, setState] = useState(initialInputState());
|
|
50
|
+
const [suggestionIdx, setSuggestionIdx] = useState(0);
|
|
51
|
+
/**
|
|
52
|
+
* History cursor:
|
|
53
|
+
* -1 → live buffer (no history navigation in progress)
|
|
54
|
+
* 0..N-1 → indexing from the newest backwards (0 = most recent)
|
|
55
|
+
* We snapshot the live buffer the first time the user steps into
|
|
56
|
+
* history so ↓-past-newest returns to whatever they were typing.
|
|
57
|
+
*/
|
|
58
|
+
const [historyIdx, setHistoryIdx] = useState(-1);
|
|
59
|
+
const [liveBuffer, setLiveBuffer] = useState(null);
|
|
60
|
+
// Stable per-mount placeholder so the hint doesn't flicker between renders.
|
|
61
|
+
const placeholderRef = useRef(pickPlaceholder((history?.length ?? 0) > 0));
|
|
62
|
+
// @-path completion cycler — `pathMatches` is the list, `pathIdx` is
|
|
63
|
+
// the current cycle position. Both reset whenever the buffer
|
|
64
|
+
// changes away from the active @-token.
|
|
65
|
+
const [pathMatches, setPathMatches] = useState([]);
|
|
66
|
+
const [pathIdx, setPathIdx] = useState(0);
|
|
67
|
+
const lastAtTokenRef = useRef(null);
|
|
68
|
+
// Autocomplete only fires when the buffer starts with `/` AND there's
|
|
69
|
+
// no whitespace yet (so once the user types a space, they're past the
|
|
70
|
+
// command name and into args — no more suggestions).
|
|
71
|
+
const autocompleteActive = state.buffer.startsWith("/") && !state.buffer.includes(" ");
|
|
72
|
+
const suggestions = useMemo(() => {
|
|
73
|
+
if (!autocompleteActive || !commands)
|
|
74
|
+
return [];
|
|
75
|
+
const query = state.buffer.slice(1).toLowerCase();
|
|
76
|
+
const matches = commands.filter((c) => c.name.toLowerCase().startsWith(query));
|
|
77
|
+
return matches.slice(0, MAX_SUGGESTIONS);
|
|
78
|
+
}, [autocompleteActive, commands, state.buffer]);
|
|
79
|
+
const clampedSuggestionIdx = Math.min(suggestionIdx, Math.max(0, suggestions.length - 1));
|
|
25
80
|
useInput((input, key) => {
|
|
81
|
+
// First thing — log every keystroke when --debug-input is on, so
|
|
82
|
+
// we can diagnose "key X doesn't work" reports from real terminals.
|
|
83
|
+
logInputEvent(input, key);
|
|
26
84
|
if (key.ctrl && input === "c") {
|
|
27
85
|
onAbort?.();
|
|
28
86
|
return;
|
|
29
87
|
}
|
|
30
88
|
if (disabled)
|
|
31
89
|
return;
|
|
90
|
+
// Autocomplete navigation runs BEFORE generic input handling so Tab
|
|
91
|
+
// doesn't insert a literal tab and arrow keys don't fight cursor
|
|
92
|
+
// movement when we have a suggestion list to navigate.
|
|
93
|
+
if (autocompleteActive && suggestions.length > 0) {
|
|
94
|
+
if (key.upArrow) {
|
|
95
|
+
setSuggestionIdx((i) => (i - 1 + suggestions.length) % suggestions.length);
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
if (key.downArrow) {
|
|
99
|
+
setSuggestionIdx((i) => (i + 1) % suggestions.length);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
if (key.tab) {
|
|
103
|
+
const chosen = suggestions[clampedSuggestionIdx];
|
|
104
|
+
setState({ ...initialInputState(), buffer: `/${chosen.name} `, cursor: chosen.name.length + 2 });
|
|
105
|
+
setSuggestionIdx(0);
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// @-path Tab completion. Only kicks in when slash autocomplete is
|
|
110
|
+
// inactive and the cursor sits inside an @-token. Repeated Tab
|
|
111
|
+
// cycles through matches; any keypress other than Tab clears the
|
|
112
|
+
// cycle so the next Tab recomputes a fresh list.
|
|
113
|
+
if (key.tab && !autocompleteActive && cwd) {
|
|
114
|
+
const at = findAtTokenAt(state.buffer, state.cursor);
|
|
115
|
+
if (at) {
|
|
116
|
+
let matches = pathMatches;
|
|
117
|
+
let idx = pathIdx;
|
|
118
|
+
const cached = lastAtTokenRef.current;
|
|
119
|
+
const sameContext = cached && cached.buffer === state.buffer && cached.cursor === state.cursor && matches.length > 0;
|
|
120
|
+
if (!sameContext) {
|
|
121
|
+
matches = completePath(at.prefix, cwd);
|
|
122
|
+
idx = 0;
|
|
123
|
+
setPathMatches(matches);
|
|
124
|
+
setPathIdx(0);
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
idx = (idx + 1) % matches.length;
|
|
128
|
+
setPathIdx(idx);
|
|
129
|
+
}
|
|
130
|
+
if (matches.length === 0)
|
|
131
|
+
return;
|
|
132
|
+
const chosen = matches[idx];
|
|
133
|
+
const before = state.buffer.slice(0, at.start);
|
|
134
|
+
const after = state.buffer.slice(state.cursor);
|
|
135
|
+
const inserted = `@${chosen}`;
|
|
136
|
+
const newBuffer = before + inserted + after;
|
|
137
|
+
const newCursor = before.length + inserted.length;
|
|
138
|
+
setState({ ...initialInputState(), buffer: newBuffer, cursor: newCursor });
|
|
139
|
+
lastAtTokenRef.current = { buffer: newBuffer, cursor: newCursor };
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
// History navigation: only when autocomplete is closed and the
|
|
144
|
+
// cursor sits at the start of the buffer (or buffer is empty).
|
|
145
|
+
// That way ↑/↓ in the middle of a long line still behave as
|
|
146
|
+
// cursor moves, matching shell readline.
|
|
147
|
+
if (history && history.length > 0 && !autocompleteActive && state.cursor === 0) {
|
|
148
|
+
if (key.upArrow) {
|
|
149
|
+
const nextIdx = historyIdx < 0 ? 0 : Math.min(historyIdx + 1, history.length - 1);
|
|
150
|
+
if (historyIdx < 0)
|
|
151
|
+
setLiveBuffer(state.buffer);
|
|
152
|
+
const entry = history[history.length - 1 - nextIdx] ?? "";
|
|
153
|
+
setHistoryIdx(nextIdx);
|
|
154
|
+
setState({ ...initialInputState(), buffer: entry, cursor: entry.length });
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
if (key.downArrow) {
|
|
158
|
+
if (historyIdx < 0)
|
|
159
|
+
return; // already at live buffer
|
|
160
|
+
const nextIdx = historyIdx - 1;
|
|
161
|
+
if (nextIdx < 0) {
|
|
162
|
+
const restored = liveBuffer ?? "";
|
|
163
|
+
setHistoryIdx(-1);
|
|
164
|
+
setLiveBuffer(null);
|
|
165
|
+
setState({ ...initialInputState(), buffer: restored, cursor: restored.length });
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
const entry = history[history.length - 1 - nextIdx] ?? "";
|
|
169
|
+
setHistoryIdx(nextIdx);
|
|
170
|
+
setState({ ...initialInputState(), buffer: entry, cursor: entry.length });
|
|
171
|
+
}
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
// Esc clears the buffer back to empty (and exits history mode) so
|
|
176
|
+
// the user can bail out of a half-typed prompt without having to
|
|
177
|
+
// hammer Backspace. Matches CC's behavior; harmless when empty.
|
|
178
|
+
if (key.escape) {
|
|
179
|
+
if (state.buffer.length === 0 && historyIdx < 0)
|
|
180
|
+
return;
|
|
181
|
+
setState(initialInputState());
|
|
182
|
+
setSuggestionIdx(0);
|
|
183
|
+
setHistoryIdx(-1);
|
|
184
|
+
setLiveBuffer(null);
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
32
187
|
if (key.return) {
|
|
188
|
+
// `\<Enter>` inserts a newline instead of submitting — the CC
|
|
189
|
+
// convention for multi-line input. Strip the trailing `\` and
|
|
190
|
+
// replace it with a newline so the buffer reads cleanly.
|
|
191
|
+
if (state.buffer.endsWith("\\") && state.cursor === state.buffer.length) {
|
|
192
|
+
const stripped = state.buffer.slice(0, -1);
|
|
193
|
+
setState({ ...initialInputState(), buffer: `${stripped}\n`, cursor: stripped.length + 1 });
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
// Enter on a single-suggestion autocomplete still submits — if
|
|
197
|
+
// the user wanted to complete, they'd Tab. If they hit Enter on
|
|
198
|
+
// `/cos`, that's a clear "run /cost" intent only if it's an
|
|
199
|
+
// exact match; otherwise we submit as-typed and let the command
|
|
200
|
+
// registry's not-found path surface the typo.
|
|
33
201
|
const trimmed = state.buffer.trim();
|
|
34
202
|
if (trimmed.length > 0) {
|
|
35
203
|
onSubmit(trimmed);
|
|
36
204
|
setState(initialInputState());
|
|
205
|
+
setSuggestionIdx(0);
|
|
206
|
+
setHistoryIdx(-1);
|
|
207
|
+
setLiveBuffer(null);
|
|
37
208
|
}
|
|
38
209
|
return;
|
|
39
210
|
}
|
|
@@ -46,13 +217,35 @@ export function Input({ disabled, onSubmit, onAbort }) {
|
|
|
46
217
|
return setState(moveStart(state));
|
|
47
218
|
if (key.ctrl && input === "e")
|
|
48
219
|
return setState(moveEnd(state));
|
|
49
|
-
// Edits
|
|
50
|
-
|
|
220
|
+
// Edits. Some terminals (Linux console, tmux, certain SSH configs)
|
|
221
|
+
// deliver Backspace as raw 0x7f/0x08 without setting key.backspace,
|
|
222
|
+
// or even surface it as key.delete. We catch every shape so the
|
|
223
|
+
// floor — "Backspace deletes a char" — always works.
|
|
224
|
+
const isBackspaceByte = input === "\x7f" || input === "\b";
|
|
225
|
+
if (key.backspace || isBackspaceByte) {
|
|
226
|
+
setSuggestionIdx(0);
|
|
51
227
|
return setState(backspace(state));
|
|
52
|
-
|
|
228
|
+
}
|
|
229
|
+
// `key.delete` historically also fires for Backspace on some Ink
|
|
230
|
+
// builds, so prefer the backspace semantics when the buffer is
|
|
231
|
+
// non-empty and the cursor isn't at end-of-line. Forward-delete
|
|
232
|
+
// stays accessible via Ctrl-D.
|
|
233
|
+
if (key.delete) {
|
|
234
|
+
if (state.cursor > 0 && state.cursor === state.buffer.length) {
|
|
235
|
+
setSuggestionIdx(0);
|
|
236
|
+
return setState(backspace(state));
|
|
237
|
+
}
|
|
53
238
|
return setState(deleteForward(state));
|
|
54
|
-
|
|
239
|
+
}
|
|
240
|
+
// Ctrl-D matches readline: on an empty buffer it's EOF (i.e. quit),
|
|
241
|
+
// on a non-empty buffer it deletes forward like Delete.
|
|
242
|
+
if (key.ctrl && input === "d") {
|
|
243
|
+
if (state.buffer.length === 0) {
|
|
244
|
+
onAbort?.();
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
55
247
|
return setState(deleteForward(state));
|
|
248
|
+
}
|
|
56
249
|
// Kill ring
|
|
57
250
|
if (key.ctrl && input === "k")
|
|
58
251
|
return setState(killToEnd(state));
|
|
@@ -65,20 +258,59 @@ export function Input({ disabled, onSubmit, onAbort }) {
|
|
|
65
258
|
// Undo
|
|
66
259
|
if (key.ctrl && input === "z")
|
|
67
260
|
return setState(undo(state));
|
|
68
|
-
// Printable text — Ink's useInput delivers individual chars (or pasted runs)
|
|
69
|
-
|
|
261
|
+
// Printable text — Ink's useInput delivers individual chars (or pasted runs).
|
|
262
|
+
// Strip control bytes (0x00–0x1f, 0x7f) so a stray Backspace or escape
|
|
263
|
+
// fragment doesn't end up inserted as a glyph in the buffer.
|
|
264
|
+
const isPrintable = input && !key.ctrl && !key.meta && !/[\x00-\x1f\x7f]/.test(input);
|
|
265
|
+
if (isPrintable) {
|
|
266
|
+
setSuggestionIdx(0);
|
|
267
|
+
// Once the user starts editing on top of a recalled history
|
|
268
|
+
// entry, snap out of history mode — the entry is now their
|
|
269
|
+
// own buffer and ↓ shouldn't try to bring it back.
|
|
270
|
+
if (historyIdx >= 0) {
|
|
271
|
+
setHistoryIdx(-1);
|
|
272
|
+
setLiveBuffer(null);
|
|
273
|
+
}
|
|
274
|
+
// Break the @-Tab cycle so the next Tab recomputes from the new text.
|
|
275
|
+
if (pathMatches.length > 0) {
|
|
276
|
+
setPathMatches([]);
|
|
277
|
+
setPathIdx(0);
|
|
278
|
+
lastAtTokenRef.current = null;
|
|
279
|
+
}
|
|
70
280
|
setState(insertChar(state, input));
|
|
71
281
|
}
|
|
72
282
|
});
|
|
73
|
-
return (_jsxs(Box, { paddingX: 1, children: [_jsxs(Text, { color: disabled ? "gray" : "cyan", children: [disabled ? "·" : ">", " "] }), disabled ? _jsx(Text, { children: state.buffer }) : _jsx(RenderedBuffer, { buffer: state.buffer, cursor: state.cursor })] }));
|
|
283
|
+
return (_jsxs(Box, { flexDirection: "column", children: [autocompleteActive && suggestions.length > 0 ? (_jsx(SlashSuggestions, { suggestions: suggestions, selected: clampedSuggestionIdx })) : null, _jsxs(Box, { paddingX: 1, children: [_jsxs(Text, { color: disabled ? "gray" : "cyan", children: [disabled ? "·" : ">", " "] }), disabled ? (_jsx(Text, { children: state.buffer })) : state.buffer.length === 0 ? (_jsxs(_Fragment, { children: [_jsx(Text, { color: "cyan", children: "\u258E" }), _jsx(Text, { dimColor: true, children: placeholderRef.current })] })) : (_jsx(RenderedBuffer, { buffer: state.buffer, cursor: state.cursor }))] })] }));
|
|
284
|
+
}
|
|
285
|
+
function SlashSuggestions({ suggestions, selected, }) {
|
|
286
|
+
return (_jsxs(Box, { flexDirection: "column", paddingX: 1, marginBottom: 0, children: [suggestions.map((cmd, i) => {
|
|
287
|
+
const isSelected = i === selected;
|
|
288
|
+
return (_jsxs(Box, { children: [_jsxs(Text, { color: isSelected ? "cyan" : "gray", bold: isSelected, children: [isSelected ? "▸ " : " ", `/${cmd.name}`] }), cmd.description ? (_jsxs(Text, { dimColor: true, children: [" ", "\u2014 ", cmd.description.slice(0, 60)] })) : null] }, `sug-${cmd.name}`));
|
|
289
|
+
}), _jsx(Box, { marginTop: 0, children: _jsx(Text, { dimColor: true, children: "\u2191\u2193 to move \u00B7 Tab to complete \u00B7 Enter to send as-typed" }) })] }));
|
|
74
290
|
}
|
|
75
291
|
/**
|
|
76
292
|
* Render the buffer with a visible cursor block at the cursor position.
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
* the
|
|
293
|
+
* Splits on `\n` so multi-line pastes (and `\<Enter>` newlines) show
|
|
294
|
+
* as stacked rows — otherwise pasted code collapses into one line and
|
|
295
|
+
* the user can't see what they're sending.
|
|
80
296
|
*/
|
|
81
297
|
function RenderedBuffer({ buffer, cursor }) {
|
|
298
|
+
if (!buffer.includes("\n"))
|
|
299
|
+
return _jsx(SingleLineBuffer, { buffer: buffer, cursor: cursor });
|
|
300
|
+
const lines = buffer.split("\n");
|
|
301
|
+
let consumed = 0;
|
|
302
|
+
return (_jsx(Box, { flexDirection: "column", children: lines.map((line, idx) => {
|
|
303
|
+
const lineStart = consumed;
|
|
304
|
+
const lineEnd = consumed + line.length;
|
|
305
|
+
const cursorOnThisLine = cursor >= lineStart && cursor <= lineEnd;
|
|
306
|
+
consumed = lineEnd + 1;
|
|
307
|
+
if (!cursorOnThisLine) {
|
|
308
|
+
return _jsx(Text, { children: line.length === 0 ? " " : line }, `line-${idx}-${line.slice(0, 8)}`);
|
|
309
|
+
}
|
|
310
|
+
return (_jsx(SingleLineBuffer, { buffer: line, cursor: cursor - lineStart }, `line-${idx}-cur-${line.slice(0, 8)}`));
|
|
311
|
+
}) }));
|
|
312
|
+
}
|
|
313
|
+
function SingleLineBuffer({ buffer, cursor }) {
|
|
82
314
|
if (cursor >= buffer.length) {
|
|
83
315
|
return (_jsxs(_Fragment, { children: [_jsx(Text, { children: buffer }), _jsx(Text, { color: "cyan", children: "\u258E" })] }));
|
|
84
316
|
}
|
package/dist/ui/Input.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Input.js","sourceRoot":"","sources":["../../src/ui/Input.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Input.js","sourceRoot":"","sources":["../../src/ui/Input.tsx"],"names":[],"mappings":"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"}
|