cgraphx 2.0.1 → 2.0.3
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/dist/.claude-template/FLOW-MAP.md +7 -5
- package/dist/.claude-template/commands/end.md +1 -1
- package/dist/.claude-template/skills/cgraphx-guide/SKILL.md +2 -1
- package/dist/.claude-template/skills/cgraphx-guide/how-to-use.html +4 -2
- package/dist/.claude-template/skills/cgraphx-guide/how-to-use.md +5 -2
- package/dist/.claude-template/skills/iboc-check/SKILL.md +116 -0
- package/dist/.claude-template/skills/iboc-check/filler-prompt.md +75 -0
- package/dist/.claude-template/skills/implementation/SKILL.md +7 -0
- package/dist/.claude-template/skills/init-project-guides/SKILL.md +1 -1
- package/dist/.claude-template/skills/run-api-test/references/db-verification.md +2 -2
- package/dist/.claude-template/skills/subagent-implement/SKILL.md +3 -2
- package/dist/.claude-template/skills/write-api/assets/template-request.bru +3 -3
- package/dist/.claude-template/skills/write-api/references/bru-format.md +6 -6
- package/dist/.claude-template/skills/write-delivery-guide/SKILL.md +97 -0
- package/dist/.claude-template/skills/write-delivery-guide/template-change-type.md +120 -0
- package/dist/.claude-template/skills/write-delivery-guide/template-multi-role-flow.md +148 -0
- package/dist/.claude-template/skills/write-unit-test-code/SKILL.md +23 -6
- package/dist/core/code/engine/cli/analyze-config.js +320 -0
- package/dist/core/code/engine/cli/analyze.js +1086 -0
- package/dist/core/code/engine/cli/cli-message.js +83 -0
- package/dist/core/code/engine/cli/detect-changes-format.js +58 -0
- package/dist/core/code/engine/cli/embedding-dims.js +43 -0
- package/dist/core/code/engine/cli/format-elapsed.js +12 -0
- package/dist/core/code/engine/cli/help-i18n.js +144 -0
- package/dist/core/code/engine/cli/i18n/en.js +110 -0
- package/dist/core/code/engine/cli/i18n/index.js +47 -0
- package/dist/core/code/engine/cli/i18n/resources.js +9 -0
- package/dist/core/code/engine/cli/i18n/zh-CN.js +110 -0
- package/dist/core/code/engine/cli/lazy-action.js +67 -0
- package/dist/core/code/engine/cli/optional-grammars.js +136 -0
- package/dist/core/code/engine/cli/resolve-invocation.js +76 -0
- package/dist/core/code/engine/cli/status.js +156 -0
- package/dist/core/code/engine/cli/tool.js +384 -0
- package/dist/core/code/engine/config/ignore-service.js +511 -0
- package/dist/core/code/engine/config/supported-languages.js +17 -0
- package/dist/core/code/engine/core/analysis-features.js +64 -0
- package/dist/core/code/engine/core/analyzer-identity.js +2171 -0
- package/dist/core/code/engine/core/git-staleness.js +180 -0
- package/dist/core/code/engine/core/graph/graph.js +180 -0
- package/dist/core/code/engine/core/graph/import-cycles.js +106 -0
- package/dist/core/code/engine/core/graph/types.js +2 -0
- package/dist/core/code/engine/core/index-freshness.js +12 -0
- package/dist/core/code/engine/core/ingestion/binding-accumulator.js +341 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/c-cpp.js +168 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/csharp.js +9 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/dart.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/go.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/jvm.js +54 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/php.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/python.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/ruby.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/rust.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/swift.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/typescript-javascript.js +11 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/generic.js +62 -0
- package/dist/core/code/engine/core/ingestion/call-processor.js +503 -0
- package/dist/core/code/engine/core/ingestion/call-routing.js +98 -0
- package/dist/core/code/engine/core/ingestion/call-types.js +3 -0
- package/dist/core/code/engine/core/ingestion/cfg/callee-cell-format.js +45 -0
- package/dist/core/code/engine/core/ingestion/cfg/cfg-builder.js +202 -0
- package/dist/core/code/engine/core/ingestion/cfg/collect.js +81 -0
- package/dist/core/code/engine/core/ingestion/cfg/control-dependence.js +185 -0
- package/dist/core/code/engine/core/ingestion/cfg/control-flow-context.js +130 -0
- package/dist/core/code/engine/core/ingestion/cfg/emit.js +646 -0
- package/dist/core/code/engine/core/ingestion/cfg/post-dominators.js +182 -0
- package/dist/core/code/engine/core/ingestion/cfg/reaching-def-reason-codec.js +139 -0
- package/dist/core/code/engine/core/ingestion/cfg/reaching-defs-graph.js +322 -0
- package/dist/core/code/engine/core/ingestion/cfg/reaching-defs.js +792 -0
- package/dist/core/code/engine/core/ingestion/cfg/synthetic-escape.js +305 -0
- package/dist/core/code/engine/core/ingestion/cfg/traversal-result.js +6 -0
- package/dist/core/code/engine/core/ingestion/cfg/types.js +14 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/c-cpp-harvest.js +545 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/c-cpp.js +590 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/call-site-harvest.js +356 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/csharp-harvest.js +593 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/csharp.js +871 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/dart-harvest.js +874 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/dart.js +840 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/go-harvest.js +625 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/go.js +642 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/java-harvest.js +517 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/java.js +816 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/kotlin-harvest.js +723 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/kotlin.js +813 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/php-harvest.js +630 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/php.js +725 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/python-harvest.js +776 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/python.js +562 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/ruby-harvest.js +591 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/ruby.js +760 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/rust-harvest.js +877 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/rust.js +562 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/scope-tree-harvest.js +120 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/swift-harvest.js +683 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/swift.js +791 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/typescript-harvest.js +1060 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/typescript.js +587 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/c-cpp.js +77 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/csharp.js +24 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/dart.js +10 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/go.js +28 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/jvm.js +67 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/php.js +10 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/python.js +10 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/ruby.js +13 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/rust.js +10 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/swift.js +21 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/typescript-javascript.js +31 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/generic.js +144 -0
- package/dist/core/code/engine/core/ingestion/class-types.js +2 -0
- package/dist/core/code/engine/core/ingestion/cluster-enricher.js +174 -0
- package/dist/core/code/engine/core/ingestion/community-processor.js +604 -0
- package/dist/core/code/engine/core/ingestion/constants.js +26 -0
- package/dist/core/code/engine/core/ingestion/cpp-ue-preprocessor.js +263 -0
- package/dist/core/code/engine/core/ingestion/csharp-namespace-gate.js +133 -0
- package/dist/core/code/engine/core/ingestion/di-extractors/index.js +38 -0
- package/dist/core/code/engine/core/ingestion/di-extractors/spring.js +310 -0
- package/dist/core/code/engine/core/ingestion/emit-references.js +244 -0
- package/dist/core/code/engine/core/ingestion/entry-point-scoring.js +201 -0
- package/dist/core/code/engine/core/ingestion/export-detection.js +244 -0
- package/dist/core/code/engine/core/ingestion/field-extractor.js +29 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/c-cpp.js +107 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/csharp.js +124 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/dart.js +99 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/go.js +102 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/helpers.js +198 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/jvm.js +172 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/php.js +67 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/python.js +94 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/ruby.js +79 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/rust.js +55 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/swift.js +93 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/typescript-javascript.js +59 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/generic.js +147 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/typescript.js +266 -0
- package/dist/core/code/engine/core/ingestion/field-types.js +3 -0
- package/dist/core/code/engine/core/ingestion/filesystem-walker.js +136 -0
- package/dist/core/code/engine/core/ingestion/finalize-orchestrator.js +159 -0
- package/dist/core/code/engine/core/ingestion/framework-detection.js +432 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/analysis-features.js +38 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/annotation-arguments.js +234 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/aop-candidates.js +88 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/aop.js +487 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/auto-configuration.js +21 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-candidates.js +189 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-catalog.js +32 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-factories.js +73 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/conditionals.js +323 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/config-bindings.js +119 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/di-metadata.js +385 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/resource-injection.js +96 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/c-cpp.js +17 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/csharp.js +46 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/dart.js +59 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/go.js +30 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/jvm.js +73 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/php.js +19 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/python.js +45 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/ruby.js +20 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/rust.js +58 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/swift.js +94 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/typescript-javascript.js +26 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/csharp.js +128 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/go.js +50 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/jvm.js +112 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/php.js +80 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/python.js +75 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/resolver-factory.js +36 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/ruby.js +20 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/rust.js +79 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/standard.js +180 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/types.js +7 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/utils.js +153 -0
- package/dist/core/code/engine/core/ingestion/import-target-adapter.js +99 -0
- package/dist/core/code/engine/core/ingestion/language-config.js +391 -0
- package/dist/core/code/engine/core/ingestion/language-provider.js +25 -0
- package/dist/core/code/engine/core/ingestion/languages/c/arity-metadata.js +98 -0
- package/dist/core/code/engine/core/ingestion/languages/c/arity.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/c/capture-side-channel.js +69 -0
- package/dist/core/code/engine/core/ingestion/languages/c/captures.js +189 -0
- package/dist/core/code/engine/core/ingestion/languages/c/header-scan.js +58 -0
- package/dist/core/code/engine/core/ingestion/languages/c/import-decomposer.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/c/import-target.js +103 -0
- package/dist/core/code/engine/core/ingestion/languages/c/index.js +33 -0
- package/dist/core/code/engine/core/ingestion/languages/c/interpret.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/c/merge-bindings.js +26 -0
- package/dist/core/code/engine/core/ingestion/languages/c/query.js +210 -0
- package/dist/core/code/engine/core/ingestion/languages/c/scope-resolver.js +112 -0
- package/dist/core/code/engine/core/ingestion/languages/c/simple-hooks.js +24 -0
- package/dist/core/code/engine/core/ingestion/languages/c/static-linkage.js +109 -0
- package/dist/core/code/engine/core/ingestion/languages/c-cpp.js +506 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/adl.js +804 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/arity-metadata.js +258 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/arity.js +37 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/capture-side-channel.js +89 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/captures.js +1975 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/constraint-extractor.js +311 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/constraint-filter.js +210 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/conversion-rank.js +163 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/file-local-linkage.js +327 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/header-scan.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/import-decomposer.js +134 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/import-target.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/index.js +33 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/inline-namespaces.js +379 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/interpret.js +239 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/member-lookup.js +470 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/merge-bindings.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/query.js +763 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/range-bindings.js +230 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/scope-resolver.js +354 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/simple-hooks.js +67 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/two-phase-lookup.js +348 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/type-classifier.js +56 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/user-defined-conversions.js +128 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/accessor-unwrap.js +67 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/arity-metadata.js +49 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/arity.js +40 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/cache-stats.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/captures.js +557 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/import-decomposer.js +96 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/import-target.js +176 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/index.js +95 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/interpret.js +150 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/merge-bindings.js +58 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/namespace-siblings.js +708 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/qualified-type-names.js +62 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/query.js +578 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/receiver-binding.js +142 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/resolution-config.js +18 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/scope-resolver.js +84 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/simple-hooks.js +81 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp.js +204 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/arity-metadata.js +38 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/arity.js +34 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/built-ins.js +37 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/cache-stats.js +30 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/captures.js +1096 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/expand-wildcards.js +34 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/extension-type-preprocess.js +33 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/import-target.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/index.js +45 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/interpret.js +101 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/merge-bindings.js +42 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/query.js +246 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/receiver-binding.js +90 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/scope-resolver.js +197 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/signature-bindings.js +54 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/simple-hooks.js +61 -0
- package/dist/core/code/engine/core/ingestion/languages/dart.js +138 -0
- package/dist/core/code/engine/core/ingestion/languages/go/arity-metadata.js +71 -0
- package/dist/core/code/engine/core/ingestion/languages/go/arity.js +17 -0
- package/dist/core/code/engine/core/ingestion/languages/go/cache-stats.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/go/captures.js +492 -0
- package/dist/core/code/engine/core/ingestion/languages/go/expand-wildcards.js +97 -0
- package/dist/core/code/engine/core/ingestion/languages/go/generic-type-parameters.js +146 -0
- package/dist/core/code/engine/core/ingestion/languages/go/import-decomposer.js +47 -0
- package/dist/core/code/engine/core/ingestion/languages/go/import-target.js +70 -0
- package/dist/core/code/engine/core/ingestion/languages/go/index.js +39 -0
- package/dist/core/code/engine/core/ingestion/languages/go/interface-impls.js +955 -0
- package/dist/core/code/engine/core/ingestion/languages/go/interpret.js +177 -0
- package/dist/core/code/engine/core/ingestion/languages/go/merge-bindings.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/go/method-owners.js +131 -0
- package/dist/core/code/engine/core/ingestion/languages/go/namespace-mirror.js +56 -0
- package/dist/core/code/engine/core/ingestion/languages/go/package-clause.js +79 -0
- package/dist/core/code/engine/core/ingestion/languages/go/package-siblings.js +83 -0
- package/dist/core/code/engine/core/ingestion/languages/go/query.js +298 -0
- package/dist/core/code/engine/core/ingestion/languages/go/range-binding.js +127 -0
- package/dist/core/code/engine/core/ingestion/languages/go/receiver-binding.js +24 -0
- package/dist/core/code/engine/core/ingestion/languages/go/scope-resolver.js +75 -0
- package/dist/core/code/engine/core/ingestion/languages/go/simple-hooks.js +31 -0
- package/dist/core/code/engine/core/ingestion/languages/go/type-binding.js +279 -0
- package/dist/core/code/engine/core/ingestion/languages/go.js +160 -0
- package/dist/core/code/engine/core/ingestion/languages/index.js +66 -0
- package/dist/core/code/engine/core/ingestion/languages/java/analysis-features.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/java/arity-metadata.js +43 -0
- package/dist/core/code/engine/core/ingestion/languages/java/arity.js +27 -0
- package/dist/core/code/engine/core/ingestion/languages/java/cache-stats.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/java/capture-side-channel.js +123 -0
- package/dist/core/code/engine/core/ingestion/languages/java/captures.js +791 -0
- package/dist/core/code/engine/core/ingestion/languages/java/import-decomposer.js +88 -0
- package/dist/core/code/engine/core/ingestion/languages/java/import-target.js +103 -0
- package/dist/core/code/engine/core/ingestion/languages/java/index.js +43 -0
- package/dist/core/code/engine/core/ingestion/languages/java/interpret.js +146 -0
- package/dist/core/code/engine/core/ingestion/languages/java/merge-bindings.js +43 -0
- package/dist/core/code/engine/core/ingestion/languages/java/package-facts.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/java/package-siblings.js +11 -0
- package/dist/core/code/engine/core/ingestion/languages/java/query.js +319 -0
- package/dist/core/code/engine/core/ingestion/languages/java/receiver-binding.js +98 -0
- package/dist/core/code/engine/core/ingestion/languages/java/scope-resolver.js +213 -0
- package/dist/core/code/engine/core/ingestion/languages/java/simple-hooks.js +39 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-aop.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-bean-metadata.js +11 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-conditionals.js +52 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-config-bindings.js +222 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-di.js +165 -0
- package/dist/core/code/engine/core/ingestion/languages/java.js +192 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/arity.js +15 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/captures.js +1122 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/import-target.js +56 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/index.js +109 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/interpret.js +45 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/merge-bindings.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/query.js +659 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/scope-resolver.js +78 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/simple-hooks.js +44 -0
- package/dist/core/code/engine/core/ingestion/languages/jvm/package-facts.js +46 -0
- package/dist/core/code/engine/core/ingestion/languages/jvm/package-siblings.js +200 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/arity-metadata.js +23 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/arity.js +18 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/cache-stats.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/capture-side-channel.js +160 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/captures.js +1262 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/companion-scopes.js +72 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/import-decomposer.js +40 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/import-target.js +135 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/index.js +26 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/interpret.js +75 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/merge-bindings.js +28 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/owners.js +134 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/package-facts.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/package-siblings.js +11 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/query.js +243 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/receiver-binding.js +103 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/scope-resolver.js +207 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/simple-hooks.js +42 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-aop.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-bean-metadata.js +11 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-conditionals.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-di.js +304 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin.js +189 -0
- package/dist/core/code/engine/core/ingestion/languages/php/arity-metadata.js +66 -0
- package/dist/core/code/engine/core/ingestion/languages/php/arity.js +43 -0
- package/dist/core/code/engine/core/ingestion/languages/php/cache-stats.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/php/captures.js +1166 -0
- package/dist/core/code/engine/core/ingestion/languages/php/import-decomposer.js +238 -0
- package/dist/core/code/engine/core/ingestion/languages/php/import-target.js +213 -0
- package/dist/core/code/engine/core/ingestion/languages/php/index.js +85 -0
- package/dist/core/code/engine/core/ingestion/languages/php/interpret.js +256 -0
- package/dist/core/code/engine/core/ingestion/languages/php/merge-bindings.js +50 -0
- package/dist/core/code/engine/core/ingestion/languages/php/namespace-siblings.js +353 -0
- package/dist/core/code/engine/core/ingestion/languages/php/query.js +391 -0
- package/dist/core/code/engine/core/ingestion/languages/php/receiver-binding.js +135 -0
- package/dist/core/code/engine/core/ingestion/languages/php/scope-resolver.js +361 -0
- package/dist/core/code/engine/core/ingestion/languages/php/simple-hooks.js +116 -0
- package/dist/core/code/engine/core/ingestion/languages/php.js +302 -0
- package/dist/core/code/engine/core/ingestion/languages/python/arity-metadata.js +49 -0
- package/dist/core/code/engine/core/ingestion/languages/python/arity.js +41 -0
- package/dist/core/code/engine/core/ingestion/languages/python/cache-stats.js +34 -0
- package/dist/core/code/engine/core/ingestion/languages/python/captures.js +299 -0
- package/dist/core/code/engine/core/ingestion/languages/python/depends-references.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/python/import-decomposer.js +115 -0
- package/dist/core/code/engine/core/ingestion/languages/python/import-target.js +440 -0
- package/dist/core/code/engine/core/ingestion/languages/python/index-stats.js +30 -0
- package/dist/core/code/engine/core/ingestion/languages/python/index.js +96 -0
- package/dist/core/code/engine/core/ingestion/languages/python/interpret.js +430 -0
- package/dist/core/code/engine/core/ingestion/languages/python/merge-bindings.js +47 -0
- package/dist/core/code/engine/core/ingestion/languages/python/query.js +323 -0
- package/dist/core/code/engine/core/ingestion/languages/python/receiver-binding.js +310 -0
- package/dist/core/code/engine/core/ingestion/languages/python/scope-resolver.js +80 -0
- package/dist/core/code/engine/core/ingestion/languages/python/simple-hooks.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/python.js +140 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/arity.js +41 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/cache-stats.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/captures.js +864 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/import-target.js +88 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/index.js +29 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/interpret.js +115 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/merge-bindings.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/query.js +349 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/receiver-binding.js +70 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/scope-resolver.js +263 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/simple-hooks.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby.js +215 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/arity.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/cache-stats.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/captures.js +304 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/import-decomposer.js +167 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/import-target.js +108 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/index.js +29 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/interpret.js +201 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/merge-bindings.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/method-owners.js +76 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/module-path.js +222 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/qualified-call.js +482 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/query.js +280 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/range-binding.js +687 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/receiver-binding.js +148 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/scope-resolver.js +151 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/simple-hooks.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/rust.js +183 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/arity-metadata.js +44 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/arity.js +45 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/base-type.js +30 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/cache-stats.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/captures.js +594 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/conditional-directive-preprocess.js +256 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/implicit-imports.js +60 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/import-decomposer.js +87 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/import-target.js +84 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/index.js +56 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/interpret.js +93 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/merge-bindings.js +51 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/query.js +226 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/receiver-binding.js +169 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/scope-resolver.js +192 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/sibling-type-bindings.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/signature-bindings.js +69 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/simple-hooks.js +65 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/target-grouping.js +97 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/target-siblings.js +74 -0
- package/dist/core/code/engine/core/ingestion/languages/swift.js +246 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/arity-metadata.js +106 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/arity.js +57 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/array-callback.js +58 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/cache-stats.js +34 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/captures.js +956 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/cjs-export-assignment.js +535 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/cjs-module-exports.js +196 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/import-decomposer.js +374 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/import-target.js +65 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/index.js +108 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/interpret.js +344 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/merge-bindings.js +161 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/nuxt-auto-imports.js +325 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/query.js +1328 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/receiver-binding.js +201 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/scope-resolver.js +293 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/simple-hooks.js +139 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript.js +455 -0
- package/dist/core/code/engine/core/ingestion/languages/vue/captures.js +70 -0
- package/dist/core/code/engine/core/ingestion/languages/vue/import-target.js +61 -0
- package/dist/core/code/engine/core/ingestion/languages/vue/index.js +55 -0
- package/dist/core/code/engine/core/ingestion/languages/vue/scope-resolver.js +295 -0
- package/dist/core/code/engine/core/ingestion/languages/vue.js +96 -0
- package/dist/core/code/engine/core/ingestion/local-symbol-pruner.js +68 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/c-cpp.js +387 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/csharp.js +290 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/dart.js +392 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/go.js +179 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/jvm.js +350 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/php.js +306 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/python.js +312 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/ruby.js +289 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/rust.js +198 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/swift.js +286 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/typescript-javascript.js +341 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/generic.js +209 -0
- package/dist/core/code/engine/core/ingestion/method-types.js +3 -0
- package/dist/core/code/engine/core/ingestion/model/field-registry.js +41 -0
- package/dist/core/code/engine/core/ingestion/model/index.js +52 -0
- package/dist/core/code/engine/core/ingestion/model/method-registry.js +138 -0
- package/dist/core/code/engine/core/ingestion/model/owned-members-lookup.js +46 -0
- package/dist/core/code/engine/core/ingestion/model/registration-table.js +234 -0
- package/dist/core/code/engine/core/ingestion/model/resolve.js +183 -0
- package/dist/core/code/engine/core/ingestion/model/scope-resolution-indexes.js +43 -0
- package/dist/core/code/engine/core/ingestion/model/semantic-model.js +179 -0
- package/dist/core/code/engine/core/ingestion/model/symbol-table.js +216 -0
- package/dist/core/code/engine/core/ingestion/model/type-registry.js +84 -0
- package/dist/core/code/engine/core/ingestion/mro-processor.js +709 -0
- package/dist/core/code/engine/core/ingestion/parsing-processor.js +312 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/communities.js +69 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/cross-file.js +71 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/di.js +338 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/http-api-calls.js +312 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/index.js +54 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/mro.js +40 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/orm.js +78 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/parse-impl.js +1286 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/parse.js +41 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/processes.js +193 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/prune-local-symbols.js +29 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/registry.js +52 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/routes.js +409 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/rpc-edges.js +301 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/runner.js +207 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/scan.js +49 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-aop.js +442 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-auto-configuration.js +264 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-config.js +440 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/structure.js +38 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/tools.js +89 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/types.js +40 -0
- package/dist/core/code/engine/core/ingestion/pipeline.js +152 -0
- package/dist/core/code/engine/core/ingestion/process-processor.js +325 -0
- package/dist/core/code/engine/core/ingestion/resolve-references.js +205 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/constant-resolver.js +135 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/django-root-discovery.js +221 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/django.js +428 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/expo.js +39 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/fastapi-router-bindings.js +264 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/laravel.js +501 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/middleware.js +175 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/nextjs.js +81 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/php.js +25 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/python-const-resolver.js +307 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/response-shapes.js +299 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/route-path.js +71 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/spring-shared.js +310 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/spring.js +441 -0
- package/dist/core/code/engine/core/ingestion/scope-extractor-bridge.js +60 -0
- package/dist/core/code/engine/core/ingestion/scope-extractor.js +1373 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/contract/scope-resolver.js +282 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.js +72 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/edges.js +194 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/ids.js +472 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.js +49 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/method-dispatch.js +43 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +274 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +93 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/callable-value-flow.js +1240 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/compound-receiver.js +1174 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/free-call-fallback.js +873 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/imported-return-types.js +226 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/mro.js +107 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/overload-narrowing.js +441 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/property-dispatch.js +122 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +1720 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/phase.js +395 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/reconcile-ownership.js +208 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/registry.js +49 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/run.js +632 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/validate-bindings-immutability.js +112 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/resolution-outcome.js +41 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/scope/namespace-targets.js +81 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/scope/walkers.js +1835 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/unresolved-receivers.js +242 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/utils/definition-id.js +22 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/workspace-index.js +151 -0
- package/dist/core/code/engine/core/ingestion/structure-processor.js +40 -0
- package/dist/core/code/engine/core/ingestion/tree-sitter-queries.js +2244 -0
- package/dist/core/code/engine/core/ingestion/ts-js-hoc-utils.js +115 -0
- package/dist/core/code/engine/core/ingestion/type-env.js +1136 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/c-cpp.js +555 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/csharp.js +570 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/dart.js +372 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/go.js +508 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/jvm.js +875 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/php.js +537 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/python.js +477 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/ruby.js +380 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/rust.js +502 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/shared.js +843 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/swift.js +490 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/types.js +2 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/typescript.js +690 -0
- package/dist/core/code/engine/core/ingestion/utils/ast-helpers.js +1693 -0
- package/dist/core/code/engine/core/ingestion/utils/call-analysis.js +779 -0
- package/dist/core/code/engine/core/ingestion/utils/callable-flow-captures.js +932 -0
- package/dist/core/code/engine/core/ingestion/utils/callable-labels.js +49 -0
- package/dist/core/code/engine/core/ingestion/utils/deferred-resolution-profile.js +151 -0
- package/dist/core/code/engine/core/ingestion/utils/effective-ram.js +67 -0
- package/dist/core/code/engine/core/ingestion/utils/env.js +60 -0
- package/dist/core/code/engine/core/ingestion/utils/event-loop.js +9 -0
- package/dist/core/code/engine/core/ingestion/utils/graph-sort.js +103 -0
- package/dist/core/code/engine/core/ingestion/utils/heap-probe.js +45 -0
- package/dist/core/code/engine/core/ingestion/utils/heritage-marker.js +47 -0
- package/dist/core/code/engine/core/ingestion/utils/line-base.js +24 -0
- package/dist/core/code/engine/core/ingestion/utils/max-file-size.js +59 -0
- package/dist/core/code/engine/core/ingestion/utils/method-props.js +198 -0
- package/dist/core/code/engine/core/ingestion/utils/qualified-name.js +73 -0
- package/dist/core/code/engine/core/ingestion/utils/receiver-chain-captures.js +60 -0
- package/dist/core/code/engine/core/ingestion/utils/receiver-chain-codec.js +188 -0
- package/dist/core/code/engine/core/ingestion/utils/scope-tree-walk.js +36 -0
- package/dist/core/code/engine/core/ingestion/utils/symbol-labels.js +48 -0
- package/dist/core/code/engine/core/ingestion/utils/template-arguments.js +187 -0
- package/dist/core/code/engine/core/ingestion/utils/type-parameters.js +209 -0
- package/dist/core/code/engine/core/ingestion/utils/verbose.js +6 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/c-cpp.js +133 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/csharp.js +66 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/dart.js +111 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/go.js +153 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/jvm.js +145 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/php.js +61 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/python.js +104 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/ruby.js +55 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/rust.js +79 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/swift.js +91 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/typescript-javascript.js +86 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/generic.js +111 -0
- package/dist/core/code/engine/core/ingestion/variable-types.js +3 -0
- package/dist/core/code/engine/core/ingestion/vue-sfc-extractor.js +544 -0
- package/dist/core/code/engine/core/ingestion/workers/callable-id.js +122 -0
- package/dist/core/code/engine/core/ingestion/workers/clone-safety.js +470 -0
- package/dist/core/code/engine/core/ingestion/workers/parse-worker.js +2456 -0
- package/dist/core/code/engine/core/ingestion/workers/post-result.js +90 -0
- package/dist/core/code/engine/core/ingestion/workers/quarantine.js +41 -0
- package/dist/core/code/engine/core/ingestion/workers/result-merge.js +59 -0
- package/dist/core/code/engine/core/ingestion/workers/worker-pool.js +1725 -0
- package/dist/core/code/engine/core/ingestion/workspace-config.js +139 -0
- package/dist/core/code/engine/core/lbug/conn-lock.js +72 -0
- package/dist/core/code/engine/core/lbug/csv-generator.js +710 -0
- package/dist/core/code/engine/core/lbug/cypher-escape.js +24 -0
- package/dist/core/code/engine/core/lbug/extension-load-error.js +339 -0
- package/dist/core/code/engine/core/lbug/extension-loader.js +261 -0
- package/dist/core/code/engine/core/lbug/graph-emit-sink.js +584 -0
- package/dist/core/code/engine/core/lbug/lbug-adapter.js +2703 -0
- package/dist/core/code/engine/core/lbug/lbug-config.js +1029 -0
- package/dist/core/code/engine/core/lbug/native-check.js +435 -0
- package/dist/core/code/engine/core/lbug/pool-adapter.js +973 -0
- package/dist/core/code/engine/core/lbug/query-params.js +25 -0
- package/dist/core/code/engine/core/lbug/query-result-utils.js +31 -0
- package/dist/core/code/engine/core/lbug/rel-pair-routing.js +373 -0
- package/dist/core/code/engine/core/lbug/schema.js +771 -0
- package/dist/core/code/engine/core/lbug/shutdown-helpers.js +40 -0
- package/dist/core/code/engine/core/lbug/sidecar-recovery.js +716 -0
- package/dist/core/code/engine/core/lbug/stdio-capture.js +49 -0
- package/dist/core/code/engine/core/lbug/sync-csv-writer.js +115 -0
- package/dist/core/code/engine/core/lbug/wal-checkpoint-driver.js +215 -0
- package/dist/core/code/engine/core/lbug/wal-driver-state.js +28 -0
- package/dist/core/code/engine/core/logger.js +339 -0
- package/dist/core/code/engine/core/platform/capabilities.js +91 -0
- package/dist/core/code/engine/core/run-analyze.js +1098 -0
- package/dist/core/code/engine/core/tree-sitter/parser-loader.js +281 -0
- package/dist/core/code/engine/core/tree-sitter/safe-parse.js +258 -0
- package/dist/core/code/engine/core/tree-sitter/vendored-grammars.js +64 -0
- package/dist/core/code/engine/lib/utils.js +121 -0
- package/dist/core/code/engine/mcp/core/lbug-adapter.js +27 -0
- package/dist/core/code/engine/mcp/local/aop-metadata.js +230 -0
- package/dist/core/code/engine/mcp/local/bean-metadata.js +49 -0
- package/dist/core/code/engine/mcp/local/limits.js +15 -0
- package/dist/core/code/engine/mcp/local/line-display.js +6 -0
- package/dist/core/code/engine/mcp/local/local-backend.js +4142 -0
- package/dist/core/code/engine/storage/branch-index.js +72 -0
- package/dist/core/code/engine/storage/file-hash.js +95 -0
- package/dist/core/code/engine/storage/fs-atomic.js +34 -0
- package/dist/core/code/engine/storage/git.js +555 -0
- package/dist/core/code/engine/storage/index-lock.js +664 -0
- package/dist/core/code/engine/storage/parse-cache.js +650 -0
- package/dist/core/code/engine/storage/parsedfile-store.js +620 -0
- package/dist/core/code/engine/storage/repo-manager.js +1061 -0
- package/dist/core/code/engine/storage/scope-index-store.js +247 -0
- package/dist/core/code/engine/types/pipeline.js +2 -0
- package/dist/core/code/scripts/install-duckdb-extension.mjs +125 -0
- package/dist/core/code/scripts/resolve-analyze-cmd.cjs +346 -0
- package/dist/core/code/shared/graph/types.js +8 -0
- package/dist/core/code/shared/index.js +105 -0
- package/dist/core/code/shared/integrations/circuit-breaker.js +242 -0
- package/dist/core/code/shared/integrations/resilient-fetch.js +224 -0
- package/dist/core/code/shared/integrations/retry.js +70 -0
- package/dist/core/code/shared/integrations/understand-quickly.js +145 -0
- package/dist/core/code/shared/language-detection.js +162 -0
- package/dist/core/code/shared/languages.js +27 -0
- package/dist/core/code/shared/lbug/schema-constants.js +98 -0
- package/dist/core/code/shared/mro-strategy.js +2 -0
- package/dist/core/code/shared/pipeline.js +5 -0
- package/dist/core/code/shared/scope-resolution/callable-flow-site.js +11 -0
- package/dist/core/code/shared/scope-resolution/def-index.js +53 -0
- package/dist/core/code/shared/scope-resolution/evidence-weights.js +87 -0
- package/dist/core/code/shared/scope-resolution/finalize-algorithm.js +807 -0
- package/dist/core/code/shared/scope-resolution/language-classification.js +46 -0
- package/dist/core/code/shared/scope-resolution/method-dispatch-index.js +100 -0
- package/dist/core/code/shared/scope-resolution/module-scope-index.js +59 -0
- package/dist/core/code/shared/scope-resolution/origin-priority.js +23 -0
- package/dist/core/code/shared/scope-resolution/parsed-file.js +54 -0
- package/dist/core/code/shared/scope-resolution/position-index.js +136 -0
- package/dist/core/code/shared/scope-resolution/qualified-name-index.js +77 -0
- package/dist/core/code/shared/scope-resolution/reference-site.js +24 -0
- package/dist/core/code/shared/scope-resolution/registries/class-registry.js +32 -0
- package/dist/core/code/shared/scope-resolution/registries/context.js +52 -0
- package/dist/core/code/shared/scope-resolution/registries/evidence.js +152 -0
- package/dist/core/code/shared/scope-resolution/registries/field-registry.js +33 -0
- package/dist/core/code/shared/scope-resolution/registries/lookup-core.js +392 -0
- package/dist/core/code/shared/scope-resolution/registries/lookup-qualified.js +58 -0
- package/dist/core/code/shared/scope-resolution/registries/macro-registry.js +34 -0
- package/dist/core/code/shared/scope-resolution/registries/method-registry.js +34 -0
- package/dist/core/code/shared/scope-resolution/registries/tie-breaks.js +63 -0
- package/dist/core/code/shared/scope-resolution/resolve-type-ref.js +128 -0
- package/dist/core/code/shared/scope-resolution/scope-id.js +49 -0
- package/dist/core/code/shared/scope-resolution/scope-tree.js +225 -0
- package/dist/core/code/shared/scope-resolution/symbol-definition.js +12 -0
- package/dist/core/code/shared/scope-resolution/types.js +25 -0
- package/dist/core/code/shared/test-helpers.js +17 -0
- package/dist/core/code/vendor/leiden/index.cjs +355 -0
- package/dist/core/code/vendor/leiden/utils.cjs +419 -0
- package/dist/core/features/scanner.d.ts +2 -0
- package/dist/core/features/scanner.d.ts.map +1 -1
- package/dist/core/features/scanner.js +27 -6
- package/dist/core/features/scanner.js.map +1 -1
- package/dist/core/timeline/cli.d.ts.map +1 -1
- package/dist/core/timeline/cli.js +13 -6
- package/dist/core/timeline/cli.js.map +1 -1
- package/dist/core/timeline/debris.d.ts +20 -0
- package/dist/core/timeline/debris.d.ts.map +1 -0
- package/dist/core/timeline/debris.js +124 -0
- package/dist/core/timeline/debris.js.map +1 -0
- package/dist/core/timeline/hook-runner.d.ts.map +1 -1
- package/dist/core/timeline/hook-runner.js +3 -1
- package/dist/core/timeline/hook-runner.js.map +1 -1
- package/dist/core/timeline/hooks.d.ts.map +1 -1
- package/dist/core/timeline/hooks.js +13 -5
- package/dist/core/timeline/hooks.js.map +1 -1
- package/dist/core/timeline/installer.d.ts +2 -0
- package/dist/core/timeline/installer.d.ts.map +1 -1
- package/dist/core/timeline/installer.js +12 -0
- package/dist/core/timeline/installer.js.map +1 -1
- package/dist/core/timeline/project-root.d.ts +21 -0
- package/dist/core/timeline/project-root.d.ts.map +1 -0
- package/dist/core/timeline/project-root.js +83 -0
- package/dist/core/timeline/project-root.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,395 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Phase: scopeResolution
|
|
4
|
+
*
|
|
5
|
+
* Generic registry-primary resolution phase (RFC #909 Ring 3).
|
|
6
|
+
*
|
|
7
|
+
* For every language whose provider is registered in `SCOPE_RESOLVERS`:
|
|
8
|
+
* 1. Filter scanned files by language extension.
|
|
9
|
+
* 2. Read file contents.
|
|
10
|
+
* 3. Drive the scope-based pipeline end-to-end via the generic
|
|
11
|
+
* `runScopeResolution(input, provider)` orchestrator.
|
|
12
|
+
* 4. Emit IMPORTS / CALLS / ACCESSES / INHERITS / USES edges.
|
|
13
|
+
*
|
|
14
|
+
* This is the sole resolution path — RING4-1 (#942) deleted the legacy
|
|
15
|
+
* call-resolution DAG, so there is no longer a per-language flag gating
|
|
16
|
+
* registry-vs-legacy.
|
|
17
|
+
*
|
|
18
|
+
* Adding a language is one change: implement `ScopeResolver` in
|
|
19
|
+
* `languages/<lang>/scope-resolver.ts` and register it in
|
|
20
|
+
* `scope-resolution/pipeline/registry.ts`.
|
|
21
|
+
*
|
|
22
|
+
* @deps parse (needs Symbol nodes already in the graph so emit-references
|
|
23
|
+
* can attach edges to existing Function/Method/Class nodes)
|
|
24
|
+
* @reads scannedFiles
|
|
25
|
+
* @writes graph (IMPORTS, CALLS, ACCESSES, INHERITS, USES)
|
|
26
|
+
*/
|
|
27
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
+
exports.scopeResolutionPhase = void 0;
|
|
29
|
+
exports.selectScopeSourcePathsToRead = selectScopeSourcePathsToRead;
|
|
30
|
+
const types_js_1 = require("../../pipeline-phases/types.js");
|
|
31
|
+
const index_js_1 = require("../../../../../shared/index.js");
|
|
32
|
+
const filesystem_walker_js_1 = require("../../filesystem-walker.js");
|
|
33
|
+
const run_js_1 = require("./run.js");
|
|
34
|
+
const parser_loader_js_1 = require("../../../tree-sitter/parser-loader.js");
|
|
35
|
+
const node_lookup_js_1 = require("../graph-bridge/node-lookup.js");
|
|
36
|
+
const registry_js_1 = require("./registry.js");
|
|
37
|
+
const env_js_1 = require("../../utils/env.js");
|
|
38
|
+
const heap_probe_js_1 = require("../../utils/heap-probe.js");
|
|
39
|
+
const parsedfile_store_js_1 = require("../../../../storage/parsedfile-store.js");
|
|
40
|
+
const logger_js_1 = require("../../../logger.js");
|
|
41
|
+
const NOOP_OUTPUT = Object.freeze({
|
|
42
|
+
ran: false,
|
|
43
|
+
filesProcessed: 0,
|
|
44
|
+
importsEmitted: 0,
|
|
45
|
+
referenceEdgesEmitted: 0,
|
|
46
|
+
resolutionOutcomes: [],
|
|
47
|
+
perLanguage: new Map(),
|
|
48
|
+
});
|
|
49
|
+
/** Select source files that must be materialized for one resolver pass. */
|
|
50
|
+
function selectScopeSourcePathsToRead(provider, primaryFilePaths, preExtractedByPath) {
|
|
51
|
+
const hasPostExtractHooks = provider.populateWorkspaceOwners !== undefined ||
|
|
52
|
+
provider.populateNamespaceSiblings !== undefined ||
|
|
53
|
+
provider.populateRangeBindings !== undefined ||
|
|
54
|
+
provider.emitPostResolutionEdges !== undefined;
|
|
55
|
+
const needsAllSourceText = hasPostExtractHooks && provider.postExtractSourceTextPolicy !== 'uncached-files';
|
|
56
|
+
return needsAllSourceText
|
|
57
|
+
? [...primaryFilePaths]
|
|
58
|
+
: primaryFilePaths.filter((filePath) => !preExtractedByPath.has(filePath));
|
|
59
|
+
}
|
|
60
|
+
exports.scopeResolutionPhase = {
|
|
61
|
+
name: 'scopeResolution',
|
|
62
|
+
// Depends on `parse` because emit-references attaches edges to
|
|
63
|
+
// already-existing Symbol nodes (Function/Method/Class) that the `parse`
|
|
64
|
+
// phase creates.
|
|
65
|
+
//
|
|
66
|
+
// The `crossFile` dep is retained for stable ordering but is no longer
|
|
67
|
+
// load-bearing: inheritance (EXTENDS/IMPLEMENTS) edges are now emitted by
|
|
68
|
+
// this phase's own `preEmitInheritanceEdges` before `buildMro` runs, and
|
|
69
|
+
// since RING4-1 (#942) `crossFile` only disposes the BindingAccumulator
|
|
70
|
+
// (the legacy cross-file re-resolution it used to run was deleted with the
|
|
71
|
+
// call-resolution DAG).
|
|
72
|
+
deps: ['parse', 'crossFile', 'structure'],
|
|
73
|
+
async execute(ctx, deps) {
|
|
74
|
+
(0, heap_probe_js_1.logHeapProbe)('scopeResolution-enter');
|
|
75
|
+
const { scannedFiles } = (0, types_js_1.getPhaseOutput)(deps, 'structure');
|
|
76
|
+
const parseOutput = (0, types_js_1.getPhaseOutput)(deps, 'parse');
|
|
77
|
+
const { model, parsedFiles: workerParsedFiles } = parseOutput;
|
|
78
|
+
// SemanticModel populated during `parse`: scope-resolution consumes
|
|
79
|
+
// TypeRegistry / MethodRegistry / SymbolTable lookups instead of
|
|
80
|
+
// rebuilding parallel indexes. See ARCHITECTURE.md § "Semantic-model
|
|
81
|
+
// source of truth".
|
|
82
|
+
// Build a per-file lookup of ParsedFile artifacts the workers (or
|
|
83
|
+
// sequential extracts) already produced. Threading this into
|
|
84
|
+
// `runScopeResolution` lets the per-language extract loop short-
|
|
85
|
+
// circuit `extractParsedFile` — the dominant cost on the warm-cache
|
|
86
|
+
// path, since workers can't return tree-sitter Trees across the
|
|
87
|
+
// MessageChannel and scope-resolution would otherwise re-parse
|
|
88
|
+
// every file from scratch on the main thread.
|
|
89
|
+
const preExtractedByPath = new Map();
|
|
90
|
+
for (const pf of workerParsedFiles) {
|
|
91
|
+
preExtractedByPath.set(pf.filePath, pf);
|
|
92
|
+
}
|
|
93
|
+
// Disk-backed ParsedFile store (#1983): on huge repos the parse phase
|
|
94
|
+
// flushes worker-produced ParsedFiles to disk (instead of `workerParsedFiles`
|
|
95
|
+
// heap) and we stream them back here per language. Reusing them means
|
|
96
|
+
// scope-resolution does ZERO tree-sitter parsing on the main thread, which
|
|
97
|
+
// is what eliminates the unbounded native re-parse leak that OOM'd large
|
|
98
|
+
// analyses. `undefined` when no storage path (tests / direct calls) — those
|
|
99
|
+
// runs use the in-heap `workerParsedFiles` above or fall back to a fresh
|
|
100
|
+
// extract per file inside runScopeResolution.
|
|
101
|
+
const parsedFileStorePath = ctx.options?.parsedFileStorePath;
|
|
102
|
+
// Standalone providers are re-extracted from source on the main thread;
|
|
103
|
+
// workers intentionally do not serialize ParsedFile artifacts for them.
|
|
104
|
+
// Drop any stale/cache-sourced entry defensively so provider-owned regex
|
|
105
|
+
// capture logic is always the source of truth for the current content.
|
|
106
|
+
for (const [path] of preExtractedByPath) {
|
|
107
|
+
const lang = (0, index_js_1.getLanguageFromFilename)(path);
|
|
108
|
+
if (lang === null)
|
|
109
|
+
continue;
|
|
110
|
+
const provider = registry_js_1.SCOPE_RESOLVERS.get(lang);
|
|
111
|
+
if (provider?.languageProvider.parseStrategy === 'standalone') {
|
|
112
|
+
preExtractedByPath.delete(path);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
let totalFiles = 0;
|
|
116
|
+
let totalImports = 0;
|
|
117
|
+
let totalRefs = 0;
|
|
118
|
+
let anyRan = false;
|
|
119
|
+
const resolutionOutcomes = [];
|
|
120
|
+
const perLanguage = new Map();
|
|
121
|
+
// Pre-count files and languages for progress reporting. This avoids
|
|
122
|
+
// a frozen progress bar during long scope-resolution runs (#1741).
|
|
123
|
+
// Uses primary-language file counts only; languages that expand their
|
|
124
|
+
// context via collectScopeContextPaths may process more files than shown.
|
|
125
|
+
let totalScopeFiles = 0;
|
|
126
|
+
let totalScopeLangs = 0;
|
|
127
|
+
const allScannedPaths = new Set(scannedFiles.map((f) => f.path));
|
|
128
|
+
// Partition scanned files by language ONCE (O(F)). The previous code
|
|
129
|
+
// re-filtered all scannedFiles per language for the precount AND again in the
|
|
130
|
+
// per-language loop below — O(languages × files), ~2.3M getLanguageFromFilename
|
|
131
|
+
// calls on the Linux kernel. Bucketing once collapses that to O(F).
|
|
132
|
+
// Language-agnostic: keyed by the provider-supplied SupportedLanguages value.
|
|
133
|
+
const filesByLang = new Map();
|
|
134
|
+
for (const f of scannedFiles) {
|
|
135
|
+
const fileLang = (0, index_js_1.getLanguageFromFilename)(f.path);
|
|
136
|
+
if (fileLang === null)
|
|
137
|
+
continue;
|
|
138
|
+
// Tree-sitter providers require an available grammar. Standalone regex
|
|
139
|
+
// providers deliberately have none and re-extract on the main thread.
|
|
140
|
+
const resolver = registry_js_1.SCOPE_RESOLVERS.get(fileLang);
|
|
141
|
+
if (resolver?.languageProvider.parseStrategy !== 'standalone' &&
|
|
142
|
+
!(0, parser_loader_js_1.isLanguageAvailable)(fileLang)) {
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
let bucket = filesByLang.get(fileLang);
|
|
146
|
+
if (bucket === undefined) {
|
|
147
|
+
bucket = [];
|
|
148
|
+
filesByLang.set(fileLang, bucket);
|
|
149
|
+
}
|
|
150
|
+
bucket.push(f);
|
|
151
|
+
}
|
|
152
|
+
for (const [lang] of registry_js_1.SCOPE_RESOLVERS) {
|
|
153
|
+
const count = filesByLang.get(lang)?.length ?? 0;
|
|
154
|
+
if (count > 0) {
|
|
155
|
+
totalScopeLangs++;
|
|
156
|
+
totalScopeFiles += count;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
const SCOPE_PCT_START = 90;
|
|
160
|
+
const SCOPE_PCT_RANGE = 8; // 90-98 internal → 54-59% display
|
|
161
|
+
let processedScopeFiles = 0;
|
|
162
|
+
let currentLangIdx = 0;
|
|
163
|
+
if (totalScopeFiles > 0) {
|
|
164
|
+
ctx.onProgress({
|
|
165
|
+
phase: 'scopeResolution',
|
|
166
|
+
percent: SCOPE_PCT_START,
|
|
167
|
+
message: 'Resolving types',
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
// Build the graph-node lookup ONCE and share it across every language pass.
|
|
171
|
+
// It scans the whole graph (~2 GB on the kernel) and is language-agnostic,
|
|
172
|
+
// so the previous per-language rebuild burned that CPU+heap N times and, on
|
|
173
|
+
// a huge repo, a tiny language's full-graph copy overlapped the next
|
|
174
|
+
// language's — a real contributor to the scope-resolution memory peak.
|
|
175
|
+
// Bracket the whole-graph node-lookup build with probes — scanning every
|
|
176
|
+
// graph node is the silent multi-minute step before the first per-language
|
|
177
|
+
// marker on huge repos, so make it observable.
|
|
178
|
+
(0, heap_probe_js_1.logHeapProbe)('scope-setup-nodeLookup-start', `langs=${totalScopeLangs} files=${totalScopeFiles}`);
|
|
179
|
+
const sharedNodeLookup = totalScopeFiles > 0 ? (0, node_lookup_js_1.buildGraphNodeLookup)(ctx.graph) : undefined;
|
|
180
|
+
(0, heap_probe_js_1.logHeapProbe)('scope-setup-nodeLookup-end', `langs=${totalScopeLangs}`);
|
|
181
|
+
// M4 (#2084 review P2-6): build the functionish-node index ONCE for the
|
|
182
|
+
// taint summary harvest, shared across every language pass (it is a whole-
|
|
183
|
+
// graph scan and language-agnostic). Only when pdg is on — off ⇒ undefined,
|
|
184
|
+
// no scan, byte-identical.
|
|
185
|
+
for (const [lang, provider] of registry_js_1.SCOPE_RESOLVERS) {
|
|
186
|
+
const primaryLangFiles = filesByLang.get(lang) ?? [];
|
|
187
|
+
if (primaryLangFiles.length === 0)
|
|
188
|
+
continue;
|
|
189
|
+
const primaryFilePaths = primaryLangFiles.map((f) => f.path);
|
|
190
|
+
// Load per-language import-resolution config (tsconfig paths,
|
|
191
|
+
// composer.json autoload, go.mod, ...). One I/O round trip per
|
|
192
|
+
// workspace pass — cached implicitly by the result handed to
|
|
193
|
+
// every `resolveImportTarget` call below.
|
|
194
|
+
const resolutionConfig = provider.loadResolutionConfig !== undefined
|
|
195
|
+
? await provider.loadResolutionConfig(ctx.repoPath)
|
|
196
|
+
: undefined;
|
|
197
|
+
// Some languages (e.g. Vue) expand their file universe beyond the
|
|
198
|
+
// primary-language files via the `collectScopeContextPaths` hook.
|
|
199
|
+
// The hook receives raw source contents of the primary files so it
|
|
200
|
+
// can trace import closures without a second tree-sitter parse.
|
|
201
|
+
//
|
|
202
|
+
// To avoid reading primary files twice (once for the hook, once for
|
|
203
|
+
// the resolution pass), we read them upfront and merge with the
|
|
204
|
+
// extra context paths the hook may add.
|
|
205
|
+
// Stream this language's pre-built ParsedFiles in from the disk store
|
|
206
|
+
// FIRST (huge-repo path). Doing it before reading source lets us skip
|
|
207
|
+
// loading content for files the store already covers — for a provider
|
|
208
|
+
// with no content-consuming hook that source is pure dead weight once
|
|
209
|
+
// extraction is served from the store (~1.5 GB on the kernel's C pass).
|
|
210
|
+
// Merged into `preExtractedByPath`; the per-language release block below
|
|
211
|
+
// evicts these again before the next language, so only one language's
|
|
212
|
+
// ParsedFiles are resident at a time.
|
|
213
|
+
const loadStoreFor = async (paths) => {
|
|
214
|
+
if (!parsedFileStorePath)
|
|
215
|
+
return;
|
|
216
|
+
const fromDisk = await (0, parsedfile_store_js_1.loadParsedFilesForPaths)(parsedFileStorePath, paths);
|
|
217
|
+
for (const [fp, pf] of fromDisk)
|
|
218
|
+
preExtractedByPath.set(fp, pf);
|
|
219
|
+
};
|
|
220
|
+
let scopeFilePaths;
|
|
221
|
+
let contents;
|
|
222
|
+
if (provider.collectScopeContextPaths !== undefined) {
|
|
223
|
+
// Context-expanding providers (e.g. Vue) need every primary file's
|
|
224
|
+
// source up front for the closure hook, so load it all.
|
|
225
|
+
const entryFileContents = await (0, filesystem_walker_js_1.readFileContents)(ctx.repoPath, primaryFilePaths);
|
|
226
|
+
scopeFilePaths = provider.collectScopeContextPaths({
|
|
227
|
+
primaryFilePaths,
|
|
228
|
+
preExtractedByPath,
|
|
229
|
+
entryFileContents,
|
|
230
|
+
allScannedPaths,
|
|
231
|
+
resolutionConfig,
|
|
232
|
+
});
|
|
233
|
+
// Read only the extra context files (TS/JS etc.) not already loaded.
|
|
234
|
+
const extraPaths = [...scopeFilePaths].filter((p) => !entryFileContents.has(p));
|
|
235
|
+
const extraContents = await (0, filesystem_walker_js_1.readFileContents)(ctx.repoPath, extraPaths);
|
|
236
|
+
contents = new Map([...entryFileContents, ...extraContents]);
|
|
237
|
+
await loadStoreFor(scopeFilePaths);
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
scopeFilePaths = new Set(primaryFilePaths);
|
|
241
|
+
await loadStoreFor(scopeFilePaths);
|
|
242
|
+
const pathsToRead = selectScopeSourcePathsToRead(provider, primaryFilePaths, preExtractedByPath);
|
|
243
|
+
contents = await (0, filesystem_walker_js_1.readFileContents)(ctx.repoPath, pathsToRead);
|
|
244
|
+
}
|
|
245
|
+
const filePaths = [...scopeFilePaths];
|
|
246
|
+
const files = [];
|
|
247
|
+
for (const fp of filePaths) {
|
|
248
|
+
const content = contents.get(fp);
|
|
249
|
+
if (content !== undefined) {
|
|
250
|
+
files.push({ path: fp, content });
|
|
251
|
+
}
|
|
252
|
+
else if (preExtractedByPath.has(fp)) {
|
|
253
|
+
// Store covers extraction for this file and we deliberately skipped
|
|
254
|
+
// reading its source; extraction uses the pre-extracted ParsedFile,
|
|
255
|
+
// and the provider's source-text policy guarantees its hooks can
|
|
256
|
+
// tolerate empty content for cached files.
|
|
257
|
+
files.push({ path: fp, content: '' });
|
|
258
|
+
}
|
|
259
|
+
// else: uncovered AND unreadable → skip (unchanged from prior behavior).
|
|
260
|
+
}
|
|
261
|
+
const langFileCount = files.length;
|
|
262
|
+
(0, heap_probe_js_1.logHeapProbe)('scope-lang-start', `lang=${lang} files=${langFileCount} contentsLoaded=${contents.size}`);
|
|
263
|
+
const langLabel = lang.charAt(0).toUpperCase() + lang.slice(1);
|
|
264
|
+
currentLangIdx++;
|
|
265
|
+
const langTag = totalScopeLangs > 1 ? `${langLabel} [${currentLangIdx}/${totalScopeLangs}]` : langLabel;
|
|
266
|
+
if (totalScopeFiles > 0) {
|
|
267
|
+
const pct = SCOPE_PCT_START + Math.round((processedScopeFiles / totalScopeFiles) * SCOPE_PCT_RANGE);
|
|
268
|
+
ctx.onProgress({
|
|
269
|
+
phase: 'scopeResolution',
|
|
270
|
+
percent: pct,
|
|
271
|
+
message: 'Resolving types',
|
|
272
|
+
detail: `${langTag}, ${langFileCount.toLocaleString()} files`,
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
const stats = (0, run_js_1.runScopeResolution)({
|
|
276
|
+
graph: ctx.graph,
|
|
277
|
+
model,
|
|
278
|
+
files,
|
|
279
|
+
resolutionConfig,
|
|
280
|
+
prebuiltNodeLookup: sharedNodeLookup,
|
|
281
|
+
preExtractedParsedFiles: preExtractedByPath,
|
|
282
|
+
scopeIndexStorePath: parsedFileStorePath,
|
|
283
|
+
recordResolutionOutcome: (outcome) => {
|
|
284
|
+
resolutionOutcomes.push(outcome);
|
|
285
|
+
},
|
|
286
|
+
onWarn: (msg) => {
|
|
287
|
+
if ((0, env_js_1.isSemanticModelValidatorEnabled)()) {
|
|
288
|
+
logger_js_1.logger.warn(`[scope-resolution:${lang}] ${msg}`);
|
|
289
|
+
}
|
|
290
|
+
},
|
|
291
|
+
onProgress: totalScopeFiles > 0
|
|
292
|
+
? (subPhase, current, total) => {
|
|
293
|
+
let langRatio;
|
|
294
|
+
switch (subPhase) {
|
|
295
|
+
case 'extracting':
|
|
296
|
+
langRatio = total > 0 ? (current / total) * 0.5 : 0;
|
|
297
|
+
break;
|
|
298
|
+
case 'analyzing types':
|
|
299
|
+
langRatio = 0.5;
|
|
300
|
+
break;
|
|
301
|
+
case 'resolving references':
|
|
302
|
+
langRatio = 0.7;
|
|
303
|
+
break;
|
|
304
|
+
case 'linking symbols':
|
|
305
|
+
langRatio = 0.85;
|
|
306
|
+
break;
|
|
307
|
+
default: {
|
|
308
|
+
const _exhaustive = subPhase;
|
|
309
|
+
langRatio = 0.85;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
const overallRatio = Math.min(1, (processedScopeFiles + langRatio * langFileCount) / totalScopeFiles);
|
|
313
|
+
const pct = SCOPE_PCT_START + Math.round(overallRatio * SCOPE_PCT_RANGE);
|
|
314
|
+
ctx.onProgress({
|
|
315
|
+
phase: 'scopeResolution',
|
|
316
|
+
percent: pct,
|
|
317
|
+
message: 'Resolving types',
|
|
318
|
+
detail: subPhase === 'extracting'
|
|
319
|
+
? `${langTag} — extracting ${current.toLocaleString()}/${total.toLocaleString()} files`
|
|
320
|
+
: `${langTag} — ${subPhase}`,
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
: undefined,
|
|
324
|
+
}, provider);
|
|
325
|
+
// Release file contents and pre-extracted entries after each language
|
|
326
|
+
// to reduce memory pressure. For large codebases (16K+ PHP files),
|
|
327
|
+
// holding all source code simultaneously with scope trees causes OOM.
|
|
328
|
+
// See: https://github.com/abhigyanpatwari/GitNexus/issues/1741
|
|
329
|
+
//
|
|
330
|
+
// Use `filePaths` (not `primaryFilePaths`) so that any context files
|
|
331
|
+
// added by `collectScopeContextPaths` (e.g. TS/JS files pulled in for
|
|
332
|
+
// Vue cross-file resolution) are also evicted and not held until GC.
|
|
333
|
+
files.length = 0;
|
|
334
|
+
contents.clear();
|
|
335
|
+
for (const fp of filePaths) {
|
|
336
|
+
preExtractedByPath.delete(fp);
|
|
337
|
+
}
|
|
338
|
+
// This language's ParsedFiles are now unreachable (runScopeResolution has
|
|
339
|
+
// returned and the Map entries are deleted). Force a GC HERE so a heavy
|
|
340
|
+
// language's ~17-20GB set (e.g. C/C++ on the Linux kernel) is reclaimed
|
|
341
|
+
// BEFORE the next language's store-load — instead of leaving V8 to collect
|
|
342
|
+
// it lazily under the next pass's allocation pressure (which, at a cap >=
|
|
343
|
+
// RAM, degrades into swap-thrash). Collects only dead objects: the live
|
|
344
|
+
// cross-file index of the next pass is untouched. The pre/post probe
|
|
345
|
+
// confirms whether old-space fragmentation defeats the reclaim.
|
|
346
|
+
(0, heap_probe_js_1.logHeapProbe)('lang-release-pre-gc', `lang=${lang}`);
|
|
347
|
+
(0, parsedfile_store_js_1.forceGc)();
|
|
348
|
+
(0, heap_probe_js_1.logHeapProbe)('lang-release-post-gc', `lang=${lang}`);
|
|
349
|
+
(0, heap_probe_js_1.logHeapProbe)('scope-lang-end', `lang=${lang} filesProcessed=${stats.filesProcessed}`);
|
|
350
|
+
processedScopeFiles += langFileCount;
|
|
351
|
+
anyRan = true;
|
|
352
|
+
totalFiles += stats.filesProcessed;
|
|
353
|
+
totalImports += stats.importsEmitted;
|
|
354
|
+
totalRefs += stats.referenceEdgesEmitted;
|
|
355
|
+
perLanguage.set(lang, {
|
|
356
|
+
filesProcessed: stats.filesProcessed,
|
|
357
|
+
importsEmitted: stats.importsEmitted,
|
|
358
|
+
referenceEdgesEmitted: stats.referenceEdgesEmitted,
|
|
359
|
+
});
|
|
360
|
+
if (env_js_1.isDev) {
|
|
361
|
+
logger_js_1.logger.info(`[scope-resolution:${lang}] ${stats.filesProcessed} files → ${stats.importsEmitted} IMPORTS + ${stats.referenceEdgesEmitted} reference edges (${stats.resolve.unresolved} unresolved sites, ${stats.referenceSkipped} skipped)`);
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
if (totalScopeFiles > 0 && anyRan) {
|
|
365
|
+
ctx.onProgress({
|
|
366
|
+
phase: 'scopeResolution',
|
|
367
|
+
percent: SCOPE_PCT_START + SCOPE_PCT_RANGE,
|
|
368
|
+
message: 'Resolving types',
|
|
369
|
+
detail: 'complete',
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
// Scope-resolution is the sole consumer of the disk-backed ParsedFile
|
|
373
|
+
// store; remove its shards now (can be many GB on a huge repo) so they
|
|
374
|
+
// don't linger in `.cgraphx/code`. Best-effort — never fail the phase on a
|
|
375
|
+
// cleanup error.
|
|
376
|
+
if (parsedFileStorePath) {
|
|
377
|
+
try {
|
|
378
|
+
await (0, parsedfile_store_js_1.clearParsedFileStore)(parsedFileStorePath);
|
|
379
|
+
}
|
|
380
|
+
catch {
|
|
381
|
+
/* best-effort cleanup */
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
if (!anyRan)
|
|
385
|
+
return NOOP_OUTPUT;
|
|
386
|
+
return {
|
|
387
|
+
ran: true,
|
|
388
|
+
filesProcessed: totalFiles,
|
|
389
|
+
importsEmitted: totalImports,
|
|
390
|
+
referenceEdgesEmitted: totalRefs,
|
|
391
|
+
resolutionOutcomes,
|
|
392
|
+
perLanguage,
|
|
393
|
+
};
|
|
394
|
+
},
|
|
395
|
+
};
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Reconcile scope-resolution's ownership view into the SemanticModel.
|
|
4
|
+
*
|
|
5
|
+
* For migrated languages (Python in particular) the legacy `parse` phase
|
|
6
|
+
* emits class-body callables without `ownerId` because
|
|
7
|
+
* `parsing-processor`'s `resolveEnclosingOwner` is language-dependent and
|
|
8
|
+
* not every extractor carries the enclosing-class info at parse time.
|
|
9
|
+
* Scope-resolution later calls `provider.populateOwners(parsed)`, which
|
|
10
|
+
* stamps the correct `ownerId` onto `parsed.localDefs[i]`. This pass
|
|
11
|
+
* mirrors those corrections into `model.methods` and `model.fields` so
|
|
12
|
+
* downstream passes can consult `SemanticModel` as the single
|
|
13
|
+
* authoritative owner-keyed index — no parallel scope-resolution
|
|
14
|
+
* registry is needed.
|
|
15
|
+
*
|
|
16
|
+
* ## Single-source-of-truth invariant (I9)
|
|
17
|
+
*
|
|
18
|
+
* After this pass runs, every `def in parsed.localDefs` with a non-
|
|
19
|
+
* undefined `ownerId` is reachable via either:
|
|
20
|
+
* - `model.methods.lookupAllByOwner(ownerId, simpleName)` — if the
|
|
21
|
+
* def is a Method / Function / Constructor, OR
|
|
22
|
+
* - `model.fields.lookupAllByOwner(ownerId, simpleName)` — if the
|
|
23
|
+
* def is a Property / Variable / Const / Static.
|
|
24
|
+
*
|
|
25
|
+
* This invariant is the foundation of Contract Invariant I9
|
|
26
|
+
* (`contract/scope-resolver.ts`): scope-resolution passes MUST read
|
|
27
|
+
* symbol-keyed lookups exclusively from `SemanticModel`.
|
|
28
|
+
*
|
|
29
|
+
* ## Idempotency
|
|
30
|
+
*
|
|
31
|
+
* The pass skips registration when `(ownerId, simpleName)` already
|
|
32
|
+
* contains a def with matching `nodeId`. Safe to call multiple times
|
|
33
|
+
* or after a language whose legacy extractor does populate `ownerId`
|
|
34
|
+
* (C#) — no duplicates are introduced.
|
|
35
|
+
*
|
|
36
|
+
* ## Transitional shim
|
|
37
|
+
*
|
|
38
|
+
* This reconciliation pass is an explicit shim. The architectural end
|
|
39
|
+
* state is for the legacy extractor to emit the correct `ownerId` for
|
|
40
|
+
* every language at parse time, removing the need for a second pass.
|
|
41
|
+
* See ARCHITECTURE.md § "Semantic-model source of truth" for the
|
|
42
|
+
* follow-up plan.
|
|
43
|
+
*/
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
exports.reconcileOwnership = reconcileOwnership;
|
|
46
|
+
exports.validateOwnershipParity = validateOwnershipParity;
|
|
47
|
+
const ids_js_1 = require("../graph-bridge/ids.js");
|
|
48
|
+
const NESTED_TYPE_KINDS = new Set([
|
|
49
|
+
'Class',
|
|
50
|
+
'Interface',
|
|
51
|
+
'Enum',
|
|
52
|
+
'Struct',
|
|
53
|
+
'Union',
|
|
54
|
+
'Trait',
|
|
55
|
+
'TypeAlias',
|
|
56
|
+
'Typedef',
|
|
57
|
+
'Record',
|
|
58
|
+
'Delegate',
|
|
59
|
+
'Annotation',
|
|
60
|
+
'Template',
|
|
61
|
+
'Namespace',
|
|
62
|
+
]);
|
|
63
|
+
function reconcileOwnership(parsedFiles, model) {
|
|
64
|
+
let methodsRegistered = 0;
|
|
65
|
+
let fieldsRegistered = 0;
|
|
66
|
+
let nestedTypesRegistered = 0;
|
|
67
|
+
let skippedAlreadyPresent = 0;
|
|
68
|
+
for (const parsed of parsedFiles) {
|
|
69
|
+
for (const def of parsed.localDefs) {
|
|
70
|
+
const ownerId = def.ownerId;
|
|
71
|
+
const simple = (0, ids_js_1.simpleQualifiedName)(def);
|
|
72
|
+
if (simple === undefined)
|
|
73
|
+
continue;
|
|
74
|
+
if (def.type === 'Method' || def.type === 'Function' || def.type === 'Constructor') {
|
|
75
|
+
if (ownerId === undefined) {
|
|
76
|
+
if (def.isDeleted !== true)
|
|
77
|
+
continue;
|
|
78
|
+
const existingDef = model.symbols
|
|
79
|
+
.lookupExactAll(def.filePath, simple)
|
|
80
|
+
.find((candidate) => callableSignatureMatches(candidate, def));
|
|
81
|
+
if (existingDef !== undefined) {
|
|
82
|
+
existingDef.isDeleted = true;
|
|
83
|
+
skippedAlreadyPresent++;
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
model.symbols.add(def.filePath, simple, def.nodeId, def.type, {
|
|
87
|
+
parameterCount: def.parameterCount,
|
|
88
|
+
requiredParameterCount: def.requiredParameterCount,
|
|
89
|
+
parameterTypes: def.parameterTypes,
|
|
90
|
+
parameterTypeClasses: def.parameterTypeClasses,
|
|
91
|
+
returnType: def.returnType,
|
|
92
|
+
qualifiedName: def.qualifiedName,
|
|
93
|
+
isDeleted: true,
|
|
94
|
+
});
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
const existing = model.methods.lookupAllByOwner(ownerId, simple);
|
|
98
|
+
const existingDef = existing.find((candidate) => candidate.nodeId === def.nodeId ||
|
|
99
|
+
(def.isDeleted === true && callableSignatureMatches(candidate, def)));
|
|
100
|
+
if (existingDef !== undefined) {
|
|
101
|
+
if (def.isDeleted === true) {
|
|
102
|
+
existingDef.isDeleted = true;
|
|
103
|
+
}
|
|
104
|
+
skippedAlreadyPresent++;
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
model.methods.register(ownerId, simple, def);
|
|
108
|
+
methodsRegistered++;
|
|
109
|
+
}
|
|
110
|
+
else if (def.type === 'Property' ||
|
|
111
|
+
def.type === 'Variable' ||
|
|
112
|
+
def.type === 'Const' ||
|
|
113
|
+
def.type === 'Static') {
|
|
114
|
+
const existing = model.fields.lookupAllByOwner(ownerId, simple);
|
|
115
|
+
if (existing.some((e) => e.nodeId === def.nodeId)) {
|
|
116
|
+
skippedAlreadyPresent++;
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
model.fields.register(ownerId, simple, def);
|
|
120
|
+
fieldsRegistered++;
|
|
121
|
+
}
|
|
122
|
+
else if (NESTED_TYPE_KINDS.has(def.type)) {
|
|
123
|
+
const existing = model.types.lookupAllByOwner(ownerId, simple);
|
|
124
|
+
if (existing.some((e) => e.nodeId === def.nodeId)) {
|
|
125
|
+
skippedAlreadyPresent++;
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
model.types.registerByOwner(ownerId, simple, def);
|
|
129
|
+
nestedTypesRegistered++;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return { methodsRegistered, fieldsRegistered, nestedTypesRegistered, skippedAlreadyPresent };
|
|
134
|
+
}
|
|
135
|
+
function callableSignatureMatches(left, right) {
|
|
136
|
+
if (left.filePath !== right.filePath)
|
|
137
|
+
return false;
|
|
138
|
+
if (left.parameterCount !== right.parameterCount)
|
|
139
|
+
return false;
|
|
140
|
+
if (left.requiredParameterCount !== right.requiredParameterCount)
|
|
141
|
+
return false;
|
|
142
|
+
const leftTypes = left.parameterTypes;
|
|
143
|
+
const rightTypes = right.parameterTypes;
|
|
144
|
+
if (leftTypes === undefined || rightTypes === undefined) {
|
|
145
|
+
return leftTypes === rightTypes;
|
|
146
|
+
}
|
|
147
|
+
return (leftTypes.length === rightTypes.length &&
|
|
148
|
+
leftTypes.every((parameterType, index) => parameterType === rightTypes[index]));
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Debug-mode parity validator. Runs only when
|
|
152
|
+
* `VALIDATE_SEMANTIC_MODEL !== '0'` AND `NODE_ENV !== 'production'`.
|
|
153
|
+
*
|
|
154
|
+
* Iterates every def in `parsedFiles[i].localDefs` with an `ownerId`
|
|
155
|
+
* and asserts it is reachable via `model.methods.lookupAllByOwner` or
|
|
156
|
+
* `model.fields.lookupFieldByOwner`. On mismatch: emits a warning via
|
|
157
|
+
* `onWarn` — never throws, mirroring the pipeline's soft-fail posture.
|
|
158
|
+
*
|
|
159
|
+
* This is the enforcement of Contract Invariant I9 at runtime. In
|
|
160
|
+
* production it is a no-op; in development it surfaces drift between
|
|
161
|
+
* `parsed.localDefs` and `SemanticModel` that would otherwise silently
|
|
162
|
+
* produce wrong edges.
|
|
163
|
+
*/
|
|
164
|
+
function validateOwnershipParity(parsedFiles, model, onWarn) {
|
|
165
|
+
if (process.env.NODE_ENV === 'production')
|
|
166
|
+
return 0;
|
|
167
|
+
if (process.env.VALIDATE_SEMANTIC_MODEL === '0')
|
|
168
|
+
return 0;
|
|
169
|
+
let mismatches = 0;
|
|
170
|
+
for (const parsed of parsedFiles) {
|
|
171
|
+
for (const def of parsed.localDefs) {
|
|
172
|
+
const ownerId = def.ownerId;
|
|
173
|
+
if (ownerId === undefined)
|
|
174
|
+
continue;
|
|
175
|
+
const simple = (0, ids_js_1.simpleQualifiedName)(def);
|
|
176
|
+
if (simple === undefined)
|
|
177
|
+
continue;
|
|
178
|
+
if (def.type === 'Method' || def.type === 'Function' || def.type === 'Constructor') {
|
|
179
|
+
const found = model.methods.lookupAllByOwner(ownerId, simple);
|
|
180
|
+
if (!found.some((d) => d.nodeId === def.nodeId)) {
|
|
181
|
+
onWarn(`semantic-model parity: ${def.type} ${def.nodeId} (${parsed.filePath}) ` +
|
|
182
|
+
`owned by ${ownerId} as "${simple}" not in MethodRegistry`);
|
|
183
|
+
mismatches++;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
else if (def.type === 'Property' ||
|
|
187
|
+
def.type === 'Variable' ||
|
|
188
|
+
def.type === 'Const' ||
|
|
189
|
+
def.type === 'Static') {
|
|
190
|
+
const found = model.fields.lookupAllByOwner(ownerId, simple);
|
|
191
|
+
if (!found.some((d) => d.nodeId === def.nodeId)) {
|
|
192
|
+
onWarn(`semantic-model parity: ${def.type} ${def.nodeId} (${parsed.filePath}) ` +
|
|
193
|
+
`owned by ${ownerId} as "${simple}" not in FieldRegistry`);
|
|
194
|
+
mismatches++;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
else if (NESTED_TYPE_KINDS.has(def.type)) {
|
|
198
|
+
const found = model.types.lookupAllByOwner(ownerId, simple);
|
|
199
|
+
if (!found.some((d) => d.nodeId === def.nodeId)) {
|
|
200
|
+
onWarn(`semantic-model parity: ${def.type} ${def.nodeId} (${parsed.filePath}) ` +
|
|
201
|
+
`owned by ${ownerId} as "${simple}" not in TypeRegistry owner index`);
|
|
202
|
+
mismatches++;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return mismatches;
|
|
208
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Per-language `ScopeResolver` registry — the lookup the generic
|
|
4
|
+
* `scopeResolutionPhase` uses to pick the right resolver for each
|
|
5
|
+
* migrated language.
|
|
6
|
+
*
|
|
7
|
+
* Adding a language is two lines: implement a `ScopeResolver` in
|
|
8
|
+
* `languages/<lang>/scope-resolver.ts` and register it here. The
|
|
9
|
+
* phase picks it up automatically — no workflow changes, no
|
|
10
|
+
* per-language pipeline phase file.
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.SCOPE_RESOLVERS = void 0;
|
|
14
|
+
const index_js_1 = require("../../../../../shared/index.js");
|
|
15
|
+
const scope_resolver_js_1 = require("../../languages/python/scope-resolver.js");
|
|
16
|
+
const scope_resolver_js_2 = require("../../languages/csharp/scope-resolver.js");
|
|
17
|
+
const scope_resolver_js_3 = require("../../languages/typescript/scope-resolver.js");
|
|
18
|
+
const scope_resolver_js_4 = require("../../languages/go/scope-resolver.js");
|
|
19
|
+
const scope_resolver_js_5 = require("../../languages/java/scope-resolver.js");
|
|
20
|
+
const scope_resolver_js_6 = require("../../languages/c/scope-resolver.js");
|
|
21
|
+
const scope_resolver_js_7 = require("../../languages/cpp/scope-resolver.js");
|
|
22
|
+
const scope_resolver_js_8 = require("../../languages/php/scope-resolver.js");
|
|
23
|
+
const scope_resolver_js_9 = require("../../languages/rust/scope-resolver.js");
|
|
24
|
+
const scope_resolver_js_10 = require("../../languages/javascript/scope-resolver.js");
|
|
25
|
+
const scope_resolver_js_11 = require("../../languages/kotlin/scope-resolver.js");
|
|
26
|
+
const scope_resolver_js_12 = require("../../languages/ruby/scope-resolver.js");
|
|
27
|
+
const scope_resolver_js_13 = require("../../languages/swift/scope-resolver.js");
|
|
28
|
+
const scope_resolver_js_14 = require("../../languages/dart/scope-resolver.js");
|
|
29
|
+
const scope_resolver_js_15 = require("../../languages/vue/scope-resolver.js");
|
|
30
|
+
/** Map of `SupportedLanguages` → `ScopeResolver`. The scope-resolution phase
|
|
31
|
+
* iterates this map directly — every registered resolver runs. This is the
|
|
32
|
+
* single source of truth for which languages resolve via scope-resolution. */
|
|
33
|
+
exports.SCOPE_RESOLVERS = new Map([
|
|
34
|
+
[index_js_1.SupportedLanguages.Python, scope_resolver_js_1.pythonScopeResolver],
|
|
35
|
+
[index_js_1.SupportedLanguages.CSharp, scope_resolver_js_2.csharpScopeResolver],
|
|
36
|
+
[index_js_1.SupportedLanguages.TypeScript, scope_resolver_js_3.typescriptScopeResolver],
|
|
37
|
+
[index_js_1.SupportedLanguages.Go, scope_resolver_js_4.goScopeResolver],
|
|
38
|
+
[index_js_1.SupportedLanguages.Java, scope_resolver_js_5.javaScopeResolver],
|
|
39
|
+
[index_js_1.SupportedLanguages.C, scope_resolver_js_6.cScopeResolver],
|
|
40
|
+
[index_js_1.SupportedLanguages.CPlusPlus, scope_resolver_js_7.cppScopeResolver],
|
|
41
|
+
[index_js_1.SupportedLanguages.PHP, scope_resolver_js_8.phpScopeResolver],
|
|
42
|
+
[index_js_1.SupportedLanguages.Rust, scope_resolver_js_9.rustScopeResolver],
|
|
43
|
+
[index_js_1.SupportedLanguages.JavaScript, scope_resolver_js_10.javascriptScopeResolver],
|
|
44
|
+
[index_js_1.SupportedLanguages.Kotlin, scope_resolver_js_11.kotlinScopeResolver],
|
|
45
|
+
[index_js_1.SupportedLanguages.Ruby, scope_resolver_js_12.rubyScopeResolver],
|
|
46
|
+
[index_js_1.SupportedLanguages.Swift, scope_resolver_js_13.swiftScopeResolver],
|
|
47
|
+
[index_js_1.SupportedLanguages.Dart, scope_resolver_js_14.dartScopeResolver],
|
|
48
|
+
[index_js_1.SupportedLanguages.Vue, scope_resolver_js_15.vueScopeResolver],
|
|
49
|
+
]);
|