wave-agent-sdk 0.13.0 → 0.13.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"slashCommandManager.d.ts","sourceRoot":"","sources":["../../src/managers/slashCommandManager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAQ1E,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAWlD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAKxD,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,mBAAmB;IAQ5B,OAAO,CAAC,SAAS;IAPnB,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,cAAc,CAAyC;IAC/D,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,6BAA6B,CAAgC;gBAG3D,SAAS,EAAE,SAAS,EAC5B,OAAO,EAAE,0BAA0B;IAK9B,UAAU,IAAI,IAAI;IAazB,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,KAAK,SAAS,GAEpB;IAED,OAAO,KAAK,qBAAqB,GAEhC;IAED,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,eAAe,GAE1B;IAED,OAAO,CAAC,yBAAyB;IAcjC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA2C1B;;OAEG;IACI,qBAAqB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI;IAyK3D;;OAEG;IACI,sBAAsB,CAC3B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,kBAAkB,EAAE,GAC7B,IAAI;IAyCP;;OAEG;IACI,oBAAoB,IAAI,IAAI;IAWnC;;OAEG;IACI,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAInD;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;OAEG;IACI,WAAW,IAAI,YAAY,EAAE;IAIpC;;OAEG;IACI,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI9D;;OAEG;IACU,cAAc,CACzB,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,OAAO,CAAC;IA2BnB;;;OAGG;IACI,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG;QAClD,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf;IAeD;;OAEG;IACI,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI7C;;OAEG;IACI,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAI1E;;OAEG;IACI,iBAAiB,IAAI,kBAAkB,EAAE;IAIhD;;OAEG;YACW,+BAA+B;IAiD7C;;OAEG;IACI,mBAAmB,IAAI,IAAI;CAQnC"}
1
+ {"version":3,"file":"slashCommandManager.d.ts","sourceRoot":"","sources":["../../src/managers/slashCommandManager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAQ1E,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAWlD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAKxD,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,mBAAmB;IAQ5B,OAAO,CAAC,SAAS;IAPnB,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,cAAc,CAAyC;IAC/D,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,6BAA6B,CAAgC;gBAG3D,SAAS,EAAE,SAAS,EAC5B,OAAO,EAAE,0BAA0B;IAK9B,UAAU,IAAI,IAAI;IAazB,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,KAAK,SAAS,GAEpB;IAED,OAAO,KAAK,qBAAqB,GAEhC;IAED,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,eAAe,GAE1B;IAED,OAAO,CAAC,yBAAyB;IAcjC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA2C1B;;OAEG;IACI,qBAAqB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI;IAyK3D;;OAEG;IACI,sBAAsB,CAC3B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,kBAAkB,EAAE,GAC7B,IAAI;IA0CP;;OAEG;IACI,oBAAoB,IAAI,IAAI;IAWnC;;OAEG;IACI,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAInD;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;OAEG;IACI,WAAW,IAAI,YAAY,EAAE;IAIpC;;OAEG;IACI,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI9D;;OAEG;IACU,cAAc,CACzB,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,OAAO,CAAC;IA2BnB;;;OAGG;IACI,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG;QAClD,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf;IAeD;;OAEG;IACI,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI7C;;OAEG;IACI,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAI1E;;OAEG;IACI,iBAAiB,IAAI,kBAAkB,EAAE;IAIhD;;OAEG;YACW,+BAA+B;IAkD7C;;OAEG;IACI,mBAAmB,IAAI,IAAI;CAQnC"}
@@ -237,7 +237,7 @@ export class SlashCommandManager {
237
237
  if (args) {
238
238
  processedContent = substituteCommandParameters(processedContent, args);
239
239
  }
240
- await this.executeCustomCommandInMainAgent(namespacedName, processedContent, command.config);
240
+ await this.executeCustomCommandInMainAgent(namespacedName, processedContent, command.config, args);
241
241
  },
242
242
  });
