@bitmagic/cli 0.1.59-dev.9 → 0.1.60-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/README.md +74 -17
  2. package/dist/cli.d.ts +3 -3
  3. package/dist/commands/dev.d.ts +2 -2
  4. package/dist/commands/dev.js +38 -19
  5. package/dist/commands/dev.js.map +1 -1
  6. package/dist/commands/forge.d.ts +5 -4
  7. package/dist/commands/forge.js +46 -8
  8. package/dist/commands/forge.js.map +1 -1
  9. package/dist/commands/generate.js +4 -0
  10. package/dist/commands/generate.js.map +1 -1
  11. package/dist/commands/init.js +2 -1
  12. package/dist/commands/init.js.map +1 -1
  13. package/dist/commands/reload.d.ts +1 -1
  14. package/dist/commands/reload.js +6 -3
  15. package/dist/commands/reload.js.map +1 -1
  16. package/dist/commands/verify.js +17 -6
  17. package/dist/commands/verify.js.map +1 -1
  18. package/dist/editor/animation-preview-page.js +96 -1
  19. package/dist/editor/animation-preview-page.js.map +1 -1
  20. package/dist/editor/design.js +70 -0
  21. package/dist/editor/design.js.map +1 -1
  22. package/dist/editor/motion-sink.d.ts +12 -0
  23. package/dist/editor/motion-sink.js +10 -1
  24. package/dist/editor/motion-sink.js.map +1 -1
  25. package/dist/editor/server.d.ts +1 -1
  26. package/dist/editor/server.js +30 -3
  27. package/dist/editor/server.js.map +1 -1
  28. package/dist/editor/shell-page.js +100 -7
  29. package/dist/editor/shell-page.js.map +1 -1
  30. package/dist/forge/voxelize-session.js +5 -4
  31. package/dist/forge/voxelize-session.js.map +1 -1
  32. package/dist/local-port.d.ts +36 -11
  33. package/dist/local-port.js +43 -14
  34. package/dist/local-port.js.map +1 -1
  35. package/dist/mobile/dev-cert.js +2 -1
  36. package/dist/mobile/dev-cert.js.map +1 -1
  37. package/dist/port-lane.d.ts +59 -0
  38. package/dist/port-lane.js +66 -0
  39. package/dist/port-lane.js.map +1 -0
  40. package/dist/project/dev-handle.d.ts +6 -1
  41. package/dist/project/dev-handle.js +11 -3
  42. package/dist/project/dev-handle.js.map +1 -1
  43. package/dist/scaffold/project-files.js +35 -3
  44. package/dist/scaffold/project-files.js.map +1 -1
  45. package/package.json +4 -4
@@ -1,3 +1,4 @@
1
+ import type { PortLane } from './port-lane.js';
1
2
  /**
2
3
  * The port window the platform's bucket CORS policy allowlists as an origin.
3
4
  *
@@ -5,8 +6,14 @@
5
6
  * project served on localhost is making CROSS-ORIGIN requests for them. The bucket answers with
6
7
  * `Access-Control-Allow-Origin` only for the origins named in its CORS config — the portal and
7
8
  * creator hosts, plus `http://localhost:3000`–`3199` (roleverse-infra,
8
- * the portal-cdn terragrunt config per environment). `bitmagic dev` sits inside that window at
9
- * 3010; anything that asks the OS for an ephemeral port (`listen(0)` → 49xxx+) falls outside it.
9
+ * the portal-cdn terragrunt config per environment). Everything `bitmagic dev`, `verify`, `forge`
10
+ * and `generate` bind sits inside it; anything that asks the OS for an ephemeral port
11
+ * (`listen(0)` → 49xxx+) falls outside it.
12
+ *
13
+ * Nothing here picks a number, though. The window is split in half so a dev-line and a release-line
14
+ * install cannot take each other's ports (port-lane.ts), and every function below scans the LANE it
15
+ * is handed, never the whole window. The bounds here remain the outer limit: they are what an
16
+ * explicit `--port` is checked against, because a creator naming a port is entitled to either half.
10
17
  *
11
18
  * The failure is quiet and easy to misread. The fetch is blocked, `WorldGenerator` falls back to
12
19
  * an empty voxel world, the level's terrain simply is not there, and the symptom is a player
@@ -24,20 +31,38 @@ export declare const CORS_ALLOWED_PORT_MAX = 3199;
24
31
  * other, and being told the rule once, at the point of the mistake, beats discovering it as a
25
32
  * terrain-less world. (The shell itself fetches nothing from the CDN, so its own check is purely
26
33
  * that kindness.)
34
+ *
35
+ * Checked against the whole window, deliberately not against this install's lane. The lane governs
36
+ * where a DEFAULT drifts to, which is a question about avoiding the other install; naming a port
37
+ * outright is a statement that you know what is on the machine, and refusing it because the other
38
+ * line nominally owns that half would make the flag a suggestion for no benefit.
27
39
  */
