cgraphx 2.0.2 → 2.0.6
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 +13 -3
- package/dist/.claude-template/agents/task-history.md +186 -0
- package/dist/.claude-template/commands/end.md +1 -0
- package/dist/.claude-template/skills/cgraphx-guide/SKILL.md +5 -3
- package/dist/.claude-template/skills/cgraphx-guide/how-to-use.html +8 -8
- package/dist/.claude-template/skills/cgraphx-guide/how-to-use.md +8 -8
- package/dist/.claude-template/skills/clarify-requirements/SKILL.md +13 -9
- package/dist/.claude-template/skills/db-query/SKILL.md +19 -2
- package/dist/.claude-template/skills/iboc-check/SKILL.md +51 -23
- package/dist/.claude-template/skills/iboc-check/filler-prompt.md +3 -4
- package/dist/.claude-template/skills/run-api-test/SKILL.md +15 -15
- package/dist/.claude-template/skills/run-api-test/assets/{template-test-report.md → template-/346/216/245/345/217/243/346/265/213/350/257/225/346/212/245/345/221/212.md} +4 -4
- package/dist/.claude-template/skills/run-api-test/references/bru-run.md +1 -1
- package/dist/.claude-template/skills/run-api-test/references/db-verification.md +2 -2
- package/dist/.claude-template/skills/run-api-test/references/report-format.md +6 -6
- package/dist/.claude-template/skills/run-api-test/references/service-readiness.md +1 -1
- package/dist/.claude-template/skills/run-api-test/references/test-scope.md +6 -6
- package/dist/.claude-template/skills/run-ui-test/SKILL.md +186 -0
- package/dist/.claude-template/skills/run-ui-test/references/report-format.md +77 -0
- package/dist/.claude-template/skills/subagent-implement/SKILL.md +3 -2
- package/dist/.claude-template/skills/write-api/SKILL.md +18 -18
- package/dist/.claude-template/skills/write-api/assets/{template-api-spec.md → template-/346/216/245/345/217/243/346/265/213/350/257/225-spec.md} +1 -1
- package/dist/.claude-template/skills/write-api/references/{api-spec-format.md → /346/216/245/345/217/243/346/265/213/350/257/225-spec-format.md} +3 -3
- package/dist/.claude-template/skills/write-plan/SKILL.md +4 -2
- package/dist/.claude-template/skills/write-ui-test/SKILL.md +125 -0
- package/dist/.claude-template/skills/write-ui-test/references//347/224/250/344/276/213/350/247/204/346/240/274-format.md +94 -0
- 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/dbquery/cli.d.ts.map +1 -1
- package/dist/core/dbquery/cli.js +5 -4
- package/dist/core/dbquery/cli.js.map +1 -1
- package/dist/core/dbquery/config.d.ts.map +1 -1
- package/dist/core/dbquery/config.js +39 -3
- package/dist/core/dbquery/config.js.map +1 -1
- package/dist/core/dbquery/drivers/http.d.ts +23 -0
- package/dist/core/dbquery/drivers/http.d.ts.map +1 -0
- package/dist/core/dbquery/drivers/http.js +125 -0
- package/dist/core/dbquery/drivers/http.js.map +1 -0
- package/dist/core/dbquery/drivers/mysql.js +1 -1
- package/dist/core/dbquery/drivers/mysql.js.map +1 -1
- package/dist/core/dbquery/drivers/postgres.js +1 -1
- package/dist/core/dbquery/drivers/postgres.js.map +1 -1
- package/dist/core/dbquery/executor.d.ts.map +1 -1
- package/dist/core/dbquery/executor.js +46 -12
- package/dist/core/dbquery/executor.js.map +1 -1
- package/dist/core/dbquery/format.d.ts.map +1 -1
- package/dist/core/dbquery/format.js +2 -1
- package/dist/core/dbquery/format.js.map +1 -1
- package/dist/core/dbquery/init.d.ts.map +1 -1
- package/dist/core/dbquery/init.js +7 -0
- package/dist/core/dbquery/init.js.map +1 -1
- package/dist/core/dbquery/types.d.ts +55 -7
- package/dist/core/dbquery/types.d.ts.map +1 -1
- package/dist/core/directory.d.ts +17 -0
- package/dist/core/directory.d.ts.map +1 -1
- package/dist/core/directory.js +37 -0
- package/dist/core/directory.js.map +1 -1
- package/dist/core/features/cli.d.ts.map +1 -1
- package/dist/core/features/cli.js +3 -2
- package/dist/core/features/cli.js.map +1 -1
- package/dist/core/features/scanner.d.ts +1 -1
- package/dist/core/features/scanner.d.ts.map +1 -1
- package/dist/core/features/scanner.js +20 -4
- package/dist/core/features/scanner.js.map +1 -1
- package/dist/core/markdown/cli.d.ts.map +1 -1
- package/dist/core/markdown/cli.js +9 -8
- package/dist/core/markdown/cli.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/dist/web/register.d.ts.map +1 -1
- package/dist/web/register.js +2 -1
- package/dist/web/register.js.map +1 -1
- package/package.json +1 -1
- package/dist/.claude-template/.cgraphx/timeline-current-turn.json +0 -1
- package/dist/.claude-template/skills/.cgraphx/timeline-current-turn.json +0 -1
- package/dist/.claude-template/skills/handdrawn-deck/.cgraphx/timeline-current-turn.json +0 -1
- package/dist/.claude-template/skills/handdrawn-deck/references/.cgraphx/timeline-current-turn.json +0 -1
- package/dist/.claude-template/skills/handdrawn-sketch-engine/.cgraphx/timeline-current-turn.json +0 -1
- /package/dist/.claude-template/skills/run-api-test/assets/{template-test-verify.jsonl → template-/346/216/245/345/217/243/346/265/213/350/257/225/351/252/214/350/257/201.jsonl"} +0 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Suffix-index helpers for import path resolution.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.EXTENSIONS = void 0;
|
|
7
|
+
exports.tryResolveWithExtensions = tryResolveWithExtensions;
|
|
8
|
+
exports.buildSuffixIndex = buildSuffixIndex;
|
|
9
|
+
exports.suffixResolve = suffixResolve;
|
|
10
|
+
/** All file extensions to try during resolution */
|
|
11
|
+
exports.EXTENSIONS = [
|
|
12
|
+
'',
|
|
13
|
+
// TypeScript/JavaScript
|
|
14
|
+
'.tsx',
|
|
15
|
+
'.ts',
|
|
16
|
+
'.mts',
|
|
17
|
+
'.cts',
|
|
18
|
+
'.jsx',
|
|
19
|
+
'.js',
|
|
20
|
+
'.mjs',
|
|
21
|
+
'.cjs',
|
|
22
|
+
'.vue',
|
|
23
|
+
'/index.tsx',
|
|
24
|
+
'/index.ts',
|
|
25
|
+
'/index.jsx',
|
|
26
|
+
'/index.js',
|
|
27
|
+
// Python
|
|
28
|
+
'.py',
|
|
29
|
+
'/__init__.py',
|
|
30
|
+
// Java
|
|
31
|
+
'.java',
|
|
32
|
+
// Kotlin
|
|
33
|
+
'.kt',
|
|
34
|
+
'.kts',
|
|
35
|
+
// C/C++
|
|
36
|
+
'.c',
|
|
37
|
+
'.h',
|
|
38
|
+
'.cpp',
|
|
39
|
+
'.hpp',
|
|
40
|
+
'.cc',
|
|
41
|
+
'.cxx',
|
|
42
|
+
'.hxx',
|
|
43
|
+
'.hh',
|
|
44
|
+
'.cu',
|
|
45
|
+
'.cuh',
|
|
46
|
+
// C#
|
|
47
|
+
'.cs',
|
|
48
|
+
// Go
|
|
49
|
+
'.go',
|
|
50
|
+
// Rust
|
|
51
|
+
'.rs',
|
|
52
|
+
'/mod.rs',
|
|
53
|
+
// PHP
|
|
54
|
+
'.php',
|
|
55
|
+
'.phtml',
|
|
56
|
+
// Swift
|
|
57
|
+
'.swift',
|
|
58
|
+
// Ruby
|
|
59
|
+
'.rb',
|
|
60
|
+
];
|
|
61
|
+
/**
|
|
62
|
+
* Try to match a path (with extensions) against the known file set.
|
|
63
|
+
* Returns the matched file path or null.
|
|
64
|
+
*/
|
|
65
|
+
function tryResolveWithExtensions(basePath, allFiles) {
|
|
66
|
+
for (const ext of exports.EXTENSIONS) {
|
|
67
|
+
const candidate = basePath + ext;
|
|
68
|
+
if (allFiles.has(candidate))
|
|
69
|
+
return candidate;
|
|
70
|
+
}
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
function buildSuffixIndex(normalizedFileList, allFileList) {
|
|
74
|
+
// Map: normalized suffix -> original file path
|
|
75
|
+
const exactMap = new Map();
|
|
76
|
+
// Map: lowercase suffix -> original file path
|
|
77
|
+
const lowerMap = new Map();
|
|
78
|
+
// Map: directory suffix -> list of file paths in that directory
|
|
79
|
+
const dirMap = new Map();
|
|
80
|
+
for (let i = 0; i < normalizedFileList.length; i++) {
|
|
81
|
+
const normalized = normalizedFileList[i];
|
|
82
|
+
const original = allFileList[i];
|
|
83
|
+
const parts = normalized.split('/');
|
|
84
|
+
// Index all suffixes: "a/b/c.java" -> ["c.java", "b/c.java", "a/b/c.java"]
|
|
85
|
+
for (let j = parts.length - 1; j >= 0; j--) {
|
|
86
|
+
const suffix = parts.slice(j).join('/');
|
|
87
|
+
// Only store first match (longest path wins for ambiguous suffixes)
|
|
88
|
+
if (!exactMap.has(suffix)) {
|
|
89
|
+
exactMap.set(suffix, original);
|
|
90
|
+
}
|
|
91
|
+
const lower = suffix.toLowerCase();
|
|
92
|
+
if (!lowerMap.has(lower)) {
|
|
93
|
+
lowerMap.set(lower, original);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// Index directory membership
|
|
97
|
+
const lastSlash = normalized.lastIndexOf('/');
|
|
98
|
+
if (lastSlash >= 0) {
|
|
99
|
+
// Build all directory suffixes
|
|
100
|
+
const dirParts = parts.slice(0, -1);
|
|
101
|
+
const fileName = parts[parts.length - 1];
|
|
102
|
+
const ext = fileName.substring(fileName.lastIndexOf('.'));
|
|
103
|
+
for (let j = dirParts.length - 1; j >= 0; j--) {
|
|
104
|
+
const dirSuffix = dirParts.slice(j).join('/');
|
|
105
|
+
const key = `${dirSuffix}:${ext}`;
|
|
106
|
+
let list = dirMap.get(key);
|
|
107
|
+
if (!list) {
|
|
108
|
+
list = [];
|
|
109
|
+
dirMap.set(key, list);
|
|
110
|
+
}
|
|
111
|
+
list.push(original);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
get: (suffix) => exactMap.get(suffix),
|
|
117
|
+
getInsensitive: (suffix) => lowerMap.get(suffix.toLowerCase()),
|
|
118
|
+
getFilesInDir: (dirSuffix, extension) => {
|
|
119
|
+
return dirMap.get(`${dirSuffix}:${extension}`) || [];
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Suffix-based resolution using index. O(1) per lookup instead of O(files).
|
|
125
|
+
*/
|
|
126
|
+
function suffixResolve(pathParts, normalizedFileList, allFileList, index) {
|
|
127
|
+
if (index) {
|
|
128
|
+
for (let i = 0; i < pathParts.length; i++) {
|
|
129
|
+
const suffix = pathParts.slice(i).join('/');
|
|
130
|
+
for (const ext of exports.EXTENSIONS) {
|
|
131
|
+
const suffixWithExt = suffix + ext;
|
|
132
|
+
const result = index.get(suffixWithExt) || index.getInsensitive(suffixWithExt);
|
|
133
|
+
if (result)
|
|
134
|
+
return result;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
// Fallback: linear scan (for backward compatibility)
|
|
140
|
+
for (let i = 0; i < pathParts.length; i++) {
|
|
141
|
+
const suffix = pathParts.slice(i).join('/');
|
|
142
|
+
for (const ext of exports.EXTENSIONS) {
|
|
143
|
+
const suffixWithExt = suffix + ext;
|
|
144
|
+
const suffixPattern = '/' + suffixWithExt;
|
|
145
|
+
const matchIdx = normalizedFileList.findIndex((filePath) => filePath.endsWith(suffixPattern) ||
|
|
146
|
+
filePath.toLowerCase().endsWith(suffixPattern.toLowerCase()));
|
|
147
|
+
if (matchIdx !== -1) {
|
|
148
|
+
return allFileList[matchIdx];
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return null;
|
|
153
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Bridge between CLI-package per-language `ImportResolverFn`s and the
|
|
4
|
+
* shared `FinalizeHooks.resolveImportTarget` contract
|
|
5
|
+
* (RFC §5.2; Ring 2 PKG #922).
|
|
6
|
+
*
|
|
7
|
+
* The shared finalize algorithm (#915) asks one question:
|
|
8
|
+
*
|
|
9
|
+
* resolveImportTarget(targetRaw, fromFile, workspaceIndex): string | null
|
|
10
|
+
*
|
|
11
|
+
* The CLI already has 16 language-specific resolvers satisfying a
|
|
12
|
+
* richer signature:
|
|
13
|
+
*
|
|
14
|
+
* ImportResolverFn(rawImportPath, filePath, resolveCtx): ImportResult
|
|
15
|
+
*
|
|
16
|
+
* This module builds a dispatch adapter — one FinalizeHook implementation
|
|
17
|
+
* that looks up the file's language from its path and delegates to the
|
|
18
|
+
* right per-language resolver. Callers package per-language resolvers +
|
|
19
|
+
* a shared `ResolveCtx` into an opaque `ImportTargetWorkspace` and pass
|
|
20
|
+
* it as `workspaceIndex` to `finalizeScopeModel`.
|
|
21
|
+
*
|
|
22
|
+
* ## What's deliberately NOT here
|
|
23
|
+
*
|
|
24
|
+
* - **Re-implementation of any per-language resolver.** We wrap the
|
|
25
|
+
* existing `importResolver` field on each `LanguageProvider` — the
|
|
26
|
+
* same code path the legacy DAG uses today.
|
|
27
|
+
* - **Dynamic-import handling.** The shared finalize algorithm short-
|
|
28
|
+
* circuits `ParsedImport { kind: 'dynamic-unresolved' }` before
|
|
29
|
+
* calling `resolveImportTarget`, so the adapter never sees those.
|
|
30
|
+
* - **`importPathPreprocessor`.** Preprocessing belongs inside the
|
|
31
|
+
* provider's `interpretImport` hook (which writes the final
|
|
32
|
+
* `ParsedImport.targetRaw`). By the time finalize passes a
|
|
33
|
+
* `targetRaw` to this adapter, it is the string the provider wants
|
|
34
|
+
* resolved verbatim.
|
|
35
|
+
*/
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
exports.buildImportTargetWorkspace = buildImportTargetWorkspace;
|
|
38
|
+
exports.resolveImportTargetAcrossLanguages = resolveImportTargetAcrossLanguages;
|
|
39
|
+
const index_js_1 = require("../../../shared/index.js");
|
|
40
|
+
/**
|
|
41
|
+
* Build the workspace index from a map of language → provider. Providers
|
|
42
|
+
* whose `importResolver` is absent are silently skipped (no language will
|
|
43
|
+
* ever hit that branch at dispatch time).
|
|
44
|
+
*
|
|
45
|
+
* The `resolveCtx` is shared across all languages. Callers assemble it
|
|
46
|
+
* once per run (the existing pipeline already does this for the legacy
|
|
47
|
+
* DAG) and hand it to both the legacy resolution path and this factory.
|
|
48
|
+
*/
|
|
49
|
+
function buildImportTargetWorkspace(providers, resolveCtx) {
|
|
50
|
+
const perLanguage = new Map();
|
|
51
|
+
for (const [lang, provider] of providers) {
|
|
52
|
+
if (provider.importResolver === undefined)
|
|
53
|
+
continue;
|
|
54
|
+
perLanguage.set(lang, { resolver: provider.importResolver, ctx: resolveCtx });
|
|
55
|
+
}
|
|
56
|
+
return { perLanguage };
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* The FinalizeHooks-compatible implementation. Dispatches on `fromFile`'s
|
|
60
|
+
* extension → per-language resolver. Returns the first resolved file,
|
|
61
|
+
* or `null` if the resolver returns `null` or doesn't know about the
|
|
62
|
+
* language.
|
|
63
|
+
*
|
|
64
|
+
* Picks the first entry of `files[]` for both `'files'` and `'package'`
|
|
65
|
+
* result kinds — the legacy pipeline uses the whole array, but the
|
|
66
|
+
* shared `finalize()` hook contract is single-file. If the workspace
|
|
67
|
+
* later needs richer semantics (split-target packages), this is the
|
|
68
|
+
* single site to extend.
|
|
69
|
+
*/
|
|
70
|
+
function resolveImportTargetAcrossLanguages(targetRaw, fromFile, workspaceIndex) {
|
|
71
|
+
const workspace = workspaceIndex;
|
|
72
|
+
if (workspace === undefined || workspace.perLanguage === undefined)
|
|
73
|
+
return null;
|
|
74
|
+
const lang = (0, index_js_1.getLanguageFromFilename)(fromFile);
|
|
75
|
+
if (lang === null)
|
|
76
|
+
return null;
|
|
77
|
+
const entry = workspace.perLanguage.get(lang);
|
|
78
|
+
if (entry === undefined)
|
|
79
|
+
return null;
|
|
80
|
+
let result;
|
|
81
|
+
try {
|
|
82
|
+
result = entry.resolver(targetRaw, fromFile, entry.ctx);
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
// Existing resolvers can throw on malformed inputs (e.g., Python
|
|
86
|
+
// relative paths above the workspace root). Swallow — the shared
|
|
87
|
+
// algorithm treats a null here as `linkStatus: 'unresolved'`, which
|
|
88
|
+
// is the right fallback.
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
if (result === null)
|
|
92
|
+
return null;
|
|
93
|
+
// Both `files` and `package` variants expose a `files` array; the
|
|
94
|
+
// package variant also carries `dirSuffix` which we ignore at the
|
|
95
|
+
// FinalizeHook boundary (single-file contract). Legacy consumers
|
|
96
|
+
// continue to see the full result via `importResolver` directly.
|
|
97
|
+
const first = result.files[0];
|
|
98
|
+
return first ?? null;
|
|
99
|
+
}
|
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.csharpScanToEvidence = csharpScanToEvidence;
|
|
7
|
+
exports.loadTsconfigPaths = loadTsconfigPaths;
|
|
8
|
+
exports.loadGoModulePath = loadGoModulePath;
|
|
9
|
+
exports.loadComposerConfig = loadComposerConfig;
|
|
10
|
+
exports.scanCSharpProject = scanCSharpProject;
|
|
11
|
+
exports.loadSwiftPackageConfig = loadSwiftPackageConfig;
|
|
12
|
+
exports.loadImportConfigs = loadImportConfigs;
|
|
13
|
+
const promises_1 = __importDefault(require("fs/promises"));
|
|
14
|
+
const fs_1 = require("fs");
|
|
15
|
+
const readline_1 = require("readline");
|
|
16
|
+
const path_1 = __importDefault(require("path"));
|
|
17
|
+
const env_js_1 = require("./utils/env.js");
|
|
18
|
+
const logger_js_1 = require("../logger.js");
|
|
19
|
+
/** Project the one-pass {@link CSharpProjectScan} into the
|
|
20
|
+
* {@link CSharpNamespaceEvidence} both import-resolution legs thread to the
|
|
21
|
+
* #1881 gate — one shape, two carriers (`ImportConfigs.csharpNamespaces` for
|
|
22
|
+
* the legacy DAG, `CsharpResolutionConfig.namespaces` for the scope resolver).
|
|
23
|
+
* Keeps the field mapping in one place so the two carriers can't drift. */
|
|
24
|
+
function csharpScanToEvidence(scan) {
|
|
25
|
+
return {
|
|
26
|
+
declaredNamespaces: scan.declaredNamespaces,
|
|
27
|
+
rootNamespaces: scan.rootNamespaces,
|
|
28
|
+
truncated: scan.truncated,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
// ============================================================================
|
|
32
|
+
// LANGUAGE-SPECIFIC CONFIG LOADERS
|
|
33
|
+
// ============================================================================
|
|
34
|
+
/**
|
|
35
|
+
* Parse tsconfig.json to extract path aliases.
|
|
36
|
+
* Tries tsconfig.json, tsconfig.app.json, tsconfig.base.json in order.
|
|
37
|
+
*/
|
|
38
|
+
async function loadTsconfigPaths(repoRoot) {
|
|
39
|
+
const candidates = ['tsconfig.json', 'tsconfig.app.json', 'tsconfig.base.json'];
|
|
40
|
+
for (const filename of candidates) {
|
|
41
|
+
try {
|
|
42
|
+
const tsconfigPath = path_1.default.join(repoRoot, filename);
|
|
43
|
+
const raw = await promises_1.default.readFile(tsconfigPath, 'utf-8');
|
|
44
|
+
// Strip JSON comments (// and /* */ style) for robustness
|
|
45
|
+
const stripped = raw.replace(/\/\/.*$/gm, '').replace(/\/\*[\s\S]*?\*\//g, '');
|
|
46
|
+
const tsconfig = JSON.parse(stripped);
|
|
47
|
+
const compilerOptions = tsconfig.compilerOptions;
|
|
48
|
+
if (!compilerOptions?.paths)
|
|
49
|
+
continue;
|
|
50
|
+
const baseUrl = compilerOptions.baseUrl || '.';
|
|
51
|
+
const aliases = new Map();
|
|
52
|
+
for (const [pattern, targets] of Object.entries(compilerOptions.paths)) {
|
|
53
|
+
if (!Array.isArray(targets) || targets.length === 0)
|
|
54
|
+
continue;
|
|
55
|
+
const target = targets[0];
|
|
56
|
+
// Convert glob patterns: "@/*" -> "@/", "src/*" -> "src/"
|
|
57
|
+
const aliasPrefix = pattern.endsWith('/*') ? pattern.slice(0, -1) : pattern;
|
|
58
|
+
const targetPrefix = target.endsWith('/*') ? target.slice(0, -1) : target;
|
|
59
|
+
aliases.set(aliasPrefix, targetPrefix);
|
|
60
|
+
}
|
|
61
|
+
if (aliases.size > 0) {
|
|
62
|
+
if (env_js_1.isDev) {
|
|
63
|
+
logger_js_1.logger.info(`📦 Loaded ${aliases.size} path aliases from ${filename}`);
|
|
64
|
+
}
|
|
65
|
+
return { aliases, baseUrl };
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
// File doesn't exist or isn't valid JSON - try next
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Parse go.mod to extract module path.
|
|
76
|
+
*/
|
|
77
|
+
async function loadGoModulePath(repoRoot) {
|
|
78
|
+
try {
|
|
79
|
+
const goModPath = path_1.default.join(repoRoot, 'go.mod');
|
|
80
|
+
const content = await promises_1.default.readFile(goModPath, 'utf-8');
|
|
81
|
+
const match = content.match(/^module\s+(\S+)/m);
|
|
82
|
+
if (match) {
|
|
83
|
+
if (env_js_1.isDev) {
|
|
84
|
+
logger_js_1.logger.info(`📦 Loaded Go module path: ${match[1]}`);
|
|
85
|
+
}
|
|
86
|
+
return { modulePath: match[1] };
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
// No go.mod
|
|
91
|
+
}
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
/** Parse composer.json to extract PSR-4 autoload mappings (including autoload-dev). */
|
|
95
|
+
async function loadComposerConfig(repoRoot) {
|
|
96
|
+
try {
|
|
97
|
+
const composerPath = path_1.default.join(repoRoot, 'composer.json');
|
|
98
|
+
const raw = await promises_1.default.readFile(composerPath, 'utf-8');
|
|
99
|
+
const composer = JSON.parse(raw);
|
|
100
|
+
const psr4Raw = composer.autoload?.['psr-4'] ?? {};
|
|
101
|
+
const psr4Dev = composer['autoload-dev']?.['psr-4'] ?? {};
|
|
102
|
+
const merged = { ...psr4Raw, ...psr4Dev };
|
|
103
|
+
const psr4 = new Map();
|
|
104
|
+
for (const [ns, dir] of Object.entries(merged)) {
|
|
105
|
+
const nsNorm = ns.replace(/\\+$/, '');
|
|
106
|
+
const dirNorm = dir.replace(/\\/g, '/').replace(/\/+$/, '');
|
|
107
|
+
psr4.set(nsNorm, dirNorm);
|
|
108
|
+
}
|
|
109
|
+
if (env_js_1.isDev) {
|
|
110
|
+
logger_js_1.logger.info(`📦 Loaded ${psr4.size} PSR-4 mappings from composer.json`);
|
|
111
|
+
}
|
|
112
|
+
return { psr4 };
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// BFS bounds shared by the C# project/namespace scan. Sized to comfortably
|
|
119
|
+
// exceed normal C# repos so `truncated` stays the rare exception it was meant
|
|
120
|
+
// to be: a too-low cap trips `truncated=true` on ordinary repos, which makes
|
|
121
|
+
// `csharpSuffixFallbackAllowed` fail OPEN for every import and silently
|
|
122
|
+
// disables the #1881 gate. Truncation remains the safety valve for genuinely
|
|
123
|
+
// pathological trees (deep generated output, huge monorepos).
|
|
124
|
+
const CSHARP_SCAN_MAX_DEPTH = 24;
|
|
125
|
+
const CSHARP_SCAN_MAX_DIRS = 20000;
|
|
126
|
+
// Bound on in-flight file reads per directory so a directory with thousands of
|
|
127
|
+
// `.cs` files can't exhaust file descriptors / spike memory. Mirrors the
|
|
128
|
+
// Phase-1 walker's `READ_CONCURRENCY` (see `filesystem-walker.ts`).
|
|
129
|
+
const CSHARP_SCAN_READ_CONCURRENCY = 32;
|
|
130
|
+
const CSHARP_SCAN_SKIP_DIRS = new Set(['node_modules', '.git', 'bin', 'obj']);
|
|
131
|
+
const CSHARP_ROOT_NAMESPACE_RE = /<RootNamespace>\s*([^<]+)\s*<\/RootNamespace>/;
|
|
132
|
+
// Declared `namespace` names are extracted with the comment/string-aware
|
|
133
|
+
// scanner shared with the scope-resolution namespace-siblings pass
|
|
134
|
+
// (`extractCsharpStructureViaScanner`), not a bare regex: a regex matches
|
|
135
|
+
// `namespace` inside comments and string literals, seeding the #1881 gate
|
|
136
|
+
// with phantom namespaces. Imported lazily (and memoized) so the always-on
|
|
137
|
+
// `loadImportConfigs` path — every repo, every language — doesn't eagerly
|
|
138
|
+
// pull tree-sitter-c-sharp in via `namespace-siblings.ts` → `query.ts`.
|
|
139
|
+
let csharpScannerFactoryPromise;
|
|
140
|
+
function getCsharpStructureScannerFactory() {
|
|
141
|
+
if (csharpScannerFactoryPromise === undefined) {
|
|
142
|
+
csharpScannerFactoryPromise = import('./languages/csharp/namespace-siblings.js').then((mod) => mod.createCsharpStructureScanner);
|
|
143
|
+
}
|
|
144
|
+
return csharpScannerFactoryPromise;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Single BFS over a repo that collects BOTH .csproj configs and the set of
|
|
148
|
+
* `namespace` declarations from `.cs` files.
|
|
149
|
+
*
|
|
150
|
+
* The csproj walk is cheap (a handful of project files); the namespace scan
|
|
151
|
+
* is NOT — it opens and reads every `.cs` file in the repo to collect its
|
|
152
|
+
* `namespace` declarations. That `.cs` read cost is the price of the #1881
|
|
153
|
+
* gate, not a saving: collapsing the csproj and namespace walks into one BFS
|
|
154
|
+
* avoids a second directory traversal, but the per-file `.cs` reads are new
|
|
155
|
+
* work this scan introduces. Reads within a directory are issued in bounded
|
|
156
|
+
* windows (see below); directories are still visited breadth-first.
|
|
157
|
+
*/
|
|
158
|
+
async function scanCSharpProject(repoRoot) {
|
|
159
|
+
const configs = [];
|
|
160
|
+
const declaredNamespaces = new Set();
|
|
161
|
+
const rootNamespaces = new Set();
|
|
162
|
+
const scanQueue = [{ dir: repoRoot, depth: 0 }];
|
|
163
|
+
let dirsScanned = 0;
|
|
164
|
+
let truncated = false;
|
|
165
|
+
while (scanQueue.length > 0) {
|
|
166
|
+
if (dirsScanned >= CSHARP_SCAN_MAX_DIRS) {
|
|
167
|
+
truncated = true;
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
const { dir, depth } = scanQueue.shift();
|
|
171
|
+
dirsScanned++;
|
|
172
|
+
let entries;
|
|
173
|
+
try {
|
|
174
|
+
entries = await promises_1.default.readdir(dir, { withFileTypes: true });
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
// Unreadable directory → its `.cs` namespaces are missed, so the scan is
|
|
178
|
+
// incomplete. Mark truncated so the #1881 gate fails OPEN (allows the
|
|
179
|
+
// suffix fallback) rather than wrongly blocking an import whose declaring
|
|
180
|
+
// namespace lived in the unread subtree (#5).
|
|
181
|
+
truncated = true;
|
|
182
|
+
continue;
|
|
183
|
+
}
|
|
184
|
+
// Collect read targets, then issue them in bounded windows (rather than all
|
|
185
|
+
// at once) so a directory with thousands of `.cs` files can't exhaust file
|
|
186
|
+
// descriptors / spike memory. csproj reads keep entry order (config
|
|
187
|
+
// precedence matters); `.cs` namespace results land in shared Sets where
|
|
188
|
+
// order is irrelevant.
|
|
189
|
+
const csprojNames = [];
|
|
190
|
+
const csNames = [];
|
|
191
|
+
for (const entry of entries) {
|
|
192
|
+
if (entry.isDirectory()) {
|
|
193
|
+
if (CSHARP_SCAN_SKIP_DIRS.has(entry.name))
|
|
194
|
+
continue;
|
|
195
|
+
if (depth < CSHARP_SCAN_MAX_DEPTH) {
|
|
196
|
+
scanQueue.push({ dir: path_1.default.join(dir, entry.name), depth: depth + 1 });
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
truncated = true; // a real subtree was pruned at the depth cap
|
|
200
|
+
}
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
if (!entry.isFile())
|
|
204
|
+
continue;
|
|
205
|
+
if (entry.name.endsWith('.csproj')) {
|
|
206
|
+
csprojNames.push(entry.name);
|
|
207
|
+
}
|
|
208
|
+
else if (entry.name.endsWith('.cs')) {
|
|
209
|
+
csNames.push(entry.name);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
for (let i = 0; i < csprojNames.length; i += CSHARP_SCAN_READ_CONCURRENCY) {
|
|
213
|
+
const batch = csprojNames.slice(i, i + CSHARP_SCAN_READ_CONCURRENCY);
|
|
214
|
+
const settled = await Promise.allSettled(batch.map((name) => readCsprojConfig(path_1.default.join(dir, name), name, repoRoot, dir)));
|
|
215
|
+
for (const r of settled) {
|
|
216
|
+
const config = r.status === 'fulfilled' ? r.value : null;
|
|
217
|
+
if (config) {
|
|
218
|
+
configs.push(config);
|
|
219
|
+
rootNamespaces.add(config.rootNamespace);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
for (let i = 0; i < csNames.length; i += CSHARP_SCAN_READ_CONCURRENCY) {
|
|
224
|
+
const batch = csNames.slice(i, i + CSHARP_SCAN_READ_CONCURRENCY);
|
|
225
|
+
const settled = await Promise.allSettled(batch.map((name) => collectDeclaredNamespaces(path_1.default.join(dir, name), declaredNamespaces, rootNamespaces)));
|
|
226
|
+
// A `.cs` that was unreadable (or whose read/scan unexpectedly rejected)
|
|
227
|
+
// leaves its namespaces uncollected → mark truncated to fail the #1881
|
|
228
|
+
// gate OPEN rather than wrongly suppress an import. The scan streams each
|
|
229
|
+
// file, so file size no longer trips truncation.
|
|
230
|
+
for (const r of settled) {
|
|
231
|
+
if (r.status !== 'fulfilled' || r.value === 'truncated')
|
|
232
|
+
truncated = true;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
if (truncated) {
|
|
237
|
+
// Surface the fail-open so an incomplete scan (dir/depth cap, or an
|
|
238
|
+
// unreadable directory or `.cs` file) silently disabling the #1881 gate
|
|
239
|
+
// repo-wide is observable (#4) rather than a mystery edge regression.
|
|
240
|
+
logger_js_1.logger.warn(`[csharp] namespace scan of ${repoRoot} truncated (dir cap ${CSHARP_SCAN_MAX_DIRS}, depth cap ${CSHARP_SCAN_MAX_DEPTH}, an unreadable directory, or an unreadable .cs file); the #1881 suffix-fallback gate fails open for unmatched usings`);
|
|
241
|
+
}
|
|
242
|
+
return { configs, declaredNamespaces, rootNamespaces, truncated };
|
|
243
|
+
}
|
|
244
|
+
// Generous soft budget for locating `<RootNamespace>`: a real .csproj declares
|
|
245
|
+
// it in the first PropertyGroup near the top, so this is only reached by a
|
|
246
|
+
// pathological project file with a huge leading ItemGroup and no early
|
|
247
|
+
// RootNamespace. On hit we OMIT the config rather than guess a root (Codex F4).
|
|
248
|
+
const CSPROJ_ROOT_SCAN_MAX_BYTES = 4 * 1024 * 1024;
|
|
249
|
+
// Overlap kept across stream chunks so a `<RootNamespace>` tag straddling a
|
|
250
|
+
// chunk boundary is still matched (the tag + a short namespace value fit well
|
|
251
|
+
// within this window).
|
|
252
|
+
const CSPROJ_TAG_OVERLAP = 512;
|
|
253
|
+
/**
|
|
254
|
+
* Stream a `.csproj` just far enough to find `<RootNamespace>`, in constant
|
|
255
|
+
* memory and without a stat-then-read filesystem race. Returns the namespace
|
|
256
|
+
* when found; otherwise `rootNamespace: null` with `capHit` distinguishing a
|
|
257
|
+
* genuine read-to-EOF absence (`false`) from "not found within the soft budget"
|
|
258
|
+
* (`true`) — so the caller never synthesizes a wrong filename root for a late
|
|
259
|
+
* tag (Codex F4).
|
|
260
|
+
*/
|
|
261
|
+
async function findCsprojRootNamespace(csprojPath) {
|
|
262
|
+
const stream = (0, fs_1.createReadStream)(csprojPath, { encoding: 'utf-8' });
|
|
263
|
+
let window = '';
|
|
264
|
+
let bytesRead = 0;
|
|
265
|
+
try {
|
|
266
|
+
for await (const chunk of stream) {
|
|
267
|
+
const text = chunk;
|
|
268
|
+
bytesRead += text.length;
|
|
269
|
+
window =
|
|
270
|
+
(window.length > CSPROJ_TAG_OVERLAP ? window.slice(-CSPROJ_TAG_OVERLAP) : window) + text;
|
|
271
|
+
const match = window.match(CSHARP_ROOT_NAMESPACE_RE);
|
|
272
|
+
if (match) {
|
|
273
|
+
stream.destroy();
|
|
274
|
+
return { rootNamespace: match[1].trim(), capHit: false };
|
|
275
|
+
}
|
|
276
|
+
if (bytesRead >= CSPROJ_ROOT_SCAN_MAX_BYTES) {
|
|
277
|
+
stream.destroy();
|
|
278
|
+
return { rootNamespace: null, capHit: true };
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
catch {
|
|
283
|
+
// Unreadable .csproj: don't guess a filename root either — omit the config.
|
|
284
|
+
return { rootNamespace: null, capHit: true };
|
|
285
|
+
}
|
|
286
|
+
return { rootNamespace: null, capHit: false }; // read to EOF, tag genuinely absent
|
|
287
|
+
}
|
|
288
|
+
async function readCsprojConfig(csprojPath, fileName, repoRoot, dir) {
|
|
289
|
+
const { rootNamespace: found, capHit } = await findCsprojRootNamespace(csprojPath);
|
|
290
|
+
// A late `<RootNamespace>` we couldn't reach (capHit) or an unreadable file
|
|
291
|
+
// must NOT synthesize a filename root — a wrong authoritative root would make
|
|
292
|
+
// imports under the real root resolve to nothing and suppress the fallback
|
|
293
|
+
// (Codex F4). Omit the config so the no-csproj fallback stays available. Only
|
|
294
|
+
// fall back to the filename on a genuine read-to-EOF absence of the tag.
|
|
295
|
+
if (capHit)
|
|
296
|
+
return null;
|
|
297
|
+
const rootNamespace = found ?? fileName.replace(/\.csproj$/, '');
|
|
298
|
+
const projectDir = path_1.default.relative(repoRoot, dir).replace(/\\/g, '/');
|
|
299
|
+
if (env_js_1.isDev) {
|
|
300
|
+
logger_js_1.logger.info(`📦 Loaded C# project: ${fileName} (namespace: ${rootNamespace}, dir: ${projectDir})`);
|
|
301
|
+
}
|
|
302
|
+
return { rootNamespace, projectDir };
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Stream one `.cs` file line-by-line and collect its declared `namespace` names
|
|
306
|
+
* into the shared Sets.
|
|
307
|
+
*
|
|
308
|
+
* Streaming (rather than reading the whole file into a string) keeps memory
|
|
309
|
+
* constant regardless of file size, so a large generated `.cs` (`*.g.cs`, EF /
|
|
310
|
+
* gRPC output) is fully scanned instead of skipped by a per-file size cap —
|
|
311
|
+
* which would otherwise trip `truncated` and disable the #1881 gate repo-wide.
|
|
312
|
+
* Only the cheap line scan streams here; the tree-sitter PARSE path keeps its
|
|
313
|
+
* own size cap.
|
|
314
|
+
*
|
|
315
|
+
* Returns `'truncated'` when the file could not be read, so the caller marks the
|
|
316
|
+
* scan truncated and the #1881 gate fails OPEN rather than wrongly suppress an
|
|
317
|
+
* import declared in the unread file. Returns `'ok'` on a complete read.
|
|
318
|
+
*/
|
|
319
|
+
async function collectDeclaredNamespaces(filePath, declaredNamespaces, rootNamespaces) {
|
|
320
|
+
const createScanner = await getCsharpStructureScannerFactory();
|
|
321
|
+
const scanner = createScanner();
|
|
322
|
+
try {
|
|
323
|
+
// `crlfDelay: Infinity` treats every `\r\n` as a single break; the line
|
|
324
|
+
// scanner is terminator-agnostic, so a streamed scan yields the same
|
|
325
|
+
// namespaces as scanning the whole file content at once.
|
|
326
|
+
const lines = (0, readline_1.createInterface)({
|
|
327
|
+
input: (0, fs_1.createReadStream)(filePath, { encoding: 'utf-8' }),
|
|
328
|
+
crlfDelay: Infinity,
|
|
329
|
+
});
|
|
330
|
+
for await (const line of lines) {
|
|
331
|
+
scanner.pushLine(line);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
catch {
|
|
335
|
+
return 'truncated'; // unreadable source → signal truncation (fail open)
|
|
336
|
+
}
|
|
337
|
+
const structure = scanner.result();
|
|
338
|
+
for (const ns of structure.namespaces) {
|
|
339
|
+
declaredNamespaces.add(ns);
|
|
340
|
+
const dot = ns.indexOf('.');
|
|
341
|
+
rootNamespaces.add(dot === -1 ? ns : ns.slice(0, dot));
|
|
342
|
+
}
|
|
343
|
+
// A declaration the scanner could not fully capture (Codex F3) means the
|
|
344
|
+
// collected namespaces are an incomplete picture of this file — treat it like
|
|
345
|
+
// a truncated read so the #1881 gate fails OPEN rather than over-block an
|
|
346
|
+
// import whose namespace was dropped.
|
|
347
|
+
return structure.incomplete ? 'truncated' : 'ok';
|
|
348
|
+
}
|
|
349
|
+
async function loadSwiftPackageConfig(repoRoot) {
|
|
350
|
+
// Swift imports are module-name based (e.g., `import SiuperModel`)
|
|
351
|
+
// SPM convention: Sources/<TargetName>/ or Package/Sources/<TargetName>/
|
|
352
|
+
// We scan for these directories to build a target map
|
|
353
|
+
const targets = new Map();
|
|
354
|
+
const sourceDirs = ['Sources', 'Package/Sources', 'src'];
|
|
355
|
+
for (const sourceDir of sourceDirs) {
|
|
356
|
+
try {
|
|
357
|
+
const fullPath = path_1.default.join(repoRoot, sourceDir);
|
|
358
|
+
const entries = await promises_1.default.readdir(fullPath, { withFileTypes: true });
|
|
359
|
+
for (const entry of entries) {
|
|
360
|
+
if (entry.isDirectory()) {
|
|
361
|
+
targets.set(entry.name, sourceDir + '/' + entry.name);
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
catch {
|
|
366
|
+
// Directory doesn't exist
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
if (targets.size > 0) {
|
|
370
|
+
if (env_js_1.isDev) {
|
|
371
|
+
logger_js_1.logger.info(`📦 Loaded ${targets.size} Swift package targets`);
|
|
372
|
+
}
|
|
373
|
+
return { targets };
|
|
374
|
+
}
|
|
375
|
+
return null;
|
|
376
|
+
}
|
|
377
|
+
// ============================================================================
|
|
378
|
+
// BUNDLED CONFIG LOADER
|
|
379
|
+
// ============================================================================
|
|
380
|
+
/** Load all language-specific configs once for an ingestion run. */
|
|
381
|
+
async function loadImportConfigs(repoRoot) {
|
|
382
|
+
const csharpScan = await scanCSharpProject(repoRoot);
|
|
383
|
+
return {
|
|
384
|
+
tsconfigPaths: await loadTsconfigPaths(repoRoot),
|
|
385
|
+
goModule: await loadGoModulePath(repoRoot),
|
|
386
|
+
composerConfig: await loadComposerConfig(repoRoot),
|
|
387
|
+
swiftPackageConfig: await loadSwiftPackageConfig(repoRoot),
|
|
388
|
+
csharpConfigs: csharpScan.configs,
|
|
389
|
+
csharpNamespaces: csharpScanToEvidence(csharpScan),
|
|
390
|
+
};
|
|
391
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Language Provider interface — the complete capability contract for a supported language.
|
|
4
|
+
*
|
|
5
|
+
* Each language implements this interface in a single file under `languages/`.
|
|
6
|
+
* The pipeline accesses all per-language behavior through this interface.
|
|
7
|
+
*
|
|
8
|
+
* Design pattern: Strategy pattern with compile-time exhaustiveness.
|
|
9
|
+
* The providers table in `languages/index.ts` uses `satisfies Record<SupportedLanguages, LanguageProvider>`
|
|
10
|
+
* so adding a language to the enum without creating a provider is a compiler error.
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.defineLanguage = defineLanguage;
|
|
14
|
+
const DEFAULTS = {
|
|
15
|
+
mroStrategy: 'first-wins',
|
|
16
|
+
};
|
|
17
|
+
/** Define a language provider — required fields must be supplied, optional fields get sensible defaults. */
|
|
18
|
+
function defineLanguage(config) {
|
|
19
|
+
const builtIns = config.builtInNames;
|
|
20
|
+
return {
|
|
21
|
+
...DEFAULTS,
|
|
22
|
+
...config,
|
|
23
|
+
isBuiltInName: builtIns ? (name) => builtIns.has(name) : () => false,
|
|
24
|
+
};
|
|
25
|
+
}
|