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
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* - propagatesReturnTypesAcrossImports (default true)
|
|
16
16
|
* - fieldFallbackOnMethodLookup (default true — turn OFF for
|
|
17
17
|
* statically-typed languages; the heuristic over-connects)
|
|
18
|
-
* -
|
|
18
|
+
* - elementTypeOf — container element type, by subscript or accessor
|
|
19
19
|
* - collapseMemberCallsByCallerTarget — one edge per caller/target
|
|
20
20
|
* - populateNamespaceSiblings — cross-file implicit visibility
|
|
21
21
|
* - hoistTypeBindingsToModule — enable ONLY when method return
|
|
@@ -113,13 +113,24 @@
|
|
|
113
113
|
* 3. Case 0.5 implicit-`this` chain walk — GATED: fires only for
|
|
114
114
|
* languages that set `resolveThisViaEnclosingClass === true`;
|
|
115
115
|
* it intercepts every bare-`this` call/read/write site ahead of
|
|
116
|
-
* Case 4 and does NOT emit
|
|
117
|
-
*
|
|
118
|
-
*
|
|
116
|
+
* Case 4 and does NOT emit the interface-dispatch fan-out that
|
|
117
|
+
* Cases 0, 3b and 4 all perform (Case 0 gained it in #2829 and
|
|
118
|
+
* Case 3b in #2832, leaving 0.5 the only INSTANCE-receiver case
|
|
119
|
+
* that folds or walks to a receiver type without fanning out.
|
|
120
|
+
* Read that narrowly: Case 2 also walks an MRO and its binding
|
|
121
|
+
* admits `Interface`, but its receiver IS the type name, so the
|
|
122
|
+
* site is static dispatch and a fan-out would be wrong; Cases 3
|
|
123
|
+
* and 5 resolve by direct lookup rather than a fold or MRO walk,
|
|
124
|
+
* and no language is known to reach Case 3 with an Interface —
|
|
125
|
+
* every one that could strips the namespace qualifier first,
|
|
126
|
+
* sending it to Case 4), so enabling the toggle
|
|
127
|
+
* for a language changes that language's `this` dispatch
|
|
128
|
+
* semantics (see the toggle's doc below)
|
|
119
129
|
* 4. Case 1 namespace-receiver
|
|
120
130
|
* 5. Case 2 class-name receiver
|
|
121
131
|
* 6. Case 3 dotted typeBinding for namespace prefix
|
|
122
|
-
* 7. Case 3b chain-typebinding (compound resolver
|
|
132
|
+
* 7. Case 3b chain-typebinding (compound resolver + interface-dispatch
|
|
133
|
+
* fan-out on an Interface fold, #2832)
|
|
123
134
|
* 8. Case 4 simple typeBinding (MRO walk + findOwnedMember)
|
|
124
135
|
* Reordering or merging cases changes resolution semantics. The
|
|
125
136
|
* numbering is part of the contract — keep the comments.
|
|
@@ -267,13 +278,16 @@
|
|
|
267
278
|
* Plan that introduced most of these invariants:
|
|
268
279
|
* `docs/plans/2026-04-20-001-refactor-emit-pipeline-generalization-plan.md`.
|
|
269
280
|
*/
|
|
270
|
-
import type {
|
|
281
|
+
import type { DecorationStripper } from '../scope/walkers.js';
|
|
282
|
+
import type { BindingRef, Callsite, ConstraintContext, ParsedFile, ParsedImport, ReferenceSite, ScopeId, SupportedLanguages, SymbolDefinition } from '../../../../_shared/index.js';
|
|
271
283
|
import type { KnowledgeGraph } from '../../../graph/types.js';
|
|
272
284
|
import type { GraphNodeLookup } from '../graph-bridge/node-lookup.js';
|
|
273
285
|
import { LanguageProvider } from '../../language-provider.js';
|
|
274
286
|
import { ScopeResolutionIndexes } from '../../model/scope-resolution-indexes.js';
|
|
275
287
|
import type { SemanticModel } from '../../model/semantic-model.js';
|
|
276
288
|
import type { ConversionRankFn } from '../passes/overload-narrowing.js';
|
|
289
|
+
import type { HeritageTypeArgumentSink } from '../utils/generic-instantiation.js';
|
|
290
|
+
import type { WorkspaceResolutionIndex } from '../workspace-index.js';
|
|
277
291
|
/** A LinearizeStrategy receives the full ancestor map so C3-style
|
|
278
292
|
* algorithms (which need to merge each parent's MRO) can implement
|
|
279
293
|
* themselves. Python's depth-first first-seen only consumes
|
|
@@ -288,9 +302,59 @@ export type ReceiverMemberResolution = {
|
|
|
288
302
|
readonly kind: 'ambiguous';
|
|
289
303
|
readonly candidateIds: readonly string[];
|
|
290
304
|
};
|
|
305
|
+
export interface ImportResolutionContext {
|
|
306
|
+
readonly parsedFiles: readonly ParsedFile[];
|
|
307
|
+
readonly parsedImport?: ParsedImport;
|
|
308
|
+
}
|
|
291
309
|
/** Re-exported for ScopeResolver consumers — same shape as
|
|
292
310
|
* `RegistryProviders.constraintCompatibility`'s third parameter. */
|
|
293
311
|
export type { ConstraintContext } from '../../../../_shared/index.js';
|
|
312
|
+
/** How a container's element was reached in the source. */
|
|
313
|
+
export type ElementAccessRoute = {
|
|
314
|
+
readonly kind: 'index';
|
|
315
|
+
} | {
|
|
316
|
+
readonly kind: 'accessor';
|
|
317
|
+
readonly name: string;
|
|
318
|
+
};
|
|
319
|
+
/** One structurally-detected implementor plus the receiver form in which it
|
|
320
|
+
* satisfies the interface (see `detectInterfaceImplementations`). */
|
|
321
|
+
export interface StructuralImplementor {
|
|
322
|
+
readonly structDefId: string;
|
|
323
|
+
readonly receiverForm: 'value' | 'pointer';
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* One interface whose satisfaction check could not be COMPLETED for at least
|
|
327
|
+
* one candidate type — not one that was checked and came out negative.
|
|
328
|
+
*
|
|
329
|
+
* The distinction is the whole point (#2873): a detector that reports only
|
|
330
|
+
* positives makes "nobody implements this" and "we could not tell whether
|
|
331
|
+
* anybody implements this" byte-identical, and the second one silently becomes
|
|
332
|
+
* a confident zero in `impact`. Consumers must not turn these into edges; they
|
|
333
|
+
* exist so a query can say it is answering with a lower bound.
|
|
334
|
+
*/
|
|
335
|
+
export interface UndecidedSatisfaction {
|
|
336
|
+
readonly interfaceDefId: string;
|
|
337
|
+
readonly interfaceName: string;
|
|
338
|
+
readonly filePath: string;
|
|
339
|
+
/** How many candidate types went unjudged for this interface. */
|
|
340
|
+
readonly undecidedCandidates: number;
|
|
341
|
+
/**
|
|
342
|
+
* The candidate types themselves, by name.
|
|
343
|
+
*
|
|
344
|
+
* Both sides are recorded because a query arrives from either one. Asking
|
|
345
|
+
* `impact` about the IMPLEMENTATION — the case #2873 reports — never touches
|
|
346
|
+
* the interface node at all: the walk starts at a method whose owner has no
|
|
347
|
+
* heritage edge precisely because the check was undecided, so an
|
|
348
|
+
* interface-keyed record alone would leave that query unhedged.
|
|
349
|
+
*/
|
|
350
|
+
readonly candidateNames: readonly string[];
|
|
351
|
+
}
|
|
352
|
+
/** What `detectInterfaceImplementations` answers: the positives, plus the
|
|
353
|
+
* questions it could not answer. */
|
|
354
|
+
export interface StructuralImplementationResult {
|
|
355
|
+
readonly implementations: Map<string, readonly StructuralImplementor[]>;
|
|
356
|
+
readonly undecided: readonly UndecidedSatisfaction[];
|
|
357
|
+
}
|
|
294
358
|
export interface ScopeResolver {
|
|
295
359
|
/** Identity for telemetry + per-language flag check. */
|
|
296
360
|
readonly language: SupportedLanguages;
|
|
@@ -320,8 +384,19 @@ export interface ScopeResolver {
|
|
|
320
384
|
* orchestrator). TypeScript uses this to thread `tsconfig.json` path
|
|
321
385
|
* aliases through to the standard resolver. Languages that don't
|
|
322
386
|
* need any extra config ignore the parameter.
|
|
387
|
+
*
|
|
388
|
+
* `context.parsedFiles` is the complete, read-only language workspace. It is
|
|
389
|
+
* optional so resolvers that only need paths retain their existing shape.
|
|
390
|
+
* `context.parsedImport` is the exact import being finalized. PHP uses both
|
|
391
|
+
* when a PSR-4 import names a function instead of a file.
|
|
323
392
|
*/
|
|
324
|
-
resolveImportTarget(targetRaw: string, fromFile: string, allFilePaths: ReadonlySet<string>, resolutionConfig?: unknown): string | readonly string[] | null;
|
|
393
|
+
resolveImportTarget(targetRaw: string, fromFile: string, allFilePaths: ReadonlySet<string>, resolutionConfig?: unknown, context?: ImportResolutionContext): string | readonly string[] | null;
|
|
394
|
+
/**
|
|
395
|
+
* Optionally reclassify an import as a namespace handle after target
|
|
396
|
+
* resolution proves the imported name is itself a module. Returning false
|
|
397
|
+
* retains ordinary named-binding behavior.
|
|
398
|
+
*/
|
|
399
|
+
readonly isNamespaceImport?: (parsedImport: ParsedImport, targetFile: string, fromFile: string) => boolean;
|
|
325
400
|
/**
|
|
326
401
|
* Enumerate names visible through a wildcard import after the target
|
|
327
402
|
* module scope has been linked. Languages that do not support
|
|
@@ -364,6 +439,21 @@ export interface ScopeResolver {
|
|
|
364
439
|
* `(def, callsite)` and need an adapter at the wiring site.
|
|
365
440
|
*/
|
|
366
441
|
arityCompatibility(callsite: Callsite, def: SymbolDefinition): ArityVerdict;
|
|
442
|
+
/**
|
|
443
|
+
* Add provider-specific callable value targets beyond the shared
|
|
444
|
+
* Function/Method/Constructor set. This is intentionally a predicate hook:
|
|
445
|
+
* shared flow analysis never branches on a language name or syntax kind.
|
|
446
|
+
*/
|
|
447
|
+
readonly isCallableValueTarget?: (def: SymbolDefinition) => boolean;
|
|
448
|
+
/**
|
|
449
|
+
* Restrict this provider's scope-resolution graph mutations to callable-value
|
|
450
|
+
* CALLS edges. Providers with an existing structural edge pipeline can use
|
|
451
|
+
* the shared scope model and callable solver without duplicating their
|
|
452
|
+
* established CALLS, IMPORTS, heritage, or property-dispatch edges.
|
|
453
|
+
*
|
|
454
|
+
* Default: `all`.
|
|
455
|
+
*/
|
|
456
|
+
readonly scopeResolutionEdgeMode?: 'all' | 'callable-flow-only';
|
|
367
457
|
/**
|
|
368
458
|
* Per-language constraint compatibility between a callsite and a
|
|
369
459
|
* candidate `def` that carries `templateConstraints` metadata.
|
|
@@ -432,9 +522,19 @@ export interface ScopeResolver {
|
|
|
432
522
|
* shape. Must be idempotent (the orchestrator may call it more than once
|
|
433
523
|
* during re-resolution).
|
|
434
524
|
*
|
|
525
|
+
* `recordTypeArguments` is the same sink `preEmitInheritanceEdges` writes to:
|
|
526
|
+
* the generic INSTANTIATION a heritage clause was written with, so
|
|
527
|
+
* interface-dispatch fan-out can refuse an implementor of an incompatible one
|
|
528
|
+
* (#2912). An implementation that emits an edge for a generic base
|
|
529
|
+
* (`impl Validator<String> for V`, `class V implements Validator<String>`)
|
|
530
|
+
* should call it with the same (source, target) graph ids it just used;
|
|
531
|
+
* anything not recorded reads as "unknown" and keeps the pre-#2912 fan-out.
|
|
532
|
+
* Ignoring it entirely is correct for a language whose heritage carries no
|
|
533
|
+
* type arguments (Ruby `include`).
|
|
534
|
+
*
|
|
435
535
|
* Default: undefined (no extra heritage edges needed).
|
|
436
536
|
*/
|
|
437
|
-
readonly emitHeritageEdges?: (graph: KnowledgeGraph, parsedFiles: readonly ParsedFile[], nodeLookup: GraphNodeLookup, scopes?: ScopeResolutionIndexes) => void;
|
|
537
|
+
readonly emitHeritageEdges?: (graph: KnowledgeGraph, parsedFiles: readonly ParsedFile[], nodeLookup: GraphNodeLookup, scopes?: ScopeResolutionIndexes, recordTypeArguments?: HeritageTypeArgumentSink) => void;
|
|
438
538
|
/**
|
|
439
539
|
* Optional hook to emit IMPORTS edges that no syntactic import
|
|
440
540
|
* statement produces. Some languages grant files implicit visibility
|
|
@@ -555,6 +655,21 @@ export interface ScopeResolver {
|
|
|
555
655
|
* and any text the simple `isSuperReceiver` hook also rejects.
|
|
556
656
|
*/
|
|
557
657
|
readonly isSuperReceiverInContext?: (receiverText: string, callerScope: ScopeId, scopes: ScopeResolutionIndexes) => boolean;
|
|
658
|
+
/**
|
|
659
|
+
* Source-text retention policy for post-extraction hooks that receive a
|
|
660
|
+
* `fileContents` context (`populateWorkspaceOwners`,
|
|
661
|
+
* `populateNamespaceSiblings`, `populateRangeBindings`, and
|
|
662
|
+
* `emitPostResolutionEdges`).
|
|
663
|
+
*
|
|
664
|
+
* The default, `all-files`, preserves the existing contract: source text is
|
|
665
|
+
* loaded for every file before any of those hooks run. A resolver may choose
|
|
666
|
+
* `uncached-files` only when all of its hooks derive cached-file facts from
|
|
667
|
+
* `ParsedFile` / capture side-channels and tolerate an empty content string
|
|
668
|
+
* for pre-extracted files. This keeps the durable ParsedFile path at
|
|
669
|
+
* O(uncached source) memory without putting language checks in the shared
|
|
670
|
+
* pipeline.
|
|
671
|
+
*/
|
|
672
|
+
readonly postExtractSourceTextPolicy?: 'all-files' | 'uncached-files';
|
|
558
673
|
/**
|
|
559
674
|
* Whether the orchestrator should run `propagateImportedReturnTypes`
|
|
560
675
|
* after finalize. Default `true`. TypeScript with explicit type
|
|
@@ -571,19 +686,56 @@ export interface ScopeResolver {
|
|
|
571
686
|
*/
|
|
572
687
|
readonly fieldFallbackOnMethodLookup?: boolean;
|
|
573
688
|
/**
|
|
574
|
-
*
|
|
575
|
-
*
|
|
576
|
-
*
|
|
577
|
-
*
|
|
578
|
-
*
|
|
579
|
-
*
|
|
689
|
+
* Element type of a container, reached either by a subscript (`repos[0]`) or
|
|
690
|
+
* by a property-style collection view (`dict.Values`). Returns the element
|
|
691
|
+
* type's simple name, or `undefined` when the container does not unwrap by
|
|
692
|
+
* that route — in which case the caller resumes its normal walk.
|
|
693
|
+
*
|
|
694
|
+
* ONE hook for both routes, deliberately. They were previously two
|
|
695
|
+
* (`unwrapCollectionAccessor` for the property route, `unwrapCollectionElement`
|
|
696
|
+
* for the subscript route), which meant a language implementing one silently
|
|
697
|
+
* got nothing for the other: C# parsed `Dictionary<K,V>` for `.Values` but
|
|
698
|
+
* returned nothing for `list[0]`, and TypeScript did the reverse. Two entries
|
|
699
|
+
* answering one question, each accreting an implementation per language.
|
|
580
700
|
*
|
|
581
|
-
*
|
|
582
|
-
*
|
|
583
|
-
*
|
|
584
|
-
*
|
|
701
|
+
* `via` carries the route so a provider can distinguish them where it matters
|
|
702
|
+
* (a `Dictionary` yields its VALUE type by subscript but either type by
|
|
703
|
+
* accessor name); a provider that does not care can ignore it.
|
|
704
|
+
*
|
|
705
|
+
* Consulted ONLY where the source actually performed the access. It is NOT a
|
|
706
|
+
* general type-name normalizer: unwrapping a container at a bare class lookup
|
|
707
|
+
* would let `repos.find(x)` fold to `Repo.find`, because a container's member
|
|
708
|
+
* set is not its element's. For the same reason it is deliberately separate
|
|
709
|
+
* from `stripTypePreservingDecoration`: a pointer or a nullable leaves the
|
|
710
|
+
* member set unchanged and is safe to strip at the lookup; a container is not.
|
|
711
|
+
*
|
|
712
|
+
* ## The `index` route is REQUIRED, and `undefined` means "not a container"
|
|
713
|
+
*
|
|
714
|
+
* A language that leaves the `index` route unanswered gets NO index folding —
|
|
715
|
+
* the structural fold declines the step rather than passing the position
|
|
716
|
+
* through. That is not a default worth softening. `undefined` used to mean
|
|
717
|
+
* "fall back to identity", on the theory that a capture layer which already
|
|
718
|
+
* reduced the container (Go's `normalizeGoTypeName`, C#/TypeScript's
|
|
719
|
+
* `stripGeneric`) leaves nothing to unwrap. The theory holds for a container;
|
|
720
|
+
* it is false for an ordinary class the source happened to subscript, and
|
|
721
|
+
* `rawName` cannot tell those apart — `repos: User[]` and `grid: Grid` both
|
|
722
|
+
* arrive as a bare resolvable class name. Identity there typed `grid[0].run()`
|
|
723
|
+
* as `Grid.run` and `t[0].Render()` as `Table.Render`: a wrong owner, which
|
|
724
|
+
* this pipeline ranks strictly below a missing edge.
|
|
725
|
+
*
|
|
726
|
+
* The hook is therefore handed `TypeRef.declaredSpelling` — the annotation AS
|
|
727
|
+
* WRITTEN, retained by the scope extractor precisely because capture-time
|
|
728
|
+
* normalization destroys it — falling back to `rawName` only when nothing was
|
|
729
|
+
* normalized away. So a provider sees `User[]`, `List[User]`, `[]*User` or
|
|
730
|
+
* `Dictionary<string, User>`, never the post-reduction `User`, and answering
|
|
731
|
+
* `undefined` for a spelling it does not recognize as a container is an
|
|
732
|
+
* ANSWER, not an absence.
|
|
733
|
+
*
|
|
734
|
+
* Implementations may return a still-DECORATED element name (Go's `[]*User`
|
|
735
|
+
* yields `*User`): the index step looks the element up through
|
|
736
|
+
* `stripTypePreservingDecoration`, so the pointer resolves.
|
|
585
737
|
*/
|
|
586
|
-
readonly
|
|
738
|
+
readonly elementTypeOf?: (containerType: string, via: ElementAccessRoute) => string | undefined;
|
|
587
739
|
/**
|
|
588
740
|
* Collapse member-call CALLS edges by `(caller, target)` rather
|
|
589
741
|
* than per-site. Default `false` — scope-resolution's contract
|
|
@@ -602,6 +754,23 @@ export interface ScopeResolver {
|
|
|
602
754
|
* but is too loose as a default for strict module systems.
|
|
603
755
|
*/
|
|
604
756
|
readonly allowGlobalFreeCallFallback?: boolean;
|
|
757
|
+
/**
|
|
758
|
+
* In this language every `Method` belongs to a class instance, so a
|
|
759
|
+
* FREE (receiver-less) call may resolve to a `Method` only when the
|
|
760
|
+
* caller's enclosing class chain — the class itself plus its MRO —
|
|
761
|
+
* contains the method's owner (#2550). Suppresses the finalize-bucket
|
|
762
|
+
* leak where an unqualified call matched any same-file method by bare
|
|
763
|
+
* name (`materializeBindings` flattens every declaration onto module
|
|
764
|
+
* scope). Java opts in; C# is the intended next adopter.
|
|
765
|
+
*
|
|
766
|
+
* NOT implemented via `LanguageProvider.builtInNames`: that mechanism
|
|
767
|
+
* has unrelated consumers (`parse-worker`'s call-site extraction gate
|
|
768
|
+
* suppresses member calls too; `type-env`'s return-type lookup) which
|
|
769
|
+
* assume a flagged name is never a real repository declaration —
|
|
770
|
+
* false for common method names like `run`/`get`/`compare` (verified
|
|
771
|
+
* regression).
|
|
772
|
+
*/
|
|
773
|
+
readonly freeCallsRequireInstanceOwnership?: boolean;
|
|
605
774
|
/**
|
|
606
775
|
* When true, a constructor-form call `Type(...)` links to the Class def
|
|
607
776
|
* itself rather than its explicit Constructor def. Default
|
|
@@ -611,6 +780,57 @@ export interface ScopeResolver {
|
|
|
611
780
|
* Swift — opt in.
|
|
612
781
|
*/
|
|
613
782
|
readonly constructorCallTargetsClass?: boolean;
|
|
783
|
+
/**
|
|
784
|
+
* How this language spells a construction expression, so the compound
|
|
785
|
+
* receiver resolver can type an INLINE constructor receiver — the
|
|
786
|
+
* `Service(db).do_work()` shape, where the receiver is the constructed
|
|
787
|
+
* value itself rather than a binding that holds it (#2708).
|
|
788
|
+
*
|
|
789
|
+
* The rule is the same in every language ("constructing a class yields
|
|
790
|
+
* an instance of that class"); only the surface syntax differs, so the
|
|
791
|
+
* syntax is declared here and the rule lives once in
|
|
792
|
+
* `resolveCompoundReceiverClass`:
|
|
793
|
+
*
|
|
794
|
+
* - `bare: true` — `Service(db).m()` (Python)
|
|
795
|
+
* - `keyword: 'new'` — `new Service(db).m()` (JS/TS, C#)
|
|
796
|
+
* - `selector: 'new'` — `Service.new.m()` (Ruby)
|
|
797
|
+
*
|
|
798
|
+
* Java is deliberately NOT wired even though it spells construction with
|
|
799
|
+
* `new`: its capture layer already rewrites an `object_creation_expression`
|
|
800
|
+
* receiver to the constructed type's simple name (#2564), so the raw
|
|
801
|
+
* `new Svc()` text never reaches this resolver and the declaration would be
|
|
802
|
+
* unreachable. Measured both ways — Java resolves the shape identically with
|
|
803
|
+
* and without it.
|
|
804
|
+
*
|
|
805
|
+
* Opting in is per-language ON PURPOSE rather than universal, for two
|
|
806
|
+
* reasons. Correctness: `bare` would mistype `stat(&st).field` in C,
|
|
807
|
+
* where a struct and a function may share a name and the free call is
|
|
808
|
+
* NOT a construction. Evidence: PHP, Swift, Dart and Kotlin already
|
|
809
|
+
* resolve this shape through their own capture-side paths (verified
|
|
810
|
+
* per language — the receiver typing here changed nothing for them),
|
|
811
|
+
* so they stay unwired rather than carrying a redundant declaration.
|
|
812
|
+
*
|
|
813
|
+
* Only affects receiver TYPING. Which node a construction call links
|
|
814
|
+
* to is a separate question, owned by `constructorCallTargetsClass`.
|
|
815
|
+
* Path-syntax constructors (Rust `Foo::new(x)`) are not covered — they
|
|
816
|
+
* are not member calls and never reach this resolver.
|
|
817
|
+
*/
|
|
818
|
+
readonly constructionSyntax?: {
|
|
819
|
+
/** A free call naming a class constructs it: `Service(db)`. */
|
|
820
|
+
readonly bare?: boolean;
|
|
821
|
+
/** Prefix keyword form: `new Service(db)`. */
|
|
822
|
+
readonly keyword?: string;
|
|
823
|
+
/** Member-selector form on the class itself: `Service.new(db)`.
|
|
824
|
+
* Applies only when the receiver names the CLASS — `factory.new` is an
|
|
825
|
+
* ordinary call to a member named `new` on an instance and keeps normal
|
|
826
|
+
* member resolution. KNOWN LIMITATION: a class that OVERRIDES the
|
|
827
|
+
* selector at class level (Ruby `def self.new` returning some other
|
|
828
|
+
* type) is still read as construction, because the scope model records
|
|
829
|
+
* no staticness for a member, so `def new` and `def self.new` are
|
|
830
|
+
* indistinguishable here. Modelling that needs per-member staticness
|
|
831
|
+
* from the language provider first. */
|
|
832
|
+
readonly selector?: string;
|
|
833
|
+
};
|
|
614
834
|
/**
|
|
615
835
|
* Optional per-slot conversion-rank function for overload resolution.
|
|
616
836
|
* When provided, `narrowOverloadCandidates` uses ranked scoring as a
|
|
@@ -644,6 +864,19 @@ export interface ScopeResolver {
|
|
|
644
864
|
* Languages without file-local linkage semantics leave this undefined.
|
|
645
865
|
*/
|
|
646
866
|
readonly isFileLocalDef?: (def: SymbolDefinition) => boolean;
|
|
867
|
+
/**
|
|
868
|
+
* Optional precise linkage predicate used when callable-value flow joins a
|
|
869
|
+
* declaration graph node (for example a C/C++ prototype in a caller file)
|
|
870
|
+
* to its out-of-file definition. Unlike `isFileLocalDef`, this hook MUST
|
|
871
|
+
* answer only language-level internal/file-local linkage. It must not fold
|
|
872
|
+
* in broader unqualified-name visibility rules such as namespace or member
|
|
873
|
+
* lookup: an explicit declaration already establishes caller visibility.
|
|
874
|
+
*
|
|
875
|
+
* C and C++ provide this hook for `static` free functions. Languages whose
|
|
876
|
+
* declaration/definition identity is already represented by imports or one
|
|
877
|
+
* graph node leave it undefined, disabling cross-file prototype joining.
|
|
878
|
+
*/
|
|
879
|
+
readonly hasFileLocalCallableLinkage?: (def: SymbolDefinition) => boolean;
|
|
647
880
|
/**
|
|
648
881
|
* Optional predicate to identify members for which dispatch through
|
|
649
882
|
* an instance receiver is **invalid at the language level** — i.e.
|
|
@@ -681,6 +914,24 @@ export interface ScopeResolver {
|
|
|
681
914
|
* receiver class is a dispatch candidate).
|
|
682
915
|
*/
|
|
683
916
|
readonly isStaticOnly?: (def: SymbolDefinition) => boolean;
|
|
917
|
+
/**
|
|
918
|
+
* Optional canonicalizer for a written GENERIC TYPE ARGUMENT, so two
|
|
919
|
+
* spellings of one type compare equal during interface-dispatch
|
|
920
|
+
* instantiation matching (#2912).
|
|
921
|
+
*
|
|
922
|
+
* The case it exists for is a language with predefined ALIASES: C# `string`
|
|
923
|
+
* and `String` are the same type, so `IValidator<string>` must still fan out
|
|
924
|
+
* to `class V : IValidator<String>`. Without the hook the two spellings look
|
|
925
|
+
* like two instantiations and the implementor is pruned — a missing edge,
|
|
926
|
+
* which is the failure direction #2912 is most concerned to avoid.
|
|
927
|
+
*
|
|
928
|
+
* Called ONLY on the two sides of one argument comparison, never on a name
|
|
929
|
+
* used for lookup, so it may map to whatever canonical form the language
|
|
930
|
+
* prefers (`string` → `String`, or the reverse) as long as it is consistent.
|
|
931
|
+
* Languages whose types have one spelling each leave it undefined and the
|
|
932
|
+
* comparison stays exact.
|
|
933
|
+
*/
|
|
934
|
+
readonly normalizeTypeArgument?: (name: string) => string;
|
|
684
935
|
/**
|
|
685
936
|
* Optional predicate to gate free-call fallback emission by caller-side
|
|
686
937
|
* visibility. When provided, `pickUniqueGlobalCallable` rejects candidates
|
|
@@ -734,6 +985,39 @@ export interface ScopeResolver {
|
|
|
734
985
|
readonly startCol: number;
|
|
735
986
|
};
|
|
736
987
|
}, callerParsed: ParsedFile, scopes: ScopeResolutionIndexes, parsedFiles: readonly ParsedFile[]) => readonly SymbolDefinition[] | undefined;
|
|
988
|
+
/**
|
|
989
|
+
* Optional resolver for a module-qualified FREE call — a call written with
|
|
990
|
+
* an explicit path but no value receiver (Rust `tools::dispatch(...)`, where
|
|
991
|
+
* `tools` names a module, not a variable or a type).
|
|
992
|
+
*
|
|
993
|
+
* These sites are captured as free calls (`callForm === 'free'`) with the
|
|
994
|
+
* written path preserved in `site.rawQualifiedName`. Without this hook the
|
|
995
|
+
* qualifier is inert and the scope-chain walk resolves the bare tail name —
|
|
996
|
+
* which silently binds to a same-named definition in the CALLER's own file
|
|
997
|
+
* when one exists, producing a self-loop and dropping the real cross-module
|
|
998
|
+
* edge (#2730: `fn dispatch` in `sched.rs` calling `tools::dispatch`
|
|
999
|
+
* resolved to itself, so `impact` reported the central dispatcher as
|
|
1000
|
+
* risk LOW with 0 affected processes).
|
|
1001
|
+
*
|
|
1002
|
+
* `emitFreeCallFallback` invokes this BEFORE the implicit-`this` and
|
|
1003
|
+
* scope-chain lookups, so an explicit path outranks a lexical shadow.
|
|
1004
|
+
* Returning `undefined` (unqualified call, unknown module, or no such
|
|
1005
|
+
* member in the named module) falls through to the unchanged chain — the
|
|
1006
|
+
* hook is strictly additive and never removes an edge the prior tiers
|
|
1007
|
+
* would have produced.
|
|
1008
|
+
*
|
|
1009
|
+
* Languages whose qualified calls carry a value/type receiver (`x.foo()`,
|
|
1010
|
+
* `Type::foo()`) are served by the receiver-bound-calls pass and leave
|
|
1011
|
+
* this undefined.
|
|
1012
|
+
*/
|
|
1013
|
+
readonly resolveQualifiedFreeCall?: (site: {
|
|
1014
|
+
readonly name: string;
|
|
1015
|
+
readonly rawQualifiedName?: string;
|
|
1016
|
+
/** Needed to locate the calling MODULE, not just the calling file — a
|
|
1017
|
+
* relative anchor (`super::`) is resolved against the module the call
|
|
1018
|
+
* sits in, which may be an inline `mod` block inside that file. */
|
|
1019
|
+
readonly inScope: ScopeId;
|
|
1020
|
+
}, callerParsed: ParsedFile, scopes: ScopeResolutionIndexes, workspaceIndex: WorkspaceResolutionIndex, allFilePaths: ReadonlySet<string>) => SymbolDefinition | undefined;
|
|
737
1021
|
/**
|
|
738
1022
|
* Optional resolver for qualified-receiver member calls where the
|
|
739
1023
|
* receiver is a namespace (not a class) and ordinary scope-chain /
|
|
@@ -752,6 +1036,40 @@ export interface ScopeResolver {
|
|
|
752
1036
|
* `undefined` to fall through to the remaining cases.
|
|
753
1037
|
*/
|
|
754
1038
|
readonly resolveQualifiedReceiverMember?: (receiverName: string, memberName: string, callerScope: ScopeId, scopes: ScopeResolutionIndexes, parsedFiles: readonly ParsedFile[], callsite?: Callsite) => SymbolDefinition | 'ambiguous' | undefined;
|
|
1039
|
+
/**
|
|
1040
|
+
* Every receiver spelling under which a namespace import's target is
|
|
1041
|
+
* reachable, and the file each spelling names (#2826). Returning
|
|
1042
|
+
* `undefined` keeps the shared default: the local binding name alone,
|
|
1043
|
+
* mapped to the edge's own target file.
|
|
1044
|
+
*
|
|
1045
|
+
* Python needs this because one `import a.b.c` statement binds THREE
|
|
1046
|
+
* spellings at once — `a`, `a.b` and `a.b.c` — each naming a DIFFERENT
|
|
1047
|
+
* file (`a/__init__.py`, `a/b/__init__.py`, `a/b/c.py`), while
|
|
1048
|
+
* `ImportEdge` carries only the leaf. The default keyed `a` (its
|
|
1049
|
+
* `localName`) to the LEAF, so `a.helper()` resolved into `a/b/c.py`
|
|
1050
|
+
* whenever that module happened to export `helper` — a wrong edge — and
|
|
1051
|
+
* `a.b.mid()` resolved to nothing at all.
|
|
1052
|
+
*
|
|
1053
|
+
* Shared code cannot derive this. Swift's `import Foo.Bar` produces an
|
|
1054
|
+
* edge shape identical to Python's (`localName: 'Foo'`,
|
|
1055
|
+
* `targetExportedName: 'Foo.Bar'`), yet there the FIRST segment is the
|
|
1056
|
+
* resolved target and `Foo.Bar` names a nested TYPE; keying it would hand
|
|
1057
|
+
* `resolveConstructionExpressionClass` an authoritative namespace — that
|
|
1058
|
+
* branch deliberately does not fall through on a miss — and break
|
|
1059
|
+
* `Foo.Bar(x)` construction that resolves correctly today. And the
|
|
1060
|
+
* `__init__.py` convention that turns a dotted prefix into a file is
|
|
1061
|
+
* Python's alone.
|
|
1062
|
+
*
|
|
1063
|
+
* `moduleFileExists` reports whether a path is a module the workspace
|
|
1064
|
+
* actually parsed, so a provider can propose a prefix file and have it
|
|
1065
|
+
* dropped when absent (a PEP-420 namespace package has no `__init__.py`)
|
|
1066
|
+
* rather than minting a key to a file that is not there.
|
|
1067
|
+
*/
|
|
1068
|
+
readonly namespaceReceiverPaths?: (edge: {
|
|
1069
|
+
readonly localName: string;
|
|
1070
|
+
readonly importPath: string;
|
|
1071
|
+
readonly targetFile: string;
|
|
1072
|
+
}, moduleFileExists: (filePath: string) => boolean) => readonly (readonly [spelling: string, targetFile: string])[] | undefined;
|
|
755
1073
|
/**
|
|
756
1074
|
* Optional language-specific member-lattice lookup. Runs for a resolved
|
|
757
1075
|
* simple receiver type before the generic flattened-MRO walk. Languages
|
|
@@ -818,6 +1136,38 @@ export interface ScopeResolver {
|
|
|
818
1136
|
* level bindings.
|
|
819
1137
|
*/
|
|
820
1138
|
readonly hoistTypeBindingsToModule?: boolean;
|
|
1139
|
+
/**
|
|
1140
|
+
* Strip ONE layer of type-preserving decoration off a declared type name,
|
|
1141
|
+
* or return `undefined` when there is nothing left to strip.
|
|
1142
|
+
*
|
|
1143
|
+
* Exists because a declared type is stored as written. Go's
|
|
1144
|
+
* `synthesizeGoReceiverBinding` keeps `typeNode.text`, so a pointer-receiver
|
|
1145
|
+
* method binds its receiver to the literal `*Host` — which matches no class
|
|
1146
|
+
* binding, so receiver-chain resolution declines at the base and every
|
|
1147
|
+
* `h.field.method()` in the dominant Go idiom loses its `CALLS` edge (#2766).
|
|
1148
|
+
* The stored binding is deliberately left decorated (`method-owners.ts`
|
|
1149
|
+
* consumes `*T` vs `T` to model Go's value and pointer method sets), so the
|
|
1150
|
+
* normalization belongs at LOOKUP, never as a rewrite of the binding.
|
|
1151
|
+
*
|
|
1152
|
+
* TYPE-PRESERVING ONLY. Pointer, reference, `const`, nullable, borrow,
|
|
1153
|
+
* deref-transparent smart pointer and sigil all leave the member set
|
|
1154
|
+
* unchanged. A CONTAINER — array, slice, map, `Option` — does not: stripping
|
|
1155
|
+
* one here would type `repos: Repo[]` as `Repo` and let `repos.find(x)` fold
|
|
1156
|
+
* to `Repo.find`, a confident wrong edge the ambiguity gate cannot catch
|
|
1157
|
+
* because `Repo` binds uniquely. Containers are unwrapped only by an index
|
|
1158
|
+
* step that consumed a subscript.
|
|
1159
|
+
*
|
|
1160
|
+
* Consulted ONLY after every undecorated lookup has failed, and only by
|
|
1161
|
+
* receiver-chain base and step resolution — the shared class lookup keeps
|
|
1162
|
+
* exact-name behaviour for its other ~two dozen callers, several of which are
|
|
1163
|
+
* shaped `findClassBindingInScope(...) ?? otherResolver(...)` and would have
|
|
1164
|
+
* their fallback suppressed by a global widening.
|
|
1165
|
+
*
|
|
1166
|
+
* Leave undefined for languages whose declared types carry no type-preserving
|
|
1167
|
+
* decoration. Measured: only Go needs it for a receiver base; Rust, C#, Swift,
|
|
1168
|
+
* TypeScript and C++ need it for field types.
|
|
1169
|
+
*/
|
|
1170
|
+
readonly stripTypePreservingDecoration?: DecorationStripper;
|
|
821
1171
|
/**
|
|
822
1172
|
* Whether the compound-receiver resolver should strip C-style cast
|
|
823
1173
|
* expressions from receiver-position text before resolving it —
|
|
@@ -844,7 +1194,7 @@ export interface ScopeResolver {
|
|
|
844
1194
|
*
|
|
845
1195
|
* A second opting language must extend the classifier grammar or
|
|
846
1196
|
* convert this toggle into a per-language classifier hook (the
|
|
847
|
-
* `
|
|
1197
|
+
* `elementTypeOf` pattern) — do not flip this flag for
|
|
848
1198
|
* another language as-is.
|
|
849
1199
|
*
|
|
850
1200
|
* Known non-goal: the compound-receiver options built from this
|
|
@@ -860,10 +1210,19 @@ export interface ScopeResolver {
|
|
|
860
1210
|
* Languages like Go use structural typing — a struct satisfies an
|
|
861
1211
|
* interface if its method set is a superset, without an explicit
|
|
862
1212
|
* `implements` keyword. Runs after finalize, before resolution passes.
|
|
863
|
-
* Returns: Map<interface_DefId,
|
|
1213
|
+
* Returns: Map<interface_DefId, StructuralImplementor[]>, where each entry
|
|
1214
|
+
* names the implementing type AND the form in which it implements.
|
|
1215
|
+
*
|
|
1216
|
+
* `receiverForm` is not a confidence signal — it is the language's own
|
|
1217
|
+
* distinction. In Go the method set of `T` and of `*T` differ (a
|
|
1218
|
+
* pointer-receiver method belongs only to `*T`), so `receiverForm: 'pointer'`
|
|
1219
|
+
* means the VALUE type does not implement the interface and only `*T` does.
|
|
1220
|
+
* `'value'` means both do. Consumers that only want blast radius can ignore
|
|
1221
|
+
* it; consumers reasoning about assignability must not.
|
|
1222
|
+
*
|
|
864
1223
|
* Default: undefined (no structural interface detection).
|
|
865
1224
|
*/
|
|
866
|
-
readonly detectInterfaceImplementations?: (parsedFiles: readonly ParsedFile[], indexes: ScopeResolutionIndexes, model: SemanticModel) =>
|
|
1225
|
+
readonly detectInterfaceImplementations?: (parsedFiles: readonly ParsedFile[], indexes: ScopeResolutionIndexes, model: SemanticModel) => StructuralImplementationResult;
|
|
867
1226
|
/**
|
|
868
1227
|
* Optional: mirror typeBindings from namespace-import target modules
|
|
869
1228
|
* into the importer's module scope. Languages like Go use namespace
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* - propagatesReturnTypesAcrossImports (default true)
|
|
16
16
|
* - fieldFallbackOnMethodLookup (default true — turn OFF for
|
|
17
17
|
* statically-typed languages; the heuristic over-connects)
|
|
18
|
-
* -
|
|
18
|
+
* - elementTypeOf — container element type, by subscript or accessor
|
|
19
19
|
* - collapseMemberCallsByCallerTarget — one edge per caller/target
|
|
20
20
|
* - populateNamespaceSiblings — cross-file implicit visibility
|
|
21
21
|
* - hoistTypeBindingsToModule — enable ONLY when method return
|
|
@@ -113,13 +113,24 @@
|
|
|
113
113
|
* 3. Case 0.5 implicit-`this` chain walk — GATED: fires only for
|
|
114
114
|
* languages that set `resolveThisViaEnclosingClass === true`;
|
|
115
115
|
* it intercepts every bare-`this` call/read/write site ahead of
|
|
116
|
-
* Case 4 and does NOT emit
|
|
117
|
-
*
|
|
118
|
-
*
|
|
116
|
+
* Case 4 and does NOT emit the interface-dispatch fan-out that
|
|
117
|
+
* Cases 0, 3b and 4 all perform (Case 0 gained it in #2829 and
|
|
118
|
+
* Case 3b in #2832, leaving 0.5 the only INSTANCE-receiver case
|
|
119
|
+
* that folds or walks to a receiver type without fanning out.
|
|
120
|
+
* Read that narrowly: Case 2 also walks an MRO and its binding
|
|
121
|
+
* admits `Interface`, but its receiver IS the type name, so the
|
|
122
|
+
* site is static dispatch and a fan-out would be wrong; Cases 3
|
|
123
|
+
* and 5 resolve by direct lookup rather than a fold or MRO walk,
|
|
124
|
+
* and no language is known to reach Case 3 with an Interface —
|
|
125
|
+
* every one that could strips the namespace qualifier first,
|
|
126
|
+
* sending it to Case 4), so enabling the toggle
|
|
127
|
+
* for a language changes that language's `this` dispatch
|
|
128
|
+
* semantics (see the toggle's doc below)
|
|
119
129
|
* 4. Case 1 namespace-receiver
|
|
120
130
|
* 5. Case 2 class-name receiver
|
|
121
131
|
* 6. Case 3 dotted typeBinding for namespace prefix
|
|
122
|
-
* 7. Case 3b chain-typebinding (compound resolver
|
|
132
|
+
* 7. Case 3b chain-typebinding (compound resolver + interface-dispatch
|
|
133
|
+
* fan-out on an Interface fold, #2832)
|
|
123
134
|
* 8. Case 4 simple typeBinding (MRO walk + findOwnedMember)
|
|
124
135
|
* Reordering or merging cases changes resolution semantics. The
|
|
125
136
|
* numbering is part of the contract — keep the comments.
|
|
@@ -21,9 +21,9 @@
|
|
|
21
21
|
* `(atRange.startLine, atRange.startCol)` is byte-equal to U1's `at` — no
|
|
22
22
|
* normalization needed.
|
|
23
23
|
*
|
|
24
|
-
* Gating (R4): the concrete sink is created in `run.ts`
|
|
25
|
-
*
|
|
26
|
-
*
|
|
24
|
+
* Gating (R4): the concrete sink is created in `run.ts` when PDG is enabled OR
|
|
25
|
+
* always-on callable-flow facts need direct call targets for actual→formal
|
|
26
|
+
* propagation. The read-side CFG join remains strictly PDG-gated.
|
|
27
27
|
*
|
|
28
28
|
* Multi-target dispatch (R2/KTD8): one site → multiple emit calls → the `Set`
|
|
29
29
|
* accumulates every resolved target. Capture is per-emit-call, so the
|
|
@@ -67,9 +67,9 @@ export interface CalleeIdMapView {
|
|
|
67
67
|
/** The concrete accumulator: a write sink that also exposes the read view. */
|
|
68
68
|
export interface CalleeIdAccumulator extends CalleeIdSink, CalleeIdMapView {
|
|
69
69
|
}
|
|
70
|
+
export type CalleeIdCaptureFilter = (filePath: string, line: number, col: number) => boolean;
|
|
70
71
|
/**
|
|
71
|
-
* Create the concrete nested-`Map` accumulator
|
|
72
|
-
*
|
|
73
|
-
* overhead — R4).
|
|
72
|
+
* Create the concrete nested-`Map` accumulator for PDG callee capture or
|
|
73
|
+
* callable-value-flow's direct-target index.
|
|
74
74
|
*/
|
|
75
|
-
export declare function createCalleeIdAccumulator(): CalleeIdAccumulator;
|
|
75
|
+
export declare function createCalleeIdAccumulator(shouldCapture?: CalleeIdCaptureFilter): CalleeIdAccumulator;
|
|
@@ -21,9 +21,9 @@
|
|
|
21
21
|
* `(atRange.startLine, atRange.startCol)` is byte-equal to U1's `at` — no
|
|
22
22
|
* normalization needed.
|
|
23
23
|
*
|
|
24
|
-
* Gating (R4): the concrete sink is created in `run.ts`
|
|
25
|
-
*
|
|
26
|
-
*
|
|
24
|
+
* Gating (R4): the concrete sink is created in `run.ts` when PDG is enabled OR
|
|
25
|
+
* always-on callable-flow facts need direct call targets for actual→formal
|
|
26
|
+
* propagation. The read-side CFG join remains strictly PDG-gated.
|
|
27
27
|
*
|
|
28
28
|
* Multi-target dispatch (R2/KTD8): one site → multiple emit calls → the `Set`
|
|
29
29
|
* accumulates every resolved target. Capture is per-emit-call, so the
|
|
@@ -36,14 +36,15 @@ export function calleeIdPosKey(line, col) {
|
|
|
36
36
|
return `${line}:${col}`;
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
|
-
* Create the concrete nested-`Map` accumulator
|
|
40
|
-
*
|
|
41
|
-
* overhead — R4).
|
|
39
|
+
* Create the concrete nested-`Map` accumulator for PDG callee capture or
|
|
40
|
+
* callable-value-flow's direct-target index.
|
|
42
41
|
*/
|
|
43
|
-
export function createCalleeIdAccumulator() {
|
|
42
|
+
export function createCalleeIdAccumulator(shouldCapture) {
|
|
44
43
|
const byFile = new Map();
|
|
45
44
|
return {
|
|
46
45
|
add(filePath, line, col, calleeId) {
|
|
46
|
+
if (shouldCapture?.(filePath, line, col) === false)
|
|
47
|
+
return;
|
|
47
48
|
let byPos = byFile.get(filePath);
|
|
48
49
|
if (byPos === undefined) {
|
|
49
50
|
byPos = new Map();
|