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,132 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adapter from `(ParsedImport, WorkspaceIndex)` to Kotlin declared-package
|
|
3
|
+
* resolution. Package facts and module bindings are already present on the
|
|
4
|
+
* parsed workspace, so this performs no source I/O and no path inference.
|
|
5
|
+
*/
|
|
6
|
+
import { perFileSet } from '../../import-resolvers/per-file-set.js';
|
|
7
|
+
import { getKotlinPackageFact } from './package-facts.js';
|
|
8
|
+
import { buildKotlinPackageIndex, resolveKotlinModule, } from './module-resolution.js';
|
|
9
|
+
const getKotlinPackageIndex = perFileSet((parsedFiles) => buildKotlinPackageIndex(parsedFiles, getKotlinPackageFact));
|
|
1
10
|
export function resolveKotlinImportTarget(parsedImport, workspaceIndex) {
|
|
2
|
-
const ctx = workspaceIndex;
|
|
3
|
-
if (ctx ===
|
|
4
|
-
typeof ctx.fromFile !== 'string' ||
|
|
5
|
-
!(ctx.allFilePaths instanceof Set)) {
|
|
6
|
-
return null;
|
|
7
|
-
}
|
|
8
|
-
if (parsedImport.kind === 'dynamic-unresolved')
|
|
11
|
+
const ctx = narrowContext(workspaceIndex);
|
|
12
|
+
if (ctx === null || parsedImport.kind === 'dynamic-unresolved')
|
|
9
13
|
return null;
|
|
10
14
|
if (parsedImport.targetRaw === null || parsedImport.targetRaw === '')
|
|
11
15
|
return null;
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
: parsedImport.targetRaw;
|
|
15
|
-
const pathLike = target.replace(/\./g, '/');
|
|
16
|
-
// Resolution tiers, most-specific first:
|
|
17
|
-
// 1. The full `pathLike` matches a `.kt`/`.kts` file directly
|
|
18
|
-
// (`import util.User` → `util/User.kt`).
|
|
19
|
-
// 2. Stripped (last-segment removed) `pathLike` matches a file
|
|
20
|
-
// directly (`import util.OneArg.writeAudit` → `util/OneArg.kt`,
|
|
21
|
-
// a class-or-object holding `writeAudit`).
|
|
22
|
-
// 3. Stripped `pathLike` matches a *package directory* — fan out to
|
|
23
|
-
// every `.kt`/`.kts` file inside it (`import models.getRepo` →
|
|
24
|
-
// `[models/User.kt, models/Repo.kt]`). The finalize pass walks
|
|
25
|
-
// each candidate and picks the one whose `localDefs` actually
|
|
26
|
-
// export the imported name (#1759).
|
|
27
|
-
// 4. Progressive prefix strip for deeper namespace aliases that
|
|
28
|
-
// don't map 1:1 to directories.
|
|
29
|
-
const stripped = pathLike.split('/').slice(0, -1).join('/');
|
|
30
|
-
return (findKotlinFile(ctx.allFilePaths, pathLike) ??
|
|
31
|
-
findKotlinExactOrSuffix(ctx.allFilePaths, stripped) ??
|
|
32
|
-
findKotlinPackageFiles(ctx.allFilePaths, stripped) ??
|
|
33
|
-
findByProgressivePrefixStrip(ctx.allFilePaths, pathLike));
|
|
34
|
-
}
|
|
35
|
-
function findKotlinFile(allFilePaths, pathLike) {
|
|
36
|
-
return (findKotlinExactOrSuffix(allFilePaths, pathLike) ??
|
|
37
|
-
findKotlinDirectoryChild(allFilePaths, pathLike));
|
|
38
|
-
}
|
|
39
|
-
/** Exact (`file === pathLike+ext`) or suffix (`file ends with /pathLike+ext`)
|
|
40
|
-
* match — does NOT fall back to picking an arbitrary file inside a
|
|
41
|
-
* `pathLike/` directory. Used by the stripped-path tier in
|
|
42
|
-
* `resolveKotlinImportTarget` so a package import like `models.getRepo`
|
|
43
|
-
* delegates to `findKotlinPackageFiles` (multi-file fan-out) instead of
|
|
44
|
-
* silently committing to the first directory child. */
|
|
45
|
-
function findKotlinExactOrSuffix(allFilePaths, pathLike) {
|
|
46
|
-
if (pathLike === '')
|
|
47
|
-
return null;
|
|
48
|
-
const extensions = ['.kt', '.kts'];
|
|
49
|
-
const suffix = `/${pathLike}`;
|
|
50
|
-
let suffixFile = null;
|
|
51
|
-
for (const raw of allFilePaths) {
|
|
52
|
-
const file = raw.replace(/\\/g, '/');
|
|
53
|
-
if (!extensions.some((ext) => file.endsWith(ext)))
|
|
54
|
-
continue;
|
|
55
|
-
for (const ext of extensions) {
|
|
56
|
-
if (file === `${pathLike}${ext}`)
|
|
57
|
-
return raw;
|
|
58
|
-
if (suffixFile === null && file.endsWith(`${suffix}${ext}`))
|
|
59
|
-
suffixFile = raw;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
return suffixFile;
|
|
63
|
-
}
|
|
64
|
-
/** First directory child of `pathLike/` — preserves the legacy single-
|
|
65
|
-
* file fallback for cases where `pathLike` itself is an unqualified
|
|
66
|
-
* package reference (rare in real Kotlin code; some fixtures rely on
|
|
67
|
-
* it). Multi-file package fan-out goes through
|
|
68
|
-
* `findKotlinPackageFiles` instead. */
|
|
69
|
-
function findKotlinDirectoryChild(allFilePaths, pathLike) {
|
|
70
|
-
if (pathLike === '')
|
|
16
|
+
const parsedFiles = ctx.parsedFiles;
|
|
17
|
+
if (parsedFiles === undefined || parsedFiles.length === 0)
|
|
71
18
|
return null;
|
|
72
|
-
|
|
73
|
-
const dirPrefix = `${pathLike}/`;
|
|
74
|
-
const suffixDirPrefix = `/${dirPrefix}`;
|
|
75
|
-
for (const raw of allFilePaths) {
|
|
76
|
-
const file = raw.replace(/\\/g, '/');
|
|
77
|
-
if (!extensions.some((ext) => file.endsWith(ext)))
|
|
78
|
-
continue;
|
|
79
|
-
const atRoot = file.startsWith(dirPrefix);
|
|
80
|
-
const atNested = file.includes(suffixDirPrefix);
|
|
81
|
-
if (!atRoot && !atNested)
|
|
82
|
-
continue;
|
|
83
|
-
const idx = atRoot ? 0 : file.indexOf(suffixDirPrefix) + 1;
|
|
84
|
-
const after = file.slice(idx + dirPrefix.length);
|
|
85
|
-
if (after.length > 0 && !after.includes('/'))
|
|
86
|
-
return raw;
|
|
87
|
-
}
|
|
88
|
-
return null;
|
|
19
|
+
return resolveKotlinModule(parsedImport.targetRaw, getKotlinPackageIndex(parsedFiles));
|
|
89
20
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
* file inside the package directory. The finalize pass walks each
|
|
96
|
-
* candidate and picks the one whose `localDefs` actually export the
|
|
97
|
-
* imported name (#1759).
|
|
98
|
-
*/
|
|
99
|
-
function findKotlinPackageFiles(allFilePaths, dirPath) {
|
|
100
|
-
if (dirPath === '')
|
|
21
|
+
function narrowContext(workspaceIndex) {
|
|
22
|
+
const ctx = workspaceIndex;
|
|
23
|
+
if (ctx === undefined ||
|
|
24
|
+
typeof ctx.fromFile !== 'string' ||
|
|
25
|
+
!(ctx.allFilePaths instanceof Set)) {
|
|
101
26
|
return null;
|
|
102
|
-
const extensions = ['.kt', '.kts'];
|
|
103
|
-
const dirPrefix = `${dirPath}/`;
|
|
104
|
-
const suffixDirPrefix = `/${dirPrefix}`;
|
|
105
|
-
const out = [];
|
|
106
|
-
for (const raw of allFilePaths) {
|
|
107
|
-
const file = raw.replace(/\\/g, '/');
|
|
108
|
-
if (!extensions.some((ext) => file.endsWith(ext)))
|
|
109
|
-
continue;
|
|
110
|
-
const atRoot = file.startsWith(dirPrefix);
|
|
111
|
-
const atNested = file.includes(suffixDirPrefix);
|
|
112
|
-
if (!atRoot && !atNested)
|
|
113
|
-
continue;
|
|
114
|
-
const idx = atRoot ? 0 : file.indexOf(suffixDirPrefix) + 1;
|
|
115
|
-
const after = file.slice(idx + dirPrefix.length);
|
|
116
|
-
// Direct children only — `models/sub/Util.kt` is a different package
|
|
117
|
-
// (`models.sub`) and must not be merged with `models`.
|
|
118
|
-
if (after.length === 0 || after.includes('/'))
|
|
119
|
-
continue;
|
|
120
|
-
out.push(raw);
|
|
121
|
-
}
|
|
122
|
-
return out.length === 0 ? null : out;
|
|
123
|
-
}
|
|
124
|
-
function findByProgressivePrefixStrip(allFilePaths, pathLike) {
|
|
125
|
-
const segments = pathLike.split('/').filter(Boolean);
|
|
126
|
-
for (let skip = 1; skip < segments.length; skip++) {
|
|
127
|
-
const found = findKotlinFile(allFilePaths, segments.slice(skip).join('/'));
|
|
128
|
-
if (found !== null)
|
|
129
|
-
return found;
|
|
130
27
|
}
|
|
131
|
-
return
|
|
28
|
+
return ctx;
|
|
132
29
|
}
|
|
@@ -4,6 +4,7 @@ export { getKotlinCaptureCacheStats, resetKotlinCaptureCacheStats } from './cach
|
|
|
4
4
|
export { interpretKotlinImport, interpretKotlinTypeBinding } from './interpret.js';
|
|
5
5
|
export { kotlinArityCompatibility } from './arity.js';
|
|
6
6
|
export { resolveKotlinImportTarget, type KotlinResolveContext } from './import-target.js';
|
|
7
|
+
export { buildKotlinPackageIndex, resolveKotlinModule, type KotlinPackageIndex, } from './module-resolution.js';
|
|
7
8
|
export { kotlinMergeBindings } from './merge-bindings.js';
|
|
8
9
|
export { populateKotlinOwners } from './owners.js';
|
|
9
10
|
export { kotlinBindingScopeFor, kotlinImportOwningScope, kotlinReceiverBinding, } from './simple-hooks.js';
|
|
@@ -4,6 +4,7 @@ export { getKotlinCaptureCacheStats, resetKotlinCaptureCacheStats } from './cach
|
|
|
4
4
|
export { interpretKotlinImport, interpretKotlinTypeBinding } from './interpret.js';
|
|
5
5
|
export { kotlinArityCompatibility } from './arity.js';
|
|
6
6
|
export { resolveKotlinImportTarget } from './import-target.js';
|
|
7
|
+
export { buildKotlinPackageIndex, resolveKotlinModule, } from './module-resolution.js';
|
|
7
8
|
export { kotlinMergeBindings } from './merge-bindings.js';
|
|
8
9
|
export { populateKotlinOwners } from './owners.js';
|
|
9
10
|
export { kotlinBindingScopeFor, kotlinImportOwningScope, kotlinReceiverBinding, } from './simple-hooks.js';
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kotlin import resolution against declared packages and module exports (#2960).
|
|
3
|
+
*
|
|
4
|
+
* Kotlin source layout is conventional, not semantic: a file may declare any
|
|
5
|
+
* package from any directory, and a top-level class, function or property need
|
|
6
|
+
* not match the file name. Resolution therefore uses the package fact captured
|
|
7
|
+
* during parsing plus the file's module-scope bindings. It never guesses from a
|
|
8
|
+
* coincidental path suffix.
|
|
9
|
+
*/
|
|
10
|
+
import type { ParsedFile } from '../../../../_shared/index.js';
|
|
11
|
+
import type { JvmPackageFact } from '../jvm/package-facts.js';
|
|
12
|
+
export interface KotlinPackageIndex {
|
|
13
|
+
/** Declared package -> top-level exported name -> files declaring that name. */
|
|
14
|
+
readonly declarationsByPackage: ReadonlyMap<string, ReadonlyMap<string, readonly string[]>>;
|
|
15
|
+
/** Declared package -> every file declaring it, for wildcard imports. */
|
|
16
|
+
readonly filesByPackage: ReadonlyMap<string, readonly string[]>;
|
|
17
|
+
/** Files whose package header could not be interpreted conservatively. */
|
|
18
|
+
readonly unreadablePackageFiles: number;
|
|
19
|
+
}
|
|
20
|
+
export declare function buildKotlinPackageIndex(parsedFiles: readonly ParsedFile[], packageOf: (filePath: string) => JvmPackageFact | undefined): KotlinPackageIndex;
|
|
21
|
+
/** Resolve a Kotlin import to the file(s) its declarations name. */
|
|
22
|
+
export declare function resolveKotlinModule(targetRaw: string, index: KotlinPackageIndex): string | readonly string[] | null;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kotlin import resolution against declared packages and module exports (#2960).
|
|
3
|
+
*
|
|
4
|
+
* Kotlin source layout is conventional, not semantic: a file may declare any
|
|
5
|
+
* package from any directory, and a top-level class, function or property need
|
|
6
|
+
* not match the file name. Resolution therefore uses the package fact captured
|
|
7
|
+
* during parsing plus the file's module-scope bindings. It never guesses from a
|
|
8
|
+
* coincidental path suffix.
|
|
9
|
+
*/
|
|
10
|
+
const EMPTY_INDEX = {
|
|
11
|
+
declarationsByPackage: new Map(),
|
|
12
|
+
filesByPackage: new Map(),
|
|
13
|
+
unreadablePackageFiles: 0,
|
|
14
|
+
};
|
|
15
|
+
export function buildKotlinPackageIndex(parsedFiles, packageOf) {
|
|
16
|
+
if (parsedFiles.length === 0)
|
|
17
|
+
return EMPTY_INDEX;
|
|
18
|
+
const declarationsByPackage = new Map();
|
|
19
|
+
const filesByPackage = new Map();
|
|
20
|
+
let unreadablePackageFiles = 0;
|
|
21
|
+
for (const parsed of parsedFiles) {
|
|
22
|
+
const fact = packageOf(parsed.filePath);
|
|
23
|
+
if (fact === undefined)
|
|
24
|
+
continue;
|
|
25
|
+
if (fact.status !== 'known') {
|
|
26
|
+
unreadablePackageFiles++;
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
const packageName = fact.packageName;
|
|
30
|
+
const packageFiles = filesByPackage.get(packageName);
|
|
31
|
+
if (packageFiles === undefined)
|
|
32
|
+
filesByPackage.set(packageName, [parsed.filePath]);
|
|
33
|
+
else
|
|
34
|
+
packageFiles.push(parsed.filePath);
|
|
35
|
+
const moduleScope = parsed.scopes.find((scope) => scope.id === parsed.moduleScope && scope.kind === 'Module') ??
|
|
36
|
+
parsed.scopes.find((scope) => scope.kind === 'Module');
|
|
37
|
+
if (moduleScope === undefined)
|
|
38
|
+
continue;
|
|
39
|
+
let declarations = declarationsByPackage.get(packageName);
|
|
40
|
+
if (declarations === undefined) {
|
|
41
|
+
declarations = new Map();
|
|
42
|
+
declarationsByPackage.set(packageName, declarations);
|
|
43
|
+
}
|
|
44
|
+
for (const [name, refs] of moduleScope.bindings) {
|
|
45
|
+
if (name === '' ||
|
|
46
|
+
!refs.some((ref) => ref.origin === 'local' && ref.def.filePath === parsed.filePath)) {
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
const files = declarations.get(name);
|
|
50
|
+
if (files === undefined)
|
|
51
|
+
declarations.set(name, [parsed.filePath]);
|
|
52
|
+
else if (!files.includes(parsed.filePath))
|
|
53
|
+
files.push(parsed.filePath);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return { declarationsByPackage, filesByPackage, unreadablePackageFiles };
|
|
57
|
+
}
|
|
58
|
+
/** Resolve a Kotlin import to the file(s) its declarations name. */
|
|
59
|
+
export function resolveKotlinModule(targetRaw, index) {
|
|
60
|
+
if (targetRaw === '')
|
|
61
|
+
return null;
|
|
62
|
+
if (targetRaw.endsWith('.*')) {
|
|
63
|
+
const stem = targetRaw.slice(0, -2);
|
|
64
|
+
if (stem === '')
|
|
65
|
+
return null;
|
|
66
|
+
const packageFiles = index.filesByPackage.get(stem);
|
|
67
|
+
if (packageFiles !== undefined)
|
|
68
|
+
return packageFiles;
|
|
69
|
+
// Kotlin also permits star imports from a class or object. Resolve the
|
|
70
|
+
// owning top-level declaration, while keeping an undeclared package null.
|
|
71
|
+
return resolveTopLevelDeclaration(stem, index);
|
|
72
|
+
}
|
|
73
|
+
return resolveTopLevelDeclaration(targetRaw, index);
|
|
74
|
+
}
|
|
75
|
+
function resolveTopLevelDeclaration(qualifiedName, index) {
|
|
76
|
+
const parts = qualifiedName.split('.').filter((part) => part !== '');
|
|
77
|
+
if (parts.length === 0)
|
|
78
|
+
return null;
|
|
79
|
+
// A bare name can refer to the special root package. It is still backed by
|
|
80
|
+
// package and binding evidence; no path fallback is involved.
|
|
81
|
+
if (parts.length === 1) {
|
|
82
|
+
const name = parts[0];
|
|
83
|
+
return name === undefined
|
|
84
|
+
? null
|
|
85
|
+
: declarationFiles(index.declarationsByPackage.get('')?.get(name));
|
|
86
|
+
}
|
|
87
|
+
for (let split = parts.length - 1; split >= 1; split--) {
|
|
88
|
+
const packageName = parts.slice(0, split).join('.');
|
|
89
|
+
const declarations = index.declarationsByPackage.get(packageName);
|
|
90
|
+
if (declarations === undefined)
|
|
91
|
+
continue;
|
|
92
|
+
const declarationName = parts[split];
|
|
93
|
+
if (declarationName === undefined)
|
|
94
|
+
continue;
|
|
95
|
+
const files = declarations.get(declarationName);
|
|
96
|
+
if (files === undefined)
|
|
97
|
+
continue;
|
|
98
|
+
return declarationFiles(files);
|
|
99
|
+
}
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
function declarationFiles(files) {
|
|
103
|
+
if (files === undefined || files.length === 0)
|
|
104
|
+
return null;
|
|
105
|
+
// Kotlin permits overloaded top-level callables across files. Preserve the
|
|
106
|
+
// complete candidate set instead of choosing one by parse order.
|
|
107
|
+
return files.length === 1 ? (files[0] ?? null) : files;
|
|
108
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type JvmPackageFact, type JvmPackageSyntaxNode } from '../jvm/package-facts.js';
|
|
2
|
+
export declare const clearKotlinPackageFacts: () => void;
|
|
3
|
+
export declare const captureKotlinPackageFact: (filePath: string, root: JvmPackageSyntaxNode) => void;
|
|
4
|
+
export declare const setKotlinPackageFact: (filePath: string, fact: JvmPackageFact) => void;
|
|
5
|
+
export declare const getKotlinPackageFact: (filePath: string) => JvmPackageFact | undefined;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { createJvmPackageFactStore, } from '../jvm/package-facts.js';
|
|
2
|
+
const kotlinPackageFacts = createJvmPackageFactStore({
|
|
3
|
+
packageNodeType: 'package_header',
|
|
4
|
+
packageNameNodeTypes: ['identifier'],
|
|
5
|
+
});
|
|
6
|
+
export const clearKotlinPackageFacts = () => kotlinPackageFacts.clear();
|
|
7
|
+
export const captureKotlinPackageFact = (filePath, root) => kotlinPackageFacts.capture(filePath, root);
|
|
8
|
+
export const setKotlinPackageFact = (filePath, fact) => kotlinPackageFacts.set(filePath, fact);
|
|
9
|
+
export const getKotlinPackageFact = (filePath) => kotlinPackageFacts.get(filePath);
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const populateKotlinPackageSiblings: (parsedFiles: readonly import('../../../../_shared/index.js').ParsedFile[], indexes: import("../../model/scope-resolution-indexes.js").ScopeResolutionIndexes, ctx: {
|
|
2
|
+
readonly fileContents: ReadonlyMap<string, string>;
|
|
3
|
+
}) => void;
|
|
4
|
+
export declare const isKotlinPackageSiblingVisibilityIncomplete: (filePath: string) => boolean;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { createJvmPackageSiblingVisibility } from '../jvm/package-siblings.js';
|
|
2
|
+
import { getKotlinPackageFact } from './package-facts.js';
|
|
3
|
+
const kotlinPackageSiblingVisibility = createJvmPackageSiblingVisibility({
|
|
4
|
+
languageLabel: 'kotlin',
|
|
5
|
+
getPackageFact: getKotlinPackageFact,
|
|
6
|
+
});
|
|
7
|
+
export const populateKotlinPackageSiblings = kotlinPackageSiblingVisibility.populateNamespaceSiblings;
|
|
8
|
+
export const isKotlinPackageSiblingVisibilityIncomplete = kotlinPackageSiblingVisibility.isVisibilityIncomplete;
|
|
@@ -15,6 +15,12 @@ const KOTLIN_SCOPE_QUERY = `
|
|
|
15
15
|
(class_declaration) @scope.class
|
|
16
16
|
(object_declaration) @scope.class
|
|
17
17
|
(companion_object) @scope.class
|
|
18
|
+
;; Anonymous object expression: \`val h = object { fun fetch() {} }\`
|
|
19
|
+
;; (distinct from the named \`object_declaration\`/\`companion_object\` above).
|
|
20
|
+
;; Without its own scope, a method's auto-hoist (scope-extractor.ts) has
|
|
21
|
+
;; nowhere to stop and leaks the name past the literal into the enclosing
|
|
22
|
+
;; scope -- the same failure mode fixed for TS/JS object literals (#2545).
|
|
23
|
+
(object_literal) @scope.class
|
|
18
24
|
(function_declaration) @scope.function
|
|
19
25
|
|
|
20
26
|
;; Secondary-constructor body scope (issue #1919 review CF1). A
|
|
@@ -74,13 +80,22 @@ const KOTLIN_SCOPE_QUERY = `
|
|
|
74
80
|
(lambda_literal) @scope.block
|
|
75
81
|
|
|
76
82
|
;; Declarations — types
|
|
83
|
+
;; The Kotlin grammar puts NO named fields on \`class_declaration\`, so the
|
|
84
|
+
;; parameter list is matched positionally as an optional unnamed child, exactly
|
|
85
|
+
;; as the name already is.
|
|
86
|
+
;;
|
|
87
|
+
;; Only the INLINE bound (\`<T : Repo>\`) is read. A \`where T : Repo\` clause is a
|
|
88
|
+
;; separate \`type_constraints\` sibling and is left alone, so its bound reads as
|
|
89
|
+
;; absent — "unknown", not "unbounded".
|
|
77
90
|
(class_declaration
|
|
78
91
|
"interface"
|
|
79
|
-
(type_identifier) @declaration.name
|
|
92
|
+
(type_identifier) @declaration.name
|
|
93
|
+
(type_parameters)? @declaration.type-parameters) @declaration.interface
|
|
80
94
|
|
|
81
95
|
(class_declaration
|
|
82
96
|
"class"
|
|
83
|
-
(type_identifier) @declaration.name
|
|
97
|
+
(type_identifier) @declaration.name
|
|
98
|
+
(type_parameters)? @declaration.type-parameters) @declaration.class
|
|
84
99
|
|
|
85
100
|
(object_declaration
|
|
86
101
|
(type_identifier) @declaration.name) @declaration.class
|
|
@@ -91,10 +106,40 @@ const KOTLIN_SCOPE_QUERY = `
|
|
|
91
106
|
(type_alias
|
|
92
107
|
(type_identifier) @declaration.name) @declaration.type_alias
|
|
93
108
|
|
|
109
|
+
;; Class annotation syntax is carried to post-resolution enrichment. Keeping
|
|
110
|
+
;; this in the existing scope query avoids a second AST traversal. Eligibility
|
|
111
|
+
;; filtering (class vs interface/enum/annotation class) happens in captures.ts.
|
|
112
|
+
(class_declaration
|
|
113
|
+
(modifiers
|
|
114
|
+
[
|
|
115
|
+
(annotation
|
|
116
|
+
(user_type) @class-annotation.name)
|
|
117
|
+
(annotation
|
|
118
|
+
(constructor_invocation
|
|
119
|
+
(user_type) @class-annotation.name))
|
|
120
|
+
])) @class-annotation.class
|
|
121
|
+
|
|
94
122
|
;; Declarations — functions / methods / properties
|
|
123
|
+
;;
|
|
124
|
+
;; A generic FUNCTION's parameters are read for the same reason a generic type's
|
|
125
|
+
;; are (#2912 review): \`fun <T> runAny(v: Validator<T>)\` writes a receiver whose
|
|
126
|
+
;; argument is a type VARIABLE, and a pass that cannot tell that from a concrete
|
|
127
|
+
;; type prunes every implementor from the call's dispatch fan-out.
|
|
95
128
|
(function_declaration
|
|
129
|
+
(type_parameters)? @declaration.type-parameters
|
|
96
130
|
(simple_identifier) @declaration.name) @declaration.function
|
|
97
131
|
|
|
132
|
+
;; Lambda bound to a val/var: val handler = { x: Int -> target(x) }
|
|
133
|
+
;; Anchor discipline (same contract as javascript/query.ts): @declaration.function
|
|
134
|
+
;; sits on the INNER lambda_literal, NOT on the property_declaration wrapper, so
|
|
135
|
+
;; anchor.range aligns with the (lambda_literal) @scope.block range. That
|
|
136
|
+
;; alignment is what lets pickCallerCallableDef accept a Block-kind scope as a
|
|
137
|
+
;; callable boundary: the scope IS the callable's body. The lambda stays
|
|
138
|
+
;; @scope.block deliberately (#1757 smart casts) — do NOT re-kind it.
|
|
139
|
+
(property_declaration
|
|
140
|
+
(variable_declaration (simple_identifier) @declaration.name)
|
|
141
|
+
(lambda_literal) @declaration.function)
|
|
142
|
+
|
|
98
143
|
(property_declaration
|
|
99
144
|
(variable_declaration
|
|
100
145
|
(simple_identifier) @declaration.name)) @declaration.property
|
|
@@ -2,11 +2,19 @@ import { SupportedLanguages } from '../../../../_shared/index.js';
|
|
|
2
2
|
import { buildMro, defaultLinearize } from '../../scope-resolution/passes/mro.js';
|
|
3
3
|
import { resolveDefGraphId } from '../../scope-resolution/graph-bridge/ids.js';
|
|
4
4
|
import { isClassLike } from '../../scope-resolution/scope/walkers.js';
|
|
5
|
+
import { indexOnlyElementType } from '../../type-extractors/shared.js';
|
|
5
6
|
import { kotlinProvider } from '../kotlin.js';
|
|
6
7
|
import { kotlinArityCompatibility, kotlinMergeBindings, populateKotlinOwners, resolveKotlinImportTarget, } from './index.js';
|
|
7
8
|
import { clearCompanionScopes } from './companion-scopes.js';
|
|
8
|
-
import { applyKotlinCaptureSideChannel } from './capture-side-channel.js';
|
|
9
|
+
import { applyKotlinCaptureSideChannel, clearKotlinClassAnnotationFacts, } from './capture-side-channel.js';
|
|
9
10
|
import { isKotlinStaticOnly } from './owners.js';
|
|
11
|
+
import { populateKotlinPackageSiblings } from './package-siblings.js';
|
|
12
|
+
import { attachKotlinSpringBeanCandidateMetadata } from './spring-bean-metadata.js';
|
|
13
|
+
import { attachKotlinSpringAopMetadata } from './spring-aop.js';
|
|
14
|
+
import { clearKotlinPackageFacts } from './package-facts.js';
|
|
15
|
+
import { attachKotlinSpringDiMetadata } from './spring-di.js';
|
|
16
|
+
import { attachKotlinSpringConditionalMetadata } from './spring-conditionals.js';
|
|
17
|
+
import { attachKotlinSpringNonHttpHandlerMetadata } from './spring-non-http-handlers.js';
|
|
10
18
|
/**
|
|
11
19
|
* Kotlin scope resolver for RFC #909 Ring 3.
|
|
12
20
|
*
|
|
@@ -57,10 +65,16 @@ export const kotlinScopeResolver = {
|
|
|
57
65
|
// `undefined` because Kotlin has no external resolution config
|
|
58
66
|
// to load.
|
|
59
67
|
clearCompanionScopes();
|
|
68
|
+
clearKotlinClassAnnotationFacts();
|
|
69
|
+
clearKotlinPackageFacts();
|
|
60
70
|
return undefined;
|
|
61
71
|
},
|
|
62
|
-
resolveImportTarget: (targetRaw, fromFile, allFilePaths) => {
|
|
63
|
-
const ws = {
|
|
72
|
+
resolveImportTarget: (targetRaw, fromFile, allFilePaths, _resolutionConfig, context) => {
|
|
73
|
+
const ws = {
|
|
74
|
+
fromFile,
|
|
75
|
+
allFilePaths,
|
|
76
|
+
parsedFiles: context?.parsedFiles,
|
|
77
|
+
};
|
|
64
78
|
return resolveKotlinImportTarget({ kind: 'named', localName: '_', importedName: '_', targetRaw }, ws);
|
|
65
79
|
},
|
|
66
80
|
mergeBindings: (existing, incoming) => [...kotlinMergeBindings([...existing, ...incoming])],
|
|
@@ -84,11 +98,30 @@ export const kotlinScopeResolver = {
|
|
|
84
98
|
applyCaptureSideChannel: applyKotlinCaptureSideChannel,
|
|
85
99
|
populateOwners: (parsed) => populateKotlinOwners(parsed),
|
|
86
100
|
isSuperReceiver: (text) => text.trim() === 'super',
|
|
101
|
+
// Subscript route only — Kotlin's collection views (`.values`, `.keys`) are
|
|
102
|
+
// properties on the stdlib types, resolved by the ordinary member walk rather
|
|
103
|
+
// than by unwrapping a generic here.
|
|
104
|
+
//
|
|
105
|
+
// Fed the annotation AS WRITTEN (`List<User>`, `Map<String, User>`), which
|
|
106
|
+
// `normalizeKotlinType` had already reduced to `User`. `undefined` means "not
|
|
107
|
+
// a container", so an `operator fun get` class does not fold `cache[k]` onto
|
|
108
|
+
// `Cache` itself.
|
|
109
|
+
elementTypeOf: indexOnlyElementType,
|
|
87
110
|
isStaticOnly: isKotlinStaticOnly,
|
|
88
111
|
fieldFallbackOnMethodLookup: false,
|
|
89
112
|
propagatesReturnTypesAcrossImports: true,
|
|
90
113
|
collapseMemberCallsByCallerTarget: false,
|
|
91
114
|
hoistTypeBindingsToModule: true,
|
|
115
|
+
freeCallsRequireInstanceOwnership: true,
|
|
116
|
+
postExtractSourceTextPolicy: 'uncached-files',
|
|
117
|
+
populateNamespaceSiblings: populateKotlinPackageSiblings,
|
|
118
|
+
emitPostResolutionEdges: (graph, parsedFiles, nodeLookup, indexes) => {
|
|
119
|
+
attachKotlinSpringBeanCandidateMetadata(graph, parsedFiles, nodeLookup, indexes);
|
|
120
|
+
attachKotlinSpringAopMetadata(graph, parsedFiles, nodeLookup, indexes);
|
|
121
|
+
attachKotlinSpringConditionalMetadata(graph, parsedFiles, nodeLookup, indexes);
|
|
122
|
+
attachKotlinSpringDiMetadata(graph, parsedFiles, nodeLookup, indexes);
|
|
123
|
+
attachKotlinSpringNonHttpHandlerMetadata(graph, parsedFiles, nodeLookup, indexes);
|
|
124
|
+
},
|
|
92
125
|
};
|
|
93
126
|
/**
|
|
94
127
|
* Kotlin MRO builder — extends `defaultLinearize` (EXTENDS-only) with
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type SpringAopOwnerFact } from '../../frameworks/spring/aop.js';
|
|
2
|
+
import { type SyntaxNode } from '../../utils/ast-helpers.js';
|
|
3
|
+
import { type KotlinAnnotationSyntaxFact } from './spring-di.js';
|
|
4
|
+
export type KotlinSpringAopAnnotationFact = KotlinAnnotationSyntaxFact;
|
|
5
|
+
export type KotlinSpringAopFact = SpringAopOwnerFact<KotlinSpringAopAnnotationFact>;
|
|
6
|
+
/**
|
|
7
|
+
* Capture Spring AOP syntax from the class node already surfaced by Kotlin's
|
|
8
|
+
* scope query. The shared layer resolves annotations and rejects non-default
|
|
9
|
+
* use-site targets after imports and package visibility have finalized.
|
|
10
|
+
*/
|
|
11
|
+
export declare function captureKotlinSpringAopFacts(classNode: SyntaxNode, filePath: string): KotlinSpringAopFact[];
|
|
12
|
+
export declare const attachKotlinSpringAopMetadata: (graph: import("../../../graph/types.js").KnowledgeGraph, parsedFiles: readonly import('../../../../_shared/index.js').ParsedFile[], nodeLookup: import("../../scope-resolution/graph-bridge/node-lookup.js").GraphNodeLookup, indexes: import("../../model/scope-resolution-indexes.js").ScopeResolutionIndexes) => void;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { makeScopeId } from '../../../../_shared/index.js';
|
|
2
|
+
import { createSpringAopMetadataAttacher, } from '../../frameworks/spring/aop.js';
|
|
3
|
+
import { nodeToCapture } from '../../utils/ast-helpers.js';
|
|
4
|
+
import { getKotlinSpringAopFacts } from './capture-side-channel.js';
|
|
5
|
+
import { isKotlinPackageSiblingVisibilityIncomplete } from './package-siblings.js';
|
|
6
|
+
import { kotlinSpringAnnotationFacts } from './spring-di.js';
|
|
7
|
+
function scopeId(filePath, node, kind) {
|
|
8
|
+
return makeScopeId({
|
|
9
|
+
filePath,
|
|
10
|
+
range: nodeToCapture('@spring-aop.owner', node).range,
|
|
11
|
+
kind,
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
function ownerRange(node) {
|
|
15
|
+
return nodeToCapture('@spring-aop.owner', node).range;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Capture Spring AOP syntax from the class node already surfaced by Kotlin's
|
|
19
|
+
* scope query. The shared layer resolves annotations and rejects non-default
|
|
20
|
+
* use-site targets after imports and package visibility have finalized.
|
|
21
|
+
*/
|
|
22
|
+
export function captureKotlinSpringAopFacts(classNode, filePath) {
|
|
23
|
+
const facts = [];
|
|
24
|
+
const classAnnotations = kotlinSpringAnnotationFacts(classNode);
|
|
25
|
+
const singletonInstance = classNode.type === 'object_declaration' || classNode.type === 'companion_object';
|
|
26
|
+
// Kotlin import aliases can give a Spring annotation any local simple name.
|
|
27
|
+
// Capture annotated owners conservatively, then let the post-import shared
|
|
28
|
+
// resolver keep only recognized Spring AOP annotations. Objects also retain
|
|
29
|
+
// an empty owner fact so the shared phase can distinguish their singleton
|
|
30
|
+
// instance members from true static methods without naming Kotlin.
|
|
31
|
+
if (classAnnotations.length > 0 || singletonInstance) {
|
|
32
|
+
facts.push({
|
|
33
|
+
ownerScopeId: scopeId(filePath, classNode, 'Class'),
|
|
34
|
+
ownerKind: 'class',
|
|
35
|
+
ownerFilePath: filePath,
|
|
36
|
+
ownerRange: ownerRange(classNode),
|
|
37
|
+
...(singletonInstance ? { singletonInstance: true } : {}),
|
|
38
|
+
annotations: classAnnotations,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
const body = classNode.namedChildren.find((child) => child.type === 'class_body');
|
|
42
|
+
if (body === undefined)
|
|
43
|
+
return facts;
|
|
44
|
+
for (const member of body.namedChildren) {
|
|
45
|
+
if (member.type !== 'function_declaration')
|
|
46
|
+
continue;
|
|
47
|
+
const annotations = kotlinSpringAnnotationFacts(member);
|
|
48
|
+
if (annotations.length === 0)
|
|
49
|
+
continue;
|
|
50
|
+
facts.push({
|
|
51
|
+
ownerScopeId: scopeId(filePath, member, 'Function'),
|
|
52
|
+
ownerKind: 'callable',
|
|
53
|
+
ownerFilePath: filePath,
|
|
54
|
+
ownerRange: ownerRange(member),
|
|
55
|
+
...(singletonInstance ? { singletonInstance: true } : {}),
|
|
56
|
+
annotations,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
return facts;
|
|
60
|
+
}
|
|
61
|
+
export const attachKotlinSpringAopMetadata = createSpringAopMetadataAttacher({
|
|
62
|
+
getFacts: getKotlinSpringAopFacts,
|
|
63
|
+
isPackageVisibilityIncomplete: isKotlinPackageSiblingVisibilityIncomplete,
|
|
64
|
+
});
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/** Kotlin wiring for the language-neutral Spring candidate engine. */
|
|
2
|
+
export declare const attachKotlinSpringBeanCandidateMetadata: (graph: import("../../../graph/types.js").KnowledgeGraph, parsedFiles: readonly import('../../../../_shared/index.js').ParsedFile[], nodeLookup: import("../../scope-resolution/graph-bridge/node-lookup.js").GraphNodeLookup, indexes: import("../../model/scope-resolution-indexes.js").ScopeResolutionIndexes) => void;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { createSpringBeanCandidateAttacher } from '../../frameworks/spring/bean-candidates.js';
|
|
2
|
+
import { getKotlinClassAnnotationFacts } from './capture-side-channel.js';
|
|
3
|
+
import { isKotlinPackageSiblingVisibilityIncomplete } from './package-siblings.js';
|
|
4
|
+
/** Kotlin wiring for the language-neutral Spring candidate engine. */
|
|
5
|
+
export const attachKotlinSpringBeanCandidateMetadata = createSpringBeanCandidateAttacher({
|
|
6
|
+
getClassAnnotationFacts: getKotlinClassAnnotationFacts,
|
|
7
|
+
isPackageVisibilityIncomplete: isKotlinPackageSiblingVisibilityIncomplete,
|
|
8
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type SpringConditionalOwnerFact } from '../../frameworks/spring/conditionals.js';
|
|
2
|
+
import { type SyntaxNode } from '../../utils/ast-helpers.js';
|
|
3
|
+
import { type KotlinAnnotationSyntaxFact } from './spring-di.js';
|
|
4
|
+
export type KotlinSpringConditionalAnnotationFact = KotlinAnnotationSyntaxFact;
|
|
5
|
+
export type KotlinSpringConditionalFact = SpringConditionalOwnerFact<KotlinSpringConditionalAnnotationFact>;
|
|
6
|
+
/**
|
|
7
|
+
* Capture Kotlin condition syntax from the class node already surfaced by the
|
|
8
|
+
* scope query. Kotlin syntax stays local; shared Spring semantics are attached
|
|
9
|
+
* after resolution.
|
|
10
|
+
*/
|
|
11
|
+
export declare function captureKotlinSpringConditionalFacts(classNode: SyntaxNode, filePath: string): KotlinSpringConditionalFact[];
|
|
12
|
+
export declare const attachKotlinSpringConditionalMetadata: (graph: import("../../../graph/types.js").KnowledgeGraph, parsedFiles: readonly import('../../../../_shared/index.js').ParsedFile[], nodeLookup: import("../../scope-resolution/graph-bridge/node-lookup.js").GraphNodeLookup, indexes: import("../../model/scope-resolution-indexes.js").ScopeResolutionIndexes) => void;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { makeScopeId } from '../../../../_shared/index.js';
|
|
2
|
+
import { createSpringConditionalMetadataAttacher, hasSpringConditionalRelevantAnnotation, } from '../../frameworks/spring/conditionals.js';
|
|
3
|
+
import { nodeToCapture } from '../../utils/ast-helpers.js';
|
|
4
|
+
import { getKotlinSpringConditionalFacts } from './capture-side-channel.js';
|
|
5
|
+
import { isKotlinPackageSiblingVisibilityIncomplete } from './package-siblings.js';
|
|
6
|
+
import { kotlinSpringAnnotationFacts } from './spring-di.js';
|
|
7
|
+
function scopeId(filePath, node, kind) {
|
|
8
|
+
return makeScopeId({
|
|
9
|
+
filePath,
|
|
10
|
+
range: nodeToCapture('@spring-condition.owner', node).range,
|
|
11
|
+
kind,
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Capture Kotlin condition syntax from the class node already surfaced by the
|
|
16
|
+
* scope query. Kotlin syntax stays local; shared Spring semantics are attached
|
|
17
|
+
* after resolution.
|
|
18
|
+
*/
|
|
19
|
+
export function captureKotlinSpringConditionalFacts(classNode, filePath) {
|
|
20
|
+
const facts = [];
|
|
21
|
+
const classAnnotations = kotlinSpringAnnotationFacts(classNode);
|
|
22
|
+
if (hasSpringConditionalRelevantAnnotation(classAnnotations)) {
|
|
23
|
+
facts.push({
|
|
24
|
+
ownerScopeId: scopeId(filePath, classNode, 'Class'),
|
|
25
|
+
ownerKind: 'class',
|
|
26
|
+
annotations: classAnnotations,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
const body = classNode.namedChildren.find((child) => child.type === 'class_body');
|
|
30
|
+
if (body === undefined)
|
|
31
|
+
return facts;
|
|
32
|
+
for (const member of body.namedChildren) {
|
|
33
|
+
if (member.type !== 'function_declaration')
|
|
34
|
+
continue;
|
|
35
|
+
const annotations = kotlinSpringAnnotationFacts(member);
|
|
36
|
+
if (!hasSpringConditionalRelevantAnnotation(annotations))
|
|
37
|
+
continue;
|
|
38
|
+
facts.push({
|
|
39
|
+
ownerScopeId: scopeId(filePath, member, 'Function'),
|
|
40
|
+
ownerKind: 'callable',
|
|
41
|
+
annotations,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
return facts;
|
|
45
|
+
}
|
|
46
|
+
export const attachKotlinSpringConditionalMetadata = createSpringConditionalMetadataAttacher({
|
|
47
|
+
getFacts: getKotlinSpringConditionalFacts,
|
|
48
|
+
isPackageVisibilityIncomplete: isKotlinPackageSiblingVisibilityIncomplete,
|
|
49
|
+
});
|