@chances-ai/tui 24.2.0 → 25.0.0

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.
Files changed (52) hide show
  1. package/dist/app.d.ts +22 -1
  2. package/dist/app.d.ts.map +1 -1
  3. package/dist/app.js +107 -42
  4. package/dist/app.js.map +1 -1
  5. package/dist/editor/file-search.d.ts +18 -0
  6. package/dist/editor/file-search.d.ts.map +1 -0
  7. package/dist/editor/file-search.js +78 -0
  8. package/dist/editor/file-search.js.map +1 -0
  9. package/dist/editor/prompt-editor.d.ts +35 -0
  10. package/dist/editor/prompt-editor.d.ts.map +1 -0
  11. package/dist/editor/prompt-editor.js +153 -0
  12. package/dist/editor/prompt-editor.js.map +1 -0
  13. package/dist/editor/unified-autocomplete.d.ts +42 -0
  14. package/dist/editor/unified-autocomplete.d.ts.map +1 -0
  15. package/dist/editor/unified-autocomplete.js +141 -0
  16. package/dist/editor/unified-autocomplete.js.map +1 -0
  17. package/dist/index.d.ts +14 -1
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +3 -2
  20. package/dist/index.js.map +1 -1
  21. package/dist/ink-ext/keys.d.ts +4 -2
  22. package/dist/ink-ext/keys.d.ts.map +1 -1
  23. package/dist/ink-ext/keys.js +47 -5
  24. package/dist/ink-ext/keys.js.map +1 -1
  25. package/dist/ink-ext/types.d.ts +1 -1
  26. package/dist/ink-ext/types.d.ts.map +1 -1
  27. package/dist/ink-ext/types.js.map +1 -1
  28. package/dist/keybindings/defaults.d.ts +24 -0
  29. package/dist/keybindings/defaults.d.ts.map +1 -0
  30. package/dist/keybindings/defaults.js +21 -0
  31. package/dist/keybindings/defaults.js.map +1 -0
  32. package/dist/keybindings/index.d.ts +9 -0
  33. package/dist/keybindings/index.d.ts.map +1 -0
  34. package/dist/keybindings/index.js +9 -0
  35. package/dist/keybindings/index.js.map +1 -0
  36. package/dist/keybindings/merge.d.ts +25 -0
  37. package/dist/keybindings/merge.d.ts.map +1 -0
  38. package/dist/keybindings/merge.js +98 -0
  39. package/dist/keybindings/merge.js.map +1 -0
  40. package/dist/keybindings/schema.d.ts +17 -0
  41. package/dist/keybindings/schema.d.ts.map +1 -0
  42. package/dist/keybindings/schema.js +16 -0
  43. package/dist/keybindings/schema.js.map +1 -0
  44. package/dist/pager.d.ts +19 -0
  45. package/dist/pager.d.ts.map +1 -0
  46. package/dist/pager.js +83 -0
  47. package/dist/pager.js.map +1 -0
  48. package/dist/slash-typeahead.d.ts +8 -24
  49. package/dist/slash-typeahead.d.ts.map +1 -1
  50. package/dist/slash-typeahead.js +8 -67
  51. package/dist/slash-typeahead.js.map +1 -1
  52. package/package.json +7 -5
package/dist/app.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { type JSX } from "react";
2
- import { type SlashSuggestion } from "./slash-typeahead.js";
2
+ import { type AgentSuggestion } from "./editor/unified-autocomplete.js";
3
+ import type { SlashSuggestion } from "./slash-typeahead.js";
3
4
  export { suggestSlashCommands } from "./slash-typeahead.js";
4
5
  export type { SlashSuggestion } from "./slash-typeahead.js";
5
6
  import type { ThemeSetting } from "./theme.js";
@@ -27,14 +28,34 @@ export interface ChatAppProps {
27
28
  availableSlashCommands?: SlashSuggestion[];
28
29
  /** (5.4) Snapshot of MCP resources for `@<server>:<uri>` autocomplete. */
29
30
  availableResources?: ResourceSuggestion[];
31
+ /** (7.4) Snapshot of agent definitions for `@<agent>` autocomplete. */
32
+ availableAgents?: AgentSuggestion[];
30
33
  /** (5.9) Color palette selection (`config.tui.theme`). Default dark. */
31
34
  themeSetting?: ThemeSetting;
32
35
  /** (5.9) Syntax-highlight code/diffs (`config.tui.syntaxHighlight`). Default true. */
33
36
  syntaxHighlight?: boolean;
37
+ /** (7.4) Raw key rebindings from `config.tui.keybindings`. Merged over the
38
+ * defaults (fail-soft) into the ink-ext bindings + the editor keymap. */
39
+ keybindings?: Record<string, Record<string, string | null>>;
40
+ /** (7.4) Active model's context window (tokens). A function is re-read on every
41
+ * render so the gauge stays correct after a `/model` switch (R2-S2). When unset
42
+ * the footer shows just the absolute token count. */
43
+ contextWindow?: number | (() => number | undefined);
44
+ /** (7.4) Workspace root for `@file` completion (R2-S1). Falls back to cwd. */
45
+ workspaceRoot?: string;
46
+ /** (7.4 §G1) Run a `!`-prefixed line as a local shell command. When provided,
47
+ * bash mode is live: the footer indicates it and Enter routes here instead of
48
+ * the model (claude-code parity). When absent, `!` carries no special meaning
49
+ * (no footer, submits as a normal prompt) — never a footer that lies. */
50
+ onBashCommand?: (command: string) => void | Promise<void>;
34
51
  }
35
52
  /** (5.4) Pure helper for `@<server>:<uri>` mention autocomplete. */
36
53
  export declare function suggestResourceMentions(input: string, available: ResourceSuggestion[]): ResourceSuggestion[];
37
54
  /** Public entry: wraps the chat in the theme provider + the single input bus so
38
55
  * every component reads one palette and one keymap. */
39
56
  export declare function ChatApp(props: ChatAppProps): JSX.Element;
57
+ /** (7.4) Footer context gauge — real input-token usage from `usage:turn`. With a
58
+ * known context `window` it draws a `used/window (pct)` bar; otherwise just the
59
+ * absolute count. `formatContextGauge` is the pure, tested core. */
60
+ export declare function formatContextGauge(used: number, window?: number): string;
40
61
  //# sourceMappingURL=app.d.ts.map
