@emilia-protocol/gate 0.18.1 → 0.18.2

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.
@@ -0,0 +1,434 @@
1
+ // @ts-nocheck
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /**
4
+ * Deterministic, offline EMILIA Referee core.
5
+ *
6
+ * The referee does not discover trust roots, executables, protocols, policy,
7
+ * or network state. It evaluates one caller-pinned runner output as a
8
+ * non-authorizing self-test claim and keeps native verification, relying-party
9
+ * acceptance, binding, evidence composition, provider outcome, and observed
10
+ * effect as independent facts.
11
+ */
12
+ import path from 'node:path';
13
+ export const REFEREE_EVALUATION_VERSION = 'EP-REFEREE-EVALUATION-v1';
14
+ export const REFEREE_RUNNER_REQUEST_VERSION = 'EP-REFEREE-RUNNER-REQUEST-v1';
15
+ export const REFEREE_RUNNER_OUTPUT_VERSION = 'EP-REFEREE-RUNNER-OUTPUT-v1';
16
+ export const REFEREE_RESULT_VERSION = 'EP-REFEREE-RESULT-v1';
17
+ // Explicit aliases make the wire-version names easy to discover without
18
+ // changing the single canonical values used by the schemas.
19
+ export const EP_REFEREE_EVALUATION_VERSION = REFEREE_EVALUATION_VERSION;
20
+ export const EP_REFEREE_RUNNER_REQUEST_VERSION = REFEREE_RUNNER_REQUEST_VERSION;
21
+ export const EP_REFEREE_RUNNER_OUTPUT_VERSION = REFEREE_RUNNER_OUTPUT_VERSION;
22
+ export const EP_REFEREE_RESULT_VERSION = REFEREE_RESULT_VERSION;
23
+ const MAX_IDENTIFIER_BYTES = 512;
24
+ const MAX_EXECUTABLE_BYTES = 4 * 1024;
25
+ const MAX_RUNNER_ARGUMENTS = 256;
26
+ const MAX_RUNNER_ARGUMENT_BYTES = 64 * 1024;
27
+ const MAX_RUNNER_ARGUMENT_VECTOR_BYTES = 1024 * 1024;
28
+ const MAX_JSON_DEPTH = 64;
29
+ const IDENTIFIER = /^[A-Za-z0-9][A-Za-z0-9:_.@/-]{0,511}$/;
30
+ const CAID = /^caid:1:[a-z][a-z0-9-]*(?:\.[a-z][a-z0-9-]*)*\.[1-9][0-9]*:jcs-sha256:[A-Za-z0-9_-]{43}$/;
31
+ const DIGEST = /^sha256:[0-9a-f]{64}$/;
32
+ const REASON_CODE = /^[a-z][a-z0-9_]{0,127}$/;
33
+ const EVALUATION_KEYS = Object.freeze([
34
+ 'version', 'runner_pin', 'request', 'output',
35
+ ]);
36
+ const RUNNER_PIN_KEYS = Object.freeze([
37
+ 'executable', 'executable_sha256', 'args',
38
+ ]);
39
+ const RUNNER_REQUEST_KEYS = Object.freeze([
40
+ 'version', 'case_id', 'protocol_id', 'expected_caid',
41
+ 'expected_action_digest', 'aec_required', 'execution_scope', 'input',
42
+ ]);
43
+ const RUNNER_OUTPUT_KEYS = Object.freeze([
44
+ 'version', 'case_id', 'protocol_id', 'native_verification', 'rp_acceptance',
45
+ 'caid', 'action_digest', 'aec_satisfaction', 'provider_outcome',
46
+ 'effect_relation', 'execution_scope',
47
+ ]);
48
+ const NATIVE_VERIFICATIONS = new Set([
49
+ 'VERIFIED', 'REJECTED', 'INDETERMINATE',
50
+ ]);
51
+ const RP_ACCEPTANCES = new Set([
52
+ 'ACCEPTED', 'REJECTED', 'INDETERMINATE',
53
+ ]);
54
+ const AEC_SATISFACTIONS = new Set([
55
+ 'SATISFIED', 'NOT_SATISFIED', 'INDETERMINATE', 'NOT_ASSESSED',
56
+ ]);
57
+ const PROVIDER_OUTCOMES = new Set([
58
+ 'COMMITTED', 'PROVEN_NOT_COMMITTED', 'INDETERMINATE', 'NOT_ASSESSED',
59
+ ]);
60
+ const EFFECT_RELATIONS = new Set([
61
+ 'OBSERVED_AS_REQUESTED', 'DIVERGED', 'INDETERMINATE', 'NOT_ASSESSED',
62
+ ]);
63
+ const EXECUTION_SCOPES = new Set([
64
+ 'local_atomic', 'federated',
65
+ ]);
66
+ export class RefereeValidationError extends TypeError {
67
+ code;
68
+ constructor(code) {
69
+ super(code);
70
+ this.name = 'RefereeValidationError';
71
+ this.code = code;
72
+ }
73
+ }
74
+ function fail(code) {
75
+ throw new RefereeValidationError(code);
76
+ }
77
+ function plain(value) {
78
+ if (value === null || typeof value !== 'object' || Array.isArray(value)) {
79
+ return false;
80
+ }
81
+ const prototype = Object.getPrototypeOf(value);
82
+ return prototype === Object.prototype || prototype === null;
83
+ }
84
+ function exactObject(value, keys) {
85
+ if (!plain(value))
86
+ fail('invalid_schema');
87
+ const ownKeys = Reflect.ownKeys(value);
88
+ if (ownKeys.some((key) => typeof key !== 'string'))
89
+ fail('unknown_key');
90
+ const expected = new Set(keys);
91
+ for (const key of ownKeys) {
92
+ if (!expected.has(key))
93
+ fail('unknown_key');
94
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
95
+ if (!descriptor?.enumerable || !('value' in descriptor))
96
+ fail('invalid_schema');
97
+ }
98
+ for (const key of keys) {
99
+ if (!Object.prototype.hasOwnProperty.call(value, key))
100
+ fail('missing_key');
101
+ }
102
+ return value;
103
+ }
104
+ function hasUnpairedSurrogate(value) {
105
+ for (let index = 0; index < value.length; index += 1) {
106
+ const code = value.charCodeAt(index);
107
+ if (code >= 0xd800 && code <= 0xdbff) {
108
+ const next = value.charCodeAt(index + 1);
109
+ if (next < 0xdc00 || next > 0xdfff)
110
+ return true;
111
+ index += 1;
112
+ }
113
+ else if (code >= 0xdc00 && code <= 0xdfff) {
114
+ return true;
115
+ }
116
+ }
117
+ return false;
118
+ }
119
+ function assertJson(value, depth = 0, ancestors = new Set()) {
120
+ if (value === null || typeof value === 'boolean')
121
+ return;
122
+ if (typeof value === 'string') {
123
+ if (hasUnpairedSurrogate(value))
124
+ fail('invalid_json');
125
+ return;
126
+ }
127
+ if (typeof value === 'number') {
128
+ if (!Number.isFinite(value))
129
+ fail('invalid_json');
130
+ return;
131
+ }
132
+ if (typeof value !== 'object')
133
+ fail('invalid_json');
134
+ const containerDepth = depth + 1;
135
+ if (containerDepth > MAX_JSON_DEPTH)
136
+ fail('invalid_json');
137
+ if (ancestors.has(value))
138
+ fail('invalid_json');
139
+ ancestors.add(value);
140
+ try {
141
+ if (Array.isArray(value)) {
142
+ if (Reflect.ownKeys(value).some((key) => {
143
+ if (key === 'length')
144
+ return false;
145
+ return typeof key !== 'string' || !/^(?:0|[1-9][0-9]*)$/.test(key);
146
+ }))
147
+ fail('invalid_json');
148
+ for (let index = 0; index < value.length; index += 1) {
149
+ const descriptor = Object.getOwnPropertyDescriptor(value, String(index));
150
+ if (!descriptor?.enumerable || !('value' in descriptor))
151
+ fail('invalid_json');
152
+ assertJson(descriptor.value, containerDepth, ancestors);
153
+ }
154
+ return;
155
+ }
156
+ if (!plain(value))
157
+ fail('invalid_json');
158
+ for (const key of Reflect.ownKeys(value)) {
159
+ if (typeof key !== 'string' || hasUnpairedSurrogate(key))
160
+ fail('invalid_json');
161
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
162
+ if (!descriptor?.enumerable || !('value' in descriptor))
163
+ fail('invalid_json');
164
+ assertJson(descriptor.value, containerDepth, ancestors);
165
+ }
166
+ }
167
+ finally {
168
+ ancestors.delete(value);
169
+ }
170
+ }
171
+ function deepFreeze(value) {
172
+ if (value !== null && typeof value === 'object' && !Object.isFrozen(value)) {
173
+ for (const child of Object.values(value))
174
+ deepFreeze(child);
175
+ Object.freeze(value);
176
+ }
177
+ return value;
178
+ }
179
+ function frozenJsonCopy(value) {
180
+ assertJson(value);
181
+ return deepFreeze(structuredClone(value));
182
+ }
183
+ function identifier(value) {
184
+ if (typeof value !== 'string'
185
+ || Buffer.byteLength(value, 'utf8') > MAX_IDENTIFIER_BYTES
186
+ || !IDENTIFIER.test(value))
187
+ fail('invalid_identifier');
188
+ return value;
189
+ }
190
+ function enumValue(value, values, code) {
191
+ if (typeof value !== 'string' || !values.has(value))
192
+ fail(code);
193
+ return value;
194
+ }
195
+ export function parseRefereeRunnerPin(value) {
196
+ const object = exactObject(value, RUNNER_PIN_KEYS);
197
+ if (typeof object.executable !== 'string'
198
+ || !path.isAbsolute(object.executable)
199
+ || object.executable.length === 0
200
+ || object.executable.includes('\0')
201
+ || hasUnpairedSurrogate(object.executable)
202
+ || Buffer.byteLength(object.executable, 'utf8') > MAX_EXECUTABLE_BYTES) {
203
+ fail('invalid_executable');
204
+ }
205
+ if (typeof object.executable_sha256 !== 'string'
206
+ || !DIGEST.test(object.executable_sha256)) {
207
+ fail('invalid_executable_digest');
208
+ }
209
+ const executableSha256 = object.executable_sha256;
210
+ if (!Array.isArray(object.args) || object.args.length > MAX_RUNNER_ARGUMENTS) {
211
+ fail('invalid_arguments');
212
+ }
213
+ let totalBytes = 0;
214
+ const args = object.args.map((argument) => {
215
+ if (typeof argument !== 'string'
216
+ || argument.includes('\0')
217
+ || hasUnpairedSurrogate(argument)
218
+ || Buffer.byteLength(argument, 'utf8') > MAX_RUNNER_ARGUMENT_BYTES) {
219
+ fail('invalid_arguments');
220
+ }
221
+ totalBytes += Buffer.byteLength(argument, 'utf8');
222
+ return argument;
223
+ });
224
+ if (totalBytes > MAX_RUNNER_ARGUMENT_VECTOR_BYTES)
225
+ fail('invalid_arguments');
226
+ return deepFreeze({
227
+ executable: object.executable,
228
+ executable_sha256: executableSha256,
229
+ args,
230
+ });
231
+ }
232
+ export function parseRefereeRunnerRequest(value) {
233
+ const object = exactObject(value, RUNNER_REQUEST_KEYS);
234
+ if (object.version !== REFEREE_RUNNER_REQUEST_VERSION)
235
+ fail('invalid_version');
236
+ const expectedCaid = object.expected_caid;
237
+ if (typeof expectedCaid !== 'string' || !CAID.test(expectedCaid)) {
238
+ fail('invalid_caid');
239
+ }
240
+ const expectedActionDigest = object.expected_action_digest;
241
+ if (typeof expectedActionDigest !== 'string' || !DIGEST.test(expectedActionDigest)) {
242
+ fail('invalid_action_digest');
243
+ }
244
+ if (typeof object.aec_required !== 'boolean')
245
+ fail('invalid_aec_required');
246
+ const parsed = {
247
+ version: REFEREE_RUNNER_REQUEST_VERSION,
248
+ case_id: identifier(object.case_id),
249
+ protocol_id: identifier(object.protocol_id),
250
+ expected_caid: expectedCaid,
251
+ expected_action_digest: expectedActionDigest,
252
+ aec_required: object.aec_required,
253
+ execution_scope: enumValue(object.execution_scope, EXECUTION_SCOPES, 'invalid_execution_scope'),
254
+ input: frozenJsonCopy(object.input),
255
+ };
256
+ return deepFreeze(parsed);
257
+ }
258
+ export function parseRefereeRunnerOutput(value) {
259
+ const object = exactObject(value, RUNNER_OUTPUT_KEYS);
260
+ if (object.version !== REFEREE_RUNNER_OUTPUT_VERSION)
261
+ fail('invalid_version');
262
+ const caid = object.caid;
263
+ if (caid !== null && (typeof caid !== 'string' || !CAID.test(caid))) {
264
+ fail('invalid_caid');
265
+ }
266
+ const actionDigest = object.action_digest;
267
+ if (actionDigest !== null
268
+ && (typeof actionDigest !== 'string' || !DIGEST.test(actionDigest))) {
269
+ fail('invalid_action_digest');
270
+ }
271
+ return deepFreeze({
272
+ version: REFEREE_RUNNER_OUTPUT_VERSION,
273
+ case_id: identifier(object.case_id),
274
+ protocol_id: identifier(object.protocol_id),
275
+ native_verification: enumValue(object.native_verification, NATIVE_VERIFICATIONS, 'invalid_native_verification'),
276
+ rp_acceptance: enumValue(object.rp_acceptance, RP_ACCEPTANCES, 'invalid_rp_acceptance'),
277
+ caid,
278
+ action_digest: actionDigest,
279
+ aec_satisfaction: enumValue(object.aec_satisfaction, AEC_SATISFACTIONS, 'invalid_aec_satisfaction'),
280
+ provider_outcome: enumValue(object.provider_outcome, PROVIDER_OUTCOMES, 'invalid_provider_outcome'),
281
+ effect_relation: enumValue(object.effect_relation, EFFECT_RELATIONS, 'invalid_effect_relation'),
282
+ execution_scope: enumValue(object.execution_scope, EXECUTION_SCOPES, 'invalid_execution_scope'),
283
+ });
284
+ }
285
+ export function parseRefereeEvaluationInput(value) {
286
+ const object = exactObject(value, EVALUATION_KEYS);
287
+ if (object.version !== REFEREE_EVALUATION_VERSION)
288
+ fail('invalid_version');
289
+ return deepFreeze({
290
+ version: REFEREE_EVALUATION_VERSION,
291
+ runner_pin: parseRefereeRunnerPin(object.runner_pin),
292
+ request: parseRefereeRunnerRequest(object.request),
293
+ output: parseRefereeRunnerOutput(object.output),
294
+ });
295
+ }
296
+ function matchCaidAndAction(request, output) {
297
+ if ((output.caid !== null && output.caid !== request.expected_caid)
298
+ || (output.action_digest !== null
299
+ && output.action_digest !== request.expected_action_digest)) {
300
+ return 'MISMATCH';
301
+ }
302
+ if (output.caid === null || output.action_digest === null) {
303
+ return 'INDETERMINATE';
304
+ }
305
+ return 'MATCH';
306
+ }
307
+ function resultDimensions(request, output) {
308
+ return deepFreeze({
309
+ native_verification: { value: output.native_verification },
310
+ rp_acceptance: { value: output.rp_acceptance },
311
+ caid_action_match: {
312
+ value: matchCaidAndAction(request, output),
313
+ expected_caid: request.expected_caid,
314
+ observed_caid: output.caid,
315
+ expected_action_digest: request.expected_action_digest,
316
+ observed_action_digest: output.action_digest,
317
+ },
318
+ aec_satisfaction: {
319
+ required: request.aec_required,
320
+ value: output.aec_satisfaction,
321
+ },
322
+ provider_outcome: { value: output.provider_outcome },
323
+ effect_relation: { value: output.effect_relation },
324
+ });
325
+ }
326
+ function baseResult(runnerPin, request, status, dimensions, reasonCodes) {
327
+ return deepFreeze({
328
+ version: REFEREE_RESULT_VERSION,
329
+ status,
330
+ claim_scope: 'SELF_TEST',
331
+ execution_authorizing: false,
332
+ case_id: request.case_id,
333
+ protocol_id: request.protocol_id,
334
+ runner_pin: runnerPin,
335
+ execution_scope: request.execution_scope,
336
+ remote_atomicity_claimed: false,
337
+ dimensions,
338
+ reason_codes: [...reasonCodes],
339
+ });
340
+ }
341
+ /** Evaluate one already-produced, caller-pinned protocol-runner output. */
342
+ export function evaluateReferee(value) {
343
+ const { runner_pin: runnerPin, request, output } = parseRefereeEvaluationInput(value);
344
+ const dimensions = resultDimensions(request, output);
345
+ const reasons = [];
346
+ let definiteFailure = false;
347
+ let uncertainty = false;
348
+ const nonConformant = (reason) => {
349
+ reasons.push(reason);
350
+ definiteFailure = true;
351
+ };
352
+ const indeterminate = (reason) => {
353
+ reasons.push(reason);
354
+ uncertainty = true;
355
+ };
356
+ if (output.case_id !== request.case_id)
357
+ nonConformant('case_id_mismatch');
358
+ if (output.protocol_id !== request.protocol_id)
359
+ nonConformant('protocol_id_mismatch');
360
+ if (output.execution_scope !== request.execution_scope) {
361
+ nonConformant('execution_scope_mismatch');
362
+ }
363
+ if (dimensions.native_verification.value === 'REJECTED') {
364
+ nonConformant('native_verification_rejected');
365
+ }
366
+ else if (dimensions.native_verification.value === 'INDETERMINATE') {
367
+ indeterminate('native_verification_indeterminate');
368
+ }
369
+ if (dimensions.rp_acceptance.value === 'REJECTED') {
370
+ nonConformant('rp_acceptance_rejected');
371
+ }
372
+ else if (dimensions.rp_acceptance.value === 'INDETERMINATE') {
373
+ indeterminate('rp_acceptance_indeterminate');
374
+ }
375
+ if (dimensions.caid_action_match.value === 'MISMATCH') {
376
+ nonConformant('caid_action_mismatch');
377
+ }
378
+ else if (dimensions.caid_action_match.value === 'INDETERMINATE') {
379
+ indeterminate('caid_action_indeterminate');
380
+ }
381
+ if (dimensions.aec_satisfaction.value === 'NOT_SATISFIED') {
382
+ nonConformant('aec_not_satisfied');
383
+ }
384
+ else if (dimensions.aec_satisfaction.value === 'INDETERMINATE') {
385
+ indeterminate('aec_indeterminate');
386
+ }
387
+ else if (request.aec_required
388
+ && dimensions.aec_satisfaction.value === 'NOT_ASSESSED') {
389
+ nonConformant('aec_not_assessed');
390
+ }
391
+ if (dimensions.provider_outcome.value === 'INDETERMINATE') {
392
+ indeterminate('provider_outcome_indeterminate');
393
+ }
394
+ if (dimensions.effect_relation.value === 'DIVERGED') {
395
+ nonConformant('effect_diverged');
396
+ }
397
+ else if (dimensions.effect_relation.value === 'INDETERMINATE') {
398
+ indeterminate('effect_indeterminate');
399
+ }
400
+ const status = definiteFailure
401
+ ? 'NON_CONFORMANT'
402
+ : uncertainty
403
+ ? 'INDETERMINATE'
404
+ : 'CONFORMANT';
405
+ return baseResult(runnerPin, request, status, dimensions, reasons);
406
+ }
407
+ /** Convert a bounded runner failure into an explicit no-claim result. */
408
+ export function createIndeterminateRefereeResult(value) {
409
+ const object = exactObject(value, ['runner_pin', 'request', 'reason_code']);
410
+ const runnerPin = parseRefereeRunnerPin(object.runner_pin);
411
+ const request = parseRefereeRunnerRequest(object.request);
412
+ if (typeof object.reason_code !== 'string' || !REASON_CODE.test(object.reason_code)) {
413
+ fail('invalid_reason_code');
414
+ }
415
+ const dimensions = deepFreeze({
416
+ native_verification: { value: 'INDETERMINATE' },
417
+ rp_acceptance: { value: 'INDETERMINATE' },
418
+ caid_action_match: {
419
+ value: 'INDETERMINATE',
420
+ expected_caid: request.expected_caid,
421
+ observed_caid: null,
422
+ expected_action_digest: request.expected_action_digest,
423
+ observed_action_digest: null,
424
+ },
425
+ aec_satisfaction: {
426
+ required: request.aec_required,
427
+ value: request.aec_required ? 'INDETERMINATE' : 'NOT_ASSESSED',
428
+ },
429
+ provider_outcome: { value: 'NOT_ASSESSED' },
430
+ effect_relation: { value: 'NOT_ASSESSED' },
431
+ });
432
+ return baseResult(runnerPin, request, 'INDETERMINATE', dimensions, [object.reason_code]);
433
+ }
434
+ //# sourceMappingURL=referee.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"referee.js","sourceRoot":"","sources":["../src/referee.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@emilia-protocol/gate",
3
- "version": "0.18.1",
3
+ "version": "0.18.2",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/emiliaprotocol/emilia-protocol.git",
@@ -309,6 +309,14 @@
309
309
  "types": "./dist/gate-qualification-v2.d.ts",
