@dreamboard-games/sdk 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (369) hide show
  1. package/LICENSE.md +96 -0
  2. package/README.md +12 -0
  3. package/dist/HandView-ncJIVLhN.d.ts +193 -0
  4. package/dist/ResourceCounter-CTREyF73.d.ts +102 -0
  5. package/dist/ThemeProvider-fy0_QzgO.d.ts +99 -0
  6. package/dist/bundle-TIZcw8LB.d.ts +281 -0
  7. package/dist/cards-Sl3b40Mv.d.ts +13 -0
  8. package/dist/chunk-7YAHLYBR.js +481 -0
  9. package/dist/chunk-7YAHLYBR.js.map +1 -0
  10. package/dist/chunk-FDNZTDD6.js +8085 -0
  11. package/dist/chunk-FDNZTDD6.js.map +1 -0
  12. package/dist/chunk-GKKBPPSW.js +598 -0
  13. package/dist/chunk-GKKBPPSW.js.map +1 -0
  14. package/dist/chunk-I46YJSOD.js +1 -0
  15. package/dist/chunk-I46YJSOD.js.map +1 -0
  16. package/dist/chunk-KAELH4KC.js +104 -0
  17. package/dist/chunk-KAELH4KC.js.map +1 -0
  18. package/dist/chunk-PZ5AY32C.js +10 -0
  19. package/dist/chunk-PZ5AY32C.js.map +1 -0
  20. package/dist/chunk-T3ZKNUZ7.js +1 -0
  21. package/dist/chunk-T3ZKNUZ7.js.map +1 -0
  22. package/dist/chunk-T52J5RMF.js +1 -0
  23. package/dist/chunk-T52J5RMF.js.map +1 -0
  24. package/dist/chunk-TDSWKVZ4.js +5401 -0
  25. package/dist/chunk-TDSWKVZ4.js.map +1 -0
  26. package/dist/chunk-U5C6BONG.js +34 -0
  27. package/dist/chunk-U5C6BONG.js.map +1 -0
  28. package/dist/chunk-VDXOF4FW.js +69 -0
  29. package/dist/chunk-VDXOF4FW.js.map +1 -0
  30. package/dist/chunk-VFTAA4WO.js +115 -0
  31. package/dist/chunk-VFTAA4WO.js.map +1 -0
  32. package/dist/chunk-WN74KVNY.js +17 -0
  33. package/dist/chunk-WN74KVNY.js.map +1 -0
  34. package/dist/chunk-WYPQ3GG5.js +10990 -0
  35. package/dist/chunk-WYPQ3GG5.js.map +1 -0
  36. package/dist/components-D5ZRE2Hl.d.ts +1451 -0
  37. package/dist/generated/runtime/primitives.d.ts +12 -0
  38. package/dist/generated/runtime/primitives.js +180 -0
  39. package/dist/generated/runtime/primitives.js.map +1 -0
  40. package/dist/generated/runtime-api.d.ts +3 -0
  41. package/dist/generated/runtime-api.js +2 -0
  42. package/dist/generated/runtime-api.js.map +1 -0
  43. package/dist/generated/runtime.d.ts +14 -0
  44. package/dist/generated/runtime.js +18 -0
  45. package/dist/generated/runtime.js.map +1 -0
  46. package/dist/generated/workspace-contract.d.ts +14 -0
  47. package/dist/generated/workspace-contract.js +14 -0
  48. package/dist/generated/workspace-contract.js.map +1 -0
  49. package/dist/hex-board-view-D_07hO6O.d.ts +933 -0
  50. package/dist/hex-color-MhOyuY-o.d.ts +8 -0
  51. package/dist/index-BwqPQtBu.d.ts +1433 -0
  52. package/dist/index.d.ts +1 -0
  53. package/dist/index.js +12 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/infrastructure/reducer-bundle-abi.d.ts +1083 -0
  56. package/dist/infrastructure/reducer-bundle-abi.js +14 -0
  57. package/dist/infrastructure/reducer-bundle-abi.js.map +1 -0
  58. package/dist/infrastructure/workspace-codegen.d.ts +53 -0
  59. package/dist/infrastructure/workspace-codegen.js +44 -0
  60. package/dist/infrastructure/workspace-codegen.js.map +1 -0
  61. package/dist/manifest-contract-BNHVGFtU.d.ts +9 -0
  62. package/dist/package-set.d.ts +13 -0
  63. package/dist/package-set.js +12 -0
  64. package/dist/package-set.js.map +1 -0
  65. package/dist/primitive-props-DpKs-GCr.d.ts +11 -0
  66. package/dist/reducer.d.ts +3786 -0
  67. package/dist/reducer.js +8131 -0
  68. package/dist/reducer.js.map +1 -0
  69. package/dist/runtime/primitives.d.ts +226 -0
  70. package/dist/runtime/primitives.js +180 -0
  71. package/dist/runtime/primitives.js.map +1 -0
  72. package/dist/runtime/types/runtime-api.d.ts +1 -0
  73. package/dist/runtime/types/runtime-api.js +2 -0
  74. package/dist/runtime/types/runtime-api.js.map +1 -0
  75. package/dist/runtime/workspace-contract.d.ts +172 -0
  76. package/dist/runtime/workspace-contract.js +14 -0
  77. package/dist/runtime/workspace-contract.js.map +1 -0
  78. package/dist/runtime-api-3dshj6kK.d.ts +101 -0
  79. package/dist/runtime-api-DWxvTr-O.d.ts +379 -0
  80. package/dist/runtime.d.ts +58 -0
  81. package/dist/runtime.js +13 -0
  82. package/dist/runtime.js.map +1 -0
  83. package/dist/slots-1GPGihk8.d.ts +8 -0
  84. package/dist/testing.d.ts +149 -0
  85. package/dist/testing.js +513 -0
  86. package/dist/testing.js.map +1 -0
  87. package/dist/types.d.ts +496 -0
  88. package/dist/types.js +28 -0
  89. package/dist/types.js.map +1 -0
  90. package/dist/ui/components.d.ts +16 -0
  91. package/dist/ui/components.js +192 -0
  92. package/dist/ui/components.js.map +1 -0
  93. package/dist/ui/defaults.d.ts +19 -0
  94. package/dist/ui/defaults.js +104 -0
  95. package/dist/ui/defaults.js.map +1 -0
  96. package/dist/ui/plugin-styles.css +250 -0
  97. package/dist/ui/types/player-state.d.ts +365 -0
  98. package/dist/ui/types/player-state.js +1 -0
  99. package/dist/ui/types/player-state.js.map +1 -0
  100. package/dist/ui-contract-iQfTtUSL.d.ts +1161 -0
  101. package/dist/ui.d.ts +320 -0
  102. package/dist/ui.js +253 -0
  103. package/dist/ui.js.map +1 -0
  104. package/package.json +199 -0
  105. package/src/generated/reducer-contract/builders.ts +90 -0
  106. package/src/generated/reducer-contract/version.ts +9 -0
  107. package/src/generated/reducer-contract/wire.ts +100 -0
  108. package/src/generated/reducer-contract/zod.ts +101 -0
  109. package/src/generated/runtime/primitives.ts +2 -0
  110. package/src/generated/runtime-api.ts +5 -0
  111. package/src/generated/runtime.ts +35 -0
  112. package/src/generated/workspace-contract.ts +2 -0
  113. package/src/index.ts +7 -0
  114. package/src/infrastructure/reducer-bundle-abi.ts +8 -0
  115. package/src/infrastructure/reducer-contract/bundle.ts +37 -0
  116. package/src/infrastructure/workspace-codegen/hex-geometry.ts +69 -0
  117. package/src/infrastructure/workspace-codegen/index.ts +64 -0
  118. package/src/infrastructure/workspace-codegen/manifest-contract.ts +6632 -0
  119. package/src/infrastructure/workspace-codegen/manifest-validation.ts +795 -0
  120. package/src/infrastructure/workspace-codegen/ownership.ts +131 -0
  121. package/src/infrastructure/workspace-codegen/preset-card-sets.ts +169 -0
  122. package/src/infrastructure/workspace-codegen/seeds.ts +1705 -0
  123. package/src/infrastructure/workspace-codegen.ts +1 -0
  124. package/src/package-set.ts +19 -0
  125. package/src/reducer/authoring/contract.ts +157 -0
  126. package/src/reducer/authoring/effect.ts +224 -0
  127. package/src/reducer/authoring/game.ts +23 -0
  128. package/src/reducer/authoring/interaction.ts +98 -0
  129. package/src/reducer/authoring/phase.ts +300 -0
  130. package/src/reducer/authoring/types.ts +70 -0
  131. package/src/reducer/authoring/validation.ts +382 -0
  132. package/src/reducer/authoring/view-stage.ts +68 -0
  133. package/src/reducer/authoring.ts +29 -0
  134. package/src/reducer/bundle/ingress-bundle.ts +491 -0
  135. package/src/reducer/bundle/trusted/engine-instruction-resolver.ts +254 -0
  136. package/src/reducer/bundle/trusted/flow-instruction-resolver.ts +73 -0
  137. package/src/reducer/bundle/trusted/instruction-runner.ts +414 -0
  138. package/src/reducer/bundle/trusted/interaction-authorization.ts +137 -0
  139. package/src/reducer/bundle/trusted/interaction-collectors.ts +859 -0
  140. package/src/reducer/bundle/trusted/interaction-decision.ts +747 -0
  141. package/src/reducer/bundle/trusted/interaction-resolver.ts +95 -0
  142. package/src/reducer/bundle/trusted/interaction-types.ts +171 -0
  143. package/src/reducer/bundle/trusted/lifecycle-runner.ts +427 -0
  144. package/src/reducer/bundle/trusted/projection-builder.ts +356 -0
  145. package/src/reducer/bundle/trusted/projection-context.ts +39 -0
  146. package/src/reducer/bundle/trusted/rng-sampler.ts +150 -0
  147. package/src/reducer/bundle/trusted/runtime-registry.ts +120 -0
  148. package/src/reducer/bundle/trusted/runtime-scope.ts +336 -0
  149. package/src/reducer/bundle/trusted/simultaneous-player.ts +97 -0
  150. package/src/reducer/bundle/trusted/stage-resolver.ts +87 -0
  151. package/src/reducer/bundle/trusted/static-projection.ts +116 -0
  152. package/src/reducer/bundle/trusted/trusted-runtime-args.ts +97 -0
  153. package/src/reducer/bundle/trusted/trusted-runtime-result.ts +39 -0
  154. package/src/reducer/bundle/trusted/trusted-setup-profiles.ts +43 -0
  155. package/src/reducer/bundle/trusted/trusted-state-codec.ts +48 -0
  156. package/src/reducer/bundle/trusted-bundle.ts +97 -0
  157. package/src/reducer/bundle/types.ts +171 -0
  158. package/src/reducer/bundle.ts +2 -0
  159. package/src/reducer/client-param-schemas.ts +57 -0
  160. package/src/reducer/compose.ts +34 -0
  161. package/src/reducer/core/runtime-input.ts +30 -0
  162. package/src/reducer/core/runtime-instruction.ts +59 -0
  163. package/src/reducer/core/types.ts +62 -0
  164. package/src/reducer/definition-index.ts +277 -0
  165. package/src/reducer/derived.ts +106 -0
  166. package/src/reducer/effects.ts +92 -0
  167. package/src/reducer/engine/runtime-instruction-engine.ts +155 -0
  168. package/src/reducer/ingress/decode-runtime-input.ts +7 -0
  169. package/src/reducer/ingress/decode-session-state.ts +9 -0
  170. package/src/reducer/ingress/encode-session-state.ts +6 -0
  171. package/src/reducer/ingress/input-codec.ts +18 -0
  172. package/src/reducer/ingress/phase-schemas.ts +62 -0
  173. package/src/reducer/ingress/raw-types.ts +107 -0
  174. package/src/reducer/ingress/runtime-codec.ts +14 -0
  175. package/src/reducer/ingress/runtime-payload.ts +13 -0
  176. package/src/reducer/ingress/session-codec.ts +392 -0
  177. package/src/reducer/ingress/types.ts +6 -0
  178. package/src/reducer/inputs/boardInput.ts +217 -0
  179. package/src/reducer/inputs/boardTarget.ts +190 -0
  180. package/src/reducer/inputs/cardInput.ts +86 -0
  181. package/src/reducer/inputs/cardTarget.ts +101 -0
  182. package/src/reducer/inputs/choiceTarget.ts +104 -0
  183. package/src/reducer/inputs/defineInputs.ts +71 -0
  184. package/src/reducer/inputs/formInput.ts +809 -0
  185. package/src/reducer/inputs/many.ts +120 -0
  186. package/src/reducer/inputs/promptInput.ts +87 -0
  187. package/src/reducer/inputs/rngInput.ts +58 -0
  188. package/src/reducer/inputs/targetRule.ts +123 -0
  189. package/src/reducer/inputs.ts +41 -0
  190. package/src/reducer/model/definition.ts +1072 -0
  191. package/src/reducer/model/extract.ts +745 -0
  192. package/src/reducer/model/manifest.ts +570 -0
  193. package/src/reducer/model/queries.ts +641 -0
  194. package/src/reducer/model/runtime.ts +264 -0
  195. package/src/reducer/model/spec.ts +1386 -0
  196. package/src/reducer/model/table.ts +260 -0
  197. package/src/reducer/model.ts +7 -0
  198. package/src/reducer/ops.ts +1034 -0
  199. package/src/reducer/parse-utils.ts +28 -0
  200. package/src/reducer/per-player.ts +422 -0
  201. package/src/reducer/rng.ts +69 -0
  202. package/src/reducer/schema-helpers.ts +185 -0
  203. package/src/reducer/setup-bootstrap-helpers.ts +171 -0
  204. package/src/reducer/setup-bootstrap.ts +481 -0
  205. package/src/reducer/table-ops.ts +2671 -0
  206. package/src/reducer/table-queries.ts +372 -0
  207. package/src/reducer/transaction.ts +120 -0
  208. package/src/reducer.ts +314 -0
  209. package/src/runtime/primitives.ts +1 -0
  210. package/src/runtime/types/runtime-api.ts +1 -0
  211. package/src/runtime/workspace-contract.ts +32 -0
  212. package/src/runtime-internal/components/InteractionForm.tsx +1309 -0
  213. package/src/runtime-internal/components/PluginRuntime.tsx +103 -0
  214. package/src/runtime-internal/components/board/target-layer.ts +70 -0
  215. package/src/runtime-internal/context/ClientParamSchemaContext.tsx +44 -0
  216. package/src/runtime-internal/context/InteractionDraftContext.tsx +279 -0
  217. package/src/runtime-internal/context/PluginSessionContext.tsx +47 -0
  218. package/src/runtime-internal/context/PluginStateContext.tsx +262 -0
  219. package/src/runtime-internal/context/RuntimeContext.tsx +96 -0
  220. package/src/runtime-internal/defaults/components.tsx +409 -0
  221. package/src/runtime-internal/defaults/index.ts +11 -0
  222. package/src/runtime-internal/errors/ValidationError.ts +29 -0
  223. package/src/runtime-internal/hooks/useActivePlayers.ts +33 -0
  224. package/src/runtime-internal/hooks/useBoardInteractions.ts +665 -0
  225. package/src/runtime-internal/hooks/useGameSelector.ts +105 -0
  226. package/src/runtime-internal/hooks/useGameView.ts +9 -0
  227. package/src/runtime-internal/hooks/useInteractionByKey.ts +354 -0
  228. package/src/runtime-internal/hooks/useInteractionHandle.ts +438 -0
  229. package/src/runtime-internal/hooks/useIsMyTurn.ts +20 -0
  230. package/src/runtime-internal/hooks/useLobby.ts +76 -0
  231. package/src/runtime-internal/hooks/useMe.ts +48 -0
  232. package/src/runtime-internal/hooks/usePlayerInfo.ts +28 -0
  233. package/src/runtime-internal/hooks/usePlayerTurnOrder.ts +23 -0
  234. package/src/runtime-internal/hooks/usePluginRuntime.ts +147 -0
  235. package/src/runtime-internal/hooks/useSeatInbox.ts +61 -0
  236. package/src/runtime-internal/hooks/useSimultaneousPhase.ts +10 -0
  237. package/src/runtime-internal/index.ts +42 -0
  238. package/src/runtime-internal/internal.ts +43 -0
  239. package/src/runtime-internal/plugin-styles.css +250 -0
  240. package/src/runtime-internal/primitives/board.tsx +459 -0
  241. package/src/runtime-internal/primitives/dialog-lifecycle.ts +58 -0
  242. package/src/runtime-internal/primitives/dice.tsx +79 -0
  243. package/src/runtime-internal/primitives/game-ui-provider.tsx +35 -0
  244. package/src/runtime-internal/primitives/game.tsx +387 -0
  245. package/src/runtime-internal/primitives/hand-intent-adapter.ts +147 -0
  246. package/src/runtime-internal/primitives/hand-surface.tsx +594 -0
  247. package/src/runtime-internal/primitives/index.ts +196 -0
  248. package/src/runtime-internal/primitives/interaction-form-binding.tsx +56 -0
  249. package/src/runtime-internal/primitives/interaction-submit.ts +90 -0
  250. package/src/runtime-internal/primitives/interaction.tsx +987 -0
  251. package/src/runtime-internal/primitives/phase.tsx +43 -0
  252. package/src/runtime-internal/primitives/player-roster.tsx +302 -0
  253. package/src/runtime-internal/primitives/primitive-props.tsx +101 -0
  254. package/src/runtime-internal/primitives/prompt.tsx +255 -0
  255. package/src/runtime-internal/primitives/ui.tsx +60 -0
  256. package/src/runtime-internal/primitives/zone.tsx +791 -0
  257. package/src/runtime-internal/reducer.ts +30 -0
  258. package/src/runtime-internal/runtime/createPluginRuntimeAPI.ts +605 -0
  259. package/src/runtime-internal/types/plugin-state.ts +508 -0
  260. package/src/runtime-internal/types/reducer-state.ts +24 -0
  261. package/src/runtime-internal/types/runtime-api.ts +114 -0
  262. package/src/runtime-internal/ui-contract.ts +519 -0
  263. package/src/runtime-internal/utils/card-intent-adapter.ts +546 -0
  264. package/src/runtime-internal/utils/interaction-inputs.ts +492 -0
  265. package/src/runtime-internal/utils/interaction-labels.ts +23 -0
  266. package/src/runtime-internal/utils/interaction-router.ts +273 -0
  267. package/src/runtime-internal/utils/interaction-status.ts +74 -0
  268. package/src/runtime-internal/workspace-contract.ts +1170 -0
  269. package/src/runtime.ts +34 -0
  270. package/src/testing/create-expect-api.ts +352 -0
  271. package/src/testing/create-test-runtime.ts +381 -0
  272. package/src/testing/definitions.ts +127 -0
  273. package/src/testing/index.ts +3 -0
  274. package/src/testing.ts +1 -0
  275. package/src/type-stubs/manifest-contract.d.ts +42 -0
  276. package/src/type-stubs/manifest-contract.js +72 -0
  277. package/src/type-stubs/ui-contract.d.ts +5 -0
  278. package/src/type-stubs/ui-contract.js +1 -0
  279. package/src/types/authoring-card-properties.type-test.ts +266 -0
  280. package/src/types/authoring.ts +1282 -0
  281. package/src/types/cards.ts +19 -0
  282. package/src/types/contracts.ts +1550 -0
  283. package/src/types/generated-helpers.ts +35 -0
  284. package/src/types/index.ts +147 -0
  285. package/src/types/slots.ts +11 -0
  286. package/src/types.ts +1 -0
  287. package/src/ui/components/ActionButton.tsx +97 -0
  288. package/src/ui/components/ActionPanel.tsx +315 -0
  289. package/src/ui/components/Card.tsx +378 -0
  290. package/src/ui/components/CardDragSurface.tsx +1076 -0
  291. package/src/ui/components/ChromeSuppressionContext.tsx +70 -0
  292. package/src/ui/components/CostDisplay.tsx +145 -0
  293. package/src/ui/components/DiceRoller.tsx +581 -0
  294. package/src/ui/components/Drawer.tsx +180 -0
  295. package/src/ui/components/ErrorBoundary.tsx +275 -0
  296. package/src/ui/components/GameEndDisplay.tsx +398 -0
  297. package/src/ui/components/GameSkeleton.tsx +260 -0
  298. package/src/ui/components/Hand.tsx +468 -0
  299. package/src/ui/components/HandDock.tsx +299 -0
  300. package/src/ui/components/HandView.tsx +441 -0
  301. package/src/ui/components/MobileHandTray.tsx +381 -0
  302. package/src/ui/components/MoreActions.tsx +143 -0
  303. package/src/ui/components/PhaseIndicator.tsx +341 -0
  304. package/src/ui/components/PlayArea.tsx +146 -0
  305. package/src/ui/components/PrimaryActionButton.tsx +336 -0
  306. package/src/ui/components/PrimaryButton.tsx +45 -0
  307. package/src/ui/components/ResourceCounter.tsx +270 -0
  308. package/src/ui/components/StagingZone.tsx +134 -0
  309. package/src/ui/components/ThemedButton.tsx +113 -0
  310. package/src/ui/components/Toast.tsx +264 -0
  311. package/src/ui/components/board/HexGrid.tsx +1294 -0
  312. package/src/ui/components/board/NetworkGraph.tsx +476 -0
  313. package/src/ui/components/board/SlotSystem.tsx +388 -0
  314. package/src/ui/components/board/SquareGrid.tsx +1165 -0
  315. package/src/ui/components/board/TrackBoard.tsx +496 -0
  316. package/src/ui/components/board/ZoneMap.tsx +448 -0
  317. package/src/ui/components/board/hex-board-view.ts +123 -0
  318. package/src/ui/components/board/index.ts +142 -0
  319. package/src/ui/components/board/interaction-accessibility.ts +21 -0
  320. package/src/ui/components/board/target-layer.ts +66 -0
  321. package/src/ui/components/card-render-content.type-test.ts +27 -0
  322. package/src/ui/components/hand-layout-math.ts +163 -0
  323. package/src/ui/components/hand-pointer-engine.ts +413 -0
  324. package/src/ui/components/index.ts +245 -0
  325. package/src/ui/components.ts +1 -0
  326. package/src/ui/defaults/components.tsx +106 -0
  327. package/src/ui/defaults/index.ts +8 -0
  328. package/src/ui/defaults.ts +1 -0
  329. package/src/ui/errors/ValidationError.ts +29 -0
  330. package/src/ui/helpers/cards.ts +19 -0
  331. package/src/ui/helpers/track-board.ts +211 -0
  332. package/src/ui/hooks/useBoardTopology.ts +316 -0
  333. package/src/ui/hooks/useCards.ts +10 -0
  334. package/src/ui/hooks/useHandCardPointer.ts +381 -0
  335. package/src/ui/hooks/useHandLayout.ts +378 -0
  336. package/src/ui/hooks/useHandPresentation.ts +121 -0
  337. package/src/ui/hooks/useHexBoard.ts +74 -0
  338. package/src/ui/hooks/useHexGrid.ts +185 -0
  339. package/src/ui/hooks/useIsMobile.ts +35 -0
  340. package/src/ui/hooks/usePanZoom.ts +278 -0
  341. package/src/ui/hooks/useSquareBoard.ts +124 -0
  342. package/src/ui/hooks/useSquareGrid.ts +328 -0
  343. package/src/ui/index.ts +98 -0
  344. package/src/ui/internal/ui/alert.tsx +51 -0
  345. package/src/ui/internal/ui/button.tsx +58 -0
  346. package/src/ui/internal/ui/dialog.tsx +134 -0
  347. package/src/ui/internal/ui/input.tsx +21 -0
  348. package/src/ui/internal/ui/label.tsx +21 -0
  349. package/src/ui/internal/ui/select.tsx +129 -0
  350. package/src/ui/internal/ui/tooltip.tsx +54 -0
  351. package/src/ui/internal/ui/utils.ts +5 -0
  352. package/src/ui/plugin-styles.css +250 -0
  353. package/src/ui/primitives/dialog-lifecycle.ts +58 -0
  354. package/src/ui/primitives/dice.tsx +79 -0
  355. package/src/ui/primitives/primitive-props.tsx +101 -0
  356. package/src/ui/theme/ThemeProvider.tsx +252 -0
  357. package/src/ui/theme/board.ts +61 -0
  358. package/src/ui/theme/css-vars.ts +105 -0
  359. package/src/ui/theme/derive.ts +240 -0
  360. package/src/ui/theme/index.ts +61 -0
  361. package/src/ui/theme/presets/arcade.ts +261 -0
  362. package/src/ui/theme/presets/studio.ts +261 -0
  363. package/src/ui/theme/presets/tabletop.ts +266 -0
  364. package/src/ui/theme/tokens.ts +392 -0
  365. package/src/ui/types/hex-color.ts +20 -0
  366. package/src/ui/types/player-state.ts +463 -0
  367. package/src/ui/types/tiled-board.ts +785 -0
  368. package/src/ui/types/visual-state.ts +137 -0
  369. package/src/ui.ts +1 -0
