gitnexus 1.6.10-rc.99 → 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/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 +77 -32
- 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 +15 -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 +309 -15
- 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/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 +297 -15
- package/dist/core/ingestion/utils/ast-helpers.js +578 -46
- 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 -6
- package/dist/storage/parsedfile-store.js +76 -6
- package/dist/storage/repo-manager.d.ts +54 -441
- package/dist/storage/repo-manager.js +312 -221
- 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
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { ImportConfigs } from './import-resolvers/types.js';
|
|
2
1
|
/** TypeScript path alias config parsed from tsconfig.json */
|
|
3
2
|
export interface TsconfigPaths {
|
|
4
3
|
/** Map of alias prefix -> target prefix (e.g., "@/" -> "src/") */
|
|
@@ -15,10 +14,19 @@ export interface GoModuleConfig {
|
|
|
15
14
|
export interface ComposerConfig {
|
|
16
15
|
/** Map of namespace prefix -> directory (e.g., "App\\" -> "app/") */
|
|
17
16
|
psr4: Map<string, string>;
|
|
17
|
+
/** Production `autoload.psr-4` prefixes that may gate external namespaces.
|
|
18
|
+
* Absent on legacy/manual configs, where every mapping remains authoritative. */
|
|
19
|
+
authoritativePsr4?: ReadonlySet<string>;
|
|
20
|
+
/** True when Composer also declares an autoload mechanism this resolver does not model. */
|
|
21
|
+
hasUnmodeledAutoload?: boolean;
|
|
18
22
|
/** PSR-4 entries sorted by namespace length descending (longest match wins).
|
|
19
23
|
* Cached once at config load time to avoid re-sorting on every import. */
|
|
20
24
|
psr4Sorted?: readonly [string, string][];
|
|
21
25
|
}
|
|
26
|
+
/** Parse one Composer manifest without performing I/O. */
|
|
27
|
+
export declare function parseComposerConfig(value: unknown, baseDir?: string): ComposerConfig | null;
|
|
28
|
+
/** Merge package-local Composer manifests into one repository-relative config. */
|
|
29
|
+
export declare function mergeComposerConfigs(configs: readonly ComposerConfig[]): ComposerConfig | null;
|
|
22
30
|
/** C# project config parsed from .csproj files */
|
|
23
31
|
export interface CSharpProjectConfig {
|
|
24
32
|
/** Root namespace from <RootNamespace> or assembly name (default: project directory name) */
|
|
@@ -85,5 +93,25 @@ export declare function loadComposerConfig(repoRoot: string): Promise<ComposerCo
|
|
|
85
93
|
*/
|
|
86
94
|
export declare function scanCSharpProject(repoRoot: string): Promise<CSharpProjectScan>;
|
|
87
95
|
export declare function loadSwiftPackageConfig(repoRoot: string): Promise<SwiftPackageConfig | null>;
|
|
96
|
+
/**
|
|
97
|
+
* Bundled language-specific configs loaded once per ingestion run — the
|
|
98
|
+
* result of {@link loadImportConfigs}, and every field's type is declared
|
|
99
|
+
* above in this module.
|
|
100
|
+
*
|
|
101
|
+
* It lives here rather than in `import-resolvers/types.ts` (its consumer, via
|
|
102
|
+
* `ResolveCtx`) so the dependency runs one way: the import-resolver types
|
|
103
|
+
* import this bundle, and this module imports nothing from them. Homing the
|
|
104
|
+
* producer's result type with the producer also keeps `import-resolvers/
|
|
105
|
+
* types.ts` free of per-language names.
|
|
106
|
+
*/
|
|
107
|
+
export interface ImportConfigs {
|
|
108
|
+
tsconfigPaths: TsconfigPaths | null;
|
|
109
|
+
goModule: GoModuleConfig | null;
|
|
110
|
+
composerConfig: ComposerConfig | null;
|
|
111
|
+
swiftPackageConfig: SwiftPackageConfig | null;
|
|
112
|
+
csharpConfigs: CSharpProjectConfig[];
|
|
113
|
+
/** In-repo namespace evidence gating C# suffix-fallback resolution (#1881). */
|
|
114
|
+
csharpNamespaces?: CSharpNamespaceEvidence;
|
|
115
|
+
}
|
|
88
116
|
/** Load all language-specific configs once for an ingestion run. */
|
|
89
117
|
export declare function loadImportConfigs(repoRoot: string): Promise<ImportConfigs>;
|
|
@@ -3,7 +3,95 @@ import { createReadStream } from 'fs';
|
|
|
3
3
|
import { createInterface } from 'readline';
|
|
4
4
|
import path from 'path';
|
|
5
5
|
import { isDev } from './utils/env.js';
|
|
6
|
+
import { mapConcurrent } from '../../lib/utils.js';
|
|
6
7
|
import { logger } from '../logger.js';
|
|
8
|
+
function normalizeComposerDirectory(baseDir, directory) {
|
|
9
|
+
const normalizedBase = baseDir.replace(/\\/g, '/').replace(/^\.\//, '').replace(/\/+$/, '');
|
|
10
|
+
const normalizedDirectory = directory
|
|
11
|
+
.replace(/\\/g, '/')
|
|
12
|
+
.replace(/^(?:\.\/)+/, '')
|
|
13
|
+
.replace(/\/+$/, '');
|
|
14
|
+
if (normalizedBase === '')
|
|
15
|
+
return normalizedDirectory;
|
|
16
|
+
if (normalizedDirectory === '')
|
|
17
|
+
return normalizedBase;
|
|
18
|
+
return path.posix.normalize(`${normalizedBase}/${normalizedDirectory}`);
|
|
19
|
+
}
|
|
20
|
+
/** Parse one Composer manifest without performing I/O. */
|
|
21
|
+
export function parseComposerConfig(value, baseDir = '') {
|
|
22
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
23
|
+
return null;
|
|
24
|
+
const composer = value;
|
|
25
|
+
const autoload = composer.autoload;
|
|
26
|
+
const autoloadDev = composer['autoload-dev'];
|
|
27
|
+
if (autoload === undefined && autoloadDev === undefined)
|
|
28
|
+
return null;
|
|
29
|
+
const psr4 = new Map();
|
|
30
|
+
const authoritativePsr4 = new Set();
|
|
31
|
+
let hasUnmodeledAutoload = false;
|
|
32
|
+
const addSection = (sectionValue, authoritative) => {
|
|
33
|
+
if (typeof sectionValue !== 'object' || sectionValue === null || Array.isArray(sectionValue)) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const section = sectionValue;
|
|
37
|
+
if ('psr-0' in section || 'classmap' in section)
|
|
38
|
+
hasUnmodeledAutoload = true;
|
|
39
|
+
const rawPsr4 = section['psr-4'];
|
|
40
|
+
if (typeof rawPsr4 !== 'object' || rawPsr4 === null || Array.isArray(rawPsr4))
|
|
41
|
+
return;
|
|
42
|
+
for (const [namespace, directories] of Object.entries(rawPsr4)) {
|
|
43
|
+
const stringDirectories = Array.isArray(directories)
|
|
44
|
+
? directories.filter((entry) => typeof entry === 'string')
|
|
45
|
+
: typeof directories === 'string'
|
|
46
|
+
? [directories]
|
|
47
|
+
: [];
|
|
48
|
+
if (stringDirectories.length === 0)
|
|
49
|
+
continue;
|
|
50
|
+
if (stringDirectories.length > 1)
|
|
51
|
+
hasUnmodeledAutoload = true;
|
|
52
|
+
const normalizedNamespace = namespace.replace(/\\+$/, '');
|
|
53
|
+
const normalizedDirectory = normalizeComposerDirectory(baseDir, stringDirectories[0]);
|
|
54
|
+
const existing = psr4.get(normalizedNamespace);
|
|
55
|
+
if (existing !== undefined && existing !== normalizedDirectory) {
|
|
56
|
+
hasUnmodeledAutoload = true;
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
if (existing === undefined)
|
|
60
|
+
psr4.set(normalizedNamespace, normalizedDirectory);
|
|
61
|
+
if (authoritative)
|
|
62
|
+
authoritativePsr4.add(normalizedNamespace);
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
// Production mappings win duplicate prefixes. Development mappings remain
|
|
66
|
+
// usable for test code but do not establish authority for the external gate.
|
|
67
|
+
addSection(autoload, true);
|
|
68
|
+
addSection(autoloadDev, false);
|
|
69
|
+
return { psr4, authoritativePsr4, hasUnmodeledAutoload };
|
|
70
|
+
}
|
|
71
|
+
/** Merge package-local Composer manifests into one repository-relative config. */
|
|
72
|
+
export function mergeComposerConfigs(configs) {
|
|
73
|
+
if (configs.length === 0)
|
|
74
|
+
return null;
|
|
75
|
+
const psr4 = new Map();
|
|
76
|
+
const authoritativePsr4 = new Set();
|
|
77
|
+
let hasUnmodeledAutoload = false;
|
|
78
|
+
for (const config of configs) {
|
|
79
|
+
hasUnmodeledAutoload ||= config.hasUnmodeledAutoload === true;
|
|
80
|
+
for (const [namespace, directory] of config.psr4) {
|
|
81
|
+
const existing = psr4.get(namespace);
|
|
82
|
+
if (existing !== undefined && existing !== directory) {
|
|
83
|
+
hasUnmodeledAutoload = true;
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
if (existing === undefined)
|
|
87
|
+
psr4.set(namespace, directory);
|
|
88
|
+
}
|
|
89
|
+
for (const namespace of config.authoritativePsr4 ?? config.psr4.keys()) {
|
|
90
|
+
authoritativePsr4.add(namespace);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return { psr4, authoritativePsr4, hasUnmodeledAutoload };
|
|
94
|
+
}
|
|
7
95
|
/** Project the one-pass {@link CSharpProjectScan} into the
|
|
8
96
|
* {@link CSharpNamespaceEvidence} both import-resolution legs thread to the
|
|
9
97
|
* #1881 gate — one shape, two carriers (`ImportConfigs.csharpNamespaces` for
|
|
@@ -84,20 +172,13 @@ export async function loadComposerConfig(repoRoot) {
|
|
|
84
172
|
try {
|
|
85
173
|
const composerPath = path.join(repoRoot, 'composer.json');
|
|
86
174
|
const raw = await fs.readFile(composerPath, 'utf-8');
|
|
87
|
-
const
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
const merged = { ...psr4Raw, ...psr4Dev };
|
|
91
|
-
const psr4 = new Map();
|
|
92
|
-
for (const [ns, dir] of Object.entries(merged)) {
|
|
93
|
-
const nsNorm = ns.replace(/\\+$/, '');
|
|
94
|
-
const dirNorm = dir.replace(/\\/g, '/').replace(/\/+$/, '');
|
|
95
|
-
psr4.set(nsNorm, dirNorm);
|
|
96
|
-
}
|
|
175
|
+
const config = parseComposerConfig(JSON.parse(raw));
|
|
176
|
+
if (config === null)
|
|
177
|
+
return null;
|
|
97
178
|
if (isDev) {
|
|
98
|
-
logger.info(`📦 Loaded ${psr4.size} PSR-4 mappings from composer.json`);
|
|
179
|
+
logger.info(`📦 Loaded ${config.psr4.size} PSR-4 mappings from composer.json`);
|
|
99
180
|
}
|
|
100
|
-
return
|
|
181
|
+
return config;
|
|
101
182
|
}
|
|
102
183
|
catch {
|
|
103
184
|
return null;
|
|
@@ -197,28 +278,25 @@ export async function scanCSharpProject(repoRoot) {
|
|
|
197
278
|
csNames.push(entry.name);
|
|
198
279
|
}
|
|
199
280
|
}
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
rootNamespaces.add(config.rootNamespace);
|
|
208
|
-
}
|
|
281
|
+
// `mapConcurrent` runs the same bounded waves and degrades per item
|
|
282
|
+
// (a rejection becomes `undefined`), so entry order is still preserved.
|
|
283
|
+
const csprojResults = await mapConcurrent(csprojNames, (name) => readCsprojConfig(path.join(dir, name), name, repoRoot, dir), { concurrency: CSHARP_SCAN_READ_CONCURRENCY });
|
|
284
|
+
for (const config of csprojResults) {
|
|
285
|
+
if (config) {
|
|
286
|
+
configs.push(config);
|
|
287
|
+
rootNamespaces.add(config.rootNamespace);
|
|
209
288
|
}
|
|
210
289
|
}
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
}
|
|
290
|
+
const csResults = await mapConcurrent(csNames, (name) => collectDeclaredNamespaces(path.join(dir, name), declaredNamespaces, rootNamespaces), { concurrency: CSHARP_SCAN_READ_CONCURRENCY });
|
|
291
|
+
// A `.cs` that was unreadable (or whose read/scan unexpectedly rejected)
|
|
292
|
+
// leaves its namespaces uncollected → mark truncated to fail the #1881
|
|
293
|
+
// gate OPEN rather than wrongly suppress an import. The scan streams each
|
|
294
|
+
// file, so file size no longer trips truncation. A rejected read arrives
|
|
295
|
+
// here as `undefined`, which is `!== 'ok'` just like the old
|
|
296
|
+
// `r.status !== 'fulfilled'` arm.
|
|
297
|
+
for (const r of csResults) {
|
|
298
|
+
if (r !== 'ok')
|
|
299
|
+
truncated = true;
|
|
222
300
|
}
|
|
223
301
|
}
|
|
224
302
|
if (truncated) {
|
|
@@ -362,9 +440,6 @@ export async function loadSwiftPackageConfig(repoRoot) {
|
|
|
362
440
|
}
|
|
363
441
|
return null;
|
|
364
442
|
}
|
|
365
|
-
// ============================================================================
|
|
366
|
-
// BUNDLED CONFIG LOADER
|
|
367
|
-
// ============================================================================
|
|
368
443
|
/** Load all language-specific configs once for an ingestion run. */
|
|
369
444
|
export async function loadImportConfigs(repoRoot) {
|
|
370
445
|
const csharpScan = await scanCSharpProject(repoRoot);
|
|
@@ -23,10 +23,25 @@ import type { CfgVisitor } from './cfg/types.js';
|
|
|
23
23
|
import type { NodeLabel } from '../../_shared/index.js';
|
|
24
24
|
import type { ExtractedRoute } from './route-extractors/laravel.js';
|
|
25
25
|
import type { SharedSpringType } from './route-extractors/spring-shared.js';
|
|
26
|
+
import type { ModuleConstants, Operand, RepoConstants } from './route-extractors/constant-resolver.js';
|
|
26
27
|
import type Parser from 'tree-sitter';
|
|
27
28
|
import type { ExtractedDecoratorRoute } from './workers/parse-worker.js';
|
|
28
29
|
/** Tree-sitter query captures: capture name → AST node (or undefined if not captured). */
|
|
29
30
|
export type CaptureMap = Record<string, SyntaxNode | undefined>;
|
|
31
|
+
export interface DefinitionPropertiesContext {
|
|
32
|
+
readonly nodeLabel: NodeLabel;
|
|
33
|
+
readonly nodeName: string;
|
|
34
|
+
readonly definitionNode: SyntaxNode;
|
|
35
|
+
readonly parsedImports: readonly ParsedImport[];
|
|
36
|
+
readonly isExported: boolean;
|
|
37
|
+
}
|
|
38
|
+
export type DefinitionPropertiesExtractor = (context: DefinitionPropertiesContext) => Readonly<Record<string, unknown>> | undefined;
|
|
39
|
+
/** Run optional provider enrichment without allowing one hook failure to drop
|
|
40
|
+
* the rest of the worker's language batch. */
|
|
41
|
+
export declare function runDefinitionPropertiesExtractor(extractor: DefinitionPropertiesExtractor, context: DefinitionPropertiesContext, onError: (error: unknown) => void): Readonly<Record<string, unknown>> | undefined;
|
|
42
|
+
/** Provider metadata is additive; graph identity and source-location fields
|
|
43
|
+
* supplied by the worker remain authoritative. */
|
|
44
|
+
export declare function mergeCanonicalDefinitionProperties<TCanonical extends Readonly<Record<string, unknown>>>(providerProperties: Readonly<Record<string, unknown>>, canonicalProperties: TCanonical): Record<string, unknown> & TCanonical;
|
|
30
45
|
/** Configuration for AST-based framework detection patterns. */
|
|
31
46
|
export interface AstFrameworkPatternConfig {
|
|
32
47
|
framework: string;
|
|
@@ -39,6 +54,18 @@ export interface AstFrameworkPatternConfig {
|
|
|
39
54
|
* Required fields must be explicitly set; optional fields have defaults
|
|
40
55
|
* applied by defineLanguage().
|
|
41
56
|
*/
|
|
57
|
+
/**
|
|
58
|
+
* Should the parse worker run {@link LanguageProviderConfig.extractModuleConstants}
|
|
59
|
+
* on this file?
|
|
60
|
+
*
|
|
61
|
+
* Exported so the DECISION is testable without booting a worker. It encodes the
|
|
62
|
+
* one rule that is easy to get backwards: a provider that declares no
|
|
63
|
+
* `moduleConstantHeuristic` harvests unconditionally. Writing the gate as
|
|
64
|
+
* `provider.moduleConstantHeuristic?.(content)` reads `undefined` as "skip" and
|
|
65
|
+
* silently disables the hook for every provider without a heuristic — which is
|
|
66
|
+
* exactly how Python's already-shipped harvest was turned off (#2391/#2980).
|
|
67
|
+
*/
|
|
68
|
+
export declare function shouldHarvestModuleConstants(provider: Pick<LanguageProvider, 'extractModuleConstants' | 'moduleConstantHeuristic'>, content: string): boolean;
|
|
42
69
|
interface LanguageProviderConfig {
|
|
43
70
|
readonly id: SupportedLanguages;
|
|
44
71
|
/** File extensions that map to this language (e.g., ['.ts', '.tsx']) */
|
|
@@ -83,9 +110,17 @@ interface LanguageProviderConfig {
|
|
|
83
110
|
* The current C++ UE-macro preprocessor relies on the practical fact that
|
|
84
111
|
* UE reflection macros and module-export tokens are ASCII-only.
|
|
85
112
|
*
|
|
86
|
-
* Must be a pure function — same input always yields the same output
|
|
87
|
-
*
|
|
88
|
-
*
|
|
113
|
+
* Must be a pure function — same input always yields the same output, and
|
|
114
|
+
* re-applying it to its own output changes nothing.
|
|
115
|
+
*
|
|
116
|
+
* Applied by the parse worker (`parse-worker.ts`), by `extractParsedFile`
|
|
117
|
+
* (`scope-extractor-bridge.ts`) on the parse-cache-miss path, and by the
|
|
118
|
+
* embedding parse (`embeddings/ast-utils.ts`, which does not go through the
|
|
119
|
+
* bridge). Any *new* path that re-parses a file must apply it too, or the two
|
|
120
|
+
* halves of the pipeline analyze different programs — and note the set is not
|
|
121
|
+
* closed today: language-owned re-parse helpers reached through other
|
|
122
|
+
* provider hooks (e.g. `populateRangeBindings`) still see raw text.
|
|
123
|
+
* `test/unit/preprocess-source-parity.test.ts` pins the bridge equivalence.
|
|
89
124
|
*
|
|
90
125
|
* Default: undefined (no preprocessing — `file.content` is parsed verbatim).
|
|
91
126
|
*/
|
|
@@ -163,6 +198,16 @@ interface LanguageProviderConfig {
|
|
|
163
198
|
* (e.g., 'Method' for Kotlin), or defaultLabel to keep as-is.
|
|
164
199
|
* Default: undefined (standard label assignment). */
|
|
165
200
|
readonly labelOverride?: (functionNode: SyntaxNode, defaultLabel: NodeLabel) => NodeLabel | null;
|
|
201
|
+
/**
|
|
202
|
+
* Suppress a definition query match after its default label is known.
|
|
203
|
+
* Languages use this for syntax that represents an implicit declaration
|
|
204
|
+
* unless an explicit declaration with the same semantics is present.
|
|
205
|
+
*
|
|
206
|
+
* `defaultLabel` is supplied so an implementation can scope itself to one
|
|
207
|
+
* kind of definition; implementations whose capture map alone decides the
|
|
208
|
+
* question may ignore it.
|
|
209
|
+
*/
|
|
210
|
+
readonly shouldSkipDefinitionCapture?: (captureMap: CaptureMap, defaultLabel: NodeLabel) => boolean;
|
|
166
211
|
/** MRO strategy for multiple inheritance resolution.
|
|
167
212
|
* Default: 'first-wins'. */
|
|
168
213
|
readonly mroStrategy?: MroStrategy;
|
|
@@ -184,6 +229,10 @@ interface LanguageProviderConfig {
|
|
|
184
229
|
* constant, and static declarations. Produces VariableInfo with type, visibility,
|
|
185
230
|
* isConst, isStatic, isMutable metadata. Default: undefined (no variable extraction). */
|
|
186
231
|
readonly variableExtractor?: VariableExtractor;
|
|
232
|
+
/** Add language-owned, structured properties to a definition node. Values
|
|
233
|
+
* cross the worker boundary and must therefore be structured-clone-safe.
|
|
234
|
+
* Shared ingestion code treats these properties as opaque. */
|
|
235
|
+
readonly definitionPropertiesExtractor?: DefinitionPropertiesExtractor;
|
|
187
236
|
/** Class/type extractor for deriving canonical qualified names for class-like symbols.
|
|
188
237
|
* Uses the same provider-driven strategy pattern as method/field extraction so
|
|
189
238
|
* namespace/package/module rules stay language-specific. */
|
|
@@ -217,14 +266,22 @@ interface LanguageProviderConfig {
|
|
|
217
266
|
* Default: undefined (no route extraction). */
|
|
218
267
|
readonly extractRoutes?: (tree: Parser.Tree, filePath: string, reader: (relativePath: string) => string | null, parser?: Parser | null) => ExtractedRoute[];
|
|
219
268
|
/**
|
|
220
|
-
* Extract
|
|
269
|
+
* Extract routes that a parsed file declares in its own AST.
|
|
221
270
|
*
|
|
222
271
|
* When defined, the parse worker calls this after per-file capture processing
|
|
223
|
-
* to extract
|
|
272
|
+
* to extract route definitions that require AST-level analysis beyond
|
|
224
273
|
* generic `@decorator` captures (e.g., Java Spring class-level prefix joining,
|
|
225
274
|
* multi-class handling). The returned routes are appended to `decoratorRoutes`.
|
|
226
275
|
*
|
|
227
|
-
*
|
|
276
|
+
* Decorators are the common case and the reason for the name, but not the only
|
|
277
|
+
* shape: JS/TS uses this hook for hand-rolled dispatch guards
|
|
278
|
+
* (`route-extractors/dispatch-guard.ts`), where a raw `node:http` server
|
|
279
|
+
* declares a route by comparing the request path to a literal. Anything that
|
|
280
|
+
* yields a `(path, verb, handler)` triple from one file's AST belongs here —
|
|
281
|
+
* set `ExtractedDecoratorRoute.source` when the provenance is not a decorator,
|
|
282
|
+
* so the `HANDLES_ROUTE` edge does not claim one.
|
|
283
|
+
*
|
|
284
|
+
* Default: undefined (no language-specific route extraction).
|
|
228
285
|
*/
|
|
229
286
|
readonly extractDecoratorRoutes?: (tree: Parser.Tree, filePath: string, lineOffset: number) => ExtractedDecoratorRoute[];
|
|
230
287
|
/**
|
|
@@ -240,6 +297,51 @@ interface LanguageProviderConfig {
|
|
|
240
297
|
* Default: undefined (no interface-inheritance route resolution).
|
|
241
298
|
*/
|
|
242
299
|
readonly extractRouteInheritanceTypes?: (tree: Parser.Tree, filePath: string) => SharedSpringType[];
|
|
300
|
+
/**
|
|
301
|
+
* Harvest this file's module-level string constants (#2391 core, #2980 Java
|
|
302
|
+
* parity) into the language-agnostic {@link ModuleConstants} shape, so the
|
|
303
|
+
* parse phase can resolve non-literal decorator route paths cross-file.
|
|
304
|
+
*
|
|
305
|
+
* The worker calls this when BOTH hold:
|
|
306
|
+
* - the provider declares no `moduleConstantHeuristic`, or the one it
|
|
307
|
+
* declares matched — syntax-driven, e.g. a `static final String` field or
|
|
308
|
+
* a constants-bearing import; NEVER a class-name pattern like
|
|
309
|
+
* `*Constants`, which silently drops route constants living in classes
|
|
310
|
+
* named e.g. `ApiPaths`/`Routes`, and
|
|
311
|
+
* - the extraction yields something resolvable (a literal, an expression, or
|
|
312
|
+
* an import binding), keeping the aggregate bounded on large repos.
|
|
313
|
+
*
|
|
314
|
+
* Default: undefined (no constant harvest; non-literal route paths of this
|
|
315
|
+
* language floor to skip).
|
|
316
|
+
*/
|
|
317
|
+
readonly extractModuleConstants?: (tree: Parser.Tree) => ModuleConstants;
|
|
318
|
+
/**
|
|
319
|
+
* Cheap content heuristic deciding whether the worker should run
|
|
320
|
+
* {@link extractModuleConstants} on a file. Guards the harvest cost on huge
|
|
321
|
+
* repos: files that cannot contribute (no constant-bearing syntax) are not
|
|
322
|
+
* walked. Must be syntax-driven (field/import shape), not identifier
|
|
323
|
+
* pattern-matching on class names.
|
|
324
|
+
*
|
|
325
|
+
* Default: undefined — harvest EVERY file of this language. A gate is opt-in
|
|
326
|
+
* because getting it wrong silently drops routes that already resolve, and a
|
|
327
|
+
* missed gate only costs time. Declare one only where the cost bites (Java's
|
|
328
|
+
* Maven monorepos) and only after checking it against every shape
|
|
329
|
+
* {@link extractModuleConstants} accepts.
|
|
330
|
+
*/
|
|
331
|
+
readonly moduleConstantHeuristic?: (content: string) => boolean;
|
|
332
|
+
/**
|
|
333
|
+
* Fold one file's non-literal route-path operand list
|
|
334
|
+
* (`routePathExpr`/`routePathOperands` of an `ExtractedDecoratorRoute`)
|
|
335
|
+
* against the repo-wide, file-path-keyed constant map, or null when it cannot
|
|
336
|
+
* be fully folded (skip floor — never a phantom path). Languages whose
|
|
337
|
+
* qualified refs resolve through class imports (`Outer.CONST`,
|
|
338
|
+
* `com.example.ApiPaths.USERS`) need this hook because the shared fold has no
|
|
339
|
+
* notion of qualified names; Python's bare-name refs use the shared default.
|
|
340
|
+
*
|
|
341
|
+
* Default: undefined (the parse phase falls back to the shared
|
|
342
|
+
* language-agnostic operand fold).
|
|
343
|
+
*/
|
|
344
|
+
readonly foldRoutePathOperands?: (filePath: string, operands: readonly Operand[], repo: RepoConstants) => string | null;
|
|
243
345
|
/** Built-in/stdlib names that should be filtered from the call graph for this language.
|
|
244
346
|
* Default: undefined (no language-specific filtering). */
|
|
245
347
|
readonly builtInNames?: ReadonlySet<string>;
|
|
@@ -339,6 +441,93 @@ interface LanguageProviderConfig {
|
|
|
339
441
|
* Required when `emitScopeCaptures` is implemented.
|
|
340
442
|
*/
|
|
341
443
|
readonly interpretImport?: (captures: CaptureMatch) => ParsedImport | null;
|
|
444
|
+
/**
|
|
445
|
+
* Do this language's imports EXECUTE at the point in the program where they
|
|
446
|
+
* are written?
|
|
447
|
+
*
|
|
448
|
+
* The scope extractor marks an import `runsOnlyWhenCalled` when the statement
|
|
449
|
+
* sits inside a `Function` scope (Pass 3): where imports are executed
|
|
450
|
+
* statements, one written in a function body runs only when that function is
|
|
451
|
+
* called — Python's `def f(): from x import Y`, Ruby's
|
|
452
|
+
* `def f; require 'x'; end`, a CommonJS `require()` in a body (which
|
|
453
|
+
* `javascript/captures.ts` does capture, via its own AST walk). That rule is
|
|
454
|
+
* about EXECUTION. It says nothing true about a language whose "import" is
|
|
455
|
+
* not an executed statement at all, and in such a language moving one into a
|
|
456
|
+
* function body defers exactly nothing.
|
|
457
|
+
*
|
|
458
|
+
* "Where written" is about execution time, not textual placement: a
|
|
459
|
+
* `#include` is spliced precisely where it is written and still answers
|
|
460
|
+
* `false`, because splicing is not running.
|
|
461
|
+
*
|
|
462
|
+
* **The failure directions are not symmetric, which is why the default is
|
|
463
|
+
* what it is.** Answering `false` for a language that really does execute
|
|
464
|
+
* its imports un-defers a deliberately lazy one, and `check --cycles`
|
|
465
|
+
* reports a cycle its author broke on purpose — wrong, but visible on screen
|
|
466
|
+
* and arguable by whoever reads it. Answering `true` for a language that
|
|
467
|
+
* does not SUPPRESSES a cycle that is entirely real: nobody sees it, so
|
|
468
|
+
* nobody can argue with it. Getting this wrong in the `true` direction hides
|
|
469
|
+
* a true cycle, and that is the failure that matters.
|
|
470
|
+
*
|
|
471
|
+
* Absent — the default — reads as `true`, so every provider that does not
|
|
472
|
+
* name this keeps today's behaviour exactly. The flag never ADDS deferral;
|
|
473
|
+
* declaring `false` only WITHHOLDS it.
|
|
474
|
+
*
|
|
475
|
+
* Declared `false` by, and only by:
|
|
476
|
+
*
|
|
477
|
+
* - **C and C++** — `#include` is a preprocessor directive. The header's
|
|
478
|
+
* text is spliced in before a line of the program runs, wherever the
|
|
479
|
+
* directive sits, and C permits one inside a function body. C++'s only
|
|
480
|
+
* other Pass-3 import form, `using ns::name` / `using namespace ns`, is
|
|
481
|
+
* compile-time name lookup, is legal in a function body too, and defers
|
|
482
|
+
* no more than an `#include` does.
|
|
483
|
+
* - **Rust** — `use` is a compile-time path alias, not a statement that
|
|
484
|
+
* runs. `fn f() { use crate::m::X; }` is legal, and putting the `use`
|
|
485
|
+
* there changes only where the name is VISIBLE, never when anything
|
|
486
|
+
* happens; Rust has no module-initialization order in the JS/Python
|
|
487
|
+
* sense and permits intra-crate module cycles outright. It is the
|
|
488
|
+
* structural twin of C++'s `using ns::name`. `rust/query.ts` captures
|
|
489
|
+
* `(use_declaration)` and nothing else, so this covers the whole
|
|
490
|
+
* surface. (The claim here is the narrow one: POSITION does not defer a
|
|
491
|
+
* Rust import. Whether a Rust `use` can create an initialization
|
|
492
|
+
* dependency *at all* is a larger and separate question, and this flag
|
|
493
|
+
* deliberately does not answer it.)
|
|
494
|
+
* - **COBOL** — `COPY` is a pure textual splice performed by the copybook
|
|
495
|
+
* preprocessor, the `#include` case exactly. Latent today: the COBOL
|
|
496
|
+
* `@scope.function` capture covers a single line (`cobol/captures.ts`
|
|
497
|
+
* ranges sections and paragraphs `line → line`), so a `COPY` on any
|
|
498
|
+
* later line never resolves inside one and Pass 3 has nothing to mark.
|
|
499
|
+
* Declared anyway, so that giving those anchors their true multi-line
|
|
500
|
+
* ranges cannot silently start suppressing real copybook cycles.
|
|
501
|
+
*
|
|
502
|
+
* Per-provider rather than per-import, and that is sufficient — the question
|
|
503
|
+
* this answers is narrower than "do this language's imports execute". It is
|
|
504
|
+
* only ever asked of an import that resolved INSIDE A FUNCTION SCOPE, so the
|
|
505
|
+
* real domain is: *can a function-local import in this language be
|
|
506
|
+
* non-executing?* No supported language has two forms that are both
|
|
507
|
+
* function-local and disagree. C++ has two forms, `#include` and
|
|
508
|
+
* `using ns::name`; both can appear in a body and both are compile-time.
|
|
509
|
+
*
|
|
510
|
+
* PHP is the case that looks like a counterexample and is not. It does mix —
|
|
511
|
+
* `use Foo\Bar;` aliases at compile time while `require` executes — but
|
|
512
|
+
* `use` cannot appear in a function body at all (`php/query.ts` records this
|
|
513
|
+
* twice: "`namespace_use_declaration` is an import only at top level / inside
|
|
514
|
+
* namespace scope"), so it never reaches this flag. Absent is therefore
|
|
515
|
+
* PERMANENTLY correct for PHP, including the day `require` is captured: a
|
|
516
|
+
* `require` in a body will correctly defer, and a `use` still cannot get
|
|
517
|
+
* here. Do not read PHP as a reason to build a per-`ParsedImport`
|
|
518
|
+
* classification hook — it would cost a provider call per import on the
|
|
519
|
+
* extractor's hot path, and `ParsedImport.kind` does not discriminate the
|
|
520
|
+
* thing being asked anyway.
|
|
521
|
+
*
|
|
522
|
+
* A capability on the provider rather than a language check in
|
|
523
|
+
* `scope-extractor.ts`: shared `core/ingestion/` pipeline code must not name
|
|
524
|
+
* languages (AGENTS.md), and "imports here are not executed statements" is a
|
|
525
|
+
* property of the language, not of the walk.
|
|
526
|
+
*
|
|
527
|
+
* Default: undefined, read as `true` (imports execute where they are
|
|
528
|
+
* written; position defers them).
|
|
529
|
+
*/
|
|
530
|
+
readonly importsExecuteWhereWritten?: boolean;
|
|
342
531
|
/**
|
|
343
532
|
* What is the implicit receiver on a Function scope? For instance methods
|
|
344
533
|
* this is `self`/`this`; for standalone functions it is `null`. Consulted
|
|
@@ -367,6 +556,19 @@ interface LanguageProviderConfig {
|
|
|
367
556
|
* suffix — `@scope.function` → `'Function'`, etc.).
|
|
368
557
|
*/
|
|
369
558
|
readonly resolveScopeKind?: (captures: CaptureMatch) => ScopeKind | null;
|
|
559
|
+
/**
|
|
560
|
+
* Report the receiver names this scope BINDS rather than inherits — see
|
|
561
|
+
* `Scope.ownsReceivers` (#2701).
|
|
562
|
+
*
|
|
563
|
+
* Called once per `@scope.*` capture during scope-tree construction.
|
|
564
|
+
* Return the shared frozen set for a scope that starts a fresh receiver
|
|
565
|
+
* (a JS/TS ordinary `function`, whose `this` is bound at call time), and
|
|
566
|
+
* `undefined` for one that inherits it (an arrow function, and every
|
|
567
|
+
* closure form in languages that capture the receiver lexically).
|
|
568
|
+
*
|
|
569
|
+
* Default: undefined everywhere — the receiver walk is unchanged.
|
|
570
|
+
*/
|
|
571
|
+
readonly scopeOwnsReceivers?: (captures: CaptureMatch) => ReadonlySet<string> | undefined;
|
|
370
572
|
/**
|
|
371
573
|
* Override where a declaration's name becomes visible. By default the name
|
|
372
574
|
* is bound in the innermost enclosing scope; return a different `ScopeId`
|
|
@@ -396,7 +598,7 @@ interface LanguageProviderConfig {
|
|
|
396
598
|
* Required when `emitScopeCaptures` is implemented. Ring 2 PKG #922
|
|
397
599
|
* provides the adapter that bridges today's resolver shape to this hook.
|
|
398
600
|
*/
|
|
399
|
-
readonly resolveImportTarget?: (parsedImport: ParsedImport, workspaceIndex: WorkspaceIndex) => string | null;
|
|
601
|
+
readonly resolveImportTarget?: (parsedImport: ParsedImport, workspaceIndex: WorkspaceIndex) => string | readonly string[] | null;
|
|
400
602
|
/**
|
|
401
603
|
* Enumerate the exported names of a file — used by the finalize algorithm
|
|
402
604
|
* to expand `import * from M` into individual `BindingRef`s with
|
|
@@ -8,6 +8,43 @@
|
|
|
8
8
|
* The providers table in `languages/index.ts` uses `satisfies Record<SupportedLanguages, LanguageProvider>`
|
|
9
9
|
* so adding a language to the enum without creating a provider is a compiler error.
|
|
10
10
|
*/
|
|
11
|
+
/** Run optional provider enrichment without allowing one hook failure to drop
|
|
12
|
+
* the rest of the worker's language batch. */
|
|
13
|
+
export function runDefinitionPropertiesExtractor(extractor, context, onError) {
|
|
14
|
+
try {
|
|
15
|
+
return extractor(context);
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
onError(error);
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/** Provider metadata is additive; graph identity and source-location fields
|
|
23
|
+
* supplied by the worker remain authoritative. */
|
|
24
|
+
export function mergeCanonicalDefinitionProperties(providerProperties, canonicalProperties) {
|
|
25
|
+
return { ...providerProperties, ...canonicalProperties };
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Everything a language needs to provide.
|
|
29
|
+
* Required fields must be explicitly set; optional fields have defaults
|
|
30
|
+
* applied by defineLanguage().
|
|
31
|
+
*/
|
|
32
|
+
/**
|
|
33
|
+
* Should the parse worker run {@link LanguageProviderConfig.extractModuleConstants}
|
|
34
|
+
* on this file?
|
|
35
|
+
*
|
|
36
|
+
* Exported so the DECISION is testable without booting a worker. It encodes the
|
|
37
|
+
* one rule that is easy to get backwards: a provider that declares no
|
|
38
|
+
* `moduleConstantHeuristic` harvests unconditionally. Writing the gate as
|
|
39
|
+
* `provider.moduleConstantHeuristic?.(content)` reads `undefined` as "skip" and
|
|
40
|
+
* silently disables the hook for every provider without a heuristic — which is
|
|
41
|
+
* exactly how Python's already-shipped harvest was turned off (#2391/#2980).
|
|
42
|
+
*/
|
|
43
|
+
export function shouldHarvestModuleConstants(provider, content) {
|
|
44
|
+
if (!provider.extractModuleConstants)
|
|
45
|
+
return false;
|
|
46
|
+
return !provider.moduleConstantHeuristic || provider.moduleConstantHeuristic(content);
|
|
47
|
+
}
|
|
11
48
|
const DEFAULTS = {
|
|
12
49
|
mroStrategy: 'first-wins',
|
|
13
50
|
};
|
|
@@ -5,6 +5,7 @@ import { parseSourceSafe } from '../../../tree-sitter/safe-parse.js';
|
|
|
5
5
|
import { splitCInclude } from './import-decomposer.js';
|
|
6
6
|
import { computeCDeclarationArity, computeCCallArity } from './arity-metadata.js';
|
|
7
7
|
import { markStaticName } from './static-linkage.js';
|
|
8
|
+
import { synthesizeReceiverChainCapture } from '../../utils/receiver-chain-captures.js';
|
|
8
9
|
import { synthesizeCallableFlowCaptures, } from '../../utils/callable-flow-captures.js';
|
|
9
10
|
const C_CALLABLE_CAPTURE_OPTIONS = {
|
|
10
11
|
functionNodeTypes: new Set(['function_definition']),
|
|
@@ -118,6 +119,12 @@ export function emitCScopeCaptures(sourceText, filePath, cachedTree) {
|
|
|
118
119
|
grouped['@reference.arity'] = syntheticCapture('@reference.arity', callNode, String(computeCCallArity(callNode)));
|
|
119
120
|
}
|
|
120
121
|
}
|
|
122
|
+
// Structural receiver chain for a call whose receiver is itself an
|
|
123
|
+
// expression, so resolution can type it by folding over structure
|
|
124
|
+
// instead of re-parsing the receiver's source text. Self-gating: a
|
|
125
|
+
// non-call match, an absent receiver, or a chain with no nameable base
|
|
126
|
+
// all leave `grouped` untouched.
|
|
127
|
+
synthesizeReceiverChainCapture(grouped, nodeMap['@reference.receiver']);
|
|
121
128
|
out.push(grouped);
|
|
122
129
|
}
|
|
123
130
|
out.push(...synthesizeCallableFlowCaptures(tree.rootNode, C_CALLABLE_CAPTURE_OPTIONS));
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { dirname, join } from 'path';
|
|
2
|
+
import { perFileSet } from '../../import-resolvers/per-file-set.js';
|
|
2
3
|
/**
|
|
3
4
|
* Per-pass memo: workspace paths bucketed by basename (last path segment),
|
|
4
5
|
* keyed on the `allFilePaths` set identity.
|
|
@@ -15,25 +16,20 @@ import { dirname, join } from 'path';
|
|
|
15
16
|
* `WeakMap`-keyed so it is reclaimed with the pass (no cross-pass staleness).
|
|
16
17
|
* Shared by C and C++ (`resolveCppImportTarget` delegates here).
|
|
17
18
|
*/
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
if (bucket === undefined) {
|
|
28
|
-
bucket = [];
|
|
29
|
-
index.set(basename, bucket);
|
|
30
|
-
}
|
|
31
|
-
bucket.push({ original, normalized, depth: normalized.split('/').length });
|
|
19
|
+
const suffixIndex = perFileSet((allFilePaths) => {
|
|
20
|
+
const index = new Map();
|
|
21
|
+
for (const original of allFilePaths) {
|
|
22
|
+
const normalized = original.replace(/\\/g, '/');
|
|
23
|
+
const basename = normalized.slice(normalized.lastIndexOf('/') + 1);
|
|
24
|
+
let bucket = index.get(basename);
|
|
25
|
+
if (bucket === undefined) {
|
|
26
|
+
bucket = [];
|
|
27
|
+
index.set(basename, bucket);
|
|
32
28
|
}
|
|
33
|
-
|
|
29
|
+
bucket.push({ original, normalized, depth: normalized.split('/').length });
|
|
34
30
|
}
|
|
35
31
|
return index;
|
|
36
|
-
}
|
|
32
|
+
});
|
|
37
33
|
/**
|
|
38
34
|
* Resolve a C #include path to a file in the workspace.
|
|
39
35
|
*
|