gitnexus 1.6.8-rc.9 → 1.6.8
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 +3 -3
- package/dist/_shared/graph/types.d.ts +31 -1
- package/dist/_shared/graph/types.d.ts.map +1 -1
- package/dist/_shared/language-detection.d.ts.map +1 -1
- package/dist/_shared/language-detection.js +11 -1
- package/dist/_shared/language-detection.js.map +1 -1
- package/dist/_shared/lbug/schema-constants.d.ts +1 -1
- package/dist/_shared/lbug/schema-constants.d.ts.map +1 -1
- package/dist/_shared/lbug/schema-constants.js +6 -0
- package/dist/_shared/lbug/schema-constants.js.map +1 -1
- package/dist/_shared/scope-resolution/parsed-file.d.ts +21 -0
- package/dist/_shared/scope-resolution/parsed-file.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/symbol-definition.d.ts +6 -0
- package/dist/_shared/scope-resolution/symbol-definition.d.ts.map +1 -1
- package/dist/cli/ai-context.d.ts +31 -1
- package/dist/cli/ai-context.js +18 -16
- package/dist/cli/analyze-config.js +11 -0
- package/dist/cli/analyze.d.ts +14 -0
- package/dist/cli/analyze.js +98 -0
- package/dist/cli/embedding-dims.d.ts +33 -0
- package/dist/cli/embedding-dims.js +39 -0
- package/dist/cli/eval-server.d.ts +8 -0
- package/dist/cli/eval-server.js +242 -2
- package/dist/cli/help-i18n.js +19 -0
- package/dist/cli/i18n/en.d.ts +15 -1
- package/dist/cli/i18n/en.js +15 -1
- package/dist/cli/i18n/resources.d.ts +29 -1
- package/dist/cli/i18n/zh-CN.d.ts +14 -0
- package/dist/cli/i18n/zh-CN.js +15 -1
- package/dist/cli/index.js +89 -1
- package/dist/cli/mcp.d.ts +6 -1
- package/dist/cli/mcp.js +26 -1
- package/dist/cli/optional-grammars.d.ts +6 -8
- package/dist/cli/optional-grammars.js +8 -11
- package/dist/cli/setup.d.ts +3 -1
- package/dist/cli/setup.js +67 -17
- package/dist/cli/skill-gen.js +2 -1
- package/dist/cli/tool.d.ts +19 -1
- package/dist/cli/tool.js +96 -3
- package/dist/core/embeddings/hf-env.d.ts +0 -66
- package/dist/core/embeddings/http-client.d.ts +7 -0
- package/dist/core/embeddings/http-client.js +5 -3
- package/dist/core/embeddings/server-mapping.d.ts +1 -1
- package/dist/core/embeddings/server-mapping.js +7 -3
- package/dist/core/graph/import-cycles.d.ts +10 -0
- package/dist/core/graph/import-cycles.js +103 -0
- package/dist/core/group/cross-impact.d.ts +2 -1
- package/dist/core/group/cross-impact.js +5 -1
- package/dist/core/group/extractors/grpc-patterns/proto.js +10 -6
- package/dist/core/group/extractors/http-patterns/kotlin.js +7 -7
- package/dist/core/group/extractors/http-route-extractor.d.ts +24 -0
- package/dist/core/group/extractors/http-route-extractor.js +22 -4
- package/dist/core/group/extractors/include-extractor.js +22 -13
- package/dist/core/group/sync.d.ts +27 -1
- package/dist/core/group/sync.js +0 -0
- package/dist/core/incremental/subgraph-extract.js +18 -1
- package/dist/core/ingestion/cfg/cfg-builder.d.ts +114 -0
- package/dist/core/ingestion/cfg/cfg-builder.js +196 -0
- package/dist/core/ingestion/cfg/collect.d.ts +51 -0
- package/dist/core/ingestion/cfg/collect.js +77 -0
- package/dist/core/ingestion/cfg/control-dependence.d.ts +58 -0
- package/dist/core/ingestion/cfg/control-dependence.js +182 -0
- package/dist/core/ingestion/cfg/control-flow-context.d.ts +106 -0
- package/dist/core/ingestion/cfg/control-flow-context.js +124 -0
- package/dist/core/ingestion/cfg/emit.d.ts +293 -0
- package/dist/core/ingestion/cfg/emit.js +646 -0
- package/dist/core/ingestion/cfg/post-dominators.d.ts +79 -0
- package/dist/core/ingestion/cfg/post-dominators.js +176 -0
- package/dist/core/ingestion/cfg/reaching-def-reason-codec.d.ts +106 -0
- package/dist/core/ingestion/cfg/reaching-def-reason-codec.js +133 -0
- package/dist/core/ingestion/cfg/reaching-defs-graph.d.ts +18 -0
- package/dist/core/ingestion/cfg/reaching-defs-graph.js +312 -0
- package/dist/core/ingestion/cfg/reaching-defs.d.ts +162 -0
- package/dist/core/ingestion/cfg/reaching-defs.js +785 -0
- package/dist/core/ingestion/cfg/synthetic-escape.d.ts +124 -0
- package/dist/core/ingestion/cfg/synthetic-escape.js +300 -0
- package/dist/core/ingestion/cfg/traversal-result.d.ts +20 -0
- package/dist/core/ingestion/cfg/traversal-result.js +2 -0
- package/dist/core/ingestion/cfg/types.d.ts +274 -0
- package/dist/core/ingestion/cfg/types.js +13 -0
- package/dist/core/ingestion/cfg/visitors/c-cpp-harvest.d.ts +111 -0
- package/dist/core/ingestion/cfg/visitors/c-cpp-harvest.js +541 -0
- package/dist/core/ingestion/cfg/visitors/c-cpp.d.ts +74 -0
- package/dist/core/ingestion/cfg/visitors/c-cpp.js +584 -0
- package/dist/core/ingestion/cfg/visitors/call-site-harvest.d.ts +195 -0
- package/dist/core/ingestion/cfg/visitors/call-site-harvest.js +350 -0
- package/dist/core/ingestion/cfg/visitors/csharp-harvest.d.ts +124 -0
- package/dist/core/ingestion/cfg/visitors/csharp-harvest.js +589 -0
- package/dist/core/ingestion/cfg/visitors/csharp.d.ts +87 -0
- package/dist/core/ingestion/cfg/visitors/csharp.js +867 -0
- package/dist/core/ingestion/cfg/visitors/dart-harvest.d.ts +278 -0
- package/dist/core/ingestion/cfg/visitors/dart-harvest.js +870 -0
- package/dist/core/ingestion/cfg/visitors/dart.d.ts +119 -0
- package/dist/core/ingestion/cfg/visitors/dart.js +836 -0
- package/dist/core/ingestion/cfg/visitors/go-harvest.d.ts +160 -0
- package/dist/core/ingestion/cfg/visitors/go-harvest.js +621 -0
- package/dist/core/ingestion/cfg/visitors/go.d.ts +108 -0
- package/dist/core/ingestion/cfg/visitors/go.js +638 -0
- package/dist/core/ingestion/cfg/visitors/java-harvest.d.ts +108 -0
- package/dist/core/ingestion/cfg/visitors/java-harvest.js +513 -0
- package/dist/core/ingestion/cfg/visitors/java.d.ts +101 -0
- package/dist/core/ingestion/cfg/visitors/java.js +812 -0
- package/dist/core/ingestion/cfg/visitors/kotlin-harvest.d.ts +253 -0
- package/dist/core/ingestion/cfg/visitors/kotlin-harvest.js +719 -0
- package/dist/core/ingestion/cfg/visitors/kotlin.d.ts +121 -0
- package/dist/core/ingestion/cfg/visitors/kotlin.js +809 -0
- package/dist/core/ingestion/cfg/visitors/php-harvest.d.ts +172 -0
- package/dist/core/ingestion/cfg/visitors/php-harvest.js +626 -0
- package/dist/core/ingestion/cfg/visitors/php.d.ts +96 -0
- package/dist/core/ingestion/cfg/visitors/php.js +721 -0
- package/dist/core/ingestion/cfg/visitors/python-harvest.d.ts +212 -0
- package/dist/core/ingestion/cfg/visitors/python-harvest.js +739 -0
- package/dist/core/ingestion/cfg/visitors/python.d.ts +103 -0
- package/dist/core/ingestion/cfg/visitors/python.js +558 -0
- package/dist/core/ingestion/cfg/visitors/ruby-harvest.d.ts +223 -0
- package/dist/core/ingestion/cfg/visitors/ruby-harvest.js +587 -0
- package/dist/core/ingestion/cfg/visitors/ruby.d.ts +112 -0
- package/dist/core/ingestion/cfg/visitors/ruby.js +756 -0
- package/dist/core/ingestion/cfg/visitors/rust-harvest.d.ts +324 -0
- package/dist/core/ingestion/cfg/visitors/rust-harvest.js +873 -0
- package/dist/core/ingestion/cfg/visitors/rust.d.ts +95 -0
- package/dist/core/ingestion/cfg/visitors/rust.js +558 -0
- package/dist/core/ingestion/cfg/visitors/scope-tree-harvest.d.ts +87 -0
- package/dist/core/ingestion/cfg/visitors/scope-tree-harvest.js +116 -0
- package/dist/core/ingestion/cfg/visitors/swift-harvest.d.ts +255 -0
- package/dist/core/ingestion/cfg/visitors/swift-harvest.js +679 -0
- package/dist/core/ingestion/cfg/visitors/swift.d.ts +116 -0
- package/dist/core/ingestion/cfg/visitors/swift.js +787 -0
- package/dist/core/ingestion/cfg/visitors/typescript-harvest.d.ts +149 -0
- package/dist/core/ingestion/cfg/visitors/typescript-harvest.js +1056 -0
- package/dist/core/ingestion/cfg/visitors/typescript.d.ts +66 -0
- package/dist/core/ingestion/cfg/visitors/typescript.js +583 -0
- package/dist/core/ingestion/import-resolvers/utils.js +2 -0
- package/dist/core/ingestion/language-provider.d.ts +11 -0
- package/dist/core/ingestion/languages/c-cpp.js +6 -1
- package/dist/core/ingestion/languages/cobol.js +4 -0
- package/dist/core/ingestion/languages/cpp/arity-metadata.js +41 -2
- package/dist/core/ingestion/languages/cpp/captures.js +50 -1
- package/dist/core/ingestion/languages/cpp/conversion-rank.d.ts +2 -0
- package/dist/core/ingestion/languages/cpp/conversion-rank.js +89 -0
- package/dist/core/ingestion/languages/cpp/header-scan.d.ts +1 -1
- package/dist/core/ingestion/languages/cpp/header-scan.js +2 -2
- package/dist/core/ingestion/languages/cpp/inline-namespaces.js +7 -2
- package/dist/core/ingestion/languages/cpp/member-lookup.js +2 -1
- package/dist/core/ingestion/languages/cpp/query.js +23 -0
- package/dist/core/ingestion/languages/cpp/scope-resolver.js +2 -1
- package/dist/core/ingestion/languages/csharp.js +2 -0
- package/dist/core/ingestion/languages/dart.js +2 -0
- package/dist/core/ingestion/languages/go.js +2 -0
- package/dist/core/ingestion/languages/java.js +3 -0
- package/dist/core/ingestion/languages/kotlin/query.js +3 -2
- package/dist/core/ingestion/languages/kotlin.js +3 -0
- package/dist/core/ingestion/languages/php.js +2 -0
- package/dist/core/ingestion/languages/python.js +2 -0
- package/dist/core/ingestion/languages/ruby.js +2 -0
- package/dist/core/ingestion/languages/rust.js +2 -0
- package/dist/core/ingestion/languages/swift.js +2 -0
- package/dist/core/ingestion/languages/typescript.js +5 -0
- package/dist/core/ingestion/languages/vue.js +6 -0
- package/dist/core/ingestion/method-extractors/configs/c-cpp.js +6 -13
- package/dist/core/ingestion/method-extractors/generic.js +1 -0
- package/dist/core/ingestion/method-types.d.ts +2 -0
- package/dist/core/ingestion/model/symbol-table.d.ts +1 -0
- package/dist/core/ingestion/model/symbol-table.js +1 -0
- package/dist/core/ingestion/mro-processor.js +109 -0
- package/dist/core/ingestion/parsing-processor.js +23 -0
- package/dist/core/ingestion/pipeline-phases/call-summaries.d.ts +26 -0
- package/dist/core/ingestion/pipeline-phases/call-summaries.js +46 -0
- package/dist/core/ingestion/pipeline-phases/index.d.ts +2 -0
- package/dist/core/ingestion/pipeline-phases/index.js +2 -0
- package/dist/core/ingestion/pipeline-phases/parse-impl.d.ts +0 -21
- package/dist/core/ingestion/pipeline-phases/parse-impl.js +18 -1
- package/dist/core/ingestion/pipeline-phases/routes.d.ts +10 -0
- package/dist/core/ingestion/pipeline-phases/routes.js +30 -1
- package/dist/core/ingestion/pipeline-phases/taint-summaries.d.ts +30 -0
- package/dist/core/ingestion/pipeline-phases/taint-summaries.js +81 -0
- package/dist/core/ingestion/pipeline.d.ts +92 -10
- package/dist/core/ingestion/pipeline.js +11 -2
- package/dist/core/ingestion/scope-extractor.js +12 -2
- package/dist/core/ingestion/scope-resolution/contract/scope-resolver.d.ts +9 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.d.ts +75 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.js +67 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/edges.d.ts +12 -2
- package/dist/core/ingestion/scope-resolution/graph-bridge/edges.js +14 -2
- package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.d.ts +6 -1
- package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +13 -1
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.d.ts +9 -1
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.js +28 -2
- package/dist/core/ingestion/scope-resolution/passes/overload-narrowing.d.ts +4 -0
- package/dist/core/ingestion/scope-resolution/passes/overload-narrowing.js +9 -0
- package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.d.ts +6 -1
- package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +174 -40
- package/dist/core/ingestion/scope-resolution/pipeline/phase.d.ts +24 -0
- package/dist/core/ingestion/scope-resolution/pipeline/phase.js +276 -190
- package/dist/core/ingestion/scope-resolution/pipeline/reconcile-ownership.js +43 -3
- package/dist/core/ingestion/scope-resolution/pipeline/run.d.ts +75 -0
- package/dist/core/ingestion/scope-resolution/pipeline/run.js +349 -1
- package/dist/core/ingestion/scope-resolution/resolution-outcome.d.ts +1 -1
- package/dist/core/ingestion/taint/call-summary-codec.d.ts +75 -0
- package/dist/core/ingestion/taint/call-summary-codec.js +128 -0
- package/dist/core/ingestion/taint/call-summary-emit.d.ts +43 -0
- package/dist/core/ingestion/taint/call-summary-emit.js +70 -0
- package/dist/core/ingestion/taint/call-summary-harvest.d.ts +77 -0
- package/dist/core/ingestion/taint/call-summary-harvest.js +179 -0
- package/dist/core/ingestion/taint/call-summary-model.d.ts +47 -0
- package/dist/core/ingestion/taint/call-summary-model.js +25 -0
- package/dist/core/ingestion/taint/emit.d.ts +125 -0
- package/dist/core/ingestion/taint/emit.js +208 -0
- package/dist/core/ingestion/taint/interproc-emit.d.ts +50 -0
- package/dist/core/ingestion/taint/interproc-emit.js +88 -0
- package/dist/core/ingestion/taint/interproc-solver.d.ts +110 -0
- package/dist/core/ingestion/taint/interproc-solver.js +312 -0
- package/dist/core/ingestion/taint/match.d.ts +153 -0
- package/dist/core/ingestion/taint/match.js +278 -0
- package/dist/core/ingestion/taint/path-codec.d.ts +134 -0
- package/dist/core/ingestion/taint/path-codec.js +190 -0
- package/dist/core/ingestion/taint/propagate.d.ts +216 -0
- package/dist/core/ingestion/taint/propagate.js +659 -0
- package/dist/core/ingestion/taint/site-safety.d.ts +29 -0
- package/dist/core/ingestion/taint/site-safety.js +98 -0
- package/dist/core/ingestion/taint/source-sink-config.d.ts +107 -23
- package/dist/core/ingestion/taint/source-sink-config.js +35 -12
- package/dist/core/ingestion/taint/source-sink-registry.d.ts +6 -4
- package/dist/core/ingestion/taint/source-sink-registry.js +6 -4
- package/dist/core/ingestion/taint/summary-harvest-driver.d.ts +80 -0
- package/dist/core/ingestion/taint/summary-harvest-driver.js +179 -0
- package/dist/core/ingestion/taint/summary-harvest.d.ts +89 -0
- package/dist/core/ingestion/taint/summary-harvest.js +537 -0
- package/dist/core/ingestion/taint/summary-model.d.ts +200 -0
- package/dist/core/ingestion/taint/summary-model.js +86 -0
- package/dist/core/ingestion/taint/typescript-model.d.ts +38 -0
- package/dist/core/ingestion/taint/typescript-model.js +102 -0
- package/dist/core/ingestion/type-extractors/c-cpp.js +21 -0
- package/dist/core/ingestion/utils/env.d.ts +7 -0
- package/dist/core/ingestion/utils/env.js +12 -0
- package/dist/core/ingestion/utils/method-props.js +1 -0
- package/dist/core/ingestion/workers/parse-worker.d.ts +13 -0
- package/dist/core/ingestion/workers/parse-worker.js +76 -17
- package/dist/core/ingestion/workers/worker-pool.d.ts +9 -40
- package/dist/core/ingestion/workers/worker-pool.js +15 -2
- package/dist/core/lbug/csv-generator.d.ts +51 -3
- package/dist/core/lbug/csv-generator.js +369 -255
- package/dist/core/lbug/lbug-adapter.d.ts +58 -18
- package/dist/core/lbug/lbug-adapter.js +346 -84
- package/dist/core/lbug/lbug-config.d.ts +19 -0
- package/dist/core/lbug/lbug-config.js +29 -0
- package/dist/core/lbug/pdg-emit-sink.d.ts +127 -0
- package/dist/core/lbug/pdg-emit-sink.js +358 -0
- package/dist/core/lbug/pool-adapter.d.ts +35 -0
- package/dist/core/lbug/pool-adapter.js +90 -1
- package/dist/core/lbug/rel-pair-routing.d.ts +54 -0
- package/dist/core/lbug/rel-pair-routing.js +140 -0
- package/dist/core/lbug/schema.d.ts +2 -2
- package/dist/core/lbug/schema.js +3 -0
- package/dist/core/logger.d.ts +0 -5
- package/dist/core/run-analyze.d.ts +96 -0
- package/dist/core/run-analyze.js +207 -3
- package/dist/core/tree-sitter/parser-loader.js +5 -4
- package/dist/core/tree-sitter/safe-parse.d.ts +0 -5
- package/dist/core/tree-sitter/vendored-grammars.d.ts +39 -0
- package/dist/core/tree-sitter/vendored-grammars.js +57 -0
- package/dist/core/wiki/generator.js +3 -1
- package/dist/core/wiki/graph-queries.d.ts +6 -0
- package/dist/core/wiki/graph-queries.js +9 -1
- package/dist/mcp/http-transport.d.ts +134 -0
- package/dist/mcp/http-transport.js +503 -0
- package/dist/mcp/local/local-backend.d.ts +110 -24
- package/dist/mcp/local/local-backend.js +1225 -19
- package/dist/mcp/local/pdg-impact.d.ts +384 -0
- package/dist/mcp/local/pdg-impact.js +1972 -0
- package/dist/mcp/resources.js +13 -1
- package/dist/mcp/tools.d.ts +12 -0
- package/dist/mcp/tools.js +214 -7
- package/dist/server/analyze-launch.d.ts +29 -0
- package/dist/server/analyze-launch.js +137 -0
- package/dist/server/analyze-upload.d.ts +33 -0
- package/dist/server/analyze-upload.js +123 -0
- package/dist/server/analyze-worker.d.ts +17 -1
- package/dist/server/api.d.ts +17 -0
- package/dist/server/api.js +132 -168
- package/dist/server/git-clone.d.ts +43 -2
- package/dist/server/git-clone.js +211 -16
- package/dist/server/mcp-http.d.ts +5 -6
- package/dist/server/mcp-http.js +9 -82
- package/dist/server/middleware.d.ts +40 -0
- package/dist/server/middleware.js +92 -0
- package/dist/server/private-ip.d.ts +1 -0
- package/dist/server/private-ip.js +15 -0
- package/dist/server/upload-ingest.d.ts +56 -0
- package/dist/server/upload-ingest.js +276 -0
- package/dist/server/upload-paths.d.ts +37 -0
- package/dist/server/upload-paths.js +57 -0
- package/dist/server/upload-sweep.d.ts +20 -0
- package/dist/server/upload-sweep.js +57 -0
- package/dist/storage/git.js +5 -8
- package/dist/storage/parse-cache.d.ts +22 -1
- package/dist/storage/parse-cache.js +41 -10
- package/dist/storage/repo-manager.d.ts +121 -10
- package/dist/storage/repo-manager.js +43 -5
- package/dist/types/pipeline.d.ts +9 -0
- package/hooks/antigravity/gitnexus-antigravity-hook.cjs +110 -10
- package/hooks/claude/gitnexus-hook.cjs +110 -13
- package/hooks/claude/hook-db-lock-probe.cjs +513 -26
- package/package.json +8 -2
- package/scripts/assert-publish-grammar-coverage.cjs +31 -0
- package/scripts/build-tree-sitter-grammars.cjs +16 -10
- package/scripts/cross-platform-tests.ts +1 -0
- package/skills/gitnexus-debugging.md +16 -4
- package/skills/gitnexus-exploring.md +3 -3
- package/skills/gitnexus-guide.md +33 -0
- package/skills/gitnexus-pdg-query.md +89 -0
- package/skills/gitnexus-refactoring.md +1 -1
- package/skills/gitnexus-taint-analysis.md +178 -0
- package/vendor/tree-sitter-c/package.json +1 -1
- package/vendor/tree-sitter-dart/package.json +1 -1
- package/vendor/tree-sitter-kotlin/package.json +1 -1
- package/vendor/tree-sitter-proto/package.json +1 -1
- package/vendor/tree-sitter-swift/package.json +1 -1
- package/web/assets/{agent-CKPMqImC.js → agent-D3Xd7zZE.js} +123 -123
- package/web/assets/architecture-7EHR7CIX-6QZW5X65-DxJw65fT.js +1 -0
- package/web/assets/architectureDiagram-UL44E2DR-ChH9xW-N.js +36 -0
- package/web/assets/{blockDiagram-7IZFK4PR-B4niSLvR.js → blockDiagram-7IZFK4PR-BkWhpzWB.js} +1 -1
- package/web/assets/{c4Diagram-Y2BXMSZH-DIzEXalR.js → c4Diagram-Y2BXMSZH-DtBvpzWD.js} +1 -1
- package/web/assets/{chunk-3SSMPTDK-BzGeeheI.js → chunk-3SSMPTDK-B4_etUhr.js} +2 -2
- package/web/assets/{chunk-5IMINLNL-CnTLsXIV.js → chunk-5IMINLNL-DOdTeQri.js} +1 -1
- package/web/assets/{chunk-5VCL7Z4A-w1BCx98Z.js → chunk-5VCL7Z4A-CQ-2dYWj.js} +1 -1
- package/web/assets/chunk-6764PJDD-DpIS7hxD.js +1 -0
- package/web/assets/{chunk-67TQ5CYL-CChC2cAv.js → chunk-67TQ5CYL-4sNPJU1q.js} +3 -3
- package/web/assets/{chunk-7W6UQGC5-CgFyfZ6k.js → chunk-7W6UQGC5-KyEG0HQg.js} +1 -1
- package/web/assets/{chunk-AZZRMDJM-5E9ARdDQ.js → chunk-AZZRMDJM-y-xJBuMz.js} +1 -1
- package/web/assets/{chunk-INKRHTLW-ELpfuk9h.js → chunk-INKRHTLW-Nu4ri9P-.js} +1 -1
- package/web/assets/{chunk-JQRUD6KW-Dcq_Qnyy.js → chunk-JQRUD6KW-Dbva2Z17.js} +1 -1
- package/web/assets/{chunk-KGFNY3KK-W-VR57xb.js → chunk-KGFNY3KK-JGMJvKCK.js} +1 -1
- package/web/assets/chunk-KGYTTC2M-CWC_c3H9.js +161 -0
- package/web/assets/{chunk-KNLZD3CH-BuZBOcso.js → chunk-KNLZD3CH-BGlP6X9R.js} +1 -1
- package/web/assets/{chunk-KRXBNO2N-DH2NPM7I.js → chunk-KRXBNO2N-BW5o0KUN.js} +1 -1
- package/web/assets/{chunk-LCXTWHL2-Dfmux4m1.js → chunk-LCXTWHL2-zoomRtWX.js} +1 -1
- package/web/assets/{chunk-LII3EMHJ-3X33tCpU.js → chunk-LII3EMHJ-D-jm-dLa.js} +1 -1
- package/web/assets/{chunk-QA3QBVWF-D5Ha3GgB.js → chunk-QA3QBVWF-BgRW3SXd.js} +1 -1
- package/web/assets/{chunk-RG4AUYOV-CAkzcoRj.js → chunk-RG4AUYOV-DD0B2N2B.js} +1 -1
- package/web/assets/{chunk-T2UQINTJ-kGYG7ppP.js → chunk-T2UQINTJ-DSBqkzH7.js} +1 -1
- package/web/assets/chunk-T5OCTHI4-DdZvN-9i.js +1 -0
- package/web/assets/{chunk-UY5QBCOK-Du-c56gs.js → chunk-UY5QBCOK-DyF0vyGd.js} +1 -1
- package/web/assets/{chunk-W44A43WB-lrCpuupA.js → chunk-W44A43WB-JqMLIpR0.js} +1 -1
- package/web/assets/{chunk-ZXARS5L4-CSZRiyOf.js → chunk-ZXARS5L4-CxN8oiwI.js} +1 -1
- package/web/assets/classDiagram-KGZ6W3CR-DJm9BgF-.js +1 -0
- package/web/assets/classDiagram-v2-72OJOZXJ-DJm9BgF-.js +1 -0
- package/web/assets/{context-builder-_HS0v2ma.js → context-builder-BHiFUA8O.js} +10 -2
- package/web/assets/{cose-bilkent-UX7MHV2Q-BHv2bbtl.js → cose-bilkent-UX7MHV2Q-D71wNYRJ.js} +1 -1
- package/web/assets/dagre-ND4H6XIP-BIkxmhcu.js +4 -0
- package/web/assets/diagram-3NCE3AQN-BTa6iH0T.js +43 -0
- package/web/assets/diagram-GF46GFSD-DZDV0vBj.js +24 -0
- package/web/assets/{diagram-HNR7UZ2L-fUWreZzx.js → diagram-HNR7UZ2L-DFCfd5LI.js} +2 -2
- package/web/assets/diagram-QXG6HAR7-BzM--Jj0.js +24 -0
- package/web/assets/diagram-WEQXMOUZ-DFFwz0k4.js +10 -0
- package/web/assets/{erDiagram-L5TCEMPS-QN2eEP1e.js → erDiagram-L5TCEMPS-CfHMJJqo.js} +1 -1
- package/web/assets/eventmodeling-FCH6USID-MREXMVOE-BQm9QzEa.js +1 -0
- package/web/assets/{flowDiagram-H6V6AXG4-CXbXImlN.js → flowDiagram-H6V6AXG4-Be805QiJ.js} +3 -3
- package/web/assets/{ganttDiagram-JCBTUEKG-BHQssTz6.js → ganttDiagram-JCBTUEKG-D3iL2Aet.js} +1 -1
- package/web/assets/gitGraph-WXDBUCRP-R675I2BI-Cr_Bm2Nb.js +1 -0
- package/web/assets/gitGraphDiagram-S2ZK5IYY-CPIDgxGm.js +106 -0
- package/web/assets/index-BvYev1UJ.js +635 -0
- package/web/assets/index-_lgn7hs5.css +2 -0
- package/web/assets/info-J43DQDTF-KCYPFFUO-Cs4p2oyk.js +1 -0
- package/web/assets/infoDiagram-3YFTVSEB-Y7BKSoke.js +2 -0
- package/web/assets/{ishikawaDiagram-BNXS4ZKH-6LKOvBfp.js → ishikawaDiagram-BNXS4ZKH-CT4SHFuI.js} +1 -1
- package/web/assets/{journeyDiagram-M6C3CM3L-DNPYCpvq.js → journeyDiagram-M6C3CM3L-CvArszLo.js} +1 -1
- package/web/assets/{kanban-definition-75IXJCU3-DgDi9oJT.js → kanban-definition-75IXJCU3-C6yDxr7N.js} +3 -3
- package/web/assets/{katex-K3KEBU37-CrVLz8l7.js → katex-K3KEBU37-CTc5BslQ.js} +1 -1
- package/web/assets/{mindmap-definition-2TDM6QVE-CwR5sBB-.js → mindmap-definition-2TDM6QVE-BOc2WEne.js} +1 -1
- package/web/assets/packet-YPE3B663-LP52Z2RK-CKCrztD2.js +1 -0
- package/web/assets/pie-LRSECV5Y-TCRJHUBD-BB7pHqoD.js +1 -0
- package/web/assets/{pieDiagram-CU6KROY3-By8g6f6B.js → pieDiagram-CU6KROY3-Cvc0f_Pd.js} +1 -1
- package/web/assets/{quadrantDiagram-VICAPDV7-bAm6Hi_5.js → quadrantDiagram-VICAPDV7-yXSZ2lLz.js} +1 -1
- package/web/assets/radar-GUYGQ44K-RDLRG3WG-DhoTOcuK.js +1 -0
- package/web/assets/{requirementDiagram-JXO7QTGE-7oDcJ1_J.js → requirementDiagram-JXO7QTGE-BRcZvHs4.js} +1 -1
- package/web/assets/{sankeyDiagram-URQDO5SZ-LFJz53u5.js → sankeyDiagram-URQDO5SZ-1qEjlFIB.js} +1 -1
- package/web/assets/{sequenceDiagram-VS2MUI6T-FySeKCUy.js → sequenceDiagram-VS2MUI6T-PcSCuvrB.js} +3 -3
- package/web/assets/stateDiagram-7D4R322I-D6qYSV1E.js +1 -0
- package/web/assets/stateDiagram-v2-36443NZ5-Bg-ImOSX.js +1 -0
- package/web/assets/{timeline-definition-O6YCAMPW-Ds2CnVZK.js → timeline-definition-O6YCAMPW-QWkh01xw.js} +1 -1
- package/web/assets/treeView-BLDUP644-QA4HXRO3-ODehyGKL.js +1 -0
- package/web/assets/treemap-LRROVOQU-LLAWBHMP-BfpgC-7o.js +1 -0
- package/web/assets/{vennDiagram-MWXL3ELB-DUIEwXWp.js → vennDiagram-MWXL3ELB-ak4DfwuM.js} +3 -3
- package/web/assets/wardley-L42UT6IY-5TKZOOLJ-CNeL6VHE.js +1 -0
- package/web/assets/{wardleyDiagram-CUQ6CDDI-DEiFPQih.js → wardleyDiagram-CUQ6CDDI-CTzR4Loq.js} +1 -1
- package/web/assets/{xychartDiagram-N2JHSOCM-BUbayhST.js → xychartDiagram-N2JHSOCM-DA1BEaQz.js} +1 -1
- package/web/index.html +13 -15
- package/scripts/materialize-vendor-grammars.cjs +0 -97
- package/web/assets/architecture-7EHR7CIX-6QZW5X65-BETj2x4g.js +0 -1
- package/web/assets/architectureDiagram-UL44E2DR-D1EXI0zA.js +0 -36
- package/web/assets/chunk-2T2R6R2M-n6s9JZqv.js +0 -4
- package/web/assets/chunk-2UTLFMKG-CMBB1TMN.js +0 -1
- package/web/assets/chunk-4R4BOZG6-mKhL59ul.js +0 -159
- package/web/assets/chunk-6764PJDD-ChwMM2z4.js +0 -1
- package/web/assets/chunk-7J6CGLKN-DT-b53FT.js +0 -10
- package/web/assets/chunk-C62D2QBJ-CDAWj26E.js +0 -1
- package/web/assets/chunk-CEXFNPSA-D68Tk6ls.js +0 -1
- package/web/assets/chunk-CilyBKbf.js +0 -1
- package/web/assets/chunk-J5EP6P6S-DxWW0yvu.js +0 -1
- package/web/assets/chunk-KGYTTC2M-C6PHeuay.js +0 -1
- package/web/assets/chunk-RERM46MO-DQNbXtfw.js +0 -1
- package/web/assets/chunk-RKZBBQEN-BmTPLSyv.js +0 -1
- package/web/assets/chunk-RLI5ZMPA-DExu2DOK.js +0 -1
- package/web/assets/chunk-T5OCTHI4--9wWpVws.js +0 -1
- package/web/assets/chunk-UP6H54XL-DsKdC6jC.js +0 -1
- package/web/assets/chunk-UXSXWOXI-DR81EqLr.js +0 -1
- package/web/assets/classDiagram-KGZ6W3CR-Bv93af_b.js +0 -1
- package/web/assets/classDiagram-v2-72OJOZXJ-CLfEqHUa.js +0 -1
- package/web/assets/dagre-ND4H6XIP-DsIr9MOv.js +0 -4
- package/web/assets/diagram-3NCE3AQN-BqAtKUpW.js +0 -43
- package/web/assets/diagram-GF46GFSD-CaBG6n6o.js +0 -24
- package/web/assets/diagram-QXG6HAR7-CZ-O3rcV.js +0 -24
- package/web/assets/diagram-WEQXMOUZ-P4lSL4GH.js +0 -10
- package/web/assets/eventmodeling-FCH6USID-MREXMVOE-B3myHUst.js +0 -1
- package/web/assets/gitGraph-WXDBUCRP-R675I2BI-DF3rtf4A.js +0 -1
- package/web/assets/gitGraphDiagram-S2ZK5IYY-CCwVLT__.js +0 -106
- package/web/assets/index-BKWA-m7o.css +0 -2
- package/web/assets/index-CG6q8eTs.js +0 -626
- package/web/assets/info-J43DQDTF-KCYPFFUO-R4XV_akJ.js +0 -1
- package/web/assets/infoDiagram-3YFTVSEB-DmLICZx1.js +0 -2
- package/web/assets/packet-YPE3B663-LP52Z2RK-CgQPdNZa.js +0 -1
- package/web/assets/pie-LRSECV5Y-TCRJHUBD-BzWOwc_c.js +0 -1
- package/web/assets/radar-GUYGQ44K-RDLRG3WG-B7KG0FN7.js +0 -1
- package/web/assets/stateDiagram-7D4R322I-CB2nABwH.js +0 -1
- package/web/assets/stateDiagram-v2-36443NZ5-COBGd2RL.js +0 -1
- package/web/assets/treeView-BLDUP644-QA4HXRO3-CRSxEwLO.js +0 -1
- package/web/assets/treemap-LRROVOQU-LLAWBHMP-a0PfKoVn.js +0 -1
- package/web/assets/wardley-L42UT6IY-5TKZOOLJ-BKQ6e5mC.js +0 -1
- /package/web/assets/{chunk-AQ6EADP3-CCFje6lL.js → chunk-AQ6EADP3-CZhslHi-.js} +0 -0
|
@@ -2,6 +2,7 @@ import Parser from 'tree-sitter';
|
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { SupportedLanguages } from '../../_shared/index.js';
|
|
4
4
|
import { logger } from '../logger.js';
|
|
5
|
+
import { requireVendoredGrammar } from './vendored-grammars.js';
|
|
5
6
|
const _require = createRequire(import.meta.url);
|
|
6
7
|
const ISSUES_URL = 'https://github.com/abhigyanpatwari/GitNexus/issues';
|
|
7
8
|
const SOURCES = {
|
|
@@ -71,7 +72,7 @@ const SOURCES = {
|
|
|
71
72
|
// user-opt-out grammar like Swift/Dart/Kotlin: a failure here is always an
|
|
72
73
|
// install/platform problem the user needs to see.
|
|
73
74
|
[SupportedLanguages.C]: {
|
|
74
|
-
load: () =>
|
|
75
|
+
load: () => requireVendoredGrammar('tree-sitter-c'),
|
|
75
76
|
optional: true,
|
|
76
77
|
severity: 'error',
|
|
77
78
|
unavailableNote: 'C parsing disabled: vendored `tree-sitter-c` (under ' +
|
|
@@ -85,7 +86,7 @@ const SOURCES = {
|
|
|
85
86
|
// optionalDependencies — may be absent on platforms without prebuilds
|
|
86
87
|
// or when users skip optional installs.
|
|
87
88
|
[SupportedLanguages.Swift]: {
|
|
88
|
-
load: () =>
|
|
89
|
+
load: () => requireVendoredGrammar('tree-sitter-swift'),
|
|
89
90
|
optional: true,
|
|
90
91
|
userSkippable: true,
|
|
91
92
|
unavailableNote: 'Swift parsing disabled: vendored `tree-sitter-swift` (under ' +
|
|
@@ -94,7 +95,7 @@ const SOURCES = {
|
|
|
94
95
|
`See ${ISSUES_URL}/1130.`,
|
|
95
96
|
},
|
|
96
97
|
[SupportedLanguages.Dart]: {
|
|
97
|
-
load: () =>
|
|
98
|
+
load: () => requireVendoredGrammar('tree-sitter-dart'),
|
|
98
99
|
optional: true,
|
|
99
100
|
userSkippable: true,
|
|
100
101
|
unavailableNote: 'Dart parsing disabled: vendored `tree-sitter-dart` (under ' +
|
|
@@ -103,7 +104,7 @@ const SOURCES = {
|
|
|
103
104
|
`See ${ISSUES_URL}/1125.`,
|
|
104
105
|
},
|
|
105
106
|
[SupportedLanguages.Kotlin]: {
|
|
106
|
-
load: () =>
|
|
107
|
+
load: () => requireVendoredGrammar('tree-sitter-kotlin'),
|
|
107
108
|
optional: true,
|
|
108
109
|
userSkippable: true,
|
|
109
110
|
unavailableNote: 'Kotlin parsing disabled: vendored `tree-sitter-kotlin` (under ' +
|
|
@@ -24,11 +24,6 @@ export declare class ParseTimeoutError extends Error {
|
|
|
24
24
|
* run). Safe to call at any time.
|
|
25
25
|
*/
|
|
26
26
|
export declare function resetDegradedParseCounter(): void;
|
|
27
|
-
/**
|
|
28
|
-
* @internal Test-only alias for {@link resetDegradedParseCounter}, kept so the
|
|
29
|
-
* existing `safe-parse.test.ts` import keeps working. Prefer the public name.
|
|
30
|
-
*/
|
|
31
|
-
export declare function _resetDegradedParseCounter(): void;
|
|
32
27
|
/**
|
|
33
28
|
* True when the parsed tree contains any ERROR or MISSING node — i.e. the
|
|
34
29
|
* source did not parse cleanly and tree-sitter applied error recovery.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Absolute path to the vendored grammar tree (`<pkg>/vendor`).
|
|
3
|
+
*
|
|
4
|
+
* This module compiles to `<pkg>/dist/core/tree-sitter/vendored-grammars.js`
|
|
5
|
+
* and runs from `<pkg>/src/core/tree-sitter/...` under tsx in dev — both sit
|
|
6
|
+
* three directories below the package root, and the build (`tsc`) never bundles,
|
|
7
|
+
* so `import.meta.url` resolves the same way in both. `vendor/` ships in the
|
|
8
|
+
* published package via package.json `files`.
|
|
9
|
+
*/
|
|
10
|
+
export declare const VENDOR_ROOT: string;
|
|
11
|
+
/**
|
|
12
|
+
* The tree-sitter grammars GitNexus vendors inside its own package (NOT npm
|
|
13
|
+
* dependencies). Kept in one place so consumers (runtime loaders, the CLI
|
|
14
|
+
* availability probe, and the test grammar-introspection helper) agree on which
|
|
15
|
+
* grammars resolve from `vendor/` rather than `node_modules`.
|
|
16
|
+
*/
|
|
17
|
+
export declare const VENDORED_GRAMMAR_PACKAGES: ReadonlySet<string>;
|
|
18
|
+
/** Absolute directory of a vendored grammar package under `vendor/`. */
|
|
19
|
+
export declare const vendoredGrammarDir: (packageName: string) => string;
|
|
20
|
+
/**
|
|
21
|
+
* Load a vendored tree-sitter grammar by its absolute path under `vendor/`.
|
|
22
|
+
*
|
|
23
|
+
* GitNexus vendors five grammars (c/dart/proto/swift/kotlin) inside its own
|
|
24
|
+
* package under `vendor/`, each shipping committed per-platform prebuilds. They
|
|
25
|
+
* are deliberately NOT npm dependencies and must NEVER be copied into
|
|
26
|
+
* `node_modules`: an undeclared package under `node_modules` is "extraneous" to
|
|
27
|
+
* every subsequent `npm`/`npx` arborist reify, which prunes or relocates it.
|
|
28
|
+
* That is the root cause of #2111 / #1728 — on Windows the relocation throws
|
|
29
|
+
* `EPERM: operation not permitted, symlink` (errno -4048) during the npx-cache
|
|
30
|
+
* reify Antigravity triggers when it launches the MCP server, and on every OS
|
|
31
|
+
* the second run silently deletes the materialized grammars.
|
|
32
|
+
*
|
|
33
|
+
* Resolving the grammar by absolute path runs its own `bindings/node` entry,
|
|
34
|
+
* which calls `node-gyp-build(<grammarDir>)` and loads
|
|
35
|
+
* `vendor/<name>/prebuilds/<platform>-<arch>/…` directly — no build, no write,
|
|
36
|
+
* no `node_modules` copy. (`node-gyp-build` itself IS an npm dependency and
|
|
37
|
+
* resolves normally from the grammar directory.)
|
|
38
|
+
*/
|
|
39
|
+
export declare const requireVendoredGrammar: (packageName: string) => unknown;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
import { fileURLToPath } from 'node:url';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
const _require = createRequire(import.meta.url);
|
|
5
|
+
/**
|
|
6
|
+
* Absolute path to the vendored grammar tree (`<pkg>/vendor`).
|
|
7
|
+
*
|
|
8
|
+
* This module compiles to `<pkg>/dist/core/tree-sitter/vendored-grammars.js`
|
|
9
|
+
* and runs from `<pkg>/src/core/tree-sitter/...` under tsx in dev — both sit
|
|
10
|
+
* three directories below the package root, and the build (`tsc`) never bundles,
|
|
11
|
+
* so `import.meta.url` resolves the same way in both. `vendor/` ships in the
|
|
12
|
+
* published package via package.json `files`.
|
|
13
|
+
*/
|
|
14
|
+
export const VENDOR_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..', '..', 'vendor');
|
|
15
|
+
/**
|
|
16
|
+
* The tree-sitter grammars GitNexus vendors inside its own package (NOT npm
|
|
17
|
+
* dependencies). Kept in one place so consumers (runtime loaders, the CLI
|
|
18
|
+
* availability probe, and the test grammar-introspection helper) agree on which
|
|
19
|
+
* grammars resolve from `vendor/` rather than `node_modules`.
|
|
20
|
+
*/
|
|
21
|
+
export const VENDORED_GRAMMAR_PACKAGES = new Set([
|
|
22
|
+
'tree-sitter-c',
|
|
23
|
+
'tree-sitter-dart',
|
|
24
|
+
'tree-sitter-proto',
|
|
25
|
+
'tree-sitter-swift',
|
|
26
|
+
'tree-sitter-kotlin',
|
|
27
|
+
]);
|
|
28
|
+
/** Absolute directory of a vendored grammar package under `vendor/`. */
|
|
29
|
+
export const vendoredGrammarDir = (packageName) => path.join(VENDOR_ROOT, packageName);
|
|
30
|
+
/**
|
|
31
|
+
* Load a vendored tree-sitter grammar by its absolute path under `vendor/`.
|
|
32
|
+
*
|
|
33
|
+
* GitNexus vendors five grammars (c/dart/proto/swift/kotlin) inside its own
|
|
34
|
+
* package under `vendor/`, each shipping committed per-platform prebuilds. They
|
|
35
|
+
* are deliberately NOT npm dependencies and must NEVER be copied into
|
|
36
|
+
* `node_modules`: an undeclared package under `node_modules` is "extraneous" to
|
|
37
|
+
* every subsequent `npm`/`npx` arborist reify, which prunes or relocates it.
|
|
38
|
+
* That is the root cause of #2111 / #1728 — on Windows the relocation throws
|
|
39
|
+
* `EPERM: operation not permitted, symlink` (errno -4048) during the npx-cache
|
|
40
|
+
* reify Antigravity triggers when it launches the MCP server, and on every OS
|
|
41
|
+
* the second run silently deletes the materialized grammars.
|
|
42
|
+
*
|
|
43
|
+
* Resolving the grammar by absolute path runs its own `bindings/node` entry,
|
|
44
|
+
* which calls `node-gyp-build(<grammarDir>)` and loads
|
|
45
|
+
* `vendor/<name>/prebuilds/<platform>-<arch>/…` directly — no build, no write,
|
|
46
|
+
* no `node_modules` copy. (`node-gyp-build` itself IS an npm dependency and
|
|
47
|
+
* resolves normally from the grammar directory.)
|
|
48
|
+
*/
|
|
49
|
+
export const requireVendoredGrammar = (packageName) => {
|
|
50
|
+
// Fail loudly on a name that isn't actually vendored — a typo or a list that
|
|
51
|
+
// drifted out of sync (VENDORED_GRAMMAR_PACKAGES vs the CLI probe vs the build
|
|
52
|
+
// registry) would otherwise surface as a confusing absolute-path require miss.
|
|
53
|
+
if (!VENDORED_GRAMMAR_PACKAGES.has(packageName)) {
|
|
54
|
+
throw new Error(`'${packageName}' is not a vendored grammar (expected one of: ${[...VENDORED_GRAMMAR_PACKAGES].join(', ')}).`);
|
|
55
|
+
}
|
|
56
|
+
return _require(vendoredGrammarDir(packageName));
|
|
57
|
+
};
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
import fs from 'fs/promises';
|
|
13
13
|
import path from 'path';
|
|
14
14
|
import { execSync, execFileSync } from 'child_process';
|
|
15
|
-
import { initWikiDb, closeWikiDb, touchWikiDb, getFilesWithExports, getAllFiles, getIntraModuleCallEdges, getInterModuleCallEdges, getProcessesForFiles, getAllProcesses, getInterModuleEdgesForOverview, } from './graph-queries.js';
|
|
15
|
+
import { initWikiDb, closeWikiDb, touchWikiDb, pinWikiDb, getFilesWithExports, getAllFiles, getIntraModuleCallEdges, getInterModuleCallEdges, getProcessesForFiles, getAllProcesses, getInterModuleEdgesForOverview, } from './graph-queries.js';
|
|
16
16
|
import { generateHTMLViewer } from './html-viewer.js';
|
|
17
17
|
import { sanitizeMermaidMarkdown } from './mermaid-sanitizer.js';
|
|
18
18
|
import { callLLM, estimateTokens, } from './llm-client.js';
|
|
@@ -183,6 +183,7 @@ export class WikiGenerator {
|
|
|
183
183
|
}
|
|
184
184
|
// Init graph
|
|
185
185
|
this.onProgress('init', 2, 'Connecting to knowledge graph...');
|
|
186
|
+
const releaseWikiDbPin = pinWikiDb();
|
|
186
187
|
await initWikiDb(this.lbugPath);
|
|
187
188
|
let result;
|
|
188
189
|
try {
|
|
@@ -201,6 +202,7 @@ export class WikiGenerator {
|
|
|
201
202
|
}
|
|
202
203
|
}
|
|
203
204
|
finally {
|
|
205
|
+
releaseWikiDbPin();
|
|
204
206
|
await closeWikiDb();
|
|
205
207
|
}
|
|
206
208
|
// Always generate the HTML viewer after wiki content changes
|
|
@@ -8,6 +8,12 @@
|
|
|
8
8
|
* Touch the wiki DB connection to prevent idle timeout during long LLM calls.
|
|
9
9
|
*/
|
|
10
10
|
export declare function touchWikiDb(): void;
|
|
11
|
+
/**
|
|
12
|
+
* Keep the wiki DB resident for a full generation run. Wiki generation can spend
|
|
13
|
+
* minutes inside LLM calls, and the pooled DB must survive both idle cleanup and
|
|
14
|
+
* unrelated LRU pressure until the run reaches its final graph queries.
|
|
15
|
+
*/
|
|
16
|
+
export declare function pinWikiDb(): () => void;
|
|
11
17
|
export interface FileWithExports {
|
|
12
18
|
filePath: string;
|
|
13
19
|
symbols: Array<{
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Encapsulated Cypher queries against the GitNexus knowledge graph.
|
|
5
5
|
* Uses the MCP-style pooled lbug-adapter for connection management.
|
|
6
6
|
*/
|
|
7
|
-
import { initLbug, executeQuery, closeLbug, touchRepo } from '../lbug/pool-adapter.js';
|
|
7
|
+
import { initLbug, executeQuery, closeLbug, touchRepo, pinRepo } from '../lbug/pool-adapter.js';
|
|
8
8
|
const REPO_ID = '__wiki__';
|
|
9
9
|
/**
|
|
10
10
|
* Touch the wiki DB connection to prevent idle timeout during long LLM calls.
|
|
@@ -12,6 +12,14 @@ const REPO_ID = '__wiki__';
|
|
|
12
12
|
export function touchWikiDb() {
|
|
13
13
|
touchRepo(REPO_ID);
|
|
14
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* Keep the wiki DB resident for a full generation run. Wiki generation can spend
|
|
17
|
+
* minutes inside LLM calls, and the pooled DB must survive both idle cleanup and
|
|
18
|
+
* unrelated LRU pressure until the run reaches its final graph queries.
|
|
19
|
+
*/
|
|
20
|
+
export function pinWikiDb() {
|
|
21
|
+
return pinRepo(REPO_ID);
|
|
22
|
+
}
|
|
15
23
|
/**
|
|
16
24
|
* Initialize the LadybugDB connection for wiki generation.
|
|
17
25
|
*/
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dedicated MCP HTTP server.
|
|
3
|
+
*
|
|
4
|
+
* Provides HTTP-based MCP transport supporting:
|
|
5
|
+
* - Modern Streamable HTTP: POST /mcp
|
|
6
|
+
* - Legacy SSE transport: GET /sse + POST /messages
|
|
7
|
+
*
|
|
8
|
+
* Started via `gitnexus mcp --http`.
|
|
9
|
+
* stdio remains the default mode for `gitnexus mcp` (no breaking change).
|
|
10
|
+
*
|
|
11
|
+
* Exports createStreamableHttpHandler and createSseHandlers so that
|
|
12
|
+
* server/mcp-http.ts (web-UI route mount) can reuse them without inverting
|
|
13
|
+
* the established server/ → mcp/ dependency direction.
|
|
14
|
+
*
|
|
15
|
+
* Security considerations:
|
|
16
|
+
* - Default binds to 127.0.0.1 (loopback only).
|
|
17
|
+
* - Use --auth-token to enable Bearer Token authentication.
|
|
18
|
+
* - Use --host 0.0.0.0 to expose to all interfaces (requires --auth-token — refuses to start otherwise).
|
|
19
|
+
* - CORS is restricted to loopback origins when no auth token is configured.
|
|
20
|
+
* - PNA (Private Network Access) header is emitted only in response to browser preflight requests.
|
|
21
|
+
*/
|
|
22
|
+
import type { Server as HttpServer } from 'http';
|
|
23
|
+
import { type Request, type Response, type NextFunction } from 'express';
|
|
24
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
25
|
+
import type { LocalBackend } from './local/local-backend.js';
|
|
26
|
+
/** HTTP server configuration options. */
|
|
27
|
+
export interface McpHttpOptions {
|
|
28
|
+
/** Listening port. */
|
|
29
|
+
port: number;
|
|
30
|
+
/** Bind address (default: 127.0.0.1). */
|
|
31
|
+
host: string;
|
|
32
|
+
/** Bearer auth token (optional; no auth when omitted). */
|
|
33
|
+
authToken?: string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Creates a Bearer Token authentication middleware.
|
|
37
|
+
*
|
|
38
|
+
* - When authToken is not set, all requests pass through.
|
|
39
|
+
* - When authToken is set, checks the Authorization: Bearer <token> header.
|
|
40
|
+
* - Uses constant-time comparison to prevent timing oracle attacks.
|
|
41
|
+
* - Returns a JSON-RPC formatted 401 on failure.
|
|
42
|
+
*/
|
|
43
|
+
export declare function createAuthMiddleware(authToken?: string): (req: Request, res: Response, next: NextFunction) => void;
|
|
44
|
+
/**
|
|
45
|
+
* Returns true when an Origin should be allowed by the no-auth (loopback-only)
|
|
46
|
+
* CORS policy — i.e. it is absent (non-browser caller) or a loopback origin.
|
|
47
|
+
*
|
|
48
|
+
* WHATWG URL keeps the brackets on IPv6 literals
|
|
49
|
+
* (`new URL('http://[::1]/').hostname === '[::1]'`) and canonicalizes the
|
|
50
|
+
* IPv4-mapped loopback to `[::ffff:7f00:1]`; loopback IPv4 is the whole
|
|
51
|
+
* 127.0.0.0/8 block — so all of those forms are matched explicitly.
|
|
52
|
+
*/
|
|
53
|
+
export declare function isLoopbackOrigin(origin: string | undefined): boolean;
|
|
54
|
+
/** True for the exact loopback bind addresses. */
|
|
55
|
+
export declare function isLoopbackHost(host: string): boolean;
|
|
56
|
+
/** True for any-interface wildcard binds, whose externally-used Host is unknowable. */
|
|
57
|
+
export declare function isWildcardHost(host: string): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Computes the SDK DNS-rebinding `allowedHosts` list (a Host-header allowlist) for a
|
|
60
|
+
* bind host/port, or `undefined` when protection should stay off.
|
|
61
|
+
*
|
|
62
|
+
* Wildcard binds (`0.0.0.0` / `::`) return `undefined` — the Host a client
|
|
63
|
+
* legitimately uses is unknowable, so the bearer token (required for non-loopback
|
|
64
|
+
* binds) is the control. Loopback binds allow all three loopback host forms
|
|
65
|
+
* (bare + `:port`); a specific host (e.g. `192.168.1.50`) allows that host
|
|
66
|
+
* (bare + `:port`), which is knowable and a free defence-in-depth win.
|
|
67
|
+
*/
|
|
68
|
+
export declare function computeAllowedHosts(host: string, port: number): string[] | undefined;
|
|
69
|
+
/**
|
|
70
|
+
* Resolves the MCP HTTP bearer token from the `--auth-token` flag or the
|
|
71
|
+
* `GITNEXUS_MCP_AUTH_TOKEN` env var (the flag wins). An empty or whitespace-only
|
|
72
|
+
* value is treated as "no token" so a blank env var cannot silently disable auth
|
|
73
|
+
* (and slip past the non-loopback hard-fail).
|
|
74
|
+
*/
|
|
75
|
+
export declare function resolveAuthToken(optToken: string | undefined, env: NodeJS.ProcessEnv): string | undefined;
|
|
76
|
+
/**
|
|
77
|
+
* Starts a periodic sweep that closes and evicts sessions idle longer than
|
|
78
|
+
* `ttlMs`, returning the (unref'd) timer. Shared by both transport factories to
|
|
79
|
+
* guard against network drops where the per-session onclose never fires.
|
|
80
|
+
*/
|
|
81
|
+
export declare function startIdleSweep<T extends {
|
|
82
|
+
server: Server;
|
|
83
|
+
lastActivity: number;
|
|
84
|
+
}>(sessions: Map<string, T>, ttlMs: number, intervalMs: number): NodeJS.Timeout;
|
|
85
|
+
/**
|
|
86
|
+
* Creates a reusable StreamableHTTP request handler.
|
|
87
|
+
*
|
|
88
|
+
* Encapsulates the session map and request-dispatch logic as an independent
|
|
89
|
+
* factory, reused by both startMcpHttpServer (POST /mcp) and the web-UI server
|
|
90
|
+
* route mount in server/mcp-http.ts (/api/mcp).
|
|
91
|
+
*/
|
|
92
|
+
export declare function createStreamableHttpHandler(backend: LocalBackend, opts?: {
|
|
93
|
+
createServer?: () => Server;
|
|
94
|
+
host?: string;
|
|
95
|
+
port?: number;
|
|
96
|
+
}): {
|
|
97
|
+
handler: (req: Request, res: Response) => Promise<void>;
|
|
98
|
+
cleanup: () => Promise<void>;
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* Creates legacy SSE transport handlers.
|
|
102
|
+
*
|
|
103
|
+
* GET /sse (or custom path) establishes the SSE stream;
|
|
104
|
+
* POST /messages (or custom path) receives client JSON-RPC messages.
|
|
105
|
+
*
|
|
106
|
+
* Includes the same idle-TTL eviction as createStreamableHttpHandler to prevent
|
|
107
|
+
* memory leaks when clients drop without closing the SSE connection cleanly.
|
|
108
|
+
*
|
|
109
|
+
* @param backend LocalBackend instance
|
|
110
|
+
* @param messagesPath Path clients POST messages to (default: '/messages')
|
|
111
|
+
*/
|
|
112
|
+
export declare function createSseHandlers(backend: LocalBackend, messagesPath?: string, opts?: {
|
|
113
|
+
maxSessions?: number;
|
|
114
|
+
host?: string;
|
|
115
|
+
port?: number;
|
|
116
|
+
}): {
|
|
117
|
+
sseHandler: (req: Request, res: Response) => Promise<void>;
|
|
118
|
+
messageHandler: (req: Request, res: Response) => Promise<void>;
|
|
119
|
+
cleanup: () => Promise<void>;
|
|
120
|
+
};
|
|
121
|
+
/**
|
|
122
|
+
* Creates and starts the dedicated MCP HTTP server.
|
|
123
|
+
*
|
|
124
|
+
* Mounts the following routes:
|
|
125
|
+
* - GET /health — health check (no auth required; for orchestrators/probes)
|
|
126
|
+
* - POST /mcp — Streamable HTTP (modern clients)
|
|
127
|
+
* - GET /sse — legacy SSE stream (old clients)
|
|
128
|
+
* - POST /messages — legacy SSE message endpoint
|
|
129
|
+
*
|
|
130
|
+
* @param backend LocalBackend instance
|
|
131
|
+
* @param options Server configuration
|
|
132
|
+
* @returns The listening http.Server
|
|
133
|
+
*/
|
|
134
|
+
export declare function startMcpHttpServer(backend: LocalBackend, options: McpHttpOptions): Promise<HttpServer>;
|