pixelkiln 0.92.1 → 0.92.3
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/PROVIDERS.md +2 -2
- package/dist/cli.js +48 -24
- package/dist/cli.js.map +1 -1
- package/dist/index.cjs +52 -24
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +52 -26
- package/dist/index.d.ts +52 -26
- package/dist/index.js +50 -24
- package/dist/index.js.map +1 -1
- package/docs/ENDPOINTS.md +201 -23
- package/docs/GENERATORS.md +36 -27
- package/docs/PIXELLAB.md +6 -5
- package/docs/REVISIONS.md +36 -31
- package/package.json +1 -1
- package/skills/pixelkiln/references/pixellab-fidelity.md +2 -1
- package/skills/pixelkiln/references/pixellab-roadmap.md +44 -30
- package/skills/pixelkiln/references/pixellab.md +35 -29
|
@@ -26,6 +26,11 @@ confirmed gap with real demand rather than a guess. Nothing here is a
|
|
|
26
26
|
commitment to build it — it is what is missing, with the evidence for why it
|
|
27
27
|
might matter, so that decision can be made deliberately.
|
|
28
28
|
|
|
29
|
+
For which PixelLab endpoints PixelKiln already calls, and how much is measured
|
|
30
|
+
about each (so a live run can be chosen by risk), read the [validation
|
|
31
|
+
ledger](https://pixelkiln.griffen.codes/docs/endpoints#validation-ledger)
|
|
32
|
+
(`docs/ENDPOINTS.md`).
|
|
33
|
+
|
|
29
34
|
Each open entry names the PixelLab tool, why pixelkiln doesn't have it today,
|
|
30
35
|
and which tutorial(s) demonstrated real (not hypothetical) demand for it.
|
|
31
36
|
|
|
@@ -52,7 +57,8 @@ and which tutorial(s) demonstrated real (not hypothetical) demand for it.
|
|
|
52
57
|
`mode: "skeleton-v3"` poses a template with the skeleton video model
|
|
53
58
|
(2 to 4 generations and 3 to 5 minutes per direction, beta, Tier 1 and
|
|
54
59
|
up). Now a character loop's `mode: "skeleton-v3"`; see
|
|
55
|
-
`docs/CHARACTERS.md`.
|
|
60
|
+
`docs/CHARACTERS.md`. A template loop on a v3 character billed 3
|
|
61
|
+
generations live (October 2026).
|
|
56
62
|
|
|
57
63
|
- **Masked inpainting and whole-image editing** — was the single largest gap
|
|
58
64
|
found (routine in at least 6 of the 26 tutorials). Now the `revision` asset
|
|
@@ -118,8 +124,8 @@ and which tutorial(s) demonstrated real (not hypothetical) demand for it.
|
|
|
118
124
|
generating a 384×216 scene background in "How to Make Animated Pixel Art
|
|
119
125
|
Scenes with PixelLab." Closed by the `imagePro` generator; see
|
|
120
126
|
`pixellab.md`. Reference images and a style image
|
|
121
|
-
(`reference_images`/`style_image`) remain unmodeled
|
|
122
|
-
|
|
127
|
+
(`reference_images`/`style_image`) remain unmodeled. The completed job's
|
|
128
|
+
response shape has been read live (a 64×64 call billed 10).
|
|
123
129
|
- **A standalone single isometric tile** (`/create-isometric-tile`, a third,
|
|
124
130
|
separate path to isometric content distinct from both `tiles`'
|
|
125
131
|
`tileType: "isometric"` and `terrain`'s `/create-tileset`, which is
|
|
@@ -147,11 +153,11 @@ and which tutorial(s) demonstrated real (not hypothetical) demand for it.
|
|
|
147
153
|
rotation, states, or animation for a plain object. Closed by the
|
|
148
154
|
`objectPro` generator; see `pixellab.md`. It reuses `character`'s own
|
|
149
155
|
`asset.state`/`asset.animation` authoring shapes and mirror handling
|
|
150
|
-
rather than inventing parallel ones. **
|
|
151
|
-
|
|
152
|
-
formula,
|
|
153
|
-
|
|
154
|
-
|
|
156
|
+
rather than inventing parallel ones. **The base is measured**: a 32px
|
|
157
|
+
base billed 6 and returned 8 files (November 2026), matching `character`
|
|
158
|
+
pro-flash's formula, which the estimate assumes since the request bodies
|
|
159
|
+
are near-identical minus `template_id`. States and `pro` animations remain
|
|
160
|
+
that assumption pending a live check. Batch "pack" generation (N distinct objects from
|
|
155
161
|
one call) is covered on `1dir` by its `batch` field — see below.
|
|
156
162
|
- **Pixel correction** (`/correct-pixelart`, a dedicated cleanup pass distinct
|
|
157
163
|
from `image-to-pixelart` — the latter is documented, docs/ENDPOINTS.md, as
|
|
@@ -203,17 +209,21 @@ and which tutorial(s) demonstrated real (not hypothetical) demand for it.
|
|
|
203
209
|
`pixellab.md`. `lastFrame` covers both the "pin an ending pose" and the
|
|
204
210
|
"chain from a prior animation's final frame" cases — it is just a
|
|
205
211
|
manifest-relative image, which can be any earlier asset's own generated
|
|
206
|
-
output file. **
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
`
|
|
212
|
+
output file. **Both ran live in November 2026**: `animate` at 64×64 and 4 frames
|
|
213
|
+
billed 1 (5 frames back, input included), `animate-pixminimax` billed 1 at 8
|
|
214
|
+
frames and 2 at 16 (9 and 17 frames back), and the completed jobs were read
|
|
215
|
+
correctly. `animate`'s cost borrows `character`'s measured v3-loop formula;
|
|
216
|
+
`animate-pixminimax` follows PixelLab's published table. The frame list is
|
|
217
|
+
still extracted defensively from several plausible field names. The dedicated
|
|
211
218
|
**Interpolate** endpoint (`/interpolation-v2`, a separate "Pro" two-keyframe
|
|
212
219
|
tool distinct from `last_frame` pinning on the animate endpoints above) is
|
|
213
220
|
now wrapped too, as the `interpolate` revision mode (parent = start
|
|
214
221
|
keyframe, required `lastFrame` = end keyframe), alongside
|
|
215
222
|
`/edit-animation-v2` as `edit-animation` (one text edit across a whole
|
|
216
|
-
frame set). Both
|
|
223
|
+
frame set). Both ran live in November 2026 and billed 10 each (a 64×64
|
|
224
|
+
`interpolate` returning 14 frames; an `edit-animation` of a 9-frame 64×64
|
|
225
|
+
set), on the 10/15/25 Pro canvas tiers; the planner used to read them as 25
|
|
226
|
+
and is calibrated. Larger canvases are unbilled.
|
|
217
227
|
Real demonstrated demand for Interpolate: "Level Up Your Game: Custom
|
|
218
228
|
Sprite Animation Tutorial" used it
|
|
219
229
|
repeatedly, in Aseprite via PixelLab's own extension, as the fix for an
|
|
@@ -278,7 +288,8 @@ and which tutorial(s) demonstrated real (not hypothetical) demand for it.
|
|
|
278
288
|
`/generate-ui-v2` ("Generate UI (Pro)": one element from a description,
|
|
279
289
|
16px and up, with an optional concept image and palette hint), found on a
|
|
280
290
|
later full read of the path list and now wrapped as the `uiElement`
|
|
281
|
-
generator; see `docs/GENERATORS.md#uielement`.
|
|
291
|
+
generator; see `docs/GENERATORS.md#uielement`. A 32×32 call billed 10 and
|
|
292
|
+
returned 64 candidates (November 2026). **Splitting into individual elements and
|
|
282
293
|
nine-slice are not buildable at all**: `GET /ui-assets/{id}` returns one
|
|
283
294
|
flat composited image with no per-piece sub-image or bounding-box data in
|
|
284
295
|
its response schema, regardless of how many `pieces` the request declared.
|
|
@@ -297,10 +308,11 @@ and which tutorial(s) demonstrated real (not hypothetical) demand for it.
|
|
|
297
308
|
this one. **Cost confirmed live, and it overturned the borrowed
|
|
298
309
|
formula**: a real 256x192 call against a Tier 2 account billed exactly 20
|
|
299
310
|
generations (balance 4979.8 → 4959.8), the low end of the `create_ui_asset`
|
|
300
|
-
MCP tool description's "20-40 generations" claim
|
|
311
|
+
MCP tool description's then "20-40 generations" claim (10-25 since the
|
|
312
|
+
October 2026 cut). No dedicated cost branch
|
|
301
313
|
exists, so `uiAsset` still falls through to the same canvas-tier formula
|
|
302
314
|
`1dir`/`tiles` use, which — given this generator's 192px floor — always
|
|
303
|
-
predicts the
|
|
315
|
+
predicts the 25 ceiling; the measured call billed the floor price at an
|
|
304
316
|
area well past where that formula would bill the ceiling, so it does not
|
|
305
317
|
actually describe `uiAsset`'s pricing. Left unpatched from one data point:
|
|
306
318
|
over-reading stays the safe `--budget` direction, but a real call likely
|
|
@@ -325,9 +337,8 @@ and which tutorial(s) demonstrated real (not hypothetical) demand for it.
|
|
|
325
337
|
`animate-with-skeleton-v3` against a *different* reference image reusing
|
|
326
338
|
those keypoints — a two-endpoint composition a person can now build by
|
|
327
339
|
hand with the primitives above, not a primitive pixelkiln itself
|
|
328
|
-
automates.
|
|
329
|
-
|
|
330
|
-
MCP tool schema, not an observed call.
|
|
340
|
+
automates. Both endpoints have run live (see above); request field names
|
|
341
|
+
came from the MCP tool schema, and the live run found `description` is required.
|
|
331
342
|
- **Remove background** (`/remove-background`, a transparent cutout of one
|
|
332
343
|
image up to 400x400, `simple` or `complex` task, optional foreground text
|
|
333
344
|
hint) — closed by the `revision` asset shape's `remove-background` mode.
|
|
@@ -451,7 +462,8 @@ and which tutorial(s) demonstrated real (not hypothetical) demand for it.
|
|
|
451
462
|
- Cost quotes (provisional): `create` 5 at 32 and 64px, 9 at 256px;
|
|
452
463
|
`edit`/`inpaint` 5 at 64px, `inpaint` 6 at 128px; `character` and
|
|
453
464
|
`object` at 64px `image: 5, rotations: 1, total: 6`, matching
|
|
454
|
-
pixelkiln's measured `proFlashCharacterCost`.
|
|
465
|
+
pixelkiln's measured `proFlashCharacterCost`. Only `create` has been billed
|
|
466
|
+
live (a 32×32 still with a palette, 5); `edit` and `inpaint` have not.
|
|
455
467
|
|
|
456
468
|
Still unmodeled: `edit`'s `"reference"` method, the
|
|
457
469
|
`use_color_palette_correction` flag (snap the edit back to the source's
|
|
@@ -536,15 +548,17 @@ missing:
|
|
|
536
548
|
- **Trimming a loop's repeated frame.** The video deletes the last frame of
|
|
537
549
|
a fireball loop because it repeats the first. `animate_image_pixminimax`
|
|
538
550
|
says `get_image` returns `frame_count + 1` images with index 0 the input
|
|
539
|
-
unchanged.
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
551
|
+
unchanged. Confirmed live (November 2026): an 8-frame clip came back as 9
|
|
552
|
+
frames and a 16-frame clip as 17, with pixelkiln's frame extraction reading
|
|
553
|
+
all of them, so the input frame is in the set. There is no manifest way to
|
|
554
|
+
drop a frame.
|
|
555
|
+
- **The cost estimate used to under-read long clips (fixed).** The MCP tool
|
|
556
|
+
prices PixMiniMax by generation time: 64×64 at 4, 8, 16, and 40 frames costs
|
|
557
|
+
1, 1, 2, and 6 generations. pixelkiln's old placeholder,
|
|
558
|
+
`ceil(width × height × frames / 65536)`, gave 1, 1, 1, and 3, and a live
|
|
559
|
+
16-frame clip billed 2 against a plan of 1. The estimate (`pixMiniMaxCost`)
|
|
560
|
+
now follows the published points and extrapolates above them; the 40-frame
|
|
561
|
+
point has not been billed.
|
|
548
562
|
- **Joining two clips.** The video joins two orb animations end to end in
|
|
549
563
|
Aseprite. pixelkiln has no frame-set concatenation; `lastFrame` can pin a
|
|
550
564
|
clip's ending to another clip's frame file, but the two sets stay separate.
|
|
@@ -26,11 +26,11 @@ providers, or before any PixelLab account operation.
|
|
|
26
26
|
| `tiles` | Ground variations or connected structures | 10–25 generations |
|
|
27
27
|
| `terrain` | A two-terrain Wang tileset for elevation (grass-to-water, floor-to-cliff), or a sidescroller platform set | Sidescroller **3**, measured. Pro **15** at 32px, measured (a connected second set also billed 15). Pro **25** at 64px and standard **3** measured too; standard plans at 4, the top of PixelLab's quoted 1–4 |
|
|
28
28
|
| `imagePro` | A larger or non-square background/scene, or real style transfer; takes the style `palette` as a hard constraint | **10–25 generations** by canvas (64px billed 10; a flat 40 before October 2026) |
|
|
29
|
-
| `character` | A character in 4 or 8 directions, its poses (`state`), its loops (`animation`), bust `portrait`s, and `outfit` transfers onto a loop | 1 per standard base, 6 per pro-flash base at 64px (1 from a `reference`),
|
|
30
|
-
| `objectPro` | A prop, creature, or vehicle that needs rotations, states, or loops but has no character rig | 6 per base at
|
|
29
|
+
| `character` | A character in 4 or 8 directions, its poses (`state`), its loops (`animation`), bust `portrait`s, and `outfit` transfers onto a loop | 1 per standard base, 6 per pro-flash base at 64px (1 from a `reference`), 10–25 per pose or portrait (20–40 before the October 2026 cut), 1 per template loop per direction (2–4 as `skeleton-v3`), 20 per outfit (measured once, before the cut) |
|
|
30
|
+
| `objectPro` | A prop, creature, or vehicle that needs rotations, states, or loops but has no character rig | 6 per base (billed 6 at 32px, November 2026; 1 from a `reference`, unmeasured); states and animations assumed to match `character` pro-flash |
|
|
31
31
|
| `isometricTile` | One standalone isometric tile (a raised mesa, a cliff block), 16–64px | **1 generation, measured once** (32px `block`) |
|
|
32
|
-
| `uiAsset` | A UI panel, button, health bar, or other chrome, from precise `pieces` and/or named `elements` | **20 generations, measured once** (256×192); the borrowed canvas-tier estimate still predicts
|
|
33
|
-
| `uiElement` | One UI element (button, slot, bar, dialogue box) from the prompt, 16px and up, with an optional concept image | 10–25 generations
|
|
32
|
+
| `uiAsset` | A UI panel, button, health bar, or other chrome, from precise `pieces` and/or named `elements` | **20 generations, measured once** (256×192, before the October 2026 cut); the borrowed canvas-tier estimate still predicts the 25 ceiling |
|
|
33
|
+
| `uiElement` | One UI element (button, slot, bar, dialogue box) from the prompt, 16px and up, with an optional concept image | 10–25 generations (a 32×32 call billed 10; 64 candidates at 32×32) |
|
|
34
34
|
| `vfx` | An animated effect (explosion, aura, lightning, status icons) from a `vfx` block: a `preset` or `recipe`, `parts`, an optional `sprite` to build around; cut into an ordered frame set. Or a `description` (+ `artist`: `lite`/`pro`, a local PNG `sprite`) for PixelLab's paid VFX artist | workbench **free** (a renderer, not a model); `description`: lite 1–5, pro 6–28 by sprite size, billed up to 2× the quote, which is what plan counts (a lite effect with no sprite billed its quote of 1, measured once) |
|
|
35
35
|
| `imageProFlash` | A styled still on the Pro Flash model (style image + `styleTraits`), 16–256px in multiples of 4; also the natural source for a Pro Flash character's south sprite | 5–9 generations, PixelLab's provisional quote |
|
|
36
36
|
|
|
@@ -221,10 +221,9 @@ mapping is not wrapped: it is "single images only", and this endpoint
|
|
|
221
221
|
returns a grid of candidates below 171px. Reference
|
|
222
222
|
images and a style image (`reference_images`, `style_image` +
|
|
223
223
|
`style_options`, up to 4 subject references plus one style reference) exist
|
|
224
|
-
on this endpoint but are not modeled yet
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
contradicts what it assumes.
|
|
224
|
+
on this endpoint but are not modeled yet. The completed job has been read
|
|
225
|
+
live (a 64×64 call billed 10); `pollImagePro` in `src/providers/pixellab.ts`
|
|
226
|
+
still reads it defensively.
|
|
228
227
|
|
|
229
228
|
`objectPro` wraps `/create-object-pro-flash` — the same base → state →
|
|
230
229
|
animation family `character` uses (`docs/CHARACTERS.md`), for PixelLab's
|
|
@@ -244,11 +243,12 @@ target `south` — passing any other direction, or `directions` at all to the
|
|
|
244
243
|
API for a 1-direction object, is what the endpoint itself 400s on.
|
|
245
244
|
Regenerating an already-animated direction is simpler than `character`'s
|
|
246
245
|
own "find and delete the prior take" dance: `/objects/{id}/animations` has
|
|
247
|
-
its own `replace_existing` flag, which PixelKiln always passes. **Cost
|
|
248
|
-
|
|
249
|
-
identically to `character` pro-flash's own
|
|
250
|
-
(`proFlashCharacterCost`), since the request bodies are
|
|
251
|
-
`template_id
|
|
246
|
+
its own `replace_existing` flag, which PixelKiln always passes. **Cost: the
|
|
247
|
+
base is measured** (32px billed 6 and returned 8 files, November 2026) —
|
|
248
|
+
`objectProCost()` prices it identically to `character` pro-flash's own
|
|
249
|
+
measured formula (`proFlashCharacterCost`), since the request bodies are
|
|
250
|
+
near-identical minus `template_id`. States and `pro` animations are still
|
|
251
|
+
that assumption, pending a live check.
|
|
252
252
|
`objectPro`'s own place in `pixelkiln adopt` is not modeled yet. (N distinct
|
|
253
253
|
objects from one call, PixelLab's Object Creator "pack", is the `1dir`
|
|
254
254
|
`batch` field above.) `pixelkiln gallery --edit` offers "+ New state" and
|
|
@@ -318,10 +318,11 @@ dedicated "state" mechanism — it is a plain `revision` (image-to-image) of
|
|
|
318
318
|
the base panel, the same mechanism every other generator already has.
|
|
319
319
|
**Cost: confirmed live at one data point.** A real 256×192 call against a
|
|
320
320
|
Tier 2 account billed exactly 20 generations (balance 4979.8 → 4959.8),
|
|
321
|
-
matching the low end of the `create_ui_asset` MCP tool's "20–40
|
|
322
|
-
claim
|
|
323
|
-
|
|
324
|
-
|
|
321
|
+
matching the low end of the `create_ui_asset` MCP tool's then "20–40
|
|
322
|
+
generations" claim (PixelLab cut it to 10–25 in October 2026). No dedicated
|
|
323
|
+
cost branch exists, so pixelkiln still estimates it with the same
|
|
324
|
+
canvas-tier formula `1dir`/`tiles` use — which predicts the 25 ceiling
|
|
325
|
+
for every valid `uiAsset` size, since the 192px floor already clears
|
|
325
326
|
that formula's own top tier. The measured call disproves the formula for
|
|
326
327
|
this generator (it billed the floor price at an area where `1dir`/`tiles`
|
|
327
328
|
would bill the ceiling), but the estimate is left as-is, an intentional
|
|
@@ -332,9 +333,10 @@ the prompt, no `pieces`/`elements` layout, sizes from 16×16 (up to 792 wide,
|
|
|
332
333
|
688 tall, aspect-gated upstream). A style's one `styleImages` entry becomes
|
|
333
334
|
the `concept_image` (design guidance); `uiColorPalette` is sent as
|
|
334
335
|
`color_palette`. Reach for it over `uiAsset` for icons, slots, and small
|
|
335
|
-
widgets under `uiAsset`'s 192px floor.
|
|
336
|
-
|
|
337
|
-
|
|
336
|
+
widgets under `uiAsset`'s 192px floor. A 32×32 call billed 10 and returned
|
|
337
|
+
64 candidates (November 2026); the plan borrows the 10/15/25 canvas tiers and
|
|
338
|
+
counts candidates by size (`uiElementCandidateCount`), and sizes other than
|
|
339
|
+
32px are unbilled.
|
|
338
340
|
|
|
339
341
|
`imageProFlash` wraps `/create-image-pro-flash`, the Pro Flash model as a plain
|
|
340
342
|
still: priced 5 up to 96px, 6 up to 208px, 9 beyond (PixelLab's own
|
|
@@ -529,17 +531,17 @@ written as a set (a character's directions, an animation's frames) goes to
|
|
|
529
531
|
so every member shares one palette or edit; the other modes refuse a set
|
|
530
532
|
parent. `reduce-colors`/`correct-pixelart` cost is **confirmed live**: a flat
|
|
531
533
|
0.1 generations each (not the schema's dollar-denominated example), at least
|
|
532
|
-
at a 32×32 source — `animate`/`animate-pixminimax`/`
|
|
533
|
-
`
|
|
534
|
-
`animate-skeleton`
|
|
535
|
-
`animate_with_skeleton_v3` MCP tool schema, a more
|
|
536
|
-
the OpenAPI document the others are taken from,
|
|
537
|
-
|
|
534
|
+
at a 32×32 source — `animate`/`animate-pixminimax`/`interpolate`/
|
|
535
|
+
`edit-animation` remain schema-only and unexercised.
|
|
536
|
+
`animate-skeleton` has run live (8 frames billed exactly 3); its request
|
|
537
|
+
field names come from the `animate_with_skeleton_v3` MCP tool schema, a more
|
|
538
|
+
authoritative source than the OpenAPI document the others are taken from, and
|
|
539
|
+
the run found `description` is required. `estimate-skeleton` (auto-derive a reference image's own keypoints) is
|
|
538
540
|
wrapped too, but deliberately as a standalone `pixelkiln estimate-skeleton`
|
|
539
541
|
CLI command, never inside `submitRevision` — see
|
|
540
542
|
[pixellab-roadmap.md](./pixellab-roadmap.md)'s now-closed skeleton-driven-
|
|
541
|
-
animation entry for why composing two
|
|
542
|
-
|
|
543
|
+
animation entry for why composing two endpoints in one submission was
|
|
544
|
+
rejected.
|
|
543
545
|
|
|
544
546
|
`animate-pixminimax`'s `direction` + `enhancePrompt` combination has a
|
|
545
547
|
measured-in-practice gotcha, not just a schema quirk: PixelLab's own tutorial
|
|
@@ -621,7 +623,11 @@ high-fidelity showcase asset) rather than a default, read
|
|
|
621
623
|
[pixellab-fidelity.md](./pixellab-fidelity.md) before choosing `size`,
|
|
622
624
|
`detail`, `shading`, or `outline`. For what PixelLab can do that this adapter
|
|
623
625
|
does not yet reach at all, read [pixellab-roadmap.md](./pixellab-roadmap.md)
|
|
624
|
-
before proposing new work.
|
|
626
|
+
before proposing new work. To pick which PixelLab endpoint to spend a live run
|
|
627
|
+
on, read the [validation
|
|
628
|
+
ledger](https://pixelkiln.griffen.codes/docs/endpoints#validation-ledger)
|
|
629
|
+
(`docs/ENDPOINTS.md`): it rates each endpoint by what has been measured and
|
|
630
|
+
what a wrong guess could cost.
|
|
625
631
|
|
|
626
632
|
For setup and current field constraints, use
|
|
627
633
|
<https://pixelkiln.griffen.codes/docs/pixellab>. When working in the PixelKiln
|