@chances-ai/tui 7.0.0 → 9.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.
- package/dist/app.d.ts +17 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +97 -4
- package/dist/app.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/view-model.d.ts +36 -6
- package/dist/view-model.d.ts.map +1 -1
- package/dist/view-model.js +68 -6
- package/dist/view-model.js.map +1 -1
- package/package.json +4 -4
package/dist/app.d.ts
CHANGED
|
@@ -4,6 +4,12 @@ export interface SlashSuggestion {
|
|
|
4
4
|
name: string;
|
|
5
5
|
description: string;
|
|
6
6
|
}
|
|
7
|
+
/** (5.4) An MCP resource the user can reference with `@<server>:<uri>`. */
|
|
8
|
+
export interface ResourceSuggestion {
|
|
9
|
+
/** `<server>:<uri>` — the text inserted after `@`. */
|
|
10
|
+
ref: string;
|
|
11
|
+
name?: string;
|
|
12
|
+
}
|
|
7
13
|
export interface ChatAppProps {
|
|
8
14
|
vm: ChatViewModel;
|
|
9
15
|
onSubmit: (prompt: string) => Promise<void>;
|
|
@@ -18,9 +24,19 @@ export interface ChatAppProps {
|
|
|
18
24
|
* no autocomplete is shown (chat works exactly as before). The host should
|
|
19
25
|
* pass a fresh array on each render if the registry can change. */
|
|
20
26
|
availableSlashCommands?: SlashSuggestion[];
|
|
27
|
+
/** (5.4) Snapshot of MCP resources for `@<server>:<uri>` autocomplete when
|
|
28
|
+
* the current token starts with `@`. Optional — absent ⇒ no `@` hints. */
|
|
29
|
+
availableResources?: ResourceSuggestion[];
|
|
21
30
|
}
|
|
22
31
|
/** Pure helper for picking the suggestions to show for a partial input.
|
|
23
32
|
* Exported separately so tests don't have to drive ChatApp through Ink. */
|
|
24
33
|
export declare function suggestSlashCommands(input: string, available: SlashSuggestion[]): SlashSuggestion[];
|
|
25
|
-
|
|
34
|
+
/**
|
|
35
|
+
* (5.4) Pure helper for `@<server>:<uri>` mention autocomplete. Triggers only
|
|
36
|
+
* on the CURRENT token (last whitespace-delimited word) starting with `@`, so a
|
|
37
|
+
* mid-message `@` is fine. Slash-command lines (`/…`) never show resource hints.
|
|
38
|
+
* Exported separately so tests don't drive ChatApp through Ink.
|
|
39
|
+
*/
|
|
40
|
+
export declare function suggestResourceMentions(input: string, available: ResourceSuggestion[]): ResourceSuggestion[];
|
|
41
|
+
export declare function ChatApp({ vm, onSubmit, onSlash, modal, availableSlashCommands, availableResources, }: ChatAppProps): JSX.Element;
|
|
26
42
|
//# 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":"
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAQ,MAAM,iBAAiB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAwClD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,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;;qEAEiE;IACjE,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB;;;uEAGmE;IACnE,sBAAsB,CAAC,EAAE,eAAe,EAAE,CAAC;IAC3C;8EAC0E;IAC1E,kBAAkB,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAC3C;AAED;2EAC2E;AAC3E,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,eAAe,EAAE,GAC3B,eAAe,EAAE,CAOnB;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,kBAAkB,EAAE,GAC9B,kBAAkB,EAAE,CAOtB;AAED,wBAAgB,OAAO,CAAC,EACtB,EAAE,EACF,QAAQ,EACR,OAAO,EACP,KAAK,EACL,sBAAsB,EACtB,kBAAkB,GACnB,EAAE,YAAY,GAAG,GAAG,CAAC,OAAO,CA4I5B"}
|
package/dist/app.js
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Box, Text, useApp, useInput } from "ink";
|
|
3
3
|
import { useEffect, useState, useSyncExternalStore } from "react";
|
|
4
|
+
/** (5.3) Footer presentation per approval mode: symbol + colour. `default` is
|
|
5
|
+
* neutral; `yolo` is loud red so the auto-approve-everything state is never
|
|
6
|
+
* ambient-invisible. */
|
|
7
|
+
const MODE_DISPLAY = {
|
|
8
|
+
default: { symbol: "○", color: "gray", label: "default" },
|
|
9
|
+
"auto-edit": { symbol: "⏵", color: "green", label: "auto-edit" },
|
|
10
|
+
plan: { symbol: "⏸", color: "cyan", label: "plan" },
|
|
11
|
+
yolo: { symbol: "⚠", color: "red", label: "yolo" },
|
|
12
|
+
};
|
|
4
13
|
const COLOR = {
|
|
5
14
|
user: "cyan",
|
|
6
15
|
assistant: "white",
|
|
@@ -33,26 +42,92 @@ export function suggestSlashCommands(input, available) {
|
|
|
33
42
|
.filter((c) => c.name.toLowerCase().startsWith(partial))
|
|
34
43
|
.slice(0, 5);
|
|
35
44
|
}
|
|
36
|
-
|
|
45
|
+
/**
|
|
46
|
+
* (5.4) Pure helper for `@<server>:<uri>` mention autocomplete. Triggers only
|
|
47
|
+
* on the CURRENT token (last whitespace-delimited word) starting with `@`, so a
|
|
48
|
+
* mid-message `@` is fine. Slash-command lines (`/…`) never show resource hints.
|
|
49
|
+
* Exported separately so tests don't drive ChatApp through Ink.
|
|
50
|
+
*/
|
|
51
|
+
export function suggestResourceMentions(input, available) {
|
|
52
|
+
if (input.startsWith("/"))
|
|
53
|
+
return [];
|
|
54
|
+
const token = input.split(/\s+/).pop() ?? "";
|
|
55
|
+
if (!token.startsWith("@"))
|
|
56
|
+
return [];
|
|
57
|
+
const partial = token.slice(1).toLowerCase();
|
|
58
|
+
if (partial === "")
|
|
59
|
+
return available.slice(0, 5);
|
|
60
|
+
return available.filter((r) => r.ref.toLowerCase().startsWith(partial)).slice(0, 5);
|
|
61
|
+
}
|
|
62
|
+
export function ChatApp({ vm, onSubmit, onSlash, modal, availableSlashCommands, availableResources, }) {
|
|
37
63
|
useSyncExternalStore(vm.subscribe, vm.getSnapshot, vm.getSnapshot);
|
|
38
64
|
const [input, setInput] = useState("");
|
|
39
65
|
const [modalNode, setModalNode] = useState(null);
|
|
66
|
+
// (5.3) Non-null while the "[d] no, and tell the model" feedback field is
|
|
67
|
+
// open under a permission prompt. Holds the text the user is typing.
|
|
68
|
+
const [feedback, setFeedback] = useState(null);
|
|
40
69
|
const { exit } = useApp();
|
|
41
70
|
useEffect(() => {
|
|
42
71
|
if (!modal)
|
|
43
72
|
return;
|
|
44
73
|
return modal.attach((node) => setModalNode(node));
|
|
45
74
|
}, [modal]);
|
|
75
|
+
// (5.3 codex Round-2 SHOULD-FIX #4) Drop any half-typed deny-feedback when
|
|
76
|
+
// the pending prompt changes or clears (e.g. resolved externally via
|
|
77
|
+
// detach), so a NEW prompt never opens in stale feedback-capture mode.
|
|
78
|
+
// vm.pending is a stable object while the user types (typing only touches
|
|
79
|
+
// local state), so this fires only on a real prompt boundary.
|
|
80
|
+
useEffect(() => {
|
|
81
|
+
setFeedback(null);
|
|
82
|
+
}, [vm.pending]);
|
|
46
83
|
useInput((char, key) => {
|
|
47
84
|
// When a modal is up, its own useInput owns the keystrokes — chat input
|
|
48
85
|
// must be inert so typing in the picker doesn't double-fire here.
|
|
49
86
|
if (modalNode)
|
|
50
87
|
return;
|
|
88
|
+
// (5.3) Shift+Tab cycles approval modes (meta+m is the Windows-non-VT
|
|
89
|
+
// fallback claude-code uses). Only when no prompt/overlay owns input.
|
|
90
|
+
if ((key.tab && key.shift) || (key.meta && char === "m")) {
|
|
91
|
+
if (!vm.pending && !vm.yoloConfirmPending)
|
|
92
|
+
vm.cycleApprovalMode();
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
// (5.3) Yolo confirmation overlay (from cycling into yolo).
|
|
96
|
+
if (vm.yoloConfirmPending) {
|
|
97
|
+
if (char === "y")
|
|
98
|
+
vm.resolveYoloConfirm(true);
|
|
99
|
+
else if (char === "n" || key.escape)
|
|
100
|
+
vm.resolveYoloConfirm(false);
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
51
103
|
if (vm.pending) {
|
|
104
|
+
// (5.3) Feedback-capture sub-mode: typing builds the deny note.
|
|
105
|
+
if (feedback !== null) {
|
|
106
|
+
if (key.return) {
|
|
107
|
+
const note = feedback.trim();
|
|
108
|
+
setFeedback(null);
|
|
109
|
+
vm.resolvePermission({ allow: false, feedback: note || undefined });
|
|
110
|
+
}
|
|
111
|
+
else if (key.escape) {
|
|
112
|
+
setFeedback(null); // back to the 4-way prompt
|
|
113
|
+
}
|
|
114
|
+
else if (key.backspace || key.delete) {
|
|
115
|
+
setFeedback((s) => (s ?? "").slice(0, -1));
|
|
116
|
+
}
|
|
117
|
+
else if (char && !key.ctrl && !key.meta) {
|
|
118
|
+
setFeedback((s) => (s ?? "") + char);
|
|
119
|
+
}
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
// 4-way prompt: yes / yes-always / no / no-with-feedback.
|
|
52
123
|
if (char === "y")
|
|
53
|
-
vm.resolvePermission(true);
|
|
124
|
+
vm.resolvePermission({ allow: true });
|
|
125
|
+
else if (char === "a")
|
|
126
|
+
vm.resolvePermission({ allow: true, remember: true });
|
|
54
127
|
else if (char === "n")
|
|
55
|
-
vm.resolvePermission(false);
|
|
128
|
+
vm.resolvePermission({ allow: false });
|
|
129
|
+
else if (char === "d")
|
|
130
|
+
setFeedback(""); // open the feedback field
|
|
56
131
|
return;
|
|
57
132
|
}
|
|
58
133
|
if (key.ctrl && char === "c") {
|
|
@@ -87,7 +162,17 @@ export function ChatApp({ vm, onSubmit, onSlash, modal, availableSlashCommands }
|
|
|
87
162
|
if (char && !key.ctrl && !key.meta)
|
|
88
163
|
setInput((s) => s + char);
|
|
89
164
|
});
|
|
90
|
-
return (_jsxs(Box, { flexDirection: "column", children: [vm.lines.map((line, i) => (_jsx(LineView, { line: line }, i))), modalNode ? _jsx(Box, { marginTop: 1, children: modalNode }) : null, !modalNode && vm.pending ? (_jsxs(Box, { marginTop: 1, borderStyle: "round", borderColor: "yellow", paddingX: 1, flexDirection: "column", children: [_jsxs(Text, { color: "yellow", children: ["Approve ", vm.pending.req.name, "?"] }), _jsx(Text, { children: vm.pending.req.summary }), _jsx(Text, { dimColor: true, children: "[y]
|
|
165
|
+
return (_jsxs(Box, { flexDirection: "column", children: [vm.lines.map((line, i) => (_jsx(LineView, { line: line }, i))), modalNode ? _jsx(Box, { marginTop: 1, children: modalNode }) : null, !modalNode && vm.yoloConfirmPending ? (_jsxs(Box, { marginTop: 1, borderStyle: "round", borderColor: "red", paddingX: 1, flexDirection: "column", children: [_jsx(Text, { color: "red", 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" })] })) : null, !modalNode && !vm.yoloConfirmPending && vm.pending ? (_jsxs(Box, { marginTop: 1, borderStyle: "round", borderColor: "yellow", paddingX: 1, flexDirection: "column", children: [_jsxs(Text, { color: "yellow", children: ["Approve ", vm.pending.req.name, "?"] }), _jsx(Text, { children: vm.pending.req.summary }), feedback !== null ? (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { dimColor: true, children: "tell the model what to do instead:" }), _jsxs(Box, { children: [_jsx(Text, { color: "cyan", children: "\u203A " }), _jsx(Text, { children: feedback }), _jsx(Text, { dimColor: true, children: "\u258C" })] }), _jsx(Text, { dimColor: true, children: "[enter] send \u00B7 [esc] back" })] })) : (_jsx(Text, { dimColor: true, children: "[y] yes \u00B7 [a] yes, don't ask \u00B7 [n] no \u00B7 [d] no + tell the model" }))] })) : null, !modalNode && !vm.yoloConfirmPending && !vm.pending ? (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "cyan", children: vm.busy ? "…thinking " : "› " }), _jsx(Text, { children: input })] }), _jsx(SlashAutocomplete, { input: input, available: availableSlashCommands ?? [] }), _jsx(MentionAutocomplete, { input: input, available: availableResources ?? [] }), _jsx(ModeBadge, { mode: vm.approvalMode })] })) : null] }));
|
|
166
|
+
}
|
|
167
|
+
/** (5.3) Footer approval-mode indicator. Always rendered (dim hint in
|
|
168
|
+
* `default` for discoverability, coloured badge otherwise) so the Shift+Tab
|
|
169
|
+
* gesture is findable. */
|
|
170
|
+
function ModeBadge({ mode }) {
|
|
171
|
+
const d = MODE_DISPLAY[mode];
|
|
172
|
+
if (mode === "default") {
|
|
173
|
+
return (_jsx(Box, { marginLeft: 2, children: _jsx(Text, { dimColor: true, children: "shift+tab: cycle approval mode (default)" }) }));
|
|
174
|
+
}
|
|
175
|
+
return (_jsxs(Box, { marginLeft: 2, children: [_jsxs(Text, { color: d.color, children: [d.symbol, " ", d.label] }), _jsx(Text, { dimColor: true, children: " \u00B7 shift+tab to cycle" })] }));
|
|
91
176
|
}
|
|
92
177
|
function SlashAutocomplete({ input, available, }) {
|
|
93
178
|
const matches = suggestSlashCommands(input, available);
|
|
@@ -95,4 +180,12 @@ function SlashAutocomplete({ input, available, }) {
|
|
|
95
180
|
return null;
|
|
96
181
|
return (_jsx(Box, { flexDirection: "column", marginLeft: 2, children: matches.map((m) => (_jsxs(Text, { dimColor: true, children: ["/", m.name, " \u2014 ", m.description] }, m.name))) }));
|
|
97
182
|
}
|
|
183
|
+
/** (5.4) Ghost-text hints for `@<server>:<uri>` resource mentions — mirrors
|
|
184
|
+
* `SlashAutocomplete` (display-only; the user types the ref). */
|
|
185
|
+
function MentionAutocomplete({ input, available, }) {
|
|
186
|
+
const matches = suggestResourceMentions(input, available);
|
|
187
|
+
if (matches.length === 0)
|
|
188
|
+
return null;
|
|
189
|
+
return (_jsx(Box, { flexDirection: "column", marginLeft: 2, children: matches.map((m) => (_jsxs(Text, { dimColor: true, children: ["@", m.ref, m.name ? ` — ${m.name}` : ""] }, m.ref))) }));
|
|
190
|
+
}
|
|
98
191
|
//# 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,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,oBAAoB,EAAkB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { ChatViewModel } from "./view-model.js";
|
|
|
2
2
|
import type { ModalController } from "./modal.js";
|
|
3
3
|
export { ChatViewModel } from "./view-model.js";
|
|
4
4
|
export type { Line, LineKind } from "./view-model.js";
|
|
5
|
-
export { ChatApp, suggestSlashCommands, type SlashSuggestion } from "./app.js";
|
|
5
|
+
export { ChatApp, suggestSlashCommands, suggestResourceMentions, type SlashSuggestion, type ResourceSuggestion, } from "./app.js";
|
|
6
6
|
export { ModalController, type OpenModal } from "./modal.js";
|
|
7
7
|
export { ModelPicker, type PickableModel } from "./model-picker.js";
|
|
8
8
|
export { SessionPicker, type PickableSession } from "./session-picker.js";
|
|
@@ -20,5 +20,5 @@ export interface ChatHandle {
|
|
|
20
20
|
* `modal` is the controller slash commands use to open pickers; pass the
|
|
21
21
|
* same instance to `dispatchSlash(name, args, { openModal: modal.open })`.
|
|
22
22
|
*/
|
|
23
|
-
export declare function renderChat(vm: ChatViewModel, onSubmit: (prompt: string) => Promise<void>, onSlash?: (line: string) => Promise<void>, modal?: ModalController, availableSlashCommands?: import("./app.js").SlashSuggestion[]): ChatHandle;
|
|
23
|
+
export declare function renderChat(vm: ChatViewModel, onSubmit: (prompt: string) => Promise<void>, onSlash?: (line: string) => Promise<void>, modal?: ModalController, availableSlashCommands?: import("./app.js").SlashSuggestion[], availableResources?: import("./app.js").ResourceSuggestion[]): ChatHandle;
|
|
24
24
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EACL,OAAO,EACP,oBAAoB,EACpB,uBAAuB,EACvB,KAAK,eAAe,EACpB,KAAK,kBAAkB,GACxB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,aAAa,CAAC;IAClB,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,EAAE,EAAE,aAAa,EACjB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EAC3C,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EACzC,KAAK,CAAC,EAAE,eAAe,EACvB,sBAAsB,CAAC,EAAE,OAAO,UAAU,EAAE,eAAe,EAAE,EAC7D,kBAAkB,CAAC,EAAE,OAAO,UAAU,EAAE,kBAAkB,EAAE,GAC3D,UAAU,CAgBZ"}
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import { render } from "ink";
|
|
|
3
3
|
import { ChatApp } from "./app.js";
|
|
4
4
|
import { ChatViewModel } from "./view-model.js";
|
|
5
5
|
export { ChatViewModel } from "./view-model.js";
|
|
6
|
-
export { ChatApp, suggestSlashCommands } from "./app.js";
|
|
6
|
+
export { ChatApp, suggestSlashCommands, suggestResourceMentions, } from "./app.js";
|
|
7
7
|
export { ModalController } from "./modal.js";
|
|
8
8
|
export { ModelPicker } from "./model-picker.js";
|
|
9
9
|
export { SessionPicker } from "./session-picker.js";
|
|
@@ -16,8 +16,8 @@ export { ApiKeyPrompt } from "./api-key-prompt.js";
|
|
|
16
16
|
* `modal` is the controller slash commands use to open pickers; pass the
|
|
17
17
|
* same instance to `dispatchSlash(name, args, { openModal: modal.open })`.
|
|
18
18
|
*/
|
|
19
|
-
export function renderChat(vm, onSubmit, onSlash, modal, availableSlashCommands) {
|
|
20
|
-
const instance = render(_jsx(ChatApp, { vm: vm, onSubmit: onSubmit, onSlash: onSlash, modal: modal, availableSlashCommands: availableSlashCommands }));
|
|
19
|
+
export function renderChat(vm, onSubmit, onSlash, modal, availableSlashCommands, availableResources) {
|
|
20
|
+
const instance = render(_jsx(ChatApp, { vm: vm, onSubmit: onSubmit, onSlash: onSlash, modal: modal, availableSlashCommands: availableSlashCommands, availableResources: availableResources }));
|
|
21
21
|
return {
|
|
22
22
|
vm,
|
|
23
23
|
waitUntilExit: () => instance.waitUntilExit(),
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EACL,OAAO,EACP,oBAAoB,EACpB,uBAAuB,GAGxB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,eAAe,EAAkB,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAsB,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAwB,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAQnD;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CACxB,EAAiB,EACjB,QAA2C,EAC3C,OAAyC,EACzC,KAAuB,EACvB,sBAA6D,EAC7D,kBAA4D;IAE5D,MAAM,QAAQ,GAAG,MAAM,CACrB,KAAC,OAAO,IACN,EAAE,EAAE,EAAE,EACN,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,sBAAsB,EAAE,sBAAsB,EAC9C,kBAAkB,EAAE,kBAAkB,GACtC,CACH,CAAC;IACF,OAAO;QACL,EAAE;QACF,aAAa,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE;QAC7C,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE;KAClC,CAAC;AACJ,CAAC"}
|
package/dist/view-model.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { EventBus } from "@chances-ai/runtime";
|
|
2
|
-
import type { PermissionRequest } from "@chances-ai/tools";
|
|
1
|
+
import type { ApprovalMode, ApprovalState, EventBus } from "@chances-ai/runtime";
|
|
2
|
+
import type { PermissionDecision, PermissionRequest } from "@chances-ai/tools";
|
|
3
3
|
export type LineKind = "user" | "assistant" | "tool" | "tool-result" | "error" | "info";
|
|
4
4
|
export interface Line {
|
|
5
5
|
kind: LineKind;
|
|
@@ -8,7 +8,7 @@ export interface Line {
|
|
|
8
8
|
}
|
|
9
9
|
interface Pending {
|
|
10
10
|
req: PermissionRequest;
|
|
11
|
-
resolve: (
|
|
11
|
+
resolve: (decision: PermissionDecision) => void;
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
14
|
* Observable view-model. The Ink tree subscribes via useSyncExternalStore and
|
|
@@ -16,13 +16,24 @@ interface Pending {
|
|
|
16
16
|
* permission resolver. This is the seam that keeps the UI decoupled from core.
|
|
17
17
|
*/
|
|
18
18
|
export declare class ChatViewModel {
|
|
19
|
+
private readonly approval?;
|
|
19
20
|
lines: Line[];
|
|
20
21
|
busy: boolean;
|
|
21
22
|
pending: Pending | null;
|
|
23
|
+
/** (5.3) True while the Shift+Tab-into-yolo confirmation overlay is up.
|
|
24
|
+
* app.tsx renders the red confirm box; `resolveYoloConfirm` clears it. */
|
|
25
|
+
yoloConfirmPending: boolean;
|
|
22
26
|
private version;
|
|
23
27
|
private readonly listeners;
|
|
24
28
|
private assistantOpen;
|
|
25
29
|
private busUnsubscribers;
|
|
30
|
+
/**
|
|
31
|
+
* (5.3) Optional session approval-mode holder. When wired (interactive
|
|
32
|
+
* `chat`), the footer reflects `approvalMode` and Shift+Tab / `/approval`
|
|
33
|
+
* mutate it. Left undefined in tests that don't exercise modes — every
|
|
34
|
+
* approval method then no-ops and `approvalMode` reads `"default"`.
|
|
35
|
+
*/
|
|
36
|
+
constructor(approval?: ApprovalState | undefined);
|
|
26
37
|
subscribe: (fn: () => void) => (() => void);
|
|
27
38
|
getSnapshot: () => number;
|
|
28
39
|
private bump;
|
|
@@ -49,9 +60,28 @@ export declare class ChatViewModel {
|
|
|
49
60
|
detach(): void;
|
|
50
61
|
private detached;
|
|
51
62
|
/** Returned to the PermissionGate as its resolver. After `detach()`,
|
|
52
|
-
* any call resolves
|
|
53
|
-
requestPermission: (req: PermissionRequest) => Promise<
|
|
54
|
-
|
|
63
|
+
* any call resolves denied synchronously — see `detach()` docstring. */
|
|
64
|
+
requestPermission: (req: PermissionRequest) => Promise<PermissionDecision>;
|
|
65
|
+
/**
|
|
66
|
+
* (5.3) Resolve the open permission prompt with a full decision:
|
|
67
|
+
* - `{allow:true}` — approve once (not remembered).
|
|
68
|
+
* - `{allow:true, remember:true}` — approve & don't ask again (the gate
|
|
69
|
+
* caches it even for un-scoped tools like file-write).
|
|
70
|
+
* - `{allow:false}` — plain deny.
|
|
71
|
+
* - `{allow:false, feedback}` — deny + relay the user's note to the model.
|
|
72
|
+
*/
|
|
73
|
+
resolvePermission(decision: PermissionDecision): void;
|
|
74
|
+
/** The current session approval mode (`"default"` when unwired). */
|
|
75
|
+
get approvalMode(): ApprovalMode;
|
|
76
|
+
/**
|
|
77
|
+
* Shift+Tab handler. Advances the cycle; cycling INTO `yolo` without a prior
|
|
78
|
+
* confirmation opens the confirm overlay instead of switching (the typed
|
|
79
|
+
* `/approval yolo` path counts as consent and skips this — see
|
|
80
|
+
* `setApprovalMode`).
|
|
81
|
+
*/
|
|
82
|
+
cycleApprovalMode(): void;
|
|
83
|
+
/** Resolve the yolo confirm overlay. `confirm` latches yolo for the session. */
|
|
84
|
+
resolveYoloConfirm(confirm: boolean): void;
|
|
55
85
|
}
|
|
56
86
|
export {};
|
|
57
87
|
//# sourceMappingURL=view-model.d.ts.map
|
package/dist/view-model.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view-model.d.ts","sourceRoot":"","sources":["../src/view-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"view-model.d.ts","sourceRoot":"","sources":["../src/view-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE/E,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,aAAa,GAAG,OAAO,GAAG,MAAM,CAAC;AACxF,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,OAAO,CAAC;CACd;AAED,UAAU,OAAO;IACf,GAAG,EAAE,iBAAiB,CAAC;IACvB,OAAO,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;CACjD;AAED;;;;GAIG;AACH,qBAAa,aAAa;IAmBZ,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAlBtC,KAAK,EAAE,IAAI,EAAE,CAAM;IACnB,IAAI,UAAS;IACb,OAAO,EAAE,OAAO,GAAG,IAAI,CAAQ;IAC/B;+EAC2E;IAC3E,kBAAkB,UAAS;IAE3B,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IACnD,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,gBAAgB,CAAyB;IAEjD;;;;;OAKG;gBAC0B,QAAQ,CAAC,EAAE,aAAa,YAAA;IAErD,SAAS,GAAI,IAAI,MAAM,IAAI,KAAG,CAAC,MAAM,IAAI,CAAC,CAGxC;IAEF,WAAW,QAAO,MAAM,CAAiB;IAEzC,OAAO,CAAC,IAAI;IAKZ,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAM5B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAM5B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAM7B;;;gEAG4D;IAC5D,UAAU,IAAI,IAAI;IAMlB,MAAM,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI;IA4C3B;;;;;;;;;;OAUG;IACH,MAAM,IAAI,IAAI;IAUd,OAAO,CAAC,QAAQ,CAAS;IAEzB;4EACwE;IACxE,iBAAiB,GAAI,KAAK,iBAAiB,KAAG,OAAO,CAAC,kBAAkB,CAAC,CAMvE;IAEF;;;;;;;OAOG;IACH,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAmBrD,oEAAoE;IACpE,IAAI,YAAY,IAAI,YAAY,CAE/B;IAED;;;;;OAKG;IACH,iBAAiB,IAAI,IAAI;IAazB,gFAAgF;IAChF,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAS3C"}
|
package/dist/view-model.js
CHANGED
|
@@ -4,13 +4,26 @@
|
|
|
4
4
|
* permission resolver. This is the seam that keeps the UI decoupled from core.
|
|
5
5
|
*/
|
|
6
6
|
export class ChatViewModel {
|
|
7
|
+
approval;
|
|
7
8
|
lines = [];
|
|
8
9
|
busy = false;
|
|
9
10
|
pending = null;
|
|
11
|
+
/** (5.3) True while the Shift+Tab-into-yolo confirmation overlay is up.
|
|
12
|
+
* app.tsx renders the red confirm box; `resolveYoloConfirm` clears it. */
|
|
13
|
+
yoloConfirmPending = false;
|
|
10
14
|
version = 0;
|
|
11
15
|
listeners = new Set();
|
|
12
16
|
assistantOpen = false;
|
|
13
17
|
busUnsubscribers = [];
|
|
18
|
+
/**
|
|
19
|
+
* (5.3) Optional session approval-mode holder. When wired (interactive
|
|
20
|
+
* `chat`), the footer reflects `approvalMode` and Shift+Tab / `/approval`
|
|
21
|
+
* mutate it. Left undefined in tests that don't exercise modes — every
|
|
22
|
+
* approval method then no-ops and `approvalMode` reads `"default"`.
|
|
23
|
+
*/
|
|
24
|
+
constructor(approval) {
|
|
25
|
+
this.approval = approval;
|
|
26
|
+
}
|
|
14
27
|
subscribe = (fn) => {
|
|
15
28
|
this.listeners.add(fn);
|
|
16
29
|
return () => this.listeners.delete(fn);
|
|
@@ -107,26 +120,75 @@ export class ChatViewModel {
|
|
|
107
120
|
if (this.pending) {
|
|
108
121
|
const p = this.pending;
|
|
109
122
|
this.pending = null;
|
|
110
|
-
p.resolve(false);
|
|
123
|
+
p.resolve({ allow: false });
|
|
111
124
|
}
|
|
112
125
|
}
|
|
113
126
|
detached = false;
|
|
114
127
|
/** Returned to the PermissionGate as its resolver. After `detach()`,
|
|
115
|
-
* any call resolves
|
|
128
|
+
* any call resolves denied synchronously — see `detach()` docstring. */
|
|
116
129
|
requestPermission = (req) => {
|
|
117
130
|
if (this.detached)
|
|
118
|
-
return Promise.resolve(false);
|
|
131
|
+
return Promise.resolve({ allow: false });
|
|
119
132
|
return new Promise((resolve) => {
|
|
120
133
|
this.pending = { req, resolve };
|
|
121
134
|
this.bump();
|
|
122
135
|
});
|
|
123
136
|
};
|
|
124
|
-
|
|
137
|
+
/**
|
|
138
|
+
* (5.3) Resolve the open permission prompt with a full decision:
|
|
139
|
+
* - `{allow:true}` — approve once (not remembered).
|
|
140
|
+
* - `{allow:true, remember:true}` — approve & don't ask again (the gate
|
|
141
|
+
* caches it even for un-scoped tools like file-write).
|
|
142
|
+
* - `{allow:false}` — plain deny.
|
|
143
|
+
* - `{allow:false, feedback}` — deny + relay the user's note to the model.
|
|
144
|
+
*/
|
|
145
|
+
resolvePermission(decision) {
|
|
125
146
|
const p = this.pending;
|
|
126
147
|
this.pending = null;
|
|
127
148
|
if (p) {
|
|
128
|
-
|
|
129
|
-
|
|
149
|
+
const verb = decision.allow
|
|
150
|
+
? decision.remember
|
|
151
|
+
? "approved (won't ask again)"
|
|
152
|
+
: "approved"
|
|
153
|
+
: decision.feedback
|
|
154
|
+
? "denied with feedback"
|
|
155
|
+
: "denied";
|
|
156
|
+
this.lines.push({ kind: "info", text: `${verb}: ${p.req.summary}` });
|
|
157
|
+
p.resolve(decision);
|
|
158
|
+
}
|
|
159
|
+
this.bump();
|
|
160
|
+
}
|
|
161
|
+
// -- approval mode (5.3) ----------------------------------------------------
|
|
162
|
+
/** The current session approval mode (`"default"` when unwired). */
|
|
163
|
+
get approvalMode() {
|
|
164
|
+
return this.approval?.get() ?? "default";
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Shift+Tab handler. Advances the cycle; cycling INTO `yolo` without a prior
|
|
168
|
+
* confirmation opens the confirm overlay instead of switching (the typed
|
|
169
|
+
* `/approval yolo` path counts as consent and skips this — see
|
|
170
|
+
* `setApprovalMode`).
|
|
171
|
+
*/
|
|
172
|
+
cycleApprovalMode() {
|
|
173
|
+
if (!this.approval)
|
|
174
|
+
return;
|
|
175
|
+
const next = this.approval.next();
|
|
176
|
+
if (next === "yolo" && !this.approval.isYoloConfirmed()) {
|
|
177
|
+
this.yoloConfirmPending = true;
|
|
178
|
+
this.bump();
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
this.approval.set(next);
|
|
182
|
+
this.lines.push({ kind: "info", text: `approval mode → ${next}` });
|
|
183
|
+
this.bump();
|
|
184
|
+
}
|
|
185
|
+
/** Resolve the yolo confirm overlay. `confirm` latches yolo for the session. */
|
|
186
|
+
resolveYoloConfirm(confirm) {
|
|
187
|
+
this.yoloConfirmPending = false;
|
|
188
|
+
if (confirm && this.approval) {
|
|
189
|
+
this.approval.confirmYolo();
|
|
190
|
+
this.approval.set("yolo");
|
|
191
|
+
this.lines.push({ kind: "info", text: "approval mode → yolo (all tool calls auto-approved)" });
|
|
130
192
|
}
|
|
131
193
|
this.bump();
|
|
132
194
|
}
|
package/dist/view-model.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view-model.js","sourceRoot":"","sources":["../src/view-model.ts"],"names":[],"mappings":"AAeA;;;;GAIG;AACH,MAAM,OAAO,aAAa;
|
|
1
|
+
{"version":3,"file":"view-model.js","sourceRoot":"","sources":["../src/view-model.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chances-ai/tui",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "9.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
"dist"
|
|
15
15
|
],
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@chances-ai/plugin-api": "
|
|
18
|
-
"@chances-ai/runtime": "
|
|
19
|
-
"@chances-ai/tools": "
|
|
17
|
+
"@chances-ai/plugin-api": "9.0.0",
|
|
18
|
+
"@chances-ai/runtime": "9.0.0",
|
|
19
|
+
"@chances-ai/tools": "9.0.0"
|
|
20
20
|
},
|
|
21
21
|
"peerDependencies": {
|
|
22
22
|
"ink": "^5.0.1",
|