wave-agent-sdk 0.8.4 → 0.9.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/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +5 -8
- package/dist/managers/aiManager.d.ts +6 -10
- package/dist/managers/aiManager.d.ts.map +1 -1
- package/dist/managers/aiManager.js +38 -13
- package/dist/managers/hookManager.d.ts.map +1 -1
- package/dist/managers/hookManager.js +15 -1
- package/dist/managers/messageManager.d.ts +1 -0
- package/dist/managers/messageManager.d.ts.map +1 -1
- package/dist/managers/messageManager.js +8 -2
- package/dist/managers/subagentManager.d.ts +2 -11
- package/dist/managers/subagentManager.d.ts.map +1 -1
- package/dist/managers/subagentManager.js +4 -53
- package/dist/prompts/autoMemory.d.ts +2 -0
- package/dist/prompts/autoMemory.d.ts.map +1 -0
- package/dist/prompts/autoMemory.js +33 -0
- package/dist/prompts/index.d.ts +4 -0
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +7 -0
- package/dist/services/aiService.js +6 -7
- package/dist/services/configurationService.d.ts +28 -16
- package/dist/services/configurationService.d.ts.map +1 -1
- package/dist/services/configurationService.js +87 -28
- package/dist/services/hook.js +2 -2
- package/dist/services/initializationService.d.ts.map +1 -1
- package/dist/services/initializationService.js +20 -9
- package/dist/services/memory.d.ts +22 -4
- package/dist/services/memory.d.ts.map +1 -1
- package/dist/services/memory.js +132 -73
- package/dist/types/configuration.d.ts +2 -0
- package/dist/types/configuration.d.ts.map +1 -1
- package/dist/types/hooks.d.ts +2 -0
- package/dist/types/hooks.d.ts.map +1 -1
- package/dist/types/hooks.js +17 -7
- package/dist/utils/containerSetup.d.ts +0 -5
- package/dist/utils/containerSetup.d.ts.map +1 -1
- package/dist/utils/containerSetup.js +8 -11
- package/dist/utils/fileSearch.d.ts +1 -6
- package/dist/utils/fileSearch.d.ts.map +1 -1
- package/dist/utils/fileSearch.js +104 -75
- package/dist/utils/gitUtils.d.ts +6 -0
- package/dist/utils/gitUtils.d.ts.map +1 -1
- package/dist/utils/gitUtils.js +18 -0
- package/package.json +2 -1
- package/src/agent.ts +7 -18
- package/src/managers/aiManager.ts +73 -28
- package/src/managers/hookManager.ts +22 -1
- package/src/managers/messageManager.ts +12 -2
- package/src/managers/subagentManager.ts +7 -69
- package/src/prompts/autoMemory.ts +33 -0
- package/src/prompts/index.ts +12 -0
- package/src/services/aiService.ts +8 -8
- package/src/services/configurationService.ts +100 -28
- package/src/services/hook.ts +2 -2
- package/src/services/initializationService.ts +24 -12
- package/src/services/memory.ts +144 -82
- package/src/types/configuration.ts +2 -0
- package/src/types/hooks.ts +25 -9
- package/src/utils/containerSetup.ts +8 -21
- package/src/utils/fileSearch.ts +112 -80
- package/src/utils/gitUtils.ts +18 -0
package/dist/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAeA,OAAO,EACL,YAAY,EACZ,kBAAkB,EAElB,YAAY,EACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,OAAO,EAEP,eAAe,EACf,aAAa,EACb,WAAW,EACX,KAAK,EACL,cAAc,EACd,cAAc,EACf,MAAM,kBAAkB,CAAC;AAY1B,qBAAa,KAAK;IAChB,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,SAAS,CAAY;IAE7B,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,qBAAqB,CAAwB;IACrD,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,qBAAqB,CAAwB;IACrD,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,MAAM,CAAU;IAGxB,OAAO,CAAC,OAAO,CAAe;IAG9B,OAAO,CAAC,qBAAqB,CAAc;IAC3C,OAAO,CAAC,kBAAkB,CAAc;IAGjC,gBAAgB,IAAI,aAAa;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/agent.js
CHANGED
|
@@ -7,16 +7,16 @@ import { setupAgentContainer } from "./utils/containerSetup.js";
|
|
|
7
7
|
export class Agent {
|
|
8
8
|
// Dynamic configuration getter methods
|
|
9
9
|
getGatewayConfig() {
|
|
10
|
-
return this.configurationService.resolveGatewayConfig(
|
|
10
|
+
return this.configurationService.resolveGatewayConfig();
|
|
11
11
|
}
|
|
12
12
|
getModelConfig() {
|
|
13
|
-
return this.configurationService.resolveModelConfig(
|
|
13
|
+
return this.configurationService.resolveModelConfig(undefined, undefined, undefined, this.getPermissionMode());
|
|
14
14
|
}
|
|
15
15
|
getMaxInputTokens() {
|
|
16
|
-
return this.configurationService.resolveMaxInputTokens(
|
|
16
|
+
return this.configurationService.resolveMaxInputTokens();
|
|
17
17
|
}
|
|
18
18
|
getLanguage() {
|
|
19
|
-
return this.configurationService.resolveLanguage(
|
|
19
|
+
return this.configurationService.resolveLanguage();
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
22
|
* Agent constructor - handles configuration resolution and validation
|
|
@@ -37,6 +37,7 @@ export class Agent {
|
|
|
37
37
|
this.workdir = workdir || process.cwd();
|
|
38
38
|
// Initialize configuration service
|
|
39
39
|
this.configurationService = new ConfigurationService();
|
|
40
|
+
this.configurationService.setOptions(options);
|
|
40
41
|
this.logger = logger; // Save the passed logger
|
|
41
42
|
this.systemPrompt = systemPrompt; // Save custom system prompt
|
|
42
43
|
this.stream = stream; // Save streaming mode flag
|
|
@@ -65,10 +66,6 @@ export class Agent {
|
|
|
65
66
|
},
|
|
66
67
|
addPermissionRule: (rule) => this.addPermissionRule(rule),
|
|
67
68
|
addUsage: (usage) => this.messageManager.addUsage(usage),
|
|
68
|
-
getGatewayConfig: () => this.getGatewayConfig(),
|
|
69
|
-
getModelConfig: () => this.getModelConfig(),
|
|
70
|
-
getMaxInputTokens: () => this.getMaxInputTokens(),
|
|
71
|
-
getLanguage: () => this.getLanguage(),
|
|
72
69
|
});
|
|
73
70
|
// Retrieve managers from container
|
|
74
71
|
this.foregroundTaskManager = this.container.get("ForegroundTaskManager");
|
|
@@ -11,11 +11,8 @@ export interface AIManagerOptions {
|
|
|
11
11
|
subagentType?: string;
|
|
12
12
|
/**Whether to use streaming mode for AI responses - defaults to true */
|
|
13
13
|
stream?: boolean;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
getMaxInputTokens: () => number;
|
|
17
|
-
getLanguage: () => string | undefined;
|
|
18
|
-
getEnvironmentVars?: () => Record<string, string>;
|
|
14
|
+
/**Optional model override (e.g. for subagents) */
|
|
15
|
+
modelOverride?: string;
|
|
19
16
|
}
|
|
20
17
|
export declare class AIManager {
|
|
21
18
|
private container;
|
|
@@ -26,23 +23,22 @@ export declare class AIManager {
|
|
|
26
23
|
private systemPrompt?;
|
|
27
24
|
private subagentType?;
|
|
28
25
|
private stream;
|
|
29
|
-
private
|
|
30
|
-
private getModelConfigFn;
|
|
31
|
-
private getMaxInputTokensFn;
|
|
32
|
-
private getLanguageFn;
|
|
33
|
-
private getEnvironmentVarsFn?;
|
|
26
|
+
private modelOverride?;
|
|
34
27
|
constructor(container: Container, options: AIManagerOptions);
|
|
35
28
|
private get toolManager();
|
|
36
29
|
private get messageManager();
|
|
30
|
+
private get memoryService();
|
|
37
31
|
private get taskManager();
|
|
38
32
|
private get backgroundTaskManager();
|
|
39
33
|
private get hookManager();
|
|
40
34
|
private get reversionManager();
|
|
41
35
|
private get permissionManager();
|
|
36
|
+
private get configurationService();
|
|
42
37
|
getGatewayConfig(): GatewayConfig;
|
|
43
38
|
getModelConfig(): ModelConfig;
|
|
44
39
|
getMaxInputTokens(): number;
|
|
45
40
|
getLanguage(): string | undefined;
|
|
41
|
+
getAutoMemoryEnabled(): boolean;
|
|
46
42
|
private isCompressing;
|
|
47
43
|
private callbacks;
|
|
48
44
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aiManager.d.ts","sourceRoot":"","sources":["../../src/managers/aiManager.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"aiManager.d.ts","sourceRoot":"","sources":["../../src/managers/aiManager.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,KAAK,EAEN,MAAM,mBAAmB,CAAC;AAY3B,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAKlD,MAAM,WAAW,kBAAkB;IACjC,wBAAwB,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5D,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uEAAuE;IACvE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kDAAkD;IAClD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,SAAS;IAYlB,OAAO,CAAC,SAAS;IAXZ,SAAS,EAAE,OAAO,CAAS;IAClC,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,mBAAmB,CAAgC;IAC3D,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,aAAa,CAAC,CAAS;gBAIrB,SAAS,EAAE,SAAS,EAC5B,OAAO,EAAE,gBAAgB;IAU3B,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,KAAK,aAAa,GAIxB;IAED,OAAO,KAAK,WAAW,GAItB;IAED,OAAO,KAAK,qBAAqB,GAEhC;IAED,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,gBAAgB,GAM3B;IAED,OAAO,KAAK,iBAAiB,GAE5B;IAED,OAAO,KAAK,oBAAoB,GAE/B;IAGM,gBAAgB,IAAI,aAAa;IAIjC,cAAc,IAAI,WAAW;IA6B7B,iBAAiB,IAAI,MAAM;IAI3B,WAAW,IAAI,MAAM,GAAG,SAAS;IAIjC,oBAAoB,IAAI,OAAO;IAItC,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,SAAS,CAAqB;IAEtC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAsBvB,YAAY,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAItC,cAAc,IAAI,IAAI;IAuB7B,OAAO,CAAC,qBAAqB;YAsBf,8BAA8B;IAgFrC,gBAAgB,IAAI,OAAO;IAI3B,gBAAgB,CAAC,aAAa,EAAE,OAAO,GAAG,IAAI;IAOrD,OAAO,KAAK,eAAe,GAE1B;IAED,OAAO,KAAK,YAAY,GAEvB;IAEY,aAAa,CACxB,OAAO,GAAE;QACP,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,oEAAoE;QACpE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,iEAAiE;QACjE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;KACf,GACL,OAAO,CAAC,IAAI,CAAC;IAghBhB;;;;OAIG;YACW,gBAAgB;IAiE9B;;;OAGG;YACW,sBAAsB;IA6DpC;;OAEG;YACW,uBAAuB;CAwDtC"}
|
|
@@ -17,12 +17,7 @@ export class AIManager {
|
|
|
17
17
|
this.subagentType = options.subagentType; // Store subagent type
|
|
18
18
|
this.stream = options.stream ?? true; // Default to true if not specified
|
|
19
19
|
this.callbacks = options.callbacks ?? {};
|
|
20
|
-
|
|
21
|
-
this.getGatewayConfigFn = options.getGatewayConfig;
|
|
22
|
-
this.getModelConfigFn = options.getModelConfig;
|
|
23
|
-
this.getMaxInputTokensFn = options.getMaxInputTokens;
|
|
24
|
-
this.getLanguageFn = options.getLanguage;
|
|
25
|
-
this.getEnvironmentVarsFn = options.getEnvironmentVars;
|
|
20
|
+
this.modelOverride = options.modelOverride;
|
|
26
21
|
}
|
|
27
22
|
get toolManager() {
|
|
28
23
|
return this.container.get("ToolManager");
|
|
@@ -30,6 +25,9 @@ export class AIManager {
|
|
|
30
25
|
get messageManager() {
|
|
31
26
|
return this.container.get("MessageManager");
|
|
32
27
|
}
|
|
28
|
+
get memoryService() {
|
|
29
|
+
return this.container.get("MemoryService");
|
|
30
|
+
}
|
|
33
31
|
get taskManager() {
|
|
34
32
|
return this.container.get("TaskManager");
|
|
35
33
|
}
|
|
@@ -45,18 +43,37 @@ export class AIManager {
|
|
|
45
43
|
get permissionManager() {
|
|
46
44
|
return this.container.get("PermissionManager");
|
|
47
45
|
}
|
|
46
|
+
get configurationService() {
|
|
47
|
+
return this.container.get("ConfigurationService");
|
|
48
|
+
}
|
|
48
49
|
// Getter methods for accessing dynamic configuration
|
|
49
50
|
getGatewayConfig() {
|
|
50
|
-
return this.
|
|
51
|
+
return this.configurationService.resolveGatewayConfig();
|
|
51
52
|
}
|
|
52
53
|
getModelConfig() {
|
|
53
|
-
|
|
54
|
+
const permissionMode = this.container.has("PermissionMode")
|
|
55
|
+
? this.container.get("PermissionMode")
|
|
56
|
+
: undefined;
|
|
57
|
+
const parentModelConfig = this.configurationService.resolveModelConfig(undefined, undefined, undefined, permissionMode);
|
|
58
|
+
let modelToUse;
|
|
59
|
+
if (this.modelOverride) {
|
|
60
|
+
if (this.modelOverride === "fastModel") {
|
|
61
|
+
modelToUse = parentModelConfig.fastModel;
|
|
62
|
+
}
|
|
63
|
+
else if (this.modelOverride !== "inherit") {
|
|
64
|
+
modelToUse = this.modelOverride;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return this.configurationService.resolveModelConfig(modelToUse, undefined, undefined, permissionMode);
|
|
54
68
|
}
|
|
55
69
|
getMaxInputTokens() {
|
|
56
|
-
return this.
|
|
70
|
+
return this.configurationService.resolveMaxInputTokens();
|
|
57
71
|
}
|
|
58
72
|
getLanguage() {
|
|
59
|
-
return this.
|
|
73
|
+
return this.configurationService.resolveLanguage();
|
|
74
|
+
}
|
|
75
|
+
getAutoMemoryEnabled() {
|
|
76
|
+
return this.configurationService.resolveAutoMemoryEnabled();
|
|
60
77
|
}
|
|
61
78
|
/**
|
|
62
79
|
* Get filtered tool configuration based on tools list
|
|
@@ -172,6 +189,7 @@ export class AIManager {
|
|
|
172
189
|
}
|
|
173
190
|
catch (compressError) {
|
|
174
191
|
logger?.error("Failed to compress messages:", compressError);
|
|
192
|
+
this.messageManager.addErrorBlock(`Failed to compress conversation history: ${compressError instanceof Error ? compressError.message : String(compressError)}. You may encounter context limit issues.`);
|
|
175
193
|
}
|
|
176
194
|
finally {
|
|
177
195
|
this.setIsCompressing(false);
|
|
@@ -255,6 +273,12 @@ export class AIManager {
|
|
|
255
273
|
planModeOptions = { planFilePath, planExists };
|
|
256
274
|
}
|
|
257
275
|
}
|
|
276
|
+
let autoMemoryOptions;
|
|
277
|
+
if (this.getAutoMemoryEnabled()) {
|
|
278
|
+
const directory = this.memoryService.getAutoMemoryDirectory(this.workdir);
|
|
279
|
+
const content = await this.memoryService.getAutoMemoryContent(this.workdir);
|
|
280
|
+
autoMemoryOptions = { directory, content };
|
|
281
|
+
}
|
|
258
282
|
// Call AI service with streaming callbacks if enabled
|
|
259
283
|
const callAgentOptions = {
|
|
260
284
|
gatewayConfig: this.getGatewayConfig(),
|
|
@@ -271,6 +295,7 @@ export class AIManager {
|
|
|
271
295
|
language: this.getLanguage(),
|
|
272
296
|
isSubagent: !!this.subagentType,
|
|
273
297
|
planMode: planModeOptions,
|
|
298
|
+
autoMemory: autoMemoryOptions,
|
|
274
299
|
}), // Pass custom system prompt
|
|
275
300
|
maxTokens: maxTokens, // Pass max tokens override
|
|
276
301
|
};
|
|
@@ -605,7 +630,7 @@ export class AIManager {
|
|
|
605
630
|
cwd: this.workdir,
|
|
606
631
|
subagentType: this.subagentType, // Include subagent type in hook context
|
|
607
632
|
// Stop hooks don't need toolName, toolInput, toolResponse, or userPrompt
|
|
608
|
-
env: this.
|
|
633
|
+
env: this.configurationService.getEnvironmentVars(), // Include configuration environment variables
|
|
609
634
|
};
|
|
610
635
|
const results = await this.hookManager.executeHooks(hookName, context);
|
|
611
636
|
// Process hook results to handle exit codes and appropriate responses
|
|
@@ -654,7 +679,7 @@ export class AIManager {
|
|
|
654
679
|
cwd: this.workdir,
|
|
655
680
|
toolInput,
|
|
656
681
|
subagentType: this.subagentType, // Include subagent type in hook context
|
|
657
|
-
env: this.
|
|
682
|
+
env: this.configurationService.getEnvironmentVars(), // Include configuration environment variables
|
|
658
683
|
};
|
|
659
684
|
const results = await this.hookManager.executeHooks("PreToolUse", context);
|
|
660
685
|
// Process hook results to handle exit codes and determine if tool should be blocked
|
|
@@ -700,7 +725,7 @@ export class AIManager {
|
|
|
700
725
|
toolInput,
|
|
701
726
|
toolResponse,
|
|
702
727
|
subagentType: this.subagentType, // Include subagent type in hook context
|
|
703
|
-
env: this.
|
|
728
|
+
env: this.configurationService.getEnvironmentVars(), // Include configuration environment variables
|
|
704
729
|
};
|
|
705
730
|
const results = await this.hookManager.executeHooks("PostToolUse", context);
|
|
706
731
|
// Process hook results to handle exit codes and update tool results
|
|
@@ -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;
|
|
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"}
|
|
@@ -98,7 +98,21 @@ export class HookManager {
|
|
|
98
98
|
for (let commandIndex = 0; commandIndex < config.hooks.length; commandIndex++) {
|
|
99
99
|
const hookCommand = config.hooks[commandIndex];
|
|
100
100
|
try {
|
|
101
|
-
const
|
|
101
|
+
const options = hookCommand.timeout
|
|
102
|
+
? { timeout: hookCommand.timeout * 1000 }
|
|
103
|
+
: undefined;
|
|
104
|
+
if (hookCommand.async) {
|
|
105
|
+
// Execute async command without awaiting
|
|
106
|
+
executeCommand(hookCommand.command, context, options).catch((error) => {
|
|
107
|
+
const errorMessage = error instanceof Error
|
|
108
|
+
? error.message
|
|
109
|
+
: "Unknown execution error";
|
|
110
|
+
logger?.error(`[HookManager] Async hook command ${commandIndex + 1} failed: ${errorMessage}`);
|
|
111
|
+
});
|
|
112
|
+
// Async hooks are not included in results to prevent blocking
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
const result = await executeCommand(hookCommand.command, context, options);
|
|
102
116
|
results.push(result);
|
|
103
117
|
// Continue with next command even if this one fails
|
|
104
118
|
// This allows for non-critical hooks to fail without stopping the workflow
|
|
@@ -49,6 +49,7 @@ export declare class MessageManager {
|
|
|
49
49
|
private _usages;
|
|
50
50
|
constructor(container: Container, options: MessageManagerOptions);
|
|
51
51
|
private get memoryRuleManager();
|
|
52
|
+
private get memoryService();
|
|
52
53
|
getSessionId(): string;
|
|
53
54
|
getRootSessionId(): string;
|
|
54
55
|
getParentSessionId(): string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messageManager.d.ts","sourceRoot":"","sources":["../../src/managers/messageManager.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,iBAAiB,EACjB,KAAK,0BAA0B,EAEhC,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtE,OAAO,EAIL,WAAW,EAEZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,qCAAqC,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"messageManager.d.ts","sourceRoot":"","sources":["../../src/managers/messageManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,6 +26,13 @@ export class MessageManager {
|
|
|
26
26
|
? this.container.get("MemoryRuleManager")
|
|
27
27
|
: undefined;
|
|
28
28
|
}
|
|
29
|
+
get memoryService() {
|
|
30
|
+
const service = this.container.get("MemoryService");
|
|
31
|
+
if (!service) {
|
|
32
|
+
throw new Error("MemoryService not found in container");
|
|
33
|
+
}
|
|
34
|
+
return service;
|
|
35
|
+
}
|
|
29
36
|
// Getter methods
|
|
30
37
|
getSessionId() {
|
|
31
38
|
return this.sessionId;
|
|
@@ -64,8 +71,7 @@ export class MessageManager {
|
|
|
64
71
|
* Get combined memory content (project memory + user memory + modular rules)
|
|
65
72
|
*/
|
|
66
73
|
async getCombinedMemory() {
|
|
67
|
-
|
|
68
|
-
let combined = await memory.getCombinedMemoryContent(this.workdir);
|
|
74
|
+
let combined = await this.memoryService.getCombinedMemoryContent(this.workdir);
|
|
69
75
|
if (this.memoryRuleManager) {
|
|
70
76
|
const filesInContext = this.getFilesInContext();
|
|
71
77
|
const activeRules = this.memoryRuleManager.getActiveRules(filesInContext);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { SubagentConfiguration } from "../utils/subagentParser.js";
|
|
2
|
-
import type { Message,
|
|
2
|
+
import type { Message, Usage } from "../types/index.js";
|
|
3
3
|
import { AIManager } from "./aiManager.js";
|
|
4
4
|
import { MessageManager } from "./messageManager.js";
|
|
5
5
|
import { ToolManager } from "./toolManager.js";
|
|
@@ -40,11 +40,6 @@ export interface SubagentInstance {
|
|
|
40
40
|
export interface SubagentManagerOptions {
|
|
41
41
|
workdir: string;
|
|
42
42
|
callbacks?: SubagentManagerCallbacks;
|
|
43
|
-
getGatewayConfig: () => GatewayConfig;
|
|
44
|
-
getModelConfig: () => ModelConfig;
|
|
45
|
-
getMaxInputTokens: () => number;
|
|
46
|
-
getLanguage: () => string | undefined;
|
|
47
|
-
getEnvironmentVars?: () => Record<string, string>;
|
|
48
43
|
onUsageAdded?: (usage: Usage) => void;
|
|
49
44
|
}
|
|
50
45
|
export declare class SubagentManager {
|
|
@@ -52,14 +47,10 @@ export declare class SubagentManager {
|
|
|
52
47
|
private cachedConfigurations;
|
|
53
48
|
private workdir;
|
|
54
49
|
private callbacks?;
|
|
55
|
-
private getGatewayConfig;
|
|
56
|
-
private getModelConfig;
|
|
57
|
-
private getMaxInputTokens;
|
|
58
|
-
private getLanguage;
|
|
59
|
-
private getEnvironmentVars?;
|
|
60
50
|
private onUsageAdded?;
|
|
61
51
|
private container;
|
|
62
52
|
constructor(container: Container, options: SubagentManagerOptions);
|
|
53
|
+
private get configurationService();
|
|
63
54
|
/**
|
|
64
55
|
* Initialize the SubagentManager by loading and caching configurations
|
|
65
56
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagentManager.d.ts","sourceRoot":"","sources":["../../src/managers/subagentManager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"subagentManager.d.ts","sourceRoot":"","sources":["../../src/managers/subagentManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,13 +12,11 @@ export class SubagentManager {
|
|
|
12
12
|
this.container = container;
|
|
13
13
|
this.workdir = options.workdir;
|
|
14
14
|
this.callbacks = options.callbacks; // Store SubagentManagerCallbacks
|
|
15
|
-
this.getGatewayConfig = options.getGatewayConfig;
|
|
16
|
-
this.getModelConfig = options.getModelConfig;
|
|
17
|
-
this.getMaxInputTokens = options.getMaxInputTokens;
|
|
18
|
-
this.getLanguage = options.getLanguage;
|
|
19
|
-
this.getEnvironmentVars = options.getEnvironmentVars;
|
|
20
15
|
this.onUsageAdded = options.onUsageAdded;
|
|
21
16
|
}
|
|
17
|
+
get configurationService() {
|
|
18
|
+
return this.container.get("ConfigurationService");
|
|
19
|
+
}
|
|
22
20
|
/**
|
|
23
21
|
* Initialize the SubagentManager by loading and caching configurations
|
|
24
22
|
*/
|
|
@@ -100,35 +98,7 @@ export class SubagentManager {
|
|
|
100
98
|
workdir: this.workdir,
|
|
101
99
|
systemPrompt: configuration.systemPrompt,
|
|
102
100
|
subagentType: parameters.subagent_type, // Pass subagent type for hook context
|
|
103
|
-
|
|
104
|
-
getModelConfig: () => {
|
|
105
|
-
// Determine model dynamically each time
|
|
106
|
-
const parentModelConfig = this.getModelConfig();
|
|
107
|
-
let modelToUse;
|
|
108
|
-
if (parameters.model) {
|
|
109
|
-
// Use model override from parameters if provided
|
|
110
|
-
modelToUse = parameters.model;
|
|
111
|
-
}
|
|
112
|
-
else if (!configuration.model || configuration.model === "inherit") {
|
|
113
|
-
// Use parent's model for "inherit" or undefined
|
|
114
|
-
modelToUse = parentModelConfig.model;
|
|
115
|
-
}
|
|
116
|
-
else if (configuration.model === "fastModel") {
|
|
117
|
-
// Use parent's fastModel for special "fastModel" value
|
|
118
|
-
modelToUse = parentModelConfig.fastModel;
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
// Use specific model name
|
|
122
|
-
modelToUse = configuration.model;
|
|
123
|
-
}
|
|
124
|
-
return {
|
|
125
|
-
...parentModelConfig,
|
|
126
|
-
model: modelToUse,
|
|
127
|
-
};
|
|
128
|
-
},
|
|
129
|
-
getMaxInputTokens: this.getMaxInputTokens,
|
|
130
|
-
getLanguage: this.getLanguage,
|
|
131
|
-
getEnvironmentVars: this.getEnvironmentVars,
|
|
101
|
+
modelOverride: parameters.model || configuration.model, // Pass model override
|
|
132
102
|
callbacks: {
|
|
133
103
|
onUsageAdded: this.onUsageAdded,
|
|
134
104
|
},
|
|
@@ -284,27 +254,8 @@ export class SubagentManager {
|
|
|
284
254
|
}
|
|
285
255
|
// Execute the AI request with tool restrictions
|
|
286
256
|
// The AIManager will handle abort signals through its own abort controllers
|
|
287
|
-
// Resolve model name for sendAIMessage
|
|
288
|
-
let resolvedModel;
|
|
289
|
-
if (instance.model) {
|
|
290
|
-
resolvedModel = instance.model;
|
|
291
|
-
}
|
|
292
|
-
else if (instance.configuration.model &&
|
|
293
|
-
instance.configuration.model !== "inherit") {
|
|
294
|
-
if (instance.configuration.model === "fastModel") {
|
|
295
|
-
// Use parent's fastModel for special "fastModel" value
|
|
296
|
-
const parentModelConfig = this.getModelConfig();
|
|
297
|
-
resolvedModel = parentModelConfig.fastModel;
|
|
298
|
-
}
|
|
299
|
-
else {
|
|
300
|
-
// Use specific model name
|
|
301
|
-
resolvedModel = instance.configuration.model;
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
// For "inherit" or undefined, resolvedModel remains undefined (uses AIManager default)
|
|
305
257
|
const executeAI = instance.aiManager.sendAIMessage({
|
|
306
258
|
tools: enabledTools,
|
|
307
|
-
model: resolvedModel,
|
|
308
259
|
});
|
|
309
260
|
// If we have an abort signal, race against it using utilities to prevent listener accumulation
|
|
310
261
|
if (abortSignal && !instance.backgroundTaskId) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autoMemory.d.ts","sourceRoot":"","sources":["../../src/prompts/autoMemory.ts"],"names":[],"mappings":"AAAA,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAgC/D"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export function buildAutoMemoryPrompt(memoryDir) {
|
|
2
|
+
return `
|
|
3
|
+
# auto memory
|
|
4
|
+
|
|
5
|
+
You have a persistent auto memory directory at \`${memoryDir}\`. Its contents persist across conversations.
|
|
6
|
+
|
|
7
|
+
As you work, consult your memory files to build on previous experience.
|
|
8
|
+
|
|
9
|
+
## How to save memories:
|
|
10
|
+
- Organize memory semantically by topic, not chronologically
|
|
11
|
+
- Use the Write and Edit tools to update your memory files
|
|
12
|
+
- \`MEMORY.md\` is always loaded into your conversation context — lines after 200 will be truncated, so keep it concise
|
|
13
|
+
- Create separate topic files (e.g., \`debugging.md\`, \`patterns.md\`) for detailed notes and link to them from MEMORY.md
|
|
14
|
+
- Update or remove memories that turn out to be wrong or outdated
|
|
15
|
+
- Do not write duplicate memories. First check if there is an existing memory you can update before writing a new one.
|
|
16
|
+
|
|
17
|
+
## What to save:
|
|
18
|
+
- Stable patterns and conventions confirmed across multiple interactions
|
|
19
|
+
- Key architectural decisions, important file paths, and project structure
|
|
20
|
+
- User preferences for workflow, tools, and communication style
|
|
21
|
+
- Solutions to recurring problems and debugging insights
|
|
22
|
+
|
|
23
|
+
## What NOT to save:
|
|
24
|
+
- Session-specific context (current task details, in-progress work, temporary state)
|
|
25
|
+
- Information that might be incomplete — verify against project docs before writing
|
|
26
|
+
- Anything that duplicates or contradicts existing AGENTS.md instructions
|
|
27
|
+
- Speculative or unverified conclusions from reading a single file
|
|
28
|
+
|
|
29
|
+
## Explicit user requests:
|
|
30
|
+
- When the user asks you to remember something across sessions (e.g., "always use bun", "never auto-commit"), save it — no need to wait for multiple interactions
|
|
31
|
+
- When the user asks to forget or stop remembering something, find and remove the relevant entries from your memory files
|
|
32
|
+
`;
|
|
33
|
+
}
|
package/dist/prompts/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAmB/C,eAAO,MAAM,kBAAkB,g9DAU+J,CAAC;AAE/L,eAAO,MAAM,WAAW,qvBAIqH,CAAC;AAE9I,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,OAAO,EACnB,UAAU,GAAE,OAAe,GAC1B,MAAM,CAmFR;AAED,eAAO,MAAM,qBAAqB,g9DAAqB,CAAC;AAExD,eAAO,MAAM,2BAA2B,igBAWO,CAAC;AAEhD,eAAO,MAAM,6BAA6B,izCAeK,CAAC;AAEhD,eAAO,MAAM,8BAA8B,mzEAmCuC,CAAC;AAEnF,eAAO,MAAM,2BAA2B,q3EAgDyG,CAAC;AAElJ,eAAO,MAAM,WAAW,kkDAoBjB,CAAC;AAER,eAAO,MAAM,+BAA+B,20CAsBG,CAAC;AAEhD,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,KAAK,EAAE,UAAU,EAAE,EACnB,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE;QACT,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,UAAU,CAAC,EAAE;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACE,GACL,MAAM,CA6CR"}
|
package/dist/prompts/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as os from "node:os";
|
|
2
2
|
import { isGitRepository } from "../utils/gitUtils.js";
|
|
3
|
+
import { buildAutoMemoryPrompt } from "./autoMemory.js";
|
|
3
4
|
import { EXPLORE_SUBAGENT_TYPE, PLAN_SUBAGENT_TYPE, } from "../constants/subagents.js";
|
|
4
5
|
import { ASK_USER_QUESTION_TOOL_NAME, BASH_TOOL_NAME, EDIT_TOOL_NAME, GLOB_TOOL_NAME, GREP_TOOL_NAME, READ_TOOL_NAME, WRITE_TOOL_NAME, EXIT_PLAN_MODE_TOOL_NAME, AGENT_TOOL_NAME, } from "../constants/tools.js";
|
|
5
6
|
export const BASE_SYSTEM_PROMPT = `You are an interactive CLI tool that helps users with software engineering tasks. Use the instructions below and the tools available to you to assist the user.
|
|
@@ -286,6 +287,12 @@ Today's date: ${today}
|
|
|
286
287
|
</env>
|
|
287
288
|
`;
|
|
288
289
|
}
|
|
290
|
+
if (options.autoMemory) {
|
|
291
|
+
prompt += `\n\n${buildAutoMemoryPrompt(options.autoMemory.directory)}`;
|
|
292
|
+
if (options.autoMemory.content.trim()) {
|
|
293
|
+
prompt += `\n\n## MEMORY.md\n\n${options.autoMemory.content}`;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
289
296
|
if (options.memory && options.memory.trim()) {
|
|
290
297
|
prompt += `\n## Memory Context\n\nThe following is important context and memory from previous interactions:\n\n${options.memory}`;
|
|
291
298
|
}
|
|
@@ -461,7 +461,7 @@ export async function compressMessages(options) {
|
|
|
461
461
|
// Get model configuration - use injected agent model
|
|
462
462
|
const openaiModelConfig = getModelConfig(options.model || modelConfig.model, {
|
|
463
463
|
temperature: 0.1,
|
|
464
|
-
max_tokens:
|
|
464
|
+
max_tokens: 8192,
|
|
465
465
|
});
|
|
466
466
|
try {
|
|
467
467
|
const response = await openai.chat.completions.create({
|
|
@@ -480,8 +480,10 @@ export async function compressMessages(options) {
|
|
|
480
480
|
}, {
|
|
481
481
|
signal: abortSignal,
|
|
482
482
|
});
|
|
483
|
-
const content = response.choices[0]?.message?.content?.trim()
|
|
484
|
-
|
|
483
|
+
const content = response.choices[0]?.message?.content?.trim();
|
|
484
|
+
if (!content) {
|
|
485
|
+
throw new Error("Failed to compress conversation history: Empty response from AI");
|
|
486
|
+
}
|
|
485
487
|
const usage = response.usage
|
|
486
488
|
? {
|
|
487
489
|
prompt_tokens: response.usage.prompt_tokens,
|
|
@@ -500,9 +502,6 @@ export async function compressMessages(options) {
|
|
|
500
502
|
throw new Error("Compression request was aborted");
|
|
501
503
|
}
|
|
502
504
|
logger.error("Failed to compress messages:", error);
|
|
503
|
-
|
|
504
|
-
content: "Failed to compress conversation history",
|
|
505
|
-
usage: undefined,
|
|
506
|
-
};
|
|
505
|
+
throw error;
|
|
507
506
|
}
|
|
508
507
|
}
|