@dreamboard-games/sdk 0.2.1-alpha.0 → 0.3.0-alpha.1

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 (363) hide show
  1. package/dist/{HandView-ncJIVLhN.d.ts → HandView-PYDmehVD.d.ts} +1 -1
  2. package/dist/{ResourceCounter-CTREyF73.d.ts → ResourceCounter-BTXklCEZ.d.ts} +1 -1
  3. package/dist/{ThemeProvider-fy0_QzgO.d.ts → ThemeProvider-DvMl17Ny.d.ts} +1 -1
  4. package/dist/attributes-BeRyboMS.d.ts +279 -0
  5. package/dist/browser-interaction.d.ts +708 -0
  6. package/dist/browser-interaction.js +106 -0
  7. package/dist/{chunk-KAELH4KC.js → chunk-3RQEICD3.js} +2 -2
  8. package/dist/{chunk-TDSWKVZ4.js → chunk-ADYH6PVT.js} +2457 -1265
  9. package/dist/chunk-ADYH6PVT.js.map +1 -0
  10. package/dist/{chunk-YFY3RL52.js → chunk-P7VMTJ5D.js} +2 -2
  11. package/dist/{chunk-YFY3RL52.js.map → chunk-P7VMTJ5D.js.map} +1 -1
  12. package/dist/chunk-QLG6VEMW.js +1691 -0
  13. package/dist/chunk-QLG6VEMW.js.map +1 -0
  14. package/dist/{chunk-WYPQ3GG5.js → chunk-QZ6X4B5P.js} +1177 -1106
  15. package/dist/chunk-QZ6X4B5P.js.map +1 -0
  16. package/dist/{chunk-GKKBPPSW.js → chunk-TXXLS3OI.js} +405 -309
  17. package/dist/chunk-TXXLS3OI.js.map +1 -0
  18. package/dist/{chunk-FDNZTDD6.js → chunk-W6SGFWXH.js} +48 -44
  19. package/dist/chunk-W6SGFWXH.js.map +1 -0
  20. package/dist/{chunk-MKXPVOUT.js → chunk-Y2AFYBMB.js} +48 -4
  21. package/dist/chunk-Y2AFYBMB.js.map +1 -0
  22. package/dist/{index-BwqPQtBu.d.ts → codegen.d.ts} +57 -565
  23. package/dist/{infrastructure/workspace-codegen.js → codegen.js} +3 -3
  24. package/dist/{components-D5ZRE2Hl.d.ts → components-DaIqi9QM.d.ts} +48 -37
  25. package/dist/{hex-board-view-D_07hO6O.d.ts → hex-board-view-UCUjMALd.d.ts} +3 -2
  26. package/dist/{infrastructure/reducer-bundle-abi.d.ts → index.d-BGqVifr_.d.ts} +289 -10
  27. package/dist/index.js +1 -1
  28. package/dist/package-set.d.ts +2 -2
  29. package/dist/package-set.js +1 -1
  30. package/dist/primitive-props-BNHDkgd7.d.ts +16 -0
  31. package/dist/reducer-contract.d.ts +3 -0
  32. package/dist/{infrastructure/reducer-bundle-abi.js → reducer-contract.js} +4 -4
  33. package/dist/reducer.d.ts +185 -179
  34. package/dist/reducer.js +1637 -1353
  35. package/dist/reducer.js.map +1 -1
  36. package/dist/runtime/primitives.d.ts +10 -9
  37. package/dist/runtime/primitives.js +8 -7
  38. package/dist/runtime/runtime-api.d.ts +2 -0
  39. package/dist/runtime/runtime-api.js +1 -0
  40. package/dist/runtime/workspace-contract.d.ts +63 -17
  41. package/dist/runtime/workspace-contract.js +5 -5
  42. package/dist/{runtime-api-DWxvTr-O.d.ts → runtime-api-tGL3ArsB.d.ts} +109 -4
  43. package/dist/runtime.d.ts +12 -57
  44. package/dist/runtime.js +487 -7
  45. package/dist/runtime.js.map +1 -1
  46. package/dist/testing.d.ts +4 -4
  47. package/dist/testing.js.map +1 -1
  48. package/dist/types.d.ts +1531 -85
  49. package/dist/types.js +1 -3
  50. package/dist/types.js.map +1 -1
  51. package/dist/ui/components.d.ts +7 -8
  52. package/dist/ui/components.js +1 -1
  53. package/dist/ui/defaults.d.ts +1 -1
  54. package/dist/ui/{types/player-state.d.ts → player-state.d.ts} +2 -2
  55. package/dist/{ui-contract-iQfTtUSL.d.ts → ui-contract-SctM4ibF.d.ts} +157 -150
  56. package/dist/ui.d.ts +10 -11
  57. package/dist/ui.js +2 -2
  58. package/package.json +35 -74
  59. package/dist/bundle-CDd5FKeD.d.ts +0 -283
  60. package/dist/cards-Sl3b40Mv.d.ts +0 -13
  61. package/dist/chunk-7YAHLYBR.js +0 -481
  62. package/dist/chunk-7YAHLYBR.js.map +0 -1
  63. package/dist/chunk-FDNZTDD6.js.map +0 -1
  64. package/dist/chunk-GKKBPPSW.js.map +0 -1
  65. package/dist/chunk-I46YJSOD.js +0 -1
  66. package/dist/chunk-MKXPVOUT.js.map +0 -1
  67. package/dist/chunk-T52J5RMF.js +0 -1
  68. package/dist/chunk-TDSWKVZ4.js.map +0 -1
  69. package/dist/chunk-U5C6BONG.js +0 -34
  70. package/dist/chunk-U5C6BONG.js.map +0 -1
  71. package/dist/chunk-WYPQ3GG5.js.map +0 -1
  72. package/dist/generated/runtime/primitives.d.ts +0 -12
  73. package/dist/generated/runtime/primitives.js +0 -180
  74. package/dist/generated/runtime/primitives.js.map +0 -1
  75. package/dist/generated/runtime-api.d.ts +0 -3
  76. package/dist/generated/runtime-api.js +0 -2
  77. package/dist/generated/runtime.d.ts +0 -14
  78. package/dist/generated/runtime.js +0 -18
  79. package/dist/generated/runtime.js.map +0 -1
  80. package/dist/generated/workspace-contract.d.ts +0 -14
  81. package/dist/generated/workspace-contract.js +0 -14
  82. package/dist/generated/workspace-contract.js.map +0 -1
  83. package/dist/infrastructure/reducer-bundle-abi.js.map +0 -1
  84. package/dist/infrastructure/workspace-codegen.d.ts +0 -53
  85. package/dist/infrastructure/workspace-codegen.js.map +0 -1
  86. package/dist/manifest-contract-BNHVGFtU.d.ts +0 -9
  87. package/dist/primitive-props-DpKs-GCr.d.ts +0 -11
  88. package/dist/runtime/types/runtime-api.d.ts +0 -1
  89. package/dist/runtime/types/runtime-api.js +0 -2
  90. package/dist/runtime-api-3dshj6kK.d.ts +0 -101
  91. package/dist/slots-1GPGihk8.d.ts +0 -8
  92. package/src/generated/reducer-contract/builders.ts +0 -90
  93. package/src/generated/reducer-contract/version.ts +0 -9
  94. package/src/generated/reducer-contract/wire.ts +0 -100
  95. package/src/generated/reducer-contract/zod.ts +0 -103
  96. package/src/generated/runtime/primitives.ts +0 -2
  97. package/src/generated/runtime-api.ts +0 -5
  98. package/src/generated/runtime.ts +0 -35
  99. package/src/generated/workspace-contract.ts +0 -2
  100. package/src/index.ts +0 -7
  101. package/src/infrastructure/reducer-bundle-abi.ts +0 -8
  102. package/src/infrastructure/reducer-contract/bundle.ts +0 -37
  103. package/src/infrastructure/workspace-codegen/hex-geometry.ts +0 -69
  104. package/src/infrastructure/workspace-codegen/index.ts +0 -64
  105. package/src/infrastructure/workspace-codegen/manifest-contract.ts +0 -6632
  106. package/src/infrastructure/workspace-codegen/manifest-validation.ts +0 -795
  107. package/src/infrastructure/workspace-codegen/ownership.ts +0 -131
  108. package/src/infrastructure/workspace-codegen/preset-card-sets.ts +0 -169
  109. package/src/infrastructure/workspace-codegen/seeds.ts +0 -1705
  110. package/src/infrastructure/workspace-codegen.ts +0 -1
  111. package/src/package-set.ts +0 -19
  112. package/src/reducer/authoring/contract.ts +0 -157
  113. package/src/reducer/authoring/effect.ts +0 -224
  114. package/src/reducer/authoring/game.ts +0 -23
  115. package/src/reducer/authoring/interaction.ts +0 -98
  116. package/src/reducer/authoring/phase.ts +0 -300
  117. package/src/reducer/authoring/types.ts +0 -70
  118. package/src/reducer/authoring/validation.ts +0 -382
  119. package/src/reducer/authoring/view-stage.ts +0 -68
  120. package/src/reducer/authoring.ts +0 -29
  121. package/src/reducer/bundle/ingress-bundle.ts +0 -491
  122. package/src/reducer/bundle/trusted/engine-instruction-resolver.ts +0 -254
  123. package/src/reducer/bundle/trusted/flow-instruction-resolver.ts +0 -73
  124. package/src/reducer/bundle/trusted/instruction-runner.ts +0 -414
  125. package/src/reducer/bundle/trusted/interaction-authorization.ts +0 -137
  126. package/src/reducer/bundle/trusted/interaction-collectors.ts +0 -859
  127. package/src/reducer/bundle/trusted/interaction-decision.ts +0 -747
  128. package/src/reducer/bundle/trusted/interaction-resolver.ts +0 -95
  129. package/src/reducer/bundle/trusted/interaction-types.ts +0 -171
  130. package/src/reducer/bundle/trusted/lifecycle-runner.ts +0 -427
  131. package/src/reducer/bundle/trusted/projection-builder.ts +0 -356
  132. package/src/reducer/bundle/trusted/projection-context.ts +0 -39
  133. package/src/reducer/bundle/trusted/rng-sampler.ts +0 -150
  134. package/src/reducer/bundle/trusted/runtime-registry.ts +0 -120
  135. package/src/reducer/bundle/trusted/runtime-scope.ts +0 -336
  136. package/src/reducer/bundle/trusted/simultaneous-player.ts +0 -97
  137. package/src/reducer/bundle/trusted/stage-resolver.ts +0 -87
  138. package/src/reducer/bundle/trusted/static-projection.ts +0 -116
  139. package/src/reducer/bundle/trusted/trusted-runtime-args.ts +0 -97
  140. package/src/reducer/bundle/trusted/trusted-runtime-result.ts +0 -39
  141. package/src/reducer/bundle/trusted/trusted-setup-profiles.ts +0 -43
  142. package/src/reducer/bundle/trusted/trusted-state-codec.ts +0 -48
  143. package/src/reducer/bundle/trusted-bundle.ts +0 -97
  144. package/src/reducer/bundle/types.ts +0 -171
  145. package/src/reducer/bundle.ts +0 -2
  146. package/src/reducer/client-param-schemas.ts +0 -57
  147. package/src/reducer/compose.ts +0 -34
  148. package/src/reducer/core/runtime-input.ts +0 -30
  149. package/src/reducer/core/runtime-instruction.ts +0 -59
  150. package/src/reducer/core/types.ts +0 -62
  151. package/src/reducer/definition-index.ts +0 -277
  152. package/src/reducer/derived.ts +0 -106
  153. package/src/reducer/effects.ts +0 -92
  154. package/src/reducer/engine/runtime-instruction-engine.ts +0 -155
  155. package/src/reducer/ingress/decode-runtime-input.ts +0 -7
  156. package/src/reducer/ingress/decode-session-state.ts +0 -9
  157. package/src/reducer/ingress/encode-session-state.ts +0 -6
  158. package/src/reducer/ingress/input-codec.ts +0 -18
  159. package/src/reducer/ingress/phase-schemas.ts +0 -62
  160. package/src/reducer/ingress/raw-types.ts +0 -107
  161. package/src/reducer/ingress/runtime-codec.ts +0 -14
  162. package/src/reducer/ingress/runtime-payload.ts +0 -13
  163. package/src/reducer/ingress/session-codec.ts +0 -392
  164. package/src/reducer/ingress/types.ts +0 -6
  165. package/src/reducer/inputs/boardInput.ts +0 -217
  166. package/src/reducer/inputs/boardTarget.ts +0 -190
  167. package/src/reducer/inputs/cardInput.ts +0 -86
  168. package/src/reducer/inputs/cardTarget.ts +0 -101
  169. package/src/reducer/inputs/choiceTarget.ts +0 -104
  170. package/src/reducer/inputs/defineInputs.ts +0 -71
  171. package/src/reducer/inputs/formInput.ts +0 -809
  172. package/src/reducer/inputs/many.ts +0 -120
  173. package/src/reducer/inputs/promptInput.ts +0 -87
  174. package/src/reducer/inputs/rngInput.ts +0 -58
  175. package/src/reducer/inputs/targetRule.ts +0 -123
  176. package/src/reducer/inputs.ts +0 -41
  177. package/src/reducer/model/definition.ts +0 -1072
  178. package/src/reducer/model/extract.ts +0 -745
  179. package/src/reducer/model/manifest.ts +0 -570
  180. package/src/reducer/model/queries.ts +0 -641
  181. package/src/reducer/model/runtime.ts +0 -264
  182. package/src/reducer/model/spec.ts +0 -1386
  183. package/src/reducer/model/table.ts +0 -260
  184. package/src/reducer/model.ts +0 -7
  185. package/src/reducer/ops.ts +0 -1034
  186. package/src/reducer/parse-utils.ts +0 -28
  187. package/src/reducer/per-player.ts +0 -422
  188. package/src/reducer/rng.ts +0 -69
  189. package/src/reducer/schema-helpers.ts +0 -185
  190. package/src/reducer/setup-bootstrap-helpers.ts +0 -171
  191. package/src/reducer/setup-bootstrap.ts +0 -481
  192. package/src/reducer/table-ops.ts +0 -2671
  193. package/src/reducer/table-queries.ts +0 -372
  194. package/src/reducer/transaction.ts +0 -120
  195. package/src/reducer.ts +0 -314
  196. package/src/runtime/primitives.ts +0 -1
  197. package/src/runtime/types/runtime-api.ts +0 -1
  198. package/src/runtime/workspace-contract.ts +0 -32
  199. package/src/runtime-internal/components/InteractionForm.tsx +0 -1309
  200. package/src/runtime-internal/components/PluginRuntime.tsx +0 -103
  201. package/src/runtime-internal/components/board/target-layer.ts +0 -70
  202. package/src/runtime-internal/context/ClientParamSchemaContext.tsx +0 -44
  203. package/src/runtime-internal/context/InteractionDraftContext.tsx +0 -279
  204. package/src/runtime-internal/context/PluginSessionContext.tsx +0 -47
  205. package/src/runtime-internal/context/PluginStateContext.tsx +0 -262
  206. package/src/runtime-internal/context/RuntimeContext.tsx +0 -96
  207. package/src/runtime-internal/defaults/components.tsx +0 -409
  208. package/src/runtime-internal/defaults/index.ts +0 -11
  209. package/src/runtime-internal/errors/ValidationError.ts +0 -29
  210. package/src/runtime-internal/hooks/useActivePlayers.ts +0 -33
  211. package/src/runtime-internal/hooks/useBoardInteractions.ts +0 -665
  212. package/src/runtime-internal/hooks/useGameSelector.ts +0 -105
  213. package/src/runtime-internal/hooks/useGameView.ts +0 -9
  214. package/src/runtime-internal/hooks/useInteractionByKey.ts +0 -354
  215. package/src/runtime-internal/hooks/useInteractionHandle.ts +0 -438
  216. package/src/runtime-internal/hooks/useIsMyTurn.ts +0 -20
  217. package/src/runtime-internal/hooks/useLobby.ts +0 -76
  218. package/src/runtime-internal/hooks/useMe.ts +0 -48
  219. package/src/runtime-internal/hooks/usePlayerInfo.ts +0 -28
  220. package/src/runtime-internal/hooks/usePlayerTurnOrder.ts +0 -23
  221. package/src/runtime-internal/hooks/usePluginRuntime.ts +0 -147
  222. package/src/runtime-internal/hooks/useSeatInbox.ts +0 -61
  223. package/src/runtime-internal/hooks/useSimultaneousPhase.ts +0 -10
  224. package/src/runtime-internal/index.ts +0 -42
  225. package/src/runtime-internal/internal.ts +0 -43
  226. package/src/runtime-internal/plugin-styles.css +0 -250
  227. package/src/runtime-internal/primitives/board.tsx +0 -459
  228. package/src/runtime-internal/primitives/dialog-lifecycle.ts +0 -58
  229. package/src/runtime-internal/primitives/dice.tsx +0 -79
  230. package/src/runtime-internal/primitives/game-ui-provider.tsx +0 -35
  231. package/src/runtime-internal/primitives/game.tsx +0 -387
  232. package/src/runtime-internal/primitives/hand-intent-adapter.ts +0 -147
  233. package/src/runtime-internal/primitives/hand-surface.tsx +0 -594
  234. package/src/runtime-internal/primitives/index.ts +0 -196
  235. package/src/runtime-internal/primitives/interaction-form-binding.tsx +0 -56
  236. package/src/runtime-internal/primitives/interaction-submit.ts +0 -90
  237. package/src/runtime-internal/primitives/interaction.tsx +0 -987
  238. package/src/runtime-internal/primitives/phase.tsx +0 -43
  239. package/src/runtime-internal/primitives/player-roster.tsx +0 -302
  240. package/src/runtime-internal/primitives/primitive-props.tsx +0 -101
  241. package/src/runtime-internal/primitives/prompt.tsx +0 -255
  242. package/src/runtime-internal/primitives/ui.tsx +0 -60
  243. package/src/runtime-internal/primitives/zone.tsx +0 -791
  244. package/src/runtime-internal/reducer.ts +0 -30
  245. package/src/runtime-internal/runtime/createPluginRuntimeAPI.ts +0 -605
  246. package/src/runtime-internal/types/plugin-state.ts +0 -508
  247. package/src/runtime-internal/types/reducer-state.ts +0 -24
  248. package/src/runtime-internal/types/runtime-api.ts +0 -114
  249. package/src/runtime-internal/ui-contract.ts +0 -519
  250. package/src/runtime-internal/utils/card-intent-adapter.ts +0 -546
  251. package/src/runtime-internal/utils/interaction-inputs.ts +0 -492
  252. package/src/runtime-internal/utils/interaction-labels.ts +0 -23
  253. package/src/runtime-internal/utils/interaction-router.ts +0 -273
  254. package/src/runtime-internal/utils/interaction-status.ts +0 -74
  255. package/src/runtime-internal/workspace-contract.ts +0 -1170
  256. package/src/runtime.ts +0 -34
  257. package/src/testing/create-expect-api.ts +0 -352
  258. package/src/testing/create-test-runtime.ts +0 -381
  259. package/src/testing/definitions.ts +0 -127
  260. package/src/testing/index.ts +0 -3
  261. package/src/testing.ts +0 -1
  262. package/src/type-stubs/manifest-contract.d.ts +0 -42
  263. package/src/type-stubs/manifest-contract.js +0 -72
  264. package/src/type-stubs/ui-contract.d.ts +0 -5
  265. package/src/type-stubs/ui-contract.js +0 -1
  266. package/src/types/authoring-card-properties.type-test.ts +0 -266
  267. package/src/types/authoring.ts +0 -1282
  268. package/src/types/cards.ts +0 -19
  269. package/src/types/contracts.ts +0 -1550
  270. package/src/types/generated-helpers.ts +0 -35
  271. package/src/types/index.ts +0 -147
  272. package/src/types/slots.ts +0 -11
  273. package/src/types.ts +0 -1
  274. package/src/ui/components/ActionButton.tsx +0 -97
  275. package/src/ui/components/ActionPanel.tsx +0 -315
  276. package/src/ui/components/Card.tsx +0 -378
  277. package/src/ui/components/CardDragSurface.tsx +0 -1076
  278. package/src/ui/components/ChromeSuppressionContext.tsx +0 -70
  279. package/src/ui/components/CostDisplay.tsx +0 -145
  280. package/src/ui/components/DiceRoller.tsx +0 -581
  281. package/src/ui/components/Drawer.tsx +0 -180
  282. package/src/ui/components/ErrorBoundary.tsx +0 -275
  283. package/src/ui/components/GameEndDisplay.tsx +0 -398
  284. package/src/ui/components/GameSkeleton.tsx +0 -260
  285. package/src/ui/components/Hand.tsx +0 -468
  286. package/src/ui/components/HandDock.tsx +0 -299
  287. package/src/ui/components/HandView.tsx +0 -441
  288. package/src/ui/components/MobileHandTray.tsx +0 -381
  289. package/src/ui/components/MoreActions.tsx +0 -143
  290. package/src/ui/components/PhaseIndicator.tsx +0 -341
  291. package/src/ui/components/PlayArea.tsx +0 -146
  292. package/src/ui/components/PrimaryActionButton.tsx +0 -336
  293. package/src/ui/components/PrimaryButton.tsx +0 -45
  294. package/src/ui/components/ResourceCounter.tsx +0 -270
  295. package/src/ui/components/StagingZone.tsx +0 -134
  296. package/src/ui/components/ThemedButton.tsx +0 -113
  297. package/src/ui/components/Toast.tsx +0 -264
  298. package/src/ui/components/board/HexGrid.tsx +0 -1294
  299. package/src/ui/components/board/NetworkGraph.tsx +0 -476
  300. package/src/ui/components/board/SlotSystem.tsx +0 -388
  301. package/src/ui/components/board/SquareGrid.tsx +0 -1165
  302. package/src/ui/components/board/TrackBoard.tsx +0 -496
  303. package/src/ui/components/board/ZoneMap.tsx +0 -448
  304. package/src/ui/components/board/hex-board-view.ts +0 -123
  305. package/src/ui/components/board/index.ts +0 -142
  306. package/src/ui/components/board/interaction-accessibility.ts +0 -21
  307. package/src/ui/components/board/target-layer.ts +0 -66
  308. package/src/ui/components/card-render-content.type-test.ts +0 -27
  309. package/src/ui/components/hand-layout-math.ts +0 -163
  310. package/src/ui/components/hand-pointer-engine.ts +0 -413
  311. package/src/ui/components/index.ts +0 -245
  312. package/src/ui/components.ts +0 -1
  313. package/src/ui/defaults/components.tsx +0 -106
  314. package/src/ui/defaults/index.ts +0 -8
  315. package/src/ui/defaults.ts +0 -1
  316. package/src/ui/errors/ValidationError.ts +0 -29
  317. package/src/ui/helpers/cards.ts +0 -19
  318. package/src/ui/helpers/track-board.ts +0 -211
  319. package/src/ui/hooks/useBoardTopology.ts +0 -316
  320. package/src/ui/hooks/useCards.ts +0 -10
  321. package/src/ui/hooks/useHandCardPointer.ts +0 -381
  322. package/src/ui/hooks/useHandLayout.ts +0 -378
  323. package/src/ui/hooks/useHandPresentation.ts +0 -121
  324. package/src/ui/hooks/useHexBoard.ts +0 -74
  325. package/src/ui/hooks/useHexGrid.ts +0 -185
  326. package/src/ui/hooks/useIsMobile.ts +0 -35
  327. package/src/ui/hooks/usePanZoom.ts +0 -278
  328. package/src/ui/hooks/useSquareBoard.ts +0 -124
  329. package/src/ui/hooks/useSquareGrid.ts +0 -328
  330. package/src/ui/index.ts +0 -98
  331. package/src/ui/internal/ui/alert.tsx +0 -51
  332. package/src/ui/internal/ui/button.tsx +0 -58
  333. package/src/ui/internal/ui/dialog.tsx +0 -134
  334. package/src/ui/internal/ui/input.tsx +0 -21
  335. package/src/ui/internal/ui/label.tsx +0 -21
  336. package/src/ui/internal/ui/select.tsx +0 -129
  337. package/src/ui/internal/ui/tooltip.tsx +0 -54
  338. package/src/ui/internal/ui/utils.ts +0 -5
  339. package/src/ui/plugin-styles.css +0 -250
  340. package/src/ui/primitives/dialog-lifecycle.ts +0 -58
  341. package/src/ui/primitives/dice.tsx +0 -79
  342. package/src/ui/primitives/primitive-props.tsx +0 -101
  343. package/src/ui/theme/ThemeProvider.tsx +0 -252
  344. package/src/ui/theme/board.ts +0 -61
  345. package/src/ui/theme/css-vars.ts +0 -105
  346. package/src/ui/theme/derive.ts +0 -240
  347. package/src/ui/theme/index.ts +0 -61
  348. package/src/ui/theme/presets/arcade.ts +0 -261
  349. package/src/ui/theme/presets/studio.ts +0 -261
  350. package/src/ui/theme/presets/tabletop.ts +0 -266
  351. package/src/ui/theme/tokens.ts +0 -392
  352. package/src/ui/types/hex-color.ts +0 -20
  353. package/src/ui/types/player-state.ts +0 -463
  354. package/src/ui/types/tiled-board.ts +0 -785
  355. package/src/ui/types/visual-state.ts +0 -137
  356. package/src/ui.ts +0 -1
  357. /package/dist/{chunk-I46YJSOD.js.map → browser-interaction.js.map} +0 -0
  358. /package/dist/{chunk-KAELH4KC.js.map → chunk-3RQEICD3.js.map} +0 -0
  359. /package/dist/{chunk-T52J5RMF.js.map → codegen.js.map} +0 -0
  360. /package/dist/{generated/runtime-api.js.map → reducer-contract.js.map} +0 -0
  361. /package/dist/runtime/{types/runtime-api.js.map → runtime-api.js.map} +0 -0
  362. /package/dist/ui/{types/player-state.js → player-state.js} +0 -0
  363. /package/dist/ui/{types/player-state.js.map → player-state.js.map} +0 -0
