@bitmagic/cli 0.1.83-dev.3 → 0.1.83-dev.5

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 (95) hide show
  1. package/README.md +34 -3
  2. package/assets/metahuman/src/work/metahuman/MetaHumanMaterials.ts +4 -0
  3. package/assets/metahuman/src/work/metahuman/StudioEnvironment.ts +4 -0
  4. package/assets/optimizing-assets/SKILL.md +3 -2
  5. package/assets/optimizing-assets/references/tools.md +1 -1
  6. package/dist/cli.d.ts +9 -0
  7. package/dist/commands/upgrade.d.ts +18 -0
  8. package/dist/commands/upgrade.js +94 -1
  9. package/dist/commands/upgrade.js.map +1 -1
  10. package/dist/config/environments.d.ts +1 -1
  11. package/dist/editor/animation-preview-page.js +20 -0
  12. package/dist/editor/animation-preview-page.js.map +1 -1
  13. package/dist/editor/asset-viewer.js +4 -0
  14. package/dist/editor/asset-viewer.js.map +1 -1
  15. package/dist/editor/design.d.ts +2 -2
  16. package/dist/editor/design.js +2 -2
  17. package/dist/editor/design.js.map +1 -1
  18. package/dist/editor/hud-replay-page.js +5 -0
  19. package/dist/editor/hud-replay-page.js.map +1 -1
  20. package/dist/editor/recording-sink.js +1 -1
  21. package/dist/editor/reload-bus.js +1 -1
  22. package/dist/editor/runtime-token.d.ts +61 -0
  23. package/dist/editor/runtime-token.js +74 -0
  24. package/dist/editor/runtime-token.js.map +1 -0
  25. package/dist/editor/save.d.ts +2 -2
  26. package/dist/editor/server.js +39 -12
  27. package/dist/editor/server.js.map +1 -1
  28. package/dist/editor/shell-page.d.ts +13 -9
  29. package/dist/editor/shell-page.js +70 -11
  30. package/dist/editor/shell-page.js.map +1 -1
  31. package/dist/forge/browser-host.d.ts +1 -1
  32. package/dist/forge/browser-host.js +13 -10
  33. package/dist/forge/browser-host.js.map +1 -1
  34. package/dist/generate/model.js +4 -1
  35. package/dist/generate/model.js.map +1 -1
  36. package/dist/generate/prop.js +4 -1
  37. package/dist/generate/prop.js.map +1 -1
  38. package/dist/http/signed-upload.d.ts +6 -4
  39. package/dist/http/signed-upload.js +37 -14
  40. package/dist/http/signed-upload.js.map +1 -1
  41. package/dist/mobile/rewrite-shim.js +1 -1
  42. package/dist/poki/publish.d.ts +5 -1
  43. package/dist/poki/publish.js +24 -7
  44. package/dist/poki/publish.js.map +1 -1
  45. package/dist/publish/game-exchange.d.ts +5 -0
  46. package/dist/publish/game-exchange.js +16 -3
  47. package/dist/publish/game-exchange.js.map +1 -1
  48. package/dist/scaffold/aliases.d.ts +16 -1
  49. package/dist/scaffold/aliases.js +10 -2
  50. package/dist/scaffold/aliases.js.map +1 -1
  51. package/dist/scaffold/blender-level-skill-files.js +2 -2
  52. package/dist/scaffold/engine-capabilities.d.ts +34 -0
  53. package/dist/scaffold/engine-capabilities.js +39 -0
  54. package/dist/scaffold/engine-capabilities.js.map +1 -0
  55. package/dist/scaffold/game-migration.d.ts +88 -0
  56. package/dist/scaffold/game-migration.js +491 -0
  57. package/dist/scaffold/game-migration.js.map +1 -0
  58. package/dist/scaffold/import-codemod.d.ts +51 -0
  59. package/dist/scaffold/import-codemod.js +118 -0
  60. package/dist/scaffold/import-codemod.js.map +1 -0
  61. package/dist/scaffold/legacy-game-baselines.d.ts +14 -0
  62. package/dist/scaffold/legacy-game-baselines.js +218 -0
  63. package/dist/scaffold/legacy-game-baselines.js.map +1 -0
  64. package/dist/scaffold/project-files.d.ts +20 -2
  65. package/dist/scaffold/project-files.js +64 -58
  66. package/dist/scaffold/project-files.js.map +1 -1
  67. package/dist/scaffold/project.d.ts +10 -3
  68. package/dist/scaffold/project.js +22 -23
  69. package/dist/scaffold/project.js.map +1 -1
  70. package/dist/scaffold/upgrade-project.js +4 -1
  71. package/dist/scaffold/upgrade-project.js.map +1 -1
  72. package/dist/smoke/run.js +8 -1
  73. package/dist/smoke/run.js.map +1 -1
  74. package/dist/trailer/record-session.d.ts +5 -3
  75. package/dist/trailer/record-session.js +12 -12
  76. package/dist/trailer/record-session.js.map +1 -1
  77. package/dist/trailer/vendored-recorder.d.ts +8 -0
  78. package/dist/trailer/vendored-recorder.js +26 -0
  79. package/dist/trailer/vendored-recorder.js.map +1 -0
  80. package/dist/vendor/hud-theme/engine/hud/resolveWorldTheme.js +7 -0
  81. package/dist/verify/browser.d.ts +6 -0
  82. package/dist/verify/browser.js +32 -0
  83. package/dist/verify/browser.js.map +1 -1
  84. package/dist/verify/categories.d.ts +1 -1
  85. package/dist/verify/categories.js +1 -0
  86. package/dist/verify/categories.js.map +1 -1
  87. package/dist/verify/classify.d.ts +17 -0
  88. package/dist/verify/classify.js +11 -0
  89. package/dist/verify/classify.js.map +1 -1
  90. package/dist/verify/mobile-parity.d.ts +1 -1
  91. package/dist/verify/mobile-parity.js +1 -1
  92. package/dist/verify/model-downloads.d.ts +47 -0
  93. package/dist/verify/model-downloads.js +127 -0
  94. package/dist/verify/model-downloads.js.map +1 -0
  95. package/package.json +8 -5
