wave-agent-sdk 0.18.1 → 0.18.2
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/managers/forkedAgentManager.js +1 -1
- package/dist/managers/subagentManager.d.ts.map +1 -1
- package/dist/managers/subagentManager.js +7 -1
- package/dist/tools/bashTool.d.ts.map +1 -1
- package/dist/tools/bashTool.js +12 -1
- package/dist/utils/shellResolver.d.ts +3 -0
- package/dist/utils/shellResolver.d.ts.map +1 -0
- package/dist/utils/shellResolver.js +25 -0
- package/package.json +1 -1
- package/src/managers/forkedAgentManager.ts +1 -1
- package/src/managers/subagentManager.ts +10 -1
- package/src/tools/bashTool.ts +14 -1
- package/src/utils/shellResolver.ts +31 -0
|
@@ -63,7 +63,7 @@ export class ForkedAgentManager {
|
|
|
63
63
|
try {
|
|
64
64
|
if (entry.logStream && !entry.logStream.destroyed) {
|
|
65
65
|
entry.logStream.write(`[${new Date().toISOString()}] Final response:\n${result}\n`);
|
|
66
|
-
entry.logStream.write(`[${new Date().toISOString()}] Agent completed
|
|
66
|
+
entry.logStream.write(`[${new Date().toISOString()}] Agent completed\n`);
|
|
67
67
|
entry.logStream.end();
|
|
68
68
|
}
|
|
69
69
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagentManager.d.ts","sourceRoot":"","sources":["../../src/managers/subagentManager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"subagentManager.d.ts","sourceRoot":"","sources":["../../src/managers/subagentManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -407,7 +407,7 @@ export class SubagentManager {
|
|
|
407
407
|
if (instance.logStream && response) {
|
|
408
408
|
instance.logStream.write(`[${new Date().toISOString()}] Final response:\n${response}\n`);
|
|
409
409
|
}
|
|
410
|
-
instance.logStream?.write(`[${new Date().toISOString()}] Agent completed
|
|
410
|
+
instance.logStream?.write(`[${new Date().toISOString()}] Agent completed\n`);
|
|
411
411
|
instance.logStream?.end();
|
|
412
412
|
const task = backgroundTaskManager.getTask(instance.backgroundTaskId);
|
|
413
413
|
if (task) {
|
|
@@ -608,6 +608,12 @@ export class SubagentManager {
|
|
|
608
608
|
this.callbacks.onSubagentLatestTotalTokensChange(subagentId, tokens);
|
|
609
609
|
}
|
|
610
610
|
},
|
|
611
|
+
onErrorBlockAdded: (error) => {
|
|
612
|
+
const instance = this.instances.get(subagentId);
|
|
613
|
+
if (instance?.logStream) {
|
|
614
|
+
instance.logStream.write(`[${new Date().toISOString()}] Error: ${error}\n`);
|
|
615
|
+
}
|
|
616
|
+
},
|
|
611
617
|
};
|
|
612
618
|
}
|
|
613
619
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bashTool.d.ts","sourceRoot":"","sources":["../../src/tools/bashTool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bashTool.d.ts","sourceRoot":"","sources":["../../src/tools/bashTool.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAA2B,MAAM,YAAY,CAAC;AAuBtE;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,UAmiBtB,CAAC"}
|
package/dist/tools/bashTool.js
CHANGED
|
@@ -3,6 +3,7 @@ import * as fs from "fs";
|
|
|
3
3
|
import * as path from "path";
|
|
4
4
|
import * as os from "os";
|
|
5
5
|
import { logger } from "../utils/globalLogger.js";
|
|
6
|
+
import { resolveShellPath } from "../utils/shellResolver.js";
|
|
6
7
|
import { stripAnsiColors } from "../utils/stringUtils.js";
|
|
7
8
|
import { processToolResult } from "../utils/toolResultStorage.js";
|
|
8
9
|
import { BASH_MAX_OUTPUT_CHARS } from "../constants/toolLimits.js";
|
|
@@ -23,6 +24,7 @@ function isAutobackgroundingAllowed(command) {
|
|
|
23
24
|
*/
|
|
24
25
|
export const bashTool = {
|
|
25
26
|
name: BASH_TOOL_NAME,
|
|
27
|
+
isConcurrencySafe: false,
|
|
26
28
|
config: {
|
|
27
29
|
type: "function",
|
|
28
30
|
function: {
|
|
@@ -134,6 +136,15 @@ The working directory persists between commands. Try to maintain your current wo
|
|
|
134
136
|
error: "Command parameter is required and must be a string",
|
|
135
137
|
};
|
|
136
138
|
}
|
|
139
|
+
// Resolve shell path: on Windows, use Git Bash; on other platforms, use default
|
|
140
|
+
const shellPath = resolveShellPath();
|
|
141
|
+
if (process.platform === "win32" && !shellPath) {
|
|
142
|
+
return {
|
|
143
|
+
success: false,
|
|
144
|
+
content: "",
|
|
145
|
+
error: "Git Bash not found. Please install Git for Windows or set GIT_BASH_PATH environment variable.",
|
|
146
|
+
};
|
|
147
|
+
}
|
|
137
148
|
// Validate timeout
|
|
138
149
|
if (timeout !== undefined &&
|
|
139
150
|
(typeof timeout !== "number" || timeout < 0 || timeout > 600000)) {
|
|
@@ -202,7 +213,7 @@ The working directory persists between commands. Try to maintain your current wo
|
|
|
202
213
|
const tempCwdFile = path.join(os.tmpdir(), `wave_cwd_${Date.now()}_${Math.random().toString(36).substring(2, 11)}.tmp`);
|
|
203
214
|
const wrappedCommand = `${command} && pwd -P >| ${tempCwdFile}`;
|
|
204
215
|
const child = spawn(wrappedCommand, {
|
|
205
|
-
shell: true,
|
|
216
|
+
shell: shellPath || true,
|
|
206
217
|
stdio: "pipe",
|
|
207
218
|
detached: true,
|
|
208
219
|
cwd: context.workdir,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shellResolver.d.ts","sourceRoot":"","sources":["../../src/utils/shellResolver.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,sBAAsB,UAGlC,CAAC;AAEF,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAuBrD"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
export const WINDOWS_GIT_BASH_PATHS = [
|
|
3
|
+
"C:\\Program Files\\Git\\bin\\bash.exe",
|
|
4
|
+
"C:\\Program Files (x86)\\Git\\bin\\bash.exe",
|
|
5
|
+
];
|
|
6
|
+
export function resolveShellPath() {
|
|
7
|
+
if (process.platform !== "win32") {
|
|
8
|
+
return undefined;
|
|
9
|
+
}
|
|
10
|
+
if (process.env.GIT_BASH_PATH) {
|
|
11
|
+
return process.env.GIT_BASH_PATH;
|
|
12
|
+
}
|
|
13
|
+
const paths = [
|
|
14
|
+
...WINDOWS_GIT_BASH_PATHS,
|
|
15
|
+
process.env.LOCALAPPDATA
|
|
16
|
+
? `${process.env.LOCALAPPDATA}\\Programs\\Git\\bin\\bash.exe`
|
|
17
|
+
: null,
|
|
18
|
+
].filter(Boolean);
|
|
19
|
+
for (const path of paths) {
|
|
20
|
+
if (fs.existsSync(path)) {
|
|
21
|
+
return path;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
package/package.json
CHANGED
|
@@ -138,7 +138,7 @@ export class ForkedAgentManager {
|
|
|
138
138
|
`[${new Date().toISOString()}] Final response:\n${result}\n`,
|
|
139
139
|
);
|
|
140
140
|
entry.logStream.write(
|
|
141
|
-
`[${new Date().toISOString()}] Agent completed
|
|
141
|
+
`[${new Date().toISOString()}] Agent completed\n`,
|
|
142
142
|
);
|
|
143
143
|
entry.logStream.end();
|
|
144
144
|
}
|
|
@@ -631,7 +631,7 @@ export class SubagentManager {
|
|
|
631
631
|
);
|
|
632
632
|
}
|
|
633
633
|
instance.logStream?.write(
|
|
634
|
-
`[${new Date().toISOString()}] Agent completed
|
|
634
|
+
`[${new Date().toISOString()}] Agent completed\n`,
|
|
635
635
|
);
|
|
636
636
|
instance.logStream?.end();
|
|
637
637
|
const task = backgroundTaskManager.getTask(instance.backgroundTaskId);
|
|
@@ -876,6 +876,15 @@ export class SubagentManager {
|
|
|
876
876
|
this.callbacks.onSubagentLatestTotalTokensChange(subagentId, tokens);
|
|
877
877
|
}
|
|
878
878
|
},
|
|
879
|
+
|
|
880
|
+
onErrorBlockAdded: (error: string) => {
|
|
881
|
+
const instance = this.instances.get(subagentId);
|
|
882
|
+
if (instance?.logStream) {
|
|
883
|
+
instance.logStream.write(
|
|
884
|
+
`[${new Date().toISOString()}] Error: ${error}\n`,
|
|
885
|
+
);
|
|
886
|
+
}
|
|
887
|
+
},
|
|
879
888
|
};
|
|
880
889
|
}
|
|
881
890
|
}
|
package/src/tools/bashTool.ts
CHANGED
|
@@ -3,6 +3,7 @@ import * as fs from "fs";
|
|
|
3
3
|
import * as path from "path";
|
|
4
4
|
import * as os from "os";
|
|
5
5
|
import { logger } from "../utils/globalLogger.js";
|
|
6
|
+
import { resolveShellPath } from "../utils/shellResolver.js";
|
|
6
7
|
import { stripAnsiColors } from "../utils/stringUtils.js";
|
|
7
8
|
import { processToolResult } from "../utils/toolResultStorage.js";
|
|
8
9
|
import { BASH_MAX_OUTPUT_CHARS } from "../constants/toolLimits.js";
|
|
@@ -34,6 +35,7 @@ function isAutobackgroundingAllowed(command: string): boolean {
|
|
|
34
35
|
*/
|
|
35
36
|
export const bashTool: ToolPlugin = {
|
|
36
37
|
name: BASH_TOOL_NAME,
|
|
38
|
+
isConcurrencySafe: false,
|
|
37
39
|
config: {
|
|
38
40
|
type: "function",
|
|
39
41
|
function: {
|
|
@@ -151,6 +153,17 @@ The working directory persists between commands. Try to maintain your current wo
|
|
|
151
153
|
};
|
|
152
154
|
}
|
|
153
155
|
|
|
156
|
+
// Resolve shell path: on Windows, use Git Bash; on other platforms, use default
|
|
157
|
+
const shellPath = resolveShellPath();
|
|
158
|
+
if (process.platform === "win32" && !shellPath) {
|
|
159
|
+
return {
|
|
160
|
+
success: false,
|
|
161
|
+
content: "",
|
|
162
|
+
error:
|
|
163
|
+
"Git Bash not found. Please install Git for Windows or set GIT_BASH_PATH environment variable.",
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
|
|
154
167
|
// Validate timeout
|
|
155
168
|
if (
|
|
156
169
|
timeout !== undefined &&
|
|
@@ -236,7 +249,7 @@ The working directory persists between commands. Try to maintain your current wo
|
|
|
236
249
|
const wrappedCommand = `${command} && pwd -P >| ${tempCwdFile}`;
|
|
237
250
|
|
|
238
251
|
const child: ChildProcess = spawn(wrappedCommand, {
|
|
239
|
-
shell: true,
|
|
252
|
+
shell: shellPath || true,
|
|
240
253
|
stdio: "pipe",
|
|
241
254
|
detached: true,
|
|
242
255
|
cwd: context.workdir,
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
|
|
3
|
+
export const WINDOWS_GIT_BASH_PATHS = [
|
|
4
|
+
"C:\\Program Files\\Git\\bin\\bash.exe",
|
|
5
|
+
"C:\\Program Files (x86)\\Git\\bin\\bash.exe",
|
|
6
|
+
];
|
|
7
|
+
|
|
8
|
+
export function resolveShellPath(): string | undefined {
|
|
9
|
+
if (process.platform !== "win32") {
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
if (process.env.GIT_BASH_PATH) {
|
|
14
|
+
return process.env.GIT_BASH_PATH;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const paths = [
|
|
18
|
+
...WINDOWS_GIT_BASH_PATHS,
|
|
19
|
+
process.env.LOCALAPPDATA
|
|
20
|
+
? `${process.env.LOCALAPPDATA}\\Programs\\Git\\bin\\bash.exe`
|
|
21
|
+
: null,
|
|
22
|
+
].filter(Boolean) as string[];
|
|
23
|
+
|
|
24
|
+
for (const path of paths) {
|
|
25
|
+
if (fs.existsSync(path)) {
|
|
26
|
+
return path;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|