pixelkiln 0.20.0 → 0.20.2
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 +1 -1
- package/dist/cli.js +162 -33
- package/dist/cli.js.map +1 -1
- package/dist/index.cjs +162 -33
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +27 -3
- package/dist/index.d.ts +27 -3
- package/dist/index.js +162 -33
- package/dist/index.js.map +1 -1
- package/docs/AGENTS.md +2 -1
- package/docs/ARCHITECTURE.md +11 -3
- package/docs/CLI.md +9 -3
- package/docs/COMFYUI.md +8 -4
- package/docs/ENDPOINTS.md +1 -1
- package/docs/GENERATORS.md +4 -2
- package/docs/LIBRARY.md +10 -2
- package/docs/RECOVERY.md +10 -1
- package/docs/REVISIONS.md +2 -2
- package/package.json +1 -1
package/docs/AGENTS.md
CHANGED
|
@@ -29,7 +29,8 @@ With the skill loaded, an agent should:
|
|
|
29
29
|
5. Pass an explicit `--budget` within the amount the user authorized; use one
|
|
30
30
|
`provider=amount` ceiling for every paid provider in a mixed run.
|
|
31
31
|
6. Leave artwork selection in the local `pick` page unless the user gives a
|
|
32
|
-
specific selection rule.
|
|
32
|
+
specific selection rule. Treat a ComfyUI frame set as one choice. Never keep
|
|
33
|
+
only its best-looking members.
|
|
33
34
|
7. When a style declares `quality`, run manifest-mode `pixelkiln refine`; its
|
|
34
35
|
`fixerPython` can pin the project-local interpreter. Leave
|
|
35
36
|
approval to a named human reviewing the exact PNG, and require `refine check`
|
package/docs/ARCHITECTURE.md
CHANGED
|
@@ -111,9 +111,15 @@ plan → submit → poll → pick (when needed) → fetch
|
|
|
111
111
|
└──────── structural/inline outputs ────────┘
|
|
112
112
|
```
|
|
113
113
|
|
|
114
|
-
Remote ids are saved immediately after submission.
|
|
115
|
-
|
|
116
|
-
|
|
114
|
+
Remote ids are saved immediately after submission. Providers that need several
|
|
115
|
+
requests for one asset receive a checkpoint callback. Each accepted remote id
|
|
116
|
+
is written before the next request begins. An incomplete checkpoint remains
|
|
117
|
+
submit-actionable; a complete checkpoint is safe to poll even if the provider
|
|
118
|
+
is interrupted before returning. Checkpoints are reused only when provider,
|
|
119
|
+
generator, and resolved spec hash still match.
|
|
120
|
+
|
|
121
|
+
Generation and download failures remain separate, so paid work with a temporary
|
|
122
|
+
CDN failure is recoverable at zero generation cost. Each stage can be rerun independently;
|
|
117
123
|
`gen` is only their everyday orchestration. Planning maps current `processing`,
|
|
118
124
|
`review`, and `selected`/`download-failed` entries to `poll`, `pick`, and
|
|
119
125
|
`fetch`, respectively.
|
|
@@ -200,6 +206,8 @@ uploads manifest-owned PNG/JPEG inputs by content hash, submits an input-bound
|
|
|
200
206
|
clone, polls local history, and stores portable `comfyui://` output references
|
|
201
207
|
so a lockfile does not retain a workstation hostname or input path. It supports
|
|
202
208
|
`map` candidates and atomic `frames` sets from one still-image output node.
|
|
209
|
+
Each accepted frame prompt is checkpointed in the lockfile, so a retry resumes
|
|
210
|
+
at the first unsubmitted frame instead of queuing the whole set again.
|
|
203
211
|
Frame-set transport, ordered review/fetch, shared-palette refinement,
|
|
204
212
|
step/phase verification, approval, and packing have deterministic integration
|
|
205
213
|
coverage. Live Apple MPS runs cover a small Stable
|
package/docs/CLI.md
CHANGED
|
@@ -83,13 +83,17 @@ step. It does not run or approve that step on the user's behalf.
|
|
|
83
83
|
Queue selected missing/stale generation work without polling it. Enforces the
|
|
84
84
|
provider spacing and concurrency limits, validates estimates at the spending
|
|
85
85
|
boundary, and saves each remote id immediately. Revision inputs are rechecked
|
|
86
|
-
after any queue wait and before a provider request begins.
|
|
86
|
+
after any queue wait and before a provider request begins. For a provider that
|
|
87
|
+
needs several requests per asset, an unchanged incomplete checkpoint resumes
|
|
88
|
+
without repeating requests the provider already accepted.
|
|
87
89
|
|
|
88
90
|
### `poll`
|
|
89
91
|
|
|
90
92
|
Advance submitted jobs to completed, failed, or selection-ready states. It can
|
|
91
93
|
be rerun safely after an interrupted session. When work settles in another
|
|
92
94
|
stage, the command prints the exact next command instead of ending silently.
|
|
95
|
+
An incomplete multi-request checkpoint stays blocked here; rerun `submit` to
|
|
96
|
+
finish it before polling.
|
|
93
97
|
|
|
94
98
|
### `pick`
|
|
95
99
|
|
|
@@ -97,8 +101,10 @@ Open the local candidate-review UI for jobs with alternatives. The page keeps
|
|
|
97
101
|
native aspect ratios, uses exact integer zoom for small art, fits large work,
|
|
98
102
|
and centers the decision surface on wide displays. A revision row shows its
|
|
99
103
|
parent source beside the new candidates. A ComfyUI frame set appears as an
|
|
100
|
-
animated ordered strip and is accepted or left unresolved as a unit.
|
|
101
|
-
|
|
104
|
+
animated ordered strip and is accepted or left unresolved as a unit. Its preview
|
|
105
|
+
can be paused, starts paused when reduced motion is enabled, and stops while it
|
|
106
|
+
is offscreen. Arrow keys navigate, Enter selects, 1–9 choose directly, and 0
|
|
107
|
+
leaves a row unresolved. Only rows submitted
|
|
102
108
|
with **Apply selections** are written to the lockfile. Closing the window applies
|
|
103
109
|
nothing. See the [Getting started guide](GETTING_STARTED.md#start-a-new-project)
|
|
104
110
|
for a screenshot of the interface.
|
package/docs/COMFYUI.md
CHANGED
|
@@ -219,8 +219,12 @@ The frame count comes from the array, so it cannot disagree with a separate
|
|
|
219
219
|
count field.
|
|
220
220
|
|
|
221
221
|
PixelKiln submits one still workflow per value but tracks the result as one
|
|
222
|
-
asset.
|
|
223
|
-
|
|
222
|
+
asset. After ComfyUI accepts a prompt, PixelKiln saves its id before submitting
|
|
223
|
+
the next frame. An interrupted retry continues at the first missing frame. A
|
|
224
|
+
changed spec starts a fresh set. Incomplete sets cannot be polled into review,
|
|
225
|
+
and one failed render rejects the complete set while retaining every submitted
|
|
226
|
+
prompt id for diagnosis. The review page shows an animated loop and ordered
|
|
227
|
+
strip; accepting any frame accepts the whole set.
|
|
224
228
|
Fetch writes `hero-idle-frame-00.png`, `hero-idle-frame-01.png`, and so on.
|
|
225
229
|
`pack` already turns those role-stable files into a sprite sheet and atlas.
|
|
226
230
|
|
|
@@ -627,8 +631,8 @@ that GPU time, electricity, hosted hardware, or model licenses are free.
|
|
|
627
631
|
|
|
628
632
|
When `numImages` is greater than one, `pixelkiln pick` opens the same local
|
|
629
633
|
candidate review used by hosted providers. A `frames` job always opens an
|
|
630
|
-
ordered, animated whole-set review. The lockfile stores
|
|
631
|
-
prompt
|
|
634
|
+
ordered, animated whole-set review. The lockfile stores every accepted ComfyUI
|
|
635
|
+
prompt id, the expected frame count, output node, workflow hash, and selected output. Durable source
|
|
632
636
|
references use `comfyui://` rather than embedding a workstation hostname.
|
|
633
637
|
`pixelkiln restore` first uses the validated local content cache, then resolves
|
|
634
638
|
the portable reference against the current `COMFYUI_BASE_URL`.
|
package/docs/ENDPOINTS.md
CHANGED
|
@@ -121,7 +121,7 @@ Measured on one 64×64 riso badge with an exact 4-colour palette
|
|
|
121
121
|
| `resize` → 32px | 38 | 0.57 | cream+rust came back **gold** |
|
|
122
122
|
| `image-to-pixelart` → 32px | **455** | **0.00** | opaque grey background |
|
|
123
123
|
|
|
124
|
-
**`remove-background`
|
|
124
|
+
**`remove-background` also de-fringes.** It removed the
|
|
125
125
|
scattered sage-green speckles around the badge outline and left the three real
|
|
126
126
|
inks untouched. Colour count went *down*, transparency went *up*. It is the one
|
|
127
127
|
utility safe to run on palette-locked art.
|
package/docs/GENERATORS.md
CHANGED
|
@@ -148,8 +148,10 @@ packaging input.
|
|
|
148
148
|
|
|
149
149
|
Keep a fixed seed for identity, or opt into a deterministic `seedStep`. Use a
|
|
150
150
|
quality profile so every frame shares one palette and must agree on detected
|
|
151
|
-
native grid step and phase. The review page animates the sequence
|
|
152
|
-
ordered strip
|
|
151
|
+
native grid step and phase. The review page animates the sequence, shows the
|
|
152
|
+
ordered strip, and lets the reviewer pause playback. It starts paused when the
|
|
153
|
+
system requests reduced motion and stops while it is offscreen. After approval,
|
|
154
|
+
`pack` emits the sprite sheet and stable
|
|
153
155
|
`asset/frame-XX` atlas ids. See
|
|
154
156
|
[Set up ComfyUI](./COMFYUI.md#generate-an-ordered-frame-set).
|
|
155
157
|
|
package/docs/LIBRARY.md
CHANGED
|
@@ -57,8 +57,8 @@ and optional strength. Paths are excluded from the hash; input bytes are not.
|
|
|
57
57
|
|
|
58
58
|
`resumeActions` groups current paid-work states into `poll`, `pick`, and
|
|
59
59
|
`fetch`. It ignores stale specs and entries missing the remote id needed by
|
|
60
|
-
their stage
|
|
61
|
-
|
|
60
|
+
their stage. It also excludes incomplete multi-request checkpoints; those
|
|
61
|
+
remain actionable in `buildPlan` and must return through `submit`.
|
|
62
62
|
|
|
63
63
|
For custom orchestration, inspect the dependency gate directly:
|
|
64
64
|
|
|
@@ -284,6 +284,14 @@ every byte or scalar that can change provider output and must exclude
|
|
|
284
284
|
machine-local paths or credentials. Providers that omit the hook fail closed
|
|
285
285
|
when an asset declares non-empty `providerInputs`.
|
|
286
286
|
|
|
287
|
+
`Provider.submit` receives an optional third `SubmitContext` argument. A custom
|
|
288
|
+
provider that needs several remote mutations for one asset should call
|
|
289
|
+
`await context.checkpoint({ jobId, metadata, complete })` after each accepted
|
|
290
|
+
mutation and before starting the next one. PixelKiln persists that checkpoint
|
|
291
|
+
atomically. On an unchanged retry, `previousJobId` and `previousMetadata` let
|
|
292
|
+
the provider continue from the first missing request. Set `complete: true` only
|
|
293
|
+
when the returned job id is safe to poll as the complete asset.
|
|
294
|
+
|
|
287
295
|
These low-level operations intentionally accept one provider. A mixed-provider
|
|
288
296
|
caller should partition specs and plan items by `spec.provider`, instantiate
|
|
289
297
|
each adapter independently, and preserve the provider recorded on a lock entry
|
package/docs/RECOVERY.md
CHANGED
|
@@ -23,7 +23,8 @@ Use the lock state rather than guessing which stage to rerun:
|
|
|
23
23
|
|
|
24
24
|
| State | Safe next command |
|
|
25
25
|
|---|---|
|
|
26
|
-
|
|
|
26
|
+
| incomplete submission checkpoint | `pixelkiln submit` |
|
|
27
|
+
| complete `pending` or `processing` submission | `pixelkiln poll` |
|
|
27
28
|
| `review` | `pixelkiln pick` |
|
|
28
29
|
| `selected` or `download-failed` | `pixelkiln fetch` |
|
|
29
30
|
| downloaded output is missing | `pixelkiln restore` |
|
|
@@ -36,6 +37,14 @@ still refused; after inspecting it, `pixelkiln fetch --force` explicitly lets
|
|
|
36
37
|
the new result take ownership. This also recovers interrupted jobs created by
|
|
37
38
|
older PixelKiln versions that could not retain the prior output hash.
|
|
38
39
|
|
|
40
|
+
ComfyUI frame sets submit one prompt per frame. PixelKiln saves the compound
|
|
41
|
+
job after every accepted prompt, before asking ComfyUI to queue the next one.
|
|
42
|
+
If submission stops halfway through, `plan` reports the saved checkpoint and
|
|
43
|
+
`pixelkiln submit` continues at the first missing frame. `poll` will not advance
|
|
44
|
+
an incomplete set into review. A changed prompt, workflow, input image, seed
|
|
45
|
+
schedule, or other spec identity starts a fresh set instead of appending to old
|
|
46
|
+
prompt ids.
|
|
47
|
+
|
|
39
48
|
Provider adapters should keep expiring signed result URLs transient and store a
|
|
40
49
|
provider-neutral reference that can refresh them. Once ingestion succeeds,
|
|
41
50
|
PixelKiln removes credential-bearing URLs, inline data URLs, and local file URLs
|
package/docs/REVISIONS.md
CHANGED
|
@@ -66,8 +66,8 @@ An inpaint revision also declares a manifest-relative mask:
|
|
|
66
66
|
```
|
|
67
67
|
|
|
68
68
|
The mask must be a readable PNG. When the parent exists during planning, the
|
|
69
|
-
mask must have the same dimensions.
|
|
70
|
-
|
|
69
|
+
mask must have the same dimensions. The ComfyUI graph decides whether white or
|
|
70
|
+
black pixels mark edits, so test the graph in ComfyUI before running
|
|
71
71
|
it through PixelKiln. The mask bytes and parent bytes both participate in the
|
|
72
72
|
child spec hash.
|
|
73
73
|
|