gitnexus 1.6.9 → 1.6.10-aptos.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +211 -53
- package/dist/_shared/graph/types.d.ts +67 -3
- package/dist/_shared/graph/types.d.ts.map +1 -1
- package/dist/_shared/index.d.ts +1 -0
- package/dist/_shared/index.d.ts.map +1 -1
- package/dist/_shared/index.js.map +1 -1
- package/dist/_shared/integrations/resilient-fetch.d.ts +3 -1
- package/dist/_shared/integrations/resilient-fetch.d.ts.map +1 -1
- package/dist/_shared/integrations/resilient-fetch.js +4 -3
- package/dist/_shared/integrations/resilient-fetch.js.map +1 -1
- package/dist/_shared/language-detection.d.ts.map +1 -1
- package/dist/_shared/language-detection.js +2 -0
- package/dist/_shared/language-detection.js.map +1 -1
- package/dist/_shared/languages.d.ts +2 -0
- package/dist/_shared/languages.d.ts.map +1 -1
- package/dist/_shared/languages.js +2 -0
- package/dist/_shared/languages.js.map +1 -1
- package/dist/_shared/lbug/schema-constants.d.ts +2 -2
- package/dist/_shared/lbug/schema-constants.d.ts.map +1 -1
- package/dist/_shared/lbug/schema-constants.js +8 -0
- package/dist/_shared/lbug/schema-constants.js.map +1 -1
- package/dist/_shared/pipeline.d.ts +1 -1
- package/dist/_shared/pipeline.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/callable-flow-site.d.ts +110 -0
- package/dist/_shared/scope-resolution/callable-flow-site.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/callable-flow-site.js +11 -0
- package/dist/_shared/scope-resolution/callable-flow-site.js.map +1 -0
- package/dist/_shared/scope-resolution/finalize-algorithm.d.ts +1 -1
- package/dist/_shared/scope-resolution/finalize-algorithm.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/finalize-algorithm.js +1 -1
- package/dist/_shared/scope-resolution/finalize-algorithm.js.map +1 -1
- package/dist/_shared/scope-resolution/language-classification.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/language-classification.js +1 -0
- package/dist/_shared/scope-resolution/language-classification.js.map +1 -1
- package/dist/_shared/scope-resolution/parsed-file.d.ts +7 -0
- package/dist/_shared/scope-resolution/parsed-file.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/reference-site.d.ts +9 -1
- package/dist/_shared/scope-resolution/reference-site.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/types.d.ts +20 -3
- package/dist/_shared/scope-resolution/types.d.ts.map +1 -1
- package/dist/cli/ai-context.d.ts +1 -1
- package/dist/cli/ai-context.js +25 -44
- package/dist/cli/analyze.d.ts +5 -2
- package/dist/cli/analyze.js +197 -11
- package/dist/cli/clean.js +17 -3
- package/dist/cli/cli-message.d.ts +1 -1
- package/dist/cli/doctor.d.ts +18 -0
- package/dist/cli/doctor.js +96 -5
- package/dist/cli/editor-targets.d.ts +17 -2
- package/dist/cli/editor-targets.js +44 -0
- package/dist/cli/embeddings.d.ts +12 -0
- package/dist/cli/embeddings.js +49 -0
- package/dist/cli/eval-server.d.ts +23 -1
- package/dist/cli/eval-server.js +126 -8
- package/dist/cli/help-i18n.js +6 -0
- package/dist/cli/i18n/en.d.ts +18 -8
- package/dist/cli/i18n/en.js +18 -8
- package/dist/cli/i18n/resources.d.ts +28 -8
- package/dist/cli/i18n/zh-CN.d.ts +10 -0
- package/dist/cli/i18n/zh-CN.js +18 -8
- package/dist/cli/index.js +21 -7
- package/dist/cli/lazy-action.d.ts +7 -0
- package/dist/cli/lazy-action.js +27 -0
- package/dist/cli/mcp.js +6 -3
- package/dist/cli/move-availability.d.ts +5 -0
- package/dist/cli/move-availability.js +11 -0
- package/dist/cli/setup.d.ts +8 -0
- package/dist/cli/setup.js +230 -32
- package/dist/cli/skill-gen.js +38 -18
- package/dist/cli/standard-skills.d.ts +76 -0
- package/dist/cli/standard-skills.js +45 -0
- package/dist/cli/status.d.ts +4 -1
- package/dist/cli/status.js +57 -4
- package/dist/cli/tool.js +11 -0
- package/dist/cli/uninstall.js +77 -18
- package/dist/cli/wiki.d.ts +1 -0
- package/dist/cli/wiki.js +7 -1
- package/dist/config/ignore-service.d.ts +2 -0
- package/dist/config/ignore-service.js +27 -0
- package/dist/core/analysis-features.d.ts +21 -0
- package/dist/core/analysis-features.js +59 -0
- package/dist/core/analyzer-identity.d.ts +74 -0
- package/dist/core/analyzer-identity.js +1820 -0
- package/dist/core/augmentation/engine.js +13 -8
- package/dist/core/embeddings/embedder.d.ts +3 -2
- package/dist/core/embeddings/embedder.js +24 -7
- package/dist/core/embeddings/embedding-identity.d.ts +11 -0
- package/dist/core/embeddings/embedding-identity.js +24 -0
- package/dist/core/embeddings/embedding-pipeline.d.ts +36 -1
- package/dist/core/embeddings/embedding-pipeline.js +100 -9
- package/dist/core/embeddings/http-client.d.ts +33 -3
- package/dist/core/embeddings/http-client.js +237 -25
- package/dist/core/embeddings/node-module-compat.d.ts +25 -0
- package/dist/core/embeddings/node-module-compat.js +25 -0
- package/dist/core/embeddings/onnxruntime-common-resolver.js +8 -5
- package/dist/core/embeddings/onnxruntime-node-resolver.js +33 -7
- package/dist/core/embeddings/runtime-install.d.ts +119 -0
- package/dist/core/embeddings/runtime-install.js +372 -0
- package/dist/core/embeddings/runtime-support.d.ts +48 -17
- package/dist/core/embeddings/runtime-support.js +96 -0
- package/dist/core/git-staleness.js +1 -1
- package/dist/core/group/bridge-db.js +2 -0
- package/dist/core/group/extractors/http-patterns/python.js +246 -108
- package/dist/core/group/extractors/manifest-extractor.js +4 -0
- package/dist/core/incremental/escalation-gate.d.ts +38 -0
- package/dist/core/incremental/escalation-gate.js +48 -0
- package/dist/core/incremental/shadow-candidates.d.ts +3 -3
- package/dist/core/incremental/shadow-candidates.js +3 -3
- package/dist/core/incremental/subgraph-extract.d.ts +2 -2
- package/dist/core/incremental/subgraph-extract.js +2 -2
- package/dist/core/index-freshness.d.ts +5 -0
- package/dist/core/index-freshness.js +13 -0
- package/dist/core/ingestion/class-extractors/configs/jvm.js +29 -0
- package/dist/core/ingestion/cobol/cobol-preprocessor.js +1 -1
- package/dist/core/ingestion/cobol/jcl-processor.js +9 -8
- package/dist/core/ingestion/cobol-processor.js +27 -26
- package/dist/core/ingestion/community-processor.d.ts +51 -1
- package/dist/core/ingestion/community-processor.js +323 -64
- package/dist/core/ingestion/emit-references.js +7 -2
- package/dist/core/ingestion/filesystem-walker.js +4 -0
- package/dist/core/ingestion/frameworks/spring/analysis-features.d.ts +3 -0
- package/dist/core/ingestion/frameworks/spring/analysis-features.js +7 -0
- package/dist/core/ingestion/frameworks/spring/bean-candidates.d.ts +30 -0
- package/dist/core/ingestion/frameworks/spring/bean-candidates.js +182 -0
- package/dist/core/ingestion/frameworks/spring/bean-catalog.d.ts +12 -0
- package/dist/core/ingestion/frameworks/spring/bean-catalog.js +26 -0
- package/dist/core/ingestion/frameworks/spring/config-bindings.d.ts +24 -0
- package/dist/core/ingestion/frameworks/spring/config-bindings.js +115 -0
- package/dist/core/ingestion/languages/c/captures.js +56 -0
- package/dist/core/ingestion/languages/c/query.js +17 -0
- package/dist/core/ingestion/languages/c/scope-resolver.js +6 -0
- package/dist/core/ingestion/languages/cobol/captures.js +93 -0
- package/dist/core/ingestion/languages/cobol/scope-resolver.js +7 -0
- package/dist/core/ingestion/languages/cpp/captures.js +365 -75
- package/dist/core/ingestion/languages/cpp/scope-resolver.js +14 -0
- package/dist/core/ingestion/languages/csharp/captures.js +25 -0
- package/dist/core/ingestion/languages/dart/captures.js +90 -2
- package/dist/core/ingestion/languages/dart/extension-type-preprocess.d.ts +7 -0
- package/dist/core/ingestion/languages/dart/extension-type-preprocess.js +30 -0
- package/dist/core/ingestion/languages/dart.js +2 -0
- package/dist/core/ingestion/languages/go/captures.js +34 -0
- package/dist/core/ingestion/languages/index.d.ts +1 -0
- package/dist/core/ingestion/languages/index.js +2 -0
- package/dist/core/ingestion/languages/java/analysis-features.d.ts +3 -0
- package/dist/core/ingestion/languages/java/analysis-features.js +13 -0
- package/dist/core/ingestion/languages/java/capture-side-channel.d.ts +22 -0
- package/dist/core/ingestion/languages/java/capture-side-channel.js +58 -0
- package/dist/core/ingestion/languages/java/captures.d.ts +4 -3
- package/dist/core/ingestion/languages/java/captures.js +193 -17
- package/dist/core/ingestion/languages/java/package-facts.d.ts +5 -0
- package/dist/core/ingestion/languages/java/package-facts.js +9 -0
- package/dist/core/ingestion/languages/java/package-siblings.d.ts +3 -16
- package/dist/core/ingestion/languages/java/package-siblings.js +8 -147
- package/dist/core/ingestion/languages/java/query.js +23 -0
- package/dist/core/ingestion/languages/java/scope-resolver.js +23 -0
- package/dist/core/ingestion/languages/java/spring-bean-metadata.d.ts +2 -0
- package/dist/core/ingestion/languages/java/spring-bean-metadata.js +8 -0
- package/dist/core/ingestion/languages/java/spring-config-bindings.d.ts +23 -0
- package/dist/core/ingestion/languages/java/spring-config-bindings.js +215 -0
- package/dist/core/ingestion/languages/java.js +3 -0
- package/dist/core/ingestion/languages/javascript/captures.js +16 -0
- package/dist/core/ingestion/languages/javascript/query.js +21 -0
- package/dist/core/ingestion/languages/jvm/package-facts.d.ts +35 -0
- package/dist/core/ingestion/languages/jvm/package-facts.js +40 -0
- package/dist/core/ingestion/languages/jvm/package-siblings.d.ts +14 -0
- package/dist/core/ingestion/languages/jvm/package-siblings.js +129 -0
- package/dist/core/ingestion/languages/kotlin/capture-side-channel.d.ts +17 -3
- package/dist/core/ingestion/languages/kotlin/capture-side-channel.js +42 -8
- package/dist/core/ingestion/languages/kotlin/captures.js +59 -0
- package/dist/core/ingestion/languages/kotlin/package-facts.d.ts +5 -0
- package/dist/core/ingestion/languages/kotlin/package-facts.js +9 -0
- package/dist/core/ingestion/languages/kotlin/package-siblings.d.ts +4 -0
- package/dist/core/ingestion/languages/kotlin/package-siblings.js +8 -0
- package/dist/core/ingestion/languages/kotlin/query.js +19 -0
- package/dist/core/ingestion/languages/kotlin/scope-resolver.js +9 -1
- package/dist/core/ingestion/languages/kotlin/spring-bean-metadata.d.ts +2 -0
- package/dist/core/ingestion/languages/kotlin/spring-bean-metadata.js +8 -0
- package/dist/core/ingestion/languages/kotlin.js +5 -6
- package/dist/core/ingestion/languages/move.d.ts +1 -0
- package/dist/core/ingestion/languages/move.js +27 -0
- package/dist/core/ingestion/languages/php/captures.js +40 -0
- package/dist/core/ingestion/languages/php/import-decomposer.js +12 -0
- package/dist/core/ingestion/languages/php/import-target.d.ts +2 -1
- package/dist/core/ingestion/languages/php/import-target.js +110 -2
- package/dist/core/ingestion/languages/php/interpret.js +10 -0
- package/dist/core/ingestion/languages/php/scope-resolver.js +1 -1
- package/dist/core/ingestion/languages/python/captures.d.ts +3 -4
- package/dist/core/ingestion/languages/python/captures.js +24 -5
- package/dist/core/ingestion/languages/python/interpret.js +4 -0
- package/dist/core/ingestion/languages/python/receiver-binding.d.ts +15 -2
- package/dist/core/ingestion/languages/python/receiver-binding.js +96 -2
- package/dist/core/ingestion/languages/python/simple-hooks.d.ts +5 -5
- package/dist/core/ingestion/languages/python/simple-hooks.js +15 -5
- package/dist/core/ingestion/languages/ruby/captures.js +42 -0
- package/dist/core/ingestion/languages/rust/captures.js +13 -0
- package/dist/core/ingestion/languages/rust/interpret.js +18 -0
- package/dist/core/ingestion/languages/rust/query.js +9 -0
- package/dist/core/ingestion/languages/rust/range-binding.js +6 -2
- package/dist/core/ingestion/languages/swift/captures.js +12 -0
- package/dist/core/ingestion/languages/typescript/captures.js +21 -0
- package/dist/core/ingestion/languages/typescript/nuxt-auto-imports.js +2 -1
- package/dist/core/ingestion/languages/typescript/query.js +37 -0
- package/dist/core/ingestion/markdown-processor.js +3 -2
- package/dist/core/ingestion/model/registration-table.js +1 -0
- package/dist/core/ingestion/parsing-processor.d.ts +3 -1
- package/dist/core/ingestion/parsing-processor.js +36 -1
- 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.js +56 -2
- package/dist/core/ingestion/pipeline-phases/parse.d.ts +0 -2
- package/dist/core/ingestion/pipeline-phases/parse.js +12 -3
- package/dist/core/ingestion/pipeline-phases/processes.d.ts +8 -0
- package/dist/core/ingestion/pipeline-phases/processes.js +11 -1
- package/dist/core/ingestion/pipeline-phases/spring-config.d.ts +37 -0
- package/dist/core/ingestion/pipeline-phases/spring-config.js +433 -0
- package/dist/core/ingestion/pipeline-phases/standalone-ingest.d.ts +10 -0
- package/dist/core/ingestion/pipeline-phases/standalone-ingest.js +6 -0
- package/dist/core/ingestion/pipeline.d.ts +4 -2
- package/dist/core/ingestion/pipeline.js +5 -2
- package/dist/core/ingestion/resolve-references.js +12 -0
- package/dist/core/ingestion/route-extractors/constant-resolver.d.ts +83 -0
- package/dist/core/ingestion/route-extractors/constant-resolver.js +131 -0
- package/dist/core/ingestion/route-extractors/python-const-resolver.d.ts +75 -0
- package/dist/core/ingestion/route-extractors/python-const-resolver.js +299 -0
- package/dist/core/ingestion/scope-extractor.js +306 -43
- package/dist/core/ingestion/scope-resolution/contract/scope-resolver.d.ts +71 -2
- package/dist/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.d.ts +7 -7
- package/dist/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.js +8 -7
- package/dist/core/ingestion/scope-resolution/graph-bridge/edges.d.ts +3 -1
- package/dist/core/ingestion/scope-resolution/graph-bridge/edges.js +6 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/ids.js +1 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +4 -1
- package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +7 -2
- package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.d.ts +47 -0
- package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.js +1138 -0
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.d.ts +16 -4
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.js +97 -1
- package/dist/core/ingestion/scope-resolution/passes/property-dispatch.d.ts +60 -0
- package/dist/core/ingestion/scope-resolution/passes/property-dispatch.js +111 -0
- package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.d.ts +4 -3
- package/dist/core/ingestion/scope-resolution/pipeline/phase.d.ts +5 -0
- package/dist/core/ingestion/scope-resolution/pipeline/phase.js +25 -38
- package/dist/core/ingestion/scope-resolution/pipeline/run.d.ts +6 -0
- package/dist/core/ingestion/scope-resolution/pipeline/run.js +147 -35
- package/dist/core/ingestion/scope-resolution/resolution-outcome.d.ts +1 -1
- package/dist/core/ingestion/scope-resolution/scope/walkers.js +73 -44
- package/dist/core/ingestion/taint/typescript-model.js +34 -2
- package/dist/core/ingestion/tree-sitter-queries.d.ts +2 -2
- package/dist/core/ingestion/tree-sitter-queries.js +23 -2
- package/dist/core/ingestion/type-extractors/jvm.js +17 -2
- package/dist/core/ingestion/utils/ast-helpers.d.ts +1 -0
- package/dist/core/ingestion/utils/ast-helpers.js +153 -2
- package/dist/core/ingestion/utils/callable-flow-captures.d.ts +94 -0
- package/dist/core/ingestion/utils/callable-flow-captures.js +878 -0
- package/dist/core/ingestion/utils/line-base.d.ts +20 -0
- package/dist/core/ingestion/utils/line-base.js +20 -0
- package/dist/core/ingestion/utils/symbol-labels.d.ts +21 -0
- package/dist/core/ingestion/utils/symbol-labels.js +45 -0
- package/dist/core/ingestion/workers/parse-worker.d.ts +34 -0
- package/dist/core/ingestion/workers/parse-worker.js +40 -5
- package/dist/core/ingestion/workers/result-merge.js +4 -0
- package/dist/core/ingestion/workers/worker-pool.d.ts +28 -0
- package/dist/core/ingestion/workers/worker-pool.js +128 -28
- package/dist/core/lbug/csv-generator.d.ts +15 -0
- package/dist/core/lbug/csv-generator.js +124 -27
- package/dist/core/lbug/cypher-escape.d.ts +20 -0
- package/dist/core/lbug/cypher-escape.js +20 -0
- package/dist/core/lbug/extension-load-error.d.ts +67 -0
- package/dist/core/lbug/extension-load-error.js +326 -0
- package/dist/core/lbug/extension-loader.d.ts +17 -2
- package/dist/core/lbug/extension-loader.js +38 -13
- package/dist/core/lbug/lbug-adapter.d.ts +203 -2
- package/dist/core/lbug/lbug-adapter.js +527 -86
- package/dist/core/lbug/lbug-config.d.ts +56 -2
- package/dist/core/lbug/lbug-config.js +267 -7
- package/dist/core/lbug/move-columns.d.ts +7 -0
- package/dist/core/lbug/move-columns.js +86 -0
- package/dist/core/lbug/native-check.d.ts +40 -0
- package/dist/core/lbug/native-check.js +90 -0
- package/dist/core/lbug/node-table-layout.d.ts +29 -0
- package/dist/core/lbug/node-table-layout.js +119 -0
- package/dist/core/lbug/pool-adapter.d.ts +23 -1
- package/dist/core/lbug/pool-adapter.js +115 -8
- package/dist/core/lbug/schema.d.ts +4 -3
- package/dist/core/lbug/schema.js +16 -16
- package/dist/core/lbug/sidecar-recovery.d.ts +172 -0
- package/dist/core/lbug/sidecar-recovery.js +418 -16
- package/dist/core/lbug/wal-checkpoint-driver.js +3 -0
- package/dist/core/move/artifact-download.d.ts +19 -0
- package/dist/core/move/artifact-download.js +179 -0
- package/dist/core/move/compiler-facts.d.ts +120 -0
- package/dist/core/move/compiler-facts.js +9 -0
- package/dist/core/move/consistency.d.ts +28 -0
- package/dist/core/move/consistency.js +98 -0
- package/dist/core/move/constants.d.ts +98 -0
- package/dist/core/move/constants.js +136 -0
- package/dist/core/move/discovery.d.ts +10 -0
- package/dist/core/move/discovery.js +22 -0
- package/dist/core/move/entry-points.d.ts +14 -0
- package/dist/core/move/entry-points.js +40 -0
- package/dist/core/move/facts-mapper.d.ts +75 -0
- package/dist/core/move/facts-mapper.js +534 -0
- package/dist/core/move/install-lock.d.ts +14 -0
- package/dist/core/move/install-lock.js +102 -0
- package/dist/core/move/install.d.ts +39 -0
- package/dist/core/move/install.js +391 -0
- package/dist/core/move/mcp-client.d.ts +115 -0
- package/dist/core/move/mcp-client.js +436 -0
- package/dist/core/move/move-ingest.d.ts +49 -0
- package/dist/core/move/move-ingest.js +320 -0
- package/dist/core/move/provision.d.ts +19 -0
- package/dist/core/move/provision.js +91 -0
- package/dist/core/move/release.d.ts +6 -0
- package/dist/core/move/release.js +10 -0
- package/dist/core/move/symbol-id.d.ts +35 -0
- package/dist/core/move/symbol-id.js +65 -0
- package/dist/core/move/type-parser.d.ts +11 -0
- package/dist/core/move/type-parser.js +38 -0
- package/dist/core/platform/capabilities.d.ts +0 -1
- package/dist/core/platform/capabilities.js +39 -8
- package/dist/core/run-analyze.d.ts +3 -3
- package/dist/core/run-analyze.js +1001 -184
- package/dist/core/search/fts-indexes.d.ts +31 -0
- package/dist/core/search/fts-indexes.js +73 -0
- package/dist/core/search/fts-schema.js +2 -0
- package/dist/core/tree-sitter/safe-parse.d.ts +8 -3
- package/dist/core/tree-sitter/safe-parse.js +21 -7
- package/dist/core/wiki/graph-queries.js +6 -5
- package/dist/core/wiki/llm-client.d.ts +8 -2
- package/dist/core/wiki/llm-client.js +41 -5
- package/dist/mcp/core/embedder.js +16 -2
- package/dist/mcp/http-transport.d.ts +5 -0
- package/dist/mcp/http-transport.js +19 -5
- package/dist/mcp/local/bean-metadata.d.ts +2 -0
- package/dist/mcp/local/bean-metadata.js +25 -0
- package/dist/mcp/local/line-display.d.ts +22 -0
- package/dist/mcp/local/line-display.js +3 -0
- package/dist/mcp/local/local-backend.d.ts +19 -1
- package/dist/mcp/local/local-backend.js +402 -155
- package/dist/mcp/local/pdg-impact.d.ts +5 -3
- package/dist/mcp/local/pdg-impact.js +5 -2
- package/dist/mcp/output-budget.d.ts +5 -0
- package/dist/mcp/output-budget.js +52 -0
- package/dist/mcp/read-only-policy.d.ts +12 -0
- package/dist/mcp/read-only-policy.js +102 -0
- package/dist/mcp/repository-policy.d.ts +34 -0
- package/dist/mcp/repository-policy.js +328 -0
- package/dist/mcp/resources.js +32 -5
- package/dist/mcp/server.d.ts +5 -2
- package/dist/mcp/server.js +29 -9
- package/dist/mcp/tools.d.ts +0 -8
- package/dist/mcp/tools.js +102 -5
- package/dist/server/analyze-job.d.ts +3 -0
- package/dist/server/analyze-job.js +17 -0
- package/dist/server/analyze-launch.d.ts +6 -0
- package/dist/server/analyze-launch.js +82 -6
- package/dist/server/analyze-worker-core.d.ts +2 -1
- package/dist/server/analyze-worker-core.js +5 -2
- package/dist/server/analyze-worker.js +29 -6
- package/dist/server/api.d.ts +30 -0
- package/dist/server/api.js +120 -34
- package/dist/server/mcp-http.d.ts +1 -1
- package/dist/server/mcp-http.js +4 -2
- package/dist/server/upload-ingest.js +2 -1
- package/dist/server/validation.js +2 -1
- package/dist/storage/git.d.ts +31 -0
- package/dist/storage/git.js +111 -1
- package/dist/storage/parse-cache.js +7 -1
- package/dist/storage/parsedfile-store.d.ts +8 -0
- package/dist/storage/parsedfile-store.js +165 -1
- package/dist/storage/repo-manager.d.ts +194 -2
- package/dist/storage/repo-manager.js +56 -1
- package/hooks/antigravity/gitnexus-antigravity-hook.cjs +50 -3
- package/hooks/claude/gitnexus-hook.cjs +59 -9
- package/hooks/claude/pre-tool-use.sh +0 -0
- package/hooks/claude/session-start.sh +0 -0
- package/package.json +21 -15
- package/scripts/cross-platform-tests.ts +56 -0
- package/scripts/ensure-fts.ts +43 -0
- package/scripts/install-duckdb-extension.mjs +85 -24
- package/scripts/run-cross-platform.ts +61 -6
- package/scripts/shard-arg.ts +30 -0
- package/scripts/sync-plugin-manifests.mjs +192 -0
- package/skills/gitnexus-lfg/README.md +55 -0
- package/skills/gitnexus-lfg/SKILL.md +86 -0
- package/skills/gitnexus-plan/README.md +142 -0
- package/skills/gitnexus-plan/SKILL.md +348 -0
- package/skills/gitnexus-plan/references/context-ledger.md +137 -0
- package/skills/gitnexus-plan/references/context-pack.md +126 -0
- package/skills/gitnexus-plan/references/evidence-provenance.md +272 -0
- package/skills/gitnexus-plan/references/pdg-slice.md +109 -0
- package/skills/gitnexus-plan/references/plan-template.md +201 -0
- package/skills/gitnexus-plan/scripts/evidence-provenance.mjs +2084 -0
- package/skills/gitnexus-review/SKILL.md +273 -0
- package/skills/gitnexus-review/ci-personas/ci-adversarial-lens.md +42 -0
- package/skills/gitnexus-review/ci-personas/ci-blast-radius-lens.md +39 -0
- package/skills/gitnexus-review/ci-personas/ci-correctness-lens.md +37 -0
- package/skills/gitnexus-review/ci-personas/ci-coverage-lens.md +40 -0
- package/skills/gitnexus-review/ci-personas/ci-critic-lens.md +42 -0
- package/skills/gitnexus-review/ci-personas/ci-security-lens.md +39 -0
- package/skills/gitnexus-work/README.md +71 -0
- package/skills/gitnexus-work/SKILL.md +269 -0
- package/skills/gitnexus-work/references/evidence-provenance.md +272 -0
- package/skills/gitnexus-work/scripts/evidence-provenance.mjs +2084 -0
- package/web/assets/ProcessFlowModal-B_bfBySy.js +22 -0
- package/web/assets/__vite-browser-external-bMKyYQkO.js +1 -0
- package/web/assets/agent-Bqxn-abU.js +626 -0
- package/web/assets/architecture-7EHR7CIX-6QZW5X65-BVWFvYz2.js +1 -0
- package/web/assets/architectureDiagram-UL44E2DR-CmG3uPWf.js +36 -0
- package/web/assets/{blockDiagram-7IZFK4PR-BkWhpzWB.js → blockDiagram-7IZFK4PR-DBefcjof.js} +7 -7
- package/web/assets/{c4Diagram-Y2BXMSZH-DtBvpzWD.js → c4Diagram-Y2BXMSZH-EjWnjEJl.js} +6 -6
- package/web/assets/chunk-2T2R6R2M-Bb6Sy3_j.js +4 -0
- package/web/assets/chunk-2UTLFMKG-CXlhF3Pt.js +1 -0
- package/web/assets/chunk-3SSMPTDK-rPsRM1x0.js +321 -0
- package/web/assets/chunk-4R4BOZG6-Be_F0JoX.js +159 -0
- package/web/assets/{chunk-6764PJDD-DpIS7hxD.js → chunk-6764PJDD-C7xxk063.js} +1 -1
- package/web/assets/chunk-67TQ5CYL-CA7OhIEf.js +124 -0
- package/web/assets/chunk-7FYTHRHK-CsmYIswB.js +32 -0
- package/web/assets/chunk-7J6CGLKN-BlKwgXKs.js +10 -0
- package/web/assets/chunk-7W6UQGC5-pyKGssV3.js +1 -0
- package/web/assets/chunk-C62D2QBJ-3gdL8EKc.js +1 -0
- package/web/assets/chunk-CEXFNPSA-CjwtMDkc.js +1 -0
- package/web/assets/{chunk-INKRHTLW-Nu4ri9P-.js → chunk-INKRHTLW-Ckl3_KkO.js} +13 -13
- package/web/assets/chunk-J5EP6P6S-L19oz55R.js +1 -0
- package/web/assets/{chunk-KGFNY3KK-JGMJvKCK.js → chunk-KGFNY3KK-BZeP-55u.js} +17 -17
- package/web/assets/chunk-KGYTTC2M-zm6n242I.js +1 -0
- package/web/assets/{chunk-KRXBNO2N-BW5o0KUN.js → chunk-KRXBNO2N-C-UNuKKf.js} +1 -1
- package/web/assets/{chunk-LCXTWHL2-CfLLCywY.js → chunk-LCXTWHL2-C162wE5z.js} +5 -5
- package/web/assets/chunk-LII3EMHJ-BL6lKJ_P.js +1 -0
- package/web/assets/chunk-LRIF4GLE-n59lhprL.js +1 -0
- package/web/assets/chunk-QA3QBVWF-DVXPOIxe.js +2 -0
- package/web/assets/chunk-RERM46MO-B5dAdWpP.js +1 -0
- package/web/assets/chunk-RG4AUYOV-ZNgyLFq6.js +206 -0
- package/web/assets/chunk-RKZBBQEN-MyIQbGgD.js +1 -0
- package/web/assets/chunk-RLI5ZMPA-CkXZ0y0U.js +1 -0
- package/web/assets/chunk-T2UQINTJ-BEyXhZWe.js +1 -0
- package/web/assets/chunk-UP6H54XL-BG-n7qDp.js +1 -0
- package/web/assets/chunk-UXSXWOXI-CW1_r5cS.js +1 -0
- package/web/assets/chunk-UY5QBCOK-ByqTVLvh.js +1 -0
- package/web/assets/chunk-VU6ZFW4Y-BLeasdkU.js +2 -0
- package/web/assets/{chunk-W44A43WB-JqMLIpR0.js → chunk-W44A43WB-BN8EQc_u.js} +1 -1
- package/web/assets/chunk-ZXARS5L4-C3v-4Fsw.js +1 -0
- package/web/assets/classDiagram-KGZ6W3CR-olpO3fMe.js +1 -0
- package/web/assets/classDiagram-v2-72OJOZXJ-olpO3fMe.js +1 -0
- package/web/assets/cose-bilkent-UX7MHV2Q-BmnZ7Mvj.js +1 -0
- package/web/assets/dagre-ND4H6XIP-CY4iIF7v.js +4 -0
- package/web/assets/diagram-3NCE3AQN-CO6QpzEE.js +43 -0
- package/web/assets/diagram-GF46GFSD-B2atbzmU.js +24 -0
- package/web/assets/diagram-HNR7UZ2L-DVRltWbL.js +3 -0
- package/web/assets/diagram-QXG6HAR7-DR6AHD2h.js +24 -0
- package/web/assets/diagram-WEQXMOUZ-DkpoMwTL.js +10 -0
- package/web/assets/erDiagram-L5TCEMPS-n8g_90bc.js +85 -0
- package/web/assets/eventmodeling-FCH6USID-MREXMVOE-CgFBM7e-.js +1 -0
- package/web/assets/flowDiagram-H6V6AXG4-SGMDiCkB.js +162 -0
- package/web/assets/ganttDiagram-JCBTUEKG-Cb3UBqRS.js +292 -0
- package/web/assets/gitGraph-WXDBUCRP-R675I2BI-DCJv7SII.js +1 -0
- package/web/assets/gitGraphDiagram-S2ZK5IYY-Bs9CR7tq.js +106 -0
- package/web/assets/index-CX_fADmQ.css +2 -0
- package/web/assets/index-D1Z3dGGz.js +575 -0
- package/web/assets/info-J43DQDTF-KCYPFFUO-BfNy-9Nd.js +1 -0
- package/web/assets/infoDiagram-3YFTVSEB-T368on4D.js +2 -0
- package/web/assets/{ishikawaDiagram-BNXS4ZKH-DfYpxnE5.js → ishikawaDiagram-BNXS4ZKH-XpjJRU9h.js} +6 -6
- package/web/assets/journeyDiagram-M6C3CM3L-C6wjooas.js +139 -0
- package/web/assets/kanban-definition-75IXJCU3-5_UVY79g.js +89 -0
- package/web/assets/{katex-K3KEBU37-CTc5BslQ.js → katex-K3KEBU37-qRQBy-EZ.js} +2 -2
- package/web/assets/{mindmap-definition-2TDM6QVE-DypvbOMQ.js → mindmap-definition-2TDM6QVE-8xDLzk2e.js} +29 -29
- package/web/assets/node-Ct_zna8U.js +8 -0
- package/web/assets/packet-YPE3B663-LP52Z2RK-D4qkeG9k.js +1 -0
- package/web/assets/pie-LRSECV5Y-TCRJHUBD-B_yMKyQa.js +1 -0
- package/web/assets/pieDiagram-CU6KROY3-Bv4LpAbr.js +30 -0
- package/web/assets/preload-helper-Czpn1I53.js +1 -0
- package/web/assets/{quadrantDiagram-VICAPDV7-yXSZ2lLz.js → quadrantDiagram-VICAPDV7-DR54jOeR.js} +6 -6
- package/web/assets/radar-GUYGQ44K-RDLRG3WG-DeD6yN_0.js +1 -0
- package/web/assets/requirementDiagram-JXO7QTGE-PEkg7sKC.js +84 -0
- package/web/assets/rolldown-runtime-QTnfLwEv.js +1 -0
- package/web/assets/sankeyDiagram-URQDO5SZ-DDWEtjcs.js +40 -0
- package/web/assets/sdk-CzHHH8tD.js +37 -0
- package/web/assets/sequenceDiagram-VS2MUI6T-Bv-uwANx.js +162 -0
- package/web/assets/src-JV30wyV8.js +1 -0
- package/web/assets/stateDiagram-7D4R322I-DVNjmkEq.js +1 -0
- package/web/assets/stateDiagram-v2-36443NZ5-CyN4Fh7_.js +1 -0
- package/web/assets/timeline-definition-O6YCAMPW-Qmsuo7qS.js +120 -0
- package/web/assets/treeView-BLDUP644-QA4HXRO3-CDuSYnd4.js +1 -0
- package/web/assets/treemap-LRROVOQU-LLAWBHMP-imazucyJ.js +1 -0
- package/web/assets/vennDiagram-MWXL3ELB-BD1iK1SX.js +34 -0
- package/web/assets/wardley-L42UT6IY-5TKZOOLJ-DqrT9tB8.js +1 -0
- package/web/assets/wardleyDiagram-CUQ6CDDI-D6TzLVob.js +78 -0
- package/web/assets/{xychartDiagram-N2JHSOCM-BOLm0eNm.js → xychartDiagram-N2JHSOCM-CoZ_Tits.js} +6 -6
- package/web/index.html +18 -10
- package/skills/gitnexus-pr-review.md +0 -163
- package/web/assets/agent-Dli_x7bU.js +0 -660
- package/web/assets/architecture-7EHR7CIX-6QZW5X65-DxJw65fT.js +0 -1
- package/web/assets/architectureDiagram-UL44E2DR-dEkqUZN9.js +0 -36
- package/web/assets/chunk-3SSMPTDK-B4_etUhr.js +0 -321
- package/web/assets/chunk-67TQ5CYL-4sNPJU1q.js +0 -124
- package/web/assets/chunk-7W6UQGC5-KyEG0HQg.js +0 -1
- package/web/assets/chunk-KGYTTC2M-CWC_c3H9.js +0 -161
- package/web/assets/chunk-LII3EMHJ-D-jm-dLa.js +0 -1
- package/web/assets/chunk-QA3QBVWF-BgRW3SXd.js +0 -2
- package/web/assets/chunk-RG4AUYOV-CqWzWsV3.js +0 -206
- package/web/assets/chunk-T2UQINTJ-DSBqkzH7.js +0 -1
- package/web/assets/chunk-UY5QBCOK-DyF0vyGd.js +0 -1
- package/web/assets/chunk-ZXARS5L4-CxN8oiwI.js +0 -1
- package/web/assets/classDiagram-KGZ6W3CR-CMne4tG9.js +0 -1
- package/web/assets/classDiagram-v2-72OJOZXJ-CMne4tG9.js +0 -1
- package/web/assets/cose-bilkent-UX7MHV2Q-D71wNYRJ.js +0 -1
- package/web/assets/dagre-ND4H6XIP-Co5rRx9X.js +0 -4
- package/web/assets/diagram-3NCE3AQN-DBp4O00j.js +0 -43
- package/web/assets/diagram-GF46GFSD-6N_8yS0i.js +0 -24
- package/web/assets/diagram-HNR7UZ2L-DFCfd5LI.js +0 -3
- package/web/assets/diagram-QXG6HAR7-Di093rFg.js +0 -24
- package/web/assets/diagram-WEQXMOUZ-DZWi4SUN.js +0 -10
- package/web/assets/erDiagram-L5TCEMPS-8X1y6R4Y.js +0 -85
- package/web/assets/eventmodeling-FCH6USID-MREXMVOE-BQm9QzEa.js +0 -1
- package/web/assets/flowDiagram-H6V6AXG4-CMpY8Ufn.js +0 -162
- package/web/assets/ganttDiagram-JCBTUEKG-D3iL2Aet.js +0 -292
- package/web/assets/gitGraph-WXDBUCRP-R675I2BI-Cr_Bm2Nb.js +0 -1
- package/web/assets/gitGraphDiagram-S2ZK5IYY-CPIDgxGm.js +0 -106
- package/web/assets/index-KctnI3Vq.js +0 -635
- package/web/assets/index-_lgn7hs5.css +0 -2
- package/web/assets/info-J43DQDTF-KCYPFFUO-Cs4p2oyk.js +0 -1
- package/web/assets/infoDiagram-3YFTVSEB-BaLMZkUg.js +0 -2
- package/web/assets/journeyDiagram-M6C3CM3L-CvArszLo.js +0 -139
- package/web/assets/kanban-definition-75IXJCU3-CpfVLLf9.js +0 -89
- package/web/assets/packet-YPE3B663-LP52Z2RK-CKCrztD2.js +0 -1
- package/web/assets/pie-LRSECV5Y-TCRJHUBD-BB7pHqoD.js +0 -1
- package/web/assets/pieDiagram-CU6KROY3-s27EFWgP.js +0 -30
- package/web/assets/radar-GUYGQ44K-RDLRG3WG-DhoTOcuK.js +0 -1
- package/web/assets/requirementDiagram-JXO7QTGE-CWhqInuf.js +0 -84
- package/web/assets/sankeyDiagram-URQDO5SZ-1qEjlFIB.js +0 -40
- package/web/assets/sequenceDiagram-VS2MUI6T-RyTlZ5cR.js +0 -162
- package/web/assets/stateDiagram-7D4R322I-DTjVfX4A.js +0 -1
- package/web/assets/stateDiagram-v2-36443NZ5-xY9_k9_Q.js +0 -1
- package/web/assets/timeline-definition-O6YCAMPW-DrrqLYAf.js +0 -120
- package/web/assets/treeView-BLDUP644-QA4HXRO3-ODehyGKL.js +0 -1
- package/web/assets/treemap-LRROVOQU-LLAWBHMP-BfpgC-7o.js +0 -1
- package/web/assets/vennDiagram-MWXL3ELB-B0RkWAim.js +0 -34
- package/web/assets/wardley-L42UT6IY-5TKZOOLJ-CNeL6VHE.js +0 -1
- package/web/assets/wardleyDiagram-CUQ6CDDI-boUxiQ5F.js +0 -78
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { NodeTableName } from '../../_shared/index.js';
|
|
2
|
+
export type CsvColumnEncoding = 'node-id' | 'string' | 'number' | 'boolean' | 'string-array' | 'content' | 'description';
|
|
3
|
+
export interface NodeTableColumnSpec {
|
|
4
|
+
name: string;
|
|
5
|
+
ddlType: string;
|
|
6
|
+
csvEncoding: CsvColumnEncoding;
|
|
7
|
+
defaultValue?: string | number | boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface NodeTableLayout {
|
|
10
|
+
table: NodeTableName;
|
|
11
|
+
columns: readonly NodeTableColumnSpec[];
|
|
12
|
+
quoteTableName?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare const CODE_ELEMENT_COLUMNS: string[];
|
|
15
|
+
export declare const MULTI_LANG_BASE_COLUMNS: string[];
|
|
16
|
+
export declare const NODE_TABLE_LAYOUTS: {
|
|
17
|
+
readonly Function: NodeTableLayout;
|
|
18
|
+
readonly Struct: NodeTableLayout;
|
|
19
|
+
readonly Enum: NodeTableLayout;
|
|
20
|
+
readonly EnumVariant: NodeTableLayout;
|
|
21
|
+
readonly Const: NodeTableLayout;
|
|
22
|
+
readonly Module: NodeTableLayout;
|
|
23
|
+
};
|
|
24
|
+
export type LayoutTableName = keyof typeof NODE_TABLE_LAYOUTS;
|
|
25
|
+
export declare const hasNodeTableLayout: (table: string) => table is LayoutTableName;
|
|
26
|
+
export declare const getNodeTableLayout: (table: LayoutTableName) => NodeTableLayout;
|
|
27
|
+
export declare const getNodeTableColumnNames: (table: NodeTableName) => readonly string[] | undefined;
|
|
28
|
+
export declare const getNodeTableCsvHeader: (table: LayoutTableName) => string;
|
|
29
|
+
export declare const buildNodeTableSchema: (table: LayoutTableName) => string;
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
const column = (name, ddlType, csvEncoding = 'string', defaultValue) => ({ name, ddlType, csvEncoding, defaultValue });
|
|
2
|
+
const CODE_ELEMENT_BASE = [
|
|
3
|
+
column('id', 'STRING', 'node-id'),
|
|
4
|
+
column('name', 'STRING'),
|
|
5
|
+
column('filePath', 'STRING'),
|
|
6
|
+
column('startLine', 'INT64', 'number', -1),
|
|
7
|
+
column('endLine', 'INT64', 'number', -1),
|
|
8
|
+
column('isExported', 'BOOLEAN', 'boolean', false),
|
|
9
|
+
column('content', 'STRING', 'content'),
|
|
10
|
+
column('description', 'STRING', 'description'),
|
|
11
|
+
];
|
|
12
|
+
// Same base as code elements minus isExported (multi-language tables have none).
|
|
13
|
+
const MULTI_LANGUAGE_BASE = CODE_ELEMENT_BASE.filter(({ name }) => name !== 'isExported');
|
|
14
|
+
export const CODE_ELEMENT_COLUMNS = CODE_ELEMENT_BASE.map(({ name }) => name);
|
|
15
|
+
export const MULTI_LANG_BASE_COLUMNS = MULTI_LANGUAGE_BASE.map(({ name }) => name);
|
|
16
|
+
const FUNCTION_LAYOUT = {
|
|
17
|
+
table: 'Function',
|
|
18
|
+
columns: [
|
|
19
|
+
...CODE_ELEMENT_BASE,
|
|
20
|
+
column('language', 'STRING'),
|
|
21
|
+
column('qualifiedName', 'STRING'),
|
|
22
|
+
column('moduleQualifiedName', 'STRING'),
|
|
23
|
+
column('visibility', 'STRING'),
|
|
24
|
+
column('visibilityModifier', 'STRING'),
|
|
25
|
+
column('isEntry', 'BOOLEAN', 'boolean', false),
|
|
26
|
+
column('isView', 'BOOLEAN', 'boolean', false),
|
|
27
|
+
column('isInline', 'BOOLEAN', 'boolean', false),
|
|
28
|
+
column('isNative', 'BOOLEAN', 'boolean', false),
|
|
29
|
+
column('parameterCount', 'INT32', 'number', 0),
|
|
30
|
+
column('returnType', 'STRING'),
|
|
31
|
+
column('acquires', 'STRING[]', 'string-array'),
|
|
32
|
+
column('usedTypes', 'STRING[]', 'string-array'),
|
|
33
|
+
column('attributes', 'STRING[]', 'string-array'),
|
|
34
|
+
column('attributesJson', 'STRING'),
|
|
35
|
+
column('typeParamsJson', 'STRING'),
|
|
36
|
+
column('locationFidelity', 'STRING'),
|
|
37
|
+
],
|
|
38
|
+
};
|
|
39
|
+
const structLikeLayout = (table) => ({
|
|
40
|
+
table,
|
|
41
|
+
quoteTableName: true,
|
|
42
|
+
columns: [
|
|
43
|
+
...MULTI_LANGUAGE_BASE,
|
|
44
|
+
column('language', 'STRING'),
|
|
45
|
+
column('qualifiedName', 'STRING'),
|
|
46
|
+
column('moduleQualifiedName', 'STRING'),
|
|
47
|
+
column('moduleAddress', 'STRING'),
|
|
48
|
+
column('abilities', 'STRING[]', 'string-array'),
|
|
49
|
+
column('isResource', 'BOOLEAN', 'boolean', false),
|
|
50
|
+
column('isEvent', 'BOOLEAN', 'boolean', false),
|
|
51
|
+
column('fieldList', 'STRING[]', 'string-array'),
|
|
52
|
+
column('attributes', 'STRING[]', 'string-array'),
|
|
53
|
+
column('attributesJson', 'STRING'),
|
|
54
|
+
column('typeParamsJson', 'STRING'),
|
|
55
|
+
column('moveDeclarationKind', 'STRING'),
|
|
56
|
+
column('locationFidelity', 'STRING'),
|
|
57
|
+
],
|
|
58
|
+
});
|
|
59
|
+
const ENUM_VARIANT_LAYOUT = {
|
|
60
|
+
table: 'EnumVariant',
|
|
61
|
+
quoteTableName: true,
|
|
62
|
+
columns: [
|
|
63
|
+
...MULTI_LANGUAGE_BASE,
|
|
64
|
+
column('language', 'STRING'),
|
|
65
|
+
column('qualifiedName', 'STRING'),
|
|
66
|
+
column('parentEnum', 'STRING'),
|
|
67
|
+
column('moduleQualifiedName', 'STRING'),
|
|
68
|
+
column('variantKind', 'STRING'),
|
|
69
|
+
column('fieldsJson', 'STRING'),
|
|
70
|
+
column('attributes', 'STRING[]', 'string-array'),
|
|
71
|
+
column('attributesJson', 'STRING'),
|
|
72
|
+
column('locationFidelity', 'STRING'),
|
|
73
|
+
],
|
|
74
|
+
};
|
|
75
|
+
const CONST_LAYOUT = {
|
|
76
|
+
table: 'Const',
|
|
77
|
+
quoteTableName: true,
|
|
78
|
+
columns: [
|
|
79
|
+
...MULTI_LANGUAGE_BASE,
|
|
80
|
+
column('language', 'STRING'),
|
|
81
|
+
column('qualifiedName', 'STRING'),
|
|
82
|
+
column('moduleQualifiedName', 'STRING'),
|
|
83
|
+
column('constType', 'STRING'),
|
|
84
|
+
column('constValue', 'STRING'),
|
|
85
|
+
column('isErrorCode', 'BOOLEAN', 'boolean', false),
|
|
86
|
+
column('locationFidelity', 'STRING'),
|
|
87
|
+
],
|
|
88
|
+
};
|
|
89
|
+
const MODULE_LAYOUT = {
|
|
90
|
+
table: 'Module',
|
|
91
|
+
quoteTableName: true,
|
|
92
|
+
columns: [
|
|
93
|
+
...MULTI_LANGUAGE_BASE,
|
|
94
|
+
column('language', 'STRING'),
|
|
95
|
+
column('qualifiedName', 'STRING'),
|
|
96
|
+
column('moduleAddress', 'STRING'),
|
|
97
|
+
column('attributes', 'STRING[]', 'string-array'),
|
|
98
|
+
column('attributesJson', 'STRING'),
|
|
99
|
+
column('locationFidelity', 'STRING'),
|
|
100
|
+
],
|
|
101
|
+
};
|
|
102
|
+
export const NODE_TABLE_LAYOUTS = {
|
|
103
|
+
Function: FUNCTION_LAYOUT,
|
|
104
|
+
Struct: structLikeLayout('Struct'),
|
|
105
|
+
Enum: structLikeLayout('Enum'),
|
|
106
|
+
EnumVariant: ENUM_VARIANT_LAYOUT,
|
|
107
|
+
Const: CONST_LAYOUT,
|
|
108
|
+
Module: MODULE_LAYOUT,
|
|
109
|
+
};
|
|
110
|
+
export const hasNodeTableLayout = (table) => Object.hasOwn(NODE_TABLE_LAYOUTS, table);
|
|
111
|
+
export const getNodeTableLayout = (table) => NODE_TABLE_LAYOUTS[table];
|
|
112
|
+
export const getNodeTableColumnNames = (table) => hasNodeTableLayout(table) ? getNodeTableLayout(table).columns.map(({ name }) => name) : undefined;
|
|
113
|
+
export const getNodeTableCsvHeader = (table) => NODE_TABLE_LAYOUTS[table].columns.map(({ name }) => name).join(',');
|
|
114
|
+
export const buildNodeTableSchema = (table) => {
|
|
115
|
+
const layout = NODE_TABLE_LAYOUTS[table];
|
|
116
|
+
const tableName = layout.quoteTableName ? `\`${layout.table}\`` : layout.table;
|
|
117
|
+
const columns = layout.columns.map(({ name, ddlType }) => ` ${name} ${ddlType},`).join('\n');
|
|
118
|
+
return `\nCREATE NODE TABLE ${tableName} (\n${columns}\n PRIMARY KEY (id)\n)`;
|
|
119
|
+
};
|
|
@@ -15,6 +15,21 @@
|
|
|
15
15
|
* from the same Database is the officially supported concurrency pattern.
|
|
16
16
|
*/
|
|
17
17
|
import lbug from '@ladybugdb/core';
|
|
18
|
+
/** Filesystem identity used to detect an index rebuilt/mutated under a live
|
|
19
|
+
* read pool. `ino` catches a full-rebuild unlink+recreate or an atomic-rename
|
|
20
|
+
* swap; `mtimeMs`+`size` catch an in-place incremental writeback. */
|
|
21
|
+
interface DbIdentity {
|
|
22
|
+
ino: number;
|
|
23
|
+
mtimeMs: number;
|
|
24
|
+
size: number;
|
|
25
|
+
}
|
|
26
|
+
export declare function statDbIdentity(dbPath: string): Promise<DbIdentity | null>;
|
|
27
|
+
/** True only when both identities are known AND differ. A stat failure
|
|
28
|
+
* (ENOENT during the brief unlink window of a full rebuild) yields false, so
|
|
29
|
+
* the reader keeps serving its still-valid open inode until the NEW file
|
|
30
|
+
* appears with a different identity — avoiding a churn into a failed reopen
|
|
31
|
+
* mid-rebuild. */
|
|
32
|
+
export declare function dbIdentityChanged(prev: DbIdentity | null, next: DbIdentity | null): boolean;
|
|
18
33
|
/**
|
|
19
34
|
* Listeners notified when a pool entry is torn down (LRU eviction, idle
|
|
20
35
|
* timeout, explicit close). Used by upper layers (e.g. the BM25 search
|
|
@@ -87,7 +102,14 @@ export declare function restoreStdout(): void;
|
|
|
87
102
|
* Concurrent calls for the same repoId are deduplicated — the second caller
|
|
88
103
|
* awaits the first's in-progress init rather than starting a redundant one.
|
|
89
104
|
*/
|
|
90
|
-
|
|
105
|
+
/**
|
|
106
|
+
* Returns `true` when this call (re)opened a fresh handle onto the current
|
|
107
|
+
* on-disk file, `false` when it reused/served the existing handle (unchanged,
|
|
108
|
+
* or changed-but-a-query-is-in-flight). Callers that gate their own freshness
|
|
109
|
+
* bookkeeping on "did the pool actually roll over" (LocalBackend) use the
|
|
110
|
+
* return value; callers that only need the pool ready can ignore it.
|
|
111
|
+
*/
|
|
112
|
+
export declare const initLbug: (repoId: string, dbPath: string) => Promise<boolean>;
|
|
91
113
|
/**
|
|
92
114
|
* Initialize a pool entry from a pre-existing Database object.
|
|
93
115
|
*
|
|
@@ -16,10 +16,29 @@
|
|
|
16
16
|
*/
|
|
17
17
|
import fs from 'fs/promises';
|
|
18
18
|
import lbug from '@ladybugdb/core';
|
|
19
|
-
import { isReadOnlyDbError, loadFTSExtension } from './lbug-adapter.js';
|
|
19
|
+
import { isReadOnlyDbError, loadFTSExtension, loadVectorExtension } from './lbug-adapter.js';
|
|
20
20
|
import { closeQueryResults } from './query-result-utils.js';
|
|
21
21
|
import { createLbugDatabase, isWalCorruptionError, toNativeSafePath, WAL_RECOVERY_SUGGESTION, } from './lbug-config.js';
|
|
22
|
-
import { isMissingFsError, isMissingShadowSidecarError, isReadOnlyShadowReplayError, preflightLbugSidecars, quarantineWalForMissingShadow, renameFailureMessage, statIfExists, } from './sidecar-recovery.js';
|
|
22
|
+
import { guardWalQuarantine, isMissingFsError, isMissingShadowSidecarError, isReadOnlyShadowReplayError, preflightLbugSidecars, quarantineWalForMissingShadow, renameFailureMessage, statIfExists, } from './sidecar-recovery.js';
|
|
23
|
+
export async function statDbIdentity(dbPath) {
|
|
24
|
+
try {
|
|
25
|
+
const s = await fs.stat(dbPath);
|
|
26
|
+
return { ino: s.ino, mtimeMs: s.mtimeMs, size: s.size };
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/** True only when both identities are known AND differ. A stat failure
|
|
33
|
+
* (ENOENT during the brief unlink window of a full rebuild) yields false, so
|
|
34
|
+
* the reader keeps serving its still-valid open inode until the NEW file
|
|
35
|
+
* appears with a different identity — avoiding a churn into a failed reopen
|
|
36
|
+
* mid-rebuild. */
|
|
37
|
+
export function dbIdentityChanged(prev, next) {
|
|
38
|
+
if (!prev || !next)
|
|
39
|
+
return false;
|
|
40
|
+
return prev.ino !== next.ino || prev.mtimeMs !== next.mtimeMs || prev.size !== next.size;
|
|
41
|
+
}
|
|
23
42
|
const pool = new Map();
|
|
24
43
|
const poolCloseListeners = new Set();
|
|
25
44
|
/**
|
|
@@ -244,6 +263,7 @@ function closeOne(repoId) {
|
|
|
244
263
|
// for the same dbPath reuse it instead of hitting a file lock.
|
|
245
264
|
shared.refCount = 0;
|
|
246
265
|
shared.ftsLoaded = false;
|
|
266
|
+
shared.vectorLoaded = false;
|
|
247
267
|
}
|
|
248
268
|
else {
|
|
249
269
|
shared.db.close().catch(() => { });
|
|
@@ -306,7 +326,16 @@ setInterval(() => {
|
|
|
306
326
|
function createConnection(db) {
|
|
307
327
|
silenceStdout();
|
|
308
328
|
try {
|
|
309
|
-
|
|
329
|
+
const conn = new lbug.Connection(db);
|
|
330
|
+
// Bound a single query at the engine level so a pathological query cannot
|
|
331
|
+
// hang a pooled connection past the JS-side Promise.race guard (which frees
|
|
332
|
+
// the waiter but not the native call). Matches QUERY_TIMEOUT_MS. Guarded so
|
|
333
|
+
// test doubles that don't model the engine method don't break connection
|
|
334
|
+
// creation.
|
|
335
|
+
if (typeof conn.setQueryTimeout === 'function') {
|
|
336
|
+
conn.setQueryTimeout(QUERY_TIMEOUT_MS);
|
|
337
|
+
}
|
|
338
|
+
return conn;
|
|
310
339
|
}
|
|
311
340
|
finally {
|
|
312
341
|
restoreStdout();
|
|
@@ -316,6 +345,8 @@ function createConnection(db) {
|
|
|
316
345
|
const QUERY_TIMEOUT_MS = 30_000;
|
|
317
346
|
/** Waiter queue timeout in milliseconds */
|
|
318
347
|
const WAITER_TIMEOUT_MS = 15_000;
|
|
348
|
+
// Read-only open retry while `gitnexus analyze` writes. Catalogued as entry 4
|
|
349
|
+
// of the lbug-config retry-budget registry.
|
|
319
350
|
const LOCK_RETRY_ATTEMPTS = 3;
|
|
320
351
|
const LOCK_RETRY_DELAY_MS = 2000;
|
|
321
352
|
const SHADOW_REPLAY_PROBE_QUERY = 'MATCH (n) RETURN n LIMIT 1';
|
|
@@ -349,6 +380,12 @@ const poolSidecarLogger = {
|
|
|
349
380
|
* See plan: docs/plans/2026-05-21-001-fix-pr-1747-quarantine-enoent-and-large-wal-plan.md (U2)
|
|
350
381
|
*/
|
|
351
382
|
async function tryQuarantineForMissingShadow(dbPath, opts) {
|
|
383
|
+
// Refuse (throw) before renaming a live WAL when the shadow is present on
|
|
384
|
+
// disk or the orphan WAL is too large — parity with the serve path's
|
|
385
|
+
// refuseLargeWalQuarantine (issue #2382 review, Finding B). Kept OUTSIDE the
|
|
386
|
+
// try so the actionable recovery message propagates to the MCP caller rather
|
|
387
|
+
// than being re-wrapped as a rename failure.
|
|
388
|
+
await guardWalQuarantine(dbPath, opts.reason, opts.err, poolSidecarLogger);
|
|
352
389
|
try {
|
|
353
390
|
const quarantinePath = await quarantineWalForMissingShadow(dbPath, {
|
|
354
391
|
logger: poolSidecarLogger,
|
|
@@ -396,6 +433,7 @@ async function replayShadowPagesWithWritableOpen(dbPath) {
|
|
|
396
433
|
if (isMissingShadowSidecarError(err)) {
|
|
397
434
|
await tryQuarantineForMissingShadow(dbPath, {
|
|
398
435
|
reason: 'pool writable replay recovery',
|
|
436
|
+
err,
|
|
399
437
|
});
|
|
400
438
|
return;
|
|
401
439
|
}
|
|
@@ -429,6 +467,7 @@ async function openReadOnlyDatabase(dbPath) {
|
|
|
429
467
|
db = undefined;
|
|
430
468
|
await tryQuarantineForMissingShadow(dbPath, {
|
|
431
469
|
reason: 'pool read-only recovery',
|
|
470
|
+
err,
|
|
432
471
|
});
|
|
433
472
|
await preflightLbugSidecars(dbPath, {
|
|
434
473
|
mode: 'read-only',
|
|
@@ -494,18 +533,46 @@ const initPromises = new Map();
|
|
|
494
533
|
* Concurrent calls for the same repoId are deduplicated — the second caller
|
|
495
534
|
* awaits the first's in-progress init rather than starting a redundant one.
|
|
496
535
|
*/
|
|
536
|
+
/**
|
|
537
|
+
* Returns `true` when this call (re)opened a fresh handle onto the current
|
|
538
|
+
* on-disk file, `false` when it reused/served the existing handle (unchanged,
|
|
539
|
+
* or changed-but-a-query-is-in-flight). Callers that gate their own freshness
|
|
540
|
+
* bookkeeping on "did the pool actually roll over" (LocalBackend) use the
|
|
541
|
+
* return value; callers that only need the pool ready can ignore it.
|
|
542
|
+
*/
|
|
497
543
|
export const initLbug = async (repoId, dbPath) => {
|
|
498
544
|
const existing = pool.get(repoId);
|
|
499
545
|
if (existing) {
|
|
500
546
|
existing.lastUsed = Date.now();
|
|
501
|
-
|
|
547
|
+
// Detect an index that `analyze` rebuilt or mutated under this live read
|
|
548
|
+
// pool. Without this, the pool keeps serving the old (POSIX:
|
|
549
|
+
// unlinked-but-open) inode until LRU/idle eviction — a stale-read window
|
|
550
|
+
// of up to IDLE_TIMEOUT_MS after analyze finishes.
|
|
551
|
+
const current = await statDbIdentity(dbPath);
|
|
552
|
+
if (!dbIdentityChanged(existing.dbIdentity, current))
|
|
553
|
+
return false; // unchanged → reuse
|
|
554
|
+
// A query is in flight on this entry; closing its connection (and the
|
|
555
|
+
// shared Database at refCount 0) mid-use is a native use-after-free. Serve
|
|
556
|
+
// the current handle for this dispatch — the next initLbug that finds the
|
|
557
|
+
// entry idle (checkedOut === 0) reopens, since the identity stays divergent
|
|
558
|
+
// until then. Under sustained overlapping queries `checkedOut` may never
|
|
559
|
+
// reach 0 and `lastUsed` keeps the idle timer from evicting, so this window
|
|
560
|
+
// is bounded by the load, not IDLE_TIMEOUT_MS — the data stays consistent
|
|
561
|
+
// (a complete older snapshot), just not the newest. Callers that route
|
|
562
|
+
// freshness THROUGH initLbug (rather than calling closeLbug directly) get
|
|
563
|
+
// this guard for free; that is why LocalBackend delegates here (#2614).
|
|
564
|
+
if (existing.checkedOut > 0)
|
|
565
|
+
return false;
|
|
566
|
+
closeOne(repoId); // idle & changed → evict, then fall through to reopen the new file
|
|
502
567
|
}
|
|
503
568
|
// Deduplicate concurrent init calls for the same repoId —
|
|
504
569
|
// prevents double-init race when multiple parallel tool calls
|
|
505
570
|
// trigger initialization for the same repo simultaneously.
|
|
506
571
|
const pending = initPromises.get(repoId);
|
|
507
|
-
if (pending)
|
|
508
|
-
|
|
572
|
+
if (pending) {
|
|
573
|
+
await pending;
|
|
574
|
+
return true;
|
|
575
|
+
}
|
|
509
576
|
const promise = doInitLbug(repoId, dbPath);
|
|
510
577
|
initPromises.set(repoId, promise);
|
|
511
578
|
try {
|
|
@@ -514,6 +581,7 @@ export const initLbug = async (repoId, dbPath) => {
|
|
|
514
581
|
finally {
|
|
515
582
|
initPromises.delete(repoId);
|
|
516
583
|
}
|
|
584
|
+
return true;
|
|
517
585
|
};
|
|
518
586
|
/**
|
|
519
587
|
* Internal init — creates DB, pre-warms connections, loads FTS, then registers pool.
|
|
@@ -532,6 +600,21 @@ async function doInitLbug(repoId, dbPath) {
|
|
|
532
600
|
// Reuse an existing native Database if another repoId already opened this path.
|
|
533
601
|
// This prevents buffer manager exhaustion from multiple mmap regions on the same file.
|
|
534
602
|
let shared = dbCache.get(dbPath);
|
|
603
|
+
if (shared && !shared.external && shared.dbIdentity) {
|
|
604
|
+
// #2614 F2: a cached read-only Database is keyed by dbPath and shared across
|
|
605
|
+
// pool consumers. If the on-disk index was rebuilt/swapped (new inode) while
|
|
606
|
+
// ANOTHER consumer still holds this handle (refCount kept it alive), reusing
|
|
607
|
+
// it serves a superseded index. Unreachable via the MCP backend (one
|
|
608
|
+
// consumer per lbugPath ⇒ refCount hits 0 ⇒ closeOne reopens fresh); a
|
|
609
|
+
// complete fix needs per-inode handles rather than a dbPath-keyed cache.
|
|
610
|
+
// Surface it so the corner is observable instead of silently stale.
|
|
611
|
+
const current = await statDbIdentity(dbPath);
|
|
612
|
+
if (dbIdentityChanged(shared.dbIdentity, current)) {
|
|
613
|
+
realStderrWrite(`GitNexus: reusing a shared read-only handle for ${dbPath} whose on-disk ` +
|
|
614
|
+
`index was rebuilt while another consumer holds it — results may be stale ` +
|
|
615
|
+
`until that consumer releases it.\n`);
|
|
616
|
+
}
|
|
617
|
+
}
|
|
535
618
|
if (!shared) {
|
|
536
619
|
// Open in read-only mode — MCP server never writes to the database.
|
|
537
620
|
// This allows multiple MCP server instances to read concurrently, and
|
|
@@ -540,7 +623,7 @@ async function doInitLbug(repoId, dbPath) {
|
|
|
540
623
|
for (let attempt = 1; attempt <= LOCK_RETRY_ATTEMPTS; attempt++) {
|
|
541
624
|
try {
|
|
542
625
|
const db = await openReadOnlyDatabase(dbPath);
|
|
543
|
-
shared = { db, refCount: 0, ftsLoaded: false };
|
|
626
|
+
shared = { db, refCount: 0, ftsLoaded: false, dbIdentity: await statDbIdentity(dbPath) };
|
|
544
627
|
dbCache.set(dbPath, shared);
|
|
545
628
|
break;
|
|
546
629
|
}
|
|
@@ -549,7 +632,12 @@ async function doInitLbug(repoId, dbPath) {
|
|
|
549
632
|
if (isWalCorruptionError(lastError)) {
|
|
550
633
|
try {
|
|
551
634
|
const db = await tryQuarantineAndReopen(dbPath, repoId);
|
|
552
|
-
shared = {
|
|
635
|
+
shared = {
|
|
636
|
+
db,
|
|
637
|
+
refCount: 0,
|
|
638
|
+
ftsLoaded: false,
|
|
639
|
+
dbIdentity: await statDbIdentity(dbPath),
|
|
640
|
+
};
|
|
553
641
|
dbCache.set(dbPath, shared);
|
|
554
642
|
break;
|
|
555
643
|
}
|
|
@@ -559,6 +647,7 @@ async function doInitLbug(repoId, dbPath) {
|
|
|
559
647
|
}
|
|
560
648
|
}
|
|
561
649
|
if (lastError.message.startsWith('LadybugDB checkpoint sidecar is missing') ||
|
|
650
|
+
lastError.message.startsWith('LadybugDB checkpoint sidecar is present but unreachable') ||
|
|
562
651
|
lastError.message.startsWith('GitNexus could not move the LadybugDB WAL sidecar') ||
|
|
563
652
|
isMissingShadowSidecarError(lastError)) {
|
|
564
653
|
throw lastError;
|
|
@@ -599,9 +688,19 @@ async function doInitLbug(repoId, dbPath) {
|
|
|
599
688
|
if (!shared.ftsLoaded) {
|
|
600
689
|
shared.ftsLoaded = await loadFTSExtension(available[0], { policy: 'load-only' });
|
|
601
690
|
}
|
|
691
|
+
// VECTOR too — extension load scope is per-Database, so this one load
|
|
692
|
+
// makes QUERY_VECTOR_INDEX legal on every pooled connection. Same
|
|
693
|
+
// load-only contract as FTS above; on failure the semantic-query lane
|
|
694
|
+
// falls back to the exact scan with its own diagnostic (#2623 follow-up).
|
|
695
|
+
if (!shared.vectorLoaded) {
|
|
696
|
+
shared.vectorLoaded = await loadVectorExtension(available[0], { policy: 'load-only' });
|
|
697
|
+
}
|
|
602
698
|
// Register pool entry only after all connections are pre-warmed and FTS is
|
|
603
699
|
// loaded. Concurrent executeQuery calls see either "not initialized"
|
|
604
700
|
// (and throw cleanly) or a fully ready pool — never a half-built one.
|
|
701
|
+
// Record the on-disk identity so a later initLbug can detect an analyze
|
|
702
|
+
// rebuild/mutation and re-open onto the new file (pool staleness invalidation).
|
|
703
|
+
const dbIdentity = await statDbIdentity(dbPath);
|
|
605
704
|
pool.set(repoId, {
|
|
606
705
|
db,
|
|
607
706
|
available,
|
|
@@ -609,6 +708,7 @@ async function doInitLbug(repoId, dbPath) {
|
|
|
609
708
|
waiters: [],
|
|
610
709
|
lastUsed: Date.now(),
|
|
611
710
|
dbPath,
|
|
711
|
+
dbIdentity,
|
|
612
712
|
closed: false,
|
|
613
713
|
});
|
|
614
714
|
ensureIdleTimer();
|
|
@@ -657,6 +757,11 @@ export async function initLbugWithDb(repoId, existingDb, dbPath) {
|
|
|
657
757
|
if (!shared.ftsLoaded) {
|
|
658
758
|
shared.ftsLoaded = await loadFTSExtension(available[0], { policy: 'load-only' });
|
|
659
759
|
}
|
|
760
|
+
// VECTOR too — same per-Database scope and load-only contract as the
|
|
761
|
+
// doInitLbug site above (#2623 follow-up).
|
|
762
|
+
if (!shared.vectorLoaded) {
|
|
763
|
+
shared.vectorLoaded = await loadVectorExtension(available[0], { policy: 'load-only' });
|
|
764
|
+
}
|
|
660
765
|
pool.set(repoId, {
|
|
661
766
|
db: existingDb,
|
|
662
767
|
available,
|
|
@@ -664,6 +769,8 @@ export async function initLbugWithDb(repoId, existingDb, dbPath) {
|
|
|
664
769
|
waiters: [],
|
|
665
770
|
lastUsed: Date.now(),
|
|
666
771
|
dbPath,
|
|
772
|
+
// Injected/external DB (tests) — not tracked for rebuild invalidation.
|
|
773
|
+
dbIdentity: null,
|
|
667
774
|
closed: false,
|
|
668
775
|
});
|
|
669
776
|
ensureIdleTimer();
|
|
@@ -13,8 +13,8 @@ export { NODE_TABLES, REL_TABLE_NAME, REL_TYPES, EMBEDDING_TABLE_NAME };
|
|
|
13
13
|
export type { NodeTableName, RelType } from '../../_shared/index.js';
|
|
14
14
|
export declare const FILE_SCHEMA = "\nCREATE NODE TABLE File (\n id STRING,\n name STRING,\n filePath STRING,\n content STRING,\n PRIMARY KEY (id)\n)";
|
|
15
15
|
export declare const FOLDER_SCHEMA = "\nCREATE NODE TABLE Folder (\n id STRING,\n name STRING,\n filePath STRING,\n PRIMARY KEY (id)\n)";
|
|
16
|
-
export declare const FUNCTION_SCHEMA
|
|
17
|
-
export declare const CLASS_SCHEMA = "\nCREATE NODE TABLE Class (\n id STRING,\n name STRING,\n filePath STRING,\n startLine INT64,\n endLine INT64,\n isExported BOOLEAN,\n content STRING,\n description STRING,\n PRIMARY KEY (id)\n)";
|
|
16
|
+
export declare const FUNCTION_SCHEMA: string;
|
|
17
|
+
export declare const CLASS_SCHEMA = "\nCREATE NODE TABLE Class (\n id STRING,\n name STRING,\n filePath STRING,\n startLine INT64,\n endLine INT64,\n isExported BOOLEAN,\n content STRING,\n description STRING,\n frameworkAnnotations STRING[],\n PRIMARY KEY (id)\n)";
|
|
18
18
|
export declare const INTERFACE_SCHEMA = "\nCREATE NODE TABLE Interface (\n id STRING,\n name STRING,\n filePath STRING,\n startLine INT64,\n endLine INT64,\n isExported BOOLEAN,\n content STRING,\n description STRING,\n PRIMARY KEY (id)\n)";
|
|
19
19
|
export declare const METHOD_SCHEMA = "\nCREATE NODE TABLE Method (\n id STRING,\n name STRING,\n filePath STRING,\n startLine INT64,\n endLine INT64,\n isExported BOOLEAN,\n content STRING,\n description STRING,\n parameterCount INT32,\n returnType STRING,\n PRIMARY KEY (id)\n)";
|
|
20
20
|
export declare const CODE_ELEMENT_SCHEMA = "\nCREATE NODE TABLE CodeElement (\n id STRING,\n name STRING,\n filePath STRING,\n startLine INT64,\n endLine INT64,\n isExported BOOLEAN,\n content STRING,\n description STRING,\n PRIMARY KEY (id)\n)";
|
|
@@ -22,6 +22,7 @@ export declare const COMMUNITY_SCHEMA = "\nCREATE NODE TABLE Community (\n id S
|
|
|
22
22
|
export declare const PROCESS_SCHEMA = "\nCREATE NODE TABLE Process (\n id STRING,\n label STRING,\n heuristicLabel STRING,\n processType STRING,\n stepCount INT32,\n communities STRING[],\n entryPointId STRING,\n terminalId STRING,\n PRIMARY KEY (id)\n)";
|
|
23
23
|
export declare const STRUCT_SCHEMA: string;
|
|
24
24
|
export declare const ENUM_SCHEMA: string;
|
|
25
|
+
export declare const ENUM_VARIANT_SCHEMA: string;
|
|
25
26
|
export declare const MACRO_SCHEMA: string;
|
|
26
27
|
export declare const TYPEDEF_SCHEMA: string;
|
|
27
28
|
export declare const UNION_SCHEMA: string;
|
|
@@ -43,7 +44,7 @@ export declare const ROUTE_SCHEMA = "\nCREATE NODE TABLE Route (\n id STRING,\n
|
|
|
43
44
|
export declare const TOOL_SCHEMA = "\nCREATE NODE TABLE Tool (\n id STRING,\n name STRING,\n filePath STRING,\n description STRING,\n PRIMARY KEY (id)\n)";
|
|
44
45
|
export declare const SECTION_SCHEMA = "\nCREATE NODE TABLE Section (\n id STRING,\n name STRING,\n filePath STRING,\n startLine INT64,\n endLine INT64,\n level INT64,\n content STRING,\n description STRING,\n PRIMARY KEY (id)\n)";
|
|
45
46
|
export declare const BASICBLOCK_SCHEMA = "\nCREATE NODE TABLE BasicBlock (\n id STRING,\n filePath STRING,\n startLine INT64,\n endLine INT64,\n text STRING,\n callees STRING,\n calleeIds STRING,\n PRIMARY KEY (id)\n)";
|
|
46
|
-
export declare const RELATION_SCHEMA = "\nCREATE REL TABLE CodeRelation (\n FROM File TO File,\n FROM File TO Folder,\n FROM File TO Function,\n FROM File TO Class,\n FROM File TO Interface,\n FROM File TO Method,\n FROM File TO CodeElement,\n FROM File TO `Struct`,\n FROM File TO `Enum`,\n FROM File TO `Macro`,\n FROM File TO `Typedef`,\n FROM File TO `Union`,\n FROM File TO `Namespace`,\n FROM File TO `Trait`,\n FROM File TO `Impl`,\n FROM File TO `TypeAlias`,\n FROM File TO `Const`,\n FROM File TO `Static`,\n FROM File TO `Variable`,\n FROM File TO `Property`,\n FROM File TO `Record`,\n FROM File TO `Delegate`,\n FROM File TO `Annotation`,\n FROM File TO `Constructor`,\n FROM File TO `Template`,\n FROM File TO `Module`,\n FROM File TO Section,\n FROM Folder TO Folder,\n FROM Folder TO File,\n FROM Function TO Function,\n FROM Function TO Method,\n FROM Function TO Class,\n FROM Function TO Community,\n FROM Function TO `Macro`,\n FROM Function TO `Struct`,\n FROM Function TO `Template`,\n FROM Function TO `Enum`,\n FROM Function TO `Namespace`,\n FROM Function TO `TypeAlias`,\n FROM Function TO `Module`,\n FROM Function TO `Impl`,\n FROM Function TO Interface,\n FROM Function TO `Constructor`,\n FROM Function TO `Const`,\n FROM Function TO `Typedef`,\n FROM Function TO `Union`,\n FROM Function TO `Property`,\n FROM Function TO CodeElement,\n FROM Class TO Method,\n FROM Class TO Function,\n FROM Class TO Class,\n FROM Class TO Interface,\n FROM Class TO Community,\n FROM Class TO `Template`,\n FROM Class TO `TypeAlias`,\n FROM Class TO `Struct`,\n FROM Class TO `Enum`,\n FROM Class TO `Annotation`,\n FROM Class TO `Constructor`,\n FROM Class TO `Trait`,\n FROM Class TO `Macro`,\n FROM Class TO `Impl`,\n FROM Class TO `Union`,\n FROM Class TO `Namespace`,\n FROM Class TO `Typedef`,\n FROM Class TO `Property`,\n FROM Method TO Function,\n FROM Method TO Method,\n FROM Method TO Class,\n FROM Method TO Community,\n FROM Method TO `Template`,\n FROM Method TO `Struct`,\n FROM Method TO `TypeAlias`,\n FROM Method TO `Enum`,\n FROM Method TO `Macro`,\n FROM Method TO `Namespace`,\n FROM Method TO `Module`,\n FROM Method TO `Impl`,\n FROM Method TO Interface,\n FROM Method TO `Constructor`,\n FROM Method TO `Property`,\n FROM Method TO CodeElement,\n FROM `Template` TO `Template`,\n FROM `Template` TO Function,\n FROM `Template` TO Method,\n FROM `Template` TO Class,\n FROM `Template` TO `Struct`,\n FROM `Template` TO `TypeAlias`,\n FROM `Template` TO `Enum`,\n FROM `Template` TO `Macro`,\n FROM `Template` TO Interface,\n FROM `Template` TO `Constructor`,\n FROM `Module` TO `Module`,\n FROM Section TO Section,\n FROM Section TO File,\n FROM File TO Route,\n FROM Function TO Route,\n FROM Method TO Route,\n FROM File TO Tool,\n FROM Function TO Tool,\n FROM Method TO Tool,\n FROM CodeElement TO Community,\n FROM Interface TO Community,\n FROM Interface TO Function,\n FROM Interface TO Method,\n FROM Interface TO Class,\n FROM Interface TO Interface,\n FROM Interface TO `TypeAlias`,\n FROM Interface TO `Struct`,\n FROM Interface TO `Constructor`,\n FROM Interface TO `Property`,\n FROM `Struct` TO Community,\n FROM `Struct` TO `Trait`,\n FROM `Struct` TO `Struct`,\n FROM `Struct` TO Class,\n FROM `Struct` TO `Enum`,\n FROM `Struct` TO Function,\n FROM `Struct` TO Method,\n FROM `Struct` TO Interface,\n FROM `Struct` TO `Constructor`,\n FROM `Struct` TO `Property`,\n FROM `Enum` TO `Enum`,\n FROM `Enum` TO Community,\n FROM `Enum` TO Class,\n FROM `Enum` TO Interface,\n FROM `Macro` TO Community,\n FROM `Macro` TO Function,\n FROM `Macro` TO Method,\n FROM `Module` TO Function,\n FROM `Module` TO Method,\n FROM `Typedef` TO Community,\n FROM `Union` TO Community,\n FROM `Namespace` TO Community,\n FROM `Namespace` TO `Struct`,\n FROM `Trait` TO Method,\n FROM `Trait` TO `Constructor`,\n FROM `Trait` TO `Property`,\n FROM `Trait` TO Community,\n FROM `Impl` TO Method,\n FROM `Impl` TO `Constructor`,\n FROM `Impl` TO `Property`,\n FROM `Impl` TO Community,\n FROM `Impl` TO `Trait`,\n FROM `Impl` TO `Struct`,\n FROM `Impl` TO `Impl`,\n FROM `TypeAlias` TO Community,\n FROM `TypeAlias` TO `Trait`,\n FROM `TypeAlias` TO Class,\n FROM `Const` TO Community,\n FROM `Static` TO Community,\n FROM `Variable` TO Community,\n FROM `Property` TO Community,\n FROM `Record` TO Method,\n FROM `Record` TO `Constructor`,\n FROM `Record` TO `Property`,\n FROM `Record` TO Community,\n FROM `Delegate` TO Community,\n FROM `Annotation` TO Community,\n FROM `Constructor` TO Community,\n FROM `Constructor` TO Interface,\n FROM `Constructor` TO Class,\n FROM `Constructor` TO Method,\n FROM `Constructor` TO Function,\n FROM `Constructor` TO `Constructor`,\n FROM `Constructor` TO `Struct`,\n FROM `Constructor` TO `Macro`,\n FROM `Constructor` TO `Template`,\n FROM `Constructor` TO `TypeAlias`,\n FROM `Constructor` TO `Enum`,\n FROM `Constructor` TO `Annotation`,\n FROM `Constructor` TO `Impl`,\n FROM `Constructor` TO `Namespace`,\n FROM `Constructor` TO `Module`,\n FROM `Constructor` TO `Property`,\n FROM `Constructor` TO `Typedef`,\n FROM `Template` TO Community,\n FROM `Module` TO Community,\n FROM Function TO Process,\n FROM Method TO Process,\n FROM Class TO Process,\n FROM Interface TO Process,\n FROM `Struct` TO Process,\n FROM `Constructor` TO Process,\n FROM `Module` TO Process,\n FROM `Macro` TO Process,\n FROM `Impl` TO Process,\n FROM `Typedef` TO Process,\n FROM `TypeAlias` TO Process,\n FROM `Enum` TO Process,\n FROM `Union` TO Process,\n FROM `Namespace` TO Process,\n FROM `Trait` TO Process,\n FROM `Const` TO Process,\n FROM `Static` TO Process,\n FROM `Variable` TO Process,\n FROM `Property` TO Process,\n FROM `Record` TO Process,\n FROM `Delegate` TO Process,\n FROM `Annotation` TO Process,\n FROM `Template` TO Process,\n FROM CodeElement TO Process,\n FROM Route TO Process,\n FROM Tool TO Process,\n FROM BasicBlock TO BasicBlock,\n type STRING,\n confidence DOUBLE,\n reason STRING,\n step INT32\n)";
|
|
47
|
+
export declare const RELATION_SCHEMA = "\nCREATE REL TABLE CodeRelation (\n FROM File TO File,\n FROM File TO Folder,\n FROM File TO Function,\n FROM File TO Class,\n FROM File TO Interface,\n FROM File TO Method,\n FROM File TO CodeElement,\n FROM File TO `Struct`,\n FROM File TO `Enum`,\n FROM File TO `Macro`,\n FROM File TO `Typedef`,\n FROM File TO `Union`,\n FROM File TO `Namespace`,\n FROM File TO `Trait`,\n FROM File TO `Impl`,\n FROM File TO `TypeAlias`,\n FROM File TO `Const`,\n FROM File TO `Static`,\n FROM File TO `Variable`,\n FROM File TO `Property`,\n FROM File TO `Record`,\n FROM File TO `Delegate`,\n FROM File TO `Annotation`,\n FROM File TO `Constructor`,\n FROM File TO `Template`,\n FROM File TO `Module`,\n FROM File TO Section,\n FROM Folder TO Folder,\n FROM Folder TO File,\n FROM Function TO Function,\n FROM Function TO Method,\n FROM Function TO Class,\n FROM Function TO Community,\n FROM Function TO `Macro`,\n FROM Function TO `Struct`,\n FROM Function TO `Template`,\n FROM Function TO `Enum`,\n FROM Function TO `Namespace`,\n FROM Function TO `TypeAlias`,\n FROM Function TO `Module`,\n FROM Function TO `Impl`,\n FROM Function TO Interface,\n FROM Function TO `Constructor`,\n FROM Function TO `Const`,\n FROM Function TO `Typedef`,\n FROM Function TO `Union`,\n FROM Function TO `Property`,\n FROM Function TO CodeElement,\n FROM Class TO Method,\n FROM Class TO Function,\n FROM Class TO Class,\n FROM Class TO Interface,\n FROM Class TO Community,\n FROM Class TO `Template`,\n FROM Class TO `TypeAlias`,\n FROM Class TO `Struct`,\n FROM Class TO `Enum`,\n FROM Class TO `Annotation`,\n FROM Class TO `Constructor`,\n FROM Class TO `Trait`,\n FROM Class TO `Macro`,\n FROM Class TO `Impl`,\n FROM Class TO `Union`,\n FROM Class TO `Namespace`,\n FROM Class TO `Typedef`,\n FROM Class TO `Property`,\n FROM Method TO Function,\n FROM Method TO Method,\n FROM Method TO Class,\n FROM Method TO Community,\n FROM Method TO `Template`,\n FROM Method TO `Struct`,\n FROM Method TO `TypeAlias`,\n FROM Method TO `Enum`,\n FROM Method TO `Macro`,\n FROM Method TO `Namespace`,\n FROM Method TO `Module`,\n FROM Method TO `Impl`,\n FROM Method TO Interface,\n FROM Method TO `Constructor`,\n FROM Method TO `Property`,\n FROM Method TO CodeElement,\n FROM `Template` TO `Template`,\n FROM `Template` TO Function,\n FROM `Template` TO Method,\n FROM `Template` TO Class,\n FROM `Template` TO `Struct`,\n FROM `Template` TO `TypeAlias`,\n FROM `Template` TO `Enum`,\n FROM `Template` TO `Macro`,\n FROM `Template` TO Interface,\n FROM `Template` TO `Constructor`,\n FROM `Module` TO `Module`,\n FROM Section TO Section,\n FROM Section TO File,\n FROM File TO Route,\n FROM Function TO Route,\n FROM Method TO Route,\n FROM File TO Tool,\n FROM Function TO Tool,\n FROM Method TO Tool,\n FROM CodeElement TO Community,\n FROM Interface TO Community,\n FROM Interface TO Function,\n FROM Interface TO Method,\n FROM Interface TO Class,\n FROM Interface TO Interface,\n FROM Interface TO `TypeAlias`,\n FROM Interface TO `Struct`,\n FROM Interface TO `Constructor`,\n FROM Interface TO `Property`,\n FROM `Struct` TO Community,\n FROM `Struct` TO `Trait`,\n FROM `Struct` TO `Struct`,\n FROM `Struct` TO Class,\n FROM `Struct` TO `Enum`,\n FROM `Struct` TO Function,\n FROM `Struct` TO Method,\n FROM `Struct` TO Interface,\n FROM `Struct` TO `Constructor`,\n FROM `Struct` TO `Property`,\n FROM `Enum` TO `Enum`,\n FROM `Enum` TO Community,\n FROM `Enum` TO Class,\n FROM `Enum` TO Interface,\n FROM `Macro` TO Community,\n FROM `Macro` TO Function,\n FROM `Macro` TO Method,\n FROM `Module` TO Function,\n FROM `Module` TO Method,\n // Move/Aptos: module defines structs/enums/consts; enums contain variants.\n FROM `Module` TO `Struct`,\n FROM `Module` TO `Enum`,\n FROM `Module` TO `Const`,\n FROM `Enum` TO `EnumVariant`,\n FROM `Module` TO `EnumVariant`,\n FROM `Typedef` TO Community,\n FROM `Union` TO Community,\n FROM `Namespace` TO Community,\n FROM `Namespace` TO `Struct`,\n FROM `Trait` TO Method,\n FROM `Trait` TO `Constructor`,\n FROM `Trait` TO `Property`,\n FROM `Trait` TO Community,\n FROM `Impl` TO Method,\n FROM `Impl` TO `Constructor`,\n FROM `Impl` TO `Property`,\n FROM `Impl` TO Community,\n FROM `Impl` TO `Trait`,\n FROM `Impl` TO `Struct`,\n FROM `Impl` TO `Impl`,\n FROM `TypeAlias` TO Community,\n FROM `TypeAlias` TO `Trait`,\n FROM `TypeAlias` TO Class,\n FROM `Const` TO Community,\n FROM `Static` TO Community,\n FROM `Variable` TO Community,\n FROM `Property` TO Community,\n FROM `Property` TO `Property`,\n FROM `Record` TO Method,\n FROM `Record` TO `Constructor`,\n FROM `Record` TO `Property`,\n FROM `Record` TO Community,\n FROM `Delegate` TO Community,\n FROM `Annotation` TO Community,\n FROM `Constructor` TO Community,\n FROM `Constructor` TO Interface,\n FROM `Constructor` TO Class,\n FROM `Constructor` TO Method,\n FROM `Constructor` TO Function,\n FROM `Constructor` TO `Constructor`,\n FROM `Constructor` TO `Struct`,\n FROM `Constructor` TO `Macro`,\n FROM `Constructor` TO `Template`,\n FROM `Constructor` TO `TypeAlias`,\n FROM `Constructor` TO `Enum`,\n FROM `Constructor` TO `Annotation`,\n FROM `Constructor` TO `Impl`,\n FROM `Constructor` TO `Namespace`,\n FROM `Constructor` TO `Module`,\n FROM `Constructor` TO `Property`,\n FROM `Constructor` TO `Typedef`,\n FROM `Template` TO Community,\n FROM `Module` TO Community,\n FROM Function TO Process,\n FROM Method TO Process,\n FROM Class TO Process,\n FROM Interface TO Process,\n FROM `Struct` TO Process,\n FROM `Constructor` TO Process,\n FROM `Module` TO Process,\n FROM `Macro` TO Process,\n FROM `Impl` TO Process,\n FROM `Typedef` TO Process,\n FROM `TypeAlias` TO Process,\n FROM `Enum` TO Process,\n FROM `Union` TO Process,\n FROM `Namespace` TO Process,\n FROM `Trait` TO Process,\n FROM `Const` TO Process,\n FROM `Static` TO Process,\n FROM `Variable` TO Process,\n FROM `Property` TO Process,\n FROM `Record` TO Process,\n FROM `Delegate` TO Process,\n FROM `Annotation` TO Process,\n FROM `Template` TO Process,\n FROM CodeElement TO Process,\n FROM Route TO Process,\n FROM Tool TO Process,\n FROM BasicBlock TO BasicBlock,\n type STRING,\n confidence DOUBLE,\n reason STRING,\n step INT32\n)";
|
|
47
48
|
export declare const EMBEDDING_DIMS: number;
|
|
48
49
|
/** HNSW vector index name for the CodeEmbedding table. */
|
|
49
50
|
export declare const EMBEDDING_INDEX_NAME = "code_embedding_idx";
|
package/dist/core/lbug/schema.js
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
*/
|
|
11
11
|
// Import from shared package (single source of truth) — used in DDL templates below
|
|
12
12
|
import { NODE_TABLES, REL_TABLE_NAME, REL_TYPES, EMBEDDING_TABLE_NAME } from '../../_shared/index.js';
|
|
13
|
+
import { buildNodeTableSchema } from './node-table-layout.js';
|
|
13
14
|
// Re-export so downstream consumers keep the same import path
|
|
14
15
|
export { NODE_TABLES, REL_TABLE_NAME, REL_TYPES, EMBEDDING_TABLE_NAME };
|
|
15
16
|
// ============================================================================
|
|
@@ -30,18 +31,7 @@ CREATE NODE TABLE Folder (
|
|
|
30
31
|
filePath STRING,
|
|
31
32
|
PRIMARY KEY (id)
|
|
32
33
|
)`;
|
|
33
|
-
export const FUNCTION_SCHEMA =
|
|
34
|
-
CREATE NODE TABLE Function (
|
|
35
|
-
id STRING,
|
|
36
|
-
name STRING,
|
|
37
|
-
filePath STRING,
|
|
38
|
-
startLine INT64,
|
|
39
|
-
endLine INT64,
|
|
40
|
-
isExported BOOLEAN,
|
|
41
|
-
content STRING,
|
|
42
|
-
description STRING,
|
|
43
|
-
PRIMARY KEY (id)
|
|
44
|
-
)`;
|
|
34
|
+
export const FUNCTION_SCHEMA = buildNodeTableSchema('Function');
|
|
45
35
|
export const CLASS_SCHEMA = `
|
|
46
36
|
CREATE NODE TABLE Class (
|
|
47
37
|
id STRING,
|
|
@@ -52,6 +42,7 @@ CREATE NODE TABLE Class (
|
|
|
52
42
|
isExported BOOLEAN,
|
|
53
43
|
content STRING,
|
|
54
44
|
description STRING,
|
|
45
|
+
frameworkAnnotations STRING[],
|
|
55
46
|
PRIMARY KEY (id)
|
|
56
47
|
)`;
|
|
57
48
|
export const INTERFACE_SCHEMA = `
|
|
@@ -138,8 +129,9 @@ CREATE NODE TABLE \`${name}\` (
|
|
|
138
129
|
description STRING,
|
|
139
130
|
PRIMARY KEY (id)
|
|
140
131
|
)`;
|
|
141
|
-
export const STRUCT_SCHEMA =
|
|
142
|
-
export const ENUM_SCHEMA =
|
|
132
|
+
export const STRUCT_SCHEMA = buildNodeTableSchema('Struct');
|
|
133
|
+
export const ENUM_SCHEMA = buildNodeTableSchema('Enum');
|
|
134
|
+
export const ENUM_VARIANT_SCHEMA = buildNodeTableSchema('EnumVariant');
|
|
143
135
|
export const MACRO_SCHEMA = CODE_ELEMENT_BASE('Macro');
|
|
144
136
|
export const TYPEDEF_SCHEMA = CODE_ELEMENT_BASE('Typedef');
|
|
145
137
|
export const UNION_SCHEMA = CODE_ELEMENT_BASE('Union');
|
|
@@ -147,7 +139,7 @@ export const NAMESPACE_SCHEMA = CODE_ELEMENT_BASE('Namespace');
|
|
|
147
139
|
export const TRAIT_SCHEMA = CODE_ELEMENT_BASE('Trait');
|
|
148
140
|
export const IMPL_SCHEMA = CODE_ELEMENT_BASE('Impl');
|
|
149
141
|
export const TYPE_ALIAS_SCHEMA = CODE_ELEMENT_BASE('TypeAlias');
|
|
150
|
-
export const CONST_SCHEMA =
|
|
142
|
+
export const CONST_SCHEMA = buildNodeTableSchema('Const');
|
|
151
143
|
export const STATIC_SCHEMA = CODE_ELEMENT_BASE('Static');
|
|
152
144
|
export const VARIABLE_SCHEMA = CODE_ELEMENT_BASE('Variable');
|
|
153
145
|
export const PROPERTY_SCHEMA = `
|
|
@@ -167,7 +159,7 @@ export const DELEGATE_SCHEMA = CODE_ELEMENT_BASE('Delegate');
|
|
|
167
159
|
export const ANNOTATION_SCHEMA = CODE_ELEMENT_BASE('Annotation');
|
|
168
160
|
export const CONSTRUCTOR_SCHEMA = CODE_ELEMENT_BASE('Constructor');
|
|
169
161
|
export const TEMPLATE_SCHEMA = CODE_ELEMENT_BASE('Template');
|
|
170
|
-
export const MODULE_SCHEMA =
|
|
162
|
+
export const MODULE_SCHEMA = buildNodeTableSchema('Module');
|
|
171
163
|
// API route endpoints (Next.js, Express, etc.)
|
|
172
164
|
export const ROUTE_SCHEMA = `
|
|
173
165
|
CREATE NODE TABLE Route (
|
|
@@ -357,6 +349,12 @@ CREATE REL TABLE ${REL_TABLE_NAME} (
|
|
|
357
349
|
FROM \`Macro\` TO Method,
|
|
358
350
|
FROM \`Module\` TO Function,
|
|
359
351
|
FROM \`Module\` TO Method,
|
|
352
|
+
// Move/Aptos: module defines structs/enums/consts; enums contain variants.
|
|
353
|
+
FROM \`Module\` TO \`Struct\`,
|
|
354
|
+
FROM \`Module\` TO \`Enum\`,
|
|
355
|
+
FROM \`Module\` TO \`Const\`,
|
|
356
|
+
FROM \`Enum\` TO \`EnumVariant\`,
|
|
357
|
+
FROM \`Module\` TO \`EnumVariant\`,
|
|
360
358
|
FROM \`Typedef\` TO Community,
|
|
361
359
|
FROM \`Union\` TO Community,
|
|
362
360
|
FROM \`Namespace\` TO Community,
|
|
@@ -379,6 +377,7 @@ CREATE REL TABLE ${REL_TABLE_NAME} (
|
|
|
379
377
|
FROM \`Static\` TO Community,
|
|
380
378
|
FROM \`Variable\` TO Community,
|
|
381
379
|
FROM \`Property\` TO Community,
|
|
380
|
+
FROM \`Property\` TO \`Property\`,
|
|
382
381
|
FROM \`Record\` TO Method,
|
|
383
382
|
FROM \`Record\` TO \`Constructor\`,
|
|
384
383
|
FROM \`Record\` TO \`Property\`,
|
|
@@ -488,6 +487,7 @@ export const NODE_SCHEMA_QUERIES = [
|
|
|
488
487
|
// Multi-language support
|
|
489
488
|
STRUCT_SCHEMA,
|
|
490
489
|
ENUM_SCHEMA,
|
|
490
|
+
ENUM_VARIANT_SCHEMA,
|
|
491
491
|
MACRO_SCHEMA,
|
|
492
492
|
TYPEDEF_SCHEMA,
|
|
493
493
|
UNION_SCHEMA,
|