@koda-sl/baker-cli 0.160.1 → 0.161.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/dist/cli.js CHANGED
@@ -77,7 +77,7 @@ import {
77
77
  } from "./chunk-RK67WL4O.js";
78
78
 
79
79
  // src/cli.ts
80
- import { defineCommand as defineCommand186, runMain } from "citty";
80
+ import { defineCommand as defineCommand187, runMain } from "citty";
81
81
 
82
82
  // src/commands/actions/index.ts
83
83
  import { defineCommand as defineCommand18 } from "citty";
@@ -4258,7 +4258,7 @@ Full guide: __tooling__/docs/tools/baker/actions.md`
4258
4258
  });
4259
4259
 
4260
4260
  // src/commands/ads/index.ts
4261
- import { defineCommand as defineCommand85 } from "citty";
4261
+ import { defineCommand as defineCommand86 } from "citty";
4262
4262
 
4263
4263
  // src/commands/ads/google/index.ts
4264
4264
  import { defineCommand as defineCommand31 } from "citty";
@@ -13086,7 +13086,7 @@ Full guide: __tooling__/docs/tools/baker/ads-linkedin.md`
13086
13086
  });
13087
13087
 
13088
13088
  // src/commands/ads/meta/index.ts
13089
- import { defineCommand as defineCommand67 } from "citty";
13089
+ import { defineCommand as defineCommand68 } from "citty";
13090
13090
 
13091
13091
  // src/commands/ads/meta/account.ts
13092
13092
  import { defineCommand as defineCommand52 } from "citty";
@@ -15372,9 +15372,40 @@ var metaMediaCommand = defineCommand64({
15372
15372
  subCommands: { upload: mediaUploadCommand }
15373
15373
  });
15374
15374
 
15375
- // src/commands/ads/meta/pixels.ts
15375
+ // src/commands/ads/meta/pages.ts
15376
15376
  import { defineCommand as defineCommand65 } from "citty";
