@cloudbase/agent-tools 0.0.6 → 0.0.7
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/CHANGELOG.md +9 -0
- package/dist/bash/bash-tool.d.ts +10 -4
- package/dist/bash/bash-tool.d.ts.map +1 -1
- package/dist/bash/bash-tool.js +160 -28
- package/dist/bash/bash-tool.js.map +1 -1
- package/dist/bash/operator/base-operator.d.ts +8 -4
- package/dist/bash/operator/base-operator.d.ts.map +1 -1
- package/dist/bash/operator/base-operator.js.map +1 -1
- package/dist/bash/operator/local-operator.d.ts +10 -1
- package/dist/bash/operator/local-operator.d.ts.map +1 -1
- package/dist/bash/operator/local-operator.js +231 -34
- package/dist/bash/operator/local-operator.js.map +1 -1
- package/dist/bash/operator/sandbox-operator.d.ts +0 -1
- package/dist/bash/operator/sandbox-operator.d.ts.map +1 -1
- package/dist/bash/operator/sandbox-operator.js +6 -15
- package/dist/bash/operator/sandbox-operator.js.map +1 -1
- package/dist/code_executers/unsafe_local_code_executor.d.ts.map +1 -1
- package/dist/code_executers/unsafe_local_code_executor.js +2 -21
- package/dist/code_executers/unsafe_local_code_executor.js.map +1 -1
- package/dist/fs/edit-tool.d.ts +6 -0
- package/dist/fs/edit-tool.d.ts.map +1 -1
- package/dist/fs/edit-tool.js +3 -2
- package/dist/fs/edit-tool.js.map +1 -1
- package/dist/fs/glob-tool.d.ts +13 -11
- package/dist/fs/glob-tool.d.ts.map +1 -1
- package/dist/fs/glob-tool.js +60 -25
- package/dist/fs/glob-tool.js.map +1 -1
- package/dist/fs/grep-tool.d.ts.map +1 -1
- package/dist/fs/grep-tool.js +79 -21
- package/dist/fs/grep-tool.js.map +1 -1
- package/dist/fs/index.d.ts +3 -0
- package/dist/fs/index.d.ts.map +1 -1
- package/dist/fs/index.js +8 -1
- package/dist/fs/index.js.map +1 -1
- package/dist/fs/multi-edit-tool.d.ts +54 -0
- package/dist/fs/multi-edit-tool.d.ts.map +1 -0
- package/dist/fs/multi-edit-tool.js +133 -0
- package/dist/fs/multi-edit-tool.js.map +1 -0
- package/dist/fs/multi-read-tool.d.ts +41 -0
- package/dist/fs/multi-read-tool.d.ts.map +1 -0
- package/dist/fs/multi-read-tool.js +74 -0
- package/dist/fs/multi-read-tool.js.map +1 -0
- package/dist/fs/multi-write-tool.d.ts +40 -0
- package/dist/fs/multi-write-tool.d.ts.map +1 -0
- package/dist/fs/multi-write-tool.js +77 -0
- package/dist/fs/multi-write-tool.js.map +1 -0
- package/dist/fs/read-tool.d.ts +5 -0
- package/dist/fs/read-tool.d.ts.map +1 -1
- package/dist/fs/read-tool.js +14 -12
- package/dist/fs/read-tool.js.map +1 -1
- package/dist/fs/toolkit.d.ts +2 -1
- package/dist/fs/toolkit.d.ts.map +1 -1
- package/dist/fs/toolkit.js +13 -1
- package/dist/fs/toolkit.js.map +1 -1
- package/dist/fs/write-tool.d.ts +4 -0
- package/dist/fs/write-tool.d.ts.map +1 -1
- package/dist/fs/write-tool.js +8 -6
- package/dist/fs/write-tool.js.map +1 -1
- package/dist/utils.d.ts +1 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +21 -0
- package/dist/utils.js.map +1 -1
- package/package.json +9 -1
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.multiEdit = multiEdit;
|
|
4
|
+
exports.createMultiEditTool = createMultiEditTool;
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
const utils_1 = require("../utils");
|
|
7
|
+
const edit_tool_1 = require("./edit-tool");
|
|
8
|
+
/**
|
|
9
|
+
* Group edits by file path
|
|
10
|
+
*/
|
|
11
|
+
function groupEditsByFile(edits) {
|
|
12
|
+
const grouped = new Map();
|
|
13
|
+
for (const edit of edits) {
|
|
14
|
+
const existing = grouped.get(edit.file_path) || [];
|
|
15
|
+
existing.push(edit);
|
|
16
|
+
grouped.set(edit.file_path, existing);
|
|
17
|
+
}
|
|
18
|
+
return grouped;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Process edits for a single file sequentially
|
|
22
|
+
*/
|
|
23
|
+
async function processFileEdits(context, filePath, edits) {
|
|
24
|
+
const results = [];
|
|
25
|
+
let successfulEdits = 0;
|
|
26
|
+
let failedEdits = 0;
|
|
27
|
+
// Process edits sequentially for this file
|
|
28
|
+
for (const edit of edits) {
|
|
29
|
+
try {
|
|
30
|
+
const result = await (0, edit_tool_1.editFile)(context, {
|
|
31
|
+
file_path: edit.file_path,
|
|
32
|
+
old_string: edit.old_string,
|
|
33
|
+
new_string: edit.new_string,
|
|
34
|
+
expected_replacements: edit.expected_replacements,
|
|
35
|
+
});
|
|
36
|
+
const editResult = {
|
|
37
|
+
success: result.success,
|
|
38
|
+
data: result.success ? result.data : undefined,
|
|
39
|
+
error: result.success
|
|
40
|
+
? undefined
|
|
41
|
+
: result.error?.message || "Unknown error",
|
|
42
|
+
old_string: edit.old_string,
|
|
43
|
+
new_string: edit.new_string,
|
|
44
|
+
};
|
|
45
|
+
results.push(editResult);
|
|
46
|
+
if (result.success) {
|
|
47
|
+
successfulEdits++;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
failedEdits++;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
results.push({
|
|
55
|
+
success: false,
|
|
56
|
+
error: error instanceof Error ? error.message : String(error),
|
|
57
|
+
old_string: edit.old_string,
|
|
58
|
+
new_string: edit.new_string,
|
|
59
|
+
});
|
|
60
|
+
failedEdits++;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return {
|
|
64
|
+
file_path: filePath,
|
|
65
|
+
edits: results,
|
|
66
|
+
totalEdits: edits.length,
|
|
67
|
+
successfulEdits,
|
|
68
|
+
failedEdits,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Edit multiple files with multiple edits each
|
|
73
|
+
*/
|
|
74
|
+
async function multiEdit(context, params) {
|
|
75
|
+
const { edits } = params;
|
|
76
|
+
const startTime = Date.now();
|
|
77
|
+
try {
|
|
78
|
+
// Group edits by file path
|
|
79
|
+
const groupedEdits = groupEditsByFile(edits);
|
|
80
|
+
const totalFiles = groupedEdits.size;
|
|
81
|
+
context.messageHandler?.currentText.append(`\n[multi-edit] Processing ${edits.length} edits across ${totalFiles} files...`);
|
|
82
|
+
// Process each file's edits concurrently (but edits within a file are sequential)
|
|
83
|
+
const filePromises = Array.from(groupedEdits.entries()).map(([filePath, fileEdits]) => processFileEdits(context, filePath, fileEdits));
|
|
84
|
+
const fileResults = await Promise.all(filePromises);
|
|
85
|
+
// Calculate totals
|
|
86
|
+
const totalEdits = edits.length;
|
|
87
|
+
const successfulEdits = fileResults.reduce((sum, file) => sum + file.successfulEdits, 0);
|
|
88
|
+
const failedEdits = fileResults.reduce((sum, file) => sum + file.failedEdits, 0);
|
|
89
|
+
const duration = Date.now() - startTime;
|
|
90
|
+
const summary = `Successfully applied ${successfulEdits} edit(s), failed ${failedEdits} edit(s) out of ${totalEdits} total across ${totalFiles} file(s) in ${duration}ms`;
|
|
91
|
+
context.messageHandler?.currentText.append(`\n[multi-edit] Completed: ${summary}\n`);
|
|
92
|
+
const multipleFilesResult = {
|
|
93
|
+
files: fileResults,
|
|
94
|
+
totalFiles,
|
|
95
|
+
totalEdits,
|
|
96
|
+
successfulEdits,
|
|
97
|
+
failedEdits,
|
|
98
|
+
summary,
|
|
99
|
+
};
|
|
100
|
+
return new utils_1.ToolResult({
|
|
101
|
+
success: true,
|
|
102
|
+
data: multipleFilesResult,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
107
|
+
context.messageHandler?.currentText.append(`\n[multi-edit] Failed: ${errorMessage}\n`);
|
|
108
|
+
return (0, utils_1.handleToolError)(error, "Multi-edit tool execution", "execution");
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Create multi-edit tool with execution context
|
|
113
|
+
*/
|
|
114
|
+
function createMultiEditTool(context) {
|
|
115
|
+
return (0, utils_1.tool)((params) => multiEdit(context, params), {
|
|
116
|
+
name: "MultiEdit",
|
|
117
|
+
description: `Edits multiple files with multiple edits each. Edits are grouped by file path - edits within the same file are processed sequentially to maintain consistency, while different files are processed concurrently for better performance.
|
|
118
|
+
**Usage:**
|
|
119
|
+
- Provide an array of edit requests
|
|
120
|
+
- Each request contains file_path, old_string, new_string, and optional expected_replacements
|
|
121
|
+
- Returns detailed results for each edit including success/failure status`,
|
|
122
|
+
schema: zod_1.z.object({
|
|
123
|
+
edits: zod_1.z
|
|
124
|
+
.array(edit_tool_1.editParametersSchema)
|
|
125
|
+
.describe("Array of edit requests to process"),
|
|
126
|
+
}),
|
|
127
|
+
getDisplay: ({ name, input }) => {
|
|
128
|
+
const totalFiles = new Set(input.edits.map((e) => e.file_path)).size;
|
|
129
|
+
return `> Using ${name} for ${input.edits.length} edits across ${totalFiles} files`;
|
|
130
|
+
},
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=multi-edit-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-edit-tool.js","sourceRoot":"","sources":["../../src/fs/multi-edit-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { ExecutionContext } from "./utils";
|
|
3
|
+
import { ToolResult } from "../utils";
|
|
4
|
+
import { IFileReadResult } from "./read-tool";
|
|
5
|
+
/**
|
|
6
|
+
* Multiple files read result
|
|
7
|
+
*/
|
|
8
|
+
export interface IMultipleFilesReadResult {
|
|
9
|
+
files: Array<{
|
|
10
|
+
file_path: string;
|
|
11
|
+
success: boolean;
|
|
12
|
+
data?: IFileReadResult;
|
|
13
|
+
error?: string;
|
|
14
|
+
}>;
|
|
15
|
+
total: number;
|
|
16
|
+
successfulCount: number;
|
|
17
|
+
failedCount: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Read multiple files concurrently
|
|
21
|
+
*/
|
|
22
|
+
export declare function multiRead(context: ExecutionContext, params: {
|
|
23
|
+
reads: {
|
|
24
|
+
file_path: string;
|
|
25
|
+
offset?: number;
|
|
26
|
+
endLine?: number;
|
|
27
|
+
limit?: number;
|
|
28
|
+
encoding?: string;
|
|
29
|
+
}[];
|
|
30
|
+
}): Promise<ToolResult<IMultipleFilesReadResult>>;
|
|
31
|
+
/**
|
|
32
|
+
* Create multi-read tool with execution context
|
|
33
|
+
*/
|
|
34
|
+
export declare function createMultiReadTool(context: ExecutionContext): import("../utils").DynamicTool<z.ZodObject<{
|
|
35
|
+
reads: z.ZodArray<z.ZodObject<{
|
|
36
|
+
file_path: z.ZodString;
|
|
37
|
+
offset: z.ZodOptional<z.ZodNumber>;
|
|
38
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
39
|
+
}, z.core.$strip>>;
|
|
40
|
+
}, z.core.$strip>, Record<string, unknown>, IMultipleFilesReadResult>;
|
|
41
|
+
//# sourceMappingURL=multi-read-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-read-tool.d.ts","sourceRoot":"","sources":["../../src/fs/multi-read-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAQ,UAAU,EAAmB,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAQ,eAAe,EAAwB,MAAM,aAAa,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,KAAK,CAAC;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,OAAO,CAAC;QACjB,IAAI,CAAC,EAAE,eAAe,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE;IACN,KAAK,EAAE;QACL,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,EAAE,CAAC;CACL,GACA,OAAO,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC,CAqD/C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB;;;;;;sEAe5D"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.multiRead = multiRead;
|
|
4
|
+
exports.createMultiReadTool = createMultiReadTool;
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
const utils_1 = require("../utils");
|
|
7
|
+
const read_tool_1 = require("./read-tool");
|
|
8
|
+
/**
|
|
9
|
+
* Read multiple files concurrently
|
|
10
|
+
*/
|
|
11
|
+
async function multiRead(context, params) {
|
|
12
|
+
const { reads = [] } = params;
|
|
13
|
+
const startTime = Date.now();
|
|
14
|
+
try {
|
|
15
|
+
// Process all files concurrently
|
|
16
|
+
const promises = reads.map(async (fileReadRequest) => {
|
|
17
|
+
try {
|
|
18
|
+
const result = await (0, read_tool_1.read)(context, fileReadRequest);
|
|
19
|
+
return {
|
|
20
|
+
file_path: fileReadRequest.file_path,
|
|
21
|
+
...result,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
return {
|
|
26
|
+
file_path: fileReadRequest.file_path,
|
|
27
|
+
success: false,
|
|
28
|
+
error: error instanceof Error ? error.message : String(error),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
const results = await Promise.all(promises);
|
|
33
|
+
const successfulCount = results.filter((r) => r.success).length;
|
|
34
|
+
const failedCount = results.length - successfulCount;
|
|
35
|
+
const duration = Date.now() - startTime;
|
|
36
|
+
const summary = `Successfully read ${successfulCount} file(s), failed ${failedCount} file(s) out of ${reads.length} total in ${duration}ms`;
|
|
37
|
+
context.messageHandler?.currentText.append(`\n[multi-read] Completed: ${summary}\n`);
|
|
38
|
+
const multipleFilesResult = {
|
|
39
|
+
files: results,
|
|
40
|
+
total: reads.length,
|
|
41
|
+
successfulCount,
|
|
42
|
+
failedCount,
|
|
43
|
+
};
|
|
44
|
+
return new utils_1.ToolResult({
|
|
45
|
+
success: true,
|
|
46
|
+
data: multipleFilesResult,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
51
|
+
context.messageHandler?.currentText.append(`\n[multi-read] Failed: ${errorMessage}\n`);
|
|
52
|
+
return (0, utils_1.handleToolError)(error, "Multi-read tool execution", "execution");
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Create multi-read tool with execution context
|
|
57
|
+
*/
|
|
58
|
+
function createMultiReadTool(context) {
|
|
59
|
+
return (0, utils_1.tool)((params) => multiRead(context, params), {
|
|
60
|
+
name: "MultiRead",
|
|
61
|
+
description: `Reads multiple files concurrently.
|
|
62
|
+
**Usage:**
|
|
63
|
+
- Provide an array of file paths to read
|
|
64
|
+
- All files are processed concurrently
|
|
65
|
+
- Returns detailed results for each file including success/failure status`,
|
|
66
|
+
schema: zod_1.z.object({
|
|
67
|
+
reads: zod_1.z.array(read_tool_1.readParametersSchema),
|
|
68
|
+
}),
|
|
69
|
+
getDisplay: ({ name, input }) => {
|
|
70
|
+
return `> Using ${name} for ${input.reads.length} files`;
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=multi-read-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-read-tool.js","sourceRoot":"","sources":["../../src/fs/multi-read-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { ExecutionContext } from "./utils";
|
|
3
|
+
import { ToolResult } from "../utils";
|
|
4
|
+
import { IFileWriteResult } from "./write-tool";
|
|
5
|
+
/**
|
|
6
|
+
* Single file write request
|
|
7
|
+
*/
|
|
8
|
+
export interface IFileWriteRequest {
|
|
9
|
+
file_path: string;
|
|
10
|
+
content: string;
|
|
11
|
+
create_dirs?: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Multiple files write result
|
|
15
|
+
*/
|
|
16
|
+
export interface IMultipleFilesWriteResult {
|
|
17
|
+
files: Array<{
|
|
18
|
+
file_path: string;
|
|
19
|
+
success: boolean;
|
|
20
|
+
data?: IFileWriteResult;
|
|
21
|
+
error?: string;
|
|
22
|
+
}>;
|
|
23
|
+
total: number;
|
|
24
|
+
successfulCount: number;
|
|
25
|
+
failedCount: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Write multiple files concurrently
|
|
29
|
+
*/
|
|
30
|
+
export declare function multiWrite(context: ExecutionContext, params: any): Promise<ToolResult<IMultipleFilesWriteResult>>;
|
|
31
|
+
/**
|
|
32
|
+
* Create multi-write tool with execution context
|
|
33
|
+
*/
|
|
34
|
+
export declare function createMultiWriteTool(context: ExecutionContext): import("../utils").DynamicTool<z.ZodObject<{
|
|
35
|
+
writes: z.ZodArray<z.ZodObject<{
|
|
36
|
+
file_path: z.ZodString;
|
|
37
|
+
content: z.ZodString;
|
|
38
|
+
}, z.core.$strip>>;
|
|
39
|
+
}, z.core.$strip>, Record<string, unknown>, IMultipleFilesWriteResult>;
|
|
40
|
+
//# sourceMappingURL=multi-write-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-write-tool.d.ts","sourceRoot":"","sources":["../../src/fs/multi-write-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAQ,UAAU,EAAmB,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAS,gBAAgB,EAAyB,MAAM,cAAc,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,KAAK,CAAC;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,OAAO,CAAC;QACjB,IAAI,CAAC,EAAE,gBAAgB,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,gBAAgB,EACzB,MAAM,KAAA,GACL,OAAO,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC,CAuDhD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,gBAAgB;;;;;uEAkB7D"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.multiWrite = multiWrite;
|
|
4
|
+
exports.createMultiWriteTool = createMultiWriteTool;
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
const utils_1 = require("../utils");
|
|
7
|
+
const write_tool_1 = require("./write-tool");
|
|
8
|
+
/**
|
|
9
|
+
* Write multiple files concurrently
|
|
10
|
+
*/
|
|
11
|
+
async function multiWrite(context, params) {
|
|
12
|
+
const { writes = [] } = params;
|
|
13
|
+
const startTime = Date.now();
|
|
14
|
+
try {
|
|
15
|
+
context.messageHandler?.currentText.append(`\n[multi-write] Writing ${writes.length} files concurrently...`);
|
|
16
|
+
// Process all files concurrently
|
|
17
|
+
const promises = writes.map(async (fileRequest) => {
|
|
18
|
+
try {
|
|
19
|
+
const res = await (0, write_tool_1.write)(context, fileRequest);
|
|
20
|
+
return {
|
|
21
|
+
file_path: fileRequest.file_path,
|
|
22
|
+
...res,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
return {
|
|
27
|
+
file_path: fileRequest.file_path,
|
|
28
|
+
success: false,
|
|
29
|
+
error: error instanceof Error ? error.message : String(error),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
const results = await Promise.all(promises);
|
|
34
|
+
const successfulFiles = results.filter((r) => r.success).length;
|
|
35
|
+
const failedFiles = results.length - successfulFiles;
|
|
36
|
+
const summary = `Successfully wrote ${successfulFiles} file(s), failed ${failedFiles} file(s) out of ${writes.length} total`;
|
|
37
|
+
context.messageHandler?.currentText.append(`\n[multi-write] Completed: ${summary}\n`);
|
|
38
|
+
const multipleFilesResult = {
|
|
39
|
+
files: results,
|
|
40
|
+
total: writes.length,
|
|
41
|
+
successfulCount: successfulFiles,
|
|
42
|
+
failedCount: failedFiles,
|
|
43
|
+
};
|
|
44
|
+
return new utils_1.ToolResult({
|
|
45
|
+
success: true,
|
|
46
|
+
data: multipleFilesResult,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
51
|
+
context.messageHandler?.currentText.append(`\n[multi-write] Failed: ${errorMessage}\n`);
|
|
52
|
+
return (0, utils_1.handleToolError)(error, "Multi-write tool execution", "execution");
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Create multi-write tool with execution context
|
|
57
|
+
*/
|
|
58
|
+
function createMultiWriteTool(context) {
|
|
59
|
+
return (0, utils_1.tool)((params) => multiWrite(context, params), {
|
|
60
|
+
name: "MultiWrite",
|
|
61
|
+
description: `Writes multiple files concurrently.
|
|
62
|
+
**Usage:**
|
|
63
|
+
- Provide an array of file write requests
|
|
64
|
+
- Each request contains file_path and content.
|
|
65
|
+
- All files are written concurrently
|
|
66
|
+
- Returns detailed results for each file including success/failure status`,
|
|
67
|
+
schema: zod_1.z.object({
|
|
68
|
+
writes: zod_1.z
|
|
69
|
+
.array(write_tool_1.writeParametersSchema)
|
|
70
|
+
.describe("Array of file write requests to process concurrently"),
|
|
71
|
+
}),
|
|
72
|
+
getDisplay: ({ name, input }) => {
|
|
73
|
+
return `> Using ${name} for ${input.writes.length} files`;
|
|
74
|
+
},
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=multi-write-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-write-tool.js","sourceRoot":"","sources":["../../src/fs/multi-write-tool.ts"],"names":[],"mappings":"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"}
|
package/dist/fs/read-tool.d.ts
CHANGED
|
@@ -21,6 +21,11 @@ export declare function read(context: ExecutionContext, params: {
|
|
|
21
21
|
limit?: number;
|
|
22
22
|
encoding?: string;
|
|
23
23
|
}): Promise<ToolResult<IFileReadResult>>;
|
|
24
|
+
export declare const readParametersSchema: z.ZodObject<{
|
|
25
|
+
file_path: z.ZodString;
|
|
26
|
+
offset: z.ZodOptional<z.ZodNumber>;
|
|
27
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
28
|
+
}, z.core.$strip>;
|
|
24
29
|
/**
|
|
25
30
|
* Create SuperDesign read tool with execution context
|
|
26
31
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-tool.d.ts","sourceRoot":"","sources":["../../src/fs/read-tool.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAKjB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAQ,UAAU,EAAmB,MAAM,UAAU,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd;
|
|
1
|
+
{"version":3,"file":"read-tool.d.ts","sourceRoot":"","sources":["../../src/fs/read-tool.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAKjB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAQ,UAAU,EAAmB,MAAM,UAAU,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd;AAmKD,wBAAsB,IAAI,CACxB,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE;IACN,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAyHtC;AAgBD,eAAO,MAAM,oBAAoB;;;;iBAc/B,CAAC;AAEH;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,gBAAgB;;;;6DAUvD"}
|
package/dist/fs/read-tool.js
CHANGED
|
@@ -33,6 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.readParametersSchema = void 0;
|
|
36
37
|
exports.read = read;
|
|
37
38
|
exports.createReadTool = createReadTool;
|
|
38
39
|
const path = __importStar(require("path"));
|
|
@@ -194,7 +195,7 @@ async function read(context, params) {
|
|
|
194
195
|
// Process based on file type
|
|
195
196
|
switch (fileType) {
|
|
196
197
|
case "text": {
|
|
197
|
-
const result = await processTextFile(context, absolutePath, startLine,
|
|
198
|
+
const result = await processTextFile(context, absolutePath, startLine, lineCount, endLine, encoding);
|
|
198
199
|
content = result.content;
|
|
199
200
|
metadata = result.metadata;
|
|
200
201
|
break;
|
|
@@ -245,6 +246,17 @@ function catWithLineNumbers(content, offset = 0) {
|
|
|
245
246
|
});
|
|
246
247
|
return numberedLines.join("\n");
|
|
247
248
|
}
|
|
249
|
+
exports.readParametersSchema = v4_1.z.object({
|
|
250
|
+
file_path: v4_1.z.string().describe("The absolute path to the file to read"),
|
|
251
|
+
offset: v4_1.z
|
|
252
|
+
.number()
|
|
253
|
+
.optional()
|
|
254
|
+
.describe("Optional: The number of lines to read. Only provide if the file is too large to read at once. Default: 0"),
|
|
255
|
+
limit: v4_1.z
|
|
256
|
+
.number()
|
|
257
|
+
.optional()
|
|
258
|
+
.describe("Optional: The line number to start reading from. Only provide if the file is too large to read at once. Default: undefined, which means start from the beginning."),
|
|
259
|
+
});
|
|
248
260
|
/**
|
|
249
261
|
* Create SuperDesign read tool with execution context
|
|
250
262
|
*/
|
|
@@ -252,17 +264,7 @@ function createReadTool(context) {
|
|
|
252
264
|
return (0, utils_2.tool)((params) => read(context, params), {
|
|
253
265
|
name: "Read",
|
|
254
266
|
description: "Reads a file from the local filesystem. You can access any file directly by using this tool.\nAssume this tool is able to read all files on the machine. If the User provides a path to a file assume that path is valid. It is okay to read a file that does not exist; an error will be returned.\n\nUsage:\n- The file_path parameter must be an absolute path, not a relative path\n- By default, it reads up to 2000 lines starting from the beginning of the file\n- You can optionally specify a line offset and limit (especially handy for long files), but it's recommended to read the whole file by not providing these parameters\n- Any lines longer than 2000 characters will be truncated\n- Results are returned using cat -n format, with line numbers starting at 1\n- You have the capability to call multiple tools in a single response. It is always better to speculatively read multiple files as a batch that are potentially useful. \n- If you read a file that exists but has empty contents you will receive a system reminder warning in place of file contents.",
|
|
255
|
-
schema:
|
|
256
|
-
file_path: v4_1.z.string().describe("The absolute path to the file to read"),
|
|
257
|
-
offset: v4_1.z
|
|
258
|
-
.number()
|
|
259
|
-
.optional()
|
|
260
|
-
.describe("Optional: The number of lines to read. Only provide if the file is too large to read at once."),
|
|
261
|
-
limit: v4_1.z
|
|
262
|
-
.number()
|
|
263
|
-
.optional()
|
|
264
|
-
.describe("Optional: The line number to start reading from. Only provide if the file is too large to read at once"),
|
|
265
|
-
}),
|
|
267
|
+
schema: exports.readParametersSchema,
|
|
266
268
|
getDisplay: ({ name, input }) => {
|
|
267
269
|
return `> Using ${name} for tool call: ${input.file_path || ""}`;
|
|
268
270
|
},
|
package/dist/fs/read-tool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-tool.js","sourceRoot":"","sources":["../../src/fs/read-tool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"read-tool.js","sourceRoot":"","sources":["../../src/fs/read-tool.ts"],"names":[],"mappings":"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"}
|
package/dist/fs/toolkit.d.ts
CHANGED
|
@@ -9,8 +9,9 @@ export interface FilesystemToolkitConfig {
|
|
|
9
9
|
* Mode for file editing operations
|
|
10
10
|
* - 'integrated': Use str-replace-editor tool (single tool for read/write/edit operations)
|
|
11
11
|
* - 'atomic': Use separate read, write, and edit tools
|
|
12
|
+
* - 'multi': Use multiple tools for read/write/edit operations
|
|
12
13
|
*/
|
|
13
|
-
mode: "integrated" | "atomic";
|
|
14
|
+
mode: "integrated" | "atomic" | "multi";
|
|
14
15
|
}
|
|
15
16
|
/**
|
|
16
17
|
* Options for creating FilesystemToolkit
|
package/dist/fs/toolkit.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolkit.d.ts","sourceRoot":"","sources":["../../src/fs/toolkit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"toolkit.d.ts","sourceRoot":"","sources":["../../src/fs/toolkit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAW3C,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;;;OAKG;IACH,IAAI,EAAE,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,wBAAyB,SAAQ,eAAe;IAC/D,OAAO,EAAE,gBAAgB,CAAC;IAC1B,MAAM,CAAC,EAAE,uBAAuB,CAAC;CAClC;AAED;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;IACzC,OAAO,EAAE,gBAAgB,CAG9B;IACF,OAAO,CAAC,MAAM,CAA0B;gBAE5B,OAAO,EAAE,wBAAwB;IAoB7C;;OAEG;cACa,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7C;;OAEG;IACH,OAAO,CAAC,eAAe;IA4CvB;;OAEG;IACH,qBAAqB,IAAI,QAAQ,EAAE;IAYnC;;OAEG;IACH,eAAe,IAAI,QAAQ,EAAE;IAM7B;;OAEG;IACH,SAAS,IAAI,uBAAuB;IAIpC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,QAAQ,GAAG,IAAI;IAO/C;;OAEG;IACH,QAAQ,IAAI;QACV,IAAI,EAAE,MAAM,CAAC;KACd;CAKF"}
|
package/dist/fs/toolkit.js
CHANGED
|
@@ -8,6 +8,9 @@ const glob_tool_1 = require("./glob-tool");
|
|
|
8
8
|
const grep_tool_1 = require("./grep-tool");
|
|
9
9
|
const ls_tool_1 = require("./ls-tool");
|
|
10
10
|
const str_replace_editor_1 = require("./str-replace-editor");
|
|
11
|
+
const multi_read_tool_1 = require("./multi-read-tool");
|
|
12
|
+
const multi_write_tool_1 = require("./multi-write-tool");
|
|
13
|
+
const multi_edit_tool_1 = require("./multi-edit-tool");
|
|
11
14
|
const utils_1 = require("../utils");
|
|
12
15
|
/**
|
|
13
16
|
* FilesystemToolkit provides a comprehensive set of file system tools
|
|
@@ -26,7 +29,7 @@ class FilesystemToolkit extends utils_1.BaseToolkit {
|
|
|
26
29
|
};
|
|
27
30
|
this.context = options.context;
|
|
28
31
|
this.config = {
|
|
29
|
-
mode: options.config?.mode || "
|
|
32
|
+
mode: options.config?.mode || "multi",
|
|
30
33
|
};
|
|
31
34
|
options.context.fsOperator.setWorkspaceRoot(options.context.workingDirectory);
|
|
32
35
|
this.initialize();
|
|
@@ -51,6 +54,15 @@ class FilesystemToolkit extends utils_1.BaseToolkit {
|
|
|
51
54
|
const strReplaceEditor = (0, str_replace_editor_1.createStrReplaceEditorTool)(this.context);
|
|
52
55
|
this.addTool(strReplaceEditor);
|
|
53
56
|
}
|
|
57
|
+
else if (this.config.mode === "multi") {
|
|
58
|
+
// Always add multi-file tools
|
|
59
|
+
const multiReadTool = (0, multi_read_tool_1.createMultiReadTool)(this.context);
|
|
60
|
+
this.addTool(multiReadTool);
|
|
61
|
+
const multiWriteTool = (0, multi_write_tool_1.createMultiWriteTool)(this.context);
|
|
62
|
+
this.addTool(multiWriteTool);
|
|
63
|
+
const multiEditTool = (0, multi_edit_tool_1.createMultiEditTool)(this.context);
|
|
64
|
+
this.addTool(multiEditTool);
|
|
65
|
+
}
|
|
54
66
|
else {
|
|
55
67
|
// Atomic mode: use separate read, write, edit tools
|
|
56
68
|
const readTool = (0, read_tool_1.createReadTool)(this.context);
|
package/dist/fs/toolkit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolkit.js","sourceRoot":"","sources":["../../src/fs/toolkit.ts"],"names":[],"mappings":";;;AACA,2CAA6C;AAC7C,6CAA+C;AAC/C,2CAA6C;AAC7C,2CAA6C;AAC7C,2CAA6C;AAC7C,uCAAyC;AACzC,6DAAkE;AAClE,oCAAiD;
|
|
1
|
+
{"version":3,"file":"toolkit.js","sourceRoot":"","sources":["../../src/fs/toolkit.ts"],"names":[],"mappings":"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"}
|
package/dist/fs/write-tool.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { z } from "zod/v4";
|
|
2
2
|
import { ExecutionContext } from "./utils";
|
|
3
3
|
import { ToolResult } from "../utils";
|
|
4
|
+
export declare const writeParametersSchema: z.ZodObject<{
|
|
5
|
+
file_path: z.ZodString;
|
|
6
|
+
content: z.ZodString;
|
|
7
|
+
}, z.core.$strip>;
|
|
4
8
|
/**
|
|
5
9
|
* Write tool result with metadata
|
|
6
10
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-tool.d.ts","sourceRoot":"","sources":["../../src/fs/write-tool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAIjB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAQ,UAAU,EAAmB,MAAM,UAAU,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,KAAK,CACzB,OAAO,EAAE,gBAAgB,EACzB,EAAE,SAAc,EAAE,OAAY,EAAE,WAAkB,EAAE;;;;CAAA,GACnD,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"write-tool.d.ts","sourceRoot":"","sources":["../../src/fs/write-tool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAIjB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAQ,UAAU,EAAmB,MAAM,UAAU,CAAC;AAE7D,eAAO,MAAM,qBAAqB;;;iBAOhC,CAAA;AAEF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,KAAK,CACzB,OAAO,EAAE,gBAAgB,EACzB,EAAE,SAAc,EAAE,OAAY,EAAE,WAAkB,EAAE;;;;CAAA,GACnD,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAyEvC;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB;;;8DAUxD"}
|
package/dist/fs/write-tool.js
CHANGED
|
@@ -33,12 +33,19 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.writeParametersSchema = void 0;
|
|
36
37
|
exports.write = write;
|
|
37
38
|
exports.createWriteTool = createWriteTool;
|
|
38
39
|
const path = __importStar(require("path"));
|
|
39
40
|
const v4_1 = require("zod/v4");
|
|
40
41
|
const utils_1 = require("./utils");
|
|
41
42
|
const utils_2 = require("../utils");
|
|
43
|
+
exports.writeParametersSchema = v4_1.z.object({
|
|
44
|
+
file_path: v4_1.z
|
|
45
|
+
.string()
|
|
46
|
+
.describe("The absolute path to the file to write (must be absolute, not relative)"),
|
|
47
|
+
content: v4_1.z.string().describe("Content to write to the file"),
|
|
48
|
+
});
|
|
42
49
|
async function write(context, { file_path = "", content = "", create_dirs = true }) {
|
|
43
50
|
const startTime = Date.now();
|
|
44
51
|
try {
|
|
@@ -96,12 +103,7 @@ function createWriteTool(context) {
|
|
|
96
103
|
return (0, utils_2.tool)((params) => write(context, params), {
|
|
97
104
|
name: "Write",
|
|
98
105
|
description: "Writes a file to the local filesystem.\n\nUsage:\n- This tool will overwrite the existing file if there is one at the provided path.\n- If this is an existing file, you MUST use the Read tool first to read the file's contents. This tool will fail if you did not read the file first.\n- ALWAYS prefer editing existing files in the codebase. NEVER write new files unless explicitly required.\n- NEVER proactively create documentation files (*.md) or README files. Only create documentation files if explicitly requested by the User.",
|
|
99
|
-
schema:
|
|
100
|
-
file_path: v4_1.z
|
|
101
|
-
.string()
|
|
102
|
-
.describe("The absolute path to the file to write (must be absolute, not relative)"),
|
|
103
|
-
content: v4_1.z.string().describe("Content to write to the file"),
|
|
104
|
-
}),
|
|
106
|
+
schema: exports.writeParametersSchema,
|
|
105
107
|
getDisplay: ({ name, input }) => {
|
|
106
108
|
return `> Using ${name} for tool call: ${input.file_path || ""}`;
|
|
107
109
|
},
|