@bitmagic/cli 0.1.39 → 0.1.41
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 +27 -5
- package/dist/commands/forge.js +1 -1
- package/dist/commands/forge.js.map +1 -1
- package/dist/commands/verify.js +16 -3
- package/dist/commands/verify.js.map +1 -1
- package/dist/editor/asset-detail-panel.d.ts +22 -0
- package/dist/editor/asset-detail-panel.js +72 -0
- package/dist/editor/asset-detail-panel.js.map +1 -0
- package/dist/editor/asset-preview-page.d.ts +6 -0
- package/dist/editor/asset-preview-page.js +103 -0
- package/dist/editor/asset-preview-page.js.map +1 -0
- package/dist/editor/asset-viewer.d.ts +19 -0
- package/dist/editor/asset-viewer.js +218 -0
- package/dist/editor/asset-viewer.js.map +1 -0
- package/dist/editor/server.js +159 -3
- package/dist/editor/server.js.map +1 -1
- package/dist/editor/shell-page.js +412 -50
- package/dist/editor/shell-page.js.map +1 -1
- package/dist/forge/progress.d.ts +9 -1
- package/dist/forge/progress.js +8 -0
- package/dist/forge/progress.js.map +1 -1
- package/dist/forge/stream.js +6 -0
- package/dist/forge/stream.js.map +1 -1
- package/dist/project/jobs.d.ts +24 -1
- package/dist/project/jobs.js +77 -2
- package/dist/project/jobs.js.map +1 -1
- package/dist/scaffold/project-files.d.ts +6 -0
- package/dist/scaffold/project-files.js +7 -1
- package/dist/scaffold/project-files.js.map +1 -1
- package/dist/verify/browser.js +30 -0
- package/dist/verify/browser.js.map +1 -1
- package/dist/verify/classify.d.ts +4 -0
- package/dist/verify/classify.js +26 -0
- package/dist/verify/classify.js.map +1 -1
- package/dist/verify/events.d.ts +41 -0
- package/dist/verify/events.js +72 -0
- package/dist/verify/events.js.map +1 -0
- package/dist/verify/iterate.js +3 -1
- package/dist/verify/iterate.js.map +1 -1
- package/dist/verify/result.d.ts +5 -1
- package/dist/verify/result.js.map +1 -1
- package/dist/verify/url.d.ts +12 -0
- package/dist/verify/url.js +14 -0
- package/dist/verify/url.js.map +1 -0
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classify.js","sourceRoot":"","sources":["../../src/verify/classify.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"classify.js","sourceRoot":"","sources":["../../src/verify/classify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deriving the semantic-events observation from what `window.__bmDebug.getEvents()`
|
|
3
|
+
* returned — pure, so it is testable without a browser (settle.ts precedent).
|
|
4
|
+
*
|
|
5
|
+
* The input crossed a `page.evaluate` boundary from an arbitrary engine
|
|
6
|
+
* version, so nothing about its shape is trusted: a non-array yields null
|
|
7
|
+
* ("not observed" — older vendored engine), and malformed entries are skipped
|
|
8
|
+
* individually rather than poisoning the run.
|
|
9
|
+
*/
|
|
10
|
+
/** One game event as the engine's `__bmDebug.getEvents()` projects it. */
|
|
11
|
+
export interface RawGameEvent {
|
|
12
|
+
/** Gameplay-time pseudo-frame: gameplay seconds × 60. Pre-gameplay events
|
|
13
|
+
* (menu, load) stamp 0 — the engine clock only advances while playing. */
|
|
14
|
+
frame: number;
|
|
15
|
+
type: string;
|
|
16
|
+
intensity: number;
|
|
17
|
+
position?: [number, number, number];
|
|
18
|
+
actor?: string;
|
|
19
|
+
}
|
|
20
|
+
/** The engine's eventlog clock rate — frame / 60 = seconds of gameplay. */
|
|
21
|
+
export declare const GAMEPLAY_FPS = 60;
|
|
22
|
+
/** How much early gameplay the "early" counts cover. */
|
|
23
|
+
export declare const EARLY_WINDOW_SECONDS = 10;
|
|
24
|
+
/** Raw-event tail kept in the record — enough to see what happened, small
|
|
25
|
+
* enough that result.json stays a summary rather than a transcript. */
|
|
26
|
+
export declare const MAX_RAW_EVENTS = 50;
|
|
27
|
+
export interface EventsObservation {
|
|
28
|
+
/** All events by type. */
|
|
29
|
+
totalByType: Record<string, number>;
|
|
30
|
+
/**
|
|
31
|
+
* Events within the first `EARLY_WINDOW_SECONDS` of GAMEPLAY time. Frame-0
|
|
32
|
+
* (pre-gameplay) events land here too — acceptable, because the types
|
|
33
|
+
* classify judges (`player-death`, `match-end`) cannot fire pre-gameplay.
|
|
34
|
+
*/
|
|
35
|
+
earlyByType: Record<string, number>;
|
|
36
|
+
/** Gameplay seconds of the first `match-end`, or null when none fired. */
|
|
37
|
+
matchEndAtSeconds: number | null;
|
|
38
|
+
/** The last `MAX_RAW_EVENTS` events, in order. */
|
|
39
|
+
lastEvents: RawGameEvent[];
|
|
40
|
+
}
|
|
41
|
+
export declare function deriveEventsObservation(raw: unknown): EventsObservation | null;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deriving the semantic-events observation from what `window.__bmDebug.getEvents()`
|
|
3
|
+
* returned — pure, so it is testable without a browser (settle.ts precedent).
|
|
4
|
+
*
|
|
5
|
+
* The input crossed a `page.evaluate` boundary from an arbitrary engine
|
|
6
|
+
* version, so nothing about its shape is trusted: a non-array yields null
|
|
7
|
+
* ("not observed" — older vendored engine), and malformed entries are skipped
|
|
8
|
+
* individually rather than poisoning the run.
|
|
9
|
+
*/
|
|
10
|
+
/** The engine's eventlog clock rate — frame / 60 = seconds of gameplay. */
|
|
11
|
+
export const GAMEPLAY_FPS = 60;
|
|
12
|
+
/** How much early gameplay the "early" counts cover. */
|
|
13
|
+
export const EARLY_WINDOW_SECONDS = 10;
|
|
14
|
+
/** Raw-event tail kept in the record — enough to see what happened, small
|
|
15
|
+
* enough that result.json stays a summary rather than a transcript. */
|
|
16
|
+
export const MAX_RAW_EVENTS = 50;
|
|
17
|
+
export function deriveEventsObservation(raw) {
|
|
18
|
+
if (!Array.isArray(raw))
|
|
19
|
+
return null;
|
|
20
|
+
const events = [];
|
|
21
|
+
for (const entry of raw) {
|
|
22
|
+
const event = toRawGameEvent(entry);
|
|
23
|
+
if (event !== null)
|
|
24
|
+
events.push(event);
|
|
25
|
+
}
|
|
26
|
+
const totalByType = {};
|
|
27
|
+
const earlyByType = {};
|
|
28
|
+
const earlyWindowFrames = EARLY_WINDOW_SECONDS * GAMEPLAY_FPS;
|
|
29
|
+
let matchEndAtSeconds = null;
|
|
30
|
+
for (const event of events) {
|
|
31
|
+
totalByType[event.type] = (totalByType[event.type] ?? 0) + 1;
|
|
32
|
+
if (event.frame < earlyWindowFrames) {
|
|
33
|
+
earlyByType[event.type] = (earlyByType[event.type] ?? 0) + 1;
|
|
34
|
+
}
|
|
35
|
+
if (event.type === 'match-end' && matchEndAtSeconds === null) {
|
|
36
|
+
matchEndAtSeconds = Math.round((event.frame / GAMEPLAY_FPS) * 10) / 10;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
totalByType,
|
|
41
|
+
earlyByType,
|
|
42
|
+
matchEndAtSeconds,
|
|
43
|
+
lastEvents: events.slice(-MAX_RAW_EVENTS),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/** One entry, validated field by field; null for anything malformed. The
|
|
47
|
+
* engine already dropped `data` — dropped again here defensively. */
|
|
48
|
+
function toRawGameEvent(entry) {
|
|
49
|
+
if (typeof entry !== 'object' || entry === null)
|
|
50
|
+
return null;
|
|
51
|
+
const candidate = entry;
|
|
52
|
+
if (typeof candidate.frame !== 'number' || !Number.isFinite(candidate.frame))
|
|
53
|
+
return null;
|
|
54
|
+
if (typeof candidate.type !== 'string' || candidate.type === '')
|
|
55
|
+
return null;
|
|
56
|
+
const event = {
|
|
57
|
+
frame: candidate.frame,
|
|
58
|
+
type: candidate.type,
|
|
59
|
+
intensity: typeof candidate.intensity === 'number' ? candidate.intensity : 0,
|
|
60
|
+
};
|
|
61
|
+
if (isPositionTuple(candidate.position))
|
|
62
|
+
event.position = candidate.position;
|
|
63
|
+
if (typeof candidate.actor === 'string')
|
|
64
|
+
event.actor = candidate.actor;
|
|
65
|
+
return event;
|
|
66
|
+
}
|
|
67
|
+
function isPositionTuple(value) {
|
|
68
|
+
return Array.isArray(value)
|
|
69
|
+
&& value.length === 3
|
|
70
|
+
&& value.every((component) => typeof component === 'number' && Number.isFinite(component));
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/verify/events.ts"],"names":[],"mappings":"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"}
|
package/dist/verify/iterate.js
CHANGED
|
@@ -16,6 +16,7 @@ import { computeFingerprint } from '../publish/fingerprint.js';
|
|
|
16
16
|
import { VerifyBrowserSession, DEFAULT_START_INTERACTION } from './browser.js';
|
|
17
17
|
import { classifyVerifyRun } from './classify.js';
|
|
18
18
|
import { decideVerifyOutcome, writeVerifyRecord } from './result.js';
|
|
19
|
+
import { buildVerifyUrl } from './url.js';
|
|
19
20
|
/**
|
|
20
21
|
* Runs verify iterations one at a time. A change that lands mid-iteration queues exactly one
|
|
21
22
|
* follow-up — not one per change, because the follow-up will see all of them anyway.
|
|
@@ -81,7 +82,7 @@ export async function runVerifyWatch(options) {
|
|
|
81
82
|
// iteration that will re-verify it.
|
|
82
83
|
const fingerprint = computeFingerprint(options.root);
|
|
83
84
|
const checkOptions = {
|
|
84
|
-
url:
|
|
85
|
+
url: buildVerifyUrl(options.port, options.renderer),
|
|
85
86
|
screenshotPath: options.screenshotPath,
|
|
86
87
|
consolePath: options.consolePath,
|
|
87
88
|
settleMs: options.settleMs,
|
|
@@ -108,6 +109,7 @@ export async function runVerifyWatch(options) {
|
|
|
108
109
|
renderer: observations.renderer,
|
|
109
110
|
settle: observations.settle,
|
|
110
111
|
snapshot: observations.snapshot,
|
|
112
|
+
events: observations.events,
|
|
111
113
|
...(retriedWithSoftwareGl ? { retriedWithSoftwareGl } : {}),
|
|
112
114
|
});
|
|
113
115
|
// Recorded but never thrown: a failing iteration is information for the next edit, not the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iterate.js","sourceRoot":"","sources":["../../src/verify/iterate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAuB,MAAM,kBAAkB,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAA2B,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"iterate.js","sourceRoot":"","sources":["../../src/verify/iterate.ts"],"names":[],"mappings":"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"}
|
package/dist/verify/result.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { RendererObservation, SettleObservation, StateSnapshot, VerifyResult } from './classify.js';
|
|
2
|
+
import type { EventsObservation } from './events.js';
|
|
2
3
|
export declare const VERIFY_RESULT_FILENAME = "result.json";
|
|
3
4
|
/**
|
|
4
5
|
* What `bitmagic verify` observed, written so `bitmagic publish` can gate on it.
|
|
@@ -26,6 +27,9 @@ export interface VerifyRunRecord {
|
|
|
26
27
|
settle?: SettleObservation;
|
|
27
28
|
/** Live engine state at the end of the run — what the agent reads instead of pixels. */
|
|
28
29
|
snapshot?: StateSnapshot | null;
|
|
30
|
+
/** Semantic gameplay events (deaths, pickups, match-end) from the engine's `?eventlog=1`
|
|
31
|
+
* session; null when the engine predates it. Optional for the same cross-version reason. */
|
|
32
|
+
events?: EventsObservation | null;
|
|
29
33
|
}
|
|
30
34
|
export declare function writeVerifyRecord(artifactDir: string, record: VerifyRunRecord): void;
|
|
31
35
|
/**
|
|
@@ -46,7 +50,7 @@ export declare function readVerifyRecord(artifactDir: string): VerifyRunRecord |
|
|
|
46
50
|
* different messages and different remedies. Inside `run()` that ordering is only observable by
|
|
47
51
|
* spawning vite and a browser, which is why it went unguarded.
|
|
48
52
|
*/
|
|
49
|
-
export declare function decideVerifyOutcome(result: VerifyResult, fingerprint: string, at: string, extras?: Pick<VerifyRunRecord, 'renderer' | 'retriedWithSoftwareGl' | 'settle' | 'snapshot'>): {
|
|
53
|
+
export declare function decideVerifyOutcome(result: VerifyResult, fingerprint: string, at: string, extras?: Pick<VerifyRunRecord, 'renderer' | 'retriedWithSoftwareGl' | 'settle' | 'snapshot' | 'events'>): {
|
|
50
54
|
record: VerifyRunRecord;
|
|
51
55
|
shouldThrow: boolean;
|
|
52
56
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/verify/result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/verify/result.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { RendererChoice } from '../browser-gl.js';
|
|
2
|
+
/**
|
|
3
|
+
* The URL verify boots the game at — one place, because one-shot and watch
|
|
4
|
+
* mode were already building it separately and drift here is invisible until
|
|
5
|
+
* a run silently stops pinning the renderer or asking for the event session.
|
|
6
|
+
*
|
|
7
|
+
* `?renderer=` pins the pipeline so the verdict does not depend on a stale
|
|
8
|
+
* localStorage preference. `?eventlog=1` asks the engine to run a passive
|
|
9
|
+
* GameEventLog session for the semantic-events probe — an engine too old to
|
|
10
|
+
* know the param ignores it, and the probe then reads null ("not observed").
|
|
11
|
+
*/
|
|
12
|
+
export declare function buildVerifyUrl(port: number, renderer: RendererChoice): string;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The URL verify boots the game at — one place, because one-shot and watch
|
|
3
|
+
* mode were already building it separately and drift here is invisible until
|
|
4
|
+
* a run silently stops pinning the renderer or asking for the event session.
|
|
5
|
+
*
|
|
6
|
+
* `?renderer=` pins the pipeline so the verdict does not depend on a stale
|
|
7
|
+
* localStorage preference. `?eventlog=1` asks the engine to run a passive
|
|
8
|
+
* GameEventLog session for the semantic-events probe — an engine too old to
|
|
9
|
+
* know the param ignores it, and the probe then reads null ("not observed").
|
|
10
|
+
*/
|
|
11
|
+
export function buildVerifyUrl(port, renderer) {
|
|
12
|
+
return `http://localhost:${port}/?renderer=${renderer}&eventlog=1`;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url.js","sourceRoot":"","sources":["../../src/verify/url.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,QAAwB;IACnE,OAAO,oBAAoB,IAAI,cAAc,QAAQ,aAAa,CAAC;AACrE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitmagic/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.41",
|
|
4
4
|
"description": "Build Bitmagic games from your own agent tool",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -20,13 +20,14 @@
|
|
|
20
20
|
"playwright-core": "^1.59.1",
|
|
21
21
|
"tar": "^7.4.3",
|
|
22
22
|
"@bitmagic/asset-core": "0.1.2",
|
|
23
|
-
"@bitmagic/world-forger": "0.1.
|
|
23
|
+
"@bitmagic/world-forger": "0.1.5"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"@eslint/js": "^9.38.0",
|
|
27
27
|
"@types/jest": "^29.5.0",
|
|
28
28
|
"@types/node": "^24.9.1",
|
|
29
29
|
"@types/tar": "^6.1.13",
|
|
30
|
+
"@types/three": "^0.185.4",
|
|
30
31
|
"@typescript-eslint/eslint-plugin": "^8.46.2",
|
|
31
32
|
"@typescript-eslint/parser": "^8.46.2",
|
|
32
33
|
"eslint": "^9.38.0",
|