kagent-ts 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +395 -0
- package/dist/compression/interface.d.ts +26 -0
- package/dist/compression/interface.d.ts.map +1 -0
- package/dist/compression/interface.js +3 -0
- package/dist/compression/interface.js.map +1 -0
- package/dist/compression/sliding-window.d.ts +21 -0
- package/dist/compression/sliding-window.d.ts.map +1 -0
- package/dist/compression/sliding-window.js +55 -0
- package/dist/compression/sliding-window.js.map +1 -0
- package/dist/compression/types.d.ts +12 -0
- package/dist/compression/types.d.ts.map +1 -0
- package/dist/compression/types.js +3 -0
- package/dist/compression/types.js.map +1 -0
- package/dist/context/context-manager.d.ts +76 -0
- package/dist/context/context-manager.d.ts.map +1 -0
- package/dist/context/context-manager.js +132 -0
- package/dist/context/context-manager.js.map +1 -0
- package/dist/context/types.d.ts +35 -0
- package/dist/context/types.d.ts.map +1 -0
- package/dist/context/types.js +3 -0
- package/dist/context/types.js.map +1 -0
- package/dist/core/agent.d.ts +288 -0
- package/dist/core/agent.d.ts.map +1 -0
- package/dist/core/agent.js +398 -0
- package/dist/core/agent.js.map +1 -0
- package/dist/core/hooks.d.ts +34 -0
- package/dist/core/hooks.d.ts.map +1 -0
- package/dist/core/hooks.js +3 -0
- package/dist/core/hooks.js.map +1 -0
- package/dist/core/plan-solve-agent.d.ts +114 -0
- package/dist/core/plan-solve-agent.d.ts.map +1 -0
- package/dist/core/plan-solve-agent.js +450 -0
- package/dist/core/plan-solve-agent.js.map +1 -0
- package/dist/core/react-agent.d.ts +52 -0
- package/dist/core/react-agent.d.ts.map +1 -0
- package/dist/core/react-agent.js +266 -0
- package/dist/core/react-agent.js.map +1 -0
- package/dist/core/response-schema.d.ts +91 -0
- package/dist/core/response-schema.d.ts.map +1 -0
- package/dist/core/response-schema.js +292 -0
- package/dist/core/response-schema.js.map +1 -0
- package/dist/core/types.d.ts +6 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +3 -0
- package/dist/core/types.js.map +1 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +67 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/interface.d.ts +87 -0
- package/dist/llm/interface.d.ts.map +1 -0
- package/dist/llm/interface.js +3 -0
- package/dist/llm/interface.js.map +1 -0
- package/dist/llm/openai-provider.d.ts +92 -0
- package/dist/llm/openai-provider.d.ts.map +1 -0
- package/dist/llm/openai-provider.js +262 -0
- package/dist/llm/openai-provider.js.map +1 -0
- package/dist/messages/message.d.ts +50 -0
- package/dist/messages/message.d.ts.map +1 -0
- package/dist/messages/message.js +87 -0
- package/dist/messages/message.js.map +1 -0
- package/dist/messages/types.d.ts +31 -0
- package/dist/messages/types.d.ts.map +1 -0
- package/dist/messages/types.js +14 -0
- package/dist/messages/types.js.map +1 -0
- package/dist/preferences/preference-manager.d.ts +88 -0
- package/dist/preferences/preference-manager.d.ts.map +1 -0
- package/dist/preferences/preference-manager.js +196 -0
- package/dist/preferences/preference-manager.js.map +1 -0
- package/dist/preferences/types.d.ts +27 -0
- package/dist/preferences/types.d.ts.map +1 -0
- package/dist/preferences/types.js +3 -0
- package/dist/preferences/types.js.map +1 -0
- package/dist/session/session-manager.d.ts +56 -0
- package/dist/session/session-manager.d.ts.map +1 -0
- package/dist/session/session-manager.js +156 -0
- package/dist/session/session-manager.js.map +1 -0
- package/dist/session/session-types.d.ts +51 -0
- package/dist/session/session-types.d.ts.map +1 -0
- package/dist/session/session-types.js +3 -0
- package/dist/session/session-types.js.map +1 -0
- package/dist/skills/file-skill-loader.d.ts +88 -0
- package/dist/skills/file-skill-loader.d.ts.map +1 -0
- package/dist/skills/file-skill-loader.js +365 -0
- package/dist/skills/file-skill-loader.js.map +1 -0
- package/dist/skills/index.d.ts +4 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +10 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/skill-manager.d.ts +133 -0
- package/dist/skills/skill-manager.d.ts.map +1 -0
- package/dist/skills/skill-manager.js +310 -0
- package/dist/skills/skill-manager.js.map +1 -0
- package/dist/skills/types.d.ts +42 -0
- package/dist/skills/types.d.ts.map +1 -0
- package/dist/skills/types.js +3 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/tools/builtin/edit-file.d.ts +12 -0
- package/dist/tools/builtin/edit-file.d.ts.map +1 -0
- package/dist/tools/builtin/edit-file.js +123 -0
- package/dist/tools/builtin/edit-file.js.map +1 -0
- package/dist/tools/builtin/glob-search.d.ts +11 -0
- package/dist/tools/builtin/glob-search.d.ts.map +1 -0
- package/dist/tools/builtin/glob-search.js +264 -0
- package/dist/tools/builtin/glob-search.js.map +1 -0
- package/dist/tools/builtin/grep-search.d.ts +14 -0
- package/dist/tools/builtin/grep-search.d.ts.map +1 -0
- package/dist/tools/builtin/grep-search.js +264 -0
- package/dist/tools/builtin/grep-search.js.map +1 -0
- package/dist/tools/builtin/index.d.ts +21 -0
- package/dist/tools/builtin/index.d.ts.map +1 -0
- package/dist/tools/builtin/index.js +53 -0
- package/dist/tools/builtin/index.js.map +1 -0
- package/dist/tools/builtin/read-file.d.ts +11 -0
- package/dist/tools/builtin/read-file.d.ts.map +1 -0
- package/dist/tools/builtin/read-file.js +122 -0
- package/dist/tools/builtin/read-file.js.map +1 -0
- package/dist/tools/builtin/write-file.d.ts +10 -0
- package/dist/tools/builtin/write-file.d.ts.map +1 -0
- package/dist/tools/builtin/write-file.js +89 -0
- package/dist/tools/builtin/write-file.js.map +1 -0
- package/dist/tools/circuit-breaker.d.ts +77 -0
- package/dist/tools/circuit-breaker.d.ts.map +1 -0
- package/dist/tools/circuit-breaker.js +102 -0
- package/dist/tools/circuit-breaker.js.map +1 -0
- package/dist/tools/error-tracker.d.ts +116 -0
- package/dist/tools/error-tracker.d.ts.map +1 -0
- package/dist/tools/error-tracker.js +484 -0
- package/dist/tools/error-tracker.js.map +1 -0
- package/dist/tools/tool-registry.d.ts +87 -0
- package/dist/tools/tool-registry.d.ts.map +1 -0
- package/dist/tools/tool-registry.js +188 -0
- package/dist/tools/tool-registry.js.map +1 -0
- package/dist/tools/types.d.ts +95 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +14 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/utils/token-counter.d.ts +31 -0
- package/dist/utils/token-counter.d.ts.map +1 -0
- package/dist/utils/token-counter.js +105 -0
- package/dist/utils/token-counter.js.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.GrepSearchTool = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
/**
|
|
40
|
+
* Search file contents using regex or plain text patterns.
|
|
41
|
+
*
|
|
42
|
+
* Parameters:
|
|
43
|
+
* - pattern (required): Regex or plain text to search for.
|
|
44
|
+
* - path (optional): File or directory to search in (default: current directory).
|
|
45
|
+
* - glob (optional): File pattern filter (e.g. "*.ts", "*.{ts,js}").
|
|
46
|
+
* - case_sensitive (optional): Whether the search is case-sensitive (default: false).
|
|
47
|
+
*
|
|
48
|
+
* Uses a recursive file walk with Node.js built-in fs — no external dependencies.
|
|
49
|
+
*/
|
|
50
|
+
exports.GrepSearchTool = {
|
|
51
|
+
name: "grep_search",
|
|
52
|
+
description: "Search for text patterns in files. Supports regex and plain text search, " +
|
|
53
|
+
"with optional file glob filtering and case-sensitivity control. " +
|
|
54
|
+
"Results show the file path, line number, and matching line content.",
|
|
55
|
+
parameters: {
|
|
56
|
+
type: "object",
|
|
57
|
+
properties: {
|
|
58
|
+
pattern: {
|
|
59
|
+
type: "string",
|
|
60
|
+
description: "The regex or plain text pattern to search for. " +
|
|
61
|
+
"Supports JavaScript regex syntax.",
|
|
62
|
+
},
|
|
63
|
+
path: {
|
|
64
|
+
type: "string",
|
|
65
|
+
description: "File or directory to search in. Defaults to the current working directory.",
|
|
66
|
+
},
|
|
67
|
+
glob: {
|
|
68
|
+
type: "string",
|
|
69
|
+
description: "File glob pattern to filter results (e.g. '*.ts', '*.{ts,js,json}'). " +
|
|
70
|
+
"Only files matching this pattern will be searched.",
|
|
71
|
+
},
|
|
72
|
+
case_sensitive: {
|
|
73
|
+
type: "boolean",
|
|
74
|
+
description: "Whether the search should be case-sensitive. Default: false (case-insensitive).",
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
required: ["pattern"],
|
|
78
|
+
},
|
|
79
|
+
async execute(args) {
|
|
80
|
+
const rawPattern = args.pattern;
|
|
81
|
+
const searchPath = args.path || process.cwd();
|
|
82
|
+
const globPattern = args.glob;
|
|
83
|
+
const caseSensitive = args.case_sensitive === true;
|
|
84
|
+
if (!rawPattern || typeof rawPattern !== "string") {
|
|
85
|
+
return 'Error: "pattern" must be a non-empty string.';
|
|
86
|
+
}
|
|
87
|
+
// Build regex from pattern
|
|
88
|
+
let regex;
|
|
89
|
+
try {
|
|
90
|
+
regex = new RegExp(rawPattern, caseSensitive ? "g" : "gi");
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
94
|
+
return `Error: Invalid regex pattern "${rawPattern}": ${message}`;
|
|
95
|
+
}
|
|
96
|
+
const resolvedPath = path.resolve(searchPath);
|
|
97
|
+
if (!fs.existsSync(resolvedPath)) {
|
|
98
|
+
return `Error: Path not found: ${resolvedPath}`;
|
|
99
|
+
}
|
|
100
|
+
// Build glob filter: only check files whose name matches the pattern
|
|
101
|
+
const globFilter = globPattern
|
|
102
|
+
? buildGlobFilter(globPattern)
|
|
103
|
+
: () => true;
|
|
104
|
+
try {
|
|
105
|
+
const results = [];
|
|
106
|
+
const MAX_RESULTS = 200;
|
|
107
|
+
const MAX_FILE_SIZE = 1024 * 1024; // 1 MB per file
|
|
108
|
+
const files = listFilesRecursive(resolvedPath);
|
|
109
|
+
for (const filePath of files) {
|
|
110
|
+
if (results.length >= MAX_RESULTS)
|
|
111
|
+
break;
|
|
112
|
+
const relativePath = path.relative(process.cwd(), filePath);
|
|
113
|
+
// Apply glob filter
|
|
114
|
+
if (!globFilter(filePath))
|
|
115
|
+
continue;
|
|
116
|
+
// Check file size
|
|
117
|
+
const stat = fs.statSync(filePath);
|
|
118
|
+
if (stat.size > MAX_FILE_SIZE)
|
|
119
|
+
continue;
|
|
120
|
+
try {
|
|
121
|
+
const content = fs.readFileSync(filePath, "utf-8");
|
|
122
|
+
const lines = content.split("\n");
|
|
123
|
+
for (let i = 0; i < lines.length; i++) {
|
|
124
|
+
regex.lastIndex = 0; // Reset regex state
|
|
125
|
+
if (regex.test(lines[i])) {
|
|
126
|
+
const trimmed = lines[i].trim();
|
|
127
|
+
const display = trimmed.length > 200
|
|
128
|
+
? trimmed.substring(0, 200) + "..."
|
|
129
|
+
: trimmed;
|
|
130
|
+
results.push(`${relativePath}:${i + 1}: ${display}`);
|
|
131
|
+
if (results.length >= MAX_RESULTS)
|
|
132
|
+
break;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
// Skip binary files or files we can't read
|
|
138
|
+
continue;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
if (results.length === 0) {
|
|
142
|
+
return `No matches found for pattern "${rawPattern}" in ${resolvedPath}.`;
|
|
143
|
+
}
|
|
144
|
+
const summary = `Found ${results.length} match${results.length === 1 ? "" : "es"} for "${rawPattern}"`;
|
|
145
|
+
return `${summary}:\n\n${results.join("\n")}`;
|
|
146
|
+
}
|
|
147
|
+
catch (err) {
|
|
148
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
149
|
+
return `Error during grep search: ${message}`;
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
};
|
|
153
|
+
// ─── Helpers ─────────────────────────────────────────────────────────────
|
|
154
|
+
/**
|
|
155
|
+
* List all files recursively under a directory (or a single file).
|
|
156
|
+
* Skips node_modules, .git, and hidden directories.
|
|
157
|
+
*/
|
|
158
|
+
function listFilesRecursive(rootPath) {
|
|
159
|
+
const results = [];
|
|
160
|
+
const SKIP_DIRS = new Set(["node_modules", ".git", ".hg", ".svn", ".claude"]);
|
|
161
|
+
function walk(dir) {
|
|
162
|
+
try {
|
|
163
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
164
|
+
for (const entry of entries) {
|
|
165
|
+
const fullPath = path.join(dir, entry.name);
|
|
166
|
+
if (entry.isDirectory()) {
|
|
167
|
+
// Skip hidden dirs and common ignore dirs
|
|
168
|
+
if (entry.name.startsWith(".") || SKIP_DIRS.has(entry.name))
|
|
169
|
+
continue;
|
|
170
|
+
walk(fullPath);
|
|
171
|
+
}
|
|
172
|
+
else if (entry.isFile()) {
|
|
173
|
+
// Skip binary extensions
|
|
174
|
+
const ext = path.extname(entry.name).toLowerCase();
|
|
175
|
+
const BINARY_EXTS = new Set([
|
|
176
|
+
".png", ".jpg", ".jpeg", ".gif", ".ico", ".svg",
|
|
177
|
+
".woff", ".woff2", ".ttf", ".eot",
|
|
178
|
+
".zip", ".tar", ".gz", ".rar",
|
|
179
|
+
".o", ".obj", ".exe", ".dll", ".so", ".dylib",
|
|
180
|
+
".mp3", ".mp4", ".avi", ".mov",
|
|
181
|
+
".pdf", ".doc", ".docx",
|
|
182
|
+
]);
|
|
183
|
+
if (BINARY_EXTS.has(ext))
|
|
184
|
+
continue;
|
|
185
|
+
results.push(fullPath);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
catch {
|
|
190
|
+
// Permission denied, skip
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
try {
|
|
194
|
+
const stat = fs.statSync(rootPath);
|
|
195
|
+
if (stat.isFile()) {
|
|
196
|
+
return [rootPath];
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
return [];
|
|
201
|
+
}
|
|
202
|
+
walk(rootPath);
|
|
203
|
+
return results;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Build a glob filter function from a simple glob pattern.
|
|
207
|
+
* Supports: *.ts, *.{ts,js}, **/
|
|
208
|
+
function buildGlobFilter(pattern) {
|
|
209
|
+
// Normalize separators
|
|
210
|
+
const normalized = pattern.replace(/\\/g, "/");
|
|
211
|
+
const parts = normalized.split("/").filter(Boolean);
|
|
212
|
+
// Simple single-level pattern (e.g., "*.ts")
|
|
213
|
+
if (parts.length === 1 && !parts[0].includes("**")) {
|
|
214
|
+
const regex = globToRegex(parts[0]);
|
|
215
|
+
return (filePath) => regex.test(path.basename(filePath));
|
|
216
|
+
}
|
|
217
|
+
// Multi-level pattern with **
|
|
218
|
+
const regexStr = "^" + normalized
|
|
219
|
+
.replace(/\*\*/g, "___DOUBLESTAR___")
|
|
220
|
+
.replace(/\*/g, "[^/]*")
|
|
221
|
+
.replace(/___DOUBLESTAR___/g, ".*")
|
|
222
|
+
.replace(/\?/g, ".") + "$";
|
|
223
|
+
const regex = new RegExp(regexStr);
|
|
224
|
+
return (filePath) => {
|
|
225
|
+
const normalizedPath = filePath.replace(/\\/g, "/");
|
|
226
|
+
return regex.test(normalizedPath);
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Convert a simple glob to regex.
|
|
231
|
+
*/
|
|
232
|
+
function globToRegex(glob) {
|
|
233
|
+
let str = "^";
|
|
234
|
+
for (let i = 0; i < glob.length; i++) {
|
|
235
|
+
const c = glob[i];
|
|
236
|
+
if (c === "*") {
|
|
237
|
+
str += ".*";
|
|
238
|
+
}
|
|
239
|
+
else if (c === "?") {
|
|
240
|
+
str += ".";
|
|
241
|
+
}
|
|
242
|
+
else if (c === ".") {
|
|
243
|
+
str += "\\.";
|
|
244
|
+
}
|
|
245
|
+
else if (c === "{") {
|
|
246
|
+
// Simple {a,b} support
|
|
247
|
+
const end = glob.indexOf("}", i);
|
|
248
|
+
if (end > i) {
|
|
249
|
+
const items = glob.substring(i + 1, end).split(",");
|
|
250
|
+
str += "(" + items.map((item) => item.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|") + ")";
|
|
251
|
+
i = end;
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
str += "\\{";
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
str += c;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
str += "$";
|
|
262
|
+
return new RegExp(str, "i");
|
|
263
|
+
}
|
|
264
|
+
//# sourceMappingURL=grep-search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grep-search.js","sourceRoot":"","sources":["../../../src/tools/builtin/grep-search.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAG7B;;;;;;;;;;GAUG;AACU,QAAA,cAAc,GAAS;IAClC,IAAI,EAAE,aAAa;IACnB,WAAW,EACT,2EAA2E;QAC3E,kEAAkE;QAClE,qEAAqE;IACvE,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,iDAAiD;oBACjD,mCAAmC;aACtC;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,4EAA4E;aAC/E;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,uEAAuE;oBACvE,oDAAoD;aACvD;YACD,cAAc,EAAE;gBACd,IAAI,EAAE,SAAS;gBACf,WAAW,EACT,iFAAiF;aACpF;SACF;QACD,QAAQ,EAAE,CAAC,SAAS,CAAC;KACtB;IAED,KAAK,CAAC,OAAO,CAAC,IAA6B;QACzC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAiB,CAAC;QAC1C,MAAM,UAAU,GAAI,IAAI,CAAC,IAAe,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,IAA0B,CAAC;QACpD,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC;QAEnD,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YAClD,OAAO,8CAA8C,CAAC;QACxD,CAAC;QAED,2BAA2B;QAC3B,IAAI,KAAa,CAAC;QAClB,IAAI,CAAC;YACH,KAAK,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO,iCAAiC,UAAU,MAAM,OAAO,EAAE,CAAC;QACpE,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAE9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,OAAO,0BAA0B,YAAY,EAAE,CAAC;QAClD,CAAC;QAED,qEAAqE;QACrE,MAAM,UAAU,GAAG,WAAW;YAC5B,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC;YAC9B,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QAEf,IAAI,CAAC;YACH,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,MAAM,WAAW,GAAG,GAAG,CAAC;YACxB,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,gBAAgB;YAEnD,MAAM,KAAK,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;YAE/C,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;gBAC7B,IAAI,OAAO,CAAC,MAAM,IAAI,WAAW;oBAAE,MAAM;gBAEzC,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;gBAE5D,oBAAoB;gBACpB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;oBAAE,SAAS;gBAEpC,kBAAkB;gBAClB,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACnC,IAAI,IAAI,CAAC,IAAI,GAAG,aAAa;oBAAE,SAAS;gBAExC,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;oBACnD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACtC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,oBAAoB;wBACzC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;4BACzB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;4BAChC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,GAAG;gCAClC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK;gCACnC,CAAC,CAAC,OAAO,CAAC;4BACZ,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,IAAI,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;4BACrD,IAAI,OAAO,CAAC,MAAM,IAAI,WAAW;gCAAE,MAAM;wBAC3C,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,2CAA2C;oBAC3C,SAAS;gBACX,CAAC;YACH,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,iCAAiC,UAAU,QAAQ,YAAY,GAAG,CAAC;YAC5E,CAAC;YAED,MAAM,OAAO,GAAG,SAAS,OAAO,CAAC,MAAM,SAAS,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,UAAU,GAAG,CAAC;YACvG,OAAO,GAAG,OAAO,QAAQ,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO,6BAA6B,OAAO,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;CACF,CAAC;AAEF,4EAA4E;AAE5E;;;GAGG;AACH,SAAS,kBAAkB,CAAC,QAAgB;IAC1C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IAE9E,SAAS,IAAI,CAAC,GAAW;QACvB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;oBACxB,0CAA0C;oBAC1C,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;wBAAE,SAAS;oBACtE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACjB,CAAC;qBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;oBAC1B,yBAAyB;oBACzB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;oBACnD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;wBAC1B,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;wBAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM;wBACjC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;wBAC7B,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ;wBAC7C,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;wBAC9B,MAAM,EAAE,MAAM,EAAE,OAAO;qBACxB,CAAC,CAAC;oBACH,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;wBAAE,SAAS;oBACnC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YAClB,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,CAAC;IACf,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;iCAEiC;AACjC,SAAS,eAAe,CAAC,OAAe;IACtC,uBAAuB;IACvB,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEpD,6CAA6C;IAC7C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,OAAO,CAAC,QAAgB,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,8BAA8B;IAC9B,MAAM,QAAQ,GAAG,GAAG,GAAG,UAAU;SAC9B,OAAO,CAAC,OAAO,EAAE,kBAAkB,CAAC;SACpC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;SACvB,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC;SAClC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;IAE7B,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnC,OAAO,CAAC,QAAgB,EAAE,EAAE;QAC1B,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACpD,OAAO,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACpC,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,IAAY;IAC/B,IAAI,GAAG,GAAG,GAAG,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACd,GAAG,IAAI,IAAI,CAAC;QACd,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACrB,GAAG,IAAI,GAAG,CAAC;QACb,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACrB,GAAG,IAAI,KAAK,CAAC;QACf,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACrB,uBAAuB;YACvB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACjC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;gBACZ,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACpD,GAAG,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;gBAC9F,CAAC,GAAG,GAAG,CAAC;YACV,CAAC;iBAAM,CAAC;gBACN,GAAG,IAAI,KAAK,CAAC;YACf,CAAC;QACH,CAAC;aAAM,CAAC;YACN,GAAG,IAAI,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IACD,GAAG,IAAI,GAAG,CAAC;IACX,OAAO,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ToolRegistry } from "../tool-registry";
|
|
2
|
+
import { Tool } from "../types";
|
|
3
|
+
/**
|
|
4
|
+
* Array of all built-in tools.
|
|
5
|
+
*/
|
|
6
|
+
export declare const BUILTIN_TOOLS: Tool[];
|
|
7
|
+
export { ReadFileTool } from "./read-file";
|
|
8
|
+
export { WriteFileTool } from "./write-file";
|
|
9
|
+
export { EditFileTool } from "./edit-file";
|
|
10
|
+
export { GrepSearchTool } from "./grep-search";
|
|
11
|
+
export { GlobSearchTool } from "./glob-search";
|
|
12
|
+
/**
|
|
13
|
+
* Register all built-in tools into the given registry.
|
|
14
|
+
* Silently skips tools that are already registered.
|
|
15
|
+
*
|
|
16
|
+
* @param registry The ToolRegistry to register tools into.
|
|
17
|
+
* @param overwrite If true, re-registers even if a tool with the same name exists.
|
|
18
|
+
* Default: false.
|
|
19
|
+
*/
|
|
20
|
+
export declare function registerAllBuiltinTools(registry: ToolRegistry, overwrite?: boolean): void;
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAOhC;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,IAAI,EAM/B,CAAC;AAGF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,YAAY,EACtB,SAAS,UAAQ,GAChB,IAAI,CAYN"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GlobSearchTool = exports.GrepSearchTool = exports.EditFileTool = exports.WriteFileTool = exports.ReadFileTool = exports.BUILTIN_TOOLS = void 0;
|
|
4
|
+
exports.registerAllBuiltinTools = registerAllBuiltinTools;
|
|
5
|
+
const read_file_1 = require("./read-file");
|
|
6
|
+
const write_file_1 = require("./write-file");
|
|
7
|
+
const edit_file_1 = require("./edit-file");
|
|
8
|
+
const grep_search_1 = require("./grep-search");
|
|
9
|
+
const glob_search_1 = require("./glob-search");
|
|
10
|
+
/**
|
|
11
|
+
* Array of all built-in tools.
|
|
12
|
+
*/
|
|
13
|
+
exports.BUILTIN_TOOLS = [
|
|
14
|
+
read_file_1.ReadFileTool,
|
|
15
|
+
write_file_1.WriteFileTool,
|
|
16
|
+
edit_file_1.EditFileTool,
|
|
17
|
+
grep_search_1.GrepSearchTool,
|
|
18
|
+
glob_search_1.GlobSearchTool,
|
|
19
|
+
];
|
|
20
|
+
// Re-export individual tools
|
|
21
|
+
var read_file_2 = require("./read-file");
|
|
22
|
+
Object.defineProperty(exports, "ReadFileTool", { enumerable: true, get: function () { return read_file_2.ReadFileTool; } });
|
|
23
|
+
var write_file_2 = require("./write-file");
|
|
24
|
+
Object.defineProperty(exports, "WriteFileTool", { enumerable: true, get: function () { return write_file_2.WriteFileTool; } });
|
|
25
|
+
var edit_file_2 = require("./edit-file");
|
|
26
|
+
Object.defineProperty(exports, "EditFileTool", { enumerable: true, get: function () { return edit_file_2.EditFileTool; } });
|
|
27
|
+
var grep_search_2 = require("./grep-search");
|
|
28
|
+
Object.defineProperty(exports, "GrepSearchTool", { enumerable: true, get: function () { return grep_search_2.GrepSearchTool; } });
|
|
29
|
+
var glob_search_2 = require("./glob-search");
|
|
30
|
+
Object.defineProperty(exports, "GlobSearchTool", { enumerable: true, get: function () { return glob_search_2.GlobSearchTool; } });
|
|
31
|
+
/**
|
|
32
|
+
* Register all built-in tools into the given registry.
|
|
33
|
+
* Silently skips tools that are already registered.
|
|
34
|
+
*
|
|
35
|
+
* @param registry The ToolRegistry to register tools into.
|
|
36
|
+
* @param overwrite If true, re-registers even if a tool with the same name exists.
|
|
37
|
+
* Default: false.
|
|
38
|
+
*/
|
|
39
|
+
function registerAllBuiltinTools(registry, overwrite = false) {
|
|
40
|
+
for (const tool of exports.BUILTIN_TOOLS) {
|
|
41
|
+
if (registry.has(tool.name)) {
|
|
42
|
+
if (overwrite) {
|
|
43
|
+
registry.remove(tool.name);
|
|
44
|
+
registry.register(tool);
|
|
45
|
+
}
|
|
46
|
+
// else skip silently
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
registry.register(tool);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/builtin/index.ts"],"names":[],"mappings":";;;AAkCA,0DAeC;AA/CD,2CAA2C;AAC3C,6CAA6C;AAC7C,2CAA2C;AAC3C,+CAA+C;AAC/C,+CAA+C;AAE/C;;GAEG;AACU,QAAA,aAAa,GAAW;IACnC,wBAAY;IACZ,0BAAa;IACb,wBAAY;IACZ,4BAAc;IACd,4BAAc;CACf,CAAC;AAEF,6BAA6B;AAC7B,yCAA2C;AAAlC,yGAAA,YAAY,OAAA;AACrB,2CAA6C;AAApC,2GAAA,aAAa,OAAA;AACtB,yCAA2C;AAAlC,yGAAA,YAAY,OAAA;AACrB,6CAA+C;AAAtC,6GAAA,cAAc,OAAA;AACvB,6CAA+C;AAAtC,6GAAA,cAAc,OAAA;AAEvB;;;;;;;GAOG;AACH,SAAgB,uBAAuB,CACrC,QAAsB,EACtB,SAAS,GAAG,KAAK;IAEjB,KAAK,MAAM,IAAI,IAAI,qBAAa,EAAE,CAAC;QACjC,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,IAAI,SAAS,EAAE,CAAC;gBACd,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3B,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;YACD,qBAAqB;QACvB,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Tool } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Read a file from disk.
|
|
4
|
+
*
|
|
5
|
+
* Parameters:
|
|
6
|
+
* - file_path (required): Absolute path to the file.
|
|
7
|
+
* - offset (optional): 1-based line number to start from.
|
|
8
|
+
* - limit (optional): Max number of lines to return.
|
|
9
|
+
*/
|
|
10
|
+
export declare const ReadFileTool: Tool;
|
|
11
|
+
//# sourceMappingURL=read-file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-file.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/read-file.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,EAAE,IAuF1B,CAAC"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ReadFileTool = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
/**
|
|
40
|
+
* Read a file from disk.
|
|
41
|
+
*
|
|
42
|
+
* Parameters:
|
|
43
|
+
* - file_path (required): Absolute path to the file.
|
|
44
|
+
* - offset (optional): 1-based line number to start from.
|
|
45
|
+
* - limit (optional): Max number of lines to return.
|
|
46
|
+
*/
|
|
47
|
+
exports.ReadFileTool = {
|
|
48
|
+
name: "read_file",
|
|
49
|
+
description: "Read the contents of a file from the local filesystem. " +
|
|
50
|
+
"Supports optional line offset and limit for reading partial files. " +
|
|
51
|
+
"Returns file content with line numbers. Handles text files and shows " +
|
|
52
|
+
"file size for binary files.",
|
|
53
|
+
parameters: {
|
|
54
|
+
type: "object",
|
|
55
|
+
properties: {
|
|
56
|
+
file_path: {
|
|
57
|
+
type: "string",
|
|
58
|
+
description: "Absolute path to the file to read.",
|
|
59
|
+
},
|
|
60
|
+
offset: {
|
|
61
|
+
type: "number",
|
|
62
|
+
description: "Optional 1-based line number to start reading from (default: 1).",
|
|
63
|
+
},
|
|
64
|
+
limit: {
|
|
65
|
+
type: "number",
|
|
66
|
+
description: "Optional max number of lines to return (default: return all lines).",
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
required: ["file_path"],
|
|
70
|
+
},
|
|
71
|
+
async execute(args) {
|
|
72
|
+
const filePath = args.file_path;
|
|
73
|
+
const offset = args.offset ?? 1;
|
|
74
|
+
const limit = args.limit;
|
|
75
|
+
// Validate path
|
|
76
|
+
if (!filePath || typeof filePath !== "string") {
|
|
77
|
+
return 'Error: "file_path" must be a non-empty string.';
|
|
78
|
+
}
|
|
79
|
+
// Resolve to absolute path
|
|
80
|
+
const resolvedPath = path.resolve(filePath);
|
|
81
|
+
// Check file exists
|
|
82
|
+
if (!fs.existsSync(resolvedPath)) {
|
|
83
|
+
return `Error: File not found: ${resolvedPath}`;
|
|
84
|
+
}
|
|
85
|
+
// Check it's a file, not a directory
|
|
86
|
+
const stat = fs.statSync(resolvedPath);
|
|
87
|
+
if (!stat.isFile()) {
|
|
88
|
+
return `Error: Not a file: ${resolvedPath}`;
|
|
89
|
+
}
|
|
90
|
+
// Check file size (warn for large files)
|
|
91
|
+
const MAX_SIZE = 10 * 1024 * 1024; // 10 MB
|
|
92
|
+
if (stat.size > MAX_SIZE) {
|
|
93
|
+
return `Error: File too large (${(stat.size / 1024 / 1024).toFixed(1)} MB). Maximum allowed: 10 MB.`;
|
|
94
|
+
}
|
|
95
|
+
try {
|
|
96
|
+
const content = fs.readFileSync(resolvedPath, "utf-8");
|
|
97
|
+
const lines = content.split("\n");
|
|
98
|
+
const startIdx = Math.max(0, offset - 1);
|
|
99
|
+
const endIdx = limit ? startIdx + limit : lines.length;
|
|
100
|
+
const selectedLines = lines.slice(startIdx, endIdx);
|
|
101
|
+
// Format with line numbers
|
|
102
|
+
const lineNumWidth = String(endIdx).length;
|
|
103
|
+
const result = selectedLines
|
|
104
|
+
.map((line, i) => {
|
|
105
|
+
const lineNum = startIdx + i + 1;
|
|
106
|
+
return `${String(lineNum).padStart(lineNumWidth)}\t${line}`;
|
|
107
|
+
})
|
|
108
|
+
.join("\n");
|
|
109
|
+
const totalLines = lines.length;
|
|
110
|
+
const summary = `File: ${resolvedPath} (${totalLines} lines, ${(stat.size / 1024).toFixed(1)} KB)`;
|
|
111
|
+
const range = selectedLines.length < totalLines
|
|
112
|
+
? `\nShowing lines ${startIdx + 1}-${Math.min(endIdx, totalLines)} of ${totalLines}.`
|
|
113
|
+
: "";
|
|
114
|
+
return `${summary}${range}\n\n${result}`;
|
|
115
|
+
}
|
|
116
|
+
catch (err) {
|
|
117
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
118
|
+
return `Error reading file "${resolvedPath}": ${message}`;
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
//# sourceMappingURL=read-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-file.js","sourceRoot":"","sources":["../../../src/tools/builtin/read-file.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Tool } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Write content to a file (creates or overwrites).
|
|
4
|
+
*
|
|
5
|
+
* Parameters:
|
|
6
|
+
* - file_path (required): Absolute path to write to.
|
|
7
|
+
* - content (required): Content to write.
|
|
8
|
+
*/
|
|
9
|
+
export declare const WriteFileTool: Tool;
|
|
10
|
+
//# sourceMappingURL=write-file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-file.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/write-file.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,EAAE,IAgD3B,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.WriteFileTool = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
/**
|
|
40
|
+
* Write content to a file (creates or overwrites).
|
|
41
|
+
*
|
|
42
|
+
* Parameters:
|
|
43
|
+
* - file_path (required): Absolute path to write to.
|
|
44
|
+
* - content (required): Content to write.
|
|
45
|
+
*/
|
|
46
|
+
exports.WriteFileTool = {
|
|
47
|
+
name: "write_file",
|
|
48
|
+
description: "Write content to a file. Creates the file if it doesn't exist, " +
|
|
49
|
+
"or overwrites it if it does. Also creates parent directories automatically.",
|
|
50
|
+
parameters: {
|
|
51
|
+
type: "object",
|
|
52
|
+
properties: {
|
|
53
|
+
file_path: {
|
|
54
|
+
type: "string",
|
|
55
|
+
description: "Absolute path of the file to write.",
|
|
56
|
+
},
|
|
57
|
+
content: {
|
|
58
|
+
type: "string",
|
|
59
|
+
description: "Content to write to the file.",
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
required: ["file_path", "content"],
|
|
63
|
+
},
|
|
64
|
+
async execute(args) {
|
|
65
|
+
const filePath = args.file_path;
|
|
66
|
+
const content = args.content;
|
|
67
|
+
if (!filePath || typeof filePath !== "string") {
|
|
68
|
+
return 'Error: "file_path" must be a non-empty string.';
|
|
69
|
+
}
|
|
70
|
+
if (content === undefined || content === null) {
|
|
71
|
+
return 'Error: "content" is required.';
|
|
72
|
+
}
|
|
73
|
+
const resolvedPath = path.resolve(filePath);
|
|
74
|
+
try {
|
|
75
|
+
// Create parent directories if needed
|
|
76
|
+
const dir = path.dirname(resolvedPath);
|
|
77
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
78
|
+
// Write file
|
|
79
|
+
fs.writeFileSync(resolvedPath, String(content), "utf-8");
|
|
80
|
+
const stat = fs.statSync(resolvedPath);
|
|
81
|
+
return `Successfully wrote ${stat.size} bytes to ${resolvedPath}`;
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
85
|
+
return `Error writing file "${resolvedPath}": ${message}`;
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=write-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-file.js","sourceRoot":"","sources":["../../../src/tools/builtin/write-file.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAG7B;;;;;;GAMG;AACU,QAAA,aAAa,GAAS;IACjC,IAAI,EAAE,YAAY;IAClB,WAAW,EACT,iEAAiE;QACjE,6EAA6E;IAC/E,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,qCAAqC;aACnD;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,+BAA+B;aAC7C;SACF;QACD,QAAQ,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;KACnC;IAED,KAAK,CAAC,OAAO,CAAC,IAA6B;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAmB,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAiB,CAAC;QAEvC,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC9C,OAAO,gDAAgD,CAAC;QAC1D,CAAC;QACD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YAC9C,OAAO,+BAA+B,CAAC;QACzC,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE5C,IAAI,CAAC;YACH,sCAAsC;YACtC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACvC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEvC,aAAa;YACb,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;YAEzD,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YACvC,OAAO,sBAAsB,IAAI,CAAC,IAAI,aAAa,YAAY,EAAE,CAAC;QACpE,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO,uBAAuB,YAAY,MAAM,OAAO,EAAE,CAAC;QAC5D,CAAC;IACH,CAAC;CACF,CAAC"}
|