@dreamboard-games/sdk 0.4.0-alpha.8 → 0.4.0-alpha.9

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 (111) hide show
  1. package/REFERENCE.md +1067 -164
  2. package/dist/authoring/index.d.ts +4 -9
  3. package/dist/authoring/index.js +11 -547
  4. package/dist/authoring/index.js.map +1 -1
  5. package/dist/authoring-compiler.d.ts +27 -0
  6. package/dist/authoring-compiler.js +12 -0
  7. package/dist/authoring-compiler.js.map +1 -0
  8. package/dist/authoring-materialize-cli.d.ts +1 -0
  9. package/dist/authoring-materialize-cli.js +46 -0
  10. package/dist/authoring-materialize-cli.js.map +1 -0
  11. package/dist/browser-interaction.d.ts +1 -1
  12. package/dist/{chunk-3BLN5POZ.js → chunk-3PFDHTR7.js} +16 -6
  13. package/dist/chunk-3PFDHTR7.js.map +1 -0
  14. package/dist/chunk-45P5CEGH.js +176 -0
  15. package/dist/chunk-45P5CEGH.js.map +1 -0
  16. package/dist/chunk-5XTAQ4EQ.js +32 -0
  17. package/dist/chunk-5XTAQ4EQ.js.map +1 -0
  18. package/dist/chunk-7ADPYKFT.js +532 -0
  19. package/dist/chunk-7ADPYKFT.js.map +1 -0
  20. package/dist/{chunk-44N3T2A5.js → chunk-BUOODBVO.js} +2 -2
  21. package/dist/{chunk-ZYONCTZ2.js → chunk-GMOBG7Y7.js} +4 -4
  22. package/dist/{chunk-VTK4TIXC.js → chunk-JRGP6W4V.js} +3 -3
  23. package/dist/chunk-L3W2FPRQ.js +1793 -0
  24. package/dist/chunk-L3W2FPRQ.js.map +1 -0
  25. package/dist/{chunk-XV27IQHA.js → chunk-NGYFBNBP.js} +3 -3
  26. package/dist/chunk-P6IJ5YVY.js +154 -0
  27. package/dist/chunk-P6IJ5YVY.js.map +1 -0
  28. package/dist/{chunk-IYX5OO2K.js → chunk-QQNL4WTX.js} +15 -2
  29. package/dist/chunk-QQNL4WTX.js.map +1 -0
  30. package/dist/{chunk-2TAKLJJD.js → chunk-SACZWUA6.js} +139 -46
  31. package/dist/chunk-SACZWUA6.js.map +1 -0
  32. package/dist/{chunk-VTNEWMWJ.js → chunk-SFOAY5H4.js} +2 -2
  33. package/dist/{chunk-VTNEWMWJ.js.map → chunk-SFOAY5H4.js.map} +1 -1
  34. package/dist/chunk-UNVCT5Z7.js +73 -0
  35. package/dist/chunk-UNVCT5Z7.js.map +1 -0
  36. package/dist/{chunk-YGQTL63W.js → chunk-WDR7SKBM.js} +2 -2
  37. package/dist/chunk-XDGRC6OR.js +7039 -0
  38. package/dist/chunk-XDGRC6OR.js.map +1 -0
  39. package/dist/chunk-XLHLFTLI.js +399 -0
  40. package/dist/chunk-XLHLFTLI.js.map +1 -0
  41. package/dist/{chunk-B2YBS3SG.js → chunk-YNW3KBDE.js} +41 -13
  42. package/dist/chunk-YNW3KBDE.js.map +1 -0
  43. package/dist/codegen.js +1 -1
  44. package/dist/{components-BTwSIjXj.d.ts → components-BPzsSRs8.d.ts} +1 -1
  45. package/dist/definitions-0kjPV9wh.d.ts +294 -0
  46. package/dist/{diagnostics-1BWjRo6-.d.ts → diagnostics-DIi3ina7.d.ts} +2 -1
  47. package/dist/{index-CFTjJIXd.d.ts → index-CWzWpQzM.d.ts} +1 -1
  48. package/dist/{index.d-C0PKOVbh.d.ts → index.d-C7Ztirg6.d.ts} +211 -3
  49. package/dist/index.js +2 -2
  50. package/dist/package-set.d.ts +2 -2
  51. package/dist/package-set.js +2 -2
  52. package/dist/{protocol-nS2ojsGr.d.ts → protocol-B2LWcqB4.d.ts} +9 -0
  53. package/dist/reducer/advanced.d.ts +4 -4
  54. package/dist/reducer/advanced.js +7 -26
  55. package/dist/reducer/advanced.js.map +1 -1
  56. package/dist/reducer-contract.d.ts +1 -1
  57. package/dist/reducer-contract.js +2 -2
  58. package/dist/reducer.d.ts +17 -11
  59. package/dist/reducer.js +28 -6050
  60. package/dist/reducer.js.map +1 -1
  61. package/dist/reference-game-compiler.d.ts +45 -0
  62. package/dist/reference-game-compiler.js +25 -0
  63. package/dist/reference-game-compiler.js.map +1 -0
  64. package/dist/reference-game-source-manifest-cli.d.ts +1 -0
  65. package/dist/reference-game-source-manifest-cli.js +84 -0
  66. package/dist/reference-game-source-manifest-cli.js.map +1 -0
  67. package/dist/reference-games/index.d.ts +7 -217
  68. package/dist/reference-games/index.js +28 -208
  69. package/dist/reference-games/index.js.map +1 -1
  70. package/dist/runtime/primitives.d.ts +3 -3
  71. package/dist/runtime/primitives.js +3 -3
  72. package/dist/runtime/runtime-api.d.ts +1 -1
  73. package/dist/runtime/workspace-contract.d.ts +4 -4
  74. package/dist/runtime/workspace-contract.js +4 -4
  75. package/dist/{runtime-Dkfm1x2r.d.ts → runtime-B_w9AO2n.d.ts} +60 -5
  76. package/dist/{runtime-api-C6aWo9c0.d.ts → runtime-api-xCWLMQRT.d.ts} +2 -0
  77. package/dist/runtime.d.ts +7 -7
  78. package/dist/runtime.js +12 -12
  79. package/dist/schema-9jZzlEWZ.d.ts +220 -0
  80. package/dist/{stale-contract-artifact-error-C5AaZPJ8.d.ts → stale-contract-artifact-error-XLaweZtF.d.ts} +1 -1
  81. package/dist/testing-compiler.d.ts +36 -0
  82. package/dist/testing-compiler.js +236 -0
  83. package/dist/testing-compiler.js.map +1 -0
  84. package/dist/testing-runtime.d.ts +97 -21
  85. package/dist/testing-runtime.js +154 -95
  86. package/dist/testing-runtime.js.map +1 -1
  87. package/dist/testing.d.ts +178 -60
  88. package/dist/testing.js +641 -26
  89. package/dist/testing.js.map +1 -1
  90. package/dist/types-Bvptkukh.d.ts +122 -0
  91. package/dist/{types-CTeN_QAk.d.ts → types-_zfC_7CD.d.ts} +1 -1
  92. package/dist/ui/components.d.ts +2 -2
  93. package/dist/ui/plugin-styles.css +1 -1
  94. package/dist/{ui-contract-Ue6SywvO.d.ts → ui-contract-CUC7Lyoc.d.ts} +1 -1
  95. package/dist/ui.d.ts +3 -3
  96. package/dist/{views-Qx-EHBP8.d.ts → views-DE2eZxPz.d.ts} +15 -3
  97. package/package.json +22 -2
  98. package/dist/chunk-2TAKLJJD.js.map +0 -1
  99. package/dist/chunk-3BLN5POZ.js.map +0 -1
  100. package/dist/chunk-3OZMHZK3.js +0 -40
  101. package/dist/chunk-3OZMHZK3.js.map +0 -1
  102. package/dist/chunk-5CQIJHGF.js +0 -663
  103. package/dist/chunk-5CQIJHGF.js.map +0 -1
  104. package/dist/chunk-B2YBS3SG.js.map +0 -1
  105. package/dist/chunk-IYX5OO2K.js.map +0 -1
  106. package/dist/types-B_3pObUV.d.ts +0 -192
  107. /package/dist/{chunk-44N3T2A5.js.map → chunk-BUOODBVO.js.map} +0 -0
  108. /package/dist/{chunk-ZYONCTZ2.js.map → chunk-GMOBG7Y7.js.map} +0 -0
  109. /package/dist/{chunk-VTK4TIXC.js.map → chunk-JRGP6W4V.js.map} +0 -0
  110. /package/dist/{chunk-XV27IQHA.js.map → chunk-NGYFBNBP.js.map} +0 -0
  111. /package/dist/{chunk-YGQTL63W.js.map → chunk-WDR7SKBM.js.map} +0 -0
