wave-agent-sdk 0.10.3 → 0.11.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.
Files changed (136) hide show
  1. package/dist/agent.d.ts +8 -6
  2. package/dist/agent.d.ts.map +1 -1
  3. package/dist/agent.js +12 -9
  4. package/dist/builtin-skills/builtin-skills/loop/SKILL.md +53 -0
  5. package/dist/builtin-skills/builtin-skills/loop/parsing.ts +159 -0
  6. package/dist/builtin-skills/builtin-skills/settings/HOOKS.md +82 -0
  7. package/dist/builtin-skills/{settings → builtin-skills/settings}/SKILL.md +1 -1
  8. package/dist/builtin-skills/loop/parsing.d.ts +13 -0
  9. package/dist/builtin-skills/loop/parsing.d.ts.map +1 -0
  10. package/dist/builtin-skills/loop/parsing.js +125 -0
  11. package/dist/constants/tools.d.ts +3 -0
  12. package/dist/constants/tools.d.ts.map +1 -1
  13. package/dist/constants/tools.js +3 -0
  14. package/dist/index.d.ts +1 -0
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +1 -0
  17. package/dist/managers/aiManager.d.ts +0 -2
  18. package/dist/managers/aiManager.d.ts.map +1 -1
  19. package/dist/managers/aiManager.js +53 -14
  20. package/dist/managers/cronManager.d.ts +19 -0
  21. package/dist/managers/cronManager.d.ts.map +1 -0
  22. package/dist/managers/cronManager.js +124 -0
  23. package/dist/managers/hookManager.d.ts.map +1 -1
  24. package/dist/managers/hookManager.js +21 -13
  25. package/dist/managers/liveConfigManager.js +1 -1
  26. package/dist/managers/mcpManager.d.ts +1 -1
  27. package/dist/managers/mcpManager.d.ts.map +1 -1
  28. package/dist/managers/mcpManager.js +10 -2
  29. package/dist/managers/messageManager.d.ts +0 -1
  30. package/dist/managers/messageManager.d.ts.map +1 -1
  31. package/dist/managers/permissionManager.d.ts +27 -7
  32. package/dist/managers/permissionManager.d.ts.map +1 -1
  33. package/dist/managers/permissionManager.js +119 -14
  34. package/dist/managers/slashCommandManager.d.ts.map +1 -1
  35. package/dist/managers/slashCommandManager.js +11 -0
  36. package/dist/managers/subagentManager.d.ts +3 -0
  37. package/dist/managers/subagentManager.d.ts.map +1 -1
  38. package/dist/managers/subagentManager.js +10 -17
  39. package/dist/managers/toolManager.d.ts +1 -1
  40. package/dist/managers/toolManager.d.ts.map +1 -1
  41. package/dist/managers/toolManager.js +28 -4
  42. package/dist/services/configurationService.d.ts.map +1 -1
  43. package/dist/services/configurationService.js +8 -7
  44. package/dist/services/hook.d.ts.map +1 -1
  45. package/dist/services/hook.js +3 -10
  46. package/dist/services/initializationService.js +2 -2
  47. package/dist/services/jsonlHandler.d.ts.map +1 -1
  48. package/dist/services/jsonlHandler.js +3 -0
  49. package/dist/services/reversionService.d.ts +2 -2
  50. package/dist/services/reversionService.d.ts.map +1 -1
  51. package/dist/services/reversionService.js +3 -3
  52. package/dist/services/session.d.ts.map +1 -1
  53. package/dist/services/session.js +18 -11
  54. package/dist/tools/agentTool.js +1 -1
  55. package/dist/tools/bashTool.d.ts.map +1 -1
  56. package/dist/tools/bashTool.js +33 -12
  57. package/dist/tools/cronCreateTool.d.ts +3 -0
  58. package/dist/tools/cronCreateTool.d.ts.map +1 -0
  59. package/dist/tools/cronCreateTool.js +59 -0
  60. package/dist/tools/cronDeleteTool.d.ts +3 -0
  61. package/dist/tools/cronDeleteTool.d.ts.map +1 -0
  62. package/dist/tools/cronDeleteTool.js +38 -0
  63. package/dist/tools/cronListTool.d.ts +3 -0
  64. package/dist/tools/cronListTool.d.ts.map +1 -0
  65. package/dist/tools/cronListTool.js +30 -0
  66. package/dist/tools/readTool.d.ts.map +1 -1
  67. package/dist/tools/readTool.js +8 -32
  68. package/dist/tools/skillTool.d.ts +0 -3
  69. package/dist/tools/skillTool.d.ts.map +1 -1
  70. package/dist/tools/skillTool.js +4 -3
  71. package/dist/tools/taskOutputTool.d.ts.map +1 -1
  72. package/dist/tools/taskOutputTool.js +15 -8
  73. package/dist/tools/types.d.ts +2 -0
  74. package/dist/tools/types.d.ts.map +1 -1
  75. package/dist/types/agent.d.ts +10 -0
  76. package/dist/types/agent.d.ts.map +1 -1
  77. package/dist/types/configuration.d.ts +1 -1
  78. package/dist/types/configuration.d.ts.map +1 -1
  79. package/dist/types/cron.d.ts +10 -0
  80. package/dist/types/cron.d.ts.map +1 -0
  81. package/dist/types/cron.js +1 -0
  82. package/dist/types/hooks.d.ts +1 -5
  83. package/dist/types/hooks.d.ts.map +1 -1
  84. package/dist/types/hooks.js +1 -1
  85. package/dist/types/index.d.ts +1 -0
  86. package/dist/types/index.d.ts.map +1 -1
  87. package/dist/types/index.js +1 -0
  88. package/dist/types/messaging.d.ts +1 -1
  89. package/dist/types/messaging.d.ts.map +1 -1
  90. package/dist/utils/containerSetup.d.ts.map +1 -1
  91. package/dist/utils/containerSetup.js +40 -13
  92. package/dist/utils/mcpUtils.d.ts +2 -2
  93. package/dist/utils/mcpUtils.d.ts.map +1 -1
  94. package/dist/utils/mcpUtils.js +1 -5
  95. package/package.json +2 -1
  96. package/src/agent.ts +17 -12
  97. package/src/builtin-skills/loop/SKILL.md +53 -0
  98. package/src/builtin-skills/loop/parsing.ts +159 -0
  99. package/src/builtin-skills/settings/HOOKS.md +44 -57
  100. package/src/builtin-skills/settings/SKILL.md +1 -1
  101. package/src/constants/tools.ts +3 -0
  102. package/src/index.ts +1 -0
  103. package/src/managers/aiManager.ts +72 -24
  104. package/src/managers/cronManager.ts +167 -0
  105. package/src/managers/hookManager.ts +27 -13
  106. package/src/managers/liveConfigManager.ts +2 -2
  107. package/src/managers/mcpManager.ts +23 -2
  108. package/src/managers/messageManager.ts +0 -6
  109. package/src/managers/permissionManager.ts +154 -18
  110. package/src/managers/slashCommandManager.ts +12 -0
  111. package/src/managers/subagentManager.ts +15 -19
  112. package/src/managers/toolManager.ts +37 -4
  113. package/src/services/configurationService.ts +8 -7
  114. package/src/services/hook.ts +5 -11
  115. package/src/services/initializationService.ts +3 -3
  116. package/src/services/jsonlHandler.ts +4 -0
  117. package/src/services/reversionService.ts +9 -4
  118. package/src/services/session.ts +19 -12
  119. package/src/tools/agentTool.ts +1 -1
  120. package/src/tools/bashTool.ts +43 -14
  121. package/src/tools/cronCreateTool.ts +73 -0
  122. package/src/tools/cronDeleteTool.ts +47 -0
  123. package/src/tools/cronListTool.ts +38 -0
  124. package/src/tools/readTool.ts +11 -33
  125. package/src/tools/skillTool.ts +6 -4
  126. package/src/tools/taskOutputTool.ts +14 -8
  127. package/src/tools/types.ts +2 -0
  128. package/src/types/agent.ts +10 -0
  129. package/src/types/configuration.ts +1 -1
  130. package/src/types/cron.ts +9 -0
  131. package/src/types/hooks.ts +5 -9
  132. package/src/types/index.ts +1 -0
  133. package/src/types/messaging.ts +1 -1
  134. package/src/utils/containerSetup.ts +50 -16
  135. package/src/utils/mcpUtils.ts +2 -5
  136. package/dist/builtin-skills/settings/HOOKS.md +0 -95
