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/cli/analyze.js
CHANGED
|
@@ -14,9 +14,12 @@ import v8 from 'v8';
|
|
|
14
14
|
import cliProgress from 'cli-progress';
|
|
15
15
|
import { isLbugReady, LbugWipeError } from '../core/lbug/lbug-adapter.js';
|
|
16
16
|
import { boundedCheckpointBeforeExit } from '../core/lbug/shutdown-helpers.js';
|
|
17
|
-
import {
|
|
17
|
+
import { findUndeclaredRelationPairError } from '../core/lbug/rel-pair-routing.js';
|
|
18
|
+
import { causeChain } from '../lib/utils.js';
|
|
19
|
+
import { getOsPageSize, isLbugCheckpointIoError, isLbugCheckpointBusyError, isLbugPageSizeFrameError, isPageSizeAwareLadybug, isWalCorruptionError, parseWalCheckpointThreshold, WAL_RECOVERY_SUGGESTION, } from '../core/lbug/lbug-config.js';
|
|
18
20
|
import { getStoragePaths, getGlobalRegistryPath, RegistryNameCollisionError, AnalysisNotFinalizedError, assertAnalysisFinalized, } from '../storage/repo-manager.js';
|
|
19
|
-
import { getGitRoot, hasGitDir, getDefaultBranch } from '../storage/git.js';
|
|
21
|
+
import { getGitRoot, hasGitDir, getDefaultBranch, selfCommitContextFiles, snapshotSelfCommitSafety, } from '../storage/git.js';
|
|
22
|
+
import { IndexLockTimeoutError } from '../storage/index-lock.js';
|
|
20
23
|
import { loadAnalyzeConfig, mergeAnalyzeOptions, resolveDefaultBranch, validateBranchName, GitNexusRcError, } from './analyze-config.js';
|
|
21
24
|
import { runFullAnalysis } from '../core/run-analyze.js';
|
|
22
25
|
import { getRuntimeFingerprint } from '../core/platform/capabilities.js';
|
|
@@ -24,7 +27,8 @@ import { getMaxFileSizeBannerMessage } from '../core/ingestion/utils/max-file-si
|
|
|
24
27
|
import { warnMissingOptionalGrammars, getOptionalGrammarExtensions } from './optional-grammars.js';
|
|
25
28
|
import { glob } from 'glob';
|
|
26
29
|
import fs from 'fs/promises';
|
|
27
|
-
import { cliError } from './cli-message.js';
|
|
30
|
+
import { cliError, cliWarn } from './cli-message.js';
|
|
31
|
+
import { heapCapMbFor, memoryAutopilotDisabled } from '../core/ingestion/utils/effective-ram.js';
|
|
28
32
|
import { EMBEDDING_DIMS_ERROR, normalizeEmbeddingDims } from './embedding-dims.js';
|
|
29
33
|
import { formatElapsed } from './format-elapsed.js';
|
|
30
34
|
import { isHfDownloadFailure } from '../core/embeddings/hf-env.js';
|
|
@@ -52,15 +56,13 @@ const writeFatalToStderr = (label, err) => {
|
|
|
52
56
|
// #2068) is only reachable via `.cause`. Without this the user sees the
|
|
53
57
|
// wrapper's main-thread stack and never the real frame. `cause.stack` already
|
|
54
58
|
// begins with the cause's message, so we print the stack alone (not message +
|
|
55
|
-
// stack) to avoid repeating it.
|
|
56
|
-
//
|
|
57
|
-
//
|
|
58
|
-
//
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
for (let depth = 0; depth < MAX_CAUSE_DEPTH && cause instanceof Error; depth++) {
|
|
59
|
+
// stack) to avoid repeating it. `causeChain` owns the traversal and the depth
|
|
60
|
+
// bound that stops a cyclic `cause` looping — this used to be one of four
|
|
61
|
+
// hand-rolled copies that had already drifted apart on both. Uses
|
|
62
|
+
// realStderrWrite so the redirected console.error's ANSI clear-line wrapping
|
|
63
|
+
// can't erase it (#1169). The head is skipped: it was just printed above.
|
|
64
|
+
for (const cause of causeChain(isErr ? err.cause : undefined)) {
|
|
62
65
|
realStderrWrite(`\n Caused by: ${cause.stack ?? cause.message}\n`);
|
|
63
|
-
cause = cause.cause;
|
|
64
66
|
}
|
|
65
67
|
};
|
|
66
68
|
let fatalHandlersInstalled = false;
|
|
@@ -85,23 +87,20 @@ const installFatalHandlers = () => {
|
|
|
85
87
|
process.exit(1);
|
|
86
88
|
});
|
|
87
89
|
};
|
|
88
|
-
/** Historical floor for the re-exec heap cap — the auto-sizer never goes below
|
|
89
|
-
* this, so small boxes / CI never regress. */
|
|
90
|
-
const DEFAULT_HEAP_MB = 16384;
|
|
91
90
|
/**
|
|
92
|
-
* RAM-aware re-exec heap cap (MB)
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
* limit or `null`; it is honored only as a real, smaller-than-physical cap, because
|
|
91
|
+
* RAM-aware re-exec heap cap (MB) — the formula itself is single-sourced in
|
|
92
|
+
* `core/ingestion/utils/effective-ram.ts` (`heapCapMbFor`), shared with the
|
|
93
|
+
* server's analyze fork. `constrainedBytes` is the cgroup limit or `null`;
|
|
94
|
+
* it is honored only as a real, smaller-than-physical cap, because
|
|
97
95
|
* `process.constrainedMemory()` returns a huge sentinel when UNCONSTRAINED.
|
|
96
|
+
* (Observed rationale: a cap ≥ RAM made V8 collect lazily and swap-thrash —
|
|
97
|
+
* the #2649 worker-timeout cascade on 16 GB boxes.)
|
|
98
98
|
*/
|
|
99
99
|
export function computeHeapCapMb(totalBytes, constrainedBytes) {
|
|
100
100
|
const effectiveBytes = constrainedBytes !== null && constrainedBytes > 0 && constrainedBytes < totalBytes
|
|
101
101
|
? constrainedBytes
|
|
102
102
|
: totalBytes;
|
|
103
|
-
|
|
104
|
-
return Math.max(DEFAULT_HEAP_MB, Math.floor(0.75 * effectiveMb));
|
|
103
|
+
return heapCapMbFor(effectiveBytes);
|
|
105
104
|
}
|
|
106
105
|
function readConstrainedBytes() {
|
|
107
106
|
if (typeof process.constrainedMemory !== 'function')
|
|
@@ -386,21 +385,70 @@ const forceHeapOOMForTestIfEnabled = () => {
|
|
|
386
385
|
// the `DEFAULT_WAL_CHECKPOINT_THRESHOLD` constant in
|
|
387
386
|
// `gitnexus/src/core/lbug/lbug-config.ts` in sync with this value.
|
|
388
387
|
const RECOMMENDED_WAL_CHECKPOINT_THRESHOLD = 64 * 1024 * 1024;
|
|
388
|
+
/**
|
|
389
|
+
* Last `--max-old-space-size` value (MB) in a NODE_OPTIONS string, or `null`
|
|
390
|
+
* when absent/unparseable. Last occurrence wins, matching V8's own
|
|
391
|
+
* later-flag-wins semantics when NODE_OPTIONS repeats a flag.
|
|
392
|
+
*/
|
|
393
|
+
export function parseMaxOldSpaceMb(nodeOptions) {
|
|
394
|
+
// V8 accepts `-` and `_` interchangeably in flag names, and Node accepts a
|
|
395
|
+
// space-separated value in NODE_OPTIONS — honor every spelling of the pin
|
|
396
|
+
// instead of silently overriding it (#2649 review).
|
|
397
|
+
const matches = [...nodeOptions.matchAll(/--max[-_]old[-_]space[-_]size(?:=|\s+)(\d+)/g)];
|
|
398
|
+
if (matches.length === 0)
|
|
399
|
+
return null;
|
|
400
|
+
const mb = Number(matches[matches.length - 1][1]);
|
|
401
|
+
return Number.isFinite(mb) && mb > 0 ? mb : null;
|
|
402
|
+
}
|
|
389
403
|
/** Re-exec the process with the RAM-aware auto heap cap + larger semi-space/stack
|
|
390
|
-
* if we're currently below that.
|
|
404
|
+
* if we're currently below that.
|
|
405
|
+
*
|
|
406
|
+
* Heap-source precedence (#2649):
|
|
407
|
+
* - an explicit per-invocation `--max-old-space-size` (execArgv) always wins;
|
|
408
|
+
* - `GITNEXUS_MEMORY=off` declines the memory autopilot entirely;
|
|
409
|
+
* - an ambient NODE_OPTIONS heap >= the auto cap is honored as-is;
|
|
410
|
+
* - an ambient NODE_OPTIONS heap BELOW the auto cap is treated as an
|
|
411
|
+
* inherited environment default (devcontainers/CI export one for other
|
|
412
|
+
* tooling), not a deliberate per-run choice: warn and respawn with the
|
|
413
|
+
* auto cap. Pre-#2649 this returned early and large repos then OOM'd on
|
|
414
|
+
* whatever heap the environment happened to specify. */
|
|
391
415
|
async function ensureHeap() {
|
|
392
|
-
|
|
393
|
-
|
|
416
|
+
// Explicit opt-out disables auto-sizing ENTIRELY — both the ambient-pin
|
|
417
|
+
// override and the default v8-limit respawn — and is honored SILENTLY:
|
|
418
|
+
// the operator already made the call, and stderr-sensitive consumers
|
|
419
|
+
// (test harnesses, scripts, supervisors that track a single PID) rely on
|
|
420
|
+
// a quiet, single-process run.
|
|
421
|
+
if (memoryAutopilotDisabled())
|
|
394
422
|
return false;
|
|
395
|
-
const
|
|
396
|
-
if (
|
|
423
|
+
const nodeOpts = process.env.NODE_OPTIONS || '';
|
|
424
|
+
if (process.execArgv.some((a) => a.startsWith('--max-old-space-size')))
|
|
397
425
|
return false;
|
|
426
|
+
const ambientHeapMb = parseMaxOldSpaceMb(nodeOpts);
|
|
427
|
+
if (ambientHeapMb !== null) {
|
|
428
|
+
if (ambientHeapMb >= RESPAWN_HEAP_MB)
|
|
429
|
+
return false;
|
|
430
|
+
cliWarn(` NODE_OPTIONS pins the heap to ${ambientHeapMb}MB — below the ${RESPAWN_HEAP_MB}MB this machine's RAM supports.\n` +
|
|
431
|
+
` Re-running analyze with the larger auto-sized cap (set GITNEXUS_MEMORY=off to keep the NODE_OPTIONS value).\n`);
|
|
432
|
+
}
|
|
433
|
+
else {
|
|
434
|
+
const v8Heap = v8.getHeapStatistics().heap_size_limit;
|
|
435
|
+
if (v8Heap >= HEAP_MB * 1024 * 1024 * 0.9)
|
|
436
|
+
return false;
|
|
437
|
+
}
|
|
398
438
|
// --stack-size is a V8 flag not allowed in NODE_OPTIONS on Node 24+, so pass it
|
|
399
439
|
// only as a direct CLI argument. --max-semi-space-size IS allowed in NODE_OPTIONS.
|
|
400
440
|
const cliFlags = [HEAP_FLAG, SEMI_FLAG];
|
|
401
441
|
if (!nodeOpts.includes('--stack-size'))
|
|
402
442
|
cliFlags.push(STACK_FLAG);
|
|
403
|
-
|
|
443
|
+
// Preserve the parent's node flags (execArgv) — dropping them breaks any
|
|
444
|
+
// loader-launched CLI: `node --import tsx src/cli/index.ts` respawned
|
|
445
|
+
// without `--import tsx` cannot execute TypeScript and dies with a
|
|
446
|
+
// swallowed exit 1 (#2649 review). Our heap/semi/stack flags come AFTER
|
|
447
|
+
// execArgv so V8's later-flag-wins semantics resolve duplicates our way.
|
|
448
|
+
// Inspector flags are the one exception: replaying `--inspect[-brk]` makes
|
|
449
|
+
// the child fight the parent for the debug port and die with EADDRINUSE.
|
|
450
|
+
const preservedExecArgv = process.execArgv.filter((a) => !a.startsWith('--inspect'));
|
|
451
|
+
const childArgs = [...preservedExecArgv, ...cliFlags, ...process.argv.slice(1)];
|
|
404
452
|
const childEnv = {
|
|
405
453
|
...process.env,
|
|
406
454
|
NODE_OPTIONS: `${nodeOpts} ${HEAP_FLAG} ${SEMI_FLAG}`.trim(),
|
|
@@ -485,7 +533,7 @@ const restoreAnalyzeEnv = (snap) => {
|
|
|
485
533
|
* without booting the full analyze pipeline (#742 review).
|
|
486
534
|
*/
|
|
487
535
|
export const shouldGenerateCommunitySkillFiles = (options, pipelineResult) => Boolean(options?.skills && pipelineResult && !options?.indexOnly);
|
|
488
|
-
export const analyzeCommand = async (inputPath, options) => {
|
|
536
|
+
export const analyzeCommand = async (inputPath, options, runnerIdentityAtBootstrap) => {
|
|
489
537
|
if (await ensureHeap())
|
|
490
538
|
return;
|
|
491
539
|
forceHeapOOMForTestIfEnabled();
|
|
@@ -506,7 +554,7 @@ export const analyzeCommand = async (inputPath, options) => {
|
|
|
506
554
|
// pre-call values.
|
|
507
555
|
const envSnap = snapshotAnalyzeEnv();
|
|
508
556
|
try {
|
|
509
|
-
await analyzeCommandImpl(inputPath, options);
|
|
557
|
+
await analyzeCommandImpl(inputPath, options, runnerIdentityAtBootstrap);
|
|
510
558
|
}
|
|
511
559
|
finally {
|
|
512
560
|
restoreAnalyzeEnv(envSnap);
|
|
@@ -523,7 +571,9 @@ export const analyzeCommand = async (inputPath, options) => {
|
|
|
523
571
|
process.exit(typeof process.exitCode === 'number' ? process.exitCode : 1);
|
|
524
572
|
}
|
|
525
573
|
};
|
|
526
|
-
|
|
574
|
+
/** Commander entrypoint used only by the capture-before-import lazy bootstrap. */
|
|
575
|
+
export const analyzeCommandWithRunnerIdentity = async (runnerIdentityAtBootstrap, inputPath, options) => analyzeCommand(inputPath, options, runnerIdentityAtBootstrap);
|
|
576
|
+
const analyzeCommandImpl = async (inputPath, cliOptions, runnerIdentityAtBootstrap) => {
|
|
527
577
|
console.log('\n GitNexus Analyzer\n');
|
|
528
578
|
// ── Resolve the target repo root ──────────────────────────────────
|
|
529
579
|
// Resolved FIRST because `.gitnexusrc` is read from the repo root (not the
|
|
@@ -988,7 +1038,7 @@ const analyzeCommandImpl = async (inputPath, cliOptions) => {
|
|
|
988
1038
|
const skipAll = options.indexOnly;
|
|
989
1039
|
const skipAgentsMd = skipAll || options.skipAgentsMd;
|
|
990
1040
|
const skipSkills = skipAll || options.skipSkills;
|
|
991
|
-
const
|
|
1041
|
+
const runOptions = {
|
|
992
1042
|
// Pipeline re-index — OR'd with --skills because skill generation
|
|
993
1043
|
// needs a fresh pipelineResult. Has no bearing on the registry
|
|
994
1044
|
// collision guard (see allowDuplicateName below).
|
|
@@ -1035,12 +1085,25 @@ const analyzeCommandImpl = async (inputPath, cliOptions) => {
|
|
|
1035
1085
|
// in LadybugDB's ClientContext destructor after --pdg writes (#2264). The
|
|
1036
1086
|
// CHECKPOINT keeps the index durable; process exit reclaims the handles.
|
|
1037
1087
|
skipNativeCloseOnExit: true,
|
|
1038
|
-
}
|
|
1088
|
+
};
|
|
1089
|
+
const runCallbacks = {
|
|
1039
1090
|
onProgress: (_phase, percent, message) => {
|
|
1040
1091
|
updateBar(percent, message);
|
|
1041
1092
|
},
|
|
1042
1093
|
onLog: barLog,
|
|
1043
|
-
}
|
|
1094
|
+
};
|
|
1095
|
+
const bootstrapArgs = runnerIdentityAtBootstrap
|
|
1096
|
+
? [runnerIdentityAtBootstrap]
|
|
1097
|
+
: [];
|
|
1098
|
+
// #2639 review round 2: snapshot which of AGENTS.md/CLAUDE.md are safe to
|
|
1099
|
+
// auto-commit BEFORE runFullAnalysis (and the --skills regeneration
|
|
1100
|
+
// further down) writes to them, so selfCommitContextFiles can tell a
|
|
1101
|
+
// pre-existing unstaged user edit apart from this run's stats refresh
|
|
1102
|
+
// and refuse to sweep the former into the latter's commit.
|
|
1103
|
+
const selfCommitSafety = options.selfCommit === true
|
|
1104
|
+
? snapshotSelfCommitSafety(repoPath, ['AGENTS.md', 'CLAUDE.md'])
|
|
1105
|
+
: undefined;
|
|
1106
|
+
const result = await runFullAnalysis(repoPath, runOptions, runCallbacks, ...bootstrapArgs);
|
|
1044
1107
|
if (result.alreadyUpToDate) {
|
|
1045
1108
|
// Even the fast path must prove the repo is discoverable. A prior
|
|
1046
1109
|
// run can write meta.json and then fail before registerRepo(); in
|
|
@@ -1080,6 +1143,11 @@ const analyzeCommandImpl = async (inputPath, cliOptions) => {
|
|
|
1080
1143
|
if (baseRefRefreshed.length > 0) {
|
|
1081
1144
|
console.log(` Updated base_ref to "${resolvedDefaultBranch}" in ${baseRefRefreshed.join(', ')}\n`);
|
|
1082
1145
|
}
|
|
1146
|
+
// #2639: opt-in self-commit of any AGENTS.md/CLAUDE.md churn from this
|
|
1147
|
+
// fast path (e.g. a base_ref refresh above). Best-effort — never throws.
|
|
1148
|
+
if (options.selfCommit === true && selfCommitSafety) {
|
|
1149
|
+
selfCommitContextFiles(repoPath, ['AGENTS.md', 'CLAUDE.md'], selfCommitSafety);
|
|
1150
|
+
}
|
|
1083
1151
|
// Safe to return without process.exit(0) — the early-return path in
|
|
1084
1152
|
// runFullAnalysis never opens LadybugDB, so no native handles prevent exit.
|
|
1085
1153
|
return;
|
|
@@ -1153,6 +1221,13 @@ const analyzeCommandImpl = async (inputPath, cliOptions) => {
|
|
|
1153
1221
|
/* best-effort */
|
|
1154
1222
|
}
|
|
1155
1223
|
}
|
|
1224
|
+
// #2639: opt-in self-commit of any AGENTS.md/CLAUDE.md churn written by
|
|
1225
|
+
// this run (the primary generateAIContextFiles call inside
|
|
1226
|
+
// runFullAnalysis, and/or the --skills regeneration above). Best-effort
|
|
1227
|
+
// — never throws, so a missing git identity etc. can't fail `analyze`.
|
|
1228
|
+
if (options.selfCommit === true && selfCommitSafety) {
|
|
1229
|
+
selfCommitContextFiles(repoPath, ['AGENTS.md', 'CLAUDE.md'], selfCommitSafety);
|
|
1230
|
+
}
|
|
1156
1231
|
const totalTime = ((Date.now() - t0) / 1000).toFixed(1);
|
|
1157
1232
|
clearInterval(elapsedTimer);
|
|
1158
1233
|
process.removeListener('SIGINT', sigintHandler);
|
|
@@ -1165,6 +1240,25 @@ const analyzeCommandImpl = async (inputPath, cliOptions) => {
|
|
|
1165
1240
|
bar.stop();
|
|
1166
1241
|
// ── Summary ────────────────────────────────────────────────────
|
|
1167
1242
|
const s = result.stats;
|
|
1243
|
+
// A collapsed graph write is NOT a successful index. The other incomplete
|
|
1244
|
+
// reasons (`incremental-in-progress`, `embedding-checkpoint-pending`)
|
|
1245
|
+
// describe a run that did what it said and left work for next time; this
|
|
1246
|
+
// one means most of your edges are gone, so every query answers a confident
|
|
1247
|
+
// empty and the exit code is the only thing automation reads. Printing
|
|
1248
|
+
// "indexed successfully" and exiting 0 here would be the same class of
|
|
1249
|
+
// false certainty the check itself was written to remove.
|
|
1250
|
+
if (result.graphWriteCollapsed) {
|
|
1251
|
+
const { expected, persisted } = result.graphWriteCollapsed;
|
|
1252
|
+
console.log(`\n Repository indexed INCOMPLETELY (${totalTime}s)\n`);
|
|
1253
|
+
console.log(` Graph write collapsed: the pipeline produced ${expected.toLocaleString()} relationships\n` +
|
|
1254
|
+
` but only ${persisted.toLocaleString()} are readable from the index. Queries will answer\n` +
|
|
1255
|
+
` with missing edges rather than an error.\n\n` +
|
|
1256
|
+
` The index is recorded INCOMPLETE (graph-write-collapsed). Re-run\n` +
|
|
1257
|
+
` \`gitnexus analyze --force\`; if it recurs, check disk space and run \`gitnexus doctor\`.`);
|
|
1258
|
+
console.log(` ${repoPath}`);
|
|
1259
|
+
process.exitCode = 1;
|
|
1260
|
+
return;
|
|
1261
|
+
}
|
|
1168
1262
|
console.log(`\n Repository indexed successfully (${totalTime}s)\n`);
|
|
1169
1263
|
console.log(` ${(s.nodes ?? 0).toLocaleString()} nodes | ${(s.edges ?? 0).toLocaleString()} edges | ${s.communities ?? 0} clusters | ${s.processes ?? 0} flows`);
|
|
1170
1264
|
console.log(` ${repoPath}`);
|
|
@@ -1172,9 +1266,24 @@ const analyzeCommandImpl = async (inputPath, cliOptions) => {
|
|
|
1172
1266
|
// progress-bar log() that fired mid-run has already scrolled away, so the
|
|
1173
1267
|
// degraded-search state must also appear in the final summary (#1161).
|
|
1174
1268
|
if (result.ftsSkipped) {
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1269
|
+
// #2658 review L2: a build/verify failure is NOT an extension-unavailable
|
|
1270
|
+
// problem — sending the user to install the extension is the wrong remedy.
|
|
1271
|
+
if (result.ftsSkipReason === 'build-failed') {
|
|
1272
|
+
console.log(`\n Warning: full-text/BM25 search is disabled — the search index build failed this run.\n` +
|
|
1273
|
+
` The FTS extension is available; rerun \`gitnexus analyze --repair-fts\`. If it persists,\n` +
|
|
1274
|
+
` check the disk for space or corruption. Run \`gitnexus doctor\` for details.`);
|
|
1275
|
+
}
|
|
1276
|
+
else {
|
|
1277
|
+
console.log(
|
|
1278
|
+
// NOT "then rerun" (#2841 §5.C): this run stamped `lastCommit`, so a
|
|
1279
|
+
// plain rerun on an unchanged tree takes the up-to-date fast path and
|
|
1280
|
+
// returns before Phase 3 could rebuild anything — the advice would be
|
|
1281
|
+
// ineffective exactly when the user follows it. `--repair-fts` is the
|
|
1282
|
+
// verb that rebuilds the search indexes without re-parsing the repo.
|
|
1283
|
+
`\n Warning: full-text/BM25 search is disabled — the LadybugDB FTS extension was unavailable.\n` +
|
|
1284
|
+
` Install it once with network access (GITNEXUS_LBUG_EXTENSION_INSTALL=auto), then run\n` +
|
|
1285
|
+
` \`gitnexus analyze --repair-fts\` to build the search indexes. Run \`gitnexus doctor\` for details.`);
|
|
1286
|
+
}
|
|
1178
1287
|
}
|
|
1179
1288
|
try {
|
|
1180
1289
|
await fs.access(getGlobalRegistryPath());
|
|
@@ -1205,6 +1314,18 @@ const analyzeCommandImpl = async (inputPath, cliOptions) => {
|
|
|
1205
1314
|
process.exitCode = 1;
|
|
1206
1315
|
return;
|
|
1207
1316
|
}
|
|
1317
|
+
// Another analyze held the index lock past the configured wait ceiling
|
|
1318
|
+
// (#2658, GITNEXUS_INDEX_LOCK_TIMEOUT_MS). The on-disk index is being
|
|
1319
|
+
// refreshed by the holder — this is a clean, expected condition, not a
|
|
1320
|
+
// crash, so render the message without a stack trace.
|
|
1321
|
+
if (err instanceof IndexLockTimeoutError) {
|
|
1322
|
+
cliError(` Another gitnexus analyze (pid ${err.holder.pid} on ${err.holder.hostname}) is ` +
|
|
1323
|
+
`already refreshing this index and did not finish within the wait window.\n` +
|
|
1324
|
+
` The on-disk index is being updated by that run. Retry later, or raise\n` +
|
|
1325
|
+
` GITNEXUS_INDEX_LOCK_TIMEOUT_MS to wait longer.\n`, { recoveryHint: 'index-lock-timeout', holderPid: err.holder.pid });
|
|
1326
|
+
process.exitCode = 1;
|
|
1327
|
+
return;
|
|
1328
|
+
}
|
|
1208
1329
|
// Finalize invariant failure (#1169) — keep the rich actionable
|
|
1209
1330
|
// message intact and write through realStderrWrite so it can't be
|
|
1210
1331
|
// erased by a leftover bar refresh on slow terminals.
|
|
@@ -1218,6 +1339,35 @@ const analyzeCommandImpl = async (inputPath, cliOptions) => {
|
|
|
1218
1339
|
process.exitCode = 1;
|
|
1219
1340
|
return;
|
|
1220
1341
|
}
|
|
1342
|
+
// An extracted edge whose FROM→TO label pair is missing from GitNexus's own
|
|
1343
|
+
// relation DDL (#2789). `assertDeclaredPair` aborts the run rather than let
|
|
1344
|
+
// the bulk COPY fail late and silently drop the edge, so the user sees a
|
|
1345
|
+
// mid-run crash inside GitNexus internals with nothing to act on. Name the
|
|
1346
|
+
// pair, the relationship and the file that produced it, and say plainly that
|
|
1347
|
+
// a re-run cannot help — this is deterministic for the same input.
|
|
1348
|
+
// Checked by TYPE (repo norm, #2385) BEFORE the message-text heuristics
|
|
1349
|
+
// below, and through the `cause` chain because the ingestion phase runner
|
|
1350
|
+
// rewraps every phase failure as `Phase 'X' failed: …`.
|
|
1351
|
+
const undeclaredPair = findUndeclaredRelationPairError(err);
|
|
1352
|
+
if (undeclaredPair !== undefined) {
|
|
1353
|
+
// Render the error's OWN message indented — same idiom as the
|
|
1354
|
+
// `LbugWipeError` and page-size branches below. `UndeclaredRelationPairError`
|
|
1355
|
+
// builds a fully self-contained message (pair, relationship type, both node
|
|
1356
|
+
// ids, source file, issue URL, `.gitnexusignore` workaround) precisely
|
|
1357
|
+
// because `gitnexus serve` forwards only `err.message` over worker IPC.
|
|
1358
|
+
// Re-rendering those fields here would be a second copy of one string, free
|
|
1359
|
+
// to drift from the first — and the actionable half would reach CLI users
|
|
1360
|
+
// only. `undeclaredPair.message`, not the outer `msg`: the real error may be
|
|
1361
|
+
// several `cause` levels below the phase wrapper `msg` came from.
|
|
1362
|
+
cliError(` ${undeclaredPair.message.replace(/\n/g, '\n ')}\n`, {
|
|
1363
|
+
recoveryHint: 'undeclared-relation-pair',
|
|
1364
|
+
labelPair: undeclaredPair.pairKey,
|
|
1365
|
+
relationType: undeclaredPair.relationType,
|
|
1366
|
+
sourceFile: undeclaredPair.sourceFile,
|
|
1367
|
+
});
|
|
1368
|
+
process.exitCode = 1;
|
|
1369
|
+
return;
|
|
1370
|
+
}
|
|
1221
1371
|
// WAL corruption — the index file is unreadable. Give a clear recovery
|
|
1222
1372
|
// path without a confusing stack trace (the native error message alone
|
|
1223
1373
|
// is enough signal).
|
|
@@ -1229,7 +1379,15 @@ const analyzeCommandImpl = async (inputPath, cliOptions) => {
|
|
|
1229
1379
|
return;
|
|
1230
1380
|
}
|
|
1231
1381
|
if (isLbugCheckpointIoError(err)) {
|
|
1382
|
+
// #2599: when the checkpoint IO error also looks busy/locked, another
|
|
1383
|
+
// handle holds the store open — name that actionable cause alongside the
|
|
1384
|
+
// threshold hint (the original error is preserved so the hint still fires).
|
|
1385
|
+
const heldOpen = isLbugCheckpointBusyError(err)
|
|
1386
|
+
? ` Another process may hold the store open (a running \`gitnexus mcp\` server, or a\n` +
|
|
1387
|
+
` stale reader) — close other GitNexus processes on this repo, then retry.\n`
|
|
1388
|
+
: '';
|
|
1232
1389
|
cliError(` LadybugDB failed while rotating/removing WAL checkpoint files.\n` +
|
|
1390
|
+
heldOpen +
|
|
1233
1391
|
` This can happen when auto-checkpoint runs at the default threshold (~16MB).\n` +
|
|
1234
1392
|
` Retry with a larger checkpoint threshold to reduce checkpoint frequency:\n` +
|
|
1235
1393
|
` gitnexus analyze --wal-checkpoint-threshold ${RECOMMENDED_WAL_CHECKPOINT_THRESHOLD}\n` +
|
|
@@ -12,7 +12,7 @@ import { type CliMessageKey, type CliMessageVars } from './i18n/index.js';
|
|
|
12
12
|
* Consumers can import this type to narrow log-record `recoveryHint`
|
|
13
13
|
* fields without restating the literal list.
|
|
14
14
|
*/
|
|
15
|
-
export type RecoveryHint = 'wal-corruption' | 'wal-checkpoint-threshold' | 'lbug-wipe-failed' | 'lbug-page-size' | 'heap-oom-respawn' | 'native-worker-abort' | 'hf-endpoint-unreachable' | 'http-embedding-endpoint-error' | 'embedding-dims-invalid' | 'local-embedding-unsupported' | 'local-embedding-stack-missing' | 'large-repo' | 'npm-resolution' | 'module-not-found' | 'gitnexusrc-invalid' | 'default-branch-invalid';
|
|
15
|
+
export type RecoveryHint = 'wal-corruption' | 'wal-checkpoint-threshold' | 'lbug-wipe-failed' | 'lbug-page-size' | 'heap-oom-respawn' | 'native-worker-abort' | 'hf-endpoint-unreachable' | 'http-embedding-endpoint-error' | 'embedding-dims-invalid' | 'local-embedding-unsupported' | 'local-embedding-stack-missing' | 'large-repo' | 'npm-resolution' | 'module-not-found' | 'gitnexusrc-invalid' | 'default-branch-invalid' | 'index-lock-timeout' | 'undeclared-relation-pair';
|
|
16
16
|
/**
|
|
17
17
|
* Common shape for the optional structured-field bag passed to
|
|
18
18
|
* `cliError`/`cliWarn`/`cliInfo`. Typed so the `recoveryHint` slot is
|
|
@@ -1,13 +1,30 @@
|
|
|
1
1
|
import { t } from './i18n/index.js';
|
|
2
|
+
import { formatSymbolLine } from './format-symbol.js';
|
|
2
3
|
export function formatDetectChangesResult(result) {
|
|
3
4
|
const payload = (result ?? {});
|
|
4
5
|
if (payload.error)
|
|
5
6
|
return t('common.error', { message: String(payload.error) });
|
|
6
7
|
const summary = payload.summary ?? {};
|
|
8
|
+
// A swallowed query failure sets `partial` and leaves the counts at zero
|
|
9
|
+
// (#2283). Printing only "No changes detected." turns a degraded run into a
|
|
10
|
+
// clean bill of health for the pre-commit gate, so say so either way.
|
|
11
|
+
// `truncated` is its sibling flag: the backend caps the changed_symbols
|
|
12
|
+
// LISTING (never the counts), so a short list is not proof of a short diff.
|
|
13
|
+
// Both lead the output — a caveat printed after the summary is read too late.
|
|
14
|
+
const notes = [];
|
|
15
|
+
if (payload.partial)
|
|
16
|
+
notes.push(t('tool.detectChanges.partial'));
|
|
17
|
+
// The plain truncation note reassures that the counts are whole. That is only
|
|
18
|
+
// true when the run did NOT also degrade — `changed_count` sums the batches
|
|
19
|
+
// that succeeded — so the two flags together get a different sentence.
|
|
20
|
+
if (payload.truncated)
|
|
21
|
+
notes.push(t(payload.partial ? 'tool.detectChanges.truncatedDegraded' : 'tool.detectChanges.truncated'));
|
|
7
22
|
if ((summary.changed_count ?? 0) === 0) {
|
|
8
|
-
return t('tool.detectChanges.noChanges');
|
|
23
|
+
return [...notes, t('tool.detectChanges.noChanges')].join('\n');
|
|
9
24
|
}
|
|
10
25
|
const lines = [];
|
|
26
|
+
if (notes.length > 0)
|
|
27
|
+
lines.push(...notes, '');
|
|
11
28
|
lines.push(t('tool.detectChanges.changesSummary', {
|
|
12
29
|
files: summary.changed_files ?? 0,
|
|
13
30
|
symbols: summary.changed_count ?? 0,
|
|
@@ -22,7 +39,7 @@ export function formatDetectChangesResult(result) {
|
|
|
22
39
|
lines.push(t('tool.detectChanges.changedSymbols'));
|
|
23
40
|
const shown = changed.slice(0, 15);
|
|
24
41
|
for (const symbol of shown) {
|
|
25
|
-
lines.push(
|
|
42
|
+
lines.push(formatSymbolLine(symbol.type, symbol.name, symbol.filePath));
|
|
26
43
|
}
|
|
27
44
|
// Overflow is measured against the TRUE total (summary.changed_count), not
|
|
28
45
|
// the array length — the array may already be `--limit`-sliced, so using its
|
package/dist/cli/doctor.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type EmbeddingRuntimeResolution } from '../core/embeddings/runtime-install.js';
|
|
2
|
+
import { type NativeCheckResult } from '../core/lbug/native-check.js';
|
|
2
3
|
export declare function displayWidth(value: string): number;
|
|
3
4
|
export declare function padDisplayEnd(value: string, columns: number): string;
|
|
4
5
|
/**
|
|
@@ -36,4 +37,26 @@ export declare function localEmbeddingDoctorStatus(opts: {
|
|
|
36
37
|
* detect the OS page size at runtime).
|
|
37
38
|
*/
|
|
38
39
|
export declare function pageSizeDoctorLines(pageSize: number | undefined, ladybugVersion: string | undefined): string[];
|
|
40
|
+
/**
|
|
41
|
+
* The hintless buffer-pool doctor line (#2631) — the pool the next Database
|
|
42
|
+
* open in THIS process would get. Same plain-params testable-helper shape as
|
|
43
|
+
* pageSizeDoctorLines above. `pool` is getEffectiveBufferPoolSize(): `0` is
|
|
44
|
+
* the pass-through sentinel for LadybugDB's native 80%-of-RAM default, never
|
|
45
|
+
* printed as "0 MiB". `envRaw` (the raw GITNEXUS_LBUG_BUFFER_POOL_SIZE value)
|
|
46
|
+
* marks operator-supplied absolute values as "(env override)" — no scaling
|
|
47
|
+
* suffix: the hintless default is deliberately unscaled (#2557), and an env
|
|
48
|
+
* value is absolute, so a "×N" note would misdescribe both.
|
|
49
|
+
*/
|
|
50
|
+
export declare function poolSizeDoctorLine(pool: number, envRaw: string | undefined): string;
|
|
51
|
+
/**
|
|
52
|
+
* The `native` status line. Literal label like the page-size and pool-size lines
|
|
53
|
+
* above (no i18n key).
|
|
54
|
+
*
|
|
55
|
+
* A failed check is not automatically a MISSING binary, and saying so is the
|
|
56
|
+
* same misdiagnosis #2672 fixed one layer down: on a host whose glibc is too
|
|
57
|
+
* old, `lbugjs.node` is present and merely unloadable, so "missing" sent users
|
|
58
|
+
* to reinstall a file that was already there — while the detail written to
|
|
59
|
+
* stderr right below said the opposite. Render what the check actually found.
|
|
60
|
+
*/
|
|
61
|
+
export declare function nativeStatusLine(check: NativeCheckResult): string;
|
|
39
62
|
export declare const doctorCommand: () => Promise<void>;
|
package/dist/cli/doctor.js
CHANGED
|
@@ -4,8 +4,8 @@ import { isHttpMode } from '../core/embeddings/http-client.js';
|
|
|
4
4
|
import { getLocalEmbeddingRuntimeBlocker, localEmbeddingPrefixUnloadableMessage, localEmbeddingStackMissingMessage, } from '../core/embeddings/runtime-support.js';
|
|
5
5
|
import { isPrefixRuntimeLoadable, resolveEmbeddingRuntime, } from '../core/embeddings/runtime-install.js';
|
|
6
6
|
import { cudaRedirectDoctorStatus } from '../core/embeddings/onnxruntime-node-resolver.js';
|
|
7
|
-
import { checkLbugNative, probeFtsExtensionLoad } from '../core/lbug/native-check.js';
|
|
8
|
-
import { getOsPageSize, isPageSizeAwareLadybug } from '../core/lbug/lbug-config.js';
|
|
7
|
+
import { checkLbugNative, probeFtsExtensionLoad, probeVectorExtensionLoad, } from '../core/lbug/native-check.js';
|
|
8
|
+
import { getEffectiveBufferPoolSize, getOsPageSize, isPageSizeAwareLadybug, } from '../core/lbug/lbug-config.js';
|
|
9
9
|
import { diagnoseExtensionLoad } from '../core/lbug/extension-load-error.js';
|
|
10
10
|
import { getExtensionInstallPolicy } from '../core/lbug/extension-loader.js';
|
|
11
11
|
import { t } from './i18n/index.js';
|
|
@@ -115,6 +115,51 @@ export function pageSizeDoctorLines(pageSize, ladybugVersion) {
|
|
|
115
115
|
}
|
|
116
116
|
return lines;
|
|
117
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* The hintless buffer-pool doctor line (#2631) — the pool the next Database
|
|
120
|
+
* open in THIS process would get. Same plain-params testable-helper shape as
|
|
121
|
+
* pageSizeDoctorLines above. `pool` is getEffectiveBufferPoolSize(): `0` is
|
|
122
|
+
* the pass-through sentinel for LadybugDB's native 80%-of-RAM default, never
|
|
123
|
+
* printed as "0 MiB". `envRaw` (the raw GITNEXUS_LBUG_BUFFER_POOL_SIZE value)
|
|
124
|
+
* marks operator-supplied absolute values as "(env override)" — no scaling
|
|
125
|
+
* suffix: the hintless default is deliberately unscaled (#2557), and an env
|
|
126
|
+
* value is absolute, so a "×N" note would misdescribe both.
|
|
127
|
+
*/
|
|
128
|
+
export function poolSizeDoctorLine(pool, envRaw) {
|
|
129
|
+
const value = pool === 0 ? 'native 80% of RAM' : `${Math.round(pool / (1024 * 1024))} MiB`;
|
|
130
|
+
const envNote = envRaw !== undefined && envRaw.trim().length > 0 ? ' (env override)' : '';
|
|
131
|
+
return ` ${padDisplayEnd('pool size', 10)}${value}${envNote}`;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* The `native` status line. Literal label like the page-size and pool-size lines
|
|
135
|
+
* above (no i18n key).
|
|
136
|
+
*
|
|
137
|
+
* A failed check is not automatically a MISSING binary, and saying so is the
|
|
138
|
+
* same misdiagnosis #2672 fixed one layer down: on a host whose glibc is too
|
|
139
|
+
* old, `lbugjs.node` is present and merely unloadable, so "missing" sent users
|
|
140
|
+
* to reinstall a file that was already there — while the detail written to
|
|
141
|
+
* stderr right below said the opposite. Render what the check actually found.
|
|
142
|
+
*/
|
|
143
|
+
export function nativeStatusLine(check) {
|
|
144
|
+
return ` ${padDisplayEnd('native', 10)}${nativeStatusText(check)}`;
|
|
145
|
+
}
|
|
146
|
+
function nativeStatusText(check) {
|
|
147
|
+
if (check.ok)
|
|
148
|
+
return '✓ lbugjs.node loaded';
|
|
149
|
+
switch (check.kind) {
|
|
150
|
+
case 'package_missing':
|
|
151
|
+
return '✗ @ladybugdb/core not installed';
|
|
152
|
+
case 'load_failed':
|
|
153
|
+
return '✗ lbugjs.node present but failed to load';
|
|
154
|
+
case 'binary_unwritable':
|
|
155
|
+
// The prebuilt exists; only the copy into node_modules was refused. Saying
|
|
156
|
+
// "missing" here would contradict the detail printed underneath (#2672).
|
|
157
|
+
return '✗ lbugjs.node not installed (node_modules not writable)';
|
|
158
|
+
default:
|
|
159
|
+
// 'binary_missing', and any future kind: the conservative claim.
|
|
160
|
+
return '✗ lbugjs.node missing';
|
|
161
|
+
}
|
|
162
|
+
}
|
|
118
163
|
export const doctorCommand = async () => {
|
|
119
164
|
const fingerprint = getRuntimeFingerprint();
|
|
120
165
|
const capabilities = getRuntimeCapabilities();
|
|
@@ -132,12 +177,12 @@ export const doctorCommand = async () => {
|
|
|
132
177
|
for (const line of pageSizeDoctorLines(getOsPageSize(), fingerprint.ladybugdb)) {
|
|
133
178
|
console.log(line);
|
|
134
179
|
}
|
|
180
|
+
// Hintless buffer pool for the next DB open (#2631). Literal label like
|
|
181
|
+
// the page size line above (no i18n key).
|
|
182
|
+
console.log(poolSizeDoctorLine(getEffectiveBufferPoolSize(), process.env.GITNEXUS_LBUG_BUFFER_POOL_SIZE));
|
|
135
183
|
const nativeCheck = checkLbugNative();
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
console.log(` ${padDisplayEnd('native', 10)}✗ lbugjs.node missing`);
|
|
184
|
+
console.log(nativeStatusLine(nativeCheck));
|
|
185
|
+
if (!nativeCheck.ok) {
|
|
141
186
|
process.stderr.write(`\n${nativeCheck.message?.replace(/^/gm, ' ')}\n\n`);
|
|
142
187
|
}
|
|
143
188
|
console.log(` ${label('doctor.labels.onnx', 10)}${fingerprint.onnxruntime ?? 'unknown'}`);
|
|
@@ -162,8 +207,26 @@ export const doctorCommand = async () => {
|
|
|
162
207
|
console.log(` ${padDisplayEnd('', 18)}${remedy}`);
|
|
163
208
|
}
|
|
164
209
|
}
|
|
165
|
-
|
|
166
|
-
|
|
210
|
+
// Live LOAD probe for VECTOR too (#2623). The static capability is just
|
|
211
|
+
// `platform !== 'win32'`, so it printed "available" on the very machines
|
|
212
|
+
// where analyze was failing to load the extension — the same contradiction
|
|
213
|
+
// #2374 fixed for FTS above, and exactly what #2623's reporter saw while
|
|
214
|
+
// every incremental analyze died on an unloaded VECTOR extension.
|
|
215
|
+
const vectorProbe = nativeCheck.ok
|
|
216
|
+
? await probeVectorExtensionLoad()
|
|
217
|
+
: { loaded: false, reason: 'LadybugDB native module (lbugjs.node) failed to load' };
|
|
218
|
+
console.log(` ${label('doctor.labels.vectorIndex', 18)}${vectorProbe.loaded ? 'available' : 'unavailable'}`);
|
|
219
|
+
if (!vectorProbe.loaded && vectorProbe.reason) {
|
|
220
|
+
console.log(` ${padDisplayEnd('', 18)}${vectorProbe.reason}`);
|
|
221
|
+
const { kind, remedy } = diagnoseExtensionLoad(vectorProbe.reason, 'VECTOR');
|
|
222
|
+
if (kind !== 'unknown') {
|
|
223
|
+
console.log(` ${padDisplayEnd('', 18)}${remedy}`);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
// Semantic mode follows the probe, not the platform: without a loadable
|
|
227
|
+
// VECTOR extension the index can be neither built nor queried, so search is
|
|
228
|
+
// really on exact scan no matter what the platform would allow.
|
|
229
|
+
console.log(` ${label('doctor.labels.semanticMode', 18)}${vectorProbe.loaded ? capabilities.semanticMode : 'exact-scan'}`);
|
|
167
230
|
// Surface the optional-extension install policy so offline users can see
|
|
168
231
|
// whether analyze/query will reach the network (extension.ladybugdb.com).
|
|
169
232
|
// Literal label (like the 'native' line) to avoid adding i18n keys.
|
|
@@ -47,6 +47,12 @@ export function getEditorTargets(home = os.homedir()) {
|
|
|
47
47
|
id: 'opencode',
|
|
48
48
|
label: 'OpenCode',
|
|
49
49
|
file: path.join(home, '.config', 'opencode', 'opencode.json'),
|
|
50
|
+
// OpenCode merges config.json -> opencode.json -> opencode.jsonc; setup
|
|
51
|
+
// writes an existing readable config to avoid creating a shadow file.
|
|
52
|
+
legacyFiles: [
|
|
53
|
+
path.join(home, '.config', 'opencode', 'opencode.jsonc'),
|
|
54
|
+
path.join(home, '.config', 'opencode', 'config.json'),
|
|
55
|
+
],
|
|
50
56
|
// OpenCode nests servers under `mcp`, not `mcpServers`.
|
|
51
57
|
keyPath: ['mcp', 'gitnexus'],
|
|
52
58
|
},
|
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
* Usage:
|
|
17
17
|
* gitnexus eval-server # default port 4848, binds 127.0.0.1
|
|
18
18
|
* gitnexus eval-server --port 4848 # explicit port
|
|
19
|
-
* gitnexus eval-server --host 0.0.0.0
|
|
19
|
+
* GITNEXUS_AUTH_TOKEN=... gitnexus eval-server --host 0.0.0.0
|
|
20
|
+
* GITNEXUS_AUTH_TOKEN=... gitnexus eval-server --host devbox.local
|
|
20
21
|
* gitnexus eval-server --idle-timeout 300 # auto-shutdown after 300s idle
|
|
21
22
|
*
|
|
22
23
|
* READY signal format: GITNEXUS_EVAL_SERVER_READY:<host>:<port>
|
|
@@ -42,6 +43,27 @@ export interface EvalServerOptions {
|
|
|
42
43
|
* address (127.0.0.1 or ::1) at bind time rather than forcing IPv4.
|
|
43
44
|
*/
|
|
44
45
|
export declare function validateHost(raw: string): string | null;
|
|
46
|
+
type EvalServerHostLookup = (hostname: string) => Promise<string>;
|
|
47
|
+
/** Resolve a DNS bind name once so validation and listen() use the same concrete address. */
|
|
48
|
+
export declare function resolveEvalServerBindHost(raw: string, resolveHostname?: EvalServerHostLookup): Promise<string | null>;
|
|
49
|
+
/** Resolve the bearer token from the shell, then .env.local, then .env. */
|
|
50
|
+
export declare function resolveEvalServerAuthToken(env: NodeJS.ProcessEnv, cwd?: string): string | undefined;
|
|
51
|
+
/** True only for literal loopback addresses; DNS names are resolved before this check. */
|
|
52
|
+
export declare function isEvalServerLoopbackHost(host: string): boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Resolve the bearer token for a concrete bind host. An unreadable `.env` /
|
|
55
|
+
* `.env.local` only matters when the binding actually requires a token, so
|
|
56
|
+
* loopback binds degrade to a warning instead of refusing to start; any
|
|
57
|
+
* non-loopback bind keeps the fail-closed error.
|
|
58
|
+
*/
|
|
59
|
+
export declare function resolveEvalServerAuthTokenForHost(host: string, env: NodeJS.ProcessEnv, cwd?: string): {
|
|
60
|
+
token?: string;
|
|
61
|
+
warning?: string;
|
|
62
|
+
};
|
|
63
|
+
/** Refuse exposure of the eval-server query surface without authentication. */
|
|
64
|
+
export declare function assertSecureEvalServerBinding(host: string, authToken: string | undefined): void;
|
|
65
|
+
/** Validate the exact Bearer header while keeping token comparison constant-time. */
|
|
66
|
+
export declare function isEvalServerBearerAuthorized(authorization: string | string[] | undefined, authToken: string | undefined): boolean;
|
|
45
67
|
export declare function formatQueryResult(result: any): string;
|
|
46
68
|
export declare function formatContextResult(result: any): string;
|
|
47
69
|
export declare function formatImpactResult(result: any): string;
|