package/dist/app.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"AACA,OAAO,EAA6C,KAAK,GAAG,EAAkB,MAAM,OAAO,CAAC;AAS5F,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAI5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAO5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAe,KAAK,aAAa,EAAa,MAAM,qBAAqB,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA8ClD,2EAA2E;AAC3E,MAAM,WAAW,kBAAkB;IACjC,sDAAsD;IACtD,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,aAAa,CAAC;IAClB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,6EAA6E;IAC7E,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C;qFACiF;IACjF,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB;;qEAEiE;IACjE,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,kFAAkF;IAClF,sBAAsB,CAAC,EAAE,eAAe,EAAE,CAAC;IAC3C,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC1C,wEAAwE;IACxE,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,sFAAsF;IACtF,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,oEAAoE;AACpE,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,kBAAkB,EAAE,GAC9B,kBAAkB,EAAE,CAOtB;AAED;wDACwD;AACxD,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,GAAG,CAAC,OAAO,CAMxD"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"AACA,OAAO,EAA8D,KAAK,GAAG,EAAkB,MAAM,OAAO,CAAC;AAW7G,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAE7F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAI5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAO5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAe,KAAK,aAAa,EAAa,MAAM,qBAAqB,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA8ClD,2EAA2E;AAC3E,MAAM,WAAW,kBAAkB;IACjC,sDAAsD;IACtD,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,aAAa,CAAC;IAClB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,6EAA6E;IAC7E,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C;qFACiF;IACjF,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB;;qEAEiE;IACjE,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,kFAAkF;IAClF,sBAAsB,CAAC,EAAE,eAAe,EAAE,CAAC;IAC3C,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC1C,uEAAuE;IACvE,eAAe,CAAC,EAAE,eAAe,EAAE,CAAC;IACpC,wEAAwE;IACxE,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,sFAAsF;IACtF,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;8EAC0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;IAC5D;;0DAEsD;IACtD,aAAa,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC;IACpD,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;8EAG0E;IAC1E,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3D;AAED,oEAAoE;AACpE,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,kBAAkB,EAAE,GAC9B,kBAAkB,EAAE,CAOtB;AAED;wDACwD;AACxD,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,GAAG,CAAC,OAAO,CAMxD;AA4cD;;qEAEqE;AACrE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAMxE"}
package/dist/app.js CHANGED
@@ -1,12 +1,16 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { Box, Static, Text, useApp } from "ink";
3
- import { useEffect, useState, useSyncExternalStore } from "react";
4
- import { KeybindingProvider, useKeybinding, useKeybindingContext, usePasteInput, useTextInput, } from "./ink-ext/index.js";
5
- import { SlashTypeahead } from "./slash-typeahead.js";
3
+ import { useEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
4
+ import { KeybindingProvider, useKeybinding, useKeybindingContext, useTextInput, } from "./ink-ext/index.js";
5
+ import { mergeKeymaps } from "./keybindings/index.js";
6
+ import { parseInputMode } from "@chances-ai/ui-core";
7
+ import { PromptEditor } from "./editor/prompt-editor.js";
8
+ import { TranscriptPager } from "./pager.js";
9
+ import { UnifiedAutocomplete } from "./editor/unified-autocomplete.js";
6
10
  // Re-exported for backward compat: `suggestSlashCommands`/`SlashSuggestion` moved
7
11
  // to slash-typeahead.tsx (5.10 A3) but several call sites + tests import them here.
8
12
  export { suggestSlashCommands } from "./slash-typeahead.js";
9
- import { looksLikeDiff } from "@chances-ai/ui-core";
13
+ import { looksLikeDiff, formatTokenCount } from "@chances-ai/ui-core";
10
14
  import { DiffView } from "./diff-view.js";
11
15
  import { Markdown } from "./markdown.js";
12
16
  import { Progress } from "./progress.js";
@@ -74,14 +78,39 @@ function ChatBusWrapper(props) {
74
78
  return;
75
79
  return props.modal.attach((node) => setModalNode(node));
76
80
  }, [props.modal]);
77
- return (_jsx(KeybindingProvider, { onForceExit: () => exit(), children: _jsx(ChatInner, { ...props, modalNode: modalNode }) }));
81
+ // (7.4) Merge keybindings.json over the defaults ONCE (config is static per
82
+ // session; the registry's bindings are mount-time). Feeds the input bus +
83
+ // the editor keymap; fail-soft warnings surface as a chat error line.
84
+ const merged = useMemo(() => mergeKeymaps(props.keybindings, { platform: typeof process !== "undefined" ? process.platform : undefined }), [props.keybindings]);
85
+ return (_jsx(KeybindingProvider, { onForceExit: () => exit(), bindings: merged.bindings, children: _jsx(ChatInner, { ...props, modalNode: modalNode, editorKeymap: merged.editorKeymap, keymapWarnings: merged.warnings }) }));
78
86
  }
