daftari 1.30.0 → 1.32.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 +176 -0
- package/README.md +188 -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 +24 -0
- package/dist/cli.js.map +1 -1
- package/dist/consolidate/index.d.ts.map +1 -1
- package/dist/consolidate/index.js +10 -12
- package/dist/consolidate/index.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 +190 -17
- package/dist/curation/edges.js.map +1 -1
- package/dist/curation/lint.d.ts +6 -1
- package/dist/curation/lint.d.ts.map +1 -1
- package/dist/curation/lint.js +87 -24
- 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/shadow.d.ts +1 -0
- package/dist/curation/shadow.d.ts.map +1 -1
- package/dist/curation/shadow.js +17 -11
- package/dist/curation/shadow.js.map +1 -1
- package/dist/curation/staged-actions.d.ts +12 -1
- package/dist/curation/staged-actions.d.ts.map +1 -1
- package/dist/curation/staged-actions.js +123 -48
- 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.d.ts.map +1 -1
- package/dist/eval/generate.js +38 -5
- package/dist/eval/generate.js.map +1 -1
- package/dist/eval/index.d.ts +1 -0
- package/dist/eval/index.d.ts.map +1 -1
- package/dist/eval/index.js +249 -50
- package/dist/eval/index.js.map +1 -1
- package/dist/eval/llm-openrouter.d.ts.map +1 -1
- package/dist/eval/llm-openrouter.js +158 -65
- package/dist/eval/llm-openrouter.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/interview/index.d.ts +7 -0
- package/dist/interview/index.d.ts.map +1 -0
- package/dist/interview/index.js +219 -0
- package/dist/interview/index.js.map +1 -0
- package/dist/interview/questions.d.ts +18 -0
- package/dist/interview/questions.d.ts.map +1 -0
- package/dist/interview/questions.js +169 -0
- package/dist/interview/questions.js.map +1 -0
- package/dist/interview/transcript.d.ts +23 -0
- package/dist/interview/transcript.d.ts.map +1 -0
- package/dist/interview/transcript.js +155 -0
- package/dist/interview/transcript.js.map +1 -0
- 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 +117 -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 +115 -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 +159 -0
- package/dist/okf/index.js.map +1 -0
- package/dist/okf/map.d.ts +27 -0
- package/dist/okf/map.d.ts.map +1 -0
- package/dist/okf/map.js +327 -0
- package/dist/okf/map.js.map +1 -0
- package/dist/okf/types.d.ts +13 -0
- package/dist/okf/types.d.ts.map +1 -0
- package/dist/okf/types.js +82 -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 +60 -15
- package/dist/search/hybrid.js.map +1 -1
- package/dist/search/reindex.d.ts +4 -0
- package/dist/search/reindex.d.ts.map +1 -1
- package/dist/search/reindex.js +64 -14
- 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 +29 -27
- 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 +95 -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 +211 -76
- 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 +225 -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 +596 -174
- 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 +394 -24
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/dates.d.ts +1 -0
- package/dist/utils/dates.d.ts.map +1 -1
- package/dist/utils/dates.js +5 -0
- package/dist/utils/dates.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
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
// src/okf/index.ts
|
|
2
|
+
//
|
|
3
|
+
// `daftari okf <export|import> ...` — bridge a Daftari vault and Google Cloud's
|
|
4
|
+
// Open Knowledge Format (OKF) bundle. Export renders the vault as a portable OKF
|
|
5
|
+
// bundle any OKF consumer can read; import adopts an OKF bundle into a vault.
|
|
6
|
+
// The command owns arg parsing, existence checks, and human output; the actual
|
|
7
|
+
// translation lives in export.ts / import.ts.
|
|
8
|
+
import { resolve } from "node:path";
|
|
9
|
+
import { directoryExists } from "../storage/local.js";
|
|
10
|
+
import { exportBundle } from "./export.js";
|
|
11
|
+
import { importBundle } from "./import.js";
|
|
12
|
+
import { OKF_VERSION } from "./types.js";
|
|
13
|
+
const SUBCOMMANDS = ["export", "import"];
|
|
14
|
+
const HELP = `daftari okf — bridge a Daftari vault and the Open Knowledge Format (OKF v${OKF_VERSION}).
|
|
15
|
+
|
|
16
|
+
OKF is Google Cloud's vendor-neutral spec for the LLM-wiki pattern: a directory
|
|
17
|
+
of markdown files with YAML frontmatter that any producer can emit and any
|
|
18
|
+
consumer can read without translation. v0.2 adds opt-in trust signals —
|
|
19
|
+
provenance, verification, lifecycle, and freshness metadata.
|
|
20
|
+
|
|
21
|
+
Usage:
|
|
22
|
+
daftari okf export <vault> --out <dir> [--collection <name>]
|
|
23
|
+
daftari okf import <bundle> --into <vault> [--dry-run] [--agent <id>]
|
|
24
|
+
|
|
25
|
+
export — write the vault as an OKF bundle (never mutates the vault):
|
|
26
|
+
--out <dir> Output directory for the bundle (required).
|
|
27
|
+
--collection <name> Export only this collection (top-level folder).
|
|
28
|
+
|
|
29
|
+
Each doc becomes an OKF concept doc (core fields + a verbatim 'daftari'
|
|
30
|
+
sidecar for lossless round-trip) plus generated index.md and log.md.
|
|
31
|
+
Trust signals derive from native metadata: updated/updated_by become
|
|
32
|
+
'generated', status maps to draft/stable/deprecated, ttl_days becomes an
|
|
33
|
+
absolute 'stale_after' date, and sources become structured entries.
|
|
34
|
+
'verified' is never fabricated — Daftari records authorship, not
|
|
35
|
+
independent confirmations, so exported docs read as unverified.
|
|
36
|
+
|
|
37
|
+
import — adopt an OKF bundle into a vault (auto-commits + reindexes):
|
|
38
|
+
--into <vault> Target Daftari vault (required).
|
|
39
|
+
--dry-run Report the plan; write, commit, and index nothing.
|
|
40
|
+
--agent <id> Acting identity for authorship + commit (default agent:okf-import).
|
|
41
|
+
|
|
42
|
+
A bundle from 'daftari okf export' round-trips exactly; a foreign bundle is
|
|
43
|
+
mapped conservatively (docs land as drafts in the accumulation domain).
|
|
44
|
+
v0.2 trust signals inform the mapping: human-reviewed docs (a human:* entry
|
|
45
|
+
in 'verified') import with confidence high, 'status: deprecated' stays
|
|
46
|
+
deprecated, and 'stale_after' converts to ttl_days. An Attested Computation
|
|
47
|
+
is flagged in a warning but NOT auto-write-protected — a bundle's
|
|
48
|
+
self-declared type is not an authorization; review it and elevate with
|
|
49
|
+
vault_set_tier. Unmapped OKF fields are preserved under okf_* keys.
|
|
50
|
+
|
|
51
|
+
--help, -h Show this help.
|
|
52
|
+
`;
|
|
53
|
+
function readStringArg(argv, flag) {
|
|
54
|
+
const raw = argv.find((a) => a === flag || a.startsWith(`${flag}=`));
|
|
55
|
+
if (raw === undefined)
|
|
56
|
+
return undefined;
|
|
57
|
+
const idx = argv.indexOf(raw);
|
|
58
|
+
return raw.includes("=") ? raw.slice(raw.indexOf("=") + 1) : argv[idx + 1];
|
|
59
|
+
}
|
|
60
|
+
// First non-flag argument (the positional vault/bundle path), or a default.
|
|
61
|
+
function readPositional(argv, fallback) {
|
|
62
|
+
for (let i = 0; i < argv.length; i++) {
|
|
63
|
+
const a = argv[i];
|
|
64
|
+
if (a.startsWith("-")) {
|
|
65
|
+
// Skip the value of a value-taking flag so it is not mistaken for the
|
|
66
|
+
// positional. --dry-run takes no value; everything else here does.
|
|
67
|
+
if (!a.includes("=") && a !== "--dry-run")
|
|
68
|
+
i++;
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
return a;
|
|
72
|
+
}
|
|
73
|
+
return fallback;
|
|
74
|
+
}
|
|
75
|
+
async function runExport(argv) {
|
|
76
|
+
const vault = readPositional(argv, ".");
|
|
77
|
+
const out = readStringArg(argv, "--out");
|
|
78
|
+
const collection = readStringArg(argv, "--collection");
|
|
79
|
+
if (!out) {
|
|
80
|
+
process.stderr.write("daftari okf export: --out <dir> is required\n");
|
|
81
|
+
return 1;
|
|
82
|
+
}
|
|
83
|
+
const resolvedVault = resolve(vault);
|
|
84
|
+
if (!(await directoryExists(resolvedVault))) {
|
|
85
|
+
process.stderr.write(`daftari okf export: vault directory not found: ${vault}\n`);
|
|
86
|
+
return 1;
|
|
87
|
+
}
|
|
88
|
+
const result = await exportBundle(resolvedVault, resolve(out), { collection });
|
|
89
|
+
if (!result.ok) {
|
|
90
|
+
process.stderr.write(`daftari okf export: ${result.error.message}\n`);
|
|
91
|
+
return 1;
|
|
92
|
+
}
|
|
93
|
+
for (const w of result.value.warnings) {
|
|
94
|
+
process.stderr.write(`daftari okf export: warning: ${w}\n`);
|
|
95
|
+
}
|
|
96
|
+
process.stdout.write(`Exported ${result.value.documentCount} document(s) as an OKF v${OKF_VERSION} bundle to ${result.value.outDir}\n` +
|
|
97
|
+
(result.value.skipped > 0 ? ` skipped: ${result.value.skipped} unparseable file(s)\n` : ""));
|
|
98
|
+
return 0;
|
|
99
|
+
}
|
|
100
|
+
async function runImportCmd(argv) {
|
|
101
|
+
const bundle = readPositional(argv, ".");
|
|
102
|
+
const into = readStringArg(argv, "--into");
|
|
103
|
+
const agent = readStringArg(argv, "--agent");
|
|
104
|
+
const dryRun = argv.includes("--dry-run");
|
|
105
|
+
if (!into) {
|
|
106
|
+
process.stderr.write("daftari okf import: --into <vault> is required\n");
|
|
107
|
+
return 1;
|
|
108
|
+
}
|
|
109
|
+
const resolvedBundle = resolve(bundle);
|
|
110
|
+
if (!(await directoryExists(resolvedBundle))) {
|
|
111
|
+
process.stderr.write(`daftari okf import: bundle directory not found: ${bundle}\n`);
|
|
112
|
+
return 1;
|
|
113
|
+
}
|
|
114
|
+
const resolvedVault = resolve(into);
|
|
115
|
+
if (!(await directoryExists(resolvedVault))) {
|
|
116
|
+
process.stderr.write(`daftari okf import: target vault not found: ${into}\n`);
|
|
117
|
+
return 1;
|
|
118
|
+
}
|
|
119
|
+
const result = await importBundle(resolvedBundle, resolvedVault, { agent, dryRun });
|
|
120
|
+
if (!result.ok) {
|
|
121
|
+
process.stderr.write(`daftari okf import: ${result.error.message}\n`);
|
|
122
|
+
return 1;
|
|
123
|
+
}
|
|
124
|
+
for (const w of result.value.warnings) {
|
|
125
|
+
process.stderr.write(`daftari okf import: warning: ${w}\n`);
|
|
126
|
+
}
|
|
127
|
+
const r = result.value;
|
|
128
|
+
if (r.dryRun) {
|
|
129
|
+
process.stdout.write(`Dry run — would import ${r.imported} document(s) into ${r.vaultRoot}:\n`);
|
|
130
|
+
for (const item of r.plan) {
|
|
131
|
+
const tag = item.roundTrip ? " (round-trip)" : "";
|
|
132
|
+
process.stdout.write(` ${item.relPath} → collection '${item.collection}'${tag}\n`);
|
|
133
|
+
}
|
|
134
|
+
return 0;
|
|
135
|
+
}
|
|
136
|
+
process.stdout.write(`Imported ${r.imported} document(s) into ${r.vaultRoot}` +
|
|
137
|
+
(r.commit ? ` (commit ${r.commit})` : "") +
|
|
138
|
+
(r.reindexed ? ", reindexed" : "") +
|
|
139
|
+
"\n" +
|
|
140
|
+
(r.skipped > 0 ? ` skipped: ${r.skipped} file(s)\n` : ""));
|
|
141
|
+
return 0;
|
|
142
|
+
}
|
|
143
|
+
export async function runOkf(argv) {
|
|
144
|
+
if (argv.length === 0) {
|
|
145
|
+
process.stderr.write(HELP);
|
|
146
|
+
return 1;
|
|
147
|
+
}
|
|
148
|
+
if (argv.includes("--help") || argv.includes("-h")) {
|
|
149
|
+
process.stdout.write(HELP);
|
|
150
|
+
return 0;
|
|
151
|
+
}
|
|
152
|
+
const sub = argv[0];
|
|
153
|
+
if (!SUBCOMMANDS.includes(sub)) {
|
|
154
|
+
process.stderr.write(`daftari okf: unknown subcommand '${sub}' — expected: ${SUBCOMMANDS.join(", ")}\n`);
|
|
155
|
+
return 1;
|
|
156
|
+
}
|
|
157
|
+
return sub === "export" ? runExport(argv.slice(1)) : runImportCmd(argv.slice(1));
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/okf/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Frontmatter } from "../frontmatter/types.js";
|
|
2
|
+
import { type OkfStatus } from "./types.js";
|
|
3
|
+
export declare function isUri(s: string): boolean;
|
|
4
|
+
export declare function deriveDescription(fm: Frontmatter, body: string): string | undefined;
|
|
5
|
+
export declare function toIsoTimestamp(date: string): string | undefined;
|
|
6
|
+
export declare function statusToOkf(status: string): OkfStatus;
|
|
7
|
+
export declare function staleAfterFromTtl(updated: string, ttlDays: number | null): string | undefined;
|
|
8
|
+
export declare function toOkfSource(source: string): Record<string, unknown>;
|
|
9
|
+
export declare function daftariToOkf(raw: Record<string, unknown>, fm: Frontmatter, body: string): Record<string, unknown>;
|
|
10
|
+
export declare function titleFromPath(relPath: string): string;
|
|
11
|
+
export declare function collectionFromPath(relPath: string): string | null;
|
|
12
|
+
export declare function slugify(s: string): string | null;
|
|
13
|
+
export declare function dateFromTimestamp(value: unknown): string | undefined;
|
|
14
|
+
export declare function hasDaftariSidecar(okfRaw: Record<string, unknown>): boolean;
|
|
15
|
+
export declare function isAttestedComputation(type: unknown): boolean;
|
|
16
|
+
export declare function dateFromGenerated(okfRaw: Record<string, unknown>): string | undefined;
|
|
17
|
+
export type OkfTrustTier = "unverified" | "machine-confirmed" | "human-reviewed";
|
|
18
|
+
export declare function trustTier(verified: unknown): OkfTrustTier;
|
|
19
|
+
export declare function ttlFromStaleAfter(staleAfter: unknown, anchorDate: string): number | null;
|
|
20
|
+
export declare function sourcesFromOkf(okfRaw: Record<string, unknown>): string[];
|
|
21
|
+
export interface OkfImportContext {
|
|
22
|
+
relPath: string;
|
|
23
|
+
today: string;
|
|
24
|
+
updatedBy: string;
|
|
25
|
+
}
|
|
26
|
+
export declare function okfToDaftari(okfRaw: Record<string, unknown>, ctx: OkfImportContext): Record<string, unknown>;
|
|
27
|
+
//# sourceMappingURL=map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/okf/map.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAML,KAAK,SAAS,EACf,MAAM,YAAY,CAAC;AAKpB,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAExC;AAMD,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAYnF;AAKD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG/D;AAMD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAIrD;AAOD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAO7F;AAOD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAUnE;AAOD,wBAAgB,YAAY,CAC1B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,EAAE,EAAE,WAAW,EACf,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAyCzB;AAID,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGrD;AAID,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGjE;AAID,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMhD;AAKD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAQpE;AAkBD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAG1E;AAMD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAK5D;AAID,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAGrF;AAKD,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,mBAAmB,GAAG,gBAAgB,CAAC;AAEjF,wBAAgB,SAAS,CAAC,QAAQ,EAAE,OAAO,GAAG,YAAY,CAOzD;AAOD,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQxF;AAOD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CAiBxE;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AA8CD,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,GAAG,EAAE,gBAAgB,GACpB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkDzB"}
|
package/dist/okf/map.js
ADDED
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
// Pure frontmatter mappers between Daftari and OKF. No filesystem, no I/O — the
|
|
2
|
+
// export/import modules own that. Keeping the field translation here makes it
|
|
3
|
+
// unit-testable in isolation and keeps the two directions symmetric.
|
|
4
|
+
import { normalizeIsoDate } from "../utils/dates.js";
|
|
5
|
+
import { DAFTARI_SIDECAR_KEY, DEFAULT_IMPORT_COLLECTION, DEFAULT_OKF_TYPE, OKF_ATTESTED_COMPUTATION_TYPE, OKF_PRESERVED_PREFIX, } from "./types.js";
|
|
6
|
+
// True when `s` looks like an absolute URI (has a scheme + "://"). Daftari
|
|
7
|
+
// `sources` are often bare ids ("aurora-product-page"); only URI-shaped ones map
|
|
8
|
+
// to OKF's `resource`, which is defined as a URI identifying the asset.
|
|
9
|
+
export function isUri(s) {
|
|
10
|
+
return /^[a-z][a-z0-9+.-]*:\/\//i.test(s);
|
|
11
|
+
}
|
|
12
|
+
// A single-sentence summary for OKF's `description`. Prefers the first
|
|
13
|
+
// non-heading, non-list paragraph of the body (cut at the first sentence
|
|
14
|
+
// boundary); falls back to the doc's first `questions_answered` entry. Returns
|
|
15
|
+
// undefined when there is nothing usable, so the field is simply omitted.
|
|
16
|
+
export function deriveDescription(fm, body) {
|
|
17
|
+
for (const rawLine of body.split("\n")) {
|
|
18
|
+
const line = rawLine.trim();
|
|
19
|
+
if (line === "")
|
|
20
|
+
continue;
|
|
21
|
+
if (line.startsWith("#"))
|
|
22
|
+
continue; // heading
|
|
23
|
+
if (/^([-*+]|\d+\.)\s/.test(line))
|
|
24
|
+
continue; // list item
|
|
25
|
+
const sentence = /^(.*?[.!?])(\s|$)/.exec(line);
|
|
26
|
+
const text = (sentence ? sentence[1] : line).trim();
|
|
27
|
+
return text.length > 280 ? `${text.slice(0, 277)}...` : text;
|
|
28
|
+
}
|
|
29
|
+
if (fm.questions_answered.length > 0)
|
|
30
|
+
return fm.questions_answered[0];
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
// Daftari `YYYY-MM-DD` → OKF ISO 8601 datetime. Returns undefined for anything
|
|
34
|
+
// that isn't a real calendar date so an invalid `updated` never emits a bogus
|
|
35
|
+
// timestamp.
|
|
36
|
+
export function toIsoTimestamp(date) {
|
|
37
|
+
const norm = normalizeIsoDate(date);
|
|
38
|
+
return norm === null ? undefined : `${norm}T00:00:00Z`;
|
|
39
|
+
}
|
|
40
|
+
// Daftari lifecycle → OKF v0.2 `status`. `canonical` is the vault's "current,
|
|
41
|
+
// trusted" state (OKF `stable`); everything retired — deprecated, superseded,
|
|
42
|
+
// archived — maps to `deprecated`, which OKF keeps for historical
|
|
43
|
+
// reproducibility without surfacing to new work.
|
|
44
|
+
export function statusToOkf(status) {
|
|
45
|
+
if (status === "draft")
|
|
46
|
+
return "draft";
|
|
47
|
+
if (status === "canonical")
|
|
48
|
+
return "stable";
|
|
49
|
+
return "deprecated";
|
|
50
|
+
}
|
|
51
|
+
// Daftari's relative `ttl_days` → OKF v0.2 absolute `stale_after` date
|
|
52
|
+
// (`updated` + TTL). OKF deliberately uses an absolute date so staleness checks
|
|
53
|
+
// are deterministic; anchoring at `updated` preserves the exact day the TTL
|
|
54
|
+
// would have expired. Undefined when there is no TTL (no freshness promise) or
|
|
55
|
+
// no valid `updated` to anchor it to.
|
|
56
|
+
export function staleAfterFromTtl(updated, ttlDays) {
|
|
57
|
+
if (ttlDays === null || !Number.isFinite(ttlDays))
|
|
58
|
+
return undefined;
|
|
59
|
+
const norm = normalizeIsoDate(updated);
|
|
60
|
+
if (norm === null)
|
|
61
|
+
return undefined;
|
|
62
|
+
const d = new Date(`${norm}T00:00:00Z`);
|
|
63
|
+
d.setUTCDate(d.getUTCDate() + Math.trunc(ttlDays));
|
|
64
|
+
return d.toISOString().slice(0, 10);
|
|
65
|
+
}
|
|
66
|
+
// One Daftari source string → an OKF v0.2 structured source entry. URI-shaped
|
|
67
|
+
// sources carry the URI in `resource` with an `id` slug derived from the last
|
|
68
|
+
// path segment (the citation handle); bare ids are already ids. Daftari has no
|
|
69
|
+
// per-source author/usage_count/last_modified to offer — OKF signals are
|
|
70
|
+
// opt-in, so those are simply absent.
|
|
71
|
+
export function toOkfSource(source) {
|
|
72
|
+
if (!isUri(source))
|
|
73
|
+
return { id: source };
|
|
74
|
+
const tail = source
|
|
75
|
+
.replace(/[?#].*$/, "")
|
|
76
|
+
.split("/")
|
|
77
|
+
.filter((p) => p !== "")
|
|
78
|
+
.pop() ?? source;
|
|
79
|
+
const id = slugify(tail.replace(/\.[a-z0-9]+$/i, "")) ?? slugify(source) ?? source;
|
|
80
|
+
return { id, resource: source };
|
|
81
|
+
}
|
|
82
|
+
// Daftari document → OKF concept-doc frontmatter. `raw` is the document's
|
|
83
|
+
// original frontmatter verbatim; it is stashed under the `daftari` key so an
|
|
84
|
+
// `okf import` of this bundle can reconstruct the source exactly rather than
|
|
85
|
+
// re-deriving it from the lossy OKF core fields. `body` is unchanged by export;
|
|
86
|
+
// it is passed only to derive the description.
|
|
87
|
+
export function daftariToOkf(raw, fm, body) {
|
|
88
|
+
const out = {};
|
|
89
|
+
// `type` is the only required OKF field. Daftari's `collection` is the closest
|
|
90
|
+
// notion of a document kind; fall back to a generic type when it is empty.
|
|
91
|
+
out.type = fm.collection.trim() || DEFAULT_OKF_TYPE;
|
|
92
|
+
if (fm.title.trim() !== "")
|
|
93
|
+
out.title = fm.title;
|
|
94
|
+
const description = deriveDescription(fm, body);
|
|
95
|
+
if (description !== undefined)
|
|
96
|
+
out.description = description;
|
|
97
|
+
const resource = fm.sources.find(isUri);
|
|
98
|
+
if (resource !== undefined)
|
|
99
|
+
out.resource = resource;
|
|
100
|
+
if (fm.tags.length > 0)
|
|
101
|
+
out.tags = fm.tags;
|
|
102
|
+
// v0.2 trust signals, derived from native Daftari metadata. `generated`
|
|
103
|
+
// replaces the v0.1 `timestamp` (the spec's deliberate rename): `updated_by`
|
|
104
|
+
// is who last produced the content, `updated` is when it last meaningfully
|
|
105
|
+
// changed. `verified` is deliberately NOT emitted — Daftari records
|
|
106
|
+
// authorship, not independent confirmations, and OKF's trust tiers make the
|
|
107
|
+
// absence meaningful (unverified) rather than fabricating a signal.
|
|
108
|
+
const generated = {};
|
|
109
|
+
if (fm.updated_by.trim() !== "")
|
|
110
|
+
generated.by = fm.updated_by;
|
|
111
|
+
const at = toIsoTimestamp(fm.updated);
|
|
112
|
+
if (at !== undefined)
|
|
113
|
+
generated.at = at;
|
|
114
|
+
if (Object.keys(generated).length > 0)
|
|
115
|
+
out.generated = generated;
|
|
116
|
+
out.status = statusToOkf(fm.status);
|
|
117
|
+
const staleAfter = staleAfterFromTtl(fm.updated, fm.ttl_days);
|
|
118
|
+
if (staleAfter !== undefined)
|
|
119
|
+
out.stale_after = staleAfter;
|
|
120
|
+
if (fm.sources.length > 0)
|
|
121
|
+
out.sources = fm.sources.map(toOkfSource);
|
|
122
|
+
// Lossless round-trip channel. Never overwritten by the derived fields above
|
|
123
|
+
// because it lives under its own key.
|
|
124
|
+
out[DAFTARI_SIDECAR_KEY] = raw;
|
|
125
|
+
return out;
|
|
126
|
+
}
|
|
127
|
+
// Basename without extension, humanized, as a fallback title for a foreign OKF
|
|
128
|
+
// doc that omitted `title` (OKF says title is derived from the filename then).
|
|
129
|
+
export function titleFromPath(relPath) {
|
|
130
|
+
const base = relPath.split("/").pop() ?? relPath;
|
|
131
|
+
return base.replace(/\.md$/i, "").replace(/[-_]+/g, " ").trim();
|
|
132
|
+
}
|
|
133
|
+
// Top-level bundle directory of a doc, used as the Daftari collection so a
|
|
134
|
+
// bundle's folder structure survives import. Null for a doc at the bundle root.
|
|
135
|
+
export function collectionFromPath(relPath) {
|
|
136
|
+
const parts = relPath.split("/").filter((p) => p !== "");
|
|
137
|
+
return parts.length > 1 ? parts[0] : null;
|
|
138
|
+
}
|
|
139
|
+
// Lowercase kebab slug of an arbitrary OKF `type` string, for use as a Daftari
|
|
140
|
+
// collection when the doc has no directory. Returns null if nothing survives.
|
|
141
|
+
export function slugify(s) {
|
|
142
|
+
const slug = s
|
|
143
|
+
.toLowerCase()
|
|
144
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
145
|
+
.replace(/^-+|-+$/g, "");
|
|
146
|
+
return slug === "" ? null : slug;
|
|
147
|
+
}
|
|
148
|
+
// OKF `timestamp` → Daftari `YYYY-MM-DD`. Accepts a js-yaml Date (unquoted ISO
|
|
149
|
+
// datetimes parse to Date), an ISO string, or a bare date; returns undefined
|
|
150
|
+
// when it cannot recover a real calendar date.
|
|
151
|
+
export function dateFromTimestamp(value) {
|
|
152
|
+
if (value instanceof Date && !Number.isNaN(value.getTime())) {
|
|
153
|
+
return value.toISOString().slice(0, 10);
|
|
154
|
+
}
|
|
155
|
+
if (typeof value === "string") {
|
|
156
|
+
return normalizeIsoDate(value.slice(0, 10)) ?? undefined;
|
|
157
|
+
}
|
|
158
|
+
return undefined;
|
|
159
|
+
}
|
|
160
|
+
function asStringArray(value) {
|
|
161
|
+
if (!Array.isArray(value))
|
|
162
|
+
return [];
|
|
163
|
+
return value.filter((v) => typeof v === "string");
|
|
164
|
+
}
|
|
165
|
+
function asRecord(value) {
|
|
166
|
+
return value !== null && typeof value === "object" && !Array.isArray(value)
|
|
167
|
+
? value
|
|
168
|
+
: null;
|
|
169
|
+
}
|
|
170
|
+
// True when the doc carries a usable `daftari` sidecar — the exact test
|
|
171
|
+
// okfToDaftari uses to take the verbatim round-trip path. Key presence alone is
|
|
172
|
+
// not enough: a non-object sidecar value is ignored and the doc is synthesized
|
|
173
|
+
// as foreign, so callers gating on "is this a round-trip?" must share this
|
|
174
|
+
// check rather than re-deriving it.
|
|
175
|
+
export function hasDaftariSidecar(okfRaw) {
|
|
176
|
+
const sidecar = okfRaw[DAFTARI_SIDECAR_KEY];
|
|
177
|
+
return sidecar !== null && typeof sidecar === "object" && !Array.isArray(sidecar);
|
|
178
|
+
}
|
|
179
|
+
// True when an OKF `type` names the v0.2 Attested Computation concept. Used by
|
|
180
|
+
// import to flag these docs for deliberate operator review (vault_set_tier) —
|
|
181
|
+
// never to grant write protection automatically: a foreign bundle's
|
|
182
|
+
// self-declared type is not an authorization.
|
|
183
|
+
export function isAttestedComputation(type) {
|
|
184
|
+
return (typeof type === "string" &&
|
|
185
|
+
type.trim().toLowerCase() === OKF_ATTESTED_COMPUTATION_TYPE.toLowerCase());
|
|
186
|
+
}
|
|
187
|
+
// The document date of an OKF doc: v0.2 `generated.at`, falling back to the
|
|
188
|
+
// v0.1 `timestamp` it renamed (the spec-mandated consumer fallback).
|
|
189
|
+
export function dateFromGenerated(okfRaw) {
|
|
190
|
+
const generated = asRecord(okfRaw.generated);
|
|
191
|
+
return dateFromTimestamp(generated?.at) ?? dateFromTimestamp(okfRaw.timestamp);
|
|
192
|
+
}
|
|
193
|
+
export function trustTier(verified) {
|
|
194
|
+
if (!Array.isArray(verified) || verified.length === 0)
|
|
195
|
+
return "unverified";
|
|
196
|
+
const humanReviewed = verified.some((entry) => {
|
|
197
|
+
const by = asRecord(entry)?.by;
|
|
198
|
+
return typeof by === "string" && by.startsWith("human:");
|
|
199
|
+
});
|
|
200
|
+
return humanReviewed ? "human-reviewed" : "machine-confirmed";
|
|
201
|
+
}
|
|
202
|
+
// OKF v0.2 absolute `stale_after` → Daftari's relative `ttl_days`, anchored at
|
|
203
|
+
// the doc's derived date so the freshness promise expires on the same calendar
|
|
204
|
+
// day. A stale_after at or before the anchor clamps to 0 — computeStaleness
|
|
205
|
+
// reads a non-positive TTL as "stale the moment it ages", which is exactly what
|
|
206
|
+
// an already-passed absolute date means. Null when either date is unusable.
|
|
207
|
+
export function ttlFromStaleAfter(staleAfter, anchorDate) {
|
|
208
|
+
const target = dateFromTimestamp(staleAfter);
|
|
209
|
+
const anchor = normalizeIsoDate(anchorDate);
|
|
210
|
+
if (target === undefined || anchor === null)
|
|
211
|
+
return null;
|
|
212
|
+
const days = Math.round((Date.parse(`${target}T00:00:00Z`) - Date.parse(`${anchor}T00:00:00Z`)) / 86_400_000);
|
|
213
|
+
return Math.max(0, days);
|
|
214
|
+
}
|
|
215
|
+
// Flatten OKF provenance into Daftari's `sources: string[]`: the top-level
|
|
216
|
+
// `resource` URI first, then each v0.2 structured source (its `resource` URI
|
|
217
|
+
// when present, else its `id`). Per-source signals like author/usage_count
|
|
218
|
+
// don't fit a bare string — the raw entries are preserved under
|
|
219
|
+
// `okf_sources` by okfToDaftari so nothing is lost.
|
|
220
|
+
export function sourcesFromOkf(okfRaw) {
|
|
221
|
+
const out = [];
|
|
222
|
+
const push = (v) => {
|
|
223
|
+
if (typeof v === "string" && v.trim() !== "" && !out.includes(v))
|
|
224
|
+
out.push(v);
|
|
225
|
+
};
|
|
226
|
+
push(okfRaw.resource);
|
|
227
|
+
if (Array.isArray(okfRaw.sources)) {
|
|
228
|
+
for (const entry of okfRaw.sources) {
|
|
229
|
+
if (typeof entry === "string") {
|
|
230
|
+
push(entry);
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
const rec = asRecord(entry);
|
|
234
|
+
if (rec !== null)
|
|
235
|
+
push(typeof rec.resource === "string" ? rec.resource : rec.id);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
return out;
|
|
239
|
+
}
|
|
240
|
+
// OKF fields the synthesis below consumes into a native Daftari slot (or, for
|
|
241
|
+
// description, re-derives from the body on a future export). Everything else —
|
|
242
|
+
// the lossy-mapped trust record (`generated`, `verified`, `sources`), the
|
|
243
|
+
// Attested Computation machinery (runtime/parameters/executor/receipt/attester),
|
|
244
|
+
// and any producer-defined field — is preserved under the `okf_` prefix so the
|
|
245
|
+
// import stays non-destructive.
|
|
246
|
+
const OKF_CONSUMED_FIELDS = new Set([
|
|
247
|
+
"type",
|
|
248
|
+
"title",
|
|
249
|
+
"description",
|
|
250
|
+
"resource",
|
|
251
|
+
"tags",
|
|
252
|
+
"timestamp",
|
|
253
|
+
"status",
|
|
254
|
+
"stale_after",
|
|
255
|
+
DAFTARI_SIDECAR_KEY,
|
|
256
|
+
]);
|
|
257
|
+
// OKF concept-doc frontmatter → Daftari frontmatter (as a raw record ready for
|
|
258
|
+
// serializeDocument). When the doc carries a `daftari` sidecar (it came from
|
|
259
|
+
// `daftari okf export`), that verbatim frontmatter is used directly for an exact
|
|
260
|
+
// round-trip. Otherwise a Daftari frontmatter is synthesized from the OKF core
|
|
261
|
+
// fields, conservatively: imported knowledge lands as a `draft` in the
|
|
262
|
+
// `accumulation` domain, and the original OKF `type` is preserved in an
|
|
263
|
+
// `okf_type` field so nothing is silently lost.
|
|
264
|
+
//
|
|
265
|
+
// v0.2 trust signals feed the synthesis:
|
|
266
|
+
// - `generated.at` dates the doc (falling back to the v0.1 `timestamp`).
|
|
267
|
+
// - `verified` sets confidence by trust tier: human-reviewed lands `high`.
|
|
268
|
+
// Positive signals only ever raise confidence — absence keeps the default
|
|
269
|
+
// `medium`, because an unverified v0.2 doc is indistinguishable from a
|
|
270
|
+
// v0.1 doc that never had the chance to carry the field.
|
|
271
|
+
// - `status: deprecated` imports as `deprecated` (retired knowledge must not
|
|
272
|
+
// resurface as a fresh draft); `draft`/`stable`/absent stay `draft` — this
|
|
273
|
+
// vault has not canonized foreign content, however stable its producer
|
|
274
|
+
// considers it.
|
|
275
|
+
// - `stale_after` converts to `ttl_days` anchored at the doc date.
|
|
276
|
+
// - An `Attested Computation` is NOT auto-elevated to a write-protected
|
|
277
|
+
// tier: `tier: source` is an enforcement mechanism whose only sanctioned
|
|
278
|
+
// grant path is vault_set_tier (reason required, provenance-logged), and a
|
|
279
|
+
// foreign bundle's self-declared `type` must not buy enforcement without
|
|
280
|
+
// that gate. Import surfaces the doc in a warning instead so an operator
|
|
281
|
+
// can review and elevate deliberately; the attestation machinery survives
|
|
282
|
+
// under `okf_*` keys either way.
|
|
283
|
+
export function okfToDaftari(okfRaw, ctx) {
|
|
284
|
+
if (hasDaftariSidecar(okfRaw)) {
|
|
285
|
+
return { ...okfRaw[DAFTARI_SIDECAR_KEY] };
|
|
286
|
+
}
|
|
287
|
+
const title = typeof okfRaw.title === "string" && okfRaw.title.trim() !== ""
|
|
288
|
+
? okfRaw.title
|
|
289
|
+
: titleFromPath(ctx.relPath);
|
|
290
|
+
const okfType = typeof okfRaw.type === "string" ? okfRaw.type : "";
|
|
291
|
+
const collection = collectionFromPath(ctx.relPath) ?? slugify(okfType) ?? DEFAULT_IMPORT_COLLECTION;
|
|
292
|
+
const date = dateFromGenerated(okfRaw) ?? ctx.today;
|
|
293
|
+
const okfStatus = typeof okfRaw.status === "string" ? okfRaw.status.trim().toLowerCase() : "";
|
|
294
|
+
const out = {
|
|
295
|
+
title,
|
|
296
|
+
domain: "accumulation",
|
|
297
|
+
collection,
|
|
298
|
+
status: okfStatus === "deprecated" ? "deprecated" : "draft",
|
|
299
|
+
confidence: trustTier(okfRaw.verified) === "human-reviewed" ? "high" : "medium",
|
|
300
|
+
created: date,
|
|
301
|
+
updated: date,
|
|
302
|
+
updated_by: ctx.updatedBy,
|
|
303
|
+
provenance: "direct",
|
|
304
|
+
sources: sourcesFromOkf(okfRaw),
|
|
305
|
+
superseded_by: null,
|
|
306
|
+
ttl_days: ttlFromStaleAfter(okfRaw.stale_after, date),
|
|
307
|
+
tags: asStringArray(okfRaw.tags),
|
|
308
|
+
describes: [],
|
|
309
|
+
questions_answered: [],
|
|
310
|
+
questions_raised: [],
|
|
311
|
+
};
|
|
312
|
+
// Preserve the OKF kind so the import is not lossy. serializeDocument writes
|
|
313
|
+
// unknown fields through untouched.
|
|
314
|
+
if (okfType.trim() !== "")
|
|
315
|
+
out.okf_type = okfType;
|
|
316
|
+
// Preserve everything the synthesis did not consume losslessly, prefixed so
|
|
317
|
+
// it can never collide with a Daftari built-in.
|
|
318
|
+
for (const [key, value] of Object.entries(okfRaw)) {
|
|
319
|
+
if (OKF_CONSUMED_FIELDS.has(key))
|
|
320
|
+
continue;
|
|
321
|
+
if (value === null || value === undefined)
|
|
322
|
+
continue;
|
|
323
|
+
out[`${OKF_PRESERVED_PREFIX}${key}`] = value;
|
|
324
|
+
}
|
|
325
|
+
return out;
|
|
326
|
+
}
|
|
327
|
+
//# sourceMappingURL=map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map.js","sourceRoot":"","sources":["../../src/okf/map.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const OKF_VERSION = "0.2";
|
|
2
|
+
export declare const OKF_INDEX_FILE = "index.md";
|
|
3
|
+
export declare const OKF_LOG_FILE = "log.md";
|
|
4
|
+
export declare const OKF_RESERVED_FILES: readonly ["index.md", "log.md"];
|
|
5
|
+
export declare const DAFTARI_SIDECAR_KEY = "daftari";
|
|
6
|
+
export declare const DEFAULT_OKF_TYPE = "note";
|
|
7
|
+
export declare const DEFAULT_IMPORT_COLLECTION = "imported";
|
|
8
|
+
export declare const OKF_CORE_FIELDS: readonly ["type", "title", "description", "resource", "tags", "generated", "verified", "status", "stale_after", "sources"];
|
|
9
|
+
export declare const OKF_STATUSES: readonly ["draft", "stable", "deprecated"];
|
|
10
|
+
export type OkfStatus = (typeof OKF_STATUSES)[number];
|
|
11
|
+
export declare const OKF_ATTESTED_COMPUTATION_TYPE = "Attested Computation";
|
|
12
|
+
export declare const OKF_PRESERVED_PREFIX = "okf_";
|
|
13
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/okf/types.ts"],"names":[],"mappings":"AAiCA,eAAO,MAAM,WAAW,QAAQ,CAAC;AAIjC,eAAO,MAAM,cAAc,aAAa,CAAC;AACzC,eAAO,MAAM,YAAY,WAAW,CAAC;AACrC,eAAO,MAAM,kBAAkB,iCAA0C,CAAC;AAO1E,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAM7C,eAAO,MAAM,gBAAgB,SAAS,CAAC;AAIvC,eAAO,MAAM,yBAAyB,aAAa,CAAC;AAMpD,eAAO,MAAM,eAAe,4HAWlB,CAAC;AAGX,eAAO,MAAM,YAAY,4CAA6C,CAAC;AACvE,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAOtD,eAAO,MAAM,6BAA6B,yBAAyB,CAAC;AAMpE,eAAO,MAAM,oBAAoB,SAAS,CAAC"}
|