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
package/dist/types/pipeline.d.ts
CHANGED
|
@@ -2,7 +2,9 @@ import type { KnowledgeGraph } from '../core/graph/types.js';
|
|
|
2
2
|
import { CommunityDetectionResult } from '../core/ingestion/community-processor.js';
|
|
3
3
|
import { ProcessDetectionResult } from '../core/ingestion/process-processor.js';
|
|
4
4
|
import type { ResolutionOutcome } from '../core/ingestion/scope-resolution/resolution-outcome.js';
|
|
5
|
+
import type { UndecidedSatisfaction } from '../core/ingestion/scope-resolution/contract/scope-resolver.js';
|
|
5
6
|
import type { PdgEmitManifest } from '../core/lbug/pdg-emit-sink.js';
|
|
7
|
+
import type { GraphEmitManifest } from '../core/lbug/graph-emit-sink.js';
|
|
6
8
|
export interface PipelineResult {
|
|
7
9
|
graph: KnowledgeGraph;
|
|
8
10
|
/** Absolute path to the repo root — used for lazy file reads during LadybugDB loading */
|
|
@@ -17,6 +19,16 @@ export interface PipelineResult {
|
|
|
17
19
|
* produced; graph edge semantics are unchanged.
|
|
18
20
|
*/
|
|
19
21
|
resolutionOutcomes: readonly ResolutionOutcome[];
|
|
22
|
+
/**
|
|
23
|
+
* Interfaces whose structural-satisfaction check could not be completed
|
|
24
|
+
* (#2873). Empty for languages with no structural detection.
|
|
25
|
+
*
|
|
26
|
+
* ABSENT means scope resolution never ran, which is not the same claim as an
|
|
27
|
+
* empty array — that one says the analyzer looked and decided everything.
|
|
28
|
+
* The writer needs the difference: it carries a prior record forward across a
|
|
29
|
+
* run that could not measure, and CLEARS it on a run that measured clean.
|
|
30
|
+
*/
|
|
31
|
+
undecidedSatisfaction?: readonly UndecidedSatisfaction[];
|
|
20
32
|
/**
|
|
21
33
|
* True if a worker pool was actually constructed for this run. The worker
|
|
22
34
|
* pool is the sole parse path (sequential parsing was removed). False means
|
|
@@ -34,4 +46,29 @@ export interface PipelineResult {
|
|
|
34
46
|
* layer (if any) is resident in `graph` and persists via the whole-graph emit.
|
|
35
47
|
*/
|
|
36
48
|
pdgEmitManifest?: PdgEmitManifest;
|
|
49
|
+
/**
|
|
50
|
+
* Streamed structural-emit COPY manifest (#2680). Present only when
|
|
51
|
+
* `streamGraphEmit` was active (full rebuild + enabled): the per-pair CSVs of
|
|
52
|
+
* relationships that never entered the in-memory graph, for `loadGraphToLbug`
|
|
53
|
+
* to COPY ALONGSIDE the whole-graph CSVs (their pair keys overlap, so they are
|
|
54
|
+
* additional COPY jobs, not map entries).
|
|
55
|
+
*/
|
|
56
|
+
graphEmitManifest?: GraphEmitManifest;
|
|
57
|
+
/**
|
|
58
|
+
* Property-inference facts from scope resolution (R3-1). Present so a caller
|
|
59
|
+
* — a test, the CLI, or a future MCP surface — can tell WHY a field has no
|
|
60
|
+
* ACCESSES rows: genuinely unread, ambiguous between candidates, or anchored
|
|
61
|
+
* only in a language the per-language inference may not cross. Those are
|
|
62
|
+
* three different situations with three different remedies, and without this
|
|
63
|
+
* they produce byte-identical empty results.
|
|
64
|
+
*/
|
|
65
|
+
propertyInference?: {
|
|
66
|
+
readonly ambiguous: number;
|
|
67
|
+
readonly ambiguousNames: readonly string[];
|
|
68
|
+
readonly crossLanguage: number;
|
|
69
|
+
readonly crossLanguageNames: readonly {
|
|
70
|
+
readonly name: string;
|
|
71
|
+
readonly languages: string[];
|
|
72
|
+
}[];
|
|
73
|
+
};
|
|
37
74
|
}
|
|
@@ -503,7 +503,7 @@ function buildStaleIndexHint(gitNexusDir, cwd) {
|
|
|
503
503
|
|
|
504
504
|
if (currentHead === lastCommit) return '';
|
|
505
505
|
|
|
506
|
-
const analyzeCmd = formatAnalyzeCommand({ embeddings: hadEmbeddings });
|
|
506
|
+
const analyzeCmd = formatAnalyzeCommand({ embeddings: hadEmbeddings, indexOnly: true });
|
|
507
507
|
return (
|
|
508
508
|
`[GitNexus] index is stale (last indexed: ${lastCommit ? lastCommit.slice(0, 7) : 'never'}). ` +
|
|
509
509
|
`Run \`${analyzeCmd}\` to refresh the knowledge graph.`
|
|
@@ -523,7 +523,7 @@ function handlePostToolUse(input) {
|
|
|
523
523
|
// If HEAD matches last indexed commit, no reindex needed
|
|
524
524
|
if (currentHead && currentHead === lastCommit) return;
|
|
525
525
|
|
|
526
|
-
const analyzeCmd = formatAnalyzeCommand({ embeddings: hadEmbeddings });
|
|
526
|
+
const analyzeCmd = formatAnalyzeCommand({ embeddings: hadEmbeddings, indexOnly: true });
|
|
527
527
|
sendHookResponse(
|
|
528
528
|
'PostToolUse',
|
|
529
529
|
`GitNexus index is stale (last indexed: ${lastCommit ? lastCommit.slice(0, 7) : 'never'}). ` +
|
|
@@ -5,9 +5,19 @@
|
|
|
5
5
|
* 1. Global `gitnexus` on PATH (best — no install step)
|
|
6
6
|
* 2. npm 11+ with pnpm on PATH → `pnpm --allow-build=… dlx` (avoids the npx
|
|
7
7
|
* arborist crash *and* pnpm 10+ ignored-build-script failures, #1939)
|
|
8
|
-
* 3. npm
|
|
9
|
-
* 4.
|
|
10
|
-
* 5.
|
|
8
|
+
* 3. npm 11+ without pnpm but with bunx → `bunx` (dodges the same crash)
|
|
9
|
+
* 4. npm < 11 with npm on PATH → `npx` (works; simpler than pnpm dlx)
|
|
10
|
+
* 5. pnpm-only → `pnpm --allow-build=… dlx`
|
|
11
|
+
* 6. bun-only → `bunx`
|
|
12
|
+
* 7. Last resort → `npx` (warned on npm 11+ from analyze.ts)
|
|
13
|
+
*
|
|
14
|
+
* The bun branches exist because a Node toolchain is no longer implied: on a
|
|
15
|
+
* bun-only machine npm, npx and pnpm are all absent, so every rung above
|
|
16
|
+
* resolved to `npx` and the emitted command could not run at all. `bunx` is
|
|
17
|
+
* bun's install-free one-shot runner and needs no allow-build equivalent — bun
|
|
18
|
+
* skips lifecycle scripts unconditionally for a `bunx` fetch, which the native
|
|
19
|
+
* loader recovers from directly (see core/lbug/native-check.ts). Both bun rungs
|
|
20
|
+
* gate on `bunx` actually running, not merely existing on PATH — see `hasBun`.
|
|
11
21
|
*
|
|
12
22
|
* The `--allow-build` flags MUST precede the `dlx` token. pnpm < 10.14 keeps
|
|
13
23
|
* `dlx` in its argv escape list, so flags placed *after* `dlx` are parsed as
|
|
@@ -42,7 +52,12 @@ const PNPM_ALLOW_BUILD_EMBEDDINGS = ['onnxruntime-node'];
|
|
|
42
52
|
// hook first runs `git rev-parse --git-common-dir` (~2s) and `git rev-parse HEAD`
|
|
43
53
|
// (~3s); the pnpm path then adds up to two 1s `--version` probes (npm, pnpm), so
|
|
44
54
|
// the worst case is ~7s — within budget. A healthy `--version` returns in well
|
|
45
|
-
// under a second, so the realistic cost is far lower.
|
|
55
|
+
// under a second, so the realistic cost is far lower. The bun rungs add at most
|
|
56
|
+
// one more 1s probe (`bunx --version`), reached only when pnpm is unusable and
|
|
57
|
+
// npm is 11+ or unreadable, for a ~8s theoretical cap. That cap needs an absent
|
|
58
|
+
// pnpm to burn its full second, which only Windows can do (`shell: true` spawns
|
|
59
|
+
// cmd.exe); on POSIX an absent pnpm ENOENTs in ~1ms, so the real ceiling is
|
|
60
|
+
// unmoved.
|
|
46
61
|
const PROBE_TIMEOUT_MS = 1000;
|
|
47
62
|
|
|
48
63
|
/**
|
|
@@ -104,9 +119,17 @@ function resolveOnPath(
|
|
|
104
119
|
return weakHit;
|
|
105
120
|
}
|
|
106
121
|
|
|
107
|
-
// One spawn of `<command> --version` → { major, minor } (
|
|
122
|
+
// One spawn of `<command> --version` → { ran, major, minor } (versions null when
|
|
108
123
|
// unreadable). Version injection happens at the resolver seam (getNpmMajorVersion
|
|
109
124
|
// / formatPnpmAllowBuildArgs), so this stays a pure real-process probe.
|
|
125
|
+
//
|
|
126
|
+
// `ran` is liveness, kept separate from the version because a PATH hit proves a
|
|
127
|
+
// file exists, not that it works, and the two answers differ: a banner-printing
|
|
128
|
+
// or oddly-versioned tool is alive with `major: null`, while a stale shim left by
|
|
129
|
+
// a partial uninstall is neither. Only the bun rung consults `ran` today (see
|
|
130
|
+
// hasBun) — it is the one runner with no version to read, so a dedicated probe is
|
|
131
|
+
// its only liveness signal; pnpm gets the same evidence for free from the version
|
|
132
|
+
// spawn it must make anyway, and deliberately forgives an unreadable one (#1939).
|
|
110
133
|
function probeVersion(command) {
|
|
111
134
|
try {
|
|
112
135
|
const output = execFileSync(command, ['--version'], {
|
|
@@ -131,11 +154,13 @@ function probeVersion(command) {
|
|
|
131
154
|
.find((l) => /^v?\d+\.\d+/.test(l));
|
|
132
155
|
const match = versionLine ? versionLine.match(/^v?(\d+)\.(\d+)/) : null;
|
|
133
156
|
return {
|
|
157
|
+
ran: true,
|
|
134
158
|
major: match ? Number(match[1]) : null,
|
|
135
159
|
minor: match ? Number(match[2]) : null,
|
|
136
160
|
};
|
|
137
161
|
} catch {
|
|
138
|
-
|
|
162
|
+
// Spawn failure, non-zero exit, or the timeout — the command did not run.
|
|
163
|
+
return { ran: false, major: null, minor: null };
|
|
139
164
|
}
|
|
140
165
|
}
|
|
141
166
|
|
|
@@ -176,14 +201,14 @@ function formatDocumentationDlxCommand(gitnexusArgs, options = {}) {
|
|
|
176
201
|
}
|
|
177
202
|
|
|
178
203
|
/**
|
|
179
|
-
* Resolve `gitnexus` | `pnpm` | `npx`. `GITNEXUS_INVOCATION` forces a
|
|
180
|
-
* (test/escape hatch). `probe` is injectable so the preference order can be
|
|
204
|
+
* Resolve `gitnexus` | `pnpm` | `bun` | `npx`. `GITNEXUS_INVOCATION` forces a
|
|
205
|
+
* mode (test/escape hatch). `probe` is injectable so the preference order can be
|
|
181
206
|
* unit-tested without spawning; it defaults to the real PATH probe. `deps` can
|
|
182
|
-
* inject `{ npmMajor, pnpmMajor }` for tests.
|
|
207
|
+
* inject `{ npmMajor, pnpmMajor, bunPresent, bunRuns }` for tests.
|
|
183
208
|
*/
|
|
184
209
|
function resolveInvocationMode(probe = resolveOnPath, deps = {}) {
|
|
185
210
|
const forced = process.env.GITNEXUS_INVOCATION?.trim().toLowerCase();
|
|
186
|
-
if (forced === 'gitnexus' || forced === 'pnpm' || forced === 'npx') {
|
|
211
|
+
if (forced === 'gitnexus' || forced === 'pnpm' || forced === 'npx' || forced === 'bun') {
|
|
187
212
|
return forced;
|
|
188
213
|
}
|
|
189
214
|
if (probe('gitnexus', true)) return 'gitnexus';
|
|
@@ -202,12 +227,33 @@ function resolveInvocationMode(probe = resolveOnPath, deps = {}) {
|
|
|
202
227
|
? deps.pnpmMajor !== null
|
|
203
228
|
: Boolean(probe('pnpm'));
|
|
204
229
|
|
|
230
|
+
// bun usability is resolved lazily: only the two branches below can select it,
|
|
231
|
+
// so a machine with pnpm, or with npm < 11, never pays the PATH scan or the
|
|
232
|
+
// spawn. `bunx` (not `bun`) is probed because `bunx` is what the resolved
|
|
233
|
+
// command actually runs. Two gates, `&&`-ordered cheapest first: a spawn-free
|
|
234
|
+
// PATH scan, then liveness — a PATH hit alone would route a present-but-broken
|
|
235
|
+
// shim to a command that can only fail at execution time.
|
|
236
|
+
let bunCache;
|
|
237
|
+
const hasBun = () => {
|
|
238
|
+
if (bunCache === undefined) {
|
|
239
|
+
const present = 'bunPresent' in deps ? Boolean(deps.bunPresent) : Boolean(probe('bunx'));
|
|
240
|
+
bunCache = present && ('bunRuns' in deps ? Boolean(deps.bunRuns) : probeVersion('bunx').ran);
|
|
241
|
+
}
|
|
242
|
+
return bunCache;
|
|
243
|
+
};
|
|
244
|
+
|
|
205
245
|
// npm 11+ npx install crash (#1939) — prefer pnpm dlx when available.
|
|
206
246
|
if (hasPnpm && npmMajor !== null && npmMajor >= 11) return 'pnpm';
|
|
247
|
+
// Same crash, no pnpm to fall back on: bunx is install-free and unaffected.
|
|
248
|
+
if (npmMajor !== null && npmMajor >= 11 && hasBun()) return 'bun';
|
|
207
249
|
// npm 10 and earlier: npx works; prefer it over pnpm dlx when npm is present.
|
|
208
250
|
if (npmMajor !== null && npmMajor < 11) return 'npx';
|
|
209
251
|
// npm absent or unreadable — use pnpm if present (with allow-build flags).
|
|
210
252
|
if (hasPnpm) return 'pnpm';
|
|
253
|
+
// Neither npm nor pnpm — bunx is the only install-free runner left. Without
|
|
254
|
+
// this rung a bun-only machine fell through to `npx`, which is not installed
|
|
255
|
+
// there, so the emitted command failed with "npx: command not found".
|
|
256
|
+
if (hasBun()) return 'bun';
|
|
211
257
|
|
|
212
258
|
return 'npx';
|
|
213
259
|
}
|
|
@@ -218,8 +264,25 @@ function formatPnpmDlxCommand(gitnexusArgs, options = {}, deps = {}) {
|
|
|
218
264
|
return `pnpm ${prefix}dlx ${NPX_REF} ${gitnexusArgs}`;
|
|
219
265
|
}
|
|
220
266
|
|
|
267
|
+
/**
|
|
268
|
+
* bun's install-free one-shot runner. Deliberately flag-free: bun has no
|
|
269
|
+
* per-invocation `--allow-build` equivalent (`--trust` is a `bun add`/`bun
|
|
270
|
+
* install` flag that writes trustedDependencies into a project package.json,
|
|
271
|
+
* which a one-shot `bunx` has nowhere to put), so the skipped lifecycle copy is
|
|
272
|
+
* recovered by the native loader instead of by the invocation.
|
|
273
|
+
*/
|
|
274
|
+
function formatBunxCommand(gitnexusArgs) {
|
|
275
|
+
return `bunx ${NPX_REF} ${gitnexusArgs}`;
|
|
276
|
+
}
|
|
277
|
+
|
|
221
278
|
function formatAnalyzeCommand(options = {}, deps = {}) {
|
|
222
|
-
|
|
279
|
+
// `--index-only` is what a routine "your index is stale" nudge wants: it
|
|
280
|
+
// reindexes without rewriting AGENTS.md / CLAUDE.md / skills, so an agent
|
|
281
|
+
// following the nudge on every commit cannot churn the tracked agent guides
|
|
282
|
+
// (#2907). Callers that actually want the docs refreshed omit it.
|
|
283
|
+
const suffix = `${options.indexOnly ? ' --index-only' : ''}${
|
|
284
|
+
options.embeddings ? ' --embeddings' : ''
|
|
285
|
+
}`;
|
|
223
286
|
// Keep the stale-index hook budget tight by querying each tool at most once.
|
|
224
287
|
// The memoized `probe` is a spawn-free PATH scan (resolveOnPath) shared with
|
|
225
288
|
// resolveInvocationMode, so `gitnexus` is scanned only once and no subprocess
|
|
@@ -238,7 +301,8 @@ function formatAnalyzeCommand(options = {}, deps = {}) {
|
|
|
238
301
|
const forced = process.env.GITNEXUS_INVOCATION?.trim().toLowerCase();
|
|
239
302
|
// pnpm is only consulted when no non-pnpm mode is already certain: forced
|
|
240
303
|
// gitnexus/npx never use pnpm, and a present global gitnexus wins outright.
|
|
241
|
-
const mightUsePnpm =
|
|
304
|
+
const mightUsePnpm =
|
|
305
|
+
forced === 'pnpm' || (forced !== 'gitnexus' && forced !== 'npx' && forced !== 'bun');
|
|
242
306
|
if (mightUsePnpm && (forced === 'pnpm' || !probe('gitnexus', true))) {
|
|
243
307
|
const { major, minor } = probeVersion('pnpm');
|
|
244
308
|
// Carry presence separately from version: when the version probe fails
|
|
@@ -252,6 +316,7 @@ function formatAnalyzeCommand(options = {}, deps = {}) {
|
|
|
252
316
|
const mode = resolveInvocationMode(probe, resolved);
|
|
253
317
|
if (mode === 'gitnexus') return `gitnexus analyze${suffix}`;
|
|
254
318
|
if (mode === 'pnpm') return `${formatPnpmDlxCommand(`analyze${suffix}`, options, resolved)}`;
|
|
319
|
+
if (mode === 'bun') return formatBunxCommand(`analyze${suffix}`);
|
|
255
320
|
return `npx ${NPX_REF} analyze${suffix}`;
|
|
256
321
|
}
|
|
257
322
|
|
|
@@ -268,6 +333,7 @@ function buildRunnerArgv(mode, gitnexusArgs, deps = {}) {
|
|
|
268
333
|
(a) => a === '--embeddings' || a.startsWith('--embeddings='),
|
|
269
334
|
);
|
|
270
335
|
if (mode === 'gitnexus') return { program: 'gitnexus', args: [...gitnexusArgs] };
|
|
336
|
+
if (mode === 'bun') return { program: 'bunx', args: [NPX_REF, ...gitnexusArgs] };
|
|
271
337
|
if (mode === 'pnpm') {
|
|
272
338
|
return {
|
|
273
339
|
program: 'pnpm',
|
|
@@ -279,6 +345,7 @@ function buildRunnerArgv(mode, gitnexusArgs, deps = {}) {
|
|
|
279
345
|
|
|
280
346
|
module.exports = {
|
|
281
347
|
formatAnalyzeCommand,
|
|
348
|
+
formatBunxCommand,
|
|
282
349
|
formatDocumentationDlxCommand,
|
|
283
350
|
formatPnpmAllowBuildArgs,
|
|
284
351
|
formatPnpmDlxCommand,
|
|
@@ -291,7 +358,7 @@ module.exports = {
|
|
|
291
358
|
};
|
|
292
359
|
|
|
293
360
|
// Direct-exec entrypoint (#1945): `node run.cjs <gitnexus args…>` resolves the
|
|
294
|
-
// best available runner (global `gitnexus` → `pnpm dlx` → `npx`) at call time and
|
|
361
|
+
// best available runner (global `gitnexus` → `pnpm dlx` → `bunx` → `npx`) at call time and
|
|
295
362
|
// runs it, inheriting stdio and propagating the child's exit code. This lets the
|
|
296
363
|
// committed skills and generated AGENTS.md/CLAUDE.md reference ONE stable,
|
|
297
364
|
// CLI-neutral command without baking in a package-manager assumption. `gitnexus
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gitnexus",
|
|
3
|
-
"version": "1.6.10-rc.
|
|
3
|
+
"version": "1.6.10-rc.211",
|
|
4
4
|
"description": "Graph-powered code intelligence for AI agents. Index any codebase, query via MCP or CLI.",
|
|
5
5
|
"author": "Abhigyan Patwari",
|
|
6
6
|
"license": "PolyForm-Noncommercial-1.0.0",
|
|
@@ -52,10 +52,11 @@
|
|
|
52
52
|
"postinstall": "node scripts/build-tree-sitter-grammars.cjs",
|
|
53
53
|
"assert-publish-coverage": "node scripts/assert-publish-grammar-coverage.cjs",
|
|
54
54
|
"prepare": "node scripts/build.js",
|
|
55
|
-
"prepack": "node scripts/assert-publish-grammar-coverage.cjs && node scripts/build.js"
|
|
55
|
+
"prepack": "node scripts/assert-publish-grammar-coverage.cjs && node scripts/build.js",
|
|
56
|
+
"version": "node scripts/sync-plugin-manifests.mjs"
|
|
56
57
|
},
|
|
57
58
|
"dependencies": {
|
|
58
|
-
"@ladybugdb/core": "^0.
|
|
59
|
+
"@ladybugdb/core": "^0.19.0",
|
|
59
60
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
60
61
|
"@scarf/scarf": "^1.4.0",
|
|
61
62
|
"busboy": "^1.6.0",
|
|
@@ -69,7 +70,7 @@
|
|
|
69
70
|
"graphology-indices": "^0.17.0",
|
|
70
71
|
"graphology-utils": "^2.3.0",
|
|
71
72
|
"ignore": "^7.0.5",
|
|
72
|
-
"js-yaml": "^
|
|
73
|
+
"js-yaml": "^5.0.0",
|
|
73
74
|
"jsonc-parser": "^3.3.1",
|
|
74
75
|
"mnemonist": "^0.40.3",
|
|
75
76
|
"node-addon-api": "^8.0.0",
|
|
@@ -78,6 +79,7 @@
|
|
|
78
79
|
"pandemonium": "^2.4.0",
|
|
79
80
|
"pino": "^10.3.1",
|
|
80
81
|
"pino-pretty": "^13.1.3",
|
|
82
|
+
"proxy-addr": "^2.0.7",
|
|
81
83
|
"tree-sitter": "0.21.1",
|
|
82
84
|
"tree-sitter-c-sharp": "0.23.1",
|
|
83
85
|
"tree-sitter-cpp": "0.23.2",
|
|
@@ -95,18 +97,22 @@
|
|
|
95
97
|
"@huggingface/transformers": "^4.1.0",
|
|
96
98
|
"onnxruntime-node": "^1.24.0"
|
|
97
99
|
},
|
|
100
|
+
"trustedDependencies": [
|
|
101
|
+
"@ladybugdb/core",
|
|
102
|
+
"gitnexus",
|
|
103
|
+
"tree-sitter"
|
|
104
|
+
],
|
|
98
105
|
"devDependencies": {
|
|
99
|
-
"@babel/generator": "^
|
|
100
|
-
"@babel/parser": "^
|
|
101
|
-
"@babel/traverse": "^
|
|
102
|
-
"@babel/types": "^
|
|
106
|
+
"@babel/generator": "^8.0.0",
|
|
107
|
+
"@babel/parser": "^8.0.0",
|
|
108
|
+
"@babel/traverse": "^8.0.0",
|
|
109
|
+
"@babel/types": "^8.0.0",
|
|
103
110
|
"@types/busboy": "^1.5.4",
|
|
104
111
|
"@types/cli-progress": "^3.11.6",
|
|
105
112
|
"@types/cors": "^2.8.17",
|
|
106
113
|
"@types/express": "^5.0.6",
|
|
107
|
-
"@types/
|
|
108
|
-
"@types/
|
|
109
|
-
"@types/uuid": "^11.0.0",
|
|
114
|
+
"@types/node": "^26.0.0",
|
|
115
|
+
"@types/proxy-addr": "^2.0.3",
|
|
110
116
|
"@vitest/coverage-v8": "^4.0.18",
|
|
111
117
|
"gitnexus-shared": "file:../gitnexus-shared",
|
|
112
118
|
"tsx": "^4.0.0",
|
|
@@ -114,11 +120,13 @@
|
|
|
114
120
|
"vitest": "^4.0.18"
|
|
115
121
|
},
|
|
116
122
|
"overrides": {
|
|
123
|
+
"adm-zip": ">=0.6.0",
|
|
124
|
+
"sharp": ">=0.35.0",
|
|
117
125
|
"@huggingface/transformers": {
|
|
118
126
|
"onnxruntime-node": "$onnxruntime-node"
|
|
119
127
|
}
|
|
120
128
|
},
|
|
121
129
|
"engines": {
|
|
122
|
-
"node": "
|
|
130
|
+
"node": "^22.18.0 || >=24.11.0"
|
|
123
131
|
}
|
|
124
132
|
}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Weight-aware partitioning for the cross-platform test matrix.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS EXISTS. `run-cross-platform.ts` used to hand vitest the whole file
|
|
5
|
+
* list plus `--shard=i/n`, and vitest partitions by file COUNT. Runtime on this
|
|
6
|
+
* suite is wildly uneven — measured on the Windows runner, `cli-e2e` is 361 s
|
|
7
|
+
* and `worker-pool` 221 s, while most files are under a second — so a
|
|
8
|
+
* count-split routinely put several of the heaviest suites on one shard. That
|
|
9
|
+
* is #2449, and this file's sibling header has documented the symptom ("the
|
|
10
|
+
* heaviest spawn suites can cluster on one shard") since the watchdog was first
|
|
11
|
+
* raised from 15 to 20 minutes.
|
|
12
|
+
*
|
|
13
|
+
* It went from a latent hazard to a red matrix when three CHEAP files (the
|
|
14
|
+
* `dist/` module-load closure guards: 448 ms, 53 ms, sub-second) were added to
|
|
15
|
+
* `SPAWN_CLI`. They cost nothing to run, but a count-split re-partitions on
|
|
16
|
+
* every insertion, and the reshuffle happened to land `cli-e2e` + `cli-limit-e2e`
|
|
17
|
+
* + `analyze-heap-oom-e2e` together on shard 1/3 — 32 files against 26 and 29 —
|
|
18
|
+
* which blew the 20-minute budget with four files still queued. Nothing about
|
|
19
|
+
* the added files caused it; they were simply the perturbation.
|
|
20
|
+
*
|
|
21
|
+
* So the split is done HERE, by weight, and only the chosen shard's files are
|
|
22
|
+
* handed to vitest. Two properties follow, and both are pinned in
|
|
23
|
+
* `test/unit/cross-platform-shard.test.ts`:
|
|
24
|
+
*
|
|
25
|
+
* - the heaviest suites are spread across shards by construction, so the
|
|
26
|
+
* busiest shard tracks the ideal rather than the luck of the sort order;
|
|
27
|
+
* - adding or removing a CHEAP file cannot move a heavy one, so registering a
|
|
28
|
+
* new platform-sensitive test is no longer a CI-stability gamble. That is the
|
|
29
|
+
* property whose absence caused this.
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Measured wall-clock on the WINDOWS runner (the slowest platform, so it is the
|
|
34
|
+
* one that decides the budget), in seconds, from the last fully-green matrix run
|
|
35
|
+
* plus the timed files of the run that failed.
|
|
36
|
+
*
|
|
37
|
+
* Only files heavy enough to matter are listed; everything else is carried by
|
|
38
|
+
* {@link PER_FILE_OVERHEAD_SEC} alone. These are load-balancing hints, NOT
|
|
39
|
+
* assertions — no
|
|
40
|
+
* test asserts a runtime, and drift only makes the split slightly less even, so
|
|
41
|
+
* a stale entry is harmless and refreshing them is optional. Deliberately not
|
|
42
|
+
* auto-generated: a committed table is reviewable and works offline, and the
|
|
43
|
+
* alternative (timing files at CI runtime to decide the split) would make the
|
|
44
|
+
* partition depend on the very machine load it is trying to protect against.
|
|
45
|
+
*/
|
|
46
|
+
export const WINDOWS_WEIGHTS_SEC: Readonly<Record<string, number>> = {
|
|
47
|
+
'test/integration/cli-e2e.test.ts': 361,
|
|
48
|
+
'test/integration/worker-pool.test.ts': 222,
|
|
49
|
+
'test/unit/incremental-vector-extension-ordering.test.ts': 87,
|
|
50
|
+
// ESTIMATE, not a measurement (#2841): this suite drives more full
|
|
51
|
+
// `runFullAnalysis` cycles than the VECTOR sibling above, so the 8 s
|
|
52
|
+
// PER_FILE_OVERHEAD floor would badly under-charge it and skew the Windows
|
|
53
|
+
// split — the failure mode that produced the job timeouts this table exists
|
|
54
|
+
// to prevent. Scaled from the sibling's measured 87 s by analyze-run count.
|
|
55
|
+
// Replace with a real figure after the first green Windows matrix run.
|
|
56
|
+
'test/unit/incremental-index-extension-dml-gate.test.ts': 180,
|
|
57
|
+
'test/integration/cli-limit-e2e.test.ts': 75,
|
|
58
|
+
'test/unit/hooks.test.ts': 26,
|
|
59
|
+
'test/integration/analyze-heap-oom-e2e.test.ts': 23,
|
|
60
|
+
'test/unit/git-utils.test.ts': 18,
|
|
61
|
+
'test/integration/hooks-e2e.test.ts': 15,
|
|
62
|
+
'test/integration/tree-sitter-languages.test.ts': 9,
|
|
63
|
+
'test/unit/repo-manager.test.ts': 9,
|
|
64
|
+
'test/unit/detect-changes-worktree.test.ts': 9,
|
|
65
|
+
'test/integration/antigravity-hook-e2e.test.ts': 7,
|
|
66
|
+
'test/unit/index-lock.test.ts': 5,
|
|
67
|
+
'test/unit/setup.test.ts': 5,
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Fixed cost every file pays regardless of what it asserts: a pool worker start,
|
|
72
|
+
* module graph evaluation, and (for most of this list) a native addon load.
|
|
73
|
+
*
|
|
74
|
+
* Added to EVERY file's weight, not just unmeasured ones, and that is the point.
|
|
75
|
+
* Calibrated against the last green Windows matrix: its busiest shard ran 736 s
|
|
76
|
+
* of wall clock over ~511 s of measured file time, so roughly 8 s per file is
|
|
77
|
+
* unattributed setup. Without this term the balancer treats a light file as
|
|
78
|
+
* nearly free and, having isolated the two monsters, piles every remaining file
|
|
79
|
+
* onto the other shards — trading a runtime imbalance for a file-count one that
|
|
80
|
+
* costs just as much. With it, the split balances runtime AND count together.
|
|
81
|
+
*/
|
|
82
|
+
const PER_FILE_OVERHEAD_SEC = 8;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Scheduling weight for `file`: its measured runtime (0 if it was fast enough
|
|
86
|
+
* that vitest printed no duration) plus the per-file floor above.
|
|
87
|
+
*/
|
|
88
|
+
export function weightOf(file: string): number {
|
|
89
|
+
return (WINDOWS_WEIGHTS_SEC[file] ?? 0) + PER_FILE_OVERHEAD_SEC;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Partition `files` into `total` shards and return the 1-based `index` one.
|
|
94
|
+
*
|
|
95
|
+
* Longest-processing-time first: sort by weight descending, then repeatedly give
|
|
96
|
+
* the next file to the lightest shard so far. LPT is the standard greedy for
|
|
97
|
+
* multiprocessor scheduling and is guaranteed within 4/3 of optimal — far more
|
|
98
|
+
* than enough here, where the goal is only "no shard gets two monsters".
|
|
99
|
+
*
|
|
100
|
+
* Ties break on the file path so the partition is DETERMINISTIC: every shard
|
|
101
|
+
* computes the same split independently, on a different machine, with no
|
|
102
|
+
* coordination — which is what lets each runner select its own slice.
|
|
103
|
+
*
|
|
104
|
+
* Returns files in the input list's original order, not weight order, so failure
|
|
105
|
+
* output and reruns stay readable.
|
|
106
|
+
*/
|
|
107
|
+
export function shardFiles(
|
|
108
|
+
files: readonly string[],
|
|
109
|
+
index: number,
|
|
110
|
+
total: number,
|
|
111
|
+
): readonly string[] {
|
|
112
|
+
if (!Number.isInteger(total) || total < 1) {
|
|
113
|
+
throw new Error(`shard total must be a positive integer, got ${total}`);
|
|
114
|
+
}
|
|
115
|
+
if (!Number.isInteger(index) || index < 1 || index > total) {
|
|
116
|
+
throw new Error(`shard index must be in 1..${total}, got ${index}`);
|
|
117
|
+
}
|
|
118
|
+
if (total === 1) return [...files];
|
|
119
|
+
|
|
120
|
+
const byWeightDesc = [...files].sort((a, b) => {
|
|
121
|
+
const diff = weightOf(b) - weightOf(a);
|
|
122
|
+
return diff !== 0 ? diff : a.localeCompare(b);
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
const loads = Array.from({ length: total }, () => 0);
|
|
126
|
+
const assigned = Array.from({ length: total }, () => new Set<string>());
|
|
127
|
+
for (const file of byWeightDesc) {
|
|
128
|
+
let lightest = 0;
|
|
129
|
+
for (let i = 1; i < total; i++) {
|
|
130
|
+
if (loads[i]! < loads[lightest]!) lightest = i;
|
|
131
|
+
}
|
|
132
|
+
assigned[lightest]!.add(file);
|
|
133
|
+
loads[lightest]! += weightOf(file);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
const mine = assigned[index - 1]!;
|
|
137
|
+
return files.filter((f) => mine.has(f));
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/** Total weight of a file set — the shard cost this balancer is minimising. */
|
|
141
|
+
export function shardWeight(files: readonly string[]): number {
|
|
142
|
+
return files.reduce((sum, f) => sum + weightOf(f), 0);
|
|
143
|
+
}
|
|
@@ -36,12 +36,46 @@ const PLATFORM_LOGIC = [
|
|
|
36
36
|
// must exercise the Windows backslash branch, so run it on the OS matrix (#2394).
|
|
37
37
|
'test/unit/cli-entry.test.ts',
|
|
38
38
|
'test/unit/platform-capabilities.test.ts',
|
|
39
|
+
// The gitnexus-plan safe writer resolves every name through a per-platform
|
|
40
|
+
// backend: Linux anchors through /proc/self/fd, macOS resolves lexically and
|
|
41
|
+
// verifies each step against descriptors it holds open. Publication is link(2)
|
|
42
|
+
// on both. #2905 shipped the Darwin backend after the suite had silently
|
|
43
|
+
// skipped on every non-Linux runner, so this file must run on the OS matrix or
|
|
44
|
+
// the macOS half is unverified by construction — and the flag, trailing-
|
|
45
|
+
// separator and hard-link fixtures assert kernel behaviour that only a real
|
|
46
|
+
// Darwin kernel can confirm. Windows is refused by the capability gate; the
|
|
47
|
+
// suite asserts that refusal rather than skipping it.
|
|
48
|
+
'test/unit/evidence-provenance-helper.test.ts',
|
|
49
|
+
// Windows drive-letter case variance in the analyzer runner-identity path
|
|
50
|
+
// fields (#2668): normalizeAnalyzerRootPath is a POSIX no-op, so the
|
|
51
|
+
// "identity path fields are normalizer-stable" fixpoint guard only bites on
|
|
52
|
+
// the windows-latest matrix — it must run there, not just in the Ubuntu
|
|
53
|
+
// full-suite where it's trivially green. Deliberately the split-out
|
|
54
|
+
// normalization file, NOT analyzer-identity.test.ts: the latter's fixture
|
|
55
|
+
// tests compare identity fields against raw temp-dir paths and fail on macOS,
|
|
56
|
+
// where /var/... realpaths to /private/var/....
|
|
57
|
+
'test/unit/analyzer-identity-path-normalization.test.ts',
|
|
58
|
+
// `isInside` containment guard vs Windows cross-drive paths: path.relative
|
|
59
|
+
// returns the absolute target across drives, so the guard needs isAbsolute.
|
|
60
|
+
// Fixture-free and pathApi-injectable, so it is portable to every runner.
|
|
61
|
+
'test/unit/analyzer-identity-is-inside.test.ts',
|
|
62
|
+
// `\\?\` extended-length prefix normalization (#2667): fixture-free and
|
|
63
|
+
// platform-injectable (every assertion passes an explicit 'win32'), so like the
|
|
64
|
+
// is-inside guard above it is portable to every runner and its assertions run
|
|
65
|
+
// identically here and on Ubuntu. Registered alongside its two siblings so the
|
|
66
|
+
// Windows path-handling guards stay discoverable as one group. Same
|
|
67
|
+
// mixed-prefix relativize hazard as is-inside, reached through a
|
|
68
|
+
// caller-supplied path.
|
|
69
|
+
'test/unit/windows-long-path-prefix.test.ts',
|
|
39
70
|
// getconf page-size probe: explicit process.platform gate (win32 short-circuit)
|
|
40
71
|
// plus a live-probe test whose only real non-4K coverage is macos-arm64's
|
|
41
72
|
// 16 KiB pages — the exact hardware class #1231 targets (#2424 review).
|
|
42
73
|
'test/unit/lbug-config-pagesize.test.ts',
|
|
43
74
|
'test/unit/worker-pool-windows-quarantine.test.ts',
|
|
44
75
|
'test/unit/lbug-pool-fts-load.test.ts',
|
|
76
|
+
// Global registry writes use the platform-specific index-lock backend
|
|
77
|
+
// (Windows named pipe, Linux socket, or macOS file lock). This includes the
|
|
78
|
+
// overlapping-registration regression from #2716 on every OS matrix.
|
|
45
79
|
'test/unit/repo-manager.test.ts',
|
|
46
80
|
'test/unit/repo-manager-finalize-invariant.test.ts',
|
|
47
81
|
'test/unit/git-utils.test.ts',
|
|
@@ -79,6 +113,13 @@ const PLATFORM_LOGIC = [
|
|
|
79
113
|
// POSIX and Windows — the fail-closed path-claim semantics must hold on the
|
|
80
114
|
// real windows-latest path implementation (#2419/#2420).
|
|
81
115
|
'test/unit/server-api-repo-resolution.test.ts',
|
|
116
|
+
// The index write-lock (#2658) selects its backend by process.platform — the
|
|
117
|
+
// OS socket lock (Windows named pipe / Linux abstract socket) vs the file
|
|
118
|
+
// fallback — and its socket-backend describe block is gated to linux/win32.
|
|
119
|
+
// The Ubuntu suite only proves the Linux abstract-socket path, so run it here
|
|
120
|
+
// to exercise the Windows named-pipe backend and the macOS file fallback on
|
|
121
|
+
// their real platforms (#2658 review H3).
|
|
122
|
+
'test/unit/index-lock.test.ts',
|
|
82
123
|
];
|
|
83
124
|
|
|
84
125
|
// Native LadybugDB integration tests — exercise the @ladybugdb/core
|
|
@@ -117,6 +158,24 @@ const LBUG_NATIVE = [
|
|
|
117
158
|
// to a live native DB, rm-then-rename over an existing parked copy) before
|
|
118
159
|
// any open — rename semantics are exactly what differs on Windows.
|
|
119
160
|
'test/unit/incremental-dirty-recovery.test.ts',
|
|
161
|
+
// #2623: the incremental writeback must load VECTOR before the CodeEmbedding
|
|
162
|
+
// join-delete, and the blocked path must escalate instead of crashing. The
|
|
163
|
+
// win32 VECTOR gate was removed in the same PR, so this ordering must be
|
|
164
|
+
// proven on the windows-latest native addon, not just Ubuntu. Budget: ~25s
|
|
165
|
+
// on Linux → expect ~2min on the slowest Windows shard.
|
|
166
|
+
'test/unit/incremental-vector-extension-ordering.test.ts',
|
|
167
|
+
// #2841: the FTS half of that same gate, plus the both-extensions-blocked
|
|
168
|
+
// case — and it needs this matrix for two reasons the VECTOR sibling above
|
|
169
|
+
// does not cover. The reported failure environment is a machine where the
|
|
170
|
+
// extension stopped LOADING, which is the #2374 class and Windows-reported
|
|
171
|
+
// (the same reason fts-extension-e2e.test.ts is registered below), so the
|
|
172
|
+
// FTS-unavailable branch has to run on a real Windows/macOS runner rather
|
|
173
|
+
// than only on Ubuntu where FTS always loads. And its both-blocked case is
|
|
174
|
+
// gated on GITNEXUS_REQUIRE_VECTOR=1, which ci-tests.yml sets ONLY on this
|
|
175
|
+
// job — everywhere else an unavailable VECTOR extension skips instead of
|
|
176
|
+
// failing. Budget: four real analyze runs, so expect it to sit alongside the
|
|
177
|
+
// VECTOR sibling's ~87s Windows measurement.
|
|
178
|
+
'test/unit/incremental-index-extension-dml-gate.test.ts',
|
|
120
179
|
];
|
|
121
180
|
|
|
122
181
|
// Process spawning and CLI tests — exercise child_process with real
|
|
@@ -141,6 +200,41 @@ const SPAWN_CLI = [
|
|
|
141
200
|
'test/integration/antigravity-hook-e2e.test.ts',
|
|
142
201
|
'test/unit/local-cli-subprocess.test.ts',
|
|
143
202
|
'test/unit/runner-exec-tail.test.ts',
|
|
203
|
+
// Real cross-process single-writer lock coordination (#2658): child processes
|
|
204
|
+
// contend for the lock and race to reclaim a dead holder. Process spawning,
|
|
205
|
+
// kernel socket auto-release (Win named pipe / Linux abstract socket), and the
|
|
206
|
+
// FILE-backend rename-steal reclaim (macOS/BSD default) all vary across OSes —
|
|
207
|
+
// the exact behaviors the Windows/macOS matrix must prove. macOS timing first
|
|
208
|
+
// exposed a file-backend double-admit race here (#2658 review); the reclaim is
|
|
209
|
+
// now judgment-verified so a live holder is never displaced.
|
|
210
|
+
'test/integration/analyze-index-lock-concurrency.test.ts',
|
|
211
|
+
// The three `dist/` module-load closure guards, all built on the shared
|
|
212
|
+
// child-process probe in `test/helpers/module-load-probe.ts`. That probe IS
|
|
213
|
+
// the platform-varying part: it spawns `process.execPath` in array form,
|
|
214
|
+
// clears NODE_OPTIONS, addresses its target via `pathToFileURL` (Windows needs
|
|
215
|
+
// the `file:///C:/...` form — a bare absolute path is not a valid ESM
|
|
216
|
+
// specifier there), and renders every result through a `path.sep`→POSIX
|
|
217
|
+
// normalisation the anchors and offender regexes depend on. None of that is
|
|
218
|
+
// proven anywhere else.
|
|
219
|
+
//
|
|
220
|
+
// Cheap: measured on the Windows runner at 448 ms, 53 ms and sub-second. An
|
|
221
|
+
// earlier attempt to register them still turned the matrix red — not from
|
|
222
|
+
// their own cost, but because vitest sharded by file COUNT, so inserting any
|
|
223
|
+
// file re-partitioned the list and happened to cluster `cli-e2e` (361 s) with
|
|
224
|
+
// `cli-limit-e2e` (75 s) on one shard. The split is weight-aware now
|
|
225
|
+
// (`scripts/cross-platform-shard.ts`), so a cheap file can no longer move a
|
|
226
|
+
// heavy one.
|
|
227
|
+
//
|
|
228
|
+
// #2802: MCP startup must not eagerly load the analyze-only language
|
|
229
|
+
// provider registry or the group contract extractors.
|
|
230
|
+
'test/integration/mcp/startup-language-closure.test.ts',
|
|
231
|
+
// PR #1383: `cli/mcp.js`'s static-import closure must stay leaf-only so no
|
|
232
|
+
// native binding initialises before the stdout sentinel installs.
|
|
233
|
+
'test/integration/mcp/import-closure.test.ts',
|
|
234
|
+
// #2091/#2093/#2116: the scope-resolution registry must not load the optional
|
|
235
|
+
// tree-sitter grammars at import time. The offender regexes match grammar
|
|
236
|
+
// paths with either separator, which only the Windows runner proves.
|
|
237
|
+
'test/integration/optional-grammars/registry-import-closure.test.ts',
|
|
144
238
|
];
|
|
145
239
|
|
|
146
240
|
// Worker threads tests — exercise real worker_threads which have
|
package/scripts/ensure-fts.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Install the LadybugDB FTS
|
|
3
|
-
* every test in a sharded CI run finds
|
|
2
|
+
* Install the LadybugDB FTS and VECTOR extensions into the shared home (~/.lbdb)
|
|
3
|
+
* up front, so every test in a sharded CI run finds them regardless of shard.
|
|
4
4
|
*
|
|
5
5
|
* FTS-dependent tests split two ways: the LOAD-path gate (skipUnlessFtsAvailable)
|
|
6
6
|
* self-installs on miss, but the FILE-path gate (requireFtsResourceOrSkip, e.g.
|
|
@@ -17,13 +17,24 @@
|
|
|
17
17
|
import { mkdtempSync, rmSync } from 'node:fs';
|
|
18
18
|
import { tmpdir } from 'node:os';
|
|
19
19
|
import { join } from 'node:path';
|
|
20
|
-
import {
|
|
20
|
+
import {
|
|
21
|
+
initLbug,
|
|
22
|
+
loadFTSExtension,
|
|
23
|
+
loadVectorExtension,
|
|
24
|
+
closeLbug,
|
|
25
|
+
} from '../src/core/lbug/lbug-adapter.js';
|
|
21
26
|
|
|
22
27
|
const dir = mkdtempSync(join(tmpdir(), 'gn-ensure-fts-'));
|
|
23
28
|
try {
|
|
24
29
|
await initLbug(join(dir, 'ensure-fts.lbug'));
|
|
25
30
|
const ok = await loadFTSExtension(undefined, { policy: 'auto' });
|
|
26
31
|
console.log(ok ? 'FTS extension ready.' : 'FTS extension unavailable (continuing).');
|
|
32
|
+
// VECTOR rides the same pre-install (#2623): the win32 gate is gone, so the
|
|
33
|
+
// vector suites genuinely run on Windows/macOS — installing once here means
|
|
34
|
+
// every sharded test process LOADs from ~/.lbdb instead of racing its own
|
|
35
|
+
// out-of-process INSTALL (bounded 15s each when the server is unreachable).
|
|
36
|
+
const vec = await loadVectorExtension(undefined, { policy: 'auto' });
|
|
37
|
+
console.log(vec ? 'VECTOR extension ready.' : 'VECTOR extension unavailable (continuing).');
|
|
27
38
|
} catch (err) {
|
|
28
39
|
console.warn(`ensure-fts: skipped (${err instanceof Error ? err.message : String(err)})`);
|
|
29
40
|
} finally {
|