wave-agent-sdk 0.6.5 → 0.7.1
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 +8 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +49 -240
- package/dist/constants/tools.d.ts +0 -2
- package/dist/constants/tools.d.ts.map +1 -1
- package/dist/constants/tools.js +0 -2
- package/dist/core/plugin.d.ts +86 -0
- package/dist/core/plugin.d.ts.map +1 -0
- package/dist/core/plugin.js +164 -0
- package/dist/core/session.d.ts +3 -0
- package/dist/core/session.d.ts.map +1 -0
- package/dist/core/session.js +1 -0
- package/dist/index.d.ts +2 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -10
- package/dist/managers/MemoryRuleManager.d.ts +3 -1
- package/dist/managers/MemoryRuleManager.d.ts.map +1 -1
- package/dist/managers/MemoryRuleManager.js +2 -1
- package/dist/managers/aiManager.d.ts +13 -23
- package/dist/managers/aiManager.d.ts.map +1 -1
- package/dist/managers/aiManager.js +60 -32
- package/dist/managers/backgroundTaskManager.d.ts +3 -1
- package/dist/managers/backgroundTaskManager.d.ts.map +1 -1
- package/dist/managers/backgroundTaskManager.js +2 -1
- package/dist/managers/bashManager.d.ts +4 -4
- package/dist/managers/bashManager.d.ts.map +1 -1
- package/dist/managers/bashManager.js +5 -2
- package/dist/managers/foregroundTaskManager.d.ts +3 -0
- package/dist/managers/foregroundTaskManager.d.ts.map +1 -1
- package/dist/managers/foregroundTaskManager.js +2 -1
- package/dist/managers/hookManager.d.ts +3 -3
- package/dist/managers/hookManager.d.ts.map +1 -1
- package/dist/managers/hookManager.js +20 -19
- package/dist/managers/liveConfigManager.d.ts +6 -13
- package/dist/managers/liveConfigManager.d.ts.map +1 -1
- package/dist/managers/liveConfigManager.js +50 -45
- package/dist/managers/lspManager.d.ts +4 -5
- package/dist/managers/lspManager.d.ts.map +1 -1
- package/dist/managers/lspManager.js +13 -12
- package/dist/managers/mcpManager.d.ts +3 -2
- package/dist/managers/mcpManager.d.ts.map +1 -1
- package/dist/managers/mcpManager.js +16 -15
- package/dist/managers/messageManager.d.ts +5 -7
- package/dist/managers/messageManager.d.ts.map +1 -1
- package/dist/managers/messageManager.js +12 -7
- package/dist/managers/permissionManager.d.ts +6 -4
- package/dist/managers/permissionManager.d.ts.map +1 -1
- package/dist/managers/permissionManager.js +39 -63
- package/dist/managers/planManager.d.ts +4 -6
- package/dist/managers/planManager.d.ts.map +1 -1
- package/dist/managers/planManager.js +18 -4
- package/dist/managers/pluginManager.d.ts +10 -22
- package/dist/managers/pluginManager.d.ts.map +1 -1
- package/dist/managers/pluginManager.js +27 -14
- package/dist/managers/reversionManager.d.ts +4 -3
- package/dist/managers/reversionManager.d.ts.map +1 -1
- package/dist/managers/reversionManager.js +5 -2
- package/dist/managers/skillManager.d.ts +3 -2
- package/dist/managers/skillManager.d.ts.map +1 -1
- package/dist/managers/skillManager.js +15 -14
- package/dist/managers/slashCommandManager.d.ts +9 -16
- package/dist/managers/slashCommandManager.d.ts.map +1 -1
- package/dist/managers/slashCommandManager.js +21 -10
- package/dist/managers/subagentManager.d.ts +7 -17
- package/dist/managers/subagentManager.d.ts.map +1 -1
- package/dist/managers/subagentManager.js +41 -34
- package/dist/managers/toolManager.d.ts +15 -38
- package/dist/managers/toolManager.d.ts.map +1 -1
- package/dist/managers/toolManager.js +67 -56
- package/dist/prompts/index.d.ts +6 -2
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +8 -4
- package/dist/services/MarketplaceService.d.ts.map +1 -1
- package/dist/services/MarketplaceService.js +13 -0
- package/dist/services/aiService.d.ts +4 -0
- package/dist/services/aiService.d.ts.map +1 -1
- package/dist/services/aiService.js +47 -7
- package/dist/services/configurationService.d.ts.map +1 -1
- package/dist/services/configurationService.js +30 -11
- package/dist/services/taskManager.d.ts +3 -1
- package/dist/services/taskManager.d.ts.map +1 -1
- package/dist/services/taskManager.js +3 -2
- package/dist/tools/bashTool.d.ts.map +1 -1
- package/dist/tools/bashTool.js +19 -4
- package/dist/tools/editTool.d.ts.map +1 -1
- package/dist/tools/editTool.js +16 -4
- package/dist/tools/readTool.d.ts.map +1 -1
- package/dist/tools/readTool.js +2 -2
- package/dist/tools/skillTool.d.ts +2 -4
- package/dist/tools/skillTool.d.ts.map +1 -1
- package/dist/tools/skillTool.js +61 -61
- package/dist/tools/taskOutputTool.d.ts.map +1 -1
- package/dist/tools/taskOutputTool.js +3 -2
- package/dist/tools/taskTool.d.ts +2 -4
- package/dist/tools/taskTool.d.ts.map +1 -1
- package/dist/tools/taskTool.js +192 -187
- package/dist/tools/types.d.ts +12 -1
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/writeTool.d.ts.map +1 -1
- package/dist/tools/writeTool.js +5 -2
- package/dist/types/core.d.ts +2 -0
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/marketplace.d.ts +8 -0
- package/dist/types/marketplace.d.ts.map +1 -1
- package/dist/types/messaging.d.ts +1 -0
- package/dist/types/messaging.d.ts.map +1 -1
- package/dist/types/permissions.d.ts +3 -1
- package/dist/types/permissions.d.ts.map +1 -1
- package/dist/types/permissions.js +1 -3
- package/dist/types/skills.d.ts +0 -2
- package/dist/types/skills.d.ts.map +1 -1
- package/dist/types/tools.d.ts +0 -15
- package/dist/types/tools.d.ts.map +1 -1
- package/dist/utils/container.d.ts +31 -0
- package/dist/utils/container.d.ts.map +1 -0
- package/dist/utils/container.js +79 -0
- package/dist/utils/containerSetup.d.ts +26 -0
- package/dist/utils/containerSetup.d.ts.map +1 -0
- package/dist/utils/containerSetup.js +187 -0
- package/dist/utils/editUtils.d.ts +0 -3
- package/dist/utils/editUtils.d.ts.map +1 -1
- package/dist/utils/editUtils.js +4 -3
- package/dist/utils/hookMatcher.d.ts +1 -1
- package/dist/utils/hookMatcher.d.ts.map +1 -1
- package/dist/utils/hookMatcher.js +2 -2
- package/dist/utils/messageOperations.d.ts +2 -1
- package/dist/utils/messageOperations.d.ts.map +1 -1
- package/dist/utils/messageOperations.js +4 -1
- package/dist/utils/openaiClient.js +2 -2
- package/dist/utils/stringUtils.d.ts +6 -0
- package/dist/utils/stringUtils.d.ts.map +1 -1
- package/dist/utils/stringUtils.js +8 -0
- package/package.json +1 -1
- package/src/agent.ts +60 -282
- package/src/constants/tools.ts +0 -2
- package/src/core/plugin.ts +224 -0
- package/src/core/session.ts +6 -0
- package/src/index.ts +2 -11
- package/src/managers/MemoryRuleManager.ts +6 -1
- package/src/managers/aiManager.ts +84 -58
- package/src/managers/backgroundTaskManager.ts +5 -1
- package/src/managers/bashManager.ts +9 -4
- package/src/managers/foregroundTaskManager.ts +3 -0
- package/src/managers/hookManager.ts +21 -23
- package/src/managers/liveConfigManager.ts +57 -53
- package/src/managers/lspManager.ts +14 -19
- package/src/managers/mcpManager.ts +20 -20
- package/src/managers/messageManager.ts +19 -12
- package/src/managers/permissionManager.ts +45 -70
- package/src/managers/planManager.ts +26 -7
- package/src/managers/pluginManager.ts +37 -33
- package/src/managers/reversionManager.ts +5 -3
- package/src/managers/skillManager.ts +19 -20
- package/src/managers/slashCommandManager.ts +30 -25
- package/src/managers/subagentManager.ts +53 -53
- package/src/managers/toolManager.ts +93 -90
- package/src/prompts/index.ts +13 -5
- package/src/services/MarketplaceService.ts +13 -0
- package/src/services/aiService.ts +61 -15
- package/src/services/configurationService.ts +34 -13
- package/src/services/taskManager.ts +6 -2
- package/src/tools/bashTool.ts +19 -4
- package/src/tools/editTool.ts +17 -4
- package/src/tools/readTool.ts +2 -2
- package/src/tools/skillTool.ts +75 -71
- package/src/tools/taskOutputTool.ts +3 -2
- package/src/tools/taskTool.ts +224 -225
- package/src/tools/types.ts +14 -1
- package/src/tools/writeTool.ts +5 -2
- package/src/types/core.ts +2 -0
- package/src/types/marketplace.ts +9 -0
- package/src/types/messaging.ts +1 -0
- package/src/types/permissions.ts +2 -4
- package/src/types/skills.ts +0 -3
- package/src/types/tools.ts +0 -17
- package/src/utils/container.ts +92 -0
- package/src/utils/containerSetup.ts +279 -0
- package/src/utils/editUtils.ts +4 -3
- package/src/utils/hookMatcher.ts +2 -2
- package/src/utils/messageOperations.ts +5 -0
- package/src/utils/openaiClient.ts +2 -2
- package/src/utils/stringUtils.ts +9 -0
- package/dist/tools/deleteFileTool.d.ts +0 -6
- package/dist/tools/deleteFileTool.d.ts.map +0 -1
- package/dist/tools/deleteFileTool.js +0 -100
- package/dist/tools/multiEditTool.d.ts +0 -6
- package/dist/tools/multiEditTool.d.ts.map +0 -1
- package/dist/tools/multiEditTool.js +0 -246
- package/src/tools/deleteFileTool.ts +0 -127
- package/src/tools/multiEditTool.ts +0 -306
package/dist/types/tools.d.ts
CHANGED
|
@@ -28,14 +28,6 @@ export interface WriteToolParameters {
|
|
|
28
28
|
file_path: string;
|
|
29
29
|
content: string;
|
|
30
30
|
}
|
|
31
|
-
/**
|
|
32
|
-
* Parameters for a single edit operation in the Edit tool
|
|
33
|
-
*/
|
|
34
|
-
export interface EditOperation {
|
|
35
|
-
old_string: string;
|
|
36
|
-
new_string: string;
|
|
37
|
-
replace_all?: boolean;
|
|
38
|
-
}
|
|
39
31
|
/**
|
|
40
32
|
* Parameters for the Edit tool
|
|
41
33
|
*/
|
|
@@ -45,11 +37,4 @@ export interface EditToolParameters {
|
|
|
45
37
|
new_string: string;
|
|
46
38
|
replace_all?: boolean;
|
|
47
39
|
}
|
|
48
|
-
/**
|
|
49
|
-
* Parameters for the MultiEdit tool
|
|
50
|
-
*/
|
|
51
|
-
export interface MultiEditToolParameters {
|
|
52
|
-
file_path: string;
|
|
53
|
-
edits: EditOperation[];
|
|
54
|
-
}
|
|
55
40
|
//# sourceMappingURL=tools.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/types/tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/types/tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A simple Dependency Injection container to manage late-binding dependencies
|
|
3
|
+
* and resolve circular references.
|
|
4
|
+
*/
|
|
5
|
+
export declare class Container {
|
|
6
|
+
private services;
|
|
7
|
+
private factories;
|
|
8
|
+
private parent?;
|
|
9
|
+
constructor(parent?: Container);
|
|
10
|
+
/**
|
|
11
|
+
* Create a child container that inherits from this container
|
|
12
|
+
*/
|
|
13
|
+
createChild(): Container;
|
|
14
|
+
/**
|
|
15
|
+
* Register a singleton instance
|
|
16
|
+
*/
|
|
17
|
+
register<T>(token: string, instance: T): void;
|
|
18
|
+
/**
|
|
19
|
+
* Register a factory function for lazy resolution
|
|
20
|
+
*/
|
|
21
|
+
provide<T>(token: string, factory: () => T): void;
|
|
22
|
+
/**
|
|
23
|
+
* Resolve a service by token
|
|
24
|
+
*/
|
|
25
|
+
get<T>(token: string): T | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* Check if a service exists
|
|
28
|
+
*/
|
|
29
|
+
has(token: string): boolean;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=container.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/utils/container.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,SAAS,CAAoC;IACrD,OAAO,CAAC,MAAM,CAAC,CAAY;gBAEf,MAAM,CAAC,EAAE,SAAS;IAI9B;;OAEG;IACH,WAAW,IAAI,SAAS;IAIxB;;OAEG;IACH,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI;IAI7C;;OAEG;IACH,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,IAAI;IAIjD;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAmBpC;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAO5B"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A simple Dependency Injection container to manage late-binding dependencies
|
|
3
|
+
* and resolve circular references.
|
|
4
|
+
*/
|
|
5
|
+
export class Container {
|
|
6
|
+
constructor(parent) {
|
|
7
|
+
this.services = new Map();
|
|
8
|
+
this.factories = new Map();
|
|
9
|
+
this.parent = parent;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Create a child container that inherits from this container
|
|
13
|
+
*/
|
|
14
|
+
createChild() {
|
|
15
|
+
return new Container(this);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Register a singleton instance
|
|
19
|
+
*/
|
|
20
|
+
register(token, instance) {
|
|
21
|
+
this.services.set(token, instance);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Register a factory function for lazy resolution
|
|
25
|
+
*/
|
|
26
|
+
provide(token, factory) {
|
|
27
|
+
this.factories.set(token, factory);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Resolve a service by token
|
|
31
|
+
*/
|
|
32
|
+
get(token) {
|
|
33
|
+
if (this.services.has(token)) {
|
|
34
|
+
return this.services.get(token);
|
|
35
|
+
}
|
|
36
|
+
const factory = this.factories.get(token);
|
|
37
|
+
if (factory) {
|
|
38
|
+
const instance = factory();
|
|
39
|
+
this.services.set(token, instance);
|
|
40
|
+
return instance;
|
|
41
|
+
}
|
|
42
|
+
if (this.parent) {
|
|
43
|
+
return this.parent.get(token);
|
|
44
|
+
}
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Check if a service exists
|
|
49
|
+
*/
|
|
50
|
+
has(token) {
|
|
51
|
+
return (this.services.has(token) ||
|
|
52
|
+
this.factories.has(token) ||
|
|
53
|
+
(this.parent ? this.parent.has(token) : false));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// Example usage for ToolManager:
|
|
57
|
+
/*
|
|
58
|
+
const container = new Container();
|
|
59
|
+
|
|
60
|
+
// 1. Provide managers lazily
|
|
61
|
+
container.provide('SubagentManager', () => new SubagentManager(...));
|
|
62
|
+
container.provide('SkillManager', () => new SkillManager(...));
|
|
63
|
+
|
|
64
|
+
// 2. ToolManager can now resolve them only when needed (e.g., in execute)
|
|
65
|
+
class ToolManager {
|
|
66
|
+
constructor(private container: Container) {}
|
|
67
|
+
|
|
68
|
+
async execute(name: string, args: any, context: any) {
|
|
69
|
+
const enhancedContext = {
|
|
70
|
+
...context,
|
|
71
|
+
subagentManager: this.container.has('SubagentManager')
|
|
72
|
+
? this.container.get('SubagentManager')
|
|
73
|
+
: undefined,
|
|
74
|
+
// ...
|
|
75
|
+
};
|
|
76
|
+
// ...
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
*/
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Container } from "./container.js";
|
|
2
|
+
import { ConfigurationService } from "../services/configurationService.js";
|
|
3
|
+
import type { AgentOptions } from "../agent.js";
|
|
4
|
+
import type { PermissionMode, Usage, Task, BackgroundTask } from "../types/index.js";
|
|
5
|
+
import type { GatewayConfig, ModelConfig } from "../types/config.js";
|
|
6
|
+
export interface AgentContainerSetupOptions {
|
|
7
|
+
options: AgentOptions;
|
|
8
|
+
workdir: string;
|
|
9
|
+
configurationService: ConfigurationService;
|
|
10
|
+
systemPrompt?: string;
|
|
11
|
+
stream: boolean;
|
|
12
|
+
onSessionIdChange: (sessionId: string) => void;
|
|
13
|
+
onTasksChange: (tasks: BackgroundTask[]) => void;
|
|
14
|
+
onSessionTasksChange: (tasks: Task[]) => void;
|
|
15
|
+
onPermissionModeChange: (mode: PermissionMode) => void;
|
|
16
|
+
handlePlanModeTransition: (mode: PermissionMode) => void;
|
|
17
|
+
setPermissionMode: (mode: PermissionMode) => void;
|
|
18
|
+
addPermissionRule: (rule: string) => Promise<void>;
|
|
19
|
+
addUsage: (usage: Usage) => void;
|
|
20
|
+
getGatewayConfig: () => GatewayConfig;
|
|
21
|
+
getModelConfig: () => ModelConfig;
|
|
22
|
+
getMaxInputTokens: () => number;
|
|
23
|
+
getLanguage: () => string | undefined;
|
|
24
|
+
}
|
|
25
|
+
export declare function setupAgentContainer(setupOptions: AgentContainerSetupOptions): Container;
|
|
26
|
+
//# sourceMappingURL=containerSetup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"containerSetup.d.ts","sourceRoot":"","sources":["../../src/utils/containerSetup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAoB3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EACV,cAAc,EACd,KAAK,EACL,IAAI,EACJ,cAAc,EAEf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAIrE,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;IAGhB,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,aAAa,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;IACjD,oBAAoB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IAC9C,sBAAsB,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IACvD,wBAAwB,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IACzD,iBAAiB,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IAClD,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAGjC,gBAAgB,EAAE,MAAM,aAAa,CAAC;IACtC,cAAc,EAAE,MAAM,WAAW,CAAC;IAClC,iBAAiB,EAAE,MAAM,MAAM,CAAC;IAChC,WAAW,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CACvC;AAED,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,0BAA0B,GACvC,SAAS,CAyNX"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import * as fs from "fs/promises";
|
|
2
|
+
import { Container } from "./container.js";
|
|
3
|
+
import { ForegroundTaskManager } from "../managers/foregroundTaskManager.js";
|
|
4
|
+
import { BackgroundTaskManager } from "../managers/backgroundTaskManager.js";
|
|
5
|
+
import { TaskManager } from "../services/taskManager.js";
|
|
6
|
+
import { MessageManager } from "../managers/messageManager.js";
|
|
7
|
+
import { AIManager } from "../managers/aiManager.js";
|
|
8
|
+
import { ToolManager } from "../managers/toolManager.js";
|
|
9
|
+
import { McpManager } from "../managers/mcpManager.js";
|
|
10
|
+
import { LspManager } from "../managers/lspManager.js";
|
|
11
|
+
import { PermissionManager } from "../managers/permissionManager.js";
|
|
12
|
+
import { PlanManager } from "../managers/planManager.js";
|
|
13
|
+
import { HookManager } from "../managers/hookManager.js";
|
|
14
|
+
import { SkillManager } from "../managers/skillManager.js";
|
|
15
|
+
import { SlashCommandManager } from "../managers/slashCommandManager.js";
|
|
16
|
+
import { PluginManager } from "../managers/pluginManager.js";
|
|
17
|
+
import { BashManager } from "../managers/bashManager.js";
|
|
18
|
+
import { MemoryRuleManager } from "../managers/MemoryRuleManager.js";
|
|
19
|
+
import { ReversionManager } from "../managers/reversionManager.js";
|
|
20
|
+
import { SubagentManager } from "../managers/subagentManager.js";
|
|
21
|
+
import { LiveConfigManager } from "../managers/liveConfigManager.js";
|
|
22
|
+
import { ReversionService } from "../services/reversionService.js";
|
|
23
|
+
import { logger } from "./globalLogger.js";
|
|
24
|
+
export function setupAgentContainer(setupOptions) {
|
|
25
|
+
const { options, workdir, configurationService, systemPrompt, stream, onSessionIdChange, onTasksChange, onSessionTasksChange, onPermissionModeChange, handlePlanModeTransition, setPermissionMode, addPermissionRule, addUsage, getGatewayConfig, getModelConfig, getMaxInputTokens, getLanguage, } = setupOptions;
|
|
26
|
+
const callbacks = options.callbacks || {};
|
|
27
|
+
const container = new Container();
|
|
28
|
+
const foregroundTaskManager = new ForegroundTaskManager(container);
|
|
29
|
+
container.register("ForegroundTaskManager", foregroundTaskManager);
|
|
30
|
+
container.register("ConfigurationService", configurationService);
|
|
31
|
+
const memoryRuleManager = new MemoryRuleManager(container, { workdir });
|
|
32
|
+
container.register("MemoryRuleManager", memoryRuleManager);
|
|
33
|
+
const messageManager = new MessageManager(container, {
|
|
34
|
+
callbacks: {
|
|
35
|
+
...callbacks,
|
|
36
|
+
onSessionIdChange: (sessionId) => {
|
|
37
|
+
onSessionIdChange(sessionId);
|
|
38
|
+
callbacks.onSessionIdChange?.(sessionId);
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
workdir,
|
|
42
|
+
});
|
|
43
|
+
container.register("MessageManager", messageManager);
|
|
44
|
+
const resolvedTaskListId = configurationService.getEnvironmentVars().WAVE_TASK_LIST_ID ||
|
|
45
|
+
process.env.WAVE_TASK_LIST_ID ||
|
|
46
|
+
messageManager.getRootSessionId();
|
|
47
|
+
const taskManager = new TaskManager(container, resolvedTaskListId);
|
|
48
|
+
container.register("TaskManager", taskManager);
|
|
49
|
+
taskManager.on("tasksChange", async () => {
|
|
50
|
+
const tasks = await taskManager.listTasks();
|
|
51
|
+
onSessionTasksChange(tasks);
|
|
52
|
+
});
|
|
53
|
+
const backgroundTaskManager = new BackgroundTaskManager(container, {
|
|
54
|
+
callbacks: {
|
|
55
|
+
...callbacks,
|
|
56
|
+
onTasksChange: (tasks) => {
|
|
57
|
+
onTasksChange(tasks);
|
|
58
|
+
callbacks.onTasksChange?.(tasks);
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
workdir,
|
|
62
|
+
});
|
|
63
|
+
container.register("BackgroundTaskManager", backgroundTaskManager);
|
|
64
|
+
const mcpManager = new McpManager(container, { callbacks });
|
|
65
|
+
container.register("McpManager", mcpManager);
|
|
66
|
+
const lspManager = options.lspManager || new LspManager(container);
|
|
67
|
+
container.register("LspManager", lspManager);
|
|
68
|
+
const permissionManager = new PermissionManager(container, { workdir });
|
|
69
|
+
container.register("PermissionManager", permissionManager);
|
|
70
|
+
permissionManager.setOnConfiguredDefaultModeChange((mode) => {
|
|
71
|
+
handlePlanModeTransition(mode);
|
|
72
|
+
onPermissionModeChange(mode);
|
|
73
|
+
});
|
|
74
|
+
const planManager = new PlanManager(container);
|
|
75
|
+
container.register("PlanManager", planManager);
|
|
76
|
+
const hookManager = new HookManager(container, workdir);
|
|
77
|
+
container.register("HookManager", hookManager);
|
|
78
|
+
const skillManager = new SkillManager(container, { workdir });
|
|
79
|
+
container.register("SkillManager", skillManager);
|
|
80
|
+
container.register("ReversionService", new ReversionService(messageManager.getTranscriptPath()));
|
|
81
|
+
const reversionManager = new ReversionManager(container);
|
|
82
|
+
container.register("ReversionManager", reversionManager);
|
|
83
|
+
const canUseToolWithNotification = options.canUseTool
|
|
84
|
+
? async (context) => {
|
|
85
|
+
try {
|
|
86
|
+
const notificationMessage = `Claude needs your permission to use ${context.toolName}`;
|
|
87
|
+
await hookManager.executeHooks("Notification", {
|
|
88
|
+
event: "Notification",
|
|
89
|
+
projectDir: workdir,
|
|
90
|
+
timestamp: new Date(),
|
|
91
|
+
sessionId: messageManager.getSessionId(),
|
|
92
|
+
transcriptPath: messageManager.getTranscriptPath(),
|
|
93
|
+
cwd: workdir,
|
|
94
|
+
message: notificationMessage,
|
|
95
|
+
notificationType: "permission_prompt",
|
|
96
|
+
env: configurationService.getEnvironmentVars(),
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
logger.warn("Failed to execute notification hooks", {
|
|
101
|
+
toolName: context.toolName,
|
|
102
|
+
error: error instanceof Error ? error.message : String(error),
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
const decision = await options.canUseTool(context);
|
|
106
|
+
const planFilePath = permissionManager.getPlanFilePath();
|
|
107
|
+
if (decision.newPermissionMode) {
|
|
108
|
+
setPermissionMode(decision.newPermissionMode);
|
|
109
|
+
}
|
|
110
|
+
if (decision.newPermissionRule) {
|
|
111
|
+
await addPermissionRule(decision.newPermissionRule);
|
|
112
|
+
}
|
|
113
|
+
if (decision.clearContext) {
|
|
114
|
+
messageManager.clearMessages();
|
|
115
|
+
if (planFilePath) {
|
|
116
|
+
try {
|
|
117
|
+
const planContent = await fs.readFile(planFilePath, "utf-8");
|
|
118
|
+
messageManager.addUserMessage({
|
|
119
|
+
content: `Implement the following plan:\n\n${planContent}`,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
logger.warn("Failed to read plan file for context clearing", {
|
|
124
|
+
planFilePath,
|
|
125
|
+
error: error instanceof Error ? error.message : String(error),
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return decision;
|
|
131
|
+
}
|
|
132
|
+
: undefined;
|
|
133
|
+
const toolManager = new ToolManager({
|
|
134
|
+
container,
|
|
135
|
+
tools: options.tools,
|
|
136
|
+
});
|
|
137
|
+
container.register("ToolManager", toolManager);
|
|
138
|
+
container.register("PermissionMode", options.permissionMode);
|
|
139
|
+
logger.info("Registering CanUseToolCallback", {
|
|
140
|
+
hasCallback: !!canUseToolWithNotification,
|
|
141
|
+
});
|
|
142
|
+
container.register("CanUseToolCallback", canUseToolWithNotification);
|
|
143
|
+
const liveConfigManager = new LiveConfigManager(container, { workdir });
|
|
144
|
+
container.register("LiveConfigManager", liveConfigManager);
|
|
145
|
+
const subagentManager = new SubagentManager(container, {
|
|
146
|
+
workdir,
|
|
147
|
+
callbacks: {
|
|
148
|
+
onSubagentUserMessageAdded: callbacks.onSubagentUserMessageAdded,
|
|
149
|
+
onSubagentAssistantMessageAdded: callbacks.onSubagentAssistantMessageAdded,
|
|
150
|
+
onSubagentAssistantContentUpdated: callbacks.onSubagentAssistantContentUpdated,
|
|
151
|
+
onSubagentAssistantReasoningUpdated: callbacks.onSubagentAssistantReasoningUpdated,
|
|
152
|
+
onSubagentToolBlockUpdated: callbacks.onSubagentToolBlockUpdated,
|
|
153
|
+
onSubagentMessagesChange: callbacks.onSubagentMessagesChange,
|
|
154
|
+
onSubagentLatestTotalTokensChange: callbacks.onSubagentLatestTotalTokensChange,
|
|
155
|
+
},
|
|
156
|
+
getGatewayConfig,
|
|
157
|
+
getModelConfig,
|
|
158
|
+
getMaxInputTokens,
|
|
159
|
+
getLanguage,
|
|
160
|
+
getEnvironmentVars: () => configurationService.getEnvironmentVars(),
|
|
161
|
+
onUsageAdded: (usage) => addUsage(usage),
|
|
162
|
+
});
|
|
163
|
+
container.register("SubagentManager", subagentManager);
|
|
164
|
+
const aiManager = new AIManager(container, {
|
|
165
|
+
callbacks: {
|
|
166
|
+
...callbacks,
|
|
167
|
+
onUsageAdded: (usage) => addUsage(usage),
|
|
168
|
+
},
|
|
169
|
+
workdir,
|
|
170
|
+
systemPrompt,
|
|
171
|
+
stream,
|
|
172
|
+
getGatewayConfig,
|
|
173
|
+
getModelConfig,
|
|
174
|
+
getMaxInputTokens,
|
|
175
|
+
getLanguage,
|
|
176
|
+
getEnvironmentVars: () => configurationService.getEnvironmentVars(),
|
|
177
|
+
});
|
|
178
|
+
container.register("AIManager", aiManager);
|
|
179
|
+
const slashCommandManager = new SlashCommandManager(container, { workdir });
|
|
180
|
+
container.register("SlashCommandManager", slashCommandManager);
|
|
181
|
+
slashCommandManager.initialize();
|
|
182
|
+
const pluginManager = new PluginManager(container, { workdir });
|
|
183
|
+
container.register("PluginManager", pluginManager);
|
|
184
|
+
const bashManager = new BashManager(container, { workdir });
|
|
185
|
+
container.register("BashManager", bashManager);
|
|
186
|
+
return container;
|
|
187
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editUtils.d.ts","sourceRoot":"","sources":["../../src/utils/editUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"editUtils.d.ts","sourceRoot":"","sources":["../../src/utils/editUtils.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,GACnB,MAAM,CAoER"}
|
package/dist/utils/editUtils.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Utility functions for file editing tools
|
|
3
3
|
*/
|
|
4
|
+
import { formatLineNumberPrefix } from "./stringUtils.js";
|
|
4
5
|
/**
|
|
5
6
|
* Escape regular expression special characters
|
|
6
7
|
*/
|
|
@@ -57,11 +58,11 @@ export function analyzeEditMismatch(content, searchString) {
|
|
|
57
58
|
const actualLine = contentLines[bestMatchIndex + j];
|
|
58
59
|
const expectedLine = searchLines[j];
|
|
59
60
|
if (actualLine === expectedLine) {
|
|
60
|
-
reportLines.push(`${lineNum
|
|
61
|
+
reportLines.push(`${formatLineNumberPrefix(lineNum)}${actualLine}`);
|
|
61
62
|
}
|
|
62
63
|
else {
|
|
63
|
-
reportLines.push(`${lineNum
|
|
64
|
-
reportLines.push(`${lineNum
|
|
64
|
+
reportLines.push(`${formatLineNumberPrefix(lineNum)}- ${expectedLine}`);
|
|
65
|
+
reportLines.push(`${formatLineNumberPrefix(lineNum)}+ ${actualLine}`);
|
|
65
66
|
}
|
|
66
67
|
}
|
|
67
68
|
return reportLines.join("\n");
|
|
@@ -34,7 +34,7 @@ export declare class HookMatcher {
|
|
|
34
34
|
* Get all tool names that would match this pattern from a given list
|
|
35
35
|
* Useful for testing and validation
|
|
36
36
|
*/
|
|
37
|
-
getMatches(pattern: string,
|
|
37
|
+
getMatches(pattern: string, tools: string[]): string[];
|
|
38
38
|
/**
|
|
39
39
|
* Optimize pattern for repeated matching
|
|
40
40
|
* Returns a compiled matcher function for performance
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hookMatcher.d.ts","sourceRoot":"","sources":["../../src/utils/hookMatcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,qBAAa,WAAW;IACtB;;;;;;;OAOG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAYnD;;OAEG;IACH,OAAO,CAAC,aAAa;IAmBrB;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAoBxC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAmB5B;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,cAAc;IA6B5E;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"hookMatcher.d.ts","sourceRoot":"","sources":["../../src/utils/hookMatcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,qBAAa,WAAW;IACtB;;;;;;;OAOG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAYnD;;OAEG;IACH,OAAO,CAAC,aAAa;IAmBrB;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAoBxC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAmB5B;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,cAAc;IA6B5E;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAItD;;;OAGG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO;CAkCxD"}
|
|
@@ -112,8 +112,8 @@ export class HookMatcher {
|
|
|
112
112
|
* Get all tool names that would match this pattern from a given list
|
|
113
113
|
* Useful for testing and validation
|
|
114
114
|
*/
|
|
115
|
-
getMatches(pattern,
|
|
116
|
-
return
|
|
115
|
+
getMatches(pattern, tools) {
|
|
116
|
+
return tools.filter((toolName) => this.matches(pattern, toolName));
|
|
117
117
|
}
|
|
118
118
|
/**
|
|
119
119
|
* Optimize pattern for repeated matching
|
|
@@ -30,6 +30,7 @@ export interface UpdateToolBlockParams {
|
|
|
30
30
|
stage: "start" | "streaming" | "running" | "end";
|
|
31
31
|
name?: string;
|
|
32
32
|
shortResult?: string;
|
|
33
|
+
startLineNumber?: number;
|
|
33
34
|
images?: Array<{
|
|
34
35
|
data: string;
|
|
35
36
|
mediaType?: string;
|
|
@@ -65,7 +66,7 @@ export interface CompleteCommandParams {
|
|
|
65
66
|
export declare const convertImageToBase64: (imagePath: string) => string;
|
|
66
67
|
export declare const addUserMessageToMessages: ({ messages, content, images, customCommandContent, source, }: AddUserMessageParams) => Message[];
|
|
67
68
|
export declare const addAssistantMessageToMessages: (messages: Message[], content?: string, toolCalls?: ChatCompletionMessageFunctionToolCall[], usage?: Usage, additionalFields?: Record<string, unknown>) => Message[];
|
|
68
|
-
export declare const updateToolBlockInMessage: ({ messages, id, parameters, result, success, error, stage, name, shortResult, images, compactParams, parametersChunk, isManuallyBackgrounded, }: UpdateToolBlockParams) => Message[];
|
|
69
|
+
export declare const updateToolBlockInMessage: ({ messages, id, parameters, result, success, error, stage, name, shortResult, startLineNumber, images, compactParams, parametersChunk, isManuallyBackgrounded, }: UpdateToolBlockParams) => Message[];
|
|
69
70
|
export declare const addErrorBlockToMessage: ({ messages, error, }: AddErrorBlockParams) => Message[];
|
|
70
71
|
export declare const addCommandOutputMessage: ({ messages, command, }: AddCommandOutputParams) => Message[];
|
|
71
72
|
export declare const updateCommandOutputInMessage: ({ messages, command, output, }: UpdateCommandOutputParams) => Message[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messageOperations.d.ts","sourceRoot":"","sources":["../../src/utils/messageOperations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,OAAO,EAAE,qCAAqC,EAAE,MAAM,qBAAqB,CAAC;AAI5E,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAGD,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;OAMG;IACH,KAAK,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,GAAG,KAAK,CAAC;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAGD,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAC3C,qBAAqB,EACrB,UAAU,CACX,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAAI,WAAW,MAAM,KAAG,MAmCxD,CAAC;AAGF,eAAO,MAAM,wBAAwB,GAAI,8DAMtC,oBAAoB,KAAG,OAAO,EA2BhC,CAAC;AAGF,eAAO,MAAM,6BAA6B,GACxC,UAAU,OAAO,EAAE,EACnB,UAAU,MAAM,EAChB,YAAY,qCAAqC,EAAE,EACnD,QAAQ,KAAK,EACb,mBAAmB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KACzC,OAAO,EA+BT,CAAC;AAGF,eAAO,MAAM,wBAAwB,GAAI,
|
|
1
|
+
{"version":3,"file":"messageOperations.d.ts","sourceRoot":"","sources":["../../src/utils/messageOperations.ts"],"names":[],"mappings":"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"}
|
|
@@ -97,7 +97,7 @@ export const addAssistantMessageToMessages = (messages, content, toolCalls, usag
|
|
|
97
97
|
return [...messages, initialAssistantMessage];
|
|
98
98
|
};
|
|
99
99
|
// Update Tool Block of the last assistant message
|
|
100
|
-
export const updateToolBlockInMessage = ({ messages, id, parameters, result, success, error, stage, name, shortResult, images, compactParams, parametersChunk, isManuallyBackgrounded, }) => {
|
|
100
|
+
export const updateToolBlockInMessage = ({ messages, id, parameters, result, success, error, stage, name, shortResult, startLineNumber, images, compactParams, parametersChunk, isManuallyBackgrounded, }) => {
|
|
101
101
|
const newMessages = [...messages];
|
|
102
102
|
// Find the last assistant message
|
|
103
103
|
for (let i = newMessages.length - 1; i >= 0; i--) {
|
|
@@ -111,6 +111,8 @@ export const updateToolBlockInMessage = ({ messages, id, parameters, result, suc
|
|
|
111
111
|
toolBlock.result = result;
|
|
112
112
|
if (shortResult !== undefined)
|
|
113
113
|
toolBlock.shortResult = shortResult;
|
|
114
|
+
if (startLineNumber !== undefined)
|
|
115
|
+
toolBlock.startLineNumber = startLineNumber;
|
|
114
116
|
toolBlock.images = images; // Add image data update
|
|
115
117
|
if (success !== undefined)
|
|
116
118
|
toolBlock.success = success;
|
|
@@ -134,6 +136,7 @@ export const updateToolBlockInMessage = ({ messages, id, parameters, result, suc
|
|
|
134
136
|
parameters: parameters,
|
|
135
137
|
result: result || "",
|
|
136
138
|
shortResult: shortResult,
|
|
139
|
+
startLineNumber: startLineNumber,
|
|
137
140
|
images: images, // Add image data
|
|
138
141
|
id: id,
|
|
139
142
|
name: name || "unknown",
|
|
@@ -29,8 +29,8 @@ export class OpenAIClient {
|
|
|
29
29
|
};
|
|
30
30
|
const fetchFn = customFetch || fetch;
|
|
31
31
|
let lastError;
|
|
32
|
-
const maxRetries =
|
|
33
|
-
const initialDelay =
|
|
32
|
+
const maxRetries = 5;
|
|
33
|
+
const initialDelay = 2000;
|
|
34
34
|
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
35
35
|
if (attempt > 0) {
|
|
36
36
|
const delay = initialDelay * Math.pow(2, attempt - 1);
|
|
@@ -17,4 +17,10 @@ export declare function parseCustomHeaders(headersString: string): Record<string
|
|
|
17
17
|
* @returns Plain text with color codes removed
|
|
18
18
|
*/
|
|
19
19
|
export declare const stripAnsiColors: (text: string) => string;
|
|
20
|
+
/**
|
|
21
|
+
* Format a line number prefix in cat -n style (padStart(6) + tab)
|
|
22
|
+
* @param lineNumber The line number
|
|
23
|
+
* @returns Formatted line number prefix
|
|
24
|
+
*/
|
|
25
|
+
export declare function formatLineNumberPrefix(lineNumber: number): string;
|
|
20
26
|
//# sourceMappingURL=stringUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stringUtils.d.ts","sourceRoot":"","sources":["../../src/utils/stringUtils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAgC/D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,MAAM,GACpB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAwBxB;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,KAAG,MAK9C,CAAC"}
|
|
1
|
+
{"version":3,"file":"stringUtils.d.ts","sourceRoot":"","sources":["../../src/utils/stringUtils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAgC/D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,MAAM,GACpB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAwBxB;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,KAAG,MAK9C,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEjE"}
|
|
@@ -69,3 +69,11 @@ export const stripAnsiColors = (text) => {
|
|
|
69
69
|
const ansiEscapeRegex = new RegExp(`${escapeChar}\\[[0-9;]*[a-zA-Z]`, "g");
|
|
70
70
|
return text.replace(ansiEscapeRegex, "");
|
|
71
71
|
};
|
|
72
|
+
/**
|
|
73
|
+
* Format a line number prefix in cat -n style (padStart(6) + tab)
|
|
74
|
+
* @param lineNumber The line number
|
|
75
|
+
* @returns Formatted line number prefix
|
|
76
|
+
*/
|
|
77
|
+
export function formatLineNumberPrefix(lineNumber) {
|
|
78
|
+
return `${lineNumber.toString().padStart(6)}\t`;
|
|
79
|
+
}
|