15377
- var pixelsCommand = defineCommand65({
15377
+ var pagesCommand = defineCommand65({
15378
+ meta: {
15379
+ name: "pages",
15380
+ description: `List the Facebook Pages the connected user manages. Every Meta ad publishes from a Page, so use this to find the Page id an ad should run from instead of asking the user for it. The 'tasks' field shows what the user can do on each Page (ADVERTISE means it can back ads).
15381
+
15382
+ Examples:
15383
+ baker ads meta pages`
15384
+ },
15385
+ args: {
15386
+ "skip-cache": { type: "boolean", description: "Bypass server-side cache" },
15387
+ output: { type: "string", description: "Output format", default: "json" }
15388
+ },
15389
+ run: async ({ args }) => {
15390
+ try {
15391
+ const params = {};
15392
+ if (args["skip-cache"]) params["skip-cache"] = "true";
15393
+ const data = await apiGet("/api/ads/meta/pages", params);
15394
+ const fmt = csvOrJson(args);
15395
+ if (fmt !== "json") {
15396
+ writeAdsOutput(data, fmt);
15397
+ return;
15398
+ }
15399
+ writeAdsJson({ ok: true, data });
15400
+ } catch (err) {
15401
+ handleMetaError(err);
15402
+ }
15403
+ }
15404
+ });
15405
+
15406
+ // src/commands/ads/meta/pixels.ts
15407
+ import { defineCommand as defineCommand66 } from "citty";
15408
+ var pixelsCommand = defineCommand66({
15378
15409
  meta: {
15379
15410
  name: "pixels",
15380
15411
  description: `List Meta Pixels for an ad account, or fetch firing stats for one pixel.
@@ -15445,7 +15476,7 @@ function emit(data, args) {
15445
15476
 
15446
15477
  // src/commands/ads/meta/preview.ts
15447
15478
  import { writeFileSync as writeFileSync2 } from "fs";
15448
- import { defineCommand as defineCommand66 } from "citty";
15479
+ import { defineCommand as defineCommand67 } from "citty";
15449
15480
  var VALID_AD_FORMATS = [
15450
15481
  "DESKTOP_FEED_STANDARD",
15451
15482
  "MOBILE_FEED_STANDARD",
@@ -15479,7 +15510,7 @@ var VALID_AD_FORMATS = [
15479
15510
  "MARKETPLACE_MOBILE",
15480
15511
  "BIZ_DISCO_FEED_MOBILE"
15481
15512
  ];
15482
- var previewCommand = defineCommand66({
15513
+ var previewCommand = defineCommand67({
15483
15514
  meta: {
15484
15515
  name: "preview",
15485
15516
  description: `Generate a Meta-hosted preview iframe for a creative or ad. Returns iframe HTML which you
@@ -15526,7 +15557,7 @@ Examples:
15526
15557
  });
15527
15558
 
15528
15559
  // src/commands/ads/meta/index.ts
15529
- var metaCommand = defineCommand67({
15560
+ var metaCommand = defineCommand68({
15530
15561
  meta: {
15531
15562
  name: "meta",
15532
15563
  description: `Meta Marketing API \u2014 AI-first command surface (Facebook + Instagram ads).
@@ -15535,6 +15566,7 @@ Discovery:
15535
15566
  baker ads meta accounts \u2014 accounts in this company's connected scope
15536
15567
  baker ads meta accounts --include-all \u2014 every account the token can see
15537
15568
  baker ads meta businesses \u2014 Business Manager IDs
15569
+ baker ads meta pages \u2014 Facebook Pages the user manages (an ad's identity)
15538
15570
 
15539
15571
  Snapshot a running account (default = ACTIVE only):
15540
15572
  baker ads meta campaigns --account-id act_123
@@ -15566,6 +15598,7 @@ Full guide: __tooling__/docs/tools/baker/ads-meta.md`
15566
15598
  accounts: accountsCommand3,
15567
15599
  account: accountCommand2,
15568
15600
  businesses: businessesCommand,
15601
+ pages: pagesCommand,
15569
15602
  campaigns: campaignsCommand3,
15570
15603
  adsets: adsetsCommand,
15571
15604
  ads: adsListCommand,
@@ -15581,10 +15614,10 @@ Full guide: __tooling__/docs/tools/baker/ads-meta.md`
15581
15614
  });
15582
15615
 
15583
15616
  // src/commands/ads/x/index.ts
15584
- import { defineCommand as defineCommand84 } from "citty";
15617
+ import { defineCommand as defineCommand85 } from "citty";
15585
15618
 
15586
15619
  // src/commands/ads/x/accounts.ts
15587
- import { defineCommand as defineCommand68 } from "citty";
15620
+ import { defineCommand as defineCommand69 } from "citty";
15588
15621
  registerSchema({
15589
15622
  command: "ads.x.accounts",
15590
15623
  description: "List all accessible X Ads accounts. Returns accounts with id (base36), name, approval_status, timezone, currency. Run this first to find account IDs for other commands.",
@@ -15613,7 +15646,7 @@ function handleAccountsError2(err) {
15613
15646
  writeAdsJson({ ok: false, error: { code: "NETWORK_ERROR", message: "Unexpected error" } });
15614
15647
  process.exit(1);
15615
15648
  }
15616
- var accountsCommand4 = defineCommand68({
15649
+ var accountsCommand4 = defineCommand69({
15617
15650
  meta: {
15618
15651
  name: "accounts",
15619
15652
  description: `List accessible X Ads accounts. Returns account IDs needed for all other commands.
@@ -15653,7 +15686,7 @@ Examples:
15653
15686
  });
15654
15687
 
15655
15688
  // src/commands/ads/x/active-entities.ts
15656
- import { defineCommand as defineCommand69 } from "citty";
15689
+ import { defineCommand as defineCommand70 } from "citty";
15657
15690
 
15658
15691
  // src/commands/ads/x/error-parser.ts
15659
15692
  function mapXErrorCode(message) {
@@ -15804,7 +15837,7 @@ function parseCsv(v) {
15804
15837
  const parts = v.split(",").map((s) => s.trim()).filter(Boolean);
15805
15838
  return parts.length > 0 ? parts : void 0;
15806
15839
  }
15807
- var activeEntitiesCommand = defineCommand69({
15840
+ var activeEntitiesCommand = defineCommand70({
15808
15841
  meta: {
15809
15842
  name: "active-entities",
15810
15843
  description: `List entities with metric activity in a time range.
@@ -15862,7 +15895,7 @@ Examples:
15862
15895
  });
15863
15896
 
15864
15897
  // src/commands/ads/x/audiences.ts
15865
- import { defineCommand as defineCommand70 } from "citty";
15898
+ import { defineCommand as defineCommand71 } from "citty";
15866
15899
  registerSchema({
15867
15900
  command: "ads.x.audiences",
15868
15901
  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.",
@@ -15872,7 +15905,7 @@ registerSchema({
15872
15905
  output: { type: "string", description: "Format: json|csv|md", required: false, default: "json" }
15873
15906
  }
15874
15907
  });
15875
- var audiencesCommand4 = defineCommand70({
15908
+ var audiencesCommand4 = defineCommand71({
15876
15909
  meta: {
15877
15910
  name: "audiences",
15878
15911
  description: `List X Ads custom audiences.
@@ -15921,7 +15954,7 @@ Examples:
15921
15954
  });
15922
15955
 
15923
15956
  // src/commands/ads/x/campaigns.ts
15924
- import { defineCommand as defineCommand71 } from "citty";
15957
+ import { defineCommand as defineCommand72 } from "citty";
15925
15958
 
15926
15959
  // src/commands/ads/x/run-list.ts
15927
15960
  function buildCleanParams(opts) {
@@ -15985,7 +16018,7 @@ registerSchema({
15985
16018
  output: { type: "string", description: "Format: json|csv|md", required: false, default: "json" }
15986
16019
  }
15987
16020
  });
15988
- var campaignsCommand4 = defineCommand71({
16021
+ var campaignsCommand4 = defineCommand72({
15989
16022
  meta: {
15990
16023
  name: "campaigns",
15991
16024
  description: `List X Ads campaigns. Returns budget, schedule, funding instrument, status.
@@ -16027,7 +16060,7 @@ Examples:
16027
16060
  });
16028
16061
 
16029
16062
  // src/commands/ads/x/cards.ts
16030
- import { defineCommand as defineCommand72 } from "citty";
16063
+ import { defineCommand as defineCommand73 } from "citty";
16031
16064
  registerSchema({
16032
16065
  command: "ads.x.cards",
16033
16066
  description: "List website cards, video cards, and carousels for an X Ads account.",
@@ -16037,7 +16070,7 @@ registerSchema({
16037
16070
  output: { type: "string", description: "Format: json|csv|md", required: false, default: "json" }
16038
16071
  }
16039
16072
  });
16040
- var cardsCommand = defineCommand72({
16073
+ var cardsCommand = defineCommand73({
16041
16074
  meta: {
16042
16075
  name: "cards",
16043
16076
  description: `List X Ads cards (rich creatives).
@@ -16086,7 +16119,7 @@ Examples:
16086
16119
  });
16087
16120
 
16088
16121
  // src/commands/ads/x/funding.ts
16089
- import { defineCommand as defineCommand73 } from "citty";
16122
+ import { defineCommand as defineCommand74 } from "citty";
16090
16123
  registerSchema({
16091
16124
  command: "ads.x.funding",
16092
16125
  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.",
@@ -16096,7 +16129,7 @@ registerSchema({
16096
16129
  output: { type: "string", description: "Format: json|csv|md", required: false, default: "json" }
16097
16130
  }
16098
16131
  });
16099
- var fundingCommand = defineCommand73({
16132
+ var fundingCommand = defineCommand74({
16100
16133
  meta: {
16101
16134
  name: "funding",
16102
16135
  description: `List funding instruments for an X Ads account.
@@ -16145,7 +16178,7 @@ Examples:
16145
16178
  });
16146
16179
 
16147
16180
  // src/commands/ads/x/line-items.ts
16148
- import { defineCommand as defineCommand74 } from "citty";
16181
+ import { defineCommand as defineCommand75 } from "citty";
16149
16182
  registerSchema({
16150
16183
  command: "ads.x.lineItems",
16151
16184
  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).",
@@ -16157,7 +16190,7 @@ registerSchema({
16157
16190
  "no-cache": { type: "boolean", description: "Skip cache", required: false }
16158
16191
  }
16159
16192
  });
16160
- var lineItemsCommand = defineCommand74({
16193
+ var lineItemsCommand = defineCommand75({
16161
16194
  meta: {
16162
16195
  name: "line-items",
16163
16196
  description: `List X Ads line items (ad groups).
@@ -16198,7 +16231,7 @@ Examples:
16198
16231
  });
16199
16232
 
16200
16233
  // src/commands/ads/x/media.ts
16201
- import { defineCommand as defineCommand75 } from "citty";
16234
+ import { defineCommand as defineCommand76 } from "citty";
16202
16235
  registerSchema({
16203
16236
  command: "ads.x.media",
16204
16237
  description: "List media assets in the X Ads media library (images, GIFs, videos). Filter by media-type (IMAGE, GIF, VIDEO).",
@@ -16209,7 +16242,7 @@ registerSchema({
16209
16242
  output: { type: "string", description: "Format: json|csv|md", required: false, default: "json" }
16210
16243
  }
16211
16244
  });
16212
- var mediaCommand = defineCommand75({
16245
+ var mediaCommand = defineCommand76({
16213
16246
  meta: {
16214
16247
  name: "media",
16215
16248
  description: `List media assets in the X Ads media library.
@@ -16261,7 +16294,7 @@ Examples:
16261
16294
  });
16262
16295
 
16263
16296
  // src/commands/ads/x/promoted-tweets.ts
16264
- import { defineCommand as defineCommand76 } from "citty";
16297
+ import { defineCommand as defineCommand77 } from "citty";
16265
16298
  registerSchema({
16266
16299
  command: "ads.x.promotedTweets",
16267
16300
  description: "List promoted tweets for an X Ads account. Returns id, line_item_id, tweet_id, approval_status. Filter by line-item-ids (CSV).",
@@ -16272,7 +16305,7 @@ registerSchema({
16272
16305
  "no-cache": { type: "boolean", description: "Skip cache", required: false }
16273
16306
  }
16274
16307
  });
16275
- var promotedTweetsCommand = defineCommand76({
16308
+ var promotedTweetsCommand = defineCommand77({
16276
16309
  meta: {
16277
16310
  name: "promoted-tweets",
16278
16311
  description: `List X Ads promoted tweets.
@@ -16326,11 +16359,11 @@ Examples:
16326
16359
  });
16327
16360
 
16328
16361
  // src/commands/ads/x/stats/index.ts
16329
- import { defineCommand as defineCommand81 } from "citty";
16362
+ import { defineCommand as defineCommand82 } from "citty";
16330
16363
 
16331
16364
  // src/commands/ads/x/stats/job.ts
16332
16365
  import { gunzipSync } from "zlib";
16333
- import { defineCommand as defineCommand77 } from "citty";
16366
+ import { defineCommand as defineCommand78 } from "citty";
16334
16367
  var POLL_INTERVAL_MS2 = 1e4;
16335
16368
  var DEADLINE_MS = 12 * 60 * 1e3;
16336
16369
  var RESULT_CACHE_TTL_MS = 6 * 60 * 60 * 1e3;
@@ -16400,7 +16433,7 @@ async function pollUntilDone(accountId, jobId) {
16400
16433
  function buildCacheKey(body) {
16401
16434
  return `stats-job:${JSON.stringify(body)}`;
16402
16435
  }
16403
- var statsJobCommand = defineCommand77({
16436
+ var statsJobCommand = defineCommand78({
16404
16437
  meta: {
16405
16438
  name: "job",
16406
16439
  description: `Async X Ads stats job, sync from the CLI's perspective. Creates \u2192 polls \u2192 downloads \u2192 returns.
@@ -16505,7 +16538,7 @@ For fine-grained control (don't wait, poll yourself), use:
16505
16538
  });
16506
16539
 
16507
16540
  // src/commands/ads/x/stats/job-create.ts
16508
- import { defineCommand as defineCommand78 } from "citty";
16541
+ import { defineCommand as defineCommand79 } from "citty";
16509
16542
  registerSchema({
16510
16543
  command: "ads.x.statsJobCreate",
16511
16544
  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.",
@@ -16528,7 +16561,7 @@ function parseCsv3(v) {
16528
16561
  const parts = v.split(",").map((s) => s.trim()).filter(Boolean);
16529
16562
  return parts.length > 0 ? parts : void 0;
16530
16563
  }
16531
- var statsJobCreateCommand = defineCommand78({
16564
+ var statsJobCreateCommand = defineCommand79({
16532
16565
  meta: {
16533
16566
  name: "job-create",
16534
16567
  description: `Create an async X Ads stats job (up to 90 days, supports segmentation).
@@ -16591,7 +16624,7 @@ Examples:
16591
16624
  });
16592
16625
 
16593
16626
  // src/commands/ads/x/stats/job-status.ts
16594
- import { defineCommand as defineCommand79 } from "citty";
16627
+ import { defineCommand as defineCommand80 } from "citty";
16595
16628
  registerSchema({
16596
16629
  command: "ads.x.statsJobStatus",
16597
16630
  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).",
@@ -16601,7 +16634,7 @@ registerSchema({
16601
16634
  "job-ids": { type: "string", description: "CSV of job IDs", required: false }
16602
16635
  }
16603
16636
  });
16604
- var statsJobStatusCommand = defineCommand79({
16637
+ var statsJobStatusCommand = defineCommand80({
16605
16638
  meta: {
16606
16639
  name: "job-status",
16607
16640
  description: `Poll the status of an async X Ads stats job.
@@ -16642,7 +16675,7 @@ Examples:
16642
16675
  });
16643
16676
 
16644
16677
  // src/commands/ads/x/stats/sync.ts
16645
- import { defineCommand as defineCommand80 } from "citty";
16678
+ import { defineCommand as defineCommand81 } from "citty";
16646
16679
 
16647
16680
  // src/commands/ads/x/presets.ts
16648
16681
  var X_STATS_PRESETS = [
@@ -16801,7 +16834,7 @@ async function runSync(args, q) {
16801
16834
  process.exit(1);
16802
16835
  }
16803
16836
  }
16804
- var statsSyncCommand = defineCommand80({
16837
+ var statsSyncCommand = defineCommand81({
16805
16838
  meta: {
16806
16839
  name: "sync",
16807
16840
  description: `Synchronous X Ads analytics (max 7-day window).
@@ -16844,7 +16877,7 @@ Examples:
16844
16877
  });
16845
16878
 
16846
16879
  // src/commands/ads/x/stats/index.ts
16847
- var statsCommand = defineCommand81({
16880
+ var statsCommand = defineCommand82({
16848
16881
  meta: {
16849
16882
  name: "stats",
16850
16883
  description: `X Ads analytics. Sync (\u22647 days, no segmentation) or async jobs (\u226490 days, segmentable).
@@ -16872,7 +16905,7 @@ Examples:
16872
16905
  });
16873
16906
 
16874
16907
  // src/commands/ads/x/targeting-constants.ts
16875
- import { defineCommand as defineCommand82 } from "citty";
16908
+ import { defineCommand as defineCommand83 } from "citty";
16876
16909
  var ALLOWED_CONSTANTS = [
16877
16910
  "locations",
16878
16911
  "interests",
@@ -16900,7 +16933,7 @@ registerSchema({
16900
16933
  "no-cache": { type: "boolean", description: "Skip cache", required: false }
16901
16934
  }
16902
16935
  });
16903
- var targetingConstantsCommand = defineCommand82({
16936
+ var targetingConstantsCommand = defineCommand83({
16904
16937
  meta: {
16905
16938
  name: "targeting-constants",
16906
16939
  description: `Lookup X Ads targeting constants.
@@ -16950,7 +16983,7 @@ Examples:
16950
16983
  });
16951
16984
 
16952
16985
  // src/commands/ads/x/targeting-criteria.ts
16953
- import { defineCommand as defineCommand83 } from "citty";
16986
+ import { defineCommand as defineCommand84 } from "citty";
16954
16987
  registerSchema({
16955
16988
  command: "ads.x.targetingCriteria",
16956
16989
  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.",
@@ -16960,7 +16993,7 @@ registerSchema({
16960
16993
  "no-cache": { type: "boolean", description: "Skip cache", required: false }
16961
16994
  }
16962
16995
  });
16963
- var targetingCriteriaCommand = defineCommand83({
16996
+ var targetingCriteriaCommand = defineCommand84({
16964
16997
  meta: {
16965
16998
  name: "targeting-criteria",
16966
16999
  description: `List targeting criteria attached to line items.
@@ -17011,7 +17044,7 @@ Examples:
17011
17044
  });
17012
17045
 
17013
17046
  // src/commands/ads/x/index.ts
17014
- var xCommand = defineCommand84({
17047
+ var xCommand = defineCommand85({
17015
17048
  meta: {
17016
17049
  name: "x",
17017
17050
  description: `X (Twitter) Ads commands. Read campaigns, line items, promoted tweets, creatives, audiences, and analytics.
@@ -17050,7 +17083,7 @@ Full guide: __tooling__/docs/tools/baker/ads-x.md`
17050
17083
  });
17051
17084
 
17052
17085
  // src/commands/ads/index.ts
17053
- var adsCommand2 = defineCommand85({
17086
+ var adsCommand2 = defineCommand86({
17054
17087
  meta: {
17055
17088
  name: "ads",
17056
17089
  description: `Ad platform commands. Each platform exposes its own native command surface \u2014 no forced parity.
@@ -17081,12 +17114,12 @@ Full guides: __tooling__/docs/tools/baker/ads-<platform>.md (google|meta|linkedi
17081
17114
  });
17082
17115
 
17083
17116
  // src/commands/brand/index.ts
17084
- import { defineCommand as defineCommand87 } from "citty";
17117
+ import { defineCommand as defineCommand88 } from "citty";
17085
17118
 
17086
17119
  // src/commands/brand/fonts.ts
17087
17120
  import { mkdir, readFile, writeFile } from "fs/promises";
17088
17121
  import path from "path";
17089
- import { defineCommand as defineCommand86 } from "citty";
17122
+ import { defineCommand as defineCommand87 } from "citty";
17090
17123
 
17091
17124
  // src/engine/brand/fonts.ts
17092
17125
  var GOOGLE_CSS2 = "https://fonts.googleapis.com/css2";
@@ -17258,7 +17291,7 @@ async function readGlobalCss() {
17258
17291
  return "";
17259
17292
  }
17260
17293
  }
17261
- var fontsCheckCommand = defineCommand86({
17294
+ var fontsCheckCommand = defineCommand87({
17262
17295
  meta: {
17263
17296
  name: "check",
17264
17297
  description: "Verify the brand's fonts really exist. For every family/weight src/styles/global.css requests from Google Fonts, ask Google what it actually serves and report anything missing \u2014 a weight nobody serves renders as a synthesized fallback and looks off-brand everywhere."
@@ -17302,7 +17335,7 @@ var fontsCheckCommand = defineCommand86({
17302
17335
  });
17303
17336
  }
17304
17337
  });
17305
- var fontsFetchCommand = defineCommand86({
17338
+ var fontsFetchCommand = defineCommand87({
17306
17339
  meta: {
17307
17340
  name: "fetch",
17308
17341
  description: "Download a Google font into src/brand/fonts/ and print the @font-face block to paste above @theme in src/styles/global.css. Use when a brand font should be self-hosted rather than requested from Google on every page load."
@@ -17384,7 +17417,7 @@ var fontsFetchCommand = defineCommand86({
17384
17417
  });
17385
17418
  }
17386
17419
  });
17387
- var fontsCommand = defineCommand86({
17420
+ var fontsCommand = defineCommand87({
17388
17421
  meta: {
17389
17422
  name: "fonts",
17390
17423
  description: `Verify and self-host the brand's typefaces.
@@ -17402,7 +17435,7 @@ Subcommands:
17402
17435
  });
17403
17436
 
17404
17437
  // src/commands/brand/index.ts
17405
- var brandCommand = defineCommand87({
17438
+ var brandCommand = defineCommand88({
17406
17439
  meta: {
17407
17440
  name: "brand",
17408
17441
  description: `Brand asset verification for src/brand/.
@@ -17418,11 +17451,11 @@ Subcommands:
17418
17451
  });
17419
17452
 
17420
17453
  // src/commands/canvas/index.ts
17421
- import { defineCommand as defineCommand98 } from "citty";
17454
+ import { defineCommand as defineCommand99 } from "citty";
17422
17455
 
17423
17456
  // src/commands/canvas/catalog.ts
17424
- import { defineCommand as defineCommand88 } from "citty";
17425
- var catalogCommand = defineCommand88({
17457
+ import { defineCommand as defineCommand89 } from "citty";
17458
+ var catalogCommand = defineCommand89({
17426
17459
  meta: {
17427
17460
  name: "catalog",
17428
17461
  description: "Print the agent-facing node catalog (JSON Schema). Includes every registered node grouped by category."
@@ -17437,7 +17470,7 @@ var catalogCommand = defineCommand88({
17437
17470
  // src/commands/canvas/critique.ts
17438
17471
  import { readFile as readFile2 } from "fs/promises";
17439
17472
  import path2 from "path";
17440
- import { defineCommand as defineCommand89 } from "citty";
17473
+ import { defineCommand as defineCommand90 } from "citty";
17441
17474
 
17442
17475
  // src/engine/scaffold/lib/critique.ts
17443
17476
  var VIBE_CUE = /\b(light|lighting|golden|moody|warm|cool|tone|grade|contrast|shadow|glow|rim|backlit|neon|soft)\b/i;
@@ -17557,7 +17590,7 @@ function critiqueCanvas(canvas) {
17557
17590
  }
17558
17591
 
17559
17592
  // src/commands/canvas/critique.ts
17560
- var critiqueCommand = defineCommand89({
17593
+ var critiqueCommand = defineCommand90({
17561
17594
  meta: {
17562
17595
  name: "critique",
17563
17596
  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."
@@ -17599,9 +17632,9 @@ import { execFile } from "child_process";
17599
17632
  import { readdir, readFile as readFile3, stat } from "fs/promises";
17600
17633
  import path3 from "path";
17601
17634
  import { promisify } from "util";
17602
- import { defineCommand as defineCommand90 } from "citty";
17635
+ import { defineCommand as defineCommand91 } from "citty";
17603
17636
  var execFileAsync = promisify(execFile);
17604
- var inspectCommand = defineCommand90({
17637
+ var inspectCommand = defineCommand91({
17605
17638
  meta: {
17606
17639
  name: "inspect",
17607
17640
  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."
@@ -17709,12 +17742,12 @@ async function probeDuration(filePath) {
17709
17742
 
17710
17743
  // src/commands/canvas/rerun.ts
17711
17744
  import path14 from "path";
17712
- import { defineCommand as defineCommand92 } from "citty";
17745
+ import { defineCommand as defineCommand93 } from "citty";
17713
17746
 
17714
17747
  // src/commands/canvas/run.ts
17715
17748
  import { readFile as readFile10 } from "fs/promises";
17716
17749
  import path13 from "path";
17717
- import { defineCommand as defineCommand91 } from "citty";
17750
+ import { defineCommand as defineCommand92 } from "citty";
17718
17751
 
17719
17752
  // src/commands/canvas/placeholders.ts
17720
17753
  function unsuppliedPlaceholderAssets(canvas) {
@@ -21842,7 +21875,7 @@ async function restoreRunSnapshot(manifest, targetDir, opts = {}) {
21842
21875
  }
21843
21876
 
21844
21877
  // src/commands/canvas/run.ts
21845
- var runCommand = defineCommand91({
21878
+ var runCommand = defineCommand92({
21846
21879
  meta: { name: "run", description: "Validate and execute a canvas JSON file." },
21847
21880
  args: {
21848
21881
  file: { type: "positional", required: true, description: "Path to canvas JSON" },
@@ -22212,7 +22245,7 @@ async function postInitialRunRecord(client, payload) {
22212
22245
 
22213
22246
  // src/commands/canvas/rerun.ts
22214
22247
  var SLUG_PATTERN = /^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/;
22215
- var rerunCommand = defineCommand92({
22248
+ var rerunCommand = defineCommand93({
22216
22249
  meta: {
22217
22250
  name: "rerun",
22218
22251
  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."
@@ -22309,7 +22342,7 @@ async function fetchManifest(url) {
22309
22342
  // src/commands/canvas/scaffold-static-ad.ts
22310
22343
  import { access, mkdir as mkdir6, readFile as readFile12, writeFile as writeFile7 } from "fs/promises";
22311
22344
  import path18 from "path";
22312
- import { defineCommand as defineCommand94 } from "citty";
22345
+ import { defineCommand as defineCommand95 } from "citty";
22313
22346
 
22314
22347
  // src/engine/scaffold/staticAd.ts
22315
22348
  import { z as z19 } from "zod";
@@ -22655,7 +22688,7 @@ function isValidScaffoldSlug(slug) {
22655
22688
  // src/commands/canvas/sync-definition.ts
22656
22689
  import { readdir as readdir5, readFile as readFile11, stat as stat3 } from "fs/promises";
22657
22690
  import path17 from "path";
22658
- import { defineCommand as defineCommand93 } from "citty";
22691
+ import { defineCommand as defineCommand94 } from "citty";
22659
22692
 
22660
22693
  // src/commands/canvas/definition-graph.ts
22661
22694
  var MAX_NODES = 300;
@@ -22768,7 +22801,7 @@ async function resolveCanvasPath(inputPath) {
22768
22801
  const chosen = (slug ? canvases.find((name) => name === `${slug}.canvas.json`) : void 0) ?? canvases[0];
22769
22802
  return chosen ? path17.join(dir, chosen) : null;
22770
22803
  }
22771
- var syncDefinitionCommand = defineCommand93({
22804
+ var syncDefinitionCommand = defineCommand94({
22772
22805
  meta: {
22773
22806
  name: "sync-definition",
22774
22807
  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."
@@ -22996,7 +23029,7 @@ async function runVisionPasses(canvas) {
22996
23029
  return fail3("read_outputs", e instanceof Error ? e.message : String(e));
22997
23030
  }
22998
23031
  }
22999
- var scaffoldStaticAdCommand = defineCommand94({
23032
+ var scaffoldStaticAdCommand = defineCommand95({
23000
23033
  meta: {
23001
23034
  name: "scaffold-static-ad",
23002
23035
  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."
@@ -23185,7 +23218,7 @@ var scaffoldStaticAdCommand = defineCommand94({
23185
23218
  import { access as access2, cp, mkdir as mkdir7, readFile as readFile15, rm as rm6, writeFile as writeFile8 } from "fs/promises";
23186
23219
  import { tmpdir as tmpdir2 } from "os";
23187
23220
  import path21 from "path";
23188
- import { defineCommand as defineCommand95 } from "citty";
23221
+ import { defineCommand as defineCommand96 } from "citty";
23189
23222
 
23190
23223
  // src/engine/scaffold/lib/model-router.ts
23191
23224
  var SEEDANCE = "bytedance/seedance-2.0";
@@ -23643,7 +23676,7 @@ async function runAnalysisPasses(deconstructCanvas, selectModel) {
23643
23676
  return fail4("deconstruct", e instanceof Error ? e.message : String(e));
23644
23677
  }
23645
23678
  }
23646
- var scaffoldVideoCommand = defineCommand95({
23679
+ var scaffoldVideoCommand = defineCommand96({
23647
23680
  meta: {
23648
23681
  name: "scaffold-video",
23649
23682
  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`."
@@ -23953,7 +23986,7 @@ var scaffoldVideoCommand = defineCommand95({
23953
23986
  // src/commands/canvas/set-prompt.ts
23954
23987
  import { readFile as readFile16, writeFile as writeFile9 } from "fs/promises";
23955
23988
  import path22 from "path";
23956
- import { defineCommand as defineCommand96 } from "citty";
23989
+ import { defineCommand as defineCommand97 } from "citty";
23957
23990
  function setNodePrompt(canvas, nodeId, text) {
23958
23991
  const nodes = canvas?.nodes;
23959
23992
  if (!Array.isArray(nodes)) throw new Error("canvas has no nodes array");
@@ -23968,7 +24001,7 @@ function setNodePrompt(canvas, nodeId, text) {
23968
24001
  newNodes[idx] = newNode;
23969
24002
  return { ...canvas, nodes: newNodes };
23970
24003
  }
23971
- var setPromptCommand = defineCommand96({
24004
+ var setPromptCommand = defineCommand97({
23972
24005
  meta: {
23973
24006
  name: "set-prompt",
23974
24007
  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."
@@ -24028,8 +24061,8 @@ var setPromptCommand = defineCommand96({
24028
24061
  // src/commands/canvas/validate.ts
24029
24062
  import { readFile as readFile17 } from "fs/promises";
24030
24063
  import path23 from "path";
24031
- import { defineCommand as defineCommand97 } from "citty";
24032
- var validateCommand = defineCommand97({
24064
+ import { defineCommand as defineCommand98 } from "citty";
24065
+ var validateCommand = defineCommand98({
24033
24066
  meta: {
24034
24067
  name: "validate",
24035
24068
  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)."
@@ -24099,7 +24132,7 @@ var validateCommand = defineCommand97({
24099
24132
  });
24100
24133
 
24101
24134
  // src/commands/canvas/index.ts
24102
- var canvasCommand = defineCommand98({
24135
+ var canvasCommand = defineCommand99({
24103
24136
  meta: {
24104
24137
  name: "canvas",
24105
24138
  description: `Run Baker creative canvas JSON files locally. Local nodes execute in-process; remote nodes POST to the Convex backend gateway.
@@ -24133,7 +24166,7 @@ Full guide: __tooling__/docs/tools/baker/canvas.md`
24133
24166
  });
24134
24167
 
24135
24168
  // src/commands/chats/index.ts
24136
- import { defineCommand as defineCommand99 } from "citty";
24169
+ import { defineCommand as defineCommand100 } from "citty";
24137
24170
  var STATUS_GROUPS = ["active", "archived", "all"];
24138
24171
  var REPO_SURFACES = ["knowledge", "company", "brand", "landings", "flows", "creatives"];
24139
24172
  function parseBoundedInt(raw, name, min, max) {
@@ -24155,7 +24188,7 @@ registerSchema({
24155
24188
  full: { type: "boolean", description: "Include each Session's full change list", required: false, default: false }
24156
24189
  }
24157
24190
  });
24158
- var listCommand10 = defineCommand99({
24191
+ var listCommand10 = defineCommand100({
24159
24192
  meta: { name: "list", description: "List other Sessions on this account, newest first." },
24160
24193
  args: {
24161
24194
  status: { type: "string", description: "Filter: active|archived|all (default: all)", required: false },
@@ -24210,7 +24243,7 @@ registerSchema({
24210
24243
  }
24211
24244
  }
24212
24245
  });
24213
- var viewCommand = defineCommand99({
24246
+ var viewCommand = defineCommand100({
24214
24247
  meta: {
24215
24248
  name: "view",
24216
24249
  description: "Inspect one Session's full effects \u2014 git content + actions/tags/ads, kickoff, commits."
@@ -24254,7 +24287,7 @@ registerSchema({
24254
24287
  }
24255
24288
  }
24256
24289
  });
24257
- var transcriptCommand = defineCommand99({
24290
+ var transcriptCommand = defineCommand100({
24258
24291
  meta: { name: "transcript", description: "Read another Session's conversation." },
24259
24292
  args: {
24260
24293
  id: { type: "positional", description: "The Session id", required: true },
@@ -24306,7 +24339,7 @@ registerSchema({
24306
24339
  }
24307
24340
  }
24308
24341
  });
24309
- var diffCommand = defineCommand99({
24342
+ var diffCommand = defineCommand100({
24310
24343
  meta: { name: "diff", description: "See a published Session's real file-level changes." },
24311
24344
  args: {
24312
24345
  id: { type: "positional", description: "The Session id", required: true },
@@ -24350,7 +24383,7 @@ var diffCommand = defineCommand99({
24350
24383
  }
24351
24384
  }
24352
24385
  });
24353
- var chatsCommand = defineCommand99({
24386
+ var chatsCommand = defineCommand100({
24354
24387
  meta: {
24355
24388
  name: "chats",
24356
24389
  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.
@@ -24365,10 +24398,10 @@ Full guide: __tooling__/docs/tools/baker/chats.md`
24365
24398
  });
24366
24399
 
24367
24400
  // src/commands/creatives/index.ts
24368
- import { defineCommand as defineCommand101 } from "citty";
24401
+ import { defineCommand as defineCommand102 } from "citty";
24369
24402
 
24370
24403
  // src/commands/creatives/publish.ts
24371
- import { defineCommand as defineCommand100 } from "citty";
24404
+ import { defineCommand as defineCommand101 } from "citty";
24372
24405
 
24373
24406
  // src/commands/images/api.ts
24374
24407
  import { readFile as readFile18 } from "fs/promises";
@@ -24512,7 +24545,7 @@ async function publishCreative(args, deps = defaultImageApiDeps) {
24512
24545
  chatId: chatIdFromEnv()
24513
24546
  });
24514
24547
  }
24515
- var publishCommand = defineCommand100({
24548
+ var publishCommand = defineCommand101({
24516
24549
  meta: {
24517
24550
  name: "publish",
24518
24551
  description: "Publish a final static creative image to Baker Creatives and print the creative reference JSON."
@@ -24570,7 +24603,7 @@ var publishCommand = defineCommand100({
24570
24603
  });
24571
24604
 
24572
24605
  // src/commands/creatives/index.ts
24573
- var creativesCommand3 = defineCommand101({
24606
+ var creativesCommand3 = defineCommand102({
24574
24607
  meta: {
24575
24608
  name: "creatives",
24576
24609
  description: `Publish static ad creatives as first-class Baker outputs.
@@ -24587,7 +24620,7 @@ Full guide: __tooling__/docs/tools/baker/creatives.md`
24587
24620
  });
24588
24621
 
24589
24622
  // src/commands/flows/index.ts
24590
- import { defineCommand as defineCommand102 } from "citty";
24623
+ import { defineCommand as defineCommand103 } from "citty";
24591
24624
 
24592
24625
  // src/commands/flows/shared.ts
24593
24626
  import { existsSync as existsSync4, readdirSync as readdirSync2, readFileSync as readFileSync9 } from "fs";
@@ -24742,7 +24775,7 @@ function displayName(slug) {
24742
24775
  const name = tree.displayName;
24743
24776
  return typeof name === "string" && name.trim() ? name.trim() : slug;
24744
24777
  }
24745
- var listCommand11 = defineCommand102({
24778
+ var listCommand11 = defineCommand103({
24746
24779
  meta: {
24747
24780
  name: "list",
24748
24781
  description: "List Forms in this workspace with the count of confidential fields still needing setup. Example: baker flows list"
@@ -24756,7 +24789,7 @@ var listCommand11 = defineCommand102({
24756
24789
  writeJson({ ok: true, data: { flows } });
24757
24790
  }
24758
24791
  });
24759
- var showCommand2 = defineCommand102({
24792
+ var showCommand2 = defineCommand103({
24760
24793
  meta: {
24761
24794
  name: "show",
24762
24795
  description: "Show a Form's confidential fields and their configuration status (never secret values). Example: baker flows show contact"
@@ -24777,7 +24810,7 @@ var showCommand2 = defineCommand102({
24777
24810
  writeJson({ ok: true, data: response });
24778
24811
  }
24779
24812
  });
24780
- var flowsCommand = defineCommand102({
24813
+ var flowsCommand = defineCommand103({
24781
24814
  meta: {
24782
24815
  name: "flows",
24783
24816
  description: `Read this workspace's Forms (flows) and the configuration status of their confidential fields \u2014 connection secrets, OAuth connections, and third-party field definitions (HubSpot, Calendly, HighLevel, SavvyCal).
@@ -24801,10 +24834,10 @@ Full guide: __tooling__/docs/tools/baker/flows.md`
24801
24834
  });
24802
24835
 
24803
24836
  // src/commands/ga4/index.ts
24804
- import { defineCommand as defineCommand106 } from "citty";
24837
+ import { defineCommand as defineCommand107 } from "citty";
24805
24838
 
24806
24839
  // src/commands/ga4/audit.ts
24807
- import { defineCommand as defineCommand103 } from "citty";
24840
+ import { defineCommand as defineCommand104 } from "citty";
24808
24841
 
24809
24842
  // src/commands/ga4/resolve.ts
24810
24843
  async function fetchProperties(useCache = true) {
@@ -24870,7 +24903,7 @@ registerSchema({
24870
24903
  "no-cache": { type: "boolean", description: "Skip cache, hit API directly", required: false }
24871
24904
  }
24872
24905
  });
24873
- var auditCommand2 = defineCommand103({
24906
+ var auditCommand2 = defineCommand104({
24874
24907
  meta: {
24875
24908
  name: "audit",
24876
24909
  description: `Run all GA4 admin health checks. Returns property config with playbook warnings.
@@ -24925,7 +24958,7 @@ Examples:
24925
24958
  });
24926
24959
 
24927
24960
  // src/commands/ga4/properties.ts
24928
- import { defineCommand as defineCommand104 } from "citty";
24961
+ import { defineCommand as defineCommand105 } from "citty";
24929
24962
  registerSchema({
24930
24963
  command: "ga4.properties",
24931
24964
  description: "List all accessible GA4 properties. Returns property IDs needed for query and audit commands. Run this first to find property IDs.",
@@ -24933,7 +24966,7 @@ registerSchema({
24933
24966
  "no-cache": { type: "boolean", description: "Skip cache, hit API directly", required: false }
24934
24967
  }
24935
24968
  });
24936
- var propertiesCommand = defineCommand104({
24969
+ var propertiesCommand = defineCommand105({
24937
24970
  meta: {
24938
24971
  name: "properties",
24939
24972
  description: `List accessible GA4 properties.
@@ -24983,7 +25016,7 @@ Examples:
24983
25016
  // src/commands/ga4/query.ts
24984
25017
  import { appendFileSync as appendFileSync2, existsSync as existsSync5, readFileSync as readFileSync10, writeFileSync as writeFileSync3 } from "fs";
24985
25018
  import { resolve as resolve2 } from "path";
24986
- import { defineCommand as defineCommand105 } from "citty";
25019
+ import { defineCommand as defineCommand106 } from "citty";
24987
25020
 
24988
25021
  // src/commands/ga4/presets.ts
24989
25022
  var GA4_PRESETS = [
@@ -25118,7 +25151,7 @@ function handleError(err) {
25118
25151
  });
25119
25152
  process.exit(1);
25120
25153
  }
25121
- var queryCommand2 = defineCommand105({
25154
+ var queryCommand2 = defineCommand106({
25122
25155
  meta: {
25123
25156
  name: "query",
25124
25157
  description: `Run GA4 Data API reports. Preset-first with free-form escape hatch.
@@ -25189,7 +25222,7 @@ Free-form (escape hatch):
25189
25222
  });
25190
25223
 
25191
25224
  // src/commands/ga4/index.ts
25192
- var ga4Command = defineCommand106({
25225
+ var ga4Command = defineCommand107({
25193
25226
  meta: {
25194
25227
  name: "ga4",
25195
25228
  description: `Google Analytics 4 commands. Audit property config, run playbook-aligned reports.
@@ -25213,12 +25246,12 @@ Full guide: __tooling__/docs/tools/baker/ga4.md`
25213
25246
  });
25214
25247
 
25215
25248
  // src/commands/gsc/index.ts
25216
- import { defineCommand as defineCommand110 } from "citty";
25249
+ import { defineCommand as defineCommand111 } from "citty";
25217
25250
 
25218
25251
  // src/commands/gsc/query.ts
25219
25252
  import { appendFileSync as appendFileSync3, existsSync as existsSync6, readFileSync as readFileSync11, writeFileSync as writeFileSync4 } from "fs";
25220
25253
  import { resolve as resolve3 } from "path";
25221
- import { defineCommand as defineCommand107 } from "citty";
25254
+ import { defineCommand as defineCommand108 } from "citty";
25222
25255
 
25223
25256
  // src/commands/gsc/presets.ts
25224
25257
  var GSC_PRESETS = [
@@ -25412,7 +25445,7 @@ function handleError2(err) {
25412
25445
  });
25413
25446
  process.exit(1);
25414
25447
  }
25415
- var queryCommand3 = defineCommand107({
25448
+ var queryCommand3 = defineCommand108({
25416
25449
  meta: {
25417
25450
  name: "query",
25418
25451
  description: `Run GSC Search Analytics queries. Preset-first with free-form escape hatch.
@@ -25490,7 +25523,7 @@ Free-form (escape hatch):
25490
25523
  });
25491
25524
 
25492
25525
  // src/commands/gsc/sitemaps.ts
25493
- import { defineCommand as defineCommand108 } from "citty";
25526
+ import { defineCommand as defineCommand109 } from "citty";
25494
25527
  registerSchema({
25495
25528
  command: "gsc.sitemaps",
25496
25529
  description: "List sitemaps for a Search Console site. Check sitemap health and errors.",
@@ -25499,7 +25532,7 @@ registerSchema({
25499
25532
  "no-cache": { type: "boolean", description: "Skip cache, hit API directly", required: false }
25500
25533
  }
25501
25534
  });
25502
- var sitemapsCommand = defineCommand108({
25535
+ var sitemapsCommand = defineCommand109({
25503
25536
  meta: {
25504
25537
  name: "sitemaps",
25505
25538
  description: `List sitemaps for a site. Check health and errors.
@@ -25552,7 +25585,7 @@ Examples:
25552
25585
  });
25553
25586
 
25554
25587
  // src/commands/gsc/sites.ts
25555
- import { defineCommand as defineCommand109 } from "citty";
25588
+ import { defineCommand as defineCommand110 } from "citty";
25556
25589
  registerSchema({
25557
25590
  command: "gsc.sites",
25558
25591
  description: "List all verified Google Search Console sites. Returns site URLs needed for query and sitemaps commands.",
@@ -25560,7 +25593,7 @@ registerSchema({
25560
25593
  "no-cache": { type: "boolean", description: "Skip cache, hit API directly", required: false }
25561
25594
  }
25562
25595
  });
25563
- var sitesCommand = defineCommand109({
25596
+ var sitesCommand = defineCommand110({
25564
25597
  meta: {
25565
25598
  name: "sites",
25566
25599
  description: `List verified Search Console sites.
@@ -25608,7 +25641,7 @@ Examples:
25608
25641
  });
25609
25642
 
25610
25643
  // src/commands/gsc/index.ts
25611
- var gscCommand = defineCommand110({
25644
+ var gscCommand = defineCommand111({
25612
25645
  meta: {
25613
25646
  name: "gsc",
25614
25647
  description: `Google Search Console commands. PPC-SEO arbitrage, brand halo analysis, negative keyword discovery.
@@ -25632,7 +25665,7 @@ Full guide: __tooling__/docs/tools/baker/gsc.md`
25632
25665
  });
25633
25666
 
25634
25667
  // src/commands/history/index.ts
25635
- import { defineCommand as defineCommand111 } from "citty";
25668
+ import { defineCommand as defineCommand112 } from "citty";
25636
25669
  registerSchema({
25637
25670
  command: "history.list",
25638
25671
  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.",
@@ -25687,7 +25720,7 @@ function parseBoundedInt2(raw, name, min, max) {
25687
25720
  }
25688
25721
  return value;
25689
25722
  }
25690
- var listCommand12 = defineCommand111({
25723
+ var listCommand12 = defineCommand112({
25691
25724
  meta: {
25692
25725
  name: "list",
25693
25726
  description: "List recent account changes (unified audit log), newest first."
@@ -25733,7 +25766,7 @@ var listCommand12 = defineCommand111({
25733
25766
  }
25734
25767
  }
25735
25768
  });
25736
- var historyCommand = defineCommand111({
25769
+ var historyCommand = defineCommand112({
25737
25770
  meta: {
25738
25771
  name: "history",
25739
25772
  description: `Unified account history (audit log): what changed, who did it, and when.
@@ -25743,7 +25776,7 @@ Full guide: __tooling__/docs/tools/baker/history.md`
25743
25776
  });
25744
25777
 
25745
25778
  // src/commands/hubspot/index.ts
25746
- import { defineCommand as defineCommand112 } from "citty";
25779
+ import { defineCommand as defineCommand113 } from "citty";
25747
25780
  var EMBED_TYPES = ["legacy", "v4", "unknown"];
25748
25781
  function failNotConnected(err) {
25749
25782
  if (err instanceof ApiError && err.code === "NOT_FOUND" && err.message.includes("No HubSpot account is connected")) {
@@ -25825,7 +25858,7 @@ registerSchema({
25825
25858
  }
25826
25859
  }
25827
25860
  });
25828
- var formsListCommand = defineCommand112({
25861
+ var formsListCommand = defineCommand113({
25829
25862
  meta: {
25830
25863
  name: "list",
25831
25864
  description: "List HubSpot forms with embed type and post-submit action. Example: baker hubspot forms list --redirecting-only"
@@ -25870,7 +25903,7 @@ var formsListCommand = defineCommand112({
25870
25903
  }
25871
25904
  }
25872
25905
  });
25873
- var formsViewCommand = defineCommand112({
25906
+ var formsViewCommand = defineCommand113({
25874
25907
  meta: {
25875
25908
  name: "view",
25876
25909
  description: "Show one HubSpot form's fields and configuration. Example: baker hubspot forms view 1a2b3c"
@@ -25922,7 +25955,7 @@ var formsViewCommand = defineCommand112({
25922
25955
  }
25923
25956
  }
25924
25957
  });
25925
- var meetingsListCommand = defineCommand112({
25958
+ var meetingsListCommand = defineCommand113({
25926
25959
  meta: {
25927
25960
  name: "list",
25928
25961
  description: "List HubSpot meeting links (calendars). Example: baker hubspot meetings list"
@@ -25964,7 +25997,7 @@ var meetingsListCommand = defineCommand112({
25964
25997
  }
25965
25998
  }
25966
25999
  });
25967
- var meetingsViewCommand = defineCommand112({
26000
+ var meetingsViewCommand = defineCommand113({
25968
26001
  meta: {
25969
26002
  name: "view",
25970
26003
  description: "Show one HubSpot meeting link's booking fields. Example: baker hubspot meetings view discovery-call"
@@ -26008,15 +26041,15 @@ var meetingsViewCommand = defineCommand112({
26008
26041
  }
26009
26042
  }
26010
26043
  });
26011
- var formsCommand = defineCommand112({
26044
+ var formsCommand = defineCommand113({
26012
26045
  meta: { name: "forms", description: "HubSpot forms on the connected account." },
26013
26046
  subCommands: { list: formsListCommand, view: formsViewCommand }
26014
26047
  });
26015
- var meetingsCommand = defineCommand112({
26048
+ var meetingsCommand = defineCommand113({
26016
26049
  meta: { name: "meetings", description: "HubSpot meeting links (calendars) on the connected account." },
26017
26050
  subCommands: { list: meetingsListCommand, view: meetingsViewCommand }
26018
26051
  });
26019
- var hubspotCommand = defineCommand112({
26052
+ var hubspotCommand = defineCommand113({
26020
26053
  meta: {
26021
26054
  name: "hubspot",
26022
26055
  description: `Read the connected HubSpot account \u2014 forms and meeting links (calendars) \u2014 and get the blob to wire one into a Form step yourself.
@@ -26037,10 +26070,10 @@ Full guide: __tooling__/docs/tools/baker/hubspot.md`
26037
26070
  });
26038
26071
 
26039
26072
  // src/commands/images/index.ts
26040
- import { defineCommand as defineCommand136 } from "citty";
26073
+ import { defineCommand as defineCommand137 } from "citty";
26041
26074
 
26042
26075
  // src/commands/images/crop.ts
26043
- import { defineCommand as defineCommand113 } from "citty";
26076
+ import { defineCommand as defineCommand114 } from "citty";
26044
26077
 
26045
26078
  // src/lib/image/crop-sprite.ts
26046
26079
  import sharp from "sharp";
@@ -26165,7 +26198,7 @@ function emitError2(err) {
26165
26198
  }
26166
26199
  process.exit(1);
26167
26200
  }
26168
- var cropCommand = defineCommand113({
26201
+ var cropCommand = defineCommand114({
26169
26202
  meta: {
26170
26203
  name: "crop",
26171
26204
  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"
@@ -26201,7 +26234,7 @@ var cropCommand = defineCommand113({
26201
26234
  });
26202
26235
 
26203
26236
  // src/commands/images/delete.ts
26204
- import { defineCommand as defineCommand114 } from "citty";
26237
+ import { defineCommand as defineCommand115 } from "citty";
26205
26238
  registerSchema({
26206
26239
  command: "images.delete",
26207
26240
  description: "Delete an image by ID",
@@ -26215,7 +26248,7 @@ registerSchema({
26215
26248
  }
26216
26249
  }
26217
26250
  });
26218
- var deleteCommand = defineCommand114({
26251
+ var deleteCommand = defineCommand115({
26219
26252
  meta: {
26220
26253
  name: "delete",
26221
26254
  description: "Delete an image by ID. Use --dry-run to preview. Example: baker images delete j571abc123 --dry-run"
@@ -26256,7 +26289,7 @@ var deleteCommand = defineCommand114({
26256
26289
  });
26257
26290
 
26258
26291
  // src/commands/images/dimensions.ts
26259
- import { defineCommand as defineCommand115 } from "citty";
26292
+ import { defineCommand as defineCommand116 } from "citty";
26260
26293
 
26261
26294
  // src/lib/image/dimensions.ts
26262
26295
  import { imageSize } from "image-size";
@@ -26279,7 +26312,7 @@ registerSchema({
26279
26312
  target: { type: "string", description: "Local file path or remote http(s) URL", required: true }
26280
26313
  }
26281
26314
  });
26282
- var dimensionsCommand = defineCommand115({
26315
+ var dimensionsCommand = defineCommand116({
26283
26316
  meta: {
26284
26317
  name: "dimensions",
26285
26318
  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"
@@ -26323,7 +26356,7 @@ var dimensionsCommand = defineCommand115({
26323
26356
  });
26324
26357
 
26325
26358
  // src/commands/images/extract.ts
26326
- import { defineCommand as defineCommand116 } from "citty";
26359
+ import { defineCommand as defineCommand117 } from "citty";
26327
26360
  registerSchema({
26328
26361
  command: "images.extract",
26329
26362
  description: "Extract images from a URL via Firecrawl (formats: images).",
@@ -26339,7 +26372,7 @@ registerSchema({
26339
26372
  }
26340
26373
  }
26341
26374
  });
26342
- var extractCommand = defineCommand116({
26375
+ var extractCommand = defineCommand117({
26343
26376
  meta: {
26344
26377
  name: "extract",
26345
26378
  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"
@@ -26377,7 +26410,7 @@ var extractCommand = defineCommand116({
26377
26410
  });
26378
26411
 
26379
26412
  // src/commands/images/find.ts
26380
- import { defineCommand as defineCommand117 } from "citty";
26413
+ import { defineCommand as defineCommand118 } from "citty";
26381
26414
  registerSchema({
26382
26415
  command: "images.find",
26383
26416
  description: "Fanout image search: library first, then opted-in external providers.",
@@ -26409,7 +26442,7 @@ registerSchema({
26409
26442
  }
26410
26443
  }
26411
26444
  });
26412
- var findCommand = defineCommand117({
26445
+ var findCommand = defineCommand118({
26413
26446
  meta: {
26414
26447
  name: "find",
26415
26448
  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"
@@ -26458,7 +26491,7 @@ var findCommand = defineCommand117({
26458
26491
 
26459
26492
  // src/commands/images/generate.ts
26460
26493
  import { readFile as readFile20 } from "fs/promises";
26461
- import { defineCommand as defineCommand118 } from "citty";
26494
+ import { defineCommand as defineCommand119 } from "citty";
26462
26495
  import sharp2 from "sharp";
26463
26496
  var GENERATE_TIMEOUT_MS = 18e4;
26464
26497
  var REFERENCE_MAX_EDGE = 1536;
@@ -26561,7 +26594,7 @@ async function resolveReferences(spec) {
26561
26594
  }
26562
26595
  return out;
26563
26596
  }
26564
- var generateCommand = defineCommand118({
26597
+ var generateCommand = defineCommand119({
26565
26598
  meta: {
26566
26599
  name: "generate",
26567
26600
  description: "Generate an image with AI and store it in the library (cost-tracked per request via OpenRouter usage). Models mirror the canvas: google/gemini-3.1-flash-image-preview (Nano Banana flash \u2014 default, fast, extreme aspect ratios), google/gemini-3-pro-image-preview (Nano Banana Pro \u2014 highest fidelity), openai/gpt-image-2 (photoreal, cleanest in-image text, best for ad/landing reproduction \u2014 no --image-size, and no 4:5 / 5:4), recraft/recraft-v4.1-pro-vector (vector/SVG-style with palette control). The result is auto-ingested (describe + embed), so the next `baker images library` query finds it. Pass --reference with image URLs and/or local file paths (Pinterest, stock, brand assets, sandbox files) to ground generation in reality.\n\nExamples:\n baker images generate 'a friendly golden retriever sitting in a bright modern living room' --aspect-ratio 16:9\n baker images generate 'hero shot of a matte black water bottle on marble' --model openai/gpt-image-2 --aspect-ratio 3:2\n baker images generate 'lifestyle photo matching this mood' --reference 'https://\u2026/ref1.jpg,https://\u2026/ref2.jpg'\n baker images generate 'put this product on a marble countertop, soft daylight' --reference './src/brand/logos/product.png,./refs/kitchen-mood.jpg'\n baker images generate 'flat geometric mascot, brand palette' --model recraft/recraft-v4.1-pro-vector --rgb-colors '[[10,10,10],[255,80,0]]'"
@@ -26613,7 +26646,7 @@ var generateCommand = defineCommand118({
26613
26646
  });
26614
26647
 
26615
26648
  // src/commands/images/get.ts
26616
- import { defineCommand as defineCommand119 } from "citty";
26649
+ import { defineCommand as defineCommand120 } from "citty";
26617
26650
  registerSchema({
26618
26651
  command: "images.get",
26619
26652
  description: "Get a single image by ID",
@@ -26621,7 +26654,7 @@ registerSchema({
26621
26654
  id: { type: "string", description: "Image ID", required: true }
26622
26655
  }
26623
26656
  });
26624
- var getCommand2 = defineCommand119({
26657
+ var getCommand2 = defineCommand120({
26625
26658
  meta: { name: "get", description: "Get a single image by ID. Example: baker images get j571abc123" },
26626
26659
  args: {
26627
26660
  id: { type: "positional", description: "Image ID", required: false },
@@ -26657,7 +26690,7 @@ var getCommand2 = defineCommand119({
26657
26690
  });
26658
26691
 
26659
26692
  // src/commands/images/gif.ts
26660
- import { defineCommand as defineCommand120 } from "citty";
26693
+ import { defineCommand as defineCommand121 } from "citty";
26661
26694
  registerSchema({
26662
26695
  command: "images.gif",
26663
26696
  description: "Search Giphy for GIFs / reaction memes (paid social creative).",
@@ -26689,7 +26722,7 @@ registerSchema({
26689
26722
  }
26690
26723
  }
26691
26724
  });
26692
- var gifCommand = defineCommand120({
26725
+ var gifCommand = defineCommand121({
26693
26726
  meta: {
26694
26727
  name: "gif",
26695
26728
  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"
@@ -26736,7 +26769,7 @@ var gifCommand = defineCommand120({
26736
26769
  });
26737
26770
 
26738
26771
  // src/commands/images/google.ts
26739
- import { defineCommand as defineCommand121 } from "citty";
26772
+ import { defineCommand as defineCommand122 } from "citty";
26740
26773
 
26741
26774
  // src/commands/images/searchHints.ts
26742
26775
  var FALLBACK = {
@@ -26800,7 +26833,7 @@ registerSchema({
26800
26833
  }
26801
26834
  }
26802
26835
  });
26803
- var googleCommand2 = defineCommand121({
26836
+ var googleCommand2 = defineCommand122({
26804
26837
  meta: {
26805
26838
  name: "google",
26806
26839
  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"
@@ -26856,7 +26889,7 @@ var googleCommand2 = defineCommand121({
26856
26889
  });
26857
26890
 
26858
26891
  // src/commands/images/icon.ts
26859
- import { defineCommand as defineCommand122 } from "citty";
26892
+ import { defineCommand as defineCommand123 } from "citty";
26860
26893
  registerSchema({
26861
26894
  command: "images.icon",
26862
26895
  description: "Icon lookup via Iconify (200+ icon sets, free CDN).",
@@ -26882,7 +26915,7 @@ registerSchema({
26882
26915
  }
26883
26916
  }
26884
26917
  });
26885
- var iconCommand = defineCommand122({
26918
+ var iconCommand = defineCommand123({
26886
26919
  meta: {
26887
26920
  name: "icon",
26888
26921
  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'"
@@ -26922,7 +26955,7 @@ var iconCommand = defineCommand122({
26922
26955
  });
26923
26956
 
26924
26957
  // src/commands/images/ingest.ts
26925
- import { defineCommand as defineCommand123 } from "citty";
26958
+ import { defineCommand as defineCommand124 } from "citty";
26926
26959
  registerSchema({
26927
26960
  command: "images.ingest",
26928
26961
  description: "Ingest a remote image URL into the library (full describe + embed).",
@@ -26934,7 +26967,7 @@ registerSchema({
26934
26967
  context: { type: "string", description: "Description context hint", required: false }
26935
26968
  }
26936
26969
  });
26937
- var ingestCommand = defineCommand123({
26970
+ var ingestCommand = defineCommand124({
26938
26971
  meta: {
26939
26972
  name: "ingest",
26940
26973
  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"
@@ -26976,7 +27009,7 @@ var ingestCommand = defineCommand123({
26976
27009
  });
26977
27010
 
26978
27011
  // src/commands/images/library.ts
26979
- import { defineCommand as defineCommand124 } from "citty";
27012
+ import { defineCommand as defineCommand125 } from "citty";
26980
27013
  registerSchema({
26981
27014
  command: "images.library",
26982
27015
  description: "Search the company image library. Returns only ready images.",
@@ -27002,7 +27035,7 @@ registerSchema({
27002
27035
  }
27003
27036
  }
27004
27037
  });
27005
- var libraryCommand = defineCommand124({
27038
+ var libraryCommand = defineCommand125({
27006
27039
  meta: {
27007
27040
  name: "library",
27008
27041
  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"
@@ -27059,7 +27092,7 @@ var libraryCommand = defineCommand124({
27059
27092
  });
27060
27093
 
27061
27094
  // src/commands/images/logo.ts
27062
- import { defineCommand as defineCommand125 } from "citty";
27095
+ import { defineCommand as defineCommand126 } from "citty";
27063
27096
  registerSchema({
27064
27097
  command: "images.logo",
27065
27098
  description: "Brand logo lookup via Brandfetch CDN (fallback/404). Auto-ingests by default.",
@@ -27084,7 +27117,7 @@ registerSchema({
27084
27117
  }
27085
27118
  }
27086
27119
  });
27087
- var logoCommand = defineCommand125({
27120
+ var logoCommand = defineCommand126({
27088
27121
  meta: {
27089
27122
  name: "logo",
27090
27123
  description: "Brand logo via Brandfetch CDN. Returns up to 5 variants (icon, light/dark logo, light/dark symbol). Auto-ingests the first variant.\n\nExample: baker images logo stripe.com --variant logo"
@@ -27122,7 +27155,7 @@ var logoCommand = defineCommand125({
27122
27155
  });
27123
27156
 
27124
27157
  // src/commands/images/normalize.ts
27125
- import { defineCommand as defineCommand126 } from "citty";
27158
+ import { defineCommand as defineCommand127 } from "citty";
27126
27159
 
27127
27160
  // src/lib/image/color-changer.ts
27128
27161
  import quantize from "quantize";
@@ -27854,7 +27887,7 @@ function coerceRawArgs(args) {
27854
27887
  "dry-run": bool(args["dry-run"])
27855
27888
  };
27856
27889
  }
27857
- var normalizeCommand = defineCommand126({
27890
+ var normalizeCommand = defineCommand127({
27858
27891
  meta: {
27859
27892
  name: "normalize",
27860
27893
  description: `Normalize logos / images: declarative recolor + bg removal + trim + resize. Operates on local files; writes in-place by default.
@@ -27909,7 +27942,7 @@ Examples:
27909
27942
  });
27910
27943
 
27911
27944
  // src/commands/images/pinterest.ts
27912
- import { defineCommand as defineCommand127 } from "citty";
27945
+ import { defineCommand as defineCommand128 } from "citty";
27913
27946
  registerSchema({
27914
27947
  command: "images.pinterest",
27915
27948
  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.",
@@ -27929,7 +27962,7 @@ registerSchema({
27929
27962
  }
27930
27963
  }
27931
27964
  });
27932
- var pinterestCommand = defineCommand127({
27965
+ var pinterestCommand = defineCommand128({
27933
27966
  meta: {
27934
27967
  name: "pinterest",
27935
27968
  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'"
@@ -27969,7 +28002,7 @@ var pinterestCommand = defineCommand127({
27969
28002
  });
27970
28003
 
27971
28004
  // src/commands/images/screenshot.ts
27972
- import { defineCommand as defineCommand128 } from "citty";
28005
+ import { defineCommand as defineCommand129 } from "citty";
27973
28006
  registerSchema({
27974
28007
  command: "images.screenshot",
27975
28008
  description: "Capture a website screenshot via ScreenshotOne. Auto-ingests on success.",
@@ -27985,7 +28018,7 @@ registerSchema({
27985
28018
  }
27986
28019
  }
27987
28020
  });
27988
- var screenshotCommand = defineCommand128({
28021
+ var screenshotCommand = defineCommand129({
27989
28022
  meta: {
27990
28023
  name: "screenshot",
27991
28024
  description: "Screenshot a URL via ScreenshotOne. $0.009/capture. Auto-ingests to library.\n\nExample: baker images screenshot https://stripe.com --full-page"
@@ -28048,7 +28081,7 @@ var screenshotCommand = defineCommand128({
28048
28081
  });
28049
28082
 
28050
28083
  // src/commands/images/search.ts
28051
- import { defineCommand as defineCommand129 } from "citty";
28084
+ import { defineCommand as defineCommand130 } from "citty";
28052
28085
  registerSchema({
28053
28086
  command: "images.search",
28054
28087
  description: "Search images by text query. Only returns ready images.",
@@ -28064,7 +28097,7 @@ registerSchema({
28064
28097
  tags: { type: "string", description: "Comma-separated tags to filter by", required: false }
28065
28098
  }
28066
28099
  });
28067
- var searchCommand = defineCommand129({
28100
+ var searchCommand = defineCommand130({
28068
28101
  meta: {
28069
28102
  name: "search",
28070
28103
  description: "Semantic search images by text query. Uses hybrid BM25 + vector + reranking. Example: baker images search 'hero banner' --aspect-ratio 16:9 --tags logo"
@@ -28124,7 +28157,7 @@ var searchCommand = defineCommand129({
28124
28157
  });
28125
28158
 
28126
28159
  // src/commands/images/sticker.ts
28127
- import { defineCommand as defineCommand130 } from "citty";
28160
+ import { defineCommand as defineCommand131 } from "citty";
28128
28161
  registerSchema({
28129
28162
  command: "images.sticker",
28130
28163
  description: "Search Giphy stickers \u2014 transparent-background overlays for ad creative.",
@@ -28156,7 +28189,7 @@ registerSchema({
28156
28189
  }
28157
28190
  }
28158
28191
  });
28159
- var stickerCommand = defineCommand130({
28192
+ var stickerCommand = defineCommand131({
28160
28193
  meta: {
28161
28194
  name: "sticker",
28162
28195
  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"
@@ -28203,7 +28236,7 @@ var stickerCommand = defineCommand130({
28203
28236
  });
28204
28237
 
28205
28238
  // src/commands/images/stock.ts
28206
- import { defineCommand as defineCommand131 } from "citty";
28239
+ import { defineCommand as defineCommand132 } from "citty";
28207
28240
  var STOCK_ERROR_FIX = {
28208
28241
  action: "use_different_resource",
28209
28242
  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 images 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."
@@ -28280,7 +28313,7 @@ function buildStockRequest(query, args) {
28280
28313
  if (args.context) body.descriptionContext = args.context;
28281
28314
  return body;
28282
28315
  }
28283
- var stockCommand = defineCommand131({
28316
+ var stockCommand = defineCommand132({
28284
28317
  meta: {
28285
28318
  name: "stock",
28286
28319
  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"
@@ -28336,7 +28369,7 @@ var stockCommand = defineCommand131({
28336
28369
  });
28337
28370
 
28338
28371
  // src/lib/tags-command.ts
28339
- import { defineCommand as defineCommand132 } from "citty";
28372
+ import { defineCommand as defineCommand133 } from "citty";
28340
28373
  function makeTagsCommand(command, label, endpoint) {
28341
28374
  registerSchema({
28342
28375
  command: `${command}.tags`,
@@ -28345,7 +28378,7 @@ function makeTagsCommand(command, label, endpoint) {
28345
28378
  output: { type: "string", description: "Output format: md|json", required: false, default: "md" }
28346
28379
  }
28347
28380
  });
28348
- return defineCommand132({
28381
+ return defineCommand133({
28349
28382
  meta: {
28350
28383
  name: "tags",
28351
28384
  description: `List the available ${label} tag names (defaults + company custom tags). Use before filtering with --tags. Example: baker ${command} tags`
@@ -28381,7 +28414,7 @@ function makeTagsCommand(command, label, endpoint) {
28381
28414
  var tagsCommand2 = makeTagsCommand("images", "image", "/api/images/tags");
28382
28415
 
28383
28416
  // src/commands/images/upload.ts
28384
- import { defineCommand as defineCommand133 } from "citty";
28417
+ import { defineCommand as defineCommand134 } from "citty";
28385
28418
  registerSchema({
28386
28419
  command: "images.upload",
28387
28420
  description: "Upload an image to the library \u2014 local file path or remote http(s) URL.",
@@ -28419,7 +28452,7 @@ registerSchema({
28419
28452
  function isRemoteUrl2(value) {
28420
28453
  return /^https?:\/\//i.test(value);
28421
28454
  }
28422
- var uploadCommand = defineCommand133({
28455
+ var uploadCommand = defineCommand134({
28423
28456
  meta: {
28424
28457
  name: "upload",
28425
28458
  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'"
@@ -28512,7 +28545,7 @@ async function uploadLocal(target, args) {
28512
28545
  }
28513
28546
 
28514
28547
  // src/commands/images/upscale.ts
28515
- import { defineCommand as defineCommand134 } from "citty";
28548
+ import { defineCommand as defineCommand135 } from "citty";
28516
28549
  registerSchema({
28517
28550
  command: "images.upscale",
28518
28551
  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).",
@@ -28527,7 +28560,7 @@ registerSchema({
28527
28560
  }
28528
28561
  });
28529
28562
  var POLL_INTERVAL_MS3 = 1500;
28530
- var upscaleCommand = defineCommand134({
28563
+ var upscaleCommand = defineCommand135({
28531
28564
  meta: {
28532
28565
  name: "upscale",
28533
28566
  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"
@@ -28582,7 +28615,7 @@ var upscaleCommand = defineCommand134({
28582
28615
  });
28583
28616
 
28584
28617
  // src/commands/images/use.ts
28585
- import { defineCommand as defineCommand135 } from "citty";
28618
+ import { defineCommand as defineCommand136 } from "citty";
28586
28619
  registerSchema({
28587
28620
  command: "images.use",
28588
28621
  description: "Ingest a URL and wait for the library record to be ready.",
@@ -28598,7 +28631,7 @@ registerSchema({
28598
28631
  }
28599
28632
  });
28600
28633
  var POLL_INTERVAL_MS4 = 1500;
28601
- var useCommand = defineCommand135({
28634
+ var useCommand = defineCommand136({
28602
28635
  meta: {
28603
28636
  name: "use",
28604
28637
  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"
@@ -28644,7 +28677,7 @@ var useCommand = defineCommand135({
28644
28677
  });
28645
28678
 
28646
28679
  // src/commands/images/index.ts
28647
- var imagesCommand = defineCommand136({
28680
+ var imagesCommand = defineCommand137({
28648
28681
  meta: {
28649
28682
  name: "images",
28650
28683
  description: `Find, source, and normalize images. Subcommands route by provider so cost + license are explicit.
@@ -28715,12 +28748,12 @@ Full guide: __tooling__/docs/tools/baker/images.md`
28715
28748
  });
28716
28749
 
28717
28750
  // src/commands/landing/index.ts
28718
- import { defineCommand as defineCommand138 } from "citty";
28751
+ import { defineCommand as defineCommand139 } from "citty";
28719
28752
 
28720
28753
  // src/commands/landing/critique.ts
28721
28754
  import { readdir as readdir8, stat as stat6 } from "fs/promises";
28722
28755
  import path27 from "path";
28723
- import { defineCommand as defineCommand137 } from "citty";
28756
+ import { defineCommand as defineCommand138 } from "citty";
28724
28757
 
28725
28758
  // src/engine/landing/lib/brand-tokens.ts
28726
28759
  import { readFile as readFile21 } from "fs/promises";
@@ -29978,7 +30011,7 @@ function fail5(code, message, fix) {
29978
30011
  );
29979
30012
  process.exit(2);
29980
30013
  }
29981
- var critiqueCommand2 = defineCommand137({
30014
+ var critiqueCommand2 = defineCommand138({
29982
30015
  meta: {
29983
30016
  name: "critique",
29984
30017
  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."
@@ -30087,7 +30120,7 @@ async function isDir(p) {
30087
30120
  }
30088
30121
 
30089
30122
  // src/commands/landing/index.ts
30090
- var landingCommand = defineCommand138({
30123
+ var landingCommand = defineCommand139({
30091
30124
  meta: {
30092
30125
  name: "landing",
30093
30126
  description: `Design-quality tools for landing pages (src/pages/<slug>/).
@@ -30103,7 +30136,7 @@ Subcommands:
30103
30136
  });
30104
30137
 
30105
30138
  // src/commands/mcp/index.ts
30106
- import { defineCommand as defineCommand139 } from "citty";
30139
+ import { defineCommand as defineCommand140 } from "citty";
30107
30140
  var SCOPES = ["user", "user_org", "company", "org"];
30108
30141
  function parseScope(raw) {
30109
30142
  const scope = raw === void 0 ? "company" : String(raw);
@@ -30156,7 +30189,7 @@ registerSchema({
30156
30189
  description: "List every third-party tool this chat can reach: managed integrations (Attio, Slack, Gmail, Google Sheets, \u2026) plus custom MCP servers. Start here when the user mentions an external tool.",
30157
30190
  args: {}
30158
30191
  });
30159
- var connectedCommand = defineCommand139({
30192
+ var connectedCommand = defineCommand140({
30160
30193
  meta: {
30161
30194
  name: "connected",
30162
30195
  description: `List all connected third-party tools \u2014 managed integrations plus custom MCP servers.
@@ -30209,7 +30242,7 @@ registerSchema({
30209
30242
  description: "List the custom MCP servers this company's chats see (org + company + your own user scope).",
30210
30243
  args: {}
30211
30244
  });
30212
- var listCommand13 = defineCommand139({
30245
+ var listCommand13 = defineCommand140({
30213
30246
  meta: { name: "list", description: "List custom MCP servers visible to this company's chats." },
30214
30247
  run: async () => {
30215
30248
  try {
@@ -30246,7 +30279,7 @@ registerSchema({
30246
30279
  header: { type: "string", description: 'Auth header "Key: Value" (repeatable)', required: false }
30247
30280
  }
30248
30281
  });
30249
- var addCommand = defineCommand139({
30282
+ var addCommand = defineCommand140({
30250
30283
  meta: {
30251
30284
  name: "add",
30252
30285
  description: `Register a custom MCP server. Tools appear as mcp__<name>__* on the NEXT message.
@@ -30298,7 +30331,7 @@ registerSchema({
30298
30331
  description: "Remove a company custom MCP server by name.",
30299
30332
  args: { name: { type: "string", description: "Server name to remove", required: true } }
30300
30333
  });
30301
- var removeCommand4 = defineCommand139({
30334
+ var removeCommand4 = defineCommand140({
30302
30335
  meta: {
30303
30336
  name: "remove",
30304
30337
  description: `Remove a company custom MCP server by name.
@@ -30320,7 +30353,7 @@ Example:
30320
30353
  }
30321
30354
  }
30322
30355
  });
30323
- var mcpCommand = defineCommand139({
30356
+ var mcpCommand = defineCommand140({
30324
30357
  meta: {
30325
30358
  name: "mcp",
30326
30359
  description: `Third-party tools for this company \u2014 see what's connected, register custom HTTPS MCP endpoints.
@@ -30346,10 +30379,10 @@ Full guide: __tooling__/docs/tools/baker/mcp.md`
30346
30379
  });
30347
30380
 
30348
30381
  // src/commands/research/index.ts
30349
- import { defineCommand as defineCommand150 } from "citty";
30382
+ import { defineCommand as defineCommand151 } from "citty";
30350
30383
 
30351
30384
  // src/commands/research/advertisers.ts
30352
- import { defineCommand as defineCommand140 } from "citty";
30385
+ import { defineCommand as defineCommand141 } from "citty";
30353
30386
 
30354
30387
  // src/commands/research/output.ts
30355
30388
  var RESEARCH_DATA_NOTE = "Estimates based on third-party SERP data \u2014 not exact figures. Use for directional insights, not precise measurement.";
@@ -30462,7 +30495,7 @@ var FIELDS3 = {
30462
30495
  etv: "Estimated traffic value (USD)",
30463
30496
  visibility: "SERP visibility score (0-1)"
30464
30497
  };
30465
- var advertisersCommand = defineCommand140({
30498
+ var advertisersCommand = defineCommand141({
30466
30499
  meta: {
30467
30500
  name: "advertisers",
30468
30501
  description: `Find domains competing for a keyword in Google SERPs.
@@ -30509,7 +30542,7 @@ Examples:
30509
30542
  });
30510
30543
 
30511
30544
  // src/commands/research/autocomplete.ts
30512
- import { defineCommand as defineCommand141 } from "citty";
30545
+ import { defineCommand as defineCommand142 } from "citty";
30513
30546
  registerSchema({
30514
30547
  command: "research.autocomplete",
30515
30548
  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).",
@@ -30532,7 +30565,7 @@ registerSchema({
30532
30565
  var FIELDS4 = {
30533
30566
  suggestion: "Autocomplete suggestion from Google"
30534
30567
  };
30535
- var autocompleteCommand = defineCommand141({
30568
+ var autocompleteCommand = defineCommand142({
30536
30569
  meta: {
30537
30570
  name: "autocomplete",
30538
30571
  description: `Get Google Autocomplete suggestions for keyword expansion.
@@ -30578,7 +30611,7 @@ Examples:
30578
30611
  });
30579
30612
 
30580
30613
  // src/commands/research/countries.ts
30581
- import { defineCommand as defineCommand142 } from "citty";
30614
+ import { defineCommand as defineCommand143 } from "citty";
30582
30615
  registerSchema({
30583
30616
  command: "research.countries",
30584
30617
  description: "List all supported country codes for --location flag in research commands.",
@@ -30635,7 +30668,7 @@ var FIELDS5 = {
30635
30668
  code: "Country code to pass as --location",
30636
30669
  name: "Country name"
30637
30670
  };
30638
- var countriesCommand = defineCommand142({
30671
+ var countriesCommand = defineCommand143({
30639
30672
  meta: {
30640
30673
  name: "countries",
30641
30674
  description: "List all supported country codes for --location flag."
@@ -30646,7 +30679,7 @@ var countriesCommand = defineCommand142({
30646
30679
  });
30647
30680
 
30648
30681
  // src/commands/research/intent.ts
30649
- import { defineCommand as defineCommand143 } from "citty";
30682
+ import { defineCommand as defineCommand144 } from "citty";
30650
30683
  registerSchema({
30651
30684
  command: "research.intent",
30652
30685
  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.",
@@ -30669,7 +30702,7 @@ var FIELDS6 = {
30669
30702
  intent: "Primary Google Search intent: informational, navigational, commercial, transactional",
30670
30703
  probability: "Confidence score 0.0-1.0"
30671
30704
  };
30672
- var intentCommand = defineCommand143({
30705
+ var intentCommand = defineCommand144({
30673
30706
  meta: {
30674
30707
  name: "intent",
30675
30708
  description: `Classify Google Search intent for keywords. Returns intent type and confidence.
@@ -30717,7 +30750,7 @@ Examples:
30717
30750
  });
30718
30751
 
30719
30752
  // src/commands/research/keyword-gap.ts
30720
- import { defineCommand as defineCommand144 } from "citty";
30753
+ import { defineCommand as defineCommand145 } from "citty";
30721
30754
  registerSchema({
30722
30755
  command: "research.keyword-gap",
30723
30756
  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.",
@@ -30746,7 +30779,7 @@ var FIELDS7 = {
30746
30779
  cpc: "Cost per click USD",
30747
30780
  their_position: "Competitor's ranking position"
30748
30781
  };
30749
- var keywordGapCommand = defineCommand144({
30782
+ var keywordGapCommand = defineCommand145({
30750
30783
  meta: {
30751
30784
  name: "keyword-gap",
30752
30785
  description: `Find keywords a competitor has that you don't. Supports pagination via --offset.
@@ -30820,7 +30853,7 @@ Examples:
30820
30853
  });
30821
30854
 
30822
30855
  // src/commands/research/keywords-for-site.ts
30823
- import { defineCommand as defineCommand145 } from "citty";
30856
+ import { defineCommand as defineCommand146 } from "citty";
30824
30857
  registerSchema({
30825
30858
  command: "research.keywords-for-site",
30826
30859
  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.",
@@ -30853,7 +30886,7 @@ var FIELDS8 = {
30853
30886
  competition: "LOW, MEDIUM, or HIGH",
30854
30887
  competition_index: "Competition score 0-100"
30855
30888
  };
30856
- var keywordsForSiteCommand = defineCommand145({
30889
+ var keywordsForSiteCommand = defineCommand146({
30857
30890
  meta: {
30858
30891
  name: "keywords-for-site",
30859
30892
  description: `Get keywords a competitor targets in Google. Use --type to filter paid/organic.
@@ -30906,7 +30939,7 @@ Examples:
30906
30939
  });
30907
30940
 
30908
30941
  // src/commands/research/languages.ts
30909
- import { defineCommand as defineCommand146 } from "citty";
30942
+ import { defineCommand as defineCommand147 } from "citty";
30910
30943
  registerSchema({
30911
30944
  command: "research.languages",
30912
30945
  description: "List all supported language codes for --language flag in research commands.",
@@ -30936,7 +30969,7 @@ var FIELDS9 = {
30936
30969
  code: "Language code to pass as --language",
30937
30970
  name: "Language name (also accepted by --language)"
30938
30971
  };
30939
- var languagesCommand2 = defineCommand146({
30972
+ var languagesCommand2 = defineCommand147({
30940
30973
  meta: {
30941
30974
  name: "languages",
30942
30975
  description: "List all supported language codes for --language flag."
@@ -30947,7 +30980,7 @@ var languagesCommand2 = defineCommand146({
30947
30980
  });
30948
30981
 
30949
30982
  // src/commands/research/lighthouse.ts
30950
- import { defineCommand as defineCommand147 } from "citty";
30983
+ import { defineCommand as defineCommand148 } from "citty";
30951
30984
  registerSchema({
30952
30985
  command: "research.lighthouse",
30953
30986
  description: "Landing page performance audit. Returns metrics that affect Google Ads Quality Score and CPC.",
@@ -30966,7 +30999,7 @@ var FIELDS10 = {
30966
30999
  speed_index_ms: "Speed Index in ms (good: < 3400)",
30967
31000
  interactive_ms: "Time to Interactive in ms (good: < 3800)"
30968
31001
  };
30969
- var lighthouseCommand = defineCommand147({
31002
+ var lighthouseCommand = defineCommand148({
30970
31003
  meta: {
30971
31004
  name: "lighthouse",
30972
31005
  description: `Landing page performance audit. Metrics affecting Google Ads Quality Score.
@@ -31004,7 +31037,7 @@ Examples:
31004
31037
  });
31005
31038
 
31006
31039
  // src/commands/research/relevant-pages.ts
31007
- import { defineCommand as defineCommand148 } from "citty";
31040
+ import { defineCommand as defineCommand149 } from "citty";
31008
31041
  registerSchema({
31009
31042
  command: "research.relevant-pages",
31010
31043
  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).",
@@ -31030,7 +31063,7 @@ var FIELDS11 = {
31030
31063
  keywords: "Total organic keywords the page ranks for",
31031
31064
  top_10: "Keywords in positions 1-10"
31032
31065
  };
31033
- var relevantPagesCommand = defineCommand148({
31066
+ var relevantPagesCommand = defineCommand149({
31034
31067
  meta: {
31035
31068
  name: "relevant-pages",
31036
31069
  description: `Get the top pages of a competitor domain with traffic data.
@@ -31076,7 +31109,7 @@ Examples:
31076
31109
  });
31077
31110
 
31078
31111
  // src/commands/research/web.ts
31079
- import { defineCommand as defineCommand149 } from "citty";
31112
+ import { defineCommand as defineCommand150 } from "citty";
31080
31113
  registerSchema({
31081
31114
  command: "research.web",
31082
31115
  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).",
@@ -31127,7 +31160,7 @@ async function runDeepResearch(question) {
31127
31160
  }
31128
31161
  throw new Error("Deep research timed out");
31129
31162
  }
31130
- var webCommand = defineCommand149({
31163
+ var webCommand = defineCommand150({
31131
31164
  meta: {
31132
31165
  name: "web",
31133
31166
  description: `Search the web with AI to answer any open-ended marketing question. Uses live internet data via Google Search.
@@ -31187,7 +31220,7 @@ Examples:
31187
31220
  });
31188
31221
 
31189
31222
  // src/commands/research/index.ts
31190
- var researchCommand = defineCommand150({
31223
+ var researchCommand = defineCommand151({
31191
31224
  meta: {
31192
31225
  name: "research",
31193
31226
  description: `Competitive intelligence and AI-powered research commands.
@@ -31228,10 +31261,10 @@ Full guide: __tooling__/docs/tools/baker/research.md`
31228
31261
  });
31229
31262
 
31230
31263
  // src/commands/scheduled-actions/index.ts
31231
- import { defineCommand as defineCommand157 } from "citty";
31264
+ import { defineCommand as defineCommand158 } from "citty";
31232
31265
 
31233
31266
  // src/commands/scheduled-actions/create.ts
31234
- import { defineCommand as defineCommand151 } from "citty";
31267
+ import { defineCommand as defineCommand152 } from "citty";
31235
31268
 
31236
31269
  // src/commands/scheduled-actions/shared.ts
31237
31270
  var TEMP_SCHEDULED_ACTION_PREFIX = "temp_sched_";
@@ -31346,7 +31379,7 @@ registerSchema({
31346
31379
  prompt: { type: "string", description: "Additional prompt instructions for the spawned agent", required: false }
31347
31380
  }
31348
31381
  });
31349
- var createCommand2 = defineCommand151({
31382
+ var createCommand2 = defineCommand152({
31350
31383
  meta: {
31351
31384
  name: "create",
31352
31385
  description: 'Stage a scheduled action. Example: baker scheduled-actions create --name "Weekly report" --description "..." --cron "0 9 * * MON"'
@@ -31395,7 +31428,7 @@ var createCommand2 = defineCommand151({
31395
31428
  });
31396
31429
 
31397
31430
  // src/commands/scheduled-actions/delete.ts
31398
- import { defineCommand as defineCommand152 } from "citty";
31431
+ import { defineCommand as defineCommand153 } from "citty";
31399
31432
  registerSchema({
31400
31433
  command: "scheduled-actions.delete",
31401
31434
  description: "Stage deletion of a published scheduled action or cancellation of a temp_sched_* draft creation.",
@@ -31403,7 +31436,7 @@ registerSchema({
31403
31436
  id: { type: "string", description: "Published scheduled action ID or temp_sched_* draft ID", required: true }
31404
31437
  }
31405
31438
  });
31406
- var deleteCommand2 = defineCommand152({
31439
+ var deleteCommand2 = defineCommand153({
31407
31440
  meta: {
31408
31441
  name: "delete",
31409
31442
  description: "Stage scheduled action deletion. Example: baker scheduled-actions delete <id-or-temp_sched_id>"
@@ -31432,7 +31465,7 @@ var deleteCommand2 = defineCommand152({
31432
31465
  });
31433
31466
 
31434
31467
  // src/commands/scheduled-actions/get.ts
31435
- import { defineCommand as defineCommand153 } from "citty";
31468
+ import { defineCommand as defineCommand154 } from "citty";
31436
31469
  registerSchema({
31437
31470
  command: "scheduled-actions.get",
31438
31471
  description: "Get a published scheduled action or a temp_sched_* draft-created scheduled action.",
@@ -31440,7 +31473,7 @@ registerSchema({
31440
31473
  id: { type: "string", description: "Published scheduled action ID or temp_sched_* draft ID", required: true }
31441
31474
  }
31442
31475
  });
31443
- var getCommand3 = defineCommand153({
31476
+ var getCommand3 = defineCommand154({
31444
31477
  meta: {
31445
31478
  name: "get",
31446
31479
  description: "Get a scheduled action. Example: baker scheduled-actions get <id-or-temp_sched_id>"
@@ -31477,13 +31510,13 @@ var getCommand3 = defineCommand153({
31477
31510
  });
31478
31511
 
31479
31512
  // src/commands/scheduled-actions/list.ts
31480
- import { defineCommand as defineCommand154 } from "citty";
31513
+ import { defineCommand as defineCommand155 } from "citty";
31481
31514
  registerSchema({
31482
31515
  command: "scheduled-actions.list",
31483
31516
  description: "List published scheduled actions. Includes draft state when BAKER_CHAT_ID is set.",
31484
31517
  args: {}
31485
31518
  });
31486
- var listCommand14 = defineCommand154({
31519
+ var listCommand14 = defineCommand155({
31487
31520
  meta: {
31488
31521
  name: "list",
31489
31522
  description: "List scheduled actions. Includes staged draft ops when BAKER_CHAT_ID is set."
@@ -31504,7 +31537,7 @@ var listCommand14 = defineCommand154({
31504
31537
  });
31505
31538
 
31506
31539
  // src/commands/scheduled-actions/trigger.ts
31507
- import { defineCommand as defineCommand155 } from "citty";
31540
+ import { defineCommand as defineCommand156 } from "citty";
31508
31541
  registerSchema({
31509
31542
  command: "scheduled-actions.trigger",
31510
31543
  description: "Immediately trigger a published scheduled action. Does not require BAKER_CHAT_ID and rejects temp_sched_* IDs.",
@@ -31512,7 +31545,7 @@ registerSchema({
31512
31545
  id: { type: "string", description: "Published scheduled action ID", required: true }
31513
31546
  }
31514
31547
  });
31515
- var triggerCommand = defineCommand155({
31548
+ var triggerCommand = defineCommand156({
31516
31549
  meta: {
31517
31550
  name: "trigger",
31518
31551
  description: "Immediately trigger a published scheduled action. Example: baker scheduled-actions trigger <id>"
@@ -31549,7 +31582,7 @@ var triggerCommand = defineCommand155({
31549
31582
  });
31550
31583
 
31551
31584
  // src/commands/scheduled-actions/update.ts
31552
- import { defineCommand as defineCommand156 } from "citty";
31585
+ import { defineCommand as defineCommand157 } from "citty";
31553
31586
  registerSchema({
31554
31587
  command: "scheduled-actions.update",
31555
31588
  description: "Stage an update to a published scheduled action or temp_sched_* draft-created scheduled action.",
@@ -31574,7 +31607,7 @@ registerSchema({
31574
31607
  prompt: { type: "string", description: "Replacement additional spawned-agent instructions", required: false }
31575
31608
  }
31576
31609
  });
31577
- var updateCommand2 = defineCommand156({
31610
+ var updateCommand2 = defineCommand157({
31578
31611
  meta: {
31579
31612
  name: "update",
31580
31613
  description: "Stage a scheduled action update. Example: baker scheduled-actions update <id> --enabled false"
@@ -31645,7 +31678,7 @@ var updateCommand2 = defineCommand156({
31645
31678
  });
31646
31679
 
31647
31680
  // src/commands/scheduled-actions/index.ts
31648
- var scheduledActionsCommand = defineCommand157({
31681
+ var scheduledActionsCommand = defineCommand158({
31649
31682
  meta: {
31650
31683
  name: "scheduled-actions",
31651
31684
  description: `Manage Scheduled Actions. Subcommands: list, get, create, update, delete, trigger.
@@ -31672,14 +31705,14 @@ Full guide: __tooling__/docs/tools/baker/scheduled-actions.md`
31672
31705
  });
31673
31706
 
31674
31707
  // src/commands/schema.ts
31675
- import { defineCommand as defineCommand158 } from "citty";
31708
+ import { defineCommand as defineCommand159 } from "citty";
31676
31709
  function narrowToFamily(commandName, available) {
31677
31710
  const segments = commandName.split(".");
31678
31711
  const prefix = segments[0] === "ads" && segments[1] ? `ads.${segments[1]}.` : `${segments[0]}.`;
31679
31712
  const siblings = available.filter((name) => name.startsWith(prefix));
31680
31713
  return siblings.length > 0 ? siblings : available;
31681
31714
  }
31682
- var schemaCommand = defineCommand158({
31715
+ var schemaCommand = defineCommand159({
31683
31716
  meta: {
31684
31717
  name: "schema",
31685
31718
  description: "Inspect command argument schemas (for AI agent introspection). Lists all commands if no argument given. Example: baker schema images.search"
@@ -31723,10 +31756,10 @@ var schemaCommand = defineCommand158({
31723
31756
  });
31724
31757
 
31725
31758
  // src/commands/tag-manager/index.ts
31726
- import { defineCommand as defineCommand162 } from "citty";
31759
+ import { defineCommand as defineCommand163 } from "citty";
31727
31760
 
31728
31761
  // src/commands/tag-manager/draft.ts
31729
- import { defineCommand as defineCommand159 } from "citty";
31762
+ import { defineCommand as defineCommand160 } from "citty";
31730
31763
 
31731
31764
  // src/commands/tag-manager/shared.ts
31732
31765
  import { readFileSync as readFileSync12 } from "fs";
@@ -31848,13 +31881,13 @@ registerSchema({
31848
31881
  json: { type: "boolean", description: "Print the raw JSON envelope instead of the readable list", required: false }
31849
31882
  }
31850
31883
  });
31851
- var draftCommand3 = defineCommand159({
31884
+ var draftCommand3 = defineCommand160({
31852
31885
  meta: {
31853
31886
  name: "draft",
31854
31887
  description: "List, show, amend, remove, or clear staged Tag Manager changes for this chat"
31855
31888
  },
31856
31889
  subCommands: {
31857
- list: defineCommand159({
31890
+ list: defineCommand160({
31858
31891
  meta: {
31859
31892
  name: "list",
31860
31893
  description: "Review everything staged on this chat (--json for the raw envelope)"
@@ -31864,7 +31897,7 @@ var draftCommand3 = defineCommand159({
31864
31897
  await draftList(args.json === true);
31865
31898
  }
31866
31899
  }),
31867
- show: defineCommand159({
31900
+ show: defineCommand160({
31868
31901
  meta: {
31869
31902
  name: "show",
31870
31903
  description: "Print the full staged payload for one change \u2014 the receipt to verify it looks right before publish (never truncated)."
@@ -31876,7 +31909,7 @@ var draftCommand3 = defineCommand159({
31876
31909
  });
31877
31910
  }
31878
31911
  }),
31879
- amend: defineCommand159({
31912
+ amend: defineCommand160({
31880
31913
  meta: {
31881
31914
  name: "amend",
31882
31915
  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."
@@ -31893,7 +31926,7 @@ var draftCommand3 = defineCommand159({
31893
31926
  });
31894
31927
  }
31895
31928
  }),
31896
- remove: defineCommand159({
31929
+ remove: defineCommand160({
31897
31930
  meta: { name: "remove", description: "Remove one staged change (cascades to anything depending on it)" },
31898
31931
  args: { ref: { type: "positional", description: "Staged ref (gtm_temp_*) or target", required: false } },
31899
31932
  run: async ({ args }) => {
@@ -31902,7 +31935,7 @@ var draftCommand3 = defineCommand159({
31902
31935
  });
31903
31936
  }
31904
31937
  }),
31905
- clear: defineCommand159({
31938
+ clear: defineCommand160({
31906
31939
  meta: { name: "clear", description: "Discard all Tag Manager changes staged on this chat" },
31907
31940
  run: async () => {
31908
31941
  await draftAction2("/api/tag-manager/draft/clear", {});
@@ -31912,7 +31945,7 @@ var draftCommand3 = defineCommand159({
31912
31945
  });
31913
31946
 
31914
31947
  // src/commands/tag-manager/read.ts
31915
- import { defineCommand as defineCommand160 } from "citty";
31948
+ import { defineCommand as defineCommand161 } from "citty";
31916
31949
  registerSchema({
31917
31950
  command: "tagManager.containers",
31918
31951
  description: "List the Google Tag Manager containers this company's connection can reach. The connected container is flagged. Start here to confirm which container you are managing.",
@@ -31932,7 +31965,7 @@ registerSchema({
31932
31965
  full: { type: "boolean", description: "Include the raw Tag Manager object for each entity", required: false }
31933
31966
  }
31934
31967
  });
31935
- var containersCommand = defineCommand160({
31968
+ var containersCommand = defineCommand161({
31936
31969
  meta: {
31937
31970
  name: "containers",
31938
31971
  description: `List Tag Manager containers reachable by this company's connection.
@@ -31949,7 +31982,7 @@ Start here:
31949
31982
  }
31950
31983
  }
31951
31984
  });
31952
- var readCommand = defineCommand160({
31985
+ var readCommand = defineCommand161({
31953
31986
  meta: {
31954
31987
  name: "read",
31955
31988
  description: `Read the current contents of the Tag Manager container \u2014 always do this before staging changes.
@@ -31989,7 +32022,7 @@ Examples:
31989
32022
  });
31990
32023
 
31991
32024
  // src/commands/tag-manager/write-commands.ts
31992
- import { defineCommand as defineCommand161 } from "citty";
32025
+ import { defineCommand as defineCommand162 } from "citty";
31993
32026
  var ENTITIES = [
31994
32027
  {
31995
32028
  entity: "tag",
@@ -32041,10 +32074,10 @@ for (const { entity, noun, createHint } of ENTITIES) {
32041
32074
  });
32042
32075
  }
32043
32076
  function entityCommand(entity, noun, example) {
32044
- return defineCommand161({
32077
+ return defineCommand162({
32045
32078
  meta: { name: entity, description: `Stage ${noun} changes on this chat's Tag Manager draft` },
32046
32079
  subCommands: {
32047
- create: defineCommand161({
32080
+ create: defineCommand162({
32048
32081
  meta: {
32049
32082
  name: "create",
32050
32083
  description: `Stage a new ${noun}
@@ -32066,7 +32099,7 @@ Examples:
32066
32099
  });
32067
32100
  }
32068
32101
  }),
32069
- update: defineCommand161({
32102
+ update: defineCommand162({
32070
32103
  meta: {
32071
32104
  name: "update",
32072
32105
  description: `Stage an update to an existing ${noun} (pass its id or path)`
@@ -32086,7 +32119,7 @@ Examples:
32086
32119
  });
32087
32120
  }
32088
32121
  }),
32089
- delete: defineCommand161({
32122
+ delete: defineCommand162({
32090
32123
  meta: { name: "delete", description: `Stage the deletion of a ${noun} (pass its id or path)` },
32091
32124
  args: {
32092
32125
  id: { type: "positional", description: `${noun} id or path`, required: false },
@@ -32126,7 +32159,7 @@ function builtinTypes(args) {
32126
32159
  }
32127
32160
  return raw.split(",").map((entry) => entry.trim());
32128
32161
  }
32129
- var builtinCommand = defineCommand161({
32162
+ var builtinCommand = defineCommand162({
32130
32163
  meta: {
32131
32164
  name: "builtin",
32132
32165
  description: `Enable or disable built-in variables
@@ -32136,7 +32169,7 @@ Examples:
32136
32169
  baker tag-manager builtin disable --types formId`
32137
32170
  },
32138
32171
  subCommands: {
32139
- enable: defineCommand161({
32172
+ enable: defineCommand162({
32140
32173
  meta: { name: "enable", description: "Stage enabling built-in variables" },
32141
32174
  args: {
32142
32175
  types: { type: "string", description: "Comma-separated types", required: false },
@@ -32150,7 +32183,7 @@ Examples:
32150
32183
  });
32151
32184
  }
32152
32185
  }),
32153
- disable: defineCommand161({
32186
+ disable: defineCommand162({
32154
32187
  meta: { name: "disable", description: "Stage disabling built-in variables" },
32155
32188
  args: {
32156
32189
  types: { type: "string", description: "Comma-separated types", required: false },
@@ -32168,7 +32201,7 @@ Examples:
32168
32201
  });
32169
32202
 
32170
32203
  // src/commands/tag-manager/index.ts
32171
- var tagManagerCommand = defineCommand162({
32204
+ var tagManagerCommand = defineCommand163({
32172
32205
  meta: {
32173
32206
  name: "tag-manager",
32174
32207
  description: `Read and change what lives inside the client's Google Tag Manager container \u2014 tags, triggers, variables, folders and built-in variables.
@@ -32202,7 +32235,7 @@ Full guide: __tooling__/docs/tools/baker/tag-manager.md`
32202
32235
  });
32203
32236
 
32204
32237
  // src/commands/tags/index.ts
32205
- import { defineCommand as defineCommand163 } from "citty";
32238
+ import { defineCommand as defineCommand164 } from "citty";
32206
32239
 
32207
32240
  // src/commands/tags/shared.ts
32208
32241
  function failApi3(err) {
@@ -32271,7 +32304,7 @@ async function listTags(json) {
32271
32304
  var listArgs9 = {
32272
32305
  json: { type: "boolean", description: "Print the raw JSON envelope instead of the readable list" }
32273
32306
  };
32274
- var listCommand15 = defineCommand163({
32307
+ var listCommand15 = defineCommand164({
32275
32308
  meta: {
32276
32309
  name: "list",
32277
32310
  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"
@@ -32290,7 +32323,7 @@ async function listDraft3() {
32290
32323
  failApi3(err);
32291
32324
  }
32292
32325
  }
32293
- var draftCommand4 = defineCommand163({
32326
+ var draftCommand4 = defineCommand164({
32294
32327
  meta: {
32295
32328
  name: "draft",
32296
32329
  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)."
@@ -32299,7 +32332,7 @@ var draftCommand4 = defineCommand163({
32299
32332
  await listDraft3();
32300
32333
  }
32301
32334
  });
32302
- var tagsCommand3 = defineCommand163({
32335
+ var tagsCommand3 = defineCommand164({
32303
32336
  meta: {
32304
32337
  name: "tags",
32305
32338
  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.
@@ -32328,10 +32361,10 @@ Full guide: __tooling__/docs/tools/baker/tags.md`
32328
32361
  });
32329
32362
 
32330
32363
  // src/commands/testimonials/index.ts
32331
- import { defineCommand as defineCommand167 } from "citty";
32364
+ import { defineCommand as defineCommand168 } from "citty";
32332
32365
 
32333
32366
  // src/commands/testimonials/get.ts
32334
- import { defineCommand as defineCommand164 } from "citty";
32367
+ import { defineCommand as defineCommand165 } from "citty";
32335
32368
  registerSchema({
32336
32369
  command: "testimonials.get",
32337
32370
  description: "Get a single testimonial by ID",
@@ -32339,7 +32372,7 @@ registerSchema({
32339
32372
  id: { type: "string", description: "Testimonial ID", required: true }
32340
32373
  }
32341
32374
  });
32342
- var getCommand4 = defineCommand164({
32375
+ var getCommand4 = defineCommand165({
32343
32376
  meta: { name: "get", description: "Get a single testimonial by ID. Example: baker testimonials get j571abc123" },
32344
32377
  args: {
32345
32378
  id: { type: "positional", description: "Testimonial ID", required: false },
@@ -32376,7 +32409,7 @@ var getCommand4 = defineCommand164({
32376
32409
  });
32377
32410
 
32378
32411
  // src/commands/testimonials/list.ts
32379
- import { defineCommand as defineCommand165 } from "citty";
32412
+ import { defineCommand as defineCommand166 } from "citty";
32380
32413
  registerSchema({
32381
32414
  command: "testimonials.list",
32382
32415
  description: "List testimonials with optional filters.",
@@ -32406,7 +32439,7 @@ registerSchema({
32406
32439
  limit: { type: "number", description: "Max results (default 50)", required: false, default: 50 }
32407
32440
  }
32408
32441
  });
32409
- var listCommand16 = defineCommand165({
32442
+ var listCommand16 = defineCommand166({
32410
32443
  meta: {
32411
32444
  name: "list",
32412
32445
  description: "List testimonials with optional filters. Example: baker testimonials list --source google --sentiment positive"
@@ -32455,7 +32488,7 @@ var listCommand16 = defineCommand165({
32455
32488
  });
32456
32489
 
32457
32490
  // src/commands/testimonials/search.ts
32458
- import { defineCommand as defineCommand166 } from "citty";
32491
+ import { defineCommand as defineCommand167 } from "citty";
32459
32492
  function languageBiasHint(results, requestedLanguage) {
32460
32493
  if (requestedLanguage) {
32461
32494
  return null;
@@ -32533,7 +32566,7 @@ function buildSearchRequest(query, args) {
32533
32566
  }
32534
32567
  return body;
32535
32568
  }
32536
- var searchCommand2 = defineCommand166({
32569
+ var searchCommand2 = defineCommand167({
32537
32570
  meta: {
32538
32571
  name: "search",
32539
32572
  description: "Semantic search testimonials by text query. Uses hybrid BM25 + vector + reranking. Example: baker testimonials search 'great service' --rating-min 4"
@@ -32589,7 +32622,7 @@ var searchCommand2 = defineCommand166({
32589
32622
  var tagsCommand4 = makeTagsCommand("testimonials", "testimonial", "/api/testimonials/tags");
32590
32623
 
32591
32624
  // src/commands/testimonials/index.ts
32592
- var testimonialsCommand = defineCommand167({
32625
+ var testimonialsCommand = defineCommand168({
32593
32626
  meta: {
32594
32627
  name: "testimonials",
32595
32628
  description: `Find and browse testimonials in Baker. Subcommands: search, get, list, tags.
@@ -32611,10 +32644,10 @@ Full guide: __tooling__/docs/tools/baker/testimonials.md`
32611
32644
  });
32612
32645
 
32613
32646
  // src/commands/videos/index.ts
32614
- import { defineCommand as defineCommand172 } from "citty";
32647
+ import { defineCommand as defineCommand173 } from "citty";
32615
32648
 
32616
32649
  // src/commands/videos/delete.ts
32617
- import { defineCommand as defineCommand168 } from "citty";
32650
+ import { defineCommand as defineCommand169 } from "citty";
32618
32651
  registerSchema({
32619
32652
  command: "videos.delete",
32620
32653
  description: "Delete a video by ID",
@@ -32628,7 +32661,7 @@ registerSchema({
32628
32661
  }
32629
32662
  }
32630
32663
  });
32631
- var deleteCommand3 = defineCommand168({
32664
+ var deleteCommand3 = defineCommand169({
32632
32665
  meta: {
32633
32666
  name: "delete",
32634
32667
  description: "Delete a video by ID. Use --dry-run to preview. Example: baker videos delete j571abc123 --dry-run"
@@ -32669,7 +32702,7 @@ var deleteCommand3 = defineCommand168({
32669
32702
  });
32670
32703
 
32671
32704
  // src/commands/videos/get.ts
32672
- import { defineCommand as defineCommand169 } from "citty";
32705
+ import { defineCommand as defineCommand170 } from "citty";
32673
32706
  registerSchema({
32674
32707
  command: "videos.get",
32675
32708
  description: "Get a single video by ID",
@@ -32677,7 +32710,7 @@ registerSchema({
32677
32710
  id: { type: "string", description: "Video ID", required: true }
32678
32711
  }
32679
32712
  });
32680
- var getCommand5 = defineCommand169({
32713
+ var getCommand5 = defineCommand170({
32681
32714
  meta: { name: "get", description: "Get a single video by ID. Example: baker videos get j571abc123" },
32682
32715
  args: {
32683
32716
  id: { type: "positional", description: "Video ID", required: false },
@@ -32714,7 +32747,7 @@ var getCommand5 = defineCommand169({
32714
32747
  });
32715
32748
 
32716
32749
  // src/commands/videos/search.ts
32717
- import { defineCommand as defineCommand170 } from "citty";
32750
+ import { defineCommand as defineCommand171 } from "citty";
32718
32751
  registerSchema({
32719
32752
  command: "videos.search",
32720
32753
  description: "Search videos by text query. Only returns ready videos.",
@@ -32724,7 +32757,7 @@ registerSchema({
32724
32757
  tags: { type: "string", description: "Comma-separated tags to filter by", required: false }
32725
32758
  }
32726
32759
  });
32727
- var searchCommand3 = defineCommand170({
32760
+ var searchCommand3 = defineCommand171({
32728
32761
  meta: {
32729
32762
  name: "search",
32730
32763
  description: "Semantic search videos by text query. Uses hybrid BM25 + vector + reranking. Example: baker videos search 'product demo' --tags tutorial"
@@ -32776,7 +32809,7 @@ var tagsCommand5 = makeTagsCommand("videos", "video", "/api/videos/tags");
32776
32809
  // src/commands/videos/upload.ts
32777
32810
  import { readFile as readFile23, stat as stat7 } from "fs/promises";
32778
32811
  import { extname as extname3 } from "path";
32779
- import { defineCommand as defineCommand171 } from "citty";
32812
+ import { defineCommand as defineCommand172 } from "citty";
32780
32813
  var MIME_MAP = {
32781
32814
  ".mp4": "video/mp4",
32782
32815
  ".mov": "video/quicktime",
@@ -32810,7 +32843,7 @@ function detectContentType(filePath) {
32810
32843
  }
32811
32844
  return mime;
32812
32845
  }
32813
- var uploadCommand2 = defineCommand171({
32846
+ var uploadCommand2 = defineCommand172({
32814
32847
  meta: {
32815
32848
  name: "upload",
32816
32849
  description: "Upload a video file to Baker via Mux direct upload. Auto-detects content type. Example: baker videos upload ./demo.mp4"
@@ -32864,7 +32897,7 @@ var uploadCommand2 = defineCommand171({
32864
32897
  });
32865
32898
 
32866
32899
  // src/commands/videos/index.ts
32867
- var videosCommand = defineCommand172({
32900
+ var videosCommand = defineCommand173({
32868
32901
  meta: {
32869
32902
  name: "videos",
32870
32903
  description: `Find and manage videos in Baker. Subcommands: search, get, upload, delete, tags.
@@ -32888,10 +32921,10 @@ Full guide: __tooling__/docs/tools/baker/videos.md`
32888
32921
  });
32889
32922
 
32890
32923
  // src/commands/winning-ads/index.ts
32891
- import { defineCommand as defineCommand185 } from "citty";
32924
+ import { defineCommand as defineCommand186 } from "citty";
32892
32925
 
32893
32926
  // src/commands/winning-ads/advertisers.ts
32894
- import { defineCommand as defineCommand173 } from "citty";
32927
+ import { defineCommand as defineCommand174 } from "citty";
32895
32928
 
32896
32929
  // src/commands/winning-ads/shared.ts
32897
32930
  function splitList(value) {
@@ -32944,7 +32977,7 @@ function advertiserNormalizer(record, full) {
32944
32977
  last_synced_at: record.last_synced_at ?? null
32945
32978
  };
32946
32979
  }
32947
- var advertisersCommand2 = defineCommand173({
32980
+ var advertisersCommand2 = defineCommand174({
32948
32981
  meta: {
32949
32982
  name: "advertisers",
32950
32983
  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'
@@ -33002,7 +33035,7 @@ var advertisersCommand2 = defineCommand173({
33002
33035
  });
33003
33036
 
33004
33037
  // src/commands/winning-ads/brief.ts
33005
- import { defineCommand as defineCommand174 } from "citty";
33038
+ import { defineCommand as defineCommand175 } from "citty";
33006
33039
  registerSchema({
33007
33040
  command: "winning-ads.brief",
33008
33041
  description: "Generate a creative brief grounded in strategically-similar winning ads. Optionally describe the target creative with --dna (JSON) and steer with --notes.",
@@ -33048,7 +33081,7 @@ function parseDna(raw) {
33048
33081
  }
33049
33082
  return parsed;
33050
33083
  }
33051
- var briefCommand = defineCommand174({
33084
+ var briefCommand = defineCommand175({
33052
33085
  meta: {
33053
33086
  name: "brief",
33054
33087
  description: `Generate a creative brief from winning references. Example: baker winning-ads brief --dna '{"angle":"cost savings"}' --notes "B2B, LinkedIn video" --k 8`
@@ -33084,7 +33117,7 @@ var briefCommand = defineCommand174({
33084
33117
  });
33085
33118
 
33086
33119
  // src/commands/winning-ads/content.ts
33087
- import { defineCommand as defineCommand175 } from "citty";
33120
+ import { defineCommand as defineCommand176 } from "citty";
33088
33121
  registerSchema({
33089
33122
  command: "winning-ads.content",
33090
33123
  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.",
@@ -33097,7 +33130,7 @@ registerSchema({
33097
33130
  }
33098
33131
  }
33099
33132
  });
33100
- var contentCommand = defineCommand175({
33133
+ var contentCommand = defineCommand176({
33101
33134
  meta: {
33102
33135
  name: "content",
33103
33136
  description: "Read the transcript + on-screen text + copy of one winning ad. Example: baker winning-ads content adg_123 --platform meta --full --output md"
@@ -33146,7 +33179,7 @@ var contentCommand = defineCommand175({
33146
33179
  });
33147
33180
 
33148
33181
  // src/commands/winning-ads/feed.ts
33149
- import { defineCommand as defineCommand176 } from "citty";
33182
+ import { defineCommand as defineCommand177 } from "citty";
33150
33183
  function buildFeedParams(input) {
33151
33184
  const params = {};
33152
33185
  const advertiser = splitList(input.advertiser);
@@ -33198,7 +33231,7 @@ registerSchema({
33198
33231
  format: { type: "string", description: "Comma-separated formats to include (e.g. static,video)", required: false }
33199
33232
  }
33200
33233
  });
33201
- var feedCommand = defineCommand176({
33234
+ var feedCommand = defineCommand177({
33202
33235
  meta: {
33203
33236
  name: "feed",
33204
33237
  description: "Winners across every brand you follow (browse, then trim per advertiser). Example: baker winning-ads feed --per-advertiser 5 --output md"
@@ -33283,7 +33316,7 @@ var feedCommand = defineCommand176({
33283
33316
  });
33284
33317
 
33285
33318
  // src/commands/winning-ads/follow.ts
33286
- import { defineCommand as defineCommand177 } from "citty";
33319
+ import { defineCommand as defineCommand178 } from "citty";
33287
33320
  var PLATFORMS = ["meta", "linkedin"];
33288
33321
  registerSchema({
33289
33322
  command: "winning-ads.follow",
@@ -33298,7 +33331,7 @@ registerSchema({
33298
33331
  label: { type: "string", description: "Optional display label (defaults to the resolved name)", required: false }
33299
33332
  }
33300
33333
  });
33301
- var followCommand = defineCommand177({
33334
+ var followCommand = defineCommand178({
33302
33335
  meta: {
33303
33336
  name: "follow",
33304
33337
  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'
@@ -33345,7 +33378,7 @@ var followCommand = defineCommand177({
33345
33378
  });
33346
33379
 
33347
33380
  // src/commands/winning-ads/follow-competitors.ts
33348
- import { defineCommand as defineCommand178 } from "citty";
33381
+ import { defineCommand as defineCommand179 } from "citty";
33349
33382
  var PLATFORMS2 = ["meta", "linkedin"];
33350
33383
  var BATCH_TIMEOUT_MS = 3e5;
33351
33384
  function buildFollowBatchBody(input) {
@@ -33378,7 +33411,7 @@ registerSchema({
33378
33411
  }
33379
33412
  }
33380
33413
  });
33381
- var followCompetitorsCommand = defineCommand178({
33414
+ var followCompetitorsCommand = defineCommand179({
33382
33415
  meta: {
33383
33416
  name: "follow-competitors",
33384
33417
  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"'
@@ -33453,7 +33486,7 @@ var followCompetitorsCommand = defineCommand178({
33453
33486
  });
33454
33487
 
33455
33488
  // src/commands/winning-ads/following.ts
33456
- import { defineCommand as defineCommand179 } from "citty";
33489
+ import { defineCommand as defineCommand180 } from "citty";
33457
33490
  registerSchema({
33458
33491
  command: "winning-ads.following",
33459
33492
  description: "List the brands you follow in your ad-dna library, with each one's status (ready vs still adding) and cached ad counts.",
@@ -33486,7 +33519,7 @@ function followingNormalizer(record, full) {
33486
33519
  platforms: Array.isArray(record.platforms) ? record.platforms : []
33487
33520
  };
33488
33521
  }
33489
- var followingCommand = defineCommand179({
33522
+ var followingCommand = defineCommand180({
33490
33523
  meta: {
33491
33524
  name: "following",
33492
33525
  description: "List brands you follow, with status (ready / adding\u2026) and cached counts. Example: baker winning-ads following --output md"
@@ -33521,7 +33554,7 @@ var followingCommand = defineCommand179({
33521
33554
  });
33522
33555
 
33523
33556
  // src/commands/winning-ads/patterns.ts
33524
- import { defineCommand as defineCommand180 } from "citty";
33557
+ import { defineCommand as defineCommand181 } from "citty";
33525
33558
  registerSchema({
33526
33559
  command: "winning-ads.patterns",
33527
33560
  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.",
@@ -33560,7 +33593,7 @@ function discriminatorRow(record) {
33560
33593
  top_values_duds: Array.isArray(record.top_values_b) ? record.top_values_b.join(", ") : ""
33561
33594
  };
33562
33595
  }
33563
- var patternsCommand = defineCommand180({
33596
+ var patternsCommand = defineCommand181({
33564
33597
  meta: {
33565
33598
  name: "patterns",
33566
33599
  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"
@@ -33616,7 +33649,7 @@ var patternsCommand = defineCommand180({
33616
33649
  });
33617
33650
 
33618
33651
  // src/commands/winning-ads/search.ts
33619
- import { defineCommand as defineCommand181 } from "citty";
33652
+ import { defineCommand as defineCommand182 } from "citty";
33620
33653
  registerSchema({
33621
33654
  command: "winning-ads.search",
33622
33655
  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.",
@@ -33724,7 +33757,7 @@ function buildSearchBody(args) {
33724
33757
  }
33725
33758
  return body;
33726
33759
  }
33727
- var searchCommand4 = defineCommand181({
33760
+ var searchCommand4 = defineCommand182({
33728
33761
  meta: {
33729
33762
  name: "search",
33730
33763
  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"
@@ -33839,7 +33872,7 @@ var searchCommand4 = defineCommand181({
33839
33872
  });
33840
33873
 
33841
33874
  // src/commands/winning-ads/seeds.ts
33842
- import { defineCommand as defineCommand182 } from "citty";
33875
+ import { defineCommand as defineCommand183 } from "citty";
33843
33876
  function leanRow(r) {
33844
33877
  return {
33845
33878
  key: r.key,
@@ -33867,7 +33900,7 @@ function makeSeedCommand(opts) {
33867
33900
  limit: { type: "number", description: "Max keys 1-100 (default 20)", required: false, default: 20 }
33868
33901
  }
33869
33902
  });
33870
- return defineCommand182({
33903
+ return defineCommand183({
33871
33904
  meta: { name: opts.name, description: opts.description },
33872
33905
  args: {
33873
33906
  platform: { type: "string", description: "Single platform to segment on", required: false },
@@ -33916,7 +33949,7 @@ var formatsCommand = makeSeedCommand({
33916
33949
  });
33917
33950
 
33918
33951
  // src/commands/winning-ads/unfollow.ts
33919
- import { defineCommand as defineCommand183 } from "citty";
33952
+ import { defineCommand as defineCommand184 } from "citty";
33920
33953
  registerSchema({
33921
33954
  command: "winning-ads.unfollow",
33922
33955
  description: "Stop following a brand \u2014 removes it from your ad-dna library by advertiser id.",
@@ -33924,7 +33957,7 @@ registerSchema({
33924
33957
  advertiser: { type: "string", description: "Advertiser id to unfollow", required: true }
33925
33958
  }
33926
33959
  });
33927
- var unfollowCommand = defineCommand183({
33960
+ var unfollowCommand = defineCommand184({
33928
33961
  meta: {
33929
33962
  name: "unfollow",
33930
33963
  description: "Stop following a brand by advertiser id. Example: baker winning-ads unfollow adv_123"
@@ -33945,7 +33978,7 @@ var unfollowCommand = defineCommand183({
33945
33978
  });
33946
33979
 
33947
33980
  // src/commands/winning-ads/winners.ts
33948
- import { defineCommand as defineCommand184 } from "citty";
33981
+ import { defineCommand as defineCommand185 } from "citty";
33949
33982
  registerSchema({
33950
33983
  command: "winning-ads.winners",
33951
33984
  description: "Top winning ads for one advertiser id (from `advertisers` or `following`). Returns lean winner cards; add --full for DNA + longevity.",
@@ -33955,7 +33988,7 @@ registerSchema({
33955
33988
  platform: { type: "string", description: "Filter to a single platform: meta|linkedin", required: false }
33956
33989
  }
33957
33990
  });
33958
- var winnersCommand = defineCommand184({
33991
+ var winnersCommand = defineCommand185({
33959
33992
  meta: {
33960
33993
  name: "winners",
33961
33994
  description: "Top winning ads for a specific advertiser id. Example: baker winning-ads winners adv_123 --top 15 --output md"
@@ -34005,7 +34038,7 @@ var winnersCommand = defineCommand184({
34005
34038
  });
34006
34039
 
34007
34040
  // src/commands/winning-ads/index.ts
34008
- var winningAdsCommand = defineCommand185({
34041
+ var winningAdsCommand = defineCommand186({
34009
34042
  meta: {
34010
34043
  name: "winning-ads",
34011
34044
  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.
@@ -34077,7 +34110,7 @@ function getCliVersion() {
34077
34110
  }
34078
34111
 
34079
34112
  // src/cli.ts
34080
- var main = defineCommand186({
34113
+ var main = defineCommand187({
34081
34114
  meta: {
34082
34115
  name: "baker",
34083
34116
  version: getCliVersion(),