@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.
@@ -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,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createSessionViewState,
3
3
  reduceSessionEvent
4
- } from "../chunk-3S4DZMX3.js";
4
+ } from "../chunk-QFYQ6YRE.js";
5
5
  import {
6
6
  PROTOCOL_VERSION
7
7
  } from "../chunk-HJ666YLF.js";
@@ -6,8 +6,9 @@ import {
6
6
  createMessageStateFromMessages,
7
7
  createSessionViewState,
8
8
  isAutoApprovedTool,
9
+ isToolAutoApprovedForMode,
9
10
  reduceSessionEvent
10
- } from "../chunk-3S4DZMX3.js";
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 sudoMode = false;
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 && (sudoMode || alwaysApproved.has(approvalKey) || isAutoApproved(toolCall.name));
146
- if (dirAccess && sudoMode) {
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: `Turn failed: ${errorDetail(error)}` });
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: `Turn failed: ${errorDetail(error)}` });
298
+ emit({ type: "error", message: errorDetail(error) });
298
299
  }
299
300
  } catch (recoveryError) {
300
- emit({ type: "error", message: `Turn failed: ${errorDetail(recoveryError)}` });
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
- sudoMode = false;
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
- setSudoMode(value) {
425
- sudoMode = value;
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 + sudo, and emit
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
- setSudoMode(value: boolean): void;
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":"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"}
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"}
@@ -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-3S4DZMX3.js";
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.10",
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.8"
53
+ "@nuvin/agent-core": "^0.1.0-rc.9"
54
54
  },
55
55
  "devDependencies": {
56
56
  "@types/node": "^22.0.0",