@dreamboard-games/sdk 0.4.0-alpha.5 → 0.4.0-alpha.7
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/REFERENCE.md +1493 -127
- package/dist/{HandView-x8MhbhFl.d.ts → HandView-Bi2lxzQP.d.ts} +3 -3
- package/dist/{ThemeProvider-DRalAWzY.d.ts → ThemeProvider-CElaL2ik.d.ts} +1 -1
- package/dist/authoring/index.d.ts +5 -4
- package/dist/authoring/index.js +4 -4
- package/dist/authoring/index.js.map +1 -1
- package/dist/browser-interaction.js +1 -1
- package/dist/{chunk-E3X552YM.js → chunk-2TRZSZGD.js} +1061 -425
- package/dist/chunk-2TRZSZGD.js.map +1 -0
- package/dist/{chunk-K5ZRJTZZ.js → chunk-3QIZKXJ2.js} +10 -5
- package/dist/chunk-3QIZKXJ2.js.map +1 -0
- package/dist/{chunk-KHY3RJLT.js → chunk-52DH7VQF.js} +62 -13
- package/dist/chunk-52DH7VQF.js.map +1 -0
- package/dist/chunk-5IHU5CUK.js +575 -0
- package/dist/chunk-5IHU5CUK.js.map +1 -0
- package/dist/{chunk-N6ZDIMRB.js → chunk-B2YBS3SG.js} +1 -1
- package/dist/chunk-B2YBS3SG.js.map +1 -0
- package/dist/chunk-IU6KGPY7.js +659 -0
- package/dist/chunk-IU6KGPY7.js.map +1 -0
- package/dist/{chunk-FXQPZZXC.js → chunk-KYEWGZ2Y.js} +2 -2
- package/dist/{chunk-FXQPZZXC.js.map → chunk-KYEWGZ2Y.js.map} +1 -1
- package/dist/{chunk-AQMEN3AT.js → chunk-NO537WSS.js} +2 -2
- package/dist/{chunk-TTISZQNI.js → chunk-Q322XCY2.js} +47 -31
- package/dist/chunk-Q322XCY2.js.map +1 -0
- package/dist/{chunk-QOFFRHZR.js → chunk-RKGJ64UN.js} +81 -41
- package/dist/chunk-RKGJ64UN.js.map +1 -0
- package/dist/{chunk-Y6Y2YABD.js → chunk-TGMXBRKY.js} +22 -6
- package/dist/chunk-TGMXBRKY.js.map +1 -0
- package/dist/{chunk-XZ667T4K.js → chunk-UC2UXAC6.js} +2 -2
- package/dist/chunk-VLG4YST5.js +564 -0
- package/dist/chunk-VLG4YST5.js.map +1 -0
- package/dist/{chunk-WUIVY2KE.js → chunk-WHR5UW3F.js} +1 -1
- package/dist/chunk-WHR5UW3F.js.map +1 -0
- package/dist/codegen.d.ts +13 -0
- package/dist/codegen.js +1 -1
- package/dist/{components-B7hFaEn_.d.ts → components-BTwSIjXj.d.ts} +77 -206
- package/dist/{stale-contract-artifact-error-BelRiIDR.d.ts → diagnostics-1BWjRo6-.d.ts} +1 -18
- package/dist/{hex-board-view-BFlWDb9k.d.ts → hex-board-view-aKkblDp6.d.ts} +180 -1
- package/dist/{index-gjxQichK.d.ts → index-CFTjJIXd.d.ts} +5 -4
- package/dist/{index.d-BL3bT5lt.d.ts → index.d-DMASeF6M.d.ts} +294 -27
- package/dist/index.js +2 -2
- package/dist/package-set.d.ts +2 -2
- package/dist/package-set.js +2 -2
- package/dist/{runtime-api-BJharVaj.d.ts → plugin-state-BRH3UiUp.d.ts} +19 -3
- package/dist/{protocol-BP193lva.d.ts → protocol-835hEGne.d.ts} +42 -1
- package/dist/reducer/advanced.d.ts +4 -2
- package/dist/reducer/advanced.js +1 -1
- package/dist/reducer-contract.d.ts +1 -1
- package/dist/reducer-contract.js +2 -2
- package/dist/reducer.d.ts +13 -6
- package/dist/reducer.js +322 -20
- package/dist/reducer.js.map +1 -1
- package/dist/reference-games/index.d.ts +223 -0
- package/dist/reference-games/index.js +230 -0
- package/dist/reference-games/index.js.map +1 -0
- package/dist/runtime/primitives.d.ts +32 -7
- package/dist/runtime/primitives.js +10 -5
- package/dist/runtime/runtime-api.d.ts +1 -1
- package/dist/runtime/workspace-contract.d.ts +7 -7
- package/dist/runtime/workspace-contract.js +7 -6
- package/dist/runtime-Dkfm1x2r.d.ts +1670 -0
- package/dist/runtime.d.ts +10 -9
- package/dist/runtime.js +53 -19
- package/dist/runtime.js.map +1 -1
- package/dist/stale-contract-artifact-error-C5AaZPJ8.d.ts +18 -0
- package/dist/testing-runtime.d.ts +42 -0
- package/dist/testing-runtime.js +153 -0
- package/dist/testing-runtime.js.map +1 -0
- package/dist/testing.d.ts +82 -205
- package/dist/testing.js +83 -640
- package/dist/testing.js.map +1 -1
- package/dist/types-DcADVHe9.d.ts +192 -0
- package/dist/{types-CYeN0wLK.d.ts → types-aI4V9CWe.d.ts} +5 -5
- package/dist/types.d.ts +13 -0
- package/dist/ui/components.d.ts +6 -3
- package/dist/ui/components.js +15 -3
- package/dist/ui/plugin-styles.css +2 -2
- package/dist/{ui-contract-B4NjRlvC.d.ts → ui-contract-Ue6SywvO.d.ts} +24 -10
- package/dist/ui.d.ts +9 -6
- package/dist/ui.js +16 -4
- package/dist/views-32rSsfeU.d.ts +1559 -0
- package/package.json +33 -21
- package/dist/chunk-E3X552YM.js.map +0 -1
- package/dist/chunk-K5ZRJTZZ.js.map +0 -1
- package/dist/chunk-KHY3RJLT.js.map +0 -1
- package/dist/chunk-N6ZDIMRB.js.map +0 -1
- package/dist/chunk-O6M6PN4E.js +0 -1225
- package/dist/chunk-O6M6PN4E.js.map +0 -1
- package/dist/chunk-QOFFRHZR.js.map +0 -1
- package/dist/chunk-TTISZQNI.js.map +0 -1
- package/dist/chunk-WUIVY2KE.js.map +0 -1
- package/dist/chunk-Y6Y2YABD.js.map +0 -1
- package/dist/views-fn2RuXOx.d.ts +0 -3168
- /package/dist/{chunk-AQMEN3AT.js.map → chunk-NO537WSS.js.map} +0 -0
- /package/dist/{chunk-XZ667T4K.js.map → chunk-UC2UXAC6.js.map} +0 -0
|
@@ -0,0 +1,575 @@
|
|
|
1
|
+
// ../plugin-runtime-contract/dist/chunk-GX5V4QL7.js
|
|
2
|
+
import { sha256 } from "@noble/hashes/sha2.js";
|
|
3
|
+
import { bytesToHex, utf8ToBytes } from "@noble/hashes/utils.js";
|
|
4
|
+
function canonicalizePluginRuntimeJson(value) {
|
|
5
|
+
assertRuntimeJson(value);
|
|
6
|
+
return canonicalizeJson(value);
|
|
7
|
+
}
|
|
8
|
+
function encodeCanonicalPluginRuntimeJson(value) {
|
|
9
|
+
return JSON.stringify(canonicalizePluginRuntimeJson(value));
|
|
10
|
+
}
|
|
11
|
+
function digestPluginRuntimeJson(value) {
|
|
12
|
+
return `sha256:${sha256Hex(encodeCanonicalPluginRuntimeJson(value))}`;
|
|
13
|
+
}
|
|
14
|
+
function canonicalizeJson(value) {
|
|
15
|
+
if (value === null || typeof value === "boolean" || typeof value === "string") {
|
|
16
|
+
return value;
|
|
17
|
+
}
|
|
18
|
+
if (typeof value === "number") {
|
|
19
|
+
if (!Number.isFinite(value)) {
|
|
20
|
+
throw new Error("canonical JSON contains a non-finite number");
|
|
21
|
+
}
|
|
22
|
+
return value;
|
|
23
|
+
}
|
|
24
|
+
if (Array.isArray(value)) {
|
|
25
|
+
return value.map((item) => canonicalizeJson(item));
|
|
26
|
+
}
|
|
27
|
+
return Object.fromEntries(
|
|
28
|
+
Object.entries(value).filter(([, item]) => item !== void 0).sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0).map(([key, item]) => [key, canonicalizeJson(item)])
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
function assertRuntimeJson(value) {
|
|
32
|
+
if (value === null || typeof value === "boolean" || typeof value === "string") {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (typeof value === "number") {
|
|
36
|
+
if (!Number.isFinite(value)) {
|
|
37
|
+
throw new Error("runtime JSON contains a non-finite number");
|
|
38
|
+
}
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (Array.isArray(value)) {
|
|
42
|
+
value.forEach(assertRuntimeJson);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (typeof value === "object") {
|
|
46
|
+
Object.values(value).forEach((item) => {
|
|
47
|
+
if (item !== void 0) {
|
|
48
|
+
assertRuntimeJson(item);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
throw new Error(`runtime JSON contains unsupported ${typeof value} value`);
|
|
54
|
+
}
|
|
55
|
+
function sha256Hex(input) {
|
|
56
|
+
return bytesToHex(sha256(utf8ToBytes(input)));
|
|
57
|
+
}
|
|
58
|
+
function computePluginActionSetVersion(input) {
|
|
59
|
+
return digestPluginRuntimeJson({
|
|
60
|
+
digestVersion: "plugin-action-set@3",
|
|
61
|
+
gameVersion: input.gameVersion,
|
|
62
|
+
availableInteractions: input.availableInteractions
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
function digestPluginGameplayFrame(frame) {
|
|
66
|
+
return digestPluginRuntimeJson({
|
|
67
|
+
digestVersion: "plugin-gameplay-frame@3",
|
|
68
|
+
frame
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// ../plugin-runtime-contract/dist/chunk-E4Y6SAWF.js
|
|
73
|
+
import { z } from "zod";
|
|
74
|
+
var DREAMBOARD_PLUGIN_PROTOCOL = "dreamboard-plugin";
|
|
75
|
+
var DREAMBOARD_PLUGIN_PROTOCOL_VERSION = 3;
|
|
76
|
+
var RuntimeJsonSchema = z.lazy(
|
|
77
|
+
() => z.union([
|
|
78
|
+
z.null(),
|
|
79
|
+
z.boolean(),
|
|
80
|
+
z.number().finite(),
|
|
81
|
+
z.string(),
|
|
82
|
+
z.array(RuntimeJsonSchema),
|
|
83
|
+
z.record(z.string(), RuntimeJsonSchema)
|
|
84
|
+
])
|
|
85
|
+
);
|
|
86
|
+
var BoardStaticProjectionSchema = z.object({
|
|
87
|
+
view: RuntimeJsonSchema,
|
|
88
|
+
hash: z.string().optional(),
|
|
89
|
+
manifestVersion: z.string().optional()
|
|
90
|
+
}).strict();
|
|
91
|
+
var SetupGuidanceStepSchema = z.object({
|
|
92
|
+
id: z.string().min(1),
|
|
93
|
+
label: z.string().min(1),
|
|
94
|
+
description: z.string().optional()
|
|
95
|
+
}).strict();
|
|
96
|
+
var GameGuidanceProjectionSchema = z.object({
|
|
97
|
+
phase: z.object({
|
|
98
|
+
id: z.string().min(1),
|
|
99
|
+
label: z.string().min(1),
|
|
100
|
+
summary: z.string().optional(),
|
|
101
|
+
objective: z.string().optional()
|
|
102
|
+
}).strict(),
|
|
103
|
+
setup: z.object({
|
|
104
|
+
profileId: z.string().min(1),
|
|
105
|
+
name: z.string().min(1),
|
|
106
|
+
summary: z.string().optional(),
|
|
107
|
+
steps: z.array(SetupGuidanceStepSchema)
|
|
108
|
+
}).strict().optional()
|
|
109
|
+
}).strict();
|
|
110
|
+
var GameEventDetailSchema = z.object({
|
|
111
|
+
label: z.string().min(1),
|
|
112
|
+
value: z.union([z.string(), z.number().finite(), z.boolean()])
|
|
113
|
+
}).strict();
|
|
114
|
+
var SystemActionEventSchema = z.object({
|
|
115
|
+
kind: z.literal("systemAction"),
|
|
116
|
+
procedureId: z.string().min(1),
|
|
117
|
+
title: z.string().min(1),
|
|
118
|
+
summary: z.string().optional(),
|
|
119
|
+
details: z.array(GameEventDetailSchema).optional()
|
|
120
|
+
}).strict();
|
|
121
|
+
var GameEventSchema = z.discriminatedUnion("kind", [
|
|
122
|
+
SystemActionEventSchema
|
|
123
|
+
]);
|
|
124
|
+
var ProjectedGameEventSchema = GameEventSchema.and(
|
|
125
|
+
z.object({
|
|
126
|
+
version: z.number().int().nonnegative(),
|
|
127
|
+
index: z.number().int().nonnegative()
|
|
128
|
+
}).strict()
|
|
129
|
+
);
|
|
130
|
+
var SeatProjectionBundleSchema = z.object({
|
|
131
|
+
currentStage: z.string().nullable().optional(),
|
|
132
|
+
stageSeats: z.array(z.string()).optional(),
|
|
133
|
+
simultaneousPhase: z.unknown().nullable().optional(),
|
|
134
|
+
guidance: GameGuidanceProjectionSchema.nullable().optional(),
|
|
135
|
+
recentEvents: z.array(ProjectedGameEventSchema).optional(),
|
|
136
|
+
interactionsByRef: z.record(z.string(), z.unknown()).optional(),
|
|
137
|
+
seats: z.record(
|
|
138
|
+
z.string(),
|
|
139
|
+
z.object({
|
|
140
|
+
view: z.unknown().optional(),
|
|
141
|
+
availableInteractionRefs: z.array(z.string()).optional(),
|
|
142
|
+
zones: z.unknown().optional()
|
|
143
|
+
}).strict()
|
|
144
|
+
)
|
|
145
|
+
}).strict();
|
|
146
|
+
var PlayerIdSchema = z.string().min(1);
|
|
147
|
+
var PluginPlayerSummarySchema = z.object({
|
|
148
|
+
playerId: PlayerIdSchema,
|
|
149
|
+
displayName: z.string(),
|
|
150
|
+
color: z.string().optional()
|
|
151
|
+
}).strict();
|
|
152
|
+
var PluginSessionDescriptorSchema = z.object({
|
|
153
|
+
sessionId: z.string().min(1),
|
|
154
|
+
players: z.array(PluginPlayerSummarySchema)
|
|
155
|
+
}).strict();
|
|
156
|
+
var InteractionCommitPolicySchema = z.discriminatedUnion("mode", [
|
|
157
|
+
z.object({ mode: z.literal("manual") }).strict(),
|
|
158
|
+
z.object({ mode: z.literal("autoWhenReady") }).strict()
|
|
159
|
+
]);
|
|
160
|
+
var InputSelectionSchema = z.discriminatedUnion("mode", [
|
|
161
|
+
z.object({ mode: z.literal("single") }).strict(),
|
|
162
|
+
z.object({
|
|
163
|
+
mode: z.literal("many"),
|
|
164
|
+
min: z.number().int(),
|
|
165
|
+
max: z.number().int().optional(),
|
|
166
|
+
distinct: z.boolean().optional()
|
|
167
|
+
}).strict()
|
|
168
|
+
]);
|
|
169
|
+
var InputDomainDependencyCaseSchema = z.lazy(
|
|
170
|
+
() => z.object({
|
|
171
|
+
when: z.record(z.string(), z.string()),
|
|
172
|
+
domain: InputDomainSchema
|
|
173
|
+
}).strict()
|
|
174
|
+
);
|
|
175
|
+
var InputDomainDependenciesSchema = z.discriminatedUnion("mode", [
|
|
176
|
+
z.object({
|
|
177
|
+
mode: z.literal("eager"),
|
|
178
|
+
dependentCases: z.array(InputDomainDependencyCaseSchema)
|
|
179
|
+
}).strict(),
|
|
180
|
+
z.object({
|
|
181
|
+
mode: z.literal("lazy"),
|
|
182
|
+
dependsOn: z.array(z.string()),
|
|
183
|
+
resolver: z.object({
|
|
184
|
+
interactionKey: z.string().optional(),
|
|
185
|
+
inputKey: z.string()
|
|
186
|
+
}).strict()
|
|
187
|
+
}).strict()
|
|
188
|
+
]);
|
|
189
|
+
var InputDomainSchema = z.object({
|
|
190
|
+
type: z.string(),
|
|
191
|
+
selection: InputSelectionSchema.optional(),
|
|
192
|
+
dependencies: InputDomainDependenciesSchema.optional()
|
|
193
|
+
}).catchall(RuntimeJsonSchema);
|
|
194
|
+
var InteractionChoiceOptionSchema = z.object({
|
|
195
|
+
value: z.string().nullable(),
|
|
196
|
+
label: z.string(),
|
|
197
|
+
icon: z.string().optional(),
|
|
198
|
+
badge: z.string().optional(),
|
|
199
|
+
description: z.string().optional(),
|
|
200
|
+
disabled: z.boolean().optional(),
|
|
201
|
+
disabledReason: z.string().optional()
|
|
202
|
+
}).strict();
|
|
203
|
+
var InteractionInputDescriptorSchema = z.object({
|
|
204
|
+
key: z.string().min(1),
|
|
205
|
+
kind: z.string().min(1),
|
|
206
|
+
domain: InputDomainSchema,
|
|
207
|
+
defaultValue: RuntimeJsonSchema.optional()
|
|
208
|
+
}).strict();
|
|
209
|
+
var InteractionAvailabilitySchema = z.discriminatedUnion("status", [
|
|
210
|
+
z.object({ status: z.literal("available") }).strict(),
|
|
211
|
+
z.object({ status: z.literal("notYourTurn"), reason: z.string() }).strict(),
|
|
212
|
+
z.object({
|
|
213
|
+
status: z.literal("insufficientResources"),
|
|
214
|
+
reason: z.string(),
|
|
215
|
+
missingResources: z.record(z.string(), z.number().finite())
|
|
216
|
+
}).strict(),
|
|
217
|
+
z.object({
|
|
218
|
+
status: z.literal("blocked"),
|
|
219
|
+
reason: z.string(),
|
|
220
|
+
code: z.string().optional()
|
|
221
|
+
}).strict()
|
|
222
|
+
]);
|
|
223
|
+
var InteractionBaseSchema = z.object({
|
|
224
|
+
phaseName: z.string().min(1),
|
|
225
|
+
interactionKey: z.string().min(1),
|
|
226
|
+
interactionId: z.string().min(1),
|
|
227
|
+
label: z.string().min(1),
|
|
228
|
+
help: z.string().optional(),
|
|
229
|
+
zoneId: z.string().optional(),
|
|
230
|
+
zoneIds: z.array(z.string()).optional(),
|
|
231
|
+
commit: InteractionCommitPolicySchema,
|
|
232
|
+
descriptorDigest: z.string().optional(),
|
|
233
|
+
actorSeat: z.number().int().optional(),
|
|
234
|
+
draftDigest: z.string().optional(),
|
|
235
|
+
inputs: z.array(InteractionInputDescriptorSchema),
|
|
236
|
+
cost: z.record(z.string(), RuntimeJsonSchema).optional(),
|
|
237
|
+
currentResources: z.record(z.string(), RuntimeJsonSchema).optional(),
|
|
238
|
+
availability: InteractionAvailabilitySchema,
|
|
239
|
+
reasons: z.array(
|
|
240
|
+
z.object({
|
|
241
|
+
ruleId: z.string(),
|
|
242
|
+
errorCode: z.string()
|
|
243
|
+
}).strict()
|
|
244
|
+
).optional()
|
|
245
|
+
}).strict();
|
|
246
|
+
var InteractionContextSchema = z.object({
|
|
247
|
+
to: z.string().min(1),
|
|
248
|
+
title: z.string().optional(),
|
|
249
|
+
payload: z.record(z.string(), RuntimeJsonSchema).optional(),
|
|
250
|
+
options: z.array(
|
|
251
|
+
z.object({
|
|
252
|
+
id: z.string(),
|
|
253
|
+
label: z.string().optional()
|
|
254
|
+
}).strict()
|
|
255
|
+
).optional()
|
|
256
|
+
}).strict();
|
|
257
|
+
var InteractionDescriptorSchema = z.discriminatedUnion("kind", [
|
|
258
|
+
InteractionBaseSchema.extend({ kind: z.literal("action") }).strict(),
|
|
259
|
+
InteractionBaseSchema.extend({
|
|
260
|
+
kind: z.literal("prompt"),
|
|
261
|
+
context: InteractionContextSchema
|
|
262
|
+
}).strict()
|
|
263
|
+
]);
|
|
264
|
+
var ZoneHandlesSnapshotSchema = z.object({
|
|
265
|
+
cardIds: z.array(z.string()),
|
|
266
|
+
cardViewsById: z.record(z.string(), z.string()),
|
|
267
|
+
playableByCardId: z.record(
|
|
268
|
+
z.string(),
|
|
269
|
+
z.array(InteractionDescriptorSchema)
|
|
270
|
+
)
|
|
271
|
+
}).strict();
|
|
272
|
+
var SimultaneousPhaseSnapshotSchema = z.object({
|
|
273
|
+
phaseName: z.string().min(1),
|
|
274
|
+
interactionId: z.string().min(1),
|
|
275
|
+
actorIds: z.array(PlayerIdSchema),
|
|
276
|
+
sealedPlayerIds: z.array(PlayerIdSchema),
|
|
277
|
+
pendingPlayerIds: z.array(PlayerIdSchema)
|
|
278
|
+
}).strict();
|
|
279
|
+
var PluginGameplayFrameSchema = z.object({
|
|
280
|
+
gameVersion: z.number().int().nonnegative(),
|
|
281
|
+
actionSetVersion: z.string().min(1),
|
|
282
|
+
perspectivePlayerId: PlayerIdSchema.nullable(),
|
|
283
|
+
view: RuntimeJsonSchema.nullable(),
|
|
284
|
+
flow: z.object({
|
|
285
|
+
currentPhase: z.string().nullable(),
|
|
286
|
+
currentStage: z.string().nullable(),
|
|
287
|
+
activePlayers: z.array(PlayerIdSchema),
|
|
288
|
+
simultaneousPhase: SimultaneousPhaseSnapshotSchema.nullable()
|
|
289
|
+
}).strict(),
|
|
290
|
+
availableInteractions: z.array(InteractionDescriptorSchema),
|
|
291
|
+
guidance: GameGuidanceProjectionSchema.nullable().optional(),
|
|
292
|
+
recentEvents: z.array(ProjectedGameEventSchema),
|
|
293
|
+
zones: z.record(z.string(), ZoneHandlesSnapshotSchema)
|
|
294
|
+
}).strict();
|
|
295
|
+
var ValidationResultSchema = z.object({
|
|
296
|
+
valid: z.boolean(),
|
|
297
|
+
errorCode: z.string().optional(),
|
|
298
|
+
message: z.string().optional()
|
|
299
|
+
}).strict();
|
|
300
|
+
var SubmissionResultSchema = z.discriminatedUnion("accepted", [
|
|
301
|
+
z.object({ accepted: z.literal(true) }).strict(),
|
|
302
|
+
z.object({
|
|
303
|
+
accepted: z.literal(false),
|
|
304
|
+
errorCode: z.string().min(1),
|
|
305
|
+
message: z.string().optional()
|
|
306
|
+
}).strict()
|
|
307
|
+
]);
|
|
308
|
+
var PluginInteractionBasisSchema = z.object({
|
|
309
|
+
gameVersion: z.number().int().nonnegative(),
|
|
310
|
+
actionSetVersion: z.string().min(1),
|
|
311
|
+
perspectivePlayerId: PlayerIdSchema.nullable()
|
|
312
|
+
}).strict();
|
|
313
|
+
var ValidateInteractionCommandSchema = z.object({
|
|
314
|
+
type: z.literal("interaction.validate"),
|
|
315
|
+
requestId: z.string().min(1),
|
|
316
|
+
basis: PluginInteractionBasisSchema,
|
|
317
|
+
interactionId: z.string().min(1),
|
|
318
|
+
params: RuntimeJsonSchema
|
|
319
|
+
}).strict();
|
|
320
|
+
var SubmitInteractionCommandSchema = z.object({
|
|
321
|
+
type: z.literal("interaction.submit"),
|
|
322
|
+
requestId: z.string().min(1),
|
|
323
|
+
basis: PluginInteractionBasisSchema,
|
|
324
|
+
interactionId: z.string().min(1),
|
|
325
|
+
params: RuntimeJsonSchema
|
|
326
|
+
}).strict();
|
|
327
|
+
var HostToPluginPayloadSchema = z.discriminatedUnion("type", [
|
|
328
|
+
z.object({
|
|
329
|
+
type: z.literal("runtime.init"),
|
|
330
|
+
session: PluginSessionDescriptorSchema
|
|
331
|
+
}).strict(),
|
|
332
|
+
z.object({
|
|
333
|
+
type: z.literal("gameplay.frame"),
|
|
334
|
+
frame: PluginGameplayFrameSchema
|
|
335
|
+
}).strict(),
|
|
336
|
+
z.object({
|
|
337
|
+
type: z.literal("interaction.validation-result"),
|
|
338
|
+
requestId: z.string().min(1),
|
|
339
|
+
result: ValidationResultSchema
|
|
340
|
+
}).strict(),
|
|
341
|
+
z.object({
|
|
342
|
+
type: z.literal("interaction.submit-result"),
|
|
343
|
+
requestId: z.string().min(1),
|
|
344
|
+
result: SubmissionResultSchema
|
|
345
|
+
}).strict()
|
|
346
|
+
]);
|
|
347
|
+
var PluginToHostPayloadSchema = z.discriminatedUnion("type", [
|
|
348
|
+
z.object({ type: z.literal("runtime.ready") }).strict(),
|
|
349
|
+
z.object({
|
|
350
|
+
type: z.literal("runtime.ack"),
|
|
351
|
+
sequence: z.number().int().nonnegative(),
|
|
352
|
+
clientReceivedAtMs: z.number().finite().optional(),
|
|
353
|
+
clientRenderedAtMs: z.number().finite().optional()
|
|
354
|
+
}).strict(),
|
|
355
|
+
ValidateInteractionCommandSchema,
|
|
356
|
+
SubmitInteractionCommandSchema,
|
|
357
|
+
z.object({
|
|
358
|
+
type: z.literal("runtime.error"),
|
|
359
|
+
message: z.string(),
|
|
360
|
+
code: z.string().optional()
|
|
361
|
+
}).strict()
|
|
362
|
+
]);
|
|
363
|
+
function createPluginProtocolEnvelopeSchema(payloadSchema) {
|
|
364
|
+
return z.object({
|
|
365
|
+
protocol: z.literal(DREAMBOARD_PLUGIN_PROTOCOL),
|
|
366
|
+
version: z.literal(DREAMBOARD_PLUGIN_PROTOCOL_VERSION),
|
|
367
|
+
channelId: z.string().min(1),
|
|
368
|
+
sequence: z.number().int().nonnegative(),
|
|
369
|
+
payload: payloadSchema
|
|
370
|
+
}).strict();
|
|
371
|
+
}
|
|
372
|
+
var HostToPluginEnvelopeSchema = createPluginProtocolEnvelopeSchema(
|
|
373
|
+
HostToPluginPayloadSchema
|
|
374
|
+
);
|
|
375
|
+
var PluginToHostEnvelopeSchema = createPluginProtocolEnvelopeSchema(
|
|
376
|
+
PluginToHostPayloadSchema
|
|
377
|
+
);
|
|
378
|
+
var PluginProtocolFrameSchema = z.object({
|
|
379
|
+
id: z.string().min(1),
|
|
380
|
+
frame: PluginGameplayFrameSchema,
|
|
381
|
+
projectionDigest: z.string().regex(/^sha256:[a-f0-9]{64}$/)
|
|
382
|
+
}).strict();
|
|
383
|
+
var PluginProtocolStepSchema = z.discriminatedUnion("kind", [
|
|
384
|
+
z.object({
|
|
385
|
+
id: z.string().min(1),
|
|
386
|
+
kind: z.literal("host.frame"),
|
|
387
|
+
frameId: z.string().min(1)
|
|
388
|
+
}).strict(),
|
|
389
|
+
z.object({
|
|
390
|
+
id: z.string().min(1),
|
|
391
|
+
kind: z.literal("client.validate"),
|
|
392
|
+
fromFrameId: z.string().min(1),
|
|
393
|
+
requestDigest: z.string().regex(/^sha256:[a-f0-9]{64}$/),
|
|
394
|
+
response: ValidationResultSchema
|
|
395
|
+
}).strict(),
|
|
396
|
+
z.object({
|
|
397
|
+
id: z.string().min(1),
|
|
398
|
+
kind: z.literal("client.submit"),
|
|
399
|
+
fromFrameId: z.string().min(1),
|
|
400
|
+
requestDigest: z.string().regex(/^sha256:[a-f0-9]{64}$/),
|
|
401
|
+
response: SubmissionResultSchema
|
|
402
|
+
}).strict()
|
|
403
|
+
]);
|
|
404
|
+
var PluginProtocolTapeSchema = z.object({
|
|
405
|
+
session: PluginSessionDescriptorSchema,
|
|
406
|
+
frames: z.array(PluginProtocolFrameSchema),
|
|
407
|
+
steps: z.array(PluginProtocolStepSchema)
|
|
408
|
+
}).strict();
|
|
409
|
+
|
|
410
|
+
// ../plugin-runtime-contract/dist/index.js
|
|
411
|
+
function materializePluginGameplayFrame(input) {
|
|
412
|
+
const dynamicProjection = SeatProjectionBundleSchema.parse(
|
|
413
|
+
canonicalizeReducerProjection(input.dynamicProjection)
|
|
414
|
+
);
|
|
415
|
+
const staticProjection = input.staticProjection == null ? null : BoardStaticProjectionSchema.parse(
|
|
416
|
+
canonicalizeReducerProjection(input.staticProjection)
|
|
417
|
+
);
|
|
418
|
+
const registry = parseInteractionRegistry(
|
|
419
|
+
dynamicProjection.interactionsByRef
|
|
420
|
+
);
|
|
421
|
+
const seat = input.perspectivePlayerId == null ? null : dynamicProjection.seats[input.perspectivePlayerId] ?? null;
|
|
422
|
+
const availableInteractions = seat == null ? [] : hydrateInteractionRefs(
|
|
423
|
+
registry,
|
|
424
|
+
seat.availableInteractionRefs,
|
|
425
|
+
"availableInteractionRefs"
|
|
426
|
+
);
|
|
427
|
+
const zones = seat?.zones == null ? {} : hydrateZones(registry, seat.zones, "zones");
|
|
428
|
+
const frame = {
|
|
429
|
+
gameVersion: input.gameVersion,
|
|
430
|
+
actionSetVersion: input.actionSetVersion,
|
|
431
|
+
perspectivePlayerId: input.perspectivePlayerId,
|
|
432
|
+
view: composeProjectionView(staticProjection, seat?.view),
|
|
433
|
+
flow: {
|
|
434
|
+
currentPhase: input.currentPhase,
|
|
435
|
+
currentStage: dynamicProjection.currentStage ?? null,
|
|
436
|
+
activePlayers: [...input.activePlayers],
|
|
437
|
+
simultaneousPhase: dynamicProjection.simultaneousPhase ?? null
|
|
438
|
+
},
|
|
439
|
+
availableInteractions,
|
|
440
|
+
guidance: dynamicProjection.guidance ?? null,
|
|
441
|
+
recentEvents: [...dynamicProjection.recentEvents ?? []],
|
|
442
|
+
zones
|
|
443
|
+
};
|
|
444
|
+
return PluginGameplayFrameSchema.parse(frame);
|
|
445
|
+
}
|
|
446
|
+
function canonicalizeReducerProjection(value) {
|
|
447
|
+
return canonicalizePluginRuntimeJson(value);
|
|
448
|
+
}
|
|
449
|
+
function parseInteractionRegistry(value) {
|
|
450
|
+
if (value == null) return {};
|
|
451
|
+
if (!isRecord(value)) {
|
|
452
|
+
throw new Error("Seat projection interactionsByRef must be an object.");
|
|
453
|
+
}
|
|
454
|
+
return Object.fromEntries(
|
|
455
|
+
Object.entries(value).map(([ref, descriptor]) => [
|
|
456
|
+
ref,
|
|
457
|
+
InteractionDescriptorSchema.parse(descriptor)
|
|
458
|
+
])
|
|
459
|
+
);
|
|
460
|
+
}
|
|
461
|
+
function hydrateZones(registry, value, path) {
|
|
462
|
+
if (!isRecord(value)) {
|
|
463
|
+
throw new Error(`Seat projection ${path} must be an object.`);
|
|
464
|
+
}
|
|
465
|
+
return Object.fromEntries(
|
|
466
|
+
Object.entries(value).map(([zoneId, zoneValue]) => [
|
|
467
|
+
zoneId,
|
|
468
|
+
hydrateZone(registry, zoneValue, `${path}.${zoneId}`)
|
|
469
|
+
])
|
|
470
|
+
);
|
|
471
|
+
}
|
|
472
|
+
function hydrateZone(registry, value, path) {
|
|
473
|
+
if (!isRecord(value)) {
|
|
474
|
+
throw new Error(`Seat projection ${path} must be an object.`);
|
|
475
|
+
}
|
|
476
|
+
const cardIds = arrayOfStrings(value.cardIds, `${path}.cardIds`);
|
|
477
|
+
const cardViewsById = stringRecord(
|
|
478
|
+
value.cardViewsById,
|
|
479
|
+
`${path}.cardViewsById`
|
|
480
|
+
);
|
|
481
|
+
if (!isRecord(value.playableByCardId)) {
|
|
482
|
+
throw new Error(
|
|
483
|
+
`Seat projection ${path}.playableByCardId must be an object.`
|
|
484
|
+
);
|
|
485
|
+
}
|
|
486
|
+
const playableByCardId = Object.fromEntries(
|
|
487
|
+
Object.entries(value.playableByCardId).map(([cardId, refs]) => [
|
|
488
|
+
cardId,
|
|
489
|
+
hydrateInteractionRefs(
|
|
490
|
+
registry,
|
|
491
|
+
refs,
|
|
492
|
+
`${path}.playableByCardId.${cardId}`
|
|
493
|
+
)
|
|
494
|
+
])
|
|
495
|
+
);
|
|
496
|
+
return ZoneHandlesSnapshotSchema.parse({
|
|
497
|
+
cardIds,
|
|
498
|
+
cardViewsById,
|
|
499
|
+
playableByCardId
|
|
500
|
+
});
|
|
501
|
+
}
|
|
502
|
+
function hydrateInteractionRefs(registry, value, path) {
|
|
503
|
+
if (!Array.isArray(value)) {
|
|
504
|
+
throw new Error(`Seat projection ${path} must be an array of refs.`);
|
|
505
|
+
}
|
|
506
|
+
return value.map((ref, index) => {
|
|
507
|
+
if (typeof ref !== "string") {
|
|
508
|
+
throw new Error(
|
|
509
|
+
`Seat projection ${path}[${index}] must be a ref string.`
|
|
510
|
+
);
|
|
511
|
+
}
|
|
512
|
+
const descriptor = registry[ref];
|
|
513
|
+
if (!descriptor) {
|
|
514
|
+
throw new Error(
|
|
515
|
+
`Seat projection ${path}[${index}] references '${ref}', which is missing from interactionsByRef.`
|
|
516
|
+
);
|
|
517
|
+
}
|
|
518
|
+
return descriptor;
|
|
519
|
+
});
|
|
520
|
+
}
|
|
521
|
+
function composeProjectionView(staticProjection, dynamicView) {
|
|
522
|
+
const normalizedDynamicView = dynamicView === void 0 ? null : dynamicView;
|
|
523
|
+
if (staticProjection == null) {
|
|
524
|
+
return normalizedDynamicView;
|
|
525
|
+
}
|
|
526
|
+
if (normalizedDynamicView == null) {
|
|
527
|
+
return staticProjection.view;
|
|
528
|
+
}
|
|
529
|
+
if (isRecord(staticProjection.view) && isRecord(normalizedDynamicView)) {
|
|
530
|
+
return {
|
|
531
|
+
...staticProjection.view,
|
|
532
|
+
...normalizedDynamicView
|
|
533
|
+
};
|
|
534
|
+
}
|
|
535
|
+
return {
|
|
536
|
+
static: staticProjection.view,
|
|
537
|
+
dynamic: normalizedDynamicView
|
|
538
|
+
};
|
|
539
|
+
}
|
|
540
|
+
function arrayOfStrings(value, path) {
|
|
541
|
+
if (!Array.isArray(value) || value.some((item) => typeof item !== "string")) {
|
|
542
|
+
throw new Error(`Seat projection ${path} must be an array of strings.`);
|
|
543
|
+
}
|
|
544
|
+
return value;
|
|
545
|
+
}
|
|
546
|
+
function stringRecord(value, path) {
|
|
547
|
+
if (!isRecord(value)) {
|
|
548
|
+
throw new Error(`Seat projection ${path} must be an object.`);
|
|
549
|
+
}
|
|
550
|
+
const result = {};
|
|
551
|
+
for (const [key, item] of Object.entries(value)) {
|
|
552
|
+
if (typeof item !== "string") {
|
|
553
|
+
throw new Error(`Seat projection ${path}.${key} must be a string.`);
|
|
554
|
+
}
|
|
555
|
+
result[key] = item;
|
|
556
|
+
}
|
|
557
|
+
return result;
|
|
558
|
+
}
|
|
559
|
+
function isRecord(value) {
|
|
560
|
+
return value !== null && typeof value === "object" && !Array.isArray(value) && (Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null);
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
export {
|
|
564
|
+
computePluginActionSetVersion,
|
|
565
|
+
digestPluginGameplayFrame,
|
|
566
|
+
DREAMBOARD_PLUGIN_PROTOCOL,
|
|
567
|
+
DREAMBOARD_PLUGIN_PROTOCOL_VERSION,
|
|
568
|
+
RuntimeJsonSchema,
|
|
569
|
+
HostToPluginEnvelopeSchema,
|
|
570
|
+
PluginProtocolFrameSchema,
|
|
571
|
+
PluginProtocolStepSchema,
|
|
572
|
+
PluginProtocolTapeSchema,
|
|
573
|
+
materializePluginGameplayFrame
|
|
574
|
+
};
|
|
575
|
+
//# sourceMappingURL=chunk-5IHU5CUK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../plugin-runtime-contract/dist/chunk-GX5V4QL7.js","../../plugin-runtime-contract/dist/chunk-E4Y6SAWF.js","../../plugin-runtime-contract/dist/index.js"],"sourcesContent":["// src/json.ts\nimport { sha256 } from \"@noble/hashes/sha2.js\";\nimport { bytesToHex, utf8ToBytes } from \"@noble/hashes/utils.js\";\nfunction canonicalizePluginRuntimeJson(value) {\n assertRuntimeJson(value);\n return canonicalizeJson(value);\n}\nfunction encodeCanonicalPluginRuntimeJson(value) {\n return JSON.stringify(canonicalizePluginRuntimeJson(value));\n}\nfunction digestPluginRuntimeJson(value) {\n return `sha256:${sha256Hex(encodeCanonicalPluginRuntimeJson(value))}`;\n}\nfunction canonicalizeJson(value) {\n if (value === null || typeof value === \"boolean\" || typeof value === \"string\") {\n return value;\n }\n if (typeof value === \"number\") {\n if (!Number.isFinite(value)) {\n throw new Error(\"canonical JSON contains a non-finite number\");\n }\n return value;\n }\n if (Array.isArray(value)) {\n return value.map((item) => canonicalizeJson(item));\n }\n return Object.fromEntries(\n Object.entries(value).filter(([, item]) => item !== void 0).sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0).map(([key, item]) => [key, canonicalizeJson(item)])\n );\n}\nfunction assertRuntimeJson(value) {\n if (value === null || typeof value === \"boolean\" || typeof value === \"string\") {\n return;\n }\n if (typeof value === \"number\") {\n if (!Number.isFinite(value)) {\n throw new Error(\"runtime JSON contains a non-finite number\");\n }\n return;\n }\n if (Array.isArray(value)) {\n value.forEach(assertRuntimeJson);\n return;\n }\n if (typeof value === \"object\") {\n Object.values(value).forEach((item) => {\n if (item !== void 0) {\n assertRuntimeJson(item);\n }\n });\n return;\n }\n throw new Error(`runtime JSON contains unsupported ${typeof value} value`);\n}\nfunction sha256Hex(input) {\n return bytesToHex(sha256(utf8ToBytes(input)));\n}\n\n// src/digest.ts\nfunction computePluginActionSetVersion(input) {\n return digestPluginRuntimeJson({\n digestVersion: \"plugin-action-set@3\",\n gameVersion: input.gameVersion,\n availableInteractions: input.availableInteractions\n });\n}\nfunction digestPluginGameplayFrame(frame) {\n return digestPluginRuntimeJson({\n digestVersion: \"plugin-gameplay-frame@3\",\n frame\n });\n}\nfunction digestPluginCommandRequest(command) {\n return digestPluginRuntimeJson({\n digestVersion: \"plugin-command-request@3\",\n command\n });\n}\n\nexport {\n canonicalizePluginRuntimeJson,\n encodeCanonicalPluginRuntimeJson,\n digestPluginRuntimeJson,\n computePluginActionSetVersion,\n digestPluginGameplayFrame,\n digestPluginCommandRequest\n};\n","// src/schema.ts\nimport { z } from \"zod\";\n\n// src/protocol.ts\nvar DREAMBOARD_PLUGIN_PROTOCOL = \"dreamboard-plugin\";\nvar DREAMBOARD_PLUGIN_PROTOCOL_VERSION = 3;\n\n// src/schema.ts\nvar RuntimeJsonSchema = z.lazy(\n () => z.union([\n z.null(),\n z.boolean(),\n z.number().finite(),\n z.string(),\n z.array(RuntimeJsonSchema),\n z.record(z.string(), RuntimeJsonSchema)\n ])\n);\nvar BoardStaticProjectionSchema = z.object({\n view: RuntimeJsonSchema,\n hash: z.string().optional(),\n manifestVersion: z.string().optional()\n}).strict();\nvar SetupGuidanceStepSchema = z.object({\n id: z.string().min(1),\n label: z.string().min(1),\n description: z.string().optional()\n}).strict();\nvar GameGuidanceProjectionSchema = z.object({\n phase: z.object({\n id: z.string().min(1),\n label: z.string().min(1),\n summary: z.string().optional(),\n objective: z.string().optional()\n }).strict(),\n setup: z.object({\n profileId: z.string().min(1),\n name: z.string().min(1),\n summary: z.string().optional(),\n steps: z.array(SetupGuidanceStepSchema)\n }).strict().optional()\n}).strict();\nvar GameEventDetailSchema = z.object({\n label: z.string().min(1),\n value: z.union([z.string(), z.number().finite(), z.boolean()])\n}).strict();\nvar SystemActionEventSchema = z.object({\n kind: z.literal(\"systemAction\"),\n procedureId: z.string().min(1),\n title: z.string().min(1),\n summary: z.string().optional(),\n details: z.array(GameEventDetailSchema).optional()\n}).strict();\nvar GameEventSchema = z.discriminatedUnion(\"kind\", [\n SystemActionEventSchema\n]);\nvar ProjectedGameEventSchema = GameEventSchema.and(\n z.object({\n version: z.number().int().nonnegative(),\n index: z.number().int().nonnegative()\n }).strict()\n);\nvar SeatProjectionBundleSchema = z.object({\n currentStage: z.string().nullable().optional(),\n stageSeats: z.array(z.string()).optional(),\n simultaneousPhase: z.unknown().nullable().optional(),\n guidance: GameGuidanceProjectionSchema.nullable().optional(),\n recentEvents: z.array(ProjectedGameEventSchema).optional(),\n interactionsByRef: z.record(z.string(), z.unknown()).optional(),\n seats: z.record(\n z.string(),\n z.object({\n view: z.unknown().optional(),\n availableInteractionRefs: z.array(z.string()).optional(),\n zones: z.unknown().optional()\n }).strict()\n )\n}).strict();\nvar PlayerIdSchema = z.string().min(1);\nvar PluginPlayerSummarySchema = z.object({\n playerId: PlayerIdSchema,\n displayName: z.string(),\n color: z.string().optional()\n}).strict();\nvar PluginSessionDescriptorSchema = z.object({\n sessionId: z.string().min(1),\n players: z.array(PluginPlayerSummarySchema)\n}).strict();\nvar InteractionCommitPolicySchema = z.discriminatedUnion(\"mode\", [\n z.object({ mode: z.literal(\"manual\") }).strict(),\n z.object({ mode: z.literal(\"autoWhenReady\") }).strict()\n]);\nvar InputSelectionSchema = z.discriminatedUnion(\"mode\", [\n z.object({ mode: z.literal(\"single\") }).strict(),\n z.object({\n mode: z.literal(\"many\"),\n min: z.number().int(),\n max: z.number().int().optional(),\n distinct: z.boolean().optional()\n }).strict()\n]);\nvar InputDomainDependencyCaseSchema = z.lazy(\n () => z.object({\n when: z.record(z.string(), z.string()),\n domain: InputDomainSchema\n }).strict()\n);\nvar InputDomainDependenciesSchema = z.discriminatedUnion(\"mode\", [\n z.object({\n mode: z.literal(\"eager\"),\n dependentCases: z.array(InputDomainDependencyCaseSchema)\n }).strict(),\n z.object({\n mode: z.literal(\"lazy\"),\n dependsOn: z.array(z.string()),\n resolver: z.object({\n interactionKey: z.string().optional(),\n inputKey: z.string()\n }).strict()\n }).strict()\n]);\nvar InputDomainSchema = z.object({\n type: z.string(),\n selection: InputSelectionSchema.optional(),\n dependencies: InputDomainDependenciesSchema.optional()\n}).catchall(RuntimeJsonSchema);\nvar InteractionChoiceOptionSchema = z.object({\n value: z.string().nullable(),\n label: z.string(),\n icon: z.string().optional(),\n badge: z.string().optional(),\n description: z.string().optional(),\n disabled: z.boolean().optional(),\n disabledReason: z.string().optional()\n}).strict();\nvar InteractionInputDescriptorSchema = z.object({\n key: z.string().min(1),\n kind: z.string().min(1),\n domain: InputDomainSchema,\n defaultValue: RuntimeJsonSchema.optional()\n}).strict();\nvar InteractionAvailabilitySchema = z.discriminatedUnion(\"status\", [\n z.object({ status: z.literal(\"available\") }).strict(),\n z.object({ status: z.literal(\"notYourTurn\"), reason: z.string() }).strict(),\n z.object({\n status: z.literal(\"insufficientResources\"),\n reason: z.string(),\n missingResources: z.record(z.string(), z.number().finite())\n }).strict(),\n z.object({\n status: z.literal(\"blocked\"),\n reason: z.string(),\n code: z.string().optional()\n }).strict()\n]);\nvar InteractionBaseSchema = z.object({\n phaseName: z.string().min(1),\n interactionKey: z.string().min(1),\n interactionId: z.string().min(1),\n label: z.string().min(1),\n help: z.string().optional(),\n zoneId: z.string().optional(),\n zoneIds: z.array(z.string()).optional(),\n commit: InteractionCommitPolicySchema,\n descriptorDigest: z.string().optional(),\n actorSeat: z.number().int().optional(),\n draftDigest: z.string().optional(),\n inputs: z.array(InteractionInputDescriptorSchema),\n cost: z.record(z.string(), RuntimeJsonSchema).optional(),\n currentResources: z.record(z.string(), RuntimeJsonSchema).optional(),\n availability: InteractionAvailabilitySchema,\n reasons: z.array(\n z.object({\n ruleId: z.string(),\n errorCode: z.string()\n }).strict()\n ).optional()\n}).strict();\nvar InteractionContextSchema = z.object({\n to: z.string().min(1),\n title: z.string().optional(),\n payload: z.record(z.string(), RuntimeJsonSchema).optional(),\n options: z.array(\n z.object({\n id: z.string(),\n label: z.string().optional()\n }).strict()\n ).optional()\n}).strict();\nvar InteractionDescriptorSchema = z.discriminatedUnion(\"kind\", [\n InteractionBaseSchema.extend({ kind: z.literal(\"action\") }).strict(),\n InteractionBaseSchema.extend({\n kind: z.literal(\"prompt\"),\n context: InteractionContextSchema\n }).strict()\n]);\nvar ZoneHandlesSnapshotSchema = z.object({\n cardIds: z.array(z.string()),\n cardViewsById: z.record(z.string(), z.string()),\n playableByCardId: z.record(\n z.string(),\n z.array(InteractionDescriptorSchema)\n )\n}).strict();\nvar SimultaneousPhaseSnapshotSchema = z.object({\n phaseName: z.string().min(1),\n interactionId: z.string().min(1),\n actorIds: z.array(PlayerIdSchema),\n sealedPlayerIds: z.array(PlayerIdSchema),\n pendingPlayerIds: z.array(PlayerIdSchema)\n}).strict();\nvar PluginGameplayFrameSchema = z.object({\n gameVersion: z.number().int().nonnegative(),\n actionSetVersion: z.string().min(1),\n perspectivePlayerId: PlayerIdSchema.nullable(),\n view: RuntimeJsonSchema.nullable(),\n flow: z.object({\n currentPhase: z.string().nullable(),\n currentStage: z.string().nullable(),\n activePlayers: z.array(PlayerIdSchema),\n simultaneousPhase: SimultaneousPhaseSnapshotSchema.nullable()\n }).strict(),\n availableInteractions: z.array(InteractionDescriptorSchema),\n guidance: GameGuidanceProjectionSchema.nullable().optional(),\n recentEvents: z.array(ProjectedGameEventSchema),\n zones: z.record(z.string(), ZoneHandlesSnapshotSchema)\n}).strict();\nvar ValidationResultSchema = z.object({\n valid: z.boolean(),\n errorCode: z.string().optional(),\n message: z.string().optional()\n}).strict();\nvar SubmissionResultSchema = z.discriminatedUnion(\"accepted\", [\n z.object({ accepted: z.literal(true) }).strict(),\n z.object({\n accepted: z.literal(false),\n errorCode: z.string().min(1),\n message: z.string().optional()\n }).strict()\n]);\nvar PluginInteractionBasisSchema = z.object({\n gameVersion: z.number().int().nonnegative(),\n actionSetVersion: z.string().min(1),\n perspectivePlayerId: PlayerIdSchema.nullable()\n}).strict();\nvar ValidateInteractionCommandSchema = z.object({\n type: z.literal(\"interaction.validate\"),\n requestId: z.string().min(1),\n basis: PluginInteractionBasisSchema,\n interactionId: z.string().min(1),\n params: RuntimeJsonSchema\n}).strict();\nvar SubmitInteractionCommandSchema = z.object({\n type: z.literal(\"interaction.submit\"),\n requestId: z.string().min(1),\n basis: PluginInteractionBasisSchema,\n interactionId: z.string().min(1),\n params: RuntimeJsonSchema\n}).strict();\nvar HostToPluginPayloadSchema = z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"runtime.init\"),\n session: PluginSessionDescriptorSchema\n }).strict(),\n z.object({\n type: z.literal(\"gameplay.frame\"),\n frame: PluginGameplayFrameSchema\n }).strict(),\n z.object({\n type: z.literal(\"interaction.validation-result\"),\n requestId: z.string().min(1),\n result: ValidationResultSchema\n }).strict(),\n z.object({\n type: z.literal(\"interaction.submit-result\"),\n requestId: z.string().min(1),\n result: SubmissionResultSchema\n }).strict()\n]);\nvar PluginToHostPayloadSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"runtime.ready\") }).strict(),\n z.object({\n type: z.literal(\"runtime.ack\"),\n sequence: z.number().int().nonnegative(),\n clientReceivedAtMs: z.number().finite().optional(),\n clientRenderedAtMs: z.number().finite().optional()\n }).strict(),\n ValidateInteractionCommandSchema,\n SubmitInteractionCommandSchema,\n z.object({\n type: z.literal(\"runtime.error\"),\n message: z.string(),\n code: z.string().optional()\n }).strict()\n]);\nfunction createPluginProtocolEnvelopeSchema(payloadSchema) {\n return z.object({\n protocol: z.literal(DREAMBOARD_PLUGIN_PROTOCOL),\n version: z.literal(DREAMBOARD_PLUGIN_PROTOCOL_VERSION),\n channelId: z.string().min(1),\n sequence: z.number().int().nonnegative(),\n payload: payloadSchema\n }).strict();\n}\nvar HostToPluginEnvelopeSchema = createPluginProtocolEnvelopeSchema(\n HostToPluginPayloadSchema\n);\nvar PluginToHostEnvelopeSchema = createPluginProtocolEnvelopeSchema(\n PluginToHostPayloadSchema\n);\nvar PluginProtocolFrameSchema = z.object({\n id: z.string().min(1),\n frame: PluginGameplayFrameSchema,\n projectionDigest: z.string().regex(/^sha256:[a-f0-9]{64}$/)\n}).strict();\nvar PluginProtocolStepSchema = z.discriminatedUnion(\"kind\", [\n z.object({\n id: z.string().min(1),\n kind: z.literal(\"host.frame\"),\n frameId: z.string().min(1)\n }).strict(),\n z.object({\n id: z.string().min(1),\n kind: z.literal(\"client.validate\"),\n fromFrameId: z.string().min(1),\n requestDigest: z.string().regex(/^sha256:[a-f0-9]{64}$/),\n response: ValidationResultSchema\n }).strict(),\n z.object({\n id: z.string().min(1),\n kind: z.literal(\"client.submit\"),\n fromFrameId: z.string().min(1),\n requestDigest: z.string().regex(/^sha256:[a-f0-9]{64}$/),\n response: SubmissionResultSchema\n }).strict()\n]);\nvar PluginProtocolTapeSchema = z.object({\n session: PluginSessionDescriptorSchema,\n frames: z.array(PluginProtocolFrameSchema),\n steps: z.array(PluginProtocolStepSchema)\n}).strict();\nfunction parsePluginSessionDescriptor(value) {\n return PluginSessionDescriptorSchema.parse(value);\n}\nfunction parsePluginGameplayFrame(value) {\n return PluginGameplayFrameSchema.parse(value);\n}\nfunction parseHostToPluginEnvelope(value) {\n return HostToPluginEnvelopeSchema.parse(value);\n}\nfunction parsePluginToHostEnvelope(value) {\n return PluginToHostEnvelopeSchema.parse(value);\n}\n\nexport {\n DREAMBOARD_PLUGIN_PROTOCOL,\n DREAMBOARD_PLUGIN_PROTOCOL_VERSION,\n RuntimeJsonSchema,\n BoardStaticProjectionSchema,\n SetupGuidanceStepSchema,\n GameGuidanceProjectionSchema,\n GameEventDetailSchema,\n SystemActionEventSchema,\n GameEventSchema,\n ProjectedGameEventSchema,\n SeatProjectionBundleSchema,\n PlayerIdSchema,\n PluginPlayerSummarySchema,\n PluginSessionDescriptorSchema,\n InteractionCommitPolicySchema,\n InputSelectionSchema,\n InputDomainDependenciesSchema,\n InputDomainSchema,\n InteractionChoiceOptionSchema,\n InteractionInputDescriptorSchema,\n InteractionAvailabilitySchema,\n InteractionContextSchema,\n InteractionDescriptorSchema,\n ZoneHandlesSnapshotSchema,\n SimultaneousPhaseSnapshotSchema,\n PluginGameplayFrameSchema,\n ValidationResultSchema,\n SubmissionResultSchema,\n PluginInteractionBasisSchema,\n ValidateInteractionCommandSchema,\n SubmitInteractionCommandSchema,\n HostToPluginPayloadSchema,\n PluginToHostPayloadSchema,\n createPluginProtocolEnvelopeSchema,\n HostToPluginEnvelopeSchema,\n PluginToHostEnvelopeSchema,\n PluginProtocolFrameSchema,\n PluginProtocolStepSchema,\n PluginProtocolTapeSchema,\n parsePluginSessionDescriptor,\n parsePluginGameplayFrame,\n parseHostToPluginEnvelope,\n parsePluginToHostEnvelope\n};\n","import {\n canonicalizePluginRuntimeJson,\n computePluginActionSetVersion,\n digestPluginCommandRequest,\n digestPluginGameplayFrame,\n digestPluginRuntimeJson,\n encodeCanonicalPluginRuntimeJson\n} from \"./chunk-GX5V4QL7.js\";\nimport {\n BoardStaticProjectionSchema,\n DREAMBOARD_PLUGIN_PROTOCOL,\n DREAMBOARD_PLUGIN_PROTOCOL_VERSION,\n GameEventDetailSchema,\n GameEventSchema,\n HostToPluginEnvelopeSchema,\n HostToPluginPayloadSchema,\n InputDomainDependenciesSchema,\n InputDomainSchema,\n InteractionAvailabilitySchema,\n InteractionCommitPolicySchema,\n InteractionContextSchema,\n InteractionDescriptorSchema,\n InteractionInputDescriptorSchema,\n PluginGameplayFrameSchema,\n PluginInteractionBasisSchema,\n PluginPlayerSummarySchema,\n PluginProtocolFrameSchema,\n PluginProtocolStepSchema,\n PluginProtocolTapeSchema,\n PluginSessionDescriptorSchema,\n PluginToHostEnvelopeSchema,\n PluginToHostPayloadSchema,\n ProjectedGameEventSchema,\n RuntimeJsonSchema,\n SeatProjectionBundleSchema,\n SimultaneousPhaseSnapshotSchema,\n SubmissionResultSchema,\n SubmitInteractionCommandSchema,\n SystemActionEventSchema,\n ValidateInteractionCommandSchema,\n ValidationResultSchema,\n ZoneHandlesSnapshotSchema,\n createPluginProtocolEnvelopeSchema,\n parseHostToPluginEnvelope,\n parsePluginGameplayFrame,\n parsePluginSessionDescriptor,\n parsePluginToHostEnvelope\n} from \"./chunk-E4Y6SAWF.js\";\n\n// src/projection.ts\nfunction materializePluginGameplayFrame(input) {\n const dynamicProjection = SeatProjectionBundleSchema.parse(\n canonicalizeReducerProjection(input.dynamicProjection)\n );\n const staticProjection = input.staticProjection == null ? null : BoardStaticProjectionSchema.parse(\n canonicalizeReducerProjection(input.staticProjection)\n );\n const registry = parseInteractionRegistry(\n dynamicProjection.interactionsByRef\n );\n const seat = input.perspectivePlayerId == null ? null : dynamicProjection.seats[input.perspectivePlayerId] ?? null;\n const availableInteractions = seat == null ? [] : hydrateInteractionRefs(\n registry,\n seat.availableInteractionRefs,\n \"availableInteractionRefs\"\n );\n const zones = seat?.zones == null ? {} : hydrateZones(registry, seat.zones, \"zones\");\n const frame = {\n gameVersion: input.gameVersion,\n actionSetVersion: input.actionSetVersion,\n perspectivePlayerId: input.perspectivePlayerId,\n view: composeProjectionView(staticProjection, seat?.view),\n flow: {\n currentPhase: input.currentPhase,\n currentStage: dynamicProjection.currentStage ?? null,\n activePlayers: [...input.activePlayers],\n simultaneousPhase: dynamicProjection.simultaneousPhase ?? null\n },\n availableInteractions,\n guidance: dynamicProjection.guidance ?? null,\n recentEvents: [...dynamicProjection.recentEvents ?? []],\n zones\n };\n return PluginGameplayFrameSchema.parse(frame);\n}\nfunction canonicalizeReducerProjection(value) {\n return canonicalizePluginRuntimeJson(value);\n}\nfunction parseInteractionRegistry(value) {\n if (value == null) return {};\n if (!isRecord(value)) {\n throw new Error(\"Seat projection interactionsByRef must be an object.\");\n }\n return Object.fromEntries(\n Object.entries(value).map(([ref, descriptor]) => [\n ref,\n InteractionDescriptorSchema.parse(descriptor)\n ])\n );\n}\nfunction hydrateZones(registry, value, path) {\n if (!isRecord(value)) {\n throw new Error(`Seat projection ${path} must be an object.`);\n }\n return Object.fromEntries(\n Object.entries(value).map(([zoneId, zoneValue]) => [\n zoneId,\n hydrateZone(registry, zoneValue, `${path}.${zoneId}`)\n ])\n );\n}\nfunction hydrateZone(registry, value, path) {\n if (!isRecord(value)) {\n throw new Error(`Seat projection ${path} must be an object.`);\n }\n const cardIds = arrayOfStrings(value.cardIds, `${path}.cardIds`);\n const cardViewsById = stringRecord(\n value.cardViewsById,\n `${path}.cardViewsById`\n );\n if (!isRecord(value.playableByCardId)) {\n throw new Error(\n `Seat projection ${path}.playableByCardId must be an object.`\n );\n }\n const playableByCardId = Object.fromEntries(\n Object.entries(value.playableByCardId).map(([cardId, refs]) => [\n cardId,\n hydrateInteractionRefs(\n registry,\n refs,\n `${path}.playableByCardId.${cardId}`\n )\n ])\n );\n return ZoneHandlesSnapshotSchema.parse({\n cardIds,\n cardViewsById,\n playableByCardId\n });\n}\nfunction hydrateInteractionRefs(registry, value, path) {\n if (!Array.isArray(value)) {\n throw new Error(`Seat projection ${path} must be an array of refs.`);\n }\n return value.map((ref, index) => {\n if (typeof ref !== \"string\") {\n throw new Error(\n `Seat projection ${path}[${index}] must be a ref string.`\n );\n }\n const descriptor = registry[ref];\n if (!descriptor) {\n throw new Error(\n `Seat projection ${path}[${index}] references '${ref}', which is missing from interactionsByRef.`\n );\n }\n return descriptor;\n });\n}\nfunction composeProjectionView(staticProjection, dynamicView) {\n const normalizedDynamicView = dynamicView === void 0 ? null : dynamicView;\n if (staticProjection == null) {\n return normalizedDynamicView;\n }\n if (normalizedDynamicView == null) {\n return staticProjection.view;\n }\n if (isRecord(staticProjection.view) && isRecord(normalizedDynamicView)) {\n return {\n ...staticProjection.view,\n ...normalizedDynamicView\n };\n }\n return {\n static: staticProjection.view,\n dynamic: normalizedDynamicView\n };\n}\nfunction arrayOfStrings(value, path) {\n if (!Array.isArray(value) || value.some((item) => typeof item !== \"string\")) {\n throw new Error(`Seat projection ${path} must be an array of strings.`);\n }\n return value;\n}\nfunction stringRecord(value, path) {\n if (!isRecord(value)) {\n throw new Error(`Seat projection ${path} must be an object.`);\n }\n const result = {};\n for (const [key, item] of Object.entries(value)) {\n if (typeof item !== \"string\") {\n throw new Error(`Seat projection ${path}.${key} must be a string.`);\n }\n result[key] = item;\n }\n return result;\n}\nfunction isRecord(value) {\n return value !== null && typeof value === \"object\" && !Array.isArray(value) && (Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null);\n}\nexport {\n BoardStaticProjectionSchema,\n DREAMBOARD_PLUGIN_PROTOCOL,\n DREAMBOARD_PLUGIN_PROTOCOL_VERSION,\n GameEventDetailSchema,\n GameEventSchema,\n HostToPluginEnvelopeSchema,\n HostToPluginPayloadSchema,\n InputDomainDependenciesSchema,\n InputDomainSchema,\n InteractionAvailabilitySchema,\n InteractionCommitPolicySchema,\n InteractionContextSchema,\n InteractionDescriptorSchema,\n InteractionInputDescriptorSchema,\n PluginGameplayFrameSchema,\n PluginInteractionBasisSchema,\n PluginPlayerSummarySchema,\n PluginProtocolFrameSchema,\n PluginProtocolStepSchema,\n PluginProtocolTapeSchema,\n PluginSessionDescriptorSchema,\n PluginToHostEnvelopeSchema,\n PluginToHostPayloadSchema,\n ProjectedGameEventSchema,\n RuntimeJsonSchema,\n SeatProjectionBundleSchema,\n SimultaneousPhaseSnapshotSchema,\n SubmissionResultSchema,\n SubmitInteractionCommandSchema,\n SystemActionEventSchema,\n ValidateInteractionCommandSchema,\n ValidationResultSchema,\n ZoneHandlesSnapshotSchema,\n canonicalizePluginRuntimeJson,\n computePluginActionSetVersion,\n createPluginProtocolEnvelopeSchema,\n digestPluginCommandRequest,\n digestPluginGameplayFrame,\n digestPluginRuntimeJson,\n encodeCanonicalPluginRuntimeJson,\n materializePluginGameplayFrame,\n parseHostToPluginEnvelope,\n parsePluginGameplayFrame,\n parsePluginSessionDescriptor,\n parsePluginToHostEnvelope\n};\n"],"mappings":"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","names":[]}
|