gitnexus 1.6.10-rc.21 → 1.6.10-rc.211
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +212 -22
- package/dist/_shared/graph/types.d.ts +27 -8
- package/dist/_shared/graph/types.d.ts.map +1 -1
- package/dist/_shared/index.d.ts +4 -3
- package/dist/_shared/index.d.ts.map +1 -1
- package/dist/_shared/index.js +1 -1
- package/dist/_shared/index.js.map +1 -1
- package/dist/_shared/integrations/circuit-breaker.d.ts.map +1 -1
- package/dist/_shared/integrations/circuit-breaker.js.map +1 -1
- package/dist/_shared/integrations/resilient-fetch.d.ts +19 -1
- package/dist/_shared/integrations/resilient-fetch.d.ts.map +1 -1
- package/dist/_shared/integrations/resilient-fetch.js +23 -10
- package/dist/_shared/integrations/resilient-fetch.js.map +1 -1
- package/dist/_shared/language-detection.d.ts.map +1 -1
- package/dist/_shared/lbug/schema-constants.d.ts +2 -2
- package/dist/_shared/lbug/schema-constants.d.ts.map +1 -1
- package/dist/_shared/lbug/schema-constants.js +3 -0
- package/dist/_shared/lbug/schema-constants.js.map +1 -1
- package/dist/_shared/scope-resolution/callable-flow-site.d.ts +110 -0
- package/dist/_shared/scope-resolution/callable-flow-site.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/callable-flow-site.js +11 -0
- package/dist/_shared/scope-resolution/callable-flow-site.js.map +1 -0
- package/dist/_shared/scope-resolution/evidence-weights.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/finalize-algorithm.d.ts +6 -1
- package/dist/_shared/scope-resolution/finalize-algorithm.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/finalize-algorithm.js +316 -37
- package/dist/_shared/scope-resolution/finalize-algorithm.js.map +1 -1
- package/dist/_shared/scope-resolution/parsed-file.d.ts +7 -0
- package/dist/_shared/scope-resolution/parsed-file.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/reference-site.d.ts +124 -1
- package/dist/_shared/scope-resolution/reference-site.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/registries/field-registry.js.map +1 -1
- package/dist/_shared/scope-resolution/registries/lookup-core.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/registries/lookup-core.js +58 -2
- package/dist/_shared/scope-resolution/registries/lookup-core.js.map +1 -1
- package/dist/_shared/scope-resolution/registries/method-registry.js.map +1 -1
- package/dist/_shared/scope-resolution/scope-tree.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/scope-tree.js.map +1 -1
- package/dist/_shared/scope-resolution/symbol-definition.d.ts +47 -0
- package/dist/_shared/scope-resolution/symbol-definition.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/types.d.ts +297 -5
- package/dist/_shared/scope-resolution/types.d.ts.map +1 -1
- package/dist/cli/ai-context.d.ts +10 -2
- package/dist/cli/ai-context.js +128 -61
- package/dist/cli/analyze-config.d.ts +1 -1
- package/dist/cli/analyze-options.d.ts +131 -0
- package/dist/cli/analyze-options.js +1 -0
- package/dist/cli/analyze.d.ts +25 -114
- package/dist/cli/analyze.js +194 -36
- package/dist/cli/cli-message.d.ts +1 -1
- package/dist/cli/detect-changes-format.js +19 -2
- package/dist/cli/doctor.d.ts +23 -0
- package/dist/cli/doctor.js +72 -9
- package/dist/cli/editor-targets.js +6 -0
- package/dist/cli/eval-server.d.ts +23 -1
- package/dist/cli/eval-server.js +128 -9
- package/dist/cli/format-symbol.d.ts +15 -0
- package/dist/cli/format-symbol.js +17 -0
- package/dist/cli/generated-skill.d.ts +17 -0
- package/dist/cli/generated-skill.js +1 -0
- package/dist/cli/group.js +23 -2
- package/dist/cli/help-i18n.js +3 -0
- package/dist/cli/i18n/en.d.ts +17 -8
- package/dist/cli/i18n/en.js +19 -8
- package/dist/cli/i18n/resources.d.ts +26 -8
- package/dist/cli/i18n/zh-CN.d.ts +9 -0
- package/dist/cli/i18n/zh-CN.js +17 -8
- package/dist/cli/index.js +16 -9
- package/dist/cli/lazy-action.d.ts +7 -0
- package/dist/cli/lazy-action.js +27 -0
- package/dist/cli/mcp.js +6 -3
- package/dist/cli/resolve-invocation.d.ts +7 -3
- package/dist/cli/resolve-invocation.js +7 -3
- package/dist/cli/setup.d.ts +8 -0
- package/dist/cli/setup.js +30 -7
- package/dist/cli/skill-gen.d.ts +1 -6
- package/dist/cli/skill-gen.js +88 -18
- package/dist/cli/standard-skills.d.ts +76 -0
- package/dist/cli/standard-skills.js +45 -0
- package/dist/cli/status.d.ts +4 -1
- package/dist/cli/status.js +57 -4
- package/dist/cli/tool.d.ts +1 -0
- package/dist/cli/tool.js +75 -7
- package/dist/cli/uninstall.js +7 -2
- package/dist/cli/wiki.d.ts +1 -0
- package/dist/cli/wiki.js +59 -10
- package/dist/config/ignore-service.d.ts +2 -0
- package/dist/config/ignore-service.js +31 -4
- package/dist/core/analysis-features.d.ts +21 -0
- package/dist/core/analysis-features.js +59 -0
- package/dist/core/analyzer-identity.d.ts +154 -0
- package/dist/core/analyzer-identity.js +2158 -0
- package/dist/core/augmentation/engine.js +95 -76
- package/dist/core/embedding-checkpoint.d.ts +143 -0
- package/dist/core/embedding-checkpoint.js +221 -0
- package/dist/core/embedding-count.d.ts +61 -0
- package/dist/core/embedding-count.js +69 -0
- package/dist/core/embeddings/ast-utils.js +9 -1
- package/dist/core/embeddings/embedder.d.ts +3 -2
- package/dist/core/embeddings/embedder.js +8 -5
- package/dist/core/embeddings/embedding-identity.d.ts +11 -0
- package/dist/core/embeddings/embedding-identity.js +24 -0
- package/dist/core/embeddings/embedding-pipeline.d.ts +24 -1
- package/dist/core/embeddings/embedding-pipeline.js +341 -19
- package/dist/core/embeddings/http-client.d.ts +10 -2
- package/dist/core/embeddings/http-client.js +282 -47
- package/dist/core/embeddings/node-module-compat.d.ts +4 -2
- package/dist/core/embeddings/node-module-compat.js +4 -2
- package/dist/core/embeddings/onnxruntime-common-resolver.js +5 -5
- package/dist/core/embeddings/onnxruntime-node-resolver.js +2 -2
- package/dist/core/embeddings/runtime-install.js +1 -1
- package/dist/core/git-staleness.js +1 -1
- package/dist/core/graph/graph.js +3 -0
- package/dist/core/graph/import-cycles.d.ts +194 -3
- package/dist/core/graph/import-cycles.js +522 -73
- package/dist/core/graph/types.d.ts +18 -0
- package/dist/core/group/bridge-db.js +5 -27
- package/dist/core/group/cross-impact.d.ts +21 -0
- package/dist/core/group/cross-impact.js +128 -15
- package/dist/core/group/cross-trace.js +27 -16
- package/dist/core/group/extractors/http-patterns/java.js +91 -14
- package/dist/core/group/extractors/http-patterns/node.js +19 -0
- package/dist/core/group/extractors/http-patterns/types.d.ts +8 -0
- package/dist/core/group/extractors/http-route-extractor.d.ts +1 -0
- package/dist/core/group/extractors/http-route-extractor.js +122 -48
- package/dist/core/group/extractors/include-extractor.js +20 -2
- package/dist/core/group/extractors/manifest-extractor.d.ts +1 -1
- package/dist/core/group/extractors/manifest-extractor.js +7 -7
- package/dist/core/group/service.js +10 -1
- package/dist/core/group/storage.js +2 -33
- package/dist/core/group/types.d.ts +18 -0
- package/dist/core/incremental/subgraph-extract.d.ts +9 -6
- package/dist/core/incremental/subgraph-extract.js +33 -10
- package/dist/core/index-freshness.d.ts +80 -0
- package/dist/core/index-freshness.js +120 -0
- package/dist/core/ingestion/call-processor.d.ts +13 -1
- package/dist/core/ingestion/call-processor.js +110 -3
- package/dist/core/ingestion/cfg/callee-cell-format.d.ts +42 -0
- package/dist/core/ingestion/cfg/callee-cell-format.js +42 -0
- package/dist/core/ingestion/cfg/emit.d.ts +8 -23
- package/dist/core/ingestion/cfg/emit.js +9 -23
- package/dist/core/ingestion/class-extractors/configs/go.js +10 -5
- package/dist/core/ingestion/class-extractors/configs/jvm.js +29 -0
- package/dist/core/ingestion/cluster-enricher.js +8 -4
- package/dist/core/ingestion/cobol/cobol-preprocessor.js +1 -1
- package/dist/core/ingestion/community-processor.d.ts +21 -3
- package/dist/core/ingestion/community-processor.js +88 -83
- package/dist/core/ingestion/di-extractors/index.d.ts +22 -34
- package/dist/core/ingestion/di-extractors/index.js +17 -18
- package/dist/core/ingestion/di-extractors/spring.d.ts +27 -5
- package/dist/core/ingestion/di-extractors/spring.js +87 -3
- package/dist/core/ingestion/di-extractors/types.d.ts +60 -0
- package/dist/core/ingestion/di-extractors/types.js +15 -0
- package/dist/core/ingestion/emit-references.js +4 -0
- package/dist/core/ingestion/filesystem-walker.js +16 -12
- package/dist/core/ingestion/finalize-orchestrator.js +1 -0
- package/dist/core/ingestion/frameworks/spring/analysis-features.d.ts +9 -0
- package/dist/core/ingestion/frameworks/spring/analysis-features.js +41 -0
- package/dist/core/ingestion/frameworks/spring/annotation-arguments.d.ts +13 -0
- package/dist/core/ingestion/frameworks/spring/annotation-arguments.js +227 -0
- package/dist/core/ingestion/frameworks/spring/aop-candidates.d.ts +15 -0
- package/dist/core/ingestion/frameworks/spring/aop-candidates.js +85 -0
- package/dist/core/ingestion/frameworks/spring/aop.d.ts +118 -0
- package/dist/core/ingestion/frameworks/spring/aop.js +476 -0
- package/dist/core/ingestion/frameworks/spring/auto-configuration.d.ts +8 -0
- package/dist/core/ingestion/frameworks/spring/auto-configuration.js +16 -0
- package/dist/core/ingestion/frameworks/spring/bean-candidates.d.ts +30 -0
- package/dist/core/ingestion/frameworks/spring/bean-candidates.js +182 -0
- package/dist/core/ingestion/frameworks/spring/bean-catalog.d.ts +12 -0
- package/dist/core/ingestion/frameworks/spring/bean-catalog.js +27 -0
- package/dist/core/ingestion/frameworks/spring/bean-factories.d.ts +33 -0
- package/dist/core/ingestion/frameworks/spring/bean-factories.js +65 -0
- package/dist/core/ingestion/frameworks/spring/conditionals.d.ts +25 -0
- package/dist/core/ingestion/frameworks/spring/conditionals.js +319 -0
- package/dist/core/ingestion/frameworks/spring/config-bindings.d.ts +24 -0
- package/dist/core/ingestion/frameworks/spring/config-bindings.js +115 -0
- package/dist/core/ingestion/frameworks/spring/di-metadata.d.ts +48 -0
- package/dist/core/ingestion/frameworks/spring/di-metadata.js +379 -0
- package/dist/core/ingestion/frameworks/spring/non-http-handlers.d.ts +28 -0
- package/dist/core/ingestion/frameworks/spring/non-http-handlers.js +152 -0
- package/dist/core/ingestion/frameworks/spring/resource-injection.d.ts +5 -0
- package/dist/core/ingestion/frameworks/spring/resource-injection.js +91 -0
- package/dist/core/ingestion/import-resolvers/configs/csharp.js +5 -1
- package/dist/core/ingestion/import-resolvers/configs/swift.js +13 -0
- package/dist/core/ingestion/import-resolvers/csharp.d.ts +9 -1
- package/dist/core/ingestion/import-resolvers/csharp.js +234 -27
- package/dist/core/ingestion/import-resolvers/go.d.ts +11 -1
- package/dist/core/ingestion/import-resolvers/go.js +44 -17
- package/dist/core/ingestion/import-resolvers/jvm.d.ts +2 -2
- package/dist/core/ingestion/import-resolvers/node-workspace-packages.d.ts +90 -0
- package/dist/core/ingestion/import-resolvers/node-workspace-packages.js +428 -0
- package/dist/core/ingestion/import-resolvers/package-dir-index.d.ts +124 -0
- package/dist/core/ingestion/import-resolvers/package-dir-index.js +223 -0
- package/dist/core/ingestion/import-resolvers/pass-cache.d.ts +50 -0
- package/dist/core/ingestion/import-resolvers/pass-cache.js +60 -0
- package/dist/core/ingestion/import-resolvers/per-file-set.d.ts +71 -0
- package/dist/core/ingestion/import-resolvers/per-file-set.js +11 -0
- package/dist/core/ingestion/import-resolvers/php.d.ts +1 -1
- package/dist/core/ingestion/import-resolvers/php.js +27 -8
- package/dist/core/ingestion/import-resolvers/python-file-index.d.ts +201 -0
- package/dist/core/ingestion/import-resolvers/python-file-index.js +302 -0
- package/dist/core/ingestion/import-resolvers/python.js +25 -6
- package/dist/core/ingestion/import-resolvers/ruby.d.ts +1 -1
- package/dist/core/ingestion/import-resolvers/rust.d.ts +2 -2
- package/dist/core/ingestion/import-resolvers/standard.d.ts +1 -1
- package/dist/core/ingestion/import-resolvers/types.d.ts +1 -12
- package/dist/core/ingestion/import-resolvers/utils.d.ts +65 -6
- package/dist/core/ingestion/import-resolvers/utils.js +215 -36
- package/dist/core/ingestion/import-resolvers/workspace-file-index.d.ts +72 -0
- package/dist/core/ingestion/import-resolvers/workspace-file-index.js +58 -0
- package/dist/core/ingestion/language-config.d.ts +20 -1
- package/dist/core/ingestion/language-config.js +18 -23
- package/dist/core/ingestion/language-provider.d.ts +133 -7
- package/dist/core/ingestion/languages/c/captures.js +63 -0
- package/dist/core/ingestion/languages/c/import-target.js +12 -16
- package/dist/core/ingestion/languages/c/query.js +17 -0
- package/dist/core/ingestion/languages/c/scope-resolver.js +26 -19
- package/dist/core/ingestion/languages/c/static-linkage.js +12 -16
- package/dist/core/ingestion/languages/c-cpp.js +13 -0
- package/dist/core/ingestion/languages/cobol/captures.js +93 -0
- package/dist/core/ingestion/languages/cobol/scope-resolver.js +34 -20
- package/dist/core/ingestion/languages/cobol.js +13 -0
- package/dist/core/ingestion/languages/cpp/adl.d.ts +2 -2
- package/dist/core/ingestion/languages/cpp/adl.js +67 -44
- package/dist/core/ingestion/languages/cpp/captures.js +222 -3
- package/dist/core/ingestion/languages/cpp/file-local-linkage.js +11 -15
- package/dist/core/ingestion/languages/cpp/inline-namespaces.d.ts +28 -8
- package/dist/core/ingestion/languages/cpp/inline-namespaces.js +242 -68
- package/dist/core/ingestion/languages/cpp/interpret.d.ts +2 -0
- package/dist/core/ingestion/languages/cpp/interpret.js +126 -6
- package/dist/core/ingestion/languages/cpp/query.js +106 -0
- package/dist/core/ingestion/languages/cpp/scope-resolver.js +62 -20
- package/dist/core/ingestion/languages/csharp/accessor-unwrap.d.ts +2 -15
- package/dist/core/ingestion/languages/csharp/accessor-unwrap.js +18 -10
- package/dist/core/ingestion/languages/csharp/captures.js +44 -0
- package/dist/core/ingestion/languages/csharp/import-target.js +46 -72
- package/dist/core/ingestion/languages/csharp/namespace-siblings.js +5 -1
- package/dist/core/ingestion/languages/csharp/query.js +25 -5
- package/dist/core/ingestion/languages/csharp/scope-resolver.js +75 -2
- package/dist/core/ingestion/languages/dart/captures.d.ts +10 -0
- package/dist/core/ingestion/languages/dart/captures.js +686 -16
- package/dist/core/ingestion/languages/dart/extension-type-preprocess.d.ts +7 -0
- package/dist/core/ingestion/languages/dart/extension-type-preprocess.js +30 -0
- package/dist/core/ingestion/languages/dart/import-target.js +32 -9
- package/dist/core/ingestion/languages/dart/index.d.ts +1 -1
- package/dist/core/ingestion/languages/dart/index.js +1 -1
- package/dist/core/ingestion/languages/dart/query.js +98 -1
- package/dist/core/ingestion/languages/dart/scope-resolver.js +14 -3
- package/dist/core/ingestion/languages/dart/simple-hooks.js +9 -0
- package/dist/core/ingestion/languages/dart.js +8 -1
- package/dist/core/ingestion/languages/go/captures.js +142 -3
- package/dist/core/ingestion/languages/go/generic-type-parameters.d.ts +31 -0
- package/dist/core/ingestion/languages/go/generic-type-parameters.js +140 -0
- package/dist/core/ingestion/languages/go/import-target.d.ts +3 -10
- package/dist/core/ingestion/languages/go/import-target.js +34 -30
- package/dist/core/ingestion/languages/go/index.d.ts +1 -1
- package/dist/core/ingestion/languages/go/interface-impls.d.ts +9 -1
- package/dist/core/ingestion/languages/go/interface-impls.js +693 -87
- package/dist/core/ingestion/languages/go/interpret.d.ts +2 -0
- package/dist/core/ingestion/languages/go/interpret.js +22 -8
- package/dist/core/ingestion/languages/go/method-owners.js +31 -12
- package/dist/core/ingestion/languages/go/package-clause.d.ts +46 -0
- package/dist/core/ingestion/languages/go/package-clause.js +75 -0
- package/dist/core/ingestion/languages/go/package-siblings.js +7 -11
- package/dist/core/ingestion/languages/go/query.js +56 -3
- package/dist/core/ingestion/languages/go/scope-resolver.js +39 -0
- package/dist/core/ingestion/languages/go.js +9 -0
- package/dist/core/ingestion/languages/java/analysis-features.d.ts +7 -0
- package/dist/core/ingestion/languages/java/analysis-features.js +25 -0
- package/dist/core/ingestion/languages/java/capture-side-channel.d.ts +38 -0
- package/dist/core/ingestion/languages/java/capture-side-channel.js +124 -0
- package/dist/core/ingestion/languages/java/captures.d.ts +4 -3
- package/dist/core/ingestion/languages/java/captures.js +321 -49
- package/dist/core/ingestion/languages/java/import-target.d.ts +49 -9
- package/dist/core/ingestion/languages/java/import-target.js +68 -88
- package/dist/core/ingestion/languages/java/interpret.js +3 -2
- package/dist/core/ingestion/languages/java/module-resolution.d.ts +62 -0
- package/dist/core/ingestion/languages/java/module-resolution.js +142 -0
- package/dist/core/ingestion/languages/java/package-facts.d.ts +5 -0
- package/dist/core/ingestion/languages/java/package-facts.js +9 -0
- package/dist/core/ingestion/languages/java/package-siblings.d.ts +3 -16
- package/dist/core/ingestion/languages/java/package-siblings.js +8 -147
- package/dist/core/ingestion/languages/java/query.js +39 -3
- package/dist/core/ingestion/languages/java/record-components.d.ts +14 -0
- package/dist/core/ingestion/languages/java/record-components.js +185 -0
- package/dist/core/ingestion/languages/java/scope-resolver.js +35 -2
- package/dist/core/ingestion/languages/java/spring-aop.d.ts +12 -0
- package/dist/core/ingestion/languages/java/spring-aop.js +49 -0
- package/dist/core/ingestion/languages/java/spring-bean-metadata.d.ts +2 -0
- package/dist/core/ingestion/languages/java/spring-bean-metadata.js +8 -0
- package/dist/core/ingestion/languages/java/spring-conditionals.d.ts +11 -0
- package/dist/core/ingestion/languages/java/spring-conditionals.js +48 -0
- package/dist/core/ingestion/languages/java/spring-config-bindings.d.ts +23 -0
- package/dist/core/ingestion/languages/java/spring-config-bindings.js +215 -0
- package/dist/core/ingestion/languages/java/spring-di.d.ts +20 -0
- package/dist/core/ingestion/languages/java/spring-di.js +160 -0
- package/dist/core/ingestion/languages/java/spring-non-http-handlers.d.ts +7 -0
- package/dist/core/ingestion/languages/java/spring-non-http-handlers.js +32 -0
- package/dist/core/ingestion/languages/java.js +76 -3
- package/dist/core/ingestion/languages/javascript/captures.d.ts +6 -1
- package/dist/core/ingestion/languages/javascript/captures.js +278 -4
- package/dist/core/ingestion/languages/javascript/import-target.d.ts +17 -21
- package/dist/core/ingestion/languages/javascript/import-target.js +24 -41
- package/dist/core/ingestion/languages/javascript/index.d.ts +54 -5
- package/dist/core/ingestion/languages/javascript/index.js +54 -5
- package/dist/core/ingestion/languages/javascript/query.d.ts +1 -0
- package/dist/core/ingestion/languages/javascript/query.js +232 -5
- package/dist/core/ingestion/languages/javascript/scope-resolver.js +12 -0
- package/dist/core/ingestion/languages/javascript/simple-hooks.js +2 -1
- package/dist/core/ingestion/languages/jvm/package-facts.d.ts +35 -0
- package/dist/core/ingestion/languages/jvm/package-facts.js +40 -0
- package/dist/core/ingestion/languages/jvm/package-siblings.d.ts +14 -0
- package/dist/core/ingestion/languages/jvm/package-siblings.js +197 -0
- package/dist/core/ingestion/languages/kotlin/capture-side-channel.d.ts +40 -3
- package/dist/core/ingestion/languages/kotlin/capture-side-channel.js +111 -8
- package/dist/core/ingestion/languages/kotlin/captures.js +112 -0
- package/dist/core/ingestion/languages/kotlin/import-target.d.ts +8 -1
- package/dist/core/ingestion/languages/kotlin/import-target.js +20 -123
- package/dist/core/ingestion/languages/kotlin/index.d.ts +1 -0
- package/dist/core/ingestion/languages/kotlin/index.js +1 -0
- package/dist/core/ingestion/languages/kotlin/module-resolution.d.ts +22 -0
- package/dist/core/ingestion/languages/kotlin/module-resolution.js +108 -0
- package/dist/core/ingestion/languages/kotlin/package-facts.d.ts +5 -0
- package/dist/core/ingestion/languages/kotlin/package-facts.js +9 -0
- package/dist/core/ingestion/languages/kotlin/package-siblings.d.ts +4 -0
- package/dist/core/ingestion/languages/kotlin/package-siblings.js +8 -0
- package/dist/core/ingestion/languages/kotlin/query.js +47 -2
- package/dist/core/ingestion/languages/kotlin/scope-resolver.js +36 -3
- package/dist/core/ingestion/languages/kotlin/spring-aop.d.ts +12 -0
- package/dist/core/ingestion/languages/kotlin/spring-aop.js +64 -0
- package/dist/core/ingestion/languages/kotlin/spring-bean-metadata.d.ts +2 -0
- package/dist/core/ingestion/languages/kotlin/spring-bean-metadata.js +8 -0
- package/dist/core/ingestion/languages/kotlin/spring-conditionals.d.ts +12 -0
- package/dist/core/ingestion/languages/kotlin/spring-conditionals.js +49 -0
- package/dist/core/ingestion/languages/kotlin/spring-di.d.ts +20 -0
- package/dist/core/ingestion/languages/kotlin/spring-di.js +299 -0
- package/dist/core/ingestion/languages/kotlin/spring-non-http-handlers.d.ts +10 -0
- package/dist/core/ingestion/languages/kotlin/spring-non-http-handlers.js +41 -0
- package/dist/core/ingestion/languages/kotlin.js +5 -6
- package/dist/core/ingestion/languages/php/captures.d.ts +5 -0
- package/dist/core/ingestion/languages/php/captures.js +359 -51
- package/dist/core/ingestion/languages/php/import-decomposer.js +12 -0
- package/dist/core/ingestion/languages/php/import-target.d.ts +2 -1
- package/dist/core/ingestion/languages/php/import-target.js +229 -7
- package/dist/core/ingestion/languages/php/interpret.js +10 -0
- package/dist/core/ingestion/languages/php/query.js +31 -0
- package/dist/core/ingestion/languages/php/scope-resolver.js +1 -1
- package/dist/core/ingestion/languages/python/arity-metadata.d.ts +1 -0
- package/dist/core/ingestion/languages/python/arity-metadata.js +1 -0
- package/dist/core/ingestion/languages/python/captures.d.ts +3 -4
- package/dist/core/ingestion/languages/python/captures.js +53 -5
- package/dist/core/ingestion/languages/python/import-decomposer.js +22 -1
- package/dist/core/ingestion/languages/python/import-target.d.ts +42 -1
- package/dist/core/ingestion/languages/python/import-target.js +277 -91
- package/dist/core/ingestion/languages/python/index.d.ts +1 -1
- package/dist/core/ingestion/languages/python/index.js +1 -1
- package/dist/core/ingestion/languages/python/interpret.d.ts +52 -0
- package/dist/core/ingestion/languages/python/interpret.js +249 -3
- package/dist/core/ingestion/languages/python/query.js +9 -0
- package/dist/core/ingestion/languages/python/receiver-binding.d.ts +17 -2
- package/dist/core/ingestion/languages/python/receiver-binding.js +192 -2
- package/dist/core/ingestion/languages/python/scope-resolver.js +27 -4
- package/dist/core/ingestion/languages/python/simple-hooks.d.ts +5 -5
- package/dist/core/ingestion/languages/python/simple-hooks.js +9 -5
- package/dist/core/ingestion/languages/ruby/captures.js +200 -0
- package/dist/core/ingestion/languages/ruby/import-target.js +7 -5
- package/dist/core/ingestion/languages/ruby/query.js +93 -0
- package/dist/core/ingestion/languages/ruby/scope-resolver.js +2 -0
- package/dist/core/ingestion/languages/ruby/simple-hooks.d.ts +1 -1
- package/dist/core/ingestion/languages/ruby/simple-hooks.js +22 -1
- package/dist/core/ingestion/languages/rust/captures.js +52 -1
- package/dist/core/ingestion/languages/rust/interpret.js +18 -0
- package/dist/core/ingestion/languages/rust/method-owners.js +11 -1
- package/dist/core/ingestion/languages/rust/module-path.d.ts +126 -0
- package/dist/core/ingestion/languages/rust/module-path.js +214 -0
- package/dist/core/ingestion/languages/rust/qualified-call.d.ts +41 -0
- package/dist/core/ingestion/languages/rust/qualified-call.js +481 -0
- package/dist/core/ingestion/languages/rust/query.js +48 -6
- package/dist/core/ingestion/languages/rust/range-binding.d.ts +1 -11
- package/dist/core/ingestion/languages/rust/range-binding.js +149 -63
- package/dist/core/ingestion/languages/rust/scope-resolver.js +21 -2
- package/dist/core/ingestion/languages/rust.js +17 -0
- package/dist/core/ingestion/languages/swift/captures.js +99 -3
- package/dist/core/ingestion/languages/swift/conditional-directive-preprocess.d.ts +48 -0
- package/dist/core/ingestion/languages/swift/conditional-directive-preprocess.js +253 -0
- package/dist/core/ingestion/languages/swift/import-target.js +4 -9
- package/dist/core/ingestion/languages/swift/query.js +17 -0
- package/dist/core/ingestion/languages/swift/receiver-binding.d.ts +8 -0
- package/dist/core/ingestion/languages/swift/receiver-binding.js +6 -2
- package/dist/core/ingestion/languages/swift.js +2 -0
- package/dist/core/ingestion/languages/typescript/captures.d.ts +90 -1
- package/dist/core/ingestion/languages/typescript/captures.js +288 -5
- package/dist/core/ingestion/languages/typescript/cjs-export-assignment.d.ts +134 -0
- package/dist/core/ingestion/languages/typescript/cjs-export-assignment.js +523 -0
- package/dist/core/ingestion/languages/typescript/cjs-module-exports.d.ts +54 -0
- package/dist/core/ingestion/languages/typescript/cjs-module-exports.js +191 -0
- package/dist/core/ingestion/languages/typescript/file-candidates.d.ts +29 -0
- package/dist/core/ingestion/languages/typescript/file-candidates.js +70 -0
- package/dist/core/ingestion/languages/typescript/import-decomposer.d.ts +28 -1
- package/dist/core/ingestion/languages/typescript/import-decomposer.js +125 -10
- package/dist/core/ingestion/languages/typescript/import-target.d.ts +25 -37
- package/dist/core/ingestion/languages/typescript/import-target.js +24 -26
- package/dist/core/ingestion/languages/typescript/interpret.d.ts +21 -1
- package/dist/core/ingestion/languages/typescript/interpret.js +45 -5
- package/dist/core/ingestion/languages/typescript/module-resolution.d.ts +48 -0
- package/dist/core/ingestion/languages/typescript/module-resolution.js +171 -0
- package/dist/core/ingestion/languages/typescript/nuxt-auto-imports.js +2 -1
- package/dist/core/ingestion/languages/typescript/query.d.ts +1 -0
- package/dist/core/ingestion/languages/typescript/query.js +340 -14
- package/dist/core/ingestion/languages/typescript/receiver-binding.d.ts +17 -0
- package/dist/core/ingestion/languages/typescript/receiver-binding.js +27 -0
- package/dist/core/ingestion/languages/typescript/scope-resolver.js +27 -40
- package/dist/core/ingestion/languages/typescript/simple-hooks.d.ts +0 -10
- package/dist/core/ingestion/languages/typescript/simple-hooks.js +22 -22
- package/dist/core/ingestion/languages/typescript/tsconfig.d.ts +59 -0
- package/dist/core/ingestion/languages/typescript/tsconfig.js +291 -0
- package/dist/core/ingestion/languages/typescript.js +87 -1
- package/dist/core/ingestion/languages/vue/import-target.d.ts +6 -22
- package/dist/core/ingestion/languages/vue/import-target.js +11 -47
- package/dist/core/ingestion/languages/vue/scope-resolver.js +4 -2
- package/dist/core/ingestion/local-symbol-pruner.js +11 -11
- package/dist/core/ingestion/method-extractors/configs/csharp.js +1 -0
- package/dist/core/ingestion/method-extractors/generic.js +1 -0
- package/dist/core/ingestion/method-types.d.ts +16 -0
- package/dist/core/ingestion/parsing-processor.js +32 -1
- package/dist/core/ingestion/pipeline-phases/di.d.ts +8 -33
- package/dist/core/ingestion/pipeline-phases/di.js +275 -157
- package/dist/core/ingestion/pipeline-phases/index.d.ts +3 -0
- package/dist/core/ingestion/pipeline-phases/index.js +3 -0
- package/dist/core/ingestion/pipeline-phases/parse-impl.d.ts +15 -0
- package/dist/core/ingestion/pipeline-phases/parse-impl.js +158 -3
- package/dist/core/ingestion/pipeline-phases/parse.js +5 -0
- package/dist/core/ingestion/pipeline-phases/processes.d.ts +11 -2
- package/dist/core/ingestion/pipeline-phases/processes.js +102 -7
- package/dist/core/ingestion/pipeline-phases/routes.js +56 -10
- package/dist/core/ingestion/pipeline-phases/spring-aop.d.ts +34 -0
- package/dist/core/ingestion/pipeline-phases/spring-aop.js +439 -0
- package/dist/core/ingestion/pipeline-phases/spring-auto-configuration.d.ts +34 -0
- package/dist/core/ingestion/pipeline-phases/spring-auto-configuration.js +255 -0
- package/dist/core/ingestion/pipeline-phases/spring-config.d.ts +37 -0
- package/dist/core/ingestion/pipeline-phases/spring-config.js +433 -0
- package/dist/core/ingestion/pipeline-phases/types.d.ts +7 -0
- package/dist/core/ingestion/pipeline.d.ts +27 -3
- package/dist/core/ingestion/pipeline.js +62 -12
- package/dist/core/ingestion/process-processor.d.ts +109 -2
- package/dist/core/ingestion/process-processor.js +464 -52
- package/dist/core/ingestion/resolve-references.d.ts +6 -1
- package/dist/core/ingestion/resolve-references.js +78 -6
- package/dist/core/ingestion/route-extractors/data-route-table.d.ts +25 -0
- package/dist/core/ingestion/route-extractors/data-route-table.js +864 -0
- package/dist/core/ingestion/route-extractors/dispatch-guard.d.ts +96 -0
- package/dist/core/ingestion/route-extractors/dispatch-guard.js +1184 -0
- package/dist/core/ingestion/route-extractors/spring-shared.d.ts +11 -0
- package/dist/core/ingestion/route-extractors/spring-shared.js +89 -0
- package/dist/core/ingestion/route-extractors/spring.js +109 -24
- package/dist/core/ingestion/scope-extractor-bridge.js +9 -1
- package/dist/core/ingestion/scope-extractor.d.ts +22 -7
- package/dist/core/ingestion/scope-extractor.js +617 -59
- package/dist/core/ingestion/scope-resolution/contract/scope-resolver.d.ts +381 -22
- package/dist/core/ingestion/scope-resolution/contract/scope-resolver.js +16 -5
- package/dist/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.d.ts +7 -7
- package/dist/core/ingestion/scope-resolution/graph-bridge/callee-id-sink.js +8 -7
- package/dist/core/ingestion/scope-resolution/graph-bridge/edges.d.ts +15 -1
- package/dist/core/ingestion/scope-resolution/graph-bridge/edges.js +53 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/ids.d.ts +20 -15
- package/dist/core/ingestion/scope-resolution/graph-bridge/ids.js +275 -41
- package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.d.ts +123 -0
- package/dist/core/ingestion/scope-resolution/graph-bridge/imports-to-edges.js +171 -17
- package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.d.ts +56 -1
- package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +130 -32
- package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.d.ts +30 -1
- package/dist/core/ingestion/scope-resolution/graph-bridge/references-to-edges.js +46 -3
- package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.d.ts +64 -0
- package/dist/core/ingestion/scope-resolution/passes/callable-value-flow.js +1233 -0
- package/dist/core/ingestion/scope-resolution/passes/compound-receiver.d.ts +107 -5
- package/dist/core/ingestion/scope-resolution/passes/compound-receiver.js +590 -33
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.d.ts +19 -4
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.js +160 -4
- package/dist/core/ingestion/scope-resolution/passes/imported-value-refs.d.ts +34 -0
- package/dist/core/ingestion/scope-resolution/passes/imported-value-refs.js +62 -0
- package/dist/core/ingestion/scope-resolution/passes/property-dispatch.d.ts +64 -0
- package/dist/core/ingestion/scope-resolution/passes/property-dispatch.js +118 -0
- package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.d.ts +109 -8
- package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +931 -92
- package/dist/core/ingestion/scope-resolution/passes/return-shape-members.d.ts +58 -0
- package/dist/core/ingestion/scope-resolution/passes/return-shape-members.js +458 -0
- package/dist/core/ingestion/scope-resolution/passes/unique-name-properties.d.ts +180 -0
- package/dist/core/ingestion/scope-resolution/passes/unique-name-properties.js +418 -0
- package/dist/core/ingestion/scope-resolution/pipeline/phase.d.ts +34 -0
- package/dist/core/ingestion/scope-resolution/pipeline/phase.js +82 -38
- package/dist/core/ingestion/scope-resolution/pipeline/run.d.ts +61 -1
- package/dist/core/ingestion/scope-resolution/pipeline/run.js +384 -48
- package/dist/core/ingestion/scope-resolution/resolution-outcome.d.ts +112 -2
- package/dist/core/ingestion/scope-resolution/resolution-outcome.js +38 -1
- package/dist/core/ingestion/scope-resolution/scope/namespace-targets.d.ts +25 -3
- package/dist/core/ingestion/scope-resolution/scope/namespace-targets.js +36 -16
- package/dist/core/ingestion/scope-resolution/scope/walkers.d.ts +210 -9
- package/dist/core/ingestion/scope-resolution/scope/walkers.js +968 -56
- package/dist/core/ingestion/scope-resolution/summary-maps.d.ts +28 -0
- package/dist/core/ingestion/scope-resolution/summary-maps.js +50 -0
- package/dist/core/ingestion/scope-resolution/undecided-satisfaction.d.ts +55 -0
- package/dist/core/ingestion/scope-resolution/undecided-satisfaction.js +37 -0
- package/dist/core/ingestion/scope-resolution/unresolved-receivers.d.ts +109 -0
- package/dist/core/ingestion/scope-resolution/unresolved-receivers.js +204 -0
- package/dist/core/ingestion/scope-resolution/utils/definition-id.d.ts +13 -0
- package/dist/core/ingestion/scope-resolution/utils/definition-id.js +19 -0
- package/dist/core/ingestion/scope-resolution/utils/generic-instantiation.d.ts +171 -0
- package/dist/core/ingestion/scope-resolution/utils/generic-instantiation.js +218 -0
- package/dist/core/ingestion/scope-resolution/workspace-index-types.d.ts +34 -0
- package/dist/core/ingestion/scope-resolution/workspace-index-types.js +15 -0
- package/dist/core/ingestion/scope-resolution/workspace-index.d.ts +7 -20
- package/dist/core/ingestion/taint/typescript-model.js +34 -2
- package/dist/core/ingestion/tree-sitter-queries.d.ts +11 -11
- package/dist/core/ingestion/tree-sitter-queries.js +688 -5
- package/dist/core/ingestion/type-env.js +11 -7
- package/dist/core/ingestion/type-extractors/jvm.js +17 -2
- package/dist/core/ingestion/type-extractors/shared.d.ts +17 -0
- package/dist/core/ingestion/type-extractors/shared.js +16 -0
- package/dist/core/ingestion/type-extractors/types.d.ts +12 -0
- package/dist/core/ingestion/type-extractors/typescript.d.ts +20 -0
- package/dist/core/ingestion/type-extractors/typescript.js +26 -0
- package/dist/core/ingestion/utils/ast-helpers.d.ts +311 -14
- package/dist/core/ingestion/utils/ast-helpers.js +745 -48
- package/dist/core/ingestion/utils/call-analysis.d.ts +27 -22
- package/dist/core/ingestion/utils/call-analysis.js +202 -7
- package/dist/core/ingestion/utils/callable-flow-captures.d.ts +153 -0
- package/dist/core/ingestion/utils/callable-flow-captures.js +928 -0
- package/dist/core/ingestion/utils/callable-labels.d.ts +25 -0
- package/dist/core/ingestion/utils/callable-labels.js +31 -0
- package/dist/core/ingestion/utils/effective-ram.d.ts +40 -0
- package/dist/core/ingestion/utils/effective-ram.js +58 -0
- package/dist/core/ingestion/utils/line-base.d.ts +14 -0
- package/dist/core/ingestion/utils/line-base.js +14 -0
- package/dist/core/ingestion/utils/method-props.d.ts +27 -4
- package/dist/core/ingestion/utils/method-props.js +29 -4
- package/dist/core/ingestion/utils/receiver-chain-captures.d.ts +31 -0
- package/dist/core/ingestion/utils/receiver-chain-captures.js +57 -0
- package/dist/core/ingestion/utils/receiver-chain-codec.d.ts +89 -0
- package/dist/core/ingestion/utils/receiver-chain-codec.js +182 -0
- package/dist/core/ingestion/utils/scope-tree-walk.d.ts +22 -0
- package/dist/core/ingestion/utils/scope-tree-walk.js +33 -0
- package/dist/core/ingestion/utils/template-arguments.d.ts +96 -0
- package/dist/core/ingestion/utils/template-arguments.js +196 -0
- package/dist/core/ingestion/utils/type-parameters.d.ts +49 -0
- package/dist/core/ingestion/utils/type-parameters.js +206 -0
- package/dist/core/ingestion/workers/callable-id.d.ts +72 -0
- package/dist/core/ingestion/workers/callable-id.js +116 -0
- package/dist/core/ingestion/workers/parse-worker.d.ts +14 -1
- package/dist/core/ingestion/workers/parse-worker.js +409 -39
- package/dist/core/ingestion/workers/worker-pool.d.ts +34 -27
- package/dist/core/ingestion/workers/worker-pool.js +133 -25
- package/dist/core/lbug/csv-generator.d.ts +27 -0
- package/dist/core/lbug/csv-generator.js +80 -17
- package/dist/core/lbug/extension-load-error.d.ts +2 -2
- package/dist/core/lbug/extension-load-error.js +44 -27
- package/dist/core/lbug/extension-loader.d.ts +29 -0
- package/dist/core/lbug/extension-loader.js +32 -7
- package/dist/core/lbug/graph-emit-sink.d.ts +264 -0
- package/dist/core/lbug/graph-emit-sink.js +581 -0
- package/dist/core/lbug/lbug-adapter.d.ts +337 -3
- package/dist/core/lbug/lbug-adapter.js +772 -67
- package/dist/core/lbug/lbug-config.d.ts +93 -6
- package/dist/core/lbug/lbug-config.js +269 -9
- package/dist/core/lbug/native-check.d.ts +39 -0
- package/dist/core/lbug/native-check.js +323 -46
- package/dist/core/lbug/pdg-emit-sink.d.ts +13 -4
- package/dist/core/lbug/pdg-emit-sink.js +21 -111
- package/dist/core/lbug/pool-adapter.d.ts +23 -1
- package/dist/core/lbug/pool-adapter.js +115 -7
- package/dist/core/lbug/query-batch.d.ts +75 -0
- package/dist/core/lbug/query-batch.js +102 -0
- package/dist/core/lbug/rel-pair-routing.d.ts +160 -2
- package/dist/core/lbug/rel-pair-routing.js +228 -10
- package/dist/core/lbug/schema.d.ts +162 -3
- package/dist/core/lbug/schema.js +392 -157
- package/dist/core/lbug/sidecar-recovery.d.ts +1 -0
- package/dist/core/lbug/sidecar-recovery.js +1 -1
- package/dist/core/lbug/sync-csv-writer.d.ts +47 -0
- package/dist/core/lbug/sync-csv-writer.js +108 -0
- package/dist/core/lbug/wal-checkpoint-driver.js +3 -0
- package/dist/core/platform/capabilities.d.ts +0 -1
- package/dist/core/platform/capabilities.js +12 -7
- package/dist/core/run-analyze.d.ts +150 -3
- package/dist/core/run-analyze.js +1562 -151
- package/dist/core/search/bm25-index.d.ts +11 -0
- package/dist/core/search/bm25-index.js +60 -26
- package/dist/core/search/fts-indexes.d.ts +167 -2
- package/dist/core/search/fts-indexes.js +264 -10
- package/dist/core/wiki/graph-queries.js +145 -112
- package/dist/core/wiki/llm-client.d.ts +37 -5
- package/dist/core/wiki/llm-client.js +88 -17
- package/dist/core/wiki/prompts.d.ts +19 -0
- package/dist/core/wiki/prompts.js +20 -1
- package/dist/lib/utils.d.ts +113 -0
- package/dist/lib/utils.js +185 -0
- package/dist/mcp/http-transport.d.ts +5 -0
- package/dist/mcp/http-transport.js +19 -5
- package/dist/mcp/local/aop-metadata.d.ts +77 -0
- package/dist/mcp/local/aop-metadata.js +227 -0
- package/dist/mcp/local/bean-metadata.d.ts +3 -0
- package/dist/mcp/local/bean-metadata.js +46 -0
- package/dist/mcp/local/local-backend.d.ts +167 -6
- package/dist/mcp/local/local-backend.js +1756 -405
- package/dist/mcp/local/path-predicate.d.ts +19 -0
- package/dist/mcp/local/path-predicate.js +21 -0
- package/dist/mcp/local/pdg-impact.d.ts +132 -10
- package/dist/mcp/local/pdg-impact.js +391 -98
- package/dist/mcp/output-budget.d.ts +5 -0
- package/dist/mcp/output-budget.js +52 -0
- package/dist/mcp/read-only-policy.d.ts +12 -0
- package/dist/mcp/read-only-policy.js +102 -0
- package/dist/mcp/repository-policy.d.ts +35 -0
- package/dist/mcp/repository-policy.js +333 -0
- package/dist/mcp/resources.js +34 -7
- package/dist/mcp/server.d.ts +5 -2
- package/dist/mcp/server.js +48 -18
- package/dist/mcp/tools.d.ts +8 -8
- package/dist/mcp/tools.js +91 -20
- package/dist/server/analyze-job.d.ts +40 -2
- package/dist/server/analyze-job.js +30 -2
- package/dist/server/analyze-launch.d.ts +1 -1
- package/dist/server/analyze-launch.js +79 -10
- package/dist/server/analyze-worker-core.d.ts +3 -2
- package/dist/server/analyze-worker-core.js +15 -3
- package/dist/server/analyze-worker-ipc.d.ts +1 -1
- package/dist/server/analyze-worker-ipc.js +4 -0
- package/dist/server/analyze-worker-protocol.d.ts +59 -0
- package/dist/server/analyze-worker-protocol.js +1 -0
- package/dist/server/analyze-worker.d.ts +1 -17
- package/dist/server/analyze-worker.js +29 -6
- package/dist/server/api.d.ts +2 -11
- package/dist/server/api.js +200 -155
- package/dist/server/embed-run-outcome.d.ts +89 -0
- package/dist/server/embed-run-outcome.js +88 -0
- package/dist/server/git-clone.js +6 -2
- package/dist/server/mcp-http.d.ts +1 -1
- package/dist/server/mcp-http.js +4 -2
- package/dist/server/middleware.d.ts +116 -9
- package/dist/server/middleware.js +291 -22
- package/dist/server/sse-progress.d.ts +41 -0
- package/dist/server/sse-progress.js +125 -0
- package/dist/server/upload-ingest.js +2 -1
- package/dist/server/validation.js +2 -1
- package/dist/storage/branch-index.d.ts +11 -6
- package/dist/storage/branch-index.js +15 -7
- package/dist/storage/file-hash.js +2 -2
- package/dist/storage/fs-atomic.d.ts +25 -0
- package/dist/storage/fs-atomic.js +42 -0
- package/dist/storage/git.d.ts +165 -0
- package/dist/storage/git.js +352 -3
- package/dist/storage/index-lock.d.ts +83 -0
- package/dist/storage/index-lock.js +654 -0
- package/dist/storage/parse-cache.js +482 -1
- package/dist/storage/parsedfile-store.d.ts +8 -0
- package/dist/storage/parsedfile-store.js +235 -1
- package/dist/storage/repo-manager.d.ts +29 -309
- package/dist/storage/repo-manager.js +187 -165
- package/dist/storage/repo-meta.d.ts +530 -0
- package/dist/storage/repo-meta.js +100 -0
- package/dist/types/pipeline.d.ts +37 -0
- package/hooks/antigravity/gitnexus-antigravity-hook.cjs +1 -1
- package/hooks/claude/gitnexus-hook.cjs +1 -1
- package/hooks/claude/resolve-analyze-cmd.cjs +80 -13
- package/package.json +20 -12
- package/scripts/cross-platform-shard.ts +143 -0
- package/scripts/cross-platform-tests.ts +94 -0
- package/scripts/ensure-fts.ts +14 -3
- package/scripts/run-cross-platform.ts +36 -10
- package/scripts/sync-plugin-manifests.mjs +192 -0
- package/skills/gitnexus-cli.md +3 -3
- package/skills/gitnexus-debugging.md +37 -7
- package/skills/gitnexus-exploring.md +26 -4
- package/skills/gitnexus-impact-analysis.md +71 -10
- package/skills/gitnexus-lfg/README.md +55 -0
- package/skills/gitnexus-lfg/SKILL.md +86 -0
- package/skills/gitnexus-plan/README.md +147 -0
- package/skills/gitnexus-plan/SKILL.md +348 -0
- package/skills/gitnexus-plan/references/context-ledger.md +137 -0
- package/skills/gitnexus-plan/references/context-pack.md +126 -0
- package/skills/gitnexus-plan/references/evidence-provenance.md +309 -0
- package/skills/gitnexus-plan/references/pdg-slice.md +109 -0
- package/skills/gitnexus-plan/references/plan-template.md +201 -0
- package/skills/gitnexus-plan/scripts/evidence-provenance.mjs +2366 -0
- package/skills/gitnexus-refactoring.md +48 -5
- package/skills/gitnexus-review/SKILL.md +279 -0
- package/skills/gitnexus-review/ci-personas/ci-adversarial-lens.md +42 -0
- package/skills/gitnexus-review/ci-personas/ci-blast-radius-lens.md +39 -0
- package/skills/gitnexus-review/ci-personas/ci-correctness-lens.md +37 -0
- package/skills/gitnexus-review/ci-personas/ci-coverage-lens.md +40 -0
- package/skills/gitnexus-review/ci-personas/ci-critic-lens.md +42 -0
- package/skills/gitnexus-review/ci-personas/ci-security-lens.md +39 -0
- package/skills/gitnexus-taint-analysis.md +13 -7
- package/skills/gitnexus-work/README.md +71 -0
- package/skills/gitnexus-work/SKILL.md +272 -0
- package/skills/gitnexus-work/references/evidence-provenance.md +309 -0
- package/skills/gitnexus-work/scripts/evidence-provenance.mjs +2366 -0
- package/vendor/leiden/utils.cjs +28 -1
- package/web/assets/ProcessFlowModal-Badh2Pbg.js +24 -0
- package/web/assets/__vite-browser-external-bMKyYQkO.js +1 -0
- package/web/assets/abnfDiagram-QNN2D4NM-Cq2djWWe.js +1 -0
- package/web/assets/agent-DIzEQ1JJ.js +626 -0
- package/web/assets/architecture-TIHT7OUA-V6N4J3SY-fTePvLoe.js +1 -0
- package/web/assets/architectureDiagram-OT7VKSJ7-mKEXxkeF.js +36 -0
- package/web/assets/blockDiagram-54WLDVWM-Dg_hrRWE.js +132 -0
- package/web/assets/{c4Diagram-Y2BXMSZH-DOXVs7-C.js → c4Diagram-X2LASM7V-CnhoT4aV.js} +6 -6
- package/web/assets/chunk-224SPVON-B8gxtXpy.js +1 -0
- package/web/assets/chunk-2AEHWXPW-CV4r6-1I.js +127 -0
- package/web/assets/chunk-2SREHG4O-Dip42xOq.js +1 -0
- package/web/assets/chunk-4RFN2BYJ-DHHWuC-n.js +1 -0
- package/web/assets/chunk-66DQ2XMT-CM0xjFAN.js +1 -0
- package/web/assets/chunk-6BELYETK-ChsYtfHW.js +1 -0
- package/web/assets/chunk-6L755F7B-CMhLBxi2.js +1 -0
- package/web/assets/chunk-7CWYLC5S-DRgGkkpF.js +2 -0
- package/web/assets/chunk-A7VWPJGB-B4O3oQdQ.js +1 -0
- package/web/assets/chunk-BI6VK774-D0oaWk8V.js +1 -0
- package/web/assets/chunk-D6VWDJW2-BxcBdZ9c.js +2 -0
- package/web/assets/chunk-DMV4VAQV-Bn6WXDSX.js +4 -0
- package/web/assets/chunk-E5QJAATJ-dh-5CtIV.js +2 -0
- package/web/assets/chunk-EQFTRU2I-1ix7TzW9.js +2 -0
- package/web/assets/chunk-FWYVLQTC-BgDItRzJ.js +1 -0
- package/web/assets/chunk-HNC4WDU7-DoU3KnA7.js +1 -0
- package/web/assets/chunk-L5GCOVLC-CE2w8Nm_.js +161 -0
- package/web/assets/chunk-LAHSG3N2-Bz4hcn0N.js +321 -0
- package/web/assets/chunk-LORZLZWG-B57uGw2N.js +88 -0
- package/web/assets/chunk-NLANEA3F-XpH_NPA5.js +62 -0
- package/web/assets/chunk-NV3KIAZN-5yvcpMiu.js +1 -0
- package/web/assets/chunk-OIYT25JQ-CQ6KOZGX.js +1 -0
- package/web/assets/chunk-PE7DX7ZZ-CCvRVj43.js +10 -0
- package/web/assets/chunk-Q67WD55A-BWCH2SVz.js +156 -0
- package/web/assets/chunk-RRFMTAIC-CMN0wcYA.js +1 -0
- package/web/assets/{chunk-RLI5ZMPA-CkXZ0y0U.js → chunk-SATU7PGQ-B1zhgOvc.js} +1 -1
- package/web/assets/chunk-STOV2HOB-GnExfzIX.js +1 -0
- package/web/assets/chunk-SZD42YQK-ijyKKVr1.js +70 -0
- package/web/assets/chunk-TFPGFQPA-Dj6a-0pC.js +231 -0
- package/web/assets/chunk-TGVD4F4B-BMc31Gj2.js +2 -0
- package/web/assets/chunk-TZUXEDM2-B7p9AcTw.js +1 -0
- package/web/assets/chunk-UAT7B5JY-DW-A_fpI.js +1 -0
- package/web/assets/{chunk-6764PJDD-C7xxk063.js → chunk-VE5CLXGZ-C1vB7wpY.js} +1 -1
- package/web/assets/chunk-VJFVEZTB-CX66F2ep.js +206 -0
- package/web/assets/chunk-VY5UBI4V-yxPQAWxw.js +1 -0
- package/web/assets/chunk-WJBAP47W-BckNkuEN.js +1 -0
- package/web/assets/chunk-XNMVGMAZ-Cg_LnPtj.js +1 -0
- package/web/assets/classDiagram-VPOSVPXH-BjOiXA_C.js +1 -0
- package/web/assets/classDiagram-v2-5VFNUXQA-BjOiXA_C.js +1 -0
- package/web/assets/{cose-bilkent-UX7MHV2Q-BmnZ7Mvj.js → cose-bilkent-RZA4XIPR-BHpK4Crp.js} +1 -1
- package/web/assets/cynefin-VYW2F7L2-2VAHYKR6-DAsF6GZv.js +1 -0
- package/web/assets/cynefinDiagram-TR7LZUCG-C3Iar9lZ.js +62 -0
- package/web/assets/dagre-K64A6Z3X-CUwi79mA.js +4 -0
- package/web/assets/diagram-2TLGJV2N-C2F5Nfym.js +30 -0
- package/web/assets/diagram-JCD7PQ7C-DC5-9FRr.js +24 -0
- package/web/assets/diagram-KFBZAVDW-Dfmf_4ti.js +3 -0
- package/web/assets/diagram-L7DVE3PN-GIRyVUtt.js +41 -0
- package/web/assets/diagram-YP3FGXHI-CyNFYtkd.js +24 -0
- package/web/assets/ebnfDiagram-DRHRQJWO-D8_CI4ZF.js +1 -0
- package/web/assets/erDiagram-SZLJLQMB-CohQjznC.js +85 -0
- package/web/assets/eventmodeling-45OFAUF4-AOUJWSLX-BvTc6iQi.js +1 -0
- package/web/assets/flowDiagram-BWE6NHOH-B6RnEvD9.js +1 -0
- package/web/assets/ganttDiagram-2QTCJSNI-Cks_mEcF.js +292 -0
- package/web/assets/gitGraph-TEB2WS4Q-U5VWYIBC-Dy7CCSZ5.js +1 -0
- package/web/assets/gitGraphDiagram-VVZAVV5G-CG41cIVc.js +106 -0
- package/web/assets/{index-B4eB4dNZ.js → index-BBNl0qfX.js} +51 -51
- package/web/assets/index-CJDpyH-n.css +2 -0
- package/web/assets/info-DKCQHKI2-DX6KST54-BLJg1ikX.js +1 -0
- package/web/assets/infoDiagram-FY4PZKRE-BJ3vPVwW.js +2 -0
- package/web/assets/{ishikawaDiagram-BNXS4ZKH-BLjivjXL.js → ishikawaDiagram-4JDSWWDM-DmqWtjkl.js} +6 -6
- package/web/assets/{journeyDiagram-M6C3CM3L-Cetgs3NH.js → journeyDiagram-QUS3FAKT-XAzVzrQW.js} +6 -6
- package/web/assets/{kanban-definition-75IXJCU3-DMlCaIpf.js → kanban-definition-D4L7SQKK-YurRnmYn.js} +27 -27
- package/web/assets/katex-C5OPUE3Q-Bnbavtmu.js +257 -0
- package/web/assets/{mindmap-definition-2TDM6QVE-B4GbXQBc.js → mindmap-definition-66QP5TD6-ChrWWnil.js} +29 -29
- package/web/assets/node-Ct_zna8U.js +8 -0
- package/web/assets/packet-7NZHBO7P-5WG45QPS-KUxcuvaA.js +1 -0
- package/web/assets/pegDiagram-YKIO5C6U-QGeQLEq2.js +1 -0
- package/web/assets/pie-RZYD4A2V-2OCZ2VTD-DPs08kJY.js +1 -0
- package/web/assets/pieDiagram-YPY3TKG5-BuT3MYzm.js +39 -0
- package/web/assets/preload-helper-Czpn1I53.js +1 -0
- package/web/assets/{quadrantDiagram-VICAPDV7-B1TQnlm0.js → quadrantDiagram-VO5QLCXA-B7098wSc.js} +6 -6
- package/web/assets/radar-I7S5WNFK-EPLSA35B-w5F0K3a7.js +1 -0
- package/web/assets/railroad-3IZDKUUU-PWFQV6Y6-Bu668yqY.js +1 -0
- package/web/assets/railroad-abnf-AHOZXSZD-JYYJX3BS-B6ghpETS.js +1 -0
- package/web/assets/railroad-ebnf-EBAXGLYW-RBZ4ONAP-D-XmHh3M.js +1 -0
- package/web/assets/railroad-peg-LSFZ7HO6-KHNPXGPG-mhkrhzEn.js +1 -0
- package/web/assets/railroadDiagram-M77LTMSB-AXu4vxk_.js +1 -0
- package/web/assets/requirementDiagram-RASO5HTO-B-l8InpK.js +84 -0
- package/web/assets/sankeyDiagram-F32LOJ6L-Kd7zjJgX.js +40 -0
- package/web/assets/sdk-CzHHH8tD.js +37 -0
- package/web/assets/sequenceDiagram-URATNSBD-BlcdY9DS.js +162 -0
- package/web/assets/sizeCapture-5GORAGP4-BEqQzsxs.js +1 -0
- package/web/assets/src-C5sx_gMp.js +1 -0
- package/web/assets/stateDiagram-DODFXNG5-DTdHc-fF.js +1 -0
- package/web/assets/stateDiagram-v2-JNMM5JRA-DioNLDDo.js +1 -0
- package/web/assets/swimlanes-OSWOYLSK-CA0ofdwY.js +2 -0
- package/web/assets/swimlanesDiagram-RHGX2RDE-PkwUdckC.js +8 -0
- package/web/assets/timeline-definition-WJXWRH4I-DUfp1R3E.js +120 -0
- package/web/assets/treeView-QDETBFTQ-EHYTSQNO-C5lpBgPm.js +1 -0
- package/web/assets/treemap-6X3UGDF4-CCWCF7EK-BB0ZyO-B.js +1 -0
- package/web/assets/vennDiagram-K3VCMQLI-Bj-FN-XS.js +34 -0
- package/web/assets/wardley-OPB4EBWU-6OWERDVT-CEA3Nq0j.js +1 -0
- package/web/assets/wardleyDiagram-XK6FUAWV-CVV0dHFr.js +78 -0
- package/web/assets/xychartDiagram-5VRUVLCW-CK_rbSWE.js +7 -0
- package/web/index.html +17 -15
- package/dist/core/ingestion/languages/python/index-stats.d.ts +0 -18
- package/dist/core/ingestion/languages/python/index-stats.js +0 -25
- package/skills/gitnexus-pr-review.md +0 -163
- package/web/assets/ProcessFlowModal-Dna7GkwO.js +0 -22
- package/web/assets/agent-DNYDy-KA.js +0 -660
- package/web/assets/architecture-7EHR7CIX-6QZW5X65-BVWFvYz2.js +0 -1
- package/web/assets/architectureDiagram-UL44E2DR-BU5ZRITg.js +0 -36
- package/web/assets/blockDiagram-7IZFK4PR-Dut1BpTV.js +0 -132
- package/web/assets/chunk-2T2R6R2M-pkw2oXHH.js +0 -4
- package/web/assets/chunk-2UTLFMKG-CXlhF3Pt.js +0 -1
- package/web/assets/chunk-3SSMPTDK-rPsRM1x0.js +0 -321
- package/web/assets/chunk-4R4BOZG6-Be_F0JoX.js +0 -159
- package/web/assets/chunk-67TQ5CYL-zxhDWgyF.js +0 -124
- package/web/assets/chunk-7J6CGLKN-AmkN8jJN.js +0 -10
- package/web/assets/chunk-C62D2QBJ-3gdL8EKc.js +0 -1
- package/web/assets/chunk-CEXFNPSA-CjwtMDkc.js +0 -1
- package/web/assets/chunk-INKRHTLW-D9BM9HWZ.js +0 -70
- package/web/assets/chunk-J5EP6P6S-L19oz55R.js +0 -1
- package/web/assets/chunk-KGFNY3KK-tD2F6wxK.js +0 -62
- package/web/assets/chunk-KGYTTC2M-zm6n242I.js +0 -1
- package/web/assets/chunk-KNLZD3CH-BGlP6X9R.js +0 -1
- package/web/assets/chunk-LCXTWHL2-Ba9JK-6F.js +0 -231
- package/web/assets/chunk-LII3EMHJ-EGx-eBIu.js +0 -1
- package/web/assets/chunk-LRIF4GLE-C3_PqUBq.js +0 -1
- package/web/assets/chunk-QA3QBVWF-D4cSJBf6.js +0 -2
- package/web/assets/chunk-RERM46MO-B5dAdWpP.js +0 -1
- package/web/assets/chunk-RG4AUYOV-OqBBMwuQ.js +0 -206
- package/web/assets/chunk-RKZBBQEN-MyIQbGgD.js +0 -1
- package/web/assets/chunk-T2UQINTJ-BJusEiGe.js +0 -1
- package/web/assets/chunk-UP6H54XL-BG-n7qDp.js +0 -1
- package/web/assets/chunk-UXSXWOXI-CW1_r5cS.js +0 -1
- package/web/assets/chunk-UY5QBCOK-BCpUlARQ.js +0 -1
- package/web/assets/chunk-VU6ZFW4Y-BeXVk45_.js +0 -2
- package/web/assets/chunk-ZXARS5L4-BI_qR2Nm.js +0 -1
- package/web/assets/classDiagram-KGZ6W3CR-D9zSIg0x.js +0 -1
- package/web/assets/classDiagram-v2-72OJOZXJ-D9zSIg0x.js +0 -1
- package/web/assets/dagre-ND4H6XIP-CpcV5kbl.js +0 -4
- package/web/assets/diagram-3NCE3AQN-6SMxBRpj.js +0 -43
- package/web/assets/diagram-GF46GFSD-BZEdNcRZ.js +0 -24
- package/web/assets/diagram-HNR7UZ2L-DxKW2a2Y.js +0 -3
- package/web/assets/diagram-QXG6HAR7-HfTHcXX_.js +0 -24
- package/web/assets/diagram-WEQXMOUZ-CyijUS8r.js +0 -10
- package/web/assets/erDiagram-L5TCEMPS-D0fvpWEX.js +0 -85
- package/web/assets/eventmodeling-FCH6USID-MREXMVOE-CgFBM7e-.js +0 -1
- package/web/assets/flowDiagram-H6V6AXG4-Bvr9bbhk.js +0 -162
- package/web/assets/ganttDiagram-JCBTUEKG-TzODrLzv.js +0 -292
- package/web/assets/gitGraph-WXDBUCRP-R675I2BI-DCJv7SII.js +0 -1
- package/web/assets/gitGraphDiagram-S2ZK5IYY-ONQSwJIY.js +0 -106
- package/web/assets/index-CX_fADmQ.css +0 -2
- package/web/assets/info-J43DQDTF-KCYPFFUO-BfNy-9Nd.js +0 -1
- package/web/assets/infoDiagram-3YFTVSEB-DIPVUIQ6.js +0 -2
- package/web/assets/katex-K3KEBU37-qRQBy-EZ.js +0 -261
- package/web/assets/packet-YPE3B663-LP52Z2RK-D4qkeG9k.js +0 -1
- package/web/assets/pie-LRSECV5Y-TCRJHUBD-B_yMKyQa.js +0 -1
- package/web/assets/pieDiagram-CU6KROY3-D3YC_xyg.js +0 -30
- package/web/assets/radar-GUYGQ44K-RDLRG3WG-DeD6yN_0.js +0 -1
- package/web/assets/requirementDiagram-JXO7QTGE-f8wczLQf.js +0 -84
- package/web/assets/sankeyDiagram-URQDO5SZ-BTxzG5j0.js +0 -40
- package/web/assets/sequenceDiagram-VS2MUI6T-DuamM-IR.js +0 -162
- package/web/assets/src-BNCXICdA.js +0 -1
- package/web/assets/stateDiagram-7D4R322I-Ch2pEUcw.js +0 -1
- package/web/assets/stateDiagram-v2-36443NZ5-7ANuoZLL.js +0 -1
- package/web/assets/timeline-definition-O6YCAMPW-07BR8R8G.js +0 -120
- package/web/assets/treeView-BLDUP644-QA4HXRO3-CDuSYnd4.js +0 -1
- package/web/assets/treemap-LRROVOQU-LLAWBHMP-imazucyJ.js +0 -1
- package/web/assets/vennDiagram-MWXL3ELB-BQX2ossk.js +0 -34
- package/web/assets/wardley-L42UT6IY-5TKZOOLJ-DqrT9tB8.js +0 -1
- package/web/assets/wardleyDiagram-CUQ6CDDI-CGIJBBiK.js +0 -78
- package/web/assets/xychartDiagram-N2JHSOCM-B3HNMuWp.js +0 -7
- /package/web/assets/{chunk-7W6UQGC5-pyKGssV3.js → chunk-LIEV3EAG-pyKGssV3.js} +0 -0
|
@@ -83,9 +83,17 @@ interface LanguageProviderConfig {
|
|
|
83
83
|
* The current C++ UE-macro preprocessor relies on the practical fact that
|
|
84
84
|
* UE reflection macros and module-export tokens are ASCII-only.
|
|
85
85
|
*
|
|
86
|
-
* Must be a pure function — same input always yields the same output
|
|
87
|
-
*
|
|
88
|
-
*
|
|
86
|
+
* Must be a pure function — same input always yields the same output, and
|
|
87
|
+
* re-applying it to its own output changes nothing.
|
|
88
|
+
*
|
|
89
|
+
* Applied by the parse worker (`parse-worker.ts`), by `extractParsedFile`
|
|
90
|
+
* (`scope-extractor-bridge.ts`) on the parse-cache-miss path, and by the
|
|
91
|
+
* embedding parse (`embeddings/ast-utils.ts`, which does not go through the
|
|
92
|
+
* bridge). Any *new* path that re-parses a file must apply it too, or the two
|
|
93
|
+
* halves of the pipeline analyze different programs — and note the set is not
|
|
94
|
+
* closed today: language-owned re-parse helpers reached through other
|
|
95
|
+
* provider hooks (e.g. `populateRangeBindings`) still see raw text.
|
|
96
|
+
* `test/unit/preprocess-source-parity.test.ts` pins the bridge equivalence.
|
|
89
97
|
*
|
|
90
98
|
* Default: undefined (no preprocessing — `file.content` is parsed verbatim).
|
|
91
99
|
*/
|
|
@@ -163,6 +171,16 @@ interface LanguageProviderConfig {
|
|
|
163
171
|
* (e.g., 'Method' for Kotlin), or defaultLabel to keep as-is.
|
|
164
172
|
* Default: undefined (standard label assignment). */
|
|
165
173
|
readonly labelOverride?: (functionNode: SyntaxNode, defaultLabel: NodeLabel) => NodeLabel | null;
|
|
174
|
+
/**
|
|
175
|
+
* Suppress a definition query match after its default label is known.
|
|
176
|
+
* Languages use this for syntax that represents an implicit declaration
|
|
177
|
+
* unless an explicit declaration with the same semantics is present.
|
|
178
|
+
*
|
|
179
|
+
* `defaultLabel` is supplied so an implementation can scope itself to one
|
|
180
|
+
* kind of definition; implementations whose capture map alone decides the
|
|
181
|
+
* question may ignore it.
|
|
182
|
+
*/
|
|
183
|
+
readonly shouldSkipDefinitionCapture?: (captureMap: CaptureMap, defaultLabel: NodeLabel) => boolean;
|
|
166
184
|
/** MRO strategy for multiple inheritance resolution.
|
|
167
185
|
* Default: 'first-wins'. */
|
|
168
186
|
readonly mroStrategy?: MroStrategy;
|
|
@@ -217,14 +235,22 @@ interface LanguageProviderConfig {
|
|
|
217
235
|
* Default: undefined (no route extraction). */
|
|
218
236
|
readonly extractRoutes?: (tree: Parser.Tree, filePath: string, reader: (relativePath: string) => string | null, parser?: Parser | null) => ExtractedRoute[];
|
|
219
237
|
/**
|
|
220
|
-
* Extract
|
|
238
|
+
* Extract routes that a parsed file declares in its own AST.
|
|
221
239
|
*
|
|
222
240
|
* When defined, the parse worker calls this after per-file capture processing
|
|
223
|
-
* to extract
|
|
241
|
+
* to extract route definitions that require AST-level analysis beyond
|
|
224
242
|
* generic `@decorator` captures (e.g., Java Spring class-level prefix joining,
|
|
225
243
|
* multi-class handling). The returned routes are appended to `decoratorRoutes`.
|
|
226
244
|
*
|
|
227
|
-
*
|
|
245
|
+
* Decorators are the common case and the reason for the name, but not the only
|
|
246
|
+
* shape: JS/TS uses this hook for hand-rolled dispatch guards
|
|
247
|
+
* (`route-extractors/dispatch-guard.ts`), where a raw `node:http` server
|
|
248
|
+
* declares a route by comparing the request path to a literal. Anything that
|
|
249
|
+
* yields a `(path, verb, handler)` triple from one file's AST belongs here —
|
|
250
|
+
* set `ExtractedDecoratorRoute.source` when the provenance is not a decorator,
|
|
251
|
+
* so the `HANDLES_ROUTE` edge does not claim one.
|
|
252
|
+
*
|
|
253
|
+
* Default: undefined (no language-specific route extraction).
|
|
228
254
|
*/
|
|
229
255
|
readonly extractDecoratorRoutes?: (tree: Parser.Tree, filePath: string, lineOffset: number) => ExtractedDecoratorRoute[];
|
|
230
256
|
/**
|
|
@@ -339,6 +365,93 @@ interface LanguageProviderConfig {
|
|
|
339
365
|
* Required when `emitScopeCaptures` is implemented.
|
|
340
366
|
*/
|
|
341
367
|
readonly interpretImport?: (captures: CaptureMatch) => ParsedImport | null;
|
|
368
|
+
/**
|
|
369
|
+
* Do this language's imports EXECUTE at the point in the program where they
|
|
370
|
+
* are written?
|
|
371
|
+
*
|
|
372
|
+
* The scope extractor marks an import `runsOnlyWhenCalled` when the statement
|
|
373
|
+
* sits inside a `Function` scope (Pass 3): where imports are executed
|
|
374
|
+
* statements, one written in a function body runs only when that function is
|
|
375
|
+
* called — Python's `def f(): from x import Y`, Ruby's
|
|
376
|
+
* `def f; require 'x'; end`, a CommonJS `require()` in a body (which
|
|
377
|
+
* `javascript/captures.ts` does capture, via its own AST walk). That rule is
|
|
378
|
+
* about EXECUTION. It says nothing true about a language whose "import" is
|
|
379
|
+
* not an executed statement at all, and in such a language moving one into a
|
|
380
|
+
* function body defers exactly nothing.
|
|
381
|
+
*
|
|
382
|
+
* "Where written" is about execution time, not textual placement: a
|
|
383
|
+
* `#include` is spliced precisely where it is written and still answers
|
|
384
|
+
* `false`, because splicing is not running.
|
|
385
|
+
*
|
|
386
|
+
* **The failure directions are not symmetric, which is why the default is
|
|
387
|
+
* what it is.** Answering `false` for a language that really does execute
|
|
388
|
+
* its imports un-defers a deliberately lazy one, and `check --cycles`
|
|
389
|
+
* reports a cycle its author broke on purpose — wrong, but visible on screen
|
|
390
|
+
* and arguable by whoever reads it. Answering `true` for a language that
|
|
391
|
+
* does not SUPPRESSES a cycle that is entirely real: nobody sees it, so
|
|
392
|
+
* nobody can argue with it. Getting this wrong in the `true` direction hides
|
|
393
|
+
* a true cycle, and that is the failure that matters.
|
|
394
|
+
*
|
|
395
|
+
* Absent — the default — reads as `true`, so every provider that does not
|
|
396
|
+
* name this keeps today's behaviour exactly. The flag never ADDS deferral;
|
|
397
|
+
* declaring `false` only WITHHOLDS it.
|
|
398
|
+
*
|
|
399
|
+
* Declared `false` by, and only by:
|
|
400
|
+
*
|
|
401
|
+
* - **C and C++** — `#include` is a preprocessor directive. The header's
|
|
402
|
+
* text is spliced in before a line of the program runs, wherever the
|
|
403
|
+
* directive sits, and C permits one inside a function body. C++'s only
|
|
404
|
+
* other Pass-3 import form, `using ns::name` / `using namespace ns`, is
|
|
405
|
+
* compile-time name lookup, is legal in a function body too, and defers
|
|
406
|
+
* no more than an `#include` does.
|
|
407
|
+
* - **Rust** — `use` is a compile-time path alias, not a statement that
|
|
408
|
+
* runs. `fn f() { use crate::m::X; }` is legal, and putting the `use`
|
|
409
|
+
* there changes only where the name is VISIBLE, never when anything
|
|
410
|
+
* happens; Rust has no module-initialization order in the JS/Python
|
|
411
|
+
* sense and permits intra-crate module cycles outright. It is the
|
|
412
|
+
* structural twin of C++'s `using ns::name`. `rust/query.ts` captures
|
|
413
|
+
* `(use_declaration)` and nothing else, so this covers the whole
|
|
414
|
+
* surface. (The claim here is the narrow one: POSITION does not defer a
|
|
415
|
+
* Rust import. Whether a Rust `use` can create an initialization
|
|
416
|
+
* dependency *at all* is a larger and separate question, and this flag
|
|
417
|
+
* deliberately does not answer it.)
|
|
418
|
+
* - **COBOL** — `COPY` is a pure textual splice performed by the copybook
|
|
419
|
+
* preprocessor, the `#include` case exactly. Latent today: the COBOL
|
|
420
|
+
* `@scope.function` capture covers a single line (`cobol/captures.ts`
|
|
421
|
+
* ranges sections and paragraphs `line → line`), so a `COPY` on any
|
|
422
|
+
* later line never resolves inside one and Pass 3 has nothing to mark.
|
|
423
|
+
* Declared anyway, so that giving those anchors their true multi-line
|
|
424
|
+
* ranges cannot silently start suppressing real copybook cycles.
|
|
425
|
+
*
|
|
426
|
+
* Per-provider rather than per-import, and that is sufficient — the question
|
|
427
|
+
* this answers is narrower than "do this language's imports execute". It is
|
|
428
|
+
* only ever asked of an import that resolved INSIDE A FUNCTION SCOPE, so the
|
|
429
|
+
* real domain is: *can a function-local import in this language be
|
|
430
|
+
* non-executing?* No supported language has two forms that are both
|
|
431
|
+
* function-local and disagree. C++ has two forms, `#include` and
|
|
432
|
+
* `using ns::name`; both can appear in a body and both are compile-time.
|
|
433
|
+
*
|
|
434
|
+
* PHP is the case that looks like a counterexample and is not. It does mix —
|
|
435
|
+
* `use Foo\Bar;` aliases at compile time while `require` executes — but
|
|
436
|
+
* `use` cannot appear in a function body at all (`php/query.ts` records this
|
|
437
|
+
* twice: "`namespace_use_declaration` is an import only at top level / inside
|
|
438
|
+
* namespace scope"), so it never reaches this flag. Absent is therefore
|
|
439
|
+
* PERMANENTLY correct for PHP, including the day `require` is captured: a
|
|
440
|
+
* `require` in a body will correctly defer, and a `use` still cannot get
|
|
441
|
+
* here. Do not read PHP as a reason to build a per-`ParsedImport`
|
|
442
|
+
* classification hook — it would cost a provider call per import on the
|
|
443
|
+
* extractor's hot path, and `ParsedImport.kind` does not discriminate the
|
|
444
|
+
* thing being asked anyway.
|
|
445
|
+
*
|
|
446
|
+
* A capability on the provider rather than a language check in
|
|
447
|
+
* `scope-extractor.ts`: shared `core/ingestion/` pipeline code must not name
|
|
448
|
+
* languages (AGENTS.md), and "imports here are not executed statements" is a
|
|
449
|
+
* property of the language, not of the walk.
|
|
450
|
+
*
|
|
451
|
+
* Default: undefined, read as `true` (imports execute where they are
|
|
452
|
+
* written; position defers them).
|
|
453
|
+
*/
|
|
454
|
+
readonly importsExecuteWhereWritten?: boolean;
|
|
342
455
|
/**
|
|
343
456
|
* What is the implicit receiver on a Function scope? For instance methods
|
|
344
457
|
* this is `self`/`this`; for standalone functions it is `null`. Consulted
|
|
@@ -367,6 +480,19 @@ interface LanguageProviderConfig {
|
|
|
367
480
|
* suffix — `@scope.function` → `'Function'`, etc.).
|
|
368
481
|
*/
|
|
369
482
|
readonly resolveScopeKind?: (captures: CaptureMatch) => ScopeKind | null;
|
|
483
|
+
/**
|
|
484
|
+
* Report the receiver names this scope BINDS rather than inherits — see
|
|
485
|
+
* `Scope.ownsReceivers` (#2701).
|
|
486
|
+
*
|
|
487
|
+
* Called once per `@scope.*` capture during scope-tree construction.
|
|
488
|
+
* Return the shared frozen set for a scope that starts a fresh receiver
|
|
489
|
+
* (a JS/TS ordinary `function`, whose `this` is bound at call time), and
|
|
490
|
+
* `undefined` for one that inherits it (an arrow function, and every
|
|
491
|
+
* closure form in languages that capture the receiver lexically).
|
|
492
|
+
*
|
|
493
|
+
* Default: undefined everywhere — the receiver walk is unchanged.
|
|
494
|
+
*/
|
|
495
|
+
readonly scopeOwnsReceivers?: (captures: CaptureMatch) => ReadonlySet<string> | undefined;
|
|
370
496
|
/**
|
|
371
497
|
* Override where a declaration's name becomes visible. By default the name
|
|
372
498
|
* is bound in the innermost enclosing scope; return a different `ScopeId`
|
|
@@ -396,7 +522,7 @@ interface LanguageProviderConfig {
|
|
|
396
522
|
* Required when `emitScopeCaptures` is implemented. Ring 2 PKG #922
|
|
397
523
|
* provides the adapter that bridges today's resolver shape to this hook.
|
|
398
524
|
*/
|
|
399
|
-
readonly resolveImportTarget?: (parsedImport: ParsedImport, workspaceIndex: WorkspaceIndex) => string | null;
|
|
525
|
+
readonly resolveImportTarget?: (parsedImport: ParsedImport, workspaceIndex: WorkspaceIndex) => string | readonly string[] | null;
|
|
400
526
|
/**
|
|
401
527
|
* Enumerate the exported names of a file — used by the finalize algorithm
|
|
402
528
|
* to expand `import * from M` into individual `BindingRef`s with
|
|
@@ -5,6 +5,21 @@ import { parseSourceSafe } from '../../../tree-sitter/safe-parse.js';
|
|
|
5
5
|
import { splitCInclude } from './import-decomposer.js';
|
|
6
6
|
import { computeCDeclarationArity, computeCCallArity } from './arity-metadata.js';
|
|
7
7
|
import { markStaticName } from './static-linkage.js';
|
|
8
|
+
import { synthesizeReceiverChainCapture } from '../../utils/receiver-chain-captures.js';
|
|
9
|
+
import { synthesizeCallableFlowCaptures, } from '../../utils/callable-flow-captures.js';
|
|
10
|
+
const C_CALLABLE_CAPTURE_OPTIONS = {
|
|
11
|
+
functionNodeTypes: new Set(['function_definition']),
|
|
12
|
+
callNodeTypes: new Set(['call_expression']),
|
|
13
|
+
parameterListNodeTypes: new Set(['parameter_list', 'argument_list']),
|
|
14
|
+
parameterNodeTypes: new Set(['parameter_declaration']),
|
|
15
|
+
bindingNodeTypes: new Set(['init_declarator']),
|
|
16
|
+
assignmentNodeTypes: new Set(['assignment_expression']),
|
|
17
|
+
identifierNodeTypes: new Set(['identifier', 'field_identifier', 'type_identifier']),
|
|
18
|
+
callableSignatureDeclarationNodeTypes: new Set(['declaration', 'parameter_declaration']),
|
|
19
|
+
emitCanonicalInvokeReference: true,
|
|
20
|
+
parameterPassingMode: (parameter) => containsNodeType(parameter, 'pointer_declarator') ? 'pointer' : 'value',
|
|
21
|
+
expectedSignature: (container, destination) => functionDeclaratorSignature(destination) ?? functionDeclaratorSignature(container),
|
|
22
|
+
};
|
|
8
23
|
export function emitCScopeCaptures(sourceText, filePath, cachedTree) {
|
|
9
24
|
let tree = cachedTree;
|
|
10
25
|
if (tree === undefined) {
|
|
@@ -104,10 +119,58 @@ export function emitCScopeCaptures(sourceText, filePath, cachedTree) {
|
|
|
104
119
|
grouped['@reference.arity'] = syntheticCapture('@reference.arity', callNode, String(computeCCallArity(callNode)));
|
|
105
120
|
}
|
|
106
121
|
}
|
|
122
|
+
// Structural receiver chain for a call whose receiver is itself an
|
|
123
|
+
// expression, so resolution can type it by folding over structure
|
|
124
|
+
// instead of re-parsing the receiver's source text. Self-gating: a
|
|
125
|
+
// non-call match, an absent receiver, or a chain with no nameable base
|
|
126
|
+
// all leave `grouped` untouched.
|
|
127
|
+
synthesizeReceiverChainCapture(grouped, nodeMap['@reference.receiver']);
|
|
107
128
|
out.push(grouped);
|
|
108
129
|
}
|
|
130
|
+
out.push(...synthesizeCallableFlowCaptures(tree.rootNode, C_CALLABLE_CAPTURE_OPTIONS));
|
|
109
131
|
return out;
|
|
110
132
|
}
|
|
133
|
+
function functionDeclaratorSignature(node) {
|
|
134
|
+
const declarator = findDescendantOfType(node, 'function_declarator');
|
|
135
|
+
const parameters = declarator?.childForFieldName('parameters');
|
|
136
|
+
if (parameters === null || parameters === undefined)
|
|
137
|
+
return undefined;
|
|
138
|
+
const parameterNodes = parameters.namedChildren.filter((child) => child !== null && child.type === 'parameter_declaration');
|
|
139
|
+
// tree-sitter-c materializes `...` as a NAMED `variadic_parameter` node —
|
|
140
|
+
// the anonymous-token checks never matched, so variadic signatures were
|
|
141
|
+
// emitted with a wrong fixed arity (#2522 review). Keep the token checks
|
|
142
|
+
// for grammar variants that expose `...` as an anonymous literal.
|
|
143
|
+
const hasEllipsis = parameters.children.some((child) => child.type === 'variadic_parameter' ||
|
|
144
|
+
child.type === '...' ||
|
|
145
|
+
(!child.isNamed && child.text === '...'));
|
|
146
|
+
const isVoidOnly = parameterNodes.length === 1 &&
|
|
147
|
+
parameterNodes[0].namedChildCount === 1 &&
|
|
148
|
+
parameterNodes[0].firstNamedChild?.text === 'void';
|
|
149
|
+
if (isVoidOnly)
|
|
150
|
+
return { parameterCount: 0, parameterTypes: [] };
|
|
151
|
+
const parameterTypes = parameterNodes.map((parameter) => parameter.childForFieldName('type')?.text ?? 'unknown');
|
|
152
|
+
if (hasEllipsis)
|
|
153
|
+
parameterTypes.push('...');
|
|
154
|
+
return {
|
|
155
|
+
...(hasEllipsis ? {} : { parameterCount: parameterNodes.length }),
|
|
156
|
+
parameterTypes,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
function containsNodeType(root, type) {
|
|
160
|
+
return findDescendantOfType(root, type) !== null;
|
|
161
|
+
}
|
|
162
|
+
function findDescendantOfType(root, type) {
|
|
163
|
+
const stack = [root];
|
|
164
|
+
while (stack.length > 0) {
|
|
165
|
+
const node = stack.pop();
|
|
166
|
+
if (node.type === type)
|
|
167
|
+
return node;
|
|
168
|
+
for (const child of node.namedChildren)
|
|
169
|
+
if (child !== null)
|
|
170
|
+
stack.push(child);
|
|
171
|
+
}
|
|
172
|
+
return null;
|
|
173
|
+
}
|
|
111
174
|
/**
|
|
112
175
|
* Check if a C function_definition or declaration has `static` storage class.
|
|
113
176
|
* Walks direct children for a `storage_class_specifier` node with text `static`.
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { dirname, join } from 'path';
|
|
2
|
+
import { perFileSet } from '../../import-resolvers/per-file-set.js';
|
|
2
3
|
/**
|
|
3
4
|
* Per-pass memo: workspace paths bucketed by basename (last path segment),
|
|
4
5
|
* keyed on the `allFilePaths` set identity.
|
|
@@ -15,25 +16,20 @@ import { dirname, join } from 'path';
|
|
|
15
16
|
* `WeakMap`-keyed so it is reclaimed with the pass (no cross-pass staleness).
|
|
16
17
|
* Shared by C and C++ (`resolveCppImportTarget` delegates here).
|
|
17
18
|
*/
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
if (bucket === undefined) {
|
|
28
|
-
bucket = [];
|
|
29
|
-
index.set(basename, bucket);
|
|
30
|
-
}
|
|
31
|
-
bucket.push({ original, normalized, depth: normalized.split('/').length });
|
|
19
|
+
const suffixIndex = perFileSet((allFilePaths) => {
|
|
20
|
+
const index = new Map();
|
|
21
|
+
for (const original of allFilePaths) {
|
|
22
|
+
const normalized = original.replace(/\\/g, '/');
|
|
23
|
+
const basename = normalized.slice(normalized.lastIndexOf('/') + 1);
|
|
24
|
+
let bucket = index.get(basename);
|
|
25
|
+
if (bucket === undefined) {
|
|
26
|
+
bucket = [];
|
|
27
|
+
index.set(basename, bucket);
|
|
32
28
|
}
|
|
33
|
-
|
|
29
|
+
bucket.push({ original, normalized, depth: normalized.split('/').length });
|
|
34
30
|
}
|
|
35
31
|
return index;
|
|
36
|
-
}
|
|
32
|
+
});
|
|
37
33
|
/**
|
|
38
34
|
* Resolve a C #include path to a file in the workspace.
|
|
39
35
|
*
|
|
@@ -117,6 +117,23 @@ const C_SCOPE_QUERY = `
|
|
|
117
117
|
declarator: (pointer_declarator
|
|
118
118
|
declarator: (identifier) @declaration.name)) @declaration.variable
|
|
119
119
|
|
|
120
|
+
;; Declarations — function-pointer variables (\`void (*fp)(int);\`), with and
|
|
121
|
+
;; without initializer. Without these the file-scope pointer has no scope-tree
|
|
122
|
+
;; binding, so callable-flow cells written in one function and read in another
|
|
123
|
+
;; canonicalize to different keys and never join (#2522 review, H1).
|
|
124
|
+
(declaration
|
|
125
|
+
declarator: (function_declarator
|
|
126
|
+
declarator: (parenthesized_declarator
|
|
127
|
+
(pointer_declarator
|
|
128
|
+
declarator: (identifier) @declaration.name)))) @declaration.variable
|
|
129
|
+
|
|
130
|
+
(declaration
|
|
131
|
+
declarator: (init_declarator
|
|
132
|
+
declarator: (function_declarator
|
|
133
|
+
declarator: (parenthesized_declarator
|
|
134
|
+
(pointer_declarator
|
|
135
|
+
declarator: (identifier) @declaration.name))))) @declaration.variable
|
|
136
|
+
|
|
120
137
|
;; Declarations — macro definitions
|
|
121
138
|
(preproc_def
|
|
122
139
|
name: (identifier) @declaration.name) @declaration.macro
|
|
@@ -6,6 +6,7 @@ import { cArityCompatibility, cMergeBindings, resolveCImportTarget } from './ind
|
|
|
6
6
|
import { scanHeaderFiles } from './header-scan.js';
|
|
7
7
|
import { expandCWildcardNames, isStaticName, clearStaticNames } from './static-linkage.js';
|
|
8
8
|
import { applyCStaticLinkageSideChannel } from './capture-side-channel.js';
|
|
9
|
+
import { perFileSet } from '../../import-resolvers/per-file-set.js';
|
|
9
10
|
/**
|
|
10
11
|
* Per-pass memo of the augmented `#include`-resolution file set
|
|
11
12
|
* (`allFilePaths` ∪ header `.h` paths), keyed on the two stable source sets.
|
|
@@ -16,25 +17,25 @@ import { applyCStaticLinkageSideChannel } from './capture-side-channel.js';
|
|
|
16
17
|
* handing it a new set identity each time. Both `allFilePaths` (built once in
|
|
17
18
|
* scope-resolution `run.ts`) and the header set (`loadResolutionConfig`
|
|
18
19
|
* result) are stable per pass, so the union is built once and reused.
|
|
19
|
-
*
|
|
20
|
+
* Reclaimed with the pass (no cross-pass staleness).
|
|
21
|
+
*
|
|
22
|
+
* Two inputs, so two levels of `perFileSet` composed rather than a second
|
|
23
|
+
* primitive: the outer memo's value is the inner memo, and a function is an
|
|
24
|
+
* object, which is all `T extends object` asks for.
|
|
25
|
+
*
|
|
26
|
+
* The MEMO stays private to this file even though the C++ resolver's twin is
|
|
27
|
+
* byte-identical. The augmented set's IDENTITY is load-bearing downstream —
|
|
28
|
+
* C++ delegates to `resolveCImportTarget`, whose `suffixIndex` memo is keyed on
|
|
29
|
+
* exactly this set — so one memo shared across the two languages would hand
|
|
30
|
+
* each the other's index. Same builder-shared/memo-separate rule as
|
|
31
|
+
* `import-resolvers/pass-cache.ts`.
|
|
20
32
|
*/
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
28
|
-
let augmented = byHeaders.get(headerPaths);
|
|
29
|
-
if (augmented === undefined) {
|
|
30
|
-
const set = new Set(allFilePaths);
|
|
31
|
-
for (const h of headerPaths)
|
|
32
|
-
set.add(h);
|
|
33
|
-
augmented = set;
|
|
34
|
-
byHeaders.set(headerPaths, augmented);
|
|
35
|
-
}
|
|
36
|
-
return augmented;
|
|
37
|
-
}
|
|
33
|
+
const augmentedFilePathsFor = perFileSet((allFilePaths) => perFileSet((headerPaths) => {
|
|
34
|
+
const set = new Set(allFilePaths);
|
|
35
|
+
for (const h of headerPaths)
|
|
36
|
+
set.add(h);
|
|
37
|
+
return set;
|
|
38
|
+
}));
|
|
38
39
|
/**
|
|
39
40
|
* C `ScopeResolver` registered in `SCOPE_RESOLVERS` and consumed by
|
|
40
41
|
* the generic `runScopeResolution` orchestrator (RFC #909 Ring 3).
|
|
@@ -78,7 +79,7 @@ export const cScopeResolver = {
|
|
|
78
79
|
// targets .h files classified as C++ in language detection.
|
|
79
80
|
const headerPaths = resolutionConfig;
|
|
80
81
|
if (headerPaths !== undefined && headerPaths.size > 0) {
|
|
81
|
-
return resolveCImportTarget(targetRaw, fromFile,
|
|
82
|
+
return resolveCImportTarget(targetRaw, fromFile, augmentedFilePathsFor(allFilePaths)(headerPaths));
|
|
82
83
|
}
|
|
83
84
|
return resolveCImportTarget(targetRaw, fromFile, allFilePaths);
|
|
84
85
|
},
|
|
@@ -100,4 +101,10 @@ export const cScopeResolver = {
|
|
|
100
101
|
const simple = def.qualifiedName?.split('.').pop() ?? def.qualifiedName ?? '';
|
|
101
102
|
return isStaticName(def.filePath, simple);
|
|
102
103
|
},
|
|
104
|
+
// Precise linkage-only variant used to associate a visible prototype with
|
|
105
|
+
// its implementation during callable-value actual-to-formal propagation.
|
|
106
|
+
hasFileLocalCallableLinkage: (def) => {
|
|
107
|
+
const simple = def.qualifiedName?.split('.').pop() ?? def.qualifiedName ?? '';
|
|
108
|
+
return isStaticName(def.filePath, simple);
|
|
109
|
+
},
|
|
103
110
|
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { perFileSet } from '../../import-resolvers/per-file-set.js';
|
|
1
2
|
/**
|
|
2
3
|
* Per-file set of function names declared with `static` storage class.
|
|
3
4
|
* Populated during `emitCScopeCaptures` and consumed by `expandCWildcardNames`
|
|
@@ -52,27 +53,22 @@ export function clearStaticNames() {
|
|
|
52
53
|
* thousands of resolved includes) that is ~10^10+ comparisons on a single
|
|
53
54
|
* thread — the dominant term in the scope-resolution finalize grind.
|
|
54
55
|
*
|
|
55
|
-
* Building the lookup once collapses it to O(R_include + F). `
|
|
56
|
-
* on the array so the index is reclaimed with the pass — no cross-pass
|
|
56
|
+
* Building the lookup once collapses it to O(R_include + F). `perFileSet` keys
|
|
57
|
+
* on the array identity so the index is reclaimed with the pass — no cross-pass
|
|
57
58
|
* staleness (mirrors the {@link clearStaticNames} discipline for server-mode
|
|
58
59
|
* / multi-repo reuse), and a fresh array transparently rebuilds.
|
|
59
60
|
*/
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
for (const p of parsedFiles) {
|
|
69
|
-
if (!index.has(p.moduleScope))
|
|
70
|
-
index.set(p.moduleScope, p);
|
|
71
|
-
}
|
|
72
|
-
moduleScopeIndexByPass.set(parsedFiles, index);
|
|
61
|
+
const moduleScopeIndex = perFileSet((parsedFiles) => {
|
|
62
|
+
const index = new Map();
|
|
63
|
+
// First-wins to preserve `Array.find` semantics (returns the first match).
|
|
64
|
+
// `moduleScope` is unique per file in practice, so collisions are absent;
|
|
65
|
+
// the guard only formalises identical behaviour to the prior `.find`.
|
|
66
|
+
for (const p of parsedFiles) {
|
|
67
|
+
if (!index.has(p.moduleScope))
|
|
68
|
+
index.set(p.moduleScope, p);
|
|
73
69
|
}
|
|
74
70
|
return index;
|
|
75
|
-
}
|
|
71
|
+
});
|
|
76
72
|
/**
|
|
77
73
|
* Return the names visible through a C wildcard import (`#include`).
|
|
78
74
|
* All module-scope defs from the target file are visible EXCEPT those
|
|
@@ -369,6 +369,13 @@ export const cProvider = defineLanguage({
|
|
|
369
369
|
// than a DataCloneError at the worker boundary (#2143).
|
|
370
370
|
collectCaptureSideChannel: (filePath) => assertCloneable(collectCStaticLinkageSideChannel(filePath)),
|
|
371
371
|
interpretImport: interpretCImport,
|
|
372
|
+
// `#include` is a preprocessor directive, not a statement that runs. The
|
|
373
|
+
// header text is spliced in before the program starts, wherever the directive
|
|
374
|
+
// sits — and C allows it inside a function body. Without this the central
|
|
375
|
+
// Pass-3 position rule would mark such an include `runsOnlyWhenCalled` and
|
|
376
|
+
// `check --cycles` would silently drop an include cycle that is entirely
|
|
377
|
+
// real. See `LanguageProvider.importsExecuteWhereWritten`.
|
|
378
|
+
importsExecuteWhereWritten: false,
|
|
372
379
|
interpretTypeBinding: interpretCTypeBinding,
|
|
373
380
|
bindingScopeFor: cBindingScopeFor,
|
|
374
381
|
importOwningScope: cImportOwningScope,
|
|
@@ -447,6 +454,12 @@ export const cppProvider = defineLanguage({
|
|
|
447
454
|
// re-parse (#1983). See `cpp/capture-side-channel.ts`.
|
|
448
455
|
collectCaptureSideChannel: (filePath) => assertCloneable(collectCppCaptureSideChannel(filePath)),
|
|
449
456
|
interpretImport: interpretCppImport,
|
|
457
|
+
// Same as C — `cpp/query.ts` emits `@import.statement` for `preproc_include`
|
|
458
|
+
// too. It holds for C++'s whole import surface: the only other form Pass 3
|
|
459
|
+
// sees is `@import.using-decl` (`using ns::name` / `using namespace ns`),
|
|
460
|
+
// which is a compile-time name-lookup declaration and executes no more than
|
|
461
|
+
// an `#include` does. See the note on `cProvider`.
|
|
462
|
+
importsExecuteWhereWritten: false,
|
|
450
463
|
interpretTypeBinding: interpretCppTypeBinding,
|
|
451
464
|
bindingScopeFor: cppBindingScopeFor,
|
|
452
465
|
importOwningScope: cppImportOwningScope,
|
|
@@ -44,6 +44,20 @@ export function emitCobolScopeCaptures(sourceText, _filePath, _cachedTree) {
|
|
|
44
44
|
// Run the regex tagger on the preprocessed source
|
|
45
45
|
const extracted = extractCobolSymbolsWithRegex(cleaned, _filePath);
|
|
46
46
|
const out = [];
|
|
47
|
+
const procedurePointers = new Set(extracted.dataItems
|
|
48
|
+
.filter((item) => /(?:PROCEDURE|FUNCTION)-POINTER/.test(item.usage?.toUpperCase() ?? ''))
|
|
49
|
+
.map((item) => item.name.toUpperCase()));
|
|
50
|
+
// Fallback for declarations the clause parser missed. Scan CLEANED lines —
|
|
51
|
+
// on raw fixed-format sources the sequence number (cols 1-6) satisfied
|
|
52
|
+
// `\d+` and the LEVEL NUMBER got captured as the name, so the set never
|
|
53
|
+
// contained the real pointer name and the whole feature no-op'd (#2522
|
|
54
|
+
// review, H3). COBOL data names must contain a letter, so `[A-Z]` first
|
|
55
|
+
// rejects level numbers.
|
|
56
|
+
for (const line of cleaned.split(/\r?\n/)) {
|
|
57
|
+
const declaration = line.match(/^\s*\d{1,2}\s+([A-Z][A-Z0-9-]*).*\b(?:PROCEDURE|FUNCTION)-POINTER\b/i);
|
|
58
|
+
if (declaration !== null)
|
|
59
|
+
procedurePointers.add(declaration[1].toUpperCase());
|
|
60
|
+
}
|
|
47
61
|
// ── 1. PROGRAM-ID → @scope.module ───────────────────────────────────
|
|
48
62
|
// The primary program name (first PROGRAM-ID encountered)
|
|
49
63
|
if (extracted.programName) {
|
|
@@ -208,6 +222,85 @@ export function emitCobolScopeCaptures(sourceText, _filePath, _cachedTree) {
|
|
|
208
222
|
if (m !== null)
|
|
209
223
|
out.push(m);
|
|
210
224
|
}
|
|
225
|
+
// ── 9. Procedure-pointer value flow ────────────────────────────────
|
|
226
|
+
// ISO COBOL exposes callable values through USAGE PROCEDURE-POINTER,
|
|
227
|
+
// SET ... TO ENTRY, and dynamic CALL data-items. The regex provider emits
|
|
228
|
+
// the same normalized facts as AST-backed providers so shared ingestion
|
|
229
|
+
// remains language-agnostic.
|
|
230
|
+
for (const program of extracted.programs) {
|
|
231
|
+
for (let index = 0; index < (program.procedureUsing?.length ?? 0); index++) {
|
|
232
|
+
const parameter = program.procedureUsing[index];
|
|
233
|
+
const ownerRange = rangeOf(program.startLine, 0, program.endLine, 0);
|
|
234
|
+
out.push({
|
|
235
|
+
'@callable-flow.formal': capture('@callable-flow.formal', ownerRange, program.name),
|
|
236
|
+
'@callable-flow.owner': capture('@callable-flow.owner', ownerRange, program.name),
|
|
237
|
+
'@callable-flow.binding': capture('@callable-flow.binding', rangeOf(program.startLine, 0, program.startLine, parameter.length), parameter),
|
|
238
|
+
'@callable-flow.parameter-index': capture('@callable-flow.parameter-index', ownerRange, String(index)),
|
|
239
|
+
'@callable-flow.passing-mode': capture('@callable-flow.passing-mode', ownerRange, 'reference'),
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
for (let index = 0; index < lines.length; index++) {
|
|
244
|
+
const line = lines[index];
|
|
245
|
+
// Comment lines must not seed flows — a commented-out SET produced a
|
|
246
|
+
// live seed and a false CALLS edge from dead code (#2522 review, M1).
|
|
247
|
+
// Fixed format marks comments with '*'/'/' in indicator column 7; free
|
|
248
|
+
// format uses '*>' (also valid inline, so strip the tail).
|
|
249
|
+
if (line[6] === '*' || line[6] === '/')
|
|
250
|
+
continue;
|
|
251
|
+
const code = line.split('*>')[0];
|
|
252
|
+
const lineNumber = index + 1;
|
|
253
|
+
const lineRange = rangeOf(lineNumber, 0, lineNumber, endColFrom(line));
|
|
254
|
+
const entry = code.match(/\bSET\s+([A-Z0-9][A-Z0-9-]*)\s+TO\s+ENTRY\s+(?:"([^"]+)"|'([^']+)')/i);
|
|
255
|
+
if (entry !== null) {
|
|
256
|
+
const destination = entry[1];
|
|
257
|
+
const target = entry[2] ?? entry[3];
|
|
258
|
+
if (procedurePointers.has(destination.toUpperCase())) {
|
|
259
|
+
out.push({
|
|
260
|
+
'@callable-flow.seed': capture('@callable-flow.seed', lineRange, line),
|
|
261
|
+
'@callable-flow.destination': capture('@callable-flow.destination', lineRange, destination),
|
|
262
|
+
'@callable-flow.target': capture('@callable-flow.target', lineRange, target),
|
|
263
|
+
'@callable-flow.target-name': capture('@callable-flow.target-name', lineRange, target),
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
continue;
|
|
267
|
+
}
|
|
268
|
+
const copy = code.match(/\bSET\s+([A-Z0-9][A-Z0-9-]*)\s+TO\s+([A-Z0-9][A-Z0-9-]*)\b/i);
|
|
269
|
+
if (copy !== null &&
|
|
270
|
+
procedurePointers.has(copy[1].toUpperCase()) &&
|
|
271
|
+
procedurePointers.has(copy[2].toUpperCase())) {
|
|
272
|
+
out.push({
|
|
273
|
+
'@callable-flow.copy': capture('@callable-flow.copy', lineRange, line),
|
|
274
|
+
'@callable-flow.destination': capture('@callable-flow.destination', lineRange, copy[1]),
|
|
275
|
+
'@callable-flow.source': capture('@callable-flow.source', lineRange, copy[2]),
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
for (const call of extracted.calls) {
|
|
280
|
+
const line = lines[call.line - 1] ?? '';
|
|
281
|
+
const lineRange = rangeOf(call.line, 0, call.line, endColFrom(line));
|
|
282
|
+
for (let index = 0; index < (call.parameters?.length ?? 0); index++) {
|
|
283
|
+
const parameter = call.parameters[index];
|
|
284
|
+
out.push({
|
|
285
|
+
'@callable-flow.argument': capture('@callable-flow.argument', lineRange, line),
|
|
286
|
+
'@callable-flow.source': capture('@callable-flow.source', lineRange, parameter),
|
|
287
|
+
'@callable-flow.parameter-index': capture('@callable-flow.parameter-index', lineRange, String(index)),
|
|
288
|
+
...(!call.isQuoted && procedurePointers.has(call.target.toUpperCase())
|
|
289
|
+
? {}
|
|
290
|
+
: {
|
|
291
|
+
'@callable-flow.direct-callee-name': capture('@callable-flow.direct-callee-name', lineRange, call.target),
|
|
292
|
+
}),
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
if (!call.isQuoted && procedurePointers.has(call.target.toUpperCase())) {
|
|
296
|
+
out.push({
|
|
297
|
+
'@callable-flow.invoke': capture('@callable-flow.invoke', lineRange, line),
|
|
298
|
+
'@callable-flow.callee': capture('@callable-flow.callee', lineRange, call.target),
|
|
299
|
+
'@callable-flow.invocation-kind': capture('@callable-flow.invocation-kind', lineRange, 'indirect'),
|
|
300
|
+
'@callable-flow.arity': capture('@callable-flow.arity', lineRange, String(call.parameters?.length ?? 0)),
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
}
|
|
211
304
|
return out;
|
|
212
305
|
}
|
|
213
306
|
// ---------------------------------------------------------------------------
|