package/package.json ADDED
@@ -0,0 +1,199 @@
1
+ {
2
+ "name": "@dreamboard-games/sdk",
3
+ "version": "0.2.0",
4
+ "description": "Dreamboard SDK package set metadata and public facade",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "bun": "./src/index.ts",
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js",
13
+ "default": "./dist/index.js"
14
+ },
15
+ "./package-set": {
16
+ "bun": "./src/package-set.ts",
17
+ "types": "./dist/package-set.d.ts",
18
+ "import": "./dist/package-set.js",
19
+ "default": "./dist/package-set.js"
20
+ },
21
+ "./types": {
22
+ "bun": "./src/types.ts",
23
+ "types": "./dist/types.d.ts",
24
+ "import": "./dist/types.js",
25
+ "default": "./dist/types.js"
26
+ },
27
+ "./reducer": {
28
+ "bun": "./src/reducer.ts",
29
+ "types": "./dist/reducer.d.ts",
30
+ "import": "./dist/reducer.js",
31
+ "default": "./dist/reducer.js"
32
+ },
33
+ "./ui": {
34
+ "bun": "./src/ui.ts",
35
+ "types": "./dist/ui.d.ts",
36
+ "import": "./dist/ui.js",
37
+ "default": "./dist/ui.js"
38
+ },
39
+ "./ui/components": {
40
+ "bun": "./src/ui/components.ts",
41
+ "types": "./dist/ui/components.d.ts",
42
+ "import": "./dist/ui/components.js",
43
+ "default": "./dist/ui/components.js"
44
+ },
45
+ "./ui/defaults": {
46
+ "bun": "./src/ui/defaults.ts",
47
+ "types": "./dist/ui/defaults.d.ts",
48
+ "import": "./dist/ui/defaults.js",
49
+ "default": "./dist/ui/defaults.js"
50
+ },
51
+ "./ui/types/player-state": {
52
+ "bun": "./src/ui/types/player-state.ts",
53
+ "types": "./dist/ui/types/player-state.d.ts",
54
+ "import": "./dist/ui/types/player-state.js",
55
+ "default": "./dist/ui/types/player-state.js"
56
+ },
57
+ "./ui/plugin-styles.css": {
58
+ "default": "./dist/ui/plugin-styles.css"
59
+ },
60
+ "./runtime": {
61
+ "bun": "./src/runtime.ts",
62
+ "types": "./dist/runtime.d.ts",
63
+ "import": "./dist/runtime.js",
64
+ "default": "./dist/runtime.js"
65
+ },
66
+ "./runtime/primitives": {
67
+ "bun": "./src/runtime/primitives.ts",
68
+ "types": "./dist/runtime/primitives.d.ts",
69
+ "import": "./dist/runtime/primitives.js",
70
+ "default": "./dist/runtime/primitives.js"
71
+ },
72
+ "./runtime/workspace-contract": {
73
+ "bun": "./src/runtime/workspace-contract.ts",
74
+ "types": "./dist/runtime/workspace-contract.d.ts",
75
+ "import": "./dist/runtime/workspace-contract.js",
76
+ "default": "./dist/runtime/workspace-contract.js"
77
+ },
78
+ "./runtime/types/runtime-api": {
79
+ "bun": "./src/runtime/types/runtime-api.ts",
80
+ "types": "./dist/runtime/types/runtime-api.d.ts",
81
+ "import": "./dist/runtime/types/runtime-api.js",
82
+ "default": "./dist/runtime/types/runtime-api.js"
83
+ },
84
+ "./generated/runtime": {
85
+ "bun": "./src/generated/runtime.ts",
86
+ "types": "./dist/generated/runtime.d.ts",
87
+ "import": "./dist/generated/runtime.js",
88
+ "default": "./dist/generated/runtime.js"
89
+ },
90
+ "./generated/runtime-api": {
91
+ "bun": "./src/generated/runtime-api.ts",
92
+ "types": "./dist/generated/runtime-api.d.ts",
93
+ "import": "./dist/generated/runtime-api.js",
94
+ "default": "./dist/generated/runtime-api.js"
95
+ },
96
+ "./generated/runtime/primitives": {
97
+ "bun": "./src/generated/runtime/primitives.ts",
98
+ "types": "./dist/generated/runtime/primitives.d.ts",
99
+ "import": "./dist/generated/runtime/primitives.js",
100
+ "default": "./dist/generated/runtime/primitives.js"
101
+ },
102
+ "./generated/workspace-contract": {
103
+ "bun": "./src/generated/workspace-contract.ts",
104
+ "types": "./dist/generated/workspace-contract.d.ts",
105
+ "import": "./dist/generated/workspace-contract.js",
106
+ "default": "./dist/generated/workspace-contract.js"
107
+ },
108
+ "./infrastructure/reducer-bundle-abi": {
109
+ "bun": "./src/infrastructure/reducer-bundle-abi.ts",
110
+ "types": "./dist/infrastructure/reducer-bundle-abi.d.ts",
111
+ "import": "./dist/infrastructure/reducer-bundle-abi.js",
112
+ "default": "./dist/infrastructure/reducer-bundle-abi.js"
113
+ },
114
+ "./infrastructure/workspace-codegen": {
115
+ "bun": "./src/infrastructure/workspace-codegen.ts",
116
+ "types": "./dist/infrastructure/workspace-codegen.d.ts",
117
+ "import": "./dist/infrastructure/workspace-codegen.js",
118
+ "default": "./dist/infrastructure/workspace-codegen.js"
119
+ },
120
+ "./testing": {
121
+ "bun": "./src/testing.ts",
122
+ "types": "./dist/testing.d.ts",
123
+ "import": "./dist/testing.js",
124
+ "default": "./dist/testing.js"
125
+ },
126
+ "./package.json": "./package.json"
127
+ },
128
+ "files": [
129
+ "LICENSE.md",
130
+ "dist",
131
+ "src",
132
+ "README.md",
133
+ "!src/**/*.test.ts",
134
+ "!src/**/*.test.tsx",
135
+ "!src/**/__fixtures__/**",
136
+ "!src/**/*.stories.ts",
137
+ "!src/**/*.stories.tsx",
138
+ "!src/stories/**",
139
+ "!visual/**",
140
+ "!.turbo/**",
141
+ "!tsconfig.tsbuildinfo"
142
+ ],
143
+ "scripts": {
144
+ "build": "tsup && mkdir -p dist/ui && cp src/ui/plugin-styles.css dist/ui/plugin-styles.css",
145
+ "typecheck": "tsc --noEmit",
146
+ "lint": "eslint 'src/**/*.ts'",
147
+ "test": "bun test"
148
+ },
149
+ "dependencies": {
150
+ "@radix-ui/react-dialog": "^1.1.14",
151
+ "@radix-ui/react-accordion": "^1.2.12",
152
+ "@radix-ui/react-label": "^2.1.6",
153
+ "@radix-ui/react-select": "^2.2.5",
154
+ "@radix-ui/react-slot": "^1.1.2",
155
+ "@radix-ui/react-tooltip": "^1.2.8",
156
+ "@use-gesture/react": "^10.3.1",
157
+ "clsx": "^2.1.1",
158
+ "framer-motion": "^11.15.0",
159
+ "lucide-react": "^0.562.0",
160
+ "react": "^19.2.0",
161
+ "react-dom": "^19.2.0",
162
+ "tailwindcss": "^4.1.5",
163
+ "vaul": "^1.1.2",
164
+ "zod": "4.4.3",
165
+ "zustand": "^5.0.4"
166
+ },
167
+ "devDependencies": {
168
+ "@happy-dom/global-registrator": "^20.9.0",
169
+ "@types/node": "^24.5.2",
170
+ "@types/react": "^19.0.0",
171
+ "@types/react-dom": "^19.0.0",
172
+ "eslint": "^9.39.0",
173
+ "tsup": "^8.5.0",
174
+ "typescript": "^5.9.2"
175
+ },
176
+ "peerDependencies": {
177
+ "framer-motion": "^11.0.0 || ^12.0.0",
178
+ "react": "^19.0.0",
179
+ "zod": "4.4.3"
180
+ },
181
+ "publishConfig": {
182
+ "access": "public"
183
+ },
184
+ "repository": {
185
+ "type": "git",
186
+ "url": "git+https://github.com/dreamboard-games/dreamboard-sdk.git",
187
+ "directory": "packages/sdk"
188
+ },
189
+ "bugs": {
190
+ "url": "https://github.com/dreamboard-games/dreamboard-sdk/issues"
191
+ },
192
+ "homepage": "https://github.com/dreamboard-games/dreamboard-sdk#readme",
193
+ "keywords": [
194
+ "dreamboard",
195
+ "sdk",
196
+ "package-set"
197
+ ],
198
+ "license": "SEE LICENSE IN LICENSE.md"
199
+ }
@@ -0,0 +1,90 @@
1
+ // @generated by packages/reducer-contract/scripts/generate-ts.mjs
2
+ // DO NOT EDIT BY HAND. Edit schema/reducer-runtime.schema.json and rerun `pnpm generate`.
3
+
4
+ /* eslint-disable */
5
+ import type * as Wire from "./wire";
6
+
7
+ /**
8
+ * Typed effect constructors. Authors MUST go through these; hand-constructing
9
+ * Wire.Effect objects is banned by convention because it's how wire drift
10
+ * re-enters the codebase.
11
+ *
12
+ * The `effectId` is minted by the runtime (see createEffectIdMinter below),
13
+ * not by the author. Each builder returns a `PendingEffect` that carries
14
+ * the optional continuation; the reducer bundle's accept materializer splits
15
+ * pending effects into the wire's `effects[]` + `continuations` map.
16
+ */
17
+
18
+ export type PendingEffect = Wire.Effect & {
19
+ readonly __continuation?: Wire.ContinuationToken;
20
+ };
21
+
22
+ export type EffectIdMinter = () => Wire.EffectId;
23
+
24
+ /**
25
+ * Produces sequential, deterministic effect ids scoped to a single accept
26
+ * payload: "ef0", "ef1", ... . Uniqueness only needs to be local to the
27
+ * payload because the host consumes and discards them per dispatch.
28
+ */
29
+ export function createEffectIdMinter(): EffectIdMinter {
30
+ let i = 0;
31
+ return () => `ef${i++}` as Wire.EffectId;
32
+ }
33
+
34
+ export type EffectBuilders = {
35
+ transition(args: { to: string }, continuation?: Wire.ContinuationToken): PendingEffect;
36
+ rollDie(args: { dieId: string }, continuation?: Wire.ContinuationToken): PendingEffect;
37
+ shuffleSharedZone(args: { zoneId: string }, continuation?: Wire.ContinuationToken): PendingEffect;
38
+ shufflePlayerZone(args: { zoneId: string; playerId: string }, continuation?: Wire.ContinuationToken): PendingEffect;
39
+ };
40
+
41
+ export function createEffectBuilders(mint: EffectIdMinter): EffectBuilders {
42
+ return {
43
+ transition(args, continuation) {
44
+ const effect = { effectId: mint(), type: "transition" as const, to: args.to };
45
+ return continuation === undefined
46
+ ? (effect as PendingEffect)
47
+ : Object.assign(effect, { __continuation: continuation });
48
+ },
49
+ rollDie(args, continuation) {
50
+ const effect = { effectId: mint(), type: "rollDie" as const, dieId: args.dieId };
51
+ return continuation === undefined
52
+ ? (effect as PendingEffect)
53
+ : Object.assign(effect, { __continuation: continuation });
54
+ },
55
+ shuffleSharedZone(args, continuation) {
56
+ const effect = { effectId: mint(), type: "shuffleSharedZone" as const, zoneId: args.zoneId };
57
+ return continuation === undefined
58
+ ? (effect as PendingEffect)
59
+ : Object.assign(effect, { __continuation: continuation });
60
+ },
61
+ shufflePlayerZone(args, continuation) {
62
+ const effect = { effectId: mint(), type: "shufflePlayerZone" as const, zoneId: args.zoneId, playerId: args.playerId };
63
+ return continuation === undefined
64
+ ? (effect as PendingEffect)
65
+ : Object.assign(effect, { __continuation: continuation });
66
+ },
67
+ };
68
+ }
69
+
70
+ /**
71
+ * Takes a list of PendingEffects and splits them into the canonical wire
72
+ * shape: `effects[]` (stripped of `__continuation`) + `continuations` map
73
+ * keyed by effectId. Use at the boundary where reduce/dispatch results leave
74
+ * author code and enter the wire.
75
+ */
76
+ export function materializeAccept(pending: ReadonlyArray<PendingEffect>): {
77
+ effects: Wire.Effect[];
78
+ continuations: Wire.ContinuationMap;
79
+ } {
80
+ const effects: Wire.Effect[] = [];
81
+ const continuations: Wire.ContinuationMap = {};
82
+ for (const pe of pending) {
83
+ const { __continuation, ...effect } = pe as PendingEffect & { __continuation?: Wire.ContinuationToken };
84
+ effects.push(effect as Wire.Effect);
85
+ if (__continuation !== undefined) {
86
+ continuations[(effect as Wire.Effect).effectId] = __continuation;
87
+ }
88
+ }
89
+ return { effects, continuations };
90
+ }
@@ -0,0 +1,9 @@
1
+ // @generated by packages/reducer-contract/scripts/generate-ts.mjs
2
+ // DO NOT EDIT BY HAND. Edit schema/reducer-runtime.schema.json and rerun `pnpm generate`.
3
+
4
+ /**
5
+ * The wire-protocol version this package implements. Bumped in lockstep with
6
+ * any breaking change to schema/reducer-runtime.schema.json. At bundle load
7
+ * time hosts refuse bundles whose major version differs.
8
+ */
9
+ export const REDUCER_CONTRACT_VERSION = "0.2.0" as const;
@@ -0,0 +1,100 @@
1
+ // @generated by packages/reducer-contract/scripts/generate-ts.mjs
2
+ // DO NOT EDIT BY HAND. Edit schema/reducer-runtime.schema.json and rerun `pnpm generate`.
3
+
4
+ /* eslint-disable */
5
+
6
+ export type ReducerContractVersion = string;
7
+
8
+ export type EffectId = string;
9
+
10
+ export type ContinuationToken = { "id": string; "data": JsonValue };
11
+
12
+ export type ContinuationMap = Record<string, ContinuationToken>;
13
+
14
+ export type JsonValue = Record<string, unknown> | Array<unknown> | string | number | boolean | null;
15
+
16
+ export type ReducerSetupSelection = { "profileId": string; "optionValues": Record<string, string | null> };
17
+
18
+ export type RngState = { "seed": number | null; "cursor": number; "trace": Array<string> };
19
+
20
+ export type ReducerFlowState = { "currentPhase": string; "turn": number; "round": number; "activePlayers": Array<string> };
21
+
22
+ export type RuntimeSimultaneousSubmission = { "interactionId": string; "params": JsonValue };
23
+
24
+ export type RuntimeSimultaneousCurrent = { "phaseName": string; "actors": Array<string>; "submissions": Record<string, RuntimeSimultaneousSubmission> };
25
+
26
+ export type RuntimeSimultaneousState = { "current": RuntimeSimultaneousCurrent | null };
27
+
28
+ export type TransitionRecord = { "from": string; "to": string };
29
+
30
+ export type ReducerRuntimeState = { "rng": RngState; "setup": ReducerSetupSelection | null; "simultaneous": RuntimeSimultaneousState; "lastTransition": TransitionRecord | null };
31
+
32
+ export type ReducerDomainState = { "table": JsonValue; "publicState": JsonValue; "privateState": Record<string, JsonValue>; "hiddenState": JsonValue; "flow": ReducerFlowState; "phase": JsonValue };
33
+
34
+ export type ReducerSessionState = { "domain": ReducerDomainState; "runtime": ReducerRuntimeState };
35
+
36
+ export type GameInput = GameInputInteraction;
37
+
38
+ export type GameInputInteraction = { "kind": "interaction"; "playerId": string; "interactionId": string; "params": JsonValue };
39
+
40
+ export type Effect = EffectTransition | EffectRollDie | EffectShuffleSharedZone | EffectShufflePlayerZone;
41
+
42
+ export type EffectTransition = { "effectId": EffectId; "type": "transition"; "to": string };
43
+
44
+ export type EffectRollDie = { "effectId": EffectId; "type": "rollDie"; "dieId": string };
45
+
46
+ export type EffectShuffleSharedZone = { "effectId": EffectId; "type": "shuffleSharedZone"; "zoneId": string };
47
+
48
+ export type EffectShufflePlayerZone = { "effectId": EffectId; "type": "shufflePlayerZone"; "zoneId": string; "playerId": string };
49
+
50
+ export type ReducerInputValidationResult = { "valid": boolean; "errorCode"?: string; "message"?: string };
51
+
52
+ export type InitializeRequest = { "table": JsonValue; "playerIds": Array<string>; "rngSeed"?: number | null; "setup"?: ReducerSetupSelection | null };
53
+
54
+ export type InitializePhaseRequest = { "state": ReducerSessionState; "to": string };
55
+
56
+ export type ValidateInputRequest = { "state": ReducerSessionState; "input": GameInput };
57
+
58
+ export type ReduceRequest = { "state": ReducerSessionState; "input": GameInput };
59
+
60
+ export type DispatchRequest = { "state": ReducerSessionState; "input": GameInput };
61
+
62
+ export type ReduceResult = ReduceResultReject | ReduceResultAccept;
63
+
64
+ export type ReduceResultReject = { "kind": "reject"; "errorCode": string; "message"?: string };
65
+
66
+ export type ReduceResultAccept = { "kind": "accept"; "state": ReducerSessionState; "effects": Array<Effect>; "continuations": ContinuationMap };
67
+
68
+ export type DispatchTrace = DispatchTraceAcceptedClientInput | DispatchTraceAppliedEffect | DispatchTraceRngConsumption;
69
+
70
+ export type DispatchTraceAcceptedClientInput = { "kind": "acceptedClientInput"; "input": GameInput };
71
+
72
+ export type DispatchTraceAppliedEffect = { "kind": "appliedEffect"; "effect": Effect; "continuation"?: ContinuationToken };
73
+
74
+ export type DispatchTraceRngConsumption = { "kind": "rngConsumption"; "operation": string; "traceEntry": string };
75
+
76
+ export type DispatchResult = DispatchResultReject | DispatchResultAccept;
77
+
78
+ export type DispatchResultReject = { "kind": "reject"; "errorCode": string; "message"?: string };
79
+
80
+ export type DispatchResultAccept = { "kind": "accept"; "state": ReducerSessionState; "trace": Array<DispatchTrace> };
81
+
82
+ export type ReducerRuntimeLogEntry = ReducerRuntimeLogEntryAcceptedClientInput | ReducerRuntimeLogEntryAppliedEffect | ReducerRuntimeLogEntryRngConsumption | ReducerRuntimeLogEntryStateCommit;
83
+
84
+ export type ReducerRuntimeLogEntryAcceptedClientInput = { "kind": "acceptedClientInput"; "version": number; "input": GameInput };
85
+
86
+ export type ReducerRuntimeLogEntryAppliedEffect = { "kind": "appliedEffect"; "version": number; "effect": Effect; "continuation": ContinuationToken | null };
87
+
88
+ export type ReducerRuntimeLogEntryRngConsumption = { "kind": "rngConsumption"; "version": number; "operation": string; "traceEntry": string };
89
+
90
+ export type ReducerRuntimeLogEntryStateCommit = { "kind": "stateCommit"; "version": number; "state": ReducerSessionState };
91
+
92
+ export type SeatProjection = { "view"?: JsonValue; "availableInteractionRefs"?: JsonValue; "zones"?: JsonValue };
93
+
94
+ export type SimultaneousPhaseProjection = { "phaseName": string; "interactionId": string; "actorIds": Array<string>; "sealedPlayerIds": Array<string>; "pendingPlayerIds": Array<string> };
95
+
96
+ export type SeatProjectionBundle = { "currentStage"?: string | null; "stageSeats"?: Array<string>; "simultaneousPhase"?: SimultaneousPhaseProjection | null; "interactionsByRef"?: JsonValue; "seats": Record<string, SeatProjection> };
97
+
98
+ export type ProjectSeatsDynamicRequest = { "state": ReducerSessionState; "playerIds": Array<string>; "viewId"?: string; "projectionMode"?: "full" | "actionsOnly" | null };
99
+
100
+ export type BoardStaticProjection = { "view": JsonValue; "hash": string; "manifestVersion": string };
@@ -0,0 +1,101 @@
1
+ // @generated by packages/reducer-contract/scripts/generate-ts.mjs
2
+ // DO NOT EDIT BY HAND. Edit schema/reducer-runtime.schema.json and rerun `pnpm generate`.
3
+
4
+ /* eslint-disable */
5
+ import { z } from "zod";
6
+
7
+ export const ReducerContractVersionSchema = z.string().regex(new RegExp("^[0-9]+\\.[0-9]+\\.[0-9]+$"));
8
+
9
+ export const EffectIdSchema = z.string().min(1);
10
+
11
+ export const JsonValueSchema = z.union([z.record(z.string(), z.unknown()), z.array(z.unknown()), z.string(), z.number(), z.boolean(), z.null()]);
12
+
13
+ export const ContinuationTokenSchema = z.object({ "id": z.string().min(1), "data": JsonValueSchema }).strict();
14
+
15
+ export const ContinuationMapSchema = z.record(z.string(), ContinuationTokenSchema);
16
+
17
+ export const ReducerSetupSelectionSchema = z.object({ "profileId": z.string().min(1), "optionValues": z.record(z.string(), z.union([z.string(), z.null()])) }).strict();
18
+
19
+ export const RngStateSchema = z.object({ "seed": z.union([z.number().refine(Number.isInteger, { message: "Expected integer" }), z.null()]), "cursor": z.number().int(), "trace": z.array(z.string()) }).strict();
20
+
21
+ export const ReducerFlowStateSchema = z.object({ "currentPhase": z.string().min(1), "turn": z.number().int(), "round": z.number().int(), "activePlayers": z.array(z.string().min(1)) }).strict();
22
+
23
+ export const RuntimeSimultaneousSubmissionSchema = z.object({ "interactionId": z.string().min(1), "params": JsonValueSchema }).strict();
24
+
25
+ export const RuntimeSimultaneousCurrentSchema = z.object({ "phaseName": z.string().min(1), "actors": z.array(z.string().min(1)), "submissions": z.record(z.string(), RuntimeSimultaneousSubmissionSchema) }).strict();
26
+
27
+ export const RuntimeSimultaneousStateSchema = z.object({ "current": z.union([RuntimeSimultaneousCurrentSchema, z.null()]) }).strict();
28
+
29
+ export const TransitionRecordSchema = z.object({ "from": z.string().min(1), "to": z.string().min(1) }).strict();
30
+
31
+ export const ReducerRuntimeStateSchema = z.object({ "rng": RngStateSchema, "setup": z.union([ReducerSetupSelectionSchema, z.null()]), "simultaneous": RuntimeSimultaneousStateSchema, "lastTransition": z.union([TransitionRecordSchema, z.null()]) }).strict();
32
+
33
+ export const ReducerDomainStateSchema = z.object({ "table": JsonValueSchema, "publicState": JsonValueSchema, "privateState": z.record(z.string(), JsonValueSchema), "hiddenState": JsonValueSchema, "flow": ReducerFlowStateSchema, "phase": JsonValueSchema }).strict();
34
+
35
+ export const ReducerSessionStateSchema = z.object({ "domain": ReducerDomainStateSchema, "runtime": ReducerRuntimeStateSchema }).strict();
36
+
37
+ export const GameInputInteractionSchema = z.object({ "kind": z.literal("interaction"), "playerId": z.string().min(1), "interactionId": z.string().min(1), "params": JsonValueSchema }).strict();
38
+
39
+ export const GameInputSchema = z.discriminatedUnion("kind", [GameInputInteractionSchema]);
40
+
41
+ export const EffectTransitionSchema = z.object({ "effectId": EffectIdSchema, "type": z.literal("transition"), "to": z.string().min(1) }).strict();
42
+
43
+ export const EffectRollDieSchema = z.object({ "effectId": EffectIdSchema, "type": z.literal("rollDie"), "dieId": z.string().min(1) }).strict();
44
+
45
+ export const EffectShuffleSharedZoneSchema = z.object({ "effectId": EffectIdSchema, "type": z.literal("shuffleSharedZone"), "zoneId": z.string().min(1) }).strict();
46
+
47
+ export const EffectShufflePlayerZoneSchema = z.object({ "effectId": EffectIdSchema, "type": z.literal("shufflePlayerZone"), "zoneId": z.string().min(1), "playerId": z.string().min(1) }).strict();
48
+
49
+ export const EffectSchema = z.discriminatedUnion("type", [EffectTransitionSchema, EffectRollDieSchema, EffectShuffleSharedZoneSchema, EffectShufflePlayerZoneSchema]);
50
+
51
+ export const ReducerInputValidationResultSchema = z.object({ "valid": z.boolean(), "errorCode": z.string().optional(), "message": z.string().optional() }).strict();
52
+
53
+ export const InitializeRequestSchema = z.object({ "table": JsonValueSchema, "playerIds": z.array(z.string().min(1)), "rngSeed": z.union([z.number().refine(Number.isInteger, { message: "Expected integer" }), z.null()]).optional(), "setup": z.union([ReducerSetupSelectionSchema, z.null()]).optional() }).strict();
54
+
55
+ export const InitializePhaseRequestSchema = z.object({ "state": ReducerSessionStateSchema, "to": z.string().min(1) }).strict();
56
+
57
+ export const ValidateInputRequestSchema = z.object({ "state": ReducerSessionStateSchema, "input": GameInputSchema }).strict();
58
+
59
+ export const ReduceRequestSchema = z.object({ "state": ReducerSessionStateSchema, "input": GameInputSchema }).strict();
60
+
61
+ export const DispatchRequestSchema = z.object({ "state": ReducerSessionStateSchema, "input": GameInputSchema }).strict();
62
+
63
+ export const ReduceResultRejectSchema = z.object({ "kind": z.literal("reject"), "errorCode": z.string().min(1), "message": z.string().optional() }).strict();
64
+
65
+ export const ReduceResultAcceptSchema = z.object({ "kind": z.literal("accept"), "state": ReducerSessionStateSchema, "effects": z.array(EffectSchema), "continuations": ContinuationMapSchema }).strict();
66
+
67
+ export const ReduceResultSchema = z.discriminatedUnion("kind", [ReduceResultRejectSchema, ReduceResultAcceptSchema]);
68
+
69
+ export const DispatchTraceAcceptedClientInputSchema = z.object({ "kind": z.literal("acceptedClientInput"), "input": GameInputSchema }).strict();
70
+
71
+ export const DispatchTraceAppliedEffectSchema = z.object({ "kind": z.literal("appliedEffect"), "effect": EffectSchema, "continuation": ContinuationTokenSchema.optional() }).strict();
72
+
73
+ export const DispatchTraceRngConsumptionSchema = z.object({ "kind": z.literal("rngConsumption"), "operation": z.string().min(1), "traceEntry": z.string() }).strict();
74
+
75
+ export const DispatchTraceSchema = z.discriminatedUnion("kind", [DispatchTraceAcceptedClientInputSchema, DispatchTraceAppliedEffectSchema, DispatchTraceRngConsumptionSchema]);
76
+
77
+ export const DispatchResultRejectSchema = z.object({ "kind": z.literal("reject"), "errorCode": z.string().min(1), "message": z.string().optional() }).strict();
78
+
79
+ export const DispatchResultAcceptSchema = z.object({ "kind": z.literal("accept"), "state": ReducerSessionStateSchema, "trace": z.array(DispatchTraceSchema) }).strict();
80
+
81
+ export const DispatchResultSchema = z.discriminatedUnion("kind", [DispatchResultRejectSchema, DispatchResultAcceptSchema]);
82
+
83
+ export const ReducerRuntimeLogEntryAcceptedClientInputSchema = z.object({ "kind": z.literal("acceptedClientInput"), "version": z.number().int(), "input": GameInputSchema }).strict();
84
+
85
+ export const ReducerRuntimeLogEntryAppliedEffectSchema = z.object({ "kind": z.literal("appliedEffect"), "version": z.number().int(), "effect": EffectSchema, "continuation": z.union([ContinuationTokenSchema, z.null()]) }).strict();
86
+
87
+ export const ReducerRuntimeLogEntryRngConsumptionSchema = z.object({ "kind": z.literal("rngConsumption"), "version": z.number().int(), "operation": z.string().min(1), "traceEntry": z.string() }).strict();
88
+
89
+ export const ReducerRuntimeLogEntryStateCommitSchema = z.object({ "kind": z.literal("stateCommit"), "version": z.number().int(), "state": ReducerSessionStateSchema }).strict();
90
+
91
+ export const ReducerRuntimeLogEntrySchema = z.discriminatedUnion("kind", [ReducerRuntimeLogEntryAcceptedClientInputSchema, ReducerRuntimeLogEntryAppliedEffectSchema, ReducerRuntimeLogEntryRngConsumptionSchema, ReducerRuntimeLogEntryStateCommitSchema]);
92
+
93
+ export const SeatProjectionSchema = z.object({ "view": JsonValueSchema.optional(), "availableInteractionRefs": JsonValueSchema.optional(), "zones": JsonValueSchema.optional() }).strict();
94
+
95
+ export const SimultaneousPhaseProjectionSchema = z.object({ "phaseName": z.string().min(1), "interactionId": z.string().min(1), "actorIds": z.array(z.string().min(1)), "sealedPlayerIds": z.array(z.string().min(1)), "pendingPlayerIds": z.array(z.string().min(1)) }).strict();
96
+
97
+ export const SeatProjectionBundleSchema = z.object({ "currentStage": z.union([z.string().min(1), z.null()]).optional(), "stageSeats": z.array(z.string().min(1)).optional(), "simultaneousPhase": z.union([SimultaneousPhaseProjectionSchema, z.null()]).optional(), "interactionsByRef": JsonValueSchema.optional(), "seats": z.record(z.string(), SeatProjectionSchema) }).strict();
98
+
99
+ export const ProjectSeatsDynamicRequestSchema = z.object({ "state": ReducerSessionStateSchema, "playerIds": z.array(z.string().min(1)), "viewId": z.string().min(1).optional(), "projectionMode": z.union([z.enum(["full", "actionsOnly"]), z.null()]).optional() }).strict();
100
+
101
+ export const BoardStaticProjectionSchema = z.object({ "view": JsonValueSchema, "hash": z.string().min(1), "manifestVersion": z.string() }).strict();
@@ -0,0 +1,2 @@
1
+ export * from "../../runtime/primitives.js";
2
+
@@ -0,0 +1,5 @@
1
+ export * from "../runtime/types/runtime-api.js";
2
+ export type {
3
+ PluginStateSnapshot,
4
+ ZoneHandlesSnapshot,
5
+ } from "../runtime-internal/types/plugin-state.js";
@@ -0,0 +1,35 @@
1
+ export * from "../runtime.js";
2
+ export { createWorkspaceUIContract } from "../runtime/workspace-contract.js";
3
+ export type {
4
+ BoardHexGridProps,
5
+ BoardHexViewProps,
6
+ BoardSpaceTargetProps,
7
+ ClientParamSchemaMap,
8
+ DreamboardUI,
9
+ GameMeState,
10
+ GamePlayersState,
11
+ GameRenderState,
12
+ GameTurnState,
13
+ ResourceCounterComponents,
14
+ TypedGame,
15
+ UIContract,
16
+ UIRootProps,
17
+ WorkspaceBoardSurface,
18
+ WorkspaceBoardSurfaceDescriptor,
19
+ WorkspaceBoardTargetInputSlot,
20
+ WorkspaceCardCollectionSurface,
21
+ WorkspaceCardCollectionSurfaceDescriptor,
22
+ WorkspaceCardInputSlot,
23
+ WorkspaceFormInputSlot,
24
+ WorkspaceHandSurface,
25
+ WorkspaceHandSurfaceDescriptor,
26
+ WorkspaceInteractionFormDescriptor,
27
+ WorkspaceInteractionFormsDescriptor,
28
+ WorkspaceInteractionSlotComponent,
29
+ WorkspacePileSurface,
30
+ WorkspacePileSurfaceDescriptor,
31
+ WorkspacePilesSurfaceDescriptor,
32
+ WorkspaceSurfaceSpec,
33
+ ZoneCardRenderItem,
34
+ ZoneListProps,
35
+ } from "../runtime/workspace-contract.js";
@@ -0,0 +1,2 @@
1
+ export * from "../runtime/workspace-contract.js";
2
+
package/src/index.ts ADDED
@@ -0,0 +1,7 @@
1
+ export {
2
+ DREAMBOARD_SDK_PACKAGE_SET,
3
+ DREAMBOARD_SDK_PACKAGES,
4
+ DREAMBOARD_SDK_VERSION,
5
+ type DreamboardSdkPackageName,
6
+ type DreamboardSdkPackageSet,
7
+ } from "./package-set.js";
@@ -0,0 +1,8 @@
1
+ export { REDUCER_CONTRACT_VERSION } from "../generated/reducer-contract/version.js";
2
+ export type {
3
+ MaybePromise,
4
+ ReducerBundleContract,
5
+ } from "./reducer-contract/bundle.js";
6
+ export { materializeManifestTable } from "./workspace-codegen/index.js";
7
+ export type * as ReducerWire from "../generated/reducer-contract/wire.js";
8
+ export * as ReducerWireZod from "../generated/reducer-contract/zod.js";
@@ -0,0 +1,37 @@
1
+ // @generated by packages/reducer-contract/scripts/generate-ts.mjs
2
+ // DO NOT EDIT BY HAND. Edit schema/reducer-runtime.operations.json and rerun `pnpm generate`.
3
+
4
+ /* eslint-disable */
5
+ import type * as Wire from "../../generated/reducer-contract/wire";
6
+
7
+ export type MaybePromise<T> = T | Promise<T>;
8
+
9
+ /**
10
+ * Canonical erased reducer boundary for `createReducerBundle(...)`.
11
+ *
12
+ * The callable method list is generated from
13
+ * `schema/reducer-runtime.operations.json`; payload DTOs come from
14
+ * `schema/reducer-runtime.schema.json`.
15
+ *
16
+ * This interface models the host/guest surface only. The concrete
17
+ * authored bundle stays strongly typed in `@dreamboard-games/sdk/reducer`, but every
18
+ * cross-runtime caller should agree on this shape.
19
+ */
20
+ export interface ReducerBundleContract {
21
+ readonly reducerContractVersion: Wire.ReducerContractVersion;
22
+ initialize(
23
+ input: Wire.InitializeRequest,
24
+ ): MaybePromise<Wire.ReducerSessionState>;
25
+ initializePhase(
26
+ input: Wire.InitializePhaseRequest,
27
+ ): MaybePromise<Wire.ReducerSessionState>;
28
+ validateInput(
29
+ input: Wire.ValidateInputRequest,
30
+ ): MaybePromise<Wire.ReducerInputValidationResult>;
31
+ reduce(input: Wire.ReduceRequest): MaybePromise<Wire.ReduceResult>;
32
+ dispatch(input: Wire.DispatchRequest): MaybePromise<Wire.DispatchResult>;
33
+ projectStatic(): Wire.BoardStaticProjection | null;
34
+ projectSeatsDynamic(
35
+ input: Wire.ProjectSeatsDynamicRequest,
36
+ ): Wire.SeatProjectionBundle;
37
+ }