@bitmagic/asset-core 0.2.26-dev.2 → 0.2.26-dev.4

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.
@@ -11,11 +11,12 @@
11
11
  * What reads it: the cover and reference prompt builders (`cover-prompt.ts`,
12
12
  * `reference-prompt.ts`), the character generator (`voxelize`), the CLI's asset defaults
13
13
  * (`assets add`, `generate model|prop|character`), the judge's fallback art direction, the
14
- * engine's lighting/bloom presets, and the web agent's `generate-character` and
15
- * `generate-glb-asset` tools. The web lane WRITES it at creation: the Creator's template picker
16
- * and the planner (`PromptToGameController`) stamp it into game.json. What does NOT read it: the
17
- * World-Forger, which still bakes a voxel level, so the web agent has no way to author a low-poly
18
- * level.
14
+ * engine's lighting/bloom presets, and the web agent's `generate-character`,
15
+ * `generate-glb-asset` and `manage-achievements` (achievement art) tools. Both publish lanes
16
+ * mirror it into api-server's `games.art_style`, which the admin editor's cover generator reads. The web lane WRITES it at creation: the Creator's template picker
17
+ * and the planner (`PromptToGameController`) stamp it into game.json. The World-Forger reads it
18
+ * too (frozen as `ForgeJobInput.artStyle`): a low-poly forge keeps its level as meshes — a
19
+ * declared mesh level plus GLB objects — and refuses cities, dungeons, ships and interiors.
19
20
  *
20
21
  * Published as the `@bitmagic/asset-core/art-style` subpath so browser consumers can read
21
22
  * the enum without the root barrel's generators. No network, no node APIs.