243
243
  }
@@ -349,13 +349,13 @@ export class SlashCommandManager {
349
349
  /**
350
350
  * Execute custom command in main agent instead of sub-agent
351
351
  */
352
- async executeCustomCommandInMainAgent(commandName, content, config) {
352
+ async executeCustomCommandInMainAgent(commandName, content, config, args) {
353
353
  try {
354
354
  // Parse bash commands from the content
355
355
  const { commands, processedContent } = parseBashCommands(content);
356
356
  // Add user message immediately so text block shows before bash execution
357
357
  const messageId = this.messageManager.addUserMessage({
358
- content: `/${commandName}`,
358
+ content: `/${commandName}${args ? ` ${args}` : ""}`,
359
359
  customCommandContent: processedContent,
360
360
  });
361
361
  // Execute bash commands and update the message if any exist
@@ -6,6 +6,7 @@ import { MessageManager } from "./messageManager.js";
6
6
  import { ToolManager } from "./toolManager.js";
7
7
  import { UserMessageParams, type AgentToolBlockUpdateParams } from "../utils/messageOperations.js";
8
8
  import { Container } from "../utils/container.js";
9
+ import type { PermissionMode } from "../types/permissions.js";
9
10
  export interface SubagentManagerCallbacks {
10
11
  /** Triggered when subagent adds user message */
11
12
  onSubagentUserMessageAdded?: (subagentId: string, params: UserMessageParams) => void;
@@ -47,6 +48,7 @@ export interface SubagentManagerOptions {
47
48
  }
48
49
  export declare class SubagentManager {
49
50
  private instances;
51
+ private subagentPermissionManagers;
50
52
  private cachedConfigurations;
51
53
  private workdir;
52
54
  private callbacks?;
@@ -59,6 +61,10 @@ export declare class SubagentManager {
59
61
  * Initialize the SubagentManager by loading and caching configurations
60
62
  */
61
63
  initialize(): Promise<void>;
64
+ /**
65
+ * Sync parent permission rules to all running subagents
66
+ */
67
+ private syncPermissionRulesToSubagents;
62
68
  /**
63
69
  * Load all available subagent configurations and cache them
64
70
  */
@@ -81,6 +87,7 @@ export declare class SubagentManager {
81
87
  allowedTools?: string[];
82
88
  model?: string;
83
89
  stream?: boolean;
90
+ permissionModeOverride?: PermissionMode;
84
91
  }, runInBackground?: boolean, onUpdate?: () => void): Promise<SubagentInstance>;
85
92
  /**
86
93
  * Create a new subagent instance initialized with a copy of the current message history.
@@ -90,6 +97,7 @@ export declare class SubagentManager {
90
97
  description: string;
91
98
  allowedTools?: string[];
92
99
  model?: string;
100
+ permissionModeOverride?: PermissionMode;
93
101
  }, onUpdate?: () => void): Promise<SubagentInstance>;
94
102
  /**
95
103
  * Execute agent using subagent instance
@@ -1 +1 @@
1
- {"version":3,"file":"subagentManager.d.ts","sourceRoot":"","sources":["../../src/managers/subagentManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subagentManager.d.ts","sourceRoot":"","sources":["../../src/managers/subagentManager.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ import { logger } from "../utils/globalLogger.js";
11
11
  export class SubagentManager {
12
12
  constructor(container, options) {
13
13
  this.instances = new Map();
14
+ this.subagentPermissionManagers = new Map();
14
15
  this.cachedConfigurations = null;
15
16
  this.container = container;
16
17
  this.workdir = options.workdir;
@@ -26,6 +27,41 @@ export class SubagentManager {
26
27
  */
27
28
  async initialize() {
28
29
  await this.loadConfigurations();
30
+ // Hook into parent PermissionManager's update methods to propagate rules to subagents
31
+ const parentPm = this.container.get("PermissionManager");
32
+ if (parentPm &&
33
+ typeof parentPm.updateAllowedRules === "function" &&
34
+ typeof parentPm.updateDeniedRules === "function" &&
35
+ typeof parentPm.updateAdditionalDirectories === "function") {
36
+ const origUpdateAllowed = parentPm.updateAllowedRules.bind(parentPm);
37
+ const origUpdateDenied = parentPm.updateDeniedRules.bind(parentPm);
38
+ const origUpdateDirs = parentPm.updateAdditionalDirectories.bind(parentPm);
39
+ parentPm.updateAllowedRules = (rules) => {
40
+ origUpdateAllowed(rules);
41
+ this.syncPermissionRulesToSubagents();
42
+ };
43
+ parentPm.updateDeniedRules = (rules) => {
44
+ origUpdateDenied(rules);
45
+ this.syncPermissionRulesToSubagents();
46
+ };
47
+ parentPm.updateAdditionalDirectories = (directories) => {
48
+ origUpdateDirs(directories);
49
+ this.syncPermissionRulesToSubagents();
50
+ };
51
+ }
52
+ }
53
+ /**
54
+ * Sync parent permission rules to all running subagents
55
+ */
56
+ syncPermissionRulesToSubagents() {
57
+ const parentPm = this.container.get("PermissionManager");
58
+ if (!parentPm)
59
+ return;
60
+ for (const [, pm] of this.subagentPermissionManagers) {
61
+ pm.updateAllowedRules(parentPm.getAllowedRules());
62
+ pm.updateDeniedRules(parentPm.getDeniedRules());
63
+ pm.updateAdditionalDirectories(parentPm.getAdditionalDirectories());
64
+ }
29
65
  }
30
66
  /**
31
67
  * Load all available subagent configurations and cache them
@@ -69,7 +105,8 @@ export class SubagentManager {
69
105
  const parentPermissionManager = this.container.get("PermissionManager");
70
106
  const subagentPermissionManager = new PermissionManager(subagentContainer, {
71
107
  workdir: this.workdir,
72
- configuredPermissionMode: parentPermissionManager?.getConfiguredPermissionMode(),
108
+ configuredPermissionMode: parameters.permissionModeOverride ??
109
+ parentPermissionManager?.getConfiguredPermissionMode(),
73
110
  allowedRules: parentPermissionManager?.getAllowedRules(),
74
111
  deniedRules: parentPermissionManager?.getDeniedRules(),
75
112
  instanceAllowedRules: parentPermissionManager?.getInstanceAllowedRules?.(),
@@ -82,6 +119,8 @@ export class SubagentManager {
82
119
  planFilePath: parentPermissionManager?.getPlanFilePath(),
83
120
  });
84
121
  subagentContainer.register("PermissionManager", subagentPermissionManager);
122
+ // Track this subagent's PermissionManager for rule sync
123
+ this.subagentPermissionManagers.set(subagentId, subagentPermissionManager);
85
124
  // Add temporary permission rules if provided
86
125
  if (parameters.allowedTools) {
87
126
  logger.debug(`Adding ${parameters.allowedTools.length} temporary permission rules to subagent ${subagentId}`, { rules: parameters.allowedTools });
@@ -394,6 +433,7 @@ export class SubagentManager {
394
433
  instance.status === "error" ||
395
434
  instance.status === "aborted")) {
396
435
  this.instances.delete(subagentId);
436
+ this.subagentPermissionManagers.delete(subagentId);
397
437
  }
398
438
  }
399
439
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"autoMemoryService.d.ts","sourceRoot":"","sources":["../../src/services/autoMemoryService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAUlD;;;GAGG;AACH,qBAAa,iBAAiB;IAIhB,OAAO,CAAC,SAAS;IAH7B,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,wBAAwB,CAAa;gBAEzB,SAAS,EAAE,SAAS;IAExC,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,KAAK,eAAe,GAE1B;IAED,OAAO,KAAK,aAAa,GAExB;IAED,OAAO,KAAK,oBAAoB,GAE/B;IAED;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqE/C;;OAEG;YACW,aAAa;CAgE5B"}
1
+ {"version":3,"file":"autoMemoryService.d.ts","sourceRoot":"","sources":["../../src/services/autoMemoryService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAUlD;;;GAGG;AACH,qBAAa,iBAAiB;IAIhB,OAAO,CAAC,SAAS;IAH7B,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,wBAAwB,CAAa;gBAEzB,SAAS,EAAE,SAAS;IAExC,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,KAAK,eAAe,GAE1B;IAED,OAAO,KAAK,aAAa,GAExB;IAED,OAAO,KAAK,oBAAoB,GAE/B;IAED;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqE/C;;OAEG;YACW,aAAa;CAiE5B"}
@@ -125,6 +125,7 @@ export class AutoMemoryService {
125
125
  `Edit(${memoryDir}/**/*)`,
126
126
  ],
127
127
  model: "fastModel", // Use fast model for background tasks to reduce latency and cost
128
+ permissionModeOverride: "default", // Force default mode to prevent acceptEdits bypass
128
129
  });
129
130
  const prompt = buildAutoMemoryExtractionPrompt(newMessageCount, existingMemoriesManifest);
130
131
  // Execute in background so it doesn't block the main conversation flow
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wave-agent-sdk",
3
- "version": "0.13.0",
3
+ "version": "0.13.2",
4
4
  "description": "SDK for building AI-powered development tools and agents",
5
5
  "keywords": [
6
6
  "ai",
@@ -350,6 +350,7 @@ export class SlashCommandManager {
350
350
  namespacedName,
351
351
  processedContent,
352
352
  command.config,
353
+ args,
353
354
  );
354
355
  },
355
356
  });
@@ -486,6 +487,7 @@ export class SlashCommandManager {
486
487
  commandName: string,
487
488
  content: string,
488
489
  config?: { model?: string; allowedTools?: string[] },
490
+ args?: string,
489
491
  ): Promise<void> {
490
492
  try {
491
493
  // Parse bash commands from the content
@@ -493,7 +495,7 @@ export class SlashCommandManager {
493
495
 
494
496
  // Add user message immediately so text block shows before bash execution
495
497
  const messageId = this.messageManager.addUserMessage({
496
- content: `/${commandName}`,
498
+ content: `/${commandName}${args ? ` ${args}` : ""}`,
497
499
  customCommandContent: processedContent,
498
500
  });
499
501
 
@@ -21,6 +21,7 @@ import {
21
21
 
22
22
  import { Container } from "../utils/container.js";
23
23
  import type { PermissionManager } from "./permissionManager.js";
24
+ import type { PermissionMode } from "../types/permissions.js";
24
25
  import { ConfigurationService } from "../services/configurationService.js";
25
26
 
26
27
  export interface SubagentManagerCallbacks {
@@ -85,6 +86,7 @@ export interface SubagentManagerOptions {
85
86
 
86
87
  export class SubagentManager {
87
88
  private instances = new Map<string, SubagentInstance>();
89
+ private subagentPermissionManagers = new Map<string, PermissionManager>();
88
90
  private cachedConfigurations: SubagentConfiguration[] | null = null;
89
91
 
90
92
  private workdir: string;
@@ -110,6 +112,47 @@ export class SubagentManager {
110
112
  */
111
113
  async initialize(): Promise<void> {
112
114
  await this.loadConfigurations();
115
+
116
+ // Hook into parent PermissionManager's update methods to propagate rules to subagents
117
+ const parentPm = this.container.get<PermissionManager>("PermissionManager");
118
+ if (
119
+ parentPm &&
120
+ typeof parentPm.updateAllowedRules === "function" &&
121
+ typeof parentPm.updateDeniedRules === "function" &&
122
+ typeof parentPm.updateAdditionalDirectories === "function"
123
+ ) {
124
+ const origUpdateAllowed = parentPm.updateAllowedRules.bind(parentPm);
125
+ const origUpdateDenied = parentPm.updateDeniedRules.bind(parentPm);
126
+ const origUpdateDirs =
127
+ parentPm.updateAdditionalDirectories.bind(parentPm);
128
+
129
+ parentPm.updateAllowedRules = (rules: string[]) => {
130
+ origUpdateAllowed(rules);
131
+ this.syncPermissionRulesToSubagents();
132
+ };
133
+ parentPm.updateDeniedRules = (rules: string[]) => {
134
+ origUpdateDenied(rules);
135
+ this.syncPermissionRulesToSubagents();
136
+ };
137
+ parentPm.updateAdditionalDirectories = (directories: string[]) => {
138
+ origUpdateDirs(directories);
139
+ this.syncPermissionRulesToSubagents();
140
+ };
141
+ }
142
+ }
143
+
144
+ /**
145
+ * Sync parent permission rules to all running subagents
146
+ */
147
+ private syncPermissionRulesToSubagents(): void {
148
+ const parentPm = this.container.get<PermissionManager>("PermissionManager");
149
+ if (!parentPm) return;
150
+
151
+ for (const [, pm] of this.subagentPermissionManagers) {
152
+ pm.updateAllowedRules(parentPm.getAllowedRules());
153
+ pm.updateDeniedRules(parentPm.getDeniedRules());
154
+ pm.updateAdditionalDirectories(parentPm.getAdditionalDirectories());
155
+ }
113
156
  }
114
157
 
115
158
  /**
@@ -159,6 +202,7 @@ export class SubagentManager {
159
202
  allowedTools?: string[];
160
203
  model?: string;
161
204
  stream?: boolean;
205
+ permissionModeOverride?: PermissionMode;
162
206
  },
163
207
  runInBackground?: boolean,
164
208
  onUpdate?: () => void,
@@ -183,6 +227,7 @@ export class SubagentManager {
183
227
  const subagentPermissionManager = new PermissionManager(subagentContainer, {
184
228
  workdir: this.workdir,
185
229
  configuredPermissionMode:
230
+ parameters.permissionModeOverride ??
186
231
  parentPermissionManager?.getConfiguredPermissionMode(),
187
232
  allowedRules: parentPermissionManager?.getAllowedRules(),
188
233
  deniedRules: parentPermissionManager?.getDeniedRules(),
@@ -200,6 +245,9 @@ export class SubagentManager {
200
245
  });
201
246
  subagentContainer.register("PermissionManager", subagentPermissionManager);
202
247
 
248
+ // Track this subagent's PermissionManager for rule sync
249
+ this.subagentPermissionManagers.set(subagentId, subagentPermissionManager);
250
+
203
251
  // Add temporary permission rules if provided
204
252
  if (parameters.allowedTools) {
205
253
  logger.debug(
@@ -273,6 +321,7 @@ export class SubagentManager {
273
321
  description: string;
274
322
  allowedTools?: string[];
275
323
  model?: string;
324
+ permissionModeOverride?: PermissionMode;
276
325
  },
277
326
  onUpdate?: () => void,
278
327
  ): Promise<SubagentInstance> {
@@ -595,6 +644,7 @@ export class SubagentManager {
595
644
  instance.status === "aborted")
596
645
  ) {
597
646
  this.instances.delete(subagentId);
647
+ this.subagentPermissionManagers.delete(subagentId);
598
648
  }
599
649
  }
600
650
 
@@ -157,6 +157,7 @@ export class AutoMemoryService {
157
157
  `Edit(${memoryDir}/**/*)`,
158
158
  ],
159
159
  model: "fastModel", // Use fast model for background tasks to reduce latency and cost
160
+ permissionModeOverride: "default", // Force default mode to prevent acceptEdits bypass
160
161
  },
161
162
  );
162
163