28
40
  export declare function parseLocalPort(value: string | undefined, fallback: number, flag: string): number;
29
41
  /**
30
- * A free port the CDN will serve assets to, or `null` when the whole window is taken.
42
+ * A free port in this install's lane, or `null` when every port in the lane is taken.
31
43
  *
32
44
  * Returning `null` rather than silently falling back to an ephemeral port is deliberate: the
33
45
  * caller can then say what the consequence is, instead of the run proceeding to a level with no
34
46
  * terrain and no explanation.
35
47
  *
36
- * The scan starts at a pseudo-random offset so two concurrent runs do not both take 3000 and race;
37
- * `tryListen` closing before the caller binds leaves a window either way, which is why callers
38
- * must handle a bind failure rather than trusting this.
48
+ * It never spills into the other lane either, for the same class of reason. A lane is a promise
49
+ * that the other install's ports are still there when it starts; taking them because they happen to
50
+ * be free right now would break that promise at exactly the moment two installs are busiest, and
51
+ * quietly. A hundred held ports is a machine with a problem to report, not a lane to abandon.
52
+ *
53
+ * The scan starts at a pseudo-random offset so two concurrent runs do not both take the lane's
54
+ * first port and race; `tryListen` closing before the caller binds leaves a window either way,
55
+ * which is why callers must handle a bind failure rather than trusting this.
56
+ */
57
+ export declare function reservePortInLane(lane: PortLane, exclude?: ReadonlySet<number>): Promise<number | null>;
58
+ /**
59
+ * What to say when a lane is full — the one message that has to explain why the numbers it names
60
+ * are narrower than the 3000-3199 everything else talks about.
61
+ *
62
+ * Without the second sentence this reads as a bug to anyone who knows the CDN allows two hundred
63
+ * ports and has just been told a hundred of them are the limit.
39
64
  */
40
- export declare function reserveCorsAllowedPort(exclude?: ReadonlySet<number>): Promise<number | null>;
65
+ export declare function laneExhaustedMessage(lane: PortLane, remedy: string): string;
41
66
  /** Whether this exact port is free right now. Same TOCTOU caveat as above. */
42
67
  export declare function isPortFree(port: number): Promise<boolean>;
43
68
  /**
@@ -45,12 +70,12 @@ export declare function isPortFree(port: number): Promise<boolean>;
45
70
  *
46
71
  * Only ever called for a port the creator did NOT ask for by name. An explicit `--port` is a
47
72
  * request, and quietly serving somewhere else would make the flag a suggestion — those still fail
48
- * loudly. The default is different: nobody chose 3010, it is just where we start looking, and
49
- * `bitmagic dev` dying because some unrelated process holds it is a bad trade now that agents run
50
- * it as a background task whose output nobody reads.
73
+ * loudly. The default is different: nobody chose the lane's `gamePort`, it is just where we start
74
+ * looking, and `bitmagic dev` dying because some unrelated process holds it is a bad trade now that
75
+ * agents run it as a background task whose output nobody reads.
51
76
  *
52
77
  * Drifting is only safe because of two things that did not exist when these ports were fixed:
53
78
  * `.bitmagic/dev.json` records what was actually bound (so `bitmagic reload` still finds it), and
54
79
  * `dev` opens the browser itself (so nobody has to know the number).
55
80
  */
56
- export declare function resolveDevPort(preferred: number, exclude?: ReadonlySet<number>): Promise<number | null>;
81
+ export declare function resolveDevPort(preferred: number, lane: PortLane, exclude?: ReadonlySet<number>): Promise<number | null>;
@@ -7,8 +7,14 @@ import { CliError } from './errors.js';
7
7
  * project served on localhost is making CROSS-ORIGIN requests for them. The bucket answers with
8
8
  * `Access-Control-Allow-Origin` only for the origins named in its CORS config — the portal and
