@koda-sl/baker-cli 0.280.0-dev.1f1c09c80 → 0.281.1-dev.1f1c09c80
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/cli.js +525 -372
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -110,7 +110,7 @@ import {
|
|
|
110
110
|
} from "./chunk-WFWU3CHS.js";
|
|
111
111
|
|
|
112
112
|
// src/cli.ts
|
|
113
|
-
import { defineCommand as
|
|
113
|
+
import { defineCommand as defineCommand229, runMain } from "citty";
|
|
114
114
|
|
|
115
115
|
// src/cache-flag.ts
|
|
116
116
|
var NO_CACHE_ARG = {
|
|
@@ -3722,6 +3722,26 @@ var avatarsListRequestSchema = z7.object({
|
|
|
3722
3722
|
limit: z7.coerce.number().int().positive().max(100).optional()
|
|
3723
3723
|
});
|
|
3724
3724
|
var avatarsListResponseSchema = z7.object({ avatars: z7.array(avatarSummarySchema) });
|
|
3725
|
+
var avatarsVoicesRequestSchema = z7.object({
|
|
3726
|
+
/** Free-text brief — "Spanish woman, warm, 40" — ranked the same way a render casts. */
|
|
3727
|
+
search: z7.string().trim().max(300).optional(),
|
|
3728
|
+
gender: z7.string().trim().max(40).optional(),
|
|
3729
|
+
language: z7.string().trim().max(40).optional(),
|
|
3730
|
+
limit: z7.coerce.number().int().positive().max(50).optional()
|
|
3731
|
+
});
|
|
3732
|
+
var avatarVoiceSchema = z7.object({
|
|
3733
|
+
voiceId: z7.string(),
|
|
3734
|
+
name: z7.string(),
|
|
3735
|
+
/** The provider's own labels — age and accent are what a casting call turns on. */
|
|
3736
|
+
age: z7.string().optional(),
|
|
3737
|
+
accent: z7.string().optional(),
|
|
3738
|
+
gender: z7.string().optional(),
|
|
3739
|
+
language: z7.string().optional(),
|
|
3740
|
+
useCase: z7.string().optional(),
|
|
3741
|
+
description: z7.string().optional(),
|
|
3742
|
+
previewUrl: z7.string().optional()
|
|
3743
|
+
});
|
|
3744
|
+
var avatarsVoicesResponseSchema = z7.object({ voices: z7.array(avatarVoiceSchema) });
|
|
3725
3745
|
var avatarsGetRequestSchema = z7.object({
|
|
3726
3746
|
handle: z7.string().min(1, "Missing handle parameter"),
|
|
3727
3747
|
full: z7.coerce.boolean().optional()
|
|
@@ -24454,7 +24474,7 @@ Full guide: __tooling__/docs/tools/baker/analytics.md`
|
|
|
24454
24474
|
});
|
|
24455
24475
|
|
|
24456
24476
|
// src/commands/avatars/index.ts
|
|
24457
|
-
import { defineCommand as
|
|
24477
|
+
import { defineCommand as defineCommand95 } from "citty";
|
|
24458
24478
|
|
|
24459
24479
|
// src/commands/avatars/create.ts
|
|
24460
24480
|
import { defineCommand as defineCommand89 } from "citty";
|
|
@@ -25102,11 +25122,72 @@ var updateCommand2 = defineCommand93({
|
|
|
25102
25122
|
}
|
|
25103
25123
|
});
|
|
25104
25124
|
|
|
25125
|
+
// src/commands/avatars/voices.ts
|
|
25126
|
+
import { defineCommand as defineCommand94 } from "citty";
|
|
25127
|
+
registerSchema({
|
|
25128
|
+
command: "avatars.voices",
|
|
25129
|
+
description: 'List the voices an avatar can be given, ranked by the same scorer a render uses to cast one. Start here whenever an avatar has no voice: an avatar is a face AND a voice, and one without a voice cannot be shown speaking \u2014 its lines would be read by whoever the renderer happened to pick, which on screen is dubbing. Pass a brief (--search "mujer espanola calida, 40") plus --gender/--language to narrow it, then pin the winner with `baker avatars update --handle <handle> --voice-id <id>`. Rows carry the provider\'s own age and accent labels, which is what a casting call actually turns on.',
|
|
25130
|
+
args: {
|
|
25131
|
+
search: { type: "string", description: 'Brief to rank by, e.g. "Spanish woman, warm, 40"', required: false },
|
|
25132
|
+
gender: { type: "string", description: "Hard filter: female|male", required: false },
|
|
25133
|
+
language: { type: "string", description: "Hard filter, e.g. spanish|english", required: false },
|
|
25134
|
+
limit: { type: "number", description: "Max voices to return (1-50, default 10)", required: false }
|
|
25135
|
+
}
|
|
25136
|
+
});
|
|
25137
|
+
var voicesCommand = defineCommand94({
|
|
25138
|
+
meta: {
|
|
25139
|
+
name: "voices",
|
|
25140
|
+
description: 'List voices an avatar can be pinned to. Example: baker avatars voices --search "mujer espanola calida" --gender female --language spanish'
|
|
25141
|
+
},
|
|
25142
|
+
args: {
|
|
25143
|
+
search: { type: "string", description: "Brief to rank by", required: false },
|
|
25144
|
+
gender: { type: "string", description: "Hard filter: female|male", required: false },
|
|
25145
|
+
language: { type: "string", description: "Hard filter, e.g. spanish", required: false },
|
|
25146
|
+
limit: { type: "string", description: "Max voices to return (1-50)", required: false },
|
|
25147
|
+
output: { type: "string", description: "Output format: json|files|md", required: false, default: "json" },
|
|
25148
|
+
fields: { type: "string", description: "Comma-separated field names to include", required: false }
|
|
25149
|
+
},
|
|
25150
|
+
run: async ({ args }) => {
|
|
25151
|
+
try {
|
|
25152
|
+
const params = {};
|
|
25153
|
+
for (const key of ["search", "gender", "language", "limit"]) {
|
|
25154
|
+
const value = args[key];
|
|
25155
|
+
if (value !== void 0 && value !== "") params[key] = value;
|
|
25156
|
+
}
|
|
25157
|
+
const data = await readAvatars("/api/avatars/voices", params);
|
|
25158
|
+
const hints = [];
|
|
25159
|
+
if (data.voices.length === 0) {
|
|
25160
|
+
hints.push("No voice matched. Drop --gender/--language and rank on the brief alone.");
|
|
25161
|
+
} else {
|
|
25162
|
+
const first = data.voices[0];
|
|
25163
|
+
if (first) {
|
|
25164
|
+
hints.push(
|
|
25165
|
+
`Pin one: baker avatars update --handle <handle> --voice-id ${first.voiceId} --voice-description "<how it should sound>"`
|
|
25166
|
+
);
|
|
25167
|
+
}
|
|
25168
|
+
const ages = new Set(data.voices.map((v) => v.age).filter(Boolean));
|
|
25169
|
+
if (ages.size === 1) {
|
|
25170
|
+
hints.push(`Every match is labelled \`${[...ages][0]}\` \u2014 the account stocks no other age for this filter.`);
|
|
25171
|
+
}
|
|
25172
|
+
}
|
|
25173
|
+
const format = args.output || "json";
|
|
25174
|
+
const fields = args.fields ? args.fields.split(",") : void 0;
|
|
25175
|
+
if (format === "json") {
|
|
25176
|
+
writeJson({ ok: true, data: { voices: data.voices }, meta: { count: data.voices.length }, hints });
|
|
25177
|
+
return;
|
|
25178
|
+
}
|
|
25179
|
+
writeOutput({ ok: true, data: data.voices }, format, fields, false);
|
|
25180
|
+
} catch (err) {
|
|
25181
|
+
failAvatarApi(err);
|
|
25182
|
+
}
|
|
25183
|
+
}
|
|
25184
|
+
});
|
|
25185
|
+
|
|
25105
25186
|
// src/commands/avatars/index.ts
|
|
25106
|
-
var avatarsCommand =
|
|
25187
|
+
var avatarsCommand = defineCommand95({
|
|
25107
25188
|
meta: {
|
|
25108
25189
|
name: "avatars",
|
|
25109
|
-
description: `Reusable AI presenters this company can cast into images and video. An avatar holds one settled identity, so the same face can carry a whole campaign. Subcommands: list, get, create, update, delete.
|
|
25190
|
+
description: `Reusable AI presenters this company can cast into images and video. An avatar holds one settled identity, so the same face can carry a whole campaign. Subcommands: list, get, create, update, voices, delete.
|
|
25110
25191
|
|
|
25111
25192
|
How casting works:
|
|
25112
25193
|
1. baker avatars list See who this company already has (reuse before you create)
|
|
@@ -25115,11 +25196,17 @@ How casting works:
|
|
|
25115
25196
|
Ground the render on the identity sheet, never on a source photo,
|
|
25116
25197
|
and copy the subject description into the prompt VERBATIM
|
|
25117
25198
|
|
|
25199
|
+
An avatar is a face AND a voice. One with no pinned voice cannot be shown speaking \u2014 a
|
|
25200
|
+
video ad refuses rather than reading their lines in whoever the renderer picked:
|
|
25201
|
+
baker avatars voices --search "mujer espanola calida, 40" --gender female --language spanish
|
|
25202
|
+
baker avatars update marta --voice-id <id> --voice-description "how it should sound"
|
|
25203
|
+
|
|
25118
25204
|
Examples:
|
|
25119
25205
|
baker avatars list --status ready --output md
|
|
25120
25206
|
baker avatars get marta --full
|
|
25121
25207
|
baker avatars create --name "Marta" --subject "woman in her early 40s, shoulder-length dark hair, light olive skin"
|
|
25122
25208
|
baker avatars update marta --subject "\u2026" --regenerate-sheet
|
|
25209
|
+
baker avatars voices --search "mujer espanola calida" --gender female --language spanish
|
|
25123
25210
|
baker avatars delete marta --archive
|
|
25124
25211
|
Full guide: __tooling__/docs/tools/baker/avatars.md`
|
|
25125
25212
|
},
|
|
@@ -25128,17 +25215,18 @@ Full guide: __tooling__/docs/tools/baker/avatars.md`
|
|
|
25128
25215
|
get: getCommand2,
|
|
25129
25216
|
create: createCommand2,
|
|
25130
25217
|
update: updateCommand2,
|
|
25218
|
+
voices: voicesCommand,
|
|
25131
25219
|
delete: deleteCommand
|
|
25132
25220
|
}
|
|
25133
25221
|
});
|
|
25134
25222
|
|
|
25135
25223
|
// src/commands/brand/index.ts
|
|
25136
|
-
import { defineCommand as
|
|
25224
|
+
import { defineCommand as defineCommand97 } from "citty";
|
|
25137
25225
|
|
|
25138
25226
|
// src/commands/brand/fonts.ts
|
|
25139
25227
|
import { mkdir, readdir, readFile as readFile2, writeFile } from "fs/promises";
|
|
25140
25228
|
import path2 from "path";
|
|
25141
|
-
import { defineCommand as
|
|
25229
|
+
import { defineCommand as defineCommand96 } from "citty";
|
|
25142
25230
|
|
|
25143
25231
|
// src/engine/brand/fonts.ts
|
|
25144
25232
|
import { posix } from "path";
|
|
@@ -25982,7 +26070,7 @@ async function unresolvedAction(css, unresolved) {
|
|
|
25982
26070
|
}
|
|
25983
26071
|
return `Run \`baker brand fonts fetch "${unresolved[0]}"\` to self-host it, which writes the @font-face for you. For a face no catalogue carries, add an @font-face pointing at a file in ${FONTS_DIR}.`;
|
|
25984
26072
|
}
|
|
25985
|
-
var fontsCheckCommand =
|
|
26073
|
+
var fontsCheckCommand = defineCommand96({
|
|
25986
26074
|
meta: {
|
|
25987
26075
|
name: "check",
|
|
25988
26076
|
description: "Verify the brand's fonts really exist. First: every --font-* family in src/styles/global.css must be provided by a local @font-face, or it renders as a fallback on every page \u2014 a Google @import does not provide one here, the build drops it before the page loads. Then, for families still requested from Google, ask Google what it actually serves \u2014 a weight nobody serves is silently synthesized."
|
|
@@ -26034,7 +26122,7 @@ var fontsCheckCommand = defineCommand95({
|
|
|
26034
26122
|
});
|
|
26035
26123
|
}
|
|
26036
26124
|
});
|
|
26037
|
-
var fontsFetchCommand =
|
|
26125
|
+
var fontsFetchCommand = defineCommand96({
|
|
26038
26126
|
meta: {
|
|
26039
26127
|
name: "fetch",
|
|
26040
26128
|
description: "Download a font from Google Fonts or Fontsource into src/brand/fonts/ and write its @font-face into src/styles/global.css above @theme, so the family actually loads. Use when a brand font should be self-hosted rather than requested from a third party on every page load."
|
|
@@ -26135,7 +26223,7 @@ async function astroSources() {
|
|
|
26135
26223
|
}
|
|
26136
26224
|
return out;
|
|
26137
26225
|
}
|
|
26138
|
-
var fontsAdoptCommand =
|
|
26226
|
+
var fontsAdoptCommand = defineCommand96({
|
|
26139
26227
|
meta: {
|
|
26140
26228
|
name: "adopt",
|
|
26141
26229
|
description: "Move brand faces a page already self-hosts into src/styles/global.css, so every page loads them instead of just that one. Use when `check` reports a family as not loaded but the font files are already in src/brand/fonts/ \u2014 downloading it again would hand that page a different build of the same face."
|
|
@@ -26215,7 +26303,7 @@ var fontsAdoptCommand = defineCommand95({
|
|
|
26215
26303
|
});
|
|
26216
26304
|
}
|
|
26217
26305
|
});
|
|
26218
|
-
var fontsCommand =
|
|
26306
|
+
var fontsCommand = defineCommand96({
|
|
26219
26307
|
meta: {
|
|
26220
26308
|
name: "fonts",
|
|
26221
26309
|
description: `Verify and self-host the brand's typefaces.
|
|
@@ -26235,7 +26323,7 @@ Subcommands:
|
|
|
26235
26323
|
});
|
|
26236
26324
|
|
|
26237
26325
|
// src/commands/brand/index.ts
|
|
26238
|
-
var brandCommand =
|
|
26326
|
+
var brandCommand = defineCommand97({
|
|
26239
26327
|
meta: {
|
|
26240
26328
|
name: "brand",
|
|
26241
26329
|
description: `Brand asset verification for src/brand/.
|
|
@@ -26251,11 +26339,11 @@ Subcommands:
|
|
|
26251
26339
|
});
|
|
26252
26340
|
|
|
26253
26341
|
// src/commands/canvas/index.ts
|
|
26254
|
-
import { defineCommand as
|
|
26342
|
+
import { defineCommand as defineCommand109 } from "citty";
|
|
26255
26343
|
|
|
26256
26344
|
// src/commands/canvas/catalog.ts
|
|
26257
|
-
import { defineCommand as
|
|
26258
|
-
var catalogCommand =
|
|
26345
|
+
import { defineCommand as defineCommand98 } from "citty";
|
|
26346
|
+
var catalogCommand = defineCommand98({
|
|
26259
26347
|
meta: {
|
|
26260
26348
|
name: "catalog",
|
|
26261
26349
|
description: "Print the agent-facing node catalog (JSON Schema). Includes every registered node grouped by category."
|
|
@@ -26270,7 +26358,7 @@ var catalogCommand = defineCommand97({
|
|
|
26270
26358
|
// src/commands/canvas/critique.ts
|
|
26271
26359
|
import { readFile as readFile3 } from "fs/promises";
|
|
26272
26360
|
import path3 from "path";
|
|
26273
|
-
import { defineCommand as
|
|
26361
|
+
import { defineCommand as defineCommand99 } from "citty";
|
|
26274
26362
|
|
|
26275
26363
|
// src/engine/scaffold/lib/critique.ts
|
|
26276
26364
|
var VIBE_CUE = /\b(light|lighting|golden|moody|warm|cool|tone|grade|contrast|shadow|glow|rim|backlit|neon|soft)\b/i;
|
|
@@ -26390,7 +26478,7 @@ function critiqueCanvas(canvas) {
|
|
|
26390
26478
|
}
|
|
26391
26479
|
|
|
26392
26480
|
// src/commands/canvas/critique.ts
|
|
26393
|
-
var critiqueCommand =
|
|
26481
|
+
var critiqueCommand = defineCommand99({
|
|
26394
26482
|
meta: {
|
|
26395
26483
|
name: "critique",
|
|
26396
26484
|
description: "Pre-spend creative critic (ADVISORY \u2014 never blocks). Scores a scaffolded creative BEFORE the billed render, so weak spots get fixed for free. A VIDEO creative is scored on hook strength, sound-off first-frame legibility, retention risk, and mechanism clarity; a STATIC ad on baked-text legibility risk, identity grounding, brand-type fidelity, and mechanism clarity. Ground a video hook against `baker winning-ads hooks` for a proven pattern."
|
|
@@ -26432,9 +26520,9 @@ import { execFile } from "child_process";
|
|
|
26432
26520
|
import { readdir as readdir2, readFile as readFile4, stat } from "fs/promises";
|
|
26433
26521
|
import path4 from "path";
|
|
26434
26522
|
import { promisify } from "util";
|
|
26435
|
-
import { defineCommand as
|
|
26523
|
+
import { defineCommand as defineCommand100 } from "citty";
|
|
26436
26524
|
var execFileAsync = promisify(execFile);
|
|
26437
|
-
var inspectCommand =
|
|
26525
|
+
var inspectCommand = defineCommand100({
|
|
26438
26526
|
meta: {
|
|
26439
26527
|
name: "inspect",
|
|
26440
26528
|
description: "Dump a one-page summary of a canvas run: per-node duration + cache status, list of output files in the run dir, and optionally three thumbnail frames per video output. Pass either a run_id (resolved against --outputs-dir) or an absolute run directory."
|
|
@@ -26542,12 +26630,12 @@ async function probeDuration(filePath) {
|
|
|
26542
26630
|
|
|
26543
26631
|
// src/commands/canvas/rerun.ts
|
|
26544
26632
|
import path17 from "path";
|
|
26545
|
-
import { defineCommand as
|
|
26633
|
+
import { defineCommand as defineCommand102 } from "citty";
|
|
26546
26634
|
|
|
26547
26635
|
// src/commands/canvas/run.ts
|
|
26548
26636
|
import { readFile as readFile12 } from "fs/promises";
|
|
26549
26637
|
import path16 from "path";
|
|
26550
|
-
import { defineCommand as
|
|
26638
|
+
import { defineCommand as defineCommand101 } from "citty";
|
|
26551
26639
|
|
|
26552
26640
|
// src/commands/canvas/normalize-paths.ts
|
|
26553
26641
|
import { existsSync as existsSync3, realpathSync } from "fs";
|
|
@@ -31200,7 +31288,7 @@ async function sceneWindowsBeside(canvasPath) {
|
|
|
31200
31288
|
}
|
|
31201
31289
|
|
|
31202
31290
|
// src/commands/canvas/run.ts
|
|
31203
|
-
var runCommand =
|
|
31291
|
+
var runCommand = defineCommand101({
|
|
31204
31292
|
meta: { name: "run", description: "Validate and execute a canvas JSON file." },
|
|
31205
31293
|
args: {
|
|
31206
31294
|
file: { type: "positional", required: true, description: "Path to canvas JSON" },
|
|
@@ -31598,7 +31686,7 @@ async function postInitialRunRecord(client, payload) {
|
|
|
31598
31686
|
|
|
31599
31687
|
// src/commands/canvas/rerun.ts
|
|
31600
31688
|
var SLUG_PATTERN = /^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/;
|
|
31601
|
-
var rerunCommand =
|
|
31689
|
+
var rerunCommand = defineCommand102({
|
|
31602
31690
|
meta: {
|
|
31603
31691
|
name: "rerun",
|
|
31604
31692
|
description: "Re-run a creative's latest recorded canvas. Restores its definition files from run history first, so it works in a fresh workspace that never had the source chat's files \u2014 an interrupted run resumes (in-flight jobs re-attach), a completed one re-renders from the cache."
|
|
@@ -31695,7 +31783,7 @@ async function fetchManifest(url) {
|
|
|
31695
31783
|
// src/commands/canvas/scaffold-static-ad.ts
|
|
31696
31784
|
import { access, mkdir as mkdir6, readFile as readFile14, writeFile as writeFile8 } from "fs/promises";
|
|
31697
31785
|
import path21 from "path";
|
|
31698
|
-
import { defineCommand as
|
|
31786
|
+
import { defineCommand as defineCommand104 } from "citty";
|
|
31699
31787
|
|
|
31700
31788
|
// src/engine/scaffold/staticAd.ts
|
|
31701
31789
|
import { z as z29 } from "zod";
|
|
@@ -32045,7 +32133,7 @@ function isValidScaffoldSlug(slug) {
|
|
|
32045
32133
|
// src/commands/canvas/sync-definition.ts
|
|
32046
32134
|
import { readdir as readdir7, readFile as readFile13, stat as stat3 } from "fs/promises";
|
|
32047
32135
|
import path20 from "path";
|
|
32048
|
-
import { defineCommand as
|
|
32136
|
+
import { defineCommand as defineCommand103 } from "citty";
|
|
32049
32137
|
|
|
32050
32138
|
// src/commands/canvas/definition-graph.ts
|
|
32051
32139
|
var MAX_NODES = 300;
|
|
@@ -32158,7 +32246,7 @@ async function resolveCanvasPath(inputPath) {
|
|
|
32158
32246
|
const chosen = (slug ? canvases.find((name) => name === `${slug}.canvas.json`) : void 0) ?? canvases[0];
|
|
32159
32247
|
return chosen ? path20.join(dir, chosen) : null;
|
|
32160
32248
|
}
|
|
32161
|
-
var syncDefinitionCommand =
|
|
32249
|
+
var syncDefinitionCommand = defineCommand103({
|
|
32162
32250
|
meta: {
|
|
32163
32251
|
name: "sync-definition",
|
|
32164
32252
|
description: "Push a creative's current node-graph + input thumbnails to the dashboard without rendering. Runs automatically when you edit a creative's canvas.json or prompt.json."
|
|
@@ -32388,7 +32476,7 @@ async function runVisionPasses(canvas) {
|
|
|
32388
32476
|
return fail3("read_outputs", e instanceof Error ? e.message : String(e));
|
|
32389
32477
|
}
|
|
32390
32478
|
}
|
|
32391
|
-
var scaffoldStaticAdCommand =
|
|
32479
|
+
var scaffoldStaticAdCommand = defineCommand104({
|
|
32392
32480
|
meta: {
|
|
32393
32481
|
name: "scaffold-static-ad",
|
|
32394
32482
|
description: "Turn a source/inspiration image into a runnable static-ad canvas. Runs billed passes \u2014 image_describe (the blueprint, baked to prompt.json as the editable 'prompt'), an AI selection of the image's MAIN identity elements, and a structured global-layout pass (the column/row grid with per-region bounds and text sizes) \u2014 then scaffolds a canvas that wires one [TODO] ingest slot per element (logo/product/subject/badge + brand font) into image_generate. By default it also fans the hero out to the platform's placement ratios (via image_aspect_adapt \u2014 the hero ratio is free, the rest are billed AI recompositions); pass --placements none for a single base ad, or a preset to pick the set. Edit prompt.json and drop the real assets, then `baker canvas run` it."
|
|
@@ -32576,7 +32664,7 @@ var scaffoldStaticAdCommand = defineCommand103({
|
|
|
32576
32664
|
// src/commands/canvas/scaffold-ad.ts
|
|
32577
32665
|
import { copyFile, cp, mkdir as mkdir7, readFile as readFile16, stat as stat4, writeFile as writeFile9 } from "fs/promises";
|
|
32578
32666
|
import path24 from "path";
|
|
32579
|
-
import { defineCommand as
|
|
32667
|
+
import { defineCommand as defineCommand105 } from "citty";
|
|
32580
32668
|
|
|
32581
32669
|
// src/engine/scaffold/ad-spec.ts
|
|
32582
32670
|
import { z as z30 } from "zod";
|
|
@@ -32611,9 +32699,17 @@ var Beat = z30.object({
|
|
|
32611
32699
|
*/
|
|
32612
32700
|
sound: z30.string().min(1).max(200).optional(),
|
|
32613
32701
|
/**
|
|
32614
|
-
*
|
|
32615
|
-
*
|
|
32616
|
-
*
|
|
32702
|
+
* Whether this beat's subject is talking to camera.
|
|
32703
|
+
*
|
|
32704
|
+
* Left unset it follows the cast: an ad that cast a presenter, in a shot they are in,
|
|
32705
|
+
* with a line, is that person speaking. Set it to FALSE for the exception — a cutaway,
|
|
32706
|
+
* a product shot, a beat you want a narrator to carry over.
|
|
32707
|
+
*
|
|
32708
|
+
* It used to be opt-in, back when the only route was dubbing and OFF was the safe
|
|
32709
|
+
* default. That inverted the moment on-camera started meaning the video model voices
|
|
32710
|
+
* the clip itself: measured on a real run, a brief that said "talking to camera all the
|
|
32711
|
+
* way through" produced an ad with her face on screen and a narrator cast from a prose
|
|
32712
|
+
* description reading her lines, because nothing set this flag.
|
|
32617
32713
|
*/
|
|
32618
32714
|
on_camera: z30.boolean().optional(),
|
|
32619
32715
|
/**
|
|
@@ -32821,6 +32917,10 @@ var ASKS_FOR_LEGIBLE = /\b(focus on the (number|amount|total|price|figure|text)|
|
|
|
32821
32917
|
function briefWantsLegibleText(show) {
|
|
32822
32918
|
return ASKS_FOR_LEGIBLE.test(show);
|
|
32823
32919
|
}
|
|
32920
|
+
var SELF_INTRODUCTION = /\b([Ss]oy|[Mm]e llamo|[Mm]i nombre es|[Ss]ou|[Jj]e m'appelle|[Jj]e suis|[Mm]i chiamo|[Ss]ono|[Ii]ch bin|[Ii]'m|[Ii] am|[Mm]y name is)\s+[A-ZÁÉÍÓÚÑ]/;
|
|
32921
|
+
function lineIntroducesSpeaker(line) {
|
|
32922
|
+
return SELF_INTRODUCTION.test(line);
|
|
32923
|
+
}
|
|
32824
32924
|
function endCardWanted(spec) {
|
|
32825
32925
|
if (spec.end_card === false) return false;
|
|
32826
32926
|
return Boolean(spec.brand?.name || spec.brand?.logo);
|
|
@@ -32832,6 +32932,7 @@ function endCardCta(spec) {
|
|
|
32832
32932
|
const closing = (spec.beats[spec.beats.length - 1]?.say ?? "").trim().toLowerCase();
|
|
32833
32933
|
return declared.toLowerCase().replace(/[.!?]$/, "") === closing.replace(/[.!?]$/, "") ? null : declared;
|
|
32834
32934
|
}
|
|
32935
|
+
var AD_CAST_ID = "customer";
|
|
32835
32936
|
function adSpecCastElements(spec, avatar) {
|
|
32836
32937
|
const description = (avatar?.subjectDescription ?? spec.cast?.description)?.trim();
|
|
32837
32938
|
if (!description) return [];
|
|
@@ -32842,7 +32943,10 @@ function adSpecCastElements(spec, avatar) {
|
|
|
32842
32943
|
return [
|
|
32843
32944
|
{
|
|
32844
32945
|
type: "person",
|
|
32845
|
-
label:
|
|
32946
|
+
label: AD_CAST_ID,
|
|
32947
|
+
// Same id the dialogue names as speaker: that pairing is what lets the engine see
|
|
32948
|
+
// the presenter as present in a scene and route it to native audio.
|
|
32949
|
+
cast_id: AD_CAST_ID,
|
|
32846
32950
|
description,
|
|
32847
32951
|
scenes,
|
|
32848
32952
|
// An avatar's identity sheet IS the turnaround the engine would otherwise render,
|
|
@@ -32852,10 +32956,10 @@ function adSpecCastElements(spec, avatar) {
|
|
|
32852
32956
|
}
|
|
32853
32957
|
];
|
|
32854
32958
|
}
|
|
32855
|
-
function motionPrompt(beat, isClosingCard, place, physics) {
|
|
32959
|
+
function motionPrompt(beat, toCamera, isClosingCard, place, physics) {
|
|
32856
32960
|
if (isClosingCard) return BRAND_PLATE;
|
|
32857
32961
|
const shot = `${beat.show}${place}${physics}`;
|
|
32858
|
-
if (
|
|
32962
|
+
if (toCamera) return shot;
|
|
32859
32963
|
return `${shot} Nobody in frame is speaking: mouths CLOSED and STILL throughout, no talking, no lip movement. Whoever is in shot is looking, reacting or working \u2014 never addressing the camera.`;
|
|
32860
32964
|
}
|
|
32861
32965
|
function staticTranscript(spec) {
|
|
@@ -32877,6 +32981,41 @@ function staticTranscript(spec) {
|
|
|
32877
32981
|
}
|
|
32878
32982
|
return out;
|
|
32879
32983
|
}
|
|
32984
|
+
function beatToCamera(spec, beat, isClosingCard) {
|
|
32985
|
+
if (isClosingCard) return false;
|
|
32986
|
+
if (beat.on_camera !== void 0) return beat.on_camera;
|
|
32987
|
+
return Boolean(spec.cast) && beat.cast !== false;
|
|
32988
|
+
}
|
|
32989
|
+
function wantsNativeSpeech(spec, closesOnCard) {
|
|
32990
|
+
if (!spec.cast || spec.voiceover === false) return false;
|
|
32991
|
+
const last = spec.beats.length - 1;
|
|
32992
|
+
const speaking = spec.beats.filter((_, i) => !(closesOnCard && i === last));
|
|
32993
|
+
return speaking.length > 0 && speaking.every((beat) => beatToCamera(spec, beat, false) && beat.cast !== false);
|
|
32994
|
+
}
|
|
32995
|
+
function beatDialogue(spec, beat, window2) {
|
|
32996
|
+
if (spec.voiceover === false) return [];
|
|
32997
|
+
return [
|
|
32998
|
+
{
|
|
32999
|
+
line: beat.say,
|
|
33000
|
+
start_s: window2.start,
|
|
33001
|
+
end_s: window2.end,
|
|
33002
|
+
// Always stated, never left to the engine: absent, it guesses from who is in frame,
|
|
33003
|
+
// which is how a still photograph once got lip-synced.
|
|
33004
|
+
on_camera: beatToCamera(spec, beat, window2.isClosingCard),
|
|
33005
|
+
// Naming the CAST as speaker is the other half of what sends this beat down the
|
|
33006
|
+
// native path. Left unnamed, the speaker defaults to "voiceover" — a narrator, who is
|
|
33007
|
+
// by definition never on camera — so every beat took the dubbed path: a clip generated
|
|
33008
|
+
// with one mouth and a separate ElevenLabs track laid over it. That is the mismatch
|
|
33009
|
+
// behind every "the mouth does not match" in this ad's history.
|
|
33010
|
+
...window2.nativeSpeech && !window2.isClosingCard ? { speaker: AD_CAST_ID } : {},
|
|
33011
|
+
...spec.voice?.description ? { voice_description: spec.voice.description } : {}
|
|
33012
|
+
}
|
|
33013
|
+
];
|
|
33014
|
+
}
|
|
33015
|
+
function voiceoverMode(spec, nativeSpeech) {
|
|
33016
|
+
if (spec.voiceover === false) return "none";
|
|
33017
|
+
return nativeSpeech ? "on_camera" : "voiceover";
|
|
33018
|
+
}
|
|
32880
33019
|
function adSpecToBlueprint(spec) {
|
|
32881
33020
|
const total = spec.beats.length;
|
|
32882
33021
|
const market = marketFor(spec);
|
|
@@ -32884,6 +33023,7 @@ function adSpecToBlueprint(spec) {
|
|
|
32884
33023
|
const currency = market ? CURRENCY_BY_MARKET[market.toLowerCase()] : void 0;
|
|
32885
33024
|
const physics = " Everything obeys real-world physics: paper, card and screens are OPAQUE with nothing showing through from behind, every object is at believable real-world scale next to the people handling it, and every object has its real-world form and construction \u2014 a phone has ONE screen and it is on the front. NO readable text or numbers anywhere in frame \u2014 phone screens, documents and signage stay illegible or out of focus, because any figure the model invents will contradict the script. Hands are kept simple: no close-up of fingers manipulating small parts, no hand gripping the edge of an object, and each person has exactly TWO arms and TWO legs, all attached and all visible or all out of frame. Anyone working does so the way the trade actually does it: nobody stands or kneels on the equipment being installed, nothing is fitted overhanging an edge or floating unsupported, and every part rests on the structure that would really carry it." + (currency ? ` If a currency is unavoidably visible it is ${currency}.` : "");
|
|
32886
33025
|
const closesOnCard = endCardWanted(spec);
|
|
33026
|
+
const nativeSpeech = wantsNativeSpeech(spec, closesOnCard);
|
|
32887
33027
|
let clock = 0;
|
|
32888
33028
|
const scenes = spec.beats.map((beat, i) => {
|
|
32889
33029
|
const isClosingCard = closesOnCard && i === total - 1;
|
|
@@ -32908,19 +33048,13 @@ function adSpecToBlueprint(spec) {
|
|
|
32908
33048
|
// length to what the provider accepts. An ad emitted none of these until now,
|
|
32909
33049
|
// so every one shipped with a music bed and no sound design at all.
|
|
32910
33050
|
...beat.sound?.trim() ? { sfx: [{ sound_effect_prompt: beat.sound.trim(), duration_s: Math.min(duration, 30) }] } : {},
|
|
32911
|
-
dialogue: spec
|
|
32912
|
-
|
|
32913
|
-
|
|
32914
|
-
|
|
32915
|
-
|
|
32916
|
-
|
|
32917
|
-
|
|
32918
|
-
// lip-sync on a picture that has no person.
|
|
32919
|
-
on_camera: beat.on_camera === true && !isClosingCard,
|
|
32920
|
-
...spec.voice?.description ? { voice_description: spec.voice.description } : {}
|
|
32921
|
-
}
|
|
32922
|
-
],
|
|
32923
|
-
motion_prompt: motionPrompt(beat, isClosingCard, place, physics),
|
|
33051
|
+
dialogue: beatDialogue(spec, beat, {
|
|
33052
|
+
start: Math.round(start * 100) / 100,
|
|
33053
|
+
end: Math.round(clock * 100) / 100,
|
|
33054
|
+
isClosingCard,
|
|
33055
|
+
nativeSpeech
|
|
33056
|
+
}),
|
|
33057
|
+
motion_prompt: motionPrompt(beat, beatToCamera(spec, beat, isClosingCard), isClosingCard, place, physics),
|
|
32924
33058
|
start_frame_prompt: isClosingCard ? BRAND_PLATE : `${beat.show}${place}${physics}`
|
|
32925
33059
|
};
|
|
32926
33060
|
});
|
|
@@ -32929,12 +33063,17 @@ function adSpecToBlueprint(spec) {
|
|
|
32929
33063
|
global: {
|
|
32930
33064
|
transcript: spec.beats.map((b) => b.say).join(" "),
|
|
32931
33065
|
voiceover: {
|
|
32932
|
-
|
|
32933
|
-
// engine a mouth is a lip-sync candidate. A music-led ad says `none`, which is
|
|
32934
|
-
// what keeps a voice out of it entirely.
|
|
32935
|
-
mode: spec.voiceover === false ? "none" : "voiceover",
|
|
33066
|
+
mode: voiceoverMode(spec, nativeSpeech),
|
|
32936
33067
|
...spec.voice?.description ? { voice_description: spec.voice.description } : {}
|
|
32937
33068
|
},
|
|
33069
|
+
...spec.cast ? {
|
|
33070
|
+
cast: [
|
|
33071
|
+
{
|
|
33072
|
+
id: AD_CAST_ID,
|
|
33073
|
+
description: (spec.cast.description ?? "the ad's recurring person").trim()
|
|
33074
|
+
}
|
|
33075
|
+
]
|
|
33076
|
+
} : {},
|
|
32938
33077
|
...spec.brand?.name || spec.brand?.logo ? {
|
|
32939
33078
|
branding: {
|
|
32940
33079
|
...spec.brand?.name ? { name: spec.brand.name } : {},
|
|
@@ -33176,7 +33315,7 @@ registerSchema({
|
|
|
33176
33315
|
}
|
|
33177
33316
|
}
|
|
33178
33317
|
});
|
|
33179
|
-
var scaffoldAdCommand =
|
|
33318
|
+
var scaffoldAdCommand = defineCommand105({
|
|
33180
33319
|
meta: {
|
|
33181
33320
|
name: "scaffold-ad",
|
|
33182
33321
|
description: 'Build a captioned vertical ad from a written spec, with no reference video to copy.\n\nA spec is a list of BEATS. One beat = one line the voice says + one shot on screen while it is said. That pairing is what keeps the ad honest: the caption card IS the line, so it can never end mid-sentence, and the picture can never drift from the read.\n\nTwo rules the spec enforces for you, both learned the expensive way:\n \u2022 `say` is ONE clause with its own punctuation. Two sentences in a beat is rejected.\n \u2022 Nobody in shot is speaking unless you set `on_camera` on that beat. A person visibly talking under a voice that is not theirs reads as bad dubbing.\n\nExample spec:\n { "beats": [\n { "say": "Mientras t\xFA sigues pagando la luz a precio de oro,", "show": "Aerial over Spanish rooftops at golden hour." },\n { "say": "Haz clic en el enlace y reserva tu estudio gratuito.", "show": "A couple walking home at sunset." } ] }\n\nWho is in it:\n `cast: { avatar: "marta" }` grounds every beat on that avatar\'s face \u2014 cast one with `baker avatars`.\n Without a cast, each beat invents its own person and the ad reads as a stock-footage collage.\n\nHow it ends: with a `brand`, the last beat closes on a flat brand plate carrying the mark and the CTA.\n\nThen: baker canvas run <the canvas it writes>'
|
|
@@ -33268,6 +33407,20 @@ var scaffoldAdCommand = defineCommand104({
|
|
|
33268
33407
|
...filledPalette ? { palette: filledPalette } : {}
|
|
33269
33408
|
};
|
|
33270
33409
|
}
|
|
33410
|
+
const introducesOffCamera = spec.data.beats.map((beat, i) => ({ i, beat })).filter(({ beat }) => beat.on_camera !== true && lineIntroducesSpeaker(beat.say));
|
|
33411
|
+
if (introducesOffCamera.length > 0) {
|
|
33412
|
+
const first = introducesOffCamera[0];
|
|
33413
|
+
writeJson({
|
|
33414
|
+
ok: false,
|
|
33415
|
+
error: {
|
|
33416
|
+
code: "VALIDATION_ERROR",
|
|
33417
|
+
message: `Beat ${(first?.i ?? 0) + 1} says "${first?.beat.say.trim()}" \u2014 the speaker introducing themselves \u2014 but nobody is on camera saying it. A voice from off screen introducing the person standing in shot reads as a mistake, the same way a moving mouth under someone else's voice does.`,
|
|
33418
|
+
fix: 'Either set `on_camera: true` on that beat so they say it themselves \u2014 which needs the avatar to have their own pinned voice \u2014 or rewrite the line as narration about them rather than by them: "Marta instal\xF3 placas en nueve d\xEDas", not "Hola, soy Marta".'
|
|
33419
|
+
}
|
|
33420
|
+
});
|
|
33421
|
+
process.exit(1);
|
|
33422
|
+
return;
|
|
33423
|
+
}
|
|
33271
33424
|
const speaksOnCamera = spec.data.beats.some((beat) => beat.on_camera === true);
|
|
33272
33425
|
if (avatar && !avatar.voiceId && speaksOnCamera) {
|
|
33273
33426
|
writeJson({
|
|
@@ -33275,7 +33428,7 @@ var scaffoldAdCommand = defineCommand104({
|
|
|
33275
33428
|
error: {
|
|
33276
33429
|
code: "VALIDATION_ERROR",
|
|
33277
33430
|
message: `Avatar \`${handle}\` has no pinned voice, and this ad has them speaking on camera. Their lines would be read by a voice cast from a description \u2014 a mouth moving under somebody else's voice, which is exactly what dubbing looks like.`,
|
|
33278
|
-
fix: `
|
|
33431
|
+
fix: `Pick a voice with \`baker avatars voices --search "<how they should sound>" --gender <g> --language <l>\`, then pin it: \`baker avatars update --handle ${handle} --voice-id <id> --voice-description "<how it should sound>"\`. Or drop \`on_camera\` from every beat so they appear without speaking and the narration carries the read. An avatar is a face AND a voice; casting one without the other is what puts the wrong voice in their mouth.`
|
|
33279
33432
|
}
|
|
33280
33433
|
});
|
|
33281
33434
|
process.exit(1);
|
|
@@ -33442,7 +33595,7 @@ var scaffoldAdCommand = defineCommand104({
|
|
|
33442
33595
|
import { access as access2, cp as cp2, mkdir as mkdir8, readFile as readFile19, rm as rm7, writeFile as writeFile10 } from "fs/promises";
|
|
33443
33596
|
import { tmpdir as tmpdir3 } from "os";
|
|
33444
33597
|
import path26 from "path";
|
|
33445
|
-
import { defineCommand as
|
|
33598
|
+
import { defineCommand as defineCommand106 } from "citty";
|
|
33446
33599
|
|
|
33447
33600
|
// src/engine/scaffold/lib/model-router.ts
|
|
33448
33601
|
var SEEDANCE = "bytedance/seedance-2.0";
|
|
@@ -33887,7 +34040,7 @@ async function runAnalysisPasses(deconstructCanvas, selectModel) {
|
|
|
33887
34040
|
return fail4("deconstruct", e instanceof Error ? e.message : String(e));
|
|
33888
34041
|
}
|
|
33889
34042
|
}
|
|
33890
|
-
var scaffoldVideoCommand =
|
|
34043
|
+
var scaffoldVideoCommand = defineCommand106({
|
|
33891
34044
|
meta: {
|
|
33892
34045
|
name: "scaffold-video",
|
|
33893
34046
|
description: "Turn a reference video into a runnable reproduction canvas in one command. Runs billed passes \u2014 video_deconstruct (the full scene-by-scene blueprint + transcript, baked to a split, editable blueprint: a global prompt.json plus one small scenes/sNN.json per scene) and an AI selection of the video's RECURRING identity elements (person/animal/product/logo) \u2014 then scaffolds a pipeline where every scene boundary is a static-ad-grade frame (the blueprint as target_blueprint, a reference legend, the real frame as anchor) and each recurring element gets ONE shared [TODO] ingest slot wired into every frame it appears in. The clips feed Seedance an ultra-detailed motion brief (action, camera, dialogue, transcript). Edit a scene's scenes/sNN.json (or prompt.json for global cast/palette/brand), drop the real source images, then `baker canvas run`."
|
|
@@ -34197,7 +34350,7 @@ var scaffoldVideoCommand = defineCommand105({
|
|
|
34197
34350
|
// src/commands/canvas/set-prompt.ts
|
|
34198
34351
|
import { readFile as readFile20, writeFile as writeFile11 } from "fs/promises";
|
|
34199
34352
|
import path27 from "path";
|
|
34200
|
-
import { defineCommand as
|
|
34353
|
+
import { defineCommand as defineCommand107 } from "citty";
|
|
34201
34354
|
function setNodePrompt(canvas, nodeId, text2) {
|
|
34202
34355
|
const nodes = canvas?.nodes;
|
|
34203
34356
|
if (!Array.isArray(nodes)) throw new Error("canvas has no nodes array");
|
|
@@ -34212,7 +34365,7 @@ function setNodePrompt(canvas, nodeId, text2) {
|
|
|
34212
34365
|
newNodes[idx] = newNode;
|
|
34213
34366
|
return { ...canvas, nodes: newNodes };
|
|
34214
34367
|
}
|
|
34215
|
-
var setPromptCommand =
|
|
34368
|
+
var setPromptCommand = defineCommand107({
|
|
34216
34369
|
meta: {
|
|
34217
34370
|
name: "set-prompt",
|
|
34218
34371
|
description: "Safely set a node's params.prompt (a frame description, motion prompt, etc.) without hand-editing the JSON. Prefer --text-file for multi-line/accented copy \u2014 it preserves UTF-8 exactly, unlike shell-quoted jq."
|
|
@@ -34272,8 +34425,8 @@ var setPromptCommand = defineCommand106({
|
|
|
34272
34425
|
// src/commands/canvas/validate.ts
|
|
34273
34426
|
import { readFile as readFile21 } from "fs/promises";
|
|
34274
34427
|
import path28 from "path";
|
|
34275
|
-
import { defineCommand as
|
|
34276
|
-
var validateCommand =
|
|
34428
|
+
import { defineCommand as defineCommand108 } from "citty";
|
|
34429
|
+
var validateCommand = defineCommand108({
|
|
34277
34430
|
meta: {
|
|
34278
34431
|
name: "validate",
|
|
34279
34432
|
description: "Validate a canvas JSON file (no execution). Includes a per-node cost preview and runs each node's deep validators (composition meta checks for hyperframe_render/_snapshot)."
|
|
@@ -34346,7 +34499,7 @@ var validateCommand = defineCommand107({
|
|
|
34346
34499
|
});
|
|
34347
34500
|
|
|
34348
34501
|
// src/commands/canvas/index.ts
|
|
34349
|
-
var canvasCommand =
|
|
34502
|
+
var canvasCommand = defineCommand109({
|
|
34350
34503
|
meta: {
|
|
34351
34504
|
name: "canvas",
|
|
34352
34505
|
description: `Run Baker creative canvas JSON files locally. Local nodes execute in-process; remote nodes POST to the Convex backend gateway.
|
|
@@ -34382,7 +34535,7 @@ Full guide: __tooling__/docs/tools/baker/canvas.md`
|
|
|
34382
34535
|
});
|
|
34383
34536
|
|
|
34384
34537
|
// src/commands/capabilities/index.ts
|
|
34385
|
-
import { defineCommand as
|
|
34538
|
+
import { defineCommand as defineCommand110 } from "citty";
|
|
34386
34539
|
registerSchema({
|
|
34387
34540
|
command: "capabilities",
|
|
34388
34541
|
description: "Start here, before promising the user anything on an ad platform, in Analytics, or in Tag Manager. Answers three questions in one call: what is connected and with what access, what a write on each surface actually does when it lands, and what CANNOT be done here and why. Run it with no arguments for every surface; name one surface to also get the exact fields every change on it accepts.",
|
|
@@ -34425,7 +34578,7 @@ function capabilityHints(surfaces) {
|
|
|
34425
34578
|
}
|
|
34426
34579
|
return hints;
|
|
34427
34580
|
}
|
|
34428
|
-
var runCapabilities =
|
|
34581
|
+
var runCapabilities = defineCommand110({
|
|
34429
34582
|
meta: {
|
|
34430
34583
|
name: "capabilities",
|
|
34431
34584
|
description: `What Baker can and cannot do for this company, before any work starts.
|
|
@@ -34481,7 +34634,7 @@ Full guide: __tooling__/docs/tools/baker/capabilities.md`
|
|
|
34481
34634
|
var capabilitiesCommand = runCapabilities;
|
|
34482
34635
|
|
|
34483
34636
|
// src/commands/chats/index.ts
|
|
34484
|
-
import { defineCommand as
|
|
34637
|
+
import { defineCommand as defineCommand111 } from "citty";
|
|
34485
34638
|
var STATUS_GROUPS = ["active", "archived", "all"];
|
|
34486
34639
|
var REPO_SURFACES = ["knowledge", "company", "brand", "landings", "flows", "creatives"];
|
|
34487
34640
|
function parseBoundedInt(raw, name, min, max) {
|
|
@@ -34503,7 +34656,7 @@ registerSchema({
|
|
|
34503
34656
|
full: { type: "boolean", description: "Include each Session's full change list", required: false, default: false }
|
|
34504
34657
|
}
|
|
34505
34658
|
});
|
|
34506
|
-
var listCommand11 =
|
|
34659
|
+
var listCommand11 = defineCommand111({
|
|
34507
34660
|
meta: { name: "list", description: "List other Sessions on this account, newest first." },
|
|
34508
34661
|
args: {
|
|
34509
34662
|
status: { type: "string", description: "Filter: active|archived|all (default: all)", required: false },
|
|
@@ -34558,7 +34711,7 @@ registerSchema({
|
|
|
34558
34711
|
}
|
|
34559
34712
|
}
|
|
34560
34713
|
});
|
|
34561
|
-
var viewCommand =
|
|
34714
|
+
var viewCommand = defineCommand111({
|
|
34562
34715
|
meta: {
|
|
34563
34716
|
name: "view",
|
|
34564
34717
|
description: "Inspect one Session's full effects \u2014 git content + actions/tags/ads, kickoff, commits."
|
|
@@ -34602,7 +34755,7 @@ registerSchema({
|
|
|
34602
34755
|
}
|
|
34603
34756
|
}
|
|
34604
34757
|
});
|
|
34605
|
-
var transcriptCommand =
|
|
34758
|
+
var transcriptCommand = defineCommand111({
|
|
34606
34759
|
meta: { name: "transcript", description: "Read another Session's conversation." },
|
|
34607
34760
|
args: {
|
|
34608
34761
|
id: { type: "positional", description: "The Session id", required: true },
|
|
@@ -34654,7 +34807,7 @@ registerSchema({
|
|
|
34654
34807
|
}
|
|
34655
34808
|
}
|
|
34656
34809
|
});
|
|
34657
|
-
var diffCommand =
|
|
34810
|
+
var diffCommand = defineCommand111({
|
|
34658
34811
|
meta: { name: "diff", description: "See a published Session's real file-level changes." },
|
|
34659
34812
|
args: {
|
|
34660
34813
|
id: { type: "positional", description: "The Session id", required: true },
|
|
@@ -34698,7 +34851,7 @@ var diffCommand = defineCommand110({
|
|
|
34698
34851
|
}
|
|
34699
34852
|
}
|
|
34700
34853
|
});
|
|
34701
|
-
var chatsCommand =
|
|
34854
|
+
var chatsCommand = defineCommand111({
|
|
34702
34855
|
meta: {
|
|
34703
34856
|
name: "chats",
|
|
34704
34857
|
description: `Inspect other Sessions on this account (read-only): list them, view what they produced, read their conversation, and see their real file changes \u2014 so you can reuse past work for a new goal.
|
|
@@ -34713,10 +34866,10 @@ Full guide: __tooling__/docs/tools/baker/chats.md`
|
|
|
34713
34866
|
});
|
|
34714
34867
|
|
|
34715
34868
|
// src/commands/creatives/index.ts
|
|
34716
|
-
import { defineCommand as
|
|
34869
|
+
import { defineCommand as defineCommand113 } from "citty";
|
|
34717
34870
|
|
|
34718
34871
|
// src/commands/creatives/publish.ts
|
|
34719
|
-
import { defineCommand as
|
|
34872
|
+
import { defineCommand as defineCommand112 } from "citty";
|
|
34720
34873
|
|
|
34721
34874
|
// src/commands/images/api.ts
|
|
34722
34875
|
import { readFile as readFile22 } from "fs/promises";
|
|
@@ -34863,7 +35016,7 @@ async function publishCreative(args, deps = defaultImageApiDeps) {
|
|
|
34863
35016
|
chatId: chatIdFromEnv2()
|
|
34864
35017
|
});
|
|
34865
35018
|
}
|
|
34866
|
-
var publishCommand =
|
|
35019
|
+
var publishCommand = defineCommand112({
|
|
34867
35020
|
meta: {
|
|
34868
35021
|
name: "publish",
|
|
34869
35022
|
description: "Publish a final static creative image to Baker Creatives and print the creative reference JSON."
|
|
@@ -34921,7 +35074,7 @@ var publishCommand = defineCommand111({
|
|
|
34921
35074
|
});
|
|
34922
35075
|
|
|
34923
35076
|
// src/commands/creatives/index.ts
|
|
34924
|
-
var creativesCommand3 =
|
|
35077
|
+
var creativesCommand3 = defineCommand113({
|
|
34925
35078
|
meta: {
|
|
34926
35079
|
name: "creatives",
|
|
34927
35080
|
description: `Publish static ad creatives as first-class Baker outputs.
|
|
@@ -34938,11 +35091,11 @@ Full guide: __tooling__/docs/tools/baker/creatives.md`
|
|
|
34938
35091
|
});
|
|
34939
35092
|
|
|
34940
35093
|
// src/commands/flows/index.ts
|
|
34941
|
-
import { defineCommand as
|
|
35094
|
+
import { defineCommand as defineCommand118 } from "citty";
|
|
34942
35095
|
|
|
34943
35096
|
// src/commands/flows/add.ts
|
|
34944
35097
|
import { randomUUID } from "crypto";
|
|
34945
|
-
import { defineCommand as
|
|
35098
|
+
import { defineCommand as defineCommand114 } from "citty";
|
|
34946
35099
|
|
|
34947
35100
|
// src/commands/flows/shared.ts
|
|
34948
35101
|
import { existsSync as existsSync5, readdirSync as readdirSync2, readFileSync as readFileSync9, writeFileSync as writeFileSync3 } from "fs";
|
|
@@ -35152,7 +35305,7 @@ registerSchema({
|
|
|
35152
35305
|
parent: { type: "string", description: "Parent node id. Omit to append to the root's children.", required: false }
|
|
35153
35306
|
}
|
|
35154
35307
|
});
|
|
35155
|
-
var addNodeCommand =
|
|
35308
|
+
var addNodeCommand = defineCommand114({
|
|
35156
35309
|
meta: {
|
|
35157
35310
|
name: "add-node",
|
|
35158
35311
|
description: 'Add a step to a form, with the skeleton its type requires. Example: baker flows add-node contact --type customForm --name "Contact Info"'
|
|
@@ -35248,7 +35401,7 @@ registerSchema({
|
|
|
35248
35401
|
}
|
|
35249
35402
|
}
|
|
35250
35403
|
});
|
|
35251
|
-
var addSideEffectCommand =
|
|
35404
|
+
var addSideEffectCommand = defineCommand114({
|
|
35252
35405
|
meta: {
|
|
35253
35406
|
name: "add-side-effect",
|
|
35254
35407
|
description: "Add a side effect to a step, with the skeleton its type requires. Example: baker flows add-side-effect contact --node <id> --type googleSpreadsheet"
|
|
@@ -35330,7 +35483,7 @@ var addSideEffectCommand = defineCommand113({
|
|
|
35330
35483
|
|
|
35331
35484
|
// src/commands/flows/map.ts
|
|
35332
35485
|
import { readFileSync as readFileSync11 } from "fs";
|
|
35333
|
-
import { defineCommand as
|
|
35486
|
+
import { defineCommand as defineCommand115 } from "citty";
|
|
35334
35487
|
|
|
35335
35488
|
// src/commands/flows/value-expression.ts
|
|
35336
35489
|
import { existsSync as existsSync6, readFileSync as readFileSync10 } from "fs";
|
|
@@ -36103,7 +36256,7 @@ async function mapOptions(args, fromFile, into) {
|
|
|
36103
36256
|
destinationFields: hubspotForm ? await hubspotFieldCatalog(hubspotForm) : void 0
|
|
36104
36257
|
};
|
|
36105
36258
|
}
|
|
36106
|
-
var mapCommand2 =
|
|
36259
|
+
var mapCommand2 = defineCommand115({
|
|
36107
36260
|
meta: {
|
|
36108
36261
|
name: "map",
|
|
36109
36262
|
description: "Map form fields onto any value a side effect sends \u2014 never hand-write a mapping. Start here: baker flows map contact --from map.json --write"
|
|
@@ -36201,7 +36354,7 @@ var mapCommand2 = defineCommand114({
|
|
|
36201
36354
|
});
|
|
36202
36355
|
|
|
36203
36356
|
// src/commands/flows/normalize.ts
|
|
36204
|
-
import { defineCommand as
|
|
36357
|
+
import { defineCommand as defineCommand116 } from "citty";
|
|
36205
36358
|
var OPTIONAL_STRINGS = ["oauthProviderId"];
|
|
36206
36359
|
var ARRAY_FIELDS = [
|
|
36207
36360
|
"fieldMapping",
|
|
@@ -36270,7 +36423,7 @@ registerSchema({
|
|
|
36270
36423
|
}
|
|
36271
36424
|
}
|
|
36272
36425
|
});
|
|
36273
|
-
var normalizeCommand =
|
|
36426
|
+
var normalizeCommand = defineCommand116({
|
|
36274
36427
|
meta: {
|
|
36275
36428
|
name: "normalize",
|
|
36276
36429
|
description: "Repair the shapes a form file is allowed to get slightly wrong. Example: baker flows normalize contact --write"
|
|
@@ -36301,7 +36454,7 @@ var normalizeCommand = defineCommand115({
|
|
|
36301
36454
|
});
|
|
36302
36455
|
|
|
36303
36456
|
// src/commands/flows/schema.ts
|
|
36304
|
-
import { defineCommand as
|
|
36457
|
+
import { defineCommand as defineCommand117 } from "citty";
|
|
36305
36458
|
registerSchema({
|
|
36306
36459
|
command: "flows.schema",
|
|
36307
36460
|
description: "The shape of one node or side-effect type: a pasteable skeleton, who fills each part, and the reference file with the craft. Start here before authoring anything in a form's _data.json.",
|
|
@@ -36326,7 +36479,7 @@ function triggerHints(triggers) {
|
|
|
36326
36479
|
`A side effect on this step carries \`triggerId: "${triggers.completion}"\`, and \`baker flows add-side-effect\` writes it for you. The trigger belongs to the STEP, not to the side-effect type: one that does not match is valid, ships, and never runs.` + (others.length > 0 ? ` Other moments this step raises: ${others.join(", ")}.` : "")
|
|
36327
36480
|
];
|
|
36328
36481
|
}
|
|
36329
|
-
var schemaCommand =
|
|
36482
|
+
var schemaCommand = defineCommand117({
|
|
36330
36483
|
meta: {
|
|
36331
36484
|
name: "schema",
|
|
36332
36485
|
description: "Show a node or side-effect type's shape. Start here: baker flows schema node customForm \xB7 baker flows schema side-effect googleSpreadsheet \xB7 baker flows schema (lists both)"
|
|
@@ -36460,7 +36613,7 @@ function displayName(slug) {
|
|
|
36460
36613
|
const name = tree.displayName;
|
|
36461
36614
|
return typeof name === "string" && name.trim() ? name.trim() : slug;
|
|
36462
36615
|
}
|
|
36463
|
-
var listCommand12 =
|
|
36616
|
+
var listCommand12 = defineCommand118({
|
|
36464
36617
|
meta: {
|
|
36465
36618
|
name: "list",
|
|
36466
36619
|
description: "List Forms in this workspace with the count of confidential fields still needing setup. Example: baker flows list"
|
|
@@ -36481,7 +36634,7 @@ var listCommand12 = defineCommand117({
|
|
|
36481
36634
|
});
|
|
36482
36635
|
}
|
|
36483
36636
|
});
|
|
36484
|
-
var showCommand3 =
|
|
36637
|
+
var showCommand3 = defineCommand118({
|
|
36485
36638
|
meta: {
|
|
36486
36639
|
name: "show",
|
|
36487
36640
|
description: "Show a Form's confidential fields and their configuration status (never secret values). Example: baker flows show contact"
|
|
@@ -36509,7 +36662,7 @@ var showCommand3 = defineCommand117({
|
|
|
36509
36662
|
});
|
|
36510
36663
|
}
|
|
36511
36664
|
});
|
|
36512
|
-
var flowsCommand =
|
|
36665
|
+
var flowsCommand = defineCommand118({
|
|
36513
36666
|
meta: {
|
|
36514
36667
|
name: "flows",
|
|
36515
36668
|
description: `Read and shape this workspace's Forms (flows).
|
|
@@ -36543,10 +36696,10 @@ Full guide: __tooling__/docs/tools/baker/flows.md`
|
|
|
36543
36696
|
});
|
|
36544
36697
|
|
|
36545
36698
|
// src/commands/ga4/index.ts
|
|
36546
|
-
import { defineCommand as
|
|
36699
|
+
import { defineCommand as defineCommand125 } from "citty";
|
|
36547
36700
|
|
|
36548
36701
|
// src/commands/ga4/audit.ts
|
|
36549
|
-
import { defineCommand as
|
|
36702
|
+
import { defineCommand as defineCommand119 } from "citty";
|
|
36550
36703
|
|
|
36551
36704
|
// src/commands/ga4/resolve.ts
|
|
36552
36705
|
async function fetchProperties(useCache = true) {
|
|
@@ -36612,7 +36765,7 @@ registerSchema({
|
|
|
36612
36765
|
"no-cache": { type: "boolean", description: "Skip cache, hit API directly", required: false }
|
|
36613
36766
|
}
|
|
36614
36767
|
});
|
|
36615
|
-
var auditCommand2 =
|
|
36768
|
+
var auditCommand2 = defineCommand119({
|
|
36616
36769
|
meta: {
|
|
36617
36770
|
name: "audit",
|
|
36618
36771
|
description: `Run all GA4 admin health checks. Returns property config with playbook warnings.
|
|
@@ -36667,7 +36820,7 @@ Examples:
|
|
|
36667
36820
|
});
|
|
36668
36821
|
|
|
36669
36822
|
// src/commands/ga4/config.ts
|
|
36670
|
-
import { defineCommand as
|
|
36823
|
+
import { defineCommand as defineCommand120 } from "citty";
|
|
36671
36824
|
|
|
36672
36825
|
// src/commands/ga4/shared.ts
|
|
36673
36826
|
import { readFileSync as readFileSync12 } from "fs";
|
|
@@ -36863,7 +37016,7 @@ function configHints(config) {
|
|
|
36863
37016
|
}
|
|
36864
37017
|
return hints;
|
|
36865
37018
|
}
|
|
36866
|
-
var configCommand =
|
|
37019
|
+
var configCommand = defineCommand120({
|
|
36867
37020
|
meta: {
|
|
36868
37021
|
name: "config",
|
|
36869
37022
|
description: `Read how the property is configured to measure \u2014 key events, custom definitions, custom events, retention
|
|
@@ -36895,7 +37048,7 @@ Examples:
|
|
|
36895
37048
|
});
|
|
36896
37049
|
|
|
36897
37050
|
// src/commands/ga4/draft.ts
|
|
36898
|
-
import { defineCommand as
|
|
37051
|
+
import { defineCommand as defineCommand121 } from "citty";
|
|
36899
37052
|
registerSchema({
|
|
36900
37053
|
command: "ga4.draft",
|
|
36901
37054
|
description: "Review and undo the Google Analytics changes staged on this chat. Use `list` to see everything staged, `show` to inspect one change in full before the chat completes, `amend` to correct one in place, and `remove`/`clear` to drop them. `list` and `show` take --chat <id> to read an earlier chat's changes instead.",
|
|
@@ -36904,13 +37057,13 @@ registerSchema({
|
|
|
36904
37057
|
chat: { type: "string", description: CHAT_READ_ARG.description, required: false }
|
|
36905
37058
|
}
|
|
36906
37059
|
});
|
|
36907
|
-
var draftCommand3 =
|
|
37060
|
+
var draftCommand3 = defineCommand121({
|
|
36908
37061
|
meta: {
|
|
36909
37062
|
name: "draft",
|
|
36910
37063
|
description: "List, show, amend, remove or clear the Google Analytics changes staged on this chat. `list` and `show` take --chat <id> to read an earlier chat's changes instead."
|
|
36911
37064
|
},
|
|
36912
37065
|
subCommands: {
|
|
36913
|
-
list:
|
|
37066
|
+
list: defineCommand121({
|
|
36914
37067
|
meta: { name: "list", description: "Review everything staged on this chat (--json for the raw envelope)" },
|
|
36915
37068
|
args: {
|
|
36916
37069
|
json: { type: "boolean", description: "Print the raw JSON envelope", required: false },
|
|
@@ -36920,7 +37073,7 @@ var draftCommand3 = defineCommand120({
|
|
|
36920
37073
|
await draftList(args.json === true, args.chat);
|
|
36921
37074
|
}
|
|
36922
37075
|
}),
|
|
36923
|
-
show:
|
|
37076
|
+
show: defineCommand121({
|
|
36924
37077
|
meta: {
|
|
36925
37078
|
name: "show",
|
|
36926
37079
|
description: "Print the full staged payload for one change, alongside how the property looks today \u2014 the receipt to verify it before the chat completes (never truncated)."
|
|
@@ -36937,7 +37090,7 @@ var draftCommand3 = defineCommand120({
|
|
|
36937
37090
|
);
|
|
36938
37091
|
}
|
|
36939
37092
|
}),
|
|
36940
|
-
amend:
|
|
37093
|
+
amend: defineCommand121({
|
|
36941
37094
|
meta: {
|
|
36942
37095
|
name: "amend",
|
|
36943
37096
|
description: "Update a staged change in place \u2014 merges a JSON patch into its payload (objects deep-merge, null deletes a key, arrays/scalars replace) and re-runs every check. Use this instead of remove + re-create."
|
|
@@ -36954,7 +37107,7 @@ var draftCommand3 = defineCommand120({
|
|
|
36954
37107
|
});
|
|
36955
37108
|
}
|
|
36956
37109
|
}),
|
|
36957
|
-
remove:
|
|
37110
|
+
remove: defineCommand121({
|
|
36958
37111
|
meta: { name: "remove", description: "Remove one staged change" },
|
|
36959
37112
|
args: { ref: { type: "positional", description: "Staged ref or target id", required: false } },
|
|
36960
37113
|
run: async ({ args }) => {
|
|
@@ -36963,7 +37116,7 @@ var draftCommand3 = defineCommand120({
|
|
|
36963
37116
|
});
|
|
36964
37117
|
}
|
|
36965
37118
|
}),
|
|
36966
|
-
clear:
|
|
37119
|
+
clear: defineCommand121({
|
|
36967
37120
|
meta: { name: "clear", description: "Discard all Google Analytics changes staged on this chat" },
|
|
36968
37121
|
run: async () => {
|
|
36969
37122
|
await draftAction2("/api/ga4/draft/clear", {});
|
|
@@ -36973,7 +37126,7 @@ var draftCommand3 = defineCommand120({
|
|
|
36973
37126
|
});
|
|
36974
37127
|
|
|
36975
37128
|
// src/commands/ga4/properties.ts
|
|
36976
|
-
import { defineCommand as
|
|
37129
|
+
import { defineCommand as defineCommand122 } from "citty";
|
|
36977
37130
|
registerSchema({
|
|
36978
37131
|
command: "ga4.properties",
|
|
36979
37132
|
description: "List the GA4 properties this company connected \u2014 there can be several, and every one of them is yours to query. Returns the property IDs the query and audit commands take. Run this first to find property IDs.",
|
|
@@ -36989,7 +37142,7 @@ function propertyHints(properties) {
|
|
|
36989
37142
|
resources: properties.map((property) => ({ id: property.externalId, label: property.name }))
|
|
36990
37143
|
});
|
|
36991
37144
|
}
|
|
36992
|
-
var propertiesCommand =
|
|
37145
|
+
var propertiesCommand = defineCommand122({
|
|
36993
37146
|
meta: {
|
|
36994
37147
|
name: "properties",
|
|
36995
37148
|
description: `List accessible GA4 properties.
|
|
@@ -37039,7 +37192,7 @@ Examples:
|
|
|
37039
37192
|
// src/commands/ga4/query.ts
|
|
37040
37193
|
import { appendFileSync as appendFileSync2, existsSync as existsSync7, readFileSync as readFileSync13, writeFileSync as writeFileSync4 } from "fs";
|
|
37041
37194
|
import { resolve as resolve2 } from "path";
|
|
37042
|
-
import { defineCommand as
|
|
37195
|
+
import { defineCommand as defineCommand123 } from "citty";
|
|
37043
37196
|
|
|
37044
37197
|
// src/commands/ga4/presets.ts
|
|
37045
37198
|
var GA4_PRESETS = [
|
|
@@ -37174,7 +37327,7 @@ function handleError3(err) {
|
|
|
37174
37327
|
});
|
|
37175
37328
|
process.exit(1);
|
|
37176
37329
|
}
|
|
37177
|
-
var queryCommand2 =
|
|
37330
|
+
var queryCommand2 = defineCommand123({
|
|
37178
37331
|
meta: {
|
|
37179
37332
|
name: "query",
|
|
37180
37333
|
description: `Run GA4 Data API reports. Preset-first with free-form escape hatch.
|
|
@@ -37245,7 +37398,7 @@ Free-form (escape hatch):
|
|
|
37245
37398
|
});
|
|
37246
37399
|
|
|
37247
37400
|
// src/commands/ga4/write-commands.ts
|
|
37248
|
-
import { defineCommand as
|
|
37401
|
+
import { defineCommand as defineCommand124 } from "citty";
|
|
37249
37402
|
var PROPERTY_ARG_DESCRIPTION = "GA4 property id (optional only when one property is connected \u2014 run `baker ga4 properties`)";
|
|
37250
37403
|
var propertyArg = { type: "string", description: PROPERTY_ARG_DESCRIPTION, required: false };
|
|
37251
37404
|
function createJsonDescription(noun) {
|
|
@@ -37263,7 +37416,7 @@ registerSchema({
|
|
|
37263
37416
|
"property-id": { type: "string", description: PROPERTY_ARG_DESCRIPTION, required: false }
|
|
37264
37417
|
}
|
|
37265
37418
|
});
|
|
37266
|
-
var keyEventCommand =
|
|
37419
|
+
var keyEventCommand = defineCommand124({
|
|
37267
37420
|
meta: {
|
|
37268
37421
|
name: "key-event",
|
|
37269
37422
|
description: `Stage key-event (conversion) changes
|
|
@@ -37276,7 +37429,7 @@ Examples:
|
|
|
37276
37429
|
baker ga4 key-event delete 4185`
|
|
37277
37430
|
},
|
|
37278
37431
|
subCommands: {
|
|
37279
|
-
create:
|
|
37432
|
+
create: defineCommand124({
|
|
37280
37433
|
meta: {
|
|
37281
37434
|
name: "create",
|
|
37282
37435
|
description: "Stage a new key event. Needs eventName and countingMethod (ONCE_PER_EVENT or ONCE_PER_SESSION); defaultValue sets a monetary value when the event does not send one."
|
|
@@ -37297,7 +37450,7 @@ Examples:
|
|
|
37297
37450
|
);
|
|
37298
37451
|
}
|
|
37299
37452
|
}),
|
|
37300
|
-
update:
|
|
37453
|
+
update: defineCommand124({
|
|
37301
37454
|
meta: {
|
|
37302
37455
|
name: "update",
|
|
37303
37456
|
description: "Stage a change to an existing key event (pass its id). Only countingMethod and defaultValue can change \u2014 Google will not rename a key event."
|
|
@@ -37317,7 +37470,7 @@ Examples:
|
|
|
37317
37470
|
});
|
|
37318
37471
|
}
|
|
37319
37472
|
}),
|
|
37320
|
-
delete:
|
|
37473
|
+
delete: defineCommand124({
|
|
37321
37474
|
meta: {
|
|
37322
37475
|
name: "delete",
|
|
37323
37476
|
description: "Stage removing a key event, so the event stops counting as a conversion. The event itself keeps being collected. Irreversible once the chat completes \u2014 confirm with the user first."
|
|
@@ -37365,7 +37518,7 @@ for (const { kind, noun, createHint } of DEFINITIONS) {
|
|
|
37365
37518
|
}
|
|
37366
37519
|
function definitionCommand(definition) {
|
|
37367
37520
|
const { command, kind, noun, example } = definition;
|
|
37368
|
-
return
|
|
37521
|
+
return defineCommand124({
|
|
37369
37522
|
meta: {
|
|
37370
37523
|
name: command,
|
|
37371
37524
|
description: `Stage ${noun} changes
|
|
@@ -37377,7 +37530,7 @@ Examples:
|
|
|
37377
37530
|
baker ga4 ${command} archive 12`
|
|
37378
37531
|
},
|
|
37379
37532
|
subCommands: {
|
|
37380
|
-
create:
|
|
37533
|
+
create: defineCommand124({
|
|
37381
37534
|
meta: { name: "create", description: `Stage a new ${noun} (or a JSON array of them, staged together)` },
|
|
37382
37535
|
args: {
|
|
37383
37536
|
json: { type: "string", description: createJsonDescription(noun), required: false },
|
|
@@ -37395,7 +37548,7 @@ Examples:
|
|
|
37395
37548
|
);
|
|
37396
37549
|
}
|
|
37397
37550
|
}),
|
|
37398
|
-
update:
|
|
37551
|
+
update: defineCommand124({
|
|
37399
37552
|
meta: {
|
|
37400
37553
|
name: "update",
|
|
37401
37554
|
description: `Stage a change to an existing ${noun} (pass its id). The parameter name and scope cannot change \u2014 archive and recreate for that.`
|
|
@@ -37415,7 +37568,7 @@ Examples:
|
|
|
37415
37568
|
});
|
|
37416
37569
|
}
|
|
37417
37570
|
}),
|
|
37418
|
-
archive:
|
|
37571
|
+
archive: defineCommand124({
|
|
37419
37572
|
meta: {
|
|
37420
37573
|
name: "archive",
|
|
37421
37574
|
description: `Stage archiving a ${noun} (pass its id). It stops collecting and leaves reporting; past data stays. Irreversible once the chat completes \u2014 confirm with the user first.`
|
|
@@ -37460,7 +37613,7 @@ var dataStreamArg = {
|
|
|
37460
37613
|
function withStream(args) {
|
|
37461
37614
|
return typeof args["data-stream"] === "string" ? { dataStream: args["data-stream"] } : {};
|
|
37462
37615
|
}
|
|
37463
|
-
var customEventCommand =
|
|
37616
|
+
var customEventCommand = defineCommand124({
|
|
37464
37617
|
meta: {
|
|
37465
37618
|
name: "custom-event",
|
|
37466
37619
|
description: `Stage custom events \u2014 new events built from events the site already sends
|
|
@@ -37471,7 +37624,7 @@ Examples:
|
|
|
37471
37624
|
baker ga4 custom-event delete 7`
|
|
37472
37625
|
},
|
|
37473
37626
|
subCommands: {
|
|
37474
|
-
create:
|
|
37627
|
+
create: defineCommand124({
|
|
37475
37628
|
meta: {
|
|
37476
37629
|
name: "create",
|
|
37477
37630
|
description: "Stage a new custom event. Conditions match the source event: use field `event_name` to match the event itself, or any parameter name to match its value."
|
|
@@ -37494,7 +37647,7 @@ Examples:
|
|
|
37494
37647
|
);
|
|
37495
37648
|
}
|
|
37496
37649
|
}),
|
|
37497
|
-
update:
|
|
37650
|
+
update: defineCommand124({
|
|
37498
37651
|
meta: { name: "update", description: "Stage a change to an existing custom event (pass its id)" },
|
|
37499
37652
|
args: {
|
|
37500
37653
|
id: { type: "positional", description: "Custom event rule id", required: false },
|
|
@@ -37513,7 +37666,7 @@ Examples:
|
|
|
37513
37666
|
});
|
|
37514
37667
|
}
|
|
37515
37668
|
}),
|
|
37516
|
-
delete:
|
|
37669
|
+
delete: defineCommand124({
|
|
37517
37670
|
meta: {
|
|
37518
37671
|
name: "delete",
|
|
37519
37672
|
description: "Stage removing a custom event (pass its id). The event stops being created from then on; data already collected under it stays. Confirm with the user first."
|
|
@@ -37568,7 +37721,7 @@ function booleanArg(input, flag) {
|
|
|
37568
37721
|
if (input === "false") return false;
|
|
37569
37722
|
return failValidation3(`--${flag} must be true or false`);
|
|
37570
37723
|
}
|
|
37571
|
-
var dataRetentionCommand =
|
|
37724
|
+
var dataRetentionCommand = defineCommand124({
|
|
37572
37725
|
meta: {
|
|
37573
37726
|
name: "data-retention",
|
|
37574
37727
|
description: `Stage a change to how long Google Analytics keeps data
|
|
@@ -37578,7 +37731,7 @@ Examples:
|
|
|
37578
37731
|
baker ga4 data-retention set --event-data 14 --user-data 14 --reset-on-activity true`
|
|
37579
37732
|
},
|
|
37580
37733
|
subCommands: {
|
|
37581
|
-
set:
|
|
37734
|
+
set: defineCommand124({
|
|
37582
37735
|
meta: { name: "set", description: "Stage the retention window (months)" },
|
|
37583
37736
|
args: {
|
|
37584
37737
|
"event-data": { type: "string", description: "2, 14, 26, 38 or 50", required: false },
|
|
@@ -37614,7 +37767,7 @@ registerSchema({
|
|
|
37614
37767
|
"property-id": { type: "string", description: PROPERTY_ARG_DESCRIPTION, required: false }
|
|
37615
37768
|
}
|
|
37616
37769
|
});
|
|
37617
|
-
var audienceCommand =
|
|
37770
|
+
var audienceCommand = defineCommand124({
|
|
37618
37771
|
meta: {
|
|
37619
37772
|
name: "audience",
|
|
37620
37773
|
description: `Stage audience changes (saved groups of users, for retargeting and analysis)
|
|
@@ -37646,7 +37799,7 @@ Examples:
|
|
|
37646
37799
|
baker ga4 audience archive 8813`
|
|
37647
37800
|
},
|
|
37648
37801
|
subCommands: {
|
|
37649
|
-
create:
|
|
37802
|
+
create: defineCommand124({
|
|
37650
37803
|
meta: { name: "create", description: createJsonDescription("audience") },
|
|
37651
37804
|
args: {
|
|
37652
37805
|
json: { type: "string", description: createJsonDescription("audience"), required: false },
|
|
@@ -37664,7 +37817,7 @@ Examples:
|
|
|
37664
37817
|
);
|
|
37665
37818
|
}
|
|
37666
37819
|
}),
|
|
37667
|
-
update:
|
|
37820
|
+
update: defineCommand124({
|
|
37668
37821
|
meta: {
|
|
37669
37822
|
name: "update",
|
|
37670
37823
|
description: "Stage a new name or description (pass the audience id). Who is in it cannot be changed."
|
|
@@ -37685,7 +37838,7 @@ Examples:
|
|
|
37685
37838
|
});
|
|
37686
37839
|
}
|
|
37687
37840
|
}),
|
|
37688
|
-
archive:
|
|
37841
|
+
archive: defineCommand124({
|
|
37689
37842
|
meta: {
|
|
37690
37843
|
name: "archive",
|
|
37691
37844
|
description: "Stage retiring an audience. Cannot be undone \u2014 the users it gathered do not come back."
|
|
@@ -37714,7 +37867,7 @@ registerSchema({
|
|
|
37714
37867
|
"property-id": { type: "string", description: PROPERTY_ARG_DESCRIPTION, required: false }
|
|
37715
37868
|
}
|
|
37716
37869
|
});
|
|
37717
|
-
var propertyCommand =
|
|
37870
|
+
var propertyCommand = defineCommand124({
|
|
37718
37871
|
meta: {
|
|
37719
37872
|
name: "property",
|
|
37720
37873
|
description: `Stage a change to the property's own settings
|
|
@@ -37724,7 +37877,7 @@ Examples:
|
|
|
37724
37877
|
baker ga4 property set --name "Acme \u2014 Web" --industry REAL_ESTATE`
|
|
37725
37878
|
},
|
|
37726
37879
|
subCommands: {
|
|
37727
|
-
set:
|
|
37880
|
+
set: defineCommand124({
|
|
37728
37881
|
meta: { name: "set", description: "Stage the property name and/or industry category" },
|
|
37729
37882
|
args: {
|
|
37730
37883
|
name: { type: "string", description: "New property display name", required: false },
|
|
@@ -37764,7 +37917,7 @@ registerSchema({
|
|
|
37764
37917
|
"property-id": { type: "string", description: PROPERTY_ARG_DESCRIPTION, required: false }
|
|
37765
37918
|
}
|
|
37766
37919
|
});
|
|
37767
|
-
var adsLinkCommand =
|
|
37920
|
+
var adsLinkCommand = defineCommand124({
|
|
37768
37921
|
meta: {
|
|
37769
37922
|
name: "ads-link",
|
|
37770
37923
|
description: `Stage linking this property to a Google Ads account
|
|
@@ -37779,7 +37932,7 @@ Examples:
|
|
|
37779
37932
|
baker ga4 ads-link delete L1234`
|
|
37780
37933
|
},
|
|
37781
37934
|
subCommands: {
|
|
37782
|
-
create:
|
|
37935
|
+
create: defineCommand124({
|
|
37783
37936
|
meta: { name: "create", description: "Stage linking the property to a Google Ads account" },
|
|
37784
37937
|
args: {
|
|
37785
37938
|
"customer-id": { type: "string", description: "Google Ads customer id (123-456-7890)", required: false },
|
|
@@ -37798,7 +37951,7 @@ Examples:
|
|
|
37798
37951
|
await stageOp3({ kind: "ga4.googleAdsLink.create", payload, ...withProperty(args) });
|
|
37799
37952
|
}
|
|
37800
37953
|
}),
|
|
37801
|
-
update:
|
|
37954
|
+
update: defineCommand124({
|
|
37802
37955
|
meta: {
|
|
37803
37956
|
name: "update",
|
|
37804
37957
|
description: "Stage the ads-personalisation setting on an existing link (pass its id)"
|
|
@@ -37820,7 +37973,7 @@ Examples:
|
|
|
37820
37973
|
});
|
|
37821
37974
|
}
|
|
37822
37975
|
}),
|
|
37823
|
-
delete:
|
|
37976
|
+
delete: defineCommand124({
|
|
37824
37977
|
meta: {
|
|
37825
37978
|
name: "delete",
|
|
37826
37979
|
description: "Stage unlinking. Stops conversion imports and strands every audience on this property."
|
|
@@ -37871,7 +38024,7 @@ var MEASUREMENT_FLAGS = {
|
|
|
37871
38024
|
"page-changes": "pageChangesEnabled",
|
|
37872
38025
|
"form-interactions": "formInteractionsEnabled"
|
|
37873
38026
|
};
|
|
37874
|
-
var enhancedMeasurementCommand =
|
|
38027
|
+
var enhancedMeasurementCommand = defineCommand124({
|
|
37875
38028
|
meta: {
|
|
37876
38029
|
name: "enhanced-measurement",
|
|
37877
38030
|
description: `Stage the automatic events GA4 collects on a website stream
|
|
@@ -37885,7 +38038,7 @@ Examples:
|
|
|
37885
38038
|
baker ga4 enhanced-measurement set --video false`
|
|
37886
38039
|
},
|
|
37887
38040
|
subCommands: {
|
|
37888
|
-
set:
|
|
38041
|
+
set: defineCommand124({
|
|
37889
38042
|
meta: { name: "set", description: "Stage which automatic events the website stream collects" },
|
|
37890
38043
|
args: {
|
|
37891
38044
|
scrolls: { type: "string", description: "true|false", required: false },
|
|
@@ -37928,7 +38081,7 @@ Examples:
|
|
|
37928
38081
|
});
|
|
37929
38082
|
|
|
37930
38083
|
// src/commands/ga4/index.ts
|
|
37931
|
-
var ga4Command =
|
|
38084
|
+
var ga4Command = defineCommand125({
|
|
37932
38085
|
meta: {
|
|
37933
38086
|
name: "ga4",
|
|
37934
38087
|
description: `Google Analytics 4. Report on a property, audit its config, and change what it measures.
|
|
@@ -37977,12 +38130,12 @@ Full guide: __tooling__/docs/tools/baker/ga4.md`
|
|
|
37977
38130
|
});
|
|
37978
38131
|
|
|
37979
38132
|
// src/commands/gsc/index.ts
|
|
37980
|
-
import { defineCommand as
|
|
38133
|
+
import { defineCommand as defineCommand129 } from "citty";
|
|
37981
38134
|
|
|
37982
38135
|
// src/commands/gsc/query.ts
|
|
37983
38136
|
import { appendFileSync as appendFileSync3, existsSync as existsSync8, readFileSync as readFileSync14, writeFileSync as writeFileSync5 } from "fs";
|
|
37984
38137
|
import { resolve as resolve3 } from "path";
|
|
37985
|
-
import { defineCommand as
|
|
38138
|
+
import { defineCommand as defineCommand126 } from "citty";
|
|
37986
38139
|
|
|
37987
38140
|
// src/commands/gsc/presets.ts
|
|
37988
38141
|
var GSC_PRESETS = [
|
|
@@ -38176,7 +38329,7 @@ function handleError4(err) {
|
|
|
38176
38329
|
});
|
|
38177
38330
|
process.exit(1);
|
|
38178
38331
|
}
|
|
38179
|
-
var queryCommand3 =
|
|
38332
|
+
var queryCommand3 = defineCommand126({
|
|
38180
38333
|
meta: {
|
|
38181
38334
|
name: "query",
|
|
38182
38335
|
description: `Run GSC Search Analytics queries. Preset-first with free-form escape hatch.
|
|
@@ -38254,7 +38407,7 @@ Free-form (escape hatch):
|
|
|
38254
38407
|
});
|
|
38255
38408
|
|
|
38256
38409
|
// src/commands/gsc/sitemaps.ts
|
|
38257
|
-
import { defineCommand as
|
|
38410
|
+
import { defineCommand as defineCommand127 } from "citty";
|
|
38258
38411
|
registerSchema({
|
|
38259
38412
|
command: "gsc.sitemaps",
|
|
38260
38413
|
description: "List sitemaps for a Search Console site. Check sitemap health and errors.",
|
|
@@ -38263,7 +38416,7 @@ registerSchema({
|
|
|
38263
38416
|
"no-cache": { type: "boolean", description: "Skip cache, hit API directly", required: false }
|
|
38264
38417
|
}
|
|
38265
38418
|
});
|
|
38266
|
-
var sitemapsCommand =
|
|
38419
|
+
var sitemapsCommand = defineCommand127({
|
|
38267
38420
|
meta: {
|
|
38268
38421
|
name: "sitemaps",
|
|
38269
38422
|
description: `List sitemaps for a site. Check health and errors.
|
|
@@ -38316,7 +38469,7 @@ Examples:
|
|
|
38316
38469
|
});
|
|
38317
38470
|
|
|
38318
38471
|
// src/commands/gsc/sites.ts
|
|
38319
|
-
import { defineCommand as
|
|
38472
|
+
import { defineCommand as defineCommand128 } from "citty";
|
|
38320
38473
|
registerSchema({
|
|
38321
38474
|
command: "gsc.sites",
|
|
38322
38475
|
description: "List the Search Console sites this company connected \u2014 there can be several, and every one of them is yours to query. Returns the site URLs the query and sitemaps commands take.",
|
|
@@ -38332,7 +38485,7 @@ function siteHints(sites) {
|
|
|
38332
38485
|
resources: sites.map((site) => ({ id: site.siteUrl, label: site.permissionLevel }))
|
|
38333
38486
|
});
|
|
38334
38487
|
}
|
|
38335
|
-
var sitesCommand =
|
|
38488
|
+
var sitesCommand = defineCommand128({
|
|
38336
38489
|
meta: {
|
|
38337
38490
|
name: "sites",
|
|
38338
38491
|
description: `List verified Search Console sites.
|
|
@@ -38380,7 +38533,7 @@ Examples:
|
|
|
38380
38533
|
});
|
|
38381
38534
|
|
|
38382
38535
|
// src/commands/gsc/index.ts
|
|
38383
|
-
var gscCommand =
|
|
38536
|
+
var gscCommand = defineCommand129({
|
|
38384
38537
|
meta: {
|
|
38385
38538
|
name: "gsc",
|
|
38386
38539
|
description: `Google Search Console commands. PPC-SEO arbitrage, brand halo analysis, negative keyword discovery.
|
|
@@ -38404,7 +38557,7 @@ Full guide: __tooling__/docs/tools/baker/gsc.md`
|
|
|
38404
38557
|
});
|
|
38405
38558
|
|
|
38406
38559
|
// src/commands/history/index.ts
|
|
38407
|
-
import { defineCommand as
|
|
38560
|
+
import { defineCommand as defineCommand130 } from "citty";
|
|
38408
38561
|
registerSchema({
|
|
38409
38562
|
command: "history.list",
|
|
38410
38563
|
description: "Start here: unified account history (audit log) \u2014 everything that changed on this account, newest first: publishes, chat lifecycle, backlog actions, team changes, setup links, tags, schedules, ad-platform writes, followed advertisers, media, creatives, reports, domains, and integrations. Use it to see what happened recently before planning work. Compact by default; add --full for raw metadata per entry.",
|
|
@@ -38459,7 +38612,7 @@ function parseBoundedInt2(raw, name, min, max) {
|
|
|
38459
38612
|
}
|
|
38460
38613
|
return value;
|
|
38461
38614
|
}
|
|
38462
|
-
var listCommand13 =
|
|
38615
|
+
var listCommand13 = defineCommand130({
|
|
38463
38616
|
meta: {
|
|
38464
38617
|
name: "list",
|
|
38465
38618
|
description: "List recent account changes (unified audit log), newest first."
|
|
@@ -38505,7 +38658,7 @@ var listCommand13 = defineCommand129({
|
|
|
38505
38658
|
}
|
|
38506
38659
|
}
|
|
38507
38660
|
});
|
|
38508
|
-
var historyCommand =
|
|
38661
|
+
var historyCommand = defineCommand130({
|
|
38509
38662
|
meta: {
|
|
38510
38663
|
name: "history",
|
|
38511
38664
|
description: `Unified account history (audit log): what changed, who did it, and when.
|
|
@@ -38515,7 +38668,7 @@ Full guide: __tooling__/docs/tools/baker/history.md`
|
|
|
38515
38668
|
});
|
|
38516
38669
|
|
|
38517
38670
|
// src/commands/hubspot/index.ts
|
|
38518
|
-
import { defineCommand as
|
|
38671
|
+
import { defineCommand as defineCommand131 } from "citty";
|
|
38519
38672
|
var EMBED_TYPES = ["legacy", "v4", "unknown"];
|
|
38520
38673
|
function failNotConnected(err) {
|
|
38521
38674
|
if (err instanceof ApiError && err.code === "FORBIDDEN" && err.message.includes(HUBSPOT_MISSING_GRANT_MARKER)) {
|
|
@@ -38669,7 +38822,7 @@ registerSchema({
|
|
|
38669
38822
|
}
|
|
38670
38823
|
}
|
|
38671
38824
|
});
|
|
38672
|
-
var formsListCommand =
|
|
38825
|
+
var formsListCommand = defineCommand131({
|
|
38673
38826
|
meta: {
|
|
38674
38827
|
name: "list",
|
|
38675
38828
|
description: "List HubSpot forms with embed type and post-submit action. Example: baker hubspot forms list --redirecting-only"
|
|
@@ -38714,7 +38867,7 @@ var formsListCommand = defineCommand130({
|
|
|
38714
38867
|
}
|
|
38715
38868
|
}
|
|
38716
38869
|
});
|
|
38717
|
-
var formsViewCommand =
|
|
38870
|
+
var formsViewCommand = defineCommand131({
|
|
38718
38871
|
meta: {
|
|
38719
38872
|
name: "view",
|
|
38720
38873
|
description: "Show one HubSpot form's fields and configuration. Example: baker hubspot forms view 1a2b3c"
|
|
@@ -38766,7 +38919,7 @@ var formsViewCommand = defineCommand130({
|
|
|
38766
38919
|
}
|
|
38767
38920
|
}
|
|
38768
38921
|
});
|
|
38769
|
-
var meetingsListCommand =
|
|
38922
|
+
var meetingsListCommand = defineCommand131({
|
|
38770
38923
|
meta: {
|
|
38771
38924
|
name: "list",
|
|
38772
38925
|
description: "List HubSpot meeting links (calendars). Example: baker hubspot meetings list"
|
|
@@ -38808,7 +38961,7 @@ var meetingsListCommand = defineCommand130({
|
|
|
38808
38961
|
}
|
|
38809
38962
|
}
|
|
38810
38963
|
});
|
|
38811
|
-
var meetingsViewCommand =
|
|
38964
|
+
var meetingsViewCommand = defineCommand131({
|
|
38812
38965
|
meta: {
|
|
38813
38966
|
name: "view",
|
|
38814
38967
|
description: "Show one HubSpot meeting link's booking fields. Example: baker hubspot meetings view discovery-call"
|
|
@@ -38852,7 +39005,7 @@ var meetingsViewCommand = defineCommand130({
|
|
|
38852
39005
|
}
|
|
38853
39006
|
}
|
|
38854
39007
|
});
|
|
38855
|
-
var formsSubmissionsCommand =
|
|
39008
|
+
var formsSubmissionsCommand = defineCommand131({
|
|
38856
39009
|
meta: {
|
|
38857
39010
|
name: "submissions",
|
|
38858
39011
|
description: "How many leads a form received, and when. Example: baker hubspot forms submissions <formId> --days 30"
|
|
@@ -38901,7 +39054,7 @@ var formsSubmissionsCommand = defineCommand130({
|
|
|
38901
39054
|
}
|
|
38902
39055
|
}
|
|
38903
39056
|
});
|
|
38904
|
-
var workflowsListCommand =
|
|
39057
|
+
var workflowsListCommand = defineCommand131({
|
|
38905
39058
|
meta: {
|
|
38906
39059
|
name: "list",
|
|
38907
39060
|
description: "List HubSpot workflows. Example: baker hubspot workflows list --enabled-only"
|
|
@@ -38966,7 +39119,7 @@ function workflowViewHints(workflow) {
|
|
|
38966
39119
|
}
|
|
38967
39120
|
return hints;
|
|
38968
39121
|
}
|
|
38969
|
-
var workflowsViewCommand =
|
|
39122
|
+
var workflowsViewCommand = defineCommand131({
|
|
38970
39123
|
meta: {
|
|
38971
39124
|
name: "view",
|
|
38972
39125
|
description: "Read one workflow's real configuration \u2014 enrolment, branches in order, and what each step writes. Example: baker hubspot workflows view 121183594 --full"
|
|
@@ -38993,7 +39146,7 @@ var workflowsViewCommand = defineCommand130({
|
|
|
38993
39146
|
}
|
|
38994
39147
|
}
|
|
38995
39148
|
});
|
|
38996
|
-
var pipelinesListCommand =
|
|
39149
|
+
var pipelinesListCommand = defineCommand131({
|
|
38997
39150
|
meta: {
|
|
38998
39151
|
name: "list",
|
|
38999
39152
|
description: "List HubSpot deal pipelines and their stages. Example: baker hubspot pipelines list"
|
|
@@ -39010,7 +39163,7 @@ var pipelinesListCommand = defineCommand130({
|
|
|
39010
39163
|
}
|
|
39011
39164
|
}
|
|
39012
39165
|
});
|
|
39013
|
-
var contactsSummaryCommand =
|
|
39166
|
+
var contactsSummaryCommand = defineCommand131({
|
|
39014
39167
|
meta: {
|
|
39015
39168
|
name: "summary",
|
|
39016
39169
|
description: "Whether recent leads are being worked, as counts. Example: baker hubspot contacts summary --days 30"
|
|
@@ -39080,7 +39233,7 @@ function contactLookupHints(data) {
|
|
|
39080
39233
|
}
|
|
39081
39234
|
return hints;
|
|
39082
39235
|
}
|
|
39083
|
-
var contactsLookupCommand =
|
|
39236
|
+
var contactsLookupCommand = defineCommand131({
|
|
39084
39237
|
meta: {
|
|
39085
39238
|
name: "lookup",
|
|
39086
39239
|
description: "Find one contact by email and see whether it was worked. Example: baker hubspot contacts lookup a@b.com"
|
|
@@ -39104,27 +39257,27 @@ var contactsLookupCommand = defineCommand130({
|
|
|
39104
39257
|
}
|
|
39105
39258
|
}
|
|
39106
39259
|
});
|
|
39107
|
-
var contactsCommand =
|
|
39260
|
+
var contactsCommand = defineCommand131({
|
|
39108
39261
|
meta: { name: "contacts", description: "Contacts on the connected HubSpot account." },
|
|
39109
39262
|
subCommands: { summary: contactsSummaryCommand, lookup: contactsLookupCommand }
|
|
39110
39263
|
});
|
|
39111
|
-
var formsCommand =
|
|
39264
|
+
var formsCommand = defineCommand131({
|
|
39112
39265
|
meta: { name: "forms", description: "HubSpot forms on the connected account." },
|
|
39113
39266
|
subCommands: { list: formsListCommand, view: formsViewCommand, submissions: formsSubmissionsCommand }
|
|
39114
39267
|
});
|
|
39115
|
-
var workflowsCommand =
|
|
39268
|
+
var workflowsCommand = defineCommand131({
|
|
39116
39269
|
meta: { name: "workflows", description: "HubSpot workflows on the connected account." },
|
|
39117
39270
|
subCommands: { list: workflowsListCommand, view: workflowsViewCommand }
|
|
39118
39271
|
});
|
|
39119
|
-
var pipelinesCommand =
|
|
39272
|
+
var pipelinesCommand = defineCommand131({
|
|
39120
39273
|
meta: { name: "pipelines", description: "HubSpot deal pipelines on the connected account." },
|
|
39121
39274
|
subCommands: { list: pipelinesListCommand }
|
|
39122
39275
|
});
|
|
39123
|
-
var meetingsCommand =
|
|
39276
|
+
var meetingsCommand = defineCommand131({
|
|
39124
39277
|
meta: { name: "meetings", description: "HubSpot meeting links (calendars) on the connected account." },
|
|
39125
39278
|
subCommands: { list: meetingsListCommand, view: meetingsViewCommand }
|
|
39126
39279
|
});
|
|
39127
|
-
var hubspotCommand =
|
|
39280
|
+
var hubspotCommand = defineCommand131({
|
|
39128
39281
|
meta: {
|
|
39129
39282
|
name: "hubspot",
|
|
39130
39283
|
description: `Read the connected HubSpot account \u2014 forms, the leads they received, workflows, deal pipelines and
|
|
@@ -39162,10 +39315,10 @@ Full guide: __tooling__/docs/tools/baker/hubspot.md`
|
|
|
39162
39315
|
});
|
|
39163
39316
|
|
|
39164
39317
|
// src/commands/images/index.ts
|
|
39165
|
-
import { defineCommand as
|
|
39318
|
+
import { defineCommand as defineCommand157 } from "citty";
|
|
39166
39319
|
|
|
39167
39320
|
// src/commands/images/crop.ts
|
|
39168
|
-
import { defineCommand as
|
|
39321
|
+
import { defineCommand as defineCommand132 } from "citty";
|
|
39169
39322
|
|
|
39170
39323
|
// src/lib/image/crop-sprite.ts
|
|
39171
39324
|
import sharp from "sharp";
|
|
@@ -39287,7 +39440,7 @@ function emitError2(err) {
|
|
|
39287
39440
|
}
|
|
39288
39441
|
process.exit(1);
|
|
39289
39442
|
}
|
|
39290
|
-
var cropCommand =
|
|
39443
|
+
var cropCommand = defineCommand132({
|
|
39291
39444
|
meta: {
|
|
39292
39445
|
name: "crop",
|
|
39293
39446
|
description: "Crop a rectangular region from an image.\n\nExample: baker images crop sprite.png --x 0 --y 0 --width 64 --height 64 --output icon.png"
|
|
@@ -39323,7 +39476,7 @@ var cropCommand = defineCommand131({
|
|
|
39323
39476
|
});
|
|
39324
39477
|
|
|
39325
39478
|
// src/commands/images/delete.ts
|
|
39326
|
-
import { defineCommand as
|
|
39479
|
+
import { defineCommand as defineCommand133 } from "citty";
|
|
39327
39480
|
registerSchema({
|
|
39328
39481
|
command: "images.delete",
|
|
39329
39482
|
description: "Delete an image by ID",
|
|
@@ -39337,7 +39490,7 @@ registerSchema({
|
|
|
39337
39490
|
}
|
|
39338
39491
|
}
|
|
39339
39492
|
});
|
|
39340
|
-
var deleteCommand2 =
|
|
39493
|
+
var deleteCommand2 = defineCommand133({
|
|
39341
39494
|
meta: {
|
|
39342
39495
|
name: "delete",
|
|
39343
39496
|
description: "Delete an image by ID. Use --dry-run to preview. Example: baker images delete j571abc123 --dry-run"
|
|
@@ -39378,7 +39531,7 @@ var deleteCommand2 = defineCommand132({
|
|
|
39378
39531
|
});
|
|
39379
39532
|
|
|
39380
39533
|
// src/commands/images/dimensions.ts
|
|
39381
|
-
import { defineCommand as
|
|
39534
|
+
import { defineCommand as defineCommand134 } from "citty";
|
|
39382
39535
|
|
|
39383
39536
|
// src/lib/image/dimensions.ts
|
|
39384
39537
|
import { imageSize } from "image-size";
|
|
@@ -39407,7 +39560,7 @@ registerSchema({
|
|
|
39407
39560
|
}
|
|
39408
39561
|
}
|
|
39409
39562
|
});
|
|
39410
|
-
var dimensionsCommand =
|
|
39563
|
+
var dimensionsCommand = defineCommand134({
|
|
39411
39564
|
meta: {
|
|
39412
39565
|
name: "dimensions",
|
|
39413
39566
|
description: "Read image dimensions without decoding the full file.\n\nExample: baker images dimensions ./logo.png\nExample: baker images dimensions https://acme.com/hero.png"
|
|
@@ -39463,7 +39616,7 @@ var dimensionsCommand = defineCommand133({
|
|
|
39463
39616
|
});
|
|
39464
39617
|
|
|
39465
39618
|
// src/commands/images/download.ts
|
|
39466
|
-
import { defineCommand as
|
|
39619
|
+
import { defineCommand as defineCommand135 } from "citty";
|
|
39467
39620
|
|
|
39468
39621
|
// src/commands/images/downloadPaths.ts
|
|
39469
39622
|
import { basename as basename2, extname as extname3, join as join6 } from "path";
|
|
@@ -39688,7 +39841,7 @@ function emitError3(err) {
|
|
|
39688
39841
|
writeJson({ ok: false, error: { code: "INTERNAL_ERROR", message: "Unexpected error" } });
|
|
39689
39842
|
process.exit(1);
|
|
39690
39843
|
}
|
|
39691
|
-
var downloadCommand =
|
|
39844
|
+
var downloadCommand = defineCommand135({
|
|
39692
39845
|
meta: {
|
|
39693
39846
|
name: "download",
|
|
39694
39847
|
description: "Download image URLs and/or library images to local files \u2014 the missing first half of `source \u2192 download \u2192 normalize \u2192 place`. Never use `curl` for this.\n\nExamples:\n baker images download https://media.withbaker.com/\u2026/logo.webp\n baker images download j57abc123 j57def456 --out src/pages/pricing/_images/\n baker images download https://\u2026/hero.png --out ./hero.png"
|
|
@@ -39721,7 +39874,7 @@ var downloadCommand = defineCommand134({
|
|
|
39721
39874
|
});
|
|
39722
39875
|
|
|
39723
39876
|
// src/commands/images/extract.ts
|
|
39724
|
-
import { defineCommand as
|
|
39877
|
+
import { defineCommand as defineCommand136 } from "citty";
|
|
39725
39878
|
|
|
39726
39879
|
// src/commands/images/autoIngest.ts
|
|
39727
39880
|
var AUTO_INGEST_MAX = {
|
|
@@ -39768,7 +39921,7 @@ registerSchema({
|
|
|
39768
39921
|
}
|
|
39769
39922
|
}
|
|
39770
39923
|
});
|
|
39771
|
-
var extractCommand =
|
|
39924
|
+
var extractCommand = defineCommand136({
|
|
39772
39925
|
meta: {
|
|
39773
39926
|
name: "extract",
|
|
39774
39927
|
description: "Pull every image from a single URL via Firecrawl. ~$0.001/scrape. Cap auto-ingest at 20.\n\nExample: baker images extract https://stripe.com --auto-ingest 5"
|
|
@@ -39823,7 +39976,7 @@ var extractCommand = defineCommand135({
|
|
|
39823
39976
|
});
|
|
39824
39977
|
|
|
39825
39978
|
// src/commands/images/find.ts
|
|
39826
|
-
import { defineCommand as
|
|
39979
|
+
import { defineCommand as defineCommand137 } from "citty";
|
|
39827
39980
|
|
|
39828
39981
|
// src/commands/images/providerHits.ts
|
|
39829
39982
|
function asRecord3(value) {
|
|
@@ -39961,7 +40114,7 @@ registerSchema({
|
|
|
39961
40114
|
full: { type: "boolean", description: "Include full metadata", required: false, default: false }
|
|
39962
40115
|
}
|
|
39963
40116
|
});
|
|
39964
|
-
var findCommand =
|
|
40117
|
+
var findCommand = defineCommand137({
|
|
39965
40118
|
meta: {
|
|
39966
40119
|
name: "find",
|
|
39967
40120
|
description: "Library-first fanout image search. Opt in to providers with --sources. `--fallback` short-circuits to externals only when library is thin. With --auto-ingest, ingested external hits return Baker-owned URLs.\n\nExample: baker images find 'office' --sources library,magnific --limit 20"
|
|
@@ -40034,7 +40187,7 @@ var findCommand = defineCommand136({
|
|
|
40034
40187
|
});
|
|
40035
40188
|
|
|
40036
40189
|
// src/commands/images/get.ts
|
|
40037
|
-
import { defineCommand as
|
|
40190
|
+
import { defineCommand as defineCommand138 } from "citty";
|
|
40038
40191
|
registerSchema({
|
|
40039
40192
|
command: "images.get",
|
|
40040
40193
|
description: "Get a single image by ID",
|
|
@@ -40042,7 +40195,7 @@ registerSchema({
|
|
|
40042
40195
|
id: { type: "string", description: "Image ID", required: true }
|
|
40043
40196
|
}
|
|
40044
40197
|
});
|
|
40045
|
-
var getCommand3 =
|
|
40198
|
+
var getCommand3 = defineCommand138({
|
|
40046
40199
|
meta: { name: "get", description: "Get a single image by ID. Example: baker images get j571abc123" },
|
|
40047
40200
|
args: {
|
|
40048
40201
|
id: { type: "positional", description: "Image ID", required: false },
|
|
@@ -40078,7 +40231,7 @@ var getCommand3 = defineCommand137({
|
|
|
40078
40231
|
});
|
|
40079
40232
|
|
|
40080
40233
|
// src/commands/images/gif.ts
|
|
40081
|
-
import { defineCommand as
|
|
40234
|
+
import { defineCommand as defineCommand139 } from "citty";
|
|
40082
40235
|
registerSchema({
|
|
40083
40236
|
command: "images.gif",
|
|
40084
40237
|
description: "Search Giphy for GIFs / reaction memes (paid social creative).",
|
|
@@ -40110,7 +40263,7 @@ registerSchema({
|
|
|
40110
40263
|
}
|
|
40111
40264
|
}
|
|
40112
40265
|
});
|
|
40113
|
-
var gifCommand =
|
|
40266
|
+
var gifCommand = defineCommand139({
|
|
40114
40267
|
meta: {
|
|
40115
40268
|
name: "gif",
|
|
40116
40269
|
description: "Search Giphy for GIFs / reaction memes \u2014 built for paid-social creative (Meta, TikTok, LinkedIn, X). Free API. Each hit carries WebP + GIF + MP4 URLs in providerMeta so you can pick the right format per platform.\n\nExample: baker images gif 'this is fine' --limit 10\nExample: baker images gif 'office reaction' --rating pg --auto-ingest 2\nExample: baker images gif --trending --limit 25"
|
|
@@ -40157,7 +40310,7 @@ var gifCommand = defineCommand138({
|
|
|
40157
40310
|
});
|
|
40158
40311
|
|
|
40159
40312
|
// src/commands/images/google.ts
|
|
40160
|
-
import { defineCommand as
|
|
40313
|
+
import { defineCommand as defineCommand140 } from "citty";
|
|
40161
40314
|
var GOOGLE_ERROR_FIX = {
|
|
40162
40315
|
action: "use_different_resource",
|
|
40163
40316
|
explanation: "Generate the asset instead of retrying Google. Google is the last-resort image provider. Run `baker studio generate` to make the asset. Never sleep-and-retry this command \u2014 the CLI already backs off on rate limits. If no image can be sourced, continue the rest of the task with a placeholder rather than aborting it."
|
|
@@ -40197,7 +40350,7 @@ registerSchema({
|
|
|
40197
40350
|
}
|
|
40198
40351
|
}
|
|
40199
40352
|
});
|
|
40200
|
-
var googleCommand2 =
|
|
40353
|
+
var googleCommand2 = defineCommand140({
|
|
40201
40354
|
meta: {
|
|
40202
40355
|
name: "google",
|
|
40203
40356
|
description: "Google Images via the official Custom Search JSON API ($0.005/query, free 100/day). \u26A0 Source unverified \u2014 watermarks, low-res, mislabeled results are common. Use as last resort. With --auto-ingest, ingested hits return Baker-owned URLs.\n\nExample: baker images google 'industrial workshop' --type photo --size large --limit 20"
|
|
@@ -40270,7 +40423,7 @@ var googleCommand2 = defineCommand139({
|
|
|
40270
40423
|
});
|
|
40271
40424
|
|
|
40272
40425
|
// src/commands/images/group.ts
|
|
40273
|
-
import { defineCommand as
|
|
40426
|
+
import { defineCommand as defineCommand141 } from "citty";
|
|
40274
40427
|
|
|
40275
40428
|
// src/commands/mediaGroup.ts
|
|
40276
40429
|
async function runMediaGroupLookup(input) {
|
|
@@ -40323,7 +40476,7 @@ registerSchema({
|
|
|
40323
40476
|
"group-key": { type: "string", description: "The set key directly, when you already have it", required: false }
|
|
40324
40477
|
}
|
|
40325
40478
|
});
|
|
40326
|
-
var groupCommand =
|
|
40479
|
+
var groupCommand = defineCommand141({
|
|
40327
40480
|
meta: {
|
|
40328
40481
|
name: "group",
|
|
40329
40482
|
description: "List every asset that arrived in the same set \u2014 the slides of one Instagram carousel, the images off one scraped page. Start here whenever a hit looks like part of a sequence: carousel slides are authored to be read in order and usually only make sense together. Takes an image or a video id, since one carousel can contain both. Example: baker images group <imageId>"
|
|
@@ -40343,7 +40496,7 @@ var groupCommand = defineCommand140({
|
|
|
40343
40496
|
});
|
|
40344
40497
|
|
|
40345
40498
|
// src/commands/images/icon.ts
|
|
40346
|
-
import { defineCommand as
|
|
40499
|
+
import { defineCommand as defineCommand142 } from "citty";
|
|
40347
40500
|
|
|
40348
40501
|
// src/commands/images/brandVerification.ts
|
|
40349
40502
|
function brandToken(domain) {
|
|
@@ -40440,7 +40593,7 @@ registerSchema({
|
|
|
40440
40593
|
full: { type: "boolean", description: "Include full metadata", required: false, default: false }
|
|
40441
40594
|
}
|
|
40442
40595
|
});
|
|
40443
|
-
var iconCommand =
|
|
40596
|
+
var iconCommand = defineCommand142({
|
|
40444
40597
|
meta: {
|
|
40445
40598
|
name: "icon",
|
|
40446
40599
|
description: "Icon via Iconify (simple-icons, logos, lucide, devicon, heroicons, tabler, phosphor, material-symbols, \u2026). Free CDN, no API key.\n\nExample: baker images icon react --set devicon\nExample: baker images icon lucide:check --color '#0a0a0a'"
|
|
@@ -40510,7 +40663,7 @@ var iconCommand = defineCommand141({
|
|
|
40510
40663
|
});
|
|
40511
40664
|
|
|
40512
40665
|
// src/commands/images/ingest.ts
|
|
40513
|
-
import { defineCommand as
|
|
40666
|
+
import { defineCommand as defineCommand143 } from "citty";
|
|
40514
40667
|
var SOURCE_VALUES = imageSourceSchema.options.join(" | ");
|
|
40515
40668
|
registerSchema({
|
|
40516
40669
|
command: "images.ingest",
|
|
@@ -40525,7 +40678,7 @@ registerSchema({
|
|
|
40525
40678
|
fields: { type: "string", description: "Comma-separated field names to include", required: false }
|
|
40526
40679
|
}
|
|
40527
40680
|
});
|
|
40528
|
-
var ingestCommand =
|
|
40681
|
+
var ingestCommand = defineCommand143({
|
|
40529
40682
|
meta: {
|
|
40530
40683
|
name: "ingest",
|
|
40531
40684
|
description: "Download a remote URL and store it in the library. Hash-deduped on bytes + externalId.\n\nExample: baker images ingest https://img.freepik.com/free-photo/xyz.jpg --source magnific --external-id 12345"
|
|
@@ -40594,7 +40747,7 @@ var ingestCommand = defineCommand142({
|
|
|
40594
40747
|
});
|
|
40595
40748
|
|
|
40596
40749
|
// src/commands/images/layerize.ts
|
|
40597
|
-
import { defineCommand as
|
|
40750
|
+
import { defineCommand as defineCommand144 } from "citty";
|
|
40598
40751
|
registerSchema({
|
|
40599
40752
|
command: "images.layerize",
|
|
40600
40753
|
description: "Split a library image into editable layers: transparent PNG cutouts for each element, plus any headline recovered as EDITABLE TEXT with its font, size, colour and position. Waits for completion by default. Costs credits.",
|
|
@@ -40658,7 +40811,7 @@ async function pollUntilSettled(imageId, maxWait) {
|
|
|
40658
40811
|
}
|
|
40659
40812
|
return null;
|
|
40660
40813
|
}
|
|
40661
|
-
var layerizeCommand =
|
|
40814
|
+
var layerizeCommand = defineCommand144({
|
|
40662
40815
|
meta: {
|
|
40663
40816
|
name: "layerize",
|
|
40664
40817
|
description: "Split a library image into editable layers \u2014 transparent cutouts per element, plus any baked-in headline recovered as editable text with its typography.\n\nStart here: baker images layerize j571abc123def\nExample: baker images layerize j571abc123def --full\nExample: baker images layerize j571abc123def --instructions 'keep the product and its shadow together'"
|
|
@@ -40727,7 +40880,7 @@ registerSchema({
|
|
|
40727
40880
|
full: { type: "boolean", description: "Include geometry and typography for every layer", required: false }
|
|
40728
40881
|
}
|
|
40729
40882
|
});
|
|
40730
|
-
var layersCommand =
|
|
40883
|
+
var layersCommand = defineCommand144({
|
|
40731
40884
|
meta: {
|
|
40732
40885
|
name: "layers",
|
|
40733
40886
|
description: "Read the layers of an image that has already been split. Free \u2014 no provider call.\n\nStart here: baker images layers j571abc123def\nExample: baker images layers j571abc123def --full"
|
|
@@ -40767,7 +40920,7 @@ var layersCommand = defineCommand143({
|
|
|
40767
40920
|
});
|
|
40768
40921
|
|
|
40769
40922
|
// src/commands/images/library.ts
|
|
40770
|
-
import { defineCommand as
|
|
40923
|
+
import { defineCommand as defineCommand145 } from "citty";
|
|
40771
40924
|
registerSchema({
|
|
40772
40925
|
command: "images.library",
|
|
40773
40926
|
description: "Search the company image library. Returns only ready images.",
|
|
@@ -40793,7 +40946,7 @@ registerSchema({
|
|
|
40793
40946
|
}
|
|
40794
40947
|
}
|
|
40795
40948
|
});
|
|
40796
|
-
var libraryCommand =
|
|
40949
|
+
var libraryCommand = defineCommand145({
|
|
40797
40950
|
meta: {
|
|
40798
40951
|
name: "library",
|
|
40799
40952
|
description: "Search the company image library (hybrid BM25 + vector + Cohere rerank). Use this BEFORE any external provider.\n\nExample: baker images library 'hero banner' --aspect-ratio 16:9 --source magnific"
|
|
@@ -40856,7 +41009,7 @@ var libraryCommand = defineCommand144({
|
|
|
40856
41009
|
});
|
|
40857
41010
|
|
|
40858
41011
|
// src/commands/images/logo.ts
|
|
40859
|
-
import { defineCommand as
|
|
41012
|
+
import { defineCommand as defineCommand146 } from "citty";
|
|
40860
41013
|
registerSchema({
|
|
40861
41014
|
command: "images.logo",
|
|
40862
41015
|
description: "Brand logo lookup via Brandfetch. Auto-ingests by default. Returns `brandMatch` \u2014 Brandfetch's own verdict on whose brand the domain is (confirmed | mismatch | unverified). Branch on it: `mismatch` means the mark is another company's, so do not place it. `confirmed` verifies the record, not the artwork \u2014 read the ingested row back to check the mark itself.",
|
|
@@ -40884,7 +41037,7 @@ registerSchema({
|
|
|
40884
41037
|
full: { type: "boolean", description: "Include full metadata", required: false, default: false }
|
|
40885
41038
|
}
|
|
40886
41039
|
});
|
|
40887
|
-
var logoCommand =
|
|
41040
|
+
var logoCommand = defineCommand146({
|
|
40888
41041
|
meta: {
|
|
40889
41042
|
name: "logo",
|
|
40890
41043
|
description: "Brand logo via Brandfetch. Returns up to 5 variants (icon, light/dark logo, light/dark symbol) plus `brandMatch`. Auto-ingests the first variant.\n\nStart here: check `brandMatch.verdict`.\n mismatch \u2192 the mark belongs to `brandMatch.name`, a different company. Do not place it.\n unverified \u2192 nothing confirmed whose logo this is. Treat as unchecked.\n confirmed \u2192 Brandfetch has this brand's record. That verifies the record, NOT the artwork \u2014 a confirmed domain has served another company's logo before.\n\n\u26A0 Whatever the verdict, read the ingested row back with `baker images get <imageId>` and check `textInImage`/`subject` before placing it. That is the only check that looks at the mark.\n\nExample: baker images logo stripe.com --variant logo"
|
|
@@ -40957,7 +41110,7 @@ var logoCommand = defineCommand145({
|
|
|
40957
41110
|
});
|
|
40958
41111
|
|
|
40959
41112
|
// src/commands/images/normalize.ts
|
|
40960
|
-
import { defineCommand as
|
|
41113
|
+
import { defineCommand as defineCommand147 } from "citty";
|
|
40961
41114
|
|
|
40962
41115
|
// src/lib/image/color-changer.ts
|
|
40963
41116
|
import quantize from "quantize";
|
|
@@ -41689,7 +41842,7 @@ function coerceRawArgs(args) {
|
|
|
41689
41842
|
"dry-run": bool(args["dry-run"])
|
|
41690
41843
|
};
|
|
41691
41844
|
}
|
|
41692
|
-
var normalizeCommand2 =
|
|
41845
|
+
var normalizeCommand2 = defineCommand147({
|
|
41693
41846
|
meta: {
|
|
41694
41847
|
name: "normalize",
|
|
41695
41848
|
description: `Normalize logos / images: declarative recolor + bg removal + trim + resize. Operates on local files; writes in-place by default.
|
|
@@ -41744,7 +41897,7 @@ Examples:
|
|
|
41744
41897
|
});
|
|
41745
41898
|
|
|
41746
41899
|
// src/commands/images/pinterest.ts
|
|
41747
|
-
import { defineCommand as
|
|
41900
|
+
import { defineCommand as defineCommand148 } from "citty";
|
|
41748
41901
|
registerSchema({
|
|
41749
41902
|
command: "images.pinterest",
|
|
41750
41903
|
description: "Pinterest image search via ScrapeCreators. Reference-grade real-world photography, product styling, interiors, fashion, food, and aesthetic mood boards. Inspect before placing \u2014 Pinterest is unverified, trademark-bearing web content.",
|
|
@@ -41764,7 +41917,7 @@ registerSchema({
|
|
|
41764
41917
|
}
|
|
41765
41918
|
}
|
|
41766
41919
|
});
|
|
41767
|
-
var pinterestCommand =
|
|
41920
|
+
var pinterestCommand = defineCommand148({
|
|
41768
41921
|
meta: {
|
|
41769
41922
|
name: "pinterest",
|
|
41770
41923
|
description: "Pinterest image search via ScrapeCreators ($0.00188/request). Best for photo-realistic reference imagery \u2014 lifestyle, interiors, fashion, food, product styling, and mood boards to brief AI generation against. \u26A0 Unverified, trademark-bearing web content \u2014 inspect and respect rights before placing on a customer page. Browse first; auto-ingest only the pins you commit to.\n\nExamples:\n baker images pinterest 'scandinavian living room'\n baker images pinterest 'minimalist skincare product photography' --limit 20\n baker images pinterest 'cozy coffee shop interior' --auto-ingest 2 --context 'Mood reference for hero photography'"
|
|
@@ -41821,7 +41974,7 @@ var pinterestCommand = defineCommand147({
|
|
|
41821
41974
|
});
|
|
41822
41975
|
|
|
41823
41976
|
// src/commands/images/screenshot.ts
|
|
41824
|
-
import { defineCommand as
|
|
41977
|
+
import { defineCommand as defineCommand149 } from "citty";
|
|
41825
41978
|
registerSchema({
|
|
41826
41979
|
command: "images.screenshot",
|
|
41827
41980
|
description: "Capture a website screenshot via ScreenshotOne. Auto-ingests on success.",
|
|
@@ -41840,7 +41993,7 @@ registerSchema({
|
|
|
41840
41993
|
full: { type: "boolean", description: "Include full metadata", required: false, default: false }
|
|
41841
41994
|
}
|
|
41842
41995
|
});
|
|
41843
|
-
var screenshotCommand =
|
|
41996
|
+
var screenshotCommand = defineCommand149({
|
|
41844
41997
|
meta: {
|
|
41845
41998
|
name: "screenshot",
|
|
41846
41999
|
description: "Screenshot a URL via ScreenshotOne. $0.009/capture. Auto-ingests to library.\n\nExample: baker images screenshot https://stripe.com --full-page"
|
|
@@ -41904,7 +42057,7 @@ var screenshotCommand = defineCommand148({
|
|
|
41904
42057
|
});
|
|
41905
42058
|
|
|
41906
42059
|
// src/commands/images/search.ts
|
|
41907
|
-
import { defineCommand as
|
|
42060
|
+
import { defineCommand as defineCommand150 } from "citty";
|
|
41908
42061
|
registerSchema({
|
|
41909
42062
|
command: "images.search",
|
|
41910
42063
|
description: "Search images by text query. Only returns ready images.",
|
|
@@ -41920,7 +42073,7 @@ registerSchema({
|
|
|
41920
42073
|
tags: { type: "string", description: "Comma-separated tags to filter by", required: false }
|
|
41921
42074
|
}
|
|
41922
42075
|
});
|
|
41923
|
-
var searchCommand =
|
|
42076
|
+
var searchCommand = defineCommand150({
|
|
41924
42077
|
meta: {
|
|
41925
42078
|
name: "search",
|
|
41926
42079
|
description: "Semantic search images by text query. Uses hybrid BM25 + vector + reranking. Example: baker images search 'hero banner' --aspect-ratio 16:9 --tags logo"
|
|
@@ -41980,7 +42133,7 @@ var searchCommand = defineCommand149({
|
|
|
41980
42133
|
});
|
|
41981
42134
|
|
|
41982
42135
|
// src/commands/images/sticker.ts
|
|
41983
|
-
import { defineCommand as
|
|
42136
|
+
import { defineCommand as defineCommand151 } from "citty";
|
|
41984
42137
|
registerSchema({
|
|
41985
42138
|
command: "images.sticker",
|
|
41986
42139
|
description: "Search Giphy stickers \u2014 transparent-background overlays for ad creative.",
|
|
@@ -42012,7 +42165,7 @@ registerSchema({
|
|
|
42012
42165
|
}
|
|
42013
42166
|
}
|
|
42014
42167
|
});
|
|
42015
|
-
var stickerCommand =
|
|
42168
|
+
var stickerCommand = defineCommand151({
|
|
42016
42169
|
meta: {
|
|
42017
42170
|
name: "sticker",
|
|
42018
42171
|
description: "Search Giphy's sticker corpus \u2014 transparent-background WebPs / GIFs ideal for overlaying on ad creative (Meta, TikTok, Stories). Same Giphy free API as `baker images gif`; results carry WebP + GIF + MP4 URLs in providerMeta.\n\nExample: baker images sticker 'thumbs up' --limit 10\nExample: baker images sticker celebration --rating g --auto-ingest 3\nExample: baker images sticker --trending --limit 25"
|
|
@@ -42059,7 +42212,7 @@ var stickerCommand = defineCommand150({
|
|
|
42059
42212
|
});
|
|
42060
42213
|
|
|
42061
42214
|
// src/commands/images/stock.ts
|
|
42062
|
-
import { defineCommand as
|
|
42215
|
+
import { defineCommand as defineCommand152 } from "citty";
|
|
42063
42216
|
var STOCK_ERROR_FIX = {
|
|
42064
42217
|
action: "use_different_resource",
|
|
42065
42218
|
explanation: "Switch provider instead of retrying stock search. Stock search is one of several image sources. Run `baker images find <query> --sources library,pinterest,google` (`--sources` is required \u2014 `find` alone searches the library only) or `baker studio generate` to make the asset. Never sleep-and-retry this command \u2014 the CLI already backs off on rate limits. If no image can be sourced, continue the rest of the task with a placeholder rather than aborting it."
|
|
@@ -42136,7 +42289,7 @@ function buildStockRequest(query, args) {
|
|
|
42136
42289
|
if (args.context) body.descriptionContext = args.context;
|
|
42137
42290
|
return body;
|
|
42138
42291
|
}
|
|
42139
|
-
var stockCommand =
|
|
42292
|
+
var stockCommand = defineCommand152({
|
|
42140
42293
|
meta: {
|
|
42141
42294
|
name: "stock",
|
|
42142
42295
|
description: "Stock search via Magnific \u2014 Freepik's developer API (~250M assets: photos, vectors, illustrations, icons, PSDs). $0.002/req. With --auto-ingest, ingested hits return Baker-owned URLs.\n\nExamples:\n baker images stock 'minimalist office'\n baker images stock 'flat office workers' --type vector\n baker images stock 'hero photo of a kitchen' --type photo --orientation landscape --ai exclude\n baker images stock 'brand pattern' --color '#0a0a0a' --license freemium --auto-ingest 2"
|
|
@@ -42209,7 +42362,7 @@ var stockCommand = defineCommand151({
|
|
|
42209
42362
|
});
|
|
42210
42363
|
|
|
42211
42364
|
// src/lib/tags-command.ts
|
|
42212
|
-
import { defineCommand as
|
|
42365
|
+
import { defineCommand as defineCommand153 } from "citty";
|
|
42213
42366
|
function makeTagsCommand(command, label, endpoint) {
|
|
42214
42367
|
registerSchema({
|
|
42215
42368
|
command: `${command}.tags`,
|
|
@@ -42218,7 +42371,7 @@ function makeTagsCommand(command, label, endpoint) {
|
|
|
42218
42371
|
output: { type: "string", description: "Output format: md|json", required: false, default: "md" }
|
|
42219
42372
|
}
|
|
42220
42373
|
});
|
|
42221
|
-
return
|
|
42374
|
+
return defineCommand153({
|
|
42222
42375
|
meta: {
|
|
42223
42376
|
name: "tags",
|
|
42224
42377
|
description: `List the available ${label} tag names (defaults + company custom tags). Use before filtering with --tags. Example: baker ${command} tags`
|
|
@@ -42254,7 +42407,7 @@ function makeTagsCommand(command, label, endpoint) {
|
|
|
42254
42407
|
var tagsCommand3 = makeTagsCommand("images", "image", "/api/images/tags");
|
|
42255
42408
|
|
|
42256
42409
|
// src/commands/images/upload.ts
|
|
42257
|
-
import { defineCommand as
|
|
42410
|
+
import { defineCommand as defineCommand154 } from "citty";
|
|
42258
42411
|
registerSchema({
|
|
42259
42412
|
command: "images.upload",
|
|
42260
42413
|
description: "Upload an image to the library \u2014 local file path or remote http(s) URL.",
|
|
@@ -42292,7 +42445,7 @@ registerSchema({
|
|
|
42292
42445
|
function isRemoteUrl2(value) {
|
|
42293
42446
|
return /^https?:\/\//i.test(value);
|
|
42294
42447
|
}
|
|
42295
|
-
var uploadCommand =
|
|
42448
|
+
var uploadCommand = defineCommand154({
|
|
42296
42449
|
meta: {
|
|
42297
42450
|
name: "upload",
|
|
42298
42451
|
description: "Upload an image to the library \u2014 accepts a local file path OR a remote http(s) URL.\n\nLocal: reads bytes, sends to /api/images/upload, content-type auto-detected from extension.\nRemote: dispatches to /api/images/ingest with hash-dedup on bytes + externalId.\n\nExamples:\n baker images upload ./logo.png --source uploaded\n baker images upload ./cert.png --context 'ISO 27001 badge \u2014 enterprise tier'\n baker images upload https://acme.com/hero.png --source firecrawl --context 'Acme competitor pricing hero'"
|
|
@@ -42385,7 +42538,7 @@ async function uploadLocal(target, args) {
|
|
|
42385
42538
|
}
|
|
42386
42539
|
|
|
42387
42540
|
// src/commands/images/upscale.ts
|
|
42388
|
-
import { defineCommand as
|
|
42541
|
+
import { defineCommand as defineCommand155 } from "citty";
|
|
42389
42542
|
registerSchema({
|
|
42390
42543
|
command: "images.upscale",
|
|
42391
42544
|
description: "Upscale a library image via the backend (Replicate, cost-tracked). Waits for completion by default. The image must be status 'ready' and raster (not SVG/AVIF).",
|
|
@@ -42400,7 +42553,7 @@ registerSchema({
|
|
|
42400
42553
|
}
|
|
42401
42554
|
});
|
|
42402
42555
|
var POLL_INTERVAL_MS4 = 1500;
|
|
42403
|
-
var upscaleCommand =
|
|
42556
|
+
var upscaleCommand = defineCommand155({
|
|
42404
42557
|
meta: {
|
|
42405
42558
|
name: "upscale",
|
|
42406
42559
|
description: "Upscale a library image via the Convex backend (Replicate, cost-tracked at $0.05/image). Waits for completion by default.\n\nExample: baker images upscale j571abc123def\nExample: baker images upscale j571abc123def --max-wait 0 # fire-and-forget"
|
|
@@ -42455,7 +42608,7 @@ var upscaleCommand = defineCommand154({
|
|
|
42455
42608
|
});
|
|
42456
42609
|
|
|
42457
42610
|
// src/commands/images/use.ts
|
|
42458
|
-
import { defineCommand as
|
|
42611
|
+
import { defineCommand as defineCommand156 } from "citty";
|
|
42459
42612
|
registerSchema({
|
|
42460
42613
|
command: "images.use",
|
|
42461
42614
|
description: "Ingest a URL and wait for the library record to be ready.",
|
|
@@ -42484,7 +42637,7 @@ function emitReady(ingestResult, doc, args) {
|
|
|
42484
42637
|
args.full === true
|
|
42485
42638
|
);
|
|
42486
42639
|
}
|
|
42487
|
-
var useCommand =
|
|
42640
|
+
var useCommand = defineCommand156({
|
|
42488
42641
|
meta: {
|
|
42489
42642
|
name: "use",
|
|
42490
42643
|
description: "Sugar over `ingest`: download \u2192 store \u2192 wait until describe + embed complete \u2192 return ready library record.\n\nExample: baker images use https://cdn.example.com/hero.png --source uploaded"
|
|
@@ -42533,7 +42686,7 @@ var useCommand = defineCommand155({
|
|
|
42533
42686
|
});
|
|
42534
42687
|
|
|
42535
42688
|
// src/commands/images/index.ts
|
|
42536
|
-
var imagesCommand =
|
|
42689
|
+
var imagesCommand = defineCommand157({
|
|
42537
42690
|
meta: {
|
|
42538
42691
|
name: "images",
|
|
42539
42692
|
description: `Find, source, and normalize images. Subcommands route by provider so cost + license are explicit.
|
|
@@ -42611,12 +42764,12 @@ Full guide: __tooling__/docs/tools/baker/images.md`
|
|
|
42611
42764
|
});
|
|
42612
42765
|
|
|
42613
42766
|
// src/commands/landing/index.ts
|
|
42614
|
-
import { defineCommand as
|
|
42767
|
+
import { defineCommand as defineCommand168 } from "citty";
|
|
42615
42768
|
|
|
42616
42769
|
// src/commands/landing/critique.ts
|
|
42617
42770
|
import { readdir as readdir11, stat as stat7 } from "fs/promises";
|
|
42618
42771
|
import path31 from "path";
|
|
42619
|
-
import { defineCommand as
|
|
42772
|
+
import { defineCommand as defineCommand158 } from "citty";
|
|
42620
42773
|
|
|
42621
42774
|
// src/engine/landing/lib/constants.ts
|
|
42622
42775
|
var OVERUSED_FONTS = /* @__PURE__ */ new Set([
|
|
@@ -43685,7 +43838,7 @@ function fail5(code, message, fix) {
|
|
|
43685
43838
|
);
|
|
43686
43839
|
process.exit(2);
|
|
43687
43840
|
}
|
|
43688
|
-
var critiqueCommand2 =
|
|
43841
|
+
var critiqueCommand2 = defineCommand158({
|
|
43689
43842
|
meta: {
|
|
43690
43843
|
name: "critique",
|
|
43691
43844
|
description: "Start here: `baker landing critique <slug>` after building or editing a landing. Deterministic design-quality critic (ADVISORY \u2014 findings never fail it). Flags the known AI design tells (gradient text, overused fonts, side-tab borders, cream palettes, buzzword copy, broken images) tiered block/warn/advisory, respecting the client's BRAND.md as the allowlist. Also records the critique that publishing requires \u2014 run it before finishing a landing."
|
|
@@ -43794,10 +43947,10 @@ async function isDir(p) {
|
|
|
43794
43947
|
}
|
|
43795
43948
|
|
|
43796
43949
|
// src/commands/landing/inspiration/index.ts
|
|
43797
|
-
import { defineCommand as
|
|
43950
|
+
import { defineCommand as defineCommand167 } from "citty";
|
|
43798
43951
|
|
|
43799
43952
|
// src/commands/landing/inspiration/add.ts
|
|
43800
|
-
import { defineCommand as
|
|
43953
|
+
import { defineCommand as defineCommand159 } from "citty";
|
|
43801
43954
|
|
|
43802
43955
|
// src/commands/landing/inspiration/shared.ts
|
|
43803
43956
|
var INSPIRATION_HINTS = {
|
|
@@ -43879,7 +44032,7 @@ registerSchema({
|
|
|
43879
44032
|
note: { type: "string", description: "Why this page is worth keeping", required: false }
|
|
43880
44033
|
}
|
|
43881
44034
|
});
|
|
43882
|
-
var addCommand =
|
|
44035
|
+
var addCommand = defineCommand159({
|
|
43883
44036
|
meta: {
|
|
43884
44037
|
name: "add",
|
|
43885
44038
|
description: "Add someone else's landing page to the reference library. Example: baker landing inspiration add https://linear.app --note 'the client likes this density'"
|
|
@@ -43921,7 +44074,7 @@ var addCommand = defineCommand158({
|
|
|
43921
44074
|
// src/commands/landing/inspiration/code.ts
|
|
43922
44075
|
import { mkdir as mkdir10, writeFile as writeFile14 } from "fs/promises";
|
|
43923
44076
|
import path32 from "path";
|
|
43924
|
-
import { defineCommand as
|
|
44077
|
+
import { defineCommand as defineCommand160 } from "citty";
|
|
43925
44078
|
registerSchema({
|
|
43926
44079
|
command: "landing.inspiration.code",
|
|
43927
44080
|
description: "Write a reference section's standalone HTML+CSS to .baker/inspiration/<id>/ so you can read how it is built. Reference only \u2014 the structure is the lesson, the words are not yours to reuse.",
|
|
@@ -43930,7 +44083,7 @@ registerSchema({
|
|
|
43930
44083
|
full: { type: "boolean", description: "Print the markup inline as well as writing it", required: false }
|
|
43931
44084
|
}
|
|
43932
44085
|
});
|
|
43933
|
-
var codeCommand =
|
|
44086
|
+
var codeCommand = defineCommand160({
|
|
43934
44087
|
meta: {
|
|
43935
44088
|
name: "code",
|
|
43936
44089
|
description: "Write one reference section's standalone markup to disk. Example: baker landing inspiration code k57abc\u2026 \u2014 read it for structure, then build your own."
|
|
@@ -43976,7 +44129,7 @@ var codeCommand = defineCommand159({
|
|
|
43976
44129
|
});
|
|
43977
44130
|
|
|
43978
44131
|
// src/commands/landing/inspiration/favorites.ts
|
|
43979
|
-
import { defineCommand as
|
|
44132
|
+
import { defineCommand as defineCommand161 } from "citty";
|
|
43980
44133
|
registerSchema({
|
|
43981
44134
|
command: "landing.inspiration.favorites",
|
|
43982
44135
|
description: "List the reference sections this company has saved. This is what `search` looks at by default, so it is the client's own taste profile \u2014 read it before proposing a direction.",
|
|
@@ -43990,7 +44143,7 @@ registerSchema({
|
|
|
43990
44143
|
}
|
|
43991
44144
|
}
|
|
43992
44145
|
});
|
|
43993
|
-
var favoritesCommand =
|
|
44146
|
+
var favoritesCommand = defineCommand161({
|
|
43994
44147
|
meta: {
|
|
43995
44148
|
name: "favorites",
|
|
43996
44149
|
description: "List this company's saved reference sections. Example: baker landing inspiration favorites --type hero,pricing"
|
|
@@ -44070,7 +44223,7 @@ registerSchema({
|
|
|
44070
44223
|
note: { type: "string", description: "Why this is worth keeping", required: false }
|
|
44071
44224
|
}
|
|
44072
44225
|
});
|
|
44073
|
-
var favoriteCommand =
|
|
44226
|
+
var favoriteCommand = defineCommand161({
|
|
44074
44227
|
meta: {
|
|
44075
44228
|
name: "favorite",
|
|
44076
44229
|
description: "Save a reference section to this company. Example: baker landing inspiration favorite k57abc\u2026"
|
|
@@ -44108,7 +44261,7 @@ registerSchema({
|
|
|
44108
44261
|
page: { type: "boolean", description: "Treat the id as a page rather than a section", required: false }
|
|
44109
44262
|
}
|
|
44110
44263
|
});
|
|
44111
|
-
var unfavoriteCommand =
|
|
44264
|
+
var unfavoriteCommand = defineCommand161({
|
|
44112
44265
|
meta: {
|
|
44113
44266
|
name: "unfavorite",
|
|
44114
44267
|
description: "Remove a reference section from this company's saved set. Example: baker landing inspiration unfavorite k57abc\u2026"
|
|
@@ -44130,7 +44283,7 @@ var unfavoriteCommand = defineCommand160({
|
|
|
44130
44283
|
});
|
|
44131
44284
|
|
|
44132
44285
|
// src/commands/landing/inspiration/page.ts
|
|
44133
|
-
import { defineCommand as
|
|
44286
|
+
import { defineCommand as defineCommand162 } from "citty";
|
|
44134
44287
|
registerSchema({
|
|
44135
44288
|
command: "landing.inspiration.page",
|
|
44136
44289
|
description: "Show a whole reference page as a sequence: every section top to bottom with its type and the idea behind it. This is the view to use when the question is how a good page is ORDERED rather than what one section looks like.",
|
|
@@ -44147,7 +44300,7 @@ registerSchema({
|
|
|
44147
44300
|
}
|
|
44148
44301
|
}
|
|
44149
44302
|
});
|
|
44150
|
-
var pageCommand2 =
|
|
44303
|
+
var pageCommand2 = defineCommand162({
|
|
44151
44304
|
meta: {
|
|
44152
44305
|
name: "page",
|
|
44153
44306
|
description: "Show how a reference page sequences its sections. Example: baker landing inspiration page j91xyz\u2026 \u2014 the blueprint, not the pixels."
|
|
@@ -44210,7 +44363,7 @@ var pageCommand2 = defineCommand161({
|
|
|
44210
44363
|
});
|
|
44211
44364
|
|
|
44212
44365
|
// src/commands/landing/inspiration/scrape.ts
|
|
44213
|
-
import { defineCommand as
|
|
44366
|
+
import { defineCommand as defineCommand163 } from "citty";
|
|
44214
44367
|
|
|
44215
44368
|
// src/engine/landing-library/proxyFailure.ts
|
|
44216
44369
|
var PROXY_STATUS = 407;
|
|
@@ -46350,7 +46503,7 @@ registerSchema({
|
|
|
46350
46503
|
report: { type: "boolean", description: "Write report.html. `--no-report` to skip", required: false }
|
|
46351
46504
|
}
|
|
46352
46505
|
});
|
|
46353
|
-
var scrapeCommand =
|
|
46506
|
+
var scrapeCommand = defineCommand163({
|
|
46354
46507
|
meta: {
|
|
46355
46508
|
name: "scrape",
|
|
46356
46509
|
description: "Capture a landing page to a directory, now. Example: baker landing inspiration scrape https://linear.app --out .baker/inspiration/linear.app"
|
|
@@ -46459,7 +46612,7 @@ var scrapeCommand = defineCommand162({
|
|
|
46459
46612
|
|
|
46460
46613
|
// src/commands/landing/inspiration/search.ts
|
|
46461
46614
|
import path37 from "path";
|
|
46462
|
-
import { defineCommand as
|
|
46615
|
+
import { defineCommand as defineCommand164 } from "citty";
|
|
46463
46616
|
|
|
46464
46617
|
// src/commands/landing/inspiration/shot.ts
|
|
46465
46618
|
import { mkdir as mkdir12, writeFile as writeFile17 } from "fs/promises";
|
|
@@ -46596,7 +46749,7 @@ async function downloadShots(results) {
|
|
|
46596
46749
|
);
|
|
46597
46750
|
return saved;
|
|
46598
46751
|
}
|
|
46599
|
-
var searchCommand2 =
|
|
46752
|
+
var searchCommand2 = defineCommand164({
|
|
46600
46753
|
meta: {
|
|
46601
46754
|
name: "search",
|
|
46602
46755
|
description: "Search real landing-page sections for reference. Example: baker landing inspiration search 'dark developer hero with a terminal' --register dev-tool-minimal --scope all"
|
|
@@ -46694,7 +46847,7 @@ var searchCommand2 = defineCommand163({
|
|
|
46694
46847
|
});
|
|
46695
46848
|
|
|
46696
46849
|
// src/commands/landing/inspiration/sequences.ts
|
|
46697
|
-
import { defineCommand as
|
|
46850
|
+
import { defineCommand as defineCommand165 } from "citty";
|
|
46698
46851
|
var COMPACT_TRANSITIONS = 12;
|
|
46699
46852
|
var COMPACT_ENDS = 5;
|
|
46700
46853
|
var MAX_PAGES = 50;
|
|
@@ -46768,7 +46921,7 @@ function sequencesHints(data, { scope, full }) {
|
|
|
46768
46921
|
if (scope === "favorites") hints.push(...favoritesScopeHints(data.favoritesHealth, data.pagesReturned));
|
|
46769
46922
|
return hints;
|
|
46770
46923
|
}
|
|
46771
|
-
var sequencesCommand =
|
|
46924
|
+
var sequencesCommand = defineCommand165({
|
|
46772
46925
|
meta: {
|
|
46773
46926
|
name: "sequences",
|
|
46774
46927
|
description: "What section follows what, across many real pages at once. Example: baker landing inspiration sequences 'developer tool pricing page' --scope all \u2014 the evidence for how to order a page you are about to build."
|
|
@@ -46818,7 +46971,7 @@ var sequencesCommand = defineCommand164({
|
|
|
46818
46971
|
|
|
46819
46972
|
// src/commands/landing/inspiration/view.ts
|
|
46820
46973
|
import path38 from "path";
|
|
46821
|
-
import { defineCommand as
|
|
46974
|
+
import { defineCommand as defineCommand166 } from "citty";
|
|
46822
46975
|
registerSchema({
|
|
46823
46976
|
command: "landing.inspiration.view",
|
|
46824
46977
|
description: "Everything known about one section: composition, motion, design tokens, the copy it uses, why it works, and what must change to make it yours. Downloads the desktop and mobile screenshots plus the motion filmstrip so you can look at them.",
|
|
@@ -46831,7 +46984,7 @@ registerSchema({
|
|
|
46831
46984
|
}
|
|
46832
46985
|
}
|
|
46833
46986
|
});
|
|
46834
|
-
var viewCommand2 =
|
|
46987
|
+
var viewCommand2 = defineCommand166({
|
|
46835
46988
|
meta: {
|
|
46836
46989
|
name: "view",
|
|
46837
46990
|
description: "Full detail for one reference section. Example: baker landing inspiration view k57abc\u2026 \u2014 read the screenshots it saves before you build."
|
|
@@ -46915,7 +47068,7 @@ var viewCommand2 = defineCommand165({
|
|
|
46915
47068
|
});
|
|
46916
47069
|
|
|
46917
47070
|
// src/commands/landing/inspiration/index.ts
|
|
46918
|
-
var inspirationCommand =
|
|
47071
|
+
var inspirationCommand = defineCommand167({
|
|
46919
47072
|
meta: {
|
|
46920
47073
|
name: "inspiration",
|
|
46921
47074
|
description: `Reference library of real landing-page sections \u2014 look at how good pages actually solve a problem before you design one.
|
|
@@ -46960,7 +47113,7 @@ Full guide: __tooling__/docs/tools/baker/landing.md`
|
|
|
46960
47113
|
});
|
|
46961
47114
|
|
|
46962
47115
|
// src/commands/landing/index.ts
|
|
46963
|
-
var landingCommand =
|
|
47116
|
+
var landingCommand = defineCommand168({
|
|
46964
47117
|
meta: {
|
|
46965
47118
|
name: "landing",
|
|
46966
47119
|
description: `Design-quality tools for landing pages (src/pages/<slug>/).
|
|
@@ -46978,7 +47131,7 @@ Subcommands:
|
|
|
46978
47131
|
});
|
|
46979
47132
|
|
|
46980
47133
|
// src/commands/mcp/index.ts
|
|
46981
|
-
import { defineCommand as
|
|
47134
|
+
import { defineCommand as defineCommand169 } from "citty";
|
|
46982
47135
|
|
|
46983
47136
|
// src/commands/mcp/platforms.ts
|
|
46984
47137
|
function readsKey(label) {
|
|
@@ -47047,7 +47200,7 @@ registerSchema({
|
|
|
47047
47200
|
description: "List everything this chat can reach: managed integrations (Attio, Slack, Gmail, Google Sheets, \u2026), custom MCP servers, and the platforms the company signed in to (HubSpot, Google Ads, GA4, Search Console, Tag Manager) which you read through their own `baker` commands. Start here when the user mentions an external tool or platform.",
|
|
47048
47201
|
args: {}
|
|
47049
47202
|
});
|
|
47050
|
-
var connectedCommand =
|
|
47203
|
+
var connectedCommand = defineCommand169({
|
|
47051
47204
|
meta: {
|
|
47052
47205
|
name: "connected",
|
|
47053
47206
|
description: `Everything this chat can reach \u2014 managed integrations, custom MCP servers, and connected platforms.
|
|
@@ -47106,7 +47259,7 @@ registerSchema({
|
|
|
47106
47259
|
description: "List the custom MCP servers this company's chats see (org + company + your own user scope).",
|
|
47107
47260
|
args: {}
|
|
47108
47261
|
});
|
|
47109
|
-
var listCommand14 =
|
|
47262
|
+
var listCommand14 = defineCommand169({
|
|
47110
47263
|
meta: { name: "list", description: "List custom MCP servers visible to this company's chats." },
|
|
47111
47264
|
run: async () => {
|
|
47112
47265
|
try {
|
|
@@ -47143,7 +47296,7 @@ registerSchema({
|
|
|
47143
47296
|
header: { type: "string", description: 'Auth header "Key: Value" (repeatable)', required: false }
|
|
47144
47297
|
}
|
|
47145
47298
|
});
|
|
47146
|
-
var addCommand2 =
|
|
47299
|
+
var addCommand2 = defineCommand169({
|
|
47147
47300
|
meta: {
|
|
47148
47301
|
name: "add",
|
|
47149
47302
|
description: `Register a custom MCP server. Tools appear as mcp__<name>__* on the NEXT message.
|
|
@@ -47195,7 +47348,7 @@ registerSchema({
|
|
|
47195
47348
|
description: "Remove a company custom MCP server by name.",
|
|
47196
47349
|
args: { name: { type: "string", description: "Server name to remove", required: true } }
|
|
47197
47350
|
});
|
|
47198
|
-
var removeCommand4 =
|
|
47351
|
+
var removeCommand4 = defineCommand169({
|
|
47199
47352
|
meta: {
|
|
47200
47353
|
name: "remove",
|
|
47201
47354
|
description: `Remove a company custom MCP server by name.
|
|
@@ -47217,7 +47370,7 @@ Example:
|
|
|
47217
47370
|
}
|
|
47218
47371
|
}
|
|
47219
47372
|
});
|
|
47220
|
-
var mcpCommand =
|
|
47373
|
+
var mcpCommand = defineCommand169({
|
|
47221
47374
|
meta: {
|
|
47222
47375
|
name: "mcp",
|
|
47223
47376
|
description: `Third-party tools for this company \u2014 see what's connected, register custom HTTPS MCP endpoints.
|
|
@@ -47243,10 +47396,10 @@ Full guide: __tooling__/docs/tools/baker/mcp.md`
|
|
|
47243
47396
|
});
|
|
47244
47397
|
|
|
47245
47398
|
// src/commands/research/index.ts
|
|
47246
|
-
import { defineCommand as
|
|
47399
|
+
import { defineCommand as defineCommand181 } from "citty";
|
|
47247
47400
|
|
|
47248
47401
|
// src/commands/research/advertisers.ts
|
|
47249
|
-
import { defineCommand as
|
|
47402
|
+
import { defineCommand as defineCommand170 } from "citty";
|
|
47250
47403
|
|
|
47251
47404
|
// src/commands/research/hints.ts
|
|
47252
47405
|
var AD_COPY_ROUTE = 'This returns competing DOMAINS and their SERP economics \u2014 no ad copy, no headlines, no creative. For the actual copy of a competitor\'s ads: `baker winning-ads advertisers "<brand>"` \u2192 `baker winning-ads search "<brief>" --advertiser-id <id>` \u2192 `baker winning-ads content <adId>` (`primary_text` / `headline` / `cta`, plus the spoken transcript and on-screen text for video). That corpus is Meta and LinkedIn only \u2014 Google SERP ad copy is not available through any Baker command, so do not keep querying for it here.';
|
|
@@ -47429,7 +47582,7 @@ var FIELDS3 = {
|
|
|
47429
47582
|
etv: "Estimated traffic value (USD)",
|
|
47430
47583
|
visibility: "SERP visibility score (0-1)"
|
|
47431
47584
|
};
|
|
47432
|
-
var advertisersCommand =
|
|
47585
|
+
var advertisersCommand = defineCommand170({
|
|
47433
47586
|
meta: {
|
|
47434
47587
|
name: "advertisers",
|
|
47435
47588
|
description: `Domains competing for a keyword in Google SERPs, with position, relevance, traffic value and visibility. Returns NO ad copy \u2014 for a competitor's headlines and body copy use \`baker winning-ads content <adId>\` (Meta/LinkedIn only).
|
|
@@ -47485,7 +47638,7 @@ Examples:
|
|
|
47485
47638
|
});
|
|
47486
47639
|
|
|
47487
47640
|
// src/commands/research/autocomplete.ts
|
|
47488
|
-
import { defineCommand as
|
|
47641
|
+
import { defineCommand as defineCommand171 } from "citty";
|
|
47489
47642
|
registerSchema({
|
|
47490
47643
|
command: "research.autocomplete",
|
|
47491
47644
|
description: "Get Google Autocomplete suggestions for a seed keyword. Useful for keyword expansion and discovering what people actually search for. IMPORTANT: If --location and --language are omitted, defaults to United States (us) and English (en).",
|
|
@@ -47508,7 +47661,7 @@ registerSchema({
|
|
|
47508
47661
|
var FIELDS4 = {
|
|
47509
47662
|
suggestion: "Autocomplete suggestion from Google"
|
|
47510
47663
|
};
|
|
47511
|
-
var autocompleteCommand =
|
|
47664
|
+
var autocompleteCommand = defineCommand171({
|
|
47512
47665
|
meta: {
|
|
47513
47666
|
name: "autocomplete",
|
|
47514
47667
|
description: `Get Google Autocomplete suggestions for keyword expansion.
|
|
@@ -47563,7 +47716,7 @@ Examples:
|
|
|
47563
47716
|
});
|
|
47564
47717
|
|
|
47565
47718
|
// src/commands/research/countries.ts
|
|
47566
|
-
import { defineCommand as
|
|
47719
|
+
import { defineCommand as defineCommand172 } from "citty";
|
|
47567
47720
|
registerSchema({
|
|
47568
47721
|
command: "research.countries",
|
|
47569
47722
|
description: "List all supported country codes for --location flag in research commands.",
|
|
@@ -47620,7 +47773,7 @@ var FIELDS5 = {
|
|
|
47620
47773
|
code: "Country code to pass as --location",
|
|
47621
47774
|
name: "Country name"
|
|
47622
47775
|
};
|
|
47623
|
-
var countriesCommand =
|
|
47776
|
+
var countriesCommand = defineCommand172({
|
|
47624
47777
|
meta: {
|
|
47625
47778
|
name: "countries",
|
|
47626
47779
|
description: "List all supported country codes for --location flag."
|
|
@@ -47631,7 +47784,7 @@ var countriesCommand = defineCommand171({
|
|
|
47631
47784
|
});
|
|
47632
47785
|
|
|
47633
47786
|
// src/commands/research/fetch.ts
|
|
47634
|
-
import { defineCommand as
|
|
47787
|
+
import { defineCommand as defineCommand173 } from "citty";
|
|
47635
47788
|
var CONTENT_PREVIEW_CHARS = 2e4;
|
|
47636
47789
|
var TIMEOUT_MS = 18e4;
|
|
47637
47790
|
registerSchema({
|
|
@@ -47704,7 +47857,7 @@ function fetchFix(code) {
|
|
|
47704
47857
|
explanation: "This read failed. Don't build a retry ladder around it \u2014 finish the rest of the job with what you can reach and name this page as a gap."
|
|
47705
47858
|
};
|
|
47706
47859
|
}
|
|
47707
|
-
var fetchCommand =
|
|
47860
|
+
var fetchCommand = defineCommand173({
|
|
47708
47861
|
meta: {
|
|
47709
47862
|
name: "fetch",
|
|
47710
47863
|
description: `Read a page an ordinary web fetch could not. Bot walls and JavaScript-rendered pages are resolved for you \u2014 you never have to retry, wait, or drive a browser yourself.
|
|
@@ -47781,7 +47934,7 @@ Examples:
|
|
|
47781
47934
|
});
|
|
47782
47935
|
|
|
47783
47936
|
// src/commands/research/intent.ts
|
|
47784
|
-
import { defineCommand as
|
|
47937
|
+
import { defineCommand as defineCommand174 } from "citty";
|
|
47785
47938
|
registerSchema({
|
|
47786
47939
|
command: "research.intent",
|
|
47787
47940
|
description: "Classify Google Search intent for keywords. Determines if someone searching is looking to buy, research, or navigate. IMPORTANT: If --language is omitted, defaults to English (en). The response includes a query_context object showing which language was used.",
|
|
@@ -47804,7 +47957,7 @@ var FIELDS7 = {
|
|
|
47804
47957
|
intent: "Primary Google Search intent: informational, navigational, commercial, transactional",
|
|
47805
47958
|
probability: "Confidence score 0.0-1.0"
|
|
47806
47959
|
};
|
|
47807
|
-
var intentCommand =
|
|
47960
|
+
var intentCommand = defineCommand174({
|
|
47808
47961
|
meta: {
|
|
47809
47962
|
name: "intent",
|
|
47810
47963
|
description: `Classify Google Search intent for keywords. Returns intent type and confidence.
|
|
@@ -47852,7 +48005,7 @@ Examples:
|
|
|
47852
48005
|
});
|
|
47853
48006
|
|
|
47854
48007
|
// src/commands/research/keyword-gap.ts
|
|
47855
|
-
import { defineCommand as
|
|
48008
|
+
import { defineCommand as defineCommand175 } from "citty";
|
|
47856
48009
|
registerSchema({
|
|
47857
48010
|
command: "research.keyword-gap",
|
|
47858
48011
|
description: "Find keywords a competitor ranks for (organic or paid) that you don't. Discovers expansion opportunities. IMPORTANT: If --location and --language are omitted, defaults to United States (us) and English (en). The response includes a query_context object showing which location/language were used.",
|
|
@@ -47881,7 +48034,7 @@ var FIELDS8 = {
|
|
|
47881
48034
|
cpc: "Cost per click USD",
|
|
47882
48035
|
their_position: "Competitor's ranking position"
|
|
47883
48036
|
};
|
|
47884
|
-
var keywordGapCommand =
|
|
48037
|
+
var keywordGapCommand = defineCommand175({
|
|
47885
48038
|
meta: {
|
|
47886
48039
|
name: "keyword-gap",
|
|
47887
48040
|
description: `Find keywords a competitor has that you don't. Supports pagination via --offset.
|
|
@@ -47956,7 +48109,7 @@ Examples:
|
|
|
47956
48109
|
});
|
|
47957
48110
|
|
|
47958
48111
|
// src/commands/research/keywords-for-site.ts
|
|
47959
|
-
import { defineCommand as
|
|
48112
|
+
import { defineCommand as defineCommand176 } from "citty";
|
|
47960
48113
|
registerSchema({
|
|
47961
48114
|
command: "research.keywords-for-site",
|
|
47962
48115
|
description: "Get keywords a competitor targets in Google. Use --type paid to see only paid keywords, --type organic for organic only. IMPORTANT: If --location and --language are omitted, defaults to United States (us) and English (en). The response includes a query_context object showing which location/language were used.",
|
|
@@ -47989,7 +48142,7 @@ var FIELDS9 = {
|
|
|
47989
48142
|
competition: "LOW, MEDIUM, or HIGH",
|
|
47990
48143
|
competition_index: "Competition score 0-100"
|
|
47991
48144
|
};
|
|
47992
|
-
var keywordsForSiteCommand =
|
|
48145
|
+
var keywordsForSiteCommand = defineCommand176({
|
|
47993
48146
|
meta: {
|
|
47994
48147
|
name: "keywords-for-site",
|
|
47995
48148
|
description: `Get keywords a competitor targets in Google. Use --type to filter paid/organic.
|
|
@@ -48051,7 +48204,7 @@ Examples:
|
|
|
48051
48204
|
});
|
|
48052
48205
|
|
|
48053
48206
|
// src/commands/research/languages.ts
|
|
48054
|
-
import { defineCommand as
|
|
48207
|
+
import { defineCommand as defineCommand177 } from "citty";
|
|
48055
48208
|
registerSchema({
|
|
48056
48209
|
command: "research.languages",
|
|
48057
48210
|
description: "List all supported language codes for --language flag in research commands.",
|
|
@@ -48081,7 +48234,7 @@ var FIELDS10 = {
|
|
|
48081
48234
|
code: "Language code to pass as --language",
|
|
48082
48235
|
name: "Language name (also accepted by --language)"
|
|
48083
48236
|
};
|
|
48084
|
-
var languagesCommand2 =
|
|
48237
|
+
var languagesCommand2 = defineCommand177({
|
|
48085
48238
|
meta: {
|
|
48086
48239
|
name: "languages",
|
|
48087
48240
|
description: "List all supported language codes for --language flag."
|
|
@@ -48092,7 +48245,7 @@ var languagesCommand2 = defineCommand176({
|
|
|
48092
48245
|
});
|
|
48093
48246
|
|
|
48094
48247
|
// src/commands/research/lighthouse.ts
|
|
48095
|
-
import { defineCommand as
|
|
48248
|
+
import { defineCommand as defineCommand178 } from "citty";
|
|
48096
48249
|
registerSchema({
|
|
48097
48250
|
command: "research.lighthouse",
|
|
48098
48251
|
description: "Landing page performance audit. Returns metrics that affect Google Ads Quality Score and CPC.",
|
|
@@ -48111,7 +48264,7 @@ var FIELDS11 = {
|
|
|
48111
48264
|
speed_index_ms: "Speed Index in ms (good: < 3400)",
|
|
48112
48265
|
interactive_ms: "Time to Interactive in ms (good: < 3800)"
|
|
48113
48266
|
};
|
|
48114
|
-
var lighthouseCommand =
|
|
48267
|
+
var lighthouseCommand = defineCommand178({
|
|
48115
48268
|
meta: {
|
|
48116
48269
|
name: "lighthouse",
|
|
48117
48270
|
description: `Landing page performance audit. Metrics affecting Google Ads Quality Score.
|
|
@@ -48149,7 +48302,7 @@ Examples:
|
|
|
48149
48302
|
});
|
|
48150
48303
|
|
|
48151
48304
|
// src/commands/research/relevant-pages.ts
|
|
48152
|
-
import { defineCommand as
|
|
48305
|
+
import { defineCommand as defineCommand179 } from "citty";
|
|
48153
48306
|
registerSchema({
|
|
48154
48307
|
command: "research.relevant-pages",
|
|
48155
48308
|
description: "Get the top pages of a competitor domain with organic traffic and ranking data. Shows which pages drive the most traffic. IMPORTANT: If --location and --language are omitted, defaults to United States (us) and English (en).",
|
|
@@ -48175,7 +48328,7 @@ var FIELDS12 = {
|
|
|
48175
48328
|
keywords: "Total organic keywords the page ranks for",
|
|
48176
48329
|
top_10: "Keywords in positions 1-10"
|
|
48177
48330
|
};
|
|
48178
|
-
var relevantPagesCommand =
|
|
48331
|
+
var relevantPagesCommand = defineCommand179({
|
|
48179
48332
|
meta: {
|
|
48180
48333
|
name: "relevant-pages",
|
|
48181
48334
|
description: `Get the top pages of a competitor domain with traffic data.
|
|
@@ -48222,7 +48375,7 @@ Examples:
|
|
|
48222
48375
|
});
|
|
48223
48376
|
|
|
48224
48377
|
// src/commands/research/web.ts
|
|
48225
|
-
import { defineCommand as
|
|
48378
|
+
import { defineCommand as defineCommand180 } from "citty";
|
|
48226
48379
|
registerSchema({
|
|
48227
48380
|
command: "research.web",
|
|
48228
48381
|
description: "Search the web with AI to answer marketing questions \u2014 competitors, ICP, pricing, pain points, market trends. Three depth levels: medium (quick, default), high (thorough), xhigh (exhaustive deep research).",
|
|
@@ -48273,7 +48426,7 @@ async function runDeepResearch(question) {
|
|
|
48273
48426
|
}
|
|
48274
48427
|
throw new Error("Deep research timed out");
|
|
48275
48428
|
}
|
|
48276
|
-
var webCommand =
|
|
48429
|
+
var webCommand = defineCommand180({
|
|
48277
48430
|
meta: {
|
|
48278
48431
|
name: "web",
|
|
48279
48432
|
description: `Search the web with AI to answer any open-ended marketing question. Uses live internet data via Google Search.
|
|
@@ -48335,7 +48488,7 @@ Examples:
|
|
|
48335
48488
|
});
|
|
48336
48489
|
|
|
48337
48490
|
// src/commands/research/index.ts
|
|
48338
|
-
var researchCommand =
|
|
48491
|
+
var researchCommand = defineCommand181({
|
|
48339
48492
|
meta: {
|
|
48340
48493
|
name: "research",
|
|
48341
48494
|
description: `Competitive intelligence and AI-powered research commands.
|
|
@@ -48379,10 +48532,10 @@ Full guide: __tooling__/docs/tools/baker/research.md`
|
|
|
48379
48532
|
});
|
|
48380
48533
|
|
|
48381
48534
|
// src/commands/scheduled-actions/index.ts
|
|
48382
|
-
import { defineCommand as
|
|
48535
|
+
import { defineCommand as defineCommand189 } from "citty";
|
|
48383
48536
|
|
|
48384
48537
|
// src/commands/scheduled-actions/create.ts
|
|
48385
|
-
import { defineCommand as
|
|
48538
|
+
import { defineCommand as defineCommand182 } from "citty";
|
|
48386
48539
|
|
|
48387
48540
|
// src/commands/scheduled-actions/shared.ts
|
|
48388
48541
|
var TEMP_SCHEDULED_ACTION_PREFIX = "temp_sched_";
|
|
@@ -48529,7 +48682,7 @@ registerSchema({
|
|
|
48529
48682
|
}
|
|
48530
48683
|
}
|
|
48531
48684
|
});
|
|
48532
|
-
var createCommand3 =
|
|
48685
|
+
var createCommand3 = defineCommand182({
|
|
48533
48686
|
meta: {
|
|
48534
48687
|
name: "create",
|
|
48535
48688
|
description: 'Stage a scheduled action. Example: baker scheduled-actions create --name "Weekly report" --description "..." --cron "0 9 * * MON"'
|
|
@@ -48588,7 +48741,7 @@ var createCommand3 = defineCommand181({
|
|
|
48588
48741
|
});
|
|
48589
48742
|
|
|
48590
48743
|
// src/commands/scheduled-actions/delete.ts
|
|
48591
|
-
import { defineCommand as
|
|
48744
|
+
import { defineCommand as defineCommand183 } from "citty";
|
|
48592
48745
|
registerSchema({
|
|
48593
48746
|
command: "scheduled-actions.delete",
|
|
48594
48747
|
description: "Stage deletion of a published scheduled action or cancellation of a temp_sched_* draft creation.",
|
|
@@ -48596,7 +48749,7 @@ registerSchema({
|
|
|
48596
48749
|
id: { type: "string", description: "Published scheduled action ID or temp_sched_* draft ID", required: true }
|
|
48597
48750
|
}
|
|
48598
48751
|
});
|
|
48599
|
-
var deleteCommand3 =
|
|
48752
|
+
var deleteCommand3 = defineCommand183({
|
|
48600
48753
|
meta: {
|
|
48601
48754
|
name: "delete",
|
|
48602
48755
|
description: "Stage scheduled action deletion. Example: baker scheduled-actions delete <id-or-temp_sched_id>"
|
|
@@ -48625,7 +48778,7 @@ var deleteCommand3 = defineCommand182({
|
|
|
48625
48778
|
});
|
|
48626
48779
|
|
|
48627
48780
|
// src/commands/scheduled-actions/get.ts
|
|
48628
|
-
import { defineCommand as
|
|
48781
|
+
import { defineCommand as defineCommand184 } from "citty";
|
|
48629
48782
|
registerSchema({
|
|
48630
48783
|
command: "scheduled-actions.get",
|
|
48631
48784
|
description: "Get a published scheduled action or a temp_sched_* draft-created scheduled action.",
|
|
@@ -48634,7 +48787,7 @@ registerSchema({
|
|
|
48634
48787
|
chat: { type: "string", description: CHAT_READ_ARG.description, required: false }
|
|
48635
48788
|
}
|
|
48636
48789
|
});
|
|
48637
|
-
var getCommand4 =
|
|
48790
|
+
var getCommand4 = defineCommand184({
|
|
48638
48791
|
meta: {
|
|
48639
48792
|
name: "get",
|
|
48640
48793
|
description: "Get a scheduled action. Example: baker scheduled-actions get <id-or-temp_sched_id>"
|
|
@@ -48673,7 +48826,7 @@ var getCommand4 = defineCommand183({
|
|
|
48673
48826
|
});
|
|
48674
48827
|
|
|
48675
48828
|
// src/commands/scheduled-actions/list.ts
|
|
48676
|
-
import { defineCommand as
|
|
48829
|
+
import { defineCommand as defineCommand185 } from "citty";
|
|
48677
48830
|
registerSchema({
|
|
48678
48831
|
command: "scheduled-actions.list",
|
|
48679
48832
|
description: "List published scheduled actions. Includes draft state when BAKER_CHAT_ID is set, or --chat <id> to read an earlier chat's staged schedules instead.",
|
|
@@ -48681,7 +48834,7 @@ registerSchema({
|
|
|
48681
48834
|
chat: { type: "string", description: CHAT_READ_ARG.description, required: false }
|
|
48682
48835
|
}
|
|
48683
48836
|
});
|
|
48684
|
-
var listCommand15 =
|
|
48837
|
+
var listCommand15 = defineCommand185({
|
|
48685
48838
|
meta: {
|
|
48686
48839
|
name: "list",
|
|
48687
48840
|
description: "List scheduled actions. Includes staged draft ops when BAKER_CHAT_ID is set, or --chat <id> to read an earlier chat's staged schedules instead."
|
|
@@ -48706,7 +48859,7 @@ var listCommand15 = defineCommand184({
|
|
|
48706
48859
|
// src/commands/scheduled-actions/templates.ts
|
|
48707
48860
|
import { readFile as readFile25 } from "fs/promises";
|
|
48708
48861
|
import path39 from "path";
|
|
48709
|
-
import { defineCommand as
|
|
48862
|
+
import { defineCommand as defineCommand186 } from "citty";
|
|
48710
48863
|
registerSchema({
|
|
48711
48864
|
command: "scheduled-actions.templates",
|
|
48712
48865
|
description: "The recipes available to this company: the ones Baker ships plus the ones they wrote themselves, each with its id, what it produces and how often it is meant to run. Read this before proposing a company's automation, so every recipe you name is one that exists. Also how a company gets a recipe of its own \u2014 save a brief, prove it runs, then publish it.",
|
|
@@ -48761,7 +48914,7 @@ registerSchema({
|
|
|
48761
48914
|
}
|
|
48762
48915
|
}
|
|
48763
48916
|
});
|
|
48764
|
-
var templatesCommand =
|
|
48917
|
+
var templatesCommand = defineCommand186({
|
|
48765
48918
|
meta: {
|
|
48766
48919
|
name: "templates",
|
|
48767
48920
|
description: `The recipes this company can run \u2014 Baker's own plus theirs, with what each one produces.
|
|
@@ -48853,7 +49006,7 @@ Full guide: __tooling__/docs/tools/baker/scheduled-actions.md`
|
|
|
48853
49006
|
});
|
|
48854
49007
|
|
|
48855
49008
|
// src/commands/scheduled-actions/trigger.ts
|
|
48856
|
-
import { defineCommand as
|
|
49009
|
+
import { defineCommand as defineCommand187 } from "citty";
|
|
48857
49010
|
registerSchema({
|
|
48858
49011
|
command: "scheduled-actions.trigger",
|
|
48859
49012
|
description: "Immediately trigger a published scheduled action. Does not require BAKER_CHAT_ID and rejects temp_sched_* IDs.",
|
|
@@ -48861,7 +49014,7 @@ registerSchema({
|
|
|
48861
49014
|
id: { type: "string", description: "Published scheduled action ID", required: true }
|
|
48862
49015
|
}
|
|
48863
49016
|
});
|
|
48864
|
-
var triggerCommand =
|
|
49017
|
+
var triggerCommand = defineCommand187({
|
|
48865
49018
|
meta: {
|
|
48866
49019
|
name: "trigger",
|
|
48867
49020
|
description: "Immediately trigger a published scheduled action. Example: baker scheduled-actions trigger <id>"
|
|
@@ -48898,7 +49051,7 @@ var triggerCommand = defineCommand186({
|
|
|
48898
49051
|
});
|
|
48899
49052
|
|
|
48900
49053
|
// src/commands/scheduled-actions/update.ts
|
|
48901
|
-
import { defineCommand as
|
|
49054
|
+
import { defineCommand as defineCommand188 } from "citty";
|
|
48902
49055
|
registerSchema({
|
|
48903
49056
|
command: "scheduled-actions.update",
|
|
48904
49057
|
description: "Stage an update to a published scheduled action or temp_sched_* draft-created scheduled action.",
|
|
@@ -48929,7 +49082,7 @@ registerSchema({
|
|
|
48929
49082
|
prompt: { type: "string", description: "Replacement additional spawned-agent instructions", required: false }
|
|
48930
49083
|
}
|
|
48931
49084
|
});
|
|
48932
|
-
var updateCommand3 =
|
|
49085
|
+
var updateCommand3 = defineCommand188({
|
|
48933
49086
|
meta: {
|
|
48934
49087
|
name: "update",
|
|
48935
49088
|
description: "Stage a scheduled action update. Examples: baker scheduled-actions update <id> --enabled false | baker scheduled-actions update <id> --mode publish"
|
|
@@ -49007,7 +49160,7 @@ var updateCommand3 = defineCommand187({
|
|
|
49007
49160
|
});
|
|
49008
49161
|
|
|
49009
49162
|
// src/commands/scheduled-actions/index.ts
|
|
49010
|
-
var scheduledActionsCommand =
|
|
49163
|
+
var scheduledActionsCommand = defineCommand189({
|
|
49011
49164
|
meta: {
|
|
49012
49165
|
name: "scheduled-actions",
|
|
49013
49166
|
description: `Manage Scheduled Actions. Subcommands: list, get, create, update, delete, trigger, templates.
|
|
@@ -49036,14 +49189,14 @@ Full guide: __tooling__/docs/tools/baker/scheduled-actions.md`
|
|
|
49036
49189
|
});
|
|
49037
49190
|
|
|
49038
49191
|
// src/commands/schema.ts
|
|
49039
|
-
import { defineCommand as
|
|
49192
|
+
import { defineCommand as defineCommand190 } from "citty";
|
|
49040
49193
|
function narrowToFamily(commandName, available) {
|
|
49041
49194
|
const segments = commandName.split(".");
|
|
49042
49195
|
const prefix = segments[0] === "ads" && segments[1] ? `ads.${segments[1]}.` : `${segments[0]}.`;
|
|
49043
49196
|
const siblings = available.filter((name) => name.startsWith(prefix));
|
|
49044
49197
|
return siblings.length > 0 ? siblings : available;
|
|
49045
49198
|
}
|
|
49046
|
-
var schemaCommand2 =
|
|
49199
|
+
var schemaCommand2 = defineCommand190({
|
|
49047
49200
|
meta: {
|
|
49048
49201
|
name: "schema",
|
|
49049
49202
|
description: "Inspect command argument schemas (for AI agent introspection). Lists all commands if no argument given. Example: baker schema images.search"
|
|
@@ -49087,10 +49240,10 @@ var schemaCommand2 = defineCommand189({
|
|
|
49087
49240
|
});
|
|
49088
49241
|
|
|
49089
49242
|
// src/commands/studio/index.ts
|
|
49090
|
-
import { defineCommand as
|
|
49243
|
+
import { defineCommand as defineCommand199 } from "citty";
|
|
49091
49244
|
|
|
49092
49245
|
// src/commands/studio/animate.ts
|
|
49093
|
-
import { defineCommand as
|
|
49246
|
+
import { defineCommand as defineCommand191 } from "citty";
|
|
49094
49247
|
|
|
49095
49248
|
// src/commands/studio/batch.ts
|
|
49096
49249
|
function projectBatch(generation, full) {
|
|
@@ -49541,7 +49694,7 @@ function costHintsFor(body) {
|
|
|
49541
49694
|
}
|
|
49542
49695
|
return hints;
|
|
49543
49696
|
}
|
|
49544
|
-
var animateCommand =
|
|
49697
|
+
var animateCommand = defineCommand191({
|
|
49545
49698
|
meta: {
|
|
49546
49699
|
name: "animate",
|
|
49547
49700
|
description: "Render a clip. With an image the look is already fixed, so the prompt describes MOVEMENT \u2014 what the camera does, what the subject does, in what order. With --from text there is no image and the prompt is the whole shot.\n\nA rendered clip is NOT usable anywhere until you keep it: `baker studio keep <id> --slot N` is what puts it in the video library. Takes nobody keeps are never ingested, which is what makes a rejected batch cheap.\n\nFor anything longer than 15 seconds, or to build on footage that already exists, use --model bytedance/seedance-2.5: it renders 4-30s and is the only model that reads an existing clip or an existing soundtrack.\n\nExamples:\n baker studio animate 'slow push in, model turns to camera and smiles' --image j57abc123def456ghi789\n baker studio animate 'she looks to camera and says: \"Hola, soy Elena\"' --avatar elena --quality 720p --aspect-ratio 9:16\n baker studio animate 'handheld drift right, steam rising from the cup' --image './out/hero.png' --duration 6 --quality 1080p\n baker studio animate 'product rotates once on a turntable' --image j57abc\u2026,j57def\u2026 --from references\n baker studio animate 'she keeps walking, camera stays with her, then she stops and looks up' --image j57abc\u2026 --from references --from-clip j57batch\u2026:0 --model bytedance/seedance-2.5 --duration 20\n baker studio animate 'hold on the product, then a slow push-in' --from references --from-video j57vid\u2026 --model bytedance/seedance-2.5\n baker studio animate 'slow drone pull-back over a solar farm at golden hour, no people' --from text --model bytedance/seedance-2.5 --duration 12"
|
|
@@ -49665,7 +49818,7 @@ var animateCommand = defineCommand190({
|
|
|
49665
49818
|
});
|
|
49666
49819
|
|
|
49667
49820
|
// src/commands/studio/generate.ts
|
|
49668
|
-
import { defineCommand as
|
|
49821
|
+
import { defineCommand as defineCommand192 } from "citty";
|
|
49669
49822
|
var MODEL_LIST2 = IMAGE_MODEL_IDS;
|
|
49670
49823
|
var DEFAULT_MAX_WAIT_MS2 = 24e4;
|
|
49671
49824
|
registerSchema({
|
|
@@ -49801,7 +49954,7 @@ function buildGenerateBody(args, prompt) {
|
|
|
49801
49954
|
}
|
|
49802
49955
|
return body;
|
|
49803
49956
|
}
|
|
49804
|
-
var generateCommand =
|
|
49957
|
+
var generateCommand = defineCommand192({
|
|
49805
49958
|
meta: {
|
|
49806
49959
|
name: "generate",
|
|
49807
49960
|
description: "Start here to make an image. Renders 1-8 takes of one brief, ingests each into the media library as it lands, and shows the batch in the dashboard Studio next to the ones the client ran.\n\nModel choice: google/gemini-3.1-flash-image-preview (default \u2014 fast, best at editing a reference and at extreme ratios), google/gemini-3-pro-image-preview (highest fidelity, slower), openai/gpt-image-2 (photoreal and the cleanest in-image text \u2014 no --image-size, no 4:5 / 5:4), recraft/recraft-v4.1-pro-vector (vector/flat marks with palette control).\n\n--reference is the biggest quality lever there is: a real logo, product shot, Pinterest pin or sandbox screenshot beats any amount of adjectives.\n\nExamples:\n baker studio generate 'matte black bottle on wet marble, hard studio light, 35mm' --aspect-ratio 3:2 --count 3\n baker studio generate 'this bottle on a sunlit kitchen counter' --reference './src/brand/product.png,https://\u2026/kitchen.jpg'\n baker studio generate 'founder-style selfie, kitchen background, natural light' --skill ugc-selfie-hook\n baker studio generate 'flat geometric mascot, brand palette' --model recraft/recraft-v4.1-pro-vector --rgb-colors '[[10,10,10],[255,80,0]]'"
|
|
@@ -49884,7 +50037,7 @@ var generateCommand = defineCommand191({
|
|
|
49884
50037
|
});
|
|
49885
50038
|
|
|
49886
50039
|
// src/commands/studio/get.ts
|
|
49887
|
-
import { defineCommand as
|
|
50040
|
+
import { defineCommand as defineCommand193 } from "citty";
|
|
49888
50041
|
registerSchema({
|
|
49889
50042
|
command: "studio.get",
|
|
49890
50043
|
description: "Read one Studio batch: every take, where it lives, and why a take is missing. This is how you pick up a batch that was still rendering when the start command returned.",
|
|
@@ -49893,7 +50046,7 @@ registerSchema({
|
|
|
49893
50046
|
full: { type: "boolean", description: "Include settings, references and attribution", required: false }
|
|
49894
50047
|
}
|
|
49895
50048
|
});
|
|
49896
|
-
var getCommand5 =
|
|
50049
|
+
var getCommand5 = defineCommand193({
|
|
49897
50050
|
meta: {
|
|
49898
50051
|
name: "get",
|
|
49899
50052
|
description: "Read one Studio batch \u2014 the takes, their urls, whether each is in the library, and the reason for any that failed.\n\nExample: baker studio get j57abc123def456ghi789\nExample: baker studio get j57abc123def456ghi789 --full"
|
|
@@ -49922,7 +50075,7 @@ var getCommand5 = defineCommand192({
|
|
|
49922
50075
|
});
|
|
49923
50076
|
|
|
49924
50077
|
// src/commands/studio/improve.ts
|
|
49925
|
-
import { defineCommand as
|
|
50078
|
+
import { defineCommand as defineCommand194 } from "citty";
|
|
49926
50079
|
var DESCRIPTION = "Sharpen a rough brief into directed art direction \u2014 the same rewrite the client gets from the wand in the Studio prompt bar. Reach for it when you are relaying the CLIENT's own words and want them shaped without substituting your voice; when you are writing the art direction yourself, just write it, because you will do a better job than this does.";
|
|
49927
50080
|
registerSchema({
|
|
49928
50081
|
command: "studio.improve",
|
|
@@ -49947,7 +50100,7 @@ registerSchema({
|
|
|
49947
50100
|
}
|
|
49948
50101
|
}
|
|
49949
50102
|
});
|
|
49950
|
-
var improveCommand =
|
|
50103
|
+
var improveCommand = defineCommand194({
|
|
49951
50104
|
meta: {
|
|
49952
50105
|
name: "improve",
|
|
49953
50106
|
description: `${DESCRIPTION}
|
|
@@ -49991,7 +50144,7 @@ Examples:
|
|
|
49991
50144
|
});
|
|
49992
50145
|
|
|
49993
50146
|
// src/commands/studio/keep.ts
|
|
49994
|
-
import { defineCommand as
|
|
50147
|
+
import { defineCommand as defineCommand195 } from "citty";
|
|
49995
50148
|
registerSchema({
|
|
49996
50149
|
command: "studio.keep",
|
|
49997
50150
|
description: "Mark one take as the keeper. For an image this stars it, so the client reviewing the batch sees which one you used. For a CLIP it is the step that puts it in the video library \u2014 until then the clip cannot be used in a canvas, a landing, or an ad.",
|
|
@@ -50001,7 +50154,7 @@ registerSchema({
|
|
|
50001
50154
|
undo: { type: "boolean", description: "Un-star an image, or take a kept clip back out", required: false }
|
|
50002
50155
|
}
|
|
50003
50156
|
});
|
|
50004
|
-
var keepCommand =
|
|
50157
|
+
var keepCommand = defineCommand195({
|
|
50005
50158
|
meta: {
|
|
50006
50159
|
name: "keep",
|
|
50007
50160
|
description: "Mark one take as the keeper. An image gets starred (it was already in the library); a clip gets INGESTED into the video library, which is what makes it usable anywhere else.\n\nExample: baker studio keep j57abc123def456ghi789 --slot 2\nExample: baker studio keep j57abc123def456ghi789 --slot 2 --undo"
|
|
@@ -50052,7 +50205,7 @@ var keepCommand = defineCommand194({
|
|
|
50052
50205
|
});
|
|
50053
50206
|
|
|
50054
50207
|
// src/commands/studio/list.ts
|
|
50055
|
-
import { defineCommand as
|
|
50208
|
+
import { defineCommand as defineCommand196 } from "citty";
|
|
50056
50209
|
registerSchema({
|
|
50057
50210
|
command: "studio.list",
|
|
50058
50211
|
description: "Recent Studio batches for THIS conversation, newest first \u2014 what you have already generated, so you re-use a take instead of paying for it twice. `--all` widens it to everything the company generated, including what people ran themselves in the dashboard.",
|
|
@@ -50063,7 +50216,7 @@ registerSchema({
|
|
|
50063
50216
|
full: { type: "boolean", description: "Include settings, references and attribution", required: false }
|
|
50064
50217
|
}
|
|
50065
50218
|
});
|
|
50066
|
-
var listCommand16 =
|
|
50219
|
+
var listCommand16 = defineCommand196({
|
|
50067
50220
|
meta: {
|
|
50068
50221
|
name: "list",
|
|
50069
50222
|
description: "Recent Studio batches, newest first. Scoped to this conversation unless you pass --all.\n\nExample: baker studio list\nExample: baker studio list --kind video --limit 5\nExample: baker studio list --all # includes batches the client ran in the dashboard"
|
|
@@ -50097,7 +50250,7 @@ var listCommand16 = defineCommand195({
|
|
|
50097
50250
|
});
|
|
50098
50251
|
|
|
50099
50252
|
// src/commands/studio/models.ts
|
|
50100
|
-
import { defineCommand as
|
|
50253
|
+
import { defineCommand as defineCommand197 } from "citty";
|
|
50101
50254
|
var DESCRIPTION2 = "What each Studio model actually accepts: its shapes, resolutions, clip lengths, prompt character cap, how many reference images it takes, and which knobs it has. Read this before a batch you care about \u2014 the models disagree far more than they look like they do, and a setting the chosen model does not have is REFUSED, not ignored.";
|
|
50102
50255
|
registerSchema({
|
|
50103
50256
|
command: "studio.models",
|
|
@@ -50184,7 +50337,7 @@ function buildModelCards(kind, model) {
|
|
|
50184
50337
|
const selected = model ? ids.filter((id) => id === model) : ids;
|
|
50185
50338
|
return selected.map((id) => build(id));
|
|
50186
50339
|
}
|
|
50187
|
-
var modelsCommand =
|
|
50340
|
+
var modelsCommand = defineCommand197({
|
|
50188
50341
|
meta: {
|
|
50189
50342
|
name: "models",
|
|
50190
50343
|
description: `${DESCRIPTION2}
|
|
@@ -50231,13 +50384,13 @@ Examples:
|
|
|
50231
50384
|
});
|
|
50232
50385
|
|
|
50233
50386
|
// src/commands/studio/skills.ts
|
|
50234
|
-
import { defineCommand as
|
|
50387
|
+
import { defineCommand as defineCommand198 } from "citty";
|
|
50235
50388
|
registerSchema({
|
|
50236
50389
|
command: "studio.skills",
|
|
50237
50390
|
description: "The craft directions `studio generate --skill <id>` accepts. Each one carries directed art direction plus the model, shape and take count it wants, so you pick a look by name instead of writing the boilerplate yourself.",
|
|
50238
50391
|
args: {}
|
|
50239
50392
|
});
|
|
50240
|
-
var skillsCommand =
|
|
50393
|
+
var skillsCommand = defineCommand198({
|
|
50241
50394
|
meta: {
|
|
50242
50395
|
name: "skills",
|
|
50243
50396
|
description: "List the craft directions available to `baker studio generate --skill <id>` \u2014 what each one is for, whether it wants a reference image, and the model/shape/count it defaults to.\n\nExample: baker studio skills"
|
|
@@ -50261,7 +50414,7 @@ var skillsCommand = defineCommand197({
|
|
|
50261
50414
|
});
|
|
50262
50415
|
|
|
50263
50416
|
// src/commands/studio/index.ts
|
|
50264
|
-
var studioCommand =
|
|
50417
|
+
var studioCommand = defineCommand199({
|
|
50265
50418
|
meta: {
|
|
50266
50419
|
name: "studio",
|
|
50267
50420
|
description: `Make new imagery and clips. Every batch is recorded and shows up in the dashboard Studio for the client to review, labelled with this conversation.
|
|
@@ -50304,10 +50457,10 @@ Full guide: __tooling__/docs/tools/baker/studio.md`
|
|
|
50304
50457
|
});
|
|
50305
50458
|
|
|
50306
50459
|
// src/commands/tag-manager/index.ts
|
|
50307
|
-
import { defineCommand as
|
|
50460
|
+
import { defineCommand as defineCommand203 } from "citty";
|
|
50308
50461
|
|
|
50309
50462
|
// src/commands/tag-manager/draft.ts
|
|
50310
|
-
import { defineCommand as
|
|
50463
|
+
import { defineCommand as defineCommand200 } from "citty";
|
|
50311
50464
|
|
|
50312
50465
|
// src/commands/tag-manager/shared.ts
|
|
50313
50466
|
import { readFileSync as readFileSync15 } from "fs";
|
|
@@ -50430,13 +50583,13 @@ registerSchema({
|
|
|
50430
50583
|
chat: { type: "string", description: CHAT_READ_ARG.description, required: false }
|
|
50431
50584
|
}
|
|
50432
50585
|
});
|
|
50433
|
-
var draftCommand4 =
|
|
50586
|
+
var draftCommand4 = defineCommand200({
|
|
50434
50587
|
meta: {
|
|
50435
50588
|
name: "draft",
|
|
50436
50589
|
description: "List, show, amend, remove, or clear staged Tag Manager changes for this chat. `list` and `show` take --chat <id> to read an earlier chat's changes instead."
|
|
50437
50590
|
},
|
|
50438
50591
|
subCommands: {
|
|
50439
|
-
list:
|
|
50592
|
+
list: defineCommand200({
|
|
50440
50593
|
meta: {
|
|
50441
50594
|
name: "list",
|
|
50442
50595
|
description: "Review everything staged on this chat (--json for the raw envelope)"
|
|
@@ -50449,7 +50602,7 @@ var draftCommand4 = defineCommand199({
|
|
|
50449
50602
|
await draftList2(args.json === true, args.chat);
|
|
50450
50603
|
}
|
|
50451
50604
|
}),
|
|
50452
|
-
show:
|
|
50605
|
+
show: defineCommand200({
|
|
50453
50606
|
meta: {
|
|
50454
50607
|
name: "show",
|
|
50455
50608
|
description: "Print the full staged payload for one change \u2014 the receipt to verify it looks right before publish (never truncated)."
|
|
@@ -50466,7 +50619,7 @@ var draftCommand4 = defineCommand199({
|
|
|
50466
50619
|
);
|
|
50467
50620
|
}
|
|
50468
50621
|
}),
|
|
50469
|
-
amend:
|
|
50622
|
+
amend: defineCommand200({
|
|
50470
50623
|
meta: {
|
|
50471
50624
|
name: "amend",
|
|
50472
50625
|
description: "Update a staged change in place \u2014 merges a JSON patch into its payload (objects deep-merge, null deletes a key, arrays/scalars replace) and re-validates. Use this instead of remove + re-create."
|
|
@@ -50483,7 +50636,7 @@ var draftCommand4 = defineCommand199({
|
|
|
50483
50636
|
});
|
|
50484
50637
|
}
|
|
50485
50638
|
}),
|
|
50486
|
-
remove:
|
|
50639
|
+
remove: defineCommand200({
|
|
50487
50640
|
meta: { name: "remove", description: "Remove one staged change (cascades to anything depending on it)" },
|
|
50488
50641
|
args: { ref: { type: "positional", description: "Staged ref (gtm_temp_*) or target", required: false } },
|
|
50489
50642
|
run: async ({ args }) => {
|
|
@@ -50492,7 +50645,7 @@ var draftCommand4 = defineCommand199({
|
|
|
50492
50645
|
});
|
|
50493
50646
|
}
|
|
50494
50647
|
}),
|
|
50495
|
-
clear:
|
|
50648
|
+
clear: defineCommand200({
|
|
50496
50649
|
meta: { name: "clear", description: "Discard all Tag Manager changes staged on this chat" },
|
|
50497
50650
|
run: async () => {
|
|
50498
50651
|
await draftAction3("/api/tag-manager/draft/clear", {});
|
|
@@ -50502,7 +50655,7 @@ var draftCommand4 = defineCommand199({
|
|
|
50502
50655
|
});
|
|
50503
50656
|
|
|
50504
50657
|
// src/commands/tag-manager/read.ts
|
|
50505
|
-
import { defineCommand as
|
|
50658
|
+
import { defineCommand as defineCommand201 } from "citty";
|
|
50506
50659
|
registerSchema({
|
|
50507
50660
|
command: "tagManager.containers",
|
|
50508
50661
|
description: "List the Google Tag Manager containers this company's connection can reach. Every container the company connected is flagged `connected: true` \u2014 there can be several, and Baker may read and change all of them. Start here to confirm which containers you are managing.",
|
|
@@ -50543,7 +50696,7 @@ function containersHints(containers) {
|
|
|
50543
50696
|
}))
|
|
50544
50697
|
});
|
|
50545
50698
|
}
|
|
50546
|
-
var containersCommand =
|
|
50699
|
+
var containersCommand = defineCommand201({
|
|
50547
50700
|
meta: {
|
|
50548
50701
|
name: "containers",
|
|
50549
50702
|
description: `List Tag Manager containers reachable by this company's connection.
|
|
@@ -50560,7 +50713,7 @@ Start here:
|
|
|
50560
50713
|
}
|
|
50561
50714
|
}
|
|
50562
50715
|
});
|
|
50563
|
-
var readCommand =
|
|
50716
|
+
var readCommand = defineCommand201({
|
|
50564
50717
|
meta: {
|
|
50565
50718
|
name: "read",
|
|
50566
50719
|
description: `Read the current contents of the Tag Manager container \u2014 always do this before staging changes.
|
|
@@ -50602,7 +50755,7 @@ Examples:
|
|
|
50602
50755
|
});
|
|
50603
50756
|
|
|
50604
50757
|
// src/commands/tag-manager/write-commands.ts
|
|
50605
|
-
import { defineCommand as
|
|
50758
|
+
import { defineCommand as defineCommand202 } from "citty";
|
|
50606
50759
|
var CONTAINER_ARG_DESCRIPTION = "Numeric container id (optional only when one container is connected \u2014 run `baker tag-manager containers`)";
|
|
50607
50760
|
var ENTITIES = [
|
|
50608
50761
|
{
|
|
@@ -50658,10 +50811,10 @@ for (const { entity, noun, createHint } of ENTITIES) {
|
|
|
50658
50811
|
});
|
|
50659
50812
|
}
|
|
50660
50813
|
function entityCommand(entity, noun, example) {
|
|
50661
|
-
return
|
|
50814
|
+
return defineCommand202({
|
|
50662
50815
|
meta: { name: entity, description: `Stage ${noun} changes on this chat's Tag Manager draft` },
|
|
50663
50816
|
subCommands: {
|
|
50664
|
-
create:
|
|
50817
|
+
create: defineCommand202({
|
|
50665
50818
|
meta: {
|
|
50666
50819
|
name: "create",
|
|
50667
50820
|
description: `Stage a new ${noun}
|
|
@@ -50683,7 +50836,7 @@ Examples:
|
|
|
50683
50836
|
});
|
|
50684
50837
|
}
|
|
50685
50838
|
}),
|
|
50686
|
-
update:
|
|
50839
|
+
update: defineCommand202({
|
|
50687
50840
|
meta: {
|
|
50688
50841
|
name: "update",
|
|
50689
50842
|
description: `Stage an update to an existing ${noun} (pass its id or path)`
|
|
@@ -50703,7 +50856,7 @@ Examples:
|
|
|
50703
50856
|
});
|
|
50704
50857
|
}
|
|
50705
50858
|
}),
|
|
50706
|
-
delete:
|
|
50859
|
+
delete: defineCommand202({
|
|
50707
50860
|
meta: { name: "delete", description: `Stage the deletion of a ${noun} (pass its id or path)` },
|
|
50708
50861
|
args: {
|
|
50709
50862
|
id: { type: "positional", description: `${noun} id or path`, required: false },
|
|
@@ -50744,7 +50897,7 @@ function builtinTypes(args) {
|
|
|
50744
50897
|
}
|
|
50745
50898
|
return raw.split(",").map((entry) => entry.trim());
|
|
50746
50899
|
}
|
|
50747
|
-
var builtinCommand =
|
|
50900
|
+
var builtinCommand = defineCommand202({
|
|
50748
50901
|
meta: {
|
|
50749
50902
|
name: "builtin",
|
|
50750
50903
|
description: `Enable or disable built-in variables
|
|
@@ -50754,7 +50907,7 @@ Examples:
|
|
|
50754
50907
|
baker tag-manager builtin disable --types formId`
|
|
50755
50908
|
},
|
|
50756
50909
|
subCommands: {
|
|
50757
|
-
enable:
|
|
50910
|
+
enable: defineCommand202({
|
|
50758
50911
|
meta: { name: "enable", description: "Stage enabling built-in variables" },
|
|
50759
50912
|
args: {
|
|
50760
50913
|
types: { type: "string", description: "Comma-separated types", required: false },
|
|
@@ -50768,7 +50921,7 @@ Examples:
|
|
|
50768
50921
|
});
|
|
50769
50922
|
}
|
|
50770
50923
|
}),
|
|
50771
|
-
disable:
|
|
50924
|
+
disable: defineCommand202({
|
|
50772
50925
|
meta: { name: "disable", description: "Stage disabling built-in variables" },
|
|
50773
50926
|
args: {
|
|
50774
50927
|
types: { type: "string", description: "Comma-separated types", required: false },
|
|
@@ -50786,7 +50939,7 @@ Examples:
|
|
|
50786
50939
|
});
|
|
50787
50940
|
|
|
50788
50941
|
// src/commands/tag-manager/index.ts
|
|
50789
|
-
var tagManagerCommand =
|
|
50942
|
+
var tagManagerCommand = defineCommand203({
|
|
50790
50943
|
meta: {
|
|
50791
50944
|
name: "tag-manager",
|
|
50792
50945
|
description: `Read and change what lives inside the client's Google Tag Manager container \u2014 tags, triggers, variables, folders and built-in variables.
|
|
@@ -50823,7 +50976,7 @@ Full guide: __tooling__/docs/tools/baker/tag-manager.md`
|
|
|
50823
50976
|
});
|
|
50824
50977
|
|
|
50825
50978
|
// src/commands/tags/index.ts
|
|
50826
|
-
import { defineCommand as
|
|
50979
|
+
import { defineCommand as defineCommand204 } from "citty";
|
|
50827
50980
|
|
|
50828
50981
|
// src/commands/tags/shared.ts
|
|
50829
50982
|
function failApi3(err) {
|
|
@@ -50892,7 +51045,7 @@ async function listTags(json) {
|
|
|
50892
51045
|
var listArgs9 = {
|
|
50893
51046
|
json: { type: "boolean", description: "Print the raw JSON envelope instead of the readable list" }
|
|
50894
51047
|
};
|
|
50895
|
-
var listCommand17 =
|
|
51048
|
+
var listCommand17 = defineCommand204({
|
|
50896
51049
|
meta: {
|
|
50897
51050
|
name: "list",
|
|
50898
51051
|
description: "Effective tags for this chat (production + staged), with each tag's full readable config (secrets excluded) \u2014 reuse a stored value to pre-fill a change rather than asking the user. Refs printed here are what flow side-effect tagIds should use. Example: baker tags list"
|
|
@@ -50911,7 +51064,7 @@ async function listDraft3(chat) {
|
|
|
50911
51064
|
failApi3(err);
|
|
50912
51065
|
}
|
|
50913
51066
|
}
|
|
50914
|
-
var draftCommand5 =
|
|
51067
|
+
var draftCommand5 = defineCommand204({
|
|
50915
51068
|
meta: {
|
|
50916
51069
|
name: "draft",
|
|
50917
51070
|
description: "Review the tag changes staged in this chat (read-only). Staged changes were approved via request_tag_input and apply when the chat is published; to amend or drop one, propose a follow-up change through the same tool (a delete on a tag_temp_* ref drops the staged create). Takes --chat <id> to read an earlier chat's staged changes instead."
|
|
@@ -50921,7 +51074,7 @@ var draftCommand5 = defineCommand203({
|
|
|
50921
51074
|
await listDraft3(args.chat);
|
|
50922
51075
|
}
|
|
50923
51076
|
});
|
|
50924
|
-
var tagsCommand4 =
|
|
51077
|
+
var tagsCommand4 = defineCommand204({
|
|
50925
51078
|
meta: {
|
|
50926
51079
|
name: "tags",
|
|
50927
51080
|
description: `Read the client's marketing/analytics tags (Meta pixel, GA4, Google Ads, GTM, Clarity, Hotjar, \u2026) \u2014 production tags plus the changes staged in this chat.
|
|
@@ -50950,10 +51103,10 @@ Full guide: __tooling__/docs/tools/baker/tags.md`
|
|
|
50950
51103
|
});
|
|
50951
51104
|
|
|
50952
51105
|
// src/commands/testimonials/index.ts
|
|
50953
|
-
import { defineCommand as
|
|
51106
|
+
import { defineCommand as defineCommand208 } from "citty";
|
|
50954
51107
|
|
|
50955
51108
|
// src/commands/testimonials/get.ts
|
|
50956
|
-
import { defineCommand as
|
|
51109
|
+
import { defineCommand as defineCommand205 } from "citty";
|
|
50957
51110
|
registerSchema({
|
|
50958
51111
|
command: "testimonials.get",
|
|
50959
51112
|
description: "Get a single testimonial by ID",
|
|
@@ -50961,7 +51114,7 @@ registerSchema({
|
|
|
50961
51114
|
id: { type: "string", description: "Testimonial ID", required: true }
|
|
50962
51115
|
}
|
|
50963
51116
|
});
|
|
50964
|
-
var getCommand6 =
|
|
51117
|
+
var getCommand6 = defineCommand205({
|
|
50965
51118
|
meta: { name: "get", description: "Get a single testimonial by ID. Example: baker testimonials get j571abc123" },
|
|
50966
51119
|
args: {
|
|
50967
51120
|
id: { type: "positional", description: "Testimonial ID", required: false },
|
|
@@ -50998,7 +51151,7 @@ var getCommand6 = defineCommand204({
|
|
|
50998
51151
|
});
|
|
50999
51152
|
|
|
51000
51153
|
// src/commands/testimonials/list.ts
|
|
51001
|
-
import { defineCommand as
|
|
51154
|
+
import { defineCommand as defineCommand206 } from "citty";
|
|
51002
51155
|
|
|
51003
51156
|
// src/commands/testimonials/emptyCorpusHints.ts
|
|
51004
51157
|
function resolveEmptyReason({
|
|
@@ -51133,7 +51286,7 @@ function buildListParams(args) {
|
|
|
51133
51286
|
}
|
|
51134
51287
|
return params;
|
|
51135
51288
|
}
|
|
51136
|
-
var listCommand18 =
|
|
51289
|
+
var listCommand18 = defineCommand206({
|
|
51137
51290
|
meta: {
|
|
51138
51291
|
name: "list",
|
|
51139
51292
|
description: "List testimonials with optional filters. Example: baker testimonials list --source google --sentiment positive"
|
|
@@ -51185,7 +51338,7 @@ var listCommand18 = defineCommand205({
|
|
|
51185
51338
|
});
|
|
51186
51339
|
|
|
51187
51340
|
// src/commands/testimonials/search.ts
|
|
51188
|
-
import { defineCommand as
|
|
51341
|
+
import { defineCommand as defineCommand207 } from "citty";
|
|
51189
51342
|
var FILTER_FLAGS2 = ["source", "rating-min", "rating-max", "status", "sentiment", "language", "tags"];
|
|
51190
51343
|
function languageBiasHint(results, requestedLanguage) {
|
|
51191
51344
|
if (requestedLanguage) {
|
|
@@ -51264,7 +51417,7 @@ function buildSearchRequest(query, args) {
|
|
|
51264
51417
|
}
|
|
51265
51418
|
return body;
|
|
51266
51419
|
}
|
|
51267
|
-
var searchCommand3 =
|
|
51420
|
+
var searchCommand3 = defineCommand207({
|
|
51268
51421
|
meta: {
|
|
51269
51422
|
name: "search",
|
|
51270
51423
|
description: "Semantic search testimonials by text query. Uses hybrid BM25 + vector + reranking. Example: baker testimonials search 'great service' --rating-min 4"
|
|
@@ -51328,7 +51481,7 @@ var searchCommand3 = defineCommand206({
|
|
|
51328
51481
|
var tagsCommand5 = makeTagsCommand("testimonials", "testimonial", "/api/testimonials/tags");
|
|
51329
51482
|
|
|
51330
51483
|
// src/commands/testimonials/index.ts
|
|
51331
|
-
var testimonialsCommand =
|
|
51484
|
+
var testimonialsCommand = defineCommand208({
|
|
51332
51485
|
meta: {
|
|
51333
51486
|
name: "testimonials",
|
|
51334
51487
|
description: `Find and browse testimonials in Baker. Subcommands: search, get, list, tags.
|
|
@@ -51350,10 +51503,10 @@ Full guide: __tooling__/docs/tools/baker/testimonials.md`
|
|
|
51350
51503
|
});
|
|
51351
51504
|
|
|
51352
51505
|
// src/commands/videos/index.ts
|
|
51353
|
-
import { defineCommand as
|
|
51506
|
+
import { defineCommand as defineCommand215 } from "citty";
|
|
51354
51507
|
|
|
51355
51508
|
// src/commands/videos/delete.ts
|
|
51356
|
-
import { defineCommand as
|
|
51509
|
+
import { defineCommand as defineCommand209 } from "citty";
|
|
51357
51510
|
registerSchema({
|
|
51358
51511
|
command: "videos.delete",
|
|
51359
51512
|
description: "Delete a video by ID",
|
|
@@ -51367,7 +51520,7 @@ registerSchema({
|
|
|
51367
51520
|
}
|
|
51368
51521
|
}
|
|
51369
51522
|
});
|
|
51370
|
-
var deleteCommand4 =
|
|
51523
|
+
var deleteCommand4 = defineCommand209({
|
|
51371
51524
|
meta: {
|
|
51372
51525
|
name: "delete",
|
|
51373
51526
|
description: "Delete a video by ID. Use --dry-run to preview. Example: baker videos delete j571abc123 --dry-run"
|
|
@@ -51408,7 +51561,7 @@ var deleteCommand4 = defineCommand208({
|
|
|
51408
51561
|
});
|
|
51409
51562
|
|
|
51410
51563
|
// src/commands/videos/get.ts
|
|
51411
|
-
import { defineCommand as
|
|
51564
|
+
import { defineCommand as defineCommand210 } from "citty";
|
|
51412
51565
|
registerSchema({
|
|
51413
51566
|
command: "videos.get",
|
|
51414
51567
|
description: "Get a single video by ID",
|
|
@@ -51416,7 +51569,7 @@ registerSchema({
|
|
|
51416
51569
|
id: { type: "string", description: "Video ID", required: true }
|
|
51417
51570
|
}
|
|
51418
51571
|
});
|
|
51419
|
-
var getCommand7 =
|
|
51572
|
+
var getCommand7 = defineCommand210({
|
|
51420
51573
|
meta: { name: "get", description: "Get a single video by ID. Example: baker videos get j571abc123" },
|
|
51421
51574
|
args: {
|
|
51422
51575
|
id: { type: "positional", description: "Video ID", required: false },
|
|
@@ -51453,7 +51606,7 @@ var getCommand7 = defineCommand209({
|
|
|
51453
51606
|
});
|
|
51454
51607
|
|
|
51455
51608
|
// src/commands/videos/group.ts
|
|
51456
|
-
import { defineCommand as
|
|
51609
|
+
import { defineCommand as defineCommand211 } from "citty";
|
|
51457
51610
|
registerSchema({
|
|
51458
51611
|
command: "videos.group",
|
|
51459
51612
|
description: "List every clip and image that arrived in the same set as this video (carousel slides, one page)",
|
|
@@ -51462,7 +51615,7 @@ registerSchema({
|
|
|
51462
51615
|
"group-key": { type: "string", description: "The set key directly, when you already have it", required: false }
|
|
51463
51616
|
}
|
|
51464
51617
|
});
|
|
51465
|
-
var groupCommand2 =
|
|
51618
|
+
var groupCommand2 = defineCommand211({
|
|
51466
51619
|
meta: {
|
|
51467
51620
|
name: "group",
|
|
51468
51621
|
description: "List every asset that arrived in the same set as this clip \u2014 the other slides of the Instagram post it came from, stills included. A carousel is authored to be read in order, so a clip pulled out of one is usually missing half its meaning. Example: baker videos group <videoId>"
|
|
@@ -51485,7 +51638,7 @@ var groupCommand2 = defineCommand210({
|
|
|
51485
51638
|
import { mkdtemp as mkdtemp3, rm as rm8, stat as stat8 } from "fs/promises";
|
|
51486
51639
|
import { tmpdir as tmpdir4 } from "os";
|
|
51487
51640
|
import path40 from "path";
|
|
51488
|
-
import { defineCommand as
|
|
51641
|
+
import { defineCommand as defineCommand212 } from "citty";
|
|
51489
51642
|
|
|
51490
51643
|
// src/lib/streamUpload.ts
|
|
51491
51644
|
import { createHash as createHash2 } from "crypto";
|
|
@@ -51649,7 +51802,7 @@ registerSchema({
|
|
|
51649
51802
|
"dry-run": { type: "boolean", description: "Preview the operation without executing", required: false }
|
|
51650
51803
|
}
|
|
51651
51804
|
});
|
|
51652
|
-
var ingestCommand2 =
|
|
51805
|
+
var ingestCommand2 = defineCommand212({
|
|
51653
51806
|
meta: {
|
|
51654
51807
|
name: "ingest",
|
|
51655
51808
|
description: "Add a video to the library from a URL. A direct file URL is handed straight to Baker, which fetches it. A page URL (YouTube, TikTok, Vimeo, Instagram) is downloaded here first, then uploaded \u2014 and a direct URL that Baker cannot fetch falls back to that same path automatically.\n\nExample: baker videos ingest https://www.youtube.com/watch?v=abc123"
|
|
@@ -51911,7 +52064,7 @@ async function uploadToAssetStore(filePath, sizeBytes) {
|
|
|
51911
52064
|
}
|
|
51912
52065
|
|
|
51913
52066
|
// src/commands/videos/search.ts
|
|
51914
|
-
import { defineCommand as
|
|
52067
|
+
import { defineCommand as defineCommand213 } from "citty";
|
|
51915
52068
|
registerSchema({
|
|
51916
52069
|
command: "videos.search",
|
|
51917
52070
|
description: "Search videos by text query. Only returns ready videos.",
|
|
@@ -51921,7 +52074,7 @@ registerSchema({
|
|
|
51921
52074
|
tags: { type: "string", description: "Comma-separated tags to filter by", required: false }
|
|
51922
52075
|
}
|
|
51923
52076
|
});
|
|
51924
|
-
var searchCommand4 =
|
|
52077
|
+
var searchCommand4 = defineCommand213({
|
|
51925
52078
|
meta: {
|
|
51926
52079
|
name: "search",
|
|
51927
52080
|
description: "Semantic search videos by text query. Uses hybrid BM25 + vector + reranking. Example: baker videos search 'product demo' --tags tutorial"
|
|
@@ -51973,7 +52126,7 @@ var tagsCommand6 = makeTagsCommand("videos", "video", "/api/videos/tags");
|
|
|
51973
52126
|
// src/commands/videos/upload.ts
|
|
51974
52127
|
import { readFile as readFile26, stat as stat9 } from "fs/promises";
|
|
51975
52128
|
import { basename as basename3, extname as extname4 } from "path";
|
|
51976
|
-
import { defineCommand as
|
|
52129
|
+
import { defineCommand as defineCommand214 } from "citty";
|
|
51977
52130
|
var MIME_MAP = {
|
|
51978
52131
|
".mp4": "video/mp4",
|
|
51979
52132
|
".mov": "video/quicktime",
|
|
@@ -52015,7 +52168,7 @@ function detectContentType(filePath) {
|
|
|
52015
52168
|
function isRemoteUrl3(value) {
|
|
52016
52169
|
return /^https?:\/\//i.test(value);
|
|
52017
52170
|
}
|
|
52018
|
-
var uploadCommand2 =
|
|
52171
|
+
var uploadCommand2 = defineCommand214({
|
|
52019
52172
|
meta: {
|
|
52020
52173
|
name: "upload",
|
|
52021
52174
|
description: "Upload a video to Baker \u2014 accepts a local file path OR a remote http(s) URL.\n\nLocal: auto-detects content type and uploads via Mux direct upload.\nRemote: hands off to `videos ingest` (direct fetch, or download-then-upload for a YouTube/TikTok/Vimeo page).\n\nExamples:\n baker videos upload ./demo.mp4\n baker videos upload https://www.youtube.com/watch?v=abc123"
|
|
@@ -52099,7 +52252,7 @@ var uploadCommand2 = defineCommand213({
|
|
|
52099
52252
|
});
|
|
52100
52253
|
|
|
52101
52254
|
// src/commands/videos/index.ts
|
|
52102
|
-
var videosCommand =
|
|
52255
|
+
var videosCommand = defineCommand215({
|
|
52103
52256
|
meta: {
|
|
52104
52257
|
name: "videos",
|
|
52105
52258
|
description: `Find and manage videos in Baker. Subcommands: search, get, upload, ingest, delete, tags.
|
|
@@ -52126,10 +52279,10 @@ Full guide: __tooling__/docs/tools/baker/videos.md`
|
|
|
52126
52279
|
});
|
|
52127
52280
|
|
|
52128
52281
|
// src/commands/winning-ads/index.ts
|
|
52129
|
-
import { defineCommand as
|
|
52282
|
+
import { defineCommand as defineCommand228 } from "citty";
|
|
52130
52283
|
|
|
52131
52284
|
// src/commands/winning-ads/advertisers.ts
|
|
52132
|
-
import { defineCommand as
|
|
52285
|
+
import { defineCommand as defineCommand216 } from "citty";
|
|
52133
52286
|
|
|
52134
52287
|
// src/commands/winning-ads/shared.ts
|
|
52135
52288
|
function splitList2(value) {
|
|
@@ -52182,7 +52335,7 @@ function advertiserNormalizer(record, full) {
|
|
|
52182
52335
|
last_synced_at: record.last_synced_at ?? null
|
|
52183
52336
|
};
|
|
52184
52337
|
}
|
|
52185
|
-
var advertisersCommand2 =
|
|
52338
|
+
var advertisersCommand2 = defineCommand216({
|
|
52186
52339
|
meta: {
|
|
52187
52340
|
name: "advertisers",
|
|
52188
52341
|
description: 'List corpus advertisers by name or domain. Find your own advertiser for --exclude-advertiser, or a competitor for --advertiser-id / winners. Example: baker winning-ads advertisers "Deel" --output md'
|
|
@@ -52240,7 +52393,7 @@ var advertisersCommand2 = defineCommand215({
|
|
|
52240
52393
|
});
|
|
52241
52394
|
|
|
52242
52395
|
// src/commands/winning-ads/brief.ts
|
|
52243
|
-
import { defineCommand as
|
|
52396
|
+
import { defineCommand as defineCommand217 } from "citty";
|
|
52244
52397
|
registerSchema({
|
|
52245
52398
|
command: "winning-ads.brief",
|
|
52246
52399
|
description: "Generate a creative brief grounded in strategically-similar winning ads. Optionally describe the target creative with --dna (JSON) and steer with --notes.",
|
|
@@ -52286,7 +52439,7 @@ function parseDna(raw) {
|
|
|
52286
52439
|
}
|
|
52287
52440
|
return parsed;
|
|
52288
52441
|
}
|
|
52289
|
-
var briefCommand =
|
|
52442
|
+
var briefCommand = defineCommand217({
|
|
52290
52443
|
meta: {
|
|
52291
52444
|
name: "brief",
|
|
52292
52445
|
description: `Generate a creative brief from winning references. Example: baker winning-ads brief --dna '{"angle":"cost savings"}' --notes "B2B, LinkedIn video" --k 8`
|
|
@@ -52322,7 +52475,7 @@ var briefCommand = defineCommand216({
|
|
|
52322
52475
|
});
|
|
52323
52476
|
|
|
52324
52477
|
// src/commands/winning-ads/content.ts
|
|
52325
|
-
import { defineCommand as
|
|
52478
|
+
import { defineCommand as defineCommand218 } from "citty";
|
|
52326
52479
|
registerSchema({
|
|
52327
52480
|
command: "winning-ads.content",
|
|
52328
52481
|
description: "Read what's INSIDE one winning ad: the spoken transcript, the on-screen text, and the ad copy. Use this after `search`/`winners`/`feed` return a shortlist \u2014 pass an ad_id to understand a reference before reproducing it. Add --full for speech, pacing, and soundtrack detail. Video ads carry the transcript/on-screen text; static ads carry only the copy.",
|
|
@@ -52335,7 +52488,7 @@ registerSchema({
|
|
|
52335
52488
|
}
|
|
52336
52489
|
}
|
|
52337
52490
|
});
|
|
52338
|
-
var contentCommand =
|
|
52491
|
+
var contentCommand = defineCommand218({
|
|
52339
52492
|
meta: {
|
|
52340
52493
|
name: "content",
|
|
52341
52494
|
description: "Read the transcript + on-screen text + copy of one winning ad. Example: baker winning-ads content adg_123 --platform meta --full --output md"
|
|
@@ -52384,7 +52537,7 @@ var contentCommand = defineCommand217({
|
|
|
52384
52537
|
});
|
|
52385
52538
|
|
|
52386
52539
|
// src/commands/winning-ads/feed.ts
|
|
52387
|
-
import { defineCommand as
|
|
52540
|
+
import { defineCommand as defineCommand219 } from "citty";
|
|
52388
52541
|
function buildFeedParams(input) {
|
|
52389
52542
|
const params = {};
|
|
52390
52543
|
const advertiser = splitList2(input.advertiser);
|
|
@@ -52436,7 +52589,7 @@ registerSchema({
|
|
|
52436
52589
|
format: { type: "string", description: "Comma-separated formats to include (e.g. static,video)", required: false }
|
|
52437
52590
|
}
|
|
52438
52591
|
});
|
|
52439
|
-
var feedCommand =
|
|
52592
|
+
var feedCommand = defineCommand219({
|
|
52440
52593
|
meta: {
|
|
52441
52594
|
name: "feed",
|
|
52442
52595
|
description: "Winners across every brand you follow (browse, then trim per advertiser). Example: baker winning-ads feed --per-advertiser 5 --output md"
|
|
@@ -52521,7 +52674,7 @@ var feedCommand = defineCommand218({
|
|
|
52521
52674
|
});
|
|
52522
52675
|
|
|
52523
52676
|
// src/commands/winning-ads/follow.ts
|
|
52524
|
-
import { defineCommand as
|
|
52677
|
+
import { defineCommand as defineCommand220 } from "citty";
|
|
52525
52678
|
var PLATFORMS = ["meta", "linkedin"];
|
|
52526
52679
|
registerSchema({
|
|
52527
52680
|
command: "winning-ads.follow",
|
|
@@ -52536,7 +52689,7 @@ registerSchema({
|
|
|
52536
52689
|
label: { type: "string", description: "Optional display label (defaults to the resolved name)", required: false }
|
|
52537
52690
|
}
|
|
52538
52691
|
});
|
|
52539
|
-
var followCommand =
|
|
52692
|
+
var followCommand = defineCommand220({
|
|
52540
52693
|
meta: {
|
|
52541
52694
|
name: "follow",
|
|
52542
52695
|
description: 'Follow a brand to track ALL its ads \u2014 every platform and country. --platform is how we read your input, not a limit. A domain tracks both Meta + LinkedIn. Example: baker winning-ads follow "deel.com" --platform meta'
|
|
@@ -52583,7 +52736,7 @@ var followCommand = defineCommand219({
|
|
|
52583
52736
|
});
|
|
52584
52737
|
|
|
52585
52738
|
// src/commands/winning-ads/follow-competitors.ts
|
|
52586
|
-
import { defineCommand as
|
|
52739
|
+
import { defineCommand as defineCommand221 } from "citty";
|
|
52587
52740
|
var PLATFORMS2 = ["meta", "linkedin"];
|
|
52588
52741
|
var BATCH_TIMEOUT_MS = 3e5;
|
|
52589
52742
|
function buildFollowBatchBody(input) {
|
|
@@ -52616,7 +52769,7 @@ registerSchema({
|
|
|
52616
52769
|
}
|
|
52617
52770
|
}
|
|
52618
52771
|
});
|
|
52619
|
-
var followCompetitorsCommand =
|
|
52772
|
+
var followCompetitorsCommand = defineCommand221({
|
|
52620
52773
|
meta: {
|
|
52621
52774
|
name: "follow-competitors",
|
|
52622
52775
|
description: 'Follow many brands at once by domain \u2014 add every competitor in one call. Example: baker winning-ads follow-competitors "deel.com,notion.so,hubspot.com"'
|
|
@@ -52691,7 +52844,7 @@ var followCompetitorsCommand = defineCommand220({
|
|
|
52691
52844
|
});
|
|
52692
52845
|
|
|
52693
52846
|
// src/commands/winning-ads/following.ts
|
|
52694
|
-
import { defineCommand as
|
|
52847
|
+
import { defineCommand as defineCommand222 } from "citty";
|
|
52695
52848
|
registerSchema({
|
|
52696
52849
|
command: "winning-ads.following",
|
|
52697
52850
|
description: "List the brands you follow in your ad-dna library, with each one's status (ready vs still adding) and cached ad counts. A brand still adding has counts that are a lie in progress; one with `discovery_failed` has counts that are short because we couldn't finish looking, which is not the same as it running no ads.",
|
|
@@ -52745,7 +52898,7 @@ function followingNormalizer(record, full) {
|
|
|
52745
52898
|
platforms: Array.isArray(record.platforms) ? record.platforms : []
|
|
52746
52899
|
};
|
|
52747
52900
|
}
|
|
52748
|
-
var followingCommand =
|
|
52901
|
+
var followingCommand = defineCommand222({
|
|
52749
52902
|
meta: {
|
|
52750
52903
|
name: "following",
|
|
52751
52904
|
description: "List brands you follow, with status (ready / adding\u2026) and cached counts. A brand's counts are only final once it is ready. Example: baker winning-ads following --output md"
|
|
@@ -52781,7 +52934,7 @@ var followingCommand = defineCommand221({
|
|
|
52781
52934
|
});
|
|
52782
52935
|
|
|
52783
52936
|
// src/commands/winning-ads/patterns.ts
|
|
52784
|
-
import { defineCommand as
|
|
52937
|
+
import { defineCommand as defineCommand223 } from "citty";
|
|
52785
52938
|
registerSchema({
|
|
52786
52939
|
command: "winning-ads.patterns",
|
|
52787
52940
|
description: "Mine what separates two cohorts of ads: pass a comma-list of winning ad ids (--winners) and a comma-list of weaker ad ids (--duds). Returns the discriminating DNA fields.",
|
|
@@ -52820,7 +52973,7 @@ function discriminatorRow(record) {
|
|
|
52820
52973
|
top_values_duds: Array.isArray(record.top_values_b) ? record.top_values_b.join(", ") : ""
|
|
52821
52974
|
};
|
|
52822
52975
|
}
|
|
52823
|
-
var patternsCommand =
|
|
52976
|
+
var patternsCommand = defineCommand223({
|
|
52824
52977
|
meta: {
|
|
52825
52978
|
name: "patterns",
|
|
52826
52979
|
description: "Discover what separates winning ads from weak ones. Example: baker winning-ads patterns --winners a_1,a_2,a_3 --duds a_9,a_8 --output md"
|
|
@@ -52876,7 +53029,7 @@ var patternsCommand = defineCommand222({
|
|
|
52876
53029
|
});
|
|
52877
53030
|
|
|
52878
53031
|
// src/commands/winning-ads/search.ts
|
|
52879
|
-
import { defineCommand as
|
|
53032
|
+
import { defineCommand as defineCommand224 } from "citty";
|
|
52880
53033
|
registerSchema({
|
|
52881
53034
|
command: "winning-ads.search",
|
|
52882
53035
|
description: "Search the ad-dna corpus of scored winning ads. Returns a lean shortlist (advertiser, summary, scores, media_url) to pick a reference to reproduce.",
|
|
@@ -52984,7 +53137,7 @@ function buildSearchBody2(args) {
|
|
|
52984
53137
|
}
|
|
52985
53138
|
return body;
|
|
52986
53139
|
}
|
|
52987
|
-
var searchCommand5 =
|
|
53140
|
+
var searchCommand5 = defineCommand224({
|
|
52988
53141
|
meta: {
|
|
52989
53142
|
name: "search",
|
|
52990
53143
|
description: "Search winning reference ads. Example: baker winning-ads search 'B2B SaaS before/after AI automation' --platform meta --format static --winner-category winner --exclude-advertiser adv_123 --output md"
|
|
@@ -53099,7 +53252,7 @@ var searchCommand5 = defineCommand223({
|
|
|
53099
53252
|
});
|
|
53100
53253
|
|
|
53101
53254
|
// src/commands/winning-ads/seeds.ts
|
|
53102
|
-
import { defineCommand as
|
|
53255
|
+
import { defineCommand as defineCommand225 } from "citty";
|
|
53103
53256
|
function leanRow(r) {
|
|
53104
53257
|
return {
|
|
53105
53258
|
key: r.key,
|
|
@@ -53127,7 +53280,7 @@ function makeSeedCommand(opts) {
|
|
|
53127
53280
|
limit: { type: "number", description: "Max keys 1-100 (default 20)", required: false, default: 20 }
|
|
53128
53281
|
}
|
|
53129
53282
|
});
|
|
53130
|
-
return
|
|
53283
|
+
return defineCommand225({
|
|
53131
53284
|
meta: { name: opts.name, description: opts.description },
|
|
53132
53285
|
args: {
|
|
53133
53286
|
platform: { type: "string", description: "Single platform to segment on", required: false },
|
|
@@ -53176,7 +53329,7 @@ var formatsCommand = makeSeedCommand({
|
|
|
53176
53329
|
});
|
|
53177
53330
|
|
|
53178
53331
|
// src/commands/winning-ads/unfollow.ts
|
|
53179
|
-
import { defineCommand as
|
|
53332
|
+
import { defineCommand as defineCommand226 } from "citty";
|
|
53180
53333
|
registerSchema({
|
|
53181
53334
|
command: "winning-ads.unfollow",
|
|
53182
53335
|
description: "Stop following a brand \u2014 removes it from your ad-dna library by advertiser id.",
|
|
@@ -53184,7 +53337,7 @@ registerSchema({
|
|
|
53184
53337
|
advertiser: { type: "string", description: "Advertiser id to unfollow", required: true }
|
|
53185
53338
|
}
|
|
53186
53339
|
});
|
|
53187
|
-
var unfollowCommand =
|
|
53340
|
+
var unfollowCommand = defineCommand226({
|
|
53188
53341
|
meta: {
|
|
53189
53342
|
name: "unfollow",
|
|
53190
53343
|
description: "Stop following a brand by advertiser id. Example: baker winning-ads unfollow adv_123"
|
|
@@ -53205,7 +53358,7 @@ var unfollowCommand = defineCommand225({
|
|
|
53205
53358
|
});
|
|
53206
53359
|
|
|
53207
53360
|
// src/commands/winning-ads/winners.ts
|
|
53208
|
-
import { defineCommand as
|
|
53361
|
+
import { defineCommand as defineCommand227 } from "citty";
|
|
53209
53362
|
registerSchema({
|
|
53210
53363
|
command: "winning-ads.winners",
|
|
53211
53364
|
description: "Top winning ads for one advertiser id (from `advertisers` or `following`). Returns lean winner cards; add --full for DNA + longevity.",
|
|
@@ -53215,7 +53368,7 @@ registerSchema({
|
|
|
53215
53368
|
platform: { type: "string", description: "Filter to a single platform: meta|linkedin", required: false }
|
|
53216
53369
|
}
|
|
53217
53370
|
});
|
|
53218
|
-
var winnersCommand =
|
|
53371
|
+
var winnersCommand = defineCommand227({
|
|
53219
53372
|
meta: {
|
|
53220
53373
|
name: "winners",
|
|
53221
53374
|
description: "Top winning ads for a specific advertiser id. Example: baker winning-ads winners adv_123 --top 15 --output md"
|
|
@@ -53265,7 +53418,7 @@ var winnersCommand = defineCommand226({
|
|
|
53265
53418
|
});
|
|
53266
53419
|
|
|
53267
53420
|
// src/commands/winning-ads/index.ts
|
|
53268
|
-
var winningAdsCommand =
|
|
53421
|
+
var winningAdsCommand = defineCommand228({
|
|
53269
53422
|
meta: {
|
|
53270
53423
|
name: "winning-ads",
|
|
53271
53424
|
description: `Search the ad-dna corpus of scored "winning" ads for reference creatives to reproduce, and manage the brands your library tracks. Proxied through the Baker backend (BAKER_API_KEY) \u2014 no separate token needed.
|
|
@@ -53503,7 +53656,7 @@ function getCliVersion() {
|
|
|
53503
53656
|
}
|
|
53504
53657
|
|
|
53505
53658
|
// src/cli.ts
|
|
53506
|
-
var main =
|
|
53659
|
+
var main = defineCommand229({
|
|
53507
53660
|
meta: {
|
|
53508
53661
|
name: "baker",
|
|
53509
53662
|
version: getCliVersion(),
|