@seriousgaming/sdk-tools 0.0.0-stage → 1.0.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 (391) hide show
  1. package/LICENSE +93 -0
  2. package/README.md +36 -2
  3. package/dist/bundling/logic-exports.d.ts +34 -0
  4. package/dist/bundling/node-builtins.d.ts +21 -0
  5. package/dist/bundling/transpiler.d.ts +7 -0
  6. package/dist/cli.js +27368 -0
  7. package/dist/client/dev-server.d.ts +59 -0
  8. package/dist/client/index.d.ts +28 -0
  9. package/dist/client/stub-services.d.ts +32 -0
  10. package/dist/client/test-session.d.ts +195 -0
  11. package/dist/client.js +16884 -0
  12. package/dist/core/asset-reference-translator.d.ts +46 -0
  13. package/dist/core/clock.d.ts +57 -0
  14. package/dist/core/faults.d.ts +65 -0
  15. package/dist/core/game-settings.d.ts +65 -0
  16. package/dist/core/history.d.ts +89 -0
  17. package/dist/core/listen-with-fallback.d.ts +30 -0
  18. package/dist/core/mutation-queue.d.ts +61 -0
  19. package/dist/core/package-scenario.d.ts +89 -0
  20. package/dist/core/participant-registry.d.ts +109 -0
  21. package/dist/core/pending-changes.d.ts +14 -0
  22. package/dist/core/protocol.d.ts +83 -0
  23. package/dist/core/scenario-drafts.d.ts +32 -0
  24. package/dist/core/session-endpoints.d.ts +108 -0
  25. package/dist/core/session-gates.d.ts +75 -0
  26. package/dist/core/session-host.d.ts +94 -0
  27. package/dist/core/session-refusals.d.ts +56 -0
  28. package/dist/core/session-rewind.d.ts +32 -0
  29. package/dist/core/session-roster.d.ts +128 -0
  30. package/dist/core/session-surfaces.d.ts +32 -0
  31. package/dist/core/session-ticks.d.ts +18 -0
  32. package/dist/core/session-timers.d.ts +84 -0
  33. package/dist/core/session-writes.d.ts +40 -0
  34. package/dist/core/session.d.ts +385 -0
  35. package/dist/core/settings-locks.d.ts +22 -0
  36. package/dist/core/team-names.d.ts +52 -0
  37. package/dist/core/team-state-store.d.ts +209 -0
  38. package/dist/core/tick-timer.d.ts +75 -0
  39. package/dist/dev/blob-links.d.ts +10 -0
  40. package/dist/dev/console/assets/index-DgFglsnA.js +204 -0
  41. package/dist/dev/console/index.html +12 -0
  42. package/dist/dev/console-path.d.ts +19 -0
  43. package/dist/dev/lockfile.d.ts +124 -0
  44. package/dist/dev/package-watcher.d.ts +21 -0
  45. package/dist/dev/routes.d.ts +67 -0
  46. package/dist/dev/shell.d.ts +260 -0
  47. package/dist/dev/surfaces.d.ts +41 -0
  48. package/dist/dev/tools-identity.d.ts +23 -0
  49. package/dist/dev/view/batch.d.ts +172 -0
  50. package/dist/dev/view/commands.d.ts +75 -0
  51. package/dist/dev/view/route.d.ts +58 -0
  52. package/dist/dev/view/view.d.ts +78 -0
  53. package/dist/dev/view/viewer.d.ts +32 -0
  54. package/dist/discovery/config.d.ts +9 -0
  55. package/dist/discovery/manifest-paths.d.ts +21 -0
  56. package/dist/discovery/removed-fields.d.ts +90 -0
  57. package/dist/docs/api/deck.md +386 -0
  58. package/dist/docs/api/index.md +67 -0
  59. package/dist/docs/api/sdk-commands.md +286 -0
  60. package/dist/docs/api/sdk-e2e.md +433 -0
  61. package/dist/docs/api/sdk-projection.md +207 -0
  62. package/dist/docs/api/sdk-testing.md +214 -0
  63. package/dist/docs/api/sdk-tools-client.md +560 -0
  64. package/dist/docs/api/sdk-ui-testing.md +231 -0
  65. package/dist/docs/api/sdk-ui.md +1269 -0
  66. package/dist/docs/api/sdk.md +2140 -0
  67. package/dist/docs/changelog-0.x.md +1156 -0
  68. package/dist/docs/changelog.md +236 -0
  69. package/dist/docs/cli-and-dev-server.md +217 -0
  70. package/dist/docs/cli-error-codes.md +154 -0
  71. package/dist/docs/cli-reference.md +2488 -0
  72. package/dist/docs/cli-simulation-testing.md +222 -0
  73. package/dist/docs/concepts/index.md +46 -0
  74. package/dist/docs/concepts/terminology.md +322 -0
  75. package/dist/docs/environment-variables.md +102 -0
  76. package/dist/docs/getting-started.md +145 -0
  77. package/dist/docs/guides/ai-facilitation.md +220 -0
  78. package/dist/docs/guides/capabilities.md +460 -0
  79. package/dist/docs/guides/endpoints.md +335 -0
  80. package/dist/docs/guides/engine-testing.md +477 -0
  81. package/dist/docs/guides/engine.md +527 -0
  82. package/dist/docs/guides/file-handling.md +405 -0
  83. package/dist/docs/guides/games.md +176 -0
  84. package/dist/docs/guides/global-settings.md +94 -0
  85. package/dist/docs/guides/guide.md +123 -0
  86. package/dist/docs/guides/hooks.md +183 -0
  87. package/dist/docs/guides/index.md +51 -0
  88. package/dist/docs/guides/internationalization.md +288 -0
  89. package/dist/docs/guides/llm-integration.md +635 -0
  90. package/dist/docs/guides/multi-team-games.md +586 -0
  91. package/dist/docs/guides/patterns.md +391 -0
  92. package/dist/docs/guides/presentation.md +196 -0
  93. package/dist/docs/guides/production-constraints.md +130 -0
  94. package/dist/docs/guides/scenario-editor.md +143 -0
  95. package/dist/docs/guides/scenarios.md +515 -0
  96. package/dist/docs/guides/session.md +972 -0
  97. package/dist/docs/guides/settings.md +458 -0
  98. package/dist/docs/guides/setup.md +193 -0
  99. package/dist/docs/guides/speech-generation.md +233 -0
  100. package/dist/docs/guides/starter-game.md +164 -0
  101. package/dist/docs/guides/testing.md +575 -0
  102. package/dist/docs/guides/tick-controller.md +569 -0
  103. package/dist/docs/guides/type-safety.md +516 -0
  104. package/dist/docs/guides/ui.md +1389 -0
  105. package/dist/docs/guides/upgrading.md +636 -0
  106. package/dist/docs/guides/validators.md +217 -0
  107. package/dist/docs/guides/waiting-room.md +244 -0
  108. package/dist/docs/index.md +41 -0
  109. package/dist/docs/recipes/act-on-the-session-from-an-endpoint.md +95 -0
  110. package/dist/docs/recipes/adapt-a-game-for-walkthroughs.md +133 -0
  111. package/dist/docs/recipes/adapt-ui-for-observers.md +74 -0
  112. package/dist/docs/recipes/call-endpoint-from-ui.md +109 -0
  113. package/dist/docs/recipes/check-a-package-from-a-script.md +117 -0
  114. package/dist/docs/recipes/create-capability.md +66 -0
  115. package/dist/docs/recipes/create-endpoint.md +127 -0
  116. package/dist/docs/recipes/create-engine.md +111 -0
  117. package/dist/docs/recipes/create-game.md +70 -0
  118. package/dist/docs/recipes/create-guide.md +75 -0
  119. package/dist/docs/recipes/create-hook.md +80 -0
  120. package/dist/docs/recipes/create-presentation.md +142 -0
  121. package/dist/docs/recipes/create-scenario-editor.md +102 -0
  122. package/dist/docs/recipes/create-scenario.md +98 -0
  123. package/dist/docs/recipes/create-session-ui.md +116 -0
  124. package/dist/docs/recipes/create-settings.md +88 -0
  125. package/dist/docs/recipes/create-setup.md +115 -0
  126. package/dist/docs/recipes/create-tick-controller.md +65 -0
  127. package/dist/docs/recipes/create-user-interface.md +96 -0
  128. package/dist/docs/recipes/create-validator.md +67 -0
  129. package/dist/docs/recipes/create-waiting-room-ui.md +109 -0
  130. package/dist/docs/recipes/declare-api-uses.md +67 -0
  131. package/dist/docs/recipes/design-state-for-concurrent-writes.md +96 -0
  132. package/dist/docs/recipes/distribute-package.md +80 -0
  133. package/dist/docs/recipes/e2e-testing.md +116 -0
  134. package/dist/docs/recipes/end-game-on-condition.md +154 -0
  135. package/dist/docs/recipes/fix-duplicate-packages.md +101 -0
  136. package/dist/docs/recipes/index.md +86 -0
  137. package/dist/docs/recipes/make-an-endpoint-external.md +101 -0
  138. package/dist/docs/recipes/negotiate-across-teams.md +164 -0
  139. package/dist/docs/recipes/observe-other-teams-state.md +119 -0
  140. package/dist/docs/recipes/publish-a-package.md +139 -0
  141. package/dist/docs/recipes/remember-a-viewers-choice.md +55 -0
  142. package/dist/docs/recipes/review-a-past-day.md +73 -0
  143. package/dist/docs/recipes/share-assets-across-scenarios.md +120 -0
  144. package/dist/docs/recipes/share-logic-between-engine-and-ui.md +130 -0
  145. package/dist/docs/recipes/show-all-teams-participants.md +109 -0
  146. package/dist/docs/recipes/start-from-an-empty-package.md +169 -0
  147. package/dist/docs/recipes/take-a-file-in-an-endpoint.md +82 -0
  148. package/dist/docs/recipes/test-a-multi-role-game.md +51 -0
  149. package/dist/docs/recipes/test-user-interface.md +95 -0
  150. package/dist/docs/recipes/test-with-engine.md +115 -0
  151. package/dist/docs/recipes/upload-and-display-files.md +148 -0
  152. package/dist/docs/recipes/use-request-play.md +65 -0
  153. package/dist/docs/recipes/use-request-tick.md +75 -0
  154. package/dist/docs/troubleshooting.md +816 -0
  155. package/dist/execution/blob-inputs.d.ts +57 -0
  156. package/dist/execution/bundle-reload.d.ts +42 -0
  157. package/dist/execution/config-resolver.d.ts +127 -0
  158. package/dist/execution/configuration-builder.d.ts +66 -0
  159. package/dist/execution/context-composition.d.ts +161 -0
  160. package/dist/execution/endpoint-actions.d.ts +9 -0
  161. package/dist/execution/endpoint-payloads.d.ts +32 -0
  162. package/dist/execution/endpoint-runner.d.ts +129 -0
  163. package/dist/execution/engine-state.d.ts +40 -0
  164. package/dist/execution/executor-callbacks.d.ts +56 -0
  165. package/dist/execution/executor.d.ts +436 -0
  166. package/dist/execution/gates.d.ts +45 -0
  167. package/dist/execution/hook-chain.d.ts +25 -0
  168. package/dist/execution/logic-calls.d.ts +190 -0
  169. package/dist/execution/logic-failure.d.ts +84 -0
  170. package/dist/execution/logic-loader.d.ts +54 -0
  171. package/dist/execution/logic-result.d.ts +76 -0
  172. package/dist/execution/tick-controller-call.d.ts +32 -0
  173. package/dist/execution/types.d.ts +48 -0
  174. package/dist/generation/ts-type.d.ts +39 -0
  175. package/dist/guide/locale.d.ts +12 -0
  176. package/dist/guide/video-registry.d.ts +42 -0
  177. package/dist/help-examples.d.ts +125 -0
  178. package/dist/host/adapter.d.ts +67 -0
  179. package/dist/host/host-channel.d.ts +222 -0
  180. package/dist/host/index.d.ts +20 -0
  181. package/dist/host/protocol.d.ts +783 -0
  182. package/dist/host/surfaces.d.ts +42 -0
  183. package/dist/host/theme.d.ts +55 -0
  184. package/dist/host.js +583 -0
  185. package/dist/prompts/index.d.ts +7 -0
  186. package/dist/prompts/schema-builder.d.ts +29 -0
  187. package/dist/prompts/types.d.ts +108 -0
  188. package/dist/prompts/validators.d.ts +32 -0
  189. package/dist/runtime/capability-scope.d.ts +6 -0
  190. package/dist/runtime/context-merge.d.ts +29 -0
  191. package/dist/runtime/context-projection.d.ts +41 -0
  192. package/dist/runtime/guarded-callbacks.d.ts +15 -0
  193. package/dist/runtime/index.d.ts +27 -0
  194. package/dist/runtime/manifest-version.d.ts +55 -0
  195. package/dist/runtime/tick-validation.d.ts +25 -0
  196. package/dist/runtime.js +346 -0
  197. package/dist/schema.json +1546 -0
  198. package/dist/server/vite-plugin.d.ts +46 -0
  199. package/dist/services/tts/client.d.ts +51 -0
  200. package/dist/services/tts/elevenlabs.d.ts +24 -0
  201. package/dist/services/tts/types.d.ts +44 -0
  202. package/dist/storage/asset-resolver.d.ts +49 -0
  203. package/dist/storage/blob-store.d.ts +41 -0
  204. package/dist/templates/endpoint/logic.test.ts.liquid +61 -0
  205. package/dist/templates/endpoint/logic.ts.liquid +25 -0
  206. package/dist/templates/engine/init.json.liquid +7 -0
  207. package/dist/templates/engine/logic-aggregate.test.ts.liquid +90 -0
  208. package/dist/templates/engine/logic-aggregate.ts.liquid +46 -0
  209. package/dist/templates/engine/logic.test.ts.liquid +61 -0
  210. package/dist/templates/engine/logic.ts.liquid +32 -0
  211. package/dist/templates/engine/run.json.liquid +7 -0
  212. package/dist/templates/guide/01-at-a-glance.md.liquid +19 -0
  213. package/dist/templates/guide/02-preparation.md.liquid +18 -0
  214. package/dist/templates/guide/03-running-the-session.md.liquid +37 -0
  215. package/dist/templates/hook/logic.test.ts.liquid +46 -0
  216. package/dist/templates/hook/logic.ts.liquid +12 -0
  217. package/dist/templates/package/CLAUDE.md.template +338 -0
  218. package/dist/templates/package/DESIGN.md.liquid +144 -0
  219. package/dist/templates/package/README.md.liquid +143 -0
  220. package/dist/templates/package/claude/rules/workflow-create-capability.md +26 -0
  221. package/dist/templates/package/claude/rules/workflow-create-endpoint.md +35 -0
  222. package/dist/templates/package/claude/rules/workflow-create-engine.md +35 -0
  223. package/dist/templates/package/claude/rules/workflow-create-guide.md +40 -0
  224. package/dist/templates/package/claude/rules/workflow-create-presentation.md +37 -0
  225. package/dist/templates/package/claude/rules/workflow-create-user-interface.md +31 -0
  226. package/dist/templates/package/claude/rules/workflow-publish-package.md +54 -0
  227. package/dist/templates/package/claude/rules/workflow-test-engine-or-ui.md +30 -0
  228. package/dist/templates/package/claude/rules/workflow-update-sdk-version.md +43 -0
  229. package/dist/templates/package/claude/settings.json.template +16 -0
  230. package/dist/templates/package/gitignore.template +15 -0
  231. package/dist/templates/package/global-setup.ts.template +21 -0
  232. package/dist/templates/package/globals.d.ts.template +2 -0
  233. package/dist/templates/package/oxfmtrc.json.template +14 -0
  234. package/dist/templates/package/oxlintrc.json.template +238 -0
  235. package/dist/templates/package/package.json.liquid +65 -0
  236. package/dist/templates/package/playwright.config.ts.liquid +19 -0
  237. package/dist/templates/package/pnpm-workspace.yaml.template +27 -0
  238. package/dist/templates/package/test-setup.ts.liquid +7 -0
  239. package/dist/templates/package/tsconfig.json.liquid +15 -0
  240. package/dist/templates/package/vite.config.ts.liquid +19 -0
  241. package/dist/templates/package/vitest.config.ts.liquid +25 -0
  242. package/dist/templates/package/vitest.engine.config.ts.liquid +12 -0
  243. package/dist/templates/presentation/index.html.liquid +20 -0
  244. package/dist/templates/presentation/src/App.tsx.liquid +49 -0
  245. package/dist/templates/presentation/src/Slides.tsx.liquid +81 -0
  246. package/dist/templates/presentation/src/i18n.ts.liquid +54 -0
  247. package/dist/templates/presentation/src/main.tsx.liquid +14 -0
  248. package/dist/templates/scenario_editor/src/App.test.tsx.liquid +30 -0
  249. package/dist/templates/scenario_editor/src/App.tsx.liquid +95 -0
  250. package/dist/templates/scenario_editor/src/i18n.ts.liquid +44 -0
  251. package/dist/templates/session/src/App.test.tsx.liquid +60 -0
  252. package/dist/templates/session/src/App.tsx.liquid +128 -0
  253. package/dist/templates/session/src/i18n.ts.liquid +53 -0
  254. package/dist/templates/session/src/main.tsx.liquid +48 -0
  255. package/dist/templates/session/src/theme.ts.liquid +46 -0
  256. package/dist/templates/settings-editor/index.html.liquid +12 -0
  257. package/dist/templates/settings-editor/src/main.tsx.liquid +48 -0
  258. package/dist/templates/settings-editor/src/theme.ts.liquid +24 -0
  259. package/dist/templates/setup/src/App.test.tsx.liquid +39 -0
  260. package/dist/templates/setup/src/App.tsx.liquid +102 -0
  261. package/dist/templates/setup/src/i18n.ts.liquid +47 -0
  262. package/dist/templates/starter-game/capabilities/briefing/capability.sdk.json +18 -0
  263. package/dist/templates/starter-game/capabilities/plan/capability.sdk.json +17 -0
  264. package/dist/templates/starter-game/capabilities/results/capability.sdk.json +61 -0
  265. package/dist/templates/starter-game/capabilities/roles/capability.sdk.json +17 -0
  266. package/dist/templates/starter-game/capabilities/weather/capability.sdk.json +23 -0
  267. package/dist/templates/starter-game/engine/defaults.ts +81 -0
  268. package/dist/templates/starter-game/engine/engine.sdk.json +12 -0
  269. package/dist/templates/starter-game/engine/logic.test.ts +221 -0
  270. package/dist/templates/starter-game/engine/logic.ts +149 -0
  271. package/dist/templates/starter-game/engine/test-helpers.ts +74 -0
  272. package/dist/templates/starter-game/engine/types.ts +139 -0
  273. package/dist/templates/starter-game/guide/content/en/01-at-a-glance.md +51 -0
  274. package/dist/templates/starter-game/guide/content/en/02-preparation.md +35 -0
  275. package/dist/templates/starter-game/guide/content/en/03-running-the-day.md +58 -0
  276. package/dist/templates/starter-game/guide/guide.sdk.json +10 -0
  277. package/dist/templates/starter-game/guide/guide.test.ts +108 -0
  278. package/dist/templates/starter-game/hooks/assignproducts/defaults.ts +37 -0
  279. package/dist/templates/starter-game/hooks/assignproducts/hook.sdk.json +13 -0
  280. package/dist/templates/starter-game/hooks/assignproducts/logic/logic.test.ts +77 -0
  281. package/dist/templates/starter-game/hooks/assignproducts/logic/logic.ts +47 -0
  282. package/dist/templates/starter-game/hooks/assignproducts/types.ts +55 -0
  283. package/dist/templates/starter-game/package.json +68 -0
  284. package/dist/templates/starter-game/playwright.config.ts +19 -0
  285. package/dist/templates/starter-game/scenarios/heatwave/scenario.sdk.json +20 -0
  286. package/dist/templates/starter-game/scenarios/ordinary_week/scenario.sdk.json +12 -0
  287. package/dist/templates/starter-game/seriousgaming.sdk.json +23 -0
  288. package/dist/templates/starter-game/session/defaults.ts +80 -0
  289. package/dist/templates/starter-game/session/index.html +12 -0
  290. package/dist/templates/starter-game/session/session.sdk.json +11 -0
  291. package/dist/templates/starter-game/session/src/App.test.tsx +307 -0
  292. package/dist/templates/starter-game/session/src/App.tsx +309 -0
  293. package/dist/templates/starter-game/session/src/Section.tsx +37 -0
  294. package/dist/templates/starter-game/session/src/TeamDoor.tsx +96 -0
  295. package/dist/templates/starter-game/session/src/format.ts +8 -0
  296. package/dist/templates/starter-game/session/src/i18n.ts +51 -0
  297. package/dist/templates/starter-game/session/src/main.tsx +48 -0
  298. package/dist/templates/starter-game/session/src/theme.ts +45 -0
  299. package/dist/templates/starter-game/session/types.ts +135 -0
  300. package/dist/templates/starter-game/settings/engine/settings.sdk.json +50 -0
  301. package/dist/templates/starter-game/settings/menu/settings.sdk.json +78 -0
  302. package/dist/templates/starter-game/settings/session/settings.sdk.json +23 -0
  303. package/dist/templates/starter-game/settings/ui/settings.sdk.json +25 -0
  304. package/dist/templates/starter-game/test-setup.ts +7 -0
  305. package/dist/templates/starter-game/testing/e2e/game.spec.ts +139 -0
  306. package/dist/templates/starter-game/testing/e2e/global-setup.ts +21 -0
  307. package/dist/templates/starter-game/testing/engine/game.engine.test.ts +171 -0
  308. package/dist/templates/starter-game/tsconfig.json +19 -0
  309. package/dist/templates/starter-game/ui/defaults.ts +60 -0
  310. package/dist/templates/starter-game/ui/index.html +12 -0
  311. package/dist/templates/starter-game/ui/src/App.test.tsx +138 -0
  312. package/dist/templates/starter-game/ui/src/App.tsx +175 -0
  313. package/dist/templates/starter-game/ui/src/DayBar.test.tsx +78 -0
  314. package/dist/templates/starter-game/ui/src/DayBar.tsx +72 -0
  315. package/dist/templates/starter-game/ui/src/HistoryPanel.test.tsx +74 -0
  316. package/dist/templates/starter-game/ui/src/HistoryPanel.tsx +120 -0
  317. package/dist/templates/starter-game/ui/src/MakeRow.tsx +129 -0
  318. package/dist/templates/starter-game/ui/src/Section.tsx +37 -0
  319. package/dist/templates/starter-game/ui/src/ThemeToggle.tsx +49 -0
  320. package/dist/templates/starter-game/ui/src/TodayPanel.test.tsx +179 -0
  321. package/dist/templates/starter-game/ui/src/TodayPanel.tsx +92 -0
  322. package/dist/templates/starter-game/ui/src/YesterdayPanel.tsx +142 -0
  323. package/dist/templates/starter-game/ui/src/format.ts +12 -0
  324. package/dist/templates/starter-game/ui/src/i18n.ts +95 -0
  325. package/dist/templates/starter-game/ui/src/main.tsx +48 -0
  326. package/dist/templates/starter-game/ui/src/menu.ts +18 -0
  327. package/dist/templates/starter-game/ui/src/test-helpers.ts +58 -0
  328. package/dist/templates/starter-game/ui/src/theme.ts +45 -0
  329. package/dist/templates/starter-game/ui/src/writes.ts +43 -0
  330. package/dist/templates/starter-game/ui/types.ts +137 -0
  331. package/dist/templates/starter-game/ui/ui.sdk.json +11 -0
  332. package/dist/templates/starter-game/validators/capacity/defaults.ts +37 -0
  333. package/dist/templates/starter-game/validators/capacity/logic/logic.test.ts +96 -0
  334. package/dist/templates/starter-game/validators/capacity/logic/logic.ts +45 -0
  335. package/dist/templates/starter-game/validators/capacity/types.ts +55 -0
  336. package/dist/templates/starter-game/validators/capacity/validator.sdk.json +11 -0
  337. package/dist/templates/starter-game/vite.config.ts +19 -0
  338. package/dist/templates/starter-game/vitest.config.ts +15 -0
  339. package/dist/templates/starter-game/vitest.engine.config.ts +19 -0
  340. package/dist/templates/starter-game/waiting_room/defaults.ts +40 -0
  341. package/dist/templates/starter-game/waiting_room/index.html +12 -0
  342. package/dist/templates/starter-game/waiting_room/src/App.test.tsx +102 -0
  343. package/dist/templates/starter-game/waiting_room/src/App.tsx +194 -0
  344. package/dist/templates/starter-game/waiting_room/src/i18n.ts +33 -0
  345. package/dist/templates/starter-game/waiting_room/src/main.tsx +48 -0
  346. package/dist/templates/starter-game/waiting_room/src/theme.ts +45 -0
  347. package/dist/templates/starter-game/waiting_room/types.ts +59 -0
  348. package/dist/templates/starter-game/waiting_room/waiting_room.sdk.json +10 -0
  349. package/dist/templates/tick-controller/logic.ts.liquid +8 -0
  350. package/dist/templates/ui/index.html.liquid +12 -0
  351. package/dist/templates/ui/src/App.test.tsx.liquid +41 -0
  352. package/dist/templates/ui/src/App.tsx.liquid +103 -0
  353. package/dist/templates/ui/src/i18n.ts.liquid +47 -0
  354. package/dist/templates/ui/src/main.tsx.liquid +48 -0
  355. package/dist/templates/ui/src/theme.ts.liquid +46 -0
  356. package/dist/templates/validator/logic.test.ts.liquid +42 -0
  357. package/dist/templates/validator/logic.ts.liquid +21 -0
  358. package/dist/templates/waiting-room/index.html.liquid +12 -0
  359. package/dist/templates/waiting-room/src/App.test.tsx.liquid +57 -0
  360. package/dist/templates/waiting-room/src/App.tsx.liquid +118 -0
  361. package/dist/templates/waiting-room/src/i18n.ts.liquid +44 -0
  362. package/dist/templates/waiting-room/src/main.tsx.liquid +48 -0
  363. package/dist/templates/waiting-room/src/theme.ts.liquid +46 -0
  364. package/dist/templating/resource-metadata.d.ts +131 -0
  365. package/dist/types.d.ts +14 -0
  366. package/dist/utils/atomic-write.d.ts +40 -0
  367. package/dist/utils/cli-error.d.ts +64 -0
  368. package/dist/utils/document-parser-client.d.ts +20 -0
  369. package/dist/utils/env-loader.d.ts +40 -0
  370. package/dist/utils/error-codes.d.ts +335 -0
  371. package/dist/utils/errors.d.ts +19 -0
  372. package/dist/utils/global-settings.d.ts +65 -0
  373. package/dist/utils/llm-client.d.ts +34 -0
  374. package/dist/utils/logger.d.ts +36 -0
  375. package/dist/utils/output.d.ts +109 -0
  376. package/dist/utils/platform.d.ts +14 -0
  377. package/dist/utils/prompt.d.ts +36 -0
  378. package/dist/utils/real-path.d.ts +6 -0
  379. package/dist/utils/schema-properties.d.ts +35 -0
  380. package/dist/validation/ajv.d.ts +17 -0
  381. package/dist/validation/facilitator-guide-validator.d.ts +27 -0
  382. package/dist/validation/findings.d.ts +40 -0
  383. package/dist/validation/game-constraints.d.ts +10 -0
  384. package/dist/validation/game-validator.d.ts +34 -0
  385. package/dist/validation/package-validation.d.ts +41 -0
  386. package/dist/validation/package-validator.d.ts +19 -0
  387. package/dist/validation/resource-validator.d.ts +79 -0
  388. package/dist/validation/schema-defaults-validator.d.ts +29 -0
  389. package/dist/validation/schema-validation.d.ts +115 -0
  390. package/dist/validation/semver.d.ts +9 -0
  391. package/package.json +122 -3