79
- function ChatInner({ vm, onSubmit, onSlash, onInterrupt, availableSlashCommands, availableResources, modalNode, }) {
87
+ function ChatInner({ vm, onSubmit, onSlash, onInterrupt, availableSlashCommands, availableResources, availableAgents, contextWindow, workspaceRoot, onBashCommand, modalNode, editorKeymap, keymapWarnings, }) {
80
88
  useSyncExternalStore(vm.subscribe, vm.getSnapshot, vm.getSnapshot);
81
89
  const { theme, glyphs } = useTheme();
82
- const [input, setInput] = useState("");
90
+ // (7.4) The editor owns the draft (cursor/kill-ring/undo); `draft` mirrors its
91
+ // text so the slash/@ autocomplete can filter, and `editorRef` lets a completion
92
+ // or a submit push text back into the editor.
93
+ const editorRef = useRef(null);
94
+ const [draft, setDraft] = useState("");
95
+ // Surface any keybindings.json warnings once, as a chat error line.
96
+ useEffect(() => {
97
+ for (const w of keymapWarnings)
98
+ vm.pushError(`keybindings: ${w}`);
99
+ // eslint-disable-next-line react-hooks/exhaustive-deps
100
+ }, []);
83
101
  // (5.3) Non-null while the "no, and tell the model" feedback field is open.
84
102
  const [feedback, setFeedback] = useState(null);
103
+ // (§G4) Full-screen transcript pager (ctrl+o). When open it owns the screen.
104
+ const [pagerOpen, setPagerOpen] = useState(false);
105
+ // (§G1 codex R3) A `!`-command runs async without flipping vm.busy; this guards
106
+ // against a model prompt (or another `!`) submitted mid-command, which would
107
+ // otherwise lose / misattribute the command's pending context.
108
+ const bashInFlightRef = useRef(false);
109
+ // (§G4 codex R3 MUST) While the pager is open we FREEZE the <Static> item list:
110
+ // Ink would otherwise print lines committed during paging into the (hidden) alt
111
+ // buffer and mark them done, so they'd vanish on `?1049l`. Freezing means those
112
+ // lines stay un-printed and replay to the main screen the moment the pager closes.
113
+ const frozenStaticRef = useRef(null);
85
114
  // (5.10b) Cursor over the 4 permission options for ↑↓ navigation. The y/a/n/d +
86
115
  // 1/2/3 shortcuts still select directly and bypass it.
87
116
  const [permCursor, setPermCursor] = useState(0);
@@ -100,36 +129,63 @@ function ChatInner({ vm, onSubmit, onSlash, onInterrupt, availableSlashCommands,
100
129
  // it must NOT also light up the Confirmation (y/a/n/d) context.
101
130
  const confirmActive = (vm.pending !== null && vm.pending.req.kind !== "question") || vm.yoloConfirmPending;
102
131
  // Run a `/command` line: clear the draft, echo it, dispatch via the host.
103
- // Shared by chat:submit (typed "/foo args") and SlashTypeahead's Enter
132
+ // Shared by the editor's submit (typed "/foo args") and SlashTypeahead's Enter
104
133
  // (executes the SELECTED command, no args — the menu only shows pre-space).
105
134
  const runSlash = (line) => {
106
- setInput("");
135
+ editorRef.current?.setText("");
136
+ setDraft("");
107
137
  vm.pushUser(line);
108
138
  if (onSlash)
109
139
  void onSlash(line);
110
140
  else
111
141
  vm.pushError(`Unknown command: ${line}`);
112
142
  };
113
- // -- Chat context (base) --
114
- useKeybinding("chat:submit", () => {
115
- const prompt = input.trim();
143
+ // (7.4) The editor's submit effect routes here (formerly the `chat:submit`
144
+ // binding — now `return` falls to the editor's text sink, R1-M4). The editor
145
+ // already kept the draft on a busy submit; we just route /exit, slash + the
146
+ // streaming guard.
147
+ const handleEditorSubmit = (raw) => {
148
+ // (§G1) Bash mode: a `!`-prefixed line runs as a local shell command via the
149
+ // host, not the model — but only when the host wired an executor (else `!`
150
+ // is just text, so the footer never lied). Gated on `busy` like a normal
151
+ // submit: committing the command/output to the transcript mid-stream would
152
+ // split the in-flight assistant message.
153
+ if (onBashCommand) {
154
+ const parsed = parseInputMode(raw);
155
+ if (parsed.mode === "bash") {
156
+ if (vm.busy || bashInFlightRef.current)
157
+ return;
158
+ editorRef.current?.setText("");
159
+ setDraft("");
160
+ if (parsed.value) {
161
+ bashInFlightRef.current = true;
162
+ void Promise.resolve(onBashCommand(parsed.value)).finally(() => {
163
+ bashInFlightRef.current = false;
164
+ });
165
+ }
166
+ return;
167
+ }
168
+ }
169
+ const prompt = raw.trim();
116
170
  if (prompt === "/exit" || prompt === "/quit") {
117
171
  exit();
118
172
  return;
119
173
  }
120
- // (5.8 codex R2) Block submission while a turn streams; keep the draft.
121
- if (vm.busy)
174
+ // (5.8 codex R2 / §G1 R3) Block submission while a turn streams OR a local
175
+ // `!`-command is still running (its output context isn't ready yet).
176
+ if (vm.busy || bashInFlightRef.current)
122
177
  return;
123
178
  if (prompt.startsWith("/")) {
124
179
  runSlash(prompt);
125
180
  return;
126
181
  }
127
- setInput("");
182
+ editorRef.current?.setText("");
183
+ setDraft("");
128
184
  if (prompt) {
129
185
  vm.pushUser(prompt);
130
186
  void onSubmit(prompt);
131
187
  }
132
- }, { context: "Chat" });
188
+ };
133
189
  // (5.3 / v22) Shift+Tab cycles approval modes. Works WHILE a turn streams now:
134
190
  // the cycle no longer commits a transcript line (the persistent footer mode
135
191
  // badge is the indicator), so it can't split the in-progress assistant message
@@ -141,25 +197,11 @@ function ChatInner({ vm, onSubmit, onSlash, onInterrupt, availableSlashCommands,
141
197
  if (vm.busy)
142
198
  onInterrupt?.();
143
199
  }, { context: "Chat" });
144
- useTextInput("Chat", (char, key) => {
145
- // meta+m is the Windows fallback for Shift+Tab (no `shift+tab` token there).
146
- if (key.meta && char === "m") {
147
- vm.cycleApprovalMode();
148
- return;
149
- }
150
- if (key.backspace || key.delete) {
151
- setInput((s) => s.slice(0, -1));
152
- return;
153
- }
154
- if (char && !key.ctrl && !key.meta)
155
- setInput((s) => s + char);
156
- });
157
- // (5.10b) A bracketed paste into Chat keeps its newlines as a multi-line draft
158
- // (no premature submit — the v15 known gap). Single-line sinks strip newlines.
159
- usePasteInput("Chat", (text) => {
160
- if (!vm.busy)
161
- setInput((s) => s + text);
162
- });
200
+ // (§G4) Open the full-screen transcript pager (ctrl+o by default).
201
+ useKeybinding("chat:openPager", () => setPagerOpen(true), { context: "Chat", active: !pagerOpen });
202
+ // (7.4) The Chat text sink + paste now belong to <PromptEditor> (multi-line
203
+ // editing, Emacs keys, cursor). meta+m → cycleApprovalMode is a real binding
204
+ // (platformDefaults), no longer a text-sink special case (R1-M2).
163
205
  // -- Confirmation context (permission prompt + yolo confirm) --
164
206
  useKeybindingContext("Confirmation", confirmActive);
165
207
  useTextInput("Confirmation", (char, key) => {
@@ -246,7 +288,22 @@ function ChatInner({ vm, onSubmit, onSlash, onInterrupt, availableSlashCommands,
246
288
  const pend = vm.pending;
247
289
  const authReq = pend && pend.req.kind !== "question" ? pend.req : null;
248
290
  const questionReq = pend && pend.req.kind === "question" ? pend.req : null;
249
- return (_jsxs(_Fragment, { children: [_jsx(Static, { items: vm.committedLines(), children: (line, i) => _jsx(LineView, { line: line, rich: true }, i) }, vm.clearGeneration), _jsxs(Box, { flexDirection: "column", children: [vm.liveLines().map((line, i) => (_jsx(LineView, { line: line, rich: false }, `live-${i}`))), modalNode ? _jsx(Box, { marginTop: 1, children: modalNode }) : null, !modalNode && vm.yoloConfirmPending ? _jsx(YoloConfirm, { theme: theme }) : null, !modalNode && !vm.yoloConfirmPending && authReq ? (_jsx(PermissionDialog, { name: authReq.name, summary: authReq.summary, feedback: feedback, cursor: permCursor, theme: theme, glyphs: glyphs })) : null, !modalNode && questionReq ? (_jsx(QuestionView, { questions: questionReq.questions, onSubmit: (d) => vm.resolveQuestion(d), onCancel: () => vm.resolveQuestion({ kind: "question", answers: {}, declined: true }) })) : null, vm.busy && showInput ? _jsx(Progress, { active: true, tokens: tokens }) : null, showInput ? (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { marginTop: vm.busy ? 0 : 1, children: [_jsxs(Text, { color: vm.busy ? undefined : theme.accent, dimColor: vm.busy, children: [glyphs.prompt, " "] }), _jsx(Text, { children: input })] }), _jsx(SlashTypeahead, { input: input, available: availableSlashCommands ?? [], busy: vm.busy, onComplete: setInput, onExecute: runSlash }), _jsx(MentionAutocomplete, { input: input, available: availableResources ?? [] }), _jsx(ModeBadge, { mode: vm.approvalMode, theme: theme, glyphs: glyphs, busy: vm.busy })] })) : null] })] }));
291
+ // (§G4) Freeze the Static list while paging (see frozenStaticRef). On open we
292
+ // snapshot once; on close we hand back the live list so Static flushes the
293
+ // delta (lines committed during paging) to the restored main screen.
294
+ let staticItems;
295
+ if (pagerOpen) {
296
+ frozenStaticRef.current ??= vm.committedLines();
297
+ staticItems = frozenStaticRef.current;
298
+ }
299
+ else {
300
+ frozenStaticRef.current = null;
301
+ staticItems = vm.committedLines();
302
+ }
303
+ return (_jsxs(_Fragment, { children: [_jsx(Static, { items: staticItems, children: (line, i) => _jsx(LineView, { line: line, rich: true }, i) }, vm.clearGeneration), pagerOpen ? (_jsx(TranscriptPager, { lines: vm.lines, onClose: () => setPagerOpen(false) })) : (_jsxs(Box, { flexDirection: "column", children: [vm.liveLines().map((line, i) => (_jsx(LineView, { line: line, rich: false }, `live-${i}`))), modalNode ? _jsx(Box, { marginTop: 1, children: modalNode }) : null, !modalNode && vm.yoloConfirmPending ? _jsx(YoloConfirm, { theme: theme }) : null, !modalNode && !vm.yoloConfirmPending && authReq ? (_jsx(PermissionDialog, { name: authReq.name, summary: authReq.summary, feedback: feedback, cursor: permCursor, theme: theme, glyphs: glyphs })) : null, !modalNode && questionReq ? (_jsx(QuestionView, { questions: questionReq.questions, onSubmit: (d) => vm.resolveQuestion(d), onCancel: () => vm.resolveQuestion({ kind: "question", answers: {}, declined: true }) })) : null, vm.busy && showInput ? _jsx(Progress, { active: true, tokens: tokens }) : null, _jsxs(Box, { flexDirection: "column", marginTop: showInput && !vm.busy ? 1 : 0, children: [_jsx(PromptEditor, { ref: editorRef, active: showInput, keymap: editorKeymap, busy: vm.busy, onChange: setDraft, onEnter: handleEditorSubmit }), showInput ? (_jsxs(_Fragment, { children: [_jsx(UnifiedAutocomplete, { input: draft, busy: vm.busy, slashCommands: availableSlashCommands ?? [], resources: availableResources ?? [], agents: availableAgents, root: workspaceRoot, onComplete: (t) => {
304
+ editorRef.current?.setText(t);
305
+ setDraft(t);
306
+ }, onExecute: runSlash }), onBashCommand && parseInputMode(draft).mode === "bash" ? (_jsxs(Box, { marginLeft: 2, children: [_jsx(Text, { color: theme.error, children: "! bash mode" }), _jsx(Text, { dimColor: true, children: " \u00B7 enter runs it locally" })] })) : null, _jsx(ModeBadge, { mode: vm.approvalMode, theme: theme, glyphs: glyphs, busy: vm.busy }), vm.lastRequestInputTokens > 0 ? (_jsx(ContextGauge, { used: vm.lastRequestInputTokens, window: typeof contextWindow === "function" ? contextWindow() : contextWindow, theme: theme })) : null] })) : null] })] }))] }));
250
307
  }
251
308
  function YoloConfirm({ theme }) {
252
309
  return (_jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { color: theme.error, children: "─".repeat(40) }), _jsx(Text, { color: theme.error, children: "\u26A0 Enter YOLO mode?" }), _jsx(Text, { children: "All tool calls will be auto-approved. Only explicit deny-rules still block." }), _jsx(Text, { dimColor: true, children: "[y] enter yolo \u00B7 [n] cancel" })] }));
