@koda-sl/baker-cli 0.233.0 → 0.235.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 +30 -1
- package/dist/cli.js +909 -393
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -108,7 +108,7 @@ import {
|
|
|
108
108
|
} from "./chunk-DZUVUGEP.js";
|
|
109
109
|
|
|
110
110
|
// src/cli.ts
|
|
111
|
-
import { defineCommand as
|
|
111
|
+
import { defineCommand as defineCommand226, runMain } from "citty";
|
|
112
112
|
|
|
113
113
|
// src/cache-flag.ts
|
|
114
114
|
var NO_CACHE_ARG = {
|
|
@@ -7679,7 +7679,7 @@ Full guide: __tooling__/docs/tools/baker/actions.md`
|
|
|
7679
7679
|
});
|
|
7680
7680
|
|
|
7681
7681
|
// src/commands/ads/index.ts
|
|
7682
|
-
import { defineCommand as
|
|
7682
|
+
import { defineCommand as defineCommand87 } from "citty";
|
|
7683
7683
|
|
|
7684
7684
|
// src/commands/ads/google/index.ts
|
|
7685
7685
|
import { defineCommand as defineCommand31 } from "citty";
|
|
@@ -16554,7 +16554,7 @@ Full guide: __tooling__/docs/tools/baker/ads-linkedin.md`
|
|
|
16554
16554
|
});
|
|
16555
16555
|
|
|
16556
16556
|
// src/commands/ads/meta/index.ts
|
|
16557
|
-
import { defineCommand as
|
|
16557
|
+
import { defineCommand as defineCommand69 } from "citty";
|
|
16558
16558
|
|
|
16559
16559
|
// src/commands/ads/meta/account.ts
|
|
16560
16560
|
import { defineCommand as defineCommand52 } from "citty";
|
|
@@ -16698,6 +16698,13 @@ import { defineCommand as defineCommand55 } from "citty";
|
|
|
16698
16698
|
// src/commands/ads/meta/write-shared.ts
|
|
16699
16699
|
import { readFileSync as readFileSync8 } from "fs";
|
|
16700
16700
|
|
|
16701
|
+
// ../api/src/ads-meta/leadAds.ts
|
|
16702
|
+
var META_LEAD_ADS_NOT_ENABLED_MESSAGE = "Reading Meta instant forms and their leads is not switched on for this company. Everything else on Meta keeps working. Tell the user this needs switching on by the Baker team, and carry on with the rest of the job.";
|
|
16703
|
+
var META_LEAD_ADS_RECONNECT_MESSAGE = "This Meta connection was made before lead ads were switched on for this company, so it cannot work with instant forms or read their leads. Ask the user to reconnect Meta in the dashboard \u2014 that grants the extra permissions \u2014 then ask for this again. Everything else on Meta keeps working meanwhile.";
|
|
16704
|
+
function isMetaLeadAdsRefusal(message) {
|
|
16705
|
+
return message === META_LEAD_ADS_NOT_ENABLED_MESSAGE || message === META_LEAD_ADS_RECONNECT_MESSAGE;
|
|
16706
|
+
}
|
|
16707
|
+
|
|
16701
16708
|
// ../api/src/ads-meta/limits.ts
|
|
16702
16709
|
var META_LIMITS = {
|
|
16703
16710
|
campaign: {
|
|
@@ -19069,9 +19076,177 @@ Async is automatic for heavy queries; pass --async to force it, or --no-async to
|
|
|
19069
19076
|
}
|
|
19070
19077
|
});
|
|
19071
19078
|
|
|
19072
|
-
// src/commands/ads/meta/
|
|
19079
|
+
// src/commands/ads/meta/leads.ts
|
|
19073
19080
|
import { defineCommand as defineCommand64 } from "citty";
|
|
19074
|
-
|
|
19081
|
+
registerSchema({
|
|
19082
|
+
command: "ads.meta.lead-forms",
|
|
19083
|
+
description: "List the instant (lead) forms on a Facebook Page, with how many leads each has collected. Start here: a lead is fetched by form id, and `baker ads meta pages` gives the page id.",
|
|
19084
|
+
args: {
|
|
19085
|
+
"page-id": { type: "string", description: "Facebook Page ID \u2014 from `baker ads meta pages`", required: true },
|
|
19086
|
+
full: { type: "boolean", description: "Include each form's questions", required: false },
|
|
19087
|
+
output: { type: "string", description: "json|csv", required: false, default: "json" }
|
|
19088
|
+
}
|
|
19089
|
+
});
|
|
19090
|
+
registerSchema({
|
|
19091
|
+
command: "ads.meta.leads",
|
|
19092
|
+
description: "Read the leads an instant form collected. Contact details (email, phone) come back masked; pass --full only when the raw values are genuinely needed, e.g. handing them to a CRM.",
|
|
19093
|
+
args: {
|
|
19094
|
+
"form-id": { type: "string", description: "Instant form ID \u2014 from `baker ads meta lead-forms`", required: false },
|
|
19095
|
+
"ad-id": { type: "string", description: "Read the leads of one ad instead of a whole form", required: false },
|
|
19096
|
+
since: { type: "string", description: "Earliest submission date, YYYY-MM-DD", required: false },
|
|
19097
|
+
until: { type: "string", description: "Latest submission date, YYYY-MM-DD (inclusive)", required: false },
|
|
19098
|
+
limit: { type: "string", description: "Leads per page (default 100, max 500)", required: false },
|
|
19099
|
+
after: {
|
|
19100
|
+
type: "string",
|
|
19101
|
+
description: "Cursor from a previous call's nextCursor \u2014 fetches the following page",
|
|
19102
|
+
required: false
|
|
19103
|
+
},
|
|
19104
|
+
full: { type: "boolean", description: "Return raw contact details instead of masked ones", required: false },
|
|
19105
|
+
output: { type: "string", description: "json|csv", required: false, default: "json" }
|
|
19106
|
+
}
|
|
19107
|
+
});
|
|
19108
|
+
var LEAD_FORMS_CAP = 500;
|
|
19109
|
+
function leadFormHints(forms) {
|
|
19110
|
+
if (forms.length === 0) {
|
|
19111
|
+
return ["This Page has NO instant forms. Nothing to read leads from \u2014 the form has to be created first."];
|
|
19112
|
+
}
|
|
19113
|
+
if (forms.length >= LEAD_FORMS_CAP) {
|
|
19114
|
+
return [
|
|
19115
|
+
`PARTIAL LIST \u2014 this Page has at least ${LEAD_FORMS_CAP} instant forms and only the first ${LEAD_FORMS_CAP} came back. Do not describe this as every form on the Page.`
|
|
19116
|
+
];
|
|
19117
|
+
}
|
|
19118
|
+
const empty = forms.filter((form) => (form.leads_count ?? 0) === 0);
|
|
19119
|
+
if (empty.length === forms.length) {
|
|
19120
|
+
return [
|
|
19121
|
+
"Every form on this Page has collected 0 leads. That is a real, readable answer \u2014 the connection works. Do not retry and do not report it as a permissions problem."
|
|
19122
|
+
];
|
|
19123
|
+
}
|
|
19124
|
+
return [];
|
|
19125
|
+
}
|
|
19126
|
+
function handleLeadsError(err) {
|
|
19127
|
+
if (err instanceof ApiError && err.code === "FORBIDDEN" && isMetaLeadAdsRefusal(err.message)) {
|
|
19128
|
+
writeAdsJson({
|
|
19129
|
+
ok: false,
|
|
19130
|
+
error: {
|
|
19131
|
+
code: err.code,
|
|
19132
|
+
message: err.message,
|
|
19133
|
+
fix: { action: "reject", explanation: err.message },
|
|
19134
|
+
retryable: false
|
|
19135
|
+
}
|
|
19136
|
+
});
|
|
19137
|
+
process.exit(1);
|
|
19138
|
+
}
|
|
19139
|
+
handleMetaError(err);
|
|
19140
|
+
}
|
|
19141
|
+
function leadPageHints(page, full) {
|
|
19142
|
+
const hints = [];
|
|
19143
|
+
if (page.nextCursor) {
|
|
19144
|
+
hints.push(
|
|
19145
|
+
`PARTIAL PAGE \u2014 more leads exist. This is ${page.leads.length} of an unknown larger number; do NOT report it as a total. Fetch the next page with \`--after ${page.nextCursor}\` (repeat until no nextCursor), or narrow the window with --since/--until.`
|
|
19146
|
+
);
|
|
19147
|
+
}
|
|
19148
|
+
if (!full) {
|
|
19149
|
+
hints.push(
|
|
19150
|
+
"Email and phone answers are masked. Report on them as they are; pass --full only when the raw values have to leave Baker (a CRM hand-off), and never paste them into the chat otherwise."
|
|
19151
|
+
);
|
|
19152
|
+
}
|
|
19153
|
+
return hints;
|
|
19154
|
+
}
|
|
19155
|
+
var leadFormsCommand2 = defineCommand64({
|
|
19156
|
+
meta: {
|
|
19157
|
+
name: "lead-forms",
|
|
19158
|
+
description: `List the instant (lead) forms on a Facebook Page, with each form's lead count. A lead is read by form id, so start here \u2014 get the Page id from \`baker ads meta pages\`.
|
|
19159
|
+
|
|
19160
|
+
Examples:
|
|
19161
|
+
baker ads meta lead-forms --page-id 100635183117758
|
|
19162
|
+
baker ads meta lead-forms --page-id 100635183117758 --full # also lists each form's questions`
|
|
19163
|
+
},
|
|
19164
|
+
args: {
|
|
19165
|
+
"page-id": { type: "string", description: "Facebook Page ID" },
|
|
19166
|
+
full: { type: "boolean", description: "Include each form's questions" },
|
|
19167
|
+
output: { type: "string", description: "Output format", default: "json" }
|
|
19168
|
+
},
|
|
19169
|
+
run: async ({ args }) => {
|
|
19170
|
+
try {
|
|
19171
|
+
const pageId = args["page-id"];
|
|
19172
|
+
if (!pageId) {
|
|
19173
|
+
handleLeadsError(new Error("--page-id is required. Run `baker ads meta pages` to find it."));
|
|
19174
|
+
}
|
|
19175
|
+
const params = { "page-id": pageId };
|
|
19176
|
+
if (args.full) params.full = "true";
|
|
19177
|
+
const data = await apiGet("/api/ads/meta/lead-forms", params);
|
|
19178
|
+
const fmt = csvOrJson(args);
|
|
19179
|
+
if (fmt !== "json") {
|
|
19180
|
+
writeAdsOutput(data, fmt);
|
|
19181
|
+
return;
|
|
19182
|
+
}
|
|
19183
|
+
const hints = leadFormHints(data);
|
|
19184
|
+
writeJsonEnvelope(hints.length > 0 ? { ok: true, data, hints } : { ok: true, data });
|
|
19185
|
+
} catch (err) {
|
|
19186
|
+
handleLeadsError(err);
|
|
19187
|
+
}
|
|
19188
|
+
}
|
|
19189
|
+
});
|
|
19190
|
+
var leadsCommand2 = defineCommand64({
|
|
19191
|
+
meta: {
|
|
19192
|
+
name: "leads",
|
|
19193
|
+
description: `Read the leads an instant form collected. Every question comes back; email and phone answers are MASKED unless you pass --full, so you can report on what a form is collecting without moving contact details around.
|
|
19194
|
+
|
|
19195
|
+
Examples:
|
|
19196
|
+
baker ads meta leads --form-id 987654321
|
|
19197
|
+
baker ads meta leads --form-id 987654321 --since 2026-08-01 --until 2026-08-31
|
|
19198
|
+
baker ads meta leads --ad-id 6123456789 --limit 50
|
|
19199
|
+
baker ads meta leads --form-id 987654321 --after <nextCursor> # the next page
|
|
19200
|
+
baker ads meta leads --form-id 987654321 --full # raw contact details \u2014 only when handing leads over
|
|
19201
|
+
|
|
19202
|
+
Results are PAGED. A response carrying \`nextCursor\` is not the whole set \u2014 follow it before reporting any total.`
|
|
19203
|
+
},
|
|
19204
|
+
args: {
|
|
19205
|
+
"form-id": { type: "string", description: "Instant form ID (from `baker ads meta lead-forms`)" },
|
|
19206
|
+
"ad-id": { type: "string", description: "Read one ad's leads instead of a whole form" },
|
|
19207
|
+
since: { type: "string", description: "Earliest submission date, YYYY-MM-DD" },
|
|
19208
|
+
until: { type: "string", description: "Latest submission date, YYYY-MM-DD (inclusive)" },
|
|
19209
|
+
limit: { type: "string", description: "Leads per page (default 100, max 500)" },
|
|
19210
|
+
after: { type: "string", description: "Cursor from a previous call's nextCursor" },
|
|
19211
|
+
full: { type: "boolean", description: "Return raw contact details instead of masked ones" },
|
|
19212
|
+
output: { type: "string", description: "Output format", default: "json" }
|
|
19213
|
+
},
|
|
19214
|
+
run: async ({ args }) => {
|
|
19215
|
+
try {
|
|
19216
|
+
const formId = args["form-id"];
|
|
19217
|
+
const adId = args["ad-id"];
|
|
19218
|
+
if (!formId && !adId) {
|
|
19219
|
+
handleLeadsError(new Error("Pass --form-id (from `baker ads meta lead-forms`) or --ad-id."));
|
|
19220
|
+
}
|
|
19221
|
+
const params = {};
|
|
19222
|
+
if (formId) params["form-id"] = formId;
|
|
19223
|
+
if (adId) params["ad-id"] = adId;
|
|
19224
|
+
if (args.since) params.since = args.since;
|
|
19225
|
+
if (args.until) params.until = args.until;
|
|
19226
|
+
if (args.limit) params.limit = String(args.limit);
|
|
19227
|
+
if (args.after) params.after = String(args.after);
|
|
19228
|
+
if (args.full) params.full = "true";
|
|
19229
|
+
const page = await apiGet("/api/ads/meta/leads", params);
|
|
19230
|
+
const fmt = csvOrJson(args);
|
|
19231
|
+
if (fmt !== "json") {
|
|
19232
|
+
writeAdsOutput(page.leads, fmt);
|
|
19233
|
+
return;
|
|
19234
|
+
}
|
|
19235
|
+
writeJsonEnvelope({
|
|
19236
|
+
ok: true,
|
|
19237
|
+
data: page.leads,
|
|
19238
|
+
...page.nextCursor ? { nextCursor: page.nextCursor } : {},
|
|
19239
|
+
hints: leadPageHints(page, args.full === true)
|
|
19240
|
+
});
|
|
19241
|
+
} catch (err) {
|
|
19242
|
+
handleLeadsError(err);
|
|
19243
|
+
}
|
|
19244
|
+
}
|
|
19245
|
+
});
|
|
19246
|
+
|
|
19247
|
+
// src/commands/ads/meta/media.ts
|
|
19248
|
+
import { defineCommand as defineCommand65 } from "citty";
|
|
19249
|
+
var metaMediaCommand = defineCommand65({
|
|
19075
19250
|
meta: {
|
|
19076
19251
|
name: "media",
|
|
19077
19252
|
description: "Stage Baker library media uploads to Meta so creatives can reference them. Subcommand: upload. Publishes an ad-image hash or video id a creative binds via --image-ref/--video-ref."
|
|
@@ -19080,7 +19255,7 @@ var metaMediaCommand = defineCommand64({
|
|
|
19080
19255
|
});
|
|
19081
19256
|
|
|
19082
19257
|
// src/commands/ads/meta/pages.ts
|
|
19083
|
-
import { defineCommand as
|
|
19258
|
+
import { defineCommand as defineCommand66 } from "citty";
|
|
19084
19259
|
function advertisablePages(data) {
|
|
19085
19260
|
return data.filter((p) => Array.isArray(p.tasks) && p.tasks.includes("ADVERTISE"));
|
|
19086
19261
|
}
|
|
@@ -19098,7 +19273,7 @@ function pageSelectionHints(data) {
|
|
|
19098
19273
|
}
|
|
19099
19274
|
return [];
|
|
19100
19275
|
}
|
|
19101
|
-
var pagesCommand =
|
|
19276
|
+
var pagesCommand = defineCommand66({
|
|
19102
19277
|
meta: {
|
|
19103
19278
|
name: "pages",
|
|
19104
19279
|
description: `List the Facebook Pages the connected user manages. Every Meta ad publishes from a Page, so use this to identify the Page an ad should run from. The 'tasks' field shows what the user can do on each Page (ADVERTISE means it can back ads). If exactly one Page can ADVERTISE, use it; if more than one can, confirm with the user which Page to use; if none can, ask the user to grant Advertise access \u2014 a wrong or non-advertising Page publishes under the wrong brand identity.
|
|
@@ -19129,8 +19304,8 @@ Examples:
|
|
|
19129
19304
|
});
|
|
19130
19305
|
|
|
19131
19306
|
// src/commands/ads/meta/pixels.ts
|
|
19132
|
-
import { defineCommand as
|
|
19133
|
-
var pixelsCommand =
|
|
19307
|
+
import { defineCommand as defineCommand67 } from "citty";
|
|
19308
|
+
var pixelsCommand = defineCommand67({
|
|
19134
19309
|
meta: {
|
|
19135
19310
|
name: "pixels",
|
|
19136
19311
|
description: `List Meta Pixels for an ad account, or fetch firing stats for one pixel.
|
|
@@ -19212,7 +19387,7 @@ function emit(data, args, warnings = []) {
|
|
|
19212
19387
|
|
|
19213
19388
|
// src/commands/ads/meta/preview.ts
|
|
19214
19389
|
import { writeFileSync as writeFileSync2 } from "fs";
|
|
19215
|
-
import { defineCommand as
|
|
19390
|
+
import { defineCommand as defineCommand68 } from "citty";
|
|
19216
19391
|
var VALID_AD_FORMATS = [
|
|
19217
19392
|
"DESKTOP_FEED_STANDARD",
|
|
19218
19393
|
"MOBILE_FEED_STANDARD",
|
|
@@ -19274,7 +19449,7 @@ function listPlacements() {
|
|
|
19274
19449
|
const instagram = Object.keys(INSTAGRAM_PREVIEW_FORMATS).join(", ");
|
|
19275
19450
|
return `facebook \u2014 ${facebook}; instagram \u2014 ${instagram}`;
|
|
19276
19451
|
}
|
|
19277
|
-
var previewCommand2 =
|
|
19452
|
+
var previewCommand2 = defineCommand68({
|
|
19278
19453
|
meta: {
|
|
19279
19454
|
name: "preview",
|
|
19280
19455
|
description: `Generate a Meta-hosted preview iframe for a creative or ad. Returns iframe HTML which you
|
|
@@ -19353,7 +19528,7 @@ Examples:
|
|
|
19353
19528
|
});
|
|
19354
19529
|
|
|
19355
19530
|
// src/commands/ads/meta/index.ts
|
|
19356
|
-
var metaCommand =
|
|
19531
|
+
var metaCommand = defineCommand69({
|
|
19357
19532
|
meta: {
|
|
19358
19533
|
name: "meta",
|
|
19359
19534
|
description: `Meta Marketing API \u2014 AI-first command surface (Facebook + Instagram ads).
|
|
@@ -19363,6 +19538,8 @@ Discovery:
|
|
|
19363
19538
|
baker ads meta accounts --include-all \u2014 every account the token can see
|
|
19364
19539
|
baker ads meta businesses \u2014 Business Manager IDs
|
|
19365
19540
|
baker ads meta pages \u2014 Facebook Pages the user manages (an ad's identity)
|
|
19541
|
+
baker ads meta lead-forms --page-id 100635183117758 \u2014 instant (lead) forms on a Page, with lead counts
|
|
19542
|
+
baker ads meta leads --form-id 987654321 \u2014 the leads one form collected (contact details masked)
|
|
19366
19543
|
|
|
19367
19544
|
Snapshot a running account (default = ACTIVE only):
|
|
19368
19545
|
baker ads meta campaigns --account-id act_123
|
|
@@ -19395,6 +19572,8 @@ Full guide: __tooling__/docs/tools/baker/ads-meta.md`
|
|
|
19395
19572
|
account: accountCommand2,
|
|
19396
19573
|
businesses: businessesCommand,
|
|
19397
19574
|
pages: pagesCommand,
|
|
19575
|
+
"lead-forms": leadFormsCommand2,
|
|
19576
|
+
leads: leadsCommand2,
|
|
19398
19577
|
campaigns: campaignsCommand3,
|
|
19399
19578
|
adsets: adsetsCommand,
|
|
19400
19579
|
ads: adsListCommand,
|
|
@@ -19410,10 +19589,10 @@ Full guide: __tooling__/docs/tools/baker/ads-meta.md`
|
|
|
19410
19589
|
});
|
|
19411
19590
|
|
|
19412
19591
|
// src/commands/ads/x/index.ts
|
|
19413
|
-
import { defineCommand as
|
|
19592
|
+
import { defineCommand as defineCommand86 } from "citty";
|
|
19414
19593
|
|
|
19415
19594
|
// src/commands/ads/x/accounts.ts
|
|
19416
|
-
import { defineCommand as
|
|
19595
|
+
import { defineCommand as defineCommand70 } from "citty";
|
|
19417
19596
|
registerSchema({
|
|
19418
19597
|
command: "ads.x.accounts",
|
|
19419
19598
|
description: "List the X Ads accounts this company connected \u2014 there can be several, and every one of them is yours to work in. Returns accounts with id (base36), name, approval_status, timezone, currency. Run this first to find account IDs for other commands.",
|
|
@@ -19450,7 +19629,7 @@ function handleAccountsError2(err) {
|
|
|
19450
19629
|
writeAdsJson({ ok: false, error: { code: "NETWORK_ERROR", message: "Unexpected error" } });
|
|
19451
19630
|
process.exit(1);
|
|
19452
19631
|
}
|
|
19453
|
-
var accountsCommand4 =
|
|
19632
|
+
var accountsCommand4 = defineCommand70({
|
|
19454
19633
|
meta: {
|
|
19455
19634
|
name: "accounts",
|
|
19456
19635
|
description: `List accessible X Ads accounts. Returns account IDs needed for all other commands.
|
|
@@ -19490,7 +19669,7 @@ Examples:
|
|
|
19490
19669
|
});
|
|
19491
19670
|
|
|
19492
19671
|
// src/commands/ads/x/active-entities.ts
|
|
19493
|
-
import { defineCommand as
|
|
19672
|
+
import { defineCommand as defineCommand71 } from "citty";
|
|
19494
19673
|
|
|
19495
19674
|
// src/commands/ads/x/error-parser.ts
|
|
19496
19675
|
function mapXErrorCode(message) {
|
|
@@ -19641,7 +19820,7 @@ function parseCsv(v) {
|
|
|
19641
19820
|
const parts = v.split(",").map((s) => s.trim()).filter(Boolean);
|
|
19642
19821
|
return parts.length > 0 ? parts : void 0;
|
|
19643
19822
|
}
|
|
19644
|
-
var activeEntitiesCommand =
|
|
19823
|
+
var activeEntitiesCommand = defineCommand71({
|
|
19645
19824
|
meta: {
|
|
19646
19825
|
name: "active-entities",
|
|
19647
19826
|
description: `List entities with metric activity in a time range.
|
|
@@ -19699,7 +19878,7 @@ Examples:
|
|
|
19699
19878
|
});
|
|
19700
19879
|
|
|
19701
19880
|
// src/commands/ads/x/audiences.ts
|
|
19702
|
-
import { defineCommand as
|
|
19881
|
+
import { defineCommand as defineCommand72 } from "citty";
|
|
19703
19882
|
registerSchema({
|
|
19704
19883
|
command: "ads.x.audiences",
|
|
19705
19884
|
description: "List custom audiences for an X Ads account. Returns id, name, audience_size, audience_type, targetable status. Audiences need 100+ active users in the past 90 days to be targetable.",
|
|
@@ -19709,7 +19888,7 @@ registerSchema({
|
|
|
19709
19888
|
output: { type: "string", description: "Format: json|csv|md", required: false, default: "json" }
|
|
19710
19889
|
}
|
|
19711
19890
|
});
|
|
19712
|
-
var audiencesCommand4 =
|
|
19891
|
+
var audiencesCommand4 = defineCommand72({
|
|
19713
19892
|
meta: {
|
|
19714
19893
|
name: "audiences",
|
|
19715
19894
|
description: `List X Ads custom audiences.
|
|
@@ -19758,7 +19937,7 @@ Examples:
|
|
|
19758
19937
|
});
|
|
19759
19938
|
|
|
19760
19939
|
// src/commands/ads/x/campaigns.ts
|
|
19761
|
-
import { defineCommand as
|
|
19940
|
+
import { defineCommand as defineCommand73 } from "citty";
|
|
19762
19941
|
|
|
19763
19942
|
// src/commands/ads/x/run-list.ts
|
|
19764
19943
|
function buildCleanParams(opts) {
|
|
@@ -19822,7 +20001,7 @@ registerSchema({
|
|
|
19822
20001
|
output: { type: "string", description: "Format: json|csv|md", required: false, default: "json" }
|
|
19823
20002
|
}
|
|
19824
20003
|
});
|
|
19825
|
-
var campaignsCommand4 =
|
|
20004
|
+
var campaignsCommand4 = defineCommand73({
|
|
19826
20005
|
meta: {
|
|
19827
20006
|
name: "campaigns",
|
|
19828
20007
|
description: `List X Ads campaigns. Returns budget, schedule, funding instrument, status.
|
|
@@ -19864,7 +20043,7 @@ Examples:
|
|
|
19864
20043
|
});
|
|
19865
20044
|
|
|
19866
20045
|
// src/commands/ads/x/cards.ts
|
|
19867
|
-
import { defineCommand as
|
|
20046
|
+
import { defineCommand as defineCommand74 } from "citty";
|
|
19868
20047
|
registerSchema({
|
|
19869
20048
|
command: "ads.x.cards",
|
|
19870
20049
|
description: "List website cards, video cards, and carousels for an X Ads account.",
|
|
@@ -19874,7 +20053,7 @@ registerSchema({
|
|
|
19874
20053
|
output: { type: "string", description: "Format: json|csv|md", required: false, default: "json" }
|
|
19875
20054
|
}
|
|
19876
20055
|
});
|
|
19877
|
-
var cardsCommand =
|
|
20056
|
+
var cardsCommand = defineCommand74({
|
|
19878
20057
|
meta: {
|
|
19879
20058
|
name: "cards",
|
|
19880
20059
|
description: `List X Ads cards (rich creatives).
|
|
@@ -19923,7 +20102,7 @@ Examples:
|
|
|
19923
20102
|
});
|
|
19924
20103
|
|
|
19925
20104
|
// src/commands/ads/x/funding.ts
|
|
19926
|
-
import { defineCommand as
|
|
20105
|
+
import { defineCommand as defineCommand75 } from "citty";
|
|
19927
20106
|
registerSchema({
|
|
19928
20107
|
command: "ads.x.funding",
|
|
19929
20108
|
description: "List funding instruments for an X Ads account. Returns id, type, currency, credit_limit_local_micro, funded_amount_local_micro, status. Falls back to BAKER_X_ADS_ACCOUNT_ID env var.",
|
|
@@ -19933,7 +20112,7 @@ registerSchema({
|
|
|
19933
20112
|
output: { type: "string", description: "Format: json|csv|md", required: false, default: "json" }
|
|
19934
20113
|
}
|
|
19935
20114
|
});
|
|
19936
|
-
var fundingCommand =
|
|
20115
|
+
var fundingCommand = defineCommand75({
|
|
19937
20116
|
meta: {
|
|
19938
20117
|
name: "funding",
|
|
19939
20118
|
description: `List funding instruments for an X Ads account.
|
|
@@ -19982,7 +20161,7 @@ Examples:
|
|
|
19982
20161
|
});
|
|
19983
20162
|
|
|
19984
20163
|
// src/commands/ads/x/line-items.ts
|
|
19985
|
-
import { defineCommand as
|
|
20164
|
+
import { defineCommand as defineCommand76 } from "citty";
|
|
19986
20165
|
registerSchema({
|
|
19987
20166
|
command: "ads.x.lineItems",
|
|
19988
20167
|
description: "List line items (ad groups) for an X Ads account. Returns bid, product_type, objective, placements, schedule. Filter by campaign-ids or line-item-ids (CSV).",
|
|
@@ -19994,7 +20173,7 @@ registerSchema({
|
|
|
19994
20173
|
"no-cache": { type: "boolean", description: "Skip cache", required: false }
|
|
19995
20174
|
}
|
|
19996
20175
|
});
|
|
19997
|
-
var lineItemsCommand =
|
|
20176
|
+
var lineItemsCommand = defineCommand76({
|
|
19998
20177
|
meta: {
|
|
19999
20178
|
name: "line-items",
|
|
20000
20179
|
description: `List X Ads line items (ad groups).
|
|
@@ -20035,7 +20214,7 @@ Examples:
|
|
|
20035
20214
|
});
|
|
20036
20215
|
|
|
20037
20216
|
// src/commands/ads/x/media.ts
|
|
20038
|
-
import { defineCommand as
|
|
20217
|
+
import { defineCommand as defineCommand77 } from "citty";
|
|
20039
20218
|
registerSchema({
|
|
20040
20219
|
command: "ads.x.media",
|
|
20041
20220
|
description: "List media assets in the X Ads media library (images, GIFs, videos). Filter by media-type (IMAGE, GIF, VIDEO).",
|
|
@@ -20046,7 +20225,7 @@ registerSchema({
|
|
|
20046
20225
|
output: { type: "string", description: "Format: json|csv|md", required: false, default: "json" }
|
|
20047
20226
|
}
|
|
20048
20227
|
});
|
|
20049
|
-
var mediaCommand =
|
|
20228
|
+
var mediaCommand = defineCommand77({
|
|
20050
20229
|
meta: {
|
|
20051
20230
|
name: "media",
|
|
20052
20231
|
description: `List media assets in the X Ads media library.
|
|
@@ -20098,7 +20277,7 @@ Examples:
|
|
|
20098
20277
|
});
|
|
20099
20278
|
|
|
20100
20279
|
// src/commands/ads/x/promoted-tweets.ts
|
|
20101
|
-
import { defineCommand as
|
|
20280
|
+
import { defineCommand as defineCommand78 } from "citty";
|
|
20102
20281
|
registerSchema({
|
|
20103
20282
|
command: "ads.x.promotedTweets",
|
|
20104
20283
|
description: "List promoted tweets for an X Ads account. Returns id, line_item_id, tweet_id, approval_status. Filter by line-item-ids (CSV).",
|
|
@@ -20109,7 +20288,7 @@ registerSchema({
|
|
|
20109
20288
|
"no-cache": { type: "boolean", description: "Skip cache", required: false }
|
|
20110
20289
|
}
|
|
20111
20290
|
});
|
|
20112
|
-
var promotedTweetsCommand =
|
|
20291
|
+
var promotedTweetsCommand = defineCommand78({
|
|
20113
20292
|
meta: {
|
|
20114
20293
|
name: "promoted-tweets",
|
|
20115
20294
|
description: `List X Ads promoted tweets.
|
|
@@ -20163,11 +20342,11 @@ Examples:
|
|
|
20163
20342
|
});
|
|
20164
20343
|
|
|
20165
20344
|
// src/commands/ads/x/stats/index.ts
|
|
20166
|
-
import { defineCommand as
|
|
20345
|
+
import { defineCommand as defineCommand83 } from "citty";
|
|
20167
20346
|
|
|
20168
20347
|
// src/commands/ads/x/stats/job.ts
|
|
20169
20348
|
import { gunzipSync } from "zlib";
|
|
20170
|
-
import { defineCommand as
|
|
20349
|
+
import { defineCommand as defineCommand79 } from "citty";
|
|
20171
20350
|
var POLL_INTERVAL_MS2 = 1e4;
|
|
20172
20351
|
var DEADLINE_MS = 12 * 60 * 1e3;
|
|
20173
20352
|
var RESULT_CACHE_TTL_MS = 6 * 60 * 60 * 1e3;
|
|
@@ -20237,7 +20416,7 @@ async function pollUntilDone(accountId, jobId) {
|
|
|
20237
20416
|
function buildCacheKey(body) {
|
|
20238
20417
|
return `stats-job:${JSON.stringify(body)}`;
|
|
20239
20418
|
}
|
|
20240
|
-
var statsJobCommand =
|
|
20419
|
+
var statsJobCommand = defineCommand79({
|
|
20241
20420
|
meta: {
|
|
20242
20421
|
name: "job",
|
|
20243
20422
|
description: `Async X Ads stats job, sync from the CLI's perspective. Creates \u2192 polls \u2192 downloads \u2192 returns.
|
|
@@ -20342,7 +20521,7 @@ For fine-grained control (don't wait, poll yourself), use:
|
|
|
20342
20521
|
});
|
|
20343
20522
|
|
|
20344
20523
|
// src/commands/ads/x/stats/job-create.ts
|
|
20345
|
-
import { defineCommand as
|
|
20524
|
+
import { defineCommand as defineCommand80 } from "citty";
|
|
20346
20525
|
registerSchema({
|
|
20347
20526
|
command: "ads.x.statsJobCreate",
|
|
20348
20527
|
description: "Create an asynchronous X Ads stats job (range up to 90 days non-segmented, 45 days segmented). Returns a job id; poll with `stats job-status`. Times must be ISO 8601 hour-aligned.",
|
|
@@ -20365,7 +20544,7 @@ function parseCsv3(v) {
|
|
|
20365
20544
|
const parts = v.split(",").map((s) => s.trim()).filter(Boolean);
|
|
20366
20545
|
return parts.length > 0 ? parts : void 0;
|
|
20367
20546
|
}
|
|
20368
|
-
var statsJobCreateCommand =
|
|
20547
|
+
var statsJobCreateCommand = defineCommand80({
|
|
20369
20548
|
meta: {
|
|
20370
20549
|
name: "job-create",
|
|
20371
20550
|
description: `Create an async X Ads stats job (up to 90 days, supports segmentation).
|
|
@@ -20428,7 +20607,7 @@ Examples:
|
|
|
20428
20607
|
});
|
|
20429
20608
|
|
|
20430
20609
|
// src/commands/ads/x/stats/job-status.ts
|
|
20431
|
-
import { defineCommand as
|
|
20610
|
+
import { defineCommand as defineCommand81 } from "citty";
|
|
20432
20611
|
registerSchema({
|
|
20433
20612
|
command: "ads.x.statsJobStatus",
|
|
20434
20613
|
description: "Check the status of one or more X Ads stats jobs. Returns status (PROCESSING|SUCCESS|FAILED) and a downloadable url when SUCCESS. Pass --job-id or --job-ids (CSV).",
|
|
@@ -20438,7 +20617,7 @@ registerSchema({
|
|
|
20438
20617
|
"job-ids": { type: "string", description: "CSV of job IDs", required: false }
|
|
20439
20618
|
}
|
|
20440
20619
|
});
|
|
20441
|
-
var statsJobStatusCommand =
|
|
20620
|
+
var statsJobStatusCommand = defineCommand81({
|
|
20442
20621
|
meta: {
|
|
20443
20622
|
name: "job-status",
|
|
20444
20623
|
description: `Poll the status of an async X Ads stats job.
|
|
@@ -20479,7 +20658,7 @@ Examples:
|
|
|
20479
20658
|
});
|
|
20480
20659
|
|
|
20481
20660
|
// src/commands/ads/x/stats/sync.ts
|
|
20482
|
-
import { defineCommand as
|
|
20661
|
+
import { defineCommand as defineCommand82 } from "citty";
|
|
20483
20662
|
|
|
20484
20663
|
// src/commands/ads/x/presets.ts
|
|
20485
20664
|
var X_STATS_PRESETS = [
|
|
@@ -20638,7 +20817,7 @@ async function runSync(args, q) {
|
|
|
20638
20817
|
process.exit(1);
|
|
20639
20818
|
}
|
|
20640
20819
|
}
|
|
20641
|
-
var statsSyncCommand =
|
|
20820
|
+
var statsSyncCommand = defineCommand82({
|
|
20642
20821
|
meta: {
|
|
20643
20822
|
name: "sync",
|
|
20644
20823
|
description: `Synchronous X Ads analytics (max 7-day window).
|
|
@@ -20681,7 +20860,7 @@ Examples:
|
|
|
20681
20860
|
});
|
|
20682
20861
|
|
|
20683
20862
|
// src/commands/ads/x/stats/index.ts
|
|
20684
|
-
var statsCommand =
|
|
20863
|
+
var statsCommand = defineCommand83({
|
|
20685
20864
|
meta: {
|
|
20686
20865
|
name: "stats",
|
|
20687
20866
|
description: `X Ads analytics. Sync (\u22647 days, no segmentation) or async jobs (\u226490 days, segmentable).
|
|
@@ -20709,7 +20888,7 @@ Examples:
|
|
|
20709
20888
|
});
|
|
20710
20889
|
|
|
20711
20890
|
// src/commands/ads/x/targeting-constants.ts
|
|
20712
|
-
import { defineCommand as
|
|
20891
|
+
import { defineCommand as defineCommand84 } from "citty";
|
|
20713
20892
|
var ALLOWED_CONSTANTS = [
|
|
20714
20893
|
"locations",
|
|
20715
20894
|
"interests",
|
|
@@ -20737,7 +20916,7 @@ registerSchema({
|
|
|
20737
20916
|
"no-cache": { type: "boolean", description: "Skip cache", required: false }
|
|
20738
20917
|
}
|
|
20739
20918
|
});
|
|
20740
|
-
var targetingConstantsCommand =
|
|
20919
|
+
var targetingConstantsCommand = defineCommand84({
|
|
20741
20920
|
meta: {
|
|
20742
20921
|
name: "targeting-constants",
|
|
20743
20922
|
description: `Lookup X Ads targeting constants.
|
|
@@ -20787,7 +20966,7 @@ Examples:
|
|
|
20787
20966
|
});
|
|
20788
20967
|
|
|
20789
20968
|
// src/commands/ads/x/targeting-criteria.ts
|
|
20790
|
-
import { defineCommand as
|
|
20969
|
+
import { defineCommand as defineCommand85 } from "citty";
|
|
20791
20970
|
registerSchema({
|
|
20792
20971
|
command: "ads.x.targetingCriteria",
|
|
20793
20972
|
description: "List targeting criteria attached to line items in an X Ads account. Returns targeting_type, targeting_value, name, operator_type per criterion. Filter by line-item-ids.",
|
|
@@ -20797,7 +20976,7 @@ registerSchema({
|
|
|
20797
20976
|
"no-cache": { type: "boolean", description: "Skip cache", required: false }
|
|
20798
20977
|
}
|
|
20799
20978
|
});
|
|
20800
|
-
var targetingCriteriaCommand =
|
|
20979
|
+
var targetingCriteriaCommand = defineCommand85({
|
|
20801
20980
|
meta: {
|
|
20802
20981
|
name: "targeting-criteria",
|
|
20803
20982
|
description: `List targeting criteria attached to line items.
|
|
@@ -20848,7 +21027,7 @@ Examples:
|
|
|
20848
21027
|
});
|
|
20849
21028
|
|
|
20850
21029
|
// src/commands/ads/x/index.ts
|
|
20851
|
-
var xCommand =
|
|
21030
|
+
var xCommand = defineCommand86({
|
|
20852
21031
|
meta: {
|
|
20853
21032
|
name: "x",
|
|
20854
21033
|
description: `X (Twitter) Ads commands. Read campaigns, line items, promoted tweets, creatives, audiences, and analytics.
|
|
@@ -20887,7 +21066,7 @@ Full guide: __tooling__/docs/tools/baker/ads-x.md`
|
|
|
20887
21066
|
});
|
|
20888
21067
|
|
|
20889
21068
|
// src/commands/ads/index.ts
|
|
20890
|
-
var adsCommand2 =
|
|
21069
|
+
var adsCommand2 = defineCommand87({
|
|
20891
21070
|
meta: {
|
|
20892
21071
|
name: "ads",
|
|
20893
21072
|
description: `Ad platform commands. Each platform exposes its own native command surface \u2014 no forced parity.
|
|
@@ -20918,10 +21097,10 @@ Full guides: __tooling__/docs/tools/baker/ads-<platform>.md (google|meta|linkedi
|
|
|
20918
21097
|
});
|
|
20919
21098
|
|
|
20920
21099
|
// src/commands/avatars/index.ts
|
|
20921
|
-
import { defineCommand as
|
|
21100
|
+
import { defineCommand as defineCommand93 } from "citty";
|
|
20922
21101
|
|
|
20923
21102
|
// src/commands/avatars/create.ts
|
|
20924
|
-
import { defineCommand as
|
|
21103
|
+
import { defineCommand as defineCommand88 } from "citty";
|
|
20925
21104
|
|
|
20926
21105
|
// src/commands/avatars/casting.ts
|
|
20927
21106
|
var VERBATIM_RULE = "Copy `subjectDescription` into the prompt VERBATIM, word for word. Re-phrasing it per generation is the other reason a face drifts across a set \u2014 treat it as an identifier that happens to read as prose.";
|
|
@@ -21188,7 +21367,7 @@ registerSchema({
|
|
|
21188
21367
|
"voice-description": { type: "string", description: "How the voice should sound", required: false }
|
|
21189
21368
|
}
|
|
21190
21369
|
});
|
|
21191
|
-
var createCommand2 =
|
|
21370
|
+
var createCommand2 = defineCommand88({
|
|
21192
21371
|
meta: {
|
|
21193
21372
|
name: "create",
|
|
21194
21373
|
description: 'Cast a new avatar (reusable AI presenter). Example: baker avatars create --name "Marta" --subject "woman in her early 40s, shoulder-length dark hair, light olive skin, warm open face" --persona "friendly product expert". Returns while the identity sheet is still building.'
|
|
@@ -21269,7 +21448,7 @@ var createCommand2 = defineCommand87({
|
|
|
21269
21448
|
});
|
|
21270
21449
|
|
|
21271
21450
|
// src/commands/avatars/delete.ts
|
|
21272
|
-
import { defineCommand as
|
|
21451
|
+
import { defineCommand as defineCommand89 } from "citty";
|
|
21273
21452
|
registerSchema({
|
|
21274
21453
|
command: "avatars.delete",
|
|
21275
21454
|
description: "Remove an avatar. Prefer --archive: it retires the avatar so it stops showing in the roster and must not be cast again, while past work and @handle mentions still resolve. Without --archive the avatar is gone for good and the mention resolves nowhere. Confirm with the user first \u2014 this is their cast, and it is not yours to retire. --dry-run previews.",
|
|
@@ -21284,7 +21463,7 @@ registerSchema({
|
|
|
21284
21463
|
"dry-run": { type: "boolean", description: "Preview without removing anything", required: false, default: false }
|
|
21285
21464
|
}
|
|
21286
21465
|
});
|
|
21287
|
-
var deleteCommand =
|
|
21466
|
+
var deleteCommand = defineCommand89({
|
|
21288
21467
|
meta: {
|
|
21289
21468
|
name: "delete",
|
|
21290
21469
|
description: "Remove an avatar. Prefer --archive (retire, past work still resolves) over a hard delete. Example: baker avatars delete marta --archive --dry-run"
|
|
@@ -21318,7 +21497,7 @@ var deleteCommand = defineCommand88({
|
|
|
21318
21497
|
});
|
|
21319
21498
|
|
|
21320
21499
|
// src/commands/avatars/get.ts
|
|
21321
|
-
import { defineCommand as
|
|
21500
|
+
import { defineCommand as defineCommand90 } from "citty";
|
|
21322
21501
|
registerSchema({
|
|
21323
21502
|
command: "avatars.get",
|
|
21324
21503
|
description: "Read one avatar by handle \u2014 the command you run before casting it. Returns its status (only `ready` can be cast), the identity sheet URL every render must be grounded on via --reference, and the subject description that goes into the prompt VERBATIM. Add --full for the whole written profile (persona, speech, motion, wardrobe, setting, guardrails, voice, source photos).",
|
|
@@ -21332,7 +21511,7 @@ registerSchema({
|
|
|
21332
21511
|
}
|
|
21333
21512
|
}
|
|
21334
21513
|
});
|
|
21335
|
-
var getCommand2 =
|
|
21514
|
+
var getCommand2 = defineCommand90({
|
|
21336
21515
|
meta: {
|
|
21337
21516
|
name: "get",
|
|
21338
21517
|
description: "Read one avatar by handle: status, identity sheet URL for --reference, and the subject description to reuse verbatim. Example: baker avatars get marta --full"
|
|
@@ -21373,7 +21552,7 @@ var getCommand2 = defineCommand89({
|
|
|
21373
21552
|
});
|
|
21374
21553
|
|
|
21375
21554
|
// src/commands/avatars/list.ts
|
|
21376
|
-
import { defineCommand as
|
|
21555
|
+
import { defineCommand as defineCommand91 } from "citty";
|
|
21377
21556
|
var STATUSES = ["generating", "ready", "error", "archived"];
|
|
21378
21557
|
registerSchema({
|
|
21379
21558
|
command: "avatars.list",
|
|
@@ -21388,7 +21567,7 @@ registerSchema({
|
|
|
21388
21567
|
limit: { type: "number", description: "Max avatars to return (1-100)", required: false }
|
|
21389
21568
|
}
|
|
21390
21569
|
});
|
|
21391
|
-
var listCommand10 =
|
|
21570
|
+
var listCommand10 = defineCommand91({
|
|
21392
21571
|
meta: {
|
|
21393
21572
|
name: "list",
|
|
21394
21573
|
description: "List the company's avatars (reusable AI presenters). Only `ready` ones can be cast. Example: baker avatars list --status ready --output md"
|
|
@@ -21422,7 +21601,7 @@ var listCommand10 = defineCommand90({
|
|
|
21422
21601
|
});
|
|
21423
21602
|
|
|
21424
21603
|
// src/commands/avatars/update.ts
|
|
21425
|
-
import { defineCommand as
|
|
21604
|
+
import { defineCommand as defineCommand92 } from "citty";
|
|
21426
21605
|
function readUpdateArgs(args) {
|
|
21427
21606
|
const handle = (args.handle || args["avatar-handle"])?.trim();
|
|
21428
21607
|
if (!handle) {
|
|
@@ -21483,7 +21662,7 @@ registerSchema({
|
|
|
21483
21662
|
}
|
|
21484
21663
|
}
|
|
21485
21664
|
});
|
|
21486
|
-
var updateCommand2 =
|
|
21665
|
+
var updateCommand2 = defineCommand92({
|
|
21487
21666
|
meta: {
|
|
21488
21667
|
name: "update",
|
|
21489
21668
|
description: 'Edit an avatar; profile flags merge over what is stored. Example: baker avatars update marta --subject "woman in her early 50s, silver bob" --regenerate-sheet'
|
|
@@ -21546,7 +21725,7 @@ var updateCommand2 = defineCommand91({
|
|
|
21546
21725
|
});
|
|
21547
21726
|
|
|
21548
21727
|
// src/commands/avatars/index.ts
|
|
21549
|
-
var avatarsCommand =
|
|
21728
|
+
var avatarsCommand = defineCommand93({
|
|
21550
21729
|
meta: {
|
|
21551
21730
|
name: "avatars",
|
|
21552
21731
|
description: `Reusable AI presenters this company can cast into images and video. An avatar holds one settled identity, so the same face can carry a whole campaign. Subcommands: list, get, create, update, delete.
|
|
@@ -21576,12 +21755,12 @@ Full guide: __tooling__/docs/tools/baker/avatars.md`
|
|
|
21576
21755
|
});
|
|
21577
21756
|
|
|
21578
21757
|
// src/commands/brand/index.ts
|
|
21579
|
-
import { defineCommand as
|
|
21758
|
+
import { defineCommand as defineCommand95 } from "citty";
|
|
21580
21759
|
|
|
21581
21760
|
// src/commands/brand/fonts.ts
|
|
21582
21761
|
import { mkdir, readdir, readFile as readFile2, writeFile } from "fs/promises";
|
|
21583
21762
|
import path2 from "path";
|
|
21584
|
-
import { defineCommand as
|
|
21763
|
+
import { defineCommand as defineCommand94 } from "citty";
|
|
21585
21764
|
|
|
21586
21765
|
// src/engine/brand/fonts.ts
|
|
21587
21766
|
import { posix } from "path";
|
|
@@ -22425,7 +22604,7 @@ async function unresolvedAction(css, unresolved) {
|
|
|
22425
22604
|
}
|
|
22426
22605
|
return `Run \`baker brand fonts fetch "${unresolved[0]}"\` to self-host it, which writes the @font-face for you. For a face no catalogue carries, add an @font-face pointing at a file in ${FONTS_DIR}.`;
|
|
22427
22606
|
}
|
|
22428
|
-
var fontsCheckCommand =
|
|
22607
|
+
var fontsCheckCommand = defineCommand94({
|
|
22429
22608
|
meta: {
|
|
22430
22609
|
name: "check",
|
|
22431
22610
|
description: "Verify the brand's fonts really exist. First: every --font-* family in src/styles/global.css must be provided by a local @font-face, or it renders as a fallback on every page \u2014 a Google @import does not provide one here, the build drops it before the page loads. Then, for families still requested from Google, ask Google what it actually serves \u2014 a weight nobody serves is silently synthesized."
|
|
@@ -22477,7 +22656,7 @@ var fontsCheckCommand = defineCommand93({
|
|
|
22477
22656
|
});
|
|
22478
22657
|
}
|
|
22479
22658
|
});
|
|
22480
|
-
var fontsFetchCommand =
|
|
22659
|
+
var fontsFetchCommand = defineCommand94({
|
|
22481
22660
|
meta: {
|
|
22482
22661
|
name: "fetch",
|
|
22483
22662
|
description: "Download a font from Google Fonts or Fontsource into src/brand/fonts/ and write its @font-face into src/styles/global.css above @theme, so the family actually loads. Use when a brand font should be self-hosted rather than requested from a third party on every page load."
|
|
@@ -22578,7 +22757,7 @@ async function astroSources() {
|
|
|
22578
22757
|
}
|
|
22579
22758
|
return out;
|
|
22580
22759
|
}
|
|
22581
|
-
var fontsAdoptCommand =
|
|
22760
|
+
var fontsAdoptCommand = defineCommand94({
|
|
22582
22761
|
meta: {
|
|
22583
22762
|
name: "adopt",
|
|
22584
22763
|
description: "Move brand faces a page already self-hosts into src/styles/global.css, so every page loads them instead of just that one. Use when `check` reports a family as not loaded but the font files are already in src/brand/fonts/ \u2014 downloading it again would hand that page a different build of the same face."
|
|
@@ -22658,7 +22837,7 @@ var fontsAdoptCommand = defineCommand93({
|
|
|
22658
22837
|
});
|
|
22659
22838
|
}
|
|
22660
22839
|
});
|
|
22661
|
-
var fontsCommand =
|
|
22840
|
+
var fontsCommand = defineCommand94({
|
|
22662
22841
|
meta: {
|
|
22663
22842
|
name: "fonts",
|
|
22664
22843
|
description: `Verify and self-host the brand's typefaces.
|
|
@@ -22678,7 +22857,7 @@ Subcommands:
|
|
|
22678
22857
|
});
|
|
22679
22858
|
|
|
22680
22859
|
// src/commands/brand/index.ts
|
|
22681
|
-
var brandCommand =
|
|
22860
|
+
var brandCommand = defineCommand95({
|
|
22682
22861
|
meta: {
|
|
22683
22862
|
name: "brand",
|
|
22684
22863
|
description: `Brand asset verification for src/brand/.
|
|
@@ -22694,11 +22873,11 @@ Subcommands:
|
|
|
22694
22873
|
});
|
|
22695
22874
|
|
|
22696
22875
|
// src/commands/canvas/index.ts
|
|
22697
|
-
import { defineCommand as
|
|
22876
|
+
import { defineCommand as defineCommand106 } from "citty";
|
|
22698
22877
|
|
|
22699
22878
|
// src/commands/canvas/catalog.ts
|
|
22700
|
-
import { defineCommand as
|
|
22701
|
-
var catalogCommand =
|
|
22879
|
+
import { defineCommand as defineCommand96 } from "citty";
|
|
22880
|
+
var catalogCommand = defineCommand96({
|
|
22702
22881
|
meta: {
|
|
22703
22882
|
name: "catalog",
|
|
22704
22883
|
description: "Print the agent-facing node catalog (JSON Schema). Includes every registered node grouped by category."
|
|
@@ -22713,7 +22892,7 @@ var catalogCommand = defineCommand95({
|
|
|
22713
22892
|
// src/commands/canvas/critique.ts
|
|
22714
22893
|
import { readFile as readFile3 } from "fs/promises";
|
|
22715
22894
|
import path3 from "path";
|
|
22716
|
-
import { defineCommand as
|
|
22895
|
+
import { defineCommand as defineCommand97 } from "citty";
|
|
22717
22896
|
|
|
22718
22897
|
// src/engine/scaffold/lib/critique.ts
|
|
22719
22898
|
var VIBE_CUE = /\b(light|lighting|golden|moody|warm|cool|tone|grade|contrast|shadow|glow|rim|backlit|neon|soft)\b/i;
|
|
@@ -22833,7 +23012,7 @@ function critiqueCanvas(canvas) {
|
|
|
22833
23012
|
}
|
|
22834
23013
|
|
|
22835
23014
|
// src/commands/canvas/critique.ts
|
|
22836
|
-
var critiqueCommand =
|
|
23015
|
+
var critiqueCommand = defineCommand97({
|
|
22837
23016
|
meta: {
|
|
22838
23017
|
name: "critique",
|
|
22839
23018
|
description: "Pre-spend creative critic (ADVISORY \u2014 never blocks). Scores a scaffolded creative BEFORE the billed render, so weak spots get fixed for free. A VIDEO creative is scored on hook strength, sound-off first-frame legibility, retention risk, and mechanism clarity; a STATIC ad on baked-text legibility risk, identity grounding, brand-type fidelity, and mechanism clarity. Ground a video hook against `baker winning-ads hooks` for a proven pattern."
|
|
@@ -22875,9 +23054,9 @@ import { execFile } from "child_process";
|
|
|
22875
23054
|
import { readdir as readdir2, readFile as readFile4, stat } from "fs/promises";
|
|
22876
23055
|
import path4 from "path";
|
|
22877
23056
|
import { promisify } from "util";
|
|
22878
|
-
import { defineCommand as
|
|
23057
|
+
import { defineCommand as defineCommand98 } from "citty";
|
|
22879
23058
|
var execFileAsync = promisify(execFile);
|
|
22880
|
-
var inspectCommand =
|
|
23059
|
+
var inspectCommand = defineCommand98({
|
|
22881
23060
|
meta: {
|
|
22882
23061
|
name: "inspect",
|
|
22883
23062
|
description: "Dump a one-page summary of a canvas run: per-node duration + cache status, list of output files in the run dir, and optionally three thumbnail frames per video output. Pass either a run_id (resolved against --outputs-dir) or an absolute run directory."
|
|
@@ -22985,12 +23164,12 @@ async function probeDuration(filePath) {
|
|
|
22985
23164
|
|
|
22986
23165
|
// src/commands/canvas/rerun.ts
|
|
22987
23166
|
import path16 from "path";
|
|
22988
|
-
import { defineCommand as
|
|
23167
|
+
import { defineCommand as defineCommand100 } from "citty";
|
|
22989
23168
|
|
|
22990
23169
|
// src/commands/canvas/run.ts
|
|
22991
23170
|
import { readFile as readFile11 } from "fs/promises";
|
|
22992
23171
|
import path15 from "path";
|
|
22993
|
-
import { defineCommand as
|
|
23172
|
+
import { defineCommand as defineCommand99 } from "citty";
|
|
22994
23173
|
|
|
22995
23174
|
// src/commands/canvas/normalize-paths.ts
|
|
22996
23175
|
import { existsSync as existsSync3, realpathSync } from "fs";
|
|
@@ -27241,7 +27420,7 @@ async function restoreRunSnapshot(manifest, targetDir, opts = {}) {
|
|
|
27241
27420
|
}
|
|
27242
27421
|
|
|
27243
27422
|
// src/commands/canvas/run.ts
|
|
27244
|
-
var runCommand =
|
|
27423
|
+
var runCommand = defineCommand99({
|
|
27245
27424
|
meta: { name: "run", description: "Validate and execute a canvas JSON file." },
|
|
27246
27425
|
args: {
|
|
27247
27426
|
file: { type: "positional", required: true, description: "Path to canvas JSON" },
|
|
@@ -27621,7 +27800,7 @@ async function postInitialRunRecord(client, payload) {
|
|
|
27621
27800
|
|
|
27622
27801
|
// src/commands/canvas/rerun.ts
|
|
27623
27802
|
var SLUG_PATTERN = /^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/;
|
|
27624
|
-
var rerunCommand =
|
|
27803
|
+
var rerunCommand = defineCommand100({
|
|
27625
27804
|
meta: {
|
|
27626
27805
|
name: "rerun",
|
|
27627
27806
|
description: "Re-run a creative's latest recorded canvas. Restores its definition files from run history first, so it works in a fresh workspace that never had the source chat's files \u2014 an interrupted run resumes (in-flight jobs re-attach), a completed one re-renders from the cache."
|
|
@@ -27718,7 +27897,7 @@ async function fetchManifest(url) {
|
|
|
27718
27897
|
// src/commands/canvas/scaffold-static-ad.ts
|
|
27719
27898
|
import { access, mkdir as mkdir6, readFile as readFile13, writeFile as writeFile8 } from "fs/promises";
|
|
27720
27899
|
import path20 from "path";
|
|
27721
|
-
import { defineCommand as
|
|
27900
|
+
import { defineCommand as defineCommand102 } from "citty";
|
|
27722
27901
|
|
|
27723
27902
|
// src/engine/scaffold/staticAd.ts
|
|
27724
27903
|
import { z as z26 } from "zod";
|
|
@@ -28068,7 +28247,7 @@ function isValidScaffoldSlug(slug) {
|
|
|
28068
28247
|
// src/commands/canvas/sync-definition.ts
|
|
28069
28248
|
import { readdir as readdir6, readFile as readFile12, stat as stat3 } from "fs/promises";
|
|
28070
28249
|
import path19 from "path";
|
|
28071
|
-
import { defineCommand as
|
|
28250
|
+
import { defineCommand as defineCommand101 } from "citty";
|
|
28072
28251
|
|
|
28073
28252
|
// src/commands/canvas/definition-graph.ts
|
|
28074
28253
|
var MAX_NODES = 300;
|
|
@@ -28181,7 +28360,7 @@ async function resolveCanvasPath(inputPath) {
|
|
|
28181
28360
|
const chosen = (slug ? canvases.find((name) => name === `${slug}.canvas.json`) : void 0) ?? canvases[0];
|
|
28182
28361
|
return chosen ? path19.join(dir, chosen) : null;
|
|
28183
28362
|
}
|
|
28184
|
-
var syncDefinitionCommand =
|
|
28363
|
+
var syncDefinitionCommand = defineCommand101({
|
|
28185
28364
|
meta: {
|
|
28186
28365
|
name: "sync-definition",
|
|
28187
28366
|
description: "Push a creative's current node-graph + input thumbnails to the dashboard without rendering. Runs automatically when you edit a creative's canvas.json or prompt.json."
|
|
@@ -28411,7 +28590,7 @@ async function runVisionPasses(canvas) {
|
|
|
28411
28590
|
return fail3("read_outputs", e instanceof Error ? e.message : String(e));
|
|
28412
28591
|
}
|
|
28413
28592
|
}
|
|
28414
|
-
var scaffoldStaticAdCommand =
|
|
28593
|
+
var scaffoldStaticAdCommand = defineCommand102({
|
|
28415
28594
|
meta: {
|
|
28416
28595
|
name: "scaffold-static-ad",
|
|
28417
28596
|
description: "Turn a source/inspiration image into a runnable static-ad canvas. Runs billed passes \u2014 image_describe (the blueprint, baked to prompt.json as the editable 'prompt'), an AI selection of the image's MAIN identity elements, and a structured global-layout pass (the column/row grid with per-region bounds and text sizes) \u2014 then scaffolds a canvas that wires one [TODO] ingest slot per element (logo/product/subject/badge + brand font) into image_generate. By default it also fans the hero out to the platform's placement ratios (via image_aspect_adapt \u2014 the hero ratio is free, the rest are billed AI recompositions); pass --placements none for a single base ad, or a preset to pick the set. Edit prompt.json and drop the real assets, then `baker canvas run` it."
|
|
@@ -28600,7 +28779,7 @@ var scaffoldStaticAdCommand = defineCommand101({
|
|
|
28600
28779
|
import { access as access2, cp, mkdir as mkdir7, readFile as readFile16, rm as rm6, writeFile as writeFile9 } from "fs/promises";
|
|
28601
28780
|
import { tmpdir as tmpdir2 } from "os";
|
|
28602
28781
|
import path23 from "path";
|
|
28603
|
-
import { defineCommand as
|
|
28782
|
+
import { defineCommand as defineCommand103 } from "citty";
|
|
28604
28783
|
|
|
28605
28784
|
// src/engine/scaffold/lib/model-router.ts
|
|
28606
28785
|
var SEEDANCE = "bytedance/seedance-2.0";
|
|
@@ -29061,7 +29240,7 @@ async function runAnalysisPasses(deconstructCanvas, selectModel) {
|
|
|
29061
29240
|
return fail4("deconstruct", e instanceof Error ? e.message : String(e));
|
|
29062
29241
|
}
|
|
29063
29242
|
}
|
|
29064
|
-
var scaffoldVideoCommand =
|
|
29243
|
+
var scaffoldVideoCommand = defineCommand103({
|
|
29065
29244
|
meta: {
|
|
29066
29245
|
name: "scaffold-video",
|
|
29067
29246
|
description: "Turn a reference video into a runnable reproduction canvas in one command. Runs billed passes \u2014 video_deconstruct (the full scene-by-scene blueprint + transcript, baked to a split, editable blueprint: a global prompt.json plus one small scenes/sNN.json per scene) and an AI selection of the video's RECURRING identity elements (person/animal/product/logo) \u2014 then scaffolds a pipeline where every scene boundary is a static-ad-grade frame (the blueprint as target_blueprint, a reference legend, the real frame as anchor) and each recurring element gets ONE shared [TODO] ingest slot wired into every frame it appears in. The clips feed Seedance an ultra-detailed motion brief (action, camera, dialogue, transcript). Edit a scene's scenes/sNN.json (or prompt.json for global cast/palette/brand), drop the real source images, then `baker canvas run`."
|
|
@@ -29371,7 +29550,7 @@ var scaffoldVideoCommand = defineCommand102({
|
|
|
29371
29550
|
// src/commands/canvas/set-prompt.ts
|
|
29372
29551
|
import { readFile as readFile17, writeFile as writeFile10 } from "fs/promises";
|
|
29373
29552
|
import path24 from "path";
|
|
29374
|
-
import { defineCommand as
|
|
29553
|
+
import { defineCommand as defineCommand104 } from "citty";
|
|
29375
29554
|
function setNodePrompt(canvas, nodeId, text2) {
|
|
29376
29555
|
const nodes = canvas?.nodes;
|
|
29377
29556
|
if (!Array.isArray(nodes)) throw new Error("canvas has no nodes array");
|
|
@@ -29386,7 +29565,7 @@ function setNodePrompt(canvas, nodeId, text2) {
|
|
|
29386
29565
|
newNodes[idx] = newNode;
|
|
29387
29566
|
return { ...canvas, nodes: newNodes };
|
|
29388
29567
|
}
|
|
29389
|
-
var setPromptCommand =
|
|
29568
|
+
var setPromptCommand = defineCommand104({
|
|
29390
29569
|
meta: {
|
|
29391
29570
|
name: "set-prompt",
|
|
29392
29571
|
description: "Safely set a node's params.prompt (a frame description, motion prompt, etc.) without hand-editing the JSON. Prefer --text-file for multi-line/accented copy \u2014 it preserves UTF-8 exactly, unlike shell-quoted jq."
|
|
@@ -29446,8 +29625,8 @@ var setPromptCommand = defineCommand103({
|
|
|
29446
29625
|
// src/commands/canvas/validate.ts
|
|
29447
29626
|
import { readFile as readFile18 } from "fs/promises";
|
|
29448
29627
|
import path25 from "path";
|
|
29449
|
-
import { defineCommand as
|
|
29450
|
-
var validateCommand =
|
|
29628
|
+
import { defineCommand as defineCommand105 } from "citty";
|
|
29629
|
+
var validateCommand = defineCommand105({
|
|
29451
29630
|
meta: {
|
|
29452
29631
|
name: "validate",
|
|
29453
29632
|
description: "Validate a canvas JSON file (no execution). Includes a per-node cost preview and runs each node's deep validators (composition meta checks for hyperframe_render/_snapshot)."
|
|
@@ -29520,7 +29699,7 @@ var validateCommand = defineCommand104({
|
|
|
29520
29699
|
});
|
|
29521
29700
|
|
|
29522
29701
|
// src/commands/canvas/index.ts
|
|
29523
|
-
var canvasCommand =
|
|
29702
|
+
var canvasCommand = defineCommand106({
|
|
29524
29703
|
meta: {
|
|
29525
29704
|
name: "canvas",
|
|
29526
29705
|
description: `Run Baker creative canvas JSON files locally. Local nodes execute in-process; remote nodes POST to the Convex backend gateway.
|
|
@@ -29554,7 +29733,7 @@ Full guide: __tooling__/docs/tools/baker/canvas.md`
|
|
|
29554
29733
|
});
|
|
29555
29734
|
|
|
29556
29735
|
// src/commands/capabilities/index.ts
|
|
29557
|
-
import { defineCommand as
|
|
29736
|
+
import { defineCommand as defineCommand107 } from "citty";
|
|
29558
29737
|
registerSchema({
|
|
29559
29738
|
command: "capabilities",
|
|
29560
29739
|
description: "Start here, before promising the user anything on an ad platform, in Analytics, or in Tag Manager. Answers three questions in one call: what is connected and with what access, what a write on each surface actually does when it lands, and what CANNOT be done here and why. Run it with no arguments for every surface; name one surface to also get the exact fields every change on it accepts.",
|
|
@@ -29597,7 +29776,7 @@ function capabilityHints(surfaces) {
|
|
|
29597
29776
|
}
|
|
29598
29777
|
return hints;
|
|
29599
29778
|
}
|
|
29600
|
-
var runCapabilities =
|
|
29779
|
+
var runCapabilities = defineCommand107({
|
|
29601
29780
|
meta: {
|
|
29602
29781
|
name: "capabilities",
|
|
29603
29782
|
description: `What Baker can and cannot do for this company, before any work starts.
|
|
@@ -29653,7 +29832,7 @@ Full guide: __tooling__/docs/tools/baker/capabilities.md`
|
|
|
29653
29832
|
var capabilitiesCommand = runCapabilities;
|
|
29654
29833
|
|
|
29655
29834
|
// src/commands/chats/index.ts
|
|
29656
|
-
import { defineCommand as
|
|
29835
|
+
import { defineCommand as defineCommand108 } from "citty";
|
|
29657
29836
|
var STATUS_GROUPS = ["active", "archived", "all"];
|
|
29658
29837
|
var REPO_SURFACES = ["knowledge", "company", "brand", "landings", "flows", "creatives"];
|
|
29659
29838
|
function parseBoundedInt(raw, name, min, max) {
|
|
@@ -29675,7 +29854,7 @@ registerSchema({
|
|
|
29675
29854
|
full: { type: "boolean", description: "Include each Session's full change list", required: false, default: false }
|
|
29676
29855
|
}
|
|
29677
29856
|
});
|
|
29678
|
-
var listCommand11 =
|
|
29857
|
+
var listCommand11 = defineCommand108({
|
|
29679
29858
|
meta: { name: "list", description: "List other Sessions on this account, newest first." },
|
|
29680
29859
|
args: {
|
|
29681
29860
|
status: { type: "string", description: "Filter: active|archived|all (default: all)", required: false },
|
|
@@ -29730,7 +29909,7 @@ registerSchema({
|
|
|
29730
29909
|
}
|
|
29731
29910
|
}
|
|
29732
29911
|
});
|
|
29733
|
-
var viewCommand =
|
|
29912
|
+
var viewCommand = defineCommand108({
|
|
29734
29913
|
meta: {
|
|
29735
29914
|
name: "view",
|
|
29736
29915
|
description: "Inspect one Session's full effects \u2014 git content + actions/tags/ads, kickoff, commits."
|
|
@@ -29774,7 +29953,7 @@ registerSchema({
|
|
|
29774
29953
|
}
|
|
29775
29954
|
}
|
|
29776
29955
|
});
|
|
29777
|
-
var transcriptCommand =
|
|
29956
|
+
var transcriptCommand = defineCommand108({
|
|
29778
29957
|
meta: { name: "transcript", description: "Read another Session's conversation." },
|
|
29779
29958
|
args: {
|
|
29780
29959
|
id: { type: "positional", description: "The Session id", required: true },
|
|
@@ -29826,7 +30005,7 @@ registerSchema({
|
|
|
29826
30005
|
}
|
|
29827
30006
|
}
|
|
29828
30007
|
});
|
|
29829
|
-
var diffCommand =
|
|
30008
|
+
var diffCommand = defineCommand108({
|
|
29830
30009
|
meta: { name: "diff", description: "See a published Session's real file-level changes." },
|
|
29831
30010
|
args: {
|
|
29832
30011
|
id: { type: "positional", description: "The Session id", required: true },
|
|
@@ -29870,7 +30049,7 @@ var diffCommand = defineCommand107({
|
|
|
29870
30049
|
}
|
|
29871
30050
|
}
|
|
29872
30051
|
});
|
|
29873
|
-
var chatsCommand =
|
|
30052
|
+
var chatsCommand = defineCommand108({
|
|
29874
30053
|
meta: {
|
|
29875
30054
|
name: "chats",
|
|
29876
30055
|
description: `Inspect other Sessions on this account (read-only): list them, view what they produced, read their conversation, and see their real file changes \u2014 so you can reuse past work for a new goal.
|
|
@@ -29885,10 +30064,10 @@ Full guide: __tooling__/docs/tools/baker/chats.md`
|
|
|
29885
30064
|
});
|
|
29886
30065
|
|
|
29887
30066
|
// src/commands/creatives/index.ts
|
|
29888
|
-
import { defineCommand as
|
|
30067
|
+
import { defineCommand as defineCommand110 } from "citty";
|
|
29889
30068
|
|
|
29890
30069
|
// src/commands/creatives/publish.ts
|
|
29891
|
-
import { defineCommand as
|
|
30070
|
+
import { defineCommand as defineCommand109 } from "citty";
|
|
29892
30071
|
|
|
29893
30072
|
// src/commands/images/api.ts
|
|
29894
30073
|
import { readFile as readFile19 } from "fs/promises";
|
|
@@ -30035,7 +30214,7 @@ async function publishCreative(args, deps = defaultImageApiDeps) {
|
|
|
30035
30214
|
chatId: chatIdFromEnv2()
|
|
30036
30215
|
});
|
|
30037
30216
|
}
|
|
30038
|
-
var publishCommand =
|
|
30217
|
+
var publishCommand = defineCommand109({
|
|
30039
30218
|
meta: {
|
|
30040
30219
|
name: "publish",
|
|
30041
30220
|
description: "Publish a final static creative image to Baker Creatives and print the creative reference JSON."
|
|
@@ -30093,7 +30272,7 @@ var publishCommand = defineCommand108({
|
|
|
30093
30272
|
});
|
|
30094
30273
|
|
|
30095
30274
|
// src/commands/creatives/index.ts
|
|
30096
|
-
var creativesCommand3 =
|
|
30275
|
+
var creativesCommand3 = defineCommand110({
|
|
30097
30276
|
meta: {
|
|
30098
30277
|
name: "creatives",
|
|
30099
30278
|
description: `Publish static ad creatives as first-class Baker outputs.
|
|
@@ -30110,11 +30289,11 @@ Full guide: __tooling__/docs/tools/baker/creatives.md`
|
|
|
30110
30289
|
});
|
|
30111
30290
|
|
|
30112
30291
|
// src/commands/flows/index.ts
|
|
30113
|
-
import { defineCommand as
|
|
30292
|
+
import { defineCommand as defineCommand115 } from "citty";
|
|
30114
30293
|
|
|
30115
30294
|
// src/commands/flows/add.ts
|
|
30116
30295
|
import { randomUUID } from "crypto";
|
|
30117
|
-
import { defineCommand as
|
|
30296
|
+
import { defineCommand as defineCommand111 } from "citty";
|
|
30118
30297
|
|
|
30119
30298
|
// src/commands/flows/shared.ts
|
|
30120
30299
|
import { existsSync as existsSync5, readdirSync as readdirSync2, readFileSync as readFileSync9, writeFileSync as writeFileSync3 } from "fs";
|
|
@@ -30324,7 +30503,7 @@ registerSchema({
|
|
|
30324
30503
|
parent: { type: "string", description: "Parent node id. Omit to append to the root's children.", required: false }
|
|
30325
30504
|
}
|
|
30326
30505
|
});
|
|
30327
|
-
var addNodeCommand =
|
|
30506
|
+
var addNodeCommand = defineCommand111({
|
|
30328
30507
|
meta: {
|
|
30329
30508
|
name: "add-node",
|
|
30330
30509
|
description: 'Add a step to a form, with the skeleton its type requires. Example: baker flows add-node contact --type customForm --name "Contact Info"'
|
|
@@ -30420,7 +30599,7 @@ registerSchema({
|
|
|
30420
30599
|
}
|
|
30421
30600
|
}
|
|
30422
30601
|
});
|
|
30423
|
-
var addSideEffectCommand =
|
|
30602
|
+
var addSideEffectCommand = defineCommand111({
|
|
30424
30603
|
meta: {
|
|
30425
30604
|
name: "add-side-effect",
|
|
30426
30605
|
description: "Add a side effect to a step, with the skeleton its type requires. Example: baker flows add-side-effect contact --node <id> --type googleSpreadsheet"
|
|
@@ -30502,7 +30681,7 @@ var addSideEffectCommand = defineCommand110({
|
|
|
30502
30681
|
|
|
30503
30682
|
// src/commands/flows/map.ts
|
|
30504
30683
|
import { readFileSync as readFileSync11 } from "fs";
|
|
30505
|
-
import { defineCommand as
|
|
30684
|
+
import { defineCommand as defineCommand112 } from "citty";
|
|
30506
30685
|
|
|
30507
30686
|
// src/commands/flows/value-expression.ts
|
|
30508
30687
|
import { existsSync as existsSync6, readFileSync as readFileSync10 } from "fs";
|
|
@@ -31275,7 +31454,7 @@ async function mapOptions(args, fromFile, into) {
|
|
|
31275
31454
|
destinationFields: hubspotForm ? await hubspotFieldCatalog(hubspotForm) : void 0
|
|
31276
31455
|
};
|
|
31277
31456
|
}
|
|
31278
|
-
var mapCommand =
|
|
31457
|
+
var mapCommand = defineCommand112({
|
|
31279
31458
|
meta: {
|
|
31280
31459
|
name: "map",
|
|
31281
31460
|
description: "Map form fields onto any value a side effect sends \u2014 never hand-write a mapping. Start here: baker flows map contact --from map.json --write"
|
|
@@ -31373,7 +31552,7 @@ var mapCommand = defineCommand111({
|
|
|
31373
31552
|
});
|
|
31374
31553
|
|
|
31375
31554
|
// src/commands/flows/normalize.ts
|
|
31376
|
-
import { defineCommand as
|
|
31555
|
+
import { defineCommand as defineCommand113 } from "citty";
|
|
31377
31556
|
var OPTIONAL_STRINGS = ["oauthProviderId"];
|
|
31378
31557
|
var ARRAY_FIELDS = [
|
|
31379
31558
|
"fieldMapping",
|
|
@@ -31442,7 +31621,7 @@ registerSchema({
|
|
|
31442
31621
|
}
|
|
31443
31622
|
}
|
|
31444
31623
|
});
|
|
31445
|
-
var normalizeCommand =
|
|
31624
|
+
var normalizeCommand = defineCommand113({
|
|
31446
31625
|
meta: {
|
|
31447
31626
|
name: "normalize",
|
|
31448
31627
|
description: "Repair the shapes a form file is allowed to get slightly wrong. Example: baker flows normalize contact --write"
|
|
@@ -31473,7 +31652,7 @@ var normalizeCommand = defineCommand112({
|
|
|
31473
31652
|
});
|
|
31474
31653
|
|
|
31475
31654
|
// src/commands/flows/schema.ts
|
|
31476
|
-
import { defineCommand as
|
|
31655
|
+
import { defineCommand as defineCommand114 } from "citty";
|
|
31477
31656
|
registerSchema({
|
|
31478
31657
|
command: "flows.schema",
|
|
31479
31658
|
description: "The shape of one node or side-effect type: a pasteable skeleton, who fills each part, and the reference file with the craft. Start here before authoring anything in a form's _data.json.",
|
|
@@ -31498,7 +31677,7 @@ function triggerHints(triggers) {
|
|
|
31498
31677
|
`A side effect on this step carries \`triggerId: "${triggers.completion}"\`, and \`baker flows add-side-effect\` writes it for you. The trigger belongs to the STEP, not to the side-effect type: one that does not match is valid, ships, and never runs.` + (others.length > 0 ? ` Other moments this step raises: ${others.join(", ")}.` : "")
|
|
31499
31678
|
];
|
|
31500
31679
|
}
|
|
31501
|
-
var schemaCommand =
|
|
31680
|
+
var schemaCommand = defineCommand114({
|
|
31502
31681
|
meta: {
|
|
31503
31682
|
name: "schema",
|
|
31504
31683
|
description: "Show a node or side-effect type's shape. Start here: baker flows schema node customForm \xB7 baker flows schema side-effect googleSpreadsheet \xB7 baker flows schema (lists both)"
|
|
@@ -31632,7 +31811,7 @@ function displayName(slug) {
|
|
|
31632
31811
|
const name = tree.displayName;
|
|
31633
31812
|
return typeof name === "string" && name.trim() ? name.trim() : slug;
|
|
31634
31813
|
}
|
|
31635
|
-
var listCommand12 =
|
|
31814
|
+
var listCommand12 = defineCommand115({
|
|
31636
31815
|
meta: {
|
|
31637
31816
|
name: "list",
|
|
31638
31817
|
description: "List Forms in this workspace with the count of confidential fields still needing setup. Example: baker flows list"
|
|
@@ -31653,7 +31832,7 @@ var listCommand12 = defineCommand114({
|
|
|
31653
31832
|
});
|
|
31654
31833
|
}
|
|
31655
31834
|
});
|
|
31656
|
-
var showCommand3 =
|
|
31835
|
+
var showCommand3 = defineCommand115({
|
|
31657
31836
|
meta: {
|
|
31658
31837
|
name: "show",
|
|
31659
31838
|
description: "Show a Form's confidential fields and their configuration status (never secret values). Example: baker flows show contact"
|
|
@@ -31681,7 +31860,7 @@ var showCommand3 = defineCommand114({
|
|
|
31681
31860
|
});
|
|
31682
31861
|
}
|
|
31683
31862
|
});
|
|
31684
|
-
var flowsCommand =
|
|
31863
|
+
var flowsCommand = defineCommand115({
|
|
31685
31864
|
meta: {
|
|
31686
31865
|
name: "flows",
|
|
31687
31866
|
description: `Read and shape this workspace's Forms (flows).
|
|
@@ -31715,10 +31894,10 @@ Full guide: __tooling__/docs/tools/baker/flows.md`
|
|
|
31715
31894
|
});
|
|
31716
31895
|
|
|
31717
31896
|
// src/commands/ga4/index.ts
|
|
31718
|
-
import { defineCommand as
|
|
31897
|
+
import { defineCommand as defineCommand122 } from "citty";
|
|
31719
31898
|
|
|
31720
31899
|
// src/commands/ga4/audit.ts
|
|
31721
|
-
import { defineCommand as
|
|
31900
|
+
import { defineCommand as defineCommand116 } from "citty";
|
|
31722
31901
|
|
|
31723
31902
|
// src/commands/ga4/resolve.ts
|
|
31724
31903
|
async function fetchProperties(useCache = true) {
|
|
@@ -31784,7 +31963,7 @@ registerSchema({
|
|
|
31784
31963
|
"no-cache": { type: "boolean", description: "Skip cache, hit API directly", required: false }
|
|
31785
31964
|
}
|
|
31786
31965
|
});
|
|
31787
|
-
var auditCommand2 =
|
|
31966
|
+
var auditCommand2 = defineCommand116({
|
|
31788
31967
|
meta: {
|
|
31789
31968
|
name: "audit",
|
|
31790
31969
|
description: `Run all GA4 admin health checks. Returns property config with playbook warnings.
|
|
@@ -31839,7 +32018,7 @@ Examples:
|
|
|
31839
32018
|
});
|
|
31840
32019
|
|
|
31841
32020
|
// src/commands/ga4/config.ts
|
|
31842
|
-
import { defineCommand as
|
|
32021
|
+
import { defineCommand as defineCommand117 } from "citty";
|
|
31843
32022
|
|
|
31844
32023
|
// src/commands/ga4/shared.ts
|
|
31845
32024
|
import { readFileSync as readFileSync12 } from "fs";
|
|
@@ -32003,10 +32182,14 @@ async function draftList(json, chat) {
|
|
|
32003
32182
|
// src/commands/ga4/config.ts
|
|
32004
32183
|
registerSchema({
|
|
32005
32184
|
command: "ga4.config",
|
|
32006
|
-
description: "Read how a Google Analytics property is configured to measure: key events (conversions), custom dimensions and metrics, custom events, data streams and the data retention window. Start here before staging any change \u2014 every id an update or removal targets comes from this, and `canWrite` says whether this connection may change anything at all. Compact by default; pass --full for the raw Analytics objects.",
|
|
32185
|
+
description: "Read how a Google Analytics property is configured to measure: key events (conversions), custom dimensions and metrics, custom events, audiences, linked Google Ads accounts, data streams and the data retention window. Start here before staging any change \u2014 every id an update or removal targets comes from this, and `canWrite` says whether this connection may change anything at all. Compact by default; pass --full for the raw Analytics objects AND each website stream's enhanced measurement settings (the automatic events), which are the only way to see what is on before changing a toggle.",
|
|
32007
32186
|
args: {
|
|
32008
32187
|
"property-id": { type: "string", description: "GA4 property id (optional when one is connected)", required: false },
|
|
32009
|
-
full: {
|
|
32188
|
+
full: {
|
|
32189
|
+
type: "boolean",
|
|
32190
|
+
description: "Include the raw Analytics object for each entity, plus each website stream's enhanced measurement settings",
|
|
32191
|
+
required: false
|
|
32192
|
+
}
|
|
32010
32193
|
}
|
|
32011
32194
|
});
|
|
32012
32195
|
function configHints(config) {
|
|
@@ -32031,7 +32214,7 @@ function configHints(config) {
|
|
|
32031
32214
|
}
|
|
32032
32215
|
return hints;
|
|
32033
32216
|
}
|
|
32034
|
-
var configCommand =
|
|
32217
|
+
var configCommand = defineCommand117({
|
|
32035
32218
|
meta: {
|
|
32036
32219
|
name: "config",
|
|
32037
32220
|
description: `Read how the property is configured to measure \u2014 key events, custom definitions, custom events, retention
|
|
@@ -32039,11 +32222,15 @@ var configCommand = defineCommand116({
|
|
|
32039
32222
|
Examples:
|
|
32040
32223
|
baker ga4 config
|
|
32041
32224
|
baker ga4 config --property-id 123456789
|
|
32042
|
-
baker ga4 config --full`
|
|
32225
|
+
baker ga4 config --full # + the automatic events each website stream collects today`
|
|
32043
32226
|
},
|
|
32044
32227
|
args: {
|
|
32045
32228
|
"property-id": { type: "string", description: "GA4 property id", required: false },
|
|
32046
|
-
full: {
|
|
32229
|
+
full: {
|
|
32230
|
+
type: "boolean",
|
|
32231
|
+
description: "Include raw Analytics objects and enhanced measurement settings",
|
|
32232
|
+
required: false
|
|
32233
|
+
}
|
|
32047
32234
|
},
|
|
32048
32235
|
run: async ({ args }) => {
|
|
32049
32236
|
try {
|
|
@@ -32059,7 +32246,7 @@ Examples:
|
|
|
32059
32246
|
});
|
|
32060
32247
|
|
|
32061
32248
|
// src/commands/ga4/draft.ts
|
|
32062
|
-
import { defineCommand as
|
|
32249
|
+
import { defineCommand as defineCommand118 } from "citty";
|
|
32063
32250
|
registerSchema({
|
|
32064
32251
|
command: "ga4.draft",
|
|
32065
32252
|
description: "Review and undo the Google Analytics changes staged on this chat. Use `list` to see everything staged, `show` to inspect one change in full before the chat completes, `amend` to correct one in place, and `remove`/`clear` to drop them. `list` and `show` take --chat <id> to read an earlier chat's changes instead.",
|
|
@@ -32068,13 +32255,13 @@ registerSchema({
|
|
|
32068
32255
|
chat: { type: "string", description: CHAT_READ_ARG.description, required: false }
|
|
32069
32256
|
}
|
|
32070
32257
|
});
|
|
32071
|
-
var draftCommand3 =
|
|
32258
|
+
var draftCommand3 = defineCommand118({
|
|
32072
32259
|
meta: {
|
|
32073
32260
|
name: "draft",
|
|
32074
32261
|
description: "List, show, amend, remove or clear the Google Analytics changes staged on this chat. `list` and `show` take --chat <id> to read an earlier chat's changes instead."
|
|
32075
32262
|
},
|
|
32076
32263
|
subCommands: {
|
|
32077
|
-
list:
|
|
32264
|
+
list: defineCommand118({
|
|
32078
32265
|
meta: { name: "list", description: "Review everything staged on this chat (--json for the raw envelope)" },
|
|
32079
32266
|
args: {
|
|
32080
32267
|
json: { type: "boolean", description: "Print the raw JSON envelope", required: false },
|
|
@@ -32084,7 +32271,7 @@ var draftCommand3 = defineCommand117({
|
|
|
32084
32271
|
await draftList(args.json === true, args.chat);
|
|
32085
32272
|
}
|
|
32086
32273
|
}),
|
|
32087
|
-
show:
|
|
32274
|
+
show: defineCommand118({
|
|
32088
32275
|
meta: {
|
|
32089
32276
|
name: "show",
|
|
32090
32277
|
description: "Print the full staged payload for one change, alongside how the property looks today \u2014 the receipt to verify it before the chat completes (never truncated)."
|
|
@@ -32101,7 +32288,7 @@ var draftCommand3 = defineCommand117({
|
|
|
32101
32288
|
);
|
|
32102
32289
|
}
|
|
32103
32290
|
}),
|
|
32104
|
-
amend:
|
|
32291
|
+
amend: defineCommand118({
|
|
32105
32292
|
meta: {
|
|
32106
32293
|
name: "amend",
|
|
32107
32294
|
description: "Update a staged change in place \u2014 merges a JSON patch into its payload (objects deep-merge, null deletes a key, arrays/scalars replace) and re-runs every check. Use this instead of remove + re-create."
|
|
@@ -32118,7 +32305,7 @@ var draftCommand3 = defineCommand117({
|
|
|
32118
32305
|
});
|
|
32119
32306
|
}
|
|
32120
32307
|
}),
|
|
32121
|
-
remove:
|
|
32308
|
+
remove: defineCommand118({
|
|
32122
32309
|
meta: { name: "remove", description: "Remove one staged change" },
|
|
32123
32310
|
args: { ref: { type: "positional", description: "Staged ref or target id", required: false } },
|
|
32124
32311
|
run: async ({ args }) => {
|
|
@@ -32127,7 +32314,7 @@ var draftCommand3 = defineCommand117({
|
|
|
32127
32314
|
});
|
|
32128
32315
|
}
|
|
32129
32316
|
}),
|
|
32130
|
-
clear:
|
|
32317
|
+
clear: defineCommand118({
|
|
32131
32318
|
meta: { name: "clear", description: "Discard all Google Analytics changes staged on this chat" },
|
|
32132
32319
|
run: async () => {
|
|
32133
32320
|
await draftAction2("/api/ga4/draft/clear", {});
|
|
@@ -32137,7 +32324,7 @@ var draftCommand3 = defineCommand117({
|
|
|
32137
32324
|
});
|
|
32138
32325
|
|
|
32139
32326
|
// src/commands/ga4/properties.ts
|
|
32140
|
-
import { defineCommand as
|
|
32327
|
+
import { defineCommand as defineCommand119 } from "citty";
|
|
32141
32328
|
registerSchema({
|
|
32142
32329
|
command: "ga4.properties",
|
|
32143
32330
|
description: "List the GA4 properties this company connected \u2014 there can be several, and every one of them is yours to query. Returns the property IDs the query and audit commands take. Run this first to find property IDs.",
|
|
@@ -32153,7 +32340,7 @@ function propertyHints(properties) {
|
|
|
32153
32340
|
resources: properties.map((property) => ({ id: property.externalId, label: property.name }))
|
|
32154
32341
|
});
|
|
32155
32342
|
}
|
|
32156
|
-
var propertiesCommand =
|
|
32343
|
+
var propertiesCommand = defineCommand119({
|
|
32157
32344
|
meta: {
|
|
32158
32345
|
name: "properties",
|
|
32159
32346
|
description: `List accessible GA4 properties.
|
|
@@ -32203,7 +32390,7 @@ Examples:
|
|
|
32203
32390
|
// src/commands/ga4/query.ts
|
|
32204
32391
|
import { appendFileSync as appendFileSync2, existsSync as existsSync7, readFileSync as readFileSync13, writeFileSync as writeFileSync4 } from "fs";
|
|
32205
32392
|
import { resolve as resolve2 } from "path";
|
|
32206
|
-
import { defineCommand as
|
|
32393
|
+
import { defineCommand as defineCommand120 } from "citty";
|
|
32207
32394
|
|
|
32208
32395
|
// src/commands/ga4/presets.ts
|
|
32209
32396
|
var GA4_PRESETS = [
|
|
@@ -32338,7 +32525,7 @@ function handleError2(err) {
|
|
|
32338
32525
|
});
|
|
32339
32526
|
process.exit(1);
|
|
32340
32527
|
}
|
|
32341
|
-
var queryCommand2 =
|
|
32528
|
+
var queryCommand2 = defineCommand120({
|
|
32342
32529
|
meta: {
|
|
32343
32530
|
name: "query",
|
|
32344
32531
|
description: `Run GA4 Data API reports. Preset-first with free-form escape hatch.
|
|
@@ -32409,7 +32596,7 @@ Free-form (escape hatch):
|
|
|
32409
32596
|
});
|
|
32410
32597
|
|
|
32411
32598
|
// src/commands/ga4/write-commands.ts
|
|
32412
|
-
import { defineCommand as
|
|
32599
|
+
import { defineCommand as defineCommand121 } from "citty";
|
|
32413
32600
|
var PROPERTY_ARG_DESCRIPTION = "GA4 property id (optional only when one property is connected \u2014 run `baker ga4 properties`)";
|
|
32414
32601
|
var propertyArg = { type: "string", description: PROPERTY_ARG_DESCRIPTION, required: false };
|
|
32415
32602
|
function createJsonDescription(noun) {
|
|
@@ -32427,7 +32614,7 @@ registerSchema({
|
|
|
32427
32614
|
"property-id": { type: "string", description: PROPERTY_ARG_DESCRIPTION, required: false }
|
|
32428
32615
|
}
|
|
32429
32616
|
});
|
|
32430
|
-
var keyEventCommand =
|
|
32617
|
+
var keyEventCommand = defineCommand121({
|
|
32431
32618
|
meta: {
|
|
32432
32619
|
name: "key-event",
|
|
32433
32620
|
description: `Stage key-event (conversion) changes
|
|
@@ -32440,7 +32627,7 @@ Examples:
|
|
|
32440
32627
|
baker ga4 key-event delete 4185`
|
|
32441
32628
|
},
|
|
32442
32629
|
subCommands: {
|
|
32443
|
-
create:
|
|
32630
|
+
create: defineCommand121({
|
|
32444
32631
|
meta: {
|
|
32445
32632
|
name: "create",
|
|
32446
32633
|
description: "Stage a new key event. Needs eventName and countingMethod (ONCE_PER_EVENT or ONCE_PER_SESSION); defaultValue sets a monetary value when the event does not send one."
|
|
@@ -32461,7 +32648,7 @@ Examples:
|
|
|
32461
32648
|
);
|
|
32462
32649
|
}
|
|
32463
32650
|
}),
|
|
32464
|
-
update:
|
|
32651
|
+
update: defineCommand121({
|
|
32465
32652
|
meta: {
|
|
32466
32653
|
name: "update",
|
|
32467
32654
|
description: "Stage a change to an existing key event (pass its id). Only countingMethod and defaultValue can change \u2014 Google will not rename a key event."
|
|
@@ -32481,7 +32668,7 @@ Examples:
|
|
|
32481
32668
|
});
|
|
32482
32669
|
}
|
|
32483
32670
|
}),
|
|
32484
|
-
delete:
|
|
32671
|
+
delete: defineCommand121({
|
|
32485
32672
|
meta: {
|
|
32486
32673
|
name: "delete",
|
|
32487
32674
|
description: "Stage removing a key event, so the event stops counting as a conversion. The event itself keeps being collected. Irreversible once the chat completes \u2014 confirm with the user first."
|
|
@@ -32529,7 +32716,7 @@ for (const { kind, noun, createHint } of DEFINITIONS) {
|
|
|
32529
32716
|
}
|
|
32530
32717
|
function definitionCommand(definition) {
|
|
32531
32718
|
const { command, kind, noun, example } = definition;
|
|
32532
|
-
return
|
|
32719
|
+
return defineCommand121({
|
|
32533
32720
|
meta: {
|
|
32534
32721
|
name: command,
|
|
32535
32722
|
description: `Stage ${noun} changes
|
|
@@ -32541,7 +32728,7 @@ Examples:
|
|
|
32541
32728
|
baker ga4 ${command} archive 12`
|
|
32542
32729
|
},
|
|
32543
32730
|
subCommands: {
|
|
32544
|
-
create:
|
|
32731
|
+
create: defineCommand121({
|
|
32545
32732
|
meta: { name: "create", description: `Stage a new ${noun} (or a JSON array of them, staged together)` },
|
|
32546
32733
|
args: {
|
|
32547
32734
|
json: { type: "string", description: createJsonDescription(noun), required: false },
|
|
@@ -32559,7 +32746,7 @@ Examples:
|
|
|
32559
32746
|
);
|
|
32560
32747
|
}
|
|
32561
32748
|
}),
|
|
32562
|
-
update:
|
|
32749
|
+
update: defineCommand121({
|
|
32563
32750
|
meta: {
|
|
32564
32751
|
name: "update",
|
|
32565
32752
|
description: `Stage a change to an existing ${noun} (pass its id). The parameter name and scope cannot change \u2014 archive and recreate for that.`
|
|
@@ -32579,7 +32766,7 @@ Examples:
|
|
|
32579
32766
|
});
|
|
32580
32767
|
}
|
|
32581
32768
|
}),
|
|
32582
|
-
archive:
|
|
32769
|
+
archive: defineCommand121({
|
|
32583
32770
|
meta: {
|
|
32584
32771
|
name: "archive",
|
|
32585
32772
|
description: `Stage archiving a ${noun} (pass its id). It stops collecting and leaves reporting; past data stays. Irreversible once the chat completes \u2014 confirm with the user first.`
|
|
@@ -32624,7 +32811,7 @@ var dataStreamArg = {
|
|
|
32624
32811
|
function withStream(args) {
|
|
32625
32812
|
return typeof args["data-stream"] === "string" ? { dataStream: args["data-stream"] } : {};
|
|
32626
32813
|
}
|
|
32627
|
-
var customEventCommand =
|
|
32814
|
+
var customEventCommand = defineCommand121({
|
|
32628
32815
|
meta: {
|
|
32629
32816
|
name: "custom-event",
|
|
32630
32817
|
description: `Stage custom events \u2014 new events built from events the site already sends
|
|
@@ -32635,7 +32822,7 @@ Examples:
|
|
|
32635
32822
|
baker ga4 custom-event delete 7`
|
|
32636
32823
|
},
|
|
32637
32824
|
subCommands: {
|
|
32638
|
-
create:
|
|
32825
|
+
create: defineCommand121({
|
|
32639
32826
|
meta: {
|
|
32640
32827
|
name: "create",
|
|
32641
32828
|
description: "Stage a new custom event. Conditions match the source event: use field `event_name` to match the event itself, or any parameter name to match its value."
|
|
@@ -32658,7 +32845,7 @@ Examples:
|
|
|
32658
32845
|
);
|
|
32659
32846
|
}
|
|
32660
32847
|
}),
|
|
32661
|
-
update:
|
|
32848
|
+
update: defineCommand121({
|
|
32662
32849
|
meta: { name: "update", description: "Stage a change to an existing custom event (pass its id)" },
|
|
32663
32850
|
args: {
|
|
32664
32851
|
id: { type: "positional", description: "Custom event rule id", required: false },
|
|
@@ -32677,7 +32864,7 @@ Examples:
|
|
|
32677
32864
|
});
|
|
32678
32865
|
}
|
|
32679
32866
|
}),
|
|
32680
|
-
delete:
|
|
32867
|
+
delete: defineCommand121({
|
|
32681
32868
|
meta: {
|
|
32682
32869
|
name: "delete",
|
|
32683
32870
|
description: "Stage removing a custom event (pass its id). The event stops being created from then on; data already collected under it stays. Confirm with the user first."
|
|
@@ -32732,7 +32919,7 @@ function booleanArg(input, flag) {
|
|
|
32732
32919
|
if (input === "false") return false;
|
|
32733
32920
|
return failValidation3(`--${flag} must be true or false`);
|
|
32734
32921
|
}
|
|
32735
|
-
var dataRetentionCommand =
|
|
32922
|
+
var dataRetentionCommand = defineCommand121({
|
|
32736
32923
|
meta: {
|
|
32737
32924
|
name: "data-retention",
|
|
32738
32925
|
description: `Stage a change to how long Google Analytics keeps data
|
|
@@ -32742,7 +32929,7 @@ Examples:
|
|
|
32742
32929
|
baker ga4 data-retention set --event-data 14 --user-data 14 --reset-on-activity true`
|
|
32743
32930
|
},
|
|
32744
32931
|
subCommands: {
|
|
32745
|
-
set:
|
|
32932
|
+
set: defineCommand121({
|
|
32746
32933
|
meta: { name: "set", description: "Stage the retention window (months)" },
|
|
32747
32934
|
args: {
|
|
32748
32935
|
"event-data": { type: "string", description: "2, 14, 26, 38 or 50", required: false },
|
|
@@ -32769,9 +32956,330 @@ Examples:
|
|
|
32769
32956
|
})
|
|
32770
32957
|
}
|
|
32771
32958
|
});
|
|
32959
|
+
registerSchema({
|
|
32960
|
+
command: "ga4.audience",
|
|
32961
|
+
description: "Create an audience (a saved group of users, e.g. everyone who started a demo but never finished), rename one, or archive one. Read `baker ga4 config` first to see the audiences that already exist. IMPORTANT: everything that defines who is in an audience \u2014 the conditions, the membership window \u2014 is frozen the moment it is created and cannot be edited afterwards, so get it right in one go. An audience only reaches Google Ads for retargeting if the property is linked to a Google Ads account.",
|
|
32962
|
+
args: {
|
|
32963
|
+
json: { type: "string", description: createJsonDescription("audience"), required: false },
|
|
32964
|
+
file: { type: "string", description: "Path to a JSON file with the definition", required: false },
|
|
32965
|
+
"property-id": { type: "string", description: PROPERTY_ARG_DESCRIPTION, required: false }
|
|
32966
|
+
}
|
|
32967
|
+
});
|
|
32968
|
+
var audienceCommand = defineCommand121({
|
|
32969
|
+
meta: {
|
|
32970
|
+
name: "audience",
|
|
32971
|
+
description: `Stage audience changes (saved groups of users, for retargeting and analysis)
|
|
32972
|
+
|
|
32973
|
+
The definition is PERMANENT: conditions and membership window cannot be edited after creation.
|
|
32974
|
+
Fixing one means archiving it and building a replacement, which does not carry its users over.
|
|
32975
|
+
|
|
32976
|
+
Examples:
|
|
32977
|
+
# Everyone who visited but never submitted the demo form, kept for 90 days
|
|
32978
|
+
baker ga4 audience create --json '{
|
|
32979
|
+
"displayName":"Visited without demo",
|
|
32980
|
+
"description":"Reached the site, never submitted the demo form",
|
|
32981
|
+
"membershipDurationDays":90,
|
|
32982
|
+
"filterClauses":[
|
|
32983
|
+
{"clauseType":"INCLUDE","simpleFilter":{"scope":"AUDIENCE_FILTER_SCOPE_ACROSS_ALL_SESSIONS",
|
|
32984
|
+
"filterExpression":{"eventFilter":{"eventName":"page_view"}}}},
|
|
32985
|
+
{"clauseType":"EXCLUDE","simpleFilter":{"scope":"AUDIENCE_FILTER_SCOPE_ACROSS_ALL_SESSIONS",
|
|
32986
|
+
"filterExpression":{"eventFilter":{"eventName":"demo_form_submitted"}}}}
|
|
32987
|
+
]}'
|
|
32988
|
+
|
|
32989
|
+
# Everyone who landed on a pricing page
|
|
32990
|
+
baker ga4 audience create --json '{"displayName":"Saw pricing","description":"Viewed a pricing page",
|
|
32991
|
+
"membershipDurationDays":60,
|
|
32992
|
+
"filterClauses":[{"clauseType":"INCLUDE","simpleFilter":{"scope":"AUDIENCE_FILTER_SCOPE_ACROSS_ALL_SESSIONS",
|
|
32993
|
+
"filterExpression":{"dimensionOrMetricFilter":{"fieldName":"pagePath",
|
|
32994
|
+
"stringFilter":{"matchType":"CONTAINS","value":"/pricing"}}}}}]}'
|
|
32995
|
+
|
|
32996
|
+
baker ga4 audience update 8813 --json '{"displayName":"Visited without demo (90d)"}' \u2014 name/description only
|
|
32997
|
+
baker ga4 audience archive 8813`
|
|
32998
|
+
},
|
|
32999
|
+
subCommands: {
|
|
33000
|
+
create: defineCommand121({
|
|
33001
|
+
meta: { name: "create", description: createJsonDescription("audience") },
|
|
33002
|
+
args: {
|
|
33003
|
+
json: { type: "string", description: createJsonDescription("audience"), required: false },
|
|
33004
|
+
file: { type: "string", description: "Path to a JSON file", required: false },
|
|
33005
|
+
"property-id": propertyArg
|
|
33006
|
+
},
|
|
33007
|
+
run: async ({ args }) => {
|
|
33008
|
+
const payloads = loadJsonPayloads(args);
|
|
33009
|
+
await stageOps(
|
|
33010
|
+
payloads.map((payload) => ({
|
|
33011
|
+
kind: "ga4.audience.create",
|
|
33012
|
+
payload,
|
|
33013
|
+
...withProperty(args)
|
|
33014
|
+
}))
|
|
33015
|
+
);
|
|
33016
|
+
}
|
|
33017
|
+
}),
|
|
33018
|
+
update: defineCommand121({
|
|
33019
|
+
meta: {
|
|
33020
|
+
name: "update",
|
|
33021
|
+
description: "Stage a new name or description (pass the audience id). Who is in it cannot be changed."
|
|
33022
|
+
},
|
|
33023
|
+
args: {
|
|
33024
|
+
json: { type: "string", description: 'Inline JSON, e.g. {"displayName":"\u2026"}', required: false },
|
|
33025
|
+
file: { type: "string", description: "Path to a JSON file", required: false },
|
|
33026
|
+
"property-id": propertyArg
|
|
33027
|
+
},
|
|
33028
|
+
run: async ({ args }) => {
|
|
33029
|
+
const target = requireTarget4(args, "audience id");
|
|
33030
|
+
const payload = loadJsonArg(args);
|
|
33031
|
+
await stageOp3({
|
|
33032
|
+
kind: "ga4.audience.update",
|
|
33033
|
+
target,
|
|
33034
|
+
payload,
|
|
33035
|
+
...withProperty(args)
|
|
33036
|
+
});
|
|
33037
|
+
}
|
|
33038
|
+
}),
|
|
33039
|
+
archive: defineCommand121({
|
|
33040
|
+
meta: {
|
|
33041
|
+
name: "archive",
|
|
33042
|
+
description: "Stage retiring an audience. Cannot be undone \u2014 the users it gathered do not come back."
|
|
33043
|
+
},
|
|
33044
|
+
args: { "property-id": propertyArg },
|
|
33045
|
+
run: async ({ args }) => {
|
|
33046
|
+
await stageOp3({
|
|
33047
|
+
kind: "ga4.audience.archive",
|
|
33048
|
+
target: requireTarget4(args, "audience id"),
|
|
33049
|
+
...withProperty(args)
|
|
33050
|
+
});
|
|
33051
|
+
}
|
|
33052
|
+
})
|
|
33053
|
+
}
|
|
33054
|
+
});
|
|
33055
|
+
registerSchema({
|
|
33056
|
+
command: "ga4.property",
|
|
33057
|
+
description: "Set the property's name or industry category. The industry decides which businesses Google benchmarks this property against, so a property left on OTHER is being compared to nothing useful. Time zone and currency are deliberately not changeable here \u2014 both re-bucket every future day without reprocessing history, so they belong to a person who knows the reporting calendar.",
|
|
33058
|
+
args: {
|
|
33059
|
+
name: { type: "string", description: "New property display name", required: false },
|
|
33060
|
+
industry: {
|
|
33061
|
+
type: "string",
|
|
33062
|
+
description: "Industry category, e.g. TECHNOLOGY, FINANCE, HEALTHCARE, REAL_ESTATE, JOBS_AND_EDUCATION",
|
|
33063
|
+
required: false
|
|
33064
|
+
},
|
|
33065
|
+
"property-id": { type: "string", description: PROPERTY_ARG_DESCRIPTION, required: false }
|
|
33066
|
+
}
|
|
33067
|
+
});
|
|
33068
|
+
var propertyCommand = defineCommand121({
|
|
33069
|
+
meta: {
|
|
33070
|
+
name: "property",
|
|
33071
|
+
description: `Stage a change to the property's own settings
|
|
33072
|
+
|
|
33073
|
+
Examples:
|
|
33074
|
+
baker ga4 property set --industry TECHNOLOGY
|
|
33075
|
+
baker ga4 property set --name "Acme \u2014 Web" --industry REAL_ESTATE`
|
|
33076
|
+
},
|
|
33077
|
+
subCommands: {
|
|
33078
|
+
set: defineCommand121({
|
|
33079
|
+
meta: { name: "set", description: "Stage the property name and/or industry category" },
|
|
33080
|
+
args: {
|
|
33081
|
+
name: { type: "string", description: "New property display name", required: false },
|
|
33082
|
+
industry: { type: "string", description: "Industry category, e.g. TECHNOLOGY", required: false },
|
|
33083
|
+
"property-id": propertyArg
|
|
33084
|
+
},
|
|
33085
|
+
run: async ({ args }) => {
|
|
33086
|
+
const payload = {};
|
|
33087
|
+
if (typeof args.name === "string" && args.name.length > 0) {
|
|
33088
|
+
payload.displayName = args.name;
|
|
33089
|
+
}
|
|
33090
|
+
if (typeof args.industry === "string" && args.industry.length > 0) {
|
|
33091
|
+
payload.industryCategory = args.industry.trim().toUpperCase();
|
|
33092
|
+
}
|
|
33093
|
+
if (Object.keys(payload).length === 0) {
|
|
33094
|
+
failValidation3("pass --name, --industry, or both");
|
|
33095
|
+
}
|
|
33096
|
+
await stageOp3({ kind: "ga4.property.update", payload, ...withProperty(args) });
|
|
33097
|
+
}
|
|
33098
|
+
})
|
|
33099
|
+
}
|
|
33100
|
+
});
|
|
33101
|
+
registerSchema({
|
|
33102
|
+
command: "ga4.adsLink",
|
|
33103
|
+
description: "Link this Analytics property to a Google Ads account, or unlink it. This is what lets Google Ads import the property's key events for bidding and makes audiences built here targetable \u2014 `baker ga4 audit` reports the gap as NO_ADS_LINK. It reaches outside Analytics and moves the client's data between two products, so agree it with the user before staging it.",
|
|
33104
|
+
args: {
|
|
33105
|
+
"customer-id": {
|
|
33106
|
+
type: "string",
|
|
33107
|
+
description: "Google Ads customer id, with or without dashes (123-456-7890)",
|
|
33108
|
+
required: false
|
|
33109
|
+
},
|
|
33110
|
+
"ads-personalization": {
|
|
33111
|
+
type: "string",
|
|
33112
|
+
description: "true|false \u2014 may this property's audiences be used for ads personalisation",
|
|
33113
|
+
required: false
|
|
33114
|
+
},
|
|
33115
|
+
"property-id": { type: "string", description: PROPERTY_ARG_DESCRIPTION, required: false }
|
|
33116
|
+
}
|
|
33117
|
+
});
|
|
33118
|
+
var adsLinkCommand = defineCommand121({
|
|
33119
|
+
meta: {
|
|
33120
|
+
name: "ads-link",
|
|
33121
|
+
description: `Stage linking this property to a Google Ads account
|
|
33122
|
+
|
|
33123
|
+
Without this link, Google Ads imports no key events from the property and audiences built
|
|
33124
|
+
here cannot be retargeted. It moves the client's data between two products \u2014 agree it first.
|
|
33125
|
+
|
|
33126
|
+
Examples:
|
|
33127
|
+
baker ga4 ads-link create --customer-id 123-456-7890
|
|
33128
|
+
baker ga4 ads-link create --customer-id 1234567890 --ads-personalization true
|
|
33129
|
+
baker ga4 ads-link update L1234 --ads-personalization false
|
|
33130
|
+
baker ga4 ads-link delete L1234`
|
|
33131
|
+
},
|
|
33132
|
+
subCommands: {
|
|
33133
|
+
create: defineCommand121({
|
|
33134
|
+
meta: { name: "create", description: "Stage linking the property to a Google Ads account" },
|
|
33135
|
+
args: {
|
|
33136
|
+
"customer-id": { type: "string", description: "Google Ads customer id (123-456-7890)", required: false },
|
|
33137
|
+
"ads-personalization": { type: "string", description: "true|false", required: false },
|
|
33138
|
+
"property-id": propertyArg
|
|
33139
|
+
},
|
|
33140
|
+
run: async ({ args }) => {
|
|
33141
|
+
const customerId = args["customer-id"];
|
|
33142
|
+
if (typeof customerId !== "string" || customerId.length === 0) {
|
|
33143
|
+
failValidation3("pass --customer-id, the Google Ads account to link (123-456-7890)");
|
|
33144
|
+
}
|
|
33145
|
+
const payload = { customerId };
|
|
33146
|
+
if (typeof args["ads-personalization"] === "string") {
|
|
33147
|
+
payload.adsPersonalizationEnabled = booleanArg(args["ads-personalization"], "ads-personalization");
|
|
33148
|
+
}
|
|
33149
|
+
await stageOp3({ kind: "ga4.googleAdsLink.create", payload, ...withProperty(args) });
|
|
33150
|
+
}
|
|
33151
|
+
}),
|
|
33152
|
+
update: defineCommand121({
|
|
33153
|
+
meta: {
|
|
33154
|
+
name: "update",
|
|
33155
|
+
description: "Stage the ads-personalisation setting on an existing link (pass its id)"
|
|
33156
|
+
},
|
|
33157
|
+
args: {
|
|
33158
|
+
"ads-personalization": { type: "string", description: "true|false", required: false },
|
|
33159
|
+
"property-id": propertyArg
|
|
33160
|
+
},
|
|
33161
|
+
run: async ({ args }) => {
|
|
33162
|
+
const target = requireTarget4(args, "Google Ads link id");
|
|
33163
|
+
if (typeof args["ads-personalization"] !== "string") {
|
|
33164
|
+
failValidation3("pass --ads-personalization true|false \u2014 it is the only thing a link update can change");
|
|
33165
|
+
}
|
|
33166
|
+
await stageOp3({
|
|
33167
|
+
kind: "ga4.googleAdsLink.update",
|
|
33168
|
+
target,
|
|
33169
|
+
payload: { adsPersonalizationEnabled: booleanArg(args["ads-personalization"], "ads-personalization") },
|
|
33170
|
+
...withProperty(args)
|
|
33171
|
+
});
|
|
33172
|
+
}
|
|
33173
|
+
}),
|
|
33174
|
+
delete: defineCommand121({
|
|
33175
|
+
meta: {
|
|
33176
|
+
name: "delete",
|
|
33177
|
+
description: "Stage unlinking. Stops conversion imports and strands every audience on this property."
|
|
33178
|
+
},
|
|
33179
|
+
args: { "property-id": propertyArg },
|
|
33180
|
+
run: async ({ args }) => {
|
|
33181
|
+
await stageOp3({
|
|
33182
|
+
kind: "ga4.googleAdsLink.delete",
|
|
33183
|
+
target: requireTarget4(args, "Google Ads link id"),
|
|
33184
|
+
...withProperty(args)
|
|
33185
|
+
});
|
|
33186
|
+
}
|
|
33187
|
+
})
|
|
33188
|
+
}
|
|
33189
|
+
});
|
|
33190
|
+
registerSchema({
|
|
33191
|
+
command: "ga4.enhancedMeasurement",
|
|
33192
|
+
description: "Turn the automatic web-stream events on or off: scrolls, outbound clicks, site search, video engagement, file downloads, page changes (single-page apps), form interactions. These are collected by Google Analytics itself with no tag to add, so this is usually the cheapest measurement win available. Run `baker ga4 config --full` to see what is on today.",
|
|
33193
|
+
args: {
|
|
33194
|
+
scrolls: { type: "string", description: "true|false", required: false },
|
|
33195
|
+
"outbound-clicks": { type: "string", description: "true|false", required: false },
|
|
33196
|
+
"site-search": { type: "string", description: "true|false \u2014 needs --search-parameters", required: false },
|
|
33197
|
+
"search-parameters": {
|
|
33198
|
+
type: "string",
|
|
33199
|
+
description: "URL parameters carrying the search term, e.g. q,s,search,query,keyword",
|
|
33200
|
+
required: false
|
|
33201
|
+
},
|
|
33202
|
+
video: { type: "string", description: "true|false", required: false },
|
|
33203
|
+
"file-downloads": { type: "string", description: "true|false", required: false },
|
|
33204
|
+
"page-changes": { type: "string", description: "true|false \u2014 page views in a single-page app", required: false },
|
|
33205
|
+
"form-interactions": { type: "string", description: "true|false", required: false },
|
|
33206
|
+
enabled: { type: "string", description: "true|false \u2014 the master switch for the whole feature", required: false },
|
|
33207
|
+
"data-stream": {
|
|
33208
|
+
type: "string",
|
|
33209
|
+
description: "Only when the property has several website streams",
|
|
33210
|
+
required: false
|
|
33211
|
+
},
|
|
33212
|
+
"property-id": { type: "string", description: PROPERTY_ARG_DESCRIPTION, required: false }
|
|
33213
|
+
}
|
|
33214
|
+
});
|
|
33215
|
+
var MEASUREMENT_FLAGS = {
|
|
33216
|
+
enabled: "streamEnabled",
|
|
33217
|
+
scrolls: "scrollsEnabled",
|
|
33218
|
+
"outbound-clicks": "outboundClicksEnabled",
|
|
33219
|
+
"site-search": "siteSearchEnabled",
|
|
33220
|
+
video: "videoEngagementEnabled",
|
|
33221
|
+
"file-downloads": "fileDownloadsEnabled",
|
|
33222
|
+
"page-changes": "pageChangesEnabled",
|
|
33223
|
+
"form-interactions": "formInteractionsEnabled"
|
|
33224
|
+
};
|
|
33225
|
+
var enhancedMeasurementCommand = defineCommand121({
|
|
33226
|
+
meta: {
|
|
33227
|
+
name: "enhanced-measurement",
|
|
33228
|
+
description: `Stage the automatic events GA4 collects on a website stream
|
|
33229
|
+
|
|
33230
|
+
No tag to add \u2014 Google Analytics collects these itself. Usually the cheapest measurement win there is.
|
|
33231
|
+
|
|
33232
|
+
Examples:
|
|
33233
|
+
baker ga4 enhanced-measurement set --scrolls true --outbound-clicks true --file-downloads true
|
|
33234
|
+
baker ga4 enhanced-measurement set --site-search true --search-parameters "q,s,search,query,keyword"
|
|
33235
|
+
baker ga4 enhanced-measurement set --page-changes true # page views in a single-page app
|
|
33236
|
+
baker ga4 enhanced-measurement set --video false`
|
|
33237
|
+
},
|
|
33238
|
+
subCommands: {
|
|
33239
|
+
set: defineCommand121({
|
|
33240
|
+
meta: { name: "set", description: "Stage which automatic events the website stream collects" },
|
|
33241
|
+
args: {
|
|
33242
|
+
scrolls: { type: "string", description: "true|false", required: false },
|
|
33243
|
+
"outbound-clicks": { type: "string", description: "true|false", required: false },
|
|
33244
|
+
"site-search": { type: "string", description: "true|false", required: false },
|
|
33245
|
+
"search-parameters": { type: "string", description: "e.g. q,s,search,query,keyword", required: false },
|
|
33246
|
+
video: { type: "string", description: "true|false", required: false },
|
|
33247
|
+
"file-downloads": { type: "string", description: "true|false", required: false },
|
|
33248
|
+
"page-changes": { type: "string", description: "true|false", required: false },
|
|
33249
|
+
"form-interactions": { type: "string", description: "true|false", required: false },
|
|
33250
|
+
enabled: { type: "string", description: "true|false \u2014 master switch", required: false },
|
|
33251
|
+
"data-stream": { type: "string", description: "Stream id, when there are several", required: false },
|
|
33252
|
+
"property-id": propertyArg
|
|
33253
|
+
},
|
|
33254
|
+
run: async ({ args }) => {
|
|
33255
|
+
const payload = {};
|
|
33256
|
+
for (const [flag, field] of Object.entries(MEASUREMENT_FLAGS)) {
|
|
33257
|
+
const value = args[flag];
|
|
33258
|
+
if (typeof value === "string") {
|
|
33259
|
+
payload[field] = booleanArg(value, flag);
|
|
33260
|
+
}
|
|
33261
|
+
}
|
|
33262
|
+
if (typeof args["search-parameters"] === "string" && args["search-parameters"].length > 0) {
|
|
33263
|
+
payload.searchQueryParameter = args["search-parameters"];
|
|
33264
|
+
}
|
|
33265
|
+
if (Object.keys(payload).length === 0) {
|
|
33266
|
+
failValidation3(
|
|
33267
|
+
"pass at least one setting, e.g. --scrolls true --outbound-clicks true. Run `baker ga4 config --full` to see what is on today."
|
|
33268
|
+
);
|
|
33269
|
+
}
|
|
33270
|
+
await stageOp3({
|
|
33271
|
+
kind: "ga4.enhancedMeasurement.update",
|
|
33272
|
+
payload,
|
|
33273
|
+
...typeof args["data-stream"] === "string" ? { dataStream: args["data-stream"] } : {},
|
|
33274
|
+
...withProperty(args)
|
|
33275
|
+
});
|
|
33276
|
+
}
|
|
33277
|
+
})
|
|
33278
|
+
}
|
|
33279
|
+
});
|
|
32772
33280
|
|
|
32773
33281
|
// src/commands/ga4/index.ts
|
|
32774
|
-
var ga4Command =
|
|
33282
|
+
var ga4Command = defineCommand122({
|
|
32775
33283
|
meta: {
|
|
32776
33284
|
name: "ga4",
|
|
32777
33285
|
description: `Google Analytics 4. Report on a property, audit its config, and change what it measures.
|
|
@@ -32790,6 +33298,10 @@ Then stage changes (nothing is sent to Google Analytics until the chat completes
|
|
|
32790
33298
|
baker ga4 key-event create --json '{"eventName":"generate_lead","countingMethod":"ONCE_PER_EVENT"}'
|
|
32791
33299
|
baker ga4 custom-event create --json '{"destinationEvent":"quote_request","eventConditions":[...]}'
|
|
32792
33300
|
baker ga4 custom-dimension create --json '{"parameterName":"plan_tier","displayName":"Plan tier","scope":"EVENT"}'
|
|
33301
|
+
baker ga4 audience create --json '{"displayName":"Visited without demo", \u2026}' \u2014 a group to retarget
|
|
33302
|
+
baker ga4 property set --industry TECHNOLOGY \u2014 benchmarking cohort
|
|
33303
|
+
baker ga4 ads-link create --customer-id 123-456-7890 \u2014 what makes audiences targetable
|
|
33304
|
+
baker ga4 enhanced-measurement set --scrolls true --outbound-clicks true \u2014 automatic events, no tag needed
|
|
32793
33305
|
baker ga4 draft list \u2014 review everything staged
|
|
32794
33306
|
|
|
32795
33307
|
An applied change takes effect on the property immediately \u2014 there is no version to publish afterwards
|
|
@@ -32807,17 +33319,21 @@ Full guide: __tooling__/docs/tools/baker/ga4.md`
|
|
|
32807
33319
|
"custom-metric": customMetricCommand,
|
|
32808
33320
|
"custom-event": customEventCommand,
|
|
32809
33321
|
"data-retention": dataRetentionCommand,
|
|
33322
|
+
audience: audienceCommand,
|
|
33323
|
+
property: propertyCommand,
|
|
33324
|
+
"ads-link": adsLinkCommand,
|
|
33325
|
+
"enhanced-measurement": enhancedMeasurementCommand,
|
|
32810
33326
|
draft: draftCommand3
|
|
32811
33327
|
}
|
|
32812
33328
|
});
|
|
32813
33329
|
|
|
32814
33330
|
// src/commands/gsc/index.ts
|
|
32815
|
-
import { defineCommand as
|
|
33331
|
+
import { defineCommand as defineCommand126 } from "citty";
|
|
32816
33332
|
|
|
32817
33333
|
// src/commands/gsc/query.ts
|
|
32818
33334
|
import { appendFileSync as appendFileSync3, existsSync as existsSync8, readFileSync as readFileSync14, writeFileSync as writeFileSync5 } from "fs";
|
|
32819
33335
|
import { resolve as resolve3 } from "path";
|
|
32820
|
-
import { defineCommand as
|
|
33336
|
+
import { defineCommand as defineCommand123 } from "citty";
|
|
32821
33337
|
|
|
32822
33338
|
// src/commands/gsc/presets.ts
|
|
32823
33339
|
var GSC_PRESETS = [
|
|
@@ -33011,7 +33527,7 @@ function handleError3(err) {
|
|
|
33011
33527
|
});
|
|
33012
33528
|
process.exit(1);
|
|
33013
33529
|
}
|
|
33014
|
-
var queryCommand3 =
|
|
33530
|
+
var queryCommand3 = defineCommand123({
|
|
33015
33531
|
meta: {
|
|
33016
33532
|
name: "query",
|
|
33017
33533
|
description: `Run GSC Search Analytics queries. Preset-first with free-form escape hatch.
|
|
@@ -33089,7 +33605,7 @@ Free-form (escape hatch):
|
|
|
33089
33605
|
});
|
|
33090
33606
|
|
|
33091
33607
|
// src/commands/gsc/sitemaps.ts
|
|
33092
|
-
import { defineCommand as
|
|
33608
|
+
import { defineCommand as defineCommand124 } from "citty";
|
|
33093
33609
|
registerSchema({
|
|
33094
33610
|
command: "gsc.sitemaps",
|
|
33095
33611
|
description: "List sitemaps for a Search Console site. Check sitemap health and errors.",
|
|
@@ -33098,7 +33614,7 @@ registerSchema({
|
|
|
33098
33614
|
"no-cache": { type: "boolean", description: "Skip cache, hit API directly", required: false }
|
|
33099
33615
|
}
|
|
33100
33616
|
});
|
|
33101
|
-
var sitemapsCommand =
|
|
33617
|
+
var sitemapsCommand = defineCommand124({
|
|
33102
33618
|
meta: {
|
|
33103
33619
|
name: "sitemaps",
|
|
33104
33620
|
description: `List sitemaps for a site. Check health and errors.
|
|
@@ -33151,7 +33667,7 @@ Examples:
|
|
|
33151
33667
|
});
|
|
33152
33668
|
|
|
33153
33669
|
// src/commands/gsc/sites.ts
|
|
33154
|
-
import { defineCommand as
|
|
33670
|
+
import { defineCommand as defineCommand125 } from "citty";
|
|
33155
33671
|
registerSchema({
|
|
33156
33672
|
command: "gsc.sites",
|
|
33157
33673
|
description: "List the Search Console sites this company connected \u2014 there can be several, and every one of them is yours to query. Returns the site URLs the query and sitemaps commands take.",
|
|
@@ -33167,7 +33683,7 @@ function siteHints(sites) {
|
|
|
33167
33683
|
resources: sites.map((site) => ({ id: site.siteUrl, label: site.permissionLevel }))
|
|
33168
33684
|
});
|
|
33169
33685
|
}
|
|
33170
|
-
var sitesCommand =
|
|
33686
|
+
var sitesCommand = defineCommand125({
|
|
33171
33687
|
meta: {
|
|
33172
33688
|
name: "sites",
|
|
33173
33689
|
description: `List verified Search Console sites.
|
|
@@ -33215,7 +33731,7 @@ Examples:
|
|
|
33215
33731
|
});
|
|
33216
33732
|
|
|
33217
33733
|
// src/commands/gsc/index.ts
|
|
33218
|
-
var gscCommand =
|
|
33734
|
+
var gscCommand = defineCommand126({
|
|
33219
33735
|
meta: {
|
|
33220
33736
|
name: "gsc",
|
|
33221
33737
|
description: `Google Search Console commands. PPC-SEO arbitrage, brand halo analysis, negative keyword discovery.
|
|
@@ -33239,7 +33755,7 @@ Full guide: __tooling__/docs/tools/baker/gsc.md`
|
|
|
33239
33755
|
});
|
|
33240
33756
|
|
|
33241
33757
|
// src/commands/history/index.ts
|
|
33242
|
-
import { defineCommand as
|
|
33758
|
+
import { defineCommand as defineCommand127 } from "citty";
|
|
33243
33759
|
registerSchema({
|
|
33244
33760
|
command: "history.list",
|
|
33245
33761
|
description: "Start here: unified account history (audit log) \u2014 everything that changed on this account, newest first: publishes, chat lifecycle, backlog actions, team changes, setup links, tags, schedules, ad-platform writes, followed advertisers, media, creatives, reports, domains, and integrations. Use it to see what happened recently before planning work. Compact by default; add --full for raw metadata per entry.",
|
|
@@ -33294,7 +33810,7 @@ function parseBoundedInt2(raw, name, min, max) {
|
|
|
33294
33810
|
}
|
|
33295
33811
|
return value;
|
|
33296
33812
|
}
|
|
33297
|
-
var listCommand13 =
|
|
33813
|
+
var listCommand13 = defineCommand127({
|
|
33298
33814
|
meta: {
|
|
33299
33815
|
name: "list",
|
|
33300
33816
|
description: "List recent account changes (unified audit log), newest first."
|
|
@@ -33340,7 +33856,7 @@ var listCommand13 = defineCommand126({
|
|
|
33340
33856
|
}
|
|
33341
33857
|
}
|
|
33342
33858
|
});
|
|
33343
|
-
var historyCommand =
|
|
33859
|
+
var historyCommand = defineCommand127({
|
|
33344
33860
|
meta: {
|
|
33345
33861
|
name: "history",
|
|
33346
33862
|
description: `Unified account history (audit log): what changed, who did it, and when.
|
|
@@ -33350,7 +33866,7 @@ Full guide: __tooling__/docs/tools/baker/history.md`
|
|
|
33350
33866
|
});
|
|
33351
33867
|
|
|
33352
33868
|
// src/commands/hubspot/index.ts
|
|
33353
|
-
import { defineCommand as
|
|
33869
|
+
import { defineCommand as defineCommand128 } from "citty";
|
|
33354
33870
|
var EMBED_TYPES = ["legacy", "v4", "unknown"];
|
|
33355
33871
|
function failNotConnected(err) {
|
|
33356
33872
|
if (err instanceof ApiError && err.code === "FORBIDDEN" && err.message.includes(HUBSPOT_MISSING_GRANT_MARKER)) {
|
|
@@ -33504,7 +34020,7 @@ registerSchema({
|
|
|
33504
34020
|
}
|
|
33505
34021
|
}
|
|
33506
34022
|
});
|
|
33507
|
-
var formsListCommand =
|
|
34023
|
+
var formsListCommand = defineCommand128({
|
|
33508
34024
|
meta: {
|
|
33509
34025
|
name: "list",
|
|
33510
34026
|
description: "List HubSpot forms with embed type and post-submit action. Example: baker hubspot forms list --redirecting-only"
|
|
@@ -33549,7 +34065,7 @@ var formsListCommand = defineCommand127({
|
|
|
33549
34065
|
}
|
|
33550
34066
|
}
|
|
33551
34067
|
});
|
|
33552
|
-
var formsViewCommand =
|
|
34068
|
+
var formsViewCommand = defineCommand128({
|
|
33553
34069
|
meta: {
|
|
33554
34070
|
name: "view",
|
|
33555
34071
|
description: "Show one HubSpot form's fields and configuration. Example: baker hubspot forms view 1a2b3c"
|
|
@@ -33601,7 +34117,7 @@ var formsViewCommand = defineCommand127({
|
|
|
33601
34117
|
}
|
|
33602
34118
|
}
|
|
33603
34119
|
});
|
|
33604
|
-
var meetingsListCommand =
|
|
34120
|
+
var meetingsListCommand = defineCommand128({
|
|
33605
34121
|
meta: {
|
|
33606
34122
|
name: "list",
|
|
33607
34123
|
description: "List HubSpot meeting links (calendars). Example: baker hubspot meetings list"
|
|
@@ -33643,7 +34159,7 @@ var meetingsListCommand = defineCommand127({
|
|
|
33643
34159
|
}
|
|
33644
34160
|
}
|
|
33645
34161
|
});
|
|
33646
|
-
var meetingsViewCommand =
|
|
34162
|
+
var meetingsViewCommand = defineCommand128({
|
|
33647
34163
|
meta: {
|
|
33648
34164
|
name: "view",
|
|
33649
34165
|
description: "Show one HubSpot meeting link's booking fields. Example: baker hubspot meetings view discovery-call"
|
|
@@ -33687,7 +34203,7 @@ var meetingsViewCommand = defineCommand127({
|
|
|
33687
34203
|
}
|
|
33688
34204
|
}
|
|
33689
34205
|
});
|
|
33690
|
-
var formsSubmissionsCommand =
|
|
34206
|
+
var formsSubmissionsCommand = defineCommand128({
|
|
33691
34207
|
meta: {
|
|
33692
34208
|
name: "submissions",
|
|
33693
34209
|
description: "How many leads a form received, and when. Example: baker hubspot forms submissions <formId> --days 30"
|
|
@@ -33736,7 +34252,7 @@ var formsSubmissionsCommand = defineCommand127({
|
|
|
33736
34252
|
}
|
|
33737
34253
|
}
|
|
33738
34254
|
});
|
|
33739
|
-
var workflowsListCommand =
|
|
34255
|
+
var workflowsListCommand = defineCommand128({
|
|
33740
34256
|
meta: {
|
|
33741
34257
|
name: "list",
|
|
33742
34258
|
description: "List HubSpot workflows. Example: baker hubspot workflows list --enabled-only"
|
|
@@ -33801,7 +34317,7 @@ function workflowViewHints(workflow) {
|
|
|
33801
34317
|
}
|
|
33802
34318
|
return hints;
|
|
33803
34319
|
}
|
|
33804
|
-
var workflowsViewCommand =
|
|
34320
|
+
var workflowsViewCommand = defineCommand128({
|
|
33805
34321
|
meta: {
|
|
33806
34322
|
name: "view",
|
|
33807
34323
|
description: "Read one workflow's real configuration \u2014 enrolment, branches in order, and what each step writes. Example: baker hubspot workflows view 121183594 --full"
|
|
@@ -33828,7 +34344,7 @@ var workflowsViewCommand = defineCommand127({
|
|
|
33828
34344
|
}
|
|
33829
34345
|
}
|
|
33830
34346
|
});
|
|
33831
|
-
var pipelinesListCommand =
|
|
34347
|
+
var pipelinesListCommand = defineCommand128({
|
|
33832
34348
|
meta: {
|
|
33833
34349
|
name: "list",
|
|
33834
34350
|
description: "List HubSpot deal pipelines and their stages. Example: baker hubspot pipelines list"
|
|
@@ -33845,7 +34361,7 @@ var pipelinesListCommand = defineCommand127({
|
|
|
33845
34361
|
}
|
|
33846
34362
|
}
|
|
33847
34363
|
});
|
|
33848
|
-
var contactsSummaryCommand =
|
|
34364
|
+
var contactsSummaryCommand = defineCommand128({
|
|
33849
34365
|
meta: {
|
|
33850
34366
|
name: "summary",
|
|
33851
34367
|
description: "Whether recent leads are being worked, as counts. Example: baker hubspot contacts summary --days 30"
|
|
@@ -33915,7 +34431,7 @@ function contactLookupHints(data) {
|
|
|
33915
34431
|
}
|
|
33916
34432
|
return hints;
|
|
33917
34433
|
}
|
|
33918
|
-
var contactsLookupCommand =
|
|
34434
|
+
var contactsLookupCommand = defineCommand128({
|
|
33919
34435
|
meta: {
|
|
33920
34436
|
name: "lookup",
|
|
33921
34437
|
description: "Find one contact by email and see whether it was worked. Example: baker hubspot contacts lookup a@b.com"
|
|
@@ -33939,27 +34455,27 @@ var contactsLookupCommand = defineCommand127({
|
|
|
33939
34455
|
}
|
|
33940
34456
|
}
|
|
33941
34457
|
});
|
|
33942
|
-
var contactsCommand =
|
|
34458
|
+
var contactsCommand = defineCommand128({
|
|
33943
34459
|
meta: { name: "contacts", description: "Contacts on the connected HubSpot account." },
|
|
33944
34460
|
subCommands: { summary: contactsSummaryCommand, lookup: contactsLookupCommand }
|
|
33945
34461
|
});
|
|
33946
|
-
var formsCommand =
|
|
34462
|
+
var formsCommand = defineCommand128({
|
|
33947
34463
|
meta: { name: "forms", description: "HubSpot forms on the connected account." },
|
|
33948
34464
|
subCommands: { list: formsListCommand, view: formsViewCommand, submissions: formsSubmissionsCommand }
|
|
33949
34465
|
});
|
|
33950
|
-
var workflowsCommand =
|
|
34466
|
+
var workflowsCommand = defineCommand128({
|
|
33951
34467
|
meta: { name: "workflows", description: "HubSpot workflows on the connected account." },
|
|
33952
34468
|
subCommands: { list: workflowsListCommand, view: workflowsViewCommand }
|
|
33953
34469
|
});
|
|
33954
|
-
var pipelinesCommand =
|
|
34470
|
+
var pipelinesCommand = defineCommand128({
|
|
33955
34471
|
meta: { name: "pipelines", description: "HubSpot deal pipelines on the connected account." },
|
|
33956
34472
|
subCommands: { list: pipelinesListCommand }
|
|
33957
34473
|
});
|
|
33958
|
-
var meetingsCommand =
|
|
34474
|
+
var meetingsCommand = defineCommand128({
|
|
33959
34475
|
meta: { name: "meetings", description: "HubSpot meeting links (calendars) on the connected account." },
|
|
33960
34476
|
subCommands: { list: meetingsListCommand, view: meetingsViewCommand }
|
|
33961
34477
|
});
|
|
33962
|
-
var hubspotCommand =
|
|
34478
|
+
var hubspotCommand = defineCommand128({
|
|
33963
34479
|
meta: {
|
|
33964
34480
|
name: "hubspot",
|
|
33965
34481
|
description: `Read the connected HubSpot account \u2014 forms, the leads they received, workflows, deal pipelines and
|
|
@@ -33997,10 +34513,10 @@ Full guide: __tooling__/docs/tools/baker/hubspot.md`
|
|
|
33997
34513
|
});
|
|
33998
34514
|
|
|
33999
34515
|
// src/commands/images/index.ts
|
|
34000
|
-
import { defineCommand as
|
|
34516
|
+
import { defineCommand as defineCommand154 } from "citty";
|
|
34001
34517
|
|
|
34002
34518
|
// src/commands/images/crop.ts
|
|
34003
|
-
import { defineCommand as
|
|
34519
|
+
import { defineCommand as defineCommand129 } from "citty";
|
|
34004
34520
|
|
|
34005
34521
|
// src/lib/image/crop-sprite.ts
|
|
34006
34522
|
import sharp from "sharp";
|
|
@@ -34122,7 +34638,7 @@ function emitError2(err) {
|
|
|
34122
34638
|
}
|
|
34123
34639
|
process.exit(1);
|
|
34124
34640
|
}
|
|
34125
|
-
var cropCommand =
|
|
34641
|
+
var cropCommand = defineCommand129({
|
|
34126
34642
|
meta: {
|
|
34127
34643
|
name: "crop",
|
|
34128
34644
|
description: "Crop a rectangular region from an image.\n\nExample: baker images crop sprite.png --x 0 --y 0 --width 64 --height 64 --output icon.png"
|
|
@@ -34158,7 +34674,7 @@ var cropCommand = defineCommand128({
|
|
|
34158
34674
|
});
|
|
34159
34675
|
|
|
34160
34676
|
// src/commands/images/delete.ts
|
|
34161
|
-
import { defineCommand as
|
|
34677
|
+
import { defineCommand as defineCommand130 } from "citty";
|
|
34162
34678
|
registerSchema({
|
|
34163
34679
|
command: "images.delete",
|
|
34164
34680
|
description: "Delete an image by ID",
|
|
@@ -34172,7 +34688,7 @@ registerSchema({
|
|
|
34172
34688
|
}
|
|
34173
34689
|
}
|
|
34174
34690
|
});
|
|
34175
|
-
var deleteCommand2 =
|
|
34691
|
+
var deleteCommand2 = defineCommand130({
|
|
34176
34692
|
meta: {
|
|
34177
34693
|
name: "delete",
|
|
34178
34694
|
description: "Delete an image by ID. Use --dry-run to preview. Example: baker images delete j571abc123 --dry-run"
|
|
@@ -34213,7 +34729,7 @@ var deleteCommand2 = defineCommand129({
|
|
|
34213
34729
|
});
|
|
34214
34730
|
|
|
34215
34731
|
// src/commands/images/dimensions.ts
|
|
34216
|
-
import { defineCommand as
|
|
34732
|
+
import { defineCommand as defineCommand131 } from "citty";
|
|
34217
34733
|
|
|
34218
34734
|
// src/lib/image/dimensions.ts
|
|
34219
34735
|
import { imageSize } from "image-size";
|
|
@@ -34242,7 +34758,7 @@ registerSchema({
|
|
|
34242
34758
|
}
|
|
34243
34759
|
}
|
|
34244
34760
|
});
|
|
34245
|
-
var dimensionsCommand =
|
|
34761
|
+
var dimensionsCommand = defineCommand131({
|
|
34246
34762
|
meta: {
|
|
34247
34763
|
name: "dimensions",
|
|
34248
34764
|
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"
|
|
@@ -34298,7 +34814,7 @@ var dimensionsCommand = defineCommand130({
|
|
|
34298
34814
|
});
|
|
34299
34815
|
|
|
34300
34816
|
// src/commands/images/download.ts
|
|
34301
|
-
import { defineCommand as
|
|
34817
|
+
import { defineCommand as defineCommand132 } from "citty";
|
|
34302
34818
|
|
|
34303
34819
|
// src/commands/images/downloadPaths.ts
|
|
34304
34820
|
import { basename as basename2, extname as extname3, join as join6 } from "path";
|
|
@@ -34523,7 +35039,7 @@ function emitError3(err) {
|
|
|
34523
35039
|
writeJson({ ok: false, error: { code: "INTERNAL_ERROR", message: "Unexpected error" } });
|
|
34524
35040
|
process.exit(1);
|
|
34525
35041
|
}
|
|
34526
|
-
var downloadCommand =
|
|
35042
|
+
var downloadCommand = defineCommand132({
|
|
34527
35043
|
meta: {
|
|
34528
35044
|
name: "download",
|
|
34529
35045
|
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"
|
|
@@ -34556,7 +35072,7 @@ var downloadCommand = defineCommand131({
|
|
|
34556
35072
|
});
|
|
34557
35073
|
|
|
34558
35074
|
// src/commands/images/extract.ts
|
|
34559
|
-
import { defineCommand as
|
|
35075
|
+
import { defineCommand as defineCommand133 } from "citty";
|
|
34560
35076
|
|
|
34561
35077
|
// src/commands/images/autoIngest.ts
|
|
34562
35078
|
var AUTO_INGEST_MAX = {
|
|
@@ -34603,7 +35119,7 @@ registerSchema({
|
|
|
34603
35119
|
}
|
|
34604
35120
|
}
|
|
34605
35121
|
});
|
|
34606
|
-
var extractCommand =
|
|
35122
|
+
var extractCommand = defineCommand133({
|
|
34607
35123
|
meta: {
|
|
34608
35124
|
name: "extract",
|
|
34609
35125
|
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"
|
|
@@ -34658,7 +35174,7 @@ var extractCommand = defineCommand132({
|
|
|
34658
35174
|
});
|
|
34659
35175
|
|
|
34660
35176
|
// src/commands/images/find.ts
|
|
34661
|
-
import { defineCommand as
|
|
35177
|
+
import { defineCommand as defineCommand134 } from "citty";
|
|
34662
35178
|
|
|
34663
35179
|
// src/commands/images/providerHits.ts
|
|
34664
35180
|
function asRecord3(value) {
|
|
@@ -34796,7 +35312,7 @@ registerSchema({
|
|
|
34796
35312
|
full: { type: "boolean", description: "Include full metadata", required: false, default: false }
|
|
34797
35313
|
}
|
|
34798
35314
|
});
|
|
34799
|
-
var findCommand =
|
|
35315
|
+
var findCommand = defineCommand134({
|
|
34800
35316
|
meta: {
|
|
34801
35317
|
name: "find",
|
|
34802
35318
|
description: "Library-first fanout image search. Opt in to providers with --sources. `--fallback` short-circuits to externals only when library is thin. With --auto-ingest, ingested external hits return Baker-owned URLs.\n\nExample: baker images find 'office' --sources library,magnific --limit 20"
|
|
@@ -34869,7 +35385,7 @@ var findCommand = defineCommand133({
|
|
|
34869
35385
|
});
|
|
34870
35386
|
|
|
34871
35387
|
// src/commands/images/get.ts
|
|
34872
|
-
import { defineCommand as
|
|
35388
|
+
import { defineCommand as defineCommand135 } from "citty";
|
|
34873
35389
|
registerSchema({
|
|
34874
35390
|
command: "images.get",
|
|
34875
35391
|
description: "Get a single image by ID",
|
|
@@ -34877,7 +35393,7 @@ registerSchema({
|
|
|
34877
35393
|
id: { type: "string", description: "Image ID", required: true }
|
|
34878
35394
|
}
|
|
34879
35395
|
});
|
|
34880
|
-
var getCommand3 =
|
|
35396
|
+
var getCommand3 = defineCommand135({
|
|
34881
35397
|
meta: { name: "get", description: "Get a single image by ID. Example: baker images get j571abc123" },
|
|
34882
35398
|
args: {
|
|
34883
35399
|
id: { type: "positional", description: "Image ID", required: false },
|
|
@@ -34913,7 +35429,7 @@ var getCommand3 = defineCommand134({
|
|
|
34913
35429
|
});
|
|
34914
35430
|
|
|
34915
35431
|
// src/commands/images/gif.ts
|
|
34916
|
-
import { defineCommand as
|
|
35432
|
+
import { defineCommand as defineCommand136 } from "citty";
|
|
34917
35433
|
registerSchema({
|
|
34918
35434
|
command: "images.gif",
|
|
34919
35435
|
description: "Search Giphy for GIFs / reaction memes (paid social creative).",
|
|
@@ -34945,7 +35461,7 @@ registerSchema({
|
|
|
34945
35461
|
}
|
|
34946
35462
|
}
|
|
34947
35463
|
});
|
|
34948
|
-
var gifCommand =
|
|
35464
|
+
var gifCommand = defineCommand136({
|
|
34949
35465
|
meta: {
|
|
34950
35466
|
name: "gif",
|
|
34951
35467
|
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"
|
|
@@ -34992,7 +35508,7 @@ var gifCommand = defineCommand135({
|
|
|
34992
35508
|
});
|
|
34993
35509
|
|
|
34994
35510
|
// src/commands/images/google.ts
|
|
34995
|
-
import { defineCommand as
|
|
35511
|
+
import { defineCommand as defineCommand137 } from "citty";
|
|
34996
35512
|
var GOOGLE_ERROR_FIX = {
|
|
34997
35513
|
action: "use_different_resource",
|
|
34998
35514
|
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."
|
|
@@ -35032,7 +35548,7 @@ registerSchema({
|
|
|
35032
35548
|
}
|
|
35033
35549
|
}
|
|
35034
35550
|
});
|
|
35035
|
-
var googleCommand2 =
|
|
35551
|
+
var googleCommand2 = defineCommand137({
|
|
35036
35552
|
meta: {
|
|
35037
35553
|
name: "google",
|
|
35038
35554
|
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"
|
|
@@ -35105,7 +35621,7 @@ var googleCommand2 = defineCommand136({
|
|
|
35105
35621
|
});
|
|
35106
35622
|
|
|
35107
35623
|
// src/commands/images/group.ts
|
|
35108
|
-
import { defineCommand as
|
|
35624
|
+
import { defineCommand as defineCommand138 } from "citty";
|
|
35109
35625
|
|
|
35110
35626
|
// src/commands/mediaGroup.ts
|
|
35111
35627
|
async function runMediaGroupLookup(input) {
|
|
@@ -35158,7 +35674,7 @@ registerSchema({
|
|
|
35158
35674
|
"group-key": { type: "string", description: "The set key directly, when you already have it", required: false }
|
|
35159
35675
|
}
|
|
35160
35676
|
});
|
|
35161
|
-
var groupCommand =
|
|
35677
|
+
var groupCommand = defineCommand138({
|
|
35162
35678
|
meta: {
|
|
35163
35679
|
name: "group",
|
|
35164
35680
|
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>"
|
|
@@ -35178,7 +35694,7 @@ var groupCommand = defineCommand137({
|
|
|
35178
35694
|
});
|
|
35179
35695
|
|
|
35180
35696
|
// src/commands/images/icon.ts
|
|
35181
|
-
import { defineCommand as
|
|
35697
|
+
import { defineCommand as defineCommand139 } from "citty";
|
|
35182
35698
|
|
|
35183
35699
|
// src/commands/images/brandVerification.ts
|
|
35184
35700
|
function brandToken(domain) {
|
|
@@ -35275,7 +35791,7 @@ registerSchema({
|
|
|
35275
35791
|
full: { type: "boolean", description: "Include full metadata", required: false, default: false }
|
|
35276
35792
|
}
|
|
35277
35793
|
});
|
|
35278
|
-
var iconCommand =
|
|
35794
|
+
var iconCommand = defineCommand139({
|
|
35279
35795
|
meta: {
|
|
35280
35796
|
name: "icon",
|
|
35281
35797
|
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'"
|
|
@@ -35345,7 +35861,7 @@ var iconCommand = defineCommand138({
|
|
|
35345
35861
|
});
|
|
35346
35862
|
|
|
35347
35863
|
// src/commands/images/ingest.ts
|
|
35348
|
-
import { defineCommand as
|
|
35864
|
+
import { defineCommand as defineCommand140 } from "citty";
|
|
35349
35865
|
var SOURCE_VALUES = imageSourceSchema.options.join(" | ");
|
|
35350
35866
|
registerSchema({
|
|
35351
35867
|
command: "images.ingest",
|
|
@@ -35360,7 +35876,7 @@ registerSchema({
|
|
|
35360
35876
|
fields: { type: "string", description: "Comma-separated field names to include", required: false }
|
|
35361
35877
|
}
|
|
35362
35878
|
});
|
|
35363
|
-
var ingestCommand =
|
|
35879
|
+
var ingestCommand = defineCommand140({
|
|
35364
35880
|
meta: {
|
|
35365
35881
|
name: "ingest",
|
|
35366
35882
|
description: "Download a remote URL and store it in the library. Hash-deduped on bytes + externalId.\n\nExample: baker images ingest https://img.freepik.com/free-photo/xyz.jpg --source magnific --external-id 12345"
|
|
@@ -35429,7 +35945,7 @@ var ingestCommand = defineCommand139({
|
|
|
35429
35945
|
});
|
|
35430
35946
|
|
|
35431
35947
|
// src/commands/images/layerize.ts
|
|
35432
|
-
import { defineCommand as
|
|
35948
|
+
import { defineCommand as defineCommand141 } from "citty";
|
|
35433
35949
|
registerSchema({
|
|
35434
35950
|
command: "images.layerize",
|
|
35435
35951
|
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.",
|
|
@@ -35493,7 +36009,7 @@ async function pollUntilSettled(imageId, maxWait) {
|
|
|
35493
36009
|
}
|
|
35494
36010
|
return null;
|
|
35495
36011
|
}
|
|
35496
|
-
var layerizeCommand =
|
|
36012
|
+
var layerizeCommand = defineCommand141({
|
|
35497
36013
|
meta: {
|
|
35498
36014
|
name: "layerize",
|
|
35499
36015
|
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'"
|
|
@@ -35562,7 +36078,7 @@ registerSchema({
|
|
|
35562
36078
|
full: { type: "boolean", description: "Include geometry and typography for every layer", required: false }
|
|
35563
36079
|
}
|
|
35564
36080
|
});
|
|
35565
|
-
var layersCommand =
|
|
36081
|
+
var layersCommand = defineCommand141({
|
|
35566
36082
|
meta: {
|
|
35567
36083
|
name: "layers",
|
|
35568
36084
|
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"
|
|
@@ -35602,7 +36118,7 @@ var layersCommand = defineCommand140({
|
|
|
35602
36118
|
});
|
|
35603
36119
|
|
|
35604
36120
|
// src/commands/images/library.ts
|
|
35605
|
-
import { defineCommand as
|
|
36121
|
+
import { defineCommand as defineCommand142 } from "citty";
|
|
35606
36122
|
registerSchema({
|
|
35607
36123
|
command: "images.library",
|
|
35608
36124
|
description: "Search the company image library. Returns only ready images.",
|
|
@@ -35628,7 +36144,7 @@ registerSchema({
|
|
|
35628
36144
|
}
|
|
35629
36145
|
}
|
|
35630
36146
|
});
|
|
35631
|
-
var libraryCommand =
|
|
36147
|
+
var libraryCommand = defineCommand142({
|
|
35632
36148
|
meta: {
|
|
35633
36149
|
name: "library",
|
|
35634
36150
|
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"
|
|
@@ -35691,7 +36207,7 @@ var libraryCommand = defineCommand141({
|
|
|
35691
36207
|
});
|
|
35692
36208
|
|
|
35693
36209
|
// src/commands/images/logo.ts
|
|
35694
|
-
import { defineCommand as
|
|
36210
|
+
import { defineCommand as defineCommand143 } from "citty";
|
|
35695
36211
|
registerSchema({
|
|
35696
36212
|
command: "images.logo",
|
|
35697
36213
|
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.",
|
|
@@ -35719,7 +36235,7 @@ registerSchema({
|
|
|
35719
36235
|
full: { type: "boolean", description: "Include full metadata", required: false, default: false }
|
|
35720
36236
|
}
|
|
35721
36237
|
});
|
|
35722
|
-
var logoCommand =
|
|
36238
|
+
var logoCommand = defineCommand143({
|
|
35723
36239
|
meta: {
|
|
35724
36240
|
name: "logo",
|
|
35725
36241
|
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"
|
|
@@ -35792,7 +36308,7 @@ var logoCommand = defineCommand142({
|
|
|
35792
36308
|
});
|
|
35793
36309
|
|
|
35794
36310
|
// src/commands/images/normalize.ts
|
|
35795
|
-
import { defineCommand as
|
|
36311
|
+
import { defineCommand as defineCommand144 } from "citty";
|
|
35796
36312
|
|
|
35797
36313
|
// src/lib/image/color-changer.ts
|
|
35798
36314
|
import quantize from "quantize";
|
|
@@ -36524,7 +37040,7 @@ function coerceRawArgs(args) {
|
|
|
36524
37040
|
"dry-run": bool(args["dry-run"])
|
|
36525
37041
|
};
|
|
36526
37042
|
}
|
|
36527
|
-
var normalizeCommand2 =
|
|
37043
|
+
var normalizeCommand2 = defineCommand144({
|
|
36528
37044
|
meta: {
|
|
36529
37045
|
name: "normalize",
|
|
36530
37046
|
description: `Normalize logos / images: declarative recolor + bg removal + trim + resize. Operates on local files; writes in-place by default.
|
|
@@ -36579,7 +37095,7 @@ Examples:
|
|
|
36579
37095
|
});
|
|
36580
37096
|
|
|
36581
37097
|
// src/commands/images/pinterest.ts
|
|
36582
|
-
import { defineCommand as
|
|
37098
|
+
import { defineCommand as defineCommand145 } from "citty";
|
|
36583
37099
|
registerSchema({
|
|
36584
37100
|
command: "images.pinterest",
|
|
36585
37101
|
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.",
|
|
@@ -36599,7 +37115,7 @@ registerSchema({
|
|
|
36599
37115
|
}
|
|
36600
37116
|
}
|
|
36601
37117
|
});
|
|
36602
|
-
var pinterestCommand =
|
|
37118
|
+
var pinterestCommand = defineCommand145({
|
|
36603
37119
|
meta: {
|
|
36604
37120
|
name: "pinterest",
|
|
36605
37121
|
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'"
|
|
@@ -36656,7 +37172,7 @@ var pinterestCommand = defineCommand144({
|
|
|
36656
37172
|
});
|
|
36657
37173
|
|
|
36658
37174
|
// src/commands/images/screenshot.ts
|
|
36659
|
-
import { defineCommand as
|
|
37175
|
+
import { defineCommand as defineCommand146 } from "citty";
|
|
36660
37176
|
registerSchema({
|
|
36661
37177
|
command: "images.screenshot",
|
|
36662
37178
|
description: "Capture a website screenshot via ScreenshotOne. Auto-ingests on success.",
|
|
@@ -36675,7 +37191,7 @@ registerSchema({
|
|
|
36675
37191
|
full: { type: "boolean", description: "Include full metadata", required: false, default: false }
|
|
36676
37192
|
}
|
|
36677
37193
|
});
|
|
36678
|
-
var screenshotCommand =
|
|
37194
|
+
var screenshotCommand = defineCommand146({
|
|
36679
37195
|
meta: {
|
|
36680
37196
|
name: "screenshot",
|
|
36681
37197
|
description: "Screenshot a URL via ScreenshotOne. $0.009/capture. Auto-ingests to library.\n\nExample: baker images screenshot https://stripe.com --full-page"
|
|
@@ -36739,7 +37255,7 @@ var screenshotCommand = defineCommand145({
|
|
|
36739
37255
|
});
|
|
36740
37256
|
|
|
36741
37257
|
// src/commands/images/search.ts
|
|
36742
|
-
import { defineCommand as
|
|
37258
|
+
import { defineCommand as defineCommand147 } from "citty";
|
|
36743
37259
|
registerSchema({
|
|
36744
37260
|
command: "images.search",
|
|
36745
37261
|
description: "Search images by text query. Only returns ready images.",
|
|
@@ -36755,7 +37271,7 @@ registerSchema({
|
|
|
36755
37271
|
tags: { type: "string", description: "Comma-separated tags to filter by", required: false }
|
|
36756
37272
|
}
|
|
36757
37273
|
});
|
|
36758
|
-
var searchCommand =
|
|
37274
|
+
var searchCommand = defineCommand147({
|
|
36759
37275
|
meta: {
|
|
36760
37276
|
name: "search",
|
|
36761
37277
|
description: "Semantic search images by text query. Uses hybrid BM25 + vector + reranking. Example: baker images search 'hero banner' --aspect-ratio 16:9 --tags logo"
|
|
@@ -36815,7 +37331,7 @@ var searchCommand = defineCommand146({
|
|
|
36815
37331
|
});
|
|
36816
37332
|
|
|
36817
37333
|
// src/commands/images/sticker.ts
|
|
36818
|
-
import { defineCommand as
|
|
37334
|
+
import { defineCommand as defineCommand148 } from "citty";
|
|
36819
37335
|
registerSchema({
|
|
36820
37336
|
command: "images.sticker",
|
|
36821
37337
|
description: "Search Giphy stickers \u2014 transparent-background overlays for ad creative.",
|
|
@@ -36847,7 +37363,7 @@ registerSchema({
|
|
|
36847
37363
|
}
|
|
36848
37364
|
}
|
|
36849
37365
|
});
|
|
36850
|
-
var stickerCommand =
|
|
37366
|
+
var stickerCommand = defineCommand148({
|
|
36851
37367
|
meta: {
|
|
36852
37368
|
name: "sticker",
|
|
36853
37369
|
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"
|
|
@@ -36894,7 +37410,7 @@ var stickerCommand = defineCommand147({
|
|
|
36894
37410
|
});
|
|
36895
37411
|
|
|
36896
37412
|
// src/commands/images/stock.ts
|
|
36897
|
-
import { defineCommand as
|
|
37413
|
+
import { defineCommand as defineCommand149 } from "citty";
|
|
36898
37414
|
var STOCK_ERROR_FIX = {
|
|
36899
37415
|
action: "use_different_resource",
|
|
36900
37416
|
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."
|
|
@@ -36971,7 +37487,7 @@ function buildStockRequest(query, args) {
|
|
|
36971
37487
|
if (args.context) body.descriptionContext = args.context;
|
|
36972
37488
|
return body;
|
|
36973
37489
|
}
|
|
36974
|
-
var stockCommand =
|
|
37490
|
+
var stockCommand = defineCommand149({
|
|
36975
37491
|
meta: {
|
|
36976
37492
|
name: "stock",
|
|
36977
37493
|
description: "Stock search via Magnific \u2014 Freepik's developer API (~250M assets: photos, vectors, illustrations, icons, PSDs). $0.002/req. With --auto-ingest, ingested hits return Baker-owned URLs.\n\nExamples:\n baker images stock 'minimalist office'\n baker images stock 'flat office workers' --type vector\n baker images stock 'hero photo of a kitchen' --type photo --orientation landscape --ai exclude\n baker images stock 'brand pattern' --color '#0a0a0a' --license freemium --auto-ingest 2"
|
|
@@ -37044,7 +37560,7 @@ var stockCommand = defineCommand148({
|
|
|
37044
37560
|
});
|
|
37045
37561
|
|
|
37046
37562
|
// src/lib/tags-command.ts
|
|
37047
|
-
import { defineCommand as
|
|
37563
|
+
import { defineCommand as defineCommand150 } from "citty";
|
|
37048
37564
|
function makeTagsCommand(command, label, endpoint) {
|
|
37049
37565
|
registerSchema({
|
|
37050
37566
|
command: `${command}.tags`,
|
|
@@ -37053,7 +37569,7 @@ function makeTagsCommand(command, label, endpoint) {
|
|
|
37053
37569
|
output: { type: "string", description: "Output format: md|json", required: false, default: "md" }
|
|
37054
37570
|
}
|
|
37055
37571
|
});
|
|
37056
|
-
return
|
|
37572
|
+
return defineCommand150({
|
|
37057
37573
|
meta: {
|
|
37058
37574
|
name: "tags",
|
|
37059
37575
|
description: `List the available ${label} tag names (defaults + company custom tags). Use before filtering with --tags. Example: baker ${command} tags`
|
|
@@ -37089,7 +37605,7 @@ function makeTagsCommand(command, label, endpoint) {
|
|
|
37089
37605
|
var tagsCommand2 = makeTagsCommand("images", "image", "/api/images/tags");
|
|
37090
37606
|
|
|
37091
37607
|
// src/commands/images/upload.ts
|
|
37092
|
-
import { defineCommand as
|
|
37608
|
+
import { defineCommand as defineCommand151 } from "citty";
|
|
37093
37609
|
registerSchema({
|
|
37094
37610
|
command: "images.upload",
|
|
37095
37611
|
description: "Upload an image to the library \u2014 local file path or remote http(s) URL.",
|
|
@@ -37127,7 +37643,7 @@ registerSchema({
|
|
|
37127
37643
|
function isRemoteUrl2(value) {
|
|
37128
37644
|
return /^https?:\/\//i.test(value);
|
|
37129
37645
|
}
|
|
37130
|
-
var uploadCommand =
|
|
37646
|
+
var uploadCommand = defineCommand151({
|
|
37131
37647
|
meta: {
|
|
37132
37648
|
name: "upload",
|
|
37133
37649
|
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'"
|
|
@@ -37220,7 +37736,7 @@ async function uploadLocal(target, args) {
|
|
|
37220
37736
|
}
|
|
37221
37737
|
|
|
37222
37738
|
// src/commands/images/upscale.ts
|
|
37223
|
-
import { defineCommand as
|
|
37739
|
+
import { defineCommand as defineCommand152 } from "citty";
|
|
37224
37740
|
registerSchema({
|
|
37225
37741
|
command: "images.upscale",
|
|
37226
37742
|
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).",
|
|
@@ -37235,7 +37751,7 @@ registerSchema({
|
|
|
37235
37751
|
}
|
|
37236
37752
|
});
|
|
37237
37753
|
var POLL_INTERVAL_MS4 = 1500;
|
|
37238
|
-
var upscaleCommand =
|
|
37754
|
+
var upscaleCommand = defineCommand152({
|
|
37239
37755
|
meta: {
|
|
37240
37756
|
name: "upscale",
|
|
37241
37757
|
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"
|
|
@@ -37290,7 +37806,7 @@ var upscaleCommand = defineCommand151({
|
|
|
37290
37806
|
});
|
|
37291
37807
|
|
|
37292
37808
|
// src/commands/images/use.ts
|
|
37293
|
-
import { defineCommand as
|
|
37809
|
+
import { defineCommand as defineCommand153 } from "citty";
|
|
37294
37810
|
registerSchema({
|
|
37295
37811
|
command: "images.use",
|
|
37296
37812
|
description: "Ingest a URL and wait for the library record to be ready.",
|
|
@@ -37319,7 +37835,7 @@ function emitReady(ingestResult, doc, args) {
|
|
|
37319
37835
|
args.full === true
|
|
37320
37836
|
);
|
|
37321
37837
|
}
|
|
37322
|
-
var useCommand =
|
|
37838
|
+
var useCommand = defineCommand153({
|
|
37323
37839
|
meta: {
|
|
37324
37840
|
name: "use",
|
|
37325
37841
|
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"
|
|
@@ -37368,7 +37884,7 @@ var useCommand = defineCommand152({
|
|
|
37368
37884
|
});
|
|
37369
37885
|
|
|
37370
37886
|
// src/commands/images/index.ts
|
|
37371
|
-
var imagesCommand =
|
|
37887
|
+
var imagesCommand = defineCommand154({
|
|
37372
37888
|
meta: {
|
|
37373
37889
|
name: "images",
|
|
37374
37890
|
description: `Find, source, and normalize images. Subcommands route by provider so cost + license are explicit.
|
|
@@ -37446,12 +37962,12 @@ Full guide: __tooling__/docs/tools/baker/images.md`
|
|
|
37446
37962
|
});
|
|
37447
37963
|
|
|
37448
37964
|
// src/commands/landing/index.ts
|
|
37449
|
-
import { defineCommand as
|
|
37965
|
+
import { defineCommand as defineCommand165 } from "citty";
|
|
37450
37966
|
|
|
37451
37967
|
// src/commands/landing/critique.ts
|
|
37452
37968
|
import { readdir as readdir9, stat as stat6 } from "fs/promises";
|
|
37453
37969
|
import path29 from "path";
|
|
37454
|
-
import { defineCommand as
|
|
37970
|
+
import { defineCommand as defineCommand155 } from "citty";
|
|
37455
37971
|
|
|
37456
37972
|
// src/engine/landing/lib/constants.ts
|
|
37457
37973
|
var OVERUSED_FONTS = /* @__PURE__ */ new Set([
|
|
@@ -38634,7 +39150,7 @@ function fail5(code, message, fix) {
|
|
|
38634
39150
|
);
|
|
38635
39151
|
process.exit(2);
|
|
38636
39152
|
}
|
|
38637
|
-
var critiqueCommand2 =
|
|
39153
|
+
var critiqueCommand2 = defineCommand155({
|
|
38638
39154
|
meta: {
|
|
38639
39155
|
name: "critique",
|
|
38640
39156
|
description: "Start here: `baker landing critique <slug>` after building or editing a landing. Deterministic design-quality critic (ADVISORY \u2014 findings never fail it). Flags the known AI design tells (gradient text, overused fonts, side-tab borders, cream palettes, buzzword copy, broken images) tiered block/warn/advisory, respecting the client's BRAND.md as the allowlist. Also records the critique that publishing requires \u2014 run it before finishing a landing."
|
|
@@ -38743,10 +39259,10 @@ async function isDir(p) {
|
|
|
38743
39259
|
}
|
|
38744
39260
|
|
|
38745
39261
|
// src/commands/landing/inspiration/index.ts
|
|
38746
|
-
import { defineCommand as
|
|
39262
|
+
import { defineCommand as defineCommand164 } from "citty";
|
|
38747
39263
|
|
|
38748
39264
|
// src/commands/landing/inspiration/add.ts
|
|
38749
|
-
import { defineCommand as
|
|
39265
|
+
import { defineCommand as defineCommand156 } from "citty";
|
|
38750
39266
|
|
|
38751
39267
|
// src/commands/landing/inspiration/shared.ts
|
|
38752
39268
|
var INSPIRATION_HINTS = {
|
|
@@ -38828,7 +39344,7 @@ registerSchema({
|
|
|
38828
39344
|
note: { type: "string", description: "Why this page is worth keeping", required: false }
|
|
38829
39345
|
}
|
|
38830
39346
|
});
|
|
38831
|
-
var addCommand =
|
|
39347
|
+
var addCommand = defineCommand156({
|
|
38832
39348
|
meta: {
|
|
38833
39349
|
name: "add",
|
|
38834
39350
|
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'"
|
|
@@ -38870,7 +39386,7 @@ var addCommand = defineCommand155({
|
|
|
38870
39386
|
// src/commands/landing/inspiration/code.ts
|
|
38871
39387
|
import { mkdir as mkdir10, writeFile as writeFile14 } from "fs/promises";
|
|
38872
39388
|
import path30 from "path";
|
|
38873
|
-
import { defineCommand as
|
|
39389
|
+
import { defineCommand as defineCommand157 } from "citty";
|
|
38874
39390
|
registerSchema({
|
|
38875
39391
|
command: "landing.inspiration.code",
|
|
38876
39392
|
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. Consulting a section records it, and `baker landing critique` blocks a publish that ships its copy verbatim.",
|
|
@@ -38879,7 +39395,7 @@ registerSchema({
|
|
|
38879
39395
|
full: { type: "boolean", description: "Print the markup inline as well as writing it", required: false }
|
|
38880
39396
|
}
|
|
38881
39397
|
});
|
|
38882
|
-
var codeCommand =
|
|
39398
|
+
var codeCommand = defineCommand157({
|
|
38883
39399
|
meta: {
|
|
38884
39400
|
name: "code",
|
|
38885
39401
|
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."
|
|
@@ -38936,7 +39452,7 @@ var codeCommand = defineCommand156({
|
|
|
38936
39452
|
});
|
|
38937
39453
|
|
|
38938
39454
|
// src/commands/landing/inspiration/favorites.ts
|
|
38939
|
-
import { defineCommand as
|
|
39455
|
+
import { defineCommand as defineCommand158 } from "citty";
|
|
38940
39456
|
registerSchema({
|
|
38941
39457
|
command: "landing.inspiration.favorites",
|
|
38942
39458
|
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.",
|
|
@@ -38950,7 +39466,7 @@ registerSchema({
|
|
|
38950
39466
|
}
|
|
38951
39467
|
}
|
|
38952
39468
|
});
|
|
38953
|
-
var favoritesCommand =
|
|
39469
|
+
var favoritesCommand = defineCommand158({
|
|
38954
39470
|
meta: {
|
|
38955
39471
|
name: "favorites",
|
|
38956
39472
|
description: "List this company's saved reference sections. Example: baker landing inspiration favorites --type hero,pricing"
|
|
@@ -39030,7 +39546,7 @@ registerSchema({
|
|
|
39030
39546
|
note: { type: "string", description: "Why this is worth keeping", required: false }
|
|
39031
39547
|
}
|
|
39032
39548
|
});
|
|
39033
|
-
var favoriteCommand =
|
|
39549
|
+
var favoriteCommand = defineCommand158({
|
|
39034
39550
|
meta: {
|
|
39035
39551
|
name: "favorite",
|
|
39036
39552
|
description: "Save a reference section to this company. Example: baker landing inspiration favorite k57abc\u2026"
|
|
@@ -39068,7 +39584,7 @@ registerSchema({
|
|
|
39068
39584
|
page: { type: "boolean", description: "Treat the id as a page rather than a section", required: false }
|
|
39069
39585
|
}
|
|
39070
39586
|
});
|
|
39071
|
-
var unfavoriteCommand =
|
|
39587
|
+
var unfavoriteCommand = defineCommand158({
|
|
39072
39588
|
meta: {
|
|
39073
39589
|
name: "unfavorite",
|
|
39074
39590
|
description: "Remove a reference section from this company's saved set. Example: baker landing inspiration unfavorite k57abc\u2026"
|
|
@@ -39090,7 +39606,7 @@ var unfavoriteCommand = defineCommand157({
|
|
|
39090
39606
|
});
|
|
39091
39607
|
|
|
39092
39608
|
// src/commands/landing/inspiration/page.ts
|
|
39093
|
-
import { defineCommand as
|
|
39609
|
+
import { defineCommand as defineCommand159 } from "citty";
|
|
39094
39610
|
registerSchema({
|
|
39095
39611
|
command: "landing.inspiration.page",
|
|
39096
39612
|
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.",
|
|
@@ -39107,7 +39623,7 @@ registerSchema({
|
|
|
39107
39623
|
}
|
|
39108
39624
|
}
|
|
39109
39625
|
});
|
|
39110
|
-
var pageCommand =
|
|
39626
|
+
var pageCommand = defineCommand159({
|
|
39111
39627
|
meta: {
|
|
39112
39628
|
name: "page",
|
|
39113
39629
|
description: "Show how a reference page sequences its sections. Example: baker landing inspiration page j91xyz\u2026 \u2014 the blueprint, not the pixels."
|
|
@@ -39172,7 +39688,7 @@ var pageCommand = defineCommand158({
|
|
|
39172
39688
|
// src/commands/landing/inspiration/scrape.ts
|
|
39173
39689
|
import { readFile as readFile23 } from "fs/promises";
|
|
39174
39690
|
import path33 from "path";
|
|
39175
|
-
import { defineCommand as
|
|
39691
|
+
import { defineCommand as defineCommand160 } from "citty";
|
|
39176
39692
|
|
|
39177
39693
|
// src/engine/landing/lib/capturedReferences.ts
|
|
39178
39694
|
var MAX_STRINGS_PER_SECTION = 40;
|
|
@@ -41313,7 +41829,7 @@ registerSchema({
|
|
|
41313
41829
|
report: { type: "boolean", description: "Write report.html. `--no-report` to skip", required: false }
|
|
41314
41830
|
}
|
|
41315
41831
|
});
|
|
41316
|
-
var scrapeCommand =
|
|
41832
|
+
var scrapeCommand = defineCommand160({
|
|
41317
41833
|
meta: {
|
|
41318
41834
|
name: "scrape",
|
|
41319
41835
|
description: "Capture a landing page to a directory, now. Example: baker landing inspiration scrape https://linear.app --out .baker/inspiration/linear.app"
|
|
@@ -41415,7 +41931,7 @@ var scrapeCommand = defineCommand159({
|
|
|
41415
41931
|
|
|
41416
41932
|
// src/commands/landing/inspiration/search.ts
|
|
41417
41933
|
import path35 from "path";
|
|
41418
|
-
import { defineCommand as
|
|
41934
|
+
import { defineCommand as defineCommand161 } from "citty";
|
|
41419
41935
|
|
|
41420
41936
|
// src/commands/landing/inspiration/shot.ts
|
|
41421
41937
|
import { mkdir as mkdir12, writeFile as writeFile17 } from "fs/promises";
|
|
@@ -41552,7 +42068,7 @@ async function downloadShots(results) {
|
|
|
41552
42068
|
);
|
|
41553
42069
|
return saved;
|
|
41554
42070
|
}
|
|
41555
|
-
var searchCommand2 =
|
|
42071
|
+
var searchCommand2 = defineCommand161({
|
|
41556
42072
|
meta: {
|
|
41557
42073
|
name: "search",
|
|
41558
42074
|
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"
|
|
@@ -41650,7 +42166,7 @@ var searchCommand2 = defineCommand160({
|
|
|
41650
42166
|
});
|
|
41651
42167
|
|
|
41652
42168
|
// src/commands/landing/inspiration/sequences.ts
|
|
41653
|
-
import { defineCommand as
|
|
42169
|
+
import { defineCommand as defineCommand162 } from "citty";
|
|
41654
42170
|
var COMPACT_TRANSITIONS = 12;
|
|
41655
42171
|
var COMPACT_ENDS = 5;
|
|
41656
42172
|
var MAX_PAGES = 50;
|
|
@@ -41724,7 +42240,7 @@ function sequencesHints(data, { scope, full }) {
|
|
|
41724
42240
|
if (scope === "favorites") hints.push(...favoritesScopeHints(data.favoritesHealth, data.pagesReturned));
|
|
41725
42241
|
return hints;
|
|
41726
42242
|
}
|
|
41727
|
-
var sequencesCommand =
|
|
42243
|
+
var sequencesCommand = defineCommand162({
|
|
41728
42244
|
meta: {
|
|
41729
42245
|
name: "sequences",
|
|
41730
42246
|
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."
|
|
@@ -41774,7 +42290,7 @@ var sequencesCommand = defineCommand161({
|
|
|
41774
42290
|
|
|
41775
42291
|
// src/commands/landing/inspiration/view.ts
|
|
41776
42292
|
import path36 from "path";
|
|
41777
|
-
import { defineCommand as
|
|
42293
|
+
import { defineCommand as defineCommand163 } from "citty";
|
|
41778
42294
|
registerSchema({
|
|
41779
42295
|
command: "landing.inspiration.view",
|
|
41780
42296
|
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.",
|
|
@@ -41787,7 +42303,7 @@ registerSchema({
|
|
|
41787
42303
|
}
|
|
41788
42304
|
}
|
|
41789
42305
|
});
|
|
41790
|
-
var viewCommand2 =
|
|
42306
|
+
var viewCommand2 = defineCommand163({
|
|
41791
42307
|
meta: {
|
|
41792
42308
|
name: "view",
|
|
41793
42309
|
description: "Full detail for one reference section. Example: baker landing inspiration view k57abc\u2026 \u2014 read the screenshots it saves before you build."
|
|
@@ -41871,7 +42387,7 @@ var viewCommand2 = defineCommand162({
|
|
|
41871
42387
|
});
|
|
41872
42388
|
|
|
41873
42389
|
// src/commands/landing/inspiration/index.ts
|
|
41874
|
-
var inspirationCommand =
|
|
42390
|
+
var inspirationCommand = defineCommand164({
|
|
41875
42391
|
meta: {
|
|
41876
42392
|
name: "inspiration",
|
|
41877
42393
|
description: `Reference library of real landing-page sections \u2014 look at how good pages actually solve a problem before you design one.
|
|
@@ -41916,7 +42432,7 @@ Full guide: __tooling__/docs/tools/baker/landing.md`
|
|
|
41916
42432
|
});
|
|
41917
42433
|
|
|
41918
42434
|
// src/commands/landing/index.ts
|
|
41919
|
-
var landingCommand =
|
|
42435
|
+
var landingCommand = defineCommand165({
|
|
41920
42436
|
meta: {
|
|
41921
42437
|
name: "landing",
|
|
41922
42438
|
description: `Design-quality tools for landing pages (src/pages/<slug>/).
|
|
@@ -41934,7 +42450,7 @@ Subcommands:
|
|
|
41934
42450
|
});
|
|
41935
42451
|
|
|
41936
42452
|
// src/commands/mcp/index.ts
|
|
41937
|
-
import { defineCommand as
|
|
42453
|
+
import { defineCommand as defineCommand166 } from "citty";
|
|
41938
42454
|
|
|
41939
42455
|
// src/commands/mcp/platforms.ts
|
|
41940
42456
|
function readsKey(label) {
|
|
@@ -42003,7 +42519,7 @@ registerSchema({
|
|
|
42003
42519
|
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.",
|
|
42004
42520
|
args: {}
|
|
42005
42521
|
});
|
|
42006
|
-
var connectedCommand =
|
|
42522
|
+
var connectedCommand = defineCommand166({
|
|
42007
42523
|
meta: {
|
|
42008
42524
|
name: "connected",
|
|
42009
42525
|
description: `Everything this chat can reach \u2014 managed integrations, custom MCP servers, and connected platforms.
|
|
@@ -42062,7 +42578,7 @@ registerSchema({
|
|
|
42062
42578
|
description: "List the custom MCP servers this company's chats see (org + company + your own user scope).",
|
|
42063
42579
|
args: {}
|
|
42064
42580
|
});
|
|
42065
|
-
var listCommand14 =
|
|
42581
|
+
var listCommand14 = defineCommand166({
|
|
42066
42582
|
meta: { name: "list", description: "List custom MCP servers visible to this company's chats." },
|
|
42067
42583
|
run: async () => {
|
|
42068
42584
|
try {
|
|
@@ -42099,7 +42615,7 @@ registerSchema({
|
|
|
42099
42615
|
header: { type: "string", description: 'Auth header "Key: Value" (repeatable)', required: false }
|
|
42100
42616
|
}
|
|
42101
42617
|
});
|
|
42102
|
-
var addCommand2 =
|
|
42618
|
+
var addCommand2 = defineCommand166({
|
|
42103
42619
|
meta: {
|
|
42104
42620
|
name: "add",
|
|
42105
42621
|
description: `Register a custom MCP server. Tools appear as mcp__<name>__* on the NEXT message.
|
|
@@ -42151,7 +42667,7 @@ registerSchema({
|
|
|
42151
42667
|
description: "Remove a company custom MCP server by name.",
|
|
42152
42668
|
args: { name: { type: "string", description: "Server name to remove", required: true } }
|
|
42153
42669
|
});
|
|
42154
|
-
var removeCommand4 =
|
|
42670
|
+
var removeCommand4 = defineCommand166({
|
|
42155
42671
|
meta: {
|
|
42156
42672
|
name: "remove",
|
|
42157
42673
|
description: `Remove a company custom MCP server by name.
|
|
@@ -42173,7 +42689,7 @@ Example:
|
|
|
42173
42689
|
}
|
|
42174
42690
|
}
|
|
42175
42691
|
});
|
|
42176
|
-
var mcpCommand =
|
|
42692
|
+
var mcpCommand = defineCommand166({
|
|
42177
42693
|
meta: {
|
|
42178
42694
|
name: "mcp",
|
|
42179
42695
|
description: `Third-party tools for this company \u2014 see what's connected, register custom HTTPS MCP endpoints.
|
|
@@ -42199,10 +42715,10 @@ Full guide: __tooling__/docs/tools/baker/mcp.md`
|
|
|
42199
42715
|
});
|
|
42200
42716
|
|
|
42201
42717
|
// src/commands/research/index.ts
|
|
42202
|
-
import { defineCommand as
|
|
42718
|
+
import { defineCommand as defineCommand178 } from "citty";
|
|
42203
42719
|
|
|
42204
42720
|
// src/commands/research/advertisers.ts
|
|
42205
|
-
import { defineCommand as
|
|
42721
|
+
import { defineCommand as defineCommand167 } from "citty";
|
|
42206
42722
|
|
|
42207
42723
|
// src/commands/research/hints.ts
|
|
42208
42724
|
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.';
|
|
@@ -42385,7 +42901,7 @@ var FIELDS3 = {
|
|
|
42385
42901
|
etv: "Estimated traffic value (USD)",
|
|
42386
42902
|
visibility: "SERP visibility score (0-1)"
|
|
42387
42903
|
};
|
|
42388
|
-
var advertisersCommand =
|
|
42904
|
+
var advertisersCommand = defineCommand167({
|
|
42389
42905
|
meta: {
|
|
42390
42906
|
name: "advertisers",
|
|
42391
42907
|
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).
|
|
@@ -42441,7 +42957,7 @@ Examples:
|
|
|
42441
42957
|
});
|
|
42442
42958
|
|
|
42443
42959
|
// src/commands/research/autocomplete.ts
|
|
42444
|
-
import { defineCommand as
|
|
42960
|
+
import { defineCommand as defineCommand168 } from "citty";
|
|
42445
42961
|
registerSchema({
|
|
42446
42962
|
command: "research.autocomplete",
|
|
42447
42963
|
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).",
|
|
@@ -42464,7 +42980,7 @@ registerSchema({
|
|
|
42464
42980
|
var FIELDS4 = {
|
|
42465
42981
|
suggestion: "Autocomplete suggestion from Google"
|
|
42466
42982
|
};
|
|
42467
|
-
var autocompleteCommand =
|
|
42983
|
+
var autocompleteCommand = defineCommand168({
|
|
42468
42984
|
meta: {
|
|
42469
42985
|
name: "autocomplete",
|
|
42470
42986
|
description: `Get Google Autocomplete suggestions for keyword expansion.
|
|
@@ -42519,7 +43035,7 @@ Examples:
|
|
|
42519
43035
|
});
|
|
42520
43036
|
|
|
42521
43037
|
// src/commands/research/countries.ts
|
|
42522
|
-
import { defineCommand as
|
|
43038
|
+
import { defineCommand as defineCommand169 } from "citty";
|
|
42523
43039
|
registerSchema({
|
|
42524
43040
|
command: "research.countries",
|
|
42525
43041
|
description: "List all supported country codes for --location flag in research commands.",
|
|
@@ -42576,7 +43092,7 @@ var FIELDS5 = {
|
|
|
42576
43092
|
code: "Country code to pass as --location",
|
|
42577
43093
|
name: "Country name"
|
|
42578
43094
|
};
|
|
42579
|
-
var countriesCommand =
|
|
43095
|
+
var countriesCommand = defineCommand169({
|
|
42580
43096
|
meta: {
|
|
42581
43097
|
name: "countries",
|
|
42582
43098
|
description: "List all supported country codes for --location flag."
|
|
@@ -42587,7 +43103,7 @@ var countriesCommand = defineCommand168({
|
|
|
42587
43103
|
});
|
|
42588
43104
|
|
|
42589
43105
|
// src/commands/research/fetch.ts
|
|
42590
|
-
import { defineCommand as
|
|
43106
|
+
import { defineCommand as defineCommand170 } from "citty";
|
|
42591
43107
|
var CONTENT_PREVIEW_CHARS = 2e4;
|
|
42592
43108
|
var TIMEOUT_MS = 18e4;
|
|
42593
43109
|
registerSchema({
|
|
@@ -42660,7 +43176,7 @@ function fetchFix(code) {
|
|
|
42660
43176
|
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."
|
|
42661
43177
|
};
|
|
42662
43178
|
}
|
|
42663
|
-
var fetchCommand =
|
|
43179
|
+
var fetchCommand = defineCommand170({
|
|
42664
43180
|
meta: {
|
|
42665
43181
|
name: "fetch",
|
|
42666
43182
|
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.
|
|
@@ -42737,7 +43253,7 @@ Examples:
|
|
|
42737
43253
|
});
|
|
42738
43254
|
|
|
42739
43255
|
// src/commands/research/intent.ts
|
|
42740
|
-
import { defineCommand as
|
|
43256
|
+
import { defineCommand as defineCommand171 } from "citty";
|
|
42741
43257
|
registerSchema({
|
|
42742
43258
|
command: "research.intent",
|
|
42743
43259
|
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.",
|
|
@@ -42760,7 +43276,7 @@ var FIELDS7 = {
|
|
|
42760
43276
|
intent: "Primary Google Search intent: informational, navigational, commercial, transactional",
|
|
42761
43277
|
probability: "Confidence score 0.0-1.0"
|
|
42762
43278
|
};
|
|
42763
|
-
var intentCommand =
|
|
43279
|
+
var intentCommand = defineCommand171({
|
|
42764
43280
|
meta: {
|
|
42765
43281
|
name: "intent",
|
|
42766
43282
|
description: `Classify Google Search intent for keywords. Returns intent type and confidence.
|
|
@@ -42808,7 +43324,7 @@ Examples:
|
|
|
42808
43324
|
});
|
|
42809
43325
|
|
|
42810
43326
|
// src/commands/research/keyword-gap.ts
|
|
42811
|
-
import { defineCommand as
|
|
43327
|
+
import { defineCommand as defineCommand172 } from "citty";
|
|
42812
43328
|
registerSchema({
|
|
42813
43329
|
command: "research.keyword-gap",
|
|
42814
43330
|
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.",
|
|
@@ -42837,7 +43353,7 @@ var FIELDS8 = {
|
|
|
42837
43353
|
cpc: "Cost per click USD",
|
|
42838
43354
|
their_position: "Competitor's ranking position"
|
|
42839
43355
|
};
|
|
42840
|
-
var keywordGapCommand =
|
|
43356
|
+
var keywordGapCommand = defineCommand172({
|
|
42841
43357
|
meta: {
|
|
42842
43358
|
name: "keyword-gap",
|
|
42843
43359
|
description: `Find keywords a competitor has that you don't. Supports pagination via --offset.
|
|
@@ -42912,7 +43428,7 @@ Examples:
|
|
|
42912
43428
|
});
|
|
42913
43429
|
|
|
42914
43430
|
// src/commands/research/keywords-for-site.ts
|
|
42915
|
-
import { defineCommand as
|
|
43431
|
+
import { defineCommand as defineCommand173 } from "citty";
|
|
42916
43432
|
registerSchema({
|
|
42917
43433
|
command: "research.keywords-for-site",
|
|
42918
43434
|
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.",
|
|
@@ -42945,7 +43461,7 @@ var FIELDS9 = {
|
|
|
42945
43461
|
competition: "LOW, MEDIUM, or HIGH",
|
|
42946
43462
|
competition_index: "Competition score 0-100"
|
|
42947
43463
|
};
|
|
42948
|
-
var keywordsForSiteCommand =
|
|
43464
|
+
var keywordsForSiteCommand = defineCommand173({
|
|
42949
43465
|
meta: {
|
|
42950
43466
|
name: "keywords-for-site",
|
|
42951
43467
|
description: `Get keywords a competitor targets in Google. Use --type to filter paid/organic.
|
|
@@ -43007,7 +43523,7 @@ Examples:
|
|
|
43007
43523
|
});
|
|
43008
43524
|
|
|
43009
43525
|
// src/commands/research/languages.ts
|
|
43010
|
-
import { defineCommand as
|
|
43526
|
+
import { defineCommand as defineCommand174 } from "citty";
|
|
43011
43527
|
registerSchema({
|
|
43012
43528
|
command: "research.languages",
|
|
43013
43529
|
description: "List all supported language codes for --language flag in research commands.",
|
|
@@ -43037,7 +43553,7 @@ var FIELDS10 = {
|
|
|
43037
43553
|
code: "Language code to pass as --language",
|
|
43038
43554
|
name: "Language name (also accepted by --language)"
|
|
43039
43555
|
};
|
|
43040
|
-
var languagesCommand2 =
|
|
43556
|
+
var languagesCommand2 = defineCommand174({
|
|
43041
43557
|
meta: {
|
|
43042
43558
|
name: "languages",
|
|
43043
43559
|
description: "List all supported language codes for --language flag."
|
|
@@ -43048,7 +43564,7 @@ var languagesCommand2 = defineCommand173({
|
|
|
43048
43564
|
});
|
|
43049
43565
|
|
|
43050
43566
|
// src/commands/research/lighthouse.ts
|
|
43051
|
-
import { defineCommand as
|
|
43567
|
+
import { defineCommand as defineCommand175 } from "citty";
|
|
43052
43568
|
registerSchema({
|
|
43053
43569
|
command: "research.lighthouse",
|
|
43054
43570
|
description: "Landing page performance audit. Returns metrics that affect Google Ads Quality Score and CPC.",
|
|
@@ -43067,7 +43583,7 @@ var FIELDS11 = {
|
|
|
43067
43583
|
speed_index_ms: "Speed Index in ms (good: < 3400)",
|
|
43068
43584
|
interactive_ms: "Time to Interactive in ms (good: < 3800)"
|
|
43069
43585
|
};
|
|
43070
|
-
var lighthouseCommand =
|
|
43586
|
+
var lighthouseCommand = defineCommand175({
|
|
43071
43587
|
meta: {
|
|
43072
43588
|
name: "lighthouse",
|
|
43073
43589
|
description: `Landing page performance audit. Metrics affecting Google Ads Quality Score.
|
|
@@ -43105,7 +43621,7 @@ Examples:
|
|
|
43105
43621
|
});
|
|
43106
43622
|
|
|
43107
43623
|
// src/commands/research/relevant-pages.ts
|
|
43108
|
-
import { defineCommand as
|
|
43624
|
+
import { defineCommand as defineCommand176 } from "citty";
|
|
43109
43625
|
registerSchema({
|
|
43110
43626
|
command: "research.relevant-pages",
|
|
43111
43627
|
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).",
|
|
@@ -43131,7 +43647,7 @@ var FIELDS12 = {
|
|
|
43131
43647
|
keywords: "Total organic keywords the page ranks for",
|
|
43132
43648
|
top_10: "Keywords in positions 1-10"
|
|
43133
43649
|
};
|
|
43134
|
-
var relevantPagesCommand =
|
|
43650
|
+
var relevantPagesCommand = defineCommand176({
|
|
43135
43651
|
meta: {
|
|
43136
43652
|
name: "relevant-pages",
|
|
43137
43653
|
description: `Get the top pages of a competitor domain with traffic data.
|
|
@@ -43178,7 +43694,7 @@ Examples:
|
|
|
43178
43694
|
});
|
|
43179
43695
|
|
|
43180
43696
|
// src/commands/research/web.ts
|
|
43181
|
-
import { defineCommand as
|
|
43697
|
+
import { defineCommand as defineCommand177 } from "citty";
|
|
43182
43698
|
registerSchema({
|
|
43183
43699
|
command: "research.web",
|
|
43184
43700
|
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).",
|
|
@@ -43229,7 +43745,7 @@ async function runDeepResearch(question) {
|
|
|
43229
43745
|
}
|
|
43230
43746
|
throw new Error("Deep research timed out");
|
|
43231
43747
|
}
|
|
43232
|
-
var webCommand =
|
|
43748
|
+
var webCommand = defineCommand177({
|
|
43233
43749
|
meta: {
|
|
43234
43750
|
name: "web",
|
|
43235
43751
|
description: `Search the web with AI to answer any open-ended marketing question. Uses live internet data via Google Search.
|
|
@@ -43291,7 +43807,7 @@ Examples:
|
|
|
43291
43807
|
});
|
|
43292
43808
|
|
|
43293
43809
|
// src/commands/research/index.ts
|
|
43294
|
-
var researchCommand =
|
|
43810
|
+
var researchCommand = defineCommand178({
|
|
43295
43811
|
meta: {
|
|
43296
43812
|
name: "research",
|
|
43297
43813
|
description: `Competitive intelligence and AI-powered research commands.
|
|
@@ -43335,10 +43851,10 @@ Full guide: __tooling__/docs/tools/baker/research.md`
|
|
|
43335
43851
|
});
|
|
43336
43852
|
|
|
43337
43853
|
// src/commands/scheduled-actions/index.ts
|
|
43338
|
-
import { defineCommand as
|
|
43854
|
+
import { defineCommand as defineCommand186 } from "citty";
|
|
43339
43855
|
|
|
43340
43856
|
// src/commands/scheduled-actions/create.ts
|
|
43341
|
-
import { defineCommand as
|
|
43857
|
+
import { defineCommand as defineCommand179 } from "citty";
|
|
43342
43858
|
|
|
43343
43859
|
// src/commands/scheduled-actions/shared.ts
|
|
43344
43860
|
var TEMP_SCHEDULED_ACTION_PREFIX = "temp_sched_";
|
|
@@ -43485,7 +44001,7 @@ registerSchema({
|
|
|
43485
44001
|
}
|
|
43486
44002
|
}
|
|
43487
44003
|
});
|
|
43488
|
-
var createCommand3 =
|
|
44004
|
+
var createCommand3 = defineCommand179({
|
|
43489
44005
|
meta: {
|
|
43490
44006
|
name: "create",
|
|
43491
44007
|
description: 'Stage a scheduled action. Example: baker scheduled-actions create --name "Weekly report" --description "..." --cron "0 9 * * MON"'
|
|
@@ -43544,7 +44060,7 @@ var createCommand3 = defineCommand178({
|
|
|
43544
44060
|
});
|
|
43545
44061
|
|
|
43546
44062
|
// src/commands/scheduled-actions/delete.ts
|
|
43547
|
-
import { defineCommand as
|
|
44063
|
+
import { defineCommand as defineCommand180 } from "citty";
|
|
43548
44064
|
registerSchema({
|
|
43549
44065
|
command: "scheduled-actions.delete",
|
|
43550
44066
|
description: "Stage deletion of a published scheduled action or cancellation of a temp_sched_* draft creation.",
|
|
@@ -43552,7 +44068,7 @@ registerSchema({
|
|
|
43552
44068
|
id: { type: "string", description: "Published scheduled action ID or temp_sched_* draft ID", required: true }
|
|
43553
44069
|
}
|
|
43554
44070
|
});
|
|
43555
|
-
var deleteCommand3 =
|
|
44071
|
+
var deleteCommand3 = defineCommand180({
|
|
43556
44072
|
meta: {
|
|
43557
44073
|
name: "delete",
|
|
43558
44074
|
description: "Stage scheduled action deletion. Example: baker scheduled-actions delete <id-or-temp_sched_id>"
|
|
@@ -43581,7 +44097,7 @@ var deleteCommand3 = defineCommand179({
|
|
|
43581
44097
|
});
|
|
43582
44098
|
|
|
43583
44099
|
// src/commands/scheduled-actions/get.ts
|
|
43584
|
-
import { defineCommand as
|
|
44100
|
+
import { defineCommand as defineCommand181 } from "citty";
|
|
43585
44101
|
registerSchema({
|
|
43586
44102
|
command: "scheduled-actions.get",
|
|
43587
44103
|
description: "Get a published scheduled action or a temp_sched_* draft-created scheduled action.",
|
|
@@ -43590,7 +44106,7 @@ registerSchema({
|
|
|
43590
44106
|
chat: { type: "string", description: CHAT_READ_ARG.description, required: false }
|
|
43591
44107
|
}
|
|
43592
44108
|
});
|
|
43593
|
-
var getCommand4 =
|
|
44109
|
+
var getCommand4 = defineCommand181({
|
|
43594
44110
|
meta: {
|
|
43595
44111
|
name: "get",
|
|
43596
44112
|
description: "Get a scheduled action. Example: baker scheduled-actions get <id-or-temp_sched_id>"
|
|
@@ -43629,7 +44145,7 @@ var getCommand4 = defineCommand180({
|
|
|
43629
44145
|
});
|
|
43630
44146
|
|
|
43631
44147
|
// src/commands/scheduled-actions/list.ts
|
|
43632
|
-
import { defineCommand as
|
|
44148
|
+
import { defineCommand as defineCommand182 } from "citty";
|
|
43633
44149
|
registerSchema({
|
|
43634
44150
|
command: "scheduled-actions.list",
|
|
43635
44151
|
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.",
|
|
@@ -43637,7 +44153,7 @@ registerSchema({
|
|
|
43637
44153
|
chat: { type: "string", description: CHAT_READ_ARG.description, required: false }
|
|
43638
44154
|
}
|
|
43639
44155
|
});
|
|
43640
|
-
var listCommand15 =
|
|
44156
|
+
var listCommand15 = defineCommand182({
|
|
43641
44157
|
meta: {
|
|
43642
44158
|
name: "list",
|
|
43643
44159
|
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."
|
|
@@ -43662,7 +44178,7 @@ var listCommand15 = defineCommand181({
|
|
|
43662
44178
|
// src/commands/scheduled-actions/templates.ts
|
|
43663
44179
|
import { readFile as readFile24 } from "fs/promises";
|
|
43664
44180
|
import path37 from "path";
|
|
43665
|
-
import { defineCommand as
|
|
44181
|
+
import { defineCommand as defineCommand183 } from "citty";
|
|
43666
44182
|
registerSchema({
|
|
43667
44183
|
command: "scheduled-actions.templates",
|
|
43668
44184
|
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.",
|
|
@@ -43717,7 +44233,7 @@ registerSchema({
|
|
|
43717
44233
|
}
|
|
43718
44234
|
}
|
|
43719
44235
|
});
|
|
43720
|
-
var templatesCommand =
|
|
44236
|
+
var templatesCommand = defineCommand183({
|
|
43721
44237
|
meta: {
|
|
43722
44238
|
name: "templates",
|
|
43723
44239
|
description: `The recipes this company can run \u2014 Baker's own plus theirs, with what each one produces.
|
|
@@ -43809,7 +44325,7 @@ Full guide: __tooling__/docs/tools/baker/scheduled-actions.md`
|
|
|
43809
44325
|
});
|
|
43810
44326
|
|
|
43811
44327
|
// src/commands/scheduled-actions/trigger.ts
|
|
43812
|
-
import { defineCommand as
|
|
44328
|
+
import { defineCommand as defineCommand184 } from "citty";
|
|
43813
44329
|
registerSchema({
|
|
43814
44330
|
command: "scheduled-actions.trigger",
|
|
43815
44331
|
description: "Immediately trigger a published scheduled action. Does not require BAKER_CHAT_ID and rejects temp_sched_* IDs.",
|
|
@@ -43817,7 +44333,7 @@ registerSchema({
|
|
|
43817
44333
|
id: { type: "string", description: "Published scheduled action ID", required: true }
|
|
43818
44334
|
}
|
|
43819
44335
|
});
|
|
43820
|
-
var triggerCommand =
|
|
44336
|
+
var triggerCommand = defineCommand184({
|
|
43821
44337
|
meta: {
|
|
43822
44338
|
name: "trigger",
|
|
43823
44339
|
description: "Immediately trigger a published scheduled action. Example: baker scheduled-actions trigger <id>"
|
|
@@ -43854,7 +44370,7 @@ var triggerCommand = defineCommand183({
|
|
|
43854
44370
|
});
|
|
43855
44371
|
|
|
43856
44372
|
// src/commands/scheduled-actions/update.ts
|
|
43857
|
-
import { defineCommand as
|
|
44373
|
+
import { defineCommand as defineCommand185 } from "citty";
|
|
43858
44374
|
registerSchema({
|
|
43859
44375
|
command: "scheduled-actions.update",
|
|
43860
44376
|
description: "Stage an update to a published scheduled action or temp_sched_* draft-created scheduled action.",
|
|
@@ -43885,7 +44401,7 @@ registerSchema({
|
|
|
43885
44401
|
prompt: { type: "string", description: "Replacement additional spawned-agent instructions", required: false }
|
|
43886
44402
|
}
|
|
43887
44403
|
});
|
|
43888
|
-
var updateCommand3 =
|
|
44404
|
+
var updateCommand3 = defineCommand185({
|
|
43889
44405
|
meta: {
|
|
43890
44406
|
name: "update",
|
|
43891
44407
|
description: "Stage a scheduled action update. Examples: baker scheduled-actions update <id> --enabled false | baker scheduled-actions update <id> --mode publish"
|
|
@@ -43963,7 +44479,7 @@ var updateCommand3 = defineCommand184({
|
|
|
43963
44479
|
});
|
|
43964
44480
|
|
|
43965
44481
|
// src/commands/scheduled-actions/index.ts
|
|
43966
|
-
var scheduledActionsCommand =
|
|
44482
|
+
var scheduledActionsCommand = defineCommand186({
|
|
43967
44483
|
meta: {
|
|
43968
44484
|
name: "scheduled-actions",
|
|
43969
44485
|
description: `Manage Scheduled Actions. Subcommands: list, get, create, update, delete, trigger, templates.
|
|
@@ -43992,14 +44508,14 @@ Full guide: __tooling__/docs/tools/baker/scheduled-actions.md`
|
|
|
43992
44508
|
});
|
|
43993
44509
|
|
|
43994
44510
|
// src/commands/schema.ts
|
|
43995
|
-
import { defineCommand as
|
|
44511
|
+
import { defineCommand as defineCommand187 } from "citty";
|
|
43996
44512
|
function narrowToFamily(commandName, available) {
|
|
43997
44513
|
const segments = commandName.split(".");
|
|
43998
44514
|
const prefix = segments[0] === "ads" && segments[1] ? `ads.${segments[1]}.` : `${segments[0]}.`;
|
|
43999
44515
|
const siblings = available.filter((name) => name.startsWith(prefix));
|
|
44000
44516
|
return siblings.length > 0 ? siblings : available;
|
|
44001
44517
|
}
|
|
44002
|
-
var schemaCommand2 =
|
|
44518
|
+
var schemaCommand2 = defineCommand187({
|
|
44003
44519
|
meta: {
|
|
44004
44520
|
name: "schema",
|
|
44005
44521
|
description: "Inspect command argument schemas (for AI agent introspection). Lists all commands if no argument given. Example: baker schema images.search"
|
|
@@ -44043,10 +44559,10 @@ var schemaCommand2 = defineCommand186({
|
|
|
44043
44559
|
});
|
|
44044
44560
|
|
|
44045
44561
|
// src/commands/studio/index.ts
|
|
44046
|
-
import { defineCommand as
|
|
44562
|
+
import { defineCommand as defineCommand196 } from "citty";
|
|
44047
44563
|
|
|
44048
44564
|
// src/commands/studio/animate.ts
|
|
44049
|
-
import { defineCommand as
|
|
44565
|
+
import { defineCommand as defineCommand188 } from "citty";
|
|
44050
44566
|
|
|
44051
44567
|
// src/commands/studio/batch.ts
|
|
44052
44568
|
function projectBatch(generation, full) {
|
|
@@ -44497,7 +45013,7 @@ function costHintsFor(body) {
|
|
|
44497
45013
|
}
|
|
44498
45014
|
return hints;
|
|
44499
45015
|
}
|
|
44500
|
-
var animateCommand =
|
|
45016
|
+
var animateCommand = defineCommand188({
|
|
44501
45017
|
meta: {
|
|
44502
45018
|
name: "animate",
|
|
44503
45019
|
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"
|
|
@@ -44616,7 +45132,7 @@ var animateCommand = defineCommand187({
|
|
|
44616
45132
|
});
|
|
44617
45133
|
|
|
44618
45134
|
// src/commands/studio/generate.ts
|
|
44619
|
-
import { defineCommand as
|
|
45135
|
+
import { defineCommand as defineCommand189 } from "citty";
|
|
44620
45136
|
var MODEL_LIST2 = IMAGE_MODEL_IDS;
|
|
44621
45137
|
var DEFAULT_MAX_WAIT_MS2 = 24e4;
|
|
44622
45138
|
registerSchema({
|
|
@@ -44752,7 +45268,7 @@ function buildGenerateBody(args, prompt) {
|
|
|
44752
45268
|
}
|
|
44753
45269
|
return body;
|
|
44754
45270
|
}
|
|
44755
|
-
var generateCommand =
|
|
45271
|
+
var generateCommand = defineCommand189({
|
|
44756
45272
|
meta: {
|
|
44757
45273
|
name: "generate",
|
|
44758
45274
|
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]]'"
|
|
@@ -44830,7 +45346,7 @@ var generateCommand = defineCommand188({
|
|
|
44830
45346
|
});
|
|
44831
45347
|
|
|
44832
45348
|
// src/commands/studio/get.ts
|
|
44833
|
-
import { defineCommand as
|
|
45349
|
+
import { defineCommand as defineCommand190 } from "citty";
|
|
44834
45350
|
registerSchema({
|
|
44835
45351
|
command: "studio.get",
|
|
44836
45352
|
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.",
|
|
@@ -44839,7 +45355,7 @@ registerSchema({
|
|
|
44839
45355
|
full: { type: "boolean", description: "Include settings, references and attribution", required: false }
|
|
44840
45356
|
}
|
|
44841
45357
|
});
|
|
44842
|
-
var getCommand5 =
|
|
45358
|
+
var getCommand5 = defineCommand190({
|
|
44843
45359
|
meta: {
|
|
44844
45360
|
name: "get",
|
|
44845
45361
|
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"
|
|
@@ -44868,7 +45384,7 @@ var getCommand5 = defineCommand189({
|
|
|
44868
45384
|
});
|
|
44869
45385
|
|
|
44870
45386
|
// src/commands/studio/improve.ts
|
|
44871
|
-
import { defineCommand as
|
|
45387
|
+
import { defineCommand as defineCommand191 } from "citty";
|
|
44872
45388
|
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.";
|
|
44873
45389
|
registerSchema({
|
|
44874
45390
|
command: "studio.improve",
|
|
@@ -44893,7 +45409,7 @@ registerSchema({
|
|
|
44893
45409
|
}
|
|
44894
45410
|
}
|
|
44895
45411
|
});
|
|
44896
|
-
var improveCommand =
|
|
45412
|
+
var improveCommand = defineCommand191({
|
|
44897
45413
|
meta: {
|
|
44898
45414
|
name: "improve",
|
|
44899
45415
|
description: `${DESCRIPTION}
|
|
@@ -44937,7 +45453,7 @@ Examples:
|
|
|
44937
45453
|
});
|
|
44938
45454
|
|
|
44939
45455
|
// src/commands/studio/keep.ts
|
|
44940
|
-
import { defineCommand as
|
|
45456
|
+
import { defineCommand as defineCommand192 } from "citty";
|
|
44941
45457
|
registerSchema({
|
|
44942
45458
|
command: "studio.keep",
|
|
44943
45459
|
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.",
|
|
@@ -44947,7 +45463,7 @@ registerSchema({
|
|
|
44947
45463
|
undo: { type: "boolean", description: "Un-star an image, or take a kept clip back out", required: false }
|
|
44948
45464
|
}
|
|
44949
45465
|
});
|
|
44950
|
-
var keepCommand =
|
|
45466
|
+
var keepCommand = defineCommand192({
|
|
44951
45467
|
meta: {
|
|
44952
45468
|
name: "keep",
|
|
44953
45469
|
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"
|
|
@@ -44998,7 +45514,7 @@ var keepCommand = defineCommand191({
|
|
|
44998
45514
|
});
|
|
44999
45515
|
|
|
45000
45516
|
// src/commands/studio/list.ts
|
|
45001
|
-
import { defineCommand as
|
|
45517
|
+
import { defineCommand as defineCommand193 } from "citty";
|
|
45002
45518
|
registerSchema({
|
|
45003
45519
|
command: "studio.list",
|
|
45004
45520
|
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.",
|
|
@@ -45009,7 +45525,7 @@ registerSchema({
|
|
|
45009
45525
|
full: { type: "boolean", description: "Include settings, references and attribution", required: false }
|
|
45010
45526
|
}
|
|
45011
45527
|
});
|
|
45012
|
-
var listCommand16 =
|
|
45528
|
+
var listCommand16 = defineCommand193({
|
|
45013
45529
|
meta: {
|
|
45014
45530
|
name: "list",
|
|
45015
45531
|
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"
|
|
@@ -45043,7 +45559,7 @@ var listCommand16 = defineCommand192({
|
|
|
45043
45559
|
});
|
|
45044
45560
|
|
|
45045
45561
|
// src/commands/studio/models.ts
|
|
45046
|
-
import { defineCommand as
|
|
45562
|
+
import { defineCommand as defineCommand194 } from "citty";
|
|
45047
45563
|
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.";
|
|
45048
45564
|
registerSchema({
|
|
45049
45565
|
command: "studio.models",
|
|
@@ -45130,7 +45646,7 @@ function buildModelCards(kind, model) {
|
|
|
45130
45646
|
const selected = model ? ids.filter((id) => id === model) : ids;
|
|
45131
45647
|
return selected.map((id) => build(id));
|
|
45132
45648
|
}
|
|
45133
|
-
var modelsCommand =
|
|
45649
|
+
var modelsCommand = defineCommand194({
|
|
45134
45650
|
meta: {
|
|
45135
45651
|
name: "models",
|
|
45136
45652
|
description: `${DESCRIPTION2}
|
|
@@ -45177,13 +45693,13 @@ Examples:
|
|
|
45177
45693
|
});
|
|
45178
45694
|
|
|
45179
45695
|
// src/commands/studio/skills.ts
|
|
45180
|
-
import { defineCommand as
|
|
45696
|
+
import { defineCommand as defineCommand195 } from "citty";
|
|
45181
45697
|
registerSchema({
|
|
45182
45698
|
command: "studio.skills",
|
|
45183
45699
|
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.",
|
|
45184
45700
|
args: {}
|
|
45185
45701
|
});
|
|
45186
|
-
var skillsCommand =
|
|
45702
|
+
var skillsCommand = defineCommand195({
|
|
45187
45703
|
meta: {
|
|
45188
45704
|
name: "skills",
|
|
45189
45705
|
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"
|
|
@@ -45207,7 +45723,7 @@ var skillsCommand = defineCommand194({
|
|
|
45207
45723
|
});
|
|
45208
45724
|
|
|
45209
45725
|
// src/commands/studio/index.ts
|
|
45210
|
-
var studioCommand =
|
|
45726
|
+
var studioCommand = defineCommand196({
|
|
45211
45727
|
meta: {
|
|
45212
45728
|
name: "studio",
|
|
45213
45729
|
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.
|
|
@@ -45250,10 +45766,10 @@ Full guide: __tooling__/docs/tools/baker/studio.md`
|
|
|
45250
45766
|
});
|
|
45251
45767
|
|
|
45252
45768
|
// src/commands/tag-manager/index.ts
|
|
45253
|
-
import { defineCommand as
|
|
45769
|
+
import { defineCommand as defineCommand200 } from "citty";
|
|
45254
45770
|
|
|
45255
45771
|
// src/commands/tag-manager/draft.ts
|
|
45256
|
-
import { defineCommand as
|
|
45772
|
+
import { defineCommand as defineCommand197 } from "citty";
|
|
45257
45773
|
|
|
45258
45774
|
// src/commands/tag-manager/shared.ts
|
|
45259
45775
|
import { readFileSync as readFileSync15 } from "fs";
|
|
@@ -45376,13 +45892,13 @@ registerSchema({
|
|
|
45376
45892
|
chat: { type: "string", description: CHAT_READ_ARG.description, required: false }
|
|
45377
45893
|
}
|
|
45378
45894
|
});
|
|
45379
|
-
var draftCommand4 =
|
|
45895
|
+
var draftCommand4 = defineCommand197({
|
|
45380
45896
|
meta: {
|
|
45381
45897
|
name: "draft",
|
|
45382
45898
|
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."
|
|
45383
45899
|
},
|
|
45384
45900
|
subCommands: {
|
|
45385
|
-
list:
|
|
45901
|
+
list: defineCommand197({
|
|
45386
45902
|
meta: {
|
|
45387
45903
|
name: "list",
|
|
45388
45904
|
description: "Review everything staged on this chat (--json for the raw envelope)"
|
|
@@ -45395,7 +45911,7 @@ var draftCommand4 = defineCommand196({
|
|
|
45395
45911
|
await draftList2(args.json === true, args.chat);
|
|
45396
45912
|
}
|
|
45397
45913
|
}),
|
|
45398
|
-
show:
|
|
45914
|
+
show: defineCommand197({
|
|
45399
45915
|
meta: {
|
|
45400
45916
|
name: "show",
|
|
45401
45917
|
description: "Print the full staged payload for one change \u2014 the receipt to verify it looks right before publish (never truncated)."
|
|
@@ -45412,7 +45928,7 @@ var draftCommand4 = defineCommand196({
|
|
|
45412
45928
|
);
|
|
45413
45929
|
}
|
|
45414
45930
|
}),
|
|
45415
|
-
amend:
|
|
45931
|
+
amend: defineCommand197({
|
|
45416
45932
|
meta: {
|
|
45417
45933
|
name: "amend",
|
|
45418
45934
|
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."
|
|
@@ -45429,7 +45945,7 @@ var draftCommand4 = defineCommand196({
|
|
|
45429
45945
|
});
|
|
45430
45946
|
}
|
|
45431
45947
|
}),
|
|
45432
|
-
remove:
|
|
45948
|
+
remove: defineCommand197({
|
|
45433
45949
|
meta: { name: "remove", description: "Remove one staged change (cascades to anything depending on it)" },
|
|
45434
45950
|
args: { ref: { type: "positional", description: "Staged ref (gtm_temp_*) or target", required: false } },
|
|
45435
45951
|
run: async ({ args }) => {
|
|
@@ -45438,7 +45954,7 @@ var draftCommand4 = defineCommand196({
|
|
|
45438
45954
|
});
|
|
45439
45955
|
}
|
|
45440
45956
|
}),
|
|
45441
|
-
clear:
|
|
45957
|
+
clear: defineCommand197({
|
|
45442
45958
|
meta: { name: "clear", description: "Discard all Tag Manager changes staged on this chat" },
|
|
45443
45959
|
run: async () => {
|
|
45444
45960
|
await draftAction3("/api/tag-manager/draft/clear", {});
|
|
@@ -45448,7 +45964,7 @@ var draftCommand4 = defineCommand196({
|
|
|
45448
45964
|
});
|
|
45449
45965
|
|
|
45450
45966
|
// src/commands/tag-manager/read.ts
|
|
45451
|
-
import { defineCommand as
|
|
45967
|
+
import { defineCommand as defineCommand198 } from "citty";
|
|
45452
45968
|
registerSchema({
|
|
45453
45969
|
command: "tagManager.containers",
|
|
45454
45970
|
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.",
|
|
@@ -45489,7 +46005,7 @@ function containersHints(containers) {
|
|
|
45489
46005
|
}))
|
|
45490
46006
|
});
|
|
45491
46007
|
}
|
|
45492
|
-
var containersCommand =
|
|
46008
|
+
var containersCommand = defineCommand198({
|
|
45493
46009
|
meta: {
|
|
45494
46010
|
name: "containers",
|
|
45495
46011
|
description: `List Tag Manager containers reachable by this company's connection.
|
|
@@ -45506,7 +46022,7 @@ Start here:
|
|
|
45506
46022
|
}
|
|
45507
46023
|
}
|
|
45508
46024
|
});
|
|
45509
|
-
var readCommand =
|
|
46025
|
+
var readCommand = defineCommand198({
|
|
45510
46026
|
meta: {
|
|
45511
46027
|
name: "read",
|
|
45512
46028
|
description: `Read the current contents of the Tag Manager container \u2014 always do this before staging changes.
|
|
@@ -45548,7 +46064,7 @@ Examples:
|
|
|
45548
46064
|
});
|
|
45549
46065
|
|
|
45550
46066
|
// src/commands/tag-manager/write-commands.ts
|
|
45551
|
-
import { defineCommand as
|
|
46067
|
+
import { defineCommand as defineCommand199 } from "citty";
|
|
45552
46068
|
var CONTAINER_ARG_DESCRIPTION = "Numeric container id (optional only when one container is connected \u2014 run `baker tag-manager containers`)";
|
|
45553
46069
|
var ENTITIES = [
|
|
45554
46070
|
{
|
|
@@ -45604,10 +46120,10 @@ for (const { entity, noun, createHint } of ENTITIES) {
|
|
|
45604
46120
|
});
|
|
45605
46121
|
}
|
|
45606
46122
|
function entityCommand(entity, noun, example) {
|
|
45607
|
-
return
|
|
46123
|
+
return defineCommand199({
|
|
45608
46124
|
meta: { name: entity, description: `Stage ${noun} changes on this chat's Tag Manager draft` },
|
|
45609
46125
|
subCommands: {
|
|
45610
|
-
create:
|
|
46126
|
+
create: defineCommand199({
|
|
45611
46127
|
meta: {
|
|
45612
46128
|
name: "create",
|
|
45613
46129
|
description: `Stage a new ${noun}
|
|
@@ -45629,7 +46145,7 @@ Examples:
|
|
|
45629
46145
|
});
|
|
45630
46146
|
}
|
|
45631
46147
|
}),
|
|
45632
|
-
update:
|
|
46148
|
+
update: defineCommand199({
|
|
45633
46149
|
meta: {
|
|
45634
46150
|
name: "update",
|
|
45635
46151
|
description: `Stage an update to an existing ${noun} (pass its id or path)`
|
|
@@ -45649,7 +46165,7 @@ Examples:
|
|
|
45649
46165
|
});
|
|
45650
46166
|
}
|
|
45651
46167
|
}),
|
|
45652
|
-
delete:
|
|
46168
|
+
delete: defineCommand199({
|
|
45653
46169
|
meta: { name: "delete", description: `Stage the deletion of a ${noun} (pass its id or path)` },
|
|
45654
46170
|
args: {
|
|
45655
46171
|
id: { type: "positional", description: `${noun} id or path`, required: false },
|
|
@@ -45690,7 +46206,7 @@ function builtinTypes(args) {
|
|
|
45690
46206
|
}
|
|
45691
46207
|
return raw.split(",").map((entry) => entry.trim());
|
|
45692
46208
|
}
|
|
45693
|
-
var builtinCommand =
|
|
46209
|
+
var builtinCommand = defineCommand199({
|
|
45694
46210
|
meta: {
|
|
45695
46211
|
name: "builtin",
|
|
45696
46212
|
description: `Enable or disable built-in variables
|
|
@@ -45700,7 +46216,7 @@ Examples:
|
|
|
45700
46216
|
baker tag-manager builtin disable --types formId`
|
|
45701
46217
|
},
|
|
45702
46218
|
subCommands: {
|
|
45703
|
-
enable:
|
|
46219
|
+
enable: defineCommand199({
|
|
45704
46220
|
meta: { name: "enable", description: "Stage enabling built-in variables" },
|
|
45705
46221
|
args: {
|
|
45706
46222
|
types: { type: "string", description: "Comma-separated types", required: false },
|
|
@@ -45714,7 +46230,7 @@ Examples:
|
|
|
45714
46230
|
});
|
|
45715
46231
|
}
|
|
45716
46232
|
}),
|
|
45717
|
-
disable:
|
|
46233
|
+
disable: defineCommand199({
|
|
45718
46234
|
meta: { name: "disable", description: "Stage disabling built-in variables" },
|
|
45719
46235
|
args: {
|
|
45720
46236
|
types: { type: "string", description: "Comma-separated types", required: false },
|
|
@@ -45732,7 +46248,7 @@ Examples:
|
|
|
45732
46248
|
});
|
|
45733
46249
|
|
|
45734
46250
|
// src/commands/tag-manager/index.ts
|
|
45735
|
-
var tagManagerCommand =
|
|
46251
|
+
var tagManagerCommand = defineCommand200({
|
|
45736
46252
|
meta: {
|
|
45737
46253
|
name: "tag-manager",
|
|
45738
46254
|
description: `Read and change what lives inside the client's Google Tag Manager container \u2014 tags, triggers, variables, folders and built-in variables.
|
|
@@ -45769,7 +46285,7 @@ Full guide: __tooling__/docs/tools/baker/tag-manager.md`
|
|
|
45769
46285
|
});
|
|
45770
46286
|
|
|
45771
46287
|
// src/commands/tags/index.ts
|
|
45772
|
-
import { defineCommand as
|
|
46288
|
+
import { defineCommand as defineCommand201 } from "citty";
|
|
45773
46289
|
|
|
45774
46290
|
// src/commands/tags/shared.ts
|
|
45775
46291
|
function failApi3(err) {
|
|
@@ -45838,7 +46354,7 @@ async function listTags(json) {
|
|
|
45838
46354
|
var listArgs9 = {
|
|
45839
46355
|
json: { type: "boolean", description: "Print the raw JSON envelope instead of the readable list" }
|
|
45840
46356
|
};
|
|
45841
|
-
var listCommand17 =
|
|
46357
|
+
var listCommand17 = defineCommand201({
|
|
45842
46358
|
meta: {
|
|
45843
46359
|
name: "list",
|
|
45844
46360
|
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"
|
|
@@ -45857,7 +46373,7 @@ async function listDraft3(chat) {
|
|
|
45857
46373
|
failApi3(err);
|
|
45858
46374
|
}
|
|
45859
46375
|
}
|
|
45860
|
-
var draftCommand5 =
|
|
46376
|
+
var draftCommand5 = defineCommand201({
|
|
45861
46377
|
meta: {
|
|
45862
46378
|
name: "draft",
|
|
45863
46379
|
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."
|
|
@@ -45867,7 +46383,7 @@ var draftCommand5 = defineCommand200({
|
|
|
45867
46383
|
await listDraft3(args.chat);
|
|
45868
46384
|
}
|
|
45869
46385
|
});
|
|
45870
|
-
var tagsCommand3 =
|
|
46386
|
+
var tagsCommand3 = defineCommand201({
|
|
45871
46387
|
meta: {
|
|
45872
46388
|
name: "tags",
|
|
45873
46389
|
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.
|
|
@@ -45896,10 +46412,10 @@ Full guide: __tooling__/docs/tools/baker/tags.md`
|
|
|
45896
46412
|
});
|
|
45897
46413
|
|
|
45898
46414
|
// src/commands/testimonials/index.ts
|
|
45899
|
-
import { defineCommand as
|
|
46415
|
+
import { defineCommand as defineCommand205 } from "citty";
|
|
45900
46416
|
|
|
45901
46417
|
// src/commands/testimonials/get.ts
|
|
45902
|
-
import { defineCommand as
|
|
46418
|
+
import { defineCommand as defineCommand202 } from "citty";
|
|
45903
46419
|
registerSchema({
|
|
45904
46420
|
command: "testimonials.get",
|
|
45905
46421
|
description: "Get a single testimonial by ID",
|
|
@@ -45907,7 +46423,7 @@ registerSchema({
|
|
|
45907
46423
|
id: { type: "string", description: "Testimonial ID", required: true }
|
|
45908
46424
|
}
|
|
45909
46425
|
});
|
|
45910
|
-
var getCommand6 =
|
|
46426
|
+
var getCommand6 = defineCommand202({
|
|
45911
46427
|
meta: { name: "get", description: "Get a single testimonial by ID. Example: baker testimonials get j571abc123" },
|
|
45912
46428
|
args: {
|
|
45913
46429
|
id: { type: "positional", description: "Testimonial ID", required: false },
|
|
@@ -45944,7 +46460,7 @@ var getCommand6 = defineCommand201({
|
|
|
45944
46460
|
});
|
|
45945
46461
|
|
|
45946
46462
|
// src/commands/testimonials/list.ts
|
|
45947
|
-
import { defineCommand as
|
|
46463
|
+
import { defineCommand as defineCommand203 } from "citty";
|
|
45948
46464
|
|
|
45949
46465
|
// src/commands/testimonials/emptyCorpusHints.ts
|
|
45950
46466
|
function resolveEmptyReason({
|
|
@@ -46079,7 +46595,7 @@ function buildListParams(args) {
|
|
|
46079
46595
|
}
|
|
46080
46596
|
return params;
|
|
46081
46597
|
}
|
|
46082
|
-
var listCommand18 =
|
|
46598
|
+
var listCommand18 = defineCommand203({
|
|
46083
46599
|
meta: {
|
|
46084
46600
|
name: "list",
|
|
46085
46601
|
description: "List testimonials with optional filters. Example: baker testimonials list --source google --sentiment positive"
|
|
@@ -46131,7 +46647,7 @@ var listCommand18 = defineCommand202({
|
|
|
46131
46647
|
});
|
|
46132
46648
|
|
|
46133
46649
|
// src/commands/testimonials/search.ts
|
|
46134
|
-
import { defineCommand as
|
|
46650
|
+
import { defineCommand as defineCommand204 } from "citty";
|
|
46135
46651
|
var FILTER_FLAGS2 = ["source", "rating-min", "rating-max", "status", "sentiment", "language", "tags"];
|
|
46136
46652
|
function languageBiasHint(results, requestedLanguage) {
|
|
46137
46653
|
if (requestedLanguage) {
|
|
@@ -46210,7 +46726,7 @@ function buildSearchRequest(query, args) {
|
|
|
46210
46726
|
}
|
|
46211
46727
|
return body;
|
|
46212
46728
|
}
|
|
46213
|
-
var searchCommand3 =
|
|
46729
|
+
var searchCommand3 = defineCommand204({
|
|
46214
46730
|
meta: {
|
|
46215
46731
|
name: "search",
|
|
46216
46732
|
description: "Semantic search testimonials by text query. Uses hybrid BM25 + vector + reranking. Example: baker testimonials search 'great service' --rating-min 4"
|
|
@@ -46274,7 +46790,7 @@ var searchCommand3 = defineCommand203({
|
|
|
46274
46790
|
var tagsCommand4 = makeTagsCommand("testimonials", "testimonial", "/api/testimonials/tags");
|
|
46275
46791
|
|
|
46276
46792
|
// src/commands/testimonials/index.ts
|
|
46277
|
-
var testimonialsCommand =
|
|
46793
|
+
var testimonialsCommand = defineCommand205({
|
|
46278
46794
|
meta: {
|
|
46279
46795
|
name: "testimonials",
|
|
46280
46796
|
description: `Find and browse testimonials in Baker. Subcommands: search, get, list, tags.
|
|
@@ -46296,10 +46812,10 @@ Full guide: __tooling__/docs/tools/baker/testimonials.md`
|
|
|
46296
46812
|
});
|
|
46297
46813
|
|
|
46298
46814
|
// src/commands/videos/index.ts
|
|
46299
|
-
import { defineCommand as
|
|
46815
|
+
import { defineCommand as defineCommand212 } from "citty";
|
|
46300
46816
|
|
|
46301
46817
|
// src/commands/videos/delete.ts
|
|
46302
|
-
import { defineCommand as
|
|
46818
|
+
import { defineCommand as defineCommand206 } from "citty";
|
|
46303
46819
|
registerSchema({
|
|
46304
46820
|
command: "videos.delete",
|
|
46305
46821
|
description: "Delete a video by ID",
|
|
@@ -46313,7 +46829,7 @@ registerSchema({
|
|
|
46313
46829
|
}
|
|
46314
46830
|
}
|
|
46315
46831
|
});
|
|
46316
|
-
var deleteCommand4 =
|
|
46832
|
+
var deleteCommand4 = defineCommand206({
|
|
46317
46833
|
meta: {
|
|
46318
46834
|
name: "delete",
|
|
46319
46835
|
description: "Delete a video by ID. Use --dry-run to preview. Example: baker videos delete j571abc123 --dry-run"
|
|
@@ -46354,7 +46870,7 @@ var deleteCommand4 = defineCommand205({
|
|
|
46354
46870
|
});
|
|
46355
46871
|
|
|
46356
46872
|
// src/commands/videos/get.ts
|
|
46357
|
-
import { defineCommand as
|
|
46873
|
+
import { defineCommand as defineCommand207 } from "citty";
|
|
46358
46874
|
registerSchema({
|
|
46359
46875
|
command: "videos.get",
|
|
46360
46876
|
description: "Get a single video by ID",
|
|
@@ -46362,7 +46878,7 @@ registerSchema({
|
|
|
46362
46878
|
id: { type: "string", description: "Video ID", required: true }
|
|
46363
46879
|
}
|
|
46364
46880
|
});
|
|
46365
|
-
var getCommand7 =
|
|
46881
|
+
var getCommand7 = defineCommand207({
|
|
46366
46882
|
meta: { name: "get", description: "Get a single video by ID. Example: baker videos get j571abc123" },
|
|
46367
46883
|
args: {
|
|
46368
46884
|
id: { type: "positional", description: "Video ID", required: false },
|
|
@@ -46399,7 +46915,7 @@ var getCommand7 = defineCommand206({
|
|
|
46399
46915
|
});
|
|
46400
46916
|
|
|
46401
46917
|
// src/commands/videos/group.ts
|
|
46402
|
-
import { defineCommand as
|
|
46918
|
+
import { defineCommand as defineCommand208 } from "citty";
|
|
46403
46919
|
registerSchema({
|
|
46404
46920
|
command: "videos.group",
|
|
46405
46921
|
description: "List every clip and image that arrived in the same set as this video (carousel slides, one page)",
|
|
@@ -46408,7 +46924,7 @@ registerSchema({
|
|
|
46408
46924
|
"group-key": { type: "string", description: "The set key directly, when you already have it", required: false }
|
|
46409
46925
|
}
|
|
46410
46926
|
});
|
|
46411
|
-
var groupCommand2 =
|
|
46927
|
+
var groupCommand2 = defineCommand208({
|
|
46412
46928
|
meta: {
|
|
46413
46929
|
name: "group",
|
|
46414
46930
|
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>"
|
|
@@ -46431,7 +46947,7 @@ var groupCommand2 = defineCommand207({
|
|
|
46431
46947
|
import { mkdtemp as mkdtemp2, rm as rm7, stat as stat7 } from "fs/promises";
|
|
46432
46948
|
import { tmpdir as tmpdir3 } from "os";
|
|
46433
46949
|
import path38 from "path";
|
|
46434
|
-
import { defineCommand as
|
|
46950
|
+
import { defineCommand as defineCommand209 } from "citty";
|
|
46435
46951
|
|
|
46436
46952
|
// src/lib/streamUpload.ts
|
|
46437
46953
|
import { createHash as createHash2 } from "crypto";
|
|
@@ -46595,7 +47111,7 @@ registerSchema({
|
|
|
46595
47111
|
"dry-run": { type: "boolean", description: "Preview the operation without executing", required: false }
|
|
46596
47112
|
}
|
|
46597
47113
|
});
|
|
46598
|
-
var ingestCommand2 =
|
|
47114
|
+
var ingestCommand2 = defineCommand209({
|
|
46599
47115
|
meta: {
|
|
46600
47116
|
name: "ingest",
|
|
46601
47117
|
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"
|
|
@@ -46857,7 +47373,7 @@ async function uploadToAssetStore(filePath, sizeBytes) {
|
|
|
46857
47373
|
}
|
|
46858
47374
|
|
|
46859
47375
|
// src/commands/videos/search.ts
|
|
46860
|
-
import { defineCommand as
|
|
47376
|
+
import { defineCommand as defineCommand210 } from "citty";
|
|
46861
47377
|
registerSchema({
|
|
46862
47378
|
command: "videos.search",
|
|
46863
47379
|
description: "Search videos by text query. Only returns ready videos.",
|
|
@@ -46867,7 +47383,7 @@ registerSchema({
|
|
|
46867
47383
|
tags: { type: "string", description: "Comma-separated tags to filter by", required: false }
|
|
46868
47384
|
}
|
|
46869
47385
|
});
|
|
46870
|
-
var searchCommand4 =
|
|
47386
|
+
var searchCommand4 = defineCommand210({
|
|
46871
47387
|
meta: {
|
|
46872
47388
|
name: "search",
|
|
46873
47389
|
description: "Semantic search videos by text query. Uses hybrid BM25 + vector + reranking. Example: baker videos search 'product demo' --tags tutorial"
|
|
@@ -46919,7 +47435,7 @@ var tagsCommand5 = makeTagsCommand("videos", "video", "/api/videos/tags");
|
|
|
46919
47435
|
// src/commands/videos/upload.ts
|
|
46920
47436
|
import { readFile as readFile25, stat as stat8 } from "fs/promises";
|
|
46921
47437
|
import { basename as basename3, extname as extname4 } from "path";
|
|
46922
|
-
import { defineCommand as
|
|
47438
|
+
import { defineCommand as defineCommand211 } from "citty";
|
|
46923
47439
|
var MIME_MAP = {
|
|
46924
47440
|
".mp4": "video/mp4",
|
|
46925
47441
|
".mov": "video/quicktime",
|
|
@@ -46961,7 +47477,7 @@ function detectContentType(filePath) {
|
|
|
46961
47477
|
function isRemoteUrl3(value) {
|
|
46962
47478
|
return /^https?:\/\//i.test(value);
|
|
46963
47479
|
}
|
|
46964
|
-
var uploadCommand2 =
|
|
47480
|
+
var uploadCommand2 = defineCommand211({
|
|
46965
47481
|
meta: {
|
|
46966
47482
|
name: "upload",
|
|
46967
47483
|
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"
|
|
@@ -47045,7 +47561,7 @@ var uploadCommand2 = defineCommand210({
|
|
|
47045
47561
|
});
|
|
47046
47562
|
|
|
47047
47563
|
// src/commands/videos/index.ts
|
|
47048
|
-
var videosCommand =
|
|
47564
|
+
var videosCommand = defineCommand212({
|
|
47049
47565
|
meta: {
|
|
47050
47566
|
name: "videos",
|
|
47051
47567
|
description: `Find and manage videos in Baker. Subcommands: search, get, upload, ingest, delete, tags.
|
|
@@ -47072,10 +47588,10 @@ Full guide: __tooling__/docs/tools/baker/videos.md`
|
|
|
47072
47588
|
});
|
|
47073
47589
|
|
|
47074
47590
|
// src/commands/winning-ads/index.ts
|
|
47075
|
-
import { defineCommand as
|
|
47591
|
+
import { defineCommand as defineCommand225 } from "citty";
|
|
47076
47592
|
|
|
47077
47593
|
// src/commands/winning-ads/advertisers.ts
|
|
47078
|
-
import { defineCommand as
|
|
47594
|
+
import { defineCommand as defineCommand213 } from "citty";
|
|
47079
47595
|
|
|
47080
47596
|
// src/commands/winning-ads/shared.ts
|
|
47081
47597
|
function splitList2(value) {
|
|
@@ -47128,7 +47644,7 @@ function advertiserNormalizer(record, full) {
|
|
|
47128
47644
|
last_synced_at: record.last_synced_at ?? null
|
|
47129
47645
|
};
|
|
47130
47646
|
}
|
|
47131
|
-
var advertisersCommand2 =
|
|
47647
|
+
var advertisersCommand2 = defineCommand213({
|
|
47132
47648
|
meta: {
|
|
47133
47649
|
name: "advertisers",
|
|
47134
47650
|
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'
|
|
@@ -47186,7 +47702,7 @@ var advertisersCommand2 = defineCommand212({
|
|
|
47186
47702
|
});
|
|
47187
47703
|
|
|
47188
47704
|
// src/commands/winning-ads/brief.ts
|
|
47189
|
-
import { defineCommand as
|
|
47705
|
+
import { defineCommand as defineCommand214 } from "citty";
|
|
47190
47706
|
registerSchema({
|
|
47191
47707
|
command: "winning-ads.brief",
|
|
47192
47708
|
description: "Generate a creative brief grounded in strategically-similar winning ads. Optionally describe the target creative with --dna (JSON) and steer with --notes.",
|
|
@@ -47232,7 +47748,7 @@ function parseDna(raw) {
|
|
|
47232
47748
|
}
|
|
47233
47749
|
return parsed;
|
|
47234
47750
|
}
|
|
47235
|
-
var briefCommand =
|
|
47751
|
+
var briefCommand = defineCommand214({
|
|
47236
47752
|
meta: {
|
|
47237
47753
|
name: "brief",
|
|
47238
47754
|
description: `Generate a creative brief from winning references. Example: baker winning-ads brief --dna '{"angle":"cost savings"}' --notes "B2B, LinkedIn video" --k 8`
|
|
@@ -47268,7 +47784,7 @@ var briefCommand = defineCommand213({
|
|
|
47268
47784
|
});
|
|
47269
47785
|
|
|
47270
47786
|
// src/commands/winning-ads/content.ts
|
|
47271
|
-
import { defineCommand as
|
|
47787
|
+
import { defineCommand as defineCommand215 } from "citty";
|
|
47272
47788
|
registerSchema({
|
|
47273
47789
|
command: "winning-ads.content",
|
|
47274
47790
|
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.",
|
|
@@ -47281,7 +47797,7 @@ registerSchema({
|
|
|
47281
47797
|
}
|
|
47282
47798
|
}
|
|
47283
47799
|
});
|
|
47284
|
-
var contentCommand =
|
|
47800
|
+
var contentCommand = defineCommand215({
|
|
47285
47801
|
meta: {
|
|
47286
47802
|
name: "content",
|
|
47287
47803
|
description: "Read the transcript + on-screen text + copy of one winning ad. Example: baker winning-ads content adg_123 --platform meta --full --output md"
|
|
@@ -47330,7 +47846,7 @@ var contentCommand = defineCommand214({
|
|
|
47330
47846
|
});
|
|
47331
47847
|
|
|
47332
47848
|
// src/commands/winning-ads/feed.ts
|
|
47333
|
-
import { defineCommand as
|
|
47849
|
+
import { defineCommand as defineCommand216 } from "citty";
|
|
47334
47850
|
function buildFeedParams(input) {
|
|
47335
47851
|
const params = {};
|
|
47336
47852
|
const advertiser = splitList2(input.advertiser);
|
|
@@ -47382,7 +47898,7 @@ registerSchema({
|
|
|
47382
47898
|
format: { type: "string", description: "Comma-separated formats to include (e.g. static,video)", required: false }
|
|
47383
47899
|
}
|
|
47384
47900
|
});
|
|
47385
|
-
var feedCommand =
|
|
47901
|
+
var feedCommand = defineCommand216({
|
|
47386
47902
|
meta: {
|
|
47387
47903
|
name: "feed",
|
|
47388
47904
|
description: "Winners across every brand you follow (browse, then trim per advertiser). Example: baker winning-ads feed --per-advertiser 5 --output md"
|
|
@@ -47467,7 +47983,7 @@ var feedCommand = defineCommand215({
|
|
|
47467
47983
|
});
|
|
47468
47984
|
|
|
47469
47985
|
// src/commands/winning-ads/follow.ts
|
|
47470
|
-
import { defineCommand as
|
|
47986
|
+
import { defineCommand as defineCommand217 } from "citty";
|
|
47471
47987
|
var PLATFORMS = ["meta", "linkedin"];
|
|
47472
47988
|
registerSchema({
|
|
47473
47989
|
command: "winning-ads.follow",
|
|
@@ -47482,7 +47998,7 @@ registerSchema({
|
|
|
47482
47998
|
label: { type: "string", description: "Optional display label (defaults to the resolved name)", required: false }
|
|
47483
47999
|
}
|
|
47484
48000
|
});
|
|
47485
|
-
var followCommand =
|
|
48001
|
+
var followCommand = defineCommand217({
|
|
47486
48002
|
meta: {
|
|
47487
48003
|
name: "follow",
|
|
47488
48004
|
description: 'Follow a brand to track ALL its ads \u2014 every platform and country. --platform is how we read your input, not a limit. A domain tracks both Meta + LinkedIn. Example: baker winning-ads follow "deel.com" --platform meta'
|
|
@@ -47529,7 +48045,7 @@ var followCommand = defineCommand216({
|
|
|
47529
48045
|
});
|
|
47530
48046
|
|
|
47531
48047
|
// src/commands/winning-ads/follow-competitors.ts
|
|
47532
|
-
import { defineCommand as
|
|
48048
|
+
import { defineCommand as defineCommand218 } from "citty";
|
|
47533
48049
|
var PLATFORMS2 = ["meta", "linkedin"];
|
|
47534
48050
|
var BATCH_TIMEOUT_MS = 3e5;
|
|
47535
48051
|
function buildFollowBatchBody(input) {
|
|
@@ -47562,7 +48078,7 @@ registerSchema({
|
|
|
47562
48078
|
}
|
|
47563
48079
|
}
|
|
47564
48080
|
});
|
|
47565
|
-
var followCompetitorsCommand =
|
|
48081
|
+
var followCompetitorsCommand = defineCommand218({
|
|
47566
48082
|
meta: {
|
|
47567
48083
|
name: "follow-competitors",
|
|
47568
48084
|
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"'
|
|
@@ -47637,7 +48153,7 @@ var followCompetitorsCommand = defineCommand217({
|
|
|
47637
48153
|
});
|
|
47638
48154
|
|
|
47639
48155
|
// src/commands/winning-ads/following.ts
|
|
47640
|
-
import { defineCommand as
|
|
48156
|
+
import { defineCommand as defineCommand219 } from "citty";
|
|
47641
48157
|
registerSchema({
|
|
47642
48158
|
command: "winning-ads.following",
|
|
47643
48159
|
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.",
|
|
@@ -47691,7 +48207,7 @@ function followingNormalizer(record, full) {
|
|
|
47691
48207
|
platforms: Array.isArray(record.platforms) ? record.platforms : []
|
|
47692
48208
|
};
|
|
47693
48209
|
}
|
|
47694
|
-
var followingCommand =
|
|
48210
|
+
var followingCommand = defineCommand219({
|
|
47695
48211
|
meta: {
|
|
47696
48212
|
name: "following",
|
|
47697
48213
|
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"
|
|
@@ -47727,7 +48243,7 @@ var followingCommand = defineCommand218({
|
|
|
47727
48243
|
});
|
|
47728
48244
|
|
|
47729
48245
|
// src/commands/winning-ads/patterns.ts
|
|
47730
|
-
import { defineCommand as
|
|
48246
|
+
import { defineCommand as defineCommand220 } from "citty";
|
|
47731
48247
|
registerSchema({
|
|
47732
48248
|
command: "winning-ads.patterns",
|
|
47733
48249
|
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.",
|
|
@@ -47766,7 +48282,7 @@ function discriminatorRow(record) {
|
|
|
47766
48282
|
top_values_duds: Array.isArray(record.top_values_b) ? record.top_values_b.join(", ") : ""
|
|
47767
48283
|
};
|
|
47768
48284
|
}
|
|
47769
|
-
var patternsCommand =
|
|
48285
|
+
var patternsCommand = defineCommand220({
|
|
47770
48286
|
meta: {
|
|
47771
48287
|
name: "patterns",
|
|
47772
48288
|
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"
|
|
@@ -47822,7 +48338,7 @@ var patternsCommand = defineCommand219({
|
|
|
47822
48338
|
});
|
|
47823
48339
|
|
|
47824
48340
|
// src/commands/winning-ads/search.ts
|
|
47825
|
-
import { defineCommand as
|
|
48341
|
+
import { defineCommand as defineCommand221 } from "citty";
|
|
47826
48342
|
registerSchema({
|
|
47827
48343
|
command: "winning-ads.search",
|
|
47828
48344
|
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.",
|
|
@@ -47930,7 +48446,7 @@ function buildSearchBody2(args) {
|
|
|
47930
48446
|
}
|
|
47931
48447
|
return body;
|
|
47932
48448
|
}
|
|
47933
|
-
var searchCommand5 =
|
|
48449
|
+
var searchCommand5 = defineCommand221({
|
|
47934
48450
|
meta: {
|
|
47935
48451
|
name: "search",
|
|
47936
48452
|
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"
|
|
@@ -48045,7 +48561,7 @@ var searchCommand5 = defineCommand220({
|
|
|
48045
48561
|
});
|
|
48046
48562
|
|
|
48047
48563
|
// src/commands/winning-ads/seeds.ts
|
|
48048
|
-
import { defineCommand as
|
|
48564
|
+
import { defineCommand as defineCommand222 } from "citty";
|
|
48049
48565
|
function leanRow(r) {
|
|
48050
48566
|
return {
|
|
48051
48567
|
key: r.key,
|
|
@@ -48073,7 +48589,7 @@ function makeSeedCommand(opts) {
|
|
|
48073
48589
|
limit: { type: "number", description: "Max keys 1-100 (default 20)", required: false, default: 20 }
|
|
48074
48590
|
}
|
|
48075
48591
|
});
|
|
48076
|
-
return
|
|
48592
|
+
return defineCommand222({
|
|
48077
48593
|
meta: { name: opts.name, description: opts.description },
|
|
48078
48594
|
args: {
|
|
48079
48595
|
platform: { type: "string", description: "Single platform to segment on", required: false },
|
|
@@ -48122,7 +48638,7 @@ var formatsCommand = makeSeedCommand({
|
|
|
48122
48638
|
});
|
|
48123
48639
|
|
|
48124
48640
|
// src/commands/winning-ads/unfollow.ts
|
|
48125
|
-
import { defineCommand as
|
|
48641
|
+
import { defineCommand as defineCommand223 } from "citty";
|
|
48126
48642
|
registerSchema({
|
|
48127
48643
|
command: "winning-ads.unfollow",
|
|
48128
48644
|
description: "Stop following a brand \u2014 removes it from your ad-dna library by advertiser id.",
|
|
@@ -48130,7 +48646,7 @@ registerSchema({
|
|
|
48130
48646
|
advertiser: { type: "string", description: "Advertiser id to unfollow", required: true }
|
|
48131
48647
|
}
|
|
48132
48648
|
});
|
|
48133
|
-
var unfollowCommand =
|
|
48649
|
+
var unfollowCommand = defineCommand223({
|
|
48134
48650
|
meta: {
|
|
48135
48651
|
name: "unfollow",
|
|
48136
48652
|
description: "Stop following a brand by advertiser id. Example: baker winning-ads unfollow adv_123"
|
|
@@ -48151,7 +48667,7 @@ var unfollowCommand = defineCommand222({
|
|
|
48151
48667
|
});
|
|
48152
48668
|
|
|
48153
48669
|
// src/commands/winning-ads/winners.ts
|
|
48154
|
-
import { defineCommand as
|
|
48670
|
+
import { defineCommand as defineCommand224 } from "citty";
|
|
48155
48671
|
registerSchema({
|
|
48156
48672
|
command: "winning-ads.winners",
|
|
48157
48673
|
description: "Top winning ads for one advertiser id (from `advertisers` or `following`). Returns lean winner cards; add --full for DNA + longevity.",
|
|
@@ -48161,7 +48677,7 @@ registerSchema({
|
|
|
48161
48677
|
platform: { type: "string", description: "Filter to a single platform: meta|linkedin", required: false }
|
|
48162
48678
|
}
|
|
48163
48679
|
});
|
|
48164
|
-
var winnersCommand =
|
|
48680
|
+
var winnersCommand = defineCommand224({
|
|
48165
48681
|
meta: {
|
|
48166
48682
|
name: "winners",
|
|
48167
48683
|
description: "Top winning ads for a specific advertiser id. Example: baker winning-ads winners adv_123 --top 15 --output md"
|
|
@@ -48211,7 +48727,7 @@ var winnersCommand = defineCommand223({
|
|
|
48211
48727
|
});
|
|
48212
48728
|
|
|
48213
48729
|
// src/commands/winning-ads/index.ts
|
|
48214
|
-
var winningAdsCommand =
|
|
48730
|
+
var winningAdsCommand = defineCommand225({
|
|
48215
48731
|
meta: {
|
|
48216
48732
|
name: "winning-ads",
|
|
48217
48733
|
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.
|
|
@@ -48449,7 +48965,7 @@ function getCliVersion() {
|
|
|
48449
48965
|
}
|
|
48450
48966
|
|
|
48451
48967
|
// src/cli.ts
|
|
48452
|
-
var main =
|
|
48968
|
+
var main = defineCommand226({
|
|
48453
48969
|
meta: {
|
|
48454
48970
|
name: "baker",
|
|
48455
48971
|
version: getCliVersion(),
|