wave-agent-sdk 0.16.8 → 0.16.10
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 +3 -0
- package/dist/constants/tools.d.ts +0 -1
- package/dist/constants/tools.d.ts.map +1 -1
- package/dist/constants/tools.js +0 -1
- package/dist/managers/aiManager.d.ts +0 -8
- package/dist/managers/aiManager.d.ts.map +1 -1
- package/dist/managers/aiManager.js +0 -45
- package/dist/managers/mcpManager.d.ts +5 -0
- package/dist/managers/mcpManager.d.ts.map +1 -1
- package/dist/managers/mcpManager.js +107 -12
- package/dist/managers/toolManager.d.ts +0 -6
- package/dist/managers/toolManager.d.ts.map +1 -1
- package/dist/managers/toolManager.js +1 -28
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +1 -12
- package/dist/services/authService.d.ts +10 -0
- package/dist/services/authService.d.ts.map +1 -1
- package/dist/services/authService.js +45 -0
- package/dist/services/configurationService.d.ts +1 -0
- package/dist/services/configurationService.d.ts.map +1 -1
- package/dist/services/configurationService.js +48 -15
- package/dist/services/initializationService.d.ts.map +1 -1
- package/dist/services/initializationService.js +11 -0
- package/dist/services/pluginLoader.d.ts.map +1 -1
- package/dist/services/pluginLoader.js +2 -2
- package/dist/services/remoteSettingsService.d.ts +21 -0
- package/dist/services/remoteSettingsService.d.ts.map +1 -0
- package/dist/services/remoteSettingsService.js +279 -0
- package/dist/telemetry/instrumentation.d.ts +5 -2
- package/dist/telemetry/instrumentation.d.ts.map +1 -1
- package/dist/telemetry/instrumentation.js +8 -4
- package/dist/tools/buildTool.d.ts +0 -2
- package/dist/tools/buildTool.d.ts.map +1 -1
- package/dist/tools/buildTool.js +0 -2
- package/dist/tools/cronCreateTool.d.ts.map +1 -1
- package/dist/tools/cronCreateTool.js +0 -1
- package/dist/tools/cronDeleteTool.d.ts.map +1 -1
- package/dist/tools/cronDeleteTool.js +0 -1
- package/dist/tools/cronListTool.d.ts.map +1 -1
- package/dist/tools/cronListTool.js +0 -1
- package/dist/tools/enterWorktreeTool.d.ts.map +1 -1
- package/dist/tools/enterWorktreeTool.js +0 -1
- package/dist/tools/exitWorktreeTool.d.ts.map +1 -1
- package/dist/tools/exitWorktreeTool.js +0 -1
- package/dist/tools/taskManagementTools.d.ts.map +1 -1
- package/dist/tools/taskManagementTools.js +0 -4
- package/dist/tools/types.d.ts +0 -15
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/webFetchTool.d.ts.map +1 -1
- package/dist/tools/webFetchTool.js +0 -1
- package/dist/types/configuration.d.ts +20 -0
- package/dist/types/configuration.d.ts.map +1 -1
- package/dist/types/mcp.d.ts +3 -1
- package/dist/types/mcp.d.ts.map +1 -1
- package/dist/utils/containerSetup.d.ts.map +1 -1
- package/dist/utils/containerSetup.js +10 -0
- package/dist/utils/mcpUtils.d.ts.map +1 -1
- package/dist/utils/mcpUtils.js +0 -1
- package/dist/utils/openaiClient.d.ts.map +1 -1
- package/dist/utils/openaiClient.js +4 -2
- package/package.json +1 -1
- package/src/agent.ts +3 -0
- package/src/constants/tools.ts +0 -1
- package/src/managers/aiManager.ts +0 -48
- package/src/managers/mcpManager.ts +122 -16
- package/src/managers/toolManager.ts +1 -32
- package/src/prompts/index.ts +0 -13
- package/src/services/authService.ts +56 -0
- package/src/services/configurationService.ts +56 -19
- package/src/services/initializationService.ts +13 -0
- package/src/services/pluginLoader.ts +2 -2
- package/src/services/remoteSettingsService.ts +314 -0
- package/src/telemetry/instrumentation.ts +12 -4
- package/src/tools/buildTool.ts +0 -4
- package/src/tools/cronCreateTool.ts +0 -1
- package/src/tools/cronDeleteTool.ts +0 -1
- package/src/tools/cronListTool.ts +0 -1
- package/src/tools/enterWorktreeTool.ts +0 -1
- package/src/tools/exitWorktreeTool.ts +0 -1
- package/src/tools/taskManagementTools.ts +0 -4
- package/src/tools/types.ts +0 -15
- package/src/tools/webFetchTool.ts +0 -1
- package/src/types/configuration.ts +23 -0
- package/src/types/mcp.ts +8 -1
- package/src/utils/containerSetup.ts +10 -0
- package/src/utils/mcpUtils.ts +0 -1
- package/src/utils/openaiClient.ts +5 -2
- package/dist/tools/toolSearchTool.d.ts +0 -15
- package/dist/tools/toolSearchTool.d.ts.map +0 -1
- package/dist/tools/toolSearchTool.js +0 -200
- package/dist/utils/isDeferredTool.d.ts +0 -19
- package/dist/utils/isDeferredTool.d.ts.map +0 -1
- package/dist/utils/isDeferredTool.js +0 -31
- package/src/tools/toolSearchTool.ts +0 -245
- package/src/utils/isDeferredTool.ts +0 -36
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exitWorktreeTool.d.ts","sourceRoot":"","sources":["../../src/tools/exitWorktreeTool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAA2B,MAAM,YAAY,CAAC;AAYtE,eAAO,MAAM,yBAAyB,gvDA4BrC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"exitWorktreeTool.d.ts","sourceRoot":"","sources":["../../src/tools/exitWorktreeTool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAA2B,MAAM,YAAY,CAAC;AAYtE,eAAO,MAAM,yBAAyB,gvDA4BrC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,UAiM9B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taskManagementTools.d.ts","sourceRoot":"","sources":["../../src/tools/taskManagementTools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA2B,MAAM,YAAY,CAAC;AASjE,eAAO,MAAM,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"taskManagementTools.d.ts","sourceRoot":"","sources":["../../src/tools/taskManagementTools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA2B,MAAM,YAAY,CAAC;AASjE,eAAO,MAAM,cAAc,EAAE,UAoI5B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,UAyDzB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,UAgW5B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,UAkE1B,CAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { TASK_CREATE_TOOL_NAME, TASK_GET_TOOL_NAME, TASK_UPDATE_TOOL_NAME, TASK_LIST_TOOL_NAME, } from "../constants/tools.js";
|
|
2
2
|
export const taskCreateTool = {
|
|
3
3
|
name: TASK_CREATE_TOOL_NAME,
|
|
4
|
-
shouldDefer: true,
|
|
5
4
|
config: {
|
|
6
5
|
type: "function",
|
|
7
6
|
function: {
|
|
@@ -124,7 +123,6 @@ NOTE that you should not use this tool if there is only one trivial task to do.
|
|
|
124
123
|
};
|
|
125
124
|
export const taskGetTool = {
|
|
126
125
|
name: TASK_GET_TOOL_NAME,
|
|
127
|
-
shouldDefer: true,
|
|
128
126
|
config: {
|
|
129
127
|
type: "function",
|
|
130
128
|
function: {
|
|
@@ -181,7 +179,6 @@ Returns full task details:
|
|
|
181
179
|
};
|
|
182
180
|
export const taskUpdateTool = {
|
|
183
181
|
name: TASK_UPDATE_TOOL_NAME,
|
|
184
|
-
shouldDefer: true,
|
|
185
182
|
config: {
|
|
186
183
|
type: "function",
|
|
187
184
|
function: {
|
|
@@ -481,7 +478,6 @@ Set up task dependencies:
|
|
|
481
478
|
};
|
|
482
479
|
export const taskListTool = {
|
|
483
480
|
name: TASK_LIST_TOOL_NAME,
|
|
484
|
-
shouldDefer: true,
|
|
485
481
|
config: {
|
|
486
482
|
type: "function",
|
|
487
483
|
function: {
|
package/dist/tools/types.d.ts
CHANGED
|
@@ -19,21 +19,6 @@ export interface ToolPlugin {
|
|
|
19
19
|
workdir?: string;
|
|
20
20
|
isSubagent?: boolean;
|
|
21
21
|
}) => string;
|
|
22
|
-
/**
|
|
23
|
-
* When true, this tool is deferred — it's not sent to the API until the model
|
|
24
|
-
* discovers it via ToolSearch. MCP tools are always deferred.
|
|
25
|
-
*/
|
|
26
|
-
shouldDefer?: boolean;
|
|
27
|
-
/**
|
|
28
|
-
* When true, this tool is never deferred — its full schema always appears in
|
|
29
|
-
* the initial prompt even when tool search is enabled.
|
|
30
|
-
*/
|
|
31
|
-
alwaysLoad?: boolean;
|
|
32
|
-
/**
|
|
33
|
-
* When true, this is an MCP tool (auto-set by McpManager). MCP tools are
|
|
34
|
-
* always deferred unless they have alwaysLoad: true.
|
|
35
|
-
*/
|
|
36
|
-
isMcp?: boolean;
|
|
37
22
|
}
|
|
38
23
|
export interface ToolResult {
|
|
39
24
|
success: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,0BAA0B,CAAC;IACnC,OAAO,EAAE,CACP,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,WAAW,KACjB,OAAO,CAAC,UAAU,CAAC,CAAC;IACzB,mBAAmB,CAAC,EAAE,CACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,EAAE,WAAW,KACjB,MAAM,CAAC;IACZ;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;QACf,kBAAkB,CAAC,EAAE,qBAAqB,EAAE,CAAC;QAC7C,eAAe,CAAC,EAAE,aAAa,EAAE,CAAC;QAClC,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,KAAK,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webFetchTool.d.ts","sourceRoot":"","sources":["../../src/tools/webFetchTool.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAA2B,MAAM,YAAY,CAAC;AAoGtE,eAAO,MAAM,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"webFetchTool.d.ts","sourceRoot":"","sources":["../../src/tools/webFetchTool.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAA2B,MAAM,YAAY,CAAC;AAoGtE,eAAO,MAAM,YAAY,EAAE,UAoL1B,CAAC"}
|
|
@@ -40,6 +40,8 @@ export interface WaveConfiguration {
|
|
|
40
40
|
autoMemoryEnabled?: boolean;
|
|
41
41
|
/** Frequency of auto-memory extraction turns */
|
|
42
42
|
autoMemoryFrequency?: number;
|
|
43
|
+
/** Persisted model selection (from /model command) */
|
|
44
|
+
model?: string;
|
|
43
45
|
/** Model-specific configuration overrides */
|
|
44
46
|
models?: Record<string, Partial<ModelConfig>>;
|
|
45
47
|
/** Scoped marketplace declarations */
|
|
@@ -124,5 +126,23 @@ interface Logger {
|
|
|
124
126
|
info: (...args: unknown[]) => void;
|
|
125
127
|
debug: (...args: unknown[]) => void;
|
|
126
128
|
}
|
|
129
|
+
export interface RemoteSettingsResponse {
|
|
130
|
+
uuid: string;
|
|
131
|
+
checksum: string;
|
|
132
|
+
settings: WaveConfiguration;
|
|
133
|
+
}
|
|
134
|
+
export interface RemoteSettingsCache {
|
|
135
|
+
uuid: string;
|
|
136
|
+
checksum: string;
|
|
137
|
+
settings: WaveConfiguration;
|
|
138
|
+
fetchedAt: string;
|
|
139
|
+
}
|
|
140
|
+
export interface RemoteSettingsFetchResult {
|
|
141
|
+
success: boolean;
|
|
142
|
+
settings?: WaveConfiguration | null;
|
|
143
|
+
checksum?: string;
|
|
144
|
+
error?: string;
|
|
145
|
+
notConfigured?: boolean;
|
|
146
|
+
}
|
|
127
147
|
export {};
|
|
128
148
|
//# sourceMappingURL=configuration.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configuration.d.ts","sourceRoot":"","sources":["../../src/types/configuration.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"configuration.d.ts","sourceRoot":"","sources":["../../src/types/configuration.ts"],"names":[],"mappings":"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"}
|
package/dist/types/mcp.d.ts
CHANGED
|
@@ -22,7 +22,9 @@ export interface McpTool {
|
|
|
22
22
|
export interface McpServerStatus {
|
|
23
23
|
name: string;
|
|
24
24
|
config: McpServerConfig;
|
|
25
|
-
|
|
25
|
+
/** Pre-resolution URL with template variables (e.g. ${WAVE_SSO_TOKEN}) preserved for safe display */
|
|
26
|
+
originalUrl?: string;
|
|
27
|
+
status: "disconnected" | "connected" | "connecting" | "reconnecting" | "error";
|
|
26
28
|
tools?: McpTool[];
|
|
27
29
|
toolCount?: number;
|
|
28
30
|
capabilities?: string[];
|
package/dist/types/mcp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/types/mcp.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,CAAC;IACxB,
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/types/mcp.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,CAAC;IACxB,qGAAqG;IACrG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EACF,cAAc,GACd,WAAW,GACX,YAAY,GACZ,cAAc,GACd,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"containerSetup.d.ts","sourceRoot":"","sources":["../../src/utils/containerSetup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAwB3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAM3E,OAAO,KAAK,EAAE,YAAY,EAAmB,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,EACV,cAAc,EACd,KAAK,EACL,IAAI,EACJ,cAAc,EAEf,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"containerSetup.d.ts","sourceRoot":"","sources":["../../src/utils/containerSetup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAwB3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAM3E,OAAO,KAAK,EAAE,YAAY,EAAmB,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,EACV,cAAc,EACd,KAAK,EACL,IAAI,EACJ,cAAc,EAEf,MAAM,mBAAmB,CAAC;AAM3B,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,uBAAuB,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;IAC3D,aAAa,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IACvC,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;CAClC;AAED,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,0BAA0B,GACvC,SAAS,CAsSX"}
|
|
@@ -29,6 +29,7 @@ import { USER_MEMORY_FILE } from "./constants.js";
|
|
|
29
29
|
import { getGitMainRepoRoot } from "./gitUtils.js";
|
|
30
30
|
import { logger } from "./globalLogger.js";
|
|
31
31
|
import { authService } from "../services/authService.js";
|
|
32
|
+
import { remoteSettingsService } from "../services/remoteSettingsService.js";
|
|
32
33
|
export function setupAgentContainer(setupOptions) {
|
|
33
34
|
const { options, workdir, configurationService, systemPrompt, stream, onBackgroundTasksChange, onTasksChange, onPermissionModeChange, handlePlanModeTransition, setPermissionMode, addPermissionRule, addUsage, } = setupOptions;
|
|
34
35
|
const callbacks = options.callbacks || {};
|
|
@@ -109,6 +110,15 @@ export function setupAgentContainer(setupOptions) {
|
|
|
109
110
|
mcpManager.refreshCredentials(newServerUrl, newToken);
|
|
110
111
|
}
|
|
111
112
|
});
|
|
113
|
+
// Wire up auth change callback to refresh/clear remote settings
|
|
114
|
+
authService.onAuthChange((event) => {
|
|
115
|
+
if (event === "login") {
|
|
116
|
+
remoteSettingsService.refresh();
|
|
117
|
+
}
|
|
118
|
+
else if (event === "logout") {
|
|
119
|
+
remoteSettingsService.clear();
|
|
120
|
+
}
|
|
121
|
+
});
|
|
112
122
|
const lspManager = options.lspManager || new LspManager(container);
|
|
113
123
|
container.register("LspManager", lspManager);
|
|
114
124
|
const permissionManager = new PermissionManager(container, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcpUtils.d.ts","sourceRoot":"","sources":["../../src/utils/mcpUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAc,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AA8ClE;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,GACjB,0BAA0B,CAgB5B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,CACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,CAAC,EAAE,WAAW,KAClB,OAAO,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtD,CAAC,GACD,UAAU,
|
|
1
|
+
{"version":3,"file":"mcpUtils.d.ts","sourceRoot":"","sources":["../../src/utils/mcpUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAc,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AA8ClE;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,GACjB,0BAA0B,CAgB5B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,CACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,CAAC,EAAE,WAAW,KAClB,OAAO,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtD,CAAC,GACD,UAAU,CAwBZ;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,eAAe,EAAE,GACzB,eAAe,GAAG,SAAS,CAK7B"}
|
package/dist/utils/mcpUtils.js
CHANGED
|
@@ -57,7 +57,6 @@ export function createMcpToolPlugin(mcpTool, serverName, executeTool) {
|
|
|
57
57
|
return {
|
|
58
58
|
name: prefixedName,
|
|
59
59
|
config: mcpToolToOpenAITool(mcpTool, serverName),
|
|
60
|
-
isMcp: true, // MCP tools are always deferred
|
|
61
60
|
async execute(args, context) {
|
|
62
61
|
try {
|
|
63
62
|
const result = await executeTool(prefixedName, args, context);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openaiClient.d.ts","sourceRoot":"","sources":["../../src/utils/openaiClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sCAAsC,EACtC,mCAAmC,EACnC,mBAAmB,EACnB,cAAc,EACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,KAAK,YAAY,GACb,sCAAsC,GACtC,mCAAmC,CAAC;AAExC,UAAU,WAAW,CAAC,CAAC;IACrB,IAAI,EAAE,CAAC,CAAC;IACR,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,UAAU,UAAU,CAAC,CAAC,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAC;IACxC,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;CACzC;AAED,qBAAa,YAAY;IACX,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAEzC,IAAI,IAAI;;qBAGO,CAAC,SAAS,YAAY,UACrB,CAAC,YACC;gBAAE,MAAM,CAAC,EAAE,WAAW,CAAA;aAAE,KACjC,UAAU,CACX,CAAC,SAAS,mCAAmC,GACzC,aAAa,CAAC,mBAAmB,CAAC,GAClC,cAAc,CACnB;;MA2BN;YAEa,OAAO;
|
|
1
|
+
{"version":3,"file":"openaiClient.d.ts","sourceRoot":"","sources":["../../src/utils/openaiClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sCAAsC,EACtC,mCAAmC,EACnC,mBAAmB,EACnB,cAAc,EACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,KAAK,YAAY,GACb,sCAAsC,GACtC,mCAAmC,CAAC;AAExC,UAAU,WAAW,CAAC,CAAC;IACrB,IAAI,EAAE,CAAC,CAAC;IACR,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,UAAU,UAAU,CAAC,CAAC,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAC;IACxC,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;CACzC;AAED,qBAAa,YAAY;IACX,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAEzC,IAAI,IAAI;;qBAGO,CAAC,SAAS,YAAY,UACrB,CAAC,YACC;gBAAE,MAAM,CAAC,EAAE,WAAW,CAAA;aAAE,KACjC,UAAU,CACX,CAAC,SAAS,mCAAmC,GACzC,aAAa,CAAC,mBAAmB,CAAC,GAClC,cAAc,CACnB;;MA2BN;YAEa,OAAO;YAwIN,oBAAoB;CAqCpC"}
|
|
@@ -107,8 +107,10 @@ export class OpenAIClient {
|
|
|
107
107
|
: response.statusText);
|
|
108
108
|
error.status = response.status;
|
|
109
109
|
error.body = errorBody;
|
|
110
|
-
|
|
111
|
-
|
|
110
|
+
const retryableStatus = response.status === 429 ||
|
|
111
|
+
(response.status >= 500 && response.status !== 501);
|
|
112
|
+
if (retryableStatus && attempt < maxRetries) {
|
|
113
|
+
logger.warn("OpenAI API error, retrying...", {
|
|
112
114
|
attempt: attempt + 1,
|
|
113
115
|
status: response.status,
|
|
114
116
|
});
|
package/package.json
CHANGED
package/src/agent.ts
CHANGED
|
@@ -51,6 +51,7 @@ import {
|
|
|
51
51
|
shutdownTelemetry,
|
|
52
52
|
} from "./telemetry/instrumentation.js";
|
|
53
53
|
import { logOTelEvent } from "./telemetry/events.js";
|
|
54
|
+
import { remoteSettingsService } from "./services/remoteSettingsService.js";
|
|
54
55
|
|
|
55
56
|
export class Agent {
|
|
56
57
|
private messageManager: MessageManager;
|
|
@@ -720,6 +721,8 @@ export class Agent {
|
|
|
720
721
|
error,
|
|
721
722
|
);
|
|
722
723
|
}
|
|
724
|
+
// Cleanup remote settings polling
|
|
725
|
+
remoteSettingsService.shutdown();
|
|
723
726
|
// Cleanup memory store
|
|
724
727
|
}
|
|
725
728
|
|
package/src/constants/tools.ts
CHANGED
|
@@ -66,8 +66,6 @@ export class AIManager {
|
|
|
66
66
|
private modelOverride?: string;
|
|
67
67
|
private consecutiveCompactionFailures: number = 0;
|
|
68
68
|
private readonly maxTurns?: number;
|
|
69
|
-
/** Tracks which deferred tools have been discovered via ToolSearch */
|
|
70
|
-
private discoveredTools = new Set<string>();
|
|
71
69
|
|
|
72
70
|
// Service overrides
|
|
73
71
|
constructor(
|
|
@@ -203,7 +201,6 @@ export class AIManager {
|
|
|
203
201
|
availableSkills,
|
|
204
202
|
workdir: this.getWorkdir(),
|
|
205
203
|
isSubagent: !!this.subagentType,
|
|
206
|
-
discoveredTools: this.discoveredTools,
|
|
207
204
|
});
|
|
208
205
|
}
|
|
209
206
|
|
|
@@ -1060,11 +1057,6 @@ export class AIManager {
|
|
|
1060
1057
|
toolArgs,
|
|
1061
1058
|
toolResult,
|
|
1062
1059
|
);
|
|
1063
|
-
|
|
1064
|
-
// Track discovered tools from ToolSearch results
|
|
1065
|
-
if (toolName === "ToolSearch" && toolResult.success) {
|
|
1066
|
-
this.trackDiscoveredTools(toolResult.content);
|
|
1067
|
-
}
|
|
1068
1060
|
} catch (toolError) {
|
|
1069
1061
|
const errorMessage =
|
|
1070
1062
|
toolError instanceof Error
|
|
@@ -1533,44 +1525,4 @@ export class AIManager {
|
|
|
1533
1525
|
logger?.error("PostToolUse hook execution failed:", error);
|
|
1534
1526
|
}
|
|
1535
1527
|
}
|
|
1536
|
-
|
|
1537
|
-
/**
|
|
1538
|
-
* Parse ToolSearch result content to extract discovered tool names.
|
|
1539
|
-
* ToolSearch returns content like "ToolName: description\nParameters: {...}"
|
|
1540
|
-
* or shortResult like "Discovered tools: ToolA, ToolB".
|
|
1541
|
-
*/
|
|
1542
|
-
private trackDiscoveredTools(content: string): void {
|
|
1543
|
-
// Try to extract tool names from shortResult-style content
|
|
1544
|
-
const discoveredMatch = content.match(/Discovered tools?: ([\w-, ]+)/);
|
|
1545
|
-
if (discoveredMatch) {
|
|
1546
|
-
const names = discoveredMatch[1]!
|
|
1547
|
-
.split(",")
|
|
1548
|
-
.map((n) => n.trim())
|
|
1549
|
-
.filter(Boolean);
|
|
1550
|
-
for (const name of names) {
|
|
1551
|
-
this.discoveredTools.add(name);
|
|
1552
|
-
}
|
|
1553
|
-
logger?.debug("Discovered tools:", names);
|
|
1554
|
-
return;
|
|
1555
|
-
}
|
|
1556
|
-
|
|
1557
|
-
// Fallback: extract tool names from "ToolName: description" pattern
|
|
1558
|
-
const lines = content.split("\n");
|
|
1559
|
-
const nonToolKeywords = new Set([
|
|
1560
|
-
"parameters",
|
|
1561
|
-
"description",
|
|
1562
|
-
"result",
|
|
1563
|
-
"error",
|
|
1564
|
-
"content",
|
|
1565
|
-
"type",
|
|
1566
|
-
"properties",
|
|
1567
|
-
"required",
|
|
1568
|
-
]);
|
|
1569
|
-
for (const line of lines) {
|
|
1570
|
-
const toolMatch = line.match(/^([\w-]+):/);
|
|
1571
|
-
if (toolMatch && !nonToolKeywords.has(toolMatch[1]!.toLowerCase())) {
|
|
1572
|
-
this.discoveredTools.add(toolMatch[1]!);
|
|
1573
|
-
}
|
|
1574
|
-
}
|
|
1575
|
-
}
|
|
1576
1528
|
}
|
|
@@ -44,7 +44,11 @@ export interface McpManagerOptions {
|
|
|
44
44
|
* Expand environment variables in a string value.
|
|
45
45
|
* Supports ${VAR} and ${VAR:-default} patterns.
|
|
46
46
|
*/
|
|
47
|
-
const WAVE_TEMPLATE_VARS = [
|
|
47
|
+
const WAVE_TEMPLATE_VARS = [
|
|
48
|
+
"WAVE_SERVER_URL",
|
|
49
|
+
"WAVE_SSO_TOKEN",
|
|
50
|
+
"WAVE_PLUGIN_ROOT",
|
|
51
|
+
];
|
|
48
52
|
|
|
49
53
|
export function expandEnvVars(value: string): string {
|
|
50
54
|
return value.replace(/\$\{([^}]+)\}/g, (_match, expr: string) => {
|
|
@@ -268,10 +272,14 @@ export class McpManager {
|
|
|
268
272
|
|
|
269
273
|
try {
|
|
270
274
|
const configContent = await fs.readFile(this.configPath, "utf-8");
|
|
271
|
-
const
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
)
|
|
275
|
+
const rawConfig: McpConfig = JSON.parse(configContent);
|
|
276
|
+
const workspaceConfig = resolveMcpConfig(rawConfig, this.resolverCtx);
|
|
277
|
+
|
|
278
|
+
// Extract original (pre-resolution) URLs for safe display
|
|
279
|
+
const originalUrls: Record<string, string | undefined> = {};
|
|
280
|
+
for (const [name, serverConfig] of Object.entries(rawConfig.mcpServers)) {
|
|
281
|
+
originalUrls[name] = serverConfig.url;
|
|
282
|
+
}
|
|
275
283
|
|
|
276
284
|
// Merge workspace config with any existing config (e.g., from plugins or constructor)
|
|
277
285
|
// Constructor-provided servers take precedence, then workspace config, then existing config
|
|
@@ -296,12 +304,14 @@ export class McpManager {
|
|
|
296
304
|
this.servers.set(name, {
|
|
297
305
|
...existingServer,
|
|
298
306
|
config, // Update config in case it changed
|
|
307
|
+
originalUrl: originalUrls[name] ?? existingServer.originalUrl,
|
|
299
308
|
});
|
|
300
309
|
} else {
|
|
301
310
|
// New server, initialize with disconnected status
|
|
302
311
|
this.servers.set(name, {
|
|
303
312
|
name,
|
|
304
313
|
config,
|
|
314
|
+
originalUrl: originalUrls[name],
|
|
305
315
|
status: "disconnected",
|
|
306
316
|
});
|
|
307
317
|
}
|
|
@@ -355,15 +365,45 @@ export class McpManager {
|
|
|
355
365
|
return false;
|
|
356
366
|
}
|
|
357
367
|
|
|
358
|
-
//
|
|
359
|
-
const
|
|
360
|
-
|
|
368
|
+
// Capture original URL before any resolution for safe display
|
|
369
|
+
const originalUrl = config.url;
|
|
370
|
+
|
|
371
|
+
// Step 1: expand env vars from process.env (e.g. ${TAVILY_API_KEY})
|
|
372
|
+
let resolvedConfig: McpServerConfig = { ...config };
|
|
373
|
+
if (resolvedConfig.command) {
|
|
374
|
+
resolvedConfig.command = expandEnvVars(resolvedConfig.command);
|
|
375
|
+
}
|
|
376
|
+
if (resolvedConfig.args) {
|
|
377
|
+
resolvedConfig.args = resolvedConfig.args.map(expandEnvVars);
|
|
378
|
+
}
|
|
379
|
+
if (resolvedConfig.env) {
|
|
380
|
+
const resolvedEnv: Record<string, string> = {};
|
|
381
|
+
for (const [key, val] of Object.entries(resolvedConfig.env)) {
|
|
382
|
+
resolvedEnv[key] = expandEnvVars(val);
|
|
383
|
+
}
|
|
384
|
+
resolvedConfig.env = resolvedEnv;
|
|
385
|
+
}
|
|
386
|
+
if (resolvedConfig.url) {
|
|
387
|
+
resolvedConfig.url = expandEnvVars(resolvedConfig.url);
|
|
388
|
+
}
|
|
389
|
+
if (resolvedConfig.headers) {
|
|
390
|
+
const resolvedHeaders: Record<string, string> = {};
|
|
391
|
+
for (const [key, val] of Object.entries(resolvedConfig.headers)) {
|
|
392
|
+
resolvedHeaders[key] = expandEnvVars(val);
|
|
393
|
+
}
|
|
394
|
+
resolvedConfig.headers = resolvedHeaders;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
// Step 2: resolve Wave template variables (e.g. ${WAVE_SERVER_URL}, ${WAVE_SSO_TOKEN})
|
|
398
|
+
resolvedConfig = resolveMcpTemplates(
|
|
399
|
+
resolvedConfig,
|
|
361
400
|
this.resolverCtx ?? { serverUrl: undefined, ssoToken: undefined },
|
|
362
401
|
);
|
|
363
402
|
|
|
364
403
|
const newServer: McpServerStatus = {
|
|
365
404
|
name,
|
|
366
405
|
config: resolvedConfig,
|
|
406
|
+
originalUrl,
|
|
367
407
|
status: "disconnected",
|
|
368
408
|
};
|
|
369
409
|
|
|
@@ -545,13 +585,29 @@ export class McpManager {
|
|
|
545
585
|
);
|
|
546
586
|
}
|
|
547
587
|
|
|
548
|
-
// Handle transport errors
|
|
588
|
+
// Handle transport errors (e.g. SSE stream disconnected)
|
|
589
|
+
// The SDK auto-reconnects for transient SSE errors, so we use
|
|
590
|
+
// "reconnecting" status instead of "error". We then poll listTools()
|
|
591
|
+
// to detect when reconnection succeeds.
|
|
549
592
|
transport.onerror = (error: Error) => {
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
593
|
+
const isTransient = error.message?.includes("SSE stream disconnected");
|
|
594
|
+
if (isTransient) {
|
|
595
|
+
logger?.warn(
|
|
596
|
+
`MCP Server ${name} transient transport error (SDK will auto-reconnect): ${error.message}`,
|
|
597
|
+
);
|
|
598
|
+
this.updateServerStatus(name, {
|
|
599
|
+
status: "reconnecting",
|
|
600
|
+
error: error.message,
|
|
601
|
+
});
|
|
602
|
+
// Poll to detect when the SDK's auto-reconnect succeeds
|
|
603
|
+
this.pollReconnectRecovery(name, client);
|
|
604
|
+
} else {
|
|
605
|
+
logger?.error(`MCP Server ${name} transport error:`, error);
|
|
606
|
+
this.updateServerStatus(name, {
|
|
607
|
+
status: "error",
|
|
608
|
+
error: error.message,
|
|
609
|
+
});
|
|
610
|
+
}
|
|
555
611
|
};
|
|
556
612
|
|
|
557
613
|
transport.onclose = () => {
|
|
@@ -631,6 +687,54 @@ export class McpManager {
|
|
|
631
687
|
this.reconnectTimers.set(name, timer);
|
|
632
688
|
}
|
|
633
689
|
|
|
690
|
+
/**
|
|
691
|
+
* Poll listTools() to detect when the SDK's auto-reconnect succeeds
|
|
692
|
+
* after a transient SSE disconnect. Restores status to "connected".
|
|
693
|
+
*/
|
|
694
|
+
private async pollReconnectRecovery(
|
|
695
|
+
name: string,
|
|
696
|
+
client: Client,
|
|
697
|
+
): Promise<void> {
|
|
698
|
+
const maxAttempts = 10;
|
|
699
|
+
const delay = 3000; // Match SDK's reconnection delay
|
|
700
|
+
for (let i = 0; i < maxAttempts; i++) {
|
|
701
|
+
await new Promise((r) => setTimeout(r, delay));
|
|
702
|
+
const serverStatus = this.servers.get(name);
|
|
703
|
+
if (serverStatus?.status !== "reconnecting") {
|
|
704
|
+
return; // Status changed by onclose or user action — stop polling
|
|
705
|
+
}
|
|
706
|
+
try {
|
|
707
|
+
const toolsResponse = await client.listTools();
|
|
708
|
+
const tools =
|
|
709
|
+
toolsResponse.tools?.map((tool) => ({
|
|
710
|
+
name: tool.name,
|
|
711
|
+
description: tool.description,
|
|
712
|
+
inputSchema: tool.inputSchema,
|
|
713
|
+
})) || [];
|
|
714
|
+
logger?.info(
|
|
715
|
+
`MCP Server ${name} auto-reconnected successfully (attempt ${i + 1})`,
|
|
716
|
+
);
|
|
717
|
+
this.updateServerStatus(name, {
|
|
718
|
+
status: "connected",
|
|
719
|
+
tools,
|
|
720
|
+
toolCount: tools.length,
|
|
721
|
+
lastConnected: Date.now(),
|
|
722
|
+
error: undefined,
|
|
723
|
+
});
|
|
724
|
+
this.reconnectAttempts.delete(name);
|
|
725
|
+
return;
|
|
726
|
+
} catch {
|
|
727
|
+
logger?.debug(
|
|
728
|
+
`MCP Server ${name} reconnect recovery check ${i + 1}/${maxAttempts} failed`,
|
|
729
|
+
);
|
|
730
|
+
}
|
|
731
|
+
}
|
|
732
|
+
// If we exhausted attempts, fall through to McpManager's own reconnect
|
|
733
|
+
logger?.warn(
|
|
734
|
+
`MCP Server ${name} SDK auto-reconnect did not recover after ${maxAttempts} attempts`,
|
|
735
|
+
);
|
|
736
|
+
}
|
|
737
|
+
|
|
634
738
|
private cancelReconnect(name: string): void {
|
|
635
739
|
const timer = this.reconnectTimers.get(name);
|
|
636
740
|
if (timer) {
|
|
@@ -846,7 +950,7 @@ export class McpManager {
|
|
|
846
950
|
this.resolverCtx,
|
|
847
951
|
);
|
|
848
952
|
|
|
849
|
-
// Update the stored config
|
|
953
|
+
// Update the stored config, preserving originalUrl
|
|
850
954
|
this.servers.set(name, {
|
|
851
955
|
...server,
|
|
852
956
|
config: resolvedConfig,
|
|
@@ -859,7 +963,9 @@ export class McpManager {
|
|
|
859
963
|
// Determine if reconnection is needed
|
|
860
964
|
const wasConnected = this.connections.has(name);
|
|
861
965
|
const wasDisconnected =
|
|
862
|
-
server.status === "disconnected" ||
|
|
966
|
+
server.status === "disconnected" ||
|
|
967
|
+
server.status === "error" ||
|
|
968
|
+
server.status === "reconnecting";
|
|
863
969
|
|
|
864
970
|
if (wasConnected) {
|
|
865
971
|
// Disconnect first, then reconnect with new resolved config
|
|
@@ -45,8 +45,6 @@ import { logger } from "../utils/globalLogger.js";
|
|
|
45
45
|
|
|
46
46
|
import type { SubagentConfiguration } from "../utils/subagentParser.js";
|
|
47
47
|
import type { SkillMetadata } from "../types/skills.js";
|
|
48
|
-
import { toolSearchTool } from "../tools/toolSearchTool.js";
|
|
49
|
-
import { isDeferredTool } from "../utils/isDeferredTool.js";
|
|
50
48
|
import { startToolSpan, endToolSpan } from "../telemetry/sessionTracing.js";
|
|
51
49
|
|
|
52
50
|
export interface ToolManagerOptions {
|
|
@@ -134,7 +132,6 @@ class ToolManager {
|
|
|
134
132
|
webFetchTool,
|
|
135
133
|
enterWorktreeTool,
|
|
136
134
|
exitWorktreeTool,
|
|
137
|
-
toolSearchTool,
|
|
138
135
|
];
|
|
139
136
|
|
|
140
137
|
for (const tool of builtInTools) {
|
|
@@ -210,7 +207,7 @@ class ToolManager {
|
|
|
210
207
|
permissionMode: effectivePermissionMode,
|
|
211
208
|
canUseToolCallback,
|
|
212
209
|
permissionManager,
|
|
213
|
-
toolManager: this,
|
|
210
|
+
toolManager: this,
|
|
214
211
|
taskManager:
|
|
215
212
|
this.container.get<import("../services/taskManager.js").TaskManager>(
|
|
216
213
|
"TaskManager",
|
|
@@ -349,13 +346,10 @@ class ToolManager {
|
|
|
349
346
|
availableSkills?: SkillMetadata[];
|
|
350
347
|
workdir?: string;
|
|
351
348
|
isSubagent?: boolean;
|
|
352
|
-
/** Set of discovered deferred tool names to include in the API call */
|
|
353
|
-
discoveredTools?: Set<string>;
|
|
354
349
|
}): ChatCompletionFunctionTool[] {
|
|
355
350
|
const permissionManager =
|
|
356
351
|
this.container.get<PermissionManager>("PermissionManager");
|
|
357
352
|
const effectivePermissionMode = this.getPermissionMode();
|
|
358
|
-
const discoveredTools = options?.discoveredTools;
|
|
359
353
|
const builtInToolsConfig = Array.from(this.toolsRegistry.values())
|
|
360
354
|
.filter((tool) => {
|
|
361
355
|
// If tool is explicitly denied by name in permission rules, filter it out
|
|
@@ -380,10 +374,6 @@ class ToolManager {
|
|
|
380
374
|
effectivePermissionMode !== "bypassPermissions"
|
|
381
375
|
);
|
|
382
376
|
}
|
|
383
|
-
// Exclude deferred tools that haven't been discovered yet
|
|
384
|
-
if (isDeferredTool(tool) && !discoveredTools?.has(tool.name)) {
|
|
385
|
-
return false;
|
|
386
|
-
}
|
|
387
377
|
return true;
|
|
388
378
|
})
|
|
389
379
|
.map((tool) => {
|
|
@@ -406,10 +396,6 @@ class ToolManager {
|
|
|
406
396
|
if (permissionManager?.isToolDenied(tool.function.name)) {
|
|
407
397
|
return false;
|
|
408
398
|
}
|
|
409
|
-
// Exclude MCP tools that haven't been discovered yet
|
|
410
|
-
if (discoveredTools && !discoveredTools.has(tool.function.name)) {
|
|
411
|
-
return false;
|
|
412
|
-
}
|
|
413
399
|
return true;
|
|
414
400
|
});
|
|
415
401
|
return [...builtInToolsConfig, ...mcpToolsConfig];
|
|
@@ -453,23 +439,6 @@ class ToolManager {
|
|
|
453
439
|
return this.container.get<PermissionManager>("PermissionManager");
|
|
454
440
|
}
|
|
455
441
|
|
|
456
|
-
/**
|
|
457
|
-
* Get the names of all deferred tools (those that require ToolSearch to discover).
|
|
458
|
-
*/
|
|
459
|
-
public getDeferredToolNames(): string[] {
|
|
460
|
-
const permissionManager =
|
|
461
|
-
this.container.get<PermissionManager>("PermissionManager");
|
|
462
|
-
const builtInDeferred = Array.from(this.toolsRegistry.values())
|
|
463
|
-
.filter((tool) => isDeferredTool(tool))
|
|
464
|
-
.filter((tool) => !permissionManager?.isToolDenied(tool.name))
|
|
465
|
-
.map((tool) => tool.name);
|
|
466
|
-
const mcpDeferred = this.mcpManager
|
|
467
|
-
.getMcpToolsConfig()
|
|
468
|
-
.filter((tool) => !permissionManager?.isToolDenied(tool.function.name))
|
|
469
|
-
.map((tool) => tool.function.name);
|
|
470
|
-
return [...builtInDeferred, ...mcpDeferred];
|
|
471
|
-
}
|
|
472
|
-
|
|
473
442
|
/**
|
|
474
443
|
* Get the task manager
|
|
475
444
|
*/
|