@koda-sl/baker-cli 0.67.0 → 0.70.0
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/README.md +71 -14
- package/dist/{chunk-K6LHXCKD.js → chunk-XFDZVKLF.js} +11 -3
- package/dist/chunk-XFDZVKLF.js.map +1 -0
- package/dist/cli.js +518 -607
- package/dist/cli.js.map +1 -1
- package/dist/engine/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-K6LHXCKD.js.map +0 -1
package/README.md
CHANGED
|
@@ -1587,6 +1587,8 @@ Each external source is its own subcommand. Pick the verb that matches the sourc
|
|
|
1587
1587
|
| `baker images find <q>` | Fanout: library + opted-in providers | off |
|
|
1588
1588
|
| `baker images stock <q> [--type photo\|vector\|psd]` | Magnific (Freepik's dev API) — photos, vectors, illustrations, PSDs (~250M assets) | off |
|
|
1589
1589
|
| `baker images google <q>` | Google Images via the official Custom Search JSON API | off |
|
|
1590
|
+
| `baker images pinterest <q>` | Pinterest reference imagery via ScrapeCreators (photo-real mood boards) | off |
|
|
1591
|
+
| `baker images generate <prompt>` | AI image generation via OpenRouter image models (cost-tracked) | **always on** (the bytes are the artifact) |
|
|
1590
1592
|
| `baker images logo <domain>` | Brand logo via Brandfetch CDN | **on** (top 1) |
|
|
1591
1593
|
| `baker images icon <name>` | Iconify (200+ icon sets, no API key) | off (CDN URL is stable) |
|
|
1592
1594
|
| `baker images gif <q>` | Reaction GIFs / memes via Giphy (paid-social creative) | off |
|
|
@@ -1726,6 +1728,69 @@ Requires both `GOOGLE_CUSTOM_SEARCH_API_KEY` and `GOOGLE_CUSTOM_SEARCH_ENGINE_ID
|
|
|
1726
1728
|
| `--auto-ingest` | Ingest top N (0–20, default 0) and return Baker-owned URLs on ingested hits |
|
|
1727
1729
|
| `--context` | Free-text hint passed to Gemini describe to bias the generated description and tags (overrides provider-derived context on auto-ingest paths) |
|
|
1728
1730
|
|
|
1731
|
+
### `baker images pinterest <query>`
|
|
1732
|
+
|
|
1733
|
+
Pinterest image search via ScrapeCreators. The best source for **photo-real reference and mood imagery** — interiors, fashion, food, product styling, lifestyle. ⚠ Unverified, trademark-bearing web content — use for *reference*, not republishing. Strongest paired with `generate --reference` (find the look on Pinterest, then generate an owned, on-brand image from it). Auto-ingest is opt-in.
|
|
1734
|
+
|
|
1735
|
+
```bash
|
|
1736
|
+
baker images pinterest "scandinavian living room"
|
|
1737
|
+
baker images pinterest "minimalist skincare product photography" --limit 20
|
|
1738
|
+
baker images pinterest "cozy coffee shop interior" --auto-ingest 2 --context "Mood reference for hero photography"
|
|
1739
|
+
```
|
|
1740
|
+
|
|
1741
|
+
**Flags:**
|
|
1742
|
+
|
|
1743
|
+
| Flag | Description |
|
|
1744
|
+
|-----------------|----------------------------------------------------------------------------|
|
|
1745
|
+
| `--limit` | Max results (1–20, default 5) |
|
|
1746
|
+
| `--auto-ingest` | Ingest top N (0–20, default 0) and return Baker-owned URLs on ingested hits |
|
|
1747
|
+
| `--context` | Free-text hint passed to Gemini describe on auto-ingest (overrides the pin title) |
|
|
1748
|
+
|
|
1749
|
+
Endpoint `api.scrapecreators.com/v1/pinterest/search` (`SCRAPE_CREATORS_API_KEY`), $0.00188/request, 1-day cache.
|
|
1750
|
+
|
|
1751
|
+
### `baker images generate <prompt>`
|
|
1752
|
+
|
|
1753
|
+
Generate an image with AI (OpenRouter image models) and ingest it into the library. The generated bytes **are** the artifact, so the result is always auto-ingested (described + embedded) — the next `baker images library` query finds it. Cost is tracked per request via OpenRouter's reported usage. Models and defaults mirror the Baker canvas.
|
|
1754
|
+
|
|
1755
|
+
```bash
|
|
1756
|
+
baker images generate "a friendly golden retriever in a bright modern living room" --aspect-ratio 16:9
|
|
1757
|
+
baker images generate "hero shot of a matte black water bottle on wet marble, studio light" \
|
|
1758
|
+
--model google/gemini-3-pro-image-preview --image-size 2K --aspect-ratio 4:5
|
|
1759
|
+
baker images generate "home office hero, warm minimalist, natural light, 35mm photo" \
|
|
1760
|
+
--reference "https://i.pinimg.com/…/pin1.jpg,https://…/brand-product.png"
|
|
1761
|
+
baker images generate "put this product on a marble countertop in soft daylight" \
|
|
1762
|
+
--reference "./src/brand/logos/product.png,./refs/kitchen-mood.jpg" # local sandbox files
|
|
1763
|
+
baker images generate "flat geometric mascot, brand palette" \
|
|
1764
|
+
--model recraft/recraft-v4.1-pro-vector --rgb-colors "[[10,10,10],[255,80,0]]" --bg-rgb "[255,255,255]"
|
|
1765
|
+
```
|
|
1766
|
+
|
|
1767
|
+
**Models** (`--model`, default `openai/gpt-5.4-image-2`):
|
|
1768
|
+
|
|
1769
|
+
| Model | Best for | Aspect ratios | Sizes |
|
|
1770
|
+
|---|---|---|---|
|
|
1771
|
+
| `openai/gpt-5.4-image-2` **(default)** | Photoreal + cleanest in-image text — ad/landing reproduction | standard set | `1K` `2K` `4K` |
|
|
1772
|
+
| `google/gemini-3-pro-image-preview` | Highest fidelity (Nano Banana Pro) | standard set | `1K` `2K` `4K` |
|
|
1773
|
+
| `google/gemini-3.5-flash` | Fast; extreme aspect ratios | standard **+** `1:4` `4:1` `1:8` `8:1` | `0.5K`–`4K` |
|
|
1774
|
+
| `google/gemini-3.1-flash-image-preview` | Same as 3.5 flash (preview) | extreme set | `0.5K`–`4K` |
|
|
1775
|
+
| `recraft/recraft-v4.1-pro-vector` | Vector/flat/SVG-style with palette control | standard set | `1K` `2K` `4K` |
|
|
1776
|
+
|
|
1777
|
+
Standard aspect ratios: `1:1` `2:3` `3:2` `3:4` `4:3` `4:5` `5:4` `9:16` `16:9` `21:9`.
|
|
1778
|
+
|
|
1779
|
+
**Flags:**
|
|
1780
|
+
|
|
1781
|
+
| Flag | Description |
|
|
1782
|
+
|---|---|
|
|
1783
|
+
| `--model` | Model id (default `openai/gpt-5.4-image-2`) |
|
|
1784
|
+
| `--aspect-ratio` | Output aspect ratio (default `1:1`) |
|
|
1785
|
+
| `--image-size` | Resolution: `1K` (default) `2K` `4K` (Gemini flash also `0.5K`) |
|
|
1786
|
+
| `--reference` | Comma-separated visual references, each either a **public image URL** (Pinterest / stock / library `imageUrl`) **or a local file path** (a sandbox image — brand logo, product shot, cropped photo, screenshot). Local files are downscaled (≤1536px) and inlined automatically — no manual upload. Applied in order; the biggest quality lever for photographed, on-brand output. Split is on `,`, so a URL containing a literal comma in its query string would be torn in two (rare for image CDNs — pass it alone if it occurs); a single `data:` URL is taken whole. |
|
|
1787
|
+
| `--strength` | Recraft only: vectorization strength 0–1 |
|
|
1788
|
+
| `--rgb-colors` | Recraft only: JSON palette `[[r,g,b],…]` |
|
|
1789
|
+
| `--bg-rgb` | Recraft only: JSON background `[r,g,b]` |
|
|
1790
|
+
| `--context` | Describe-hint override for the ingested row (defaults to the prompt) |
|
|
1791
|
+
|
|
1792
|
+
Returns `{ images: [{ imageId, imageUrl, deduped, width, height }], model, costUsd }`. `imageUrl` is library-owned and ready to place. Requires `OPENROUTER_API_KEY` on the Convex deployment. No `seed` (OpenRouter image_config has no seed slot). Identical re-generations dedup by content hash.
|
|
1793
|
+
|
|
1729
1794
|
### `baker images logo <domain>`
|
|
1730
1795
|
|
|
1731
1796
|
Brand logo via Brandfetch CDN (`fallback/404`). Probes all 5 logo variants in parallel and returns whichever ones the domain actually publishes. Auto-ingests the first by default.
|
|
@@ -2162,7 +2227,7 @@ Manage company-scoped scheduled recipes that spawn Work Actions later or on a ca
|
|
|
2162
2227
|
baker scheduled-actions list
|
|
2163
2228
|
baker scheduled-actions get <id-or-temp_sched_id>
|
|
2164
2229
|
|
|
2165
|
-
baker scheduled-actions create --name "Weekly report" --description "Prepare report" --cron "0 9 * * MON" --timezone Europe/Madrid
|
|
2230
|
+
baker scheduled-actions create --name "Weekly report" --description "Prepare report" --cron "0 9 * * MON" --timezone Europe/Madrid
|
|
2166
2231
|
baker scheduled-actions create --name "Launch reminder" --description "Check launch" --run-at "2026-09-01T07:00:00Z" --disabled --no-spawn-agent --prompt "Focus on blockers"
|
|
2167
2232
|
|
|
2168
2233
|
baker scheduled-actions update <id-or-temp_sched_id> --enabled false
|
|
@@ -2182,7 +2247,6 @@ Rules:
|
|
|
2182
2247
|
- Company Timezone is the default; `--timezone` is an explicit IANA override.
|
|
2183
2248
|
- Scheduled actions spawn agents by default; create with `--no-spawn-agent` or update with `--spawn-agent false` to disable it.
|
|
2184
2249
|
- `--prompt` maps to the scheduled action's additional spawned-agent instructions (`agentPrompt`), not a replacement for Baker's automatic spawned Work Action reference.
|
|
2185
|
-
- `--tag` accepts comma-separated Work Action tag slugs; unknown tag slugs conflict on publish.
|
|
2186
2250
|
|
|
2187
2251
|
---
|
|
2188
2252
|
|
|
@@ -2194,7 +2258,7 @@ Manage action items for the current chat. Most write operations stage on the cha
|
|
|
2194
2258
|
|
|
2195
2259
|
```bash
|
|
2196
2260
|
baker actions list # default: bucketed (claimable, myClaims, blocked, claimedByOthers, completed, discarded)
|
|
2197
|
-
baker actions list --bucketed=false --status pending
|
|
2261
|
+
baker actions list --bucketed=false --status pending
|
|
2198
2262
|
|
|
2199
2263
|
baker actions get <action-id>
|
|
2200
2264
|
baker actions status temp_hero jx123 # batch resolve real IDs and temp_* refs
|
|
@@ -2202,21 +2266,14 @@ baker actions status temp_hero jx123 # batch resolve real IDs and temp_* r
|
|
|
2202
2266
|
baker actions claim <action-id> # live — returns action details + skill-loading hints
|
|
2203
2267
|
baker actions release <action-id>
|
|
2204
2268
|
|
|
2205
|
-
baker actions create --name "Build hero" --description "..."
|
|
2206
|
-
# → returns { ok, data: { tempId }, hints: [...] } — check hints for dependencies/
|
|
2269
|
+
baker actions create --name "Build hero" --description "..."
|
|
2270
|
+
# → returns { ok, data: { tempId }, hints: [...] } — check hints for dependencies/description reminders
|
|
2207
2271
|
baker actions update <action-id> --name "Better name"
|
|
2208
2272
|
baker actions complete <action-id-or-tempId> --note "What was done" # stages — applies on chat publish
|
|
2209
2273
|
baker actions discard <action-id> --reason "obsolete"
|
|
2210
2274
|
|
|
2211
2275
|
baker actions link --blocker <id-or-tempId> --blocked <id-or-tempId>
|
|
2212
2276
|
baker actions unlink --blocker <id> --blocked <id>
|
|
2213
|
-
|
|
2214
|
-
baker actions tag list
|
|
2215
|
-
baker actions tag create --slug copy --label Copy --color "#f59e0b"
|
|
2216
|
-
baker actions tag update <tag-id> --label "Copywriting"
|
|
2217
|
-
baker actions tag delete <tag-id>
|
|
2218
|
-
baker actions tag add <action-id-or-tempId> --slug copy
|
|
2219
|
-
baker actions tag remove <action-id> --slug copy
|
|
2220
2277
|
```
|
|
2221
2278
|
|
|
2222
2279
|
`baker actions status <ref...>` reads live Work Action status without requiring `BAKER_CHAT_ID`. It sends all refs in one request to `/api/actions/status` and preserves the backend JSON envelope:
|
|
@@ -2243,8 +2300,8 @@ baker actions tag remove <action-id> --slug copy
|
|
|
2243
2300
|
Permissions enforced server-side:
|
|
2244
2301
|
|
|
2245
2302
|
- Only `claim`/`release` mutate live state.
|
|
2246
|
-
- `claim` returns action details (`id`, `name`, `description
|
|
2247
|
-
- `update`, `complete`, `discard`, `
|
|
2303
|
+
- `claim` returns action details (`id`, `name`, `description`) and a `hints` array recommending you review the action context and load relevant skills.
|
|
2304
|
+
- `update`, `complete`, `discard`, `unlink` require the action to be claimed by the current chat — otherwise the API returns `FORBIDDEN` with a hint to claim first.
|
|
2248
2305
|
- Claiming an action already claimed by another chat returns `CONFLICT` with the other chat's title — pick a different action.
|
|
2249
2306
|
- All staged ops are reverted automatically when the chat is discarded.
|
|
2250
2307
|
|
|
@@ -917,6 +917,13 @@ var FAL_IMAGE_MIMES = ["image/png", "image/jpeg", "image/webp"];
|
|
|
917
917
|
var FAL_VIDEO_MIMES = ["video/mp4", "video/webm", "video/quicktime"];
|
|
918
918
|
var DECONSTRUCT_VIDEO_MIMES = ["video/mp4", "video/webm", "video/quicktime"];
|
|
919
919
|
var FAL_AUDIO_MIMES = ["audio/wav", "audio/mpeg", "audio/mp3"];
|
|
920
|
+
var IMAGE_GENERATE_MODELS = [
|
|
921
|
+
"openai/gpt-5.4-image-2",
|
|
922
|
+
"google/gemini-3.5-flash",
|
|
923
|
+
"google/gemini-3.1-flash-image-preview",
|
|
924
|
+
"google/gemini-3-pro-image-preview",
|
|
925
|
+
"recraft/recraft-v4.1-pro-vector"
|
|
926
|
+
];
|
|
920
927
|
var MODEL_REGISTRY = {
|
|
921
928
|
text_generate: {
|
|
922
929
|
"~google/gemini-flash-latest": {
|
|
@@ -4813,7 +4820,7 @@ var dialogueNode = delegated({
|
|
|
4813
4820
|
|
|
4814
4821
|
// src/engine/nodes/remote/image.ts
|
|
4815
4822
|
import { z as z15 } from "zod";
|
|
4816
|
-
var
|
|
4823
|
+
var IMAGE_GENERATE_MODELS2 = [
|
|
4817
4824
|
"openai/gpt-5.4-image-2",
|
|
4818
4825
|
"google/gemini-3.5-flash",
|
|
4819
4826
|
"google/gemini-3.1-flash-image-preview",
|
|
@@ -4821,7 +4828,7 @@ var IMAGE_GENERATE_MODELS = [
|
|
|
4821
4828
|
"recraft/recraft-v4.1-pro-vector"
|
|
4822
4829
|
];
|
|
4823
4830
|
var ImageGenerateParams = z15.object({
|
|
4824
|
-
model: z15.enum(
|
|
4831
|
+
model: z15.enum(IMAGE_GENERATE_MODELS2),
|
|
4825
4832
|
prompt: z15.string().min(1),
|
|
4826
4833
|
aspect_ratio: z15.enum(["1:1", "16:9", "9:16", "4:3", "3:4", "3:2", "2:3", "4:5", "5:4", "21:9", "1:4", "4:1", "1:8", "8:1"]).optional(),
|
|
4827
4834
|
image_size: z15.enum(["0.5K", "1K", "2K", "4K"]).optional(),
|
|
@@ -5648,6 +5655,7 @@ function createEngineFromEnv(opts = {}) {
|
|
|
5648
5655
|
export {
|
|
5649
5656
|
SEEDANCE_DURATIONS,
|
|
5650
5657
|
ELEVENLABS_MAX_MUSIC_LENGTH_MS,
|
|
5658
|
+
IMAGE_GENERATE_MODELS,
|
|
5651
5659
|
MODEL_REGISTRY,
|
|
5652
5660
|
BackendClient2 as BackendClient,
|
|
5653
5661
|
Engine2 as Engine,
|
|
@@ -5659,4 +5667,4 @@ export {
|
|
|
5659
5667
|
defaultRegistry,
|
|
5660
5668
|
createEngineFromEnv
|
|
5661
5669
|
};
|
|
5662
|
-
//# sourceMappingURL=chunk-
|
|
5670
|
+
//# sourceMappingURL=chunk-XFDZVKLF.js.map
|