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,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isOverloadableCallable = isOverloadableCallable;
|
|
4
|
+
exports.isPositionQualifiedLocalLabel = isPositionQualifiedLocalLabel;
|
|
5
|
+
/**
|
|
6
|
+
* Callables whose same-name overloads occupy distinct graph nodes keyed by
|
|
7
|
+
* parameter types / shape. Shared by graph-bridge registration (`node-lookup.ts`)
|
|
8
|
+
* and resolution (`ids.ts`) so overload keys stay aligned.
|
|
9
|
+
*
|
|
10
|
+
* Constructors belong here: a class with `Foo()` and `Foo(int)` mints distinct
|
|
11
|
+
* `#0`/`#1` Constructor nodes, and a `: this(...)` / `: base(...)` (C#),
|
|
12
|
+
* `this(...)`/`super(...)` (Java), or `new Foo(args)` edge must reach the
|
|
13
|
+
* right overload — otherwise both ctor nodes collapse onto the first-wins
|
|
14
|
+
* qualified/simple key and a ctor chain becomes a self-loop (#1928 F38 / #2046).
|
|
15
|
+
*/
|
|
16
|
+
function isOverloadableCallable(label) {
|
|
17
|
+
return label === 'Function' || label === 'Method' || label === 'Constructor';
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Labels whose FUNCTION-LOCAL declarations carry the enclosing-callable +
|
|
21
|
+
* position identity of #2699 (`Function:x.ts:run.save@3:2`).
|
|
22
|
+
*
|
|
23
|
+
* Wider than {@link isOverloadableCallable} on purpose. #2695 restricted the
|
|
24
|
+
* rule to callables because the collision that produced wrong CALLS edges was
|
|
25
|
+
* between callables, and widening churned ids for symbols the local-symbol
|
|
26
|
+
* pruner mostly deletes. But the issue's ORIGINAL complaint was about values:
|
|
27
|
+
* a top-level `const handler` and a function-local `const handler` collapsed
|
|
28
|
+
* onto one `Const:v.ts:handler`, and no callable gate ever reaches that. The
|
|
29
|
+
* limitation is closed here rather than carried.
|
|
30
|
+
*
|
|
31
|
+
* Only LOCALS are affected either way: the prefix comes from
|
|
32
|
+
* `enclosingCallablePrefix`, which returns `undefined` when nothing encloses
|
|
33
|
+
* the declaration, so top-level and class-member ids are untouched — that is
|
|
34
|
+
* what keeps this off the symbols other files and stored references address.
|
|
35
|
+
* A class field stays unqualified even inside a function, because the prefix
|
|
36
|
+
* walk boundaries on class-likes.
|
|
37
|
+
*
|
|
38
|
+
* ONE definition, deliberately: the id-building phase and the resolution phase
|
|
39
|
+
* must agree on this set or the caller attaches to a node that does not exist
|
|
40
|
+
* and the edge is silently dropped — the failure mode #2714 fixed, invisible
|
|
41
|
+
* from outside because "zero dangling edges" is what it looks like.
|
|
42
|
+
*/
|
|
43
|
+
function isPositionQualifiedLocalLabel(label) {
|
|
44
|
+
return (isOverloadableCallable(label) ||
|
|
45
|
+
label === 'Variable' ||
|
|
46
|
+
label === 'Const' ||
|
|
47
|
+
label === 'Property' ||
|
|
48
|
+
label === 'Static');
|
|
49
|
+
}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Wall-clock logging for the post-chunk deferred resolution band
|
|
4
|
+
* (imports → heritage → heritage map → legacy call resolution).
|
|
5
|
+
*
|
|
6
|
+
* Enabled when either:
|
|
7
|
+
* - `CGRAPH_VERBOSE=1` / `cgraph analyze -v` (primary path for #1741), or
|
|
8
|
+
* - `CGRAPH_PROFILE_DEFERRED=1` (force on without full verbose ingestion noise)
|
|
9
|
+
*
|
|
10
|
+
* Issue #1741: large Java/Kotlin repos appear stuck at "Resolving calls"
|
|
11
|
+
* because the UI progress bar updates every 100 files and intermediate
|
|
12
|
+
* stages emit little to the log.
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.endTimer = exports.startTimer = exports.logDeferredProfile = exports.resetDeferredProfileDroppedCount = exports.getDeferredProfileDroppedCount = exports.profileElapsedMs = exports.profileNow = exports.alwaysOnSlowFileWarnMs = exports.deferredCallFileSlowMs = exports.deferredCallLogEveryN = exports.isDeferredResolutionProfileEnabled = exports.ALWAYS_ON_SLOW_FILE_WARN_THROTTLE_MS = void 0;
|
|
16
|
+
const logger_js_1 = require("../../logger.js");
|
|
17
|
+
const env_js_1 = require("./env.js");
|
|
18
|
+
const verbose_js_1 = require("./verbose.js");
|
|
19
|
+
// Module-private tuning constants for the gates below. Not exported — these
|
|
20
|
+
// are internal knobs, not part of the module's API surface.
|
|
21
|
+
const LOG_EVERY_N_VERBOSE = 10;
|
|
22
|
+
const LOG_EVERY_N_PROFILE = 100;
|
|
23
|
+
const DEFAULT_SLOW_MS_VERBOSE = 3_000;
|
|
24
|
+
const DEFAULT_SLOW_MS = 5_000;
|
|
25
|
+
/**
|
|
26
|
+
* Always-on (NOT gated on verbose/profile) threshold above which a single
|
|
27
|
+
* file's deferred call resolution earns a `logger.warn`. The verbose
|
|
28
|
+
* slow-file profile (above) only fires with `-v`/`CGRAPH_PROFILE_DEFERRED`;
|
|
29
|
+
* a plain `analyze` run that hangs in "Resolving calls" (the #1741 symptom)
|
|
30
|
+
* gives the user a frozen progress bar and nothing in the log. This higher
|
|
31
|
+
* default (15s — never hit by a healthy file) turns that silence into one
|
|
32
|
+
* actionable line naming the expensive file. Override via
|
|
33
|
+
* `CGRAPH_SLOW_FILE_WARN_MS`; the throttle in the caller bounds volume.
|
|
34
|
+
*/
|
|
35
|
+
const DEFAULT_ALWAYS_ON_SLOW_FILE_WARN_MS = 15_000;
|
|
36
|
+
/** Min wall-clock gap between always-on slow-file warnings (throttle). */
|
|
37
|
+
exports.ALWAYS_ON_SLOW_FILE_WARN_THROTTLE_MS = 30_000;
|
|
38
|
+
/** True when deferred-stage timing / progress logs should emit. */
|
|
39
|
+
const isDeferredResolutionProfileEnabled = () => (0, verbose_js_1.isVerboseIngestionEnabled)() || (0, env_js_1.parseTruthyEnv)(process.env.CGRAPH_PROFILE_DEFERRED);
|
|
40
|
+
exports.isDeferredResolutionProfileEnabled = isDeferredResolutionProfileEnabled;
|
|
41
|
+
/** Log a call-resolution progress line every N files (finer when verbose). */
|
|
42
|
+
const deferredCallLogEveryN = () => (0, verbose_js_1.isVerboseIngestionEnabled)() ? LOG_EVERY_N_VERBOSE : LOG_EVERY_N_PROFILE;
|
|
43
|
+
exports.deferredCallLogEveryN = deferredCallLogEveryN;
|
|
44
|
+
/** Per-file call-resolution log threshold (ms). Lower default when verbose. */
|
|
45
|
+
const deferredCallFileSlowMs = () => {
|
|
46
|
+
const raw = process.env.CGRAPH_PROFILE_DEFERRED_SLOW_MS;
|
|
47
|
+
if (raw) {
|
|
48
|
+
// Use Number() not parseInt: parseInt('1e9', 10) === 1 (prefix-parses, drops the exponent),
|
|
49
|
+
// which would turn a user-intended "effectively disabled" threshold into a 1 ms log storm.
|
|
50
|
+
const n = Number(raw);
|
|
51
|
+
if (Number.isFinite(n) && n > 0)
|
|
52
|
+
return n;
|
|
53
|
+
}
|
|
54
|
+
return (0, verbose_js_1.isVerboseIngestionEnabled)() ? DEFAULT_SLOW_MS_VERBOSE : DEFAULT_SLOW_MS;
|
|
55
|
+
};
|
|
56
|
+
exports.deferredCallFileSlowMs = deferredCallFileSlowMs;
|
|
57
|
+
/**
|
|
58
|
+
* Always-on per-file slow threshold (ms) for the `logger.warn` watchdog in
|
|
59
|
+
* `processCallsFromExtracted`. Unlike {@link deferredCallFileSlowMs} this is
|
|
60
|
+
* NOT gated on verbose/profile — it fires on every run. `0` (or a negative /
|
|
61
|
+
* non-finite override) disables the watchdog entirely. Override via
|
|
62
|
+
* `CGRAPH_SLOW_FILE_WARN_MS`.
|
|
63
|
+
*/
|
|
64
|
+
const alwaysOnSlowFileWarnMs = () => {
|
|
65
|
+
const raw = process.env.CGRAPH_SLOW_FILE_WARN_MS;
|
|
66
|
+
if (raw !== undefined) {
|
|
67
|
+
const n = Number(raw);
|
|
68
|
+
// 0 / negative / NaN → disabled. Use Number() not parseInt (see
|
|
69
|
+
// deferredCallFileSlowMs for the '1e9' prefix-parse hazard).
|
|
70
|
+
return Number.isFinite(n) && n > 0 ? n : 0;
|
|
71
|
+
}
|
|
72
|
+
return DEFAULT_ALWAYS_ON_SLOW_FILE_WARN_MS;
|
|
73
|
+
};
|
|
74
|
+
exports.alwaysOnSlowFileWarnMs = alwaysOnSlowFileWarnMs;
|
|
75
|
+
const profileNow = () => process.hrtime.bigint();
|
|
76
|
+
exports.profileNow = profileNow;
|
|
77
|
+
const profileElapsedMs = (start) => Number(process.hrtime.bigint() - start) / 1e6;
|
|
78
|
+
exports.profileElapsedMs = profileElapsedMs;
|
|
79
|
+
// Module-private counter for `[deferred-profile]` log lines the underlying
|
|
80
|
+
// logger refused to accept. Pino's SonicBoom transport is sync:false today,
|
|
81
|
+
// so steady-state `logger.info(string)` calls don't throw — but first-use
|
|
82
|
+
// construction paths (pino-pretty resolve, level validation) and any future
|
|
83
|
+
// transport reconfiguration could. The wrap below catches and counts so a
|
|
84
|
+
// failing logger cannot abort the deferred band, and the count surfaces in
|
|
85
|
+
// the deferred-band done-summary (see processCallsFromExtracted) so the
|
|
86
|
+
// failure is visible rather than silently swallowed (DoD §2.8).
|
|
87
|
+
let droppedLogLines = 0;
|
|
88
|
+
/**
|
|
89
|
+
* Number of `logDeferredProfile` calls whose underlying `logger.info` threw.
|
|
90
|
+
* Surfaced in the deferred-band done-summary when greater than zero.
|
|
91
|
+
*/
|
|
92
|
+
const getDeferredProfileDroppedCount = () => droppedLogLines;
|
|
93
|
+
exports.getDeferredProfileDroppedCount = getDeferredProfileDroppedCount;
|
|
94
|
+
/**
|
|
95
|
+
* Reset the dropped-line counter. Call from test `afterEach` to keep the
|
|
96
|
+
* module-private state from leaking across tests. Also used inside
|
|
97
|
+
* `processCallsFromExtracted` at function entry so each analyze run gets
|
|
98
|
+
* a fresh count rather than accumulating across the process lifetime.
|
|
99
|
+
*/
|
|
100
|
+
const resetDeferredProfileDroppedCount = () => {
|
|
101
|
+
droppedLogLines = 0;
|
|
102
|
+
};
|
|
103
|
+
exports.resetDeferredProfileDroppedCount = resetDeferredProfileDroppedCount;
|
|
104
|
+
const logDeferredProfile = (message) => {
|
|
105
|
+
try {
|
|
106
|
+
logger_js_1.logger.info(`[deferred-profile] ${message}`);
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
// Do not call the failing logger from the handler — that would risk
|
|
110
|
+
// an infinite loop if the failure mode is steady-state. Just count.
|
|
111
|
+
droppedLogLines++;
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
exports.logDeferredProfile = logDeferredProfile;
|
|
115
|
+
/**
|
|
116
|
+
* Capture a monotonic timestamp when profiling is enabled; otherwise return null.
|
|
117
|
+
* Pair with `endTimer` so the type system narrows correctly — using `null` instead
|
|
118
|
+
* of a `0n` sentinel makes "profiling disabled" structurally distinct from
|
|
119
|
+
* "zero elapsed time" and lets TypeScript catch missing guards.
|
|
120
|
+
*/
|
|
121
|
+
const startTimer = (enabled) => enabled ? process.hrtime.bigint() : null;
|
|
122
|
+
exports.startTimer = startTimer;
|
|
123
|
+
/**
|
|
124
|
+
* Emit a `[deferred-profile]` log line for a captured timer. No-op when the
|
|
125
|
+
* timer is `null` (profiling was disabled at capture time). The formatter
|
|
126
|
+
* receives elapsed ms so the call sites stay readable.
|
|
127
|
+
*
|
|
128
|
+
* The format callback runs inside a try/catch so a throwing formatter
|
|
129
|
+
* (custom toString, JSON.stringify on a circular object) cannot abort the
|
|
130
|
+
* deferred resolution band — observability code must never escalate to a
|
|
131
|
+
* load-bearing failure. On catch we emit a single `formatter error: …`
|
|
132
|
+
* line via logDeferredProfile and return; the caller's stage continues
|
|
133
|
+
* as if profiling had no-op'd for this timer. DoD §2.8 ("no silent
|
|
134
|
+
* catches that swallow diagnostics") is satisfied by surfacing the
|
|
135
|
+
* failure message rather than dropping it.
|
|
136
|
+
*/
|
|
137
|
+
const endTimer = (start, format) => {
|
|
138
|
+
if (start === null)
|
|
139
|
+
return;
|
|
140
|
+
const elapsedMs = (0, exports.profileElapsedMs)(start);
|
|
141
|
+
let message;
|
|
142
|
+
try {
|
|
143
|
+
message = format(elapsedMs);
|
|
144
|
+
}
|
|
145
|
+
catch (err) {
|
|
146
|
+
(0, exports.logDeferredProfile)(`formatter error: ${err instanceof Error ? err.message : String(err)}`);
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
(0, exports.logDeferredProfile)(message);
|
|
150
|
+
};
|
|
151
|
+
exports.endTimer = endTimer;
|
|
@@ -0,0 +1,67 @@
|
|
|
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.effectiveRamBytes = effectiveRamBytes;
|
|
7
|
+
exports.heapCapMbFor = heapCapMbFor;
|
|
8
|
+
exports.memoryAutopilotDisabled = memoryAutopilotDisabled;
|
|
9
|
+
exports.autoHeapCapMb = autoHeapCapMb;
|
|
10
|
+
const node_os_1 = __importDefault(require("node:os"));
|
|
11
|
+
/**
|
|
12
|
+
* Effective RAM in bytes: physical total, or a REAL smaller cgroup limit
|
|
13
|
+
* (#2649). `process.constrainedMemory()` returns a huge sentinel when
|
|
14
|
+
* unconstrained, and only the leaf cgroup's limit is visible (parent-slice
|
|
15
|
+
* caps are not) — so a smaller-than-physical value is trusted and anything
|
|
16
|
+
* else falls back to `os.totalmem()`. Mirrors `computeHeapCapMb`'s
|
|
17
|
+
* constrained handling in `cli/analyze.ts`; container-blind sizing told
|
|
18
|
+
* users "this machine has more memory" inside an 8GB-limited container on
|
|
19
|
+
* a 64GB host, and sized worker heap caps past the whole container.
|
|
20
|
+
*/
|
|
21
|
+
function effectiveRamBytes() {
|
|
22
|
+
const total = node_os_1.default.totalmem();
|
|
23
|
+
const constrained = typeof process.constrainedMemory === 'function' ? process.constrainedMemory() : undefined;
|
|
24
|
+
return typeof constrained === 'number' && constrained > 0 && constrained < total
|
|
25
|
+
? constrained
|
|
26
|
+
: total;
|
|
27
|
+
}
|
|
28
|
+
/** Historical floor for the auto heap cap — applied only up to 0.80 × RAM
|
|
29
|
+
* (a floor at or above physical memory swap-thrashes instead of OOMing,
|
|
30
|
+
* #2649). */
|
|
31
|
+
const HEAP_FLOOR_MB = 16384;
|
|
32
|
+
/**
|
|
33
|
+
* The RAM-aware heap cap formula (#2649), single-sourced here so the CLI
|
|
34
|
+
* respawn (`computeHeapCapMb` in `cli/analyze.ts`), and the server's
|
|
35
|
+
* analyze fork size from the same rule: `0.75 × effective RAM`, raised to
|
|
36
|
+
* the floor when RAM allows, never above `0.80 × effective RAM`.
|
|
37
|
+
*/
|
|
38
|
+
function heapCapMbFor(effectiveBytes) {
|
|
39
|
+
const effectiveMb = Math.floor(effectiveBytes / (1024 * 1024));
|
|
40
|
+
return Math.min(Math.max(HEAP_FLOOR_MB, Math.floor(0.75 * effectiveMb)), Math.floor(0.8 * effectiveMb));
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* True when the operator has turned GitNexus's memory autopilot off
|
|
44
|
+
* (`CGRAPH_MEMORY=off`).
|
|
45
|
+
*
|
|
46
|
+
* One switch for one concern. Memory management has two automatic behaviours —
|
|
47
|
+
* re-running analyze with a RAM-aware heap cap, and aborting the parse before
|
|
48
|
+
* V8's ineffective-mark-compact death spiral — and an operator who wants to
|
|
49
|
+
* drive manually wants both off, not one. They were previously two separate
|
|
50
|
+
* variables (`CGRAPH_AUTO_HEAP`, `CGRAPH_HEAP_GUARD`), which is three knobs
|
|
51
|
+
* for one intent once the worker-heap override is counted; neither had shipped,
|
|
52
|
+
* so this consolidates them rather than deprecating anything.
|
|
53
|
+
*
|
|
54
|
+
* Note the ordinary way to pin the heap is Node's own `--max-old-space-size`,
|
|
55
|
+
* which `ensureHeap` already honours as the operator's decision. This switch is
|
|
56
|
+
* for declining the autopilot WITHOUT naming a size.
|
|
57
|
+
*
|
|
58
|
+
* Lives here beside the cap formula so policy and its escape hatch are
|
|
59
|
+
* single-sourced. Read every call (not memoized) so tests can stub the env.
|
|
60
|
+
*/
|
|
61
|
+
function memoryAutopilotDisabled() {
|
|
62
|
+
return process.env.CGRAPH_MEMORY === 'off';
|
|
63
|
+
}
|
|
64
|
+
/** The cap for THIS machine/container: `heapCapMbFor(effectiveRamBytes())`. */
|
|
65
|
+
function autoHeapCapMb() {
|
|
66
|
+
return heapCapMbFor(effectiveRamBytes());
|
|
67
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Environment constants shared across the ingestion module.
|
|
4
|
+
*
|
|
5
|
+
* Centralizes `isDev` so every file in `ingestion/` imports from
|
|
6
|
+
* one canonical location rather than re-declaring the check.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.isSemanticModelValidatorEnabled = exports.parsePositiveIntEnv = exports.parseTruthyEnv = exports.isDev = void 0;
|
|
12
|
+
/** Whether we're running in development mode (enables verbose console logging). */
|
|
13
|
+
exports.isDev = process.env.NODE_ENV === 'development';
|
|
14
|
+
/**
|
|
15
|
+
* Parse a narrow-form truthy env-var value. Accepts `'1'`, `'true'`, `'yes'`
|
|
16
|
+
* (case-insensitive, whitespace-trimmed). Anything else — including
|
|
17
|
+
* `undefined`, empty string, `'0'`, `'false'`, `'no'`, or unknown tokens —
|
|
18
|
+
* returns `false`.
|
|
19
|
+
*
|
|
20
|
+
* This is the shared helper for narrow-form truthy parsing across the
|
|
21
|
+
* ingestion module. `logger.ts` uses a broader negative-list form
|
|
22
|
+
* (`isTruthyEnv`) that intentionally accepts anything except a small set of
|
|
23
|
+
* falsy tokens — that lives separately because it follows pino-debug
|
|
24
|
+
* conventions and serves a different purpose.
|
|
25
|
+
*/
|
|
26
|
+
const parseTruthyEnv = (raw) => {
|
|
27
|
+
if (raw === undefined)
|
|
28
|
+
return false;
|
|
29
|
+
const value = raw.trim().toLowerCase();
|
|
30
|
+
return value === '1' || value === 'true' || value === 'yes';
|
|
31
|
+
};
|
|
32
|
+
exports.parseTruthyEnv = parseTruthyEnv;
|
|
33
|
+
/**
|
|
34
|
+
* Parse a positive-integer env-var value. Returns the integer when `raw` is a
|
|
35
|
+
* finite integer `> 0`; otherwise (`undefined`, empty, non-numeric, `0`, or
|
|
36
|
+
* negative) returns `undefined` so the caller falls back to its default. Used
|
|
37
|
+
* for numeric tuning knobs like `CGRAPH_PDG_EMIT_CHUNK_SIZE` (#2202).
|
|
38
|
+
*/
|
|
39
|
+
const parsePositiveIntEnv = (raw) => {
|
|
40
|
+
if (raw === undefined)
|
|
41
|
+
return undefined;
|
|
42
|
+
const n = Number(raw.trim());
|
|
43
|
+
return Number.isInteger(n) && n > 0 ? n : undefined;
|
|
44
|
+
};
|
|
45
|
+
exports.parsePositiveIntEnv = parsePositiveIntEnv;
|
|
46
|
+
/**
|
|
47
|
+
* Whether scope-resolution dev validators (e.g. `validateBindingsImmutability`)
|
|
48
|
+
* should run AND emit warnings. Off by default in CLI runs to avoid silent
|
|
49
|
+
* O(n) scans on large repos; on in `NODE_ENV=development` or when explicitly
|
|
50
|
+
* opted-in via `VALIDATE_SEMANTIC_MODEL=1`. `VALIDATE_SEMANTIC_MODEL=0` is the
|
|
51
|
+
* explicit off switch and wins over both.
|
|
52
|
+
*
|
|
53
|
+
* Read every call (not memoized) so test setups using `vi.stubEnv` work.
|
|
54
|
+
*/
|
|
55
|
+
const isSemanticModelValidatorEnabled = () => {
|
|
56
|
+
if (process.env.VALIDATE_SEMANTIC_MODEL === '0')
|
|
57
|
+
return false;
|
|
58
|
+
return process.env.NODE_ENV === 'development' || process.env.VALIDATE_SEMANTIC_MODEL === '1';
|
|
59
|
+
};
|
|
60
|
+
exports.isSemanticModelValidatorEnabled = isSemanticModelValidatorEnabled;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.yieldToEventLoop = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Yield control to the event loop so spinners/progress can render.
|
|
6
|
+
* Call periodically in hot loops to prevent UI freezes.
|
|
7
|
+
*/
|
|
8
|
+
const yieldToEventLoop = () => new Promise((resolve) => setImmediate(resolve));
|
|
9
|
+
exports.yieldToEventLoop = yieldToEventLoop;
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Topological level sort for file-level import graphs.
|
|
4
|
+
*
|
|
5
|
+
* Groups files into topological levels where files within the same level
|
|
6
|
+
* have no mutual import dependencies and can be processed in parallel.
|
|
7
|
+
* Files involved in import cycles are appended as a final group and
|
|
8
|
+
* processed last in an undefined order (best-effort propagation).
|
|
9
|
+
*
|
|
10
|
+
* Used by cross-file binding propagation to process files in the correct
|
|
11
|
+
* order — upstream exports must be resolved before downstream importers.
|
|
12
|
+
*
|
|
13
|
+
* @module
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.topologicalLevelSort = topologicalLevelSort;
|
|
17
|
+
/**
|
|
18
|
+
* Groups files by topological level using Kahn's algorithm on the **reverse**
|
|
19
|
+
* import graph.
|
|
20
|
+
*
|
|
21
|
+
* Files in the same level have no mutual dependencies — safe to process in parallel.
|
|
22
|
+
* Files involved in import cycles are appended as a final level and processed
|
|
23
|
+
* last in an undefined order (best-effort propagation, no ordering guarantees).
|
|
24
|
+
*
|
|
25
|
+
* ## Why the counter is named `pendingImportsPerFile` (not `inDegree`)
|
|
26
|
+
*
|
|
27
|
+
* Cross-file binding propagation must process **leaves first** — a file's
|
|
28
|
+
* imports must be resolved before the file itself is re-resolved. To get
|
|
29
|
+
* leaves first from Kahn's algorithm, we run Kahn's on the **reverse** of
|
|
30
|
+
* the import graph:
|
|
31
|
+
*
|
|
32
|
+
* - `importMap` is `importer → {imports}` (forward edges point at deps).
|
|
33
|
+
* - The reverse graph has edges `dep → {importers}`, materialized in
|
|
34
|
+
* `reverseDeps`.
|
|
35
|
+
* - On the reverse graph, "in-degree of node X" equals "number of imports X
|
|
36
|
+
* has in the forward graph" — i.e. X's forward **out-degree**.
|
|
37
|
+
*
|
|
38
|
+
* So `pendingImportsPerFile.get(file)` counts how many of `file`'s imports
|
|
39
|
+
* are still un-emitted. A file is ready (level 0 / appended to `currentLevel`)
|
|
40
|
+
* once all its imports have been emitted in earlier levels — that is, once
|
|
41
|
+
* its pending-imports count drops to 0. Pairing this counter with
|
|
42
|
+
* `reverseDeps` (dep → importers) is the standard Kahn's-on-the-reverse-graph
|
|
43
|
+
* formulation; it is **not** a bug to be "fixed" by counting forward
|
|
44
|
+
* in-degree (importers per file).
|
|
45
|
+
*
|
|
46
|
+
* **Do not rename this back to `inDegree` and do not invert the counting
|
|
47
|
+
* direction.** Doing either flips the emission order from leaves-first to
|
|
48
|
+
* roots-first, which silently breaks cross-file binding propagation
|
|
49
|
+
* (downstream files would be re-resolved before their upstream exports
|
|
50
|
+
* are available).
|
|
51
|
+
*
|
|
52
|
+
* @param importMap Map of file → set of files it imports (forward graph)
|
|
53
|
+
* @returns Levels (topologically ordered groups, leaves first)
|
|
54
|
+
* and count of files in cycles
|
|
55
|
+
*/
|
|
56
|
+
function topologicalLevelSort(importMap) {
|
|
57
|
+
// Per-file count of imports that have not yet been emitted in an earlier
|
|
58
|
+
// level. See JSDoc above for why this is **not** standard `inDegree`.
|
|
59
|
+
const pendingImportsPerFile = new Map();
|
|
60
|
+
const reverseDeps = new Map();
|
|
61
|
+
for (const [file, deps] of importMap) {
|
|
62
|
+
if (!pendingImportsPerFile.has(file))
|
|
63
|
+
pendingImportsPerFile.set(file, 0);
|
|
64
|
+
for (const dep of deps) {
|
|
65
|
+
if (!pendingImportsPerFile.has(dep))
|
|
66
|
+
pendingImportsPerFile.set(dep, 0);
|
|
67
|
+
pendingImportsPerFile.set(file, (pendingImportsPerFile.get(file) ?? 0) + 1);
|
|
68
|
+
let rev = reverseDeps.get(dep);
|
|
69
|
+
if (!rev) {
|
|
70
|
+
rev = [];
|
|
71
|
+
reverseDeps.set(dep, rev);
|
|
72
|
+
}
|
|
73
|
+
rev.push(file);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
const levels = [];
|
|
77
|
+
// Level 0: files with no un-emitted imports (true leaves of the import graph).
|
|
78
|
+
let currentLevel = [...pendingImportsPerFile.entries()]
|
|
79
|
+
.filter(([, d]) => d === 0)
|
|
80
|
+
.map(([f]) => f);
|
|
81
|
+
while (currentLevel.length > 0) {
|
|
82
|
+
levels.push(currentLevel);
|
|
83
|
+
const nextLevel = [];
|
|
84
|
+
for (const file of currentLevel) {
|
|
85
|
+
// For each importer of `file`, one of its pending imports just got
|
|
86
|
+
// emitted — decrement the importer's pending count. If it hits 0,
|
|
87
|
+
// the importer is ready for the next level.
|
|
88
|
+
for (const dependent of reverseDeps.get(file) ?? []) {
|
|
89
|
+
const newPending = (pendingImportsPerFile.get(dependent) ?? 1) - 1;
|
|
90
|
+
pendingImportsPerFile.set(dependent, newPending);
|
|
91
|
+
if (newPending === 0)
|
|
92
|
+
nextLevel.push(dependent);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
currentLevel = nextLevel;
|
|
96
|
+
}
|
|
97
|
+
// Anything still > 0 participates in a cycle — append in undefined order.
|
|
98
|
+
const cycleFiles = [...pendingImportsPerFile.entries()].filter(([, d]) => d > 0).map(([f]) => f);
|
|
99
|
+
if (cycleFiles.length > 0) {
|
|
100
|
+
levels.push(cycleFiles);
|
|
101
|
+
}
|
|
102
|
+
return { levels, cycleCount: cycleFiles.length };
|
|
103
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Synchronous heap probes for large-repo OOM investigation (#1983).
|
|
4
|
+
*
|
|
5
|
+
* Writes to stderr (not pino) so lines flush under CI=1 / gdb attach.
|
|
6
|
+
* Enabled with `CGRAPH_DEBUG_HEAP=1` or `CGRAPH_PROFILE_DEFERRED=1`.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.logHeapProbe = exports.heapUsedMb = exports.isDebugHeapEnabled = void 0;
|
|
10
|
+
const node_fs_1 = require("node:fs");
|
|
11
|
+
const env_js_1 = require("./env.js");
|
|
12
|
+
const deferred_resolution_profile_js_1 = require("./deferred-resolution-profile.js");
|
|
13
|
+
const isDebugHeapEnabled = () => (0, env_js_1.parseTruthyEnv)(process.env.CGRAPH_DEBUG_HEAP) || (0, deferred_resolution_profile_js_1.isDeferredResolutionProfileEnabled)();
|
|
14
|
+
exports.isDebugHeapEnabled = isDebugHeapEnabled;
|
|
15
|
+
const heapUsedMb = () => Math.round(process.memoryUsage().heapUsed / 1024 / 1024);
|
|
16
|
+
exports.heapUsedMb = heapUsedMb;
|
|
17
|
+
const rssMb = () => Math.round(process.memoryUsage().rss / 1024 / 1024);
|
|
18
|
+
/**
|
|
19
|
+
* Flush a one-line heap snapshot to stderr.
|
|
20
|
+
*
|
|
21
|
+
* stderr is async on a pipe (Linux), so a probe written just before an
|
|
22
|
+
* OOM-kill is lost in the pipe buffer. For OOM investigation set
|
|
23
|
+
* `CGRAPH_HEAP_PROBE_FILE=/path` — each probe is then ALSO appended to
|
|
24
|
+
* that file with a synchronous `appendFileSync`, whose `write(2)` syscall
|
|
25
|
+
* completes (data handed to the kernel) before the call returns, so the
|
|
26
|
+
* last line survives SIGKILL. Includes rss alongside heapUsed so the
|
|
27
|
+
* native/off-heap gap is visible.
|
|
28
|
+
*/
|
|
29
|
+
const logHeapProbe = (label, detail) => {
|
|
30
|
+
if (!(0, exports.isDebugHeapEnabled)())
|
|
31
|
+
return;
|
|
32
|
+
const suffix = detail ? ` ${detail}` : '';
|
|
33
|
+
const line = `[gitnexus-heap] ${label} used_mb=${(0, exports.heapUsedMb)()} rss_mb=${rssMb()}${suffix}\n`;
|
|
34
|
+
process.stderr.write(line);
|
|
35
|
+
const file = process.env.CGRAPH_HEAP_PROBE_FILE;
|
|
36
|
+
if (file) {
|
|
37
|
+
try {
|
|
38
|
+
(0, node_fs_1.appendFileSync)(file, line);
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// Best-effort diagnostics sink; never let a probe failure abort analyze.
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
exports.logHeapProbe = logHeapProbe;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PROPERTY_MARKER_PREFIX = exports.HERITAGE_MARKER_PREFIX = void 0;
|
|
4
|
+
exports.encodeMarker = encodeMarker;
|
|
5
|
+
exports.decodeMarker = decodeMarker;
|
|
6
|
+
exports.isHeritageMarker = isHeritageMarker;
|
|
7
|
+
const PREFIX_BY_KIND = {
|
|
8
|
+
heritage: '__heritage__:',
|
|
9
|
+
property: '__property__:',
|
|
10
|
+
};
|
|
11
|
+
exports.HERITAGE_MARKER_PREFIX = PREFIX_BY_KIND.heritage;
|
|
12
|
+
exports.PROPERTY_MARKER_PREFIX = PREFIX_BY_KIND.property;
|
|
13
|
+
/**
|
|
14
|
+
* Build a marker string `<prefix><field>:<field>:...`. The `':'` delimiter IS the
|
|
15
|
+
* wire format, so a field that itself contains `':'` is structurally invalid and
|
|
16
|
+
* THROWS — callers must pre-normalize colon-bearing values (e.g. a qualified mixin
|
|
17
|
+
* arg `Outer::Mixin` → `Outer.Mixin`). This makes the #1981 silent edge-drop a
|
|
18
|
+
* loud failure instead.
|
|
19
|
+
*/
|
|
20
|
+
function encodeMarker(kind, fields) {
|
|
21
|
+
for (const field of fields) {
|
|
22
|
+
if (field.includes(':')) {
|
|
23
|
+
throw new Error(`encodeMarker: field "${field}" contains the ':' delimiter; normalize it before encoding`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return PREFIX_BY_KIND[kind] + fields.join(':');
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Parse a marker string back into its kind + positional fields, or `null` if `raw`
|
|
30
|
+
* is not a marker. Mirrors the historical `slice(PREFIX.length).split(':')`.
|
|
31
|
+
*/
|
|
32
|
+
function decodeMarker(raw) {
|
|
33
|
+
if (raw.startsWith(PREFIX_BY_KIND.heritage)) {
|
|
34
|
+
return { kind: 'heritage', fields: raw.slice(PREFIX_BY_KIND.heritage.length).split(':') };
|
|
35
|
+
}
|
|
36
|
+
if (raw.startsWith(PREFIX_BY_KIND.property)) {
|
|
37
|
+
return { kind: 'property', fields: raw.slice(PREFIX_BY_KIND.property.length).split(':') };
|
|
38
|
+
}
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* True if `raw` is a synthetic heritage/property marker — exactly the prior
|
|
43
|
+
* `startsWith('__heritage__:') || startsWith('__property__:')` pair.
|
|
44
|
+
*/
|
|
45
|
+
function isHeritageMarker(raw) {
|
|
46
|
+
return raw.startsWith(PREFIX_BY_KIND.heritage) || raw.startsWith(PREFIX_BY_KIND.property);
|
|
47
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toZeroBasedLine = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Convert a 1-based source line number to the 0-based convention used by
|
|
6
|
+
* GraphNode `startLine`/`endLine`.
|
|
7
|
+
*
|
|
8
|
+
* The graph layer stores line numbers 0-based (tree-sitter `startPosition.row`),
|
|
9
|
+
* and this is load-bearing: the taint/PDG/CFG join and the MCP consumers all add
|
|
10
|
+
* `+ 1` to recover 1-based (see `summary-harvest-driver.ts` — "Function/Method
|
|
11
|
+
* node startLine is 0-based"). Most emitters get 0-based for free from
|
|
12
|
+
* tree-sitter. The exceptions are the regex-based COBOL/JCL processors (their
|
|
13
|
+
* parsers use `lineNum = i + 1`) and the scope-capture path (`Capture` ranges
|
|
14
|
+
* are 1-based per RFC §2.1). Those must convert to 0-based when they build a
|
|
15
|
+
* graph node, or the exact-content slice in `csv-generator.ts` drops the
|
|
16
|
+
* symbol's declaration line (#2379) and reported line numbers are off (#2377).
|
|
17
|
+
*
|
|
18
|
+
* Apply this ONLY at the graph-node `startLine:`/`endLine:` assignment. The
|
|
19
|
+
* parser-internal 1-based values (`.line`, `prog.startLine`) stay 1-based —
|
|
20
|
+
* they feed `L${line}` node/edge IDs and line-range containment checks that
|
|
21
|
+
* must not shift. The clamp guards degenerate inputs (line 0 / empty files).
|
|
22
|
+
*/
|
|
23
|
+
const toZeroBasedLine = (oneBasedLine) => Math.max(0, oneBasedLine - 1);
|
|
24
|
+
exports.toZeroBasedLine = toZeroBasedLine;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports._resetMaxFileSizeWarnings = exports.getMaxFileSizeBannerMessage = exports.getMaxFileSizeBytes = exports.MAX_FILE_SIZE_UPPER_BOUND_BYTES = exports.DEFAULT_MAX_FILE_SIZE_BYTES = void 0;
|
|
4
|
+
const constants_js_1 = require("../constants.js");
|
|
5
|
+
const logger_js_1 = require("../../logger.js");
|
|
6
|
+
/** Default threshold (512 KB). Files larger than this are skipped by the walker. */
|
|
7
|
+
exports.DEFAULT_MAX_FILE_SIZE_BYTES = 512 * 1024;
|
|
8
|
+
/** Hard upper bound — tree-sitter refuses buffers above this regardless. */
|
|
9
|
+
exports.MAX_FILE_SIZE_UPPER_BOUND_BYTES = constants_js_1.TREE_SITTER_MAX_BUFFER;
|
|
10
|
+
const warned = new Set();
|
|
11
|
+
const warnOnce = (key, message) => {
|
|
12
|
+
if (warned.has(key))
|
|
13
|
+
return;
|
|
14
|
+
warned.add(key);
|
|
15
|
+
logger_js_1.logger.warn(message);
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Resolve the effective file-size skip threshold (bytes) for the walker.
|
|
19
|
+
* Reads `CGRAPH_MAX_FILE_SIZE` (KB). Invalid values fall back to the default
|
|
20
|
+
* and emit a one-time warning. Values above the tree-sitter ceiling are clamped.
|
|
21
|
+
*/
|
|
22
|
+
const getMaxFileSizeBytes = () => {
|
|
23
|
+
const raw = process.env.CGRAPH_MAX_FILE_SIZE;
|
|
24
|
+
if (!raw)
|
|
25
|
+
return exports.DEFAULT_MAX_FILE_SIZE_BYTES;
|
|
26
|
+
const parsed = Number(raw);
|
|
27
|
+
if (!Number.isFinite(parsed) || parsed <= 0 || !Number.isInteger(parsed)) {
|
|
28
|
+
warnOnce(`invalid:${raw}`, ` CGRAPH_MAX_FILE_SIZE must be a positive integer (KB), got "${raw}" — using default ${exports.DEFAULT_MAX_FILE_SIZE_BYTES / 1024}KB`);
|
|
29
|
+
return exports.DEFAULT_MAX_FILE_SIZE_BYTES;
|
|
30
|
+
}
|
|
31
|
+
const bytes = parsed * 1024;
|
|
32
|
+
if (bytes > exports.MAX_FILE_SIZE_UPPER_BOUND_BYTES) {
|
|
33
|
+
warnOnce(`clamp:${raw}`, ` CGRAPH_MAX_FILE_SIZE=${parsed}KB exceeds tree-sitter ceiling (${exports.MAX_FILE_SIZE_UPPER_BOUND_BYTES / 1024}KB) — clamping`);
|
|
34
|
+
return exports.MAX_FILE_SIZE_UPPER_BOUND_BYTES;
|
|
35
|
+
}
|
|
36
|
+
return bytes;
|
|
37
|
+
};
|
|
38
|
+
exports.getMaxFileSizeBytes = getMaxFileSizeBytes;
|
|
39
|
+
/**
|
|
40
|
+
* Build the CLI banner message announcing an active file-size override.
|
|
41
|
+
* Returns `null` when the effective threshold equals the default — the caller
|
|
42
|
+
* should print nothing in that case. The returned message reflects the
|
|
43
|
+
* *effective* post-clamp threshold, not the raw env value, so operators reading
|
|
44
|
+
* startup output see the actual configuration the walker will use.
|
|
45
|
+
*/
|
|
46
|
+
const getMaxFileSizeBannerMessage = () => {
|
|
47
|
+
const effectiveBytes = (0, exports.getMaxFileSizeBytes)();
|
|
48
|
+
if (effectiveBytes === exports.DEFAULT_MAX_FILE_SIZE_BYTES)
|
|
49
|
+
return null;
|
|
50
|
+
const effectiveKb = effectiveBytes / 1024;
|
|
51
|
+
const defaultKb = exports.DEFAULT_MAX_FILE_SIZE_BYTES / 1024;
|
|
52
|
+
return ` CGRAPH_MAX_FILE_SIZE: effective threshold ${effectiveKb}KB (default ${defaultKb}KB)`;
|
|
53
|
+
};
|
|
54
|
+
exports.getMaxFileSizeBannerMessage = getMaxFileSizeBannerMessage;
|
|
55
|
+
/** Test-only: reset the warn-once cache so repeated test runs can re-observe warnings. */
|
|
56
|
+
const _resetMaxFileSizeWarnings = () => {
|
|
57
|
+
warned.clear();
|
|
58
|
+
};
|
|
59
|
+
exports._resetMaxFileSizeWarnings = _resetMaxFileSizeWarnings;
|