@ixo/domain.md 0.3.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/LICENSE +201 -0
- package/NOTICE +6 -0
- package/README.md +30 -0
- package/assets/domain-md.schema.json +1103 -0
- package/assets/oracle-capsule-jcs-vectors.json +57 -0
- package/assets/oracle-capsule-manifest-contract.md +72 -0
- package/assets/oracle-capsule-source-lock.schema.json +45 -0
- package/assets/oracle-capsule.schema.json +265 -0
- package/assets/rules.json +275 -0
- package/assets/spec.md +1434 -0
- package/assets/template-manifest.schema.json +57 -0
- package/dist/capsule/index.d.ts +75 -0
- package/dist/capsule/index.js +20 -0
- package/dist/capsule/index.js.map +1 -0
- package/dist/chunk-BYBC2TSS.js +597 -0
- package/dist/chunk-BYBC2TSS.js.map +1 -0
- package/dist/chunk-G7PZJYAJ.js +31826 -0
- package/dist/chunk-G7PZJYAJ.js.map +1 -0
- package/dist/chunk-R6QZRNEX.js +164 -0
- package/dist/chunk-R6QZRNEX.js.map +1 -0
- package/dist/chunk-T3STBWXP.js +46 -0
- package/dist/chunk-T3STBWXP.js.map +1 -0
- package/dist/chunk-W7MRQP7I.js +862 -0
- package/dist/chunk-W7MRQP7I.js.map +1 -0
- package/dist/chunk-XDIWMZVF.js +1150 -0
- package/dist/chunk-XDIWMZVF.js.map +1 -0
- package/dist/cli-KcUIQEiE.d.ts +171 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +400 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.js +83 -0
- package/dist/index.js.map +1 -0
- package/dist/resolver-B3mwnjJq.d.ts +96 -0
- package/dist/spec.d.ts +20 -0
- package/dist/spec.js +23 -0
- package/dist/spec.js.map +1 -0
- package/dist/templates/index.d.ts +7 -0
- package/dist/templates/index.js +24 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/workers-Dr8B8a2O.d.ts +19 -0
- package/dist/workers.d.ts +3 -0
- package/dist/workers.js +31 -0
- package/dist/workers.js.map +1 -0
- package/package.json +97 -0
- package/src/capsule/canonical.ts +74 -0
- package/src/capsule/index.ts +10 -0
- package/src/capsule/json.ts +373 -0
- package/src/capsule/types.ts +63 -0
- package/src/capsule/validate.ts +551 -0
- package/src/cli.ts +405 -0
- package/src/compiled-validators.d.ts +7 -0
- package/src/compiled-validators.js +32512 -0
- package/src/constants.ts +250 -0
- package/src/diff.ts +111 -0
- package/src/export.ts +28 -0
- package/src/index.ts +36 -0
- package/src/lint.ts +42 -0
- package/src/parser.ts +174 -0
- package/src/sarif.ts +49 -0
- package/src/semantic.ts +1156 -0
- package/src/spec.ts +48 -0
- package/src/templates/errors.ts +3 -0
- package/src/templates/index.ts +11 -0
- package/src/templates/manifest.ts +94 -0
- package/src/templates/render.ts +435 -0
- package/src/templates/resolver.ts +200 -0
- package/src/templates/types.ts +98 -0
- package/src/types.ts +195 -0
- package/src/workers.ts +6 -0
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import {
|
|
2
|
+
lint
|
|
3
|
+
} from "./chunk-XDIWMZVF.js";
|
|
4
|
+
|
|
5
|
+
// src/diff.ts
|
|
6
|
+
import { createHash } from "crypto";
|
|
7
|
+
var SECURITY_PREFIXES = [
|
|
8
|
+
"/controllers",
|
|
9
|
+
"/rights",
|
|
10
|
+
"/accounts",
|
|
11
|
+
"/privacy",
|
|
12
|
+
"/source_of_truth",
|
|
13
|
+
"/constitution",
|
|
14
|
+
"/claims",
|
|
15
|
+
"/agents",
|
|
16
|
+
"/agent_default_mode",
|
|
17
|
+
"/critical_do_not"
|
|
18
|
+
];
|
|
19
|
+
var OPERATIONAL_PREFIXES = [
|
|
20
|
+
"/services",
|
|
21
|
+
"/resources",
|
|
22
|
+
"/linked_entities",
|
|
23
|
+
"/pods",
|
|
24
|
+
"/graph_policy",
|
|
25
|
+
"/documents"
|
|
26
|
+
];
|
|
27
|
+
function classify(path) {
|
|
28
|
+
if (SECURITY_PREFIXES.some((prefix) => path.startsWith(prefix))) return "security-sensitive";
|
|
29
|
+
if (OPERATIONAL_PREFIXES.some((prefix) => path.startsWith(prefix))) return "operational";
|
|
30
|
+
return path.startsWith("/sections/") ? "narrative" : "operational";
|
|
31
|
+
}
|
|
32
|
+
function stable(value) {
|
|
33
|
+
if (Array.isArray(value)) return `[${value.map(stable).join(",")}]`;
|
|
34
|
+
if (typeof value === "object" && value !== null) {
|
|
35
|
+
return `{${Object.entries(value).sort(([a], [b]) => a.localeCompare(b)).map(([key, child]) => `${JSON.stringify(key)}:${stable(child)}`).join(",")}}`;
|
|
36
|
+
}
|
|
37
|
+
return JSON.stringify(value);
|
|
38
|
+
}
|
|
39
|
+
function compare(before, after, path, changes) {
|
|
40
|
+
if (stable(before) === stable(after)) return;
|
|
41
|
+
if (before && after && typeof before === "object" && typeof after === "object" && !Array.isArray(before) && !Array.isArray(after)) {
|
|
42
|
+
const keys = /* @__PURE__ */ new Set([...Object.keys(before), ...Object.keys(after)]);
|
|
43
|
+
for (const key of [...keys].sort())
|
|
44
|
+
compare(
|
|
45
|
+
before[key],
|
|
46
|
+
after[key],
|
|
47
|
+
`${path}/${key}`,
|
|
48
|
+
changes
|
|
49
|
+
);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
changes.push({ path: path || "/", classification: classify(path), before, after });
|
|
53
|
+
}
|
|
54
|
+
function sectionHashes(content) {
|
|
55
|
+
const report = lint(content);
|
|
56
|
+
return Object.fromEntries(
|
|
57
|
+
(report.document?.sections ?? []).map((section) => [
|
|
58
|
+
section.heading,
|
|
59
|
+
createHash("sha256").update(section.content).digest("hex")
|
|
60
|
+
])
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
function diffDomains(beforeContent, afterContent, options = {}) {
|
|
64
|
+
const beforeReport = lint(beforeContent, { sourceName: "before" });
|
|
65
|
+
const afterReport = lint(afterContent, { sourceName: "after" });
|
|
66
|
+
const changes = [];
|
|
67
|
+
compare(
|
|
68
|
+
beforeReport.document?.frontmatter ?? {},
|
|
69
|
+
afterReport.document?.frontmatter ?? {},
|
|
70
|
+
"",
|
|
71
|
+
changes
|
|
72
|
+
);
|
|
73
|
+
compare(sectionHashes(beforeContent), sectionHashes(afterContent), "/sections", changes);
|
|
74
|
+
const conformanceRegression = afterReport.summary.errors > beforeReport.summary.errors || beforeReport.ok && !afterReport.ok;
|
|
75
|
+
const requiresReview = changes.some((change) => change.classification === "security-sensitive");
|
|
76
|
+
const regression = conformanceRegression || options.failOn === "review" && requiresReview;
|
|
77
|
+
return {
|
|
78
|
+
before: beforeReport.summary,
|
|
79
|
+
after: afterReport.summary,
|
|
80
|
+
changes,
|
|
81
|
+
conformanceRegression,
|
|
82
|
+
requiresReview,
|
|
83
|
+
regression
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// src/sarif.ts
|
|
88
|
+
function level(finding) {
|
|
89
|
+
return finding.severity === "info" ? "note" : finding.severity;
|
|
90
|
+
}
|
|
91
|
+
function toSarif(report) {
|
|
92
|
+
const ruleMap = new Map(report.findings.map((finding) => [finding.code, finding]));
|
|
93
|
+
return {
|
|
94
|
+
version: "2.1.0",
|
|
95
|
+
$schema: "https://json.schemastore.org/sarif-2.1.0.json",
|
|
96
|
+
runs: [
|
|
97
|
+
{
|
|
98
|
+
tool: {
|
|
99
|
+
driver: {
|
|
100
|
+
name: report.tool,
|
|
101
|
+
version: report.toolVersion,
|
|
102
|
+
rules: [...ruleMap.entries()].map(([id, finding]) => ({
|
|
103
|
+
id,
|
|
104
|
+
shortDescription: { text: finding.message }
|
|
105
|
+
}))
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
results: report.findings.map((finding) => ({
|
|
109
|
+
ruleId: finding.code,
|
|
110
|
+
level: level(finding),
|
|
111
|
+
message: { text: finding.message },
|
|
112
|
+
locations: [
|
|
113
|
+
{
|
|
114
|
+
physicalLocation: {
|
|
115
|
+
artifactLocation: { uri: report.sourceName },
|
|
116
|
+
region: {
|
|
117
|
+
startLine: finding.location.line,
|
|
118
|
+
startColumn: finding.location.column,
|
|
119
|
+
...finding.location.endLine === void 0 ? {} : { endLine: finding.location.endLine },
|
|
120
|
+
...finding.location.endColumn === void 0 ? {} : { endColumn: finding.location.endColumn }
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
]
|
|
125
|
+
}))
|
|
126
|
+
}
|
|
127
|
+
]
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// src/export.ts
|
|
132
|
+
function exportDomain(content, options) {
|
|
133
|
+
const report = lint(
|
|
134
|
+
content,
|
|
135
|
+
options.sourceName === void 0 ? {} : { sourceName: options.sourceName }
|
|
136
|
+
);
|
|
137
|
+
if (options.format === "sarif") return `${JSON.stringify(toSarif(report), null, 2)}
|
|
138
|
+
`;
|
|
139
|
+
if (!report.ok || !report.document)
|
|
140
|
+
throw new Error("Cannot export a JSON model while conformance errors remain.");
|
|
141
|
+
return `${JSON.stringify(
|
|
142
|
+
{
|
|
143
|
+
specVersion: report.specVersion,
|
|
144
|
+
profile: report.profile,
|
|
145
|
+
frontmatter: report.document.frontmatter,
|
|
146
|
+
sections: report.document.sections.map(({ heading, content: content2, location }) => ({
|
|
147
|
+
heading,
|
|
148
|
+
content: content2,
|
|
149
|
+
location
|
|
150
|
+
})),
|
|
151
|
+
note: "This normalized model is not CID-canonical bytes."
|
|
152
|
+
},
|
|
153
|
+
null,
|
|
154
|
+
2
|
|
155
|
+
)}
|
|
156
|
+
`;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
export {
|
|
160
|
+
diffDomains,
|
|
161
|
+
toSarif,
|
|
162
|
+
exportDomain
|
|
163
|
+
};
|
|
164
|
+
//# sourceMappingURL=chunk-R6QZRNEX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/diff.ts","../src/sarif.ts","../src/export.ts"],"sourcesContent":["import { createHash } from 'node:crypto';\n\nimport { lint } from './lint.js';\nimport type {\n ChangeClassification,\n DiffOptions,\n DiffReport,\n DomainChange,\n DomainRecord,\n} from './types.js';\n\nconst SECURITY_PREFIXES = [\n '/controllers',\n '/rights',\n '/accounts',\n '/privacy',\n '/source_of_truth',\n '/constitution',\n '/claims',\n '/agents',\n '/agent_default_mode',\n '/critical_do_not',\n];\nconst OPERATIONAL_PREFIXES = [\n '/services',\n '/resources',\n '/linked_entities',\n '/pods',\n '/graph_policy',\n '/documents',\n];\n\nfunction classify(path: string): ChangeClassification {\n if (SECURITY_PREFIXES.some((prefix) => path.startsWith(prefix))) return 'security-sensitive';\n if (OPERATIONAL_PREFIXES.some((prefix) => path.startsWith(prefix))) return 'operational';\n return path.startsWith('/sections/') ? 'narrative' : 'operational';\n}\n\nfunction stable(value: unknown): string {\n if (Array.isArray(value)) return `[${value.map(stable).join(',')}]`;\n if (typeof value === 'object' && value !== null) {\n return `{${Object.entries(value as DomainRecord)\n .sort(([a], [b]) => a.localeCompare(b))\n .map(([key, child]) => `${JSON.stringify(key)}:${stable(child)}`)\n .join(',')}}`;\n }\n return JSON.stringify(value);\n}\n\nfunction compare(before: unknown, after: unknown, path: string, changes: DomainChange[]): void {\n if (stable(before) === stable(after)) return;\n if (\n before &&\n after &&\n typeof before === 'object' &&\n typeof after === 'object' &&\n !Array.isArray(before) &&\n !Array.isArray(after)\n ) {\n const keys = new Set([...Object.keys(before), ...Object.keys(after)]);\n for (const key of [...keys].sort())\n compare(\n (before as DomainRecord)[key],\n (after as DomainRecord)[key],\n `${path}/${key}`,\n changes,\n );\n return;\n }\n changes.push({ path: path || '/', classification: classify(path), before, after });\n}\n\nfunction sectionHashes(content: string): DomainRecord {\n const report = lint(content);\n return Object.fromEntries(\n (report.document?.sections ?? []).map((section) => [\n section.heading,\n createHash('sha256').update(section.content).digest('hex'),\n ]),\n );\n}\n\nexport function diffDomains(\n beforeContent: string,\n afterContent: string,\n options: DiffOptions = {},\n): DiffReport {\n const beforeReport = lint(beforeContent, { sourceName: 'before' });\n const afterReport = lint(afterContent, { sourceName: 'after' });\n const changes: DomainChange[] = [];\n compare(\n beforeReport.document?.frontmatter ?? {},\n afterReport.document?.frontmatter ?? {},\n '',\n changes,\n );\n compare(sectionHashes(beforeContent), sectionHashes(afterContent), '/sections', changes);\n const conformanceRegression =\n afterReport.summary.errors > beforeReport.summary.errors ||\n (beforeReport.ok && !afterReport.ok);\n const requiresReview = changes.some((change) => change.classification === 'security-sensitive');\n const regression = conformanceRegression || (options.failOn === 'review' && requiresReview);\n return {\n before: beforeReport.summary,\n after: afterReport.summary,\n changes,\n conformanceRegression,\n requiresReview,\n regression,\n };\n}\n","import type { Finding, LintReport } from './types.js';\n\nfunction level(finding: Finding): 'error' | 'warning' | 'note' {\n return finding.severity === 'info' ? 'note' : finding.severity;\n}\n\nexport function toSarif(report: LintReport): Record<string, unknown> {\n const ruleMap = new Map(report.findings.map((finding) => [finding.code, finding]));\n return {\n version: '2.1.0',\n $schema: 'https://json.schemastore.org/sarif-2.1.0.json',\n runs: [\n {\n tool: {\n driver: {\n name: report.tool,\n version: report.toolVersion,\n rules: [...ruleMap.entries()].map(([id, finding]) => ({\n id,\n shortDescription: { text: finding.message },\n })),\n },\n },\n results: report.findings.map((finding) => ({\n ruleId: finding.code,\n level: level(finding),\n message: { text: finding.message },\n locations: [\n {\n physicalLocation: {\n artifactLocation: { uri: report.sourceName },\n region: {\n startLine: finding.location.line,\n startColumn: finding.location.column,\n ...(finding.location.endLine === undefined\n ? {}\n : { endLine: finding.location.endLine }),\n ...(finding.location.endColumn === undefined\n ? {}\n : { endColumn: finding.location.endColumn }),\n },\n },\n },\n ],\n })),\n },\n ],\n };\n}\n","import { lint } from './lint.js';\nimport { toSarif } from './sarif.js';\nimport type { ExportOptions } from './types.js';\n\nexport function exportDomain(content: string, options: ExportOptions): string {\n const report = lint(\n content,\n options.sourceName === undefined ? {} : { sourceName: options.sourceName },\n );\n if (options.format === 'sarif') return `${JSON.stringify(toSarif(report), null, 2)}\\n`;\n if (!report.ok || !report.document)\n throw new Error('Cannot export a JSON model while conformance errors remain.');\n return `${JSON.stringify(\n {\n specVersion: report.specVersion,\n profile: report.profile,\n frontmatter: report.document.frontmatter,\n sections: report.document.sections.map(({ heading, content, location }) => ({\n heading,\n content,\n location,\n })),\n note: 'This normalized model is not CID-canonical bytes.',\n },\n null,\n 2,\n )}\\n`;\n}\n"],"mappings":"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","names":["content"]}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// src/spec.ts
|
|
2
|
+
import { readFileSync } from "fs";
|
|
3
|
+
var assets = new URL("../assets/", import.meta.url);
|
|
4
|
+
function readAsset(name) {
|
|
5
|
+
return readFileSync(new URL(name, assets), "utf8");
|
|
6
|
+
}
|
|
7
|
+
function getSpecification() {
|
|
8
|
+
return readAsset("spec.md");
|
|
9
|
+
}
|
|
10
|
+
function getSchema() {
|
|
11
|
+
return JSON.parse(getSchemaSource());
|
|
12
|
+
}
|
|
13
|
+
function getSchemaSource() {
|
|
14
|
+
return readAsset("domain-md.schema.json");
|
|
15
|
+
}
|
|
16
|
+
function getTemplateManifestSchema() {
|
|
17
|
+
return JSON.parse(readAsset("template-manifest.schema.json"));
|
|
18
|
+
}
|
|
19
|
+
function getOracleCapsuleSchema() {
|
|
20
|
+
return JSON.parse(readAsset("oracle-capsule.schema.json"));
|
|
21
|
+
}
|
|
22
|
+
function getOracleCapsuleSourceLockSchema() {
|
|
23
|
+
return JSON.parse(readAsset("oracle-capsule-source-lock.schema.json"));
|
|
24
|
+
}
|
|
25
|
+
function getOracleCapsuleContract() {
|
|
26
|
+
return readAsset("oracle-capsule-manifest-contract.md");
|
|
27
|
+
}
|
|
28
|
+
function getOracleCapsuleJcsVectors() {
|
|
29
|
+
return JSON.parse(readAsset("oracle-capsule-jcs-vectors.json"));
|
|
30
|
+
}
|
|
31
|
+
function getRules() {
|
|
32
|
+
return JSON.parse(readAsset("rules.json"));
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export {
|
|
36
|
+
getSpecification,
|
|
37
|
+
getSchema,
|
|
38
|
+
getSchemaSource,
|
|
39
|
+
getTemplateManifestSchema,
|
|
40
|
+
getOracleCapsuleSchema,
|
|
41
|
+
getOracleCapsuleSourceLockSchema,
|
|
42
|
+
getOracleCapsuleContract,
|
|
43
|
+
getOracleCapsuleJcsVectors,
|
|
44
|
+
getRules
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=chunk-T3STBWXP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/spec.ts"],"sourcesContent":["import { readFileSync } from 'node:fs';\n\nimport type { DomainRecord } from './types.js';\n\nconst assets = new URL('../assets/', import.meta.url);\n\nfunction readAsset(name: string): string {\n return readFileSync(new URL(name, assets), 'utf8');\n}\n\nexport function getSpecification(): string {\n return readAsset('spec.md');\n}\n\nexport function getSchema(): DomainRecord {\n return JSON.parse(getSchemaSource()) as DomainRecord;\n}\n\nexport function getSchemaSource(): string {\n return readAsset('domain-md.schema.json');\n}\n\nexport function getTemplateManifestSchema(): DomainRecord {\n return JSON.parse(readAsset('template-manifest.schema.json')) as DomainRecord;\n}\n\nexport function getOracleCapsuleSchema(): DomainRecord {\n return JSON.parse(readAsset('oracle-capsule.schema.json')) as DomainRecord;\n}\n\nexport function getOracleCapsuleSourceLockSchema(): DomainRecord {\n return JSON.parse(readAsset('oracle-capsule-source-lock.schema.json')) as DomainRecord;\n}\n\nexport function getOracleCapsuleContract(): string {\n return readAsset('oracle-capsule-manifest-contract.md');\n}\n\nexport function getOracleCapsuleJcsVectors(): unknown {\n return JSON.parse(readAsset('oracle-capsule-jcs-vectors.json')) as unknown;\n}\n\nexport function getRules(): {\n specVersion: string;\n rules: Array<{ code: string; severity: string; description: string }>;\n} {\n return JSON.parse(readAsset('rules.json')) as ReturnType<typeof getRules>;\n}\n"],"mappings":";AAAA,SAAS,oBAAoB;AAI7B,IAAM,SAAS,IAAI,IAAI,cAAc,YAAY,GAAG;AAEpD,SAAS,UAAU,MAAsB;AACvC,SAAO,aAAa,IAAI,IAAI,MAAM,MAAM,GAAG,MAAM;AACnD;AAEO,SAAS,mBAA2B;AACzC,SAAO,UAAU,SAAS;AAC5B;AAEO,SAAS,YAA0B;AACxC,SAAO,KAAK,MAAM,gBAAgB,CAAC;AACrC;AAEO,SAAS,kBAA0B;AACxC,SAAO,UAAU,uBAAuB;AAC1C;AAEO,SAAS,4BAA0C;AACxD,SAAO,KAAK,MAAM,UAAU,+BAA+B,CAAC;AAC9D;AAEO,SAAS,yBAAuC;AACrD,SAAO,KAAK,MAAM,UAAU,4BAA4B,CAAC;AAC3D;AAEO,SAAS,mCAAiD;AAC/D,SAAO,KAAK,MAAM,UAAU,wCAAwC,CAAC;AACvE;AAEO,SAAS,2BAAmC;AACjD,SAAO,UAAU,qCAAqC;AACxD;AAEO,SAAS,6BAAsC;AACpD,SAAO,KAAK,MAAM,UAAU,iCAAiC,CAAC;AAChE;AAEO,SAAS,WAGd;AACA,SAAO,KAAK,MAAM,UAAU,YAAY,CAAC;AAC3C;","names":[]}
|