gitnexus 1.6.10-rc.21 → 1.6.10-rc.211
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 +212 -22
- package/dist/_shared/graph/types.d.ts +27 -8
- package/dist/_shared/graph/types.d.ts.map +1 -1
- package/dist/_shared/index.d.ts +4 -3
- package/dist/_shared/index.d.ts.map +1 -1
- package/dist/_shared/index.js +1 -1
- package/dist/_shared/index.js.map +1 -1
- package/dist/_shared/integrations/circuit-breaker.d.ts.map +1 -1
- package/dist/_shared/integrations/circuit-breaker.js.map +1 -1
- package/dist/_shared/integrations/resilient-fetch.d.ts +19 -1
- package/dist/_shared/integrations/resilient-fetch.d.ts.map +1 -1
- package/dist/_shared/integrations/resilient-fetch.js +23 -10
- package/dist/_shared/integrations/resilient-fetch.js.map +1 -1
- package/dist/_shared/language-detection.d.ts.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 +3 -0
- package/dist/_shared/lbug/schema-constants.js.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/evidence-weights.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/finalize-algorithm.d.ts +6 -1
- package/dist/_shared/scope-resolution/finalize-algorithm.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/finalize-algorithm.js +316 -37
- package/dist/_shared/scope-resolution/finalize-algorithm.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 +124 -1
- package/dist/_shared/scope-resolution/reference-site.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/registries/field-registry.js.map +1 -1
- package/dist/_shared/scope-resolution/registries/lookup-core.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/registries/lookup-core.js +58 -2
- package/dist/_shared/scope-resolution/registries/lookup-core.js.map +1 -1
- package/dist/_shared/scope-resolution/registries/method-registry.js.map +1 -1
- package/dist/_shared/scope-resolution/scope-tree.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/scope-tree.js.map +1 -1
- package/dist/_shared/scope-resolution/symbol-definition.d.ts +47 -0
- package/dist/_shared/scope-resolution/symbol-definition.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/types.d.ts +297 -5
- package/dist/_shared/scope-resolution/types.d.ts.map +1 -1
- package/dist/cli/ai-context.d.ts +10 -2
- package/dist/cli/ai-context.js +128 -61
- package/dist/cli/analyze-config.d.ts +1 -1
- package/dist/cli/analyze-options.d.ts +131 -0
- package/dist/cli/analyze-options.js +1 -0
- package/dist/cli/analyze.d.ts +25 -114
- package/dist/cli/analyze.js +194 -36
- package/dist/cli/cli-message.d.ts +1 -1
- package/dist/cli/detect-changes-format.js +19 -2
- package/dist/cli/doctor.d.ts +23 -0
- package/dist/cli/doctor.js +72 -9
- package/dist/cli/editor-targets.js +6 -0
- package/dist/cli/eval-server.d.ts +23 -1
- package/dist/cli/eval-server.js +128 -9
- package/dist/cli/format-symbol.d.ts +15 -0
- package/dist/cli/format-symbol.js +17 -0
- package/dist/cli/generated-skill.d.ts +17 -0
- package/dist/cli/generated-skill.js +1 -0
- package/dist/cli/group.js +23 -2
- package/dist/cli/help-i18n.js +3 -0
- package/dist/cli/i18n/en.d.ts +17 -8
- package/dist/cli/i18n/en.js +19 -8
- package/dist/cli/i18n/resources.d.ts +26 -8
- package/dist/cli/i18n/zh-CN.d.ts +9 -0
- package/dist/cli/i18n/zh-CN.js +17 -8
- package/dist/cli/index.js +16 -9
- 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/resolve-invocation.d.ts +7 -3
- package/dist/cli/resolve-invocation.js +7 -3
- package/dist/cli/setup.d.ts +8 -0
- package/dist/cli/setup.js +30 -7
- package/dist/cli/skill-gen.d.ts +1 -6
- package/dist/cli/skill-gen.js +88 -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.d.ts +1 -0
- package/dist/cli/tool.js +75 -7
- package/dist/cli/uninstall.js +7 -2
- package/dist/cli/wiki.d.ts +1 -0
- package/dist/cli/wiki.js +59 -10
- package/dist/config/ignore-service.d.ts +2 -0
- package/dist/config/ignore-service.js +31 -4
- package/dist/core/analysis-features.d.ts +21 -0
- package/dist/core/analysis-features.js +59 -0
- package/dist/core/analyzer-identity.d.ts +154 -0
- package/dist/core/analyzer-identity.js +2158 -0
- package/dist/core/augmentation/engine.js +95 -76
- package/dist/core/embedding-checkpoint.d.ts +143 -0
- package/dist/core/embedding-checkpoint.js +221 -0
- package/dist/core/embedding-count.d.ts +61 -0
- package/dist/core/embedding-count.js +69 -0
- package/dist/core/embeddings/ast-utils.js +9 -1
- package/dist/core/embeddings/embedder.d.ts +3 -2
- package/dist/core/embeddings/embedder.js +8 -5
- 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 +24 -1
- package/dist/core/embeddings/embedding-pipeline.js +341 -19
- package/dist/core/embeddings/http-client.d.ts +10 -2
- package/dist/core/embeddings/http-client.js +282 -47
- package/dist/core/embeddings/node-module-compat.d.ts +4 -2
- package/dist/core/embeddings/node-module-compat.js +4 -2
- package/dist/core/embeddings/onnxruntime-common-resolver.js +5 -5
- package/dist/core/embeddings/onnxruntime-node-resolver.js +2 -2
- package/dist/core/embeddings/runtime-install.js +1 -1
- package/dist/core/git-staleness.js +1 -1
- package/dist/core/graph/graph.js +3 -0
- package/dist/core/graph/import-cycles.d.ts +194 -3
- package/dist/core/graph/import-cycles.js +522 -73
- package/dist/core/graph/types.d.ts +18 -0
- package/dist/core/group/bridge-db.js +5 -27
- package/dist/core/group/cross-impact.d.ts +21 -0
- package/dist/core/group/cross-impact.js +128 -15
- package/dist/core/group/cross-trace.js +27 -16
- package/dist/core/group/extractors/http-patterns/java.js +91 -14
- package/dist/core/group/extractors/http-patterns/node.js +19 -0
- package/dist/core/group/extractors/http-patterns/types.d.ts +8 -0
- package/dist/core/group/extractors/http-route-extractor.d.ts +1 -0
- package/dist/core/group/extractors/http-route-extractor.js +122 -48
- package/dist/core/group/extractors/include-extractor.js +20 -2
- package/dist/core/group/extractors/manifest-extractor.d.ts +1 -1
- package/dist/core/group/extractors/manifest-extractor.js +7 -7
- package/dist/core/group/service.js +10 -1
- package/dist/core/group/storage.js +2 -33
- package/dist/core/group/types.d.ts +18 -0
- package/dist/core/incremental/subgraph-extract.d.ts +9 -6
- package/dist/core/incremental/subgraph-extract.js +33 -10
- package/dist/core/index-freshness.d.ts +80 -0
- package/dist/core/index-freshness.js +120 -0
- package/dist/core/ingestion/call-processor.d.ts +13 -1
- package/dist/core/ingestion/call-processor.js +110 -3
- package/dist/core/ingestion/cfg/callee-cell-format.d.ts +42 -0
- package/dist/core/ingestion/cfg/callee-cell-format.js +42 -0
- package/dist/core/ingestion/cfg/emit.d.ts +8 -23
- package/dist/core/ingestion/cfg/emit.js +9 -23
- package/dist/core/ingestion/class-extractors/configs/go.js +10 -5
- package/dist/core/ingestion/class-extractors/configs/jvm.js +29 -0
- package/dist/core/ingestion/cluster-enricher.js +8 -4
- package/dist/core/ingestion/cobol/cobol-preprocessor.js +1 -1
- package/dist/core/ingestion/community-processor.d.ts +21 -3
- package/dist/core/ingestion/community-processor.js +88 -83
- package/dist/core/ingestion/di-extractors/index.d.ts +22 -34
- package/dist/core/ingestion/di-extractors/index.js +17 -18
- package/dist/core/ingestion/di-extractors/spring.d.ts +27 -5
- package/dist/core/ingestion/di-extractors/spring.js +87 -3
- package/dist/core/ingestion/di-extractors/types.d.ts +60 -0
- package/dist/core/ingestion/di-extractors/types.js +15 -0
- package/dist/core/ingestion/emit-references.js +4 -0
- package/dist/core/ingestion/filesystem-walker.js +16 -12
- package/dist/core/ingestion/finalize-orchestrator.js +1 -0
- package/dist/core/ingestion/frameworks/spring/analysis-features.d.ts +9 -0
- package/dist/core/ingestion/frameworks/spring/analysis-features.js +41 -0
- package/dist/core/ingestion/frameworks/spring/annotation-arguments.d.ts +13 -0
- package/dist/core/ingestion/frameworks/spring/annotation-arguments.js +227 -0
- package/dist/core/ingestion/frameworks/spring/aop-candidates.d.ts +15 -0
- package/dist/core/ingestion/frameworks/spring/aop-candidates.js +85 -0
- package/dist/core/ingestion/frameworks/spring/aop.d.ts +118 -0
- package/dist/core/ingestion/frameworks/spring/aop.js +476 -0
- package/dist/core/ingestion/frameworks/spring/auto-configuration.d.ts +8 -0
- package/dist/core/ingestion/frameworks/spring/auto-configuration.js +16 -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 +27 -0
- package/dist/core/ingestion/frameworks/spring/bean-factories.d.ts +33 -0
- package/dist/core/ingestion/frameworks/spring/bean-factories.js +65 -0
- package/dist/core/ingestion/frameworks/spring/conditionals.d.ts +25 -0
- package/dist/core/ingestion/frameworks/spring/conditionals.js +319 -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/frameworks/spring/di-metadata.d.ts +48 -0
- package/dist/core/ingestion/frameworks/spring/di-metadata.js +379 -0
- package/dist/core/ingestion/frameworks/spring/non-http-handlers.d.ts +28 -0
- package/dist/core/ingestion/frameworks/spring/non-http-handlers.js +152 -0
- package/dist/core/ingestion/frameworks/spring/resource-injection.d.ts +5 -0
- package/dist/core/ingestion/frameworks/spring/resource-injection.js +91 -0
- package/dist/core/ingestion/import-resolvers/configs/csharp.js +5 -1
- package/dist/core/ingestion/import-resolvers/configs/swift.js +13 -0
- package/dist/core/ingestion/import-resolvers/csharp.d.ts +9 -1
- package/dist/core/ingestion/import-resolvers/csharp.js +234 -27
- package/dist/core/ingestion/import-resolvers/go.d.ts +11 -1
- package/dist/core/ingestion/import-resolvers/go.js +44 -17
- package/dist/core/ingestion/import-resolvers/jvm.d.ts +2 -2
- package/dist/core/ingestion/import-resolvers/node-workspace-packages.d.ts +90 -0
- package/dist/core/ingestion/import-resolvers/node-workspace-packages.js +428 -0
- package/dist/core/ingestion/import-resolvers/package-dir-index.d.ts +124 -0
- package/dist/core/ingestion/import-resolvers/package-dir-index.js +223 -0
- package/dist/core/ingestion/import-resolvers/pass-cache.d.ts +50 -0
- package/dist/core/ingestion/import-resolvers/pass-cache.js +60 -0
- package/dist/core/ingestion/import-resolvers/per-file-set.d.ts +71 -0
- package/dist/core/ingestion/import-resolvers/per-file-set.js +11 -0
- package/dist/core/ingestion/import-resolvers/php.d.ts +1 -1
- package/dist/core/ingestion/import-resolvers/php.js +27 -8
- package/dist/core/ingestion/import-resolvers/python-file-index.d.ts +201 -0
- package/dist/core/ingestion/import-resolvers/python-file-index.js +302 -0
- package/dist/core/ingestion/import-resolvers/python.js +25 -6
- package/dist/core/ingestion/import-resolvers/ruby.d.ts +1 -1
- package/dist/core/ingestion/import-resolvers/rust.d.ts +2 -2
- package/dist/core/ingestion/import-resolvers/standard.d.ts +1 -1
- package/dist/core/ingestion/import-resolvers/types.d.ts +1 -12
- package/dist/core/ingestion/import-resolvers/utils.d.ts +65 -6
- package/dist/core/ingestion/import-resolvers/utils.js +215 -36
- package/dist/core/ingestion/import-resolvers/workspace-file-index.d.ts +72 -0
- package/dist/core/ingestion/import-resolvers/workspace-file-index.js +58 -0
- package/dist/core/ingestion/language-config.d.ts +20 -1
- package/dist/core/ingestion/language-config.js +18 -23
- package/dist/core/ingestion/language-provider.d.ts +133 -7
- package/dist/core/ingestion/languages/c/captures.js +63 -0
- package/dist/core/ingestion/languages/c/import-target.js +12 -16
- package/dist/core/ingestion/languages/c/query.js +17 -0
- package/dist/core/ingestion/languages/c/scope-resolver.js +26 -19
- package/dist/core/ingestion/languages/c/static-linkage.js +12 -16
- package/dist/core/ingestion/languages/c-cpp.js +13 -0
- package/dist/core/ingestion/languages/cobol/captures.js +93 -0
- package/dist/core/ingestion/languages/cobol/scope-resolver.js +34 -20
- package/dist/core/ingestion/languages/cobol.js +13 -0
- package/dist/core/ingestion/languages/cpp/adl.d.ts +2 -2
- package/dist/core/ingestion/languages/cpp/adl.js +67 -44
- package/dist/core/ingestion/languages/cpp/captures.js +222 -3
- package/dist/core/ingestion/languages/cpp/file-local-linkage.js +11 -15
- package/dist/core/ingestion/languages/cpp/inline-namespaces.d.ts +28 -8
- package/dist/core/ingestion/languages/cpp/inline-namespaces.js +242 -68
- package/dist/core/ingestion/languages/cpp/interpret.d.ts +2 -0
- package/dist/core/ingestion/languages/cpp/interpret.js +126 -6
- package/dist/core/ingestion/languages/cpp/query.js +106 -0
- package/dist/core/ingestion/languages/cpp/scope-resolver.js +62 -20
- package/dist/core/ingestion/languages/csharp/accessor-unwrap.d.ts +2 -15
- package/dist/core/ingestion/languages/csharp/accessor-unwrap.js +18 -10
- package/dist/core/ingestion/languages/csharp/captures.js +44 -0
- package/dist/core/ingestion/languages/csharp/import-target.js +46 -72
- package/dist/core/ingestion/languages/csharp/namespace-siblings.js +5 -1
- package/dist/core/ingestion/languages/csharp/query.js +25 -5
- package/dist/core/ingestion/languages/csharp/scope-resolver.js +75 -2
- package/dist/core/ingestion/languages/dart/captures.d.ts +10 -0
- package/dist/core/ingestion/languages/dart/captures.js +686 -16
- 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/import-target.js +32 -9
- package/dist/core/ingestion/languages/dart/index.d.ts +1 -1
- package/dist/core/ingestion/languages/dart/index.js +1 -1
- package/dist/core/ingestion/languages/dart/query.js +98 -1
- package/dist/core/ingestion/languages/dart/scope-resolver.js +14 -3
- package/dist/core/ingestion/languages/dart/simple-hooks.js +9 -0
- package/dist/core/ingestion/languages/dart.js +8 -1
- package/dist/core/ingestion/languages/go/captures.js +142 -3
- package/dist/core/ingestion/languages/go/generic-type-parameters.d.ts +31 -0
- package/dist/core/ingestion/languages/go/generic-type-parameters.js +140 -0
- package/dist/core/ingestion/languages/go/import-target.d.ts +3 -10
- package/dist/core/ingestion/languages/go/import-target.js +34 -30
- package/dist/core/ingestion/languages/go/index.d.ts +1 -1
- package/dist/core/ingestion/languages/go/interface-impls.d.ts +9 -1
- package/dist/core/ingestion/languages/go/interface-impls.js +693 -87
- package/dist/core/ingestion/languages/go/interpret.d.ts +2 -0
- package/dist/core/ingestion/languages/go/interpret.js +22 -8
- package/dist/core/ingestion/languages/go/method-owners.js +31 -12
- package/dist/core/ingestion/languages/go/package-clause.d.ts +46 -0
- package/dist/core/ingestion/languages/go/package-clause.js +75 -0
- package/dist/core/ingestion/languages/go/package-siblings.js +7 -11
- package/dist/core/ingestion/languages/go/query.js +56 -3
- package/dist/core/ingestion/languages/go/scope-resolver.js +39 -0
- package/dist/core/ingestion/languages/go.js +9 -0
- package/dist/core/ingestion/languages/java/analysis-features.d.ts +7 -0
- package/dist/core/ingestion/languages/java/analysis-features.js +25 -0
- package/dist/core/ingestion/languages/java/capture-side-channel.d.ts +38 -0
- package/dist/core/ingestion/languages/java/capture-side-channel.js +124 -0
- package/dist/core/ingestion/languages/java/captures.d.ts +4 -3
- package/dist/core/ingestion/languages/java/captures.js +321 -49
- package/dist/core/ingestion/languages/java/import-target.d.ts +49 -9
- package/dist/core/ingestion/languages/java/import-target.js +68 -88
- package/dist/core/ingestion/languages/java/interpret.js +3 -2
- package/dist/core/ingestion/languages/java/module-resolution.d.ts +62 -0
- package/dist/core/ingestion/languages/java/module-resolution.js +142 -0
- 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 +39 -3
- package/dist/core/ingestion/languages/java/record-components.d.ts +14 -0
- package/dist/core/ingestion/languages/java/record-components.js +185 -0
- package/dist/core/ingestion/languages/java/scope-resolver.js +35 -2
- package/dist/core/ingestion/languages/java/spring-aop.d.ts +12 -0
- package/dist/core/ingestion/languages/java/spring-aop.js +49 -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-conditionals.d.ts +11 -0
- package/dist/core/ingestion/languages/java/spring-conditionals.js +48 -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/spring-di.d.ts +20 -0
- package/dist/core/ingestion/languages/java/spring-di.js +160 -0
- package/dist/core/ingestion/languages/java/spring-non-http-handlers.d.ts +7 -0
- package/dist/core/ingestion/languages/java/spring-non-http-handlers.js +32 -0
- package/dist/core/ingestion/languages/java.js +76 -3
- package/dist/core/ingestion/languages/javascript/captures.d.ts +6 -1
- package/dist/core/ingestion/languages/javascript/captures.js +278 -4
- package/dist/core/ingestion/languages/javascript/import-target.d.ts +17 -21
- package/dist/core/ingestion/languages/javascript/import-target.js +24 -41
- package/dist/core/ingestion/languages/javascript/index.d.ts +54 -5
- package/dist/core/ingestion/languages/javascript/index.js +54 -5
- package/dist/core/ingestion/languages/javascript/query.d.ts +1 -0
- package/dist/core/ingestion/languages/javascript/query.js +232 -5
- package/dist/core/ingestion/languages/javascript/scope-resolver.js +12 -0
- package/dist/core/ingestion/languages/javascript/simple-hooks.js +2 -1
- 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 +197 -0
- package/dist/core/ingestion/languages/kotlin/capture-side-channel.d.ts +40 -3
- package/dist/core/ingestion/languages/kotlin/capture-side-channel.js +111 -8
- package/dist/core/ingestion/languages/kotlin/captures.js +112 -0
- package/dist/core/ingestion/languages/kotlin/import-target.d.ts +8 -1
- package/dist/core/ingestion/languages/kotlin/import-target.js +20 -123
- package/dist/core/ingestion/languages/kotlin/index.d.ts +1 -0
- package/dist/core/ingestion/languages/kotlin/index.js +1 -0
- package/dist/core/ingestion/languages/kotlin/module-resolution.d.ts +22 -0
- package/dist/core/ingestion/languages/kotlin/module-resolution.js +108 -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 +47 -2
- package/dist/core/ingestion/languages/kotlin/scope-resolver.js +36 -3
- package/dist/core/ingestion/languages/kotlin/spring-aop.d.ts +12 -0
- package/dist/core/ingestion/languages/kotlin/spring-aop.js +64 -0
- 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/spring-conditionals.d.ts +12 -0
- package/dist/core/ingestion/languages/kotlin/spring-conditionals.js +49 -0
- package/dist/core/ingestion/languages/kotlin/spring-di.d.ts +20 -0
- package/dist/core/ingestion/languages/kotlin/spring-di.js +299 -0
- package/dist/core/ingestion/languages/kotlin/spring-non-http-handlers.d.ts +10 -0
- package/dist/core/ingestion/languages/kotlin/spring-non-http-handlers.js +41 -0
- package/dist/core/ingestion/languages/kotlin.js +5 -6
- package/dist/core/ingestion/languages/php/captures.d.ts +5 -0
- package/dist/core/ingestion/languages/php/captures.js +359 -51
- 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 +229 -7
- package/dist/core/ingestion/languages/php/interpret.js +10 -0
- package/dist/core/ingestion/languages/php/query.js +31 -0
- package/dist/core/ingestion/languages/php/scope-resolver.js +1 -1
- package/dist/core/ingestion/languages/python/arity-metadata.d.ts +1 -0
- package/dist/core/ingestion/languages/python/arity-metadata.js +1 -0
- package/dist/core/ingestion/languages/python/captures.d.ts +3 -4
- package/dist/core/ingestion/languages/python/captures.js +53 -5
- package/dist/core/ingestion/languages/python/import-decomposer.js +22 -1
- package/dist/core/ingestion/languages/python/import-target.d.ts +42 -1
- package/dist/core/ingestion/languages/python/import-target.js +277 -91
- package/dist/core/ingestion/languages/python/index.d.ts +1 -1
- package/dist/core/ingestion/languages/python/index.js +1 -1
- package/dist/core/ingestion/languages/python/interpret.d.ts +52 -0
- package/dist/core/ingestion/languages/python/interpret.js +249 -3
- package/dist/core/ingestion/languages/python/query.js +9 -0
- package/dist/core/ingestion/languages/python/receiver-binding.d.ts +17 -2
- package/dist/core/ingestion/languages/python/receiver-binding.js +192 -2
- package/dist/core/ingestion/languages/python/scope-resolver.js +27 -4
- package/dist/core/ingestion/languages/python/simple-hooks.d.ts +5 -5
- package/dist/core/ingestion/languages/python/simple-hooks.js +9 -5
- package/dist/core/ingestion/languages/ruby/captures.js +200 -0
- package/dist/core/ingestion/languages/ruby/import-target.js +7 -5
- package/dist/core/ingestion/languages/ruby/query.js +93 -0
- package/dist/core/ingestion/languages/ruby/scope-resolver.js +2 -0
- package/dist/core/ingestion/languages/ruby/simple-hooks.d.ts +1 -1
- package/dist/core/ingestion/languages/ruby/simple-hooks.js +22 -1
- package/dist/core/ingestion/languages/rust/captures.js +52 -1
- package/dist/core/ingestion/languages/rust/interpret.js +18 -0
- package/dist/core/ingestion/languages/rust/method-owners.js +11 -1
- package/dist/core/ingestion/languages/rust/module-path.d.ts +126 -0
- package/dist/core/ingestion/languages/rust/module-path.js +214 -0
- package/dist/core/ingestion/languages/rust/qualified-call.d.ts +41 -0
- package/dist/core/ingestion/languages/rust/qualified-call.js +481 -0
- package/dist/core/ingestion/languages/rust/query.js +48 -6
- package/dist/core/ingestion/languages/rust/range-binding.d.ts +1 -11
- package/dist/core/ingestion/languages/rust/range-binding.js +149 -63
- package/dist/core/ingestion/languages/rust/scope-resolver.js +21 -2
- package/dist/core/ingestion/languages/rust.js +17 -0
- package/dist/core/ingestion/languages/swift/captures.js +99 -3
- package/dist/core/ingestion/languages/swift/conditional-directive-preprocess.d.ts +48 -0
- package/dist/core/ingestion/languages/swift/conditional-directive-preprocess.js +253 -0
- package/dist/core/ingestion/languages/swift/import-target.js +4 -9
- package/dist/core/ingestion/languages/swift/query.js +17 -0
- package/dist/core/ingestion/languages/swift/receiver-binding.d.ts +8 -0
- package/dist/core/ingestion/languages/swift/receiver-binding.js +6 -2
- package/dist/core/ingestion/languages/swift.js +2 -0
- package/dist/core/ingestion/languages/typescript/captures.d.ts +90 -1
- package/dist/core/ingestion/languages/typescript/captures.js +288 -5
- package/dist/core/ingestion/languages/typescript/cjs-export-assignment.d.ts +134 -0
- package/dist/core/ingestion/languages/typescript/cjs-export-assignment.js +523 -0
- package/dist/core/ingestion/languages/typescript/cjs-module-exports.d.ts +54 -0
- package/dist/core/ingestion/languages/typescript/cjs-module-exports.js +191 -0
- package/dist/core/ingestion/languages/typescript/file-candidates.d.ts +29 -0
- package/dist/core/ingestion/languages/typescript/file-candidates.js +70 -0
- package/dist/core/ingestion/languages/typescript/import-decomposer.d.ts +28 -1
- package/dist/core/ingestion/languages/typescript/import-decomposer.js +125 -10
- package/dist/core/ingestion/languages/typescript/import-target.d.ts +25 -37
- package/dist/core/ingestion/languages/typescript/import-target.js +24 -26
- package/dist/core/ingestion/languages/typescript/interpret.d.ts +21 -1
- package/dist/core/ingestion/languages/typescript/interpret.js +45 -5
- package/dist/core/ingestion/languages/typescript/module-resolution.d.ts +48 -0
- package/dist/core/ingestion/languages/typescript/module-resolution.js +171 -0
- package/dist/core/ingestion/languages/typescript/nuxt-auto-imports.js +2 -1
- package/dist/core/ingestion/languages/typescript/query.d.ts +1 -0
- package/dist/core/ingestion/languages/typescript/query.js +340 -14
- package/dist/core/ingestion/languages/typescript/receiver-binding.d.ts +17 -0
- package/dist/core/ingestion/languages/typescript/receiver-binding.js +27 -0
- package/dist/core/ingestion/languages/typescript/scope-resolver.js +27 -40
- package/dist/core/ingestion/languages/typescript/simple-hooks.d.ts +0 -10
- package/dist/core/ingestion/languages/typescript/simple-hooks.js +22 -22
- package/dist/core/ingestion/languages/typescript/tsconfig.d.ts +59 -0
- package/dist/core/ingestion/languages/typescript/tsconfig.js +291 -0
- package/dist/core/ingestion/languages/typescript.js +87 -1
- package/dist/core/ingestion/languages/vue/import-target.d.ts +6 -22
- package/dist/core/ingestion/languages/vue/import-target.js +11 -47
- package/dist/core/ingestion/languages/vue/scope-resolver.js +4 -2
- package/dist/core/ingestion/local-symbol-pruner.js +11 -11
- package/dist/core/ingestion/method-extractors/configs/csharp.js +1 -0
- package/dist/core/ingestion/method-extractors/generic.js +1 -0
- package/dist/core/ingestion/method-types.d.ts +16 -0
- package/dist/core/ingestion/parsing-processor.js +32 -1
- package/dist/core/ingestion/pipeline-phases/di.d.ts +8 -33
- package/dist/core/ingestion/pipeline-phases/di.js +275 -157
- package/dist/core/ingestion/pipeline-phases/index.d.ts +3 -0
- package/dist/core/ingestion/pipeline-phases/index.js +3 -0
- package/dist/core/ingestion/pipeline-phases/parse-impl.d.ts +15 -0
- package/dist/core/ingestion/pipeline-phases/parse-impl.js +158 -3
- package/dist/core/ingestion/pipeline-phases/parse.js +5 -0
- package/dist/core/ingestion/pipeline-phases/processes.d.ts +11 -2
- package/dist/core/ingestion/pipeline-phases/processes.js +102 -7
- package/dist/core/ingestion/pipeline-phases/routes.js +56 -10
- package/dist/core/ingestion/pipeline-phases/spring-aop.d.ts +34 -0
- package/dist/core/ingestion/pipeline-phases/spring-aop.js +439 -0
- package/dist/core/ingestion/pipeline-phases/spring-auto-configuration.d.ts +34 -0
- package/dist/core/ingestion/pipeline-phases/spring-auto-configuration.js +255 -0
- 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/types.d.ts +7 -0
- package/dist/core/ingestion/pipeline.d.ts +27 -3
- package/dist/core/ingestion/pipeline.js +62 -12
- package/dist/core/ingestion/process-processor.d.ts +109 -2
- package/dist/core/ingestion/process-processor.js +464 -52
- package/dist/core/ingestion/resolve-references.d.ts +6 -1
- package/dist/core/ingestion/resolve-references.js +78 -6
- package/dist/core/ingestion/route-extractors/data-route-table.d.ts +25 -0
- package/dist/core/ingestion/route-extractors/data-route-table.js +864 -0
- package/dist/core/ingestion/route-extractors/dispatch-guard.d.ts +96 -0
- package/dist/core/ingestion/route-extractors/dispatch-guard.js +1184 -0
- package/dist/core/ingestion/route-extractors/spring-shared.d.ts +11 -0
- package/dist/core/ingestion/route-extractors/spring-shared.js +89 -0
- package/dist/core/ingestion/route-extractors/spring.js +109 -24
- package/dist/core/ingestion/scope-extractor-bridge.js +9 -1
- package/dist/core/ingestion/scope-extractor.d.ts +22 -7
- package/dist/core/ingestion/scope-extractor.js +617 -59
- package/dist/core/ingestion/scope-resolution/contract/scope-resolver.d.ts +381 -22
- package/dist/core/ingestion/scope-resolution/contract/scope-resolver.js +16 -5
- 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 +15 -1
- package/dist/core/ingestion/scope-resolution/graph-bridge/edges.js +53 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/ids.d.ts +20 -15
- package/dist/core/ingestion/scope-resolution/graph-bridge/ids.js +275 -41
- package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.d.ts +123 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.js +171 -17
- package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.d.ts +56 -1
- package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +130 -32
- package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.d.ts +30 -1
- package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +46 -3
- package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.d.ts +64 -0
- package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.js +1233 -0
- package/dist/core/ingestion/scope-resolution/passes/compound-receiver.d.ts +107 -5
- package/dist/core/ingestion/scope-resolution/passes/compound-receiver.js +590 -33
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.d.ts +19 -4
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.js +160 -4
- package/dist/core/ingestion/scope-resolution/passes/imported-value-refs.d.ts +34 -0
- package/dist/core/ingestion/scope-resolution/passes/imported-value-refs.js +62 -0
- package/dist/core/ingestion/scope-resolution/passes/property-dispatch.d.ts +64 -0
- package/dist/core/ingestion/scope-resolution/passes/property-dispatch.js +118 -0
- package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.d.ts +109 -8
- package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +931 -92
- package/dist/core/ingestion/scope-resolution/passes/return-shape-members.d.ts +58 -0
- package/dist/core/ingestion/scope-resolution/passes/return-shape-members.js +458 -0
- package/dist/core/ingestion/scope-resolution/passes/unique-name-properties.d.ts +180 -0
- package/dist/core/ingestion/scope-resolution/passes/unique-name-properties.js +418 -0
- package/dist/core/ingestion/scope-resolution/pipeline/phase.d.ts +34 -0
- package/dist/core/ingestion/scope-resolution/pipeline/phase.js +82 -38
- package/dist/core/ingestion/scope-resolution/pipeline/run.d.ts +61 -1
- package/dist/core/ingestion/scope-resolution/pipeline/run.js +384 -48
- package/dist/core/ingestion/scope-resolution/resolution-outcome.d.ts +112 -2
- package/dist/core/ingestion/scope-resolution/resolution-outcome.js +38 -1
- package/dist/core/ingestion/scope-resolution/scope/namespace-targets.d.ts +25 -3
- package/dist/core/ingestion/scope-resolution/scope/namespace-targets.js +36 -16
- package/dist/core/ingestion/scope-resolution/scope/walkers.d.ts +210 -9
- package/dist/core/ingestion/scope-resolution/scope/walkers.js +968 -56
- package/dist/core/ingestion/scope-resolution/summary-maps.d.ts +28 -0
- package/dist/core/ingestion/scope-resolution/summary-maps.js +50 -0
- package/dist/core/ingestion/scope-resolution/undecided-satisfaction.d.ts +55 -0
- package/dist/core/ingestion/scope-resolution/undecided-satisfaction.js +37 -0
- package/dist/core/ingestion/scope-resolution/unresolved-receivers.d.ts +109 -0
- package/dist/core/ingestion/scope-resolution/unresolved-receivers.js +204 -0
- package/dist/core/ingestion/scope-resolution/utils/definition-id.d.ts +13 -0
- package/dist/core/ingestion/scope-resolution/utils/definition-id.js +19 -0
- package/dist/core/ingestion/scope-resolution/utils/generic-instantiation.d.ts +171 -0
- package/dist/core/ingestion/scope-resolution/utils/generic-instantiation.js +218 -0
- package/dist/core/ingestion/scope-resolution/workspace-index-types.d.ts +34 -0
- package/dist/core/ingestion/scope-resolution/workspace-index-types.js +15 -0
- package/dist/core/ingestion/scope-resolution/workspace-index.d.ts +7 -20
- package/dist/core/ingestion/taint/typescript-model.js +34 -2
- package/dist/core/ingestion/tree-sitter-queries.d.ts +11 -11
- package/dist/core/ingestion/tree-sitter-queries.js +688 -5
- package/dist/core/ingestion/type-env.js +11 -7
- package/dist/core/ingestion/type-extractors/jvm.js +17 -2
- package/dist/core/ingestion/type-extractors/shared.d.ts +17 -0
- package/dist/core/ingestion/type-extractors/shared.js +16 -0
- package/dist/core/ingestion/type-extractors/types.d.ts +12 -0
- package/dist/core/ingestion/type-extractors/typescript.d.ts +20 -0
- package/dist/core/ingestion/type-extractors/typescript.js +26 -0
- package/dist/core/ingestion/utils/ast-helpers.d.ts +311 -14
- package/dist/core/ingestion/utils/ast-helpers.js +745 -48
- package/dist/core/ingestion/utils/call-analysis.d.ts +27 -22
- package/dist/core/ingestion/utils/call-analysis.js +202 -7
- package/dist/core/ingestion/utils/callable-flow-captures.d.ts +153 -0
- package/dist/core/ingestion/utils/callable-flow-captures.js +928 -0
- package/dist/core/ingestion/utils/callable-labels.d.ts +25 -0
- package/dist/core/ingestion/utils/callable-labels.js +31 -0
- package/dist/core/ingestion/utils/effective-ram.d.ts +40 -0
- package/dist/core/ingestion/utils/effective-ram.js +58 -0
- package/dist/core/ingestion/utils/line-base.d.ts +14 -0
- package/dist/core/ingestion/utils/line-base.js +14 -0
- package/dist/core/ingestion/utils/method-props.d.ts +27 -4
- package/dist/core/ingestion/utils/method-props.js +29 -4
- package/dist/core/ingestion/utils/receiver-chain-captures.d.ts +31 -0
- package/dist/core/ingestion/utils/receiver-chain-captures.js +57 -0
- package/dist/core/ingestion/utils/receiver-chain-codec.d.ts +89 -0
- package/dist/core/ingestion/utils/receiver-chain-codec.js +182 -0
- package/dist/core/ingestion/utils/scope-tree-walk.d.ts +22 -0
- package/dist/core/ingestion/utils/scope-tree-walk.js +33 -0
- package/dist/core/ingestion/utils/template-arguments.d.ts +96 -0
- package/dist/core/ingestion/utils/template-arguments.js +196 -0
- package/dist/core/ingestion/utils/type-parameters.d.ts +49 -0
- package/dist/core/ingestion/utils/type-parameters.js +206 -0
- package/dist/core/ingestion/workers/callable-id.d.ts +72 -0
- package/dist/core/ingestion/workers/callable-id.js +116 -0
- package/dist/core/ingestion/workers/parse-worker.d.ts +14 -1
- package/dist/core/ingestion/workers/parse-worker.js +409 -39
- package/dist/core/ingestion/workers/worker-pool.d.ts +34 -27
- package/dist/core/ingestion/workers/worker-pool.js +133 -25
- package/dist/core/lbug/csv-generator.d.ts +27 -0
- package/dist/core/lbug/csv-generator.js +80 -17
- package/dist/core/lbug/extension-load-error.d.ts +2 -2
- package/dist/core/lbug/extension-load-error.js +44 -27
- package/dist/core/lbug/extension-loader.d.ts +29 -0
- package/dist/core/lbug/extension-loader.js +32 -7
- package/dist/core/lbug/graph-emit-sink.d.ts +264 -0
- package/dist/core/lbug/graph-emit-sink.js +581 -0
- package/dist/core/lbug/lbug-adapter.d.ts +337 -3
- package/dist/core/lbug/lbug-adapter.js +772 -67
- package/dist/core/lbug/lbug-config.d.ts +93 -6
- package/dist/core/lbug/lbug-config.js +269 -9
- package/dist/core/lbug/native-check.d.ts +39 -0
- package/dist/core/lbug/native-check.js +323 -46
- package/dist/core/lbug/pdg-emit-sink.d.ts +13 -4
- package/dist/core/lbug/pdg-emit-sink.js +21 -111
- package/dist/core/lbug/pool-adapter.d.ts +23 -1
- package/dist/core/lbug/pool-adapter.js +115 -7
- package/dist/core/lbug/query-batch.d.ts +75 -0
- package/dist/core/lbug/query-batch.js +102 -0
- package/dist/core/lbug/rel-pair-routing.d.ts +160 -2
- package/dist/core/lbug/rel-pair-routing.js +228 -10
- package/dist/core/lbug/schema.d.ts +162 -3
- package/dist/core/lbug/schema.js +392 -157
- package/dist/core/lbug/sidecar-recovery.d.ts +1 -0
- package/dist/core/lbug/sidecar-recovery.js +1 -1
- package/dist/core/lbug/sync-csv-writer.d.ts +47 -0
- package/dist/core/lbug/sync-csv-writer.js +108 -0
- package/dist/core/lbug/wal-checkpoint-driver.js +3 -0
- package/dist/core/platform/capabilities.d.ts +0 -1
- package/dist/core/platform/capabilities.js +12 -7
- package/dist/core/run-analyze.d.ts +150 -3
- package/dist/core/run-analyze.js +1562 -151
- package/dist/core/search/bm25-index.d.ts +11 -0
- package/dist/core/search/bm25-index.js +60 -26
- package/dist/core/search/fts-indexes.d.ts +167 -2
- package/dist/core/search/fts-indexes.js +264 -10
- package/dist/core/wiki/graph-queries.js +145 -112
- package/dist/core/wiki/llm-client.d.ts +37 -5
- package/dist/core/wiki/llm-client.js +88 -17
- package/dist/core/wiki/prompts.d.ts +19 -0
- package/dist/core/wiki/prompts.js +20 -1
- package/dist/lib/utils.d.ts +113 -0
- package/dist/lib/utils.js +185 -0
- package/dist/mcp/http-transport.d.ts +5 -0
- package/dist/mcp/http-transport.js +19 -5
- package/dist/mcp/local/aop-metadata.d.ts +77 -0
- package/dist/mcp/local/aop-metadata.js +227 -0
- package/dist/mcp/local/bean-metadata.d.ts +3 -0
- package/dist/mcp/local/bean-metadata.js +46 -0
- package/dist/mcp/local/local-backend.d.ts +167 -6
- package/dist/mcp/local/local-backend.js +1756 -405
- package/dist/mcp/local/path-predicate.d.ts +19 -0
- package/dist/mcp/local/path-predicate.js +21 -0
- package/dist/mcp/local/pdg-impact.d.ts +132 -10
- package/dist/mcp/local/pdg-impact.js +391 -98
- 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 +35 -0
- package/dist/mcp/repository-policy.js +333 -0
- package/dist/mcp/resources.js +34 -7
- package/dist/mcp/server.d.ts +5 -2
- package/dist/mcp/server.js +48 -18
- package/dist/mcp/tools.d.ts +8 -8
- package/dist/mcp/tools.js +91 -20
- package/dist/server/analyze-job.d.ts +40 -2
- package/dist/server/analyze-job.js +30 -2
- package/dist/server/analyze-launch.d.ts +1 -1
- package/dist/server/analyze-launch.js +79 -10
- package/dist/server/analyze-worker-core.d.ts +3 -2
- package/dist/server/analyze-worker-core.js +15 -3
- package/dist/server/analyze-worker-ipc.d.ts +1 -1
- package/dist/server/analyze-worker-ipc.js +4 -0
- package/dist/server/analyze-worker-protocol.d.ts +59 -0
- package/dist/server/analyze-worker-protocol.js +1 -0
- package/dist/server/analyze-worker.d.ts +1 -17
- package/dist/server/analyze-worker.js +29 -6
- package/dist/server/api.d.ts +2 -11
- package/dist/server/api.js +200 -155
- package/dist/server/embed-run-outcome.d.ts +89 -0
- package/dist/server/embed-run-outcome.js +88 -0
- package/dist/server/git-clone.js +6 -2
- package/dist/server/mcp-http.d.ts +1 -1
- package/dist/server/mcp-http.js +4 -2
- package/dist/server/middleware.d.ts +116 -9
- package/dist/server/middleware.js +291 -22
- package/dist/server/sse-progress.d.ts +41 -0
- package/dist/server/sse-progress.js +125 -0
- package/dist/server/upload-ingest.js +2 -1
- package/dist/server/validation.js +2 -1
- package/dist/storage/branch-index.d.ts +11 -6
- package/dist/storage/branch-index.js +15 -7
- package/dist/storage/file-hash.js +2 -2
- package/dist/storage/fs-atomic.d.ts +25 -0
- package/dist/storage/fs-atomic.js +42 -0
- package/dist/storage/git.d.ts +165 -0
- package/dist/storage/git.js +352 -3
- package/dist/storage/index-lock.d.ts +83 -0
- package/dist/storage/index-lock.js +654 -0
- package/dist/storage/parse-cache.js +482 -1
- package/dist/storage/parsedfile-store.d.ts +8 -0
- package/dist/storage/parsedfile-store.js +235 -1
- package/dist/storage/repo-manager.d.ts +29 -309
- package/dist/storage/repo-manager.js +187 -165
- package/dist/storage/repo-meta.d.ts +530 -0
- package/dist/storage/repo-meta.js +100 -0
- package/dist/types/pipeline.d.ts +37 -0
- package/hooks/antigravity/gitnexus-antigravity-hook.cjs +1 -1
- package/hooks/claude/gitnexus-hook.cjs +1 -1
- package/hooks/claude/resolve-analyze-cmd.cjs +80 -13
- package/package.json +20 -12
- package/scripts/cross-platform-shard.ts +143 -0
- package/scripts/cross-platform-tests.ts +94 -0
- package/scripts/ensure-fts.ts +14 -3
- package/scripts/run-cross-platform.ts +36 -10
- package/scripts/sync-plugin-manifests.mjs +192 -0
- package/skills/gitnexus-cli.md +3 -3
- package/skills/gitnexus-debugging.md +37 -7
- package/skills/gitnexus-exploring.md +26 -4
- package/skills/gitnexus-impact-analysis.md +71 -10
- package/skills/gitnexus-lfg/README.md +55 -0
- package/skills/gitnexus-lfg/SKILL.md +86 -0
- package/skills/gitnexus-plan/README.md +147 -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 +309 -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 +2366 -0
- package/skills/gitnexus-refactoring.md +48 -5
- package/skills/gitnexus-review/SKILL.md +279 -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-taint-analysis.md +13 -7
- package/skills/gitnexus-work/README.md +71 -0
- package/skills/gitnexus-work/SKILL.md +272 -0
- package/skills/gitnexus-work/references/evidence-provenance.md +309 -0
- package/skills/gitnexus-work/scripts/evidence-provenance.mjs +2366 -0
- package/vendor/leiden/utils.cjs +28 -1
- package/web/assets/ProcessFlowModal-Badh2Pbg.js +24 -0
- package/web/assets/__vite-browser-external-bMKyYQkO.js +1 -0
- package/web/assets/abnfDiagram-QNN2D4NM-Cq2djWWe.js +1 -0
- package/web/assets/agent-DIzEQ1JJ.js +626 -0
- package/web/assets/architecture-TIHT7OUA-V6N4J3SY-fTePvLoe.js +1 -0
- package/web/assets/architectureDiagram-OT7VKSJ7-mKEXxkeF.js +36 -0
- package/web/assets/blockDiagram-54WLDVWM-Dg_hrRWE.js +132 -0
- package/web/assets/{c4Diagram-Y2BXMSZH-DOXVs7-C.js → c4Diagram-X2LASM7V-CnhoT4aV.js} +6 -6
- package/web/assets/chunk-224SPVON-B8gxtXpy.js +1 -0
- package/web/assets/chunk-2AEHWXPW-CV4r6-1I.js +127 -0
- package/web/assets/chunk-2SREHG4O-Dip42xOq.js +1 -0
- package/web/assets/chunk-4RFN2BYJ-DHHWuC-n.js +1 -0
- package/web/assets/chunk-66DQ2XMT-CM0xjFAN.js +1 -0
- package/web/assets/chunk-6BELYETK-ChsYtfHW.js +1 -0
- package/web/assets/chunk-6L755F7B-CMhLBxi2.js +1 -0
- package/web/assets/chunk-7CWYLC5S-DRgGkkpF.js +2 -0
- package/web/assets/chunk-A7VWPJGB-B4O3oQdQ.js +1 -0
- package/web/assets/chunk-BI6VK774-D0oaWk8V.js +1 -0
- package/web/assets/chunk-D6VWDJW2-BxcBdZ9c.js +2 -0
- package/web/assets/chunk-DMV4VAQV-Bn6WXDSX.js +4 -0
- package/web/assets/chunk-E5QJAATJ-dh-5CtIV.js +2 -0
- package/web/assets/chunk-EQFTRU2I-1ix7TzW9.js +2 -0
- package/web/assets/chunk-FWYVLQTC-BgDItRzJ.js +1 -0
- package/web/assets/chunk-HNC4WDU7-DoU3KnA7.js +1 -0
- package/web/assets/chunk-L5GCOVLC-CE2w8Nm_.js +161 -0
- package/web/assets/chunk-LAHSG3N2-Bz4hcn0N.js +321 -0
- package/web/assets/chunk-LORZLZWG-B57uGw2N.js +88 -0
- package/web/assets/chunk-NLANEA3F-XpH_NPA5.js +62 -0
- package/web/assets/chunk-NV3KIAZN-5yvcpMiu.js +1 -0
- package/web/assets/chunk-OIYT25JQ-CQ6KOZGX.js +1 -0
- package/web/assets/chunk-PE7DX7ZZ-CCvRVj43.js +10 -0
- package/web/assets/chunk-Q67WD55A-BWCH2SVz.js +156 -0
- package/web/assets/chunk-RRFMTAIC-CMN0wcYA.js +1 -0
- package/web/assets/{chunk-RLI5ZMPA-CkXZ0y0U.js → chunk-SATU7PGQ-B1zhgOvc.js} +1 -1
- package/web/assets/chunk-STOV2HOB-GnExfzIX.js +1 -0
- package/web/assets/chunk-SZD42YQK-ijyKKVr1.js +70 -0
- package/web/assets/chunk-TFPGFQPA-Dj6a-0pC.js +231 -0
- package/web/assets/chunk-TGVD4F4B-BMc31Gj2.js +2 -0
- package/web/assets/chunk-TZUXEDM2-B7p9AcTw.js +1 -0
- package/web/assets/chunk-UAT7B5JY-DW-A_fpI.js +1 -0
- package/web/assets/{chunk-6764PJDD-C7xxk063.js → chunk-VE5CLXGZ-C1vB7wpY.js} +1 -1
- package/web/assets/chunk-VJFVEZTB-CX66F2ep.js +206 -0
- package/web/assets/chunk-VY5UBI4V-yxPQAWxw.js +1 -0
- package/web/assets/chunk-WJBAP47W-BckNkuEN.js +1 -0
- package/web/assets/chunk-XNMVGMAZ-Cg_LnPtj.js +1 -0
- package/web/assets/classDiagram-VPOSVPXH-BjOiXA_C.js +1 -0
- package/web/assets/classDiagram-v2-5VFNUXQA-BjOiXA_C.js +1 -0
- package/web/assets/{cose-bilkent-UX7MHV2Q-BmnZ7Mvj.js → cose-bilkent-RZA4XIPR-BHpK4Crp.js} +1 -1
- package/web/assets/cynefin-VYW2F7L2-2VAHYKR6-DAsF6GZv.js +1 -0
- package/web/assets/cynefinDiagram-TR7LZUCG-C3Iar9lZ.js +62 -0
- package/web/assets/dagre-K64A6Z3X-CUwi79mA.js +4 -0
- package/web/assets/diagram-2TLGJV2N-C2F5Nfym.js +30 -0
- package/web/assets/diagram-JCD7PQ7C-DC5-9FRr.js +24 -0
- package/web/assets/diagram-KFBZAVDW-Dfmf_4ti.js +3 -0
- package/web/assets/diagram-L7DVE3PN-GIRyVUtt.js +41 -0
- package/web/assets/diagram-YP3FGXHI-CyNFYtkd.js +24 -0
- package/web/assets/ebnfDiagram-DRHRQJWO-D8_CI4ZF.js +1 -0
- package/web/assets/erDiagram-SZLJLQMB-CohQjznC.js +85 -0
- package/web/assets/eventmodeling-45OFAUF4-AOUJWSLX-BvTc6iQi.js +1 -0
- package/web/assets/flowDiagram-BWE6NHOH-B6RnEvD9.js +1 -0
- package/web/assets/ganttDiagram-2QTCJSNI-Cks_mEcF.js +292 -0
- package/web/assets/gitGraph-TEB2WS4Q-U5VWYIBC-Dy7CCSZ5.js +1 -0
- package/web/assets/gitGraphDiagram-VVZAVV5G-CG41cIVc.js +106 -0
- package/web/assets/{index-B4eB4dNZ.js → index-BBNl0qfX.js} +51 -51
- package/web/assets/index-CJDpyH-n.css +2 -0
- package/web/assets/info-DKCQHKI2-DX6KST54-BLJg1ikX.js +1 -0
- package/web/assets/infoDiagram-FY4PZKRE-BJ3vPVwW.js +2 -0
- package/web/assets/{ishikawaDiagram-BNXS4ZKH-BLjivjXL.js → ishikawaDiagram-4JDSWWDM-DmqWtjkl.js} +6 -6
- package/web/assets/{journeyDiagram-M6C3CM3L-Cetgs3NH.js → journeyDiagram-QUS3FAKT-XAzVzrQW.js} +6 -6
- package/web/assets/{kanban-definition-75IXJCU3-DMlCaIpf.js → kanban-definition-D4L7SQKK-YurRnmYn.js} +27 -27
- package/web/assets/katex-C5OPUE3Q-Bnbavtmu.js +257 -0
- package/web/assets/{mindmap-definition-2TDM6QVE-B4GbXQBc.js → mindmap-definition-66QP5TD6-ChrWWnil.js} +29 -29
- package/web/assets/node-Ct_zna8U.js +8 -0
- package/web/assets/packet-7NZHBO7P-5WG45QPS-KUxcuvaA.js +1 -0
- package/web/assets/pegDiagram-YKIO5C6U-QGeQLEq2.js +1 -0
- package/web/assets/pie-RZYD4A2V-2OCZ2VTD-DPs08kJY.js +1 -0
- package/web/assets/pieDiagram-YPY3TKG5-BuT3MYzm.js +39 -0
- package/web/assets/preload-helper-Czpn1I53.js +1 -0
- package/web/assets/{quadrantDiagram-VICAPDV7-B1TQnlm0.js → quadrantDiagram-VO5QLCXA-B7098wSc.js} +6 -6
- package/web/assets/radar-I7S5WNFK-EPLSA35B-w5F0K3a7.js +1 -0
- package/web/assets/railroad-3IZDKUUU-PWFQV6Y6-Bu668yqY.js +1 -0
- package/web/assets/railroad-abnf-AHOZXSZD-JYYJX3BS-B6ghpETS.js +1 -0
- package/web/assets/railroad-ebnf-EBAXGLYW-RBZ4ONAP-D-XmHh3M.js +1 -0
- package/web/assets/railroad-peg-LSFZ7HO6-KHNPXGPG-mhkrhzEn.js +1 -0
- package/web/assets/railroadDiagram-M77LTMSB-AXu4vxk_.js +1 -0
- package/web/assets/requirementDiagram-RASO5HTO-B-l8InpK.js +84 -0
- package/web/assets/sankeyDiagram-F32LOJ6L-Kd7zjJgX.js +40 -0
- package/web/assets/sdk-CzHHH8tD.js +37 -0
- package/web/assets/sequenceDiagram-URATNSBD-BlcdY9DS.js +162 -0
- package/web/assets/sizeCapture-5GORAGP4-BEqQzsxs.js +1 -0
- package/web/assets/src-C5sx_gMp.js +1 -0
- package/web/assets/stateDiagram-DODFXNG5-DTdHc-fF.js +1 -0
- package/web/assets/stateDiagram-v2-JNMM5JRA-DioNLDDo.js +1 -0
- package/web/assets/swimlanes-OSWOYLSK-CA0ofdwY.js +2 -0
- package/web/assets/swimlanesDiagram-RHGX2RDE-PkwUdckC.js +8 -0
- package/web/assets/timeline-definition-WJXWRH4I-DUfp1R3E.js +120 -0
- package/web/assets/treeView-QDETBFTQ-EHYTSQNO-C5lpBgPm.js +1 -0
- package/web/assets/treemap-6X3UGDF4-CCWCF7EK-BB0ZyO-B.js +1 -0
- package/web/assets/vennDiagram-K3VCMQLI-Bj-FN-XS.js +34 -0
- package/web/assets/wardley-OPB4EBWU-6OWERDVT-CEA3Nq0j.js +1 -0
- package/web/assets/wardleyDiagram-XK6FUAWV-CVV0dHFr.js +78 -0
- package/web/assets/xychartDiagram-5VRUVLCW-CK_rbSWE.js +7 -0
- package/web/index.html +17 -15
- package/dist/core/ingestion/languages/python/index-stats.d.ts +0 -18
- package/dist/core/ingestion/languages/python/index-stats.js +0 -25
- package/skills/gitnexus-pr-review.md +0 -163
- package/web/assets/ProcessFlowModal-Dna7GkwO.js +0 -22
- package/web/assets/agent-DNYDy-KA.js +0 -660
- package/web/assets/architecture-7EHR7CIX-6QZW5X65-BVWFvYz2.js +0 -1
- package/web/assets/architectureDiagram-UL44E2DR-BU5ZRITg.js +0 -36
- package/web/assets/blockDiagram-7IZFK4PR-Dut1BpTV.js +0 -132
- package/web/assets/chunk-2T2R6R2M-pkw2oXHH.js +0 -4
- package/web/assets/chunk-2UTLFMKG-CXlhF3Pt.js +0 -1
- package/web/assets/chunk-3SSMPTDK-rPsRM1x0.js +0 -321
- package/web/assets/chunk-4R4BOZG6-Be_F0JoX.js +0 -159
- package/web/assets/chunk-67TQ5CYL-zxhDWgyF.js +0 -124
- package/web/assets/chunk-7J6CGLKN-AmkN8jJN.js +0 -10
- package/web/assets/chunk-C62D2QBJ-3gdL8EKc.js +0 -1
- package/web/assets/chunk-CEXFNPSA-CjwtMDkc.js +0 -1
- package/web/assets/chunk-INKRHTLW-D9BM9HWZ.js +0 -70
- package/web/assets/chunk-J5EP6P6S-L19oz55R.js +0 -1
- package/web/assets/chunk-KGFNY3KK-tD2F6wxK.js +0 -62
- package/web/assets/chunk-KGYTTC2M-zm6n242I.js +0 -1
- package/web/assets/chunk-KNLZD3CH-BGlP6X9R.js +0 -1
- package/web/assets/chunk-LCXTWHL2-Ba9JK-6F.js +0 -231
- package/web/assets/chunk-LII3EMHJ-EGx-eBIu.js +0 -1
- package/web/assets/chunk-LRIF4GLE-C3_PqUBq.js +0 -1
- package/web/assets/chunk-QA3QBVWF-D4cSJBf6.js +0 -2
- package/web/assets/chunk-RERM46MO-B5dAdWpP.js +0 -1
- package/web/assets/chunk-RG4AUYOV-OqBBMwuQ.js +0 -206
- package/web/assets/chunk-RKZBBQEN-MyIQbGgD.js +0 -1
- package/web/assets/chunk-T2UQINTJ-BJusEiGe.js +0 -1
- package/web/assets/chunk-UP6H54XL-BG-n7qDp.js +0 -1
- package/web/assets/chunk-UXSXWOXI-CW1_r5cS.js +0 -1
- package/web/assets/chunk-UY5QBCOK-BCpUlARQ.js +0 -1
- package/web/assets/chunk-VU6ZFW4Y-BeXVk45_.js +0 -2
- package/web/assets/chunk-ZXARS5L4-BI_qR2Nm.js +0 -1
- package/web/assets/classDiagram-KGZ6W3CR-D9zSIg0x.js +0 -1
- package/web/assets/classDiagram-v2-72OJOZXJ-D9zSIg0x.js +0 -1
- package/web/assets/dagre-ND4H6XIP-CpcV5kbl.js +0 -4
- package/web/assets/diagram-3NCE3AQN-6SMxBRpj.js +0 -43
- package/web/assets/diagram-GF46GFSD-BZEdNcRZ.js +0 -24
- package/web/assets/diagram-HNR7UZ2L-DxKW2a2Y.js +0 -3
- package/web/assets/diagram-QXG6HAR7-HfTHcXX_.js +0 -24
- package/web/assets/diagram-WEQXMOUZ-CyijUS8r.js +0 -10
- package/web/assets/erDiagram-L5TCEMPS-D0fvpWEX.js +0 -85
- package/web/assets/eventmodeling-FCH6USID-MREXMVOE-CgFBM7e-.js +0 -1
- package/web/assets/flowDiagram-H6V6AXG4-Bvr9bbhk.js +0 -162
- package/web/assets/ganttDiagram-JCBTUEKG-TzODrLzv.js +0 -292
- package/web/assets/gitGraph-WXDBUCRP-R675I2BI-DCJv7SII.js +0 -1
- package/web/assets/gitGraphDiagram-S2ZK5IYY-ONQSwJIY.js +0 -106
- package/web/assets/index-CX_fADmQ.css +0 -2
- package/web/assets/info-J43DQDTF-KCYPFFUO-BfNy-9Nd.js +0 -1
- package/web/assets/infoDiagram-3YFTVSEB-DIPVUIQ6.js +0 -2
- package/web/assets/katex-K3KEBU37-qRQBy-EZ.js +0 -261
- package/web/assets/packet-YPE3B663-LP52Z2RK-D4qkeG9k.js +0 -1
- package/web/assets/pie-LRSECV5Y-TCRJHUBD-B_yMKyQa.js +0 -1
- package/web/assets/pieDiagram-CU6KROY3-D3YC_xyg.js +0 -30
- package/web/assets/radar-GUYGQ44K-RDLRG3WG-DeD6yN_0.js +0 -1
- package/web/assets/requirementDiagram-JXO7QTGE-f8wczLQf.js +0 -84
- package/web/assets/sankeyDiagram-URQDO5SZ-BTxzG5j0.js +0 -40
- package/web/assets/sequenceDiagram-VS2MUI6T-DuamM-IR.js +0 -162
- package/web/assets/src-BNCXICdA.js +0 -1
- package/web/assets/stateDiagram-7D4R322I-Ch2pEUcw.js +0 -1
- package/web/assets/stateDiagram-v2-36443NZ5-7ANuoZLL.js +0 -1
- package/web/assets/timeline-definition-O6YCAMPW-07BR8R8G.js +0 -120
- package/web/assets/treeView-BLDUP644-QA4HXRO3-CDuSYnd4.js +0 -1
- package/web/assets/treemap-LRROVOQU-LLAWBHMP-imazucyJ.js +0 -1
- package/web/assets/vennDiagram-MWXL3ELB-BQX2ossk.js +0 -34
- package/web/assets/wardley-L42UT6IY-5TKZOOLJ-DqrT9tB8.js +0 -1
- package/web/assets/wardleyDiagram-CUQ6CDDI-CGIJBBiK.js +0 -78
- package/web/assets/xychartDiagram-N2JHSOCM-B3HNMuWp.js +0 -7
- /package/web/assets/{chunk-7W6UQGC5-pyKGssV3.js → chunk-LIEV3EAG-pyKGssV3.js} +0 -0
|
@@ -16,8 +16,11 @@
|
|
|
16
16
|
* router derives the label from the RAW id, while the oracle re-derives it via a
|
|
17
17
|
* regex over the ESCAPED row — so for an id containing a `"` the router is the
|
|
18
18
|
* more-correct path (it routes the edge to the right pair; the oracle's regex
|
|
19
|
-
* mis-buckets or drops it).
|
|
20
|
-
*
|
|
19
|
+
* mis-buckets or drops it). Unlike the legacy oracle, the router also rejects a
|
|
20
|
+
* valid node-label pair absent from the relationship DDL. That distinction is
|
|
21
|
+
* load-bearing: silently writing such a CSV lets COPY fail late and can drop an
|
|
22
|
+
* otherwise valid edge during fallback. `splitRelCsvByLabelPair` is retained as
|
|
23
|
+
* the differential oracle (the quote-in-id divergence is asserted explicitly).
|
|
21
24
|
*
|
|
22
25
|
* Backpressure: at most one stream is awaited at a time (the caller routes
|
|
23
26
|
* edges sequentially and awaits the returned drain promise before the next),
|
|
@@ -28,6 +31,24 @@ import path from 'path';
|
|
|
28
31
|
import { createWriteStream } from 'fs';
|
|
29
32
|
import { once } from 'events';
|
|
30
33
|
import { finished } from 'stream/promises';
|
|
34
|
+
import { NODE_TABLES } from '../../_shared/index.js';
|
|
35
|
+
import { findInCauseChain } from '../../lib/utils.js';
|
|
36
|
+
/**
|
|
37
|
+
* Every label LadybugDB has a node table for — the filter that decides whether
|
|
38
|
+
* an edge is routable at all.
|
|
39
|
+
*
|
|
40
|
+
* ONE shared instance, deliberately. `RelPairRouter`, `GraphEmitSink` and
|
|
41
|
+
* `PdgEmitSink` each used to build their own `new Set(NODE_TABLES)`; three
|
|
42
|
+
* copies of the same immutable set are three chances to seed one of them from
|
|
43
|
+
* a different source. Typed `ReadonlySet` because that — not `Object.freeze`,
|
|
44
|
+
* which does not touch a Set's internal slots — is what actually stops a
|
|
45
|
+
* consumer mutating the shared instance.
|
|
46
|
+
*
|
|
47
|
+
* Imported straight from `gitnexus-shared` rather than `./schema.js`: schema.ts
|
|
48
|
+
* imports `parseRelationSchemaPairs` from this module, so the reverse import
|
|
49
|
+
* would close a cycle.
|
|
50
|
+
*/
|
|
51
|
+
export const VALID_NODE_TABLES = new Set(NODE_TABLES);
|
|
31
52
|
/**
|
|
32
53
|
* Derive a node's table label from its graph id. Matches the legacy
|
|
33
54
|
* `getNodeLabel` that lived inline in `loadGraphToLbug`:
|
|
@@ -42,6 +63,196 @@ export const getNodeLabel = (nodeId) => {
|
|
|
42
63
|
return 'Process';
|
|
43
64
|
return nodeId.split(':')[0];
|
|
44
65
|
};
|
|
66
|
+
/**
|
|
67
|
+
* Classify one edge into its `From|To` pair key, or `undefined` when the edge
|
|
68
|
+
* must be SKIPPED because an endpoint's label is not a real node table.
|
|
69
|
+
*
|
|
70
|
+
* THE single definition of "which pair does this edge belong to, and is it
|
|
71
|
+
* routable at all". `RelPairRouter.route`, `GraphEmitSink.addRelationship`,
|
|
72
|
+
* `PdgEmitSink.addRelationship` and the `structural-pair-coverage` corpus guard
|
|
73
|
+
* each used to inline the same three lines (label both ends → drop if either
|
|
74
|
+
* label is not a node table → join with `|`). The corpus guard's docblock said
|
|
75
|
+
* it "mirrors `RelPairRouter.route`" — a mirror is a drift marker: change the
|
|
76
|
+
* skip rule here and the guard would keep classifying by the old one, report
|
|
77
|
+
* green, and let `analyze` abort on a pair it had already declared covered.
|
|
78
|
+
*
|
|
79
|
+
* HOT PATH — called once per edge (~1M on a large repo). Returns the key
|
|
80
|
+
* string (which every caller needs anyway for its own Map lookup) rather than
|
|
81
|
+
* a `{ pairKey, fromLabel, toLabel }` object or a tuple, so the success path
|
|
82
|
+
* allocates nothing beyond what `getNodeLabel` already did. Callers that need
|
|
83
|
+
* the two labels back — only when opening a new pair's CSV, once per pair —
|
|
84
|
+
* decode the key with {@link splitRelPairKey}.
|
|
85
|
+
*/
|
|
86
|
+
export const relPairKeyFor = (fromId, toId, validTables) => {
|
|
87
|
+
const fromLabel = getNodeLabel(fromId);
|
|
88
|
+
const toLabel = getNodeLabel(toId);
|
|
89
|
+
if (!validTables.has(fromLabel) || !validTables.has(toLabel))
|
|
90
|
+
return undefined;
|
|
91
|
+
return `${fromLabel}|${toLabel}`;
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Decode a `From|To` pair key back into its two labels.
|
|
95
|
+
*
|
|
96
|
+
* Safe because `|` cannot occur inside a node label: every label is a
|
|
97
|
+
* `NODE_TABLES` identifier (`[A-Za-z][A-Za-z0-9_]*`), so the FIRST `|` is
|
|
98
|
+
* always the separator. That invariant was documented in one comment and
|
|
99
|
+
* enforced nowhere while every consumer re-derived it with a bare
|
|
100
|
+
* `key.split('|')`.
|
|
101
|
+
*
|
|
102
|
+
* DECODE ONLY — there is deliberately no matching `encode` helper. The key is
|
|
103
|
+
* built once per edge inside {@link relPairKeyFor} (~1M edges on a large
|
|
104
|
+
* repo), where a function call is a real regression risk; every decode site is
|
|
105
|
+
* cold by construction (once per pair when its CSV is opened, or on the
|
|
106
|
+
* throw path of {@link assertDeclaredPair}).
|
|
107
|
+
*/
|
|
108
|
+
export const splitRelPairKey = (key) => {
|
|
109
|
+
const sep = key.indexOf('|');
|
|
110
|
+
return sep < 0 ? [key, ''] : [key.slice(0, sep), key.slice(sep + 1)];
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* Build a fresh matcher for the `FROM <label> TO <label>` clauses of a
|
|
114
|
+
* relationship DDL. Capture group 1 is the FROM label, group 2 the TO label;
|
|
115
|
+
* backticks quote schema labels and are not part of the graph label.
|
|
116
|
+
*
|
|
117
|
+
* THE SINGLE SOURCE OF TRUTH for that pattern. `parseRelationSchemaPairs`
|
|
118
|
+
* below builds its pair set from it, and `test/unit/schema-pair-coverage.test.ts`
|
|
119
|
+
* counts raw `FROM…TO` occurrences with it to catch a pair DUPLICATED in the
|
|
120
|
+
* DDL (a duplicate makes LadybugDB reject `CREATE REL TABLE`, killing every
|
|
121
|
+
* `analyze` — strictly worse than one missing pair). That guard used to inline
|
|
122
|
+
* its own copy of the regex: the two matched identically, so it worked, but any
|
|
123
|
+
* widening here (dotted identifiers, `IF NOT EXISTS`, a multi-target
|
|
124
|
+
* `FROM x TO y, z` form) would have silently degraded it to the tautology
|
|
125
|
+
* `declared.size === declared.size`. Consume this factory instead of
|
|
126
|
+
* re-inlining a copy.
|
|
127
|
+
*
|
|
128
|
+
* A FACTORY, not a shared `RegExp`: a module-level `/g` regex carries
|
|
129
|
+
* `lastIndex` between calls, so one consumer's `exec`/`test` would corrupt
|
|
130
|
+
* everyone else's next match. Each call returns a private instance.
|
|
131
|
+
*/
|
|
132
|
+
export const createRelationPairMatcher = () => /\bFROM\s+`?([A-Za-z][A-Za-z0-9_]*)`?\s+TO\s+`?([A-Za-z][A-Za-z0-9_]*)`?/g;
|
|
133
|
+
/**
|
|
134
|
+
* Extract the FROM→TO pairs accepted by a relationship DDL.
|
|
135
|
+
*
|
|
136
|
+
* This belongs at the routing boundary: schema.ts owns the DDL, while the CSV
|
|
137
|
+
* router owns the fail-fast check that prevents writing a pair LadybugDB cannot
|
|
138
|
+
* COPY.
|
|
139
|
+
*/
|
|
140
|
+
export const parseRelationSchemaPairs = (relationSchema) => new Set([...relationSchema.matchAll(createRelationPairMatcher())].map((match) => `${match[1]}|${match[2]}`));
|
|
141
|
+
/**
|
|
142
|
+
* Best-effort source file for a graph node id.
|
|
143
|
+
*
|
|
144
|
+
* Node ids are `<Label>:<repo-relative path>:…` (`comm_*` / `proc_*` synthetic
|
|
145
|
+
* ids carry no file). Repo-relative paths are POSIX-normalized and never carry
|
|
146
|
+
* a drive letter, so the segment after the label is the file path. Returns
|
|
147
|
+
* `undefined` rather than guessing when the id has no path segment — a wrong
|
|
148
|
+
* file in a crash message is worse than none.
|
|
149
|
+
*/
|
|
150
|
+
const deriveNodeFilePath = (nodeId) => {
|
|
151
|
+
if (nodeId.startsWith('comm_') || nodeId.startsWith('proc_'))
|
|
152
|
+
return undefined;
|
|
153
|
+
const filePath = nodeId.split(':')[1];
|
|
154
|
+
return filePath === undefined || filePath === '' ? undefined : filePath;
|
|
155
|
+
};
|
|
156
|
+
/** Where a user files the missing pair. Part of the message — see below. */
|
|
157
|
+
const UNDECLARED_PAIR_ISSUE_URL = 'https://github.com/abhigyanpatwari/GitNexus/issues/new';
|
|
158
|
+
/**
|
|
159
|
+
* An edge whose endpoint-label pair is absent from the relationship DDL.
|
|
160
|
+
*
|
|
161
|
+
* Carries the context the emit call site already has — relationship type, both
|
|
162
|
+
* node ids, and the source file derived from them — so a user whose `analyze`
|
|
163
|
+
* just died mid-run can see WHICH of their files produced the edge and file a
|
|
164
|
+
* bug report that names the missing pair. The abstract label pair alone is
|
|
165
|
+
* unactionable outside GitNexus's own source (#2789).
|
|
166
|
+
*
|
|
167
|
+
* Classify by TYPE (`err instanceof UndeclaredRelationPairError`, or
|
|
168
|
+
* {@link findUndeclaredRelationPairError} when the error may be wrapped in a
|
|
169
|
+
* phase `cause` chain) — the repo norm from #2385 — never by message text.
|
|
170
|
+
*
|
|
171
|
+
* THE MESSAGE IS THE ONLY RENDERING. It carries the five context fields AND
|
|
172
|
+
* the two actionable next steps (report the pair; `.gitnexusignore` the file to
|
|
173
|
+
* finish the rest of the index), because `gitnexus serve` forwards nothing but
|
|
174
|
+
* `err.message` over worker IPC — anything a consumer re-renders from the
|
|
175
|
+
* structured fields instead is invisible to a serve-hosted user. The CLI
|
|
176
|
+
* branch in `cli/analyze.ts` therefore prints this message indented and adds
|
|
177
|
+
* only the machine-readable `cliError` fields, the same idiom `LbugWipeError`
|
|
178
|
+
* uses there. It used to re-render the five fields with its own wording; the
|
|
179
|
+
* two copies had already drifted on the pair separator, the no-file text and
|
|
180
|
+
* the closing sentence within a single PR, and each had its own pinning test.
|
|
181
|
+
*/
|
|
182
|
+
export class UndeclaredRelationPairError extends Error {
|
|
183
|
+
/** `From|To` label pair, exactly as keyed against the declared-pair set. */
|
|
184
|
+
pairKey;
|
|
185
|
+
/** Relationship type of the edge that could not be routed (e.g. `CALLS`). */
|
|
186
|
+
relationType;
|
|
187
|
+
fromId;
|
|
188
|
+
toId;
|
|
189
|
+
/** Source file derived from the node ids; `undefined` for synthetic ids. */
|
|
190
|
+
sourceFile;
|
|
191
|
+
constructor(pairKey, relationType, fromId, toId) {
|
|
192
|
+
const sourceFile = deriveNodeFilePath(fromId) ?? deriveNodeFilePath(toId);
|
|
193
|
+
const [fromLabel, toLabel] = splitRelPairKey(pairKey);
|
|
194
|
+
super(`GitNexus extracted a relationship its own database schema cannot store.\n` +
|
|
195
|
+
`Relationship label pair ${fromLabel} → ${toLabel} is not declared in the ` +
|
|
196
|
+
`LadybugDB relation schema.\n` +
|
|
197
|
+
` relationship type: ${relationType}\n` +
|
|
198
|
+
` from node: ${fromId}\n` +
|
|
199
|
+
` to node: ${toId}\n` +
|
|
200
|
+
` source file: ${sourceFile ?? '(none — synthetic node id)'}\n` +
|
|
201
|
+
`This is a gap in GitNexus's own relation schema, not a problem with the ` +
|
|
202
|
+
`analyzed code, and re-running the analysis will fail in exactly the same place.\n` +
|
|
203
|
+
`Suggestions:\n` +
|
|
204
|
+
` 1. Report the missing pair so it can be declared:\n` +
|
|
205
|
+
` ${UNDECLARED_PAIR_ISSUE_URL}\n` +
|
|
206
|
+
` Include the label pair, the relationship type, and the source file above.\n` +
|
|
207
|
+
` 2. To finish indexing the rest meanwhile, add that file (or its directory)\n` +
|
|
208
|
+
` to .gitnexusignore and re-run.`);
|
|
209
|
+
this.name = 'UndeclaredRelationPairError';
|
|
210
|
+
this.pairKey = pairKey;
|
|
211
|
+
this.relationType = relationType;
|
|
212
|
+
this.fromId = fromId;
|
|
213
|
+
this.toId = toId;
|
|
214
|
+
this.sourceFile = sourceFile;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Find an {@link UndeclaredRelationPairError} in `err` or its `cause` chain.
|
|
219
|
+
*
|
|
220
|
+
* The guard throws deep inside an ingestion phase, and the phase runner rewraps
|
|
221
|
+
* every phase failure as `new Error("Phase 'X' failed: …", { cause })` — so a
|
|
222
|
+
* bare `instanceof` at the CLI boundary would miss it and fall through to the
|
|
223
|
+
* generic stack dump.
|
|
224
|
+
*
|
|
225
|
+
* The traversal and its depth bound come from `lib/utils.ts` rather than being
|
|
226
|
+
* re-rolled here: this was the fourth hand-written copy in the repo and the
|
|
227
|
+
* only one that used `depth <= MAX` (six levels) while claiming to mirror
|
|
228
|
+
* `cli/analyze.ts`'s `depth < 5`.
|
|
229
|
+
*/
|
|
230
|
+
export const findUndeclaredRelationPairError = (err) => findInCauseChain(err, (e) => e instanceof UndeclaredRelationPairError);
|
|
231
|
+
/**
|
|
232
|
+
* Fail fast on an endpoint-label pair absent from the relationship DDL, the
|
|
233
|
+
* same guard `RelPairRouter.route` applies to the whole-graph emit. Exported
|
|
234
|
+
* so the streamed sinks (`GraphEmitSink`, `PdgEmitSink`) can apply it too —
|
|
235
|
+
* without this, an undeclared pair on a streaming run reaches `COPY`, fails
|
|
236
|
+
* the bulk insert, and is silently dropped by the per-edge fallback instead
|
|
237
|
+
* of failing loudly like the non-streaming path does.
|
|
238
|
+
*
|
|
239
|
+
* Takes the already-built `From|To` pairKey (from {@link relPairKeyFor})
|
|
240
|
+
* rather than the two labels — every caller needs that same key immediately
|
|
241
|
+
* after for its own Map/stream lookup, and this is on the per-edge hot path,
|
|
242
|
+
* so building it twice would be a needless allocation per edge. The error
|
|
243
|
+
* splits it back apart with {@link splitRelPairKey}, which only the throw path
|
|
244
|
+
* reaches. The edge context is passed POSITIONALLY for the same reason: a
|
|
245
|
+
* `{ relationType, fromId, toId }` context object would allocate on every
|
|
246
|
+
* edge, including the ~1M that never fail.
|
|
247
|
+
*
|
|
248
|
+
* The success path must stay allocation-free: no object literal, no template
|
|
249
|
+
* string, no closure, no `Error` constructed before the failure branch.
|
|
250
|
+
*/
|
|
251
|
+
export const assertDeclaredPair = (pairKey, declaredPairs, relationType, fromId, toId) => {
|
|
252
|
+
if (!declaredPairs.has(pairKey)) {
|
|
253
|
+
throw new UndeclaredRelationPairError(pairKey, relationType, fromId, toId);
|
|
254
|
+
}
|
|
255
|
+
};
|
|
45
256
|
/**
|
|
46
257
|
* Routes already-escaped relationship CSV rows to per-FROM→TO-label-pair
|
|
47
258
|
* files. Filters edges whose endpoint labels are not valid node tables
|
|
@@ -51,6 +262,7 @@ export class RelPairRouter {
|
|
|
51
262
|
csvDir;
|
|
52
263
|
header;
|
|
53
264
|
validTables;
|
|
265
|
+
declaredPairs;
|
|
54
266
|
wsFactory;
|
|
55
267
|
/** pairKey (`From|To`) → { csvPath, rows } */
|
|
56
268
|
byPair = new Map();
|
|
@@ -59,10 +271,11 @@ export class RelPairRouter {
|
|
|
59
271
|
total = 0;
|
|
60
272
|
streamError = null;
|
|
61
273
|
abort = new AbortController();
|
|
62
|
-
constructor(csvDir, header, validTables, wsFactory = (p) => createWriteStream(p, 'utf-8')) {
|
|
274
|
+
constructor(csvDir, header, validTables, declaredPairs, wsFactory = (p) => createWriteStream(p, 'utf-8')) {
|
|
63
275
|
this.csvDir = csvDir;
|
|
64
276
|
this.header = header;
|
|
65
277
|
this.validTables = validTables;
|
|
278
|
+
this.declaredPairs = declaredPairs;
|
|
66
279
|
this.wsFactory = wsFactory;
|
|
67
280
|
}
|
|
68
281
|
markError = (err) => {
|
|
@@ -83,21 +296,24 @@ export class RelPairRouter {
|
|
|
83
296
|
* Returns `void` on the synchronous hot path; a `Promise<void>` only when a
|
|
84
297
|
* stream signals backpressure (or a new pair's header does) — the caller
|
|
85
298
|
* awaits the promise before routing the next edge.
|
|
299
|
+
*
|
|
300
|
+
* `relType` is not used for routing — it is carried purely so an undeclared
|
|
301
|
+
* pair can name the offending relationship in its error (the row is already
|
|
302
|
+
* CSV-escaped by then, so the type is not recoverable from it).
|
|
86
303
|
*/
|
|
87
|
-
route(fromId, toId, row) {
|
|
304
|
+
route(fromId, toId, row, relType) {
|
|
88
305
|
if (this.streamError)
|
|
89
306
|
throw this.streamError;
|
|
90
|
-
const
|
|
91
|
-
|
|
92
|
-
if (!this.validTables.has(fromLabel) || !this.validTables.has(toLabel)) {
|
|
307
|
+
const pairKey = relPairKeyFor(fromId, toId, this.validTables);
|
|
308
|
+
if (pairKey === undefined) {
|
|
93
309
|
this.skipped++;
|
|
94
310
|
return;
|
|
95
311
|
}
|
|
96
|
-
|
|
312
|
+
assertDeclaredPair(pairKey, this.declaredPairs, relType, fromId, toId);
|
|
97
313
|
const ws = this.streams.get(pairKey);
|
|
98
314
|
if (ws === undefined) {
|
|
99
315
|
// First edge for this pair: open the stream, write header + row.
|
|
100
|
-
return this.openAndWrite(pairKey,
|
|
316
|
+
return this.openAndWrite(pairKey, row);
|
|
101
317
|
}
|
|
102
318
|
this.byPair.get(pairKey).rows++;
|
|
103
319
|
this.total++;
|
|
@@ -105,7 +321,9 @@ export class RelPairRouter {
|
|
|
105
321
|
return once(ws, 'drain', { signal: this.abort.signal }).then(() => undefined);
|
|
106
322
|
}
|
|
107
323
|
}
|
|
108
|
-
|
|
324
|
+
/** Cold: runs once per pair, so decoding the key back is free here. */
|
|
325
|
+
async openAndWrite(pairKey, row) {
|
|
326
|
+
const [fromLabel, toLabel] = splitRelPairKey(pairKey);
|
|
109
327
|
const csvPath = path.join(this.csvDir, `rel_${fromLabel}_${toLabel}.csv`);
|
|
110
328
|
const ws = this.wsFactory(csvPath);
|
|
111
329
|
ws.on('error', this.markError);
|
|
@@ -14,7 +14,7 @@ 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
16
|
export declare const FUNCTION_SCHEMA = "\nCREATE NODE TABLE Function (\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)";
|
|
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)";
|
|
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)";
|
|
@@ -32,7 +32,7 @@ export declare const TYPE_ALIAS_SCHEMA: string;
|
|
|
32
32
|
export declare const CONST_SCHEMA: string;
|
|
33
33
|
export declare const STATIC_SCHEMA: string;
|
|
34
34
|
export declare const VARIABLE_SCHEMA: string;
|
|
35
|
-
export declare const PROPERTY_SCHEMA = "\nCREATE NODE TABLE `Property` (\n id STRING,\n name STRING,\n filePath STRING,\n startLine INT64,\n endLine INT64,\n content STRING,\n description STRING,\n declaredType STRING,\n PRIMARY KEY (id)\n)";
|
|
35
|
+
export declare const PROPERTY_SCHEMA = "\nCREATE NODE TABLE `Property` (\n id STRING,\n name STRING,\n filePath STRING,\n startLine INT64,\n endLine INT64,\n content STRING,\n description STRING,\n declaredType STRING,\n /*\n * DETAIL SYMBOL \u2014 true when this property is a member of a shape that has no\n * independent identity: the keys of an anonymous literal returned from a\n * function (R3-4).\n *\n * It exists because indexing those keys is right for the GRAPH and wrong for\n * TEXT SEARCH. They are ordinary words (message, value, timestamp) and\n * there are many of them, so letting them into the FTS result set pushes the\n * CALLABLES named after the same concept past the row cap the search applies\n * \u2014 measured: query('message') went from two processes to none on the\n * mini-repo fixture. A ranking tweak cannot fix that, because the rows never\n * come back from the FTS call in the first place.\n *\n * So the search layer gained a notion it did not have \u2014 a symbol that is\n * queryable, walkable and impact-analysable, but not a concept a text search\n * should surface on its own. buildFtsQueryCypher excludes these for the\n * Property table only; every other consumer sees them normally.\n */\n isDetail BOOLEAN,\n PRIMARY KEY (id)\n)";
|
|
36
36
|
export declare const RECORD_SCHEMA: string;
|
|
37
37
|
export declare const DELEGATE_SCHEMA: string;
|
|
38
38
|
export declare const ANNOTATION_SCHEMA: string;
|
|
@@ -43,7 +43,58 @@ export declare const ROUTE_SCHEMA = "\nCREATE NODE TABLE Route (\n id STRING,\n
|
|
|
43
43
|
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
44
|
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
45
|
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
|
-
|
|
46
|
+
/**
|
|
47
|
+
* The 69 pairs NEITHER rule above generates — everything left after the two
|
|
48
|
+
* cross products are subtracted. Carried by CONTAINMENT, inheritance, imports
|
|
49
|
+
* and DI: a container label crossed with a contained label. No predicate
|
|
50
|
+
* describes that surface (any container can hold any definition).
|
|
51
|
+
*
|
|
52
|
+
* What survives here is characteristic, not arbitrary. Almost all of it is a
|
|
53
|
+
* TARGET no rule reaches — `CodeElement`, `Impl`, `Namespace`, `Template`,
|
|
54
|
+
* `Typedef`, `Union`, `Static`, `Section`, `Folder` are in neither
|
|
55
|
+
* `SCOPE_BRIDGE_TARGET_LABELS` nor {@link ATTACHMENT_TARGET_LABELS} — plus the
|
|
56
|
+
* `Impl|*` and `Template|*` member rows (Rust `impl`/`trait` bodies, C++
|
|
57
|
+
* templates), the two `Route|Process` / `Tool|Process` entry points whose
|
|
58
|
+
* emitter names both labels as literals, and `BasicBlock|BasicBlock`, the PDG
|
|
59
|
+
* substrate.
|
|
60
|
+
*
|
|
61
|
+
* NOTHING A RULE ALREADY COVERS BELONGS HERE. `generatedRelationPairs` skips
|
|
62
|
+
* any pair present in this block, so a redundant line does not merely duplicate
|
|
63
|
+
* — it SUPPRESSES generation, and later narrowing a rule would silently keep
|
|
64
|
+
* that pair alive with no test failing. 166 such lines now live in the generated
|
|
65
|
+
* half (161 from #2793, the three `Record` member pairs moved by #2801/#2871,
|
|
66
|
+
* and the two `TypeAlias` pairs moved by R2-2 here);
|
|
67
|
+
* `test/unit/schema-pair-coverage.test.ts` now fails if one comes back.
|
|
68
|
+
*
|
|
69
|
+
* Those last two arrived by MERGE, and the shape is worth recording because it
|
|
70
|
+
* is the one this block's warning cannot catch by itself. #2871 and this branch
|
|
71
|
+
* each deleted their OWN label's hand-written pairs — `Record` there,
|
|
72
|
+
* `TypeAlias` here — for the identical reason, in the identical region. Git
|
|
73
|
+
* presents that as one conflict in which each side appears to be deleting the
|
|
74
|
+
* other's lines, and "keep ours" or "keep theirs" both resolve cleanly, compile,
|
|
75
|
+
* and silently re-suppress the other label's generation. The correct resolution
|
|
76
|
+
* is neither: take the UNION of the deletions. Verified by asserting all five
|
|
77
|
+
* pairs are still present in the emitted DDL — a check that does not read
|
|
78
|
+
* `LINKABLE_LABELS`, unlike the pair-coverage test, which derives both sides
|
|
79
|
+
* from it and so moves with any change to it.
|
|
80
|
+
*
|
|
81
|
+
* Folding this remainder into a third cross product
|
|
82
|
+
* (`DEFINITION_ANCHOR_LABELS × {CodeElement, Section, Typedef, Union,
|
|
83
|
+
* Namespace, Impl, TypeAlias, Static, Template}`) would take the table to 641
|
|
84
|
+
* pairs and leave only ~29 lines here. `bench/schema-pairs` measures 641 at
|
|
85
|
+
* 1.22–1.43× on the historical reference box; current production's 461 pairs
|
|
86
|
+
* remain below their 1.5× Windows budget. Those cross-machine values are not an
|
|
87
|
+
* ordering, so any proposal must remeasure both sizes on one box. Until then,
|
|
88
|
+
* the rule stays deferred rather than trading ~40 lines for unmeasured query cost.
|
|
89
|
+
*
|
|
90
|
+
* Exported so `test/unit/schema-pair-coverage.test.ts` can subtract it and
|
|
91
|
+
* assert the GENERATED region of the DDL for exact equality against the two
|
|
92
|
+
* rules, rather than one-directional containment.
|
|
93
|
+
* `test/integration/structural-pair-coverage.test.ts` guards this half from a
|
|
94
|
+
* corpus — that is the guard, not this comment.
|
|
95
|
+
*/
|
|
96
|
+
export declare const STRUCTURAL_PAIR_DDL = " FROM File TO Folder,\n FROM File TO CodeElement,\n FROM File TO `Typedef`,\n FROM File TO `Union`,\n FROM File TO `Namespace`,\n FROM File TO `Impl`,\n FROM File TO `Static`,\n FROM File TO `Template`,\n FROM File TO Section,\n FROM Folder TO Folder,\n FROM Folder TO File,\n FROM Function TO `Template`,\n FROM Function TO `Namespace`,\n FROM Function TO `Impl`,\n FROM Function TO `Typedef`,\n FROM Function TO `Union`,\n FROM Function TO CodeElement,\n FROM Class TO `Template`,\n FROM Class TO `Impl`,\n FROM Class TO `Union`,\n FROM Class TO `Namespace`,\n FROM Class TO `Typedef`,\n FROM Class TO CodeElement,\n FROM Method TO `Template`,\n FROM Method TO `Namespace`,\n FROM Method TO `Impl`,\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 CodeElement,\n FROM `Module` TO `Namespace`,\n FROM `Namespace` TO Function,\n FROM CodeElement TO CodeElement,\n FROM CodeElement TO `Module`,\n FROM CodeElement TO `Property`,\n FROM Section TO Section,\n FROM Interface TO CodeElement,\n FROM `Namespace` TO `Struct`,\n FROM `Impl` TO Method,\n FROM `Impl` TO Function,\n FROM `Impl` TO `Constructor`,\n FROM `Impl` TO `Property`,\n FROM `Impl` TO `Trait`,\n FROM `Impl` TO `Struct`,\n FROM `Impl` TO `Impl`,\n FROM `Constructor` TO `Template`,\n FROM `Constructor` TO `Impl`,\n FROM `Constructor` TO `Namespace`,\n FROM `Constructor` TO `Typedef`,\n FROM Route TO Process,\n FROM Tool TO Process,\n FROM BasicBlock TO BasicBlock";
|
|
97
|
+
export declare const RELATION_SCHEMA: string;
|
|
47
98
|
export declare const EMBEDDING_DIMS: number;
|
|
48
99
|
/** HNSW vector index name for the CodeEmbedding table. */
|
|
49
100
|
export declare const EMBEDDING_INDEX_NAME = "code_embedding_idx";
|
|
@@ -61,3 +112,111 @@ export declare const CREATE_VECTOR_INDEX_QUERY = "\nCALL CREATE_VECTOR_INDEX('Co
|
|
|
61
112
|
export declare const NODE_SCHEMA_QUERIES: string[];
|
|
62
113
|
export declare const REL_SCHEMA_QUERIES: string[];
|
|
63
114
|
export declare const SCHEMA_QUERIES: string[];
|
|
115
|
+
/**
|
|
116
|
+
* Digest of the graph DDL this build creates — the exact statements
|
|
117
|
+
* {@link runSchemaCreationQueries} (lbug-adapter.ts) executes for the node and
|
|
118
|
+
* relation tables.
|
|
119
|
+
*
|
|
120
|
+
* This REPLACED `INCREMENTAL_SCHEMA_VERSION` (#2798), a hand-incremented
|
|
121
|
+
* integer in repo-manager.ts that had to PREDICT whether an on-disk database
|
|
122
|
+
* was created from this build's DDL. It could not: the number collided with
|
|
123
|
+
* `main` eight times, twice EXACTLY, and an exact clash was the quiet failure —
|
|
124
|
+
* two builds stamp the same number over different DDL, the strict `===` gate
|
|
125
|
+
* reads the index as current, every `CREATE … TABLE` is skipped as "already
|
|
126
|
+
* exists" (suppressed in `runSchemaCreationQueries`), and the edges whose
|
|
127
|
+
* endpoint pair the live DB cannot persist are dropped by
|
|
128
|
+
* `fallbackRelationshipInserts`' bare `catch`. A wrong graph, not an error.
|
|
129
|
+
*
|
|
130
|
+
* A digest cannot collide BY ACCIDENT at this scale: 12 hex chars is 48 bits,
|
|
131
|
+
* so even 1,000 distinct DDL variants over the project's whole life put the
|
|
132
|
+
* birthday probability of any pair matching at ≈1.8e-9. Two builds agree
|
|
133
|
+
* exactly when their DDL agrees, so concurrent branches never need renumbering.
|
|
134
|
+
* Do not shorten the slice: the odds double per bit dropped. On mismatch —
|
|
135
|
+
* including the ABSENT stamp every pre-#2798 index carries — run-analyze warns
|
|
136
|
+
* and forces a full re-analyze, which wipes the database and recreates the
|
|
137
|
+
* tables from the DDL below.
|
|
138
|
+
*
|
|
139
|
+
* {@link EMBEDDING_SCHEMA} is deliberately EXCLUDED. Its `FLOAT[N]` width comes
|
|
140
|
+
* from `GITNEXUS_EMBEDDING_DIMS` at module load, so folding it in would make
|
|
141
|
+
* this a function of the ENVIRONMENT rather than of code: two runs of the same
|
|
142
|
+
* build under different env would disagree and force alternating full rebuilds.
|
|
143
|
+
* Vector-column drift is therefore a SEPARATE gate, not an ungated hazard:
|
|
144
|
+
* {@link embeddingDimsMismatch} compares the width stamped in
|
|
145
|
+
* `RepoMeta.embeddingDims` against {@link EMBEDDING_DIMS} and run-analyze
|
|
146
|
+
* forces a rebuild on drift. Do not merge the two — an env-derived value in a
|
|
147
|
+
* code digest makes the same build disagree with itself. (The older reaction in
|
|
148
|
+
* run-analyze remains, and is to the CACHE, not the schema: when the cached
|
|
149
|
+
* vectors' length differs from `EMBEDDING_DIMS` it discards the cache and
|
|
150
|
+
* re-embeds.)
|
|
151
|
+
*/
|
|
152
|
+
export declare const SCHEMA_FINGERPRINT: string;
|
|
153
|
+
/**
|
|
154
|
+
* Whether an index built under `recorded` can be reused by this build.
|
|
155
|
+
*
|
|
156
|
+
* Lives here rather than in run-analyze so the query side can ask the same
|
|
157
|
+
* question without importing the analyze pipeline — the reason
|
|
158
|
+
* `cjkSegmentationModeMismatch` sits in `core/search/` rather than beside its
|
|
159
|
+
* caller. ABSENT counts as a mismatch: that is the backward-compatibility path
|
|
160
|
+
* for every index written before the field existed, and grandfathering it would
|
|
161
|
+
* stamp a fresh fingerprint onto a database whose DDL was never verified.
|
|
162
|
+
*/
|
|
163
|
+
export declare const schemaFingerprintMismatch: (recorded: string | undefined) => boolean;
|
|
164
|
+
/**
|
|
165
|
+
* Whether a stamped value has the shape {@link SCHEMA_FINGERPRINT} produces —
|
|
166
|
+
* the lowercase-hex prefix of a sha256 digest. The width is read from the live
|
|
167
|
+
* constant, so changing the slice above needs no edit here.
|
|
168
|
+
*
|
|
169
|
+
* Used to decide whether a stamp is worth NAMING in a diagnostic: an index with
|
|
170
|
+
* no fingerprint and one carrying a malformed value are both "not this build",
|
|
171
|
+
* but only the first has an explanation worth printing. Not a comparison gate —
|
|
172
|
+
* {@link schemaFingerprintMismatch} already rejects every value that is not
|
|
173
|
+
* exactly this build's.
|
|
174
|
+
*/
|
|
175
|
+
export declare const isSchemaFingerprintShaped: (value: unknown) => value is string;
|
|
176
|
+
/**
|
|
177
|
+
* Whether the vector-column width an index's `CodeEmbedding` table was created
|
|
178
|
+
* at (as persisted in `RepoMeta.embeddingDims`) differs from the width this
|
|
179
|
+
* process would embed at ({@link EMBEDDING_DIMS}). The gate
|
|
180
|
+
* {@link SCHEMA_FINGERPRINT} deliberately cannot be: `FLOAT[N]` comes from
|
|
181
|
+
* `GITNEXUS_EMBEDDING_DIMS` at module load, so folding it into a digest of the
|
|
182
|
+
* DDL would make that digest a function of the ENVIRONMENT. Splitting it out
|
|
183
|
+
* here keeps the fingerprint purely code-derived and still gates the width —
|
|
184
|
+
* before this, flipping `GITNEXUS_EMBEDDING_DIMS` on a same-commit clean tree
|
|
185
|
+
* fired no guard at all: `alreadyUpToDate` returned over a `FLOAT[384]` table
|
|
186
|
+
* while the process embedded at 768. (The one pre-existing reaction, in
|
|
187
|
+
* run-analyze, discards the embedding CACHE and re-embeds — into a column whose
|
|
188
|
+
* width was never revisited.) A single scalar, so plain equality suffices.
|
|
189
|
+
*
|
|
190
|
+
* ABSENT does NOT count as a mismatch — the opposite of
|
|
191
|
+
* {@link schemaFingerprintMismatch}, and deliberately:
|
|
192
|
+
*
|
|
193
|
+
* - Absence carries no signal about the width. A missing fingerprint means
|
|
194
|
+
* "DDL this build cannot vouch for", and the field ships WITH a DDL change,
|
|
195
|
+
* so absence is itself evidence of drift. A missing dims stamp means only
|
|
196
|
+
* "written before the field existed"; the width was whatever that run's env
|
|
197
|
+
* resolved, almost always the 384 default, and it was consistent with the
|
|
198
|
+
* table it wrote. Drift needs the env to CHANGE, which absence says nothing
|
|
199
|
+
* about.
|
|
200
|
+
* - Forcing on absence would buy no safety anyway. Every index that lacks this
|
|
201
|
+
* stamp also lacks `schemaFingerprint` (both landed together in #2798), and
|
|
202
|
+
* that guard already forces a rebuild for exactly those indexes — after
|
|
203
|
+
* which the width is stamped and the hazard is closed for good. A second
|
|
204
|
+
* trigger for the same one rebuild is dead weight that would keep firing
|
|
205
|
+
* forever on any future path that legitimately omits the stamp.
|
|
206
|
+
* - The cost of guessing wrong is asymmetric: a fleet-wide full re-analyze
|
|
207
|
+
* (minutes to hours per repo) for a hazard that requires a rare, deliberate
|
|
208
|
+
* env change.
|
|
209
|
+
*
|
|
210
|
+
* Absence is precisely `undefined`. Any other recorded value that is not this
|
|
211
|
+
* build's width — including a malformed one, since `meta.json` is a schema-less
|
|
212
|
+
* `JSON.parse` of on-disk state — reads as a mismatch and errs toward a
|
|
213
|
+
* rebuild, which is the safe direction.
|
|
214
|
+
*
|
|
215
|
+
* Pure + exported for testing, and takes `current` explicitly rather than
|
|
216
|
+
* closing over {@link EMBEDDING_DIMS}: that constant is frozen at module load,
|
|
217
|
+
* so a parameter is the only way to exercise both sides of the comparison.
|
|
218
|
+
* Lives here rather than in run-analyze for the reason
|
|
219
|
+
* `cjkSegmentationModeMismatch` lives in `core/search/` — a caller that only
|
|
220
|
+
* needs the comparator should not have to pull in the analyze pipeline.
|
|
221
|
+
*/
|
|
222
|
+
export declare const embeddingDimsMismatch: (recorded: number | undefined, current: number) => boolean;
|