@koda-sl/baker-cli 0.279.0-dev.1f1c09c80 → 0.281.0-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 +527 -366
- 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";
|
|
@@ -32821,6 +32909,10 @@ var ASKS_FOR_LEGIBLE = /\b(focus on the (number|amount|total|price|figure|text)|
|
|
|
32821
32909
|
function briefWantsLegibleText(show) {
|
|
32822
32910
|
return ASKS_FOR_LEGIBLE.test(show);
|
|
32823
32911
|
}
|
|
32912
|
+
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ÁÉÍÓÚÑ]/;
|
|
32913
|
+
function lineIntroducesSpeaker(line) {
|
|
32914
|
+
return SELF_INTRODUCTION.test(line);
|
|
32915
|
+
}
|
|
32824
32916
|
function endCardWanted(spec) {
|
|
32825
32917
|
if (spec.end_card === false) return false;
|
|
32826
32918
|
return Boolean(spec.brand?.name || spec.brand?.logo);
|
|
@@ -32832,6 +32924,7 @@ function endCardCta(spec) {
|
|
|
32832
32924
|
const closing = (spec.beats[spec.beats.length - 1]?.say ?? "").trim().toLowerCase();
|
|
32833
32925
|
return declared.toLowerCase().replace(/[.!?]$/, "") === closing.replace(/[.!?]$/, "") ? null : declared;
|
|
32834
32926
|
}
|
|
32927
|
+
var AD_CAST_ID = "customer";
|
|
32835
32928
|
function adSpecCastElements(spec, avatar) {
|
|
32836
32929
|
const description = (avatar?.subjectDescription ?? spec.cast?.description)?.trim();
|
|
32837
32930
|
if (!description) return [];
|
|
@@ -32842,7 +32935,10 @@ function adSpecCastElements(spec, avatar) {
|
|
|
32842
32935
|
return [
|
|
32843
32936
|
{
|
|
32844
32937
|
type: "person",
|
|
32845
|
-
label:
|
|
32938
|
+
label: AD_CAST_ID,
|
|
32939
|
+
// Same id the dialogue names as speaker: that pairing is what lets the engine see
|
|
32940
|
+
// the presenter as present in a scene and route it to native audio.
|
|
32941
|
+
cast_id: AD_CAST_ID,
|
|
32846
32942
|
description,
|
|
32847
32943
|
scenes,
|
|
32848
32944
|
// An avatar's identity sheet IS the turnaround the engine would otherwise render,
|
|
@@ -32877,6 +32973,39 @@ function staticTranscript(spec) {
|
|
|
32877
32973
|
}
|
|
32878
32974
|
return out;
|
|
32879
32975
|
}
|
|
32976
|
+
function wantsNativeSpeech(spec, closesOnCard) {
|
|
32977
|
+
if (!spec.cast || spec.voiceover === false) return false;
|
|
32978
|
+
const last = spec.beats.length - 1;
|
|
32979
|
+
const speaking = spec.beats.filter((_, i) => !(closesOnCard && i === last));
|
|
32980
|
+
return speaking.length > 0 && speaking.every((beat) => beat.on_camera === true && beat.cast !== false);
|
|
32981
|
+
}
|
|
32982
|
+
function beatDialogue(spec, beat, window2) {
|
|
32983
|
+
if (spec.voiceover === false) return [];
|
|
32984
|
+
return [
|
|
32985
|
+
{
|
|
32986
|
+
line: beat.say,
|
|
32987
|
+
start_s: window2.start,
|
|
32988
|
+
end_s: window2.end,
|
|
32989
|
+
// `on_camera` is the engine's own switch for "this line is narration" — absent, it
|
|
32990
|
+
// guesses from who is in frame, which is how a still photograph once got lip-synced.
|
|
32991
|
+
// Never true on the closing plate: it is a flat colour card with no one in it, and
|
|
32992
|
+
// saying someone is on camera there sent the engine looking for a mouth to lip-sync
|
|
32993
|
+
// on a picture that has no person.
|
|
32994
|
+
on_camera: beat.on_camera === true && !window2.isClosingCard,
|
|
32995
|
+
// Naming the CAST as speaker is the other half of what sends this beat down the
|
|
32996
|
+
// native path. Left unnamed, the speaker defaults to "voiceover" — a narrator, who is
|
|
32997
|
+
// by definition never on camera — so every beat took the dubbed path: a clip generated
|
|
32998
|
+
// with one mouth and a separate ElevenLabs track laid over it. That is the mismatch
|
|
32999
|
+
// behind every "the mouth does not match" in this ad's history.
|
|
33000
|
+
...window2.nativeSpeech && !window2.isClosingCard ? { speaker: AD_CAST_ID } : {},
|
|
33001
|
+
...spec.voice?.description ? { voice_description: spec.voice.description } : {}
|
|
33002
|
+
}
|
|
33003
|
+
];
|
|
33004
|
+
}
|
|
33005
|
+
function voiceoverMode(spec, nativeSpeech) {
|
|
33006
|
+
if (spec.voiceover === false) return "none";
|
|
33007
|
+
return nativeSpeech ? "on_camera" : "voiceover";
|
|
33008
|
+
}
|
|
32880
33009
|
function adSpecToBlueprint(spec) {
|
|
32881
33010
|
const total = spec.beats.length;
|
|
32882
33011
|
const market = marketFor(spec);
|
|
@@ -32884,6 +33013,7 @@ function adSpecToBlueprint(spec) {
|
|
|
32884
33013
|
const currency = market ? CURRENCY_BY_MARKET[market.toLowerCase()] : void 0;
|
|
32885
33014
|
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
33015
|
const closesOnCard = endCardWanted(spec);
|
|
33016
|
+
const nativeSpeech = wantsNativeSpeech(spec, closesOnCard);
|
|
32887
33017
|
let clock = 0;
|
|
32888
33018
|
const scenes = spec.beats.map((beat, i) => {
|
|
32889
33019
|
const isClosingCard = closesOnCard && i === total - 1;
|
|
@@ -32908,18 +33038,12 @@ function adSpecToBlueprint(spec) {
|
|
|
32908
33038
|
// length to what the provider accepts. An ad emitted none of these until now,
|
|
32909
33039
|
// so every one shipped with a music bed and no sound design at all.
|
|
32910
33040
|
...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
|
-
// saying someone is on camera there told the engine to look for a mouth to
|
|
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
|
-
],
|
|
33041
|
+
dialogue: beatDialogue(spec, beat, {
|
|
33042
|
+
start: Math.round(start * 100) / 100,
|
|
33043
|
+
end: Math.round(clock * 100) / 100,
|
|
33044
|
+
isClosingCard,
|
|
33045
|
+
nativeSpeech
|
|
33046
|
+
}),
|
|
32923
33047
|
motion_prompt: motionPrompt(beat, isClosingCard, place, physics),
|
|
32924
33048
|
start_frame_prompt: isClosingCard ? BRAND_PLATE : `${beat.show}${place}${physics}`
|
|
32925
33049
|
};
|
|
@@ -32929,12 +33053,17 @@ function adSpecToBlueprint(spec) {
|
|
|
32929
33053
|
global: {
|
|
32930
33054
|
transcript: spec.beats.map((b) => b.say).join(" "),
|
|
32931
33055
|
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",
|
|
33056
|
+
mode: voiceoverMode(spec, nativeSpeech),
|
|
32936
33057
|
...spec.voice?.description ? { voice_description: spec.voice.description } : {}
|
|
32937
33058
|
},
|
|
33059
|
+
...spec.cast ? {
|
|
33060
|
+
cast: [
|
|
33061
|
+
{
|
|
33062
|
+
id: AD_CAST_ID,
|
|
33063
|
+
description: (spec.cast.description ?? "the ad's recurring person").trim()
|
|
33064
|
+
}
|
|
33065
|
+
]
|
|
33066
|
+
} : {},
|
|
32938
33067
|
...spec.brand?.name || spec.brand?.logo ? {
|
|
32939
33068
|
branding: {
|
|
32940
33069
|
...spec.brand?.name ? { name: spec.brand.name } : {},
|
|
@@ -33126,6 +33255,9 @@ async function readBrandFromWorkspace(root = ".") {
|
|
|
33126
33255
|
}
|
|
33127
33256
|
return found;
|
|
33128
33257
|
}
|
|
33258
|
+
function svgIsLiveText(svg) {
|
|
33259
|
+
return /<text[\s>]/i.test(svg);
|
|
33260
|
+
}
|
|
33129
33261
|
|
|
33130
33262
|
// src/commands/canvas/composition-path.ts
|
|
33131
33263
|
import { existsSync as existsSync4 } from "fs";
|
|
@@ -33173,7 +33305,7 @@ registerSchema({
|
|
|
33173
33305
|
}
|
|
33174
33306
|
}
|
|
33175
33307
|
});
|
|
33176
|
-
var scaffoldAdCommand =
|
|
33308
|
+
var scaffoldAdCommand = defineCommand105({
|
|
33177
33309
|
meta: {
|
|
33178
33310
|
name: "scaffold-ad",
|
|
33179
33311
|
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>'
|
|
@@ -33265,6 +33397,20 @@ var scaffoldAdCommand = defineCommand104({
|
|
|
33265
33397
|
...filledPalette ? { palette: filledPalette } : {}
|
|
33266
33398
|
};
|
|
33267
33399
|
}
|
|
33400
|
+
const introducesOffCamera = spec.data.beats.map((beat, i) => ({ i, beat })).filter(({ beat }) => beat.on_camera !== true && lineIntroducesSpeaker(beat.say));
|
|
33401
|
+
if (introducesOffCamera.length > 0) {
|
|
33402
|
+
const first = introducesOffCamera[0];
|
|
33403
|
+
writeJson({
|
|
33404
|
+
ok: false,
|
|
33405
|
+
error: {
|
|
33406
|
+
code: "VALIDATION_ERROR",
|
|
33407
|
+
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.`,
|
|
33408
|
+
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".'
|
|
33409
|
+
}
|
|
33410
|
+
});
|
|
33411
|
+
process.exit(1);
|
|
33412
|
+
return;
|
|
33413
|
+
}
|
|
33268
33414
|
const speaksOnCamera = spec.data.beats.some((beat) => beat.on_camera === true);
|
|
33269
33415
|
if (avatar && !avatar.voiceId && speaksOnCamera) {
|
|
33270
33416
|
writeJson({
|
|
@@ -33272,7 +33418,7 @@ var scaffoldAdCommand = defineCommand104({
|
|
|
33272
33418
|
error: {
|
|
33273
33419
|
code: "VALIDATION_ERROR",
|
|
33274
33420
|
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.`,
|
|
33275
|
-
fix: `
|
|
33421
|
+
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.`
|
|
33276
33422
|
}
|
|
33277
33423
|
});
|
|
33278
33424
|
process.exit(1);
|
|
@@ -33292,6 +33438,21 @@ var scaffoldAdCommand = defineCommand104({
|
|
|
33292
33438
|
process.exit(1);
|
|
33293
33439
|
return;
|
|
33294
33440
|
}
|
|
33441
|
+
if (resolvedLogo?.toLowerCase().endsWith(".svg")) {
|
|
33442
|
+
const svg = await readFile16(resolvedLogo, "utf-8").catch(() => "");
|
|
33443
|
+
if (svg && svgIsLiveText(svg)) {
|
|
33444
|
+
writeJson({
|
|
33445
|
+
ok: false,
|
|
33446
|
+
error: {
|
|
33447
|
+
code: "VALIDATION_ERROR",
|
|
33448
|
+
message: `The mark at \`${resolvedLogo}\` draws its wordmark with live \`<text>\`, not outlines. That is a typed stand-in, not a logo: it renders in whatever font the machine happens to have, and the one that shipped this way came out reading "greenle\xE1" in every frame.`,
|
|
33449
|
+
fix: `Ask the client for their real logo file and put it in \`${BRAND_DIR}/logos/\` \u2014 an outlined SVG, or a PNG at 1000px or wider. Do not redraw it.`
|
|
33450
|
+
}
|
|
33451
|
+
});
|
|
33452
|
+
process.exit(1);
|
|
33453
|
+
return;
|
|
33454
|
+
}
|
|
33455
|
+
}
|
|
33295
33456
|
const blueprint = adSpecToBlueprint(spec.data);
|
|
33296
33457
|
const slug = args.slug ?? path24.basename(specPath).replace(/\.[^.]+$/, "");
|
|
33297
33458
|
const outPath = args.out ?? (args.slug ? path24.join("src/creatives", slug, `${slug}.canvas.json`) : path24.join(path24.dirname(specPath), `${slug}.canvas.json`));
|
|
@@ -33424,7 +33585,7 @@ var scaffoldAdCommand = defineCommand104({
|
|
|
33424
33585
|
import { access as access2, cp as cp2, mkdir as mkdir8, readFile as readFile19, rm as rm7, writeFile as writeFile10 } from "fs/promises";
|
|
33425
33586
|
import { tmpdir as tmpdir3 } from "os";
|
|
33426
33587
|
import path26 from "path";
|
|
33427
|
-
import { defineCommand as
|
|
33588
|
+
import { defineCommand as defineCommand106 } from "citty";
|
|
33428
33589
|
|
|
33429
33590
|
// src/engine/scaffold/lib/model-router.ts
|
|
33430
33591
|
var SEEDANCE = "bytedance/seedance-2.0";
|
|
@@ -33869,7 +34030,7 @@ async function runAnalysisPasses(deconstructCanvas, selectModel) {
|
|
|
33869
34030
|
return fail4("deconstruct", e instanceof Error ? e.message : String(e));
|
|
33870
34031
|
}
|
|
33871
34032
|
}
|
|
33872
|
-
var scaffoldVideoCommand =
|
|
34033
|
+
var scaffoldVideoCommand = defineCommand106({
|
|
33873
34034
|
meta: {
|
|
33874
34035
|
name: "scaffold-video",
|
|
33875
34036
|
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`."
|
|
@@ -34179,7 +34340,7 @@ var scaffoldVideoCommand = defineCommand105({
|
|
|
34179
34340
|
// src/commands/canvas/set-prompt.ts
|
|
34180
34341
|
import { readFile as readFile20, writeFile as writeFile11 } from "fs/promises";
|
|
34181
34342
|
import path27 from "path";
|
|
34182
|
-
import { defineCommand as
|
|
34343
|
+
import { defineCommand as defineCommand107 } from "citty";
|
|
34183
34344
|
function setNodePrompt(canvas, nodeId, text2) {
|
|
34184
34345
|
const nodes = canvas?.nodes;
|
|
34185
34346
|
if (!Array.isArray(nodes)) throw new Error("canvas has no nodes array");
|
|
@@ -34194,7 +34355,7 @@ function setNodePrompt(canvas, nodeId, text2) {
|
|
|
34194
34355
|
newNodes[idx] = newNode;
|
|
34195
34356
|
return { ...canvas, nodes: newNodes };
|
|
34196
34357
|
}
|
|
34197
|
-
var setPromptCommand =
|
|
34358
|
+
var setPromptCommand = defineCommand107({
|
|
34198
34359
|
meta: {
|
|
34199
34360
|
name: "set-prompt",
|
|
34200
34361
|
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."
|
|
@@ -34254,8 +34415,8 @@ var setPromptCommand = defineCommand106({
|
|
|
34254
34415
|
// src/commands/canvas/validate.ts
|
|
34255
34416
|
import { readFile as readFile21 } from "fs/promises";
|
|
34256
34417
|
import path28 from "path";
|
|
34257
|
-
import { defineCommand as
|
|
34258
|
-
var validateCommand =
|
|
34418
|
+
import { defineCommand as defineCommand108 } from "citty";
|
|
34419
|
+
var validateCommand = defineCommand108({
|
|
34259
34420
|
meta: {
|
|
34260
34421
|
name: "validate",
|
|
34261
34422
|
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)."
|
|
@@ -34328,7 +34489,7 @@ var validateCommand = defineCommand107({
|
|
|
34328
34489
|
});
|
|
34329
34490
|
|
|
34330
34491
|
// src/commands/canvas/index.ts
|
|
34331
|
-
var canvasCommand =
|
|
34492
|
+
var canvasCommand = defineCommand109({
|
|
34332
34493
|
meta: {
|
|
34333
34494
|
name: "canvas",
|
|
34334
34495
|
description: `Run Baker creative canvas JSON files locally. Local nodes execute in-process; remote nodes POST to the Convex backend gateway.
|
|
@@ -34364,7 +34525,7 @@ Full guide: __tooling__/docs/tools/baker/canvas.md`
|
|
|
34364
34525
|
});
|
|
34365
34526
|
|
|
34366
34527
|
// src/commands/capabilities/index.ts
|
|
34367
|
-
import { defineCommand as
|
|
34528
|
+
import { defineCommand as defineCommand110 } from "citty";
|
|
34368
34529
|
registerSchema({
|
|
34369
34530
|
command: "capabilities",
|
|
34370
34531
|
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.",
|
|
@@ -34407,7 +34568,7 @@ function capabilityHints(surfaces) {
|
|
|
34407
34568
|
}
|
|
34408
34569
|
return hints;
|
|
34409
34570
|
}
|
|
34410
|
-
var runCapabilities =
|
|
34571
|
+
var runCapabilities = defineCommand110({
|
|
34411
34572
|
meta: {
|
|
34412
34573
|
name: "capabilities",
|
|
34413
34574
|
description: `What Baker can and cannot do for this company, before any work starts.
|
|
@@ -34463,7 +34624,7 @@ Full guide: __tooling__/docs/tools/baker/capabilities.md`
|
|
|
34463
34624
|
var capabilitiesCommand = runCapabilities;
|
|
34464
34625
|
|
|
34465
34626
|
// src/commands/chats/index.ts
|
|
34466
|
-
import { defineCommand as
|
|
34627
|
+
import { defineCommand as defineCommand111 } from "citty";
|
|
34467
34628
|
var STATUS_GROUPS = ["active", "archived", "all"];
|
|
34468
34629
|
var REPO_SURFACES = ["knowledge", "company", "brand", "landings", "flows", "creatives"];
|
|
34469
34630
|
function parseBoundedInt(raw, name, min, max) {
|
|
@@ -34485,7 +34646,7 @@ registerSchema({
|
|
|
34485
34646
|
full: { type: "boolean", description: "Include each Session's full change list", required: false, default: false }
|
|
34486
34647
|
}
|
|
34487
34648
|
});
|
|
34488
|
-
var listCommand11 =
|
|
34649
|
+
var listCommand11 = defineCommand111({
|
|
34489
34650
|
meta: { name: "list", description: "List other Sessions on this account, newest first." },
|
|
34490
34651
|
args: {
|
|
34491
34652
|
status: { type: "string", description: "Filter: active|archived|all (default: all)", required: false },
|
|
@@ -34540,7 +34701,7 @@ registerSchema({
|
|
|
34540
34701
|
}
|
|
34541
34702
|
}
|
|
34542
34703
|
});
|
|
34543
|
-
var viewCommand =
|
|
34704
|
+
var viewCommand = defineCommand111({
|
|
34544
34705
|
meta: {
|
|
34545
34706
|
name: "view",
|
|
34546
34707
|
description: "Inspect one Session's full effects \u2014 git content + actions/tags/ads, kickoff, commits."
|
|
@@ -34584,7 +34745,7 @@ registerSchema({
|
|
|
34584
34745
|
}
|
|
34585
34746
|
}
|
|
34586
34747
|
});
|
|
34587
|
-
var transcriptCommand =
|
|
34748
|
+
var transcriptCommand = defineCommand111({
|
|
34588
34749
|
meta: { name: "transcript", description: "Read another Session's conversation." },
|
|
34589
34750
|
args: {
|
|
34590
34751
|
id: { type: "positional", description: "The Session id", required: true },
|
|
@@ -34636,7 +34797,7 @@ registerSchema({
|
|
|
34636
34797
|
}
|
|
34637
34798
|
}
|
|
34638
34799
|
});
|
|
34639
|
-
var diffCommand =
|
|
34800
|
+
var diffCommand = defineCommand111({
|
|
34640
34801
|
meta: { name: "diff", description: "See a published Session's real file-level changes." },
|
|
34641
34802
|
args: {
|
|
34642
34803
|
id: { type: "positional", description: "The Session id", required: true },
|
|
@@ -34680,7 +34841,7 @@ var diffCommand = defineCommand110({
|
|
|
34680
34841
|
}
|
|
34681
34842
|
}
|
|
34682
34843
|
});
|
|
34683
|
-
var chatsCommand =
|
|
34844
|
+
var chatsCommand = defineCommand111({
|
|
34684
34845
|
meta: {
|
|
34685
34846
|
name: "chats",
|
|
34686
34847
|
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.
|
|
@@ -34695,10 +34856,10 @@ Full guide: __tooling__/docs/tools/baker/chats.md`
|
|
|
34695
34856
|
});
|
|
34696
34857
|
|
|
34697
34858
|
// src/commands/creatives/index.ts
|
|
34698
|
-
import { defineCommand as
|
|
34859
|
+
import { defineCommand as defineCommand113 } from "citty";
|
|
34699
34860
|
|
|
34700
34861
|
// src/commands/creatives/publish.ts
|
|
34701
|
-
import { defineCommand as
|
|
34862
|
+
import { defineCommand as defineCommand112 } from "citty";
|
|
34702
34863
|
|
|
34703
34864
|
// src/commands/images/api.ts
|
|
34704
34865
|
import { readFile as readFile22 } from "fs/promises";
|
|
@@ -34845,7 +35006,7 @@ async function publishCreative(args, deps = defaultImageApiDeps) {
|
|
|
34845
35006
|
chatId: chatIdFromEnv2()
|
|
34846
35007
|
});
|
|
34847
35008
|
}
|
|
34848
|
-
var publishCommand =
|
|
35009
|
+
var publishCommand = defineCommand112({
|
|
34849
35010
|
meta: {
|
|
34850
35011
|
name: "publish",
|
|
34851
35012
|
description: "Publish a final static creative image to Baker Creatives and print the creative reference JSON."
|
|
@@ -34903,7 +35064,7 @@ var publishCommand = defineCommand111({
|
|
|
34903
35064
|
});
|
|
34904
35065
|
|
|
34905
35066
|
// src/commands/creatives/index.ts
|
|
34906
|
-
var creativesCommand3 =
|
|
35067
|
+
var creativesCommand3 = defineCommand113({
|
|
34907
35068
|
meta: {
|
|
34908
35069
|
name: "creatives",
|
|
34909
35070
|
description: `Publish static ad creatives as first-class Baker outputs.
|
|
@@ -34920,11 +35081,11 @@ Full guide: __tooling__/docs/tools/baker/creatives.md`
|
|
|
34920
35081
|
});
|
|
34921
35082
|
|
|
34922
35083
|
// src/commands/flows/index.ts
|
|
34923
|
-
import { defineCommand as
|
|
35084
|
+
import { defineCommand as defineCommand118 } from "citty";
|
|
34924
35085
|
|
|
34925
35086
|
// src/commands/flows/add.ts
|
|
34926
35087
|
import { randomUUID } from "crypto";
|
|
34927
|
-
import { defineCommand as
|
|
35088
|
+
import { defineCommand as defineCommand114 } from "citty";
|
|
34928
35089
|
|
|
34929
35090
|
// src/commands/flows/shared.ts
|
|
34930
35091
|
import { existsSync as existsSync5, readdirSync as readdirSync2, readFileSync as readFileSync9, writeFileSync as writeFileSync3 } from "fs";
|
|
@@ -35134,7 +35295,7 @@ registerSchema({
|
|
|
35134
35295
|
parent: { type: "string", description: "Parent node id. Omit to append to the root's children.", required: false }
|
|
35135
35296
|
}
|
|
35136
35297
|
});
|
|
35137
|
-
var addNodeCommand =
|
|
35298
|
+
var addNodeCommand = defineCommand114({
|
|
35138
35299
|
meta: {
|
|
35139
35300
|
name: "add-node",
|
|
35140
35301
|
description: 'Add a step to a form, with the skeleton its type requires. Example: baker flows add-node contact --type customForm --name "Contact Info"'
|
|
@@ -35230,7 +35391,7 @@ registerSchema({
|
|
|
35230
35391
|
}
|
|
35231
35392
|
}
|
|
35232
35393
|
});
|
|
35233
|
-
var addSideEffectCommand =
|
|
35394
|
+
var addSideEffectCommand = defineCommand114({
|
|
35234
35395
|
meta: {
|
|
35235
35396
|
name: "add-side-effect",
|
|
35236
35397
|
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"
|
|
@@ -35312,7 +35473,7 @@ var addSideEffectCommand = defineCommand113({
|
|
|
35312
35473
|
|
|
35313
35474
|
// src/commands/flows/map.ts
|
|
35314
35475
|
import { readFileSync as readFileSync11 } from "fs";
|
|
35315
|
-
import { defineCommand as
|
|
35476
|
+
import { defineCommand as defineCommand115 } from "citty";
|
|
35316
35477
|
|
|
35317
35478
|
// src/commands/flows/value-expression.ts
|
|
35318
35479
|
import { existsSync as existsSync6, readFileSync as readFileSync10 } from "fs";
|
|
@@ -36085,7 +36246,7 @@ async function mapOptions(args, fromFile, into) {
|
|
|
36085
36246
|
destinationFields: hubspotForm ? await hubspotFieldCatalog(hubspotForm) : void 0
|
|
36086
36247
|
};
|
|
36087
36248
|
}
|
|
36088
|
-
var mapCommand2 =
|
|
36249
|
+
var mapCommand2 = defineCommand115({
|
|
36089
36250
|
meta: {
|
|
36090
36251
|
name: "map",
|
|
36091
36252
|
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"
|
|
@@ -36183,7 +36344,7 @@ var mapCommand2 = defineCommand114({
|
|
|
36183
36344
|
});
|
|
36184
36345
|
|
|
36185
36346
|
// src/commands/flows/normalize.ts
|
|
36186
|
-
import { defineCommand as
|
|
36347
|
+
import { defineCommand as defineCommand116 } from "citty";
|
|
36187
36348
|
var OPTIONAL_STRINGS = ["oauthProviderId"];
|
|
36188
36349
|
var ARRAY_FIELDS = [
|
|
36189
36350
|
"fieldMapping",
|
|
@@ -36252,7 +36413,7 @@ registerSchema({
|
|
|
36252
36413
|
}
|
|
36253
36414
|
}
|
|
36254
36415
|
});
|
|
36255
|
-
var normalizeCommand =
|
|
36416
|
+
var normalizeCommand = defineCommand116({
|
|
36256
36417
|
meta: {
|
|
36257
36418
|
name: "normalize",
|
|
36258
36419
|
description: "Repair the shapes a form file is allowed to get slightly wrong. Example: baker flows normalize contact --write"
|
|
@@ -36283,7 +36444,7 @@ var normalizeCommand = defineCommand115({
|
|
|
36283
36444
|
});
|
|
36284
36445
|
|
|
36285
36446
|
// src/commands/flows/schema.ts
|
|
36286
|
-
import { defineCommand as
|
|
36447
|
+
import { defineCommand as defineCommand117 } from "citty";
|
|
36287
36448
|
registerSchema({
|
|
36288
36449
|
command: "flows.schema",
|
|
36289
36450
|
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.",
|
|
@@ -36308,7 +36469,7 @@ function triggerHints(triggers) {
|
|
|
36308
36469
|
`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(", ")}.` : "")
|
|
36309
36470
|
];
|
|
36310
36471
|
}
|
|
36311
|
-
var schemaCommand =
|
|
36472
|
+
var schemaCommand = defineCommand117({
|
|
36312
36473
|
meta: {
|
|
36313
36474
|
name: "schema",
|
|
36314
36475
|
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)"
|
|
@@ -36442,7 +36603,7 @@ function displayName(slug) {
|
|
|
36442
36603
|
const name = tree.displayName;
|
|
36443
36604
|
return typeof name === "string" && name.trim() ? name.trim() : slug;
|
|
36444
36605
|
}
|
|
36445
|
-
var listCommand12 =
|
|
36606
|
+
var listCommand12 = defineCommand118({
|
|
36446
36607
|
meta: {
|
|
36447
36608
|
name: "list",
|
|
36448
36609
|
description: "List Forms in this workspace with the count of confidential fields still needing setup. Example: baker flows list"
|
|
@@ -36463,7 +36624,7 @@ var listCommand12 = defineCommand117({
|
|
|
36463
36624
|
});
|
|
36464
36625
|
}
|
|
36465
36626
|
});
|
|
36466
|
-
var showCommand3 =
|
|
36627
|
+
var showCommand3 = defineCommand118({
|
|
36467
36628
|
meta: {
|
|
36468
36629
|
name: "show",
|
|
36469
36630
|
description: "Show a Form's confidential fields and their configuration status (never secret values). Example: baker flows show contact"
|
|
@@ -36491,7 +36652,7 @@ var showCommand3 = defineCommand117({
|
|
|
36491
36652
|
});
|
|
36492
36653
|
}
|
|
36493
36654
|
});
|
|
36494
|
-
var flowsCommand =
|
|
36655
|
+
var flowsCommand = defineCommand118({
|
|
36495
36656
|
meta: {
|
|
36496
36657
|
name: "flows",
|
|
36497
36658
|
description: `Read and shape this workspace's Forms (flows).
|
|
@@ -36525,10 +36686,10 @@ Full guide: __tooling__/docs/tools/baker/flows.md`
|
|
|
36525
36686
|
});
|
|
36526
36687
|
|
|
36527
36688
|
// src/commands/ga4/index.ts
|
|
36528
|
-
import { defineCommand as
|
|
36689
|
+
import { defineCommand as defineCommand125 } from "citty";
|
|
36529
36690
|
|
|
36530
36691
|
// src/commands/ga4/audit.ts
|
|
36531
|
-
import { defineCommand as
|
|
36692
|
+
import { defineCommand as defineCommand119 } from "citty";
|
|
36532
36693
|
|
|
36533
36694
|
// src/commands/ga4/resolve.ts
|
|
36534
36695
|
async function fetchProperties(useCache = true) {
|
|
@@ -36594,7 +36755,7 @@ registerSchema({
|
|
|
36594
36755
|
"no-cache": { type: "boolean", description: "Skip cache, hit API directly", required: false }
|
|
36595
36756
|
}
|
|
36596
36757
|
});
|
|
36597
|
-
var auditCommand2 =
|
|
36758
|
+
var auditCommand2 = defineCommand119({
|
|
36598
36759
|
meta: {
|
|
36599
36760
|
name: "audit",
|
|
36600
36761
|
description: `Run all GA4 admin health checks. Returns property config with playbook warnings.
|
|
@@ -36649,7 +36810,7 @@ Examples:
|
|
|
36649
36810
|
});
|
|
36650
36811
|
|
|
36651
36812
|
// src/commands/ga4/config.ts
|
|
36652
|
-
import { defineCommand as
|
|
36813
|
+
import { defineCommand as defineCommand120 } from "citty";
|
|
36653
36814
|
|
|
36654
36815
|
// src/commands/ga4/shared.ts
|
|
36655
36816
|
import { readFileSync as readFileSync12 } from "fs";
|
|
@@ -36845,7 +37006,7 @@ function configHints(config) {
|
|
|
36845
37006
|
}
|
|
36846
37007
|
return hints;
|
|
36847
37008
|
}
|
|
36848
|
-
var configCommand =
|
|
37009
|
+
var configCommand = defineCommand120({
|
|
36849
37010
|
meta: {
|
|
36850
37011
|
name: "config",
|
|
36851
37012
|
description: `Read how the property is configured to measure \u2014 key events, custom definitions, custom events, retention
|
|
@@ -36877,7 +37038,7 @@ Examples:
|
|
|
36877
37038
|
});
|
|
36878
37039
|
|
|
36879
37040
|
// src/commands/ga4/draft.ts
|
|
36880
|
-
import { defineCommand as
|
|
37041
|
+
import { defineCommand as defineCommand121 } from "citty";
|
|
36881
37042
|
registerSchema({
|
|
36882
37043
|
command: "ga4.draft",
|
|
36883
37044
|
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.",
|
|
@@ -36886,13 +37047,13 @@ registerSchema({
|
|
|
36886
37047
|
chat: { type: "string", description: CHAT_READ_ARG.description, required: false }
|
|
36887
37048
|
}
|
|
36888
37049
|
});
|
|
36889
|
-
var draftCommand3 =
|
|
37050
|
+
var draftCommand3 = defineCommand121({
|
|
36890
37051
|
meta: {
|
|
36891
37052
|
name: "draft",
|
|
36892
37053
|
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."
|
|
36893
37054
|
},
|
|
36894
37055
|
subCommands: {
|
|
36895
|
-
list:
|
|
37056
|
+
list: defineCommand121({
|
|
36896
37057
|
meta: { name: "list", description: "Review everything staged on this chat (--json for the raw envelope)" },
|
|
36897
37058
|
args: {
|
|
36898
37059
|
json: { type: "boolean", description: "Print the raw JSON envelope", required: false },
|
|
@@ -36902,7 +37063,7 @@ var draftCommand3 = defineCommand120({
|
|
|
36902
37063
|
await draftList(args.json === true, args.chat);
|
|
36903
37064
|
}
|
|
36904
37065
|
}),
|
|
36905
|
-
show:
|
|
37066
|
+
show: defineCommand121({
|
|
36906
37067
|
meta: {
|
|
36907
37068
|
name: "show",
|
|
36908
37069
|
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)."
|
|
@@ -36919,7 +37080,7 @@ var draftCommand3 = defineCommand120({
|
|
|
36919
37080
|
);
|
|
36920
37081
|
}
|
|
36921
37082
|
}),
|
|
36922
|
-
amend:
|
|
37083
|
+
amend: defineCommand121({
|
|
36923
37084
|
meta: {
|
|
36924
37085
|
name: "amend",
|
|
36925
37086
|
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."
|
|
@@ -36936,7 +37097,7 @@ var draftCommand3 = defineCommand120({
|
|
|
36936
37097
|
});
|
|
36937
37098
|
}
|
|
36938
37099
|
}),
|
|
36939
|
-
remove:
|
|
37100
|
+
remove: defineCommand121({
|
|
36940
37101
|
meta: { name: "remove", description: "Remove one staged change" },
|
|
36941
37102
|
args: { ref: { type: "positional", description: "Staged ref or target id", required: false } },
|
|
36942
37103
|
run: async ({ args }) => {
|
|
@@ -36945,7 +37106,7 @@ var draftCommand3 = defineCommand120({
|
|
|
36945
37106
|
});
|
|
36946
37107
|
}
|
|
36947
37108
|
}),
|
|
36948
|
-
clear:
|
|
37109
|
+
clear: defineCommand121({
|
|
36949
37110
|
meta: { name: "clear", description: "Discard all Google Analytics changes staged on this chat" },
|
|
36950
37111
|
run: async () => {
|
|
36951
37112
|
await draftAction2("/api/ga4/draft/clear", {});
|
|
@@ -36955,7 +37116,7 @@ var draftCommand3 = defineCommand120({
|
|
|
36955
37116
|
});
|
|
36956
37117
|
|
|
36957
37118
|
// src/commands/ga4/properties.ts
|
|
36958
|
-
import { defineCommand as
|
|
37119
|
+
import { defineCommand as defineCommand122 } from "citty";
|
|
36959
37120
|
registerSchema({
|
|
36960
37121
|
command: "ga4.properties",
|
|
36961
37122
|
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.",
|
|
@@ -36971,7 +37132,7 @@ function propertyHints(properties) {
|
|
|
36971
37132
|
resources: properties.map((property) => ({ id: property.externalId, label: property.name }))
|
|
36972
37133
|
});
|
|
36973
37134
|
}
|
|
36974
|
-
var propertiesCommand =
|
|
37135
|
+
var propertiesCommand = defineCommand122({
|
|
36975
37136
|
meta: {
|
|
36976
37137
|
name: "properties",
|
|
36977
37138
|
description: `List accessible GA4 properties.
|
|
@@ -37021,7 +37182,7 @@ Examples:
|
|
|
37021
37182
|
// src/commands/ga4/query.ts
|
|
37022
37183
|
import { appendFileSync as appendFileSync2, existsSync as existsSync7, readFileSync as readFileSync13, writeFileSync as writeFileSync4 } from "fs";
|
|
37023
37184
|
import { resolve as resolve2 } from "path";
|
|
37024
|
-
import { defineCommand as
|
|
37185
|
+
import { defineCommand as defineCommand123 } from "citty";
|
|
37025
37186
|
|
|
37026
37187
|
// src/commands/ga4/presets.ts
|
|
37027
37188
|
var GA4_PRESETS = [
|
|
@@ -37156,7 +37317,7 @@ function handleError3(err) {
|
|
|
37156
37317
|
});
|
|
37157
37318
|
process.exit(1);
|
|
37158
37319
|
}
|
|
37159
|
-
var queryCommand2 =
|
|
37320
|
+
var queryCommand2 = defineCommand123({
|
|
37160
37321
|
meta: {
|
|
37161
37322
|
name: "query",
|
|
37162
37323
|
description: `Run GA4 Data API reports. Preset-first with free-form escape hatch.
|
|
@@ -37227,7 +37388,7 @@ Free-form (escape hatch):
|
|
|
37227
37388
|
});
|
|
37228
37389
|
|
|
37229
37390
|
// src/commands/ga4/write-commands.ts
|
|
37230
|
-
import { defineCommand as
|
|
37391
|
+
import { defineCommand as defineCommand124 } from "citty";
|
|
37231
37392
|
var PROPERTY_ARG_DESCRIPTION = "GA4 property id (optional only when one property is connected \u2014 run `baker ga4 properties`)";
|
|
37232
37393
|
var propertyArg = { type: "string", description: PROPERTY_ARG_DESCRIPTION, required: false };
|
|
37233
37394
|
function createJsonDescription(noun) {
|
|
@@ -37245,7 +37406,7 @@ registerSchema({
|
|
|
37245
37406
|
"property-id": { type: "string", description: PROPERTY_ARG_DESCRIPTION, required: false }
|
|
37246
37407
|
}
|
|
37247
37408
|
});
|
|
37248
|
-
var keyEventCommand =
|
|
37409
|
+
var keyEventCommand = defineCommand124({
|
|
37249
37410
|
meta: {
|
|
37250
37411
|
name: "key-event",
|
|
37251
37412
|
description: `Stage key-event (conversion) changes
|
|
@@ -37258,7 +37419,7 @@ Examples:
|
|
|
37258
37419
|
baker ga4 key-event delete 4185`
|
|
37259
37420
|
},
|
|
37260
37421
|
subCommands: {
|
|
37261
|
-
create:
|
|
37422
|
+
create: defineCommand124({
|
|
37262
37423
|
meta: {
|
|
37263
37424
|
name: "create",
|
|
37264
37425
|
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."
|
|
@@ -37279,7 +37440,7 @@ Examples:
|
|
|
37279
37440
|
);
|
|
37280
37441
|
}
|
|
37281
37442
|
}),
|
|
37282
|
-
update:
|
|
37443
|
+
update: defineCommand124({
|
|
37283
37444
|
meta: {
|
|
37284
37445
|
name: "update",
|
|
37285
37446
|
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."
|
|
@@ -37299,7 +37460,7 @@ Examples:
|
|
|
37299
37460
|
});
|
|
37300
37461
|
}
|
|
37301
37462
|
}),
|
|
37302
|
-
delete:
|
|
37463
|
+
delete: defineCommand124({
|
|
37303
37464
|
meta: {
|
|
37304
37465
|
name: "delete",
|
|
37305
37466
|
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."
|
|
@@ -37347,7 +37508,7 @@ for (const { kind, noun, createHint } of DEFINITIONS) {
|
|
|
37347
37508
|
}
|
|
37348
37509
|
function definitionCommand(definition) {
|
|
37349
37510
|
const { command, kind, noun, example } = definition;
|
|
37350
|
-
return
|
|
37511
|
+
return defineCommand124({
|
|
37351
37512
|
meta: {
|
|
37352
37513
|
name: command,
|
|
37353
37514
|
description: `Stage ${noun} changes
|
|
@@ -37359,7 +37520,7 @@ Examples:
|
|
|
37359
37520
|
baker ga4 ${command} archive 12`
|
|
37360
37521
|
},
|
|
37361
37522
|
subCommands: {
|
|
37362
|
-
create:
|
|
37523
|
+
create: defineCommand124({
|
|
37363
37524
|
meta: { name: "create", description: `Stage a new ${noun} (or a JSON array of them, staged together)` },
|
|
37364
37525
|
args: {
|
|
37365
37526
|
json: { type: "string", description: createJsonDescription(noun), required: false },
|
|
@@ -37377,7 +37538,7 @@ Examples:
|
|
|
37377
37538
|
);
|
|
37378
37539
|
}
|
|
37379
37540
|
}),
|
|
37380
|
-
update:
|
|
37541
|
+
update: defineCommand124({
|
|
37381
37542
|
meta: {
|
|
37382
37543
|
name: "update",
|
|
37383
37544
|
description: `Stage a change to an existing ${noun} (pass its id). The parameter name and scope cannot change \u2014 archive and recreate for that.`
|
|
@@ -37397,7 +37558,7 @@ Examples:
|
|
|
37397
37558
|
});
|
|
37398
37559
|
}
|
|
37399
37560
|
}),
|
|
37400
|
-
archive:
|
|
37561
|
+
archive: defineCommand124({
|
|
37401
37562
|
meta: {
|
|
37402
37563
|
name: "archive",
|
|
37403
37564
|
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.`
|
|
@@ -37442,7 +37603,7 @@ var dataStreamArg = {
|
|
|
37442
37603
|
function withStream(args) {
|
|
37443
37604
|
return typeof args["data-stream"] === "string" ? { dataStream: args["data-stream"] } : {};
|
|
37444
37605
|
}
|
|
37445
|
-
var customEventCommand =
|
|
37606
|
+
var customEventCommand = defineCommand124({
|
|
37446
37607
|
meta: {
|
|
37447
37608
|
name: "custom-event",
|
|
37448
37609
|
description: `Stage custom events \u2014 new events built from events the site already sends
|
|
@@ -37453,7 +37614,7 @@ Examples:
|
|
|
37453
37614
|
baker ga4 custom-event delete 7`
|
|
37454
37615
|
},
|
|
37455
37616
|
subCommands: {
|
|
37456
|
-
create:
|
|
37617
|
+
create: defineCommand124({
|
|
37457
37618
|
meta: {
|
|
37458
37619
|
name: "create",
|
|
37459
37620
|
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."
|
|
@@ -37476,7 +37637,7 @@ Examples:
|
|
|
37476
37637
|
);
|
|
37477
37638
|
}
|
|
37478
37639
|
}),
|
|
37479
|
-
update:
|
|
37640
|
+
update: defineCommand124({
|
|
37480
37641
|
meta: { name: "update", description: "Stage a change to an existing custom event (pass its id)" },
|
|
37481
37642
|
args: {
|
|
37482
37643
|
id: { type: "positional", description: "Custom event rule id", required: false },
|
|
@@ -37495,7 +37656,7 @@ Examples:
|
|
|
37495
37656
|
});
|
|
37496
37657
|
}
|
|
37497
37658
|
}),
|
|
37498
|
-
delete:
|
|
37659
|
+
delete: defineCommand124({
|
|
37499
37660
|
meta: {
|
|
37500
37661
|
name: "delete",
|
|
37501
37662
|
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."
|
|
@@ -37550,7 +37711,7 @@ function booleanArg(input, flag) {
|
|
|
37550
37711
|
if (input === "false") return false;
|
|
37551
37712
|
return failValidation3(`--${flag} must be true or false`);
|
|
37552
37713
|
}
|
|
37553
|
-
var dataRetentionCommand =
|
|
37714
|
+
var dataRetentionCommand = defineCommand124({
|
|
37554
37715
|
meta: {
|
|
37555
37716
|
name: "data-retention",
|
|
37556
37717
|
description: `Stage a change to how long Google Analytics keeps data
|
|
@@ -37560,7 +37721,7 @@ Examples:
|
|
|
37560
37721
|
baker ga4 data-retention set --event-data 14 --user-data 14 --reset-on-activity true`
|
|
37561
37722
|
},
|
|
37562
37723
|
subCommands: {
|
|
37563
|
-
set:
|
|
37724
|
+
set: defineCommand124({
|
|
37564
37725
|
meta: { name: "set", description: "Stage the retention window (months)" },
|
|
37565
37726
|
args: {
|
|
37566
37727
|
"event-data": { type: "string", description: "2, 14, 26, 38 or 50", required: false },
|
|
@@ -37596,7 +37757,7 @@ registerSchema({
|
|
|
37596
37757
|
"property-id": { type: "string", description: PROPERTY_ARG_DESCRIPTION, required: false }
|
|
37597
37758
|
}
|
|
37598
37759
|
});
|
|
37599
|
-
var audienceCommand =
|
|
37760
|
+
var audienceCommand = defineCommand124({
|
|
37600
37761
|
meta: {
|
|
37601
37762
|
name: "audience",
|
|
37602
37763
|
description: `Stage audience changes (saved groups of users, for retargeting and analysis)
|
|
@@ -37628,7 +37789,7 @@ Examples:
|
|
|
37628
37789
|
baker ga4 audience archive 8813`
|
|
37629
37790
|
},
|
|
37630
37791
|
subCommands: {
|
|
37631
|
-
create:
|
|
37792
|
+
create: defineCommand124({
|
|
37632
37793
|
meta: { name: "create", description: createJsonDescription("audience") },
|
|
37633
37794
|
args: {
|
|
37634
37795
|
json: { type: "string", description: createJsonDescription("audience"), required: false },
|
|
@@ -37646,7 +37807,7 @@ Examples:
|
|
|
37646
37807
|
);
|
|
37647
37808
|
}
|
|
37648
37809
|
}),
|
|
37649
|
-
update:
|
|
37810
|
+
update: defineCommand124({
|
|
37650
37811
|
meta: {
|
|
37651
37812
|
name: "update",
|
|
37652
37813
|
description: "Stage a new name or description (pass the audience id). Who is in it cannot be changed."
|
|
@@ -37667,7 +37828,7 @@ Examples:
|
|
|
37667
37828
|
});
|
|
37668
37829
|
}
|
|
37669
37830
|
}),
|
|
37670
|
-
archive:
|
|
37831
|
+
archive: defineCommand124({
|
|
37671
37832
|
meta: {
|
|
37672
37833
|
name: "archive",
|
|
37673
37834
|
description: "Stage retiring an audience. Cannot be undone \u2014 the users it gathered do not come back."
|
|
@@ -37696,7 +37857,7 @@ registerSchema({
|
|
|
37696
37857
|
"property-id": { type: "string", description: PROPERTY_ARG_DESCRIPTION, required: false }
|
|
37697
37858
|
}
|
|
37698
37859
|
});
|
|
37699
|
-
var propertyCommand =
|
|
37860
|
+
var propertyCommand = defineCommand124({
|
|
37700
37861
|
meta: {
|
|
37701
37862
|
name: "property",
|
|
37702
37863
|
description: `Stage a change to the property's own settings
|
|
@@ -37706,7 +37867,7 @@ Examples:
|
|
|
37706
37867
|
baker ga4 property set --name "Acme \u2014 Web" --industry REAL_ESTATE`
|
|
37707
37868
|
},
|
|
37708
37869
|
subCommands: {
|
|
37709
|
-
set:
|
|
37870
|
+
set: defineCommand124({
|
|
37710
37871
|
meta: { name: "set", description: "Stage the property name and/or industry category" },
|
|
37711
37872
|
args: {
|
|
37712
37873
|
name: { type: "string", description: "New property display name", required: false },
|
|
@@ -37746,7 +37907,7 @@ registerSchema({
|
|
|
37746
37907
|
"property-id": { type: "string", description: PROPERTY_ARG_DESCRIPTION, required: false }
|
|
37747
37908
|
}
|
|
37748
37909
|
});
|
|
37749
|
-
var adsLinkCommand =
|
|
37910
|
+
var adsLinkCommand = defineCommand124({
|
|
37750
37911
|
meta: {
|
|
37751
37912
|
name: "ads-link",
|
|
37752
37913
|
description: `Stage linking this property to a Google Ads account
|
|
@@ -37761,7 +37922,7 @@ Examples:
|
|
|
37761
37922
|
baker ga4 ads-link delete L1234`
|
|
37762
37923
|
},
|
|
37763
37924
|
subCommands: {
|
|
37764
|
-
create:
|
|
37925
|
+
create: defineCommand124({
|
|
37765
37926
|
meta: { name: "create", description: "Stage linking the property to a Google Ads account" },
|
|
37766
37927
|
args: {
|
|
37767
37928
|
"customer-id": { type: "string", description: "Google Ads customer id (123-456-7890)", required: false },
|
|
@@ -37780,7 +37941,7 @@ Examples:
|
|
|
37780
37941
|
await stageOp3({ kind: "ga4.googleAdsLink.create", payload, ...withProperty(args) });
|
|
37781
37942
|
}
|
|
37782
37943
|
}),
|
|
37783
|
-
update:
|
|
37944
|
+
update: defineCommand124({
|
|
37784
37945
|
meta: {
|
|
37785
37946
|
name: "update",
|
|
37786
37947
|
description: "Stage the ads-personalisation setting on an existing link (pass its id)"
|
|
@@ -37802,7 +37963,7 @@ Examples:
|
|
|
37802
37963
|
});
|
|
37803
37964
|
}
|
|
37804
37965
|
}),
|
|
37805
|
-
delete:
|
|
37966
|
+
delete: defineCommand124({
|
|
37806
37967
|
meta: {
|
|
37807
37968
|
name: "delete",
|
|
37808
37969
|
description: "Stage unlinking. Stops conversion imports and strands every audience on this property."
|
|
@@ -37853,7 +38014,7 @@ var MEASUREMENT_FLAGS = {
|
|
|
37853
38014
|
"page-changes": "pageChangesEnabled",
|
|
37854
38015
|
"form-interactions": "formInteractionsEnabled"
|
|
37855
38016
|
};
|
|
37856
|
-
var enhancedMeasurementCommand =
|
|
38017
|
+
var enhancedMeasurementCommand = defineCommand124({
|
|
37857
38018
|
meta: {
|
|
37858
38019
|
name: "enhanced-measurement",
|
|
37859
38020
|
description: `Stage the automatic events GA4 collects on a website stream
|
|
@@ -37867,7 +38028,7 @@ Examples:
|
|
|
37867
38028
|
baker ga4 enhanced-measurement set --video false`
|
|
37868
38029
|
},
|
|
37869
38030
|
subCommands: {
|
|
37870
|
-
set:
|
|
38031
|
+
set: defineCommand124({
|
|
37871
38032
|
meta: { name: "set", description: "Stage which automatic events the website stream collects" },
|
|
37872
38033
|
args: {
|
|
37873
38034
|
scrolls: { type: "string", description: "true|false", required: false },
|
|
@@ -37910,7 +38071,7 @@ Examples:
|
|
|
37910
38071
|
});
|
|
37911
38072
|
|
|
37912
38073
|
// src/commands/ga4/index.ts
|
|
37913
|
-
var ga4Command =
|
|
38074
|
+
var ga4Command = defineCommand125({
|
|
37914
38075
|
meta: {
|
|
37915
38076
|
name: "ga4",
|
|
37916
38077
|
description: `Google Analytics 4. Report on a property, audit its config, and change what it measures.
|
|
@@ -37959,12 +38120,12 @@ Full guide: __tooling__/docs/tools/baker/ga4.md`
|
|
|
37959
38120
|
});
|
|
37960
38121
|
|
|
37961
38122
|
// src/commands/gsc/index.ts
|
|
37962
|
-
import { defineCommand as
|
|
38123
|
+
import { defineCommand as defineCommand129 } from "citty";
|
|
37963
38124
|
|
|
37964
38125
|
// src/commands/gsc/query.ts
|
|
37965
38126
|
import { appendFileSync as appendFileSync3, existsSync as existsSync8, readFileSync as readFileSync14, writeFileSync as writeFileSync5 } from "fs";
|
|
37966
38127
|
import { resolve as resolve3 } from "path";
|
|
37967
|
-
import { defineCommand as
|
|
38128
|
+
import { defineCommand as defineCommand126 } from "citty";
|
|
37968
38129
|
|
|
37969
38130
|
// src/commands/gsc/presets.ts
|
|
37970
38131
|
var GSC_PRESETS = [
|
|
@@ -38158,7 +38319,7 @@ function handleError4(err) {
|
|
|
38158
38319
|
});
|
|
38159
38320
|
process.exit(1);
|
|
38160
38321
|
}
|
|
38161
|
-
var queryCommand3 =
|
|
38322
|
+
var queryCommand3 = defineCommand126({
|
|
38162
38323
|
meta: {
|
|
38163
38324
|
name: "query",
|
|
38164
38325
|
description: `Run GSC Search Analytics queries. Preset-first with free-form escape hatch.
|
|
@@ -38236,7 +38397,7 @@ Free-form (escape hatch):
|
|
|
38236
38397
|
});
|
|
38237
38398
|
|
|
38238
38399
|
// src/commands/gsc/sitemaps.ts
|
|
38239
|
-
import { defineCommand as
|
|
38400
|
+
import { defineCommand as defineCommand127 } from "citty";
|
|
38240
38401
|
registerSchema({
|
|
38241
38402
|
command: "gsc.sitemaps",
|
|
38242
38403
|
description: "List sitemaps for a Search Console site. Check sitemap health and errors.",
|
|
@@ -38245,7 +38406,7 @@ registerSchema({
|
|
|
38245
38406
|
"no-cache": { type: "boolean", description: "Skip cache, hit API directly", required: false }
|
|
38246
38407
|
}
|
|
38247
38408
|
});
|
|
38248
|
-
var sitemapsCommand =
|
|
38409
|
+
var sitemapsCommand = defineCommand127({
|
|
38249
38410
|
meta: {
|
|
38250
38411
|
name: "sitemaps",
|
|
38251
38412
|
description: `List sitemaps for a site. Check health and errors.
|
|
@@ -38298,7 +38459,7 @@ Examples:
|
|
|
38298
38459
|
});
|
|
38299
38460
|
|
|
38300
38461
|
// src/commands/gsc/sites.ts
|
|
38301
|
-
import { defineCommand as
|
|
38462
|
+
import { defineCommand as defineCommand128 } from "citty";
|
|
38302
38463
|
registerSchema({
|
|
38303
38464
|
command: "gsc.sites",
|
|
38304
38465
|
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.",
|
|
@@ -38314,7 +38475,7 @@ function siteHints(sites) {
|
|
|
38314
38475
|
resources: sites.map((site) => ({ id: site.siteUrl, label: site.permissionLevel }))
|
|
38315
38476
|
});
|
|
38316
38477
|
}
|
|
38317
|
-
var sitesCommand =
|
|
38478
|
+
var sitesCommand = defineCommand128({
|
|
38318
38479
|
meta: {
|
|
38319
38480
|
name: "sites",
|
|
38320
38481
|
description: `List verified Search Console sites.
|
|
@@ -38362,7 +38523,7 @@ Examples:
|
|
|
38362
38523
|
});
|
|
38363
38524
|
|
|
38364
38525
|
// src/commands/gsc/index.ts
|
|
38365
|
-
var gscCommand =
|
|
38526
|
+
var gscCommand = defineCommand129({
|
|
38366
38527
|
meta: {
|
|
38367
38528
|
name: "gsc",
|
|
38368
38529
|
description: `Google Search Console commands. PPC-SEO arbitrage, brand halo analysis, negative keyword discovery.
|
|
@@ -38386,7 +38547,7 @@ Full guide: __tooling__/docs/tools/baker/gsc.md`
|
|
|
38386
38547
|
});
|
|
38387
38548
|
|
|
38388
38549
|
// src/commands/history/index.ts
|
|
38389
|
-
import { defineCommand as
|
|
38550
|
+
import { defineCommand as defineCommand130 } from "citty";
|
|
38390
38551
|
registerSchema({
|
|
38391
38552
|
command: "history.list",
|
|
38392
38553
|
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.",
|
|
@@ -38441,7 +38602,7 @@ function parseBoundedInt2(raw, name, min, max) {
|
|
|
38441
38602
|
}
|
|
38442
38603
|
return value;
|
|
38443
38604
|
}
|
|
38444
|
-
var listCommand13 =
|
|
38605
|
+
var listCommand13 = defineCommand130({
|
|
38445
38606
|
meta: {
|
|
38446
38607
|
name: "list",
|
|
38447
38608
|
description: "List recent account changes (unified audit log), newest first."
|
|
@@ -38487,7 +38648,7 @@ var listCommand13 = defineCommand129({
|
|
|
38487
38648
|
}
|
|
38488
38649
|
}
|
|
38489
38650
|
});
|
|
38490
|
-
var historyCommand =
|
|
38651
|
+
var historyCommand = defineCommand130({
|
|
38491
38652
|
meta: {
|
|
38492
38653
|
name: "history",
|
|
38493
38654
|
description: `Unified account history (audit log): what changed, who did it, and when.
|
|
@@ -38497,7 +38658,7 @@ Full guide: __tooling__/docs/tools/baker/history.md`
|
|
|
38497
38658
|
});
|
|
38498
38659
|
|
|
38499
38660
|
// src/commands/hubspot/index.ts
|
|
38500
|
-
import { defineCommand as
|
|
38661
|
+
import { defineCommand as defineCommand131 } from "citty";
|
|
38501
38662
|
var EMBED_TYPES = ["legacy", "v4", "unknown"];
|
|
38502
38663
|
function failNotConnected(err) {
|
|
38503
38664
|
if (err instanceof ApiError && err.code === "FORBIDDEN" && err.message.includes(HUBSPOT_MISSING_GRANT_MARKER)) {
|
|
@@ -38651,7 +38812,7 @@ registerSchema({
|
|
|
38651
38812
|
}
|
|
38652
38813
|
}
|
|
38653
38814
|
});
|
|
38654
|
-
var formsListCommand =
|
|
38815
|
+
var formsListCommand = defineCommand131({
|
|
38655
38816
|
meta: {
|
|
38656
38817
|
name: "list",
|
|
38657
38818
|
description: "List HubSpot forms with embed type and post-submit action. Example: baker hubspot forms list --redirecting-only"
|
|
@@ -38696,7 +38857,7 @@ var formsListCommand = defineCommand130({
|
|
|
38696
38857
|
}
|
|
38697
38858
|
}
|
|
38698
38859
|
});
|
|
38699
|
-
var formsViewCommand =
|
|
38860
|
+
var formsViewCommand = defineCommand131({
|
|
38700
38861
|
meta: {
|
|
38701
38862
|
name: "view",
|
|
38702
38863
|
description: "Show one HubSpot form's fields and configuration. Example: baker hubspot forms view 1a2b3c"
|
|
@@ -38748,7 +38909,7 @@ var formsViewCommand = defineCommand130({
|
|
|
38748
38909
|
}
|
|
38749
38910
|
}
|
|
38750
38911
|
});
|
|
38751
|
-
var meetingsListCommand =
|
|
38912
|
+
var meetingsListCommand = defineCommand131({
|
|
38752
38913
|
meta: {
|
|
38753
38914
|
name: "list",
|
|
38754
38915
|
description: "List HubSpot meeting links (calendars). Example: baker hubspot meetings list"
|
|
@@ -38790,7 +38951,7 @@ var meetingsListCommand = defineCommand130({
|
|
|
38790
38951
|
}
|
|
38791
38952
|
}
|
|
38792
38953
|
});
|
|
38793
|
-
var meetingsViewCommand =
|
|
38954
|
+
var meetingsViewCommand = defineCommand131({
|
|
38794
38955
|
meta: {
|
|
38795
38956
|
name: "view",
|
|
38796
38957
|
description: "Show one HubSpot meeting link's booking fields. Example: baker hubspot meetings view discovery-call"
|
|
@@ -38834,7 +38995,7 @@ var meetingsViewCommand = defineCommand130({
|
|
|
38834
38995
|
}
|
|
38835
38996
|
}
|
|
38836
38997
|
});
|
|
38837
|
-
var formsSubmissionsCommand =
|
|
38998
|
+
var formsSubmissionsCommand = defineCommand131({
|
|
38838
38999
|
meta: {
|
|
38839
39000
|
name: "submissions",
|
|
38840
39001
|
description: "How many leads a form received, and when. Example: baker hubspot forms submissions <formId> --days 30"
|
|
@@ -38883,7 +39044,7 @@ var formsSubmissionsCommand = defineCommand130({
|
|
|
38883
39044
|
}
|
|
38884
39045
|
}
|
|
38885
39046
|
});
|
|
38886
|
-
var workflowsListCommand =
|
|
39047
|
+
var workflowsListCommand = defineCommand131({
|
|
38887
39048
|
meta: {
|
|
38888
39049
|
name: "list",
|
|
38889
39050
|
description: "List HubSpot workflows. Example: baker hubspot workflows list --enabled-only"
|
|
@@ -38948,7 +39109,7 @@ function workflowViewHints(workflow) {
|
|
|
38948
39109
|
}
|
|
38949
39110
|
return hints;
|
|
38950
39111
|
}
|
|
38951
|
-
var workflowsViewCommand =
|
|
39112
|
+
var workflowsViewCommand = defineCommand131({
|
|
38952
39113
|
meta: {
|
|
38953
39114
|
name: "view",
|
|
38954
39115
|
description: "Read one workflow's real configuration \u2014 enrolment, branches in order, and what each step writes. Example: baker hubspot workflows view 121183594 --full"
|
|
@@ -38975,7 +39136,7 @@ var workflowsViewCommand = defineCommand130({
|
|
|
38975
39136
|
}
|
|
38976
39137
|
}
|
|
38977
39138
|
});
|
|
38978
|
-
var pipelinesListCommand =
|
|
39139
|
+
var pipelinesListCommand = defineCommand131({
|
|
38979
39140
|
meta: {
|
|
38980
39141
|
name: "list",
|
|
38981
39142
|
description: "List HubSpot deal pipelines and their stages. Example: baker hubspot pipelines list"
|
|
@@ -38992,7 +39153,7 @@ var pipelinesListCommand = defineCommand130({
|
|
|
38992
39153
|
}
|
|
38993
39154
|
}
|
|
38994
39155
|
});
|
|
38995
|
-
var contactsSummaryCommand =
|
|
39156
|
+
var contactsSummaryCommand = defineCommand131({
|
|
38996
39157
|
meta: {
|
|
38997
39158
|
name: "summary",
|
|
38998
39159
|
description: "Whether recent leads are being worked, as counts. Example: baker hubspot contacts summary --days 30"
|
|
@@ -39062,7 +39223,7 @@ function contactLookupHints(data) {
|
|
|
39062
39223
|
}
|
|
39063
39224
|
return hints;
|
|
39064
39225
|
}
|
|
39065
|
-
var contactsLookupCommand =
|
|
39226
|
+
var contactsLookupCommand = defineCommand131({
|
|
39066
39227
|
meta: {
|
|
39067
39228
|
name: "lookup",
|
|
39068
39229
|
description: "Find one contact by email and see whether it was worked. Example: baker hubspot contacts lookup a@b.com"
|
|
@@ -39086,27 +39247,27 @@ var contactsLookupCommand = defineCommand130({
|
|
|
39086
39247
|
}
|
|
39087
39248
|
}
|
|
39088
39249
|
});
|
|
39089
|
-
var contactsCommand =
|
|
39250
|
+
var contactsCommand = defineCommand131({
|
|
39090
39251
|
meta: { name: "contacts", description: "Contacts on the connected HubSpot account." },
|
|
39091
39252
|
subCommands: { summary: contactsSummaryCommand, lookup: contactsLookupCommand }
|
|
39092
39253
|
});
|
|
39093
|
-
var formsCommand =
|
|
39254
|
+
var formsCommand = defineCommand131({
|
|
39094
39255
|
meta: { name: "forms", description: "HubSpot forms on the connected account." },
|
|
39095
39256
|
subCommands: { list: formsListCommand, view: formsViewCommand, submissions: formsSubmissionsCommand }
|
|
39096
39257
|
});
|
|
39097
|
-
var workflowsCommand =
|
|
39258
|
+
var workflowsCommand = defineCommand131({
|
|
39098
39259
|
meta: { name: "workflows", description: "HubSpot workflows on the connected account." },
|
|
39099
39260
|
subCommands: { list: workflowsListCommand, view: workflowsViewCommand }
|
|
39100
39261
|
});
|
|
39101
|
-
var pipelinesCommand =
|
|
39262
|
+
var pipelinesCommand = defineCommand131({
|
|
39102
39263
|
meta: { name: "pipelines", description: "HubSpot deal pipelines on the connected account." },
|
|
39103
39264
|
subCommands: { list: pipelinesListCommand }
|
|
39104
39265
|
});
|
|
39105
|
-
var meetingsCommand =
|
|
39266
|
+
var meetingsCommand = defineCommand131({
|
|
39106
39267
|
meta: { name: "meetings", description: "HubSpot meeting links (calendars) on the connected account." },
|
|
39107
39268
|
subCommands: { list: meetingsListCommand, view: meetingsViewCommand }
|
|
39108
39269
|
});
|
|
39109
|
-
var hubspotCommand =
|
|
39270
|
+
var hubspotCommand = defineCommand131({
|
|
39110
39271
|
meta: {
|
|
39111
39272
|
name: "hubspot",
|
|
39112
39273
|
description: `Read the connected HubSpot account \u2014 forms, the leads they received, workflows, deal pipelines and
|
|
@@ -39144,10 +39305,10 @@ Full guide: __tooling__/docs/tools/baker/hubspot.md`
|
|
|
39144
39305
|
});
|
|
39145
39306
|
|
|
39146
39307
|
// src/commands/images/index.ts
|
|
39147
|
-
import { defineCommand as
|
|
39308
|
+
import { defineCommand as defineCommand157 } from "citty";
|
|
39148
39309
|
|
|
39149
39310
|
// src/commands/images/crop.ts
|
|
39150
|
-
import { defineCommand as
|
|
39311
|
+
import { defineCommand as defineCommand132 } from "citty";
|
|
39151
39312
|
|
|
39152
39313
|
// src/lib/image/crop-sprite.ts
|
|
39153
39314
|
import sharp from "sharp";
|
|
@@ -39269,7 +39430,7 @@ function emitError2(err) {
|
|
|
39269
39430
|
}
|
|
39270
39431
|
process.exit(1);
|
|
39271
39432
|
}
|
|
39272
|
-
var cropCommand =
|
|
39433
|
+
var cropCommand = defineCommand132({
|
|
39273
39434
|
meta: {
|
|
39274
39435
|
name: "crop",
|
|
39275
39436
|
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"
|
|
@@ -39305,7 +39466,7 @@ var cropCommand = defineCommand131({
|
|
|
39305
39466
|
});
|
|
39306
39467
|
|
|
39307
39468
|
// src/commands/images/delete.ts
|
|
39308
|
-
import { defineCommand as
|
|
39469
|
+
import { defineCommand as defineCommand133 } from "citty";
|
|
39309
39470
|
registerSchema({
|
|
39310
39471
|
command: "images.delete",
|
|
39311
39472
|
description: "Delete an image by ID",
|
|
@@ -39319,7 +39480,7 @@ registerSchema({
|
|
|
39319
39480
|
}
|
|
39320
39481
|
}
|
|
39321
39482
|
});
|
|
39322
|
-
var deleteCommand2 =
|
|
39483
|
+
var deleteCommand2 = defineCommand133({
|
|
39323
39484
|
meta: {
|
|
39324
39485
|
name: "delete",
|
|
39325
39486
|
description: "Delete an image by ID. Use --dry-run to preview. Example: baker images delete j571abc123 --dry-run"
|
|
@@ -39360,7 +39521,7 @@ var deleteCommand2 = defineCommand132({
|
|
|
39360
39521
|
});
|
|
39361
39522
|
|
|
39362
39523
|
// src/commands/images/dimensions.ts
|
|
39363
|
-
import { defineCommand as
|
|
39524
|
+
import { defineCommand as defineCommand134 } from "citty";
|
|
39364
39525
|
|
|
39365
39526
|
// src/lib/image/dimensions.ts
|
|
39366
39527
|
import { imageSize } from "image-size";
|
|
@@ -39389,7 +39550,7 @@ registerSchema({
|
|
|
39389
39550
|
}
|
|
39390
39551
|
}
|
|
39391
39552
|
});
|
|
39392
|
-
var dimensionsCommand =
|
|
39553
|
+
var dimensionsCommand = defineCommand134({
|
|
39393
39554
|
meta: {
|
|
39394
39555
|
name: "dimensions",
|
|
39395
39556
|
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"
|
|
@@ -39445,7 +39606,7 @@ var dimensionsCommand = defineCommand133({
|
|
|
39445
39606
|
});
|
|
39446
39607
|
|
|
39447
39608
|
// src/commands/images/download.ts
|
|
39448
|
-
import { defineCommand as
|
|
39609
|
+
import { defineCommand as defineCommand135 } from "citty";
|
|
39449
39610
|
|
|
39450
39611
|
// src/commands/images/downloadPaths.ts
|
|
39451
39612
|
import { basename as basename2, extname as extname3, join as join6 } from "path";
|
|
@@ -39670,7 +39831,7 @@ function emitError3(err) {
|
|
|
39670
39831
|
writeJson({ ok: false, error: { code: "INTERNAL_ERROR", message: "Unexpected error" } });
|
|
39671
39832
|
process.exit(1);
|
|
39672
39833
|
}
|
|
39673
|
-
var downloadCommand =
|
|
39834
|
+
var downloadCommand = defineCommand135({
|
|
39674
39835
|
meta: {
|
|
39675
39836
|
name: "download",
|
|
39676
39837
|
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"
|
|
@@ -39703,7 +39864,7 @@ var downloadCommand = defineCommand134({
|
|
|
39703
39864
|
});
|
|
39704
39865
|
|
|
39705
39866
|
// src/commands/images/extract.ts
|
|
39706
|
-
import { defineCommand as
|
|
39867
|
+
import { defineCommand as defineCommand136 } from "citty";
|
|
39707
39868
|
|
|
39708
39869
|
// src/commands/images/autoIngest.ts
|
|
39709
39870
|
var AUTO_INGEST_MAX = {
|
|
@@ -39750,7 +39911,7 @@ registerSchema({
|
|
|
39750
39911
|
}
|
|
39751
39912
|
}
|
|
39752
39913
|
});
|
|
39753
|
-
var extractCommand =
|
|
39914
|
+
var extractCommand = defineCommand136({
|
|
39754
39915
|
meta: {
|
|
39755
39916
|
name: "extract",
|
|
39756
39917
|
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"
|
|
@@ -39805,7 +39966,7 @@ var extractCommand = defineCommand135({
|
|
|
39805
39966
|
});
|
|
39806
39967
|
|
|
39807
39968
|
// src/commands/images/find.ts
|
|
39808
|
-
import { defineCommand as
|
|
39969
|
+
import { defineCommand as defineCommand137 } from "citty";
|
|
39809
39970
|
|
|
39810
39971
|
// src/commands/images/providerHits.ts
|
|
39811
39972
|
function asRecord3(value) {
|
|
@@ -39943,7 +40104,7 @@ registerSchema({
|
|
|
39943
40104
|
full: { type: "boolean", description: "Include full metadata", required: false, default: false }
|
|
39944
40105
|
}
|
|
39945
40106
|
});
|
|
39946
|
-
var findCommand =
|
|
40107
|
+
var findCommand = defineCommand137({
|
|
39947
40108
|
meta: {
|
|
39948
40109
|
name: "find",
|
|
39949
40110
|
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"
|
|
@@ -40016,7 +40177,7 @@ var findCommand = defineCommand136({
|
|
|
40016
40177
|
});
|
|
40017
40178
|
|
|
40018
40179
|
// src/commands/images/get.ts
|
|
40019
|
-
import { defineCommand as
|
|
40180
|
+
import { defineCommand as defineCommand138 } from "citty";
|
|
40020
40181
|
registerSchema({
|
|
40021
40182
|
command: "images.get",
|
|
40022
40183
|
description: "Get a single image by ID",
|
|
@@ -40024,7 +40185,7 @@ registerSchema({
|
|
|
40024
40185
|
id: { type: "string", description: "Image ID", required: true }
|
|
40025
40186
|
}
|
|
40026
40187
|
});
|
|
40027
|
-
var getCommand3 =
|
|
40188
|
+
var getCommand3 = defineCommand138({
|
|
40028
40189
|
meta: { name: "get", description: "Get a single image by ID. Example: baker images get j571abc123" },
|
|
40029
40190
|
args: {
|
|
40030
40191
|
id: { type: "positional", description: "Image ID", required: false },
|
|
@@ -40060,7 +40221,7 @@ var getCommand3 = defineCommand137({
|
|
|
40060
40221
|
});
|
|
40061
40222
|
|
|
40062
40223
|
// src/commands/images/gif.ts
|
|
40063
|
-
import { defineCommand as
|
|
40224
|
+
import { defineCommand as defineCommand139 } from "citty";
|
|
40064
40225
|
registerSchema({
|
|
40065
40226
|
command: "images.gif",
|
|
40066
40227
|
description: "Search Giphy for GIFs / reaction memes (paid social creative).",
|
|
@@ -40092,7 +40253,7 @@ registerSchema({
|
|
|
40092
40253
|
}
|
|
40093
40254
|
}
|
|
40094
40255
|
});
|
|
40095
|
-
var gifCommand =
|
|
40256
|
+
var gifCommand = defineCommand139({
|
|
40096
40257
|
meta: {
|
|
40097
40258
|
name: "gif",
|
|
40098
40259
|
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"
|
|
@@ -40139,7 +40300,7 @@ var gifCommand = defineCommand138({
|
|
|
40139
40300
|
});
|
|
40140
40301
|
|
|
40141
40302
|
// src/commands/images/google.ts
|
|
40142
|
-
import { defineCommand as
|
|
40303
|
+
import { defineCommand as defineCommand140 } from "citty";
|
|
40143
40304
|
var GOOGLE_ERROR_FIX = {
|
|
40144
40305
|
action: "use_different_resource",
|
|
40145
40306
|
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."
|
|
@@ -40179,7 +40340,7 @@ registerSchema({
|
|
|
40179
40340
|
}
|
|
40180
40341
|
}
|
|
40181
40342
|
});
|
|
40182
|
-
var googleCommand2 =
|
|
40343
|
+
var googleCommand2 = defineCommand140({
|
|
40183
40344
|
meta: {
|
|
40184
40345
|
name: "google",
|
|
40185
40346
|
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"
|
|
@@ -40252,7 +40413,7 @@ var googleCommand2 = defineCommand139({
|
|
|
40252
40413
|
});
|
|
40253
40414
|
|
|
40254
40415
|
// src/commands/images/group.ts
|
|
40255
|
-
import { defineCommand as
|
|
40416
|
+
import { defineCommand as defineCommand141 } from "citty";
|
|
40256
40417
|
|
|
40257
40418
|
// src/commands/mediaGroup.ts
|
|
40258
40419
|
async function runMediaGroupLookup(input) {
|
|
@@ -40305,7 +40466,7 @@ registerSchema({
|
|
|
40305
40466
|
"group-key": { type: "string", description: "The set key directly, when you already have it", required: false }
|
|
40306
40467
|
}
|
|
40307
40468
|
});
|
|
40308
|
-
var groupCommand =
|
|
40469
|
+
var groupCommand = defineCommand141({
|
|
40309
40470
|
meta: {
|
|
40310
40471
|
name: "group",
|
|
40311
40472
|
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>"
|
|
@@ -40325,7 +40486,7 @@ var groupCommand = defineCommand140({
|
|
|
40325
40486
|
});
|
|
40326
40487
|
|
|
40327
40488
|
// src/commands/images/icon.ts
|
|
40328
|
-
import { defineCommand as
|
|
40489
|
+
import { defineCommand as defineCommand142 } from "citty";
|
|
40329
40490
|
|
|
40330
40491
|
// src/commands/images/brandVerification.ts
|
|
40331
40492
|
function brandToken(domain) {
|
|
@@ -40422,7 +40583,7 @@ registerSchema({
|
|
|
40422
40583
|
full: { type: "boolean", description: "Include full metadata", required: false, default: false }
|
|
40423
40584
|
}
|
|
40424
40585
|
});
|
|
40425
|
-
var iconCommand =
|
|
40586
|
+
var iconCommand = defineCommand142({
|
|
40426
40587
|
meta: {
|
|
40427
40588
|
name: "icon",
|
|
40428
40589
|
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'"
|
|
@@ -40492,7 +40653,7 @@ var iconCommand = defineCommand141({
|
|
|
40492
40653
|
});
|
|
40493
40654
|
|
|
40494
40655
|
// src/commands/images/ingest.ts
|
|
40495
|
-
import { defineCommand as
|
|
40656
|
+
import { defineCommand as defineCommand143 } from "citty";
|
|
40496
40657
|
var SOURCE_VALUES = imageSourceSchema.options.join(" | ");
|
|
40497
40658
|
registerSchema({
|
|
40498
40659
|
command: "images.ingest",
|
|
@@ -40507,7 +40668,7 @@ registerSchema({
|
|
|
40507
40668
|
fields: { type: "string", description: "Comma-separated field names to include", required: false }
|
|
40508
40669
|
}
|
|
40509
40670
|
});
|
|
40510
|
-
var ingestCommand =
|
|
40671
|
+
var ingestCommand = defineCommand143({
|
|
40511
40672
|
meta: {
|
|
40512
40673
|
name: "ingest",
|
|
40513
40674
|
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"
|
|
@@ -40576,7 +40737,7 @@ var ingestCommand = defineCommand142({
|
|
|
40576
40737
|
});
|
|
40577
40738
|
|
|
40578
40739
|
// src/commands/images/layerize.ts
|
|
40579
|
-
import { defineCommand as
|
|
40740
|
+
import { defineCommand as defineCommand144 } from "citty";
|
|
40580
40741
|
registerSchema({
|
|
40581
40742
|
command: "images.layerize",
|
|
40582
40743
|
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.",
|
|
@@ -40640,7 +40801,7 @@ async function pollUntilSettled(imageId, maxWait) {
|
|
|
40640
40801
|
}
|
|
40641
40802
|
return null;
|
|
40642
40803
|
}
|
|
40643
|
-
var layerizeCommand =
|
|
40804
|
+
var layerizeCommand = defineCommand144({
|
|
40644
40805
|
meta: {
|
|
40645
40806
|
name: "layerize",
|
|
40646
40807
|
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'"
|
|
@@ -40709,7 +40870,7 @@ registerSchema({
|
|
|
40709
40870
|
full: { type: "boolean", description: "Include geometry and typography for every layer", required: false }
|
|
40710
40871
|
}
|
|
40711
40872
|
});
|
|
40712
|
-
var layersCommand =
|
|
40873
|
+
var layersCommand = defineCommand144({
|
|
40713
40874
|
meta: {
|
|
40714
40875
|
name: "layers",
|
|
40715
40876
|
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"
|
|
@@ -40749,7 +40910,7 @@ var layersCommand = defineCommand143({
|
|
|
40749
40910
|
});
|
|
40750
40911
|
|
|
40751
40912
|
// src/commands/images/library.ts
|
|
40752
|
-
import { defineCommand as
|
|
40913
|
+
import { defineCommand as defineCommand145 } from "citty";
|
|
40753
40914
|
registerSchema({
|
|
40754
40915
|
command: "images.library",
|
|
40755
40916
|
description: "Search the company image library. Returns only ready images.",
|
|
@@ -40775,7 +40936,7 @@ registerSchema({
|
|
|
40775
40936
|
}
|
|
40776
40937
|
}
|
|
40777
40938
|
});
|
|
40778
|
-
var libraryCommand =
|
|
40939
|
+
var libraryCommand = defineCommand145({
|
|
40779
40940
|
meta: {
|
|
40780
40941
|
name: "library",
|
|
40781
40942
|
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"
|
|
@@ -40838,7 +40999,7 @@ var libraryCommand = defineCommand144({
|
|
|
40838
40999
|
});
|
|
40839
41000
|
|
|
40840
41001
|
// src/commands/images/logo.ts
|
|
40841
|
-
import { defineCommand as
|
|
41002
|
+
import { defineCommand as defineCommand146 } from "citty";
|
|
40842
41003
|
registerSchema({
|
|
40843
41004
|
command: "images.logo",
|
|
40844
41005
|
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.",
|
|
@@ -40866,7 +41027,7 @@ registerSchema({
|
|
|
40866
41027
|
full: { type: "boolean", description: "Include full metadata", required: false, default: false }
|
|
40867
41028
|
}
|
|
40868
41029
|
});
|
|
40869
|
-
var logoCommand =
|
|
41030
|
+
var logoCommand = defineCommand146({
|
|
40870
41031
|
meta: {
|
|
40871
41032
|
name: "logo",
|
|
40872
41033
|
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"
|
|
@@ -40939,7 +41100,7 @@ var logoCommand = defineCommand145({
|
|
|
40939
41100
|
});
|
|
40940
41101
|
|
|
40941
41102
|
// src/commands/images/normalize.ts
|
|
40942
|
-
import { defineCommand as
|
|
41103
|
+
import { defineCommand as defineCommand147 } from "citty";
|
|
40943
41104
|
|
|
40944
41105
|
// src/lib/image/color-changer.ts
|
|
40945
41106
|
import quantize from "quantize";
|
|
@@ -41671,7 +41832,7 @@ function coerceRawArgs(args) {
|
|
|
41671
41832
|
"dry-run": bool(args["dry-run"])
|
|
41672
41833
|
};
|
|
41673
41834
|
}
|
|
41674
|
-
var normalizeCommand2 =
|
|
41835
|
+
var normalizeCommand2 = defineCommand147({
|
|
41675
41836
|
meta: {
|
|
41676
41837
|
name: "normalize",
|
|
41677
41838
|
description: `Normalize logos / images: declarative recolor + bg removal + trim + resize. Operates on local files; writes in-place by default.
|
|
@@ -41726,7 +41887,7 @@ Examples:
|
|
|
41726
41887
|
});
|
|
41727
41888
|
|
|
41728
41889
|
// src/commands/images/pinterest.ts
|
|
41729
|
-
import { defineCommand as
|
|
41890
|
+
import { defineCommand as defineCommand148 } from "citty";
|
|
41730
41891
|
registerSchema({
|
|
41731
41892
|
command: "images.pinterest",
|
|
41732
41893
|
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.",
|
|
@@ -41746,7 +41907,7 @@ registerSchema({
|
|
|
41746
41907
|
}
|
|
41747
41908
|
}
|
|
41748
41909
|
});
|
|
41749
|
-
var pinterestCommand =
|
|
41910
|
+
var pinterestCommand = defineCommand148({
|
|
41750
41911
|
meta: {
|
|
41751
41912
|
name: "pinterest",
|
|
41752
41913
|
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'"
|
|
@@ -41803,7 +41964,7 @@ var pinterestCommand = defineCommand147({
|
|
|
41803
41964
|
});
|
|
41804
41965
|
|
|
41805
41966
|
// src/commands/images/screenshot.ts
|
|
41806
|
-
import { defineCommand as
|
|
41967
|
+
import { defineCommand as defineCommand149 } from "citty";
|
|
41807
41968
|
registerSchema({
|
|
41808
41969
|
command: "images.screenshot",
|
|
41809
41970
|
description: "Capture a website screenshot via ScreenshotOne. Auto-ingests on success.",
|
|
@@ -41822,7 +41983,7 @@ registerSchema({
|
|
|
41822
41983
|
full: { type: "boolean", description: "Include full metadata", required: false, default: false }
|
|
41823
41984
|
}
|
|
41824
41985
|
});
|
|
41825
|
-
var screenshotCommand =
|
|
41986
|
+
var screenshotCommand = defineCommand149({
|
|
41826
41987
|
meta: {
|
|
41827
41988
|
name: "screenshot",
|
|
41828
41989
|
description: "Screenshot a URL via ScreenshotOne. $0.009/capture. Auto-ingests to library.\n\nExample: baker images screenshot https://stripe.com --full-page"
|
|
@@ -41886,7 +42047,7 @@ var screenshotCommand = defineCommand148({
|
|
|
41886
42047
|
});
|
|
41887
42048
|
|
|
41888
42049
|
// src/commands/images/search.ts
|
|
41889
|
-
import { defineCommand as
|
|
42050
|
+
import { defineCommand as defineCommand150 } from "citty";
|
|
41890
42051
|
registerSchema({
|
|
41891
42052
|
command: "images.search",
|
|
41892
42053
|
description: "Search images by text query. Only returns ready images.",
|
|
@@ -41902,7 +42063,7 @@ registerSchema({
|
|
|
41902
42063
|
tags: { type: "string", description: "Comma-separated tags to filter by", required: false }
|
|
41903
42064
|
}
|
|
41904
42065
|
});
|
|
41905
|
-
var searchCommand =
|
|
42066
|
+
var searchCommand = defineCommand150({
|
|
41906
42067
|
meta: {
|
|
41907
42068
|
name: "search",
|
|
41908
42069
|
description: "Semantic search images by text query. Uses hybrid BM25 + vector + reranking. Example: baker images search 'hero banner' --aspect-ratio 16:9 --tags logo"
|
|
@@ -41962,7 +42123,7 @@ var searchCommand = defineCommand149({
|
|
|
41962
42123
|
});
|
|
41963
42124
|
|
|
41964
42125
|
// src/commands/images/sticker.ts
|
|
41965
|
-
import { defineCommand as
|
|
42126
|
+
import { defineCommand as defineCommand151 } from "citty";
|
|
41966
42127
|
registerSchema({
|
|
41967
42128
|
command: "images.sticker",
|
|
41968
42129
|
description: "Search Giphy stickers \u2014 transparent-background overlays for ad creative.",
|
|
@@ -41994,7 +42155,7 @@ registerSchema({
|
|
|
41994
42155
|
}
|
|
41995
42156
|
}
|
|
41996
42157
|
});
|
|
41997
|
-
var stickerCommand =
|
|
42158
|
+
var stickerCommand = defineCommand151({
|
|
41998
42159
|
meta: {
|
|
41999
42160
|
name: "sticker",
|
|
42000
42161
|
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"
|
|
@@ -42041,7 +42202,7 @@ var stickerCommand = defineCommand150({
|
|
|
42041
42202
|
});
|
|
42042
42203
|
|
|
42043
42204
|
// src/commands/images/stock.ts
|
|
42044
|
-
import { defineCommand as
|
|
42205
|
+
import { defineCommand as defineCommand152 } from "citty";
|
|
42045
42206
|
var STOCK_ERROR_FIX = {
|
|
42046
42207
|
action: "use_different_resource",
|
|
42047
42208
|
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."
|
|
@@ -42118,7 +42279,7 @@ function buildStockRequest(query, args) {
|
|
|
42118
42279
|
if (args.context) body.descriptionContext = args.context;
|
|
42119
42280
|
return body;
|
|
42120
42281
|
}
|
|
42121
|
-
var stockCommand =
|
|
42282
|
+
var stockCommand = defineCommand152({
|
|
42122
42283
|
meta: {
|
|
42123
42284
|
name: "stock",
|
|
42124
42285
|
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"
|
|
@@ -42191,7 +42352,7 @@ var stockCommand = defineCommand151({
|
|
|
42191
42352
|
});
|
|
42192
42353
|
|
|
42193
42354
|
// src/lib/tags-command.ts
|
|
42194
|
-
import { defineCommand as
|
|
42355
|
+
import { defineCommand as defineCommand153 } from "citty";
|
|
42195
42356
|
function makeTagsCommand(command, label, endpoint) {
|
|
42196
42357
|
registerSchema({
|
|
42197
42358
|
command: `${command}.tags`,
|
|
@@ -42200,7 +42361,7 @@ function makeTagsCommand(command, label, endpoint) {
|
|
|
42200
42361
|
output: { type: "string", description: "Output format: md|json", required: false, default: "md" }
|
|
42201
42362
|
}
|
|
42202
42363
|
});
|
|
42203
|
-
return
|
|
42364
|
+
return defineCommand153({
|
|
42204
42365
|
meta: {
|
|
42205
42366
|
name: "tags",
|
|
42206
42367
|
description: `List the available ${label} tag names (defaults + company custom tags). Use before filtering with --tags. Example: baker ${command} tags`
|
|
@@ -42236,7 +42397,7 @@ function makeTagsCommand(command, label, endpoint) {
|
|
|
42236
42397
|
var tagsCommand3 = makeTagsCommand("images", "image", "/api/images/tags");
|
|
42237
42398
|
|
|
42238
42399
|
// src/commands/images/upload.ts
|
|
42239
|
-
import { defineCommand as
|
|
42400
|
+
import { defineCommand as defineCommand154 } from "citty";
|
|
42240
42401
|
registerSchema({
|
|
42241
42402
|
command: "images.upload",
|
|
42242
42403
|
description: "Upload an image to the library \u2014 local file path or remote http(s) URL.",
|
|
@@ -42274,7 +42435,7 @@ registerSchema({
|
|
|
42274
42435
|
function isRemoteUrl2(value) {
|
|
42275
42436
|
return /^https?:\/\//i.test(value);
|
|
42276
42437
|
}
|
|
42277
|
-
var uploadCommand =
|
|
42438
|
+
var uploadCommand = defineCommand154({
|
|
42278
42439
|
meta: {
|
|
42279
42440
|
name: "upload",
|
|
42280
42441
|
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'"
|
|
@@ -42367,7 +42528,7 @@ async function uploadLocal(target, args) {
|
|
|
42367
42528
|
}
|
|
42368
42529
|
|
|
42369
42530
|
// src/commands/images/upscale.ts
|
|
42370
|
-
import { defineCommand as
|
|
42531
|
+
import { defineCommand as defineCommand155 } from "citty";
|
|
42371
42532
|
registerSchema({
|
|
42372
42533
|
command: "images.upscale",
|
|
42373
42534
|
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).",
|
|
@@ -42382,7 +42543,7 @@ registerSchema({
|
|
|
42382
42543
|
}
|
|
42383
42544
|
});
|
|
42384
42545
|
var POLL_INTERVAL_MS4 = 1500;
|
|
42385
|
-
var upscaleCommand =
|
|
42546
|
+
var upscaleCommand = defineCommand155({
|
|
42386
42547
|
meta: {
|
|
42387
42548
|
name: "upscale",
|
|
42388
42549
|
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"
|
|
@@ -42437,7 +42598,7 @@ var upscaleCommand = defineCommand154({
|
|
|
42437
42598
|
});
|
|
42438
42599
|
|
|
42439
42600
|
// src/commands/images/use.ts
|
|
42440
|
-
import { defineCommand as
|
|
42601
|
+
import { defineCommand as defineCommand156 } from "citty";
|
|
42441
42602
|
registerSchema({
|
|
42442
42603
|
command: "images.use",
|
|
42443
42604
|
description: "Ingest a URL and wait for the library record to be ready.",
|
|
@@ -42466,7 +42627,7 @@ function emitReady(ingestResult, doc, args) {
|
|
|
42466
42627
|
args.full === true
|
|
42467
42628
|
);
|
|
42468
42629
|
}
|
|
42469
|
-
var useCommand =
|
|
42630
|
+
var useCommand = defineCommand156({
|
|
42470
42631
|
meta: {
|
|
42471
42632
|
name: "use",
|
|
42472
42633
|
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"
|
|
@@ -42515,7 +42676,7 @@ var useCommand = defineCommand155({
|
|
|
42515
42676
|
});
|
|
42516
42677
|
|
|
42517
42678
|
// src/commands/images/index.ts
|
|
42518
|
-
var imagesCommand =
|
|
42679
|
+
var imagesCommand = defineCommand157({
|
|
42519
42680
|
meta: {
|
|
42520
42681
|
name: "images",
|
|
42521
42682
|
description: `Find, source, and normalize images. Subcommands route by provider so cost + license are explicit.
|
|
@@ -42593,12 +42754,12 @@ Full guide: __tooling__/docs/tools/baker/images.md`
|
|
|
42593
42754
|
});
|
|
42594
42755
|
|
|
42595
42756
|
// src/commands/landing/index.ts
|
|
42596
|
-
import { defineCommand as
|
|
42757
|
+
import { defineCommand as defineCommand168 } from "citty";
|
|
42597
42758
|
|
|
42598
42759
|
// src/commands/landing/critique.ts
|
|
42599
42760
|
import { readdir as readdir11, stat as stat7 } from "fs/promises";
|
|
42600
42761
|
import path31 from "path";
|
|
42601
|
-
import { defineCommand as
|
|
42762
|
+
import { defineCommand as defineCommand158 } from "citty";
|
|
42602
42763
|
|
|
42603
42764
|
// src/engine/landing/lib/constants.ts
|
|
42604
42765
|
var OVERUSED_FONTS = /* @__PURE__ */ new Set([
|
|
@@ -43667,7 +43828,7 @@ function fail5(code, message, fix) {
|
|
|
43667
43828
|
);
|
|
43668
43829
|
process.exit(2);
|
|
43669
43830
|
}
|
|
43670
|
-
var critiqueCommand2 =
|
|
43831
|
+
var critiqueCommand2 = defineCommand158({
|
|
43671
43832
|
meta: {
|
|
43672
43833
|
name: "critique",
|
|
43673
43834
|
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."
|
|
@@ -43776,10 +43937,10 @@ async function isDir(p) {
|
|
|
43776
43937
|
}
|
|
43777
43938
|
|
|
43778
43939
|
// src/commands/landing/inspiration/index.ts
|
|
43779
|
-
import { defineCommand as
|
|
43940
|
+
import { defineCommand as defineCommand167 } from "citty";
|
|
43780
43941
|
|
|
43781
43942
|
// src/commands/landing/inspiration/add.ts
|
|
43782
|
-
import { defineCommand as
|
|
43943
|
+
import { defineCommand as defineCommand159 } from "citty";
|
|
43783
43944
|
|
|
43784
43945
|
// src/commands/landing/inspiration/shared.ts
|
|
43785
43946
|
var INSPIRATION_HINTS = {
|
|
@@ -43861,7 +44022,7 @@ registerSchema({
|
|
|
43861
44022
|
note: { type: "string", description: "Why this page is worth keeping", required: false }
|
|
43862
44023
|
}
|
|
43863
44024
|
});
|
|
43864
|
-
var addCommand =
|
|
44025
|
+
var addCommand = defineCommand159({
|
|
43865
44026
|
meta: {
|
|
43866
44027
|
name: "add",
|
|
43867
44028
|
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'"
|
|
@@ -43903,7 +44064,7 @@ var addCommand = defineCommand158({
|
|
|
43903
44064
|
// src/commands/landing/inspiration/code.ts
|
|
43904
44065
|
import { mkdir as mkdir10, writeFile as writeFile14 } from "fs/promises";
|
|
43905
44066
|
import path32 from "path";
|
|
43906
|
-
import { defineCommand as
|
|
44067
|
+
import { defineCommand as defineCommand160 } from "citty";
|
|
43907
44068
|
registerSchema({
|
|
43908
44069
|
command: "landing.inspiration.code",
|
|
43909
44070
|
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.",
|
|
@@ -43912,7 +44073,7 @@ registerSchema({
|
|
|
43912
44073
|
full: { type: "boolean", description: "Print the markup inline as well as writing it", required: false }
|
|
43913
44074
|
}
|
|
43914
44075
|
});
|
|
43915
|
-
var codeCommand =
|
|
44076
|
+
var codeCommand = defineCommand160({
|
|
43916
44077
|
meta: {
|
|
43917
44078
|
name: "code",
|
|
43918
44079
|
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."
|
|
@@ -43958,7 +44119,7 @@ var codeCommand = defineCommand159({
|
|
|
43958
44119
|
});
|
|
43959
44120
|
|
|
43960
44121
|
// src/commands/landing/inspiration/favorites.ts
|
|
43961
|
-
import { defineCommand as
|
|
44122
|
+
import { defineCommand as defineCommand161 } from "citty";
|
|
43962
44123
|
registerSchema({
|
|
43963
44124
|
command: "landing.inspiration.favorites",
|
|
43964
44125
|
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.",
|
|
@@ -43972,7 +44133,7 @@ registerSchema({
|
|
|
43972
44133
|
}
|
|
43973
44134
|
}
|
|
43974
44135
|
});
|
|
43975
|
-
var favoritesCommand =
|
|
44136
|
+
var favoritesCommand = defineCommand161({
|
|
43976
44137
|
meta: {
|
|
43977
44138
|
name: "favorites",
|
|
43978
44139
|
description: "List this company's saved reference sections. Example: baker landing inspiration favorites --type hero,pricing"
|
|
@@ -44052,7 +44213,7 @@ registerSchema({
|
|
|
44052
44213
|
note: { type: "string", description: "Why this is worth keeping", required: false }
|
|
44053
44214
|
}
|
|
44054
44215
|
});
|
|
44055
|
-
var favoriteCommand =
|
|
44216
|
+
var favoriteCommand = defineCommand161({
|
|
44056
44217
|
meta: {
|
|
44057
44218
|
name: "favorite",
|
|
44058
44219
|
description: "Save a reference section to this company. Example: baker landing inspiration favorite k57abc\u2026"
|
|
@@ -44090,7 +44251,7 @@ registerSchema({
|
|
|
44090
44251
|
page: { type: "boolean", description: "Treat the id as a page rather than a section", required: false }
|
|
44091
44252
|
}
|
|
44092
44253
|
});
|
|
44093
|
-
var unfavoriteCommand =
|
|
44254
|
+
var unfavoriteCommand = defineCommand161({
|
|
44094
44255
|
meta: {
|
|
44095
44256
|
name: "unfavorite",
|
|
44096
44257
|
description: "Remove a reference section from this company's saved set. Example: baker landing inspiration unfavorite k57abc\u2026"
|
|
@@ -44112,7 +44273,7 @@ var unfavoriteCommand = defineCommand160({
|
|
|
44112
44273
|
});
|
|
44113
44274
|
|
|
44114
44275
|
// src/commands/landing/inspiration/page.ts
|
|
44115
|
-
import { defineCommand as
|
|
44276
|
+
import { defineCommand as defineCommand162 } from "citty";
|
|
44116
44277
|
registerSchema({
|
|
44117
44278
|
command: "landing.inspiration.page",
|
|
44118
44279
|
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.",
|
|
@@ -44129,7 +44290,7 @@ registerSchema({
|
|
|
44129
44290
|
}
|
|
44130
44291
|
}
|
|
44131
44292
|
});
|
|
44132
|
-
var pageCommand2 =
|
|
44293
|
+
var pageCommand2 = defineCommand162({
|
|
44133
44294
|
meta: {
|
|
44134
44295
|
name: "page",
|
|
44135
44296
|
description: "Show how a reference page sequences its sections. Example: baker landing inspiration page j91xyz\u2026 \u2014 the blueprint, not the pixels."
|
|
@@ -44192,7 +44353,7 @@ var pageCommand2 = defineCommand161({
|
|
|
44192
44353
|
});
|
|
44193
44354
|
|
|
44194
44355
|
// src/commands/landing/inspiration/scrape.ts
|
|
44195
|
-
import { defineCommand as
|
|
44356
|
+
import { defineCommand as defineCommand163 } from "citty";
|
|
44196
44357
|
|
|
44197
44358
|
// src/engine/landing-library/proxyFailure.ts
|
|
44198
44359
|
var PROXY_STATUS = 407;
|
|
@@ -46332,7 +46493,7 @@ registerSchema({
|
|
|
46332
46493
|
report: { type: "boolean", description: "Write report.html. `--no-report` to skip", required: false }
|
|
46333
46494
|
}
|
|
46334
46495
|
});
|
|
46335
|
-
var scrapeCommand =
|
|
46496
|
+
var scrapeCommand = defineCommand163({
|
|
46336
46497
|
meta: {
|
|
46337
46498
|
name: "scrape",
|
|
46338
46499
|
description: "Capture a landing page to a directory, now. Example: baker landing inspiration scrape https://linear.app --out .baker/inspiration/linear.app"
|
|
@@ -46441,7 +46602,7 @@ var scrapeCommand = defineCommand162({
|
|
|
46441
46602
|
|
|
46442
46603
|
// src/commands/landing/inspiration/search.ts
|
|
46443
46604
|
import path37 from "path";
|
|
46444
|
-
import { defineCommand as
|
|
46605
|
+
import { defineCommand as defineCommand164 } from "citty";
|
|
46445
46606
|
|
|
46446
46607
|
// src/commands/landing/inspiration/shot.ts
|
|
46447
46608
|
import { mkdir as mkdir12, writeFile as writeFile17 } from "fs/promises";
|
|
@@ -46578,7 +46739,7 @@ async function downloadShots(results) {
|
|
|
46578
46739
|
);
|
|
46579
46740
|
return saved;
|
|
46580
46741
|
}
|
|
46581
|
-
var searchCommand2 =
|
|
46742
|
+
var searchCommand2 = defineCommand164({
|
|
46582
46743
|
meta: {
|
|
46583
46744
|
name: "search",
|
|
46584
46745
|
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"
|
|
@@ -46676,7 +46837,7 @@ var searchCommand2 = defineCommand163({
|
|
|
46676
46837
|
});
|
|
46677
46838
|
|
|
46678
46839
|
// src/commands/landing/inspiration/sequences.ts
|
|
46679
|
-
import { defineCommand as
|
|
46840
|
+
import { defineCommand as defineCommand165 } from "citty";
|
|
46680
46841
|
var COMPACT_TRANSITIONS = 12;
|
|
46681
46842
|
var COMPACT_ENDS = 5;
|
|
46682
46843
|
var MAX_PAGES = 50;
|
|
@@ -46750,7 +46911,7 @@ function sequencesHints(data, { scope, full }) {
|
|
|
46750
46911
|
if (scope === "favorites") hints.push(...favoritesScopeHints(data.favoritesHealth, data.pagesReturned));
|
|
46751
46912
|
return hints;
|
|
46752
46913
|
}
|
|
46753
|
-
var sequencesCommand =
|
|
46914
|
+
var sequencesCommand = defineCommand165({
|
|
46754
46915
|
meta: {
|
|
46755
46916
|
name: "sequences",
|
|
46756
46917
|
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."
|
|
@@ -46800,7 +46961,7 @@ var sequencesCommand = defineCommand164({
|
|
|
46800
46961
|
|
|
46801
46962
|
// src/commands/landing/inspiration/view.ts
|
|
46802
46963
|
import path38 from "path";
|
|
46803
|
-
import { defineCommand as
|
|
46964
|
+
import { defineCommand as defineCommand166 } from "citty";
|
|
46804
46965
|
registerSchema({
|
|
46805
46966
|
command: "landing.inspiration.view",
|
|
46806
46967
|
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.",
|
|
@@ -46813,7 +46974,7 @@ registerSchema({
|
|
|
46813
46974
|
}
|
|
46814
46975
|
}
|
|
46815
46976
|
});
|
|
46816
|
-
var viewCommand2 =
|
|
46977
|
+
var viewCommand2 = defineCommand166({
|
|
46817
46978
|
meta: {
|
|
46818
46979
|
name: "view",
|
|
46819
46980
|
description: "Full detail for one reference section. Example: baker landing inspiration view k57abc\u2026 \u2014 read the screenshots it saves before you build."
|
|
@@ -46897,7 +47058,7 @@ var viewCommand2 = defineCommand165({
|
|
|
46897
47058
|
});
|
|
46898
47059
|
|
|
46899
47060
|
// src/commands/landing/inspiration/index.ts
|
|
46900
|
-
var inspirationCommand =
|
|
47061
|
+
var inspirationCommand = defineCommand167({
|
|
46901
47062
|
meta: {
|
|
46902
47063
|
name: "inspiration",
|
|
46903
47064
|
description: `Reference library of real landing-page sections \u2014 look at how good pages actually solve a problem before you design one.
|
|
@@ -46942,7 +47103,7 @@ Full guide: __tooling__/docs/tools/baker/landing.md`
|
|
|
46942
47103
|
});
|
|
46943
47104
|
|
|
46944
47105
|
// src/commands/landing/index.ts
|
|
46945
|
-
var landingCommand =
|
|
47106
|
+
var landingCommand = defineCommand168({
|
|
46946
47107
|
meta: {
|
|
46947
47108
|
name: "landing",
|
|
46948
47109
|
description: `Design-quality tools for landing pages (src/pages/<slug>/).
|
|
@@ -46960,7 +47121,7 @@ Subcommands:
|
|
|
46960
47121
|
});
|
|
46961
47122
|
|
|
46962
47123
|
// src/commands/mcp/index.ts
|
|
46963
|
-
import { defineCommand as
|
|
47124
|
+
import { defineCommand as defineCommand169 } from "citty";
|
|
46964
47125
|
|
|
46965
47126
|
// src/commands/mcp/platforms.ts
|
|
46966
47127
|
function readsKey(label) {
|
|
@@ -47029,7 +47190,7 @@ registerSchema({
|
|
|
47029
47190
|
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.",
|
|
47030
47191
|
args: {}
|
|
47031
47192
|
});
|
|
47032
|
-
var connectedCommand =
|
|
47193
|
+
var connectedCommand = defineCommand169({
|
|
47033
47194
|
meta: {
|
|
47034
47195
|
name: "connected",
|
|
47035
47196
|
description: `Everything this chat can reach \u2014 managed integrations, custom MCP servers, and connected platforms.
|
|
@@ -47088,7 +47249,7 @@ registerSchema({
|
|
|
47088
47249
|
description: "List the custom MCP servers this company's chats see (org + company + your own user scope).",
|
|
47089
47250
|
args: {}
|
|
47090
47251
|
});
|
|
47091
|
-
var listCommand14 =
|
|
47252
|
+
var listCommand14 = defineCommand169({
|
|
47092
47253
|
meta: { name: "list", description: "List custom MCP servers visible to this company's chats." },
|
|
47093
47254
|
run: async () => {
|
|
47094
47255
|
try {
|
|
@@ -47125,7 +47286,7 @@ registerSchema({
|
|
|
47125
47286
|
header: { type: "string", description: 'Auth header "Key: Value" (repeatable)', required: false }
|
|
47126
47287
|
}
|
|
47127
47288
|
});
|
|
47128
|
-
var addCommand2 =
|
|
47289
|
+
var addCommand2 = defineCommand169({
|
|
47129
47290
|
meta: {
|
|
47130
47291
|
name: "add",
|
|
47131
47292
|
description: `Register a custom MCP server. Tools appear as mcp__<name>__* on the NEXT message.
|
|
@@ -47177,7 +47338,7 @@ registerSchema({
|
|
|
47177
47338
|
description: "Remove a company custom MCP server by name.",
|
|
47178
47339
|
args: { name: { type: "string", description: "Server name to remove", required: true } }
|
|
47179
47340
|
});
|
|
47180
|
-
var removeCommand4 =
|
|
47341
|
+
var removeCommand4 = defineCommand169({
|
|
47181
47342
|
meta: {
|
|
47182
47343
|
name: "remove",
|
|
47183
47344
|
description: `Remove a company custom MCP server by name.
|
|
@@ -47199,7 +47360,7 @@ Example:
|
|
|
47199
47360
|
}
|
|
47200
47361
|
}
|
|
47201
47362
|
});
|
|
47202
|
-
var mcpCommand =
|
|
47363
|
+
var mcpCommand = defineCommand169({
|
|
47203
47364
|
meta: {
|
|
47204
47365
|
name: "mcp",
|
|
47205
47366
|
description: `Third-party tools for this company \u2014 see what's connected, register custom HTTPS MCP endpoints.
|
|
@@ -47225,10 +47386,10 @@ Full guide: __tooling__/docs/tools/baker/mcp.md`
|
|
|
47225
47386
|
});
|
|
47226
47387
|
|
|
47227
47388
|
// src/commands/research/index.ts
|
|
47228
|
-
import { defineCommand as
|
|
47389
|
+
import { defineCommand as defineCommand181 } from "citty";
|
|
47229
47390
|
|
|
47230
47391
|
// src/commands/research/advertisers.ts
|
|
47231
|
-
import { defineCommand as
|
|
47392
|
+
import { defineCommand as defineCommand170 } from "citty";
|
|
47232
47393
|
|
|
47233
47394
|
// src/commands/research/hints.ts
|
|
47234
47395
|
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.';
|
|
@@ -47411,7 +47572,7 @@ var FIELDS3 = {
|
|
|
47411
47572
|
etv: "Estimated traffic value (USD)",
|
|
47412
47573
|
visibility: "SERP visibility score (0-1)"
|
|
47413
47574
|
};
|
|
47414
|
-
var advertisersCommand =
|
|
47575
|
+
var advertisersCommand = defineCommand170({
|
|
47415
47576
|
meta: {
|
|
47416
47577
|
name: "advertisers",
|
|
47417
47578
|
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).
|
|
@@ -47467,7 +47628,7 @@ Examples:
|
|
|
47467
47628
|
});
|
|
47468
47629
|
|
|
47469
47630
|
// src/commands/research/autocomplete.ts
|
|
47470
|
-
import { defineCommand as
|
|
47631
|
+
import { defineCommand as defineCommand171 } from "citty";
|
|
47471
47632
|
registerSchema({
|
|
47472
47633
|
command: "research.autocomplete",
|
|
47473
47634
|
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).",
|
|
@@ -47490,7 +47651,7 @@ registerSchema({
|
|
|
47490
47651
|
var FIELDS4 = {
|
|
47491
47652
|
suggestion: "Autocomplete suggestion from Google"
|
|
47492
47653
|
};
|
|
47493
|
-
var autocompleteCommand =
|
|
47654
|
+
var autocompleteCommand = defineCommand171({
|
|
47494
47655
|
meta: {
|
|
47495
47656
|
name: "autocomplete",
|
|
47496
47657
|
description: `Get Google Autocomplete suggestions for keyword expansion.
|
|
@@ -47545,7 +47706,7 @@ Examples:
|
|
|
47545
47706
|
});
|
|
47546
47707
|
|
|
47547
47708
|
// src/commands/research/countries.ts
|
|
47548
|
-
import { defineCommand as
|
|
47709
|
+
import { defineCommand as defineCommand172 } from "citty";
|
|
47549
47710
|
registerSchema({
|
|
47550
47711
|
command: "research.countries",
|
|
47551
47712
|
description: "List all supported country codes for --location flag in research commands.",
|
|
@@ -47602,7 +47763,7 @@ var FIELDS5 = {
|
|
|
47602
47763
|
code: "Country code to pass as --location",
|
|
47603
47764
|
name: "Country name"
|
|
47604
47765
|
};
|
|
47605
|
-
var countriesCommand =
|
|
47766
|
+
var countriesCommand = defineCommand172({
|
|
47606
47767
|
meta: {
|
|
47607
47768
|
name: "countries",
|
|
47608
47769
|
description: "List all supported country codes for --location flag."
|
|
@@ -47613,7 +47774,7 @@ var countriesCommand = defineCommand171({
|
|
|
47613
47774
|
});
|
|
47614
47775
|
|
|
47615
47776
|
// src/commands/research/fetch.ts
|
|
47616
|
-
import { defineCommand as
|
|
47777
|
+
import { defineCommand as defineCommand173 } from "citty";
|
|
47617
47778
|
var CONTENT_PREVIEW_CHARS = 2e4;
|
|
47618
47779
|
var TIMEOUT_MS = 18e4;
|
|
47619
47780
|
registerSchema({
|
|
@@ -47686,7 +47847,7 @@ function fetchFix(code) {
|
|
|
47686
47847
|
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."
|
|
47687
47848
|
};
|
|
47688
47849
|
}
|
|
47689
|
-
var fetchCommand =
|
|
47850
|
+
var fetchCommand = defineCommand173({
|
|
47690
47851
|
meta: {
|
|
47691
47852
|
name: "fetch",
|
|
47692
47853
|
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.
|
|
@@ -47763,7 +47924,7 @@ Examples:
|
|
|
47763
47924
|
});
|
|
47764
47925
|
|
|
47765
47926
|
// src/commands/research/intent.ts
|
|
47766
|
-
import { defineCommand as
|
|
47927
|
+
import { defineCommand as defineCommand174 } from "citty";
|
|
47767
47928
|
registerSchema({
|
|
47768
47929
|
command: "research.intent",
|
|
47769
47930
|
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.",
|
|
@@ -47786,7 +47947,7 @@ var FIELDS7 = {
|
|
|
47786
47947
|
intent: "Primary Google Search intent: informational, navigational, commercial, transactional",
|
|
47787
47948
|
probability: "Confidence score 0.0-1.0"
|
|
47788
47949
|
};
|
|
47789
|
-
var intentCommand =
|
|
47950
|
+
var intentCommand = defineCommand174({
|
|
47790
47951
|
meta: {
|
|
47791
47952
|
name: "intent",
|
|
47792
47953
|
description: `Classify Google Search intent for keywords. Returns intent type and confidence.
|
|
@@ -47834,7 +47995,7 @@ Examples:
|
|
|
47834
47995
|
});
|
|
47835
47996
|
|
|
47836
47997
|
// src/commands/research/keyword-gap.ts
|
|
47837
|
-
import { defineCommand as
|
|
47998
|
+
import { defineCommand as defineCommand175 } from "citty";
|
|
47838
47999
|
registerSchema({
|
|
47839
48000
|
command: "research.keyword-gap",
|
|
47840
48001
|
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.",
|
|
@@ -47863,7 +48024,7 @@ var FIELDS8 = {
|
|
|
47863
48024
|
cpc: "Cost per click USD",
|
|
47864
48025
|
their_position: "Competitor's ranking position"
|
|
47865
48026
|
};
|
|
47866
|
-
var keywordGapCommand =
|
|
48027
|
+
var keywordGapCommand = defineCommand175({
|
|
47867
48028
|
meta: {
|
|
47868
48029
|
name: "keyword-gap",
|
|
47869
48030
|
description: `Find keywords a competitor has that you don't. Supports pagination via --offset.
|
|
@@ -47938,7 +48099,7 @@ Examples:
|
|
|
47938
48099
|
});
|
|
47939
48100
|
|
|
47940
48101
|
// src/commands/research/keywords-for-site.ts
|
|
47941
|
-
import { defineCommand as
|
|
48102
|
+
import { defineCommand as defineCommand176 } from "citty";
|
|
47942
48103
|
registerSchema({
|
|
47943
48104
|
command: "research.keywords-for-site",
|
|
47944
48105
|
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.",
|
|
@@ -47971,7 +48132,7 @@ var FIELDS9 = {
|
|
|
47971
48132
|
competition: "LOW, MEDIUM, or HIGH",
|
|
47972
48133
|
competition_index: "Competition score 0-100"
|
|
47973
48134
|
};
|
|
47974
|
-
var keywordsForSiteCommand =
|
|
48135
|
+
var keywordsForSiteCommand = defineCommand176({
|
|
47975
48136
|
meta: {
|
|
47976
48137
|
name: "keywords-for-site",
|
|
47977
48138
|
description: `Get keywords a competitor targets in Google. Use --type to filter paid/organic.
|
|
@@ -48033,7 +48194,7 @@ Examples:
|
|
|
48033
48194
|
});
|
|
48034
48195
|
|
|
48035
48196
|
// src/commands/research/languages.ts
|
|
48036
|
-
import { defineCommand as
|
|
48197
|
+
import { defineCommand as defineCommand177 } from "citty";
|
|
48037
48198
|
registerSchema({
|
|
48038
48199
|
command: "research.languages",
|
|
48039
48200
|
description: "List all supported language codes for --language flag in research commands.",
|
|
@@ -48063,7 +48224,7 @@ var FIELDS10 = {
|
|
|
48063
48224
|
code: "Language code to pass as --language",
|
|
48064
48225
|
name: "Language name (also accepted by --language)"
|
|
48065
48226
|
};
|
|
48066
|
-
var languagesCommand2 =
|
|
48227
|
+
var languagesCommand2 = defineCommand177({
|
|
48067
48228
|
meta: {
|
|
48068
48229
|
name: "languages",
|
|
48069
48230
|
description: "List all supported language codes for --language flag."
|
|
@@ -48074,7 +48235,7 @@ var languagesCommand2 = defineCommand176({
|
|
|
48074
48235
|
});
|
|
48075
48236
|
|
|
48076
48237
|
// src/commands/research/lighthouse.ts
|
|
48077
|
-
import { defineCommand as
|
|
48238
|
+
import { defineCommand as defineCommand178 } from "citty";
|
|
48078
48239
|
registerSchema({
|
|
48079
48240
|
command: "research.lighthouse",
|
|
48080
48241
|
description: "Landing page performance audit. Returns metrics that affect Google Ads Quality Score and CPC.",
|
|
@@ -48093,7 +48254,7 @@ var FIELDS11 = {
|
|
|
48093
48254
|
speed_index_ms: "Speed Index in ms (good: < 3400)",
|
|
48094
48255
|
interactive_ms: "Time to Interactive in ms (good: < 3800)"
|
|
48095
48256
|
};
|
|
48096
|
-
var lighthouseCommand =
|
|
48257
|
+
var lighthouseCommand = defineCommand178({
|
|
48097
48258
|
meta: {
|
|
48098
48259
|
name: "lighthouse",
|
|
48099
48260
|
description: `Landing page performance audit. Metrics affecting Google Ads Quality Score.
|
|
@@ -48131,7 +48292,7 @@ Examples:
|
|
|
48131
48292
|
});
|
|
48132
48293
|
|
|
48133
48294
|
// src/commands/research/relevant-pages.ts
|
|
48134
|
-
import { defineCommand as
|
|
48295
|
+
import { defineCommand as defineCommand179 } from "citty";
|
|
48135
48296
|
registerSchema({
|
|
48136
48297
|
command: "research.relevant-pages",
|
|
48137
48298
|
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).",
|
|
@@ -48157,7 +48318,7 @@ var FIELDS12 = {
|
|
|
48157
48318
|
keywords: "Total organic keywords the page ranks for",
|
|
48158
48319
|
top_10: "Keywords in positions 1-10"
|
|
48159
48320
|
};
|
|
48160
|
-
var relevantPagesCommand =
|
|
48321
|
+
var relevantPagesCommand = defineCommand179({
|
|
48161
48322
|
meta: {
|
|
48162
48323
|
name: "relevant-pages",
|
|
48163
48324
|
description: `Get the top pages of a competitor domain with traffic data.
|
|
@@ -48204,7 +48365,7 @@ Examples:
|
|
|
48204
48365
|
});
|
|
48205
48366
|
|
|
48206
48367
|
// src/commands/research/web.ts
|
|
48207
|
-
import { defineCommand as
|
|
48368
|
+
import { defineCommand as defineCommand180 } from "citty";
|
|
48208
48369
|
registerSchema({
|
|
48209
48370
|
command: "research.web",
|
|
48210
48371
|
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).",
|
|
@@ -48255,7 +48416,7 @@ async function runDeepResearch(question) {
|
|
|
48255
48416
|
}
|
|
48256
48417
|
throw new Error("Deep research timed out");
|
|
48257
48418
|
}
|
|
48258
|
-
var webCommand =
|
|
48419
|
+
var webCommand = defineCommand180({
|
|
48259
48420
|
meta: {
|
|
48260
48421
|
name: "web",
|
|
48261
48422
|
description: `Search the web with AI to answer any open-ended marketing question. Uses live internet data via Google Search.
|
|
@@ -48317,7 +48478,7 @@ Examples:
|
|
|
48317
48478
|
});
|
|
48318
48479
|
|
|
48319
48480
|
// src/commands/research/index.ts
|
|
48320
|
-
var researchCommand =
|
|
48481
|
+
var researchCommand = defineCommand181({
|
|
48321
48482
|
meta: {
|
|
48322
48483
|
name: "research",
|
|
48323
48484
|
description: `Competitive intelligence and AI-powered research commands.
|
|
@@ -48361,10 +48522,10 @@ Full guide: __tooling__/docs/tools/baker/research.md`
|
|
|
48361
48522
|
});
|
|
48362
48523
|
|
|
48363
48524
|
// src/commands/scheduled-actions/index.ts
|
|
48364
|
-
import { defineCommand as
|
|
48525
|
+
import { defineCommand as defineCommand189 } from "citty";
|
|
48365
48526
|
|
|
48366
48527
|
// src/commands/scheduled-actions/create.ts
|
|
48367
|
-
import { defineCommand as
|
|
48528
|
+
import { defineCommand as defineCommand182 } from "citty";
|
|
48368
48529
|
|
|
48369
48530
|
// src/commands/scheduled-actions/shared.ts
|
|
48370
48531
|
var TEMP_SCHEDULED_ACTION_PREFIX = "temp_sched_";
|
|
@@ -48511,7 +48672,7 @@ registerSchema({
|
|
|
48511
48672
|
}
|
|
48512
48673
|
}
|
|
48513
48674
|
});
|
|
48514
|
-
var createCommand3 =
|
|
48675
|
+
var createCommand3 = defineCommand182({
|
|
48515
48676
|
meta: {
|
|
48516
48677
|
name: "create",
|
|
48517
48678
|
description: 'Stage a scheduled action. Example: baker scheduled-actions create --name "Weekly report" --description "..." --cron "0 9 * * MON"'
|
|
@@ -48570,7 +48731,7 @@ var createCommand3 = defineCommand181({
|
|
|
48570
48731
|
});
|
|
48571
48732
|
|
|
48572
48733
|
// src/commands/scheduled-actions/delete.ts
|
|
48573
|
-
import { defineCommand as
|
|
48734
|
+
import { defineCommand as defineCommand183 } from "citty";
|
|
48574
48735
|
registerSchema({
|
|
48575
48736
|
command: "scheduled-actions.delete",
|
|
48576
48737
|
description: "Stage deletion of a published scheduled action or cancellation of a temp_sched_* draft creation.",
|
|
@@ -48578,7 +48739,7 @@ registerSchema({
|
|
|
48578
48739
|
id: { type: "string", description: "Published scheduled action ID or temp_sched_* draft ID", required: true }
|
|
48579
48740
|
}
|
|
48580
48741
|
});
|
|
48581
|
-
var deleteCommand3 =
|
|
48742
|
+
var deleteCommand3 = defineCommand183({
|
|
48582
48743
|
meta: {
|
|
48583
48744
|
name: "delete",
|
|
48584
48745
|
description: "Stage scheduled action deletion. Example: baker scheduled-actions delete <id-or-temp_sched_id>"
|
|
@@ -48607,7 +48768,7 @@ var deleteCommand3 = defineCommand182({
|
|
|
48607
48768
|
});
|
|
48608
48769
|
|
|
48609
48770
|
// src/commands/scheduled-actions/get.ts
|
|
48610
|
-
import { defineCommand as
|
|
48771
|
+
import { defineCommand as defineCommand184 } from "citty";
|
|
48611
48772
|
registerSchema({
|
|
48612
48773
|
command: "scheduled-actions.get",
|
|
48613
48774
|
description: "Get a published scheduled action or a temp_sched_* draft-created scheduled action.",
|
|
@@ -48616,7 +48777,7 @@ registerSchema({
|
|
|
48616
48777
|
chat: { type: "string", description: CHAT_READ_ARG.description, required: false }
|
|
48617
48778
|
}
|
|
48618
48779
|
});
|
|
48619
|
-
var getCommand4 =
|
|
48780
|
+
var getCommand4 = defineCommand184({
|
|
48620
48781
|
meta: {
|
|
48621
48782
|
name: "get",
|
|
48622
48783
|
description: "Get a scheduled action. Example: baker scheduled-actions get <id-or-temp_sched_id>"
|
|
@@ -48655,7 +48816,7 @@ var getCommand4 = defineCommand183({
|
|
|
48655
48816
|
});
|
|
48656
48817
|
|
|
48657
48818
|
// src/commands/scheduled-actions/list.ts
|
|
48658
|
-
import { defineCommand as
|
|
48819
|
+
import { defineCommand as defineCommand185 } from "citty";
|
|
48659
48820
|
registerSchema({
|
|
48660
48821
|
command: "scheduled-actions.list",
|
|
48661
48822
|
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.",
|
|
@@ -48663,7 +48824,7 @@ registerSchema({
|
|
|
48663
48824
|
chat: { type: "string", description: CHAT_READ_ARG.description, required: false }
|
|
48664
48825
|
}
|
|
48665
48826
|
});
|
|
48666
|
-
var listCommand15 =
|
|
48827
|
+
var listCommand15 = defineCommand185({
|
|
48667
48828
|
meta: {
|
|
48668
48829
|
name: "list",
|
|
48669
48830
|
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."
|
|
@@ -48688,7 +48849,7 @@ var listCommand15 = defineCommand184({
|
|
|
48688
48849
|
// src/commands/scheduled-actions/templates.ts
|
|
48689
48850
|
import { readFile as readFile25 } from "fs/promises";
|
|
48690
48851
|
import path39 from "path";
|
|
48691
|
-
import { defineCommand as
|
|
48852
|
+
import { defineCommand as defineCommand186 } from "citty";
|
|
48692
48853
|
registerSchema({
|
|
48693
48854
|
command: "scheduled-actions.templates",
|
|
48694
48855
|
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.",
|
|
@@ -48743,7 +48904,7 @@ registerSchema({
|
|
|
48743
48904
|
}
|
|
48744
48905
|
}
|
|
48745
48906
|
});
|
|
48746
|
-
var templatesCommand =
|
|
48907
|
+
var templatesCommand = defineCommand186({
|
|
48747
48908
|
meta: {
|
|
48748
48909
|
name: "templates",
|
|
48749
48910
|
description: `The recipes this company can run \u2014 Baker's own plus theirs, with what each one produces.
|
|
@@ -48835,7 +48996,7 @@ Full guide: __tooling__/docs/tools/baker/scheduled-actions.md`
|
|
|
48835
48996
|
});
|
|
48836
48997
|
|
|
48837
48998
|
// src/commands/scheduled-actions/trigger.ts
|
|
48838
|
-
import { defineCommand as
|
|
48999
|
+
import { defineCommand as defineCommand187 } from "citty";
|
|
48839
49000
|
registerSchema({
|
|
48840
49001
|
command: "scheduled-actions.trigger",
|
|
48841
49002
|
description: "Immediately trigger a published scheduled action. Does not require BAKER_CHAT_ID and rejects temp_sched_* IDs.",
|
|
@@ -48843,7 +49004,7 @@ registerSchema({
|
|
|
48843
49004
|
id: { type: "string", description: "Published scheduled action ID", required: true }
|
|
48844
49005
|
}
|
|
48845
49006
|
});
|
|
48846
|
-
var triggerCommand =
|
|
49007
|
+
var triggerCommand = defineCommand187({
|
|
48847
49008
|
meta: {
|
|
48848
49009
|
name: "trigger",
|
|
48849
49010
|
description: "Immediately trigger a published scheduled action. Example: baker scheduled-actions trigger <id>"
|
|
@@ -48880,7 +49041,7 @@ var triggerCommand = defineCommand186({
|
|
|
48880
49041
|
});
|
|
48881
49042
|
|
|
48882
49043
|
// src/commands/scheduled-actions/update.ts
|
|
48883
|
-
import { defineCommand as
|
|
49044
|
+
import { defineCommand as defineCommand188 } from "citty";
|
|
48884
49045
|
registerSchema({
|
|
48885
49046
|
command: "scheduled-actions.update",
|
|
48886
49047
|
description: "Stage an update to a published scheduled action or temp_sched_* draft-created scheduled action.",
|
|
@@ -48911,7 +49072,7 @@ registerSchema({
|
|
|
48911
49072
|
prompt: { type: "string", description: "Replacement additional spawned-agent instructions", required: false }
|
|
48912
49073
|
}
|
|
48913
49074
|
});
|
|
48914
|
-
var updateCommand3 =
|
|
49075
|
+
var updateCommand3 = defineCommand188({
|
|
48915
49076
|
meta: {
|
|
48916
49077
|
name: "update",
|
|
48917
49078
|
description: "Stage a scheduled action update. Examples: baker scheduled-actions update <id> --enabled false | baker scheduled-actions update <id> --mode publish"
|
|
@@ -48989,7 +49150,7 @@ var updateCommand3 = defineCommand187({
|
|
|
48989
49150
|
});
|
|
48990
49151
|
|
|
48991
49152
|
// src/commands/scheduled-actions/index.ts
|
|
48992
|
-
var scheduledActionsCommand =
|
|
49153
|
+
var scheduledActionsCommand = defineCommand189({
|
|
48993
49154
|
meta: {
|
|
48994
49155
|
name: "scheduled-actions",
|
|
48995
49156
|
description: `Manage Scheduled Actions. Subcommands: list, get, create, update, delete, trigger, templates.
|
|
@@ -49018,14 +49179,14 @@ Full guide: __tooling__/docs/tools/baker/scheduled-actions.md`
|
|
|
49018
49179
|
});
|
|
49019
49180
|
|
|
49020
49181
|
// src/commands/schema.ts
|
|
49021
|
-
import { defineCommand as
|
|
49182
|
+
import { defineCommand as defineCommand190 } from "citty";
|
|
49022
49183
|
function narrowToFamily(commandName, available) {
|
|
49023
49184
|
const segments = commandName.split(".");
|
|
49024
49185
|
const prefix = segments[0] === "ads" && segments[1] ? `ads.${segments[1]}.` : `${segments[0]}.`;
|
|
49025
49186
|
const siblings = available.filter((name) => name.startsWith(prefix));
|
|
49026
49187
|
return siblings.length > 0 ? siblings : available;
|
|
49027
49188
|
}
|
|
49028
|
-
var schemaCommand2 =
|
|
49189
|
+
var schemaCommand2 = defineCommand190({
|
|
49029
49190
|
meta: {
|
|
49030
49191
|
name: "schema",
|
|
49031
49192
|
description: "Inspect command argument schemas (for AI agent introspection). Lists all commands if no argument given. Example: baker schema images.search"
|
|
@@ -49069,10 +49230,10 @@ var schemaCommand2 = defineCommand189({
|
|
|
49069
49230
|
});
|
|
49070
49231
|
|
|
49071
49232
|
// src/commands/studio/index.ts
|
|
49072
|
-
import { defineCommand as
|
|
49233
|
+
import { defineCommand as defineCommand199 } from "citty";
|
|
49073
49234
|
|
|
49074
49235
|
// src/commands/studio/animate.ts
|
|
49075
|
-
import { defineCommand as
|
|
49236
|
+
import { defineCommand as defineCommand191 } from "citty";
|
|
49076
49237
|
|
|
49077
49238
|
// src/commands/studio/batch.ts
|
|
49078
49239
|
function projectBatch(generation, full) {
|
|
@@ -49523,7 +49684,7 @@ function costHintsFor(body) {
|
|
|
49523
49684
|
}
|
|
49524
49685
|
return hints;
|
|
49525
49686
|
}
|
|
49526
|
-
var animateCommand =
|
|
49687
|
+
var animateCommand = defineCommand191({
|
|
49527
49688
|
meta: {
|
|
49528
49689
|
name: "animate",
|
|
49529
49690
|
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"
|
|
@@ -49647,7 +49808,7 @@ var animateCommand = defineCommand190({
|
|
|
49647
49808
|
});
|
|
49648
49809
|
|
|
49649
49810
|
// src/commands/studio/generate.ts
|
|
49650
|
-
import { defineCommand as
|
|
49811
|
+
import { defineCommand as defineCommand192 } from "citty";
|
|
49651
49812
|
var MODEL_LIST2 = IMAGE_MODEL_IDS;
|
|
49652
49813
|
var DEFAULT_MAX_WAIT_MS2 = 24e4;
|
|
49653
49814
|
registerSchema({
|
|
@@ -49783,7 +49944,7 @@ function buildGenerateBody(args, prompt) {
|
|
|
49783
49944
|
}
|
|
49784
49945
|
return body;
|
|
49785
49946
|
}
|
|
49786
|
-
var generateCommand =
|
|
49947
|
+
var generateCommand = defineCommand192({
|
|
49787
49948
|
meta: {
|
|
49788
49949
|
name: "generate",
|
|
49789
49950
|
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]]'"
|
|
@@ -49866,7 +50027,7 @@ var generateCommand = defineCommand191({
|
|
|
49866
50027
|
});
|
|
49867
50028
|
|
|
49868
50029
|
// src/commands/studio/get.ts
|
|
49869
|
-
import { defineCommand as
|
|
50030
|
+
import { defineCommand as defineCommand193 } from "citty";
|
|
49870
50031
|
registerSchema({
|
|
49871
50032
|
command: "studio.get",
|
|
49872
50033
|
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.",
|
|
@@ -49875,7 +50036,7 @@ registerSchema({
|
|
|
49875
50036
|
full: { type: "boolean", description: "Include settings, references and attribution", required: false }
|
|
49876
50037
|
}
|
|
49877
50038
|
});
|
|
49878
|
-
var getCommand5 =
|
|
50039
|
+
var getCommand5 = defineCommand193({
|
|
49879
50040
|
meta: {
|
|
49880
50041
|
name: "get",
|
|
49881
50042
|
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"
|
|
@@ -49904,7 +50065,7 @@ var getCommand5 = defineCommand192({
|
|
|
49904
50065
|
});
|
|
49905
50066
|
|
|
49906
50067
|
// src/commands/studio/improve.ts
|
|
49907
|
-
import { defineCommand as
|
|
50068
|
+
import { defineCommand as defineCommand194 } from "citty";
|
|
49908
50069
|
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.";
|
|
49909
50070
|
registerSchema({
|
|
49910
50071
|
command: "studio.improve",
|
|
@@ -49929,7 +50090,7 @@ registerSchema({
|
|
|
49929
50090
|
}
|
|
49930
50091
|
}
|
|
49931
50092
|
});
|
|
49932
|
-
var improveCommand =
|
|
50093
|
+
var improveCommand = defineCommand194({
|
|
49933
50094
|
meta: {
|
|
49934
50095
|
name: "improve",
|
|
49935
50096
|
description: `${DESCRIPTION}
|
|
@@ -49973,7 +50134,7 @@ Examples:
|
|
|
49973
50134
|
});
|
|
49974
50135
|
|
|
49975
50136
|
// src/commands/studio/keep.ts
|
|
49976
|
-
import { defineCommand as
|
|
50137
|
+
import { defineCommand as defineCommand195 } from "citty";
|
|
49977
50138
|
registerSchema({
|
|
49978
50139
|
command: "studio.keep",
|
|
49979
50140
|
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.",
|
|
@@ -49983,7 +50144,7 @@ registerSchema({
|
|
|
49983
50144
|
undo: { type: "boolean", description: "Un-star an image, or take a kept clip back out", required: false }
|
|
49984
50145
|
}
|
|
49985
50146
|
});
|
|
49986
|
-
var keepCommand =
|
|
50147
|
+
var keepCommand = defineCommand195({
|
|
49987
50148
|
meta: {
|
|
49988
50149
|
name: "keep",
|
|
49989
50150
|
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"
|
|
@@ -50034,7 +50195,7 @@ var keepCommand = defineCommand194({
|
|
|
50034
50195
|
});
|
|
50035
50196
|
|
|
50036
50197
|
// src/commands/studio/list.ts
|
|
50037
|
-
import { defineCommand as
|
|
50198
|
+
import { defineCommand as defineCommand196 } from "citty";
|
|
50038
50199
|
registerSchema({
|
|
50039
50200
|
command: "studio.list",
|
|
50040
50201
|
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.",
|
|
@@ -50045,7 +50206,7 @@ registerSchema({
|
|
|
50045
50206
|
full: { type: "boolean", description: "Include settings, references and attribution", required: false }
|
|
50046
50207
|
}
|
|
50047
50208
|
});
|
|
50048
|
-
var listCommand16 =
|
|
50209
|
+
var listCommand16 = defineCommand196({
|
|
50049
50210
|
meta: {
|
|
50050
50211
|
name: "list",
|
|
50051
50212
|
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"
|
|
@@ -50079,7 +50240,7 @@ var listCommand16 = defineCommand195({
|
|
|
50079
50240
|
});
|
|
50080
50241
|
|
|
50081
50242
|
// src/commands/studio/models.ts
|
|
50082
|
-
import { defineCommand as
|
|
50243
|
+
import { defineCommand as defineCommand197 } from "citty";
|
|
50083
50244
|
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.";
|
|
50084
50245
|
registerSchema({
|
|
50085
50246
|
command: "studio.models",
|
|
@@ -50166,7 +50327,7 @@ function buildModelCards(kind, model) {
|
|
|
50166
50327
|
const selected = model ? ids.filter((id) => id === model) : ids;
|
|
50167
50328
|
return selected.map((id) => build(id));
|
|
50168
50329
|
}
|
|
50169
|
-
var modelsCommand =
|
|
50330
|
+
var modelsCommand = defineCommand197({
|
|
50170
50331
|
meta: {
|
|
50171
50332
|
name: "models",
|
|
50172
50333
|
description: `${DESCRIPTION2}
|
|
@@ -50213,13 +50374,13 @@ Examples:
|
|
|
50213
50374
|
});
|
|
50214
50375
|
|
|
50215
50376
|
// src/commands/studio/skills.ts
|
|
50216
|
-
import { defineCommand as
|
|
50377
|
+
import { defineCommand as defineCommand198 } from "citty";
|
|
50217
50378
|
registerSchema({
|
|
50218
50379
|
command: "studio.skills",
|
|
50219
50380
|
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.",
|
|
50220
50381
|
args: {}
|
|
50221
50382
|
});
|
|
50222
|
-
var skillsCommand =
|
|
50383
|
+
var skillsCommand = defineCommand198({
|
|
50223
50384
|
meta: {
|
|
50224
50385
|
name: "skills",
|
|
50225
50386
|
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"
|
|
@@ -50243,7 +50404,7 @@ var skillsCommand = defineCommand197({
|
|
|
50243
50404
|
});
|
|
50244
50405
|
|
|
50245
50406
|
// src/commands/studio/index.ts
|
|
50246
|
-
var studioCommand =
|
|
50407
|
+
var studioCommand = defineCommand199({
|
|
50247
50408
|
meta: {
|
|
50248
50409
|
name: "studio",
|
|
50249
50410
|
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.
|
|
@@ -50286,10 +50447,10 @@ Full guide: __tooling__/docs/tools/baker/studio.md`
|
|
|
50286
50447
|
});
|
|
50287
50448
|
|
|
50288
50449
|
// src/commands/tag-manager/index.ts
|
|
50289
|
-
import { defineCommand as
|
|
50450
|
+
import { defineCommand as defineCommand203 } from "citty";
|
|
50290
50451
|
|
|
50291
50452
|
// src/commands/tag-manager/draft.ts
|
|
50292
|
-
import { defineCommand as
|
|
50453
|
+
import { defineCommand as defineCommand200 } from "citty";
|
|
50293
50454
|
|
|
50294
50455
|
// src/commands/tag-manager/shared.ts
|
|
50295
50456
|
import { readFileSync as readFileSync15 } from "fs";
|
|
@@ -50412,13 +50573,13 @@ registerSchema({
|
|
|
50412
50573
|
chat: { type: "string", description: CHAT_READ_ARG.description, required: false }
|
|
50413
50574
|
}
|
|
50414
50575
|
});
|
|
50415
|
-
var draftCommand4 =
|
|
50576
|
+
var draftCommand4 = defineCommand200({
|
|
50416
50577
|
meta: {
|
|
50417
50578
|
name: "draft",
|
|
50418
50579
|
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."
|
|
50419
50580
|
},
|
|
50420
50581
|
subCommands: {
|
|
50421
|
-
list:
|
|
50582
|
+
list: defineCommand200({
|
|
50422
50583
|
meta: {
|
|
50423
50584
|
name: "list",
|
|
50424
50585
|
description: "Review everything staged on this chat (--json for the raw envelope)"
|
|
@@ -50431,7 +50592,7 @@ var draftCommand4 = defineCommand199({
|
|
|
50431
50592
|
await draftList2(args.json === true, args.chat);
|
|
50432
50593
|
}
|
|
50433
50594
|
}),
|
|
50434
|
-
show:
|
|
50595
|
+
show: defineCommand200({
|
|
50435
50596
|
meta: {
|
|
50436
50597
|
name: "show",
|
|
50437
50598
|
description: "Print the full staged payload for one change \u2014 the receipt to verify it looks right before publish (never truncated)."
|
|
@@ -50448,7 +50609,7 @@ var draftCommand4 = defineCommand199({
|
|
|
50448
50609
|
);
|
|
50449
50610
|
}
|
|
50450
50611
|
}),
|
|
50451
|
-
amend:
|
|
50612
|
+
amend: defineCommand200({
|
|
50452
50613
|
meta: {
|
|
50453
50614
|
name: "amend",
|
|
50454
50615
|
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."
|
|
@@ -50465,7 +50626,7 @@ var draftCommand4 = defineCommand199({
|
|
|
50465
50626
|
});
|
|
50466
50627
|
}
|
|
50467
50628
|
}),
|
|
50468
|
-
remove:
|
|
50629
|
+
remove: defineCommand200({
|
|
50469
50630
|
meta: { name: "remove", description: "Remove one staged change (cascades to anything depending on it)" },
|
|
50470
50631
|
args: { ref: { type: "positional", description: "Staged ref (gtm_temp_*) or target", required: false } },
|
|
50471
50632
|
run: async ({ args }) => {
|
|
@@ -50474,7 +50635,7 @@ var draftCommand4 = defineCommand199({
|
|
|
50474
50635
|
});
|
|
50475
50636
|
}
|
|
50476
50637
|
}),
|
|
50477
|
-
clear:
|
|
50638
|
+
clear: defineCommand200({
|
|
50478
50639
|
meta: { name: "clear", description: "Discard all Tag Manager changes staged on this chat" },
|
|
50479
50640
|
run: async () => {
|
|
50480
50641
|
await draftAction3("/api/tag-manager/draft/clear", {});
|
|
@@ -50484,7 +50645,7 @@ var draftCommand4 = defineCommand199({
|
|
|
50484
50645
|
});
|
|
50485
50646
|
|
|
50486
50647
|
// src/commands/tag-manager/read.ts
|
|
50487
|
-
import { defineCommand as
|
|
50648
|
+
import { defineCommand as defineCommand201 } from "citty";
|
|
50488
50649
|
registerSchema({
|
|
50489
50650
|
command: "tagManager.containers",
|
|
50490
50651
|
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.",
|
|
@@ -50525,7 +50686,7 @@ function containersHints(containers) {
|
|
|
50525
50686
|
}))
|
|
50526
50687
|
});
|
|
50527
50688
|
}
|
|
50528
|
-
var containersCommand =
|
|
50689
|
+
var containersCommand = defineCommand201({
|
|
50529
50690
|
meta: {
|
|
50530
50691
|
name: "containers",
|
|
50531
50692
|
description: `List Tag Manager containers reachable by this company's connection.
|
|
@@ -50542,7 +50703,7 @@ Start here:
|
|
|
50542
50703
|
}
|
|
50543
50704
|
}
|
|
50544
50705
|
});
|
|
50545
|
-
var readCommand =
|
|
50706
|
+
var readCommand = defineCommand201({
|
|
50546
50707
|
meta: {
|
|
50547
50708
|
name: "read",
|
|
50548
50709
|
description: `Read the current contents of the Tag Manager container \u2014 always do this before staging changes.
|
|
@@ -50584,7 +50745,7 @@ Examples:
|
|
|
50584
50745
|
});
|
|
50585
50746
|
|
|
50586
50747
|
// src/commands/tag-manager/write-commands.ts
|
|
50587
|
-
import { defineCommand as
|
|
50748
|
+
import { defineCommand as defineCommand202 } from "citty";
|
|
50588
50749
|
var CONTAINER_ARG_DESCRIPTION = "Numeric container id (optional only when one container is connected \u2014 run `baker tag-manager containers`)";
|
|
50589
50750
|
var ENTITIES = [
|
|
50590
50751
|
{
|
|
@@ -50640,10 +50801,10 @@ for (const { entity, noun, createHint } of ENTITIES) {
|
|
|
50640
50801
|
});
|
|
50641
50802
|
}
|
|
50642
50803
|
function entityCommand(entity, noun, example) {
|
|
50643
|
-
return
|
|
50804
|
+
return defineCommand202({
|
|
50644
50805
|
meta: { name: entity, description: `Stage ${noun} changes on this chat's Tag Manager draft` },
|
|
50645
50806
|
subCommands: {
|
|
50646
|
-
create:
|
|
50807
|
+
create: defineCommand202({
|
|
50647
50808
|
meta: {
|
|
50648
50809
|
name: "create",
|
|
50649
50810
|
description: `Stage a new ${noun}
|
|
@@ -50665,7 +50826,7 @@ Examples:
|
|
|
50665
50826
|
});
|
|
50666
50827
|
}
|
|
50667
50828
|
}),
|
|
50668
|
-
update:
|
|
50829
|
+
update: defineCommand202({
|
|
50669
50830
|
meta: {
|
|
50670
50831
|
name: "update",
|
|
50671
50832
|
description: `Stage an update to an existing ${noun} (pass its id or path)`
|
|
@@ -50685,7 +50846,7 @@ Examples:
|
|
|
50685
50846
|
});
|
|
50686
50847
|
}
|
|
50687
50848
|
}),
|
|
50688
|
-
delete:
|
|
50849
|
+
delete: defineCommand202({
|
|
50689
50850
|
meta: { name: "delete", description: `Stage the deletion of a ${noun} (pass its id or path)` },
|
|
50690
50851
|
args: {
|
|
50691
50852
|
id: { type: "positional", description: `${noun} id or path`, required: false },
|
|
@@ -50726,7 +50887,7 @@ function builtinTypes(args) {
|
|
|
50726
50887
|
}
|
|
50727
50888
|
return raw.split(",").map((entry) => entry.trim());
|
|
50728
50889
|
}
|
|
50729
|
-
var builtinCommand =
|
|
50890
|
+
var builtinCommand = defineCommand202({
|
|
50730
50891
|
meta: {
|
|
50731
50892
|
name: "builtin",
|
|
50732
50893
|
description: `Enable or disable built-in variables
|
|
@@ -50736,7 +50897,7 @@ Examples:
|
|
|
50736
50897
|
baker tag-manager builtin disable --types formId`
|
|
50737
50898
|
},
|
|
50738
50899
|
subCommands: {
|
|
50739
|
-
enable:
|
|
50900
|
+
enable: defineCommand202({
|
|
50740
50901
|
meta: { name: "enable", description: "Stage enabling built-in variables" },
|
|
50741
50902
|
args: {
|
|
50742
50903
|
types: { type: "string", description: "Comma-separated types", required: false },
|
|
@@ -50750,7 +50911,7 @@ Examples:
|
|
|
50750
50911
|
});
|
|
50751
50912
|
}
|
|
50752
50913
|
}),
|
|
50753
|
-
disable:
|
|
50914
|
+
disable: defineCommand202({
|
|
50754
50915
|
meta: { name: "disable", description: "Stage disabling built-in variables" },
|
|
50755
50916
|
args: {
|
|
50756
50917
|
types: { type: "string", description: "Comma-separated types", required: false },
|
|
@@ -50768,7 +50929,7 @@ Examples:
|
|
|
50768
50929
|
});
|
|
50769
50930
|
|
|
50770
50931
|
// src/commands/tag-manager/index.ts
|
|
50771
|
-
var tagManagerCommand =
|
|
50932
|
+
var tagManagerCommand = defineCommand203({
|
|
50772
50933
|
meta: {
|
|
50773
50934
|
name: "tag-manager",
|
|
50774
50935
|
description: `Read and change what lives inside the client's Google Tag Manager container \u2014 tags, triggers, variables, folders and built-in variables.
|
|
@@ -50805,7 +50966,7 @@ Full guide: __tooling__/docs/tools/baker/tag-manager.md`
|
|
|
50805
50966
|
});
|
|
50806
50967
|
|
|
50807
50968
|
// src/commands/tags/index.ts
|
|
50808
|
-
import { defineCommand as
|
|
50969
|
+
import { defineCommand as defineCommand204 } from "citty";
|
|
50809
50970
|
|
|
50810
50971
|
// src/commands/tags/shared.ts
|
|
50811
50972
|
function failApi3(err) {
|
|
@@ -50874,7 +51035,7 @@ async function listTags(json) {
|
|
|
50874
51035
|
var listArgs9 = {
|
|
50875
51036
|
json: { type: "boolean", description: "Print the raw JSON envelope instead of the readable list" }
|
|
50876
51037
|
};
|
|
50877
|
-
var listCommand17 =
|
|
51038
|
+
var listCommand17 = defineCommand204({
|
|
50878
51039
|
meta: {
|
|
50879
51040
|
name: "list",
|
|
50880
51041
|
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"
|
|
@@ -50893,7 +51054,7 @@ async function listDraft3(chat) {
|
|
|
50893
51054
|
failApi3(err);
|
|
50894
51055
|
}
|
|
50895
51056
|
}
|
|
50896
|
-
var draftCommand5 =
|
|
51057
|
+
var draftCommand5 = defineCommand204({
|
|
50897
51058
|
meta: {
|
|
50898
51059
|
name: "draft",
|
|
50899
51060
|
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."
|
|
@@ -50903,7 +51064,7 @@ var draftCommand5 = defineCommand203({
|
|
|
50903
51064
|
await listDraft3(args.chat);
|
|
50904
51065
|
}
|
|
50905
51066
|
});
|
|
50906
|
-
var tagsCommand4 =
|
|
51067
|
+
var tagsCommand4 = defineCommand204({
|
|
50907
51068
|
meta: {
|
|
50908
51069
|
name: "tags",
|
|
50909
51070
|
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.
|
|
@@ -50932,10 +51093,10 @@ Full guide: __tooling__/docs/tools/baker/tags.md`
|
|
|
50932
51093
|
});
|
|
50933
51094
|
|
|
50934
51095
|
// src/commands/testimonials/index.ts
|
|
50935
|
-
import { defineCommand as
|
|
51096
|
+
import { defineCommand as defineCommand208 } from "citty";
|
|
50936
51097
|
|
|
50937
51098
|
// src/commands/testimonials/get.ts
|
|
50938
|
-
import { defineCommand as
|
|
51099
|
+
import { defineCommand as defineCommand205 } from "citty";
|
|
50939
51100
|
registerSchema({
|
|
50940
51101
|
command: "testimonials.get",
|
|
50941
51102
|
description: "Get a single testimonial by ID",
|
|
@@ -50943,7 +51104,7 @@ registerSchema({
|
|
|
50943
51104
|
id: { type: "string", description: "Testimonial ID", required: true }
|
|
50944
51105
|
}
|
|
50945
51106
|
});
|
|
50946
|
-
var getCommand6 =
|
|
51107
|
+
var getCommand6 = defineCommand205({
|
|
50947
51108
|
meta: { name: "get", description: "Get a single testimonial by ID. Example: baker testimonials get j571abc123" },
|
|
50948
51109
|
args: {
|
|
50949
51110
|
id: { type: "positional", description: "Testimonial ID", required: false },
|
|
@@ -50980,7 +51141,7 @@ var getCommand6 = defineCommand204({
|
|
|
50980
51141
|
});
|
|
50981
51142
|
|
|
50982
51143
|
// src/commands/testimonials/list.ts
|
|
50983
|
-
import { defineCommand as
|
|
51144
|
+
import { defineCommand as defineCommand206 } from "citty";
|
|
50984
51145
|
|
|
50985
51146
|
// src/commands/testimonials/emptyCorpusHints.ts
|
|
50986
51147
|
function resolveEmptyReason({
|
|
@@ -51115,7 +51276,7 @@ function buildListParams(args) {
|
|
|
51115
51276
|
}
|
|
51116
51277
|
return params;
|
|
51117
51278
|
}
|
|
51118
|
-
var listCommand18 =
|
|
51279
|
+
var listCommand18 = defineCommand206({
|
|
51119
51280
|
meta: {
|
|
51120
51281
|
name: "list",
|
|
51121
51282
|
description: "List testimonials with optional filters. Example: baker testimonials list --source google --sentiment positive"
|
|
@@ -51167,7 +51328,7 @@ var listCommand18 = defineCommand205({
|
|
|
51167
51328
|
});
|
|
51168
51329
|
|
|
51169
51330
|
// src/commands/testimonials/search.ts
|
|
51170
|
-
import { defineCommand as
|
|
51331
|
+
import { defineCommand as defineCommand207 } from "citty";
|
|
51171
51332
|
var FILTER_FLAGS2 = ["source", "rating-min", "rating-max", "status", "sentiment", "language", "tags"];
|
|
51172
51333
|
function languageBiasHint(results, requestedLanguage) {
|
|
51173
51334
|
if (requestedLanguage) {
|
|
@@ -51246,7 +51407,7 @@ function buildSearchRequest(query, args) {
|
|
|
51246
51407
|
}
|
|
51247
51408
|
return body;
|
|
51248
51409
|
}
|
|
51249
|
-
var searchCommand3 =
|
|
51410
|
+
var searchCommand3 = defineCommand207({
|
|
51250
51411
|
meta: {
|
|
51251
51412
|
name: "search",
|
|
51252
51413
|
description: "Semantic search testimonials by text query. Uses hybrid BM25 + vector + reranking. Example: baker testimonials search 'great service' --rating-min 4"
|
|
@@ -51310,7 +51471,7 @@ var searchCommand3 = defineCommand206({
|
|
|
51310
51471
|
var tagsCommand5 = makeTagsCommand("testimonials", "testimonial", "/api/testimonials/tags");
|
|
51311
51472
|
|
|
51312
51473
|
// src/commands/testimonials/index.ts
|
|
51313
|
-
var testimonialsCommand =
|
|
51474
|
+
var testimonialsCommand = defineCommand208({
|
|
51314
51475
|
meta: {
|
|
51315
51476
|
name: "testimonials",
|
|
51316
51477
|
description: `Find and browse testimonials in Baker. Subcommands: search, get, list, tags.
|
|
@@ -51332,10 +51493,10 @@ Full guide: __tooling__/docs/tools/baker/testimonials.md`
|
|
|
51332
51493
|
});
|
|
51333
51494
|
|
|
51334
51495
|
// src/commands/videos/index.ts
|
|
51335
|
-
import { defineCommand as
|
|
51496
|
+
import { defineCommand as defineCommand215 } from "citty";
|
|
51336
51497
|
|
|
51337
51498
|
// src/commands/videos/delete.ts
|
|
51338
|
-
import { defineCommand as
|
|
51499
|
+
import { defineCommand as defineCommand209 } from "citty";
|
|
51339
51500
|
registerSchema({
|
|
51340
51501
|
command: "videos.delete",
|
|
51341
51502
|
description: "Delete a video by ID",
|
|
@@ -51349,7 +51510,7 @@ registerSchema({
|
|
|
51349
51510
|
}
|
|
51350
51511
|
}
|
|
51351
51512
|
});
|
|
51352
|
-
var deleteCommand4 =
|
|
51513
|
+
var deleteCommand4 = defineCommand209({
|
|
51353
51514
|
meta: {
|
|
51354
51515
|
name: "delete",
|
|
51355
51516
|
description: "Delete a video by ID. Use --dry-run to preview. Example: baker videos delete j571abc123 --dry-run"
|
|
@@ -51390,7 +51551,7 @@ var deleteCommand4 = defineCommand208({
|
|
|
51390
51551
|
});
|
|
51391
51552
|
|
|
51392
51553
|
// src/commands/videos/get.ts
|
|
51393
|
-
import { defineCommand as
|
|
51554
|
+
import { defineCommand as defineCommand210 } from "citty";
|
|
51394
51555
|
registerSchema({
|
|
51395
51556
|
command: "videos.get",
|
|
51396
51557
|
description: "Get a single video by ID",
|
|
@@ -51398,7 +51559,7 @@ registerSchema({
|
|
|
51398
51559
|
id: { type: "string", description: "Video ID", required: true }
|
|
51399
51560
|
}
|
|
51400
51561
|
});
|
|
51401
|
-
var getCommand7 =
|
|
51562
|
+
var getCommand7 = defineCommand210({
|
|
51402
51563
|
meta: { name: "get", description: "Get a single video by ID. Example: baker videos get j571abc123" },
|
|
51403
51564
|
args: {
|
|
51404
51565
|
id: { type: "positional", description: "Video ID", required: false },
|
|
@@ -51435,7 +51596,7 @@ var getCommand7 = defineCommand209({
|
|
|
51435
51596
|
});
|
|
51436
51597
|
|
|
51437
51598
|
// src/commands/videos/group.ts
|
|
51438
|
-
import { defineCommand as
|
|
51599
|
+
import { defineCommand as defineCommand211 } from "citty";
|
|
51439
51600
|
registerSchema({
|
|
51440
51601
|
command: "videos.group",
|
|
51441
51602
|
description: "List every clip and image that arrived in the same set as this video (carousel slides, one page)",
|
|
@@ -51444,7 +51605,7 @@ registerSchema({
|
|
|
51444
51605
|
"group-key": { type: "string", description: "The set key directly, when you already have it", required: false }
|
|
51445
51606
|
}
|
|
51446
51607
|
});
|
|
51447
|
-
var groupCommand2 =
|
|
51608
|
+
var groupCommand2 = defineCommand211({
|
|
51448
51609
|
meta: {
|
|
51449
51610
|
name: "group",
|
|
51450
51611
|
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>"
|
|
@@ -51467,7 +51628,7 @@ var groupCommand2 = defineCommand210({
|
|
|
51467
51628
|
import { mkdtemp as mkdtemp3, rm as rm8, stat as stat8 } from "fs/promises";
|
|
51468
51629
|
import { tmpdir as tmpdir4 } from "os";
|
|
51469
51630
|
import path40 from "path";
|
|
51470
|
-
import { defineCommand as
|
|
51631
|
+
import { defineCommand as defineCommand212 } from "citty";
|
|
51471
51632
|
|
|
51472
51633
|
// src/lib/streamUpload.ts
|
|
51473
51634
|
import { createHash as createHash2 } from "crypto";
|
|
@@ -51631,7 +51792,7 @@ registerSchema({
|
|
|
51631
51792
|
"dry-run": { type: "boolean", description: "Preview the operation without executing", required: false }
|
|
51632
51793
|
}
|
|
51633
51794
|
});
|
|
51634
|
-
var ingestCommand2 =
|
|
51795
|
+
var ingestCommand2 = defineCommand212({
|
|
51635
51796
|
meta: {
|
|
51636
51797
|
name: "ingest",
|
|
51637
51798
|
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"
|
|
@@ -51893,7 +52054,7 @@ async function uploadToAssetStore(filePath, sizeBytes) {
|
|
|
51893
52054
|
}
|
|
51894
52055
|
|
|
51895
52056
|
// src/commands/videos/search.ts
|
|
51896
|
-
import { defineCommand as
|
|
52057
|
+
import { defineCommand as defineCommand213 } from "citty";
|
|
51897
52058
|
registerSchema({
|
|
51898
52059
|
command: "videos.search",
|
|
51899
52060
|
description: "Search videos by text query. Only returns ready videos.",
|
|
@@ -51903,7 +52064,7 @@ registerSchema({
|
|
|
51903
52064
|
tags: { type: "string", description: "Comma-separated tags to filter by", required: false }
|
|
51904
52065
|
}
|
|
51905
52066
|
});
|
|
51906
|
-
var searchCommand4 =
|
|
52067
|
+
var searchCommand4 = defineCommand213({
|
|
51907
52068
|
meta: {
|
|
51908
52069
|
name: "search",
|
|
51909
52070
|
description: "Semantic search videos by text query. Uses hybrid BM25 + vector + reranking. Example: baker videos search 'product demo' --tags tutorial"
|
|
@@ -51955,7 +52116,7 @@ var tagsCommand6 = makeTagsCommand("videos", "video", "/api/videos/tags");
|
|
|
51955
52116
|
// src/commands/videos/upload.ts
|
|
51956
52117
|
import { readFile as readFile26, stat as stat9 } from "fs/promises";
|
|
51957
52118
|
import { basename as basename3, extname as extname4 } from "path";
|
|
51958
|
-
import { defineCommand as
|
|
52119
|
+
import { defineCommand as defineCommand214 } from "citty";
|
|
51959
52120
|
var MIME_MAP = {
|
|
51960
52121
|
".mp4": "video/mp4",
|
|
51961
52122
|
".mov": "video/quicktime",
|
|
@@ -51997,7 +52158,7 @@ function detectContentType(filePath) {
|
|
|
51997
52158
|
function isRemoteUrl3(value) {
|
|
51998
52159
|
return /^https?:\/\//i.test(value);
|
|
51999
52160
|
}
|
|
52000
|
-
var uploadCommand2 =
|
|
52161
|
+
var uploadCommand2 = defineCommand214({
|
|
52001
52162
|
meta: {
|
|
52002
52163
|
name: "upload",
|
|
52003
52164
|
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"
|
|
@@ -52081,7 +52242,7 @@ var uploadCommand2 = defineCommand213({
|
|
|
52081
52242
|
});
|
|
52082
52243
|
|
|
52083
52244
|
// src/commands/videos/index.ts
|
|
52084
|
-
var videosCommand =
|
|
52245
|
+
var videosCommand = defineCommand215({
|
|
52085
52246
|
meta: {
|
|
52086
52247
|
name: "videos",
|
|
52087
52248
|
description: `Find and manage videos in Baker. Subcommands: search, get, upload, ingest, delete, tags.
|
|
@@ -52108,10 +52269,10 @@ Full guide: __tooling__/docs/tools/baker/videos.md`
|
|
|
52108
52269
|
});
|
|
52109
52270
|
|
|
52110
52271
|
// src/commands/winning-ads/index.ts
|
|
52111
|
-
import { defineCommand as
|
|
52272
|
+
import { defineCommand as defineCommand228 } from "citty";
|
|
52112
52273
|
|
|
52113
52274
|
// src/commands/winning-ads/advertisers.ts
|
|
52114
|
-
import { defineCommand as
|
|
52275
|
+
import { defineCommand as defineCommand216 } from "citty";
|
|
52115
52276
|
|
|
52116
52277
|
// src/commands/winning-ads/shared.ts
|
|
52117
52278
|
function splitList2(value) {
|
|
@@ -52164,7 +52325,7 @@ function advertiserNormalizer(record, full) {
|
|
|
52164
52325
|
last_synced_at: record.last_synced_at ?? null
|
|
52165
52326
|
};
|
|
52166
52327
|
}
|
|
52167
|
-
var advertisersCommand2 =
|
|
52328
|
+
var advertisersCommand2 = defineCommand216({
|
|
52168
52329
|
meta: {
|
|
52169
52330
|
name: "advertisers",
|
|
52170
52331
|
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'
|
|
@@ -52222,7 +52383,7 @@ var advertisersCommand2 = defineCommand215({
|
|
|
52222
52383
|
});
|
|
52223
52384
|
|
|
52224
52385
|
// src/commands/winning-ads/brief.ts
|
|
52225
|
-
import { defineCommand as
|
|
52386
|
+
import { defineCommand as defineCommand217 } from "citty";
|
|
52226
52387
|
registerSchema({
|
|
52227
52388
|
command: "winning-ads.brief",
|
|
52228
52389
|
description: "Generate a creative brief grounded in strategically-similar winning ads. Optionally describe the target creative with --dna (JSON) and steer with --notes.",
|
|
@@ -52268,7 +52429,7 @@ function parseDna(raw) {
|
|
|
52268
52429
|
}
|
|
52269
52430
|
return parsed;
|
|
52270
52431
|
}
|
|
52271
|
-
var briefCommand =
|
|
52432
|
+
var briefCommand = defineCommand217({
|
|
52272
52433
|
meta: {
|
|
52273
52434
|
name: "brief",
|
|
52274
52435
|
description: `Generate a creative brief from winning references. Example: baker winning-ads brief --dna '{"angle":"cost savings"}' --notes "B2B, LinkedIn video" --k 8`
|
|
@@ -52304,7 +52465,7 @@ var briefCommand = defineCommand216({
|
|
|
52304
52465
|
});
|
|
52305
52466
|
|
|
52306
52467
|
// src/commands/winning-ads/content.ts
|
|
52307
|
-
import { defineCommand as
|
|
52468
|
+
import { defineCommand as defineCommand218 } from "citty";
|
|
52308
52469
|
registerSchema({
|
|
52309
52470
|
command: "winning-ads.content",
|
|
52310
52471
|
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.",
|
|
@@ -52317,7 +52478,7 @@ registerSchema({
|
|
|
52317
52478
|
}
|
|
52318
52479
|
}
|
|
52319
52480
|
});
|
|
52320
|
-
var contentCommand =
|
|
52481
|
+
var contentCommand = defineCommand218({
|
|
52321
52482
|
meta: {
|
|
52322
52483
|
name: "content",
|
|
52323
52484
|
description: "Read the transcript + on-screen text + copy of one winning ad. Example: baker winning-ads content adg_123 --platform meta --full --output md"
|
|
@@ -52366,7 +52527,7 @@ var contentCommand = defineCommand217({
|
|
|
52366
52527
|
});
|
|
52367
52528
|
|
|
52368
52529
|
// src/commands/winning-ads/feed.ts
|
|
52369
|
-
import { defineCommand as
|
|
52530
|
+
import { defineCommand as defineCommand219 } from "citty";
|
|
52370
52531
|
function buildFeedParams(input) {
|
|
52371
52532
|
const params = {};
|
|
52372
52533
|
const advertiser = splitList2(input.advertiser);
|
|
@@ -52418,7 +52579,7 @@ registerSchema({
|
|
|
52418
52579
|
format: { type: "string", description: "Comma-separated formats to include (e.g. static,video)", required: false }
|
|
52419
52580
|
}
|
|
52420
52581
|
});
|
|
52421
|
-
var feedCommand =
|
|
52582
|
+
var feedCommand = defineCommand219({
|
|
52422
52583
|
meta: {
|
|
52423
52584
|
name: "feed",
|
|
52424
52585
|
description: "Winners across every brand you follow (browse, then trim per advertiser). Example: baker winning-ads feed --per-advertiser 5 --output md"
|
|
@@ -52503,7 +52664,7 @@ var feedCommand = defineCommand218({
|
|
|
52503
52664
|
});
|
|
52504
52665
|
|
|
52505
52666
|
// src/commands/winning-ads/follow.ts
|
|
52506
|
-
import { defineCommand as
|
|
52667
|
+
import { defineCommand as defineCommand220 } from "citty";
|
|
52507
52668
|
var PLATFORMS = ["meta", "linkedin"];
|
|
52508
52669
|
registerSchema({
|
|
52509
52670
|
command: "winning-ads.follow",
|
|
@@ -52518,7 +52679,7 @@ registerSchema({
|
|
|
52518
52679
|
label: { type: "string", description: "Optional display label (defaults to the resolved name)", required: false }
|
|
52519
52680
|
}
|
|
52520
52681
|
});
|
|
52521
|
-
var followCommand =
|
|
52682
|
+
var followCommand = defineCommand220({
|
|
52522
52683
|
meta: {
|
|
52523
52684
|
name: "follow",
|
|
52524
52685
|
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'
|
|
@@ -52565,7 +52726,7 @@ var followCommand = defineCommand219({
|
|
|
52565
52726
|
});
|
|
52566
52727
|
|
|
52567
52728
|
// src/commands/winning-ads/follow-competitors.ts
|
|
52568
|
-
import { defineCommand as
|
|
52729
|
+
import { defineCommand as defineCommand221 } from "citty";
|
|
52569
52730
|
var PLATFORMS2 = ["meta", "linkedin"];
|
|
52570
52731
|
var BATCH_TIMEOUT_MS = 3e5;
|
|
52571
52732
|
function buildFollowBatchBody(input) {
|
|
@@ -52598,7 +52759,7 @@ registerSchema({
|
|
|
52598
52759
|
}
|
|
52599
52760
|
}
|
|
52600
52761
|
});
|
|
52601
|
-
var followCompetitorsCommand =
|
|
52762
|
+
var followCompetitorsCommand = defineCommand221({
|
|
52602
52763
|
meta: {
|
|
52603
52764
|
name: "follow-competitors",
|
|
52604
52765
|
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"'
|
|
@@ -52673,7 +52834,7 @@ var followCompetitorsCommand = defineCommand220({
|
|
|
52673
52834
|
});
|
|
52674
52835
|
|
|
52675
52836
|
// src/commands/winning-ads/following.ts
|
|
52676
|
-
import { defineCommand as
|
|
52837
|
+
import { defineCommand as defineCommand222 } from "citty";
|
|
52677
52838
|
registerSchema({
|
|
52678
52839
|
command: "winning-ads.following",
|
|
52679
52840
|
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.",
|
|
@@ -52727,7 +52888,7 @@ function followingNormalizer(record, full) {
|
|
|
52727
52888
|
platforms: Array.isArray(record.platforms) ? record.platforms : []
|
|
52728
52889
|
};
|
|
52729
52890
|
}
|
|
52730
|
-
var followingCommand =
|
|
52891
|
+
var followingCommand = defineCommand222({
|
|
52731
52892
|
meta: {
|
|
52732
52893
|
name: "following",
|
|
52733
52894
|
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"
|
|
@@ -52763,7 +52924,7 @@ var followingCommand = defineCommand221({
|
|
|
52763
52924
|
});
|
|
52764
52925
|
|
|
52765
52926
|
// src/commands/winning-ads/patterns.ts
|
|
52766
|
-
import { defineCommand as
|
|
52927
|
+
import { defineCommand as defineCommand223 } from "citty";
|
|
52767
52928
|
registerSchema({
|
|
52768
52929
|
command: "winning-ads.patterns",
|
|
52769
52930
|
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.",
|
|
@@ -52802,7 +52963,7 @@ function discriminatorRow(record) {
|
|
|
52802
52963
|
top_values_duds: Array.isArray(record.top_values_b) ? record.top_values_b.join(", ") : ""
|
|
52803
52964
|
};
|
|
52804
52965
|
}
|
|
52805
|
-
var patternsCommand =
|
|
52966
|
+
var patternsCommand = defineCommand223({
|
|
52806
52967
|
meta: {
|
|
52807
52968
|
name: "patterns",
|
|
52808
52969
|
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"
|
|
@@ -52858,7 +53019,7 @@ var patternsCommand = defineCommand222({
|
|
|
52858
53019
|
});
|
|
52859
53020
|
|
|
52860
53021
|
// src/commands/winning-ads/search.ts
|
|
52861
|
-
import { defineCommand as
|
|
53022
|
+
import { defineCommand as defineCommand224 } from "citty";
|
|
52862
53023
|
registerSchema({
|
|
52863
53024
|
command: "winning-ads.search",
|
|
52864
53025
|
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.",
|
|
@@ -52966,7 +53127,7 @@ function buildSearchBody2(args) {
|
|
|
52966
53127
|
}
|
|
52967
53128
|
return body;
|
|
52968
53129
|
}
|
|
52969
|
-
var searchCommand5 =
|
|
53130
|
+
var searchCommand5 = defineCommand224({
|
|
52970
53131
|
meta: {
|
|
52971
53132
|
name: "search",
|
|
52972
53133
|
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"
|
|
@@ -53081,7 +53242,7 @@ var searchCommand5 = defineCommand223({
|
|
|
53081
53242
|
});
|
|
53082
53243
|
|
|
53083
53244
|
// src/commands/winning-ads/seeds.ts
|
|
53084
|
-
import { defineCommand as
|
|
53245
|
+
import { defineCommand as defineCommand225 } from "citty";
|
|
53085
53246
|
function leanRow(r) {
|
|
53086
53247
|
return {
|
|
53087
53248
|
key: r.key,
|
|
@@ -53109,7 +53270,7 @@ function makeSeedCommand(opts) {
|
|
|
53109
53270
|
limit: { type: "number", description: "Max keys 1-100 (default 20)", required: false, default: 20 }
|
|
53110
53271
|
}
|
|
53111
53272
|
});
|
|
53112
|
-
return
|
|
53273
|
+
return defineCommand225({
|
|
53113
53274
|
meta: { name: opts.name, description: opts.description },
|
|
53114
53275
|
args: {
|
|
53115
53276
|
platform: { type: "string", description: "Single platform to segment on", required: false },
|
|
@@ -53158,7 +53319,7 @@ var formatsCommand = makeSeedCommand({
|
|
|
53158
53319
|
});
|
|
53159
53320
|
|
|
53160
53321
|
// src/commands/winning-ads/unfollow.ts
|
|
53161
|
-
import { defineCommand as
|
|
53322
|
+
import { defineCommand as defineCommand226 } from "citty";
|
|
53162
53323
|
registerSchema({
|
|
53163
53324
|
command: "winning-ads.unfollow",
|
|
53164
53325
|
description: "Stop following a brand \u2014 removes it from your ad-dna library by advertiser id.",
|
|
@@ -53166,7 +53327,7 @@ registerSchema({
|
|
|
53166
53327
|
advertiser: { type: "string", description: "Advertiser id to unfollow", required: true }
|
|
53167
53328
|
}
|
|
53168
53329
|
});
|
|
53169
|
-
var unfollowCommand =
|
|
53330
|
+
var unfollowCommand = defineCommand226({
|
|
53170
53331
|
meta: {
|
|
53171
53332
|
name: "unfollow",
|
|
53172
53333
|
description: "Stop following a brand by advertiser id. Example: baker winning-ads unfollow adv_123"
|
|
@@ -53187,7 +53348,7 @@ var unfollowCommand = defineCommand225({
|
|
|
53187
53348
|
});
|
|
53188
53349
|
|
|
53189
53350
|
// src/commands/winning-ads/winners.ts
|
|
53190
|
-
import { defineCommand as
|
|
53351
|
+
import { defineCommand as defineCommand227 } from "citty";
|
|
53191
53352
|
registerSchema({
|
|
53192
53353
|
command: "winning-ads.winners",
|
|
53193
53354
|
description: "Top winning ads for one advertiser id (from `advertisers` or `following`). Returns lean winner cards; add --full for DNA + longevity.",
|
|
@@ -53197,7 +53358,7 @@ registerSchema({
|
|
|
53197
53358
|
platform: { type: "string", description: "Filter to a single platform: meta|linkedin", required: false }
|
|
53198
53359
|
}
|
|
53199
53360
|
});
|
|
53200
|
-
var winnersCommand =
|
|
53361
|
+
var winnersCommand = defineCommand227({
|
|
53201
53362
|
meta: {
|
|
53202
53363
|
name: "winners",
|
|
53203
53364
|
description: "Top winning ads for a specific advertiser id. Example: baker winning-ads winners adv_123 --top 15 --output md"
|
|
@@ -53247,7 +53408,7 @@ var winnersCommand = defineCommand226({
|
|
|
53247
53408
|
});
|
|
53248
53409
|
|
|
53249
53410
|
// src/commands/winning-ads/index.ts
|
|
53250
|
-
var winningAdsCommand =
|
|
53411
|
+
var winningAdsCommand = defineCommand228({
|
|
53251
53412
|
meta: {
|
|
53252
53413
|
name: "winning-ads",
|
|
53253
53414
|
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.
|
|
@@ -53485,7 +53646,7 @@ function getCliVersion() {
|
|
|
53485
53646
|
}
|
|
53486
53647
|
|
|
53487
53648
|
// src/cli.ts
|
|
53488
|
-
var main =
|
|
53649
|
+
var main = defineCommand229({
|
|
53489
53650
|
meta: {
|
|
53490
53651
|
name: "baker",
|
|
53491
53652
|
version: getCliVersion(),
|