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
|
@@ -10,10 +10,34 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import path from 'node:path';
|
|
12
12
|
import { SupportedLanguages } from '../../../../_shared/index.js';
|
|
13
|
+
import { perFileSet } from '../../import-resolvers/per-file-set.js';
|
|
13
14
|
import { populateClassOwnedMembers } from '../../scope-resolution/scope/walkers.js';
|
|
14
15
|
import { cobolProvider } from '../cobol.js';
|
|
15
16
|
// Copybook file extensions for COPY name resolution
|
|
16
17
|
const COPYBOOK_EXTENSIONS = new Set(['.cpy', '.copybook']);
|
|
18
|
+
// COBOL source files, searched only after every copybook has missed.
|
|
19
|
+
const COBOL_SOURCE_EXTENSIONS = new Set(['.cbl', '.cob', '.cobol']);
|
|
20
|
+
const getCobolCopyIndex = perFileSet((allFilePaths) => {
|
|
21
|
+
const copybooks = new Map();
|
|
22
|
+
const sources = new Map();
|
|
23
|
+
// One pass builds both tiers: the two scans walked the same files and
|
|
24
|
+
// classified each by the same extension test.
|
|
25
|
+
for (const fp of allFilePaths) {
|
|
26
|
+
const ext = path.extname(fp).toLowerCase();
|
|
27
|
+
const tier = COPYBOOK_EXTENSIONS.has(ext)
|
|
28
|
+
? copybooks
|
|
29
|
+
: COBOL_SOURCE_EXTENSIONS.has(ext)
|
|
30
|
+
? sources
|
|
31
|
+
: undefined;
|
|
32
|
+
if (tier === undefined)
|
|
33
|
+
continue;
|
|
34
|
+
const basename = path.basename(fp, ext).toUpperCase();
|
|
35
|
+
// First in Set-iteration order wins, as the scans' first-match `return` did.
|
|
36
|
+
if (!tier.has(basename))
|
|
37
|
+
tier.set(basename, fp);
|
|
38
|
+
}
|
|
39
|
+
return { copybooks, sources };
|
|
40
|
+
});
|
|
17
41
|
const cobolScopeResolver = {
|
|
18
42
|
language: SupportedLanguages.Cobol,
|
|
19
43
|
languageProvider: cobolProvider,
|
|
@@ -21,26 +45,9 @@ const cobolScopeResolver = {
|
|
|
21
45
|
// ── Resolve COPY bookname to file path ─────────────────────────────
|
|
22
46
|
resolveImportTarget: (targetRaw, _fromFile, allFilePaths) => {
|
|
23
47
|
const upper = targetRaw.toUpperCase();
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
if (!COPYBOOK_EXTENSIONS.has(ext))
|
|
28
|
-
continue;
|
|
29
|
-
const basename = path.basename(fp, ext).toUpperCase();
|
|
30
|
-
if (basename === upper)
|
|
31
|
-
return fp;
|
|
32
|
-
}
|
|
33
|
-
// Also search COBOL source files (.cbl, .cob, .cobol)
|
|
34
|
-
const COBOL_SOURCE_EXTS = new Set(['.cbl', '.cob', '.cobol']);
|
|
35
|
-
for (const fp of allFilePaths) {
|
|
36
|
-
const ext = path.extname(fp).toLowerCase();
|
|
37
|
-
if (!COBOL_SOURCE_EXTS.has(ext))
|
|
38
|
-
continue;
|
|
39
|
-
const basename = path.basename(fp, ext).toUpperCase();
|
|
40
|
-
if (basename === upper)
|
|
41
|
-
return fp;
|
|
42
|
-
}
|
|
43
|
-
return null;
|
|
48
|
+
const index = getCobolCopyIndex(allFilePaths);
|
|
49
|
+
// Copybooks first, then COBOL sources — the tier order IS the tie-break.
|
|
50
|
+
return index.copybooks.get(upper) ?? index.sources.get(upper) ?? null;
|
|
44
51
|
},
|
|
45
52
|
// COBOL has no binding-merge rules beyond the default (local-first-then-imports).
|
|
46
53
|
mergeBindings: (existing) => [...existing],
|
|
@@ -56,6 +63,13 @@ const cobolScopeResolver = {
|
|
|
56
63
|
return 'compatible';
|
|
57
64
|
return 'incompatible';
|
|
58
65
|
},
|
|
66
|
+
// PROGRAM-ID declarations bridge to legacy Module graph nodes. COBOL's
|
|
67
|
+
// procedure-pointer ENTRY values therefore target Module defs, while every
|
|
68
|
+
// AST-backed provider keeps the shared callable-label default.
|
|
69
|
+
isCallableValueTarget: (def) => def.type === 'Module',
|
|
70
|
+
// Structural COBOL CALLS/IMPORTS remain owned by the established regex
|
|
71
|
+
// processor; this resolver contributes only procedure-pointer CALLS.
|
|
72
|
+
scopeResolutionEdgeMode: 'callable-flow-only',
|
|
59
73
|
// No inheritance in COBOL — empty MRO map.
|
|
60
74
|
buildMro: () => new Map(),
|
|
61
75
|
// Everything lives under the PROGRAM-ID Module scope.
|
|
@@ -34,6 +34,19 @@ export const cobolProvider = defineLanguage({
|
|
|
34
34
|
// ── Scope-resolution hooks ───────────────────────────────────────
|
|
35
35
|
emitScopeCaptures: emitCobolScopeCaptures,
|
|
36
36
|
interpretImport: interpretCobolImport,
|
|
37
|
+
// `COPY` is a pure textual splice by the copybook preprocessor — the
|
|
38
|
+
// `#include` case exactly, and COBOL's only import form. It is spliced before
|
|
39
|
+
// anything runs, so a copybook cycle built from `COPY` statements is real and
|
|
40
|
+
// must not be tagged `runsOnlyWhenCalled` by the central Pass-3 position rule.
|
|
41
|
+
//
|
|
42
|
+
// LATENT today, declared anyway. `cobol/captures.ts` ranges every
|
|
43
|
+
// `@scope.function` (PROCEDURE DIVISION sections and paragraphs) over a
|
|
44
|
+
// SINGLE line — `rangeOf(line, 0, line, endCol)` — so a `COPY` on any later
|
|
45
|
+
// line never resolves inside a Function scope and Pass 3 has nothing to mark.
|
|
46
|
+
// The flag is here so that giving those anchors their true multi-line ranges
|
|
47
|
+
// is a scope-resolution fix and not, silently, a cycle-suppression bug.
|
|
48
|
+
// See `LanguageProvider.importsExecuteWhereWritten`.
|
|
49
|
+
importsExecuteWhereWritten: false,
|
|
37
50
|
importOwningScope: cobolImportOwningScope,
|
|
38
51
|
receiverBinding: cobolReceiverBinding,
|
|
39
52
|
});
|
|
@@ -58,8 +58,8 @@
|
|
|
58
58
|
* - `noAdlSites` — call sites with parenthesized function (capture-time)
|
|
59
59
|
* - `classToNamespaceQualifiedName` — class def → its enclosing namespace
|
|
60
60
|
* qualified name (`populateCppAssociatedNamespaces` time)
|
|
61
|
-
* - `
|
|
62
|
-
* `parsedFiles`
|
|
61
|
+
* - `adlIndexByPass` — the lazily-built candidate index, memoized weakly on
|
|
62
|
+
* the `parsedFiles` array it was built from (first-`pickCppAdlCandidates`
|
|
63
63
|
* time; see `ensureAdlIndex`)
|
|
64
64
|
*
|
|
65
65
|
* The class→namespace map uses qualified names (not scope IDs) because
|
|
@@ -58,8 +58,8 @@
|
|
|
58
58
|
* - `noAdlSites` — call sites with parenthesized function (capture-time)
|
|
59
59
|
* - `classToNamespaceQualifiedName` — class def → its enclosing namespace
|
|
60
60
|
* qualified name (`populateCppAssociatedNamespaces` time)
|
|
61
|
-
* - `
|
|
62
|
-
* `parsedFiles`
|
|
61
|
+
* - `adlIndexByPass` — the lazily-built candidate index, memoized weakly on
|
|
62
|
+
* the `parsedFiles` array it was built from (first-`pickCppAdlCandidates`
|
|
63
63
|
* time; see `ensureAdlIndex`)
|
|
64
64
|
*
|
|
65
65
|
* The class→namespace map uses qualified names (not scope IDs) because
|
|
@@ -103,8 +103,21 @@ function pushFileSiteKey(idx, filePath, key) {
|
|
|
103
103
|
}
|
|
104
104
|
keys.push(key);
|
|
105
105
|
}
|
|
106
|
-
|
|
107
|
-
|
|
106
|
+
/**
|
|
107
|
+
* Per-pass memo: `parsedFiles` array identity → the built index. `WeakMap`-keyed
|
|
108
|
+
* so the entry lives only as long as the caller's `parsedFiles` array does, and
|
|
109
|
+
* is reclaimed with the pass — mirrors `qualifiedNsIndexByPass` in
|
|
110
|
+
* `inline-namespaces.ts` and `moduleScopeIndexByPass` in `file-local-linkage.ts`.
|
|
111
|
+
*
|
|
112
|
+
* Weak keying is load-bearing, not stylistic: the index holds
|
|
113
|
+
* `SymbolDefinition` references reaching into every ParsedFile's scopes, so the
|
|
114
|
+
* previous module-level strong `let` pair (index + source array) kept the whole
|
|
115
|
+
* C/C++ ParsedFile set alive past the point `scope-resolution/pipeline/phase.ts`
|
|
116
|
+
* evicts `files`/`contents`/`preExtractedByPath` and calls `forceGc()` to
|
|
117
|
+
* reclaim it — C++ is 7th of 16 `SCOPE_RESOLVERS` entries, so the retention
|
|
118
|
+
* survived nine later language passes plus emit.
|
|
119
|
+
*/
|
|
120
|
+
let adlIndexByPass = new WeakMap();
|
|
108
121
|
function siteKey(filePath, line, col) {
|
|
109
122
|
return `${filePath}:${line}:${col}`;
|
|
110
123
|
}
|
|
@@ -292,26 +305,36 @@ export function validateAdlSeqCoverage(idx) {
|
|
|
292
305
|
return [...missing];
|
|
293
306
|
}
|
|
294
307
|
/** Build the ADL index on first use of a given `parsedFiles` set; reuse it for
|
|
295
|
-
*
|
|
308
|
+
* every subsequent call site in the same pipeline run. Reset by
|
|
296
309
|
* `clearCppAdlState`.
|
|
297
310
|
*
|
|
311
|
+
* Lifetime: the memoized entry is reachable only while the caller still holds
|
|
312
|
+
* the `parsedFiles` array. Once the pipeline drops it, the entry — and the
|
|
313
|
+
* `SymbolDefinition` references it holds into those files' scopes — becomes
|
|
314
|
+
* collectable; nothing here pins it (see {@link adlIndexByPass}).
|
|
315
|
+
*
|
|
298
316
|
* Staleness is keyed on `parsedFiles` reference identity ONLY, but the index
|
|
299
317
|
* is a function of THREE inputs: `parsedFiles` (namespace/friend candidates),
|
|
300
318
|
* `scopes` (`classDefsBySimple`, read from `scopes.defs.byId`), and the
|
|
301
|
-
* module-level `classToNamespaceQualifiedName` (friend-candidate keys).
|
|
302
|
-
*
|
|
303
|
-
*
|
|
304
|
-
*
|
|
305
|
-
*
|
|
306
|
-
*
|
|
307
|
-
*
|
|
308
|
-
*
|
|
309
|
-
*
|
|
319
|
+
* module-level `classToNamespaceQualifiedName` (friend-candidate keys). The
|
|
320
|
+
* WeakMap key covers only the first, so the explicit clear is still REQUIRED
|
|
321
|
+
* for the other two: a later pass may hand back the same `parsedFiles`
|
|
322
|
+
* reference with different `scopes` / class→namespace state, and identity
|
|
323
|
+
* alone would serve the stale index. This is sound for the current pipeline
|
|
324
|
+
* because all three are built together once per `runScopeResolution` pass and
|
|
325
|
+
* `clearCppAdlState` runs in `loadResolutionConfig` at the start of every
|
|
326
|
+
* pass. Callers MUST call `clearCppAdlState` between any two passes that
|
|
327
|
+
* change `scopes` or `classToNamespaceQualifiedName` while reusing the same
|
|
328
|
+
* `parsedFiles` array reference — otherwise a stale index would be served.
|
|
329
|
+
* (No such caller exists today; widening the key to also cover `scopes` is
|
|
330
|
+
* deferred until one does.) */
|
|
310
331
|
function ensureAdlIndex(scopes, parsedFiles) {
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
332
|
+
let index = adlIndexByPass.get(parsedFiles);
|
|
333
|
+
if (index === undefined) {
|
|
334
|
+
index = buildAdlIndex(scopes, parsedFiles);
|
|
335
|
+
adlIndexByPass.set(parsedFiles, index);
|
|
336
|
+
}
|
|
337
|
+
return index;
|
|
315
338
|
}
|
|
316
339
|
/** Record per-call-site argument info. Called once per call site from
|
|
317
340
|
* `emitCppScopeCaptures`. */
|
|
@@ -403,8 +426,14 @@ export function clearCppAdlState() {
|
|
|
403
426
|
argInfoSiteKeysByFile.clear();
|
|
404
427
|
noAdlSiteKeysByFile.clear();
|
|
405
428
|
classToNamespaceQualifiedName.clear();
|
|
406
|
-
|
|
407
|
-
|
|
429
|
+
// The candidate index is dropped by REASSIGNING a fresh `WeakMap`: `WeakMap`
|
|
430
|
+
// has no `.clear()`, and swapping the instance discards every memoized entry
|
|
431
|
+
// at once — the exact invalidation the previous `adlIndex = undefined` pair
|
|
432
|
+
// provided. Required even though the map is keyed on `parsedFiles` identity,
|
|
433
|
+
// because the index also depends on `scopes` and
|
|
434
|
+
// `classToNamespaceQualifiedName`, which the key cannot observe (see
|
|
435
|
+
// {@link ensureAdlIndex}).
|
|
436
|
+
adlIndexByPass = new WeakMap();
|
|
408
437
|
}
|
|
409
438
|
/**
|
|
410
439
|
* Walk `parsed.scopes` to record each Class def's enclosing namespace
|
|
@@ -467,14 +496,14 @@ export function pickCppAdlCandidates(site, callerParsed, scopes, parsedFiles) {
|
|
|
467
496
|
if (args === undefined || args.length === 0)
|
|
468
497
|
return undefined;
|
|
469
498
|
// Build the workspace-wide ADL candidate index once; reuse for every site.
|
|
470
|
-
ensureAdlIndex(scopes, parsedFiles);
|
|
499
|
+
const idx = ensureAdlIndex(scopes, parsedFiles);
|
|
471
500
|
// Collect associated namespace QNames from every participating class-typed arg
|
|
472
501
|
// and from function-reference args.
|
|
473
502
|
const associatedNamespaces = new Set();
|
|
474
503
|
for (const arg of args) {
|
|
475
|
-
collectAssociatedNamespacesForAdlArg(arg, scopes, associatedNamespaces);
|
|
504
|
+
collectAssociatedNamespacesForAdlArg(arg, scopes, idx, associatedNamespaces);
|
|
476
505
|
if (arg.functionRefText !== undefined) {
|
|
477
|
-
collectFunctionTypeAssociatedNamespaces(arg.functionRefText, scopes, associatedNamespaces);
|
|
506
|
+
collectFunctionTypeAssociatedNamespaces(arg.functionRefText, scopes, idx, associatedNamespaces);
|
|
478
507
|
}
|
|
479
508
|
}
|
|
480
509
|
if (associatedNamespaces.size === 0)
|
|
@@ -487,9 +516,6 @@ export function pickCppAdlCandidates(site, callerParsed, scopes, parsedFiles) {
|
|
|
487
516
|
// (`friendCandidates`, ISO C++ `[basic.lookup.argdep]` §2).
|
|
488
517
|
// Dedup by nodeId and sort by visitation sequence so the candidate list is
|
|
489
518
|
// byte-for-byte identical to the legacy file-major scan order.
|
|
490
|
-
const idx = adlIndex;
|
|
491
|
-
if (idx === undefined)
|
|
492
|
-
return undefined;
|
|
493
519
|
const bySeq = new Map();
|
|
494
520
|
const seenKey = new Set();
|
|
495
521
|
const collectFrom = (buckets) => {
|
|
@@ -515,11 +541,11 @@ export function pickCppAdlCandidates(site, callerParsed, scopes, parsedFiles) {
|
|
|
515
541
|
return undefined;
|
|
516
542
|
return [...bySeq.entries()].sort((a, b) => a[0] - b[0]).map(([, def]) => def);
|
|
517
543
|
}
|
|
518
|
-
function collectAssociatedNamespacesForAdlArg(arg, scopes, associatedNamespaces) {
|
|
544
|
+
function collectAssociatedNamespacesForAdlArg(arg, scopes, idx, associatedNamespaces) {
|
|
519
545
|
// For template args this may be the template name itself (e.g. `vector`);
|
|
520
546
|
// simple-name lookup can match project classes with the same name (known
|
|
521
547
|
// V1/V2 simplification).
|
|
522
|
-
addAssociatedNamespaceForClassName(arg.simpleClassName, scopes, associatedNamespaces);
|
|
548
|
+
addAssociatedNamespaceForClassName(arg.simpleClassName, scopes, idx, associatedNamespaces);
|
|
523
549
|
// Includes template-owner namespaces (e.g. `std` in std::vector<T>). If
|
|
524
550
|
// that surfaces extra candidates, merged-candidate overload narrowing in
|
|
525
551
|
// free-call-fallback suppresses arbitrary edge emission.
|
|
@@ -530,13 +556,13 @@ function collectAssociatedNamespacesForAdlArg(arg, scopes, associatedNamespaces)
|
|
|
530
556
|
associatedNamespaces.add(ns);
|
|
531
557
|
}
|
|
532
558
|
for (const className of arg.templateArgClassNames) {
|
|
533
|
-
addAssociatedNamespaceForClassName(className, scopes, associatedNamespaces);
|
|
559
|
+
addAssociatedNamespaceForClassName(className, scopes, idx, associatedNamespaces);
|
|
534
560
|
}
|
|
535
561
|
}
|
|
536
|
-
function addAssociatedNamespaceForClassName(simpleClassName, scopes, associatedNamespaces) {
|
|
562
|
+
function addAssociatedNamespaceForClassName(simpleClassName, scopes, idx, associatedNamespaces) {
|
|
537
563
|
if (simpleClassName.length === 0)
|
|
538
564
|
return;
|
|
539
|
-
const classLookup = findCppClassDefBySimpleName(simpleClassName);
|
|
565
|
+
const classLookup = findCppClassDefBySimpleName(idx, simpleClassName);
|
|
540
566
|
if (classLookup === undefined)
|
|
541
567
|
return;
|
|
542
568
|
const { classDef, ambiguous } = classLookup;
|
|
@@ -629,10 +655,10 @@ function findNamespaceDefInScope(scope) {
|
|
|
629
655
|
*
|
|
630
656
|
* ISO C++ `[basic.lookup.argdep]` §2: enumerations contribute their
|
|
631
657
|
* enclosing namespace to the associated set, just like class types. */
|
|
632
|
-
function findCppClassDefBySimpleName(simpleName) {
|
|
658
|
+
function findCppClassDefBySimpleName(idx, simpleName) {
|
|
633
659
|
// `classDefsBySimple` preserves `scopes.defs.byId` order, so `[0]` is the
|
|
634
660
|
// legacy first-match and `length > 1` is the legacy `ambiguous` flag.
|
|
635
|
-
const matches =
|
|
661
|
+
const matches = idx.classDefsBySimple.get(simpleName);
|
|
636
662
|
if (matches === undefined)
|
|
637
663
|
return undefined;
|
|
638
664
|
const first = matches[0];
|
|
@@ -644,10 +670,7 @@ function findCppClassDefBySimpleName(simpleName) {
|
|
|
644
670
|
* Contribute associated namespaces for a function-reference argument by walking
|
|
645
671
|
* the referenced overload set's parameter and return types.
|
|
646
672
|
*/
|
|
647
|
-
function collectFunctionTypeAssociatedNamespaces(refText, scopes, out) {
|
|
648
|
-
const idx = adlIndex;
|
|
649
|
-
if (idx === undefined)
|
|
650
|
-
return;
|
|
673
|
+
function collectFunctionTypeAssociatedNamespaces(refText, scopes, idx, out) {
|
|
651
674
|
const colonIdx = refText.lastIndexOf('::');
|
|
652
675
|
if (colonIdx !== -1) {
|
|
653
676
|
// Qualified ref: extract namespace prefix and normalise :: → dot notation.
|
|
@@ -662,7 +685,7 @@ function collectFunctionTypeAssociatedNamespaces(refText, scopes, out) {
|
|
|
662
685
|
const matches = idx.nsFunctionsByQName.get(nsText)?.get(simpleName);
|
|
663
686
|
if (matches !== undefined) {
|
|
664
687
|
for (const def of matches)
|
|
665
|
-
collectAssociatedNamespacesForFunctionDef(def, scopes, out);
|
|
688
|
+
collectAssociatedNamespacesForFunctionDef(def, scopes, idx, out);
|
|
666
689
|
}
|
|
667
690
|
return;
|
|
668
691
|
}
|
|
@@ -673,23 +696,23 @@ function collectFunctionTypeAssociatedNamespaces(refText, scopes, out) {
|
|
|
673
696
|
const matches = idx.nsFunctionsBySimple.get(refText);
|
|
674
697
|
if (matches !== undefined) {
|
|
675
698
|
for (const def of matches)
|
|
676
|
-
collectAssociatedNamespacesForFunctionDef(def, scopes, out);
|
|
699
|
+
collectAssociatedNamespacesForFunctionDef(def, scopes, idx, out);
|
|
677
700
|
}
|
|
678
701
|
}
|
|
679
|
-
function collectAssociatedNamespacesForFunctionDef(def, scopes, out) {
|
|
702
|
+
function collectAssociatedNamespacesForFunctionDef(def, scopes, idx, out) {
|
|
680
703
|
const parameterTypes = def.parameterTypeClasses?.map((typeClass) => typeClass.base);
|
|
681
704
|
for (const paramType of parameterTypes ?? def.parameterTypes ?? []) {
|
|
682
|
-
collectAssociatedNamespacesForFunctionTypeText(paramType, scopes, out);
|
|
705
|
+
collectAssociatedNamespacesForFunctionTypeText(paramType, scopes, idx, out);
|
|
683
706
|
}
|
|
684
707
|
if (def.returnType !== undefined) {
|
|
685
|
-
collectAssociatedNamespacesForFunctionTypeText(def.returnType, scopes, out);
|
|
708
|
+
collectAssociatedNamespacesForFunctionTypeText(def.returnType, scopes, idx, out);
|
|
686
709
|
}
|
|
687
710
|
}
|
|
688
|
-
function collectAssociatedNamespacesForFunctionTypeText(typeText, scopes, out) {
|
|
711
|
+
function collectAssociatedNamespacesForFunctionTypeText(typeText, scopes, idx, out) {
|
|
689
712
|
for (const token of extractCppTypeNameTokens(typeText)) {
|
|
690
713
|
if (isIgnoredCppAdlNamespace(token.namespaceName))
|
|
691
714
|
continue;
|
|
692
|
-
addAssociatedNamespaceForClassName(token.simpleName, scopes, out);
|
|
715
|
+
addAssociatedNamespaceForClassName(token.simpleName, scopes, idx, out);
|
|
693
716
|
if (token.namespaceName !== '')
|
|
694
717
|
out.add(token.namespaceName);
|
|
695
718
|
}
|
|
@@ -2,9 +2,10 @@ import { nodeIfType, nodeToCapture, syntheticCapture, } from '../../utils/ast-he
|
|
|
2
2
|
import { getCppParser, getCppScopeQuery } from './query.js';
|
|
3
3
|
import { getTreeSitterBufferSize } from '../../constants.js';
|
|
4
4
|
import { parseSourceSafe } from '../../../tree-sitter/safe-parse.js';
|
|
5
|
+
import { stripUeMacros } from '../../cpp-ue-preprocessor.js';
|
|
5
6
|
import { normalizeQualifiedName } from '../../utils/qualified-name.js';
|
|
6
7
|
import { splitCppInclude, splitCppUsingDecl } from './import-decomposer.js';
|
|
7
|
-
import { classifyCppParameterType, computeCppDeclarationArity, computeCppCallArity, } from './arity-metadata.js';
|
|
8
|
+
import { classifyCppParameterType, computeCppDeclarationArity, computeCppCallArity, normalizeCppParamType, } from './arity-metadata.js';
|
|
8
9
|
import { markCppAnonymousNamespaceRange, markFileLocal } from './file-local-linkage.js';
|
|
9
10
|
import { markCppDependentBase, markCppDependentPackBase } from './two-phase-lookup.js';
|
|
10
11
|
import { markCppAdlSiteArgs, markCppAdlSiteNoAdl } from './adl.js';
|
|
@@ -13,6 +14,97 @@ import { extractCppTemplateConstraints } from './constraint-extractor.js';
|
|
|
13
14
|
import { captureCppMemberLookupFacts } from './member-lookup.js';
|
|
14
15
|
import { CPP_BRACED_INIT_TYPE_PREFIX } from './conversion-rank.js';
|
|
15
16
|
import { logger } from '../../../logger.js';
|
|
17
|
+
import { synthesizeReceiverChainCapture } from '../../utils/receiver-chain-captures.js';
|
|
18
|
+
import { synthesizeCallableFlowCaptures, } from '../../utils/callable-flow-captures.js';
|
|
19
|
+
const CPP_CALLABLE_CAPTURE_OPTIONS = {
|
|
20
|
+
functionNodeTypes: new Set(['function_definition', 'lambda_expression']),
|
|
21
|
+
callNodeTypes: new Set(['call_expression']),
|
|
22
|
+
parameterListNodeTypes: new Set(['parameter_list', 'argument_list']),
|
|
23
|
+
parameterNodeTypes: new Set(['parameter_declaration', 'optional_parameter_declaration']),
|
|
24
|
+
bindingNodeTypes: new Set(['init_declarator']),
|
|
25
|
+
assignmentNodeTypes: new Set(['assignment_expression']),
|
|
26
|
+
identifierNodeTypes: new Set([
|
|
27
|
+
'identifier',
|
|
28
|
+
'field_identifier',
|
|
29
|
+
'type_identifier',
|
|
30
|
+
'namespace_identifier',
|
|
31
|
+
]),
|
|
32
|
+
callableSignatureDeclarationNodeTypes: new Set([
|
|
33
|
+
'declaration',
|
|
34
|
+
'field_declaration',
|
|
35
|
+
'parameter_declaration',
|
|
36
|
+
'optional_parameter_declaration',
|
|
37
|
+
]),
|
|
38
|
+
callableReferenceNodeTypes: new Set(['qualified_identifier']),
|
|
39
|
+
emitCanonicalInvokeReference: true,
|
|
40
|
+
memberPointerOperators: new Set(['.*', '->*']),
|
|
41
|
+
memberPointerParts: (node) => cppRecoveredMemberPointerParts(node),
|
|
42
|
+
parameterPassingMode: (parameter) => cppOutermostPassingMode(parameter),
|
|
43
|
+
isTrueReferenceBinding: (_container, destination) => cppContainsNodeType(destination, 'reference_declarator'),
|
|
44
|
+
expectedSignature: (container, destination) => cppFunctionDeclaratorSignature(destination) ?? cppFunctionDeclaratorSignature(container),
|
|
45
|
+
normalizeQualifiedName: (raw) => raw.replaceAll('::', '.'),
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Passing mode from the parameter's OUTERMOST declarator chain only. A deep
|
|
49
|
+
* subtree scan inverted copy vs alias: `void reg(void (*cb)(int& out))` has a
|
|
50
|
+
* `reference_declarator` inside the nested parameter list, but `cb` itself is
|
|
51
|
+
* a by-value pointer copy — classifying it 'reference' made the solver
|
|
52
|
+
* back-propagate formal targets into every caller's argument cell (#2522
|
|
53
|
+
* review, M5). The chain walk never descends into nested parameter lists.
|
|
54
|
+
*/
|
|
55
|
+
function cppOutermostPassingMode(parameter) {
|
|
56
|
+
let sawReference = false;
|
|
57
|
+
let sawPointer = false;
|
|
58
|
+
let node = parameter.childForFieldName('declarator') ?? null;
|
|
59
|
+
const visited = new Set();
|
|
60
|
+
while (node !== null && !visited.has(node.id)) {
|
|
61
|
+
visited.add(node.id);
|
|
62
|
+
if (node.type === 'reference_declarator' || node.type === 'abstract_reference_declarator') {
|
|
63
|
+
// A reference ANYWHERE on the chain aliases the caller's storage —
|
|
64
|
+
// `void (*&cb)(int)` is a reference to pointer, i.e. an alias.
|
|
65
|
+
sawReference = true;
|
|
66
|
+
}
|
|
67
|
+
else if (node.type === 'pointer_declarator' || node.type === 'abstract_pointer_declarator') {
|
|
68
|
+
sawPointer = true;
|
|
69
|
+
}
|
|
70
|
+
const next = node.childForFieldName('declarator');
|
|
71
|
+
if (next !== null) {
|
|
72
|
+
node = next;
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
if (node.type === 'parenthesized_declarator') {
|
|
76
|
+
node =
|
|
77
|
+
node.namedChildren.find((child) => child !== null && child.type.includes('declarator')) ?? null;
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
return sawReference ? 'reference' : sawPointer ? 'pointer' : 'value';
|
|
83
|
+
}
|
|
84
|
+
function cppRecoveredMemberPointerParts(node) {
|
|
85
|
+
if (!node.type.includes('parenthesized'))
|
|
86
|
+
return undefined;
|
|
87
|
+
const recovered = node.namedChildren.find((child) => child !== null && child.type === 'ERROR');
|
|
88
|
+
if (recovered === undefined)
|
|
89
|
+
return undefined;
|
|
90
|
+
const operator = recovered.children.find((child) => child !== null && child.text === '->*');
|
|
91
|
+
const sibling = node.namedChildren.find((child) => child !== null && child.id !== recovered.id);
|
|
92
|
+
const errIdentifier = recovered.namedChildren.find((child) => child !== null);
|
|
93
|
+
if (operator === undefined || sibling === undefined || errIdentifier === undefined) {
|
|
94
|
+
return undefined;
|
|
95
|
+
}
|
|
96
|
+
// tree-sitter's error recovery groups `(obj->*ptr)` two ways depending on
|
|
97
|
+
// recovery cost (identifier lengths!): either `[identifier, ERROR "->*m"]`
|
|
98
|
+
// or `[ERROR "obj->*", identifier]`. Disambiguate by token order INSIDE the
|
|
99
|
+
// ERROR: an identifier BEFORE `->*` is the receiver (the sibling is the
|
|
100
|
+
// pointer/member); an identifier AFTER `->*` is the member (the sibling is
|
|
101
|
+
// the receiver). Assuming one fixed grouping swapped the roles and silently
|
|
102
|
+
// dropped the call site (#2522 review, H2).
|
|
103
|
+
if (errIdentifier.startIndex < operator.startIndex) {
|
|
104
|
+
return { receiver: errIdentifier, member: sibling, operator: operator.text };
|
|
105
|
+
}
|
|
106
|
+
return { receiver: sibling, member: errIdentifier, operator: operator.text };
|
|
107
|
+
}
|
|
16
108
|
/**
|
|
17
109
|
* Per-file wall-clock budget for the capture-emit loop (#2432). A worker
|
|
18
110
|
* thread stuck in this loop cannot be terminated safely (terminating a
|
|
@@ -36,8 +128,12 @@ function cppCaptureBudgetMs() {
|
|
|
36
128
|
export function emitCppScopeCaptures(sourceText, filePath, cachedTree) {
|
|
37
129
|
let tree = cachedTree;
|
|
38
130
|
if (tree === undefined) {
|
|
39
|
-
|
|
40
|
-
|
|
131
|
+
// Idempotent re-application: `extractParsedFile` already preprocesses, but
|
|
132
|
+
// direct emitter callers (benchmarks, capture goldens) must see the same
|
|
133
|
+
// program the pipeline does.
|
|
134
|
+
const parseText = stripUeMacros(sourceText);
|
|
135
|
+
tree = parseSourceSafe(getCppParser(), parseText, undefined, {
|
|
136
|
+
bufferSize: getTreeSitterBufferSize(parseText),
|
|
41
137
|
});
|
|
42
138
|
}
|
|
43
139
|
const rawMatches = getCppScopeQuery().matches(tree.rootNode);
|
|
@@ -380,6 +476,12 @@ export function emitCppScopeCaptures(sourceText, filePath, cachedTree) {
|
|
|
380
476
|
}
|
|
381
477
|
}
|
|
382
478
|
}
|
|
479
|
+
// Structural receiver chain for a call whose receiver is itself an
|
|
480
|
+
// expression, so resolution can type it by folding over structure
|
|
481
|
+
// instead of re-parsing the receiver's source text. Self-gating: a
|
|
482
|
+
// non-call match, an absent receiver, or a chain with no nameable base
|
|
483
|
+
// all leave `grouped` untouched.
|
|
484
|
+
synthesizeReceiverChainCapture(grouped, nodeMap['@reference.receiver']);
|
|
383
485
|
out.push(grouped);
|
|
384
486
|
}
|
|
385
487
|
// ── Emit inheritance references for scope-resolution MRO / EXTENDS ──
|
|
@@ -398,8 +500,125 @@ export function emitCppScopeCaptures(sourceText, filePath, cachedTree) {
|
|
|
398
500
|
// bases per ISO C++ two-phase lookup.
|
|
399
501
|
detectCppDependentBases(tree.rootNode, filePath);
|
|
400
502
|
captureCppMemberLookupFacts(tree.rootNode, filePath);
|
|
503
|
+
out.push(...synthesizeCallableFlowCaptures(tree.rootNode, CPP_CALLABLE_CAPTURE_OPTIONS));
|
|
401
504
|
return out;
|
|
402
505
|
}
|
|
506
|
+
function cppFunctionDeclaratorSignature(node) {
|
|
507
|
+
const declarator = cppFindDescendantOfType(node, 'function_declarator');
|
|
508
|
+
const parameters = declarator?.childForFieldName('parameters');
|
|
509
|
+
if (parameters === null || parameters === undefined) {
|
|
510
|
+
return recoverCppMemberPointerSignature(node.text);
|
|
511
|
+
}
|
|
512
|
+
const parameterNodes = parameters.namedChildren.filter((child) => child !== null && child.type.includes('parameter_declaration'));
|
|
513
|
+
const hasEllipsis = parameters.children.some((child) => child.type === '...' || (!child.isNamed && child.text === '...')) || parameterNodes.some((parameter) => parameter.type === 'variadic_parameter_declaration');
|
|
514
|
+
const isVoidOnly = parameterNodes.length === 1 &&
|
|
515
|
+
parameterNodes[0].namedChildCount === 1 &&
|
|
516
|
+
parameterNodes[0].firstNamedChild?.text === 'void';
|
|
517
|
+
if (isVoidOnly) {
|
|
518
|
+
return { parameterCount: 0, parameterTypes: [], parameterTypeClasses: [] };
|
|
519
|
+
}
|
|
520
|
+
const parameterTypes = [];
|
|
521
|
+
const parameterTypeClasses = [];
|
|
522
|
+
for (const parameter of parameterNodes) {
|
|
523
|
+
if (parameter.type === 'variadic_parameter_declaration') {
|
|
524
|
+
parameterTypes.push('...');
|
|
525
|
+
parameterTypeClasses.push({
|
|
526
|
+
base: '...',
|
|
527
|
+
cv: 'unknown',
|
|
528
|
+
indirection: 'unknown',
|
|
529
|
+
pointerDepth: 0,
|
|
530
|
+
});
|
|
531
|
+
continue;
|
|
532
|
+
}
|
|
533
|
+
const rawType = parameter.childForFieldName('type')?.text ?? 'unknown';
|
|
534
|
+
const declaratorText = parameter.childForFieldName('declarator')?.text;
|
|
535
|
+
parameterTypes.push(normalizeCppParamType(rawType));
|
|
536
|
+
parameterTypeClasses.push(classifyCppParameterType(rawType, declaratorText, parameter.text));
|
|
537
|
+
}
|
|
538
|
+
if (hasEllipsis && !parameterTypes.includes('...')) {
|
|
539
|
+
parameterTypes.push('...');
|
|
540
|
+
parameterTypeClasses.push({
|
|
541
|
+
base: '...',
|
|
542
|
+
cv: 'unknown',
|
|
543
|
+
indirection: 'unknown',
|
|
544
|
+
pointerDepth: 0,
|
|
545
|
+
});
|
|
546
|
+
}
|
|
547
|
+
return {
|
|
548
|
+
...(hasEllipsis ? {} : { parameterCount: parameterNodes.length }),
|
|
549
|
+
parameterTypes,
|
|
550
|
+
parameterTypeClasses,
|
|
551
|
+
isConst: /\)\s*const(?:\s|$)/.test(declarator.text),
|
|
552
|
+
};
|
|
553
|
+
}
|
|
554
|
+
/**
|
|
555
|
+
* tree-sitter-cpp parses a non-const pointer-to-member variable such as
|
|
556
|
+
* `void (Base::*member)()` as nested call expressions (while the cv-qualified
|
|
557
|
+
* twin is a declaration). Recover the callable shape from the declarator text
|
|
558
|
+
* so `const`/non-`const` overload sets remain distinguishable.
|
|
559
|
+
*/
|
|
560
|
+
function recoverCppMemberPointerSignature(text) {
|
|
561
|
+
const match = text.match(/\(\s*[^()]*::\s*\*\s*[A-Za-z_]\w*\s*\)\s*\(([^()]*)\)\s*(const\b)?/);
|
|
562
|
+
if (match === null)
|
|
563
|
+
return undefined;
|
|
564
|
+
const rawParameters = match[1].trim();
|
|
565
|
+
const parameterCount = rawParameters === '' || rawParameters === 'void'
|
|
566
|
+
? 0
|
|
567
|
+
: splitTopLevelCppParameters(rawParameters).length;
|
|
568
|
+
return { parameterCount, isConst: match[2] !== undefined };
|
|
569
|
+
}
|
|
570
|
+
function splitTopLevelCppParameters(text) {
|
|
571
|
+
const out = [];
|
|
572
|
+
let start = 0;
|
|
573
|
+
let angleDepth = 0;
|
|
574
|
+
let parenDepth = 0;
|
|
575
|
+
let bracketDepth = 0;
|
|
576
|
+
for (let index = 0; index < text.length; index++) {
|
|
577
|
+
switch (text[index]) {
|
|
578
|
+
case '<':
|
|
579
|
+
angleDepth++;
|
|
580
|
+
break;
|
|
581
|
+
case '>':
|
|
582
|
+
angleDepth = Math.max(0, angleDepth - 1);
|
|
583
|
+
break;
|
|
584
|
+
case '(':
|
|
585
|
+
parenDepth++;
|
|
586
|
+
break;
|
|
587
|
+
case ')':
|
|
588
|
+
parenDepth = Math.max(0, parenDepth - 1);
|
|
589
|
+
break;
|
|
590
|
+
case '[':
|
|
591
|
+
bracketDepth++;
|
|
592
|
+
break;
|
|
593
|
+
case ']':
|
|
594
|
+
bracketDepth = Math.max(0, bracketDepth - 1);
|
|
595
|
+
break;
|
|
596
|
+
case ',':
|
|
597
|
+
if (angleDepth === 0 && parenDepth === 0 && bracketDepth === 0) {
|
|
598
|
+
out.push(text.slice(start, index).trim());
|
|
599
|
+
start = index + 1;
|
|
600
|
+
}
|
|
601
|
+
break;
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
out.push(text.slice(start).trim());
|
|
605
|
+
return out.filter((parameter) => parameter.length > 0);
|
|
606
|
+
}
|
|
607
|
+
function cppContainsNodeType(root, type) {
|
|
608
|
+
return cppFindDescendantOfType(root, type) !== null;
|
|
609
|
+
}
|
|
610
|
+
function cppFindDescendantOfType(root, type) {
|
|
611
|
+
const stack = [root];
|
|
612
|
+
while (stack.length > 0) {
|
|
613
|
+
const node = stack.pop();
|
|
614
|
+
if (node.type === type)
|
|
615
|
+
return node;
|
|
616
|
+
for (const child of node.namedChildren)
|
|
617
|
+
if (child !== null)
|
|
618
|
+
stack.push(child);
|
|
619
|
+
}
|
|
620
|
+
return null;
|
|
621
|
+
}
|
|
403
622
|
function extractCppDeclarationReturnType(fnNode) {
|
|
404
623
|
const typeNode = fnNode.childForFieldName('type');
|
|
405
624
|
if (typeNode === null)
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { perFileSet } from '../../import-resolvers/per-file-set.js';
|
|
1
2
|
import { isCppInlineNamespaceScope } from './inline-namespaces.js';
|
|
2
3
|
/**
|
|
3
4
|
* Per-file set of symbol names with file-local linkage.
|
|
@@ -235,24 +236,19 @@ export function isCppDefGloballyVisible(filePath, nodeId) {
|
|
|
235
236
|
* `parsedFiles` reference; the old `parsedFiles.find(...)` was therefore O(F)
|
|
236
237
|
* per edge → O(R·F) overall (at kernel scale the ~25–30k `.h` headers are
|
|
237
238
|
* classified C++, so this fires hard — the C twin in `c/static-linkage.ts`).
|
|
238
|
-
* Building the lookup once collapses it to O(R+F). `
|
|
239
|
-
* reclaimed with the pass (no cross-pass staleness;
|
|
240
|
-
* {@link clearFileLocalNames}).
|
|
239
|
+
* Building the lookup once collapses it to O(R+F). `perFileSet` keys on the
|
|
240
|
+
* array identity so it is reclaimed with the pass (no cross-pass staleness;
|
|
241
|
+
* mirrors {@link clearFileLocalNames}).
|
|
241
242
|
*/
|
|
242
|
-
const
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
for (const p of parsedFiles) {
|
|
249
|
-
if (!index.has(p.moduleScope))
|
|
250
|
-
index.set(p.moduleScope, p);
|
|
251
|
-
}
|
|
252
|
-
moduleScopeIndexByPass.set(parsedFiles, index);
|
|
243
|
+
const moduleScopeIndex = perFileSet((parsedFiles) => {
|
|
244
|
+
const index = new Map();
|
|
245
|
+
// First-wins to preserve `Array.find` semantics (returns the first match).
|
|
246
|
+
for (const p of parsedFiles) {
|
|
247
|
+
if (!index.has(p.moduleScope))
|
|
248
|
+
index.set(p.moduleScope, p);
|
|
253
249
|
}
|
|
254
250
|
return index;
|
|
255
|
-
}
|
|
251
|
+
});
|
|
256
252
|
export function expandCppWildcardNames(targetModuleScope, parsedFiles) {
|
|
257
253
|
const target = moduleScopeIndex(parsedFiles).get(targetModuleScope);
|
|
258
254
|
if (target === undefined)
|