@bitmagic/asset-core 0.2.7-dev.10 → 0.2.7-dev.12

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.
@@ -1 +1 @@
1
- {"version":3,"file":"block-type.d.ts","sourceRoot":"","sources":["../../src/generators/block-type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIjE;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;EAWvB,CAAC;AAEZ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAmDF,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,eAAe,CAAC,CA4H1B"}
1
+ {"version":3,"file":"block-type.d.ts","sourceRoot":"","sources":["../../src/generators/block-type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIjE;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;EAWvB,CAAC;AAEZ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAmEF,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,eAAe,CAAC,CA+G1B"}
@@ -53,6 +53,21 @@ CRITICAL REQUIREMENTS:
53
53
  - No text, labels, or watermarks
54
54
  - Flat lighting, minimal shading`;
55
55
  }
56
+ /**
57
+ * One texture request. The top and side calls differ only in their description and in whether a
58
+ * reference image styles them, so the size and sampling settings are written once — the two
59
+ * drifting apart would give one face of a block a different look for no stated reason.
60
+ */
61
+ function textureRequest(description, referenceImageUrl) {
62
+ return {
63
+ prompt: buildPrompt(description),
64
+ height: TEXTURE_PIXELS,
65
+ width: TEXTURE_PIXELS,
66
+ numImages: 1,
67
+ guidanceScale: 1.0,
68
+ ...(referenceImageUrl ? { referenceImageUrl } : {}),
69
+ };
70
+ }
56
71
  /** `mossy_brick` -> `Mossy Brick`, matching the agent lane's derivation exactly. */
57
72
  function deriveDisplayName(name) {
58
73
  return name.replace(/_/g, ' ').replace(/\b\w/g, (character) => character.toUpperCase());
@@ -80,14 +95,7 @@ export async function generateBlockType(params, deps) {
80
95
  logger.info(`[block-type] Starting generation for "${input.name}": "${input.description}"${input.referenceImageUrl ? ' (with reference image)' : ''}`);
81
96
  let textureUrl;
82
97
  try {
83
- const response = await forger.post(ENDPOINT, {
84
- prompt: buildPrompt(input.description),
85
- height: TEXTURE_PIXELS,
86
- width: TEXTURE_PIXELS,
87
- numImages: 1,
88
- guidanceScale: 1.0,
89
- ...(input.referenceImageUrl ? { referenceImageUrl: input.referenceImageUrl } : {}),
90
- }, 'block-type');
98
+ const response = await forger.post(ENDPOINT, textureRequest(input.description, input.referenceImageUrl), 'block-type');
91
99
  if (!response.imageUrl) {
92
100
  // Billable: the Forger ran the job and was paid for it, whatever it answered.
93
101
  return { ...fail('Asset Forger returned no block texture URL'), billable: true };
@@ -107,13 +115,7 @@ export async function generateBlockType(params, deps) {
107
115
  if (input.sideDescription !== undefined) {
108
116
  onProgress(`Generating side texture: ${input.sideDescription}`);
109
117
  try {
110
- const sideResponse = await forger.post(ENDPOINT, {
111
- prompt: buildPrompt(input.sideDescription),
112
- height: TEXTURE_PIXELS,
113
- width: TEXTURE_PIXELS,
114
- numImages: 1,
115
- guidanceScale: 1.0,
116
- }, 'block-type');
118
+ const sideResponse = await forger.post(ENDPOINT, textureRequest(input.sideDescription), 'block-type');
117
119
  if (sideResponse.imageUrl) {
118
120
  sideTextureUrl = sideResponse.imageUrl;
119
121
  }
@@ -1 +1 @@
1
- {"version":3,"file":"block-type.js","sourceRoot":"","sources":["../../src/generators/block-type.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"block-type.js","sourceRoot":"","sources":["../../src/generators/block-type.ts"],"names":[],"mappings":"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"}
@@ -10,17 +10,17 @@ export declare const imageAssetParamsSchema: z.ZodObject<{
10
10
  }, "strict", z.ZodTypeAny, {
11
11
  name: string;
12
12
  prompt: string;
13
- width: number;
14
13
  height: number;
14
+ width: number;
15
15
  referenceImageUrl?: string | undefined;
16
16
  assetId?: string | undefined;
17
17
  }, {
18
18
  name: string;
19
19
  prompt: string;
20
20
  referenceImageUrl?: string | undefined;
21
- assetId?: string | undefined;
22
- width?: number | undefined;
23
21
  height?: number | undefined;
22
+ width?: number | undefined;
23
+ assetId?: string | undefined;
24
24
  }>;
25
25
  /**
26
26
  * The schema's INPUT type — callers may omit the defaulted dimensions. The
package/dist/index.d.ts CHANGED
@@ -25,7 +25,7 @@ export { fetchContentLength } from './http.js';
25
25
  export { PIXAR_VOXEL_STYLE, MAX_COVER_DESIGN_CHARS, buildCoverArtPrompt } from './cover-prompt.js';
26
26
  export { JUDGE_DIMENSIONS, judgeScorecardSchema } from './judge-scorecard.js';
27
27
  export type { JudgeDimension, JudgeScorecard } from './judge-scorecard.js';
28
- export { JUDGE_GENRE_HINTS, JUDGE_RUBRIC, MAX_JUDGE_DESIGN_CHARS, MAX_JUDGE_SCENE_FACTS_CHARS, MAX_JUDGE_VERIFY_CHARS, buildJudgeRubric, } from './judge-prompt.js';
28
+ export { JUDGE_GENRE_HINTS, JUDGE_MOBILE_HINT, JUDGE_RUBRIC, MAX_JUDGE_DESIGN_CHARS, MAX_JUDGE_SCENE_FACTS_CHARS, MAX_JUDGE_VERIFY_CHARS, buildJudgeRubric, } from './judge-prompt.js';
29
29
  export type { JudgeRubricInput } from './judge-prompt.js';
30
30
  export { TERMINAL_FAILURE_CODES, TERMINAL_FAILURE_VERSION, buildTerminalFailure, isTerminalFailureCode, legacyErrorTypeFor, parseTerminalFailure, } from './terminal-failure.js';
31
31
  export type { BuildTerminalFailureInput, LegacyErrorType, TerminalFailure, TerminalFailureCode, TerminalFailureDetail, } from './terminal-failure.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,eAAe,EACf,UAAU,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,YAAY,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5E,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACxF,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACtF,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC5F,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACnF,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACrF,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACtE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACvG,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AACnF,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,2BAA2B,EAC3B,gCAAgC,EAChC,gCAAgC,EAChC,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACnG,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC9E,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,sBAAsB,EACtB,2BAA2B,EAC3B,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAM1D,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,yBAAyB,EACzB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,eAAe,EACf,UAAU,EACV,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,YAAY,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5E,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACxF,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACtF,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC5F,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACnF,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACrF,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACtE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACvG,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AACnF,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,2BAA2B,EAC3B,gCAAgC,EAChC,gCAAgC,EAChC,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACnG,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC9E,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,sBAAsB,EACtB,2BAA2B,EAC3B,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAM1D,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,yBAAyB,EACzB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC"}
package/dist/index.js CHANGED
@@ -13,7 +13,7 @@ export { generateAnimationAsset, animationParamsSchema, getConfiguredAnimationMo
13
13
  export { fetchContentLength } from './http.js';
14
14
  export { PIXAR_VOXEL_STYLE, MAX_COVER_DESIGN_CHARS, buildCoverArtPrompt } from './cover-prompt.js';
15
15
  export { JUDGE_DIMENSIONS, judgeScorecardSchema } from './judge-scorecard.js';
16
- export { JUDGE_GENRE_HINTS, JUDGE_RUBRIC, MAX_JUDGE_DESIGN_CHARS, MAX_JUDGE_SCENE_FACTS_CHARS, MAX_JUDGE_VERIFY_CHARS, buildJudgeRubric, } from './judge-prompt.js';
16
+ export { JUDGE_GENRE_HINTS, JUDGE_MOBILE_HINT, JUDGE_RUBRIC, MAX_JUDGE_DESIGN_CHARS, MAX_JUDGE_SCENE_FACTS_CHARS, MAX_JUDGE_VERIFY_CHARS, buildJudgeRubric, } from './judge-prompt.js';
17
17
  // The agent↔client terminal-failure contract. Also published as the
18
18
  // `@bitmagic/asset-core/terminal-failure` subpath: this barrel eagerly pulls in
19
19
  // the generators (and therefore zod, the forger client, and node http helpers),
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,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,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAEnF,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAErF,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEvG,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,2BAA2B,EAC3B,gCAAgC,EAChC,gCAAgC,EAChC,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACnG,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE9E,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,sBAAsB,EACtB,2BAA2B,EAC3B,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAG3B,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":"AASA,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,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,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAEnF,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAErF,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEvG,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,2BAA2B,EAC3B,gCAAgC,EAChC,gCAAgC,EAChC,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACnG,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE9E,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,sBAAsB,EACtB,2BAA2B,EAC3B,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAG3B,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"}
@@ -21,6 +21,19 @@ export declare const MAX_JUDGE_SCENE_FACTS_CHARS = 2500;
21
21
  * not gameplay.
22
22
  */
23
23
  export declare const JUDGE_RUBRIC = "Score each dimension from 1 to 10:\n\n- visual-quality: Does the frame look like a finished game? 3 = flat default\n materials, untextured primitives, harsh unshadowed lighting. 8 = cohesive\n palette, deliberate lighting, materials and shapes that read as one art style.\n- readability: Could a new player tell from this frame alone what to do and\n where to go? 3 = player, goals and hazards blend into the background. 8 = the\n player character, the route and the interactive elements pop at a glance.\n- design-fidelity: Does the frame match the game the design document describes?\n 3 = generic scene that could be any game. 8 = the described setting, mood and\n core mechanic are recognizably on screen.\n- polish: 3 = placeholder blocks, floating or intersecting props, empty default\n skybox, raw default HUD. 8 = grounded objects, dressed edges of the world,\n HUD that belongs to this game.";
24
+ /**
25
+ * What changes when the frame is a phone screenshot rather than a desktop one.
26
+ *
27
+ * It adds no dimension — the scorecard schema is fixed (judge-scorecard.ts) and a fifth score
28
+ * would not survive the wire contract. What it does is re-point the EXISTING dimensions at a
29
+ * screen held in a hand: `readability` becomes "can a thumb reach this and can an eye read it at
30
+ * this size", and `visual-quality`/`polish` become "what detail actually survives here".
31
+ *
32
+ * The last paragraph is the load-bearing one. Without it a vision model reliably reports the
33
+ * touch controls themselves as clutter and the missing key hints as a defect, which is exactly
34
+ * backwards — those controls are the mobile build working.
35
+ */
36
+ export declare const JUDGE_MOBILE_HINT = "This frame is a PHONE screen, captured at the phone's own\nresolution with the game's touch controls live on top of it. Judge it as something held in one or\ntwo hands \u2014 the same dimensions, read differently:\n\n- readability: are the touch controls (joystick, action buttons) actually visible against the\n scene, and big enough to hit with a thumb? Is the HUD legible at THIS size, not merely present?\n Is anything the player must read or press sitting where a hand covers it, or jammed into the\n very edge of the screen?\n- visual-quality and polish: grade the detail that survives at this resolution. Detail too small\n to make out here is not detail the player gets.\n- Judge the framing this aspect ratio gives: does the camera show enough of the world ahead of\n the player to actually play, or is the important part cropped away?\n\nDo not penalise missing desktop affordances \u2014 key hints, mouse or crosshair cues and hover states\nbelong to the other platform. Do not report the touch controls themselves as clutter unless they\ncover something the player needs to see.";
24
37
  /**
25
38
  * Genre-specific bullets, keyed loosely on the engine's mechanic recipe names
26
39
  * (mechanic-platformer.md and friends). Deliberately short: these steer the
@@ -33,6 +46,11 @@ export interface JudgeRubricInput {
33
46
  designText: string;
34
47
  /** Optional genre key; unknown keys are ignored. */
35
48
  genre?: string;
49
+ /**
50
+ * Which platform's frame is being judged. 'mobile' adds JUDGE_MOBILE_HINT; anything else, and
51
+ * absence, compose exactly the rubric that was composed before this existed.
52
+ */
53
+ platform?: 'desktop' | 'mobile';
36
54
  /** One-paragraph verify summary: run state plus a console tail. */
37
55
  verifySummary?: string;
38
56
  /**
@@ -49,5 +67,5 @@ export interface JudgeRubricInput {
49
67
  * the text part alongside the screenshot(s); the server prepends its fixed
50
68
  * judging instructions and appends the JSON output directive.
51
69
  */
52
- export declare function buildJudgeRubric({ designText, genre, verifySummary, sceneFacts }: JudgeRubricInput): string;
70
+ export declare function buildJudgeRubric({ designText, genre, platform, verifySummary, sceneFacts, }: JudgeRubricInput): string;
53
71
  //# sourceMappingURL=judge-prompt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"judge-prompt.d.ts","sourceRoot":"","sources":["../src/judge-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,yEAAyE;AACzE,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAE3C,4EAA4E;AAC5E,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAE3C,yDAAyD;AACzD,eAAO,MAAM,2BAA2B,OAAO,CAAC;AAEhD;;;;;GAKG;AACH,eAAO,MAAM,YAAY,i5BAaQ,CAAC;AAElC;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAmBpD,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,+DAA+D;IAC/D,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAOD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,EAAE,gBAAgB,GAAG,MAAM,CAmC3G"}
1
+ {"version":3,"file":"judge-prompt.d.ts","sourceRoot":"","sources":["../src/judge-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,yEAAyE;AACzE,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAE3C,4EAA4E;AAC5E,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAE3C,yDAAyD;AACzD,eAAO,MAAM,2BAA2B,OAAO,CAAC;AAEhD;;;;;GAKG;AACH,eAAO,MAAM,YAAY,i5BAaQ,CAAC;AAElC;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,4kCAeW,CAAC;AAE1C;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAmBpD,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,+DAA+D;IAC/D,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAChC,mEAAmE;IACnE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAOD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,UAAU,EACV,KAAK,EACL,QAAQ,EACR,aAAa,EACb,UAAU,GACX,EAAE,gBAAgB,GAAG,MAAM,CAuC3B"}
@@ -35,6 +35,34 @@ export const JUDGE_RUBRIC = `Score each dimension from 1 to 10:
35
35
  - polish: 3 = placeholder blocks, floating or intersecting props, empty default
36
36
  skybox, raw default HUD. 8 = grounded objects, dressed edges of the world,
37
37
  HUD that belongs to this game.`;
38
+ /**
39
+ * What changes when the frame is a phone screenshot rather than a desktop one.
40
+ *
41
+ * It adds no dimension — the scorecard schema is fixed (judge-scorecard.ts) and a fifth score
42
+ * would not survive the wire contract. What it does is re-point the EXISTING dimensions at a
43
+ * screen held in a hand: `readability` becomes "can a thumb reach this and can an eye read it at
44
+ * this size", and `visual-quality`/`polish` become "what detail actually survives here".
45
+ *
46
+ * The last paragraph is the load-bearing one. Without it a vision model reliably reports the
47
+ * touch controls themselves as clutter and the missing key hints as a defect, which is exactly
48
+ * backwards — those controls are the mobile build working.
49
+ */
50
+ export const JUDGE_MOBILE_HINT = `This frame is a PHONE screen, captured at the phone's own
51
+ resolution with the game's touch controls live on top of it. Judge it as something held in one or
52
+ two hands — the same dimensions, read differently:
53
+
54
+ - readability: are the touch controls (joystick, action buttons) actually visible against the
55
+ scene, and big enough to hit with a thumb? Is the HUD legible at THIS size, not merely present?
56
+ Is anything the player must read or press sitting where a hand covers it, or jammed into the
57
+ very edge of the screen?
58
+ - visual-quality and polish: grade the detail that survives at this resolution. Detail too small
59
+ to make out here is not detail the player gets.
60
+ - Judge the framing this aspect ratio gives: does the camera show enough of the world ahead of
61
+ the player to actually play, or is the important part cropped away?
62
+
63
+ Do not penalise missing desktop affordances — key hints, mouse or crosshair cues and hover states
64
+ belong to the other platform. Do not report the touch controls themselves as clutter unless they
65
+ cover something the player needs to see.`;
38
66
  /**
39
67
  * Genre-specific bullets, keyed loosely on the engine's mechanic recipe names
40
68
  * (mechanic-platformer.md and friends). Deliberately short: these steer the
@@ -70,8 +98,12 @@ function excerpt(text, maxChars) {
70
98
  * the text part alongside the screenshot(s); the server prepends its fixed
71
99
  * judging instructions and appends the JSON output directive.
72
100
  */
73
- export function buildJudgeRubric({ designText, genre, verifySummary, sceneFacts }) {
101
+ export function buildJudgeRubric({ designText, genre, platform, verifySummary, sceneFacts, }) {
74
102
  const sections = [JUDGE_RUBRIC];
103
+ // Immediately after the rubric it modifies, and before the genre hints: a small model weights
104
+ // early context most, and "this is a phone" changes how every bullet above should be read.
105
+ if (platform === 'mobile')
106
+ sections.push(JUDGE_MOBILE_HINT);
75
107
  const genreKey = genre?.trim().toLowerCase() ?? '';
76
108
  const genreHints = JUDGE_GENRE_HINTS[genreKey];
77
109
  if (genreHints) {
@@ -1 +1 @@
1
- {"version":3,"file":"judge-prompt.js","sourceRoot":"","sources":["../src/judge-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,yEAAyE;AACzE,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAE3C,4EAA4E;AAC5E,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAE3C,yDAAyD;AACzD,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;iCAaK,CAAC;AAElC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAA2B;IACvD,UAAU,EAAE;;yEAE2D;IACvE,MAAM,EAAE;;8DAEoD;IAC5D,OAAO,EAAE;;sDAE2C;IACpD,MAAM,EAAE;;mDAEyC;IACjD,OAAO,EAAE;;2DAEgD;IACzD,eAAe,EAAE;;mCAEgB;CAClC,CAAC;AAmBF,kFAAkF;AAClF,SAAS,OAAO,CAAC,IAAwB,EAAE,QAAgB;IACzD,OAAO,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC/C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAoB;IACjG,MAAM,QAAQ,GAAa,CAAC,YAAY,CAAC,CAAC;IAE1C,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;IACnD,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAI,UAAU,EAAE,CAAC;QACf,QAAQ,CAAC,IAAI,CAAC,0BAA0B,QAAQ,OAAO,UAAU,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,sBAAsB,CAAC,CAAC;IAC3D,QAAQ,CAAC,IAAI,CACX,MAAM;QACJ,CAAC,CAAC,qEAAqE,MAAM,EAAE;QAC/E,CAAC,CAAC,yJAAyJ,CAC9J,CAAC;IAEF,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,EAAE,2BAA2B,CAAC,CAAC;IAC/D,IAAI,KAAK,EAAE,CAAC;QACV,QAAQ,CAAC,IAAI,CACX,6FAA6F;cACzF,gFAAgF;cAChF,0EAA0E,KAAK,EAAE,CACtF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC;IAC9D,IAAI,MAAM,EAAE,CAAC;QACX,QAAQ,CAAC,IAAI,CAAC,+DAA+D,MAAM,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,QAAQ,CAAC,IAAI,CACX,gMAAgM,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC/N,CAAC;IAEF,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"judge-prompt.js","sourceRoot":"","sources":["../src/judge-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,yEAAyE;AACzE,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAE3C,4EAA4E;AAC5E,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAE3C,yDAAyD;AACzD,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;iCAaK,CAAC;AAElC;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;yCAeQ,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAA2B;IACvD,UAAU,EAAE;;yEAE2D;IACvE,MAAM,EAAE;;8DAEoD;IAC5D,OAAO,EAAE;;sDAE2C;IACpD,MAAM,EAAE;;mDAEyC;IACjD,OAAO,EAAE;;2DAEgD;IACzD,eAAe,EAAE;;mCAEgB;CAClC,CAAC;AAwBF,kFAAkF;AAClF,SAAS,OAAO,CAAC,IAAwB,EAAE,QAAgB;IACzD,OAAO,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC/C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAC/B,UAAU,EACV,KAAK,EACL,QAAQ,EACR,aAAa,EACb,UAAU,GACO;IACjB,MAAM,QAAQ,GAAa,CAAC,YAAY,CAAC,CAAC;IAE1C,8FAA8F;IAC9F,2FAA2F;IAC3F,IAAI,QAAQ,KAAK,QAAQ;QAAE,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAE5D,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;IACnD,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAI,UAAU,EAAE,CAAC;QACf,QAAQ,CAAC,IAAI,CAAC,0BAA0B,QAAQ,OAAO,UAAU,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,sBAAsB,CAAC,CAAC;IAC3D,QAAQ,CAAC,IAAI,CACX,MAAM;QACJ,CAAC,CAAC,qEAAqE,MAAM,EAAE;QAC/E,CAAC,CAAC,yJAAyJ,CAC9J,CAAC;IAEF,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,EAAE,2BAA2B,CAAC,CAAC;IAC/D,IAAI,KAAK,EAAE,CAAC;QACV,QAAQ,CAAC,IAAI,CACX,6FAA6F;cACzF,gFAAgF;cAChF,0EAA0E,KAAK,EAAE,CACtF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC;IAC9D,IAAI,MAAM,EAAE,CAAC;QACX,QAAQ,CAAC,IAAI,CAAC,+DAA+D,MAAM,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,QAAQ,CAAC,IAAI,CACX,gMAAgM,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC/N,CAAC;IAEF,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bitmagic/asset-core",
3
- "version": "0.2.7-dev.10",
3
+ "version": "0.2.7-dev.12",
4
4
  "license": "SEE LICENSE IN LICENSE.md",
5
5
  "author": "Bitmagic Oy",
6
6
  "type": "module",