9
9
  * creator hosts, plus `http://localhost:3000`–`3199` (roleverse-infra,
10
- * the portal-cdn terragrunt config per environment). `bitmagic dev` sits inside that window at
11
- * 3010; anything that asks the OS for an ephemeral port (`listen(0)` → 49xxx+) falls outside it.
10
+ * the portal-cdn terragrunt config per environment). Everything `bitmagic dev`, `verify`, `forge`
11
+ * and `generate` bind sits inside it; anything that asks the OS for an ephemeral port
12
+ * (`listen(0)` → 49xxx+) falls outside it.
13
+ *
14
+ * Nothing here picks a number, though. The window is split in half so a dev-line and a release-line
15
+ * install cannot take each other's ports (port-lane.ts), and every function below scans the LANE it
16
+ * is handed, never the whole window. The bounds here remain the outer limit: they are what an
17
+ * explicit `--port` is checked against, because a creator naming a port is entitled to either half.
12
18
  *
13
19
  * The failure is quiet and easy to misread. The fetch is blocked, `WorldGenerator` falls back to
14
20
  * an empty voxel world, the level's terrain simply is not there, and the symptom is a player
@@ -26,6 +32,11 @@ export const CORS_ALLOWED_PORT_MAX = 3199;
26
32
  * other, and being told the rule once, at the point of the mistake, beats discovering it as a
27
33
  * terrain-less world. (The shell itself fetches nothing from the CDN, so its own check is purely
28
34
  * that kindness.)
35
+ *
36
+ * Checked against the whole window, deliberately not against this install's lane. The lane governs
37
+ * where a DEFAULT drifts to, which is a question about avoiding the other install; naming a port
38
+ * outright is a statement that you know what is on the machine, and refusing it because the other
39
+ * line nominally owns that half would make the flag a suggestion for no benefit.
29
40
  */
30
41
  export function parseLocalPort(value, fallback, flag) {
31
42
  if (value === undefined)
@@ -52,21 +63,26 @@ function tryListen(port) {
52
63
  });
53
64
  }
54
65
  /**
55
- * A free port the CDN will serve assets to, or `null` when the whole window is taken.
66
+ * A free port in this install's lane, or `null` when every port in the lane is taken.
56
67
  *
57
68
  * Returning `null` rather than silently falling back to an ephemeral port is deliberate: the
58
69
  * caller can then say what the consequence is, instead of the run proceeding to a level with no
59
70
  * terrain and no explanation.
60
71
  *
61
- * The scan starts at a pseudo-random offset so two concurrent runs do not both take 3000 and race;
62
- * `tryListen` closing before the caller binds leaves a window either way, which is why callers
63
- * must handle a bind failure rather than trusting this.
72
+ * It never spills into the other lane either, for the same class of reason. A lane is a promise
73
+ * that the other install's ports are still there when it starts; taking them because they happen to
74
+ * be free right now would break that promise at exactly the moment two installs are busiest, and
75
+ * quietly. A hundred held ports is a machine with a problem to report, not a lane to abandon.
76
+ *
77
+ * The scan starts at a pseudo-random offset so two concurrent runs do not both take the lane's
78
+ * first port and race; `tryListen` closing before the caller binds leaves a window either way,
79
+ * which is why callers must handle a bind failure rather than trusting this.
64
80
  */
