gitnexus 1.6.10-rc.98 → 1.6.10
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 +177 -18
- package/dist/_shared/graph/types.d.ts +21 -2
- package/dist/_shared/graph/types.d.ts.map +1 -1
- package/dist/_shared/index.d.ts +3 -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 +16 -0
- package/dist/_shared/integrations/resilient-fetch.d.ts.map +1 -1
- package/dist/_shared/integrations/resilient-fetch.js +19 -7
- 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/evidence-weights.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/finalize-algorithm.d.ts +5 -0
- package/dist/_shared/scope-resolution/finalize-algorithm.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/finalize-algorithm.js +315 -36
- package/dist/_shared/scope-resolution/finalize-algorithm.js.map +1 -1
- package/dist/_shared/scope-resolution/reference-site.d.ts +115 -0
- 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 +278 -3
- package/dist/_shared/scope-resolution/types.d.ts.map +1 -1
- package/dist/cli/ai-context.d.ts +3 -2
- package/dist/cli/ai-context.js +71 -16
- 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 +21 -113
- package/dist/cli/analyze.js +172 -29
- package/dist/cli/cli-message.d.ts +1 -1
- package/dist/cli/detect-changes-format.js +19 -2
- package/dist/cli/doctor.d.ts +12 -0
- package/dist/cli/doctor.js +32 -5
- package/dist/cli/editor-targets.js +6 -0
- package/dist/cli/eval-server.js +2 -1
- 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 +229 -21
- package/dist/cli/help-i18n.js +1 -2
- package/dist/cli/i18n/en.d.ts +11 -9
- package/dist/cli/i18n/en.js +13 -9
- package/dist/cli/i18n/resources.d.ts +15 -11
- package/dist/cli/i18n/zh-CN.d.ts +4 -2
- package/dist/cli/i18n/zh-CN.js +11 -9
- package/dist/cli/index.js +8 -4
- package/dist/cli/resolve-invocation.d.ts +7 -3
- package/dist/cli/resolve-invocation.js +7 -3
- package/dist/cli/setup.js +4 -3
- package/dist/cli/skill-gen.d.ts +1 -6
- package/dist/cli/tool.d.ts +1 -0
- package/dist/cli/tool.js +74 -17
- package/dist/cli/wiki.js +53 -10
- package/dist/config/ignore-service.d.ts +2 -0
- package/dist/config/ignore-service.js +54 -13
- package/dist/core/analyzer-identity.d.ts +80 -0
- package/dist/core/analyzer-identity.js +364 -26
- package/dist/core/augmentation/engine.js +86 -71
- 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/embedding-pipeline.d.ts +8 -0
- package/dist/core/embeddings/embedding-pipeline.js +253 -14
- package/dist/core/embeddings/http-client.d.ts +5 -0
- package/dist/core/embeddings/http-client.js +142 -27
- 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.d.ts +204 -1
- package/dist/core/group/bridge-db.js +401 -28
- package/dist/core/group/completeness.d.ts +130 -0
- package/dist/core/group/completeness.js +83 -0
- package/dist/core/group/config-parser.js +0 -5
- package/dist/core/group/cross-impact.d.ts +46 -1
- package/dist/core/group/cross-impact.js +220 -19
- package/dist/core/group/cross-trace.d.ts +32 -11
- package/dist/core/group/cross-trace.js +114 -20
- package/dist/core/group/extractors/http-patterns/java.js +278 -22
- package/dist/core/group/extractors/http-patterns/node.js +332 -216
- 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/extractors/python-workspace-extractor.js +5 -2
- package/dist/core/group/group-lock.d.ts +31 -0
- package/dist/core/group/group-lock.js +166 -0
- package/dist/core/group/service.js +297 -16
- package/dist/core/group/storage.d.ts +3 -0
- package/dist/core/group/storage.js +7 -39
- package/dist/core/group/sync.d.ts +49 -3
- package/dist/core/group/sync.js +0 -0
- package/dist/core/group/types.d.ts +183 -8
- package/dist/core/group/types.js +28 -1
- 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 +77 -2
- package/dist/core/index-freshness.js +109 -2
- 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 +6 -6
- package/dist/core/ingestion/cluster-enricher.js +8 -4
- package/dist/core/ingestion/community-processor.d.ts +21 -3
- package/dist/core/ingestion/community-processor.js +81 -82
- package/dist/core/ingestion/di-extractors/index.d.ts +9 -33
- package/dist/core/ingestion/di-extractors/spring.d.ts +1 -1
- package/dist/core/ingestion/di-extractors/spring.js +8 -1
- 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/filesystem-walker.js +30 -14
- package/dist/core/ingestion/finalize-orchestrator.js +1 -0
- package/dist/core/ingestion/frameworks/spring/analysis-features.d.ts +6 -0
- package/dist/core/ingestion/frameworks/spring/analysis-features.js +35 -1
- 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-catalog.js +1 -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/di-metadata.d.ts +3 -0
- package/dist/core/ingestion/frameworks/spring/di-metadata.js +162 -13
- 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 +429 -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 +65 -19
- 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 +29 -1
- package/dist/core/ingestion/language-config.js +110 -35
- package/dist/core/ingestion/language-provider.d.ts +209 -7
- package/dist/core/ingestion/language-provider.js +37 -0
- package/dist/core/ingestion/languages/c/captures.js +7 -0
- package/dist/core/ingestion/languages/c/import-target.js +12 -16
- package/dist/core/ingestion/languages/c/scope-resolver.js +20 -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/scope-resolver.js +27 -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 +14 -2
- 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 +48 -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 +19 -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 +598 -16
- 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 +6 -1
- package/dist/core/ingestion/languages/go/captures.js +108 -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 +4 -0
- package/dist/core/ingestion/languages/java/analysis-features.js +12 -0
- package/dist/core/ingestion/languages/java/capture-side-channel.d.ts +12 -0
- package/dist/core/ingestion/languages/java/capture-side-channel.js +48 -0
- package/dist/core/ingestion/languages/java/captures.js +129 -44
- 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/query.js +16 -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 +10 -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-conditionals.d.ts +11 -0
- package/dist/core/ingestion/languages/java/spring-conditionals.js +48 -0
- package/dist/core/ingestion/languages/java/spring-di.d.ts +4 -1
- package/dist/core/ingestion/languages/java/spring-di.js +41 -9
- 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 +94 -3
- package/dist/core/ingestion/languages/javascript/captures.d.ts +6 -1
- package/dist/core/ingestion/languages/javascript/captures.js +262 -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 +211 -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-siblings.js +77 -9
- package/dist/core/ingestion/languages/kotlin/capture-side-channel.d.ts +15 -0
- package/dist/core/ingestion/languages/kotlin/capture-side-channel.js +48 -0
- package/dist/core/ingestion/languages/kotlin/captures.js +43 -1
- 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/query.js +28 -2
- package/dist/core/ingestion/languages/kotlin/scope-resolver.js +23 -2
- 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-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 +2 -0
- package/dist/core/ingestion/languages/kotlin/spring-di.js +60 -11
- 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/php/captures.d.ts +5 -0
- package/dist/core/ingestion/languages/php/captures.js +319 -51
- package/dist/core/ingestion/languages/php/import-target.d.ts +3 -4
- package/dist/core/ingestion/languages/php/import-target.js +192 -62
- package/dist/core/ingestion/languages/php/query.js +31 -0
- 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.js +29 -0
- 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 -7
- package/dist/core/ingestion/languages/python/query.js +9 -0
- package/dist/core/ingestion/languages/python/receiver-binding.d.ts +8 -6
- package/dist/core/ingestion/languages/python/receiver-binding.js +108 -12
- package/dist/core/ingestion/languages/python/scope-resolver.js +27 -4
- package/dist/core/ingestion/languages/python/simple-hooks.js +2 -8
- package/dist/core/ingestion/languages/python.js +13 -0
- package/dist/core/ingestion/languages/ruby/captures.js +158 -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 +39 -1
- 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 +39 -6
- 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 +87 -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 +267 -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/convex-endpoint-metadata.d.ts +7 -0
- package/dist/core/ingestion/languages/typescript/convex-endpoint-metadata.js +92 -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/query.d.ts +1 -0
- package/dist/core/ingestion/languages/typescript/query.js +303 -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 +292 -0
- package/dist/core/ingestion/languages/typescript.js +93 -2
- 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/pipeline-phases/di.d.ts +1 -1
- package/dist/core/ingestion/pipeline-phases/di.js +136 -21
- package/dist/core/ingestion/pipeline-phases/index.d.ts +2 -0
- package/dist/core/ingestion/pipeline-phases/index.js +2 -0
- package/dist/core/ingestion/pipeline-phases/parse-impl.d.ts +15 -0
- package/dist/core/ingestion/pipeline-phases/parse-impl.js +154 -4
- package/dist/core/ingestion/pipeline-phases/parse.js +5 -0
- package/dist/core/ingestion/pipeline-phases/processes.d.ts +3 -2
- package/dist/core/ingestion/pipeline-phases/processes.js +91 -6
- package/dist/core/ingestion/pipeline-phases/routes.js +116 -25
- 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/types.d.ts +7 -0
- package/dist/core/ingestion/pipeline.d.ts +26 -2
- package/dist/core/ingestion/pipeline.js +60 -11
- 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 +66 -6
- package/dist/core/ingestion/route-extractors/constant-resolver.d.ts +8 -2
- package/dist/core/ingestion/route-extractors/constant-resolver.js +11 -7
- package/dist/core/ingestion/route-extractors/data-route-table.d.ts +40 -0
- package/dist/core/ingestion/route-extractors/data-route-table.js +876 -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/java-const-resolver.d.ts +114 -0
- package/dist/core/ingestion/route-extractors/java-const-resolver.js +569 -0
- package/dist/core/ingestion/route-extractors/js-const-resolver.d.ts +192 -0
- package/dist/core/ingestion/route-extractors/js-const-resolver.js +1033 -0
- package/dist/core/ingestion/route-extractors/nest.d.ts +53 -0
- package/dist/core/ingestion/route-extractors/nest.js +523 -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 +214 -29
- 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 +311 -16
- package/dist/core/ingestion/scope-resolution/contract/scope-resolver.d.ts +311 -21
- package/dist/core/ingestion/scope-resolution/contract/scope-resolver.js +16 -5
- package/dist/core/ingestion/scope-resolution/graph-bridge/edges.d.ts +12 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/edges.js +47 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/ids.d.ts +20 -15
- package/dist/core/ingestion/scope-resolution/graph-bridge/ids.js +280 -42
- 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 +58 -1
- package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +137 -34
- 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 +39 -1
- package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.d.ts +18 -1
- package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.js +113 -18
- 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 +3 -0
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.js +101 -41
- 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 +5 -1
- package/dist/core/ingestion/scope-resolution/passes/property-dispatch.js +8 -1
- package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.d.ts +105 -5
- 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 +29 -0
- package/dist/core/ingestion/scope-resolution/pipeline/phase.js +57 -0
- package/dist/core/ingestion/scope-resolution/pipeline/run.d.ts +55 -1
- package/dist/core/ingestion/scope-resolution/pipeline/run.js +241 -19
- 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 +905 -22
- 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/tree-sitter-queries.d.ts +11 -11
- package/dist/core/ingestion/tree-sitter-queries.js +678 -4
- package/dist/core/ingestion/type-env.js +11 -7
- package/dist/core/ingestion/type-extractors/jvm.js +2 -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 +322 -16
- package/dist/core/ingestion/utils/ast-helpers.js +727 -150
- 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 +59 -0
- package/dist/core/ingestion/utils/callable-flow-captures.js +51 -1
- 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 +80 -0
- package/dist/core/ingestion/workers/callable-id.js +125 -0
- package/dist/core/ingestion/workers/parse-worker.d.ts +14 -1
- package/dist/core/ingestion/workers/parse-worker.js +493 -54
- package/dist/core/ingestion/workers/worker-pool.d.ts +20 -27
- package/dist/core/ingestion/workers/worker-pool.js +91 -3
- package/dist/core/lbug/csv-generator.d.ts +27 -0
- package/dist/core/lbug/csv-generator.js +72 -17
- package/dist/core/lbug/extension-load-error.js +13 -2
- package/dist/core/lbug/extension-loader.d.ts +29 -0
- package/dist/core/lbug/extension-loader.js +31 -6
- 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 +290 -11
- package/dist/core/lbug/lbug-adapter.js +652 -69
- package/dist/core/lbug/native-check.d.ts +21 -0
- package/dist/core/lbug/native-check.js +248 -32
- 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 +9 -0
- package/dist/core/lbug/pool-adapter.js +164 -14
- 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 +163 -4
- package/dist/core/lbug/schema.js +404 -159
- package/dist/core/lbug/sync-csv-writer.d.ts +47 -0
- package/dist/core/lbug/sync-csv-writer.js +108 -0
- package/dist/core/run-analyze.d.ts +147 -0
- package/dist/core/run-analyze.js +1215 -179
- 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 +150 -9
- package/dist/core/search/fts-indexes.js +241 -23
- package/dist/core/wiki/graph-queries.js +145 -112
- package/dist/core/wiki/llm-client.d.ts +29 -3
- package/dist/core/wiki/llm-client.js +47 -12
- 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/local/aop-metadata.d.ts +77 -0
- package/dist/mcp/local/aop-metadata.js +227 -0
- package/dist/mcp/local/bean-metadata.d.ts +2 -1
- package/dist/mcp/local/bean-metadata.js +22 -1
- package/dist/mcp/local/convex-metadata.d.ts +8 -0
- package/dist/mcp/local/convex-metadata.js +45 -0
- package/dist/mcp/local/local-backend.d.ts +174 -11
- package/dist/mcp/local/local-backend.js +1678 -331
- 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/repository-policy.d.ts +1 -0
- package/dist/mcp/repository-policy.js +5 -0
- package/dist/mcp/resources.js +26 -4
- package/dist/mcp/server.js +23 -13
- package/dist/mcp/tools.d.ts +8 -0
- package/dist/mcp/tools.js +76 -23
- package/dist/server/analyze-job.d.ts +37 -2
- package/dist/server/analyze-job.js +13 -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 +1 -1
- package/dist/server/analyze-worker-core.js +10 -1
- 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/api.d.ts +2 -11
- package/dist/server/api.js +164 -163
- 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/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/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 +131 -0
- package/dist/storage/git.js +236 -2
- package/dist/storage/index-lock.d.ts +102 -0
- package/dist/storage/index-lock.js +660 -0
- package/dist/storage/parse-cache.js +588 -3
- package/dist/storage/parsedfile-store.js +76 -6
- package/dist/storage/repo-manager.d.ts +54 -435
- package/dist/storage/repo-manager.js +312 -215
- 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 +11 -2
- package/scripts/cross-platform-shard.ts +153 -0
- package/scripts/cross-platform-tests.ts +122 -0
- package/scripts/run-cross-platform.ts +16 -5
- 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-plan/README.md +11 -6
- package/skills/gitnexus-plan/references/evidence-provenance.md +49 -12
- package/skills/gitnexus-plan/scripts/evidence-provenance.mjs +654 -372
- package/skills/gitnexus-refactoring.md +48 -5
- package/skills/gitnexus-review/SKILL.md +12 -6
- package/skills/gitnexus-review/ci-personas/ci-adversarial-lens.md +1 -1
- package/skills/gitnexus-review/ci-personas/ci-blast-radius-lens.md +1 -1
- package/skills/gitnexus-review/ci-personas/ci-correctness-lens.md +1 -1
- package/skills/gitnexus-review/ci-personas/ci-coverage-lens.md +1 -1
- package/skills/gitnexus-review/ci-personas/ci-critic-lens.md +1 -1
- package/skills/gitnexus-review/ci-personas/ci-security-lens.md +1 -1
- package/skills/gitnexus-taint-analysis.md +13 -7
- package/skills/gitnexus-work/SKILL.md +4 -1
- package/skills/gitnexus-work/references/evidence-provenance.md +49 -12
- package/skills/gitnexus-work/scripts/evidence-provenance.mjs +654 -372
- package/vendor/leiden/utils.cjs +28 -1
- package/web/assets/ProcessFlowModal-Badh2Pbg.js +24 -0
- package/web/assets/{__vite-browser-external-bMKyYQkO.js → __vite-browser-external-COxE8F0G.js} +1 -1
- package/web/assets/abnfDiagram-QNN2D4NM-Cq2djWWe.js +1 -0
- package/web/assets/agent-Dr4l5EOp.js +662 -0
- package/web/assets/architecture-TIHT7OUA-V6N4J3SY-fTePvLoe.js +1 -0
- package/web/assets/architectureDiagram-OT7VKSJ7-mKEXxkeF.js +36 -0
- package/web/assets/{blockDiagram-7IZFK4PR-DBefcjof.js → blockDiagram-54WLDVWM-Dg_hrRWE.js} +4 -4
- package/web/assets/{c4Diagram-Y2BXMSZH-EjWnjEJl.js → c4Diagram-X2LASM7V-CnhoT4aV.js} +2 -2
- 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-LII3EMHJ-BL6lKJ_P.js → chunk-6L755F7B-CMhLBxi2.js} +1 -1
- package/web/assets/{chunk-QA3QBVWF-DVXPOIxe.js → chunk-7CWYLC5S-DRgGkkpF.js} +1 -1
- package/web/assets/{chunk-ZXARS5L4-C3v-4Fsw.js → chunk-A7VWPJGB-B4O3oQdQ.js} +1 -1
- 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-INKRHTLW-Ckl3_KkO.js → chunk-SZD42YQK-ijyKKVr1.js} +21 -21
- package/web/assets/{chunk-LCXTWHL2-C162wE5z.js → chunk-TFPGFQPA-Dj6a-0pC.js} +3 -3
- 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-RG4AUYOV-ZNgyLFq6.js → chunk-VJFVEZTB-CX66F2ep.js} +3 -3
- 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-HNR7UZ2L-DVRltWbL.js → diagram-KFBZAVDW-Dfmf_4ti.js} +3 -3
- 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/error-D9MtuG9s.js +1 -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-D7mTFcvQ.js → index-2zdvEdzg.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-XpjJRU9h.js → ishikawaDiagram-4JDSWWDM-DmqWtjkl.js} +2 -2
- package/web/assets/{journeyDiagram-M6C3CM3L-C6wjooas.js → journeyDiagram-QUS3FAKT-XAzVzrQW.js} +3 -3
- package/web/assets/{kanban-definition-75IXJCU3-5_UVY79g.js → kanban-definition-D4L7SQKK-YurRnmYn.js} +6 -6
- package/web/assets/katex-C5OPUE3Q-Bnbavtmu.js +257 -0
- package/web/assets/{mindmap-definition-2TDM6QVE-8xDLzk2e.js → mindmap-definition-66QP5TD6-ChrWWnil.js} +5 -5
- package/web/assets/node.browser-U-KyT5AW.js +1 -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/{quadrantDiagram-VICAPDV7-DR54jOeR.js → quadrantDiagram-VO5QLCXA-B7098wSc.js} +3 -3
- 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-JXO7QTGE-PEkg7sKC.js → requirementDiagram-RASO5HTO-B-l8InpK.js} +4 -4
- package/web/assets/{sankeyDiagram-URQDO5SZ-DDWEtjcs.js → sankeyDiagram-F32LOJ6L-Kd7zjJgX.js} +3 -3
- package/web/assets/{sequenceDiagram-VS2MUI6T-Bv-uwANx.js → sequenceDiagram-URATNSBD-BlcdY9DS.js} +7 -7
- 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-O6YCAMPW-Qmsuo7qS.js → timeline-definition-WJXWRH4I-DUfp1R3E.js} +3 -3
- 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 +16 -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/web/assets/ProcessFlowModal-CwkpVkv-.js +0 -22
- package/web/assets/agent-Ds-lkZjX.js +0 -626
- package/web/assets/architecture-7EHR7CIX-6QZW5X65-BVWFvYz2.js +0 -1
- package/web/assets/architectureDiagram-UL44E2DR-CmG3uPWf.js +0 -36
- package/web/assets/chunk-2T2R6R2M-Bb6Sy3_j.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-CA7OhIEf.js +0 -124
- package/web/assets/chunk-7J6CGLKN-BlKwgXKs.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-J5EP6P6S-L19oz55R.js +0 -1
- package/web/assets/chunk-KGFNY3KK-BZeP-55u.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-LRIF4GLE-n59lhprL.js +0 -1
- package/web/assets/chunk-RERM46MO-B5dAdWpP.js +0 -1
- package/web/assets/chunk-RKZBBQEN-MyIQbGgD.js +0 -1
- package/web/assets/chunk-T2UQINTJ-BEyXhZWe.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-ByqTVLvh.js +0 -1
- package/web/assets/chunk-VU6ZFW4Y-BLeasdkU.js +0 -2
- package/web/assets/classDiagram-KGZ6W3CR-olpO3fMe.js +0 -1
- package/web/assets/classDiagram-v2-72OJOZXJ-olpO3fMe.js +0 -1
- package/web/assets/dagre-ND4H6XIP-CY4iIF7v.js +0 -4
- package/web/assets/diagram-3NCE3AQN-CO6QpzEE.js +0 -43
- package/web/assets/diagram-GF46GFSD-B2atbzmU.js +0 -24
- package/web/assets/diagram-QXG6HAR7-DR6AHD2h.js +0 -24
- package/web/assets/diagram-WEQXMOUZ-DkpoMwTL.js +0 -10
- package/web/assets/erDiagram-L5TCEMPS-n8g_90bc.js +0 -85
- package/web/assets/eventmodeling-FCH6USID-MREXMVOE-CgFBM7e-.js +0 -1
- package/web/assets/flowDiagram-H6V6AXG4-SGMDiCkB.js +0 -162
- package/web/assets/ganttDiagram-JCBTUEKG-Cb3UBqRS.js +0 -292
- package/web/assets/gitGraph-WXDBUCRP-R675I2BI-DCJv7SII.js +0 -1
- package/web/assets/gitGraphDiagram-S2ZK5IYY-Bs9CR7tq.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-T368on4D.js +0 -2
- package/web/assets/katex-K3KEBU37-qRQBy-EZ.js +0 -261
- package/web/assets/node-Ct_zna8U.js +0 -8
- 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-Bv4LpAbr.js +0 -30
- package/web/assets/radar-GUYGQ44K-RDLRG3WG-DeD6yN_0.js +0 -1
- package/web/assets/sdk-CzHHH8tD.js +0 -37
- package/web/assets/src-Cv1eWg0o.js +0 -1
- package/web/assets/stateDiagram-7D4R322I-DVNjmkEq.js +0 -1
- package/web/assets/stateDiagram-v2-36443NZ5-CyN4Fh7_.js +0 -1
- 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-BD1iK1SX.js +0 -34
- package/web/assets/wardley-L42UT6IY-5TKZOOLJ-DqrT9tB8.js +0 -1
- package/web/assets/wardleyDiagram-CUQ6CDDI-D6TzLVob.js +0 -78
- package/web/assets/xychartDiagram-N2JHSOCM-CoZ_Tits.js +0 -7
- /package/web/assets/{chunk-7W6UQGC5-pyKGssV3.js → chunk-LIEV3EAG-pyKGssV3.js} +0 -0
|
@@ -34,9 +34,24 @@
|
|
|
34
34
|
* as `ownedDefs` + a local `BindingRef { origin: 'local' }`.
|
|
35
35
|
* 3. **Collect raw imports.** Walk `@import.*` matches. Call
|
|
36
36
|
* `provider.interpretImport` per match; attach the returned
|
|
37
|
-
* `ParsedImport` to the ParsedFile
|
|
38
|
-
*
|
|
39
|
-
*
|
|
37
|
+
* `ParsedImport` to the ParsedFile — not to any `Scope`.
|
|
38
|
+
* `provider.importOwningScope` is declared on `LanguageProvider` and
|
|
39
|
+
* implemented by a dozen providers, but has no call site anywhere; this
|
|
40
|
+
* step's output is a flat per-file list.
|
|
41
|
+
*
|
|
42
|
+
* One scope fact is read before that list flattens it away:
|
|
43
|
+
* `runsOnlyWhenCalled`, set when the statement sits anywhere inside a
|
|
44
|
+
* `Function`. It is decided here because here is the last stage that can
|
|
45
|
+
* — finalize receives the flat list, and its consumer receives a map
|
|
46
|
+
* keyed by the file's Module scope only (see
|
|
47
|
+
* `ParsedImport.runsOnlyWhenCalled`). This is a position fact, not a
|
|
48
|
+
* syntax one, so it is decided centrally for every language rather than
|
|
49
|
+
* per provider — with one capability a provider may declare to opt out
|
|
50
|
+
* of it entirely, `importsExecuteWhereWritten: false`, because position
|
|
51
|
+
* cannot defer an import that never executes (C/C++ `#include`, Rust
|
|
52
|
+
* `use`, COBOL `COPY`). Providers still decide their own *syntactic* nesting
|
|
53
|
+
* facts in their capture emitters, where the node is in hand (see
|
|
54
|
+
* `languages/python/import-decomposer.ts`).
|
|
40
55
|
* 4. **Collect type bindings.** Walk `@type-binding.*` matches. Call
|
|
41
56
|
* `provider.interpretTypeBinding` per match. Attach the resulting
|
|
42
57
|
* `TypeRef` to the innermost containing scope's `typeBindings`
|
|
@@ -59,7 +74,9 @@
|
|
|
59
74
|
* - `ParsedFile.referenceSites` — pre-resolution usage facts.
|
|
60
75
|
*/
|
|
61
76
|
import { buildPositionIndex, buildScopeTree, canParentScope, makeScopeId } from '../../_shared/index.js';
|
|
62
|
-
import {
|
|
77
|
+
import { isValidReceiverChain } from './utils/receiver-chain-codec.js';
|
|
78
|
+
import { extractTemplateArguments, stripTrailingCallSuffix, typeApplicationArguments, } from './utils/template-arguments.js';
|
|
79
|
+
import { parseTypeParameterList } from './utils/type-parameters.js';
|
|
63
80
|
// ─── Public entry point ─────────────────────────────────────────────────────
|
|
64
81
|
/**
|
|
65
82
|
* Drive the five extraction passes and return a `ParsedFile`.
|
|
@@ -84,7 +101,11 @@ export function extract(matches, filePath, provider) {
|
|
|
84
101
|
for (let i = 0; i < scopeDrafts.length; i++) {
|
|
85
102
|
const d = scopeDrafts[i];
|
|
86
103
|
if (d.parent === null && d.kind !== 'Module') {
|
|
87
|
-
|
|
104
|
+
// `ownsReceivers` must be carried across: it is decided from the scope's
|
|
105
|
+
// own capture in pass 1 and re-parenting does not change what the scope
|
|
106
|
+
// binds. Dropping it here would silently un-mark every function scope in
|
|
107
|
+
// a file whose root parsed as ERROR (the only way a scope is orphaned).
|
|
108
|
+
scopeDrafts[i] = makeDraft(d.id, moduleScope.id, d.kind, d.range, d.filePath, d.ownsReceivers, d.lexicalNames);
|
|
88
109
|
}
|
|
89
110
|
}
|
|
90
111
|
const scopes = scopeDrafts.map(draftToScope);
|
|
@@ -105,7 +126,7 @@ export function extract(matches, filePath, provider) {
|
|
|
105
126
|
pass2AttachDeclarations(partitioned.declaration, scopeDrafts, positionIndex, localDefs, filePath, provider, scopeTree);
|
|
106
127
|
// ── Pass 3: collect raw imports ─────────────────────────────────────
|
|
107
128
|
const parsedImports = [];
|
|
108
|
-
pass3CollectImports(partitioned.import_, parsedImports, provider);
|
|
129
|
+
pass3CollectImports(partitioned.import_, positionIndex, filePath, parsedImports, provider, scopeTree);
|
|
109
130
|
// ── Pass 4: collect type bindings ───────────────────────────────────
|
|
110
131
|
pass4CollectTypeBindings(partitioned.typeBinding, scopeDrafts, positionIndex, filePath, provider, scopeTree);
|
|
111
132
|
// ── Pass 5: collect reference sites ─────────────────────────────────
|
|
@@ -230,6 +251,8 @@ function draftToScope(draft) {
|
|
|
230
251
|
ownedDefs: Object.freeze(draft.ownedDefs.slice()),
|
|
231
252
|
imports: Object.freeze(draft.imports.slice()),
|
|
232
253
|
typeBindings: new Map(draft.typeBindings),
|
|
254
|
+
lexicalNames: draft.lexicalNames,
|
|
255
|
+
ownsReceivers: draft.ownsReceivers,
|
|
233
256
|
};
|
|
234
257
|
}
|
|
235
258
|
// ─── Pass 1: build scope tree ──────────────────────────────────────────────
|
|
@@ -283,7 +306,7 @@ function pass1BuildScopes(matches, filePath, provider) {
|
|
|
283
306
|
stack.pop();
|
|
284
307
|
}
|
|
285
308
|
const parent = stack.length > 0 ? stack[stack.length - 1].id : null;
|
|
286
|
-
drafts.push(makeDraft(cand.id, parent, cand.kind, cand.range, filePath));
|
|
309
|
+
drafts.push(makeDraft(cand.id, parent, cand.kind, cand.range, filePath, provider.scopeOwnsReceivers?.(cand.match), parseScopeLexicalNames(cand.match)));
|
|
287
310
|
stack.push(cand);
|
|
288
311
|
}
|
|
289
312
|
return drafts;
|
|
@@ -314,7 +337,7 @@ function resolveKindForScopeMatch(match, anchor, provider) {
|
|
|
314
337
|
return null;
|
|
315
338
|
}
|
|
316
339
|
}
|
|
317
|
-
function makeDraft(id, parent, kind, range, filePath) {
|
|
340
|
+
function makeDraft(id, parent, kind, range, filePath, ownsReceivers, lexicalNames) {
|
|
318
341
|
return {
|
|
319
342
|
id,
|
|
320
343
|
parent,
|
|
@@ -325,13 +348,35 @@ function makeDraft(id, parent, kind, range, filePath) {
|
|
|
325
348
|
ownedDefs: [],
|
|
326
349
|
imports: [],
|
|
327
350
|
typeBindings: new Map(),
|
|
351
|
+
lexicalNames,
|
|
352
|
+
ownsReceivers,
|
|
328
353
|
};
|
|
329
354
|
}
|
|
355
|
+
function parseScopeLexicalNames(match) {
|
|
356
|
+
const raw = match['@scope.lexical-names']?.text;
|
|
357
|
+
if (raw === undefined)
|
|
358
|
+
return undefined;
|
|
359
|
+
try {
|
|
360
|
+
const parsed = JSON.parse(raw);
|
|
361
|
+
if (!Array.isArray(parsed))
|
|
362
|
+
return undefined;
|
|
363
|
+
const names = parsed.filter((name) => typeof name === 'string' && name.length > 0);
|
|
364
|
+
return names.length > 0 ? new Set(names) : undefined;
|
|
365
|
+
}
|
|
366
|
+
catch {
|
|
367
|
+
return undefined;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
330
370
|
// ─── Pass 2: attach declarations + local bindings ──────────────────────────
|
|
331
371
|
function pass2AttachDeclarations(matches, drafts, positionIndex, localDefs, filePath, provider, scopeTree) {
|
|
332
372
|
const draftById = new Map();
|
|
333
373
|
for (const d of drafts)
|
|
334
374
|
draftById.set(d.id, d);
|
|
375
|
+
// First def seen per `nodeId`, for the duplicate backfill below. Two query
|
|
376
|
+
// patterns can legitimately match ONE declaration — a C++ templated struct
|
|
377
|
+
// matches both the standalone `struct_specifier` rule and the
|
|
378
|
+
// `template_declaration` rule that wraps it — and both mint the same def id.
|
|
379
|
+
const firstDefByNodeId = new Map();
|
|
335
380
|
for (const match of matches) {
|
|
336
381
|
const anchor = anchorCaptureFor(match, '@declaration.');
|
|
337
382
|
if (anchor === undefined)
|
|
@@ -339,6 +384,32 @@ function pass2AttachDeclarations(matches, drafts, positionIndex, localDefs, file
|
|
|
339
384
|
const def = buildDefFromDeclarationMatch(match, anchor, filePath);
|
|
340
385
|
if (def === undefined)
|
|
341
386
|
continue;
|
|
387
|
+
// ── Duplicate-declaration backfill ───────────────────────────────────────
|
|
388
|
+
// `buildDefIndex` is FIRST-WRITE-WINS, so when one declaration produces two
|
|
389
|
+
// defs under one id, whichever match tree-sitter reported first is the one
|
|
390
|
+
// resolution sees. That was harmless while the twins were byte-identical.
|
|
391
|
+
// It stops being harmless the moment one twin can carry a field the other
|
|
392
|
+
// structurally cannot: a C++ `template <class T> struct Vec` has its
|
|
393
|
+
// parameter list on the ENCLOSING `template_declaration`, so the standalone
|
|
394
|
+
// `struct_specifier` twin can never see it, and match order would silently
|
|
395
|
+
// decide whether `Vec` remembers `T`. Source order deciding a resolution
|
|
396
|
+
// fact is the failure mode this subsystem rejects everywhere else.
|
|
397
|
+
//
|
|
398
|
+
// Copying the field onto BOTH twins makes the outcome identical whichever
|
|
399
|
+
// one wins. Deliberately narrow — only `typeParameters`, the one field with
|
|
400
|
+
// an asymmetric twin today. Widening this to "merge all metadata" would
|
|
401
|
+
// change what every existing duplicate resolves to, which is a different
|
|
402
|
+
// change with a different blast radius and no evidence behind it yet.
|
|
403
|
+
const first = firstDefByNodeId.get(def.nodeId);
|
|
404
|
+
if (first === undefined) {
|
|
405
|
+
firstDefByNodeId.set(def.nodeId, def);
|
|
406
|
+
}
|
|
407
|
+
else if (first.typeParameters === undefined && def.typeParameters !== undefined) {
|
|
408
|
+
first.typeParameters = def.typeParameters;
|
|
409
|
+
}
|
|
410
|
+
else if (def.typeParameters === undefined && first.typeParameters !== undefined) {
|
|
411
|
+
def.typeParameters = first.typeParameters;
|
|
412
|
+
}
|
|
342
413
|
// Find the innermost scope that contains the declaration's anchor range.
|
|
343
414
|
const innermostId = positionIndex.atPosition(filePath, anchor.range.startLine, anchor.range.startCol);
|
|
344
415
|
if (innermostId === undefined)
|
|
@@ -409,8 +480,15 @@ function buildDefFromDeclarationMatch(match, anchor, filePath) {
|
|
|
409
480
|
const declaredType = match['@declaration.field-type']?.text;
|
|
410
481
|
const returnType = match['@declaration.return-type']?.text;
|
|
411
482
|
const templateConstraints = parseJsonCapture(match['@declaration.template-constraints']);
|
|
483
|
+
// The DECLARED parameters, a different axis from `templateArguments` above:
|
|
484
|
+
// that reads the arguments written on the name, this reads the list the
|
|
485
|
+
// declaration was written in terms of. A declaration can carry both, and for a
|
|
486
|
+
// C++ partial specialization the pairing is the only thing that tells it apart
|
|
487
|
+
// from a full specialization with the identical arguments.
|
|
488
|
+
const typeParameters = parseTypeParameterList(match['@declaration.type-parameters']?.text ?? '');
|
|
412
489
|
const isExplicit = parseBooleanCapture(match['@declaration.is-explicit']);
|
|
413
490
|
const isDeleted = parseBooleanCapture(match['@declaration.is-deleted']);
|
|
491
|
+
const isSynthetic = parseBooleanCapture(match['@declaration.is-synthetic']);
|
|
414
492
|
return {
|
|
415
493
|
nodeId: makeDefId(filePath, anchor.range, type, nameCap.text),
|
|
416
494
|
filePath,
|
|
@@ -423,9 +501,11 @@ function buildDefFromDeclarationMatch(match, anchor, filePath) {
|
|
|
423
501
|
...(declaredType !== undefined ? { declaredType } : {}),
|
|
424
502
|
...(returnType !== undefined ? { returnType } : {}),
|
|
425
503
|
...(templateArguments !== undefined ? { templateArguments } : {}),
|
|
504
|
+
...(typeParameters !== undefined ? { typeParameters } : {}),
|
|
426
505
|
...(templateConstraints !== undefined ? { templateConstraints } : {}),
|
|
427
506
|
...(isExplicit === true ? { isExplicit: true } : {}),
|
|
428
507
|
...(isDeleted === true ? { isDeleted: true } : {}),
|
|
508
|
+
...(isSynthetic === true ? { isSynthetic: true } : {}),
|
|
429
509
|
};
|
|
430
510
|
}
|
|
431
511
|
/** Parse an opaque JSON payload synthesized by per-language captures
|
|
@@ -522,7 +602,8 @@ function parseJsonStringArrayCapture(cap) {
|
|
|
522
602
|
}
|
|
523
603
|
}
|
|
524
604
|
function deriveDeclarationName(match, def) {
|
|
525
|
-
const nameCap = match['@declaration.name'] ??
|
|
605
|
+
const nameCap = match['@declaration.binding-name'] ??
|
|
606
|
+
match['@declaration.name'] ??
|
|
526
607
|
match[Object.keys(match).find((k) => k.startsWith('@declaration.') && k.endsWith('.name')) ?? ''];
|
|
527
608
|
if (nameCap !== undefined)
|
|
528
609
|
return nameCap.text;
|
|
@@ -650,9 +731,74 @@ function makeDefId(filePath, range, type, name) {
|
|
|
650
731
|
return `def:${filePath}#${range.startLine}:${range.startCol}:${type}:${name}`;
|
|
651
732
|
}
|
|
652
733
|
// ─── Pass 3: collect raw imports ───────────────────────────────────────────
|
|
653
|
-
|
|
734
|
+
/**
|
|
735
|
+
* Does this import run only when something calls the function it sits in?
|
|
736
|
+
*
|
|
737
|
+
* Walks the scope chain to the file root rather than reading the immediate
|
|
738
|
+
* kind, because the immediate kind is not enough in either direction. A `Block`
|
|
739
|
+
* at the top of a module (`if (FLAG) { require('./x'); }`) runs during
|
|
740
|
+
* initialization; the same `Block` inside a function does not. `Class`,
|
|
741
|
+
* `Namespace`, `Expression` and `Object` bodies execute where they are defined,
|
|
742
|
+
* so they are initialization-time too. Only an enclosing `Function` — anywhere
|
|
743
|
+
* up the chain — defers execution.
|
|
744
|
+
*
|
|
745
|
+
* Language-agnostic on purpose: it is what catches Python's
|
|
746
|
+
* `def f(): from x import Y`, Ruby's `def f; require 'x'; end` and a CommonJS
|
|
747
|
+
* `require()` in a function body, none of which any `kind` marks as deferred —
|
|
748
|
+
* only their position says it.
|
|
749
|
+
*
|
|
750
|
+
* The rule is about EXECUTION, so it does not hold for a language whose
|
|
751
|
+
* imports are not executed statements at all — a C/C++ `#include` (spliced by
|
|
752
|
+
* the preprocessor before the program runs) or a Rust `use` (a compile-time
|
|
753
|
+
* path alias). Both are legal inside a function body and neither is deferred
|
|
754
|
+
* by sitting there, so a cycle they form is REAL. Marking one deferred would
|
|
755
|
+
* make `check --cycles` drop that cycle, and suppressing a true cycle is the
|
|
756
|
+
* failure direction that matters. Such a language opts out by declaring
|
|
757
|
+
* `LanguageProvider.importsExecuteWhereWritten: false`, checked by the caller
|
|
758
|
+
* — the capability is named on the provider rather than the language being
|
|
759
|
+
* named here, because shared ingestion code must not branch on language
|
|
760
|
+
* (AGENTS.md).
|
|
761
|
+
*
|
|
762
|
+
* Decided HERE and nowhere later because this is the last stage that knows the
|
|
763
|
+
* answer — see `ParsedImport.runsOnlyWhenCalled` for why finalize and the graph
|
|
764
|
+
* bridge cannot recover it.
|
|
765
|
+
*/
|
|
766
|
+
function runsOnlyWhenCalled(scopeTree, scopeId) {
|
|
767
|
+
// Inline rather than `utils/scope-tree-walk.ts`'s `walkToScope`, which is the
|
|
768
|
+
// shared primitive for exactly this climb and IS the right call everywhere it
|
|
769
|
+
// is used today — five `bindingScopeFor` hooks, all per-BINDING. This runs per
|
|
770
|
+
// IMPORT on every file of every analyze, and `walkToScope` takes `...kinds`
|
|
771
|
+
// and builds `new Set(kinds)` per call: measured on this host, 1.0 ns inline
|
|
772
|
+
// against 32.3 ns through the helper for the module-level case that is ~99% of
|
|
773
|
+
// imports, plus ~232 B of allocation each. Rewriting the helper's membership
|
|
774
|
+
// test as `kinds.includes` takes it to 8.8 ns — still 8x, because the rest
|
|
775
|
+
// array allocates regardless. Reuse loses to a two-field loop here; it would
|
|
776
|
+
// not on a colder path.
|
|
777
|
+
//
|
|
778
|
+
// No depth cap: the chain is acyclic by construction, since `buildScopeTree`
|
|
779
|
+
// only parents a scope to one that STRICTLY contains it.
|
|
780
|
+
let current = scopeId;
|
|
781
|
+
while (current !== null) {
|
|
782
|
+
const scope = scopeTree.getScope(current);
|
|
783
|
+
if (scope === undefined)
|
|
784
|
+
return false;
|
|
785
|
+
if (scope.kind === 'Function')
|
|
786
|
+
return true;
|
|
787
|
+
current = scope.parent;
|
|
788
|
+
}
|
|
789
|
+
return false;
|
|
790
|
+
}
|
|
791
|
+
function pass3CollectImports(matches, positionIndex, filePath, parsedImports, provider, scopeTree) {
|
|
654
792
|
if (provider.interpretImport === undefined)
|
|
655
793
|
return;
|
|
794
|
+
// Hoisted: the capability is a property of the language, identical for every
|
|
795
|
+
// match in the file. A provider that declares its imports do not execute
|
|
796
|
+
// where they are written (C/C++ `#include`, Rust `use`, COBOL `COPY`) skips
|
|
797
|
+
// the position walk entirely — position cannot defer something that never
|
|
798
|
+
// runs, and marking one deferred would hide a real cycle. Absent reads as
|
|
799
|
+
// `true`, so an undeclared provider is unchanged. See
|
|
800
|
+
// `LanguageProvider.importsExecuteWhereWritten`.
|
|
801
|
+
const positionCanDefer = provider.importsExecuteWhereWritten !== false;
|
|
656
802
|
for (const match of matches) {
|
|
657
803
|
const anchor = anchorCaptureFor(match, '@import.');
|
|
658
804
|
if (anchor === undefined)
|
|
@@ -660,10 +806,24 @@ function pass3CollectImports(matches, parsedImports, provider) {
|
|
|
660
806
|
const parsed = provider.interpretImport(match);
|
|
661
807
|
if (parsed === null)
|
|
662
808
|
continue;
|
|
663
|
-
|
|
809
|
+
// The statement's own position, resolved to the innermost scope holding
|
|
810
|
+
// it. An unlocatable anchor leaves the import unmarked, which reads as
|
|
811
|
+
// "runs at initialization" — the fail-safe direction, since it can only
|
|
812
|
+
// make `check --cycles` over-report.
|
|
813
|
+
const inScopeId = positionCanDefer
|
|
814
|
+
? positionIndex.atPosition(filePath, anchor.range.startLine, anchor.range.startCol)
|
|
815
|
+
: undefined;
|
|
816
|
+
const deferred = inScopeId !== undefined && runsOnlyWhenCalled(scopeTree, inScopeId);
|
|
817
|
+
parsedImports.push(deferred ? { ...parsed, runsOnlyWhenCalled: true } : parsed);
|
|
664
818
|
}
|
|
665
819
|
}
|
|
666
820
|
// ─── Pass 4: collect type bindings ─────────────────────────────────────────
|
|
821
|
+
/** Cap on the retained as-written annotation. Real container spellings are a
|
|
822
|
+
* handful of characters; a multi-line mapped/conditional type is neither a
|
|
823
|
+
* container any `elementTypeOf` parses nor worth keeping one copy of per
|
|
824
|
+
* binding on a kernel-scale repo. Over the cap the spelling is dropped, which
|
|
825
|
+
* makes an index step decline — the safe direction. */
|
|
826
|
+
const MAX_DECLARED_SPELLING_LENGTH = 256;
|
|
667
827
|
function pass4CollectTypeBindings(matches, drafts, positionIndex, filePath, provider, scopeTree) {
|
|
668
828
|
const draftById = new Map();
|
|
669
829
|
for (const d of drafts)
|
|
@@ -693,11 +853,39 @@ function pass4CollectTypeBindings(matches, drafts, positionIndex, filePath, prov
|
|
|
693
853
|
// `bindingScopeFor` may hoist the type binding to an outer scope.
|
|
694
854
|
const hostId = provider.bindingScopeFor?.(match, draftToScope(innermost), scopeTree) ?? autoHostedId;
|
|
695
855
|
const host = draftById.get(hostId) ?? innermost;
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
856
|
+
// The annotation as the source wrote it, kept only when the provider's
|
|
857
|
+
// interpretation is not already it. `interpretTypeBinding` normalizes
|
|
858
|
+
// container spellings away (`User[]` → `User`, `List[User]` → `User`,
|
|
859
|
+
// `[]*User` → `User`), which makes a reduced container indistinguishable
|
|
860
|
+
// from a class of the same name — and an index step folding on that
|
|
861
|
+
// ambiguity typed `grid[0]` as `Grid`. Read at the one place the
|
|
862
|
+
// distinction matters; see `TypeRef.declaredSpelling`.
|
|
863
|
+
//
|
|
864
|
+
// Read from the capture rather than from `ParsedTypeBinding` deliberately:
|
|
865
|
+
// `@type-binding.type` is the shared anchor EVERY provider already reads to
|
|
866
|
+
// build `rawTypeName`, so nothing has to be threaded through fourteen
|
|
867
|
+
// interpreters (and none can forget to).
|
|
868
|
+
// A provider may override when its grammar keeps part of the written type
|
|
869
|
+
// outside `@type-binding.type` (C++ hangs `*` on the declarator).
|
|
870
|
+
const writtenType = (parsed.declaredSpelling ?? match['@type-binding.type']?.text)?.trim();
|
|
871
|
+
const declaredSpelling = writtenType !== undefined &&
|
|
872
|
+
writtenType.length > 0 &&
|
|
873
|
+
writtenType.length <= MAX_DECLARED_SPELLING_LENGTH &&
|
|
874
|
+
writtenType !== parsed.rawTypeName
|
|
875
|
+
? writtenType
|
|
876
|
+
: undefined;
|
|
877
|
+
const typeRef = declaredSpelling === undefined
|
|
878
|
+
? {
|
|
879
|
+
rawName: parsed.rawTypeName,
|
|
880
|
+
declaredAtScope: host.id,
|
|
881
|
+
source: parsed.source,
|
|
882
|
+
}
|
|
883
|
+
: {
|
|
884
|
+
rawName: parsed.rawTypeName,
|
|
885
|
+
declaredSpelling,
|
|
886
|
+
declaredAtScope: host.id,
|
|
887
|
+
source: parsed.source,
|
|
888
|
+
};
|
|
701
889
|
// Prefer stronger sources when multiple matches fire for the same
|
|
702
890
|
// bound name in the same scope. Example: `u: User = find()` matches
|
|
703
891
|
// both the annotation and constructor-inferred patterns; the explicit
|
|
@@ -806,6 +994,11 @@ function pass5CollectReferences(matches, positionIndex, filePath, referenceSites
|
|
|
806
994
|
// sibling via the full-path QualifiedNameIndex before the simple-tail walk
|
|
807
995
|
// (#1982). Absent for unqualified references — resolution stays unchanged.
|
|
808
996
|
const qualifiedCap = match['@reference.qualified-name'];
|
|
997
|
+
// Generic ARGUMENTS written on a heritage reference (`: IValidator<string>`);
|
|
998
|
+
// `inherits` only, because a call/read/write anchor spans the whole call
|
|
999
|
+
// expression, whose `<…>` would be an argument list, a comparison, or
|
|
1000
|
+
// nothing at all — widening the kind would mint confident nonsense (#2912).
|
|
1001
|
+
const typeArguments = kind === 'inherits' ? heritageTypeArguments(match, anchor, nameCap) : undefined;
|
|
809
1002
|
const inScopeId = positionIndex.atPosition(filePath, anchor.range.startLine, anchor.range.startCol);
|
|
810
1003
|
if (inScopeId === undefined)
|
|
811
1004
|
continue;
|
|
@@ -819,6 +1012,25 @@ function pass5CollectReferences(matches, positionIndex, filePath, referenceSites
|
|
|
819
1012
|
// Object-literal key for value-ref sites (`{ key: fn }` / shorthand);
|
|
820
1013
|
// consumed by the property-dispatch pass (#2437).
|
|
821
1014
|
const propertyKeyCap = match['@reference.property-key'];
|
|
1015
|
+
// Compact receiver chain, when the emitter produced one. Validated HERE as
|
|
1016
|
+
// well as at the store boundary: bounds applied only on load are a
|
|
1017
|
+
// recurring defect in this codebase — the writer keeps minting payloads the
|
|
1018
|
+
// reader keeps rejecting, which is a permanent warm-cache-miss reparse loop
|
|
1019
|
+
// that logs nothing.
|
|
1020
|
+
const receiverChain = extractReceiverChain(match);
|
|
1021
|
+
// Callee-position marker: a member-read capture that is actually the callee
|
|
1022
|
+
// of an enclosing call (`obj.f` in `obj.f()`). Recorded, not acted on —
|
|
1023
|
+
// whether the read is a phantom or a genuine func-typed-field read depends
|
|
1024
|
+
// on the resolved tail's kind, which only edge emission knows. Emitted by
|
|
1025
|
+
// languages whose read pattern has no call-position exclusion; absent
|
|
1026
|
+
// everywhere else, so the site stays byte-identical for them.
|
|
1027
|
+
const inCalleePosition = match['@reference.callee-position'] !== undefined;
|
|
1028
|
+
// Pointer-embedding marker: `struct S { *T }` rather than `struct S { T }`.
|
|
1029
|
+
// Recorded, not acted on — Go's method-set rules make the two forms differ
|
|
1030
|
+
// (see `ReferenceSite.embeddedAsPointer`), and only structural interface
|
|
1031
|
+
// detection knows what to do with that. Absent for every language without
|
|
1032
|
+
// pointer embedding, so their sites stay byte-identical.
|
|
1033
|
+
const embeddedAsPointer = match['@reference.embedded-pointer'] !== undefined;
|
|
822
1034
|
const site = {
|
|
823
1035
|
name: nameCap.text,
|
|
824
1036
|
atRange: anchor.range,
|
|
@@ -827,6 +1039,7 @@ function pass5CollectReferences(matches, positionIndex, filePath, referenceSites
|
|
|
827
1039
|
...(qualifiedCap?.text !== undefined && qualifiedCap.text.length > 0
|
|
828
1040
|
? { rawQualifiedName: qualifiedCap.text }
|
|
829
1041
|
: {}),
|
|
1042
|
+
...(typeArguments !== undefined ? { typeArguments } : {}),
|
|
830
1043
|
...(propertyKeyCap?.text !== undefined && propertyKeyCap.text.length > 0
|
|
831
1044
|
? { propertyKey: propertyKeyCap.text }
|
|
832
1045
|
: {}),
|
|
@@ -835,10 +1048,59 @@ function pass5CollectReferences(matches, positionIndex, filePath, referenceSites
|
|
|
835
1048
|
...(arity !== undefined ? { arity } : {}),
|
|
836
1049
|
...(argumentTypes !== undefined ? { argumentTypes } : {}),
|
|
837
1050
|
...(argumentTypeClasses !== undefined ? { argumentTypeClasses } : {}),
|
|
1051
|
+
...(receiverChain !== undefined ? { receiverChain } : {}),
|
|
1052
|
+
...(inCalleePosition ? { inCalleePosition: true } : {}),
|
|
1053
|
+
...(embeddedAsPointer ? { embeddedAsPointer: true } : {}),
|
|
838
1054
|
};
|
|
839
1055
|
referenceSites.push(site);
|
|
840
1056
|
}
|
|
841
1057
|
}
|
|
1058
|
+
/**
|
|
1059
|
+
* The generic arguments a heritage reference was written with, by whichever of
|
|
1060
|
+
* the two routes this emitter uses (#2912).
|
|
1061
|
+
*
|
|
1062
|
+
* `@reference.type-arguments` is the explicit route, for an emitter whose anchor
|
|
1063
|
+
* is the bare NAME node (Rust's `impl Trait for S` anchors on the trait
|
|
1064
|
+
* identifier inside a `generic_type`). It wins where present: moving such an
|
|
1065
|
+
* anchor to cover the arguments would change the site's range, and that range is
|
|
1066
|
+
* part of every inheritance EDGE ID — a spelling detail must not renumber the
|
|
1067
|
+
* graph. Every other emitter already anchors on the whole base, so its spelling
|
|
1068
|
+
* is read directly and no query changed.
|
|
1069
|
+
*/
|
|
1070
|
+
function heritageTypeArguments(match, anchor, nameCap) {
|
|
1071
|
+
const explicit = match['@reference.type-arguments']?.text;
|
|
1072
|
+
return explicit !== undefined
|
|
1073
|
+
? typeApplicationArguments(explicit)
|
|
1074
|
+
: referenceTypeArguments(anchor.text, nameCap.text);
|
|
1075
|
+
}
|
|
1076
|
+
/**
|
|
1077
|
+
* Type arguments written on a heritage reference, read from the anchor's own
|
|
1078
|
+
* spelling — `IValidator<string>` → `['string']` (#2912).
|
|
1079
|
+
*
|
|
1080
|
+
* Two shapes are handled before the spelling is read as an application:
|
|
1081
|
+
*
|
|
1082
|
+
* - A trailing CONSTRUCTOR INVOCATION is dropped. `record R : Base<int>(x)`
|
|
1083
|
+
* and Kotlin `class C : Bar<Int>()` write a call in the heritage position;
|
|
1084
|
+
* the call is not part of the type, and leaving it attached would make the
|
|
1085
|
+
* list fail to close at the end and lose the arguments entirely.
|
|
1086
|
+
* - The application's base must BE the referenced name (`Other::Inner<T>`
|
|
1087
|
+
* ends with `Inner`). An anchor that spans more than the base type is not
|
|
1088
|
+
* read at all rather than read wrongly.
|
|
1089
|
+
*
|
|
1090
|
+
* `undefined` for a non-generic base and for every spelling that is not exactly
|
|
1091
|
+
* one balanced argument list — absence is the "unknown" value that consumers
|
|
1092
|
+
* fail open on, so declining is always safe here.
|
|
1093
|
+
*/
|
|
1094
|
+
function referenceTypeArguments(anchorText, baseName) {
|
|
1095
|
+
const text = stripTrailingCallSuffix(anchorText.trim());
|
|
1096
|
+
const opener = text.search(OPENING_BRACKET);
|
|
1097
|
+
if (opener === -1)
|
|
1098
|
+
return undefined;
|
|
1099
|
+
if (!text.slice(0, opener).trimEnd().endsWith(baseName))
|
|
1100
|
+
return undefined;
|
|
1101
|
+
return typeApplicationArguments(text);
|
|
1102
|
+
}
|
|
1103
|
+
const OPENING_BRACKET = /[<[]/;
|
|
842
1104
|
function referenceKindFromAnchor(name) {
|
|
843
1105
|
const suffix = name.slice('@reference.'.length);
|
|
844
1106
|
// Strip sub-tag after the kind (`@reference.call.member` → `call`).
|
|
@@ -895,6 +1157,19 @@ function extractExplicitReceiver(match) {
|
|
|
895
1157
|
return undefined;
|
|
896
1158
|
return { name: cap.text };
|
|
897
1159
|
}
|
|
1160
|
+
/**
|
|
1161
|
+
* The compact receiver chain, when the language emitter synthesized one.
|
|
1162
|
+
*
|
|
1163
|
+
* Returns `undefined` for anything that does not decode, so a malformed or
|
|
1164
|
+
* over-bound payload degrades to the existing text cascade rather than
|
|
1165
|
+
* poisoning the durable store. Never throws — this runs per reference site.
|
|
1166
|
+
*/
|
|
1167
|
+
function extractReceiverChain(match) {
|
|
1168
|
+
const cap = match['@reference.receiver-chain'];
|
|
1169
|
+
if (cap === undefined)
|
|
1170
|
+
return undefined;
|
|
1171
|
+
return isValidReceiverChain(cap.text) ? cap.text : undefined;
|
|
1172
|
+
}
|
|
898
1173
|
function extractArity(match) {
|
|
899
1174
|
const cap = match['@reference.arity'];
|
|
900
1175
|
if (cap === undefined)
|
|
@@ -1172,16 +1447,27 @@ function rangesEqual(a, b) {
|
|
|
1172
1447
|
* change.
|
|
1173
1448
|
*/
|
|
1174
1449
|
const KNOWN_SUB_TAGS = new Set([
|
|
1450
|
+
'@scope.lexical-names',
|
|
1175
1451
|
'@declaration.name',
|
|
1176
1452
|
'@declaration.qualified_name',
|
|
1177
1453
|
'@import.name',
|
|
1178
1454
|
'@import.source',
|
|
1179
1455
|
'@import.alias',
|
|
1456
|
+
// Provider-set marker, not a statement anchor. Listed for the same reason as
|
|
1457
|
+
// its siblings: it is emitted on a sub-node of the import statement, and the
|
|
1458
|
+
// anchor must stay `@import.statement` regardless of relative span.
|
|
1459
|
+
'@import.publishes',
|
|
1180
1460
|
'@type-binding.name',
|
|
1181
1461
|
'@type-binding.type',
|
|
1182
1462
|
'@reference.name',
|
|
1183
1463
|
'@reference.qualified-name',
|
|
1464
|
+
// The generic arguments a heritage base was written with, when the emitter's
|
|
1465
|
+
// anchor is the bare name and cannot carry them (#2912). A sub-tag for the
|
|
1466
|
+
// usual reason: it spans a sibling node of the anchor, never the site itself.
|
|
1467
|
+
'@reference.type-arguments',
|
|
1184
1468
|
'@reference.property-key',
|
|
1469
|
+
'@reference.callee-position',
|
|
1470
|
+
'@reference.embedded-pointer',
|
|
1185
1471
|
'@reference.receiver',
|
|
1186
1472
|
'@reference.operator',
|
|
1187
1473
|
'@reference.arity',
|
|
@@ -1193,6 +1479,15 @@ const KNOWN_SUB_TAGS = new Set([
|
|
|
1193
1479
|
'@declaration.parameter-type-classes',
|
|
1194
1480
|
'@declaration.return-type',
|
|
1195
1481
|
'@declaration.template-constraints',
|
|
1482
|
+
// MUST be listed, and the failure it prevents is silent def LOSS rather than
|
|
1483
|
+
// a missing field. `anchorCaptureFor` picks the broadest-span `@declaration.*`
|
|
1484
|
+
// capture that is not a known sub-tag; a type-parameter list is normally
|
|
1485
|
+
// narrower than the declaration that owns it, but a C++ `template <class A,
|
|
1486
|
+
// class B, …>` or a multi-line Java `<T extends A & B>` written above a short
|
|
1487
|
+
// declaration can out-span it. The anchor would then be `type-parameters`,
|
|
1488
|
+
// `normalizeNodeLabel` would return undefined for it, and the whole class def
|
|
1489
|
+
// would be dropped rather than merely losing its parameters.
|
|
1490
|
+
'@declaration.type-parameters',
|
|
1196
1491
|
'@declaration.is-explicit',
|
|
1197
1492
|
'@declaration.is-deleted',
|
|
1198
1493
|
]);
|