@riddledc/riddle-proof-packs 0.2.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/index.cjs ADDED
@@ -0,0 +1,1131 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var index_exports = {};
22
+ __export(index_exports, {
23
+ RIDDLE_PROOF_PACK_MANIFEST: () => RIDDLE_PROOF_PACK_MANIFEST,
24
+ RIDDLE_PROOF_PACK_PROFILES: () => RIDDLE_PROOF_PACK_PROFILES,
25
+ getPackEnabledRiddleProofPackProfiles: () => getPackEnabledRiddleProofPackProfiles,
26
+ getRiddleProofPackProfile: () => getRiddleProofPackProfile,
27
+ getRiddleProofPackProfileByPackId: () => getRiddleProofPackProfileByPackId,
28
+ getRiddleProofPackProfileManifest: () => getRiddleProofPackProfileManifest,
29
+ getRiddleProofProfilesByPackId: () => getRiddleProofProfilesByPackId,
30
+ instantiateRiddleProofProfile: () => instantiateRiddleProofProfile,
31
+ listRiddleProofPackProfiles: () => listRiddleProofPackProfiles,
32
+ listRiddleProofPacks: () => listRiddleProofPacks
33
+ });
34
+ module.exports = __toCommonJS(index_exports);
35
+
36
+ // src/pack-data.ts
37
+ var import_riddle_proof = require("@riddledc/riddle-proof");
38
+
39
+ // packs/auth-smoke/profile.json
40
+ var profile_default = {
41
+ version: "riddle-proof.profile.v1",
42
+ name: "auth-smoke",
43
+ target: {
44
+ route: "/",
45
+ viewports: [
46
+ {
47
+ name: "mobile",
48
+ width: 390,
49
+ height: 844
50
+ },
51
+ {
52
+ name: "desktop",
53
+ width: 1440,
54
+ height: 1e3
55
+ }
56
+ ],
57
+ auth: "none",
58
+ wait_for_selector: "body",
59
+ setup_actions: [
60
+ {
61
+ type: "wait",
62
+ ms: 250
63
+ }
64
+ ]
65
+ },
66
+ checks: [
67
+ {
68
+ type: "selector_visible",
69
+ selector: "body"
70
+ },
71
+ {
72
+ type: "text_visible",
73
+ text: "Example"
74
+ },
75
+ {
76
+ type: "no_mobile_horizontal_overflow"
77
+ },
78
+ {
79
+ type: "no_fatal_console_errors"
80
+ }
81
+ ],
82
+ artifacts: [
83
+ "screenshot",
84
+ "console",
85
+ "dom_summary",
86
+ "proof_json"
87
+ ],
88
+ failure_policy: {
89
+ environment_blocked: "neutral",
90
+ proof_insufficient: "review",
91
+ product_regression: "fail"
92
+ },
93
+ metadata: {
94
+ pack_id: "auth_smoke",
95
+ pack_public_name: "Auth Smoke Pack",
96
+ purpose: "Template for baseline page smoke checks where the entry route is publicly reachable.",
97
+ required_receipts: [
98
+ "entry/home route is reachable",
99
+ "visible route baseline content",
100
+ "overflow and console noise are clean",
101
+ "no-console-error baseline"
102
+ ]
103
+ }
104
+ };
105
+
106
+ // packs/canvas-gameplay/profile.json
107
+ var profile_default2 = {
108
+ version: "riddle-proof.profile.v1",
109
+ name: "canvas-gameplay",
110
+ target: {
111
+ route: "/",
112
+ viewports: [
113
+ {
114
+ name: "mobile",
115
+ width: 390,
116
+ height: 844
117
+ },
118
+ {
119
+ name: "tablet",
120
+ width: 820,
121
+ height: 1180
122
+ },
123
+ {
124
+ name: "desktop",
125
+ width: 1440,
126
+ height: 1e3
127
+ }
128
+ ],
129
+ timeout_sec: 300,
130
+ wait_for_selector: "#game-root canvas",
131
+ screenshot_mode: "viewport",
132
+ setup_actions: [
133
+ {
134
+ type: "clear_storage",
135
+ storage: "both",
136
+ reload: true
137
+ },
138
+ {
139
+ type: "wait_for_selector",
140
+ selector: "#game-root",
141
+ timeout_ms: 2e4
142
+ },
143
+ {
144
+ type: "wait_for_selector",
145
+ selector: "#game-root canvas",
146
+ timeout_ms: 2e4
147
+ },
148
+ {
149
+ type: "window_eval",
150
+ label: "install-gameplay-proof-reader",
151
+ timeout_ms: 1e4,
152
+ store_return_to: "__gameplayProof.ready",
153
+ script: "window.__riddleGameplayStep=()=>{const api=window.__exampleGameProof;const state=api?.step?.()||api?.read?.()||{};const out={ready:state.ready===true,inputAccepted:state.inputAccepted===true,gameOver:state.gameOver===true,distance:Number(state.distance||0),score:Number(state.score||0),level:Number(state.level||0)};out.ok=out.ready&&out.inputAccepted&&out.gameOver===false&&out.distance>=2&&out.score>=10;window.__gameplayProof={...(window.__gameplayProof||{}),running:out};return out;};const api=window.__exampleGameProof;const initial=api?.read?.()||{};const out={ready:initial.ready===true,inputAccepted:initial.inputAccepted===true,gameOver:initial.gameOver===true,distance:Number(initial.distance||0),score:Number(initial.score||0),level:Number(initial.level||0)};window.__gameplayProof={...(window.__gameplayProof||{}),ready:out};return out;",
154
+ return_summary_fields: [
155
+ {
156
+ path: "ready"
157
+ },
158
+ {
159
+ path: "inputAccepted"
160
+ },
161
+ {
162
+ path: "distance"
163
+ },
164
+ {
165
+ path: "score"
166
+ },
167
+ {
168
+ path: "gameOver"
169
+ }
170
+ ]
171
+ },
172
+ {
173
+ type: "assert_window_value",
174
+ path: "__gameplayProof.ready.ready",
175
+ expected: true,
176
+ timeout_ms: 1e4
177
+ },
178
+ {
179
+ type: "canvas_signature",
180
+ selector: "#game-root canvas",
181
+ label: "ready",
182
+ store_signature_to: "__gameplayProof.readyCanvas",
183
+ timeout_ms: 1e4
184
+ },
185
+ {
186
+ type: "screenshot",
187
+ label: "ready",
188
+ mode: "viewport"
189
+ },
190
+ {
191
+ type: "press",
192
+ key: "Space",
193
+ after_ms: 120
194
+ },
195
+ {
196
+ type: "press",
197
+ key: "ArrowRight",
198
+ after_ms: 120
199
+ },
200
+ {
201
+ type: "window_call_until",
202
+ path: "__riddleGameplayStep",
203
+ until_path: "__gameplayProof.running.ok",
204
+ until_expected_value: true,
205
+ max_calls: 36,
206
+ interval_ms: 250,
207
+ timeout_ms: 15e3
208
+ },
209
+ {
210
+ type: "window_eval",
211
+ label: "capture-running-proof",
212
+ timeout_ms: 1e4,
213
+ store_return_to: "__gameplayProof.running",
214
+ script: "return window.__riddleGameplayStep?.()||{};",
215
+ return_summary_fields: [
216
+ {
217
+ path: "ok"
218
+ },
219
+ {
220
+ path: "distance"
221
+ },
222
+ {
223
+ path: "score"
224
+ },
225
+ {
226
+ path: "inputAccepted"
227
+ },
228
+ {
229
+ path: "gameOver"
230
+ }
231
+ ]
232
+ },
233
+ {
234
+ type: "assert_window_value",
235
+ path: "__gameplayProof.running.ok",
236
+ expected: true,
237
+ timeout_ms: 1e4
238
+ },
239
+ {
240
+ type: "assert_window_value",
241
+ path: "__gameplayProof.running.gameOver",
242
+ expected: false,
243
+ timeout_ms: 1e4
244
+ },
245
+ {
246
+ type: "assert_window_number",
247
+ path: "__gameplayProof.running.distance",
248
+ min_value: 2,
249
+ timeout_ms: 1e4
250
+ },
251
+ {
252
+ type: "assert_window_number",
253
+ path: "__gameplayProof.running.score",
254
+ min_value: 10,
255
+ timeout_ms: 1e4
256
+ },
257
+ {
258
+ type: "canvas_signature",
259
+ selector: "#game-root canvas",
260
+ label: "running",
261
+ store_signature_to: "__gameplayProof.runningCanvas",
262
+ timeout_ms: 1e4
263
+ },
264
+ {
265
+ type: "screenshot",
266
+ label: "running",
267
+ mode: "viewport"
268
+ }
269
+ ]
270
+ },
271
+ checks: [
272
+ {
273
+ type: "route_loaded",
274
+ expected_path: "/games/example"
275
+ },
276
+ {
277
+ type: "selector_visible",
278
+ selector: "#game-root"
279
+ },
280
+ {
281
+ type: "selector_visible",
282
+ selector: "#game-root canvas"
283
+ },
284
+ {
285
+ type: "selector_count_equals",
286
+ selector: "#game-root canvas",
287
+ expected_count: 1
288
+ },
289
+ {
290
+ type: "text_absent",
291
+ pattern: "\\bNaN\\b"
292
+ },
293
+ {
294
+ type: "text_absent",
295
+ pattern: "undefined",
296
+ flags: "i"
297
+ },
298
+ {
299
+ type: "no_horizontal_overflow",
300
+ max_overflow_px: 1
301
+ },
302
+ {
303
+ type: "no_fatal_console_errors"
304
+ },
305
+ {
306
+ type: "no_console_warnings"
307
+ }
308
+ ],
309
+ artifacts: [
310
+ "screenshot",
311
+ "console",
312
+ "dom_summary",
313
+ "proof_json"
314
+ ],
315
+ baseline_policy: "invariant_only",
316
+ failure_policy: {
317
+ environment_blocked: "neutral",
318
+ proof_insufficient: "fail",
319
+ product_regression: "fail"
320
+ },
321
+ metadata: {
322
+ purpose: "Template for gameplay routes where gameplay evidence is primarily rendered through canvas.",
323
+ pack_id: "canvas_gameplay",
324
+ pack_public_name: "Canvas Gameplay Pack",
325
+ required_receipts: [
326
+ "canvas mount and signature capture",
327
+ "route loaded on gameplay path",
328
+ "non-fatal browser evidence"
329
+ ]
330
+ }
331
+ };
332
+
333
+ // packs/gameplay-window-call-until/profile.json
334
+ var profile_default3 = {
335
+ version: "riddle-proof.profile.v1",
336
+ name: "gameplay-window-call-until",
337
+ target: {
338
+ route: "/games/example",
339
+ viewports: [
340
+ { name: "mobile", width: 390, height: 844 },
341
+ { name: "tablet", width: 820, height: 1180 },
342
+ { name: "desktop", width: 1440, height: 1e3 }
343
+ ],
344
+ timeout_sec: 300,
345
+ wait_for_selector: "#game-root canvas",
346
+ screenshot_mode: "viewport",
347
+ setup_actions: [
348
+ { type: "clear_storage", storage: "both", reload: true },
349
+ { type: "wait_for_selector", selector: "#game-root", timeout_ms: 2e4 },
350
+ { type: "wait_for_selector", selector: "#game-root canvas", timeout_ms: 2e4 },
351
+ {
352
+ type: "window_eval",
353
+ label: "install-gameplay-proof-reader",
354
+ timeout_ms: 1e4,
355
+ store_return_to: "__gameplayProof.ready",
356
+ script: "window.__riddleGameplayStep=()=>{const api=window.__exampleGameProof;const state=api?.step?.()||api?.read?.()||{};const out={ready:state.ready===true,inputAccepted:state.inputAccepted===true,gameOver:state.gameOver===true,distance:Number(state.distance||0),score:Number(state.score||0),level:Number(state.level||0)};out.ok=out.ready&&out.inputAccepted&&out.gameOver===false&&out.distance>=2&&out.score>=10;window.__gameplayProof={...(window.__gameplayProof||{}),running:out};return out;};const api=window.__exampleGameProof;const initial=api?.read?.()||{};const out={ready:initial.ready===true,inputAccepted:initial.inputAccepted===true,gameOver:initial.gameOver===true,distance:Number(initial.distance||0),score:Number(initial.score||0),level:Number(initial.level||0)};window.__gameplayProof={...(window.__gameplayProof||{}),ready:out};return out;",
357
+ return_summary_fields: [
358
+ { path: "ready" },
359
+ { path: "inputAccepted" },
360
+ { path: "distance" },
361
+ { path: "score" },
362
+ { path: "gameOver" }
363
+ ]
364
+ },
365
+ { type: "assert_window_value", path: "__gameplayProof.ready.ready", expected: true, timeout_ms: 1e4 },
366
+ {
367
+ type: "canvas_signature",
368
+ selector: "#game-root canvas",
369
+ label: "ready",
370
+ store_signature_to: "__gameplayProof.readyCanvas",
371
+ timeout_ms: 1e4
372
+ },
373
+ { type: "screenshot", label: "ready", mode: "viewport" },
374
+ { type: "press", key: "Space", after_ms: 120 },
375
+ { type: "press", key: "ArrowRight", after_ms: 120 },
376
+ {
377
+ type: "window_call_until",
378
+ path: "__riddleGameplayStep",
379
+ until_path: "__gameplayProof.running.ok",
380
+ until_expected_value: true,
381
+ max_calls: 36,
382
+ interval_ms: 250,
383
+ timeout_ms: 15e3
384
+ },
385
+ {
386
+ type: "window_eval",
387
+ label: "capture-running-proof",
388
+ timeout_ms: 1e4,
389
+ store_return_to: "__gameplayProof.running",
390
+ script: "return window.__riddleGameplayStep?.()||{};",
391
+ return_summary_fields: [
392
+ { path: "ok" },
393
+ { path: "distance" },
394
+ { path: "score" },
395
+ { path: "inputAccepted" },
396
+ { path: "gameOver" }
397
+ ]
398
+ },
399
+ { type: "assert_window_value", path: "__gameplayProof.running.ok", expected: true, timeout_ms: 1e4 },
400
+ { type: "assert_window_value", path: "__gameplayProof.running.gameOver", expected: false, timeout_ms: 1e4 },
401
+ { type: "assert_window_number", path: "__gameplayProof.running.distance", min_value: 2, timeout_ms: 1e4 },
402
+ { type: "assert_window_number", path: "__gameplayProof.running.score", min_value: 10, timeout_ms: 1e4 },
403
+ {
404
+ type: "canvas_signature",
405
+ selector: "#game-root canvas",
406
+ label: "running",
407
+ store_signature_to: "__gameplayProof.runningCanvas",
408
+ timeout_ms: 1e4
409
+ },
410
+ { type: "screenshot", label: "running", mode: "viewport" }
411
+ ]
412
+ },
413
+ checks: [
414
+ { type: "route_loaded", expected_path: "/games/example" },
415
+ { type: "selector_visible", selector: "#game-root" },
416
+ { type: "selector_visible", selector: "#game-root canvas" },
417
+ { type: "selector_count_equals", selector: "#game-root canvas", expected_count: 1 },
418
+ { type: "text_absent", pattern: "\\bNaN\\b" },
419
+ { type: "text_absent", pattern: "undefined", flags: "i" },
420
+ { type: "no_horizontal_overflow", max_overflow_px: 1 },
421
+ { type: "no_fatal_console_errors" },
422
+ { type: "no_console_warnings" }
423
+ ],
424
+ artifacts: ["screenshot", "console", "dom_summary", "proof_json"],
425
+ baseline_policy: "invariant_only",
426
+ failure_policy: {
427
+ environment_blocked: "neutral",
428
+ proof_insufficient: "fail",
429
+ product_regression: "fail"
430
+ },
431
+ metadata: {
432
+ purpose: "Template for gameplay profiles where a route exposes window.__exampleGameProof.read() and optionally step(). Use window_call_until to wait for runtime state such as accepted input, distance, score, or level completion instead of relying on fixed sleeps that vary across hosted browser frame cadence."
433
+ }
434
+ };
435
+
436
+ // packs/handled-recovery-action-malformed-success/profile.json
437
+ var profile_default4 = {
438
+ version: "riddle-proof.profile.v1",
439
+ name: "handled-recovery-action-malformed-success",
440
+ target: {
441
+ route: "/account",
442
+ viewports: [
443
+ { name: "mobile", width: 390, height: 844 },
444
+ { name: "tablet", width: 820, height: 1180 },
445
+ { name: "desktop", width: 1440, height: 1e3 }
446
+ ],
447
+ timeout_sec: 300,
448
+ wait_ms: 800,
449
+ network_mocks: [
450
+ {
451
+ label: "account-summary",
452
+ url: "**/api/account/summary",
453
+ method: "GET",
454
+ status: 200,
455
+ content_type: "application/json",
456
+ required_hit_count: 3,
457
+ json: {
458
+ available_time: "4h 0m",
459
+ active_jobs: 2
460
+ }
461
+ },
462
+ {
463
+ label: "recent-jobs",
464
+ url: "**/api/jobs?limit=10",
465
+ method: "GET",
466
+ status: 200,
467
+ content_type: "application/json",
468
+ required_hit_count: 3,
469
+ json: {
470
+ jobs: [
471
+ {
472
+ id: "job_action_template_survives",
473
+ status: "completed"
474
+ }
475
+ ]
476
+ }
477
+ },
478
+ {
479
+ label: "existing-api-keys",
480
+ url: "**/api/api-keys",
481
+ method: "GET",
482
+ status: 200,
483
+ content_type: "application/json",
484
+ required_hit_count: 3,
485
+ json: {
486
+ keys: [
487
+ {
488
+ id: "key_action_template_existing",
489
+ name: "Existing action template key",
490
+ last4: "0001",
491
+ status: "active"
492
+ }
493
+ ]
494
+ }
495
+ },
496
+ {
497
+ label: "create-api-key-malformed-success",
498
+ url: "**/api/api-keys",
499
+ method: "POST",
500
+ status: 200,
501
+ content_type: "application/json",
502
+ required_hit_count: 3,
503
+ max_hit_count: 3,
504
+ capture_request_body: true,
505
+ request_body_contains: ["Action template malformed success key"],
506
+ body: "{not valid create success json"
507
+ }
508
+ ],
509
+ setup_actions: [
510
+ { type: "clear_storage", storage: "both", reload: true },
511
+ { type: "wait_for_selector", selector: "[data-testid='account-page']", timeout_ms: 3e4 },
512
+ { type: "wait_for_text", selector: "body", text: "4h 0m", timeout_ms: 3e4 },
513
+ { type: "wait_for_text", selector: "body", text: "job_action_template_survives", timeout_ms: 3e4 },
514
+ { type: "wait_for_text", selector: "body", text: "Existing action template key", timeout_ms: 3e4 },
515
+ { type: "fill", selector: "[data-testid='new-key-name']", value: "Action template malformed success key" },
516
+ { type: "clear_console" },
517
+ { type: "screenshot", label: "before-malformed-success-action" },
518
+ { type: "click", selector: "[data-testid='create-key-button']", text: "Create API key" },
519
+ { type: "wait_for_text", selector: "body", text: "Failed to create API key", timeout_ms: 3e4 },
520
+ { type: "assert_text_visible", selector: "body", text: "Existing action template key", timeout_ms: 5e3 },
521
+ { type: "assert_text_visible", selector: "body", text: "Active", timeout_ms: 5e3 },
522
+ { type: "assert_text_absent", selector: "body", text: "API Key Created!", timeout_ms: 1e3 },
523
+ { type: "assert_text_absent", selector: "body", text: "Expected property name", timeout_ms: 1e3 },
524
+ { type: "assert_text_absent", selector: "body", text: "SyntaxError", timeout_ms: 1e3 },
525
+ { type: "assert_text_absent", selector: "body", text: "[object Object]", timeout_ms: 1e3 },
526
+ { type: "screenshot", label: "malformed-success-action-visible-recovery" }
527
+ ]
528
+ },
529
+ checks: [
530
+ { type: "route_loaded", expected_path: "/account" },
531
+ { type: "selector_visible", selector: "[data-testid='account-page']" },
532
+ { type: "selector_visible", selector: "[data-testid='api-key-create-error']" },
533
+ { type: "text_visible", text: "4h 0m" },
534
+ { type: "text_visible", text: "2 active" },
535
+ { type: "text_visible", text: "job_action_template_survives" },
536
+ { type: "text_visible", text: "Existing action template key" },
537
+ { type: "text_visible", text: "Failed to create API key" },
538
+ { type: "text_visible", text: "Active" },
539
+ { type: "text_absent", text: "API Key Created!" },
540
+ { type: "text_absent", text: "Expected property name" },
541
+ { type: "text_absent", text: "SyntaxError" },
542
+ { type: "text_absent", text: "[object Object]" },
543
+ { type: "text_absent", text: "Application error" },
544
+ { type: "selector_count_equals", selector: "[data-testid='api-key-create-error']", expected_count: 1 },
545
+ { type: "selector_count_equals", selector: "[data-testid='recent-job-row']", expected_count: 1 },
546
+ { type: "selector_count_equals", selector: "[data-testid='api-key-row']", expected_count: 1 },
547
+ { type: "selector_count_equals", selector: "[data-testid='created-key-modal']", expected_count: 0 },
548
+ { type: "no_horizontal_overflow", max_overflow_px: 1 },
549
+ { type: "no_fatal_console_errors" },
550
+ { type: "no_console_warnings" }
551
+ ],
552
+ artifacts: ["screenshot", "console", "dom_summary", "proof_json"],
553
+ baseline_policy: "invariant_only",
554
+ failure_policy: {
555
+ environment_blocked: "neutral",
556
+ proof_insufficient: "fail",
557
+ product_regression: "fail"
558
+ },
559
+ metadata: {
560
+ purpose: "Template for handled malformed action-success recovery: prove surrounding state still renders, the failed action shows one recovery message, success UI and raw parser text stay absent, the action request body is captured, and browser console evidence remains clean."
561
+ }
562
+ };
563
+
564
+ // packs/handled-recovery-list-load/profile.json
565
+ var profile_default5 = {
566
+ version: "riddle-proof.profile.v1",
567
+ name: "handled-recovery-list-load",
568
+ target: {
569
+ route: "/account",
570
+ viewports: [
571
+ { name: "mobile", width: 390, height: 844 },
572
+ { name: "tablet", width: 820, height: 1180 },
573
+ { name: "desktop", width: 1440, height: 1e3 }
574
+ ],
575
+ timeout_sec: 300,
576
+ wait_ms: 800,
577
+ network_mocks: [
578
+ {
579
+ label: "account-summary",
580
+ url: "**/api/account/summary",
581
+ method: "GET",
582
+ status: 200,
583
+ content_type: "application/json",
584
+ required_hit_count: 3,
585
+ json: {
586
+ available_time: "4h 0m",
587
+ active_jobs: 2
588
+ }
589
+ },
590
+ {
591
+ label: "recent-jobs",
592
+ url: "**/api/jobs?limit=10",
593
+ method: "GET",
594
+ status: 200,
595
+ content_type: "application/json",
596
+ required_hit_count: 3,
597
+ json: {
598
+ jobs: [
599
+ {
600
+ id: "job_recovery_template_survives",
601
+ status: "completed"
602
+ }
603
+ ]
604
+ }
605
+ },
606
+ {
607
+ label: "saved-items-unavailable-load",
608
+ url: "**/api/saved-items",
609
+ method: "GET",
610
+ status: 503,
611
+ content_type: "application/json",
612
+ required_hit_count: 3,
613
+ json: {
614
+ error: "Synthetic saved items unavailable"
615
+ }
616
+ }
617
+ ],
618
+ setup_actions: [
619
+ { type: "clear_storage", storage: "both", reload: true },
620
+ { type: "wait_for_selector", selector: "[data-testid='account-page']", timeout_ms: 3e4 },
621
+ { type: "wait_for_text", selector: "body", text: "4h 0m", timeout_ms: 3e4 },
622
+ { type: "wait_for_text", selector: "body", text: "job_recovery_template_survives", timeout_ms: 3e4 },
623
+ { type: "wait_for_text", selector: "body", text: "Failed to load saved items", timeout_ms: 3e4 },
624
+ { type: "screenshot", label: "saved-items-malformed-load-visible-recovery" },
625
+ { type: "assert_text_absent", selector: "body", text: "No saved items yet", timeout_ms: 1e3 },
626
+ { type: "assert_text_absent", selector: "body", text: "Synthetic saved items unavailable", timeout_ms: 1e3 },
627
+ { type: "assert_text_absent", selector: "body", text: "saved_items_temporarily_unavailable", timeout_ms: 1e3 },
628
+ { type: "assert_text_absent", selector: "body", text: "Expected property name", timeout_ms: 1e3 },
629
+ { type: "assert_text_absent", selector: "body", text: "SyntaxError", timeout_ms: 1e3 },
630
+ { type: "assert_text_absent", selector: "body", text: "[object Object]", timeout_ms: 1e3 }
631
+ ]
632
+ },
633
+ checks: [
634
+ { type: "route_loaded", expected_path: "/account" },
635
+ { type: "selector_visible", selector: "[data-testid='account-page']" },
636
+ { type: "selector_visible", selector: "[data-testid='saved-items-error']" },
637
+ { type: "text_visible", text: "4h 0m" },
638
+ { type: "text_visible", text: "2 active" },
639
+ { type: "text_visible", text: "job_recovery_template_survives" },
640
+ { type: "text_visible", text: "Failed to load saved items" },
641
+ { type: "text_absent", text: "No saved items yet" },
642
+ { type: "text_absent", text: "Synthetic saved items unavailable" },
643
+ { type: "text_absent", text: "saved_items_temporarily_unavailable" },
644
+ { type: "text_absent", text: "Expected property name" },
645
+ { type: "text_absent", text: "SyntaxError" },
646
+ { type: "text_absent", text: "[object Object]" },
647
+ { type: "text_absent", text: "Application error" },
648
+ { type: "selector_count_equals", selector: "[data-testid='saved-items-error']", expected_count: 1 },
649
+ { type: "selector_count_equals", selector: "[data-testid='recent-job-row']", expected_count: 1 },
650
+ { type: "selector_count_equals", selector: "[data-testid='saved-item-row']", expected_count: 0 },
651
+ { type: "no_horizontal_overflow", max_overflow_px: 1 },
652
+ { type: "no_fatal_console_errors" },
653
+ { type: "no_console_warnings" }
654
+ ],
655
+ artifacts: ["screenshot", "console", "dom_summary", "proof_json"],
656
+ baseline_policy: "invariant_only",
657
+ failure_policy: {
658
+ environment_blocked: "neutral",
659
+ proof_insufficient: "fail",
660
+ product_regression: "fail"
661
+ },
662
+ metadata: {
663
+ purpose: "Template for handled list-load recovery: prove independent page data still renders, the failed list shows one recovery message, contradictory empty-state copy, raw backend text, parser text, and object leakage stay absent, and browser console evidence remains clean. Do not add max_hit_count to idempotent GET mocks unless exact call count is the product contract."
664
+ }
665
+ };
666
+
667
+ // packs/mobile-layout-smoke/profile.json
668
+ var profile_default6 = {
669
+ version: "riddle-proof.profile.v1",
670
+ name: "mobile-layout-smoke",
671
+ target: {
672
+ route: "/",
673
+ viewports: [
674
+ {
675
+ name: "mobile",
676
+ width: 390,
677
+ height: 844
678
+ }
679
+ ],
680
+ auth: "none",
681
+ wait_for_selector: "body",
682
+ setup_actions: [
683
+ {
684
+ type: "wait",
685
+ ms: 250
686
+ }
687
+ ]
688
+ },
689
+ checks: [
690
+ {
691
+ type: "route_loaded",
692
+ expected_path: "/"
693
+ },
694
+ {
695
+ type: "selector_visible",
696
+ selector: "body"
697
+ },
698
+ {
699
+ type: "text_visible",
700
+ text: "Example"
701
+ },
702
+ {
703
+ type: "no_mobile_horizontal_overflow"
704
+ },
705
+ {
706
+ type: "no_fatal_console_errors"
707
+ }
708
+ ],
709
+ artifacts: [
710
+ "screenshot",
711
+ "console",
712
+ "dom_summary",
713
+ "proof_json"
714
+ ],
715
+ failure_policy: {
716
+ environment_blocked: "neutral",
717
+ proof_insufficient: "fail",
718
+ product_regression: "fail"
719
+ },
720
+ metadata: {
721
+ pack_id: "layout_mobile",
722
+ pack_public_name: "Mobile Layout Pack",
723
+ purpose: "Template for high-signal mobile layout smoke checks.",
724
+ required_receipts: [
725
+ "primary visible root on mobile viewport",
726
+ "no horizontal overflow",
727
+ "critical copy presence",
728
+ "clean browser console"
729
+ ]
730
+ }
731
+ };
732
+
733
+ // packs/page-content-basic/profile.json
734
+ var profile_default7 = {
735
+ version: "riddle-proof.profile.v1",
736
+ name: "page-content-basic",
737
+ target: {
738
+ route: "/",
739
+ viewports: [
740
+ { name: "mobile", width: 390, height: 844 },
741
+ { name: "desktop", width: 1440, height: 1e3 }
742
+ ],
743
+ auth: "none",
744
+ wait_for_selector: "body",
745
+ setup_actions: [
746
+ { type: "wait", ms: 250 }
747
+ ]
748
+ },
749
+ checks: [
750
+ { type: "route_loaded", expected_path: "/" },
751
+ { type: "selector_visible", selector: "body" },
752
+ { type: "text_visible", text: "Example" },
753
+ { type: "no_mobile_horizontal_overflow" },
754
+ { type: "no_fatal_console_errors" }
755
+ ],
756
+ artifacts: ["screenshot", "console", "dom_summary", "proof_json"],
757
+ failure_policy: {
758
+ environment_blocked: "neutral",
759
+ proof_insufficient: "fail",
760
+ product_regression: "fail"
761
+ }
762
+ };
763
+
764
+ // packs/route-inventory-basic/profile.json
765
+ var profile_default8 = {
766
+ version: "riddle-proof.profile.v1",
767
+ name: "route-inventory-basic",
768
+ target: {
769
+ route: "/",
770
+ viewports: [
771
+ { name: "desktop", width: 1280, height: 900 },
772
+ { name: "mobile", width: 390, height: 844 }
773
+ ],
774
+ wait_for_selector: "[data-testid='route-list']",
775
+ timeout_sec: 180
776
+ },
777
+ checks: [
778
+ {
779
+ type: "route_inventory",
780
+ expected_routes: [
781
+ { name: "Example Route", path: "/example" }
782
+ ],
783
+ link_selector: "a[href='/example']",
784
+ source_selector: "[data-testid='route-list']",
785
+ route_path_prefix: "/example",
786
+ timeout_ms: 3e4
787
+ },
788
+ { type: "no_mobile_horizontal_overflow", max_overflow_px: 1 },
789
+ { type: "no_fatal_console_errors" }
790
+ ],
791
+ artifacts: ["screenshot", "console", "dom_summary", "proof_json"],
792
+ baseline_policy: "invariant_only"
793
+ };
794
+
795
+ // packs/spa-route-exit-state-hygiene/profile.json
796
+ var profile_default9 = {
797
+ version: "riddle-proof.profile.v1",
798
+ name: "spa-route-exit-state-hygiene",
799
+ target: {
800
+ route: "/games/example?proof=1",
801
+ viewports: [
802
+ { name: "phone", width: 390, height: 844 },
803
+ { name: "ipad-mini", width: 768, height: 1024 },
804
+ { name: "ipad", width: 820, height: 1180 },
805
+ { name: "desktop", width: 1440, height: 1e3 }
806
+ ],
807
+ timeout_sec: 300,
808
+ wait_for_selector: "#game-root",
809
+ screenshot_mode: "viewport",
810
+ setup_actions: [
811
+ { type: "clear_storage", storage: "both", reload: true },
812
+ { type: "wait_for_selector", selector: "#game-root", timeout_ms: 2e4 },
813
+ { type: "wait_for_selector", selector: "#game-root canvas, #game-root [data-proof-ready='true']", timeout_ms: 2e4 },
814
+ {
815
+ type: "window_eval",
816
+ label: "capture-route-active-state",
817
+ timeout_ms: 1e4,
818
+ store_return_to: "__rpRouteExit.active",
819
+ script: "const proof=window.__exampleRouteProof?.read?.()||{};const watched=['__exampleRouteProof','__exampleProofLastReceipt','exampleTouchState'];const activeGlobals=watched.filter((name)=>window[name]!==undefined);const out={ready:proof.ready===true,route:location.pathname,activeGlobals,activeGlobalCount:activeGlobals.length,receiptId:String(proof.receiptId||''),mode:String(proof.mode||'')};out.ok=out.ready===true&&out.activeGlobalCount>0;window.__rpRouteExit={...(window.__rpRouteExit||{}),active:out};return out;",
820
+ return_summary_fields: [
821
+ { path: "ok" },
822
+ { path: "ready" },
823
+ { path: "route" },
824
+ { path: "activeGlobalCount" },
825
+ { path: "activeGlobals" }
826
+ ]
827
+ },
828
+ { type: "assert_window_value", path: "__rpRouteExit.active.ok", expected_value: true, timeout_ms: 1e4 },
829
+ { type: "screenshot", label: "route-active-state", mode: "viewport" },
830
+ { type: "click", selector: "[data-testid='nav-home'], .nav-logo, a[href='/']", timeout_ms: 1e4 },
831
+ { type: "wait_for_selector", selector: "[data-testid='home-page'], main, [data-route='home']", timeout_ms: 2e4 },
832
+ {
833
+ type: "window_eval",
834
+ label: "capture-route-exit-cleanup",
835
+ timeout_ms: 1e4,
836
+ store_return_to: "__rpRouteExit.cleanup",
837
+ script: "const watched=['__exampleRouteProof','__exampleProofLastReceipt','exampleTouchState'];const staleNames=watched.filter((name)=>window[name]!==undefined);const out={ok:location.pathname==='/'&&staleNames.length===0,route:location.pathname,staleNames,staleCount:staleNames.length};window.__rpRouteExit={...(window.__rpRouteExit||{}),cleanup:out};return out;",
838
+ return_summary_fields: [
839
+ { path: "ok" },
840
+ { path: "route" },
841
+ { path: "staleCount" },
842
+ { path: "staleNames" }
843
+ ]
844
+ },
845
+ { type: "assert_window_value", path: "__rpRouteExit.cleanup.ok", expected_value: true, timeout_ms: 1e4 },
846
+ { type: "assert_window_number", path: "__rpRouteExit.cleanup.staleCount", expected_value: 0, timeout_ms: 1e4 },
847
+ { type: "screenshot", label: "home-after-route-exit-cleanup", mode: "viewport" }
848
+ ]
849
+ },
850
+ checks: [
851
+ { type: "route_loaded", expected_path: "/" },
852
+ { type: "selector_visible", selector: "[data-testid='home-page'], main, [data-route='home']" },
853
+ { type: "text_absent", pattern: "\\bNaN\\b" },
854
+ { type: "text_absent", pattern: "undefined", flags: "i" },
855
+ { type: "text_absent", pattern: "\\[object Object\\]" },
856
+ { type: "no_horizontal_overflow", max_overflow_px: 1 },
857
+ { type: "no_mobile_horizontal_overflow", max_overflow_px: 1 },
858
+ { type: "no_fatal_console_errors" },
859
+ { type: "no_console_warnings" }
860
+ ],
861
+ artifacts: ["screenshot", "console", "dom_summary", "proof_json"],
862
+ baseline_policy: "invariant_only",
863
+ failure_policy: {
864
+ environment_blocked: "neutral",
865
+ proof_insufficient: "fail",
866
+ product_regression: "fail"
867
+ },
868
+ metadata: {
869
+ pack_id: "state_hygiene",
870
+ pack_public_name: "State Hygiene Pack",
871
+ required_receipts: [
872
+ "active route-local proof helpers and route state receipt",
873
+ "route-exit affordance inventory before cleanup",
874
+ "route or mode exit action receipt through visible UI",
875
+ "post-cleanup stale-state inventory after route cleanup",
876
+ "screenshots at active and post-cleanup boundaries",
877
+ "console and warning accounting",
878
+ "proof JSON and artifact links"
879
+ ],
880
+ purpose: "Template for SPA route-exit hygiene profiles. Replace the example route, selectors, and watched globals with route-local proof helpers, receipts, timers, input state, or touch state that must exist while the feature route is active and must be removed after visible UI navigation returns home."
881
+ }
882
+ };
883
+
884
+ // packs/terminal-result-partial-evidence/profile.json
885
+ var profile_default10 = {
886
+ version: "riddle-proof.profile.v1",
887
+ name: "terminal-result-partial-evidence",
888
+ target: {
889
+ route: "/playground",
890
+ viewports: [
891
+ { name: "mobile", width: 390, height: 844 },
892
+ { name: "tablet", width: 820, height: 1180 },
893
+ { name: "desktop", width: 1440, height: 1e3 }
894
+ ],
895
+ timeout_sec: 300,
896
+ wait_ms: 800,
897
+ network_mocks: [
898
+ {
899
+ label: "api-console-sync-terminal-error-with-partial-evidence",
900
+ url: "**/v1/run",
901
+ method: "POST",
902
+ status: 200,
903
+ content_type: "application/json",
904
+ required_hit_count: 3,
905
+ max_hit_count: 3,
906
+ capture_request_body: true,
907
+ request_body_contains: [
908
+ '"sync":true',
909
+ '"include":["screenshots","console","har"]',
910
+ "terminal-result-template-screenshot"
911
+ ],
912
+ json: {
913
+ status: "completed_error",
914
+ success: false,
915
+ job_id: "job_terminal_result_template",
916
+ error: {
917
+ message: "Synthetic terminal result template failed after collecting partial evidence"
918
+ },
919
+ screenshots: [
920
+ {
921
+ name: "terminal-result-template-screenshot",
922
+ url: "https://cdn.example.invalid/terminal-result-template-screenshot.png"
923
+ }
924
+ ],
925
+ console: [
926
+ {
927
+ type: "log",
928
+ text: "terminal result template collected console evidence"
929
+ }
930
+ ],
931
+ har: {
932
+ log: {
933
+ entries: [
934
+ {
935
+ request: {
936
+ method: "GET",
937
+ url: "https://example.com/terminal-result-template-resource"
938
+ },
939
+ response: {
940
+ status: 500
941
+ }
942
+ }
943
+ ]
944
+ }
945
+ },
946
+ billing: {
947
+ actual_seconds: 30,
948
+ cost_usd: 4e-3
949
+ }
950
+ }
951
+ }
952
+ ],
953
+ setup_actions: [
954
+ { type: "clear_storage", storage: "both", reload: true },
955
+ { type: "wait_for_selector", selector: "[data-testid='api-console-page']", timeout_ms: 3e4 },
956
+ { type: "fill", selector: "[data-testid='api-console-json']", value: '{ "steps": [{ "screenshot": "terminal-result-template-screenshot" }], "sync": true, "include": ["screenshots", "console", "har"] }' },
957
+ { type: "clear_console" },
958
+ { type: "screenshot", label: "terminal-result-before-submit" },
959
+ { type: "click", selector: "[data-testid='run-api-console']", text: "Run" },
960
+ { type: "wait_for_text", selector: "body", text: "Synthetic terminal result template failed after collecting partial evidence", timeout_ms: 3e4 },
961
+ { type: "wait_for_text", selector: "body", text: "partial results available", timeout_ms: 3e4 },
962
+ { type: "assert_text_visible", selector: "body", text: "terminal-result-template-screenshot", timeout_ms: 5e3 },
963
+ { type: "assert_text_visible", selector: "body", text: "terminal result template collected console evidence", timeout_ms: 5e3 },
964
+ { type: "assert_text_visible", selector: "body", text: "terminal-result-template-resource", timeout_ms: 5e3 },
965
+ { type: "assert_text_absent", selector: "body", text: "Success", timeout_ms: 1e3 },
966
+ { type: "assert_text_absent", selector: "body", text: "No screenshots captured", timeout_ms: 1e3 },
967
+ { type: "assert_text_absent", selector: "body", text: "No console output captured", timeout_ms: 1e3 },
968
+ { type: "assert_text_absent", selector: "body", text: "No network requests captured", timeout_ms: 1e3 },
969
+ { type: "screenshot", label: "terminal-result-partial-evidence-expanded" }
970
+ ]
971
+ },
972
+ checks: [
973
+ { type: "route_loaded", expected_path: "/playground" },
974
+ { type: "selector_visible", selector: "[data-testid='api-console-page']" },
975
+ { type: "text_visible", text: "Error" },
976
+ { type: "text_visible", text: "Synthetic terminal result template failed after collecting partial evidence" },
977
+ { type: "text_visible", text: "partial results available" },
978
+ { type: "selector_text_visible", selector: "[data-testid='api-console-screenshots']", text: "terminal-result-template-screenshot" },
979
+ { type: "selector_text_visible", selector: "[data-testid='api-console-output']", text: "terminal result template collected console evidence" },
980
+ { type: "selector_text_visible", selector: "[data-testid='api-console-har']", text: "terminal-result-template-resource" },
981
+ { type: "text_absent", text: "Success" },
982
+ { type: "text_absent", text: "No screenshots captured" },
983
+ { type: "text_absent", text: "No console output captured" },
984
+ { type: "text_absent", text: "No network requests captured" },
985
+ { type: "text_absent", text: "Application error" },
986
+ { type: "selector_count_equals", selector: "[data-testid='api-console-error-indicator']", expected_count: 1 },
987
+ { type: "selector_count_equals", selector: "[data-testid='api-console-timeout-indicator']", expected_count: 0 },
988
+ { type: "selector_count_equals", selector: "[data-testid='api-console-success-indicator']", expected_count: 0 },
989
+ { type: "selector_count_equals", selector: "[data-testid='api-console-screenshot-item']", expected_count: 1 },
990
+ { type: "selector_count_at_least", selector: "[data-testid='api-console-output']", min_count: 1 },
991
+ { type: "selector_count_at_least", selector: "[data-testid='api-console-har']", min_count: 1 },
992
+ { type: "no_horizontal_overflow", max_overflow_px: 1 },
993
+ { type: "no_fatal_console_errors" },
994
+ { type: "no_console_warnings" }
995
+ ],
996
+ artifacts: ["screenshot", "console", "dom_summary", "proof_json"],
997
+ baseline_policy: "invariant_only",
998
+ failure_policy: {
999
+ environment_blocked: "neutral",
1000
+ proof_insufficient: "fail",
1001
+ product_regression: "fail"
1002
+ },
1003
+ metadata: {
1004
+ purpose: "Template for API-console terminal result honesty: return a terminal error or timeout JSON response with partial screenshot, console, and HAR evidence; require visible status honesty, partial-results copy, each artifact class, correct success/error/timeout selector polarity, no contradictory empty-evidence copy, and clean browser evidence. For timeout variants, change the mocked status and visible status checks to the product's timeout indicator while preserving the same partial-evidence contract."
1005
+ }
1006
+ };
1007
+
1008
+ // src/pack-data.ts
1009
+ function isRecord(value) {
1010
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
1011
+ }
1012
+ function safeString(value) {
1013
+ return typeof value === "string" ? value : void 0;
1014
+ }
1015
+ function safeStringArray(value) {
1016
+ if (!Array.isArray(value)) return [];
1017
+ const values = value.filter((item) => typeof item === "string").map((item) => item.trim());
1018
+ return values.filter((item) => item.length > 0);
1019
+ }
1020
+ function toPackMetadata(profile) {
1021
+ const metadata = isRecord(profile.metadata) ? profile.metadata : {};
1022
+ return {
1023
+ packId: safeString(metadata.pack_id),
1024
+ packPublicName: safeString(metadata.pack_public_name),
1025
+ requiredReceipts: safeStringArray(metadata.required_receipts),
1026
+ purpose: safeString(metadata.purpose)
1027
+ };
1028
+ }
1029
+ var rawProfiles = {
1030
+ "page-content-basic": profile_default7,
1031
+ "route-inventory-basic": profile_default8,
1032
+ "mobile-layout-smoke": profile_default6,
1033
+ "spa-route-exit-state-hygiene": profile_default9,
1034
+ "handled-recovery-list-load": profile_default5,
1035
+ "handled-recovery-action-malformed-success": profile_default4,
1036
+ "terminal-result-partial-evidence": profile_default10,
1037
+ "gameplay-window-call-until": profile_default3,
1038
+ "canvas-gameplay": profile_default2,
1039
+ "auth-smoke": profile_default
1040
+ };
1041
+ var RIDDLE_PROOF_PACK_PROFILES = Object.freeze(
1042
+ Object.fromEntries(
1043
+ Object.entries(rawProfiles).map(([slug, raw]) => {
1044
+ const profile = (0, import_riddle_proof.normalizeRiddleProofProfile)(raw);
1045
+ const normalizedSlug = profile.name || slug;
1046
+ return [normalizedSlug, profile];
1047
+ })
1048
+ )
1049
+ );
1050
+ var RIDDLE_PROOF_PACK_MANIFEST = Object.freeze(
1051
+ Object.entries(rawProfiles).map(([slug, raw]) => {
1052
+ const profile = (0, import_riddle_proof.normalizeRiddleProofProfile)(raw);
1053
+ const metadata = toPackMetadata(profile);
1054
+ return Object.freeze({
1055
+ name: profile.name,
1056
+ profile,
1057
+ slug,
1058
+ sourcePath: `packs/${slug}/profile.json`,
1059
+ ...metadata
1060
+ });
1061
+ })
1062
+ );
1063
+
1064
+ // src/listPacks.ts
1065
+ function listRiddleProofPackProfiles() {
1066
+ return RIDDLE_PROOF_PACK_MANIFEST;
1067
+ }
1068
+ function listRiddleProofPacks() {
1069
+ return RIDDLE_PROOF_PACK_MANIFEST;
1070
+ }
1071
+ function getRiddleProofPackProfileByPackId(packId) {
1072
+ const normalized = packId.trim().toLowerCase();
1073
+ return RIDDLE_PROOF_PACK_MANIFEST.find(
1074
+ (entry) => normalized.length > 0 && entry.packId?.toLowerCase() === normalized
1075
+ );
1076
+ }
1077
+ function getPackEnabledRiddleProofPackProfiles() {
1078
+ return RIDDLE_PROOF_PACK_MANIFEST.filter((entry) => Boolean(entry.packId));
1079
+ }
1080
+
1081
+ // src/resolvePack.ts
1082
+ function getRiddleProofPackProfileManifest(name) {
1083
+ const normalized = name.trim().toLowerCase();
1084
+ if (!normalized) return void 0;
1085
+ return RIDDLE_PROOF_PACK_MANIFEST.find(
1086
+ (entry) => entry.name.toLowerCase() === normalized || entry.slug === normalized
1087
+ );
1088
+ }
1089
+ function getRiddleProofPackProfile(name) {
1090
+ return RIDDLE_PROOF_PACK_PROFILES[name];
1091
+ }
1092
+ function getRiddleProofProfilesByPackId(packId) {
1093
+ const normalized = packId.trim().toLowerCase();
1094
+ return RIDDLE_PROOF_PACK_MANIFEST.filter(
1095
+ (entry) => normalized.length > 0 && entry.packId?.toLowerCase() === normalized
1096
+ );
1097
+ }
1098
+
1099
+ // src/instantiateProfile.ts
1100
+ var import_riddle_proof2 = require("@riddledc/riddle-proof");
1101
+ function instantiateRiddleProofProfile(profileName, options = {}) {
1102
+ const manifest = getRiddleProofPackProfileManifest(profileName);
1103
+ if (!manifest) throw new Error(`Unknown proof pack profile: ${profileName}`);
1104
+ const targetOverride = {
1105
+ ...manifest.profile.target,
1106
+ ...options.target || {},
1107
+ url: options.url ?? manifest.profile.target.url,
1108
+ route: options.route ?? manifest.profile.target.route
1109
+ };
1110
+ return (0, import_riddle_proof2.normalizeRiddleProofProfile)(
1111
+ { ...manifest.profile, target: targetOverride },
1112
+ {
1113
+ url: targetOverride.url,
1114
+ route: targetOverride.route,
1115
+ viewports: targetOverride.viewports
1116
+ }
1117
+ );
1118
+ }
1119
+ // Annotate the CommonJS export names for ESM import in node:
1120
+ 0 && (module.exports = {
1121
+ RIDDLE_PROOF_PACK_MANIFEST,
1122
+ RIDDLE_PROOF_PACK_PROFILES,
1123
+ getPackEnabledRiddleProofPackProfiles,
1124
+ getRiddleProofPackProfile,
1125
+ getRiddleProofPackProfileByPackId,
1126
+ getRiddleProofPackProfileManifest,
1127
+ getRiddleProofProfilesByPackId,
1128
+ instantiateRiddleProofProfile,
1129
+ listRiddleProofPackProfiles,
1130
+ listRiddleProofPacks
1131
+ });