65
- export async function reserveCorsAllowedPort(exclude = new Set()) {
66
- const span = CORS_ALLOWED_PORT_MAX - CORS_ALLOWED_PORT_MIN + 1;
81
+ export async function reservePortInLane(lane, exclude = new Set()) {
82
+ const span = lane.max - lane.min + 1;
67
83
  const start = Math.floor(Math.random() * span);
68
84
  for (let i = 0; i < span; i += 1) {
69
- const port = CORS_ALLOWED_PORT_MIN + ((start + i) % span);
85
+ const port = lane.min + ((start + i) % span);
70
86
  if (exclude.has(port))
71
87
  continue;
72
88
  const bound = await tryListen(port);
@@ -75,6 +91,19 @@ export async function reserveCorsAllowedPort(exclude = new Set()) {
75
91
  }
76
92
  return null;
77
93
  }
94
+ /**
95
+ * What to say when a lane is full — the one message that has to explain why the numbers it names
96
+ * are narrower than the 3000-3199 everything else talks about.
97
+ *
98
+ * Without the second sentence this reads as a bug to anyone who knows the CDN allows two hundred
99
+ * ports and has just been told a hundred of them are the limit.
100
+ */
101
+ export function laneExhaustedMessage(lane, remedy) {
102
+ return (`Every port from ${lane.min} to ${lane.max} is in use. That is this CLI's half of the `
103
+ + `${CORS_ALLOWED_PORT_MIN}-${CORS_ALLOWED_PORT_MAX} window the asset CDN allows as an origin — `
104
+ + 'the other half is left free so a bitmagic from the other release line can run beside this '
105
+ + `one. ${remedy}`);
106
+ }
78
107
  /** Whether this exact port is free right now. Same TOCTOU caveat as above. */
79
108
  export async function isPortFree(port) {
80
109
  return (await tryListen(port)) !== null;
@@ -84,17 +113,17 @@ export async function isPortFree(port) {
84
113
  *
85
114
  * Only ever called for a port the creator did NOT ask for by name. An explicit `--port` is a
86
115
  * request, and quietly serving somewhere else would make the flag a suggestion — those still fail
87
- * loudly. The default is different: nobody chose 3010, it is just where we start looking, and
88
- * `bitmagic dev` dying because some unrelated process holds it is a bad trade now that agents run
89
- * it as a background task whose output nobody reads.
116
+ * loudly. The default is different: nobody chose the lane's `gamePort`, it is just where we start
117
+ * looking, and `bitmagic dev` dying because some unrelated process holds it is a bad trade now that
118
+ * agents run it as a background task whose output nobody reads.
90
119
  *
91
120
  * Drifting is only safe because of two things that did not exist when these ports were fixed:
92
121
  * `.bitmagic/dev.json` records what was actually bound (so `bitmagic reload` still finds it), and
93
122
  * `dev` opens the browser itself (so nobody has to know the number).
94
123
  */
95
- export async function resolveDevPort(preferred, exclude = new Set()) {
124
+ export async function resolveDevPort(preferred, lane, exclude = new Set()) {
96
125
  if (!exclude.has(preferred) && await isPortFree(preferred))
97
126
  return preferred;
98
- return reserveCorsAllowedPort(exclude);
127
+ return reservePortInLane(lane, exclude);
99
128
  }
100
129
  //# sourceMappingURL=local-port.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"local-port.js","sourceRoot":"","sources":["../src/local-port.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local-port.js","sourceRoot":"","sources":["../src/local-port.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * The self-signed certificate the mobile bridge serves the phone over.
3
3
  *
4
- * TLS is not decoration here. A page on `http://192.168.x.y:3012` is NOT a secure context, and
4
+ * TLS is not decoration here. A page on `http://192.168.x.y:<bridge port>` is NOT a secure context,
5
+ * and
5
6
  * `navigator.gpu` is only exposed to secure contexts — so over plain http the engine's renderer
6
7
  * pick downgrades to classic WebGL (`RendererPreference.ts`, `withoutUnavailableWebGpu`) and the
7
8
  * one thing a real device is uniquely able to tell us about, Safari's WebGPU pipeline, is exactly
@@ -1 +1 @@
1
- {"version":3,"file":"dev-cert.js","sourceRoot":"","sources":["../../src/mobile/dev-cert.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,qFAAqF;AACrF,MAAM,UAAU,GAAG,GAAG,CAAC;AAEvB;;;;GAIG;AACH,MAAM,UAAU,GAAG,GAAG,CAAC;AAuBvB,SAAS,UAAU,CAAC,OAAe,EAAE,IAAc;IACjD,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/D,IAAI,MAAM,CAAC,KAAK;QAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IACxE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;AAChE,CAAC;AAED,mGAAmG;AACnG,SAAS,aAAa,CAAC,OAAe;IACpC,OAAO;QACL,OAAO;QACP,yBAAyB;QACzB,uBAAuB;QACvB,aAAa;QACb,EAAE;QACF,MAAM;QACN,qBAAqB,OAAO,EAAE;QAC9B,EAAE;QACF,OAAO;QACP,uBAAuB,OAAO,EAAE;QAChC,uCAAuC;QACvC,8CAA8C;QAC9C,+BAA+B;QAC/B,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,OAAoB,EAAE;IACnE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACjC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,cAAc,EAAE,EAAE,WAAW,CAAC,CAAC;IACrE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,UAAU,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,UAAU,CAAC,CAAC;IAEtD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;QAClD,IAAI,GAAG,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;YAC3C,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;QACnG,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,oEAAoE;IACtE,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,qBAAqB,OAAO,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC;IAC7F,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE;YAC5B,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ;YAC1D,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC;YAC3B,SAAS,EAAE,OAAO;YAClB,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,UAAU;SACtB,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACrC,yFAAyF;QACzF,wFAAwF;QACxF,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC7B,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IACnG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;YAAS,CAAC;QACT,IAAI,CAAC;YACH,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,mFAAmF;QACrF,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"dev-cert.js","sourceRoot":"","sources":["../../src/mobile/dev-cert.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Which half of the CDN's port window a CLI install may bind — the one thing that keeps a dev-line
3
+ * and a release-line `bitmagic` out of each other's way on the same machine.
4
+ *
5
+ * Both lines are published as `@bitmagic/cli` and are routinely installed side by side (see the
6
+ * README's `~/.bitmagic-cli/dev` / `~/.bitmagic-cli/prod` recipe). Until this existed they reached
7
+ * for the same numbers: `dev` started at 3010/3011/3012 and `verify`, `forge` and `generate` scanned
8
+ * the whole window from a random offset. Nothing crashed — a busy default drifts — but whichever
9
+ * install started second landed somewhere unpredictable, and `bitmagic reload` falling back to a
10
+ * bare 3011 could reload the OTHER install's browser tab, on a different project entirely.
11
+ *
12
+ * The split has to happen INSIDE 3000-3199 and cannot be the repo's usual `+100` offset. That
13
+ * window is the whole of what the asset CDN allowlists as an origin (see local-port.ts); a lane
14
+ * starting at 3210 would serve games whose terrain silently never loads.
15
+ */
16
+ import { type UpdateTag } from './update/notice.js';
17
+ export interface PortLane {
18
+ /** Inclusive scan bounds. Always wholly inside CORS_ALLOWED_PORT_MIN/MAX. */
19
+ min: number;
20
+ max: number;
21
+ /** Where `bitmagic dev` starts looking for the vite server that serves the game. */
22
+ gamePort: number;
23
+ /** Where it starts looking for the tabbed Game/Editor shell — the URL a creator opens. */
24
+ editorPort: number;
25
+ /** Where `--mobile` starts looking for the LAN bridge. */
26
+ mobilePort: number;
27
+ }
28
+ /**
29
+ * The release line keeps the numbers it has always had.
30
+ *
31
+ * 3010 and 3011 are named in the README, in the docs every scaffolded project carries, and in the
32
+ * bookmark of anyone who has run this before. The release line is the one that must not move; the
33
+ * dev line is the one whose users opted into change.
34
+ */
35
+ export declare const RELEASE_LANE: PortLane;
36
+ /**
37
+ * The dev line, one hundred up — the same last two digits, so a number still reads as "game",
38
+ * "shell" or "phone" at a glance and only the hundreds digit says which install printed it.
39
+ *
40
+ * The defaults sit at 3110+ rather than at the foot of the lane on purpose. A machine running this
41
+ * monorepo holds 3000-3002 in an unshifted checkout and 3100-3102 in a `+100` parallel clone
42
+ * (.env.local), which are exactly the two lanes' opening ports. The scan skips a busy port either
43
+ * way, but a default that never collides in the first place prints a stable number.
44
+ */
45
+ export declare const DEV_LANE: PortLane;
46
+ /** The lane belonging to a published line. */
47
+ export declare function portLaneFor(tag: UpdateTag): PortLane;
48
+ /**
49
+ * This install's lane.
50
+ *
51
+ * Derived from the version string alone — `updateTagFor` reads a prerelease suffix as the dev line —
52
+ * so two installs separate with no config, no env var and nothing for anyone to set up. Note this
53
+ * is the install's own line, NOT the project's `BITMAGIC_ENV`: which api-server a project talks to
54
+ * is a different axis, and a port is a fact about the binary that bound it.
55
+ *
56
+ * An unreadable version reads as a release and gets the release lane, which is where every port was
57
+ * before this existed. Failing closed here keeps the numbers the docs promise.
58
+ */
59
+ export declare function currentPortLane(version?: string): PortLane;
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Which half of the CDN's port window a CLI install may bind — the one thing that keeps a dev-line
3
+ * and a release-line `bitmagic` out of each other's way on the same machine.
4
+ *
5
+ * Both lines are published as `@bitmagic/cli` and are routinely installed side by side (see the
6
+ * README's `~/.bitmagic-cli/dev` / `~/.bitmagic-cli/prod` recipe). Until this existed they reached
7
+ * for the same numbers: `dev` started at 3010/3011/3012 and `verify`, `forge` and `generate` scanned
8
+ * the whole window from a random offset. Nothing crashed — a busy default drifts — but whichever
9
+ * install started second landed somewhere unpredictable, and `bitmagic reload` falling back to a
10
+ * bare 3011 could reload the OTHER install's browser tab, on a different project entirely.
11
+ *
12
+ * The split has to happen INSIDE 3000-3199 and cannot be the repo's usual `+100` offset. That
13
+ * window is the whole of what the asset CDN allowlists as an origin (see local-port.ts); a lane
14
+ * starting at 3210 would serve games whose terrain silently never loads.
15
+ */
16
+ import { updateTagFor } from './update/notice.js';
17
+ import { currentCliVersion } from './update/cli-version.js';
18
+ /**
19
+ * The release line keeps the numbers it has always had.
20
+ *
21
+ * 3010 and 3011 are named in the README, in the docs every scaffolded project carries, and in the
22
+ * bookmark of anyone who has run this before. The release line is the one that must not move; the
23
+ * dev line is the one whose users opted into change.
24
+ */
25
+ export const RELEASE_LANE = {
26
+ min: 3000,
27
+ max: 3099,
28
+ gamePort: 3010,
29
+ editorPort: 3011,
30
+ mobilePort: 3012,
31
+ };
32
+ /**
33
+ * The dev line, one hundred up — the same last two digits, so a number still reads as "game",
34
+ * "shell" or "phone" at a glance and only the hundreds digit says which install printed it.
35
+ *
36
+ * The defaults sit at 3110+ rather than at the foot of the lane on purpose. A machine running this
37
+ * monorepo holds 3000-3002 in an unshifted checkout and 3100-3102 in a `+100` parallel clone
38
+ * (.env.local), which are exactly the two lanes' opening ports. The scan skips a busy port either
39
+ * way, but a default that never collides in the first place prints a stable number.
40
+ */
41
+ export const DEV_LANE = {
42
+ min: 3100,
43
+ max: 3199,
44
+ gamePort: 3110,
45
+ editorPort: 3111,
46
+ mobilePort: 3112,
47
+ };
48
+ /** The lane belonging to a published line. */
49
+ export function portLaneFor(tag) {
50
+ return tag === 'dev' ? DEV_LANE : RELEASE_LANE;
51
+ }
52
+ /**
53
+ * This install's lane.
54
+ *
55
+ * Derived from the version string alone — `updateTagFor` reads a prerelease suffix as the dev line —
56
+ * so two installs separate with no config, no env var and nothing for anyone to set up. Note this
57
+ * is the install's own line, NOT the project's `BITMAGIC_ENV`: which api-server a project talks to
58
+ * is a different axis, and a port is a fact about the binary that bound it.
59
+ *
60
+ * An unreadable version reads as a release and gets the release lane, which is where every port was
61
+ * before this existed. Failing closed here keeps the numbers the docs promise.
62
+ */
63
+ export function currentPortLane(version = currentCliVersion()) {
64
+ return portLaneFor(updateTagFor(version));
65
+ }
66
+ //# sourceMappingURL=port-lane.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"port-lane.js","sourceRoot":"","sources":["../src/port-lane.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,YAAY,EAAkB,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAc5D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAa;IACpC,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE,IAAI;IAChB,UAAU,EAAE,IAAI;CACjB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAa;IAChC,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE,IAAI;IAChB,UAAU,EAAE,IAAI;CACjB,CAAC;AAEF,8CAA8C;AAC9C,MAAM,UAAU,WAAW,CAAC,GAAc;IACxC,OAAO,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC;AACjD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkB,iBAAiB,EAAE;IACnE,OAAO,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5C,CAAC"}
@@ -30,8 +30,13 @@ export declare function readLiveDevHandle(root: string): DevHandle | null;
30
30
  * `dev` binds it, `reload` falls back to it when there is no handle to read, and the probe below
31
31
  * uses it for the same reason. It was three separate literals; a fourth reader would have made
32
32
  * four. Whoever changes the default changes it once.
33
+ *
34
+ * A function rather than a constant since the number depends on which release line is running
35
+ * (port-lane.ts). That matters most for the two readers BELOW a missing handle: a dev-line `reload`
36
+ * that fell back to a fixed 3011 would probe — and reload — a release-line `bitmagic dev`, serving
37
+ * somebody else's project in another window.
33
38
  */
34
- export declare const DEFAULT_EDITOR_PORT = 3011;
39
+ export declare function defaultEditorPort(): number;
35
40
  /**
36
41
  * Is a `bitmagic dev` serving this project — asked the way `reload` asks it?
37
42
  *
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * `.bitmagic/dev.json` — how a second process finds the `bitmagic dev` already running here.
3
3
  *
4
- * `bitmagic reload` needs the shell's port, and hard-coding 3011 would break the moment a creator
4
+ * `bitmagic reload` needs the shell's port, and hard-coding one would break the moment a creator
5
5
  * passes `--editor-port`. So `dev` writes what it bound the instant it is listening, and removes the
6
6
  * file on shutdown. `.bitmagic/` is already gitignored (scaffold/project-files.ts renderGitignore),
7
7
  * so this never reaches a commit.
@@ -17,6 +17,7 @@
17
17
  */
18
18
  import * as fs from 'fs';
19
19
  import * as path from 'path';
20
+ import { currentPortLane } from '../port-lane.js';
20
21
  /**
21
22
  * Is the process that wrote a record still running?
22
23
  *
@@ -46,8 +47,15 @@ export function readLiveDevHandle(root) {
46
47
  * `dev` binds it, `reload` falls back to it when there is no handle to read, and the probe below
47
48
  * uses it for the same reason. It was three separate literals; a fourth reader would have made
48
49
  * four. Whoever changes the default changes it once.
50
+ *
51
+ * A function rather than a constant since the number depends on which release line is running
52
+ * (port-lane.ts). That matters most for the two readers BELOW a missing handle: a dev-line `reload`
53
+ * that fell back to a fixed 3011 would probe — and reload — a release-line `bitmagic dev`, serving
54
+ * somebody else's project in another window.
49
55
  */
50
- export const DEFAULT_EDITOR_PORT = 3011;
56
+ export function defaultEditorPort() {
57
+ return currentPortLane().editorPort;
58
+ }
51
59
  /** Long enough for a loopback GET, short enough that a wedged server cannot stall a command. */
52
60
  const PROBE_TIMEOUT_MS = 2_000;
53
61
  /**
@@ -71,7 +79,7 @@ export async function isDevServerRunning(root, deps = {}) {
71
79
  if (readLiveDevHandle(root) !== null)
72
80
  return true;
73
81
  const doFetch = deps.fetch ?? globalThis.fetch;
74
- const port = readDevHandle(root)?.editorPort ?? DEFAULT_EDITOR_PORT;
82
+ const port = readDevHandle(root)?.editorPort ?? defaultEditorPort();
75
83
  try {
76
84
  const response = await doFetch(`http://127.0.0.1:${port}/api/state`, {
77
85
  signal: AbortSignal.timeout(PROBE_TIMEOUT_MS),
@@ -1 +1 @@
1
- {"version":3,"file":"dev-handle.js","sourceRoot":"","sources":["../../src/project/dev-handle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAmB7B;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,IAAI,GAAG,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3B,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAQ,KAA2B,CAAC,IAAI,KAAK,OAAO,CAAC;IACvD,CAAC;AACH,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO,MAAM,KAAK,IAAI,IAAI,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACvE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAExC,gGAAgG;AAChG,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAE/B;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAY,EACZ,OAA4C,EAAE;IAE9C,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAClD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC;IAC/C,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,UAAU,IAAI,mBAAmB,CAAC;IACpE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,oBAAoB,IAAI,YAAY,EAAE;YACnE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC;SAC9C,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,EAAE,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,mFAAmF;QACnF,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,MAAiB;IAC5D,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACjC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACjE,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,IAAI,CAAC;QACH,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,aAAa;IACf,CAAC;AACH,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACxF,MAAM,MAAM,GAAG,MAAiC,CAAC;IACjD,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC9F,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,GAAG,EAAE,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KACrD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"dev-handle.js","sourceRoot":"","sources":["../../src/project/dev-handle.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { FAVICON_LINK_ID } from '@bitmagic/asset-core/favicon';
2
2
  import { tsconfigPaths, importMapEntries, viteAliasEntries } from './aliases.js';
3
+ import { currentPortLane } from '../port-lane.js';
3
4
  import { AGENTS_MD_REFERENCE_SECTION, GAME_DESIGN_REFERENCE_HINT, GENERATE_SKILL_REFERENCE_SECTION, PLANNING_SKILL_REFERENCE_STEP1, PLANNING_SKILL_REFERENCE_STEP4, } from './reference-guidance.js';
4
5
  /**
5
6
  * The legal notice stamped into every game this project publishes.
@@ -517,6 +518,34 @@ import { viteSingleFile } from 'vite-plugin-singlefile';
517
518
  // build. Verified against a real \`vite build\` before trusting the plain-string form.
518
519
 
519
520
  ${cdn ? renderCdnModuleTable() : ''}${renderCreatorHandlerStub()}
521
+ // Editing-only asset fields must not ship inside published game data: the
522
+ // source recording behind a video-to-motion clip is the creator's webcam
523
+ // footage. The list mirrors EDITING_ONLY_ASSET_FIELDS in @bitmagic/asset-core
524
+ // (a project build cannot import that package). Runs before Vite's own JSON
525
+ // handling so the stripped world is what gets inlined into the bundle.
526
+ function stripEditingOnlyWorldFieldsPlugin() {
527
+ return {
528
+ name: 'bitmagic-strip-editing-only-world-fields',
529
+ enforce: 'pre',
530
+ transform(code, id) {
531
+ if (!id.endsWith('/src/work/world.json')) return null;
532
+ try {
533
+ const world = JSON.parse(code);
534
+ if (!Array.isArray(world.assets)) return null;
535
+ for (const asset of world.assets) {
536
+ if (typeof asset !== 'object' || asset === null) continue;
537
+ delete asset.sourceVideoUrl;
538
+ delete asset.trimmedStartSeconds;
539
+ delete asset.trimmedEndSeconds;
540
+ }
541
+ return JSON.stringify(world);
542
+ } catch {
543
+ return null;
544
+ }
545
+ },
546
+ };
547
+ }
548
+
520
549
  export default defineConfig({
521
550
  // The engine serves world.json/game.json two different ways, and this flag is how it chooses.
522
551
  // \`utils/worldDataLoader.ts\` reads \`typeof __BUNDLED__ !== 'undefined' && __BUNDLED__\`: true
@@ -553,7 +582,7 @@ ${cdn ? PUBLISH_CONFIG_PATHS_BLOCK : ''} // A licence obligation, not dec
553
582
  },
554
583
  },
555
584
  },
556
- plugins: [stubCreatorHandlerPlugin(), viteSingleFile()],
585
+ plugins: [stubCreatorHandlerPlugin(), stripEditingOnlyWorldFieldsPlugin(), viteSingleFile()],
557
586
  });
558
587
  `;
559
588
  }
@@ -624,6 +653,9 @@ strangely. If \`bitmagic.json\` ever disagrees with this paragraph, the file is
624
653
  separate command: \`bitmagic upgrade\`.`;
625
654
  }
626
655
  export function renderAgentsMd(environment) {
656
+ // The port this CLI would bind, so the doc it writes into the project matches the CLI that wrote
657
+ // it. A dev-line and a release-line install serve the shell on different numbers (port-lane.ts).
658
+ const editorPort = currentPortLane().editorPort;
627
659
  return `# Working on this Bitmagic game
628
660
 
629
661
  ## Start \`bitmagic dev\` before you build anything
@@ -635,7 +667,7 @@ bitmagic dev # long-running — start it IN THE BACKGROUND and leave it u
635
667
  \`\`\`
636
668
 
637
669
  \`bitmagic dev\` never exits: it builds, then serves the game and the editor —
638
- \`http://localhost:3011/\` unless \`--editor-port\` says otherwise — until it is interrupted.
670
+ \`http://localhost:${editorPort}/\` unless \`--editor-port\` says otherwise — until it is interrupted.
639
671
  **Run it as a background task.** Run it in the foreground and you will block until the session is
640
672
  killed, which is the mistake worth naming because the way to avoid it is to defer the command — and
641
673
  deferring it is the failure this section exists to prevent.
@@ -645,7 +677,7 @@ by itself, but you started it in the background, so everything it printed — in
645
677
  went into a log the person you are working for never sees. If you do not mention it, the only signal
646
678
  they get is a tab that may or may not have appeared.
647
679
 
648
- Take the URL from what \`bitmagic dev\` printed rather than assuming 3011: the port moves if it was
680
+ Take the URL from what \`bitmagic dev\` printed rather than assuming ${editorPort}: the port moves if it was
649
681
  already taken and \`--editor-port\` was used. \`.bitmagic/dev.json\` records what it actually bound,
650
682
  so read that if you no longer have the output.
651
683
 
@@ -1 +1 @@
1
- {"version":3,"file":"project-files.js","sourceRoot":"","sources":["../../src/scaffold/project-files.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-files.js","sourceRoot":"","sources":["../../src/scaffold/project-files.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bitmagic/cli",
3
- "version": "0.1.59-dev.9",
3
+ "version": "0.1.60-dev.0",
4
4
  "description": "Build Bitmagic games from your own agent tool",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "Bitmagic Oy",
@@ -23,9 +23,9 @@
23
23
  "fflate": "^0.8.2",
24
24
  "playwright-core": "^1.59.1",
25
25
  "tar": "^7.4.3",
26
- "@bitmagic/animation-forger": "0.1.14-dev.9",
27
- "@bitmagic/world-forger": "0.1.19-dev.9",
28
- "@bitmagic/asset-core": "0.2.14-dev.9"
26
+ "@bitmagic/animation-forger": "0.1.15-dev.0",
27
+ "@bitmagic/asset-core": "0.2.15-dev.0",
28
+ "@bitmagic/world-forger": "0.1.20-dev.0"
29
29
  },
30
30
  "devDependencies": {
31
31
  "@eslint/js": "^9.38.0",