@cdoing/core 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/dist/agents/coordinator.d.ts +114 -0
- package/dist/agents/coordinator.d.ts.map +1 -0
- package/dist/agents/coordinator.js +158 -0
- package/dist/agents/coordinator.js.map +1 -0
- package/dist/context-providers/clipboard.d.ts +13 -0
- package/dist/context-providers/clipboard.d.ts.map +1 -0
- package/dist/context-providers/clipboard.js +53 -0
- package/dist/context-providers/clipboard.js.map +1 -0
- package/dist/context-providers/codebase.d.ts +46 -0
- package/dist/context-providers/codebase.d.ts.map +1 -0
- package/dist/context-providers/codebase.js +273 -0
- package/dist/context-providers/codebase.js.map +1 -0
- package/dist/context-providers/diff.d.ts +18 -0
- package/dist/context-providers/diff.d.ts.map +1 -0
- package/dist/context-providers/diff.js +63 -0
- package/dist/context-providers/diff.js.map +1 -0
- package/dist/context-providers/docs.d.ts +21 -0
- package/dist/context-providers/docs.d.ts.map +1 -0
- package/dist/context-providers/docs.js +180 -0
- package/dist/context-providers/docs.js.map +1 -0
- package/dist/context-providers/file-include.d.ts +13 -0
- package/dist/context-providers/file-include.d.ts.map +1 -0
- package/dist/context-providers/file-include.js +82 -0
- package/dist/context-providers/file-include.js.map +1 -0
- package/dist/context-providers/folder.d.ts +19 -0
- package/dist/context-providers/folder.d.ts.map +1 -0
- package/dist/context-providers/folder.js +130 -0
- package/dist/context-providers/folder.js.map +1 -0
- package/dist/context-providers/git.d.ts +19 -0
- package/dist/context-providers/git.d.ts.map +1 -0
- package/dist/context-providers/git.js +74 -0
- package/dist/context-providers/git.js.map +1 -0
- package/dist/context-providers/index.d.ts +26 -0
- package/dist/context-providers/index.d.ts.map +1 -0
- package/dist/context-providers/index.js +37 -0
- package/dist/context-providers/index.js.map +1 -0
- package/dist/context-providers/open-files.d.ts +25 -0
- package/dist/context-providers/open-files.d.ts.map +1 -0
- package/dist/context-providers/open-files.js +134 -0
- package/dist/context-providers/open-files.js.map +1 -0
- package/dist/context-providers/problems.d.ts +24 -0
- package/dist/context-providers/problems.d.ts.map +1 -0
- package/dist/context-providers/problems.js +97 -0
- package/dist/context-providers/problems.js.map +1 -0
- package/dist/context-providers/registry.d.ts +61 -0
- package/dist/context-providers/registry.d.ts.map +1 -0
- package/dist/context-providers/registry.js +92 -0
- package/dist/context-providers/registry.js.map +1 -0
- package/dist/context-providers/terminal.d.ts +25 -0
- package/dist/context-providers/terminal.d.ts.map +1 -0
- package/dist/context-providers/terminal.js +55 -0
- package/dist/context-providers/terminal.js.map +1 -0
- package/dist/context-providers/tree.d.ts +29 -0
- package/dist/context-providers/tree.d.ts.map +1 -0
- package/dist/context-providers/tree.js +172 -0
- package/dist/context-providers/tree.js.map +1 -0
- package/dist/context-providers/types.d.ts +72 -0
- package/dist/context-providers/types.d.ts.map +1 -0
- package/dist/context-providers/types.js +10 -0
- package/dist/context-providers/types.js.map +1 -0
- package/dist/context-providers/url.d.ts +27 -0
- package/dist/context-providers/url.d.ts.map +1 -0
- package/dist/context-providers/url.js +131 -0
- package/dist/context-providers/url.js.map +1 -0
- package/dist/effort/index.d.ts +78 -0
- package/dist/effort/index.d.ts.map +1 -0
- package/dist/effort/index.js +146 -0
- package/dist/effort/index.js.map +1 -0
- package/dist/hooks/index.d.ts +47 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +151 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/index.d.ts +75 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +152 -0
- package/dist/index.js.map +1 -0
- package/dist/indexing/chunker.d.ts +25 -0
- package/dist/indexing/chunker.d.ts.map +1 -0
- package/dist/indexing/chunker.js +217 -0
- package/dist/indexing/chunker.js.map +1 -0
- package/dist/indexing/database.d.ts +49 -0
- package/dist/indexing/database.d.ts.map +1 -0
- package/dist/indexing/database.js +287 -0
- package/dist/indexing/database.js.map +1 -0
- package/dist/indexing/index.d.ts +9 -0
- package/dist/indexing/index.d.ts.map +1 -0
- package/dist/indexing/index.js +13 -0
- package/dist/indexing/index.js.map +1 -0
- package/dist/indexing/indexer.d.ts +63 -0
- package/dist/indexing/indexer.d.ts.map +1 -0
- package/dist/indexing/indexer.js +352 -0
- package/dist/indexing/indexer.js.map +1 -0
- package/dist/indexing/recent-edits-cache.d.ts +77 -0
- package/dist/indexing/recent-edits-cache.d.ts.map +1 -0
- package/dist/indexing/recent-edits-cache.js +123 -0
- package/dist/indexing/recent-edits-cache.js.map +1 -0
- package/dist/indexing/types.d.ts +39 -0
- package/dist/indexing/types.d.ts.map +1 -0
- package/dist/indexing/types.js +6 -0
- package/dist/indexing/types.js.map +1 -0
- package/dist/mcp/index.d.ts +33 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +37 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/manager.d.ts +123 -0
- package/dist/mcp/manager.d.ts.map +1 -0
- package/dist/mcp/manager.js +331 -0
- package/dist/mcp/manager.js.map +1 -0
- package/dist/oauth.d.ts +33 -0
- package/dist/oauth.d.ts.map +1 -0
- package/dist/oauth.js +312 -0
- package/dist/oauth.js.map +1 -0
- package/dist/permissions/index.d.ts +216 -0
- package/dist/permissions/index.d.ts.map +1 -0
- package/dist/permissions/index.js +938 -0
- package/dist/permissions/index.js.map +1 -0
- package/dist/plan/index.d.ts +20 -0
- package/dist/plan/index.d.ts.map +1 -0
- package/dist/plan/index.js +24 -0
- package/dist/plan/index.js.map +1 -0
- package/dist/plan/manager.d.ts +101 -0
- package/dist/plan/manager.d.ts.map +1 -0
- package/dist/plan/manager.js +170 -0
- package/dist/plan/manager.js.map +1 -0
- package/dist/rules/index.d.ts +28 -0
- package/dist/rules/index.d.ts.map +1 -0
- package/dist/rules/index.js +31 -0
- package/dist/rules/index.js.map +1 -0
- package/dist/rules/manager.d.ts +77 -0
- package/dist/rules/manager.d.ts.map +1 -0
- package/dist/rules/manager.js +279 -0
- package/dist/rules/manager.js.map +1 -0
- package/dist/rules/types.d.ts +34 -0
- package/dist/rules/types.d.ts.map +1 -0
- package/dist/rules/types.js +9 -0
- package/dist/rules/types.js.map +1 -0
- package/dist/sandbox/filesystem.d.ts +20 -0
- package/dist/sandbox/filesystem.d.ts.map +1 -0
- package/dist/sandbox/filesystem.js +141 -0
- package/dist/sandbox/filesystem.js.map +1 -0
- package/dist/sandbox/index.d.ts +4 -0
- package/dist/sandbox/index.d.ts.map +1 -0
- package/dist/sandbox/index.js +8 -0
- package/dist/sandbox/index.js.map +1 -0
- package/dist/sandbox/manager.d.ts +47 -0
- package/dist/sandbox/manager.d.ts.map +1 -0
- package/dist/sandbox/manager.js +220 -0
- package/dist/sandbox/manager.js.map +1 -0
- package/dist/sandbox/network.d.ts +14 -0
- package/dist/sandbox/network.d.ts.map +1 -0
- package/dist/sandbox/network.js +87 -0
- package/dist/sandbox/network.js.map +1 -0
- package/dist/sandbox/types.d.ts +42 -0
- package/dist/sandbox/types.d.ts.map +1 -0
- package/dist/sandbox/types.js +25 -0
- package/dist/sandbox/types.js.map +1 -0
- package/dist/tools/ast-edit.d.ts +57 -0
- package/dist/tools/ast-edit.d.ts.map +1 -0
- package/dist/tools/ast-edit.js +443 -0
- package/dist/tools/ast-edit.js.map +1 -0
- package/dist/tools/code-verify.d.ts +8 -0
- package/dist/tools/code-verify.d.ts.map +1 -0
- package/dist/tools/code-verify.js +159 -0
- package/dist/tools/code-verify.js.map +1 -0
- package/dist/tools/codebase-search.d.ts +17 -0
- package/dist/tools/codebase-search.d.ts.map +1 -0
- package/dist/tools/codebase-search.js +104 -0
- package/dist/tools/codebase-search.js.map +1 -0
- package/dist/tools/file-delete.d.ts +26 -0
- package/dist/tools/file-delete.d.ts.map +1 -0
- package/dist/tools/file-delete.js +179 -0
- package/dist/tools/file-delete.js.map +1 -0
- package/dist/tools/file-edit.d.ts +10 -0
- package/dist/tools/file-edit.d.ts.map +1 -0
- package/dist/tools/file-edit.js +138 -0
- package/dist/tools/file-edit.js.map +1 -0
- package/dist/tools/file-read.d.ts +12 -0
- package/dist/tools/file-read.d.ts.map +1 -0
- package/dist/tools/file-read.js +211 -0
- package/dist/tools/file-read.js.map +1 -0
- package/dist/tools/file-run.d.ts +10 -0
- package/dist/tools/file-run.d.ts.map +1 -0
- package/dist/tools/file-run.js +179 -0
- package/dist/tools/file-run.js.map +1 -0
- package/dist/tools/file-write.d.ts +10 -0
- package/dist/tools/file-write.d.ts.map +1 -0
- package/dist/tools/file-write.js +134 -0
- package/dist/tools/file-write.js.map +1 -0
- package/dist/tools/glob-search.d.ts +8 -0
- package/dist/tools/glob-search.d.ts.map +1 -0
- package/dist/tools/glob-search.js +108 -0
- package/dist/tools/glob-search.js.map +1 -0
- package/dist/tools/grep-search.d.ts +8 -0
- package/dist/tools/grep-search.d.ts.map +1 -0
- package/dist/tools/grep-search.js +139 -0
- package/dist/tools/grep-search.js.map +1 -0
- package/dist/tools/list-dir.d.ts +16 -0
- package/dist/tools/list-dir.d.ts.map +1 -0
- package/dist/tools/list-dir.js +183 -0
- package/dist/tools/list-dir.js.map +1 -0
- package/dist/tools/multi-edit.d.ts +16 -0
- package/dist/tools/multi-edit.d.ts.map +1 -0
- package/dist/tools/multi-edit.js +163 -0
- package/dist/tools/multi-edit.js.map +1 -0
- package/dist/tools/notebook-edit.d.ts +31 -0
- package/dist/tools/notebook-edit.d.ts.map +1 -0
- package/dist/tools/notebook-edit.js +321 -0
- package/dist/tools/notebook-edit.js.map +1 -0
- package/dist/tools/registry.d.ts +16 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +41 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/shell-exec.d.ts +12 -0
- package/dist/tools/shell-exec.d.ts.map +1 -0
- package/dist/tools/shell-exec.js +261 -0
- package/dist/tools/shell-exec.js.map +1 -0
- package/dist/tools/sub-agent-manager.d.ts +57 -0
- package/dist/tools/sub-agent-manager.d.ts.map +1 -0
- package/dist/tools/sub-agent-manager.js +153 -0
- package/dist/tools/sub-agent-manager.js.map +1 -0
- package/dist/tools/sub-agent-status.d.ts +12 -0
- package/dist/tools/sub-agent-status.d.ts.map +1 -0
- package/dist/tools/sub-agent-status.js +59 -0
- package/dist/tools/sub-agent-status.js.map +1 -0
- package/dist/tools/sub-agent-terminate.d.ts +12 -0
- package/dist/tools/sub-agent-terminate.d.ts.map +1 -0
- package/dist/tools/sub-agent-terminate.js +55 -0
- package/dist/tools/sub-agent-terminate.js.map +1 -0
- package/dist/tools/sub-agent.d.ts +34 -0
- package/dist/tools/sub-agent.d.ts.map +1 -0
- package/dist/tools/sub-agent.js +140 -0
- package/dist/tools/sub-agent.js.map +1 -0
- package/dist/tools/system-info.d.ts +24 -0
- package/dist/tools/system-info.d.ts.map +1 -0
- package/dist/tools/system-info.js +220 -0
- package/dist/tools/system-info.js.map +1 -0
- package/dist/tools/todo.d.ts +16 -0
- package/dist/tools/todo.d.ts.map +1 -0
- package/dist/tools/todo.js +144 -0
- package/dist/tools/todo.js.map +1 -0
- package/dist/tools/types.d.ts +20 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +3 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/tools/view-diff.d.ts +11 -0
- package/dist/tools/view-diff.d.ts.map +1 -0
- package/dist/tools/view-diff.js +88 -0
- package/dist/tools/view-diff.js.map +1 -0
- package/dist/tools/view-repo-map.d.ts +18 -0
- package/dist/tools/view-repo-map.d.ts.map +1 -0
- package/dist/tools/view-repo-map.js +245 -0
- package/dist/tools/view-repo-map.js.map +1 -0
- package/dist/tools/web-fetch.d.ts +13 -0
- package/dist/tools/web-fetch.d.ts.map +1 -0
- package/dist/tools/web-fetch.js +106 -0
- package/dist/tools/web-fetch.js.map +1 -0
- package/dist/tools/web-search.d.ts +10 -0
- package/dist/tools/web-search.d.ts.map +1 -0
- package/dist/tools/web-search.js +106 -0
- package/dist/tools/web-search.js.map +1 -0
- package/dist/utils/gitignore.d.ts +10 -0
- package/dist/utils/gitignore.d.ts.map +1 -0
- package/dist/utils/gitignore.js +104 -0
- package/dist/utils/gitignore.js.map +1 -0
- package/dist/utils/lazy-apply.d.ts +45 -0
- package/dist/utils/lazy-apply.d.ts.map +1 -0
- package/dist/utils/lazy-apply.js +164 -0
- package/dist/utils/lazy-apply.js.map +1 -0
- package/dist/utils/memory.d.ts +36 -0
- package/dist/utils/memory.d.ts.map +1 -0
- package/dist/utils/memory.js +136 -0
- package/dist/utils/memory.js.map +1 -0
- package/dist/utils/path-matching.d.ts +24 -0
- package/dist/utils/path-matching.d.ts.map +1 -0
- package/dist/utils/path-matching.js +116 -0
- package/dist/utils/path-matching.js.map +1 -0
- package/dist/utils/path-safety.d.ts +13 -0
- package/dist/utils/path-safety.d.ts.map +1 -0
- package/dist/utils/path-safety.js +54 -0
- package/dist/utils/path-safety.js.map +1 -0
- package/dist/utils/project-config.d.ts +18 -0
- package/dist/utils/project-config.d.ts.map +1 -0
- package/dist/utils/project-config.js +76 -0
- package/dist/utils/project-config.js.map +1 -0
- package/dist/utils/search-match.d.ts +63 -0
- package/dist/utils/search-match.d.ts.map +1 -0
- package/dist/utils/search-match.js +426 -0
- package/dist/utils/search-match.js.map +1 -0
- package/dist/utils/shell-paths.d.ts +17 -0
- package/dist/utils/shell-paths.d.ts.map +1 -0
- package/dist/utils/shell-paths.js +107 -0
- package/dist/utils/shell-paths.js.map +1 -0
- package/dist/utils/streaming-diff.d.ts +45 -0
- package/dist/utils/streaming-diff.d.ts.map +1 -0
- package/dist/utils/streaming-diff.js +230 -0
- package/dist/utils/streaming-diff.js.map +1 -0
- package/dist/utils/todo.d.ts +47 -0
- package/dist/utils/todo.d.ts.map +1 -0
- package/dist/utils/todo.js +102 -0
- package/dist/utils/todo.js.map +1 -0
- package/package.json +23 -0
- package/src/agents/coordinator.ts +240 -0
- package/src/context-providers/clipboard.ts +48 -0
- package/src/context-providers/codebase.ts +274 -0
- package/src/context-providers/diff.ts +66 -0
- package/src/context-providers/docs.ts +160 -0
- package/src/context-providers/file-include.ts +54 -0
- package/src/context-providers/folder.ts +106 -0
- package/src/context-providers/git.ts +72 -0
- package/src/context-providers/index.ts +26 -0
- package/src/context-providers/open-files.ts +113 -0
- package/src/context-providers/problems.ts +100 -0
- package/src/context-providers/registry.ts +99 -0
- package/src/context-providers/terminal.ts +58 -0
- package/src/context-providers/tree.ts +161 -0
- package/src/context-providers/types.ts +84 -0
- package/src/context-providers/url.ts +138 -0
- package/src/effort/index.ts +177 -0
- package/src/hooks/index.ts +148 -0
- package/src/index.ts +114 -0
- package/src/indexing/README.md +267 -0
- package/src/indexing/chunker.ts +206 -0
- package/src/indexing/database.ts +299 -0
- package/src/indexing/index.ts +15 -0
- package/src/indexing/indexer.ts +383 -0
- package/src/indexing/recent-edits-cache.ts +150 -0
- package/src/indexing/types.ts +44 -0
- package/src/mcp/index.ts +33 -0
- package/src/mcp/manager.ts +385 -0
- package/src/oauth.ts +330 -0
- package/src/permissions/index.ts +1011 -0
- package/src/plan/index.ts +20 -0
- package/src/plan/manager.ts +233 -0
- package/src/rules/index.ts +28 -0
- package/src/rules/manager.ts +276 -0
- package/src/rules/types.ts +40 -0
- package/src/sandbox/filesystem.ts +135 -0
- package/src/sandbox/index.ts +9 -0
- package/src/sandbox/manager.ts +213 -0
- package/src/sandbox/network.ts +101 -0
- package/src/sandbox/types.ts +63 -0
- package/src/tools/ast-edit.ts +493 -0
- package/src/tools/code-verify.ts +143 -0
- package/src/tools/codebase-search.ts +117 -0
- package/src/tools/file-delete.ts +155 -0
- package/src/tools/file-edit.ts +115 -0
- package/src/tools/file-read.ts +195 -0
- package/src/tools/file-run.ts +158 -0
- package/src/tools/file-write.ts +104 -0
- package/src/tools/glob-search.ts +80 -0
- package/src/tools/grep-search.ts +120 -0
- package/src/tools/list-dir.ts +172 -0
- package/src/tools/multi-edit.ts +138 -0
- package/src/tools/notebook-edit.ts +342 -0
- package/src/tools/registry.ts +43 -0
- package/src/tools/shell-exec.ts +251 -0
- package/src/tools/sub-agent-manager.ts +183 -0
- package/src/tools/sub-agent-status.ts +67 -0
- package/src/tools/sub-agent-terminate.ts +62 -0
- package/src/tools/sub-agent.ts +162 -0
- package/src/tools/system-info.ts +248 -0
- package/src/tools/todo.ts +149 -0
- package/src/tools/types.ts +21 -0
- package/src/tools/view-diff.ts +99 -0
- package/src/tools/view-repo-map.ts +249 -0
- package/src/tools/web-fetch.ts +118 -0
- package/src/tools/web-search.ts +129 -0
- package/src/utils/gitignore.ts +73 -0
- package/src/utils/lazy-apply.ts +189 -0
- package/src/utils/memory.ts +124 -0
- package/src/utils/path-matching.ts +84 -0
- package/src/utils/path-safety.ts +19 -0
- package/src/utils/project-config.ts +41 -0
- package/src/utils/search-match.ts +495 -0
- package/src/utils/shell-paths.ts +79 -0
- package/src/utils/streaming-diff.ts +260 -0
- package/src/utils/todo.ts +115 -0
- package/tsconfig.json +18 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codebase-search.d.ts","sourceRoot":"","sources":["../../src/tools/codebase-search.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGpE,qBAAa,kBAAmB,YAAW,QAAQ;IACjD,UAAU,EAAE,cAAc,CA+BxB;IAEF,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,YAAY,CAA8B;gBAEtC,UAAU,EAAE,MAAM;IAIxB,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;YA0CpD,WAAW;CAsB1B"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Codebase Search Tool — semantic + full-text search across the indexed codebase.
|
|
4
|
+
*
|
|
5
|
+
* Uses the indexing system (SQLite FTS5 + optional embeddings) for fast,
|
|
6
|
+
* ranked code retrieval. Falls back to runtime grep if index not available.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.CodebaseSearchTool = void 0;
|
|
10
|
+
const indexing_1 = require("../indexing");
|
|
11
|
+
class CodebaseSearchTool {
|
|
12
|
+
definition = {
|
|
13
|
+
name: "codebase_search",
|
|
14
|
+
description: `Search the entire codebase using natural language or keywords. Uses indexed full-text search (BM25) and optional semantic search (embeddings) for fast, ranked results.
|
|
15
|
+
|
|
16
|
+
The codebase is automatically indexed on first use. Results include file paths, line numbers, and matching code snippets ranked by relevance.
|
|
17
|
+
|
|
18
|
+
Use this for:
|
|
19
|
+
- Finding where a concept is implemented ("authentication middleware")
|
|
20
|
+
- Locating function/class definitions ("UserService class")
|
|
21
|
+
- Understanding how something works ("how errors are handled")
|
|
22
|
+
- Finding usage patterns ("all places that call sendEmail")`,
|
|
23
|
+
inputSchema: {
|
|
24
|
+
type: "object",
|
|
25
|
+
properties: {
|
|
26
|
+
query: {
|
|
27
|
+
type: "string",
|
|
28
|
+
description: "Natural language query or keywords to search for",
|
|
29
|
+
},
|
|
30
|
+
directory: {
|
|
31
|
+
type: "string",
|
|
32
|
+
description: "Optional: limit search to a subdirectory (e.g. 'src/api')",
|
|
33
|
+
},
|
|
34
|
+
limit: {
|
|
35
|
+
type: "number",
|
|
36
|
+
description: "Max results to return. Default: 20.",
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
required: ["query"],
|
|
40
|
+
},
|
|
41
|
+
requiresPermission: false,
|
|
42
|
+
};
|
|
43
|
+
indexer = null;
|
|
44
|
+
workingDir;
|
|
45
|
+
indexPromise = null;
|
|
46
|
+
constructor(workingDir) {
|
|
47
|
+
this.workingDir = workingDir;
|
|
48
|
+
}
|
|
49
|
+
async execute(input) {
|
|
50
|
+
const query = input.query;
|
|
51
|
+
const directory = input.directory;
|
|
52
|
+
const limit = input.limit || 20;
|
|
53
|
+
if (!query.trim()) {
|
|
54
|
+
return { success: false, output: "", error: "Query cannot be empty" };
|
|
55
|
+
}
|
|
56
|
+
// Ensure index exists (lazy initialization)
|
|
57
|
+
try {
|
|
58
|
+
await this.ensureIndex();
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
return { success: false, output: "", error: `Indexing failed: ${err.message}` };
|
|
62
|
+
}
|
|
63
|
+
if (!this.indexer) {
|
|
64
|
+
return { success: false, output: "", error: "Indexer not available" };
|
|
65
|
+
}
|
|
66
|
+
// Search
|
|
67
|
+
const results = await this.indexer.search(query, limit, directory);
|
|
68
|
+
if (results.length === 0) {
|
|
69
|
+
return { success: true, output: `No results found for: "${query}"` };
|
|
70
|
+
}
|
|
71
|
+
// Format results
|
|
72
|
+
const formatted = results.map((r, i) => {
|
|
73
|
+
const header = `### ${i + 1}. ${r.path}:${r.startLine}-${r.endLine} (${r.source}, score: ${r.score.toFixed(3)})`;
|
|
74
|
+
const content = r.content.length > 500
|
|
75
|
+
? r.content.substring(0, 500) + "\n... [truncated]"
|
|
76
|
+
: r.content;
|
|
77
|
+
return `${header}\n\`\`\`\n${content}\n\`\`\``;
|
|
78
|
+
});
|
|
79
|
+
const stats = this.indexer.getStats();
|
|
80
|
+
const header = `Found ${results.length} results for "${query}" (searched ${stats.totalChunks} chunks across ${stats.totalFiles} files)`;
|
|
81
|
+
return { success: true, output: `${header}\n\n${formatted.join("\n\n")}` };
|
|
82
|
+
}
|
|
83
|
+
async ensureIndex() {
|
|
84
|
+
if (this.indexer)
|
|
85
|
+
return;
|
|
86
|
+
// Prevent concurrent indexing
|
|
87
|
+
if (this.indexPromise) {
|
|
88
|
+
await this.indexPromise;
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
this.indexPromise = (async () => {
|
|
92
|
+
this.indexer = new indexing_1.CodebaseIndexer(this.workingDir);
|
|
93
|
+
const stats = this.indexer.getStats();
|
|
94
|
+
// If index is empty or stale (>1 hour), re-index
|
|
95
|
+
const oneHour = 60 * 60 * 1000;
|
|
96
|
+
if (stats.totalFiles === 0 || Date.now() - stats.lastIndexed > oneHour) {
|
|
97
|
+
await this.indexer.index();
|
|
98
|
+
}
|
|
99
|
+
})();
|
|
100
|
+
await this.indexPromise;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
exports.CodebaseSearchTool = CodebaseSearchTool;
|
|
104
|
+
//# sourceMappingURL=codebase-search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codebase-search.js","sourceRoot":"","sources":["../../src/tools/codebase-search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File Delete Tool — permission-controlled file/directory deletion.
|
|
3
|
+
*
|
|
4
|
+
* Unlike raw `rm` via shell_exec, this tool:
|
|
5
|
+
* - Goes through the permission system (Delete category — can be allow/deny/ask via settings)
|
|
6
|
+
* - Checks sandbox write rules before deletion
|
|
7
|
+
* - Reports what will be deleted (file count for directories)
|
|
8
|
+
* - Requires explicit recursive flag for directories
|
|
9
|
+
* - Requires force flag for large directories (>50 items)
|
|
10
|
+
*
|
|
11
|
+
* Users can control deletion via settings rules:
|
|
12
|
+
* - Delete → allow/deny all file deletions
|
|
13
|
+
* - Delete(path) → allow/deny deletion of specific paths
|
|
14
|
+
* - Delete(*.log) → allow/deny deletion by pattern
|
|
15
|
+
*/
|
|
16
|
+
import type { BaseTool, ToolDefinition, ToolResult } from "./types";
|
|
17
|
+
import type { SandboxManager } from "../sandbox";
|
|
18
|
+
export declare class FileDeleteTool implements BaseTool {
|
|
19
|
+
definition: ToolDefinition;
|
|
20
|
+
private workingDir;
|
|
21
|
+
private sandboxManager?;
|
|
22
|
+
constructor(workingDir: string, sandboxManager?: SandboxManager);
|
|
23
|
+
execute(input: Record<string, unknown>): Promise<ToolResult>;
|
|
24
|
+
private countItems;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=file-delete.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-delete.d.ts","sourceRoot":"","sources":["../../src/tools/file-delete.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIjD,qBAAa,cAAe,YAAW,QAAQ;IAC7C,UAAU,EAAE,cAAc,CA2BxB;IAEF,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,cAAc,CAAC,CAAiB;gBAE5B,UAAU,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,cAAc;IAKzD,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IA2ElE,OAAO,CAAC,UAAU;CAiBnB"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* File Delete Tool — permission-controlled file/directory deletion.
|
|
4
|
+
*
|
|
5
|
+
* Unlike raw `rm` via shell_exec, this tool:
|
|
6
|
+
* - Goes through the permission system (Delete category — can be allow/deny/ask via settings)
|
|
7
|
+
* - Checks sandbox write rules before deletion
|
|
8
|
+
* - Reports what will be deleted (file count for directories)
|
|
9
|
+
* - Requires explicit recursive flag for directories
|
|
10
|
+
* - Requires force flag for large directories (>50 items)
|
|
11
|
+
*
|
|
12
|
+
* Users can control deletion via settings rules:
|
|
13
|
+
* - Delete → allow/deny all file deletions
|
|
14
|
+
* - Delete(path) → allow/deny deletion of specific paths
|
|
15
|
+
* - Delete(*.log) → allow/deny deletion by pattern
|
|
16
|
+
*/
|
|
17
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
20
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
21
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
22
|
+
}
|
|
23
|
+
Object.defineProperty(o, k2, desc);
|
|
24
|
+
}) : (function(o, m, k, k2) {
|
|
25
|
+
if (k2 === undefined) k2 = k;
|
|
26
|
+
o[k2] = m[k];
|
|
27
|
+
}));
|
|
28
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
29
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
30
|
+
}) : function(o, v) {
|
|
31
|
+
o["default"] = v;
|
|
32
|
+
});
|
|
33
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
34
|
+
var ownKeys = function(o) {
|
|
35
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
36
|
+
var ar = [];
|
|
37
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
38
|
+
return ar;
|
|
39
|
+
};
|
|
40
|
+
return ownKeys(o);
|
|
41
|
+
};
|
|
42
|
+
return function (mod) {
|
|
43
|
+
if (mod && mod.__esModule) return mod;
|
|
44
|
+
var result = {};
|
|
45
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
46
|
+
__setModuleDefault(result, mod);
|
|
47
|
+
return result;
|
|
48
|
+
};
|
|
49
|
+
})();
|
|
50
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
51
|
+
exports.FileDeleteTool = void 0;
|
|
52
|
+
const fs = __importStar(require("fs"));
|
|
53
|
+
const path = __importStar(require("path"));
|
|
54
|
+
const path_safety_1 = require("../utils/path-safety");
|
|
55
|
+
const MAX_DIR_FILES = 50;
|
|
56
|
+
class FileDeleteTool {
|
|
57
|
+
definition = {
|
|
58
|
+
name: "file_delete",
|
|
59
|
+
description: `Delete a file or directory. You can also use shell_exec with rm/del for simple deletions if preferred.`,
|
|
60
|
+
inputSchema: {
|
|
61
|
+
type: "object",
|
|
62
|
+
properties: {
|
|
63
|
+
file_path: {
|
|
64
|
+
type: "string",
|
|
65
|
+
description: "Path to the file or directory to delete",
|
|
66
|
+
},
|
|
67
|
+
recursive: {
|
|
68
|
+
type: "boolean",
|
|
69
|
+
description: "Required for directory deletion. Deletes all contents. Default: false.",
|
|
70
|
+
},
|
|
71
|
+
force: {
|
|
72
|
+
type: "boolean",
|
|
73
|
+
description: "Required for directories with more than 50 items. Default: false.",
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
required: ["file_path"],
|
|
77
|
+
},
|
|
78
|
+
requiresPermission: true,
|
|
79
|
+
permissionMessage: (input) => {
|
|
80
|
+
const recursive = input.recursive ? " (recursive)" : "";
|
|
81
|
+
return `Delete${recursive}: ${input.file_path}`;
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
workingDir;
|
|
85
|
+
sandboxManager;
|
|
86
|
+
constructor(workingDir, sandboxManager) {
|
|
87
|
+
this.workingDir = workingDir;
|
|
88
|
+
this.sandboxManager = sandboxManager;
|
|
89
|
+
}
|
|
90
|
+
async execute(input) {
|
|
91
|
+
let filePath;
|
|
92
|
+
try {
|
|
93
|
+
filePath = (0, path_safety_1.safePath)(input.file_path, this.workingDir);
|
|
94
|
+
}
|
|
95
|
+
catch (err) {
|
|
96
|
+
return { success: false, output: "", error: err.message };
|
|
97
|
+
}
|
|
98
|
+
const recursive = input.recursive || false;
|
|
99
|
+
const force = input.force || false;
|
|
100
|
+
// Sandbox write check (deletion requires write access to parent)
|
|
101
|
+
if (this.sandboxManager) {
|
|
102
|
+
const check = this.sandboxManager.checkFileWrite(filePath);
|
|
103
|
+
if (!check.allowed) {
|
|
104
|
+
return { success: false, output: "", error: check.reason || "Sandbox: delete access denied" };
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// Existence check
|
|
108
|
+
if (!fs.existsSync(filePath)) {
|
|
109
|
+
return { success: false, output: "", error: `Path not found: ${filePath}` };
|
|
110
|
+
}
|
|
111
|
+
const stat = fs.statSync(filePath);
|
|
112
|
+
// ── File deletion ─────────────────────────────────────────────────────────
|
|
113
|
+
if (stat.isFile() || stat.isSymbolicLink()) {
|
|
114
|
+
try {
|
|
115
|
+
fs.unlinkSync(filePath);
|
|
116
|
+
return { success: true, output: `Deleted file: ${filePath}` };
|
|
117
|
+
}
|
|
118
|
+
catch (err) {
|
|
119
|
+
return { success: false, output: "", error: `Failed to delete: ${err.message}` };
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
// ── Directory deletion ────────────────────────────────────────────────────
|
|
123
|
+
if (!stat.isDirectory()) {
|
|
124
|
+
return { success: false, output: "", error: `Unsupported file type at: ${filePath}` };
|
|
125
|
+
}
|
|
126
|
+
if (!recursive) {
|
|
127
|
+
// Show what's inside so the user can make an informed decision
|
|
128
|
+
const entries = fs.readdirSync(filePath);
|
|
129
|
+
const preview = entries.slice(0, 10).join(", ");
|
|
130
|
+
const more = entries.length > 10 ? ` ... and ${entries.length - 10} more` : "";
|
|
131
|
+
return {
|
|
132
|
+
success: false,
|
|
133
|
+
output: "",
|
|
134
|
+
error: `"${filePath}" is a directory with ${entries.length} items (${preview}${more}). Set recursive=true to delete it and all its contents.`,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
// Count files before deleting
|
|
138
|
+
const fileCount = this.countItems(filePath);
|
|
139
|
+
if (fileCount > MAX_DIR_FILES && !force) {
|
|
140
|
+
return {
|
|
141
|
+
success: false,
|
|
142
|
+
output: "",
|
|
143
|
+
error: `Directory contains ${fileCount} items. Set force=true to confirm bulk deletion of "${filePath}".`,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
try {
|
|
147
|
+
fs.rmSync(filePath, { recursive: true, force: true });
|
|
148
|
+
return {
|
|
149
|
+
success: true,
|
|
150
|
+
output: `Deleted directory: ${filePath} (${fileCount} items removed)`,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
catch (err) {
|
|
154
|
+
return { success: false, output: "", error: `Failed to delete directory: ${err.message}` };
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
countItems(dirPath, limit = 10000) {
|
|
158
|
+
let count = 0;
|
|
159
|
+
try {
|
|
160
|
+
const entries = fs.readdirSync(dirPath, { withFileTypes: true });
|
|
161
|
+
for (const entry of entries) {
|
|
162
|
+
count++;
|
|
163
|
+
if (count >= limit)
|
|
164
|
+
return count;
|
|
165
|
+
if (entry.isDirectory()) {
|
|
166
|
+
count += this.countItems(path.join(dirPath, entry.name), limit - count);
|
|
167
|
+
if (count >= limit)
|
|
168
|
+
return count;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
// Permission denied — count what we can
|
|
174
|
+
}
|
|
175
|
+
return count;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
exports.FileDeleteTool = FileDeleteTool;
|
|
179
|
+
//# sourceMappingURL=file-delete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-delete.js","sourceRoot":"","sources":["../../src/tools/file-delete.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { BaseTool, ToolDefinition, ToolResult } from "./types";
|
|
2
|
+
import type { SandboxManager } from "../sandbox";
|
|
3
|
+
export declare class FileEditTool implements BaseTool {
|
|
4
|
+
definition: ToolDefinition;
|
|
5
|
+
private workingDir;
|
|
6
|
+
private sandboxManager?;
|
|
7
|
+
constructor(workingDir: string, sandboxManager?: SandboxManager);
|
|
8
|
+
execute(input: Record<string, unknown>): Promise<ToolResult>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=file-edit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-edit.d.ts","sourceRoot":"","sources":["../../src/tools/file-edit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAIpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,qBAAa,YAAa,YAAW,QAAQ;IAC3C,UAAU,EAAE,cAAc,CAyBxB;IAEF,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,cAAc,CAAC,CAAiB;gBAE5B,UAAU,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,cAAc;IAKzD,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;CAsDnE"}
|
|
@@ -0,0 +1,138 @@
|
|
|
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.FileEditTool = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path_safety_1 = require("../utils/path-safety");
|
|
39
|
+
const search_match_1 = require("../utils/search-match");
|
|
40
|
+
const lazy_apply_1 = require("../utils/lazy-apply");
|
|
41
|
+
class FileEditTool {
|
|
42
|
+
definition = {
|
|
43
|
+
name: "file_edit",
|
|
44
|
+
description: `Performs string replacement in a file using multi-strategy matching (exact → trimmed → case-insensitive → whitespace-ignored). Also supports unified diff patches. Requires user permission. Access controlled by sandbox/permission rules.
|
|
45
|
+
|
|
46
|
+
IMPORTANT:
|
|
47
|
+
- Always read the file first before editing to see its current contents.
|
|
48
|
+
- old_string should match the file content — the system tolerates minor whitespace/case differences.
|
|
49
|
+
- old_string and new_string MUST be different.
|
|
50
|
+
- When not using replace_all, old_string must be unique in the file. Add more surrounding context if ambiguous.
|
|
51
|
+
- Use replace_all for renaming variables or strings across the file.
|
|
52
|
+
- You can pass a unified diff (with @@ hunk headers) as old_string and leave new_string empty to apply the diff patch directly.
|
|
53
|
+
- This tool CANNOT be called in parallel with itself on the SAME file.`,
|
|
54
|
+
inputSchema: {
|
|
55
|
+
type: "object",
|
|
56
|
+
properties: {
|
|
57
|
+
file_path: { type: "string", description: "Path to the file to edit" },
|
|
58
|
+
old_string: { type: "string", description: "The text to replace — must match file content (exact match preferred, but tolerates whitespace/case differences)" },
|
|
59
|
+
new_string: { type: "string", description: "The replacement text (MUST be different from old_string)" },
|
|
60
|
+
replace_all: { type: "boolean", description: "Replace all occurrences (default: false)" },
|
|
61
|
+
},
|
|
62
|
+
required: ["file_path", "old_string", "new_string"],
|
|
63
|
+
},
|
|
64
|
+
requiresPermission: true,
|
|
65
|
+
permissionMessage: (input) => `Edit file: ${input.file_path}`,
|
|
66
|
+
};
|
|
67
|
+
workingDir;
|
|
68
|
+
sandboxManager;
|
|
69
|
+
constructor(workingDir, sandboxManager) {
|
|
70
|
+
this.workingDir = workingDir;
|
|
71
|
+
this.sandboxManager = sandboxManager;
|
|
72
|
+
}
|
|
73
|
+
async execute(input) {
|
|
74
|
+
let filePath;
|
|
75
|
+
try {
|
|
76
|
+
filePath = (0, path_safety_1.safePath)(input.file_path, this.workingDir);
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
return { success: false, output: "", error: err.message };
|
|
80
|
+
}
|
|
81
|
+
// Sandbox write check
|
|
82
|
+
if (this.sandboxManager) {
|
|
83
|
+
const check = this.sandboxManager.checkFileWrite(filePath);
|
|
84
|
+
if (!check.allowed) {
|
|
85
|
+
return { success: false, output: "", error: check.reason || "Sandbox: write access denied" };
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
const oldStr = input.old_string;
|
|
89
|
+
const newStr = input.new_string;
|
|
90
|
+
const replaceAll = input.replace_all || false;
|
|
91
|
+
if (!fs.existsSync(filePath))
|
|
92
|
+
return { success: false, output: "", error: `File not found: ${filePath}` };
|
|
93
|
+
const content = fs.readFileSync(filePath, "utf-8");
|
|
94
|
+
try {
|
|
95
|
+
// Unified diff mode: detect @@ hunk headers in old_string
|
|
96
|
+
if ((0, search_match_1.isUnifiedDiff)(oldStr)) {
|
|
97
|
+
const result = (0, search_match_1.applyUnifiedDiff)(content, oldStr);
|
|
98
|
+
fs.writeFileSync(filePath, result, "utf-8");
|
|
99
|
+
return { success: true, output: `Applied unified diff patch to ${filePath}\n\n${oldStr}` };
|
|
100
|
+
}
|
|
101
|
+
// Lazy apply: expand placeholder markers in new_string before replacing
|
|
102
|
+
let expandedNewStr = newStr;
|
|
103
|
+
let lazyNote = "";
|
|
104
|
+
if ((0, lazy_apply_1.hasPlaceholders)(newStr)) {
|
|
105
|
+
const { content: expanded, placeholdersExpanded, strategy: lazyStrategy } = (0, lazy_apply_1.expandPlaceholders)(content, newStr);
|
|
106
|
+
if (placeholdersExpanded > 0) {
|
|
107
|
+
expandedNewStr = expanded;
|
|
108
|
+
lazyNote = ` (lazy apply: ${placeholdersExpanded} placeholder(s) expanded via ${lazyStrategy})`;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
const { result, count, strategy } = (0, search_match_1.executeFindAndReplace)(content, oldStr, expandedNewStr, replaceAll);
|
|
112
|
+
fs.writeFileSync(filePath, result, "utf-8");
|
|
113
|
+
const diff = generateDiff(filePath, oldStr, expandedNewStr, count);
|
|
114
|
+
const strategyNote = strategy !== "exact" ? ` (matched via ${strategy} strategy)` : "";
|
|
115
|
+
return { success: true, output: `Edited ${filePath}: replaced ${count} occurrence(s)${strategyNote}${lazyNote}\n\n${diff}` };
|
|
116
|
+
}
|
|
117
|
+
catch (err) {
|
|
118
|
+
return { success: false, output: "", error: err.message };
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
exports.FileEditTool = FileEditTool;
|
|
123
|
+
/** Generate a unified-style diff showing what changed */
|
|
124
|
+
function generateDiff(filePath, oldStr, newStr, count) {
|
|
125
|
+
const oldLines = oldStr.split("\n");
|
|
126
|
+
const newLines = newStr.split("\n");
|
|
127
|
+
const parts = [
|
|
128
|
+
`--- a/${filePath}`,
|
|
129
|
+
`+++ b/${filePath}`,
|
|
130
|
+
`@@ -1,${oldLines.length} +1,${newLines.length} @@ (${count} replacement${count > 1 ? "s" : ""})`,
|
|
131
|
+
];
|
|
132
|
+
for (const line of oldLines)
|
|
133
|
+
parts.push(`- ${line}`);
|
|
134
|
+
for (const line of newLines)
|
|
135
|
+
parts.push(`+ ${line}`);
|
|
136
|
+
return parts.join("\n");
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=file-edit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-edit.js","sourceRoot":"","sources":["../../src/tools/file-edit.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AAEzB,sDAAgD;AAChD,wDAA+F;AAC/F,oDAA0E;AAG1E,MAAa,YAAY;IACvB,UAAU,GAAmB;QAC3B,IAAI,EAAE,WAAW;QACjB,WAAW,EACT;;;;;;;;;uEASiE;QACnE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE;gBACtE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kHAAkH,EAAE;gBAC/J,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0DAA0D,EAAE;gBACvG,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,0CAA0C,EAAE;aAC1F;YACD,QAAQ,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC;SACpD;QACD,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,KAAK,CAAC,SAAS,EAAE;KAC9D,CAAC;IAEM,UAAU,CAAS;IACnB,cAAc,CAAkB;IAExC,YAAY,UAAkB,EAAE,cAA+B;QAC7D,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAA8B;QAC1C,IAAI,QAAgB,CAAC;QACrB,IAAI,CAAC;YACH,QAAQ,GAAG,IAAA,sBAAQ,EAAC,KAAK,CAAC,SAAmB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAClE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;QACvE,CAAC;QAED,sBAAsB;QACtB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC3D,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,IAAI,8BAA8B,EAAE,CAAC;YAC/F,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,UAAoB,CAAC;QAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,UAAoB,CAAC;QAC1C,MAAM,UAAU,GAAI,KAAK,CAAC,WAAuB,IAAI,KAAK,CAAC;QAE3D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC1B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,mBAAmB,QAAQ,EAAE,EAAE,CAAC;QAE9E,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAEnD,IAAI,CAAC;YACH,0DAA0D;YAC1D,IAAI,IAAA,4BAAa,EAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,MAAM,MAAM,GAAG,IAAA,+BAAgB,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBACjD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,iCAAiC,QAAQ,OAAO,MAAM,EAAE,EAAE,CAAC;YAC7F,CAAC;YAED,wEAAwE;YACxE,IAAI,cAAc,GAAG,MAAM,CAAC;YAC5B,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,IAAI,IAAA,4BAAe,EAAC,MAAM,CAAC,EAAE,CAAC;gBAC5B,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAA,+BAAkB,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAChH,IAAI,oBAAoB,GAAG,CAAC,EAAE,CAAC;oBAC7B,cAAc,GAAG,QAAQ,CAAC;oBAC1B,QAAQ,GAAG,iBAAiB,oBAAoB,gCAAgC,YAAY,GAAG,CAAC;gBAClG,CAAC;YACH,CAAC;YAED,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAA,oCAAqB,EAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;YACvG,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAE5C,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;YACnE,MAAM,YAAY,GAAG,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,iBAAiB,QAAQ,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;YACvF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,QAAQ,cAAc,KAAK,iBAAiB,YAAY,GAAG,QAAQ,OAAO,IAAI,EAAE,EAAE,CAAC;QAC/H,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;QACvE,CAAC;IACH,CAAC;CACF;AA1FD,oCA0FC;AAED,yDAAyD;AACzD,SAAS,YAAY,CAAC,QAAgB,EAAE,MAAc,EAAE,MAAc,EAAE,KAAa;IACnF,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEpC,MAAM,KAAK,GAAa;QACtB,SAAS,QAAQ,EAAE;QACnB,SAAS,QAAQ,EAAE;QACnB,SAAS,QAAQ,CAAC,MAAM,OAAO,QAAQ,CAAC,MAAM,QAAQ,KAAK,eAAe,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG;KAClG,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACrD,KAAK,MAAM,IAAI,IAAI,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAErD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { BaseTool, ToolDefinition, ToolResult } from "./types";
|
|
2
|
+
import type { SandboxManager } from "../sandbox";
|
|
3
|
+
export declare class FileReadTool implements BaseTool {
|
|
4
|
+
definition: ToolDefinition;
|
|
5
|
+
private workingDir;
|
|
6
|
+
private sandboxManager?;
|
|
7
|
+
constructor(workingDir: string, sandboxManager?: SandboxManager);
|
|
8
|
+
execute(input: Record<string, unknown>): Promise<ToolResult>;
|
|
9
|
+
private readImage;
|
|
10
|
+
private readPdf;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=file-read.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-read.d.ts","sourceRoot":"","sources":["../../src/tools/file-read.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAMjD,qBAAa,YAAa,YAAW,QAAQ;IAC3C,UAAU,EAAE,cAAc,CAuBxB;IAEF,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,cAAc,CAAC,CAAiB;gBAE5B,UAAU,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,cAAc;IAKzD,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IA8DlE,OAAO,CAAC,SAAS;IAsBjB,OAAO,CAAC,OAAO;CA6BhB"}
|