sdl-mcp 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +132 -0
- package/config/benchmark.ci.config.json +86 -0
- package/config/benchmark.ci.windows.config.json +86 -0
- package/config/benchmark.config.example.json +86 -0
- package/config/benchmark.config.json +86 -0
- package/config/sdlmcp.config.example.json +139 -0
- package/config/sdlmcp.config.json +48 -0
- package/config/sdlmcp.config.schema.json +381 -0
- package/dist/agent/evidence.d.ts +18 -0
- package/dist/agent/evidence.d.ts.map +1 -0
- package/dist/agent/evidence.js +107 -0
- package/dist/agent/evidence.js.map +1 -0
- package/dist/agent/executor.d.ts +28 -0
- package/dist/agent/executor.d.ts.map +1 -0
- package/dist/agent/executor.js +261 -0
- package/dist/agent/executor.js.map +1 -0
- package/dist/agent/index.d.ts +6 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +6 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/orchestrator.d.ts +14 -0
- package/dist/agent/orchestrator.d.ts.map +1 -0
- package/dist/agent/orchestrator.js +108 -0
- package/dist/agent/orchestrator.js.map +1 -0
- package/dist/agent/planner.d.ts +21 -0
- package/dist/agent/planner.d.ts.map +1 -0
- package/dist/agent/planner.js +153 -0
- package/dist/agent/planner.js.map +1 -0
- package/dist/agent/types.d.ts +86 -0
- package/dist/agent/types.d.ts.map +1 -0
- package/dist/agent/types.js +2 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/benchmark/index.d.ts +4 -0
- package/dist/benchmark/index.d.ts.map +1 -0
- package/dist/benchmark/index.js +4 -0
- package/dist/benchmark/index.js.map +1 -0
- package/dist/benchmark/regression.d.ts +40 -0
- package/dist/benchmark/regression.d.ts.map +1 -0
- package/dist/benchmark/regression.js +199 -0
- package/dist/benchmark/regression.js.map +1 -0
- package/dist/benchmark/smoothing.d.ts +40 -0
- package/dist/benchmark/smoothing.d.ts.map +1 -0
- package/dist/benchmark/smoothing.js +121 -0
- package/dist/benchmark/smoothing.js.map +1 -0
- package/dist/benchmark/threshold.d.ts +64 -0
- package/dist/benchmark/threshold.d.ts.map +1 -0
- package/dist/benchmark/threshold.js +173 -0
- package/dist/benchmark/threshold.js.map +1 -0
- package/dist/cli/argParsing.d.ts +34 -0
- package/dist/cli/argParsing.d.ts.map +1 -0
- package/dist/cli/argParsing.js +329 -0
- package/dist/cli/argParsing.js.map +1 -0
- package/dist/cli/commands/benchmark.d.ts +16 -0
- package/dist/cli/commands/benchmark.d.ts.map +1 -0
- package/dist/cli/commands/benchmark.js +412 -0
- package/dist/cli/commands/benchmark.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +3 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +218 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/export.d.ts +12 -0
- package/dist/cli/commands/export.d.ts.map +1 -0
- package/dist/cli/commands/export.js +70 -0
- package/dist/cli/commands/export.js.map +1 -0
- package/dist/cli/commands/import.d.ts +10 -0
- package/dist/cli/commands/import.d.ts.map +1 -0
- package/dist/cli/commands/import.js +40 -0
- package/dist/cli/commands/import.js.map +1 -0
- package/dist/cli/commands/index.d.ts +3 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/index.js +89 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/init.d.ts +3 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +221 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/pull.d.ts +11 -0
- package/dist/cli/commands/pull.d.ts.map +1 -0
- package/dist/cli/commands/pull.js +47 -0
- package/dist/cli/commands/pull.js.map +1 -0
- package/dist/cli/commands/serve.d.ts +3 -0
- package/dist/cli/commands/serve.d.ts.map +1 -0
- package/dist/cli/commands/serve.js +72 -0
- package/dist/cli/commands/serve.js.map +1 -0
- package/dist/cli/commands/version.d.ts +3 -0
- package/dist/cli/commands/version.d.ts.map +1 -0
- package/dist/cli/commands/version.js +24 -0
- package/dist/cli/commands/version.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +213 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/logging.d.ts +10 -0
- package/dist/cli/logging.d.ts.map +1 -0
- package/dist/cli/logging.js +48 -0
- package/dist/cli/logging.js.map +1 -0
- package/dist/cli/transport/http.d.ts +3 -0
- package/dist/cli/transport/http.d.ts.map +1 -0
- package/dist/cli/transport/http.js +106 -0
- package/dist/cli/transport/http.js.map +1 -0
- package/dist/cli/transport/stdio.d.ts +3 -0
- package/dist/cli/transport/stdio.d.ts.map +1 -0
- package/dist/cli/transport/stdio.js +6 -0
- package/dist/cli/transport/stdio.js.map +1 -0
- package/dist/cli/types.d.ts +41 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +2 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/code/gate.d.ts +11 -0
- package/dist/code/gate.d.ts.map +1 -0
- package/dist/code/gate.js +134 -0
- package/dist/code/gate.js.map +1 -0
- package/dist/code/hotpath.d.ts +17 -0
- package/dist/code/hotpath.d.ts.map +1 -0
- package/dist/code/hotpath.js +200 -0
- package/dist/code/hotpath.js.map +1 -0
- package/dist/code/redact.d.ts +19 -0
- package/dist/code/redact.d.ts.map +1 -0
- package/dist/code/redact.js +92 -0
- package/dist/code/redact.js.map +1 -0
- package/dist/code/skeleton.d.ts +32 -0
- package/dist/code/skeleton.d.ts.map +1 -0
- package/dist/code/skeleton.js +610 -0
- package/dist/code/skeleton.js.map +1 -0
- package/dist/code/windows.d.ts +18 -0
- package/dist/code/windows.d.ts.map +1 -0
- package/dist/code/windows.js +236 -0
- package/dist/code/windows.js.map +1 -0
- package/dist/config/constants.d.ts +340 -0
- package/dist/config/constants.d.ts.map +1 -0
- package/dist/config/constants.js +379 -0
- package/dist/config/constants.js.map +1 -0
- package/dist/config/loadConfig.d.ts +3 -0
- package/dist/config/loadConfig.d.ts.map +1 -0
- package/dist/config/loadConfig.js +71 -0
- package/dist/config/loadConfig.js.map +1 -0
- package/dist/config/types.d.ts +509 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +139 -0
- package/dist/config/types.js.map +1 -0
- package/dist/db/db.d.ts +4 -0
- package/dist/db/db.d.ts.map +1 -0
- package/dist/db/db.js +47 -0
- package/dist/db/db.js.map +1 -0
- package/dist/db/migrations.d.ts +15 -0
- package/dist/db/migrations.d.ts.map +1 -0
- package/dist/db/migrations.js +81 -0
- package/dist/db/migrations.js.map +1 -0
- package/dist/db/queries.d.ts +440 -0
- package/dist/db/queries.d.ts.map +1 -0
- package/dist/db/queries.js +1054 -0
- package/dist/db/queries.js.map +1 -0
- package/dist/db/schema.d.ts +132 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +2 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/delta/blastRadius.d.ts +24 -0
- package/dist/delta/blastRadius.d.ts.map +1 -0
- package/dist/delta/blastRadius.js +239 -0
- package/dist/delta/blastRadius.js.map +1 -0
- package/dist/delta/diff.d.ts +16 -0
- package/dist/delta/diff.d.ts.map +1 -0
- package/dist/delta/diff.js +236 -0
- package/dist/delta/diff.js.map +1 -0
- package/dist/delta/versioning.d.ts +11 -0
- package/dist/delta/versioning.d.ts.map +1 -0
- package/dist/delta/versioning.js +68 -0
- package/dist/delta/versioning.js.map +1 -0
- package/dist/graph/buildGraph.d.ts +12 -0
- package/dist/graph/buildGraph.d.ts.map +1 -0
- package/dist/graph/buildGraph.js +81 -0
- package/dist/graph/buildGraph.js.map +1 -0
- package/dist/graph/cache.d.ts +111 -0
- package/dist/graph/cache.d.ts.map +1 -0
- package/dist/graph/cache.js +237 -0
- package/dist/graph/cache.js.map +1 -0
- package/dist/graph/metrics.d.ts +12 -0
- package/dist/graph/metrics.d.ts.map +1 -0
- package/dist/graph/metrics.js +253 -0
- package/dist/graph/metrics.js.map +1 -0
- package/dist/graph/minHeap.d.ts +91 -0
- package/dist/graph/minHeap.d.ts.map +1 -0
- package/dist/graph/minHeap.js +159 -0
- package/dist/graph/minHeap.js.map +1 -0
- package/dist/graph/overview.d.ts +22 -0
- package/dist/graph/overview.d.ts.map +1 -0
- package/dist/graph/overview.js +379 -0
- package/dist/graph/overview.js.map +1 -0
- package/dist/graph/score.d.ts +27 -0
- package/dist/graph/score.d.ts.map +1 -0
- package/dist/graph/score.js +214 -0
- package/dist/graph/score.js.map +1 -0
- package/dist/graph/slice.d.ts +51 -0
- package/dist/graph/slice.d.ts.map +1 -0
- package/dist/graph/slice.js +1047 -0
- package/dist/graph/slice.js.map +1 -0
- package/dist/graph/sliceCache.d.ts +33 -0
- package/dist/graph/sliceCache.d.ts.map +1 -0
- package/dist/graph/sliceCache.js +140 -0
- package/dist/graph/sliceCache.js.map +1 -0
- package/dist/indexer/adapter/BaseAdapter.d.ts +29 -0
- package/dist/indexer/adapter/BaseAdapter.d.ts.map +1 -0
- package/dist/indexer/adapter/BaseAdapter.js +97 -0
- package/dist/indexer/adapter/BaseAdapter.js.map +1 -0
- package/dist/indexer/adapter/LanguageAdapter.d.ts +20 -0
- package/dist/indexer/adapter/LanguageAdapter.d.ts.map +1 -0
- package/dist/indexer/adapter/LanguageAdapter.js +2 -0
- package/dist/indexer/adapter/LanguageAdapter.js.map +1 -0
- package/dist/indexer/adapter/adapters.d.ts +57 -0
- package/dist/indexer/adapter/adapters.d.ts.map +1 -0
- package/dist/indexer/adapter/adapters.js +129 -0
- package/dist/indexer/adapter/adapters.js.map +1 -0
- package/dist/indexer/adapter/c.d.ts +18 -0
- package/dist/indexer/adapter/c.d.ts.map +1 -0
- package/dist/indexer/adapter/c.js +443 -0
- package/dist/indexer/adapter/c.js.map +1 -0
- package/dist/indexer/adapter/cpp.d.ts +18 -0
- package/dist/indexer/adapter/cpp.d.ts.map +1 -0
- package/dist/indexer/adapter/cpp.js +493 -0
- package/dist/indexer/adapter/cpp.js.map +1 -0
- package/dist/indexer/adapter/csharp.d.ts +48 -0
- package/dist/indexer/adapter/csharp.d.ts.map +1 -0
- package/dist/indexer/adapter/csharp.js +638 -0
- package/dist/indexer/adapter/csharp.js.map +1 -0
- package/dist/indexer/adapter/go.d.ts +14 -0
- package/dist/indexer/adapter/go.d.ts.map +1 -0
- package/dist/indexer/adapter/go.js +400 -0
- package/dist/indexer/adapter/go.js.map +1 -0
- package/dist/indexer/adapter/index.d.ts +14 -0
- package/dist/indexer/adapter/index.d.ts.map +1 -0
- package/dist/indexer/adapter/index.js +13 -0
- package/dist/indexer/adapter/index.js.map +1 -0
- package/dist/indexer/adapter/java.d.ts +14 -0
- package/dist/indexer/adapter/java.d.ts.map +1 -0
- package/dist/indexer/adapter/java.js +391 -0
- package/dist/indexer/adapter/java.js.map +1 -0
- package/dist/indexer/adapter/kotlin.d.ts +18 -0
- package/dist/indexer/adapter/kotlin.d.ts.map +1 -0
- package/dist/indexer/adapter/kotlin.js +599 -0
- package/dist/indexer/adapter/kotlin.js.map +1 -0
- package/dist/indexer/adapter/php.d.ts +18 -0
- package/dist/indexer/adapter/php.d.ts.map +1 -0
- package/dist/indexer/adapter/php.js +574 -0
- package/dist/indexer/adapter/php.js.map +1 -0
- package/dist/indexer/adapter/plugin/index.d.ts +3 -0
- package/dist/indexer/adapter/plugin/index.d.ts.map +1 -0
- package/dist/indexer/adapter/plugin/index.js +3 -0
- package/dist/indexer/adapter/plugin/index.js.map +1 -0
- package/dist/indexer/adapter/plugin/loader.d.ts +13 -0
- package/dist/indexer/adapter/plugin/loader.d.ts.map +1 -0
- package/dist/indexer/adapter/plugin/loader.js +154 -0
- package/dist/indexer/adapter/plugin/loader.js.map +1 -0
- package/dist/indexer/adapter/plugin/types.d.ts +76 -0
- package/dist/indexer/adapter/plugin/types.d.ts.map +1 -0
- package/dist/indexer/adapter/plugin/types.js +47 -0
- package/dist/indexer/adapter/plugin/types.js.map +1 -0
- package/dist/indexer/adapter/python.d.ts +14 -0
- package/dist/indexer/adapter/python.d.ts.map +1 -0
- package/dist/indexer/adapter/python.js +511 -0
- package/dist/indexer/adapter/python.js.map +1 -0
- package/dist/indexer/adapter/registry.d.ts +17 -0
- package/dist/indexer/adapter/registry.d.ts.map +1 -0
- package/dist/indexer/adapter/registry.js +134 -0
- package/dist/indexer/adapter/registry.js.map +1 -0
- package/dist/indexer/adapter/rust.d.ts +18 -0
- package/dist/indexer/adapter/rust.d.ts.map +1 -0
- package/dist/indexer/adapter/rust.js +709 -0
- package/dist/indexer/adapter/rust.js.map +1 -0
- package/dist/indexer/adapter/shell.d.ts +18 -0
- package/dist/indexer/adapter/shell.d.ts.map +1 -0
- package/dist/indexer/adapter/shell.js +345 -0
- package/dist/indexer/adapter/shell.js.map +1 -0
- package/dist/indexer/adapter/typescript.d.ts +14 -0
- package/dist/indexer/adapter/typescript.d.ts.map +1 -0
- package/dist/indexer/adapter/typescript.js +31 -0
- package/dist/indexer/adapter/typescript.js.map +1 -0
- package/dist/indexer/configEdges.d.ts +30 -0
- package/dist/indexer/configEdges.d.ts.map +1 -0
- package/dist/indexer/configEdges.js +260 -0
- package/dist/indexer/configEdges.js.map +1 -0
- package/dist/indexer/fileScanner.d.ts +16 -0
- package/dist/indexer/fileScanner.d.ts.map +1 -0
- package/dist/indexer/fileScanner.js +90 -0
- package/dist/indexer/fileScanner.js.map +1 -0
- package/dist/indexer/fingerprints.d.ts +23 -0
- package/dist/indexer/fingerprints.d.ts.map +1 -0
- package/dist/indexer/fingerprints.js +97 -0
- package/dist/indexer/fingerprints.js.map +1 -0
- package/dist/indexer/indexer.d.ts +58 -0
- package/dist/indexer/indexer.d.ts.map +1 -0
- package/dist/indexer/indexer.js +1229 -0
- package/dist/indexer/indexer.js.map +1 -0
- package/dist/indexer/summaries.d.ts +5 -0
- package/dist/indexer/summaries.d.ts.map +1 -0
- package/dist/indexer/summaries.js +331 -0
- package/dist/indexer/summaries.js.map +1 -0
- package/dist/indexer/treesitter/extractCalls.d.ts +40 -0
- package/dist/indexer/treesitter/extractCalls.d.ts.map +1 -0
- package/dist/indexer/treesitter/extractCalls.js +561 -0
- package/dist/indexer/treesitter/extractCalls.js.map +1 -0
- package/dist/indexer/treesitter/extractImports.d.ts +12 -0
- package/dist/indexer/treesitter/extractImports.d.ts.map +1 -0
- package/dist/indexer/treesitter/extractImports.js +184 -0
- package/dist/indexer/treesitter/extractImports.js.map +1 -0
- package/dist/indexer/treesitter/extractSymbols.d.ts +24 -0
- package/dist/indexer/treesitter/extractSymbols.d.ts.map +1 -0
- package/dist/indexer/treesitter/extractSymbols.js +389 -0
- package/dist/indexer/treesitter/extractSymbols.js.map +1 -0
- package/dist/indexer/treesitter/grammarLoader.d.ts +6 -0
- package/dist/indexer/treesitter/grammarLoader.d.ts.map +1 -0
- package/dist/indexer/treesitter/grammarLoader.js +125 -0
- package/dist/indexer/treesitter/grammarLoader.js.map +1 -0
- package/dist/indexer/treesitter/symbolUtils.d.ts +4 -0
- package/dist/indexer/treesitter/symbolUtils.d.ts.map +1 -0
- package/dist/indexer/treesitter/symbolUtils.js +26 -0
- package/dist/indexer/treesitter/symbolUtils.js.map +1 -0
- package/dist/indexer/treesitter/tsTreesitter.d.ts +9 -0
- package/dist/indexer/treesitter/tsTreesitter.d.ts.map +1 -0
- package/dist/indexer/treesitter/tsTreesitter.js +54 -0
- package/dist/indexer/treesitter/tsTreesitter.js.map +1 -0
- package/dist/indexer/treesitter/types.d.ts +19 -0
- package/dist/indexer/treesitter/types.d.ts.map +1 -0
- package/dist/indexer/treesitter/types.js +7 -0
- package/dist/indexer/treesitter/types.js.map +1 -0
- package/dist/indexer/ts/tsParser.d.ts +20 -0
- package/dist/indexer/ts/tsParser.d.ts.map +1 -0
- package/dist/indexer/ts/tsParser.js +114 -0
- package/dist/indexer/ts/tsParser.js.map +1 -0
- package/dist/indexer/worker.d.ts +2 -0
- package/dist/indexer/worker.d.ts.map +1 -0
- package/dist/indexer/worker.js +59 -0
- package/dist/indexer/worker.js.map +1 -0
- package/dist/indexer/workerPool.d.ts +20 -0
- package/dist/indexer/workerPool.d.ts.map +1 -0
- package/dist/indexer/workerPool.js +93 -0
- package/dist/indexer/workerPool.js.map +1 -0
- package/dist/main.d.ts +2 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +111 -0
- package/dist/main.js.map +1 -0
- package/dist/mcp/errors.d.ts +40 -0
- package/dist/mcp/errors.d.ts.map +1 -0
- package/dist/mcp/errors.js +66 -0
- package/dist/mcp/errors.js.map +1 -0
- package/dist/mcp/resources.d.ts +24 -0
- package/dist/mcp/resources.d.ts.map +1 -0
- package/dist/mcp/resources.js +140 -0
- package/dist/mcp/resources.js.map +1 -0
- package/dist/mcp/telemetry.d.ts +67 -0
- package/dist/mcp/telemetry.d.ts.map +1 -0
- package/dist/mcp/telemetry.js +128 -0
- package/dist/mcp/telemetry.js.map +1 -0
- package/dist/mcp/tools/agent.d.ts +241 -0
- package/dist/mcp/tools/agent.d.ts.map +1 -0
- package/dist/mcp/tools/agent.js +113 -0
- package/dist/mcp/tools/agent.js.map +1 -0
- package/dist/mcp/tools/code.d.ts +32 -0
- package/dist/mcp/tools/code.d.ts.map +1 -0
- package/dist/mcp/tools/code.js +388 -0
- package/dist/mcp/tools/code.js.map +1 -0
- package/dist/mcp/tools/delta.d.ts +12 -0
- package/dist/mcp/tools/delta.d.ts.map +1 -0
- package/dist/mcp/tools/delta.js +82 -0
- package/dist/mcp/tools/delta.js.map +1 -0
- package/dist/mcp/tools/index.d.ts +3 -0
- package/dist/mcp/tools/index.d.ts.map +1 -0
- package/dist/mcp/tools/index.js +35 -0
- package/dist/mcp/tools/index.js.map +1 -0
- package/dist/mcp/tools/policy.d.ts +20 -0
- package/dist/mcp/tools/policy.d.ts.map +1 -0
- package/dist/mcp/tools/policy.js +67 -0
- package/dist/mcp/tools/policy.js.map +1 -0
- package/dist/mcp/tools/prRisk.d.ts +34 -0
- package/dist/mcp/tools/prRisk.d.ts.map +1 -0
- package/dist/mcp/tools/prRisk.js +304 -0
- package/dist/mcp/tools/prRisk.js.map +1 -0
- package/dist/mcp/tools/repo.d.ts +46 -0
- package/dist/mcp/tools/repo.d.ts.map +1 -0
- package/dist/mcp/tools/repo.js +224 -0
- package/dist/mcp/tools/repo.js.map +1 -0
- package/dist/mcp/tools/slice.d.ts +44 -0
- package/dist/mcp/tools/slice.d.ts.map +1 -0
- package/dist/mcp/tools/slice.js +688 -0
- package/dist/mcp/tools/slice.js.map +1 -0
- package/dist/mcp/tools/symbol.d.ts +21 -0
- package/dist/mcp/tools/symbol.d.ts.map +1 -0
- package/dist/mcp/tools/symbol.js +416 -0
- package/dist/mcp/tools/symbol.js.map +1 -0
- package/dist/mcp/tools.d.ts +6003 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +932 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/mcp/types.d.ts +500 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +2 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/policy/engine.d.ts +21 -0
- package/dist/policy/engine.d.ts.map +1 -0
- package/dist/policy/engine.js +477 -0
- package/dist/policy/engine.js.map +1 -0
- package/dist/policy/types.d.ts +73 -0
- package/dist/policy/types.d.ts.map +1 -0
- package/dist/policy/types.js +12 -0
- package/dist/policy/types.js.map +1 -0
- package/dist/server.d.ts +17 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +136 -0
- package/dist/server.js.map +1 -0
- package/dist/sync/pull.d.ts +4 -0
- package/dist/sync/pull.d.ts.map +1 -0
- package/dist/sync/pull.js +113 -0
- package/dist/sync/pull.js.map +1 -0
- package/dist/sync/sync.d.ts +6 -0
- package/dist/sync/sync.d.ts.map +1 -0
- package/dist/sync/sync.js +244 -0
- package/dist/sync/sync.js.map +1 -0
- package/dist/sync/types.d.ts +136 -0
- package/dist/sync/types.d.ts.map +1 -0
- package/dist/sync/types.js +2 -0
- package/dist/sync/types.js.map +1 -0
- package/dist/ts/diagnostics.d.ts +61 -0
- package/dist/ts/diagnostics.d.ts.map +1 -0
- package/dist/ts/diagnostics.js +259 -0
- package/dist/ts/diagnostics.js.map +1 -0
- package/dist/ts/mapping.d.ts +27 -0
- package/dist/ts/mapping.d.ts.map +1 -0
- package/dist/ts/mapping.js +68 -0
- package/dist/ts/mapping.js.map +1 -0
- package/dist/util/asyncFs.d.ts +103 -0
- package/dist/util/asyncFs.d.ts.map +1 -0
- package/dist/util/asyncFs.js +133 -0
- package/dist/util/asyncFs.js.map +1 -0
- package/dist/util/concurrency.d.ts +77 -0
- package/dist/util/concurrency.d.ts.map +1 -0
- package/dist/util/concurrency.js +146 -0
- package/dist/util/concurrency.js.map +1 -0
- package/dist/util/depLabels.d.ts +3 -0
- package/dist/util/depLabels.d.ts.map +1 -0
- package/dist/util/depLabels.js +19 -0
- package/dist/util/depLabels.js.map +1 -0
- package/dist/util/findPackageRoot.d.ts +7 -0
- package/dist/util/findPackageRoot.d.ts.map +1 -0
- package/dist/util/findPackageRoot.js +21 -0
- package/dist/util/findPackageRoot.js.map +1 -0
- package/dist/util/hashing.d.ts +9 -0
- package/dist/util/hashing.d.ts.map +1 -0
- package/dist/util/hashing.js +37 -0
- package/dist/util/hashing.js.map +1 -0
- package/dist/util/logger.d.ts +14 -0
- package/dist/util/logger.d.ts.map +1 -0
- package/dist/util/logger.js +51 -0
- package/dist/util/logger.js.map +1 -0
- package/dist/util/paths.d.ts +6 -0
- package/dist/util/paths.d.ts.map +1 -0
- package/dist/util/paths.js +79 -0
- package/dist/util/paths.js.map +1 -0
- package/dist/util/time.d.ts +4 -0
- package/dist/util/time.d.ts.map +1 -0
- package/dist/util/time.js +20 -0
- package/dist/util/time.js.map +1 -0
- package/dist/util/tokenize.d.ts +5 -0
- package/dist/util/tokenize.d.ts.map +1 -0
- package/dist/util/tokenize.js +30 -0
- package/dist/util/tokenize.js.map +1 -0
- package/dist/util/truncation.d.ts +38 -0
- package/dist/util/truncation.d.ts.map +1 -0
- package/dist/util/truncation.js +259 -0
- package/dist/util/truncation.js.map +1 -0
- package/migrations/.gitkeep +1 -0
- package/migrations/0001_init.sql +61 -0
- package/migrations/0002_edges_indexes.sql +2 -0
- package/migrations/0003_versions.sql +22 -0
- package/migrations/0004_metrics_audit.sql +23 -0
- package/migrations/0005_slice_handles.sql +15 -0
- package/migrations/0006_content_addressed.sql +29 -0
- package/migrations/0007_add_language_to_symbols.sql +28 -0
- package/migrations/0008_performance_indexes.sql +21 -0
- package/migrations/0009_fix_edge_fks.sql +37 -0
- package/migrations/0010_standardize_fks.sql +35 -0
- package/migrations/0011_add_directory_column.sql +20 -0
- package/migrations/0012_symbol_references.sql +16 -0
- package/migrations/0013_sync_artifacts.sql +17 -0
- package/package.json +107 -0
- package/templates/CLAUDE.md.template +179 -0
- package/templates/README.md +228 -0
- package/templates/claude-code.json +54 -0
- package/templates/codex.json +55 -0
- package/templates/gemini.json +66 -0
- package/templates/opencode.json +90 -0
- package/templates/plugin-template/LICENSE +21 -0
- package/templates/plugin-template/README.md +309 -0
- package/templates/plugin-template/index.ts +160 -0
- package/templates/plugin-template/package.json +31 -0
- package/templates/plugin-template/test/plugin.test.ts +186 -0
- package/templates/plugin-template/tsconfig.json +21 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
CREATE TABLE IF NOT EXISTS metrics (
|
|
2
|
+
symbol_id TEXT PRIMARY KEY,
|
|
3
|
+
fan_in INTEGER NOT NULL DEFAULT 0,
|
|
4
|
+
fan_out INTEGER NOT NULL DEFAULT 0,
|
|
5
|
+
churn_30d INTEGER NOT NULL DEFAULT 0,
|
|
6
|
+
test_refs_json TEXT,
|
|
7
|
+
updated_at TEXT NOT NULL,
|
|
8
|
+
FOREIGN KEY(symbol_id) REFERENCES symbols(symbol_id) ON DELETE CASCADE
|
|
9
|
+
);
|
|
10
|
+
|
|
11
|
+
CREATE TABLE IF NOT EXISTS audit (
|
|
12
|
+
event_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
13
|
+
timestamp TEXT NOT NULL,
|
|
14
|
+
tool TEXT NOT NULL,
|
|
15
|
+
decision TEXT NOT NULL,
|
|
16
|
+
repo_id TEXT,
|
|
17
|
+
symbol_id TEXT,
|
|
18
|
+
details_json TEXT NOT NULL
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
CREATE INDEX IF NOT EXISTS idx_audit_tool ON audit(tool);
|
|
22
|
+
CREATE INDEX IF NOT EXISTS idx_audit_timestamp ON audit(timestamp);
|
|
23
|
+
CREATE INDEX IF NOT EXISTS idx_audit_repo ON audit(repo_id);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
CREATE TABLE IF NOT EXISTS slice_handles (
|
|
2
|
+
handle TEXT PRIMARY KEY,
|
|
3
|
+
repo_id TEXT NOT NULL,
|
|
4
|
+
created_at TEXT NOT NULL,
|
|
5
|
+
expires_at TEXT NOT NULL,
|
|
6
|
+
min_version TEXT,
|
|
7
|
+
max_version TEXT,
|
|
8
|
+
slice_hash TEXT NOT NULL,
|
|
9
|
+
spillover_ref TEXT,
|
|
10
|
+
FOREIGN KEY(repo_id) REFERENCES repos(repo_id) ON DELETE CASCADE
|
|
11
|
+
);
|
|
12
|
+
|
|
13
|
+
CREATE INDEX IF NOT EXISTS idx_slice_handles_repo ON slice_handles(repo_id);
|
|
14
|
+
CREATE INDEX IF NOT EXISTS idx_slice_handles_expires ON slice_handles(expires_at);
|
|
15
|
+
CREATE INDEX IF NOT EXISTS idx_slice_handles_repo_version ON slice_handles(repo_id, max_version);
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
CREATE TABLE IF NOT EXISTS card_hashes (
|
|
2
|
+
card_hash TEXT PRIMARY KEY,
|
|
3
|
+
card_blob TEXT NOT NULL,
|
|
4
|
+
created_at TEXT NOT NULL
|
|
5
|
+
);
|
|
6
|
+
|
|
7
|
+
CREATE TABLE IF NOT EXISTS tool_policy_hashes (
|
|
8
|
+
policy_hash TEXT PRIMARY KEY,
|
|
9
|
+
policy_blob TEXT NOT NULL,
|
|
10
|
+
created_at TEXT NOT NULL
|
|
11
|
+
);
|
|
12
|
+
|
|
13
|
+
CREATE TABLE IF NOT EXISTS tsconfig_hashes (
|
|
14
|
+
tsconfig_hash TEXT PRIMARY KEY,
|
|
15
|
+
tsconfig_blob TEXT NOT NULL,
|
|
16
|
+
created_at TEXT NOT NULL
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
ALTER TABLE versions ADD COLUMN prev_version_hash TEXT;
|
|
20
|
+
ALTER TABLE versions ADD COLUMN version_hash TEXT;
|
|
21
|
+
|
|
22
|
+
UPDATE versions SET prev_version_hash = NULL WHERE prev_version_hash IS NULL;
|
|
23
|
+
UPDATE versions SET version_hash = NULL WHERE version_hash IS NULL;
|
|
24
|
+
|
|
25
|
+
CREATE INDEX IF NOT EXISTS idx_card_hashes_created ON card_hashes(created_at);
|
|
26
|
+
CREATE INDEX IF NOT EXISTS idx_tool_policy_hashes_created ON tool_policy_hashes(created_at);
|
|
27
|
+
CREATE INDEX IF NOT EXISTS idx_tsconfig_hashes_created ON tsconfig_hashes(created_at);
|
|
28
|
+
CREATE INDEX IF NOT EXISTS idx_versions_version_hash ON versions(version_hash);
|
|
29
|
+
CREATE INDEX IF NOT EXISTS idx_versions_prev_hash ON versions(prev_version_hash);
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
-- ML-D.2: Add language field to symbol records
|
|
2
|
+
|
|
3
|
+
-- Add language column to symbols table
|
|
4
|
+
ALTER TABLE symbols ADD COLUMN language TEXT;
|
|
5
|
+
|
|
6
|
+
-- Backfill existing symbols with language based on file extension
|
|
7
|
+
-- Infer language from file's extension by joining with files table
|
|
8
|
+
UPDATE symbols
|
|
9
|
+
SET language = (
|
|
10
|
+
CASE
|
|
11
|
+
WHEN substr(f.rel_path, -3) = '.ts' THEN 'typescript'
|
|
12
|
+
WHEN substr(f.rel_path, -4) = '.tsx' THEN 'typescript'
|
|
13
|
+
WHEN substr(f.rel_path, -3) = '.js' THEN 'javascript'
|
|
14
|
+
WHEN substr(f.rel_path, -4) = '.jsx' THEN 'typescript'
|
|
15
|
+
WHEN substr(f.rel_path, -3) = '.py' THEN 'python'
|
|
16
|
+
WHEN substr(f.rel_path, -3) = '.go' THEN 'go'
|
|
17
|
+
WHEN substr(f.rel_path, -5) = '.java' THEN 'java'
|
|
18
|
+
WHEN substr(f.rel_path, -6) = '.cs' THEN 'csharp'
|
|
19
|
+
WHEN substr(f.rel_path, -3) = '.cs' THEN 'csharp'
|
|
20
|
+
ELSE f.language
|
|
21
|
+
END
|
|
22
|
+
)
|
|
23
|
+
FROM files f
|
|
24
|
+
WHERE symbols.file_id = f.file_id AND symbols.language IS NULL;
|
|
25
|
+
|
|
26
|
+
-- Add index on language column for query performance
|
|
27
|
+
CREATE INDEX IF NOT EXISTS idx_symbols_language ON symbols(language);
|
|
28
|
+
CREATE INDEX IF NOT EXISTS idx_symbols_repo_language ON symbols(repo_id, language);
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
-- Add performance indexes for frequently queried columns
|
|
2
|
+
-- Migration: 0008_performance_indexes.sql
|
|
3
|
+
|
|
4
|
+
-- Index for getSymbolsByFile() - frequently called during indexing
|
|
5
|
+
CREATE INDEX IF NOT EXISTS idx_symbols_file_id ON symbols(file_id);
|
|
6
|
+
|
|
7
|
+
-- Index for searchSymbols() - improves LIKE queries on name with repo_id filter
|
|
8
|
+
CREATE INDEX IF NOT EXISTS idx_symbols_repo_name_idx ON symbols(repo_id, name);
|
|
9
|
+
|
|
10
|
+
-- Index for getFilesByRepo() - frequently called during operations
|
|
11
|
+
CREATE INDEX IF NOT EXISTS idx_files_repo_id ON files(repo_id);
|
|
12
|
+
|
|
13
|
+
-- Index for version queries with ordering by created_at
|
|
14
|
+
-- Covers getLatestVersion() and listVersions()
|
|
15
|
+
CREATE INDEX IF NOT EXISTS idx_versions_repo_created ON versions(repo_id, created_at DESC);
|
|
16
|
+
|
|
17
|
+
-- Index for slice_handles by repo_id
|
|
18
|
+
CREATE INDEX IF NOT EXISTS idx_slice_handles_repo_id ON slice_handles(repo_id);
|
|
19
|
+
|
|
20
|
+
-- Composite index for symbols with repo_id and kind (common filter combo)
|
|
21
|
+
CREATE INDEX IF NOT EXISTS idx_symbols_repo_kind ON symbols(repo_id, kind);
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
-- RR-G.7: Add missing foreign key constraints to edges table
|
|
2
|
+
-- Note: to_symbol_id intentionally has no FK constraint because the indexer
|
|
3
|
+
-- creates "unresolved" edges (e.g., "unresolved:call:functionName") for
|
|
4
|
+
-- cross-file references that haven't been resolved yet.
|
|
5
|
+
|
|
6
|
+
-- Create new edges table with proper FK constraints
|
|
7
|
+
CREATE TABLE edges_new (
|
|
8
|
+
edge_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
9
|
+
repo_id TEXT NOT NULL,
|
|
10
|
+
from_symbol_id TEXT NOT NULL,
|
|
11
|
+
to_symbol_id TEXT NOT NULL,
|
|
12
|
+
type TEXT NOT NULL,
|
|
13
|
+
weight REAL NOT NULL,
|
|
14
|
+
provenance TEXT,
|
|
15
|
+
created_at TEXT NOT NULL,
|
|
16
|
+
FOREIGN KEY(repo_id) REFERENCES repos(repo_id) ON DELETE CASCADE,
|
|
17
|
+
FOREIGN KEY(from_symbol_id) REFERENCES symbols(symbol_id) ON DELETE CASCADE
|
|
18
|
+
-- to_symbol_id has no FK: allows unresolved edges like "unresolved:call:foo"
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
-- Copy only valid data (with existing FK references) from old table
|
|
22
|
+
-- Only validate repo_id and from_symbol_id; to_symbol_id may be unresolved
|
|
23
|
+
INSERT INTO edges_new
|
|
24
|
+
SELECT e.* FROM edges e
|
|
25
|
+
WHERE EXISTS (SELECT 1 FROM repos r WHERE r.repo_id = e.repo_id)
|
|
26
|
+
AND EXISTS (SELECT 1 FROM symbols s WHERE s.symbol_id = e.from_symbol_id);
|
|
27
|
+
|
|
28
|
+
-- Drop old table
|
|
29
|
+
DROP TABLE edges;
|
|
30
|
+
|
|
31
|
+
-- Rename new table
|
|
32
|
+
ALTER TABLE edges_new RENAME TO edges;
|
|
33
|
+
|
|
34
|
+
-- Recreate indexes
|
|
35
|
+
CREATE INDEX idx_edges_repo_from ON edges(from_symbol_id);
|
|
36
|
+
CREATE INDEX idx_edges_repo_to ON edges(to_symbol_id);
|
|
37
|
+
CREATE INDEX idx_edges_repo ON edges(repo_id);
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
-- RR-H.1: Database schema standardization
|
|
2
|
+
|
|
3
|
+
-- Issue 1: Add missing FK on symbol_versions.symbol_id with CASCADE
|
|
4
|
+
-- Recreate symbol_versions table with proper FK constraint
|
|
5
|
+
CREATE TABLE symbol_versions_new (
|
|
6
|
+
version_id TEXT NOT NULL,
|
|
7
|
+
symbol_id TEXT NOT NULL,
|
|
8
|
+
ast_fingerprint TEXT NOT NULL,
|
|
9
|
+
signature_json TEXT,
|
|
10
|
+
summary TEXT,
|
|
11
|
+
invariants_json TEXT,
|
|
12
|
+
side_effects_json TEXT,
|
|
13
|
+
PRIMARY KEY(version_id, symbol_id),
|
|
14
|
+
FOREIGN KEY(version_id) REFERENCES versions(version_id) ON DELETE CASCADE,
|
|
15
|
+
FOREIGN KEY(symbol_id) REFERENCES symbols(symbol_id) ON DELETE CASCADE
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
-- Copy only valid data (with existing FK references) from old table
|
|
19
|
+
INSERT INTO symbol_versions_new
|
|
20
|
+
SELECT sv.* FROM symbol_versions sv
|
|
21
|
+
WHERE EXISTS (SELECT 1 FROM versions v WHERE v.version_id = sv.version_id)
|
|
22
|
+
AND EXISTS (SELECT 1 FROM symbols s WHERE s.symbol_id = sv.symbol_id);
|
|
23
|
+
|
|
24
|
+
-- Drop old table
|
|
25
|
+
DROP TABLE symbol_versions;
|
|
26
|
+
|
|
27
|
+
-- Rename new table
|
|
28
|
+
ALTER TABLE symbol_versions_new RENAME TO symbol_versions;
|
|
29
|
+
|
|
30
|
+
-- Recreate index
|
|
31
|
+
CREATE INDEX idx_symbol_versions_symbol ON symbol_versions(symbol_id);
|
|
32
|
+
|
|
33
|
+
-- Issue 3: Remove duplicate index idx_symbols_repo_name_idx from migration 0008
|
|
34
|
+
-- (idx_symbols_repo_name already exists from migration 0001)
|
|
35
|
+
DROP INDEX IF EXISTS idx_symbols_repo_name_idx;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
-- Migration: Add directory column to files table
|
|
2
|
+
-- Purpose: Improve performance of directory aggregate queries by storing computed directory
|
|
3
|
+
|
|
4
|
+
-- Add directory column
|
|
5
|
+
ALTER TABLE files ADD COLUMN directory TEXT NOT NULL DEFAULT '';
|
|
6
|
+
|
|
7
|
+
-- Populate existing rows with directory from rel_path
|
|
8
|
+
-- Extract directory by finding the last slash (like JavaScript's lastIndexOf)
|
|
9
|
+
-- Using reverse() to find the last occurrence of '/'
|
|
10
|
+
-- Formula: substr(rel_path, 1, length(rel_path) - instr(reverse(rel_path), '/'))
|
|
11
|
+
-- Note: instr() is 1-indexed in SQLite, so we don't need to adjust further
|
|
12
|
+
UPDATE files SET directory =
|
|
13
|
+
CASE
|
|
14
|
+
WHEN instr(rel_path, '/') > 0
|
|
15
|
+
THEN substr(rel_path, 1, length(rel_path) - instr(reverse(rel_path), '/'))
|
|
16
|
+
ELSE ''
|
|
17
|
+
END;
|
|
18
|
+
|
|
19
|
+
-- Add index for directory queries (composite with repo_id for better filtering)
|
|
20
|
+
CREATE INDEX idx_files_directory ON files(repo_id, directory);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
-- Migration 0012: Create symbol_references table for inverted index
|
|
2
|
+
-- This table tracks symbol references in test files for O(1) lookup
|
|
3
|
+
|
|
4
|
+
CREATE TABLE IF NOT EXISTS symbol_references (
|
|
5
|
+
ref_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
6
|
+
repo_id TEXT NOT NULL,
|
|
7
|
+
symbol_name TEXT NOT NULL,
|
|
8
|
+
file_id INTEGER NOT NULL,
|
|
9
|
+
line_number INTEGER,
|
|
10
|
+
created_at TEXT NOT NULL,
|
|
11
|
+
FOREIGN KEY(repo_id) REFERENCES repos(repo_id) ON DELETE CASCADE,
|
|
12
|
+
FOREIGN KEY(file_id) REFERENCES files(file_id) ON DELETE CASCADE
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
CREATE INDEX IF NOT EXISTS idx_symbol_refs_name ON symbol_references(repo_id, symbol_name);
|
|
16
|
+
CREATE INDEX IF NOT EXISTS idx_symbol_refs_file ON symbol_references(file_id);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
CREATE TABLE IF NOT EXISTS sync_artifacts (
|
|
2
|
+
artifact_id TEXT PRIMARY KEY,
|
|
3
|
+
repo_id TEXT NOT NULL,
|
|
4
|
+
version_id TEXT NOT NULL,
|
|
5
|
+
commit_sha TEXT,
|
|
6
|
+
branch TEXT,
|
|
7
|
+
artifact_hash TEXT NOT NULL,
|
|
8
|
+
compressed_data TEXT NOT NULL,
|
|
9
|
+
created_at TEXT NOT NULL,
|
|
10
|
+
size_bytes INTEGER NOT NULL,
|
|
11
|
+
FOREIGN KEY(repo_id) REFERENCES repos(repo_id),
|
|
12
|
+
FOREIGN KEY(version_id) REFERENCES versions(version_id)
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
CREATE INDEX IF NOT EXISTS idx_sync_artifacts_repo ON sync_artifacts(repo_id);
|
|
16
|
+
CREATE INDEX IF NOT EXISTS idx_sync_artifacts_version ON sync_artifacts(version_id);
|
|
17
|
+
CREATE INDEX IF NOT EXISTS idx_sync_artifacts_commit ON sync_artifacts(commit_sha);
|
package/package.json
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "sdl-mcp",
|
|
3
|
+
"version": "0.6.0",
|
|
4
|
+
"description": "Symbol Delta Ledger MCP Server - Cards-first code context for TypeScript/JavaScript repositories",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/main.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"sdl-mcp": "dist/cli/index.js"
|
|
9
|
+
},
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "git+https://github.com/GlitterKill/sdl-mcp.git"
|
|
13
|
+
},
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/GlitterKill/sdl-mcp/issues"
|
|
16
|
+
},
|
|
17
|
+
"homepage": "https://github.com/GlitterKill/sdl-mcp#readme",
|
|
18
|
+
"files": [
|
|
19
|
+
"dist",
|
|
20
|
+
"config",
|
|
21
|
+
"migrations",
|
|
22
|
+
"templates",
|
|
23
|
+
"README.md",
|
|
24
|
+
"LICENSE"
|
|
25
|
+
],
|
|
26
|
+
"scripts": {
|
|
27
|
+
"clean:dist": "node scripts/clean-dist.mjs",
|
|
28
|
+
"build": "tsc -p tsconfig.build.json",
|
|
29
|
+
"build:scripts": "tsc -p tsconfig.scripts.json && tsx scripts/fix-imports.ts",
|
|
30
|
+
"build:runtime": "npm run clean:dist && npm run build",
|
|
31
|
+
"build:all": "npm run clean:dist && npm run build && npm run build:scripts",
|
|
32
|
+
"watch": "tsc -p tsconfig.build.json --watch",
|
|
33
|
+
"dev": "tsx src/main.ts",
|
|
34
|
+
"typecheck": "tsc --noEmit",
|
|
35
|
+
"lint": "eslint src --ext .ts",
|
|
36
|
+
"format": "prettier --write \"src/**/*.ts\"",
|
|
37
|
+
"test": "node scripts/run-tests.mjs",
|
|
38
|
+
"test:harness": "npm run test:adapters",
|
|
39
|
+
"test:adapters": "npm run build && npx tsc --rootDir tests/harness --outDir dist/tests/harness --module nodenext tests/harness/adapter-runner.ts && node dist/tests/harness/adapter-runner.js",
|
|
40
|
+
"test:golden": "npm run build && tsx scripts/golden/update-goldens.ts validate",
|
|
41
|
+
"golden:update": "npm run build && tsx scripts/golden/update-goldens.ts generate",
|
|
42
|
+
"benchmark:ci": "node dist/cli/index.js benchmark:ci",
|
|
43
|
+
"migrate": "npm run build:scripts && node dist/scripts/migrate.js",
|
|
44
|
+
"index": "npm run build:scripts && node dist/scripts/index-repo.js",
|
|
45
|
+
"index-repo": "npm run build:scripts && node dist/scripts/index-repo.js",
|
|
46
|
+
"dump-symbol": "npm run build:scripts && node dist/scripts/dump-symbol.js",
|
|
47
|
+
"benchmark": "tsx scripts/benchmark.ts",
|
|
48
|
+
"benchmark:real": "tsx scripts/real-world-benchmark.ts",
|
|
49
|
+
"benchmark:matrix": "tsx scripts/real-world-benchmark-matrix.ts",
|
|
50
|
+
"benchmark:claims": "tsx scripts/check-benchmark-claims.ts",
|
|
51
|
+
"benchmark:sweep": "tsx scripts/budget-sensitivity-sweep.ts",
|
|
52
|
+
"benchmark:record-trace": "tsx scripts/record-trace.ts",
|
|
53
|
+
"benchmark:setup-external": "tsx scripts/setup-external-benchmark-repos.ts",
|
|
54
|
+
"package:exe": "node scripts/build-exe.js",
|
|
55
|
+
"prepack": "npm run build:runtime",
|
|
56
|
+
"prepublishOnly": "npm run build:all && npm run lint && npm run typecheck"
|
|
57
|
+
},
|
|
58
|
+
"keywords": [
|
|
59
|
+
"mcp",
|
|
60
|
+
"model-context-protocol",
|
|
61
|
+
"code-indexing",
|
|
62
|
+
"symbol-ledger",
|
|
63
|
+
"typescript",
|
|
64
|
+
"javascript",
|
|
65
|
+
"code-context",
|
|
66
|
+
"ast",
|
|
67
|
+
"code-analysis",
|
|
68
|
+
"developer-tools"
|
|
69
|
+
],
|
|
70
|
+
"author": "",
|
|
71
|
+
"license": "MIT",
|
|
72
|
+
"dependencies": {
|
|
73
|
+
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
74
|
+
"better-sqlite3": "^11.0.0",
|
|
75
|
+
"fast-glob": "^3.3.3",
|
|
76
|
+
"tree-sitter": "^0.21.1",
|
|
77
|
+
"tree-sitter-bash": "^0.21.0",
|
|
78
|
+
"tree-sitter-c": "^0.21.0",
|
|
79
|
+
"tree-sitter-c-sharp": "0.23.1",
|
|
80
|
+
"tree-sitter-cpp": "^0.21.0",
|
|
81
|
+
"tree-sitter-go": "0.23.4",
|
|
82
|
+
"tree-sitter-java": "0.23.5",
|
|
83
|
+
"tree-sitter-kotlin": "0.3.8",
|
|
84
|
+
"tree-sitter-php": "0.22.8",
|
|
85
|
+
"tree-sitter-python": "0.23.3",
|
|
86
|
+
"tree-sitter-rust": "0.21.0",
|
|
87
|
+
"tree-sitter-typescript": "0.23.2",
|
|
88
|
+
"typescript": "^5.9.3",
|
|
89
|
+
"zod": "^3.23.0",
|
|
90
|
+
"zod-to-json-schema": "^3.25.1"
|
|
91
|
+
},
|
|
92
|
+
"optionalDependencies": {
|
|
93
|
+
"chokidar": "^3.5.3"
|
|
94
|
+
},
|
|
95
|
+
"devDependencies": {
|
|
96
|
+
"@types/better-sqlite3": "^7.6.0",
|
|
97
|
+
"@types/node": "^20.0.0",
|
|
98
|
+
"@typescript-eslint/eslint-plugin": "^7.0.0",
|
|
99
|
+
"@typescript-eslint/parser": "^7.0.0",
|
|
100
|
+
"eslint": "^8.0.0",
|
|
101
|
+
"prettier": "^3.0.0",
|
|
102
|
+
"tsx": "^4.0.0"
|
|
103
|
+
},
|
|
104
|
+
"engines": {
|
|
105
|
+
"node": ">=18.0.0"
|
|
106
|
+
}
|
|
107
|
+
}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
# CLAUDE.md - SDL-MCP Integration
|
|
2
|
+
|
|
3
|
+
This file instructs Claude Code (and other AI agents) to use SDL-MCP for efficient code context.
|
|
4
|
+
|
|
5
|
+
## Code Context Protocol
|
|
6
|
+
|
|
7
|
+
**IMPORTANT**: This project uses SDL-MCP for code understanding. Always prefer SDL-MCP tools over reading raw files directly.
|
|
8
|
+
|
|
9
|
+
### Repository Configuration
|
|
10
|
+
|
|
11
|
+
- **Repository ID**: `{{REPO_ID}}`
|
|
12
|
+
- **MCP Server**: sdl-mcp
|
|
13
|
+
|
|
14
|
+
### Context Ladder (Use in Order)
|
|
15
|
+
|
|
16
|
+
When you need to understand code, follow this escalation path:
|
|
17
|
+
|
|
18
|
+
| Step | Tool | Token Cost | When to Use |
|
|
19
|
+
|------|------|------------|-------------|
|
|
20
|
+
| 1 | `sdl.symbol.search` | ~50 | Find symbols by name |
|
|
21
|
+
| 2 | `sdl.symbol.getCard` | ~135 | Understand signatures, deps, summary |
|
|
22
|
+
| 3 | `sdl.slice.build` | ~800 | Get related symbols for a task |
|
|
23
|
+
| 4 | `sdl.code.getSkeleton` | ~113 | See control flow structure |
|
|
24
|
+
| 5 | `sdl.code.getHotPath` | ~200 | Find specific identifiers |
|
|
25
|
+
| 6 | `sdl.code.needWindow` | Variable | Full code (last resort) |
|
|
26
|
+
|
|
27
|
+
### Tool Usage Guidelines
|
|
28
|
+
|
|
29
|
+
#### Finding Code
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
# Search for symbols by name
|
|
33
|
+
sdl.symbol.search({ repoId: "{{REPO_ID}}", query: "functionName" })
|
|
34
|
+
|
|
35
|
+
# Search with filters
|
|
36
|
+
sdl.symbol.search({
|
|
37
|
+
repoId: "{{REPO_ID}}",
|
|
38
|
+
query: "parse",
|
|
39
|
+
kinds: ["function", "method"],
|
|
40
|
+
limit: 20
|
|
41
|
+
})
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
#### Understanding Code
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
# Get symbol metadata (signature, summary, dependencies)
|
|
48
|
+
sdl.symbol.getCard({ repoId: "{{REPO_ID}}", symbolId: "<id>" })
|
|
49
|
+
|
|
50
|
+
# Get related symbols for context
|
|
51
|
+
sdl.slice.build({
|
|
52
|
+
repoId: "{{REPO_ID}}",
|
|
53
|
+
entrySymbols: ["<symbolId>"],
|
|
54
|
+
maxCards: 30
|
|
55
|
+
})
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
#### Reading Code (When Necessary)
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
# Get code skeleton (signatures + control flow, elided bodies)
|
|
62
|
+
sdl.code.getSkeleton({ repoId: "{{REPO_ID}}", symbolId: "<id>" })
|
|
63
|
+
|
|
64
|
+
# Find specific identifiers in code
|
|
65
|
+
sdl.code.getHotPath({
|
|
66
|
+
repoId: "{{REPO_ID}}",
|
|
67
|
+
symbolId: "<id>",
|
|
68
|
+
identifiers: ["errorHandler", "validate"]
|
|
69
|
+
})
|
|
70
|
+
|
|
71
|
+
# Get raw code (requires justification)
|
|
72
|
+
sdl.code.needWindow({
|
|
73
|
+
repoId: "{{REPO_ID}}",
|
|
74
|
+
symbolId: "<id>",
|
|
75
|
+
reason: "Need to understand validation implementation details",
|
|
76
|
+
expectedIdentifiers: ["validateInput"]
|
|
77
|
+
})
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Required Practices
|
|
81
|
+
|
|
82
|
+
1. **Always search first**: Use `sdl.symbol.search` before trying to read files
|
|
83
|
+
2. **Get cards before code**: Use `sdl.symbol.getCard` to understand what a symbol does
|
|
84
|
+
3. **Use slices for context**: Use `sdl.slice.build` to find related code
|
|
85
|
+
4. **Justify raw code requests**: Always provide a `reason` for `sdl.code.needWindow`
|
|
86
|
+
5. **Follow nextBestAction**: If a request is denied, use the suggested alternative
|
|
87
|
+
|
|
88
|
+
### Do NOT
|
|
89
|
+
|
|
90
|
+
- Read entire files with the `Read` tool when SDL-MCP can provide the context
|
|
91
|
+
- Skip cards and go directly to raw code
|
|
92
|
+
- Ignore policy denials - use the `nextBestAction` suggestion
|
|
93
|
+
- Request raw code without trying cards/skeletons first
|
|
94
|
+
|
|
95
|
+
### Workflow Examples
|
|
96
|
+
|
|
97
|
+
#### Bug Investigation
|
|
98
|
+
|
|
99
|
+
1. Search for the problematic function:
|
|
100
|
+
```
|
|
101
|
+
sdl.symbol.search({ repoId: "{{REPO_ID}}", query: "handleError" })
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
2. Get the card to understand its purpose and dependencies:
|
|
105
|
+
```
|
|
106
|
+
sdl.symbol.getCard({ repoId: "{{REPO_ID}}", symbolId: "<found-id>" })
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
3. Build a slice to see related error handling:
|
|
110
|
+
```
|
|
111
|
+
sdl.slice.build({ repoId: "{{REPO_ID}}", entrySymbols: ["<id>"], maxCards: 20 })
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
4. If needed, get the skeleton to see control flow:
|
|
115
|
+
```
|
|
116
|
+
sdl.code.getSkeleton({ repoId: "{{REPO_ID}}", symbolId: "<id>" })
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
5. Only if the bug requires seeing exact implementation:
|
|
120
|
+
```
|
|
121
|
+
sdl.code.needWindow({
|
|
122
|
+
repoId: "{{REPO_ID}}",
|
|
123
|
+
symbolId: "<id>",
|
|
124
|
+
reason: "Need to see exact error condition logic",
|
|
125
|
+
expectedIdentifiers: ["errorCode", "throwError"]
|
|
126
|
+
})
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
#### Feature Implementation
|
|
130
|
+
|
|
131
|
+
1. Search for similar existing features:
|
|
132
|
+
```
|
|
133
|
+
sdl.symbol.search({ repoId: "{{REPO_ID}}", query: "create", kinds: ["function"] })
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
2. Get cards for relevant symbols to understand patterns:
|
|
137
|
+
```
|
|
138
|
+
sdl.symbol.getCard({ repoId: "{{REPO_ID}}", symbolId: "<id>" })
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
3. Build a slice from the entry point:
|
|
142
|
+
```
|
|
143
|
+
sdl.slice.build({ repoId: "{{REPO_ID}}", entrySymbols: ["<entry-id>"], maxCards: 50 })
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
4. Use skeletons to understand structure without full code:
|
|
147
|
+
```
|
|
148
|
+
sdl.code.getSkeleton({ repoId: "{{REPO_ID}}", symbolId: "<id>" })
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
#### Code Review
|
|
152
|
+
|
|
153
|
+
1. Get the delta pack to see what changed:
|
|
154
|
+
```
|
|
155
|
+
sdl.delta.get({ repoId: "{{REPO_ID}}" })
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
2. For each changed symbol, get its card:
|
|
159
|
+
```
|
|
160
|
+
sdl.symbol.getCard({ repoId: "{{REPO_ID}}", symbolId: "<changed-id>" })
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
3. Check blast radius for impact:
|
|
164
|
+
```
|
|
165
|
+
sdl.delta.get({ repoId: "{{REPO_ID}}", includeBlastRadius: true })
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### Refreshing the Index
|
|
169
|
+
|
|
170
|
+
If you've made changes and need to update the symbol database:
|
|
171
|
+
|
|
172
|
+
```
|
|
173
|
+
sdl.index.refresh({ repoId: "{{REPO_ID}}", mode: "incremental" })
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Getting Help
|
|
177
|
+
|
|
178
|
+
- Check repository status: `sdl.repo.status({ repoId: "{{REPO_ID}}" })`
|
|
179
|
+
- View current policy: `sdl.policy.get({ repoId: "{{REPO_ID}}" })`
|