package/REFERENCE.md CHANGED
@@ -47,7 +47,7 @@ _No JSDoc summary is available yet._
47
47
 
48
48
  ```ts
49
49
  const DREAMBOARD_SDK_PACKAGES: {
50
- readonly "@dreamboard-games/sdk": "0.4.0-alpha.7";
50
+ readonly "@dreamboard-games/sdk": "0.4.0-alpha.9";
51
51
  };
52
52
  ```
53
53
 
@@ -56,7 +56,7 @@ _No JSDoc summary is available yet._
56
56
  ### DREAMBOARD_SDK_VERSION
57
57
 
58
58
  ```ts
59
- const DREAMBOARD_SDK_VERSION: "0.4.0-alpha.7";
59
+ const DREAMBOARD_SDK_VERSION: "0.4.0-alpha.9";
60
60
  ```
61
61
 
62
62
  _No JSDoc summary is available yet._
@@ -95,7 +95,7 @@ _No JSDoc summary is available yet._
95
95
 
96
96
  ```ts
97
97
  const DREAMBOARD_SDK_PACKAGES: {
98
- readonly "@dreamboard-games/sdk": "0.4.0-alpha.7";
98
+ readonly "@dreamboard-games/sdk": "0.4.0-alpha.9";
99
99
  };
100
100
  ```
101
101
 
@@ -104,7 +104,7 @@ _No JSDoc summary is available yet._
104
104
  ### DREAMBOARD_SDK_VERSION
105
105
 
106
106
  ```ts
107
- const DREAMBOARD_SDK_VERSION: "0.4.0-alpha.7";
107
+ const DREAMBOARD_SDK_VERSION: "0.4.0-alpha.9";
108
108
  ```
109
109
 
110
110
  _No JSDoc summary is available yet._
