@koda-sl/baker-cli 0.95.0 → 0.95.1

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
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-RCPMJKI7.js";
13
13
 
14
14
  // src/cli.ts
15
- import { defineCommand as defineCommand143, runMain } from "citty";
15
+ import { defineCommand as defineCommand144, runMain } from "citty";
16
16
 
17
17
  // src/commands/actions/index.ts
18
18
  import { defineCommand as defineCommand13 } from "citty";
@@ -853,7 +853,7 @@ var linkCommand = defineCommand7({
853
853
  import { defineCommand as defineCommand8 } from "citty";
854
854
  registerSchema({
855
855
  command: "actions.list",
856
- description: "List actions for the current company. Default: pre-bucketed (claimable/myClaims/blocked/claimedByOthers/completed/discarded). Set --bucketed=false for a flat list filterable by --status.",
856
+ description: "List actions for the current company. Default: pre-bucketed (claimable/myClaims/blocked/claimedByOthers/completed/discarded), each bucket ordered do-first (blockers before blocked, then highest-leverage). Set --bucketed=false for a flat list filterable by --status and orderable by --sort.",
857
857
  args: {
858
858
  bucketed: {
859
859
  type: "boolean",
@@ -865,6 +865,11 @@ registerSchema({
865
865
  type: "string",
866
866
  description: "Filter by status (only with --bucketed=false): pending|in_progress|completed|discarded",
867
867
  required: false
868
+ },
869
+ sort: {
870
+ type: "string",
871
+ description: "Order a flat list (only with --bucketed=false): priority (do-first: blockers before blocked, then highest-leverage) | recent. Default: priority.",
872
+ required: false
868
873
  }
869
874
  }
870
875
  });
@@ -875,7 +880,8 @@ var listCommand2 = defineCommand8({
875
880
  },
876
881
  args: {
877
882
  bucketed: { type: "boolean", description: "Pre-bucket by chat", required: false, default: true },
878
- status: { type: "string", description: "Status filter (raw mode)", required: false }
883
+ status: { type: "string", description: "Status filter (raw mode)", required: false },
884
+ sort: { type: "string", description: "Order (raw mode): priority|recent", required: false }
879
885
  },
880
886
  run: async ({ args }) => {
881
887
  try {
@@ -889,6 +895,7 @@ var listCommand2 = defineCommand8({
889
895
  if (args.status) {
890
896
  body.status = args.status;
891
897
  }
898
+ body.sort = args.sort === "recent" ? "recent" : "priority";
892
899
  }
893
900
  const response = await apiPost("/api/actions/list", body);
894
901
  writeJson(response);
@@ -12160,7 +12167,7 @@ Examples:
12160
12167
  });
12161
12168
 
12162
12169
  // src/commands/images/index.ts
12163
- import { defineCommand as defineCommand111 } from "citty";
12170
+ import { defineCommand as defineCommand112 } from "citty";
12164
12171
 
12165
12172
  // src/commands/images/crop.ts
12166
12173
  import { defineCommand as defineCommand89 } from "citty";
@@ -14381,10 +14388,55 @@ var stockCommand = defineCommand107({
14381
14388
  }
14382
14389
  });
14383
14390
 
14391
+ // src/lib/tags-command.ts
14392
+ import { defineCommand as defineCommand108 } from "citty";
14393
+ function makeTagsCommand(command, label, endpoint) {
14394
+ registerSchema({
14395
+ command: `${command}.tags`,
14396
+ description: `List the available ${label} tag taxonomy (built-in defaults + this company's custom tags).`,
14397
+ args: {
14398
+ output: { type: "string", description: "Output format: md|json", required: false, default: "md" }
14399
+ }
14400
+ });
14401
+ return defineCommand108({
14402
+ meta: {
14403
+ name: "tags",
14404
+ description: `List the available ${label} tag names (defaults + company custom tags). Use before filtering with --tags. Example: baker ${command} tags`
14405
+ },
14406
+ args: {
14407
+ output: { type: "string", description: "Output format: md|json", required: false, default: "md" }
14408
+ },
14409
+ run: async ({ args }) => {
14410
+ try {
14411
+ const { markdown } = await apiGet(endpoint);
14412
+ if (args.output === "json") {
14413
+ writeJson({ ok: true, data: { markdown } });
14414
+ return;
14415
+ }
14416
+ process.stdout.write(`${markdown.trimEnd()}
14417
+ `);
14418
+ } catch (err) {
14419
+ const code = err instanceof ApiError ? err.code : "INTERNAL_ERROR";
14420
+ const message = err instanceof ApiError ? err.message : "Unexpected error";
14421
+ if (args.output === "json") {
14422
+ writeJson({ ok: false, error: { code, message } });
14423
+ } else {
14424
+ process.stderr.write(`Error: ${message}
14425
+ `);
14426
+ }
14427
+ process.exit(1);
14428
+ }
14429
+ }
14430
+ });
14431
+ }
14432
+
14433
+ // src/commands/images/tags.ts
14434
+ var tagsCommand = makeTagsCommand("images", "image", "/api/images/tags");
14435
+
14384
14436
  // src/commands/images/upload.ts
14385
14437
  import { readFile as readFile9 } from "fs/promises";
14386
14438
  import { extname as extname2 } from "path";
14387
- import { defineCommand as defineCommand108 } from "citty";
14439
+ import { defineCommand as defineCommand109 } from "citty";
14388
14440
  var MIME_MAP = {
14389
14441
  ".png": "image/png",
14390
14442
  ".jpg": "image/jpeg",
@@ -14439,7 +14491,7 @@ function detectContentType(filePath) {
14439
14491
  }
14440
14492
  return mime;
14441
14493
  }
14442
- var uploadCommand = defineCommand108({
14494
+ var uploadCommand = defineCommand109({
14443
14495
  meta: {
14444
14496
  name: "upload",
14445
14497
  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'"
@@ -14532,7 +14584,7 @@ async function uploadLocal(target, args) {
14532
14584
  }
14533
14585
 
14534
14586
  // src/commands/images/upscale.ts
14535
- import { defineCommand as defineCommand109 } from "citty";
14587
+ import { defineCommand as defineCommand110 } from "citty";
14536
14588
  registerSchema({
14537
14589
  command: "images.upscale",
14538
14590
  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).",
@@ -14547,7 +14599,7 @@ registerSchema({
14547
14599
  }
14548
14600
  });
14549
14601
  var POLL_INTERVAL_MS3 = 1500;
14550
- var upscaleCommand = defineCommand109({
14602
+ var upscaleCommand = defineCommand110({
14551
14603
  meta: {
14552
14604
  name: "upscale",
14553
14605
  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"
@@ -14602,7 +14654,7 @@ var upscaleCommand = defineCommand109({
14602
14654
  });
14603
14655
 
14604
14656
  // src/commands/images/use.ts
14605
- import { defineCommand as defineCommand110 } from "citty";
14657
+ import { defineCommand as defineCommand111 } from "citty";
14606
14658
  registerSchema({
14607
14659
  command: "images.use",
14608
14660
  description: "Ingest a URL and wait for the library record to be ready.",
@@ -14618,7 +14670,7 @@ registerSchema({
14618
14670
  }
14619
14671
  });
14620
14672
  var POLL_INTERVAL_MS4 = 1500;
14621
- var useCommand = defineCommand110({
14673
+ var useCommand = defineCommand111({
14622
14674
  meta: {
14623
14675
  name: "use",
14624
14676
  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"
@@ -14664,7 +14716,7 @@ var useCommand = defineCommand110({
14664
14716
  });
14665
14717
 
14666
14718
  // src/commands/images/index.ts
14667
- var imagesCommand = defineCommand111({
14719
+ var imagesCommand = defineCommand112({
14668
14720
  meta: {
14669
14721
  name: "images",
14670
14722
  description: `Find, source, and normalize images. Subcommands route by provider so cost + license are explicit.
@@ -14700,6 +14752,9 @@ Local transforms (operate on files in the sandbox, before upload):
14700
14752
  Coordinate-based rectangular extract
14701
14753
  baker images dimensions <file-or-url> Width / height / aspect / format without decoding the full image
14702
14754
 
14755
+ Taxonomy:
14756
+ baker images tags List available image tag names (defaults + company custom tags)
14757
+
14703
14758
  Paid transforms (run on the Convex backend, cost-tracked):
14704
14759
  baker images upscale <imageId> Real-ESRGAN super-resolution ($0.05/image, waits for completion)`
14705
14760
  },
@@ -14725,15 +14780,16 @@ Paid transforms (run on the Convex backend, cost-tracked):
14725
14780
  normalize: normalizeCommand,
14726
14781
  crop: cropCommand,
14727
14782
  dimensions: dimensionsCommand,
14728
- upscale: upscaleCommand
14783
+ upscale: upscaleCommand,
14784
+ tags: tagsCommand
14729
14785
  }
14730
14786
  });
14731
14787
 
14732
14788
  // src/commands/research/index.ts
14733
- import { defineCommand as defineCommand122 } from "citty";
14789
+ import { defineCommand as defineCommand123 } from "citty";
14734
14790
 
14735
14791
  // src/commands/research/advertisers.ts
14736
- import { defineCommand as defineCommand112 } from "citty";
14792
+ import { defineCommand as defineCommand113 } from "citty";
14737
14793
 
14738
14794
  // src/commands/research/output.ts
14739
14795
  var RESEARCH_DATA_NOTE = "Estimates based on third-party SERP data \u2014 not exact figures. Use for directional insights, not precise measurement.";
@@ -14846,7 +14902,7 @@ var FIELDS3 = {
14846
14902
  etv: "Estimated traffic value (USD)",
14847
14903
  visibility: "SERP visibility score (0-1)"
14848
14904
  };
14849
- var advertisersCommand = defineCommand112({
14905
+ var advertisersCommand = defineCommand113({
14850
14906
  meta: {
14851
14907
  name: "advertisers",
14852
14908
  description: `Find domains competing for a keyword in Google SERPs.
@@ -14893,7 +14949,7 @@ Examples:
14893
14949
  });
14894
14950
 
14895
14951
  // src/commands/research/autocomplete.ts
14896
- import { defineCommand as defineCommand113 } from "citty";
14952
+ import { defineCommand as defineCommand114 } from "citty";
14897
14953
  registerSchema({
14898
14954
  command: "research.autocomplete",
14899
14955
  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).",
@@ -14916,7 +14972,7 @@ registerSchema({
14916
14972
  var FIELDS4 = {
14917
14973
  suggestion: "Autocomplete suggestion from Google"
14918
14974
  };
14919
- var autocompleteCommand = defineCommand113({
14975
+ var autocompleteCommand = defineCommand114({
14920
14976
  meta: {
14921
14977
  name: "autocomplete",
14922
14978
  description: `Get Google Autocomplete suggestions for keyword expansion.
@@ -14962,7 +15018,7 @@ Examples:
14962
15018
  });
14963
15019
 
14964
15020
  // src/commands/research/countries.ts
14965
- import { defineCommand as defineCommand114 } from "citty";
15021
+ import { defineCommand as defineCommand115 } from "citty";
14966
15022
  registerSchema({
14967
15023
  command: "research.countries",
14968
15024
  description: "List all supported country codes for --location flag in research commands.",
@@ -15019,7 +15075,7 @@ var FIELDS5 = {
15019
15075
  code: "Country code to pass as --location",
15020
15076
  name: "Country name"
15021
15077
  };
15022
- var countriesCommand = defineCommand114({
15078
+ var countriesCommand = defineCommand115({
15023
15079
  meta: {
15024
15080
  name: "countries",
15025
15081
  description: "List all supported country codes for --location flag."
@@ -15030,7 +15086,7 @@ var countriesCommand = defineCommand114({
15030
15086
  });
15031
15087
 
15032
15088
  // src/commands/research/intent.ts
15033
- import { defineCommand as defineCommand115 } from "citty";
15089
+ import { defineCommand as defineCommand116 } from "citty";
15034
15090
  registerSchema({
15035
15091
  command: "research.intent",
15036
15092
  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.",
@@ -15053,7 +15109,7 @@ var FIELDS6 = {
15053
15109
  intent: "Primary Google Search intent: informational, navigational, commercial, transactional",
15054
15110
  probability: "Confidence score 0.0-1.0"
15055
15111
  };
15056
- var intentCommand = defineCommand115({
15112
+ var intentCommand = defineCommand116({
15057
15113
  meta: {
15058
15114
  name: "intent",
15059
15115
  description: `Classify Google Search intent for keywords. Returns intent type and confidence.
@@ -15101,7 +15157,7 @@ Examples:
15101
15157
  });
15102
15158
 
15103
15159
  // src/commands/research/keyword-gap.ts
15104
- import { defineCommand as defineCommand116 } from "citty";
15160
+ import { defineCommand as defineCommand117 } from "citty";
15105
15161
  registerSchema({
15106
15162
  command: "research.keyword-gap",
15107
15163
  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.",
@@ -15130,7 +15186,7 @@ var FIELDS7 = {
15130
15186
  cpc: "Cost per click USD",
15131
15187
  their_position: "Competitor's ranking position"
15132
15188
  };
15133
- var keywordGapCommand = defineCommand116({
15189
+ var keywordGapCommand = defineCommand117({
15134
15190
  meta: {
15135
15191
  name: "keyword-gap",
15136
15192
  description: `Find keywords a competitor has that you don't. Supports pagination via --offset.
@@ -15204,7 +15260,7 @@ Examples:
15204
15260
  });
15205
15261
 
15206
15262
  // src/commands/research/keywords-for-site.ts
15207
- import { defineCommand as defineCommand117 } from "citty";
15263
+ import { defineCommand as defineCommand118 } from "citty";
15208
15264
  registerSchema({
15209
15265
  command: "research.keywords-for-site",
15210
15266
  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.",
@@ -15237,7 +15293,7 @@ var FIELDS8 = {
15237
15293
  competition: "LOW, MEDIUM, or HIGH",
15238
15294
  competition_index: "Competition score 0-100"
15239
15295
  };
15240
- var keywordsForSiteCommand = defineCommand117({
15296
+ var keywordsForSiteCommand = defineCommand118({
15241
15297
  meta: {
15242
15298
  name: "keywords-for-site",
15243
15299
  description: `Get keywords a competitor targets in Google. Use --type to filter paid/organic.
@@ -15290,7 +15346,7 @@ Examples:
15290
15346
  });
15291
15347
 
15292
15348
  // src/commands/research/languages.ts
15293
- import { defineCommand as defineCommand118 } from "citty";
15349
+ import { defineCommand as defineCommand119 } from "citty";
15294
15350
  registerSchema({
15295
15351
  command: "research.languages",
15296
15352
  description: "List all supported language codes for --language flag in research commands.",
@@ -15320,7 +15376,7 @@ var FIELDS9 = {
15320
15376
  code: "Language code to pass as --language",
15321
15377
  name: "Language name (also accepted by --language)"
15322
15378
  };
15323
- var languagesCommand2 = defineCommand118({
15379
+ var languagesCommand2 = defineCommand119({
15324
15380
  meta: {
15325
15381
  name: "languages",
15326
15382
  description: "List all supported language codes for --language flag."
@@ -15331,7 +15387,7 @@ var languagesCommand2 = defineCommand118({
15331
15387
  });
15332
15388
 
15333
15389
  // src/commands/research/lighthouse.ts
15334
- import { defineCommand as defineCommand119 } from "citty";
15390
+ import { defineCommand as defineCommand120 } from "citty";
15335
15391
  registerSchema({
15336
15392
  command: "research.lighthouse",
15337
15393
  description: "Landing page performance audit. Returns metrics that affect Google Ads Quality Score and CPC.",
@@ -15350,7 +15406,7 @@ var FIELDS10 = {
15350
15406
  speed_index_ms: "Speed Index in ms (good: < 3400)",
15351
15407
  interactive_ms: "Time to Interactive in ms (good: < 3800)"
15352
15408
  };
15353
- var lighthouseCommand = defineCommand119({
15409
+ var lighthouseCommand = defineCommand120({
15354
15410
  meta: {
15355
15411
  name: "lighthouse",
15356
15412
  description: `Landing page performance audit. Metrics affecting Google Ads Quality Score.
@@ -15388,7 +15444,7 @@ Examples:
15388
15444
  });
15389
15445
 
15390
15446
  // src/commands/research/relevant-pages.ts
15391
- import { defineCommand as defineCommand120 } from "citty";
15447
+ import { defineCommand as defineCommand121 } from "citty";
15392
15448
  registerSchema({
15393
15449
  command: "research.relevant-pages",
15394
15450
  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).",
@@ -15414,7 +15470,7 @@ var FIELDS11 = {
15414
15470
  keywords: "Total organic keywords the page ranks for",
15415
15471
  top_10: "Keywords in positions 1-10"
15416
15472
  };
15417
- var relevantPagesCommand = defineCommand120({
15473
+ var relevantPagesCommand = defineCommand121({
15418
15474
  meta: {
15419
15475
  name: "relevant-pages",
15420
15476
  description: `Get the top pages of a competitor domain with traffic data.
@@ -15460,7 +15516,7 @@ Examples:
15460
15516
  });
15461
15517
 
15462
15518
  // src/commands/research/web.ts
15463
- import { defineCommand as defineCommand121 } from "citty";
15519
+ import { defineCommand as defineCommand122 } from "citty";
15464
15520
  registerSchema({
15465
15521
  command: "research.web",
15466
15522
  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).",
@@ -15511,7 +15567,7 @@ async function runDeepResearch(question) {
15511
15567
  }
15512
15568
  throw new Error("Deep research timed out");
15513
15569
  }
15514
- var webCommand = defineCommand121({
15570
+ var webCommand = defineCommand122({
15515
15571
  meta: {
15516
15572
  name: "web",
15517
15573
  description: `Search the web with AI to answer any open-ended marketing question. Uses live internet data via Google Search.
@@ -15571,7 +15627,7 @@ Examples:
15571
15627
  });
15572
15628
 
15573
15629
  // src/commands/research/index.ts
15574
- var researchCommand = defineCommand122({
15630
+ var researchCommand = defineCommand123({
15575
15631
  meta: {
15576
15632
  name: "research",
15577
15633
  description: `Competitive intelligence and AI-powered research commands.
@@ -15611,10 +15667,10 @@ Examples:
15611
15667
  });
15612
15668
 
15613
15669
  // src/commands/scheduled-actions/index.ts
15614
- import { defineCommand as defineCommand129 } from "citty";
15670
+ import { defineCommand as defineCommand130 } from "citty";
15615
15671
 
15616
15672
  // src/commands/scheduled-actions/create.ts
15617
- import { defineCommand as defineCommand123 } from "citty";
15673
+ import { defineCommand as defineCommand124 } from "citty";
15618
15674
 
15619
15675
  // src/commands/scheduled-actions/shared.ts
15620
15676
  var TEMP_SCHEDULED_ACTION_PREFIX = "temp_sched_";
@@ -15719,7 +15775,7 @@ registerSchema({
15719
15775
  prompt: { type: "string", description: "Additional prompt instructions for the spawned agent", required: false }
15720
15776
  }
15721
15777
  });
15722
- var createCommand2 = defineCommand123({
15778
+ var createCommand2 = defineCommand124({
15723
15779
  meta: {
15724
15780
  name: "create",
15725
15781
  description: 'Stage a scheduled action. Example: baker scheduled-actions create --name "Weekly report" --description "..." --cron "0 9 * * MON"'
@@ -15767,7 +15823,7 @@ var createCommand2 = defineCommand123({
15767
15823
  });
15768
15824
 
15769
15825
  // src/commands/scheduled-actions/delete.ts
15770
- import { defineCommand as defineCommand124 } from "citty";
15826
+ import { defineCommand as defineCommand125 } from "citty";
15771
15827
  registerSchema({
15772
15828
  command: "scheduled-actions.delete",
15773
15829
  description: "Stage deletion of a published scheduled action or cancellation of a temp_sched_* draft creation.",
@@ -15775,7 +15831,7 @@ registerSchema({
15775
15831
  id: { type: "string", description: "Published scheduled action ID or temp_sched_* draft ID", required: true }
15776
15832
  }
15777
15833
  });
15778
- var deleteCommand2 = defineCommand124({
15834
+ var deleteCommand2 = defineCommand125({
15779
15835
  meta: {
15780
15836
  name: "delete",
15781
15837
  description: "Stage scheduled action deletion. Example: baker scheduled-actions delete <id-or-temp_sched_id>"
@@ -15804,7 +15860,7 @@ var deleteCommand2 = defineCommand124({
15804
15860
  });
15805
15861
 
15806
15862
  // src/commands/scheduled-actions/get.ts
15807
- import { defineCommand as defineCommand125 } from "citty";
15863
+ import { defineCommand as defineCommand126 } from "citty";
15808
15864
  registerSchema({
15809
15865
  command: "scheduled-actions.get",
15810
15866
  description: "Get a published scheduled action or a temp_sched_* draft-created scheduled action.",
@@ -15812,7 +15868,7 @@ registerSchema({
15812
15868
  id: { type: "string", description: "Published scheduled action ID or temp_sched_* draft ID", required: true }
15813
15869
  }
15814
15870
  });
15815
- var getCommand3 = defineCommand125({
15871
+ var getCommand3 = defineCommand126({
15816
15872
  meta: {
15817
15873
  name: "get",
15818
15874
  description: "Get a scheduled action. Example: baker scheduled-actions get <id-or-temp_sched_id>"
@@ -15849,13 +15905,13 @@ var getCommand3 = defineCommand125({
15849
15905
  });
15850
15906
 
15851
15907
  // src/commands/scheduled-actions/list.ts
15852
- import { defineCommand as defineCommand126 } from "citty";
15908
+ import { defineCommand as defineCommand127 } from "citty";
15853
15909
  registerSchema({
15854
15910
  command: "scheduled-actions.list",
15855
15911
  description: "List published scheduled actions. Includes draft state when BAKER_CHAT_ID is set.",
15856
15912
  args: {}
15857
15913
  });
15858
- var listCommand3 = defineCommand126({
15914
+ var listCommand3 = defineCommand127({
15859
15915
  meta: {
15860
15916
  name: "list",
15861
15917
  description: "List scheduled actions. Includes staged draft ops when BAKER_CHAT_ID is set."
@@ -15876,7 +15932,7 @@ var listCommand3 = defineCommand126({
15876
15932
  });
15877
15933
 
15878
15934
  // src/commands/scheduled-actions/trigger.ts
15879
- import { defineCommand as defineCommand127 } from "citty";
15935
+ import { defineCommand as defineCommand128 } from "citty";
15880
15936
  registerSchema({
15881
15937
  command: "scheduled-actions.trigger",
15882
15938
  description: "Immediately trigger a published scheduled action. Does not require BAKER_CHAT_ID and rejects temp_sched_* IDs.",
@@ -15884,7 +15940,7 @@ registerSchema({
15884
15940
  id: { type: "string", description: "Published scheduled action ID", required: true }
15885
15941
  }
15886
15942
  });
15887
- var triggerCommand = defineCommand127({
15943
+ var triggerCommand = defineCommand128({
15888
15944
  meta: {
15889
15945
  name: "trigger",
15890
15946
  description: "Immediately trigger a published scheduled action. Example: baker scheduled-actions trigger <id>"
@@ -15921,7 +15977,7 @@ var triggerCommand = defineCommand127({
15921
15977
  });
15922
15978
 
15923
15979
  // src/commands/scheduled-actions/update.ts
15924
- import { defineCommand as defineCommand128 } from "citty";
15980
+ import { defineCommand as defineCommand129 } from "citty";
15925
15981
  registerSchema({
15926
15982
  command: "scheduled-actions.update",
15927
15983
  description: "Stage an update to a published scheduled action or temp_sched_* draft-created scheduled action.",
@@ -15946,7 +16002,7 @@ registerSchema({
15946
16002
  prompt: { type: "string", description: "Replacement additional spawned-agent instructions", required: false }
15947
16003
  }
15948
16004
  });
15949
- var updateCommand2 = defineCommand128({
16005
+ var updateCommand2 = defineCommand129({
15950
16006
  meta: {
15951
16007
  name: "update",
15952
16008
  description: "Stage a scheduled action update. Example: baker scheduled-actions update <id> --enabled false"
@@ -16016,7 +16072,7 @@ var updateCommand2 = defineCommand128({
16016
16072
  });
16017
16073
 
16018
16074
  // src/commands/scheduled-actions/index.ts
16019
- var scheduledActionsCommand = defineCommand129({
16075
+ var scheduledActionsCommand = defineCommand130({
16020
16076
  meta: {
16021
16077
  name: "scheduled-actions",
16022
16078
  description: `Manage Scheduled Actions. Subcommands: list, get, create, update, delete, trigger.
@@ -16042,8 +16098,8 @@ Examples:
16042
16098
  });
16043
16099
 
16044
16100
  // src/commands/schema.ts
16045
- import { defineCommand as defineCommand130 } from "citty";
16046
- var schemaCommand = defineCommand130({
16101
+ import { defineCommand as defineCommand131 } from "citty";
16102
+ var schemaCommand = defineCommand131({
16047
16103
  meta: {
16048
16104
  name: "schema",
16049
16105
  description: "Inspect command argument schemas (for AI agent introspection). Lists all commands if no argument given. Example: baker schema images.search"
@@ -16079,10 +16135,10 @@ var schemaCommand = defineCommand130({
16079
16135
  });
16080
16136
 
16081
16137
  // src/commands/testimonials/index.ts
16082
- import { defineCommand as defineCommand134 } from "citty";
16138
+ import { defineCommand as defineCommand135 } from "citty";
16083
16139
 
16084
16140
  // src/commands/testimonials/get.ts
16085
- import { defineCommand as defineCommand131 } from "citty";
16141
+ import { defineCommand as defineCommand132 } from "citty";
16086
16142
  registerSchema({
16087
16143
  command: "testimonials.get",
16088
16144
  description: "Get a single testimonial by ID",
@@ -16090,7 +16146,7 @@ registerSchema({
16090
16146
  id: { type: "string", description: "Testimonial ID", required: true }
16091
16147
  }
16092
16148
  });
16093
- var getCommand4 = defineCommand131({
16149
+ var getCommand4 = defineCommand132({
16094
16150
  meta: { name: "get", description: "Get a single testimonial by ID. Example: baker testimonials get j571abc123" },
16095
16151
  args: {
16096
16152
  id: { type: "positional", description: "Testimonial ID", required: false },
@@ -16127,7 +16183,7 @@ var getCommand4 = defineCommand131({
16127
16183
  });
16128
16184
 
16129
16185
  // src/commands/testimonials/list.ts
16130
- import { defineCommand as defineCommand132 } from "citty";
16186
+ import { defineCommand as defineCommand133 } from "citty";
16131
16187
  registerSchema({
16132
16188
  command: "testimonials.list",
16133
16189
  description: "List testimonials with optional filters.",
@@ -16157,7 +16213,7 @@ registerSchema({
16157
16213
  limit: { type: "number", description: "Max results (default 50)", required: false, default: 50 }
16158
16214
  }
16159
16215
  });
16160
- var listCommand4 = defineCommand132({
16216
+ var listCommand4 = defineCommand133({
16161
16217
  meta: {
16162
16218
  name: "list",
16163
16219
  description: "List testimonials with optional filters. Example: baker testimonials list --source google --sentiment positive"
@@ -16206,7 +16262,7 @@ var listCommand4 = defineCommand132({
16206
16262
  });
16207
16263
 
16208
16264
  // src/commands/testimonials/search.ts
16209
- import { defineCommand as defineCommand133 } from "citty";
16265
+ import { defineCommand as defineCommand134 } from "citty";
16210
16266
  registerSchema({
16211
16267
  command: "testimonials.search",
16212
16268
  description: "Search testimonials by text query. Uses hybrid BM25 + vector + reranking.",
@@ -16237,7 +16293,7 @@ registerSchema({
16237
16293
  tags: { type: "string", description: "Comma-separated tags to filter by", required: false }
16238
16294
  }
16239
16295
  });
16240
- var searchCommand2 = defineCommand133({
16296
+ var searchCommand2 = defineCommand134({
16241
16297
  meta: {
16242
16298
  name: "search",
16243
16299
  description: "Semantic search testimonials by text query. Uses hybrid BM25 + vector + reranking. Example: baker testimonials search 'great service' --rating-min 4"
@@ -16307,30 +16363,35 @@ var searchCommand2 = defineCommand133({
16307
16363
  }
16308
16364
  });
16309
16365
 
16366
+ // src/commands/testimonials/tags.ts
16367
+ var tagsCommand2 = makeTagsCommand("testimonials", "testimonial", "/api/testimonials/tags");
16368
+
16310
16369
  // src/commands/testimonials/index.ts
16311
- var testimonialsCommand = defineCommand134({
16370
+ var testimonialsCommand = defineCommand135({
16312
16371
  meta: {
16313
16372
  name: "testimonials",
16314
- description: `Find and browse testimonials in Baker. Subcommands: search, get, list.
16373
+ description: `Find and browse testimonials in Baker. Subcommands: search, get, list, tags.
16315
16374
 
16316
16375
  Examples:
16317
16376
  baker testimonials search "great customer service" --limit 5
16318
16377
  baker testimonials search "value for money" --rating-min 4
16319
16378
  baker testimonials get <testimonial-id>
16320
- baker testimonials list --source google --sentiment positive`
16379
+ baker testimonials list --source google --sentiment positive
16380
+ baker testimonials tags`
16321
16381
  },
16322
16382
  subCommands: {
16323
16383
  get: getCommand4,
16324
16384
  search: searchCommand2,
16325
- list: listCommand4
16385
+ list: listCommand4,
16386
+ tags: tagsCommand2
16326
16387
  }
16327
16388
  });
16328
16389
 
16329
16390
  // src/commands/videos/index.ts
16330
- import { defineCommand as defineCommand139 } from "citty";
16391
+ import { defineCommand as defineCommand140 } from "citty";
16331
16392
 
16332
16393
  // src/commands/videos/delete.ts
16333
- import { defineCommand as defineCommand135 } from "citty";
16394
+ import { defineCommand as defineCommand136 } from "citty";
16334
16395
  registerSchema({
16335
16396
  command: "videos.delete",
16336
16397
  description: "Delete a video by ID",
@@ -16344,7 +16405,7 @@ registerSchema({
16344
16405
  }
16345
16406
  }
16346
16407
  });
16347
- var deleteCommand3 = defineCommand135({
16408
+ var deleteCommand3 = defineCommand136({
16348
16409
  meta: {
16349
16410
  name: "delete",
16350
16411
  description: "Delete a video by ID. Use --dry-run to preview. Example: baker videos delete j571abc123 --dry-run"
@@ -16385,7 +16446,7 @@ var deleteCommand3 = defineCommand135({
16385
16446
  });
16386
16447
 
16387
16448
  // src/commands/videos/get.ts
16388
- import { defineCommand as defineCommand136 } from "citty";
16449
+ import { defineCommand as defineCommand137 } from "citty";
16389
16450
  registerSchema({
16390
16451
  command: "videos.get",
16391
16452
  description: "Get a single video by ID",
@@ -16393,7 +16454,7 @@ registerSchema({
16393
16454
  id: { type: "string", description: "Video ID", required: true }
16394
16455
  }
16395
16456
  });
16396
- var getCommand5 = defineCommand136({
16457
+ var getCommand5 = defineCommand137({
16397
16458
  meta: { name: "get", description: "Get a single video by ID. Example: baker videos get j571abc123" },
16398
16459
  args: {
16399
16460
  id: { type: "positional", description: "Video ID", required: false },
@@ -16430,7 +16491,7 @@ var getCommand5 = defineCommand136({
16430
16491
  });
16431
16492
 
16432
16493
  // src/commands/videos/search.ts
16433
- import { defineCommand as defineCommand137 } from "citty";
16494
+ import { defineCommand as defineCommand138 } from "citty";
16434
16495
  registerSchema({
16435
16496
  command: "videos.search",
16436
16497
  description: "Search videos by text query. Only returns ready videos.",
@@ -16440,7 +16501,7 @@ registerSchema({
16440
16501
  tags: { type: "string", description: "Comma-separated tags to filter by", required: false }
16441
16502
  }
16442
16503
  });
16443
- var searchCommand3 = defineCommand137({
16504
+ var searchCommand3 = defineCommand138({
16444
16505
  meta: {
16445
16506
  name: "search",
16446
16507
  description: "Semantic search videos by text query. Uses hybrid BM25 + vector + reranking. Example: baker videos search 'product demo' --tags tutorial"
@@ -16486,10 +16547,13 @@ var searchCommand3 = defineCommand137({
16486
16547
  }
16487
16548
  });
16488
16549
 
16550
+ // src/commands/videos/tags.ts
16551
+ var tagsCommand3 = makeTagsCommand("videos", "video", "/api/videos/tags");
16552
+
16489
16553
  // src/commands/videos/upload.ts
16490
16554
  import { readFile as readFile10, stat as stat3 } from "fs/promises";
16491
16555
  import { extname as extname3 } from "path";
16492
- import { defineCommand as defineCommand138 } from "citty";
16556
+ import { defineCommand as defineCommand139 } from "citty";
16493
16557
  var MIME_MAP2 = {
16494
16558
  ".mp4": "video/mp4",
16495
16559
  ".mov": "video/quicktime",
@@ -16523,7 +16587,7 @@ function detectContentType2(filePath) {
16523
16587
  }
16524
16588
  return mime;
16525
16589
  }
16526
- var uploadCommand2 = defineCommand138({
16590
+ var uploadCommand2 = defineCommand139({
16527
16591
  meta: {
16528
16592
  name: "upload",
16529
16593
  description: "Upload a video file to Baker via Mux direct upload. Auto-detects content type. Example: baker videos upload ./demo.mp4"
@@ -16577,31 +16641,33 @@ var uploadCommand2 = defineCommand138({
16577
16641
  });
16578
16642
 
16579
16643
  // src/commands/videos/index.ts
16580
- var videosCommand = defineCommand139({
16644
+ var videosCommand = defineCommand140({
16581
16645
  meta: {
16582
16646
  name: "videos",
16583
- description: `Find and manage videos in Baker. Subcommands: search, get, upload, delete.
16647
+ description: `Find and manage videos in Baker. Subcommands: search, get, upload, delete, tags.
16584
16648
 
16585
16649
  Examples:
16586
16650
  baker videos search "product demo" --limit 5
16587
16651
  baker videos search "tutorial" --tags explainer
16588
16652
  baker videos get <video-id>
16589
16653
  baker videos upload ./demo.mp4
16590
- baker videos delete <video-id> --dry-run`
16654
+ baker videos delete <video-id> --dry-run
16655
+ baker videos tags`
16591
16656
  },
16592
16657
  subCommands: {
16593
16658
  get: getCommand5,
16594
16659
  search: searchCommand3,
16595
16660
  upload: uploadCommand2,
16596
- delete: deleteCommand3
16661
+ delete: deleteCommand3,
16662
+ tags: tagsCommand3
16597
16663
  }
16598
16664
  });
16599
16665
 
16600
16666
  // src/commands/winning-ads/index.ts
16601
- import { defineCommand as defineCommand142 } from "citty";
16667
+ import { defineCommand as defineCommand143 } from "citty";
16602
16668
 
16603
16669
  // src/commands/winning-ads/advertisers.ts
16604
- import { defineCommand as defineCommand140 } from "citty";
16670
+ import { defineCommand as defineCommand141 } from "citty";
16605
16671
  registerSchema({
16606
16672
  command: "winning-ads.advertisers",
16607
16673
  description: "Resolve a brand name to advertiser_id(s) in the ad-dna corpus \u2014 to find your OWN advertiser (to --exclude-advertiser) or a competitor (to --advertiser-id).",
@@ -16614,7 +16680,7 @@ registerSchema({
16614
16680
  function identity(record) {
16615
16681
  return record;
16616
16682
  }
16617
- var advertisersCommand2 = defineCommand140({
16683
+ var advertisersCommand2 = defineCommand141({
16618
16684
  meta: {
16619
16685
  name: "advertisers",
16620
16686
  description: 'Resolve a brand name to advertiser_id(s). Use it to find your own advertiser for --exclude-advertiser, or a competitor for --advertiser-id. Example: baker winning-ads advertisers "Deel" --output md'
@@ -16665,7 +16731,7 @@ var advertisersCommand2 = defineCommand140({
16665
16731
  });
16666
16732
 
16667
16733
  // src/commands/winning-ads/search.ts
16668
- import { defineCommand as defineCommand141 } from "citty";
16734
+ import { defineCommand as defineCommand142 } from "citty";
16669
16735
  registerSchema({
16670
16736
  command: "winning-ads.search",
16671
16737
  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.",
@@ -16773,7 +16839,7 @@ function buildSearchBody(args) {
16773
16839
  }
16774
16840
  return body;
16775
16841
  }
16776
- var searchCommand4 = defineCommand141({
16842
+ var searchCommand4 = defineCommand142({
16777
16843
  meta: {
16778
16844
  name: "search",
16779
16845
  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"
@@ -16885,7 +16951,7 @@ var searchCommand4 = defineCommand141({
16885
16951
  });
16886
16952
 
16887
16953
  // src/commands/winning-ads/index.ts
16888
- var winningAdsCommand = defineCommand142({
16954
+ var winningAdsCommand = defineCommand143({
16889
16955
  meta: {
16890
16956
  name: "winning-ads",
16891
16957
  description: `Search the ad-dna corpus of scored "winning" ads for reference creatives to reproduce. Proxied through the Baker backend (BAKER_API_KEY) \u2014 no separate token needed.
@@ -16925,7 +16991,7 @@ function getCliVersion() {
16925
16991
  }
16926
16992
 
16927
16993
  // src/cli.ts
16928
- var main = defineCommand143({
16994
+ var main = defineCommand144({
16929
16995
  meta: {
16930
16996
  name: "baker",
16931
16997
  version: getCliVersion(),