@superbee/core 0.1.3 → 0.1.5
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/dist/document-mutation.d.ts.map +1 -1
- package/dist/document-mutation.js +16 -9
- package/dist/document-mutation.js.map +1 -1
- package/dist/document-write-policy.d.ts +16 -5
- package/dist/document-write-policy.d.ts.map +1 -1
- package/dist/document-write-policy.js +93 -34
- package/dist/document-write-policy.js.map +1 -1
- package/dist/errors.d.ts +9 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +13 -0
- package/dist/errors.js.map +1 -1
- package/dist/freshness.d.ts +4 -2
- package/dist/freshness.d.ts.map +1 -1
- package/dist/freshness.js +15 -23
- package/dist/freshness.js.map +1 -1
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -2
- package/dist/index.js.map +1 -1
- package/dist/kinds.d.ts +1 -1
- package/dist/kinds.d.ts.map +1 -1
- package/dist/kinds.js +1 -1
- package/dist/kinds.js.map +1 -1
- package/dist/okf-actor.d.ts +37 -0
- package/dist/okf-actor.d.ts.map +1 -0
- package/dist/okf-actor.js +87 -0
- package/dist/okf-actor.js.map +1 -0
- package/dist/okf-timestamps.d.ts +11 -0
- package/dist/okf-timestamps.d.ts.map +1 -0
- package/dist/okf-timestamps.js +75 -0
- package/dist/okf-timestamps.js.map +1 -0
- package/dist/recipes.d.ts +63 -0
- package/dist/recipes.d.ts.map +1 -0
- package/dist/recipes.js +463 -0
- package/dist/recipes.js.map +1 -0
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/verification.d.ts +64 -0
- package/dist/verification.d.ts.map +1 -0
- package/dist/verification.js +175 -0
- package/dist/verification.js.map +1 -0
- package/dist/view-admission.d.ts +9 -0
- package/dist/view-admission.d.ts.map +1 -0
- package/dist/view-admission.js +22 -0
- package/dist/view-admission.js.map +1 -0
- package/package.json +13 -1
package/dist/recipes.js
ADDED
|
@@ -0,0 +1,463 @@
|
|
|
1
|
+
// The ONE pure recipe parse+validate+materialize pipeline. Sources only acquire RecipeFile[];
|
|
2
|
+
// everything downstream of that byte boundary is distribution-neutral and branches on content,
|
|
3
|
+
// never on whether the files came from built-in constants, a folder, or a future source adapter.
|
|
4
|
+
import { parseMarkdown } from "./frontmatter.js";
|
|
5
|
+
import { parseConventionDoc, CONVENTIONS_PREFIX, CONVENTION_TYPE } from "./kinds.js";
|
|
6
|
+
import { conceptIdFromPath, assertSafeConceptId, isReservedFile } from "./paths.js";
|
|
7
|
+
import { declaredAccessValue, isAnyEntryKey, isAnyRegistryId, isPageTypeName, PAGE_ENTRY_PREFIX, PAGE_REGISTRY_PREFIX, VIEW_ENTRY_PREFIX, VIEW_REGISTRY_PREFIX, } from "./page.js";
|
|
8
|
+
/** Reserved manifest keys are surfaced as warnings, not applied or silently ignored. */
|
|
9
|
+
const RESERVED_MANIFEST_KEYS = ["composes", "seeds", "requires"];
|
|
10
|
+
function nonEmptyString(v) {
|
|
11
|
+
return typeof v === "string" ? v.trim() : "";
|
|
12
|
+
}
|
|
13
|
+
function isRecord(value) {
|
|
14
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
15
|
+
}
|
|
16
|
+
const REFERENCE_SEGMENT = /^[A-Za-z0-9._-]+$/;
|
|
17
|
+
function isSafeRecipeReferencePath(value) {
|
|
18
|
+
if (!value.startsWith("references/") || !value.endsWith(".md") || /[\\%?#]/.test(value))
|
|
19
|
+
return false;
|
|
20
|
+
const segments = value.slice("references/".length).split("/");
|
|
21
|
+
return segments.every((segment) => !segment.startsWith(".") && REFERENCE_SEGMENT.test(segment));
|
|
22
|
+
}
|
|
23
|
+
function parseReferenceDeclarations(manifest, recipeId, source) {
|
|
24
|
+
if (manifest.references === undefined)
|
|
25
|
+
return { ok: true, references: [] };
|
|
26
|
+
if (manifest.content_policy !== "definitions-only") {
|
|
27
|
+
return {
|
|
28
|
+
ok: false,
|
|
29
|
+
error: {
|
|
30
|
+
code: "RECIPE_MALFORMED",
|
|
31
|
+
message: `recipe '${recipeId}' at '${source}' declares references but does not declare ` +
|
|
32
|
+
"'content_policy: definitions-only', which is required for portable assets",
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
if (!Array.isArray(manifest.references)) {
|
|
37
|
+
return {
|
|
38
|
+
ok: false,
|
|
39
|
+
error: { code: "RECIPE_MALFORMED", message: `recipe '${recipeId}': 'references' must be a list` },
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
const references = [];
|
|
43
|
+
const targets = new Set();
|
|
44
|
+
for (const [index, value] of manifest.references.entries()) {
|
|
45
|
+
if (typeof value !== "string" || value === "") {
|
|
46
|
+
return {
|
|
47
|
+
ok: false,
|
|
48
|
+
error: {
|
|
49
|
+
code: "RECIPE_MALFORMED",
|
|
50
|
+
message: `recipe '${recipeId}': references[${index}] must be a non-empty path`,
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
if (!isSafeRecipeReferencePath(value)) {
|
|
55
|
+
return {
|
|
56
|
+
ok: false,
|
|
57
|
+
error: {
|
|
58
|
+
code: "RECIPE_UNSAFE_PATH",
|
|
59
|
+
message: `recipe '${recipeId}': Reference '${value}' must be a .md file under 'references/'`,
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
const id = conceptIdFromPath(value);
|
|
64
|
+
try {
|
|
65
|
+
assertSafeConceptId(id);
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return {
|
|
69
|
+
ok: false,
|
|
70
|
+
error: { code: "RECIPE_UNSAFE_PATH", message: `recipe '${recipeId}' contains an unsafe Reference path` },
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
if (isReservedFile(value)) {
|
|
74
|
+
return {
|
|
75
|
+
ok: false,
|
|
76
|
+
error: { code: "RECIPE_UNSAFE_PATH", message: `recipe '${recipeId}' contains a reserved filename: '${value}'` },
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
const target = id.toLowerCase();
|
|
80
|
+
if (targets.has(target)) {
|
|
81
|
+
return {
|
|
82
|
+
ok: false,
|
|
83
|
+
error: { code: "RECIPE_MALFORMED", message: `recipe '${recipeId}' declares duplicate Reference '${value}'` },
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
targets.add(target);
|
|
87
|
+
references.push({ path: value, id });
|
|
88
|
+
}
|
|
89
|
+
return { ok: true, references };
|
|
90
|
+
}
|
|
91
|
+
function parsePageDeclarations(manifest, recipeId, source) {
|
|
92
|
+
if (manifest.pages === undefined)
|
|
93
|
+
return { ok: true, pages: [] };
|
|
94
|
+
if (manifest.content_policy !== "definitions-only") {
|
|
95
|
+
return {
|
|
96
|
+
ok: false,
|
|
97
|
+
error: {
|
|
98
|
+
code: "RECIPE_MALFORMED",
|
|
99
|
+
message: `recipe '${recipeId}' at '${source}' declares pages but does not declare ` +
|
|
100
|
+
"'content_policy: definitions-only', which is required for portable assets",
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
if (!Array.isArray(manifest.pages)) {
|
|
105
|
+
return {
|
|
106
|
+
ok: false,
|
|
107
|
+
error: { code: "RECIPE_MALFORMED", message: `recipe '${recipeId}': 'pages' must be a list` },
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
const pages = [];
|
|
111
|
+
const registries = new Set();
|
|
112
|
+
const entries = new Set();
|
|
113
|
+
for (const [index, value] of manifest.pages.entries()) {
|
|
114
|
+
if (!isRecord(value)) {
|
|
115
|
+
return {
|
|
116
|
+
ok: false,
|
|
117
|
+
error: { code: "RECIPE_MALFORMED", message: `recipe '${recipeId}': pages[${index}] must be a map` },
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
const registry = typeof value.registry === "string" ? value.registry : "";
|
|
121
|
+
const entry = typeof value.entry === "string" ? value.entry : "";
|
|
122
|
+
if (!registry || !entry) {
|
|
123
|
+
return {
|
|
124
|
+
ok: false,
|
|
125
|
+
error: {
|
|
126
|
+
code: "RECIPE_MALFORMED",
|
|
127
|
+
message: `recipe '${recipeId}': pages[${index}] requires non-empty 'registry' and 'entry' paths`,
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
if ((!registry.startsWith(VIEW_REGISTRY_PREFIX) && !registry.startsWith(PAGE_REGISTRY_PREFIX)) || !registry.endsWith(".md")) {
|
|
132
|
+
return {
|
|
133
|
+
ok: false,
|
|
134
|
+
error: {
|
|
135
|
+
code: "RECIPE_UNSAFE_PATH",
|
|
136
|
+
message: `recipe '${recipeId}': View registry '${registry}' must be a .md file under '${VIEW_REGISTRY_PREFIX}' (or legacy '${PAGE_REGISTRY_PREFIX}')`,
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
if ((!entry.startsWith(VIEW_ENTRY_PREFIX) && !entry.startsWith(PAGE_ENTRY_PREFIX)) || !entry.endsWith(".html")) {
|
|
141
|
+
return {
|
|
142
|
+
ok: false,
|
|
143
|
+
error: {
|
|
144
|
+
code: "RECIPE_UNSAFE_PATH",
|
|
145
|
+
message: `recipe '${recipeId}': View entry '${entry}' must be a .html file under '${VIEW_ENTRY_PREFIX}' (or legacy '${PAGE_ENTRY_PREFIX}')`,
|
|
146
|
+
},
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
const registryId = registry.slice(0, -3);
|
|
150
|
+
if (!isAnyRegistryId(registryId) || !isAnyEntryKey(entry) || isReservedFile(registry)) {
|
|
151
|
+
return {
|
|
152
|
+
ok: false,
|
|
153
|
+
error: { code: "RECIPE_UNSAFE_PATH", message: `recipe '${recipeId}' contains an unsafe View path` },
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
const registryTarget = registryId.toLowerCase();
|
|
157
|
+
const entryTarget = entry.toLowerCase();
|
|
158
|
+
if (registries.has(registryTarget) || entries.has(entryTarget)) {
|
|
159
|
+
return {
|
|
160
|
+
ok: false,
|
|
161
|
+
error: {
|
|
162
|
+
code: "RECIPE_MALFORMED",
|
|
163
|
+
message: `recipe '${recipeId}' declares a duplicate View registry or entry at pages[${index}]`,
|
|
164
|
+
},
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
registries.add(registryTarget);
|
|
168
|
+
entries.add(entryTarget);
|
|
169
|
+
pages.push({ registry, registryId, entry });
|
|
170
|
+
}
|
|
171
|
+
return { ok: true, pages };
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Parse and validate caller-supplied recipe files without I/O or installation.
|
|
175
|
+
* Structural recipe errors return a failed LoadResult; malformed YAML throws
|
|
176
|
+
* MalformedDocumentError, as in the shared document codec.
|
|
177
|
+
*/
|
|
178
|
+
export function parseRecipeFiles(files, source) {
|
|
179
|
+
const manifestFile = files.find((f) => f.path === "recipe.md");
|
|
180
|
+
if (!manifestFile) {
|
|
181
|
+
return {
|
|
182
|
+
ok: false,
|
|
183
|
+
error: { code: "RECIPE_MALFORMED", message: `recipe at '${source}' is missing its required recipe.md manifest` },
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
const { frontmatter: manifest } = parseMarkdown(manifestFile.bytes);
|
|
187
|
+
if (manifest.type !== "Recipe") {
|
|
188
|
+
return {
|
|
189
|
+
ok: false,
|
|
190
|
+
error: {
|
|
191
|
+
code: "RECIPE_MALFORMED",
|
|
192
|
+
message: `recipe at '${source}': recipe.md must declare 'type: Recipe' (got '${String(manifest.type)}')`,
|
|
193
|
+
},
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
const id = nonEmptyString(manifest.id);
|
|
197
|
+
const title = nonEmptyString(manifest.title);
|
|
198
|
+
const version = nonEmptyString(manifest.version);
|
|
199
|
+
const summary = nonEmptyString(manifest.summary);
|
|
200
|
+
const missing = [
|
|
201
|
+
!id && "id",
|
|
202
|
+
!title && "title",
|
|
203
|
+
!version && "version",
|
|
204
|
+
!summary && "summary",
|
|
205
|
+
].filter((v) => Boolean(v));
|
|
206
|
+
if (missing.length > 0) {
|
|
207
|
+
return {
|
|
208
|
+
ok: false,
|
|
209
|
+
error: {
|
|
210
|
+
code: "RECIPE_MALFORMED",
|
|
211
|
+
message: `recipe at '${source}': recipe.md is missing required non-empty field(s): ${missing.join(", ")}`,
|
|
212
|
+
},
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
const contentPolicy = manifest.content_policy;
|
|
216
|
+
if (contentPolicy !== undefined && contentPolicy !== "definitions-only") {
|
|
217
|
+
return {
|
|
218
|
+
ok: false,
|
|
219
|
+
error: {
|
|
220
|
+
code: "RECIPE_MALFORMED",
|
|
221
|
+
message: `recipe '${id}' at '${source}' has unsupported content_policy '${String(contentPolicy)}'`,
|
|
222
|
+
},
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
const pageDeclarations = parsePageDeclarations(manifest, id, source);
|
|
226
|
+
if (!pageDeclarations.ok)
|
|
227
|
+
return pageDeclarations;
|
|
228
|
+
const referenceDeclarations = parseReferenceDeclarations(manifest, id, source);
|
|
229
|
+
if (!referenceDeclarations.ok)
|
|
230
|
+
return referenceDeclarations;
|
|
231
|
+
const declaredPageFiles = new Set(pageDeclarations.pages.flatMap((page) => [page.registry, page.entry]));
|
|
232
|
+
const declaredReferenceFiles = new Set(referenceDeclarations.references.map((reference) => reference.path));
|
|
233
|
+
const warnings = [];
|
|
234
|
+
for (const key of RESERVED_MANIFEST_KEYS) {
|
|
235
|
+
if (key in manifest) {
|
|
236
|
+
warnings.push({
|
|
237
|
+
code: "RECIPE_MANIFEST_RESERVED_KEY",
|
|
238
|
+
message: `recipe '${id}' declares '${key}:' in recipe.md, which this version does not apply (reserved for a future composition surface) — it is declared but NOT applied, not silently ignored.`,
|
|
239
|
+
field: key,
|
|
240
|
+
severity: "warning",
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
const docs = [];
|
|
245
|
+
const governsSeen = new Map(); // governs -> the doc id that first declared it
|
|
246
|
+
const governsList = [];
|
|
247
|
+
for (const file of files) {
|
|
248
|
+
if (file.path === "recipe.md")
|
|
249
|
+
continue;
|
|
250
|
+
if (!file.path.startsWith(CONVENTIONS_PREFIX)) {
|
|
251
|
+
if (declaredPageFiles.has(file.path))
|
|
252
|
+
continue;
|
|
253
|
+
if (declaredReferenceFiles.has(file.path))
|
|
254
|
+
continue;
|
|
255
|
+
if (contentPolicy === "definitions-only") {
|
|
256
|
+
return {
|
|
257
|
+
ok: false,
|
|
258
|
+
error: {
|
|
259
|
+
code: "RECIPE_UNSAFE_PATH",
|
|
260
|
+
message: `recipe '${id}' violates definitions-only policy with undeclared file '${file.path}'`,
|
|
261
|
+
},
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
// Backward compatibility: the historical filesystem source never acquired files outside
|
|
265
|
+
// recipe.md + conventions/, so legacy packages may continue carrying ignored README/assets.
|
|
266
|
+
continue;
|
|
267
|
+
}
|
|
268
|
+
const conceptId = conceptIdFromPath(file.path);
|
|
269
|
+
try {
|
|
270
|
+
assertSafeConceptId(conceptId);
|
|
271
|
+
}
|
|
272
|
+
catch {
|
|
273
|
+
return {
|
|
274
|
+
ok: false,
|
|
275
|
+
error: { code: "RECIPE_UNSAFE_PATH", message: `recipe '${id}' contains an unsafe path '${file.path}'` },
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
if (isReservedFile(file.path)) {
|
|
279
|
+
return {
|
|
280
|
+
ok: false,
|
|
281
|
+
error: { code: "RECIPE_UNSAFE_PATH", message: `recipe '${id}' contains a reserved filename: '${file.path}'` },
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
const { frontmatter, body } = parseMarkdown(file.bytes);
|
|
285
|
+
const doc = { id: conceptId, frontmatter, body };
|
|
286
|
+
// Mirror loadKinds' own skip-with-warning semantics (a doc that is not `type: Convention`, or
|
|
287
|
+
// has an empty `governs`, is not a kind declaration at all) WITHOUT seeding a backend.
|
|
288
|
+
if (frontmatter.type !== CONVENTION_TYPE) {
|
|
289
|
+
if (contentPolicy === "definitions-only") {
|
|
290
|
+
return {
|
|
291
|
+
ok: false,
|
|
292
|
+
error: {
|
|
293
|
+
code: "RECIPE_MALFORMED",
|
|
294
|
+
message: `recipe '${id}': '${doc.id}' must declare 'type: ${CONVENTION_TYPE}'`,
|
|
295
|
+
},
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
warnings.push({
|
|
299
|
+
code: "KIND_CONVENTION_MALFORMED",
|
|
300
|
+
message: `recipe '${id}': skipped '${doc.id}' (type '${String(frontmatter.type)}', expected '${CONVENTION_TYPE}').`,
|
|
301
|
+
field: doc.id,
|
|
302
|
+
severity: "warning",
|
|
303
|
+
});
|
|
304
|
+
continue;
|
|
305
|
+
}
|
|
306
|
+
const governs = nonEmptyString(frontmatter.governs);
|
|
307
|
+
if (!governs) {
|
|
308
|
+
if (contentPolicy === "definitions-only") {
|
|
309
|
+
return {
|
|
310
|
+
ok: false,
|
|
311
|
+
error: { code: "RECIPE_MALFORMED", message: `recipe '${id}': '${doc.id}' needs a non-empty 'governs'` },
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
warnings.push({
|
|
315
|
+
code: "KIND_CONVENTION_MALFORMED",
|
|
316
|
+
message: `recipe '${id}': skipped '${doc.id}' (missing or empty 'governs' field).`,
|
|
317
|
+
field: doc.id,
|
|
318
|
+
severity: "warning",
|
|
319
|
+
});
|
|
320
|
+
continue;
|
|
321
|
+
}
|
|
322
|
+
if (contentPolicy === "definitions-only") {
|
|
323
|
+
const parsed = parseConventionDoc(doc);
|
|
324
|
+
if (!parsed.ok || parsed.warnings.length > 0) {
|
|
325
|
+
const reasons = [!parsed.ok ? parsed.reason : "", ...parsed.warnings.map((warning) => warning.message)].filter(Boolean);
|
|
326
|
+
return {
|
|
327
|
+
ok: false,
|
|
328
|
+
error: {
|
|
329
|
+
code: "RECIPE_MALFORMED",
|
|
330
|
+
message: `recipe '${id}': invalid Convention '${doc.id}': ${reasons.join("; ")}`,
|
|
331
|
+
},
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
// Self-duplicate governs WITHIN this recipe is a malformed recipe —
|
|
336
|
+
// NOT a skip-with-warning, since it means the recipe's own conventions disagree about a type
|
|
337
|
+
// it declares governing twice.
|
|
338
|
+
if (governsSeen.has(governs)) {
|
|
339
|
+
return {
|
|
340
|
+
ok: false,
|
|
341
|
+
error: {
|
|
342
|
+
code: "RECIPE_MALFORMED",
|
|
343
|
+
message: `recipe '${id}' declares '${governs}' twice ('${governsSeen.get(governs)}' and '${doc.id}')`,
|
|
344
|
+
},
|
|
345
|
+
};
|
|
346
|
+
}
|
|
347
|
+
governsSeen.set(governs, doc.id);
|
|
348
|
+
governsList.push(governs);
|
|
349
|
+
docs.push(doc);
|
|
350
|
+
}
|
|
351
|
+
if (docs.length === 0) {
|
|
352
|
+
return {
|
|
353
|
+
ok: false,
|
|
354
|
+
error: { code: "RECIPE_EMPTY", message: `recipe '${id}' at '${source}' declares zero valid convention docs` },
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
const pages = [];
|
|
358
|
+
for (const declaration of pageDeclarations.pages) {
|
|
359
|
+
const registryFile = files.find((file) => file.path === declaration.registry);
|
|
360
|
+
const entryFile = files.find((file) => file.path === declaration.entry);
|
|
361
|
+
if (!registryFile || !entryFile) {
|
|
362
|
+
const missingPath = !registryFile ? declaration.registry : declaration.entry;
|
|
363
|
+
return {
|
|
364
|
+
ok: false,
|
|
365
|
+
error: { code: "RECIPE_MALFORMED", message: `recipe '${id}' is missing declared View file '${missingPath}'` },
|
|
366
|
+
};
|
|
367
|
+
}
|
|
368
|
+
if (entryFile.bytes.trim() === "") {
|
|
369
|
+
return {
|
|
370
|
+
ok: false,
|
|
371
|
+
error: { code: "RECIPE_MALFORMED", message: `recipe '${id}': View entry '${declaration.entry}' is empty` },
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
const { frontmatter, body } = parseMarkdown(registryFile.bytes);
|
|
375
|
+
if (!isPageTypeName(frontmatter.type)) {
|
|
376
|
+
return {
|
|
377
|
+
ok: false,
|
|
378
|
+
error: {
|
|
379
|
+
code: "RECIPE_MALFORMED",
|
|
380
|
+
message: `recipe '${id}': '${declaration.registry}' must declare 'type: View' (the legacy 'type: Page' no longer registers)`,
|
|
381
|
+
},
|
|
382
|
+
};
|
|
383
|
+
}
|
|
384
|
+
if (!nonEmptyString(frontmatter.title)) {
|
|
385
|
+
return {
|
|
386
|
+
ok: false,
|
|
387
|
+
error: { code: "RECIPE_MALFORMED", message: `recipe '${id}': '${declaration.registry}' needs a title` },
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
const access = declaredAccessValue(frontmatter);
|
|
391
|
+
if (access !== "none" && access !== "bundle-read" && access !== "bundle-propose") {
|
|
392
|
+
return {
|
|
393
|
+
ok: false,
|
|
394
|
+
error: {
|
|
395
|
+
code: "RECIPE_MALFORMED",
|
|
396
|
+
message: `recipe '${id}': '${declaration.registry}' needs access: none, access: bundle-read, or access: bundle-propose (the legacy 'bridge:' spelling is no longer read)`,
|
|
397
|
+
},
|
|
398
|
+
};
|
|
399
|
+
}
|
|
400
|
+
if (frontmatter.entry !== declaration.entry) {
|
|
401
|
+
return {
|
|
402
|
+
ok: false,
|
|
403
|
+
error: {
|
|
404
|
+
code: "RECIPE_MALFORMED",
|
|
405
|
+
message: `recipe '${id}': '${declaration.registry}' entry '${String(frontmatter.entry)}' ` +
|
|
406
|
+
`does not match manifest entry '${declaration.entry}'`,
|
|
407
|
+
},
|
|
408
|
+
};
|
|
409
|
+
}
|
|
410
|
+
pages.push({
|
|
411
|
+
registry: { id: declaration.registryId, frontmatter, body },
|
|
412
|
+
entry: declaration.entry,
|
|
413
|
+
html: entryFile.bytes,
|
|
414
|
+
});
|
|
415
|
+
}
|
|
416
|
+
const references = [];
|
|
417
|
+
for (const declaration of referenceDeclarations.references) {
|
|
418
|
+
const referenceFile = files.find((file) => file.path === declaration.path);
|
|
419
|
+
if (!referenceFile) {
|
|
420
|
+
return {
|
|
421
|
+
ok: false,
|
|
422
|
+
error: {
|
|
423
|
+
code: "RECIPE_MALFORMED",
|
|
424
|
+
message: `recipe '${id}' is missing declared Reference file '${declaration.path}'`,
|
|
425
|
+
},
|
|
426
|
+
};
|
|
427
|
+
}
|
|
428
|
+
const { frontmatter, body } = parseMarkdown(referenceFile.bytes);
|
|
429
|
+
if (frontmatter.type !== "Reference") {
|
|
430
|
+
return {
|
|
431
|
+
ok: false,
|
|
432
|
+
error: {
|
|
433
|
+
code: "RECIPE_MALFORMED",
|
|
434
|
+
message: `recipe '${id}': '${declaration.path}' must declare 'type: Reference'`,
|
|
435
|
+
},
|
|
436
|
+
};
|
|
437
|
+
}
|
|
438
|
+
if (!nonEmptyString(frontmatter.title)) {
|
|
439
|
+
return {
|
|
440
|
+
ok: false,
|
|
441
|
+
error: { code: "RECIPE_MALFORMED", message: `recipe '${id}': '${declaration.path}' needs a title` },
|
|
442
|
+
};
|
|
443
|
+
}
|
|
444
|
+
references.push({ doc: { id: declaration.id, frontmatter, body } });
|
|
445
|
+
}
|
|
446
|
+
const recipe = {
|
|
447
|
+
id,
|
|
448
|
+
title,
|
|
449
|
+
version,
|
|
450
|
+
summary,
|
|
451
|
+
offer: nonEmptyString(manifest.offer) || title,
|
|
452
|
+
source,
|
|
453
|
+
docs,
|
|
454
|
+
pages,
|
|
455
|
+
references,
|
|
456
|
+
governs: governsList,
|
|
457
|
+
warnings,
|
|
458
|
+
};
|
|
459
|
+
if (contentPolicy === "definitions-only")
|
|
460
|
+
recipe.contentPolicy = contentPolicy;
|
|
461
|
+
return { ok: true, recipe };
|
|
462
|
+
}
|
|
463
|
+
//# sourceMappingURL=recipes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recipes.js","sourceRoot":"","sources":["../src/recipes.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -413,7 +413,7 @@ export interface EdgeFilter {
|
|
|
413
413
|
/** Restrict to edges whose display text exactly equals this value. */
|
|
414
414
|
text?: string;
|
|
415
415
|
}
|
|
416
|
-
/** A consumer-derived freshness verdict, including OKF v0.2's absolute `stale_after`
|
|
416
|
+
/** A consumer-derived freshness verdict, including OKF v0.2's absolute `stale_after` instant. */
|
|
417
417
|
export type FreshnessVerdict = "fresh" | "stale" | "empty";
|
|
418
418
|
/** Inputs for a {@link freshness} judgment. */
|
|
419
419
|
export interface FreshnessOptions {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/** One verification event. Producer extras beyond `by`/`at` are preserved, never interpreted. */
|
|
2
|
+
export interface VerificationEvent {
|
|
3
|
+
by: string;
|
|
4
|
+
at?: string;
|
|
5
|
+
[extra: string]: unknown;
|
|
6
|
+
}
|
|
7
|
+
/** Trust tiers, lowest to highest (SPEC 5.3). */
|
|
8
|
+
export type TrustTier = "unverified" | "machine-confirmed" | "human-reviewed";
|
|
9
|
+
/** The three tiers in ascending order — the one place a consumer iterates them. */
|
|
10
|
+
export declare const TRUST_TIERS: readonly TrustTier[];
|
|
11
|
+
/** The derived projection name surfaces expose (`list --fields trust`, receipts, status counts). */
|
|
12
|
+
export declare const TRUST_TIER_FIELD = "trust";
|
|
13
|
+
/**
|
|
14
|
+
* The document's verification events as the list the spec defines, or `[]` when the key is absent.
|
|
15
|
+
* A bare `{ by, at }` mapping reads as a one-element list (SPEC 5.2 MUST). Entries that carry no
|
|
16
|
+
* usable `by` cannot name a verifier and therefore cannot raise a tier; they are skipped here, and
|
|
17
|
+
* {@link appendVerificationEvent} refuses to write around them.
|
|
18
|
+
*/
|
|
19
|
+
export declare function verificationEvents(frontmatter: Readonly<Record<string, unknown>>): VerificationEvent[];
|
|
20
|
+
/** Derive the trust tier (SPEC 5.3): keyed on the `human:` prefix of any verifier. */
|
|
21
|
+
export declare function trustTier(frontmatter: Readonly<Record<string, unknown>>): TrustTier;
|
|
22
|
+
/** The latest parseable `at` across the events ("how recently" per SPEC 5.2), or `undefined`. */
|
|
23
|
+
export declare function latestVerifiedAt(events: readonly VerificationEvent[]): string | undefined;
|
|
24
|
+
/** Documents per tier — the one fold `status` and `home` both render. */
|
|
25
|
+
export type TrustTierCounts = Record<TrustTier, number>;
|
|
26
|
+
export declare function trustTierCounts(docs: Iterable<{
|
|
27
|
+
frontmatter: Readonly<Record<string, unknown>>;
|
|
28
|
+
}>): TrustTierCounts;
|
|
29
|
+
/**
|
|
30
|
+
* Parse an instant a verifier supplies, or return `null`. Unlike `Date.parse`, this refuses what
|
|
31
|
+
* a caller did not say: an impossible calendar date (`2026-02-30`, a non-leap `02-29`), an
|
|
32
|
+
* out-of-range time, or a value without a zone designator (which would name a different instant
|
|
33
|
+
* on every host). Read-side consumers stay permissive (see {@link latestVerifiedAt}); this rule
|
|
34
|
+
* guards what gets WRITTEN. Defaults to millisecond truncation; `ceil` compares expiration
|
|
35
|
+
* deadlines against a millisecond clock without expiring before a fractional deadline.
|
|
36
|
+
*/
|
|
37
|
+
export declare function parseIsoInstant(raw: string, rounding?: "truncate" | "ceil"): number | null;
|
|
38
|
+
/**
|
|
39
|
+
* The instant a stored `at` denotes, for comparison and "how recently" selection: the strict
|
|
40
|
+
* grammar first (so every spelling the write path accepts resolves identically), then the
|
|
41
|
+
* permissive `Date.parse` for legacy producer spellings the read side must not drop. `null` when
|
|
42
|
+
* neither understands the value.
|
|
43
|
+
*/
|
|
44
|
+
export declare function storedInstant(value: unknown): number | null;
|
|
45
|
+
export interface AppendVerificationOptions {
|
|
46
|
+
/** The verifier; must satisfy the OKF actor convention (SPEC 7). */
|
|
47
|
+
by: string;
|
|
48
|
+
/** ISO-8601 instant of the confirmation, with a zone designator (see {@link parseIsoInstant}). */
|
|
49
|
+
at: string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Return frontmatter with one more verification event appended. The result is always a list:
|
|
53
|
+
* an absent key becomes `[event]`, a bare mapping becomes `[existing, event]`, a list grows by one.
|
|
54
|
+
* Every other `verified` shape (a scalar, a list containing a non-event) is refused, because
|
|
55
|
+
* rewriting it would destroy trust history the caller did not ask to change.
|
|
56
|
+
*
|
|
57
|
+
* Idempotent: an event that already exists (same `by`, same instant) is already recorded, so the
|
|
58
|
+
* frontmatter is returned as-is and the caller's mutation converges to a no-op — repeating a
|
|
59
|
+
* satisfied verification never manufactures a duplicate confirmation or a new revision.
|
|
60
|
+
*/
|
|
61
|
+
export declare function appendVerificationEvent<F extends Readonly<Record<string, unknown>>>(frontmatter: F, options: AppendVerificationOptions): F & {
|
|
62
|
+
verified: VerificationEvent[];
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=verification.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../src/verification.ts"],"names":[],"mappings":"AAkBA,iGAAiG;AACjG,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,iDAAiD;AACjD,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG,mBAAmB,GAAG,gBAAgB,CAAC;AAE9E,mFAAmF;AACnF,eAAO,MAAM,WAAW,EAAE,SAAS,SAAS,EAI1C,CAAC;AAEH,oGAAoG;AACpG,eAAO,MAAM,gBAAgB,UAAU,CAAC;AAUxC;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,iBAAiB,EAAE,CAKtG;AAED,sFAAsF;AACtF,wBAAgB,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAInF;AAED,iGAAiG;AACjG,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,GAAG,MAAM,GAAG,SAAS,CASzF;AAED,yEAAyE;AACzE,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAExD,wBAAgB,eAAe,CAC7B,IAAI,EAAE,QAAQ,CAAC;IAAE,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CAAE,CAAC,GACjE,eAAe,CAIjB;AASD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,GAAE,UAAU,GAAG,MAAmB,GAAG,MAAM,GAAG,IAAI,CA8BtG;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAM3D;AAED,MAAM,WAAW,yBAAyB;IACxC,oEAAoE;IACpE,EAAE,EAAE,MAAM,CAAC;IACX,kGAAkG;IAClG,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACjF,WAAW,EAAE,CAAC,EACd,OAAO,EAAE,yBAAyB,GACjC,CAAC,GAAG;IAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAA;CAAE,CAgCvC"}
|