wave-agent-sdk 0.16.12 → 0.17.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.
- package/builtin/skills/settings/MCP.md +49 -4
- package/builtin/skills/settings/PERMISSIONS.md +31 -0
- package/dist/managers/aiManager.d.ts +19 -0
- package/dist/managers/aiManager.d.ts.map +1 -1
- package/dist/managers/aiManager.js +338 -210
- package/dist/managers/backgroundTaskManager.js +1 -1
- package/dist/managers/bangManager.js +1 -1
- package/dist/managers/hookManager.d.ts +22 -0
- package/dist/managers/hookManager.d.ts.map +1 -1
- package/dist/managers/hookManager.js +97 -18
- package/dist/managers/mcpManager.d.ts.map +1 -1
- package/dist/managers/mcpManager.js +53 -41
- package/dist/managers/messageManager.d.ts +4 -0
- package/dist/managers/messageManager.d.ts.map +1 -1
- package/dist/managers/messageManager.js +9 -0
- package/dist/managers/permissionManager.d.ts +6 -0
- package/dist/managers/permissionManager.d.ts.map +1 -1
- package/dist/managers/permissionManager.js +14 -0
- package/dist/managers/planManager.d.ts.map +1 -1
- package/dist/managers/planManager.js +10 -0
- package/dist/managers/pluginManager.d.ts.map +1 -1
- package/dist/managers/pluginManager.js +28 -3
- package/dist/managers/slashCommandManager.d.ts.map +1 -1
- package/dist/managers/slashCommandManager.js +14 -0
- package/dist/managers/subagentManager.d.ts.map +1 -1
- package/dist/managers/subagentManager.js +4 -0
- package/dist/prompts/index.d.ts +0 -4
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +0 -3
- package/dist/prompts/planModeReminders.d.ts +6 -0
- package/dist/prompts/planModeReminders.d.ts.map +1 -0
- package/dist/prompts/planModeReminders.js +112 -0
- package/dist/services/aiService.d.ts +1 -0
- package/dist/services/aiService.d.ts.map +1 -1
- package/dist/services/aiService.js +3 -1
- package/dist/services/configurationService.d.ts.map +1 -1
- package/dist/services/configurationService.js +5 -3
- package/dist/services/initializationService.d.ts.map +1 -1
- package/dist/services/initializationService.js +13 -12
- package/dist/services/jsonlHandler.d.ts +1 -1
- package/dist/services/jsonlHandler.d.ts.map +1 -1
- package/dist/services/jsonlHandler.js +22 -7
- package/dist/services/session.d.ts +3 -2
- package/dist/services/session.d.ts.map +1 -1
- package/dist/services/session.js +30 -13
- package/dist/tools/agentTool.js +1 -1
- package/dist/tools/bashTool.d.ts.map +1 -1
- package/dist/tools/bashTool.js +8 -12
- package/dist/tools/editTool.d.ts.map +1 -1
- package/dist/tools/editTool.js +21 -8
- package/dist/tools/exitPlanMode.d.ts.map +1 -1
- package/dist/tools/exitPlanMode.js +2 -0
- package/dist/tools/readTool.d.ts.map +1 -1
- package/dist/tools/readTool.js +19 -4
- package/dist/tools/types.d.ts +2 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/types/agent.d.ts +4 -0
- package/dist/types/agent.d.ts.map +1 -1
- package/dist/types/hooks.d.ts +5 -1
- package/dist/types/hooks.d.ts.map +1 -1
- package/dist/types/hooks.js +2 -0
- package/dist/types/mcp.d.ts +1 -0
- package/dist/types/mcp.d.ts.map +1 -1
- package/dist/utils/containerSetup.d.ts.map +1 -1
- package/dist/utils/containerSetup.js +6 -1
- package/dist/utils/editUtils.d.ts +3 -2
- package/dist/utils/editUtils.d.ts.map +1 -1
- package/dist/utils/editUtils.js +5 -3
- package/package.json +2 -2
- package/src/managers/aiManager.ts +420 -256
- package/src/managers/backgroundTaskManager.ts +1 -1
- package/src/managers/bangManager.ts +1 -1
- package/src/managers/hookManager.ts +125 -21
- package/src/managers/mcpManager.ts +65 -49
- package/src/managers/messageManager.ts +10 -0
- package/src/managers/permissionManager.ts +18 -0
- package/src/managers/planManager.ts +11 -0
- package/src/managers/pluginManager.ts +52 -6
- package/src/managers/slashCommandManager.ts +17 -0
- package/src/managers/subagentManager.ts +4 -0
- package/src/prompts/index.ts +0 -8
- package/src/prompts/planModeReminders.ts +138 -0
- package/src/services/aiService.ts +4 -1
- package/src/services/configurationService.ts +5 -3
- package/src/services/initializationService.ts +16 -15
- package/src/services/jsonlHandler.ts +27 -7
- package/src/services/session.ts +33 -13
- package/src/tools/agentTool.ts +1 -1
- package/src/tools/bashTool.ts +8 -11
- package/src/tools/editTool.ts +25 -8
- package/src/tools/exitPlanMode.ts +3 -0
- package/src/tools/readTool.ts +23 -5
- package/src/tools/types.ts +2 -0
- package/src/types/agent.ts +4 -0
- package/src/types/hooks.ts +9 -1
- package/src/types/mcp.ts +1 -0
- package/src/utils/containerSetup.ts +7 -3
- package/src/utils/editUtils.ts +6 -3
|
@@ -12,6 +12,9 @@ import { Container } from "../utils/container.js";
|
|
|
12
12
|
export declare class HookManager {
|
|
13
13
|
private container;
|
|
14
14
|
private configuration;
|
|
15
|
+
private programmaticHooks;
|
|
16
|
+
private pluginHooks;
|
|
17
|
+
private waveConfigHooks;
|
|
15
18
|
private readonly matcher;
|
|
16
19
|
private readonly workdir;
|
|
17
20
|
constructor(container: Container, workdir: string, matcher?: HookMatcher);
|
|
@@ -24,6 +27,12 @@ export declare class HookManager {
|
|
|
24
27
|
* Configuration loading is now handled by ConfigurationService
|
|
25
28
|
*/
|
|
26
29
|
loadConfigurationFromWaveConfig(waveConfig: WaveConfiguration | null): void;
|
|
30
|
+
/**
|
|
31
|
+
* Rebuild the full configuration from all sources:
|
|
32
|
+
* programmatic (AgentOptions.hooks) + plugin + wave config (settings.json)
|
|
33
|
+
* Order determines precedence on conflict (later sources append).
|
|
34
|
+
*/
|
|
35
|
+
private rebuildConfiguration;
|
|
27
36
|
/**
|
|
28
37
|
* Execute hooks for a specific event
|
|
29
38
|
*/
|
|
@@ -120,5 +129,18 @@ export declare class HookManager {
|
|
|
120
129
|
* No stdout processing needed (SessionEnd hooks are fire-and-forget cleanup).
|
|
121
130
|
*/
|
|
122
131
|
executeSessionEndHooks(source: SessionEndSource, sessionId: string, transcriptPath: string): Promise<HookExecutionResult[]>;
|
|
132
|
+
/**
|
|
133
|
+
* Execute PreCompact hooks before compaction.
|
|
134
|
+
* Returns custom instructions from hook stdout.
|
|
135
|
+
*/
|
|
136
|
+
executePreCompactHooks(sessionId: string, transcriptPath: string, customInstructions?: string): Promise<{
|
|
137
|
+
results: HookExecutionResult[];
|
|
138
|
+
additionalInstructions?: string;
|
|
139
|
+
}>;
|
|
140
|
+
/**
|
|
141
|
+
* Execute PostCompact hooks after compaction.
|
|
142
|
+
* Receives the compact summary text.
|
|
143
|
+
*/
|
|
144
|
+
executePostCompactHooks(sessionId: string, transcriptPath: string, compactSummary: string): Promise<HookExecutionResult[]>;
|
|
123
145
|
}
|
|
124
146
|
//# sourceMappingURL=hookManager.d.ts.map
|
|
@@ -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,EACzB,KAAK,gBAAgB,EAItB,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;
|
|
1
|
+
{"version":3,"file":"hookManager.d.ts","sourceRoot":"","sources":["../../src/managers/hookManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,9 @@ import { logger } from "../utils/globalLogger.js";
|
|
|
12
12
|
export class HookManager {
|
|
13
13
|
constructor(container, workdir, matcher = new HookMatcher()) {
|
|
14
14
|
this.container = container;
|
|
15
|
+
this.programmaticHooks = {};
|
|
16
|
+
this.pluginHooks = {};
|
|
17
|
+
this.waveConfigHooks = {};
|
|
15
18
|
this.workdir = workdir;
|
|
16
19
|
this.matcher = matcher;
|
|
17
20
|
}
|
|
@@ -19,16 +22,16 @@ export class HookManager {
|
|
|
19
22
|
* Load hook configuration from programmatic source (AgentOptions.hooks)
|
|
20
23
|
*/
|
|
21
24
|
loadConfiguration(hooks) {
|
|
22
|
-
|
|
25
|
+
this.programmaticHooks = {};
|
|
23
26
|
if (hooks) {
|
|
24
|
-
this.mergeHooksConfiguration(
|
|
27
|
+
this.mergeHooksConfiguration(this.programmaticHooks, hooks);
|
|
25
28
|
}
|
|
26
29
|
// Validate merged configuration
|
|
27
|
-
const validation = this.validatePartialConfiguration(
|
|
30
|
+
const validation = this.validatePartialConfiguration(this.programmaticHooks);
|
|
28
31
|
if (!validation.valid) {
|
|
29
32
|
throw new HookConfigurationError("merged configuration", validation.errors);
|
|
30
33
|
}
|
|
31
|
-
this.
|
|
34
|
+
this.rebuildConfiguration();
|
|
32
35
|
}
|
|
33
36
|
/**
|
|
34
37
|
* Load hooks configuration from a pre-loaded WaveConfiguration
|
|
@@ -36,18 +39,16 @@ export class HookManager {
|
|
|
36
39
|
*/
|
|
37
40
|
loadConfigurationFromWaveConfig(waveConfig) {
|
|
38
41
|
try {
|
|
39
|
-
//
|
|
40
|
-
|
|
42
|
+
// Replace (not append) wave config hooks to avoid duplicates on reload
|
|
43
|
+
this.waveConfigHooks = {};
|
|
41
44
|
if (waveConfig?.hooks) {
|
|
42
45
|
const validation = this.validatePartialConfiguration(waveConfig.hooks);
|
|
43
46
|
if (!validation.valid) {
|
|
44
47
|
throw new HookConfigurationError("provided configuration", validation.errors);
|
|
45
48
|
}
|
|
46
|
-
|
|
47
|
-
this.configuration = {};
|
|
48
|
-
}
|
|
49
|
-
this.mergeHooksConfiguration(this.configuration, waveConfig.hooks);
|
|
49
|
+
this.waveConfigHooks = { ...waveConfig.hooks };
|
|
50
50
|
}
|
|
51
|
+
this.rebuildConfiguration();
|
|
51
52
|
}
|
|
52
53
|
catch (error) {
|
|
53
54
|
// Re-throw configuration errors, but handle other errors gracefully
|
|
@@ -59,6 +60,18 @@ export class HookManager {
|
|
|
59
60
|
}
|
|
60
61
|
}
|
|
61
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* Rebuild the full configuration from all sources:
|
|
65
|
+
* programmatic (AgentOptions.hooks) + plugin + wave config (settings.json)
|
|
66
|
+
* Order determines precedence on conflict (later sources append).
|
|
67
|
+
*/
|
|
68
|
+
rebuildConfiguration() {
|
|
69
|
+
const rebuilt = {};
|
|
70
|
+
this.mergeHooksConfiguration(rebuilt, this.programmaticHooks);
|
|
71
|
+
this.mergeHooksConfiguration(rebuilt, this.pluginHooks);
|
|
72
|
+
this.mergeHooksConfiguration(rebuilt, this.waveConfigHooks);
|
|
73
|
+
this.configuration = Object.keys(rebuilt).length > 0 ? rebuilt : undefined;
|
|
74
|
+
}
|
|
62
75
|
/**
|
|
63
76
|
* Execute hooks for a specific event
|
|
64
77
|
*/
|
|
@@ -263,6 +276,14 @@ export class HookManager {
|
|
|
263
276
|
// Blocking error (exit code 2): show in error block, don't block shutdown
|
|
264
277
|
messageManager.addErrorBlock(errorMessage);
|
|
265
278
|
return { shouldBlock: false };
|
|
279
|
+
case "PreCompact":
|
|
280
|
+
// Non-blocking for compaction, show error in error block
|
|
281
|
+
messageManager.addErrorBlock(errorMessage);
|
|
282
|
+
return { shouldBlock: false };
|
|
283
|
+
case "PostCompact":
|
|
284
|
+
// Non-blocking for compaction, show error in error block
|
|
285
|
+
messageManager.addErrorBlock(errorMessage);
|
|
286
|
+
return { shouldBlock: false };
|
|
266
287
|
default:
|
|
267
288
|
return { shouldBlock: false };
|
|
268
289
|
}
|
|
@@ -420,7 +441,9 @@ export class HookManager {
|
|
|
420
441
|
event === "WorktreeCreate" ||
|
|
421
442
|
event === "WorktreeRemove" ||
|
|
422
443
|
event === "SessionStart" ||
|
|
423
|
-
event === "SessionEnd"
|
|
444
|
+
event === "SessionEnd" ||
|
|
445
|
+
event === "PreCompact" ||
|
|
446
|
+
event === "PostCompact") &&
|
|
424
447
|
context.toolName !== undefined) {
|
|
425
448
|
logger?.warn(`[HookManager] ${event} event has unexpected toolName in context: ${context.toolName}`);
|
|
426
449
|
}
|
|
@@ -478,7 +501,9 @@ export class HookManager {
|
|
|
478
501
|
event === "WorktreeRemove" ||
|
|
479
502
|
event === "CwdChanged" ||
|
|
480
503
|
event === "SessionStart" ||
|
|
481
|
-
event === "SessionEnd"
|
|
504
|
+
event === "SessionEnd" ||
|
|
505
|
+
event === "PreCompact" ||
|
|
506
|
+
event === "PostCompact") {
|
|
482
507
|
return true;
|
|
483
508
|
}
|
|
484
509
|
// For tool-based events, check matcher if present
|
|
@@ -523,7 +548,9 @@ export class HookManager {
|
|
|
523
548
|
event === "WorktreeCreate" ||
|
|
524
549
|
event === "WorktreeRemove" ||
|
|
525
550
|
event === "SessionStart" ||
|
|
526
|
-
event === "SessionEnd"
|
|
551
|
+
event === "SessionEnd" ||
|
|
552
|
+
event === "PreCompact" ||
|
|
553
|
+
event === "PostCompact") &&
|
|
527
554
|
config.matcher) {
|
|
528
555
|
errors.push(`${prefix}: Event ${event} should not have a matcher`);
|
|
529
556
|
}
|
|
@@ -556,6 +583,8 @@ export class HookManager {
|
|
|
556
583
|
CwdChanged: 0,
|
|
557
584
|
SessionStart: 0,
|
|
558
585
|
SessionEnd: 0,
|
|
586
|
+
PreCompact: 0,
|
|
587
|
+
PostCompact: 0,
|
|
559
588
|
},
|
|
560
589
|
};
|
|
561
590
|
}
|
|
@@ -571,6 +600,8 @@ export class HookManager {
|
|
|
571
600
|
CwdChanged: 0,
|
|
572
601
|
SessionStart: 0,
|
|
573
602
|
SessionEnd: 0,
|
|
603
|
+
PreCompact: 0,
|
|
604
|
+
PostCompact: 0,
|
|
574
605
|
};
|
|
575
606
|
let totalConfigs = 0;
|
|
576
607
|
let totalCommands = 0;
|
|
@@ -614,9 +645,6 @@ export class HookManager {
|
|
|
614
645
|
* Register hooks provided by a plugin
|
|
615
646
|
*/
|
|
616
647
|
registerPluginHooks(pluginRoot, hooks) {
|
|
617
|
-
if (!this.configuration) {
|
|
618
|
-
this.configuration = {};
|
|
619
|
-
}
|
|
620
648
|
// Stamp pluginRoot on each hook command
|
|
621
649
|
const stampedHooks = {};
|
|
622
650
|
for (const [event, configs] of Object.entries(hooks)) {
|
|
@@ -627,7 +655,8 @@ export class HookManager {
|
|
|
627
655
|
hooks: config.hooks.map((cmd) => ({ ...cmd, pluginRoot })),
|
|
628
656
|
}));
|
|
629
657
|
}
|
|
630
|
-
this.mergeHooksConfiguration(this.
|
|
658
|
+
this.mergeHooksConfiguration(this.pluginHooks, stampedHooks);
|
|
659
|
+
this.rebuildConfiguration();
|
|
631
660
|
}
|
|
632
661
|
/**
|
|
633
662
|
* Execute SessionStart hooks during initialization.
|
|
@@ -687,7 +716,8 @@ export class HookManager {
|
|
|
687
716
|
transcriptPath,
|
|
688
717
|
cwd: this.workdir,
|
|
689
718
|
endSource: source,
|
|
690
|
-
env:
|
|
719
|
+
env: this.container.get("MergedEnv") ||
|
|
720
|
+
process.env,
|
|
691
721
|
};
|
|
692
722
|
const results = await this.executeHooks("SessionEnd", context);
|
|
693
723
|
// Process results but never block shutdown
|
|
@@ -696,4 +726,53 @@ export class HookManager {
|
|
|
696
726
|
}
|
|
697
727
|
return results;
|
|
698
728
|
}
|
|
729
|
+
/**
|
|
730
|
+
* Execute PreCompact hooks before compaction.
|
|
731
|
+
* Returns custom instructions from hook stdout.
|
|
732
|
+
*/
|
|
733
|
+
async executePreCompactHooks(sessionId, transcriptPath, customInstructions) {
|
|
734
|
+
const context = {
|
|
735
|
+
event: "PreCompact",
|
|
736
|
+
projectDir: this.workdir,
|
|
737
|
+
timestamp: new Date(),
|
|
738
|
+
sessionId,
|
|
739
|
+
transcriptPath,
|
|
740
|
+
cwd: this.workdir,
|
|
741
|
+
compactInstructions: customInstructions,
|
|
742
|
+
env: Object.fromEntries(Object.entries(process.env).filter((e) => e[1] !== undefined)),
|
|
743
|
+
};
|
|
744
|
+
const results = await this.executeHooks("PreCompact", context);
|
|
745
|
+
let additionalInstructions;
|
|
746
|
+
for (const result of results) {
|
|
747
|
+
if (result.success && result.stdout?.trim()) {
|
|
748
|
+
const trimmed = result.stdout.trim();
|
|
749
|
+
additionalInstructions = additionalInstructions
|
|
750
|
+
? additionalInstructions + "\n" + trimmed
|
|
751
|
+
: trimmed;
|
|
752
|
+
}
|
|
753
|
+
}
|
|
754
|
+
return { results, additionalInstructions };
|
|
755
|
+
}
|
|
756
|
+
/**
|
|
757
|
+
* Execute PostCompact hooks after compaction.
|
|
758
|
+
* Receives the compact summary text.
|
|
759
|
+
*/
|
|
760
|
+
async executePostCompactHooks(sessionId, transcriptPath, compactSummary) {
|
|
761
|
+
const context = {
|
|
762
|
+
event: "PostCompact",
|
|
763
|
+
projectDir: this.workdir,
|
|
764
|
+
timestamp: new Date(),
|
|
765
|
+
sessionId,
|
|
766
|
+
transcriptPath,
|
|
767
|
+
cwd: this.workdir,
|
|
768
|
+
compactSummary,
|
|
769
|
+
env: this.container.get("MergedEnv") ||
|
|
770
|
+
process.env,
|
|
771
|
+
};
|
|
772
|
+
const results = await this.executeHooks("PostCompact", context);
|
|
773
|
+
if (results.length > 0) {
|
|
774
|
+
this.processHookResults("PostCompact", results);
|
|
775
|
+
}
|
|
776
|
+
return results;
|
|
777
|
+
}
|
|
699
778
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcpManager.d.ts","sourceRoot":"","sources":["../../src/managers/mcpManager.ts"],"names":[],"mappings":"AAOA,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,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,IAAI,CAAC;CAC3D;AAID,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC9C;AAQD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUnD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAsC7D;AAED,qBAAa,UAAU;IAanB,OAAO,CAAC,SAAS;IAZnB,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;IACvC,OAAO,CAAC,UAAU,CAA8C;IAEhE,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,iBAAiB,CAAkC;gBAGjD,SAAS,EAAE,SAAS,EAC5B,OAAO,GAAE,iBAAsB;IAMjC;;OAEG;IACG,UAAU,CACd,OAAO,EAAE,MAAM,EACf,WAAW,GAAE,OAAe,GAC3B,OAAO,CAAC,IAAI,CAAC;IAgDV,kBAAkB,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAO/C,UAAU,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAgEvC,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;IAuDzD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAgB7B,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"mcpManager.d.ts","sourceRoot":"","sources":["../../src/managers/mcpManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -282,52 +282,60 @@ export class McpManager {
|
|
|
282
282
|
name: "wave-code",
|
|
283
283
|
version: "1.0.0",
|
|
284
284
|
}, {
|
|
285
|
-
capabilities: {
|
|
286
|
-
tools: {},
|
|
287
|
-
},
|
|
285
|
+
capabilities: {},
|
|
288
286
|
});
|
|
289
|
-
|
|
287
|
+
const serverType = server.config.type;
|
|
288
|
+
if (serverType === "http" || (!serverType && server.config.url)) {
|
|
289
|
+
if (!server.config.url) {
|
|
290
|
+
throw new Error(`MCP server ${name} with type "http" requires a 'url'`);
|
|
291
|
+
}
|
|
290
292
|
const url = new URL(server.config.url);
|
|
291
293
|
const headers = server.config.headers;
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
}
|
|
311
|
-
catch (error) {
|
|
312
|
-
logger?.debug(`Streamable HTTP failed for ${name}, falling back to SSE: ${error instanceof Error ? error.message : String(error)}`);
|
|
313
|
-
transport = new SSEClientTransport(url, {
|
|
314
|
-
requestInit: { headers },
|
|
315
|
-
});
|
|
316
|
-
client = createClient();
|
|
317
|
-
await client.connect(transport);
|
|
318
|
-
const toolsResponse = await client.listTools();
|
|
319
|
-
tools =
|
|
320
|
-
toolsResponse.tools?.map((tool) => ({
|
|
321
|
-
name: tool.name,
|
|
322
|
-
description: tool.description,
|
|
323
|
-
inputSchema: tool.inputSchema,
|
|
324
|
-
})) || [];
|
|
325
|
-
logger?.info(`Connected to MCP server ${name} using SSE (fallback)`);
|
|
294
|
+
logger?.debug(`Connecting to MCP server ${name} using Streamable HTTP at ${url.href}`);
|
|
295
|
+
transport = new StreamableHTTPClientTransport(url, {
|
|
296
|
+
requestInit: { headers },
|
|
297
|
+
});
|
|
298
|
+
client = createClient();
|
|
299
|
+
await client.connect(transport);
|
|
300
|
+
const toolsResponse = await client.listTools();
|
|
301
|
+
tools =
|
|
302
|
+
toolsResponse.tools?.map((tool) => ({
|
|
303
|
+
name: tool.name,
|
|
304
|
+
description: tool.description,
|
|
305
|
+
inputSchema: tool.inputSchema,
|
|
306
|
+
})) || [];
|
|
307
|
+
logger?.info(`Connected to MCP server ${name} using Streamable HTTP`);
|
|
308
|
+
}
|
|
309
|
+
else if (serverType === "sse") {
|
|
310
|
+
if (!server.config.url) {
|
|
311
|
+
throw new Error(`MCP server ${name} with type "sse" requires a 'url'`);
|
|
326
312
|
}
|
|
313
|
+
const url = new URL(server.config.url);
|
|
314
|
+
const headers = server.config.headers;
|
|
315
|
+
logger?.debug(`Connecting to MCP server ${name} using SSE at ${url.href}`);
|
|
316
|
+
transport = new SSEClientTransport(url, {
|
|
317
|
+
requestInit: { headers },
|
|
318
|
+
});
|
|
319
|
+
client = createClient();
|
|
320
|
+
await client.connect(transport);
|
|
321
|
+
const toolsResponse = await client.listTools();
|
|
322
|
+
tools =
|
|
323
|
+
toolsResponse.tools?.map((tool) => ({
|
|
324
|
+
name: tool.name,
|
|
325
|
+
description: tool.description,
|
|
326
|
+
inputSchema: tool.inputSchema,
|
|
327
|
+
})) || [];
|
|
328
|
+
logger?.info(`Connected to MCP server ${name} using SSE`);
|
|
327
329
|
}
|
|
328
|
-
else if (
|
|
330
|
+
else if (serverType === "stdio" ||
|
|
331
|
+
(!serverType && server.config.command)) {
|
|
332
|
+
if (!server.config.command) {
|
|
333
|
+
throw new Error(`MCP server ${name} with type "stdio" requires a 'command'`);
|
|
334
|
+
}
|
|
335
|
+
const agentEnv = this.container.get("MergedEnv") ||
|
|
336
|
+
process.env;
|
|
329
337
|
const env = {
|
|
330
|
-
...
|
|
338
|
+
...agentEnv,
|
|
331
339
|
...(server.config.env || {}),
|
|
332
340
|
};
|
|
333
341
|
// For plugin servers, substitute ${WAVE_PLUGIN_ROOT} in command/args/env
|
|
@@ -380,6 +388,10 @@ export class McpManager {
|
|
|
380
388
|
inputSchema: tool.inputSchema,
|
|
381
389
|
})) || [];
|
|
382
390
|
}
|
|
391
|
+
else if (serverType) {
|
|
392
|
+
// Unknown type value
|
|
393
|
+
throw new Error(`MCP server ${name} has unknown type "${serverType}". Must be "stdio", "sse", or "http"`);
|
|
394
|
+
}
|
|
383
395
|
else {
|
|
384
396
|
throw new Error(`MCP server ${name} configuration must include either 'command' or 'url'`);
|
|
385
397
|
}
|
|
@@ -612,7 +624,7 @@ export class McpManager {
|
|
|
612
624
|
textContent.push(`[Resource: ${c.resource?.uri || ""}]`);
|
|
613
625
|
}
|
|
614
626
|
else {
|
|
615
|
-
textContent.push(JSON.stringify(c));
|
|
627
|
+
textContent.push(JSON.stringify(c, null, 2));
|
|
616
628
|
}
|
|
617
629
|
});
|
|
618
630
|
}
|
|
@@ -87,6 +87,10 @@ export declare class MessageManager {
|
|
|
87
87
|
* Adds a file path to the set of files in context, normalizing it if necessary.
|
|
88
88
|
*/
|
|
89
89
|
touchFile(filePath: string): void;
|
|
90
|
+
/**
|
|
91
|
+
* Checks if a file has been read or edited in this conversation.
|
|
92
|
+
*/
|
|
93
|
+
hasFileInContext(filePath: string): boolean;
|
|
90
94
|
/**
|
|
91
95
|
* Extracts and adds file paths from a message's tool blocks.
|
|
92
96
|
*/
|
|
@@ -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;AAGxD,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,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,uBAAuB,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;IAE1D,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;IAsBvB,OAAO,CAAC,SAAS;IApBnB,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,eAAe,CACX;IACZ,OAAO,CAAC,aAAa,CACT;IACZ,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;IACI,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAOlD;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAmBpB,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI;IAsB7C;;OAEG;IACU,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAyClC,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,+BAA+B,CACpC,gBAAgB,EAAE,MAAM,EACxB,KAAK,CAAC,EAAE,KAAK,GACZ,IAAI;IAoDA,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;IAkBhC,OAAO,CAAC,sBAAsB;IA6B9B;;OAEG;IACH,OAAO,CAAC,2BAA2B;IA6BnC;;;;;OAKG;IACI,kBAAkB,CACvB,QAAQ,SAAI,EACZ,gBAAgB,SAAO,GACtB,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAgB3C;;OAEG;IACH,OAAO,CAAC,kCAAkC;IA2B1C;;;;OAIG;IACI,oBAAoB,CAAC,SAAS,SAAK,GAAG,MAAM,EAAE;IAQrD;;OAEG;IACI,kBAAkB,IAAI,IAAI;CAGlC"}
|
|
@@ -126,6 +126,15 @@ export class MessageManager {
|
|
|
126
126
|
: filePath;
|
|
127
127
|
this.filesInContext.add(normalizedPath);
|
|
128
128
|
}
|
|
129
|
+
/**
|
|
130
|
+
* Checks if a file has been read or edited in this conversation.
|
|
131
|
+
*/
|
|
132
|
+
hasFileInContext(filePath) {
|
|
133
|
+
const normalizedPath = isAbsolute(filePath)
|
|
134
|
+
? relative(this.workdir, filePath)
|
|
135
|
+
: filePath;
|
|
136
|
+
return this.filesInContext.has(normalizedPath);
|
|
137
|
+
}
|
|
129
138
|
/**
|
|
130
139
|
* Extracts and adds file paths from a message's tool blocks.
|
|
131
140
|
*/
|
|
@@ -39,6 +39,8 @@ export declare class PermissionManager {
|
|
|
39
39
|
private additionalDirectories;
|
|
40
40
|
private systemAdditionalDirectories;
|
|
41
41
|
private planFilePath?;
|
|
42
|
+
private hasExitedPlanMode;
|
|
43
|
+
private needsPlanModeExitAttachment;
|
|
42
44
|
private workdir?;
|
|
43
45
|
private worktreeName?;
|
|
44
46
|
private mainRepoRoot?;
|
|
@@ -121,6 +123,10 @@ export declare class PermissionManager {
|
|
|
121
123
|
* Get the current plan file path
|
|
122
124
|
*/
|
|
123
125
|
getPlanFilePath(): string | undefined;
|
|
126
|
+
setHasExitedPlanMode(value: boolean): void;
|
|
127
|
+
hasExitedPlanModeInSession(): boolean;
|
|
128
|
+
setNeedsPlanModeExitAttachment(value: boolean): void;
|
|
129
|
+
getNeedsPlanModeExitAttachment(): boolean;
|
|
124
130
|
/**
|
|
125
131
|
* Public wrapper for isInsideSafeZone to check if a path is in the safe zone
|
|
126
132
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissionManager.d.ts","sourceRoot":"","sources":["../../src/managers/permissionManager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EACV,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACf,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAiBhD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAkElD,MAAM,WAAW,wBAAwB;IACvC,+CAA+C;IAC/C,wBAAwB,CAAC,EAAE,cAAc,CAAC;IAC1C,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,0DAA0D;IAC1D,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,yDAAyD;IACzD,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,8DAA8D;IAC9D,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,gEAAgE;IAChE,2BAA2B,CAAC,EAAE,MAAM,EAAE,CAAC;IACvC,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,iBAAiB;
|
|
1
|
+
{"version":3,"file":"permissionManager.d.ts","sourceRoot":"","sources":["../../src/managers/permissionManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -81,6 +81,8 @@ export class PermissionManager {
|
|
|
81
81
|
this.temporaryRules = [];
|
|
82
82
|
this.additionalDirectories = [];
|
|
83
83
|
this.systemAdditionalDirectories = [];
|
|
84
|
+
this.hasExitedPlanMode = false;
|
|
85
|
+
this.needsPlanModeExitAttachment = false;
|
|
84
86
|
this.configuredPermissionMode = options.configuredPermissionMode;
|
|
85
87
|
this.allowedRules = options.allowedRules || [];
|
|
86
88
|
this.deniedRules = options.deniedRules || [];
|
|
@@ -228,6 +230,18 @@ export class PermissionManager {
|
|
|
228
230
|
getPlanFilePath() {
|
|
229
231
|
return this.planFilePath;
|
|
230
232
|
}
|
|
233
|
+
setHasExitedPlanMode(value) {
|
|
234
|
+
this.hasExitedPlanMode = value;
|
|
235
|
+
}
|
|
236
|
+
hasExitedPlanModeInSession() {
|
|
237
|
+
return this.hasExitedPlanMode;
|
|
238
|
+
}
|
|
239
|
+
setNeedsPlanModeExitAttachment(value) {
|
|
240
|
+
this.needsPlanModeExitAttachment = value;
|
|
241
|
+
}
|
|
242
|
+
getNeedsPlanModeExitAttachment() {
|
|
243
|
+
return this.needsPlanModeExitAttachment;
|
|
244
|
+
}
|
|
231
245
|
/**
|
|
232
246
|
* Public wrapper for isInsideSafeZone to check if a path is in the safe zone
|
|
233
247
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planManager.d.ts","sourceRoot":"","sources":["../../src/managers/planManager.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAO9D,qBAAa,WAAW;IAIV,OAAO,CAAC,SAAS;IAH7B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,mBAAmB,CAAuB;gBAE9B,SAAS,EAAE,SAAS;IAIxC;;OAEG;IACU,yBAAyB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAC7D,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IA+BF;;OAEG;IACI,UAAU,IAAI,MAAM;IAI3B;;;OAGG;IACI,wBAAwB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"planManager.d.ts","sourceRoot":"","sources":["../../src/managers/planManager.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAO9D,qBAAa,WAAW;IAIV,OAAO,CAAC,SAAS;IAH7B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,mBAAmB,CAAuB;gBAE9B,SAAS,EAAE,SAAS;IAIxC;;OAEG;IACU,yBAAyB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAC7D,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IA+BF;;OAEG;IACI,UAAU,IAAI,MAAM;IAI3B;;;OAGG;IACI,wBAAwB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;CA6B5D"}
|
|
@@ -53,7 +53,11 @@ export class PlanManager {
|
|
|
53
53
|
handlePlanModeTransition(mode) {
|
|
54
54
|
const permissionManager = this.container.get("PermissionManager");
|
|
55
55
|
const messageManager = this.container.get("MessageManager");
|
|
56
|
+
const previousMode = this.container.get("PermissionMode");
|
|
56
57
|
if (mode === "plan") {
|
|
58
|
+
// Entering plan mode: clear any pending exit attachment
|
|
59
|
+
// (prevents sending both plan_mode and plan_mode_exit on rapid toggle)
|
|
60
|
+
permissionManager?.setNeedsPlanModeExitAttachment(false);
|
|
57
61
|
this.getOrGeneratePlanFilePath(messageManager?.getRootSessionId())
|
|
58
62
|
.then(({ path }) => {
|
|
59
63
|
logger?.debug("Plan file path generated", { path });
|
|
@@ -63,6 +67,12 @@ export class PlanManager {
|
|
|
63
67
|
logger?.error("Failed to generate plan file path", error);
|
|
64
68
|
});
|
|
65
69
|
}
|
|
70
|
+
else if (previousMode === "plan") {
|
|
71
|
+
// Leaving plan mode: set flags for exit notification and re-entry detection
|
|
72
|
+
permissionManager?.setHasExitedPlanMode(true);
|
|
73
|
+
permissionManager?.setNeedsPlanModeExitAttachment(true);
|
|
74
|
+
permissionManager?.setPlanFilePath(undefined);
|
|
75
|
+
}
|
|
66
76
|
else {
|
|
67
77
|
permissionManager?.setPlanFilePath(undefined);
|
|
68
78
|
}
|
|
@@ -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;AAWzD,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,OAAO,KAAK,eAAe,GAE1B;IAED;;OAEG;IACH,oBAAoB,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAInE;;OAEG;YACW,oBAAoB;
|
|
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;AAWzD,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,OAAO,KAAK,eAAe,GAE1B;IAED;;OAEG;IACH,oBAAoB,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAInE;;OAEG;YACW,oBAAoB;IAwHlC;;OAEG;YACW,gBAAgB;IAgE9B;;;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"}
|
|
@@ -65,12 +65,37 @@ export class PluginManager {
|
|
|
65
65
|
if (!isInstalled) {
|
|
66
66
|
const isMarketplaceKnown = knownMarketplaces.some((m) => m.name === marketplaceName);
|
|
67
67
|
if (isMarketplaceKnown) {
|
|
68
|
+
// Pre-check: verify the plugin still exists in the marketplace manifest
|
|
69
|
+
// before acquiring the lock in installPlugin (which can block ~8s during autoUpdate)
|
|
70
|
+
const marketplace = knownMarketplaces.find((m) => m.name === marketplaceName);
|
|
71
|
+
if (!marketplace)
|
|
72
|
+
continue;
|
|
73
|
+
try {
|
|
74
|
+
const marketplacePath = marketplaceService.getMarketplacePath(marketplace.source);
|
|
75
|
+
const manifest = await marketplaceService.loadMarketplaceManifest(marketplacePath);
|
|
76
|
+
const pluginExists = manifest.plugins.some((p) => p.name === name);
|
|
77
|
+
if (!pluginExists) {
|
|
78
|
+
logger?.warn(`Plugin ${pluginId} is enabled but no longer exists in marketplace ${marketplaceName}. Removing from enabledPlugins.`);
|
|
79
|
+
await this.configurationService?.removeEnabledPlugin(this.workdir, "user", pluginId);
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
// Manifest read failed (marketplace not cloned yet?) — fall through to installPlugin
|
|
85
|
+
}
|
|
68
86
|
logger?.info(`Auto-installing missing plugin: ${pluginId}`);
|
|
69
87
|
try {
|
|
70
88
|
await marketplaceService.installPlugin(pluginId);
|
|
71
89
|
}
|
|
72
90
|
catch (installError) {
|
|
73
|
-
|
|
91
|
+
if (installError instanceof Error &&
|
|
92
|
+
installError.message.includes("not found in marketplace")) {
|
|
93
|
+
logger?.warn(`Plugin ${pluginId} no longer found in marketplace. Removing from enabledPlugins.`);
|
|
94
|
+
await this.configurationService?.removeEnabledPlugin(this.workdir, "user", pluginId);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
logger?.error(`Failed to auto-install plugin ${pluginId}:`, installError);
|
|
98
|
+
}
|
|
74
99
|
}
|
|
75
100
|
}
|
|
76
101
|
else {
|
|
@@ -83,7 +108,7 @@ export class PluginManager {
|
|
|
83
108
|
for (const p of installedRegistry.plugins) {
|
|
84
109
|
const pluginId = `${p.name}@${p.marketplace}`;
|
|
85
110
|
if (this.enabledPlugins[pluginId] !== true) {
|
|
86
|
-
logger?.
|
|
111
|
+
logger?.debug(`Plugin ${pluginId} is not enabled via configuration`);
|
|
87
112
|
continue;
|
|
88
113
|
}
|
|
89
114
|
await this.loadSinglePlugin(p.cachePath);
|
|
@@ -140,7 +165,7 @@ export class PluginManager {
|
|
|
140
165
|
this.subagentManager.registerPluginAgents(plugin.name, plugin.agents);
|
|
141
166
|
}
|
|
142
167
|
this.plugins.set(manifest.name, plugin);
|
|
143
|
-
logger?.
|
|
168
|
+
logger?.debug(`Loaded plugin: ${manifest.name} v${manifest.version}`);
|
|
144
169
|
}
|
|
145
170
|
catch (error) {
|
|
146
171
|
logger?.error(`Failed to load plugin from ${absolutePath}`, error);
|
|
@@ -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;AAOxD,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,KAAK,aAAa,GAExB;IAED,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,CAAC,yBAAyB;
|
|
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;AAOxD,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,KAAK,aAAa,GAExB;IAED,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,CAAC,yBAAyB;IAsFjC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA2C1B;;OAEG;IACI,qBAAqB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI;IAmM3D;;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"}
|