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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/frontmatter/schema.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,EAKL,KAAK,WAAW,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/frontmatter/schema.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,EAKL,KAAK,WAAW,EAQhB,KAAK,gBAAgB,EACtB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AA2FD,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,UAAU,GAAE,eAAe,EAAO,GACjC,qBAAqB,CAsIvB"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
// every structural problem. It does NOT enforce curation rules (staleness,
|
|
7
7
|
// tension, superseded_by consistency) — that is the curation engine's job.
|
|
8
8
|
import { normalizeIsoDate } from "../utils/dates.js";
|
|
9
|
-
import { CONFIDENCES, DOMAINS, PROVENANCES, STATUSES, } from "./types.js";
|
|
9
|
+
import { CONFIDENCES, DOMAINS, PROVENANCES, STATUSES, TIERS, } from "./types.js";
|
|
10
10
|
// Upper bound on the length of a value a config-declared `pattern` is run
|
|
11
11
|
// against. Config load already screens patterns for catastrophic backtracking
|
|
12
12
|
// (utils/redos.ts), but JS regex is synchronous — this caps worst-case work so
|
|
@@ -166,6 +166,23 @@ export function validateFrontmatter(data, extensions = []) {
|
|
|
166
166
|
issues.push({ field, message: `expected array, got ${typeof v}` });
|
|
167
167
|
return [];
|
|
168
168
|
};
|
|
169
|
+
// Optional enums default to null, NOT to a member value — unlike
|
|
170
|
+
// requireEnum's fallback. tier depends on this: null means "no write-path
|
|
171
|
+
// enforcement", so coercing a missing tier to any member would silently
|
|
172
|
+
// opt every untagged doc into (or out of) protection.
|
|
173
|
+
const optionalEnum = (field, allowed) => {
|
|
174
|
+
const v = data[field];
|
|
175
|
+
if (v === undefined || v === null)
|
|
176
|
+
return null;
|
|
177
|
+
if (typeof v === "string" && allowed.includes(v)) {
|
|
178
|
+
return v;
|
|
179
|
+
}
|
|
180
|
+
issues.push({
|
|
181
|
+
field,
|
|
182
|
+
message: `expected one of [${allowed.join(", ")}] or null, got ${JSON.stringify(v)}`,
|
|
183
|
+
});
|
|
184
|
+
return null;
|
|
185
|
+
};
|
|
169
186
|
const optionalString = (field) => {
|
|
170
187
|
const v = data[field];
|
|
171
188
|
if (v === undefined || v === null)
|
|
@@ -194,6 +211,7 @@ export function validateFrontmatter(data, extensions = []) {
|
|
|
194
211
|
updated: requireDate("updated"),
|
|
195
212
|
updated_by: requireString("updated_by"),
|
|
196
213
|
provenance: requireEnum("provenance", PROVENANCES, "inferred"),
|
|
214
|
+
tier: optionalEnum("tier", TIERS),
|
|
197
215
|
sources: optionalStringArray("sources"),
|
|
198
216
|
superseded_by: optionalString("superseded_by"),
|
|
199
217
|
ttl_days: optionalNumber("ttl_days"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/frontmatter/schema.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,EAAE;AACF,wEAAwE;AACxE,6EAA6E;AAC7E,4EAA4E;AAC5E,2EAA2E;AAC3E,2EAA2E;AAG3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EACL,WAAW,EAEX,OAAO,EAGP,WAAW,EAEX,QAAQ,
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/frontmatter/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,8 @@ export declare const CONFIDENCES: readonly ["low", "medium", "high"];
|
|
|
15
15
|
export type Confidence = (typeof CONFIDENCES)[number];
|
|
16
16
|
export declare const PROVENANCES: readonly ["direct", "synthesized", "inferred"];
|
|
17
17
|
export type Provenance = (typeof PROVENANCES)[number];
|
|
18
|
+
export declare const TIERS: readonly ["source", "compiled", "manual"];
|
|
19
|
+
export type Tier = (typeof TIERS)[number];
|
|
18
20
|
export type ExtensionValue = string | number | boolean | string[] | null;
|
|
19
21
|
export interface BuiltinFrontmatter {
|
|
20
22
|
title: string;
|
|
@@ -26,6 +28,7 @@ export interface BuiltinFrontmatter {
|
|
|
26
28
|
updated: string;
|
|
27
29
|
updated_by: string;
|
|
28
30
|
provenance: Provenance;
|
|
31
|
+
tier: Tier | null;
|
|
29
32
|
sources: string[];
|
|
30
33
|
superseded_by: string | null;
|
|
31
34
|
ttl_days: number | null;
|
|
@@ -34,7 +37,7 @@ export interface BuiltinFrontmatter {
|
|
|
34
37
|
questions_answered: string[];
|
|
35
38
|
questions_raised: string[];
|
|
36
39
|
}
|
|
37
|
-
export declare const BUILTIN_FRONTMATTER_FIELDS: readonly ["title", "domain", "collection", "status", "confidence", "created", "updated", "updated_by", "provenance", "sources", "superseded_by", "ttl_days", "tags", "describes", "questions_answered", "questions_raised"];
|
|
40
|
+
export declare const BUILTIN_FRONTMATTER_FIELDS: readonly ["title", "domain", "collection", "status", "confidence", "created", "updated", "updated_by", "provenance", "tier", "sources", "superseded_by", "ttl_days", "tags", "describes", "questions_answered", "questions_raised"];
|
|
38
41
|
export type Frontmatter = BuiltinFrontmatter & {
|
|
39
42
|
[extensionKey: string]: ExtensionValue;
|
|
40
43
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/frontmatter/types.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC;AAEpF,eAAO,MAAM,EAAE,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,MAAM,CAAC,CAAC,EAAE,KAAK,CAA0B,CAAC;AAC3E,eAAO,MAAM,GAAG,GAAI,CAAC,GAAG,KAAK,EAAE,OAAO,CAAC,KAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAA2B,CAAC;AAErF,eAAO,MAAM,OAAO,yCAA0C,CAAC;AAC/D,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9C,eAAO,MAAM,QAAQ,yEAA0E,CAAC;AAChG,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/C,eAAO,MAAM,WAAW,oCAAqC,CAAC;AAC9D,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtD,eAAO,MAAM,WAAW,gDAAiD,CAAC;AAC1E,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/frontmatter/types.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC;AAEpF,eAAO,MAAM,EAAE,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,MAAM,CAAC,CAAC,EAAE,KAAK,CAA0B,CAAC;AAC3E,eAAO,MAAM,GAAG,GAAI,CAAC,GAAG,KAAK,EAAE,OAAO,CAAC,KAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAA2B,CAAC;AAErF,eAAO,MAAM,OAAO,yCAA0C,CAAC;AAC/D,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9C,eAAO,MAAM,QAAQ,yEAA0E,CAAC;AAChG,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/C,eAAO,MAAM,WAAW,oCAAqC,CAAC;AAC9D,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtD,eAAO,MAAM,WAAW,gDAAiD,CAAC;AAC1E,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAQtD,eAAO,MAAM,KAAK,2CAA4C,CAAC;AAC/D,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AAK1C,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;AAKzE,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,EAAE,CAAC;IAIf,SAAS,EAAE,MAAM,EAAE,CAAC;IAIpB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAKD,eAAO,MAAM,0BAA0B,qOAkB7B,CAAC;AAMX,MAAM,MAAM,WAAW,GAAG,kBAAkB,GAAG;IAC7C,CAAC,YAAY,EAAE,MAAM,GAAG,cAAc,CAAC;CACxC,CAAC;AAIF,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B"}
|
|
@@ -5,6 +5,13 @@ export const DOMAINS = ["accumulation", "generative"];
|
|
|
5
5
|
export const STATUSES = ["draft", "canonical", "deprecated", "superseded", "archived"];
|
|
6
6
|
export const CONFIDENCES = ["low", "medium", "high"];
|
|
7
7
|
export const PROVENANCES = ["direct", "synthesized", "inferred"];
|
|
8
|
+
// #141: opt-in write-protection tier. `source` — raw ingested material, body
|
|
9
|
+
// is immutable to every writer (escape hatch: vault_set_tier demotes it first,
|
|
10
|
+
// loudly). `manual` — human-authored canon, body rewrites require a `human:*`
|
|
11
|
+
// identity. `compiled` — agent-maintained synthesis, no enforcement; named so
|
|
12
|
+
// a compilation pass can assert what it is allowed to regenerate. Unset (null)
|
|
13
|
+
// means no enforcement — the pre-#141 behavior for every existing doc.
|
|
14
|
+
export const TIERS = ["source", "compiled", "manual"];
|
|
8
15
|
// The built-in field names, as a runtime list. Config-declared schema
|
|
9
16
|
// extensions are rejected if they reuse one of these — an extension adds a
|
|
10
17
|
// field, it never redefines a built-in.
|
|
@@ -18,6 +25,7 @@ export const BUILTIN_FRONTMATTER_FIELDS = [
|
|
|
18
25
|
"updated",
|
|
19
26
|
"updated_by",
|
|
20
27
|
"provenance",
|
|
28
|
+
"tier",
|
|
21
29
|
"sources",
|
|
22
30
|
"superseded_by",
|
|
23
31
|
"ttl_days",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/frontmatter/types.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAMhF,MAAM,CAAC,MAAM,EAAE,GAAG,CAAI,KAAQ,EAAoB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAC3E,MAAM,CAAC,MAAM,GAAG,GAAG,CAAY,KAAQ,EAAoB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AAErF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,cAAc,EAAE,YAAY,CAAU,CAAC;AAG/D,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,CAAU,CAAC;AAGhG,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAG9D,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,CAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/frontmatter/types.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAMhF,MAAM,CAAC,MAAM,EAAE,GAAG,CAAI,KAAQ,EAAoB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAC3E,MAAM,CAAC,MAAM,GAAG,GAAG,CAAY,KAAQ,EAAoB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AAErF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,cAAc,EAAE,YAAY,CAAU,CAAC;AAG/D,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,CAAU,CAAC;AAGhG,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAG9D,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,CAAU,CAAC;AAG1E,6EAA6E;AAC7E,+EAA+E;AAC/E,8EAA8E;AAC9E,8EAA8E;AAC9E,+EAA+E;AAC/E,uEAAuE;AACvE,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAU,CAAC;AAqC/D,sEAAsE;AACtE,2EAA2E;AAC3E,wCAAwC;AACxC,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,OAAO;IACP,QAAQ;IACR,YAAY;IACZ,QAAQ;IACR,YAAY;IACZ,SAAS;IACT,SAAS;IACT,YAAY;IACZ,YAAY;IACZ,MAAM;IACN,SAAS;IACT,eAAe;IACf,UAAU;IACV,MAAM;IACN,WAAW;IACX,oBAAoB;IACpB,kBAAkB;CACV,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/import/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/import/index.ts"],"names":[],"mappings":"AAwEA,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAkH/D"}
|
package/dist/import/index.js
CHANGED
|
@@ -11,7 +11,7 @@ import { runBackfill } from "../backfill/index.js";
|
|
|
11
11
|
import { directoryExists } from "../storage/local.js";
|
|
12
12
|
import { isGitRepo } from "../utils/git.js";
|
|
13
13
|
import { ensureVaultGitignore } from "../utils/vault-gitignore.js";
|
|
14
|
-
const SUPPORTED = ["obsidian"];
|
|
14
|
+
const SUPPORTED = ["obsidian", "langgraph-store"];
|
|
15
15
|
// Writes git_dir (+ auto_commit:true) into the vault's config.yaml, merging into
|
|
16
16
|
// any existing config. Idempotent: returns "present" with no rewrite when already
|
|
17
17
|
// at the target. Comments in an existing config are not preserved (js-yaml dump).
|
|
@@ -32,23 +32,38 @@ function writeGitDirConfig(vaultRoot, gitDirValue) {
|
|
|
32
32
|
writeFileSync(cfgPath, dump(cfg), "utf-8");
|
|
33
33
|
return "written";
|
|
34
34
|
}
|
|
35
|
-
const HELP = `daftari import — adopt
|
|
35
|
+
const HELP = `daftari import — adopt foreign content into a Daftari vault.
|
|
36
36
|
|
|
37
37
|
Usage:
|
|
38
38
|
daftari import obsidian <vault> --plan [--scope <folder>]
|
|
39
39
|
daftari import obsidian <vault> --apply --scope <folder> [--yes]
|
|
40
|
+
daftari import langgraph-store <vault> --dsn <postgres-url> --plan [--namespace <prefix>]
|
|
41
|
+
daftari import langgraph-store <vault> --dsn <postgres-url> --apply --yes [--namespace <prefix>]
|
|
40
42
|
|
|
41
|
-
|
|
42
|
-
Obsidian authors. Mirrors 'daftari backfill' (two-step plan/apply,
|
|
43
|
-
ratification)
|
|
44
|
-
'source' into Daftari 'sources'. Wikilinks are left untouched
|
|
45
|
-
resolves them.
|
|
43
|
+
obsidian: adopts an Obsidian vault *in place* — Daftari indexes and curates the
|
|
44
|
+
same files Obsidian authors. Mirrors 'daftari backfill' (two-step plan/apply,
|
|
45
|
+
per-folder ratification), harvests inline #tags, and maps a Web Clipper
|
|
46
|
+
'source' into Daftari 'sources'. Wikilinks are left untouched.
|
|
46
47
|
|
|
47
|
-
|
|
48
|
+
langgraph-store: reads a LangGraph BaseStore (Postgres 'store' table, e.g.
|
|
49
|
+
LangMem memories) READ-ONLY and derives one claim note per semantic memory,
|
|
50
|
+
with full store provenance in frontmatter. Semantic memories become claims;
|
|
51
|
+
episodic/procedural are counted and skipped in v1.
|
|
52
|
+
|
|
53
|
+
Flags (obsidian — passed through to backfill):
|
|
48
54
|
--scope <folder> Folder to act on. Optional on --plan, required on --apply.
|
|
49
55
|
--apply / --plan Apply a ratified folder, or stage a dry-run plan.
|
|
50
56
|
--yes Skip the apply confirmation prompt.
|
|
51
57
|
--agent <id> Acting identity for the apply commit (default human:<user>).
|
|
58
|
+
|
|
59
|
+
Flags (langgraph-store):
|
|
60
|
+
--dsn <url> Postgres DSN. Use a read-only role; the session is forced
|
|
61
|
+
read-only either way.
|
|
62
|
+
--namespace <ns> Dot-joined namespace prefix filter (e.g. 'v1' or 'v1.ops').
|
|
63
|
+
--collection <c> Target vault collection/folder (default: langgraph).
|
|
64
|
+
--apply / --plan Write notes + one commit, or preview counts.
|
|
65
|
+
--yes Required with --apply.
|
|
66
|
+
--agent <id> Acting identity for the apply commit.
|
|
52
67
|
--help, -h Show this help.
|
|
53
68
|
`;
|
|
54
69
|
export async function runImport(argv) {
|
|
@@ -126,6 +141,26 @@ export async function runImport(argv) {
|
|
|
126
141
|
process.stderr.write("daftari import: --external-git-dir will be written to config on --apply (dry-run writes nothing)\n");
|
|
127
142
|
}
|
|
128
143
|
}
|
|
129
|
-
|
|
144
|
+
// langgraph-store has its own flag surface and derivation path (content
|
|
145
|
+
// lives in Postgres, not files); it shares the adoption plumbing above
|
|
146
|
+
// (vault check, gitignore scaffolding, git announcements) with obsidian.
|
|
147
|
+
let code;
|
|
148
|
+
if (type === "langgraph-store") {
|
|
149
|
+
const { runLanggraphImport } = await import("./langgraph-store.js");
|
|
150
|
+
code = await runLanggraphImport(resolvedVault, passthrough);
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
code = await runBackfill(["--vault", vault, ...passthrough], { obsidian: true });
|
|
154
|
+
}
|
|
155
|
+
// Day-0 gap: a freshly imported foreign corpus has never been scanned for
|
|
156
|
+
// contradictions — the langgraph-store demo measured 9-10 real tensions
|
|
157
|
+
// hiding in a 49-note import. Hint only, never auto-run: the scan calls an
|
|
158
|
+
// LLM, and daftari's posture is explicit opt-in for anything that spends
|
|
159
|
+
// (the same reasoning as consolidate's shadow_mode gate).
|
|
160
|
+
if (code === 0 && isApply) {
|
|
161
|
+
process.stderr.write(`daftari import: the imported corpus is unscanned for contradictions — ` +
|
|
162
|
+
`run: daftari sleep --dream tension-scan --vault ${resolvedVault} (calls an LLM; opt-in)\n`);
|
|
163
|
+
}
|
|
164
|
+
return code;
|
|
130
165
|
}
|
|
131
166
|
//# sourceMappingURL=index.js.map
|
package/dist/import/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/import/index.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,EAAE;AACF,iFAAiF;AACjF,2EAA2E;AAC3E,+EAA+E;AAC/E,+EAA+E;AAE/E,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,MAAM,SAAS,GAAG,CAAC,UAAU,CAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/import/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export type Result<T, E = Error> = {
|
|
2
|
+
ok: true;
|
|
3
|
+
value: T;
|
|
4
|
+
} | {
|
|
5
|
+
ok: false;
|
|
6
|
+
error: E;
|
|
7
|
+
};
|
|
8
|
+
export interface StoreRow {
|
|
9
|
+
prefix: string;
|
|
10
|
+
key: string;
|
|
11
|
+
value: unknown;
|
|
12
|
+
created_at: string;
|
|
13
|
+
updated_at: string;
|
|
14
|
+
}
|
|
15
|
+
export type QueryRunner = (sql: string, params: unknown[]) => Promise<StoreRow[]>;
|
|
16
|
+
export interface LanggraphImportOptions {
|
|
17
|
+
vaultRoot: string;
|
|
18
|
+
dsn: string;
|
|
19
|
+
namespace?: string;
|
|
20
|
+
collection: string;
|
|
21
|
+
agent: string;
|
|
22
|
+
apply: boolean;
|
|
23
|
+
yes: boolean;
|
|
24
|
+
}
|
|
25
|
+
export interface DerivedNote {
|
|
26
|
+
relPath: string;
|
|
27
|
+
title: string;
|
|
28
|
+
body: string;
|
|
29
|
+
sourceRef: string;
|
|
30
|
+
session: string;
|
|
31
|
+
}
|
|
32
|
+
export interface ImportPlan {
|
|
33
|
+
notes: DerivedNote[];
|
|
34
|
+
skipped: {
|
|
35
|
+
kind: string;
|
|
36
|
+
count: number;
|
|
37
|
+
}[];
|
|
38
|
+
byPrefix: Record<string, number>;
|
|
39
|
+
}
|
|
40
|
+
export declare function slugifyKey(text: string): string;
|
|
41
|
+
export declare function deriveNotes(rows: StoreRow[], opts: LanggraphImportOptions): ImportPlan;
|
|
42
|
+
export declare function readStoreRows(query: QueryRunner, namespace?: string): Promise<Result<StoreRow[]>>;
|
|
43
|
+
export declare function connectReadOnly(dsn: string): Promise<Result<{
|
|
44
|
+
query: QueryRunner;
|
|
45
|
+
close: () => Promise<void>;
|
|
46
|
+
}>>;
|
|
47
|
+
export declare function renderPlan(plan: ImportPlan, opts: LanggraphImportOptions): string;
|
|
48
|
+
export declare function runLanggraphImport(vaultRoot: string, argv: string[]): Promise<number>;
|
|
49
|
+
export declare function applyPlan(plan: ImportPlan, opts: LanggraphImportOptions): Promise<Result<{
|
|
50
|
+
written: number;
|
|
51
|
+
commit: string | null;
|
|
52
|
+
}>>;
|
|
53
|
+
//# sourceMappingURL=langgraph-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"langgraph-store.d.ts","sourceRoot":"","sources":["../../src/import/langgraph-store.ts"],"names":[],"mappings":"AAwBA,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC;AAMpF,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAID,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;AAElF,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAKD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ/C;AA0BD,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,sBAAsB,GAAG,UAAU,CA6DtF;AAOD,wBAAsB,aAAa,CACjC,KAAK,EAAE,WAAW,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAe7B;AAKD,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CAAC,CA2BrE;AAID,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,sBAAsB,GAAG,MAAM,CAwBjF;AAKD,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAqF3F;AAED,wBAAsB,SAAS,CAC7B,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,MAAM,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAAC,CAqB7D"}
|
|
@@ -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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"}
|