@@ -141,10 +141,21 @@ function canonicalizeReferenceGameSourcePayload(
141
141
 
142
142
  _No JSDoc summary is available yet._
143
143
 
144
- ### computeReferenceGameSourceDigest
144
+ ### compareReferenceGameCanonicalStrings
145
145
 
146
146
  ```ts
147
- function computeReferenceGameSourceDigest(
147
+ function compareReferenceGameCanonicalStrings(
148
+ left: string,
149
+ right: string,
150
+ ): number;
151
+ ```
152
+
153
+ Locale-independent UTF-16 code-unit order, equivalent to Java String.compareTo.
154
+
155
+ ### computeReferenceGameSourceFingerprint
156
+
157
+ ```ts
158
+ function computeReferenceGameSourceFingerprint(
148
159
  payload: ReferenceGameSourceManifestPayload,
149
160
  ): `sha256:${string}`;
150
161
  ```
@@ -188,7 +199,7 @@ _No JSDoc summary is available yet._
188
199
  ### REFERENCE_GAME_SOURCE_MANIFEST_SCHEMA_VERSION
189
200
 
190
201
  ```ts
191
- const REFERENCE_GAME_SOURCE_MANIFEST_SCHEMA_VERSION = 2;
202
+ const REFERENCE_GAME_SOURCE_MANIFEST_SCHEMA_VERSION = 3;
192
203
  ```
193
204
 
194
205
  _No JSDoc summary is available yet._
@@ -318,6 +329,32 @@ declare const referenceGameSourceEntrySchema: z.ZodObject<
318
329
 
319
330
  _No JSDoc summary is available yet._
320
331
 
332
+ ### ReferenceGameSourceInventoryPolicy
333
+
334
+ ```ts
335
+ type ReferenceGameSourceInventoryPolicy = z.infer<
336
+ typeof referenceGameSourceInventoryPolicySchema
337
+ >;
338
+ ```
339
+
340
+ _No JSDoc summary is available yet._
341
+
342
+ ### referenceGameSourceInventoryPolicySchema
343
+
344
+ ```ts
345
+ const referenceGameSourceInventoryPolicySchema: z.ZodObject<
346
+ {
347
+ schemaVersion: z.ZodLiteral<1>;
348
+ workspaceOwnershipVersion: z.ZodNumber;
349
+ excludedGameRelativePaths: z.ZodArray<z.ZodString>;
350
+ excludedGameRelativePrefixes: z.ZodArray<z.ZodString>;
351
+ },
352
+ z.core.$strict
353
+ >;
354
+ ```
355
+
356
+ _No JSDoc summary is available yet._
357
+
321
358
  ### ReferenceGameSourceManifest
322
359
 
323
360
  ```ts
@@ -2811,8 +2848,9 @@ type DispatchTraceSummaryEntry =
2811
2848
  }
2812
2849
  | {
2813
2850
  kind: "rngConsumption";
2851
+ version: 2;
2814
2852
  operation: string;
2815
- traceEntry: string;
2853
+ drawIndex: number;
2816
2854
  };
2817
2855
  ```
2818
2856
 
@@ -2845,6 +2883,7 @@ const FrameworkErrorCodes: {
2845
2883
  readonly NOT_YOUR_TURN: "NOT_YOUR_TURN";
2846
2884
  readonly WRONG_PHASE: "WRONG_PHASE";
2847
2885
  readonly WRONG_STEP: "WRONG_STEP";
2886
+ readonly NO_LEGAL_INPUT: "NO_LEGAL_INPUT";
2848
2887
  readonly INVALID_PARAMS: "INVALID_PARAMS";
2849
2888
  readonly UNKNOWN_INTERACTION: "UNKNOWN_INTERACTION";
2850
2889
  readonly INTERNAL_ERROR: "INTERNAL_ERROR";
@@ -3644,7 +3683,7 @@ _No JSDoc summary is available yet._
3644
3683
  ### StaleContractArtifactKind
3645
3684
 
3646
3685
  ```ts
3647
- type StaleContractArtifactKind = "base-states" | "session-state";
3686
+ type StaleContractArtifactKind = "session-state";
3648
3687
  ```
3649
3688
 
3650
3689
  _No JSDoc summary is available yet._
@@ -3928,7 +3967,8 @@ _No JSDoc summary is available yet._
3928
3967
  ### assumeManifestSchema
3929
3968
 
3930
3969
  ```ts
3931
- function assumeManifestSchema<Output>(schema: z.ZodTypeAny): z.ZodType<Output>;
3970
+ assumeManifestSchema<Output, Family extends ManifestIdFamily | undefined>(schema: ManifestIdSchema<unknown, Family>): ManifestIdSchema<Output, Family>;
3971
+ assumeManifestSchema<Output>(schema: z.ZodTypeAny): z.ZodType<Output>;
3932
3972
  ```
3933
3973
 
3934
3974
  _No JSDoc summary is available yet._
@@ -4406,13 +4446,15 @@ _No JSDoc summary is available yet._
4406
4446
 
4407
4447
  ```ts
4408
4448
  type ClientParamsOf<Collectors extends Record<string, InputCollector>> = {
4409
- [K in keyof Collectors as K extends EngineSampledCollectorKeys<Collectors>
4410
- ? never
4411
- : K]: Collectors[K] extends InputCollector<infer S>
4412
- ? S extends SchemaLike<infer V>
4413
- ? V
4414
- : never
4415
- : never;
4449
+ [K in Exclude<
4450
+ ClientCollectorKeys<Collectors>,
4451
+ OptionalClientCollectorKeys<Collectors>
4452
+ >]: ClientCollectorValue<Collectors[K]>;
4453
+ } & {
4454
+ [K in OptionalClientCollectorKeys<Collectors>]?: Exclude<
4455
+ ClientCollectorValue<Collectors[K]>,
4456
+ undefined
4457
+ >;
4416
4458
  };
4417
4459
  ```
4418
4460
 
@@ -4652,9 +4694,16 @@ _No JSDoc summary is available yet._
4652
4694
  ### createManifestStringLiteralSchema
4653
4695
 
4654
4696
  ```ts
4655
- function createManifestStringLiteralSchema<Values extends readonly string[]>(
4697
+ function createManifestStringLiteralSchema<
4698
+ Values extends readonly string[],
4699
+ const Family extends ManifestIdFamily | undefined = undefined,
4700
+ >(
4656
4701
  values: Values,
4657
- ): ManifestIdSchema<Values[number] extends never ? string : Values[number]>;
4702
+ family?: Family,
4703
+ ): ManifestIdSchema<
4704
+ Values[number] extends never ? string : Values[number],
4705
+ Family
4706
+ >;
4658
4707
  ```
4659
4708
 
4660
4709
  _No JSDoc summary is available yet._
@@ -4998,6 +5047,7 @@ const FrameworkErrorCodes: {
4998
5047
  readonly NOT_YOUR_TURN: "NOT_YOUR_TURN";
4999
5048
  readonly WRONG_PHASE: "WRONG_PHASE";
5000
5049
  readonly WRONG_STEP: "WRONG_STEP";
5050
+ readonly NO_LEGAL_INPUT: "NO_LEGAL_INPUT";
5001
5051
  readonly INVALID_PARAMS: "INVALID_PARAMS";
5002
5052
  readonly UNKNOWN_INTERACTION: "UNKNOWN_INTERACTION";
5003
5053
  readonly INTERNAL_ERROR: "INTERNAL_ERROR";
@@ -5760,6 +5810,20 @@ type ManifestDefaults = ...;
5760
5810
 
5761
5811
  _No JSDoc summary is available yet._
5762
5812
 
5813
+ ### ManifestIdFamily
5814
+
5815
+ ```ts
5816
+ type ManifestIdFamily = keyof ManifestIds<
5817
+ string,
5818
+ string,
5819
+ string,
5820
+ string,
5821
+ string
5822
+ >;
5823
+ ```
5824
+
5825
+ _No JSDoc summary is available yet._
5826
+
5763
5827
  ### ManifestIds
5764
5828
 
5765
5829
  ```ts
@@ -5771,8 +5835,11 @@ _No JSDoc summary is available yet._
5771
5835
  ### ManifestIdSchema
5772
5836
 
5773
5837
  ```ts
5774
- type ManifestIdSchema<Output = unknown> = z.ZodType<Output> & {
5775
- readonly [manifestIdSchemaBrand]: true;
5838
+ type ManifestIdSchema<
5839
+ Output = unknown,
5840
+ Family extends ManifestIdFamily | undefined = ManifestIdFamily | undefined,
5841
+ > = z.ZodType<Output> & {
5842
+ readonly [manifestIdSchemaBrand]: Family;
5776
5843
  };
5777
5844
  ```
5778
5845
 
@@ -5786,6 +5853,20 @@ type ManifestLiterals = ...;
5786
5853
 
5787
5854
  _No JSDoc summary is available yet._
5788
5855
 
5856
+ ### ManifestNormalSetup
5857
+
5858
+ ```ts
5859
+ type ManifestNormalSetup<Table extends RuntimeTableRecord> = {
5860
+ readonly minPlayers: number;
5861
+ readonly maxPlayers: number;
5862
+ readonly createInitialTable: (options: {
5863
+ readonly playerIds: readonly string[];
5864
+ }) => Table;
5865
+ };
5866
+ ```
5867
+
5868
+ _No JSDoc summary is available yet._
5869
+
5789
5870
  ### ManifestOf
5790
5871
 
5791
5872
  ```ts
@@ -5802,12 +5883,24 @@ type ManifestOf<Source> = Source extends {
5802
5883
 
5803
5884
  _No JSDoc summary is available yet._
5804
5885
 
5886
+ ### manifestSchemaFamily
5887
+
5888
+ ```ts
5889
+ function manifestSchemaFamily(schema: unknown): ManifestIdFamily | undefined;
5890
+ ```
5891
+
5892
+ _No JSDoc summary is available yet._
5893
+
5805
5894
  ### markManifestScopedSchema
5806
5895
 
5807
5896
  ```ts
5808
- function markManifestScopedSchema<Schema extends z.ZodTypeAny>(
5897
+ function markManifestScopedSchema<
5898
+ Schema extends z.ZodTypeAny,
5899
+ const Family extends ManifestIdFamily | undefined = undefined,
5900
+ >(
5809
5901
  schema: Schema,
5810
- ): Schema & ManifestIdSchema<z.infer<Schema>>;
5902
+ family?: Family,
5903
+ ): Schema & ManifestIdSchema<z.infer<Schema>, Family>;
5811
5904
  ```
5812
5905
 
5813
5906
  _No JSDoc summary is available yet._
@@ -6330,6 +6423,7 @@ _No JSDoc summary is available yet._
6330
6423
 
6331
6424
  ```ts
6332
6425
  type RandomHelpers = {
6426
+ integer(options: { minInclusive: number; maxInclusive: number }): number;
6333
6427
  subset<const Values extends readonly unknown[]>(options: {
6334
6428
  from: Values;
6335
6429
  count: number;
@@ -7155,6 +7249,38 @@ type RuntimeResourceMap = PerPlayer<RuntimeRecord>;
7155
7249
 
7156
7250
  _No JSDoc summary is available yet._
7157
7251
 
7252
+ ### RuntimeRngDraw
7253
+
7254
+ ```ts
7255
+ type RuntimeRngDraw = {
7256
+ index: number;
7257
+ cursorBefore: number;
7258
+ cursorAfter: number;
7259
+ operation: RuntimeRngOperation;
7260
+ };
7261
+ ```
7262
+
7263
+ Public, persisted identity for one deterministic RNG cursor advance.
7264
+
7265
+ ### RuntimeRngOperation
7266
+
7267
+ ```ts
7268
+ type RuntimeRngOperation = {
7269
+ kind: string;
7270
+ parameters: Record<string, RuntimeRngOperationParameter>;
7271
+ };
7272
+ ```
7273
+
7274
+ _No JSDoc summary is available yet._
7275
+
7276
+ ### RuntimeRngOperationParameter
7277
+
7278
+ ```ts
7279
+ type RuntimeRngOperationParameter = string | number | boolean;
7280
+ ```
7281
+
7282
+ _No JSDoc summary is available yet._
7283
+
7158
7284
  ### RuntimeRngState
7159
7285
 
7160
7286
  ```ts
@@ -7162,6 +7288,7 @@ type RuntimeRngState = {
7162
7288
  seed?: number | null;
7163
7289
  cursor: number;
7164
7290
  trace: string[];
7291
+ draws: RuntimeRngDraw[];
7165
7292
  };
7166
7293
  ```
7167
7294
 
@@ -20336,10 +20463,7 @@ _No JSDoc summary is available yet._
20336
20463
  ### GENERATED_WORKSPACE_PATHS
20337
20464
 
20338
20465
  ```ts
20339
- const GENERATED_WORKSPACE_PATHS: readonly [
20340
- ...string[],
20341
- "test/generated/base-state.json",
20342
- ];
20466
+ const GENERATED_WORKSPACE_PATHS: readonly string[];
20343
20467
  ```
20344
20468
 
20345
20469
  _No JSDoc summary is available yet._
@@ -20349,7 +20473,7 @@ _No JSDoc summary is available yet._
20349
20473
  ```ts
20350
20474
  type GeneratedArtifactV1 = {
20351
20475
  path: string;
20352
- ownership: "authoritative" | "seed" | "derived-test";
20476
+ ownership: "authoritative" | "seed";
20353
20477
  content: string;
20354
20478
  contentSha256: string;
20355
20479
  };
@@ -20381,26 +20505,6 @@ type GeneratedPathPatternV1 = {
20381
20505
 
20382
20506
  _No JSDoc summary is available yet._
20383
20507
 
20384
- ### generateTestArtifacts
20385
-
20386
- ```ts
20387
- function generateTestArtifacts(
20388
- input: GenerateTestArtifactsInputV1,
20389
- ): readonly GeneratedArtifactV1[];
20390
- ```
20391
-
20392
- _No JSDoc summary is available yet._
20393
-
20394
- ### GenerateTestArtifactsInputV1
20395
-
20396
- ```ts
20397
- type GenerateTestArtifactsInputV1 = {
20398
- manifest: GameTopologyManifest;
20399
- };
20400
- ```
20401
-
20402
- _No JSDoc summary is available yet._
20403
-
20404
20508
  ### generateWorkspaceArtifacts
20405
20509
 
20406
20510
  ```ts
@@ -20476,7 +20580,7 @@ _No JSDoc summary is available yet._
20476
20580
  ### REDUCER_CONTRACT_VERSION
20477
20581
 
20478
20582
  ```ts
20479
- const REDUCER_CONTRACT_VERSION: "0.3.0";
20583
+ const REDUCER_CONTRACT_VERSION: "0.4.0";
20480
20584
  ```
20481
20585
 
20482
20586
  The wire-protocol version this package implements. Bumped in lockstep with any breaking change to schema/reducer-runtime.schema.json. At bundle load time hosts refuse bundles whose major version differs.
@@ -20515,6 +20619,17 @@ function activate(options: ReplayStepOptions): UIScenarioReplayStep;
20515
20619
 
20516
20620
  _No JSDoc summary is available yet._
20517
20621
 
20622
+ ### ActorRef
20623
+
20624
+ ```ts
20625
+ type ActorRef = {
20626
+ readonly seat: number;
20627
+ readonly playerId: string;
20628
+ };
20629
+ ```
20630
+
20631
+ _No JSDoc summary is available yet._
20632
+
20518
20633
  ### assertDeterministicUIScenarioFixture
20519
20634
 
20520
20635
  ```ts
@@ -20526,6 +20641,27 @@ function assertDeterministicUIScenarioFixture(
20526
20641
 
20527
20642
  _No JSDoc summary is available yet._
20528
20643
 
20644
+ ### assertScenario
20645
+
20646
+ ```ts
20647
+ function assertScenario<Game>(
20648
+ options: AssertScenarioOptions<Game>,
20649
+ ): Promise<void>;
20650
+ ```
20651
+
20652
+ _No JSDoc summary is available yet._
20653
+
20654
+ ### AssertScenarioOptions
20655
+
20656
+ ```ts
20657
+ type AssertScenarioOptions<Game> = {
20658
+ readonly replay: ScenarioReplay<Game>;
20659
+ readonly assertion: ScenarioDefinition<Game>["then"];
20660
+ };
20661
+ ```
20662
+
20663
+ _No JSDoc summary is available yet._
20664
+
20529
20665
  ### assertStep
20530
20666
 
20531
20667
  ```ts
@@ -20568,43 +20704,6 @@ function assertUniqueReplayIdentity(
20568
20704
 
20569
20705
  _No JSDoc summary is available yet._
20570
20706
 
20571
- ### BaseContext
20572
-
20573
- ```ts
20574
- interface BaseContext<PlayerId extends string = string> {
20575
- game: {
20576
- start(): Promise<void>;
20577
- patchState?(
20578
- mutator: (state: Record<string, unknown>) => void,
20579
- ): Promise<void>;
20580
- submit(
20581
- playerId: PlayerId,
20582
- interactionId: string,
20583
- params?: unknown,
20584
- ): Promise<void>;
20585
- };
20586
- players(): readonly PlayerId[];
20587
- seat(index: number): PlayerId;
20588
- }
20589
- ```
20590
-
20591
- _No JSDoc summary is available yet._
20592
-
20593
- ### BaseDefinition
20594
-
20595
- ```ts
20596
- interface BaseDefinition {
20597
- id: string;
20598
- seed?: number;
20599
- players?: number;
20600
- setupProfileId?: string | null;
20601
- extends?: string;
20602
- setup: (ctx: BaseContext) => void | Promise<void>;
20603
- }
20604
- ```
20605
-
20606
- _No JSDoc summary is available yet._
20607
-
20608
20707
  ### canonicalizeUIFixtureJson
20609
20708
 
20610
20709
  ```ts
@@ -20689,14 +20788,6 @@ function createDeterministicIdFactory(seed: string): DeterministicIdFactory;
20689
20788
 
20690
20789
  _No JSDoc summary is available yet._
20691
20790
 
20692
- ### CreatedTestRuntime
20693
-
20694
- ```ts
20695
- type CreatedTestRuntime = ...;
20696
- ```
20697
-
20698
- _No JSDoc summary is available yet._
20699
-
20700
20791
  ### createExpectApi
20701
20792
 
20702
20793
  ```ts
@@ -20756,32 +20847,12 @@ interface CreateReducerScenarioRunnerOptions {
20756
20847
 
20757
20848
  _No JSDoc summary is available yet._
20758
20849
 
20759
- ### createTestRuntime
20850
+ ### createScenarioAuthoring
20760
20851
 
20761
20852
  ```ts
20762
- function createTestRuntime(
20763
- options: CreateTestRuntimeOptions,
20764
- ): CreatedTestRuntime;
20765
- ```
20766
-
20767
- _No JSDoc summary is available yet._
20768
-
20769
- ### CreateTestRuntimeOptions
20770
-
20771
- ```ts
20772
- type CreateTestRuntimeOptions = {
20773
- baseId: string;
20774
- baseStates: Record<string, BaseStateArtifact>;
20775
- bundle: ReducerBundleLike;
20776
- phase?: string;
20777
- playerIds?: readonly string[];
20778
- sessionId?: string;
20779
- userId?: string | null;
20780
- gameId?: string;
20781
- displayNameByPlayerId?: Record<string, string>;
20782
- contractFingerprint?: string;
20783
- expectedBaseStateFingerprint?: string;
20784
- };
20853
+ function createScenarioAuthoring<const Game extends ScenarioDefinitionGameLike>(
20854
+ game: Game,
20855
+ ): ScenarioAuthoring<Game>;
20785
20856
  ```
20786
20857
 
20787
20858
  _No JSDoc summary is available yet._
@@ -20809,30 +20880,6 @@ const defaultFixtureEnvironmentInit: FixtureEnvironmentInit;
20809
20880
 
20810
20881
  _No JSDoc summary is available yet._
20811
20882
 
20812
- ### defineBase
20813
-
20814
- ```ts
20815
- function defineBase<const Definition extends BaseDefinition>(
20816
- definition: Definition,
20817
- ): Definition;
20818
- ```
20819
-
20820
- _No JSDoc summary is available yet._
20821
-
20822
- ### defineScenario
20823
-
20824
- ```ts
20825
- function defineScenario<
20826
- const Runners extends readonly TestRunner[] = readonly ["reducer"],
20827
- const PhaseName extends string = string,
20828
- const StageName extends string = string,
20829
- >(
20830
- definition: ScenarioDefinition<Runners, PhaseName, StageName>,
20831
- ): ScenarioDefinition<Runners, PhaseName, StageName>;
20832
- ```
20833
-
20834
- _No JSDoc summary is available yet._
20835
-
20836
20883
  ### defineUIScenario
20837
20884
 
20838
20885
  ```ts
@@ -20924,6 +20971,57 @@ type ExpectMatchers = ...;
20924
20971
 
20925
20972
  _No JSDoc summary is available yet._
20926
20973
 
20974
+ ### exploreScenario
20975
+
20976
+ ```ts
20977
+ function exploreScenario<const Game extends ScenarioDefinitionGameLike>(
20978
+ options: ExploreScenarioOptions<Game>,
20979
+ ): Promise<ExploreScenarioResult>;
20980
+ ```
20981
+
20982
+ _No JSDoc summary is available yet._
20983
+
20984
+ ### ExploreScenarioOptions
20985
+
20986
+ ```ts
20987
+ type ExploreScenarioOptions<Game extends ScenarioDefinitionGameLike> = Omit<
20988
+ InspectScenarioOptions<Game>,
20989
+ "seed"
20990
+ > & {
20991
+ readonly seed?: number;
20992
+ readonly seedRange?: SeedRange;
20993
+ readonly limit?: number;
20994
+ readonly maxEvaluations?: number;
20995
+ readonly cursor?: string;
20996
+ };
20997
+ ```
20998
+
20999
+ _No JSDoc summary is available yet._
21000
+
21001
+ ### ExploreScenarioResult
21002
+
21003
+ ```ts
21004
+ type ExploreScenarioResult = ExploreTransitionResult | ExploreSeedResult;
21005
+ ```
21006
+
21007
+ _No JSDoc summary is available yet._
21008
+
21009
+ ### ExploreSeedResult
21010
+
21011
+ ```ts
21012
+ type ExploreSeedResult = ...;
21013
+ ```
21014
+
21015
+ _No JSDoc summary is available yet._
21016
+
21017
+ ### ExploreTransitionResult
21018
+
21019
+ ```ts
21020
+ type ExploreTransitionResult = ...;
21021
+ ```
21022
+
21023
+ _No JSDoc summary is available yet._
21024
+
20927
21025
  ### fill
20928
21026
 
20929
21027
  ```ts
@@ -21013,6 +21111,113 @@ function FixturePluginRuntime({
21013
21111
 
21014
21112
  _No JSDoc summary is available yet._
21015
21113
 
21114
+ ### FlowDiagnostic
21115
+
21116
+ ```ts
21117
+ type FlowDiagnostic = ...;
21118
+ ```
21119
+
21120
+ _No JSDoc summary is available yet._
21121
+
21122
+ ### InspectAction
21123
+
21124
+ ```ts
21125
+ type InspectAction = {
21126
+ readonly actor: ActorRef;
21127
+ readonly interactionId: string;
21128
+ readonly inputs: readonly InspectInteractionInput[];
21129
+ readonly explanation: InteractionExplanationLike;
21130
+ readonly hasConcreteCommand: true;
21131
+ };
21132
+ ```
21133
+
21134
+ _No JSDoc summary is available yet._
21135
+
21136
+ ### InspectEntropy
21137
+
21138
+ ```ts
21139
+ type InspectEntropy = {
21140
+ readonly seed: number;
21141
+ readonly draws: readonly {
21142
+ readonly index: number;
21143
+ readonly cursorBefore: number;
21144
+ readonly cursorAfter: number;
21145
+ readonly operation: {
21146
+ readonly kind: string;
21147
+ readonly parameters: Readonly<Record<string, string | number | boolean>>;
21148
+ };
21149
+ }[];
21150
+ };
21151
+ ```
21152
+
21153
+ _No JSDoc summary is available yet._
21154
+
21155
+ ### InspectInteraction
21156
+
21157
+ ```ts
21158
+ type InspectInteraction = ...;
21159
+ ```
21160
+
21161
+ _No JSDoc summary is available yet._
21162
+
21163
+ ### InspectInteractionInput
21164
+
21165
+ ```ts
21166
+ type InspectInteractionInput = {
21167
+ readonly key: string;
21168
+ readonly kind: string;
21169
+ readonly eligibleCount: number | "lazy";
21170
+ };
21171
+ ```
21172
+
21173
+ _No JSDoc summary is available yet._
21174
+
21175
+ ### InspectNode
21176
+
21177
+ ```ts
21178
+ type InspectNode = ...;
21179
+ ```
21180
+
21181
+ _No JSDoc summary is available yet._
21182
+
21183
+ ### inspectScenario
21184
+
21185
+ ```ts
21186
+ function inspectScenario<const Game extends ScenarioDefinitionGameLike>(
21187
+ options: InspectScenarioOptions<Game>,
21188
+ ): Promise<InspectScenarioResult>;
21189
+ ```
21190
+
21191
+ _No JSDoc summary is available yet._
21192
+
21193
+ ### InspectScenarioOptions
21194
+
21195
+ ```ts
21196
+ type InspectScenarioOptions<Game extends ScenarioDefinitionGameLike> = {
21197
+ readonly game: Game;
21198
+ readonly scenario: ScenarioReplayDefinition<Game>;
21199
+ readonly identity: ScenarioIdentity;
21200
+ readonly perspective: PerspectiveSelector;
21201
+ readonly at?: ScenarioCheckpoint;
21202
+ readonly seed?: number;
21203
+ };
21204
+ ```
21205
+
21206
+ _No JSDoc summary is available yet._
21207
+
21208
+ ### InspectScenarioResult
21209
+
21210
+ ```ts
21211
+ type InspectScenarioResult = {
21212
+ readonly schemaVersion: 1;
21213
+ readonly scenario: ScenarioIdentity;
21214
+ readonly node: InspectNode;
21215
+ readonly seedSource: "scenario" | "override";
21216
+ };
21217
+ ```
21218
+
21219
+ _No JSDoc summary is available yet._
21220
+
21016
21221
  ### InteractionAvailabilityLike
21017
21222
 
21018
21223
  ```ts
@@ -21032,6 +21237,7 @@ type InteractionAvailabilityLike =
21032
21237
  | {
21033
21238
  status: "blocked";
21034
21239
  reason: string;
21240
+ code?: string;
21035
21241
  };
21036
21242
  ```
21037
21243
 
@@ -21105,10 +21311,40 @@ function parseUIScenarioFixtureBundleIndex(
21105
21311
 
21106
21312
  _No JSDoc summary is available yet._
21107
21313
 
21108
- ### PluginProtocolTape
21314
+ ### PerspectiveRef
21109
21315
 
21110
21316
  ```ts
21111
- type PluginProtocolTape = v;
21317
+ type PerspectiveRef =
21318
+ | {
21319
+ readonly kind: "player";
21320
+ readonly actor: ActorRef;
21321
+ }
21322
+ | {
21323
+ readonly kind: "spectator";
21324
+ };
21325
+ ```
21326
+
21327
+ _No JSDoc summary is available yet._
21328
+
21329
+ ### PerspectiveSelector
21330
+
21331
+ ```ts
21332
+ type PerspectiveSelector =
21333
+ | {
21334
+ readonly kind: "player";
21335
+ readonly seat: number;
21336
+ }
21337
+ | {
21338
+ readonly kind: "spectator";
21339
+ };
21340
+ ```
21341
+
21342
+ _No JSDoc summary is available yet._
21343
+
21344
+ ### PluginProtocolTape
21345
+
21346
+ ```ts
21347
+ type PluginProtocolTape = v;
21112
21348
  ```
21113
21349
 
21114
21350
  _No JSDoc summary is available yet._
@@ -21151,6 +21387,17 @@ function press(options: ReplayStepOptions): UIScenarioReplayStep;
21151
21387
 
21152
21388
  _No JSDoc summary is available yet._
21153
21389
 
21390
+ ### probeScenarioCommand
21391
+
21392
+ ```ts
21393
+ function probeScenarioCommand<Game>(options: {
21394
+ readonly replay: ScenarioReplay<Game>;
21395
+ readonly command: ScenarioCommandOf<Game>;
21396
+ }): Promise<ScenarioProbeResult<Game>>;
21397
+ ```
21398
+
21399
+ _No JSDoc summary is available yet._
21400
+
21154
21401
  ### ProtocolUIScenarioAuthority
21155
21402
 
21156
21403
  ```ts
@@ -21291,10 +21538,354 @@ type RejectionExpectation = {
21291
21538
 
21292
21539
  _No JSDoc summary is available yet._
21293
21540
 
21541
+ ### replayScenario
21542
+
21543
+ ```ts
21544
+ function replayScenario<const Game extends ScenarioDefinitionGameLike>(
21545
+ options: ReplayScenarioOptions<Game>,
21546
+ ): Promise<ScenarioReplay<Game>>;
21547
+ ```
21548
+
21549
+ _No JSDoc summary is available yet._
21550
+
21551
+ ### ReplayScenarioOptions
21552
+
21553
+ ```ts
21554
+ type ReplayScenarioOptions<Game> = {
21555
+ readonly game: Game;
21556
+ readonly scenario: ScenarioReplayDefinition<Game>;
21557
+ readonly at?: ScenarioCheckpoint;
21558
+ };
21559
+ ```
21560
+
21561
+ _No JSDoc summary is available yet._
21562
+
21563
+ ### RuntimeParamsOfScenarioCommand
21564
+
21565
+ ```ts
21566
+ type RuntimeParamsOfScenarioCommand<
21567
+ Game,
21568
+ Phase extends PhaseNamesOfDefinition<Game>,
21569
+ InteractionId extends InteractionIdOfDefinitionPhase<Game, Phase>,
21570
+ > = ClientParamsOfInteractionOfDefinition<Game, Phase, InteractionId>;
21571
+ ```
21572
+
21573
+ Production params remain available for runtime implementors and diagnostics.
21574
+
21575
+ ### ScenarioActor
21576
+
21577
+ ```ts
21578
+ type ScenarioActor = ScenarioSeatRef;
21579
+ ```
21580
+
21581
+ _No JSDoc summary is available yet._
21582
+
21583
+ ### ScenarioAssertionContext
21584
+
21585
+ ```ts
21586
+ type ScenarioAssertionContext = ...;
21587
+ ```
21588
+
21589
+ _No JSDoc summary is available yet._
21590
+
21591
+ ### ScenarioAssertionError
21592
+
21593
+ ```ts
21594
+ class ScenarioAssertionError(message: string): ScenarioAssertionError;
21595
+ ```
21596
+
21597
+ A failed SDK matcher or probe expectation authored in `scenario.then`.
21598
+
21599
+ ### ScenarioAuthoring
21600
+
21601
+ ```ts
21602
+ type ScenarioAuthoring<Game> = {
21603
+ defineScenario<const Definition extends ScenarioDefinition<Game>>(
21604
+ definition: Definition &
21605
+ NoExtraScenarioFields<Definition, ScenarioDefinition<Game>>,
21606
+ ): Definition;
21607
+ };
21608
+ ```
21609
+
21610
+ _No JSDoc summary is available yet._
21611
+
21612
+ ### ScenarioCheckpoint
21613
+
21614
+ ```ts
21615
+ type ScenarioCheckpoint =
21616
+ | {
21617
+ readonly segment: "setup";
21618
+ readonly completed: 0;
21619
+ }
21620
+ | {
21621
+ readonly segment: "given";
21622
+ readonly completed: number;
21623
+ }
21624
+ | {
21625
+ readonly segment: "when";
21626
+ readonly completed: number;
21627
+ };
21628
+ ```
21629
+
21630
+ _No JSDoc summary is available yet._
21631
+
21632
+ ### ScenarioCommand
21633
+
21634
+ ```ts
21635
+ type ScenarioCommand<
21636
+ InteractionId extends string = string,
21637
+ Params = Record<string, unknown>,
21638
+ > = {
21639
+ readonly actor: ScenarioActor;
21640
+ readonly interactionId: InteractionId;
21641
+ readonly params: Params;
21642
+ };
21643
+ ```
21644
+
21645
+ _No JSDoc summary is available yet._
21646
+
21647
+ ### ScenarioCommandOf
21648
+
21649
+ ```ts
21650
+ type ScenarioCommandOf<Game> = {
21651
+ [Phase in PhaseNamesOfDefinition<Game>]: ScenarioCommandForPhase<Game, Phase>;
21652
+ }[PhaseNamesOfDefinition<Game>];
21653
+ ```
21654
+
21655
+ _No JSDoc summary is available yet._
21656
+
21657
+ ### ScenarioCommandTraceEntry
21658
+
21659
+ ```ts
21660
+ type ScenarioCommandTraceEntry<Game> = {
21661
+ readonly segment: ScenarioReplaySegment;
21662
+ readonly index: number;
21663
+ readonly command: ScenarioCommandOf<Game>;
21664
+ readonly trace: readonly DispatchTraceSummaryEntry[];
21665
+ };
21666
+ ```
21667
+
21668
+ _No JSDoc summary is available yet._
21669
+
21294
21670
  ### ScenarioDefinition
21295
21671
 
21296
21672
  ```ts
21297
- interface ScenarioDefinition { ... }
21673
+ type ScenarioDefinition<Game> = ScenarioReplayDefinition<Game> & {
21674
+ readonly then: (
21675
+ context: ScenarioAssertionContext<Game>,
21676
+ ) => void | Promise<void>;
21677
+ };
21678
+ ```
21679
+
21680
+ _No JSDoc summary is available yet._
21681
+
21682
+ ### ScenarioDefinitionValidationCode
21683
+
21684
+ ```ts
21685
+ type ScenarioDefinitionValidationCode =
21686
+ | "INVALID_TYPE"
21687
+ | "UNKNOWN_FIELD"
21688
+ | "INVALID_VALUE"
21689
+ | "UNSAFE_INTEGER"
21690
+ | "OUT_OF_RANGE"
21691
+ | "UNKNOWN_SETUP_PROFILE"
21692
+ | "UNKNOWN_INTERACTION"
21693
+ | "INVALID_COMMAND_PARAMS"
21694
+ | "NON_SERIALIZABLE"
21695
+ | "NORMAL_SETUP_UNAVAILABLE";
21696
+ ```
21697
+
21698
+ _No JSDoc summary is available yet._
21699
+
21700
+ ### ScenarioDefinitionValidationError
21701
+
21702
+ ```ts
21703
+ class ScenarioDefinitionValidationError(options: { readonly code: ScenarioDefinitionValidationCode; readonly path: string; readonly reason: string; }): ScenarioDefinitionValidationError;
21704
+ ```
21705
+
21706
+ _No JSDoc summary is available yet._
21707
+
21708
+ ### ScenarioDiagnostics
21709
+
21710
+ ```ts
21711
+ type ScenarioDiagnostics = {
21712
+ readonly events: readonly ReducerDiagnosticEvent[];
21713
+ readonly lastDispatch: {
21714
+ readonly submissionId: string;
21715
+ readonly trace: readonly DispatchTraceSummaryEntry[];
21716
+ } | null;
21717
+ readonly flow: ScenarioFlowDiagnostics;
21718
+ };
21719
+ ```
21720
+
21721
+ _No JSDoc summary is available yet._
21722
+
21723
+ ### ScenarioDispatchTraceEntry
21724
+
21725
+ ```ts
21726
+ type ScenarioDispatchTraceEntry =
21727
+ | {
21728
+ readonly kind: "acceptedCommand";
21729
+ readonly actor: ActorRef;
21730
+ readonly interactionId: string;
21731
+ }
21732
+ | {
21733
+ readonly kind: "appliedInstruction";
21734
+ readonly instructionKind: string;
21735
+ }
21736
+ | {
21737
+ readonly kind: "entropyDraw";
21738
+ readonly drawIndex: number;
21739
+ };
21740
+ ```
21741
+
21742
+ _No JSDoc summary is available yet._
21743
+
21744
+ ### ScenarioFlowDiagnostics
21745
+
21746
+ ```ts
21747
+ type ScenarioFlowDiagnostics = {
21748
+ readonly currentPhase: string | null;
21749
+ readonly currentStage: string | null;
21750
+ readonly activeSeats: readonly ScenarioSeatRef[];
21751
+ };
21752
+ ```
21753
+
21754
+ _No JSDoc summary is available yet._
21755
+
21756
+ ### ScenarioIdentity
21757
+
21758
+ ```ts
21759
+ type ScenarioIdentity = {
21760
+ readonly id: string;
21761
+ readonly path: string;
21762
+ readonly sourceDigest: Sha256Digest;
21763
+ };
21764
+ ```
21765
+
21766
+ _No JSDoc summary is available yet._
21767
+
21768
+ ### ScenarioProbeAccepted
21769
+
21770
+ ```ts
21771
+ type ScenarioProbeAccepted<Game> = {
21772
+ readonly kind: "accepted";
21773
+ readonly command: ScenarioCommandOf<Game>;
21774
+ readonly checkpointDigest: string;
21775
+ readonly trace: readonly DispatchTraceSummaryEntry[];
21776
+ toBeAccepted(): void;
21777
+ toRejectWith(expected: RejectionExpectation): never;
21778
+ };
21779
+ ```
21780
+
21781
+ _No JSDoc summary is available yet._
21782
+
21783
+ ### ScenarioProbeRejected
21784
+
21785
+ ```ts
21786
+ type ScenarioProbeRejected<Game> = {
21787
+ readonly kind: "rejected";
21788
+ readonly command: ScenarioCommandOf<Game>;
21789
+ readonly errorCode: string;
21790
+ readonly message?: string;
21791
+ readonly trace: readonly DispatchTraceSummaryEntry[];
21792
+ toBeAccepted(): never;
21793
+ toRejectWith(expected: RejectionExpectation): void;
21794
+ };
21795
+ ```
21796
+
21797
+ _No JSDoc summary is available yet._
21798
+
21799
+ ### ScenarioProbeResult
21800
+
21801
+ ```ts
21802
+ type ScenarioProbeResult<Game> =
21803
+ | ScenarioProbeAccepted<Game>
21804
+ | ScenarioProbeRejected<Game>;
21805
+ ```
21806
+
21807
+ _No JSDoc summary is available yet._
21808
+
21809
+ ### ScenarioReplay
21810
+
21811
+ ```ts
21812
+ type ScenarioReplay = ...;
21813
+ ```
21814
+
21815
+ _No JSDoc summary is available yet._
21816
+
21817
+ ### ScenarioReplayDefinition
21818
+
21819
+ ```ts
21820
+ type ScenarioReplayDefinition<Game> = {
21821
+ readonly id: string;
21822
+ readonly description?: string;
21823
+ readonly setup: ScenarioSetup;
21824
+ readonly given: readonly ScenarioCommandOf<Game>[];
21825
+ readonly when: readonly ScenarioCommandOf<Game>[];
21826
+ };
21827
+ ```
21828
+
21829
+ _No JSDoc summary is available yet._
21830
+
21831
+ ### ScenarioReplayError
21832
+
21833
+ ```ts
21834
+ class ScenarioReplayError(options: ScenarioReplayErrorOptions): ScenarioReplayError;
21835
+ ```
21836
+
21837
+ _No JSDoc summary is available yet._
21838
+
21839
+ ### ScenarioReplayErrorOptions
21840
+
21841
+ ```ts
21842
+ type ScenarioReplayErrorOptions = {
21843
+ readonly scenarioId: string;
21844
+ readonly segment: ScenarioReplaySegment;
21845
+ readonly index: number;
21846
+ readonly interactionId: string;
21847
+ readonly errorCode: string;
21848
+ readonly reducerMessage?: string;
21849
+ readonly trace?: readonly DispatchTraceSummaryEntry[];
21850
+ };
21851
+ ```
21852
+
21853
+ _No JSDoc summary is available yet._
21854
+
21855
+ ### ScenarioReplaySegment
21856
+
21857
+ ```ts
21858
+ type ScenarioReplaySegment = "given" | "when";
21859
+ ```
21860
+
21861
+ _No JSDoc summary is available yet._
21862
+
21863
+ ### ScenarioSchemaOutput
21864
+
21865
+ ```ts
21866
+ type ScenarioSchemaOutput = ...;
21867
+ ```
21868
+
21869
+ Authoring projection of an input schema. Only semantic player-id leaves are replaced; ordinary strings retain their original type.
21870
+
21871
+ ### ScenarioSeatRef
21872
+
21873
+ ```ts
21874
+ type ScenarioSeatRef = {
21875
+ readonly seat: number;
21876
+ };
21877
+ ```
21878
+
21879
+ _No JSDoc summary is available yet._
21880
+
21881
+ ### ScenarioSetup
21882
+
21883
+ ```ts
21884
+ type ScenarioSetup = {
21885
+ readonly players: number;
21886
+ readonly seed: number;
21887
+ readonly setupProfileId?: string | null;
21888
+ };
21298
21889
  ```
21299
21890
 
21300
21891
  _No JSDoc summary is available yet._
@@ -21307,10 +21898,10 @@ function serializeUIScenarioFixture(fixture: UIScenarioFixture): string;
21307
21898
 
21308
21899
  _No JSDoc summary is available yet._
21309
21900
 
21310
- ### SharedScenarioContext
21901
+ ### Sha256Digest
21311
21902
 
21312
21903
  ```ts
21313
- interface SharedScenarioContext { ... }
21904
+ type Sha256Digest = `sha256:${string}`;
21314
21905
  ```
21315
21906
 
21316
21907
  _No JSDoc summary is available yet._
@@ -21350,7 +21941,7 @@ _No JSDoc summary is available yet._
21350
21941
  ### StaleContractArtifactKind
21351
21942
 
21352
21943
  ```ts
21353
- type StaleContractArtifactKind = "base-states" | "session-state";
21944
+ type StaleContractArtifactKind = "session-state";
21354
21945
  ```
21355
21946
 
21356
21947
  _No JSDoc summary is available yet._
@@ -21363,13 +21954,15 @@ function submit(options: ReplayStepOptions): UIScenarioReplayStep;
21363
21954
 
21364
21955
  _No JSDoc summary is available yet._
21365
21956
 
21366
- ### TestRunner
21957
+ ### toScenarioReplayDefinition
21367
21958
 
21368
21959
  ```ts
21369
- type TestRunner = "reducer" | "remote" | "browser";
21960
+ function toScenarioReplayDefinition<Game>(
21961
+ definition: ScenarioDefinition<Game>,
21962
+ ): ScenarioReplayDefinition<Game>;
21370
21963
  ```
21371
21964
 
21372
- _No JSDoc summary is available yet._
21965
+ Select and clone the only serializable portion of a loaded scenario.
21373
21966
 
21374
21967
  ### UI_SCENARIO_FIXTURE_BUNDLE_SCHEMA_VERSION
21375
21968
 
@@ -21648,12 +22241,13 @@ _No JSDoc summary is available yet._
21648
22241
 
21649
22242
  ## @dreamboard-games/sdk/testing-runtime
21650
22243
 
21651
- ### CandidateVerificationBase
22244
+ ### CandidateVerificationAssertionDiagnostic
21652
22245
 
21653
22246
  ```ts
21654
- type CandidateVerificationBase =
21655
- | BaseStateArtifact
21656
- | (BaseDefinition & Partial<BaseStateArtifact>);
22247
+ type CandidateVerificationAssertionDiagnostic = {
22248
+ readonly kind: "assertion";
22249
+ readonly message: string;
22250
+ };
21657
22251
  ```
21658
22252
 
21659
22253
  _No JSDoc summary is available yet._
@@ -21661,7 +22255,46 @@ _No JSDoc summary is available yet._
21661
22255
  ### CandidateVerificationInput
21662
22256
 
21663
22257
  ```ts
21664
- type CandidateVerificationInput = ...;
22258
+ type CandidateVerificationInput<Game extends ScenarioDefinitionGameLike> = {
22259
+ /** The authored reducer game definition used by production dispatch. */
22260
+ readonly reducer: Game;
22261
+ readonly scenarios:
22262
+ | Readonly<Record<string, CandidateVerificationScenario<Game>>>
22263
+ | readonly CandidateVerificationScenario<Game>[];
22264
+ readonly maxScenarios?: number;
22265
+ readonly maxStepsPerScenario?: number;
22266
+ };
22267
+ ```
22268
+
22269
+ _No JSDoc summary is available yet._
22270
+
22271
+ ### CandidateVerificationLimitDiagnostic
22272
+
22273
+ ```ts
22274
+ type CandidateVerificationLimitDiagnostic = {
22275
+ readonly kind: "limit";
22276
+ readonly message: string;
22277
+ readonly actualSteps: number;
22278
+ readonly maxStepsPerScenario: number;
22279
+ };
22280
+ ```
22281
+
22282
+ _No JSDoc summary is available yet._
22283
+
22284
+ ### CandidateVerificationReplayDiagnostic
22285
+
22286
+ ```ts
22287
+ type CandidateVerificationReplayDiagnostic = {
22288
+ readonly kind: "replay";
22289
+ readonly message: string;
22290
+ readonly scenarioId?: string;
22291
+ readonly segment?: "given" | "when";
22292
+ readonly index?: number;
22293
+ readonly interactionId?: string;
22294
+ readonly errorCode?: string;
22295
+ readonly reducerMessage?: string;
22296
+ readonly trace?: readonly DispatchTraceSummaryEntry[];
22297
+ };
21665
22298
  ```
21666
22299
 
21667
22300
  _No JSDoc summary is available yet._
@@ -21685,7 +22318,8 @@ _No JSDoc summary is available yet._
21685
22318
  ### CandidateVerificationScenario
21686
22319
 
21687
22320
  ```ts
21688
- type CandidateVerificationScenario = ScenarioDefinition;
22321
+ type CandidateVerificationScenario<Game extends ScenarioDefinitionGameLike> =
22322
+ ScenarioDefinition<Game>;
21689
22323
  ```
21690
22324
 
21691
22325
  _No JSDoc summary is available yet._
@@ -21696,25 +22330,294 @@ _No JSDoc summary is available yet._
21696
22330
  type CandidateVerificationScenarioResult = {
21697
22331
  readonly id: string;
21698
22332
  readonly status: "passed" | "failed";
21699
- readonly diagnostic?: {
21700
- readonly kind: "assertion";
21701
- readonly message: string;
21702
- };
22333
+ readonly diagnostic?:
22334
+ | CandidateVerificationReplayDiagnostic
22335
+ | CandidateVerificationAssertionDiagnostic
22336
+ | CandidateVerificationLimitDiagnostic;
21703
22337
  };
21704
22338
  ```
21705
22339
 
21706
22340
  _No JSDoc summary is available yet._
21707
22341
 
22342
+ ### digestScenarioProjection
22343
+
22344
+ ```ts
22345
+ function digestScenarioProjection(
22346
+ projection: ScenarioProjectionParity,
22347
+ ): Sha256Digest;
22348
+ ```
22349
+
22350
+ _No JSDoc summary is available yet._
22351
+
22352
+ ### materializeScenarioRuntimeCheckpoint
22353
+
22354
+ ```ts
22355
+ function materializeScenarioRuntimeCheckpoint<
22356
+ const Game extends ScenarioDefinitionGameLike,
22357
+ >(
22358
+ options: ReplayScenarioOptions<Game>,
22359
+ ): Promise<ScenarioRuntimeCheckpointMaterialization>;
22360
+ ```
22361
+
22362
+ Trusted tool-side materialization for CLI, Workbench, and backend adapters. The returned reducer snapshot must never cross a player/browser boundary.
22363
+
22364
+ ### resolveScenarioCommandParams
22365
+
22366
+ ```ts
22367
+ function resolveScenarioCommandParams(options: {
22368
+ readonly game: GameLike;
22369
+ readonly phase: string;
22370
+ readonly interactionId: string;
22371
+ readonly params: unknown;
22372
+ readonly playerIds: readonly string[];
22373
+ readonly path: string;
22374
+ }): Record<string, unknown>;
22375
+ ```
22376
+
22377
+ _No JSDoc summary is available yet._
22378
+
21708
22379
  ### runCandidateVerification
21709
22380
 
21710
22381
  ```ts
21711
- function runCandidateVerification(
21712
- input: CandidateVerificationInput,
22382
+ function runCandidateVerification<
22383
+ const Game extends ScenarioDefinitionGameLike,
22384
+ >(
22385
+ input: CandidateVerificationInput<Game>,
21713
22386
  ): Promise<CandidateVerificationResult>;
21714
22387
  ```
21715
22388
 
21716
22389
  _No JSDoc summary is available yet._
21717
22390
 
22391
+ ### scenarioProjectionInputMetadata
22392
+
22393
+ ```ts
22394
+ function scenarioProjectionInputMetadata(
22395
+ input: ScenarioProjectionInteractionInput,
22396
+ ): {
22397
+ readonly key: string;
22398
+ readonly kind: string;
22399
+ readonly eligibleCount: number | "lazy";
22400
+ };
22401
+ ```
22402
+
22403
+ Shared SDK normalization for inspect DTOs and backend parity projections.
22404
+
22405
+ ### ScenarioProjectionInteractionInput
22406
+
22407
+ ```ts
22408
+ type ScenarioProjectionInteractionInput = {
22409
+ readonly key: string;
22410
+ readonly kind: string;
22411
+ readonly domain: unknown;
22412
+ };
22413
+ ```
22414
+
22415
+ _No JSDoc summary is available yet._
22416
+
22417
+ ### ScenarioProjectionParity
22418
+
22419
+ ```ts
22420
+ type ScenarioProjectionParity = ...;
22421
+ ```
22422
+
22423
+ _No JSDoc summary is available yet._
22424
+
22425
+ ### scenarioProjectionParityFromInspectNode
22426
+
22427
+ ```ts
22428
+ function scenarioProjectionParityFromInspectNode(
22429
+ node: InspectNode,
22430
+ ): ScenarioProjectionParity;
22431
+ ```
22432
+
22433
+ Canonical local/backend parity authority. It deliberately excludes raw reducer public/private state, interaction explanations, entropy, and trace: backend gameplay frames expose the selected projection, not reducer state.
22434
+
22435
+ ### ScenarioRuntimeCheckpointMaterialization
22436
+
22437
+ ```ts
22438
+ type ScenarioRuntimeCheckpointMaterialization = {
22439
+ readonly checkpoint: ScenarioCheckpoint;
22440
+ readonly checkpointDigest: string;
22441
+ readonly playerIds: readonly string[];
22442
+ readonly state: wire.ReducerSessionState;
22443
+ };
22444
+ ```
22445
+
22446
+ _No JSDoc summary is available yet._
22447
+
22448
+ ## @dreamboard-games/sdk/testing-compiler
22449
+
22450
+ ### CompiledScenarioReplay
22451
+
22452
+ ```ts
22453
+ type CompiledScenarioReplay = ...;
22454
+ ```
22455
+
22456
+ _No JSDoc summary is available yet._
22457
+
22458
+ ### compileScenarioReplay
22459
+
22460
+ ```ts
22461
+ function compileScenarioReplay(
22462
+ options: CompileScenarioReplayOptions,
22463
+ ): Promise<CompiledScenarioReplay>;
22464
+ ```
22465
+
22466
+ Compile one authored scenario into the trusted, serializable replay DTO used by dev-host, Workbench, demo, and performance adapters.
22467
+
22468
+ ### CompileScenarioReplayOptions
22469
+
22470
+ ```ts
22471
+ type CompileScenarioReplayOptions = {
22472
+ readonly scenarioPath: string;
22473
+ readonly at?: ScenarioCheckpoint;
22474
+ };
22475
+ ```
22476
+
22477
+ _No JSDoc summary is available yet._
22478
+
22479
+ ## @dreamboard-games/sdk/authoring-compiler
22480
+
22481
+ ### MaterializedWorkspaceReceipt
22482
+
22483
+ ```ts
22484
+ type MaterializedWorkspaceReceipt = {
22485
+ readonly schemaVersion: 1;
22486
+ readonly projectRoot: string;
22487
+ readonly authoritativeFiles: number;
22488
+ readonly seededFiles: number;
22489
+ readonly artifacts: readonly {
22490
+ readonly path: string;
22491
+ readonly ownership: "authoritative";
22492
+ readonly sha256: `sha256:${string}`;
22493
+ }[];
22494
+ readonly digest: `sha256:${string}`;
22495
+ };
22496
+ ```
22497
+
22498
+ _No JSDoc summary is available yet._
22499
+
22500
+ ### materializeWorkspace
22501
+
22502
+ ```ts
22503
+ function materializeWorkspace(
22504
+ options: MaterializeWorkspaceOptions,
22505
+ ): Promise<MaterializedWorkspaceReceipt>;
22506
+ ```
22507
+
22508
+ Materialize SDK-owned workspace contracts from authored manifest source. Authoritative files are always replaced. Seed files are untouched unless a scaffolding caller explicitly opts in. No test state or projection artifact is emitted.
22509
+
22510
+ ### MaterializeWorkspaceOptions
22511
+
22512
+ ```ts
22513
+ type MaterializeWorkspaceOptions = {
22514
+ readonly manifestPath: string;
22515
+ readonly projectRoot?: string;
22516
+ /** Scaffolding-only. Existing build/test paths leave seed files untouched. */
22517
+ readonly writeMissingSeeds?: boolean;
22518
+ };
22519
+ ```
22520
+
22521
+ _No JSDoc summary is available yet._
22522
+
22523
+ ## @dreamboard-games/sdk/reference-game-compiler
22524
+
22525
+ ### CANONICAL_REFERENCE_GAME_IDS
22526
+
22527
+ ```ts
22528
+ const CANONICAL_REFERENCE_GAME_IDS: readonly string[];
22529
+ ```
22530
+
22531
+ _No JSDoc summary is available yet._
22532
+
22533
+ ### classifyReferenceGameSourcePath
22534
+
22535
+ ```ts
22536
+ function classifyReferenceGameSourcePath(
22537
+ repositoryPath: string,
22538
+ ): ReferenceGameSourcePathClass;
22539
+ ```
22540
+
22541
+ _No JSDoc summary is available yet._
22542
+
22543
+ ### collectReferenceGameSourceManifest
22544
+
22545
+ ```ts
22546
+ function collectReferenceGameSourceManifest(options: {
22547
+ readonly sourceRoot: string;
22548
+ readonly provenance: ReferenceGameSourceProvenance;
22549
+ }): Promise<ReferenceGameSourceManifest>;
22550
+ ```
22551
+
22552
+ _No JSDoc summary is available yet._
22553
+
22554
+ ### collectReferenceGameSourceObjects
22555
+
22556
+ ```ts
22557
+ function collectReferenceGameSourceObjects(options: {
22558
+ readonly referenceGamesRoot: string;
22559
+ readonly sourceRoot: string;
22560
+ }): Promise<
22561
+ Array<{
22562
+ readonly path: string;
22563
+ readonly sha256: string;
22564
+ readonly byteLength: number;
22565
+ }>
22566
+ >;
22567
+ ```
22568
+
22569
+ _No JSDoc summary is available yet._
22570
+
22571
+ ### isReferenceGameSourceObject
22572
+
22573
+ ```ts
22574
+ function isReferenceGameSourceObject(repositoryPath: string): boolean;
22575
+ ```
22576
+
22577
+ _No JSDoc summary is available yet._
22578
+
22579
+ ### REFERENCE_GAME_SOURCE_INVENTORY_POLICY
22580
+
22581
+ ```ts
22582
+ const REFERENCE_GAME_SOURCE_INVENTORY_POLICY: ReferenceGameSourceInventoryPolicy;
22583
+ ```
22584
+
22585
+ _No JSDoc summary is available yet._
22586
+
22587
+ ### referenceGamePathIdentity
22588
+
22589
+ ```ts
22590
+ function referenceGamePathIdentity(
22591
+ repositoryPath: string,
22592
+ ): { readonly gameId: string; readonly relativePath: string } | null;
22593
+ ```
22594
+
22595
+ _No JSDoc summary is available yet._
22596
+
22597
+ ### ReferenceGameSourcePathClass
22598
+
22599
+ ```ts
22600
+ type ReferenceGameSourcePathClass =
22601
+ | "included"
22602
+ | "workspace-generated"
22603
+ | "test-generated"
22604
+ | "test-base"
22605
+ | "obsolete-screenshot"
22606
+ | "derived-output";
22607
+ ```
22608
+
22609
+ _No JSDoc summary is available yet._
22610
+
22611
+ ### shouldDescendIntoReferenceGameDirectory
22612
+
22613
+ ```ts
22614
+ function shouldDescendIntoReferenceGameDirectory(
22615
+ repositoryPath: string,
22616
+ ): boolean;
22617
+ ```
22618
+
22619
+ _No JSDoc summary is available yet._
22620
+
21718
22621
  ## @dreamboard-games/sdk/browser-interaction
21719
22622
 
21720
22623
  ### actuatorIdentityKey
@@ -22655,6 +23558,7 @@ _No JSDoc summary is available yet._
22655
23558
  ```ts
22656
23559
  const gameplayBrowserInteractionSurface: BrowserInteractionSurfaceDefinition<
22657
23560
  "gameplay",
23561
+ | "fill"
22658
23562
  | "arm"
22659
23563
  | "reveal"
22660
23564
  | "invoke"
@@ -22662,7 +23566,6 @@ const gameplayBrowserInteractionSurface: BrowserInteractionSurfaceDefinition<
22662
23566
  | "toggle"
22663
23567
  | "increment"
22664
23568
  | "decrement"
22665
- | "fill"
22666
23569
  | "submit",
22667
23570
  string
22668
23571
  >;