gitnexus 1.6.6-rc.98 → 1.6.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/README.md +122 -68
- package/dist/_shared/graph/types.d.ts +17 -1
- package/dist/_shared/graph/types.d.ts.map +1 -1
- package/dist/_shared/index.d.ts +3 -5
- package/dist/_shared/index.d.ts.map +1 -1
- package/dist/_shared/index.js +2 -4
- package/dist/_shared/index.js.map +1 -1
- package/dist/_shared/scope-resolution/module-scope-index.d.ts +1 -2
- package/dist/_shared/scope-resolution/module-scope-index.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/module-scope-index.js +1 -2
- package/dist/_shared/scope-resolution/module-scope-index.js.map +1 -1
- package/dist/_shared/scope-resolution/parsed-file.d.ts +24 -0
- package/dist/_shared/scope-resolution/parsed-file.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/reference-site.d.ts +13 -1
- package/dist/_shared/scope-resolution/reference-site.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/registries/context.d.ts +1 -0
- package/dist/_shared/scope-resolution/registries/context.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/registries/context.js +6 -0
- package/dist/_shared/scope-resolution/registries/context.js.map +1 -1
- package/dist/_shared/scope-resolution/registries/evidence.d.ts +2 -3
- package/dist/_shared/scope-resolution/registries/evidence.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/registries/evidence.js +2 -3
- package/dist/_shared/scope-resolution/registries/evidence.js.map +1 -1
- package/dist/_shared/scope-resolution/registries/macro-registry.d.ts +29 -0
- package/dist/_shared/scope-resolution/registries/macro-registry.d.ts.map +1 -0
- package/dist/_shared/scope-resolution/registries/macro-registry.js +32 -0
- package/dist/_shared/scope-resolution/registries/macro-registry.js.map +1 -0
- package/dist/_shared/scope-resolution/symbol-definition.d.ts +9 -0
- package/dist/_shared/scope-resolution/symbol-definition.d.ts.map +1 -1
- package/dist/_shared/scope-resolution/types.d.ts +1 -1
- package/dist/_shared/scope-resolution/types.d.ts.map +1 -1
- package/dist/cli/ai-context.d.ts +35 -1
- package/dist/cli/ai-context.js +111 -12
- package/dist/cli/analyze-config.d.ts +92 -0
- package/dist/cli/analyze-config.js +364 -0
- package/dist/cli/analyze.d.ts +17 -1
- package/dist/cli/analyze.js +224 -71
- package/dist/cli/cli-message.d.ts +1 -1
- package/dist/cli/doctor.d.ts +18 -0
- package/dist/cli/doctor.js +32 -0
- package/dist/cli/i18n/en.d.ts +2 -2
- package/dist/cli/i18n/en.js +2 -2
- package/dist/cli/i18n/resources.d.ts +2 -2
- package/dist/cli/i18n/zh-CN.js +2 -2
- package/dist/cli/index.js +4 -2
- package/dist/cli/resolve-invocation.d.ts +21 -0
- package/dist/cli/resolve-invocation.js +68 -0
- package/dist/cli/setup.d.ts +33 -0
- package/dist/cli/setup.js +96 -35
- package/dist/cli/skill-gen.js +2 -2
- package/dist/cli/wiki.js +20 -4
- package/dist/core/embeddings/embedder.d.ts +1 -1
- package/dist/core/embeddings/embedder.js +14 -1
- package/dist/core/embeddings/runtime-support.d.ts +41 -0
- package/dist/core/embeddings/runtime-support.js +65 -0
- package/dist/core/group/extractors/grpc-patterns/proto.js +2 -1
- package/dist/core/group/extractors/http-patterns/java.js +15 -1
- package/dist/core/ingestion/call-processor.d.ts +57 -227
- package/dist/core/ingestion/call-processor.js +172 -2595
- package/dist/core/ingestion/call-routing.d.ts +6 -5
- package/dist/core/ingestion/call-routing.js +6 -6
- package/dist/core/ingestion/call-types.d.ts +0 -75
- package/dist/core/ingestion/class-extractors/configs/c-cpp.js +26 -1
- package/dist/core/ingestion/class-extractors/configs/ruby.js +3 -0
- package/dist/core/ingestion/class-extractors/generic.js +9 -11
- package/dist/core/ingestion/class-types.d.ts +23 -0
- package/dist/core/ingestion/cobol/cobol-preprocessor.d.ts +11 -0
- package/dist/core/ingestion/cobol/cobol-preprocessor.js +227 -73
- package/dist/core/ingestion/cobol-processor.d.ts +1 -0
- package/dist/core/ingestion/cobol-processor.js +51 -2
- package/dist/core/ingestion/emit-references.js +8 -2
- package/dist/core/ingestion/export-detection.d.ts +2 -1
- package/dist/core/ingestion/export-detection.js +2 -6
- package/dist/core/ingestion/field-extractors/configs/dart.d.ts +0 -6
- package/dist/core/ingestion/field-extractors/configs/dart.js +62 -44
- package/dist/core/ingestion/field-extractors/configs/go.d.ts +0 -9
- package/dist/core/ingestion/field-extractors/configs/go.js +40 -1
- package/dist/core/ingestion/field-extractors/configs/jvm.js +43 -4
- package/dist/core/ingestion/field-extractors/configs/php.js +1 -2
- package/dist/core/ingestion/field-extractors/configs/swift.d.ts +12 -1
- package/dist/core/ingestion/field-extractors/configs/swift.js +31 -6
- package/dist/core/ingestion/field-extractors/generic.d.ts +6 -0
- package/dist/core/ingestion/field-extractors/generic.js +5 -4
- package/dist/core/ingestion/field-extractors/typescript.js +0 -29
- package/dist/core/ingestion/filesystem-walker.d.ts +0 -9
- package/dist/core/ingestion/filesystem-walker.js +0 -11
- package/dist/core/ingestion/finalize-orchestrator.js +14 -2
- package/dist/core/ingestion/import-resolvers/configs/swift.d.ts +21 -0
- package/dist/core/ingestion/import-resolvers/configs/swift.js +72 -11
- package/dist/core/ingestion/import-resolvers/python.d.ts +1 -1
- package/dist/core/ingestion/import-resolvers/standard.d.ts +2 -2
- package/dist/core/ingestion/import-resolvers/standard.js +6 -5
- package/dist/core/ingestion/import-resolvers/utils.d.ts +2 -5
- package/dist/core/ingestion/import-resolvers/utils.js +1 -9
- package/dist/core/ingestion/language-provider.d.ts +39 -119
- package/dist/core/ingestion/language-provider.js +0 -2
- package/dist/core/ingestion/languages/c/capture-side-channel.d.ts +62 -0
- package/dist/core/ingestion/languages/c/capture-side-channel.js +65 -0
- package/dist/core/ingestion/languages/c/captures.js +41 -23
- package/dist/core/ingestion/languages/c/import-decomposer.d.ts +9 -0
- package/dist/core/ingestion/languages/c/import-decomposer.js +15 -0
- package/dist/core/ingestion/languages/c/import-target.js +52 -9
- package/dist/core/ingestion/languages/c/index.d.ts +2 -1
- package/dist/core/ingestion/languages/c/index.js +2 -1
- package/dist/core/ingestion/languages/c/query.js +15 -0
- package/dist/core/ingestion/languages/c/scope-resolver.js +47 -4
- package/dist/core/ingestion/languages/c/static-linkage.d.ts +8 -0
- package/dist/core/ingestion/languages/c/static-linkage.js +46 -1
- package/dist/core/ingestion/languages/c-cpp.js +16 -7
- package/dist/core/ingestion/languages/cobol/captures.js +25 -2
- package/dist/core/ingestion/languages/cpp/adl.d.ts +88 -4
- package/dist/core/ingestion/languages/cpp/adl.js +380 -160
- package/dist/core/ingestion/languages/cpp/arity-metadata.js +2 -8
- package/dist/core/ingestion/languages/cpp/capture-side-channel.d.ts +65 -0
- package/dist/core/ingestion/languages/cpp/capture-side-channel.js +78 -0
- package/dist/core/ingestion/languages/cpp/captures.js +162 -54
- package/dist/core/ingestion/languages/cpp/file-local-linkage.d.ts +18 -52
- package/dist/core/ingestion/languages/cpp/file-local-linkage.js +49 -1
- package/dist/core/ingestion/languages/cpp/import-decomposer.d.ts +7 -0
- package/dist/core/ingestion/languages/cpp/import-decomposer.js +12 -0
- package/dist/core/ingestion/languages/cpp/index.d.ts +1 -0
- package/dist/core/ingestion/languages/cpp/index.js +1 -0
- package/dist/core/ingestion/languages/cpp/inline-namespaces.d.ts +8 -0
- package/dist/core/ingestion/languages/cpp/inline-namespaces.js +21 -0
- package/dist/core/ingestion/languages/cpp/query.js +21 -0
- package/dist/core/ingestion/languages/cpp/range-bindings.js +20 -5
- package/dist/core/ingestion/languages/cpp/scope-resolver.js +52 -5
- package/dist/core/ingestion/languages/cpp/two-phase-lookup.d.ts +20 -0
- package/dist/core/ingestion/languages/cpp/two-phase-lookup.js +83 -3
- package/dist/core/ingestion/languages/csharp/captures.js +205 -41
- package/dist/core/ingestion/languages/csharp/index.d.ts +3 -4
- package/dist/core/ingestion/languages/csharp/index.js +3 -4
- package/dist/core/ingestion/languages/csharp/interpret.js +17 -3
- package/dist/core/ingestion/languages/csharp/namespace-siblings.d.ts +17 -7
- package/dist/core/ingestion/languages/csharp/namespace-siblings.js +129 -124
- package/dist/core/ingestion/languages/csharp/qualified-type-names.d.ts +14 -0
- package/dist/core/ingestion/languages/csharp/qualified-type-names.js +59 -0
- package/dist/core/ingestion/languages/csharp/query.js +13 -0
- package/dist/core/ingestion/languages/csharp/receiver-binding.js +10 -6
- package/dist/core/ingestion/languages/csharp/scope-resolver.js +8 -1
- package/dist/core/ingestion/languages/csharp.js +0 -5
- package/dist/core/ingestion/languages/dart/arity-metadata.d.ts +25 -0
- package/dist/core/ingestion/languages/dart/arity-metadata.js +35 -0
- package/dist/core/ingestion/languages/dart/arity.d.ts +19 -0
- package/dist/core/ingestion/languages/dart/arity.js +31 -0
- package/dist/core/ingestion/languages/dart/built-ins.d.ts +11 -0
- package/dist/core/ingestion/languages/dart/built-ins.js +34 -0
- package/dist/core/ingestion/languages/dart/cache-stats.d.ts +13 -0
- package/dist/core/ingestion/languages/dart/cache-stats.js +24 -0
- package/dist/core/ingestion/languages/dart/captures.d.ts +29 -0
- package/dist/core/ingestion/languages/dart/captures.js +445 -0
- package/dist/core/ingestion/languages/dart/expand-wildcards.d.ts +13 -0
- package/dist/core/ingestion/languages/dart/expand-wildcards.js +31 -0
- package/dist/core/ingestion/languages/dart/import-target.d.ts +15 -0
- package/dist/core/ingestion/languages/dart/import-target.js +65 -0
- package/dist/core/ingestion/languages/dart/index.d.ts +28 -0
- package/dist/core/ingestion/languages/dart/index.js +28 -0
- package/dist/core/ingestion/languages/dart/interpret.d.ts +24 -0
- package/dist/core/ingestion/languages/dart/interpret.js +95 -0
- package/dist/core/ingestion/languages/dart/merge-bindings.d.ts +10 -0
- package/dist/core/ingestion/languages/dart/merge-bindings.js +39 -0
- package/dist/core/ingestion/languages/dart/query.d.ts +26 -0
- package/dist/core/ingestion/languages/dart/query.js +142 -0
- package/dist/core/ingestion/languages/dart/receiver-binding.d.ts +24 -0
- package/dist/core/ingestion/languages/dart/receiver-binding.js +87 -0
- package/dist/core/ingestion/languages/dart/scope-resolver.d.ts +29 -0
- package/dist/core/ingestion/languages/dart/scope-resolver.js +194 -0
- package/dist/core/ingestion/languages/dart/signature-bindings.d.ts +23 -0
- package/dist/core/ingestion/languages/dart/signature-bindings.js +51 -0
- package/dist/core/ingestion/languages/dart/simple-hooks.d.ts +20 -0
- package/dist/core/ingestion/languages/dart/simple-hooks.js +47 -0
- package/dist/core/ingestion/languages/dart.d.ts +0 -1
- package/dist/core/ingestion/languages/dart.js +15 -29
- package/dist/core/ingestion/languages/go/arity-metadata.d.ts +1 -0
- package/dist/core/ingestion/languages/go/arity-metadata.js +31 -1
- package/dist/core/ingestion/languages/go/captures.js +247 -26
- package/dist/core/ingestion/languages/go/interface-impls.js +476 -50
- package/dist/core/ingestion/languages/go/interpret.js +21 -11
- package/dist/core/ingestion/languages/go/method-owners.js +20 -8
- package/dist/core/ingestion/languages/go/query.js +15 -7
- package/dist/core/ingestion/languages/go/range-binding.js +24 -9
- package/dist/core/ingestion/languages/go/receiver-binding.js +1 -1
- package/dist/core/ingestion/languages/go/scope-resolver.js +2 -2
- package/dist/core/ingestion/languages/go/simple-hooks.js +10 -5
- package/dist/core/ingestion/languages/go/type-binding.d.ts +1 -0
- package/dist/core/ingestion/languages/go/type-binding.js +40 -2
- package/dist/core/ingestion/languages/go.d.ts +0 -1
- package/dist/core/ingestion/languages/go.js +0 -5
- package/dist/core/ingestion/languages/index.d.ts +0 -5
- package/dist/core/ingestion/languages/index.js +0 -3
- package/dist/core/ingestion/languages/java/captures.js +252 -23
- package/dist/core/ingestion/languages/java/interpret.js +12 -6
- package/dist/core/ingestion/languages/java/package-siblings.js +18 -5
- package/dist/core/ingestion/languages/java/query.js +16 -1
- package/dist/core/ingestion/languages/java/scope-resolver.d.ts +2 -8
- package/dist/core/ingestion/languages/java/scope-resolver.js +2 -8
- package/dist/core/ingestion/languages/java.js +0 -5
- package/dist/core/ingestion/languages/javascript/captures.js +185 -11
- package/dist/core/ingestion/languages/javascript/query.js +107 -1
- package/dist/core/ingestion/languages/kotlin/capture-side-channel.d.ts +57 -0
- package/dist/core/ingestion/languages/kotlin/capture-side-channel.js +60 -0
- package/dist/core/ingestion/languages/kotlin/captures.js +213 -22
- package/dist/core/ingestion/languages/kotlin/companion-scopes.d.ts +7 -0
- package/dist/core/ingestion/languages/kotlin/companion-scopes.js +10 -0
- 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/query.js +30 -0
- package/dist/core/ingestion/languages/kotlin/scope-resolver.d.ts +5 -7
- package/dist/core/ingestion/languages/kotlin/scope-resolver.js +22 -7
- package/dist/core/ingestion/languages/kotlin.js +8 -5
- package/dist/core/ingestion/languages/php/captures.js +135 -19
- package/dist/core/ingestion/languages/php/import-decomposer.js +21 -63
- package/dist/core/ingestion/languages/php/index.d.ts +3 -4
- package/dist/core/ingestion/languages/php/index.js +3 -4
- package/dist/core/ingestion/languages/php/query.js +5 -0
- package/dist/core/ingestion/languages/php/receiver-binding.js +8 -4
- package/dist/core/ingestion/languages/php.js +0 -4
- package/dist/core/ingestion/languages/python/captures.js +128 -13
- package/dist/core/ingestion/languages/python/depends-references.js +1 -1
- package/dist/core/ingestion/languages/python/import-target.d.ts +4 -5
- package/dist/core/ingestion/languages/python/import-target.js +108 -16
- package/dist/core/ingestion/languages/python/index-stats.d.ts +18 -0
- package/dist/core/ingestion/languages/python/index-stats.js +25 -0
- package/dist/core/ingestion/languages/python/index.d.ts +3 -4
- package/dist/core/ingestion/languages/python/index.js +3 -4
- package/dist/core/ingestion/languages/python/query.js +17 -0
- package/dist/core/ingestion/languages/python/scope-resolver.js +7 -6
- package/dist/core/ingestion/languages/python.d.ts +0 -2
- package/dist/core/ingestion/languages/python.js +0 -7
- package/dist/core/ingestion/languages/ruby/captures.js +174 -31
- package/dist/core/ingestion/languages/ruby/import-target.js +2 -1
- package/dist/core/ingestion/languages/ruby/interpret.js +2 -1
- package/dist/core/ingestion/languages/ruby/query.js +10 -0
- package/dist/core/ingestion/languages/ruby/scope-resolver.js +61 -11
- package/dist/core/ingestion/languages/ruby.js +4 -53
- package/dist/core/ingestion/languages/rust/captures.js +95 -13
- package/dist/core/ingestion/languages/rust/query.js +64 -1
- package/dist/core/ingestion/languages/rust/range-binding.js +40 -12
- package/dist/core/ingestion/languages/rust/receiver-binding.js +9 -0
- package/dist/core/ingestion/languages/rust/scope-resolver.js +75 -1
- package/dist/core/ingestion/languages/rust.d.ts +0 -2
- package/dist/core/ingestion/languages/rust.js +0 -6
- package/dist/core/ingestion/languages/swift/arity-metadata.d.ts +24 -0
- package/dist/core/ingestion/languages/swift/arity-metadata.js +41 -0
- package/dist/core/ingestion/languages/swift/arity.d.ts +29 -0
- package/dist/core/ingestion/languages/swift/arity.js +42 -0
- package/dist/core/ingestion/languages/swift/base-type.d.ts +20 -0
- package/dist/core/ingestion/languages/swift/base-type.js +27 -0
- package/dist/core/ingestion/languages/swift/cache-stats.d.ts +15 -0
- package/dist/core/ingestion/languages/swift/cache-stats.js +26 -0
- package/dist/core/ingestion/languages/swift/captures.d.ts +35 -0
- package/dist/core/ingestion/languages/swift/captures.js +495 -0
- package/dist/core/ingestion/languages/swift/implicit-imports.d.ts +34 -0
- package/dist/core/ingestion/languages/swift/implicit-imports.js +57 -0
- package/dist/core/ingestion/languages/swift/import-decomposer.d.ts +24 -0
- package/dist/core/ingestion/languages/swift/import-decomposer.js +84 -0
- package/dist/core/ingestion/languages/swift/import-target.d.ts +33 -0
- package/dist/core/ingestion/languages/swift/import-target.js +81 -0
- package/dist/core/ingestion/languages/swift/index.d.ts +37 -0
- package/dist/core/ingestion/languages/swift/index.js +37 -0
- package/dist/core/ingestion/languages/swift/interpret.d.ts +15 -0
- package/dist/core/ingestion/languages/swift/interpret.js +89 -0
- package/dist/core/ingestion/languages/swift/merge-bindings.d.ts +20 -0
- package/dist/core/ingestion/languages/swift/merge-bindings.js +48 -0
- package/dist/core/ingestion/languages/swift/query.d.ts +46 -0
- package/dist/core/ingestion/languages/swift/query.js +194 -0
- package/dist/core/ingestion/languages/swift/receiver-binding.d.ts +40 -0
- package/dist/core/ingestion/languages/swift/receiver-binding.js +161 -0
- package/dist/core/ingestion/languages/swift/scope-resolver.d.ts +50 -0
- package/dist/core/ingestion/languages/swift/scope-resolver.js +189 -0
- package/dist/core/ingestion/languages/swift/sibling-type-bindings.d.ts +34 -0
- package/dist/core/ingestion/languages/swift/sibling-type-bindings.js +65 -0
- package/dist/core/ingestion/languages/swift/signature-bindings.d.ts +25 -0
- package/dist/core/ingestion/languages/swift/signature-bindings.js +66 -0
- package/dist/core/ingestion/languages/swift/simple-hooks.d.ts +37 -0
- package/dist/core/ingestion/languages/swift/simple-hooks.js +60 -0
- package/dist/core/ingestion/languages/swift/target-grouping.d.ts +51 -0
- package/dist/core/ingestion/languages/swift/target-grouping.js +93 -0
- package/dist/core/ingestion/languages/swift/target-siblings.d.ts +30 -0
- package/dist/core/ingestion/languages/swift/target-siblings.js +71 -0
- package/dist/core/ingestion/languages/swift.d.ts +0 -5
- package/dist/core/ingestion/languages/swift.js +11 -87
- package/dist/core/ingestion/languages/typescript/array-callback.d.ts +3 -29
- package/dist/core/ingestion/languages/typescript/array-callback.js +4 -43
- package/dist/core/ingestion/languages/typescript/captures.js +147 -17
- package/dist/core/ingestion/languages/typescript/index.d.ts +3 -4
- package/dist/core/ingestion/languages/typescript/index.js +3 -4
- package/dist/core/ingestion/languages/typescript/query.d.ts +2 -3
- package/dist/core/ingestion/languages/typescript/query.js +125 -4
- package/dist/core/ingestion/languages/typescript/receiver-binding.js +0 -1
- package/dist/core/ingestion/languages/typescript.d.ts +2 -3
- package/dist/core/ingestion/languages/typescript.js +46 -23
- package/dist/core/ingestion/languages/vue/captures.d.ts +46 -0
- package/dist/core/ingestion/languages/vue/captures.js +67 -0
- package/dist/core/ingestion/languages/vue/import-target.d.ts +27 -0
- package/dist/core/ingestion/languages/vue/import-target.js +58 -0
- package/dist/core/ingestion/languages/vue/index.d.ts +49 -0
- package/dist/core/ingestion/languages/vue/index.js +49 -0
- package/dist/core/ingestion/languages/vue/scope-resolver.d.ts +55 -0
- package/dist/core/ingestion/languages/vue/scope-resolver.js +292 -0
- package/dist/core/ingestion/languages/vue.js +12 -4
- package/dist/core/ingestion/local-symbol-pruner.d.ts +11 -0
- package/dist/core/ingestion/local-symbol-pruner.js +63 -0
- package/dist/core/ingestion/method-extractors/configs/dart.js +14 -1
- package/dist/core/ingestion/method-extractors/configs/jvm.js +37 -20
- package/dist/core/ingestion/method-extractors/configs/php.js +0 -1
- package/dist/core/ingestion/method-extractors/configs/swift.js +11 -4
- package/dist/core/ingestion/method-types.d.ts +2 -2
- package/dist/core/ingestion/model/index.d.ts +0 -3
- package/dist/core/ingestion/model/index.js +0 -8
- package/dist/core/ingestion/model/resolve.d.ts +7 -43
- package/dist/core/ingestion/model/resolve.js +7 -226
- package/dist/core/ingestion/model/scope-resolution-indexes.d.ts +46 -1
- package/dist/core/ingestion/model/semantic-model.d.ts +4 -6
- package/dist/core/ingestion/model/semantic-model.js +1 -1
- package/dist/core/ingestion/model/symbol-table.d.ts +3 -4
- package/dist/core/ingestion/model/symbol-table.js +3 -4
- package/dist/core/ingestion/parsing-processor.d.ts +30 -24
- package/dist/core/ingestion/parsing-processor.js +76 -640
- package/dist/core/ingestion/pipeline-phases/communities.d.ts +1 -1
- package/dist/core/ingestion/pipeline-phases/communities.js +5 -2
- package/dist/core/ingestion/pipeline-phases/cross-file.d.ts +9 -8
- package/dist/core/ingestion/pipeline-phases/cross-file.js +16 -12
- package/dist/core/ingestion/pipeline-phases/index.d.ts +1 -0
- package/dist/core/ingestion/pipeline-phases/index.js +1 -0
- package/dist/core/ingestion/pipeline-phases/mro.d.ts +1 -1
- package/dist/core/ingestion/pipeline-phases/mro.js +2 -2
- package/dist/core/ingestion/pipeline-phases/parse-impl.d.ts +44 -22
- package/dist/core/ingestion/pipeline-phases/parse-impl.js +426 -565
- package/dist/core/ingestion/pipeline-phases/parse.d.ts +13 -33
- package/dist/core/ingestion/pipeline-phases/parse.js +2 -2
- package/dist/core/ingestion/pipeline-phases/processes.d.ts +1 -1
- package/dist/core/ingestion/pipeline-phases/processes.js +5 -3
- package/dist/core/ingestion/pipeline-phases/prune-local-symbols.d.ts +14 -0
- package/dist/core/ingestion/pipeline-phases/prune-local-symbols.js +26 -0
- package/dist/core/ingestion/pipeline.d.ts +27 -19
- package/dist/core/ingestion/pipeline.js +4 -2
- package/dist/core/ingestion/resolve-references.js +15 -3
- package/dist/core/ingestion/route-extractors/laravel.d.ts +10 -0
- package/dist/core/ingestion/route-extractors/laravel.js +88 -9
- package/dist/core/ingestion/scope-extractor-bridge.d.ts +2 -1
- package/dist/core/ingestion/scope-extractor-bridge.js +2 -2
- package/dist/core/ingestion/scope-extractor.js +13 -0
- package/dist/core/ingestion/scope-resolution/contract/scope-resolver.d.ts +181 -15
- package/dist/core/ingestion/scope-resolution/contract/scope-resolver.js +21 -10
- package/dist/core/ingestion/scope-resolution/graph-bridge/edges.js +10 -2
- package/dist/core/ingestion/scope-resolution/graph-bridge/ids.d.ts +7 -1
- package/dist/core/ingestion/scope-resolution/graph-bridge/ids.js +58 -6
- package/dist/core/ingestion/scope-resolution/graph-bridge/node-lookup.js +24 -5
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.d.ts +68 -1
- package/dist/core/ingestion/scope-resolution/passes/free-call-fallback.js +189 -29
- package/dist/core/ingestion/scope-resolution/passes/imported-return-types.js +21 -1
- package/dist/core/ingestion/scope-resolution/passes/receiver-bound-calls.js +1 -1
- package/dist/core/ingestion/scope-resolution/pipeline/phase.d.ts +8 -11
- package/dist/core/ingestion/scope-resolution/pipeline/phase.js +171 -50
- package/dist/core/ingestion/scope-resolution/pipeline/registry.d.ts +3 -4
- package/dist/core/ingestion/scope-resolution/pipeline/registry.js +9 -4
- package/dist/core/ingestion/scope-resolution/pipeline/run.d.ts +28 -5
- package/dist/core/ingestion/scope-resolution/pipeline/run.js +191 -24
- package/dist/core/ingestion/scope-resolution/pipeline/validate-bindings-immutability.js +31 -0
- package/dist/core/ingestion/scope-resolution/scope/walkers.d.ts +72 -0
- package/dist/core/ingestion/scope-resolution/scope/walkers.js +440 -39
- package/dist/core/ingestion/scope-resolution/workspace-index.d.ts +18 -2
- package/dist/core/ingestion/scope-resolution/workspace-index.js +94 -7
- package/dist/core/ingestion/tree-sitter-queries.d.ts +14 -14
- package/dist/core/ingestion/tree-sitter-queries.js +380 -158
- package/dist/core/ingestion/ts-js-hoc-utils.d.ts +12 -0
- package/dist/core/ingestion/ts-js-hoc-utils.js +105 -0
- package/dist/core/ingestion/type-env.d.ts +2 -1
- package/dist/core/ingestion/type-env.js +6 -8
- package/dist/core/ingestion/type-extractors/c-cpp.js +8 -10
- package/dist/core/ingestion/type-extractors/csharp.js +18 -34
- package/dist/core/ingestion/type-extractors/go.js +2 -10
- package/dist/core/ingestion/type-extractors/jvm.js +6 -5
- package/dist/core/ingestion/type-extractors/php.js +1 -1
- package/dist/core/ingestion/type-extractors/python.js +1 -1
- package/dist/core/ingestion/type-extractors/ruby.js +2 -2
- package/dist/core/ingestion/type-extractors/rust.js +0 -16
- package/dist/core/ingestion/type-extractors/shared.d.ts +2 -2
- package/dist/core/ingestion/type-extractors/shared.js +25 -11
- package/dist/core/ingestion/type-extractors/swift.js +5 -5
- package/dist/core/ingestion/type-extractors/types.d.ts +1 -1
- package/dist/core/ingestion/type-extractors/typescript.js +1 -1
- package/dist/core/ingestion/utils/ast-helpers.d.ts +119 -1
- package/dist/core/ingestion/utils/ast-helpers.js +260 -13
- package/dist/core/ingestion/utils/callable-labels.d.ts +13 -0
- package/dist/core/ingestion/utils/callable-labels.js +14 -0
- package/dist/core/ingestion/utils/deferred-resolution-profile.d.ts +10 -0
- package/dist/core/ingestion/utils/deferred-resolution-profile.js +30 -0
- package/dist/core/ingestion/utils/heap-probe.d.ts +20 -0
- package/dist/core/ingestion/utils/heap-probe.js +39 -0
- package/dist/core/ingestion/utils/heritage-marker.d.ts +33 -0
- package/dist/core/ingestion/utils/heritage-marker.js +41 -0
- package/dist/core/ingestion/utils/qualified-name.d.ts +37 -0
- package/dist/core/ingestion/utils/qualified-name.js +67 -0
- package/dist/core/ingestion/variable-extractors/configs/c-cpp.js +49 -0
- package/dist/core/ingestion/variable-extractors/configs/dart.js +76 -62
- package/dist/core/ingestion/variable-extractors/configs/go.js +74 -7
- package/dist/core/ingestion/variable-extractors/configs/jvm.js +35 -8
- package/dist/core/ingestion/variable-extractors/generic.js +40 -12
- package/dist/core/ingestion/variable-types.d.ts +9 -0
- package/dist/core/ingestion/vue-sfc-extractor.d.ts +97 -7
- package/dist/core/ingestion/vue-sfc-extractor.js +433 -11
- package/dist/core/ingestion/workers/parse-worker.d.ts +0 -11
- package/dist/core/ingestion/workers/parse-worker.js +358 -187
- package/dist/core/ingestion/workers/worker-pool.d.ts +78 -9
- package/dist/core/ingestion/workers/worker-pool.js +346 -49
- package/dist/core/lbug/csv-generator.js +20 -2
- package/dist/core/lbug/lbug-adapter.js +29 -10
- package/dist/core/lbug/native-check.js +17 -5
- package/dist/core/lbug/pool-adapter.d.ts +0 -19
- package/dist/core/lbug/pool-adapter.js +40 -77
- package/dist/core/lbug/query-result-utils.d.ts +19 -0
- package/dist/core/lbug/query-result-utils.js +28 -0
- package/dist/core/run-analyze.d.ts +9 -2
- package/dist/core/run-analyze.js +24 -3
- package/dist/core/tree-sitter/parser-loader.d.ts +13 -0
- package/dist/core/tree-sitter/parser-loader.js +4 -0
- package/dist/core/tree-sitter/safe-parse.d.ts +70 -3
- package/dist/core/tree-sitter/safe-parse.js +214 -11
- package/dist/core/wiki/generator.js +13 -5
- package/dist/core/wiki/graph-queries.d.ts +3 -0
- package/dist/core/wiki/graph-queries.js +9 -1
- package/dist/core/wiki/llm-client.d.ts +1 -1
- package/dist/core/wiki/llm-client.js +7 -2
- package/dist/core/wiki/local-cli-client.d.ts +2 -1
- package/dist/core/wiki/local-cli-client.js +62 -4
- package/dist/mcp/compatible-stdio-transport.d.ts +3 -0
- package/dist/mcp/compatible-stdio-transport.js +22 -0
- package/dist/mcp/core/embedder.d.ts +1 -1
- package/dist/mcp/core/embedder.js +13 -1
- package/dist/mcp/local/local-backend.d.ts +37 -5
- package/dist/mcp/local/local-backend.js +227 -129
- package/dist/mcp/resources.js +3 -3
- package/dist/mcp/server.js +9 -1
- package/dist/storage/git.d.ts +11 -0
- package/dist/storage/git.js +30 -0
- package/dist/storage/parse-cache.d.ts +23 -1
- package/dist/storage/parse-cache.js +138 -32
- package/dist/storage/parsedfile-store.d.ts +142 -0
- package/dist/storage/parsedfile-store.js +367 -0
- package/dist/storage/repo-manager.d.ts +2 -1
- package/dist/storage/scope-index-store.d.ts +114 -0
- package/dist/storage/scope-index-store.js +236 -0
- package/dist/types/pipeline.d.ts +6 -3
- package/hooks/antigravity/gitnexus-antigravity-hook.cjs +2 -1
- package/hooks/claude/gitnexus-hook.cjs +2 -1
- package/hooks/claude/resolve-analyze-cmd.cjs +323 -0
- package/package.json +4 -5
- package/scripts/bench-scope-resolution.ts +1 -3
- package/scripts/cross-platform-tests.ts +4 -1
- package/skills/gitnexus-cli.md +8 -6
- package/skills/gitnexus-debugging.md +15 -15
- package/skills/gitnexus-exploring.md +11 -11
- package/skills/gitnexus-guide.md +1 -1
- package/skills/gitnexus-impact-analysis.md +10 -10
- package/skills/gitnexus-pr-review.md +19 -19
- package/skills/gitnexus-refactoring.md +25 -25
- package/web/assets/{agent-BRX-afm3.js → agent-EkX7webX.js} +156 -131
- package/web/assets/{architectureDiagram-UL44E2DR-B1oYB8-c.js → architectureDiagram-UL44E2DR-BoczH8cv.js} +1 -1
- package/web/assets/{chunk-LCXTWHL2-SPC6pgWI.js → chunk-LCXTWHL2-By5HB3b-.js} +1 -1
- package/web/assets/{chunk-RG4AUYOV-DZXr4Yv3.js → chunk-RG4AUYOV-BQE_DkpL.js} +1 -1
- package/web/assets/{classDiagram-KGZ6W3CR-BqpOj8L9.js → classDiagram-KGZ6W3CR-Dj_02GUH.js} +1 -1
- package/web/assets/{classDiagram-v2-72OJOZXJ-FmElywK2.js → classDiagram-v2-72OJOZXJ-D-NArMpf.js} +1 -1
- package/web/assets/{diagram-3NCE3AQN-BWtJXMDq.js → diagram-3NCE3AQN-VXtXDO95.js} +1 -1
- package/web/assets/{diagram-GF46GFSD-Hh-fChxU.js → diagram-GF46GFSD-B1qab2Ah.js} +1 -1
- package/web/assets/{diagram-QXG6HAR7-DYeQHxGU.js → diagram-QXG6HAR7-BSCHGzzT.js} +1 -1
- package/web/assets/{diagram-WEQXMOUZ-DYGU4T0y.js → diagram-WEQXMOUZ-DHtknmNT.js} +1 -1
- package/web/assets/{erDiagram-L5TCEMPS-bN3wlP2A.js → erDiagram-L5TCEMPS-Db-IYTmm.js} +1 -1
- package/web/assets/{flowDiagram-H6V6AXG4-YACVtF3-.js → flowDiagram-H6V6AXG4-BHDoyVoW.js} +1 -1
- package/web/assets/{index-BhnAdWTt.js → index-BR0IhgbR.js} +10 -10
- package/web/assets/{infoDiagram-3YFTVSEB-BWBzD28-.js → infoDiagram-3YFTVSEB-6h8wbWEe.js} +1 -1
- package/web/assets/{ishikawaDiagram-BNXS4ZKH-B8qYT-j9.js → ishikawaDiagram-BNXS4ZKH-Dx2OkPk1.js} +1 -1
- package/web/assets/{kanban-definition-75IXJCU3-BeoPr5Tl.js → kanban-definition-75IXJCU3-CIIEZfqV.js} +1 -1
- package/web/assets/{mindmap-definition-2TDM6QVE-CdLLN_so.js → mindmap-definition-2TDM6QVE-DUAqydRq.js} +1 -1
- package/web/assets/{pieDiagram-CU6KROY3-DEd2a_k_.js → pieDiagram-CU6KROY3-BntYuYZa.js} +1 -1
- package/web/assets/{requirementDiagram-JXO7QTGE-QNeTo5C_.js → requirementDiagram-JXO7QTGE-QCD6I29n.js} +1 -1
- package/web/assets/{sequenceDiagram-VS2MUI6T-BHC7q7yJ.js → sequenceDiagram-VS2MUI6T-DScFwLz2.js} +1 -1
- package/web/assets/{stateDiagram-7D4R322I-KONnc2Px.js → stateDiagram-7D4R322I-AkRAm6Hl.js} +1 -1
- package/web/assets/{stateDiagram-v2-36443NZ5-C2QfuMlu.js → stateDiagram-v2-36443NZ5-BCK1vigR.js} +1 -1
- package/web/assets/{timeline-definition-O6YCAMPW-D4t4NJx1.js → timeline-definition-O6YCAMPW-BvpIVXjX.js} +1 -1
- package/web/assets/{vennDiagram-MWXL3ELB-6bctC9Yg.js → vennDiagram-MWXL3ELB-BYGWk6dK.js} +1 -1
- package/web/assets/{wardleyDiagram-CUQ6CDDI-BPZYNTvC.js → wardleyDiagram-CUQ6CDDI-Dk1z7H2T.js} +1 -1
- package/web/assets/{xychartDiagram-N2JHSOCM-lBI9O6DW.js → xychartDiagram-N2JHSOCM-2N6NCSWN.js} +1 -1
- package/web/index.html +1 -1
- package/dist/_shared/scope-resolution/shadow/aggregate.d.ts +0 -63
- package/dist/_shared/scope-resolution/shadow/aggregate.d.ts.map +0 -1
- package/dist/_shared/scope-resolution/shadow/aggregate.js +0 -122
- package/dist/_shared/scope-resolution/shadow/aggregate.js.map +0 -1
- package/dist/_shared/scope-resolution/shadow/diff.d.ts +0 -59
- package/dist/_shared/scope-resolution/shadow/diff.d.ts.map +0 -1
- package/dist/_shared/scope-resolution/shadow/diff.js +0 -79
- package/dist/_shared/scope-resolution/shadow/diff.js.map +0 -1
- package/dist/core/ingestion/ast-cache.d.ts +0 -26
- package/dist/core/ingestion/ast-cache.js +0 -48
- package/dist/core/ingestion/heritage-extractors/configs/go.d.ts +0 -13
- package/dist/core/ingestion/heritage-extractors/configs/go.js +0 -20
- package/dist/core/ingestion/heritage-extractors/configs/ruby.d.ts +0 -18
- package/dist/core/ingestion/heritage-extractors/configs/ruby.js +0 -65
- package/dist/core/ingestion/heritage-extractors/generic.d.ts +0 -23
- package/dist/core/ingestion/heritage-extractors/generic.js +0 -47
- package/dist/core/ingestion/heritage-processor.d.ts +0 -54
- package/dist/core/ingestion/heritage-processor.js +0 -367
- package/dist/core/ingestion/heritage-types.d.ts +0 -73
- package/dist/core/ingestion/heritage-types.js +0 -2
- package/dist/core/ingestion/import-processor.d.ts +0 -23
- package/dist/core/ingestion/import-processor.js +0 -377
- package/dist/core/ingestion/model/heritage-map.d.ts +0 -105
- package/dist/core/ingestion/model/heritage-map.js +0 -294
- package/dist/core/ingestion/model/resolution-context.d.ts +0 -93
- package/dist/core/ingestion/model/resolution-context.js +0 -337
- package/dist/core/ingestion/named-bindings/csharp.d.ts +0 -3
- package/dist/core/ingestion/named-bindings/csharp.js +0 -37
- package/dist/core/ingestion/named-bindings/java.d.ts +0 -3
- package/dist/core/ingestion/named-bindings/java.js +0 -29
- package/dist/core/ingestion/named-bindings/kotlin.d.ts +0 -3
- package/dist/core/ingestion/named-bindings/kotlin.js +0 -36
- package/dist/core/ingestion/named-bindings/php.d.ts +0 -3
- package/dist/core/ingestion/named-bindings/php.js +0 -61
- package/dist/core/ingestion/named-bindings/python.d.ts +0 -3
- package/dist/core/ingestion/named-bindings/python.js +0 -49
- package/dist/core/ingestion/named-bindings/rust.d.ts +0 -3
- package/dist/core/ingestion/named-bindings/rust.js +0 -66
- package/dist/core/ingestion/named-bindings/types.d.ts +0 -16
- package/dist/core/ingestion/named-bindings/types.js +0 -6
- package/dist/core/ingestion/named-bindings/typescript.d.ts +0 -3
- package/dist/core/ingestion/named-bindings/typescript.js +0 -58
- package/dist/core/ingestion/pipeline-phases/cross-file-impl.d.ts +0 -17
- package/dist/core/ingestion/pipeline-phases/cross-file-impl.js +0 -209
- package/dist/core/ingestion/pipeline-phases/orm-extraction.d.ts +0 -22
- package/dist/core/ingestion/pipeline-phases/orm-extraction.js +0 -92
- package/dist/core/ingestion/pipeline-phases/wildcard-synthesis.d.ts +0 -70
- package/dist/core/ingestion/pipeline-phases/wildcard-synthesis.js +0 -312
- package/dist/core/ingestion/registry-primary-flag.d.ts +0 -89
- package/dist/core/ingestion/registry-primary-flag.js +0 -122
- package/dist/core/ingestion/shadow-harness.d.ts +0 -113
- package/dist/core/ingestion/shadow-harness.js +0 -148
- package/dist/core/ingestion/utils/ruby-self-call.d.ts +0 -52
- package/dist/core/ingestion/utils/ruby-self-call.js +0 -59
- package/scripts/ci-list-migrated-languages.ts +0 -24
- package/scripts/run-parity.ts +0 -128
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
* call-processor so that the classification logic lives in one place.
|
|
8
8
|
*
|
|
9
9
|
* Heritage (mixins: include/extend/prepend) was previously routed here
|
|
10
|
-
* but is now
|
|
11
|
-
*
|
|
10
|
+
* but is now emitted by the scope-resolution pipeline. The router still
|
|
11
|
+
* returns 'skip' for these calls so they don't become spurious call edges.
|
|
12
12
|
*
|
|
13
13
|
* NOTE: This file is intentionally duplicated in gitnexus-web/ because the
|
|
14
14
|
* two packages have separate build targets (Node native vs WASM/browser).
|
|
@@ -19,9 +19,10 @@ import type { SyntaxNode } from './utils/ast-helpers.js';
|
|
|
19
19
|
export type CallRoutingResult = RubyCallRouting | null;
|
|
20
20
|
/**
|
|
21
21
|
* Per-language call router.
|
|
22
|
-
* IMPORTANT: Call-routed imports
|
|
23
|
-
* returns an importPath MUST validate it
|
|
24
|
-
* rejection). See routeRubyCall for the
|
|
22
|
+
* IMPORTANT: Call-routed imports are NOT sanitized by the standard import-path
|
|
23
|
+
* cleaner, so any router that returns an importPath MUST validate it
|
|
24
|
+
* independently (length cap, control-char rejection). See routeRubyCall for the
|
|
25
|
+
* reference implementation.
|
|
25
26
|
*/
|
|
26
27
|
export type CallRouter = (calledName: string, callNode: SyntaxNode) => CallRoutingResult;
|
|
27
28
|
export type RubyCallRouting = {
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
* call-processor so that the classification logic lives in one place.
|
|
8
8
|
*
|
|
9
9
|
* Heritage (mixins: include/extend/prepend) was previously routed here
|
|
10
|
-
* but is now
|
|
11
|
-
*
|
|
10
|
+
* but is now emitted by the scope-resolution pipeline. The router still
|
|
11
|
+
* returns 'skip' for these calls so they don't become spurious call edges.
|
|
12
12
|
*
|
|
13
13
|
* NOTE: This file is intentionally duplicated in gitnexus-web/ because the
|
|
14
14
|
* two packages have separate build targets (Node native vs WASM/browser).
|
|
@@ -44,10 +44,10 @@ export function routeRubyCall(calledName, callNode) {
|
|
|
44
44
|
}
|
|
45
45
|
return { kind: 'import', importPath, isRelative };
|
|
46
46
|
}
|
|
47
|
-
// ── include / extend / prepend — heritage (
|
|
48
|
-
// Call-based heritage is
|
|
49
|
-
//
|
|
50
|
-
//
|
|
47
|
+
// ── include / extend / prepend — heritage (emitted by scope-resolution) ─
|
|
48
|
+
// Call-based heritage (Ruby mixins) is emitted by the scope-resolution
|
|
49
|
+
// pipeline. Return SKIP_RESULT so these calls don't fall through to normal
|
|
50
|
+
// call processing and become spurious call edges.
|
|
51
51
|
if (calledName === 'include' || calledName === 'extend' || calledName === 'prepend') {
|
|
52
52
|
return SKIP_RESULT;
|
|
53
53
|
}
|
|
@@ -58,78 +58,3 @@ export interface CallExtractionConfig {
|
|
|
58
58
|
*/
|
|
59
59
|
typeAsReceiverHeuristic?: boolean;
|
|
60
60
|
}
|
|
61
|
-
/**
|
|
62
|
-
* DAG stage 3 output: call record with receiver type and source discriminant.
|
|
63
|
-
*
|
|
64
|
-
* `receiverTypeName` is resolved via TypeEnv → constructor-map → class-as-receiver →
|
|
65
|
-
* mixed-chain, or synthesized by `inferImplicitReceiver`. `receiverSource` tags
|
|
66
|
-
* which path won and drives MRO strategy selection in stage 4.
|
|
67
|
-
*
|
|
68
|
-
* Invariants:
|
|
69
|
-
* - `receiverSource` MUST match how `receiverTypeName` was resolved; every
|
|
70
|
-
* discriminant must have a live reader and writer.
|
|
71
|
-
* - `hint` is opaque to shared stages; only the same provider's `selectDispatch` reads it.
|
|
72
|
-
*
|
|
73
|
-
* @see language-provider.ts § inferImplicitReceiver, selectDispatch
|
|
74
|
-
*/
|
|
75
|
-
export interface ReceiverEnriched {
|
|
76
|
-
readonly calledName: string;
|
|
77
|
-
readonly callForm: 'free' | 'member' | 'constructor' | undefined;
|
|
78
|
-
readonly receiverName: string | undefined;
|
|
79
|
-
readonly receiverTypeName: string | undefined;
|
|
80
|
-
readonly receiverSource: 'none' | 'typed-binding' | 'constructor-map' | 'class-as-receiver' | 'mixed-chain' | 'implicit-self';
|
|
81
|
-
/** Free-form hint from the provider hook; opaque to shared stages. */
|
|
82
|
-
readonly hint?: string;
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Provider hook output for `LanguageProvider.inferImplicitReceiver` (DAG stage 3).
|
|
86
|
-
*
|
|
87
|
-
* Overlay applied to `ReceiverEnriched` when an implicit receiver is synthesized.
|
|
88
|
-
* Ruby example: bare `serialize` inside `Account#call_serialize` →
|
|
89
|
-
* `{ callForm: 'member', receiverName: 'self', receiverTypeName: 'Account',
|
|
90
|
-
* receiverSource: 'implicit-self', hint: 'instance' }`
|
|
91
|
-
*
|
|
92
|
-
* Invariants:
|
|
93
|
-
* - `receiverSource` is always `'implicit-self'` — the only variant this type produces.
|
|
94
|
-
* - `callForm` is always `'member'` — the rewrite converts bare-call to method invocation.
|
|
95
|
-
* - `hint` is opaque to shared stages; consumed by the same language's `selectDispatch`.
|
|
96
|
-
*/
|
|
97
|
-
export interface ImplicitReceiverOverride {
|
|
98
|
-
readonly callForm: 'free' | 'member' | 'constructor';
|
|
99
|
-
readonly receiverName: string;
|
|
100
|
-
readonly receiverTypeName: string;
|
|
101
|
-
readonly receiverSource: Extract<ReceiverEnriched['receiverSource'], 'implicit-self'>;
|
|
102
|
-
/** Free-form language tag (e.g. Ruby sets 'singleton' for `def self.foo`
|
|
103
|
-
* method bodies). Consumed by the same language's `selectDispatch` hook. */
|
|
104
|
-
readonly hint?: string;
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* DAG stage 4 output: dispatch strategy for resolving the target method.
|
|
108
|
-
*
|
|
109
|
-
* Encodes which resolver branch to try first and an optional fallback.
|
|
110
|
-
* Stage 5 delegates to `resolveMemberCall`, `resolveFreeCall`, or
|
|
111
|
-
* `resolveStaticCall` based on `primary`.
|
|
112
|
-
*
|
|
113
|
-
* - `primary`: `'owner-scoped'` = MRO walk, `'free'` = arity-tiered global lookup,
|
|
114
|
-
* `'constructor'` = type instantiation.
|
|
115
|
-
* - `fallback`: Only `'free-arity-narrowed'` exists; used by Ruby implicit-self
|
|
116
|
-
* to degrade to arity-tiered free lookup when the MRO walk misses.
|
|
117
|
-
* - `ancestryView`: Ruby `'ruby-mixin'` only. `'singleton'` walks extend providers
|
|
118
|
-
* only; a miss NEVER falls through to file-scoped lookup (enforced in
|
|
119
|
-
* resolveCallTarget). `'instance'` is the default.
|
|
120
|
-
*
|
|
121
|
-
* Common patterns:
|
|
122
|
-
* - `{primary: 'constructor'}` — constructor call
|
|
123
|
-
* - `{primary: 'owner-scoped'}` — member call with known type
|
|
124
|
-
* - `{primary: 'owner-scoped', fallback: 'free-arity-narrowed', ancestryView: 'instance'}` — Ruby implicit-self
|
|
125
|
-
* - `{primary: 'owner-scoped', ancestryView: 'singleton'}` — Ruby class-method call
|
|
126
|
-
*
|
|
127
|
-
* @see language-provider.ts § selectDispatch
|
|
128
|
-
* @see call-processor.ts § defaultDispatchDecision, resolveCallTarget
|
|
129
|
-
*/
|
|
130
|
-
export interface DispatchDecision {
|
|
131
|
-
readonly primary: 'owner-scoped' | 'free' | 'constructor';
|
|
132
|
-
readonly fallback?: 'free-arity-narrowed';
|
|
133
|
-
readonly ancestryView?: 'instance' | 'singleton';
|
|
134
|
-
readonly hint?: string;
|
|
135
|
-
}
|
|
@@ -29,7 +29,32 @@ export const cClassConfig = {
|
|
|
29
29
|
export const cppClassConfig = {
|
|
30
30
|
language: SupportedLanguages.CPlusPlus,
|
|
31
31
|
typeDeclarationNodes: ['class_specifier', 'struct_specifier', 'enum_specifier'],
|
|
32
|
-
|
|
32
|
+
// #1995: `union_specifier` is included so a type nested in a NAMED union
|
|
33
|
+
// (`union U1 { struct Inner {...} }`) qualifies as `U1.Inner`. Anonymous unions
|
|
34
|
+
// have no `name` child → extractScopeSegmentsFromNode returns [] → they correctly
|
|
35
|
+
// contribute nothing (members inject into the enclosing scope). C uses the
|
|
36
|
+
// separate cClassConfig (no qualifiedNodeId), so it is intentionally untouched.
|
|
37
|
+
ancestorScopeNodeTypes: [
|
|
38
|
+
'namespace_definition',
|
|
39
|
+
'class_specifier',
|
|
40
|
+
'struct_specifier',
|
|
41
|
+
'union_specifier',
|
|
42
|
+
],
|
|
43
|
+
// #1978: key nested-type nodes by their fully-qualified path (Outer.Inner) so
|
|
44
|
+
// same-tail nested types in one TU stay distinct instead of silently merging.
|
|
45
|
+
qualifiedNodeId: true,
|
|
46
|
+
// #1995: anonymous namespaces have no `name` child, so the generic scope walker
|
|
47
|
+
// drops them (empty segment) and two `namespace { struct Inner {} }` blocks in one
|
|
48
|
+
// TU collapse onto a single `Inner` node. Give each anonymous namespace_definition
|
|
49
|
+
// a deterministic per-block discriminator (its start byte — stable across the
|
|
50
|
+
// sequential and worker full-file parses) so the nested types stay distinct.
|
|
51
|
+
// Returning `undefined` for every other scope — named namespaces (incl. `inline
|
|
52
|
+
// namespace`), classes, structs, named unions — falls through to the default
|
|
53
|
+
// name-based extraction, leaving them unchanged. Anonymous UNIONS are not matched
|
|
54
|
+
// here (members inject into the enclosing scope), so they keep yielding [].
|
|
55
|
+
extractScopeSegments: (node) => node.type === 'namespace_definition' && !node.childForFieldName?.('name')
|
|
56
|
+
? [`@anon${node.startIndex}`]
|
|
57
|
+
: undefined,
|
|
33
58
|
extractName: (node) => {
|
|
34
59
|
const nameNode = node.childForFieldName?.('name');
|
|
35
60
|
if (!nameNode)
|
|
@@ -4,4 +4,7 @@ export const rubyClassConfig = {
|
|
|
4
4
|
language: SupportedLanguages.Ruby,
|
|
5
5
|
typeDeclarationNodes: ['class'],
|
|
6
6
|
ancestorScopeNodeTypes: ['module', 'class'],
|
|
7
|
+
// #1978: key nested-type nodes by their fully-qualified path (Outer.Inner) so
|
|
8
|
+
// same-tail classes nested under different modules stay distinct.
|
|
9
|
+
qualifiedNodeId: true,
|
|
7
10
|
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { splitQualifiedName } from '../utils/qualified-name.js';
|
|
1
2
|
const DEFAULT_SCOPE_NAME_NODE_TYPES = new Set([
|
|
2
3
|
'nested_namespace_specifier',
|
|
3
4
|
'scoped_identifier',
|
|
@@ -45,17 +46,6 @@ const CLASS_LIKE_LABELS = new Set([
|
|
|
45
46
|
'Enum',
|
|
46
47
|
'Record',
|
|
47
48
|
]);
|
|
48
|
-
const normalizeQualifiedName = (value) => value
|
|
49
|
-
.replace(/\s+/g, '')
|
|
50
|
-
.replace(/^::/, '')
|
|
51
|
-
.replace(/::/g, '.')
|
|
52
|
-
.replace(/\\/g, '.')
|
|
53
|
-
.replace(/\.+/g, '.')
|
|
54
|
-
.replace(/^\.+|\.+$/g, '');
|
|
55
|
-
const splitQualifiedName = (value) => {
|
|
56
|
-
const normalized = normalizeQualifiedName(value);
|
|
57
|
-
return normalized ? normalized.split('.').filter(Boolean) : [];
|
|
58
|
-
};
|
|
59
49
|
const extractScopeSegmentsFromNode = (scopeNode, scopeNameNodeTypes) => {
|
|
60
50
|
const nameNode = scopeNode.childForFieldName?.('name') ??
|
|
61
51
|
scopeNode.namedChildren?.find((child) => scopeNameNodeTypes.has(child.type));
|
|
@@ -126,6 +116,7 @@ export function createClassExtractor(config) {
|
|
|
126
116
|
};
|
|
127
117
|
return {
|
|
128
118
|
language: config.language,
|
|
119
|
+
qualifiedNodeId: config.qualifiedNodeId ?? false,
|
|
129
120
|
isTypeDeclaration(node) {
|
|
130
121
|
return typeDeclarationSet.has(node.type);
|
|
131
122
|
},
|
|
@@ -133,6 +124,13 @@ export function createClassExtractor(config) {
|
|
|
133
124
|
extractQualifiedName(node, simpleName) {
|
|
134
125
|
return extract(node, { name: simpleName })?.qualifiedName ?? null;
|
|
135
126
|
},
|
|
127
|
+
// #1991: qualify a non-typeDeclaration scope node (e.g. a Ruby `module` → Trait)
|
|
128
|
+
// by the same ancestor-scope walk the node-id path uses, so two same-tail nested
|
|
129
|
+
// mixin modules stay distinct. extract()/extractQualifiedName cannot be reused —
|
|
130
|
+
// they bail on non-typeDeclarations (a module is not in typeDeclarationNodes).
|
|
131
|
+
qualifyScopeName(node, simpleName) {
|
|
132
|
+
return buildQualifiedName(node, simpleName);
|
|
133
|
+
},
|
|
136
134
|
shouldSkipClassCapture(context) {
|
|
137
135
|
return config.shouldSkipClassCapture?.(context) ?? false;
|
|
138
136
|
},
|
|
@@ -21,12 +21,27 @@ export interface ClassCaptureContext {
|
|
|
21
21
|
*/
|
|
22
22
|
export interface ClassExtractor {
|
|
23
23
|
language: SupportedLanguages;
|
|
24
|
+
/**
|
|
25
|
+
* When true, this language's nested-type graph nodes are keyed by their
|
|
26
|
+
* fully-qualified path (e.g. `Class:file:Outer.Inner`) instead of the simple
|
|
27
|
+
* tail name, so same-tail nested types in one file stay distinct (#1978).
|
|
28
|
+
* Surfaced from `ClassExtractionConfig.qualifiedNodeId`.
|
|
29
|
+
*/
|
|
30
|
+
readonly qualifiedNodeId: boolean;
|
|
24
31
|
isTypeDeclaration(node: SyntaxNode): boolean;
|
|
25
32
|
extract(node: SyntaxNode, fallback?: {
|
|
26
33
|
name?: string;
|
|
27
34
|
type?: NodeLabel | null;
|
|
28
35
|
}): ExtractedClassSymbol | null;
|
|
29
36
|
extractQualifiedName(node: SyntaxNode, simpleName: string): string | null;
|
|
37
|
+
/**
|
|
38
|
+
* #1991: qualify a scope-defining node that maps to a class-like registry label
|
|
39
|
+
* (e.g. a Ruby `module` → Trait) but is NOT a typeDeclaration, so it cannot go
|
|
40
|
+
* through extract()/extractQualifiedName (which bail on non-typeDeclarations).
|
|
41
|
+
* Walks the same ancestor scopes as the node-id path. Optional — only providers
|
|
42
|
+
* that materialize such nodes implement it.
|
|
43
|
+
*/
|
|
44
|
+
qualifyScopeName?(node: SyntaxNode, simpleName: string): string;
|
|
30
45
|
shouldSkipClassCapture?(context: ClassCaptureContext & {
|
|
31
46
|
nodeLabel: ClassLikeNodeLabel;
|
|
32
47
|
}): boolean;
|
|
@@ -37,6 +52,14 @@ export interface ClassExtractionConfig {
|
|
|
37
52
|
typeDeclarationNodes: string[];
|
|
38
53
|
fileScopeNodeTypes?: string[];
|
|
39
54
|
ancestorScopeNodeTypes?: string[];
|
|
55
|
+
/**
|
|
56
|
+
* Opt-in (#1978): key this language's nested-type graph nodes (and their
|
|
57
|
+
* member-owner edges) by the fully-qualified path instead of the simple tail
|
|
58
|
+
* name, so same-tail nested types in one file stop colliding. Default false.
|
|
59
|
+
* Requires `ancestorScopeNodeTypes` to be set so `buildQualifiedName` can walk
|
|
60
|
+
* the scope chain.
|
|
61
|
+
*/
|
|
62
|
+
qualifiedNodeId?: boolean;
|
|
40
63
|
scopeNameNodeTypes?: string[];
|
|
41
64
|
extractName?: (node: SyntaxNode) => string | undefined;
|
|
42
65
|
extractType?: (node: SyntaxNode) => ClassLikeNodeLabel | undefined;
|
|
@@ -187,6 +187,17 @@ export interface CobolRegexResults {
|
|
|
187
187
|
line: number;
|
|
188
188
|
caller: string | null;
|
|
189
189
|
}>;
|
|
190
|
+
arithmeticOps: Array<{
|
|
191
|
+
verb: 'COMPUTE' | 'ADD' | 'SUBTRACT' | 'MULTIPLY' | 'DIVIDE';
|
|
192
|
+
/** Target variable (written to) */
|
|
193
|
+
target: string;
|
|
194
|
+
/** Source operand variables (read from) */
|
|
195
|
+
sources: string[];
|
|
196
|
+
line: number;
|
|
197
|
+
caller: string | null;
|
|
198
|
+
/** For ADD/SUBTRACT/MULTIPLY/DIVIDE with GIVING: the GIVING target */
|
|
199
|
+
givingTarget?: string;
|
|
200
|
+
}>;
|
|
190
201
|
}
|
|
191
202
|
/**
|
|
192
203
|
* Normalize COBOL source for regex-based extraction.
|