@@ -0,0 +1,386 @@
1
+ <!-- Generated by `pnpm docs:generate` from the exports of `@seriousgaming/deck`. Edit those, not this file. -->
2
+
3
+ # `@seriousgaming/deck`
4
+
5
+ Every export of `@seriousgaming/deck`, with the declaration it is published with. Anything tagged `@internal` is left out: it ships in the declarations, but is not part of the supported API and may change without a major release. For how the pieces fit together, see the [API reference](./index.md) and the guides it links to.
6
+
7
+ ## Functions
8
+
9
+ ### Bullets
10
+
11
+ A bulleted or numbered list. Exports as an editable PowerPoint list.
12
+
13
+ ```ts
14
+ function Bullets(props: BulletsProps): import('react').JSX.Element;
15
+ ```
16
+
17
+ ### Chart
18
+
19
+ A bar or line chart drawn in the brand's colours.
20
+
21
+ ```ts
22
+ function Chart(props: ChartProps): import('react').JSX.Element;
23
+ ```
24
+
25
+ ### Deck
26
+
27
+ A presentation: one slide at a time, scaled to fit its container, driven by keyboard (see `useDeckKeys`), clicker, click or swipe.
28
+
29
+ ```ts
30
+ function Deck(props: DeckProps): import('react').JSX.Element;
31
+ ```
32
+
33
+ ### Heading
34
+
35
+ A heading in the brand's heading font. Exports as an editable text box.
36
+
37
+ ```ts
38
+ function Heading(props: HeadingProps): import('react').JSX.Element;
39
+ ```
40
+
41
+ ### Image
42
+
43
+ ```ts
44
+ function Image(props: ImageProps): import('react').JSX.Element;
45
+ ```
46
+
47
+ ### readableOn
48
+
49
+ Black or white, whichever reads better on `color` (WCAG relative luminance).
50
+
51
+ ```ts
52
+ function readableOn(color: string): string;
53
+ ```
54
+
55
+ ### resolveBrand
56
+
57
+ Fill in whatever a partial brand leaves out from `defaultBrand`.
58
+
59
+ ```ts
60
+ function resolveBrand(brand: Partial<Brand> | undefined): Brand;
61
+ ```
62
+
63
+ ### Slide
64
+
65
+ One slide, laid out on a fixed 1920 by 1080 canvas.
66
+
67
+ ```ts
68
+ function Slide(props: SlideProps): import('react').JSX.Element;
69
+ ```
70
+
71
+ ### Step
72
+
73
+ Content revealed by a click.
74
+
75
+ ```ts
76
+ function Step(props: StepProps): import('react').JSX.Element;
77
+ ```
78
+
79
+ ### Table
80
+
81
+ A table with a branded header row. Exports as an editable PowerPoint table.
82
+
83
+ ```ts
84
+ function Table(props: TableProps): import('react').JSX.Element;
85
+ ```
86
+
87
+ ### Text
88
+
89
+ Body copy. Inline formatting (`<strong>`, `<em>`, styled spans) survives export.
90
+
91
+ ```ts
92
+ function Text(props: TextProps): import('react').JSX.Element;
93
+ ```
94
+
95
+ ### useBrand
96
+
97
+ The deck's resolved brand, for components that draw in its colours.
98
+
99
+ ```ts
100
+ function useBrand(): Brand;
101
+ ```
102
+
103
+ ### useDeck
104
+
105
+ Where the deck is, and how to move it. Only inside a `Deck`.
106
+
107
+ ```ts
108
+ function useDeck(): DeckState;
109
+ ```
110
+
111
+ ### useSlide
112
+
113
+ The slide this component sits on: how far it is built, and whether it is a live or static render. Custom animations read `step` and `mode` from here, and should show their final state whenever `mode` is `static`.
114
+
115
+ ```ts
116
+ function useSlide(): SlideState;
117
+ ```
118
+
119
+ ### useStepVisible
120
+
121
+ Whether click `at` has been reached on this slide, registering it as one of the slide's steps. For a custom animation that wants to build with clicks without wrapping itself in a `Step`.
122
+
123
+ ```ts
124
+ function useStepVisible(at: number): boolean;
125
+ ```
126
+
127
+ ## Constants
128
+
129
+ ### ALL_STEPS
130
+
131
+ A step value meaning 'everything on the slide is shown'.
132
+
133
+ ```ts
134
+ const ALL_STEPS: number;
135
+ ```
136
+
137
+ ### defaultBrand
138
+
139
+ ```ts
140
+ const defaultBrand: Brand;
141
+ ```
142
+
143
+ ### nativeText
144
+
145
+ Marks any element of your own as native PowerPoint text, so it exports as an editable text box rather than as part of the slide's picture: `<div {...nativeText}>...</div>`.
146
+
147
+ ```ts
148
+ const nativeText: {
149
+ readonly 'data-deck-native': 'text';
150
+ };
151
+ ```
152
+
153
+ ### SLIDE_HEIGHT
154
+
155
+ ```ts
156
+ const SLIDE_HEIGHT = 1080;
157
+ ```
158
+
159
+ ### SLIDE_WIDTH
160
+
161
+ Every slide is laid out on this canvas and scaled to fit wherever it is shown.
162
+
163
+ ```ts
164
+ const SLIDE_WIDTH = 1920;
165
+ ```
166
+
167
+ ## Interfaces
168
+
169
+ ### Brand
170
+
171
+ What a deck is dressed in.
172
+
173
+ ```ts
174
+ interface Brand {
175
+ colors: {
176
+ primary: string;
177
+ secondary: string;
178
+ background: string;
179
+ surface: string;
180
+ text: string;
181
+ muted: string;
182
+ };
183
+ fonts: {
184
+ heading: string;
185
+ body: string;
186
+ };
187
+ }
188
+ ```
189
+
190
+ ### BulletsProps
191
+
192
+ ```ts
193
+ interface BulletsProps extends TextBase {
194
+ items: ReactNode[];
195
+ ordered?: boolean;
196
+ stepped?: boolean;
197
+ stepFrom?: number;
198
+ animation?: StepAnimation;
199
+ }
200
+ ```
201
+
202
+ ### ChartProps
203
+
204
+ ```ts
205
+ interface ChartProps {
206
+ type: 'bar' | 'line';
207
+ categories: string[];
208
+ series: ChartSeriesInput[];
209
+ showValues?: boolean;
210
+ showLegend?: boolean;
211
+ valueFormat?: ValueFormat;
212
+ locale?: string;
213
+ className?: string;
214
+ style?: CSSProperties;
215
+ }
216
+ ```
217
+
218
+ ### ChartSeriesInput
219
+
220
+ ```ts
221
+ interface ChartSeriesInput {
222
+ name: string;
223
+ values: (number | null)[];
224
+ color?: string;
225
+ }
226
+ ```
227
+
228
+ ### DeckProps
229
+
230
+ ```ts
231
+ interface DeckProps {
232
+ children: ReactNode;
233
+ brand?: Partial<Brand>;
234
+ title?: string;
235
+ dir?: 'ltr' | 'rtl';
236
+ lang?: string;
237
+ transition?: Transition;
238
+ controls?: boolean;
239
+ clickToAdvance?: boolean;
240
+ exportFormats?: ExportFormat[];
241
+ startAt?: string | number;
242
+ rememberAs?: string;
243
+ onSlideChange?: (slideIndex: number) => void;
244
+ className?: string;
245
+ style?: CSSProperties;
246
+ }
247
+ ```
248
+
249
+ ### DeckState
250
+
251
+ ```ts
252
+ interface DeckState {
253
+ slideIndex: number;
254
+ slideCount: number;
255
+ step: number;
256
+ next: () => void;
257
+ prev: () => void;
258
+ goTo: (slideIndex: number, step?: number) => void;
259
+ }
260
+ ```
261
+
262
+ ### HeadingProps
263
+
264
+ ```ts
265
+ interface HeadingProps extends TextBase {
266
+ level?: 1 | 2 | 3;
267
+ }
268
+ ```
269
+
270
+ ### ImageProps
271
+
272
+ ```ts
273
+ interface ImageProps {
274
+ src: string;
275
+ alt: string;
276
+ fit?: 'contain' | 'cover';
277
+ className?: string;
278
+ style?: CSSProperties;
279
+ }
280
+ ```
281
+
282
+ ### SlideProps
283
+
284
+ ```ts
285
+ interface SlideProps {
286
+ children?: ReactNode;
287
+ transition?: Transition;
288
+ notes?: string;
289
+ background?: string;
290
+ className?: string;
291
+ style?: CSSProperties;
292
+ id?: string;
293
+ }
294
+ ```
295
+
296
+ ### SlideState
297
+
298
+ ```ts
299
+ interface SlideState {
300
+ index: number;
301
+ mode: RenderMode;
302
+ step: number;
303
+ isActive: boolean;
304
+ dir: 'ltr' | 'rtl';
305
+ registerStep: (at: number) => () => void;
306
+ registerNotes: (notes: string | undefined) => void;
307
+ defaultTransition: Transition;
308
+ direction: 'forward' | 'backward';
309
+ }
310
+ ```
311
+
312
+ ### StepProps
313
+
314
+ ```ts
315
+ interface StepProps {
316
+ at: number;
317
+ animation?: StepAnimation;
318
+ children?: ReactNode;
319
+ as?: ElementType;
320
+ className?: string;
321
+ style?: CSSProperties;
322
+ }
323
+ ```
324
+
325
+ ### TableProps
326
+
327
+ ```ts
328
+ interface TableProps {
329
+ columns: ReactNode[];
330
+ rows: ReactNode[][];
331
+ align?: ('start' | 'center' | 'end')[];
332
+ className?: string;
333
+ style?: CSSProperties;
334
+ }
335
+ ```
336
+
337
+ ### TextProps
338
+
339
+ ```ts
340
+ interface TextProps extends TextBase {
341
+ as?: ElementType;
342
+ variant?: 'body' | 'lead' | 'caption';
343
+ }
344
+ ```
345
+
346
+ ### ValueFormat
347
+
348
+ ```ts
349
+ interface ValueFormat {
350
+ style?: 'decimal' | 'currency' | 'percent';
351
+ currency?: string;
352
+ maximumFractionDigits?: number;
353
+ }
354
+ ```
355
+
356
+ ## Types
357
+
358
+ ### ExportFormat
359
+
360
+ ```ts
361
+ type ExportFormat = 'pdf' | 'pptx' | 'png';
362
+ ```
363
+
364
+ ### RenderMode
365
+
366
+ How a slide is being rendered.
367
+
368
+ ```ts
369
+ type RenderMode = 'live' | 'static';
370
+ ```
371
+
372
+ ### StepAnimation
373
+
374
+ How a step appears when it is revealed.
375
+
376
+ ```ts
377
+ type StepAnimation = 'fade' | 'fade-up' | 'fade-left' | 'zoom' | 'blur' | 'none';
378
+ ```
379
+
380
+ ### Transition
381
+
382
+ How a slide arrives when the presenter moves onto it.
383
+
384
+ ```ts
385
+ type Transition = 'none' | 'fade' | 'slide' | 'zoom' | 'rise';
386
+ ```
@@ -0,0 +1,67 @@
1
+ <!-- Generated by `pnpm docs:generate` from the exports of `@seriousgaming/sdk`, `@seriousgaming/deck` and `@seriousgaming/sdk-tools/client`, and `sdk-tools/docs-partials/api/`. Edit those, not this file. -->
2
+
3
+ # API reference
4
+
5
+ Every type, function, hook and component your game imports, one page per entry point. Each page is generated from the published declarations and their documentation, so it always matches the release it ships in.
6
+
7
+ | Entry point | Exports |
8
+ | ---------------------------------------------------------- | -------------------------------------------------------------- |
9
+ | [`@seriousgaming/sdk`](./sdk.md) | 10 functions, 2 classes, 94 interfaces, 46 types |
10
+ | [`@seriousgaming/sdk/ui`](./sdk-ui.md) | 44 functions, 3 classes, 37 constants, 18 interfaces, 35 types |
11
+ | [`@seriousgaming/sdk/ui/testing`](./sdk-ui-testing.md) | 11 functions, 6 types |
12
+ | [`@seriousgaming/sdk/testing`](./sdk-testing.md) | 4 functions, 4 constants, 7 types |
13
+ | [`@seriousgaming/sdk/projection`](./sdk-projection.md) | 1 constant, 8 interfaces, 3 types |
14
+ | [`@seriousgaming/sdk/commands`](./sdk-commands.md) | 3 interfaces, 5 types |
15
+ | [`@seriousgaming/sdk/e2e`](./sdk-e2e.md) | 6 functions, 1 constant, 4 interfaces, 5 types |
16
+ | [`@seriousgaming/deck`](./deck.md) | 15 functions, 5 constants, 14 interfaces, 4 types |
17
+ | [`@seriousgaming/sdk-tools/client`](./sdk-tools-client.md) | 4 functions, 1 class, 10 interfaces, 11 types |
18
+
19
+ ## Which entry point to import from
20
+
21
+ - **`@seriousgaming/sdk`**: the types logic is written against (`RunFunction`, `InitializationFunction`, `LogicResult`, the endpoint, hook, validator and tick controller signatures, `SignatureCallbacks`, `TimerState`) and the few runtime helpers logic may call
22
+ - **`@seriousgaming/sdk/ui`**: the React wrappers and hooks every surface uses (`useUserInterfaceData`, `useUserInterfaceTimer`, `useViewerStorage`, `useAsset`, `useAssetUrl`, `usePastState` and the rest), plus `MutationError` and `EndpointError`, what a failed write or endpoint call rejects with
23
+ - **`@seriousgaming/sdk/testing`**: `logicArgs` and the offline stub callbacks, for unit-testing logic with no runtime
24
+ - **`@seriousgaming/sdk/ui/testing`**: the harness for component-testing a surface
25
+ - **`@seriousgaming/sdk/e2e`**: the browser-test driver for a running dev server
26
+ - **`@seriousgaming/sdk/commands`** and **`@seriousgaming/sdk/projection`**: the commands a client may send a session, and the shape of the state it reads back (`sdk view --json` and the dev server's `/api/state`)
27
+ - **`@seriousgaming/sdk-tools/client`**: `createTestSession`, which plays a whole game in-process, and `startDevServer`, which starts an isolated dev server for browser tests
28
+ - **`@seriousgaming/deck`**: the slide components and layout primitives a presentation is built from
29
+
30
+ `@seriousgaming/sdk-tools` also exports `/host` and `/runtime`. They are for people building a runtime that hosts games, not for game authors, their shapes may change in a minor release, and they are not documented here.
31
+
32
+ ## Generated types beside each resource
33
+
34
+ Most of what a resource imports is not from the SDK at all, but from the `types.ts` the CLI generates beside it from its bundle (and refreshes on `sdk generate`, `sdk build` and every `new` or `update`). The names are the same in every resource:
35
+
36
+ | Name | What it is |
37
+ | ------------------------------------------ | ----------------------------------------------------------------------------------------------------------------- |
38
+ | `Context` | The capabilities the resource declares in `reads` and `writes`, keyed by capability identifier |
39
+ | `TeamContext`, `SharedContext` | The engine's per-team and shared halves, in a game with shared capabilities |
40
+ | `Settings` | The settings resources it lists in `settings` (or, for `setup` and `scenario_editor`, in `configures`) |
41
+ | `Callbacks` | `LogicCallbacks<...>`: exactly the services it declares in `uses`, and none of the others |
42
+ | `Request`, `Response`, `Writes`, `Handler` | An endpoint's request, response, declared writes and handler signature (`Planner` and `Responder` with `actions`) |
43
+ | `Endpoints` | On a surface, the typed `callbacks.endpoints` for the endpoints it declares |
44
+
45
+ The `defaults.ts` beside it exports `defaultContext` and `defaultSettings` (and `defaultTeamContext` and `defaultSharedContext` where they apply), the declared defaults, for use as test fixtures. Write logic as `RunFunction<Context, Settings>` and so on, so the compiler checks it against what the bundle declares: see [Type safety](../guides/type-safety.md).
46
+
47
+ ## Naming conventions
48
+
49
+ - **Logic signatures** end in `Function` (`RunFunction`, `InitializationFunction`, `HookFunction`, `ValidatorFunction`, `GetTickControllerFunction`), their argument objects in `FunctionArgs`, and an endpoint's in `EndpointHandler` (`EndpointHandler`, `WritingEndpointHandler`, `EffectfulEndpointHandler`)
50
+ - **Arguments** are always one object, whose `meta` is `LogicMeta`, or `RunMeta` and `TeamRunMeta` inside a tick
51
+ - **Results** carry what logic writes under `capabilities`, and paths to remove under `deletes`
52
+ - **Hooks** for surfaces start with `use`, and **errors** end in `Error`
53
+ - **Bundle types** generated from `schema.json` start with `SDK` (`SDKEngine`, `SDKHook`), and the two manifests end in `Manifest`: `PackageManifest` is `seriousgaming.sdk.json` as authored, `ResolvedPackageManifest` the built `seriousgaming.json`
54
+
55
+ ## Where each part is explained
56
+
57
+ The pages above list every export; the guides explain how they fit together:
58
+
59
+ - [Engine](../guides/engine.md) for `Init`, `Run` and the tick
60
+ - [Endpoints](../guides/endpoints.md), [Hooks](../guides/hooks.md), [Validators](../guides/validators.md) and [Tick controllers](../guides/tick-controller.md) for the other logic
61
+ - [User interfaces](../guides/ui.md) and [Session UIs](../guides/session.md) for the surface hooks
62
+ - [Testing](../guides/testing.md) and [Engine testing](../guides/engine-testing.md) for `@seriousgaming/sdk/testing`, `@seriousgaming/sdk/ui/testing` and `@seriousgaming/sdk-tools/client`
63
+ - [Presentations](../guides/presentation.md) for `@seriousgaming/deck`
64
+
65
+ ## Versioning
66
+
67
+ The API version is the SDK package version. A scaffolded game pins a caret range against the release it was created with, so a minor or patch release arrives with `pnpm update`; a major release is a step in the [upgrading guide](../guides/upgrading.md).