@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.
Files changed (89) hide show
  1. package/dist/agents/bancroft.js +4 -1
  2. package/dist/agents/bancroft.js.map +1 -1
  3. package/dist/asset-class.d.ts +98 -0
  4. package/dist/asset-class.d.ts.map +1 -0
  5. package/dist/asset-class.js +226 -0
  6. package/dist/asset-class.js.map +1 -0
  7. package/dist/browser.d.ts +21 -7
  8. package/dist/browser.d.ts.map +1 -1
  9. package/dist/browser.js +22 -4
  10. package/dist/browser.js.map +1 -1
  11. package/dist/calc/errors.d.ts +1 -1
  12. package/dist/calc/errors.d.ts.map +1 -1
  13. package/dist/calc/errors.js.map +1 -1
  14. package/dist/calc/evaluator.js +25 -1
  15. package/dist/calc/evaluator.js.map +1 -1
  16. package/dist/calc/prng.d.ts +59 -0
  17. package/dist/calc/prng.d.ts.map +1 -0
  18. package/dist/calc/prng.js +181 -0
  19. package/dist/calc/prng.js.map +1 -0
  20. package/dist/calc/sensitivity.d.ts +76 -0
  21. package/dist/calc/sensitivity.d.ts.map +1 -0
  22. package/dist/calc/sensitivity.js +160 -0
  23. package/dist/calc/sensitivity.js.map +1 -0
  24. package/dist/calc/stochastic.d.ts +97 -0
  25. package/dist/calc/stochastic.d.ts.map +1 -0
  26. package/dist/calc/stochastic.js +265 -0
  27. package/dist/calc/stochastic.js.map +1 -0
  28. package/dist/cascade.d.ts.map +1 -1
  29. package/dist/cascade.js +8 -4
  30. package/dist/cascade.js.map +1 -1
  31. package/dist/cli-args.d.ts +37 -0
  32. package/dist/cli-args.d.ts.map +1 -0
  33. package/dist/cli-args.js +93 -0
  34. package/dist/cli-args.js.map +1 -0
  35. package/dist/cli.js +119 -72
  36. package/dist/cli.js.map +1 -1
  37. package/dist/editor.js +25 -6
  38. package/dist/editor.js.map +1 -1
  39. package/dist/index.d.ts +22 -8
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +23 -4
  42. package/dist/index.js.map +1 -1
  43. package/dist/init.d.ts.map +1 -1
  44. package/dist/init.js +16 -4
  45. package/dist/init.js.map +1 -1
  46. package/dist/integrity-canonical.d.ts.map +1 -1
  47. package/dist/integrity-canonical.js +10 -2
  48. package/dist/integrity-canonical.js.map +1 -1
  49. package/dist/integrity.d.ts +92 -4
  50. package/dist/integrity.d.ts.map +1 -1
  51. package/dist/integrity.js +195 -9
  52. package/dist/integrity.js.map +1 -1
  53. package/dist/migrate-source-tags.d.ts +34 -0
  54. package/dist/migrate-source-tags.d.ts.map +1 -0
  55. package/dist/migrate-source-tags.js +179 -0
  56. package/dist/migrate-source-tags.js.map +1 -0
  57. package/dist/module-runtime.d.ts +57 -0
  58. package/dist/module-runtime.d.ts.map +1 -0
  59. package/dist/module-runtime.js +167 -0
  60. package/dist/module-runtime.js.map +1 -0
  61. package/dist/module-signing.d.ts +85 -0
  62. package/dist/module-signing.d.ts.map +1 -0
  63. package/dist/module-signing.js +136 -0
  64. package/dist/module-signing.js.map +1 -0
  65. package/dist/modules.d.ts +42 -0
  66. package/dist/modules.d.ts.map +1 -1
  67. package/dist/modules.js +124 -1
  68. package/dist/modules.js.map +1 -1
  69. package/dist/parser.d.ts.map +1 -1
  70. package/dist/parser.js +27 -1
  71. package/dist/parser.js.map +1 -1
  72. package/dist/protocol.d.ts +191 -21
  73. package/dist/protocol.d.ts.map +1 -1
  74. package/dist/protocol.js +289 -32
  75. package/dist/protocol.js.map +1 -1
  76. package/dist/runner.d.ts.map +1 -1
  77. package/dist/runner.js +9 -3
  78. package/dist/runner.js.map +1 -1
  79. package/dist/types.d.ts +118 -5
  80. package/dist/types.d.ts.map +1 -1
  81. package/dist/types.js +44 -0
  82. package/dist/types.js.map +1 -1
  83. package/dist/validator.d.ts +26 -2
  84. package/dist/validator.d.ts.map +1 -1
  85. package/dist/validator.js +201 -19
  86. package/dist/validator.js.map +1 -1
  87. package/dist/version.d.ts +1 -1
  88. package/dist/version.js +1 -1
  89. package/package.json +6 -2
