@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,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-Agent Coordinator — Orchestrates multiple sub-agents for complex tasks.
|
|
3
|
+
*
|
|
4
|
+
* The coordinator pattern splits complex tasks into subtasks, assigns each
|
|
5
|
+
* to a specialized sub-agent, and merges results.
|
|
6
|
+
*
|
|
7
|
+
* Architecture:
|
|
8
|
+
* User Request
|
|
9
|
+
* │
|
|
10
|
+
* ┌───▼───┐
|
|
11
|
+
* │Coordinator│ ← Breaks task into subtasks
|
|
12
|
+
* └───┬───┘
|
|
13
|
+
* │
|
|
14
|
+
* ┌───┼───┬───┐
|
|
15
|
+
* │ │ │ │
|
|
16
|
+
* ▼ ▼ ▼ ▼
|
|
17
|
+
* Agent Agent Agent Agent ← Run in parallel
|
|
18
|
+
* │ │ │ │
|
|
19
|
+
* └───┼───┴───┘
|
|
20
|
+
* │
|
|
21
|
+
* ┌───▼───┐
|
|
22
|
+
* │ Merge │ ← Combine results
|
|
23
|
+
* └───────┘
|
|
24
|
+
*
|
|
25
|
+
* Learning note: This is the Scatter-Gather pattern. The coordinator
|
|
26
|
+
* "scatters" work to sub-agents and "gathers" their results. This is
|
|
27
|
+
* particularly effective for:
|
|
28
|
+
* - Searching across many files simultaneously
|
|
29
|
+
* - Making independent changes to different files
|
|
30
|
+
* - Running analysis tasks that don't depend on each other
|
|
31
|
+
*/
|
|
32
|
+
/**
|
|
33
|
+
* A subtask assigned to a sub-agent.
|
|
34
|
+
*/
|
|
35
|
+
export interface Subtask {
|
|
36
|
+
/** Unique subtask ID */
|
|
37
|
+
id: string;
|
|
38
|
+
/** Description of what this subtask should accomplish */
|
|
39
|
+
description: string;
|
|
40
|
+
/** System prompt override for this subtask's agent */
|
|
41
|
+
systemPrompt?: string;
|
|
42
|
+
/** Whether this subtask can run in parallel with others */
|
|
43
|
+
parallel: boolean;
|
|
44
|
+
/** Dependencies: IDs of subtasks that must complete first */
|
|
45
|
+
dependsOn: string[];
|
|
46
|
+
/** Current status */
|
|
47
|
+
status: "pending" | "running" | "completed" | "failed";
|
|
48
|
+
/** Result of the subtask (populated after completion) */
|
|
49
|
+
result?: string;
|
|
50
|
+
/** Error message if the subtask failed */
|
|
51
|
+
error?: string;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Callback interface for coordinator events.
|
|
55
|
+
*/
|
|
56
|
+
export interface CoordinatorCallbacks {
|
|
57
|
+
/** Called when a subtask starts */
|
|
58
|
+
onSubtaskStart: (subtask: Subtask) => void;
|
|
59
|
+
/** Called when a subtask completes */
|
|
60
|
+
onSubtaskComplete: (subtask: Subtask) => void;
|
|
61
|
+
/** Called when a subtask fails */
|
|
62
|
+
onSubtaskError: (subtask: Subtask, error: Error) => void;
|
|
63
|
+
/** Called when all subtasks are complete */
|
|
64
|
+
onAllComplete: (results: Subtask[]) => void;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* The function signature for running a sub-agent.
|
|
68
|
+
* This is provided by the AgentRunner — we don't import it directly
|
|
69
|
+
* to avoid circular dependencies between core and ai packages.
|
|
70
|
+
*/
|
|
71
|
+
export type SubAgentRunner = (prompt: string, systemPrompt?: string) => Promise<string>;
|
|
72
|
+
export declare class AgentCoordinator {
|
|
73
|
+
private subtasks;
|
|
74
|
+
private runAgent;
|
|
75
|
+
constructor(runAgent: SubAgentRunner);
|
|
76
|
+
/**
|
|
77
|
+
* Add a subtask to the coordinator.
|
|
78
|
+
*/
|
|
79
|
+
addSubtask(description: string, options?: {
|
|
80
|
+
systemPrompt?: string;
|
|
81
|
+
parallel?: boolean;
|
|
82
|
+
dependsOn?: string[];
|
|
83
|
+
}): Subtask;
|
|
84
|
+
/**
|
|
85
|
+
* Execute all subtasks respecting dependencies and parallelism.
|
|
86
|
+
*
|
|
87
|
+
* Algorithm:
|
|
88
|
+
* 1. Find all subtasks whose dependencies are met
|
|
89
|
+
* 2. Run parallel-safe ones concurrently
|
|
90
|
+
* 3. Run sequential ones in order
|
|
91
|
+
* 4. Repeat until all done
|
|
92
|
+
*
|
|
93
|
+
* Learning note: This is a topological sort execution — we process
|
|
94
|
+
* subtasks in dependency order, maximizing parallelism where possible.
|
|
95
|
+
*/
|
|
96
|
+
execute(callbacks?: Partial<CoordinatorCallbacks>): Promise<Subtask[]>;
|
|
97
|
+
/**
|
|
98
|
+
* Run a single subtask using the sub-agent runner.
|
|
99
|
+
*/
|
|
100
|
+
private runSubtask;
|
|
101
|
+
/**
|
|
102
|
+
* Get all subtask results as a formatted summary.
|
|
103
|
+
*/
|
|
104
|
+
getSummary(): string;
|
|
105
|
+
/**
|
|
106
|
+
* Get all subtasks.
|
|
107
|
+
*/
|
|
108
|
+
getSubtasks(): Subtask[];
|
|
109
|
+
/**
|
|
110
|
+
* Clear all subtasks.
|
|
111
|
+
*/
|
|
112
|
+
clear(): void;
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=coordinator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../../src/agents/coordinator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,wBAAwB;IACxB,EAAE,EAAE,MAAM,CAAC;IAEX,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;IAEpB,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,2DAA2D;IAC3D,QAAQ,EAAE,OAAO,CAAC;IAElB,6DAA6D;IAC7D,SAAS,EAAE,MAAM,EAAE,CAAC;IAEpB,qBAAqB;IACrB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IAEvD,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,mCAAmC;IACnC,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAE3C,sCAAsC;IACtC,iBAAiB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAE9C,kCAAkC;IAClC,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAEzD,4CAA4C;IAC5C,aAAa,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CAC7C;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAExF,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,QAAQ,CAAiB;gBAErB,QAAQ,EAAE,cAAc;IAIpC;;OAEG;IACH,UAAU,CACR,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;QACR,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;KACtB,GACA,OAAO;IAcV;;;;;;;;;;;OAWG;IACG,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAmD5E;;OAEG;YACW,UAAU;IAmBxB;;OAEG;IACH,UAAU,IAAI,MAAM;IAqBpB;;OAEG;IACH,WAAW,IAAI,OAAO,EAAE;IAIxB;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Multi-Agent Coordinator — Orchestrates multiple sub-agents for complex tasks.
|
|
4
|
+
*
|
|
5
|
+
* The coordinator pattern splits complex tasks into subtasks, assigns each
|
|
6
|
+
* to a specialized sub-agent, and merges results.
|
|
7
|
+
*
|
|
8
|
+
* Architecture:
|
|
9
|
+
* User Request
|
|
10
|
+
* │
|
|
11
|
+
* ┌───▼───┐
|
|
12
|
+
* │Coordinator│ ← Breaks task into subtasks
|
|
13
|
+
* └───┬───┘
|
|
14
|
+
* │
|
|
15
|
+
* ┌───┼───┬───┐
|
|
16
|
+
* │ │ │ │
|
|
17
|
+
* ▼ ▼ ▼ ▼
|
|
18
|
+
* Agent Agent Agent Agent ← Run in parallel
|
|
19
|
+
* │ │ │ │
|
|
20
|
+
* └───┼───┴───┘
|
|
21
|
+
* │
|
|
22
|
+
* ┌───▼───┐
|
|
23
|
+
* │ Merge │ ← Combine results
|
|
24
|
+
* └───────┘
|
|
25
|
+
*
|
|
26
|
+
* Learning note: This is the Scatter-Gather pattern. The coordinator
|
|
27
|
+
* "scatters" work to sub-agents and "gathers" their results. This is
|
|
28
|
+
* particularly effective for:
|
|
29
|
+
* - Searching across many files simultaneously
|
|
30
|
+
* - Making independent changes to different files
|
|
31
|
+
* - Running analysis tasks that don't depend on each other
|
|
32
|
+
*/
|
|
33
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
34
|
+
exports.AgentCoordinator = void 0;
|
|
35
|
+
class AgentCoordinator {
|
|
36
|
+
subtasks = [];
|
|
37
|
+
runAgent;
|
|
38
|
+
constructor(runAgent) {
|
|
39
|
+
this.runAgent = runAgent;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Add a subtask to the coordinator.
|
|
43
|
+
*/
|
|
44
|
+
addSubtask(description, options) {
|
|
45
|
+
const subtask = {
|
|
46
|
+
id: `subtask_${this.subtasks.length + 1}`,
|
|
47
|
+
description,
|
|
48
|
+
systemPrompt: options?.systemPrompt,
|
|
49
|
+
parallel: options?.parallel ?? true,
|
|
50
|
+
dependsOn: options?.dependsOn || [],
|
|
51
|
+
status: "pending",
|
|
52
|
+
};
|
|
53
|
+
this.subtasks.push(subtask);
|
|
54
|
+
return subtask;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Execute all subtasks respecting dependencies and parallelism.
|
|
58
|
+
*
|
|
59
|
+
* Algorithm:
|
|
60
|
+
* 1. Find all subtasks whose dependencies are met
|
|
61
|
+
* 2. Run parallel-safe ones concurrently
|
|
62
|
+
* 3. Run sequential ones in order
|
|
63
|
+
* 4. Repeat until all done
|
|
64
|
+
*
|
|
65
|
+
* Learning note: This is a topological sort execution — we process
|
|
66
|
+
* subtasks in dependency order, maximizing parallelism where possible.
|
|
67
|
+
*/
|
|
68
|
+
async execute(callbacks) {
|
|
69
|
+
const completed = new Set();
|
|
70
|
+
while (completed.size < this.subtasks.length) {
|
|
71
|
+
// Find ready subtasks (all dependencies met)
|
|
72
|
+
const ready = this.subtasks.filter((t) => t.status === "pending" &&
|
|
73
|
+
t.dependsOn.every((dep) => completed.has(dep)));
|
|
74
|
+
if (ready.length === 0) {
|
|
75
|
+
// No ready tasks but not all complete — there's a dependency cycle
|
|
76
|
+
const stuck = this.subtasks.filter((t) => t.status === "pending");
|
|
77
|
+
for (const t of stuck) {
|
|
78
|
+
t.status = "failed";
|
|
79
|
+
t.error = "Dependency cycle detected";
|
|
80
|
+
}
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
// Separate parallel and sequential tasks
|
|
84
|
+
const parallelTasks = ready.filter((t) => t.parallel);
|
|
85
|
+
const sequentialTasks = ready.filter((t) => !t.parallel);
|
|
86
|
+
// Run parallel tasks concurrently
|
|
87
|
+
if (parallelTasks.length > 0) {
|
|
88
|
+
await Promise.all(parallelTasks.map((task) => this.runSubtask(task, callbacks)));
|
|
89
|
+
for (const task of parallelTasks) {
|
|
90
|
+
if (task.status === "completed") {
|
|
91
|
+
completed.add(task.id);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// Run sequential tasks one at a time
|
|
96
|
+
for (const task of sequentialTasks) {
|
|
97
|
+
await this.runSubtask(task, callbacks);
|
|
98
|
+
if (task.status === "completed") {
|
|
99
|
+
completed.add(task.id);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
callbacks?.onAllComplete?.(this.subtasks);
|
|
104
|
+
return this.subtasks;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Run a single subtask using the sub-agent runner.
|
|
108
|
+
*/
|
|
109
|
+
async runSubtask(subtask, callbacks) {
|
|
110
|
+
subtask.status = "running";
|
|
111
|
+
callbacks?.onSubtaskStart?.(subtask);
|
|
112
|
+
try {
|
|
113
|
+
const result = await this.runAgent(subtask.description, subtask.systemPrompt);
|
|
114
|
+
subtask.result = result;
|
|
115
|
+
subtask.status = "completed";
|
|
116
|
+
callbacks?.onSubtaskComplete?.(subtask);
|
|
117
|
+
}
|
|
118
|
+
catch (err) {
|
|
119
|
+
subtask.status = "failed";
|
|
120
|
+
subtask.error = err instanceof Error ? err.message : String(err);
|
|
121
|
+
callbacks?.onSubtaskError?.(subtask, err instanceof Error ? err : new Error(String(err)));
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Get all subtask results as a formatted summary.
|
|
126
|
+
*/
|
|
127
|
+
getSummary() {
|
|
128
|
+
const lines = ["## Agent Coordinator Results\n"];
|
|
129
|
+
for (const task of this.subtasks) {
|
|
130
|
+
const icon = task.status === "completed" ? "✅"
|
|
131
|
+
: task.status === "failed" ? "❌"
|
|
132
|
+
: task.status === "running" ? "⏳"
|
|
133
|
+
: "⬜";
|
|
134
|
+
lines.push(`${icon} **${task.description}**`);
|
|
135
|
+
if (task.result) {
|
|
136
|
+
lines.push(` ${task.result.substring(0, 200)}`);
|
|
137
|
+
}
|
|
138
|
+
if (task.error) {
|
|
139
|
+
lines.push(` Error: ${task.error}`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return lines.join("\n");
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Get all subtasks.
|
|
146
|
+
*/
|
|
147
|
+
getSubtasks() {
|
|
148
|
+
return [...this.subtasks];
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Clear all subtasks.
|
|
152
|
+
*/
|
|
153
|
+
clear() {
|
|
154
|
+
this.subtasks = [];
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
exports.AgentCoordinator = AgentCoordinator;
|
|
158
|
+
//# sourceMappingURL=coordinator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../../src/agents/coordinator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ContextProvider, ContextResult, ContextResolveOptions } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* @clip — pastes clipboard content into the prompt.
|
|
4
|
+
* Works on macOS (pbpaste), Linux with xclip/xsel/wl-paste.
|
|
5
|
+
*/
|
|
6
|
+
export declare class ClipboardContextProvider implements ContextProvider {
|
|
7
|
+
id: string;
|
|
8
|
+
trigger: string;
|
|
9
|
+
description: string;
|
|
10
|
+
requiresArg: boolean;
|
|
11
|
+
resolve(_arg?: string, _opts?: ContextResolveOptions): Promise<ContextResult>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=clipboard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../src/context-providers/clipboard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAErF;;;GAGG;AACH,qBAAa,wBAAyB,YAAW,eAAe;IAC9D,EAAE,SAAe;IACjB,OAAO,SAAW;IAClB,WAAW,SAA8C;IACzD,WAAW,UAAS;IAEd,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,aAAa,CAAC;CAkCpF"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ClipboardContextProvider = void 0;
|
|
4
|
+
const child_process_1 = require("child_process");
|
|
5
|
+
/**
|
|
6
|
+
* @clip — pastes clipboard content into the prompt.
|
|
7
|
+
* Works on macOS (pbpaste), Linux with xclip/xsel/wl-paste.
|
|
8
|
+
*/
|
|
9
|
+
class ClipboardContextProvider {
|
|
10
|
+
id = "clipboard";
|
|
11
|
+
trigger = "@clip";
|
|
12
|
+
description = "Paste clipboard content into the message";
|
|
13
|
+
requiresArg = false;
|
|
14
|
+
async resolve(_arg, _opts) {
|
|
15
|
+
let content = "";
|
|
16
|
+
try {
|
|
17
|
+
const platform = process.platform;
|
|
18
|
+
if (platform === "darwin") {
|
|
19
|
+
content = (0, child_process_1.execSync)("pbpaste", { encoding: "utf8" });
|
|
20
|
+
}
|
|
21
|
+
else if (platform === "linux") {
|
|
22
|
+
// Try wl-paste (Wayland), then xclip, then xsel
|
|
23
|
+
try {
|
|
24
|
+
content = (0, child_process_1.execSync)("wl-paste --no-newline 2>/dev/null", { encoding: "utf8" });
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
try {
|
|
28
|
+
content = (0, child_process_1.execSync)("xclip -selection clipboard -o 2>/dev/null", { encoding: "utf8" });
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
content = (0, child_process_1.execSync)("xsel --clipboard --output 2>/dev/null", { encoding: "utf8" });
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
return { label: "Clipboard", content: "", metadata: { source: "unsupported platform" } };
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return { label: "Clipboard", content: "(clipboard is empty or unavailable)" };
|
|
41
|
+
}
|
|
42
|
+
const trimmed = content.trim();
|
|
43
|
+
if (!trimmed)
|
|
44
|
+
return { label: "Clipboard", content: "(clipboard is empty)" };
|
|
45
|
+
return {
|
|
46
|
+
label: "Clipboard",
|
|
47
|
+
content: `<clipboard>\n${trimmed}\n</clipboard>`,
|
|
48
|
+
metadata: { source: "system clipboard", itemCount: trimmed.split("\n").length },
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.ClipboardContextProvider = ClipboardContextProvider;
|
|
53
|
+
//# sourceMappingURL=clipboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../src/context-providers/clipboard.ts"],"names":[],"mappings":";;;AAAA,iDAAyC;AAGzC;;;GAGG;AACH,MAAa,wBAAwB;IACnC,EAAE,GAAG,WAAW,CAAC;IACjB,OAAO,GAAG,OAAO,CAAC;IAClB,WAAW,GAAG,0CAA0C,CAAC;IACzD,WAAW,GAAG,KAAK,CAAC;IAEpB,KAAK,CAAC,OAAO,CAAC,IAAa,EAAE,KAA6B;QACxD,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;YAClC,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC1B,OAAO,GAAG,IAAA,wBAAQ,EAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;YACtD,CAAC;iBAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;gBAChC,gDAAgD;gBAChD,IAAI,CAAC;oBACH,OAAO,GAAG,IAAA,wBAAQ,EAAC,mCAAmC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;gBAChF,CAAC;gBAAC,MAAM,CAAC;oBACP,IAAI,CAAC;wBACH,OAAO,GAAG,IAAA,wBAAQ,EAAC,2CAA2C,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;oBACxF,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO,GAAG,IAAA,wBAAQ,EAAC,uCAAuC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;oBACpF,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,sBAAsB,EAAE,EAAE,CAAC;YAC3F,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,qCAAqC,EAAE,CAAC;QAChF,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC;QAE7E,OAAO;YACL,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE,gBAAgB,OAAO,gBAAgB;YAChD,QAAQ,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;SAChF,CAAC;IACJ,CAAC;CACF;AAxCD,4DAwCC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codebase Context Provider — @codebase
|
|
3
|
+
*
|
|
4
|
+
* Semantic search across the entire repository.
|
|
5
|
+
* Finds the most relevant files/code for a given query.
|
|
6
|
+
*
|
|
7
|
+
* How it works:
|
|
8
|
+
* 1. User types @codebase followed by a search query
|
|
9
|
+
* 2. We search file names and content using glob + grep
|
|
10
|
+
* 3. Rank results by relevance (filename match > content match)
|
|
11
|
+
* 4. Return the top N most relevant code snippets
|
|
12
|
+
*
|
|
13
|
+
* Learning note: This is a text-based search approach (not embedding-based).
|
|
14
|
+
* For true semantic search, you'd want vector embeddings + a vector DB.
|
|
15
|
+
* But text search with smart ranking gets you 80% of the way there
|
|
16
|
+
* and works offline without any setup.
|
|
17
|
+
*
|
|
18
|
+
* Future enhancement: Add optional embedding-based indexing for
|
|
19
|
+
* projects that configure it.
|
|
20
|
+
*/
|
|
21
|
+
import type { ContextProvider, ContextResult, ContextResolveOptions } from "./types";
|
|
22
|
+
export declare class CodebaseContextProvider implements ContextProvider {
|
|
23
|
+
id: string;
|
|
24
|
+
trigger: string;
|
|
25
|
+
description: string;
|
|
26
|
+
requiresArg: boolean;
|
|
27
|
+
resolve(arg?: string, options?: ContextResolveOptions): Promise<ContextResult>;
|
|
28
|
+
/**
|
|
29
|
+
* Search the codebase for a query string.
|
|
30
|
+
* Uses ripgrep (rg) if available for fast searching,
|
|
31
|
+
* otherwise falls back to a simple Node.js file walker.
|
|
32
|
+
*/
|
|
33
|
+
private search;
|
|
34
|
+
/**
|
|
35
|
+
* Fast search using ripgrep (rg).
|
|
36
|
+
* Learning note: ripgrep respects .gitignore by default,
|
|
37
|
+
* which is exactly what we want.
|
|
38
|
+
*/
|
|
39
|
+
private searchWithRipgrep;
|
|
40
|
+
/**
|
|
41
|
+
* Simple fallback search using Node.js file system.
|
|
42
|
+
* Slower but works everywhere without external dependencies.
|
|
43
|
+
*/
|
|
44
|
+
private searchSimple;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=codebase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codebase.d.ts","sourceRoot":"","sources":["../../src/context-providers/codebase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AA2BrF,qBAAa,uBAAwB,YAAW,eAAe;IAC7D,EAAE,SAAc;IAChB,OAAO,SAAe;IACtB,WAAW,SAAkD;IAC7D,WAAW,UAAQ;IAEb,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,aAAa,CAAC;IAyDpF;;;;OAIG;YACW,MAAM;IAapB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAoEzB;;;OAGG;IACH,OAAO,CAAC,YAAY;CAgErB"}
|