codesift-mcp 0.1.0 → 0.2.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 +66 -21
- package/README.md +346 -56
- package/dist/cli/args.d.ts +2 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +11 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +177 -67
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/help.d.ts +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +157 -0
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/hooks.d.ts +3 -0
- package/dist/cli/hooks.d.ts.map +1 -0
- package/dist/cli/hooks.js +163 -0
- package/dist/cli/hooks.js.map +1 -0
- package/dist/cli/setup.d.ts +25 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +400 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -0
- package/dist/config.js.map +1 -1
- package/dist/formatters-shortening.d.ts +7 -0
- package/dist/formatters-shortening.d.ts.map +1 -0
- package/dist/formatters-shortening.js +68 -0
- package/dist/formatters-shortening.js.map +1 -0
- package/dist/formatters.d.ts +314 -0
- package/dist/formatters.d.ts.map +1 -0
- package/dist/formatters.js +396 -0
- package/dist/formatters.js.map +1 -0
- package/dist/instructions.d.ts +6 -0
- package/dist/instructions.d.ts.map +1 -0
- package/dist/instructions.js +72 -0
- package/dist/instructions.js.map +1 -0
- package/dist/lsp/lsp-client.d.ts +21 -0
- package/dist/lsp/lsp-client.d.ts.map +1 -0
- package/dist/lsp/lsp-client.js +122 -0
- package/dist/lsp/lsp-client.js.map +1 -0
- package/dist/lsp/lsp-manager.d.ts +12 -0
- package/dist/lsp/lsp-manager.d.ts.map +1 -0
- package/dist/lsp/lsp-manager.js +82 -0
- package/dist/lsp/lsp-manager.js.map +1 -0
- package/dist/lsp/lsp-servers.d.ts +13 -0
- package/dist/lsp/lsp-servers.d.ts.map +1 -0
- package/dist/lsp/lsp-servers.js +57 -0
- package/dist/lsp/lsp-servers.js.map +1 -0
- package/dist/lsp/lsp-tools.d.ts +67 -0
- package/dist/lsp/lsp-tools.d.ts.map +1 -0
- package/dist/lsp/lsp-tools.js +359 -0
- package/dist/lsp/lsp-tools.js.map +1 -0
- package/dist/parser/extractors/_shared.d.ts +11 -0
- package/dist/parser/extractors/_shared.d.ts.map +1 -0
- package/dist/parser/extractors/_shared.js +38 -0
- package/dist/parser/extractors/_shared.js.map +1 -0
- package/dist/parser/extractors/astro.d.ts +15 -0
- package/dist/parser/extractors/astro.d.ts.map +1 -0
- package/dist/parser/extractors/astro.js +104 -0
- package/dist/parser/extractors/astro.js.map +1 -0
- package/dist/parser/extractors/conversation.d.ts +16 -0
- package/dist/parser/extractors/conversation.d.ts.map +1 -0
- package/dist/parser/extractors/conversation.js +196 -0
- package/dist/parser/extractors/conversation.js.map +1 -0
- package/dist/parser/extractors/go.d.ts.map +1 -1
- package/dist/parser/extractors/go.js +22 -45
- package/dist/parser/extractors/go.js.map +1 -1
- package/dist/parser/extractors/python.d.ts +1 -1
- package/dist/parser/extractors/python.d.ts.map +1 -1
- package/dist/parser/extractors/python.js +19 -50
- package/dist/parser/extractors/python.js.map +1 -1
- package/dist/parser/extractors/rust.d.ts +1 -1
- package/dist/parser/extractors/rust.d.ts.map +1 -1
- package/dist/parser/extractors/rust.js +7 -34
- package/dist/parser/extractors/rust.js.map +1 -1
- package/dist/parser/extractors/typescript.d.ts +1 -1
- package/dist/parser/extractors/typescript.d.ts.map +1 -1
- package/dist/parser/extractors/typescript.js +99 -68
- package/dist/parser/extractors/typescript.js.map +1 -1
- package/dist/parser/parser-manager.d.ts.map +1 -1
- package/dist/parser/parser-manager.js +12 -2
- package/dist/parser/parser-manager.js.map +1 -1
- package/dist/parser/symbol-extractor.d.ts +2 -0
- package/dist/parser/symbol-extractor.d.ts.map +1 -1
- package/dist/parser/symbol-extractor.js +2 -0
- package/dist/parser/symbol-extractor.js.map +1 -1
- package/dist/register-tools.d.ts +127 -0
- package/dist/register-tools.d.ts.map +1 -0
- package/dist/register-tools.js +1453 -0
- package/dist/register-tools.js.map +1 -0
- package/dist/retrieval/codebase-retrieval.d.ts +4 -26
- package/dist/retrieval/codebase-retrieval.d.ts.map +1 -1
- package/dist/retrieval/codebase-retrieval.js +105 -403
- package/dist/retrieval/codebase-retrieval.js.map +1 -1
- package/dist/retrieval/retrieval-constants.d.ts +27 -0
- package/dist/retrieval/retrieval-constants.d.ts.map +1 -0
- package/dist/retrieval/retrieval-constants.js +27 -0
- package/dist/retrieval/retrieval-constants.js.map +1 -0
- package/dist/retrieval/retrieval-schemas.d.ts +107 -0
- package/dist/retrieval/retrieval-schemas.d.ts.map +1 -0
- package/dist/retrieval/retrieval-schemas.js +102 -0
- package/dist/retrieval/retrieval-schemas.js.map +1 -0
- package/dist/retrieval/retrieval-utils.d.ts +40 -0
- package/dist/retrieval/retrieval-utils.d.ts.map +1 -0
- package/dist/retrieval/retrieval-utils.js +139 -0
- package/dist/retrieval/retrieval-utils.js.map +1 -0
- package/dist/retrieval/semantic-handlers.d.ts +8 -0
- package/dist/retrieval/semantic-handlers.d.ts.map +1 -0
- package/dist/retrieval/semantic-handlers.js +152 -0
- package/dist/retrieval/semantic-handlers.js.map +1 -0
- package/dist/search/bm25.d.ts +6 -1
- package/dist/search/bm25.d.ts.map +1 -1
- package/dist/search/bm25.js +95 -32
- package/dist/search/bm25.js.map +1 -1
- package/dist/search/chunker.d.ts +10 -0
- package/dist/search/chunker.d.ts.map +1 -1
- package/dist/search/chunker.js +63 -11
- package/dist/search/chunker.js.map +1 -1
- package/dist/search/reranker.d.ts +15 -0
- package/dist/search/reranker.d.ts.map +1 -0
- package/dist/search/reranker.js +126 -0
- package/dist/search/reranker.js.map +1 -0
- package/dist/search/semantic.d.ts +1 -1
- package/dist/search/semantic.d.ts.map +1 -1
- package/dist/search/semantic.js +40 -45
- package/dist/search/semantic.js.map +1 -1
- package/dist/server-helpers.d.ts +29 -0
- package/dist/server-helpers.d.ts.map +1 -0
- package/dist/server-helpers.js +312 -0
- package/dist/server-helpers.js.map +1 -0
- package/dist/server.d.ts +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +11 -271
- package/dist/server.js.map +1 -1
- package/dist/storage/_shared.d.ts +9 -0
- package/dist/storage/_shared.d.ts.map +1 -0
- package/dist/storage/_shared.js +26 -0
- package/dist/storage/_shared.js.map +1 -0
- package/dist/storage/chunk-store.d.ts.map +1 -1
- package/dist/storage/chunk-store.js +23 -63
- package/dist/storage/chunk-store.js.map +1 -1
- package/dist/storage/embedding-store.d.ts +6 -3
- package/dist/storage/embedding-store.d.ts.map +1 -1
- package/dist/storage/embedding-store.js +54 -30
- package/dist/storage/embedding-store.js.map +1 -1
- package/dist/storage/graph-store.d.ts +48 -0
- package/dist/storage/graph-store.d.ts.map +1 -0
- package/dist/storage/graph-store.js +52 -0
- package/dist/storage/graph-store.js.map +1 -0
- package/dist/storage/index-store.d.ts +5 -0
- package/dist/storage/index-store.d.ts.map +1 -1
- package/dist/storage/index-store.js +28 -16
- package/dist/storage/index-store.js.map +1 -1
- package/dist/storage/registry.d.ts +4 -0
- package/dist/storage/registry.d.ts.map +1 -1
- package/dist/storage/registry.js +16 -16
- package/dist/storage/registry.js.map +1 -1
- package/dist/storage/usage-stats.d.ts +6 -0
- package/dist/storage/usage-stats.d.ts.map +1 -1
- package/dist/storage/usage-stats.js +59 -11
- package/dist/storage/usage-stats.js.map +1 -1
- package/dist/storage/usage-tracker.d.ts +3 -0
- package/dist/storage/usage-tracker.d.ts.map +1 -1
- package/dist/storage/usage-tracker.js +50 -132
- package/dist/storage/usage-tracker.js.map +1 -1
- package/dist/storage/watcher.d.ts +2 -1
- package/dist/storage/watcher.d.ts.map +1 -1
- package/dist/storage/watcher.js +16 -16
- package/dist/storage/watcher.js.map +1 -1
- package/dist/tools/ast-query-tools.d.ts +29 -0
- package/dist/tools/ast-query-tools.d.ts.map +1 -0
- package/dist/tools/ast-query-tools.js +110 -0
- package/dist/tools/ast-query-tools.js.map +1 -0
- package/dist/tools/boundary-tools.d.ts +31 -0
- package/dist/tools/boundary-tools.d.ts.map +1 -0
- package/dist/tools/boundary-tools.js +62 -0
- package/dist/tools/boundary-tools.js.map +1 -0
- package/dist/tools/clone-tools.d.ts +35 -0
- package/dist/tools/clone-tools.d.ts.map +1 -0
- package/dist/tools/clone-tools.js +181 -0
- package/dist/tools/clone-tools.js.map +1 -0
- package/dist/tools/community-tools.d.ts +23 -0
- package/dist/tools/community-tools.d.ts.map +1 -0
- package/dist/tools/community-tools.js +297 -0
- package/dist/tools/community-tools.js.map +1 -0
- package/dist/tools/complexity-tools.d.ts +34 -0
- package/dist/tools/complexity-tools.d.ts.map +1 -0
- package/dist/tools/complexity-tools.js +135 -0
- package/dist/tools/complexity-tools.js.map +1 -0
- package/dist/tools/context-tools.d.ts +44 -3
- package/dist/tools/context-tools.d.ts.map +1 -1
- package/dist/tools/context-tools.js +329 -99
- package/dist/tools/context-tools.js.map +1 -1
- package/dist/tools/conversation-tools.d.ts +107 -0
- package/dist/tools/conversation-tools.d.ts.map +1 -0
- package/dist/tools/conversation-tools.js +419 -0
- package/dist/tools/conversation-tools.js.map +1 -0
- package/dist/tools/coordinator-tools.d.ts +73 -0
- package/dist/tools/coordinator-tools.d.ts.map +1 -0
- package/dist/tools/coordinator-tools.js +153 -0
- package/dist/tools/coordinator-tools.js.map +1 -0
- package/dist/tools/cross-repo-tools.d.ts +43 -0
- package/dist/tools/cross-repo-tools.d.ts.map +1 -0
- package/dist/tools/cross-repo-tools.js +55 -0
- package/dist/tools/cross-repo-tools.js.map +1 -0
- package/dist/tools/diff-tools.d.ts +4 -1
- package/dist/tools/diff-tools.d.ts.map +1 -1
- package/dist/tools/diff-tools.js +23 -5
- package/dist/tools/diff-tools.js.map +1 -1
- package/dist/tools/frequency-tools.d.ts +46 -0
- package/dist/tools/frequency-tools.d.ts.map +1 -0
- package/dist/tools/frequency-tools.js +184 -0
- package/dist/tools/frequency-tools.js.map +1 -0
- package/dist/tools/generate-tools.d.ts.map +1 -1
- package/dist/tools/generate-tools.js +13 -2
- package/dist/tools/generate-tools.js.map +1 -1
- package/dist/tools/graph-tools.d.ts +44 -11
- package/dist/tools/graph-tools.d.ts.map +1 -1
- package/dist/tools/graph-tools.js +147 -104
- package/dist/tools/graph-tools.js.map +1 -1
- package/dist/tools/hotspot-tools.d.ts +24 -0
- package/dist/tools/hotspot-tools.d.ts.map +1 -0
- package/dist/tools/hotspot-tools.js +122 -0
- package/dist/tools/hotspot-tools.js.map +1 -0
- package/dist/tools/impact-tools.d.ts +13 -0
- package/dist/tools/impact-tools.d.ts.map +1 -0
- package/dist/tools/impact-tools.js +238 -0
- package/dist/tools/impact-tools.js.map +1 -0
- package/dist/tools/index-tools.d.ts +44 -3
- package/dist/tools/index-tools.d.ts.map +1 -1
- package/dist/tools/index-tools.js +530 -222
- package/dist/tools/index-tools.js.map +1 -1
- package/dist/tools/memory-tools.d.ts +35 -0
- package/dist/tools/memory-tools.d.ts.map +1 -0
- package/dist/tools/memory-tools.js +229 -0
- package/dist/tools/memory-tools.js.map +1 -0
- package/dist/tools/outline-tools.d.ts +24 -13
- package/dist/tools/outline-tools.d.ts.map +1 -1
- package/dist/tools/outline-tools.js +113 -87
- package/dist/tools/outline-tools.js.map +1 -1
- package/dist/tools/pattern-tools.d.ts +32 -0
- package/dist/tools/pattern-tools.d.ts.map +1 -0
- package/dist/tools/pattern-tools.js +116 -0
- package/dist/tools/pattern-tools.js.map +1 -0
- package/dist/tools/report-tools.d.ts +5 -0
- package/dist/tools/report-tools.d.ts.map +1 -0
- package/dist/tools/report-tools.js +167 -0
- package/dist/tools/report-tools.js.map +1 -0
- package/dist/tools/review-diff-tools.d.ts +148 -0
- package/dist/tools/review-diff-tools.d.ts.map +1 -0
- package/dist/tools/review-diff-tools.js +852 -0
- package/dist/tools/review-diff-tools.js.map +1 -0
- package/dist/tools/route-tools.d.ts +32 -0
- package/dist/tools/route-tools.d.ts.map +1 -0
- package/dist/tools/route-tools.js +276 -0
- package/dist/tools/route-tools.js.map +1 -0
- package/dist/tools/search-ranker.d.ts +5 -0
- package/dist/tools/search-ranker.d.ts.map +1 -0
- package/dist/tools/search-ranker.js +142 -0
- package/dist/tools/search-ranker.js.map +1 -0
- package/dist/tools/search-tools.d.ts +24 -1
- package/dist/tools/search-tools.d.ts.map +1 -1
- package/dist/tools/search-tools.js +459 -225
- package/dist/tools/search-tools.js.map +1 -1
- package/dist/tools/secret-tools.d.ts +104 -0
- package/dist/tools/secret-tools.d.ts.map +1 -0
- package/dist/tools/secret-tools.js +410 -0
- package/dist/tools/secret-tools.js.map +1 -0
- package/dist/tools/symbol-tools.d.ts +90 -2
- package/dist/tools/symbol-tools.d.ts.map +1 -1
- package/dist/tools/symbol-tools.js +576 -42
- package/dist/tools/symbol-tools.js.map +1 -1
- package/dist/types.d.ts +34 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/framework-detect.d.ts +5 -0
- package/dist/utils/framework-detect.d.ts.map +1 -0
- package/dist/utils/framework-detect.js +36 -0
- package/dist/utils/framework-detect.js.map +1 -0
- package/dist/utils/glob.d.ts +19 -0
- package/dist/utils/glob.d.ts.map +1 -0
- package/dist/utils/glob.js +74 -0
- package/dist/utils/glob.js.map +1 -0
- package/dist/utils/import-graph.d.ts +29 -0
- package/dist/utils/import-graph.d.ts.map +1 -0
- package/dist/utils/import-graph.js +125 -0
- package/dist/utils/import-graph.js.map +1 -0
- package/dist/utils/test-file.d.ts.map +1 -1
- package/dist/utils/test-file.js +1 -0
- package/dist/utils/test-file.js.map +1 -1
- package/dist/utils/walk.d.ts +45 -0
- package/dist/utils/walk.d.ts.map +1 -0
- package/dist/utils/walk.js +87 -0
- package/dist/utils/walk.js.map +1 -0
- package/package.json +10 -4
- package/rules/codesift.md +187 -0
- package/rules/codesift.mdc +192 -0
- package/rules/codex.md +187 -0
- package/rules/gemini.md +187 -0
package/dist/server.js
CHANGED
|
@@ -1,282 +1,22 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
2
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
3
|
-
import { z } from "zod";
|
|
4
3
|
import { loadConfig } from "./config.js";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
import { assembleContext, getKnowledgeMap } from "./tools/context-tools.js";
|
|
11
|
-
import { diffOutline, changedSymbols } from "./tools/diff-tools.js";
|
|
12
|
-
import { generateClaudeMd } from "./tools/generate-tools.js";
|
|
13
|
-
import { codebaseRetrieval } from "./retrieval/codebase-retrieval.js";
|
|
14
|
-
import { trackToolCall } from "./storage/usage-tracker.js";
|
|
15
|
-
import { getUsageStats, formatUsageReport } from "./storage/usage-stats.js";
|
|
16
|
-
// ---------------------------------------------------------------------------
|
|
17
|
-
// Helpers
|
|
18
|
-
// ---------------------------------------------------------------------------
|
|
19
|
-
function errorResult(message) {
|
|
20
|
-
return {
|
|
21
|
-
content: [
|
|
22
|
-
{ type: "text", text: JSON.stringify({ error: message }) },
|
|
23
|
-
],
|
|
24
|
-
isError: true,
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
function wrapTool(toolName, args, fn) {
|
|
28
|
-
return async () => {
|
|
29
|
-
const start = performance.now();
|
|
30
|
-
try {
|
|
31
|
-
const data = await fn();
|
|
32
|
-
const text = JSON.stringify(data, null, 2);
|
|
33
|
-
const elapsed = performance.now() - start;
|
|
34
|
-
trackToolCall(toolName, args, text, data, elapsed);
|
|
35
|
-
return { content: [{ type: "text", text }] };
|
|
36
|
-
}
|
|
37
|
-
catch (err) {
|
|
38
|
-
const elapsed = performance.now() - start;
|
|
39
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
40
|
-
trackToolCall(toolName, args, message, { error: message }, elapsed);
|
|
41
|
-
return errorResult(message);
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
// ---------------------------------------------------------------------------
|
|
46
|
-
// Server setup
|
|
47
|
-
// ---------------------------------------------------------------------------
|
|
4
|
+
import { registerTools } from "./register-tools.js";
|
|
5
|
+
import { autoDiscoverConversations } from "./tools/conversation-tools.js";
|
|
6
|
+
import { CODESIFT_INSTRUCTIONS } from "./instructions.js";
|
|
7
|
+
// Re-export for test compatibility
|
|
8
|
+
export { buildResponseHint, resetSessionState } from "./server-helpers.js";
|
|
48
9
|
loadConfig();
|
|
49
|
-
const server = new McpServer({
|
|
50
|
-
|
|
51
|
-
version: "0.1.0",
|
|
52
|
-
});
|
|
53
|
-
// ---------------------------------------------------------------------------
|
|
54
|
-
// 1. index_folder
|
|
55
|
-
// ---------------------------------------------------------------------------
|
|
56
|
-
server.tool("index_folder", "Index a local folder, extracting symbols and building the search index", {
|
|
57
|
-
path: z.string().describe("Absolute path to the folder to index"),
|
|
58
|
-
incremental: z.boolean().optional().describe("Only re-index changed files"),
|
|
59
|
-
include_paths: z.array(z.string()).optional().describe("Glob patterns to include"),
|
|
60
|
-
}, async (args) => wrapTool("index_folder", args, () => indexFolder(args.path, {
|
|
61
|
-
incremental: args.incremental,
|
|
62
|
-
include_paths: args.include_paths,
|
|
63
|
-
}))());
|
|
64
|
-
// ---------------------------------------------------------------------------
|
|
65
|
-
// 2. index_repo
|
|
66
|
-
// ---------------------------------------------------------------------------
|
|
67
|
-
server.tool("index_repo", "Clone and index a remote git repository", {
|
|
68
|
-
url: z.string().describe("Git clone URL"),
|
|
69
|
-
branch: z.string().optional().describe("Branch to checkout"),
|
|
70
|
-
include_paths: z.array(z.string()).optional().describe("Glob patterns to include"),
|
|
71
|
-
}, async (args) => wrapTool("index_repo", args, () => indexRepo(args.url, {
|
|
72
|
-
branch: args.branch,
|
|
73
|
-
include_paths: args.include_paths,
|
|
74
|
-
}))());
|
|
75
|
-
// ---------------------------------------------------------------------------
|
|
76
|
-
// 3. list_repos
|
|
77
|
-
// ---------------------------------------------------------------------------
|
|
78
|
-
server.tool("list_repos", "List all indexed repositories with metadata", {}, async () => wrapTool("list_repos", {}, () => listAllRepos())());
|
|
79
|
-
// ---------------------------------------------------------------------------
|
|
80
|
-
// 4. invalidate_cache
|
|
81
|
-
// ---------------------------------------------------------------------------
|
|
82
|
-
server.tool("invalidate_cache", "Clear the index cache for a repository, forcing full re-index on next use", {
|
|
83
|
-
repo: z.string().describe("Repository identifier (e.g. local/my-project)"),
|
|
84
|
-
}, async (args) => wrapTool("invalidate_cache", args, () => invalidateCache(args.repo))());
|
|
85
|
-
// ---------------------------------------------------------------------------
|
|
86
|
-
// 5. search_symbols
|
|
87
|
-
// ---------------------------------------------------------------------------
|
|
88
|
-
server.tool("search_symbols", "Search for code symbols (functions, classes, types) by name or signature", {
|
|
89
|
-
repo: z.string().describe("Repository identifier"),
|
|
90
|
-
query: z.string().describe("Search query string"),
|
|
91
|
-
kind: z.string().optional().describe("Filter by symbol kind (function, class, etc.)"),
|
|
92
|
-
file_pattern: z.string().optional().describe("Glob pattern to filter files"),
|
|
93
|
-
include_source: z.boolean().optional().describe("Include full source code of each symbol"),
|
|
94
|
-
top_k: z.number().optional().describe("Maximum number of results to return (default 50)"),
|
|
95
|
-
source_chars: z.number().optional().describe("Truncate each symbol's source to N characters (reduces output size)"),
|
|
96
|
-
}, async (args) => wrapTool("search_symbols", args, () => searchSymbols(args.repo, args.query, {
|
|
97
|
-
kind: args.kind,
|
|
98
|
-
file_pattern: args.file_pattern,
|
|
99
|
-
include_source: args.include_source,
|
|
100
|
-
top_k: args.top_k,
|
|
101
|
-
source_chars: args.source_chars,
|
|
102
|
-
}))());
|
|
103
|
-
// ---------------------------------------------------------------------------
|
|
104
|
-
// 6. search_text
|
|
105
|
-
// ---------------------------------------------------------------------------
|
|
106
|
-
server.tool("search_text", "Full-text search across all files in a repository", {
|
|
107
|
-
repo: z.string().describe("Repository identifier"),
|
|
108
|
-
query: z.string().describe("Search query or regex pattern"),
|
|
109
|
-
regex: z.boolean().optional().describe("Treat query as a regex pattern"),
|
|
110
|
-
context_lines: z.number().optional().describe("Number of context lines around each match"),
|
|
111
|
-
file_pattern: z.string().optional().describe("Glob pattern to filter files"),
|
|
112
|
-
max_results: z.number().optional().describe("Maximum number of matching lines to return (default 500)"),
|
|
113
|
-
}, async (args) => wrapTool("search_text", args, () => searchText(args.repo, args.query, {
|
|
114
|
-
regex: args.regex,
|
|
115
|
-
context_lines: args.context_lines,
|
|
116
|
-
file_pattern: args.file_pattern,
|
|
117
|
-
max_results: args.max_results,
|
|
118
|
-
}))());
|
|
119
|
-
// ---------------------------------------------------------------------------
|
|
120
|
-
// 7. get_file_tree
|
|
121
|
-
// ---------------------------------------------------------------------------
|
|
122
|
-
server.tool("get_file_tree", "Get the file tree of a repository with symbol counts per file. Use compact=true for a flat list of paths (10-50x less output).", {
|
|
123
|
-
repo: z.string().describe("Repository identifier"),
|
|
124
|
-
path_prefix: z.string().optional().describe("Filter to a subtree by path prefix"),
|
|
125
|
-
name_pattern: z.string().optional().describe("Glob pattern to filter file names"),
|
|
126
|
-
depth: z.number().optional().describe("Maximum directory depth to traverse"),
|
|
127
|
-
compact: z.boolean().optional().describe("Return flat list of {path, symbols} instead of nested tree (much less output)"),
|
|
128
|
-
min_symbols: z.number().optional().describe("Only include files with at least this many symbols"),
|
|
129
|
-
}, async (args) => wrapTool("get_file_tree", args, () => getFileTree(args.repo, {
|
|
130
|
-
path_prefix: args.path_prefix,
|
|
131
|
-
name_pattern: args.name_pattern,
|
|
132
|
-
depth: args.depth,
|
|
133
|
-
compact: args.compact,
|
|
134
|
-
min_symbols: args.min_symbols,
|
|
135
|
-
}))());
|
|
136
|
-
// ---------------------------------------------------------------------------
|
|
137
|
-
// 8. get_file_outline
|
|
138
|
-
// ---------------------------------------------------------------------------
|
|
139
|
-
server.tool("get_file_outline", "Get the symbol outline of a single file (functions, classes, exports)", {
|
|
140
|
-
repo: z.string().describe("Repository identifier"),
|
|
141
|
-
file_path: z.string().describe("Relative file path within the repository"),
|
|
142
|
-
}, async (args) => wrapTool("get_file_outline", args, () => getFileOutline(args.repo, args.file_path))());
|
|
143
|
-
// ---------------------------------------------------------------------------
|
|
144
|
-
// 9. get_repo_outline
|
|
145
|
-
// ---------------------------------------------------------------------------
|
|
146
|
-
server.tool("get_repo_outline", "Get a high-level outline of the entire repository grouped by directory", {
|
|
147
|
-
repo: z.string().describe("Repository identifier"),
|
|
148
|
-
}, async (args) => wrapTool("get_repo_outline", args, () => getRepoOutline(args.repo))());
|
|
149
|
-
// ---------------------------------------------------------------------------
|
|
150
|
-
// 10. get_symbol
|
|
151
|
-
// ---------------------------------------------------------------------------
|
|
152
|
-
server.tool("get_symbol", "Retrieve a single symbol by its unique ID with full source code", {
|
|
153
|
-
repo: z.string().describe("Repository identifier"),
|
|
154
|
-
symbol_id: z.string().describe("Unique symbol identifier"),
|
|
155
|
-
}, async (args) => wrapTool("get_symbol", args, () => getSymbol(args.repo, args.symbol_id))());
|
|
156
|
-
// ---------------------------------------------------------------------------
|
|
157
|
-
// 11. get_symbols
|
|
158
|
-
// ---------------------------------------------------------------------------
|
|
159
|
-
server.tool("get_symbols", "Retrieve multiple symbols by ID in a single batch call", {
|
|
160
|
-
repo: z.string().describe("Repository identifier"),
|
|
161
|
-
symbol_ids: z.array(z.string()).describe("Array of symbol identifiers"),
|
|
162
|
-
}, async (args) => wrapTool("get_symbols", args, () => getSymbols(args.repo, args.symbol_ids))());
|
|
163
|
-
// ---------------------------------------------------------------------------
|
|
164
|
-
// 12. find_and_show
|
|
165
|
-
// ---------------------------------------------------------------------------
|
|
166
|
-
server.tool("find_and_show", "Find a symbol by name and show its source, optionally including references", {
|
|
167
|
-
repo: z.string().describe("Repository identifier"),
|
|
168
|
-
query: z.string().describe("Symbol name or query to search for"),
|
|
169
|
-
include_refs: z.boolean().optional().describe("Include locations that reference this symbol"),
|
|
170
|
-
}, async (args) => wrapTool("find_and_show", args, () => findAndShow(args.repo, args.query, args.include_refs))());
|
|
171
|
-
// ---------------------------------------------------------------------------
|
|
172
|
-
// 13. find_references
|
|
173
|
-
// ---------------------------------------------------------------------------
|
|
174
|
-
server.tool("find_references", "Find all references to a symbol across the codebase", {
|
|
175
|
-
repo: z.string().describe("Repository identifier"),
|
|
176
|
-
symbol_name: z.string().describe("Name of the symbol to find references for"),
|
|
177
|
-
file_pattern: z.string().optional().describe("Glob pattern to filter files"),
|
|
178
|
-
}, async (args) => wrapTool("find_references", args, () => findReferences(args.repo, args.symbol_name, args.file_pattern))());
|
|
179
|
-
// ---------------------------------------------------------------------------
|
|
180
|
-
// 14. trace_call_chain
|
|
181
|
-
// ---------------------------------------------------------------------------
|
|
182
|
-
server.tool("trace_call_chain", "Trace the call chain of a symbol — who calls it (callers) or what it calls (callees). Source code is excluded by default for compact output; set include_source=true to include it.", {
|
|
183
|
-
repo: z.string().describe("Repository identifier"),
|
|
184
|
-
symbol_name: z.string().describe("Name of the symbol to trace"),
|
|
185
|
-
direction: z.enum(["callers", "callees"]).describe("Trace direction"),
|
|
186
|
-
depth: z.number().optional().describe("Maximum depth to traverse the call graph (default: 1)"),
|
|
187
|
-
include_source: z.boolean().optional().describe("Include full source code of each symbol (default: false)"),
|
|
188
|
-
include_tests: z.boolean().optional().describe("Include test files in trace results (default: false)"),
|
|
189
|
-
}, async (args) => wrapTool("trace_call_chain", args, () => traceCallChain(args.repo, args.symbol_name, args.direction, {
|
|
190
|
-
depth: args.depth,
|
|
191
|
-
include_source: args.include_source,
|
|
192
|
-
include_tests: args.include_tests,
|
|
193
|
-
}))());
|
|
194
|
-
// ---------------------------------------------------------------------------
|
|
195
|
-
// 15. impact_analysis
|
|
196
|
-
// ---------------------------------------------------------------------------
|
|
197
|
-
server.tool("impact_analysis", "Analyze the blast radius of recent git changes — which symbols and files are affected. Source code is excluded by default for compact output.", {
|
|
198
|
-
repo: z.string().describe("Repository identifier"),
|
|
199
|
-
since: z.string().describe("Git ref to compare from (e.g. HEAD~3, commit SHA, branch)"),
|
|
200
|
-
depth: z.number().optional().describe("Depth of dependency traversal"),
|
|
201
|
-
until: z.string().optional().describe("Git ref to compare to (defaults to HEAD)"),
|
|
202
|
-
include_source: z.boolean().optional().describe("Include full source code of affected symbols (default: false)"),
|
|
203
|
-
}, async (args) => wrapTool("impact_analysis", args, () => impactAnalysis(args.repo, args.since, {
|
|
204
|
-
depth: args.depth,
|
|
205
|
-
until: args.until,
|
|
206
|
-
include_source: args.include_source,
|
|
207
|
-
}))());
|
|
208
|
-
// ---------------------------------------------------------------------------
|
|
209
|
-
// 16. assemble_context
|
|
210
|
-
// ---------------------------------------------------------------------------
|
|
211
|
-
server.tool("assemble_context", "Assemble a focused code context for a query within a token budget", {
|
|
212
|
-
repo: z.string().describe("Repository identifier"),
|
|
213
|
-
query: z.string().describe("Natural language query describing what context is needed"),
|
|
214
|
-
token_budget: z.number().optional().describe("Maximum tokens for the assembled context"),
|
|
215
|
-
}, async (args) => wrapTool("assemble_context", args, () => assembleContext(args.repo, args.query, args.token_budget))());
|
|
216
|
-
// ---------------------------------------------------------------------------
|
|
217
|
-
// 17. get_knowledge_map
|
|
218
|
-
// ---------------------------------------------------------------------------
|
|
219
|
-
server.tool("get_knowledge_map", "Get the module dependency map showing how files and directories relate", {
|
|
220
|
-
repo: z.string().describe("Repository identifier"),
|
|
221
|
-
focus: z.string().optional().describe("Focus on a specific module or directory"),
|
|
222
|
-
depth: z.number().optional().describe("Maximum depth of the dependency graph"),
|
|
223
|
-
}, async (args) => wrapTool("get_knowledge_map", args, () => getKnowledgeMap(args.repo, args.focus, args.depth))());
|
|
224
|
-
// ---------------------------------------------------------------------------
|
|
225
|
-
// 18. diff_outline
|
|
226
|
-
// ---------------------------------------------------------------------------
|
|
227
|
-
server.tool("diff_outline", "Get a structural outline of what changed between two git refs", {
|
|
228
|
-
repo: z.string().describe("Repository identifier"),
|
|
229
|
-
since: z.string().describe("Git ref to compare from"),
|
|
230
|
-
until: z.string().optional().describe("Git ref to compare to (defaults to HEAD)"),
|
|
231
|
-
}, async (args) => wrapTool("diff_outline", args, () => diffOutline(args.repo, args.since, args.until))());
|
|
232
|
-
// ---------------------------------------------------------------------------
|
|
233
|
-
// 19. changed_symbols
|
|
234
|
-
// ---------------------------------------------------------------------------
|
|
235
|
-
server.tool("changed_symbols", "List symbols that were added, modified, or removed between two git refs", {
|
|
236
|
-
repo: z.string().describe("Repository identifier"),
|
|
237
|
-
since: z.string().describe("Git ref to compare from"),
|
|
238
|
-
until: z.string().optional().describe("Git ref to compare to (defaults to HEAD)"),
|
|
239
|
-
}, async (args) => wrapTool("changed_symbols", args, () => changedSymbols(args.repo, args.since, args.until))());
|
|
240
|
-
// ---------------------------------------------------------------------------
|
|
241
|
-
// 20. generate_claude_md
|
|
242
|
-
// ---------------------------------------------------------------------------
|
|
243
|
-
server.tool("generate_claude_md", "Generate a CLAUDE.md project summary file from the repository index", {
|
|
244
|
-
repo: z.string().describe("Repository identifier"),
|
|
245
|
-
output_path: z.string().optional().describe("Custom output file path"),
|
|
246
|
-
}, async (args) => wrapTool("generate_claude_md", args, () => generateClaudeMd(args.repo, args.output_path))());
|
|
247
|
-
// ---------------------------------------------------------------------------
|
|
248
|
-
// 21. codebase_retrieval
|
|
249
|
-
// ---------------------------------------------------------------------------
|
|
250
|
-
server.tool("codebase_retrieval", "Batch multiple search and retrieval queries into a single call with shared token budget. Semantic and hybrid sub-queries exclude test files by default (set exclude_tests:false to include them).", {
|
|
251
|
-
repo: z.string().describe("Repository identifier"),
|
|
252
|
-
queries: z
|
|
253
|
-
.array(z.object({ type: z.string() }).passthrough())
|
|
254
|
-
.describe("Array of sub-queries (symbols, text, file_tree, outline, references, call_chain, impact, context, knowledge_map)"),
|
|
255
|
-
token_budget: z.number().optional().describe("Maximum total tokens across all sub-query results"),
|
|
256
|
-
}, async (args) => wrapTool("codebase_retrieval", args, () => codebaseRetrieval(args.repo, args.queries, args.token_budget))());
|
|
257
|
-
// ---------------------------------------------------------------------------
|
|
258
|
-
// 22. usage_stats
|
|
259
|
-
// ---------------------------------------------------------------------------
|
|
260
|
-
server.tool("usage_stats", "Show usage statistics for all CodeSift tool calls (call counts, tokens, timing, repos)", {}, async () => {
|
|
261
|
-
try {
|
|
262
|
-
const stats = await getUsageStats();
|
|
263
|
-
const report = formatUsageReport(stats);
|
|
264
|
-
return {
|
|
265
|
-
content: [{ type: "text", text: report }],
|
|
266
|
-
};
|
|
267
|
-
}
|
|
268
|
-
catch (err) {
|
|
269
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
270
|
-
return errorResult(message);
|
|
271
|
-
}
|
|
272
|
-
});
|
|
273
|
-
// ---------------------------------------------------------------------------
|
|
274
|
-
// Main
|
|
275
|
-
// ---------------------------------------------------------------------------
|
|
10
|
+
const server = new McpServer({ name: "codesift-mcp", version: "0.1.0" }, { instructions: CODESIFT_INSTRUCTIONS });
|
|
11
|
+
registerTools(server, { deferNonCore: true });
|
|
276
12
|
async function main() {
|
|
277
13
|
const transport = new StdioServerTransport();
|
|
278
14
|
await server.connect(transport);
|
|
279
15
|
console.error("CodeSift MCP server started");
|
|
16
|
+
// Auto-discover conversations for current project (background, non-blocking)
|
|
17
|
+
autoDiscoverConversations(process.cwd()).catch((err) => {
|
|
18
|
+
console.error("[codesift] conversation auto-discovery failed:", err);
|
|
19
|
+
});
|
|
280
20
|
}
|
|
281
21
|
main().catch((err) => {
|
|
282
22
|
console.error("Fatal error starting CodeSift MCP server:", err);
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,mCAAmC;AACnC,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE3E,UAAU,EAAE,CAAC;AAEb,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,EAC1C,EAAE,YAAY,EAAE,qBAAqB,EAAE,CACxC,CAAC;AAEF,aAAa,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;AAE9C,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAE7C,6EAA6E;IAC7E,yBAAyB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QAC9D,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,GAAG,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IAC5B,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,GAAG,CAAC,CAAC;IAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Write content to a file atomically using a write-rename strategy.
|
|
3
|
+
* 1. Ensures the parent directory exists (mkdir -p).
|
|
4
|
+
* 2. Writes content to a temporary file adjacent to the target.
|
|
5
|
+
* 3. Renames the temp file to the target path (atomic on most filesystems).
|
|
6
|
+
* 4. On error, removes the temp file before re-throwing.
|
|
7
|
+
*/
|
|
8
|
+
export declare function atomicWriteFile(targetPath: string, content: string): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=_shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_shared.d.ts","sourceRoot":"","sources":["../../src/storage/_shared.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAaf"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { writeFile, rename, mkdir, unlink } from "node:fs/promises";
|
|
2
|
+
import { dirname } from "node:path";
|
|
3
|
+
/**
|
|
4
|
+
* Write content to a file atomically using a write-rename strategy.
|
|
5
|
+
* 1. Ensures the parent directory exists (mkdir -p).
|
|
6
|
+
* 2. Writes content to a temporary file adjacent to the target.
|
|
7
|
+
* 3. Renames the temp file to the target path (atomic on most filesystems).
|
|
8
|
+
* 4. On error, removes the temp file before re-throwing.
|
|
9
|
+
*/
|
|
10
|
+
export async function atomicWriteFile(targetPath, content) {
|
|
11
|
+
const dir = dirname(targetPath);
|
|
12
|
+
await mkdir(dir, { recursive: true });
|
|
13
|
+
const tmpPath = `${targetPath}.tmp.${Date.now()}`;
|
|
14
|
+
try {
|
|
15
|
+
await writeFile(tmpPath, content, "utf-8");
|
|
16
|
+
await rename(tmpPath, targetPath);
|
|
17
|
+
}
|
|
18
|
+
catch (err) {
|
|
19
|
+
try {
|
|
20
|
+
await unlink(tmpPath);
|
|
21
|
+
}
|
|
22
|
+
catch { /* cleanup best-effort */ }
|
|
23
|
+
throw err;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=_shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_shared.js","sourceRoot":"","sources":["../../src/storage/_shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,UAAkB,EAClB,OAAe;IAEf,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAChC,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEtC,MAAM,OAAO,GAAG,GAAG,UAAU,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IAElD,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3C,MAAM,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC;YAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;QAClE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk-store.d.ts","sourceRoot":"","sources":["../../src/storage/chunk-store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chunk-store.d.ts","sourceRoot":"","sources":["../../src/storage/chunk-store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAO7C;;;GAGG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE/D;AA4BD;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,SAAS,EAAE,GAClB,OAAO,CAAC,IAAI,CAAC,CAcf;AAiCD;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,CAMxC;AAWD;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC,CAQf;AAQD;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,CAM3C"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { readFile
|
|
2
|
-
import {
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import { atomicWriteFile } from "./_shared.js";
|
|
3
3
|
// ---------------------------------------------------------------------------
|
|
4
4
|
// Path helpers
|
|
5
5
|
// ---------------------------------------------------------------------------
|
|
@@ -33,8 +33,6 @@ function isChunkLine(value) {
|
|
|
33
33
|
* File: ~/.codesift/{hash}.chunks.ndjson
|
|
34
34
|
*/
|
|
35
35
|
export async function saveChunks(chunkPath, chunks) {
|
|
36
|
-
const dir = dirname(chunkPath);
|
|
37
|
-
await mkdir(dir, { recursive: true });
|
|
38
36
|
const lines = chunks.map((c) => JSON.stringify({
|
|
39
37
|
id: c.id,
|
|
40
38
|
file: c.file,
|
|
@@ -43,27 +41,13 @@ export async function saveChunks(chunkPath, chunks) {
|
|
|
43
41
|
text: c.text,
|
|
44
42
|
tokenCount: c.tokenCount,
|
|
45
43
|
}));
|
|
46
|
-
const tmpPath = `${chunkPath}.tmp.${Date.now()}`;
|
|
47
44
|
const data = lines.join("\n") + "\n";
|
|
48
|
-
|
|
49
|
-
await writeFile(tmpPath, data, "utf-8");
|
|
50
|
-
await rename(tmpPath, chunkPath);
|
|
51
|
-
}
|
|
52
|
-
catch (err) {
|
|
53
|
-
try {
|
|
54
|
-
await unlink(tmpPath);
|
|
55
|
-
}
|
|
56
|
-
catch { /* cleanup best-effort */ }
|
|
57
|
-
throw err;
|
|
58
|
-
}
|
|
45
|
+
await atomicWriteFile(chunkPath, data);
|
|
59
46
|
}
|
|
60
|
-
/**
|
|
61
|
-
|
|
62
|
-
* Returns a Map of chunkId → CodeChunk, or null if file not found.
|
|
63
|
-
*/
|
|
64
|
-
export async function loadChunks(chunkPath) {
|
|
47
|
+
/** Generic NDJSON loader — reads file, parses each line, filters with a type guard, maps to value. */
|
|
48
|
+
async function loadNdjsonMap(filePath, guard, toEntry) {
|
|
65
49
|
try {
|
|
66
|
-
const raw = await readFile(
|
|
50
|
+
const raw = await readFile(filePath, "utf-8");
|
|
67
51
|
const map = new Map();
|
|
68
52
|
for (const line of raw.split("\n")) {
|
|
69
53
|
const trimmed = line.trim();
|
|
@@ -71,8 +55,9 @@ export async function loadChunks(chunkPath) {
|
|
|
71
55
|
continue;
|
|
72
56
|
try {
|
|
73
57
|
const parsed = JSON.parse(trimmed);
|
|
74
|
-
if (
|
|
75
|
-
|
|
58
|
+
if (guard(parsed)) {
|
|
59
|
+
const [key, value] = toEntry(parsed);
|
|
60
|
+
map.set(key, value);
|
|
76
61
|
}
|
|
77
62
|
}
|
|
78
63
|
catch {
|
|
@@ -85,60 +70,35 @@ export async function loadChunks(chunkPath) {
|
|
|
85
70
|
return null;
|
|
86
71
|
}
|
|
87
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Load all chunks from an ndjson file.
|
|
75
|
+
* Returns a Map of chunkId → CodeChunk, or null if file not found.
|
|
76
|
+
*/
|
|
77
|
+
export async function loadChunks(chunkPath) {
|
|
78
|
+
return loadNdjsonMap(chunkPath, isChunkLine, (parsed) => [parsed.id, parsed]);
|
|
79
|
+
}
|
|
88
80
|
/**
|
|
89
81
|
* Save all chunk embeddings atomically as ndjson.
|
|
90
82
|
* File: ~/.codesift/{hash}.chunk-embeddings.ndjson
|
|
91
83
|
*/
|
|
92
84
|
export async function saveChunkEmbeddings(embeddingPath, embeddings) {
|
|
93
|
-
const dir = dirname(embeddingPath);
|
|
94
|
-
await mkdir(dir, { recursive: true });
|
|
95
85
|
const lines = [];
|
|
96
86
|
for (const [id, vec] of embeddings) {
|
|
97
87
|
lines.push(JSON.stringify({ id, vec: Array.from(vec) }));
|
|
98
88
|
}
|
|
99
|
-
const tmpPath = `${embeddingPath}.tmp.${Date.now()}`;
|
|
100
89
|
const data = lines.join("\n") + "\n";
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
await unlink(tmpPath);
|
|
108
|
-
}
|
|
109
|
-
catch { /* cleanup best-effort */ }
|
|
110
|
-
throw err;
|
|
111
|
-
}
|
|
90
|
+
await atomicWriteFile(embeddingPath, data);
|
|
91
|
+
}
|
|
92
|
+
function isChunkEmbeddingLine(parsed) {
|
|
93
|
+
return typeof parsed === "object" && parsed !== null &&
|
|
94
|
+
typeof parsed["id"] === "string" &&
|
|
95
|
+
Array.isArray(parsed["vec"]);
|
|
112
96
|
}
|
|
113
97
|
/**
|
|
114
98
|
* Load all chunk embeddings from an ndjson file.
|
|
115
99
|
* Returns a Map of chunkId → Float32Array, or null if file not found / empty.
|
|
116
100
|
*/
|
|
117
101
|
export async function loadChunkEmbeddings(embeddingPath) {
|
|
118
|
-
|
|
119
|
-
const raw = await readFile(embeddingPath, "utf-8");
|
|
120
|
-
const map = new Map();
|
|
121
|
-
for (const line of raw.split("\n")) {
|
|
122
|
-
const trimmed = line.trim();
|
|
123
|
-
if (!trimmed)
|
|
124
|
-
continue;
|
|
125
|
-
try {
|
|
126
|
-
const parsed = JSON.parse(trimmed);
|
|
127
|
-
if (typeof parsed === "object" && parsed !== null &&
|
|
128
|
-
typeof parsed["id"] === "string" &&
|
|
129
|
-
Array.isArray(parsed["vec"])) {
|
|
130
|
-
const entry = parsed;
|
|
131
|
-
map.set(entry.id, new Float32Array(entry.vec));
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
catch {
|
|
135
|
-
// Skip malformed lines
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
return map.size > 0 ? map : null;
|
|
139
|
-
}
|
|
140
|
-
catch {
|
|
141
|
-
return null;
|
|
142
|
-
}
|
|
102
|
+
return loadNdjsonMap(embeddingPath, isChunkEmbeddingLine, (parsed) => [parsed.id, new Float32Array(parsed.vec)]);
|
|
143
103
|
}
|
|
144
104
|
//# sourceMappingURL=chunk-store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunk-store.js","sourceRoot":"","sources":["../../src/storage/chunk-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"chunk-store.js","sourceRoot":"","sources":["../../src/storage/chunk-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,8 @@ export declare function getEmbeddingMetaPath(indexPath: string): string;
|
|
|
15
15
|
*/
|
|
16
16
|
export declare function loadEmbeddings(embeddingPath: string): Promise<Map<string, Float32Array>>;
|
|
17
17
|
/**
|
|
18
|
-
* Save all embeddings
|
|
18
|
+
* Save all embeddings to an ndjson file using streaming writes.
|
|
19
|
+
* Avoids building a single huge string (30K+ symbols × 1536 floats = >300MB).
|
|
19
20
|
*/
|
|
20
21
|
export declare function saveEmbeddings(embeddingPath: string, embeddings: Map<string, Float32Array>): Promise<void>;
|
|
21
22
|
/**
|
|
@@ -29,13 +30,15 @@ export declare function saveEmbeddingMeta(metaPath: string, meta: EmbeddingMeta)
|
|
|
29
30
|
export declare function loadEmbeddingMeta(metaPath: string): Promise<EmbeddingMeta | null>;
|
|
30
31
|
/**
|
|
31
32
|
* Batch-embed symbols using the given provider, appending to existing embeddings.
|
|
32
|
-
*
|
|
33
|
+
* Skips symbols whose ID exists AND content hash hasn't changed.
|
|
34
|
+
* Re-embeds symbols whose content changed even if ID is the same.
|
|
33
35
|
*
|
|
34
36
|
* @param symbolTexts - Map of symbolId → text to embed
|
|
35
37
|
* @param existing - Existing embeddings to skip
|
|
36
38
|
* @param embedFn - The provider's embed function
|
|
37
39
|
* @param batchSize - How many texts per API call
|
|
40
|
+
* @param cacheKey - Optional key to track content hashes across calls
|
|
38
41
|
* @returns Map of symbolId → Float32Array (existing + new)
|
|
39
42
|
*/
|
|
40
|
-
export declare function batchEmbed(symbolTexts: Map<string, string>, existing: Map<string, Float32Array>, embedFn: (texts: string[]) => Promise<number[][]>, batchSize: number): Promise<Map<string, Float32Array>>;
|
|
43
|
+
export declare function batchEmbed(symbolTexts: Map<string, string>, existing: Map<string, Float32Array>, embedFn: (texts: string[]) => Promise<number[][]>, batchSize: number, cacheKey?: string): Promise<Map<string, Float32Array>>;
|
|
41
44
|
//# sourceMappingURL=embedding-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedding-store.d.ts","sourceRoot":"","sources":["../../src/storage/embedding-store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"embedding-store.d.ts","sourceRoot":"","sources":["../../src/storage/embedding-store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE9D;AAOD;;;GAGG;AACH,wBAAsB,cAAc,CAClC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CA0BpC;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC,CA8Bf;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,IAAI,CAAC,CAGf;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAgB/B;AAeD;;;;;;;;;;;GAWG;AACH,wBAAsB,UAAU,CAC9B,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACnC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EACjD,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CA2CpC"}
|