@@ -0,0 +1,136 @@
1
+ // Module manifest signatures (protocol §X.1, RFC 0002).
2
+ //
3
+ // A module manifest is executable surface: it declares calculations whose
4
+ // formulas the calc engine evaluates and validations that can flip a deal from
5
+ // blocking to advisory. A host that loads one from npm, a URL, or a colleague's
6
+ // directory has, without this, no way to ask "is this the manifest the author
7
+ // published?"
8
+ //
9
+ // The layering is the same one block signatures use, for the same reason. Core
10
+ // owns the crypto-free half — the canonical bytes a signature covers, the
11
+ // structural checks, and the verdict taxonomy — while the algorithms live in
12
+ // `@uwmd/signing` and arrive through an injected verifier. Reading and loading a
13
+ // module must never require cryptography.
14
+ //
15
+ // Advisory by design: the protocol fixes what "signature valid" *means* so two
16
+ // hosts agree, and leaves what to *do* about an unsigned or invalid module to
17
+ // host policy (§X.1.4).
18
+ import { canonicalizeExact } from './integrity-canonical.js';
19
+ import { UW_SIGNATURE_ALGORITHMS } from './types.js';
20
+ /** The one scheme protocol 1.x implements. See `ModuleSignature.scheme`. */
21
+ export const MODULE_SIGNATURE_SCHEME = 'uwmd-keystore';
22
+ /**
23
+ * The exact bytes a module signature covers: RFC 8785 canonical JSON of the
24
+ * manifest with `signature` removed.
25
+ *
26
+ * Removed rather than nulled, so that signing a manifest and then verifying it
27
+ * produce byte-identical input — the failure mode where a signature verifies
28
+ * before it is attached and not after.
29
+ */
30
+ export function moduleSigningPayload(manifest) {
31
+ const { signature: _omitted, ...rest } = manifest;
32
+ return canonicalizeExact(rest);
33
+ }
34
+ const CODES = {
35
+ missing: 'PROTO-MOD-068',
36
+ unsupported_scheme: 'PROTO-MOD-069',
37
+ malformed: 'PROTO-MOD-070',
38
+ unknown_key: 'PROTO-MOD-071',
39
+ invalid: 'PROTO-MOD-072',
40
+ };
41
+ const REMEDIATIONS = {
42
+ missing: 'Sign the manifest, or relax the host policy to accept unsigned modules (signatures are advisory at the protocol level).',
43
+ unsupported_scheme: `Re-sign under the '${MODULE_SIGNATURE_SCHEME}' scheme, or use a host that implements the named scheme.`,
44
+ malformed: 'Re-sign the manifest; the signature object is not a well-formed ModuleSignature.',
45
+ unknown_key: 'Add the signing key to the host key store under that kid, or re-sign with a key the host trusts.',
46
+ invalid: 'The manifest changed after it was signed. Restore the published manifest, or re-sign the version you intend to ship.',
47
+ };
48
+ function fail(reason, message) {
49
+ return {
50
+ ok: false,
51
+ reason,
52
+ error: {
53
+ category: 'module',
54
+ code: CODES[reason],
55
+ message,
56
+ pointer: 'signature',
57
+ remediation: REMEDIATIONS[reason],
58
+ },
59
+ };
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 async function verifyModuleSignature(manifest, options = {}) {
72
+ const signature = manifest.signature;
73
+ if (signature === undefined) {
74
+ return fail('missing', `Module '${manifest.id}' carries no signature.`);
75
+ }
76
+ const structural = checkSignatureShape(signature);
77
+ if (structural)
78
+ return structural;
79
+ if (!options.verifier) {
80
+ return fail('unknown_key', `Module '${manifest.id}' is signed by key '${signature.kid}', but this host has no signature backend to check it with.`);
81
+ }
82
+ const verdict = await options.verifier.verify(moduleSigningPayload(manifest), signature);
83
+ if (!verdict.ok) {
84
+ if (verdict.reason === 'unknown_kid') {
85
+ return fail('unknown_key', `Module '${manifest.id}' is signed by key '${signature.kid}', which this host's key store does not hold.`);
86
+ }
87
+ return fail('invalid', `Module '${manifest.id}' signature did not verify (${verdict.reason}).`);
88
+ }
89
+ if (options.allowedIdentities) {
90
+ const identity = signature.identity;
91
+ if (identity === undefined || !options.allowedIdentities.includes(identity)) {
92
+ return fail('invalid', `Module '${manifest.id}' is validly signed by '${signature.kid}' but its identity ${identity === undefined ? 'is absent' : `'${identity}' is not`} on this host's allow-list.`);
93
+ }
94
+ }
95
+ return {
96
+ ok: true,
97
+ kid: signature.kid,
98
+ ...(signature.identity !== undefined ? { identity: signature.identity } : {}),
99
+ };
100
+ }
101
+ /**
102
+ * Structural checks, run before any cryptography.
103
+ *
104
+ * Separated out because they are the part a host can run with no key store at
105
+ * all, and because a malformed signature deserves its own code: telling an
106
+ * author "this did not verify" when the real problem is a missing `signed_at`
107
+ * sends them looking for tampering that never happened.
108
+ */
109
+ export function checkSignatureShape(signature) {
110
+ if (typeof signature !== 'object' || signature === null || Array.isArray(signature)) {
111
+ return fail('malformed', 'signature must be an object.');
112
+ }
113
+ const sig = signature;
114
+ if (sig['scheme'] !== MODULE_SIGNATURE_SCHEME) {
115
+ return fail('unsupported_scheme', `signature.scheme must be '${MODULE_SIGNATURE_SCHEME}' (got ${JSON.stringify(sig['scheme'])}).`);
116
+ }
117
+ if (typeof sig['alg'] !== 'string' ||
118
+ !UW_SIGNATURE_ALGORITHMS.includes(sig['alg'])) {
119
+ return fail('malformed', `signature.alg must be one of ${UW_SIGNATURE_ALGORITHMS.join(', ')}.`);
120
+ }
121
+ for (const key of ['kid', 'sig', 'signed_at']) {
122
+ if (typeof sig[key] !== 'string' || sig[key].length === 0) {
123
+ return fail('malformed', `signature.${key} must be a non-empty string.`);
124
+ }
125
+ }
126
+ if (sig['identity'] !== undefined && typeof sig['identity'] !== 'string') {
127
+ return fail('malformed', 'signature.identity, when present, must be a string.');
128
+ }
129
+ for (const key of Object.keys(sig)) {
130
+ if (!['scheme', 'alg', 'kid', 'sig', 'signed_at', 'identity'].includes(key)) {
131
+ return fail('malformed', `signature has unknown key '${key}'.`);
132
+ }
133
+ }
134
+ return null;
135
+ }
136
+ //# sourceMappingURL=module-signing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-signing.js","sourceRoot":"","sources":["../src/module-signing.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,EAAE;AACF,0EAA0E;AAC1E,+EAA+E;AAC/E,gFAAgF;AAChF,8EAA8E;AAC9E,cAAc;AACd,EAAE;AACF,+EAA+E;AAC/E,0EAA0E;AAC1E,6EAA6E;AAC7E,iFAAiF;AACjF,0CAA0C;AAC1C,EAAE;AACF,+EAA+E;AAC/E,8EAA8E;AAC9E,wBAAwB;AAExB,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAErD,4EAA4E;AAC5E,MAAM,CAAC,MAAM,uBAAuB,GAAG,eAAwB,CAAC;AAEhE;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAwB;IAC3D,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC;IAClD,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAgDD,MAAM,KAAK,GAA2C;IACpD,OAAO,EAAE,eAAe;IACxB,kBAAkB,EAAE,eAAe;IACnC,SAAS,EAAE,eAAe;IAC1B,WAAW,EAAE,eAAe;IAC5B,OAAO,EAAE,eAAe;CACzB,CAAC;AAEF,MAAM,YAAY,GAA2C;IAC3D,OAAO,EACL,yHAAyH;IAC3H,kBAAkB,EAAE,sBAAsB,uBAAuB,2DAA2D;IAC5H,SAAS,EAAE,kFAAkF;IAC7F,WAAW,EACT,kGAAkG;IACpG,OAAO,EACL,sHAAsH;CACzH,CAAC;AAEF,SAAS,IAAI,CACX,MAA8B,EAC9B,OAAe;IAEf,OAAO;QACL,EAAE,EAAE,KAAK;QACT,MAAM;QACN,KAAK,EAAE;YACL,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,OAAO;YACP,OAAO,EAAE,WAAW;YACpB,WAAW,EAAE,YAAY,CAAC,MAAM,CAAC;SAClC;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,QAAwB,EACxB,UAAwC,EAAE;IAE1C,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;IACrC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,SAAS,EAAE,WAAW,QAAQ,CAAC,EAAE,yBAAyB,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,UAAU,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAClD,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC;IAElC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtB,OAAO,IAAI,CACT,aAAa,EACb,WAAW,QAAQ,CAAC,EAAE,uBAAuB,SAAS,CAAC,GAAG,6DAA6D,CACxH,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC;IACzF,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QAChB,IAAI,OAAO,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;YACrC,OAAO,IAAI,CACT,aAAa,EACb,WAAW,QAAQ,CAAC,EAAE,uBAAuB,SAAS,CAAC,GAAG,+CAA+C,CAC1G,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CACT,SAAS,EACT,WAAW,QAAQ,CAAC,EAAE,+BAA+B,OAAO,CAAC,MAAM,IAAI,CACxE,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QACpC,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5E,OAAO,IAAI,CACT,SAAS,EACT,WAAW,QAAQ,CAAC,EAAE,2BAA2B,SAAS,CAAC,GAAG,sBAC5D,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,QAAQ,UACrD,6BAA6B,CAC9B,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,EAAE,EAAE,IAAI;QACR,GAAG,EAAE,SAAS,CAAC,GAAG;QAClB,GAAG,CAAC,SAAS,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9E,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,SAAkB;IAElB,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACpF,OAAO,IAAI,CAAC,WAAW,EAAE,8BAA8B,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,GAAG,GAAG,SAAoC,CAAC;IAEjD,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,uBAAuB,EAAE,CAAC;QAC9C,OAAO,IAAI,CACT,oBAAoB,EACpB,6BAA6B,uBAAuB,UAAU,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAChG,CAAC;IACJ,CAAC;IACD,IACE,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,QAAQ;QAC9B,CAAE,uBAA6C,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EACpE,CAAC;QACD,OAAO,IAAI,CACT,WAAW,EACX,gCAAgC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACtE,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAU,EAAE,CAAC;QACvD,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAK,GAAG,CAAC,GAAG,CAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtE,OAAO,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,8BAA8B,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IACD,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,UAAU,CAAC,KAAK,QAAQ,EAAE,CAAC;QACzE,OAAO,IAAI,CAAC,WAAW,EAAE,qDAAqD,CAAC,CAAC;IAClF,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5E,OAAO,IAAI,CAAC,WAAW,EAAE,8BAA8B,GAAG,IAAI,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
package/dist/modules.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { type ModuleLoadResult, type ModuleManifest, type ProtocolError, type ViewerTier } from './protocol.js';
2
+ import { type ModuleSignatureVerifier } from './module-signing.js';
2
3
  export interface ModuleRegistry {
3
4
  modules: readonly ModuleManifest[];
4
5
  byId: ReadonlyMap<string, ModuleManifest>;
@@ -11,14 +12,55 @@ export interface LoadModuleOptions {
11
12
  formatVersion?: string;
12
13
  alreadyLoaded?: readonly ModuleManifest[];
13
14
  }
15
+ /**
16
+ * What a host does about module signatures (§X.1.4, RFC 0002).
17
+ *
18
+ * - `ignore` — do not look. The default, and what every host did before RFC
19
+ * 0002; a signature is carried through untouched.
20
+ * - `verify-if-present` — an unsigned module loads, but a *bad* signature
21
+ * refuses. The pragmatic setting during adoption: it never punishes an
22
+ * author who has not signed yet, and never lets a broken claim through.
23
+ * - `require` — an unsigned module refuses too.
24
+ *
25
+ * `verify-if-present` and `require` both refuse on `unknown_key`, and that is
26
+ * deliberate: a host that cannot check a signature has not established the
27
+ * module is safe, and treating "I have no key for this" as success would make
28
+ * the whole policy decorative.
29
+ */
30
+ export type ModuleSignaturePolicy = 'ignore' | 'verify-if-present' | 'require';
31
+ export interface LoadModuleAsyncOptions extends LoadModuleOptions {
32
+ /** Defaults to `ignore`. */
33
+ signaturePolicy?: ModuleSignaturePolicy;
34
+ /** Supplied by `@uwmd/signing`. Absent under a checking policy means every signed module refuses. */
35
+ signatureVerifier?: ModuleSignatureVerifier;
36
+ /** Optional identity allow-list; see `VerifyModuleSignatureOptions`. */
37
+ allowedIdentities?: readonly string[];
38
+ }
14
39
  export interface CreateModuleRegistryOptions extends LoadModuleOptions {
15
40
  modules: readonly ModuleManifest[];
16
41
  }
42
+ export interface CreateModuleRegistryAsyncOptions extends LoadModuleAsyncOptions {
43
+ modules: readonly ModuleManifest[];
44
+ }
17
45
  export declare class ModuleRegistryError extends Error {
18
46
  readonly errors: readonly ProtocolError[];
19
47
  constructor(errors: readonly ProtocolError[]);
20
48
  }
21
49
  export declare function loadModuleManifest(candidate: unknown, opts?: LoadModuleOptions): ModuleLoadResult;
50
+ /**
51
+ * `loadModuleManifest` plus a signature-policy gate.
52
+ *
53
+ * Separate and async for the same reason `applyEditAsync` is: verification
54
+ * needs Web Crypto, which is async, and the synchronous loader is on a path
55
+ * plenty of hosts call where signatures are none of their business. A host that
56
+ * does not check signatures keeps the sync function and pays nothing.
57
+ *
58
+ * Structural validation runs first regardless of policy — a manifest that is
59
+ * not a valid manifest should say so, not report a signature problem.
60
+ */
61
+ export declare function loadModuleManifestAsync(candidate: unknown, opts?: LoadModuleAsyncOptions): Promise<ModuleLoadResult>;
62
+ /** `createModuleRegistry` with the same signature-policy gate. */
63
+ export declare function createModuleRegistryAsync(opts: CreateModuleRegistryAsyncOptions): Promise<ModuleRegistry>;
22
64
  export declare function createModuleRegistry(opts: CreateModuleRegistryOptions): ModuleRegistry;
23
65
  export declare function getModuleCalculationsForAssetClass(registry: ModuleRegistry, asset_class: string): import("./protocol.js").ModuleCalcDecl[];
24
66
  //# sourceMappingURL=modules.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"modules.d.ts","sourceRoot":"","sources":["../src/modules.ts"],"names":[],"mappings":"AAUA,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,eAAe,CAAC;AAgEvB,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,SAAS,cAAc,EAAE,CAAC;IACnC,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC1C,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC,CAAC;IAC7D,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,EAAE,CAAC;CACjE;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,2BAA4B,SAAQ,iBAAiB;IACpE,OAAO,EAAE,SAAS,cAAc,EAAE,CAAC;CACpC;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,CAAC;gBAE9B,MAAM,EAAE,SAAS,aAAa,EAAE;CAK7C;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,OAAO,EAClB,IAAI,GAAE,iBAAsB,GAC3B,gBAAgB,CAMlB;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,2BAA2B,GAAG,cAAc,CAoDtF;AAED,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,cAAc,EACxB,WAAW,EAAE,MAAM,4CAKpB"}
1
+ {"version":3,"file":"modules.d.ts","sourceRoot":"","sources":["../src/modules.ts"],"names":[],"mappings":"AAUA,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,qBAAqB,CAAC;AAiE7B,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,SAAS,cAAc,EAAE,CAAC;IACnC,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC1C,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC,CAAC;IAC7D,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,EAAE,CAAC;CACjE;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;CAC3C;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,mBAAmB,GAAG,SAAS,CAAC;AAE/E,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;IAC/D,4BAA4B;IAC5B,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,qGAAqG;IACrG,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;IAC5C,wEAAwE;IACxE,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,2BAA4B,SAAQ,iBAAiB;IACpE,OAAO,EAAE,SAAS,cAAc,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,gCAAiC,SAAQ,sBAAsB;IAC9E,OAAO,EAAE,SAAS,cAAc,EAAE,CAAC;CACpC;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,CAAC;gBAE9B,MAAM,EAAE,SAAS,aAAa,EAAE;CAK7C;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,OAAO,EAClB,IAAI,GAAE,iBAAsB,GAC3B,gBAAgB,CAMlB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,OAAO,EAClB,IAAI,GAAE,sBAA2B,GAChC,OAAO,CAAC,gBAAgB,CAAC,CAe3B;AAED,kEAAkE;AAClE,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,gCAAgC,GACrC,OAAO,CAAC,cAAc,CAAC,CAWzB;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,2BAA2B,GAAG,cAAc,CAoDtF;AAED,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,cAAc,EACxB,WAAW,EAAE,MAAM,4CAKpB"}
package/dist/modules.js CHANGED
@@ -8,6 +8,8 @@
8
8
  import { parseExpression } from './calc/parser.js';
9
9
  import { MAX_ROUND_TO } from './calc/quantize.js';
10
10
  import { FORMAT_VERSION, PROTOCOL_VERSION, } from './protocol.js';
11
+ import { parseAssetClass } from './asset-class.js';
12
+ import { checkSignatureShape, verifyModuleSignature, } from './module-signing.js';
11
13
  import { ASSET_CLASSES } from './types.js';
12
14
  const TIERS = [
13
15
  'tier-1-reader',
@@ -43,7 +45,8 @@ const MANIFEST_KEYS = [
43
45
  'manifest_version', 'id', 'name', 'version', 'description', 'authors', 'license',
44
46
  'requires_protocol', 'requires_format', 'requires_tier', 'asset_classes',
45
47
  'deal_stages', 'sections', 'calculations', 'validations', 'thresholds',
46
- 'view_models', 'ui', 'agent_layers', 'depends_on',
48
+ 'view_models', 'ui', 'agent_layers', 'depends_on', 'signature',
49
+ 'declares_asset_classes',
47
50
  ];
48
51
  const SECTION_KEYS = ['id', 'display_name', 'schema', 'required'];
49
52
  const CALC_KEYS = ['id', 'label', 'formula', 'unit', 'round_to', 'deterministic'];
@@ -78,6 +81,48 @@ export function loadModuleManifest(candidate, opts = {}) {
78
81
  ? { ok: false, errors }
79
82
  : { ok: true, manifest: freezeManifest(manifest), errors: [] };
80
83
  }
84
+ /**
85
+ * `loadModuleManifest` plus a signature-policy gate.
86
+ *
87
+ * Separate and async for the same reason `applyEditAsync` is: verification
88
+ * needs Web Crypto, which is async, and the synchronous loader is on a path
89
+ * plenty of hosts call where signatures are none of their business. A host that
90
+ * does not check signatures keeps the sync function and pays nothing.
91
+ *
92
+ * Structural validation runs first regardless of policy — a manifest that is
93
+ * not a valid manifest should say so, not report a signature problem.
94
+ */
95
+ export async function loadModuleManifestAsync(candidate, opts = {}) {
96
+ const base = loadModuleManifest(candidate, opts);
97
+ if (!base.ok || !base.manifest)
98
+ return base;
99
+ const policy = opts.signaturePolicy ?? 'ignore';
100
+ if (policy === 'ignore')
101
+ return base;
102
+ const manifest = base.manifest;
103
+ if (manifest.signature === undefined && policy === 'verify-if-present')
104
+ return base;
105
+ const verdict = await verifyModuleSignature(manifest, {
106
+ ...(opts.signatureVerifier ? { verifier: opts.signatureVerifier } : {}),
107
+ ...(opts.allowedIdentities ? { allowedIdentities: opts.allowedIdentities } : {}),
108
+ });
109
+ return verdict.ok ? base : { ok: false, errors: [verdict.error] };
110
+ }
111
+ /** `createModuleRegistry` with the same signature-policy gate. */
112
+ export async function createModuleRegistryAsync(opts) {
113
+ const errors = [];
114
+ for (const candidate of opts.modules) {
115
+ const result = await loadModuleManifestAsync(candidate, opts);
116
+ if (!result.ok)
117
+ errors.push(...result.errors);
118
+ }
119
+ // Refuse before building anything. A registry assembled from a set that
120
+ // included a module the policy rejects would be a registry the host was told
121
+ // not to have, whatever it did with the error list afterwards.
122
+ if (errors.length > 0)
123
+ throw new ModuleRegistryError(errors);
124
+ return createModuleRegistry(opts);
125
+ }
81
126
  export function createModuleRegistry(opts) {
82
127
  const loaded = [];
83
128
  const errors = [];
@@ -152,6 +197,15 @@ function validateModuleManifest(manifest, opts) {
152
197
  if (!Array.isArray(manifest.authors) || manifest.authors.length === 0 || !manifest.authors.every((a) => typeof a === 'string' && a.length > 0)) {
153
198
  errors.push(moduleError('PROTO-MOD-005', 'Module authors must be a non-empty string array.', 'authors'));
154
199
  }
200
+ // Shape-check `signature` regardless of policy. A host that ignores
201
+ // signatures still must not accept a manifest carrying a malformed one:
202
+ // "ignore" is a decision not to *verify*, not a licence to admit nonsense
203
+ // into a frozen manifest other code will read.
204
+ if (manifest.signature !== undefined) {
205
+ const shape = checkSignatureShape(manifest.signature);
206
+ if (shape)
207
+ errors.push(shape.error);
208
+ }
155
209
  if (!TIERS.includes(manifest.requires_tier)) {
156
210
  errors.push(moduleError('PROTO-MOD-006', 'Module requires_tier is not a valid viewer tier.', 'requires_tier'));
157
211
  }
@@ -174,6 +228,7 @@ function validateModuleManifest(manifest, opts) {
174
228
  }
175
229
  }
176
230
  }
231
+ validateDeclaredAssetClasses(errors, manifest);
177
232
  if (manifest.deal_stages !== undefined) {
178
233
  if (!Array.isArray(manifest.deal_stages)) {
179
234
  errors.push(moduleError('PROTO-MOD-010', 'deal_stages must be an array.', 'deal_stages'));
@@ -564,6 +619,71 @@ function boundLength(errors, value, key, min, max) {
564
619
  errors.push(moduleError('PROTO-MOD-065', `${key} must be between ${min} and ${max} characters (got ${value.length}).`, key));
565
620
  }
566
621
  }
622
+ const ASSET_CLASS_DECL_KEYS = [
623
+ 'id', 'display_name', 'fallback', 'required_sections', 'optional_sections',
624
+ ];
625
+ /**
626
+ * Validate `declares_asset_classes` (§X.2, RFC 0003).
627
+ *
628
+ * The identifier grammar is enforced here rather than only at document-parse
629
+ * time, so a module that would introduce an unusable class is refused at load
630
+ * — before any file references it and produces a confusing failure two layers
631
+ * away from the cause.
632
+ */
633
+ function validateDeclaredAssetClasses(errors, manifest) {
634
+ const declarations = manifest.declares_asset_classes;
635
+ if (declarations === undefined)
636
+ return;
637
+ if (!Array.isArray(declarations)) {
638
+ errors.push(moduleError('PROTO-MOD-073', 'declares_asset_classes must be an array.', 'declares_asset_classes'));
639
+ return;
640
+ }
641
+ const seen = new Set();
642
+ for (const [idx, raw] of declarations.entries()) {
643
+ const pointer = `declares_asset_classes[${idx}]`;
644
+ if (!isRecord(raw)) {
645
+ errors.push(moduleError('PROTO-MOD-073', 'Each declaration must be an object.', pointer));
646
+ continue;
647
+ }
648
+ rejectUnknownKeys(errors, raw, ASSET_CLASS_DECL_KEYS, pointer);
649
+ const id = raw['id'];
650
+ if (typeof id !== 'string') {
651
+ errors.push(moduleError('PROTO-MOD-074', 'declaration id must be a string.', `${pointer}.id`));
652
+ }
653
+ else {
654
+ const identity = parseAssetClass(id);
655
+ if (!identity.ok) {
656
+ errors.push(moduleError('PROTO-MOD-074', identity.error.message, `${pointer}.id`));
657
+ }
658
+ else if (identity.kind === 'builtin') {
659
+ // Declaring a builtin is not an extension, it is a redefinition. The
660
+ // `asset_classes` field is how a module *enhances* one.
661
+ errors.push(moduleError('PROTO-MOD-074', `'${id}' is a builtin asset class; use asset_classes to enhance it rather than declares_asset_classes to redefine it.`, `${pointer}.id`));
662
+ }
663
+ else if (seen.has(id)) {
664
+ errors.push(moduleError('PROTO-MOD-075', `Asset class '${id}' is declared more than once by this module.`, `${pointer}.id`));
665
+ }
666
+ else {
667
+ seen.add(id);
668
+ }
669
+ }
670
+ if (typeof raw['display_name'] !== 'string' || raw['display_name'].length === 0) {
671
+ errors.push(moduleError('PROTO-MOD-076', 'declaration display_name must be a non-empty string.', `${pointer}.display_name`));
672
+ }
673
+ const fallback = raw['fallback'];
674
+ if (fallback !== undefined && !ASSET_CLASSES.includes(fallback)) {
675
+ errors.push(moduleError('PROTO-MOD-077', `declaration fallback must be a builtin asset class (got ${JSON.stringify(fallback)}).`, `${pointer}.fallback`));
676
+ }
677
+ for (const key of ['required_sections', 'optional_sections']) {
678
+ const value = raw[key];
679
+ if (value === undefined)
680
+ continue;
681
+ if (!Array.isArray(value) || !value.every((v) => typeof v === 'string' && v.length > 0)) {
682
+ errors.push(moduleError('PROTO-MOD-078', `${key} must be an array of non-empty section ids.`, `${pointer}.${key}`));
683
+ }
684
+ }
685
+ }
686
+ }
567
687
  function freezeManifest(manifest) {
568
688
  return Object.freeze({
569
689
  ...manifest,
@@ -576,6 +696,9 @@ function freezeManifest(manifest) {
576
696
  view_models: manifest.view_models ? Object.freeze([...manifest.view_models]) : undefined,
577
697
  agent_layers: manifest.agent_layers ? Object.freeze([...manifest.agent_layers]) : undefined,
578
698
  depends_on: manifest.depends_on ? Object.freeze([...manifest.depends_on]) : undefined,
699
+ declares_asset_classes: manifest.declares_asset_classes
700
+ ? Object.freeze([...manifest.declares_asset_classes])
701
+ : undefined,
579
702
  });
580
703
  }
581
704
  function isRecord(value) {
@@ -1 +1 @@
1
- {"version":3,"file":"modules.js","sourceRoot":"","sources":["../src/modules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"modules.js","sourceRoot":"","sources":["../src/modules.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,OAAO,EAIP,YAAY,EAEZ,YAAY,EAEb,MAAM,YAAY,CAAC;AAsDpB,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;gBACd,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAO;CAO1F;AAwJD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,YAAY,CAqHrF;AAwGD,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAKlF;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,GAAG,IAAI,CAIhB;AAUD,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAKzE;AAMD,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAQ3D"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,OAAO,EAIP,YAAY,EAEZ,YAAY,EAEb,MAAM,YAAY,CAAC;AAuDpB,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;gBACd,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAO;CAO1F;AAwJD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,YAAY,CAqHrF;AAoID,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAKlF;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,GAAG,IAAI,CAIhB;AAUD,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAKzE;AAMD,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAQ3D"}
package/dist/parser.js CHANGED
@@ -1,5 +1,6 @@
1
1
  // .uw.md parser — extracts frontmatter, section blocks, prose, and pipeline log
2
2
  // Spec: UW_FORMAT_SPEC_v1.md §2.4 (annotation syntax), §2.7 (update semantics), §2.8 (multi-variant)
3
+ import { SOURCE_TAGS } from './types.js';
3
4
  // ─── Regex patterns ───────────────────────────────────────────────────────────
4
5
  // Opening fence: ```json uw:section=<id> [key=value ...]
5
6
  const FENCE_OPEN_RE = /^```json\s+uw:section=(\S+)(.*)?$/;
@@ -302,7 +303,7 @@ export function parseUWFile(content, options = {}) {
302
303
  }
303
304
  parsed = { _parse_error: String(err), _raw: rawJson };
304
305
  }
305
- const meta = parsed['_meta'] ?? {};
306
+ const meta = interpretMetaSource(parsed['_meta'] ?? {});
306
307
  const block = {
307
308
  annotation,
308
309
  meta,
@@ -316,6 +317,31 @@ export function parseUWFile(content, options = {}) {
316
317
  }
317
318
  return result;
318
319
  }
320
+ // ─── §2.6 read-time source interpretation (RFC 0031) ─────────────────────────
321
+ /** Every canonical tag except `manual`, which is a legal actor in its own
322
+ * right and never reinterpreted. */
323
+ const LEGACY_RESOLUTION_TAGS = new Set(SOURCE_TAGS.filter((t) => t !== 'manual'));
324
+ /**
325
+ * A canonical `SOURCE_TAGS` value found in `_meta.source` is a resolution
326
+ * method in the actor field (the pre-RFC-0031 spelling). Readers MUST
327
+ * interpret it as `resolution` and MUST NOT invent an actor from it — so the
328
+ * parsed view gains `resolution` while `source` keeps the raw spelling for
329
+ * diagnostics (`SRC-02` warns on it, and authority classification treats it
330
+ * as no actor class at all).
331
+ *
332
+ * Returns a **clone** when it rewrites: `content._meta` is bytes-derived and
333
+ * feeds canonicalization/digests, so the interpreted view must never mutate
334
+ * it. A producer that already stamped its own `resolution` wins — the legacy
335
+ * spelling is then merely wrong, not information.
336
+ */
337
+ function interpretMetaSource(meta) {
338
+ const src = meta.source;
339
+ if (typeof src !== 'string' || !LEGACY_RESOLUTION_TAGS.has(src))
340
+ return meta;
341
+ if (meta.resolution !== undefined)
342
+ return meta;
343
+ return { ...meta, resolution: src };
344
+ }
319
345
  // ─── Block routing ────────────────────────────────────────────────────────────
320
346
  function routeBlock(result, block, sectionId, annotation, prose) {
321
347
  // Pipeline log — always append