@@ -1 +1 @@
1
- {"version":3,"file":"art-style.d.ts","sourceRoot":"","sources":["../src/art-style.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,eAAO,MAAM,UAAU,gCAAiC,CAAC;AACzD,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,kFAAkF;AAClF,eAAO,MAAM,iBAAiB,EAAE,QAAkB,CAAC;AAEnD,0FAA0F;AAC1F,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAElE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAOxD"}
1
+ {"version":3,"file":"art-style.d.ts","sourceRoot":"","sources":["../src/art-style.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,eAAO,MAAM,UAAU,gCAAiC,CAAC;AACzD,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,kFAAkF;AAClF,eAAO,MAAM,iBAAiB,EAAE,QAAkB,CAAC;AAEnD,0FAA0F;AAC1F,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAElE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAOxD"}
package/dist/art-style.js CHANGED
@@ -11,11 +11,12 @@
11
11
  * What reads it: the cover and reference prompt builders (`cover-prompt.ts`,
12
12
  * `reference-prompt.ts`), the character generator (`voxelize`), the CLI's asset defaults
13
13
  * (`assets add`, `generate model|prop|character`), the judge's fallback art direction, the
14
- * engine's lighting/bloom presets, and the web agent's `generate-character` and
15
- * `generate-glb-asset` tools. The web lane WRITES it at creation: the Creator's template picker
16
- * and the planner (`PromptToGameController`) stamp it into game.json. What does NOT read it: the
17
- * World-Forger, which still bakes a voxel level, so the web agent has no way to author a low-poly
18
- * level.
14
+ * engine's lighting/bloom presets, and the web agent's `generate-character`,
15
+ * `generate-glb-asset` and `manage-achievements` (achievement art) tools. Both publish lanes
16
+ * mirror it into api-server's `games.art_style`, which the admin editor's cover generator reads. The web lane WRITES it at creation: the Creator's template picker
17
+ * and the planner (`PromptToGameController`) stamp it into game.json. The World-Forger reads it
18
+ * too (frozen as `ForgeJobInput.artStyle`): a low-poly forge keeps its level as meshes — a
19
+ * declared mesh level plus GLB objects — and refuses cities, dungeons, ships and interiors.
19
20
  *
20
21
  * Published as the `@bitmagic/asset-core/art-style` subpath so browser consumers can read
21
22
  * the enum without the root barrel's generators. No network, no node APIs.
@@ -1 +1 @@
1
- {"version":3,"file":"art-style.js","sourceRoot":"","sources":["../src/art-style.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,UAAU,CAAU,CAAC;AAGzD,kFAAkF;AAClF,MAAM,CAAC,MAAM,iBAAiB,GAAa,OAAO,CAAC;AAEnD,0FAA0F;AAC1F,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;AACrD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAe;IAC9C,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,OAAO;YACV,OAAO,4GAA4G,CAAC;QACtH,KAAK,UAAU;YACb,OAAO,sJAAsJ,CAAC;IAClK,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"art-style.js","sourceRoot":"","sources":["../src/art-style.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,UAAU,CAAU,CAAC;AAGzD,kFAAkF;AAClF,MAAM,CAAC,MAAM,iBAAiB,GAAa,OAAO,CAAC;AAEnD,0FAA0F;AAC1F,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;AACrD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAe;IAC9C,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,OAAO;YACV,OAAO,4GAA4G,CAAC;QACtH,KAAK,UAAU;YACb,OAAO,sJAAsJ,CAAC;IAClK,CAAC;AACH,CAAC"}
@@ -0,0 +1,67 @@
1
+ import type { ForgerClient } from './types.js';
2
+ export interface BlenderLevelParams {
3
+ /** The level script's Python source, written against bmlevel as for the GDK. */
4
+ script: string;
5
+ /** Output name; asset ids are derived from it. */
6
+ name: string;
7
+ audit?: boolean;
8
+ review?: boolean;
9
+ }
10
+ interface AuditPass {
11
+ passed: boolean;
12
+ report: unknown;
13
+ log: string;
14
+ }
15
+ export interface BlenderLevelResult {
16
+ name: string;
17
+ glbUrl: string;
18
+ meshLevelUrl: string;
19
+ meshLevel: {
20
+ landmarks?: Array<{
21
+ name: string;
22
+ }>;
23
+ } & Record<string, unknown>;
24
+ doors: Array<{
25
+ id: string;
26
+ } & Record<string, unknown>>;
27
+ buildSeconds: number;
28
+ buildLog: string;
29
+ audit?: {
30
+ passed: boolean;
31
+ open: AuditPass;
32
+ closed: AuditPass;
33
+ };
34
+ contactSheetUrl?: string | null;
35
+ /** Which renderer made the contact sheet: EEVEE, or Cycles when EEVEE had no GL context. */
36
+ reviewEngine?: 'eevee' | 'cycles' | null;
37
+ reviewLog?: string;
38
+ }
39
+ /** The level part of a build: what `blenderLevelModifications` needs. */
40
+ export type BlenderBuiltLevel = Pick<BlenderLevelResult, 'name' | 'glbUrl' | 'meshLevelUrl' | 'meshLevel' | 'doors'>;
41
+ /** Build the level; throws with the forger's message (guard refusal, script error, timeout). */
42
+ export declare function buildBlenderLevel(forger: ForgerClient, params: BlenderLevelParams): Promise<BlenderLevelResult>;
43
+ export declare function blenderLevelAssetIds(name: string): {
44
+ glb: string;
45
+ json: string;
46
+ };
47
+ /** One `/api/edit-world-config` modification, in its HTTP shape. */
48
+ export type BlenderLevelModification = {
49
+ type: 'set';
50
+ path: string[];
51
+ value: unknown;
52
+ } | {
53
+ type: 'upsert' | 'upsertRoot';
54
+ path: string[];
55
+ predicateField: 'id';
56
+ predicateValue: string;
57
+ value: unknown;
58
+ };
59
+ /**
60
+ * The edits that make a built level the world, for `/api/edit-world-config`: no voxel ground, the
61
+ * GLB and level JSON registered as assets and declared as `worldProfileData.meshLevel`, each of
62
+ * the level's doors upserted into `doors[]` by id, and the player spawning at the level's `spawn`
63
+ * landmark when it has one. Surgical per-id upserts, so a rebuild replaces its own records only.
64
+ */
65
+ export declare function blenderLevelModifications(level: BlenderBuiltLevel, lighting?: 'interior' | 'exterior'): BlenderLevelModification[];
66
+ export {};
67
+ //# sourceMappingURL=blender-level.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blender-level.d.ts","sourceRoot":"","sources":["../src/blender-level.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAY/C,MAAM,WAAW,kBAAkB;IACjC,gFAAgF;IAChF,MAAM,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,SAAS;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE;QAAE,SAAS,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7E,KAAK,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACvD,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,SAAS,CAAA;KAAE,CAAC;IAChE,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,4FAA4F;IAC5F,YAAY,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,IAAI,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,yEAAyE;AACzE,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,EAAE,MAAM,GAAG,QAAQ,GAAG,cAAc,GAAG,WAAW,GAAG,OAAO,CAAC,CAAC;AAErH,gGAAgG;AAChG,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAKrH;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAEhF;AAED,oEAAoE;AACpE,MAAM,MAAM,wBAAwB,GAChC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,QAAQ,GAAG,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,cAAc,EAAE,IAAI,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAEpH;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,iBAAiB,EACxB,QAAQ,GAAE,UAAU,GAAG,UAAuB,GAC7C,wBAAwB,EAAE,CAmB5B"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * A low-poly level built server-side from a `bmlevel` script: the GDK's Blender lane
3
+ * (`cli/assets/blender-level/`), run by the Asset Forger's `/ai/v1/blender-level/jobs` in its
4
+ * headless Blender. The web agent now builds levels through `runBlenderScript` (blender-script.ts),
5
+ * whose results carry the same level shape; `blenderLevelModifications` serves both.
6
+ */
7
+ const JOBS_ENDPOINT = '/ai/v1/blender-level/jobs';
8
+ const JOB_TIMEOUT_MS = 5 * 60000;
9
+ /** Build the level; throws with the forger's message (guard refusal, script error, timeout). */
10
+ export async function buildBlenderLevel(forger, params) {
11
+ const result = await forger.postJobAndWait(JOBS_ENDPOINT, params, 'blender-level', {
12
+ overallTimeoutMs: JOB_TIMEOUT_MS,
13
+ });
14
+ return result.data;
15
+ }
16
+ export function blenderLevelAssetIds(name) {
17
+ return { glb: `level-${name}`, json: `level-${name}-json` };
18
+ }
19
+ /**
20
+ * The edits that make a built level the world, for `/api/edit-world-config`: no voxel ground, the
21
+ * GLB and level JSON registered as assets and declared as `worldProfileData.meshLevel`, each of
22
+ * the level's doors upserted into `doors[]` by id, and the player spawning at the level's `spawn`
23
+ * landmark when it has one. Surgical per-id upserts, so a rebuild replaces its own records only.
24
+ */
25
+ export function blenderLevelModifications(level, lighting = 'exterior') {
26
+ const ids = blenderLevelAssetIds(level.name);
27
+ const hasSpawn = (level.meshLevel.landmarks ?? []).some((l) => l.name === 'spawn');
28
+ return [
29
+ { type: 'upsertRoot', path: ['assets'], predicateField: 'id', predicateValue: ids.glb,
30
+ value: { id: ids.glb, name: level.name, url: level.glbUrl, type: 'glb' } },
31
+ { type: 'upsertRoot', path: ['assets'], predicateField: 'id', predicateValue: ids.json,
32
+ value: { id: ids.json, name: `${level.name} level`, url: level.meshLevelUrl, type: 'json' } },
33
+ { type: 'set', path: ['terrain'], value: { shape: 'none' } },
34
+ { type: 'set', path: ['meshLevel'], value: {
35
+ glbAssetId: ids.glb,
36
+ levelAssetId: ids.json,
37
+ lighting,
38
+ ...(hasSpawn ? { spawnLandmark: 'spawn' } : {}),
39
+ } },
40
+ ...level.doors.map((door) => ({
41
+ type: 'upsert', path: ['doors'], predicateField: 'id', predicateValue: door.id, value: door,
42
+ })),
43
+ ];
44
+ }
45
+ //# sourceMappingURL=blender-level.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blender-level.js","sourceRoot":"","sources":["../src/blender-level.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,MAAM,aAAa,GAAG,2BAA2B,CAAC;AAClD,MAAM,cAAc,GAAG,CAAC,GAAG,KAAM,CAAC;AAmClC,gGAAgG;AAChG,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAoB,EAAE,MAA0B;IACtF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAA+B,aAAa,EAAE,MAAM,EAAE,eAAe,EAAE;QAC/G,gBAAgB,EAAE,cAAc;KACjC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,OAAO,EAAE,GAAG,EAAE,SAAS,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,IAAI,OAAO,EAAE,CAAC;AAC9D,CAAC;AAOD;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAAwB,EACxB,WAAoC,UAAU;IAE9C,MAAM,GAAG,GAAG,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IACnF,OAAO;QACL,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,GAAG;YACnF,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QAC5E,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,IAAI;YACpF,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;QAC/F,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC5D,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE;gBACzC,UAAU,EAAE,GAAG,CAAC,GAAG;gBACnB,YAAY,EAAE,GAAG,CAAC,IAAI;gBACtB,QAAQ;gBACR,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAChD,EAAE;QACH,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAA4B,EAAE,CAAC,CAAC;YACtD,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI;SAC5F,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,48 @@
1
+ import type { ForgerClient } from './types.js';
2
+ import type { BlenderBuiltLevel } from './blender-level.js';
3
+ export interface BlenderScriptInput {
4
+ /** The id the script loads it by: the game's asset id (`ground` for the mesh level's GLB). */
5
+ id: string;
6
+ url: string;
7
+ }
8
+ export interface BlenderScriptParams {
9
+ script: string;
10
+ /** File stem of a bmlevel level the script builds; asset ids are derived from it. */
11
+ name?: string;
12
+ inputs?: BlenderScriptInput[];
13
+ /** Audit a bmlevel level with doors open and closed. */
14
+ audit?: boolean;
15
+ /** Render contact sheets of the level and the exported assets. */
16
+ review?: boolean;
17
+ }
18
+ export interface BlenderScriptAsset {
19
+ id: string;
20
+ glbUrl: string;
21
+ /** The exported meshes' real height in metres. */
22
+ targetHeight: number;
23
+ triangles: number;
24
+ }
25
+ interface AuditPass {
26
+ passed: boolean;
27
+ report: unknown;
28
+ log: string;
29
+ }
30
+ export interface BlenderScriptResult {
31
+ assets: BlenderScriptAsset[];
32
+ level?: BlenderBuiltLevel;
33
+ audit?: {
34
+ passed: boolean;
35
+ open: AuditPass;
36
+ closed: AuditPass;
37
+ };
38
+ buildSeconds: number;
39
+ buildLog: string;
40
+ levelSheetUrl?: string | null;
41
+ assetSheetUrl?: string | null;
42
+ reviewEngine?: 'eevee' | 'cycles' | null;
43
+ reviewLog?: string;
44
+ }
45
+ /** Run the script; throws with the forger's message (guard refusal, script error, timeout). */
46
+ export declare function runBlenderScript(forger: ForgerClient, params: BlenderScriptParams): Promise<BlenderScriptResult>;
47
+ export {};
48
+ //# sourceMappingURL=blender-script.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blender-script.d.ts","sourceRoot":"","sources":["../src/blender-script.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAa5D,MAAM,WAAW,kBAAkB;IACjC,8FAA8F;IAC9F,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,qFAAqF;IACrF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC9B,wDAAwD;IACxD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kEAAkE;IAClE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,SAAS;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,KAAK,CAAC,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,SAAS,CAAA;KAAE,CAAC;IAChE,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,YAAY,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,IAAI,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,+FAA+F;AAC/F,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAKtH"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * An agent-written Blender script run server-side: the Asset Forger's
3
+ * `/ai/v1/blender-script/jobs`, the web counterpart of the GDK's local Blender lane. One script may
4
+ * edit the game's own GLBs (`inputs`, loaded with bmedit's `load(id)`), make new props (bmedit's
5
+ * `export(id, ...)`) and build one bmlevel level (`cli/assets/blender-level/`). The forger refuses
6
+ * a script that reaches past bpy / bmesh / mathutils mesh work before Blender runs it.
7
+ */
8
+ const JOBS_ENDPOINT = '/ai/v1/blender-script/jobs';
9
+ const JOB_TIMEOUT_MS = 5 * 60000;
10
+ /** Run the script; throws with the forger's message (guard refusal, script error, timeout). */
11
+ export async function runBlenderScript(forger, params) {
12
+ const result = await forger.postJobAndWait(JOBS_ENDPOINT, params, 'blender-script', {
13
+ overallTimeoutMs: JOB_TIMEOUT_MS,
14
+ });
15
+ return result.data;
16
+ }
17
+ //# sourceMappingURL=blender-script.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blender-script.js","sourceRoot":"","sources":["../src/blender-script.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AAEH,MAAM,aAAa,GAAG,4BAA4B,CAAC;AACnD,MAAM,cAAc,GAAG,CAAC,GAAG,KAAM,CAAC;AA6ClC,+FAA+F;AAC/F,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAoB,EAAE,MAA2B;IACtF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAgC,aAAa,EAAE,MAAM,EAAE,gBAAgB,EAAE;QACjH,gBAAgB,EAAE,cAAc;KACjC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
@@ -11,14 +11,14 @@ export declare const blockTypeParamsSchema: z.ZodObject<{
11
11
  sideDescription: z.ZodOptional<z.ZodString>;
12
12
  referenceImageUrl: z.ZodOptional<z.ZodString>;
13
13
  }, "strict", z.ZodTypeAny, {
14
- description: string;
15
14
  name: string;
15
+ description: string;
16
16
  referenceImageUrl?: string | undefined;
17
17
  displayName?: string | undefined;
18
18
  sideDescription?: string | undefined;
19
19
  }, {
20
- description: string;
21
20
  name: string;
21
+ description: string;
22
22
  referenceImageUrl?: string | undefined;
23
23
  displayName?: string | undefined;
24
24
  sideDescription?: string | undefined;
package/dist/index.d.ts CHANGED
@@ -3,6 +3,10 @@ export { buildUpsertPredicate, isUpsertRootPatch, validateWorldPatch } from './w
3
3
  export { fail, ok } from './result.js';
4
4
  export { AssetForgerClient, } from './forger-client.js';
5
5
  export type { AssetForgerCredentials } from './forger-client.js';
6
+ export { blenderLevelAssetIds, blenderLevelModifications, buildBlenderLevel } from './blender-level.js';
7
+ export type { BlenderBuiltLevel, BlenderLevelModification, BlenderLevelParams, BlenderLevelResult } from './blender-level.js';
8
+ export { runBlenderScript } from './blender-script.js';
9
+ export type { BlenderScriptAsset, BlenderScriptInput, BlenderScriptParams, BlenderScriptResult } from './blender-script.js';
6
10
  export { generateSkybox, skyboxParamsSchema } from './generators/skybox.js';
7
11
  export type { SkyboxParams, SkyboxResult } from './generators/skybox.js';
8
12
  export { generateBackground, backgroundParamsSchema } from './generators/background.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,6 +1,8 @@
1
1
  export { buildUpsertPredicate, isUpsertRootPatch, validateWorldPatch } from './world-patch.js';
2
2
  export { fail, ok } from './result.js';
3
3
  export { AssetForgerClient, } from './forger-client.js';
4
+ export { blenderLevelAssetIds, blenderLevelModifications, buildBlenderLevel } from './blender-level.js';
5
+ export { runBlenderScript } from './blender-script.js';
4
6
  export { generateSkybox, skyboxParamsSchema } from './generators/skybox.js';
5
7
  export { generateBackground, backgroundParamsSchema } from './generators/background.js';
6
8
  export { generateBlockType, blockTypeParamsSchema } from './generators/block-type.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EACL,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5E,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAExF,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEtF,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAE5F,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEpI,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAEnF,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,eAAe,EACf,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,4BAA4B,EAC5B,yBAAyB,EACzB,iCAAiC,EACjC,uBAAuB,EACvB,cAAc,GACf,MAAM,mCAAmC,CAAC;AAW3C,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAClG,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExF,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEvG,OAAO,EACL,qBAAqB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EACvG,mBAAmB,EAAE,sBAAsB,GAC5C,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AAKnG,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,2BAA2B,EAC3B,gCAAgC,EAChC,gCAAgC,EAChC,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,+BAA+B,EAC/B,8BAA8B,EAC9B,4BAA4B,EAC5B,iCAAiC,EACjC,iCAAiC,EACjC,gBAAgB,EAChB,yBAAyB,EACzB,2BAA2B,EAC3B,kCAAkC,EAClC,qCAAqC,EACrC,+BAA+B,EAC/B,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACrB,yBAAyB,EACzB,6BAA6B,EAC7B,uBAAuB,GACxB,MAAM,sCAAsC,CAAC;AAU9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,SAAS,EACT,SAAS,GACV,MAAM,mBAAmB,CAAC;AAC3B,wFAAwF;AACxF,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEhG,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAC9F,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,6BAA6B,EAC7B,sBAAsB,EACtB,2BAA2B,EAC3B,sBAAsB,EACtB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,kCAAkC,EAClC,yBAAyB,EACzB,+BAA+B,EAC/B,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,6BAA6B,EAC7B,8BAA8B,EAC9B,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAOlC,4EAA4E;AAC5E,gFAAgF;AAChF,6EAA6E;AAC7E,8EAA8E;AAC9E,YAAY;AACZ,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,WAAW,EACX,QAAQ,EACR,aAAa,EACb,YAAY,GACb,MAAM,kBAAkB,CAAC;AAO1B,oEAAoE;AACpE,gFAAgF;AAChF,gFAAgF;AAChF,oEAAoE;AACpE,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** Shared GTM bootstrap for published games in both the Creator and CLI lanes. */
2
+ export declare const PUBLISH_ANALYTICS_HEAD = "<!-- Google Tag Manager -->\n<script>\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n version: \"3.0\",\n });\n (function (w, d, s, l, i) {\n w[l] = w[l] || [];\n w[l].push({ \"gtm.start\": new Date().getTime(), event: \"gtm.js\" });\n var f = d.getElementsByTagName(s)[0],\n j = d.createElement(s),\n dl = l != \"dataLayer\" ? \"&l=\" + l : \"\";\n j.async = true;\n j.src = \"https://www.googletagmanager.com/gtm.js?id=\" + i + dl;\n f.parentNode.insertBefore(j, f);\n })(window, document, \"script\", \"dataLayer\", \"GTM-W52M6DL2\");\n</script>\n<!-- End Google Tag Manager -->";
3
+ //# sourceMappingURL=publish-analytics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish-analytics.d.ts","sourceRoot":"","sources":["../src/publish-analytics.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,eAAO,MAAM,sBAAsB,yrBAiBH,CAAC"}
@@ -0,0 +1,20 @@
1
+ /** Shared GTM bootstrap for published games in both the Creator and CLI lanes. */
2
+ export const PUBLISH_ANALYTICS_HEAD = `<!-- Google Tag Manager -->
3
+ <script>
4
+ window.dataLayer = window.dataLayer || [];
5
+ window.dataLayer.push({
6
+ version: "3.0",
7
+ });
8
+ (function (w, d, s, l, i) {
9
+ w[l] = w[l] || [];
10
+ w[l].push({ "gtm.start": new Date().getTime(), event: "gtm.js" });
11
+ var f = d.getElementsByTagName(s)[0],
12
+ j = d.createElement(s),
13
+ dl = l != "dataLayer" ? "&l=" + l : "";
14
+ j.async = true;
15
+ j.src = "https://www.googletagmanager.com/gtm.js?id=" + i + dl;
16
+ f.parentNode.insertBefore(j, f);
17
+ })(window, document, "script", "dataLayer", "GTM-W52M6DL2");
18
+ </script>
19
+ <!-- End Google Tag Manager -->`;
20
+ //# sourceMappingURL=publish-analytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish-analytics.js","sourceRoot":"","sources":["../src/publish-analytics.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;gCAiBN,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bitmagic/asset-core",
3
- "version": "0.2.26-dev.2",
3
+ "version": "0.2.26-dev.4",
4
4
  "license": "SEE LICENSE IN LICENSE.md",
5
5
  "author": "Bitmagic Oy",
6
6
  "type": "module",
@@ -27,6 +27,10 @@
27
27
  "types": "./dist/publish-source.d.ts",
28
28
  "default": "./dist/publish-source.js"
29
29
  },
30
+ "./publish-analytics": {
31
+ "types": "./dist/publish-analytics.d.ts",
32
+ "default": "./dist/publish-analytics.js"
33
+ },
30
34
  "./art-style": {
31
35
  "types": "./dist/art-style.d.ts",
32
36
  "default": "./dist/art-style.js"