@bitmagic/cli 0.1.14 → 0.1.16
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/README.md +37 -11
- package/dist/cli.d.ts +56 -1
- package/dist/cli.js +3 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/check.d.ts +6 -1
- package/dist/commands/check.js +14 -2
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/cover.d.ts +100 -0
- package/dist/commands/cover.js +321 -0
- package/dist/commands/cover.js.map +1 -0
- package/dist/commands/forge.d.ts +4 -0
- package/dist/commands/forge.js +24 -9
- package/dist/commands/forge.js.map +1 -1
- package/dist/commands/generate.d.ts +13 -3
- package/dist/commands/generate.js +54 -15
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/init.d.ts +8 -0
- package/dist/commands/init.js +44 -14
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/login.d.ts +4 -0
- package/dist/commands/login.js +15 -6
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.d.ts +4 -0
- package/dist/commands/logout.js +8 -1
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/publish.d.ts +23 -0
- package/dist/commands/publish.js +72 -23
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/upgrade.d.ts +7 -1
- package/dist/commands/upgrade.js +30 -14
- package/dist/commands/upgrade.js.map +1 -1
- package/dist/commands/verify.js +2 -3
- package/dist/commands/verify.js.map +1 -1
- package/dist/commands/whoami.d.ts +4 -0
- package/dist/commands/whoami.js +9 -2
- package/dist/commands/whoami.js.map +1 -1
- package/dist/publish/fingerprint.js +13 -5
- package/dist/publish/fingerprint.js.map +1 -1
- package/dist/render/inline-image.d.ts +45 -0
- package/dist/render/inline-image.js +70 -0
- package/dist/render/inline-image.js.map +1 -0
- package/dist/scaffold/project-files.d.ts +15 -0
- package/dist/scaffold/project-files.js +80 -6
- package/dist/scaffold/project-files.js.map +1 -1
- package/dist/scaffold/project.d.ts +2 -0
- package/dist/scaffold/project.js +5 -2
- package/dist/scaffold/project.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `bitmagic cover` — generate this game's cover art from its design document.
|
|
3
|
+
*
|
|
4
|
+
* The web lane's Planning Mode does this automatically for every game it builds, which is why a
|
|
5
|
+
* game made in Creator arrives with real artwork and a game made here arrived with whatever
|
|
6
|
+
* `bitmagic verify` happened to screenshot. This is the pro lane's equivalent, with one deliberate
|
|
7
|
+
* difference: it is a command the creator (or their agent) runs, not something `bitmagic init`
|
|
8
|
+
* fires. At init there is no design yet, and a cover generated from nothing is generic.
|
|
9
|
+
*
|
|
10
|
+
* Run it EARLY — as soon as GAME-DESIGN.md says what the game is, before implementing it. The art
|
|
11
|
+
* then exists during the long first coding pass rather than after it, which is the other half of
|
|
12
|
+
* what Planning Mode's cover is for.
|
|
13
|
+
*
|
|
14
|
+
* It is built entirely on the existing `generate image` lane (`runAssetGeneration`), so ownership,
|
|
15
|
+
* spark billing, the SSE keepalive and the server-side deadline all behave identically to every
|
|
16
|
+
* other generation. Only two things differ, and both are this side of the wire: the prompt is
|
|
17
|
+
* composed by `@bitmagic/asset-core`'s `buildCoverArtPrompt` (the same one the web lane uses, so
|
|
18
|
+
* covers from both lanes look like the same product), and the result is additionally written to
|
|
19
|
+
* the start screen, saved locally, and picked up by `bitmagic publish` as the thumbnail.
|
|
20
|
+
*/
|
|
21
|
+
import { defineCommand } from 'citty';
|
|
22
|
+
import { Buffer } from 'buffer';
|
|
23
|
+
import { createHash } from 'crypto';
|
|
24
|
+
import * as fs from 'fs';
|
|
25
|
+
import * as path from 'path';
|
|
26
|
+
import { buildCoverArtPrompt, isUpsertRootPatch } from '@bitmagic/asset-core';
|
|
27
|
+
import { CliError } from '../errors.js';
|
|
28
|
+
import { loadProjectContext } from '../project/context.js';
|
|
29
|
+
import { aliasSourceDir } from '../scaffold/aliases.js';
|
|
30
|
+
import { applyPatchesToWorld } from '../generate/apply-patches.js';
|
|
31
|
+
import { runAssetGeneration } from './generate.js';
|
|
32
|
+
import { renderInlineImage } from '../render/inline-image.js';
|
|
33
|
+
import { createOutput } from '../output.js';
|
|
34
|
+
/** The design document `bitmagic init` scaffolds and the coding agent maintains. */
|
|
35
|
+
export const GAME_DESIGN_FILE = 'GAME-DESIGN.md';
|
|
36
|
+
/**
|
|
37
|
+
* The `assets[]` entry name the cover is stored under. Fixed, not derived from the game name,
|
|
38
|
+
* because the image generator upserts on `['name', 'type']` — a stable name means regenerating
|
|
39
|
+
* REPLACES the previous cover instead of leaving a trail of orphaned images in world.json.
|
|
40
|
+
*/
|
|
41
|
+
const COVER_ASSET_NAME = 'cover_art';
|
|
42
|
+
/** Square, matching the web lane's cover size. The portal card and start screen both crop to fit. */
|
|
43
|
+
const COVER_SIZE = 1024;
|
|
44
|
+
/** Under `.bitmagic/`: gitignored, and excluded from the publish fingerprint. */
|
|
45
|
+
const COVER_IMAGE_FILE = path.join('.bitmagic', 'cover.webp');
|
|
46
|
+
const COVER_RECORD_FILE = path.join('.bitmagic', 'cover.json');
|
|
47
|
+
export function coverImagePath(root) {
|
|
48
|
+
return path.join(root, COVER_IMAGE_FILE);
|
|
49
|
+
}
|
|
50
|
+
function coverRecordPath(root) {
|
|
51
|
+
return path.join(root, COVER_RECORD_FILE);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Identifies the design text a cover was generated from, so a repeat `bitmagic cover` on an
|
|
55
|
+
* unchanged design can decline to spend sparks on the same picture twice. This is the local
|
|
56
|
+
* equivalent of `PLAN_COVER_CACHE` in game-play-agent's PromptToGameController, which does the
|
|
57
|
+
* same for Planning Mode, keyed the same way — on the design text rather than the game.
|
|
58
|
+
*/
|
|
59
|
+
export function hashDesign(designText) {
|
|
60
|
+
return createHash('sha256').update(designText.trim(), 'utf-8').digest('hex');
|
|
61
|
+
}
|
|
62
|
+
export function readCoverRecord(root) {
|
|
63
|
+
let raw;
|
|
64
|
+
try {
|
|
65
|
+
raw = fs.readFileSync(coverRecordPath(root), 'utf-8');
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
let parsed;
|
|
71
|
+
try {
|
|
72
|
+
parsed = JSON.parse(raw);
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// A corrupt record is not worth an error: the worst case is one regeneration.
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
if (typeof parsed !== 'object' || parsed === null)
|
|
79
|
+
return null;
|
|
80
|
+
const { url, designHash, generatedAt } = parsed;
|
|
81
|
+
if (typeof url !== 'string' || typeof designHash !== 'string' || typeof generatedAt !== 'string') {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
return { url, designHash, generatedAt };
|
|
85
|
+
}
|
|
86
|
+
function writeCoverRecord(root, record) {
|
|
87
|
+
fs.writeFileSync(coverRecordPath(root), `${JSON.stringify(record, null, 2)}\n`);
|
|
88
|
+
}
|
|
89
|
+
// ============================================================================
|
|
90
|
+
// Design text
|
|
91
|
+
// ============================================================================
|
|
92
|
+
/**
|
|
93
|
+
* The prose the cover is drawn from: `--prompt` when given, otherwise GAME-DESIGN.md.
|
|
94
|
+
*
|
|
95
|
+
* `--prompt` is a one-call override and is never written to the file — the design document belongs
|
|
96
|
+
* to the creator, and a flag silently rewriting it would be a surprise the next `bitmagic cover`
|
|
97
|
+
* inherits.
|
|
98
|
+
*
|
|
99
|
+
* The error path matters as much as the happy one: projects scaffolded before GAME-DESIGN.md
|
|
100
|
+
* existed have no such file, and an agent that only sees "not found" cannot tell whether it should
|
|
101
|
+
* create one or has run the command in the wrong place. So the message says both what to write and
|
|
102
|
+
* what to run instead.
|
|
103
|
+
*/
|
|
104
|
+
export function resolveDesignText(options) {
|
|
105
|
+
const flag = options.promptFlag?.trim();
|
|
106
|
+
if (flag)
|
|
107
|
+
return flag;
|
|
108
|
+
const readFile = options.readFile ?? ((file) => fs.readFileSync(file, 'utf-8'));
|
|
109
|
+
const designPath = path.join(options.root, GAME_DESIGN_FILE);
|
|
110
|
+
let contents;
|
|
111
|
+
try {
|
|
112
|
+
contents = readFile(designPath);
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
throw new CliError(`No ${GAME_DESIGN_FILE} at ${designPath}, and no --prompt given. Cover art is generated from ` +
|
|
116
|
+
'the game design, so there must be one or the other.\n' +
|
|
117
|
+
`Write ${GAME_DESIGN_FILE} describing the pitch, the core loop and — most usefully for the ` +
|
|
118
|
+
'artwork — the world and its look, then run `bitmagic cover` again. To generate from a ' +
|
|
119
|
+
'one-off description instead, run `bitmagic cover --prompt "..."`.');
|
|
120
|
+
}
|
|
121
|
+
if (!contents.trim()) {
|
|
122
|
+
throw new CliError(`${designPath} is empty. Describe the game — especially its world and look — or pass ` +
|
|
123
|
+
'`bitmagic cover --prompt "..."` to generate from a one-off description.');
|
|
124
|
+
}
|
|
125
|
+
return contents;
|
|
126
|
+
}
|
|
127
|
+
// ============================================================================
|
|
128
|
+
// Reading the result
|
|
129
|
+
// ============================================================================
|
|
130
|
+
/**
|
|
131
|
+
* The generated image's URL, read back out of the patch the image generator returned.
|
|
132
|
+
*
|
|
133
|
+
* The generator's terminal frame carries only `{ success, message, patches }` — the URL is not a
|
|
134
|
+
* separate field on the wire — so the patch it upserts into `assets[]` is where it lives. Matched
|
|
135
|
+
* on the patch's own shape rather than on the message text, which is prose and not a contract.
|
|
136
|
+
*/
|
|
137
|
+
export function coverUrlFromPatches(patches) {
|
|
138
|
+
for (const patch of patches) {
|
|
139
|
+
if (!isUpsertRootPatch(patch))
|
|
140
|
+
continue;
|
|
141
|
+
if (patch.path.join('.') !== 'assets')
|
|
142
|
+
continue;
|
|
143
|
+
const value = patch.value;
|
|
144
|
+
if (typeof value !== 'object' || value === null)
|
|
145
|
+
continue;
|
|
146
|
+
const url = value.url;
|
|
147
|
+
if (typeof url === 'string' && url.length > 0)
|
|
148
|
+
return url;
|
|
149
|
+
}
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* The patch that puts the cover behind the game's start screen.
|
|
154
|
+
*
|
|
155
|
+
* `set`, NOT `setRoot`: `set` addresses a path inside `worldProfileData`, which is where the
|
|
156
|
+
* engine's GameRuntimeController reads `hud.startScreen.imageUrl` from. A root-level write would
|
|
157
|
+
* land somewhere nothing ever looks and report success — the exact trap apply-patches.ts documents.
|
|
158
|
+
*/
|
|
159
|
+
export function startScreenPatch(url) {
|
|
160
|
+
return { type: 'set', path: ['hud', 'startScreen', 'imageUrl'], value: url };
|
|
161
|
+
}
|
|
162
|
+
function defaultDeps(json) {
|
|
163
|
+
const output = createOutput(json);
|
|
164
|
+
return {
|
|
165
|
+
fetch: globalThis.fetch,
|
|
166
|
+
sleep: (ms) => new Promise((resolve) => setTimeout(resolve, ms)),
|
|
167
|
+
log: output.info,
|
|
168
|
+
result: output.result,
|
|
169
|
+
generate: runAssetGeneration,
|
|
170
|
+
renderImage: (bytes) => renderInlineImage(bytes),
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Download the generated image so the agent driving this CLI can look at it, and so
|
|
175
|
+
* `bitmagic publish` has bytes to upload as the thumbnail.
|
|
176
|
+
*
|
|
177
|
+
* Best-effort by design: the URL is already in world.json by the time this runs, so a failed
|
|
178
|
+
* download costs the local copy and nothing else. It must not turn a paid, successful generation
|
|
179
|
+
* into a failed command.
|
|
180
|
+
*/
|
|
181
|
+
async function saveCoverImage(root, url, deps) {
|
|
182
|
+
try {
|
|
183
|
+
const response = await deps.fetch(url);
|
|
184
|
+
if (!response.ok) {
|
|
185
|
+
deps.log(` could not download the image for a local copy (HTTP ${response.status}).`);
|
|
186
|
+
return null;
|
|
187
|
+
}
|
|
188
|
+
const bytes = Buffer.from(await response.arrayBuffer());
|
|
189
|
+
fs.mkdirSync(path.dirname(coverImagePath(root)), { recursive: true });
|
|
190
|
+
fs.writeFileSync(coverImagePath(root), bytes);
|
|
191
|
+
return bytes;
|
|
192
|
+
}
|
|
193
|
+
catch (error) {
|
|
194
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
195
|
+
deps.log(` could not download the image for a local copy: ${message}`);
|
|
196
|
+
return null;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
/** Prints the cover's location, and draws it where the terminal can show it. */
|
|
200
|
+
function reportCover(root, url, bytes, deps) {
|
|
201
|
+
if (bytes)
|
|
202
|
+
deps.log(`Cover art: ${coverImagePath(root)}`);
|
|
203
|
+
deps.log(` ${url}`);
|
|
204
|
+
// Plain lines first, always: they are what an agent reads, and the image is strictly extra.
|
|
205
|
+
if (bytes)
|
|
206
|
+
deps.renderImage(bytes);
|
|
207
|
+
}
|
|
208
|
+
export async function runCover(args, deps = defaultDeps(args.json === true)) {
|
|
209
|
+
const context = loadProjectContext(deps.startDir);
|
|
210
|
+
const root = context.root;
|
|
211
|
+
const designText = resolveDesignText({ promptFlag: args.prompt, root });
|
|
212
|
+
const designHash = hashDesign(designText);
|
|
213
|
+
// Same design, same picture: decline rather than bill for it twice. The local image has to be
|
|
214
|
+
// there too — without it there is nothing for `bitmagic publish` to upload, and "up to date"
|
|
215
|
+
// would be a lie.
|
|
216
|
+
const existing = readCoverRecord(root);
|
|
217
|
+
if (args.force !== true &&
|
|
218
|
+
existing?.designHash === designHash &&
|
|
219
|
+
fs.existsSync(coverImagePath(root))) {
|
|
220
|
+
deps.log('Cover art is already up to date for this design.');
|
|
221
|
+
reportCover(root, existing.url, fs.readFileSync(coverImagePath(root)), deps);
|
|
222
|
+
deps.log('Pass --force to generate a new one anyway.');
|
|
223
|
+
// `generated: false` is the whole point of this branch for an automated caller: the command
|
|
224
|
+
// succeeded, nothing was billed, and there is no new picture to look at.
|
|
225
|
+
deps.result({
|
|
226
|
+
ok: true,
|
|
227
|
+
generated: false,
|
|
228
|
+
url: existing.url,
|
|
229
|
+
imagePath: coverImagePath(root),
|
|
230
|
+
startScreenSet: false,
|
|
231
|
+
});
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
const body = {
|
|
235
|
+
name: COVER_ASSET_NAME,
|
|
236
|
+
prompt: buildCoverArtPrompt(designText),
|
|
237
|
+
width: COVER_SIZE,
|
|
238
|
+
height: COVER_SIZE,
|
|
239
|
+
...(args['reference-image-url'] !== undefined
|
|
240
|
+
? { referenceImageUrl: args['reference-image-url'] }
|
|
241
|
+
: {}),
|
|
242
|
+
};
|
|
243
|
+
// 'image' is the wire type; everything past this point is what makes it a COVER rather than one
|
|
244
|
+
// more entry in the assets catalog. `false` suppresses the generator's own result document —
|
|
245
|
+
// this command emits the one, and its prose is already routed by the deps it hands over.
|
|
246
|
+
const outcome = await deps.generate('image', 'cover art', body, false, deps);
|
|
247
|
+
const url = coverUrlFromPatches(outcome.patches);
|
|
248
|
+
if (url === null) {
|
|
249
|
+
throw new CliError('The cover image was generated and added to world.json, but the response carried no image ' +
|
|
250
|
+
'URL, so the start screen was not set and no local copy was saved. Re-run `bitmagic cover ' +
|
|
251
|
+
'--force`; if it happens again, report it.');
|
|
252
|
+
}
|
|
253
|
+
const setsStartScreen = args['start-screen'] !== false;
|
|
254
|
+
if (setsStartScreen) {
|
|
255
|
+
const worldPath = path.join(root, aliasSourceDir('work'), 'world.json');
|
|
256
|
+
applyPatchesToWorld(worldPath, [startScreenPatch(url)]);
|
|
257
|
+
// A full sentence, not a bullet: it lands after runAssetGeneration's own patch summary has
|
|
258
|
+
// already closed with "world.json updated", where another bullet would read as part of that list.
|
|
259
|
+
deps.log("Set as the game's start screen (hud.startScreen.imageUrl).");
|
|
260
|
+
}
|
|
261
|
+
const bytes = await saveCoverImage(root, url, deps);
|
|
262
|
+
if (bytes) {
|
|
263
|
+
writeCoverRecord(root, { url, designHash, generatedAt: new Date().toISOString() });
|
|
264
|
+
}
|
|
265
|
+
reportCover(root, url, bytes, deps);
|
|
266
|
+
deps.log(bytes
|
|
267
|
+
? 'This is now the publish thumbnail as well — `bitmagic publish` prefers it over the verify screenshot.'
|
|
268
|
+
: 'No local copy was saved, so `bitmagic publish` will still use the verify screenshot as the thumbnail.');
|
|
269
|
+
// Said plainly, and NOT conditional on --start-screen: the generation writes the image into
|
|
270
|
+
// `assets[]` either way, so world.json — and the fingerprint the verify gate checks — has moved
|
|
271
|
+
// regardless. An agent that publishes next would otherwise hit exit 3 and have to work out why.
|
|
272
|
+
deps.log('world.json changed — run `bitmagic verify` again before publishing.');
|
|
273
|
+
deps.result({
|
|
274
|
+
ok: true,
|
|
275
|
+
generated: true,
|
|
276
|
+
url,
|
|
277
|
+
// Null, not omitted: a caller that wanted to display the art needs to know it is not there,
|
|
278
|
+
// and an absent key reads as "look at the default path" rather than "there is no file".
|
|
279
|
+
imagePath: bytes ? coverImagePath(root) : null,
|
|
280
|
+
startScreenSet: setsStartScreen,
|
|
281
|
+
verifyStale: true,
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
export const coverCommand = defineCommand({
|
|
285
|
+
meta: {
|
|
286
|
+
name: 'cover',
|
|
287
|
+
description: "Generate the game's cover art from GAME-DESIGN.md and set it as the start screen.",
|
|
288
|
+
},
|
|
289
|
+
args: {
|
|
290
|
+
prompt: {
|
|
291
|
+
type: 'string',
|
|
292
|
+
description: `Describe the game for this call only, instead of reading ${GAME_DESIGN_FILE}. Never written to the file.`,
|
|
293
|
+
},
|
|
294
|
+
force: {
|
|
295
|
+
type: 'boolean',
|
|
296
|
+
description: 'Generate a new cover even when the design has not changed since the last one.',
|
|
297
|
+
},
|
|
298
|
+
'start-screen': {
|
|
299
|
+
type: 'boolean',
|
|
300
|
+
negativeDescription: 'Leave hud.startScreen.imageUrl alone — still saves the cover and uses it as the publish thumbnail.',
|
|
301
|
+
},
|
|
302
|
+
'reference-image-url': {
|
|
303
|
+
type: 'string',
|
|
304
|
+
description: 'Style/composition reference image URL forwarded to the image model.',
|
|
305
|
+
},
|
|
306
|
+
json: {
|
|
307
|
+
type: 'boolean',
|
|
308
|
+
description: 'Print the result as JSON on stdout; all progress goes to stderr.',
|
|
309
|
+
},
|
|
310
|
+
},
|
|
311
|
+
async run({ args }) {
|
|
312
|
+
await runCover({
|
|
313
|
+
prompt: args.prompt,
|
|
314
|
+
force: args.force,
|
|
315
|
+
'start-screen': args['start-screen'],
|
|
316
|
+
'reference-image-url': args['reference-image-url'],
|
|
317
|
+
json: args.json,
|
|
318
|
+
});
|
|
319
|
+
},
|
|
320
|
+
});
|
|
321
|
+
//# sourceMappingURL=cover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cover.js","sourceRoot":"","sources":["../../src/commands/cover.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAmB,MAAM,sBAAsB,CAAC;AAC/F,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEnE,OAAO,EAAE,kBAAkB,EAAwB,MAAM,eAAe,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,oFAAoF;AACpF,MAAM,CAAC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAEjD;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAErC,qGAAqG;AACrG,MAAM,UAAU,GAAG,IAAI,CAAC;AAExB,iFAAiF;AACjF,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;AAC9D,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;AAE/D,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;AAC5C,CAAC;AAcD;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,UAAkB;IAC3C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,8EAA8E;QAC9E,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/D,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,MAAiC,CAAC;IAC3E,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QACjG,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;AAC1C,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,MAAmB;IACzD,EAAE,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAClF,CAAC;AAED,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAIjC;IACC,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;IACxC,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAEtB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACxF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAC7D,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,QAAQ,CAChB,MAAM,gBAAgB,OAAO,UAAU,uDAAuD;YAC5F,uDAAuD;YACvD,SAAS,gBAAgB,mEAAmE;YAC5F,wFAAwF;YACxF,mEAAmE,CACtE,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QACrB,MAAM,IAAI,QAAQ,CAChB,GAAG,UAAU,yEAAyE;YACpF,yEAAyE,CAC5E,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAqB;IACvD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;YAAE,SAAS;QACxC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ;YAAE,SAAS;QAChD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC1B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;YAAE,SAAS;QAC1D,MAAM,GAAG,GAAI,KAAiC,CAAC,GAAG,CAAC;QACnD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC;IAC5D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAC/E,CAAC;AAoCD,SAAS,WAAW,CAAC,IAAa;IAChC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAClC,OAAO;QACL,KAAK,EAAE,UAAU,CAAC,KAAK;QACvB,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACtE,GAAG,EAAE,MAAM,CAAC,IAAI;QAChB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,QAAQ,EAAE,kBAAkB;QAC5B,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC;KACjD,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,cAAc,CAC3B,IAAY,EACZ,GAAW,EACX,IAAkB;IAElB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,IAAI,CAAC,GAAG,CAAC,yDAAyD,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;YACvF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;QACxD,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtE,EAAE,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;QAC9C,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,IAAI,CAAC,GAAG,CAAC,oDAAoD,OAAO,EAAE,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,SAAS,WAAW,CAAC,IAAY,EAAE,GAAW,EAAE,KAAoB,EAAE,IAAkB;IACtF,IAAI,KAAK;QAAE,IAAI,CAAC,GAAG,CAAC,cAAc,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1D,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;IACrB,4FAA4F;IAC5F,IAAI,KAAK;QAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,IAAe,EACf,OAAqB,WAAW,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;IAEpD,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,MAAM,UAAU,GAAG,iBAAiB,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAE1C,8FAA8F;IAC9F,6FAA6F;IAC7F,kBAAkB;IAClB,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACvC,IACE,IAAI,CAAC,KAAK,KAAK,IAAI;QACnB,QAAQ,EAAE,UAAU,KAAK,UAAU;QACnC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EACnC,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;QAC7D,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC7E,IAAI,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QACvD,4FAA4F;QAC5F,yEAAyE;QACzE,IAAI,CAAC,MAAM,CAAC;YACV,EAAE,EAAE,IAAI;YACR,SAAS,EAAE,KAAK;YAChB,GAAG,EAAE,QAAQ,CAAC,GAAG;YACjB,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC;YAC/B,cAAc,EAAE,KAAK;SACtB,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAA4B;QACpC,IAAI,EAAE,gBAAgB;QACtB,MAAM,EAAE,mBAAmB,CAAC,UAAU,CAAC;QACvC,KAAK,EAAE,UAAU;QACjB,MAAM,EAAE,UAAU;QAClB,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,SAAS;YAC3C,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC,qBAAqB,CAAC,EAAE;YACpD,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IAEF,gGAAgG;IAChG,6FAA6F;IAC7F,yFAAyF;IACzF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAE7E,MAAM,GAAG,GAAG,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,MAAM,IAAI,QAAQ,CAChB,2FAA2F;YACzF,2FAA2F;YAC3F,2CAA2C,CAC9C,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,KAAK,CAAC;IACvD,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC;QACxE,mBAAmB,CAAC,SAAS,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACxD,2FAA2F;QAC3F,kGAAkG;QAClG,IAAI,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACpD,IAAI,KAAK,EAAE,CAAC;QACV,gBAAgB,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,GAAG,CACN,KAAK;QACH,CAAC,CAAC,uGAAuG;QACzG,CAAC,CAAC,uGAAuG,CAC5G,CAAC;IACF,4FAA4F;IAC5F,gGAAgG;IAChG,gGAAgG;IAChG,IAAI,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;IAEhF,IAAI,CAAC,MAAM,CAAC;QACV,EAAE,EAAE,IAAI;QACR,SAAS,EAAE,IAAI;QACf,GAAG;QACH,4FAA4F;QAC5F,wFAAwF;QACxF,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;QAC9C,cAAc,EAAE,eAAe;QAC/B,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC;IACxC,IAAI,EAAE;QACJ,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,mFAAmF;KACjG;IACD,IAAI,EAAE;QACJ,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,4DAA4D,gBAAgB,8BAA8B;SACxH;QACD,KAAK,EAAE;YACL,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,+EAA+E;SAC7F;QACD,cAAc,EAAE;YACd,IAAI,EAAE,SAAS;YACf,mBAAmB,EACjB,oGAAoG;SACvG;QACD,qBAAqB,EAAE;YACrB,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,qEAAqE;SACnF;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,kEAAkE;SAChF;KACF;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QAChB,MAAM,QAAQ,CAAC;YACb,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC;YACpC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,CAAC;YAClD,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC"}
|
package/dist/commands/forge.d.ts
CHANGED
|
@@ -115,5 +115,9 @@ export declare const forgeCommand: import("citty").CommandDef<{
|
|
|
115
115
|
readonly type: "boolean";
|
|
116
116
|
readonly description: "Build a custom place (arena, fortress, camp).";
|
|
117
117
|
};
|
|
118
|
+
readonly json: {
|
|
119
|
+
readonly type: "boolean";
|
|
120
|
+
readonly description: "Print the result as JSON on stdout; all progress goes to stderr.";
|
|
121
|
+
};
|
|
118
122
|
}>;
|
|
119
123
|
export {};
|
package/dist/commands/forge.js
CHANGED
|
@@ -23,6 +23,7 @@ import * as fs from 'fs';
|
|
|
23
23
|
import { spawn, spawnSync } from 'child_process';
|
|
24
24
|
import { buildAssetCatalog, createForgedWorkStore, } from '@bitmagic/world-forger/pipeline/index.js';
|
|
25
25
|
import { CliError } from '../errors.js';
|
|
26
|
+
import { createOutput } from '../output.js';
|
|
26
27
|
import { loadProjectContext, projectBin } from '../project/context.js';
|
|
27
28
|
import { resolveEnvironment, resolveAuth0ClientId } from '../config/environments.js';
|
|
28
29
|
import { readDefaultEnvironment } from '../config/credentials.js';
|
|
@@ -179,11 +180,17 @@ function reportSummary(summary, changes, log) {
|
|
|
179
180
|
log('');
|
|
180
181
|
log('Run `bitmagic dev` and walk the level to check it.');
|
|
181
182
|
}
|
|
182
|
-
|
|
183
|
+
/**
|
|
184
|
+
* Built AFTER `--json` is known, so `log` can be the Output seam rather than a bare console.log.
|
|
185
|
+
* A deps object constructed before the flag is parsed could only ever route prose to stdout,
|
|
186
|
+
* which is exactly what corrupts a `--json` document.
|
|
187
|
+
*/
|
|
188
|
+
function defaultDeps(json) {
|
|
189
|
+
const output = createOutput(json);
|
|
183
190
|
return {
|
|
184
191
|
fetch: globalThis.fetch,
|
|
185
192
|
sleep: (ms) => new Promise((resolve) => setTimeout(resolve, ms)),
|
|
186
|
-
log:
|
|
193
|
+
log: output.info,
|
|
187
194
|
};
|
|
188
195
|
}
|
|
189
196
|
/** Build the project to completion. Every alias resolves into dist/, so serving before the first
|
|
@@ -306,28 +313,32 @@ async function runBrowserSteps(options) {
|
|
|
306
313
|
* expensive case: the forge has been billed, and the message says the work is saved under a job
|
|
307
314
|
* id rather than lost.
|
|
308
315
|
*/
|
|
309
|
-
export async function runForge(args, deps
|
|
310
|
-
const
|
|
316
|
+
export async function runForge(args, deps) {
|
|
317
|
+
const output = createOutput(args.json === true);
|
|
318
|
+
const runDeps = deps ?? defaultDeps(args.json === true);
|
|
319
|
+
const log = runDeps.log;
|
|
320
|
+
const prepared = await prepareForgeRequest(args, runDeps);
|
|
311
321
|
const { context, environment, storage, input, resumeJobId, token } = prepared;
|
|
312
|
-
|
|
322
|
+
log(resumeJobId !== null
|
|
313
323
|
? `Resuming forge job ${resumeJobId} for game ${context.metadata.gameId}.`
|
|
314
324
|
: `Forging a level for game ${context.metadata.gameId}: "${input.prompt}"`);
|
|
315
|
-
|
|
316
|
-
const outcome = await requestForge(environment, token, buildForgeRequestBody(input, resumeJobId, readProjectAssetCatalog(context.root,
|
|
325
|
+
log('[1-2/5] Designing the scene and forging its geometry (this runs on the server)…');
|
|
326
|
+
const outcome = await requestForge(environment, token, buildForgeRequestBody(input, resumeJobId, readProjectAssetCatalog(context.root, log)), { fetch: runDeps.fetch, onProgress: (message) => log(` ${message}`) });
|
|
317
327
|
if (!outcome.success) {
|
|
318
328
|
throw new CliError(describeForgeFailure(outcome));
|
|
319
329
|
}
|
|
320
330
|
const { jobId, artifact, platformerMovement } = outcome;
|
|
321
|
-
|
|
331
|
+
log(`[1-2/5] Geometry forged (job ${jobId}).`);
|
|
322
332
|
// From here on the design and the geometry are PAID FOR and saved server-side. Every failure
|
|
323
333
|
// below must therefore point at the resume rather than at re-running from scratch.
|
|
324
334
|
await seedForgeStore(createForgedWorkStore(jobId, storage), artifact, input, platformerMovement);
|
|
325
335
|
try {
|
|
326
|
-
await runBrowserSteps({ context, environment, jobId, token, deps });
|
|
336
|
+
await runBrowserSteps({ context, environment, jobId, token, deps: runDeps });
|
|
327
337
|
}
|
|
328
338
|
catch (error) {
|
|
329
339
|
throw decorateBrowserStepError(error, jobId);
|
|
330
340
|
}
|
|
341
|
+
output.result({ ok: true, jobId, gameId: context.metadata.gameId, name: input.name });
|
|
331
342
|
}
|
|
332
343
|
async function prepareForgeRequest(args, deps) {
|
|
333
344
|
try {
|
|
@@ -419,6 +430,10 @@ export const forgeCommand = defineCommand({
|
|
|
419
430
|
dungeon: { type: 'boolean', description: 'Build an enclosed dungeon of rooms and corridors.' },
|
|
420
431
|
platformer: { type: 'boolean', description: 'Build a third-person platformer journey.' },
|
|
421
432
|
freeform: { type: 'boolean', description: 'Build a custom place (arena, fortress, camp).' },
|
|
433
|
+
json: {
|
|
434
|
+
type: 'boolean',
|
|
435
|
+
description: 'Print the result as JSON on stdout; all progress goes to stderr.',
|
|
436
|
+
},
|
|
422
437
|
},
|
|
423
438
|
async run({ args }) {
|
|
424
439
|
await runForge(args);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forge.js","sourceRoot":"","sources":["../../src/commands/forge.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"forge.js","sourceRoot":"","sources":["../../src/commands/forge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type GenerationOutcome } from '../generate/stream.js';
|
|
1
2
|
export interface SkyboxArgs {
|
|
2
3
|
description: string;
|
|
3
4
|
referenceImageUrl?: string;
|
|
@@ -47,8 +48,17 @@ export interface GenerateRunDeps {
|
|
|
47
48
|
}
|
|
48
49
|
/**
|
|
49
50
|
* Runs one `bitmagic generate <subcommand>`: requests the asset, then applies the returned
|
|
50
|
-
* patches to world.json.
|
|
51
|
-
*
|
|
51
|
+
* patches to world.json. Returns the successful outcome, whose `patches` carry the generated
|
|
52
|
+
* asset's URL — the five `generate` subcommands ignore it and print nothing more, but
|
|
53
|
+
* `bitmagic cover` needs the URL to save the image locally and hand it to `bitmagic publish`.
|
|
54
|
+
*
|
|
55
|
+
* `json` controls only whether the result DOCUMENT is emitted here; prose always goes through
|
|
56
|
+
* `deps.log`. A caller that emits its own result (cover does) passes `false` and supplies deps
|
|
57
|
+
* whose `log` is already routed for its own `--json` mode — stdout must carry exactly one JSON
|
|
58
|
+
* document, and two would be worse than none.
|
|
59
|
+
*
|
|
60
|
+
* Every failure path says explicitly whether world.json changed, because a creator (or the agent
|
|
61
|
+
* driving this CLI) who does not know has to go look for themselves:
|
|
52
62
|
*
|
|
53
63
|
* - Anything that fails before a `result`/`error` frame arrives (auth, ownership, spark balance,
|
|
54
64
|
* a network error, ...) — world.json is untouched; the message says so.
|
|
@@ -58,5 +68,5 @@ export interface GenerateRunDeps {
|
|
|
58
68
|
* unrecognised patch shape) — distinct from the above: the Forger may already have billed for
|
|
59
69
|
* this generation, so the message says the asset was NOT lost, only not yet applied.
|
|
60
70
|
*/
|
|
61
|
-
export declare function runAssetGeneration(type: string, label: string, body: Record<string, unknown>, deps?: GenerateRunDeps): Promise<
|
|
71
|
+
export declare function runAssetGeneration(type: string, label: string, body: Record<string, unknown>, json?: boolean, deps?: GenerateRunDeps): Promise<GenerationOutcome>;
|
|
62
72
|
export declare const generateCommand: import("citty").CommandDef<import("citty").ArgsDef>;
|