@nuvin/session 0.1.0-rc.10 → 0.1.0-rc.11
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/{chunk-3S4DZMX3.js → chunk-QFYQ6YRE.js} +8 -0
- package/dist/client/index.js +1 -1
- package/dist/controller/index.js +12 -11
- package/dist/controller/session-controller.d.ts +3 -2
- package/dist/controller/session-controller.d.ts.map +1 -1
- package/dist/state/approvals.d.ts +3 -0
- package/dist/state/approvals.d.ts.map +1 -1
- package/dist/state/index.js +5 -1
- package/package.json +2 -2
|
@@ -16,6 +16,12 @@ var AUTO_APPROVED_TOOLS = /* @__PURE__ */ new Set([...READ_ONLY_TOOLS, ...INTERA
|
|
|
16
16
|
function isAutoApprovedTool(toolName) {
|
|
17
17
|
return AUTO_APPROVED_TOOLS.has(toolName);
|
|
18
18
|
}
|
|
19
|
+
var EDIT_TOOLS = /* @__PURE__ */ new Set(["FileEdit", "FileNew"]);
|
|
20
|
+
function isToolAutoApprovedForMode(mode, toolName, baselineAutoApproved = isAutoApprovedTool) {
|
|
21
|
+
if (mode === "sudo") return true;
|
|
22
|
+
if (mode === "acceptEdits" && EDIT_TOOLS.has(toolName)) return true;
|
|
23
|
+
return baselineAutoApproved(toolName);
|
|
24
|
+
}
|
|
19
25
|
function createApprovalQueueState() {
|
|
20
26
|
return { active: null, pending: [] };
|
|
21
27
|
}
|
|
@@ -662,6 +668,8 @@ export {
|
|
|
662
668
|
READ_ONLY_TOOLS,
|
|
663
669
|
BACKGROUNDLESS_TOOLS,
|
|
664
670
|
isAutoApprovedTool,
|
|
671
|
+
EDIT_TOOLS,
|
|
672
|
+
isToolAutoApprovedForMode,
|
|
665
673
|
createApprovalQueueState,
|
|
666
674
|
enqueueApproval,
|
|
667
675
|
dequeueActiveApproval,
|
package/dist/client/index.js
CHANGED
package/dist/controller/index.js
CHANGED
|
@@ -6,8 +6,9 @@ import {
|
|
|
6
6
|
createMessageStateFromMessages,
|
|
7
7
|
createSessionViewState,
|
|
8
8
|
isAutoApprovedTool,
|
|
9
|
+
isToolAutoApprovedForMode,
|
|
9
10
|
reduceSessionEvent
|
|
10
|
-
} from "../chunk-
|
|
11
|
+
} from "../chunk-QFYQ6YRE.js";
|
|
11
12
|
|
|
12
13
|
// src/controller/agent-channel.ts
|
|
13
14
|
import { EventEmitter } from "events";
|
|
@@ -67,14 +68,14 @@ var MAX_AUTO_COMPACTION_CHAIN = 10;
|
|
|
67
68
|
function createSessionController(deps) {
|
|
68
69
|
const now = deps.now ?? Date.now;
|
|
69
70
|
const isAutoApproved = deps.isAutoApproved ?? isAutoApprovedTool;
|
|
70
|
-
const errorDetail = deps.errorDetail ?? ((error) => String(error));
|
|
71
|
+
const errorDetail = deps.errorDetail ?? ((error) => error instanceof Error ? error.message : String(error));
|
|
71
72
|
let serverCommands = deps.serverCommands ?? [];
|
|
72
73
|
let compaction = deps.compaction;
|
|
73
74
|
let guardPrompt = deps.guardPrompt;
|
|
74
75
|
let autoCompactionChain = 0;
|
|
75
76
|
let state = createSessionViewState();
|
|
76
77
|
let seq = 0;
|
|
77
|
-
let
|
|
78
|
+
let approvalMode = "ask";
|
|
78
79
|
let abortController = null;
|
|
79
80
|
let questionCounter = 0;
|
|
80
81
|
const listeners = /* @__PURE__ */ new Set();
|
|
@@ -142,8 +143,8 @@ function createSessionController(deps) {
|
|
|
142
143
|
const { toolCall, agentId, parentToolCallId, dirAccess } = request;
|
|
143
144
|
const scope = parentToolCallId !== void 0 ? { agentId, parentToolCallId } : void 0;
|
|
144
145
|
const approvalKey = `${agentId}:${toolCall.name}`;
|
|
145
|
-
const auto = !dirAccess && (
|
|
146
|
-
if (dirAccess &&
|
|
146
|
+
const auto = !dirAccess && (alwaysApproved.has(approvalKey) || isToolAutoApprovedForMode(approvalMode, toolCall.name, isAutoApproved));
|
|
147
|
+
if (dirAccess && approvalMode === "sudo") {
|
|
147
148
|
emit({
|
|
148
149
|
type: "agent-event",
|
|
149
150
|
event: { type: "tool_call", toolCall },
|
|
@@ -251,7 +252,7 @@ function createSessionController(deps) {
|
|
|
251
252
|
try {
|
|
252
253
|
guarded = await guardPrompt(input);
|
|
253
254
|
} catch (error) {
|
|
254
|
-
emit({ type: "error", message:
|
|
255
|
+
emit({ type: "error", message: errorDetail(error) });
|
|
255
256
|
return;
|
|
256
257
|
}
|
|
257
258
|
if ("blocked" in guarded) {
|
|
@@ -294,10 +295,10 @@ function createSessionController(deps) {
|
|
|
294
295
|
deps.agent.messages = recovered;
|
|
295
296
|
await runCompaction();
|
|
296
297
|
} else if (!controller.signal.aborted && !isAbortError(error)) {
|
|
297
|
-
emit({ type: "error", message:
|
|
298
|
+
emit({ type: "error", message: errorDetail(error) });
|
|
298
299
|
}
|
|
299
300
|
} catch (recoveryError) {
|
|
300
|
-
emit({ type: "error", message:
|
|
301
|
+
emit({ type: "error", message: errorDetail(recoveryError) });
|
|
301
302
|
}
|
|
302
303
|
}
|
|
303
304
|
} finally {
|
|
@@ -415,14 +416,14 @@ function createSessionController(deps) {
|
|
|
415
416
|
abortController?.abort(new Error("Session reset."));
|
|
416
417
|
rejectAllPending("Session reset; pending interactions were cancelled.");
|
|
417
418
|
alwaysApproved.clear();
|
|
418
|
-
|
|
419
|
+
approvalMode = "ask";
|
|
419
420
|
emit({
|
|
420
421
|
type: "state-reset",
|
|
421
422
|
state: { ...createSessionViewState(), meta: state.meta, mcp: state.mcp }
|
|
422
423
|
});
|
|
423
424
|
},
|
|
424
|
-
|
|
425
|
-
|
|
425
|
+
setApprovalMode(mode) {
|
|
426
|
+
approvalMode = mode;
|
|
426
427
|
},
|
|
427
428
|
async submit(input, opts) {
|
|
428
429
|
if (abortController) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { AgentMetricsSnapshot } from "@nuvin/agent-core/agent";
|
|
2
2
|
import { type AgentInput, type AskUserAnswers, type Message } from "@nuvin/agent-core/shared";
|
|
3
3
|
import type { McpAuthFlowState, McpViewState, ServerEvent, SessionMeta, SessionSnapshot, SlashCommandDescriptor, WorkflowProgressDelta } from "../protocol/types.ts";
|
|
4
|
+
import { type SessionApprovalMode } from "../state/approvals.ts";
|
|
4
5
|
import type { AgentChannel } from "./agent-channel.ts";
|
|
5
6
|
/** Subset of Agent the controller needs — structurally satisfied by @nuvin/agent-core Agent. */
|
|
6
7
|
export type AgentLike = {
|
|
@@ -138,14 +139,14 @@ export interface SessionController {
|
|
|
138
139
|
publishWorkflowProgress(runId: string, delta: WorkflowProgressDelta): void;
|
|
139
140
|
/**
|
|
140
141
|
* Reset session state: abort any active turn, clear queued submissions,
|
|
141
|
-
* reject pending approvals/questions, clear alwaysApproved +
|
|
142
|
+
* reject pending approvals/questions, clear alwaysApproved + approvalMode, and emit
|
|
142
143
|
* a state-reset with a fresh view state CARRYING OVER the last published
|
|
143
144
|
* meta and authoritative MCP state. Runtime-side resets
|
|
144
145
|
* (sessionStore.startNewSession, agent system prompt, metrics) are the HOST's
|
|
145
146
|
* job — it calls those, then this.
|
|
146
147
|
*/
|
|
147
148
|
reset(): void;
|
|
148
|
-
|
|
149
|
+
setApprovalMode(mode: SessionApprovalMode): void;
|
|
149
150
|
/**
|
|
150
151
|
* Submit user input. If no turn is active, the returned promise resolves
|
|
151
152
|
* when the turn completes. If a turn is already active, the submission is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-controller.d.ts","sourceRoot":"","sources":["../../src/controller/session-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EACL,KAAK,UAAU,EACf,KAAK,cAAc,EAEnB,KAAK,OAAO,EAEb,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAEV,gBAAgB,EAChB,YAAY,EACZ,WAAW,EAEX,WAAW,EACX,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"session-controller.d.ts","sourceRoot":"","sources":["../../src/controller/session-controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,9 @@ export declare const READ_ONLY_TOOLS: ReadonlySet<string>;
|
|
|
11
11
|
*/
|
|
12
12
|
export declare const BACKGROUNDLESS_TOOLS: ReadonlySet<string>;
|
|
13
13
|
export declare function isAutoApprovedTool(toolName: string): boolean;
|
|
14
|
+
export type SessionApprovalMode = "ask" | "acceptEdits" | "sudo";
|
|
15
|
+
export declare const EDIT_TOOLS: ReadonlySet<string>;
|
|
16
|
+
export declare function isToolAutoApprovedForMode(mode: SessionApprovalMode, toolName: string, baselineAutoApproved?: (toolName: string) => boolean): boolean;
|
|
14
17
|
/**
|
|
15
18
|
* Decision the user makes on a pending tool approval.
|
|
16
19
|
* - 'y' → approve this call
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approvals.d.ts","sourceRoot":"","sources":["../../src/state/approvals.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,WAAW,CAAC,MAAM,CAU9C,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAA4C,CAAC;AAKlG,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAErD,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI;IAClC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IACjB,OAAO,EAAE,CAAC,EAAE,CAAC;CACd,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,CAAC,KAAK,kBAAkB,CAAC,CAAC,CAAC,CAEnE;AAED,wBAAgB,eAAe,CAAC,CAAC,EAC/B,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAC5B,QAAQ,EAAE,CAAC,GACV,kBAAkB,CAAC,CAAC,CAAC,CAKvB;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAG5F;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAC5B,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAC5B,kBAAkB,CAAC,CAAC,CAAC,CAMvB"}
|
|
1
|
+
{"version":3,"file":"approvals.d.ts","sourceRoot":"","sources":["../../src/state/approvals.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,WAAW,CAAC,MAAM,CAU9C,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAA4C,CAAC;AAKlG,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,aAAa,GAAG,MAAM,CAAC;AAEjE,eAAO,MAAM,UAAU,EAAE,WAAW,CAAC,MAAM,CAAoC,CAAC;AAEhF,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,mBAAmB,EACzB,QAAQ,EAAE,MAAM,EAChB,oBAAoB,GAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAA4B,GACvE,OAAO,CAIT;AAED;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAErD,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI;IAClC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IACjB,OAAO,EAAE,CAAC,EAAE,CAAC;CACd,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,CAAC,KAAK,kBAAkB,CAAC,CAAC,CAAC,CAEnE;AAED,wBAAgB,eAAe,CAAC,CAAC,EAC/B,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAC5B,QAAQ,EAAE,CAAC,GACV,kBAAkB,CAAC,CAAC,CAAC,CAKvB;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAG5F;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAC5B,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAC5B,kBAAkB,CAAC,CAAC,CAAC,CAMvB"}
|
package/dist/state/index.js
CHANGED
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
} from "../chunk-UVJIG4DT.js";
|
|
5
5
|
import {
|
|
6
6
|
BACKGROUNDLESS_TOOLS,
|
|
7
|
+
EDIT_TOOLS,
|
|
7
8
|
READ_ONLY_TOOLS,
|
|
8
9
|
appendErrorMessage,
|
|
9
10
|
appendInfoMessage,
|
|
@@ -18,13 +19,15 @@ import {
|
|
|
18
19
|
dequeueActiveApproval,
|
|
19
20
|
enqueueApproval,
|
|
20
21
|
isAutoApprovedTool,
|
|
22
|
+
isToolAutoApprovedForMode,
|
|
21
23
|
reduceSessionEvent,
|
|
22
24
|
removeApproval,
|
|
23
25
|
setToolMessageHidden,
|
|
24
26
|
setToolMessageStatus
|
|
25
|
-
} from "../chunk-
|
|
27
|
+
} from "../chunk-QFYQ6YRE.js";
|
|
26
28
|
export {
|
|
27
29
|
BACKGROUNDLESS_TOOLS,
|
|
30
|
+
EDIT_TOOLS,
|
|
28
31
|
READ_ONLY_TOOLS,
|
|
29
32
|
appendErrorMessage,
|
|
30
33
|
appendInfoMessage,
|
|
@@ -40,6 +43,7 @@ export {
|
|
|
40
43
|
dirContains,
|
|
41
44
|
enqueueApproval,
|
|
42
45
|
isAutoApprovedTool,
|
|
46
|
+
isToolAutoApprovedForMode,
|
|
43
47
|
reduceSessionEvent,
|
|
44
48
|
removeApproval,
|
|
45
49
|
resolveGrantDir,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nuvin/session",
|
|
3
|
-
"version": "0.1.0-rc.
|
|
3
|
+
"version": "0.1.0-rc.11",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Headless session layer for Nuvin: state reducers, wire protocol, session controller",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
52
|
"ws": "^8.20.0",
|
|
53
|
-
"@nuvin/agent-core": "^0.1.0-rc.
|
|
53
|
+
"@nuvin/agent-core": "^0.1.0-rc.9"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"@types/node": "^22.0.0",
|