wave-agent-sdk 0.13.4 → 0.13.6

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.
Files changed (91) hide show
  1. package/builtin/skills/settings/HOOKS.md +25 -0
  2. package/builtin/skills/settings/MCP.md +22 -0
  3. package/builtin/skills/settings/SKILL.md +4 -1
  4. package/dist/agent.d.ts +21 -0
  5. package/dist/agent.d.ts.map +1 -1
  6. package/dist/agent.js +102 -1
  7. package/dist/index.d.ts +1 -0
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +1 -0
  10. package/dist/managers/aiManager.d.ts +5 -0
  11. package/dist/managers/aiManager.d.ts.map +1 -1
  12. package/dist/managers/aiManager.js +19 -4
  13. package/dist/managers/bangManager.d.ts +1 -0
  14. package/dist/managers/bangManager.d.ts.map +1 -1
  15. package/dist/managers/bangManager.js +1 -0
  16. package/dist/managers/hookManager.d.ts +5 -1
  17. package/dist/managers/hookManager.d.ts.map +1 -1
  18. package/dist/managers/hookManager.js +55 -5
  19. package/dist/managers/lspManager.d.ts.map +1 -1
  20. package/dist/managers/lspManager.js +17 -2
  21. package/dist/managers/mcpManager.d.ts.map +1 -1
  22. package/dist/managers/mcpManager.js +20 -6
  23. package/dist/managers/messageManager.d.ts.map +1 -1
  24. package/dist/managers/messageManager.js +22 -0
  25. package/dist/managers/messageQueue.d.ts +20 -0
  26. package/dist/managers/messageQueue.d.ts.map +1 -0
  27. package/dist/managers/messageQueue.js +29 -0
  28. package/dist/managers/permissionManager.d.ts +5 -7
  29. package/dist/managers/permissionManager.d.ts.map +1 -1
  30. package/dist/managers/permissionManager.js +27 -22
  31. package/dist/managers/pluginManager.d.ts.map +1 -1
  32. package/dist/managers/pluginManager.js +5 -3
  33. package/dist/managers/skillManager.d.ts.map +1 -1
  34. package/dist/managers/skillManager.js +5 -0
  35. package/dist/managers/slashCommandManager.d.ts.map +1 -1
  36. package/dist/managers/slashCommandManager.js +12 -1
  37. package/dist/managers/subagentManager.d.ts.map +1 -1
  38. package/dist/managers/subagentManager.js +6 -18
  39. package/dist/services/autoMemoryService.d.ts.map +1 -1
  40. package/dist/services/autoMemoryService.js +1 -0
  41. package/dist/services/hook.d.ts +4 -0
  42. package/dist/services/hook.d.ts.map +1 -1
  43. package/dist/services/hook.js +10 -0
  44. package/dist/services/interactionService.d.ts.map +1 -1
  45. package/dist/services/interactionService.js +3 -0
  46. package/dist/services/pluginLoader.d.ts.map +1 -1
  47. package/dist/services/pluginLoader.js +3 -1
  48. package/dist/tools/bashTool.d.ts.map +1 -1
  49. package/dist/tools/bashTool.js +33 -2
  50. package/dist/tools/types.d.ts +2 -0
  51. package/dist/tools/types.d.ts.map +1 -1
  52. package/dist/types/agent.d.ts +4 -0
  53. package/dist/types/agent.d.ts.map +1 -1
  54. package/dist/types/hooks.d.ts +6 -1
  55. package/dist/types/hooks.d.ts.map +1 -1
  56. package/dist/types/hooks.js +4 -0
  57. package/dist/types/lsp.d.ts +2 -0
  58. package/dist/types/lsp.d.ts.map +1 -1
  59. package/dist/types/mcp.d.ts +2 -0
  60. package/dist/types/mcp.d.ts.map +1 -1
  61. package/dist/types/skills.d.ts +1 -0
  62. package/dist/types/skills.d.ts.map +1 -1
  63. package/dist/utils/containerSetup.d.ts.map +1 -1
  64. package/dist/utils/containerSetup.js +4 -1
  65. package/package.json +1 -1
  66. package/src/agent.ts +122 -2
  67. package/src/index.ts +1 -0
  68. package/src/managers/aiManager.ts +35 -5
  69. package/src/managers/bangManager.ts +2 -0
  70. package/src/managers/hookManager.ts +78 -19
  71. package/src/managers/lspManager.ts +23 -2
  72. package/src/managers/mcpManager.ts +29 -6
  73. package/src/managers/messageManager.ts +38 -0
  74. package/src/managers/messageQueue.ts +41 -0
  75. package/src/managers/permissionManager.ts +32 -26
  76. package/src/managers/pluginManager.ts +5 -3
  77. package/src/managers/skillManager.ts +9 -0
  78. package/src/managers/slashCommandManager.ts +16 -4
  79. package/src/managers/subagentManager.ts +10 -25
  80. package/src/services/autoMemoryService.ts +1 -0
  81. package/src/services/hook.ts +15 -0
  82. package/src/services/interactionService.ts +3 -0
  83. package/src/services/pluginLoader.ts +3 -1
  84. package/src/tools/bashTool.ts +39 -2
  85. package/src/tools/types.ts +2 -0
  86. package/src/types/agent.ts +4 -0
  87. package/src/types/hooks.ts +13 -2
  88. package/src/types/lsp.ts +2 -0
  89. package/src/types/mcp.ts +2 -0
  90. package/src/types/skills.ts +1 -0
  91. package/src/utils/containerSetup.ts +5 -1
