@uwmd/core 1.7.0 → 1.8.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/dist/agents/bancroft.js +4 -1
- package/dist/agents/bancroft.js.map +1 -1
- package/dist/asset-class.d.ts +98 -0
- package/dist/asset-class.d.ts.map +1 -0
- package/dist/asset-class.js +226 -0
- package/dist/asset-class.js.map +1 -0
- package/dist/browser.d.ts +21 -7
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +22 -4
- package/dist/browser.js.map +1 -1
- package/dist/calc/errors.d.ts +1 -1
- package/dist/calc/errors.d.ts.map +1 -1
- package/dist/calc/errors.js.map +1 -1
- package/dist/calc/evaluator.js +25 -1
- package/dist/calc/evaluator.js.map +1 -1
- package/dist/calc/prng.d.ts +59 -0
- package/dist/calc/prng.d.ts.map +1 -0
- package/dist/calc/prng.js +181 -0
- package/dist/calc/prng.js.map +1 -0
- package/dist/calc/sensitivity.d.ts +76 -0
- package/dist/calc/sensitivity.d.ts.map +1 -0
- package/dist/calc/sensitivity.js +160 -0
- package/dist/calc/sensitivity.js.map +1 -0
- package/dist/calc/stochastic.d.ts +97 -0
- package/dist/calc/stochastic.d.ts.map +1 -0
- package/dist/calc/stochastic.js +265 -0
- package/dist/calc/stochastic.js.map +1 -0
- package/dist/cascade.d.ts.map +1 -1
- package/dist/cascade.js +8 -4
- package/dist/cascade.js.map +1 -1
- package/dist/cli-args.d.ts +37 -0
- package/dist/cli-args.d.ts.map +1 -0
- package/dist/cli-args.js +93 -0
- package/dist/cli-args.js.map +1 -0
- package/dist/cli.js +119 -72
- package/dist/cli.js.map +1 -1
- package/dist/editor.js +25 -6
- package/dist/editor.js.map +1 -1
- package/dist/index.d.ts +22 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -4
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +16 -4
- package/dist/init.js.map +1 -1
- package/dist/integrity-canonical.d.ts.map +1 -1
- package/dist/integrity-canonical.js +10 -2
- package/dist/integrity-canonical.js.map +1 -1
- package/dist/integrity.d.ts +92 -4
- package/dist/integrity.d.ts.map +1 -1
- package/dist/integrity.js +195 -9
- package/dist/integrity.js.map +1 -1
- package/dist/migrate-source-tags.d.ts +34 -0
- package/dist/migrate-source-tags.d.ts.map +1 -0
- package/dist/migrate-source-tags.js +179 -0
- package/dist/migrate-source-tags.js.map +1 -0
- package/dist/module-runtime.d.ts +57 -0
- package/dist/module-runtime.d.ts.map +1 -0
- package/dist/module-runtime.js +167 -0
- package/dist/module-runtime.js.map +1 -0
- package/dist/module-signing.d.ts +85 -0
- package/dist/module-signing.d.ts.map +1 -0
- package/dist/module-signing.js +136 -0
- package/dist/module-signing.js.map +1 -0
- package/dist/modules.d.ts +42 -0
- package/dist/modules.d.ts.map +1 -1
- package/dist/modules.js +124 -1
- package/dist/modules.js.map +1 -1
- package/dist/parser.d.ts.map +1 -1
- package/dist/parser.js +27 -1
- package/dist/parser.js.map +1 -1
- package/dist/protocol.d.ts +191 -21
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +289 -32
- package/dist/protocol.js.map +1 -1
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +9 -3
- package/dist/runner.js.map +1 -1
- package/dist/types.d.ts +118 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +44 -0
- package/dist/types.js.map +1 -1
- package/dist/validator.d.ts +26 -2
- package/dist/validator.d.ts.map +1 -1
- package/dist/validator.js +201 -19
- package/dist/validator.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +6 -2
package/dist/integrity.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrity.js","sourceRoot":"","sources":["../src/integrity.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"integrity.js","sourceRoot":"","sources":["../src/integrity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/** Result of migrating one document. */
|
|
2
|
+
export interface SourceTagMigration {
|
|
3
|
+
content: string;
|
|
4
|
+
/** Number of blocks whose `_meta` changed. */
|
|
5
|
+
changed: number;
|
|
6
|
+
/** Sources the mapping did not recognize, left in place. */
|
|
7
|
+
unmapped: string[];
|
|
8
|
+
}
|
|
9
|
+
interface ActorAndResolution {
|
|
10
|
+
source: string;
|
|
11
|
+
resolution?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Map one legacy `_meta.source` value. Returns null when the value is already
|
|
15
|
+
* well-formed (actor grammar) or unknown to the mapping.
|
|
16
|
+
*
|
|
17
|
+
* `agentId` — the block's `_meta.agent_id`, consulted for method-only tags
|
|
18
|
+
* that an agent stamped (`ai_extracted`, `agent_computed`), so the actor is
|
|
19
|
+
* recovered from the block instead of invented.
|
|
20
|
+
*/
|
|
21
|
+
export declare function mapLegacySource(source: string, agentId?: string | null): ActorAndResolution | null;
|
|
22
|
+
/**
|
|
23
|
+
* Migrate every section block of a structured `.uwx.md` / legacy `.uw.md`
|
|
24
|
+
* document. Bytes outside migrated blocks are preserved exactly; a migrated
|
|
25
|
+
* block is re-serialized with 2-space indentation (the corpus convention) and
|
|
26
|
+
* its fence `source=` mirror updated to the new actor.
|
|
27
|
+
*
|
|
28
|
+
* Blocks carrying `content_hash` are refused (reported via `unmapped` as
|
|
29
|
+
* `<source> [content_hash]`) rather than silently invalidating an integrity
|
|
30
|
+
* chain — re-stamping a hashed chain is a deliberate act, not a codemod.
|
|
31
|
+
*/
|
|
32
|
+
export declare function migrateSourceTags(content: string): SourceTagMigration;
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=migrate-source-tags.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate-source-tags.d.ts","sourceRoot":"","sources":["../src/migrate-source-tags.ts"],"names":[],"mappings":"AAkBA,wCAAwC;AACxC,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,UAAU,kBAAkB;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAQD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GACtB,kBAAkB,GAAG,IAAI,CAiD3B;AAKD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,CA8FrE"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
// RFC 0031 — `uwmd migrate --source-tags`: rewrite legacy `_meta.source`
|
|
2
|
+
// values into the actor / resolution split.
|
|
3
|
+
//
|
|
4
|
+
// The mapping is total over every source the corpus measurement surfaced
|
|
5
|
+
// (RFC 0031 §"Measured against our own corpus") and mechanical: a canonical
|
|
6
|
+
// SOURCE_TAGS value moves to `_meta.resolution` and the actor field is filled
|
|
7
|
+
// from what the block itself records (agent_id where present, `manual` for
|
|
8
|
+
// user-entered methods, `system/uwmd` for engine-resolved ones); retired
|
|
9
|
+
// colon forms swap delimiter into their namespace; bare words map per the
|
|
10
|
+
// table below. A source the mapping does not know is left untouched and
|
|
11
|
+
// reported, never guessed at.
|
|
12
|
+
import { SOURCE_TAGS } from './types.js';
|
|
13
|
+
import { parseActorSource } from './protocol.js';
|
|
14
|
+
const CANONICAL = new Set(SOURCE_TAGS);
|
|
15
|
+
/** Sanitize an id into the actor grammar's id charset. */
|
|
16
|
+
function sanitizeId(raw) {
|
|
17
|
+
const cleaned = raw.replace(/[^A-Za-z0-9._-]+/g, '-').replace(/^[^A-Za-z0-9]+/, '');
|
|
18
|
+
return cleaned.length > 0 ? cleaned : 'unspecified';
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Map one legacy `_meta.source` value. Returns null when the value is already
|
|
22
|
+
* well-formed (actor grammar) or unknown to the mapping.
|
|
23
|
+
*
|
|
24
|
+
* `agentId` — the block's `_meta.agent_id`, consulted for method-only tags
|
|
25
|
+
* that an agent stamped (`ai_extracted`, `agent_computed`), so the actor is
|
|
26
|
+
* recovered from the block instead of invented.
|
|
27
|
+
*/
|
|
28
|
+
export function mapLegacySource(source, agentId) {
|
|
29
|
+
if (parseActorSource(source).kind !== 'invalid')
|
|
30
|
+
return null; // already well-formed
|
|
31
|
+
// Canonical resolution tags in the actor field: the tag becomes
|
|
32
|
+
// `resolution`; the actor is recovered from what the tag itself implies.
|
|
33
|
+
if (CANONICAL.has(source)) {
|
|
34
|
+
const resolution = source;
|
|
35
|
+
if (source === 'user_input' || source === 'user_override') {
|
|
36
|
+
return { source: 'manual', resolution };
|
|
37
|
+
}
|
|
38
|
+
if (source === 'ai_extracted' || source === 'agent_computed') {
|
|
39
|
+
return { source: agentId ? `agent/${sanitizeId(agentId)}` : 'agent/unattributed', resolution };
|
|
40
|
+
}
|
|
41
|
+
// Engine-resolved methods: the reference resolver wrote the block.
|
|
42
|
+
return { source: 'system/uwmd', resolution };
|
|
43
|
+
}
|
|
44
|
+
// Retired colon forms — delimiter swap into the owning namespace.
|
|
45
|
+
const colon = /^(agent|wizard|engine|import|market|profile|scenario|user):(.*)$/.exec(source);
|
|
46
|
+
if (colon) {
|
|
47
|
+
const id = sanitizeId(colon[2] ?? '');
|
|
48
|
+
switch (colon[1]) {
|
|
49
|
+
case 'agent': return { source: `agent/${id}` };
|
|
50
|
+
case 'engine': return { source: `system/${id}` };
|
|
51
|
+
case 'import': return { source: `document/${id}` };
|
|
52
|
+
case 'market': return { source: `system/${id}`, resolution: 'market_data' };
|
|
53
|
+
case 'profile': return { source: 'system/investor-profile', resolution: 'investor_profile' };
|
|
54
|
+
case 'scenario': return { source: 'system/scenarios', resolution: 'scenario_default' };
|
|
55
|
+
case 'wizard': return { source: 'manual', resolution: 'user_input' };
|
|
56
|
+
case 'user':
|
|
57
|
+
return colon[2] === 'override'
|
|
58
|
+
? { source: 'manual', resolution: 'user_override' }
|
|
59
|
+
: { source: 'manual', resolution: 'user_input' };
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// Bare words the corpus measurement surfaced.
|
|
63
|
+
switch (source) {
|
|
64
|
+
case 'user': return { source: 'manual' };
|
|
65
|
+
case 'wizard': return { source: 'manual', resolution: 'user_input' };
|
|
66
|
+
case 'extractor': return { source: 'system/extractor', resolution: 'ai_extracted' };
|
|
67
|
+
case 'engine': return { source: 'system/engine' };
|
|
68
|
+
case 'system': return { source: 'system/unspecified' };
|
|
69
|
+
}
|
|
70
|
+
// Bancroft layer ids stamped bare (`L6`, `L6-01`).
|
|
71
|
+
if (/^L\d+(-\d+)?[a-b]?$/i.test(source))
|
|
72
|
+
return { source: `agent/${sanitizeId(source)}` };
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
const FENCE_OPEN_RE = /^```json\s+uw:section=(\S+)(.*)?$/;
|
|
76
|
+
const FENCE_CLOSE_RE = /^```\s*$/;
|
|
77
|
+
/**
|
|
78
|
+
* Migrate every section block of a structured `.uwx.md` / legacy `.uw.md`
|
|
79
|
+
* document. Bytes outside migrated blocks are preserved exactly; a migrated
|
|
80
|
+
* block is re-serialized with 2-space indentation (the corpus convention) and
|
|
81
|
+
* its fence `source=` mirror updated to the new actor.
|
|
82
|
+
*
|
|
83
|
+
* Blocks carrying `content_hash` are refused (reported via `unmapped` as
|
|
84
|
+
* `<source> [content_hash]`) rather than silently invalidating an integrity
|
|
85
|
+
* chain — re-stamping a hashed chain is a deliberate act, not a codemod.
|
|
86
|
+
*/
|
|
87
|
+
export function migrateSourceTags(content) {
|
|
88
|
+
// EOL-aware: a CRLF working copy (Windows autocrlf) would otherwise blind
|
|
89
|
+
// the fence regexes — `.` and `$` refuse to cross a bare `\r` — and the
|
|
90
|
+
// rewrite must give back the endings it was handed.
|
|
91
|
+
const eol = content.includes('\r\n') ? '\r\n' : '\n';
|
|
92
|
+
const lines = content.split(/\r\n|\n/);
|
|
93
|
+
const out = [];
|
|
94
|
+
const unmapped = [];
|
|
95
|
+
let changed = 0;
|
|
96
|
+
let i = 0;
|
|
97
|
+
while (i < lines.length) {
|
|
98
|
+
const line = lines[i];
|
|
99
|
+
const fence = FENCE_OPEN_RE.exec(line);
|
|
100
|
+
if (!fence) {
|
|
101
|
+
out.push(line);
|
|
102
|
+
i++;
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
// Collect the block.
|
|
106
|
+
const fenceLine = line;
|
|
107
|
+
const jsonLines = [];
|
|
108
|
+
i++;
|
|
109
|
+
while (i < lines.length && !FENCE_CLOSE_RE.test(lines[i])) {
|
|
110
|
+
jsonLines.push(lines[i]);
|
|
111
|
+
i++;
|
|
112
|
+
}
|
|
113
|
+
const closed = i < lines.length;
|
|
114
|
+
const rawJson = jsonLines.join('\n');
|
|
115
|
+
let parsed = null;
|
|
116
|
+
try {
|
|
117
|
+
parsed = JSON.parse(rawJson);
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
parsed = null;
|
|
121
|
+
}
|
|
122
|
+
const meta = parsed?.['_meta'];
|
|
123
|
+
const mapped = meta && typeof meta.source === 'string'
|
|
124
|
+
? mapLegacySource(meta.source, meta.agent_id)
|
|
125
|
+
: null;
|
|
126
|
+
// Field overrides migrate independently of the block-level source.
|
|
127
|
+
const overrides = (meta?.field_overrides ?? []);
|
|
128
|
+
const overrideMoves = overrides.filter((o) => typeof o.source === 'string' && CANONICAL.has(o.source) && o.resolution === undefined);
|
|
129
|
+
if (!parsed || !meta || (!mapped && overrideMoves.length === 0)) {
|
|
130
|
+
if (meta && typeof meta.source === 'string'
|
|
131
|
+
&& parseActorSource(meta.source).kind === 'invalid' && !mapped) {
|
|
132
|
+
unmapped.push(meta.source);
|
|
133
|
+
}
|
|
134
|
+
out.push(fenceLine, ...jsonLines);
|
|
135
|
+
if (closed) {
|
|
136
|
+
out.push(lines[i]);
|
|
137
|
+
i++;
|
|
138
|
+
}
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
if (typeof meta.content_hash === 'string') {
|
|
142
|
+
unmapped.push(`${String(meta.source)} [content_hash]`);
|
|
143
|
+
out.push(fenceLine, ...jsonLines);
|
|
144
|
+
if (closed) {
|
|
145
|
+
out.push(lines[i]);
|
|
146
|
+
i++;
|
|
147
|
+
}
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
if (mapped) {
|
|
151
|
+
// Rebuild _meta so `resolution` sits directly after `source`, keeping
|
|
152
|
+
// the provenance pair adjacent in the serialized block.
|
|
153
|
+
const rebuilt = {};
|
|
154
|
+
for (const [k, v] of Object.entries(meta)) {
|
|
155
|
+
if (k === 'resolution')
|
|
156
|
+
continue;
|
|
157
|
+
rebuilt[k] = k === 'source' ? mapped.source : v;
|
|
158
|
+
if (k === 'source') {
|
|
159
|
+
const resolution = mapped.resolution ?? meta['resolution'];
|
|
160
|
+
if (resolution !== undefined)
|
|
161
|
+
rebuilt['resolution'] = resolution;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
parsed['_meta'] = rebuilt;
|
|
165
|
+
}
|
|
166
|
+
for (const o of overrideMoves) {
|
|
167
|
+
o.resolution = o.source;
|
|
168
|
+
delete o.source;
|
|
169
|
+
}
|
|
170
|
+
changed++;
|
|
171
|
+
out.push(mapped ? fenceLine.replace(/\bsource=\S+/, `source=${mapped.source}`) : fenceLine, ...JSON.stringify(parsed, null, 2).split('\n'));
|
|
172
|
+
if (closed) {
|
|
173
|
+
out.push(lines[i]);
|
|
174
|
+
i++;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return { content: out.join(eol), changed, unmapped: [...new Set(unmapped)] };
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=migrate-source-tags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate-source-tags.js","sourceRoot":"","sources":["../src/migrate-source-tags.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,4CAA4C;AAC5C,EAAE;AACF,yEAAyE;AACzE,4EAA4E;AAC5E,8EAA8E;AAC9E,2EAA2E;AAC3E,yEAAyE;AACzE,0EAA0E;AAC1E,wEAAwE;AACxE,8BAA8B;AAG9B,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,SAAS,GAAwB,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;AAgB5D,0DAA0D;AAC1D,SAAS,UAAU,CAAC,GAAW;IAC7B,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IACpF,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC;AACtD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAc,EACd,OAAuB;IAEvB,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC,CAAC,sBAAsB;IAEpF,gEAAgE;IAChE,yEAAyE;IACzE,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,MAAM,CAAC;QAC1B,IAAI,MAAM,KAAK,YAAY,IAAI,MAAM,KAAK,eAAe,EAAE,CAAC;YAC1D,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;QAC1C,CAAC;QACD,IAAI,MAAM,KAAK,cAAc,IAAI,MAAM,KAAK,gBAAgB,EAAE,CAAC;YAC7D,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,EAAE,UAAU,EAAE,CAAC;QACjG,CAAC;QACD,mEAAmE;QACnE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;IAC/C,CAAC;IAED,kEAAkE;IAClE,MAAM,KAAK,GAAG,kEAAkE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9F,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACtC,QAAQ,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACjB,KAAK,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;YAC/C,KAAK,QAAQ,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;YACjD,KAAK,QAAQ,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;YACnD,KAAK,QAAQ,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;YAC5E,KAAK,SAAS,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,yBAAyB,EAAE,UAAU,EAAE,kBAAkB,EAAE,CAAC;YAC7F,KAAK,UAAU,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,UAAU,EAAE,kBAAkB,EAAE,CAAC;YACvF,KAAK,QAAQ,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;YACrE,KAAK,MAAM;gBACT,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,UAAU;oBAC5B,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE;oBACnD,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;QACvD,CAAC;IACH,CAAC;IAED,8CAA8C;IAC9C,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QACzC,KAAK,QAAQ,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;QACrE,KAAK,WAAW,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;QACpF,KAAK,QAAQ,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;QAClD,KAAK,QAAQ,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC;IACzD,CAAC;IAED,mDAAmD;IACnD,IAAI,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,SAAS,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;IAE1F,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,aAAa,GAAG,mCAAmC,CAAC;AAC1D,MAAM,cAAc,GAAG,UAAU,CAAC;AAElC;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,0EAA0E;IAC1E,wEAAwE;IACxE,oDAAoD;IACpD,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACrD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACvB,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACf,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QAED,qBAAqB;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC;QACvB,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,CAAC,EAAE,CAAC;QACJ,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC;YAC3D,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;YAC1B,CAAC,EAAE,CAAC;QACN,CAAC;QACD,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;QAChC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAErC,IAAI,MAAM,GAAmC,IAAI,CAAC;QAClD,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;QAC1D,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAAmD,CAAC;QACjF,MAAM,MAAM,GAAG,IAAI,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;YACpD,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC;YAC7C,CAAC,CAAC,IAAI,CAAC;QAET,mEAAmE;QACnE,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,eAAe,IAAI,EAAE,CAAkD,CAAC;QACjG,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CACpC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS,CAC7F,CAAC;QAEF,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;YAChE,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;mBACtC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7B,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,SAAS,CAAC,CAAC;YAClC,IAAI,MAAM,EAAE,CAAC;gBAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;gBAAC,CAAC,EAAE,CAAC;YAAC,CAAC;YACzC,SAAS;QACX,CAAC;QAED,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;YAC1C,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;YACvD,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,SAAS,CAAC,CAAC;YAClC,IAAI,MAAM,EAAE,CAAC;gBAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;gBAAC,CAAC,EAAE,CAAC;YAAC,CAAC;YACzC,SAAS;QACX,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACX,sEAAsE;YACtE,wDAAwD;YACxD,MAAM,OAAO,GAA4B,EAAE,CAAC;YAC5C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1C,IAAI,CAAC,KAAK,YAAY;oBAAE,SAAS;gBACjC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChD,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACnB,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAK,IAAI,CAAC,YAAY,CAAwB,CAAC;oBACnF,IAAI,UAAU,KAAK,SAAS;wBAAE,OAAO,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC;gBACnE,CAAC;YACH,CAAC;YACD,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;QAC5B,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;YAC9B,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;YACxB,OAAO,CAAC,CAAC,MAAM,CAAC;QAClB,CAAC;QAED,OAAO,EAAE,CAAC;QACV,GAAG,CAAC,IAAI,CACN,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EACjF,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAC/C,CAAC;QACF,IAAI,MAAM,EAAE,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;YAAC,CAAC,EAAE,CAAC;QAAC,CAAC;IAC3C,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;AAC/E,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { ModuleManifest, CalcResult } from './protocol.js';
|
|
2
|
+
import type { ModuleRegistry } from './modules.js';
|
|
3
|
+
import type { ParsedUWFile, ValidationMessage } from './types.js';
|
|
4
|
+
export interface ModuleRuntimeOptions {
|
|
5
|
+
/**
|
|
6
|
+
* Restrict to modules declaring this asset class (plus modules that declare
|
|
7
|
+
* none, which apply to all). Defaults to the file's own
|
|
8
|
+
* `frontmatter.asset_class`.
|
|
9
|
+
*/
|
|
10
|
+
assetClass?: string;
|
|
11
|
+
}
|
|
12
|
+
/** One module calculation and what it produced. */
|
|
13
|
+
export interface ModuleCalcOutcome {
|
|
14
|
+
module_id: string;
|
|
15
|
+
result: CalcResult;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Evaluate every calculation the applicable modules declare, in declaration
|
|
19
|
+
* order, threading each result into the next as `prior_results`.
|
|
20
|
+
*
|
|
21
|
+
* Order matters and is the manifest's: `revpar_index` divides by `revpar`, so
|
|
22
|
+
* `revpar` must already be in `prior_results` when it runs. Sorting or
|
|
23
|
+
* parallelizing would break that for no gain — and a module author who orders
|
|
24
|
+
* their declarations wrongly gets a `CALC-REF` error naming the missing id,
|
|
25
|
+
* which is a better failure than a silent `null`.
|
|
26
|
+
*/
|
|
27
|
+
export declare function evaluateModuleCalculations(parsed: ParsedUWFile, registry: ModuleRegistry, options?: ModuleRuntimeOptions): ModuleCalcOutcome[];
|
|
28
|
+
/**
|
|
29
|
+
* Run the applicable modules' `validations` and section requirements.
|
|
30
|
+
*
|
|
31
|
+
* A rule is an assertion of what must be TRUE. It fires an issue when it
|
|
32
|
+
* evaluates to `false` — and, deliberately, **not** when it evaluates to
|
|
33
|
+
* `null`. Null is the calc engine's "the inputs are absent", and a document
|
|
34
|
+
* that simply does not carry `hotel_brand` has not violated a rule about
|
|
35
|
+
* franchise fees; it has said nothing about them. Reporting absence as
|
|
36
|
+
* violation would make every module rule fire on every partial file, which is
|
|
37
|
+
* most files most of the time.
|
|
38
|
+
*
|
|
39
|
+
* A rule that fails to *evaluate* — an unknown function, an unusable argument —
|
|
40
|
+
* is reported under `MOD-RULE-ERROR` rather than swallowed, and a module
|
|
41
|
+
* *calculation* that fails is reported under `MOD-CALC-ERROR`. A silently
|
|
42
|
+
* skipped rule is a rule the author believes is protecting them.
|
|
43
|
+
*/
|
|
44
|
+
export declare function validateAgainstModules(parsed: ParsedUWFile, registry: ModuleRegistry, options?: ModuleRuntimeOptions): ValidationMessage[];
|
|
45
|
+
/**
|
|
46
|
+
* Sections a module declares `required: true` must be present.
|
|
47
|
+
*
|
|
48
|
+
* Only presence. Validating a section's contents against its declared JSON
|
|
49
|
+
* Schema would need a JSON Schema validator, and `@uwmd/core` takes no such
|
|
50
|
+
* dependency — see the layering invariant. The schema in the manifest is
|
|
51
|
+
* normative and a host that already has a validator SHOULD apply it; core
|
|
52
|
+
* checks the part it can check honestly rather than shipping a
|
|
53
|
+
* half-implemented subset of JSON Schema that quietly accepts what a real
|
|
54
|
+
* validator would reject.
|
|
55
|
+
*/
|
|
56
|
+
export declare function checkModuleSections(parsed: ParsedUWFile, manifest: ModuleManifest): ValidationMessage[];
|
|
57
|
+
//# sourceMappingURL=module-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-runtime.d.ts","sourceRoot":"","sources":["../src/module-runtime.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,cAAc,EAAwB,UAAU,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAElE,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,mDAAmD;AACnD,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,cAAc,EACxB,OAAO,GAAE,oBAAyB,GACjC,iBAAiB,EAAE,CAuBrB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,cAAc,EACxB,OAAO,GAAE,oBAAyB,GACjC,iBAAiB,EAAE,CA+BrB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,cAAc,GACvB,iBAAiB,EAAE,CAerB"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
// Module runtime: actually *running* what a module manifest declares.
|
|
2
|
+
//
|
|
3
|
+
// Until now the module system registered manifests and stopped there. A
|
|
4
|
+
// manifest's `calculations` were reachable only by a host that pulled them out
|
|
5
|
+
// and evaluated them itself; its `validations` were shape-checked at load and
|
|
6
|
+
// then never executed by anything; its `sections` were declared and never
|
|
7
|
+
// looked for. Every assumption in the types was unverified, because nothing
|
|
8
|
+
// consumed them (RFC 0006 §Motivation).
|
|
9
|
+
//
|
|
10
|
+
// This file is the consumer. Three functions, in dependency order:
|
|
11
|
+
//
|
|
12
|
+
// evaluateModuleCalculations — the module's calcs, in declaration order,
|
|
13
|
+
// each seeing the ones before it
|
|
14
|
+
// checkModuleSections — declared `required: true` sections present
|
|
15
|
+
// validateAgainstModules — the module's `validations`, plus the above
|
|
16
|
+
//
|
|
17
|
+
// **No new evaluation machinery.** A validation `rule` is a safe expression in
|
|
18
|
+
// exactly the §VIII.1 grammar the calc engine already parses, so it runs
|
|
19
|
+
// through `evaluateCalc` like any other declaration. A module that could
|
|
20
|
+
// evaluate rules the calc engine cannot would be a second, unsandboxed
|
|
21
|
+
// expression language reachable from a third-party manifest, which is the one
|
|
22
|
+
// thing the module system must never become.
|
|
23
|
+
import { evaluateCalc } from './calc/index.js';
|
|
24
|
+
/**
|
|
25
|
+
* Evaluate every calculation the applicable modules declare, in declaration
|
|
26
|
+
* order, threading each result into the next as `prior_results`.
|
|
27
|
+
*
|
|
28
|
+
* Order matters and is the manifest's: `revpar_index` divides by `revpar`, so
|
|
29
|
+
* `revpar` must already be in `prior_results` when it runs. Sorting or
|
|
30
|
+
* parallelizing would break that for no gain — and a module author who orders
|
|
31
|
+
* their declarations wrongly gets a `CALC-REF` error naming the missing id,
|
|
32
|
+
* which is a better failure than a silent `null`.
|
|
33
|
+
*/
|
|
34
|
+
export function evaluateModuleCalculations(parsed, registry, options = {}) {
|
|
35
|
+
const outcomes = [];
|
|
36
|
+
const prior = {};
|
|
37
|
+
for (const manifest of applicableModules(parsed, registry, options)) {
|
|
38
|
+
for (const decl of manifest.calculations ?? []) {
|
|
39
|
+
const result = evaluateCalc(decl, { parsed, prior_results: prior, locale: 'en-US' });
|
|
40
|
+
outcomes.push({ module_id: manifest.id, result });
|
|
41
|
+
// Only successful results are published. This is principle rather than
|
|
42
|
+
// effect: an unresolved identifier already evaluates to `null` (§VIII.2),
|
|
43
|
+
// so a dependent sees `null` either way — but presenting a failed
|
|
44
|
+
// computation's value as a value is a different claim, and one this
|
|
45
|
+
// runtime should never make.
|
|
46
|
+
//
|
|
47
|
+
// The effect the null-propagation DOES have is that a broken calc
|
|
48
|
+
// degrades its dependents to `null`, which is indistinguishable from
|
|
49
|
+
// "inputs absent". `validateAgainstModules` reports the original failure
|
|
50
|
+
// as `MOD-CALC-ERROR` precisely so the cause is visible; without that,
|
|
51
|
+
// one typo in a formula quietly disables every rule downstream of it.
|
|
52
|
+
if (result.ok)
|
|
53
|
+
prior[decl.id] = result.value;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return outcomes;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Run the applicable modules' `validations` and section requirements.
|
|
60
|
+
*
|
|
61
|
+
* A rule is an assertion of what must be TRUE. It fires an issue when it
|
|
62
|
+
* evaluates to `false` — and, deliberately, **not** when it evaluates to
|
|
63
|
+
* `null`. Null is the calc engine's "the inputs are absent", and a document
|
|
64
|
+
* that simply does not carry `hotel_brand` has not violated a rule about
|
|
65
|
+
* franchise fees; it has said nothing about them. Reporting absence as
|
|
66
|
+
* violation would make every module rule fire on every partial file, which is
|
|
67
|
+
* most files most of the time.
|
|
68
|
+
*
|
|
69
|
+
* A rule that fails to *evaluate* — an unknown function, an unusable argument —
|
|
70
|
+
* is reported under `MOD-RULE-ERROR` rather than swallowed, and a module
|
|
71
|
+
* *calculation* that fails is reported under `MOD-CALC-ERROR`. A silently
|
|
72
|
+
* skipped rule is a rule the author believes is protecting them.
|
|
73
|
+
*/
|
|
74
|
+
export function validateAgainstModules(parsed, registry, options = {}) {
|
|
75
|
+
const issues = [];
|
|
76
|
+
const modules = applicableModules(parsed, registry, options);
|
|
77
|
+
for (const manifest of modules) {
|
|
78
|
+
issues.push(...checkModuleSections(parsed, manifest));
|
|
79
|
+
}
|
|
80
|
+
const prior = {};
|
|
81
|
+
for (const { module_id, result } of evaluateModuleCalculations(parsed, registry, options)) {
|
|
82
|
+
if (result.ok) {
|
|
83
|
+
prior[result.calc_id] = result.value;
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
// A module calc that cannot evaluate is reported, not just skipped. Its
|
|
87
|
+
// dependents will resolve to `null` and their rules will fall silent, so
|
|
88
|
+
// this issue is often the only trace that anything went wrong.
|
|
89
|
+
issues.push({
|
|
90
|
+
code: 'MOD-CALC-ERROR',
|
|
91
|
+
severity: 'error',
|
|
92
|
+
message: `Module '${module_id}' calculation '${result.calc_id}' failed to evaluate: [${result.error?.code}] ${result.error?.message}`,
|
|
93
|
+
remediation: `Fix the formula in '${module_id}'. Any rule that reads '${result.calc_id}' is silently inconclusive until it is corrected.`,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
for (const manifest of modules) {
|
|
97
|
+
for (const rule of manifest.validations ?? []) {
|
|
98
|
+
issues.push(...runRule(parsed, manifest, rule, prior));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return issues;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Sections a module declares `required: true` must be present.
|
|
105
|
+
*
|
|
106
|
+
* Only presence. Validating a section's contents against its declared JSON
|
|
107
|
+
* Schema would need a JSON Schema validator, and `@uwmd/core` takes no such
|
|
108
|
+
* dependency — see the layering invariant. The schema in the manifest is
|
|
109
|
+
* normative and a host that already has a validator SHOULD apply it; core
|
|
110
|
+
* checks the part it can check honestly rather than shipping a
|
|
111
|
+
* half-implemented subset of JSON Schema that quietly accepts what a real
|
|
112
|
+
* validator would reject.
|
|
113
|
+
*/
|
|
114
|
+
export function checkModuleSections(parsed, manifest) {
|
|
115
|
+
const issues = [];
|
|
116
|
+
for (const section of manifest.sections ?? []) {
|
|
117
|
+
if (!section.required)
|
|
118
|
+
continue;
|
|
119
|
+
if (parsed.sections[section.id] === undefined) {
|
|
120
|
+
issues.push({
|
|
121
|
+
code: 'MOD-SECTION-MISSING',
|
|
122
|
+
severity: 'error',
|
|
123
|
+
section: section.id,
|
|
124
|
+
message: `Module '${manifest.id}' requires section '${section.id}' (${section.display_name}), which is missing.`,
|
|
125
|
+
remediation: `Add a '${section.id}' block, or stop loading '${manifest.id}' for this document.`,
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return issues;
|
|
130
|
+
}
|
|
131
|
+
function runRule(parsed, manifest, rule, prior) {
|
|
132
|
+
const result = evaluateCalc({ id: rule.code, label: rule.code, formula: rule.rule, deterministic: true }, { parsed, prior_results: prior, locale: 'en-US' });
|
|
133
|
+
if (!result.ok) {
|
|
134
|
+
return [
|
|
135
|
+
{
|
|
136
|
+
code: 'MOD-RULE-ERROR',
|
|
137
|
+
severity: 'error',
|
|
138
|
+
message: `Module '${manifest.id}' rule '${rule.code}' failed to evaluate: [${result.error?.code}] ${result.error?.message}`,
|
|
139
|
+
remediation: `Fix the rule expression in '${manifest.id}', or stop loading the module until it is corrected.`,
|
|
140
|
+
},
|
|
141
|
+
];
|
|
142
|
+
}
|
|
143
|
+
// Absent inputs (`null`) are not violations — see the doc comment above.
|
|
144
|
+
if (result.value !== false)
|
|
145
|
+
return [];
|
|
146
|
+
return [
|
|
147
|
+
{
|
|
148
|
+
code: rule.code,
|
|
149
|
+
severity: rule.severity,
|
|
150
|
+
message: rule.message,
|
|
151
|
+
// Named so a reader can tell a module's finding from a built-in one
|
|
152
|
+
// without memorizing which prefixes belong to whom.
|
|
153
|
+
remediation: `Reported by module '${manifest.id}'.`,
|
|
154
|
+
},
|
|
155
|
+
];
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Modules that apply to this document: those declaring its asset class, plus
|
|
159
|
+
* those declaring none at all (which a manifest uses to mean "any class").
|
|
160
|
+
*/
|
|
161
|
+
function applicableModules(parsed, registry, options) {
|
|
162
|
+
const assetClass = options.assetClass ?? parsed.frontmatter?.asset_class;
|
|
163
|
+
return registry.modules.filter((m) => m.asset_classes === undefined ||
|
|
164
|
+
m.asset_classes.length === 0 ||
|
|
165
|
+
(assetClass !== undefined && m.asset_classes.includes(assetClass)));
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=module-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-runtime.js","sourceRoot":"","sources":["../src/module-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import type { ModuleManifest, ModuleSignature, ProtocolError } from './protocol.js';
|
|
2
|
+
/** The one scheme protocol 1.x implements. See `ModuleSignature.scheme`. */
|
|
3
|
+
export declare const MODULE_SIGNATURE_SCHEME: "uwmd-keystore";
|
|
4
|
+
/**
|
|
5
|
+
* The exact bytes a module signature covers: RFC 8785 canonical JSON of the
|
|
6
|
+
* manifest with `signature` removed.
|
|
7
|
+
*
|
|
8
|
+
* Removed rather than nulled, so that signing a manifest and then verifying it
|
|
9
|
+
* produce byte-identical input — the failure mode where a signature verifies
|
|
10
|
+
* before it is attached and not after.
|
|
11
|
+
*/
|
|
12
|
+
export declare function moduleSigningPayload(manifest: ModuleManifest): string;
|
|
13
|
+
export type ModuleSignatureFailure =
|
|
14
|
+
/** The manifest carries no `signature` at all. */
|
|
15
|
+
'missing'
|
|
16
|
+
/** `scheme` names something this verifier does not implement. */
|
|
17
|
+
| 'unsupported_scheme'
|
|
18
|
+
/** `signature` is present but structurally invalid. */
|
|
19
|
+
| 'malformed'
|
|
20
|
+
/** `kid` names a key the host's store does not hold. */
|
|
21
|
+
| 'unknown_key'
|
|
22
|
+
/** The signature did not validate over the canonical manifest. */
|
|
23
|
+
| 'invalid';
|
|
24
|
+
export type ModuleSignatureVerdict = {
|
|
25
|
+
ok: true;
|
|
26
|
+
kid: string;
|
|
27
|
+
identity?: string;
|
|
28
|
+
} | {
|
|
29
|
+
ok: false;
|
|
30
|
+
reason: ModuleSignatureFailure;
|
|
31
|
+
error: ProtocolError;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Supplied by `@uwmd/signing`. Mirrors `BlockSignatureVerifier` rather than
|
|
35
|
+
* reusing it, because a module signature carries a `scheme` a block signature
|
|
36
|
+
* has no concept of; collapsing them would mean one of the two lies about its
|
|
37
|
+
* input.
|
|
38
|
+
*/
|
|
39
|
+
export interface ModuleSignatureVerifier {
|
|
40
|
+
verify(payload: string, signature: ModuleSignature): Promise<{
|
|
41
|
+
ok: true;
|
|
42
|
+
} | {
|
|
43
|
+
ok: false;
|
|
44
|
+
reason: 'unknown_kid' | 'bad_signature' | 'malformed';
|
|
45
|
+
}>;
|
|
46
|
+
}
|
|
47
|
+
export interface VerifyModuleSignatureOptions {
|
|
48
|
+
/** Without one, only the structural checks run and the verdict is `malformed`-or-better. */
|
|
49
|
+
verifier?: ModuleSignatureVerifier;
|
|
50
|
+
/**
|
|
51
|
+
* Identity allow-list. When set, a valid signature whose `identity` is absent
|
|
52
|
+
* or unlisted is refused.
|
|
53
|
+
*
|
|
54
|
+
* Note what this can and cannot do: `identity` is a claim inside the signed
|
|
55
|
+
* bytes, so a signature proves the *key holder* asserted it, never that the
|
|
56
|
+
* assertion is true. It is only as good as the host's decision to bind that
|
|
57
|
+
* `kid` to that identity in its key store.
|
|
58
|
+
*/
|
|
59
|
+
allowedIdentities?: readonly string[];
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Verify a module manifest's signature.
|
|
63
|
+
*
|
|
64
|
+
* The three refusals a host must keep apart are `missing` (nothing was
|
|
65
|
+
* claimed), `unknown_key` (something was claimed and this host cannot check
|
|
66
|
+
* it), and `invalid` (something was claimed and it is false). They call for
|
|
67
|
+
* three different responses — decide a policy, load a key, reject the module —
|
|
68
|
+
* and a verifier that reports them as one verdict makes all three
|
|
69
|
+
* indistinguishable at the point where the host has to act.
|
|
70
|
+
*/
|
|
71
|
+
export declare function verifyModuleSignature(manifest: ModuleManifest, options?: VerifyModuleSignatureOptions): Promise<ModuleSignatureVerdict>;
|
|
72
|
+
/**
|
|
73
|
+
* Structural checks, run before any cryptography.
|
|
74
|
+
*
|
|
75
|
+
* Separated out because they are the part a host can run with no key store at
|
|
76
|
+
* all, and because a malformed signature deserves its own code: telling an
|
|
77
|
+
* author "this did not verify" when the real problem is a missing `signed_at`
|
|
78
|
+
* sends them looking for tampering that never happened.
|
|
79
|
+
*/
|
|
80
|
+
export declare function checkSignatureShape(signature: unknown): {
|
|
81
|
+
ok: false;
|
|
82
|
+
reason: ModuleSignatureFailure;
|
|
83
|
+
error: ProtocolError;
|
|
84
|
+
} | null;
|
|
85
|
+
//# sourceMappingURL=module-signing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module-signing.d.ts","sourceRoot":"","sources":["../src/module-signing.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGpF,4EAA4E;AAC5E,eAAO,MAAM,uBAAuB,EAAG,eAAwB,CAAC;AAEhE;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAGrE;AAID,MAAM,MAAM,sBAAsB;AAChC,kDAAkD;AAChD,SAAS;AACX,iEAAiE;GAC/D,oBAAoB;AACtB,uDAAuD;GACrD,WAAW;AACb,wDAAwD;GACtD,aAAa;AACf,kEAAkE;GAChE,SAAS,CAAC;AAEd,MAAM,MAAM,sBAAsB,GAC9B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,sBAAsB,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,CAAC;AAExE;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,MAAM,CACJ,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,eAAe,GACzB,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,aAAa,GAAG,eAAe,GAAG,WAAW,CAAA;KAAE,CAAC,CAAC;CACjG;AAED,MAAM,WAAW,4BAA4B;IAC3C,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,uBAAuB,CAAC;IACnC;;;;;;;;OAQG;IACH,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAsCD;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,cAAc,EACxB,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,sBAAsB,CAAC,CA+CjC;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,OAAO,GACjB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,sBAAsB,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GAAG,IAAI,CAmC5E"}
|