@seriousgaming/sdk-tools 0.0.0-stage → 1.0.0-alpha.2

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 +38 -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 +27404 -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 +16920 -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 +218 -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 +241 -0
  69. package/dist/docs/cli-and-dev-server.md +217 -0
  70. package/dist/docs/cli-error-codes.md +156 -0
  71. package/dist/docs/cli-reference.md +2489 -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 +577 -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 +339 -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 +123 -3
@@ -0,0 +1,207 @@
1
+ <!-- Generated by `pnpm docs:generate` from the exports of `@seriousgaming/sdk/projection`. Edit those, not this file. -->
2
+
3
+ # `@seriousgaming/sdk/projection`
4
+
5
+ The one documented shape of a session's observable state.
6
+
7
+ Served three ways and declared once: `sdk view --json`, `GET /api/state`, and
8
+ the payload the console renders. It is a projection, not any runtime's
9
+ internal state, so internals can change without breaking an agent that
10
+ learned to read it, and it is versioned so one that has learned can tell when
11
+ they have not.
12
+
13
+ Everything a runtime exposes about a session belongs here, because a check
14
+ made from outside a runtime can only read what the runtime exposes.
15
+
16
+ Published from the SDK rather than declared inside a runtime, because a
17
+ second runtime implementing it needs the shape, and a type it has to copy is
18
+ a type the two halves are free to drift apart on.
19
+
20
+ Every export of `@seriousgaming/sdk/projection`, 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.
21
+
22
+ ## Constants
23
+
24
+ ### PROJECTION_VERSION
25
+
26
+ Bumped when a field changes meaning or leaves.
27
+
28
+ ```ts
29
+ const PROJECTION_VERSION = 4;
30
+ ```
31
+
32
+ ## Interfaces
33
+
34
+ ### EndpointAuditEntry
35
+
36
+ One endpoint call that changed something: who made it, and what it changed. Names only, never values, so the log does not become a second copy of the boards.
37
+
38
+ ```ts
39
+ interface EndpointAuditEntry {
40
+ at: number;
41
+ endpoint: string;
42
+ role: EndpointCallerRole;
43
+ principal?: {
44
+ kind: string;
45
+ id: string;
46
+ name?: string;
47
+ };
48
+ teamId?: string;
49
+ wrote: string[];
50
+ teams?: Record<string, string[]>;
51
+ actions: string[];
52
+ stoppedAt?: string;
53
+ }
54
+ ```
55
+
56
+ ### Participant
57
+
58
+ A participant the platform tracks for some team in the session.
59
+
60
+ ```ts
61
+ interface Participant {
62
+ id: string;
63
+ name: string;
64
+ index: number;
65
+ connected: boolean;
66
+ teamId: string;
67
+ }
68
+ ```
69
+
70
+ ### PendingChanges
71
+
72
+ What changed on disk that a running session applies only when it next initialises. Each list is empty when nothing of its kind is waiting.
73
+
74
+ ```ts
75
+ interface PendingChanges {
76
+ settings: string[];
77
+ manifest: string[];
78
+ capabilities: string[];
79
+ }
80
+ ```
81
+
82
+ ### ProjectedTeam
83
+
84
+ One team's observable state.
85
+
86
+ ```ts
87
+ interface ProjectedTeam extends TeamInfo {
88
+ completedTicks: number;
89
+ complete: boolean;
90
+ canUndo: boolean;
91
+ context: Record<string, Record<string, unknown>>;
92
+ participants: Participant[];
93
+ timer?: TimerState;
94
+ state?: unknown;
95
+ }
96
+ ```
97
+
98
+ ### ScenarioDraft
99
+
100
+ The scenario editor's draft of one scenario, resolved.
101
+
102
+ ```ts
103
+ interface ScenarioDraft {
104
+ scenarioId: string | null;
105
+ settings: ResolvedSettings;
106
+ }
107
+ ```
108
+
109
+ ### StateProjection
110
+
111
+ ```ts
112
+ interface StateProjection {
113
+ projectionVersion: number;
114
+ game: {
115
+ identifier: string;
116
+ name: string;
117
+ scenarioId: string | null;
118
+ };
119
+ session: {
120
+ completedTicks: number;
121
+ mode: SessionMode;
122
+ waitingRoomOpen: boolean;
123
+ complete: boolean;
124
+ seed: string;
125
+ sessionKey: string;
126
+ locale: string;
127
+ runKind: RunKind;
128
+ maxTicks: number | null;
129
+ teamBounds: {
130
+ min?: number;
131
+ max: number;
132
+ };
133
+ inSetup: boolean;
134
+ pending?: PendingChanges;
135
+ };
136
+ teams: ProjectedTeam[];
137
+ shared: Record<string, Record<string, unknown>>;
138
+ sharedState?: unknown;
139
+ timer: TimerState | null;
140
+ settings: ResolvedSettings;
141
+ settingsWithoutSession: ResolvedSettings;
142
+ scenarioDrafts?: ScenarioDraft[];
143
+ }
144
+ ```
145
+
146
+ ### TeamInfo
147
+
148
+ Who a team is: the fields every team entry in the SDK carries.
149
+
150
+ ```ts
151
+ interface TeamInfo {
152
+ teamId: string;
153
+ index: number;
154
+ name: string;
155
+ }
156
+ ```
157
+
158
+ ### TimerState
159
+
160
+ The host's automatic tick timer, as every reader sees it.
161
+
162
+ ```ts
163
+ interface TimerState {
164
+ enabled: boolean;
165
+ paused: boolean;
166
+ nextTickAt: number | null;
167
+ intervalMs: number | null;
168
+ pausedAt: number | null;
169
+ pausedMs: number;
170
+ extendedMs: number;
171
+ scheduleStartedAt: number | null;
172
+ }
173
+ ```
174
+
175
+ ## Types
176
+
177
+ ### MutationResult
178
+
179
+ What a mutation settled as.
180
+
181
+ ```ts
182
+ type MutationResult =
183
+ | {
184
+ ok: true;
185
+ committedAtTick?: number;
186
+ }
187
+ | {
188
+ ok: false;
189
+ outcome: MutationOutcome;
190
+ };
191
+ ```
192
+
193
+ ### ResolvedSettings
194
+
195
+ Resolved settings, keyed by settings identifier.
196
+
197
+ ```ts
198
+ type ResolvedSettings = Record<string, Record<string, unknown>>;
199
+ ```
200
+
201
+ ### SessionMode
202
+
203
+ How a session runs its teams: the game's `teams.mode`.
204
+
205
+ ```ts
206
+ type SessionMode = GameTeamMode;
207
+ ```
@@ -0,0 +1,214 @@
1
+ <!-- Generated by `pnpm docs:generate` from the exports of `@seriousgaming/sdk/testing`. Edit those, not this file. -->
2
+
3
+ # `@seriousgaming/sdk/testing`
4
+
5
+ Helpers for unit-testing a game's logic without a runtime.
6
+
7
+ `logicArgs` builds the arguments object a logic function takes, filling
8
+ everything the test does not name. `createStubCallbacks` is the offline,
9
+ deterministic set of callbacks it uses, and the stubs behind it are the ones
10
+ `createTestSession` answers service callbacks with.
11
+
12
+ To test a game as a whole (hooks, validators, endpoints, undo, timers), use
13
+ `createTestSession` from `@seriousgaming/sdk-tools/client`.
14
+
15
+ Every export of `@seriousgaming/sdk/testing`, 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.
16
+
17
+ ## Functions
18
+
19
+ ### createStubCallbacks
20
+
21
+ Every callback logic can receive, stubbed, for calling a logic function directly in a unit test.
22
+
23
+ ```ts
24
+ function createStubCallbacks(): Required<SignatureCallbacks>;
25
+ ```
26
+
27
+ ### stubExtractText
28
+
29
+ What a stubbed `extractText` answers: `[stub] text of <reference>`, without reading the file.
30
+
31
+ ```ts
32
+ function stubExtractText(reference: string): ExtractTextResponse;
33
+ ```
34
+
35
+ ### stubGenerateText
36
+
37
+ What a stubbed `generateText` answers for `request`: `[stub <hash>] <excerpt>`, an eight-digit hex hash of the whole request, then the first 60 characters of its prompt (the `prompt`, or the last `user` message's text) with whitespace collapsed, ending in `...` when it was cut. A request with a `jsonSchema` is answered with JSON that satisfies it.
38
+
39
+ ```ts
40
+ function stubGenerateText(request: LLMGenerateOptions | string): LLMResponse;
41
+ ```
42
+
43
+ ### stubSpeechAudio
44
+
45
+ The clip a stubbed `generateSpeech` stores: 100ms of 8-bit mono silence, as a WAV file.
46
+
47
+ ```ts
48
+ function stubSpeechAudio(): Uint8Array;
49
+ ```
50
+
51
+ ## Constants
52
+
53
+ ### logicArgs
54
+
55
+ Builders for each logic function's arguments. Each takes what the test names and fills the rest:
56
+
57
+ ```ts
58
+ const logicArgs: {
59
+ init: typeof init;
60
+ run: typeof run;
61
+ aggregate: typeof aggregate;
62
+ hook: typeof hook;
63
+ endpoint: typeof endpoint;
64
+ tickController: typeof tickController;
65
+ validator: typeof validator;
66
+ requestTick: typeof requestTick;
67
+ };
68
+ ```
69
+
70
+ ### STUB_SPEECH_DURATION_MS
71
+
72
+ How long the stubbed speech clip is, in milliseconds.
73
+
74
+ ```ts
75
+ const STUB_SPEECH_DURATION_MS = 100;
76
+ ```
77
+
78
+ ### TEST_NOW
79
+
80
+ The `meta.now` every builder uses unless told otherwise: 2026-01-01T00:00:00Z.
81
+
82
+ ```ts
83
+ const TEST_NOW: number;
84
+ ```
85
+
86
+ ### TEST_SEED
87
+
88
+ The `meta.seed` every builder uses unless told otherwise.
89
+
90
+ ```ts
91
+ const TEST_SEED = 'test-seed';
92
+ ```
93
+
94
+ ## Types
95
+
96
+ ### AggregateArgsInput
97
+
98
+ Input to `logicArgs.aggregate`.
99
+
100
+ ```ts
101
+ type AggregateArgsInput<
102
+ TTeamContext,
103
+ TSharedContext,
104
+ TSettings,
105
+ TCallbacks,
106
+ TTeamState,
107
+ TSharedState,
108
+ > = CommonInput<TCallbacks> &
109
+ SettingsInput<TSettings> &
110
+ (Empty extends TSharedContext
111
+ ? {
112
+ shared?: AggregateFunctionShared<TSharedContext, TSharedState>;
113
+ }
114
+ : {
115
+ shared: AggregateFunctionShared<TSharedContext, TSharedState>;
116
+ }) & {
117
+ teams: (Omit<AggregateFunctionTeam<TTeamContext, TTeamState>, 'teamId'> & {
118
+ teamId?: string;
119
+ })[];
120
+ meta?: Partial<RunMeta>;
121
+ };
122
+ ```
123
+
124
+ ### EndpointArgsInput
125
+
126
+ Input to `logicArgs.endpoint`.
127
+
128
+ ```ts
129
+ type EndpointArgsInput<TRequest, TContext, TCallbacks, TTeamContext, TSettings> =
130
+ CommonInput<TCallbacks> &
131
+ SettingsInput<TSettings> & {
132
+ request: TRequest;
133
+ context: TContext;
134
+ caller?: Partial<EndpointCaller>;
135
+ team?: Partial<TeamInfo>;
136
+ teams?: EndpointTeamEntry<TTeamContext>[];
137
+ session?: Partial<EndpointSession>;
138
+ meta?: Partial<LogicMeta>;
139
+ };
140
+ ```
141
+
142
+ ### EngineArgsInput
143
+
144
+ Input to `logicArgs.init` and `logicArgs.run`.
145
+
146
+ ```ts
147
+ type EngineArgsInput<TContext, TSettings, TCallbacks, TState> = CommonInput<TCallbacks> &
148
+ SettingsInput<TSettings> & {
149
+ context: TContext;
150
+ meta?: Partial<TeamRunMeta>;
151
+ state?: TState;
152
+ };
153
+ ```
154
+
155
+ ### HookArgsInput
156
+
157
+ Input to `logicArgs.hook`.
158
+
159
+ ```ts
160
+ type HookArgsInput<
161
+ S extends HookSignal,
162
+ TContext,
163
+ TSettings,
164
+ TCallbacks,
165
+ > = CommonInput<TCallbacks> &
166
+ SettingsInput<TSettings> &
167
+ HookPayloadMap[S] & {
168
+ signal?: S;
169
+ context: TContext;
170
+ meta?: Partial<LogicMeta>;
171
+ };
172
+ ```
173
+
174
+ ### RequestTickArgsInput
175
+
176
+ Input to `logicArgs.requestTick`.
177
+
178
+ ```ts
179
+ type RequestTickArgsInput<TContext, TSettings> = SettingsInput<TSettings> & {
180
+ context: TContext;
181
+ requestedTick?: number;
182
+ actor?: ValidatorActor;
183
+ meta?: Partial<LogicMeta>;
184
+ participants?: readonly Readonly<Participant>[];
185
+ };
186
+ ```
187
+
188
+ ### TickControllerArgsInput
189
+
190
+ Input to `logicArgs.tickController`.
191
+
192
+ ```ts
193
+ type TickControllerArgsInput<TContext, TSettings, TCallbacks> = CommonInput<TCallbacks> &
194
+ SettingsInput<TSettings> & {
195
+ context: TContext;
196
+ meta?: Partial<TeamRunMeta>;
197
+ teams?: AggregateFunctionTeam<TContext>[];
198
+ waitingRoomOpen?: boolean;
199
+ };
200
+ ```
201
+
202
+ ### ValidatorArgsInput
203
+
204
+ Input to `logicArgs.validator`.
205
+
206
+ ```ts
207
+ type ValidatorArgsInput<TContext, TSettings> = SettingsInput<TSettings> & {
208
+ previous: TContext;
209
+ next: TContext;
210
+ actor?: ValidatorActor;
211
+ meta?: Partial<LogicMeta>;
212
+ participants?: readonly Readonly<Participant>[];
213
+ };
214
+ ```