seer-mcp 0.1.0
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/.vscode/settings.json +3 -0
- package/LICENSE +176 -0
- package/README.md +272 -0
- package/README_dev.md +199 -0
- package/dist/bundle/ci.d.ts +47 -0
- package/dist/bundle/ci.d.ts.map +1 -0
- package/dist/bundle/ci.js +113 -0
- package/dist/bundle/ci.js.map +1 -0
- package/dist/bundle/contract.d.ts +111 -0
- package/dist/bundle/contract.d.ts.map +1 -0
- package/dist/bundle/contract.js +352 -0
- package/dist/bundle/contract.js.map +1 -0
- package/dist/bundle/export.d.ts +36 -0
- package/dist/bundle/export.d.ts.map +1 -0
- package/dist/bundle/export.js +152 -0
- package/dist/bundle/export.js.map +1 -0
- package/dist/bundle/external.d.ts +66 -0
- package/dist/bundle/external.d.ts.map +1 -0
- package/dist/bundle/external.js +238 -0
- package/dist/bundle/external.js.map +1 -0
- package/dist/bundle/format.d.ts +94 -0
- package/dist/bundle/format.d.ts.map +1 -0
- package/dist/bundle/format.js +42 -0
- package/dist/bundle/format.js.map +1 -0
- package/dist/bundle/import.d.ts +49 -0
- package/dist/bundle/import.d.ts.map +1 -0
- package/dist/bundle/import.js +116 -0
- package/dist/bundle/import.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +1402 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init.d.ts +48 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +284 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/db/schema.d.ts +3 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +616 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/db/store.d.ts +1011 -0
- package/dist/db/store.d.ts.map +1 -0
- package/dist/db/store.js +3888 -0
- package/dist/db/store.js.map +1 -0
- package/dist/graph/pagerank.d.ts +9 -0
- package/dist/graph/pagerank.d.ts.map +1 -0
- package/dist/graph/pagerank.js +47 -0
- package/dist/graph/pagerank.js.map +1 -0
- package/dist/indexer/architecture.d.ts +72 -0
- package/dist/indexer/architecture.d.ts.map +1 -0
- package/dist/indexer/architecture.js +112 -0
- package/dist/indexer/architecture.js.map +1 -0
- package/dist/indexer/behavior.d.ts +75 -0
- package/dist/indexer/behavior.d.ts.map +1 -0
- package/dist/indexer/behavior.js +395 -0
- package/dist/indexer/behavior.js.map +1 -0
- package/dist/indexer/boundaries.d.ts +60 -0
- package/dist/indexer/boundaries.d.ts.map +1 -0
- package/dist/indexer/boundaries.js +366 -0
- package/dist/indexer/boundaries.js.map +1 -0
- package/dist/indexer/churn.d.ts +15 -0
- package/dist/indexer/churn.d.ts.map +1 -0
- package/dist/indexer/churn.js +49 -0
- package/dist/indexer/churn.js.map +1 -0
- package/dist/indexer/classify.d.ts +9 -0
- package/dist/indexer/classify.d.ts.map +1 -0
- package/dist/indexer/classify.js +90 -0
- package/dist/indexer/classify.js.map +1 -0
- package/dist/indexer/context.d.ts +176 -0
- package/dist/indexer/context.d.ts.map +1 -0
- package/dist/indexer/context.js +193 -0
- package/dist/indexer/context.js.map +1 -0
- package/dist/indexer/continuity.d.ts +67 -0
- package/dist/indexer/continuity.d.ts.map +1 -0
- package/dist/indexer/continuity.js +288 -0
- package/dist/indexer/continuity.js.map +1 -0
- package/dist/indexer/detectchanges.d.ts +32 -0
- package/dist/indexer/detectchanges.d.ts.map +1 -0
- package/dist/indexer/detectchanges.js +74 -0
- package/dist/indexer/detectchanges.js.map +1 -0
- package/dist/indexer/discovery.d.ts +37 -0
- package/dist/indexer/discovery.d.ts.map +1 -0
- package/dist/indexer/discovery.js +136 -0
- package/dist/indexer/discovery.js.map +1 -0
- package/dist/indexer/externaldeps.d.ts +18 -0
- package/dist/indexer/externaldeps.d.ts.map +1 -0
- package/dist/indexer/externaldeps.js +288 -0
- package/dist/indexer/externaldeps.js.map +1 -0
- package/dist/indexer/freshness.d.ts +48 -0
- package/dist/indexer/freshness.d.ts.map +1 -0
- package/dist/indexer/freshness.js +128 -0
- package/dist/indexer/freshness.js.map +1 -0
- package/dist/indexer/git.d.ts +144 -0
- package/dist/indexer/git.d.ts.map +1 -0
- package/dist/indexer/git.js +444 -0
- package/dist/indexer/git.js.map +1 -0
- package/dist/indexer/index.d.ts +145 -0
- package/dist/indexer/index.d.ts.map +1 -0
- package/dist/indexer/index.js +930 -0
- package/dist/indexer/index.js.map +1 -0
- package/dist/indexer/modules.d.ts +62 -0
- package/dist/indexer/modules.d.ts.map +1 -0
- package/dist/indexer/modules.js +293 -0
- package/dist/indexer/modules.js.map +1 -0
- package/dist/indexer/preflight.d.ts +154 -0
- package/dist/indexer/preflight.d.ts.map +1 -0
- package/dist/indexer/preflight.js +399 -0
- package/dist/indexer/preflight.js.map +1 -0
- package/dist/indexer/protoScanner.d.ts +34 -0
- package/dist/indexer/protoScanner.d.ts.map +1 -0
- package/dist/indexer/protoScanner.js +133 -0
- package/dist/indexer/protoScanner.js.map +1 -0
- package/dist/indexer/risk.d.ts +115 -0
- package/dist/indexer/risk.d.ts.map +1 -0
- package/dist/indexer/risk.js +194 -0
- package/dist/indexer/risk.js.map +1 -0
- package/dist/indexer/serviceHostScanner.d.ts +25 -0
- package/dist/indexer/serviceHostScanner.d.ts.map +1 -0
- package/dist/indexer/serviceHostScanner.js +95 -0
- package/dist/indexer/serviceHostScanner.js.map +1 -0
- package/dist/indexer/serviceLinks.d.ts +105 -0
- package/dist/indexer/serviceLinks.d.ts.map +1 -0
- package/dist/indexer/serviceLinks.js +509 -0
- package/dist/indexer/serviceLinks.js.map +1 -0
- package/dist/indexer/shapehash.d.ts +98 -0
- package/dist/indexer/shapehash.d.ts.map +1 -0
- package/dist/indexer/shapehash.js +354 -0
- package/dist/indexer/shapehash.js.map +1 -0
- package/dist/indexer/skeleton.d.ts +15 -0
- package/dist/indexer/skeleton.d.ts.map +1 -0
- package/dist/indexer/skeleton.js +136 -0
- package/dist/indexer/skeleton.js.map +1 -0
- package/dist/indexer/symbolhistory.d.ts +41 -0
- package/dist/indexer/symbolhistory.d.ts.map +1 -0
- package/dist/indexer/symbolhistory.js +124 -0
- package/dist/indexer/symbolhistory.js.map +1 -0
- package/dist/indexer/watcher.d.ts +68 -0
- package/dist/indexer/watcher.d.ts.map +1 -0
- package/dist/indexer/watcher.js +179 -0
- package/dist/indexer/watcher.js.map +1 -0
- package/dist/mcp/server.d.ts +80 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +1610 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/parser/index.d.ts +8 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +33 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/languages/cpp.d.ts +3 -0
- package/dist/parser/languages/cpp.d.ts.map +1 -0
- package/dist/parser/languages/cpp.js +350 -0
- package/dist/parser/languages/cpp.js.map +1 -0
- package/dist/parser/languages/csharp.d.ts +3 -0
- package/dist/parser/languages/csharp.d.ts.map +1 -0
- package/dist/parser/languages/csharp.js +239 -0
- package/dist/parser/languages/csharp.js.map +1 -0
- package/dist/parser/languages/go.d.ts +3 -0
- package/dist/parser/languages/go.d.ts.map +1 -0
- package/dist/parser/languages/go.js +259 -0
- package/dist/parser/languages/go.js.map +1 -0
- package/dist/parser/languages/java.d.ts +3 -0
- package/dist/parser/languages/java.d.ts.map +1 -0
- package/dist/parser/languages/java.js +391 -0
- package/dist/parser/languages/java.js.map +1 -0
- package/dist/parser/languages/python.d.ts +3 -0
- package/dist/parser/languages/python.d.ts.map +1 -0
- package/dist/parser/languages/python.js +396 -0
- package/dist/parser/languages/python.js.map +1 -0
- package/dist/parser/languages/rust.d.ts +3 -0
- package/dist/parser/languages/rust.d.ts.map +1 -0
- package/dist/parser/languages/rust.js +159 -0
- package/dist/parser/languages/rust.js.map +1 -0
- package/dist/parser/languages/typescript.d.ts +3 -0
- package/dist/parser/languages/typescript.d.ts.map +1 -0
- package/dist/parser/languages/typescript.js +1442 -0
- package/dist/parser/languages/typescript.js.map +1 -0
- package/dist/parser/parserContext.d.ts +77 -0
- package/dist/parser/parserContext.d.ts.map +1 -0
- package/dist/parser/parserContext.js +354 -0
- package/dist/parser/parserContext.js.map +1 -0
- package/dist/parser/walker.d.ts +81 -0
- package/dist/parser/walker.d.ts.map +1 -0
- package/dist/parser/walker.js +217 -0
- package/dist/parser/walker.js.map +1 -0
- package/dist/parser/worker.d.ts +66 -0
- package/dist/parser/worker.d.ts.map +1 -0
- package/dist/parser/worker.js +129 -0
- package/dist/parser/worker.js.map +1 -0
- package/dist/parser/workerpool.d.ts +107 -0
- package/dist/parser/workerpool.d.ts.map +1 -0
- package/dist/parser/workerpool.js +383 -0
- package/dist/parser/workerpool.js.map +1 -0
- package/dist/scip/format.d.ts +87 -0
- package/dist/scip/format.d.ts.map +1 -0
- package/dist/scip/format.js +31 -0
- package/dist/scip/format.js.map +1 -0
- package/dist/scip/import.d.ts +37 -0
- package/dist/scip/import.d.ts.map +1 -0
- package/dist/scip/import.js +180 -0
- package/dist/scip/import.js.map +1 -0
- package/dist/types.d.ts +392 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -0
- package/docs/architecture.md +105 -0
- package/docs/benchmarks/methodology.md +134 -0
- package/docs/benchmarks/raw-results.md +71 -0
- package/docs/benchmarks.md +74 -0
- package/docs/cli.md +148 -0
- package/docs/examples/behavior-tests.md +70 -0
- package/docs/examples/change-history.md +85 -0
- package/docs/examples/pre-edit-context.md +81 -0
- package/docs/examples/service-links.md +88 -0
- package/docs/examples.md +80 -0
- package/docs/faq.md +70 -0
- package/docs/internals.md +104 -0
- package/docs/languages.md +70 -0
- package/docs/limits.md +52 -0
- package/docs/mcp.md +199 -0
- package/docs/quickstart.md +119 -0
- package/docs/testing.md +123 -0
- package/docs/tools.md +115 -0
- package/package.json +52 -0
- package/research-codebase.md +578 -0
- package/seer-cli-docs.md +326 -0
- package/seer-master-guide.md +246 -0
- package/src/bundle/ci.ts +141 -0
- package/src/bundle/contract.ts +387 -0
- package/src/bundle/export.ts +175 -0
- package/src/bundle/external.ts +285 -0
- package/src/bundle/format.ts +92 -0
- package/src/bundle/import.ts +157 -0
- package/src/cli/index.ts +1249 -0
- package/src/cli/init.ts +389 -0
- package/src/db/schema.ts +614 -0
- package/src/db/store.ts +4306 -0
- package/src/graph/pagerank.ts +53 -0
- package/src/indexer/architecture.ts +148 -0
- package/src/indexer/behavior.ts +466 -0
- package/src/indexer/boundaries.ts +374 -0
- package/src/indexer/churn.ts +58 -0
- package/src/indexer/classify.ts +96 -0
- package/src/indexer/context.ts +340 -0
- package/src/indexer/continuity.ts +322 -0
- package/src/indexer/detectchanges.ts +94 -0
- package/src/indexer/discovery.ts +176 -0
- package/src/indexer/externaldeps.ts +243 -0
- package/src/indexer/freshness.ts +166 -0
- package/src/indexer/git.ts +453 -0
- package/src/indexer/index.ts +1092 -0
- package/src/indexer/modules.ts +358 -0
- package/src/indexer/preflight.ts +548 -0
- package/src/indexer/protoScanner.ts +147 -0
- package/src/indexer/risk.ts +304 -0
- package/src/indexer/serviceHostScanner.ts +92 -0
- package/src/indexer/serviceLinks.ts +543 -0
- package/src/indexer/shapehash.ts +370 -0
- package/src/indexer/skeleton.ts +169 -0
- package/src/indexer/symbolhistory.ts +172 -0
- package/src/indexer/watcher.ts +206 -0
- package/src/mcp/server.ts +1659 -0
- package/src/parser/index.ts +37 -0
- package/src/parser/languages/cpp.ts +361 -0
- package/src/parser/languages/csharp.ts +235 -0
- package/src/parser/languages/go.ts +259 -0
- package/src/parser/languages/java.ts +382 -0
- package/src/parser/languages/python.ts +370 -0
- package/src/parser/languages/rust.ts +164 -0
- package/src/parser/languages/typescript.ts +1435 -0
- package/src/parser/parserContext.ts +392 -0
- package/src/parser/walker.ts +306 -0
- package/src/parser/worker.ts +181 -0
- package/src/parser/workerpool.ts +448 -0
- package/src/scip/format.ts +83 -0
- package/src/scip/import.ts +216 -0
- package/src/types.ts +457 -0
- package/tests/benchmark-service-links.ts +244 -0
- package/tests/bug-regressions.ts +626 -0
- package/tests/filters.ts +264 -0
- package/tests/fixtures/Counter.tsx +38 -0
- package/tests/fixtures/caller.ts +7 -0
- package/tests/fixtures/collisions.ts +23 -0
- package/tests/fixtures/local_helper.ts +5 -0
- package/tests/fixtures/overloads.java +17 -0
- package/tests/fixtures/remote_helper.ts +4 -0
- package/tests/fixtures/sample.c +15 -0
- package/tests/fixtures/sample.cpp +47 -0
- package/tests/fixtures/sample.cs +62 -0
- package/tests/fixtures/sample.go +68 -0
- package/tests/fixtures/sample.h +30 -0
- package/tests/fixtures/sample.java +85 -0
- package/tests/fixtures/sample.py +46 -0
- package/tests/fixtures/sample.rs +78 -0
- package/tests/fixtures/sample.ts +76 -0
- package/tests/fixtures-service/HttpClients.cs +30 -0
- package/tests/fixtures-service/HttpClients.java +24 -0
- package/tests/fixtures-service/billing.ts +15 -0
- package/tests/fixtures-service/docker-compose.yml +15 -0
- package/tests/fixtures-service/gateway.ts +10 -0
- package/tests/fixtures-service/get_user.ts +11 -0
- package/tests/fixtures-service/graphql_client.ts +63 -0
- package/tests/fixtures-service/graphql_server.ts +30 -0
- package/tests/fixtures-service/grpc_client.go +30 -0
- package/tests/fixtures-service/http_clients.go +23 -0
- package/tests/fixtures-service/http_clients.py +38 -0
- package/tests/fixtures-service/http_clients.ts +49 -0
- package/tests/fixtures-service/k8s/payment-service.yaml +22 -0
- package/tests/fixtures-service/k8s_calls.ts +20 -0
- package/tests/fixtures-service/messaging.ts +87 -0
- package/tests/fixtures-service/trpc_client.ts +39 -0
- package/tests/fixtures-service/trpc_server.ts +39 -0
- package/tests/fixtures-service/user_service.proto +33 -0
- package/tests/fixtures-trackcd/Cargo.toml +11 -0
- package/tests/fixtures-trackcd/SpringController.java +36 -0
- package/tests/fixtures-trackcd/auth_service.ts +19 -0
- package/tests/fixtures-trackcd/complex_module.py +50 -0
- package/tests/fixtures-trackcd/express_app.js +30 -0
- package/tests/fixtures-trackcd/fastapi_app.py +49 -0
- package/tests/fixtures-trackcd/fastify_object_routes.js +32 -0
- package/tests/fixtures-trackcd/go.mod +8 -0
- package/tests/fixtures-trackcd/package.json +15 -0
- package/tests/fixtures-trackcd/requirements.txt +4 -0
- package/tests/fixtures-trackcd/tests/auth_service.test.ts +13 -0
- package/tests/fixtures-tracke/auth/AuthService.ts +23 -0
- package/tests/fixtures-tracke/auth/crypto.ts +7 -0
- package/tests/fixtures-tracke/billing/Billing.ts +20 -0
- package/tests/fixtures-tracke/billing/Invoice.ts +10 -0
- package/tests/fixtures-tracke/billing/server.ts +17 -0
- package/tests/fixtures-tracke/package.json +7 -0
- package/tests/fixtures-tracke/tests/auth.test.ts +23 -0
- package/tests/fixtures-tracke/tests/billing.test.ts +14 -0
- package/tests/fixtures-trackf/package.json +5 -0
- package/tests/fixtures-trackf/src/auth.ts +26 -0
- package/tests/fixtures-trackf/src/handlers.ts +35 -0
- package/tests/fixtures-tracki/billing/routes.ts +12 -0
- package/tests/fixtures-tracki/gateway/client.ts +13 -0
- package/tests/git-features.ts +267 -0
- package/tests/init.ts +141 -0
- package/tests/mcp-jit.ts +130 -0
- package/tests/mcp-smoke.ts +191 -0
- package/tests/mcp-trackcd.ts +169 -0
- package/tests/mcp-tracke.ts +229 -0
- package/tests/mcp-trackf.ts +330 -0
- package/tests/mcp-trackg.ts +219 -0
- package/tests/mcp-tracki.ts +174 -0
- package/tests/mcp-watcher.ts +126 -0
- package/tests/optspec.ts +194 -0
- package/tests/parallel-index.ts +333 -0
- package/tests/parallel-read.ts +125 -0
- package/tests/parallel-recovery.ts +241 -0
- package/tests/perf-callers.ts +145 -0
- package/tests/query-parity.ts +184 -0
- package/tests/query-perf.ts +55 -0
- package/tests/scale-parallel-parity.ts +225 -0
- package/tests/scale-test.ts +523 -0
- package/tests/smoke.ts +396 -0
- package/tests/trackcd.ts +325 -0
- package/tests/tracke-collisions.ts +255 -0
- package/tests/tracke.ts +314 -0
- package/tests/trackf-bugs.ts +406 -0
- package/tests/trackf.ts +390 -0
- package/tests/trackg.ts +1372 -0
- package/tests/tracki-boundaries.ts +202 -0
- package/tests/tracki-continuity.ts +253 -0
- package/tests/tracki-contract-diff.ts +249 -0
- package/tests/tracki-external-bundles.ts +341 -0
- package/tests/tracki-preflight.ts +251 -0
- package/tests/verify-roles.ts +51 -0
- package/tests/worker-parity.ts +286 -0
- package/tests/worker-pool.ts +262 -0
- package/tsconfig.json +20 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Track-F portable .seer bundle format.
|
|
4
|
+
*
|
|
5
|
+
* A bundle is a single self-describing file that lets a team ship a fully
|
|
6
|
+
* built index without every developer having to re-run `seer index`. The
|
|
7
|
+
* format is deliberately tiny and dependency-free:
|
|
8
|
+
*
|
|
9
|
+
* [4 bytes: magic 'SEER']
|
|
10
|
+
* [4 bytes: bundle format version (uint32 BE)]
|
|
11
|
+
* [4 bytes: manifest length (uint32 BE)]
|
|
12
|
+
* [N bytes: manifest JSON (utf-8)]
|
|
13
|
+
* [M bytes: gzip-compressed SQLite DB]
|
|
14
|
+
*
|
|
15
|
+
* Why not tar/zip? Both add a dependency or a hand-rolled archive writer for
|
|
16
|
+
* a single payload file. Our payload IS the DB; everything else is a few
|
|
17
|
+
* structured fields. One header + one gzip stream gets us:
|
|
18
|
+
* - O(1) manifest read without decompressing the DB
|
|
19
|
+
* - cross-platform, no native deps
|
|
20
|
+
*
|
|
21
|
+
* On determinism: the gzip stream and the VACUUM INTO'd DB ARE deterministic
|
|
22
|
+
* for fixed input. The manifest, however, defaults `builtAt = Date.now()` so
|
|
23
|
+
* out-of-the-box exports of the same DB at different wall-clock times
|
|
24
|
+
* produce different bytes. If you need bit-identical bundles (build-cache
|
|
25
|
+
* keys, reproducible-builds CI), pass an explicit `builtAt` to `exportBundle`
|
|
26
|
+
* to pin it.
|
|
27
|
+
*
|
|
28
|
+
* The manifest is the source of truth for:
|
|
29
|
+
* - schema_version (so the consumer can refuse incompatible bundles)
|
|
30
|
+
* - source signature (repo root, git head, file count + hash) so the
|
|
31
|
+
* bundle's "shape" is auditable before the agent trusts it
|
|
32
|
+
* - tool versions, build time, SCIP layers contributing precision
|
|
33
|
+
*
|
|
34
|
+
* Bundles are produced by `seer bundle export` and consumed by
|
|
35
|
+
* `seer bundle import`. CI mode (`seer ci bundle`) is a thin wrapper that
|
|
36
|
+
* runs `index` then `bundle export` and surfaces the resulting path.
|
|
37
|
+
*/
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.BUNDLE_FORMAT_VERSION = exports.BUNDLE_MAGIC = void 0;
|
|
40
|
+
exports.BUNDLE_MAGIC = Buffer.from('SEER', 'utf-8');
|
|
41
|
+
exports.BUNDLE_FORMAT_VERSION = 1;
|
|
42
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/bundle/format.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;;;AAEU,QAAA,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC5C,QAAA,qBAAqB,GAAG,CAAC,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { BundleManifest } from './format.js';
|
|
2
|
+
export interface ImportOptions {
|
|
3
|
+
/**
|
|
4
|
+
* Where to land the extracted DB. Defaults to `<repoRoot>/.seer/graph.db`.
|
|
5
|
+
* If the path already exists and `overwrite` is false (the default), the
|
|
6
|
+
* import fails — bundles are meant to bootstrap a missing index, not to
|
|
7
|
+
* silently clobber a fresher local one.
|
|
8
|
+
*/
|
|
9
|
+
dbOut?: string;
|
|
10
|
+
overwrite?: boolean;
|
|
11
|
+
/** Logger; defaults to no-op. */
|
|
12
|
+
log?: (msg: string) => void;
|
|
13
|
+
/**
|
|
14
|
+
* Skip the dbSha256 check. Off by default — the integrity guarantee is the
|
|
15
|
+
* whole point of the manifest. Use this only for forensic inspection of a
|
|
16
|
+
* corrupted bundle whose header still parses.
|
|
17
|
+
*/
|
|
18
|
+
skipIntegrityCheck?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Skip the schema-version compatibility check. Off by default — bundles
|
|
21
|
+
* whose schemaVersion is newer than this build's CURRENT_SCHEMA_VERSION
|
|
22
|
+
* are rejected because we can't safely open them. Override only when you
|
|
23
|
+
* KNOW the schema is compatible (e.g. forensics or a controlled upgrade).
|
|
24
|
+
*/
|
|
25
|
+
skipSchemaCheck?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Required source repo root for the imported index. Used to decide the
|
|
28
|
+
* default dbOut location only — the bundle's manifest.source.repoRoot is
|
|
29
|
+
* stored as metadata but never enforced (bundles are commonly built on
|
|
30
|
+
* a CI runner with a different absolute path).
|
|
31
|
+
*/
|
|
32
|
+
repoRoot: string;
|
|
33
|
+
}
|
|
34
|
+
export interface ImportResult {
|
|
35
|
+
bundlePath: string;
|
|
36
|
+
dbPath: string;
|
|
37
|
+
manifest: BundleManifest;
|
|
38
|
+
bytes: number;
|
|
39
|
+
elapsedMs: number;
|
|
40
|
+
}
|
|
41
|
+
/** Read just the manifest from a bundle, without unpacking the DB. */
|
|
42
|
+
export declare function readBundleManifest(bundlePath: string): BundleManifest;
|
|
43
|
+
/**
|
|
44
|
+
* Restore a bundle into the workspace. The default destination is
|
|
45
|
+
* `<repoRoot>/.seer/graph.db`. Verifies the manifest, format version, and
|
|
46
|
+
* (unless skipped) the DB sha256.
|
|
47
|
+
*/
|
|
48
|
+
export declare function importBundle(bundlePath: string, options: ImportOptions): Promise<ImportResult>;
|
|
49
|
+
//# sourceMappingURL=import.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../src/bundle/import.ts"],"names":[],"mappings":"AAIA,OAAO,EACgC,cAAc,EACpD,MAAM,aAAa,CAAC;AAGrB,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iCAAiC;IACjC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,cAAc,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,sEAAsE;AACtE,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,CAyBrE;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GACzC,OAAO,CAAC,YAAY,CAAC,CAuEvB"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.readBundleManifest = readBundleManifest;
|
|
7
|
+
exports.importBundle = importBundle;
|
|
8
|
+
const fs_1 = __importDefault(require("fs"));
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
11
|
+
const zlib_1 = __importDefault(require("zlib"));
|
|
12
|
+
const format_js_1 = require("./format.js");
|
|
13
|
+
const schema_js_1 = require("../db/schema.js");
|
|
14
|
+
/** Read just the manifest from a bundle, without unpacking the DB. */
|
|
15
|
+
function readBundleManifest(bundlePath) {
|
|
16
|
+
const fd = fs_1.default.openSync(bundlePath, 'r');
|
|
17
|
+
try {
|
|
18
|
+
const header = Buffer.alloc(12);
|
|
19
|
+
const headerRead = fs_1.default.readSync(fd, header, 0, 12, 0);
|
|
20
|
+
if (headerRead < 12 || !header.subarray(0, 4).equals(format_js_1.BUNDLE_MAGIC)) {
|
|
21
|
+
throw new Error(`Not a Seer bundle: ${bundlePath} (bad magic)`);
|
|
22
|
+
}
|
|
23
|
+
const formatVersion = header.readUInt32BE(4);
|
|
24
|
+
if (formatVersion > format_js_1.BUNDLE_FORMAT_VERSION) {
|
|
25
|
+
throw new Error(`Bundle format v${formatVersion} is newer than this build (v${format_js_1.BUNDLE_FORMAT_VERSION}). Upgrade Seer.`);
|
|
26
|
+
}
|
|
27
|
+
const manifestLen = header.readUInt32BE(8);
|
|
28
|
+
if (manifestLen <= 0 || manifestLen > 64 * 1024 * 1024) {
|
|
29
|
+
throw new Error(`Bundle manifest length out of range: ${manifestLen}`);
|
|
30
|
+
}
|
|
31
|
+
const manifestBuf = Buffer.alloc(manifestLen);
|
|
32
|
+
const read = fs_1.default.readSync(fd, manifestBuf, 0, manifestLen, 12);
|
|
33
|
+
if (read !== manifestLen) {
|
|
34
|
+
throw new Error(`Bundle truncated reading manifest`);
|
|
35
|
+
}
|
|
36
|
+
return JSON.parse(manifestBuf.toString('utf-8'));
|
|
37
|
+
}
|
|
38
|
+
finally {
|
|
39
|
+
fs_1.default.closeSync(fd);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Restore a bundle into the workspace. The default destination is
|
|
44
|
+
* `<repoRoot>/.seer/graph.db`. Verifies the manifest, format version, and
|
|
45
|
+
* (unless skipped) the DB sha256.
|
|
46
|
+
*/
|
|
47
|
+
async function importBundle(bundlePath, options) {
|
|
48
|
+
const start = Date.now();
|
|
49
|
+
const log = options.log ?? (() => { });
|
|
50
|
+
if (!fs_1.default.existsSync(bundlePath)) {
|
|
51
|
+
throw new Error(`No bundle at ${bundlePath}`);
|
|
52
|
+
}
|
|
53
|
+
const fileBuf = fs_1.default.readFileSync(bundlePath);
|
|
54
|
+
if (fileBuf.length < 12 || !fileBuf.subarray(0, 4).equals(format_js_1.BUNDLE_MAGIC)) {
|
|
55
|
+
throw new Error(`Not a Seer bundle: ${bundlePath} (bad magic)`);
|
|
56
|
+
}
|
|
57
|
+
const formatVersion = fileBuf.readUInt32BE(4);
|
|
58
|
+
if (formatVersion > format_js_1.BUNDLE_FORMAT_VERSION) {
|
|
59
|
+
throw new Error(`Bundle format v${formatVersion} is newer than this build (v${format_js_1.BUNDLE_FORMAT_VERSION}). Upgrade Seer.`);
|
|
60
|
+
}
|
|
61
|
+
const manifestLen = fileBuf.readUInt32BE(8);
|
|
62
|
+
const manifestEnd = 12 + manifestLen;
|
|
63
|
+
if (manifestEnd > fileBuf.length) {
|
|
64
|
+
throw new Error(`Bundle truncated; manifest length ${manifestLen} exceeds file size`);
|
|
65
|
+
}
|
|
66
|
+
const manifest = JSON.parse(fileBuf.slice(12, manifestEnd).toString('utf-8'));
|
|
67
|
+
log(`Manifest: schemaVersion=${manifest.schemaVersion} symbols=${manifest.index.symbols} edges=${manifest.index.edges} builtAt=${new Date(manifest.builtAt).toISOString()}`);
|
|
68
|
+
// Schema compatibility check. The bundle's embedded DB was built against a
|
|
69
|
+
// specific schema version; if it's NEWER than this build of Seer, the DB
|
|
70
|
+
// contains tables/columns we don't understand and opening it would either
|
|
71
|
+
// crash on read or silently lose precision. Reject up front rather than
|
|
72
|
+
// crashing on first query. Older bundles are accepted because the Store's
|
|
73
|
+
// runMigrations() will catch the DB up at open time.
|
|
74
|
+
if (!options.skipSchemaCheck) {
|
|
75
|
+
if (manifest.schemaVersion > schema_js_1.CURRENT_SCHEMA_VERSION) {
|
|
76
|
+
throw new Error(`Bundle schemaVersion=${manifest.schemaVersion} is newer than this build's ` +
|
|
77
|
+
`CURRENT_SCHEMA_VERSION=${schema_js_1.CURRENT_SCHEMA_VERSION}. Upgrade Seer or pass skipSchemaCheck=true.`);
|
|
78
|
+
}
|
|
79
|
+
if (manifest.schemaVersion <= 0) {
|
|
80
|
+
throw new Error(`Bundle has invalid schemaVersion=${manifest.schemaVersion}.`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
const compressed = fileBuf.slice(manifestEnd);
|
|
84
|
+
const dbBuf = zlib_1.default.gunzipSync(compressed);
|
|
85
|
+
if (!options.skipIntegrityCheck) {
|
|
86
|
+
const dbSha = crypto_1.default.createHash('sha256').update(dbBuf).digest('hex');
|
|
87
|
+
if (dbSha !== manifest.dbSha256) {
|
|
88
|
+
throw new Error(`Bundle integrity check FAILED. Expected ${manifest.dbSha256}, got ${dbSha}.`);
|
|
89
|
+
}
|
|
90
|
+
if (dbBuf.length !== manifest.dbBytes) {
|
|
91
|
+
throw new Error(`Bundle integrity check FAILED. Expected ${manifest.dbBytes} bytes, got ${dbBuf.length}.`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
const dbOut = options.dbOut ?? path_1.default.join(options.repoRoot, '.seer', 'graph.db');
|
|
95
|
+
if (fs_1.default.existsSync(dbOut) && !options.overwrite) {
|
|
96
|
+
throw new Error(`Refusing to overwrite existing index at ${dbOut} — pass overwrite=true to replace it.`);
|
|
97
|
+
}
|
|
98
|
+
fs_1.default.mkdirSync(path_1.default.dirname(dbOut), { recursive: true });
|
|
99
|
+
fs_1.default.writeFileSync(dbOut, dbBuf);
|
|
100
|
+
// Drop the WAL/SHM siblings of the previous DB (if any) so the imported
|
|
101
|
+
// file isn't read against a stale journal.
|
|
102
|
+
try {
|
|
103
|
+
fs_1.default.unlinkSync(dbOut + '-wal');
|
|
104
|
+
}
|
|
105
|
+
catch { /* */ }
|
|
106
|
+
try {
|
|
107
|
+
fs_1.default.unlinkSync(dbOut + '-shm');
|
|
108
|
+
}
|
|
109
|
+
catch { /* */ }
|
|
110
|
+
log(`Wrote ${dbBuf.length} bytes to ${dbOut}`);
|
|
111
|
+
return {
|
|
112
|
+
bundlePath, dbPath: dbOut, manifest,
|
|
113
|
+
bytes: fileBuf.length, elapsedMs: Date.now() - start,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=import.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/bundle/import.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":""}
|