package/dist/reducer.d.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  import { z } from 'zod';
2
- import { C as CardCollection, V as ViewCard } from './cards-Sl3b40Mv.js';
3
- import { V as ViewSlotOccupant } from './slots-1GPGihk8.js';
4
- import { R as ReducerBundleContract } from './bundle-CDd5FKeD.js';
2
+ import { CardCollection, ViewCard, ViewSlotOccupant } from './types.js';
3
+ import { a as ReducerBundleContract } from './index.d-BGqVifr_.js';
5
4
 
6
5
  /**
7
6
  * Opaque brand applied to a runtime player identifier.
@@ -2311,6 +2310,7 @@ type EffectContinuationCallable<DataSchema extends AnySchema, State extends {
2311
2310
  currentPhase: string;
2312
2311
  };
2313
2312
  }, Manifest extends ManifestContract<TableOfState<State>>, ContinuationId extends string = string, Kind extends ResumableEffectKind = ResumableEffectKind> = ContinuationCallable<DataSchema, State, Manifest, ContinuationId, Kind>;
2313
+
2314
2314
  /**
2315
2315
  * `rollDie` effect. Resolves a `rollDie` wire effect. `reduce` / `context`
2316
2316
  * are both optional so authors can fire-and-forget a die roll without
@@ -2373,181 +2373,7 @@ type EffectMap<State extends {
2373
2373
  currentPhase: string;
2374
2374
  };
2375
2375
  }, Manifest extends ManifestContract<TableOfState<State>>> = Record<string, EffectDefinition<State, Manifest>>;
2376
- type SimultaneousSubmission<Collectors extends Record<string, InputCollector>, State extends {
2377
- table: RuntimeTableRecord;
2378
- flow: {
2379
- currentPhase: string;
2380
- };
2381
- }> = {
2382
- playerId: PlayerIdOfState<State>;
2383
- params: ParamsOf<Collectors>;
2384
- };
2385
- type SimultaneousResolveArgs<Collectors extends Record<string, InputCollector>, State extends {
2386
- table: RuntimeTableRecord;
2387
- flow: {
2388
- currentPhase: string;
2389
- };
2390
- }, Manifest extends ManifestContract<TableOfState<State>>> = ActionContext<State, Manifest> & RuntimeHelpers<State> & MutationRuntimeHelpers & {
2391
- state: State;
2392
- submissions: Record<PlayerIdOfState<State>, SimultaneousSubmission<Collectors, State>>;
2393
- submittedPlayerIds: PlayerIdOfState<State>[];
2394
- waitingPlayerIds: PlayerIdOfState<State>[];
2395
- };
2396
- type SimultaneousSubmitSpec<Collectors extends Record<string, InputCollector> = Record<string, InputCollector>, State extends {
2397
- table: RuntimeTableRecord;
2398
- flow: {
2399
- currentPhase: string;
2400
- };
2401
- } = {
2402
- table: RuntimeTableRecord;
2403
- flow: {
2404
- currentPhase: string;
2405
- };
2406
- }, Manifest extends ManifestContract<TableOfState<State>> = ManifestContract<TableOfState<State>>> = Omit<InteractionSpec<Collectors, State, Manifest>, "reduce"> & {
2407
- /**
2408
- * Optional compatibility slot for callers that reuse `defineInteraction`.
2409
- * The simultaneous phase barrier stores submissions and invokes the
2410
- * phase-level `resolve`; this per-submission reducer is intentionally
2411
- * ignored when present.
2412
- */
2413
- reduce?: InteractionSpec<Collectors, State, Manifest>["reduce"];
2414
- };
2415
- type PhaseDefinitionCommon<PhaseStateSchema extends SchemaLike<object>, State extends {
2416
- table: RuntimeTableRecord;
2417
- flow: {
2418
- currentPhase: string;
2419
- };
2420
- phase: object;
2421
- }, Manifest extends ManifestContract<TableOfState<State>>> = {
2422
- name?: string;
2423
- state: PhaseStateSchema;
2424
- initialState?: (ctx: {
2425
- manifest: Manifest;
2426
- state: State;
2427
- playerIds: PlayerIdOfState<State>[];
2428
- setup: SetupSelectionOfManifest<Manifest> | null;
2429
- }) => z.infer<PhaseStateSchema>;
2430
- enter?: BivariantCallback<PhaseEnterArgs<ScopedPhaseState<State, z.infer<PhaseStateSchema>>, Manifest>, ReducerResult<ScopedPhaseState<State, z.infer<PhaseStateSchema>>> | void>;
2431
- };
2432
- type AutoPhaseDefinition<PhaseStateSchema extends SchemaLike<object>, State extends {
2433
- table: RuntimeTableRecord;
2434
- flow: {
2435
- currentPhase: string;
2436
- };
2437
- phase: object;
2438
- }, Manifest extends ManifestContract<TableOfState<State>>> = PhaseDefinitionCommon<PhaseStateSchema, State, Manifest> & {
2439
- kind: "auto";
2440
- actor?: never;
2441
- actors?: never;
2442
- submit?: never;
2443
- canResubmit?: never;
2444
- resolve?: never;
2445
- effects?: never;
2446
- interactions?: never;
2447
- stages?: never;
2448
- zones?: never;
2449
- cardActions?: never;
2450
- };
2451
- type PlayerPhaseDefinition<PhaseStateSchema extends SchemaLike<object>, State extends {
2452
- table: RuntimeTableRecord;
2453
- flow: {
2454
- currentPhase: string;
2455
- };
2456
- phase: object;
2457
- }, Manifest extends ManifestContract<TableOfState<State>>, Effects extends EffectMap<State, Manifest> = Record<string, never>, Interactions extends InteractionMap<ScopedPhaseState<State, z.infer<PhaseStateSchema>>, Manifest> = Record<string, never>, Stages extends StageMap<ScopedPhaseState<State, z.infer<PhaseStateSchema>>, Manifest> = Record<string, never>, Zones extends PhaseZoneList<Manifest> = readonly [], CardActions extends CardActionMap<ScopedPhaseState<State, z.infer<PhaseStateSchema>>, Manifest> = Record<string, never>> = PhaseDefinitionCommon<PhaseStateSchema, State, Manifest> & {
2458
- kind: "player";
2459
- /**
2460
- * Default actor selector for interactions in this phase. When omitted the
2461
- * runtime falls back to `flow.activePlayers`, preserving the existing turn
2462
- * ownership model. Returning multiple players models simultaneous actors.
2463
- */
2464
- actor?: ActorSelector<ScopedPhaseState<State, z.infer<PhaseStateSchema>>, Manifest>;
2465
- actors?: never;
2466
- submit?: never;
2467
- canResubmit?: never;
2468
- resolve?: never;
2469
- effects?: Effects;
2470
- interactions?: Interactions;
2471
- stages?: Stages;
2472
- zones?: Zones;
2473
- cardActions?: CardActions;
2474
- };
2475
- type SimultaneousPlayerPhaseDefinition<PhaseStateSchema extends SchemaLike<object>, State extends {
2476
- table: RuntimeTableRecord;
2477
- flow: {
2478
- currentPhase: string;
2479
- };
2480
- phase: object;
2481
- }, Manifest extends ManifestContract<TableOfState<State>>, SubmitCollectors extends Record<string, InputCollector> = Record<string, InputCollector>, Effects extends EffectMap<State, Manifest> = Record<string, never>, Interactions extends InteractionMap<ScopedPhaseState<State, z.infer<PhaseStateSchema>>, Manifest> = Record<string, never>, Stages extends StageMap<ScopedPhaseState<State, z.infer<PhaseStateSchema>>, Manifest> = Record<string, never>, Zones extends PhaseZoneList<Manifest> = readonly [], CardActions extends CardActionMap<ScopedPhaseState<State, z.infer<PhaseStateSchema>>, Manifest> = Record<string, never>> = PhaseDefinitionCommon<PhaseStateSchema, State, Manifest> & {
2482
- kind: "simultaneousPlayer";
2483
- actor?: never;
2484
- /**
2485
- * Actor selector for `kind: "simultaneousPlayer"` phases. This is an alias
2486
- * of `actor` with wording that matches simultaneous submission semantics.
2487
- */
2488
- actors: ActorSelector<ScopedPhaseState<State, z.infer<PhaseStateSchema>>, Manifest>;
2489
- /**
2490
- * Canonical sealed submission interaction for simultaneous phases. It is
2491
- * projected like a normal interaction, but the trusted runtime stores the
2492
- * parsed params until every actor has submitted, then calls `resolve`.
2493
- */
2494
- submit: SimultaneousSubmitSpec<SubmitCollectors, ScopedPhaseState<State, z.infer<PhaseStateSchema>>, Manifest>;
2495
- /**
2496
- * When false or omitted, each actor can submit once per simultaneous
2497
- * barrier. Set true to allow replacing the sealed submission before every
2498
- * required actor has submitted.
2499
- */
2500
- canResubmit?: boolean;
2501
- /**
2502
- * Batch resolver invoked once all simultaneous actors have submitted. The
2503
- * submitted params are passed together so game state mutates from one
2504
- * deterministic base state instead of one player at a time.
2505
- */
2506
- resolve: BivariantCallback<SimultaneousResolveArgs<SubmitCollectors, ScopedPhaseState<State, z.infer<PhaseStateSchema>>, Manifest>, ReducerResult<ScopedPhaseState<State, z.infer<PhaseStateSchema>>>>;
2507
- effects?: Effects;
2508
- interactions?: Interactions;
2509
- stages?: Stages;
2510
- zones?: Zones;
2511
- cardActions?: CardActions;
2512
- };
2513
- type PhaseDefinition<PhaseStateSchema extends SchemaLike<object>, State extends {
2514
- table: RuntimeTableRecord;
2515
- flow: {
2516
- currentPhase: string;
2517
- };
2518
- phase: object;
2519
- }, Manifest extends ManifestContract<TableOfState<State>>, SubmitCollectors extends Record<string, InputCollector> = Record<string, InputCollector>, Effects extends EffectMap<State, Manifest> = Record<string, never>, Interactions extends InteractionMap<ScopedPhaseState<State, z.infer<PhaseStateSchema>>, Manifest> = Record<string, never>, Stages extends StageMap<ScopedPhaseState<State, z.infer<PhaseStateSchema>>, Manifest> = Record<string, never>, Zones extends PhaseZoneList<Manifest> = readonly [], CardActions extends CardActionMap<ScopedPhaseState<State, z.infer<PhaseStateSchema>>, Manifest> = Record<string, never>> = AutoPhaseDefinition<PhaseStateSchema, State, Manifest> | PlayerPhaseDefinition<PhaseStateSchema, State, Manifest, Effects, Interactions, Stages, Zones, CardActions> | SimultaneousPlayerPhaseDefinition<PhaseStateSchema, State, Manifest, SubmitCollectors, Effects, Interactions, Stages, Zones, CardActions>;
2520
- type ViewDefinition<State extends {
2521
- table: RuntimeTableRecord;
2522
- flow: {
2523
- currentPhase: string;
2524
- };
2525
- }, Manifest extends ManifestContract<TableOfState<State>>, Projection = unknown> = {
2526
- project: (args: ActionContext<State, Manifest> & RuntimeHelpers<State> & {
2527
- state: State;
2528
- playerId: PlayerIdOfState<State>;
2529
- runtime: State extends {
2530
- runtime: infer RuntimeStateValue;
2531
- } ? RuntimeStateValue : never;
2532
- }) => Projection;
2533
- };
2534
- /**
2535
- * Session-scoped, once-per-init view. The `project` callback receives only
2536
- * the authored manifest — the mutable-state helpers (`state`, `playerId`,
2537
- * `runtime`, `fx`, `ops`, `accept`, `reject`, `q`) that `ViewDefinition.project`
2538
- * exposes are structurally absent, so an author cannot accidentally project
2539
- * per-tick state into the payload. The host calls this once per reducer
2540
- * session, caches the result, and merges it back into every seat view on
2541
- * the client. Moving static board topology here is what lets the adapter
2542
- * skip the ~87% of `projectSeatsDynamic` wall time that used to re-serialize
2543
- * manifest-sourced fields on every input.
2544
- */
2545
- type StaticViewDefinition<Manifest extends ManifestContract<RuntimeTableRecord>, Projection = unknown> = {
2546
- project: (args: {
2547
- manifest: Manifest;
2548
- q: StaticViewQueries<Manifest>;
2549
- }) => Projection;
2550
- };
2376
+
2551
2377
  type InputCollectorKind = "form" | "board-vertex" | "board-edge" | "board-tile" | "board-space" | "card" | "prompt" | "rng";