@@ -17,7 +17,11 @@ export interface PokiPublishDeps {
17
17
  collect: typeof collectUrls;
18
18
  check: (options: PokiCheckOptions) => Promise<PokiCheckResult>;
19
19
  }
20
- /** Capability metadata lives in the engine tarball, including locally built engines. */
20
+ /**
21
+ * Capability metadata lives in the engine tarball, including locally built engines: the engine
22
+ * manifest's `pokiExport` (engine-capabilities.ts), or on engines from before the manifest
23
+ * `engine/engine/poki-capabilities.json`'s `exportVersion`.
24
+ */
21
25
  export declare function requirePokiCapability(root: string): void;
22
26
  export declare function pokiOutputPath(root: string, output: string | undefined, cwd: string): string;
23
27
  export declare function runPokiPublish(args: PokiPublishArgs, deps?: PokiPublishDeps): Promise<void>;
@@ -7,6 +7,7 @@ import { createOutput } from '../output.js';
7
7
  import { loadProjectContext } from '../project/context.js';
8
8
  import { readPlatformDeclaration } from '../project/platform-declaration.js';
9
9
  import { computeFingerprint } from '../publish/fingerprint.js';
10
+ import { readEngineCapabilities } from '../scaffold/engine-capabilities.js';
10
11
  import { buildBundlePaths, readBuildManifest, runBuild, VITE_PUBLISH_STANDALONE_CONFIG } from '../publish/bundle.js';
11
12
  import { checkVerifyGate } from '../publish/meta-block.js';
12
13
  import { readVerifyRecord } from '../verify/result.js';
@@ -25,22 +26,38 @@ function defaultDeps() {
25
26
  check: async (options) => (await import('./check.js')).runPokiCheck(options),
26
27
  };
27
28
  }
