@koda-sl/baker-cli 0.260.0 → 0.261.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
@@ -831,7 +831,7 @@ var actionsTagsDeleteResponseSchema = okOnlySchema();
831
831
 
832
832
  // ../api/src/ad-library/wire.ts
833
833
  import { z as z2 } from "zod";
834
- var adLibraryPlatformSchema = z2.enum(["meta", "linkedin"]);
834
+ var adLibraryPlatformSchema = z2.enum(["meta", "linkedin", "tiktok"]);
835
835
  var winnersHardFiltersSchema = z2.object({
836
836
  platform: z2.array(z2.string()).optional(),
837
837
  format: z2.array(z2.string()).optional(),
@@ -51752,7 +51752,7 @@ registerSchema({
51752
51752
  description: "List brands in the shared ad-dna corpus by name or domain. Use it to find your OWN advertiser (to --exclude-advertiser on search) or a competitor (to --advertiser-id on search / winners).",
51753
51753
  args: {
51754
51754
  query: { type: "string", description: "Brand name or domain to match (case-insensitive)", required: false },
51755
- platform: { type: "string", description: "Filter to a single platform: meta|linkedin", required: false },
51755
+ platform: { type: "string", description: "Filter to a single platform: meta|linkedin|tiktok", required: false },
51756
51756
  limit: { type: "number", description: "Max results 1-100 (default 20)", required: false, default: 20 },
51757
51757
  offset: { type: "number", description: "Skip N results (pagination)", required: false, default: 0 }
51758
51758
  }
@@ -51788,7 +51788,7 @@ var advertisersCommand2 = defineCommand215({
51788
51788
  },
51789
51789
  args: {
51790
51790
  query: { type: "positional", description: "Brand name or domain", required: false },
51791
- platform: { type: "string", description: "Filter to a single platform: meta|linkedin", required: false },
51791
+ platform: { type: "string", description: "Filter to a single platform: meta|linkedin|tiktok", required: false },
51792
51792
  limit: { type: "string", description: "Max results (default 20)", required: false },
51793
51793
  offset: { type: "string", description: "Skip N results (pagination)", required: false },
51794
51794
  output: { type: "string", description: "Output format: json|files|md", required: false, default: "json" },
@@ -51929,7 +51929,7 @@ registerSchema({
51929
51929
  "ad-id": { type: "string", description: "The ad id to open (from search/winners/feed results)", required: true },
51930
51930
  platform: {
51931
51931
  type: "string",
51932
- description: "Which platform the ad id is on: meta|linkedin (default meta)",
51932
+ description: "Which platform the ad id is on: meta|linkedin|tiktok (default meta)",
51933
51933
  required: false
51934
51934
  }
51935
51935
  }
@@ -51943,7 +51943,7 @@ var contentCommand = defineCommand217({
51943
51943
  "ad-id": { type: "positional", description: "Ad id (from search/winners/feed)", required: true },
51944
51944
  platform: {
51945
51945
  type: "string",
51946
- description: "Platform the ad id is on: meta|linkedin (default meta)",
51946
+ description: "Platform the ad id is on: meta|linkedin|tiktok (default meta)",
51947
51947
  required: false
51948
51948
  },
51949
51949
  output: { type: "string", description: "Output format: json|files|md", required: false, default: "json" },
@@ -52018,7 +52018,7 @@ registerSchema({
52018
52018
  description: "Comma-separated followed advertiser ids to narrow to (from `following`). Omit for all follows.",
52019
52019
  required: false
52020
52020
  },
52021
- platform: { type: "string", description: "Filter to a single platform: meta|linkedin", required: false },
52021
+ platform: { type: "string", description: "Filter to a single platform: meta|linkedin|tiktok", required: false },
52022
52022
  "per-advertiser": {
52023
52023
  type: "number",
52024
52024
  description: "Max winners kept per advertiser 0-50 (0 = no cap, default 5)",
@@ -52046,7 +52046,7 @@ var feedCommand = defineCommand218({
52046
52046
  description: "Comma-separated followed advertiser ids to narrow to",
52047
52047
  required: false
52048
52048
  },
52049
- platform: { type: "string", description: "Filter to a single platform: meta|linkedin", required: false },
52049
+ platform: { type: "string", description: "Filter to a single platform: meta|linkedin|tiktok", required: false },
52050
52050
  "per-advertiser": {
52051
52051
  type: "string",
52052
52052
  description: "Max winners per advertiser 0-50 (0 = no cap, default 5)",
@@ -52121,15 +52121,15 @@ var feedCommand = defineCommand218({
52121
52121
 
52122
52122
  // src/commands/winning-ads/follow.ts
52123
52123
  import { defineCommand as defineCommand219 } from "citty";
52124
- var PLATFORMS = ["meta", "linkedin"];
52124
+ var PLATFORMS = adLibraryPlatformSchema.options;
52125
52125
  registerSchema({
52126
52126
  command: "winning-ads.follow",
52127
- description: "Follow a brand so ALL its ads join your library \u2014 every platform (Meta + LinkedIn) and every country. Pass a domain (best \u2014 resolves both platforms), an ad-library / profile URL, or a brand name. --platform tells us how to read your input; it does NOT limit what we track. Already-in-corpus brands are subscribed instantly; new brands are queued for ingestion.",
52127
+ description: "Follow a brand so ALL its ads join your library \u2014 every platform (Meta, LinkedIn, TikTok) and every country. Pass a domain (best \u2014 resolves both platforms), an ad-library / profile URL, or a brand name. --platform tells us how to read your input; it does NOT limit what we track. Already-in-corpus brands are subscribed instantly; new brands are queued for ingestion.",
52128
52128
  args: {
52129
52129
  input: { type: "string", description: "Domain (best), profile/ad-library URL, or brand name", required: true },
52130
52130
  platform: {
52131
52131
  type: "string",
52132
- description: "meta|linkedin \u2014 how to read the input, not a tracking limit. We track every platform we can resolve.",
52132
+ description: "meta|linkedin|tiktok \u2014 how to read the input, not a tracking limit. We track every platform we can resolve.",
52133
52133
  required: true
52134
52134
  },
52135
52135
  label: { type: "string", description: "Optional display label (defaults to the resolved name)", required: false }
@@ -52138,13 +52138,13 @@ registerSchema({
52138
52138
  var followCommand = defineCommand219({
52139
52139
  meta: {
52140
52140
  name: "follow",
52141
- 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'
52141
+ description: 'Follow a brand to track ALL its ads \u2014 every platform and country. --platform is how we read your input, not a limit. A domain tracks every platform we can resolve. Example: baker winning-ads follow "deel.com" --platform meta'
52142
52142
  },
52143
52143
  args: {
52144
52144
  input: { type: "positional", description: "Domain (best), profile/ad-library URL, or brand name", required: true },
52145
52145
  platform: {
52146
52146
  type: "string",
52147
- description: "meta|linkedin \u2014 how to read the input, not a tracking limit.",
52147
+ description: "meta|linkedin|tiktok \u2014 how to read the input, not a tracking limit.",
52148
52148
  required: true
52149
52149
  },
52150
52150
  label: { type: "string", description: "Optional display label", required: false }
@@ -52155,7 +52155,7 @@ var followCommand = defineCommand219({
52155
52155
  if (!PLATFORMS.includes(platform)) {
52156
52156
  writeJson({
52157
52157
  ok: false,
52158
- error: { code: "VALIDATION_ERROR", message: "--platform must be one of: meta, linkedin" }
52158
+ error: { code: "VALIDATION_ERROR", message: "--platform must be one of: meta, linkedin, tiktok" }
52159
52159
  });
52160
52160
  process.exit(1);
52161
52161
  }
@@ -52183,7 +52183,7 @@ var followCommand = defineCommand219({
52183
52183
 
52184
52184
  // src/commands/winning-ads/follow-competitors.ts
52185
52185
  import { defineCommand as defineCommand220 } from "citty";
52186
- var PLATFORMS2 = ["meta", "linkedin"];
52186
+ var PLATFORMS2 = adLibraryPlatformSchema.options;
52187
52187
  var BATCH_TIMEOUT_MS = 3e5;
52188
52188
  function buildFollowBatchBody(input) {
52189
52189
  const seen = /* @__PURE__ */ new Set();
@@ -52200,7 +52200,7 @@ function buildFollowBatchBody(input) {
52200
52200
  }
52201
52201
  registerSchema({
52202
52202
  command: "winning-ads.follow-competitors",
52203
- description: "Follow MANY brands at once \u2014 the fast way to add every competitor to your library. Pass a comma-separated list of domains (best \u2014 each resolves both Meta + LinkedIn, every country). One brand failing never blocks the others: the response reports per-brand status (following/added/ambiguous/failed) plus rollup counts. Ideal right after a competitor scan.",
52203
+ description: "Follow MANY brands at once \u2014 the fast way to add every competitor to your library. Pass a comma-separated list of domains (best \u2014 each resolves every platform we can find, every country). One brand failing never blocks the others: the response reports per-brand status (following/added/ambiguous/failed) plus rollup counts. Ideal right after a competitor scan.",
52204
52204
  args: {
52205
52205
  domains: {
52206
52206
  type: "string",
@@ -52209,7 +52209,7 @@ registerSchema({
52209
52209
  },
52210
52210
  platform: {
52211
52211
  type: "string",
52212
- description: "meta|linkedin \u2014 how to read each input, not a tracking limit (default meta). Domains resolve both.",
52212
+ description: "meta|linkedin|tiktok \u2014 how to read each input, not a tracking limit (default meta). Domains resolve every platform we can find.",
52213
52213
  required: false,
52214
52214
  default: "meta"
52215
52215
  }
@@ -52228,7 +52228,7 @@ var followCompetitorsCommand = defineCommand220({
52228
52228
  },
52229
52229
  platform: {
52230
52230
  type: "string",
52231
- description: "meta|linkedin \u2014 how to read each input, not a tracking limit (default meta).",
52231
+ description: "meta|linkedin|tiktok \u2014 how to read each input, not a tracking limit (default meta).",
52232
52232
  required: false,
52233
52233
  default: "meta"
52234
52234
  }
@@ -52239,7 +52239,7 @@ var followCompetitorsCommand = defineCommand220({
52239
52239
  if (!PLATFORMS2.includes(platform)) {
52240
52240
  writeJson({
52241
52241
  ok: false,
52242
- error: { code: "VALIDATION_ERROR", message: "--platform must be one of: meta, linkedin" }
52242
+ error: { code: "VALIDATION_ERROR", message: "--platform must be one of: meta, linkedin, tiktok" }
52243
52243
  });
52244
52244
  process.exit(1);
52245
52245
  }
@@ -52496,7 +52496,7 @@ registerSchema({
52496
52496
  "min-relevance": { type: "number", description: "Relevance floor 0-1; trims weak matches", required: false },
52497
52497
  platform: {
52498
52498
  type: "string",
52499
- description: "Comma list: meta,linkedin",
52499
+ description: "Comma list: meta,linkedin,tiktok",
52500
52500
  required: false
52501
52501
  },
52502
52502
  format: { type: "string", description: "Comma list: video,static,carousel", required: false },
@@ -52605,7 +52605,7 @@ var searchCommand5 = defineCommand223({
52605
52605
  "min-relevance": { type: "string", description: "Relevance floor 0-1", required: false },
52606
52606
  platform: {
52607
52607
  type: "string",
52608
- description: "Comma list of platforms (meta,linkedin) \u2014 search one or both",
52608
+ description: "Comma list of platforms (meta,linkedin,tiktok) \u2014 search one or several",
52609
52609
  required: false
52610
52610
  },
52611
52611
  format: { type: "string", description: "Comma list of formats (video,static,carousel)", required: false },
@@ -52720,7 +52720,7 @@ function makeSeedCommand(opts) {
52720
52720
  command: `winning-ads.${opts.name}`,
52721
52721
  description: opts.description,
52722
52722
  args: {
52723
- platform: { type: "string", description: "Single platform (meta,linkedin)", required: false },
52723
+ platform: { type: "string", description: "Single platform (meta,linkedin,tiktok)", required: false },
52724
52724
  awareness: { type: "string", description: "Single awareness stage", required: false },
52725
52725
  industry: { type: "string", description: "Single industry seed", required: false },
52726
52726
  limit: { type: "number", description: "Max keys 1-100 (default 20)", required: false, default: 20 }
@@ -52811,7 +52811,7 @@ registerSchema({
52811
52811
  args: {
52812
52812
  advertiser: { type: "string", description: "Advertiser id to browse", required: true },
52813
52813
  top: { type: "number", description: "Max winners 1-100 (default 10)", required: false, default: 10 },
52814
- platform: { type: "string", description: "Filter to a single platform: meta|linkedin", required: false }
52814
+ platform: { type: "string", description: "Filter to a single platform: meta|linkedin|tiktok", required: false }
52815
52815
  }
52816
52816
  });
52817
52817
  var winnersCommand = defineCommand226({
@@ -52822,7 +52822,7 @@ var winnersCommand = defineCommand226({
52822
52822
  args: {
52823
52823
  advertiser: { type: "positional", description: "Advertiser id", required: true },
52824
52824
  top: { type: "string", description: "Max winners 1-100 (default 10)", required: false },
52825
- platform: { type: "string", description: "Filter to a single platform: meta|linkedin", required: false },
52825
+ platform: { type: "string", description: "Filter to a single platform: meta|linkedin|tiktok", required: false },
52826
52826
  output: { type: "string", description: "Output format: json|files|md", required: false, default: "json" },
52827
52827
  fields: { type: "string", description: "Comma-separated field names to include", required: false },
52828
52828
  full: {
@@ -52874,7 +52874,7 @@ Auth: BAKER_API_KEY (must start with bk_) + BAKER_API_URL (your Convex .convex.s
52874
52874
  Subcommands:
52875
52875
  baker winning-ads search "<free text>" \u2014 semantic search across the corpus; lean shortlist (advertiser, summary, scores, media_url)
52876
52876
  baker winning-ads advertisers "<brand>" \u2014 list corpus brands \u2192 advertiser ids (for --exclude-advertiser / --advertiser-id)
52877
- baker winning-ads follow "<domain|url|brand>" --platform meta|linkedin \u2014 add a brand's ads to your library
52877
+ baker winning-ads follow "<domain|url|brand>" --platform meta|linkedin|tiktok \u2014 add a brand's ads to your library
52878
52878
  baker winning-ads follow-competitors "<domain,domain,...>" \u2014 add MANY brands at once (every competitor by domain)
52879
52879
  baker winning-ads following \u2014 list brands you follow (status + counts)
52880
52880
  baker winning-ads feed \u2014 winners across EVERY brand you follow; trim with --advertiser