2552
2378
  type TargetKind = "edge" | "vertex" | "space" | "tile" | "card";
2553
2379
  type BoardInputCollectorKind = Exclude<InputCollectorKind, "form" | "card" | "prompt" | "rng">;
@@ -2766,6 +2592,7 @@ type EngineSampledCollectorKeys<Collectors extends Record<string, InputCollector
2766
2592
  type ClientParamsOf<Collectors extends Record<string, InputCollector>> = {
2767
2593
  [K in keyof Collectors as K extends EngineSampledCollectorKeys<Collectors> ? never : K]: Collectors[K] extends InputCollector<infer S> ? S extends SchemaLike<infer V> ? V : never : never;
2768
2594
  };
2595
+
2769
2596
  type InteractionReduceInput<Collectors extends Record<string, InputCollector>, State extends {
2770
2597
  table: RuntimeTableRecord;
2771
2598
  flow: {
@@ -3012,6 +2839,184 @@ type StageMap<State extends {
3012
2839
  }, Manifest extends ManifestContract<TableOfState<State>>> = Record<string, StageSpec<State, Manifest>>;
3013
2840
  type PhaseZoneList<Manifest extends ManifestContract<RuntimeTableRecord>> = readonly PlayerZoneIdOfManifest<Manifest>[];
3014
2841
 
2842
+ type SimultaneousSubmission<Collectors extends Record<string, InputCollector>, State extends {
2843
+ table: RuntimeTableRecord;
2844
+ flow: {
2845
+ currentPhase: string;
2846
+ };
2847
+ }> = {
2848
+ playerId: PlayerIdOfState<State>;
2849
+ params: ParamsOf<Collectors>;
2850
+ };
2851
+ type SimultaneousResolveArgs<Collectors extends Record<string, InputCollector>, State extends {
2852
+ table: RuntimeTableRecord;
2853
+ flow: {
2854
+ currentPhase: string;
2855
+ };
2856
+ }, Manifest extends ManifestContract<TableOfState<State>>> = ActionContext<State, Manifest> & RuntimeHelpers<State> & MutationRuntimeHelpers & {
2857
+ state: State;
2858
+ submissions: Record<PlayerIdOfState<State>, SimultaneousSubmission<Collectors, State>>;
2859
+ submittedPlayerIds: PlayerIdOfState<State>[];
2860
+ waitingPlayerIds: PlayerIdOfState<State>[];
2861
+ };
2862
+ type SimultaneousSubmitSpec<Collectors extends Record<string, InputCollector> = Record<string, InputCollector>, State extends {
2863
+ table: RuntimeTableRecord;
2864
+ flow: {
2865
+ currentPhase: string;
2866
+ };
2867
+ } = {
2868
+ table: RuntimeTableRecord;
2869
+ flow: {
2870
+ currentPhase: string;
2871
+ };
2872
+ }, Manifest extends ManifestContract<TableOfState<State>> = ManifestContract<TableOfState<State>>> = Omit<InteractionSpec<Collectors, State, Manifest>, "reduce"> & {
2873
+ /**
2874
+ * Optional compatibility slot for callers that reuse `defineInteraction`.
2875
+ * The simultaneous phase barrier stores submissions and invokes the
2876
+ * phase-level `resolve`; this per-submission reducer is intentionally
2877
+ * ignored when present.
2878
+ */
2879
+ reduce?: InteractionSpec<Collectors, State, Manifest>["reduce"];
2880
+ };
2881
+
2882
+ type PhaseDefinitionCommon<PhaseStateSchema extends SchemaLike<object>, State extends {
2883
+ table: RuntimeTableRecord;
2884
+ flow: {
2885
+ currentPhase: string;
2886
+ };
2887
+ phase: object;
2888
+ }, Manifest extends ManifestContract<TableOfState<State>>> = {
2889
+ name?: string;
2890
+ state: PhaseStateSchema;
2891
+ initialState?: (ctx: {
2892
+ manifest: Manifest;
2893
+ state: State;
2894
+ playerIds: PlayerIdOfState<State>[];
2895
+ setup: SetupSelectionOfManifest<Manifest> | null;
2896
+ }) => z.infer<PhaseStateSchema>;
2897
+ enter?: BivariantCallback<PhaseEnterArgs<ScopedPhaseState<State, z.infer<PhaseStateSchema>>, Manifest>, ReducerResult<ScopedPhaseState<State, z.infer<PhaseStateSchema>>> | void>;
2898
+ };
2899
+ type AutoPhaseDefinition<PhaseStateSchema extends SchemaLike<object>, State extends {
2900
+ table: RuntimeTableRecord;
2901
+ flow: {
2902
+ currentPhase: string;
2903
+ };
2904
+ phase: object;
2905
+ }, Manifest extends ManifestContract<TableOfState<State>>> = PhaseDefinitionCommon<PhaseStateSchema, State, Manifest> & {
2906
+ kind: "auto";
2907
+ actor?: never;
2908
+ actors?: never;
2909
+ submit?: never;
2910
+ canResubmit?: never;
2911
+ resolve?: never;
2912
+ effects?: never;
2913
+ interactions?: never;
2914
+ stages?: never;
2915
+ zones?: never;
2916
+ cardActions?: never;
2917
+ };
2918
+ type PlayerPhaseDefinition<PhaseStateSchema extends SchemaLike<object>, State extends {
2919
+ table: RuntimeTableRecord;
2920
+ flow: {
2921
+ currentPhase: string;
2922
+ };
2923
+ phase: object;
2924
+ }, Manifest extends ManifestContract<TableOfState<State>>, Effects extends EffectMap<State, Manifest> = Record<string, never>, Interactions extends InteractionMap<ScopedPhaseState<State, z.infer<PhaseStateSchema>>, Manifest> = Record<string, never>, Stages extends StageMap<ScopedPhaseState<State, z.infer<PhaseStateSchema>>, Manifest> = Record<string, never>, Zones extends PhaseZoneList<Manifest> = readonly [], CardActions extends CardActionMap<ScopedPhaseState<State, z.infer<PhaseStateSchema>>, Manifest> = Record<string, never>> = PhaseDefinitionCommon<PhaseStateSchema, State, Manifest> & {
2925
+ kind: "player";
2926
+ /**
2927
+ * Default actor selector for interactions in this phase. When omitted the
2928
+ * runtime falls back to `flow.activePlayers`, preserving the existing turn
2929
+ * ownership model. Returning multiple players models simultaneous actors.
2930
+ */
2931
+ actor?: ActorSelector<ScopedPhaseState<State, z.infer<PhaseStateSchema>>, Manifest>;
2932
+ actors?: never;
2933
+ submit?: never;
2934
+ canResubmit?: never;
2935
+ resolve?: never;
2936
+ effects?: Effects;
2937
+ interactions?: Interactions;
2938
+ stages?: Stages;
2939
+ zones?: Zones;
2940
+ cardActions?: CardActions;
2941
+ };
2942
+ type SimultaneousPlayerPhaseDefinition<PhaseStateSchema extends SchemaLike<object>, State extends {
2943
+ table: RuntimeTableRecord;
2944
+ flow: {
2945
+ currentPhase: string;
2946
+ };
2947
+ phase: object;
2948
+ }, Manifest extends ManifestContract<TableOfState<State>>, SubmitCollectors extends Record<string, InputCollector> = Record<string, InputCollector>, Effects extends EffectMap<State, Manifest> = Record<string, never>, Interactions extends InteractionMap<ScopedPhaseState<State, z.infer<PhaseStateSchema>>, Manifest> = Record<string, never>, Stages extends StageMap<ScopedPhaseState<State, z.infer<PhaseStateSchema>>, Manifest> = Record<string, never>, Zones extends PhaseZoneList<Manifest> = readonly [], CardActions extends CardActionMap<ScopedPhaseState<State, z.infer<PhaseStateSchema>>, Manifest> = Record<string, never>> = PhaseDefinitionCommon<PhaseStateSchema, State, Manifest> & {
2949
+ kind: "simultaneousPlayer";
2950
+ actor?: never;
2951
+ /**
2952
+ * Actor selector for `kind: "simultaneousPlayer"` phases. This is an alias
2953
+ * of `actor` with wording that matches simultaneous submission semantics.
2954
+ */
2955
+ actors: ActorSelector<ScopedPhaseState<State, z.infer<PhaseStateSchema>>, Manifest>;
2956
+ /**
2957
+ * Canonical sealed submission interaction for simultaneous phases. It is
2958
+ * projected like a normal interaction, but the trusted runtime stores the
2959
+ * parsed params until every actor has submitted, then calls `resolve`.
2960
+ */
2961
+ submit: SimultaneousSubmitSpec<SubmitCollectors, ScopedPhaseState<State, z.infer<PhaseStateSchema>>, Manifest>;
2962
+ /**
2963
+ * When false or omitted, each actor can submit once per simultaneous
2964
+ * barrier. Set true to allow replacing the sealed submission before every
2965
+ * required actor has submitted.
2966
+ */
2967
+ canResubmit?: boolean;
2968
+ /**
2969
+ * Batch resolver invoked once all simultaneous actors have submitted. The
2970
+ * submitted params are passed together so game state mutates from one
2971
+ * deterministic base state instead of one player at a time.
2972
+ */
2973
+ resolve: BivariantCallback<SimultaneousResolveArgs<SubmitCollectors, ScopedPhaseState<State, z.infer<PhaseStateSchema>>, Manifest>, ReducerResult<ScopedPhaseState<State, z.infer<PhaseStateSchema>>>>;
2974
+ effects?: Effects;
2975
+ interactions?: Interactions;
2976
+ stages?: Stages;
2977
+ zones?: Zones;
2978
+ cardActions?: CardActions;
2979
+ };
2980
+ type PhaseDefinition<PhaseStateSchema extends SchemaLike<object>, State extends {
2981
+ table: RuntimeTableRecord;
2982
+ flow: {
2983
+ currentPhase: string;
2984
+ };
2985
+ phase: object;
2986
+ }, Manifest extends ManifestContract<TableOfState<State>>, SubmitCollectors extends Record<string, InputCollector> = Record<string, InputCollector>, Effects extends EffectMap<State, Manifest> = Record<string, never>, Interactions extends InteractionMap<ScopedPhaseState<State, z.infer<PhaseStateSchema>>, Manifest> = Record<string, never>, Stages extends StageMap<ScopedPhaseState<State, z.infer<PhaseStateSchema>>, Manifest> = Record<string, never>, Zones extends PhaseZoneList<Manifest> = readonly [], CardActions extends CardActionMap<ScopedPhaseState<State, z.infer<PhaseStateSchema>>, Manifest> = Record<string, never>> = AutoPhaseDefinition<PhaseStateSchema, State, Manifest> | PlayerPhaseDefinition<PhaseStateSchema, State, Manifest, Effects, Interactions, Stages, Zones, CardActions> | SimultaneousPlayerPhaseDefinition<PhaseStateSchema, State, Manifest, SubmitCollectors, Effects, Interactions, Stages, Zones, CardActions>;
2987
+
2988
+ type ViewDefinition<State extends {
2989
+ table: RuntimeTableRecord;
2990
+ flow: {
2991
+ currentPhase: string;
2992
+ };
2993
+ }, Manifest extends ManifestContract<TableOfState<State>>, Projection = unknown> = {
2994
+ project: (args: ActionContext<State, Manifest> & RuntimeHelpers<State> & {
2995
+ state: State;
2996
+ playerId: PlayerIdOfState<State>;
2997
+ runtime: State extends {
2998
+ runtime: infer RuntimeStateValue;
2999
+ } ? RuntimeStateValue : never;
3000
+ }) => Projection;
3001
+ };
3002
+ /**
3003
+ * Session-scoped, once-per-init view. The `project` callback receives only
3004
+ * the authored manifest — the mutable-state helpers (`state`, `playerId`,
3005
+ * `runtime`, `fx`, `ops`, `accept`, `reject`, `q`) that `ViewDefinition.project`
3006
+ * exposes are structurally absent, so an author cannot accidentally project
3007
+ * per-tick state into the payload. The host calls this once per reducer
3008
+ * session, caches the result, and merges it back into every seat view on
3009
+ * the client. Moving static board topology here is what lets the adapter
3010
+ * skip the ~87% of `projectSeatsDynamic` wall time that used to re-serialize
3011
+ * manifest-sourced fields on every input.
3012
+ */
3013
+ type StaticViewDefinition<Manifest extends ManifestContract<RuntimeTableRecord>, Projection = unknown> = {
3014
+ project: (args: {
3015
+ manifest: Manifest;
3016
+ q: StaticViewQueries<Manifest>;
3017
+ }) => Projection;
3018
+ };
3019
+
3015
3020
  /**
3016
3021
  * Structural upper bound for reducer game contracts accepted by the
3017
3022
  * authoring-level `define*` factories. The `manifest` slot admits any
@@ -3771,12 +3776,13 @@ declare function seedSharedBoardSpace<Manifest extends GeneratedManifestContract
3771
3776
  componentIds?: readonly (CardIdOfManifest<Manifest> | PieceIdOfManifest<Manifest> | DieIdOfManifest<Manifest>)[];
3772
3777
  }): SetupBootstrapStep<Manifest>;
3773
3778
 
3779
+ declare function assertCardAllowedInContainer<Table extends RuntimeTableRecord, BoardId extends BoardIdOfTable<NoInfer<Table>>, ContainerId extends BoardContainerIdOfTable<NoInfer<Table>, BoardId>>(table: Table, boardId: BoardId, containerId: ContainerId, componentId: string): void;
3780
+
3774
3781
  declare function setActivePlayers<State extends {
3775
3782
  flow: {
3776
3783
  activePlayers: PlayerIdOfState<State>[];
3777
3784
  };
3778
3785
  }>(state: State, activePlayers: PlayerIdOfState<State>[]): State;
3779
- declare function assertCardAllowedInContainer<Table extends RuntimeTableRecord, BoardId extends BoardIdOfTable<NoInfer<Table>>, ContainerId extends BoardContainerIdOfTable<NoInfer<Table>, BoardId>>(table: Table, boardId: BoardId, containerId: ContainerId, componentId: string): void;
3780
3786
 
3781
3787
  declare function createTableQueries<Table extends RuntimeTableRecord>(table: Table): TableQueries<Table>;
3782
3788
  declare function createStateQueries<State extends {