@bitmagic/cli 0.1.0 → 0.1.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/dist/cli.d.ts +30 -0
- package/dist/cli.js +23 -11
- package/dist/cli.js.map +1 -1
- package/dist/commands/forge.d.ts +107 -0
- package/dist/commands/forge.js +393 -0
- package/dist/commands/forge.js.map +1 -0
- package/dist/commands/generate.js +58 -45
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/verify.js +16 -16
- package/dist/commands/verify.js.map +1 -1
- package/dist/forge/apply-modifications.d.ts +19 -0
- package/dist/forge/apply-modifications.js +184 -0
- package/dist/forge/apply-modifications.js.map +1 -0
- package/dist/forge/bake-progress.d.ts +44 -0
- package/dist/forge/bake-progress.js +77 -0
- package/dist/forge/bake-progress.js.map +1 -0
- package/dist/forge/browser-host.d.ts +100 -0
- package/dist/forge/browser-host.js +351 -0
- package/dist/forge/browser-host.js.map +1 -0
- package/dist/forge/local-store.d.ts +30 -0
- package/dist/forge/local-store.js +130 -0
- package/dist/forge/local-store.js.map +1 -0
- package/dist/forge/run-pipeline.d.ts +105 -0
- package/dist/forge/run-pipeline.js +269 -0
- package/dist/forge/run-pipeline.js.map +1 -0
- package/dist/forge/stream.d.ts +106 -0
- package/dist/forge/stream.js +286 -0
- package/dist/forge/stream.js.map +1 -0
- package/dist/forge/transport.d.ts +58 -0
- package/dist/forge/transport.js +145 -0
- package/dist/forge/transport.js.map +1 -0
- package/dist/forge/upload-proxy.d.ts +21 -0
- package/dist/forge/upload-proxy.js +134 -0
- package/dist/forge/upload-proxy.js.map +1 -0
- package/dist/generate/stream.d.ts +1 -10
- package/dist/generate/stream.js +5 -62
- package/dist/generate/stream.js.map +1 -1
- package/dist/http/sse.d.ts +40 -0
- package/dist/http/sse.js +98 -0
- package/dist/http/sse.js.map +1 -0
- package/dist/local-port.d.ts +30 -0
- package/dist/local-port.js +53 -0
- package/dist/local-port.js.map +1 -0
- package/dist/scaffold/project-files.d.ts +1 -0
- package/dist/scaffold/project-files.js +175 -5
- package/dist/scaffold/project-files.js.map +1 -1
- package/dist/scaffold/project.js +2 -1
- package/dist/scaffold/project.js.map +1 -1
- package/package.json +4 -3
|
@@ -8,20 +8,60 @@ const DEPENDENCIES = {
|
|
|
8
8
|
i18next: '^24.2.3',
|
|
9
9
|
'i18next-browser-languagedetector': '^8.0.4',
|
|
10
10
|
jszip: '^3.10.1',
|
|
11
|
-
three: '^0.
|
|
11
|
+
three: '^0.185.1',
|
|
12
12
|
};
|
|
13
13
|
const DEV_DEPENDENCIES = {
|
|
14
14
|
'@types/node': '^24.10.0',
|
|
15
|
-
'@types/three': '^0.
|
|
15
|
+
'@types/three': '^0.185.4',
|
|
16
16
|
// engine/types/ammo.d.ts opens with a triple-slash reference to this package's ambient types.
|
|
17
17
|
'ammojs-typed': '^1.0.6',
|
|
18
|
+
// Declares `navigator.gpu`, which the engine reads to choose its renderer backend. Named in
|
|
19
|
+
// tsconfig's `types` too — see the note there for why installing it is not enough.
|
|
20
|
+
'@webgpu/types': '^0.1.69',
|
|
18
21
|
typescript: '^5.9.2',
|
|
19
22
|
vite: '^7.3.1',
|
|
20
23
|
};
|
|
24
|
+
/**
|
|
25
|
+
* The three.js release every `three*` import map entry below resolves to. Written once because
|
|
26
|
+
* the entries repeat it eight times, including four times inside the `three` shim, and a bump
|
|
27
|
+
* that updates some copies but not others splits the engine across two module instances — the
|
|
28
|
+
* exact failure the comments below describe.
|
|
29
|
+
*/
|
|
30
|
+
const THREE_VERSION = '0.185.1';
|
|
31
|
+
/**
|
|
32
|
+
* `three` resolves to a shim, not straight to the webgpu build. r185's three.webgpu.js exports
|
|
33
|
+
* neither `UniformsUtils` (which every classic postprocessing pass imports from `three`) nor
|
|
34
|
+
* `ShaderLib`/`UniformsLib` (`lines/LineMaterial.js`), so the vendored engine — which imports
|
|
35
|
+
* those passes statically in GameEngine.ts — fails to load with "The requested module 'three'
|
|
36
|
+
* does not provide an export named 'UniformsUtils'". The shim re-exports the webgpu build from
|
|
37
|
+
* the SAME URL as the `three/webgpu` entry, so it stays ONE module instance, and adds the
|
|
38
|
+
* missing names from three's own src. Absolute URLs only: a data: module has no base URL and so
|
|
39
|
+
* cannot resolve bare or relative specifiers. Keep in step with game/index.html.
|
|
40
|
+
*/
|
|
41
|
+
const THREE_SHIM = [
|
|
42
|
+
'data:text/javascript,',
|
|
43
|
+
`export*from'https://esm.sh/three@${THREE_VERSION}/webgpu';`,
|
|
44
|
+
`export{UniformsUtils}from'https://esm.sh/three@${THREE_VERSION}/src/renderers/shaders/UniformsUtils.js';`,
|
|
45
|
+
`export{ShaderLib}from'https://esm.sh/three@${THREE_VERSION}/src/renderers/shaders/ShaderLib.js';`,
|
|
46
|
+
`export{UniformsLib}from'https://esm.sh/three@${THREE_VERSION}/src/renderers/shaders/UniformsLib.js'`,
|
|
47
|
+
].join('');
|
|
21
48
|
/** Resolved in the browser from a CDN, not from node_modules — see the design's import-map note. */
|
|
22
49
|
const CDN_IMPORTS = {
|
|
23
|
-
three
|
|
24
|
-
'
|
|
50
|
+
// `three` and `three/webgpu` are ONE module instance (see THREE_SHIM). Pointed at separate
|
|
51
|
+
// builds (core + webgpu) they are two, and r185's LightsNode then fails to recognise lights
|
|
52
|
+
// built by the other instance — the scene renders unlit. Keep in step with game/index.html.
|
|
53
|
+
three: THREE_SHIM,
|
|
54
|
+
'three/webgpu': `https://esm.sh/three@${THREE_VERSION}/webgpu`,
|
|
55
|
+
'three/tsl': `https://esm.sh/three@${THREE_VERSION}/tsl`,
|
|
56
|
+
// The addon entries use esm.sh's `*` build, which keeps `three` a BARE specifier so addons
|
|
57
|
+
// resolve back through this map. Plain esm.sh inlines its own copy of three, which shares no
|
|
58
|
+
// module with the webgpu build: GLTFLoader then hands back Meshes from a second Mesh class and
|
|
59
|
+
// the engine's `instanceof THREE.Mesh` scans find nothing. Same one-instance rule as above.
|
|
60
|
+
// The classic WebGL addons are not excepted — the shim, not a pinned inlined-three build, is
|
|
61
|
+
// what gives them the UniformsUtils / ShaderLib / UniformsLib they import from bare `three`.
|
|
62
|
+
'three/addons/': `https://esm.sh/*three@${THREE_VERSION}/addons/`,
|
|
63
|
+
'three/examples/jsm/': `https://esm.sh/*three@${THREE_VERSION}/examples/jsm/`,
|
|
64
|
+
'three/': `https://esm.sh/three@${THREE_VERSION}/`,
|
|
25
65
|
'@dimforge/rapier3d-compat': 'https://esm.sh/@dimforge/rapier3d-compat@0.19.3',
|
|
26
66
|
'@dimforge/rapier2d-compat': 'https://esm.sh/@dimforge/rapier2d-compat@0.19.3',
|
|
27
67
|
i18next: 'https://esm.sh/i18next@24.2.3',
|
|
@@ -72,7 +112,14 @@ export function renderTsconfig() {
|
|
|
72
112
|
noImplicitAny: true,
|
|
73
113
|
resolveJsonModule: true,
|
|
74
114
|
sourceMap: true,
|
|
75
|
-
types: [],
|
|
115
|
+
// `types: []` opts out of auto-including every @types package — deliberate, because the
|
|
116
|
+
// vendored engine ships its own and a stray global would shadow them. The consequence is
|
|
117
|
+
// that a package whose whole job is a GLOBAL augmentation has to be named here or it is
|
|
118
|
+
// invisible: `@webgpu/types` declares `navigator.gpu`, which the engine reads to pick its
|
|
119
|
+
// renderer backend (`engine/GameEngine.ts`). Without it a scaffolded project fails to
|
|
120
|
+
// type-check with "Property 'gpu' does not exist on type 'Navigator'" — the engine's own
|
|
121
|
+
// package.json carries the dependency, so nothing catches this in the monorepo.
|
|
122
|
+
types: ['@webgpu/types'],
|
|
76
123
|
typeRoots: ['engine/types', 'node_modules/@types', 'node_modules/ammojs-typed/ammo/ambient'],
|
|
77
124
|
},
|
|
78
125
|
include: ['src/**/*', 'engine/**/*'],
|
|
@@ -207,9 +254,132 @@ the two yaw conventions differ. Guessing produces code that compiles and moves t
|
|
|
207
254
|
|
|
208
255
|
\`\`\`
|
|
209
256
|
bitmagic check # typecheck against the vendored engine
|
|
257
|
+
bitmagic dev # build, then serve with live rebuilds
|
|
258
|
+
bitmagic verify # boot the game in a real browser and report what broke
|
|
210
259
|
\`\`\`
|
|
211
260
|
|
|
212
261
|
The engine is large; \`check\` is the fast way to find out whether an edit holds together.
|
|
262
|
+
|
|
263
|
+
**\`check\` passing does not mean the game runs.** The engine's most common failure is a clean
|
|
264
|
+
compile that dies on load — a missing asset, a bad \`world.json\` value, a null container. Run
|
|
265
|
+
\`bitmagic verify\` after a change you cannot eyeball: it loads the game in a headless browser and
|
|
266
|
+
fails with what actually broke, leaving a console log and a screenshot in \`.bitmagic/verify/\`.
|
|
267
|
+
|
|
268
|
+
## Generating assets
|
|
269
|
+
|
|
270
|
+
You can create game content from here — no web editor needed:
|
|
271
|
+
|
|
272
|
+
\`\`\`
|
|
273
|
+
bitmagic generate skybox --description "a stormy alien sky with two moons"
|
|
274
|
+
bitmagic generate sound --prompt "heavy wooden door slamming" [--duration 3] [--loop]
|
|
275
|
+
bitmagic generate image --name hero-portrait --prompt "..." [--width 512] [--height 512]
|
|
276
|
+
bitmagic generate character --name guard --prompt "..." [--apply-to-player]
|
|
277
|
+
bitmagic generate animation --description "a slow ceremonial bow" [--length 4] [--loop]
|
|
278
|
+
\`\`\`
|
|
279
|
+
|
|
280
|
+
Run \`bitmagic generate <type> --help\` for the full flags of any one.
|
|
281
|
+
|
|
282
|
+
Four things worth knowing before you use these:
|
|
283
|
+
|
|
284
|
+
1. **Each generation writes to \`src/work/world.json\`.** If you are also editing that file,
|
|
285
|
+
re-read it afterwards — your in-memory copy is stale. The command prints exactly which paths
|
|
286
|
+
it changed.
|
|
287
|
+
2. **Generation costs the creator real money** (Bitmagic sparks). Do not call these in a loop to
|
|
288
|
+
explore options. Ask for what you actually need, once. If the balance is too low the command
|
|
289
|
+
refuses before generating and tells you what it needed.
|
|
290
|
+
3. **It only works on the game this project points at.** \`bitmagic.json\` holds the \`gameId\`;
|
|
291
|
+
generation is refused for a game the logged-in account does not own.
|
|
292
|
+
4. **A running \`bitmagic dev\` will not show the new asset until the browser reloads.** The
|
|
293
|
+
command reminds you.
|
|
294
|
+
|
|
295
|
+
**Not available as \`generate\` subcommands:** individual 3D models, voxel assets and block types.
|
|
296
|
+
Those need a browser to voxelize and upload. Do not work around it by hand-editing
|
|
297
|
+
\`world.json\` to point at a model you have not generated — the asset will not exist and the game
|
|
298
|
+
will fail to load it.
|
|
299
|
+
|
|
300
|
+
## Forging a whole level
|
|
301
|
+
|
|
302
|
+
\`\`\`
|
|
303
|
+
bitmagic forge --prompt "a ruined desert temple with a central courtyard"
|
|
304
|
+
\`\`\`
|
|
305
|
+
|
|
306
|
+
This designs a scene, builds its geometry, bakes it to voxels and writes the finished level —
|
|
307
|
+
terrain, props, spawn points — into \`src/work/world.json\`. Add \`--city\`, \`--dungeon\`,
|
|
308
|
+
\`--platformer\` or \`--freeform\` (at most one) for a different kind of place; omit them all for
|
|
309
|
+
natural terrain.
|
|
310
|
+
|
|
311
|
+
Five things worth knowing:
|
|
312
|
+
|
|
313
|
+
1. **It is slow and it is expensive.** A forge runs for many minutes — the level bake alone can
|
|
314
|
+
take twenty — and costs considerably more than any single \`generate\`. Run it once,
|
|
315
|
+
deliberately. Progress is printed throughout, the bake included.
|
|
316
|
+
2. **It needs Google Chrome installed.** The bake runs in a real headless browser, because
|
|
317
|
+
voxelizing is the engine's own code. The command builds and serves the project itself, so you
|
|
318
|
+
do not need \`bitmagic dev\` running and it will not collide with one that is.
|
|
319
|
+
3. **It rewrites large parts of \`world.json\`** (assets, environmentObjects, the level registry,
|
|
320
|
+
spawn points), so re-read the file afterwards if you were editing it. The command prints which
|
|
321
|
+
paths it changed. It also drops a \`forged-heightfield.json\` beside it, which later placements
|
|
322
|
+
use to sit objects on the new terrain.
|
|
323
|
+
4. **Every failure says whether \`world.json\` changed** — and it only ever changes on the final
|
|
324
|
+
step, all at once. A failure before that leaves the project exactly as it was.
|
|
325
|
+
5. **Resume rather than re-run.** The command prints a job id. If it fails after the design
|
|
326
|
+
succeeded, \`bitmagic forge --resume <jobId>\` skips the steps already paid for. The failure
|
|
327
|
+
message says when resuming is worth it, and when the failure is deterministic and you should
|
|
328
|
+
change the prompt instead.
|
|
329
|
+
|
|
330
|
+
Afterwards run \`bitmagic dev\` and actually walk the level — one that loads is not necessarily
|
|
331
|
+
one you can move through.
|
|
332
|
+
`;
|
|
333
|
+
}
|
|
334
|
+
export function renderGenerateSkill() {
|
|
335
|
+
return `---
|
|
336
|
+
name: generating-assets
|
|
337
|
+
description: Use when this Bitmagic game needs a new skybox, sound effect, image, character or animation — anything that would otherwise require the web editor.
|
|
338
|
+
---
|
|
339
|
+
|
|
340
|
+
# Generating game assets
|
|
341
|
+
|
|
342
|
+
The \`bitmagic\` CLI generates content directly into this project. Five types work today:
|
|
343
|
+
|
|
344
|
+
| Command | Makes | Lands in |
|
|
345
|
+
|---|---|---|
|
|
346
|
+
| \`bitmagic generate skybox --description "..."\` | a 360° environment | \`worldProfileData.skyboxUrl\` |
|
|
347
|
+
| \`bitmagic generate sound --prompt "..."\` | a sound effect | \`assets[]\` |
|
|
348
|
+
| \`bitmagic generate image --name <id> --prompt "..."\` | a 2D image | \`assets[]\` |
|
|
349
|
+
| \`bitmagic generate character --name <id> --prompt "..."\` | a rigged character | \`assets[]\` |
|
|
350
|
+
| \`bitmagic generate animation --description "..."\` | an animation clip | \`assets[]\` |
|
|
351
|
+
|
|
352
|
+
\`--help\` on any subcommand lists its full flags.
|
|
353
|
+
|
|
354
|
+
## Before generating
|
|
355
|
+
|
|
356
|
+
- Confirm the change actually needs new content. Reusing an asset already in \`world.json\` costs
|
|
357
|
+
nothing; generating costs the creator real money.
|
|
358
|
+
- Decide the exact prompt first. These are one-shot: there is no cheap "try three and pick one".
|
|
359
|
+
|
|
360
|
+
## After generating
|
|
361
|
+
|
|
362
|
+
1. The command prints which \`world.json\` paths changed. **Re-read \`src/work/world.json\`** if you
|
|
363
|
+
are holding it in memory.
|
|
364
|
+
2. Run \`bitmagic check\`, then \`bitmagic verify\` if the asset is load-bearing — a bad asset URL
|
|
365
|
+
typechecks fine and fails at runtime.
|
|
366
|
+
3. If \`bitmagic dev\` is running, the browser needs a reload.
|
|
367
|
+
|
|
368
|
+
## When it refuses
|
|
369
|
+
|
|
370
|
+
- **Not logged in** — run \`bitmagic login\`.
|
|
371
|
+
- **Does not own the game** — \`bitmagic.json\`'s \`gameId\` points at someone else's game; nothing
|
|
372
|
+
was generated and \`world.json\` is untouched.
|
|
373
|
+
- **Insufficient balance** — the message names what was required. A shorter animation costs less.
|
|
374
|
+
|
|
375
|
+
Every failure before the asset arrives leaves \`world.json\` unchanged, and the command says so
|
|
376
|
+
explicitly. You never need to guess whether a failed generation half-applied.
|
|
377
|
+
|
|
378
|
+
## What is not available
|
|
379
|
+
|
|
380
|
+
3D models, voxel assets and block types need a browser to voxelize and upload, which this
|
|
381
|
+
toolchain does not run yet. Do not hand-edit \`world.json\` to reference a model you cannot
|
|
382
|
+
generate — the game will fail to load it.
|
|
213
383
|
`;
|
|
214
384
|
}
|
|
215
385
|
export function renderClaudeMd() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-files.js","sourceRoot":"","sources":["../../src/scaffold/project-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEjF,yFAAyF;AACzF,MAAM,YAAY,GAA2B;IAC3C,2BAA2B,EAAE,SAAS;IACtC,2BAA2B,EAAE,SAAS;IACtC,kBAAkB,EAAE,QAAQ;IAC5B,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,kCAAkC,EAAE,QAAQ;IAC5C,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,UAAU;CAClB,CAAC;AAEF,MAAM,gBAAgB,GAA2B;IAC/C,aAAa,EAAE,UAAU;IACzB,cAAc,EAAE,UAAU;IAC1B,8FAA8F;IAC9F,cAAc,EAAE,QAAQ;IACxB,UAAU,EAAE,QAAQ;IACpB,IAAI,EAAE,QAAQ;CACf,CAAC;AAEF,oGAAoG;AACpG,MAAM,WAAW,GAA2B;IAC1C,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"project-files.js","sourceRoot":"","sources":["../../src/scaffold/project-files.ts"],"names":[],"mappings":"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"}
|
package/dist/scaffold/project.js
CHANGED
|
@@ -2,7 +2,7 @@ import * as fs from 'fs';
|
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
import { CliError } from '../errors.js';
|
|
4
4
|
import { aliasSourceDir } from './aliases.js';
|
|
5
|
-
import { renderPackageJson, renderTsconfig, renderIndexHtml, renderViteConfig, renderGitignore, renderBitmagicJson, renderAgentsMd, renderClaudeMd, renderSkillsReadme, } from './project-files.js';
|
|
5
|
+
import { renderPackageJson, renderTsconfig, renderIndexHtml, renderViteConfig, renderGitignore, renderBitmagicJson, renderAgentsMd, renderClaudeMd, renderSkillsReadme, renderGenerateSkill, } from './project-files.js';
|
|
6
6
|
/**
|
|
7
7
|
* Directories moved out of the extracted tree into the project's vendored engine/.
|
|
8
8
|
*
|
|
@@ -106,6 +106,7 @@ export function scaffoldProject(options) {
|
|
|
106
106
|
['CLAUDE.md', renderClaudeMd()],
|
|
107
107
|
['.gitignore', renderGitignore()],
|
|
108
108
|
['.claude/skills/README.md', renderSkillsReadme()],
|
|
109
|
+
['.claude/skills/generating-assets/SKILL.md', renderGenerateSkill()],
|
|
109
110
|
];
|
|
110
111
|
for (const [name, contents] of files) {
|
|
111
112
|
const filePath = path.join(targetDir, name);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/scaffold/project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,kBAAkB,
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/scaffold/project.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.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Build Bitmagic games from your own agent tool",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -19,7 +19,8 @@
|
|
|
19
19
|
"citty": "^0.2.2",
|
|
20
20
|
"playwright-core": "^1.59.1",
|
|
21
21
|
"tar": "^7.4.3",
|
|
22
|
-
"@bitmagic/asset-core": "0.1.0"
|
|
22
|
+
"@bitmagic/asset-core": "0.1.0",
|
|
23
|
+
"@bitmagic/world-forger": "0.1.0"
|
|
23
24
|
},
|
|
24
25
|
"devDependencies": {
|
|
25
26
|
"@eslint/js": "^9.38.0",
|
|
@@ -46,7 +47,7 @@
|
|
|
46
47
|
"tsconfig": {
|
|
47
48
|
"target": "ES2022",
|
|
48
49
|
"module": "ES2022",
|
|
49
|
-
"moduleResolution": "
|
|
50
|
+
"moduleResolution": "bundler",
|
|
50
51
|
"verbatimModuleSyntax": false,
|
|
51
52
|
"esModuleInterop": true
|
|
52
53
|
}
|