@@ -78,23 +78,17 @@ export class AIManager {
78
78
  /**
79
79
  * Get filtered tool configuration based on tools list
80
80
  */
81
- getFilteredToolsConfig(tools) {
81
+ getFilteredToolsConfig() {
82
82
  // Get available subagents and skills for dynamic prompts
83
83
  const availableSubagents = this.subagentManager?.getConfigurations();
84
84
  const availableSkills = this.skillManager
85
85
  ?.getAvailableSkills()
86
86
  .filter((skill) => !skill.disableModelInvocation);
87
- const allTools = this.toolManager.getToolsConfig({
87
+ return this.toolManager.getToolsConfig({
88
88
  availableSubagents,
89
89
  availableSkills,
90
90
  workdir: this.workdir,
91
91
  });
92
- // If no tools specified, return all tools
93
- if (!tools || tools.length === 0) {
94
- return allTools;
95
- }
96
- // Filter tools
97
- return allTools.filter((tool) => tools.includes(tool.function.name));
98
92
  }
99
93
  setIsLoading(isLoading) {
100
94
  this.isLoading = isLoading;
@@ -213,7 +207,7 @@ export class AIManager {
213
207
  return this.container.get("SkillManager");
214
208
  }
215
209
  async sendAIMessage(options = {}) {
216
- const { recursionDepth = 0, model, allowedRules, tools, maxTokens, } = options;
210
+ const { recursionDepth = 0, model, allowedRules, maxTokens } = options;
217
211
  // Only check isLoading for the initial call (recursionDepth === 0)
218
212
  if (recursionDepth === 0 && this.isLoading) {
219
213
  return;
@@ -253,7 +247,7 @@ export class AIManager {
253
247
  logger?.debug("modelConfig in sendAIMessage", this.getModelConfig());
254
248
  // Get current permission mode and plan file path
255
249
  const currentMode = this.permissionManager?.getCurrentEffectiveMode(this.getModelConfig().permissionMode);
256
- const toolsConfig = this.getFilteredToolsConfig(tools);
250
+ const toolsConfig = this.getFilteredToolsConfig();
257
251
  const toolNames = new Set(toolsConfig.map((t) => t.function.name));
258
252
  const filteredToolPlugins = this.toolManager
259
253
  .getTools()
@@ -324,7 +318,6 @@ export class AIManager {
324
318
  name: toolCall.name,
325
319
  parameters: toolCall.parameters,
326
320
  parametersChunk: toolCall.parametersChunk,
327
- compactParams: toolCall.parameters?.split("\n").pop()?.slice(-30),
328
321
  stage: toolCall.stage || "streaming", // Default to streaming if stage not provided
329
322
  });
330
323
  };
@@ -456,7 +449,17 @@ export class AIManager {
456
449
  }
457
450
  }
458
451
  const compactParams = this.generateCompactParams(toolName, toolArgs);
459
- // Emit running stage for non-streaming tool calls (tool execution about to start)
452
+ // Emit start stage for non-streaming tool calls
453
+ if (!this.stream) {
454
+ this.messageManager.updateToolBlock({
455
+ id: toolId,
456
+ stage: "start",
457
+ name: toolName,
458
+ compactParams,
459
+ parameters: argsString,
460
+ });
461
+ }
462
+ // Emit running stage (tool execution about to start)
460
463
  this.messageManager.updateToolBlock({
461
464
  id: toolId,
462
465
  stage: "running",
@@ -502,6 +505,7 @@ export class AIManager {
502
505
  error: toolResult.error,
503
506
  stage: "end",
504
507
  name: toolName,
508
+ compactParams,
505
509
  shortResult: toolResult.shortResult,
506
510
  isManuallyBackgrounded: toolResult.isManuallyBackgrounded,
507
511
  startLineNumber: toolResult.startLineNumber,
@@ -557,12 +561,48 @@ export class AIManager {
557
561
  content: "Your response was cut off because it exceeded the output token limit. Please break your work into smaller pieces. Continue from where you left off.",
558
562
  });
559
563
  }
564
+ // Duplicate Tool Call Detection
565
+ if (toolCalls.length > 0) {
566
+ const messages = this.messageManager.getMessages();
567
+ // Find the most recent assistant message BEFORE the current one that has tool blocks
568
+ // The current assistant message is messages[messages.length - 1]
569
+ let previousAssistantWithTools;
570
+ for (let i = messages.length - 2; i >= 0; i--) {
571
+ const msg = messages[i];
572
+ if (msg.role === "assistant" &&
573
+ msg.blocks.some((b) => b.type === "tool")) {
574
+ previousAssistantWithTools = msg;
575
+ break;
576
+ }
577
+ }
578
+ if (previousAssistantWithTools) {
579
+ const previousToolBlocks = previousAssistantWithTools.blocks.filter((b) => b.type === "tool");
580
+ for (const currentToolCall of toolCalls) {
581
+ const currentName = currentToolCall.function?.name;
582
+ const currentArgs = currentToolCall.function?.arguments;
583
+ const isDuplicate = previousToolBlocks.some((prevBlock) => prevBlock.name === currentName &&
584
+ prevBlock.parameters === currentArgs);
585
+ if (isDuplicate && currentName) {
586
+ const toolId = currentToolCall.id;
587
+ const lastMessage = messages[messages.length - 1];
588
+ const toolBlock = lastMessage.blocks.find((b) => b.type === "tool" && b.id === toolId);
589
+ if (toolBlock) {
590
+ const warning = `\n\nNote: You just called this tool with the same arguments in the previous turn. Please ensure you are not in a loop and consider if you need to change your approach.`;
591
+ this.messageManager.updateToolBlock({
592
+ id: toolId,
593
+ result: (toolBlock.result || "") + warning,
594
+ stage: "end",
595
+ });
596
+ }
597
+ }
598
+ }
599
+ }
600
+ }
560
601
  // Recursively call AI service, increment recursion depth, and pass same configuration
561
602
  await this.sendAIMessage({
562
603
  recursionDepth: recursionDepth + 1,
563
604
  model,
564
605
  allowedRules,
565
- tools,
566
606
  maxTokens,
567
607
  });
568
608
  }
@@ -604,7 +644,6 @@ export class AIManager {
604
644
  recursionDepth: 0,
605
645
  model,
606
646
  allowedRules,
607
- tools,
608
647
  maxTokens,
609
648
  });
610
649
  }
@@ -0,0 +1,19 @@
1
+ import { Container } from "../utils/container.js";
2
+ import { CronJob } from "../types/cron.js";
3
+ export declare class CronManager {
4
+ private container;
5
+ private jobs;
6
+ private interval;
7
+ constructor(container: Container);
8
+ private get aiManager();
9
+ private get messageManager();
10
+ start(): void;
11
+ stop(): void;
12
+ createJob(job: Omit<CronJob, "id" | "createdAt" | "nextRun" | "periodMs">): CronJob;
13
+ deleteJob(id: string): boolean;
14
+ listJobs(): CronJob[];
15
+ private applyJitter;
16
+ private getDeterministicRandom;
17
+ private checkJobs;
18
+ }
19
+ //# sourceMappingURL=cronManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cronManager.d.ts","sourceRoot":"","sources":["../../src/managers/cronManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAM3C,qBAAa,WAAW;IAIV,OAAO,CAAC,SAAS;IAH7B,OAAO,CAAC,IAAI,CAA8B;IAC1C,OAAO,CAAC,QAAQ,CAA+B;gBAE3B,SAAS,EAAE,SAAS;IAExC,OAAO,KAAK,SAAS,GAEpB;IAED,OAAO,KAAK,cAAc,GAEzB;IAEM,KAAK,IAAI,IAAI;IAKb,IAAI,IAAI,IAAI;IAOZ,SAAS,CACd,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,CAAC,GAC9D,OAAO;IAiCH,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI9B,QAAQ,IAAI,OAAO,EAAE;IAI5B,OAAO,CAAC,WAAW;IAuBnB,OAAO,CAAC,sBAAsB;YAYhB,SAAS;CAuDxB"}
@@ -0,0 +1,124 @@
1
+ import { CronExpressionParser } from "cron-parser";
2
+ import { logger } from "../utils/globalLogger.js";
3
+ export class CronManager {
4
+ constructor(container) {
5
+ this.container = container;
6
+ this.jobs = new Map();
7
+ this.interval = null;
8
+ }
9
+ get aiManager() {
10
+ return this.container.get("AIManager");
11
+ }
12
+ get messageManager() {
13
+ return this.container.get("MessageManager");
14
+ }
15
+ start() {
16
+ if (this.interval)
17
+ return;
18
+ this.interval = setInterval(() => this.checkJobs(), 60000); // Check every minute
19
+ }
20
+ stop() {
21
+ if (this.interval) {
22
+ clearInterval(this.interval);
23
+ this.interval = null;
24
+ }
25
+ }
26
+ createJob(job) {
27
+ const id = Math.random().toString(36).substring(2, 11);
28
+ const createdAt = Date.now();
29
+ const interval = CronExpressionParser.parse(job.cron);
30
+ const nextRunDate = interval.next().toDate();
31
+ const nextRun = nextRunDate.getTime();
32
+ // Calculate periodMs
33
+ const secondRunDate = interval.next().toDate();
34
+ const periodMs = secondRunDate.getTime() - nextRunDate.getTime();
35
+ // Apply Jitter
36
+ const jitteredNextRun = this.applyJitter(nextRun, periodMs, job.recurring, nextRunDate, id);
37
+ const newJob = {
38
+ ...job,
39
+ id,
40
+ createdAt,
41
+ nextRun: jitteredNextRun,
42
+ periodMs,
43
+ };
44
+ this.jobs.set(id, newJob);
45
+ return newJob;
46
+ }
47
+ deleteJob(id) {
48
+ return this.jobs.delete(id);
49
+ }
50
+ listJobs() {
51
+ return Array.from(this.jobs.values());
52
+ }
53
+ applyJitter(nextRun, periodMs, recurring, nextRunDate, id) {
54
+ const deterministicRandom = this.getDeterministicRandom(id);
55
+ if (recurring) {
56
+ // Recurring: Random delay up to 10% of period (max 15 min)
57
+ const maxJitter = Math.min(periodMs * 0.1, 15 * 60 * 1000);
58
+ return nextRun + deterministicRandom * maxJitter;
59
+ }
60
+ else {
61
+ // One-shot: Random early fire up to 90s if scheduled on :00 or :30
62
+ const minutes = nextRunDate.getMinutes();
63
+ const seconds = nextRunDate.getSeconds();
64
+ if ((minutes === 0 || minutes === 30) && seconds === 0) {
65
+ return nextRun - deterministicRandom * 90 * 1000;
66
+ }
67
+ }
68
+ return nextRun;
69
+ }
70
+ getDeterministicRandom(id) {
71
+ let hash = 0;
72
+ for (let i = 0; i < id.length; i++) {
73
+ const char = id.charCodeAt(i);
74
+ hash = (hash << 5) - hash + char;
75
+ hash |= 0; // Convert to 32bit integer
76
+ }
77
+ // Use a simple LCG-like approach to get a value between 0 and 1
78
+ const x = Math.sin(hash) * 10000;
79
+ return x - Math.floor(x);
80
+ }
81
+ async checkJobs() {
82
+ const now = Date.now();
83
+ const aiManager = this.aiManager;
84
+ const messageManager = this.messageManager;
85
+ for (const [id, job] of this.jobs.entries()) {
86
+ // Expiration: Recurring jobs MUST auto-expire after 7 days
87
+ if (job.recurring && now - job.createdAt > 7 * 24 * 60 * 60 * 1000) {
88
+ this.jobs.delete(id);
89
+ continue;
90
+ }
91
+ if (now >= job.nextRun) {
92
+ // Idle-Check: Only fire jobs if AIManager.isLoading is false
93
+ if (aiManager.isLoading) {
94
+ logger?.debug(`CronManager: Skipping job ${id} because AI is busy`);
95
+ continue;
96
+ }
97
+ logger?.info(`CronManager: Firing job ${id}: ${job.prompt}`);
98
+ // Execution
99
+ messageManager.addUserMessage({ content: job.prompt });
100
+ aiManager.sendAIMessage().catch((err) => {
101
+ logger?.error(`CronManager: Failed to execute job ${id}`, err);
102
+ });
103
+ if (job.recurring) {
104
+ // Schedule next run
105
+ try {
106
+ const interval = CronExpressionParser.parse(job.cron, {
107
+ currentDate: new Date(job.nextRun + 1000),
108
+ });
109
+ const nextRunDate = interval.next().toDate();
110
+ const nextRun = nextRunDate.getTime();
111
+ job.nextRun = this.applyJitter(nextRun, job.periodMs, true, nextRunDate, id);
112
+ }
113
+ catch (e) {
114
+ logger?.error(`CronManager: Failed to parse cron for recurring job ${id}`, e);
115
+ this.jobs.delete(id);
116
+ }
117
+ }
118
+ else {
119
+ this.jobs.delete(id);
120
+ }
121
+ }
122
+ }
123
+ }
124
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"hookManager.d.ts","sourceRoot":"","sources":["../../src/managers/hookManager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,KAAK,SAAS,EAEd,KAAK,oBAAoB,EACzB,KAAK,4BAA4B,EACjC,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EAI1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACV,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAIlD,qBAAa,WAAW;IAMpB,OAAO,CAAC,SAAS;IALnB,OAAO,CAAC,aAAa,CAAuC;IAC5D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAGvB,SAAS,EAAE,SAAS,EAC5B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,WAA+B;IAM1C;;;OAGG;IACH,iBAAiB,CACf,SAAS,CAAC,EAAE,wBAAwB,EACpC,YAAY,CAAC,EAAE,wBAAwB,GACtC,IAAI;IAyBP;;;OAGG;IACH,+BAA+B,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI,GAAG,IAAI;IA6B3E;;OAEG;IACG,YAAY,CAChB,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,oBAAoB,GAAG,4BAA4B,GAC3D,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAoGjC;;;OAGG;IACH,kBAAkB,CAChB,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,mBAAmB,EAAE,EAC9B,cAAc,CAAC,EAAE,cAAc,EAC/B,MAAM,CAAC,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,MAAM,GACtB;QACD,WAAW,EAAE,OAAO,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB;IAuCD;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAezB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA2E3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAQ9B;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO;IAWtD;;OAEG;IACH,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,GAAG,oBAAoB;IA8DtE;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAyCpC;;OAEG;IACH,gBAAgB,IAAI,wBAAwB,GAAG,SAAS;IAOxD;;OAEG;IACH,kBAAkB,IAAI,IAAI;IAI1B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAuDhC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA8BhC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAa/B;;OAEG;IACH,OAAO,CAAC,aAAa;IAkCrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA4C3B;;OAEG;IACH,qBAAqB,IAAI;QACvB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;KAC3C;IAkDD;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,GAAG,IAAI;CAO3D"}
1
+ {"version":3,"file":"hookManager.d.ts","sourceRoot":"","sources":["../../src/managers/hookManager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,KAAK,SAAS,EAEd,KAAK,oBAAoB,EACzB,KAAK,4BAA4B,EACjC,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EAI1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACV,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAIlD,qBAAa,WAAW;IAMpB,OAAO,CAAC,SAAS;IALnB,OAAO,CAAC,aAAa,CAAuC;IAC5D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAGvB,SAAS,EAAE,SAAS,EAC5B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,WAA+B;IAM1C;;;OAGG;IACH,iBAAiB,CACf,SAAS,CAAC,EAAE,wBAAwB,EACpC,YAAY,CAAC,EAAE,wBAAwB,GACtC,IAAI;IAyBP;;;OAGG;IACH,+BAA+B,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI,GAAG,IAAI;IA6B3E;;OAEG;IACG,YAAY,CAChB,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,oBAAoB,GAAG,4BAA4B,GAC3D,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAoGjC;;;OAGG;IACH,kBAAkB,CAChB,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,mBAAmB,EAAE,EAC9B,cAAc,CAAC,EAAE,cAAc,EAC/B,MAAM,CAAC,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,MAAM,GACtB;QACD,WAAW,EAAE,OAAO,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB;IA2CD;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAezB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA2E3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAQ9B;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO;IAWtD;;OAEG;IACH,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,GAAG,oBAAoB;IA8DtE;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAyCpC;;OAEG;IACH,gBAAgB,IAAI,wBAAwB,GAAG,SAAS;IAOxD;;OAEG;IACH,kBAAkB,IAAI,IAAI;IAI1B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA0DhC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA8BhC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAa/B;;OAEG;IACH,OAAO,CAAC,aAAa;IAqCrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgD3B;;OAEG;IACH,qBAAqB,IAAI;QACvB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;KAC3C;IAkDD;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,GAAG,IAAI;CAO3D"}
@@ -145,7 +145,11 @@ export class HookManager {
145
145
  for (const result of results) {
146
146
  if (result.exitCode === 2) {
147
147
  // Handle blocking error immediately and return
148
- return this.handleBlockingError(event, result, messageManager, toolId, toolParameters);
148
+ const blockingResult = this.handleBlockingError(event, result, messageManager, toolId, toolParameters);
149
+ return {
150
+ shouldBlock: blockingResult.shouldBlock,
151
+ errorMessage: blockingResult.errorMessage,
152
+ };
149
153
  }
150
154
  }
151
155
  // Second pass: Process all non-blocking results
@@ -176,7 +180,7 @@ export class HookManager {
176
180
  source: MessageSource.HOOK,
177
181
  });
178
182
  }
179
- // For other hook types (PreToolUse, PostToolUse, Stop), ignore stdout
183
+ // For other hook types (PreToolUse, PostToolUse, Stop, PermissionRequest), ignore stdout
180
184
  }
181
185
  /**
182
186
  * Handle blocking error (exit code 2) - behavior varies by hook type
@@ -219,10 +223,10 @@ export class HookManager {
219
223
  source: MessageSource.HOOK,
220
224
  });
221
225
  return { shouldBlock: true, errorMessage };
222
- case "Notification":
223
- // For notification hooks with exit code 2, only show stderr in error block
226
+ case "PermissionRequest":
227
+ // For permission request hooks with exit code 2, show stderr in error block and block (deny) permission
224
228
  messageManager.addErrorBlock(errorMessage);
225
- return { shouldBlock: false };
229
+ return { shouldBlock: true, errorMessage };
226
230
  case "SubagentStop":
227
231
  // Similar to Stop, show error and allow blocking
228
232
  messageManager.addUserMessage({
@@ -377,7 +381,9 @@ export class HookManager {
377
381
  errors.push("Context must have a valid timestamp Date object");
378
382
  }
379
383
  // Validate tool-specific requirements
380
- if (event === "PreToolUse" || event === "PostToolUse") {
384
+ if (event === "PreToolUse" ||
385
+ event === "PostToolUse" ||
386
+ event === "PermissionRequest") {
381
387
  if (!context.toolName || typeof context.toolName !== "string") {
382
388
  errors.push(`${event} event requires a valid toolName in context`);
383
389
  }
@@ -385,7 +391,6 @@ export class HookManager {
385
391
  // Validate non-tool events don't have unexpected tool names
386
392
  if ((event === "UserPromptSubmit" ||
387
393
  event === "Stop" ||
388
- event === "Notification" ||
389
394
  event === "SubagentStop" ||
390
395
  event === "WorktreeCreate") &&
391
396
  context.toolName !== undefined) {
@@ -436,13 +441,14 @@ export class HookManager {
436
441
  // For events that don't use matchers, config always applies
437
442
  if (event === "UserPromptSubmit" ||
438
443
  event === "Stop" ||
439
- event === "Notification" ||
440
444
  event === "SubagentStop" ||
441
445
  event === "WorktreeCreate") {
442
446
  return true;
443
447
  }
444
448
  // For tool-based events, check matcher if present
445
- if (event === "PreToolUse" || event === "PostToolUse") {
449
+ if (event === "PreToolUse" ||
450
+ event === "PostToolUse" ||
451
+ event === "PermissionRequest") {
446
452
  if (!config.matcher) {
447
453
  // No matcher means applies to all tools
448
454
  return true;
@@ -466,7 +472,10 @@ export class HookManager {
466
472
  return errors;
467
473
  }
468
474
  // Validate matcher requirements
469
- if ((event === "PreToolUse" || event === "PostToolUse") && config.matcher) {
475
+ if ((event === "PreToolUse" ||
476
+ event === "PostToolUse" ||
477
+ event === "PermissionRequest") &&
478
+ config.matcher) {
470
479
  if (!this.matcher.isValidPattern(config.matcher)) {
471
480
  errors.push(`${prefix}: Invalid matcher pattern: ${config.matcher}`);
472
481
  }
@@ -474,7 +483,6 @@ export class HookManager {
474
483
  // Validate that non-tool events don't have matchers
475
484
  if ((event === "UserPromptSubmit" ||
476
485
  event === "Stop" ||
477
- event === "Notification" ||
478
486
  event === "SubagentStop" ||
479
487
  event === "WorktreeCreate") &&
480
488
  config.matcher) {
@@ -503,7 +511,7 @@ export class HookManager {
503
511
  UserPromptSubmit: 0,
504
512
  Stop: 0,
505
513
  SubagentStop: 0,
506
- Notification: 0,
514
+ PermissionRequest: 0,
507
515
  WorktreeCreate: 0,
508
516
  },
509
517
  };
@@ -514,7 +522,7 @@ export class HookManager {
514
522
  UserPromptSubmit: 0,
515
523
  Stop: 0,
516
524
  SubagentStop: 0,
517
- Notification: 0,
525
+ PermissionRequest: 0,
518
526
  WorktreeCreate: 0,
519
527
  };
520
528
  let totalConfigs = 0;
@@ -175,7 +175,7 @@ export class LiveConfigManager {
175
175
  }
176
176
  // Update permission manager if available
177
177
  if (this.permissionManager) {
178
- this.permissionManager.updateConfiguredDefaultMode(this.currentConfiguration.permissions?.defaultMode);
178
+ this.permissionManager.updateConfiguredPermissionMode(this.currentConfiguration.permissions?.permissionMode);
179
179
  this.permissionManager.updateAllowedRules(this.currentConfiguration.permissions?.allow || []);
180
180
  this.permissionManager.updateDeniedRules(this.currentConfiguration.permissions?.deny || []);
181
181
  this.permissionManager.updateAdditionalDirectories(this.currentConfiguration.permissions?.additionalDirectories || []);
@@ -34,7 +34,7 @@ export declare class McpManager {
34
34
  connectServer(name: string): Promise<boolean>;
35
35
  disconnectServer(name: string): Promise<boolean>;
36
36
  getAllConnectedTools(): McpTool[];
37
- executeMcpTool(toolName: string, args: Record<string, unknown>): Promise<{
37
+ executeMcpTool(toolName: string, args: Record<string, unknown>, context?: ToolContext): Promise<{
38
38
  success: boolean;
39
39
  content: string;
40
40
  serverName?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"mcpManager.d.ts","sourceRoot":"","sources":["../../src/managers/mcpManager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAEjE,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,KAAK,EACV,MAAM,EACN,eAAe,EACf,SAAS,EACT,OAAO,EACP,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAQ3B,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,IAAI,CAAC;CACxD;AAID,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,UAAU;IASnB,OAAO,CAAC,SAAS;IARnB,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,OAAO,CAA2C;IAC1D,OAAO,CAAC,WAAW,CAAyC;IAC5D,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,SAAS,CAAsB;gBAG7B,SAAS,EAAE,SAAS,EAC5B,OAAO,GAAE,iBAAsB;IAKjC;;OAEG;IACG,UAAU,CACd,OAAO,EAAE,MAAM,EACf,WAAW,GAAE,OAAe,GAC3B,OAAO,CAAC,IAAI,CAAC;IAwCV,kBAAkB,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAO/C,UAAU,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IA0CvC,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAWrD,SAAS,IAAI,SAAS,GAAG,IAAI;IAI7B,aAAa,IAAI,eAAe,EAAE;IAIlC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAIpD,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI;IASzE,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO;IAyBzD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAgB7B,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA4F7C,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BtD,oBAAoB,IAAI,OAAO,EAAE;IAW3B,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACtD,CAAC;YAqCY,uBAAuB;IA8D/B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAS9B;;OAEG;IACH,iBAAiB,IAAI,UAAU,EAAE;IA0BjC;;OAEG;IACH,iBAAiB,IAAI,0BAA0B,EAAE;IAIjD;;OAEG;IACG,wBAAwB,CAC5B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC;IActB;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAcjC"}
1
+ {"version":3,"file":"mcpManager.d.ts","sourceRoot":"","sources":["../../src/managers/mcpManager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAEjE,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,KAAK,EACV,MAAM,EACN,eAAe,EACf,SAAS,EACT,OAAO,EACP,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAQ3B,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,IAAI,CAAC;CACxD;AAID,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,UAAU;IASnB,OAAO,CAAC,SAAS;IARnB,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,OAAO,CAA2C;IAC1D,OAAO,CAAC,WAAW,CAAyC;IAC5D,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,SAAS,CAAsB;gBAG7B,SAAS,EAAE,SAAS,EAC5B,OAAO,GAAE,iBAAsB;IAKjC;;OAEG;IACG,UAAU,CACd,OAAO,EAAE,MAAM,EACf,WAAW,GAAE,OAAe,GAC3B,OAAO,CAAC,IAAI,CAAC;IAwCV,kBAAkB,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAO/C,UAAU,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IA0CvC,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAWrD,SAAS,IAAI,SAAS,GAAG,IAAI;IAI7B,aAAa,IAAI,eAAe,EAAE;IAIlC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAIpD,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI;IASzE,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO;IAyBzD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAgB7B,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA4F7C,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BtD,oBAAoB,IAAI,OAAO,EAAE;IAW3B,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACtD,CAAC;YAsDY,uBAAuB;IA8D/B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAS9B;;OAEG;IACH,iBAAiB,IAAI,UAAU,EAAE;IA6BjC;;OAEG;IACH,iBAAiB,IAAI,0BAA0B,EAAE;IAIjD;;OAEG;IACG,wBAAwB,CAC5B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC;IActB;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAcjC"}
@@ -267,11 +267,19 @@ export class McpManager {
267
267
  return allTools;
268
268
  }
269
269
  // Execute MCP tool
270
- async executeMcpTool(toolName, args) {
270
+ async executeMcpTool(toolName, args, context) {
271
271
  // Check if it's a prefixed name: mcp__[serverName]__[toolName]
272
272
  if (!toolName.startsWith("mcp__")) {
273
273
  throw new Error(`Invalid MCP tool name: ${toolName}. Must start with 'mcp__'`);
274
274
  }
275
+ // Permission check
276
+ if (context?.permissionManager) {
277
+ const permissionContext = context.permissionManager.createContext(toolName, context.permissionMode || "default", context.canUseToolCallback, args, context.toolCallId);
278
+ const decision = await context.permissionManager.checkPermission(permissionContext);
279
+ if (decision.behavior === "deny") {
280
+ throw new Error(decision.message || "Permission denied");
281
+ }
282
+ }
275
283
  const parts = toolName.split("__");
276
284
  if (parts.length < 3) {
277
285
  throw new Error(`Invalid MCP tool name format: ${toolName}. Expected 'mcp__[server]__[tool]'`);
@@ -351,7 +359,7 @@ export class McpManager {
351
359
  // Find which server this tool belongs to
352
360
  const server = findToolServer(tool.name, servers);
353
361
  if (server) {
354
- const plugin = createMcpToolPlugin(tool, server.name, (name, args) => this.executeMcpTool(name, args));
362
+ const plugin = createMcpToolPlugin(tool, server.name, (name, args, context) => this.executeMcpTool(name, args, context));
355
363
  mcpTools.set(plugin.name, plugin);
356
364
  }
357
365
  }
@@ -16,7 +16,6 @@ export interface MessageManagerCallbacks {
16
16
  onErrorBlockAdded?: (error: string) => void;
17
17
  onCompressBlockAdded?: (content: string) => void;
18
18
  onCompressionStateChange?: (isCompressing: boolean) => void;
19
- onMemoryBlockAdded?: (content: string, success: boolean, type: "project" | "user", storagePath: string) => void;
20
19
  onAddBangMessage?: (command: string) => void;
21
20
  onUpdateBangMessage?: (command: string, output: string) => void;
22
21
  onCompleteBangMessage?: (command: string, exitCode: number) => void;
@@ -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":"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"}
@@ -9,12 +9,16 @@ import type { PermissionDecision, ToolPermissionContext, PermissionCallback, Per
9
9
  import type { Logger } from "../types/index.js";
10
10
  import { Container } from "../utils/container.js";
11
11
  export interface PermissionManagerOptions {
12
- /** Configured default permission mode from settings */
13
- configuredDefaultMode?: PermissionMode;
12
+ /** Configured permission mode from settings */
13
+ configuredPermissionMode?: PermissionMode;
14
14
  /** Allowed rules from settings */
15
15
  allowedRules?: string[];
16
16
  /** Denied rules from settings */
17
17
  deniedRules?: string[];
18
+ /** Instance-specific allowed rules (from AgentOptions) */
19
+ instanceAllowedRules?: string[];
20
+ /** Instance-specific denied rules (from AgentOptions) */
21
+ instanceDeniedRules?: string[];
18
22
  /** Additional directories considered part of the Safe Zone */
19
23
  additionalDirectories?: string[];
20
24
  /** The main working directory */
@@ -26,29 +30,33 @@ export interface PermissionManagerOptions {
26
30
  }
27
31
  export declare class PermissionManager {
28
32
  private container;
29
- private configuredDefaultMode?;
33
+ private configuredPermissionMode?;
30
34
  private allowedRules;
31
35
  private deniedRules;
36
+ private instanceAllowedRules;
37
+ private instanceDeniedRules;
32
38
  private temporaryRules;
33
39
  private additionalDirectories;
34
40
  private systemAdditionalDirectories;
35
41
  private workdir?;
36
42
  private planFilePath?;
37
- private onConfiguredDefaultModeChange?;
43
+ private worktreeName?;
44
+ private mainRepoRoot?;
45
+ private onConfiguredPermissionModeChange?;
38
46
  private _logger?;
39
47
  constructor(container: Container, options?: PermissionManagerOptions);
40
48
  /**
41
49
  * Set a callback to be notified when the effective permission mode changes due to configuration updates
42
50
  */
43
- setOnConfiguredDefaultModeChange(callback: (mode: PermissionMode) => void): void;
51
+ setOnConfiguredPermissionModeChange(callback: (mode: PermissionMode) => void): void;
44
52
  /**
45
53
  * Update the configured default mode (e.g., when configuration reloads)
46
54
  */
47
- updateConfiguredDefaultMode(defaultMode?: PermissionMode): void;
55
+ updateConfiguredPermissionMode(permissionMode?: PermissionMode): void;
48
56
  /**
49
57
  * Get the configured default mode
50
58
  */
51
- getConfiguredDefaultMode(): PermissionMode | undefined;
59
+ getConfiguredPermissionMode(): PermissionMode | undefined;
52
60
  /**
53
61
  * Get all currently allowed rules (user-defined)
54
62
  */
@@ -57,6 +65,14 @@ export declare class PermissionManager {
57
65
  * Get all currently denied rules
58
66
  */
59
67
  getDeniedRules(): string[];
68
+ /**
69
+ * Get all instance-specific allowed rules
70
+ */
71
+ getInstanceAllowedRules(): string[];
72
+ /**
73
+ * Get all instance-specific denied rules
74
+ */
75
+ getInstanceDeniedRules(): string[];
60
76
  /**
61
77
  * Get all additional directories
62
78
  */
@@ -122,6 +138,10 @@ export declare class PermissionManager {
122
138
  * Determine if a tool requires permission checks based on its name
123
139
  */
124
140
  isRestrictedTool(toolName: string): boolean;
141
+ /**
142
+ * Check if a tool is completely denied by name in instance or global rules
143
+ */
144
+ isToolDenied(toolName: string): boolean;
125
145
  /**
126
146
  * Helper method to create a permission context for CLI integration
127
147
  */
@@ -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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"}