sdl-mcp 0.10.3 → 0.10.5
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/README.md +122 -82
- package/config/sdlmcp.config.example.json +27 -9
- package/config/sdlmcp.config.json +5 -19
- package/config/sdlmcp.config.schema.json +92 -9
- package/dist/.tsbuildinfo +1 -1
- package/dist/agent/context-engine.d.ts.map +1 -1
- package/dist/agent/context-engine.js +2 -0
- package/dist/agent/context-engine.js.map +1 -1
- package/dist/agent/context-ranking.d.ts +3 -2
- package/dist/agent/context-ranking.d.ts.map +1 -1
- package/dist/agent/context-ranking.js +65 -11
- package/dist/agent/context-ranking.js.map +1 -1
- package/dist/agent/types.d.ts +2 -0
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/cli/argParsing.d.ts +1 -1
- package/dist/cli/argParsing.d.ts.map +1 -1
- package/dist/cli/argParsing.js +2 -2
- package/dist/cli/argParsing.js.map +1 -1
- package/dist/cli/commands/benchmark.d.ts +1 -10
- package/dist/cli/commands/benchmark.d.ts.map +1 -1
- package/dist/cli/commands/benchmark.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +66 -2
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +234 -17
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +9 -8
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/serve.d.ts.map +1 -1
- package/dist/cli/commands/serve.js +21 -2
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/cli/commands/tool-actions.d.ts.map +1 -1
- package/dist/cli/commands/tool-actions.js +749 -200
- package/dist/cli/commands/tool-actions.js.map +1 -1
- package/dist/cli/transport/http.d.ts.map +1 -1
- package/dist/cli/transport/http.js +11 -2
- package/dist/cli/transport/http.js.map +1 -1
- package/dist/cli/types.d.ts +2 -1
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/code/hotpath.d.ts +7 -0
- package/dist/code/hotpath.d.ts.map +1 -1
- package/dist/code/hotpath.js +30 -9
- package/dist/code/hotpath.js.map +1 -1
- package/dist/code/skeleton.d.ts.map +1 -1
- package/dist/code/skeleton.js +39 -11
- package/dist/code/skeleton.js.map +1 -1
- package/dist/code-mode/action-catalog.d.ts +4 -4
- package/dist/code-mode/action-catalog.d.ts.map +1 -1
- package/dist/code-mode/action-catalog.js +91 -48
- package/dist/code-mode/action-catalog.js.map +1 -1
- package/dist/code-mode/descriptions.js +2 -2
- package/dist/code-mode/descriptions.js.map +1 -1
- package/dist/code-mode/etag-cache.d.ts.map +1 -1
- package/dist/code-mode/etag-cache.js +23 -19
- package/dist/code-mode/etag-cache.js.map +1 -1
- package/dist/code-mode/index.d.ts +1 -0
- package/dist/code-mode/index.d.ts.map +1 -1
- package/dist/code-mode/index.js +58 -4
- package/dist/code-mode/index.js.map +1 -1
- package/dist/code-mode/ladder-validator.d.ts.map +1 -1
- package/dist/code-mode/ladder-validator.js +0 -1
- package/dist/code-mode/ladder-validator.js.map +1 -1
- package/dist/code-mode/manual-generator.d.ts.map +1 -1
- package/dist/code-mode/manual-generator.js +28 -12
- package/dist/code-mode/manual-generator.js.map +1 -1
- package/dist/code-mode/transforms.d.ts.map +1 -1
- package/dist/code-mode/transforms.js +56 -10
- package/dist/code-mode/transforms.js.map +1 -1
- package/dist/code-mode/types.d.ts +14 -0
- package/dist/code-mode/types.d.ts.map +1 -1
- package/dist/code-mode/types.js +2 -0
- package/dist/code-mode/types.js.map +1 -1
- package/dist/code-mode/workflow-budget.d.ts +14 -0
- package/dist/code-mode/workflow-budget.d.ts.map +1 -1
- package/dist/code-mode/workflow-budget.js +32 -4
- package/dist/code-mode/workflow-budget.js.map +1 -1
- package/dist/code-mode/workflow-executor.d.ts.map +1 -1
- package/dist/code-mode/workflow-executor.js +52 -0
- package/dist/code-mode/workflow-executor.js.map +1 -1
- package/dist/code-mode/workflow-parser.d.ts +7 -0
- package/dist/code-mode/workflow-parser.d.ts.map +1 -1
- package/dist/code-mode/workflow-parser.js +3 -2
- package/dist/code-mode/workflow-parser.js.map +1 -1
- package/dist/config/loadConfig.d.ts.map +1 -1
- package/dist/config/loadConfig.js +21 -0
- package/dist/config/loadConfig.js.map +1 -1
- package/dist/config/types.d.ts +79 -1
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +64 -4
- package/dist/config/types.js.map +1 -1
- package/dist/db/ladybug-algorithms.d.ts +98 -0
- package/dist/db/ladybug-algorithms.d.ts.map +1 -0
- package/dist/db/ladybug-algorithms.js +283 -0
- package/dist/db/ladybug-algorithms.js.map +1 -0
- package/dist/db/ladybug-edges.d.ts.map +1 -1
- package/dist/db/ladybug-edges.js +1 -0
- package/dist/db/ladybug-edges.js.map +1 -1
- package/dist/db/ladybug-feedback.d.ts.map +1 -1
- package/dist/db/ladybug-feedback.js +10 -2
- package/dist/db/ladybug-feedback.js.map +1 -1
- package/dist/db/ladybug-file-summaries.d.ts +4 -4
- package/dist/db/ladybug-file-summaries.d.ts.map +1 -1
- package/dist/db/ladybug-file-summaries.js +7 -7
- package/dist/db/ladybug-memory.d.ts +1 -0
- package/dist/db/ladybug-memory.d.ts.map +1 -1
- package/dist/db/ladybug-memory.js +7 -3
- package/dist/db/ladybug-memory.js.map +1 -1
- package/dist/db/ladybug-metrics.d.ts +12 -0
- package/dist/db/ladybug-metrics.d.ts.map +1 -1
- package/dist/db/ladybug-metrics.js +43 -0
- package/dist/db/ladybug-metrics.js.map +1 -1
- package/dist/db/ladybug-queries.d.ts +4 -0
- package/dist/db/ladybug-queries.d.ts.map +1 -1
- package/dist/db/ladybug-queries.js +7 -0
- package/dist/db/ladybug-queries.js.map +1 -1
- package/dist/db/ladybug-repos.d.ts +4 -0
- package/dist/db/ladybug-repos.d.ts.map +1 -1
- package/dist/db/ladybug-repos.js +3 -0
- package/dist/db/ladybug-repos.js.map +1 -1
- package/dist/db/ladybug-schema.d.ts +8 -1
- package/dist/db/ladybug-schema.d.ts.map +1 -1
- package/dist/db/ladybug-schema.js +107 -18
- package/dist/db/ladybug-schema.js.map +1 -1
- package/dist/db/ladybug-scip.d.ts +165 -0
- package/dist/db/ladybug-scip.d.ts.map +1 -0
- package/dist/db/ladybug-scip.js +451 -0
- package/dist/db/ladybug-scip.js.map +1 -0
- package/dist/db/ladybug-shadow-clusters.d.ts +62 -0
- package/dist/db/ladybug-shadow-clusters.d.ts.map +1 -0
- package/dist/db/ladybug-shadow-clusters.js +137 -0
- package/dist/db/ladybug-shadow-clusters.js.map +1 -0
- package/dist/db/ladybug-symbol-embeddings.d.ts +2 -2
- package/dist/db/ladybug-symbol-embeddings.d.ts.map +1 -1
- package/dist/db/ladybug-symbol-embeddings.js +12 -6
- package/dist/db/ladybug-symbol-embeddings.js.map +1 -1
- package/dist/db/ladybug-symbols.d.ts +17 -2
- package/dist/db/ladybug-symbols.d.ts.map +1 -1
- package/dist/db/ladybug-symbols.js +127 -16
- package/dist/db/ladybug-symbols.js.map +1 -1
- package/dist/db/ladybug.d.ts.map +1 -1
- package/dist/db/ladybug.js +60 -5
- package/dist/db/ladybug.js.map +1 -1
- package/dist/db/migrations/index.d.ts.map +1 -1
- package/dist/db/migrations/index.js +14 -1
- package/dist/db/migrations/index.js.map +1 -1
- package/dist/db/migrations/m011-add-centrality-and-shadow-clusters.d.ts +5 -0
- package/dist/db/migrations/m011-add-centrality-and-shadow-clusters.d.ts.map +1 -0
- package/dist/db/migrations/m011-add-centrality-and-shadow-clusters.js +65 -0
- package/dist/db/migrations/m011-add-centrality-and-shadow-clusters.js.map +1 -0
- package/dist/db/migrations/m012-add-symbol-repo-id-for-algo-projections.d.ts +5 -0
- package/dist/db/migrations/m012-add-symbol-repo-id-for-algo-projections.d.ts.map +1 -0
- package/dist/db/migrations/m012-add-symbol-repo-id-for-algo-projections.js +45 -0
- package/dist/db/migrations/m012-add-symbol-repo-id-for-algo-projections.js.map +1 -0
- package/dist/db/migrations/m013-semantic-vector-array-storage.d.ts +20 -0
- package/dist/db/migrations/m013-semantic-vector-array-storage.d.ts.map +1 -0
- package/dist/db/migrations/m013-semantic-vector-array-storage.js +68 -0
- package/dist/db/migrations/m013-semantic-vector-array-storage.js.map +1 -0
- package/dist/db/schema.d.ts +8 -0
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/delta/blastRadius.d.ts +33 -0
- package/dist/delta/blastRadius.d.ts.map +1 -1
- package/dist/delta/blastRadius.js +160 -0
- package/dist/delta/blastRadius.js.map +1 -1
- package/dist/domain/errors.d.ts +16 -0
- package/dist/domain/errors.d.ts.map +1 -1
- package/dist/domain/errors.js +28 -0
- package/dist/domain/errors.js.map +1 -1
- package/dist/domain/repositories/symbol-repository.d.ts +13 -0
- package/dist/domain/repositories/symbol-repository.d.ts.map +1 -1
- package/dist/domain/repositories/symbol-repository.js.map +1 -1
- package/dist/domain/types.d.ts +25 -1
- package/dist/domain/types.d.ts.map +1 -1
- package/dist/gateway/descriptions.d.ts.map +1 -1
- package/dist/gateway/descriptions.js +3 -5
- package/dist/gateway/descriptions.js.map +1 -1
- package/dist/gateway/legacy.d.ts.map +1 -1
- package/dist/gateway/legacy.js +2 -7
- package/dist/gateway/legacy.js.map +1 -1
- package/dist/gateway/router.d.ts +0 -8
- package/dist/gateway/router.d.ts.map +1 -1
- package/dist/gateway/router.js +28 -17
- package/dist/gateway/router.js.map +1 -1
- package/dist/gateway/schemas.d.ts +10 -59
- package/dist/gateway/schemas.d.ts.map +1 -1
- package/dist/gateway/schemas.js +15 -57
- package/dist/gateway/schemas.js.map +1 -1
- package/dist/graph/buildGraph.d.ts +9 -0
- package/dist/graph/buildGraph.d.ts.map +1 -1
- package/dist/graph/buildGraph.js +9 -30
- package/dist/graph/buildGraph.js.map +1 -1
- package/dist/graph/cluster.d.ts.map +1 -1
- package/dist/graph/cluster.js +13 -0
- package/dist/graph/cluster.js.map +1 -1
- package/dist/graph/graphSnapshotCache.d.ts.map +1 -1
- package/dist/graph/graphSnapshotCache.js +13 -0
- package/dist/graph/graphSnapshotCache.js.map +1 -1
- package/dist/graph/prefetch-model.d.ts.map +1 -1
- package/dist/graph/prefetch-model.js +0 -1
- package/dist/graph/prefetch-model.js.map +1 -1
- package/dist/graph/prefetch.d.ts.map +1 -1
- package/dist/graph/prefetch.js +7 -3
- package/dist/graph/prefetch.js.map +1 -1
- package/dist/graph/score.d.ts +76 -0
- package/dist/graph/score.d.ts.map +1 -1
- package/dist/graph/score.js +98 -0
- package/dist/graph/score.js.map +1 -1
- package/dist/graph/slice/beam-score-worker.d.ts +2 -1
- package/dist/graph/slice/beam-score-worker.d.ts.map +1 -1
- package/dist/graph/slice/beam-score-worker.js +3 -149
- package/dist/graph/slice/beam-score-worker.js.map +1 -1
- package/dist/graph/slice/beam-search-engine.d.ts +2 -2
- package/dist/graph/slice/beam-search-engine.d.ts.map +1 -1
- package/dist/graph/slice/beam-search-engine.js +57 -14
- package/dist/graph/slice/beam-search-engine.js.map +1 -1
- package/dist/graph/slice/truncation-handler.d.ts +11 -0
- package/dist/graph/slice/truncation-handler.d.ts.map +1 -1
- package/dist/graph/slice/truncation-handler.js.map +1 -1
- package/dist/graph/slice.d.ts.map +1 -1
- package/dist/graph/slice.js +21 -0
- package/dist/graph/slice.js.map +1 -1
- package/dist/indexer/cluster-orchestrator.d.ts +2 -0
- package/dist/indexer/cluster-orchestrator.d.ts.map +1 -1
- package/dist/indexer/cluster-orchestrator.js +167 -1
- package/dist/indexer/cluster-orchestrator.js.map +1 -1
- package/dist/indexer/edge-builder/telemetry.d.ts +44 -0
- package/dist/indexer/edge-builder/telemetry.d.ts.map +1 -1
- package/dist/indexer/edge-builder/telemetry.js +130 -0
- package/dist/indexer/edge-builder/telemetry.js.map +1 -1
- package/dist/indexer/embeddings-local.js +2 -2
- package/dist/indexer/embeddings-local.js.map +1 -1
- package/dist/indexer/embeddings.d.ts +2 -2
- package/dist/indexer/embeddings.d.ts.map +1 -1
- package/dist/indexer/embeddings.js +12 -6
- package/dist/indexer/embeddings.js.map +1 -1
- package/dist/indexer/indexer-init.d.ts +14 -0
- package/dist/indexer/indexer-init.d.ts.map +1 -1
- package/dist/indexer/indexer-init.js.map +1 -1
- package/dist/indexer/indexer-pass1.d.ts.map +1 -1
- package/dist/indexer/indexer-pass1.js +16 -0
- package/dist/indexer/indexer-pass1.js.map +1 -1
- package/dist/indexer/indexer.d.ts +33 -0
- package/dist/indexer/indexer.d.ts.map +1 -1
- package/dist/indexer/indexer.js +78 -5
- package/dist/indexer/indexer.js.map +1 -1
- package/dist/indexer/metrics-updater.js +1 -1
- package/dist/indexer/metrics-updater.js.map +1 -1
- package/dist/indexer/model-downloader.d.ts.map +1 -1
- package/dist/indexer/model-downloader.js +25 -5
- package/dist/indexer/model-downloader.js.map +1 -1
- package/dist/indexer/model-registry.d.ts.map +1 -1
- package/dist/indexer/model-registry.js +5 -21
- package/dist/indexer/model-registry.js.map +1 -1
- package/dist/indexer/parser/rust-process-file.d.ts.map +1 -1
- package/dist/indexer/parser/rust-process-file.js +29 -0
- package/dist/indexer/parser/rust-process-file.js.map +1 -1
- package/dist/indexer/pass2/barrel-walker.d.ts +77 -0
- package/dist/indexer/pass2/barrel-walker.d.ts.map +1 -0
- package/dist/indexer/pass2/barrel-walker.js +112 -0
- package/dist/indexer/pass2/barrel-walker.js.map +1 -0
- package/dist/indexer/pass2/confidence.d.ts +74 -0
- package/dist/indexer/pass2/confidence.d.ts.map +1 -0
- package/dist/indexer/pass2/confidence.js +173 -0
- package/dist/indexer/pass2/confidence.js.map +1 -0
- package/dist/indexer/pass2/resolvers/c-pass2-resolver.d.ts.map +1 -1
- package/dist/indexer/pass2/resolvers/c-pass2-resolver.js +13 -6
- package/dist/indexer/pass2/resolvers/c-pass2-resolver.js.map +1 -1
- package/dist/indexer/pass2/resolvers/cpp-pass2-resolver.d.ts.map +1 -1
- package/dist/indexer/pass2/resolvers/cpp-pass2-resolver.js +22 -12
- package/dist/indexer/pass2/resolvers/cpp-pass2-resolver.js.map +1 -1
- package/dist/indexer/pass2/resolvers/csharp-pass2-resolver.d.ts.map +1 -1
- package/dist/indexer/pass2/resolvers/csharp-pass2-resolver.js +31 -13
- package/dist/indexer/pass2/resolvers/csharp-pass2-resolver.js.map +1 -1
- package/dist/indexer/pass2/resolvers/go-pass2-resolver.d.ts.map +1 -1
- package/dist/indexer/pass2/resolvers/go-pass2-resolver.js +23 -9
- package/dist/indexer/pass2/resolvers/go-pass2-resolver.js.map +1 -1
- package/dist/indexer/pass2/resolvers/java-pass2-resolver.d.ts +64 -0
- package/dist/indexer/pass2/resolvers/java-pass2-resolver.d.ts.map +1 -1
- package/dist/indexer/pass2/resolvers/java-pass2-resolver.js +276 -28
- package/dist/indexer/pass2/resolvers/java-pass2-resolver.js.map +1 -1
- package/dist/indexer/pass2/resolvers/kotlin-pass2-resolver.d.ts.map +1 -1
- package/dist/indexer/pass2/resolvers/kotlin-pass2-resolver.js +27 -9
- package/dist/indexer/pass2/resolvers/kotlin-pass2-resolver.js.map +1 -1
- package/dist/indexer/pass2/resolvers/php-pass2-resolver.d.ts.map +1 -1
- package/dist/indexer/pass2/resolvers/php-pass2-resolver.js +33 -15
- package/dist/indexer/pass2/resolvers/php-pass2-resolver.js.map +1 -1
- package/dist/indexer/pass2/resolvers/python-pass2-helpers.d.ts +67 -0
- package/dist/indexer/pass2/resolvers/python-pass2-helpers.d.ts.map +1 -0
- package/dist/indexer/pass2/resolvers/python-pass2-helpers.js +180 -0
- package/dist/indexer/pass2/resolvers/python-pass2-helpers.js.map +1 -0
- package/dist/indexer/pass2/resolvers/python-pass2-resolver.d.ts.map +1 -1
- package/dist/indexer/pass2/resolvers/python-pass2-resolver.js +256 -8
- package/dist/indexer/pass2/resolvers/python-pass2-resolver.js.map +1 -1
- package/dist/indexer/pass2/resolvers/rust-pass2-resolver.d.ts +93 -1
- package/dist/indexer/pass2/resolvers/rust-pass2-resolver.d.ts.map +1 -1
- package/dist/indexer/pass2/resolvers/rust-pass2-resolver.js +470 -15
- package/dist/indexer/pass2/resolvers/rust-pass2-resolver.js.map +1 -1
- package/dist/indexer/pass2/resolvers/shell-pass2-helpers.d.ts +32 -0
- package/dist/indexer/pass2/resolvers/shell-pass2-helpers.d.ts.map +1 -0
- package/dist/indexer/pass2/resolvers/shell-pass2-helpers.js +71 -0
- package/dist/indexer/pass2/resolvers/shell-pass2-helpers.js.map +1 -0
- package/dist/indexer/pass2/resolvers/shell-pass2-resolver.d.ts.map +1 -1
- package/dist/indexer/pass2/resolvers/shell-pass2-resolver.js +19 -5
- package/dist/indexer/pass2/resolvers/shell-pass2-resolver.js.map +1 -1
- package/dist/indexer/pass2/scope-walker.d.ts +70 -0
- package/dist/indexer/pass2/scope-walker.d.ts.map +1 -0
- package/dist/indexer/pass2/scope-walker.js +130 -0
- package/dist/indexer/pass2/scope-walker.js.map +1 -0
- package/dist/indexer/rustIndexer.d.ts.map +1 -1
- package/dist/indexer/rustIndexer.js +23 -4
- package/dist/indexer/rustIndexer.js.map +1 -1
- package/dist/indexer/summaries.d.ts.map +1 -1
- package/dist/indexer/summaries.js +52 -9
- package/dist/indexer/summaries.js.map +1 -1
- package/dist/indexer/ts/tsParser.d.ts.map +1 -1
- package/dist/indexer/ts/tsParser.js +18 -0
- package/dist/indexer/ts/tsParser.js.map +1 -1
- package/dist/indexer/watcher.d.ts.map +1 -1
- package/dist/indexer/watcher.js +12 -1
- package/dist/indexer/watcher.js.map +1 -1
- package/dist/live-index/file-patcher.d.ts +3 -0
- package/dist/live-index/file-patcher.d.ts.map +1 -1
- package/dist/live-index/file-patcher.js +86 -15
- package/dist/live-index/file-patcher.js.map +1 -1
- package/dist/live-index/overlay-reader.d.ts +1 -1
- package/dist/live-index/overlay-reader.d.ts.map +1 -1
- package/dist/live-index/overlay-reader.js +2 -2
- package/dist/live-index/overlay-reader.js.map +1 -1
- package/dist/live-index/symbol-diff.d.ts +74 -0
- package/dist/live-index/symbol-diff.d.ts.map +1 -0
- package/dist/live-index/symbol-diff.js +190 -0
- package/dist/live-index/symbol-diff.js.map +1 -0
- package/dist/mcp/context-response-projection.js +1 -1
- package/dist/mcp/context-response-projection.js.map +1 -1
- package/dist/mcp/hooks/memory-hint.js +2 -2
- package/dist/mcp/hooks/memory-hint.js.map +1 -1
- package/dist/mcp/telemetry.d.ts +17 -1
- package/dist/mcp/telemetry.d.ts.map +1 -1
- package/dist/mcp/telemetry.js.map +1 -1
- package/dist/mcp/token-usage.d.ts.map +1 -1
- package/dist/mcp/token-usage.js +5 -0
- package/dist/mcp/token-usage.js.map +1 -1
- package/dist/mcp/tool-call-formatter.d.ts.map +1 -1
- package/dist/mcp/tool-call-formatter.js +7 -10
- package/dist/mcp/tool-call-formatter.js.map +1 -1
- package/dist/mcp/tools/agent-feedback.d.ts.map +1 -1
- package/dist/mcp/tools/agent-feedback.js +1 -2
- package/dist/mcp/tools/agent-feedback.js.map +1 -1
- package/dist/mcp/tools/buffer.d.ts.map +1 -1
- package/dist/mcp/tools/buffer.js +5 -1
- package/dist/mcp/tools/buffer.js.map +1 -1
- package/dist/mcp/tools/code.d.ts.map +1 -1
- package/dist/mcp/tools/code.js +10 -1
- package/dist/mcp/tools/code.js.map +1 -1
- package/dist/mcp/tools/context.d.ts.map +1 -1
- package/dist/mcp/tools/context.js +1 -0
- package/dist/mcp/tools/context.js.map +1 -1
- package/dist/mcp/tools/delta.d.ts.map +1 -1
- package/dist/mcp/tools/delta.js +76 -6
- package/dist/mcp/tools/delta.js.map +1 -1
- package/dist/mcp/tools/file-read.d.ts.map +1 -1
- package/dist/mcp/tools/file-read.js +46 -12
- package/dist/mcp/tools/file-read.js.map +1 -1
- package/dist/mcp/tools/file-write.d.ts +3 -0
- package/dist/mcp/tools/file-write.d.ts.map +1 -0
- package/dist/mcp/tools/file-write.js +254 -0
- package/dist/mcp/tools/file-write.js.map +1 -0
- package/dist/mcp/tools/info.d.ts +4 -2
- package/dist/mcp/tools/info.d.ts.map +1 -1
- package/dist/mcp/tools/info.js +30 -3
- package/dist/mcp/tools/info.js.map +1 -1
- package/dist/mcp/tools/memory.d.ts.map +1 -1
- package/dist/mcp/tools/memory.js +13 -3
- package/dist/mcp/tools/memory.js.map +1 -1
- package/dist/mcp/tools/policy.d.ts.map +1 -1
- package/dist/mcp/tools/policy.js +19 -15
- package/dist/mcp/tools/policy.js.map +1 -1
- package/dist/mcp/tools/prRisk.d.ts.map +1 -1
- package/dist/mcp/tools/prRisk.js +184 -26
- package/dist/mcp/tools/prRisk.js.map +1 -1
- package/dist/mcp/tools/repo.d.ts.map +1 -1
- package/dist/mcp/tools/repo.js +36 -8
- package/dist/mcp/tools/repo.js.map +1 -1
- package/dist/mcp/tools/scip.d.ts +10 -0
- package/dist/mcp/tools/scip.d.ts.map +1 -0
- package/dist/mcp/tools/scip.js +46 -0
- package/dist/mcp/tools/scip.js.map +1 -0
- package/dist/mcp/tools/slice-wire-format.d.ts +7 -5
- package/dist/mcp/tools/slice-wire-format.d.ts.map +1 -1
- package/dist/mcp/tools/slice-wire-format.js +12 -6
- package/dist/mcp/tools/slice-wire-format.js.map +1 -1
- package/dist/mcp/tools/slice.d.ts.map +1 -1
- package/dist/mcp/tools/slice.js +39 -6
- package/dist/mcp/tools/slice.js.map +1 -1
- package/dist/mcp/tools/symbol.d.ts +11 -22
- package/dist/mcp/tools/symbol.d.ts.map +1 -1
- package/dist/mcp/tools/symbol.js +58 -145
- package/dist/mcp/tools/symbol.js.map +1 -1
- package/dist/mcp/tools/tool-descriptors.d.ts.map +1 -1
- package/dist/mcp/tools/tool-descriptors.js +16 -24
- package/dist/mcp/tools/tool-descriptors.js.map +1 -1
- package/dist/mcp/tools.d.ts +286 -251
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +224 -155
- package/dist/mcp/tools.js.map +1 -1
- package/dist/memory/surface.d.ts +7 -0
- package/dist/memory/surface.d.ts.map +1 -1
- package/dist/memory/surface.js +43 -1
- package/dist/memory/surface.js.map +1 -1
- package/dist/retrieval/fallback.d.ts.map +1 -1
- package/dist/retrieval/fallback.js +29 -9
- package/dist/retrieval/fallback.js.map +1 -1
- package/dist/retrieval/index-lifecycle.d.ts +11 -21
- package/dist/retrieval/index-lifecycle.d.ts.map +1 -1
- package/dist/retrieval/index-lifecycle.js +47 -23
- package/dist/retrieval/index-lifecycle.js.map +1 -1
- package/dist/retrieval/model-mapping.d.ts +8 -5
- package/dist/retrieval/model-mapping.d.ts.map +1 -1
- package/dist/retrieval/model-mapping.js +20 -7
- package/dist/retrieval/model-mapping.js.map +1 -1
- package/dist/retrieval/orchestrator.d.ts.map +1 -1
- package/dist/retrieval/orchestrator.js +73 -34
- package/dist/retrieval/orchestrator.js.map +1 -1
- package/dist/retrieval/types.d.ts +10 -2
- package/dist/retrieval/types.d.ts.map +1 -1
- package/dist/runtime/executor.d.ts.map +1 -1
- package/dist/runtime/executor.js +96 -110
- package/dist/runtime/executor.js.map +1 -1
- package/dist/runtime/runtimes.d.ts +13 -0
- package/dist/runtime/runtimes.d.ts.map +1 -1
- package/dist/runtime/runtimes.js +73 -18
- package/dist/runtime/runtimes.js.map +1 -1
- package/dist/scip/decoder-factory.d.ts +16 -0
- package/dist/scip/decoder-factory.d.ts.map +1 -0
- package/dist/scip/decoder-factory.js +38 -0
- package/dist/scip/decoder-factory.js.map +1 -0
- package/dist/scip/decoder-rust.d.ts +29 -0
- package/dist/scip/decoder-rust.d.ts.map +1 -0
- package/dist/scip/decoder-rust.js +189 -0
- package/dist/scip/decoder-rust.js.map +1 -0
- package/dist/scip/decoder-ts.d.ts +27 -0
- package/dist/scip/decoder-ts.d.ts.map +1 -0
- package/dist/scip/decoder-ts.js +184 -0
- package/dist/scip/decoder-ts.js.map +1 -0
- package/dist/scip/edge-builder.d.ts +84 -0
- package/dist/scip/edge-builder.d.ts.map +1 -0
- package/dist/scip/edge-builder.js +177 -0
- package/dist/scip/edge-builder.js.map +1 -0
- package/dist/scip/external-symbols.d.ts +38 -0
- package/dist/scip/external-symbols.d.ts.map +1 -0
- package/dist/scip/external-symbols.js +105 -0
- package/dist/scip/external-symbols.js.map +1 -0
- package/dist/scip/ingestion.d.ts +63 -0
- package/dist/scip/ingestion.d.ts.map +1 -0
- package/dist/scip/ingestion.js +560 -0
- package/dist/scip/ingestion.js.map +1 -0
- package/dist/scip/kind-mapping.d.ts +119 -0
- package/dist/scip/kind-mapping.d.ts.map +1 -0
- package/dist/scip/kind-mapping.js +405 -0
- package/dist/scip/kind-mapping.js.map +1 -0
- package/dist/scip/proto/scip_pb.d.ts +420 -0
- package/dist/scip/proto/scip_pb.d.ts.map +1 -0
- package/dist/scip/proto/scip_pb.js +779 -0
- package/dist/scip/proto/scip_pb.js.map +1 -0
- package/dist/scip/scip-io-runner.d.ts +152 -0
- package/dist/scip/scip-io-runner.d.ts.map +1 -0
- package/dist/scip/scip-io-runner.js +870 -0
- package/dist/scip/scip-io-runner.js.map +1 -0
- package/dist/scip/symbol-matcher.d.ts +65 -0
- package/dist/scip/symbol-matcher.d.ts.map +1 -0
- package/dist/scip/symbol-matcher.js +198 -0
- package/dist/scip/symbol-matcher.js.map +1 -0
- package/dist/scip/types.d.ts +115 -0
- package/dist/scip/types.d.ts.map +1 -0
- package/dist/scip/types.js +2 -0
- package/dist/scip/types.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +12 -9
- package/dist/server.js.map +1 -1
- package/dist/services/card-builder.d.ts +7 -0
- package/dist/services/card-builder.d.ts.map +1 -1
- package/dist/services/card-builder.js +54 -7
- package/dist/services/card-builder.js.map +1 -1
- package/dist/services/summary.d.ts.map +1 -1
- package/dist/services/summary.js +5 -4
- package/dist/services/summary.js.map +1 -1
- package/dist/ts/mapping.d.ts +2 -13
- package/dist/ts/mapping.d.ts.map +1 -1
- package/dist/ts/mapping.js.map +1 -1
- package/dist/ui/graph.d.ts +2 -0
- package/dist/ui/graph.d.ts.map +1 -0
- package/dist/ui/graph.js +227 -0
- package/dist/ui/graph.js.map +1 -0
- package/dist/util/banner.d.ts +13 -0
- package/dist/util/banner.d.ts.map +1 -0
- package/dist/util/banner.js +33 -0
- package/dist/util/banner.js.map +1 -0
- package/dist/util/resolve-symbol-ref.d.ts +1 -0
- package/dist/util/resolve-symbol-ref.d.ts.map +1 -1
- package/dist/util/resolve-symbol-ref.js +15 -2
- package/dist/util/resolve-symbol-ref.js.map +1 -1
- package/dist/util/symbol-relevance.d.ts +30 -0
- package/dist/util/symbol-relevance.d.ts.map +1 -0
- package/dist/util/symbol-relevance.js +131 -0
- package/dist/util/symbol-relevance.js.map +1 -0
- package/dist/util/type-name.d.ts +12 -0
- package/dist/util/type-name.d.ts.map +1 -0
- package/dist/util/type-name.js +37 -0
- package/dist/util/type-name.js.map +1 -0
- package/package.json +8 -5
- package/templates/AGENTS.md.template +3 -3
- package/templates/CLAUDE.md.template +2 -2
- package/templates/CODEX.md.template +1 -1
- package/templates/GEMINI.md.template +1 -1
- package/templates/OPENCODE.md.template +1 -1
- package/dist/agent/index.d.ts +0 -9
- package/dist/agent/index.d.ts.map +0 -1
- package/dist/agent/index.js +0 -8
- package/dist/agent/index.js.map +0 -1
- package/dist/indexer/pass2/context.d.ts +0 -3
- package/dist/indexer/pass2/context.d.ts.map +0 -1
- package/dist/indexer/pass2/context.js +0 -4
- package/dist/indexer/pass2/context.js.map +0 -1
- package/dist/indexer/treesitter/types.d.ts +0 -19
- package/dist/indexer/treesitter/types.d.ts.map +0 -1
- package/dist/indexer/treesitter/types.js +0 -7
- package/dist/indexer/treesitter/types.js.map +0 -1
- package/dist/mcp/tools/summary.d.ts +0 -3
- package/dist/mcp/tools/summary.d.ts.map +0 -1
- package/dist/mcp/tools/summary.js +0 -35
- package/dist/mcp/tools/summary.js.map +0 -1
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
### **Cards-first code context for AI coding agents**
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
_Stop feeding entire files into the context window.<br/>Start giving agents exactly the code intelligence they need._
|
|
11
11
|
|
|
12
12
|
<br/>
|
|
13
13
|
|
|
@@ -19,10 +19,6 @@
|
|
|
19
19
|
|
|
20
20
|
---
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
22
|
<br/>
|
|
27
23
|
|
|
28
24
|
## What's the problem?
|
|
@@ -46,7 +42,7 @@ flowchart TD
|
|
|
46
42
|
Codebase["Your Codebase"]
|
|
47
43
|
Indexer["Indexer<br/>12 languages<br/>Rust native or Tree-sitter fallback"]
|
|
48
44
|
Graph["LadybugDB graph<br/>symbols, edges, metrics, versions"]
|
|
49
|
-
MCP["
|
|
45
|
+
MCP["38 unique MCP tool surfaces<br/>flat, gateway, and code-mode"]
|
|
50
46
|
CLI["13 CLI commands"]
|
|
51
47
|
HTTP["HTTP API and graph UI"]
|
|
52
48
|
Agent["AI coding agent<br/>Claude Code, Claude Desktop, Cursor, Windsurf, Codex, Gemini"]
|
|
@@ -109,13 +105,14 @@ flowchart TB
|
|
|
109
105
|
|
|
110
106
|
> **Most questions are answered at Rungs 1-2** without ever reading raw code. That's where the token savings come from.
|
|
111
107
|
|
|
112
|
-
| Scenario
|
|
113
|
-
|
|
114
|
-
| "What does `parseConfig` accept?"
|
|
115
|
-
| "Show me the shape of `AuthService`" |
|
|
116
|
-
| "Where is `this.cache` set?"
|
|
108
|
+
| Scenario | Reading the file | Using the Ladder | Savings |
|
|
109
|
+
| :----------------------------------- | :--------------: | :--------------: | :-----: |
|
|
110
|
+
| "What does `parseConfig` accept?" | ~2,000 tok | ~100 tok | **20x** |
|
|
111
|
+
| "Show me the shape of `AuthService`" | ~4,000 tok | ~300 tok | **13x** |
|
|
112
|
+
| "Where is `this.cache` set?" | ~2,000 tok | ~500 tok | **4x** |
|
|
117
113
|
|
|
118
114
|
**Why it matters:**
|
|
115
|
+
|
|
119
116
|
- **4–20x token savings** on typical code understanding queries
|
|
120
117
|
- Most questions answered at Rungs 1–2 without ever reading raw code
|
|
121
118
|
- Controlled escalation prevents agents from over-consuming context
|
|
@@ -133,7 +130,7 @@ flowchart TB
|
|
|
133
130
|
|
|
134
131
|
### Symbol Cards — The Atoms of Understanding
|
|
135
132
|
|
|
136
|
-
Every function, class, interface, type, and variable becomes a **Symbol Card**: a compact metadata record (~100 tokens) containing everything an agent needs to
|
|
133
|
+
Every function, class, interface, type, and variable becomes a **Symbol Card**: a compact metadata record (~100 tokens) containing everything an agent needs to _understand_ a symbol without reading its code.
|
|
137
134
|
|
|
138
135
|
```mermaid
|
|
139
136
|
flowchart TB
|
|
@@ -155,6 +152,7 @@ flowchart TB
|
|
|
155
152
|
Cards include **confidence-scored call resolution** (the pass-2 resolver traces imports, aliases, barrel re-exports, and tagged templates to produce accurate dependency edges), **community detection** (cluster membership), and **call-chain tracing** (process participation with entry/intermediate/exit roles).
|
|
156
153
|
|
|
157
154
|
**Why it matters:**
|
|
155
|
+
|
|
158
156
|
- **~100 tokens per symbol** vs. ~2,000 tokens to read the full file
|
|
159
157
|
- Confidence-scored dependency edges trace real call relationships across files
|
|
160
158
|
- Community detection and call-chain tracing reveal architectural structure
|
|
@@ -167,7 +165,7 @@ Cards include **confidence-scored call resolution** (the pass-2 resolver traces
|
|
|
167
165
|
|
|
168
166
|
### Graph Slicing — The Right Context for Every Task
|
|
169
167
|
|
|
170
|
-
Instead of reading files in the same directory, SDL-MCP follows the
|
|
168
|
+
Instead of reading files in the same directory, SDL-MCP follows the _dependency graph_. Starting from symbols relevant to your task, it traverses weighted edges (call: 1.0, config: 0.8, import: 0.6), scores each symbol by relevance, and returns the N most important within a token budget.
|
|
171
169
|
|
|
172
170
|
```mermaid
|
|
173
171
|
flowchart TD
|
|
@@ -184,6 +182,7 @@ flowchart TD
|
|
|
184
182
|
Slices have handles, leases, refresh (delta-only updates), and spillover (paged overflow). You can also skip the symbol search entirely — pass a `taskText` string and SDL-MCP auto-discovers the relevant entry symbols.
|
|
185
183
|
|
|
186
184
|
**Why it matters:**
|
|
185
|
+
|
|
187
186
|
- Follows the **dependency graph**, not directory boundaries, for cross-cutting context
|
|
188
187
|
- Weighted edge scoring (call > config > import) prioritizes the most relevant symbols
|
|
189
188
|
- Token-budgeted: returns only what fits within your budget (~800 tokens vs. ~16,000 for raw files)
|
|
@@ -195,7 +194,7 @@ Slices have handles, leases, refresh (delta-only updates), and spillover (paged
|
|
|
195
194
|
|
|
196
195
|
### Delta Packs & Blast Radius — Semantic Change Intelligence
|
|
197
196
|
|
|
198
|
-
`git diff` tells you what lines changed. SDL-MCP tells you what that change
|
|
197
|
+
`git diff` tells you what lines changed. SDL-MCP tells you what that change _means_ and who's affected.
|
|
199
198
|
|
|
200
199
|
```mermaid
|
|
201
200
|
flowchart TD
|
|
@@ -224,6 +223,7 @@ flowchart TD
|
|
|
224
223
|
**PR risk analysis** (`sdl.pr.risk.analyze`) wraps this into a scored assessment with findings, evidence, and test recommendations. **Fan-in trend analysis** detects "amplifier" symbols whose growing dependency count means changes ripple further over time.
|
|
225
224
|
|
|
226
225
|
**Why it matters:**
|
|
226
|
+
|
|
227
227
|
- Semantic diffs show what a change **means**, not just what lines moved
|
|
228
228
|
- Ranked blast radius identifies which dependent symbols are most at risk
|
|
229
229
|
- Fan-in trend analysis detects "amplifier" symbols whose changes ripple further over time
|
|
@@ -235,7 +235,7 @@ flowchart TD
|
|
|
235
235
|
|
|
236
236
|
### Live Indexing — Real-Time Code Intelligence
|
|
237
237
|
|
|
238
|
-
SDL-MCP doesn't wait for you to save. As you type in your editor, buffer updates are pushed to an in-memory overlay store, parsed in the background, and merged with the durable database. Search, cards, and slices reflect your
|
|
238
|
+
SDL-MCP doesn't wait for you to save. As you type in your editor, buffer updates are pushed to an in-memory overlay store, parsed in the background, and merged with the durable database. Search, cards, and slices reflect your _current_ code, not your last save.
|
|
239
239
|
|
|
240
240
|
```mermaid
|
|
241
241
|
flowchart LR
|
|
@@ -247,6 +247,7 @@ flowchart LR
|
|
|
247
247
|
```
|
|
248
248
|
|
|
249
249
|
**Why it matters:**
|
|
250
|
+
|
|
250
251
|
- Search, cards, and slices reflect **unsaved editor changes** in real time
|
|
251
252
|
- No manual re-index needed during active development
|
|
252
253
|
- Background AST parsing with in-memory overlay keeps queries fast
|
|
@@ -258,6 +259,7 @@ flowchart LR
|
|
|
258
259
|
### Governance & Policy — Controlled Access
|
|
259
260
|
|
|
260
261
|
Raw code access (Rung 4) is **policy-gated**. Agents must provide:
|
|
262
|
+
|
|
261
263
|
- A **reason** explaining why they need raw code
|
|
262
264
|
- **Identifiers** they expect to find in the code
|
|
263
265
|
- An **expected line count** within configured limits
|
|
@@ -267,6 +269,7 @@ Requests that don't meet policy are denied with actionable guidance ("try `getHo
|
|
|
267
269
|
The sandboxed runtime execution tool (`sdl.runtime.execute`) has its own governance layer: enabled by default, but still guarded by executable allowlisting, CWD jailing, environment scrubbing, concurrency limits, and timeout enforcement. The `outputMode` parameter (`"minimal"` | `"summary"` | `"intent"`) defaults to `"minimal"` for ~95% token savings, with `sdl.runtime.queryOutput` enabling on-demand output retrieval when needed.
|
|
268
270
|
|
|
269
271
|
**Why it matters:**
|
|
272
|
+
|
|
270
273
|
- Proof-of-need gating prevents agents from wastefully reading raw code
|
|
271
274
|
- Denied requests include **actionable next-best-action** guidance
|
|
272
275
|
- Full audit logging of every code access decision
|
|
@@ -278,13 +281,14 @@ The sandboxed runtime execution tool (`sdl.runtime.execute`) has its own governa
|
|
|
278
281
|
|
|
279
282
|
### Agent Context — Task-Shaped Retrieval
|
|
280
283
|
|
|
281
|
-
`sdl.
|
|
284
|
+
`sdl.context` is SDL-MCP's task-shaped context engine. Give it a task type (`debug`, `review`, `implement`, `explain`), a description, and a budget — it selects the right Iris Gate rungs, collects evidence, and returns context tuned to the job. In Code Mode, `sdl.context` provides the same retrieval surface without dropping into `sdl.workflow`.
|
|
282
285
|
|
|
283
286
|
The feedback loop (`sdl.agent.feedback`) records which symbols were useful and which were missing, improving future slice quality.
|
|
284
287
|
|
|
285
|
-
|
|
288
|
+
generates portable, token-bounded context briefings in markdown, JSON, or clipboard format for use outside MCP environments.
|
|
286
289
|
|
|
287
290
|
**Why it matters:**
|
|
291
|
+
|
|
288
292
|
- Task-shaped context retrieval plans the **right Iris Gate path** within a token budget
|
|
289
293
|
- Feedback loop records what was useful/missing, improving future slice quality
|
|
290
294
|
- Portable context summaries export findings for use outside MCP environments
|
|
@@ -298,6 +302,7 @@ The feedback loop (`sdl.agent.feedback`) records which symbols were useful and w
|
|
|
298
302
|
Run tests, linters, and scripts through SDL-MCP's governance layer instead of uncontrolled shell access. 16 runtimes (Node.js, Python, Go, Java, Rust, Shell, and more), code-mode or args-mode, smart output summarization with keyword-matched excerpts, and gzip artifact persistence.
|
|
299
303
|
|
|
300
304
|
**Why it matters:**
|
|
305
|
+
|
|
301
306
|
- Run tests, linters, and scripts **under governance** instead of uncontrolled shell access
|
|
302
307
|
- 16 runtimes supported (Node, Python, Go, Java, Rust, Shell, and more)
|
|
303
308
|
- Executable allowlisting, CWD jailing, timeout enforcement, and environment scrubbing
|
|
@@ -326,6 +331,7 @@ flowchart LR
|
|
|
326
331
|
When enabled, memories are **automatically surfaced** inside graph slices — when an agent builds a slice touching symbols with linked memories, those memories appear alongside the cards. During re-indexing, memories linked to changed symbols are **flagged as stale**, prompting agents to review and update them. Four MCP tools (`store`, `query`, `remove`, `surface`) provide full CRUD plus intelligent ranking by confidence, recency, and symbol overlap. Memory tools are only available when memory is enabled in the configuration.
|
|
327
332
|
|
|
328
333
|
**Why it matters:**
|
|
334
|
+
|
|
329
335
|
- Structured knowledge **persists across sessions**, linked directly to symbols and files
|
|
330
336
|
- Opt-in and disabled by default — enable via `"memory": { "enabled": true }` in config
|
|
331
337
|
- When enabled, automatically surfaced inside graph slices when touching related symbols
|
|
@@ -336,6 +342,31 @@ When enabled, memories are **automatically surfaced** inside graph slices — wh
|
|
|
336
342
|
|
|
337
343
|
---
|
|
338
344
|
|
|
345
|
+
### SCIP Integration — Compiler-Grade Cross-References
|
|
346
|
+
|
|
347
|
+
Tree-sitter gives SDL-MCP fast, syntax-level symbol extraction across 11 languages. SCIP (Source Code Intelligence Protocol) supplements this with **compiler-grade cross-references** from tools like scip-typescript, scip-go, and rust-analyzer. Generate a `.scip` index file, point SDL-MCP at it, and heuristic edges are upgraded to exact compiler-verified edges, external dependency symbols become first-class graph nodes, and new `implements` edges reveal interface/trait relationships that syntax analysis cannot discover.
|
|
348
|
+
|
|
349
|
+
```mermaid
|
|
350
|
+
flowchart LR
|
|
351
|
+
Compiler["Compiler / Type Checker"] --> SCIP[".scip index file"]
|
|
352
|
+
SCIP --> Ingest["sdl.scip.ingest"]
|
|
353
|
+
Ingest --> Upgrade["Heuristic edges → exact edges"]
|
|
354
|
+
Ingest --> External["External dependency nodes"]
|
|
355
|
+
Ingest --> Implements["implements edges"]
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
**Why it matters:**
|
|
359
|
+
|
|
360
|
+
- Upgrades heuristic call resolution to **compiler-verified exact edges** (confidence 0.95)
|
|
361
|
+
- External dependencies (npm packages, Go modules, crate deps) become searchable graph nodes
|
|
362
|
+
- Interface/trait implementations tracked via `implements` edges
|
|
363
|
+
- Auto-ingest on `sdl.index.refresh` keeps SCIP data current with zero manual steps
|
|
364
|
+
- Complementary: tree-sitter provides structure, SCIP provides semantic precision
|
|
365
|
+
|
|
366
|
+
[SCIP Integration Deep Dive →](./docs/feature-deep-dives/scip-integration.md)
|
|
367
|
+
|
|
368
|
+
---
|
|
369
|
+
|
|
339
370
|
### CLI Tool Access — No MCP Server Required
|
|
340
371
|
|
|
341
372
|
Access all 32 flat SDL action tools directly from the command line with `sdl-mcp tool`. No MCP server, transport, or SDK is required.
|
|
@@ -354,6 +385,7 @@ echo '{"repoId":"my-repo"}' | sdl-mcp tool symbol.search --query "auth"
|
|
|
354
385
|
Features include typed argument coercion (string, number, boolean, string[], json), budget flag merging, stdin JSON piping with CLI-flags-win precedence, auto-resolved `repoId` from cwd, four output formats (json, json-compact, pretty, table), typo suggestions, and per-action `--help`. The CLI dispatches through the same gateway router and Zod schemas as the MCP server — identical code paths, identical validation.
|
|
355
386
|
|
|
356
387
|
**Why it matters:**
|
|
388
|
+
|
|
357
389
|
- All MCP tool actions accessible from **any terminal** — no server, transport, or SDK required
|
|
358
390
|
- Same code paths and Zod validation as the MCP server — identical behavior
|
|
359
391
|
- Four output formats (json, json-compact, pretty, table) for scripting and CI pipelines
|
|
@@ -376,6 +408,7 @@ flowchart LR
|
|
|
376
408
|
Each gateway tool accepts an `action` discriminator field (e.g., `{ action: "symbol.search", repoId: "x", query: "auth" }`) and routes to the same handlers with double Zod validation. Thin wire schemas in `tools/list` keep the registration compact while full validation happens server-side. Legacy flat tool names are optionally emitted alongside for backward compatibility.
|
|
377
409
|
|
|
378
410
|
**Why it matters:**
|
|
411
|
+
|
|
379
412
|
- Large reduction in `tools/list` overhead for gateway-first agents
|
|
380
413
|
- 32 flat action tools consolidated into 4 namespace-scoped tools for simpler agent selection
|
|
381
414
|
- Fewer tool choices means faster and more accurate tool dispatch by the agent
|
|
@@ -389,7 +422,7 @@ Each gateway tool accepts an `action` discriminator field (e.g., `{ action: "sym
|
|
|
389
422
|
|
|
390
423
|
<br/>
|
|
391
424
|
|
|
392
|
-
## All
|
|
425
|
+
## All 38 Unique Tool Surfaces at a Glance
|
|
393
426
|
|
|
394
427
|
<table>
|
|
395
428
|
<tr><th>Category</th><th>Tool</th><th>One-Line Description</th></tr>
|
|
@@ -407,7 +440,7 @@ Each gateway tool accepts an `action` discriminator field (e.g., `{ action: "sym
|
|
|
407
440
|
<tr><td rowspan="3"><strong>Symbols</strong></td>
|
|
408
441
|
<td><code>sdl.symbol.search</code></td><td>Search symbols by name (with optional semantic reranking)</td></tr>
|
|
409
442
|
<tr><td><code>sdl.symbol.getCard</code></td><td>Get a symbol card with ETag-based conditional support</td></tr>
|
|
410
|
-
<tr><td><code>sdl.symbol.
|
|
443
|
+
<tr><td><code>sdl.symbol.getCard</code></td><td>Batch-fetch up to 100 cards in one round trip</td></tr>
|
|
411
444
|
|
|
412
445
|
<tr><td rowspan="3"><strong>Slices</strong></td>
|
|
413
446
|
<td><code>sdl.slice.build</code></td><td>Build a task-scoped dependency subgraph</td></tr>
|
|
@@ -430,10 +463,10 @@ Each gateway tool accepts an `action` discriminator field (e.g., `{ action: "sym
|
|
|
430
463
|
<td><code>sdl.pr.risk.analyze</code></td><td>Scored PR risk with findings and test recommendations</td></tr>
|
|
431
464
|
|
|
432
465
|
<tr><td><strong>Context</strong></td>
|
|
433
|
-
<td><code
|
|
466
|
+
<td><code></code></td><td>Token-bounded portable briefing (markdown/JSON/clipboard) with conditional ETag fetch support</td></tr>
|
|
434
467
|
|
|
435
468
|
<tr><td rowspan="3"><strong>Agent</strong></td>
|
|
436
|
-
<td><code>sdl.
|
|
469
|
+
<td><code>sdl.context</code></td><td>Task-shaped context retrieval with budget-controlled rung planning and conditional ETag fetch support</td></tr>
|
|
437
470
|
<tr><td><code>sdl.agent.feedback</code></td><td>Record which symbols were useful or missing</td></tr>
|
|
438
471
|
<tr><td><code>sdl.agent.feedback.query</code></td><td>Query aggregated feedback statistics</td></tr>
|
|
439
472
|
|
|
@@ -452,6 +485,12 @@ Each gateway tool accepts an `action` discriminator field (e.g., `{ action: "sym
|
|
|
452
485
|
<tr><td><code>sdl.workflow</code></td><td>Multi-step operations with budget tracking, ETag caching, and transforms</td></tr>
|
|
453
486
|
<tr><td><code>sdl.manual</code></td><td>Self-documentation — query usage guide, action schemas, output format reference</td></tr>
|
|
454
487
|
|
|
488
|
+
<tr><td><strong>SCIP</strong></td>
|
|
489
|
+
<td><code>sdl.scip.ingest</code></td><td>Ingest a pre-built SCIP index for compiler-grade cross-references (with dry-run support)</td></tr>
|
|
490
|
+
|
|
491
|
+
<tr><td><strong>File</strong></td>
|
|
492
|
+
<td><code>sdl.file.read</code></td><td>Read non-indexed files (configs, docs, templates) with line-range, search, or JSON-path modes</td></tr>
|
|
493
|
+
|
|
455
494
|
<tr><td rowspan="3"><strong>Meta</strong></td>
|
|
456
495
|
<td><code>sdl.info</code></td><td>Runtime diagnostics — version, Node.js, platform, database, config paths</td></tr>
|
|
457
496
|
<tr><td><code>sdl.usage.stats</code></td><td>Session and lifetime token savings statistics</td></tr>
|
|
@@ -468,21 +507,21 @@ Each gateway tool accepts an `action` discriminator field (e.g., `{ action: "sym
|
|
|
468
507
|
|
|
469
508
|
## CLI Commands
|
|
470
509
|
|
|
471
|
-
| Command
|
|
472
|
-
|
|
473
|
-
| `sdl-mcp init`
|
|
474
|
-
| `sdl-mcp doctor`
|
|
475
|
-
| `sdl-mcp index`
|
|
476
|
-
| `sdl-mcp serve`
|
|
477
|
-
| `sdl-mcp tool`
|
|
478
|
-
| `sdl-mcp info`
|
|
479
|
-
| `sdl-mcp summary`
|
|
480
|
-
| `sdl-mcp health`
|
|
481
|
-
| `sdl-mcp benchmark` | Run CI regression benchmarks
|
|
482
|
-
| `sdl-mcp export`
|
|
483
|
-
| `sdl-mcp import`
|
|
484
|
-
| `sdl-mcp pull`
|
|
485
|
-
| `sdl-mcp version`
|
|
510
|
+
| Command | Description |
|
|
511
|
+
| :------------------ | :--------------------------------------------------------------------------------------------- |
|
|
512
|
+
| `sdl-mcp init` | Bootstrap config, detect repo/languages, optionally auto-index |
|
|
513
|
+
| `sdl-mcp doctor` | Validate runtime, config, DB, grammars, repo access |
|
|
514
|
+
| `sdl-mcp index` | Index repositories (with optional `--watch` mode) |
|
|
515
|
+
| `sdl-mcp serve` | Start MCP server (`--stdio` or `--http`) |
|
|
516
|
+
| `sdl-mcp tool` | Access all 35 MCP tool actions directly ([docs](./docs/feature-deep-dives/cli-tool-access.md)) |
|
|
517
|
+
| `sdl-mcp info` | Runtime diagnostics — version, Node.js, platform, database, config |
|
|
518
|
+
| `sdl-mcp summary` | Generate copy/paste context summaries from the CLI |
|
|
519
|
+
| `sdl-mcp health` | Compute composite health score with badge/JSON output |
|
|
520
|
+
| `sdl-mcp benchmark` | Run CI regression benchmarks |
|
|
521
|
+
| `sdl-mcp export` | Export sync artifact |
|
|
522
|
+
| `sdl-mcp import` | Import sync artifact |
|
|
523
|
+
| `sdl-mcp pull` | Pull by version/commit with fallback |
|
|
524
|
+
| `sdl-mcp version` | Show version and environment info |
|
|
486
525
|
|
|
487
526
|
[CLI Reference →](./docs/cli-reference.md) · [Configuration Reference →](./docs/configuration-reference.md)
|
|
488
527
|
|
|
@@ -496,15 +535,15 @@ Each gateway tool accepts an `action` discriminator field (e.g., `{ action: "sym
|
|
|
496
535
|
|
|
497
536
|
SDL-MCP works with any MCP-compatible client:
|
|
498
537
|
|
|
499
|
-
| Client
|
|
500
|
-
|
|
501
|
-
| **Claude Code**
|
|
502
|
-
| **Claude Desktop** | stdio
|
|
503
|
-
| **Cursor**
|
|
504
|
-
| **Windsurf**
|
|
505
|
-
| **Codex CLI**
|
|
506
|
-
| **Gemini CLI**
|
|
507
|
-
| **OpenCode**
|
|
538
|
+
| Client | Transport | Setup |
|
|
539
|
+
| :----------------- | :----------- | :---------------------------------- |
|
|
540
|
+
| **Claude Code** | stdio | `sdl-mcp init --client claude-code` |
|
|
541
|
+
| **Claude Desktop** | stdio | `sdl-mcp init --client claude-code` |
|
|
542
|
+
| **Cursor** | stdio | Standard MCP server config |
|
|
543
|
+
| **Windsurf** | stdio | Standard MCP server config |
|
|
544
|
+
| **Codex CLI** | stdio | `sdl-mcp init --client codex` |
|
|
545
|
+
| **Gemini CLI** | stdio | `sdl-mcp init --client gemini` |
|
|
546
|
+
| **OpenCode** | stdio | `sdl-mcp init --client opencode` |
|
|
508
547
|
| **Any MCP client** | stdio / http | `sdl-mcp serve --stdio` or `--http` |
|
|
509
548
|
|
|
510
549
|
A **VSCode extension** (`sdl-mcp-vscode/`) provides live buffer integration for real-time indexing of unsaved edits.
|
|
@@ -517,15 +556,15 @@ A **VSCode extension** (`sdl-mcp-vscode/`) provides live buffer integration for
|
|
|
517
556
|
|
|
518
557
|
## Tech Stack
|
|
519
558
|
|
|
520
|
-
| Component
|
|
521
|
-
|
|
522
|
-
| Runtime
|
|
523
|
-
| Graph Database
|
|
524
|
-
| Indexer (default)
|
|
525
|
-
| Indexer (fallback) | tree-sitter + tree-sitter-typescript
|
|
526
|
-
| MCP SDK
|
|
527
|
-
| Validation
|
|
528
|
-
| Transports
|
|
559
|
+
| Component | Technology |
|
|
560
|
+
| :----------------- | :----------------------------------------- |
|
|
561
|
+
| Runtime | Node.js 24+ / TypeScript 5.9+ (strict ESM) |
|
|
562
|
+
| Graph Database | LadybugDB (embedded, single-file) |
|
|
563
|
+
| Indexer (default) | Rust via napi-rs (multi-threaded) |
|
|
564
|
+
| Indexer (fallback) | tree-sitter + tree-sitter-typescript |
|
|
565
|
+
| MCP SDK | @modelcontextprotocol/sdk |
|
|
566
|
+
| Validation | Zod schemas for all payloads |
|
|
567
|
+
| Transports | stdio (agents) · HTTP (dev/network) |
|
|
529
568
|
|
|
530
569
|
<br/>
|
|
531
570
|
|
|
@@ -562,37 +601,38 @@ flowchart TD
|
|
|
562
601
|
|
|
563
602
|
## Documentation
|
|
564
603
|
|
|
565
|
-
| Document
|
|
566
|
-
|
|
567
|
-
| [Getting Started](./docs/getting-started.md)
|
|
568
|
-
| [MCP Tools Reference](./docs/mcp-tools-detailed.md)
|
|
569
|
-
| [CLI Reference](./docs/cli-reference.md)
|
|
570
|
-
| [Configuration Reference](./docs/configuration-reference.md)
|
|
571
|
-
| [Agent Workflows](./docs/agent-workflows.md)
|
|
572
|
-
| [Architecture](./docs/architecture.md)
|
|
573
|
-
| [Iris Gate Ladder](./docs/feature-deep-dives/iris-gate-ladder.md) | Context escalation methodology
|
|
574
|
-
| [Troubleshooting](./docs/troubleshooting.md)
|
|
604
|
+
| Document | Description |
|
|
605
|
+
| :---------------------------------------------------------------- | :------------------------------------------------------------------------------ |
|
|
606
|
+
| [Getting Started](./docs/getting-started.md) | Installation, 5-minute setup, MCP client config |
|
|
607
|
+
| [MCP Tools Reference](./docs/mcp-tools-detailed.md) | Detailed docs for all 37 unique tool surfaces (parameters, responses, examples) |
|
|
608
|
+
| [CLI Reference](./docs/cli-reference.md) | All CLI commands and options |
|
|
609
|
+
| [Configuration Reference](./docs/configuration-reference.md) | Every config option with defaults and guidance |
|
|
610
|
+
| [Agent Workflows](./docs/agent-workflows.md) | Workflow instructions for CLAUDE.md / AGENTS.md |
|
|
611
|
+
| [Architecture](./docs/architecture.md) | Tech stack, data flow, component diagram |
|
|
612
|
+
| [Iris Gate Ladder](./docs/feature-deep-dives/iris-gate-ladder.md) | Context escalation methodology |
|
|
613
|
+
| [Troubleshooting](./docs/troubleshooting.md) | Common issues and fixes |
|
|
575
614
|
|
|
576
615
|
### Feature Deep Dives
|
|
577
616
|
|
|
578
|
-
| Topic
|
|
579
|
-
|
|
580
|
-
| [Iris Gate Ladder](./docs/feature-deep-dives/iris-gate-ladder.md)
|
|
581
|
-
| [Graph Slicing](./docs/feature-deep-dives/graph-slicing.md)
|
|
582
|
-
| [Delta & Blast Radius](./docs/feature-deep-dives/delta-blast-radius.md)
|
|
583
|
-
| [Live Indexing](./docs/feature-deep-dives/live-indexing.md)
|
|
584
|
-
| [Governance & Policy](./docs/feature-deep-dives/governance-policy.md)
|
|
585
|
-
| [Agent Context](./docs/feature-deep-dives/agent-context.md)
|
|
586
|
-
| [Context Modes](./docs/feature-deep-dives/context-modes.md)
|
|
587
|
-
| [Indexing & Languages](./docs/feature-deep-dives/indexing-languages.md)
|
|
588
|
-
| [Runtime Execution](./docs/feature-deep-dives/runtime-execution.md)
|
|
589
|
-
| [CLI Tool Access](./docs/feature-deep-dives/cli-tool-access.md)
|
|
590
|
-
| [Tool Gateway](./docs/feature-deep-dives/tool-gateway.md)
|
|
591
|
-
| [Semantic Engine](./docs/feature-deep-dives/semantic-engine.md)
|
|
592
|
-
| [Semantic Embeddings Setup](./docs/feature-deep-dives/semantic-embeddings-setup.md) | Dependencies, model installation, provider configuration, tier-by-tier setup
|
|
593
|
-
| [Code Mode](./docs/feature-deep-dives/code-mode.md)
|
|
594
|
-
| [Development Memories](./docs/feature-deep-dives/development-memories.md)
|
|
595
|
-
| [
|
|
617
|
+
| Topic | What You'll Learn |
|
|
618
|
+
| :---------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------ |
|
|
619
|
+
| [Iris Gate Ladder](./docs/feature-deep-dives/iris-gate-ladder.md) | Four-rung context escalation with token savings analysis |
|
|
620
|
+
| [Graph Slicing](./docs/feature-deep-dives/graph-slicing.md) | BFS/beam search, edge weights, wire formats, auto-discovery |
|
|
621
|
+
| [Delta & Blast Radius](./docs/feature-deep-dives/delta-blast-radius.md) | Semantic diffs, ranked impact analysis, PR risk scoring |
|
|
622
|
+
| [Live Indexing](./docs/feature-deep-dives/live-indexing.md) | Real-time editor buffer integration and overlay architecture |
|
|
623
|
+
| [Governance & Policy](./docs/feature-deep-dives/governance-policy.md) | Proof-of-need gating, audit logging, runtime sandboxing |
|
|
624
|
+
| [Agent Context](./docs/feature-deep-dives/agent-context.md) | Task-shaped context retrieval, feedback loops, portable context summaries |
|
|
625
|
+
| [Context Modes](./docs/feature-deep-dives/context-modes.md) | Precise vs broad retrieval, adaptive symbol ranking, benchmark trade-offs |
|
|
626
|
+
| [Indexing & Languages](./docs/feature-deep-dives/indexing-languages.md) | Rust/TS engines, two-pass architecture, 12-language support |
|
|
627
|
+
| [Runtime Execution](./docs/feature-deep-dives/runtime-execution.md) | Sandboxed subprocess execution with governance |
|
|
628
|
+
| [CLI Tool Access](./docs/feature-deep-dives/cli-tool-access.md) | Direct CLI access to all tool actions, output formats, stdin piping, scripting |
|
|
629
|
+
| [Tool Gateway](./docs/feature-deep-dives/tool-gateway.md) | 35→4 tool consolidation, token reduction, thin schemas, migration guide |
|
|
630
|
+
| [Semantic Engine](./docs/feature-deep-dives/semantic-engine.md) | Pass-2 call resolution, embedding search, LLM summaries, confidence scoring |
|
|
631
|
+
| [Semantic Embeddings Setup](./docs/feature-deep-dives/semantic-embeddings-setup.md) | Dependencies, model installation, provider configuration, tier-by-tier setup |
|
|
632
|
+
| [Code Mode](./docs/feature-deep-dives/code-mode.md) | `sdl.context`, `sdl.workflow`, action discovery, manual reference, one-call workflows |
|
|
633
|
+
| [Development Memories](./docs/feature-deep-dives/development-memories.md) | Graph-backed cross-session memory, file sync, staleness detection, auto-surfacing |
|
|
634
|
+
| [SCIP Integration](./docs/feature-deep-dives/scip-integration.md) | Compiler-grade cross-references, external deps, implements edges, auto-ingest |
|
|
635
|
+
| [Token Savings Meter](./docs/feature-deep-dives/token-savings-meter.md) | Per-call meter, session summaries, lifetime tracking, `sdl.usage.stats` |
|
|
596
636
|
|
|
597
637
|
<br/>
|
|
598
638
|
|
|
@@ -102,7 +102,7 @@
|
|
|
102
102
|
"semantic": {
|
|
103
103
|
"enabled": true,
|
|
104
104
|
"provider": "local",
|
|
105
|
-
"model": "
|
|
105
|
+
"model": "jina-embeddings-v2-base-code",
|
|
106
106
|
"modelCacheDir": null,
|
|
107
107
|
"generateSummaries": false,
|
|
108
108
|
"summaryProvider": null,
|
|
@@ -123,10 +123,11 @@
|
|
|
123
123
|
"vector": {
|
|
124
124
|
"enabled": true,
|
|
125
125
|
"topK": 75,
|
|
126
|
+
"efc": 200,
|
|
126
127
|
"efs": 200,
|
|
127
128
|
"indexes": {
|
|
128
|
-
"
|
|
129
|
-
"indexName": "
|
|
129
|
+
"jina-embeddings-v2-base-code": {
|
|
130
|
+
"indexName": "symbol_vec_jina_code_v2"
|
|
130
131
|
},
|
|
131
132
|
"nomic-embed-text-v1.5": {
|
|
132
133
|
"indexName": "symbol_vec_nomic_embed_v15"
|
|
@@ -166,12 +167,7 @@
|
|
|
166
167
|
},
|
|
167
168
|
"runtime": {
|
|
168
169
|
"enabled": true,
|
|
169
|
-
"allowedRuntimes": [
|
|
170
|
-
"node",
|
|
171
|
-
"typescript",
|
|
172
|
-
"python",
|
|
173
|
-
"shell"
|
|
174
|
-
],
|
|
170
|
+
"allowedRuntimes": ["node", "typescript", "python", "shell"],
|
|
175
171
|
"allowedExecutables": [],
|
|
176
172
|
"maxDurationMs": 30000,
|
|
177
173
|
"maxStdoutBytes": 1048576,
|
|
@@ -202,6 +198,28 @@
|
|
|
202
198
|
"security": {
|
|
203
199
|
"allowedRepoRoots": []
|
|
204
200
|
},
|
|
201
|
+
"scip": {
|
|
202
|
+
"enabled": false,
|
|
203
|
+
"indexes": [
|
|
204
|
+
{
|
|
205
|
+
"path": "index.scip",
|
|
206
|
+
"label": "typescript"
|
|
207
|
+
}
|
|
208
|
+
],
|
|
209
|
+
"externalSymbols": {
|
|
210
|
+
"enabled": true,
|
|
211
|
+
"maxPerIndex": 10000
|
|
212
|
+
},
|
|
213
|
+
"confidence": 0.95,
|
|
214
|
+
"autoIngestOnRefresh": true,
|
|
215
|
+
"generator": {
|
|
216
|
+
"enabled": false,
|
|
217
|
+
"binary": "scip-io",
|
|
218
|
+
"args": [],
|
|
219
|
+
"autoInstall": true,
|
|
220
|
+
"timeoutMs": 600000
|
|
221
|
+
}
|
|
222
|
+
},
|
|
205
223
|
"memory": {
|
|
206
224
|
"enabled": false
|
|
207
225
|
}
|
|
@@ -42,11 +42,7 @@
|
|
|
42
42
|
"**/*.test.ts",
|
|
43
43
|
"**/*.spec.ts"
|
|
44
44
|
],
|
|
45
|
-
"languages": [
|
|
46
|
-
"ts",
|
|
47
|
-
"tsx",
|
|
48
|
-
"js"
|
|
49
|
-
]
|
|
45
|
+
"languages": ["ts", "tsx", "js"]
|
|
50
46
|
},
|
|
51
47
|
{
|
|
52
48
|
"repoId": "preact-oss",
|
|
@@ -61,12 +57,7 @@
|
|
|
61
57
|
"**/*.test.tsx",
|
|
62
58
|
"**/*.spec.tsx"
|
|
63
59
|
],
|
|
64
|
-
"languages": [
|
|
65
|
-
"ts",
|
|
66
|
-
"tsx",
|
|
67
|
-
"js",
|
|
68
|
-
"jsx"
|
|
69
|
-
]
|
|
60
|
+
"languages": ["ts", "tsx", "js", "jsx"]
|
|
70
61
|
},
|
|
71
62
|
{
|
|
72
63
|
"repoId": "flask-oss",
|
|
@@ -81,9 +72,7 @@
|
|
|
81
72
|
"**/*.pyc",
|
|
82
73
|
"**/tests/**"
|
|
83
74
|
],
|
|
84
|
-
"languages": [
|
|
85
|
-
"py"
|
|
86
|
-
]
|
|
75
|
+
"languages": ["py"]
|
|
87
76
|
},
|
|
88
77
|
{
|
|
89
78
|
"repoId": "ansible-lint-oss",
|
|
@@ -100,10 +89,7 @@
|
|
|
100
89
|
"**/tests/**",
|
|
101
90
|
"**/.tox/**"
|
|
102
91
|
],
|
|
103
|
-
"languages": [
|
|
104
|
-
"py",
|
|
105
|
-
"sh"
|
|
106
|
-
]
|
|
92
|
+
"languages": ["py", "sh"]
|
|
107
93
|
}
|
|
108
94
|
],
|
|
109
95
|
"graphDatabase": {
|
|
@@ -145,7 +131,7 @@
|
|
|
145
131
|
"enabled": true,
|
|
146
132
|
"alpha": 0.6,
|
|
147
133
|
"provider": "mock",
|
|
148
|
-
"model": "
|
|
134
|
+
"model": "jina-embeddings-v2-base-code",
|
|
149
135
|
"generateSummaries": false
|
|
150
136
|
},
|
|
151
137
|
"prefetch": {
|