@bitmagic/cli 0.1.19 → 0.1.21
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 +32 -1
- package/dist/commands/edit.js +6 -0
- package/dist/commands/edit.js.map +1 -1
- package/dist/commands/generate.d.ts +15 -0
- package/dist/commands/generate.js +72 -0
- package/dist/commands/generate.js.map +1 -1
- package/dist/editor/journal.d.ts +134 -0
- package/dist/editor/journal.js +220 -0
- package/dist/editor/journal.js.map +1 -0
- package/dist/editor/server.d.ts +10 -0
- package/dist/editor/server.js +217 -4
- package/dist/editor/server.js.map +1 -1
- package/dist/editor/shell-page.js +160 -0
- package/dist/editor/shell-page.js.map +1 -1
- package/dist/generate/prop.d.ts +69 -0
- package/dist/generate/prop.js +240 -0
- package/dist/generate/prop.js.map +1 -0
- package/dist/generate/stream.d.ts +6 -0
- package/dist/generate/stream.js +7 -2
- package/dist/generate/stream.js.map +1 -1
- package/dist/scaffold/project-files.js +35 -1
- package/dist/scaffold/project-files.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -40,7 +40,7 @@ bitmagic publish # verify-gate, build, and ship — private by defa
|
|
|
40
40
|
| `bitmagic build` | Bundle the game into one self-contained `.bitmagic/build/index.html`. Rarely needs to be run by hand — `publish` builds automatically when the project changed. |
|
|
41
41
|
| `bitmagic publish [--visibility public\|private] [--name <name>] [--description <desc>] [--force]` | Verify-gate, build if needed, and upload straight to GCS. **Private unless `--visibility public` is passed.** |
|
|
42
42
|
| `bitmagic upgrade [--engine <version>] [--force]` | Refresh vendored platform files and the CLI's own skills to the currently published engine. Refuses a dirty git tree unless `--force`. |
|
|
43
|
-
| `bitmagic generate <skybox\|sound\|image\|character\|animation> ...` | Generate one asset directly into `src/work/world.json`. Costs sparks. |
|
|
43
|
+
| `bitmagic generate <skybox\|sound\|image\|character\|animation\|prop> ...` | Generate one asset directly into `src/work/world.json`. Costs sparks. `prop` upgrades an existing placeholder asset in place — see below. |
|
|
44
44
|
| `bitmagic cover [--prompt "..."] [--force] [--no-start-screen]` | Generate the game's cover art from `GAME-DESIGN.md`: sets the start screen, saves `.bitmagic/cover.webp`, becomes the publish thumbnail. Costs sparks. |
|
|
45
45
|
| `bitmagic forge --prompt "..." [--city\|--dungeon\|--platformer\|--freeform] [--name <name>] [--resume <jobId>]` | Design and bake a whole playable level into `world.json`. Slow and expensive; supports `--resume`. |
|
|
46
46
|
|
|
@@ -112,6 +112,37 @@ Saves are surgical — one entry per object touched, nothing else in the file is
|
|
|
112
112
|
If your agent edits `world.json` while the editor is open, the editor says so and offers a reload
|
|
113
113
|
rather than silently reloading over work in progress.
|
|
114
114
|
|
|
115
|
+
### What your agent sees
|
|
116
|
+
|
|
117
|
+
Every editor action is appended to `.bitmagic/edit/events.jsonl`, one JSON object per line, and
|
|
118
|
+
printed to the command's own output — so the agent that launched `bitmagic edit` can tell what you
|
|
119
|
+
did without inferring it from a diff:
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
{"at":"…","event":"object.moved","objectId":"inst_…","position":{"from":{…},"to":{…}}}
|
|
123
|
+
{"at":"…","event":"hq.requested","assetId":"asset_…","prompt":"a mossy stone arch","command":"bitmagic generate prop …"}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Regenerating a placeholder
|
|
127
|
+
|
|
128
|
+
Forged levels are built from placeholder assets — box-model stand-ins. Select one and the object
|
|
129
|
+
inspector offers **Generate high-quality version**: describe what it should be, press Generate, and
|
|
130
|
+
the editor runs the job. It takes a couple of minutes, you can keep editing while it runs, and when
|
|
131
|
+
it lands every already-placed instance of that asset upgrades at once — the new mesh is written
|
|
132
|
+
under the same asset id rather than appearing as a second asset beside the old one.
|
|
133
|
+
|
|
134
|
+
It costs sparks, and it needs you to be logged in (the mesh comes from an authenticated server
|
|
135
|
+
route). Logged out, the editor saves your description and shows the command instead, which does
|
|
136
|
+
exactly the same thing:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
bitmagic generate prop --asset <assetId> --prompt "<what it should be>"
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Either way it lands in the journal — `hq.started` then `hq.completed` — so your agent finds out an
|
|
143
|
+
asset changed and why, instead of tripping over it. If it fails after the mesh exists, the error
|
|
144
|
+
carries the URL: retry with `--glb-url <url>` and you are not charged again.
|
|
145
|
+
|
|
115
146
|
Both ports must fall between 3000 and 3199. That is the window the asset CDN allows as an origin;
|
|
116
147
|
outside it the game loads with no terrain and no error.
|
|
117
148
|
|
package/dist/commands/edit.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { defineCommand } from 'citty';
|
|
10
10
|
import { spawn, spawnSync } from 'child_process';
|
|
11
|
+
import * as path from 'path';
|
|
11
12
|
import { CliError } from '../errors.js';
|
|
12
13
|
import { loadProjectContext, projectBin } from '../project/context.js';
|
|
13
14
|
import { startEditorServer } from '../editor/server.js';
|
|
@@ -71,6 +72,7 @@ export const editCommand = defineCommand({
|
|
|
71
72
|
// Before the children, so a port clash fails fast rather than after vite has claimed its port.
|
|
72
73
|
const editor = await startEditorServer({
|
|
73
74
|
root: context.root,
|
|
75
|
+
metadata: context.metadata,
|
|
74
76
|
gameId: context.metadata.gameId,
|
|
75
77
|
gamePort,
|
|
76
78
|
port: editorPort,
|
|
@@ -110,6 +112,10 @@ export const editCommand = defineCommand({
|
|
|
110
112
|
console.log(`Editor ready at ${editor.url}`);
|
|
111
113
|
console.log('\nOpen the editor URL, click an object and drag the gizmo.');
|
|
112
114
|
console.log('Every change is saved to src/work/world.json.');
|
|
115
|
+
// Named on startup so the agent that launched this command knows where to look without
|
|
116
|
+
// being told — the journal is the only record of intentions the editor cannot carry out
|
|
117
|
+
// itself, and of who changed what.
|
|
118
|
+
console.log(`Editor actions are journalled to ${path.relative(context.root, editor.journalPath)}`);
|
|
113
119
|
})
|
|
114
120
|
.catch(() => {
|
|
115
121
|
// The child-exit watcher below reports a vite that never comes up.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../src/commands/edit.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../src/commands/edit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type GenerationOutcome } from '../generate/stream.js';
|
|
2
|
+
import { type PropVoxelizeResult } from '../generate/prop.js';
|
|
2
3
|
export interface SkyboxArgs {
|
|
3
4
|
description: string;
|
|
4
5
|
referenceImageUrl?: string;
|
|
@@ -69,4 +70,18 @@ export interface GenerateRunDeps {
|
|
|
69
70
|
* this generation, so the message says the asset was NOT lost, only not yet applied.
|
|
70
71
|
*/
|
|
71
72
|
export declare function runAssetGeneration(type: string, label: string, body: Record<string, unknown>, json?: boolean, deps?: GenerateRunDeps): Promise<GenerationOutcome>;
|
|
73
|
+
/**
|
|
74
|
+
* `generate prop` cannot go through {@link runAssetGeneration}: the prop generator returns a mesh,
|
|
75
|
+
* not patches, so there is nothing to apply until the CLI has voxelized it in a browser. This owns
|
|
76
|
+
* that longer flow — and validates the target asset BEFORE the paid generation, so a mistyped id
|
|
77
|
+
* or an asset with no `fitBox` costs nothing.
|
|
78
|
+
*/
|
|
79
|
+
export declare function runPropGeneration(options: {
|
|
80
|
+
assetId: string;
|
|
81
|
+
prompt: string;
|
|
82
|
+
/** Skip the paid generation and voxelize this mesh instead — how a failed run is retried. */
|
|
83
|
+
glbUrl?: string;
|
|
84
|
+
json: boolean;
|
|
85
|
+
deps?: GenerateRunDeps;
|
|
86
|
+
}): Promise<PropVoxelizeResult>;
|
|
72
87
|
export declare const generateCommand: import("citty").CommandDef<import("citty").ArgsDef>;
|
|
@@ -9,6 +9,7 @@ import { readDefaultEnvironment } from '../config/credentials.js';
|
|
|
9
9
|
import { getAccessToken } from '../auth/session.js';
|
|
10
10
|
import { requestGeneration } from '../generate/stream.js';
|
|
11
11
|
import { applyPatchesToWorld } from '../generate/apply-patches.js';
|
|
12
|
+
import { generateAndInstallProp } from '../generate/prop.js';
|
|
12
13
|
function parseNumberFlag(flagName, raw, options = {}) {
|
|
13
14
|
if (raw === undefined)
|
|
14
15
|
return undefined;
|
|
@@ -183,6 +184,42 @@ export async function runAssetGeneration(type, label, body, json = false, deps)
|
|
|
183
184
|
runDeps.log('If `bitmagic dev` is running, reload the browser tab to see the change.');
|
|
184
185
|
return outcome;
|
|
185
186
|
}
|
|
187
|
+
/**
|
|
188
|
+
* `generate prop` cannot go through {@link runAssetGeneration}: the prop generator returns a mesh,
|
|
189
|
+
* not patches, so there is nothing to apply until the CLI has voxelized it in a browser. This owns
|
|
190
|
+
* that longer flow — and validates the target asset BEFORE the paid generation, so a mistyped id
|
|
191
|
+
* or an asset with no `fitBox` costs nothing.
|
|
192
|
+
*/
|
|
193
|
+
export async function runPropGeneration(options) {
|
|
194
|
+
const output = createOutput(options.json);
|
|
195
|
+
const runDeps = options.deps ?? defaultDeps(options.json);
|
|
196
|
+
const context = loadProjectContext(runDeps.startDir);
|
|
197
|
+
const environment = resolveEnvironment({ storedDefault: readDefaultEnvironment(runDeps.baseDir) });
|
|
198
|
+
const token = await getAccessToken(environment, resolveAuth0ClientId(environment), { fetch: runDeps.fetch, sleep: runDeps.sleep, now: runDeps.now }, runDeps.baseDir);
|
|
199
|
+
let result;
|
|
200
|
+
try {
|
|
201
|
+
result = await generateAndInstallProp({
|
|
202
|
+
context,
|
|
203
|
+
environment,
|
|
204
|
+
token,
|
|
205
|
+
assetId: options.assetId,
|
|
206
|
+
prompt: options.prompt,
|
|
207
|
+
...(options.glbUrl ? { glbUrl: options.glbUrl } : {}),
|
|
208
|
+
fetchImpl: runDeps.fetch,
|
|
209
|
+
log: runDeps.log,
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
throw decoratedError(error, (message) => message);
|
|
214
|
+
}
|
|
215
|
+
runDeps.log(`Upgraded "${result.assetName}" — ${result.instanceCount} placed instance`
|
|
216
|
+
+ `${result.instanceCount === 1 ? '' : 's'} now use the generated version.`);
|
|
217
|
+
// `result` already carries glbUrl, so a retry after a later failure can find the paid-for mesh
|
|
218
|
+
// in the JSON document rather than only in the error text.
|
|
219
|
+
output.result({ ok: true, kind: 'prop', ...result });
|
|
220
|
+
runDeps.log('If `bitmagic edit` or `bitmagic dev` is running, reload the browser tab to see it.');
|
|
221
|
+
return result;
|
|
222
|
+
}
|
|
186
223
|
// ============================================================================
|
|
187
224
|
// Subcommands
|
|
188
225
|
// ============================================================================
|
|
@@ -384,6 +421,40 @@ const animationCommand = defineCommand({
|
|
|
384
421
|
await runAssetGeneration('animation', 'animation', body, args.json === true);
|
|
385
422
|
},
|
|
386
423
|
});
|
|
424
|
+
const propCommand = defineCommand({
|
|
425
|
+
meta: {
|
|
426
|
+
name: 'prop',
|
|
427
|
+
description: 'Replace a placeholder asset with a generated, voxelized 3D prop.',
|
|
428
|
+
},
|
|
429
|
+
args: {
|
|
430
|
+
asset: {
|
|
431
|
+
type: 'string',
|
|
432
|
+
required: true,
|
|
433
|
+
description: 'Id of the placeholder asset to upgrade. Every placed instance upgrades with it.',
|
|
434
|
+
},
|
|
435
|
+
prompt: {
|
|
436
|
+
type: 'string',
|
|
437
|
+
required: true,
|
|
438
|
+
description: 'What the object should be. Also saved as the asset description.',
|
|
439
|
+
},
|
|
440
|
+
'glb-url': {
|
|
441
|
+
type: 'string',
|
|
442
|
+
description: 'Voxelize this existing mesh instead of generating one — how to retry for free.',
|
|
443
|
+
},
|
|
444
|
+
json: {
|
|
445
|
+
type: 'boolean',
|
|
446
|
+
description: 'Print the result as JSON on stdout; all progress goes to stderr.',
|
|
447
|
+
},
|
|
448
|
+
},
|
|
449
|
+
async run({ args }) {
|
|
450
|
+
await runPropGeneration({
|
|
451
|
+
assetId: args.asset,
|
|
452
|
+
prompt: args.prompt,
|
|
453
|
+
...(args['glb-url'] ? { glbUrl: args['glb-url'] } : {}),
|
|
454
|
+
json: args.json === true,
|
|
455
|
+
});
|
|
456
|
+
},
|
|
457
|
+
});
|
|
387
458
|
export const generateCommand = defineCommand({
|
|
388
459
|
meta: {
|
|
389
460
|
name: 'generate',
|
|
@@ -395,6 +466,7 @@ export const generateCommand = defineCommand({
|
|
|
395
466
|
image: imageCommand,
|
|
396
467
|
character: characterCommand,
|
|
397
468
|
animation: animationCommand,
|
|
469
|
+
prop: propCommand,
|
|
398
470
|
},
|
|
399
471
|
});
|
|
400
472
|
//# sourceMappingURL=generate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import type { WorldJsonShape } from '@bitmagic/world-forger/pipeline/index.js';
|
|
2
|
+
import type { ScenePayload } from './save.js';
|
|
3
|
+
/** Journal location, relative to the project root. */
|
|
4
|
+
export declare const JOURNAL_DIR: string;
|
|
5
|
+
export declare const JOURNAL_FILE = "events.jsonl";
|
|
6
|
+
interface Vec3 {
|
|
7
|
+
x: number;
|
|
8
|
+
y: number;
|
|
9
|
+
z: number;
|
|
10
|
+
}
|
|
11
|
+
/** The transform fields that actually changed, so a line reads as the edit the human made. */
|
|
12
|
+
interface TransformDelta {
|
|
13
|
+
position?: {
|
|
14
|
+
from: Vec3 | null;
|
|
15
|
+
to: Vec3;
|
|
16
|
+
};
|
|
17
|
+
rotation?: {
|
|
18
|
+
from: Vec3 | null;
|
|
19
|
+
to: Vec3;
|
|
20
|
+
};
|
|
21
|
+
scale?: {
|
|
22
|
+
from: Vec3 | null;
|
|
23
|
+
to: Vec3;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export type EditorEvent = {
|
|
27
|
+
event: 'session.started';
|
|
28
|
+
gameId: string;
|
|
29
|
+
gameUrl: string;
|
|
30
|
+
editorUrl: string;
|
|
31
|
+
} | ({
|
|
32
|
+
event: 'object.moved';
|
|
33
|
+
objectId: string;
|
|
34
|
+
type?: string;
|
|
35
|
+
assetId?: string;
|
|
36
|
+
} & TransformDelta) | {
|
|
37
|
+
event: 'object.added';
|
|
38
|
+
objectId: string;
|
|
39
|
+
type?: string;
|
|
40
|
+
assetId?: string;
|
|
41
|
+
position?: Vec3;
|
|
42
|
+
} | {
|
|
43
|
+
event: 'object.deleted';
|
|
44
|
+
objectId: string;
|
|
45
|
+
type?: string;
|
|
46
|
+
assetId?: string;
|
|
47
|
+
} | {
|
|
48
|
+
event: 'spawn.changed';
|
|
49
|
+
count: number;
|
|
50
|
+
playerSpawn?: Vec3;
|
|
51
|
+
} | {
|
|
52
|
+
event: 'markers.changed';
|
|
53
|
+
count: number;
|
|
54
|
+
} | {
|
|
55
|
+
event: 'worldconfig.changed';
|
|
56
|
+
path: string[];
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* The human asked for a high-quality version of a forger placeholder, and the editor could not
|
|
60
|
+
* run it — almost always because nobody is logged in. Recorded WITH the confirmed prompt and the
|
|
61
|
+
* command that would do it, so the agent can pick it up.
|
|
62
|
+
*/
|
|
63
|
+
| {
|
|
64
|
+
event: 'hq.requested';
|
|
65
|
+
assetId: string;
|
|
66
|
+
assetName: string;
|
|
67
|
+
prompt: string;
|
|
68
|
+
command: string;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* The editor is running the generation itself. `hq.started` and its terminal partner exist so an
|
|
72
|
+
* agent reading the journal is never surprised by an asset that changed on its own: it can see
|
|
73
|
+
* the job begin, and see what it cost and how many instances it upgraded when it lands.
|
|
74
|
+
*/
|
|
75
|
+
| {
|
|
76
|
+
event: 'hq.started';
|
|
77
|
+
assetId: string;
|
|
78
|
+
assetName: string;
|
|
79
|
+
prompt: string;
|
|
80
|
+
} | {
|
|
81
|
+
event: 'hq.completed';
|
|
82
|
+
assetId: string;
|
|
83
|
+
assetName: string;
|
|
84
|
+
instanceCount: number;
|
|
85
|
+
glbUrl: string;
|
|
86
|
+
assetUrl?: string;
|
|
87
|
+
}
|
|
88
|
+
/** `glbUrl` is present when the mesh was already paid for — a retry can skip that step. */
|
|
89
|
+
| {
|
|
90
|
+
event: 'hq.failed';
|
|
91
|
+
assetId: string;
|
|
92
|
+
assetName: string;
|
|
93
|
+
error: string;
|
|
94
|
+
glbUrl?: string;
|
|
95
|
+
};
|
|
96
|
+
/** One journal line: the event, stamped. */
|
|
97
|
+
export type JournalLine = EditorEvent & {
|
|
98
|
+
at: string;
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* What changed between the world on disk and what the engine is reporting.
|
|
102
|
+
*
|
|
103
|
+
* Pure, and given the BEFORE document rather than reading it — so the caller reads world.json once
|
|
104
|
+
* for both this and the modification builder, and the whole thing is testable without a filesystem
|
|
105
|
+
* or a browser.
|
|
106
|
+
*
|
|
107
|
+
* Silence is meaningful: an upserted object whose transform is unchanged produces no line. The
|
|
108
|
+
* engine re-serializes every object it was told is modified, including ones whose only "change"
|
|
109
|
+
* was being marked, and a journal that logged those would drown the real edits.
|
|
110
|
+
*/
|
|
111
|
+
export declare function deriveSceneEvents(before: WorldJsonShape, payload: ScenePayload): EditorEvent[];
|
|
112
|
+
/** The one-line human form mirrored to stdout. The JSONL line stays the machine contract. */
|
|
113
|
+
export declare function formatEvent(event: EditorEvent): string;
|
|
114
|
+
export interface EditorJournalOptions {
|
|
115
|
+
root: string;
|
|
116
|
+
/** Where the human-readable mirror goes. Defaults to nowhere. */
|
|
117
|
+
log?: (message: string) => void;
|
|
118
|
+
/** Injected in tests so a journal can be written without a clock. */
|
|
119
|
+
now?: () => string;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Append-only writer. Failures to write are reported through `log` and never thrown: the journal
|
|
123
|
+
* is a record OF the edit, and losing the record must not cost the creator the edit itself.
|
|
124
|
+
*/
|
|
125
|
+
export declare class EditorJournal {
|
|
126
|
+
private readonly file;
|
|
127
|
+
private readonly log;
|
|
128
|
+
private readonly now;
|
|
129
|
+
constructor(options: EditorJournalOptions);
|
|
130
|
+
/** Absolute path of the journal, for the startup banner that tells an agent where to look. */
|
|
131
|
+
get path(): string;
|
|
132
|
+
append(...events: EditorEvent[]): void;
|
|
133
|
+
}
|
|
134
|
+
export {};
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The editor's event journal — how the agent that launched `bitmagic edit` finds out what the
|
|
3
|
+
* human did in the browser.
|
|
4
|
+
*
|
|
5
|
+
* For a drag, `git diff src/work/world.json` is already a complete record: the change is
|
|
6
|
+
* synchronous and self-describing. That stops being true the moment an editor action is
|
|
7
|
+
* asynchronous, costs money, or expresses an intention the editor cannot carry out itself — the
|
|
8
|
+
* "Generate high-quality version" button is all three. An agent watching only the file would see
|
|
9
|
+
* an asset mutate minutes later with no idea who asked, what it cost, or that anything is pending.
|
|
10
|
+
*
|
|
11
|
+
* So every editor action is appended here as one JSON object per line, and mirrored to stdout for
|
|
12
|
+
* whatever launched the command. The journal lives under `.bitmagic/`, which the scaffold
|
|
13
|
+
* gitignores: world.json is the tracked record of WHAT the scene is, and this is the untracked
|
|
14
|
+
* account of WHO changed it and WHY. Append-only and never rewritten, so an agent can read it
|
|
15
|
+
* incrementally (by byte offset or line count) without racing the writer.
|
|
16
|
+
*/
|
|
17
|
+
import * as fs from 'fs';
|
|
18
|
+
import * as path from 'path';
|
|
19
|
+
/** Journal location, relative to the project root. */
|
|
20
|
+
export const JOURNAL_DIR = path.join('.bitmagic', 'edit');
|
|
21
|
+
export const JOURNAL_FILE = 'events.jsonl';
|
|
22
|
+
function isRecord(value) {
|
|
23
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
24
|
+
}
|
|
25
|
+
function asVec3(value) {
|
|
26
|
+
if (!isRecord(value))
|
|
27
|
+
return null;
|
|
28
|
+
const { x, y, z } = value;
|
|
29
|
+
if (typeof x !== 'number' || typeof y !== 'number' || typeof z !== 'number')
|
|
30
|
+
return null;
|
|
31
|
+
return { x, y, z };
|
|
32
|
+
}
|
|
33
|
+
/** A 1e-15 float wobble is not an edit worth a journal line. */
|
|
34
|
+
function near(a, b) {
|
|
35
|
+
return Math.abs(a - b) < 1e-6;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Euler angles compare modulo a full turn.
|
|
39
|
+
*
|
|
40
|
+
* Not a nicety: world.json stores rotations in radians, and the engine hands back the value its
|
|
41
|
+
* own quaternion round-trip produced — so a `y` of 4.712 comes back as -1.571, the identical
|
|
42
|
+
* heading. Compared naively that is a rotation on every object the engine re-serializes, and the
|
|
43
|
+
* journal fills with turns nobody made.
|
|
44
|
+
*/
|
|
45
|
+
function sameAngle(a, b) {
|
|
46
|
+
const TWO_PI = Math.PI * 2;
|
|
47
|
+
const delta = Math.abs(a - b) % TWO_PI;
|
|
48
|
+
return near(delta, 0) || near(delta, TWO_PI);
|
|
49
|
+
}
|
|
50
|
+
function sameVec3(a, b, angular) {
|
|
51
|
+
if (a === null || b === null)
|
|
52
|
+
return a === b;
|
|
53
|
+
const same = angular ? sameAngle : near;
|
|
54
|
+
return same(a.x, b.x) && same(a.y, b.y) && same(a.z, b.z);
|
|
55
|
+
}
|
|
56
|
+
function transformDelta(before, after) {
|
|
57
|
+
const delta = {};
|
|
58
|
+
for (const field of ['position', 'rotation', 'scale']) {
|
|
59
|
+
const to = asVec3(after[field]);
|
|
60
|
+
if (to === null)
|
|
61
|
+
continue;
|
|
62
|
+
const from = before ? asVec3(before[field]) : null;
|
|
63
|
+
if (sameVec3(from, to, field === 'rotation'))
|
|
64
|
+
continue;
|
|
65
|
+
delta[field] = { from, to };
|
|
66
|
+
}
|
|
67
|
+
return delta;
|
|
68
|
+
}
|
|
69
|
+
function stringField(source, key) {
|
|
70
|
+
const value = source[key];
|
|
71
|
+
return typeof value === 'string' ? value : undefined;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* What changed between the world on disk and what the engine is reporting.
|
|
75
|
+
*
|
|
76
|
+
* Pure, and given the BEFORE document rather than reading it — so the caller reads world.json once
|
|
77
|
+
* for both this and the modification builder, and the whole thing is testable without a filesystem
|
|
78
|
+
* or a browser.
|
|
79
|
+
*
|
|
80
|
+
* Silence is meaningful: an upserted object whose transform is unchanged produces no line. The
|
|
81
|
+
* engine re-serializes every object it was told is modified, including ones whose only "change"
|
|
82
|
+
* was being marked, and a journal that logged those would drown the real edits.
|
|
83
|
+
*/
|
|
84
|
+
export function deriveSceneEvents(before, payload) {
|
|
85
|
+
const previous = new Map();
|
|
86
|
+
for (const object of before.environmentObjects ?? []) {
|
|
87
|
+
const id = object.id;
|
|
88
|
+
if (typeof id === 'string')
|
|
89
|
+
previous.set(id, object);
|
|
90
|
+
}
|
|
91
|
+
const events = [];
|
|
92
|
+
for (const id of payload.changes.deletedObjectIds ?? []) {
|
|
93
|
+
const gone = previous.get(id);
|
|
94
|
+
events.push({
|
|
95
|
+
event: 'object.deleted',
|
|
96
|
+
objectId: id,
|
|
97
|
+
...(gone ? { type: stringField(gone, 'type'), assetId: stringField(gone, 'assetId') } : {}),
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
const deleted = new Set(payload.changes.deletedObjectIds ?? []);
|
|
101
|
+
const fullSave = payload.changes.fullSaveNeeded === true;
|
|
102
|
+
const modified = new Set((payload.changes.modifiedObjectIds ?? []).filter((id) => id !== '__FULL_SAVE__' && !id.startsWith('spawn_')));
|
|
103
|
+
for (const object of payload.status.environmentObjects ?? []) {
|
|
104
|
+
const id = object.id;
|
|
105
|
+
if (typeof id !== 'string' || deleted.has(id))
|
|
106
|
+
continue;
|
|
107
|
+
if (!fullSave && !modified.has(id))
|
|
108
|
+
continue;
|
|
109
|
+
const was = previous.get(id);
|
|
110
|
+
if (was === undefined) {
|
|
111
|
+
events.push({
|
|
112
|
+
event: 'object.added',
|
|
113
|
+
objectId: id,
|
|
114
|
+
type: stringField(object, 'type'),
|
|
115
|
+
assetId: stringField(object, 'assetId'),
|
|
116
|
+
...(asVec3(object.position) ? { position: asVec3(object.position) } : {}),
|
|
117
|
+
});
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
const delta = transformDelta(was, object);
|
|
121
|
+
if (Object.keys(delta).length === 0)
|
|
122
|
+
continue;
|
|
123
|
+
events.push({
|
|
124
|
+
event: 'object.moved',
|
|
125
|
+
objectId: id,
|
|
126
|
+
type: stringField(object, 'type'),
|
|
127
|
+
assetId: stringField(object, 'assetId'),
|
|
128
|
+
...delta,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
const spawnPoints = payload.changes.pendingSpawnPoints;
|
|
132
|
+
if (spawnPoints && spawnPoints.length > 0) {
|
|
133
|
+
const player = spawnPoints.find((point) => point.type === 'player');
|
|
134
|
+
const at = player ? asVec3(player.position) : null;
|
|
135
|
+
events.push({ event: 'spawn.changed', count: spawnPoints.length, ...(at ? { playerSpawn: at } : {}) });
|
|
136
|
+
}
|
|
137
|
+
if (payload.markersDirty === true) {
|
|
138
|
+
events.push({ event: 'markers.changed', count: (payload.status.markers ?? []).length });
|
|
139
|
+
}
|
|
140
|
+
const worldConfig = payload.changes.pendingWorldConfig;
|
|
141
|
+
if (worldConfig && Array.isArray(worldConfig.path) && worldConfig.path.length > 0) {
|
|
142
|
+
events.push({ event: 'worldconfig.changed', path: worldConfig.path });
|
|
143
|
+
}
|
|
144
|
+
return events;
|
|
145
|
+
}
|
|
146
|
+
function short(id) {
|
|
147
|
+
return id.length > 22 ? `${id.slice(0, 22)}…` : id;
|
|
148
|
+
}
|
|
149
|
+
function vec(value) {
|
|
150
|
+
if (value === null)
|
|
151
|
+
return '(new)';
|
|
152
|
+
const round = (n) => (Math.round(n * 100) / 100).toString();
|
|
153
|
+
return `(${round(value.x)}, ${round(value.y)}, ${round(value.z)})`;
|
|
154
|
+
}
|
|
155
|
+
/** The one-line human form mirrored to stdout. The JSONL line stays the machine contract. */
|
|
156
|
+
export function formatEvent(event) {
|
|
157
|
+
switch (event.event) {
|
|
158
|
+
case 'session.started':
|
|
159
|
+
return `[edit] session.started ${event.gameId} → ${event.editorUrl}`;
|
|
160
|
+
case 'object.moved': {
|
|
161
|
+
const parts = ['position', 'rotation', 'scale']
|
|
162
|
+
.filter((field) => event[field] !== undefined)
|
|
163
|
+
.map((field) => `${field} ${vec(event[field].from)} → ${vec(event[field].to)}`);
|
|
164
|
+
return `[edit] object.moved ${short(event.objectId)}${event.type ? ` (${event.type})` : ''} ${parts.join(', ')}`;
|
|
165
|
+
}
|
|
166
|
+
case 'object.added':
|
|
167
|
+
return `[edit] object.added ${short(event.objectId)}${event.type ? ` (${event.type})` : ''} at ${vec(event.position ?? null)}`;
|
|
168
|
+
case 'object.deleted':
|
|
169
|
+
return `[edit] object.deleted ${short(event.objectId)}${event.type ? ` (${event.type})` : ''}`;
|
|
170
|
+
case 'spawn.changed':
|
|
171
|
+
return `[edit] spawn.changed ${event.count} spawn point(s)${event.playerSpawn ? `, player at ${vec(event.playerSpawn)}` : ''}`;
|
|
172
|
+
case 'markers.changed':
|
|
173
|
+
return `[edit] markers.changed ${event.count} marker(s)`;
|
|
174
|
+
case 'worldconfig.changed':
|
|
175
|
+
return `[edit] worldconfig.changed worldProfileData.${event.path.join('.')}`;
|
|
176
|
+
case 'hq.requested':
|
|
177
|
+
return `[edit] hq.requested "${event.assetName}" — run: ${event.command}`;
|
|
178
|
+
case 'hq.started':
|
|
179
|
+
return `[edit] hq.started "${event.assetName}" — generating "${event.prompt}"`;
|
|
180
|
+
case 'hq.completed':
|
|
181
|
+
return `[edit] hq.completed "${event.assetName}" — ${event.instanceCount} instance(s) upgraded`;
|
|
182
|
+
case 'hq.failed':
|
|
183
|
+
return `[edit] hq.failed "${event.assetName}" — ${event.error}`;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Append-only writer. Failures to write are reported through `log` and never thrown: the journal
|
|
188
|
+
* is a record OF the edit, and losing the record must not cost the creator the edit itself.
|
|
189
|
+
*/
|
|
190
|
+
export class EditorJournal {
|
|
191
|
+
file;
|
|
192
|
+
log;
|
|
193
|
+
now;
|
|
194
|
+
constructor(options) {
|
|
195
|
+
this.file = path.join(options.root, JOURNAL_DIR, JOURNAL_FILE);
|
|
196
|
+
this.log = options.log ?? (() => { });
|
|
197
|
+
this.now = options.now ?? (() => new Date().toISOString());
|
|
198
|
+
}
|
|
199
|
+
/** Absolute path of the journal, for the startup banner that tells an agent where to look. */
|
|
200
|
+
get path() {
|
|
201
|
+
return this.file;
|
|
202
|
+
}
|
|
203
|
+
append(...events) {
|
|
204
|
+
if (events.length === 0)
|
|
205
|
+
return;
|
|
206
|
+
const lines = events.map((event) => {
|
|
207
|
+
this.log(formatEvent(event));
|
|
208
|
+
return JSON.stringify({ at: this.now(), ...event });
|
|
209
|
+
});
|
|
210
|
+
try {
|
|
211
|
+
fs.mkdirSync(path.dirname(this.file), { recursive: true });
|
|
212
|
+
fs.appendFileSync(this.file, `${lines.join('\n')}\n`);
|
|
213
|
+
}
|
|
214
|
+
catch (error) {
|
|
215
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
216
|
+
this.log(`[edit] could not write ${this.file}: ${message}`);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=journal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"journal.js","sourceRoot":"","sources":["../../src/editor/journal.ts"],"names":[],"mappings":"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"}
|