@bitmagic/asset-core 0.2.20-dev.5 → 0.2.20-dev.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/generators/character-library.d.ts +98 -26
- package/dist/generators/character-library.d.ts.map +1 -1
- package/dist/generators/character-library.js +90 -18
- package/dist/generators/character-library.js.map +1 -1
- package/dist/generators/character.d.ts.map +1 -1
- package/dist/generators/character.js +10 -11
- package/dist/generators/character.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { CoreLogger, ForgerClient } from '../types.js';
|
|
2
2
|
/**
|
|
3
|
-
* Search the Asset Forger's library of ready-made rigged
|
|
3
|
+
* Search the Asset Forger's library of ready-made rigged characters.
|
|
4
4
|
*
|
|
5
5
|
* Most prompts a creator types already have a good body in the library, and
|
|
6
6
|
* using one is instant and free where forging costs minutes and a vendor call.
|
|
@@ -10,22 +10,30 @@ import type { CoreLogger, ForgerClient } from '../types.js';
|
|
|
10
10
|
* `findLibraryCharacter` NEVER throws and never rejects. Every failure — no
|
|
11
11
|
* credentials, a network error, a 500, an empty index, nothing above the floor —
|
|
12
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
|
|
14
|
-
*
|
|
15
|
-
*
|
|
13
|
+
* to forging" structural instead of a `try/catch` somebody can forget.
|
|
14
|
+
*
|
|
15
|
+
* ## Two representations, one row
|
|
16
|
+
*
|
|
17
|
+
* The catalogue keys a character on `sid` and hangs BOTH representations off it:
|
|
18
|
+
* a voxel body (`.vxl`) and a textured low-poly rig (a KTX2 GLB). They are
|
|
19
|
+
* separate assets with separate vectors and separate publication state, and a
|
|
20
|
+
* character may have either or both — so the caller says which one it wants and
|
|
21
|
+
* an empty result NEVER falls back to the other medium. Feeding a voxel body to
|
|
22
|
+
* a low-poly game would defeat the point of the art style, and vice versa.
|
|
23
|
+
*
|
|
24
|
+
* Measured in production: 2,261 voxel bodies against 197 low-poly ones, so a
|
|
25
|
+
* low-poly miss is much likelier and the fallback-to-forge path matters more.
|
|
16
26
|
*
|
|
17
27
|
* ## The upstream contract, as measured against the live service
|
|
18
28
|
*
|
|
19
|
-
* `GET /ai/v1/find-
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* `species` / `hasTail`.
|
|
29
|
+
* `GET /ai/v1/find-character`, Basic auth, query params: `prompt` (required;
|
|
30
|
+
* blank is a 400), `representation` (**required**; anything but `voxel` or
|
|
31
|
+
* `lowpoly` is a 400), `threshold` (0-1, **400** when malformed or out of
|
|
32
|
+
* range), `limit` (**400** when malformed), and optional `species` / `hasTail`.
|
|
23
33
|
*
|
|
24
|
-
* - **`
|
|
25
|
-
*
|
|
26
|
-
*
|
|
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.
|
|
34
|
+
* - **`assetUrl` always belongs to the representation asked for**, and so does
|
|
35
|
+
* the similarity: low-poly ranks on its own vector and never borrows the
|
|
36
|
+
* voxel caption's.
|
|
29
37
|
* - **`assetUrl` is nullable.** The `/seed` bootstrap path indexes captions with
|
|
30
38
|
* no files, so a row can be findable but not usable. Candidates without one
|
|
31
39
|
* are skipped in favour of the next.
|
|
@@ -34,6 +42,11 @@ import type { CoreLogger, ForgerClient } from '../types.js';
|
|
|
34
42
|
* derived guess would silently collapse the result set to zero and look
|
|
35
43
|
* exactly like an empty index — so it is deliberately never sent, and neither
|
|
36
44
|
* is `hasTail`. The prompt embedding already carries both.
|
|
45
|
+
*
|
|
46
|
+
* The `limit >= 17` cliff this module used to guard against is GONE: both search
|
|
47
|
+
* routes now return through a result file rather than the Python subprocess's
|
|
48
|
+
* stdout, which is what the 20,000-character truncation used to eat.
|
|
49
|
+
* {@link MAX_SAFE_LIMIT} is kept as a cheap cap, no longer as a workaround.
|
|
37
50
|
*/
|
|
38
51
|
/**
|
|
39
52
|
* How the library participates in character generation.
|
|
@@ -58,8 +71,16 @@ export type LibraryMissReason =
|
|
|
58
71
|
| 'no-asset-url'
|
|
59
72
|
/** The response was not the shape the route documents. */
|
|
60
73
|
| 'malformed';
|
|
74
|
+
/**
|
|
75
|
+
* Which body a search is for.
|
|
76
|
+
*
|
|
77
|
+
* Not a boolean, and not derived from `voxelize` inside this module: the caller
|
|
78
|
+
* owns the art-style decision and this module owns the query. A mismatched
|
|
79
|
+
* default here would silently serve cubes to a low-poly game.
|
|
80
|
+
*/
|
|
81
|
+
export type LibraryRepresentation = 'voxel' | 'lowpoly';
|
|
61
82
|
/** The subset of a library row this package consumes. */
|
|
62
|
-
export interface
|
|
83
|
+
export interface LibraryCharacterMatch {
|
|
63
84
|
/** Corpus id, e.g. `b0009` — the only field that makes a pick auditable. */
|
|
64
85
|
sid: string;
|
|
65
86
|
/** Non-null by construction: rows without one are filtered out before selection. */
|
|
@@ -70,22 +91,61 @@ export interface VoxelCharacterMatch {
|
|
|
70
91
|
subject: string | null;
|
|
71
92
|
similarity: number;
|
|
72
93
|
}
|
|
94
|
+
/** @deprecated Named for when the library held voxels only. Use {@link LibraryCharacterMatch}. */
|
|
95
|
+
export type VoxelCharacterMatch = LibraryCharacterMatch;
|
|
73
96
|
export interface LibrarySearchOutcome {
|
|
74
|
-
match:
|
|
97
|
+
match: LibraryCharacterMatch | null;
|
|
75
98
|
reason?: LibraryMissReason;
|
|
76
99
|
/** Best similarity seen even when it lost — this is what `shadow` mode reports. */
|
|
77
100
|
topSimilarity?: number;
|
|
78
101
|
}
|
|
79
102
|
/**
|
|
80
|
-
* The usable-match floor.
|
|
103
|
+
* The usable-match floor for the voxel shelf.
|
|
104
|
+
*
|
|
105
|
+
* Was 0.45, from `game/scripts/vxl-v10-search-selftest.mjs`, which ranked the
|
|
106
|
+
* corpus in memory and put realistic prompts at 0.62-0.80. Raised to 0.55 on
|
|
107
|
+
* 2026-09-09 after measuring against the live index with CONTROLS as well as
|
|
108
|
+
* matches — the half the original sweep did not have.
|
|
109
|
+
*
|
|
110
|
+
* At 0.45 two of eight non-humanoid controls substituted: "a red sports car"
|
|
111
|
+
* fetched a race-car driver at 0.492, "a sailing boat on open sea" an elderly man
|
|
112
|
+
* at 0.468. Both are noise, and 0.45 admitted them. 0.55 rejects both, rejects
|
|
113
|
+
* the 0.522 pick this corpus was already known to get wrong, and costs nothing:
|
|
114
|
+
* the weakest genuine match measured 0.624, so every real hit still clears it.
|
|
115
|
+
*
|
|
116
|
+
* What it does NOT fix, and no floor can: a humanoid prompt the corpus cannot
|
|
117
|
+
* answer scores 0.552-0.698 here, inside the genuine range. See
|
|
118
|
+
* {@link DEFAULT_LOWPOLY_LIBRARY_THRESHOLD} for the numbers and what that costs.
|
|
119
|
+
*/
|
|
120
|
+
export declare const DEFAULT_LIBRARY_THRESHOLD = 0.55;
|
|
121
|
+
/**
|
|
122
|
+
* The low-poly floor, set higher than the voxel one on purpose.
|
|
123
|
+
*
|
|
124
|
+
* Measured 2026-09-09 against the live production index, scoring prompts that
|
|
125
|
+
* should match against prompts that should not (the method that produced 0.45):
|
|
126
|
+
*
|
|
127
|
+
* | | voxel, 2,261 bodies | low-poly, 197 |
|
|
128
|
+
* | --- | --- | --- |
|
|
129
|
+
* | genuine matches | 0.624 - 0.831 | 0.613 - 0.801 |
|
|
130
|
+
* | non-humanoid controls (a chair, a boat) | up to 0.492 | up to 0.435 |
|
|
131
|
+
* | HUMANOID prompts the shelf cannot answer | 0.552 - 0.698 | 0.420 - 0.765 |
|
|
132
|
+
*
|
|
133
|
+
* That third row is the one that matters, and it is why no floor is a complete
|
|
134
|
+
* answer: a wrong-but-plausible person scores as high as a right one, so
|
|
135
|
+
* "beekeeper" fetching a humanoid bee (0.654) and "hazmat worker" fetching a boy
|
|
136
|
+
* mechanic (0.648) are not separable from a real hit by similarity alone.
|
|
81
137
|
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
*
|
|
138
|
+
* A floor can only trade coverage against precision, and the right trade differs
|
|
139
|
+
* by shelf SIZE. With 2,261 bodies a strong score is usually a real match; with
|
|
140
|
+
* 197 it is more often the nearest of too few. So low-poly starts conservative:
|
|
141
|
+
* at 0.65 only 2 of 10 unanswerable humanoid prompts substitute, against 9 of 10
|
|
142
|
+
* at 0.45, while genuine matches at 0.673-0.801 still land. Forging is the
|
|
143
|
+
* fallback, and forging is what happens today anyway — a missed hit costs money,
|
|
144
|
+
* a wrong hit costs the creator their character.
|
|
145
|
+
*
|
|
146
|
+
* Lower it as the shelf grows, via `CHARACTER_LIBRARY_THRESHOLD_LOWPOLY`.
|
|
87
147
|
*/
|
|
88
|
-
export declare const
|
|
148
|
+
export declare const DEFAULT_LOWPOLY_LIBRARY_THRESHOLD = 0.65;
|
|
89
149
|
/**
|
|
90
150
|
* Ask for a handful, not one.
|
|
91
151
|
*
|
|
@@ -94,7 +154,14 @@ export declare const DEFAULT_LIBRARY_THRESHOLD = 0.45;
|
|
|
94
154
|
* no meaningful cost.
|
|
95
155
|
*/
|
|
96
156
|
export declare const LIBRARY_CANDIDATE_LIMIT = 5;
|
|
97
|
-
/**
|
|
157
|
+
/**
|
|
158
|
+
* A cap, no longer a workaround.
|
|
159
|
+
*
|
|
160
|
+
* This was the largest `limit` the route survived, back when results came out
|
|
161
|
+
* through a truncated stdout buffer. They come back through a result file now,
|
|
162
|
+
* and the API advertises 50 — but nothing here wants more than a handful, so the
|
|
163
|
+
* cap stays as cheap insurance rather than being raised for its own sake.
|
|
164
|
+
*/
|
|
98
165
|
export declare const MAX_SAFE_LIMIT = 16;
|
|
99
166
|
/**
|
|
100
167
|
* Read the mode per call rather than at module load, so a test or a CLI run can
|
|
@@ -102,9 +169,12 @@ export declare const MAX_SAFE_LIMIT = 16;
|
|
|
102
169
|
* for `ANIMATION_MODEL`. Unrecognised values fail CLOSED: an env typo must not
|
|
103
170
|
* be what turns library substitution on.
|
|
104
171
|
*/
|
|
105
|
-
export declare function getCharacterLibraryMode(): CharacterLibraryMode;
|
|
172
|
+
export declare function getCharacterLibraryMode(representation: LibraryRepresentation): CharacterLibraryMode;
|
|
106
173
|
/**
|
|
107
|
-
* The floor, overridable by `CHARACTER_LIBRARY_THRESHOLD
|
|
174
|
+
* The floor for one shelf, overridable by `CHARACTER_LIBRARY_THRESHOLD` — or, for
|
|
175
|
+
* the low-poly corpus alone, by `CHARACTER_LIBRARY_THRESHOLD_LOWPOLY`.
|
|
176
|
+
*
|
|
177
|
+
* The two shelves default differently; see {@link DEFAULT_LOWPOLY_LIBRARY_THRESHOLD}.
|
|
108
178
|
*
|
|
109
179
|
* An env var rather than a request field: it is an operations dial for tuning
|
|
110
180
|
* against a growing corpus, not a creative choice, and an agent asked to pick a
|
|
@@ -114,10 +184,12 @@ export declare function getCharacterLibraryMode(): CharacterLibraryMode;
|
|
|
114
184
|
* 0-1 or one that will not parse, so an unclamped typo would turn every
|
|
115
185
|
* character generation into a hard failure instead of a fallback.
|
|
116
186
|
*/
|
|
117
|
-
export declare function getCharacterLibraryThreshold(): number;
|
|
187
|
+
export declare function getCharacterLibraryThreshold(representation: LibraryRepresentation): number;
|
|
118
188
|
export interface FindLibraryCharacterDeps {
|
|
119
189
|
forger: ForgerClient;
|
|
120
190
|
logger: CoreLogger;
|
|
191
|
+
/** Which body to search for. Required: there is no safe default across art styles. */
|
|
192
|
+
representation: LibraryRepresentation;
|
|
121
193
|
}
|
|
122
194
|
/**
|
|
123
195
|
* Find the closest usable library character for a prompt.
|
|
@@ -1 +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
|
|
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;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;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,SAAS,CAAC;AAExD,yDAAyD;AACzD,MAAM,WAAW,qBAAqB;IACpC,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,kGAAkG;AAClG,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AAExD,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACpC,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,mFAAmF;IACnF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAWD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,iCAAiC,OAAO,CAAC;AAEtD;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,cAAc,EAAE,qBAAqB,GAAG,oBAAoB,CAYnG;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,4BAA4B,CAAC,cAAc,EAAE,qBAAqB,GAAG,MAAM,CAa1F;AAiBD,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,UAAU,CAAC;IACnB,sFAAsF;IACtF,cAAc,EAAE,qBAAqB,CAAC;CACvC;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CAgE/B"}
|
|
@@ -1,14 +1,58 @@
|
|
|
1
|
-
const ENDPOINT = '/ai/v1/find-voxel-character';
|
|
2
1
|
/**
|
|
3
|
-
* The
|
|
2
|
+
* The representation-aware route, used for BOTH mediums.
|
|
4
3
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
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.
|
|
4
|
+
* `find-voxel-character` still works and still answers with voxels, but it makes
|
|
5
|
+
* the representation implicit — and an implicit default is exactly what must not
|
|
6
|
+
* decide which medium a creator's game gets.
|
|
10
7
|
*/
|
|
11
|
-
|
|
8
|
+
const ENDPOINT = '/ai/v1/find-character';
|
|
9
|
+
/**
|
|
10
|
+
* The usable-match floor for the voxel shelf.
|
|
11
|
+
*
|
|
12
|
+
* Was 0.45, from `game/scripts/vxl-v10-search-selftest.mjs`, which ranked the
|
|
13
|
+
* corpus in memory and put realistic prompts at 0.62-0.80. Raised to 0.55 on
|
|
14
|
+
* 2026-09-09 after measuring against the live index with CONTROLS as well as
|
|
15
|
+
* matches — the half the original sweep did not have.
|
|
16
|
+
*
|
|
17
|
+
* At 0.45 two of eight non-humanoid controls substituted: "a red sports car"
|
|
18
|
+
* fetched a race-car driver at 0.492, "a sailing boat on open sea" an elderly man
|
|
19
|
+
* at 0.468. Both are noise, and 0.45 admitted them. 0.55 rejects both, rejects
|
|
20
|
+
* the 0.522 pick this corpus was already known to get wrong, and costs nothing:
|
|
21
|
+
* the weakest genuine match measured 0.624, so every real hit still clears it.
|
|
22
|
+
*
|
|
23
|
+
* What it does NOT fix, and no floor can: a humanoid prompt the corpus cannot
|
|
24
|
+
* answer scores 0.552-0.698 here, inside the genuine range. See
|
|
25
|
+
* {@link DEFAULT_LOWPOLY_LIBRARY_THRESHOLD} for the numbers and what that costs.
|
|
26
|
+
*/
|
|
27
|
+
export const DEFAULT_LIBRARY_THRESHOLD = 0.55;
|
|
28
|
+
/**
|
|
29
|
+
* The low-poly floor, set higher than the voxel one on purpose.
|
|
30
|
+
*
|
|
31
|
+
* Measured 2026-09-09 against the live production index, scoring prompts that
|
|
32
|
+
* should match against prompts that should not (the method that produced 0.45):
|
|
33
|
+
*
|
|
34
|
+
* | | voxel, 2,261 bodies | low-poly, 197 |
|
|
35
|
+
* | --- | --- | --- |
|
|
36
|
+
* | genuine matches | 0.624 - 0.831 | 0.613 - 0.801 |
|
|
37
|
+
* | non-humanoid controls (a chair, a boat) | up to 0.492 | up to 0.435 |
|
|
38
|
+
* | HUMANOID prompts the shelf cannot answer | 0.552 - 0.698 | 0.420 - 0.765 |
|
|
39
|
+
*
|
|
40
|
+
* That third row is the one that matters, and it is why no floor is a complete
|
|
41
|
+
* answer: a wrong-but-plausible person scores as high as a right one, so
|
|
42
|
+
* "beekeeper" fetching a humanoid bee (0.654) and "hazmat worker" fetching a boy
|
|
43
|
+
* mechanic (0.648) are not separable from a real hit by similarity alone.
|
|
44
|
+
*
|
|
45
|
+
* A floor can only trade coverage against precision, and the right trade differs
|
|
46
|
+
* by shelf SIZE. With 2,261 bodies a strong score is usually a real match; with
|
|
47
|
+
* 197 it is more often the nearest of too few. So low-poly starts conservative:
|
|
48
|
+
* at 0.65 only 2 of 10 unanswerable humanoid prompts substitute, against 9 of 10
|
|
49
|
+
* at 0.45, while genuine matches at 0.673-0.801 still land. Forging is the
|
|
50
|
+
* fallback, and forging is what happens today anyway — a missed hit costs money,
|
|
51
|
+
* a wrong hit costs the creator their character.
|
|
52
|
+
*
|
|
53
|
+
* Lower it as the shelf grows, via `CHARACTER_LIBRARY_THRESHOLD_LOWPOLY`.
|
|
54
|
+
*/
|
|
55
|
+
export const DEFAULT_LOWPOLY_LIBRARY_THRESHOLD = 0.65;
|
|
12
56
|
/**
|
|
13
57
|
* Ask for a handful, not one.
|
|
14
58
|
*
|
|
@@ -17,7 +61,14 @@ export const DEFAULT_LIBRARY_THRESHOLD = 0.45;
|
|
|
17
61
|
* no meaningful cost.
|
|
18
62
|
*/
|
|
19
63
|
export const LIBRARY_CANDIDATE_LIMIT = 5;
|
|
20
|
-
/**
|
|
64
|
+
/**
|
|
65
|
+
* A cap, no longer a workaround.
|
|
66
|
+
*
|
|
67
|
+
* This was the largest `limit` the route survived, back when results came out
|
|
68
|
+
* through a truncated stdout buffer. They come back through a result file now,
|
|
69
|
+
* and the API advertises 50 — but nothing here wants more than a handful, so the
|
|
70
|
+
* cap stays as cheap insurance rather than being raised for its own sake.
|
|
71
|
+
*/
|
|
21
72
|
export const MAX_SAFE_LIMIT = 16;
|
|
22
73
|
/**
|
|
23
74
|
* Read the mode per call rather than at module load, so a test or a CLI run can
|
|
@@ -25,12 +76,24 @@ export const MAX_SAFE_LIMIT = 16;
|
|
|
25
76
|
* for `ANIMATION_MODEL`. Unrecognised values fail CLOSED: an env typo must not
|
|
26
77
|
* be what turns library substitution on.
|
|
27
78
|
*/
|
|
28
|
-
export function getCharacterLibraryMode() {
|
|
29
|
-
|
|
79
|
+
export function getCharacterLibraryMode(representation) {
|
|
80
|
+
// Two dials, because the two corpora are not equally proven. Voxel has 2,261
|
|
81
|
+
// reviewed bodies and is live; low-poly has 197 and wants a spell in `shadow`
|
|
82
|
+
// first. One switch would force turning voxel OFF to hold low-poly back.
|
|
83
|
+
// Note the low-poly dial does NOT inherit from CHARACTER_LIBRARY: an operator
|
|
84
|
+
// who turned the voxel library on months ago did not consent to substituting
|
|
85
|
+
// low-poly bodies, so this stays off until somebody sets it.
|
|
86
|
+
const configured = representation === 'lowpoly'
|
|
87
|
+
? process.env.CHARACTER_LIBRARY_LOWPOLY
|
|
88
|
+
: process.env.CHARACTER_LIBRARY;
|
|
89
|
+
const raw = configured?.trim().toLowerCase();
|
|
30
90
|
return raw === 'on' || raw === 'shadow' ? raw : 'off';
|
|
31
91
|
}
|
|
32
92
|
/**
|
|
33
|
-
* The floor, overridable by `CHARACTER_LIBRARY_THRESHOLD
|
|
93
|
+
* The floor for one shelf, overridable by `CHARACTER_LIBRARY_THRESHOLD` — or, for
|
|
94
|
+
* the low-poly corpus alone, by `CHARACTER_LIBRARY_THRESHOLD_LOWPOLY`.
|
|
95
|
+
*
|
|
96
|
+
* The two shelves default differently; see {@link DEFAULT_LOWPOLY_LIBRARY_THRESHOLD}.
|
|
34
97
|
*
|
|
35
98
|
* An env var rather than a request field: it is an operations dial for tuning
|
|
36
99
|
* against a growing corpus, not a creative choice, and an agent asked to pick a
|
|
@@ -40,10 +103,18 @@ export function getCharacterLibraryMode() {
|
|
|
40
103
|
* 0-1 or one that will not parse, so an unclamped typo would turn every
|
|
41
104
|
* character generation into a hard failure instead of a fallback.
|
|
42
105
|
*/
|
|
43
|
-
export function getCharacterLibraryThreshold() {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
106
|
+
export function getCharacterLibraryThreshold(representation) {
|
|
107
|
+
// The two shelves default differently because they cover the space differently;
|
|
108
|
+
// falling back to the shared dial keeps one knob for operators who do not care.
|
|
109
|
+
const lowpoly = representation === 'lowpoly';
|
|
110
|
+
// The shared dial still overrides both, so an operator who does not care about
|
|
111
|
+
// the split keeps one knob; only the DEFAULT differs per shelf.
|
|
112
|
+
const raw = (lowpoly ? process.env.CHARACTER_LIBRARY_THRESHOLD_LOWPOLY : undefined)
|
|
113
|
+
?? process.env.CHARACTER_LIBRARY_THRESHOLD;
|
|
114
|
+
const parsed = Number.parseFloat(raw ?? '');
|
|
115
|
+
if (!Number.isFinite(parsed)) {
|
|
116
|
+
return lowpoly ? DEFAULT_LOWPOLY_LIBRARY_THRESHOLD : DEFAULT_LIBRARY_THRESHOLD;
|
|
117
|
+
}
|
|
47
118
|
return Math.min(1, Math.max(0, parsed));
|
|
48
119
|
}
|
|
49
120
|
/**
|
|
@@ -54,15 +125,16 @@ export function getCharacterLibraryThreshold() {
|
|
|
54
125
|
* first, so an unpublished row costs a fallback instead of a forge.
|
|
55
126
|
*/
|
|
56
127
|
export async function findLibraryCharacter(prompt, deps) {
|
|
57
|
-
const { forger, logger } = deps;
|
|
128
|
+
const { forger, logger, representation } = deps;
|
|
58
129
|
if (!forger.hasCredentials()) {
|
|
59
130
|
return { match: null, reason: 'disabled' };
|
|
60
131
|
}
|
|
61
|
-
const threshold = getCharacterLibraryThreshold();
|
|
132
|
+
const threshold = getCharacterLibraryThreshold(representation);
|
|
62
133
|
let body;
|
|
63
134
|
try {
|
|
64
135
|
body = await forger.get(ENDPOINT, {
|
|
65
136
|
prompt,
|
|
137
|
+
representation,
|
|
66
138
|
// Deliberately 0, so the FLOOR is applied here and not by the route.
|
|
67
139
|
//
|
|
68
140
|
// Sending the real floor looks tidier and is worse: the route filters the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"character-library.js","sourceRoot":"","sources":["../../src/generators/character-library.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"character-library.js","sourceRoot":"","sources":["../../src/generators/character-library.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,EAAc,YAAY,EAAc,MAAM,aAAa,CAAC;AAKzF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC;;;;;;;;GAQG;AACH,wBAAgB,+BAA+B,IAAI,OAAO,CAEzD;AAED,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiCvB,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;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AAEzD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,GAAG,SAAS,CAGjG;AAsBD,oFAAoF;AACpF,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEtE;AA6CD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,eAAe,CAAC,
|
|
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,EAAc,YAAY,EAAc,MAAM,aAAa,CAAC;AAKzF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC;;;;;;;;GAQG;AACH,wBAAgB,+BAA+B,IAAI,OAAO,CAEzD;AAED,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiCvB,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;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AAEzD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,GAAG,SAAS,CAGjG;AAsBD,oFAAoF;AACpF,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEtE;AA6CD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,eAAe,CAAC,CAgJ1B"}
|
|
@@ -48,7 +48,7 @@ export const characterParamsSchema = z.object({
|
|
|
48
48
|
voxelize: z.boolean()
|
|
49
49
|
.optional()
|
|
50
50
|
.default(true)
|
|
51
|
-
.describe('Voxelize the rigged body (default — the voxel house style). false keeps the textured low-poly rig the forger makes first, for a game whose artStyle is low-poly; the
|
|
51
|
+
.describe('Voxelize the rigged body (default — the voxel house style). false keeps the textured low-poly rig the forger makes first, for a game whose artStyle is low-poly; the library is then searched for a low-poly body rather than a voxel one.'),
|
|
52
52
|
meshModel: z.string()
|
|
53
53
|
.min(1)
|
|
54
54
|
.optional()
|
|
@@ -170,36 +170,35 @@ export async function generateCharacter(params, deps) {
|
|
|
170
170
|
// worse than forging. (zod fills the default, so "explicitly 150" and
|
|
171
171
|
// "omitted" are indistinguishable here — and identical in effect.)
|
|
172
172
|
//
|
|
173
|
-
//
|
|
174
|
-
//
|
|
173
|
+
// The art style picks the shelf, it does not decide whether to look: the
|
|
174
|
+
// catalogue holds a voxel body AND a textured low-poly rig per character, and
|
|
175
|
+
// asking for the wrong one would hand a low-poly game a pile of cubes. Each
|
|
176
|
+
// medium has its own dial, so low-poly can sit in `shadow` while voxel is live.
|
|
175
177
|
//
|
|
176
178
|
// An explicit meshModel suppresses it for the same reason a non-default
|
|
177
179
|
// headScale does: a library body was forged by whatever model made it, so
|
|
178
180
|
// handing one back would silently ignore the model the caller asked for --
|
|
179
181
|
// and on a paid mesh lane that is the entire point of the request.
|
|
180
|
-
const
|
|
182
|
+
const representation = input.voxelize ? 'voxel' : 'lowpoly';
|
|
183
|
+
const libraryMode = getCharacterLibraryMode(representation);
|
|
181
184
|
const libraryWanted = libraryMode !== 'off' && input.useLibrary;
|
|
182
185
|
const librarySearchable = libraryWanted
|
|
183
186
|
&& input.headScale === DEFAULT_HEAD_SCALE
|
|
184
|
-
&& input.voxelize
|
|
185
187
|
&& input.meshModel === undefined;
|
|
186
|
-
if (libraryWanted && !input.voxelize) {
|
|
187
|
-
logger.info('[character] Library skipped: it holds voxel bodies only and this request keeps the low-poly rig');
|
|
188
|
-
}
|
|
189
188
|
if (librarySearchable) {
|
|
190
189
|
onProgress('Searching the character library…');
|
|
191
|
-
const outcome = await findLibraryCharacter(input.prompt, { forger, logger });
|
|
190
|
+
const outcome = await findLibraryCharacter(input.prompt, { forger, logger, representation });
|
|
192
191
|
const percent = (value) => `${Math.round(value * 100)}%`;
|
|
193
192
|
if (outcome.match && libraryMode === 'on') {
|
|
194
193
|
const { sid, similarity, subject, description, assetUrl } = outcome.match;
|
|
195
194
|
onProgress(`Found a ready-made character: ${subject ?? sid} (${percent(similarity)} match) — no generation needed.`);
|
|
196
|
-
logger.info({ sid, similarity }, '[character] Using a library character');
|
|
195
|
+
logger.info({ sid, similarity, representation }, '[character] Using a library character');
|
|
197
196
|
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 } });
|
|
198
197
|
}
|
|
199
198
|
// `shadow` observes without substituting, and a miss falls through to the
|
|
200
199
|
// forge either way. The best score is logged even when it lost — that is the
|
|
201
200
|
// number that says whether the floor is set right.
|
|
202
|
-
logger.info({ mode: libraryMode, sid: outcome.match?.sid, reason: outcome.reason, topSimilarity: outcome.topSimilarity }, '[character] Library did not supply this character');
|
|
201
|
+
logger.info({ mode: libraryMode, representation, sid: outcome.match?.sid, reason: outcome.reason, topSimilarity: outcome.topSimilarity }, '[character] Library did not supply this character');
|
|
203
202
|
if (outcome.topSimilarity !== undefined && !outcome.match) {
|
|
204
203
|
onProgress(`No close library match (best ${percent(outcome.topSimilarity)}) — making a new character.`);
|
|
205
204
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"character.js","sourceRoot":"","sources":["../../src/generators/character.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,
|
|
1
|
+
{"version":3,"file":"character.js","sourceRoot":"","sources":["../../src/generators/character.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -22,8 +22,8 @@ export { generateReferenceImage, referenceImageParamsSchema, REFERENCE_IMAGE_WID
|
|
|
22
22
|
export type { ReferenceImageParams, ReferenceImageResult } from './generators/reference.js';
|
|
23
23
|
export { generateCharacter, characterParamsSchema, meshModelFor, meshModelIsPaid, LOW_POLY_MESH_MODEL, } from './generators/character.js';
|
|
24
24
|
export type { CharacterParams, CharacterResult } from './generators/character.js';
|
|
25
|
-
export { findLibraryCharacter, getCharacterLibraryMode, getCharacterLibraryThreshold, DEFAULT_LIBRARY_THRESHOLD, LIBRARY_CANDIDATE_LIMIT, } from './generators/character-library.js';
|
|
26
|
-
export type { CharacterLibraryMode, LibraryMissReason, LibrarySearchOutcome, VoxelCharacterMatch, } from './generators/character-library.js';
|
|
25
|
+
export { findLibraryCharacter, getCharacterLibraryMode, getCharacterLibraryThreshold, DEFAULT_LIBRARY_THRESHOLD, DEFAULT_LOWPOLY_LIBRARY_THRESHOLD, LIBRARY_CANDIDATE_LIMIT, } from './generators/character-library.js';
|
|
26
|
+
export type { CharacterLibraryMode, LibraryCharacterMatch, LibraryMissReason, LibraryRepresentation, LibrarySearchOutcome, VoxelCharacterMatch, } from './generators/character-library.js';
|
|
27
27
|
export { generateProp, propParamsSchema } from './generators/prop.js';
|
|
28
28
|
export type { PropParams, PropResult } from './generators/prop.js';
|
|
29
29
|
export { generatePropVoxels, propVoxelParamsSchema, propVoxelGrids } from './generators/prop-voxel.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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
|
@@ -11,7 +11,7 @@ export { formatZodIssues } from './validation.js';
|
|
|
11
11
|
export { generateImageAsset, imageAssetParamsSchema } from './generators/image.js';
|
|
12
12
|
export { generateReferenceImage, referenceImageParamsSchema, REFERENCE_IMAGE_WIDTH, REFERENCE_IMAGE_HEIGHT, } from './generators/reference.js';
|
|
13
13
|
export { generateCharacter, characterParamsSchema, meshModelFor, meshModelIsPaid, LOW_POLY_MESH_MODEL, } from './generators/character.js';
|
|
14
|
-
export { findLibraryCharacter, getCharacterLibraryMode, getCharacterLibraryThreshold, DEFAULT_LIBRARY_THRESHOLD, LIBRARY_CANDIDATE_LIMIT, } from './generators/character-library.js';
|
|
14
|
+
export { findLibraryCharacter, getCharacterLibraryMode, getCharacterLibraryThreshold, DEFAULT_LIBRARY_THRESHOLD, DEFAULT_LOWPOLY_LIBRARY_THRESHOLD, LIBRARY_CANDIDATE_LIMIT, } from './generators/character-library.js';
|
|
15
15
|
export { generateProp, propParamsSchema } from './generators/prop.js';
|
|
16
16
|
export { generatePropVoxels, propVoxelParamsSchema, propVoxelGrids } from './generators/prop-voxel.js';
|
|
17
17
|
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":"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,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,EACL,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAE/B,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,4BAA4B,EAC5B,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|