daftari 1.29.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 +281 -0
- package/README.md +263 -9
- 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/asof/git-read.d.ts +17 -0
- package/dist/asof/git-read.d.ts.map +1 -0
- package/dist/asof/git-read.js +163 -0
- package/dist/asof/git-read.js.map +1 -0
- package/dist/asof/index.d.ts +2 -0
- package/dist/asof/index.d.ts.map +1 -0
- package/dist/asof/index.js +151 -0
- package/dist/asof/index.js.map +1 -0
- package/dist/asof/report.d.ts +11 -0
- package/dist/asof/report.d.ts.map +1 -0
- package/dist/asof/report.js +119 -0
- package/dist/asof/report.js.map +1 -0
- package/dist/asof/snapshot.d.ts +72 -0
- package/dist/asof/snapshot.d.ts.map +1 -0
- package/dist/asof/snapshot.js +207 -0
- package/dist/asof/snapshot.js.map +1 -0
- 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/apply.js +2 -2
- package/dist/backfill/apply.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/backfill/plan.js +2 -2
- package/dist/backfill/plan.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +36 -0
- package/dist/cli.js.map +1 -1
- package/dist/consolidate/call-budget.d.ts +3 -0
- package/dist/consolidate/call-budget.d.ts.map +1 -0
- package/dist/consolidate/call-budget.js +37 -0
- package/dist/consolidate/call-budget.js.map +1 -0
- package/dist/consolidate/constants.d.ts +1 -0
- package/dist/consolidate/constants.d.ts.map +1 -1
- package/dist/consolidate/constants.js +5 -0
- package/dist/consolidate/constants.js.map +1 -1
- package/dist/consolidate/index.d.ts.map +1 -1
- package/dist/consolidate/index.js +96 -27
- package/dist/consolidate/index.js.map +1 -1
- package/dist/court/docket.d.ts +39 -0
- package/dist/court/docket.d.ts.map +1 -0
- package/dist/court/docket.js +103 -0
- package/dist/court/docket.js.map +1 -0
- package/dist/court/index.d.ts +2 -0
- package/dist/court/index.d.ts.map +1 -0
- package/dist/court/index.js +169 -0
- package/dist/court/index.js.map +1 -0
- package/dist/court/precedent.d.ts +18 -0
- package/dist/court/precedent.d.ts.map +1 -0
- package/dist/court/precedent.js +89 -0
- package/dist/court/precedent.js.map +1 -0
- package/dist/court/report.d.ts +10 -0
- package/dist/court/report.d.ts.map +1 -0
- package/dist/court/report.js +77 -0
- package/dist/court/report.js.map +1 -0
- 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 +117 -30
- package/dist/curation/staged-actions.js.map +1 -1
- package/dist/curation/staleness.js +1 -1
- package/dist/curation/staleness.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-access.d.ts +7 -0
- package/dist/curation/tension-access.d.ts.map +1 -0
- package/dist/curation/tension-access.js +44 -0
- package/dist/curation/tension-access.js.map +1 -0
- package/dist/curation/tension-blast.d.ts +6 -1
- package/dist/curation/tension-blast.d.ts.map +1 -1
- package/dist/curation/tension-blast.js +11 -2
- package/dist/curation/tension-blast.js.map +1 -1
- package/dist/curation/tension-clusters.d.ts +1 -1
- package/dist/curation/tension-clusters.d.ts.map +1 -1
- package/dist/curation/tension-clusters.js +5 -2
- package/dist/curation/tension-clusters.js.map +1 -1
- package/dist/curation/tension.d.ts +6 -2
- package/dist/curation/tension.d.ts.map +1 -1
- package/dist/curation/tension.js +86 -35
- 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 +15 -1
- 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-openrouter.d.ts +9 -0
- package/dist/eval/llm-openrouter.d.ts.map +1 -0
- package/dist/eval/llm-openrouter.js +171 -0
- package/dist/eval/llm-openrouter.js.map +1 -0
- 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/parser.d.ts +1 -0
- package/dist/frontmatter/parser.d.ts.map +1 -1
- package/dist/frontmatter/parser.js +12 -0
- package/dist/frontmatter/parser.js.map +1 -1
- package/dist/frontmatter/schema.d.ts.map +1 -1
- package/dist/frontmatter/schema.js +38 -3
- 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/contested.d.ts +18 -0
- package/dist/search/contested.d.ts.map +1 -0
- package/dist/search/contested.js +119 -0
- package/dist/search/contested.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 +23 -0
- package/dist/search/hybrid.d.ts.map +1 -1
- package/dist/search/hybrid.js +75 -15
- 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 +57 -24
- 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 +23 -12
- 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 +91 -12
- package/dist/server.js.map +1 -1
- package/dist/sleep/cycle.d.ts +59 -0
- package/dist/sleep/cycle.d.ts.map +1 -0
- package/dist/sleep/cycle.js +127 -0
- package/dist/sleep/cycle.js.map +1 -0
- package/dist/sleep/index.d.ts +5 -0
- package/dist/sleep/index.d.ts.map +1 -0
- package/dist/sleep/index.js +320 -0
- package/dist/sleep/index.js.map +1 -0
- package/dist/sleep/report.d.ts +14 -0
- package/dist/sleep/report.d.ts.map +1 -0
- package/dist/sleep/report.js +139 -0
- package/dist/sleep/report.js.map +1 -0
- 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 +18 -0
- package/dist/storage/index-db.d.ts.map +1 -1
- package/dist/storage/index-db.js +159 -22
- package/dist/storage/index-db.js.map +1 -1
- package/dist/storage/local.d.ts +7 -1
- package/dist/storage/local.d.ts.map +1 -1
- package/dist/storage/local.js +42 -4
- 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 +102 -7
- 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 +28 -22
- 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 +144 -31
- package/dist/tools/read.js.map +1 -1
- package/dist/tools/receipt.d.ts +65 -0
- package/dist/tools/receipt.d.ts.map +1 -0
- package/dist/tools/receipt.js +257 -0
- package/dist/tools/receipt.js.map +1 -0
- package/dist/tools/search.d.ts +1 -0
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +186 -12
- 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 +228 -23
- package/dist/tools/staged-actions.js.map +1 -1
- package/dist/tools/themes.d.ts +9 -0
- package/dist/tools/themes.d.ts.map +1 -1
- package/dist/tools/themes.js +333 -133
- 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/witness.d.ts +9 -0
- package/dist/tools/witness.d.ts.map +1 -0
- package/dist/tools/witness.js +66 -0
- package/dist/tools/witness.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 +593 -59
- package/dist/tools/write.js.map +1 -1
- package/dist/utils/config.d.ts +54 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +420 -4
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/paths.d.ts +2 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +15 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/redos.d.ts +2 -0
- package/dist/utils/redos.d.ts.map +1 -0
- package/dist/utils/redos.js +101 -0
- package/dist/utils/redos.js.map +1 -0
- 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 +6 -1
- package/dist/utils/vault-gitignore.js.map +1 -1
- package/dist/witness/track-record.d.ts +42 -0
- package/dist/witness/track-record.d.ts.map +1 -0
- package/dist/witness/track-record.js +189 -0
- package/dist/witness/track-record.js.map +1 -0
- package/package.json +27 -2
- package/templates/config.yaml +8 -0
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
// src/import/langgraph-store.ts
|
|
2
|
+
//
|
|
3
|
+
// `daftari import langgraph-store <vault> --dsn <postgres> [flags]` — read a
|
|
4
|
+
// LangGraph BaseStore (the `store` table langgraph-checkpoint-postgres
|
|
5
|
+
// creates) and derive vault claim notes from its memories. Read-only by
|
|
6
|
+
// construction: the adapter issues a single SELECT and forces the session
|
|
7
|
+
// into read-only mode; there is no write path to the foreign store. The vault
|
|
8
|
+
// side mirrors backfill's two-step UX: --plan previews, --apply writes one
|
|
9
|
+
// commit.
|
|
10
|
+
//
|
|
11
|
+
// Derivation (spec: PLAN-langgraph-adapter Phase 2):
|
|
12
|
+
// semantic memories -> claim notes (one file per store row)
|
|
13
|
+
// episodic memories -> skipped in v1, counted (provenance-only)
|
|
14
|
+
// procedural -> skipped in v1, counted
|
|
15
|
+
// LangMem's default schema stores everything as kind "Memory" with
|
|
16
|
+
// { content: string } — treated as semantic. Unknown shapes are skipped and
|
|
17
|
+
// counted, never guessed at.
|
|
18
|
+
import { mkdirSync } from "node:fs";
|
|
19
|
+
import { writeFile } from "node:fs/promises";
|
|
20
|
+
import { dirname, join } from "node:path";
|
|
21
|
+
import { dump } from "js-yaml";
|
|
22
|
+
import { commit, ensureGitRepo } from "../utils/git.js";
|
|
23
|
+
const ok = (value) => ({ ok: true, value });
|
|
24
|
+
const err = (error) => ({ ok: false, error });
|
|
25
|
+
// ---------------------------------------------------------------- derivation
|
|
26
|
+
// Keep only characters that make stable, portable filenames.
|
|
27
|
+
export function slugifyKey(text) {
|
|
28
|
+
return (text
|
|
29
|
+
.toLowerCase()
|
|
30
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
31
|
+
.replace(/^-+|-+$/g, "")
|
|
32
|
+
.slice(0, 60) || "memory");
|
|
33
|
+
}
|
|
34
|
+
function isoDate(ts) {
|
|
35
|
+
const d = new Date(ts);
|
|
36
|
+
return Number.isNaN(d.getTime())
|
|
37
|
+
? new Date().toISOString().slice(0, 10)
|
|
38
|
+
: d.toISOString().slice(0, 10);
|
|
39
|
+
}
|
|
40
|
+
// LangMem store values look like { kind: "Memory", content: { content: "..." } }.
|
|
41
|
+
// Returns the memory text for semantic rows, or the kind to count as skipped.
|
|
42
|
+
function classify(value) {
|
|
43
|
+
if (typeof value !== "object" || value === null)
|
|
44
|
+
return { kind: "unknown", text: null };
|
|
45
|
+
const v = value;
|
|
46
|
+
const kind = typeof v.kind === "string" ? v.kind : "unknown";
|
|
47
|
+
const lower = kind.toLowerCase();
|
|
48
|
+
if (lower.includes("episod") || lower.includes("procedur"))
|
|
49
|
+
return { kind, text: null };
|
|
50
|
+
const content = v.content;
|
|
51
|
+
if (typeof content === "string")
|
|
52
|
+
return { kind, text: content };
|
|
53
|
+
if (typeof content === "object" && content !== null) {
|
|
54
|
+
const inner = content.content;
|
|
55
|
+
if (typeof inner === "string")
|
|
56
|
+
return { kind, text: inner };
|
|
57
|
+
}
|
|
58
|
+
return { kind, text: null };
|
|
59
|
+
}
|
|
60
|
+
export function deriveNotes(rows, opts) {
|
|
61
|
+
const notes = [];
|
|
62
|
+
const skippedCounts = new Map();
|
|
63
|
+
const byPrefix = {};
|
|
64
|
+
for (const row of rows) {
|
|
65
|
+
const { kind, text } = classify(row.value);
|
|
66
|
+
if (text === null) {
|
|
67
|
+
skippedCounts.set(kind, (skippedCounts.get(kind) ?? 0) + 1);
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
byPrefix[row.prefix] = (byPrefix[row.prefix] ?? 0) + 1;
|
|
71
|
+
const session = row.prefix.split(".").pop() ?? row.prefix;
|
|
72
|
+
const title = text.split(/\s+/).slice(0, 10).join(" ");
|
|
73
|
+
const sourceRef = `langgraph-store:${row.prefix}/${row.key}`;
|
|
74
|
+
const relPath = join(opts.collection, session, `${slugifyKey(title)}--${row.key.slice(0, 8)}.md`);
|
|
75
|
+
const frontmatter = {
|
|
76
|
+
title,
|
|
77
|
+
domain: "accumulation",
|
|
78
|
+
collection: opts.collection,
|
|
79
|
+
status: "draft",
|
|
80
|
+
confidence: "medium",
|
|
81
|
+
created: isoDate(row.created_at),
|
|
82
|
+
updated: isoDate(row.updated_at),
|
|
83
|
+
updated_by: opts.agent,
|
|
84
|
+
provenance: "direct",
|
|
85
|
+
sources: [sourceRef],
|
|
86
|
+
superseded_by: null,
|
|
87
|
+
ttl_days: null,
|
|
88
|
+
tags: ["langgraph-import", `session:${session}`],
|
|
89
|
+
};
|
|
90
|
+
const body = [
|
|
91
|
+
"---",
|
|
92
|
+
dump(frontmatter).trimEnd(),
|
|
93
|
+
"---",
|
|
94
|
+
"",
|
|
95
|
+
text.trim(),
|
|
96
|
+
"",
|
|
97
|
+
"## Provenance",
|
|
98
|
+
"",
|
|
99
|
+
`- **Store:** langgraph \`store\` table (read-only import)`,
|
|
100
|
+
`- **Namespace:** \`${row.prefix}\``,
|
|
101
|
+
`- **Memory id:** \`${row.key}\``,
|
|
102
|
+
`- **Memory kind:** ${kind}`,
|
|
103
|
+
`- **Store created_at:** ${row.created_at}`,
|
|
104
|
+
`- **Store updated_at:** ${row.updated_at}`,
|
|
105
|
+
"",
|
|
106
|
+
].join("\n");
|
|
107
|
+
notes.push({ relPath, title, body, sourceRef, session });
|
|
108
|
+
}
|
|
109
|
+
const skipped = [...skippedCounts.entries()].map(([kind, count]) => ({ kind, count }));
|
|
110
|
+
return { notes, skipped, byPrefix };
|
|
111
|
+
}
|
|
112
|
+
// -------------------------------------------------------------------- store
|
|
113
|
+
// Single parameterized SELECT. The namespace filter matches the prefix itself
|
|
114
|
+
// or any descendant namespace (dot-joined encoding, case-sensitive exact
|
|
115
|
+
// match — mirrors langgraph's own prefix semantics).
|
|
116
|
+
export async function readStoreRows(query, namespace) {
|
|
117
|
+
try {
|
|
118
|
+
const rows = namespace
|
|
119
|
+
? await query("SELECT prefix, key, value, created_at::text, updated_at::text FROM store WHERE prefix = $1 OR prefix LIKE $2 ORDER BY prefix, key", [namespace, `${namespace}.%`])
|
|
120
|
+
: await query("SELECT prefix, key, value, created_at::text, updated_at::text FROM store ORDER BY prefix, key", []);
|
|
121
|
+
return ok(rows);
|
|
122
|
+
}
|
|
123
|
+
catch (e) {
|
|
124
|
+
return err(e instanceof Error ? e : new Error(String(e)));
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// Connects via pg (dynamic import — pg is only needed for this adapter) and
|
|
128
|
+
// hardens the session read-only *in addition to* whatever role the DSN uses.
|
|
129
|
+
// Returns a QueryRunner plus a close function.
|
|
130
|
+
export async function connectReadOnly(dsn) {
|
|
131
|
+
let pg;
|
|
132
|
+
try {
|
|
133
|
+
pg = await import("pg");
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
return err(new Error("the 'pg' package is required for langgraph-store imports — install it with: npm install pg"));
|
|
137
|
+
}
|
|
138
|
+
const client = new pg.default.Client({ connectionString: dsn });
|
|
139
|
+
try {
|
|
140
|
+
await client.connect();
|
|
141
|
+
// Belt and suspenders: even a read-write DSN cannot write through this
|
|
142
|
+
// session. The boundary posture is enforceable, not advisory.
|
|
143
|
+
await client.query("SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY");
|
|
144
|
+
await client.query("SET default_transaction_read_only = on");
|
|
145
|
+
}
|
|
146
|
+
catch (e) {
|
|
147
|
+
await client.end().catch(() => { });
|
|
148
|
+
return err(e instanceof Error ? e : new Error(String(e)));
|
|
149
|
+
}
|
|
150
|
+
const query = async (sql, params) => {
|
|
151
|
+
const res = await client.query(sql, params);
|
|
152
|
+
return res.rows;
|
|
153
|
+
};
|
|
154
|
+
return ok({ query, close: () => client.end() });
|
|
155
|
+
}
|
|
156
|
+
// -------------------------------------------------------------------- runner
|
|
157
|
+
export function renderPlan(plan, opts) {
|
|
158
|
+
const lines = [];
|
|
159
|
+
lines.push(`langgraph-store import plan (dry-run — nothing written)`);
|
|
160
|
+
lines.push(``);
|
|
161
|
+
lines.push(` claim notes to create: ${plan.notes.length}`);
|
|
162
|
+
for (const [prefix, n] of Object.entries(plan.byPrefix)) {
|
|
163
|
+
lines.push(` ${prefix}: ${n}`);
|
|
164
|
+
}
|
|
165
|
+
for (const s of plan.skipped) {
|
|
166
|
+
lines.push(` skipped (${s.kind}): ${s.count} — not compiled in v1, logged only`);
|
|
167
|
+
}
|
|
168
|
+
if (plan.notes.length > 0) {
|
|
169
|
+
lines.push(``);
|
|
170
|
+
lines.push(` sample:`);
|
|
171
|
+
for (const note of plan.notes.slice(0, 5)) {
|
|
172
|
+
lines.push(` ${note.relPath}`);
|
|
173
|
+
}
|
|
174
|
+
lines.push(``);
|
|
175
|
+
lines.push(` apply with:`);
|
|
176
|
+
lines.push(` daftari import langgraph-store <vault> --dsn <dsn> --apply${opts.namespace ? ` --namespace ${opts.namespace}` : ""} --yes`);
|
|
177
|
+
}
|
|
178
|
+
return `${lines.join("\n")}\n`;
|
|
179
|
+
}
|
|
180
|
+
// CLI entry: parses langgraph-store-specific flags and orchestrates
|
|
181
|
+
// plan/apply. `vault` has already been resolved and existence-checked by
|
|
182
|
+
// runImport. Returns a process exit code.
|
|
183
|
+
export async function runLanggraphImport(vaultRoot, argv) {
|
|
184
|
+
let dsn;
|
|
185
|
+
let namespace;
|
|
186
|
+
let collection = "langgraph";
|
|
187
|
+
let agent = `human:${process.env.USER ?? "unknown"}`;
|
|
188
|
+
let apply = false;
|
|
189
|
+
let plan = false;
|
|
190
|
+
let yes = false;
|
|
191
|
+
for (let i = 0; i < argv.length; i++) {
|
|
192
|
+
const a = argv[i];
|
|
193
|
+
if (a === "--dsn")
|
|
194
|
+
dsn = argv[++i];
|
|
195
|
+
else if (a.startsWith("--dsn="))
|
|
196
|
+
dsn = a.slice(6);
|
|
197
|
+
else if (a === "--namespace")
|
|
198
|
+
namespace = argv[++i];
|
|
199
|
+
else if (a.startsWith("--namespace="))
|
|
200
|
+
namespace = a.slice(12);
|
|
201
|
+
else if (a === "--collection")
|
|
202
|
+
collection = argv[++i] ?? collection;
|
|
203
|
+
else if (a.startsWith("--collection="))
|
|
204
|
+
collection = a.slice(13);
|
|
205
|
+
else if (a === "--agent")
|
|
206
|
+
agent = argv[++i] ?? agent;
|
|
207
|
+
else if (a.startsWith("--agent="))
|
|
208
|
+
agent = a.slice(8);
|
|
209
|
+
else if (a === "--apply")
|
|
210
|
+
apply = true;
|
|
211
|
+
else if (a === "--plan")
|
|
212
|
+
plan = true;
|
|
213
|
+
else if (a === "--yes")
|
|
214
|
+
yes = true;
|
|
215
|
+
else {
|
|
216
|
+
process.stderr.write(`daftari import langgraph-store: unknown flag '${a}'\n`);
|
|
217
|
+
return 1;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
if (!dsn) {
|
|
221
|
+
process.stderr.write("daftari import langgraph-store: --dsn <postgres-url> is required\n");
|
|
222
|
+
return 1;
|
|
223
|
+
}
|
|
224
|
+
if (plan === apply) {
|
|
225
|
+
process.stderr.write("daftari import langgraph-store: pass exactly one of --plan or --apply\n");
|
|
226
|
+
return 1;
|
|
227
|
+
}
|
|
228
|
+
if (apply && !yes) {
|
|
229
|
+
process.stderr.write("daftari import langgraph-store: --apply writes notes and commits — confirm with --yes\n");
|
|
230
|
+
return 1;
|
|
231
|
+
}
|
|
232
|
+
const conn = await connectReadOnly(dsn);
|
|
233
|
+
if (!conn.ok) {
|
|
234
|
+
process.stderr.write(`daftari import langgraph-store: ${conn.error.message}\n`);
|
|
235
|
+
return 1;
|
|
236
|
+
}
|
|
237
|
+
try {
|
|
238
|
+
const rows = await readStoreRows(conn.value.query, namespace);
|
|
239
|
+
if (!rows.ok) {
|
|
240
|
+
process.stderr.write(`daftari import langgraph-store: ${rows.error.message}\n`);
|
|
241
|
+
return 1;
|
|
242
|
+
}
|
|
243
|
+
const opts = {
|
|
244
|
+
vaultRoot,
|
|
245
|
+
dsn,
|
|
246
|
+
namespace,
|
|
247
|
+
collection,
|
|
248
|
+
agent,
|
|
249
|
+
apply,
|
|
250
|
+
yes,
|
|
251
|
+
};
|
|
252
|
+
const derived = deriveNotes(rows.value, opts);
|
|
253
|
+
if (!apply) {
|
|
254
|
+
process.stdout.write(renderPlan(derived, opts));
|
|
255
|
+
return 0;
|
|
256
|
+
}
|
|
257
|
+
const result = await applyPlan(derived, opts);
|
|
258
|
+
if (!result.ok) {
|
|
259
|
+
process.stderr.write(`daftari import langgraph-store: ${result.error.message}\n`);
|
|
260
|
+
return 1;
|
|
261
|
+
}
|
|
262
|
+
process.stdout.write(`langgraph-store import: wrote ${result.value.written} claim notes` +
|
|
263
|
+
(result.value.commit ? ` (commit ${result.value.commit})` : "") +
|
|
264
|
+
"\n");
|
|
265
|
+
for (const s of derived.skipped) {
|
|
266
|
+
process.stdout.write(` skipped (${s.kind}): ${s.count} — not compiled in v1\n`);
|
|
267
|
+
}
|
|
268
|
+
return 0;
|
|
269
|
+
}
|
|
270
|
+
finally {
|
|
271
|
+
await conn.value.close();
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
export async function applyPlan(plan, opts) {
|
|
275
|
+
const ensured = await ensureGitRepo(opts.vaultRoot);
|
|
276
|
+
if (!ensured.ok)
|
|
277
|
+
return err(ensured.error);
|
|
278
|
+
const relPaths = [];
|
|
279
|
+
for (const note of plan.notes) {
|
|
280
|
+
const abs = join(opts.vaultRoot, note.relPath);
|
|
281
|
+
mkdirSync(dirname(abs), { recursive: true });
|
|
282
|
+
await writeFile(abs, note.body, "utf-8");
|
|
283
|
+
relPaths.push(note.relPath);
|
|
284
|
+
}
|
|
285
|
+
if (relPaths.length === 0)
|
|
286
|
+
return ok({ written: 0, commit: null });
|
|
287
|
+
const committed = await commit(opts.vaultRoot, relPaths, `import(langgraph-store): ${relPaths.length} memories${opts.namespace ? ` from ${opts.namespace}` : ""}`, opts.agent);
|
|
288
|
+
if (!committed.ok)
|
|
289
|
+
return err(committed.error);
|
|
290
|
+
return ok({ written: relPaths.length, commit: committed.value.hash });
|
|
291
|
+
}
|
|
292
|
+
//# sourceMappingURL=langgraph-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"langgraph-store.js","sourceRoot":"","sources":["../../src/import/langgraph-store.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
export declare function parseFlag(argv: string[], name: string): string | null;
|
|
2
2
|
export declare function parseVaultArg(argv: string[]): string | null;
|
|
3
3
|
export declare function main(argv?: string[]): Promise<void>;
|
|
4
|
+
export declare function startVaultServices(vaultRoot: string, opts: {
|
|
5
|
+
warmEmbeddings: boolean;
|
|
6
|
+
watch: boolean;
|
|
7
|
+
}): Promise<void>;
|
|
8
|
+
export declare function installShutdownHandlers(vaultRoot: string, extra?: () => void): void;
|
|
4
9
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA+CA,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CASrE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAE3D;AAED,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAiIhF;AAOD,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE;IAAE,cAAc,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAChD,OAAO,CAAC,IAAI,CAAC,CA2Cf;AAiBD,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,CAanF"}
|
package/dist/index.js
CHANGED
|
@@ -24,12 +24,13 @@ import { markIndexError, markIndexing, markIndexReady, setIndexProgress, } from
|
|
|
24
24
|
import { isIndexFresh, reindexVault, reindexWarnings, } from "./search/reindex.js";
|
|
25
25
|
import { setProvider, warmModel } from "./search/vector.js";
|
|
26
26
|
import { startWatcher } from "./search/watcher.js";
|
|
27
|
-
import { createServer } from "./server.js";
|
|
27
|
+
import { createServer, resolveToolExposure, SERVER_VERSION } from "./server.js";
|
|
28
28
|
import { directoryExists } from "./storage/local.js";
|
|
29
|
-
import { loadConfig } from "./utils/config.js";
|
|
30
|
-
//
|
|
31
|
-
//
|
|
32
|
-
|
|
29
|
+
import { loadConfig, TOOL_TIERS } from "./utils/config.js";
|
|
30
|
+
// Read from package.json (via server.ts) so it can never drift from the
|
|
31
|
+
// published version. Surfaced in the process lockfile for operator
|
|
32
|
+
// diagnostics.
|
|
33
|
+
const DAFTARI_VERSION = SERVER_VERSION;
|
|
33
34
|
// Reads `--name value` or `--name=value` from argv; null if absent.
|
|
34
35
|
export function parseFlag(argv, name) {
|
|
35
36
|
const flag = `--${name}`;
|
|
@@ -59,9 +60,10 @@ export async function main(argv = process.argv.slice(2)) {
|
|
|
59
60
|
return;
|
|
60
61
|
}
|
|
61
62
|
// Acquire the per-vault process lock BEFORE any heavy work. If another
|
|
62
|
-
// daftari is holding this vault, SIGTERM it and wait briefly for it
|
|
63
|
-
// exit
|
|
64
|
-
|
|
63
|
+
// stdio daftari is holding this vault, SIGTERM it and wait briefly for it
|
|
64
|
+
// to exit; a live `daftari serve` holder REFUSES the takeover (#5 spec
|
|
65
|
+
// Decision 4). See docs/superpowers/plans/2026-05-20-process-lockfile.md.
|
|
66
|
+
const lockResult = await acquireLock(vaultRoot, DAFTARI_VERSION, { mode: "stdio" });
|
|
65
67
|
if (!lockResult.ok) {
|
|
66
68
|
process.stderr.write(`daftari: failed to acquire vault lock: ${lockResult.error.message}\n`);
|
|
67
69
|
process.exitCode = 1;
|
|
@@ -100,6 +102,23 @@ export async function main(argv = process.argv.slice(2)) {
|
|
|
100
102
|
if (access.role === null && roleName !== GUEST_ROLE) {
|
|
101
103
|
process.stderr.write(`daftari: warning: role '${roleName}' not found in config — running as deny-all guest\n`);
|
|
102
104
|
}
|
|
105
|
+
// Tool exposure (#103/#104): config `tools` block, with --tools overriding
|
|
106
|
+
// the TIER for this invocation only (include/exclude still apply). An
|
|
107
|
+
// unknown --tools value fails loud like any malformed config; unknown tool
|
|
108
|
+
// NAMES in include/exclude only warn — they may name a future tool.
|
|
109
|
+
const tierFlag = parseFlag(argv, "tools");
|
|
110
|
+
let toolsConfig = config.value.tools;
|
|
111
|
+
if (tierFlag !== null) {
|
|
112
|
+
if (!TOOL_TIERS.includes(tierFlag)) {
|
|
113
|
+
process.stderr.write(`daftari: invalid --tools value '${tierFlag}' (expected one of ${TOOL_TIERS.join(", ")})\n`);
|
|
114
|
+
process.exitCode = 1;
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
toolsConfig = { ...toolsConfig, tier: tierFlag };
|
|
118
|
+
}
|
|
119
|
+
for (const name of resolveToolExposure(toolsConfig).unknown) {
|
|
120
|
+
process.stderr.write(`daftari: warning: tools.include/exclude names unknown tool '${name}' — ignored\n`);
|
|
121
|
+
}
|
|
103
122
|
// The persisted index is a derived cache: if every file on disk matches the
|
|
104
123
|
// manifest written by the last reindex, the on-disk index already reflects
|
|
105
124
|
// the vault and we can skip the embedding pass entirely (~25 min on a
|
|
@@ -130,11 +149,22 @@ export async function main(argv = process.argv.slice(2)) {
|
|
|
130
149
|
// `tools/list` immediately. Indexing — if needed — runs as a background
|
|
131
150
|
// task; tools that depend on the index will respond "still indexing" until
|
|
132
151
|
// it completes.
|
|
133
|
-
const server = createServer(vaultRoot, access);
|
|
152
|
+
const server = createServer(vaultRoot, access, toolsConfig);
|
|
134
153
|
const transport = new StdioServerTransport();
|
|
135
154
|
await server.connect(transport);
|
|
136
155
|
process.stderr.write(`daftari: serving vault at ${vaultRoot} (stdio) — ` +
|
|
137
156
|
`user=${access.user} role=${access.roleName}\n`);
|
|
157
|
+
await startVaultServices(vaultRoot, {
|
|
158
|
+
warmEmbeddings: config.value.warmEmbeddings,
|
|
159
|
+
watch: config.value.watch,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
// The index/watcher bootstrap shared by stdio main() and `daftari serve`
|
|
163
|
+
// (#5): freshness check, cheap jsonl re-materialization on the fresh path,
|
|
164
|
+
// background reindex otherwise, watcher start either way. Returns once the
|
|
165
|
+
// FOREGROUND work is done — the reindex itself runs on unawaited in the
|
|
166
|
+
// background, alongside the live transport.
|
|
167
|
+
export async function startVaultServices(vaultRoot, opts) {
|
|
138
168
|
const fresh = await isIndexFresh(vaultRoot);
|
|
139
169
|
if (fresh) {
|
|
140
170
|
process.stderr.write(`daftari: index is up to date — skipping reindex\n`);
|
|
@@ -158,19 +188,19 @@ export async function main(argv = process.argv.slice(2)) {
|
|
|
158
188
|
// the model is still cold. Warm it in the background (if config allows)
|
|
159
189
|
// so the first user search does not pay the ~500ms cold start. Then
|
|
160
190
|
// start the watcher to catch out-of-band edits going forward.
|
|
161
|
-
if (
|
|
191
|
+
if (opts.warmEmbeddings) {
|
|
162
192
|
void runBackgroundWarm();
|
|
163
193
|
}
|
|
164
|
-
maybeStartWatcher(vaultRoot,
|
|
194
|
+
maybeStartWatcher(vaultRoot, opts.watch);
|
|
165
195
|
return;
|
|
166
196
|
}
|
|
167
|
-
// Background reindex. The promise is intentionally not awaited —
|
|
168
|
-
// returns once the transport is up, and the indexing pass runs to
|
|
197
|
+
// Background reindex. The promise is intentionally not awaited — the
|
|
198
|
+
// caller returns once the transport is up, and the indexing pass runs to
|
|
169
199
|
// completion alongside the live server.
|
|
170
200
|
markIndexing();
|
|
171
201
|
process.stderr.write(`daftari: starting background reindex…\n`);
|
|
172
|
-
void runBackgroundReindex(vaultRoot,
|
|
173
|
-
maybeStartWatcher(vaultRoot,
|
|
202
|
+
void runBackgroundReindex(vaultRoot, opts.warmEmbeddings, () => {
|
|
203
|
+
maybeStartWatcher(vaultRoot, opts.watch);
|
|
174
204
|
});
|
|
175
205
|
}
|
|
176
206
|
// Reference held so a SIGTERM / SIGINT can close the watcher cleanly. One
|
|
@@ -184,13 +214,17 @@ let activeWatcher = null;
|
|
|
184
214
|
// drains, Node emits 'exit', the registered listener releases.
|
|
185
215
|
// The 'exit' listener is sync-only (Node guarantees the loop is closed by
|
|
186
216
|
// then), which is why releaseLock is sync.
|
|
187
|
-
|
|
217
|
+
//
|
|
218
|
+
// `extra` (#5): serve registers its own teardown (close the HTTP listener
|
|
219
|
+
// and every live session) to run before the lock releases.
|
|
220
|
+
export function installShutdownHandlers(vaultRoot, extra) {
|
|
188
221
|
const onShutdown = () => {
|
|
189
222
|
if (activeWatcher) {
|
|
190
223
|
const w = activeWatcher;
|
|
191
224
|
activeWatcher = null;
|
|
192
225
|
void w.close();
|
|
193
226
|
}
|
|
227
|
+
extra?.();
|
|
194
228
|
releaseLock(vaultRoot);
|
|
195
229
|
};
|
|
196
230
|
process.once("SIGTERM", onShutdown);
|
|
@@ -237,8 +271,12 @@ async function runBackgroundReindex(vaultRoot, warmEmbeddings, onDone) {
|
|
|
237
271
|
// If the reindex was fully cache-hit (no chunks needed embedding) the
|
|
238
272
|
// model was never loaded — warm it now so the first user search isn't
|
|
239
273
|
// a cold start. A reindex that did embed already loaded the model; no
|
|
240
|
-
// extra warm is necessary in that path.
|
|
241
|
-
|
|
274
|
+
// extra warm is necessary in that path. embeddedCount is the COMMITTED
|
|
275
|
+
// count (#54), so 0 alone no longer proves the model was never invoked:
|
|
276
|
+
// a first-batch embed failure also banks nothing. That failure path
|
|
277
|
+
// drops vectorEnabled, so gate on it — warming a provider that just
|
|
278
|
+
// failed would fail the same way.
|
|
279
|
+
if (warmEmbeddings && r.vectorEnabled && r.embeddedCount === 0) {
|
|
242
280
|
void runBackgroundWarm();
|
|
243
281
|
}
|
|
244
282
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,EAAE;AACF,+EAA+E;AAC/E,2EAA2E;AAC3E,+EAA+E;AAC/E,qDAAqD;AACrD,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,iEAAiE;AACjE,uEAAuE;AACvE,4BAA4B;AAC5B,EAAE;AACF,2EAA2E;AAC3E,oBAAoB;AAEpB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EACL,cAAc,EACd,YAAY,EACZ,cAAc,EACd,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,YAAY,EAEZ,YAAY,EACZ,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAqB,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAiB,MAAM,mBAAmB,CAAC;AAE1E,wEAAwE;AACxE,mEAAmE;AACnE,eAAe;AACf,MAAM,eAAe,GAAG,cAAc,CAAC;AAEvC,oEAAoE;AACpE,MAAM,UAAU,SAAS,CAAC,IAAc,EAAE,IAAY;IACpD,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;IACzB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,SAAS,KAAK,CAAC,CAAC,IAAI,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACpD,OAAO,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;IACrC,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;IAC1D,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IACnD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAc;IAC1C,OAAO,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,OAAiB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;QAC5E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpC,IAAI,CAAC,CAAC,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,SAAS,IAAI,CAAC,CAAC;QAC3E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,uEAAuE;IACvE,0EAA0E;IAC1E,uEAAuE;IACvE,0EAA0E;IAC1E,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,SAAS,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACpF,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;QACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,UAAU,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;QAC7F,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,wEAAwE;IACxE,wDAAwD;IACxD,uBAAuB,CAAC,SAAS,CAAC,CAAC;IAEnC,2EAA2E;IAC3E,2DAA2D;IAC3D,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;QAC3D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,oEAAoE;IACpE,wEAAwE;IACxE,sEAAsE;IACtE,uEAAuE;IACvE,qBAAqB;IACrB,IAAI,CAAC;QACH,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,MAAM,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,MAAM,IAAI,CAAC,CAAC;QAC7C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,qEAAqE;IACrE,8DAA8D;IAC9D,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,OAAO,CAAC;IAChD,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,UAAU,CAAC;IACvD,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3D,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;QACpD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,2BAA2B,QAAQ,qDAAqD,CACzF,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,sEAAsE;IACtE,2EAA2E;IAC3E,oEAAoE;IACpE,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1C,IAAI,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;IACrC,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,IAAI,CAAE,UAAgC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1D,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mCAAmC,QAAQ,sBAAsB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAC5F,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,WAAW,GAAG,EAAE,GAAG,WAAW,EAAE,IAAI,EAAE,QAAoB,EAAE,CAAC;IAC/D,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,mBAAmB,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;QAC5D,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,+DAA+D,IAAI,eAAe,CACnF,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,2EAA2E;IAC3E,sEAAsE;IACtE,0EAA0E;IAC1E,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAEhD,yEAAyE;IACzE,wEAAwE;IACxE,qCAAqC;IACrC,IAAI,YAAY,EAAE,CAAC;QACjB,YAAY,EAAE,CAAC;QACf,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,oBAAoB,EAAE,CAAC,CAAC;QACxE,IAAI,SAAS,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC;YAC1B,cAAc,EAAE,CAAC;YACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,oBAAoB,CAAC,CAAC,aAAa,UAAU,CAAC,CAAC,UAAU,UAAU;gBACjE,YAAY,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAClD,CAAC;YACF,KAAK,MAAM,IAAI,IAAI,eAAe,CAAC,CAAC,CAAC;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI,CAAC,CAAC;QAC7F,CAAC;aAAM,CAAC;YACN,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,SAAS,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;YAC3F,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;QACD,OAAO;IACT,CAAC;IAED,qEAAqE;IACrE,wEAAwE;IACxE,2EAA2E;IAC3E,gBAAgB;IAChB,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,6BAA6B,SAAS,aAAa;QACjD,QAAQ,MAAM,CAAC,IAAI,SAAS,MAAM,CAAC,QAAQ,IAAI,CAClD,CAAC;IAEF,MAAM,kBAAkB,CAAC,SAAS,EAAE;QAClC,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc;QAC3C,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK;KAC1B,CAAC,CAAC;AACL,CAAC;AAED,yEAAyE;AACzE,2EAA2E;AAC3E,2EAA2E;AAC3E,wEAAwE;AACxE,4CAA4C;AAC5C,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,SAAiB,EACjB,IAAiD;IAEjD,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC;IAC5C,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QAC1E,cAAc,EAAE,CAAC;QACjB,mEAAmE;QACnE,uEAAuE;QACvE,mEAAmE;QACnE,wEAAwE;QACxE,6DAA6D;QAC7D,MAAM,YAAY,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;QACzD,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;YACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,6DAA6D,YAAY,CAAC,KAAK,CAAC,OAAO,IAAI,CAC5F,CAAC;QACJ,CAAC;QACD,yEAAyE;QACzE,6DAA6D;QAC7D,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC;YAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,2DAA2D,iBAAiB,CAAC,KAAK,CAAC,OAAO,IAAI,CAC/F,CAAC;QACJ,CAAC;QACD,yEAAyE;QACzE,wEAAwE;QACxE,oEAAoE;QACpE,8DAA8D;QAC9D,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,KAAK,iBAAiB,EAAE,CAAC;QAC3B,CAAC;QACD,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,OAAO;IACT,CAAC;IAED,qEAAqE;IACrE,yEAAyE;IACzE,wCAAwC;IACxC,YAAY,EAAE,CAAC;IACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAChE,KAAK,oBAAoB,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE;QAC7D,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,0EAA0E;AAC1E,oEAAoE;AACpE,IAAI,aAAa,GAAwB,IAAI,CAAC;AAE9C,2EAA2E;AAC3E,+BAA+B;AAC/B,uEAAuE;AACvE,qEAAqE;AACrE,0EAA0E;AAC1E,mEAAmE;AACnE,0EAA0E;AAC1E,2CAA2C;AAC3C,EAAE;AACF,0EAA0E;AAC1E,2DAA2D;AAC3D,MAAM,UAAU,uBAAuB,CAAC,SAAiB,EAAE,KAAkB;IAC3E,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,CAAC,GAAG,aAAa,CAAC;YACxB,aAAa,GAAG,IAAI,CAAC;YACrB,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;QACD,KAAK,EAAE,EAAE,CAAC;QACV,WAAW,CAAC,SAAS,CAAC,CAAC;IACzB,CAAC,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACpC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACnC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,2EAA2E;AAC3E,4EAA4E;AAC5E,4EAA4E;AAC5E,gCAAgC;AAChC,SAAS,iBAAiB,CAAC,SAAiB,EAAE,YAAqB;IACjE,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;QACnF,OAAO;IACT,CAAC;IACD,IAAI,aAAa;QAAE,OAAO;IAC1B,aAAa,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;AAC1E,CAAC;AAED,4EAA4E;AAC5E,2EAA2E;AAC3E,6EAA6E;AAC7E,mEAAmE;AACnE,KAAK,UAAU,iBAAiB;IAC9B,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IACjC,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;IAC7E,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+CAA+C,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAChG,CAAC;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,SAAiB,EACjB,cAAuB,EACvB,MAAmB;IAEnB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,oBAAoB,EAAE,CAAC,CAAC;QACxE,IAAI,SAAS,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC;YAC1B,cAAc,EAAE,CAAC;YACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,oBAAoB,CAAC,CAAC,aAAa,UAAU,CAAC,CAAC,UAAU,UAAU;gBACjE,YAAY,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAClD,CAAC;YACF,KAAK,MAAM,IAAI,IAAI,eAAe,CAAC,CAAC,CAAC;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI,CAAC,CAAC;YAC3F,sEAAsE;YACtE,sEAAsE;YACtE,sEAAsE;YACtE,uEAAuE;YACvE,wEAAwE;YACxE,oEAAoE;YACpE,oEAAoE;YACpE,kCAAkC;YAClC,IAAI,cAAc,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC;gBAC/D,KAAK,iBAAiB,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,oDAAoD,SAAS,CAAC,KAAK,CAAC,OAAO,IAAI,CAChF,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,MAAM,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvE,cAAc,CAAC,MAAM,CAAC,CAAC;QACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iDAAiD,MAAM,IAAI,CAAC,CAAC;IACpF,CAAC;YAAS,CAAC;QACT,oEAAoE;QACpE,kEAAkE;QAClE,6DAA6D;QAC7D,iEAAiE;QACjE,8BAA8B;QAC9B,MAAM,EAAE,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAED,uEAAuE;AACvE,0EAA0E;AAC1E,4EAA4E;AAC5E,6EAA6E;AAC7E,uCAAuC;AACvC,SAAS,oBAAoB;IAC3B,MAAM,SAAS,GAAG,IAAI,CAAC;IACvB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,OAAO;QACL,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC1B,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC9B,IAAI,KAAK,KAAK,CAAC;gBAAE,OAAO;YACxB,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC;gBACrE,IAAI,IAAI,KAAK,KAAK;oBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC/C,OAAO;YACT,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;YAC3B,IAAI,KAAK,IAAI,YAAY,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;gBAC5C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,IAAI,IAAI,KAAK,WAAW,CAAC,CAAC;gBACrE,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;YAC/D,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,uEAAuE;AACvE,qEAAqE;AACrE,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAC3D,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;IACjC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QACjB,MAAM,MAAM,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,MAAM,IAAI,CAAC,CAAC;QACpD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/lifecycle/lock.d.ts
CHANGED
|
@@ -1,15 +1,23 @@
|
|
|
1
1
|
import { type Result } from "../frontmatter/types.js";
|
|
2
|
+
export type LockMode = "stdio" | "serve";
|
|
2
3
|
export type LockData = {
|
|
3
4
|
daftari: true;
|
|
4
5
|
pid: number;
|
|
5
6
|
vaultRoot: string;
|
|
6
7
|
startedAt: string;
|
|
7
8
|
version: string;
|
|
9
|
+
mode?: LockMode;
|
|
10
|
+
bind?: string;
|
|
8
11
|
};
|
|
9
12
|
export declare function readLockfile(vaultRoot: string): Result<LockData | null, Error>;
|
|
10
13
|
export declare function writeLockfile(vaultRoot: string, data: LockData): Result<void, Error>;
|
|
11
14
|
export declare function isProcessAlive(pid: number): boolean;
|
|
12
15
|
export declare function isDaftariProcess(pid: number, vaultRoot: string): boolean;
|
|
13
|
-
export
|
|
16
|
+
export interface AcquireLockOptions {
|
|
17
|
+
mode?: LockMode;
|
|
18
|
+
bind?: string;
|
|
19
|
+
takeover?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare function acquireLock(vaultRoot: string, version: string, options?: AcquireLockOptions): Promise<Result<void, Error>>;
|
|
14
22
|
export declare function releaseLock(vaultRoot: string): void;
|
|
15
23
|
//# sourceMappingURL=lock.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../src/lifecycle/lock.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../src/lifecycle/lock.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAI/D,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;AAEzC,MAAM,MAAM,QAAQ,GAAG;IACrB,OAAO,EAAE,IAAI,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAGhB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAMF,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,QAAQ,GAAG,IAAI,EAAE,KAAK,CAAC,CAmB9E;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAQpF;AAKD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAQnD;AAaD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAYxE;AAoCD,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IAGd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAqBD,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAsE9B;AAMD,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CASnD"}
|
package/dist/lifecycle/lock.js
CHANGED
|
@@ -115,23 +115,35 @@ function tryCreateExclusive(vaultRoot, data) {
|
|
|
115
115
|
return err(errno);
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
|
-
// Acquire the per-vault process lock. Behavior
|
|
118
|
+
// Acquire the per-vault process lock. Behavior (#52, amended by #5 spec
|
|
119
|
+
// 2026-07-20 Decision 4):
|
|
119
120
|
// - No existing lock → atomic O_EXCL create, return ok.
|
|
120
|
-
// - Existing lock with dead PID → stale, overwrite.
|
|
121
|
+
// - Existing lock with dead PID → stale, overwrite (every mode).
|
|
121
122
|
// - Existing lock with live PID that does not look like a daftari for this
|
|
122
|
-
// vault (PID recycled) → stale, overwrite.
|
|
123
|
-
// -
|
|
124
|
-
//
|
|
125
|
-
//
|
|
123
|
+
// vault (PID recycled) → stale, overwrite (every mode).
|
|
124
|
+
// - LIVE daftari holder — precedence favors the durable tenant:
|
|
125
|
+
// stdio finding stdio → SIGTERM-and-wait takeover (the
|
|
126
|
+
// single-user convenience, unchanged).
|
|
127
|
+
// stdio finding serve → REFUSE, naming the server and the
|
|
128
|
+
// remedy. Never SIGTERMs a serve holder.
|
|
129
|
+
// serve finding stdio or serve → REFUSE unless --takeover: a server
|
|
130
|
+
// deployment must not silently kill a
|
|
131
|
+
// live desktop session, and a
|
|
132
|
+
// double-start must not bounce every
|
|
133
|
+
// session. With takeover, SIGTERM-and-
|
|
134
|
+
// wait against either holder mode.
|
|
126
135
|
//
|
|
127
136
|
// Logs go to stderr (MCP convention; stdout is reserved for JSON-RPC).
|
|
128
|
-
export async function acquireLock(vaultRoot, version) {
|
|
137
|
+
export async function acquireLock(vaultRoot, version, options = {}) {
|
|
138
|
+
const mode = options.mode ?? "stdio";
|
|
129
139
|
const our = {
|
|
130
140
|
daftari: true,
|
|
131
141
|
pid: process.pid,
|
|
132
142
|
vaultRoot,
|
|
133
143
|
startedAt: new Date().toISOString(),
|
|
134
144
|
version,
|
|
145
|
+
mode,
|
|
146
|
+
...(options.bind ? { bind: options.bind } : {}),
|
|
135
147
|
};
|
|
136
148
|
const created = tryCreateExclusive(vaultRoot, our);
|
|
137
149
|
if (!created.ok)
|
|
@@ -144,8 +156,21 @@ export async function acquireLock(vaultRoot, version) {
|
|
|
144
156
|
if (existing.value !== null) {
|
|
145
157
|
const prior = existing.value;
|
|
146
158
|
if (isDaftariProcess(prior.pid, vaultRoot)) {
|
|
147
|
-
|
|
148
|
-
|
|
159
|
+
const priorMode = prior.mode ?? "stdio";
|
|
160
|
+
const holder = `pid=${prior.pid}, mode=${priorMode}, started=${prior.startedAt}` +
|
|
161
|
+
(prior.bind ? `, bind=${prior.bind}` : "");
|
|
162
|
+
if (mode === "stdio" && priorMode === "serve") {
|
|
163
|
+
return err(new Error(`this vault is held by a live daftari serve (${holder}). ` +
|
|
164
|
+
`Connect to it over HTTP instead, or stop the server ` +
|
|
165
|
+
`deliberately (or replace it with 'daftari serve --takeover').`));
|
|
166
|
+
}
|
|
167
|
+
if (mode === "serve" && !options.takeover) {
|
|
168
|
+
return err(new Error(`this vault is held by a live daftari instance (${holder}). ` +
|
|
169
|
+
`A server start never silently replaces a live holder; ` +
|
|
170
|
+
`re-run with --takeover to replace it deliberately.`));
|
|
171
|
+
}
|
|
172
|
+
process.stderr.write(`daftari: another instance is holding this vault (${holder}); ` +
|
|
173
|
+
`sending SIGTERM and taking over\n`);
|
|
149
174
|
try {
|
|
150
175
|
process.kill(prior.pid, "SIGTERM");
|
|
151
176
|
}
|