daftari 1.30.0 → 1.31.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/CHANGELOG.md +106 -0
- package/README.md +139 -4
- package/dist/access/rbac.d.ts +1 -0
- package/dist/access/rbac.d.ts.map +1 -1
- package/dist/access/rbac.js +7 -0
- package/dist/access/rbac.js.map +1 -1
- package/dist/audit/checks/broken_refs.d.ts +1 -1
- package/dist/audit/checks/broken_refs.d.ts.map +1 -1
- package/dist/audit/checks/broken_refs.js +77 -22
- package/dist/audit/checks/broken_refs.js.map +1 -1
- package/dist/audit/collect.d.ts +1 -0
- package/dist/audit/collect.d.ts.map +1 -1
- package/dist/audit/collect.js +22 -2
- package/dist/audit/collect.js.map +1 -1
- package/dist/audit/index.d.ts.map +1 -1
- package/dist/audit/index.js +9 -3
- package/dist/audit/index.js.map +1 -1
- package/dist/audit/links.d.ts.map +1 -1
- package/dist/audit/links.js +9 -3
- package/dist/audit/links.js.map +1 -1
- package/dist/audit/report.d.ts.map +1 -1
- package/dist/audit/report.js +2 -0
- package/dist/audit/report.js.map +1 -1
- package/dist/audit/types.d.ts +4 -1
- package/dist/audit/types.d.ts.map +1 -1
- package/dist/audit/types.js.map +1 -1
- package/dist/backfill/derive.d.ts.map +1 -1
- package/dist/backfill/derive.js +1 -0
- package/dist/backfill/derive.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +18 -0
- package/dist/cli.js.map +1 -1
- package/dist/court/precedent.d.ts.map +1 -1
- package/dist/court/precedent.js +6 -1
- package/dist/court/precedent.js.map +1 -1
- package/dist/curation/consumes.d.ts +24 -0
- package/dist/curation/consumes.d.ts.map +1 -0
- package/dist/curation/consumes.js +122 -0
- package/dist/curation/consumes.js.map +1 -0
- package/dist/curation/edge-staleness.d.ts +47 -0
- package/dist/curation/edge-staleness.d.ts.map +1 -0
- package/dist/curation/edge-staleness.js +258 -0
- package/dist/curation/edge-staleness.js.map +1 -0
- package/dist/curation/edges.d.ts.map +1 -1
- package/dist/curation/edges.js +164 -10
- package/dist/curation/edges.js.map +1 -1
- package/dist/curation/lint.d.ts +4 -1
- package/dist/curation/lint.d.ts.map +1 -1
- package/dist/curation/lint.js +61 -6
- package/dist/curation/lint.js.map +1 -1
- package/dist/curation/provenance.d.ts +2 -0
- package/dist/curation/provenance.d.ts.map +1 -1
- package/dist/curation/provenance.js +2 -0
- package/dist/curation/provenance.js.map +1 -1
- package/dist/curation/read-log.d.ts +19 -0
- package/dist/curation/read-log.d.ts.map +1 -0
- package/dist/curation/read-log.js +120 -0
- package/dist/curation/read-log.js.map +1 -0
- package/dist/curation/review-throughput.d.ts +24 -0
- package/dist/curation/review-throughput.d.ts.map +1 -0
- package/dist/curation/review-throughput.js +102 -0
- package/dist/curation/review-throughput.js.map +1 -0
- package/dist/curation/staged-actions.d.ts +11 -1
- package/dist/curation/staged-actions.d.ts.map +1 -1
- package/dist/curation/staged-actions.js +102 -24
- package/dist/curation/staged-actions.js.map +1 -1
- package/dist/curation/structural.d.ts +16 -0
- package/dist/curation/structural.d.ts.map +1 -0
- package/dist/curation/structural.js +64 -0
- package/dist/curation/structural.js.map +1 -0
- package/dist/curation/tension-blast.d.ts +4 -0
- package/dist/curation/tension-blast.d.ts.map +1 -1
- package/dist/curation/tension-blast.js +9 -0
- package/dist/curation/tension-blast.js.map +1 -1
- package/dist/curation/tension.d.ts +5 -2
- package/dist/curation/tension.d.ts.map +1 -1
- package/dist/curation/tension.js +68 -25
- package/dist/curation/tension.js.map +1 -1
- package/dist/curation/tier0.d.ts +27 -0
- package/dist/curation/tier0.d.ts.map +1 -0
- package/dist/curation/tier0.js +196 -0
- package/dist/curation/tier0.js.map +1 -0
- package/dist/curation/tier1.d.ts +30 -0
- package/dist/curation/tier1.d.ts.map +1 -0
- package/dist/curation/tier1.js +142 -0
- package/dist/curation/tier1.js.map +1 -0
- package/dist/curation/tier2.d.ts +43 -0
- package/dist/curation/tier2.d.ts.map +1 -0
- package/dist/curation/tier2.js +182 -0
- package/dist/curation/tier2.js.map +1 -0
- package/dist/curation/vault-docs.d.ts +5 -1
- package/dist/curation/vault-docs.d.ts.map +1 -1
- package/dist/curation/vault-docs.js +14 -0
- package/dist/curation/vault-docs.js.map +1 -1
- package/dist/eval/generate.js +22 -5
- package/dist/eval/generate.js.map +1 -1
- package/dist/eval/index.d.ts.map +1 -1
- package/dist/eval/index.js +173 -25
- package/dist/eval/index.js.map +1 -1
- package/dist/eval/llm.js +1 -1
- package/dist/eval/llm.js.map +1 -1
- package/dist/eval/prune.d.ts +24 -0
- package/dist/eval/prune.d.ts.map +1 -0
- package/dist/eval/prune.js +83 -0
- package/dist/eval/prune.js.map +1 -0
- package/dist/eval/storage.d.ts +3 -0
- package/dist/eval/storage.d.ts.map +1 -1
- package/dist/eval/storage.js +14 -0
- package/dist/eval/storage.js.map +1 -1
- package/dist/frontmatter/schema.d.ts.map +1 -1
- package/dist/frontmatter/schema.js +19 -1
- package/dist/frontmatter/schema.js.map +1 -1
- package/dist/frontmatter/types.d.ts +4 -1
- package/dist/frontmatter/types.d.ts.map +1 -1
- package/dist/frontmatter/types.js +8 -0
- package/dist/frontmatter/types.js.map +1 -1
- package/dist/import/index.d.ts.map +1 -1
- package/dist/import/index.js +44 -9
- package/dist/import/index.js.map +1 -1
- package/dist/import/langgraph-store.d.ts +53 -0
- package/dist/import/langgraph-store.d.ts.map +1 -0
- package/dist/import/langgraph-store.js +292 -0
- package/dist/import/langgraph-store.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +56 -18
- package/dist/index.js.map +1 -1
- package/dist/lifecycle/lock.d.ts +9 -1
- package/dist/lifecycle/lock.d.ts.map +1 -1
- package/dist/lifecycle/lock.js +34 -9
- package/dist/lifecycle/lock.js.map +1 -1
- package/dist/okf/export.d.ts +12 -0
- package/dist/okf/export.d.ts.map +1 -0
- package/dist/okf/export.js +115 -0
- package/dist/okf/export.js.map +1 -0
- package/dist/okf/import.d.ts +24 -0
- package/dist/okf/import.d.ts.map +1 -0
- package/dist/okf/import.js +107 -0
- package/dist/okf/import.js.map +1 -0
- package/dist/okf/index.d.ts +2 -0
- package/dist/okf/index.d.ts.map +1 -0
- package/dist/okf/index.js +147 -0
- package/dist/okf/index.js.map +1 -0
- package/dist/okf/map.d.ts +16 -0
- package/dist/okf/map.d.ts.map +1 -0
- package/dist/okf/map.js +149 -0
- package/dist/okf/map.js.map +1 -0
- package/dist/okf/types.d.ts +9 -0
- package/dist/okf/types.d.ts.map +1 -0
- package/dist/okf/types.js +48 -0
- package/dist/okf/types.js.map +1 -0
- package/dist/search/coverage.d.ts.map +1 -1
- package/dist/search/coverage.js +1 -1
- package/dist/search/coverage.js.map +1 -1
- package/dist/search/hybrid.d.ts +19 -0
- package/dist/search/hybrid.d.ts.map +1 -1
- package/dist/search/hybrid.js +58 -10
- package/dist/search/hybrid.js.map +1 -1
- package/dist/search/reindex.d.ts +1 -0
- package/dist/search/reindex.d.ts.map +1 -1
- package/dist/search/reindex.js +41 -11
- package/dist/search/reindex.js.map +1 -1
- package/dist/search/watcher.d.ts +2 -0
- package/dist/search/watcher.d.ts.map +1 -1
- package/dist/search/watcher.js +21 -10
- package/dist/search/watcher.js.map +1 -1
- package/dist/serve/index.d.ts +36 -0
- package/dist/serve/index.d.ts.map +1 -0
- package/dist/serve/index.js +507 -0
- package/dist/serve/index.js.map +1 -0
- package/dist/server.d.ts +10 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +89 -14
- package/dist/server.js.map +1 -1
- package/dist/sleep/index.d.ts +2 -0
- package/dist/sleep/index.d.ts.map +1 -1
- package/dist/sleep/index.js +212 -21
- package/dist/sleep/index.js.map +1 -1
- package/dist/sleep/report.d.ts +3 -0
- package/dist/sleep/report.d.ts.map +1 -1
- package/dist/sleep/report.js +52 -0
- package/dist/sleep/report.js.map +1 -1
- package/dist/sleep/tension-scan-state.d.ts +19 -0
- package/dist/sleep/tension-scan-state.d.ts.map +1 -0
- package/dist/sleep/tension-scan-state.js +0 -0
- package/dist/sleep/tension-scan-state.js.map +1 -0
- package/dist/sleep/tension-scan.d.ts +44 -0
- package/dist/sleep/tension-scan.d.ts.map +1 -0
- package/dist/sleep/tension-scan.js +0 -0
- package/dist/sleep/tension-scan.js.map +1 -0
- package/dist/storage/backend.d.ts +12 -0
- package/dist/storage/backend.d.ts.map +1 -0
- package/dist/storage/backend.js +231 -0
- package/dist/storage/backend.js.map +1 -0
- package/dist/storage/backends/fs.d.ts +4 -0
- package/dist/storage/backends/fs.d.ts.map +1 -0
- package/dist/storage/backends/fs.js +99 -0
- package/dist/storage/backends/fs.js.map +1 -0
- package/dist/storage/fs-walk.d.ts +5 -0
- package/dist/storage/fs-walk.d.ts.map +1 -0
- package/dist/storage/fs-walk.js +28 -0
- package/dist/storage/fs-walk.js.map +1 -0
- package/dist/storage/index-db.d.ts +16 -0
- package/dist/storage/index-db.d.ts.map +1 -1
- package/dist/storage/index-db.js +94 -5
- package/dist/storage/index-db.js.map +1 -1
- package/dist/storage/local.d.ts +1 -0
- package/dist/storage/local.d.ts.map +1 -1
- package/dist/storage/local.js +12 -0
- package/dist/storage/local.js.map +1 -1
- package/dist/storage/sync.d.ts +25 -0
- package/dist/storage/sync.d.ts.map +1 -0
- package/dist/storage/sync.js +308 -0
- package/dist/storage/sync.js.map +1 -0
- package/dist/sync/index.d.ts +2 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +136 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/themes/clustering.d.ts +6 -11
- package/dist/themes/clustering.d.ts.map +1 -1
- package/dist/themes/clustering.js +76 -84
- package/dist/themes/clustering.js.map +1 -1
- package/dist/tools/consumes.d.ts +14 -0
- package/dist/tools/consumes.d.ts.map +1 -0
- package/dist/tools/consumes.js +99 -0
- package/dist/tools/consumes.js.map +1 -0
- package/dist/tools/curation.d.ts +2 -0
- package/dist/tools/curation.d.ts.map +1 -1
- package/dist/tools/curation.js +53 -15
- package/dist/tools/curation.js.map +1 -1
- package/dist/tools/edge-staleness.d.ts +28 -0
- package/dist/tools/edge-staleness.d.ts.map +1 -0
- package/dist/tools/edge-staleness.js +205 -0
- package/dist/tools/edge-staleness.js.map +1 -0
- package/dist/tools/edges.d.ts.map +1 -1
- package/dist/tools/edges.js +27 -21
- package/dist/tools/edges.js.map +1 -1
- package/dist/tools/read.d.ts +15 -1
- package/dist/tools/read.d.ts.map +1 -1
- package/dist/tools/read.js +142 -29
- package/dist/tools/read.js.map +1 -1
- package/dist/tools/receipt.d.ts.map +1 -1
- package/dist/tools/receipt.js +16 -7
- package/dist/tools/receipt.js.map +1 -1
- package/dist/tools/search.d.ts +1 -0
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +147 -5
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/staged-actions.d.ts +3 -0
- package/dist/tools/staged-actions.d.ts.map +1 -1
- package/dist/tools/staged-actions.js +227 -22
- package/dist/tools/staged-actions.js.map +1 -1
- package/dist/tools/themes.d.ts +8 -0
- package/dist/tools/themes.d.ts.map +1 -1
- package/dist/tools/themes.js +208 -122
- package/dist/tools/themes.js.map +1 -1
- package/dist/tools/tier1.d.ts +14 -0
- package/dist/tools/tier1.d.ts.map +1 -0
- package/dist/tools/tier1.js +169 -0
- package/dist/tools/tier1.js.map +1 -0
- package/dist/tools/tier2.d.ts +27 -0
- package/dist/tools/tier2.d.ts.map +1 -0
- package/dist/tools/tier2.js +344 -0
- package/dist/tools/tier2.js.map +1 -0
- package/dist/tools/write.d.ts +9 -1
- package/dist/tools/write.d.ts.map +1 -1
- package/dist/tools/write.js +492 -6
- package/dist/tools/write.js.map +1 -1
- package/dist/utils/config.d.ts +52 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +372 -2
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/run-id.d.ts +3 -0
- package/dist/utils/run-id.d.ts.map +1 -0
- package/dist/utils/run-id.js +19 -0
- package/dist/utils/run-id.js.map +1 -0
- package/dist/utils/vault-gitignore.d.ts +1 -1
- package/dist/utils/vault-gitignore.d.ts.map +1 -1
- package/dist/utils/vault-gitignore.js +4 -1
- package/dist/utils/vault-gitignore.js.map +1 -1
- package/package.json +21 -1
- package/templates/config.yaml +8 -0
package/dist/storage/index-db.js
CHANGED
|
@@ -44,7 +44,13 @@ import { normalizeIsoDate } from "../utils/dates.js";
|
|
|
44
44
|
// Bumped 4 → 5 to add FTS5 (`documents_fts`) and sqlite-vec (`embeddings_vec`)
|
|
45
45
|
// virtual tables for SQL-native search. The index is a derived cache so the
|
|
46
46
|
// bump triggers a clean rebuild (see openIndexDb); no in-place migration.
|
|
47
|
-
|
|
47
|
+
// Bumped 7 → 8 to add the trail-extra columns (observations, contested_at,
|
|
48
|
+
// contest_reason) to derives_from_edges, which became the authoritative edge
|
|
49
|
+
// READ path (#236) and so must carry the full public edge shape.
|
|
50
|
+
// Bumped 8 → 9 to add doc_links, the materialized inbound-link graph that
|
|
51
|
+
// backs inline structural decay (#8) — orphan and deprecated-still-linked
|
|
52
|
+
// answered with one indexed query at read/search time.
|
|
53
|
+
const SCHEMA_VERSION = "9";
|
|
48
54
|
// Meta key that records the dim at which `embeddings_vec` was created. Used
|
|
49
55
|
// on every open to decide whether to rebuild the virtual table (provider
|
|
50
56
|
// switch). The durable `embeddings` cache is per-(model, dim) so it survives
|
|
@@ -96,6 +102,12 @@ CREATE TABLE IF NOT EXISTS meta (
|
|
|
96
102
|
key TEXT PRIMARY KEY,
|
|
97
103
|
value TEXT NOT NULL
|
|
98
104
|
);
|
|
105
|
+
CREATE TABLE IF NOT EXISTS doc_links (
|
|
106
|
+
source_path TEXT NOT NULL,
|
|
107
|
+
target_path TEXT NOT NULL,
|
|
108
|
+
PRIMARY KEY (source_path, target_path)
|
|
109
|
+
);
|
|
110
|
+
CREATE INDEX IF NOT EXISTS idx_doc_links_target ON doc_links(target_path);
|
|
99
111
|
CREATE TABLE IF NOT EXISTS staged_actions (
|
|
100
112
|
id TEXT PRIMARY KEY,
|
|
101
113
|
action_type TEXT NOT NULL,
|
|
@@ -123,6 +135,9 @@ CREATE TABLE IF NOT EXISTS derives_from_edges (
|
|
|
123
135
|
last_age_decay TEXT NOT NULL,
|
|
124
136
|
status TEXT NOT NULL,
|
|
125
137
|
direction_verdict TEXT NOT NULL DEFAULT 'directed',
|
|
138
|
+
observations INTEGER NOT NULL DEFAULT 0,
|
|
139
|
+
contested_at TEXT,
|
|
140
|
+
contest_reason TEXT,
|
|
126
141
|
PRIMARY KEY (from_path, to_path)
|
|
127
142
|
);
|
|
128
143
|
CREATE INDEX IF NOT EXISTS idx_edges_from ON derives_from_edges(from_path);
|
|
@@ -371,7 +386,7 @@ export function openIndexDb(vaultRoot, expectedVecDim) {
|
|
|
371
386
|
// cleared here — they are content-addressed and a subsequent gc pass deletes
|
|
372
387
|
// only the orphaned ones, preserving the cache across reindexes.
|
|
373
388
|
export function clearIndex(db) {
|
|
374
|
-
db.exec("DELETE FROM documents; DELETE FROM chunks;");
|
|
389
|
+
db.exec("DELETE FROM documents; DELETE FROM chunks; DELETE FROM doc_links;");
|
|
375
390
|
}
|
|
376
391
|
// Drops one document and all its chunks. Used by the write path to evict a
|
|
377
392
|
// document's stale rows before re-inserting it: a plain INSERT OR REPLACE on
|
|
@@ -379,6 +394,45 @@ export function clearIndex(db) {
|
|
|
379
394
|
export function deleteDocument(db, path) {
|
|
380
395
|
db.prepare("DELETE FROM documents WHERE path = ?").run(path);
|
|
381
396
|
db.prepare("DELETE FROM chunks WHERE path = ?").run(path);
|
|
397
|
+
// Outgoing links die with the doc. Inbound rows pointing AT it may remain
|
|
398
|
+
// (their sources still link here on disk); inboundLinkers joins documents
|
|
399
|
+
// on source_path, so a deleted source can never surface as a linker.
|
|
400
|
+
db.prepare("DELETE FROM doc_links WHERE source_path = ?").run(path);
|
|
401
|
+
}
|
|
402
|
+
// --- inbound-link graph (#8) ------------------------------------------------
|
|
403
|
+
//
|
|
404
|
+
// doc_links materializes the body-link graph at (re)index time so the read
|
|
405
|
+
// and search paths can answer "who links here?" with one indexed query
|
|
406
|
+
// instead of loading the whole vault (the exact cost #8 designs out). Rows
|
|
407
|
+
// are derived and rebuildable — same ephemerality contract as everything
|
|
408
|
+
// else in this file.
|
|
409
|
+
// Replaces the outgoing link rows for one source document.
|
|
410
|
+
export function replaceDocLinks(db, sourcePath, targets) {
|
|
411
|
+
db.prepare("DELETE FROM doc_links WHERE source_path = ?").run(sourcePath);
|
|
412
|
+
const insert = db.prepare("INSERT OR IGNORE INTO doc_links (source_path, target_path) VALUES (?, ?)");
|
|
413
|
+
for (const t of targets) {
|
|
414
|
+
if (t === sourcePath)
|
|
415
|
+
continue; // a self-link is not an inbound edge
|
|
416
|
+
insert.run(sourcePath, t);
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
// The documents whose bodies link to `targetPath`, with each linker's
|
|
420
|
+
// lifecycle status (the deprecated-still-linked check needs it). Joined to
|
|
421
|
+
// `documents` so a source deleted after its links were written can never
|
|
422
|
+
// surface as a phantom linker.
|
|
423
|
+
export function inboundLinkers(db, targetPath) {
|
|
424
|
+
return db
|
|
425
|
+
.prepare(`SELECT d.path AS path, d.status AS status
|
|
426
|
+
FROM doc_links AS l
|
|
427
|
+
JOIN documents AS d ON d.path = l.source_path
|
|
428
|
+
WHERE l.target_path = ?
|
|
429
|
+
ORDER BY d.path`)
|
|
430
|
+
.all(targetPath);
|
|
431
|
+
}
|
|
432
|
+
// Every indexed document path — the known-path universe outgoing-link
|
|
433
|
+
// resolution runs against for a single-document incremental index.
|
|
434
|
+
export function allDocumentPaths(db) {
|
|
435
|
+
return db.prepare("SELECT path FROM documents ORDER BY path").all().map((r) => r.path);
|
|
382
436
|
}
|
|
383
437
|
// --- Float32 <-> BLOB ------------------------------------------------------
|
|
384
438
|
export function embeddingToBlob(vec) {
|
|
@@ -712,8 +766,9 @@ export function getStagedActionsByStatus(db, status) {
|
|
|
712
766
|
export function upsertDerivesFromEdge(db, row) {
|
|
713
767
|
db.prepare(`INSERT INTO derives_from_edges
|
|
714
768
|
(from_path, to_path, strength, k_survived, first_observed, last_rederived,
|
|
715
|
-
last_age_decay, status, direction_verdict
|
|
716
|
-
|
|
769
|
+
last_age_decay, status, direction_verdict, observations, contested_at,
|
|
770
|
+
contest_reason)
|
|
771
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
717
772
|
ON CONFLICT(from_path, to_path) DO UPDATE SET
|
|
718
773
|
strength = excluded.strength,
|
|
719
774
|
k_survived = excluded.k_survived,
|
|
@@ -721,7 +776,41 @@ export function upsertDerivesFromEdge(db, row) {
|
|
|
721
776
|
last_rederived = excluded.last_rederived,
|
|
722
777
|
last_age_decay = excluded.last_age_decay,
|
|
723
778
|
status = excluded.status,
|
|
724
|
-
direction_verdict = excluded.direction_verdict
|
|
779
|
+
direction_verdict = excluded.direction_verdict,
|
|
780
|
+
observations = excluded.observations,
|
|
781
|
+
contested_at = excluded.contested_at,
|
|
782
|
+
contest_reason = excluded.contest_reason`).run(row.from_path, row.to_path, row.strength, row.k_survived, row.first_observed, row.last_rederived, row.last_age_decay, row.status, row.direction_verdict, row.observations, row.contested_at, row.contest_reason);
|
|
783
|
+
}
|
|
784
|
+
// One edge row matched in EITHER orientation: the stored (from_path, to_path)
|
|
785
|
+
// is the derived OUTPUT orientation, which premise votes can flip, so a lookup
|
|
786
|
+
// by pair must not assume the caller's order matches the stored order.
|
|
787
|
+
export function getDerivesFromEdgePair(db, a, b) {
|
|
788
|
+
const row = db
|
|
789
|
+
.prepare(`SELECT * FROM derives_from_edges
|
|
790
|
+
WHERE (from_path = ? AND to_path = ?) OR (from_path = ? AND to_path = ?)`)
|
|
791
|
+
.get(a, b, b, a);
|
|
792
|
+
return row ?? null;
|
|
793
|
+
}
|
|
794
|
+
// Edge rows matching the given endpoint / status prefilters. `statusIn` is a
|
|
795
|
+
// PREFILTER on the materialized status — the caller must recompute the live
|
|
796
|
+
// aged status and re-filter; passing a conservative superset here is its job.
|
|
797
|
+
export function listDerivesFromEdgeRows(db, filter = {}) {
|
|
798
|
+
const where = [];
|
|
799
|
+
const params = [];
|
|
800
|
+
if (filter.fromPath) {
|
|
801
|
+
where.push("from_path = ?");
|
|
802
|
+
params.push(filter.fromPath);
|
|
803
|
+
}
|
|
804
|
+
if (filter.toPath) {
|
|
805
|
+
where.push("to_path = ?");
|
|
806
|
+
params.push(filter.toPath);
|
|
807
|
+
}
|
|
808
|
+
if (filter.statusIn && filter.statusIn.length > 0) {
|
|
809
|
+
where.push(`status IN (${filter.statusIn.map(() => "?").join(", ")})`);
|
|
810
|
+
params.push(...filter.statusIn);
|
|
811
|
+
}
|
|
812
|
+
const sql = `SELECT * FROM derives_from_edges${where.length ? ` WHERE ${where.join(" AND ")}` : ""}`;
|
|
813
|
+
return db.prepare(sql).all(...params);
|
|
725
814
|
}
|
|
726
815
|
// Drops every edge row. Called at the start of a rebuild so a reindex never
|
|
727
816
|
// leaves rows for edges the jsonl no longer reflects.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-db.js","sourceRoot":"","sources":["../../src/storage/index-db.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-db.js","sourceRoot":"","sources":["../../src/storage/index-db.ts"],"names":[],"mappings":"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"}
|
package/dist/storage/local.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export interface ResolvedVaultPath {
|
|
|
5
5
|
relPath: string;
|
|
6
6
|
}
|
|
7
7
|
export declare function resolveVaultPath(vaultRoot: string, relativePath: string): Result<ResolvedVaultPath, Error>;
|
|
8
|
+
export declare function canonicalVaultRelPath(vaultRoot: string, relativePath: string): Result<string, Error>;
|
|
8
9
|
export declare function directoryExists(path: string): Promise<boolean>;
|
|
9
10
|
export declare function readFile(absolutePath: string): Promise<Result<string, Error>>;
|
|
10
11
|
export declare function listFiles(vaultRoot: string, pattern?: string): Promise<Result<string[], Error>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/storage/local.ts"],"names":[],"mappings":"AAUA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAmD/D,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AAaD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,MAAM,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAsBlC;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOpE;AAED,wBAAsB,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAQnF;AAID,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,EACjB,OAAO,SAAY,GAClB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC,CAkBlC"}
|
|
1
|
+
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/storage/local.ts"],"names":[],"mappings":"AAUA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAmD/D,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AAaD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,MAAM,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAsBlC;AAQD,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAIvB;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOpE;AAED,wBAAsB,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAQnF;AAID,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,EACjB,OAAO,SAAY,GAClB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC,CAkBlC"}
|
package/dist/storage/local.js
CHANGED
|
@@ -88,6 +88,18 @@ export function resolveVaultPath(vaultRoot, relativePath) {
|
|
|
88
88
|
}
|
|
89
89
|
return ok({ absPath: target, relPath: realRel });
|
|
90
90
|
}
|
|
91
|
+
// The realpath-canonical vault-relative form of a caller-supplied path
|
|
92
|
+
// (trimmed), i.e. resolveVaultPath's relPath — the ONLY safe key for
|
|
93
|
+
// looking up provenance, consumes, and read-log entries. Tools that anchor
|
|
94
|
+
// a query on a caller string use this one helper; recomputing the relative
|
|
95
|
+
// lexically diverges from the stored keys under a symlinked vault root
|
|
96
|
+
// (#127/#128).
|
|
97
|
+
export function canonicalVaultRelPath(vaultRoot, relativePath) {
|
|
98
|
+
const resolved = resolveVaultPath(vaultRoot, relativePath.trim());
|
|
99
|
+
if (!resolved.ok)
|
|
100
|
+
return resolved;
|
|
101
|
+
return ok(resolved.value.relPath);
|
|
102
|
+
}
|
|
91
103
|
export async function directoryExists(path) {
|
|
92
104
|
try {
|
|
93
105
|
const s = await stat(path);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/storage/local.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/storage/local.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type Result } from "../frontmatter/types.js";
|
|
2
|
+
import type { StorageBackend } from "./backend.js";
|
|
3
|
+
export declare const MANIFEST_KEY = "meta/manifest.json";
|
|
4
|
+
export interface SyncManifest {
|
|
5
|
+
version: 1;
|
|
6
|
+
files: Record<string, string>;
|
|
7
|
+
}
|
|
8
|
+
export interface SyncSummary {
|
|
9
|
+
uploaded: number;
|
|
10
|
+
deleted: number;
|
|
11
|
+
unchanged: number;
|
|
12
|
+
skippedSymlinks: number;
|
|
13
|
+
bytesUploaded: number;
|
|
14
|
+
}
|
|
15
|
+
export interface SyncOptions {
|
|
16
|
+
dryRun?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare function syncVault(vaultRoot: string, backend: StorageBackend, options?: SyncOptions): Promise<Result<SyncSummary, Error>>;
|
|
19
|
+
export interface RestoreSummary {
|
|
20
|
+
restored: number;
|
|
21
|
+
bytes: number;
|
|
22
|
+
skippedExcluded: number;
|
|
23
|
+
}
|
|
24
|
+
export declare function restoreVault(vaultRoot: string, backend: StorageBackend): Promise<Result<RestoreSummary, Error>>;
|
|
25
|
+
//# sourceMappingURL=sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/storage/sync.ts"],"names":[],"mappings":"AA6BA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAGnD,eAAO,MAAM,YAAY,uBAAuB,CAAC;AAuCjD,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,CAAC,CAAC;IAEX,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;CACvB;AAoID,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAID,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,EACvB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAuDrC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IAId,eAAe,EAAE,MAAM,CAAC;CACzB;AAKD,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAwExC"}
|
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
// The sync engine (#6, spec Decision 3): pushes the canonical local working
|
|
2
|
+
// copy — markdown tree, .git directory, and durable .daftari state — to a
|
|
3
|
+
// storage backend, and can restore a vault from that backing into an empty
|
|
4
|
+
// directory.
|
|
5
|
+
//
|
|
6
|
+
// Key namespace on the backend:
|
|
7
|
+
// tree/<vault-relative-path> file bytes
|
|
8
|
+
// meta/manifest.json what the backing currently holds
|
|
9
|
+
//
|
|
10
|
+
// The manifest (key → sha256) is the remote source of truth for diffing, so
|
|
11
|
+
// sync is stateless locally and incremental: only changed/new keys upload,
|
|
12
|
+
// removed keys delete. The manifest is written LAST — a crashed sync leaves
|
|
13
|
+
// it understating what was pushed, so the next run re-uploads at worst, never
|
|
14
|
+
// skips.
|
|
15
|
+
//
|
|
16
|
+
// What never syncs: the rebuildable SQLite databases (index.db, locks.db and
|
|
17
|
+
// their journals), the process lock, and transient per-cycle staging files.
|
|
18
|
+
// Durable-but-gitignored audit state (read-log, edges, provenance journals)
|
|
19
|
+
// DOES sync — unlike the index it cannot be rebuilt from the markdown.
|
|
20
|
+
//
|
|
21
|
+
// Concurrency note: sync reads the live tree without taking the process
|
|
22
|
+
// lock, so a write racing the walk can capture a torn snapshot (a ref
|
|
23
|
+
// updated mid-copy). That snapshot is repaired by the next run — acceptable
|
|
24
|
+
// for a backup channel, and the price of syncing while the server serves.
|
|
25
|
+
import { createHash } from "node:crypto";
|
|
26
|
+
import { createReadStream } from "node:fs";
|
|
27
|
+
import { mkdir, readdir, readFile, stat, writeFile } from "node:fs/promises";
|
|
28
|
+
import { dirname, isAbsolute, relative, resolve, sep } from "node:path";
|
|
29
|
+
import { err, ok } from "../frontmatter/types.js";
|
|
30
|
+
import { walkFiles } from "./fs-walk.js";
|
|
31
|
+
export const MANIFEST_KEY = "meta/manifest.json";
|
|
32
|
+
const TREE_PREFIX = "tree/";
|
|
33
|
+
const CONCURRENCY = 8;
|
|
34
|
+
// Rebuildable or transient files that must never reach the backing. Everything
|
|
35
|
+
// else under the vault root — including .git and the durable .daftari
|
|
36
|
+
// journals — is part of the backup.
|
|
37
|
+
const SYNC_EXCLUDED = new Set([
|
|
38
|
+
".daftari/process.lock",
|
|
39
|
+
".daftari/index.db",
|
|
40
|
+
".daftari/index.db-journal",
|
|
41
|
+
".daftari/index.db-wal",
|
|
42
|
+
".daftari/index.db-shm",
|
|
43
|
+
".daftari/locks.db",
|
|
44
|
+
".daftari/locks.db-journal",
|
|
45
|
+
".daftari/locks.db-wal",
|
|
46
|
+
".daftari/locks.db-shm",
|
|
47
|
+
".daftari/backfill-plan.jsonl",
|
|
48
|
+
".daftari/wake-queue.jsonl",
|
|
49
|
+
// Its own header calls it "ephemeral cross-session memory … rebuildable:
|
|
50
|
+
// absent OR corrupt ⇒ the empty default" — same class as the wake queue.
|
|
51
|
+
".daftari/consolidate-state.json",
|
|
52
|
+
]);
|
|
53
|
+
function isExcluded(relPath) {
|
|
54
|
+
if (SYNC_EXCLUDED.has(relPath))
|
|
55
|
+
return true;
|
|
56
|
+
// Git EXECUTES what these declare — filter/fsmonitor command lines in
|
|
57
|
+
// config, hook scripts in hooks/ — and a `git clone` deliberately never
|
|
58
|
+
// transmits them from a remote for exactly that reason. Carrying them
|
|
59
|
+
// through the backing would turn backend write access into code execution
|
|
60
|
+
// on the operator's next auto-commit, so they are excluded in BOTH
|
|
61
|
+
// directions; the restore side re-enforces this against a poisoned
|
|
62
|
+
// manifest. After a restore, remotes and local config are re-added by the
|
|
63
|
+
// operator.
|
|
64
|
+
if (relPath === ".git/config" || relPath.startsWith(".git/hooks/"))
|
|
65
|
+
return true;
|
|
66
|
+
// Defensive: a vault should never contain one, but never ship it if it does.
|
|
67
|
+
return relPath.split("/").includes("node_modules");
|
|
68
|
+
}
|
|
69
|
+
// Streaming hash so the walk phase never buffers a whole file — .git is in
|
|
70
|
+
// scope now, and packfiles can dwarf the markdown they version.
|
|
71
|
+
function streamHash(abs) {
|
|
72
|
+
return new Promise((resolveHash, rejectHash) => {
|
|
73
|
+
const digest = createHash("sha256");
|
|
74
|
+
let size = 0;
|
|
75
|
+
const stream = createReadStream(abs);
|
|
76
|
+
stream.on("data", (chunk) => {
|
|
77
|
+
digest.update(chunk);
|
|
78
|
+
size += chunk.length;
|
|
79
|
+
});
|
|
80
|
+
stream.on("error", rejectHash);
|
|
81
|
+
stream.on("end", () => resolveHash({ hash: digest.digest("hex"), size }));
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
// (size, mtime) → hash memo so a periodic sync (`daftari serve`, every N
|
|
85
|
+
// minutes) re-hashes only what actually changed instead of streaming the
|
|
86
|
+
// whole tree — with .git in scope, full-history rehash every tick scales
|
|
87
|
+
// with repo size, not the delta. In-memory on purpose: it lives exactly as
|
|
88
|
+
// long as the serving process, needs no invalidation story across
|
|
89
|
+
// processes, and a one-shot CLI run simply pays the honest full cost.
|
|
90
|
+
const hashMemo = new Map();
|
|
91
|
+
async function hashFile(abs) {
|
|
92
|
+
const s = await stat(abs);
|
|
93
|
+
const memo = hashMemo.get(abs);
|
|
94
|
+
if (memo && memo.size === s.size && memo.mtimeMs === s.mtimeMs) {
|
|
95
|
+
return { hash: memo.hash, size: memo.size };
|
|
96
|
+
}
|
|
97
|
+
const hashed = await streamHash(abs);
|
|
98
|
+
hashMemo.set(abs, { size: hashed.size, mtimeMs: s.mtimeMs, hash: hashed.hash });
|
|
99
|
+
return hashed;
|
|
100
|
+
}
|
|
101
|
+
// Walks the vault tree (dotfiles included — .git is the point), hashing every
|
|
102
|
+
// non-excluded regular file. Symlinks are skipped and counted: an object
|
|
103
|
+
// store has no symlink notion, and following one could escape the vault.
|
|
104
|
+
async function collectLocalState(vaultRoot) {
|
|
105
|
+
const root = resolve(vaultRoot);
|
|
106
|
+
try {
|
|
107
|
+
const walked = await walkFiles(root);
|
|
108
|
+
const candidates = walked.files
|
|
109
|
+
.map((abs) => ({ abs, rel: relative(root, abs).split(sep).join("/") }))
|
|
110
|
+
.filter((c) => !isExcluded(c.rel));
|
|
111
|
+
// Evict memo entries for files that no longer exist under THIS root —
|
|
112
|
+
// without it the memo grows with total churn (git gc repacks, deletes),
|
|
113
|
+
// not live tree size. Scoped to the root so one process syncing several
|
|
114
|
+
// vaults never evicts another vault's entries.
|
|
115
|
+
const live = new Set(candidates.map((c) => c.abs));
|
|
116
|
+
const rootPrefix = root + sep;
|
|
117
|
+
for (const key of hashMemo.keys()) {
|
|
118
|
+
if (key.startsWith(rootPrefix) && !live.has(key))
|
|
119
|
+
hashMemo.delete(key);
|
|
120
|
+
}
|
|
121
|
+
// Hash with the same bounded pool the upload phase uses — the walk now
|
|
122
|
+
// covers .git, and serializing on disk I/O for packfiles wastes time.
|
|
123
|
+
const files = new Array(candidates.length);
|
|
124
|
+
const hashed = await runPool(candidates.map((c, i) => async () => {
|
|
125
|
+
try {
|
|
126
|
+
const { hash, size } = await hashFile(c.abs);
|
|
127
|
+
files[i] = { relPath: c.rel, absPath: c.abs, hash, size };
|
|
128
|
+
return ok(undefined);
|
|
129
|
+
}
|
|
130
|
+
catch (e) {
|
|
131
|
+
return err(new Error(`cannot hash ${c.rel}: ${e instanceof Error ? e.message : String(e)}`));
|
|
132
|
+
}
|
|
133
|
+
}));
|
|
134
|
+
if (!hashed.ok)
|
|
135
|
+
return hashed;
|
|
136
|
+
return ok({ files, skippedSymlinks: walked.symlinks });
|
|
137
|
+
}
|
|
138
|
+
catch (e) {
|
|
139
|
+
return err(new Error(`cannot walk vault: ${e instanceof Error ? e.message : String(e)}`));
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
async function readManifest(backend) {
|
|
143
|
+
const raw = await backend.get(MANIFEST_KEY);
|
|
144
|
+
if (!raw.ok)
|
|
145
|
+
return raw;
|
|
146
|
+
if (raw.value === null)
|
|
147
|
+
return ok({ version: 1, files: {} });
|
|
148
|
+
try {
|
|
149
|
+
const parsed = JSON.parse(raw.value.toString("utf-8"));
|
|
150
|
+
if (parsed.version !== 1 || typeof parsed.files !== "object" || parsed.files === null) {
|
|
151
|
+
return err(new Error(`backing manifest at ${MANIFEST_KEY} has an unknown shape`));
|
|
152
|
+
}
|
|
153
|
+
// Null prototype so a file literally named __proto__ (possible in a git
|
|
154
|
+
// object dir? no — but in the tree, yes) round-trips as an own key.
|
|
155
|
+
const files = Object.create(null);
|
|
156
|
+
for (const [k, v] of Object.entries(parsed.files)) {
|
|
157
|
+
if (typeof v === "string")
|
|
158
|
+
files[k] = v;
|
|
159
|
+
}
|
|
160
|
+
return ok({ version: 1, files });
|
|
161
|
+
}
|
|
162
|
+
catch (e) {
|
|
163
|
+
return err(new Error(`backing manifest is not valid JSON: ${e instanceof Error ? e.message : String(e)}`));
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
// Runs `tasks` with a bounded worker pool, stopping at the first error.
|
|
167
|
+
async function runPool(tasks) {
|
|
168
|
+
let index = 0;
|
|
169
|
+
let failure = null;
|
|
170
|
+
async function worker() {
|
|
171
|
+
while (failure === null) {
|
|
172
|
+
const i = index++;
|
|
173
|
+
const task = tasks[i];
|
|
174
|
+
if (!task)
|
|
175
|
+
return;
|
|
176
|
+
const res = await task();
|
|
177
|
+
if (!res.ok && failure === null)
|
|
178
|
+
failure = res.error;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
await Promise.all(Array.from({ length: Math.min(CONCURRENCY, tasks.length) }, worker));
|
|
182
|
+
return failure ? err(failure) : ok(undefined);
|
|
183
|
+
}
|
|
184
|
+
// Push the working copy to the backend. Incremental against the remote
|
|
185
|
+
// manifest; writes the updated manifest last.
|
|
186
|
+
export async function syncVault(vaultRoot, backend, options = {}) {
|
|
187
|
+
const local = await collectLocalState(vaultRoot);
|
|
188
|
+
if (!local.ok)
|
|
189
|
+
return local;
|
|
190
|
+
const manifest = await readManifest(backend);
|
|
191
|
+
if (!manifest.ok)
|
|
192
|
+
return manifest;
|
|
193
|
+
const remote = manifest.value.files;
|
|
194
|
+
const localByPath = new Map(local.value.files.map((f) => [f.relPath, f]));
|
|
195
|
+
const toUpload = local.value.files.filter((f) => remote[f.relPath] !== f.hash);
|
|
196
|
+
const toDelete = Object.keys(remote).filter((relPath) => !localByPath.has(relPath));
|
|
197
|
+
const unchanged = local.value.files.length - toUpload.length;
|
|
198
|
+
const summary = {
|
|
199
|
+
uploaded: toUpload.length,
|
|
200
|
+
deleted: toDelete.length,
|
|
201
|
+
unchanged,
|
|
202
|
+
skippedSymlinks: local.value.skippedSymlinks,
|
|
203
|
+
bytesUploaded: toUpload.reduce((n, f) => n + f.size, 0),
|
|
204
|
+
};
|
|
205
|
+
if (options.dryRun)
|
|
206
|
+
return ok(summary);
|
|
207
|
+
const uploads = toUpload.map((f) => async () => {
|
|
208
|
+
// Re-read at upload time: the hash was computed during the walk and the
|
|
209
|
+
// manifest must describe the bytes actually pushed, so hash what we send.
|
|
210
|
+
let bytes;
|
|
211
|
+
try {
|
|
212
|
+
bytes = await readFile(f.absPath);
|
|
213
|
+
}
|
|
214
|
+
catch (e) {
|
|
215
|
+
return err(new Error(`cannot read ${f.relPath}: ${e instanceof Error ? e.message : String(e)}`));
|
|
216
|
+
}
|
|
217
|
+
f.hash = createHash("sha256").update(bytes).digest("hex");
|
|
218
|
+
f.size = bytes.byteLength;
|
|
219
|
+
return backend.put(TREE_PREFIX + f.relPath, bytes);
|
|
220
|
+
});
|
|
221
|
+
const uploaded = await runPool(uploads);
|
|
222
|
+
if (!uploaded.ok)
|
|
223
|
+
return uploaded;
|
|
224
|
+
const deletes = toDelete.map((relPath) => () => backend.delete(TREE_PREFIX + relPath));
|
|
225
|
+
const deleted = await runPool(deletes);
|
|
226
|
+
if (!deleted.ok)
|
|
227
|
+
return deleted;
|
|
228
|
+
const nextManifest = { version: 1, files: {} };
|
|
229
|
+
const nextFiles = Object.create(null);
|
|
230
|
+
for (const f of local.value.files)
|
|
231
|
+
nextFiles[f.relPath] = f.hash;
|
|
232
|
+
nextManifest.files = nextFiles;
|
|
233
|
+
const wrote = await backend.put(MANIFEST_KEY, Buffer.from(JSON.stringify(nextManifest, null, 2), "utf-8"));
|
|
234
|
+
if (!wrote.ok)
|
|
235
|
+
return wrote;
|
|
236
|
+
return ok(summary);
|
|
237
|
+
}
|
|
238
|
+
// Restore a vault from the backing into `vaultRoot`, which must be empty or
|
|
239
|
+
// absent — restore never merges into or overwrites live state. After a
|
|
240
|
+
// restore the caller reindexes (the index was deliberately never synced).
|
|
241
|
+
export async function restoreVault(vaultRoot, backend) {
|
|
242
|
+
const root = resolve(vaultRoot);
|
|
243
|
+
try {
|
|
244
|
+
const existing = await readdir(root);
|
|
245
|
+
if (existing.length > 0) {
|
|
246
|
+
return err(new Error(`refusing to restore into non-empty directory: ${root}`));
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
catch (e) {
|
|
250
|
+
if (e.code !== "ENOENT") {
|
|
251
|
+
return err(new Error(`cannot inspect ${root}: ${e instanceof Error ? e.message : String(e)}`));
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
const manifest = await readManifest(backend);
|
|
255
|
+
if (!manifest.ok)
|
|
256
|
+
return manifest;
|
|
257
|
+
// The manifest is data from the backing, not trusted input: re-apply the
|
|
258
|
+
// exclusion rules here so a poisoned manifest cannot smuggle in what push
|
|
259
|
+
// would never have uploaded (git config/hooks — code execution on the
|
|
260
|
+
// next auto-commit).
|
|
261
|
+
const allPaths = Object.keys(manifest.value.files);
|
|
262
|
+
const paths = allPaths.filter((p) => !isExcluded(p));
|
|
263
|
+
const skippedExcluded = allPaths.length - paths.length;
|
|
264
|
+
if (allPaths.length === 0) {
|
|
265
|
+
return err(new Error(`backing at ${backend.id} holds no manifest — nothing to restore`));
|
|
266
|
+
}
|
|
267
|
+
let bytesTotal = 0;
|
|
268
|
+
const tasks = paths.map((relPath) => async () => {
|
|
269
|
+
// Confine each manifest path to the restore root — the manifest is data
|
|
270
|
+
// from the backing, not trusted input.
|
|
271
|
+
const target = resolve(root, relPath);
|
|
272
|
+
const rel = relative(root, target);
|
|
273
|
+
if (rel === "" || rel.startsWith("..") || isAbsolute(rel)) {
|
|
274
|
+
return err(new Error(`manifest path escapes restore root: ${relPath}`));
|
|
275
|
+
}
|
|
276
|
+
const got = await backend.get(TREE_PREFIX + relPath);
|
|
277
|
+
if (!got.ok)
|
|
278
|
+
return got;
|
|
279
|
+
if (got.value === null) {
|
|
280
|
+
return err(new Error(`backing is missing ${TREE_PREFIX}${relPath} listed in its manifest`));
|
|
281
|
+
}
|
|
282
|
+
// Verify the bytes against the manifest's hash — that is what the hash
|
|
283
|
+
// is FOR. This catches corruption, torn writes, and a push racing the
|
|
284
|
+
// restore; it is not a tamper defense (an attacker who can rewrite
|
|
285
|
+
// objects can rewrite the manifest too).
|
|
286
|
+
const gotHash = createHash("sha256").update(got.value).digest("hex");
|
|
287
|
+
const wantHash = manifest.value.files[relPath];
|
|
288
|
+
if (gotHash !== wantHash) {
|
|
289
|
+
return err(new Error(`backing object ${TREE_PREFIX}${relPath} does not match its manifest hash ` +
|
|
290
|
+
`(got ${gotHash.slice(0, 12)}…, manifest says ${wantHash?.slice(0, 12)}…) — ` +
|
|
291
|
+
"the backing is corrupt or a push is racing this restore"));
|
|
292
|
+
}
|
|
293
|
+
try {
|
|
294
|
+
await mkdir(dirname(target), { recursive: true });
|
|
295
|
+
await writeFile(target, got.value);
|
|
296
|
+
}
|
|
297
|
+
catch (e) {
|
|
298
|
+
return err(new Error(`cannot write ${relPath}: ${e instanceof Error ? e.message : String(e)}`));
|
|
299
|
+
}
|
|
300
|
+
bytesTotal += got.value.byteLength;
|
|
301
|
+
return ok(undefined);
|
|
302
|
+
});
|
|
303
|
+
const ran = await runPool(tasks);
|
|
304
|
+
if (!ran.ok)
|
|
305
|
+
return ran;
|
|
306
|
+
return ok({ restored: paths.length, bytes: bytesTotal, skippedExcluded });
|
|
307
|
+
}
|
|
308
|
+
//# sourceMappingURL=sync.js.map
|