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
|
@@ -1,100 +1,80 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Adapter from `(ParsedImport, WorkspaceIndex)` →
|
|
2
|
+
* Adapter from `(ParsedImport, WorkspaceIndex)` → the file(s) an import names.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* 3. Directory match (wildcard imports)
|
|
8
|
-
* 4. Progressive prefix stripping for non-standard layouts
|
|
4
|
+
* Delegates to `module-resolution.ts`, which resolves a Java import the way
|
|
5
|
+
* Java defines it: a fully-qualified type name looked up against the packages
|
|
6
|
+
* the workspace's files DECLARE.
|
|
9
7
|
*
|
|
10
|
-
*
|
|
8
|
+
* ## What #2953 replaced, and why path shape could not work
|
|
9
|
+
*
|
|
10
|
+
* This resolver used to turn dots into slashes and hunt for a file whose path
|
|
11
|
+
* ended that way — exact whole path, then any segment-suffix, then the first
|
|
12
|
+
* `.java` directly inside a matching directory — retrying the whole cascade
|
|
13
|
+
* with each leading segment stripped. Four legs, all describing where a file
|
|
14
|
+
* SITS rather than what it DECLARES.
|
|
15
|
+
*
|
|
16
|
+
* Path shape is a convention, so it mostly worked, and failed hardest on the
|
|
17
|
+
* case that matters: it had no way to tell an import of something outside the
|
|
18
|
+
* repository from one inside it. `java.util.List` became `util/List`, then
|
|
19
|
+
* `List`, and bound to any `List.java` anywhere in the tree — a fabricated
|
|
20
|
+
* IMPORTS edge at full confidence, for an import naming a JDK class. Every JDK
|
|
21
|
+
* and third-party import in a repository was a candidate.
|
|
22
|
+
*
|
|
23
|
+
* Two secondary defects went with it, both consequences of resolving by shape:
|
|
24
|
+
*
|
|
25
|
+
* - a wildcard `import com.example.*;` answered with ONE arbitrary file — the
|
|
26
|
+
* first `.java` in the package directory in `allFilePaths` iteration order,
|
|
27
|
+
* which the previous header documented at length as being decided by "a
|
|
28
|
+
* property of the file list, not of the import". It now answers with every
|
|
29
|
+
* file declaring that package, which is what the import actually names.
|
|
30
|
+
* - a file's location and its package were assumed to agree. They need not:
|
|
31
|
+
* `weird/path/User.java` declaring `package com.example;` is importable as
|
|
32
|
+
* `com.example.User`, and `com/example/User.java` declaring nothing is in
|
|
33
|
+
* the default package and importable as nothing at all. Both now resolve
|
|
34
|
+
* correctly, because the declaration is what is read.
|
|
35
|
+
*
|
|
36
|
+
* The package declaration was already being extracted during the parse pass and
|
|
37
|
+
* has been reachable here through `getJavaPackageFact` the whole time; nothing
|
|
38
|
+
* read it. So this costs no new I/O — no `pom.xml`, no `build.gradle`, no
|
|
39
|
+
* source-root inference. The workspace describes itself.
|
|
40
|
+
*/
|
|
41
|
+
import { perFileSet } from '../../import-resolvers/per-file-set.js';
|
|
42
|
+
import { getJavaPackageFact } from './package-facts.js';
|
|
43
|
+
import { buildJavaPackageIndex, resolveJavaModule, } from './module-resolution.js';
|
|
44
|
+
/**
|
|
45
|
+
* The package index, built once per pass and read by every import.
|
|
46
|
+
*
|
|
47
|
+
* Keyed on the `parsedFiles` array the orchestrator already threads through the
|
|
48
|
+
* pass, like PHP's `filesByDirectory` and Python's `parsedFileByPath`. The
|
|
49
|
+
* instrument that can see this memo fail counts element reads on that array —
|
|
50
|
+
* `countedParsedFiles` in `test/helpers/counting-file-set.ts`, asserted for
|
|
51
|
+
* every language by `import-target-index-reuse.contract.test.ts`.
|
|
11
52
|
*/
|
|
53
|
+
const getJavaPackageIndex = perFileSet((parsedFiles) => buildJavaPackageIndex(parsedFiles, getJavaPackageFact));
|
|
12
54
|
export function resolveJavaImportTarget(parsedImport, workspaceIndex) {
|
|
13
|
-
const ctx = workspaceIndex;
|
|
14
|
-
if (ctx ===
|
|
15
|
-
typeof ctx.fromFile !== 'string' ||
|
|
16
|
-
!(ctx.allFilePaths instanceof Set)) {
|
|
55
|
+
const ctx = narrowContext(workspaceIndex);
|
|
56
|
+
if (ctx === null)
|
|
17
57
|
return null;
|
|
18
|
-
}
|
|
19
58
|
if (parsedImport.kind === 'dynamic-unresolved')
|
|
20
59
|
return null;
|
|
21
60
|
if (parsedImport.targetRaw === null || parsedImport.targetRaw === '')
|
|
22
61
|
return null;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
continue;
|
|
40
|
-
if (f === `${pathLike}.java`) {
|
|
41
|
-
exactFile = raw;
|
|
42
|
-
break;
|
|
43
|
-
}
|
|
44
|
-
if (suffixFile === null && f.endsWith(`${suffix}.java`)) {
|
|
45
|
-
suffixFile = raw;
|
|
46
|
-
}
|
|
47
|
-
if (directoryChild === null) {
|
|
48
|
-
const atRoot = f.startsWith(dirPrefix);
|
|
49
|
-
const atNested = f.includes(suffixDirPrefix);
|
|
50
|
-
if (atRoot || atNested) {
|
|
51
|
-
const idx = atRoot ? 0 : f.indexOf(suffixDirPrefix) + 1;
|
|
52
|
-
const after = f.slice(idx + dirPrefix.length);
|
|
53
|
-
if (after.length > 0 && !after.includes('/')) {
|
|
54
|
-
directoryChild = raw;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
if (exactFile !== null)
|
|
60
|
-
return exactFile;
|
|
61
|
-
if (suffixFile !== null)
|
|
62
|
-
return suffixFile;
|
|
63
|
-
if (directoryChild !== null)
|
|
64
|
-
return directoryChild;
|
|
65
|
-
// Progressive prefix stripping — handles `import com.example.User;`
|
|
66
|
-
// in a repo laid out `User.java` (no `com/example/` prefix).
|
|
67
|
-
const segments = pathLike.split('/').filter(Boolean);
|
|
68
|
-
for (let skip = 1; skip < segments.length; skip++) {
|
|
69
|
-
const tail = segments.slice(skip).join('/');
|
|
70
|
-
if (tail === '')
|
|
71
|
-
continue;
|
|
72
|
-
const tailFile = `${tail}.java`;
|
|
73
|
-
const tailSuffix = `/${tailFile}`;
|
|
74
|
-
const tailDir = `${tail}/`;
|
|
75
|
-
const tailSuffixDir = `/${tailDir}`;
|
|
76
|
-
let tailDirectChild = null;
|
|
77
|
-
for (const raw of ctx.allFilePaths) {
|
|
78
|
-
const f = raw.replace(/\\/g, '/');
|
|
79
|
-
if (!f.endsWith('.java'))
|
|
80
|
-
continue;
|
|
81
|
-
if (f === tailFile)
|
|
82
|
-
return raw;
|
|
83
|
-
if (f.endsWith(tailSuffix))
|
|
84
|
-
return raw;
|
|
85
|
-
if (tailDirectChild === null) {
|
|
86
|
-
const atRoot = f.startsWith(tailDir);
|
|
87
|
-
const atNested = f.includes(tailSuffixDir);
|
|
88
|
-
if (atRoot || atNested) {
|
|
89
|
-
const idx = atRoot ? 0 : f.indexOf(tailSuffixDir) + 1;
|
|
90
|
-
const after = f.slice(idx + tailDir.length);
|
|
91
|
-
if (after.length > 0 && !after.includes('/'))
|
|
92
|
-
tailDirectChild = raw;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
if (tailDirectChild !== null)
|
|
97
|
-
return tailDirectChild;
|
|
62
|
+
const parsedFiles = ctx.parsedFiles;
|
|
63
|
+
if (parsedFiles === undefined || parsedFiles.length === 0)
|
|
64
|
+
return null;
|
|
65
|
+
return resolveJavaModule(parsedImport.targetRaw, getJavaPackageIndex(parsedFiles));
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* `WorkspaceIndex` is an opaque `unknown` placeholder in the shared contract;
|
|
69
|
+
* the orchestrator hands us a `JavaResolveContext`-shaped object. Narrow
|
|
70
|
+
* structurally rather than via a cast chain so unexpected shapes fail cleanly.
|
|
71
|
+
*/
|
|
72
|
+
function narrowContext(workspaceIndex) {
|
|
73
|
+
const ctx = workspaceIndex;
|
|
74
|
+
if (ctx === undefined ||
|
|
75
|
+
typeof ctx.fromFile !== 'string' ||
|
|
76
|
+
!(ctx.allFilePaths instanceof Set)) {
|
|
77
|
+
return null;
|
|
98
78
|
}
|
|
99
|
-
return
|
|
79
|
+
return ctx;
|
|
100
80
|
}
|
|
@@ -52,10 +52,11 @@ export function interpretJavaImport(captures) {
|
|
|
52
52
|
// `import static com.example.Utils.*;`
|
|
53
53
|
// The source is the class path (e.g. `com.example.Utils`).
|
|
54
54
|
// Resolution should target the class file, not a wildcard directory
|
|
55
|
-
// scan —
|
|
55
|
+
// scan — keeping the type path unstarred also distinguishes it from a
|
|
56
|
+
// package wildcard when a same-named package exists.
|
|
56
57
|
return {
|
|
57
58
|
kind: 'wildcard',
|
|
58
|
-
targetRaw: sourceCap.text
|
|
59
|
+
targetRaw: sourceCap.text,
|
|
59
60
|
};
|
|
60
61
|
}
|
|
61
62
|
default:
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Java import resolution against DECLARED packages (#2953).
|
|
3
|
+
*
|
|
4
|
+
* A Java import is a fully-qualified type name, not a path. `com.example.model.User`
|
|
5
|
+
* names the type `User` in the package `com.example.model`, and what places a
|
|
6
|
+
* file in that package is its own `package` declaration — not where it sits on
|
|
7
|
+
* disk. A file at `weird/path/User.java` declaring `package com.example.model;`
|
|
8
|
+
* IS `com.example.model.User`; a file at `com/example/model/User.java` declaring
|
|
9
|
+
* nothing is in the DEFAULT package and cannot be imported at all.
|
|
10
|
+
*
|
|
11
|
+
* The previous resolver worked the other way round: it turned dots into slashes
|
|
12
|
+
* and looked for a file whose path ended that way, retrying with each leading
|
|
13
|
+
* segment stripped. Path shape is a convention, so that mostly worked — and
|
|
14
|
+
* failed in the one case that matters most, because it could not tell an import
|
|
15
|
+
* of something outside the repository from one inside it. `java.util.List`
|
|
16
|
+
* became `util/List`, then `List`, and bound to any `List.java` in the tree.
|
|
17
|
+
* Every JDK and third-party import in a repo was a candidate for a fabricated
|
|
18
|
+
* IMPORTS edge at full confidence.
|
|
19
|
+
*
|
|
20
|
+
* The fix needs no new I/O. Every Java file's `package` declaration is already
|
|
21
|
+
* extracted during the parse pass and available here through
|
|
22
|
+
* `getJavaPackageFact` — the resolver simply never read it. So resolution
|
|
23
|
+
* becomes a lookup in an index the workspace already knows how to describe:
|
|
24
|
+
*
|
|
25
|
+
* `com.example.model.User` -> package `com.example.model` declares `User`
|
|
26
|
+
* `java.util.List` -> no file declares package `java.util` -> null
|
|
27
|
+
*
|
|
28
|
+
* `null` for the second is the complete and correct answer: the JDK is not in
|
|
29
|
+
* this repository, so there is no in-repo file the import could name.
|
|
30
|
+
*/
|
|
31
|
+
import type { ParsedFile } from '../../../../_shared/index.js';
|
|
32
|
+
import type { JvmPackageFact } from '../jvm/package-facts.js';
|
|
33
|
+
export interface JavaPackageIndex {
|
|
34
|
+
/** Declared package -> importable type name -> the file declaring it. */
|
|
35
|
+
readonly typesByPackage: ReadonlyMap<string, ReadonlyMap<string, string>>;
|
|
36
|
+
/** Declared package -> every file declaring it, for wildcard imports. */
|
|
37
|
+
readonly filesByPackage: ReadonlyMap<string, readonly string[]>;
|
|
38
|
+
/**
|
|
39
|
+
* Files whose `package` header could not be read (a malformed header — see
|
|
40
|
+
* `extractJvmPackageFact`). They are in no package, so nothing can import
|
|
41
|
+
* them; counted so the gap is observable rather than silent.
|
|
42
|
+
*/
|
|
43
|
+
readonly unreadablePackageFiles: number;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Index the workspace by what each file DECLARES.
|
|
47
|
+
*
|
|
48
|
+
* The importable type name is the file's base name, which is not a convention
|
|
49
|
+
* being relied on but the rule the language enforces: a type importable from
|
|
50
|
+
* another package must be `public`, and a public type must live in a file named
|
|
51
|
+
* after it. Additional package-private top-level types in the same file are
|
|
52
|
+
* deliberately not indexed — they are unimportable from elsewhere, so an import
|
|
53
|
+
* naming one is not a resolution this should find.
|
|
54
|
+
*/
|
|
55
|
+
export declare function buildJavaPackageIndex(parsedFiles: readonly ParsedFile[], packageOf: (filePath: string) => JvmPackageFact | undefined): JavaPackageIndex;
|
|
56
|
+
/**
|
|
57
|
+
* Resolve one import specifier to the file(s) it names, or `null`.
|
|
58
|
+
*
|
|
59
|
+
* A wildcard answers with every file in the package; a type import answers with
|
|
60
|
+
* one file. Anything the workspace does not declare answers `null`.
|
|
61
|
+
*/
|
|
62
|
+
export declare function resolveJavaModule(targetRaw: string, index: JavaPackageIndex): string | readonly string[] | null;
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Java import resolution against DECLARED packages (#2953).
|
|
3
|
+
*
|
|
4
|
+
* A Java import is a fully-qualified type name, not a path. `com.example.model.User`
|
|
5
|
+
* names the type `User` in the package `com.example.model`, and what places a
|
|
6
|
+
* file in that package is its own `package` declaration — not where it sits on
|
|
7
|
+
* disk. A file at `weird/path/User.java` declaring `package com.example.model;`
|
|
8
|
+
* IS `com.example.model.User`; a file at `com/example/model/User.java` declaring
|
|
9
|
+
* nothing is in the DEFAULT package and cannot be imported at all.
|
|
10
|
+
*
|
|
11
|
+
* The previous resolver worked the other way round: it turned dots into slashes
|
|
12
|
+
* and looked for a file whose path ended that way, retrying with each leading
|
|
13
|
+
* segment stripped. Path shape is a convention, so that mostly worked — and
|
|
14
|
+
* failed in the one case that matters most, because it could not tell an import
|
|
15
|
+
* of something outside the repository from one inside it. `java.util.List`
|
|
16
|
+
* became `util/List`, then `List`, and bound to any `List.java` in the tree.
|
|
17
|
+
* Every JDK and third-party import in a repo was a candidate for a fabricated
|
|
18
|
+
* IMPORTS edge at full confidence.
|
|
19
|
+
*
|
|
20
|
+
* The fix needs no new I/O. Every Java file's `package` declaration is already
|
|
21
|
+
* extracted during the parse pass and available here through
|
|
22
|
+
* `getJavaPackageFact` — the resolver simply never read it. So resolution
|
|
23
|
+
* becomes a lookup in an index the workspace already knows how to describe:
|
|
24
|
+
*
|
|
25
|
+
* `com.example.model.User` -> package `com.example.model` declares `User`
|
|
26
|
+
* `java.util.List` -> no file declares package `java.util` -> null
|
|
27
|
+
*
|
|
28
|
+
* `null` for the second is the complete and correct answer: the JDK is not in
|
|
29
|
+
* this repository, so there is no in-repo file the import could name.
|
|
30
|
+
*/
|
|
31
|
+
const EMPTY_INDEX = {
|
|
32
|
+
typesByPackage: new Map(),
|
|
33
|
+
filesByPackage: new Map(),
|
|
34
|
+
unreadablePackageFiles: 0,
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Index the workspace by what each file DECLARES.
|
|
38
|
+
*
|
|
39
|
+
* The importable type name is the file's base name, which is not a convention
|
|
40
|
+
* being relied on but the rule the language enforces: a type importable from
|
|
41
|
+
* another package must be `public`, and a public type must live in a file named
|
|
42
|
+
* after it. Additional package-private top-level types in the same file are
|
|
43
|
+
* deliberately not indexed — they are unimportable from elsewhere, so an import
|
|
44
|
+
* naming one is not a resolution this should find.
|
|
45
|
+
*/
|
|
46
|
+
export function buildJavaPackageIndex(parsedFiles, packageOf) {
|
|
47
|
+
if (parsedFiles.length === 0)
|
|
48
|
+
return EMPTY_INDEX;
|
|
49
|
+
const typesByPackage = new Map();
|
|
50
|
+
const filesByPackage = new Map();
|
|
51
|
+
let unreadablePackageFiles = 0;
|
|
52
|
+
for (const parsed of parsedFiles) {
|
|
53
|
+
const filePath = parsed.filePath;
|
|
54
|
+
const fact = packageOf(filePath);
|
|
55
|
+
if (fact === undefined)
|
|
56
|
+
continue;
|
|
57
|
+
if (fact.status !== 'known') {
|
|
58
|
+
unreadablePackageFiles++;
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
// The default package (`''`) is indexed like any other so a workspace of
|
|
62
|
+
// package-less files still answers its own wildcards, but Java forbids
|
|
63
|
+
// importing FROM it, which `resolveJavaModule` enforces rather than
|
|
64
|
+
// pretending here that the entry does not exist.
|
|
65
|
+
const packageName = fact.packageName;
|
|
66
|
+
const typeName = baseTypeName(filePath);
|
|
67
|
+
if (typeName !== null) {
|
|
68
|
+
let types = typesByPackage.get(packageName);
|
|
69
|
+
if (types === undefined) {
|
|
70
|
+
types = new Map();
|
|
71
|
+
typesByPackage.set(packageName, types);
|
|
72
|
+
}
|
|
73
|
+
// First declaration wins. Two files claiming the same package+type is not
|
|
74
|
+
// legal Java; picking either is as correct as the input allows.
|
|
75
|
+
if (!types.has(typeName))
|
|
76
|
+
types.set(typeName, filePath);
|
|
77
|
+
}
|
|
78
|
+
const files = filesByPackage.get(packageName);
|
|
79
|
+
if (files === undefined)
|
|
80
|
+
filesByPackage.set(packageName, [filePath]);
|
|
81
|
+
else
|
|
82
|
+
files.push(filePath);
|
|
83
|
+
}
|
|
84
|
+
return { typesByPackage, filesByPackage, unreadablePackageFiles };
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Resolve one import specifier to the file(s) it names, or `null`.
|
|
88
|
+
*
|
|
89
|
+
* A wildcard answers with every file in the package; a type import answers with
|
|
90
|
+
* one file. Anything the workspace does not declare answers `null`.
|
|
91
|
+
*/
|
|
92
|
+
export function resolveJavaModule(targetRaw, index) {
|
|
93
|
+
if (targetRaw === '')
|
|
94
|
+
return null;
|
|
95
|
+
if (targetRaw.endsWith('.*')) {
|
|
96
|
+
const stem = targetRaw.slice(0, -2);
|
|
97
|
+
const inPackage = index.filesByPackage.get(stem);
|
|
98
|
+
// Only package wildcards retain `.*`. Static wildcards are interpreted with
|
|
99
|
+
// the owning type path so a same-named package cannot capture the import.
|
|
100
|
+
return inPackage !== undefined && stem !== '' ? inPackage : null;
|
|
101
|
+
}
|
|
102
|
+
return resolveTypeName(targetRaw, index);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Split a qualified name into the longest DECLARED package prefix and the type
|
|
106
|
+
* that follows it.
|
|
107
|
+
*
|
|
108
|
+
* Longest-first is what makes both of these land correctly without a rule about
|
|
109
|
+
* capitalization, which Java does not actually enforce:
|
|
110
|
+
*
|
|
111
|
+
* `com.example.model.User` -> package `com.example.model`, type `User`
|
|
112
|
+
* `com.example.Utils.method` -> package `com.example`, type `Utils`
|
|
113
|
+
*
|
|
114
|
+
* The second is a static member import; its trailing segments name members
|
|
115
|
+
* inside the type, and the file the import binds to is the type's.
|
|
116
|
+
*/
|
|
117
|
+
function resolveTypeName(qualified, index) {
|
|
118
|
+
const parts = qualified.split('.').filter((part) => part !== '');
|
|
119
|
+
// A single bare segment names a type in the default package, which Java
|
|
120
|
+
// forbids importing. Nothing to resolve, and nothing to guess at.
|
|
121
|
+
if (parts.length < 2)
|
|
122
|
+
return null;
|
|
123
|
+
for (let split = parts.length - 1; split >= 1; split--) {
|
|
124
|
+
const packageName = parts.slice(0, split).join('.');
|
|
125
|
+
const types = index.typesByPackage.get(packageName);
|
|
126
|
+
if (types === undefined)
|
|
127
|
+
continue;
|
|
128
|
+
const file = types.get(parts[split]);
|
|
129
|
+
if (file !== undefined)
|
|
130
|
+
return file;
|
|
131
|
+
}
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
/** `src/main/java/com/example/User.java` -> `User`. */
|
|
135
|
+
function baseTypeName(filePath) {
|
|
136
|
+
const slash = filePath.replace(/\\/g, '/').lastIndexOf('/');
|
|
137
|
+
const base = slash === -1 ? filePath : filePath.slice(slash + 1);
|
|
138
|
+
if (!base.endsWith('.java'))
|
|
139
|
+
return null;
|
|
140
|
+
const name = base.slice(0, -'.java'.length);
|
|
141
|
+
return name === '' ? null : name;
|
|
142
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type JvmPackageFact, type JvmPackageSyntaxNode } from '../jvm/package-facts.js';
|
|
2
|
+
export declare const clearJavaPackageFacts: () => void;
|
|
3
|
+
export declare const captureJavaPackageFact: (filePath: string, root: JvmPackageSyntaxNode) => void;
|
|
4
|
+
export declare const setJavaPackageFact: (filePath: string, fact: JvmPackageFact) => void;
|
|
5
|
+
export declare const getJavaPackageFact: (filePath: string) => JvmPackageFact | undefined;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { createJvmPackageFactStore, } from '../jvm/package-facts.js';
|
|
2
|
+
const javaPackageFacts = createJvmPackageFactStore({
|
|
3
|
+
packageNodeType: 'package_declaration',
|
|
4
|
+
packageNameNodeTypes: ['scoped_identifier', 'identifier'],
|
|
5
|
+
});
|
|
6
|
+
export const clearJavaPackageFacts = () => javaPackageFacts.clear();
|
|
7
|
+
export const captureJavaPackageFact = (filePath, root) => javaPackageFacts.capture(filePath, root);
|
|
8
|
+
export const setJavaPackageFact = (filePath, fact) => javaPackageFacts.set(filePath, fact);
|
|
9
|
+
export const getJavaPackageFact = (filePath) => javaPackageFacts.get(filePath);
|
|
@@ -1,17 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* Java package-scope implicit visibility.
|
|
3
|
-
*
|
|
4
|
-
* Classes in the same Java package see each other without explicit
|
|
5
|
-
* `import` statements. This hook groups files by `package` declaration,
|
|
6
|
-
* then injects cross-file class defs into each file's module-scope
|
|
7
|
-
* `bindingAugmentations` and mirrors type-bindings across same-package
|
|
8
|
-
* files — the Java equivalent of C#'s `populateNamespaceSiblings`.
|
|
9
|
-
*/
|
|
10
|
-
import type { ParsedFile } from '../../../../_shared/index.js';
|
|
11
|
-
import type { ScopeResolutionIndexes } from '../../model/scope-resolution-indexes.js';
|
|
12
|
-
export declare function populateJavaPackageSiblings(parsedFiles: readonly ParsedFile[], indexes: ScopeResolutionIndexes, ctx: {
|
|
1
|
+
export declare const populateJavaPackageSiblings: (parsedFiles: readonly import('../../../../_shared/index.js').ParsedFile[], indexes: import("../../model/scope-resolution-indexes.js").ScopeResolutionIndexes, ctx: {
|
|
13
2
|
readonly fileContents: ReadonlyMap<string, string>;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
};
|
|
17
|
-
}): void;
|
|
3
|
+
}) => void;
|
|
4
|
+
export declare const isJavaPackageSiblingVisibilityIncomplete: (filePath: string) => boolean;
|
|
@@ -1,147 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
*/
|
|
10
|
-
import { isClassLike } from '../../scope-resolution/scope/walkers.js';
|
|
11
|
-
import { getJavaParser } from './query.js';
|
|
12
|
-
import { parseSourceSafe, ParseTimeoutError } from '../../../tree-sitter/safe-parse.js';
|
|
13
|
-
import { logger } from '../../../logger.js';
|
|
14
|
-
function extractPackageName(content, filePath, cachedTree) {
|
|
15
|
-
let tree = cachedTree;
|
|
16
|
-
if (tree === undefined) {
|
|
17
|
-
try {
|
|
18
|
-
tree = parseSourceSafe(getJavaParser(), content);
|
|
19
|
-
}
|
|
20
|
-
catch (err) {
|
|
21
|
-
if (err instanceof ParseTimeoutError) {
|
|
22
|
-
// Degrade to "no package" so a single pathological file doesn't abort
|
|
23
|
-
// same-package sibling injection for the whole run.
|
|
24
|
-
logger.warn({ file: filePath }, 'java package-siblings: parse timed out, treating as no package');
|
|
25
|
-
return '';
|
|
26
|
-
}
|
|
27
|
-
throw err;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
for (const child of tree.rootNode.namedChildren) {
|
|
31
|
-
if (child.type === 'package_declaration') {
|
|
32
|
-
const scoped = child.namedChildren.find((c) => c.type === 'scoped_identifier' || c.type === 'identifier');
|
|
33
|
-
return scoped?.text ?? '';
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
return '';
|
|
37
|
-
}
|
|
38
|
-
export function populateJavaPackageSiblings(parsedFiles, indexes, ctx) {
|
|
39
|
-
const buckets = new Map();
|
|
40
|
-
for (const parsed of parsedFiles) {
|
|
41
|
-
const content = ctx.fileContents.get(parsed.filePath);
|
|
42
|
-
if (content === undefined)
|
|
43
|
-
continue;
|
|
44
|
-
const pkg = extractPackageName(content, parsed.filePath, ctx.treeCache?.get(parsed.filePath));
|
|
45
|
-
let bucket = buckets.get(pkg);
|
|
46
|
-
if (bucket === undefined) {
|
|
47
|
-
bucket = { parsed: [], moduleScopes: [] };
|
|
48
|
-
buckets.set(pkg, bucket);
|
|
49
|
-
}
|
|
50
|
-
bucket.parsed.push(parsed);
|
|
51
|
-
const ms = parsed.scopes.find((s) => s.kind === 'Module');
|
|
52
|
-
if (ms !== undefined) {
|
|
53
|
-
bucket.moduleScopes.push({ filePath: parsed.filePath, scope: ms });
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
const augmentations = indexes.bindingAugmentations;
|
|
57
|
-
const MAX_PACKAGE_FILES = 500;
|
|
58
|
-
for (const bucket of buckets.values()) {
|
|
59
|
-
if (bucket.moduleScopes.length < 2)
|
|
60
|
-
continue;
|
|
61
|
-
if (bucket.moduleScopes.length > MAX_PACKAGE_FILES) {
|
|
62
|
-
logger.warn(`[java-package-siblings] skipping package with ${bucket.moduleScopes.length} files (cap=${MAX_PACKAGE_FILES}); same-package implicit visibility disabled for this package`);
|
|
63
|
-
continue;
|
|
64
|
-
}
|
|
65
|
-
const classDefs = [];
|
|
66
|
-
for (const parsed of bucket.parsed) {
|
|
67
|
-
const moduleScope = parsed.scopes.find((s) => s.kind === 'Module');
|
|
68
|
-
const moduleScopeId = moduleScope?.id;
|
|
69
|
-
for (const scope of parsed.scopes) {
|
|
70
|
-
if (scope.kind !== 'Class')
|
|
71
|
-
continue;
|
|
72
|
-
if (scope.parent !== moduleScopeId)
|
|
73
|
-
continue;
|
|
74
|
-
for (const def of scope.ownedDefs) {
|
|
75
|
-
if (isClassLike(def.type)) {
|
|
76
|
-
classDefs.push({ def, filePath: parsed.filePath });
|
|
77
|
-
break;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
for (const { filePath, scope } of bucket.moduleScopes) {
|
|
83
|
-
let scopeAug = augmentations.get(scope.id);
|
|
84
|
-
if (scopeAug === undefined) {
|
|
85
|
-
scopeAug = new Map();
|
|
86
|
-
augmentations.set(scope.id, scopeAug);
|
|
87
|
-
}
|
|
88
|
-
const candidates = classDefs.filter((d) => d.filePath !== filePath);
|
|
89
|
-
const proximityCache = new Map();
|
|
90
|
-
for (const c of candidates) {
|
|
91
|
-
if (!proximityCache.has(c.filePath)) {
|
|
92
|
-
proximityCache.set(c.filePath, sharedSegmentCount(c.filePath, filePath));
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
const sorted = candidates.sort((a, b) => (proximityCache.get(b.filePath) ?? 0) - (proximityCache.get(a.filePath) ?? 0));
|
|
96
|
-
const injectedIds = new Set();
|
|
97
|
-
for (const { def } of sorted) {
|
|
98
|
-
if (injectedIds.has(def.nodeId))
|
|
99
|
-
continue;
|
|
100
|
-
const qn = def.qualifiedName;
|
|
101
|
-
if (qn === undefined)
|
|
102
|
-
continue;
|
|
103
|
-
injectedIds.add(def.nodeId);
|
|
104
|
-
const simpleName = qn.includes('.') ? qn.slice(qn.lastIndexOf('.') + 1) : qn;
|
|
105
|
-
let list = scopeAug.get(simpleName);
|
|
106
|
-
if (list === undefined) {
|
|
107
|
-
list = [];
|
|
108
|
-
scopeAug.set(simpleName, list);
|
|
109
|
-
}
|
|
110
|
-
list.push({ def, origin: 'namespace' });
|
|
111
|
-
}
|
|
112
|
-
const tb = scope.typeBindings;
|
|
113
|
-
for (const sibling of bucket.moduleScopes) {
|
|
114
|
-
if (sibling.filePath === filePath)
|
|
115
|
-
continue;
|
|
116
|
-
for (const [name, ref] of sibling.scope.typeBindings) {
|
|
117
|
-
if (tb.has(name))
|
|
118
|
-
continue;
|
|
119
|
-
tb.set(name, ref);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
for (const sibParsed of bucket.parsed) {
|
|
123
|
-
if (sibParsed.filePath === filePath)
|
|
124
|
-
continue;
|
|
125
|
-
for (const sibScope of sibParsed.scopes) {
|
|
126
|
-
if (sibScope.kind !== 'Class')
|
|
127
|
-
continue;
|
|
128
|
-
for (const [name, ref] of sibScope.typeBindings) {
|
|
129
|
-
if (ref.source === 'self')
|
|
130
|
-
continue;
|
|
131
|
-
if (tb.has(name))
|
|
132
|
-
continue;
|
|
133
|
-
tb.set(name, ref);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
function sharedSegmentCount(a, b) {
|
|
141
|
-
const sa = a.replace(/\\/g, '/').split('/');
|
|
142
|
-
const sb = b.replace(/\\/g, '/').split('/');
|
|
143
|
-
let i = 0;
|
|
144
|
-
while (i < sa.length && i < sb.length && sa[i] === sb[i])
|
|
145
|
-
i++;
|
|
146
|
-
return i;
|
|
147
|
-
}
|
|
1
|
+
import { createJvmPackageSiblingVisibility } from '../jvm/package-siblings.js';
|
|
2
|
+
import { getJavaPackageFact } from './package-facts.js';
|
|
3
|
+
const javaPackageSiblingVisibility = createJvmPackageSiblingVisibility({
|
|
4
|
+
languageLabel: 'java',
|
|
5
|
+
getPackageFact: getJavaPackageFact,
|
|
6
|
+
});
|
|
7
|
+
export const populateJavaPackageSiblings = javaPackageSiblingVisibility.populateNamespaceSiblings;
|
|
8
|
+
export const isJavaPackageSiblingVisibilityIncomplete = javaPackageSiblingVisibility.isVisibilityIncomplete;
|
|
@@ -37,27 +37,63 @@ const JAVA_SCOPE_QUERY = `
|
|
|
37
37
|
(record_declaration) @scope.class
|
|
38
38
|
(annotation_type_declaration) @scope.class
|
|
39
39
|
|
|
40
|
+
;; Anonymous class body: \`new Runnable() { public void run() {} }\`.
|
|
41
|
+
;; Without its own scope, a method's auto-hoist (scope-extractor.ts) has
|
|
42
|
+
;; nowhere to stop and leaks the name past the anonymous class into the
|
|
43
|
+
;; enclosing scope -- the same failure mode fixed for TS/JS object
|
|
44
|
+
;; literals (#2545).
|
|
45
|
+
(object_creation_expression
|
|
46
|
+
(class_body) @scope.class)
|
|
47
|
+
|
|
48
|
+
;; Enum constant body: \`enum E { A { public void hook() {} } }\` --
|
|
49
|
+
;; javac's other anonymous-class shape (E$N), same scope-boundary need
|
|
50
|
+
;; and same class_body anchor (#2555).
|
|
51
|
+
(enum_constant
|
|
52
|
+
body: (class_body) @scope.class)
|
|
53
|
+
|
|
40
54
|
(method_declaration) @scope.function
|
|
41
55
|
(constructor_declaration) @scope.function
|
|
56
|
+
(compact_constructor_declaration) @scope.function
|
|
42
57
|
|
|
43
58
|
;; Declarations — types
|
|
59
|
+
;; Optional-quantifier capture rather than a second pattern: a separate rule
|
|
60
|
+
;; would make every GENERIC declaration match twice under one def id, leaving
|
|
61
|
+
;; match order to decide which twin kept the parameters.
|
|
44
62
|
(class_declaration
|
|
45
|
-
name: (identifier) @declaration.name
|
|
63
|
+
name: (identifier) @declaration.name
|
|
64
|
+
type_parameters: (type_parameters)? @declaration.type-parameters) @declaration.class
|
|
46
65
|
|
|
47
66
|
(interface_declaration
|
|
48
|
-
name: (identifier) @declaration.name
|
|
67
|
+
name: (identifier) @declaration.name
|
|
68
|
+
type_parameters: (type_parameters)? @declaration.type-parameters) @declaration.interface
|
|
49
69
|
|
|
50
70
|
(enum_declaration
|
|
51
71
|
name: (identifier) @declaration.name) @declaration.enum
|
|
52
72
|
|
|
53
73
|
(record_declaration
|
|
54
|
-
name: (identifier) @declaration.name
|
|
74
|
+
name: (identifier) @declaration.name
|
|
75
|
+
type_parameters: (type_parameters)? @declaration.type-parameters) @declaration.record
|
|
55
76
|
|
|
56
77
|
(annotation_type_declaration
|
|
57
78
|
name: (identifier) @declaration.name) @declaration.class
|
|
58
79
|
|
|
80
|
+
;; Class annotation syntax is carried to post-resolution enrichment. Keeping
|
|
81
|
+
;; this in the existing scope query avoids a second AST build/traversal.
|
|
82
|
+
(class_declaration
|
|
83
|
+
(modifiers
|
|
84
|
+
[
|
|
85
|
+
(marker_annotation name: (_) @class-annotation.name)
|
|
86
|
+
(annotation name: (_) @class-annotation.name)
|
|
87
|
+
])) @class-annotation.class
|
|
88
|
+
|
|
59
89
|
;; Declarations — methods / constructors
|
|
90
|
+
;;
|
|
91
|
+
;; A generic METHOD's parameters are read for the same reason a generic type's
|
|
92
|
+
;; are (#2912 review): \`<T> boolean runAny(Validator<T> v)\` writes a receiver
|
|
93
|
+
;; whose argument is a type VARIABLE, and a pass that cannot tell that from a
|
|
94
|
+
;; concrete type prunes every implementor from the call's dispatch fan-out.
|
|
60
95
|
(method_declaration
|
|
96
|
+
type_parameters: (type_parameters)? @declaration.type-parameters
|
|
61
97
|
name: (identifier) @declaration.name) @declaration.method
|
|
62
98
|
|
|
63
99
|
(constructor_declaration
|