@bitmagic/asset-core 0.2.11-dev.0 → 0.2.11-dev.1

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.
@@ -18,6 +18,23 @@ export declare class AssetForgerClient implements ForgerClient {
18
18
  getMissingCredentialsMessage(): string;
19
19
  private authHeader;
20
20
  private postJson;
21
+ /**
22
+ * Make a GET request to an Asset Forger endpoint.
23
+ *
24
+ * Lives here rather than in a caller because this class is the single home for
25
+ * the base URL and the Basic-auth header; a hand-rolled `fetch` elsewhere would
26
+ * fork both.
27
+ *
28
+ * The timeout is load-bearing. A GET that hangs would otherwise burn the
29
+ * caller's whole budget — the CLI/web asset lanes run generation against a
30
+ * 280 s server deadline — so this fails fast and lets the caller fall back.
31
+ * Same reasoning as the abort already documented on `fetchContentLength`.
32
+ *
33
+ * @param endpoint - API endpoint path (e.g. '/ai/v1/find-voxel-character')
34
+ * @param query - Query params; `undefined` values are dropped
35
+ * @param loggerName - Name for logging
36
+ */
37
+ get<T = unknown>(endpoint: string, query: Record<string, string | number | boolean | undefined>, loggerName: string): Promise<T>;
21
38
  /**
22
39
  * Make a POST request to an Asset Forger endpoint
23
40
  *
@@ -1 +1 @@
1
- {"version":3,"file":"forger-client.d.ts","sourceRoot":"","sources":["../src/forger-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE3D;;;;;GAKG;AAEH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,iBAAkB,YAAW,YAAY;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiF;IACzG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgC;IAC5D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;gBAErB,MAAM,EAAE,UAAU;IAgBvB,cAAc,IAAI,OAAO;IAIzB,4BAA4B,IAAI,MAAM;IAI7C,OAAO,CAAC,UAAU;YAMJ,QAAQ;IAgCtB;;;;;;;OAOG;IACU,IAAI,CAAC,CAAC,GAAG,OAAO,EAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,CAAC,CAAC;IAMb;;;;;;;;;OASG;IACU,cAAc,CAAC,CAAC,GAAG,OAAO,EACrC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,CAAC,CAAC;CA+Ed"}
1
+ {"version":3,"file":"forger-client.d.ts","sourceRoot":"","sources":["../src/forger-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE3D;;;;;GAKG;AAEH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAKD,qBAAa,iBAAkB,YAAW,YAAY;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiF;IACzG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgC;IAC5D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;gBAErB,MAAM,EAAE,UAAU;IAgBvB,cAAc,IAAI,OAAO;IAIzB,4BAA4B,IAAI,MAAM;IAI7C,OAAO,CAAC,UAAU;YAMJ,QAAQ;IAgCtB;;;;;;;;;;;;;;;OAeG;IACU,GAAG,CAAC,CAAC,GAAG,OAAO,EAC1B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,EAC5D,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,CAAC,CAAC;IA2Bb;;;;;;;OAOG;IACU,IAAI,CAAC,CAAC,GAAG,OAAO,EAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,CAAC,CAAC;IAMb;;;;;;;;;OASG;IACU,cAAc,CAAC,CAAC,GAAG,OAAO,EACrC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,CAAC,CAAC;CA+Ed"}
@@ -1,3 +1,5 @@
1
+ /** How long a GET may hang before the caller gets its budget back. */
2
+ const GET_TIMEOUT_MS = 15000;
1
3
  export class AssetForgerClient {
2
4
  constructor(logger) {
3
5
  this.baseUrl = process.env.ASSET_FORGER_URL || 'https://asset-forger.staging.bitmagic.cloud';
@@ -47,6 +49,45 @@ export class AssetForgerClient {
47
49
  }
48
50
  return await response.json();
49
51
  }
52
+ /**
53
+ * Make a GET request to an Asset Forger endpoint.
54
+ *
55
+ * Lives here rather than in a caller because this class is the single home for
56
+ * the base URL and the Basic-auth header; a hand-rolled `fetch` elsewhere would
57
+ * fork both.
58
+ *
59
+ * The timeout is load-bearing. A GET that hangs would otherwise burn the
60
+ * caller's whole budget — the CLI/web asset lanes run generation against a
61
+ * 280 s server deadline — so this fails fast and lets the caller fall back.
62
+ * Same reasoning as the abort already documented on `fetchContentLength`.
63
+ *
64
+ * @param endpoint - API endpoint path (e.g. '/ai/v1/find-voxel-character')
65
+ * @param query - Query params; `undefined` values are dropped
66
+ * @param loggerName - Name for logging
67
+ */
68
+ async get(endpoint, query, loggerName) {
69
+ if (!this.credentials) {
70
+ throw new Error('Asset Forger credentials not configured');
71
+ }
72
+ const params = new URLSearchParams();
73
+ for (const [key, value] of Object.entries(query)) {
74
+ if (value !== undefined)
75
+ params.set(key, String(value));
76
+ }
77
+ const suffix = params.toString();
78
+ const url = `${this.baseUrl}${endpoint}${suffix ? `?${suffix}` : ''}`;
79
+ this.log.info(`[${loggerName}] GET ${url}`);
80
+ const response = await fetch(url, {
81
+ headers: { 'Authorization': this.authHeader() },
82
+ signal: AbortSignal.timeout(GET_TIMEOUT_MS),
83
+ });
84
+ if (!response.ok) {
85
+ const errorText = await response.text();
86
+ this.log.error(`[${loggerName}] API Error Response:`, errorText);
87
+ throw new Error(`HTTP error! status: ${response.status}, message: ${errorText}`);
88
+ }
89
+ return await response.json();
90
+ }
50
91
  /**
51
92
  * Make a POST request to an Asset Forger endpoint
52
93
  *
@@ -1 +1 @@
1
- {"version":3,"file":"forger-client.js","sourceRoot":"","sources":["../src/forger-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"forger-client.js","sourceRoot":"","sources":["../src/forger-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,130 @@
1
+ import type { CoreLogger, ForgerClient } from '../types.js';
2
+ /**
3
+ * Search the Asset Forger's library of ready-made rigged voxel characters.
4
+ *
5
+ * Most prompts a creator types already have a good body in the library, and
6
+ * using one is instant and free where forging costs minutes and a vendor call.
7
+ * This module answers "is there one close enough?" and nothing else — the
8
+ * decision to use it lives in `character.ts`.
9
+ *
10
+ * `findLibraryCharacter` NEVER throws and never rejects. Every failure — no
11
+ * credentials, a network error, a 500, an empty index, nothing above the floor —
12
+ * resolves to `{ match: null, reason }`. That property is what makes "fall back
13
+ * to forging" structural instead of a `try/catch` somebody can forget, and it
14
+ * matters more than it looks: production's index is EMPTY today, so the empty
15
+ * case is the normal path at launch rather than an edge case.
16
+ *
17
+ * ## The upstream contract, as measured against the live service
18
+ *
19
+ * `GET /ai/v1/find-voxel-character`, Basic auth, query params:
20
+ * `prompt` (required; blank is a 400), `threshold` (0-1, **400** when malformed
21
+ * or out of range), `limit` (**400** when malformed), and optional
22
+ * `species` / `hasTail`.
23
+ *
24
+ * - **`limit >= 17` fails every time**, with a 500 and
25
+ * `"Failed to parse search result"` — the Python subprocess output is
26
+ * truncated before the route parses it. Verified across prompts and repeats,
27
+ * with the boundary between 16 and 17. {@link LIBRARY_CANDIDATE_LIMIT} stays
28
+ * far below it, and {@link MAX_SAFE_LIMIT} documents the cliff.
29
+ * - **`assetUrl` is nullable.** The `/seed` bootstrap path indexes captions with
30
+ * no files, so a row can be findable but not usable. Candidates without one
31
+ * are skipped in favour of the next.
32
+ * - **`species` is exact SQL equality** over free-text values a vision model
33
+ * wrote (`cat`, `orc`, `robot`), so `species=Cat` matches nothing. Sending a
34
+ * derived guess would silently collapse the result set to zero and look
35
+ * exactly like an empty index — so it is deliberately never sent, and neither
36
+ * is `hasTail`. The prompt embedding already carries both.
37
+ */
38
+ /**
39
+ * How the library participates in character generation.
40
+ *
41
+ * Three states rather than a boolean because the middle one is what lets this
42
+ * ship before anything depends on it: `shadow` runs the search and logs what it
43
+ * would have picked, then forges anyway. Zero behaviour change, and it turns
44
+ * real traffic into the data that says whether the floor is right.
45
+ */
46
+ export type CharacterLibraryMode = 'off' | 'shadow' | 'on';
47
+ /** Why a search produced no usable match. Distinguishable so the logs are actionable. */
48
+ export type LibraryMissReason =
49
+ /** Mode `off`, the caller opted out, or a parameter the library cannot honour. */
50
+ 'disabled'
51
+ /** Network error, timeout, or a non-2xx — including the route's own 500. */
52
+ | 'unreachable'
53
+ /** The index returned nothing. Production today. */
54
+ | 'empty'
55
+ /** Candidates came back, none close enough. */
56
+ | 'below-threshold'
57
+ /** Candidates came back, none with a usable `assetUrl` — the index needs publishing, not seeding. */
58
+ | 'no-asset-url'
59
+ /** The response was not the shape the route documents. */
60
+ | 'malformed';
61
+ /** The subset of a library row this package consumes. */
62
+ export interface VoxelCharacterMatch {
63
+ /** Corpus id, e.g. `b0009` — the only field that makes a pick auditable. */
64
+ sid: string;
65
+ /** Non-null by construction: rows without one are filtered out before selection. */
66
+ assetUrl: string;
67
+ /** The vision-model caption that was embedded — what the body LOOKS like. */
68
+ description: string;
69
+ /** Short noun phrase, for the line a creator reads. */
70
+ subject: string | null;
71
+ similarity: number;
72
+ }
73
+ export interface LibrarySearchOutcome {
74
+ match: VoxelCharacterMatch | null;
75
+ reason?: LibraryMissReason;
76
+ /** Best similarity seen even when it lost — this is what `shadow` mode reports. */
77
+ topSimilarity?: number;
78
+ }
79
+ /**
80
+ * The usable-match floor.
81
+ *
82
+ * 0.45 is not invented here: `game/scripts/vxl-v10-search-selftest.mjs` already
83
+ * treats it as the line between a usable match and a coincidence, having ranked
84
+ * the corpus in memory against known queries. Measured top-1 similarities for
85
+ * realistic prompts run 0.62-0.80, so it accepts with margin — and it is well
86
+ * above the route's own 0.3 default, which is looser than we want.
87
+ */
88
+ export declare const DEFAULT_LIBRARY_THRESHOLD = 0.45;
89
+ /**
90
+ * Ask for a handful, not one.
91
+ *
92
+ * A row can be findable but unusable (`assetUrl` null), and `limit: 1` would
93
+ * turn a single unpublished row into a full forge. Five gives four fallbacks at
94
+ * no meaningful cost.
95
+ */
96
+ export declare const LIBRARY_CANDIDATE_LIMIT = 5;
97
+ /** The largest `limit` the route survives; see the module doc. The API advertises 50. */
98
+ export declare const MAX_SAFE_LIMIT = 16;
99
+ /**
100
+ * Read the mode per call rather than at module load, so a test or a CLI run can
101
+ * change it without re-importing — the same reasoning `animation.ts` documents
102
+ * for `ANIMATION_MODEL`. Unrecognised values fail CLOSED: an env typo must not
103
+ * be what turns library substitution on.
104
+ */
105
+ export declare function getCharacterLibraryMode(): CharacterLibraryMode;
106
+ /**
107
+ * The floor, overridable by `CHARACTER_LIBRARY_THRESHOLD`.
108
+ *
109
+ * An env var rather than a request field: it is an operations dial for tuning
110
+ * against a growing corpus, not a creative choice, and an agent asked to pick a
111
+ * cosine value would be guessing.
112
+ *
113
+ * The clamp is load-bearing — the route answers **400** to a threshold outside
114
+ * 0-1 or one that will not parse, so an unclamped typo would turn every
115
+ * character generation into a hard failure instead of a fallback.
116
+ */
117
+ export declare function getCharacterLibraryThreshold(): number;
118
+ export interface FindLibraryCharacterDeps {
119
+ forger: ForgerClient;
120
+ logger: CoreLogger;
121
+ }
122
+ /**
123
+ * Find the closest usable library character for a prompt.
124
+ *
125
+ * Selection is the highest-ranked row that has BOTH a usable `assetUrl` and a
126
+ * similarity at or above the floor — walking the list rather than taking the
127
+ * first, so an unpublished row costs a fallback instead of a forge.
128
+ */
129
+ export declare function findLibraryCharacter(prompt: string, deps: FindLibraryCharacterDeps): Promise<LibrarySearchOutcome>;
130
+ //# sourceMappingURL=character-library.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"character-library.d.ts","sourceRoot":"","sources":["../../src/generators/character-library.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH;;;;;;;GAOG;AACH,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC;AAE3D,yFAAyF;AACzF,MAAM,MAAM,iBAAiB;AAC3B,kFAAkF;AAChF,UAAU;AACZ,4EAA4E;GAC1E,aAAa;AACf,oDAAoD;GAClD,OAAO;AACT,+CAA+C;GAC7C,iBAAiB;AACnB,qGAAqG;GACnG,cAAc;AAChB,0DAA0D;GACxD,WAAW,CAAC;AAEhB,yDAAyD;AACzD,MAAM,WAAW,mBAAmB;IAClC,4EAA4E;IAC5E,GAAG,EAAE,MAAM,CAAC;IACZ,oFAAoF;IACpF,QAAQ,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAClC,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,mFAAmF;IACnF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAID;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAE9C;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,yFAAyF;AACzF,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC;;;;;GAKG;AACH,wBAAgB,uBAAuB,IAAI,oBAAoB,CAG9D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,CAIrD;AAiBD,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,UAAU,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CAsD/B"}
@@ -0,0 +1,111 @@
1
+ const ENDPOINT = '/ai/v1/find-voxel-character';
2
+ /**
3
+ * The usable-match floor.
4
+ *
5
+ * 0.45 is not invented here: `game/scripts/vxl-v10-search-selftest.mjs` already
6
+ * treats it as the line between a usable match and a coincidence, having ranked
7
+ * the corpus in memory against known queries. Measured top-1 similarities for
8
+ * realistic prompts run 0.62-0.80, so it accepts with margin — and it is well
9
+ * above the route's own 0.3 default, which is looser than we want.
10
+ */
11
+ export const DEFAULT_LIBRARY_THRESHOLD = 0.45;
12
+ /**
13
+ * Ask for a handful, not one.
14
+ *
15
+ * A row can be findable but unusable (`assetUrl` null), and `limit: 1` would
16
+ * turn a single unpublished row into a full forge. Five gives four fallbacks at
17
+ * no meaningful cost.
18
+ */
19
+ export const LIBRARY_CANDIDATE_LIMIT = 5;
20
+ /** The largest `limit` the route survives; see the module doc. The API advertises 50. */
21
+ export const MAX_SAFE_LIMIT = 16;
22
+ /**
23
+ * Read the mode per call rather than at module load, so a test or a CLI run can
24
+ * change it without re-importing — the same reasoning `animation.ts` documents
25
+ * for `ANIMATION_MODEL`. Unrecognised values fail CLOSED: an env typo must not
26
+ * be what turns library substitution on.
27
+ */
28
+ export function getCharacterLibraryMode() {
29
+ const raw = process.env.CHARACTER_LIBRARY?.trim().toLowerCase();
30
+ return raw === 'on' || raw === 'shadow' ? raw : 'off';
31
+ }
32
+ /**
33
+ * The floor, overridable by `CHARACTER_LIBRARY_THRESHOLD`.
34
+ *
35
+ * An env var rather than a request field: it is an operations dial for tuning
36
+ * against a growing corpus, not a creative choice, and an agent asked to pick a
37
+ * cosine value would be guessing.
38
+ *
39
+ * The clamp is load-bearing — the route answers **400** to a threshold outside
40
+ * 0-1 or one that will not parse, so an unclamped typo would turn every
41
+ * character generation into a hard failure instead of a fallback.
42
+ */
43
+ export function getCharacterLibraryThreshold() {
44
+ const parsed = Number.parseFloat(process.env.CHARACTER_LIBRARY_THRESHOLD ?? '');
45
+ if (!Number.isFinite(parsed))
46
+ return DEFAULT_LIBRARY_THRESHOLD;
47
+ return Math.min(1, Math.max(0, parsed));
48
+ }
49
+ /**
50
+ * Find the closest usable library character for a prompt.
51
+ *
52
+ * Selection is the highest-ranked row that has BOTH a usable `assetUrl` and a
53
+ * similarity at or above the floor — walking the list rather than taking the
54
+ * first, so an unpublished row costs a fallback instead of a forge.
55
+ */
56
+ export async function findLibraryCharacter(prompt, deps) {
57
+ const { forger, logger } = deps;
58
+ if (!forger.hasCredentials()) {
59
+ return { match: null, reason: 'disabled' };
60
+ }
61
+ const threshold = getCharacterLibraryThreshold();
62
+ let body;
63
+ try {
64
+ body = await forger.get(ENDPOINT, {
65
+ prompt,
66
+ threshold,
67
+ limit: Math.min(LIBRARY_CANDIDATE_LIMIT, MAX_SAFE_LIMIT),
68
+ }, 'CharacterLibrary');
69
+ }
70
+ catch (error) {
71
+ // Includes the route's own 500s, which surface as a non-2xx throw.
72
+ logger.warn({ err: error }, '[character-library] Search failed; forging instead');
73
+ return { match: null, reason: 'unreachable' };
74
+ }
75
+ if (!Array.isArray(body?.items)) {
76
+ logger.warn({ error: body?.error }, '[character-library] Unexpected search response; forging instead');
77
+ return { match: null, reason: 'malformed' };
78
+ }
79
+ const items = body.items;
80
+ if (items.length === 0) {
81
+ return { match: null, reason: 'empty' };
82
+ }
83
+ let topSimilarity = 0;
84
+ let sawUsable = false;
85
+ for (const item of items) {
86
+ const similarity = typeof item?.similarity === 'number' ? item.similarity : 0;
87
+ if (similarity > topSimilarity)
88
+ topSimilarity = similarity;
89
+ const assetUrl = typeof item?.assetUrl === 'string' ? item.assetUrl.trim() : '';
90
+ const sid = typeof item?.sid === 'string' ? item.sid : '';
91
+ if (!assetUrl || !sid)
92
+ continue;
93
+ sawUsable = true;
94
+ if (similarity < threshold)
95
+ continue;
96
+ return {
97
+ match: {
98
+ sid,
99
+ assetUrl,
100
+ description: typeof item.description === 'string' ? item.description : '',
101
+ subject: typeof item.subject === 'string' ? item.subject : null,
102
+ similarity,
103
+ },
104
+ topSimilarity,
105
+ };
106
+ }
107
+ // Separating these two is what tells an operator which half is missing: rows
108
+ // with no files need PUBLISHING, an empty index needs SEEDING.
109
+ return { match: null, reason: sawUsable ? 'below-threshold' : 'no-asset-url', topSimilarity };
110
+ }
111
+ //# sourceMappingURL=character-library.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"character-library.js","sourceRoot":"","sources":["../../src/generators/character-library.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,24 @@
1
1
  import { z } from 'zod';
2
2
  import type { AssetResultBase, GenerateDeps } from '../types.js';
3
+ /**
4
+ * The chibi house style every library body is built at. Named because the
5
+ * library search keys off it: a stored body has its head scale baked in, so a
6
+ * caller who asked for a different one must get a forge, not a substitution.
7
+ */
8
+ export declare const DEFAULT_HEAD_SCALE = 150;
3
9
  export declare const characterParamsSchema: z.ZodObject<{
4
10
  name: z.ZodString;
5
11
  prompt: z.ZodString;
6
12
  applyToPlayer: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
7
13
  headScale: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
8
14
  assetId: z.ZodOptional<z.ZodString>;
15
+ useLibrary: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
9
16
  }, "strict", z.ZodTypeAny, {
10
17
  name: string;
11
18
  prompt: string;
12
19
  applyToPlayer: boolean;
13
20
  headScale: number;
21
+ useLibrary: boolean;
14
22
  assetId?: string | undefined;
15
23
  }, {
16
24
  name: string;
@@ -18,6 +26,7 @@ export declare const characterParamsSchema: z.ZodObject<{
18
26
  assetId?: string | undefined;
19
27
  applyToPlayer?: boolean | undefined;
20
28
  headScale?: number | undefined;
29
+ useLibrary?: boolean | undefined;
21
30
  }>;
22
31
  /**
23
32
  * The schema's INPUT type — callers may omit the defaulted fields. The
@@ -35,6 +44,11 @@ export type CharacterResult = AssetResultBase & {
35
44
  * how the tool has always billed.
36
45
  */
37
46
  billable?: boolean;
47
+ /** Present only when the character came from the library, never when forged. */
48
+ library?: {
49
+ sid: string;
50
+ similarity: number;
51
+ };
38
52
  };
39
53
  export declare function generateCharacter(params: CharacterParams, deps: GenerateDeps): Promise<CharacterResult>;
40
54
  //# sourceMappingURL=character.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"character.d.ts","sourceRoot":"","sources":["../../src/generators/character.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAc,MAAM,aAAa,CAAC;AAI7E,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;EAqBvB,CAAC;AAEZ;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAWF,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,eAAe,CAAC,CA6H1B"}
1
+ {"version":3,"file":"character.d.ts","sourceRoot":"","sources":["../../src/generators/character.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAc,MAAM,aAAa,CAAC;AAK7E;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;EAyBvB,CAAC;AAEZ;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gFAAgF;IAChF,OAAO,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C,CAAC;AAWF,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,eAAe,CAAC,CAiI1B"}
@@ -1,6 +1,13 @@
1
1
  import { z } from 'zod';
2
2
  import { fail, ok } from '../result.js';
3
3
  import { formatZodIssues } from '../validation.js';
4
+ import { findLibraryCharacter, getCharacterLibraryMode } from './character-library.js';
5
+ /**
6
+ * The chibi house style every library body is built at. Named because the
7
+ * library search keys off it: a stored body has its head scale baked in, so a
8
+ * caller who asked for a different one must get a forge, not a substitution.
9
+ */
10
+ export const DEFAULT_HEAD_SCALE = 150;
4
11
  export const characterParamsSchema = z.object({
5
12
  name: z.string()
6
13
  .min(1)
@@ -17,11 +24,15 @@ export const characterParamsSchema = z.object({
17
24
  .min(50)
18
25
  .max(300)
19
26
  .optional()
20
- .default(150)
27
+ .default(DEFAULT_HEAD_SCALE)
21
28
  .describe('Head size as a percentage of normal (150 = chibi house style, matches the default character; 100 = realistic proportions).'),
22
29
  assetId: z.string()
23
30
  .optional()
24
31
  .describe('Pre-generated asset id from the manifest. The character is stored in world.json assets[] under this id so code can reference it via registerNpc({ characterAssetId }).'),
32
+ useLibrary: z.boolean()
33
+ .optional()
34
+ .default(true)
35
+ .describe('Search the ready-made rigged-character library first and use a close match instead of forging a new one (default). Set false to always forge. Ignored when headScale is not the default 150 — a library body has its head scale baked in.'),
25
36
  }).strict();
26
37
  const ENDPOINT = '/ai/v1/generate-rigged-character/jobs';
27
38
  export async function generateCharacter(params, deps) {
@@ -36,6 +47,35 @@ export async function generateCharacter(params, deps) {
36
47
  logger.error('[character] Missing Asset Forger credentials');
37
48
  return fail(forger.getMissingCredentialsMessage());
38
49
  }
50
+ // The library first, when it can serve this request at all. Placed AFTER the
51
+ // credentials guard because the search needs the same Basic auth, so a missing
52
+ // credential should still report itself rather than looking like an empty
53
+ // index — and BEFORE any progress line, so a hit never claims it generated.
54
+ //
55
+ // A non-default headScale suppresses the search outright: a stored body has
56
+ // its head scale baked in, and silently ignoring a parameter the caller set is
57
+ // worse than forging. (zod fills the default, so "explicitly 150" and
58
+ // "omitted" are indistinguishable here — and identical in effect.)
59
+ const libraryMode = getCharacterLibraryMode();
60
+ const librarySearchable = libraryMode !== 'off' && input.useLibrary && input.headScale === DEFAULT_HEAD_SCALE;
61
+ if (librarySearchable) {
62
+ onProgress('Searching the character library…');
63
+ const outcome = await findLibraryCharacter(input.prompt, { forger, logger });
64
+ const percent = (value) => `${Math.round(value * 100)}%`;
65
+ if (outcome.match && libraryMode === 'on') {
66
+ const { sid, similarity, subject, description, assetUrl } = outcome.match;
67
+ onProgress(`Found a ready-made character: ${subject ?? sid} (${percent(similarity)} match) — no generation needed.`);
68
+ logger.info({ sid, similarity }, '[character] Using a library character');
69
+ return ok(`Character "${input.name}" taken from the library (${sid}, ${percent(similarity)} match): ${assetUrl}`, buildCharacterPatches(input, assetUrl, 'library', description, sid), { assetId: input.assetId, characterUrl: assetUrl, library: { sid, similarity } });
70
+ }
71
+ // `shadow` observes without substituting, and a miss falls through to the
72
+ // forge either way. The best score is logged even when it lost — that is the
73
+ // number that says whether the floor is set right.
74
+ logger.info({ mode: libraryMode, sid: outcome.match?.sid, reason: outcome.reason, topSimilarity: outcome.topSimilarity }, '[character] Library did not supply this character');
75
+ if (outcome.topSimilarity !== undefined && !outcome.match) {
76
+ onProgress(`No close library match (best ${percent(outcome.topSimilarity)}) — making a new character.`);
77
+ }
78
+ }
39
79
  onProgress(`Generating character: ${input.name}`);
40
80
  logger.info(`[character] Starting generation for "${input.name}"`);
41
81
  // Proven recipe for an engine-ready character: rerigTarget 'default' => Mixamo
@@ -98,6 +138,14 @@ export async function generateCharacter(params, deps) {
98
138
  // via registerNpc({ characterAssetId }) — the engine resolves the id from
99
139
  // assets[] at registration time. This is what lets the coding subagent run in
100
140
  // parallel with asset generation instead of waiting for the literal GLB url.
141
+ const patches = buildCharacterPatches(input, characterUrl, 'generated');
142
+ return ok(`Character "${input.name}" generated: ${characterUrl}`, patches, { assetId: input.assetId, characterUrl, billable });
143
+ }
144
+ /**
145
+ * The world.json writes for a finished character, shared by the forge and the
146
+ * library paths so their deliberate ORDER cannot drift apart.
147
+ */
148
+ function buildCharacterPatches(input, characterUrl, source, libraryDescription, librarySid) {
101
149
  const patches = [];
102
150
  if (input.assetId) {
103
151
  patches.push({
@@ -108,8 +156,14 @@ export async function generateCharacter(params, deps) {
108
156
  name: input.name,
109
157
  url: characterUrl,
110
158
  type: 'character',
159
+ // The CREATOR's words, never the library row's own generation prompt:
160
+ // this is the brief a regeneration re-drives, and overwriting it with a
161
+ // stranger's prompt would make "make this again" produce someone else's
162
+ // character.
111
163
  prompt: input.prompt,
112
- source: 'generated',
164
+ ...(libraryDescription ? { description: libraryDescription } : {}),
165
+ source,
166
+ ...(librarySid ? { librarySid } : {}),
113
167
  },
114
168
  });
115
169
  }
@@ -129,6 +183,6 @@ export async function generateCharacter(params, deps) {
129
183
  if (input.applyToPlayer) {
130
184
  patches.push({ type: 'set', path: ['useHighResCharacter'], value: true, skipReload: true }, { type: 'set', path: ['characterUrl'], value: characterUrl });
131
185
  }
132
- return ok(`Character "${input.name}" generated: ${characterUrl}`, patches, { assetId: input.assetId, characterUrl, billable });
186
+ return patches;
133
187
  }
134
188
  //# sourceMappingURL=character.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"character.js","sourceRoot":"","sources":["../../src/generators/character.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"character.js","sourceRoot":"","sources":["../../src/generators/character.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -17,6 +17,8 @@ export { generateReferenceImage, referenceImageParamsSchema, REFERENCE_IMAGE_WID
17
17
  export type { ReferenceImageParams, ReferenceImageResult } from './generators/reference.js';
18
18
  export { generateCharacter, characterParamsSchema } from './generators/character.js';
19
19
  export type { CharacterParams, CharacterResult } from './generators/character.js';
20
+ export { findLibraryCharacter, getCharacterLibraryMode, getCharacterLibraryThreshold, DEFAULT_LIBRARY_THRESHOLD, LIBRARY_CANDIDATE_LIMIT, } from './generators/character-library.js';
21
+ export type { CharacterLibraryMode, LibraryMissReason, LibrarySearchOutcome, VoxelCharacterMatch, } from './generators/character-library.js';
20
22
  export { generateProp, propParamsSchema } from './generators/prop.js';
21
23
  export type { PropParams, PropResult } from './generators/prop.js';
22
24
  export { generatePropVoxels, propVoxelParamsSchema, propVoxelGrids } from './generators/prop-voxel.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
@@ -8,6 +8,7 @@ export { generateSoundEffect, soundEffectParamsSchema } from './generators/sound
8
8
  export { generateImageAsset, imageAssetParamsSchema } from './generators/image.js';
9
9
  export { generateReferenceImage, referenceImageParamsSchema, REFERENCE_IMAGE_WIDTH, REFERENCE_IMAGE_HEIGHT, } from './generators/reference.js';
10
10
  export { generateCharacter, characterParamsSchema } from './generators/character.js';
11
+ export { findLibraryCharacter, getCharacterLibraryMode, getCharacterLibraryThreshold, DEFAULT_LIBRARY_THRESHOLD, LIBRARY_CANDIDATE_LIMIT, } from './generators/character-library.js';
11
12
  export { generateProp, propParamsSchema } from './generators/prop.js';
12
13
  export { generatePropVoxels, propVoxelParamsSchema, propVoxelGrids } from './generators/prop-voxel.js';
13
14
  export { generateAnimationAsset, animationParamsSchema, getConfiguredAnimationModel, ANIMATION_MODEL_TEXT_TO_MOTION_3, ANIMATION_MODEL_TEXT_TO_MOTION_2, ANIMATION_MODEL_OLDER, } from './generators/animation.js';
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,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AAEnC,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,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;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,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAErF,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,4BAA4B,EAC5B,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,mCAAmC,CAAC;AAO3C,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,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;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 +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;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,MAAM,CAAC;AAEjD;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,glEA4ByC,CAAC;AAEnE;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAahE;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,4kCAeW,CAAC;AAE1C;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAmBpD,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAClF,QAAQ,CAAC,QAAQ,EAAE,SAAS;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACrF;AAyBD,MAAM,WAAW,gBAAgB;IAC/B,+DAA+D;IAC/D,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,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,YAAY,EACZ,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,aAAa,EACb,UAAU,GACX,EAAE,gBAAgB,GAAG,MAAM,CAiD3B"}
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;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,MAAM,CAAC;AAEjD;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,glEA4ByC,CAAC;AAEnE;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAahE;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,4kCAeW,CAAC;AAE1C;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAmBpD,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAClF,QAAQ,CAAC,QAAQ,EAAE,SAAS;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACrF;AAyBD,MAAM,WAAW,gBAAgB;IAC/B,+DAA+D;IAC/D,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,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,YAAY,EACZ,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,aAAa,EACb,UAAU,GACX,EAAE,gBAAgB,GAAG,MAAM,CAsD3B"}
@@ -205,7 +205,12 @@ export function buildJudgeRubric({ designText, artDirection, previous, genre, pl
205
205
  // verdict, whose findings it has to adjudicate.
206
206
  if (previous)
207
207
  sections.push(buildPriorVerdictSection(previous));
208
- sections.push(`Findings must be specific, visible in the frame, and actionable by a developer — name the object or region and say what to change. Report at most 3, most severe first, and report FEWER when there are fewer: an empty list is the correct, expected answer for a frame whose only remaining flaws are matters of taste. Never pad the list to reach three — a manufactured finding costs a developer a real fix somewhere else, and one that only names the art direction cannot be acted on at all. Dimensions to score: ${JUDGE_DIMENSIONS.join(', ')}.`);
208
+ sections.push('Findings must be specific, visible in the frame, and actionable by a developer — name the '
209
+ + 'object or region and say what to change. Report at most 3, most severe first, and report '
210
+ + 'FEWER when there are fewer: an empty list is the correct, expected answer for a frame whose '
211
+ + 'only remaining flaws are matters of taste. Never pad the list to reach three — a '
212
+ + 'manufactured finding costs a developer a real fix somewhere else, and one that only names '
213
+ + `the art direction cannot be acted on at all. Dimensions to score: ${JUDGE_DIMENSIONS.join(', ')}.`);
209
214
  return sections.join('\n\n');
210
215
  }
211
216
  //# sourceMappingURL=judge-prompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"judge-prompt.js","sourceRoot":"","sources":["../src/judge-prompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"judge-prompt.js","sourceRoot":"","sources":["../src/judge-prompt.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -70,6 +70,7 @@ export interface CoreLogger {
70
70
  export interface ForgerClient {
71
71
  hasCredentials(): boolean;
72
72
  getMissingCredentialsMessage(): string;
73
+ get<T = unknown>(endpoint: string, query: Record<string, string | number | boolean | undefined>, loggerName: string): Promise<T>;
73
74
  post<T = unknown>(endpoint: string, payload: unknown, loggerName: string): Promise<T>;
74
75
  postJobAndWait<T = unknown>(jobsEndpoint: string, payload: unknown, loggerName: string): Promise<T>;
75
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;IAC9C,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG,eAAe,CAAC;AAE1D;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAChD,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAChD,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACjD,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAChE;AAED,uEAAuE;AACvE,MAAM,WAAW,YAAY;IAC3B,cAAc,IAAI,OAAO,CAAC;IAC1B,4BAA4B,IAAI,MAAM,CAAC;IACvC,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACtF,cAAc,CAAC,CAAC,GAAG,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACrG;AAED,+EAA+E;AAC/E,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,gFAAgF;IAChF,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,oFAAoF;AACpF,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;IAC9C,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG,eAAe,CAAC;AAE1D;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAChD,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAChD,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACjD,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAChE;AAED,uEAAuE;AACvE,MAAM,WAAW,YAAY;IAC3B,cAAc,IAAI,OAAO,CAAC;IAC1B,4BAA4B,IAAI,MAAM,CAAC;IACvC,GAAG,CAAC,CAAC,GAAG,OAAO,EACb,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,EAC5D,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,CAAC,CAAC,CAAC;IACd,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACtF,cAAc,CAAC,CAAC,GAAG,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACrG;AAED,+EAA+E;AAC/E,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,gFAAgF;IAChF,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,oFAAoF;AACpF,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bitmagic/asset-core",
3
- "version": "0.2.11-dev.0",
3
+ "version": "0.2.11-dev.1",
4
4
  "license": "SEE LICENSE IN LICENSE.md",
5
5
  "author": "Bitmagic Oy",
6
6
  "type": "module",