@@ -270,11 +327,19 @@ function ModeBadge({ mode, theme, glyphs, busy, }) {
270
327
  }
271
328
  return (_jsxs(Box, { marginLeft: 2, children: [_jsxs(Text, { color: theme[d.role], children: [d.symbol(glyphs), " ", d.label] }), _jsxs(Text, { dimColor: true, children: [" \u00B7 shift+tab to cycle \u00B7 ", hint] })] }));
272
329
  }
273
- /** (5.4) Ghost-text hints for `@<server>:<uri>` resource mentions. */
274
- function MentionAutocomplete({ input, available, }) {
275
- const matches = suggestResourceMentions(input, available);
276
- if (matches.length === 0)
277
- return null;
278
- return (_jsx(Box, { flexDirection: "column", marginLeft: 2, children: matches.map((m) => (_jsxs(Text, { dimColor: true, children: ["@", m.ref, m.name ? ` — ${m.name}` : ""] }, m.ref))) }));
330
+ /** (7.4) Footer context gauge — real input-token usage from `usage:turn`. With a
331
+ * known context `window` it draws a `used/window (pct)` bar; otherwise just the
332
+ * absolute count. `formatContextGauge` is the pure, tested core. */
333
+ export function formatContextGauge(used, window) {
334
+ if (!window || window <= 0)
335
+ return `${formatTokenCount(used)} tokens`;
336
+ const pct = Math.min(100, Math.round((used / window) * 100));
337
+ const filled = Math.max(0, Math.min(10, Math.round((used / window) * 10)));
338
+ const bar = "█".repeat(filled) + "░".repeat(10 - filled);
339
+ return `${bar} ${formatTokenCount(used)}/${formatTokenCount(window)} (${pct}%)`;
340
+ }
341
+ function ContextGauge({ used, window, theme, }) {
342
+ const near = window ? used / window >= 0.85 : false;
343
+ return (_jsx(Box, { marginLeft: 2, children: _jsx(Text, { color: near ? theme.error : undefined, dimColor: !near, children: formatContextGauge(used, window) }) }));
279
344
  }
280
345
  //# sourceMappingURL=app.js.map
package/dist/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,oBAAoB,EAA4B,MAAM,OAAO,CAAC;AAC5F,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,aAAa,EACb,YAAY,GACb,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAwB,MAAM,sBAAsB,CAAC;AAE5E,kFAAkF;AAClF,oFAAoF;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,WAAW,EAAiC,MAAM,qBAAqB,CAAC;AAEjF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD;4EAC4E;AAC5E,MAAM,YAAY,GAAgJ;IAChK,OAAO,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE;IAClE,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE;IAChF,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE;IAChE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE;CAChE,CAAC;AAEF;;;oBAGoB;AACpB,SAAS,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAiD;IACpF,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IACrC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,MAAM;YACT,OAAO,CACL,KAAC,WAAW,IACV,IAAI,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE,EACzB,UAAU,EAAE,IAAI,CAAC,IAAI,EACrB,EAAE,EAAE,IAAI,CAAC,EAAE,EACX,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,KAAK,EAAE,KAAK,GACZ,CACH,CAAC;QACJ,KAAK,WAAW;YACd,OAAO,IAAI,CAAC,CAAC,CAAC,KAAC,QAAQ,IAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAI,CAAC,CAAC,CAAC,KAAC,IAAI,cAAE,IAAI,CAAC,IAAI,GAAQ,CAAC;QACzE,KAAK,MAAM;YACT,OAAO,CACL,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,MAAC,IAAI,IAAC,eAAe,EAAE,KAAK,CAAC,aAAa,kBAAI,IAAI,CAAC,IAAI,SAAS,GAC5D,CACP,CAAC;QACJ,KAAK,OAAO;YACV,OAAO,MAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,wBAAK,IAAI,CAAC,IAAI,IAAQ,CAAC;QACxD;YACE,OAAO,KAAC,IAAI,IAAC,QAAQ,kBAAE,IAAI,CAAC,IAAI,GAAQ,CAAC;IAC7C,CAAC;AACH,CAAC;AA+BD,oEAAoE;AACpE,MAAM,UAAU,uBAAuB,CACrC,KAAa,EACb,SAA+B;IAE/B,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;IAC7C,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7C,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjD,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtF,CAAC;AAED;wDACwD;AACxD,MAAM,UAAU,OAAO,CAAC,KAAmB;IACzC,OAAO,CACL,KAAC,aAAa,IAAC,OAAO,EAAE,KAAK,CAAC,YAAY,EAAE,eAAe,EAAE,KAAK,CAAC,eAAe,YAChF,KAAC,cAAc,OAAK,KAAK,GAAI,GACf,CACjB,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,cAAc,CAAC,KAAmB;IACzC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAY,IAAI,CAAC,CAAC;IAC5D,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,KAAK,CAAC,KAAK;YAAE,OAAO;QACzB,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAClB,OAAO,CACL,KAAC,kBAAkB,IAAC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,YAC3C,KAAC,SAAS,OAAK,KAAK,EAAE,SAAS,EAAE,SAAS,GAAI,GAC3B,CACtB,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,EACjB,EAAE,EACF,QAAQ,EACR,OAAO,EACP,WAAW,EACX,sBAAsB,EACtB,kBAAkB,EAClB,SAAS,GAC+B;IACxC,oBAAoB,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC;IACnE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IACrC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvC,4EAA4E;IAC5E,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAC9D,gFAAgF;IAChF,uDAAuD;IACvD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAE1B,iFAAiF;IACjF,SAAS,CAAC,GAAG,EAAE;QACb,WAAW,CAAC,IAAI,CAAC,CAAC;QAClB,aAAa,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEjB,wEAAwE;IACxE,0EAA0E;IAC1E,4EAA4E;IAC5E,4EAA4E;IAC5E,mCAAmC;IACnC,+EAA+E;IAC/E,gEAAgE;IAChE,MAAM,aAAa,GAAG,CAAC,EAAE,CAAC,OAAO,KAAK,IAAI,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,EAAE,CAAC,kBAAkB,CAAC;IAE3G,0EAA0E;IAC1E,uEAAuE;IACvE,4EAA4E;IAC5E,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAQ,EAAE;QACtC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACb,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAClB,IAAI,OAAO;YAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;;YAC3B,EAAE,CAAC,SAAS,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC,CAAC;IAEF,4BAA4B;IAC5B,aAAa,CACX,aAAa,EACb,GAAG,EAAE;QACH,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YAC7C,IAAI,EAAE,CAAC;YACP,OAAO;QACT,CAAC;QACD,wEAAwE;QACxE,IAAI,EAAE,CAAC,IAAI;YAAE,OAAO;QACpB,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,QAAQ,CAAC,MAAM,CAAC,CAAC;YACjB,OAAO;QACT,CAAC;QACD,QAAQ,CAAC,EAAE,CAAC,CAAC;QACb,IAAI,MAAM,EAAE,CAAC;YACX,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACpB,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,EACD,EAAE,OAAO,EAAE,MAAM,EAAE,CACpB,CAAC;IACF,+EAA+E;IAC/E,4EAA4E;IAC5E,+EAA+E;IAC/E,sEAAsE;IACtE,aAAa,CACX,wBAAwB,EACxB,GAAG,EAAE,CAAC,EAAE,CAAC,iBAAiB,EAAE,EAC5B,EAAE,OAAO,EAAE,MAAM,EAAE,CACpB,CAAC;IACF,8EAA8E;IAC9E,0EAA0E;IAC1E,aAAa,CACX,aAAa,EACb,GAAG,EAAE;QACH,IAAI,EAAE,CAAC,IAAI;YAAE,WAAW,EAAE,EAAE,CAAC;IAC/B,CAAC,EACD,EAAE,OAAO,EAAE,MAAM,EAAE,CACpB,CAAC;IACF,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACjC,6EAA6E;QAC7E,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YAC7B,EAAE,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YAChC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAChC,OAAO;QACT,CAAC;QACD,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI;YAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IACH,+EAA+E;IAC/E,+EAA+E;IAC/E,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QAC7B,IAAI,CAAC,EAAE,CAAC,IAAI;YAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,gEAAgE;IAChE,oBAAoB,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;IACpD,YAAY,CACV,cAAc,EACd,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACZ,IAAI,EAAE,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,IAAI,KAAK,GAAG;gBAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;iBACzC,IAAI,IAAI,KAAK,GAAG;gBAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QACD,IAAI,EAAE,CAAC,OAAO,KAAK,IAAI;YAAE,OAAO;QAChC,gEAAgE;QAChE,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,MAAM;gBAAE,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;iBACvE,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI;gBAAE,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YAC9E,OAAO;QACT,CAAC;QACD,kEAAkE;QAClE,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG;YAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;aACnE,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG;YAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;aACxF,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG;YAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;aACzE,IAAI,IAAI,KAAK,GAAG;YAAE,WAAW,CAAC,EAAE,CAAC,CAAC;IACzC,CAAC,EACD,EAAE,MAAM,EAAE,aAAa,EAAE,CAC1B,CAAC;IACF,aAAa,CACX,gBAAgB,EAAE,SAAS;IAC3B,GAAG,EAAE;QACH,IAAI,EAAE,CAAC,kBAAkB,EAAE,CAAC;YAC1B,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC7B,OAAO;QACT,CAAC;QACD,IAAI,EAAE,CAAC,OAAO,KAAK,IAAI;YAAE,OAAO;QAChC,IAAI,QAAQ,KAAK,IAAI;YAAE,WAAW,CAAC,IAAI,CAAC,CAAC;;YACpC,EAAE,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9C,CAAC,EACD,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,CACnD,CAAC;IACF,2EAA2E;IAC3E,+EAA+E;IAC/E,MAAM,gBAAgB,GAAG,CAAC,MAAc,EAAQ,EAAE;QAChD,IAAI,MAAM,KAAK,CAAC;YAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;aACnD,IAAI,MAAM,KAAK,CAAC;YAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;aACxE,IAAI,MAAM,KAAK,CAAC;YAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;;YACzD,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,gCAAgC;IACxD,CAAC,CAAC;IACF,MAAM,aAAa,GAAG,EAAE,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC,kBAAkB,IAAI,QAAQ,KAAK,IAAI,CAAC;IACzF,aAAa,CACX,kBAAkB,EAClB,GAAG,EAAE;QACH,IAAI,aAAa;YAAE,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC,EACD,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,CACnD,CAAC;IACF,aAAa,CACX,cAAc,EACd,GAAG,EAAE;QACH,IAAI,aAAa;YAAE,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC,EACD,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,CACnD,CAAC;IACF,aAAa,CACX,gBAAgB,EAAE,mEAAmE;IACrF,GAAG,EAAE;QACH,IAAI,EAAE,CAAC,OAAO,KAAK,IAAI;YAAE,OAAO;QAChC,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC7B,WAAW,CAAC,IAAI,CAAC,CAAC;YAClB,EAAE,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC;YACpE,OAAO;QACT,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,kBAAkB;YAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC3D,CAAC,EACD,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,CACnD,CAAC;IAEF,MAAM,aAAa,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;IACzE,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,MAAM,SAAS,GAAG,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC,kBAAkB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;IACtE,4EAA4E;IAC5E,4EAA4E;IAC5E,iEAAiE;IACjE,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;IACxB,MAAM,OAAO,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IACvE,MAAM,WAAW,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAE3E,OAAO,CACL,8BAGE,KAAC,MAAM,IAA0B,KAAK,EAAE,EAAE,CAAC,cAAc,EAAE,YACxD,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,KAAC,QAAQ,IAAS,IAAI,EAAE,IAAI,EAAE,IAAI,UAAnB,CAAC,CAAqB,IADxC,EAAE,CAAC,eAAe,CAEtB,EACT,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aAExB,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAC/B,KAAC,QAAQ,IAAmB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,IAApC,QAAQ,CAAC,EAAE,CAA6B,CACxD,CAAC,EACD,SAAS,CAAC,CAAC,CAAC,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YAAG,SAAS,GAAO,CAAC,CAAC,CAAC,IAAI,EACvD,CAAC,SAAS,IAAI,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAC,WAAW,IAAC,KAAK,EAAE,KAAK,GAAI,CAAC,CAAC,CAAC,IAAI,EAC1E,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC,kBAAkB,IAAI,OAAO,CAAC,CAAC,CAAC,CACjD,KAAC,gBAAgB,IACf,IAAI,EAAE,OAAO,CAAC,IAAI,EAClB,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,GACd,CACH,CAAC,CAAC,CAAC,IAAI,EACP,CAAC,SAAS,IAAI,WAAW,CAAC,CAAC,CAAC,CAC3B,KAAC,YAAY,IACX,SAAS,EAAE,WAAW,CAAC,SAAS,EAChC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,EACtC,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,GACrF,CACH,CAAC,CAAC,CAAC,IAAI,EAGP,EAAE,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,KAAC,QAAQ,IAAC,MAAM,QAAC,MAAM,EAAE,MAAM,GAAI,CAAC,CAAC,CAAC,IAAI,EACjE,SAAS,CAAC,CAAC,CAAC,CACX,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,MAAC,GAAG,IAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAC7B,MAAC,IAAI,IAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,aAC/D,MAAM,CAAC,MAAM,EAAE,GAAG,IACd,EACP,KAAC,IAAI,cAAE,KAAK,GAAQ,IAChB,EACN,KAAC,cAAc,IACb,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,sBAAsB,IAAI,EAAE,EACvC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,UAAU,EAAE,QAAQ,EACpB,SAAS,EAAE,QAAQ,GACnB,EACF,KAAC,mBAAmB,IAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,kBAAkB,IAAI,EAAE,GAAI,EAC1E,KAAC,SAAS,IAAC,IAAI,EAAE,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,GAAI,IAC7E,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,IACL,CACJ,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,KAAK,EAAmD;IAC7E,OAAO,CACL,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,aACvC,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,YAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAQ,EACjD,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,wCAA2B,EACnD,KAAC,IAAI,8FAAmF,EACxF,KAAC,IAAI,IAAC,QAAQ,uDAAmC,IAC7C,CACP,CAAC;AACJ,CAAC;AAED;;wEAEwE;AACxE,SAAS,gBAAgB,CAAC,EACxB,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,MAAM,EACN,KAAK,EACL,MAAM,GAQP;IACC,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAClE,2EAA2E;IAC3E,0EAA0E;IAC1E,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC;IAEpD,OAAO,CACL,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,aACvC,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,UAAU,YAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAQ,EACtD,MAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,+BACxB,IAAI,SACR,EACP,KAAC,IAAI,cAAE,SAAS,GAAQ,EACvB,IAAI,CAAC,CAAC,CAAC,KAAC,QAAQ,IAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,KAAK,OAAO,GAAI,CAAC,CAAC,CAAC,IAAI,EAClE,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,CACnB,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,aACtC,KAAC,IAAI,IAAC,QAAQ,yDAA0C,EACxD,MAAC,GAAG,eACF,MAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,MAAM,aAAG,MAAM,CAAC,MAAM,SAAS,EAClD,KAAC,IAAI,cAAE,QAAQ,GAAQ,EACvB,KAAC,IAAI,IAAC,QAAQ,6BAAS,IACnB,EACN,KAAC,IAAI,IAAC,QAAQ,qDAAiC,IAC3C,CACP,CAAC,CAAC,CAAC,CACF,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,YAGrC,CAAC,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,qCAAqC,CAAC,CAAC,GAAG,CAC3F,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CACZ,MAAC,IAAI,IAAa,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,aACjE,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EACzC,KAAK,KAFG,KAAK,CAGT,CACR,CACF,GACG,CACP,IACG,CACP,CAAC;AACJ,CAAC;AAED,sEAAsE;AACtE,SAAS,SAAS,CAAC,EACjB,IAAI,EACJ,KAAK,EACL,MAAM,EACN,IAAI,GAML;IACC,MAAM,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,iBAAiB,CAAC;IAC3D,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,CACL,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,YAChB,MAAC,IAAI,IAAC,QAAQ,6DACsB,IAAI,IACjC,GACH,CACP,CAAC;IACJ,CAAC;IACD,OAAO,CACL,MAAC,GAAG,IAAC,UAAU,EAAE,CAAC,aAChB,MAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,aACvB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAG,CAAC,CAAC,KAAK,IACtB,EACP,MAAC,IAAI,IAAC,QAAQ,yDAA0B,IAAI,IAAQ,IAChD,CACP,CAAC;AACJ,CAAC;AAED,sEAAsE;AACtE,SAAS,mBAAmB,CAAC,EAC3B,KAAK,EACL,SAAS,GAIV;IACC,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC1D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,CACL,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAE,CAAC,YACtC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAClB,MAAC,IAAI,IAAa,QAAQ,wBACtB,CAAC,CAAC,GAAG,EACN,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAFpB,CAAC,CAAC,GAAG,CAGT,CACR,CAAC,GACE,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * (7.4 / task 04 W5) Workspace file list for `@file` completion (docs/7.4 §6.3,
3
+ * R1-M3): **git ls-files first** (fast, respects .gitignore), else a CAPPED
4
+ * native glob. Built ONCE per root + cached — never a per-keystroke rescan. The
5
+ * unified autocomplete ranks this cached list via the native fuzzy ranker.
6
+ */
7
+ /** Upper bound on the indexed file list (R1-M3 — large monorepos stay usable). */
8
+ export declare const FILE_LIST_CAP = 20000;
9
+ /** `{ files, truncated }` — `truncated` when the cap/timeout clipped the list. */
10
+ export interface FileList {
11
+ files: string[];
12
+ truncated: boolean;
13
+ }
14
+ /** Cached workspace file list, built once per `root`. */
15
+ export declare function loadWorkspaceFiles(root: string): Promise<FileList>;
16
+ /** Test seam: drop the cache so a fresh root re-indexes. */
17
+ export declare function __resetFileCacheForTest(): void;
18
+ //# sourceMappingURL=file-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-search.d.ts","sourceRoot":"","sources":["../../src/editor/file-search.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,kFAAkF;AAClF,eAAO,MAAM,aAAa,QAAQ,CAAC;AAInC,kFAAkF;AAClF,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACpB;AAsDD,yDAAyD;AACzD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAKlE;AAED,4DAA4D;AAC5D,wBAAgB,uBAAuB,IAAI,IAAI,CAG9C"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * (7.4 / task 04 W5) Workspace file list for `@file` completion (docs/7.4 §6.3,
3
+ * R1-M3): **git ls-files first** (fast, respects .gitignore), else a CAPPED
4
+ * native glob. Built ONCE per root + cached — never a per-keystroke rescan. The
5
+ * unified autocomplete ranks this cached list via the native fuzzy ranker.
6
+ */
7
+ import { native } from "@chances-ai/native";
8
+ import { spawn } from "node:child_process";
9
+ /** Upper bound on the indexed file list (R1-M3 — large monorepos stay usable). */
10
+ export const FILE_LIST_CAP = 20000;
11
+ /** Cap the git index call so the first `@` never hangs the UI (7.4 R2-N1). */
12
+ const GIT_TIMEOUT_MS = 2000;
13
+ /** `git ls-files` over `root`, ASYNC + timeout so the first `@` never blocks the
14
+ * event loop (7.4 R2-N1). Resolves null when git is absent / not a repo / times
15
+ * out → the caller falls back to the native walker. */
16
+ function gitFiles(root) {
17
+ return new Promise((resolve) => {
18
+ let settled = false;
19
+ const done = (v) => {
20
+ if (!settled) {
21
+ settled = true;
22
+ resolve(v);
23
+ }
24
+ };
25
+ try {
26
+ const p = spawn("git", ["-C", root, "ls-files", "--cached", "--others", "--exclude-standard"], {
27
+ stdio: ["ignore", "pipe", "ignore"],
28
+ });
29
+ const timer = setTimeout(() => {
30
+ p.kill();
31
+ done(null);
32
+ }, GIT_TIMEOUT_MS);
33
+ let out = "";
34
+ p.stdout.on("data", (d) => {
35
+ out += d.toString();
36
+ });
37
+ p.on("error", () => {
38
+ clearTimeout(timer);
39
+ done(null);
40
+ });
41
+ p.on("close", (code) => {
42
+ clearTimeout(timer);
43
+ done(code === 0 ? out.split("\n").filter(Boolean) : null);
44
+ });
45
+ }
46
+ catch {
47
+ done(null);
48
+ }
49
+ });
50
+ }
51
+ async function listFiles(root) {
52
+ const git = await gitFiles(root);
53
+ if (git)
54
+ return { files: git.slice(0, FILE_LIST_CAP), truncated: git.length > FILE_LIST_CAP };
55
+ try {
56
+ const files = await native.glob("**/*", root, { maxResults: FILE_LIST_CAP, timeoutMs: 1500 });
57
+ return { files, truncated: files.length >= FILE_LIST_CAP };
58
+ }
59
+ catch {
60
+ return { files: [], truncated: false };
61
+ }
62
+ }
63
+ let cache = null;
64
+ let cacheRoot = null;
65
+ /** Cached workspace file list, built once per `root`. */
66
+ export function loadWorkspaceFiles(root) {
67
+ if (cache && cacheRoot === root)
68
+ return cache;
69
+ cacheRoot = root;
70
+ cache = listFiles(root);
71
+ return cache;
72
+ }
73
+ /** Test seam: drop the cache so a fresh root re-indexes. */
74
+ export function __resetFileCacheForTest() {
75
+ cache = null;
76
+ cacheRoot = null;
77
+ }
78
+ //# sourceMappingURL=file-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-search.js","sourceRoot":"","sources":["../../src/editor/file-search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { type EditorKeymap } from "@chances-ai/ui-core";
2
+ /**
3
+ * (7.4 / task 04 W4) The multi-line prompt editor — replaces app.tsx's
4
+ * append-only input. Owns an `EmacsEditor` (docs/7.4 §5.1, R1-M4): the Chat
5
+ * **text-sink** forwards RAW key tokens (via ink-ext `keyToken`) to
6
+ * `editor.handle`, never pre-resolving actions, so a vim editor could drop in.
7
+ * Emacs editing keys live in the editor's keymap (rebindable via keybindings.json
8
+ * `Editor` context). Submit/cycle-mode/cancel stay ink-ext Chat actions in app.tsx.
9
+ *
10
+ * **Width contract (R1-M1, refined):** layout + render must share one MeasureFn.
11
+ * On stock Ink the effective render width IS `string-width` (Ink's own text
12
+ * layout), so the editor measures with ui-core `graphemeWidth` (= string-width)
13
+ * — NOT native unicode-width, which could disagree with Ink and drift the cursor.
14
+ * `graphemeWidth` is cluster-aware, so emoji/CJK columns stay correct.
15
+ */
16
+ export interface PromptEditorHandle {
17
+ setText(text: string): void;
18
+ getText(): string;
19
+ }
20
+ export interface PromptEditorProps {
21
+ /** token → editor action (merged keybindings.json `Editor` context). */
22
+ keymap: EditorKeymap;
23
+ /** While a turn streams: submit is blocked + the prompt dims (draft kept). */
24
+ busy: boolean;
25
+ /** When false (a modal/permission/yolo overlay is up) the editor keeps its
26
+ * draft but registers no input + renders nothing — so the draft survives a
27
+ * transient overlay (e.g. shift+tab → yolo confirm) and keys reach the overlay. */
28
+ active: boolean;
29
+ /** Fires on every text change (parent mirrors it for slash/@ autocomplete). */
30
+ onChange: (text: string) => void;
31
+ /** Fires when the user presses Enter to submit (parent routes /exit, slash, …). */
32
+ onEnter: (text: string) => void;
33
+ }
34
+ export declare const PromptEditor: import("react").ForwardRefExoticComponent<PromptEditorProps & import("react").RefAttributes<PromptEditorHandle>>;
35
+ //# sourceMappingURL=prompt-editor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-editor.d.ts","sourceRoot":"","sources":["../../src/editor/prompt-editor.tsx"],"names":[],"mappings":"AAQA,OAAO,EAKL,KAAK,YAAY,EAGlB,MAAM,qBAAqB,CAAC;AAuC7B;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,IAAI,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,wEAAwE;IACxE,MAAM,EAAE,YAAY,CAAC;IACrB,8EAA8E;IAC9E,IAAI,EAAE,OAAO,CAAC;IACd;;wFAEoF;IACpF,MAAM,EAAE,OAAO,CAAC;IAChB,+EAA+E;IAC/E,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,mFAAmF;IACnF,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAyED,eAAO,MAAM,YAAY,kHAuFvB,CAAC"}