@backbencher/brain 0.0.0-stage → 0.1.1
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/CHANGELOG.md +298 -0
- package/EMBEDDINGS.md +355 -0
- package/LICENSE +21 -0
- package/README.md +415 -2
- package/bin/bb +13 -0
- package/dist/analysis-exclusions-7ZJDXOVZ.js +35 -0
- package/dist/brain-index-health-Q5APTJQL.js +17 -0
- package/dist/brain-relationship-enrichment-MYR2AM4F.js +558 -0
- package/dist/brain.sql-EIM4WS4D.js +29 -0
- package/dist/chunk-22V37YTK.js +1758 -0
- package/dist/chunk-2BSKD7O3.js +40 -0
- package/dist/chunk-2DE27DVC.js +1314 -0
- package/dist/chunk-2RRBMNBQ.js +322 -0
- package/dist/chunk-2WXYNLBA.js +29 -0
- package/dist/chunk-3CTFIJJB.js +17 -0
- package/dist/chunk-3ZTOHHSW.js +2104 -0
- package/dist/chunk-4H22TLOT.js +543 -0
- package/dist/chunk-5BVAH26D.js +340 -0
- package/dist/chunk-62DHLYW6.js +3427 -0
- package/dist/chunk-7AN7U5IZ.js +371 -0
- package/dist/chunk-7DRPNVIN.js +782 -0
- package/dist/chunk-7MBYT777.js +174 -0
- package/dist/chunk-AHDWGM7Q.js +236 -0
- package/dist/chunk-B5GEAAYF.js +818 -0
- package/dist/chunk-BEIZZ73B.js +1479 -0
- package/dist/chunk-BQ3OVQ3P.js +125 -0
- package/dist/chunk-D2Q4Y47A.js +53 -0
- package/dist/chunk-DIYAGQJL.js +34 -0
- package/dist/chunk-DWKXZ6IF.js +336 -0
- package/dist/chunk-DYM4FQEE.js +90 -0
- package/dist/chunk-ENW4BTBA.js +930 -0
- package/dist/chunk-EWMWK7WN.js +75 -0
- package/dist/chunk-EY5ZZUUA.js +626 -0
- package/dist/chunk-GBI7V7KY.js +69 -0
- package/dist/chunk-GEFFO6O2.js +152 -0
- package/dist/chunk-HJEWO5EV.js +247 -0
- package/dist/chunk-HQSPJDHI.js +613 -0
- package/dist/chunk-KAET47ZL.js +125 -0
- package/dist/chunk-KCDECRJY.js +440 -0
- package/dist/chunk-L5TDYKYK.js +76 -0
- package/dist/chunk-MLKGABMK.js +9 -0
- package/dist/chunk-NO3U3FJQ.js +201 -0
- package/dist/chunk-OWISBAOF.js +61 -0
- package/dist/chunk-QKTRECYS.js +1119 -0
- package/dist/chunk-QLK6ED4Q.js +235 -0
- package/dist/chunk-R2GW4F6R.js +19 -0
- package/dist/chunk-RCMTFSEF.js +87 -0
- package/dist/chunk-RM3PY6TG.js +376 -0
- package/dist/chunk-ROMM6KMC.js +433 -0
- package/dist/chunk-SGGCSHAX.js +12050 -0
- package/dist/chunk-SK6YVHFZ.js +211 -0
- package/dist/chunk-SM7RFQRO.js +214 -0
- package/dist/chunk-UGR4QIGS.js +67 -0
- package/dist/chunk-UQNQZXHY.js +711 -0
- package/dist/chunk-UUNHHX4M.js +13 -0
- package/dist/chunk-VL52PL2T.js +71 -0
- package/dist/chunk-WIG36E67.js +196 -0
- package/dist/chunk-XHK3WWGB.js +7436 -0
- package/dist/chunk-XTQM2IP3.js +2863 -0
- package/dist/chunk-ZE2LG76D.js +1296 -0
- package/dist/chunk-ZETTGPAW.js +6950 -0
- package/dist/cli/index.js +37 -0
- package/dist/config-HZAAYDP3.js +10 -0
- package/dist/content-search-7XIP555Q.js +593 -0
- package/dist/database-76RP44JG.js +9 -0
- package/dist/doctor-ANGETYMN.js +395 -0
- package/dist/edit-engine-CG72LDZD.js +51 -0
- package/dist/engine-BKEOGN7N.js +11 -0
- package/dist/engine-VIW6NSKO.js +18 -0
- package/dist/fingerprint-OBLIMZLP.js +33 -0
- package/dist/framework-intelligence-3LORTPOX.js +860 -0
- package/dist/freshness-3K6VU5OT.js +174 -0
- package/dist/graph-engine-HBSQNPTB.js +21 -0
- package/dist/graph_request-Q6NKB6N2.js +350 -0
- package/dist/impact_request-LYP672WE.js +68 -0
- package/dist/index-space-IUUN5WYV.js +15 -0
- package/dist/index-status-7OVGYSGW.js +34 -0
- package/dist/index.js +159 -0
- package/dist/instance-FO6QZRLH.js +19 -0
- package/dist/language-detection-DFCAU5DZ.js +11 -0
- package/dist/lsp/server.js +4301 -0
- package/dist/mcp/server.js +132 -0
- package/dist/onboard-DIQZV2NW.js +161 -0
- package/dist/override-companion-pass-XR7MHTP7.js +117 -0
- package/dist/parallel-indexer-FK2XKZXY.js +88 -0
- package/dist/pool-worker.js +1153 -0
- package/dist/project-health-6XPENVAA.js +94 -0
- package/dist/project-index-5SDPHITE.js +57 -0
- package/dist/project-registry-ZJ3DVUGO.js +355 -0
- package/dist/real-bash-analyzer-EJAU5LW5.js +2201 -0
- package/dist/real-c-analyzer-HBD3FNNH.js +5942 -0
- package/dist/real-clean-analyzer-4EEZLPV5.js +3470 -0
- package/dist/real-clojure-analyzer-Q55EBOO2.js +2818 -0
- package/dist/real-cpp-analyzer-IVVOD25R.js +4101 -0
- package/dist/real-csharp-analyzer-ZBNLNJZJ.js +3298 -0
- package/dist/real-css-analyzer-6XRQLUN7.js +15 -0
- package/dist/real-dart-analyzer-OLR72EFW.js +3944 -0
- package/dist/real-elixir-analyzer-MQWGAH2I.js +2192 -0
- package/dist/real-erlang-analyzer-7BVPQEHO.js +1731 -0
- package/dist/real-fsharp-analyzer-C2UPFNOA.js +2390 -0
- package/dist/real-go-analyzer-UKGI43YS.js +4126 -0
- package/dist/real-graphql-analyzer-VE2EEFII.js +1442 -0
- package/dist/real-groovy-analyzer-W26VACFW.js +2285 -0
- package/dist/real-haskell-analyzer-5CVVAJRX.js +2533 -0
- package/dist/real-hcl-analyzer-5ZT4U43N.js +725 -0
- package/dist/real-html-analyzer-JWNX3C6I.js +1759 -0
- package/dist/real-java-analyzer-GU42VBGQ.js +4677 -0
- package/dist/real-javascript-analyzer-QA4QOJ6W.js +14 -0
- package/dist/real-json-analyzer-MPA6PRXL.js +1640 -0
- package/dist/real-julia-analyzer-22CWYQMN.js +2085 -0
- package/dist/real-kotlin-analyzer-QDZJLXXU.js +3956 -0
- package/dist/real-lua-analyzer-G7NHLYKS.js +1957 -0
- package/dist/real-makefile-analyzer-OCY3GT5N.js +920 -0
- package/dist/real-markdown-analyzer-TEJK2JXJ.js +1215 -0
- package/dist/real-matlab-analyzer-Q5SWLN7Z.js +480 -0
- package/dist/real-nim-analyzer-YLXSK563.js +3603 -0
- package/dist/real-objective-c-analyzer-D23ACC2R.js +1518 -0
- package/dist/real-perl-analyzer-WWTRHYDT.js +1865 -0
- package/dist/real-php-analyzer-JNKJHTCL.js +9368 -0
- package/dist/real-powershell-analyzer-XRSNQERV.js +2915 -0
- package/dist/real-protobuf-analyzer-3OKUCZ7T.js +867 -0
- package/dist/real-python-analyzer-VXAFWI72.js +4880 -0
- package/dist/real-r-analyzer-ZGAIDVI4.js +2596 -0
- package/dist/real-ruby-analyzer-X2KTLVBH.js +2429 -0
- package/dist/real-rust-analyzer-OFFHPL2A.js +3359 -0
- package/dist/real-scala-analyzer-TSTW27J6.js +3293 -0
- package/dist/real-scss-analyzer-AVWYPSOQ.js +1515 -0
- package/dist/real-solidity-analyzer-UCI2KWUB.js +2608 -0
- package/dist/real-sql-analyzer-F77ZMQXR.js +3840 -0
- package/dist/real-svelte-analyzer-SF7NRUO5.js +2532 -0
- package/dist/real-swift-analyzer-MN5QT3QN.js +2311 -0
- package/dist/real-toml-analyzer-66L7BDCQ.js +929 -0
- package/dist/real-typescript-analyzer-6KEMVDWQ.js +14 -0
- package/dist/real-vb-analyzer-VICVPOP7.js +3145 -0
- package/dist/real-vba-analyzer-HXLTTHKM.js +466 -0
- package/dist/real-vue-analyzer-QXR56CFV.js +2680 -0
- package/dist/real-xml-analyzer-YL465ZJW.js +2405 -0
- package/dist/real-yaml-analyzer-SUBCBNSI.js +3528 -0
- package/dist/real-zig-analyzer-HIQLZMGY.js +2430 -0
- package/dist/regex-search-NJKHMZNO.js +239 -0
- package/dist/rules-ACHPB7QU.js +152 -0
- package/dist/scoped-path-MJYWJZQX.js +11 -0
- package/dist/setup-show-NT5ZHYNE.js +15 -0
- package/dist/setup-wizard-G5YYR5T6.js +24 -0
- package/dist/symbol-search-GZJIM2J2.js +16 -0
- package/dist/taint-KXUHHPIE.js +202 -0
- package/dist/taint-analyzer-N7YLZU3N.js +163 -0
- package/dist/tool-handlers-OJDC35DI.js +72 -0
- package/dist/tool-registry-BPEJNSZG.js +17 -0
- package/dist/tool-validation-Q57YMMBX.js +32 -0
- package/dist/type-inference-QMT2RMLV.js +13 -0
- package/dist/vector-binary-LMY4QGAN.js +19 -0
- package/dist/version-ABP2TUL2.js +9 -0
- package/dist/wasm-NMWO3WXY.js +16 -0
- package/docs/EMBEDDINGS.md +132 -0
- package/docs/README.md +178 -0
- package/docs/data/m10-baseline.json +602 -0
- package/docs/data/m10-benchmark-baseline.json +57 -0
- package/docs/data/m10-benchmark-last-run.json +127 -0
- package/docs/data/m10-final-audit.json +215 -0
- package/docs/data/m12-final-audit.json +138 -0
- package/docs/data/m12-surface-matrix.json +50 -0
- package/docs/data/public-tools.json +1902 -0
- package/docs/indexing/DEAD-ASSETS.md +88 -0
- package/docs/indexing/INDEXER-REVIEW.md +634 -0
- package/docs/indexing/PERFORMANCE-FINDINGS.md +106 -0
- package/docs/indexing/README.md +427 -0
- package/docs/indexing/discovery-matrix.md +41 -0
- package/docs/indexing/embeddings.md +325 -0
- package/docs/indexing/environment-variables.md +77 -0
- package/docs/indexing/performance.md +323 -0
- package/docs/indexing/resume.md +345 -0
- package/docs/indexing/troubleshooting.md +391 -0
- package/docs/man/bb.1 +190 -0
- package/docs/tools/bb_analyze.md +147 -0
- package/docs/tools/bb_annotate.md +110 -0
- package/docs/tools/bb_annotations.md +106 -0
- package/docs/tools/bb_ask.md +101 -0
- package/docs/tools/bb_cross_language.md +103 -0
- package/docs/tools/bb_doc.md +169 -0
- package/docs/tools/bb_edit.md +185 -0
- package/docs/tools/bb_graph.md +169 -0
- package/docs/tools/bb_health.md +156 -0
- package/docs/tools/bb_impact.md +117 -0
- package/docs/tools/bb_index.md +108 -0
- package/docs/tools/bb_migrate.md +135 -0
- package/docs/tools/bb_patterns.md +140 -0
- package/docs/tools/bb_search.md +150 -0
- package/docs/tools/bb_security.md +100 -0
- package/docs/tools/bb_visualize.md +184 -0
- package/grammars/README.md +57 -0
- package/grammars/THIRD-PARTY-NOTICES.md +50 -0
- package/grammars/tree-sitter-c/LICENSE +21 -0
- package/grammars/tree-sitter-clojure/LICENSE.md +21 -0
- package/grammars/tree-sitter-cpp/LICENSE +21 -0
- package/grammars/tree-sitter-csharp/LICENSE +21 -0
- package/grammars/tree-sitter-css/LICENSE +21 -0
- package/grammars/tree-sitter-css/README.md +21 -0
- package/grammars/tree-sitter-dart/LICENSE +20 -0
- package/grammars/tree-sitter-dart-upstream/LICENSE +20 -0
- package/grammars/tree-sitter-dart-upstream/README.md +18 -0
- package/grammars/tree-sitter-elixir/LICENSE +176 -0
- package/grammars/tree-sitter-elixir/README.md +11 -0
- package/grammars/tree-sitter-fsharp/LICENSE +21 -0
- package/grammars/tree-sitter-fsharp/README.md +45 -0
- package/grammars/tree-sitter-graphql/LICENSE +21 -0
- package/grammars/tree-sitter-graphql/README.md +106 -0
- package/grammars/tree-sitter-groovy/LICENSE +21 -0
- package/grammars/tree-sitter-groovy/README.md +4 -0
- package/grammars/tree-sitter-haskell/LICENSE +21 -0
- package/grammars/tree-sitter-haskell/README.md +394 -0
- package/grammars/tree-sitter-hcl/CHANGELOG.md +102 -0
- package/grammars/tree-sitter-hcl/LICENSE +201 -0
- package/grammars/tree-sitter-hcl/README.md +39 -0
- package/grammars/tree-sitter-html/LICENSE +21 -0
- package/grammars/tree-sitter-html/README.md +21 -0
- package/grammars/tree-sitter-julia/LICENSE +21 -0
- package/grammars/tree-sitter-julia/README.md +24 -0
- package/grammars/tree-sitter-kotlin/LICENSE +9 -0
- package/grammars/tree-sitter-lua/LICENSE.md +21 -0
- package/grammars/tree-sitter-lua/README.md +29 -0
- package/grammars/tree-sitter-make/LICENSE +21 -0
- package/grammars/tree-sitter-matlab/LICENSE +19 -0
- package/grammars/tree-sitter-matlab/README.md +99 -0
- package/grammars/tree-sitter-nim/LICENSE +373 -0
- package/grammars/tree-sitter-nim/README.md +46 -0
- package/grammars/tree-sitter-objc/LICENSE +21 -0
- package/grammars/tree-sitter-objc/README.md +20 -0
- package/grammars/tree-sitter-perl/LICENSE +7 -0
- package/grammars/tree-sitter-perl/README.md +100 -0
- package/grammars/tree-sitter-powershell/LICENSE +21 -0
- package/grammars/tree-sitter-powershell/README.md +7 -0
- package/grammars/tree-sitter-proto/LICENSE +21 -0
- package/grammars/tree-sitter-proto/README.md +105 -0
- package/grammars/tree-sitter-r/LICENSE +9 -0
- package/grammars/tree-sitter-r/README.md +66 -0
- package/grammars/tree-sitter-ruby/LICENSE +22 -0
- package/grammars/tree-sitter-scss/LICENSE +21 -0
- package/grammars/tree-sitter-scss/README.md +17 -0
- package/grammars/tree-sitter-solidity/LICENSE +7 -0
- package/grammars/tree-sitter-sql/LICENSE +21 -0
- package/grammars/tree-sitter-typescript/LICENSE +21 -0
- package/grammars/tree-sitter-vba/LICENSE +21 -0
- package/grammars/tree-sitter-vba/README.md +738 -0
- package/grammars/tree-sitter-vbnet/LICENSE +21 -0
- package/grammars/tree-sitter-vbnet/README.md +322 -0
- package/grammars/tree-sitter-xml/LICENSE +19 -0
- package/grammars/tree-sitter-yaml/LICENSE +20 -0
- package/grammars/tree-sitter-yaml/README.md +21 -0
- package/package.json +184 -4
- package/wasm/dart.wasm +0 -0
- package/wasm/tree-sitter-bash.wasm +0 -0
- package/wasm/tree-sitter-c.wasm +0 -0
- package/wasm/tree-sitter-c_sharp.wasm +0 -0
- package/wasm/tree-sitter-clean.wasm +0 -0
- package/wasm/tree-sitter-clojure.wasm +0 -0
- package/wasm/tree-sitter-core_schema.wasm +0 -0
- package/wasm/tree-sitter-cpp.wasm +0 -0
- package/wasm/tree-sitter-css.wasm +0 -0
- package/wasm/tree-sitter-dart.wasm +0 -0
- package/wasm/tree-sitter-elisp.wasm +0 -0
- package/wasm/tree-sitter-elixir.wasm +0 -0
- package/wasm/tree-sitter-elm.wasm +0 -0
- package/wasm/tree-sitter-embedded_template.wasm +0 -0
- package/wasm/tree-sitter-erlang.wasm +0 -0
- package/wasm/tree-sitter-fsharp.wasm +0 -0
- package/wasm/tree-sitter-fsharp_signature.wasm +0 -0
- package/wasm/tree-sitter-go.wasm +0 -0
- package/wasm/tree-sitter-graphql.wasm +0 -0
- package/wasm/tree-sitter-groovy.wasm +0 -0
- package/wasm/tree-sitter-haskell.wasm +0 -0
- package/wasm/tree-sitter-hcl.wasm +0 -0
- package/wasm/tree-sitter-html.wasm +0 -0
- package/wasm/tree-sitter-java.wasm +0 -0
- package/wasm/tree-sitter-javascript.wasm +0 -0
- package/wasm/tree-sitter-json.wasm +0 -0
- package/wasm/tree-sitter-json_schema.wasm +0 -0
- package/wasm/tree-sitter-julia.wasm +0 -0
- package/wasm/tree-sitter-kotlin.wasm +0 -0
- package/wasm/tree-sitter-lua.wasm +0 -0
- package/wasm/tree-sitter-make.wasm +0 -0
- package/wasm/tree-sitter-markdown.wasm +0 -0
- package/wasm/tree-sitter-markdown_inline.wasm +0 -0
- package/wasm/tree-sitter-matlab.wasm +0 -0
- package/wasm/tree-sitter-nim.wasm +0 -0
- package/wasm/tree-sitter-objc.wasm +0 -0
- package/wasm/tree-sitter-ocaml.wasm +0 -0
- package/wasm/tree-sitter-perl.wasm +0 -0
- package/wasm/tree-sitter-php.wasm +0 -0
- package/wasm/tree-sitter-php_only.wasm +0 -0
- package/wasm/tree-sitter-powershell.wasm +0 -0
- package/wasm/tree-sitter-protobuf.wasm +0 -0
- package/wasm/tree-sitter-python.wasm +0 -0
- package/wasm/tree-sitter-ql.wasm +0 -0
- package/wasm/tree-sitter-r.wasm +0 -0
- package/wasm/tree-sitter-rescript.wasm +0 -0
- package/wasm/tree-sitter-ruby.wasm +0 -0
- package/wasm/tree-sitter-rust.wasm +0 -0
- package/wasm/tree-sitter-scala.wasm +0 -0
- package/wasm/tree-sitter-scss.wasm +0 -0
- package/wasm/tree-sitter-solidity.wasm +0 -0
- package/wasm/tree-sitter-sql.wasm +0 -0
- package/wasm/tree-sitter-svelte.wasm +0 -0
- package/wasm/tree-sitter-swift.wasm +0 -0
- package/wasm/tree-sitter-systemrdl.wasm +0 -0
- package/wasm/tree-sitter-terraform.wasm +0 -0
- package/wasm/tree-sitter-tlaplus.wasm +0 -0
- package/wasm/tree-sitter-toml.wasm +0 -0
- package/wasm/tree-sitter-tsx.wasm +0 -0
- package/wasm/tree-sitter-typescript.wasm +0 -0
- package/wasm/tree-sitter-vba.wasm +0 -0
- package/wasm/tree-sitter-vbnet.wasm +0 -0
- package/wasm/tree-sitter-vue.wasm +0 -0
- package/wasm/tree-sitter-xml.wasm +0 -0
- package/wasm/tree-sitter-yaml.wasm +0 -0
- package/wasm/tree-sitter-zig.wasm +0 -0
- package/wasm/tree-sitter.wasm +0 -0
- package/wasm/tsx.wasm +0 -0
- package/wasm/typescript.wasm +0 -0
|
@@ -0,0 +1,395 @@
|
|
|
1
|
+
import {
|
|
2
|
+
describeEmbeddingConfig,
|
|
3
|
+
embedding_diagnosis_exports
|
|
4
|
+
} from "./chunk-DWKXZ6IF.js";
|
|
5
|
+
import "./chunk-2RRBMNBQ.js";
|
|
6
|
+
import {
|
|
7
|
+
diagnosePoolStartupSync,
|
|
8
|
+
findPackageRoot
|
|
9
|
+
} from "./chunk-4H22TLOT.js";
|
|
10
|
+
import {
|
|
11
|
+
SemanticEngine,
|
|
12
|
+
isEmbeddingDisabled
|
|
13
|
+
} from "./chunk-B5GEAAYF.js";
|
|
14
|
+
import "./chunk-7AN7U5IZ.js";
|
|
15
|
+
import "./chunk-UGR4QIGS.js";
|
|
16
|
+
import "./chunk-BQ3OVQ3P.js";
|
|
17
|
+
import {
|
|
18
|
+
bbDataDir
|
|
19
|
+
} from "./chunk-2BSKD7O3.js";
|
|
20
|
+
import "./chunk-MLKGABMK.js";
|
|
21
|
+
|
|
22
|
+
// src/setup/doctor.ts
|
|
23
|
+
import { existsSync, readFileSync, statSync, chmodSync } from "fs";
|
|
24
|
+
import { createRequire } from "module";
|
|
25
|
+
import path from "path";
|
|
26
|
+
var ROOT_PKG = findPackageRoot(import.meta.dirname ?? ".") ?? path.resolve(import.meta.dirname ?? ".", "../..");
|
|
27
|
+
function poolModuleDir() {
|
|
28
|
+
const dist = path.join(ROOT_PKG, "dist");
|
|
29
|
+
return existsSync(path.join(dist, "pool-worker.js")) ? dist : path.join(ROOT_PKG, "src", "ast");
|
|
30
|
+
}
|
|
31
|
+
var poolCache = null;
|
|
32
|
+
function runPoolDoctor(moduleDir, probe) {
|
|
33
|
+
const key = `${moduleDir}|${process.env.BB_POOL_WORKER ?? ""}|${probe === false ? "noprobe" : "probe"}`;
|
|
34
|
+
if (poolCache && poolCache.key === key) return poolCache.report;
|
|
35
|
+
const report = diagnosePoolStartupSync({ moduleDir, probe });
|
|
36
|
+
poolCache = { key, report };
|
|
37
|
+
return report;
|
|
38
|
+
}
|
|
39
|
+
function resetPoolDoctorCache() {
|
|
40
|
+
poolCache = null;
|
|
41
|
+
}
|
|
42
|
+
function openProjectDbReadonly(dbPath) {
|
|
43
|
+
const require2 = createRequire(path.join(ROOT_PKG, "package.json"));
|
|
44
|
+
if (typeof globalThis.Bun !== "undefined") {
|
|
45
|
+
const { Database: Database2 } = require2("bun:sqlite");
|
|
46
|
+
return new Database2(dbPath, { readonly: true });
|
|
47
|
+
}
|
|
48
|
+
const Database = require2("better-sqlite3");
|
|
49
|
+
return new Database(dbPath, { readonly: true, fileMustExist: true });
|
|
50
|
+
}
|
|
51
|
+
function readStoredModels(projectId, dataDir) {
|
|
52
|
+
const dbPath = path.join(dataDir, "projects", projectId, "brain.db");
|
|
53
|
+
if (!existsSync(dbPath)) return { models: [], unreadable: null };
|
|
54
|
+
try {
|
|
55
|
+
const db = openProjectDbReadonly(dbPath);
|
|
56
|
+
try {
|
|
57
|
+
const rows = db.prepare(
|
|
58
|
+
`SELECT embedding_model AS model, COUNT(*) AS count FROM brain_semantic_embedding WHERE project_id = ? GROUP BY embedding_model`
|
|
59
|
+
).all(projectId);
|
|
60
|
+
return { models: rows.map((r) => ({ model: String(r.model), count: Number(r.count) })), unreadable: null };
|
|
61
|
+
} finally {
|
|
62
|
+
db.close();
|
|
63
|
+
}
|
|
64
|
+
} catch (e) {
|
|
65
|
+
const message = String(e?.message ?? e);
|
|
66
|
+
if (message.includes("no such table")) return { models: [], unreadable: null };
|
|
67
|
+
return { models: [], unreadable: message.slice(0, 200) };
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function tierIssues(t) {
|
|
71
|
+
const missing = [];
|
|
72
|
+
if (t.present && !t.complete) {
|
|
73
|
+
const reason = t.incompleteReason ?? "";
|
|
74
|
+
if (reason.includes("base URL")) missing.push("base URL");
|
|
75
|
+
if (reason.includes("model")) missing.push("model");
|
|
76
|
+
if (!t.keyFingerprint) missing.push("API key");
|
|
77
|
+
}
|
|
78
|
+
const modeWrong = t.fileMode !== void 0 && t.fileMode !== 384;
|
|
79
|
+
return { missing, modeWrong };
|
|
80
|
+
}
|
|
81
|
+
function runDoctorChecks(opts) {
|
|
82
|
+
const cwd = opts.cwd ?? process.cwd();
|
|
83
|
+
const env = opts.env ?? process.env;
|
|
84
|
+
const dataDir = opts.dataDir ?? bbDataDir();
|
|
85
|
+
const state = describeEmbeddingConfig(cwd, env, dataDir);
|
|
86
|
+
const findings = [];
|
|
87
|
+
const embeddingChain = [];
|
|
88
|
+
const localLabel = SemanticEngine.LOCAL_MODEL_LABEL;
|
|
89
|
+
if (!state.configured) {
|
|
90
|
+
const skipped = state.tiers.some((t) => t.skippedMarker);
|
|
91
|
+
findings.push({
|
|
92
|
+
id: "no-config",
|
|
93
|
+
severity: "fail",
|
|
94
|
+
message: skipped ? "No embedding configuration (the wizard was skipped earlier)." : "No embedding configuration.",
|
|
95
|
+
fix: "bb setup"
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
for (const t of state.tiers) {
|
|
99
|
+
const { missing, modeWrong } = tierIssues(t);
|
|
100
|
+
if (missing.length > 0) {
|
|
101
|
+
findings.push({
|
|
102
|
+
id: `incomplete-${t.tier}`,
|
|
103
|
+
severity: "fail",
|
|
104
|
+
message: `${t.tier} tier is incomplete: missing ${missing.join(" + ")}.`,
|
|
105
|
+
fix: "bb setup"
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
if (modeWrong) {
|
|
109
|
+
findings.push({
|
|
110
|
+
id: `mode-${t.tier}`,
|
|
111
|
+
severity: "warn",
|
|
112
|
+
message: `${t.tier} config file has mode ${t.fileMode?.toString(8)} \u2014 the key may be world-readable.`,
|
|
113
|
+
fix: "bb doctor --fix"
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
const winnerTier = state.tiers.find((t) => t.complete);
|
|
118
|
+
const winnerModel = winnerTier?.model;
|
|
119
|
+
const storedRead = opts.storedModels ? { models: opts.storedModels, unreadable: null } : opts.projectId ? readStoredModels(opts.projectId, dataDir) : { models: [], unreadable: null };
|
|
120
|
+
const storedModels = storedRead.models;
|
|
121
|
+
if (storedRead.unreadable) {
|
|
122
|
+
findings.push({
|
|
123
|
+
id: "index-unreadable",
|
|
124
|
+
severity: "warn",
|
|
125
|
+
message: `This project's index exists but doctor could not read its embedding table from this runtime (${storedRead.unreadable}). Stored vectors are UNKNOWN, not absent \u2014 the model-consistency checks below cannot run.`,
|
|
126
|
+
fix: "run the shipped binary (npx @backbencher/brain doctor) or check the database file permissions"
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
if (winnerModel && storedModels.length > 0) {
|
|
130
|
+
const matches = storedModels.filter((s) => s.model === winnerModel);
|
|
131
|
+
if (matches.length === 0) {
|
|
132
|
+
const storedDesc = storedModels.map((s) => `${s.model} (${s.count} rows)`).join(", ");
|
|
133
|
+
findings.push({
|
|
134
|
+
id: "model-mismatch",
|
|
135
|
+
severity: "fail",
|
|
136
|
+
message: `Model mismatch: config has ${winnerModel}, index has ${storedDesc}. Vectors from different models cannot be compared \u2014 the stored vectors are unusable.`,
|
|
137
|
+
fix: "bb index --force"
|
|
138
|
+
});
|
|
139
|
+
} else {
|
|
140
|
+
const foreign = storedModels.filter((s) => s.model !== winnerModel);
|
|
141
|
+
if (foreign.length > 0) {
|
|
142
|
+
const foreignDesc = foreign.map((s) => `${s.model} (${s.count} rows)`).join(", ");
|
|
143
|
+
findings.push({
|
|
144
|
+
id: "model-mixed",
|
|
145
|
+
severity: "warn",
|
|
146
|
+
message: `The index contains foreign-model vectors: ${foreignDesc}. They are never compared with ${winnerModel} queries.`,
|
|
147
|
+
fix: "bb index --force"
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
} else if (!winnerModel && storedModels.length > 0) {
|
|
152
|
+
const total = storedModels.reduce((sum, m) => sum + m.count, 0);
|
|
153
|
+
const storedDesc = storedModels.map((s) => `${s.model} (${s.count} rows)`).join(", ");
|
|
154
|
+
const mixed = storedModels.length > 1;
|
|
155
|
+
findings.push({
|
|
156
|
+
id: "stored-unconfigured",
|
|
157
|
+
severity: "info",
|
|
158
|
+
message: `The index holds ${total.toLocaleString()} vector(s) from ${storedDesc}, but no embedding provider is configured from this directory. Queries would use ${localLabel}, which is a DIFFERENT embedding space, so those vectors are not comparable to new queries.` + (mixed ? " The index also contains vectors from more than one model, so even a configured query compares only one of them." : ""),
|
|
159
|
+
fix: "bb setup (or run bb doctor from the directory whose config built this index)"
|
|
160
|
+
});
|
|
161
|
+
} else if (winnerModel && storedModels.length === 0) {
|
|
162
|
+
findings.push({
|
|
163
|
+
id: "no-index",
|
|
164
|
+
severity: "info",
|
|
165
|
+
message: `No stored vectors for this project (no index or empty). Config model: ${winnerModel}.`,
|
|
166
|
+
fix: "bb index ."
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
if (!winnerModel) {
|
|
170
|
+
findings.push({
|
|
171
|
+
id: "semantic-degraded",
|
|
172
|
+
severity: "warn",
|
|
173
|
+
message: `Semantic search will use ${localLabel} (weaker).`,
|
|
174
|
+
fix: "bb setup"
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
try {
|
|
178
|
+
const { buildEmbeddingDiagnosis } = embedding_diagnosis_exports;
|
|
179
|
+
const diagnosis = buildEmbeddingDiagnosis({ state, env: process.env });
|
|
180
|
+
for (const p of diagnosis.problems ?? []) {
|
|
181
|
+
findings.push({
|
|
182
|
+
id: p.envVar ? `embedding.${p.envVar.toLowerCase()}` : "embedding.config",
|
|
183
|
+
severity: p.severity === "error" ? "fail" : "warn",
|
|
184
|
+
message: p.message,
|
|
185
|
+
// Never echo a key value — `envVar` is a variable NAME, and the module
|
|
186
|
+
// guarantees `message` carries only presence/source, never the secret.
|
|
187
|
+
...p.envVar ? { fix: `set ${p.envVar} (bb setup walks through it)` } : {}
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
if (diagnosis.tierOrderDisagreement) {
|
|
191
|
+
findings.push({
|
|
192
|
+
id: "embedding.tier-order-disagreement",
|
|
193
|
+
severity: "warn",
|
|
194
|
+
message: `embedding configuration layers disagree on precedence: reports ${diagnosis.tierOrderDisagreement.reported} but resolves ${diagnosis.tierOrderDisagreement.actual} \u2014 ${diagnosis.tierOrderDisagreement.detail}`,
|
|
195
|
+
fix: "run `bb setup show` to see which layer wins"
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
if (diagnosis.chain?.length) {
|
|
199
|
+
for (const layer of diagnosis.chain) {
|
|
200
|
+
embeddingChain.push({
|
|
201
|
+
order: layer.order,
|
|
202
|
+
role: layer.role,
|
|
203
|
+
label: layer.label,
|
|
204
|
+
endpoint: layer.endpoint,
|
|
205
|
+
model: layer.model,
|
|
206
|
+
keyState: layer.keyState,
|
|
207
|
+
source: layer.source,
|
|
208
|
+
active: layer.active
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
if (isEmbeddingDisabled(process.env)) {
|
|
213
|
+
findings.push({
|
|
214
|
+
id: "embedding.disabled",
|
|
215
|
+
severity: "warn",
|
|
216
|
+
message: "embeddings are DISABLED (BB_EMBEDDING_DISABLED) \u2014 semantic search will not run at all",
|
|
217
|
+
fix: "unset BB_EMBEDDING_DISABLED to enable semantic search"
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
} catch (e) {
|
|
221
|
+
findings.push({
|
|
222
|
+
id: "embedding.diagnosis-unavailable",
|
|
223
|
+
severity: "warn",
|
|
224
|
+
message: `embedding diagnosis could not run: ${e?.message ?? e}`,
|
|
225
|
+
fix: "run `bb setup show` to inspect the embedding configuration"
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
const poolReport = runPoolDoctor(opts.poolModuleDir ?? poolModuleDir(), opts.poolProbe);
|
|
229
|
+
findings.push(...poolReport.findings.filter((f) => f.severity !== "info"));
|
|
230
|
+
const healthy = !findings.some((f) => f.severity === "fail");
|
|
231
|
+
return {
|
|
232
|
+
findings,
|
|
233
|
+
healthy,
|
|
234
|
+
winner: state.winner,
|
|
235
|
+
storedModels,
|
|
236
|
+
pool: summarizePool(poolReport),
|
|
237
|
+
...embeddingChain.length ? { embeddingChain } : {}
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
function summarizePool(report) {
|
|
241
|
+
const res = report.resolution;
|
|
242
|
+
const probe = report.probe;
|
|
243
|
+
const facts = [
|
|
244
|
+
`runtime: ${process.execPath} (${process.version})`,
|
|
245
|
+
res.ok ? `worker: ${res.source === "compiled-dist" ? "compiled dist/pool-worker.js" : `tsx + ${path.basename(res.workerArgs[0] ?? "?")}`}` : `worker: not resolvable (${res.reason})`
|
|
246
|
+
];
|
|
247
|
+
if (res.ok) facts.push(`root: ${res.projectRoot}`);
|
|
248
|
+
if (!res.ok) {
|
|
249
|
+
return {
|
|
250
|
+
status: report.status === "disabled" ? "disabled" : "unavailable",
|
|
251
|
+
summary: report.status === "disabled" ? "Pool workers are switched off (BB_POOL_WORKER) \u2014 indexing runs in-process, so it is slower." : `Pool workers cannot start (${res.reason}): ${res.message}`,
|
|
252
|
+
reasonCode: res.reason,
|
|
253
|
+
remediation: res.remediation,
|
|
254
|
+
facts
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
if (!probe) {
|
|
258
|
+
return {
|
|
259
|
+
status: "unchecked",
|
|
260
|
+
summary: `Pool fork target resolved (${res.source}) but was not started.`,
|
|
261
|
+
facts
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
if (!probe.ok) {
|
|
265
|
+
const unverifiable = probe.reason === "worker-selftest-unsupported";
|
|
266
|
+
return {
|
|
267
|
+
status: unverifiable ? "unchecked" : "unavailable",
|
|
268
|
+
summary: unverifiable ? `Pool workers could not be verified (${probe.reason}) \u2014 the installed worker predates the self-test.` : `Pool workers do not start (${probe.reason}): ${probe.message}`,
|
|
269
|
+
reasonCode: probe.reason,
|
|
270
|
+
remediation: probe.remediation,
|
|
271
|
+
facts
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
const r = probe.report;
|
|
275
|
+
facts.push(`self-test: ${probe.ms}ms (pid ${r.pid}, node ${r.node})`);
|
|
276
|
+
if (r.engine === "ok" && r.wasm === "ok") {
|
|
277
|
+
return {
|
|
278
|
+
status: "ok",
|
|
279
|
+
summary: `Pool workers start normally (${res.source}); engine and grammars loaded in ${probe.ms}ms.`,
|
|
280
|
+
facts
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
const broken = [];
|
|
284
|
+
if (r.engine !== "ok") broken.push("the AST engine did not load, so files are parsed by regex (fewer symbols)");
|
|
285
|
+
if (r.wasm !== "ok") broken.push("the tree-sitter grammars did not load, so there is no grammar-based parsing");
|
|
286
|
+
return {
|
|
287
|
+
status: "degraded",
|
|
288
|
+
summary: `Pool workers start but are DEGRADED: ${broken.join("; ")}.`,
|
|
289
|
+
reasonCode: r.engine !== "ok" ? "pool-engine-unavailable" : "pool-wasm-unavailable",
|
|
290
|
+
cause: r.diagnostics.join(" | ") || void 0,
|
|
291
|
+
remediation: ["npm rebuild --build-from-source && rm -rf node_modules && npm install --include=dev"],
|
|
292
|
+
facts
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
function renderDoctorReport(r) {
|
|
296
|
+
const lines = [];
|
|
297
|
+
lines.push("bb doctor \u2014 diagnostics");
|
|
298
|
+
lines.push("");
|
|
299
|
+
if (r.findings.length === 0) {
|
|
300
|
+
lines.push("\u2713 No problems found \u2014 config and index look consistent.");
|
|
301
|
+
}
|
|
302
|
+
if (r.pool) {
|
|
303
|
+
const poolIcon = {
|
|
304
|
+
ok: "\u2713",
|
|
305
|
+
degraded: "!",
|
|
306
|
+
unavailable: "\u2717",
|
|
307
|
+
disabled: "\xB7",
|
|
308
|
+
unchecked: "?"
|
|
309
|
+
};
|
|
310
|
+
lines.push(`${poolIcon[r.pool.status]} pool workers: ${r.pool.summary}`);
|
|
311
|
+
if (r.pool.reasonCode) lines.push(` reason: ${r.pool.reasonCode}`);
|
|
312
|
+
if (r.pool.cause) lines.push(` cause: ${r.pool.cause}`);
|
|
313
|
+
for (const fact of r.pool.facts ?? []) lines.push(` ${fact}`);
|
|
314
|
+
(r.pool.remediation ?? []).forEach((fix, i) => {
|
|
315
|
+
const [first, ...rest] = fix.split("\n");
|
|
316
|
+
lines.push(` fix ${i + 1}: ${first.trim()}`);
|
|
317
|
+
for (const cont of rest) if (cont.trim()) lines.push(` ${cont.trim()}`);
|
|
318
|
+
});
|
|
319
|
+
lines.push("");
|
|
320
|
+
}
|
|
321
|
+
if (r.embeddingChain?.length) {
|
|
322
|
+
lines.push("embedding layers, in the order bb resolves them:");
|
|
323
|
+
for (const layer of r.embeddingChain) {
|
|
324
|
+
const mark = layer.active ? "\u2192" : " ";
|
|
325
|
+
const key = layer.keyState === "present" ? "key present" : `key ${layer.keyState}`;
|
|
326
|
+
lines.push(` ${mark} ${layer.order}. ${layer.label} \u2014 ${layer.model} @ ${layer.endpoint} (${key}, from ${layer.source})`);
|
|
327
|
+
}
|
|
328
|
+
lines.push("");
|
|
329
|
+
}
|
|
330
|
+
const iconFor = { fail: "\u2717", warn: "!", info: "\xB7" };
|
|
331
|
+
for (const f of r.findings) {
|
|
332
|
+
lines.push(`${iconFor[f.severity]} ${f.message}`);
|
|
333
|
+
if (f.fix) lines.push(` Fix: ${f.fix}`);
|
|
334
|
+
}
|
|
335
|
+
return lines.join("\n") + "\n";
|
|
336
|
+
}
|
|
337
|
+
var MAX_FIX_ACTIONS = 8;
|
|
338
|
+
function planDoctorFixes(opts) {
|
|
339
|
+
const cwd = opts.cwd ?? process.cwd();
|
|
340
|
+
const env = opts.env ?? process.env;
|
|
341
|
+
const dataDir = opts.dataDir ?? bbDataDir();
|
|
342
|
+
const state = describeEmbeddingConfig(cwd, env, dataDir);
|
|
343
|
+
const actions = [];
|
|
344
|
+
const refusals = [];
|
|
345
|
+
for (const t of state.tiers) {
|
|
346
|
+
if (t.fileMode !== void 0 && t.fileMode !== 384 && t.file) {
|
|
347
|
+
if (actions.length >= MAX_FIX_ACTIONS) {
|
|
348
|
+
refusals.push({ id: `mode-${t.tier}`, reason: `repair cap exceeded (${MAX_FIX_ACTIONS}) \u2014 unexpected state, manual review required` });
|
|
349
|
+
continue;
|
|
350
|
+
}
|
|
351
|
+
actions.push({ id: `mode-${t.tier}`, file: t.file, fromMode: t.fileMode, toMode: 384 });
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
return { actions, refusals };
|
|
355
|
+
}
|
|
356
|
+
function renderFixPlan(plan, applied) {
|
|
357
|
+
const lines = [];
|
|
358
|
+
lines.push(applied ? "bb doctor --fix \u2014 applied" : "bb doctor --fix \u2014 dry run (nothing changed; pass --fix to apply)");
|
|
359
|
+
lines.push("");
|
|
360
|
+
if (plan.actions.length === 0 && plan.refusals.length === 0) {
|
|
361
|
+
lines.push("\u2713 No permission problems to fix.");
|
|
362
|
+
}
|
|
363
|
+
for (const a of plan.actions) {
|
|
364
|
+
lines.push(`${applied ? "\u2713" : "\xB7"} ${a.file}: mode ${a.fromMode?.toString(8)} -> ${a.toMode.toString(8)} ${applied ? "(applied)" : "(proposed)"}`);
|
|
365
|
+
}
|
|
366
|
+
for (const ref of plan.refusals) {
|
|
367
|
+
lines.push(`\u2717 REFUSED ${ref.id}: ${ref.reason}`);
|
|
368
|
+
}
|
|
369
|
+
return lines.join("\n") + "\n";
|
|
370
|
+
}
|
|
371
|
+
function applyDoctorFixes(opts) {
|
|
372
|
+
const plan = planDoctorFixes(opts);
|
|
373
|
+
const applied = opts.apply === true;
|
|
374
|
+
if (applied) {
|
|
375
|
+
for (const a of plan.actions) {
|
|
376
|
+
try {
|
|
377
|
+
const st = statSync(a.file);
|
|
378
|
+
if (!st.isFile()) throw new Error("not a regular file");
|
|
379
|
+
chmodSync(a.file, a.toMode);
|
|
380
|
+
} catch {
|
|
381
|
+
plan.refusals.push({ id: a.id, reason: "file changed between plan and apply \u2014 manual review required" });
|
|
382
|
+
plan.actions = plan.actions.filter((x) => x !== a);
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
return { plan, applied };
|
|
387
|
+
}
|
|
388
|
+
export {
|
|
389
|
+
applyDoctorFixes,
|
|
390
|
+
planDoctorFixes,
|
|
391
|
+
renderDoctorReport,
|
|
392
|
+
renderFixPlan,
|
|
393
|
+
resetPoolDoctorCache,
|
|
394
|
+
runDoctorChecks
|
|
395
|
+
};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import {
|
|
2
|
+
BATCH_ENTRY_MODES,
|
|
3
|
+
BATCH_WIDE_OPTIONS,
|
|
4
|
+
MAX_BATCH_EDITS,
|
|
5
|
+
WRITE_GUARD,
|
|
6
|
+
executeEdit,
|
|
7
|
+
expandBatchRequest,
|
|
8
|
+
fileHash,
|
|
9
|
+
findDeclarationName,
|
|
10
|
+
isBindingParentType,
|
|
11
|
+
isReferenceSite,
|
|
12
|
+
lineCount,
|
|
13
|
+
preImageMismatches,
|
|
14
|
+
resolveSafeEditPath,
|
|
15
|
+
writeGuardMessage
|
|
16
|
+
} from "./chunk-BEIZZ73B.js";
|
|
17
|
+
import "./chunk-ZETTGPAW.js";
|
|
18
|
+
import "./chunk-4H22TLOT.js";
|
|
19
|
+
import "./chunk-GEFFO6O2.js";
|
|
20
|
+
import "./chunk-NO3U3FJQ.js";
|
|
21
|
+
import "./chunk-DYM4FQEE.js";
|
|
22
|
+
import "./chunk-5BVAH26D.js";
|
|
23
|
+
import "./chunk-QLK6ED4Q.js";
|
|
24
|
+
import "./chunk-QKTRECYS.js";
|
|
25
|
+
import "./chunk-3ZTOHHSW.js";
|
|
26
|
+
import "./chunk-BQ3OVQ3P.js";
|
|
27
|
+
import "./chunk-SK6YVHFZ.js";
|
|
28
|
+
import "./chunk-2BSKD7O3.js";
|
|
29
|
+
import "./chunk-KAET47ZL.js";
|
|
30
|
+
import "./chunk-KCDECRJY.js";
|
|
31
|
+
import "./chunk-D2Q4Y47A.js";
|
|
32
|
+
import "./chunk-SM7RFQRO.js";
|
|
33
|
+
import "./chunk-L5TDYKYK.js";
|
|
34
|
+
import "./chunk-ROMM6KMC.js";
|
|
35
|
+
import "./chunk-MLKGABMK.js";
|
|
36
|
+
export {
|
|
37
|
+
BATCH_ENTRY_MODES,
|
|
38
|
+
BATCH_WIDE_OPTIONS,
|
|
39
|
+
MAX_BATCH_EDITS,
|
|
40
|
+
WRITE_GUARD,
|
|
41
|
+
executeEdit,
|
|
42
|
+
expandBatchRequest,
|
|
43
|
+
fileHash,
|
|
44
|
+
findDeclarationName,
|
|
45
|
+
isBindingParentType,
|
|
46
|
+
isReferenceSite,
|
|
47
|
+
lineCount,
|
|
48
|
+
preImageMismatches,
|
|
49
|
+
resolveSafeEditPath,
|
|
50
|
+
writeGuardMessage
|
|
51
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ASTEngine,
|
|
3
|
+
getCachedParser,
|
|
4
|
+
getParser,
|
|
5
|
+
parseFile
|
|
6
|
+
} from "./chunk-3ZTOHHSW.js";
|
|
7
|
+
import "./chunk-BQ3OVQ3P.js";
|
|
8
|
+
import "./chunk-SK6YVHFZ.js";
|
|
9
|
+
import "./chunk-2BSKD7O3.js";
|
|
10
|
+
import "./chunk-KAET47ZL.js";
|
|
11
|
+
import "./chunk-KCDECRJY.js";
|
|
12
|
+
import "./chunk-MLKGABMK.js";
|
|
13
|
+
export {
|
|
14
|
+
ASTEngine,
|
|
15
|
+
getCachedParser,
|
|
16
|
+
getParser,
|
|
17
|
+
parseFile
|
|
18
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import {
|
|
2
|
+
computeCheckoutFingerprint,
|
|
3
|
+
computeDbFingerprint,
|
|
4
|
+
gitIdentity,
|
|
5
|
+
persistProjectFingerprint,
|
|
6
|
+
readStoredFingerprint,
|
|
7
|
+
relativePathFingerprint
|
|
8
|
+
} from "./chunk-7MBYT777.js";
|
|
9
|
+
import "./chunk-ZETTGPAW.js";
|
|
10
|
+
import "./chunk-4H22TLOT.js";
|
|
11
|
+
import "./chunk-GEFFO6O2.js";
|
|
12
|
+
import "./chunk-NO3U3FJQ.js";
|
|
13
|
+
import "./chunk-DYM4FQEE.js";
|
|
14
|
+
import "./chunk-QKTRECYS.js";
|
|
15
|
+
import "./chunk-3ZTOHHSW.js";
|
|
16
|
+
import "./chunk-BQ3OVQ3P.js";
|
|
17
|
+
import "./chunk-SK6YVHFZ.js";
|
|
18
|
+
import "./chunk-2BSKD7O3.js";
|
|
19
|
+
import "./chunk-KAET47ZL.js";
|
|
20
|
+
import "./chunk-KCDECRJY.js";
|
|
21
|
+
import "./chunk-D2Q4Y47A.js";
|
|
22
|
+
import "./chunk-SM7RFQRO.js";
|
|
23
|
+
import "./chunk-L5TDYKYK.js";
|
|
24
|
+
import "./chunk-ROMM6KMC.js";
|
|
25
|
+
import "./chunk-MLKGABMK.js";
|
|
26
|
+
export {
|
|
27
|
+
computeCheckoutFingerprint,
|
|
28
|
+
computeDbFingerprint,
|
|
29
|
+
gitIdentity,
|
|
30
|
+
persistProjectFingerprint,
|
|
31
|
+
readStoredFingerprint,
|
|
32
|
+
relativePathFingerprint
|
|
33
|
+
};
|