310
310
  "import": "./gate-qualification-v2.js"
311
311
  },
312
+ "./referee": {
313
+ "types": "./dist/referee.d.ts",
314
+ "import": "./referee.js"
315
+ },
316
+ "./referee-runner": {
317
+ "types": "./dist/referee-runner.d.ts",
318
+ "import": "./referee-runner.js"
319
+ },
312
320
  "./zk-range-proof": {
313
321
  "types": "./dist/zk-range-proof.d.ts",
314
322
  "import": "./zk-range-proof.js"
@@ -367,6 +375,8 @@
367
375
  "admission-store.js",
368
376
  "admission-store-postgres.js",
369
377
  "gate-qualification-v2.js",
378
+ "referee.js",
379
+ "referee-runner.js",
370
380
  "zk-range-proof.js",
371
381
  "reports/assurance-package.js",
372
382
  "ep-assure.mjs",
@@ -0,0 +1,3 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Compatibility entry point for the bounded Referee subprocess transport.
3
+ export * from './dist/referee-runner.js';
package/referee.js ADDED
@@ -0,0 +1,3 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ // Compatibility entry point for the offline, non-authorizing Referee core.
3
+ export * from './dist/referee.js';
package/src/index.ts CHANGED
@@ -236,6 +236,8 @@ export * from './autonomy-control-plane-profile.js';
236
236
  export * from './admission-store.js';
237
237
  export * from './admission-store-postgres.js';
238
238
  export * from './gate-qualification-v2.js';
239
+ export * from './referee.js';
240
+ export * from './referee-runner.js';
239
241
  export {
240
242
  ZK_RANGE_RECEIPT_VERSION,
241
243
  ZK_RANGE_SCHEME,