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
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type { RepoMeta } from '../storage/repo-manager.js';
|
|
2
|
+
export declare const INDEX_INCOMPLETE_REASONS: readonly ["incremental-in-progress", "embedding-checkpoint-pending", "embedding-count-unverified", "graph-write-collapsed"];
|
|
3
|
+
export type IndexIncompleteReason = (typeof INDEX_INCOMPLETE_REASONS)[number];
|
|
4
|
+
/**
|
|
5
|
+
* Fraction of the pipeline's relationship count that must survive into the DB
|
|
6
|
+
* before the write counts as collapsed. Deliberately generous: this detects
|
|
7
|
+
* "most of the graph did not persist" (the reported case lost ~91%), not a
|
|
8
|
+
* per-edge reconciliation.
|
|
9
|
+
*/
|
|
10
|
+
export declare const GRAPH_WRITE_COLLAPSE_RATIO = 0.5;
|
|
11
|
+
/**
|
|
12
|
+
* Below this many relationships the ratio is meaningless — a handful of edges
|
|
13
|
+
* lost to legitimate filtering would trip it — so small repos are exempt.
|
|
14
|
+
*/
|
|
15
|
+
export declare const GRAPH_WRITE_COLLAPSE_MIN_EDGES = 100;
|
|
16
|
+
/** Why {@link detectGraphWriteCollapse} could reach no verdict at all. */
|
|
17
|
+
export type GraphWriteCollapseUnmeasurableReason =
|
|
18
|
+
/** The pipeline's own total was not a usable number (or was zero). */
|
|
19
|
+
'expected-unavailable'
|
|
20
|
+
/** The DB-side count could not be READ — a query that threw, no connection. */
|
|
21
|
+
| 'persisted-unreadable'
|
|
22
|
+
/** Set by the CALLER: an incremental write persists only the changed
|
|
23
|
+
* subgraph, so whole-scope counts are not comparable to it. */
|
|
24
|
+
| 'incremental-write';
|
|
25
|
+
/**
|
|
26
|
+
* The three outcomes of the collapse check, kept APART because two of them used
|
|
27
|
+
* to share `undefined` and the conflation erased a stamp recording real,
|
|
28
|
+
* unrepaired edge loss.
|
|
29
|
+
*
|
|
30
|
+
* `'healthy'` is a POSITIVE all-clear — the counts were both taken and enough
|
|
31
|
+
* rows persisted — and is the only outcome that licenses clearing a previous
|
|
32
|
+
* `graph-write-collapsed` stamp. `'unmeasurable'` says the comparison never
|
|
33
|
+
* happened; the previous stamp must survive it, because nothing has repaired
|
|
34
|
+
* whatever it recorded.
|
|
35
|
+
*/
|
|
36
|
+
export type GraphWriteCollapseVerdict = {
|
|
37
|
+
verdict: 'collapsed';
|
|
38
|
+
expected: number;
|
|
39
|
+
persisted: number;
|
|
40
|
+
} | {
|
|
41
|
+
verdict: 'healthy';
|
|
42
|
+
} | {
|
|
43
|
+
verdict: 'unmeasurable';
|
|
44
|
+
reason: GraphWriteCollapseUnmeasurableReason;
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Decide whether a finished write collapsed, comparing what the pipeline
|
|
48
|
+
* produced against what the DB hands back.
|
|
49
|
+
*
|
|
50
|
+
* A RATIO, not equality: some relationship types do not round-trip one-for-one
|
|
51
|
+
* and `--pdg` writes MORE rows into the same table, so demanding equality would
|
|
52
|
+
* fire on healthy runs. Only a collapse is a defect.
|
|
53
|
+
*
|
|
54
|
+
* FAIL-SAFE at `expected === 0`: an implementation that offloads relationships
|
|
55
|
+
* out of memory may not be able to report a total, and a false "your index is
|
|
56
|
+
* broken" is worse than a missed one. That case is `'unmeasurable'`, NOT
|
|
57
|
+
* `'healthy'` — nothing was compared, so nothing was cleared.
|
|
58
|
+
*
|
|
59
|
+
* Returns a THREE-WAY verdict rather than `{...} | undefined`. The absent value
|
|
60
|
+
* meant both "measured, fine" and "could not measure", and the caller — which
|
|
61
|
+
* decides whether to keep or erase the persisted `graph-write-collapsed` stamp —
|
|
62
|
+
* cannot tell those apart from a shared `undefined`. It guessed by write mode
|
|
63
|
+
* instead, so a full run whose structural count threw took the
|
|
64
|
+
* "no collapse ⇒ clear it" branch and deleted a stamp recording real loss.
|
|
65
|
+
*/
|
|
66
|
+
export declare function detectGraphWriteCollapse(expected: number,
|
|
67
|
+
/**
|
|
68
|
+
* Relationships readable from the DB, or `undefined` when the count could
|
|
69
|
+
* not be READ at all (no connection, a query that threw).
|
|
70
|
+
*
|
|
71
|
+
* The distinction is load-bearing and was got wrong once: `getLbugStats`
|
|
72
|
+
* reports `edges: 0` for "no connection", "query threw" AND "empty table"
|
|
73
|
+
* alike, so passing it straight in made every run without a readable DB look
|
|
74
|
+
* like a total collapse. An unmeasurable count is not a measured zero —
|
|
75
|
+
* accepting `undefined` here is what keeps this check from committing the
|
|
76
|
+
* same confident-zero error it exists to catch.
|
|
77
|
+
*/
|
|
78
|
+
persisted: number | undefined): GraphWriteCollapseVerdict;
|
|
79
|
+
/** Stable machine-readable reasons an index cannot be certified complete. */
|
|
80
|
+
export declare function getIndexIncompleteReasons(meta: Pick<RepoMeta, 'incrementalInProgress' | 'embeddingCheckpoint' | 'graphWriteCollapsed'> | null | undefined): IndexIncompleteReason[];
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { checkpointKind } from './embedding-checkpoint.js';
|
|
2
|
+
export const INDEX_INCOMPLETE_REASONS = [
|
|
3
|
+
'incremental-in-progress',
|
|
4
|
+
'embedding-checkpoint-pending',
|
|
5
|
+
'embedding-count-unverified',
|
|
6
|
+
'graph-write-collapsed',
|
|
7
|
+
];
|
|
8
|
+
/**
|
|
9
|
+
* Fraction of the pipeline's relationship count that must survive into the DB
|
|
10
|
+
* before the write counts as collapsed. Deliberately generous: this detects
|
|
11
|
+
* "most of the graph did not persist" (the reported case lost ~91%), not a
|
|
12
|
+
* per-edge reconciliation.
|
|
13
|
+
*/
|
|
14
|
+
export const GRAPH_WRITE_COLLAPSE_RATIO = 0.5;
|
|
15
|
+
/**
|
|
16
|
+
* Below this many relationships the ratio is meaningless — a handful of edges
|
|
17
|
+
* lost to legitimate filtering would trip it — so small repos are exempt.
|
|
18
|
+
*/
|
|
19
|
+
export const GRAPH_WRITE_COLLAPSE_MIN_EDGES = 100;
|
|
20
|
+
/**
|
|
21
|
+
* Decide whether a finished write collapsed, comparing what the pipeline
|
|
22
|
+
* produced against what the DB hands back.
|
|
23
|
+
*
|
|
24
|
+
* A RATIO, not equality: some relationship types do not round-trip one-for-one
|
|
25
|
+
* and `--pdg` writes MORE rows into the same table, so demanding equality would
|
|
26
|
+
* fire on healthy runs. Only a collapse is a defect.
|
|
27
|
+
*
|
|
28
|
+
* FAIL-SAFE at `expected === 0`: an implementation that offloads relationships
|
|
29
|
+
* out of memory may not be able to report a total, and a false "your index is
|
|
30
|
+
* broken" is worse than a missed one. That case is `'unmeasurable'`, NOT
|
|
31
|
+
* `'healthy'` — nothing was compared, so nothing was cleared.
|
|
32
|
+
*
|
|
33
|
+
* Returns a THREE-WAY verdict rather than `{...} | undefined`. The absent value
|
|
34
|
+
* meant both "measured, fine" and "could not measure", and the caller — which
|
|
35
|
+
* decides whether to keep or erase the persisted `graph-write-collapsed` stamp —
|
|
36
|
+
* cannot tell those apart from a shared `undefined`. It guessed by write mode
|
|
37
|
+
* instead, so a full run whose structural count threw took the
|
|
38
|
+
* "no collapse ⇒ clear it" branch and deleted a stamp recording real loss.
|
|
39
|
+
*/
|
|
40
|
+
export function detectGraphWriteCollapse(expected,
|
|
41
|
+
/**
|
|
42
|
+
* Relationships readable from the DB, or `undefined` when the count could
|
|
43
|
+
* not be READ at all (no connection, a query that threw).
|
|
44
|
+
*
|
|
45
|
+
* The distinction is load-bearing and was got wrong once: `getLbugStats`
|
|
46
|
+
* reports `edges: 0` for "no connection", "query threw" AND "empty table"
|
|
47
|
+
* alike, so passing it straight in made every run without a readable DB look
|
|
48
|
+
* like a total collapse. An unmeasurable count is not a measured zero —
|
|
49
|
+
* accepting `undefined` here is what keeps this check from committing the
|
|
50
|
+
* same confident-zero error it exists to catch.
|
|
51
|
+
*/
|
|
52
|
+
persisted) {
|
|
53
|
+
// Both sides must be REAL NUMBERS before any comparison. A non-numeric
|
|
54
|
+
// `expected` (a graph implementation that reports no total, a lightweight
|
|
55
|
+
// pipeline result) does not merely skip the guards — it INVERTS them:
|
|
56
|
+
// `undefined < 100` is false, so the min-edges exemption never fires, and
|
|
57
|
+
// `0 >= undefined * 0.5` is `0 >= NaN`, also false, so the ratio check
|
|
58
|
+
// "passes" too and a healthy run is reported as a total collapse. Comparing
|
|
59
|
+
// against a non-number is the one way this check can manufacture the exact
|
|
60
|
+
// false certainty it was written to prevent.
|
|
61
|
+
if (!Number.isFinite(expected)) {
|
|
62
|
+
return { verdict: 'unmeasurable', reason: 'expected-unavailable' };
|
|
63
|
+
}
|
|
64
|
+
if (typeof persisted !== 'number' || !Number.isFinite(persisted)) {
|
|
65
|
+
return { verdict: 'unmeasurable', reason: 'persisted-unreadable' };
|
|
66
|
+
}
|
|
67
|
+
const expectedCount = expected;
|
|
68
|
+
const persistedCount = persisted;
|
|
69
|
+
// FAIL-SAFE, and `'unmeasurable'` rather than `'healthy'`: a zero expectation
|
|
70
|
+
// is the documented "could not report a total" case, not evidence the write
|
|
71
|
+
// went well. Reporting it as an all-clear would let a run that measured
|
|
72
|
+
// nothing erase a stamp recording a previous run's real loss.
|
|
73
|
+
if (expectedCount === 0) {
|
|
74
|
+
return { verdict: 'unmeasurable', reason: 'expected-unavailable' };
|
|
75
|
+
}
|
|
76
|
+
// A TOTAL loss is never small enough to excuse. The min-edges exemption
|
|
77
|
+
// exists for "a handful of edges lost to legitimate filtering", which its own
|
|
78
|
+
// docstring says — it does not describe a persisted count of zero. Evaluated
|
|
79
|
+
// before the exemption because the exemption looked only at `expected`:
|
|
80
|
+
// `expected = 99, persisted = 0` lost every single edge and still returned
|
|
81
|
+
// no verdict, leaving the metadata fresh and the CLI reporting success.
|
|
82
|
+
if (expectedCount > 0 && persistedCount === 0) {
|
|
83
|
+
return { verdict: 'collapsed', expected: expectedCount, persisted: persistedCount };
|
|
84
|
+
}
|
|
85
|
+
// The small-repo exemption and the cleared ratio are both `'healthy'`, not
|
|
86
|
+
// `'unmeasurable'`: both counts WERE taken, and the comparison ran. Calling
|
|
87
|
+
// the exemption a non-verdict would make a stamp unclearable on any repo that
|
|
88
|
+
// shrank below the threshold — a permanent forced-rebuild wedge, which is the
|
|
89
|
+
// failure this taxonomy exists to avoid rather than to relocate.
|
|
90
|
+
if (expectedCount < GRAPH_WRITE_COLLAPSE_MIN_EDGES)
|
|
91
|
+
return { verdict: 'healthy' };
|
|
92
|
+
if (persistedCount >= expectedCount * GRAPH_WRITE_COLLAPSE_RATIO)
|
|
93
|
+
return { verdict: 'healthy' };
|
|
94
|
+
return { verdict: 'collapsed', expected: expectedCount, persisted: persistedCount };
|
|
95
|
+
}
|
|
96
|
+
/** Stable machine-readable reasons an index cannot be certified complete. */
|
|
97
|
+
export function getIndexIncompleteReasons(meta) {
|
|
98
|
+
const reasons = [];
|
|
99
|
+
if (meta?.incrementalInProgress)
|
|
100
|
+
reasons.push('incremental-in-progress');
|
|
101
|
+
// The run finished and wrote metadata, but far fewer edges reached the DB
|
|
102
|
+
// than the pipeline produced — the "refresh reported success, the index is
|
|
103
|
+
// unusable" failure. Without this the index reads as fresh and every tool
|
|
104
|
+
// answers from a graph missing most of its edges, which is indistinguishable
|
|
105
|
+
// from a codebase that genuinely has no such relationships.
|
|
106
|
+
if (meta?.graphWriteCollapsed)
|
|
107
|
+
reasons.push('graph-write-collapsed');
|
|
108
|
+
if (meta?.embeddingCheckpoint) {
|
|
109
|
+
// The three checkpoint kinds are not one operator-facing state. GUARDRAILS
|
|
110
|
+
// and the runbook document `embedding-checkpoint-pending` as "N node(s)
|
|
111
|
+
// lost their embeddings to endpoint failures" — true for 'interrupted' and
|
|
112
|
+
// 'partial', a lie for 'unverified-count', whose pending set is empty and
|
|
113
|
+
// whose only defect is a count nobody could measure (see the `kind` doc in
|
|
114
|
+
// repo-manager.ts).
|
|
115
|
+
reasons.push(checkpointKind(meta.embeddingCheckpoint) === 'unverified-count'
|
|
116
|
+
? 'embedding-count-unverified'
|
|
117
|
+
: 'embedding-checkpoint-pending');
|
|
118
|
+
}
|
|
119
|
+
return reasons;
|
|
120
|
+
}
|
|
@@ -16,11 +16,22 @@
|
|
|
16
16
|
*/
|
|
17
17
|
import { KnowledgeGraph } from '../graph/types.js';
|
|
18
18
|
import type { SemanticModel, SymbolTableReader } from './model/index.js';
|
|
19
|
+
import type { ParsedImport, SymbolDefinition } from '../../_shared/index.js';
|
|
19
20
|
import type { ExtractedRoute, ExtractedFetchCall } from './workers/parse-worker.js';
|
|
20
21
|
import type { ExtractedDecoratorRoute } from './workers/parse-worker.js';
|
|
21
22
|
/** Per-file resolved type bindings for exported symbols.
|
|
22
23
|
* Consumed by the cross-file re-resolution / enrichment pass. */
|
|
23
24
|
export type ExportedTypeMap = Map<string, Map<string, string>>;
|
|
25
|
+
interface RouteResolutionFile {
|
|
26
|
+
readonly filePath: string;
|
|
27
|
+
readonly parsedImports: readonly ParsedImport[];
|
|
28
|
+
readonly localDefs: readonly SymbolDefinition[];
|
|
29
|
+
}
|
|
30
|
+
interface RouteHandlerResolutionContext {
|
|
31
|
+
readonly files: readonly RouteResolutionFile[];
|
|
32
|
+
readonly resolveImportTarget: (parsedImport: ParsedImport, fromFile: string) => string | null;
|
|
33
|
+
readonly isExportedSymbol: (nodeId: string) => boolean;
|
|
34
|
+
}
|
|
24
35
|
/** Record one exported graph node into the incremental ExportedTypeMap. */
|
|
25
36
|
export declare const accumulateExportedTypesFromParsedNode: (result: ExportedTypeMap, node: {
|
|
26
37
|
id: string;
|
|
@@ -86,7 +97,7 @@ export declare const processRoutesFromExtracted: (graph: KnowledgeGraph, extract
|
|
|
86
97
|
* `handlerSymbolId`; the extractor then falls back to source scan for that route
|
|
87
98
|
* (fail-open, no regression, never a wrong handler).
|
|
88
99
|
*/
|
|
89
|
-
export declare function resolveRouteHandlerSymbols(model: SemanticModel, extractedRoutes: readonly ExtractedRoute[], decoratorRoutes: readonly ExtractedDecoratorRoute[]): Map<string, string>;
|
|
100
|
+
export declare function resolveRouteHandlerSymbols(model: SemanticModel, extractedRoutes: readonly ExtractedRoute[], decoratorRoutes: readonly ExtractedDecoratorRoute[], routeContext?: RouteHandlerResolutionContext): Map<string, string>;
|
|
90
101
|
/**
|
|
91
102
|
* Extract property access keys from a consumer file's source code near fetch calls.
|
|
92
103
|
*
|
|
@@ -112,3 +123,4 @@ export declare const extractConsumerAccessedKeys: (content: string) => string[];
|
|
|
112
123
|
*/
|
|
113
124
|
export declare const processNextjsFetchRoutes: (graph: KnowledgeGraph, fetchCalls: ExtractedFetchCall[], routeUrlToKeys: Map<string, string[]>, // routeURL → route node keys at that URL
|
|
114
125
|
consumerContents?: Map<string, string>) => void;
|
|
126
|
+
export {};
|
|
@@ -19,6 +19,7 @@ import { yieldToEventLoop } from './utils/event-loop.js';
|
|
|
19
19
|
import { normalizeFetchURL, routeMatches } from './route-extractors/nextjs.js';
|
|
20
20
|
import { normalizeExtractedRoutePath, normalizeRouteMethod, routeNodeKey, } from './route-extractors/route-path.js';
|
|
21
21
|
import { extractReturnTypeName } from './type-extractors/shared.js';
|
|
22
|
+
import { DATA_ROUTE_TABLE_SOURCE } from './route-extractors/data-route-table.js';
|
|
22
23
|
const MAX_EXPORTS_PER_FILE = 500;
|
|
23
24
|
const MAX_TYPE_NAME_LENGTH = 256;
|
|
24
25
|
/** Record one exported graph node into the incremental ExportedTypeMap. */
|
|
@@ -242,7 +243,7 @@ export const processRoutesFromExtracted = async (graph, extractedRoutes, model,
|
|
|
242
243
|
* `handlerSymbolId`; the extractor then falls back to source scan for that route
|
|
243
244
|
* (fail-open, no regression, never a wrong handler).
|
|
244
245
|
*/
|
|
245
|
-
export function resolveRouteHandlerSymbols(model, extractedRoutes, decoratorRoutes) {
|
|
246
|
+
export function resolveRouteHandlerSymbols(model, extractedRoutes, decoratorRoutes, routeContext) {
|
|
246
247
|
const out = new Map();
|
|
247
248
|
// Route identities already claimed by an earlier route (resolved or not).
|
|
248
249
|
// Mirrors the routes phase `addRoute` first-writer-wins so the handler we
|
|
@@ -254,6 +255,74 @@ export function resolveRouteHandlerSymbols(model, extractedRoutes, decoratorRout
|
|
|
254
255
|
const defs = model.symbols.lookupExactAll(filePath, name);
|
|
255
256
|
return defs.length === 1 ? defs[0]?.nodeId : undefined;
|
|
256
257
|
};
|
|
258
|
+
const uniqueById = (defs) => {
|
|
259
|
+
const byId = new Map(defs.map((def) => [def.nodeId, def]));
|
|
260
|
+
return byId.size === 1 ? byId.values().next().value : undefined;
|
|
261
|
+
};
|
|
262
|
+
const routeCallables = (defs) => defs.filter((def) => def.type === 'Function' || def.type === 'Method');
|
|
263
|
+
const exportedRouteCallables = (defs) => routeContext === undefined
|
|
264
|
+
? []
|
|
265
|
+
: routeCallables(defs).filter((def) => routeContext.isExportedSymbol(def.nodeId));
|
|
266
|
+
const filesByPath = new Map(routeContext?.files.map((file) => [file.filePath, file]) ?? []);
|
|
267
|
+
const uniqueImport = (filePath, localName) => {
|
|
268
|
+
const matches = (filesByPath.get(filePath)?.parsedImports ?? []).filter((parsedImport) => 'localName' in parsedImport &&
|
|
269
|
+
parsedImport.localName === localName &&
|
|
270
|
+
parsedImport.kind !== 'dynamic-unresolved');
|
|
271
|
+
return matches.length === 1 ? matches[0] : undefined;
|
|
272
|
+
};
|
|
273
|
+
const importedTarget = (filePath, localName) => {
|
|
274
|
+
if (routeContext === undefined)
|
|
275
|
+
return undefined;
|
|
276
|
+
const parsedImport = uniqueImport(filePath, localName);
|
|
277
|
+
if (parsedImport === undefined)
|
|
278
|
+
return undefined;
|
|
279
|
+
const targetFile = routeContext.resolveImportTarget(parsedImport, filePath);
|
|
280
|
+
return targetFile === null ? undefined : { parsedImport, targetFile };
|
|
281
|
+
};
|
|
282
|
+
const resolveDataRouteHandler = (filePath, designator) => {
|
|
283
|
+
const parts = designator.split('.');
|
|
284
|
+
if (parts.length === 1) {
|
|
285
|
+
const local = uniqueById(routeCallables(model.symbols.lookupExactAll(filePath, designator)));
|
|
286
|
+
if (local !== undefined)
|
|
287
|
+
return local.nodeId;
|
|
288
|
+
const imported = importedTarget(filePath, designator);
|
|
289
|
+
if (imported === undefined ||
|
|
290
|
+
imported.parsedImport.kind === 'namespace' ||
|
|
291
|
+
imported.parsedImport.kind === 'wildcard' ||
|
|
292
|
+
!('importedName' in imported.parsedImport)) {
|
|
293
|
+
return undefined;
|
|
294
|
+
}
|
|
295
|
+
if (imported.parsedImport.importedName === 'default') {
|
|
296
|
+
// ParsedFile does not carry explicit default-export provenance. Fail
|
|
297
|
+
// closed rather than infer an unrelated named export from the module.
|
|
298
|
+
return undefined;
|
|
299
|
+
}
|
|
300
|
+
return uniqueById(exportedRouteCallables(model.symbols.lookupExactAll(imported.targetFile, imported.parsedImport.importedName)))?.nodeId;
|
|
301
|
+
}
|
|
302
|
+
if (parts.length !== 2)
|
|
303
|
+
return undefined;
|
|
304
|
+
const [receiver, member] = parts;
|
|
305
|
+
const localOwner = uniqueById(model.symbols.lookupExactAll(filePath, receiver));
|
|
306
|
+
if (localOwner !== undefined) {
|
|
307
|
+
return uniqueById(model.methods.lookupAllByOwner(localOwner.nodeId, member))?.nodeId;
|
|
308
|
+
}
|
|
309
|
+
const imported = importedTarget(filePath, receiver);
|
|
310
|
+
if (imported === undefined || imported.parsedImport.kind === 'wildcard')
|
|
311
|
+
return undefined;
|
|
312
|
+
if (imported.parsedImport.kind === 'namespace') {
|
|
313
|
+
return uniqueById(exportedRouteCallables(model.symbols.lookupExactAll(imported.targetFile, member)))?.nodeId;
|
|
314
|
+
}
|
|
315
|
+
if (!('importedName' in imported.parsedImport))
|
|
316
|
+
return undefined;
|
|
317
|
+
if (imported.parsedImport.importedName === 'default')
|
|
318
|
+
return undefined;
|
|
319
|
+
const owner = uniqueById(model.symbols
|
|
320
|
+
.lookupExactAll(imported.targetFile, imported.parsedImport.importedName)
|
|
321
|
+
.filter((def) => routeContext?.isExportedSymbol(def.nodeId) === true));
|
|
322
|
+
return owner === undefined
|
|
323
|
+
? undefined
|
|
324
|
+
: uniqueById(model.methods.lookupAllByOwner(owner.nodeId, member))?.nodeId;
|
|
325
|
+
};
|
|
257
326
|
const claim = (routePath, prefix, httpMethod, symbolId) => {
|
|
258
327
|
if (!routePath)
|
|
259
328
|
return;
|
|
@@ -283,10 +352,48 @@ export function resolveRouteHandlerSymbols(model, extractedRoutes, decoratorRout
|
|
|
283
352
|
}
|
|
284
353
|
claim(route.routePath, route.prefix ?? null, route.httpMethod, methodId);
|
|
285
354
|
}
|
|
355
|
+
const dataHandlerByRoute = new Map();
|
|
356
|
+
const dataHandlersByIdentity = new Map();
|
|
357
|
+
for (const dr of decoratorRoutes) {
|
|
358
|
+
if (dr.source !== DATA_ROUTE_TABLE_SOURCE || !dr.handlerName || !dr.routePath)
|
|
359
|
+
continue;
|
|
360
|
+
const handlerId = resolveDataRouteHandler(dr.filePath, dr.handlerName);
|
|
361
|
+
const url = normalizeExtractedRoutePath(dr.routePath, dr.prefix ?? null);
|
|
362
|
+
const key = routeNodeKey(normalizeRouteMethod(dr.httpMethod), url);
|
|
363
|
+
const state = dataHandlersByIdentity.get(key) ?? {
|
|
364
|
+
handlers: new Set(),
|
|
365
|
+
hasUnresolved: false,
|
|
366
|
+
};
|
|
367
|
+
if (handlerId === undefined) {
|
|
368
|
+
state.hasUnresolved = true;
|
|
369
|
+
}
|
|
370
|
+
else {
|
|
371
|
+
dataHandlerByRoute.set(dr, handlerId);
|
|
372
|
+
state.handlers.add(handlerId);
|
|
373
|
+
}
|
|
374
|
+
dataHandlersByIdentity.set(key, state);
|
|
375
|
+
}
|
|
286
376
|
// Decorator routes (Spring / FastAPI / generic) — the decorated handler in
|
|
287
|
-
// the route's own file.
|
|
377
|
+
// the route's own file. Data tables additionally suppress an identity when
|
|
378
|
+
// duplicate entries resolve to different handlers: recording either one
|
|
379
|
+
// would invent a single-winner dispatch that the loop does not prove.
|
|
288
380
|
for (const dr of decoratorRoutes) {
|
|
289
|
-
const handlerId = dr.
|
|
381
|
+
const handlerId = dr.source === DATA_ROUTE_TABLE_SOURCE
|
|
382
|
+
? dataHandlerByRoute.get(dr)
|
|
383
|
+
: dr.handlerName
|
|
384
|
+
? uniqueSymbolId(dr.filePath, dr.handlerName)
|
|
385
|
+
: undefined;
|
|
386
|
+
// An unproven data-table entry never becomes a Route node, so it must not
|
|
387
|
+
// reserve the identity and suppress a later, valid framework declaration.
|
|
388
|
+
if (dr.source === DATA_ROUTE_TABLE_SOURCE && handlerId === undefined)
|
|
389
|
+
continue;
|
|
390
|
+
if (dr.source === DATA_ROUTE_TABLE_SOURCE && dr.routePath) {
|
|
391
|
+
const url = normalizeExtractedRoutePath(dr.routePath, dr.prefix ?? null);
|
|
392
|
+
const key = routeNodeKey(normalizeRouteMethod(dr.httpMethod), url);
|
|
393
|
+
const state = dataHandlersByIdentity.get(key);
|
|
394
|
+
if (state === undefined || state.hasUnresolved || state.handlers.size !== 1)
|
|
395
|
+
continue;
|
|
396
|
+
}
|
|
290
397
|
claim(dr.routePath, dr.prefix ?? null, dr.httpMethod, handlerId);
|
|
291
398
|
}
|
|
292
399
|
return out;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wire format of the `BasicBlock.callees` / `BasicBlock.calleeIds` cells.
|
|
3
|
+
*
|
|
4
|
+
* A LEAF module on purpose: it declares two string constants and imports
|
|
5
|
+
* nothing. `cfg/emit.ts` produces those cells and `mcp/local/pdg-impact.ts`
|
|
6
|
+
* parses them, but `emit.ts` is analyze-only and drags the whole CFG closure
|
|
7
|
+
* (reaching-defs, control-dependence, post-dominators, synthetic-escape,
|
|
8
|
+
* call-site-harvest) behind it — 8 modules evaluated at every MCP server start
|
|
9
|
+
* just to read two strings, since ESM evaluates a module to import any binding
|
|
10
|
+
* from it (#2802 review). Splitting the format constants out deletes that cost
|
|
11
|
+
* rather than deferring it, which is the same bar #2802 held its own proposals
|
|
12
|
+
* to.
|
|
13
|
+
*
|
|
14
|
+
* `emit.ts` RE-EXPORTS both names, so every existing importer keeps working and
|
|
15
|
+
* the producer/consumer pair still resolves to one definition — the drift this
|
|
16
|
+
* shared constant exists to prevent stays impossible.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Reserved token placed in `BasicBlock.callees` when a statement's call sites
|
|
20
|
+
* were truncated at the per-statement site cap: the recorded callee list is then
|
|
21
|
+
* INCOMPLETE, so over-cap callees are absent. `*` is not a valid identifier
|
|
22
|
+
* leaf, so it cannot collide with a real callee name. The impact bridge treats a
|
|
23
|
+
* slice containing this sentinel as "callees unknown" and keeps reach
|
|
24
|
+
* callgraph-equal (proven), rather than falsely labeling an absent-but-real
|
|
25
|
+
* callee `unproven-bridge`.
|
|
26
|
+
*/
|
|
27
|
+
export declare const CALLEES_TRUNCATED_SENTINEL = "*";
|
|
28
|
+
/**
|
|
29
|
+
* Inner separator for the `BasicBlock.calleeIds` cell (resolved callee symbol
|
|
30
|
+
* ids). A TAB is used — NOT a space — because resolved ids embed `filePath` and
|
|
31
|
+
* C++ overload shape tags with multi-word primitive types (e.g. `unsigned char`,
|
|
32
|
+
* `long double`), so an id can legitimately contain a space; a space-joined cell
|
|
33
|
+
* then fragments on read and silently drops inter-procedural reach to that
|
|
34
|
+
* callee (#2227 tri-review). A tab cannot appear in a tree-sitter-derived id
|
|
35
|
+
* token (paths/identifiers/type tokens are tab-free) and round-trips intact
|
|
36
|
+
* through `escapeCSVField` (tab is in its preserved set) and the RFC-4180 COPY
|
|
37
|
+
* reader (every cell is quoted). Producer (`calleeIdsOfBlock`) and consumer
|
|
38
|
+
* (`splitCalleeIds`) both resolve to this single constant so they cannot drift.
|
|
39
|
+
* The sibling `callees` (leaf-name) cell stays space-joined — leaf names are
|
|
40
|
+
* bare identifiers and never contain a space.
|
|
41
|
+
*/
|
|
42
|
+
export declare const CALLEE_ID_SEP = "\t";
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wire format of the `BasicBlock.callees` / `BasicBlock.calleeIds` cells.
|
|
3
|
+
*
|
|
4
|
+
* A LEAF module on purpose: it declares two string constants and imports
|
|
5
|
+
* nothing. `cfg/emit.ts` produces those cells and `mcp/local/pdg-impact.ts`
|
|
6
|
+
* parses them, but `emit.ts` is analyze-only and drags the whole CFG closure
|
|
7
|
+
* (reaching-defs, control-dependence, post-dominators, synthetic-escape,
|
|
8
|
+
* call-site-harvest) behind it — 8 modules evaluated at every MCP server start
|
|
9
|
+
* just to read two strings, since ESM evaluates a module to import any binding
|
|
10
|
+
* from it (#2802 review). Splitting the format constants out deletes that cost
|
|
11
|
+
* rather than deferring it, which is the same bar #2802 held its own proposals
|
|
12
|
+
* to.
|
|
13
|
+
*
|
|
14
|
+
* `emit.ts` RE-EXPORTS both names, so every existing importer keeps working and
|
|
15
|
+
* the producer/consumer pair still resolves to one definition — the drift this
|
|
16
|
+
* shared constant exists to prevent stays impossible.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Reserved token placed in `BasicBlock.callees` when a statement's call sites
|
|
20
|
+
* were truncated at the per-statement site cap: the recorded callee list is then
|
|
21
|
+
* INCOMPLETE, so over-cap callees are absent. `*` is not a valid identifier
|
|
22
|
+
* leaf, so it cannot collide with a real callee name. The impact bridge treats a
|
|
23
|
+
* slice containing this sentinel as "callees unknown" and keeps reach
|
|
24
|
+
* callgraph-equal (proven), rather than falsely labeling an absent-but-real
|
|
25
|
+
* callee `unproven-bridge`.
|
|
26
|
+
*/
|
|
27
|
+
export const CALLEES_TRUNCATED_SENTINEL = '*';
|
|
28
|
+
/**
|
|
29
|
+
* Inner separator for the `BasicBlock.calleeIds` cell (resolved callee symbol
|
|
30
|
+
* ids). A TAB is used — NOT a space — because resolved ids embed `filePath` and
|
|
31
|
+
* C++ overload shape tags with multi-word primitive types (e.g. `unsigned char`,
|
|
32
|
+
* `long double`), so an id can legitimately contain a space; a space-joined cell
|
|
33
|
+
* then fragments on read and silently drops inter-procedural reach to that
|
|
34
|
+
* callee (#2227 tri-review). A tab cannot appear in a tree-sitter-derived id
|
|
35
|
+
* token (paths/identifiers/type tokens are tab-free) and round-trips intact
|
|
36
|
+
* through `escapeCSVField` (tab is in its preserved set) and the RFC-4180 COPY
|
|
37
|
+
* reader (every cell is quoted). Producer (`calleeIdsOfBlock`) and consumer
|
|
38
|
+
* (`splitCalleeIds`) both resolve to this single constant so they cannot drift.
|
|
39
|
+
* The sibling `callees` (leaf-name) cell stays space-joined — leaf names are
|
|
40
|
+
* bare identifiers and never contain a space.
|
|
41
|
+
*/
|
|
42
|
+
export const CALLEE_ID_SEP = '\t';
|
|
@@ -22,30 +22,15 @@ import type { KnowledgeGraph } from '../../graph/types.js';
|
|
|
22
22
|
import { type ReachingDefsSolver } from './reaching-defs.js';
|
|
23
23
|
import type { BasicBlockData, BindingEntry, FunctionCfg } from './types.js';
|
|
24
24
|
/**
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
25
|
+
* Cell-format constants live in the LEAF module `callee-cell-format.ts` and are
|
|
26
|
+
* re-exported here so every existing importer keeps working. The consumer side
|
|
27
|
+
* (`mcp/local/pdg-impact.ts`) imports them from the leaf directly: importing any
|
|
28
|
+
* binding from THIS module evaluates it, and with it the whole analyze-only CFG
|
|
29
|
+
* closure — 8 modules on every MCP server start to read two strings (#2802
|
|
30
|
+
* review). Producer and consumer still resolve to one definition, so the drift
|
|
31
|
+
* these shared constants exist to prevent stays impossible.
|
|
32
32
|
*/
|
|
33
|
-
export
|
|
34
|
-
/**
|
|
35
|
-
* Inner separator for the `BasicBlock.calleeIds` cell (resolved callee symbol
|
|
36
|
-
* ids). A TAB is used — NOT a space — because resolved ids embed `filePath` and
|
|
37
|
-
* C++ overload shape tags with multi-word primitive types (e.g. `unsigned char`,
|
|
38
|
-
* `long double`), so an id can legitimately contain a space; a space-joined cell
|
|
39
|
-
* then fragments on read and silently drops inter-procedural reach to that
|
|
40
|
-
* callee (#2227 tri-review). A tab cannot appear in a tree-sitter-derived id
|
|
41
|
-
* token (paths/identifiers/type tokens are tab-free) and round-trips intact
|
|
42
|
-
* through `escapeCSVField` (tab is in its preserved set) and the RFC-4180 COPY
|
|
43
|
-
* reader (every cell is quoted). Producer ({@link calleeIdsOfBlock}) and
|
|
44
|
-
* consumer (`splitCalleeIds`) import this single constant so they cannot drift.
|
|
45
|
-
* The sibling `callees` (leaf-name) cell stays space-joined — leaf names are
|
|
46
|
-
* bare identifiers and never contain a space.
|
|
47
|
-
*/
|
|
48
|
-
export declare const CALLEE_ID_SEP = "\t";
|
|
33
|
+
export { CALLEES_TRUNCATED_SENTINEL, CALLEE_ID_SEP } from './callee-cell-format.js';
|
|
49
34
|
/**
|
|
50
35
|
* Default per-function CFG edge cap. A pathological generated function could
|
|
51
36
|
* otherwise emit an unbounded edge set; the cap bounds graph growth and is
|
|
@@ -6,31 +6,17 @@ import { augmentForPostDom } from './synthetic-escape.js';
|
|
|
6
6
|
import { DEFAULT_PDG_MAX_SITES_PER_STATEMENT } from './visitors/call-site-harvest.js';
|
|
7
7
|
import { calleeIdPosKey } from '../scope-resolution/graph-bridge/callee-id-sink.js';
|
|
8
8
|
import { encodeReachingDefReasonPairs } from './reaching-def-reason-codec.js';
|
|
9
|
+
import { CALLEES_TRUNCATED_SENTINEL, CALLEE_ID_SEP } from './callee-cell-format.js';
|
|
9
10
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
11
|
+
* Cell-format constants live in the LEAF module `callee-cell-format.ts` and are
|
|
12
|
+
* re-exported here so every existing importer keeps working. The consumer side
|
|
13
|
+
* (`mcp/local/pdg-impact.ts`) imports them from the leaf directly: importing any
|
|
14
|
+
* binding from THIS module evaluates it, and with it the whole analyze-only CFG
|
|
15
|
+
* closure — 8 modules on every MCP server start to read two strings (#2802
|
|
16
|
+
* review). Producer and consumer still resolve to one definition, so the drift
|
|
17
|
+
* these shared constants exist to prevent stays impossible.
|
|
17
18
|
*/
|
|
18
|
-
export
|
|
19
|
-
/**
|
|
20
|
-
* Inner separator for the `BasicBlock.calleeIds` cell (resolved callee symbol
|
|
21
|
-
* ids). A TAB is used — NOT a space — because resolved ids embed `filePath` and
|
|
22
|
-
* C++ overload shape tags with multi-word primitive types (e.g. `unsigned char`,
|
|
23
|
-
* `long double`), so an id can legitimately contain a space; a space-joined cell
|
|
24
|
-
* then fragments on read and silently drops inter-procedural reach to that
|
|
25
|
-
* callee (#2227 tri-review). A tab cannot appear in a tree-sitter-derived id
|
|
26
|
-
* token (paths/identifiers/type tokens are tab-free) and round-trips intact
|
|
27
|
-
* through `escapeCSVField` (tab is in its preserved set) and the RFC-4180 COPY
|
|
28
|
-
* reader (every cell is quoted). Producer ({@link calleeIdsOfBlock}) and
|
|
29
|
-
* consumer (`splitCalleeIds`) import this single constant so they cannot drift.
|
|
30
|
-
* The sibling `callees` (leaf-name) cell stays space-joined — leaf names are
|
|
31
|
-
* bare identifiers and never contain a space.
|
|
32
|
-
*/
|
|
33
|
-
export const CALLEE_ID_SEP = '\t';
|
|
19
|
+
export { CALLEES_TRUNCATED_SENTINEL, CALLEE_ID_SEP } from './callee-cell-format.js';
|
|
34
20
|
/**
|
|
35
21
|
* Default per-function CFG edge cap. A pathological generated function could
|
|
36
22
|
* otherwise emit an unbounded edge set; the cap bounds graph growth and is
|
|
@@ -2,15 +2,20 @@
|
|
|
2
2
|
import { SupportedLanguages } from '../../../../_shared/index.js';
|
|
3
3
|
export const goClassConfig = {
|
|
4
4
|
language: SupportedLanguages.Go,
|
|
5
|
-
|
|
5
|
+
// `type_spec`, not the enclosing `type_declaration` (#2837): one node per
|
|
6
|
+
// DECLARED TYPE, so a grouped `type ( A struct{…}; B struct{…} )` yields one
|
|
7
|
+
// each instead of one for the whole block. Every Go capture that reaches this
|
|
8
|
+
// extractor is anchored the same way, so the wrapper is never handed over —
|
|
9
|
+
// and accepting it would be worse than rejecting it, because picking one spec
|
|
10
|
+
// out of several with no reference point silently returns the FIRST type's
|
|
11
|
+
// name. A `null` here is loud; the wrong name is not.
|
|
12
|
+
typeDeclarationNodes: ['type_spec'],
|
|
6
13
|
fileScopeNodeTypes: ['package_clause'],
|
|
7
14
|
extractName(node) {
|
|
8
|
-
|
|
9
|
-
return typeSpec?.childForFieldName('name')?.text;
|
|
15
|
+
return node.childForFieldName('name')?.text;
|
|
10
16
|
},
|
|
11
17
|
extractType(node) {
|
|
12
|
-
const
|
|
13
|
-
const typeNode = typeSpec?.childForFieldName('type');
|
|
18
|
+
const typeNode = node.childForFieldName('type');
|
|
14
19
|
if (typeNode?.type === 'struct_type')
|
|
15
20
|
return 'Struct';
|
|
16
21
|
if (typeNode?.type === 'interface_type')
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// gitnexus/src/core/ingestion/class-extractors/configs/jvm.ts
|
|
2
2
|
import { SupportedLanguages } from '../../../../_shared/index.js';
|
|
3
|
+
import { synthesizeJavaTypeIdentity } from '../../utils/ast-helpers.js';
|
|
3
4
|
// ---------------------------------------------------------------------------
|
|
4
5
|
// Java
|
|
5
6
|
// ---------------------------------------------------------------------------
|
|
@@ -10,6 +11,15 @@ export const javaClassConfig = {
|
|
|
10
11
|
'interface_declaration',
|
|
11
12
|
'enum_declaration',
|
|
12
13
|
'record_declaration',
|
|
14
|
+
// Anonymous class bodies (`new Runnable() { ... }`) — the matching
|
|
15
|
+
// JAVA_QUERIES pattern only captures `object_creation_expression`
|
|
16
|
+
// WITH a `class_body`, and `extractName` below returns undefined for
|
|
17
|
+
// any other shape, so plain `new Foo()` constructor calls never
|
|
18
|
+
// produce a Class node (#2550).
|
|
19
|
+
'object_creation_expression',
|
|
20
|
+
// Enum constant bodies (`enum E { A { ... } }`) — javac's other
|
|
21
|
+
// anonymous shape, named E$N by the same authority (#2555).
|
|
22
|
+
'enum_constant',
|
|
13
23
|
],
|
|
14
24
|
fileScopeNodeTypes: ['package_declaration'],
|
|
15
25
|
ancestorScopeNodeTypes: [
|
|
@@ -18,6 +28,25 @@ export const javaClassConfig = {
|
|
|
18
28
|
'enum_declaration',
|
|
19
29
|
'record_declaration',
|
|
20
30
|
],
|
|
31
|
+
extractName(node) {
|
|
32
|
+
return synthesizeJavaTypeIdentity(node)?.name;
|
|
33
|
+
},
|
|
34
|
+
extractType(node) {
|
|
35
|
+
return synthesizeJavaTypeIdentity(node)?.label;
|
|
36
|
+
},
|
|
37
|
+
// An anonymous body whose name CANNOT be synthesized must not become a
|
|
38
|
+
// Class node at all. Without this skip, `extract()`'s
|
|
39
|
+
// `extractTypeNameFromNode` fallback fabricates a name — the CONSTRUCTED
|
|
40
|
+
// type for `new Runnable() { ... }` (phantom `Class:...:Runnable`,
|
|
41
|
+
// empirically caught in review) or the constant's own identifier for an
|
|
42
|
+
// `enum_constant` (`Class:...:A`).
|
|
43
|
+
shouldSkipClassCapture({ definitionNode }) {
|
|
44
|
+
return (definitionNode !== null &&
|
|
45
|
+
definitionNode !== undefined &&
|
|
46
|
+
(definitionNode.type === 'object_creation_expression' ||
|
|
47
|
+
definitionNode.type === 'enum_constant') &&
|
|
48
|
+
synthesizeJavaTypeIdentity(definitionNode) === undefined);
|
|
49
|
+
},
|
|
21
50
|
};
|
|
22
51
|
// ---------------------------------------------------------------------------
|
|
23
52
|
// Kotlin
|