@chances-ai/tui 6.0.1 → 8.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.map +1 -1
- package/dist/app.js +71 -3
- package/dist/app.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.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,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;CAC5C;AAED;2EAC2E;AAC3E,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,eAAe,EAAE,GAC3B,eAAe,EAAE,CAOnB;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE,YAAY,GAAG,GAAG,CAAC,OAAO,CA2I3G"}
|
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",
|
|
@@ -37,22 +46,71 @@ export function ChatApp({ vm, onSubmit, onSlash, modal, availableSlashCommands }
|
|
|
37
46
|
useSyncExternalStore(vm.subscribe, vm.getSnapshot, vm.getSnapshot);
|
|
38
47
|
const [input, setInput] = useState("");
|
|
39
48
|
const [modalNode, setModalNode] = useState(null);
|
|
49
|
+
// (5.3) Non-null while the "[d] no, and tell the model" feedback field is
|
|
50
|
+
// open under a permission prompt. Holds the text the user is typing.
|
|
51
|
+
const [feedback, setFeedback] = useState(null);
|
|
40
52
|
const { exit } = useApp();
|
|
41
53
|
useEffect(() => {
|
|
42
54
|
if (!modal)
|
|
43
55
|
return;
|
|
44
56
|
return modal.attach((node) => setModalNode(node));
|
|
45
57
|
}, [modal]);
|
|
58
|
+
// (5.3 codex Round-2 SHOULD-FIX #4) Drop any half-typed deny-feedback when
|
|
59
|
+
// the pending prompt changes or clears (e.g. resolved externally via
|
|
60
|
+
// detach), so a NEW prompt never opens in stale feedback-capture mode.
|
|
61
|
+
// vm.pending is a stable object while the user types (typing only touches
|
|
62
|
+
// local state), so this fires only on a real prompt boundary.
|
|
63
|
+
useEffect(() => {
|
|
64
|
+
setFeedback(null);
|
|
65
|
+
}, [vm.pending]);
|
|
46
66
|
useInput((char, key) => {
|
|
47
67
|
// When a modal is up, its own useInput owns the keystrokes — chat input
|
|
48
68
|
// must be inert so typing in the picker doesn't double-fire here.
|
|
49
69
|
if (modalNode)
|
|
50
70
|
return;
|
|
71
|
+
// (5.3) Shift+Tab cycles approval modes (meta+m is the Windows-non-VT
|
|
72
|
+
// fallback claude-code uses). Only when no prompt/overlay owns input.
|
|
73
|
+
if ((key.tab && key.shift) || (key.meta && char === "m")) {
|
|
74
|
+
if (!vm.pending && !vm.yoloConfirmPending)
|
|
75
|
+
vm.cycleApprovalMode();
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
// (5.3) Yolo confirmation overlay (from cycling into yolo).
|
|
79
|
+
if (vm.yoloConfirmPending) {
|
|
80
|
+
if (char === "y")
|
|
81
|
+
vm.resolveYoloConfirm(true);
|
|
82
|
+
else if (char === "n" || key.escape)
|
|
83
|
+
vm.resolveYoloConfirm(false);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
51
86
|
if (vm.pending) {
|
|
87
|
+
// (5.3) Feedback-capture sub-mode: typing builds the deny note.
|
|
88
|
+
if (feedback !== null) {
|
|
89
|
+
if (key.return) {
|
|
90
|
+
const note = feedback.trim();
|
|
91
|
+
setFeedback(null);
|
|
92
|
+
vm.resolvePermission({ allow: false, feedback: note || undefined });
|
|
93
|
+
}
|
|
94
|
+
else if (key.escape) {
|
|
95
|
+
setFeedback(null); // back to the 4-way prompt
|
|
96
|
+
}
|
|
97
|
+
else if (key.backspace || key.delete) {
|
|
98
|
+
setFeedback((s) => (s ?? "").slice(0, -1));
|
|
99
|
+
}
|
|
100
|
+
else if (char && !key.ctrl && !key.meta) {
|
|
101
|
+
setFeedback((s) => (s ?? "") + char);
|
|
102
|
+
}
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
// 4-way prompt: yes / yes-always / no / no-with-feedback.
|
|
52
106
|
if (char === "y")
|
|
53
|
-
vm.resolvePermission(true);
|
|
107
|
+
vm.resolvePermission({ allow: true });
|
|
108
|
+
else if (char === "a")
|
|
109
|
+
vm.resolvePermission({ allow: true, remember: true });
|
|
54
110
|
else if (char === "n")
|
|
55
|
-
vm.resolvePermission(false);
|
|
111
|
+
vm.resolvePermission({ allow: false });
|
|
112
|
+
else if (char === "d")
|
|
113
|
+
setFeedback(""); // open the feedback field
|
|
56
114
|
return;
|
|
57
115
|
}
|
|
58
116
|
if (key.ctrl && char === "c") {
|
|
@@ -87,7 +145,17 @@ export function ChatApp({ vm, onSubmit, onSlash, modal, availableSlashCommands }
|
|
|
87
145
|
if (char && !key.ctrl && !key.meta)
|
|
88
146
|
setInput((s) => s + char);
|
|
89
147
|
});
|
|
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]
|
|
148
|
+
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(ModeBadge, { mode: vm.approvalMode })] })) : null] }));
|
|
149
|
+
}
|
|
150
|
+
/** (5.3) Footer approval-mode indicator. Always rendered (dim hint in
|
|
151
|
+
* `default` for discoverability, coloured badge otherwise) so the Shift+Tab
|
|
152
|
+
* gesture is findable. */
|
|
153
|
+
function ModeBadge({ mode }) {
|
|
154
|
+
const d = MODE_DISPLAY[mode];
|
|
155
|
+
if (mode === "default") {
|
|
156
|
+
return (_jsx(Box, { marginLeft: 2, children: _jsx(Text, { dimColor: true, children: "shift+tab: cycle approval mode (default)" }) }));
|
|
157
|
+
}
|
|
158
|
+
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
159
|
}
|
|
92
160
|
function SlashAutocomplete({ input, available, }) {
|
|
93
161
|
const matches = suggestSlashCommands(input, available);
|
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/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": "8.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": "8.0.0",
|
|
18
|
+
"@chances-ai/runtime": "8.0.0",
|
|
19
|
+
"@chances-ai/tools": "8.0.0"
|
|
20
20
|
},
|
|
21
21
|
"peerDependencies": {
|
|
22
22
|
"ink": "^5.0.1",
|