@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.
- package/LICENSE +93 -0
- package/README.md +38 -2
- package/dist/bundling/logic-exports.d.ts +34 -0
- package/dist/bundling/node-builtins.d.ts +21 -0
- package/dist/bundling/transpiler.d.ts +7 -0
- package/dist/cli.js +27404 -0
- package/dist/client/dev-server.d.ts +59 -0
- package/dist/client/index.d.ts +28 -0
- package/dist/client/stub-services.d.ts +32 -0
- package/dist/client/test-session.d.ts +195 -0
- package/dist/client.js +16920 -0
- package/dist/core/asset-reference-translator.d.ts +46 -0
- package/dist/core/clock.d.ts +57 -0
- package/dist/core/faults.d.ts +65 -0
- package/dist/core/game-settings.d.ts +65 -0
- package/dist/core/history.d.ts +89 -0
- package/dist/core/listen-with-fallback.d.ts +30 -0
- package/dist/core/mutation-queue.d.ts +61 -0
- package/dist/core/package-scenario.d.ts +89 -0
- package/dist/core/participant-registry.d.ts +109 -0
- package/dist/core/pending-changes.d.ts +14 -0
- package/dist/core/protocol.d.ts +83 -0
- package/dist/core/scenario-drafts.d.ts +32 -0
- package/dist/core/session-endpoints.d.ts +108 -0
- package/dist/core/session-gates.d.ts +75 -0
- package/dist/core/session-host.d.ts +94 -0
- package/dist/core/session-refusals.d.ts +56 -0
- package/dist/core/session-rewind.d.ts +32 -0
- package/dist/core/session-roster.d.ts +128 -0
- package/dist/core/session-surfaces.d.ts +32 -0
- package/dist/core/session-ticks.d.ts +18 -0
- package/dist/core/session-timers.d.ts +84 -0
- package/dist/core/session-writes.d.ts +40 -0
- package/dist/core/session.d.ts +385 -0
- package/dist/core/settings-locks.d.ts +22 -0
- package/dist/core/team-names.d.ts +52 -0
- package/dist/core/team-state-store.d.ts +218 -0
- package/dist/core/tick-timer.d.ts +75 -0
- package/dist/dev/blob-links.d.ts +10 -0
- package/dist/dev/console/assets/index-DgFglsnA.js +204 -0
- package/dist/dev/console/index.html +12 -0
- package/dist/dev/console-path.d.ts +19 -0
- package/dist/dev/lockfile.d.ts +124 -0
- package/dist/dev/package-watcher.d.ts +21 -0
- package/dist/dev/routes.d.ts +67 -0
- package/dist/dev/shell.d.ts +260 -0
- package/dist/dev/surfaces.d.ts +41 -0
- package/dist/dev/tools-identity.d.ts +23 -0
- package/dist/dev/view/batch.d.ts +172 -0
- package/dist/dev/view/commands.d.ts +75 -0
- package/dist/dev/view/route.d.ts +58 -0
- package/dist/dev/view/view.d.ts +78 -0
- package/dist/dev/view/viewer.d.ts +32 -0
- package/dist/discovery/config.d.ts +9 -0
- package/dist/discovery/manifest-paths.d.ts +21 -0
- package/dist/discovery/removed-fields.d.ts +90 -0
- package/dist/docs/api/deck.md +386 -0
- package/dist/docs/api/index.md +67 -0
- package/dist/docs/api/sdk-commands.md +286 -0
- package/dist/docs/api/sdk-e2e.md +433 -0
- package/dist/docs/api/sdk-projection.md +207 -0
- package/dist/docs/api/sdk-testing.md +214 -0
- package/dist/docs/api/sdk-tools-client.md +560 -0
- package/dist/docs/api/sdk-ui-testing.md +231 -0
- package/dist/docs/api/sdk-ui.md +1269 -0
- package/dist/docs/api/sdk.md +2140 -0
- package/dist/docs/changelog-0.x.md +1156 -0
- package/dist/docs/changelog.md +241 -0
- package/dist/docs/cli-and-dev-server.md +217 -0
- package/dist/docs/cli-error-codes.md +156 -0
- package/dist/docs/cli-reference.md +2489 -0
- package/dist/docs/cli-simulation-testing.md +222 -0
- package/dist/docs/concepts/index.md +46 -0
- package/dist/docs/concepts/terminology.md +322 -0
- package/dist/docs/environment-variables.md +102 -0
- package/dist/docs/getting-started.md +145 -0
- package/dist/docs/guides/ai-facilitation.md +220 -0
- package/dist/docs/guides/capabilities.md +460 -0
- package/dist/docs/guides/endpoints.md +335 -0
- package/dist/docs/guides/engine-testing.md +477 -0
- package/dist/docs/guides/engine.md +527 -0
- package/dist/docs/guides/file-handling.md +405 -0
- package/dist/docs/guides/games.md +176 -0
- package/dist/docs/guides/global-settings.md +94 -0
- package/dist/docs/guides/guide.md +123 -0
- package/dist/docs/guides/hooks.md +183 -0
- package/dist/docs/guides/index.md +51 -0
- package/dist/docs/guides/internationalization.md +288 -0
- package/dist/docs/guides/llm-integration.md +635 -0
- package/dist/docs/guides/multi-team-games.md +586 -0
- package/dist/docs/guides/patterns.md +391 -0
- package/dist/docs/guides/presentation.md +196 -0
- package/dist/docs/guides/production-constraints.md +130 -0
- package/dist/docs/guides/scenario-editor.md +143 -0
- package/dist/docs/guides/scenarios.md +515 -0
- package/dist/docs/guides/session.md +972 -0
- package/dist/docs/guides/settings.md +458 -0
- package/dist/docs/guides/setup.md +193 -0
- package/dist/docs/guides/speech-generation.md +233 -0
- package/dist/docs/guides/starter-game.md +164 -0
- package/dist/docs/guides/testing.md +577 -0
- package/dist/docs/guides/tick-controller.md +569 -0
- package/dist/docs/guides/type-safety.md +516 -0
- package/dist/docs/guides/ui.md +1389 -0
- package/dist/docs/guides/upgrading.md +636 -0
- package/dist/docs/guides/validators.md +217 -0
- package/dist/docs/guides/waiting-room.md +244 -0
- package/dist/docs/index.md +41 -0
- package/dist/docs/recipes/act-on-the-session-from-an-endpoint.md +95 -0
- package/dist/docs/recipes/adapt-a-game-for-walkthroughs.md +133 -0
- package/dist/docs/recipes/adapt-ui-for-observers.md +74 -0
- package/dist/docs/recipes/call-endpoint-from-ui.md +109 -0
- package/dist/docs/recipes/check-a-package-from-a-script.md +117 -0
- package/dist/docs/recipes/create-capability.md +66 -0
- package/dist/docs/recipes/create-endpoint.md +127 -0
- package/dist/docs/recipes/create-engine.md +111 -0
- package/dist/docs/recipes/create-game.md +70 -0
- package/dist/docs/recipes/create-guide.md +75 -0
- package/dist/docs/recipes/create-hook.md +80 -0
- package/dist/docs/recipes/create-presentation.md +142 -0
- package/dist/docs/recipes/create-scenario-editor.md +102 -0
- package/dist/docs/recipes/create-scenario.md +98 -0
- package/dist/docs/recipes/create-session-ui.md +116 -0
- package/dist/docs/recipes/create-settings.md +88 -0
- package/dist/docs/recipes/create-setup.md +115 -0
- package/dist/docs/recipes/create-tick-controller.md +65 -0
- package/dist/docs/recipes/create-user-interface.md +96 -0
- package/dist/docs/recipes/create-validator.md +67 -0
- package/dist/docs/recipes/create-waiting-room-ui.md +109 -0
- package/dist/docs/recipes/declare-api-uses.md +67 -0
- package/dist/docs/recipes/design-state-for-concurrent-writes.md +96 -0
- package/dist/docs/recipes/distribute-package.md +80 -0
- package/dist/docs/recipes/e2e-testing.md +116 -0
- package/dist/docs/recipes/end-game-on-condition.md +154 -0
- package/dist/docs/recipes/fix-duplicate-packages.md +101 -0
- package/dist/docs/recipes/index.md +86 -0
- package/dist/docs/recipes/make-an-endpoint-external.md +101 -0
- package/dist/docs/recipes/negotiate-across-teams.md +164 -0
- package/dist/docs/recipes/observe-other-teams-state.md +119 -0
- package/dist/docs/recipes/publish-a-package.md +139 -0
- package/dist/docs/recipes/remember-a-viewers-choice.md +55 -0
- package/dist/docs/recipes/review-a-past-day.md +73 -0
- package/dist/docs/recipes/share-assets-across-scenarios.md +120 -0
- package/dist/docs/recipes/share-logic-between-engine-and-ui.md +130 -0
- package/dist/docs/recipes/show-all-teams-participants.md +109 -0
- package/dist/docs/recipes/start-from-an-empty-package.md +169 -0
- package/dist/docs/recipes/take-a-file-in-an-endpoint.md +82 -0
- package/dist/docs/recipes/test-a-multi-role-game.md +51 -0
- package/dist/docs/recipes/test-user-interface.md +95 -0
- package/dist/docs/recipes/test-with-engine.md +115 -0
- package/dist/docs/recipes/upload-and-display-files.md +148 -0
- package/dist/docs/recipes/use-request-play.md +65 -0
- package/dist/docs/recipes/use-request-tick.md +75 -0
- package/dist/docs/troubleshooting.md +816 -0
- package/dist/execution/blob-inputs.d.ts +57 -0
- package/dist/execution/bundle-reload.d.ts +42 -0
- package/dist/execution/config-resolver.d.ts +127 -0
- package/dist/execution/configuration-builder.d.ts +66 -0
- package/dist/execution/context-composition.d.ts +161 -0
- package/dist/execution/endpoint-actions.d.ts +9 -0
- package/dist/execution/endpoint-payloads.d.ts +32 -0
- package/dist/execution/endpoint-runner.d.ts +129 -0
- package/dist/execution/engine-state.d.ts +40 -0
- package/dist/execution/executor-callbacks.d.ts +56 -0
- package/dist/execution/executor.d.ts +436 -0
- package/dist/execution/gates.d.ts +45 -0
- package/dist/execution/hook-chain.d.ts +25 -0
- package/dist/execution/logic-calls.d.ts +190 -0
- package/dist/execution/logic-failure.d.ts +84 -0
- package/dist/execution/logic-loader.d.ts +54 -0
- package/dist/execution/logic-result.d.ts +76 -0
- package/dist/execution/tick-controller-call.d.ts +32 -0
- package/dist/execution/types.d.ts +48 -0
- package/dist/generation/ts-type.d.ts +39 -0
- package/dist/guide/locale.d.ts +12 -0
- package/dist/guide/video-registry.d.ts +42 -0
- package/dist/help-examples.d.ts +125 -0
- package/dist/host/adapter.d.ts +67 -0
- package/dist/host/host-channel.d.ts +222 -0
- package/dist/host/index.d.ts +20 -0
- package/dist/host/protocol.d.ts +783 -0
- package/dist/host/surfaces.d.ts +42 -0
- package/dist/host/theme.d.ts +55 -0
- package/dist/host.js +583 -0
- package/dist/prompts/index.d.ts +7 -0
- package/dist/prompts/schema-builder.d.ts +29 -0
- package/dist/prompts/types.d.ts +108 -0
- package/dist/prompts/validators.d.ts +32 -0
- package/dist/runtime/capability-scope.d.ts +6 -0
- package/dist/runtime/context-merge.d.ts +29 -0
- package/dist/runtime/context-projection.d.ts +41 -0
- package/dist/runtime/guarded-callbacks.d.ts +15 -0
- package/dist/runtime/index.d.ts +27 -0
- package/dist/runtime/manifest-version.d.ts +55 -0
- package/dist/runtime/tick-validation.d.ts +25 -0
- package/dist/runtime.js +346 -0
- package/dist/schema.json +1546 -0
- package/dist/server/vite-plugin.d.ts +46 -0
- package/dist/services/tts/client.d.ts +51 -0
- package/dist/services/tts/elevenlabs.d.ts +24 -0
- package/dist/services/tts/types.d.ts +44 -0
- package/dist/storage/asset-resolver.d.ts +49 -0
- package/dist/storage/blob-store.d.ts +41 -0
- package/dist/templates/endpoint/logic.test.ts.liquid +61 -0
- package/dist/templates/endpoint/logic.ts.liquid +25 -0
- package/dist/templates/engine/init.json.liquid +7 -0
- package/dist/templates/engine/logic-aggregate.test.ts.liquid +90 -0
- package/dist/templates/engine/logic-aggregate.ts.liquid +46 -0
- package/dist/templates/engine/logic.test.ts.liquid +61 -0
- package/dist/templates/engine/logic.ts.liquid +32 -0
- package/dist/templates/engine/run.json.liquid +7 -0
- package/dist/templates/guide/01-at-a-glance.md.liquid +19 -0
- package/dist/templates/guide/02-preparation.md.liquid +18 -0
- package/dist/templates/guide/03-running-the-session.md.liquid +37 -0
- package/dist/templates/hook/logic.test.ts.liquid +46 -0
- package/dist/templates/hook/logic.ts.liquid +12 -0
- package/dist/templates/package/CLAUDE.md.template +338 -0
- package/dist/templates/package/DESIGN.md.liquid +144 -0
- package/dist/templates/package/README.md.liquid +143 -0
- package/dist/templates/package/claude/rules/workflow-create-capability.md +26 -0
- package/dist/templates/package/claude/rules/workflow-create-endpoint.md +35 -0
- package/dist/templates/package/claude/rules/workflow-create-engine.md +35 -0
- package/dist/templates/package/claude/rules/workflow-create-guide.md +40 -0
- package/dist/templates/package/claude/rules/workflow-create-presentation.md +37 -0
- package/dist/templates/package/claude/rules/workflow-create-user-interface.md +31 -0
- package/dist/templates/package/claude/rules/workflow-publish-package.md +54 -0
- package/dist/templates/package/claude/rules/workflow-test-engine-or-ui.md +30 -0
- package/dist/templates/package/claude/rules/workflow-update-sdk-version.md +43 -0
- package/dist/templates/package/claude/settings.json.template +16 -0
- package/dist/templates/package/gitignore.template +15 -0
- package/dist/templates/package/global-setup.ts.template +21 -0
- package/dist/templates/package/globals.d.ts.template +2 -0
- package/dist/templates/package/oxfmtrc.json.template +14 -0
- package/dist/templates/package/oxlintrc.json.template +238 -0
- package/dist/templates/package/package.json.liquid +65 -0
- package/dist/templates/package/playwright.config.ts.liquid +19 -0
- package/dist/templates/package/pnpm-workspace.yaml.template +27 -0
- package/dist/templates/package/test-setup.ts.liquid +7 -0
- package/dist/templates/package/tsconfig.json.liquid +15 -0
- package/dist/templates/package/vite.config.ts.liquid +19 -0
- package/dist/templates/package/vitest.config.ts.liquid +25 -0
- package/dist/templates/package/vitest.engine.config.ts.liquid +12 -0
- package/dist/templates/presentation/index.html.liquid +20 -0
- package/dist/templates/presentation/src/App.tsx.liquid +49 -0
- package/dist/templates/presentation/src/Slides.tsx.liquid +81 -0
- package/dist/templates/presentation/src/i18n.ts.liquid +54 -0
- package/dist/templates/presentation/src/main.tsx.liquid +14 -0
- package/dist/templates/scenario_editor/src/App.test.tsx.liquid +30 -0
- package/dist/templates/scenario_editor/src/App.tsx.liquid +95 -0
- package/dist/templates/scenario_editor/src/i18n.ts.liquid +44 -0
- package/dist/templates/session/src/App.test.tsx.liquid +60 -0
- package/dist/templates/session/src/App.tsx.liquid +128 -0
- package/dist/templates/session/src/i18n.ts.liquid +53 -0
- package/dist/templates/session/src/main.tsx.liquid +48 -0
- package/dist/templates/session/src/theme.ts.liquid +46 -0
- package/dist/templates/settings-editor/index.html.liquid +12 -0
- package/dist/templates/settings-editor/src/main.tsx.liquid +48 -0
- package/dist/templates/settings-editor/src/theme.ts.liquid +24 -0
- package/dist/templates/setup/src/App.test.tsx.liquid +39 -0
- package/dist/templates/setup/src/App.tsx.liquid +102 -0
- package/dist/templates/setup/src/i18n.ts.liquid +47 -0
- package/dist/templates/starter-game/capabilities/briefing/capability.sdk.json +18 -0
- package/dist/templates/starter-game/capabilities/plan/capability.sdk.json +17 -0
- package/dist/templates/starter-game/capabilities/results/capability.sdk.json +61 -0
- package/dist/templates/starter-game/capabilities/roles/capability.sdk.json +17 -0
- package/dist/templates/starter-game/capabilities/weather/capability.sdk.json +23 -0
- package/dist/templates/starter-game/engine/defaults.ts +81 -0
- package/dist/templates/starter-game/engine/engine.sdk.json +12 -0
- package/dist/templates/starter-game/engine/logic.test.ts +221 -0
- package/dist/templates/starter-game/engine/logic.ts +149 -0
- package/dist/templates/starter-game/engine/test-helpers.ts +74 -0
- package/dist/templates/starter-game/engine/types.ts +139 -0
- package/dist/templates/starter-game/guide/content/en/01-at-a-glance.md +51 -0
- package/dist/templates/starter-game/guide/content/en/02-preparation.md +35 -0
- package/dist/templates/starter-game/guide/content/en/03-running-the-day.md +58 -0
- package/dist/templates/starter-game/guide/guide.sdk.json +10 -0
- package/dist/templates/starter-game/guide/guide.test.ts +108 -0
- package/dist/templates/starter-game/hooks/assignproducts/defaults.ts +37 -0
- package/dist/templates/starter-game/hooks/assignproducts/hook.sdk.json +13 -0
- package/dist/templates/starter-game/hooks/assignproducts/logic/logic.test.ts +77 -0
- package/dist/templates/starter-game/hooks/assignproducts/logic/logic.ts +47 -0
- package/dist/templates/starter-game/hooks/assignproducts/types.ts +55 -0
- package/dist/templates/starter-game/package.json +68 -0
- package/dist/templates/starter-game/playwright.config.ts +19 -0
- package/dist/templates/starter-game/scenarios/heatwave/scenario.sdk.json +20 -0
- package/dist/templates/starter-game/scenarios/ordinary_week/scenario.sdk.json +12 -0
- package/dist/templates/starter-game/seriousgaming.sdk.json +23 -0
- package/dist/templates/starter-game/session/defaults.ts +80 -0
- package/dist/templates/starter-game/session/index.html +12 -0
- package/dist/templates/starter-game/session/session.sdk.json +11 -0
- package/dist/templates/starter-game/session/src/App.test.tsx +307 -0
- package/dist/templates/starter-game/session/src/App.tsx +309 -0
- package/dist/templates/starter-game/session/src/Section.tsx +37 -0
- package/dist/templates/starter-game/session/src/TeamDoor.tsx +96 -0
- package/dist/templates/starter-game/session/src/format.ts +8 -0
- package/dist/templates/starter-game/session/src/i18n.ts +51 -0
- package/dist/templates/starter-game/session/src/main.tsx +48 -0
- package/dist/templates/starter-game/session/src/theme.ts +45 -0
- package/dist/templates/starter-game/session/types.ts +135 -0
- package/dist/templates/starter-game/settings/engine/settings.sdk.json +50 -0
- package/dist/templates/starter-game/settings/menu/settings.sdk.json +78 -0
- package/dist/templates/starter-game/settings/session/settings.sdk.json +23 -0
- package/dist/templates/starter-game/settings/ui/settings.sdk.json +25 -0
- package/dist/templates/starter-game/test-setup.ts +7 -0
- package/dist/templates/starter-game/testing/e2e/game.spec.ts +139 -0
- package/dist/templates/starter-game/testing/e2e/global-setup.ts +21 -0
- package/dist/templates/starter-game/testing/engine/game.engine.test.ts +171 -0
- package/dist/templates/starter-game/tsconfig.json +19 -0
- package/dist/templates/starter-game/ui/defaults.ts +60 -0
- package/dist/templates/starter-game/ui/index.html +12 -0
- package/dist/templates/starter-game/ui/src/App.test.tsx +138 -0
- package/dist/templates/starter-game/ui/src/App.tsx +175 -0
- package/dist/templates/starter-game/ui/src/DayBar.test.tsx +78 -0
- package/dist/templates/starter-game/ui/src/DayBar.tsx +72 -0
- package/dist/templates/starter-game/ui/src/HistoryPanel.test.tsx +74 -0
- package/dist/templates/starter-game/ui/src/HistoryPanel.tsx +120 -0
- package/dist/templates/starter-game/ui/src/MakeRow.tsx +129 -0
- package/dist/templates/starter-game/ui/src/Section.tsx +37 -0
- package/dist/templates/starter-game/ui/src/ThemeToggle.tsx +49 -0
- package/dist/templates/starter-game/ui/src/TodayPanel.test.tsx +179 -0
- package/dist/templates/starter-game/ui/src/TodayPanel.tsx +92 -0
- package/dist/templates/starter-game/ui/src/YesterdayPanel.tsx +142 -0
- package/dist/templates/starter-game/ui/src/format.ts +12 -0
- package/dist/templates/starter-game/ui/src/i18n.ts +95 -0
- package/dist/templates/starter-game/ui/src/main.tsx +48 -0
- package/dist/templates/starter-game/ui/src/menu.ts +18 -0
- package/dist/templates/starter-game/ui/src/test-helpers.ts +58 -0
- package/dist/templates/starter-game/ui/src/theme.ts +45 -0
- package/dist/templates/starter-game/ui/src/writes.ts +43 -0
- package/dist/templates/starter-game/ui/types.ts +137 -0
- package/dist/templates/starter-game/ui/ui.sdk.json +11 -0
- package/dist/templates/starter-game/validators/capacity/defaults.ts +37 -0
- package/dist/templates/starter-game/validators/capacity/logic/logic.test.ts +96 -0
- package/dist/templates/starter-game/validators/capacity/logic/logic.ts +45 -0
- package/dist/templates/starter-game/validators/capacity/types.ts +55 -0
- package/dist/templates/starter-game/validators/capacity/validator.sdk.json +11 -0
- package/dist/templates/starter-game/vite.config.ts +19 -0
- package/dist/templates/starter-game/vitest.config.ts +15 -0
- package/dist/templates/starter-game/vitest.engine.config.ts +19 -0
- package/dist/templates/starter-game/waiting_room/defaults.ts +40 -0
- package/dist/templates/starter-game/waiting_room/index.html +12 -0
- package/dist/templates/starter-game/waiting_room/src/App.test.tsx +102 -0
- package/dist/templates/starter-game/waiting_room/src/App.tsx +194 -0
- package/dist/templates/starter-game/waiting_room/src/i18n.ts +33 -0
- package/dist/templates/starter-game/waiting_room/src/main.tsx +48 -0
- package/dist/templates/starter-game/waiting_room/src/theme.ts +45 -0
- package/dist/templates/starter-game/waiting_room/types.ts +59 -0
- package/dist/templates/starter-game/waiting_room/waiting_room.sdk.json +10 -0
- package/dist/templates/tick-controller/logic.ts.liquid +8 -0
- package/dist/templates/ui/index.html.liquid +12 -0
- package/dist/templates/ui/src/App.test.tsx.liquid +41 -0
- package/dist/templates/ui/src/App.tsx.liquid +103 -0
- package/dist/templates/ui/src/i18n.ts.liquid +47 -0
- package/dist/templates/ui/src/main.tsx.liquid +48 -0
- package/dist/templates/ui/src/theme.ts.liquid +46 -0
- package/dist/templates/validator/logic.test.ts.liquid +42 -0
- package/dist/templates/validator/logic.ts.liquid +21 -0
- package/dist/templates/waiting-room/index.html.liquid +12 -0
- package/dist/templates/waiting-room/src/App.test.tsx.liquid +57 -0
- package/dist/templates/waiting-room/src/App.tsx.liquid +118 -0
- package/dist/templates/waiting-room/src/i18n.ts.liquid +44 -0
- package/dist/templates/waiting-room/src/main.tsx.liquid +48 -0
- package/dist/templates/waiting-room/src/theme.ts.liquid +46 -0
- package/dist/templating/resource-metadata.d.ts +131 -0
- package/dist/types.d.ts +14 -0
- package/dist/utils/atomic-write.d.ts +40 -0
- package/dist/utils/cli-error.d.ts +64 -0
- package/dist/utils/document-parser-client.d.ts +20 -0
- package/dist/utils/env-loader.d.ts +40 -0
- package/dist/utils/error-codes.d.ts +339 -0
- package/dist/utils/errors.d.ts +19 -0
- package/dist/utils/global-settings.d.ts +65 -0
- package/dist/utils/llm-client.d.ts +34 -0
- package/dist/utils/logger.d.ts +36 -0
- package/dist/utils/output.d.ts +109 -0
- package/dist/utils/platform.d.ts +14 -0
- package/dist/utils/prompt.d.ts +36 -0
- package/dist/utils/real-path.d.ts +6 -0
- package/dist/utils/schema-properties.d.ts +35 -0
- package/dist/validation/ajv.d.ts +17 -0
- package/dist/validation/facilitator-guide-validator.d.ts +27 -0
- package/dist/validation/findings.d.ts +40 -0
- package/dist/validation/game-constraints.d.ts +10 -0
- package/dist/validation/game-validator.d.ts +34 -0
- package/dist/validation/package-validation.d.ts +41 -0
- package/dist/validation/package-validator.d.ts +19 -0
- package/dist/validation/resource-validator.d.ts +79 -0
- package/dist/validation/schema-defaults-validator.d.ts +29 -0
- package/dist/validation/schema-validation.d.ts +115 -0
- package/dist/validation/semver.d.ts +9 -0
- package/package.json +123 -3
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interactive prompts for building JSON schema properties
|
|
3
|
+
* Used for capability variables and engine/hook configuration
|
|
4
|
+
*/
|
|
5
|
+
import type { PropertySchema, PromptPropertyOptions, PromptPropertiesOptions, EditPropertyResult, ReviewPropertiesOptions, ReviewPropertiesResult } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Prompts user to create a single property (variable, setting or schema property)
|
|
8
|
+
* Returns the property name and schema definition, or null if cancelled
|
|
9
|
+
*/
|
|
10
|
+
export declare function promptForSchemaProperty(options: PromptPropertyOptions): Promise<{
|
|
11
|
+
name: string;
|
|
12
|
+
schema: PropertySchema;
|
|
13
|
+
} | null>;
|
|
14
|
+
/**
|
|
15
|
+
* Prompts user to create multiple properties iteratively
|
|
16
|
+
* Handles the full loop: add property -> ask for another -> repeat
|
|
17
|
+
*/
|
|
18
|
+
export declare function promptForSchemaProperties(options?: PromptPropertiesOptions): Promise<Record<string, PropertySchema>>;
|
|
19
|
+
/**
|
|
20
|
+
* Prompts user to edit an existing property
|
|
21
|
+
* Shows current values as defaults
|
|
22
|
+
*/
|
|
23
|
+
export declare function editSchemaProperty(name: string, currentSchema: PropertySchema): Promise<EditPropertyResult>;
|
|
24
|
+
/**
|
|
25
|
+
* Reviews and edits multiple existing properties
|
|
26
|
+
* For each property: Keep / Edit / Delete
|
|
27
|
+
* Optionally allows adding new properties
|
|
28
|
+
*/
|
|
29
|
+
export declare function reviewSchemaProperties(existingProperties: Record<string, PropertySchema>, options?: ReviewPropertiesOptions): Promise<ReviewPropertiesResult>;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for JSON schema property building
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Represents a JSON Schema property definition
|
|
6
|
+
* Used for capability variables and engine/hook configuration fields
|
|
7
|
+
*/
|
|
8
|
+
export interface PropertySchema {
|
|
9
|
+
type: 'number' | 'string' | 'boolean';
|
|
10
|
+
description: string;
|
|
11
|
+
default?: number | string | boolean;
|
|
12
|
+
minimum?: number;
|
|
13
|
+
maximum?: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Default values and constraints for number properties
|
|
17
|
+
*/
|
|
18
|
+
export interface NumberPropertyDefaults {
|
|
19
|
+
default: number;
|
|
20
|
+
minimum?: number;
|
|
21
|
+
maximum?: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Default value for string properties
|
|
25
|
+
*/
|
|
26
|
+
export interface StringPropertyDefaults {
|
|
27
|
+
default: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Default value for boolean properties
|
|
31
|
+
*/
|
|
32
|
+
export interface BooleanPropertyDefaults {
|
|
33
|
+
default: boolean;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Context for property prompts
|
|
37
|
+
* - 'variable': For capability variables
|
|
38
|
+
* - 'setting': For a settings resource's settingsSchema
|
|
39
|
+
* - 'property': For any other schema, such as an endpoint's request or response
|
|
40
|
+
*/
|
|
41
|
+
export type PropertyContext = 'variable' | 'setting' | 'property';
|
|
42
|
+
/**
|
|
43
|
+
* Options for prompting for a single property
|
|
44
|
+
*/
|
|
45
|
+
export interface PromptPropertyOptions {
|
|
46
|
+
/** Names of existing properties (for duplicate validation) */
|
|
47
|
+
existingNames: string[];
|
|
48
|
+
/** Context for display messages */
|
|
49
|
+
context?: PropertyContext;
|
|
50
|
+
/** Whether to allow empty/cancel */
|
|
51
|
+
allowEmpty?: boolean;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Options for prompting for multiple properties
|
|
55
|
+
*/
|
|
56
|
+
export interface PromptPropertiesOptions {
|
|
57
|
+
/** Context for display messages */
|
|
58
|
+
context?: PropertyContext;
|
|
59
|
+
/** Existing properties to build upon */
|
|
60
|
+
existingProperties?: Record<string, PropertySchema>;
|
|
61
|
+
/** Minimum number of properties required */
|
|
62
|
+
minProperties?: number;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Options for editing a property
|
|
66
|
+
*/
|
|
67
|
+
export interface EditPropertyOptions {
|
|
68
|
+
/** Whether to allow deletion */
|
|
69
|
+
allowDelete?: boolean;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Result from editing a property
|
|
73
|
+
*/
|
|
74
|
+
export interface EditPropertyResult {
|
|
75
|
+
action: 'keep' | 'edit';
|
|
76
|
+
/** The property as edited, or unchanged when kept */
|
|
77
|
+
schema: PropertySchema;
|
|
78
|
+
/** The fields that changed; empty when kept */
|
|
79
|
+
changes: string[];
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Options for reviewing multiple properties
|
|
83
|
+
*/
|
|
84
|
+
export interface ReviewPropertiesOptions {
|
|
85
|
+
/** Whether to allow deletion */
|
|
86
|
+
allowDelete?: boolean;
|
|
87
|
+
/** Whether to allow adding new properties */
|
|
88
|
+
allowAdd?: boolean;
|
|
89
|
+
/** Context for display messages */
|
|
90
|
+
context?: PropertyContext;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Result from reviewing multiple properties
|
|
94
|
+
*/
|
|
95
|
+
export interface ReviewPropertiesResult {
|
|
96
|
+
/** Updated properties schema */
|
|
97
|
+
properties: Record<string, PropertySchema>;
|
|
98
|
+
/** Summary of changes made */
|
|
99
|
+
changes: {
|
|
100
|
+
kept: string[];
|
|
101
|
+
modified: Array<{
|
|
102
|
+
name: string;
|
|
103
|
+
changes: string;
|
|
104
|
+
}>;
|
|
105
|
+
deleted: string[];
|
|
106
|
+
added: string[];
|
|
107
|
+
};
|
|
108
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validation utilities for JSON schema property building
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* PascalCase regex pattern
|
|
6
|
+
* Must start with uppercase letter, followed by letters/numbers only
|
|
7
|
+
*/
|
|
8
|
+
export declare const PASCAL_CASE_PATTERN: RegExp;
|
|
9
|
+
/**
|
|
10
|
+
* Validates a property name (must be PascalCase and not a duplicate)
|
|
11
|
+
* @param name - The property name to validate
|
|
12
|
+
* @param existingNames - Array of existing property names
|
|
13
|
+
* @returns true if valid, or an error message string
|
|
14
|
+
*/
|
|
15
|
+
export declare function validatePropertyName(name: string, existingNames: string[]): true | string;
|
|
16
|
+
/**
|
|
17
|
+
* Validates a number value input string
|
|
18
|
+
* @param value - The string value to validate
|
|
19
|
+
* @param constraints - Optional min/max constraints
|
|
20
|
+
* @returns true if valid, or an error message string
|
|
21
|
+
*/
|
|
22
|
+
export declare function validateNumberValue(value: string, constraints?: {
|
|
23
|
+
min?: number;
|
|
24
|
+
max?: number;
|
|
25
|
+
}): true | string;
|
|
26
|
+
/**
|
|
27
|
+
* Validates that maximum is greater than or equal to minimum
|
|
28
|
+
* @param maximum - The maximum value string
|
|
29
|
+
* @param minimum - The minimum value (already parsed)
|
|
30
|
+
* @returns true if valid, or an error message string
|
|
31
|
+
*/
|
|
32
|
+
export declare function validateMaximumValue(maximum: string, minimum?: number): true | string;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { CapabilityDefinition } from '@seriousgaming/sdk';
|
|
2
|
+
export type CapabilityScope = NonNullable<CapabilityDefinition['scope']>;
|
|
3
|
+
type ScopeFields = Pick<CapabilityDefinition, 'identifier' | 'scope'>;
|
|
4
|
+
/** A capability's effective scope: `team` unless it declares another. */
|
|
5
|
+
export declare function resolveCapabilityScope(definition: ScopeFields): CapabilityScope;
|
|
6
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The §9.5 context deep-merge a runtime applies to every context update.
|
|
3
|
+
*
|
|
4
|
+
* The UI wrappers in `@seriousgaming/sdk/ui` apply the same
|
|
5
|
+
* merge to their optimistic local copy, from a private module of their own.
|
|
6
|
+
* Both must apply identical semantics or a UI sending a minimal patch sees its
|
|
7
|
+
* local view diverge from the host's until the next snapshot, so
|
|
8
|
+
* `context-merge.parity.test.ts` holds the two to one table of cases:
|
|
9
|
+
*
|
|
10
|
+
* - Plain objects are merged recursively
|
|
11
|
+
* - Arrays, scalars, `null`, and non-plain objects replace the base value
|
|
12
|
+
* - `__proto__`, `constructor`, and `prototype` keys are ignored (payloads
|
|
13
|
+
* cross an untrusted iframe boundary)
|
|
14
|
+
*
|
|
15
|
+
* A deep merge cannot express key deletion, so an update carries deletions
|
|
16
|
+
* beside the patch rather than inside it (see {@link ContextDeletePath} and
|
|
17
|
+
* {@link applyContextUpdate}).
|
|
18
|
+
*/
|
|
19
|
+
import type { ContextDeletePath } from '@seriousgaming/sdk';
|
|
20
|
+
export declare function deepMergeContext<T extends Record<string, unknown>>(base: T, patch: Record<string, unknown>): T;
|
|
21
|
+
/**
|
|
22
|
+
* Apply one context update: merge the patch, then remove the deleted paths.
|
|
23
|
+
*
|
|
24
|
+
* Deletions are applied after the merge so a single update can replace an
|
|
25
|
+
* entry — write the new key, drop the old — without the order of the two
|
|
26
|
+
* mattering to the caller. Every runtime applying an update MUST use this
|
|
27
|
+
* order (SPECIFICATION.md §9.5).
|
|
28
|
+
*/
|
|
29
|
+
export declare function applyContextUpdate<T extends Record<string, unknown>>(base: T, patch: Record<string, unknown>, deletes?: readonly ContextDeletePath[]): T;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { CapabilityDefinition } from '@seriousgaming/sdk';
|
|
2
|
+
/**
|
|
3
|
+
* The §7.4 projection shared by the host runtime and anything that composes a
|
|
4
|
+
* context for a UI surface. A surface receives exactly the capabilities it
|
|
5
|
+
* declared, and never one whose scope puts it out of reach of every surface.
|
|
6
|
+
*
|
|
7
|
+
* Both halves matter for different reasons. The declaration half is a payload
|
|
8
|
+
* bound: a surface that renders eight capabilities has no use for the other
|
|
9
|
+
* eight, and in a large cohort those eight ride every push to every
|
|
10
|
+
* participant (§12.4.2). The scope half is a boundary: a `private` capability
|
|
11
|
+
* is withheld here as well as rejected at build time, so a gap in validation
|
|
12
|
+
* cannot leak engine state to a frame.
|
|
13
|
+
*/
|
|
14
|
+
/** The scope fields the projection needs from a capability definition. */
|
|
15
|
+
type ScopeFields = Pick<CapabilityDefinition, 'identifier' | 'scope'>;
|
|
16
|
+
/**
|
|
17
|
+
* The capability identifiers a surface is entitled to receive: its `reads` and
|
|
18
|
+
* its `writes`, minus anything whose scope withholds it from every surface.
|
|
19
|
+
*
|
|
20
|
+
* `writes` are included because a surface that writes a value almost always
|
|
21
|
+
* displays it, and because the generated `Context` type is the union of both
|
|
22
|
+
* (`collectCapabilityScope`). Delivering reads alone would contradict the type
|
|
23
|
+
* the author is holding: `data.price` would be typed as present and arrive
|
|
24
|
+
* `undefined` for every write-only decision field. It also has to be present
|
|
25
|
+
* for the wrapper's optimistic merge to have a base to merge into.
|
|
26
|
+
*/
|
|
27
|
+
export declare function declaredCapabilityIds(args: {
|
|
28
|
+
reads?: readonly string[];
|
|
29
|
+
writes?: readonly string[];
|
|
30
|
+
capabilities?: ReadonlyMap<string, ScopeFields>;
|
|
31
|
+
}): Set<string>;
|
|
32
|
+
/**
|
|
33
|
+
* Project a context onto the capabilities a surface declared.
|
|
34
|
+
*
|
|
35
|
+
* Keys absent from `declared` are omitted rather than blanked: a surface
|
|
36
|
+
* cannot tell 'withheld' from 'defaulted' if it receives an empty object, and
|
|
37
|
+
* omission is what makes the payload smaller. A key the context does not carry
|
|
38
|
+
* is not invented.
|
|
39
|
+
*/
|
|
40
|
+
export declare function projectContext<T extends Record<string, unknown>>(context: T, declared: ReadonlySet<string>): Record<string, unknown>;
|
|
41
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type ApiUse, type SignatureCallbacks } from '@seriousgaming/sdk';
|
|
2
|
+
/**
|
|
3
|
+
* Wrap a callbacks object so each API listed in the `ApiUse` enum is only
|
|
4
|
+
* invocable when the corresponding name appears in `uses`. Undeclared APIs
|
|
5
|
+
* are replaced by a function that throws {@link UndeclaredApiUseError} when
|
|
6
|
+
* called.
|
|
7
|
+
*
|
|
8
|
+
* Callbacks that fall outside the `ApiUse` enum (e.g. `readAsset`) are passed
|
|
9
|
+
* through unchanged — they are runtime plumbing rather than externally-visible
|
|
10
|
+
* APIs.
|
|
11
|
+
*
|
|
12
|
+
* Returns the same shape as the input, so wrapped callbacks can be handed
|
|
13
|
+
* directly to engine / hook / tick-controller logic without further plumbing.
|
|
14
|
+
*/
|
|
15
|
+
export declare function createGuardedCallbacks<T extends Partial<SignatureCallbacks>>(callbacks: T, uses: readonly ApiUse[] | undefined, resourceIdentifier: string): T;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime helpers: the pieces of a Serious Gaming runtime that sit beside the
|
|
3
|
+
* specification rather than inside a game.
|
|
4
|
+
*
|
|
5
|
+
* Reachable as `@seriousgaming/sdk-tools/runtime`.
|
|
6
|
+
*
|
|
7
|
+
* Platform-facing. Game authors never import from here: everything a game
|
|
8
|
+
* needs is in `@seriousgaming/sdk`. These are what the dev
|
|
9
|
+
* server's executor, session and build step are made of: the `uses` guard
|
|
10
|
+
* (§6.11), capability scope (§6.1), the §9.5 context merge, the §7.4 surface
|
|
11
|
+
* projection, the §11.8 to §11.9 tick-result check, the checks on what logic
|
|
12
|
+
* returns (§7.4, §10.2, §11.12), and the manifest version and optional
|
|
13
|
+
* features this runtime serves. The shapes may change in a minor
|
|
14
|
+
* release.
|
|
15
|
+
*/
|
|
16
|
+
export { createGuardedCallbacks } from './guarded-callbacks.js';
|
|
17
|
+
export { resolveCapabilityScope } from './capability-scope.js';
|
|
18
|
+
export type { CapabilityScope } from './capability-scope.js';
|
|
19
|
+
export { applyContextUpdate, deepMergeContext } from './context-merge.js';
|
|
20
|
+
export { declaredCapabilityIds, projectContext } from './context-projection.js';
|
|
21
|
+
export { validateTickControllerResult } from './tick-validation.js';
|
|
22
|
+
export { assertJsonSerialisable } from '../execution/engine-state.js';
|
|
23
|
+
export { readAggregateResult, readEngineResult, readTickControllerResult, } from '../execution/logic-result.js';
|
|
24
|
+
export type { EngineResultRead } from '../execution/logic-result.js';
|
|
25
|
+
export type { ValidateTickResultOptions } from './tick-validation.js';
|
|
26
|
+
export { MANIFEST_VERSION, SUPPORTED_FEATURES, SUPPORTED_SERVICES, unsupportedFeatures, unsupportedServices, } from './manifest-version.js';
|
|
27
|
+
export type { ServiceDeclaration } from './manifest-version.js';
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { ApiUse } from '@seriousgaming/sdk';
|
|
2
|
+
/**
|
|
3
|
+
* Format version of the built package manifest (`dist/seriousgaming.json`).
|
|
4
|
+
*
|
|
5
|
+
* Version 2 carries one of each thing a game holds one of — `game`, `engine`,
|
|
6
|
+
* `userInterface` and so on — rather than a single-element array plus a
|
|
7
|
+
* reference back to it (#435).
|
|
8
|
+
*
|
|
9
|
+
* Version 3 leaves the manifest's shape alone and changes what the logic in
|
|
10
|
+
* it returns: engine, hook and endpoint results name their writes under
|
|
11
|
+
* `capabilities` (#592). The version is how a runtime hosting packages built
|
|
12
|
+
* before that tells which shape to read.
|
|
13
|
+
*
|
|
14
|
+
* The field is optional in the schema so that manifests built before it
|
|
15
|
+
* existed still validate. Those manifests are version 1: a runtime treats an
|
|
16
|
+
* absent value as 1 rather than as an error, because published artefacts are
|
|
17
|
+
* archived and must stay runnable.
|
|
18
|
+
*/
|
|
19
|
+
export declare const MANIFEST_VERSION = 3;
|
|
20
|
+
/**
|
|
21
|
+
* The optional features this runtime supports, by the names a manifest's
|
|
22
|
+
* `requires` lists them under.
|
|
23
|
+
*
|
|
24
|
+
* Empty in 1.0: the list exists so that a feature can arrive within manifest
|
|
25
|
+
* version 3 without a new one, and a game that depends on it says so rather
|
|
26
|
+
* than running half-working on a runtime that lacks it.
|
|
27
|
+
*/
|
|
28
|
+
export declare const SUPPORTED_FEATURES: readonly string[];
|
|
29
|
+
/** The entries of a manifest's `requires` that {@link SUPPORTED_FEATURES} does not list. */
|
|
30
|
+
export declare function unsupportedFeatures(manifest: {
|
|
31
|
+
requires?: readonly string[];
|
|
32
|
+
}): string[];
|
|
33
|
+
/**
|
|
34
|
+
* The services this runtime provides, by the `ApiUse` names a resource's
|
|
35
|
+
* `uses` declares them under (§6.11). Every one: the dev server backs each
|
|
36
|
+
* with a client, and a call that cannot reach its provider rejects with that
|
|
37
|
+
* client's typed error rather than the service being absent.
|
|
38
|
+
*/
|
|
39
|
+
export declare const SUPPORTED_SERVICES: readonly ApiUse[];
|
|
40
|
+
/** A resource declaring services, as {@link unsupportedServices} reads it. */
|
|
41
|
+
export interface ServiceDeclaration {
|
|
42
|
+
definition: {
|
|
43
|
+
identifier: string;
|
|
44
|
+
uses?: readonly ApiUse[];
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* The services the given resources declare that `supported` does not list,
|
|
49
|
+
* each with the identifiers of the resources declaring it, in first-declared
|
|
50
|
+
* order. A runtime refuses the package when this is not empty (§6.11, §2.6).
|
|
51
|
+
*/
|
|
52
|
+
export declare function unsupportedServices(resources: readonly ServiceDeclaration[], supported?: readonly ApiUse[]): Array<{
|
|
53
|
+
service: ApiUse;
|
|
54
|
+
resources: string[];
|
|
55
|
+
}>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { TickControllerResult } from '@seriousgaming/sdk';
|
|
2
|
+
/**
|
|
3
|
+
* Options for {@link validateTickControllerResult}.
|
|
4
|
+
*/
|
|
5
|
+
export interface ValidateTickResultOptions {
|
|
6
|
+
/**
|
|
7
|
+
* Override for "now" in ms since epoch, used to evaluate the effective
|
|
8
|
+
* cadence of a scheduled (`nextTickAt`) result. Defaults to `Date.now()`.
|
|
9
|
+
*/
|
|
10
|
+
now?: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Validate a runtime `TickControllerResult` against the §11.8–§11.9 contract.
|
|
14
|
+
*
|
|
15
|
+
* Returns `null` when the result is valid, or a human-readable error message
|
|
16
|
+
* that names the limit, cites SPECIFICATION.md §11, and points at the helper to
|
|
17
|
+
* use (never at an exported symbol). The message is suitable for surfacing to
|
|
18
|
+
* authors at authoring time, in the dev server, or in the build step.
|
|
19
|
+
*
|
|
20
|
+
* The dev server and the build step share this one definition. The SDK's
|
|
21
|
+
* `intervalTick()` / `scheduledTick()` builders validate with a private copy
|
|
22
|
+
* of their own, held to this one by `tick-validation.parity.test.ts`, so the
|
|
23
|
+
* builders and the runtime agree on what 'valid' means.
|
|
24
|
+
*/
|
|
25
|
+
export declare function validateTickControllerResult(result: Pick<TickControllerResult, 'intervalMs' | 'nextTickAt'>, options?: ValidateTickResultOptions): string | null;
|