@koda-sl/baker-cli 0.296.0 → 0.297.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -0
- package/dist/cli.js +442 -218
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -109,7 +109,7 @@ import {
|
|
|
109
109
|
} from "./chunk-DZUVUGEP.js";
|
|
110
110
|
|
|
111
111
|
// src/cli.ts
|
|
112
|
-
import { defineCommand as
|
|
112
|
+
import { defineCommand as defineCommand239, runMain } from "citty";
|
|
113
113
|
|
|
114
114
|
// src/cache-flag.ts
|
|
115
115
|
var NO_CACHE_ARG = {
|
|
@@ -6155,6 +6155,24 @@ var imagesGroupResponseSchema = z18.object({
|
|
|
6155
6155
|
});
|
|
6156
6156
|
var imagesDeleteRequestSchema = z18.object({ id: z18.string().min(1, "Missing image ID") });
|
|
6157
6157
|
var imagesDeleteResponseSchema = z18.object({ ok: z18.literal(true) });
|
|
6158
|
+
var imagesDescribeRequestSchema = z18.object({
|
|
6159
|
+
id: z18.string().min(1, "Missing image ID"),
|
|
6160
|
+
name: z18.string().min(1).optional(),
|
|
6161
|
+
description: z18.string().min(1).optional(),
|
|
6162
|
+
tags: z18.array(z18.string()).optional(),
|
|
6163
|
+
/** Return the whole library row alongside the three fields that changed. */
|
|
6164
|
+
full: z18.boolean().optional()
|
|
6165
|
+
}).refine((body) => body.name !== void 0 || body.description !== void 0 || body.tags !== void 0, {
|
|
6166
|
+
message: "Pass at least one of name, description or tags"
|
|
6167
|
+
});
|
|
6168
|
+
var imagesDescribeResponseSchema = z18.object({
|
|
6169
|
+
id: z18.string(),
|
|
6170
|
+
name: z18.string(),
|
|
6171
|
+
description: z18.string(),
|
|
6172
|
+
tags: z18.array(z18.string()),
|
|
6173
|
+
/** Present only when the request asked for it. */
|
|
6174
|
+
image: imagesGetResponseSchema.optional()
|
|
6175
|
+
});
|
|
6158
6176
|
var imagesUpscaleRequestSchema = z18.object({ imageId: z18.string().min(1, "Missing image ID") });
|
|
6159
6177
|
var imagesUpscaleResponseSchema = z18.object({
|
|
6160
6178
|
imageId: z18.string(),
|
|
@@ -7078,6 +7096,24 @@ var videosIngestResponseSchema = z24.object({
|
|
|
7078
7096
|
videoId: z24.string(),
|
|
7079
7097
|
deduped: z24.boolean()
|
|
7080
7098
|
});
|
|
7099
|
+
var videosDescribeRequestSchema = z24.object({
|
|
7100
|
+
id: z24.string().min(1, "Missing video ID"),
|
|
7101
|
+
name: z24.string().min(1).optional(),
|
|
7102
|
+
description: z24.string().min(1).optional(),
|
|
7103
|
+
tags: z24.array(z24.string()).optional(),
|
|
7104
|
+
/** Return the whole library row alongside the three fields that changed. */
|
|
7105
|
+
full: z24.boolean().optional()
|
|
7106
|
+
}).refine((body) => body.name !== void 0 || body.description !== void 0 || body.tags !== void 0, {
|
|
7107
|
+
message: "Pass at least one of name, description or tags"
|
|
7108
|
+
});
|
|
7109
|
+
var videosDescribeResponseSchema = z24.object({
|
|
7110
|
+
id: z24.string(),
|
|
7111
|
+
name: z24.string(),
|
|
7112
|
+
description: z24.string(),
|
|
7113
|
+
tags: z24.array(z24.string()),
|
|
7114
|
+
/** Present only when the request asked for it. */
|
|
7115
|
+
video: videosGetResponseSchema.optional()
|
|
7116
|
+
});
|
|
7081
7117
|
var videosDeleteRequestSchema = z24.object({ id: z24.string().min(1, "Missing video ID") });
|
|
7082
7118
|
var videosDeleteResponseSchema = z24.object({ ok: z24.literal(true) });
|
|
7083
7119
|
|
|
@@ -45204,7 +45240,7 @@ Full guide: __tooling__/docs/tools/baker/hubspot.md`
|
|
|
45204
45240
|
});
|
|
45205
45241
|
|
|
45206
45242
|
// src/commands/images/index.ts
|
|
45207
|
-
import { defineCommand as
|
|
45243
|
+
import { defineCommand as defineCommand164 } from "citty";
|
|
45208
45244
|
|
|
45209
45245
|
// src/commands/images/crop.ts
|
|
45210
45246
|
import { defineCommand as defineCommand138 } from "citty";
|
|
@@ -45419,9 +45455,118 @@ var deleteCommand2 = defineCommand139({
|
|
|
45419
45455
|
}
|
|
45420
45456
|
});
|
|
45421
45457
|
|
|
45422
|
-
// src/commands/images/
|
|
45458
|
+
// src/commands/images/describe.ts
|
|
45423
45459
|
import { defineCommand as defineCommand140 } from "citty";
|
|
45424
45460
|
|
|
45461
|
+
// src/lib/describeArgs.ts
|
|
45462
|
+
function describeTags(rawArgs, parsed) {
|
|
45463
|
+
const given = repeatedValues(rawArgs, "tags", parsed);
|
|
45464
|
+
if (given.length === 0) return void 0;
|
|
45465
|
+
return given.flatMap((chunk) => chunk.split(",").map((tag) => tag.trim())).filter(Boolean);
|
|
45466
|
+
}
|
|
45467
|
+
function describeHints(noun, body) {
|
|
45468
|
+
const search = noun === "images" ? "baker images library" : "baker videos search";
|
|
45469
|
+
const hints2 = [];
|
|
45470
|
+
if (body.description !== void 0) {
|
|
45471
|
+
hints2.push(
|
|
45472
|
+
`The semantic index rebuilds in the background \u2014 a \`${search}\` run right now may still rank on the old description.`
|
|
45473
|
+
);
|
|
45474
|
+
}
|
|
45475
|
+
if (body.tags !== void 0) {
|
|
45476
|
+
hints2.push(`--tags replaced the whole tag set. Run \`baker ${noun} get <id>\` first if you meant to add to it.`);
|
|
45477
|
+
}
|
|
45478
|
+
return hints2.length > 0 ? hints2 : void 0;
|
|
45479
|
+
}
|
|
45480
|
+
function describeFields(args, rawArgs) {
|
|
45481
|
+
const fields = {};
|
|
45482
|
+
if (args.description) fields.description = args.description;
|
|
45483
|
+
if (args.name) fields.name = args.name;
|
|
45484
|
+
const tags = describeTags(rawArgs, args.tags);
|
|
45485
|
+
if (tags !== void 0) fields.tags = tags;
|
|
45486
|
+
return fields;
|
|
45487
|
+
}
|
|
45488
|
+
function describeErrorFix(code, noun) {
|
|
45489
|
+
if (code !== "CONFLICT") return void 0;
|
|
45490
|
+
return `Poll \`baker ${noun} get <id>\` until \`status\` reads "ready", then run this again. Do not retry immediately \u2014 the answer will not change until the analysis lands.`;
|
|
45491
|
+
}
|
|
45492
|
+
|
|
45493
|
+
// src/commands/images/describe.ts
|
|
45494
|
+
var DESCRIPTION_HELP = "What the image actually shows, in the words someone would search for it by. This is what `baker images library` retrieves on.";
|
|
45495
|
+
registerSchema({
|
|
45496
|
+
command: "images.describe",
|
|
45497
|
+
description: "Correct a library image's stored name, description or tags. Start here when an image's description is wrong \u2014 it is what semantic search reads.",
|
|
45498
|
+
args: {
|
|
45499
|
+
id: { type: "string", description: "Image ID", required: true },
|
|
45500
|
+
description: { type: "string", description: DESCRIPTION_HELP, required: false },
|
|
45501
|
+
name: { type: "string", description: "Short human label for the image", required: false },
|
|
45502
|
+
tags: {
|
|
45503
|
+
type: "string",
|
|
45504
|
+
description: "Tags for the image \u2014 repeatable (`--tags a --tags b`) or one comma list. **Replaces** the existing set",
|
|
45505
|
+
required: false
|
|
45506
|
+
},
|
|
45507
|
+
full: { type: "boolean", description: "Return the whole library row, not just what changed", required: false }
|
|
45508
|
+
}
|
|
45509
|
+
});
|
|
45510
|
+
var describeCommand = defineCommand140({
|
|
45511
|
+
meta: {
|
|
45512
|
+
name: "describe",
|
|
45513
|
+
description: `Correct what the library says an image is. Only the fields you pass change; the rest keep their current values.
|
|
45514
|
+
|
|
45515
|
+
Start here when a search keeps missing an image you know is there, or when the AI description got the subject wrong.
|
|
45516
|
+
|
|
45517
|
+
Example: baker images describe j571abc123 --description "Founder speaking on stage at SaaStr, blue backdrop" --tags event,team`
|
|
45518
|
+
},
|
|
45519
|
+
args: {
|
|
45520
|
+
id: { type: "positional", description: "Image ID", required: false },
|
|
45521
|
+
"image-id": { type: "string", description: "Image ID (alternative to positional)", required: false },
|
|
45522
|
+
description: { type: "string", description: DESCRIPTION_HELP, required: false },
|
|
45523
|
+
name: { type: "string", description: "Short human label for the image", required: false },
|
|
45524
|
+
tags: {
|
|
45525
|
+
type: "string",
|
|
45526
|
+
description: "Tags for the image \u2014 repeatable (`--tags a --tags b`) or one comma list. **Replaces** the existing set",
|
|
45527
|
+
required: false
|
|
45528
|
+
},
|
|
45529
|
+
full: { type: "boolean", description: "Return the whole library row", required: false, default: false }
|
|
45530
|
+
},
|
|
45531
|
+
run: async ({ args, rawArgs }) => {
|
|
45532
|
+
const id = args.id || args["image-id"];
|
|
45533
|
+
if (!id) {
|
|
45534
|
+
writeJson({ ok: false, error: { code: "VALIDATION_ERROR", message: "Image ID is required" } });
|
|
45535
|
+
process.exit(1);
|
|
45536
|
+
}
|
|
45537
|
+
const fields = describeFields(args, rawArgs);
|
|
45538
|
+
if (fields.name === void 0 && fields.description === void 0 && fields.tags === void 0) {
|
|
45539
|
+
writeJson({
|
|
45540
|
+
ok: false,
|
|
45541
|
+
error: {
|
|
45542
|
+
code: "VALIDATION_ERROR",
|
|
45543
|
+
message: "Nothing to change",
|
|
45544
|
+
fix: "Pass at least one of --description, --name or --tags."
|
|
45545
|
+
}
|
|
45546
|
+
});
|
|
45547
|
+
process.exit(1);
|
|
45548
|
+
}
|
|
45549
|
+
try {
|
|
45550
|
+
validateConvexId(id);
|
|
45551
|
+
const body = { id, ...fields };
|
|
45552
|
+
if (args.full) body.full = true;
|
|
45553
|
+
const data = await apiPost("/api/images/describe", body);
|
|
45554
|
+
writeJson({ ok: true, data, hints: describeHints("images", fields) });
|
|
45555
|
+
} catch (err) {
|
|
45556
|
+
if (err instanceof ApiError) {
|
|
45557
|
+
const fix = describeErrorFix(err.code, "images");
|
|
45558
|
+
writeJson({ ok: false, error: { code: err.code, message: err.message, ...fix ? { fix } : {} } });
|
|
45559
|
+
process.exit(1);
|
|
45560
|
+
}
|
|
45561
|
+
writeJson({ ok: false, error: { code: "INTERNAL_ERROR", message: "Unexpected error" } });
|
|
45562
|
+
process.exit(1);
|
|
45563
|
+
}
|
|
45564
|
+
}
|
|
45565
|
+
});
|
|
45566
|
+
|
|
45567
|
+
// src/commands/images/dimensions.ts
|
|
45568
|
+
import { defineCommand as defineCommand141 } from "citty";
|
|
45569
|
+
|
|
45425
45570
|
// src/lib/image/dimensions.ts
|
|
45426
45571
|
import { imageSize } from "image-size";
|
|
45427
45572
|
function getDimensionsFromBuffer(buffer) {
|
|
@@ -45449,7 +45594,7 @@ registerSchema({
|
|
|
45449
45594
|
}
|
|
45450
45595
|
}
|
|
45451
45596
|
});
|
|
45452
|
-
var dimensionsCommand =
|
|
45597
|
+
var dimensionsCommand = defineCommand141({
|
|
45453
45598
|
meta: {
|
|
45454
45599
|
name: "dimensions",
|
|
45455
45600
|
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"
|
|
@@ -45505,7 +45650,7 @@ var dimensionsCommand = defineCommand140({
|
|
|
45505
45650
|
});
|
|
45506
45651
|
|
|
45507
45652
|
// src/commands/images/download.ts
|
|
45508
|
-
import { defineCommand as
|
|
45653
|
+
import { defineCommand as defineCommand142 } from "citty";
|
|
45509
45654
|
|
|
45510
45655
|
// src/commands/images/downloadPaths.ts
|
|
45511
45656
|
import { basename as basename2, extname as extname3, join as join6 } from "path";
|
|
@@ -45746,7 +45891,7 @@ function emitError3(err) {
|
|
|
45746
45891
|
writeJson({ ok: false, error: { code: "INTERNAL_ERROR", message: "Unexpected error" } });
|
|
45747
45892
|
process.exit(1);
|
|
45748
45893
|
}
|
|
45749
|
-
var downloadCommand =
|
|
45894
|
+
var downloadCommand = defineCommand142({
|
|
45750
45895
|
meta: {
|
|
45751
45896
|
name: "download",
|
|
45752
45897
|
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"
|
|
@@ -45779,7 +45924,7 @@ var downloadCommand = defineCommand141({
|
|
|
45779
45924
|
});
|
|
45780
45925
|
|
|
45781
45926
|
// src/commands/images/extract.ts
|
|
45782
|
-
import { defineCommand as
|
|
45927
|
+
import { defineCommand as defineCommand143 } from "citty";
|
|
45783
45928
|
|
|
45784
45929
|
// src/commands/images/autoIngest.ts
|
|
45785
45930
|
var AUTO_INGEST_MAX = {
|
|
@@ -45826,7 +45971,7 @@ registerSchema({
|
|
|
45826
45971
|
}
|
|
45827
45972
|
}
|
|
45828
45973
|
});
|
|
45829
|
-
var extractCommand =
|
|
45974
|
+
var extractCommand = defineCommand143({
|
|
45830
45975
|
meta: {
|
|
45831
45976
|
name: "extract",
|
|
45832
45977
|
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"
|
|
@@ -45881,7 +46026,7 @@ var extractCommand = defineCommand142({
|
|
|
45881
46026
|
});
|
|
45882
46027
|
|
|
45883
46028
|
// src/commands/images/find.ts
|
|
45884
|
-
import { defineCommand as
|
|
46029
|
+
import { defineCommand as defineCommand144 } from "citty";
|
|
45885
46030
|
|
|
45886
46031
|
// src/commands/images/providerHits.ts
|
|
45887
46032
|
function asRecord3(value) {
|
|
@@ -46019,7 +46164,7 @@ registerSchema({
|
|
|
46019
46164
|
full: { type: "boolean", description: "Include full metadata", required: false, default: false }
|
|
46020
46165
|
}
|
|
46021
46166
|
});
|
|
46022
|
-
var findCommand =
|
|
46167
|
+
var findCommand = defineCommand144({
|
|
46023
46168
|
meta: {
|
|
46024
46169
|
name: "find",
|
|
46025
46170
|
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,pexels --limit 20"
|
|
@@ -46092,7 +46237,7 @@ var findCommand = defineCommand143({
|
|
|
46092
46237
|
});
|
|
46093
46238
|
|
|
46094
46239
|
// src/commands/images/get.ts
|
|
46095
|
-
import { defineCommand as
|
|
46240
|
+
import { defineCommand as defineCommand145 } from "citty";
|
|
46096
46241
|
registerSchema({
|
|
46097
46242
|
command: "images.get",
|
|
46098
46243
|
description: "Get a single image by ID",
|
|
@@ -46100,7 +46245,7 @@ registerSchema({
|
|
|
46100
46245
|
id: { type: "string", description: "Image ID", required: true }
|
|
46101
46246
|
}
|
|
46102
46247
|
});
|
|
46103
|
-
var getCommand3 =
|
|
46248
|
+
var getCommand3 = defineCommand145({
|
|
46104
46249
|
meta: { name: "get", description: "Get a single image by ID. Example: baker images get j571abc123" },
|
|
46105
46250
|
args: {
|
|
46106
46251
|
id: { type: "positional", description: "Image ID", required: false },
|
|
@@ -46136,7 +46281,7 @@ var getCommand3 = defineCommand144({
|
|
|
46136
46281
|
});
|
|
46137
46282
|
|
|
46138
46283
|
// src/commands/images/gif.ts
|
|
46139
|
-
import { defineCommand as
|
|
46284
|
+
import { defineCommand as defineCommand146 } from "citty";
|
|
46140
46285
|
registerSchema({
|
|
46141
46286
|
command: "images.gif",
|
|
46142
46287
|
description: "Search Giphy for GIFs / reaction memes (paid social creative).",
|
|
@@ -46168,7 +46313,7 @@ registerSchema({
|
|
|
46168
46313
|
}
|
|
46169
46314
|
}
|
|
46170
46315
|
});
|
|
46171
|
-
var gifCommand =
|
|
46316
|
+
var gifCommand = defineCommand146({
|
|
46172
46317
|
meta: {
|
|
46173
46318
|
name: "gif",
|
|
46174
46319
|
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"
|
|
@@ -46215,7 +46360,7 @@ var gifCommand = defineCommand145({
|
|
|
46215
46360
|
});
|
|
46216
46361
|
|
|
46217
46362
|
// src/commands/images/google.ts
|
|
46218
|
-
import { defineCommand as
|
|
46363
|
+
import { defineCommand as defineCommand147 } from "citty";
|
|
46219
46364
|
var GOOGLE_ERROR_FIX = {
|
|
46220
46365
|
action: "use_different_resource",
|
|
46221
46366
|
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."
|
|
@@ -46255,7 +46400,7 @@ registerSchema({
|
|
|
46255
46400
|
}
|
|
46256
46401
|
}
|
|
46257
46402
|
});
|
|
46258
|
-
var googleCommand2 =
|
|
46403
|
+
var googleCommand2 = defineCommand147({
|
|
46259
46404
|
meta: {
|
|
46260
46405
|
name: "google",
|
|
46261
46406
|
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"
|
|
@@ -46328,7 +46473,7 @@ var googleCommand2 = defineCommand146({
|
|
|
46328
46473
|
});
|
|
46329
46474
|
|
|
46330
46475
|
// src/commands/images/group.ts
|
|
46331
|
-
import { defineCommand as
|
|
46476
|
+
import { defineCommand as defineCommand148 } from "citty";
|
|
46332
46477
|
|
|
46333
46478
|
// src/commands/mediaGroup.ts
|
|
46334
46479
|
async function runMediaGroupLookup(input) {
|
|
@@ -46381,7 +46526,7 @@ registerSchema({
|
|
|
46381
46526
|
"group-key": { type: "string", description: "The set key directly, when you already have it", required: false }
|
|
46382
46527
|
}
|
|
46383
46528
|
});
|
|
46384
|
-
var groupCommand =
|
|
46529
|
+
var groupCommand = defineCommand148({
|
|
46385
46530
|
meta: {
|
|
46386
46531
|
name: "group",
|
|
46387
46532
|
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>"
|
|
@@ -46401,7 +46546,7 @@ var groupCommand = defineCommand147({
|
|
|
46401
46546
|
});
|
|
46402
46547
|
|
|
46403
46548
|
// src/commands/images/icon.ts
|
|
46404
|
-
import { defineCommand as
|
|
46549
|
+
import { defineCommand as defineCommand149 } from "citty";
|
|
46405
46550
|
|
|
46406
46551
|
// src/commands/images/brandVerification.ts
|
|
46407
46552
|
function brandToken(domain) {
|
|
@@ -46498,7 +46643,7 @@ registerSchema({
|
|
|
46498
46643
|
full: { type: "boolean", description: "Include full metadata", required: false, default: false }
|
|
46499
46644
|
}
|
|
46500
46645
|
});
|
|
46501
|
-
var iconCommand =
|
|
46646
|
+
var iconCommand = defineCommand149({
|
|
46502
46647
|
meta: {
|
|
46503
46648
|
name: "icon",
|
|
46504
46649
|
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'"
|
|
@@ -46568,7 +46713,7 @@ var iconCommand = defineCommand148({
|
|
|
46568
46713
|
});
|
|
46569
46714
|
|
|
46570
46715
|
// src/commands/images/ingest.ts
|
|
46571
|
-
import { defineCommand as
|
|
46716
|
+
import { defineCommand as defineCommand150 } from "citty";
|
|
46572
46717
|
var SOURCE_VALUES = imageSourceSchema.options.join(" | ");
|
|
46573
46718
|
registerSchema({
|
|
46574
46719
|
command: "images.ingest",
|
|
@@ -46583,7 +46728,7 @@ registerSchema({
|
|
|
46583
46728
|
fields: { type: "string", description: "Comma-separated field names to include", required: false }
|
|
46584
46729
|
}
|
|
46585
46730
|
});
|
|
46586
|
-
var ingestCommand =
|
|
46731
|
+
var ingestCommand = defineCommand150({
|
|
46587
46732
|
meta: {
|
|
46588
46733
|
name: "ingest",
|
|
46589
46734
|
description: "Download a remote URL and store it in the library. Hash-deduped on bytes + externalId.\n\nExample: baker images ingest https://images.pexels.com/photos/13219418/pexels-photo-13219418.jpeg --source pexels --external-id 13219418"
|
|
@@ -46652,7 +46797,7 @@ var ingestCommand = defineCommand149({
|
|
|
46652
46797
|
});
|
|
46653
46798
|
|
|
46654
46799
|
// src/commands/images/layerize.ts
|
|
46655
|
-
import { defineCommand as
|
|
46800
|
+
import { defineCommand as defineCommand151 } from "citty";
|
|
46656
46801
|
registerSchema({
|
|
46657
46802
|
command: "images.layerize",
|
|
46658
46803
|
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.",
|
|
@@ -46716,7 +46861,7 @@ async function pollUntilSettled(imageId, maxWait) {
|
|
|
46716
46861
|
}
|
|
46717
46862
|
return null;
|
|
46718
46863
|
}
|
|
46719
|
-
var layerizeCommand =
|
|
46864
|
+
var layerizeCommand = defineCommand151({
|
|
46720
46865
|
meta: {
|
|
46721
46866
|
name: "layerize",
|
|
46722
46867
|
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'"
|
|
@@ -46785,7 +46930,7 @@ registerSchema({
|
|
|
46785
46930
|
full: { type: "boolean", description: "Include geometry and typography for every layer", required: false }
|
|
46786
46931
|
}
|
|
46787
46932
|
});
|
|
46788
|
-
var layersCommand =
|
|
46933
|
+
var layersCommand = defineCommand151({
|
|
46789
46934
|
meta: {
|
|
46790
46935
|
name: "layers",
|
|
46791
46936
|
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"
|
|
@@ -46825,7 +46970,7 @@ var layersCommand = defineCommand150({
|
|
|
46825
46970
|
});
|
|
46826
46971
|
|
|
46827
46972
|
// src/commands/images/library.ts
|
|
46828
|
-
import { defineCommand as
|
|
46973
|
+
import { defineCommand as defineCommand152 } from "citty";
|
|
46829
46974
|
registerSchema({
|
|
46830
46975
|
command: "images.library",
|
|
46831
46976
|
description: "Search the company image library. Returns only ready images.",
|
|
@@ -46851,7 +46996,7 @@ registerSchema({
|
|
|
46851
46996
|
}
|
|
46852
46997
|
}
|
|
46853
46998
|
});
|
|
46854
|
-
var libraryCommand =
|
|
46999
|
+
var libraryCommand = defineCommand152({
|
|
46855
47000
|
meta: {
|
|
46856
47001
|
name: "library",
|
|
46857
47002
|
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"
|
|
@@ -46914,7 +47059,7 @@ var libraryCommand = defineCommand151({
|
|
|
46914
47059
|
});
|
|
46915
47060
|
|
|
46916
47061
|
// src/commands/images/logo.ts
|
|
46917
|
-
import { defineCommand as
|
|
47062
|
+
import { defineCommand as defineCommand153 } from "citty";
|
|
46918
47063
|
registerSchema({
|
|
46919
47064
|
command: "images.logo",
|
|
46920
47065
|
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.",
|
|
@@ -46942,7 +47087,7 @@ registerSchema({
|
|
|
46942
47087
|
full: { type: "boolean", description: "Include full metadata", required: false, default: false }
|
|
46943
47088
|
}
|
|
46944
47089
|
});
|
|
46945
|
-
var logoCommand =
|
|
47090
|
+
var logoCommand = defineCommand153({
|
|
46946
47091
|
meta: {
|
|
46947
47092
|
name: "logo",
|
|
46948
47093
|
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"
|
|
@@ -47015,7 +47160,7 @@ var logoCommand = defineCommand152({
|
|
|
47015
47160
|
});
|
|
47016
47161
|
|
|
47017
47162
|
// src/commands/images/normalize.ts
|
|
47018
|
-
import { defineCommand as
|
|
47163
|
+
import { defineCommand as defineCommand154 } from "citty";
|
|
47019
47164
|
|
|
47020
47165
|
// src/lib/image/color-changer.ts
|
|
47021
47166
|
import quantize from "quantize";
|
|
@@ -47747,7 +47892,7 @@ function coerceRawArgs(args) {
|
|
|
47747
47892
|
"dry-run": bool(args["dry-run"])
|
|
47748
47893
|
};
|
|
47749
47894
|
}
|
|
47750
|
-
var normalizeCommand2 =
|
|
47895
|
+
var normalizeCommand2 = defineCommand154({
|
|
47751
47896
|
meta: {
|
|
47752
47897
|
name: "normalize",
|
|
47753
47898
|
description: `Normalize logos / images: declarative recolor + bg removal + trim + resize. Operates on local files; writes in-place by default.
|
|
@@ -47802,7 +47947,7 @@ Examples:
|
|
|
47802
47947
|
});
|
|
47803
47948
|
|
|
47804
47949
|
// src/commands/images/pinterest.ts
|
|
47805
|
-
import { defineCommand as
|
|
47950
|
+
import { defineCommand as defineCommand155 } from "citty";
|
|
47806
47951
|
registerSchema({
|
|
47807
47952
|
command: "images.pinterest",
|
|
47808
47953
|
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.",
|
|
@@ -47822,7 +47967,7 @@ registerSchema({
|
|
|
47822
47967
|
}
|
|
47823
47968
|
}
|
|
47824
47969
|
});
|
|
47825
|
-
var pinterestCommand =
|
|
47970
|
+
var pinterestCommand = defineCommand155({
|
|
47826
47971
|
meta: {
|
|
47827
47972
|
name: "pinterest",
|
|
47828
47973
|
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'"
|
|
@@ -47879,7 +48024,7 @@ var pinterestCommand = defineCommand154({
|
|
|
47879
48024
|
});
|
|
47880
48025
|
|
|
47881
48026
|
// src/commands/images/screenshot.ts
|
|
47882
|
-
import { defineCommand as
|
|
48027
|
+
import { defineCommand as defineCommand156 } from "citty";
|
|
47883
48028
|
registerSchema({
|
|
47884
48029
|
command: "images.screenshot",
|
|
47885
48030
|
description: "Capture a website screenshot via ScreenshotOne. Auto-ingests on success.",
|
|
@@ -47898,7 +48043,7 @@ registerSchema({
|
|
|
47898
48043
|
full: { type: "boolean", description: "Include full metadata", required: false, default: false }
|
|
47899
48044
|
}
|
|
47900
48045
|
});
|
|
47901
|
-
var screenshotCommand =
|
|
48046
|
+
var screenshotCommand = defineCommand156({
|
|
47902
48047
|
meta: {
|
|
47903
48048
|
name: "screenshot",
|
|
47904
48049
|
description: "Screenshot a URL via ScreenshotOne. $0.009/capture. Auto-ingests to library.\n\nExample: baker images screenshot https://stripe.com --full-page"
|
|
@@ -47962,7 +48107,7 @@ var screenshotCommand = defineCommand155({
|
|
|
47962
48107
|
});
|
|
47963
48108
|
|
|
47964
48109
|
// src/commands/images/search.ts
|
|
47965
|
-
import { defineCommand as
|
|
48110
|
+
import { defineCommand as defineCommand157 } from "citty";
|
|
47966
48111
|
registerSchema({
|
|
47967
48112
|
command: "images.search",
|
|
47968
48113
|
description: "Search images by text query. Only returns ready images.",
|
|
@@ -47978,7 +48123,7 @@ registerSchema({
|
|
|
47978
48123
|
tags: { type: "string", description: "Comma-separated tags to filter by", required: false }
|
|
47979
48124
|
}
|
|
47980
48125
|
});
|
|
47981
|
-
var searchCommand =
|
|
48126
|
+
var searchCommand = defineCommand157({
|
|
47982
48127
|
meta: {
|
|
47983
48128
|
name: "search",
|
|
47984
48129
|
description: "Semantic search images by text query. Uses hybrid BM25 + vector + reranking. Example: baker images search 'hero banner' --aspect-ratio 16:9 --tags logo"
|
|
@@ -48038,7 +48183,7 @@ var searchCommand = defineCommand156({
|
|
|
48038
48183
|
});
|
|
48039
48184
|
|
|
48040
48185
|
// src/commands/images/sticker.ts
|
|
48041
|
-
import { defineCommand as
|
|
48186
|
+
import { defineCommand as defineCommand158 } from "citty";
|
|
48042
48187
|
registerSchema({
|
|
48043
48188
|
command: "images.sticker",
|
|
48044
48189
|
description: "Search Giphy stickers \u2014 transparent-background overlays for ad creative.",
|
|
@@ -48070,7 +48215,7 @@ registerSchema({
|
|
|
48070
48215
|
}
|
|
48071
48216
|
}
|
|
48072
48217
|
});
|
|
48073
|
-
var stickerCommand =
|
|
48218
|
+
var stickerCommand = defineCommand158({
|
|
48074
48219
|
meta: {
|
|
48075
48220
|
name: "sticker",
|
|
48076
48221
|
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"
|
|
@@ -48117,7 +48262,7 @@ var stickerCommand = defineCommand157({
|
|
|
48117
48262
|
});
|
|
48118
48263
|
|
|
48119
48264
|
// src/commands/images/stock.ts
|
|
48120
|
-
import { defineCommand as
|
|
48265
|
+
import { defineCommand as defineCommand159 } from "citty";
|
|
48121
48266
|
var STOCK_ERROR_FIX = {
|
|
48122
48267
|
action: "use_different_resource",
|
|
48123
48268
|
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."
|
|
@@ -48197,7 +48342,7 @@ function partialLibraryHints(errors, hitCount) {
|
|
|
48197
48342
|
`These results are partial: ${names} did not answer, so they come from the remaining library alone. Treat a thin result as unproven rather than as "stock does not have this", and report the outage rather than re-running the search.`
|
|
48198
48343
|
];
|
|
48199
48344
|
}
|
|
48200
|
-
var stockCommand =
|
|
48345
|
+
var stockCommand = defineCommand159({
|
|
48201
48346
|
meta: {
|
|
48202
48347
|
name: "stock",
|
|
48203
48348
|
description: "Stock search across the free libraries \u2014 Pexels photographs plus Pixabay photographs, illustrations and vectors. No per-request cost. With --auto-ingest, ingested hits return Baker-owned URLs.\n\nExamples:\n baker images stock 'minimalist office'\n baker images stock 'hero photo of a kitchen' --orientation landscape --size large\n baker images stock 'flat office workers' --type illustration\n baker images stock 'leaf outline mark' --type vector\n baker images stock 'smiling carpenter portrait' --orientation portrait"
|
|
@@ -48272,7 +48417,7 @@ var stockCommand = defineCommand158({
|
|
|
48272
48417
|
});
|
|
48273
48418
|
|
|
48274
48419
|
// src/lib/tags-command.ts
|
|
48275
|
-
import { defineCommand as
|
|
48420
|
+
import { defineCommand as defineCommand160 } from "citty";
|
|
48276
48421
|
function makeTagsCommand(command, label, endpoint) {
|
|
48277
48422
|
registerSchema({
|
|
48278
48423
|
command: `${command}.tags`,
|
|
@@ -48281,7 +48426,7 @@ function makeTagsCommand(command, label, endpoint) {
|
|
|
48281
48426
|
output: { type: "string", description: "Output format: md|json", required: false, default: "md" }
|
|
48282
48427
|
}
|
|
48283
48428
|
});
|
|
48284
|
-
return
|
|
48429
|
+
return defineCommand160({
|
|
48285
48430
|
meta: {
|
|
48286
48431
|
name: "tags",
|
|
48287
48432
|
description: `List the available ${label} tag names (defaults + company custom tags). Use before filtering with --tags. Example: baker ${command} tags`
|
|
@@ -48317,7 +48462,7 @@ function makeTagsCommand(command, label, endpoint) {
|
|
|
48317
48462
|
var tagsCommand3 = makeTagsCommand("images", "image", "/api/images/tags");
|
|
48318
48463
|
|
|
48319
48464
|
// src/commands/images/upload.ts
|
|
48320
|
-
import { defineCommand as
|
|
48465
|
+
import { defineCommand as defineCommand161 } from "citty";
|
|
48321
48466
|
registerSchema({
|
|
48322
48467
|
command: "images.upload",
|
|
48323
48468
|
description: "Upload an image to the library \u2014 local file path or remote http(s) URL.",
|
|
@@ -48355,7 +48500,7 @@ registerSchema({
|
|
|
48355
48500
|
function isRemoteUrl2(value) {
|
|
48356
48501
|
return /^https?:\/\//i.test(value);
|
|
48357
48502
|
}
|
|
48358
|
-
var uploadCommand =
|
|
48503
|
+
var uploadCommand = defineCommand161({
|
|
48359
48504
|
meta: {
|
|
48360
48505
|
name: "upload",
|
|
48361
48506
|
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'"
|
|
@@ -48448,7 +48593,7 @@ async function uploadLocal(target, args) {
|
|
|
48448
48593
|
}
|
|
48449
48594
|
|
|
48450
48595
|
// src/commands/images/upscale.ts
|
|
48451
|
-
import { defineCommand as
|
|
48596
|
+
import { defineCommand as defineCommand162 } from "citty";
|
|
48452
48597
|
registerSchema({
|
|
48453
48598
|
command: "images.upscale",
|
|
48454
48599
|
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).",
|
|
@@ -48463,7 +48608,7 @@ registerSchema({
|
|
|
48463
48608
|
}
|
|
48464
48609
|
});
|
|
48465
48610
|
var POLL_INTERVAL_MS4 = 1500;
|
|
48466
|
-
var upscaleCommand =
|
|
48611
|
+
var upscaleCommand = defineCommand162({
|
|
48467
48612
|
meta: {
|
|
48468
48613
|
name: "upscale",
|
|
48469
48614
|
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"
|
|
@@ -48518,7 +48663,7 @@ var upscaleCommand = defineCommand161({
|
|
|
48518
48663
|
});
|
|
48519
48664
|
|
|
48520
48665
|
// src/commands/images/use.ts
|
|
48521
|
-
import { defineCommand as
|
|
48666
|
+
import { defineCommand as defineCommand163 } from "citty";
|
|
48522
48667
|
registerSchema({
|
|
48523
48668
|
command: "images.use",
|
|
48524
48669
|
description: "Ingest a URL and wait for the library record to be ready.",
|
|
@@ -48547,7 +48692,7 @@ function emitReady(ingestResult, doc, args) {
|
|
|
48547
48692
|
args.full === true
|
|
48548
48693
|
);
|
|
48549
48694
|
}
|
|
48550
|
-
var useCommand =
|
|
48695
|
+
var useCommand = defineCommand163({
|
|
48551
48696
|
meta: {
|
|
48552
48697
|
name: "use",
|
|
48553
48698
|
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"
|
|
@@ -48596,7 +48741,7 @@ var useCommand = defineCommand162({
|
|
|
48596
48741
|
});
|
|
48597
48742
|
|
|
48598
48743
|
// src/commands/images/index.ts
|
|
48599
|
-
var imagesCommand =
|
|
48744
|
+
var imagesCommand = defineCommand164({
|
|
48600
48745
|
meta: {
|
|
48601
48746
|
name: "images",
|
|
48602
48747
|
description: `Find, source, and normalize images. Subcommands route by provider so cost + license are explicit.
|
|
@@ -48625,6 +48770,7 @@ Library writes (run on the Convex backend):
|
|
|
48625
48770
|
baker images get <id> Get a single record
|
|
48626
48771
|
baker images group <id> Every image that arrived in the same set (carousel, page scrape)
|
|
48627
48772
|
baker images delete <id> Delete a record
|
|
48773
|
+
baker images describe <id> --description "\u2026" Correct a wrong name/description/tags \u2014 what library search reads on
|
|
48628
48774
|
|
|
48629
48775
|
Local transforms (operate on files in the sandbox, before upload):
|
|
48630
48776
|
baker images download <url|imageId\u2026> [--out \u2026] Remote URL or library image \u2192 local file (never use curl)
|
|
@@ -48662,6 +48808,7 @@ Full guide: __tooling__/docs/tools/baker/images.md`
|
|
|
48662
48808
|
search: searchCommand,
|
|
48663
48809
|
upload: uploadCommand,
|
|
48664
48810
|
delete: deleteCommand2,
|
|
48811
|
+
describe: describeCommand,
|
|
48665
48812
|
download: downloadCommand,
|
|
48666
48813
|
normalize: normalizeCommand2,
|
|
48667
48814
|
crop: cropCommand,
|
|
@@ -48674,12 +48821,12 @@ Full guide: __tooling__/docs/tools/baker/images.md`
|
|
|
48674
48821
|
});
|
|
48675
48822
|
|
|
48676
48823
|
// src/commands/landing/index.ts
|
|
48677
|
-
import { defineCommand as
|
|
48824
|
+
import { defineCommand as defineCommand176 } from "citty";
|
|
48678
48825
|
|
|
48679
48826
|
// src/commands/landing/critique.ts
|
|
48680
48827
|
import { readdir as readdir12, readFile as readFile27, stat as stat8 } from "fs/promises";
|
|
48681
48828
|
import path34 from "path";
|
|
48682
|
-
import { defineCommand as
|
|
48829
|
+
import { defineCommand as defineCommand165 } from "citty";
|
|
48683
48830
|
|
|
48684
48831
|
// src/engine/landing/lib/constants.ts
|
|
48685
48832
|
var OVERUSED_FONTS = /* @__PURE__ */ new Set([
|
|
@@ -49987,7 +50134,7 @@ function fail6(code, message, fix) {
|
|
|
49987
50134
|
);
|
|
49988
50135
|
process.exit(2);
|
|
49989
50136
|
}
|
|
49990
|
-
var critiqueCommand2 =
|
|
50137
|
+
var critiqueCommand2 = defineCommand165({
|
|
49991
50138
|
meta: {
|
|
49992
50139
|
name: "critique",
|
|
49993
50140
|
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) and positioning integrity (a concession ranking a competitor above the client, a rival named in a comparison) 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."
|
|
@@ -50121,10 +50268,10 @@ async function isDir2(p) {
|
|
|
50121
50268
|
}
|
|
50122
50269
|
|
|
50123
50270
|
// src/commands/landing/inspiration/index.ts
|
|
50124
|
-
import { defineCommand as
|
|
50271
|
+
import { defineCommand as defineCommand174 } from "citty";
|
|
50125
50272
|
|
|
50126
50273
|
// src/commands/landing/inspiration/add.ts
|
|
50127
|
-
import { defineCommand as
|
|
50274
|
+
import { defineCommand as defineCommand166 } from "citty";
|
|
50128
50275
|
|
|
50129
50276
|
// src/commands/landing/inspiration/shared.ts
|
|
50130
50277
|
var INSPIRATION_HINTS = {
|
|
@@ -50206,7 +50353,7 @@ registerSchema({
|
|
|
50206
50353
|
note: { type: "string", description: "Why this page is worth keeping", required: false }
|
|
50207
50354
|
}
|
|
50208
50355
|
});
|
|
50209
|
-
var addCommand =
|
|
50356
|
+
var addCommand = defineCommand166({
|
|
50210
50357
|
meta: {
|
|
50211
50358
|
name: "add",
|
|
50212
50359
|
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'"
|
|
@@ -50248,7 +50395,7 @@ var addCommand = defineCommand165({
|
|
|
50248
50395
|
// src/commands/landing/inspiration/code.ts
|
|
50249
50396
|
import { mkdir as mkdir10, writeFile as writeFile14 } from "fs/promises";
|
|
50250
50397
|
import path35 from "path";
|
|
50251
|
-
import { defineCommand as
|
|
50398
|
+
import { defineCommand as defineCommand167 } from "citty";
|
|
50252
50399
|
registerSchema({
|
|
50253
50400
|
command: "landing.inspiration.code",
|
|
50254
50401
|
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.",
|
|
@@ -50257,7 +50404,7 @@ registerSchema({
|
|
|
50257
50404
|
full: { type: "boolean", description: "Print the markup inline as well as writing it", required: false }
|
|
50258
50405
|
}
|
|
50259
50406
|
});
|
|
50260
|
-
var codeCommand =
|
|
50407
|
+
var codeCommand = defineCommand167({
|
|
50261
50408
|
meta: {
|
|
50262
50409
|
name: "code",
|
|
50263
50410
|
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."
|
|
@@ -50303,7 +50450,7 @@ var codeCommand = defineCommand166({
|
|
|
50303
50450
|
});
|
|
50304
50451
|
|
|
50305
50452
|
// src/commands/landing/inspiration/favorites.ts
|
|
50306
|
-
import { defineCommand as
|
|
50453
|
+
import { defineCommand as defineCommand168 } from "citty";
|
|
50307
50454
|
registerSchema({
|
|
50308
50455
|
command: "landing.inspiration.favorites",
|
|
50309
50456
|
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.",
|
|
@@ -50317,7 +50464,7 @@ registerSchema({
|
|
|
50317
50464
|
}
|
|
50318
50465
|
}
|
|
50319
50466
|
});
|
|
50320
|
-
var favoritesCommand =
|
|
50467
|
+
var favoritesCommand = defineCommand168({
|
|
50321
50468
|
meta: {
|
|
50322
50469
|
name: "favorites",
|
|
50323
50470
|
description: "List this company's saved reference sections. Example: baker landing inspiration favorites --type hero,pricing"
|
|
@@ -50397,7 +50544,7 @@ registerSchema({
|
|
|
50397
50544
|
note: { type: "string", description: "Why this is worth keeping", required: false }
|
|
50398
50545
|
}
|
|
50399
50546
|
});
|
|
50400
|
-
var favoriteCommand =
|
|
50547
|
+
var favoriteCommand = defineCommand168({
|
|
50401
50548
|
meta: {
|
|
50402
50549
|
name: "favorite",
|
|
50403
50550
|
description: "Save a reference section to this company. Example: baker landing inspiration favorite k57abc\u2026"
|
|
@@ -50435,7 +50582,7 @@ registerSchema({
|
|
|
50435
50582
|
page: { type: "boolean", description: "Treat the id as a page rather than a section", required: false }
|
|
50436
50583
|
}
|
|
50437
50584
|
});
|
|
50438
|
-
var unfavoriteCommand =
|
|
50585
|
+
var unfavoriteCommand = defineCommand168({
|
|
50439
50586
|
meta: {
|
|
50440
50587
|
name: "unfavorite",
|
|
50441
50588
|
description: "Remove a reference section from this company's saved set. Example: baker landing inspiration unfavorite k57abc\u2026"
|
|
@@ -50457,7 +50604,7 @@ var unfavoriteCommand = defineCommand167({
|
|
|
50457
50604
|
});
|
|
50458
50605
|
|
|
50459
50606
|
// src/commands/landing/inspiration/page.ts
|
|
50460
|
-
import { defineCommand as
|
|
50607
|
+
import { defineCommand as defineCommand169 } from "citty";
|
|
50461
50608
|
registerSchema({
|
|
50462
50609
|
command: "landing.inspiration.page",
|
|
50463
50610
|
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.",
|
|
@@ -50474,7 +50621,7 @@ registerSchema({
|
|
|
50474
50621
|
}
|
|
50475
50622
|
}
|
|
50476
50623
|
});
|
|
50477
|
-
var pageCommand2 =
|
|
50624
|
+
var pageCommand2 = defineCommand169({
|
|
50478
50625
|
meta: {
|
|
50479
50626
|
name: "page",
|
|
50480
50627
|
description: "Show how a reference page sequences its sections. Example: baker landing inspiration page j91xyz\u2026 \u2014 the blueprint, not the pixels."
|
|
@@ -50537,7 +50684,7 @@ var pageCommand2 = defineCommand168({
|
|
|
50537
50684
|
});
|
|
50538
50685
|
|
|
50539
50686
|
// src/commands/landing/inspiration/scrape.ts
|
|
50540
|
-
import { defineCommand as
|
|
50687
|
+
import { defineCommand as defineCommand170 } from "citty";
|
|
50541
50688
|
|
|
50542
50689
|
// src/engine/landing-library/proxyFailure.ts
|
|
50543
50690
|
var PROXY_STATUS = 407;
|
|
@@ -52677,7 +52824,7 @@ registerSchema({
|
|
|
52677
52824
|
report: { type: "boolean", description: "Write report.html. `--no-report` to skip", required: false }
|
|
52678
52825
|
}
|
|
52679
52826
|
});
|
|
52680
|
-
var scrapeCommand =
|
|
52827
|
+
var scrapeCommand = defineCommand170({
|
|
52681
52828
|
meta: {
|
|
52682
52829
|
name: "scrape",
|
|
52683
52830
|
description: "Capture a landing page to a directory, now. Example: baker landing inspiration scrape https://linear.app --out .baker/inspiration/linear.app"
|
|
@@ -52786,7 +52933,7 @@ var scrapeCommand = defineCommand169({
|
|
|
52786
52933
|
|
|
52787
52934
|
// src/commands/landing/inspiration/search.ts
|
|
52788
52935
|
import path40 from "path";
|
|
52789
|
-
import { defineCommand as
|
|
52936
|
+
import { defineCommand as defineCommand171 } from "citty";
|
|
52790
52937
|
|
|
52791
52938
|
// src/commands/landing/inspiration/shot.ts
|
|
52792
52939
|
import { mkdir as mkdir12, writeFile as writeFile17 } from "fs/promises";
|
|
@@ -52923,7 +53070,7 @@ async function downloadShots(results) {
|
|
|
52923
53070
|
);
|
|
52924
53071
|
return saved;
|
|
52925
53072
|
}
|
|
52926
|
-
var searchCommand2 =
|
|
53073
|
+
var searchCommand2 = defineCommand171({
|
|
52927
53074
|
meta: {
|
|
52928
53075
|
name: "search",
|
|
52929
53076
|
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"
|
|
@@ -53021,7 +53168,7 @@ var searchCommand2 = defineCommand170({
|
|
|
53021
53168
|
});
|
|
53022
53169
|
|
|
53023
53170
|
// src/commands/landing/inspiration/sequences.ts
|
|
53024
|
-
import { defineCommand as
|
|
53171
|
+
import { defineCommand as defineCommand172 } from "citty";
|
|
53025
53172
|
var COMPACT_TRANSITIONS = 12;
|
|
53026
53173
|
var COMPACT_ENDS = 5;
|
|
53027
53174
|
var MAX_PAGES = 50;
|
|
@@ -53095,7 +53242,7 @@ function sequencesHints(data, { scope, full }) {
|
|
|
53095
53242
|
if (scope === "favorites") hints2.push(...favoritesScopeHints(data.favoritesHealth, data.pagesReturned));
|
|
53096
53243
|
return hints2;
|
|
53097
53244
|
}
|
|
53098
|
-
var sequencesCommand =
|
|
53245
|
+
var sequencesCommand = defineCommand172({
|
|
53099
53246
|
meta: {
|
|
53100
53247
|
name: "sequences",
|
|
53101
53248
|
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."
|
|
@@ -53145,7 +53292,7 @@ var sequencesCommand = defineCommand171({
|
|
|
53145
53292
|
|
|
53146
53293
|
// src/commands/landing/inspiration/view.ts
|
|
53147
53294
|
import path41 from "path";
|
|
53148
|
-
import { defineCommand as
|
|
53295
|
+
import { defineCommand as defineCommand173 } from "citty";
|
|
53149
53296
|
registerSchema({
|
|
53150
53297
|
command: "landing.inspiration.view",
|
|
53151
53298
|
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.",
|
|
@@ -53158,7 +53305,7 @@ registerSchema({
|
|
|
53158
53305
|
}
|
|
53159
53306
|
}
|
|
53160
53307
|
});
|
|
53161
|
-
var viewCommand2 =
|
|
53308
|
+
var viewCommand2 = defineCommand173({
|
|
53162
53309
|
meta: {
|
|
53163
53310
|
name: "view",
|
|
53164
53311
|
description: "Full detail for one reference section. Example: baker landing inspiration view k57abc\u2026 \u2014 read the screenshots it saves before you build."
|
|
@@ -53242,7 +53389,7 @@ var viewCommand2 = defineCommand172({
|
|
|
53242
53389
|
});
|
|
53243
53390
|
|
|
53244
53391
|
// src/commands/landing/inspiration/index.ts
|
|
53245
|
-
var inspirationCommand =
|
|
53392
|
+
var inspirationCommand = defineCommand174({
|
|
53246
53393
|
meta: {
|
|
53247
53394
|
name: "inspiration",
|
|
53248
53395
|
description: `Reference library of real landing-page sections \u2014 look at how good pages actually solve a problem before you design one.
|
|
@@ -53290,7 +53437,7 @@ Full guide: __tooling__/docs/tools/baker/landing.md`
|
|
|
53290
53437
|
import { randomUUID as randomUUID2 } from "crypto";
|
|
53291
53438
|
import { mkdir as mkdir13, readdir as readdir13, readFile as readFile28, stat as stat9, writeFile as writeFile18 } from "fs/promises";
|
|
53292
53439
|
import path42 from "path";
|
|
53293
|
-
import { defineCommand as
|
|
53440
|
+
import { defineCommand as defineCommand175 } from "citty";
|
|
53294
53441
|
registerSchema({
|
|
53295
53442
|
command: "landing.variant",
|
|
53296
53443
|
description: "Create a new variant of a page, for an A/B test. The variant shares the page's sections instead of copying them, so the only difference between the two is the one you fork \u2014 which is the only way the test measures what you think it measures. Run `baker experiment plan` FIRST: most pages cannot settle most questions.",
|
|
@@ -53518,7 +53665,7 @@ async function writeVariant(opts) {
|
|
|
53518
53665
|
await writeFile18(path42.join(variantDir, "_images", ".gitkeep"), "", "utf8");
|
|
53519
53666
|
return written;
|
|
53520
53667
|
}
|
|
53521
|
-
var variantCommand =
|
|
53668
|
+
var variantCommand = defineCommand175({
|
|
53522
53669
|
meta: {
|
|
53523
53670
|
name: "variant",
|
|
53524
53671
|
description: "Create a new variant of a page, for an A/B test. The variant SHARES the page's sections and forks only the component you name, so the two versions differ by exactly the thing you are testing. It is a version of that page, not a page of its own: it is never indexed, never listed, and has no public URL \u2014 both versions answer at the page's own address. Run `baker experiment plan` first \u2014 most pages do not have the traffic to settle most questions."
|
|
@@ -53598,7 +53745,7 @@ var variantCommand = defineCommand174({
|
|
|
53598
53745
|
});
|
|
53599
53746
|
|
|
53600
53747
|
// src/commands/landing/index.ts
|
|
53601
|
-
var landingCommand =
|
|
53748
|
+
var landingCommand = defineCommand176({
|
|
53602
53749
|
meta: {
|
|
53603
53750
|
name: "landing",
|
|
53604
53751
|
description: `Design-quality tools for landing pages (src/pages/<slug>/).
|
|
@@ -53618,7 +53765,7 @@ Subcommands:
|
|
|
53618
53765
|
});
|
|
53619
53766
|
|
|
53620
53767
|
// src/commands/mcp/index.ts
|
|
53621
|
-
import { defineCommand as
|
|
53768
|
+
import { defineCommand as defineCommand177 } from "citty";
|
|
53622
53769
|
|
|
53623
53770
|
// src/commands/mcp/platforms.ts
|
|
53624
53771
|
function readsKey(label) {
|
|
@@ -53687,7 +53834,7 @@ registerSchema({
|
|
|
53687
53834
|
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.",
|
|
53688
53835
|
args: {}
|
|
53689
53836
|
});
|
|
53690
|
-
var connectedCommand =
|
|
53837
|
+
var connectedCommand = defineCommand177({
|
|
53691
53838
|
meta: {
|
|
53692
53839
|
name: "connected",
|
|
53693
53840
|
description: `Everything this chat can reach \u2014 managed integrations, custom MCP servers, and connected platforms.
|
|
@@ -53746,7 +53893,7 @@ registerSchema({
|
|
|
53746
53893
|
description: "List the custom MCP servers this company's chats see (org + company + your own user scope).",
|
|
53747
53894
|
args: {}
|
|
53748
53895
|
});
|
|
53749
|
-
var listCommand15 =
|
|
53896
|
+
var listCommand15 = defineCommand177({
|
|
53750
53897
|
meta: { name: "list", description: "List custom MCP servers visible to this company's chats." },
|
|
53751
53898
|
run: async () => {
|
|
53752
53899
|
try {
|
|
@@ -53783,7 +53930,7 @@ registerSchema({
|
|
|
53783
53930
|
header: { type: "string", description: 'Auth header "Key: Value" (repeatable)', required: false }
|
|
53784
53931
|
}
|
|
53785
53932
|
});
|
|
53786
|
-
var addCommand2 =
|
|
53933
|
+
var addCommand2 = defineCommand177({
|
|
53787
53934
|
meta: {
|
|
53788
53935
|
name: "add",
|
|
53789
53936
|
description: `Register a custom MCP server. Tools appear as mcp__<name>__* on the NEXT message.
|
|
@@ -53835,7 +53982,7 @@ registerSchema({
|
|
|
53835
53982
|
description: "Remove a company custom MCP server by name.",
|
|
53836
53983
|
args: { name: { type: "string", description: "Server name to remove", required: true } }
|
|
53837
53984
|
});
|
|
53838
|
-
var removeCommand5 =
|
|
53985
|
+
var removeCommand5 = defineCommand177({
|
|
53839
53986
|
meta: {
|
|
53840
53987
|
name: "remove",
|
|
53841
53988
|
description: `Remove a company custom MCP server by name.
|
|
@@ -53857,7 +54004,7 @@ Example:
|
|
|
53857
54004
|
}
|
|
53858
54005
|
}
|
|
53859
54006
|
});
|
|
53860
|
-
var mcpCommand =
|
|
54007
|
+
var mcpCommand = defineCommand177({
|
|
53861
54008
|
meta: {
|
|
53862
54009
|
name: "mcp",
|
|
53863
54010
|
description: `Third-party tools for this company \u2014 see what's connected, register custom HTTPS MCP endpoints.
|
|
@@ -53883,10 +54030,10 @@ Full guide: __tooling__/docs/tools/baker/mcp.md`
|
|
|
53883
54030
|
});
|
|
53884
54031
|
|
|
53885
54032
|
// src/commands/research/index.ts
|
|
53886
|
-
import { defineCommand as
|
|
54033
|
+
import { defineCommand as defineCommand190 } from "citty";
|
|
53887
54034
|
|
|
53888
54035
|
// src/commands/research/advertisers.ts
|
|
53889
|
-
import { defineCommand as
|
|
54036
|
+
import { defineCommand as defineCommand178 } from "citty";
|
|
53890
54037
|
|
|
53891
54038
|
// src/commands/research/hints.ts
|
|
53892
54039
|
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.';
|
|
@@ -54088,7 +54235,7 @@ var FIELDS3 = {
|
|
|
54088
54235
|
etv: "Estimated traffic value (USD)",
|
|
54089
54236
|
visibility: "SERP visibility score (0-1)"
|
|
54090
54237
|
};
|
|
54091
|
-
var advertisersCommand =
|
|
54238
|
+
var advertisersCommand = defineCommand178({
|
|
54092
54239
|
meta: {
|
|
54093
54240
|
name: "advertisers",
|
|
54094
54241
|
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).
|
|
@@ -54144,7 +54291,7 @@ Examples:
|
|
|
54144
54291
|
});
|
|
54145
54292
|
|
|
54146
54293
|
// src/commands/research/autocomplete.ts
|
|
54147
|
-
import { defineCommand as
|
|
54294
|
+
import { defineCommand as defineCommand179 } from "citty";
|
|
54148
54295
|
registerSchema({
|
|
54149
54296
|
command: "research.autocomplete",
|
|
54150
54297
|
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).",
|
|
@@ -54167,7 +54314,7 @@ registerSchema({
|
|
|
54167
54314
|
var FIELDS4 = {
|
|
54168
54315
|
suggestion: "Autocomplete suggestion from Google"
|
|
54169
54316
|
};
|
|
54170
|
-
var autocompleteCommand =
|
|
54317
|
+
var autocompleteCommand = defineCommand179({
|
|
54171
54318
|
meta: {
|
|
54172
54319
|
name: "autocomplete",
|
|
54173
54320
|
description: `Get Google Autocomplete suggestions for keyword expansion.
|
|
@@ -54222,7 +54369,7 @@ Examples:
|
|
|
54222
54369
|
});
|
|
54223
54370
|
|
|
54224
54371
|
// src/commands/research/countries.ts
|
|
54225
|
-
import { defineCommand as
|
|
54372
|
+
import { defineCommand as defineCommand180 } from "citty";
|
|
54226
54373
|
registerSchema({
|
|
54227
54374
|
command: "research.countries",
|
|
54228
54375
|
description: "List all supported country codes for --location flag in research commands.",
|
|
@@ -54279,7 +54426,7 @@ var FIELDS5 = {
|
|
|
54279
54426
|
code: "Country code to pass as --location",
|
|
54280
54427
|
name: "Country name"
|
|
54281
54428
|
};
|
|
54282
|
-
var countriesCommand =
|
|
54429
|
+
var countriesCommand = defineCommand180({
|
|
54283
54430
|
meta: {
|
|
54284
54431
|
name: "countries",
|
|
54285
54432
|
description: "List all supported country codes for --location flag."
|
|
@@ -54290,7 +54437,7 @@ var countriesCommand = defineCommand179({
|
|
|
54290
54437
|
});
|
|
54291
54438
|
|
|
54292
54439
|
// src/commands/research/fetch.ts
|
|
54293
|
-
import { defineCommand as
|
|
54440
|
+
import { defineCommand as defineCommand181 } from "citty";
|
|
54294
54441
|
var CONTENT_PREVIEW_CHARS = 2e4;
|
|
54295
54442
|
var TIMEOUT_MS = 18e4;
|
|
54296
54443
|
registerSchema({
|
|
@@ -54363,7 +54510,7 @@ function fetchFix(code) {
|
|
|
54363
54510
|
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."
|
|
54364
54511
|
};
|
|
54365
54512
|
}
|
|
54366
|
-
var fetchCommand =
|
|
54513
|
+
var fetchCommand = defineCommand181({
|
|
54367
54514
|
meta: {
|
|
54368
54515
|
name: "fetch",
|
|
54369
54516
|
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.
|
|
@@ -54440,7 +54587,7 @@ Examples:
|
|
|
54440
54587
|
});
|
|
54441
54588
|
|
|
54442
54589
|
// src/commands/research/intent.ts
|
|
54443
|
-
import { defineCommand as
|
|
54590
|
+
import { defineCommand as defineCommand182 } from "citty";
|
|
54444
54591
|
registerSchema({
|
|
54445
54592
|
command: "research.intent",
|
|
54446
54593
|
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.",
|
|
@@ -54463,7 +54610,7 @@ var FIELDS7 = {
|
|
|
54463
54610
|
intent: "Primary Google Search intent: informational, navigational, commercial, transactional",
|
|
54464
54611
|
probability: "Confidence score 0.0-1.0"
|
|
54465
54612
|
};
|
|
54466
|
-
var intentCommand =
|
|
54613
|
+
var intentCommand = defineCommand182({
|
|
54467
54614
|
meta: {
|
|
54468
54615
|
name: "intent",
|
|
54469
54616
|
description: `Classify Google Search intent for keywords. Returns intent type and confidence.
|
|
@@ -54511,7 +54658,7 @@ Examples:
|
|
|
54511
54658
|
});
|
|
54512
54659
|
|
|
54513
54660
|
// src/commands/research/keyword-gap.ts
|
|
54514
|
-
import { defineCommand as
|
|
54661
|
+
import { defineCommand as defineCommand183 } from "citty";
|
|
54515
54662
|
registerSchema({
|
|
54516
54663
|
command: "research.keyword-gap",
|
|
54517
54664
|
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.",
|
|
@@ -54540,7 +54687,7 @@ var FIELDS8 = {
|
|
|
54540
54687
|
cpc: "Cost per click USD",
|
|
54541
54688
|
their_position: "Competitor's ranking position"
|
|
54542
54689
|
};
|
|
54543
|
-
var keywordGapCommand =
|
|
54690
|
+
var keywordGapCommand = defineCommand183({
|
|
54544
54691
|
meta: {
|
|
54545
54692
|
name: "keyword-gap",
|
|
54546
54693
|
description: `Find keywords a competitor has that you don't. Supports pagination via --offset.
|
|
@@ -54615,7 +54762,7 @@ Examples:
|
|
|
54615
54762
|
});
|
|
54616
54763
|
|
|
54617
54764
|
// src/commands/research/keyword-metrics.ts
|
|
54618
|
-
import { defineCommand as
|
|
54765
|
+
import { defineCommand as defineCommand184 } from "citty";
|
|
54619
54766
|
|
|
54620
54767
|
// src/commands/research/keyword-metrics-rows.ts
|
|
54621
54768
|
var KEYWORD_METRICS_SOURCE = "keyword_planner_estimate_via_dataforseo";
|
|
@@ -54695,7 +54842,7 @@ registerSchema({
|
|
|
54695
54842
|
"no-cache": { type: "boolean", description: "Skip server cache, hit API directly", required: false }
|
|
54696
54843
|
}
|
|
54697
54844
|
});
|
|
54698
|
-
var keywordMetricsCommand =
|
|
54845
|
+
var keywordMetricsCommand = defineCommand184({
|
|
54699
54846
|
meta: {
|
|
54700
54847
|
name: "keyword-metrics",
|
|
54701
54848
|
description: `Volume, CPC and competition for keywords you name. No domain required.
|
|
@@ -54777,7 +54924,7 @@ Examples:
|
|
|
54777
54924
|
});
|
|
54778
54925
|
|
|
54779
54926
|
// src/commands/research/keywords-for-site.ts
|
|
54780
|
-
import { defineCommand as
|
|
54927
|
+
import { defineCommand as defineCommand185 } from "citty";
|
|
54781
54928
|
registerSchema({
|
|
54782
54929
|
command: "research.keywords-for-site",
|
|
54783
54930
|
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.",
|
|
@@ -54810,7 +54957,7 @@ var FIELDS9 = {
|
|
|
54810
54957
|
competition: "LOW, MEDIUM, or HIGH",
|
|
54811
54958
|
competition_index: "Competition score 0-100"
|
|
54812
54959
|
};
|
|
54813
|
-
var keywordsForSiteCommand =
|
|
54960
|
+
var keywordsForSiteCommand = defineCommand185({
|
|
54814
54961
|
meta: {
|
|
54815
54962
|
name: "keywords-for-site",
|
|
54816
54963
|
description: `Get keywords a competitor targets in Google. Use --type to filter paid/organic.
|
|
@@ -54872,7 +55019,7 @@ Examples:
|
|
|
54872
55019
|
});
|
|
54873
55020
|
|
|
54874
55021
|
// src/commands/research/languages.ts
|
|
54875
|
-
import { defineCommand as
|
|
55022
|
+
import { defineCommand as defineCommand186 } from "citty";
|
|
54876
55023
|
registerSchema({
|
|
54877
55024
|
command: "research.languages",
|
|
54878
55025
|
description: "List all supported language codes for --language flag in research commands.",
|
|
@@ -54902,7 +55049,7 @@ var FIELDS10 = {
|
|
|
54902
55049
|
code: "Language code to pass as --language",
|
|
54903
55050
|
name: "Language name (also accepted by --language)"
|
|
54904
55051
|
};
|
|
54905
|
-
var languagesCommand2 =
|
|
55052
|
+
var languagesCommand2 = defineCommand186({
|
|
54906
55053
|
meta: {
|
|
54907
55054
|
name: "languages",
|
|
54908
55055
|
description: "List all supported language codes for --language flag."
|
|
@@ -54913,7 +55060,7 @@ var languagesCommand2 = defineCommand185({
|
|
|
54913
55060
|
});
|
|
54914
55061
|
|
|
54915
55062
|
// src/commands/research/lighthouse.ts
|
|
54916
|
-
import { defineCommand as
|
|
55063
|
+
import { defineCommand as defineCommand187 } from "citty";
|
|
54917
55064
|
registerSchema({
|
|
54918
55065
|
command: "research.lighthouse",
|
|
54919
55066
|
description: "Landing page performance audit. Returns metrics that affect Google Ads Quality Score and CPC.",
|
|
@@ -54932,7 +55079,7 @@ var FIELDS11 = {
|
|
|
54932
55079
|
speed_index_ms: "Speed Index in ms (good: < 3400)",
|
|
54933
55080
|
interactive_ms: "Time to Interactive in ms (good: < 3800)"
|
|
54934
55081
|
};
|
|
54935
|
-
var lighthouseCommand =
|
|
55082
|
+
var lighthouseCommand = defineCommand187({
|
|
54936
55083
|
meta: {
|
|
54937
55084
|
name: "lighthouse",
|
|
54938
55085
|
description: `Landing page performance audit. Metrics affecting Google Ads Quality Score.
|
|
@@ -54970,7 +55117,7 @@ Examples:
|
|
|
54970
55117
|
});
|
|
54971
55118
|
|
|
54972
55119
|
// src/commands/research/relevant-pages.ts
|
|
54973
|
-
import { defineCommand as
|
|
55120
|
+
import { defineCommand as defineCommand188 } from "citty";
|
|
54974
55121
|
registerSchema({
|
|
54975
55122
|
command: "research.relevant-pages",
|
|
54976
55123
|
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).",
|
|
@@ -54996,7 +55143,7 @@ var FIELDS12 = {
|
|
|
54996
55143
|
keywords: "Total organic keywords the page ranks for",
|
|
54997
55144
|
top_10: "Keywords in positions 1-10"
|
|
54998
55145
|
};
|
|
54999
|
-
var relevantPagesCommand =
|
|
55146
|
+
var relevantPagesCommand = defineCommand188({
|
|
55000
55147
|
meta: {
|
|
55001
55148
|
name: "relevant-pages",
|
|
55002
55149
|
description: `Get the top pages of a competitor domain with traffic data.
|
|
@@ -55043,7 +55190,7 @@ Examples:
|
|
|
55043
55190
|
});
|
|
55044
55191
|
|
|
55045
55192
|
// src/commands/research/web.ts
|
|
55046
|
-
import { defineCommand as
|
|
55193
|
+
import { defineCommand as defineCommand189 } from "citty";
|
|
55047
55194
|
registerSchema({
|
|
55048
55195
|
command: "research.web",
|
|
55049
55196
|
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).",
|
|
@@ -55094,7 +55241,7 @@ async function runDeepResearch(question) {
|
|
|
55094
55241
|
}
|
|
55095
55242
|
throw new Error("Deep research timed out");
|
|
55096
55243
|
}
|
|
55097
|
-
var webCommand =
|
|
55244
|
+
var webCommand = defineCommand189({
|
|
55098
55245
|
meta: {
|
|
55099
55246
|
name: "web",
|
|
55100
55247
|
description: `Search the web with AI to answer any open-ended marketing question. Uses live internet data via Google Search.
|
|
@@ -55156,7 +55303,7 @@ Examples:
|
|
|
55156
55303
|
});
|
|
55157
55304
|
|
|
55158
55305
|
// src/commands/research/index.ts
|
|
55159
|
-
var researchCommand =
|
|
55306
|
+
var researchCommand = defineCommand190({
|
|
55160
55307
|
meta: {
|
|
55161
55308
|
name: "research",
|
|
55162
55309
|
description: `Competitive intelligence and AI-powered research commands.
|
|
@@ -55203,10 +55350,10 @@ Full guide: __tooling__/docs/tools/baker/research.md`
|
|
|
55203
55350
|
});
|
|
55204
55351
|
|
|
55205
55352
|
// src/commands/scheduled-actions/index.ts
|
|
55206
|
-
import { defineCommand as
|
|
55353
|
+
import { defineCommand as defineCommand198 } from "citty";
|
|
55207
55354
|
|
|
55208
55355
|
// src/commands/scheduled-actions/create.ts
|
|
55209
|
-
import { defineCommand as
|
|
55356
|
+
import { defineCommand as defineCommand191 } from "citty";
|
|
55210
55357
|
|
|
55211
55358
|
// src/commands/scheduled-actions/shared.ts
|
|
55212
55359
|
var TEMP_SCHEDULED_ACTION_PREFIX = "temp_sched_";
|
|
@@ -55362,7 +55509,7 @@ registerSchema({
|
|
|
55362
55509
|
}
|
|
55363
55510
|
}
|
|
55364
55511
|
});
|
|
55365
|
-
var createCommand3 =
|
|
55512
|
+
var createCommand3 = defineCommand191({
|
|
55366
55513
|
meta: {
|
|
55367
55514
|
name: "create",
|
|
55368
55515
|
description: 'Stage a scheduled action. Example: baker scheduled-actions create --name "Weekly report" --description "..." --cron "0 9 * * MON"'
|
|
@@ -55421,7 +55568,7 @@ var createCommand3 = defineCommand190({
|
|
|
55421
55568
|
});
|
|
55422
55569
|
|
|
55423
55570
|
// src/commands/scheduled-actions/delete.ts
|
|
55424
|
-
import { defineCommand as
|
|
55571
|
+
import { defineCommand as defineCommand192 } from "citty";
|
|
55425
55572
|
registerSchema({
|
|
55426
55573
|
command: "scheduled-actions.delete",
|
|
55427
55574
|
description: "Stage deletion of a published scheduled action or cancellation of a temp_sched_* draft creation.",
|
|
@@ -55429,7 +55576,7 @@ registerSchema({
|
|
|
55429
55576
|
id: { type: "string", description: "Published scheduled action ID or temp_sched_* draft ID", required: true }
|
|
55430
55577
|
}
|
|
55431
55578
|
});
|
|
55432
|
-
var deleteCommand3 =
|
|
55579
|
+
var deleteCommand3 = defineCommand192({
|
|
55433
55580
|
meta: {
|
|
55434
55581
|
name: "delete",
|
|
55435
55582
|
description: "Stage scheduled action deletion. Example: baker scheduled-actions delete <id-or-temp_sched_id>"
|
|
@@ -55458,7 +55605,7 @@ var deleteCommand3 = defineCommand191({
|
|
|
55458
55605
|
});
|
|
55459
55606
|
|
|
55460
55607
|
// src/commands/scheduled-actions/get.ts
|
|
55461
|
-
import { defineCommand as
|
|
55608
|
+
import { defineCommand as defineCommand193 } from "citty";
|
|
55462
55609
|
registerSchema({
|
|
55463
55610
|
command: "scheduled-actions.get",
|
|
55464
55611
|
description: "Get a published scheduled action or a temp_sched_* draft-created scheduled action.",
|
|
@@ -55467,7 +55614,7 @@ registerSchema({
|
|
|
55467
55614
|
chat: { type: "string", description: CHAT_READ_ARG.description, required: false }
|
|
55468
55615
|
}
|
|
55469
55616
|
});
|
|
55470
|
-
var getCommand4 =
|
|
55617
|
+
var getCommand4 = defineCommand193({
|
|
55471
55618
|
meta: {
|
|
55472
55619
|
name: "get",
|
|
55473
55620
|
description: "Get a scheduled action. Example: baker scheduled-actions get <id-or-temp_sched_id>"
|
|
@@ -55506,7 +55653,7 @@ var getCommand4 = defineCommand192({
|
|
|
55506
55653
|
});
|
|
55507
55654
|
|
|
55508
55655
|
// src/commands/scheduled-actions/list.ts
|
|
55509
|
-
import { defineCommand as
|
|
55656
|
+
import { defineCommand as defineCommand194 } from "citty";
|
|
55510
55657
|
registerSchema({
|
|
55511
55658
|
command: "scheduled-actions.list",
|
|
55512
55659
|
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.",
|
|
@@ -55514,7 +55661,7 @@ registerSchema({
|
|
|
55514
55661
|
chat: { type: "string", description: CHAT_READ_ARG.description, required: false }
|
|
55515
55662
|
}
|
|
55516
55663
|
});
|
|
55517
|
-
var listCommand16 =
|
|
55664
|
+
var listCommand16 = defineCommand194({
|
|
55518
55665
|
meta: {
|
|
55519
55666
|
name: "list",
|
|
55520
55667
|
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."
|
|
@@ -55539,7 +55686,7 @@ var listCommand16 = defineCommand193({
|
|
|
55539
55686
|
// src/commands/scheduled-actions/templates.ts
|
|
55540
55687
|
import { readFile as readFile29 } from "fs/promises";
|
|
55541
55688
|
import path43 from "path";
|
|
55542
|
-
import { defineCommand as
|
|
55689
|
+
import { defineCommand as defineCommand195 } from "citty";
|
|
55543
55690
|
registerSchema({
|
|
55544
55691
|
command: "scheduled-actions.templates",
|
|
55545
55692
|
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.",
|
|
@@ -55594,7 +55741,7 @@ registerSchema({
|
|
|
55594
55741
|
}
|
|
55595
55742
|
}
|
|
55596
55743
|
});
|
|
55597
|
-
var templatesCommand =
|
|
55744
|
+
var templatesCommand = defineCommand195({
|
|
55598
55745
|
meta: {
|
|
55599
55746
|
name: "templates",
|
|
55600
55747
|
description: `The recipes this company can run \u2014 Baker's own plus theirs, with what each one produces.
|
|
@@ -55686,7 +55833,7 @@ Full guide: __tooling__/docs/tools/baker/scheduled-actions.md`
|
|
|
55686
55833
|
});
|
|
55687
55834
|
|
|
55688
55835
|
// src/commands/scheduled-actions/trigger.ts
|
|
55689
|
-
import { defineCommand as
|
|
55836
|
+
import { defineCommand as defineCommand196 } from "citty";
|
|
55690
55837
|
registerSchema({
|
|
55691
55838
|
command: "scheduled-actions.trigger",
|
|
55692
55839
|
description: "Immediately trigger a published scheduled action. Does not require BAKER_CHAT_ID and rejects temp_sched_* IDs.",
|
|
@@ -55694,7 +55841,7 @@ registerSchema({
|
|
|
55694
55841
|
id: { type: "string", description: "Published scheduled action ID", required: true }
|
|
55695
55842
|
}
|
|
55696
55843
|
});
|
|
55697
|
-
var triggerCommand =
|
|
55844
|
+
var triggerCommand = defineCommand196({
|
|
55698
55845
|
meta: {
|
|
55699
55846
|
name: "trigger",
|
|
55700
55847
|
description: "Immediately trigger a published scheduled action. Example: baker scheduled-actions trigger <id>"
|
|
@@ -55731,7 +55878,7 @@ var triggerCommand = defineCommand195({
|
|
|
55731
55878
|
});
|
|
55732
55879
|
|
|
55733
55880
|
// src/commands/scheduled-actions/update.ts
|
|
55734
|
-
import { defineCommand as
|
|
55881
|
+
import { defineCommand as defineCommand197 } from "citty";
|
|
55735
55882
|
registerSchema({
|
|
55736
55883
|
command: "scheduled-actions.update",
|
|
55737
55884
|
description: "Stage an update to a published scheduled action or temp_sched_* draft-created scheduled action.",
|
|
@@ -55762,7 +55909,7 @@ registerSchema({
|
|
|
55762
55909
|
prompt: { type: "string", description: "Replacement additional spawned-agent instructions", required: false }
|
|
55763
55910
|
}
|
|
55764
55911
|
});
|
|
55765
|
-
var updateCommand4 =
|
|
55912
|
+
var updateCommand4 = defineCommand197({
|
|
55766
55913
|
meta: {
|
|
55767
55914
|
name: "update",
|
|
55768
55915
|
description: "Stage a scheduled action update. Examples: baker scheduled-actions update <id> --enabled false | baker scheduled-actions update <id> --mode publish"
|
|
@@ -55840,7 +55987,7 @@ var updateCommand4 = defineCommand196({
|
|
|
55840
55987
|
});
|
|
55841
55988
|
|
|
55842
55989
|
// src/commands/scheduled-actions/index.ts
|
|
55843
|
-
var scheduledActionsCommand =
|
|
55990
|
+
var scheduledActionsCommand = defineCommand198({
|
|
55844
55991
|
meta: {
|
|
55845
55992
|
name: "scheduled-actions",
|
|
55846
55993
|
description: `Manage Scheduled Actions. Subcommands: list, get, create, update, delete, trigger, templates.
|
|
@@ -55869,14 +56016,14 @@ Full guide: __tooling__/docs/tools/baker/scheduled-actions.md`
|
|
|
55869
56016
|
});
|
|
55870
56017
|
|
|
55871
56018
|
// src/commands/schema.ts
|
|
55872
|
-
import { defineCommand as
|
|
56019
|
+
import { defineCommand as defineCommand199 } from "citty";
|
|
55873
56020
|
function narrowToFamily(commandName, available) {
|
|
55874
56021
|
const segments = commandName.split(".");
|
|
55875
56022
|
const prefix = segments[0] === "ads" && segments[1] ? `ads.${segments[1]}.` : `${segments[0]}.`;
|
|
55876
56023
|
const siblings = available.filter((name) => name.startsWith(prefix));
|
|
55877
56024
|
return siblings.length > 0 ? siblings : available;
|
|
55878
56025
|
}
|
|
55879
|
-
var schemaCommand2 =
|
|
56026
|
+
var schemaCommand2 = defineCommand199({
|
|
55880
56027
|
meta: {
|
|
55881
56028
|
name: "schema",
|
|
55882
56029
|
description: "Inspect command argument schemas (for AI agent introspection). Lists all commands if no argument given. Example: baker schema images.search"
|
|
@@ -55920,10 +56067,10 @@ var schemaCommand2 = defineCommand198({
|
|
|
55920
56067
|
});
|
|
55921
56068
|
|
|
55922
56069
|
// src/commands/studio/index.ts
|
|
55923
|
-
import { defineCommand as
|
|
56070
|
+
import { defineCommand as defineCommand208 } from "citty";
|
|
55924
56071
|
|
|
55925
56072
|
// src/commands/studio/animate.ts
|
|
55926
|
-
import { defineCommand as
|
|
56073
|
+
import { defineCommand as defineCommand200 } from "citty";
|
|
55927
56074
|
|
|
55928
56075
|
// src/commands/studio/batch.ts
|
|
55929
56076
|
function projectBatch(generation, full) {
|
|
@@ -56374,7 +56521,7 @@ function costHintsFor(body) {
|
|
|
56374
56521
|
}
|
|
56375
56522
|
return hints2;
|
|
56376
56523
|
}
|
|
56377
|
-
var animateCommand =
|
|
56524
|
+
var animateCommand = defineCommand200({
|
|
56378
56525
|
meta: {
|
|
56379
56526
|
name: "animate",
|
|
56380
56527
|
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 '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"
|
|
@@ -56493,7 +56640,7 @@ var animateCommand = defineCommand199({
|
|
|
56493
56640
|
});
|
|
56494
56641
|
|
|
56495
56642
|
// src/commands/studio/generate.ts
|
|
56496
|
-
import { defineCommand as
|
|
56643
|
+
import { defineCommand as defineCommand201 } from "citty";
|
|
56497
56644
|
var MODEL_LIST2 = IMAGE_MODEL_IDS;
|
|
56498
56645
|
var DEFAULT_MAX_WAIT_MS2 = 24e4;
|
|
56499
56646
|
registerSchema({
|
|
@@ -56629,7 +56776,7 @@ function buildGenerateBody(args, prompt) {
|
|
|
56629
56776
|
}
|
|
56630
56777
|
return body;
|
|
56631
56778
|
}
|
|
56632
|
-
var generateCommand =
|
|
56779
|
+
var generateCommand = defineCommand201({
|
|
56633
56780
|
meta: {
|
|
56634
56781
|
name: "generate",
|
|
56635
56782
|
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]]'"
|
|
@@ -56707,7 +56854,7 @@ var generateCommand = defineCommand200({
|
|
|
56707
56854
|
});
|
|
56708
56855
|
|
|
56709
56856
|
// src/commands/studio/get.ts
|
|
56710
|
-
import { defineCommand as
|
|
56857
|
+
import { defineCommand as defineCommand202 } from "citty";
|
|
56711
56858
|
registerSchema({
|
|
56712
56859
|
command: "studio.get",
|
|
56713
56860
|
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.",
|
|
@@ -56716,7 +56863,7 @@ registerSchema({
|
|
|
56716
56863
|
full: { type: "boolean", description: "Include settings, references and attribution", required: false }
|
|
56717
56864
|
}
|
|
56718
56865
|
});
|
|
56719
|
-
var getCommand5 =
|
|
56866
|
+
var getCommand5 = defineCommand202({
|
|
56720
56867
|
meta: {
|
|
56721
56868
|
name: "get",
|
|
56722
56869
|
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"
|
|
@@ -56745,7 +56892,7 @@ var getCommand5 = defineCommand201({
|
|
|
56745
56892
|
});
|
|
56746
56893
|
|
|
56747
56894
|
// src/commands/studio/improve.ts
|
|
56748
|
-
import { defineCommand as
|
|
56895
|
+
import { defineCommand as defineCommand203 } from "citty";
|
|
56749
56896
|
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.";
|
|
56750
56897
|
registerSchema({
|
|
56751
56898
|
command: "studio.improve",
|
|
@@ -56770,7 +56917,7 @@ registerSchema({
|
|
|
56770
56917
|
}
|
|
56771
56918
|
}
|
|
56772
56919
|
});
|
|
56773
|
-
var improveCommand =
|
|
56920
|
+
var improveCommand = defineCommand203({
|
|
56774
56921
|
meta: {
|
|
56775
56922
|
name: "improve",
|
|
56776
56923
|
description: `${DESCRIPTION}
|
|
@@ -56814,7 +56961,7 @@ Examples:
|
|
|
56814
56961
|
});
|
|
56815
56962
|
|
|
56816
56963
|
// src/commands/studio/keep.ts
|
|
56817
|
-
import { defineCommand as
|
|
56964
|
+
import { defineCommand as defineCommand204 } from "citty";
|
|
56818
56965
|
registerSchema({
|
|
56819
56966
|
command: "studio.keep",
|
|
56820
56967
|
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.",
|
|
@@ -56824,7 +56971,7 @@ registerSchema({
|
|
|
56824
56971
|
undo: { type: "boolean", description: "Un-star an image, or take a kept clip back out", required: false }
|
|
56825
56972
|
}
|
|
56826
56973
|
});
|
|
56827
|
-
var keepCommand =
|
|
56974
|
+
var keepCommand = defineCommand204({
|
|
56828
56975
|
meta: {
|
|
56829
56976
|
name: "keep",
|
|
56830
56977
|
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"
|
|
@@ -56875,7 +57022,7 @@ var keepCommand = defineCommand203({
|
|
|
56875
57022
|
});
|
|
56876
57023
|
|
|
56877
57024
|
// src/commands/studio/list.ts
|
|
56878
|
-
import { defineCommand as
|
|
57025
|
+
import { defineCommand as defineCommand205 } from "citty";
|
|
56879
57026
|
registerSchema({
|
|
56880
57027
|
command: "studio.list",
|
|
56881
57028
|
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.",
|
|
@@ -56886,7 +57033,7 @@ registerSchema({
|
|
|
56886
57033
|
full: { type: "boolean", description: "Include settings, references and attribution", required: false }
|
|
56887
57034
|
}
|
|
56888
57035
|
});
|
|
56889
|
-
var listCommand17 =
|
|
57036
|
+
var listCommand17 = defineCommand205({
|
|
56890
57037
|
meta: {
|
|
56891
57038
|
name: "list",
|
|
56892
57039
|
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"
|
|
@@ -56920,7 +57067,7 @@ var listCommand17 = defineCommand204({
|
|
|
56920
57067
|
});
|
|
56921
57068
|
|
|
56922
57069
|
// src/commands/studio/models.ts
|
|
56923
|
-
import { defineCommand as
|
|
57070
|
+
import { defineCommand as defineCommand206 } from "citty";
|
|
56924
57071
|
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.";
|
|
56925
57072
|
registerSchema({
|
|
56926
57073
|
command: "studio.models",
|
|
@@ -57007,7 +57154,7 @@ function buildModelCards(kind, model) {
|
|
|
57007
57154
|
const selected = model ? ids.filter((id) => id === model) : ids;
|
|
57008
57155
|
return selected.map((id) => build(id));
|
|
57009
57156
|
}
|
|
57010
|
-
var modelsCommand =
|
|
57157
|
+
var modelsCommand = defineCommand206({
|
|
57011
57158
|
meta: {
|
|
57012
57159
|
name: "models",
|
|
57013
57160
|
description: `${DESCRIPTION2}
|
|
@@ -57054,13 +57201,13 @@ Examples:
|
|
|
57054
57201
|
});
|
|
57055
57202
|
|
|
57056
57203
|
// src/commands/studio/skills.ts
|
|
57057
|
-
import { defineCommand as
|
|
57204
|
+
import { defineCommand as defineCommand207 } from "citty";
|
|
57058
57205
|
registerSchema({
|
|
57059
57206
|
command: "studio.skills",
|
|
57060
57207
|
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.",
|
|
57061
57208
|
args: {}
|
|
57062
57209
|
});
|
|
57063
|
-
var skillsCommand =
|
|
57210
|
+
var skillsCommand = defineCommand207({
|
|
57064
57211
|
meta: {
|
|
57065
57212
|
name: "skills",
|
|
57066
57213
|
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"
|
|
@@ -57084,7 +57231,7 @@ var skillsCommand = defineCommand206({
|
|
|
57084
57231
|
});
|
|
57085
57232
|
|
|
57086
57233
|
// src/commands/studio/index.ts
|
|
57087
|
-
var studioCommand =
|
|
57234
|
+
var studioCommand = defineCommand208({
|
|
57088
57235
|
meta: {
|
|
57089
57236
|
name: "studio",
|
|
57090
57237
|
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.
|
|
@@ -57127,10 +57274,10 @@ Full guide: __tooling__/docs/tools/baker/studio.md`
|
|
|
57127
57274
|
});
|
|
57128
57275
|
|
|
57129
57276
|
// src/commands/tag-manager/index.ts
|
|
57130
|
-
import { defineCommand as
|
|
57277
|
+
import { defineCommand as defineCommand212 } from "citty";
|
|
57131
57278
|
|
|
57132
57279
|
// src/commands/tag-manager/draft.ts
|
|
57133
|
-
import { defineCommand as
|
|
57280
|
+
import { defineCommand as defineCommand209 } from "citty";
|
|
57134
57281
|
|
|
57135
57282
|
// src/commands/tag-manager/shared.ts
|
|
57136
57283
|
import { readFileSync as readFileSync18 } from "fs";
|
|
@@ -57253,13 +57400,13 @@ registerSchema({
|
|
|
57253
57400
|
chat: { type: "string", description: CHAT_READ_ARG.description, required: false }
|
|
57254
57401
|
}
|
|
57255
57402
|
});
|
|
57256
|
-
var draftCommand5 =
|
|
57403
|
+
var draftCommand5 = defineCommand209({
|
|
57257
57404
|
meta: {
|
|
57258
57405
|
name: "draft",
|
|
57259
57406
|
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."
|
|
57260
57407
|
},
|
|
57261
57408
|
subCommands: {
|
|
57262
|
-
list:
|
|
57409
|
+
list: defineCommand209({
|
|
57263
57410
|
meta: {
|
|
57264
57411
|
name: "list",
|
|
57265
57412
|
description: "Review everything staged on this chat (--json for the raw envelope)"
|
|
@@ -57272,7 +57419,7 @@ var draftCommand5 = defineCommand208({
|
|
|
57272
57419
|
await draftList2(args.json === true, args.chat);
|
|
57273
57420
|
}
|
|
57274
57421
|
}),
|
|
57275
|
-
show:
|
|
57422
|
+
show: defineCommand209({
|
|
57276
57423
|
meta: {
|
|
57277
57424
|
name: "show",
|
|
57278
57425
|
description: "Print the full staged payload for one change \u2014 the receipt to verify it looks right before publish (never truncated)."
|
|
@@ -57289,7 +57436,7 @@ var draftCommand5 = defineCommand208({
|
|
|
57289
57436
|
);
|
|
57290
57437
|
}
|
|
57291
57438
|
}),
|
|
57292
|
-
amend:
|
|
57439
|
+
amend: defineCommand209({
|
|
57293
57440
|
meta: {
|
|
57294
57441
|
name: "amend",
|
|
57295
57442
|
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."
|
|
@@ -57306,7 +57453,7 @@ var draftCommand5 = defineCommand208({
|
|
|
57306
57453
|
});
|
|
57307
57454
|
}
|
|
57308
57455
|
}),
|
|
57309
|
-
remove:
|
|
57456
|
+
remove: defineCommand209({
|
|
57310
57457
|
meta: { name: "remove", description: "Remove one staged change (cascades to anything depending on it)" },
|
|
57311
57458
|
args: { ref: { type: "positional", description: "Staged ref (gtm_temp_*) or target", required: false } },
|
|
57312
57459
|
run: async ({ args }) => {
|
|
@@ -57315,7 +57462,7 @@ var draftCommand5 = defineCommand208({
|
|
|
57315
57462
|
});
|
|
57316
57463
|
}
|
|
57317
57464
|
}),
|
|
57318
|
-
clear:
|
|
57465
|
+
clear: defineCommand209({
|
|
57319
57466
|
meta: { name: "clear", description: "Discard all Tag Manager changes staged on this chat" },
|
|
57320
57467
|
run: async () => {
|
|
57321
57468
|
await draftAction3("/api/tag-manager/draft/clear", {});
|
|
@@ -57325,7 +57472,7 @@ var draftCommand5 = defineCommand208({
|
|
|
57325
57472
|
});
|
|
57326
57473
|
|
|
57327
57474
|
// src/commands/tag-manager/read.ts
|
|
57328
|
-
import { defineCommand as
|
|
57475
|
+
import { defineCommand as defineCommand210 } from "citty";
|
|
57329
57476
|
registerSchema({
|
|
57330
57477
|
command: "tagManager.containers",
|
|
57331
57478
|
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.",
|
|
@@ -57366,7 +57513,7 @@ function containersHints(containers) {
|
|
|
57366
57513
|
}))
|
|
57367
57514
|
});
|
|
57368
57515
|
}
|
|
57369
|
-
var containersCommand =
|
|
57516
|
+
var containersCommand = defineCommand210({
|
|
57370
57517
|
meta: {
|
|
57371
57518
|
name: "containers",
|
|
57372
57519
|
description: `List Tag Manager containers reachable by this company's connection.
|
|
@@ -57383,7 +57530,7 @@ Start here:
|
|
|
57383
57530
|
}
|
|
57384
57531
|
}
|
|
57385
57532
|
});
|
|
57386
|
-
var readCommand =
|
|
57533
|
+
var readCommand = defineCommand210({
|
|
57387
57534
|
meta: {
|
|
57388
57535
|
name: "read",
|
|
57389
57536
|
description: `Read the current contents of the Tag Manager container \u2014 always do this before staging changes.
|
|
@@ -57425,7 +57572,7 @@ Examples:
|
|
|
57425
57572
|
});
|
|
57426
57573
|
|
|
57427
57574
|
// src/commands/tag-manager/write-commands.ts
|
|
57428
|
-
import { defineCommand as
|
|
57575
|
+
import { defineCommand as defineCommand211 } from "citty";
|
|
57429
57576
|
var CONTAINER_ARG_DESCRIPTION = "Numeric container id (optional only when one container is connected \u2014 run `baker tag-manager containers`)";
|
|
57430
57577
|
var ENTITIES = [
|
|
57431
57578
|
{
|
|
@@ -57481,10 +57628,10 @@ for (const { entity, noun, createHint } of ENTITIES) {
|
|
|
57481
57628
|
});
|
|
57482
57629
|
}
|
|
57483
57630
|
function entityCommand(entity, noun, example) {
|
|
57484
|
-
return
|
|
57631
|
+
return defineCommand211({
|
|
57485
57632
|
meta: { name: entity, description: `Stage ${noun} changes on this chat's Tag Manager draft` },
|
|
57486
57633
|
subCommands: {
|
|
57487
|
-
create:
|
|
57634
|
+
create: defineCommand211({
|
|
57488
57635
|
meta: {
|
|
57489
57636
|
name: "create",
|
|
57490
57637
|
description: `Stage a new ${noun}
|
|
@@ -57506,7 +57653,7 @@ Examples:
|
|
|
57506
57653
|
});
|
|
57507
57654
|
}
|
|
57508
57655
|
}),
|
|
57509
|
-
update:
|
|
57656
|
+
update: defineCommand211({
|
|
57510
57657
|
meta: {
|
|
57511
57658
|
name: "update",
|
|
57512
57659
|
description: `Stage an update to an existing ${noun} (pass its id or path)`
|
|
@@ -57526,7 +57673,7 @@ Examples:
|
|
|
57526
57673
|
});
|
|
57527
57674
|
}
|
|
57528
57675
|
}),
|
|
57529
|
-
delete:
|
|
57676
|
+
delete: defineCommand211({
|
|
57530
57677
|
meta: { name: "delete", description: `Stage the deletion of a ${noun} (pass its id or path)` },
|
|
57531
57678
|
args: {
|
|
57532
57679
|
id: { type: "positional", description: `${noun} id or path`, required: false },
|
|
@@ -57567,7 +57714,7 @@ function builtinTypes(args) {
|
|
|
57567
57714
|
}
|
|
57568
57715
|
return raw.split(",").map((entry) => entry.trim());
|
|
57569
57716
|
}
|
|
57570
|
-
var builtinCommand =
|
|
57717
|
+
var builtinCommand = defineCommand211({
|
|
57571
57718
|
meta: {
|
|
57572
57719
|
name: "builtin",
|
|
57573
57720
|
description: `Enable or disable built-in variables
|
|
@@ -57577,7 +57724,7 @@ Examples:
|
|
|
57577
57724
|
baker tag-manager builtin disable --types formId`
|
|
57578
57725
|
},
|
|
57579
57726
|
subCommands: {
|
|
57580
|
-
enable:
|
|
57727
|
+
enable: defineCommand211({
|
|
57581
57728
|
meta: { name: "enable", description: "Stage enabling built-in variables" },
|
|
57582
57729
|
args: {
|
|
57583
57730
|
types: { type: "string", description: "Comma-separated types", required: false },
|
|
@@ -57591,7 +57738,7 @@ Examples:
|
|
|
57591
57738
|
});
|
|
57592
57739
|
}
|
|
57593
57740
|
}),
|
|
57594
|
-
disable:
|
|
57741
|
+
disable: defineCommand211({
|
|
57595
57742
|
meta: { name: "disable", description: "Stage disabling built-in variables" },
|
|
57596
57743
|
args: {
|
|
57597
57744
|
types: { type: "string", description: "Comma-separated types", required: false },
|
|
@@ -57609,7 +57756,7 @@ Examples:
|
|
|
57609
57756
|
});
|
|
57610
57757
|
|
|
57611
57758
|
// src/commands/tag-manager/index.ts
|
|
57612
|
-
var tagManagerCommand =
|
|
57759
|
+
var tagManagerCommand = defineCommand212({
|
|
57613
57760
|
meta: {
|
|
57614
57761
|
name: "tag-manager",
|
|
57615
57762
|
description: `Read and change what lives inside the client's Google Tag Manager container \u2014 tags, triggers, variables, folders and built-in variables.
|
|
@@ -57646,7 +57793,7 @@ Full guide: __tooling__/docs/tools/baker/tag-manager.md`
|
|
|
57646
57793
|
});
|
|
57647
57794
|
|
|
57648
57795
|
// src/commands/tags/index.ts
|
|
57649
|
-
import { defineCommand as
|
|
57796
|
+
import { defineCommand as defineCommand213 } from "citty";
|
|
57650
57797
|
|
|
57651
57798
|
// src/commands/tags/shared.ts
|
|
57652
57799
|
function failApi3(err) {
|
|
@@ -57715,7 +57862,7 @@ async function listTags(json) {
|
|
|
57715
57862
|
var listArgs10 = {
|
|
57716
57863
|
json: { type: "boolean", description: "Print the raw JSON envelope instead of the readable list" }
|
|
57717
57864
|
};
|
|
57718
|
-
var listCommand18 =
|
|
57865
|
+
var listCommand18 = defineCommand213({
|
|
57719
57866
|
meta: {
|
|
57720
57867
|
name: "list",
|
|
57721
57868
|
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"
|
|
@@ -57734,7 +57881,7 @@ async function listDraft4(chat) {
|
|
|
57734
57881
|
failApi3(err);
|
|
57735
57882
|
}
|
|
57736
57883
|
}
|
|
57737
|
-
var draftCommand6 =
|
|
57884
|
+
var draftCommand6 = defineCommand213({
|
|
57738
57885
|
meta: {
|
|
57739
57886
|
name: "draft",
|
|
57740
57887
|
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."
|
|
@@ -57744,7 +57891,7 @@ var draftCommand6 = defineCommand212({
|
|
|
57744
57891
|
await listDraft4(args.chat);
|
|
57745
57892
|
}
|
|
57746
57893
|
});
|
|
57747
|
-
var tagsCommand4 =
|
|
57894
|
+
var tagsCommand4 = defineCommand213({
|
|
57748
57895
|
meta: {
|
|
57749
57896
|
name: "tags",
|
|
57750
57897
|
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.
|
|
@@ -57773,10 +57920,10 @@ Full guide: __tooling__/docs/tools/baker/tags.md`
|
|
|
57773
57920
|
});
|
|
57774
57921
|
|
|
57775
57922
|
// src/commands/testimonials/index.ts
|
|
57776
|
-
import { defineCommand as
|
|
57923
|
+
import { defineCommand as defineCommand217 } from "citty";
|
|
57777
57924
|
|
|
57778
57925
|
// src/commands/testimonials/get.ts
|
|
57779
|
-
import { defineCommand as
|
|
57926
|
+
import { defineCommand as defineCommand214 } from "citty";
|
|
57780
57927
|
registerSchema({
|
|
57781
57928
|
command: "testimonials.get",
|
|
57782
57929
|
description: "Get a single testimonial by ID",
|
|
@@ -57784,7 +57931,7 @@ registerSchema({
|
|
|
57784
57931
|
id: { type: "string", description: "Testimonial ID", required: true }
|
|
57785
57932
|
}
|
|
57786
57933
|
});
|
|
57787
|
-
var getCommand6 =
|
|
57934
|
+
var getCommand6 = defineCommand214({
|
|
57788
57935
|
meta: { name: "get", description: "Get a single testimonial by ID. Example: baker testimonials get j571abc123" },
|
|
57789
57936
|
args: {
|
|
57790
57937
|
id: { type: "positional", description: "Testimonial ID", required: false },
|
|
@@ -57821,7 +57968,7 @@ var getCommand6 = defineCommand213({
|
|
|
57821
57968
|
});
|
|
57822
57969
|
|
|
57823
57970
|
// src/commands/testimonials/list.ts
|
|
57824
|
-
import { defineCommand as
|
|
57971
|
+
import { defineCommand as defineCommand215 } from "citty";
|
|
57825
57972
|
|
|
57826
57973
|
// src/commands/testimonials/emptyCorpusHints.ts
|
|
57827
57974
|
function resolveEmptyReason({
|
|
@@ -57978,7 +58125,7 @@ function buildListParams(args) {
|
|
|
57978
58125
|
}
|
|
57979
58126
|
return params;
|
|
57980
58127
|
}
|
|
57981
|
-
var listCommand19 =
|
|
58128
|
+
var listCommand19 = defineCommand215({
|
|
57982
58129
|
meta: {
|
|
57983
58130
|
name: "list",
|
|
57984
58131
|
description: "List testimonials with optional filters. Example: baker testimonials list --source google --sentiment positive"
|
|
@@ -58038,7 +58185,7 @@ var listCommand19 = defineCommand214({
|
|
|
58038
58185
|
});
|
|
58039
58186
|
|
|
58040
58187
|
// src/commands/testimonials/search.ts
|
|
58041
|
-
import { defineCommand as
|
|
58188
|
+
import { defineCommand as defineCommand216 } from "citty";
|
|
58042
58189
|
var FILTER_FLAGS2 = ["source", "rating-min", "rating-max", "status", "sentiment", "language", "tags"];
|
|
58043
58190
|
function languageBiasHint(results, requestedLanguage) {
|
|
58044
58191
|
if (requestedLanguage) {
|
|
@@ -58117,7 +58264,7 @@ function buildSearchRequest(query, args) {
|
|
|
58117
58264
|
}
|
|
58118
58265
|
return body;
|
|
58119
58266
|
}
|
|
58120
|
-
var searchCommand3 =
|
|
58267
|
+
var searchCommand3 = defineCommand216({
|
|
58121
58268
|
meta: {
|
|
58122
58269
|
name: "search",
|
|
58123
58270
|
description: "Semantic search testimonials by text query. Uses hybrid BM25 + vector + reranking. Example: baker testimonials search 'great service' --rating-min 4"
|
|
@@ -58181,7 +58328,7 @@ var searchCommand3 = defineCommand215({
|
|
|
58181
58328
|
var tagsCommand5 = makeTagsCommand("testimonials", "testimonial", "/api/testimonials/tags");
|
|
58182
58329
|
|
|
58183
58330
|
// src/commands/testimonials/index.ts
|
|
58184
|
-
var testimonialsCommand =
|
|
58331
|
+
var testimonialsCommand = defineCommand217({
|
|
58185
58332
|
meta: {
|
|
58186
58333
|
name: "testimonials",
|
|
58187
58334
|
description: `Find and browse testimonials in Baker. Subcommands: search, get, list, tags.
|
|
@@ -58203,10 +58350,10 @@ Full guide: __tooling__/docs/tools/baker/testimonials.md`
|
|
|
58203
58350
|
});
|
|
58204
58351
|
|
|
58205
58352
|
// src/commands/videos/index.ts
|
|
58206
|
-
import { defineCommand as
|
|
58353
|
+
import { defineCommand as defineCommand225 } from "citty";
|
|
58207
58354
|
|
|
58208
58355
|
// src/commands/videos/delete.ts
|
|
58209
|
-
import { defineCommand as
|
|
58356
|
+
import { defineCommand as defineCommand218 } from "citty";
|
|
58210
58357
|
registerSchema({
|
|
58211
58358
|
command: "videos.delete",
|
|
58212
58359
|
description: "Delete a video by ID",
|
|
@@ -58220,7 +58367,7 @@ registerSchema({
|
|
|
58220
58367
|
}
|
|
58221
58368
|
}
|
|
58222
58369
|
});
|
|
58223
|
-
var deleteCommand4 =
|
|
58370
|
+
var deleteCommand4 = defineCommand218({
|
|
58224
58371
|
meta: {
|
|
58225
58372
|
name: "delete",
|
|
58226
58373
|
description: "Delete a video by ID. Use --dry-run to preview. Example: baker videos delete j571abc123 --dry-run"
|
|
@@ -58260,8 +58407,83 @@ var deleteCommand4 = defineCommand217({
|
|
|
58260
58407
|
}
|
|
58261
58408
|
});
|
|
58262
58409
|
|
|
58410
|
+
// src/commands/videos/describe.ts
|
|
58411
|
+
import { defineCommand as defineCommand219 } from "citty";
|
|
58412
|
+
var DESCRIPTION_HELP2 = "What the clip actually shows, in the words someone would search for it by. This is what `baker videos search` retrieves on.";
|
|
58413
|
+
registerSchema({
|
|
58414
|
+
command: "videos.describe",
|
|
58415
|
+
description: "Correct a library video's stored name, description or tags. Start here when a clip's description is wrong \u2014 it is what semantic search reads.",
|
|
58416
|
+
args: {
|
|
58417
|
+
id: { type: "string", description: "Video ID", required: true },
|
|
58418
|
+
description: { type: "string", description: DESCRIPTION_HELP2, required: false },
|
|
58419
|
+
name: { type: "string", description: "Short human label for the clip", required: false },
|
|
58420
|
+
tags: {
|
|
58421
|
+
type: "string",
|
|
58422
|
+
description: "Tags for the clip \u2014 repeatable (`--tags a --tags b`) or one comma list. **Replaces** the existing set",
|
|
58423
|
+
required: false
|
|
58424
|
+
},
|
|
58425
|
+
full: { type: "boolean", description: "Return the whole library row, not just what changed", required: false }
|
|
58426
|
+
}
|
|
58427
|
+
});
|
|
58428
|
+
var describeCommand2 = defineCommand219({
|
|
58429
|
+
meta: {
|
|
58430
|
+
name: "describe",
|
|
58431
|
+
description: `Correct what the library says a video is. Only the fields you pass change; the rest keep their current values.
|
|
58432
|
+
|
|
58433
|
+
Start here when a search keeps missing a clip you know is there, or when the AI description got the subject wrong.
|
|
58434
|
+
|
|
58435
|
+
Example: baker videos describe j571abc123 --description "Customer explaining how onboarding cut their setup from a week to a day" --tags testimonial`
|
|
58436
|
+
},
|
|
58437
|
+
args: {
|
|
58438
|
+
id: { type: "positional", description: "Video ID", required: false },
|
|
58439
|
+
"video-id": { type: "string", description: "Video ID (alternative to positional)", required: false },
|
|
58440
|
+
description: { type: "string", description: DESCRIPTION_HELP2, required: false },
|
|
58441
|
+
name: { type: "string", description: "Short human label for the clip", required: false },
|
|
58442
|
+
tags: {
|
|
58443
|
+
type: "string",
|
|
58444
|
+
description: "Tags for the clip \u2014 repeatable (`--tags a --tags b`) or one comma list. **Replaces** the existing set",
|
|
58445
|
+
required: false
|
|
58446
|
+
},
|
|
58447
|
+
full: { type: "boolean", description: "Return the whole library row", required: false, default: false }
|
|
58448
|
+
},
|
|
58449
|
+
run: async ({ args, rawArgs }) => {
|
|
58450
|
+
const id = args.id || args["video-id"];
|
|
58451
|
+
if (!id) {
|
|
58452
|
+
writeJson({ ok: false, error: { code: "VALIDATION_ERROR", message: "Video ID is required" } });
|
|
58453
|
+
process.exit(1);
|
|
58454
|
+
}
|
|
58455
|
+
const fields = describeFields(args, rawArgs);
|
|
58456
|
+
if (fields.name === void 0 && fields.description === void 0 && fields.tags === void 0) {
|
|
58457
|
+
writeJson({
|
|
58458
|
+
ok: false,
|
|
58459
|
+
error: {
|
|
58460
|
+
code: "VALIDATION_ERROR",
|
|
58461
|
+
message: "Nothing to change",
|
|
58462
|
+
fix: "Pass at least one of --description, --name or --tags."
|
|
58463
|
+
}
|
|
58464
|
+
});
|
|
58465
|
+
process.exit(1);
|
|
58466
|
+
}
|
|
58467
|
+
try {
|
|
58468
|
+
validateConvexId(id);
|
|
58469
|
+
const body = { id, ...fields };
|
|
58470
|
+
if (args.full) body.full = true;
|
|
58471
|
+
const data = await apiPost("/api/videos/describe", body);
|
|
58472
|
+
writeJson({ ok: true, data, hints: describeHints("videos", fields) });
|
|
58473
|
+
} catch (err) {
|
|
58474
|
+
if (err instanceof ApiError) {
|
|
58475
|
+
const fix = describeErrorFix(err.code, "videos");
|
|
58476
|
+
writeJson({ ok: false, error: { code: err.code, message: err.message, ...fix ? { fix } : {} } });
|
|
58477
|
+
process.exit(1);
|
|
58478
|
+
}
|
|
58479
|
+
writeJson({ ok: false, error: { code: "INTERNAL_ERROR", message: "Unexpected error" } });
|
|
58480
|
+
process.exit(1);
|
|
58481
|
+
}
|
|
58482
|
+
}
|
|
58483
|
+
});
|
|
58484
|
+
|
|
58263
58485
|
// src/commands/videos/get.ts
|
|
58264
|
-
import { defineCommand as
|
|
58486
|
+
import { defineCommand as defineCommand220 } from "citty";
|
|
58265
58487
|
registerSchema({
|
|
58266
58488
|
command: "videos.get",
|
|
58267
58489
|
description: "Get a single video by ID",
|
|
@@ -58269,7 +58491,7 @@ registerSchema({
|
|
|
58269
58491
|
id: { type: "string", description: "Video ID", required: true }
|
|
58270
58492
|
}
|
|
58271
58493
|
});
|
|
58272
|
-
var getCommand7 =
|
|
58494
|
+
var getCommand7 = defineCommand220({
|
|
58273
58495
|
meta: { name: "get", description: "Get a single video by ID. Example: baker videos get j571abc123" },
|
|
58274
58496
|
args: {
|
|
58275
58497
|
id: { type: "positional", description: "Video ID", required: false },
|
|
@@ -58306,7 +58528,7 @@ var getCommand7 = defineCommand218({
|
|
|
58306
58528
|
});
|
|
58307
58529
|
|
|
58308
58530
|
// src/commands/videos/group.ts
|
|
58309
|
-
import { defineCommand as
|
|
58531
|
+
import { defineCommand as defineCommand221 } from "citty";
|
|
58310
58532
|
registerSchema({
|
|
58311
58533
|
command: "videos.group",
|
|
58312
58534
|
description: "List every clip and image that arrived in the same set as this video (carousel slides, one page)",
|
|
@@ -58315,7 +58537,7 @@ registerSchema({
|
|
|
58315
58537
|
"group-key": { type: "string", description: "The set key directly, when you already have it", required: false }
|
|
58316
58538
|
}
|
|
58317
58539
|
});
|
|
58318
|
-
var groupCommand2 =
|
|
58540
|
+
var groupCommand2 = defineCommand221({
|
|
58319
58541
|
meta: {
|
|
58320
58542
|
name: "group",
|
|
58321
58543
|
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>"
|
|
@@ -58338,7 +58560,7 @@ var groupCommand2 = defineCommand219({
|
|
|
58338
58560
|
import { mkdtemp as mkdtemp2, rm as rm8, stat as stat10 } from "fs/promises";
|
|
58339
58561
|
import { tmpdir as tmpdir3 } from "os";
|
|
58340
58562
|
import path44 from "path";
|
|
58341
|
-
import { defineCommand as
|
|
58563
|
+
import { defineCommand as defineCommand222 } from "citty";
|
|
58342
58564
|
|
|
58343
58565
|
// src/lib/streamUpload.ts
|
|
58344
58566
|
import { createHash as createHash2 } from "crypto";
|
|
@@ -58502,7 +58724,7 @@ registerSchema({
|
|
|
58502
58724
|
"dry-run": { type: "boolean", description: "Preview the operation without executing", required: false }
|
|
58503
58725
|
}
|
|
58504
58726
|
});
|
|
58505
|
-
var ingestCommand2 =
|
|
58727
|
+
var ingestCommand2 = defineCommand222({
|
|
58506
58728
|
meta: {
|
|
58507
58729
|
name: "ingest",
|
|
58508
58730
|
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"
|
|
@@ -58764,7 +58986,7 @@ async function uploadToAssetStore(filePath, sizeBytes) {
|
|
|
58764
58986
|
}
|
|
58765
58987
|
|
|
58766
58988
|
// src/commands/videos/search.ts
|
|
58767
|
-
import { defineCommand as
|
|
58989
|
+
import { defineCommand as defineCommand223 } from "citty";
|
|
58768
58990
|
registerSchema({
|
|
58769
58991
|
command: "videos.search",
|
|
58770
58992
|
description: "Search videos by text query. Only returns ready videos.",
|
|
@@ -58774,7 +58996,7 @@ registerSchema({
|
|
|
58774
58996
|
tags: { type: "string", description: "Comma-separated tags to filter by", required: false }
|
|
58775
58997
|
}
|
|
58776
58998
|
});
|
|
58777
|
-
var searchCommand4 =
|
|
58999
|
+
var searchCommand4 = defineCommand223({
|
|
58778
59000
|
meta: {
|
|
58779
59001
|
name: "search",
|
|
58780
59002
|
description: "Semantic search videos by text query. Uses hybrid BM25 + vector + reranking. Example: baker videos search 'product demo' --tags tutorial"
|
|
@@ -58826,7 +59048,7 @@ var tagsCommand6 = makeTagsCommand("videos", "video", "/api/videos/tags");
|
|
|
58826
59048
|
// src/commands/videos/upload.ts
|
|
58827
59049
|
import { readFile as readFile30, stat as stat11 } from "fs/promises";
|
|
58828
59050
|
import { basename as basename3, extname as extname4 } from "path";
|
|
58829
|
-
import { defineCommand as
|
|
59051
|
+
import { defineCommand as defineCommand224 } from "citty";
|
|
58830
59052
|
var MIME_MAP = {
|
|
58831
59053
|
".mp4": "video/mp4",
|
|
58832
59054
|
".mov": "video/quicktime",
|
|
@@ -58868,7 +59090,7 @@ function detectContentType(filePath) {
|
|
|
58868
59090
|
function isRemoteUrl3(value) {
|
|
58869
59091
|
return /^https?:\/\//i.test(value);
|
|
58870
59092
|
}
|
|
58871
|
-
var uploadCommand2 =
|
|
59093
|
+
var uploadCommand2 = defineCommand224({
|
|
58872
59094
|
meta: {
|
|
58873
59095
|
name: "upload",
|
|
58874
59096
|
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"
|
|
@@ -58952,10 +59174,10 @@ var uploadCommand2 = defineCommand222({
|
|
|
58952
59174
|
});
|
|
58953
59175
|
|
|
58954
59176
|
// src/commands/videos/index.ts
|
|
58955
|
-
var videosCommand =
|
|
59177
|
+
var videosCommand = defineCommand225({
|
|
58956
59178
|
meta: {
|
|
58957
59179
|
name: "videos",
|
|
58958
|
-
description: `Find and manage videos in Baker. Subcommands: search, get, upload, ingest, delete, tags.
|
|
59180
|
+
description: `Find and manage videos in Baker. Subcommands: search, get, upload, ingest, describe, delete, tags.
|
|
58959
59181
|
|
|
58960
59182
|
Examples:
|
|
58961
59183
|
baker videos search "product demo" --limit 5
|
|
@@ -58963,6 +59185,7 @@ Examples:
|
|
|
58963
59185
|
baker videos get <video-id>
|
|
58964
59186
|
baker videos upload ./demo.mp4
|
|
58965
59187
|
baker videos ingest https://www.youtube.com/watch?v=abc123
|
|
59188
|
+
baker videos describe <video-id> --description "Customer testimonial, 30s"
|
|
58966
59189
|
baker videos delete <video-id> --dry-run
|
|
58967
59190
|
baker videos tags
|
|
58968
59191
|
Full guide: __tooling__/docs/tools/baker/videos.md`
|
|
@@ -58973,16 +59196,17 @@ Full guide: __tooling__/docs/tools/baker/videos.md`
|
|
|
58973
59196
|
search: searchCommand4,
|
|
58974
59197
|
upload: uploadCommand2,
|
|
58975
59198
|
ingest: ingestCommand2,
|
|
59199
|
+
describe: describeCommand2,
|
|
58976
59200
|
delete: deleteCommand4,
|
|
58977
59201
|
tags: tagsCommand6
|
|
58978
59202
|
}
|
|
58979
59203
|
});
|
|
58980
59204
|
|
|
58981
59205
|
// src/commands/winning-ads/index.ts
|
|
58982
|
-
import { defineCommand as
|
|
59206
|
+
import { defineCommand as defineCommand238 } from "citty";
|
|
58983
59207
|
|
|
58984
59208
|
// src/commands/winning-ads/advertisers.ts
|
|
58985
|
-
import { defineCommand as
|
|
59209
|
+
import { defineCommand as defineCommand226 } from "citty";
|
|
58986
59210
|
|
|
58987
59211
|
// src/commands/winning-ads/shared.ts
|
|
58988
59212
|
function splitList2(value) {
|
|
@@ -59035,7 +59259,7 @@ function advertiserNormalizer(record, full) {
|
|
|
59035
59259
|
last_synced_at: record.last_synced_at ?? null
|
|
59036
59260
|
};
|
|
59037
59261
|
}
|
|
59038
|
-
var advertisersCommand2 =
|
|
59262
|
+
var advertisersCommand2 = defineCommand226({
|
|
59039
59263
|
meta: {
|
|
59040
59264
|
name: "advertisers",
|
|
59041
59265
|
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'
|
|
@@ -59093,7 +59317,7 @@ var advertisersCommand2 = defineCommand224({
|
|
|
59093
59317
|
});
|
|
59094
59318
|
|
|
59095
59319
|
// src/commands/winning-ads/brief.ts
|
|
59096
|
-
import { defineCommand as
|
|
59320
|
+
import { defineCommand as defineCommand227 } from "citty";
|
|
59097
59321
|
registerSchema({
|
|
59098
59322
|
command: "winning-ads.brief",
|
|
59099
59323
|
description: "Generate a creative brief grounded in strategically-similar winning ads. Optionally describe the target creative with --dna (JSON) and steer with --notes.",
|
|
@@ -59139,7 +59363,7 @@ function parseDna(raw) {
|
|
|
59139
59363
|
}
|
|
59140
59364
|
return parsed;
|
|
59141
59365
|
}
|
|
59142
|
-
var briefCommand =
|
|
59366
|
+
var briefCommand = defineCommand227({
|
|
59143
59367
|
meta: {
|
|
59144
59368
|
name: "brief",
|
|
59145
59369
|
description: `Generate a creative brief from winning references. Example: baker winning-ads brief --dna '{"angle":"cost savings"}' --notes "B2B, LinkedIn video" --k 8`
|
|
@@ -59175,7 +59399,7 @@ var briefCommand = defineCommand225({
|
|
|
59175
59399
|
});
|
|
59176
59400
|
|
|
59177
59401
|
// src/commands/winning-ads/content.ts
|
|
59178
|
-
import { defineCommand as
|
|
59402
|
+
import { defineCommand as defineCommand228 } from "citty";
|
|
59179
59403
|
registerSchema({
|
|
59180
59404
|
command: "winning-ads.content",
|
|
59181
59405
|
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.",
|
|
@@ -59188,7 +59412,7 @@ registerSchema({
|
|
|
59188
59412
|
}
|
|
59189
59413
|
}
|
|
59190
59414
|
});
|
|
59191
|
-
var contentCommand =
|
|
59415
|
+
var contentCommand = defineCommand228({
|
|
59192
59416
|
meta: {
|
|
59193
59417
|
name: "content",
|
|
59194
59418
|
description: "Read the transcript + on-screen text + copy of one winning ad. Example: baker winning-ads content adg_123 --platform meta --full --output md"
|
|
@@ -59237,7 +59461,7 @@ var contentCommand = defineCommand226({
|
|
|
59237
59461
|
});
|
|
59238
59462
|
|
|
59239
59463
|
// src/commands/winning-ads/feed.ts
|
|
59240
|
-
import { defineCommand as
|
|
59464
|
+
import { defineCommand as defineCommand229 } from "citty";
|
|
59241
59465
|
function buildFeedParams(input) {
|
|
59242
59466
|
const params = {};
|
|
59243
59467
|
const advertiser = splitList2(input.advertiser);
|
|
@@ -59289,7 +59513,7 @@ registerSchema({
|
|
|
59289
59513
|
format: { type: "string", description: "Comma-separated formats to include (e.g. static,video)", required: false }
|
|
59290
59514
|
}
|
|
59291
59515
|
});
|
|
59292
|
-
var feedCommand =
|
|
59516
|
+
var feedCommand = defineCommand229({
|
|
59293
59517
|
meta: {
|
|
59294
59518
|
name: "feed",
|
|
59295
59519
|
description: "Winners across every brand you follow (browse, then trim per advertiser). Example: baker winning-ads feed --per-advertiser 5 --output md"
|
|
@@ -59374,7 +59598,7 @@ var feedCommand = defineCommand227({
|
|
|
59374
59598
|
});
|
|
59375
59599
|
|
|
59376
59600
|
// src/commands/winning-ads/follow.ts
|
|
59377
|
-
import { defineCommand as
|
|
59601
|
+
import { defineCommand as defineCommand230 } from "citty";
|
|
59378
59602
|
var PLATFORMS = adLibraryPlatformSchema.options;
|
|
59379
59603
|
registerSchema({
|
|
59380
59604
|
command: "winning-ads.follow",
|
|
@@ -59389,7 +59613,7 @@ registerSchema({
|
|
|
59389
59613
|
label: { type: "string", description: "Optional display label (defaults to the resolved name)", required: false }
|
|
59390
59614
|
}
|
|
59391
59615
|
});
|
|
59392
|
-
var followCommand =
|
|
59616
|
+
var followCommand = defineCommand230({
|
|
59393
59617
|
meta: {
|
|
59394
59618
|
name: "follow",
|
|
59395
59619
|
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 every platform we can resolve. Example: baker winning-ads follow "deel.com" --platform meta'
|
|
@@ -59436,7 +59660,7 @@ var followCommand = defineCommand228({
|
|
|
59436
59660
|
});
|
|
59437
59661
|
|
|
59438
59662
|
// src/commands/winning-ads/follow-competitors.ts
|
|
59439
|
-
import { defineCommand as
|
|
59663
|
+
import { defineCommand as defineCommand231 } from "citty";
|
|
59440
59664
|
var PLATFORMS2 = adLibraryPlatformSchema.options;
|
|
59441
59665
|
var BATCH_TIMEOUT_MS = 3e5;
|
|
59442
59666
|
function buildFollowBatchBody(input) {
|
|
@@ -59469,7 +59693,7 @@ registerSchema({
|
|
|
59469
59693
|
}
|
|
59470
59694
|
}
|
|
59471
59695
|
});
|
|
59472
|
-
var followCompetitorsCommand =
|
|
59696
|
+
var followCompetitorsCommand = defineCommand231({
|
|
59473
59697
|
meta: {
|
|
59474
59698
|
name: "follow-competitors",
|
|
59475
59699
|
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"'
|
|
@@ -59544,7 +59768,7 @@ var followCompetitorsCommand = defineCommand229({
|
|
|
59544
59768
|
});
|
|
59545
59769
|
|
|
59546
59770
|
// src/commands/winning-ads/following.ts
|
|
59547
|
-
import { defineCommand as
|
|
59771
|
+
import { defineCommand as defineCommand232 } from "citty";
|
|
59548
59772
|
registerSchema({
|
|
59549
59773
|
command: "winning-ads.following",
|
|
59550
59774
|
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.",
|
|
@@ -59598,7 +59822,7 @@ function followingNormalizer(record, full) {
|
|
|
59598
59822
|
platforms: Array.isArray(record.platforms) ? record.platforms : []
|
|
59599
59823
|
};
|
|
59600
59824
|
}
|
|
59601
|
-
var followingCommand =
|
|
59825
|
+
var followingCommand = defineCommand232({
|
|
59602
59826
|
meta: {
|
|
59603
59827
|
name: "following",
|
|
59604
59828
|
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"
|
|
@@ -59634,7 +59858,7 @@ var followingCommand = defineCommand230({
|
|
|
59634
59858
|
});
|
|
59635
59859
|
|
|
59636
59860
|
// src/commands/winning-ads/patterns.ts
|
|
59637
|
-
import { defineCommand as
|
|
59861
|
+
import { defineCommand as defineCommand233 } from "citty";
|
|
59638
59862
|
registerSchema({
|
|
59639
59863
|
command: "winning-ads.patterns",
|
|
59640
59864
|
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.",
|
|
@@ -59673,7 +59897,7 @@ function discriminatorRow(record) {
|
|
|
59673
59897
|
top_values_duds: Array.isArray(record.top_values_b) ? record.top_values_b.join(", ") : ""
|
|
59674
59898
|
};
|
|
59675
59899
|
}
|
|
59676
|
-
var patternsCommand =
|
|
59900
|
+
var patternsCommand = defineCommand233({
|
|
59677
59901
|
meta: {
|
|
59678
59902
|
name: "patterns",
|
|
59679
59903
|
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"
|
|
@@ -59729,7 +59953,7 @@ var patternsCommand = defineCommand231({
|
|
|
59729
59953
|
});
|
|
59730
59954
|
|
|
59731
59955
|
// src/commands/winning-ads/search.ts
|
|
59732
|
-
import { defineCommand as
|
|
59956
|
+
import { defineCommand as defineCommand234 } from "citty";
|
|
59733
59957
|
registerSchema({
|
|
59734
59958
|
command: "winning-ads.search",
|
|
59735
59959
|
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.",
|
|
@@ -59837,7 +60061,7 @@ function buildSearchBody2(args) {
|
|
|
59837
60061
|
}
|
|
59838
60062
|
return body;
|
|
59839
60063
|
}
|
|
59840
|
-
var searchCommand5 =
|
|
60064
|
+
var searchCommand5 = defineCommand234({
|
|
59841
60065
|
meta: {
|
|
59842
60066
|
name: "search",
|
|
59843
60067
|
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"
|
|
@@ -59952,7 +60176,7 @@ var searchCommand5 = defineCommand232({
|
|
|
59952
60176
|
});
|
|
59953
60177
|
|
|
59954
60178
|
// src/commands/winning-ads/seeds.ts
|
|
59955
|
-
import { defineCommand as
|
|
60179
|
+
import { defineCommand as defineCommand235 } from "citty";
|
|
59956
60180
|
function leanRow(r) {
|
|
59957
60181
|
return {
|
|
59958
60182
|
key: r.key,
|
|
@@ -59980,7 +60204,7 @@ function makeSeedCommand(opts) {
|
|
|
59980
60204
|
limit: { type: "number", description: "Max keys 1-100 (default 20)", required: false, default: 20 }
|
|
59981
60205
|
}
|
|
59982
60206
|
});
|
|
59983
|
-
return
|
|
60207
|
+
return defineCommand235({
|
|
59984
60208
|
meta: { name: opts.name, description: opts.description },
|
|
59985
60209
|
args: {
|
|
59986
60210
|
platform: { type: "string", description: "Single platform to segment on", required: false },
|
|
@@ -60029,7 +60253,7 @@ var formatsCommand = makeSeedCommand({
|
|
|
60029
60253
|
});
|
|
60030
60254
|
|
|
60031
60255
|
// src/commands/winning-ads/unfollow.ts
|
|
60032
|
-
import { defineCommand as
|
|
60256
|
+
import { defineCommand as defineCommand236 } from "citty";
|
|
60033
60257
|
registerSchema({
|
|
60034
60258
|
command: "winning-ads.unfollow",
|
|
60035
60259
|
description: "Stop following a brand \u2014 removes it from your ad-dna library by advertiser id.",
|
|
@@ -60037,7 +60261,7 @@ registerSchema({
|
|
|
60037
60261
|
advertiser: { type: "string", description: "Advertiser id to unfollow", required: true }
|
|
60038
60262
|
}
|
|
60039
60263
|
});
|
|
60040
|
-
var unfollowCommand =
|
|
60264
|
+
var unfollowCommand = defineCommand236({
|
|
60041
60265
|
meta: {
|
|
60042
60266
|
name: "unfollow",
|
|
60043
60267
|
description: "Stop following a brand by advertiser id. Example: baker winning-ads unfollow adv_123"
|
|
@@ -60058,7 +60282,7 @@ var unfollowCommand = defineCommand234({
|
|
|
60058
60282
|
});
|
|
60059
60283
|
|
|
60060
60284
|
// src/commands/winning-ads/winners.ts
|
|
60061
|
-
import { defineCommand as
|
|
60285
|
+
import { defineCommand as defineCommand237 } from "citty";
|
|
60062
60286
|
registerSchema({
|
|
60063
60287
|
command: "winning-ads.winners",
|
|
60064
60288
|
description: "Top winning ads for one advertiser id (from `advertisers` or `following`). Returns lean winner cards; add --full for DNA + longevity.",
|
|
@@ -60068,7 +60292,7 @@ registerSchema({
|
|
|
60068
60292
|
platform: { type: "string", description: "Filter to a single platform: meta|linkedin|tiktok", required: false }
|
|
60069
60293
|
}
|
|
60070
60294
|
});
|
|
60071
|
-
var winnersCommand =
|
|
60295
|
+
var winnersCommand = defineCommand237({
|
|
60072
60296
|
meta: {
|
|
60073
60297
|
name: "winners",
|
|
60074
60298
|
description: "Top winning ads for a specific advertiser id. Example: baker winning-ads winners adv_123 --top 15 --output md"
|
|
@@ -60118,7 +60342,7 @@ var winnersCommand = defineCommand235({
|
|
|
60118
60342
|
});
|
|
60119
60343
|
|
|
60120
60344
|
// src/commands/winning-ads/index.ts
|
|
60121
|
-
var winningAdsCommand =
|
|
60345
|
+
var winningAdsCommand = defineCommand238({
|
|
60122
60346
|
meta: {
|
|
60123
60347
|
name: "winning-ads",
|
|
60124
60348
|
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.
|
|
@@ -60356,7 +60580,7 @@ function getCliVersion() {
|
|
|
60356
60580
|
}
|
|
60357
60581
|
|
|
60358
60582
|
// src/cli.ts
|
|
60359
|
-
var main =
|
|
60583
|
+
var main = defineCommand239({
|
|
60360
60584
|
meta: {
|
|
60361
60585
|
name: "baker",
|
|
60362
60586
|
version: getCliVersion(),
|