28
- /** Capability metadata lives in the engine tarball, including locally built engines. */
29
+ /**
30
+ * Capability metadata lives in the engine tarball, including locally built engines: the engine
31
+ * manifest's `pokiExport` (engine-capabilities.ts), or on engines from before the manifest
32
+ * `engine/engine/poki-capabilities.json`'s `exportVersion`.
33
+ */
29
34
  export function requirePokiCapability(root) {
30
35
  if (!fs.existsSync(path.join(root, VITE_PUBLISH_STANDALONE_CONFIG))) {
31
36
  throw new CliError(`Missing ${VITE_PUBLISH_STANDALONE_CONFIG}. Run \`bitmagic upgrade\` before Poki export.`, 4);
32
37
  }
33
- const file = path.join(root, 'engine', 'engine', 'poki-capabilities.json');
38
+ const advertised = readEngineCapabilities(path.join(root, 'engine')).pokiExport ?? legacyPokiExportVersion(root);
39
+ if (advertised === undefined) {
40
+ throw new CliError('This engine does not advertise Poki export support. Run `bitmagic upgrade`, then `bitmagic verify`.', 4);
41
+ }
42
+ if (advertised !== 1) {
43
+ throw new CliError('The engine Poki export capability is incompatible. Run `bitmagic self-update` and `bitmagic upgrade`.', 4);
44
+ }
45
+ }
46
+ /**
47
+ * `exportVersion` from the marker file engines advertised Poki export with before the engine
48
+ * manifest; undefined when the file is missing or unreadable, NaN when it says something else.
49
+ */
50
+ function legacyPokiExportVersion(root) {
34
51
  let capability;
35
52
  try {
36
- capability = JSON.parse(fs.readFileSync(file, 'utf-8'));
53
+ capability = JSON.parse(fs.readFileSync(path.join(root, 'engine', 'engine', 'poki-capabilities.json'), 'utf-8'));
37
54
  }
38
55
  catch {
39
- throw new CliError('This engine does not advertise Poki export support. Run `bitmagic upgrade`, then `bitmagic verify`.', 4);
40
- }
41
- if (typeof capability !== 'object' || capability === null || !('exportVersion' in capability) || capability.exportVersion !== 1) {
42
- throw new CliError('The engine Poki export capability is incompatible. Run `bitmagic self-update` and `bitmagic upgrade`.', 4);
56
+ return undefined;
43
57
  }
58
+ if (typeof capability !== 'object' || capability === null || !('exportVersion' in capability))
59
+ return Number.NaN;
60
+ return typeof capability.exportVersion === 'number' ? capability.exportVersion : Number.NaN;
44
61
  }
45
62
  /** Project inputs, build outputs and managed artifacts a `--output` path must never land in. */
46
63
  const PROTECTED_DIRS = /^(src|engine|node_modules|dist|\.git|\.agents|\.claude|\.kiro)(\/|$)/;
