cgraphx 2.0.1 → 2.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.claude-template/FLOW-MAP.md +7 -5
- package/dist/.claude-template/commands/end.md +1 -1
- package/dist/.claude-template/skills/cgraphx-guide/SKILL.md +2 -1
- package/dist/.claude-template/skills/cgraphx-guide/how-to-use.html +4 -2
- package/dist/.claude-template/skills/cgraphx-guide/how-to-use.md +5 -2
- package/dist/.claude-template/skills/iboc-check/SKILL.md +116 -0
- package/dist/.claude-template/skills/iboc-check/filler-prompt.md +75 -0
- package/dist/.claude-template/skills/implementation/SKILL.md +7 -0
- package/dist/.claude-template/skills/init-project-guides/SKILL.md +1 -1
- package/dist/.claude-template/skills/run-api-test/references/db-verification.md +2 -2
- package/dist/.claude-template/skills/subagent-implement/SKILL.md +3 -2
- package/dist/.claude-template/skills/write-api/assets/template-request.bru +3 -3
- package/dist/.claude-template/skills/write-api/references/bru-format.md +6 -6
- package/dist/.claude-template/skills/write-delivery-guide/SKILL.md +97 -0
- package/dist/.claude-template/skills/write-delivery-guide/template-change-type.md +120 -0
- package/dist/.claude-template/skills/write-delivery-guide/template-multi-role-flow.md +148 -0
- package/dist/.claude-template/skills/write-unit-test-code/SKILL.md +23 -6
- package/dist/core/code/engine/cli/analyze-config.js +320 -0
- package/dist/core/code/engine/cli/analyze.js +1086 -0
- package/dist/core/code/engine/cli/cli-message.js +83 -0
- package/dist/core/code/engine/cli/detect-changes-format.js +58 -0
- package/dist/core/code/engine/cli/embedding-dims.js +43 -0
- package/dist/core/code/engine/cli/format-elapsed.js +12 -0
- package/dist/core/code/engine/cli/help-i18n.js +144 -0
- package/dist/core/code/engine/cli/i18n/en.js +110 -0
- package/dist/core/code/engine/cli/i18n/index.js +47 -0
- package/dist/core/code/engine/cli/i18n/resources.js +9 -0
- package/dist/core/code/engine/cli/i18n/zh-CN.js +110 -0
- package/dist/core/code/engine/cli/lazy-action.js +67 -0
- package/dist/core/code/engine/cli/optional-grammars.js +136 -0
- package/dist/core/code/engine/cli/resolve-invocation.js +76 -0
- package/dist/core/code/engine/cli/status.js +156 -0
- package/dist/core/code/engine/cli/tool.js +384 -0
- package/dist/core/code/engine/config/ignore-service.js +511 -0
- package/dist/core/code/engine/config/supported-languages.js +17 -0
- package/dist/core/code/engine/core/analysis-features.js +64 -0
- package/dist/core/code/engine/core/analyzer-identity.js +2171 -0
- package/dist/core/code/engine/core/git-staleness.js +180 -0
- package/dist/core/code/engine/core/graph/graph.js +180 -0
- package/dist/core/code/engine/core/graph/import-cycles.js +106 -0
- package/dist/core/code/engine/core/graph/types.js +2 -0
- package/dist/core/code/engine/core/index-freshness.js +12 -0
- package/dist/core/code/engine/core/ingestion/binding-accumulator.js +341 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/c-cpp.js +168 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/csharp.js +9 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/dart.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/go.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/jvm.js +54 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/php.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/python.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/ruby.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/rust.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/swift.js +8 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/configs/typescript-javascript.js +11 -0
- package/dist/core/code/engine/core/ingestion/call-extractors/generic.js +62 -0
- package/dist/core/code/engine/core/ingestion/call-processor.js +503 -0
- package/dist/core/code/engine/core/ingestion/call-routing.js +98 -0
- package/dist/core/code/engine/core/ingestion/call-types.js +3 -0
- package/dist/core/code/engine/core/ingestion/cfg/callee-cell-format.js +45 -0
- package/dist/core/code/engine/core/ingestion/cfg/cfg-builder.js +202 -0
- package/dist/core/code/engine/core/ingestion/cfg/collect.js +81 -0
- package/dist/core/code/engine/core/ingestion/cfg/control-dependence.js +185 -0
- package/dist/core/code/engine/core/ingestion/cfg/control-flow-context.js +130 -0
- package/dist/core/code/engine/core/ingestion/cfg/emit.js +646 -0
- package/dist/core/code/engine/core/ingestion/cfg/post-dominators.js +182 -0
- package/dist/core/code/engine/core/ingestion/cfg/reaching-def-reason-codec.js +139 -0
- package/dist/core/code/engine/core/ingestion/cfg/reaching-defs-graph.js +322 -0
- package/dist/core/code/engine/core/ingestion/cfg/reaching-defs.js +792 -0
- package/dist/core/code/engine/core/ingestion/cfg/synthetic-escape.js +305 -0
- package/dist/core/code/engine/core/ingestion/cfg/traversal-result.js +6 -0
- package/dist/core/code/engine/core/ingestion/cfg/types.js +14 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/c-cpp-harvest.js +545 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/c-cpp.js +590 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/call-site-harvest.js +356 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/csharp-harvest.js +593 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/csharp.js +871 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/dart-harvest.js +874 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/dart.js +840 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/go-harvest.js +625 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/go.js +642 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/java-harvest.js +517 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/java.js +816 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/kotlin-harvest.js +723 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/kotlin.js +813 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/php-harvest.js +630 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/php.js +725 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/python-harvest.js +776 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/python.js +562 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/ruby-harvest.js +591 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/ruby.js +760 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/rust-harvest.js +877 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/rust.js +562 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/scope-tree-harvest.js +120 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/swift-harvest.js +683 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/swift.js +791 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/typescript-harvest.js +1060 -0
- package/dist/core/code/engine/core/ingestion/cfg/visitors/typescript.js +587 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/c-cpp.js +77 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/csharp.js +24 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/dart.js +10 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/go.js +28 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/jvm.js +67 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/php.js +10 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/python.js +10 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/ruby.js +13 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/rust.js +10 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/swift.js +21 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/configs/typescript-javascript.js +31 -0
- package/dist/core/code/engine/core/ingestion/class-extractors/generic.js +144 -0
- package/dist/core/code/engine/core/ingestion/class-types.js +2 -0
- package/dist/core/code/engine/core/ingestion/cluster-enricher.js +174 -0
- package/dist/core/code/engine/core/ingestion/community-processor.js +604 -0
- package/dist/core/code/engine/core/ingestion/constants.js +26 -0
- package/dist/core/code/engine/core/ingestion/cpp-ue-preprocessor.js +263 -0
- package/dist/core/code/engine/core/ingestion/csharp-namespace-gate.js +133 -0
- package/dist/core/code/engine/core/ingestion/di-extractors/index.js +38 -0
- package/dist/core/code/engine/core/ingestion/di-extractors/spring.js +310 -0
- package/dist/core/code/engine/core/ingestion/emit-references.js +244 -0
- package/dist/core/code/engine/core/ingestion/entry-point-scoring.js +201 -0
- package/dist/core/code/engine/core/ingestion/export-detection.js +244 -0
- package/dist/core/code/engine/core/ingestion/field-extractor.js +29 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/c-cpp.js +107 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/csharp.js +124 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/dart.js +99 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/go.js +102 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/helpers.js +198 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/jvm.js +172 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/php.js +67 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/python.js +94 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/ruby.js +79 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/rust.js +55 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/swift.js +93 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/configs/typescript-javascript.js +59 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/generic.js +147 -0
- package/dist/core/code/engine/core/ingestion/field-extractors/typescript.js +266 -0
- package/dist/core/code/engine/core/ingestion/field-types.js +3 -0
- package/dist/core/code/engine/core/ingestion/filesystem-walker.js +136 -0
- package/dist/core/code/engine/core/ingestion/finalize-orchestrator.js +159 -0
- package/dist/core/code/engine/core/ingestion/framework-detection.js +432 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/analysis-features.js +38 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/annotation-arguments.js +234 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/aop-candidates.js +88 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/aop.js +487 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/auto-configuration.js +21 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-candidates.js +189 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-catalog.js +32 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/bean-factories.js +73 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/conditionals.js +323 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/config-bindings.js +119 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/di-metadata.js +385 -0
- package/dist/core/code/engine/core/ingestion/frameworks/spring/resource-injection.js +96 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/c-cpp.js +17 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/csharp.js +46 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/dart.js +59 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/go.js +30 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/jvm.js +73 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/php.js +19 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/python.js +45 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/ruby.js +20 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/rust.js +58 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/swift.js +94 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/configs/typescript-javascript.js +26 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/csharp.js +128 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/go.js +50 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/jvm.js +112 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/php.js +80 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/python.js +75 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/resolver-factory.js +36 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/ruby.js +20 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/rust.js +79 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/standard.js +180 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/types.js +7 -0
- package/dist/core/code/engine/core/ingestion/import-resolvers/utils.js +153 -0
- package/dist/core/code/engine/core/ingestion/import-target-adapter.js +99 -0
- package/dist/core/code/engine/core/ingestion/language-config.js +391 -0
- package/dist/core/code/engine/core/ingestion/language-provider.js +25 -0
- package/dist/core/code/engine/core/ingestion/languages/c/arity-metadata.js +98 -0
- package/dist/core/code/engine/core/ingestion/languages/c/arity.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/c/capture-side-channel.js +69 -0
- package/dist/core/code/engine/core/ingestion/languages/c/captures.js +189 -0
- package/dist/core/code/engine/core/ingestion/languages/c/header-scan.js +58 -0
- package/dist/core/code/engine/core/ingestion/languages/c/import-decomposer.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/c/import-target.js +103 -0
- package/dist/core/code/engine/core/ingestion/languages/c/index.js +33 -0
- package/dist/core/code/engine/core/ingestion/languages/c/interpret.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/c/merge-bindings.js +26 -0
- package/dist/core/code/engine/core/ingestion/languages/c/query.js +210 -0
- package/dist/core/code/engine/core/ingestion/languages/c/scope-resolver.js +112 -0
- package/dist/core/code/engine/core/ingestion/languages/c/simple-hooks.js +24 -0
- package/dist/core/code/engine/core/ingestion/languages/c/static-linkage.js +109 -0
- package/dist/core/code/engine/core/ingestion/languages/c-cpp.js +506 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/adl.js +804 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/arity-metadata.js +258 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/arity.js +37 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/capture-side-channel.js +89 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/captures.js +1975 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/constraint-extractor.js +311 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/constraint-filter.js +210 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/conversion-rank.js +163 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/file-local-linkage.js +327 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/header-scan.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/import-decomposer.js +134 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/import-target.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/index.js +33 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/inline-namespaces.js +379 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/interpret.js +239 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/member-lookup.js +470 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/merge-bindings.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/query.js +763 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/range-bindings.js +230 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/scope-resolver.js +354 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/simple-hooks.js +67 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/two-phase-lookup.js +348 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/type-classifier.js +56 -0
- package/dist/core/code/engine/core/ingestion/languages/cpp/user-defined-conversions.js +128 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/accessor-unwrap.js +67 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/arity-metadata.js +49 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/arity.js +40 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/cache-stats.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/captures.js +557 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/import-decomposer.js +96 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/import-target.js +176 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/index.js +95 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/interpret.js +150 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/merge-bindings.js +58 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/namespace-siblings.js +708 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/qualified-type-names.js +62 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/query.js +578 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/receiver-binding.js +142 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/resolution-config.js +18 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/scope-resolver.js +84 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp/simple-hooks.js +81 -0
- package/dist/core/code/engine/core/ingestion/languages/csharp.js +204 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/arity-metadata.js +38 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/arity.js +34 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/built-ins.js +37 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/cache-stats.js +30 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/captures.js +1096 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/expand-wildcards.js +34 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/extension-type-preprocess.js +33 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/import-target.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/index.js +45 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/interpret.js +101 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/merge-bindings.js +42 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/query.js +246 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/receiver-binding.js +90 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/scope-resolver.js +197 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/signature-bindings.js +54 -0
- package/dist/core/code/engine/core/ingestion/languages/dart/simple-hooks.js +61 -0
- package/dist/core/code/engine/core/ingestion/languages/dart.js +138 -0
- package/dist/core/code/engine/core/ingestion/languages/go/arity-metadata.js +71 -0
- package/dist/core/code/engine/core/ingestion/languages/go/arity.js +17 -0
- package/dist/core/code/engine/core/ingestion/languages/go/cache-stats.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/go/captures.js +492 -0
- package/dist/core/code/engine/core/ingestion/languages/go/expand-wildcards.js +97 -0
- package/dist/core/code/engine/core/ingestion/languages/go/generic-type-parameters.js +146 -0
- package/dist/core/code/engine/core/ingestion/languages/go/import-decomposer.js +47 -0
- package/dist/core/code/engine/core/ingestion/languages/go/import-target.js +70 -0
- package/dist/core/code/engine/core/ingestion/languages/go/index.js +39 -0
- package/dist/core/code/engine/core/ingestion/languages/go/interface-impls.js +955 -0
- package/dist/core/code/engine/core/ingestion/languages/go/interpret.js +177 -0
- package/dist/core/code/engine/core/ingestion/languages/go/merge-bindings.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/go/method-owners.js +131 -0
- package/dist/core/code/engine/core/ingestion/languages/go/namespace-mirror.js +56 -0
- package/dist/core/code/engine/core/ingestion/languages/go/package-clause.js +79 -0
- package/dist/core/code/engine/core/ingestion/languages/go/package-siblings.js +83 -0
- package/dist/core/code/engine/core/ingestion/languages/go/query.js +298 -0
- package/dist/core/code/engine/core/ingestion/languages/go/range-binding.js +127 -0
- package/dist/core/code/engine/core/ingestion/languages/go/receiver-binding.js +24 -0
- package/dist/core/code/engine/core/ingestion/languages/go/scope-resolver.js +75 -0
- package/dist/core/code/engine/core/ingestion/languages/go/simple-hooks.js +31 -0
- package/dist/core/code/engine/core/ingestion/languages/go/type-binding.js +279 -0
- package/dist/core/code/engine/core/ingestion/languages/go.js +160 -0
- package/dist/core/code/engine/core/ingestion/languages/index.js +66 -0
- package/dist/core/code/engine/core/ingestion/languages/java/analysis-features.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/java/arity-metadata.js +43 -0
- package/dist/core/code/engine/core/ingestion/languages/java/arity.js +27 -0
- package/dist/core/code/engine/core/ingestion/languages/java/cache-stats.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/java/capture-side-channel.js +123 -0
- package/dist/core/code/engine/core/ingestion/languages/java/captures.js +791 -0
- package/dist/core/code/engine/core/ingestion/languages/java/import-decomposer.js +88 -0
- package/dist/core/code/engine/core/ingestion/languages/java/import-target.js +103 -0
- package/dist/core/code/engine/core/ingestion/languages/java/index.js +43 -0
- package/dist/core/code/engine/core/ingestion/languages/java/interpret.js +146 -0
- package/dist/core/code/engine/core/ingestion/languages/java/merge-bindings.js +43 -0
- package/dist/core/code/engine/core/ingestion/languages/java/package-facts.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/java/package-siblings.js +11 -0
- package/dist/core/code/engine/core/ingestion/languages/java/query.js +319 -0
- package/dist/core/code/engine/core/ingestion/languages/java/receiver-binding.js +98 -0
- package/dist/core/code/engine/core/ingestion/languages/java/scope-resolver.js +213 -0
- package/dist/core/code/engine/core/ingestion/languages/java/simple-hooks.js +39 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-aop.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-bean-metadata.js +11 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-conditionals.js +52 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-config-bindings.js +222 -0
- package/dist/core/code/engine/core/ingestion/languages/java/spring-di.js +165 -0
- package/dist/core/code/engine/core/ingestion/languages/java.js +192 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/arity.js +15 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/captures.js +1122 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/import-target.js +56 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/index.js +109 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/interpret.js +45 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/merge-bindings.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/query.js +659 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/scope-resolver.js +78 -0
- package/dist/core/code/engine/core/ingestion/languages/javascript/simple-hooks.js +44 -0
- package/dist/core/code/engine/core/ingestion/languages/jvm/package-facts.js +46 -0
- package/dist/core/code/engine/core/ingestion/languages/jvm/package-siblings.js +200 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/arity-metadata.js +23 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/arity.js +18 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/cache-stats.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/capture-side-channel.js +160 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/captures.js +1262 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/companion-scopes.js +72 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/import-decomposer.js +40 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/import-target.js +135 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/index.js +26 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/interpret.js +75 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/merge-bindings.js +28 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/owners.js +134 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/package-facts.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/package-siblings.js +11 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/query.js +243 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/receiver-binding.js +103 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/scope-resolver.js +207 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/simple-hooks.js +42 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-aop.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-bean-metadata.js +11 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-conditionals.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin/spring-di.js +304 -0
- package/dist/core/code/engine/core/ingestion/languages/kotlin.js +189 -0
- package/dist/core/code/engine/core/ingestion/languages/php/arity-metadata.js +66 -0
- package/dist/core/code/engine/core/ingestion/languages/php/arity.js +43 -0
- package/dist/core/code/engine/core/ingestion/languages/php/cache-stats.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/php/captures.js +1166 -0
- package/dist/core/code/engine/core/ingestion/languages/php/import-decomposer.js +238 -0
- package/dist/core/code/engine/core/ingestion/languages/php/import-target.js +213 -0
- package/dist/core/code/engine/core/ingestion/languages/php/index.js +85 -0
- package/dist/core/code/engine/core/ingestion/languages/php/interpret.js +256 -0
- package/dist/core/code/engine/core/ingestion/languages/php/merge-bindings.js +50 -0
- package/dist/core/code/engine/core/ingestion/languages/php/namespace-siblings.js +353 -0
- package/dist/core/code/engine/core/ingestion/languages/php/query.js +391 -0
- package/dist/core/code/engine/core/ingestion/languages/php/receiver-binding.js +135 -0
- package/dist/core/code/engine/core/ingestion/languages/php/scope-resolver.js +361 -0
- package/dist/core/code/engine/core/ingestion/languages/php/simple-hooks.js +116 -0
- package/dist/core/code/engine/core/ingestion/languages/php.js +302 -0
- package/dist/core/code/engine/core/ingestion/languages/python/arity-metadata.js +49 -0
- package/dist/core/code/engine/core/ingestion/languages/python/arity.js +41 -0
- package/dist/core/code/engine/core/ingestion/languages/python/cache-stats.js +34 -0
- package/dist/core/code/engine/core/ingestion/languages/python/captures.js +299 -0
- package/dist/core/code/engine/core/ingestion/languages/python/depends-references.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/python/import-decomposer.js +115 -0
- package/dist/core/code/engine/core/ingestion/languages/python/import-target.js +440 -0
- package/dist/core/code/engine/core/ingestion/languages/python/index-stats.js +30 -0
- package/dist/core/code/engine/core/ingestion/languages/python/index.js +96 -0
- package/dist/core/code/engine/core/ingestion/languages/python/interpret.js +430 -0
- package/dist/core/code/engine/core/ingestion/languages/python/merge-bindings.js +47 -0
- package/dist/core/code/engine/core/ingestion/languages/python/query.js +323 -0
- package/dist/core/code/engine/core/ingestion/languages/python/receiver-binding.js +310 -0
- package/dist/core/code/engine/core/ingestion/languages/python/scope-resolver.js +80 -0
- package/dist/core/code/engine/core/ingestion/languages/python/simple-hooks.js +53 -0
- package/dist/core/code/engine/core/ingestion/languages/python.js +140 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/arity.js +41 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/cache-stats.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/captures.js +864 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/import-target.js +88 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/index.js +29 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/interpret.js +115 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/merge-bindings.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/query.js +349 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/receiver-binding.js +70 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/scope-resolver.js +263 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby/simple-hooks.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/ruby.js +215 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/arity.js +16 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/cache-stats.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/captures.js +304 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/import-decomposer.js +167 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/import-target.js +108 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/index.js +29 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/interpret.js +201 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/merge-bindings.js +21 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/method-owners.js +76 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/module-path.js +222 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/qualified-call.js +482 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/query.js +280 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/range-binding.js +687 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/receiver-binding.js +148 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/scope-resolver.js +151 -0
- package/dist/core/code/engine/core/ingestion/languages/rust/simple-hooks.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/rust.js +183 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/arity-metadata.js +44 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/arity.js +45 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/base-type.js +30 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/cache-stats.js +32 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/captures.js +594 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/conditional-directive-preprocess.js +256 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/implicit-imports.js +60 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/import-decomposer.js +87 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/import-target.js +84 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/index.js +56 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/interpret.js +93 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/merge-bindings.js +51 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/query.js +226 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/receiver-binding.js +169 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/scope-resolver.js +192 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/sibling-type-bindings.js +68 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/signature-bindings.js +69 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/simple-hooks.js +65 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/target-grouping.js +97 -0
- package/dist/core/code/engine/core/ingestion/languages/swift/target-siblings.js +74 -0
- package/dist/core/code/engine/core/ingestion/languages/swift.js +246 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/arity-metadata.js +106 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/arity.js +57 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/array-callback.js +58 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/cache-stats.js +34 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/captures.js +956 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/cjs-export-assignment.js +535 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/cjs-module-exports.js +196 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/import-decomposer.js +374 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/import-target.js +65 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/index.js +108 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/interpret.js +344 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/merge-bindings.js +161 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/nuxt-auto-imports.js +325 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/query.js +1328 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/receiver-binding.js +201 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/scope-resolver.js +293 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript/simple-hooks.js +139 -0
- package/dist/core/code/engine/core/ingestion/languages/typescript.js +455 -0
- package/dist/core/code/engine/core/ingestion/languages/vue/captures.js +70 -0
- package/dist/core/code/engine/core/ingestion/languages/vue/import-target.js +61 -0
- package/dist/core/code/engine/core/ingestion/languages/vue/index.js +55 -0
- package/dist/core/code/engine/core/ingestion/languages/vue/scope-resolver.js +295 -0
- package/dist/core/code/engine/core/ingestion/languages/vue.js +96 -0
- package/dist/core/code/engine/core/ingestion/local-symbol-pruner.js +68 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/c-cpp.js +387 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/csharp.js +290 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/dart.js +392 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/go.js +179 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/jvm.js +350 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/php.js +306 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/python.js +312 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/ruby.js +289 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/rust.js +198 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/swift.js +286 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/configs/typescript-javascript.js +341 -0
- package/dist/core/code/engine/core/ingestion/method-extractors/generic.js +209 -0
- package/dist/core/code/engine/core/ingestion/method-types.js +3 -0
- package/dist/core/code/engine/core/ingestion/model/field-registry.js +41 -0
- package/dist/core/code/engine/core/ingestion/model/index.js +52 -0
- package/dist/core/code/engine/core/ingestion/model/method-registry.js +138 -0
- package/dist/core/code/engine/core/ingestion/model/owned-members-lookup.js +46 -0
- package/dist/core/code/engine/core/ingestion/model/registration-table.js +234 -0
- package/dist/core/code/engine/core/ingestion/model/resolve.js +183 -0
- package/dist/core/code/engine/core/ingestion/model/scope-resolution-indexes.js +43 -0
- package/dist/core/code/engine/core/ingestion/model/semantic-model.js +179 -0
- package/dist/core/code/engine/core/ingestion/model/symbol-table.js +216 -0
- package/dist/core/code/engine/core/ingestion/model/type-registry.js +84 -0
- package/dist/core/code/engine/core/ingestion/mro-processor.js +709 -0
- package/dist/core/code/engine/core/ingestion/parsing-processor.js +312 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/communities.js +69 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/cross-file.js +71 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/di.js +338 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/http-api-calls.js +312 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/index.js +54 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/mro.js +40 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/orm.js +78 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/parse-impl.js +1286 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/parse.js +41 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/processes.js +193 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/prune-local-symbols.js +29 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/registry.js +52 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/routes.js +409 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/rpc-edges.js +301 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/runner.js +207 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/scan.js +49 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-aop.js +442 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-auto-configuration.js +264 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/spring-config.js +440 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/structure.js +38 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/tools.js +89 -0
- package/dist/core/code/engine/core/ingestion/pipeline-phases/types.js +40 -0
- package/dist/core/code/engine/core/ingestion/pipeline.js +152 -0
- package/dist/core/code/engine/core/ingestion/process-processor.js +325 -0
- package/dist/core/code/engine/core/ingestion/resolve-references.js +205 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/constant-resolver.js +135 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/django-root-discovery.js +221 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/django.js +428 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/expo.js +39 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/fastapi-router-bindings.js +264 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/laravel.js +501 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/middleware.js +175 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/nextjs.js +81 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/php.js +25 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/python-const-resolver.js +307 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/response-shapes.js +299 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/route-path.js +71 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/spring-shared.js +310 -0
- package/dist/core/code/engine/core/ingestion/route-extractors/spring.js +441 -0
- package/dist/core/code/engine/core/ingestion/scope-extractor-bridge.js +60 -0
- package/dist/core/code/engine/core/ingestion/scope-extractor.js +1373 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/contract/scope-resolver.js +282 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.js +72 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/edges.js +194 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/ids.js +472 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.js +49 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/method-dispatch.js +43 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +274 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +93 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/callable-value-flow.js +1240 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/compound-receiver.js +1174 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/free-call-fallback.js +873 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/imported-return-types.js +226 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/mro.js +107 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/overload-narrowing.js +441 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/property-dispatch.js +122 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +1720 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/phase.js +395 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/reconcile-ownership.js +208 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/registry.js +49 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/run.js +632 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/pipeline/validate-bindings-immutability.js +112 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/resolution-outcome.js +41 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/scope/namespace-targets.js +81 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/scope/walkers.js +1835 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/unresolved-receivers.js +242 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/utils/definition-id.js +22 -0
- package/dist/core/code/engine/core/ingestion/scope-resolution/workspace-index.js +151 -0
- package/dist/core/code/engine/core/ingestion/structure-processor.js +40 -0
- package/dist/core/code/engine/core/ingestion/tree-sitter-queries.js +2244 -0
- package/dist/core/code/engine/core/ingestion/ts-js-hoc-utils.js +115 -0
- package/dist/core/code/engine/core/ingestion/type-env.js +1136 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/c-cpp.js +555 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/csharp.js +570 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/dart.js +372 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/go.js +508 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/jvm.js +875 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/php.js +537 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/python.js +477 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/ruby.js +380 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/rust.js +502 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/shared.js +843 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/swift.js +490 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/types.js +2 -0
- package/dist/core/code/engine/core/ingestion/type-extractors/typescript.js +690 -0
- package/dist/core/code/engine/core/ingestion/utils/ast-helpers.js +1693 -0
- package/dist/core/code/engine/core/ingestion/utils/call-analysis.js +779 -0
- package/dist/core/code/engine/core/ingestion/utils/callable-flow-captures.js +932 -0
- package/dist/core/code/engine/core/ingestion/utils/callable-labels.js +49 -0
- package/dist/core/code/engine/core/ingestion/utils/deferred-resolution-profile.js +151 -0
- package/dist/core/code/engine/core/ingestion/utils/effective-ram.js +67 -0
- package/dist/core/code/engine/core/ingestion/utils/env.js +60 -0
- package/dist/core/code/engine/core/ingestion/utils/event-loop.js +9 -0
- package/dist/core/code/engine/core/ingestion/utils/graph-sort.js +103 -0
- package/dist/core/code/engine/core/ingestion/utils/heap-probe.js +45 -0
- package/dist/core/code/engine/core/ingestion/utils/heritage-marker.js +47 -0
- package/dist/core/code/engine/core/ingestion/utils/line-base.js +24 -0
- package/dist/core/code/engine/core/ingestion/utils/max-file-size.js +59 -0
- package/dist/core/code/engine/core/ingestion/utils/method-props.js +198 -0
- package/dist/core/code/engine/core/ingestion/utils/qualified-name.js +73 -0
- package/dist/core/code/engine/core/ingestion/utils/receiver-chain-captures.js +60 -0
- package/dist/core/code/engine/core/ingestion/utils/receiver-chain-codec.js +188 -0
- package/dist/core/code/engine/core/ingestion/utils/scope-tree-walk.js +36 -0
- package/dist/core/code/engine/core/ingestion/utils/symbol-labels.js +48 -0
- package/dist/core/code/engine/core/ingestion/utils/template-arguments.js +187 -0
- package/dist/core/code/engine/core/ingestion/utils/type-parameters.js +209 -0
- package/dist/core/code/engine/core/ingestion/utils/verbose.js +6 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/c-cpp.js +133 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/csharp.js +66 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/dart.js +111 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/go.js +153 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/jvm.js +145 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/php.js +61 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/python.js +104 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/ruby.js +55 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/rust.js +79 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/swift.js +91 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/configs/typescript-javascript.js +86 -0
- package/dist/core/code/engine/core/ingestion/variable-extractors/generic.js +111 -0
- package/dist/core/code/engine/core/ingestion/variable-types.js +3 -0
- package/dist/core/code/engine/core/ingestion/vue-sfc-extractor.js +544 -0
- package/dist/core/code/engine/core/ingestion/workers/callable-id.js +122 -0
- package/dist/core/code/engine/core/ingestion/workers/clone-safety.js +470 -0
- package/dist/core/code/engine/core/ingestion/workers/parse-worker.js +2456 -0
- package/dist/core/code/engine/core/ingestion/workers/post-result.js +90 -0
- package/dist/core/code/engine/core/ingestion/workers/quarantine.js +41 -0
- package/dist/core/code/engine/core/ingestion/workers/result-merge.js +59 -0
- package/dist/core/code/engine/core/ingestion/workers/worker-pool.js +1725 -0
- package/dist/core/code/engine/core/ingestion/workspace-config.js +139 -0
- package/dist/core/code/engine/core/lbug/conn-lock.js +72 -0
- package/dist/core/code/engine/core/lbug/csv-generator.js +710 -0
- package/dist/core/code/engine/core/lbug/cypher-escape.js +24 -0
- package/dist/core/code/engine/core/lbug/extension-load-error.js +339 -0
- package/dist/core/code/engine/core/lbug/extension-loader.js +261 -0
- package/dist/core/code/engine/core/lbug/graph-emit-sink.js +584 -0
- package/dist/core/code/engine/core/lbug/lbug-adapter.js +2703 -0
- package/dist/core/code/engine/core/lbug/lbug-config.js +1029 -0
- package/dist/core/code/engine/core/lbug/native-check.js +435 -0
- package/dist/core/code/engine/core/lbug/pool-adapter.js +973 -0
- package/dist/core/code/engine/core/lbug/query-params.js +25 -0
- package/dist/core/code/engine/core/lbug/query-result-utils.js +31 -0
- package/dist/core/code/engine/core/lbug/rel-pair-routing.js +373 -0
- package/dist/core/code/engine/core/lbug/schema.js +771 -0
- package/dist/core/code/engine/core/lbug/shutdown-helpers.js +40 -0
- package/dist/core/code/engine/core/lbug/sidecar-recovery.js +716 -0
- package/dist/core/code/engine/core/lbug/stdio-capture.js +49 -0
- package/dist/core/code/engine/core/lbug/sync-csv-writer.js +115 -0
- package/dist/core/code/engine/core/lbug/wal-checkpoint-driver.js +215 -0
- package/dist/core/code/engine/core/lbug/wal-driver-state.js +28 -0
- package/dist/core/code/engine/core/logger.js +339 -0
- package/dist/core/code/engine/core/platform/capabilities.js +91 -0
- package/dist/core/code/engine/core/run-analyze.js +1098 -0
- package/dist/core/code/engine/core/tree-sitter/parser-loader.js +281 -0
- package/dist/core/code/engine/core/tree-sitter/safe-parse.js +258 -0
- package/dist/core/code/engine/core/tree-sitter/vendored-grammars.js +64 -0
- package/dist/core/code/engine/lib/utils.js +121 -0
- package/dist/core/code/engine/mcp/core/lbug-adapter.js +27 -0
- package/dist/core/code/engine/mcp/local/aop-metadata.js +230 -0
- package/dist/core/code/engine/mcp/local/bean-metadata.js +49 -0
- package/dist/core/code/engine/mcp/local/limits.js +15 -0
- package/dist/core/code/engine/mcp/local/line-display.js +6 -0
- package/dist/core/code/engine/mcp/local/local-backend.js +4142 -0
- package/dist/core/code/engine/storage/branch-index.js +72 -0
- package/dist/core/code/engine/storage/file-hash.js +95 -0
- package/dist/core/code/engine/storage/fs-atomic.js +34 -0
- package/dist/core/code/engine/storage/git.js +555 -0
- package/dist/core/code/engine/storage/index-lock.js +664 -0
- package/dist/core/code/engine/storage/parse-cache.js +650 -0
- package/dist/core/code/engine/storage/parsedfile-store.js +620 -0
- package/dist/core/code/engine/storage/repo-manager.js +1061 -0
- package/dist/core/code/engine/storage/scope-index-store.js +247 -0
- package/dist/core/code/engine/types/pipeline.js +2 -0
- package/dist/core/code/scripts/install-duckdb-extension.mjs +125 -0
- package/dist/core/code/scripts/resolve-analyze-cmd.cjs +346 -0
- package/dist/core/code/shared/graph/types.js +8 -0
- package/dist/core/code/shared/index.js +105 -0
- package/dist/core/code/shared/integrations/circuit-breaker.js +242 -0
- package/dist/core/code/shared/integrations/resilient-fetch.js +224 -0
- package/dist/core/code/shared/integrations/retry.js +70 -0
- package/dist/core/code/shared/integrations/understand-quickly.js +145 -0
- package/dist/core/code/shared/language-detection.js +162 -0
- package/dist/core/code/shared/languages.js +27 -0
- package/dist/core/code/shared/lbug/schema-constants.js +98 -0
- package/dist/core/code/shared/mro-strategy.js +2 -0
- package/dist/core/code/shared/pipeline.js +5 -0
- package/dist/core/code/shared/scope-resolution/callable-flow-site.js +11 -0
- package/dist/core/code/shared/scope-resolution/def-index.js +53 -0
- package/dist/core/code/shared/scope-resolution/evidence-weights.js +87 -0
- package/dist/core/code/shared/scope-resolution/finalize-algorithm.js +807 -0
- package/dist/core/code/shared/scope-resolution/language-classification.js +46 -0
- package/dist/core/code/shared/scope-resolution/method-dispatch-index.js +100 -0
- package/dist/core/code/shared/scope-resolution/module-scope-index.js +59 -0
- package/dist/core/code/shared/scope-resolution/origin-priority.js +23 -0
- package/dist/core/code/shared/scope-resolution/parsed-file.js +54 -0
- package/dist/core/code/shared/scope-resolution/position-index.js +136 -0
- package/dist/core/code/shared/scope-resolution/qualified-name-index.js +77 -0
- package/dist/core/code/shared/scope-resolution/reference-site.js +24 -0
- package/dist/core/code/shared/scope-resolution/registries/class-registry.js +32 -0
- package/dist/core/code/shared/scope-resolution/registries/context.js +52 -0
- package/dist/core/code/shared/scope-resolution/registries/evidence.js +152 -0
- package/dist/core/code/shared/scope-resolution/registries/field-registry.js +33 -0
- package/dist/core/code/shared/scope-resolution/registries/lookup-core.js +392 -0
- package/dist/core/code/shared/scope-resolution/registries/lookup-qualified.js +58 -0
- package/dist/core/code/shared/scope-resolution/registries/macro-registry.js +34 -0
- package/dist/core/code/shared/scope-resolution/registries/method-registry.js +34 -0
- package/dist/core/code/shared/scope-resolution/registries/tie-breaks.js +63 -0
- package/dist/core/code/shared/scope-resolution/resolve-type-ref.js +128 -0
- package/dist/core/code/shared/scope-resolution/scope-id.js +49 -0
- package/dist/core/code/shared/scope-resolution/scope-tree.js +225 -0
- package/dist/core/code/shared/scope-resolution/symbol-definition.js +12 -0
- package/dist/core/code/shared/scope-resolution/types.js +25 -0
- package/dist/core/code/shared/test-helpers.js +17 -0
- package/dist/core/code/vendor/leiden/index.cjs +355 -0
- package/dist/core/code/vendor/leiden/utils.cjs +419 -0
- package/dist/core/features/scanner.d.ts +2 -0
- package/dist/core/features/scanner.d.ts.map +1 -1
- package/dist/core/features/scanner.js +27 -6
- package/dist/core/features/scanner.js.map +1 -1
- package/dist/core/timeline/cli.d.ts.map +1 -1
- package/dist/core/timeline/cli.js +13 -6
- package/dist/core/timeline/cli.js.map +1 -1
- package/dist/core/timeline/debris.d.ts +20 -0
- package/dist/core/timeline/debris.d.ts.map +1 -0
- package/dist/core/timeline/debris.js +124 -0
- package/dist/core/timeline/debris.js.map +1 -0
- package/dist/core/timeline/hook-runner.d.ts.map +1 -1
- package/dist/core/timeline/hook-runner.js +3 -1
- package/dist/core/timeline/hook-runner.js.map +1 -1
- package/dist/core/timeline/hooks.d.ts.map +1 -1
- package/dist/core/timeline/hooks.js +13 -5
- package/dist/core/timeline/hooks.js.map +1 -1
- package/dist/core/timeline/installer.d.ts +2 -0
- package/dist/core/timeline/installer.d.ts.map +1 -1
- package/dist/core/timeline/installer.js +12 -0
- package/dist/core/timeline/installer.js.map +1 -1
- package/dist/core/timeline/project-root.d.ts +21 -0
- package/dist/core/timeline/project-root.d.ts.map +1 -0
- package/dist/core/timeline/project-root.js +83 -0
- package/dist/core/timeline/project-root.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,555 @@
|
|
|
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.getInferredRepoName = exports.parseRepoNameFromUrl = exports.sanitizeRepoName = exports.getCurrentBranch = exports.getDefaultBranch = exports.getRemoteOriginUrl = exports.hasGitDir = exports.findGitRootByDotGit = exports.resolveRepoIdentityRoot = exports.getCoreExcludesFilePath = exports.getGitInfoExcludePath = exports.getCanonicalRepoRoot = exports.getGitRoot = exports.getRemoteUrl = exports.getCurrentCommit = exports.isGitRepo = exports.isWorkingTreeDirty = void 0;
|
|
7
|
+
exports.parseDiffHunks = parseDiffHunks;
|
|
8
|
+
const child_process_1 = require("child_process");
|
|
9
|
+
const fs_1 = require("fs");
|
|
10
|
+
const path_1 = __importDefault(require("path"));
|
|
11
|
+
const os_1 = __importDefault(require("os"));
|
|
12
|
+
// Git utilities for repository detection, commit tracking, and diff analysis
|
|
13
|
+
const chompGitOutput = (value) => value.toString().replace(/\r?\n$/, '');
|
|
14
|
+
/**
|
|
15
|
+
* True when the working tree has uncommitted changes that analyze would
|
|
16
|
+
* re-index, even at a matching HEAD. Excludes the paths GitNexus writes during
|
|
17
|
+
* analyze (.cgraphx/, .claude/, .cursor/, AGENTS.md, CLAUDE.md, and the
|
|
18
|
+
* repo-local .agents/ mirror) so its own output never counts as dirty
|
|
19
|
+
* (regression vs PR #1233 behavior). The entire .agents/ tree is excluded,
|
|
20
|
+
* matching the .claude/ treatment, because the skill mirror writes across
|
|
21
|
+
* .agents/skills/ and deeper paths. Conservative on any git failure. Shared
|
|
22
|
+
* so `analyze`'s fast-path gate and `status`'s freshness report agree on what
|
|
23
|
+
* "dirty" means.
|
|
24
|
+
*/
|
|
25
|
+
const isWorkingTreeDirty = (repoPath) => {
|
|
26
|
+
try {
|
|
27
|
+
const out = (0, child_process_1.execFileSync)('git', [
|
|
28
|
+
'status',
|
|
29
|
+
'--porcelain',
|
|
30
|
+
'--',
|
|
31
|
+
'.',
|
|
32
|
+
':(exclude).cgraphx',
|
|
33
|
+
':(exclude).cgraphx/**',
|
|
34
|
+
':(exclude).claude',
|
|
35
|
+
':(exclude).claude/**',
|
|
36
|
+
':(exclude).cursor',
|
|
37
|
+
':(exclude).cursor/**',
|
|
38
|
+
':(exclude)AGENTS.md',
|
|
39
|
+
':(exclude)CLAUDE.md',
|
|
40
|
+
':(exclude).agents',
|
|
41
|
+
':(exclude).agents/**',
|
|
42
|
+
], {
|
|
43
|
+
cwd: repoPath,
|
|
44
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
45
|
+
windowsHide: true,
|
|
46
|
+
encoding: 'utf8',
|
|
47
|
+
});
|
|
48
|
+
return out.trim().length > 0;
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return true; // conservative on git failure
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
exports.isWorkingTreeDirty = isWorkingTreeDirty;
|
|
55
|
+
const isGitRepo = (repoPath) => {
|
|
56
|
+
try {
|
|
57
|
+
(0, child_process_1.execSync)('git rev-parse --is-inside-work-tree', {
|
|
58
|
+
cwd: repoPath,
|
|
59
|
+
stdio: 'ignore',
|
|
60
|
+
windowsHide: true,
|
|
61
|
+
});
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
exports.isGitRepo = isGitRepo;
|
|
69
|
+
const getCurrentCommit = (repoPath) => {
|
|
70
|
+
try {
|
|
71
|
+
return (0, child_process_1.execSync)('git rev-parse HEAD', {
|
|
72
|
+
cwd: repoPath,
|
|
73
|
+
// Suppress stderr -- without an explicit stdio option, Node's execSync
|
|
74
|
+
// forwards the child's stderr to the parent process (documented behaviour).
|
|
75
|
+
// When repoPath is not inside a git worktree, git prints
|
|
76
|
+
// "fatal: not a git repository" to stderr, which leaks to the user's
|
|
77
|
+
// terminal even though the error is caught here (#1172).
|
|
78
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
79
|
+
windowsHide: true,
|
|
80
|
+
})
|
|
81
|
+
.toString()
|
|
82
|
+
.trim();
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
return '';
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
exports.getCurrentCommit = getCurrentCommit;
|
|
89
|
+
/**
|
|
90
|
+
* Get a stable canonical identifier for the repo's `origin` remote, if any.
|
|
91
|
+
*
|
|
92
|
+
* Used to fingerprint two on-disk clones as the same logical repository
|
|
93
|
+
* (prevents silent graph drift across sibling clones — see #2054). `path` alone
|
|
94
|
+
* is unreliable: worktrees, "clean clone for indexing" hygiene, and
|
|
95
|
+
* multi-agent workspaces routinely have the same repo at multiple
|
|
96
|
+
* absolute paths. The remote URL is the only on-disk signal that
|
|
97
|
+
* survives those conventions.
|
|
98
|
+
*
|
|
99
|
+
* Normalisation strategy:
|
|
100
|
+
* - Strip a trailing `.git` so `https://x/y` and `https://x/y.git` collapse.
|
|
101
|
+
* - Strip a trailing `/` for the same reason.
|
|
102
|
+
* - `git@github.com:foo/bar` and `https://github.com/foo/bar` are
|
|
103
|
+
* intentionally NOT collapsed — they are different remotes from
|
|
104
|
+
* git's perspective and we don't want to assert equivalence.
|
|
105
|
+
* - Lower-case the host portion so `GitHub.com` and `github.com`
|
|
106
|
+
* don't desync; preserves case in path because some hosts
|
|
107
|
+
* (Bitbucket Server) treat repo paths case-sensitively.
|
|
108
|
+
*
|
|
109
|
+
* Returns `undefined` when there is no origin remote, the directory
|
|
110
|
+
* isn't a git repo, or git itself isn't available.
|
|
111
|
+
*/
|
|
112
|
+
const getRemoteUrl = (repoPath) => {
|
|
113
|
+
let raw;
|
|
114
|
+
try {
|
|
115
|
+
raw = (0, child_process_1.execSync)('git config --get remote.origin.url', {
|
|
116
|
+
cwd: repoPath,
|
|
117
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
118
|
+
windowsHide: true,
|
|
119
|
+
})
|
|
120
|
+
.toString()
|
|
121
|
+
.trim();
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
return undefined;
|
|
125
|
+
}
|
|
126
|
+
if (!raw)
|
|
127
|
+
return undefined;
|
|
128
|
+
let normalised = raw.replace(/\/$/, '').replace(/\.git$/, '');
|
|
129
|
+
// Lower-case the host segment of `scheme://[user@]host[:port]/...`
|
|
130
|
+
// and the host segment of `git@host:owner/repo` SCP form.
|
|
131
|
+
// SSH user-segment regex deliberately accepts the common
|
|
132
|
+
// `git@`/`<alnum>-_@` cases. Less common usernames (e.g. with
|
|
133
|
+
// dots) fall through to the URL-form branch — they will simply
|
|
134
|
+
// not get host-case normalisation, which is acceptable: the raw
|
|
135
|
+
// `git config` output is still a valid fingerprint, just slightly
|
|
136
|
+
// less collapsible across host casings.
|
|
137
|
+
const sshMatch = normalised.match(/^(git@|[a-zA-Z0-9_-]+@)([^:/]+)(:.+)$/);
|
|
138
|
+
if (sshMatch) {
|
|
139
|
+
normalised = `${sshMatch[1]}${sshMatch[2].toLowerCase()}${sshMatch[3]}`;
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
const urlMatch = normalised.match(/^([a-zA-Z][a-zA-Z0-9+.-]*:\/\/)([^/]+)(\/.*)?$/);
|
|
143
|
+
if (urlMatch) {
|
|
144
|
+
normalised = `${urlMatch[1]}${urlMatch[2].toLowerCase()}${urlMatch[3] ?? ''}`;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return normalised;
|
|
148
|
+
};
|
|
149
|
+
exports.getRemoteUrl = getRemoteUrl;
|
|
150
|
+
/**
|
|
151
|
+
* Find the git repository root from any path inside the repo
|
|
152
|
+
*/
|
|
153
|
+
const getGitRoot = (fromPath) => {
|
|
154
|
+
const resolved = path_1.default.resolve(fromPath);
|
|
155
|
+
// Avoid git rev-parse --show-toplevel trimming trailing spaces from the
|
|
156
|
+
// repository root on Windows; callers that need identity keys canonicalize
|
|
157
|
+
// this value with realpath before comparing it.
|
|
158
|
+
if ((0, exports.hasGitDir)(resolved))
|
|
159
|
+
return resolved;
|
|
160
|
+
try {
|
|
161
|
+
const raw = chompGitOutput((0, child_process_1.execSync)('git rev-parse --show-toplevel', {
|
|
162
|
+
cwd: fromPath,
|
|
163
|
+
// Suppress stderr -- see getCurrentCommit comment and #1172.
|
|
164
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
165
|
+
windowsHide: true,
|
|
166
|
+
}));
|
|
167
|
+
// On Windows, git returns /d/Projects/Foo — path.resolve normalizes to D:\Projects\Foo
|
|
168
|
+
return path_1.default.resolve(raw);
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
return null;
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
exports.getGitRoot = getGitRoot;
|
|
175
|
+
/**
|
|
176
|
+
* Get the *canonical* repository root, dereferencing git worktrees.
|
|
177
|
+
*
|
|
178
|
+
* Unlike `getGitRoot` (which uses `git rev-parse --show-toplevel` and
|
|
179
|
+
* returns the WORKTREE's root when called inside a linked worktree),
|
|
180
|
+
* this uses `git rev-parse --git-common-dir` — the shared `.git`
|
|
181
|
+
* directory, identical for the main checkout and every linked
|
|
182
|
+
* worktree — and returns its parent.
|
|
183
|
+
*
|
|
184
|
+
* Why it matters (#1259): when `cgraph analyze` runs inside a
|
|
185
|
+
* worktree (e.g. `/repo/wt-feature/`), deriving `repoName` from
|
|
186
|
+
* `path.basename(getGitRoot(cwd))` registers the project under the
|
|
187
|
+
* worktree's directory slug (`wt-feature`) instead of the canonical
|
|
188
|
+
* repo's basename (`repo`). Each worktree then re-registers as a
|
|
189
|
+
* "different" project, AGENTS.md is rewritten with the wrong MCP URI,
|
|
190
|
+
* and Claude-Code-style worktree workflows silently accumulate
|
|
191
|
+
* duplicate registry entries.
|
|
192
|
+
*
|
|
193
|
+
* Returns `null` when the path is not inside a git repository or
|
|
194
|
+
* `git` is not available, so callers can chain safely:
|
|
195
|
+
* `getCanonicalRepoRoot(p) ?? getGitRoot(p) ?? p`.
|
|
196
|
+
*
|
|
197
|
+
* `--path-format=absolute` is required because `--git-common-dir`
|
|
198
|
+
* returns a path *relative to cwd* by default (e.g. `../.git` when
|
|
199
|
+
* called from a worktree), which would resolve to the wrong absolute
|
|
200
|
+
* path if the caller later resolved it from a different directory.
|
|
201
|
+
*/
|
|
202
|
+
const getCanonicalRepoRoot = (fromPath) => {
|
|
203
|
+
try {
|
|
204
|
+
const commonDir = chompGitOutput((0, child_process_1.execSync)('git rev-parse --path-format=absolute --git-common-dir', {
|
|
205
|
+
cwd: fromPath,
|
|
206
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
207
|
+
windowsHide: true,
|
|
208
|
+
}));
|
|
209
|
+
if (!commonDir)
|
|
210
|
+
return null;
|
|
211
|
+
// Common dir is `<repo>/.git` for both the main checkout and all
|
|
212
|
+
// linked worktrees. Its parent is the canonical repo root.
|
|
213
|
+
return path_1.default.dirname(path_1.default.resolve(commonDir));
|
|
214
|
+
}
|
|
215
|
+
catch {
|
|
216
|
+
return null;
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
exports.getCanonicalRepoRoot = getCanonicalRepoRoot;
|
|
220
|
+
// getGitInfoExcludePath/getCoreExcludesFilePath are called once per repo
|
|
221
|
+
// PER language/contract extractor during group sync (#2606) — an N-repo
|
|
222
|
+
// group fans out to 6+ extractors each calling these, so an uncached
|
|
223
|
+
// execSync per call turns into O(extractors × repos) blocking subprocess
|
|
224
|
+
// spawns. Both resolve to the same value for the same fromPath for the
|
|
225
|
+
// life of the process (git config/exclude files don't change mid-run), so
|
|
226
|
+
// memoize by fromPath. ponytail: process-lifetime cache, never invalidated
|
|
227
|
+
// — fine for one-shot CLI runs; the long-lived MCP server would need a
|
|
228
|
+
// TTL or explicit invalidation if a user edits core.excludesFile mid-session.
|
|
229
|
+
const gitInfoExcludePathCache = new Map();
|
|
230
|
+
const coreExcludesFilePathCache = new Map();
|
|
231
|
+
/**
|
|
232
|
+
* Path to the repo's `$GIT_COMMON_DIR/info/exclude` file — git's own
|
|
233
|
+
* per-repo, untracked exclude list (same tier as `.gitignore` in
|
|
234
|
+
* precedence, but never committed, so it works even when the caller has
|
|
235
|
+
* no write access to the repo's tracked content). Shared across every
|
|
236
|
+
* linked worktree of a repo, matching git's own resolution (#2606).
|
|
237
|
+
*
|
|
238
|
+
* Returns `null` when `fromPath` is not inside a git repository or `git`
|
|
239
|
+
* is unavailable; callers should treat that the same as "no file".
|
|
240
|
+
*/
|
|
241
|
+
const getGitInfoExcludePath = (fromPath) => {
|
|
242
|
+
const cached = gitInfoExcludePathCache.get(fromPath);
|
|
243
|
+
if (cached !== undefined)
|
|
244
|
+
return cached;
|
|
245
|
+
let result;
|
|
246
|
+
try {
|
|
247
|
+
const commonDir = chompGitOutput((0, child_process_1.execSync)('git rev-parse --path-format=absolute --git-common-dir', {
|
|
248
|
+
cwd: fromPath,
|
|
249
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
250
|
+
windowsHide: true,
|
|
251
|
+
}));
|
|
252
|
+
result = commonDir ? path_1.default.join(path_1.default.resolve(commonDir), 'info', 'exclude') : null;
|
|
253
|
+
}
|
|
254
|
+
catch {
|
|
255
|
+
result = null;
|
|
256
|
+
}
|
|
257
|
+
gitInfoExcludePathCache.set(fromPath, result);
|
|
258
|
+
return result;
|
|
259
|
+
};
|
|
260
|
+
exports.getGitInfoExcludePath = getGitInfoExcludePath;
|
|
261
|
+
/**
|
|
262
|
+
* Path to git's own global, all-repos ignore file: the value of
|
|
263
|
+
* `core.excludesFile` (any config scope — system/global/local, resolved
|
|
264
|
+
* the same way `git` itself would from `fromPath`), or git's documented
|
|
265
|
+
* default of `$XDG_CONFIG_HOME/git/ignore` when unset (gitignore(5)).
|
|
266
|
+
* Lowest-precedence source, mirroring git's own behavior (#2606).
|
|
267
|
+
*
|
|
268
|
+
* Never throws: an unset key or unavailable `git` falls through to the
|
|
269
|
+
* default path, which is always computable without `git`.
|
|
270
|
+
*/
|
|
271
|
+
const getCoreExcludesFilePath = (fromPath) => {
|
|
272
|
+
const cached = coreExcludesFilePathCache.get(fromPath);
|
|
273
|
+
if (cached !== undefined)
|
|
274
|
+
return cached;
|
|
275
|
+
let result;
|
|
276
|
+
try {
|
|
277
|
+
const configured = chompGitOutput((0, child_process_1.execSync)('git config --get --type=path core.excludesFile', {
|
|
278
|
+
cwd: fromPath,
|
|
279
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
280
|
+
windowsHide: true,
|
|
281
|
+
}));
|
|
282
|
+
if (configured)
|
|
283
|
+
result = configured;
|
|
284
|
+
}
|
|
285
|
+
catch {
|
|
286
|
+
// Unset, or git unavailable — fall through to git's documented default.
|
|
287
|
+
}
|
|
288
|
+
if (!result) {
|
|
289
|
+
const xdgConfigHome = process.env.XDG_CONFIG_HOME || path_1.default.join(os_1.default.homedir(), '.config');
|
|
290
|
+
result = path_1.default.join(xdgConfigHome, 'git', 'ignore');
|
|
291
|
+
}
|
|
292
|
+
coreExcludesFilePathCache.set(fromPath, result);
|
|
293
|
+
return result;
|
|
294
|
+
};
|
|
295
|
+
exports.getCoreExcludesFilePath = getCoreExcludesFilePath;
|
|
296
|
+
/**
|
|
297
|
+
* Resolve `fromPath` to the directory whose basename should drive the
|
|
298
|
+
* registry name (#1259) — the *identity root*. Three outcomes:
|
|
299
|
+
*
|
|
300
|
+
* 1. `fromPath` IS the canonical checkout root → returns it unchanged.
|
|
301
|
+
* 2. `fromPath` is a linked-worktree root (has its own `.git` entry, but
|
|
302
|
+
* `git rev-parse --git-common-dir` points at a different `.git`) →
|
|
303
|
+
* returns the canonical repo root.
|
|
304
|
+
* 3. `fromPath` is anything else — an arbitrary subdir under a git repo,
|
|
305
|
+
* a non-git folder, a plain-folder root of an unrelated parent
|
|
306
|
+
* checkout — returns `fromPath` unchanged.
|
|
307
|
+
*
|
|
308
|
+
* Why not just use `getCanonicalRepoRoot` directly? Because `git rev-parse
|
|
309
|
+
* --git-common-dir` resolves the same canonical root for ANY path inside
|
|
310
|
+
* a git repo, including unrelated subdirs. Using it for registry-name
|
|
311
|
+
* derivation would silently re-key a plain-folder subdir analyze under
|
|
312
|
+
* the parent git's basename, defeating the plain-folder intent
|
|
313
|
+
* (regressing the #1232/#1233 fix). The "is this path a tree root"
|
|
314
|
+
* gate confines the canonical-root collapse to exactly the cases where
|
|
315
|
+
* #1259 matters: main checkouts and linked worktrees.
|
|
316
|
+
*/
|
|
317
|
+
const resolveRepoIdentityRoot = (fromPath) => {
|
|
318
|
+
const resolved = path_1.default.resolve(fromPath);
|
|
319
|
+
const canonical = (0, exports.getCanonicalRepoRoot)(resolved);
|
|
320
|
+
if (!canonical)
|
|
321
|
+
return resolved; // non-git → use as-is
|
|
322
|
+
if (canonical === resolved)
|
|
323
|
+
return canonical; // canonical checkout
|
|
324
|
+
if ((0, exports.hasGitDir)(resolved))
|
|
325
|
+
return canonical; // linked worktree (has .git file)
|
|
326
|
+
return resolved; // arbitrary subdir under a git repo → preserve as-is
|
|
327
|
+
};
|
|
328
|
+
exports.resolveRepoIdentityRoot = resolveRepoIdentityRoot;
|
|
329
|
+
/**
|
|
330
|
+
* Find a git root by checking only `.git` entries on the ancestor chain.
|
|
331
|
+
*
|
|
332
|
+
* Unlike `getGitRoot`, this does not spawn `git`, so MCP can cheaply decide
|
|
333
|
+
* whether a launch cwd is a worktree before running any subprocess there.
|
|
334
|
+
*/
|
|
335
|
+
const findGitRootByDotGit = (fromPath) => {
|
|
336
|
+
let current = path_1.default.resolve(fromPath);
|
|
337
|
+
try {
|
|
338
|
+
if (!(0, fs_1.statSync)(current).isDirectory()) {
|
|
339
|
+
current = path_1.default.dirname(current);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
catch {
|
|
343
|
+
return null;
|
|
344
|
+
}
|
|
345
|
+
while (true) {
|
|
346
|
+
try {
|
|
347
|
+
(0, fs_1.statSync)(path_1.default.join(current, '.git'));
|
|
348
|
+
return current;
|
|
349
|
+
}
|
|
350
|
+
catch {
|
|
351
|
+
const parent = path_1.default.dirname(current);
|
|
352
|
+
if (parent === current)
|
|
353
|
+
return null;
|
|
354
|
+
current = parent;
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
};
|
|
358
|
+
exports.findGitRootByDotGit = findGitRootByDotGit;
|
|
359
|
+
/**
|
|
360
|
+
* Check whether a directory contains a .git entry (file or folder).
|
|
361
|
+
*
|
|
362
|
+
* This is intentionally a simple filesystem check rather than running
|
|
363
|
+
* `git rev-parse`, so it works even when git is not installed or when
|
|
364
|
+
* the directory is a git-worktree root (which has a .git file, not a
|
|
365
|
+
* directory). Use `isGitRepo` for a definitive git answer.
|
|
366
|
+
*
|
|
367
|
+
* @param dirPath - Absolute path to the directory to inspect.
|
|
368
|
+
* @returns `true` when `.git` is present, `false` otherwise.
|
|
369
|
+
*/
|
|
370
|
+
const hasGitDir = (dirPath) => {
|
|
371
|
+
try {
|
|
372
|
+
(0, fs_1.statSync)(path_1.default.join(dirPath, '.git'));
|
|
373
|
+
return true;
|
|
374
|
+
}
|
|
375
|
+
catch {
|
|
376
|
+
return false;
|
|
377
|
+
}
|
|
378
|
+
};
|
|
379
|
+
exports.hasGitDir = hasGitDir;
|
|
380
|
+
/**
|
|
381
|
+
* Read `remote.origin.url` from a git repository, or `null` if not a
|
|
382
|
+
* git repo, has no `origin` remote, or git is unavailable.
|
|
383
|
+
*
|
|
384
|
+
* Used by the registry-name inference path (#979) to recover a
|
|
385
|
+
* meaningful repo name when `path.basename(repoPath)` is generic
|
|
386
|
+
* (e.g. monorepo subprojects, git worktrees, Gas-Town-style
|
|
387
|
+
* `<rig>/refinery/rig/` layouts).
|
|
388
|
+
*/
|
|
389
|
+
const getRemoteOriginUrl = (repoPath) => {
|
|
390
|
+
try {
|
|
391
|
+
const url = (0, child_process_1.execSync)('git config --get remote.origin.url', {
|
|
392
|
+
cwd: repoPath,
|
|
393
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
394
|
+
windowsHide: true,
|
|
395
|
+
})
|
|
396
|
+
.toString()
|
|
397
|
+
.trim();
|
|
398
|
+
return url || null;
|
|
399
|
+
}
|
|
400
|
+
catch {
|
|
401
|
+
return null;
|
|
402
|
+
}
|
|
403
|
+
};
|
|
404
|
+
exports.getRemoteOriginUrl = getRemoteOriginUrl;
|
|
405
|
+
/**
|
|
406
|
+
* Best-effort detection of the repository's default branch (#243).
|
|
407
|
+
*
|
|
408
|
+
* Reads `git symbolic-ref --short refs/remotes/origin/HEAD`, which resolves to
|
|
409
|
+
* the short ref `origin/<branch>` that the local `origin/HEAD` points at, and
|
|
410
|
+
* strips the `origin/` prefix. This is a purely local lookup — it never makes a
|
|
411
|
+
* network call. Returns `null` when there is no git repo, no `origin` remote, no
|
|
412
|
+
* `origin/HEAD` (e.g. it was never set by clone, or the repo is detached), or
|
|
413
|
+
* git is unavailable, so callers can fall back to a configured/default branch.
|
|
414
|
+
*/
|
|
415
|
+
const getDefaultBranch = (repoPath) => {
|
|
416
|
+
try {
|
|
417
|
+
const ref = (0, child_process_1.execSync)('git symbolic-ref --short refs/remotes/origin/HEAD', {
|
|
418
|
+
cwd: repoPath,
|
|
419
|
+
// Suppress stderr -- see getCurrentCommit comment and #1172. Without it,
|
|
420
|
+
// git prints "fatal: ref refs/remotes/origin/HEAD is not a symbolic ref"
|
|
421
|
+
// to the user's terminal on repos that never set origin/HEAD.
|
|
422
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
423
|
+
windowsHide: true,
|
|
424
|
+
})
|
|
425
|
+
.toString()
|
|
426
|
+
.trim();
|
|
427
|
+
if (!ref)
|
|
428
|
+
return null;
|
|
429
|
+
return ref.startsWith('origin/') ? ref.slice('origin/'.length) : ref;
|
|
430
|
+
}
|
|
431
|
+
catch {
|
|
432
|
+
return null;
|
|
433
|
+
}
|
|
434
|
+
};
|
|
435
|
+
exports.getDefaultBranch = getDefaultBranch;
|
|
436
|
+
/**
|
|
437
|
+
* Name of the currently checked-out branch, or `null` when HEAD is detached
|
|
438
|
+
* (CI checkouts, `git checkout <sha>`), the directory is not a git worktree, or
|
|
439
|
+
* git is unavailable.
|
|
440
|
+
*
|
|
441
|
+
* `git rev-parse --abbrev-ref HEAD` prints the literal `HEAD` for a detached
|
|
442
|
+
* checkout. We map that (and empty output) to `null` so callers fall back to the
|
|
443
|
+
* flat/default index rather than ever creating a branch literally named
|
|
444
|
+
* "HEAD" (#2106).
|
|
445
|
+
*/
|
|
446
|
+
const getCurrentBranch = (repoPath) => {
|
|
447
|
+
try {
|
|
448
|
+
const branch = (0, child_process_1.execSync)('git rev-parse --abbrev-ref HEAD', {
|
|
449
|
+
cwd: repoPath,
|
|
450
|
+
// Suppress stderr -- see getCurrentCommit comment and #1172.
|
|
451
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
452
|
+
windowsHide: true,
|
|
453
|
+
})
|
|
454
|
+
.toString()
|
|
455
|
+
.trim();
|
|
456
|
+
if (!branch || branch === 'HEAD')
|
|
457
|
+
return null;
|
|
458
|
+
return branch;
|
|
459
|
+
}
|
|
460
|
+
catch {
|
|
461
|
+
return null;
|
|
462
|
+
}
|
|
463
|
+
};
|
|
464
|
+
exports.getCurrentBranch = getCurrentBranch;
|
|
465
|
+
/**
|
|
466
|
+
* Sanitize a repository name to prevent argument injection and ensure
|
|
467
|
+
* cross-platform filesystem compatibility.
|
|
468
|
+
*
|
|
469
|
+
* 1. Strips leading dashes to prevent git command-line argument injection
|
|
470
|
+
* (e.g., --upload-pack=evil).
|
|
471
|
+
* 2. Replaces characters that are unsafe for directory names across
|
|
472
|
+
* platforms (Windows/macOS/Linux) with underscores.
|
|
473
|
+
* 3. Blocks path traversal segments ("." and "..") and Windows reserved
|
|
474
|
+
* names (e.g., CON, NUL) to prevent directory escape.
|
|
475
|
+
*/
|
|
476
|
+
const sanitizeRepoName = (name) => {
|
|
477
|
+
// 1. Prevent argument injection by stripping leading dashes.
|
|
478
|
+
// 2. Remove characters that are not alphanumerics, dots, underscores, or dashes.
|
|
479
|
+
const sanitized = name.replace(/^-+/, '').replace(/[^a-zA-Z0-9._-]/g, '_');
|
|
480
|
+
// 3. Block path traversal segments and Windows reserved names.
|
|
481
|
+
// Windows reserved names like CON, PRN, AUX, NUL, COM1-9, LPT1-9 cannot
|
|
482
|
+
// be used as directory names on Windows even if they have an extension.
|
|
483
|
+
const reserved = /^(CON|PRN|AUX|NUL|COM[1-9]|LPT[1-9])(\..*)?$/i;
|
|
484
|
+
if (!sanitized || sanitized === '.' || sanitized === '..' || reserved.test(sanitized)) {
|
|
485
|
+
return 'unknown';
|
|
486
|
+
}
|
|
487
|
+
return sanitized;
|
|
488
|
+
};
|
|
489
|
+
exports.sanitizeRepoName = sanitizeRepoName;
|
|
490
|
+
/**
|
|
491
|
+
* Parse a repository name out of a git remote URL. Handles common shapes
|
|
492
|
+
* including SSH (git@host:owner/repo.git) and HTTPS (https://host/owner/repo.git).
|
|
493
|
+
*
|
|
494
|
+
* Returns a sanitized, filesystem-safe name or null if no name could be inferred.
|
|
495
|
+
* Returning null (rather than 'unknown') allows callers to use ?? null-coalescing
|
|
496
|
+
* for fallbacks without risk of registry collisions on 'unknown'.
|
|
497
|
+
*/
|
|
498
|
+
const parseRepoNameFromUrl = (url) => {
|
|
499
|
+
if (!url)
|
|
500
|
+
return null;
|
|
501
|
+
const trimmed = url.trim();
|
|
502
|
+
if (!trimmed)
|
|
503
|
+
return null;
|
|
504
|
+
// Strip trailing slashes without a regex to avoid polynomial-ReDoS on
|
|
505
|
+
// pathological inputs like `https://x.com/y` + '/'.repeat(1e6).
|
|
506
|
+
let end = trimmed.length;
|
|
507
|
+
while (end > 0 && trimmed.charCodeAt(end - 1) === 47 /* '/' */)
|
|
508
|
+
end--;
|
|
509
|
+
let cleaned = trimmed.slice(0, end);
|
|
510
|
+
// Strip trailing .git (case-insensitive)
|
|
511
|
+
if (cleaned.toLowerCase().endsWith('.git')) {
|
|
512
|
+
cleaned = cleaned.slice(0, -4);
|
|
513
|
+
}
|
|
514
|
+
// Last path segment, handling colons for SSH URLs and path traversal.
|
|
515
|
+
// Split on both / and : to consistently extract the last part.
|
|
516
|
+
const candidate = cleaned.split(/[/:]/).pop() || '';
|
|
517
|
+
if (!candidate)
|
|
518
|
+
return null;
|
|
519
|
+
const safe = (0, exports.sanitizeRepoName)(candidate);
|
|
520
|
+
return safe === 'unknown' ? null : safe;
|
|
521
|
+
};
|
|
522
|
+
exports.parseRepoNameFromUrl = parseRepoNameFromUrl;
|
|
523
|
+
/**
|
|
524
|
+
* Convenience wrapper: derive a registry-friendly name from the repo's
|
|
525
|
+
* `origin` remote, or `null` when it cannot be inferred.
|
|
526
|
+
*/
|
|
527
|
+
const getInferredRepoName = (repoPath) => {
|
|
528
|
+
return (0, exports.parseRepoNameFromUrl)((0, exports.getRemoteOriginUrl)(repoPath));
|
|
529
|
+
};
|
|
530
|
+
exports.getInferredRepoName = getInferredRepoName;
|
|
531
|
+
/**
|
|
532
|
+
* Parse unified diff output (with -U0) into per-file hunk ranges.
|
|
533
|
+
* Extracts the new-file line ranges from @@ hunk headers.
|
|
534
|
+
*/
|
|
535
|
+
function parseDiffHunks(diffOutput) {
|
|
536
|
+
const files = [];
|
|
537
|
+
let current = null;
|
|
538
|
+
for (const line of diffOutput.split('\n')) {
|
|
539
|
+
if (line.startsWith('+++ b/')) {
|
|
540
|
+
current = { filePath: line.slice(6), hunks: [] };
|
|
541
|
+
files.push(current);
|
|
542
|
+
}
|
|
543
|
+
else if (line.startsWith('@@') && current) {
|
|
544
|
+
const match = line.match(/@@ -\d+(?:,\d+)? \+(\d+)(?:,(\d+))? @@/);
|
|
545
|
+
if (match) {
|
|
546
|
+
const start = parseInt(match[1], 10);
|
|
547
|
+
const count = match[2] !== undefined ? parseInt(match[2], 10) : 1;
|
|
548
|
+
if (count > 0) {
|
|
549
|
+
current.hunks.push({ startLine: start, endLine: start + count - 1 });
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
return files;
|
|
555
|
+
}
|