@@ -261,13 +261,27 @@ export class McpManager {
261
261
  }
262
262
  }
263
263
  else if (server.config.command) {
264
+ const env = {
265
+ ...process.env,
266
+ ...(server.config.env || {}),
267
+ };
268
+ // For plugin servers, substitute ${WAVE_PLUGIN_ROOT} in command/args/env
269
+ // (same pattern as Claude Code's substitutePluginVariables)
270
+ let command = server.config.command;
271
+ let args = server.config.args || [];
272
+ if (server.config.pluginRoot) {
273
+ env.WAVE_PLUGIN_ROOT = server.config.pluginRoot;
274
+ command = command.replace(/\$\{WAVE_PLUGIN_ROOT\}/g, server.config.pluginRoot);
275
+ args = args.map((arg) => arg.replace(/\$\{WAVE_PLUGIN_ROOT\}/g, server.config.pluginRoot));
276
+ // Also expand WAVE_PLUGIN_ROOT in user-provided env values
277
+ for (const [key, value] of Object.entries(server.config.env || {})) {
278
+ env[key] = value.replace(/\$\{WAVE_PLUGIN_ROOT\}/g, server.config.pluginRoot);
279
+ }
280
+ }
264
281
  transport = new StdioClientTransport({
265
- command: server.config.command,
266
- args: server.config.args || [],
267
- env: {
268
- ...process.env,
269
- ...(server.config.env || {}),
270
- },
282
+ command,
283
+ args,
284
+ env,
271
285
  cwd: this.workdir, // Use the agent's workdir as the process working directory
272
286
  stderr: "pipe", // Pipe stderr to capture it
273
287
  });
@@ -1 +1 @@
1
- {"version":3,"file":"messageManager.d.ts","sourceRoot":"","sources":["../../src/managers/messageManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messageManager.d.ts","sourceRoot":"","sources":["../../src/managers/messageManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAYL,iBAAiB,EACjB,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EAElC,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAIL,WAAW,EAEZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,qCAAqC,EAAE,MAAM,qBAAqB,CAAC;AAK5E,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,WAAW,uBAAuB;IACtC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACjD,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,yBAAyB,CAAC,EAAE,CAAC,iBAAiB,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC;IAE3C,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAEzD,uBAAuB,CAAC,EAAE,MAAM,IAAI,CAAC;IAErC,yBAAyB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAEzE,2BAA2B,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3E,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,0BAA0B,KAAK,IAAI,CAAC;IAClE,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,wBAAwB,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,KAAK,IAAI,CAAC;IAE5D,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,qBAAqB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACpE,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAE7C,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,uBAAuB,CAAC,EAAE,CACxB,SAAS,EAAE,OAAO,uBAAuB,EAAE,YAAY,EAAE,KACtD,IAAI,CAAC;IAEV,0BAA0B,CAAC,EAAE,CAAC,MAAM,EAAE;QACpC,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC;QAC5B,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;QAC1C,OAAO,EAAE,MAAM,CAAC;KACjB,KAAK,IAAI,CAAC;CACZ;AAID,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,uBAAuB,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,cAAc;IAkBvB,OAAO,CAAC,SAAS;IAhBnB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAY;IAC5B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,OAAO,CAAe;gBAGpB,SAAS,EAAE,SAAS,EAC5B,OAAO,EAAE,qBAAqB;IAiBhC,OAAO,KAAK,iBAAiB,GAI5B;IAED,OAAO,KAAK,aAAa,GAMxB;IAGM,YAAY,IAAI,MAAM;IAItB,gBAAgB,IAAI,MAAM;IAI1B,kBAAkB,IAAI,MAAM,GAAG,SAAS;IAIxC,WAAW,IAAI,OAAO,EAAE;IAIxB,SAAS,IAAI,KAAK,EAAE;IAIpB,oBAAoB,IAAI,MAAM;IAI9B,UAAU,IAAI,MAAM;IAI3B;;OAEG;IACI,iBAAiB,IAAI,MAAM,EAAE;IAI7B,aAAa,IAAI,MAAM;IAIvB,iBAAiB,IAAI,MAAM;IAIlC;;OAEG;IACU,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAiBjD;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAStB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAY5C;;OAEG;YACW,qBAAqB;IAQnC;;OAEG;IACI,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAOxC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAmBpB,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI;IAkB7C;;OAEG;IACU,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAiClC,oBAAoB,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI;IAQ5D;;OAEG;IACI,aAAa,IAAI,IAAI;IAS5B;;OAEG;IACI,iBAAiB,IAAI,IAAI;IAKzB,qBAAqB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAarD,cAAc,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM;IAcxD;;OAEG;IACI,iBAAiB,CACtB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,OAAO,CAAC,iBAAiB,CAAC,GACjC,IAAI;IAKA,mBAAmB,CACxB,OAAO,CAAC,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,qCAAqC,EAAE,EACnD,KAAK,CAAC,EAAE,KAAK,EACb,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACzC,IAAI;IAsBA,8BAA8B,CACnC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACxC,IAAI;IA+BA,eAAe,CAAC,MAAM,EAAE,0BAA0B,GAAG,IAAI;IAahE;;OAEG;IACI,qBAAqB,CAC1B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC,GAC7C,MAAM;IAUF,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IASlC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAY1C;;OAEG;IACI,gCAAgC,CACrC,iBAAiB,EAAE,MAAM,EACzB,KAAK,CAAC,EAAE,KAAK,GACZ,IAAI;IAmDA,mBAAmB,CACxB,SAAS,EAAE,OAAO,uBAAuB,EAAE,YAAY,EAAE,GACxD,IAAI;IAeA,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IASrC,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAUxD,mBAAmB,CACxB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM,GACd,IAAI;IAWA,sBAAsB,CAC3B,MAAM,EAAE,IAAI,CAAC,4BAA4B,EAAE,UAAU,CAAC,GACrD,IAAI;IAcP;;;OAGG;IACI,wBAAwB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI;IAW1D;;;OAGG;IACI,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAKnC;;OAEG;IACI,kBAAkB,IAAI,IAAI;IAIjC;;;;OAIG;IACI,2BAA2B,CAAC,qBAAqB,EAAE,MAAM,GAAG,IAAI;IAkEvE;;;OAGG;IACI,6BAA6B,CAAC,uBAAuB,EAAE,MAAM,GAAG,IAAI;IAmE3E;;;OAGG;IACI,uBAAuB,IAAI,IAAI;IAItC;;;OAGG;IACH,OAAO,CAAC,8BAA8B;IAuBtC;;;OAGG;IACI,qBAAqB,IAAI,IAAI;IAKvB,oBAAoB,IAAI,OAAO,CAAC;QAC3C,QAAQ,EAAE,OAAO,EAAE,CAAC;QACpB,UAAU,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;IAKF;;;;OAIG;IACU,eAAe,CAC1B,KAAK,EAAE,MAAM,EACb,gBAAgB,CAAC,EAAE,OAAO,uBAAuB,EAAE,gBAAgB,GAClE,OAAO,CAAC,IAAI,CAAC;IAkGhB;;OAEG;YACW,kBAAkB;IAoBhC,OAAO,CAAC,sBAAsB;CA4B/B"}
@@ -450,6 +450,17 @@ export class MessageManager {
450
450
  const lastMessage = this.messages[this.messages.length - 1];
451
451
  if (lastMessage.role !== "assistant")
452
452
  return;
453
+ // Finalize any streaming reasoning blocks before text content arrives
454
+ const reasoningIndex = lastMessage.blocks.findIndex((block) => block.type === "reasoning" &&
455
+ block.stage === "streaming");
456
+ if (reasoningIndex >= 0) {
457
+ const reasoningBlock = lastMessage.blocks[reasoningIndex];
458
+ lastMessage.blocks[reasoningIndex] = {
459
+ type: "reasoning",
460
+ content: reasoningBlock.content,
461
+ stage: "end",
462
+ };
463
+ }
453
464
  // Get the current content to calculate the chunk
454
465
  const textBlockIndex = lastMessage.blocks.findIndex((block) => block.type === "text");
455
466
  const currentContent = textBlockIndex >= 0
@@ -488,6 +499,17 @@ export class MessageManager {
488
499
  const lastMessage = this.messages[this.messages.length - 1];
489
500
  if (lastMessage.role !== "assistant")
490
501
  return;
502
+ // Finalize any streaming text blocks before reasoning content arrives
503
+ const textIndex = lastMessage.blocks.findIndex((block) => block.type === "text" &&
504
+ block.stage === "streaming");
505
+ if (textIndex >= 0) {
506
+ const textBlock = lastMessage.blocks[textIndex];
507
+ lastMessage.blocks[textIndex] = {
508
+ type: "text",
509
+ content: textBlock.content,
510
+ stage: "end",
511
+ };
512
+ }
491
513
  // Get the current reasoning content to calculate the chunk
492
514
  const reasoningBlockIndex = lastMessage.blocks.findIndex((block) => block.type === "reasoning");
493
515
  const currentReasoning = reasoningBlockIndex >= 0
@@ -0,0 +1,20 @@
1
+ export interface QueuedMessage {
2
+ type?: "message" | "bang";
3
+ content: string;
4
+ images?: Array<{
5
+ path: string;
6
+ mimeType: string;
7
+ }>;
8
+ longTextMap?: Record<string, string>;
9
+ }
10
+ export declare class MessageQueue {
11
+ private queue;
12
+ onMessageEnqueued?: () => void;
13
+ enqueue(message: QueuedMessage): void;
14
+ dequeue(): QueuedMessage | null;
15
+ clear(): void;
16
+ hasPending(): boolean;
17
+ getQueue(): QueuedMessage[];
18
+ removeAt(index: number): boolean;
19
+ }
20
+ //# sourceMappingURL=messageQueue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageQueue.d.ts","sourceRoot":"","sources":["../../src/managers/messageQueue.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAuB;IACpC,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAE/B,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKrC,OAAO,IAAI,aAAa,GAAG,IAAI;IAI/B,KAAK,IAAI,IAAI;IAIb,UAAU,IAAI,OAAO;IAIrB,QAAQ,IAAI,aAAa,EAAE;IAI3B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAQjC"}
@@ -0,0 +1,29 @@
1
+ export class MessageQueue {
2
+ constructor() {
3
+ this.queue = [];
4
+ }
5
+ enqueue(message) {
6
+ this.queue.push(message);
7
+ this.onMessageEnqueued?.();
8
+ }
9
+ dequeue() {
10
+ return this.queue.shift() ?? null;
11
+ }
12
+ clear() {
13
+ this.queue = [];
14
+ }
15
+ hasPending() {
16
+ return this.queue.length > 0;
17
+ }
18
+ getQueue() {
19
+ return [...this.queue];
20
+ }
21
+ removeAt(index) {
22
+ if (index < 0 || index >= this.queue.length) {
23
+ return false;
24
+ }
25
+ this.queue.splice(index, 1);
26
+ this.onMessageEnqueued?.();
27
+ return true;
28
+ }
29
+ }
@@ -23,8 +23,6 @@ export interface PermissionManagerOptions {
23
23
  additionalDirectories?: string[];
24
24
  /** System additional directories (persistent across reloads) */
25
25
  systemAdditionalDirectories?: string[];
26
- /** The main working directory */
27
- workdir?: string;
28
26
  /** Path to the current plan file */
29
27
  planFilePath?: string;
30
28
  /** Optional logger */
@@ -40,13 +38,17 @@ export declare class PermissionManager {
40
38
  private temporaryRules;
41
39
  private additionalDirectories;
42
40
  private systemAdditionalDirectories;
43
- private workdir?;
44
41
  private planFilePath?;
45
42
  private worktreeName?;
46
43
  private mainRepoRoot?;
44
+ private originalWorkdir?;
47
45
  private onConfiguredPermissionModeChange?;
48
46
  private _logger?;
49
47
  constructor(container: Container, options?: PermissionManagerOptions);
48
+ /**
49
+ * Resolve the working directory from the DI container
50
+ */
51
+ private getWorkdir;
50
52
  /**
51
53
  * Set a callback to be notified when the effective permission mode changes due to configuration updates
52
54
  */
@@ -111,10 +113,6 @@ export declare class PermissionManager {
111
113
  * Add a system-level additional directory that is persistent across configuration reloads
112
114
  */
113
115
  addSystemAdditionalDirectory(directory: string): void;
114
- /**
115
- * Update the working directory
116
- */
117
- updateWorkdir(workdir: string): void;
118
116
  /**
119
117
  * Set the current plan file path
120
118
  */
@@ -1 +1 @@
1
- {"version":3,"file":"permissionManager.d.ts","sourceRoot":"","sources":["../../src/managers/permissionManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"permissionManager.d.ts","sourceRoot":"","sources":["../../src/managers/permissionManager.ts"],"names":[],"mappings":"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"}
@@ -85,7 +85,6 @@ export class PermissionManager {
85
85
  this.deniedRules = options.deniedRules || [];
86
86
  this.instanceAllowedRules = options.instanceAllowedRules || [];
87
87
  this.instanceDeniedRules = options.instanceDeniedRules || [];
88
- this.workdir = options.workdir;
89
88
  this.planFilePath = options.planFilePath;
90
89
  this._logger = options.logger;
91
90
  this.updateAdditionalDirectories(options.additionalDirectories || []);
@@ -94,6 +93,13 @@ export class PermissionManager {
94
93
  }
95
94
  this.worktreeName = this.container.get("WorktreeName");
96
95
  this.mainRepoRoot = this.container.get("MainRepoRoot");
96
+ this.originalWorkdir = this.container.get("Workdir");
97
+ }
98
+ /**
99
+ * Resolve the working directory from the DI container
100
+ */
101
+ getWorkdir() {
102
+ return this.container.get("Workdir");
97
103
  }
98
104
  /**
99
105
  * Set a callback to be notified when the effective permission mode changes due to configuration updates
@@ -189,9 +195,10 @@ export class PermissionManager {
189
195
  * Update the additional directories (e.g., when configuration reloads)
190
196
  */
191
197
  updateAdditionalDirectories(directories) {
198
+ const workdir = this.originalWorkdir;
192
199
  this.additionalDirectories = directories.map((dir) => {
193
- if (this.workdir && !path.isAbsolute(dir)) {
194
- return path.resolve(this.workdir, dir);
200
+ if (workdir && !path.isAbsolute(dir)) {
201
+ return path.resolve(workdir, dir);
195
202
  }
196
203
  return path.resolve(dir);
197
204
  });
@@ -200,19 +207,14 @@ export class PermissionManager {
200
207
  * Add a system-level additional directory that is persistent across configuration reloads
201
208
  */
202
209
  addSystemAdditionalDirectory(directory) {
203
- const resolvedPath = this.workdir && !path.isAbsolute(directory)
204
- ? path.resolve(this.workdir, directory)
210
+ const workdir = this.originalWorkdir;
211
+ const resolvedPath = workdir && !path.isAbsolute(directory)
212
+ ? path.resolve(workdir, directory)
205
213
  : path.resolve(directory);
206
214
  if (!this.systemAdditionalDirectories.includes(resolvedPath)) {
207
215
  this.systemAdditionalDirectories.push(resolvedPath);
208
216
  }
209
217
  }
210
- /**
211
- * Update the working directory
212
- */
213
- updateWorkdir(workdir) {
214
- this.workdir = workdir;
215
- }
216
218
  /**
217
219
  * Set the current plan file path
218
220
  */
@@ -229,7 +231,7 @@ export class PermissionManager {
229
231
  * Check if a path is inside the Safe Zone (workdir + additionalDirectories)
230
232
  */
231
233
  isInsideSafeZone(targetPath, workdir) {
232
- const effectiveWorkdir = workdir || this.workdir;
234
+ const effectiveWorkdir = this.originalWorkdir || workdir;
233
235
  // Resolve the target path relative to effectiveWorkdir if it's not absolute
234
236
  const absolutePath = effectiveWorkdir && !path.isAbsolute(targetPath)
235
237
  ? path.resolve(effectiveWorkdir, targetPath)
@@ -320,16 +322,17 @@ export class PermissionManager {
320
322
  }
321
323
  }
322
324
  // 0. Check worktree safety for Write and Edit tools
325
+ const currentWorkdir = this.getWorkdir();
323
326
  if (this.worktreeName &&
324
327
  this.mainRepoRoot &&
325
- this.workdir &&
328
+ currentWorkdir &&
326
329
  (context.toolName === WRITE_TOOL_NAME ||
327
330
  context.toolName === EDIT_TOOL_NAME)) {
328
331
  const targetPath = context.toolInput?.file_path;
329
332
  if (targetPath) {
330
- const absoluteTargetPath = path.resolve(this.workdir, targetPath);
333
+ const absoluteTargetPath = path.resolve(currentWorkdir, targetPath);
331
334
  const isInsideMainRepo = isPathInside(absoluteTargetPath, this.mainRepoRoot);
332
- const isInsideWorktree = isPathInside(absoluteTargetPath, this.workdir);
335
+ const isInsideWorktree = isPathInside(absoluteTargetPath, currentWorkdir);
333
336
  // If it's inside the main repo but NOT inside the current worktree
334
337
  if (isInsideMainRepo && !isInsideWorktree) {
335
338
  logger?.warn("Worktree safety violation", {
@@ -337,11 +340,11 @@ export class PermissionManager {
337
340
  targetPath,
338
341
  worktreeName: this.worktreeName,
339
342
  mainRepoRoot: this.mainRepoRoot,
340
- workdir: this.workdir,
343
+ workdir: currentWorkdir,
341
344
  });
342
345
  return {
343
346
  behavior: "deny",
344
- message: `Access denied: You are currently in a worktree session ("${this.worktreeName}"). Modifying files in the main repository (outside the worktree) is not allowed. Please only modify files within the worktree directory: ${this.workdir}`,
347
+ message: `Access denied: You are currently in a worktree session ("${this.worktreeName}"). Modifying files in the main repository (outside the worktree) is not allowed. Please only modify files within the worktree directory: ${currentWorkdir}`,
345
348
  };
346
349
  }
347
350
  }
@@ -625,10 +628,11 @@ export class PermissionManager {
625
628
  return true;
626
629
  }
627
630
  // If direct match fails, try matching relative path if targetPath is absolute and pattern is relative
631
+ const currentWorkdir = this.getWorkdir();
628
632
  if (path.isAbsolute(targetPath) &&
629
633
  !path.isAbsolute(pattern) &&
630
- this.workdir) {
631
- const relativePath = path.relative(this.workdir, targetPath);
634
+ currentWorkdir) {
635
+ const relativePath = path.relative(currentWorkdir, targetPath);
632
636
  // Ensure the path is not outside the workdir (doesn't start with ..)
633
637
  if (!relativePath.startsWith("..") &&
634
638
  !path.isAbsolute(relativePath)) {
@@ -821,7 +825,8 @@ export class PermissionManager {
821
825
  * @param rule - The rule to add (e.g., "Bash(ls)")
822
826
  */
823
827
  async addPermissionRule(rule) {
824
- if (!this.workdir) {
828
+ const workdir = this.originalWorkdir;
829
+ if (!workdir) {
825
830
  throw new Error("Working directory not set in PermissionManager");
826
831
  }
827
832
  // 1. Expand rule if it's a Bash command
@@ -829,7 +834,7 @@ export class PermissionManager {
829
834
  const bashMatch = rule.match(/^Bash\((.*)\)$/);
830
835
  if (bashMatch) {
831
836
  const command = bashMatch[1];
832
- rulesToAdd = this.expandBashRule(command, this.workdir);
837
+ rulesToAdd = this.expandBashRule(command, workdir);
833
838
  }
834
839
  const configurationService = this.container.get("ConfigurationService");
835
840
  for (const ruleToAdd of rulesToAdd) {
@@ -842,7 +847,7 @@ export class PermissionManager {
842
847
  // 3. Persist to settings.local.json
843
848
  try {
844
849
  if (configurationService) {
845
- await configurationService.addAllowedRule(this.workdir, ruleToAdd);
850
+ await configurationService.addAllowedRule(workdir, ruleToAdd);
846
851
  this._logger?.debug("Persistent permission rule added", {
847
852
  rule: ruleToAdd,
848
853
  });
@@ -1 +1 @@
1
- {"version":3,"file":"pluginManager.d.ts","sourceRoot":"","sources":["../../src/managers/pluginManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAUzD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C;AAED,qBAAa,aAAa;IAMtB,OAAO,CAAC,SAAS;IALnB,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,cAAc,CAA0B;gBAGtC,SAAS,EAAE,SAAS,EAC5B,OAAO,EAAE,oBAAoB;IAM/B,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,UAAU,GAErB;IAED,OAAO,KAAK,UAAU,GAErB;IAED,OAAO,KAAK,mBAAmB,GAE9B;IAED,OAAO,KAAK,oBAAoB,GAE/B;IAED;;OAEG;IACH,oBAAoB,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAInE;;OAEG;YACW,oBAAoB;IAuElC;;OAEG;YACW,gBAAgB;IAyD9B;;;OAGG;IACG,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBzD;;OAEG;IACH,UAAU,IAAI,MAAM,EAAE;IAItB;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAG5C"}
1
+ {"version":3,"file":"pluginManager.d.ts","sourceRoot":"","sources":["../../src/managers/pluginManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAUzD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C;AAED,qBAAa,aAAa;IAMtB,OAAO,CAAC,SAAS;IALnB,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,cAAc,CAA0B;gBAGtC,SAAS,EAAE,SAAS,EAC5B,OAAO,EAAE,oBAAoB;IAM/B,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,UAAU,GAErB;IAED,OAAO,KAAK,UAAU,GAErB;IAED,OAAO,KAAK,mBAAmB,GAE9B;IAED,OAAO,KAAK,oBAAoB,GAE/B;IAED;;OAEG;IACH,oBAAoB,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAInE;;OAEG;YACW,oBAAoB;IAuElC;;OAEG;YACW,gBAAgB;IA2D9B;;;OAGG;IACG,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBzD;;OAEG;IACH,UAAU,IAAI,MAAM,EAAE;IAItB;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAG5C"}
@@ -119,16 +119,18 @@ export class PluginManager {
119
119
  }
120
120
  if (this.lspManager && plugin.lspConfig) {
121
121
  for (const [language, config] of Object.entries(plugin.lspConfig)) {
122
- this.lspManager.registerServer(language, config);
122
+ const configWithPluginRoot = { ...config, pluginRoot: plugin.path };
123
+ this.lspManager.registerServer(language, configWithPluginRoot);
123
124
  }
124
125
  }
125
126
  if (this.mcpManager && plugin.mcpConfig) {
126
127
  for (const [name, config] of Object.entries(plugin.mcpConfig.mcpServers)) {
127
- this.mcpManager.addServer(name, config);
128
+ const configWithPluginRoot = { ...config, pluginRoot: plugin.path };
129
+ this.mcpManager.addServer(name, configWithPluginRoot);
128
130
  }
129
131
  }
130
132
  if (this.hookManager && plugin.hooksConfig) {
131
- this.hookManager.registerPluginHooks(plugin.hooksConfig);
133
+ this.hookManager.registerPluginHooks(plugin.path, plugin.hooksConfig);
132
134
  }
133
135
  this.plugins.set(manifest.name, plugin);
134
136
  logger?.info(`Loaded plugin: ${manifest.name} v${manifest.version}`);
@@ -1 +1 @@
1
- {"version":3,"file":"skillManager.d.ts","sourceRoot":"","sources":["../../src/managers/skillManager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EACb,KAAK,EAGL,aAAa,EACb,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAU3B,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD;;GAEG;AACH,qBAAa,YAAa,SAAQ,YAAY;IAY1C,OAAO,CAAC,SAAS;IAXnB,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,aAAa,CAAoC;IACzD,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAmC;IACtD,OAAO,CAAC,YAAY,CAAU;gBAGpB,SAAS,EAAE,SAAS,EAC5B,OAAO,GAAE,mBAAwB;IAUnC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBjC;;OAEG;YACW,aAAa;IA6B3B;;OAEG;YACW,YAAY;IAkC1B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,kBAAkB,IAAI,aAAa,EAAE;IAQrC;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAQzD;;;OAGG;IACG,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAgBzD;;OAEG;YACW,cAAc;IA4B5B;;OAEG;YACW,uBAAuB;IAoFrC;;OAEG;YACW,oBAAoB;IA4BlC;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC;QAC/C,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,sBAAsB,CAAC;QACjC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IA8BF;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAC5C;QACE,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,KAAK,CAAC;KACd,GACD;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,SAAS,CAAA;KAAE,CACzC;IA6BD;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;OAEG;YACW,yBAAyB;IASvC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAc7B;;OAEG;IACH,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;CA0BhE"}
1
+ {"version":3,"file":"skillManager.d.ts","sourceRoot":"","sources":["../../src/managers/skillManager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EACb,KAAK,EAGL,aAAa,EACb,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAU3B,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD;;GAEG;AACH,qBAAa,YAAa,SAAQ,YAAY;IAY1C,OAAO,CAAC,SAAS;IAXnB,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,aAAa,CAAoC;IACzD,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAmC;IACtD,OAAO,CAAC,YAAY,CAAU;gBAGpB,SAAS,EAAE,SAAS,EAC5B,OAAO,GAAE,mBAAwB;IAUnC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBjC;;OAEG;YACW,aAAa;IA6B3B;;OAEG;YACW,YAAY;IAkC1B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,kBAAkB,IAAI,aAAa,EAAE;IAQrC;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAQzD;;;OAGG;IACG,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAgBzD;;OAEG;YACW,cAAc;IA4B5B;;OAEG;YACW,uBAAuB;IAoFrC;;OAEG;YACW,oBAAoB;IA4BlC;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC;QAC/C,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,sBAAsB,CAAC;QACjC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IA8BF;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAC5C;QACE,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,KAAK,CAAC;KACd,GACD;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,SAAS,CAAA;KAAE,CACzC;IA6BD;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA0B3B;;OAEG;YACW,yBAAyB;IASvC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAc7B;;OAEG;IACH,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;CA2BhE"}
@@ -342,6 +342,10 @@ export class SkillManager extends EventEmitter {
342
342
  mainContent = substituteCommandParameters(mainContent, argsString);
343
343
  // 2. Substitute ${WAVE_SKILL_DIR} with the skill's directory path
344
344
  mainContent = mainContent.replace(/\$\{WAVE_SKILL_DIR\}/g, skill.skillPath);
345
+ // 3. Substitute ${WAVE_PLUGIN_ROOT} with the skill's plugin root path
346
+ if (skill.pluginRoot) {
347
+ mainContent = mainContent.replace(/\$\{WAVE_PLUGIN_ROOT\}/g, skill.pluginRoot);
348
+ }
345
349
  return header + description + skillPath + mainContent;
346
350
  }
347
351
  /**
@@ -385,6 +389,7 @@ export class SkillManager extends EventEmitter {
385
389
  disableModelInvocation: skill.disableModelInvocation,
386
390
  userInvocable: skill.userInvocable,
387
391
  pluginName,
392
+ pluginRoot: skill.pluginRoot,
388
393
  };
389
394
  // Update the skill object itself to have the namespaced name
390
395
  skill.name = namespacedName;
@@ -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;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"}
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;IAgL3D;;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;IAuD7C;;OAEG;IACI,mBAAmB,IAAI,IAAI;CAQnC"}
@@ -165,6 +165,8 @@ export class SlashCommandManager {
165
165
  });
166
166
  }
167
167
  });
168
+ // Show loading while subagent runs
169
+ this.aiManager.setIsLoading(true);
168
170
  try {
169
171
  const result = await this.subagentManager.executeAgent(instance, prepared.content, signal);
170
172
  // Update the ToolBlock with final result
@@ -173,7 +175,10 @@ export class SlashCommandManager {
173
175
  messageId,
174
176
  result,
175
177
  stage: "end",
178
+ success: true,
176
179
  });
180
+ // Trigger AI to process the tool result
181
+ await this.aiManager.sendAIMessage();
177
182
  }
178
183
  finally {
179
184
  this.subagentManager.cleanupInstance(instance.subagentId);
@@ -185,6 +190,7 @@ export class SlashCommandManager {
185
190
  id: toolBlockId,
186
191
  messageId,
187
192
  stage: "end",
193
+ success: false,
188
194
  error: error instanceof Error ? error.message : String(error),
189
195
  });
190
196
  throw error; // Re-throw to be caught by outer catch for logging/error block
@@ -192,6 +198,7 @@ export class SlashCommandManager {
192
198
  return;
193
199
  }
194
200
  // Non-forked skill: execute and trigger AI response
201
+ this.aiManager.setIsLoading(true);
195
202
  const result = await this.skillManager.executeSkill({
196
203
  skill_name: skill.name,
197
204
  args,
@@ -208,7 +215,8 @@ export class SlashCommandManager {
208
215
  });
209
216
  }
210
217
  catch (error) {
211
- logger?.error(`Failed to execute skill command '${skill.name}':`, error);
218
+ this.aiManager.setIsLoading(false);
219
+ logger?.error(error);
212
220
  this.messageManager.addErrorBlock(`Failed to execute skill command '${skill.name}': ${error instanceof Error ? error.message : String(error)}`);
213
221
  }
214
222
  },
@@ -351,6 +359,8 @@ export class SlashCommandManager {
351
359
  */
352
360
  async executeCustomCommandInMainAgent(commandName, content, config, args) {
353
361
  try {
362
+ // Set loading early so UI shows feedback during bash execution
363
+ this.aiManager.setIsLoading(true);
354
364
  // Parse bash commands from the content
355
365
  const { commands, processedContent } = parseBashCommands(content);
356
366
  // Add user message immediately so text block shows before bash execution
@@ -374,6 +384,7 @@ export class SlashCommandManager {
374
384
  });
375
385
  }
376
386
  catch (error) {
387
+ this.aiManager.setIsLoading(false);
377
388
  logger?.error(`Failed to execute custom command '${commandName}':`, error);
378
389
  // Add error to message manager
379
390
  this.messageManager.addErrorBlock(`Failed to execute custom command '${commandName}': ${error instanceof Error ? error.message : String(error)}`);
@@ -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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"}
@@ -119,7 +119,6 @@ export class SubagentManager {
119
119
  const { PermissionManager } = await import("./permissionManager.js");
120
120
  const parentPermissionManager = this.container.get("PermissionManager");
121
121
  const subagentPermissionManager = new PermissionManager(subagentContainer, {
122
- workdir: this.workdir,
123
122
  configuredPermissionMode: parameters.permissionModeOverride ??
124
123
  parentPermissionManager?.getConfiguredPermissionMode(),
125
124
  allowedRules: parentPermissionManager?.getAllowedRules(),
@@ -134,6 +133,11 @@ export class SubagentManager {
134
133
  planFilePath: parentPermissionManager?.getPlanFilePath(),
135
134
  });
136
135
  subagentContainer.register("PermissionManager", subagentPermissionManager);
136
+ // Register the permission mode override in the subagent container so it
137
+ // shadows the inherited parent value during tool execution
138
+ if (parameters.permissionModeOverride) {
139
+ subagentContainer.register("PermissionMode", parameters.permissionModeOverride);
140
+ }
137
141
  // Track this subagent's PermissionManager for rule sync
138
142
  this.subagentPermissionManagers.set(subagentId, subagentPermissionManager);
139
143
  // Add temporary permission rules if provided
@@ -238,6 +242,7 @@ export class SubagentManager {
238
242
  });
239
243
  instance.backgroundTaskId = taskId;
240
244
  // Execute in background
245
+ // Note: notification enqueueing is handled by internalExecute when instance.backgroundTaskId is set
241
246
  (async () => {
242
247
  try {
243
248
  const result = await this.internalExecute(instance, prompt, abortSignal);
@@ -248,14 +253,6 @@ export class SubagentManager {
248
253
  task.endTime = Date.now();
249
254
  task.runtime = task.endTime - startTime;
250
255
  }
251
- // Enqueue completion notification
252
- const notificationQueue = this.container.has("NotificationQueue")
253
- ? this.container.get("NotificationQueue")
254
- : undefined;
255
- if (notificationQueue) {
256
- const summary = `Agent task "${instance.description}" completed`;
257
- notificationQueue.enqueue(`<task-notification>\n<task-id>${taskId}</task-id>\n<task-type>agent</task-type>\n<status>completed</status>\n<summary>${summary}</summary>\n</task-notification>`);
258
- }
259
256
  }
260
257
  catch (error) {
261
258
  const task = backgroundTaskManager?.getTask(taskId);
@@ -266,15 +263,6 @@ export class SubagentManager {
266
263
  task.endTime = Date.now();
267
264
  task.runtime = task.endTime - startTime;
268
265
  }
269
- // Enqueue error notification
270
- const notificationQueue = this.container.has("NotificationQueue")
271
- ? this.container.get("NotificationQueue")
272
- : undefined;
273
- if (notificationQueue) {
274
- const errorMsg = error instanceof Error ? error.message : String(error);
275
- const summary = `Agent task "${instance.description}" failed: ${errorMsg}`;
276
- notificationQueue.enqueue(`<task-notification>\n<task-id>${taskId}</task-id>\n<task-type>agent</task-type>\n<status>failed</status>\n<summary>${summary}</summary>\n</task-notification>`);
277
- }
278
266
  }
279
267
  })();
280
268
  return taskId;
@@ -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,kBAAkB,GAE7B;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;CA0D5B"}
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,kBAAkB,GAE7B;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;CA2D5B"}
@@ -124,6 +124,7 @@ export class AutoMemoryService {
124
124
  "Grep",
125
125
  `Write(${memoryDir}/**/*)`,
126
126
  `Edit(${memoryDir}/**/*)`,
127
+ `Bash(rm ${memoryDir}/**/*)`,
127
128
  ],
128
129
  model: "fastModel", // Use fast model for background tasks to reduce latency and cost
129
130
  permissionModeOverride: "dontAsk", // Auto-deny out-of-scope writes without prompting user
@@ -14,6 +14,10 @@ export declare function executeCommand(command: string, context: HookExecutionCo
14
14
  * Execute multiple commands in sequence
15
15
  */
16
16
  export declare function executeCommands(commands: string[], context: HookExecutionContext | ExtendedHookExecutionContext, options?: HookExecutionOptions): Promise<HookExecutionResult[]>;
17
+ /**
18
+ * Execute a CwdChanged hook
19
+ */
20
+ export declare function executeCwdChangedHooks(oldCwd: string, newCwd: string, context: ExtendedHookExecutionContext): Promise<HookExecutionResult[]>;
17
21
  /**
18
22
  * Validate command safety (basic checks)
19
23
  */
@@ -1 +1 @@
1
- {"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../src/services/hook.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,4BAA4B,EAElC,MAAM,mBAAmB,CAAC;AA0E3B;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,oBAAoB,GAAG,4BAA4B,EAC5D,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,mBAAmB,CAAC,CA6I9B;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,EAAE,oBAAoB,GAAG,4BAA4B,EAC5D,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAchC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAsBtD"}
1
+ {"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../src/services/hook.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,4BAA4B,EAElC,MAAM,mBAAmB,CAAC;AA0E3B;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,oBAAoB,GAAG,4BAA4B,EAC5D,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,mBAAmB,CAAC,CA6I9B;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,EAAE,oBAAoB,GAAG,4BAA4B,EAC5D,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAchC;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAMhC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAsBtD"}
@@ -208,6 +208,16 @@ export async function executeCommands(commands, context, options) {
208
208
  }
209
209
  return results;
210
210
  }
211
+ /**
212
+ * Execute a CwdChanged hook
213
+ */
214
+ export async function executeCwdChangedHooks(oldCwd, newCwd, context) {
215
+ // CwdChanged hooks are executed through HookManager.executeCwdChangedHooks()
216
+ void context;
217
+ void oldCwd;
218
+ void newCwd;
219
+ return [];
220
+ }
211
221
  /**
212
222
  * Validate command safety (basic checks)
213
223
  */
@@ -1 +1 @@
1
- {"version":3,"file":"interactionService.d.ts","sourceRoot":"","sources":["../../src/services/interactionService.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,cAAc,CAAC;IAC/B,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC;IACrB,eAAe,EAAE,eAAe,CAAC;IACjC,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,YAAY,CAAC;IACtB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,qBAAa,kBAAkB;WACT,WAAW,CAC7B,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,GACjD,OAAO,CAAC,IAAI,CAAC;WA2GI,cAAc,CAChC,OAAO,EAAE,kBAAkB,EAC3B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;CAiDjB"}
1
+ {"version":3,"file":"interactionService.d.ts","sourceRoot":"","sources":["../../src/services/interactionService.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,cAAc,CAAC;IAC/B,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC;IACrB,eAAe,EAAE,eAAe,CAAC;IACjC,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,YAAY,CAAC;IACtB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,qBAAa,kBAAkB;WACT,WAAW,CAC7B,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,GACjD,OAAO,CAAC,IAAI,CAAC;WA8GI,cAAc,CAChC,OAAO,EAAE,kBAAkB,EAC3B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;CAiDjB"}