@@ -1 +1 @@
1
- {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/poki/publish.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/poki/publish.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,11 @@ import { type GameExchangeDeclaration, type PublishGameExchangeRequest, type Pub
2
2
  /**
3
3
  * Whether the engine vendored into this project can show exchange tiles at all. A project's engine
4
4
  * only moves on `bitmagic upgrade`, so a current CLI regularly meets an engine without the module.
5
+ *
6
+ * The engine manifest's `gameExchange` capability answers first; engines from before the manifest
7
+ * are recognised by their exchange module instead. The capability is what keeps the answer right
8
+ * once the module leaves the engine for the Bitmagic platform package (engine/bitmagic/), where a
9
+ * file probe would have to chase it.
5
10
  */
6
11
  export declare function vendoredEngineSupportsExchange(root: string): boolean;
7
12
  export type GameExchangeRead = {
@@ -21,14 +21,27 @@
21
21
  import * as fs from 'node:fs';
22
22
  import * as path from 'node:path';
23
23
  import { parseGameExchangeDeclaration, } from '@bitmagic/asset-core/game-exchange';
24
- /** The file the engine's exchange module is installed from; absent in an engine that predates it. */
25
- const ENGINE_EXCHANGE_MODULE = ['engine', 'engine', 'exchange', 'installGameExchange.ts'];
24
+ import { hasEngineCapability, readEngineCapabilities } from '../scaffold/engine-capabilities.js';
25
+ /**
26
+ * The files the engine's exchange module is installed from, current home first; none exists in an
27
+ * engine that predates it. The old path stays: an engine vendored before the module moved has only it.
28
+ */
29
+ const ENGINE_EXCHANGE_MODULES = [
30
+ ['engine', 'engine', 'platform', 'exchange', 'installGameExchange.ts'],
31
+ ['engine', 'engine', 'exchange', 'installGameExchange.ts'],
32
+ ];
26
33
  /**
27
34
  * Whether the engine vendored into this project can show exchange tiles at all. A project's engine
28
35
  * only moves on `bitmagic upgrade`, so a current CLI regularly meets an engine without the module.
36
+ *
37
+ * The engine manifest's `gameExchange` capability answers first; engines from before the manifest
38
+ * are recognised by their exchange module instead. The capability is what keeps the answer right
39
+ * once the module leaves the engine for the Bitmagic platform package (engine/bitmagic/), where a
40
+ * file probe would have to chase it.
29
41
  */
30
42
  export function vendoredEngineSupportsExchange(root) {
31
- return fs.existsSync(path.join(root, ...ENGINE_EXCHANGE_MODULE));
43
+ return hasEngineCapability(readEngineCapabilities(path.join(root, 'engine')), 'gameExchange')
44
+ || ENGINE_EXCHANGE_MODULES.some((parts) => fs.existsSync(path.join(root, ...parts)));
32
45
  }
33
46
  function readWorkFile(filePath) {
34
47
  let parsed;
@@ -1 +1 @@
1
- {"version":3,"file":"game-exchange.js","sourceRoot":"","sources":["../../src/publish/game-exchange.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"game-exchange.js","sourceRoot":"","sources":["../../src/publish/game-exchange.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,26 @@
1
+ import { type EngineCapabilities } from './engine-capabilities.js';
1
2
  /**
2
3
  * The engine resolves every import through a path alias. The same set has to appear in three
3
4
  * places — tsconfig paths, the browser import map, and vite's resolve.alias — so it is defined
4
5
  * once here and rendered into each form. Hand-maintaining three copies is the most likely way a
5
6
  * scaffolded project silently stops compiling.
7
+ *
8
+ * The names follow the engine's own table, game/build/aliases.mjs, plus aliases kept for projects
9
+ * on older engines (`genres`); the directories are this project layout's, not the engine repo's.
10
+ * import-map-contract.test.ts holds the names to the engine's.
6
11
  */
7
12
  export interface AliasRoot {
8
13
  /** Alias prefix as written in imports, without a trailing slash. */
9
14
  name: string;
10
15
  /** Directory the alias resolves to in the project, relative to the project root. */
11
16
  sourceDir: string;
17
+ /**
18
+ * The engine capability (engine-capabilities.ts) the alias's directory arrives with. The page's
19
+ * import map (`renderIndexHtml`) carries the alias only when the vendored engine advertises it,
20
+ * so a project on an older engine keeps the page it always had. tsconfig paths and the Vite
21
+ * aliases carry it regardless: an alias whose directory does not exist resolves nothing there.
22
+ */
23
+ capability?: string;
12
24
  }
13
25
  export declare const ALIASES: AliasRoot[];
14
26
  /**
@@ -22,6 +34,9 @@ export declare function tsconfigPaths(): Record<string, string[]>;
22
34
  /**
23
35
  * Import-map and vite targets. tsc runs with rootDir "." so it mirrors the source tree into
24
36
  * dist/, meaning engine/engine/X.ts emits to dist/engine/engine/X.js.
37
+ *
38
+ * With `capabilities`, an alias gated on a capability the engine does not advertise is left out —
39
+ * the form a project's own index.html takes. Without, every alias is in.
25
40
  */
26
- export declare function importMapEntries(): Record<string, string>;
41
+ export declare function importMapEntries(capabilities?: EngineCapabilities): Record<string, string>;
27
42
  export declare function viteAliasEntries(): Record<string, string>;
@@ -1,4 +1,5 @@
1
1
  import { CliError } from '../errors.js';
2
+ import { hasEngineCapability } from './engine-capabilities.js';
2
3
  export const ALIASES = [
3
4
  { name: 'engine', sourceDir: 'engine/engine' },
4
5
  { name: 'types', sourceDir: 'engine/types' },
@@ -25,6 +26,10 @@ export const ALIASES = [
25
26
  // Moving this directory typechecks clean (tsc never sees a fetch string) but breaks the game
26
27
  // at runtime with "world.json not found", so don't "simplify" it back to 'src'.
27
28
  { name: 'work', sourceDir: 'src/work' },
29
+ // The Bitmagic platform package (game/src/bitmagic): the services the engine's platform seam
30
+ // is given on Bitmagic lanes, and the boot module the page loads first so they are registered
31
+ // before any engine code runs. Vendored only by engines that advertise `platformEntry`.
32
+ { name: 'bitmagic', sourceDir: 'engine/bitmagic', capability: 'platformEntry' },
28
33
  ];
29
34
  /**
30
35
  * Where one named alias resolves to in the project. Callers that need a specific alias's
@@ -45,9 +50,12 @@ export function tsconfigPaths() {
45
50
  /**
46
51
  * Import-map and vite targets. tsc runs with rootDir "." so it mirrors the source tree into
47
52
  * dist/, meaning engine/engine/X.ts emits to dist/engine/engine/X.js.
53
+ *
54
+ * With `capabilities`, an alias gated on a capability the engine does not advertise is left out —
55
+ * the form a project's own index.html takes. Without, every alias is in.
48
56
  */
49
- export function importMapEntries() {
50
- return Object.fromEntries(ALIASES.map((a) => [`${a.name}/`, `/dist/${a.sourceDir}/`]));
57
+ export function importMapEntries(capabilities) {
58
+ return Object.fromEntries(ALIASES.filter((a) => capabilities === undefined || a.capability === undefined || hasEngineCapability(capabilities, a.capability)).map((a) => [`${a.name}/`, `/dist/${a.sourceDir}/`]));
51
59
  }
52
60
  export function viteAliasEntries() {
53
61
  return importMapEntries();
@@ -1 +1 @@
1
- {"version":3,"file":"aliases.js","sourceRoot":"","sources":["../../src/scaffold/aliases.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAexC,MAAM,CAAC,MAAM,OAAO,GAAgB;IAClC,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE;IAC9C,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE;IAC5C,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE;IAC9C,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE;IAC5C,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE;IAC9C,wFAAwF;IACxF,8FAA8F;IAC9F,+FAA+F;IAC/F,2FAA2F;IAC3F,4FAA4F;IAC5F,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE;IAC1C,4FAA4F;IAC5F,gGAAgG;IAChG,oDAAoD;IACpD,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE;IAClD,6FAA6F;IAC7F,uBAAuB;IACvB,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE;IAC9C,4FAA4F;IAC5F,0FAA0F;IAC1F,6FAA6F;IAC7F,4FAA4F;IAC5F,6FAA6F;IAC7F,gFAAgF;IAChF,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE;CACxC,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,QAAQ,CAAC,2BAA2B,IAAI,UAAU,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,KAAK,CAAC,SAAS,CAAC;AACzB,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,aAAa;IAC3B,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACvF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;AACzF,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,gBAAgB,EAAE,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"aliases.js","sourceRoot":"","sources":["../../src/scaffold/aliases.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAA2B,MAAM,0BAA0B,CAAC;AA0BxF,MAAM,CAAC,MAAM,OAAO,GAAgB;IAClC,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE;IAC9C,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE;IAC5C,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE;IAC9C,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE;IAC5C,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE;IAC9C,wFAAwF;IACxF,8FAA8F;IAC9F,+FAA+F;IAC/F,2FAA2F;IAC3F,4FAA4F;IAC5F,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE;IAC1C,4FAA4F;IAC5F,gGAAgG;IAChG,oDAAoD;IACpD,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE;IAClD,6FAA6F;IAC7F,uBAAuB;IACvB,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE;IAC9C,4FAA4F;IAC5F,0FAA0F;IAC1F,6FAA6F;IAC7F,4FAA4F;IAC5F,6FAA6F;IAC7F,gFAAgF;IAChF,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE;IACvC,6FAA6F;IAC7F,8FAA8F;IAC9F,wFAAwF;IACxF,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE,UAAU,EAAE,eAAe,EAAE;CAChF,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,QAAQ,CAAC,2BAA2B,IAAI,UAAU,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,KAAK,CAAC,SAAS,CAAC;AACzB,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,aAAa;IAC3B,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACvF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,YAAiC;IAChE,OAAO,MAAM,CAAC,WAAW,CACvB,OAAO,CAAC,MAAM,CACZ,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS,IAAI,mBAAmB,CAAC,YAAY,EAAE,CAAC,CAAC,UAAU,CAAC,CACnH,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CACtD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,gBAAgB,EAAE,CAAC;AAC5B,CAAC"}
@@ -250,7 +250,7 @@ under the level. Then, in \`src/work/Game.ts\`, after the player controller exis
250
250
 
251
251
  \`\`\`ts
252
252
  import { MeshLevel, DEFAULT_MESH_LEVEL_OPTIONS } from 'engine/meshlevel/MeshLevel.js';
253
- import { DEFAULT_FALL_RESCUE_OPTIONS } from 'engine/FallRescue.js';
253
+ import { DEFAULT_FALL_RESCUE_OPTIONS } from 'engine/player/life/FallRescue.js';
254
254
  import levelJson from './<name>.mesh-level.json';
255
255
 
256
256
  const level = new MeshLevel(this.engine, { glb: { assetId: 'level-<name>' }, level: { data: levelJson } }, DEFAULT_MESH_LEVEL_OPTIONS);
@@ -643,7 +643,7 @@ Run it after EVERY rebuild; a door moved in the script and not synced is a leaf
643
643
 
644
644
  \`\`\`ts
645
645
  import { MeshLevel, DEFAULT_MESH_LEVEL_OPTIONS } from 'engine/meshlevel/MeshLevel.js';
646
- import { DEFAULT_FALL_RESCUE_OPTIONS } from 'engine/FallRescue.js';
646
+ import { DEFAULT_FALL_RESCUE_OPTIONS } from 'engine/player/life/FallRescue.js';
647
647
  import levelJson from './<name>.mesh-level.json';
648
648
 
649
649
  // After setupPlayerController(), before any NPC spawns.
@@ -0,0 +1,34 @@
1
+ /**
2
+ * What a vendored engine says it can do, from `engine/engine/engine-manifest.json`
3
+ * (game/src/engine/engine-manifest.json in the engine repo).
4
+ *
5
+ * The CLI ships on npm on its own schedule and meets engines both older and newer than itself, so
6
+ * every lane that depends on an engine feature asks the engine instead of assuming. A capability
7
+ * is an integer version; a missing one, a missing manifest and an unreadable manifest all mean
8
+ * "not supported", which is exactly what an engine from before the manifest existed is.
9
+ *
10
+ * Capabilities the CLI reads today:
11
+ * - `pokiExport`: the Poki export lane (`bitmagic poki`). Older engines advertise it in
12
+ * `poki-capabilities.json` instead; see `requirePokiCapability`.
13
+ * - `platformEntry`: the page boots through `bitmagic/boot.js`, which registers the Bitmagic
14
+ * platform services before the engine runs, and carries `<meta name="bm:platform">`. Without
15
+ * it the page loads `engine/GameTemplate.js` as it always has (`renderIndexHtml`).
16
+ * - `gameExchange`: the engine can show Game Exchange tiles. Older engines are recognised by
17
+ * their exchange module instead; see `vendoredEngineSupportsExchange`.
18
+ */
19
+ export interface EngineCapabilities {
20
+ readonly [name: string]: number | undefined;
21
+ }
22
+ /** The manifest's path inside a project's (or an extracted tarball's) engine directory. */
23
+ export declare const ENGINE_MANIFEST_RELATIVE: string;
24
+ /** An engine that advertises nothing: every engine released before the manifest. */
25
+ export declare const NO_ENGINE_CAPABILITIES: EngineCapabilities;
26
+ /**
27
+ * Reads the capabilities of the engine at `engineDir`: a project's `engine/`, or the directory a
28
+ * tarball was extracted into (the two share a layout). Never throws: a manifest that is missing
29
+ * or unreadable reads as no capabilities, and a capability whose value is not a positive integer
30
+ * is left out.
31
+ */
32
+ export declare function readEngineCapabilities(engineDir: string): EngineCapabilities;
33
+ /** Whether the engine advertises `name` at version `version` or later. */
34
+ export declare function hasEngineCapability(capabilities: EngineCapabilities, name: string, version?: number): boolean;
@@ -0,0 +1,39 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ /** The manifest's path inside a project's (or an extracted tarball's) engine directory. */
4
+ export const ENGINE_MANIFEST_RELATIVE = path.join('engine', 'engine-manifest.json');
5
+ /** An engine that advertises nothing: every engine released before the manifest. */
6
+ export const NO_ENGINE_CAPABILITIES = Object.freeze({});
7
+ /**
8
+ * Reads the capabilities of the engine at `engineDir`: a project's `engine/`, or the directory a
9
+ * tarball was extracted into (the two share a layout). Never throws: a manifest that is missing
10
+ * or unreadable reads as no capabilities, and a capability whose value is not a positive integer
11
+ * is left out.
12
+ */
13
+ export function readEngineCapabilities(engineDir) {
14
+ let parsed;
15
+ try {
16
+ parsed = JSON.parse(fs.readFileSync(path.join(engineDir, ENGINE_MANIFEST_RELATIVE), 'utf-8'));
17
+ }
18
+ catch {
19
+ return NO_ENGINE_CAPABILITIES;
20
+ }
21
+ if (typeof parsed !== 'object' || parsed === null || !('capabilities' in parsed)) {
22
+ return NO_ENGINE_CAPABILITIES;
23
+ }
24
+ const raw = parsed.capabilities;
25
+ if (typeof raw !== 'object' || raw === null)
26
+ return NO_ENGINE_CAPABILITIES;
27
+ const capabilities = {};
28
+ for (const [name, value] of Object.entries(raw)) {
29
+ if (typeof value === 'number' && Number.isInteger(value) && value > 0)
30
+ capabilities[name] = value;
31
+ }
32
+ return capabilities;
33
+ }
34
+ /** Whether the engine advertises `name` at version `version` or later. */
35
+ export function hasEngineCapability(capabilities, name, version = 1) {
36
+ const value = capabilities[name];
37
+ return value !== undefined && value >= version;
38
+ }
39
+ //# sourceMappingURL=engine-capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine-capabilities.js","sourceRoot":"","sources":["../../src/scaffold/engine-capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAwB7B,2FAA2F;AAC3F,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAC;AAEpF,oFAAoF;AACpF,MAAM,CAAC,MAAM,sBAAsB,GAAuB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAE5E;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,SAAiB;IACtD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAChG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,sBAAsB,CAAC;IAChC,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,cAAc,IAAI,MAAM,CAAC,EAAE,CAAC;QACjF,OAAO,sBAAsB,CAAC;IAChC,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC;IAChC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,sBAAsB,CAAC;IAC3E,MAAM,YAAY,GAA2B,EAAE,CAAC;IAChD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAChD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;YAAE,YAAY,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IACpG,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,mBAAmB,CACjC,YAAgC,EAChC,IAAY,EACZ,OAAO,GAAG,CAAC;IAEX,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,IAAI,OAAO,CAAC;AACjD,CAAC"}
@@ -0,0 +1,88 @@
1
+ import type * as TS from 'typescript';
2
+ import { type LegacyBody } from './legacy-game-baselines.js';
3
+ /**
4
+ * `bitmagic upgrade --migrate-game`: turn a Game.ts written on the old baseline — a whole
5
+ * `class VoxelGame implements GameModule` that built its own Spawner, VehicleManager,
6
+ * VehicleSpawner and PlayerLoader and handed them to the engine with `setX()` — into the small
7
+ * `class VoxelGame extends VoxelGameBase` every game is now, keeping only what the creator changed.
8
+ *
9
+ * It only rewrites what it can prove:
10
+ *
11
+ * - a member identical (token for token, comments and layout ignored) to the same member in any
12
+ * released baseline is the default, and is dropped;
13
+ * - `constructor`, `load`, `update` and `dispose` may additionally carry the creator's own
14
+ * statements, but only inserted at a point a VoxelGameBase hook runs at — after the world
15
+ * (`onWorldLoaded`), after the camera (`onCameraReady`), after the player controller
16
+ * (`onPlayerReady`), at the end of a frame (`updateCamera`), beside the vehicles' disposal
17
+ * (`disposeGameplay`), or at the very start or end of the method — and each default statement
18
+ * must still be there, in order;
19
+ * - a modified `setupCamera` or `setupVoxelLighting` stays as an override (both are hooks now);
20
+ * - anything the creator added (fields, methods, top-level code) is kept as it is, with
21
+ * `this.spawner` / `this.vehicleSpawner` read through `getSpawner()` / `getVehicleSpawner()`.
22
+ *
23
+ * Anything else — a default statement removed or edited, a statement added where no hook runs,
24
+ * a changed member VoxelGameBase also declares — leaves the file unchanged and says why. The
25
+ * result is then type-checked with the project's own compiler and put back if it does not
26
+ * compile, so a migration that runs is one that compiles.
27
+ */
28
+ export declare const GAME_FILE = "src/work/Game.ts";
29
+ export declare const BASE_FILE = "src/work/VoxelGameBase.ts";
30
+ /** The new baseline, as the engine just vendored it. */
31
+ export declare const VENDORED_BASELINE_DIR = "engine/baseline";
32
+ /** The methods whose bodies may carry insertions, and the gaps they may sit in. */
33
+ export type SegmentedMethod = 'constructor' | 'load' | 'update' | 'dispose';
34
+ export declare const SEGMENTED_METHODS: readonly SegmentedMethod[];
35
+ /** A statement or member compared by its tokens alone, so comments and layout never matter. */
36
+ export declare function fingerprint(ts: typeof TS, node: TS.Node, sf: TS.SourceFile): string;
37
+ /** What one Game.ts version contributes to the known defaults (the generator's half). */
38
+ export interface LegacyGameShape {
39
+ members: Record<string, string>;
40
+ bodies: Partial<Record<SegmentedMethod, LegacyBody>>;
41
+ }
42
+ /**
43
+ * The fingerprints of a pre-VoxelGameBase Game.ts — every member, plus the statement list and
44
+ * hook gaps of each segmented method. Null when the file has no such class. Run over every
45
+ * released baseline by `scripts/gen-legacy-game-baselines.mjs` to produce the known defaults.
46
+ */
47
+ export declare function describeLegacyGame(ts: typeof TS, text: string): LegacyGameShape | null;
48
+ export type GameMigrationOutcome = {
49
+ status: 'migrated';
50
+ kept: string[];
51
+ hooks: string[];
52
+ wroteBase: boolean;
53
+ } | {
54
+ status: 'already-migrated';
55
+ } | {
56
+ status: 'skipped';
57
+ reason: string;
58
+ };
59
+ export interface PlanResult {
60
+ outcome: GameMigrationOutcome;
61
+ /** The new Game.ts, when the outcome is `migrated`. */
62
+ gameText?: string;
63
+ }
64
+ /**
65
+ * Plan the rewrite of one Game.ts against the new baseline: pure, reads nothing but its inputs.
66
+ *
67
+ * `newBaselineGame` is the vendored `engine/baseline/Game.ts` (the file a game with nothing of
68
+ * its own becomes, verbatim), `newBaseText` the vendored `VoxelGameBase.ts`.
69
+ */
70
+ export declare function planGameMigration(ts: typeof TS, oldText: string, newBaselineGame: string, newBaseText: string): PlanResult;
71
+ export interface TypeCheckResult {
72
+ ok: boolean;
73
+ /** The compiler's output, for the report when it failed. */
74
+ output: string;
75
+ }
76
+ export interface MigrateGameOptions {
77
+ root: string;
78
+ ts: typeof TS;
79
+ /** Runs the project's type-check; the migration is kept only when it passes before and after. */
80
+ typeCheck: () => TypeCheckResult;
81
+ }
82
+ /**
83
+ * Migrate `src/work/Game.ts` onto VoxelGameBase in place: plan it, write the new Game.ts and the
84
+ * vendored `VoxelGameBase.ts` beside it, type-check, and put both files back as they were when the
85
+ * project no longer compiles. A project that did not compile before is not touched at all, since
86
+ * a failure afterwards could not be told apart from one it already had.
87
+ */
88
+ export declare function migrateGameFile(options: MigrateGameOptions): GameMigrationOutcome;