@koda-sl/baker-cli 0.520.0 → 0.521.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.
Files changed (100) hide show
  1. package/dist/{account-Z2N545F3.js → account-JXUUHDEB.js} +3 -3
  2. package/dist/{account-assets-UQ5RS66K.js → account-assets-3SIBPJXJ.js} +9 -9
  3. package/dist/account-assets-3SIBPJXJ.js.map +1 -0
  4. package/dist/{account-level-QHTIN4DY.js → account-level-46AIGZXA.js} +5 -5
  5. package/dist/{account-reads-QDVBCQ7D.js → account-reads-5VPDX6NF.js} +3 -3
  6. package/dist/{accounts-DAWCHDAC.js → accounts-D6FP4DC2.js} +3 -3
  7. package/dist/{activities-UIBWZUGE.js → activities-NYWRMNCH.js} +3 -3
  8. package/dist/{ads-6OUSUM5Y.js → ads-ALI6QLW2.js} +4 -4
  9. package/dist/{ads-I2KFV42R.js → ads-DRMVHMJH.js} +12 -12
  10. package/dist/{adsets-GYVCPG4K.js → adsets-XE5S6J5S.js} +11 -11
  11. package/dist/{asset-writes-F5E3TWLS.js → asset-writes-5TAUIKSN.js} +5 -5
  12. package/dist/{audience-writes-LVPTXKT7.js → audience-writes-P63WFDXJ.js} +4 -4
  13. package/dist/{audiences-AVQ2VWHF.js → audiences-U6MQRRTP.js} +8 -8
  14. package/dist/{businesses-XH7A32WX.js → businesses-RRYQYTG4.js} +3 -3
  15. package/dist/{campaigns-7ZUR46T2.js → campaigns-DDUXFR77.js} +11 -11
  16. package/dist/{catalogs-L6SLRMPR.js → catalogs-A6CHXN5B.js} +4 -4
  17. package/dist/{chunk-LC75VG6J.js → chunk-2UQJ5BDJ.js} +2 -2
  18. package/dist/{chunk-AI3ICPS6.js → chunk-3XG6I4K6.js} +2 -2
  19. package/dist/{chunk-7RERKOMK.js → chunk-IQ3MYXCJ.js} +2 -2
  20. package/dist/{chunk-6HZF5XQB.js → chunk-JHEWSMOS.js} +2 -2
  21. package/dist/{chunk-EAIFDVBK.js → chunk-NAYO267Q.js} +2 -2
  22. package/dist/{chunk-Y2JZX6JB.js → chunk-QALAJNBG.js} +6 -5
  23. package/dist/chunk-QALAJNBG.js.map +1 -0
  24. package/dist/cli.js +2 -2
  25. package/dist/{conversion-upload-command-OG3UCC5N.js → conversion-upload-command-TYGIB7XJ.js} +3 -3
  26. package/dist/{copy-writes-USCBG57G.js → copy-writes-GUOL2QUD.js} +5 -5
  27. package/dist/{creatives-52E7O3RB.js → creatives-BGYARLCC.js} +6 -6
  28. package/dist/{custom-conversions-L3CMZCTZ.js → custom-conversions-SUXA7KSN.js} +6 -6
  29. package/dist/{draft-7VJRJ2XH.js → draft-2EO63W4K.js} +3 -3
  30. package/dist/{draft-RF6LORXE.js → draft-PJT5TSFQ.js} +3 -3
  31. package/dist/{forecast-3G6GGAKZ.js → forecast-IECMUBL2.js} +3 -3
  32. package/dist/{google-4BN4ERUJ.js → google-CWHRLDBL.js} +11 -11
  33. package/dist/{insights-HOZ5H4A3.js → insights-VW475N6G.js} +3 -3
  34. package/dist/{instant-experiences-ARUYYGVW.js → instant-experiences-JJJKZAQQ.js} +4 -4
  35. package/dist/{leads-KCFSCWZY.js → leads-2BXRQDT5.js} +4 -4
  36. package/dist/{media-SXILZKYE.js → media-KXBWT2YJ.js} +3 -3
  37. package/dist/{meta-ZQLFWVAR.js → meta-5ODNL2LA.js} +38 -38
  38. package/dist/{page-photos-22Q6ZH2W.js → page-photos-CJIFQDW5.js} +4 -4
  39. package/dist/{pages-DYWRNXQP.js → pages-NJN2E5HU.js} +3 -3
  40. package/dist/{pixels-R3ISRBUJ.js → pixels-E7UYF4KE.js} +3 -3
  41. package/dist/{preview-UOMZ5TUK.js → preview-QGLUDJ3A.js} +3 -3
  42. package/dist/{rule-writes-OGVSR5US.js → rule-writes-AHDYOYVO.js} +4 -4
  43. package/dist/{rules-O2TI4YBB.js → rules-5HIC2F34.js} +9 -9
  44. package/dist/{shared-DADIQPBQ.js → shared-S7ZPZXF5.js} +3 -3
  45. package/dist/{shopify-3KNP5U4O.js → shopify-4JA7QEOL.js} +2 -2
  46. package/dist/{studies-6NJN4GE4.js → studies-FXX4XW4A.js} +7 -7
  47. package/dist/{study-writes-UTBR34XR.js → study-writes-H6RDMXF3.js} +4 -4
  48. package/dist/{targeting-RF7GL7TJ.js → targeting-URLZVNS2.js} +4 -4
  49. package/dist/{terms-2PXN3ZKO.js → terms-VIAM2BO5.js} +2 -2
  50. package/dist/{themes-SHDZQODW.js → themes-CIXQPTFX.js} +3 -3
  51. package/dist/{write-commands-K2XXF7JP.js → write-commands-AANGPJ5F.js} +8 -8
  52. package/package.json +1 -1
  53. package/dist/account-assets-UQ5RS66K.js.map +0 -1
  54. package/dist/chunk-Y2JZX6JB.js.map +0 -1
  55. /package/dist/{account-Z2N545F3.js.map → account-JXUUHDEB.js.map} +0 -0
  56. /package/dist/{account-level-QHTIN4DY.js.map → account-level-46AIGZXA.js.map} +0 -0
  57. /package/dist/{account-reads-QDVBCQ7D.js.map → account-reads-5VPDX6NF.js.map} +0 -0
  58. /package/dist/{accounts-DAWCHDAC.js.map → accounts-D6FP4DC2.js.map} +0 -0
  59. /package/dist/{activities-UIBWZUGE.js.map → activities-NYWRMNCH.js.map} +0 -0
  60. /package/dist/{ads-6OUSUM5Y.js.map → ads-ALI6QLW2.js.map} +0 -0
  61. /package/dist/{ads-I2KFV42R.js.map → ads-DRMVHMJH.js.map} +0 -0
  62. /package/dist/{adsets-GYVCPG4K.js.map → adsets-XE5S6J5S.js.map} +0 -0
  63. /package/dist/{asset-writes-F5E3TWLS.js.map → asset-writes-5TAUIKSN.js.map} +0 -0
  64. /package/dist/{audience-writes-LVPTXKT7.js.map → audience-writes-P63WFDXJ.js.map} +0 -0
  65. /package/dist/{audiences-AVQ2VWHF.js.map → audiences-U6MQRRTP.js.map} +0 -0
  66. /package/dist/{businesses-XH7A32WX.js.map → businesses-RRYQYTG4.js.map} +0 -0
  67. /package/dist/{campaigns-7ZUR46T2.js.map → campaigns-DDUXFR77.js.map} +0 -0
  68. /package/dist/{catalogs-L6SLRMPR.js.map → catalogs-A6CHXN5B.js.map} +0 -0
  69. /package/dist/{chunk-LC75VG6J.js.map → chunk-2UQJ5BDJ.js.map} +0 -0
  70. /package/dist/{chunk-AI3ICPS6.js.map → chunk-3XG6I4K6.js.map} +0 -0
  71. /package/dist/{chunk-7RERKOMK.js.map → chunk-IQ3MYXCJ.js.map} +0 -0
  72. /package/dist/{chunk-6HZF5XQB.js.map → chunk-JHEWSMOS.js.map} +0 -0
  73. /package/dist/{chunk-EAIFDVBK.js.map → chunk-NAYO267Q.js.map} +0 -0
  74. /package/dist/{conversion-upload-command-OG3UCC5N.js.map → conversion-upload-command-TYGIB7XJ.js.map} +0 -0
  75. /package/dist/{copy-writes-USCBG57G.js.map → copy-writes-GUOL2QUD.js.map} +0 -0
  76. /package/dist/{creatives-52E7O3RB.js.map → creatives-BGYARLCC.js.map} +0 -0
  77. /package/dist/{custom-conversions-L3CMZCTZ.js.map → custom-conversions-SUXA7KSN.js.map} +0 -0
  78. /package/dist/{draft-7VJRJ2XH.js.map → draft-2EO63W4K.js.map} +0 -0
  79. /package/dist/{draft-RF6LORXE.js.map → draft-PJT5TSFQ.js.map} +0 -0
  80. /package/dist/{forecast-3G6GGAKZ.js.map → forecast-IECMUBL2.js.map} +0 -0
  81. /package/dist/{google-4BN4ERUJ.js.map → google-CWHRLDBL.js.map} +0 -0
  82. /package/dist/{insights-HOZ5H4A3.js.map → insights-VW475N6G.js.map} +0 -0
  83. /package/dist/{instant-experiences-ARUYYGVW.js.map → instant-experiences-JJJKZAQQ.js.map} +0 -0
  84. /package/dist/{leads-KCFSCWZY.js.map → leads-2BXRQDT5.js.map} +0 -0
  85. /package/dist/{media-SXILZKYE.js.map → media-KXBWT2YJ.js.map} +0 -0
  86. /package/dist/{meta-ZQLFWVAR.js.map → meta-5ODNL2LA.js.map} +0 -0
  87. /package/dist/{page-photos-22Q6ZH2W.js.map → page-photos-CJIFQDW5.js.map} +0 -0
  88. /package/dist/{pages-DYWRNXQP.js.map → pages-NJN2E5HU.js.map} +0 -0
  89. /package/dist/{pixels-R3ISRBUJ.js.map → pixels-E7UYF4KE.js.map} +0 -0
  90. /package/dist/{preview-UOMZ5TUK.js.map → preview-QGLUDJ3A.js.map} +0 -0
  91. /package/dist/{rule-writes-OGVSR5US.js.map → rule-writes-AHDYOYVO.js.map} +0 -0
  92. /package/dist/{rules-O2TI4YBB.js.map → rules-5HIC2F34.js.map} +0 -0
  93. /package/dist/{shared-DADIQPBQ.js.map → shared-S7ZPZXF5.js.map} +0 -0
  94. /package/dist/{shopify-3KNP5U4O.js.map → shopify-4JA7QEOL.js.map} +0 -0
  95. /package/dist/{studies-6NJN4GE4.js.map → studies-FXX4XW4A.js.map} +0 -0
  96. /package/dist/{study-writes-UTBR34XR.js.map → study-writes-H6RDMXF3.js.map} +0 -0
  97. /package/dist/{targeting-RF7GL7TJ.js.map → targeting-URLZVNS2.js.map} +0 -0
  98. /package/dist/{terms-2PXN3ZKO.js.map → terms-VIAM2BO5.js.map} +0 -0
  99. /package/dist/{themes-SHDZQODW.js.map → themes-CIXQPTFX.js.map} +0 -0
  100. /package/dist/{write-commands-K2XXF7JP.js.map → write-commands-AANGPJ5F.js.map} +0 -0
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  handleMetaError,
3
3
  resolveAccountIdArg
4
- } from "./chunk-6HZF5XQB.js";
5
- import "./chunk-Y2JZX6JB.js";
4
+ } from "./chunk-JHEWSMOS.js";
5
+ import "./chunk-QALAJNBG.js";
6
6
  import {
7
7
  writeJsonEnvelope
8
8
  } from "./chunk-X7DMNLDD.js";
@@ -136,4 +136,4 @@ export {
136
136
  accountDeliveryHints,
137
137
  accountPermissionHints
138
138
  };
139
- //# sourceMappingURL=account-Z2N545F3.js.map
139
+ //# sourceMappingURL=account-JXUUHDEB.js.map
@@ -2,8 +2,8 @@ import {
2
2
  csvOrJson,
3
3
  handleMetaError,
4
4
  resolveAccountIdArg
5
- } from "./chunk-6HZF5XQB.js";
6
- import "./chunk-Y2JZX6JB.js";
5
+ } from "./chunk-JHEWSMOS.js";
6
+ import "./chunk-QALAJNBG.js";
7
7
  import {
8
8
  writeAdsOutput,
9
9
  writeJsonEnvelope
@@ -147,7 +147,7 @@ var dsaRecommendationsCommand = defineCommand({
147
147
  ok: true,
148
148
  data: names,
149
149
  hints: [
150
- "An ad set reaching the EU needs dsa_beneficiary and dsa_payor. Baker fills both with the business name when they are missing; pass one of these instead when the user names someone else (an agency paying for a client)."
150
+ "An ad set reaching the EU needs dsa_beneficiary and dsa_payor. When they are missing Baker fills both from the ad account's saved EU advertiser and payer, else the first of these, else the business name; pass one of these instead when the user names someone else (an agency paying for a client)."
151
151
  ]
152
152
  });
153
153
  } catch (err) {
@@ -221,11 +221,11 @@ var labelsCommand = defineCommand({
221
221
  },
222
222
  subCommands: {
223
223
  list: () => labelsListCommand,
224
- create: () => import("./asset-writes-F5E3TWLS.js").then((m) => m.labelsCreateCommand),
225
- rename: () => import("./asset-writes-F5E3TWLS.js").then((m) => m.labelsRenameCommand),
226
- delete: () => import("./asset-writes-F5E3TWLS.js").then((m) => m.labelsDeleteCommand),
227
- attach: () => import("./asset-writes-F5E3TWLS.js").then((m) => m.labelsAttachCommand),
228
- detach: () => import("./asset-writes-F5E3TWLS.js").then((m) => m.labelsDetachCommand)
224
+ create: () => import("./asset-writes-5TAUIKSN.js").then((m) => m.labelsCreateCommand),
225
+ rename: () => import("./asset-writes-5TAUIKSN.js").then((m) => m.labelsRenameCommand),
226
+ delete: () => import("./asset-writes-5TAUIKSN.js").then((m) => m.labelsDeleteCommand),
227
+ attach: () => import("./asset-writes-5TAUIKSN.js").then((m) => m.labelsAttachCommand),
228
+ detach: () => import("./asset-writes-5TAUIKSN.js").then((m) => m.labelsDetachCommand)
229
229
  },
230
230
  args: labelsListArgs,
231
231
  default: "list"
@@ -287,4 +287,4 @@ export {
287
287
  instagramIdentityHints,
288
288
  labelsCommand
289
289
  };
290
- //# sourceMappingURL=account-assets-UQ5RS66K.js.map
290
+ //# sourceMappingURL=account-assets-3SIBPJXJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/ads/meta/account-assets.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport { NO_CACHE_ARG } from \"../../../cache-flag.ts\";\nimport { apiGet } from \"../../../client.ts\";\nimport { registerSchema } from \"../../../schemas.ts\";\nimport { writeAdsOutput, writeJsonEnvelope } from \"../output.ts\";\nimport { csvOrJson, handleMetaError, resolveAccountIdArg } from \"./shared.ts\";\n\n/**\n * The account's identities and libraries an ad is built from — reads that used\n * to exist only as backend routes. They were left off the CLI as \"rarely\n * needed in isolation\", but each answers a question staging otherwise answers\n * with a refusal: which Instagram account an ad can run as, which apps it can\n * promote, whom an EU ad names, what an image hash or label id is, which\n * product sets a catalog ad can use, what an A/B test found.\n */\n\ntype Row = Record<string, unknown>;\ntype Args = Record<string, unknown>;\n\nfunction emit(rows: Row[], args: Args, hints: string[]): void {\n const fmt = csvOrJson(args);\n if (fmt !== \"json\") {\n writeAdsOutput(rows, fmt, undefined, hints);\n return;\n }\n writeJsonEnvelope(hints.length > 0 ? { ok: true, data: rows, hints } : { ok: true, data: rows });\n}\n\nasync function read<T>(path: string, params: Record<string, string>, args: Args): Promise<T> {\n if (args[\"no-cache\"]) params[\"skip-cache\"] = \"true\";\n return await apiGet<T>(path, params);\n}\n\nconst outputArg = { type: \"string\", description: \"json|csv|jsonl|md\", default: \"json\" } as const;\nconst accountArg = { type: \"string\", description: \"Meta ad account ID (act_...)\" } as const;\nconst schemaAccount = { type: \"string\", description: \"Meta ad account ID (act_123)\", required: false };\nconst schemaNoCache = { type: \"boolean\", description: \"Bypass the cache\", required: false };\nconst schemaOutput = { type: \"string\", description: \"json|csv|jsonl|md\", required: false, default: \"json\" };\n\n// --- Instagram identities ---\n\nexport interface MetaInstagramIdentity {\n id: string;\n username?: string;\n sources: Array<\"ad_account\" | \"connected\" | \"page\" | \"page_backed\">;\n pageId?: string;\n pageName?: string;\n}\n\nexport function instagramIdentityHints(rows: readonly MetaInstagramIdentity[]): string[] {\n if (rows.length === 0) {\n return [\n \"No Instagram account is linked to this ad account or its Pages. A creative without --instagram-user cannot run in Instagram feeds, Stories or Reels — the account owner links one in Meta Business settings (Accounts → Instagram accounts) and assigns it to the ad account.\",\n ];\n }\n const listed = rows.filter((row) => row.sources.includes(\"ad_account\") || row.sources.includes(\"connected\"));\n const hints = [\"Pass the id as `creatives create --instagram-user <id>`.\"];\n if (listed.length > 0 && listed.length < rows.length) {\n hints.push(\n `Use one listed on the ad account (${listed.map((row) => row.username ?? row.id).join(\", \")}): when the account lists any, staging refuses an identity it does not list.`,\n );\n } else if (listed.length === 0) {\n hints.push(\n \"Only Page identities are listed (page = the Page's linked Instagram account, page_backed = an Instagram presence Meta made for a Page with none). Meta accepts either as --instagram-user; a page_backed one shows the Page's name and picture on Instagram.\",\n );\n }\n if (new Set(rows.map((row) => row.pageId).filter(Boolean)).size > 1) {\n hints.push(\"Several Pages are involved — use the identity of the Page the creative runs from (--page).\");\n }\n return hints;\n}\n\nregisterSchema({\n command: \"ads.meta.instagram-accounts\",\n description:\n \"The Instagram accounts an ad on this account can run as — the id `creatives create --instagram-user` takes. Lists accounts assigned or connected to the ad account and each promotable Page's linked or page-backed one.\",\n args: {\n \"account-id\": schemaAccount,\n \"no-cache\": schemaNoCache,\n output: { type: \"string\", description: \"json|csv\", required: false, default: \"json\" },\n },\n});\n\nexport const instagramAccountsCommand = defineCommand({\n meta: {\n name: \"instagram-accounts\",\n description:\n \"Instagram identities an ad can run as (the --instagram-user id). Start here before creatives create: baker ads meta instagram-accounts --account-id act_123\",\n },\n args: { \"account-id\": accountArg, \"no-cache\": NO_CACHE_ARG, output: outputArg },\n run: async ({ args }) => {\n const accountId = resolveAccountIdArg(args);\n try {\n const rows = await read<MetaInstagramIdentity[]>(\n \"/api/ads/meta/instagram-accounts\",\n { \"account-id\": accountId },\n args,\n );\n emit(\n rows.map((row) => ({ ...row, sources: row.sources.join(\",\") })),\n args,\n instagramIdentityHints(rows),\n );\n } catch (err) {\n handleMetaError(err);\n }\n },\n});\n\n// --- Apps ---\n\nregisterSchema({\n command: \"ads.meta.apps\",\n description:\n \"The apps this ad account can promote (app installs / app engagement), with their store URLs — the application_id and object_store_url an app ad set's promoted_object takes.\",\n args: { \"account-id\": schemaAccount, \"no-cache\": schemaNoCache, output: schemaOutput },\n});\n\nexport const appsCommand = defineCommand({\n meta: {\n name: \"apps\",\n description:\n \"Apps the ad account can promote, for an app ad set's promoted_object. Example: baker ads meta apps --account-id act_123\",\n },\n args: { \"account-id\": accountArg, \"no-cache\": NO_CACHE_ARG, output: outputArg },\n run: async ({ args }) => {\n const accountId = resolveAccountIdArg(args);\n try {\n const rows = await read<Array<{ id: string; name?: string; object_store_urls?: Record<string, string> }>>(\n \"/api/ads/meta/apps\",\n { \"account-id\": accountId },\n args,\n );\n emit(\n rows.map((row) => ({ ...row })),\n args,\n rows.length > 0\n ? [\n 'An app ad set promotes one: promoted_object {\"application_id\":\"<id>\",\"object_store_url\":\"<store url>\"}. Use a real store URL (itunes / google_play); fb_canvas and instant_game are not app stores.',\n ]\n : [\n \"No promotable apps. The app has to be registered in Meta for Developers and its owner has to add this ad account under the app's Advanced settings → Advertising accounts.\",\n ],\n );\n } catch (err) {\n handleMetaError(err);\n }\n },\n});\n\n// --- DSA ---\n\nregisterSchema({\n command: \"ads.meta.dsa-recommendations\",\n description:\n \"Names Meta suggests for the EU Digital Services Act disclosure (who benefits from and who pays for an ad) on this account.\",\n args: { \"account-id\": schemaAccount, \"no-cache\": schemaNoCache },\n});\n\nexport const dsaRecommendationsCommand = defineCommand({\n meta: {\n name: \"dsa-recommendations\",\n description:\n \"Meta's suggested DSA beneficiary/payor names for EU ad sets. Example: baker ads meta dsa-recommendations --account-id act_123\",\n },\n args: { \"account-id\": accountArg, \"no-cache\": NO_CACHE_ARG },\n run: async ({ args }) => {\n const accountId = resolveAccountIdArg(args);\n try {\n const names = await read<string[]>(\"/api/ads/meta/dsa-recommendations\", { \"account-id\": accountId }, args);\n writeJsonEnvelope({\n ok: true,\n data: names,\n hints: [\n \"An ad set reaching the EU needs dsa_beneficiary and dsa_payor. When they are missing Baker fills both from the ad account's saved EU advertiser and payer, else the first of these, else the business name; pass one of these instead when the user names someone else (an agency paying for a client).\",\n ],\n });\n } catch (err) {\n handleMetaError(err);\n }\n },\n});\n\n// --- Images and labels ---\n\nfunction compactImage(row: Row): Row {\n return {\n hash: row.hash,\n name: row.name,\n width: row.width,\n height: row.height,\n status: row.status,\n created_time: row.created_time,\n };\n}\n\nregisterSchema({\n command: \"ads.meta.images\",\n description:\n \"The ad account's image library — each image_hash a creative can reuse without uploading again. --hash looks one up.\",\n args: {\n \"account-id\": schemaAccount,\n hash: { type: \"string\", description: \"One image hash\", required: false },\n limit: { type: \"string\", description: \"Max rows (default 500)\", required: false },\n full: { type: \"boolean\", description: \"URLs, permalink and which creatives use it\", required: false },\n \"no-cache\": schemaNoCache,\n output: schemaOutput,\n },\n});\n\nexport const imagesCommand = defineCommand({\n meta: {\n name: \"images\",\n description:\n \"Image library of the ad account (image hashes). Example: baker ads meta images --account-id act_123 --limit 20; --hash <hash> for one\",\n },\n args: {\n \"account-id\": accountArg,\n hash: { type: \"string\", description: \"Look up one image hash\" },\n limit: { type: \"string\", description: \"Max rows (default 500)\" },\n full: { type: \"boolean\", description: \"Every field: url, permalink_url, creatives\" },\n \"no-cache\": NO_CACHE_ARG,\n output: outputArg,\n },\n run: async ({ args }) => {\n const accountId = resolveAccountIdArg(args);\n const params: Record<string, string> = { \"account-id\": accountId };\n if (args.hash) params.hash = args.hash as string;\n if (args.limit) params.limit = args.limit as string;\n try {\n const rows = await read<Row[]>(\"/api/ads/meta/images\", params, args);\n emit(args.full ? rows : rows.map(compactImage), args, [\n \"A creative reuses one with its hash (the `image_hash` of a creative file). To push a Baker-library image, stage `media upload` instead.\",\n ]);\n } catch (err) {\n handleMetaError(err);\n }\n },\n});\n\nregisterSchema({\n command: \"ads.meta.labels\",\n description: \"Ad labels defined on the account (Meta's tags for campaigns, ad sets, ads and creatives).\",\n args: { \"account-id\": schemaAccount, \"no-cache\": schemaNoCache, output: schemaOutput },\n});\n\nconst labelsListArgs = { \"account-id\": accountArg, \"no-cache\": NO_CACHE_ARG, output: outputArg };\n\nexport const labelsCommand = defineCommand({\n meta: {\n name: \"labels\",\n description: `Ad labels on the account (list), or stage label writes: create, rename, delete, attach (file campaigns/ad sets/ads/creatives under one), detach.\n baker ads meta labels --account-id act_123\n baker ads meta labels create --name \"Q4 launch\"\n baker ads meta labels attach <labelId|meta_temp_…> --campaigns 6123,6124 --ads 6125`,\n },\n subCommands: {\n list: () => labelsListCommand,\n create: () => import(\"./asset-writes.ts\").then((m) => m.labelsCreateCommand),\n rename: () => import(\"./asset-writes.ts\").then((m) => m.labelsRenameCommand),\n delete: () => import(\"./asset-writes.ts\").then((m) => m.labelsDeleteCommand),\n attach: () => import(\"./asset-writes.ts\").then((m) => m.labelsAttachCommand),\n detach: () => import(\"./asset-writes.ts\").then((m) => m.labelsDetachCommand),\n },\n args: labelsListArgs,\n default: \"list\",\n});\n\nconst labelsListCommand = defineCommand({\n meta: {\n name: \"list\",\n description: \"Ad labels on the account. Runs by default. Example: baker ads meta labels --account-id act_123\",\n },\n args: labelsListArgs,\n run: async ({ args }) => {\n const accountId = resolveAccountIdArg(args);\n try {\n const rows = await read<Row[]>(\"/api/ads/meta/labels\", { \"account-id\": accountId }, args);\n emit(rows, args, rows.length === 0 ? [\"This account has no ad labels.\"] : []);\n } catch (err) {\n handleMetaError(err);\n }\n },\n});\n\n// --- High-demand periods ---\n\nregisterSchema({\n command: \"ads.meta.high-demand-periods\",\n description: \"The budget boosts (high-demand periods) set on a campaign or ad set: when each runs and by how much.\",\n args: {\n \"campaign-id\": { type: \"string\", description: \"Campaign or ad set ID\", required: true },\n \"no-cache\": schemaNoCache,\n output: schemaOutput,\n },\n});\n\nexport const highDemandPeriodsCommand = defineCommand({\n meta: {\n name: \"high-demand-periods\",\n description:\n \"Budget boosts on a campaign or ad set. Example: baker ads meta high-demand-periods --campaign-id 6123 (stage new ones with --budget-boost on campaigns or adsets create|update)\",\n },\n args: {\n \"campaign-id\": { type: \"string\", description: \"Campaign (or ad set) ID\", required: true },\n \"no-cache\": NO_CACHE_ARG,\n output: outputArg,\n },\n run: async ({ args }) => {\n try {\n const rows = await read<Row[]>(\n \"/api/ads/meta/high-demand-periods\",\n { \"campaign-id\": args[\"campaign-id\"] as string },\n args,\n );\n emit(rows, args, rows.length === 0 ? [\"No budget boosts on this campaign.\"] : []);\n } catch (err) {\n handleMetaError(err);\n }\n },\n});\n"],"mappings":"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","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  dayPartingFromFlags
3
- } from "./chunk-AI3ICPS6.js";
3
+ } from "./chunk-3XG6I4K6.js";
4
4
  import {
5
5
  bareAccountId,
6
6
  failWriteValidation,
@@ -8,12 +8,12 @@ import {
8
8
  numberFlag,
9
9
  requireTarget,
10
10
  stageOp
11
- } from "./chunk-LC75VG6J.js";
11
+ } from "./chunk-2UQJ5BDJ.js";
12
12
  import "./chunk-GC5P4KWY.js";
13
13
  import "./chunk-GDFJOCDO.js";
14
14
  import {
15
15
  handleMetaError
16
- } from "./chunk-6HZF5XQB.js";
16
+ } from "./chunk-JHEWSMOS.js";
17
17
  import {
18
18
  repeatedValues
19
19
  } from "./chunk-ERSX3MKH.js";
@@ -21,7 +21,7 @@ import "./chunk-QBFJGCWA.js";
21
21
  import "./chunk-4NZ47VXO.js";
22
22
  import "./chunk-D5FY4FAK.js";
23
23
  import "./chunk-JRQI6EVP.js";
24
- import "./chunk-Y2JZX6JB.js";
24
+ import "./chunk-QALAJNBG.js";
25
25
  import {
26
26
  writeJsonEnvelope
27
27
  } from "./chunk-X7DMNLDD.js";
@@ -608,4 +608,4 @@ export {
608
608
  pagePostsCommand,
609
609
  reachFrequencyCommand
610
610
  };
611
- //# sourceMappingURL=account-level-QHTIN4DY.js.map
611
+ //# sourceMappingURL=account-level-46AIGZXA.js.map
@@ -5,13 +5,13 @@ import {
5
5
  failWriteValidation,
6
6
  listFlag,
7
7
  requireCustomerId
8
- } from "./chunk-7RERKOMK.js";
8
+ } from "./chunk-IQ3MYXCJ.js";
9
9
  import "./chunk-ERSX3MKH.js";
10
10
  import "./chunk-QBFJGCWA.js";
11
11
  import "./chunk-4NZ47VXO.js";
12
12
  import "./chunk-D5FY4FAK.js";
13
13
  import "./chunk-JRQI6EVP.js";
14
- import "./chunk-Y2JZX6JB.js";
14
+ import "./chunk-QALAJNBG.js";
15
15
  import "./chunk-44ZRCSR7.js";
16
16
  import {
17
17
  getManagerIdForCustomer,
@@ -216,4 +216,4 @@ export {
216
216
  invoicesCommand,
217
217
  previewsCommand
218
218
  };
219
- //# sourceMappingURL=account-reads-QDVBCQ7D.js.map
219
+ //# sourceMappingURL=account-reads-5VPDX6NF.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  csvOrJson,
3
3
  handleMetaError
4
- } from "./chunk-6HZF5XQB.js";
5
- import "./chunk-Y2JZX6JB.js";
4
+ } from "./chunk-JHEWSMOS.js";
5
+ import "./chunk-QALAJNBG.js";
6
6
  import {
7
7
  connectedResourceHints
8
8
  } from "./chunk-P4NSJS54.js";
@@ -73,4 +73,4 @@ Examples:
73
73
  export {
74
74
  accountsCommand
75
75
  };
76
- //# sourceMappingURL=accounts-DAWCHDAC.js.map
76
+ //# sourceMappingURL=accounts-D6FP4DC2.js.map
@@ -8,8 +8,8 @@ import {
8
8
  csvOrJson,
9
9
  handleMetaError,
10
10
  resolveAccountIdArg
11
- } from "./chunk-6HZF5XQB.js";
12
- import "./chunk-Y2JZX6JB.js";
11
+ } from "./chunk-JHEWSMOS.js";
12
+ import "./chunk-QALAJNBG.js";
13
13
  import "./chunk-X7DMNLDD.js";
14
14
  import {
15
15
  NO_CACHE_ARG
@@ -72,4 +72,4 @@ Examples:
72
72
  export {
73
73
  activitiesCommand
74
74
  };
75
- //# sourceMappingURL=activities-UIBWZUGE.js.map
75
+ //# sourceMappingURL=activities-NYWRMNCH.js.map
@@ -33,16 +33,16 @@ Examples:
33
33
  Full guides: __tooling__/docs/tools/baker/ads-<platform>.md (google|meta|linkedin|x|chatgpt|performance|terms)`
34
34
  },
35
35
  subCommands: {
36
- google: () => import("./google-4BN4ERUJ.js").then((m) => m.googleCommand),
37
- meta: () => import("./meta-ZQLFWVAR.js").then((m) => m.metaCommand),
36
+ google: () => import("./google-CWHRLDBL.js").then((m) => m.googleCommand),
37
+ meta: () => import("./meta-5ODNL2LA.js").then((m) => m.metaCommand),
38
38
  linkedin: () => import("./linkedin-FTRTC4FJ.js").then((m) => m.linkedinCommand),
39
39
  x: () => import("./x-AIP6SGS3.js").then((m) => m.xCommand),
40
40
  chatgpt: () => import("./chatgpt-6PP4HANG.js").then((m) => m.chatgptCommand),
41
41
  performance: () => import("./performance-S5PPW6WN.js").then((m) => m.performanceCommand),
42
- terms: () => import("./terms-2PXN3ZKO.js").then((m) => m.termsCommand)
42
+ terms: () => import("./terms-VIAM2BO5.js").then((m) => m.termsCommand)
43
43
  }
44
44
  });
45
45
  export {
46
46
  adsCommand
47
47
  };
48
- //# sourceMappingURL=ads-6OUSUM5Y.js.map
48
+ //# sourceMappingURL=ads-ALI6QLW2.js.map
@@ -11,8 +11,8 @@ import {
11
11
  resolveAccountIdArg,
12
12
  resolveEffectiveStatus,
13
13
  statusFilterHints
14
- } from "./chunk-6HZF5XQB.js";
15
- import "./chunk-Y2JZX6JB.js";
14
+ } from "./chunk-JHEWSMOS.js";
15
+ import "./chunk-QALAJNBG.js";
16
16
  import "./chunk-X7DMNLDD.js";
17
17
  import {
18
18
  NO_CACHE_ARG
@@ -92,15 +92,15 @@ Examples:
92
92
  },
93
93
  subCommands: {
94
94
  list: listCommand,
95
- create: () => import("./write-commands-K2XXF7JP.js").then((m) => m.adsCreateCommand),
96
- update: () => import("./write-commands-K2XXF7JP.js").then((m) => m.adsUpdateCommand),
97
- pause: () => import("./write-commands-K2XXF7JP.js").then((m) => m.adsPauseCommand),
98
- resume: () => import("./write-commands-K2XXF7JP.js").then((m) => m.adsResumeCommand),
99
- archive: () => import("./write-commands-K2XXF7JP.js").then((m) => m.adsArchiveCommand),
100
- delete: () => import("./write-commands-K2XXF7JP.js").then((m) => m.adsDeleteCommand),
101
- duplicate: () => import("./write-commands-K2XXF7JP.js").then((m) => m.adsDuplicateCommand),
102
- copy: () => import("./copy-writes-USCBG57G.js").then((m) => m.adsCopyCommand),
103
- retag: () => import("./write-commands-K2XXF7JP.js").then((m) => m.adsRetagCommand)
95
+ create: () => import("./write-commands-AANGPJ5F.js").then((m) => m.adsCreateCommand),
96
+ update: () => import("./write-commands-AANGPJ5F.js").then((m) => m.adsUpdateCommand),
97
+ pause: () => import("./write-commands-AANGPJ5F.js").then((m) => m.adsPauseCommand),
98
+ resume: () => import("./write-commands-AANGPJ5F.js").then((m) => m.adsResumeCommand),
99
+ archive: () => import("./write-commands-AANGPJ5F.js").then((m) => m.adsArchiveCommand),
100
+ delete: () => import("./write-commands-AANGPJ5F.js").then((m) => m.adsDeleteCommand),
101
+ duplicate: () => import("./write-commands-AANGPJ5F.js").then((m) => m.adsDuplicateCommand),
102
+ copy: () => import("./copy-writes-GUOL2QUD.js").then((m) => m.adsCopyCommand),
103
+ retag: () => import("./write-commands-AANGPJ5F.js").then((m) => m.adsRetagCommand)
104
104
  },
105
105
  // `args` stays even though the parent has no `run`: citty scans rawArgs for the
106
106
  // subcommand name using THIS command's arg defs, so without them `--account-id act_1`
@@ -112,4 +112,4 @@ Examples:
112
112
  export {
113
113
  adsListCommand
114
114
  };
115
- //# sourceMappingURL=ads-I2KFV42R.js.map
115
+ //# sourceMappingURL=ads-DRMVHMJH.js.map
@@ -19,11 +19,11 @@ import {
19
19
  resolveAccountIdArg,
20
20
  resolveEffectiveStatus,
21
21
  statusFilterHints
22
- } from "./chunk-6HZF5XQB.js";
22
+ } from "./chunk-JHEWSMOS.js";
23
23
  import {
24
24
  rememberedJev
25
25
  } from "./chunk-JRQI6EVP.js";
26
- import "./chunk-Y2JZX6JB.js";
26
+ import "./chunk-QALAJNBG.js";
27
27
  import {
28
28
  writeAdsOutput
29
29
  } from "./chunk-X7DMNLDD.js";
@@ -160,14 +160,14 @@ Examples:
160
160
  },
161
161
  subCommands: {
162
162
  list: listCommand,
163
- create: () => import("./write-commands-K2XXF7JP.js").then((m) => m.adSetsCreateCommand),
164
- update: () => import("./write-commands-K2XXF7JP.js").then((m) => m.adSetsUpdateCommand),
165
- pause: () => import("./write-commands-K2XXF7JP.js").then((m) => m.adSetsPauseCommand),
166
- resume: () => import("./write-commands-K2XXF7JP.js").then((m) => m.adSetsResumeCommand),
167
- archive: () => import("./write-commands-K2XXF7JP.js").then((m) => m.adSetsArchiveCommand),
168
- delete: () => import("./write-commands-K2XXF7JP.js").then((m) => m.adSetsDeleteCommand),
169
- duplicate: () => import("./write-commands-K2XXF7JP.js").then((m) => m.adSetsDuplicateCommand),
170
- copy: () => import("./copy-writes-USCBG57G.js").then((m) => m.adSetsCopyCommand)
163
+ create: () => import("./write-commands-AANGPJ5F.js").then((m) => m.adSetsCreateCommand),
164
+ update: () => import("./write-commands-AANGPJ5F.js").then((m) => m.adSetsUpdateCommand),
165
+ pause: () => import("./write-commands-AANGPJ5F.js").then((m) => m.adSetsPauseCommand),
166
+ resume: () => import("./write-commands-AANGPJ5F.js").then((m) => m.adSetsResumeCommand),
167
+ archive: () => import("./write-commands-AANGPJ5F.js").then((m) => m.adSetsArchiveCommand),
168
+ delete: () => import("./write-commands-AANGPJ5F.js").then((m) => m.adSetsDeleteCommand),
169
+ duplicate: () => import("./write-commands-AANGPJ5F.js").then((m) => m.adSetsDuplicateCommand),
170
+ copy: () => import("./copy-writes-GUOL2QUD.js").then((m) => m.adSetsCopyCommand)
171
171
  },
172
172
  // `args` stays even though the parent has no `run`: citty scans rawArgs for the
173
173
  // subcommand name using THIS command's arg defs, so without them `--account-id act_1`
@@ -179,4 +179,4 @@ Examples:
179
179
  export {
180
180
  adsetsCommand
181
181
  };
182
- //# sourceMappingURL=adsets-GYVCPG4K.js.map
182
+ //# sourceMappingURL=adsets-XE5S6J5S.js.map
@@ -9,17 +9,17 @@ import {
9
9
  labelsDetachCommand,
10
10
  labelsRenameCommand,
11
11
  mediaDeleteCommand
12
- } from "./chunk-EAIFDVBK.js";
13
- import "./chunk-LC75VG6J.js";
12
+ } from "./chunk-NAYO267Q.js";
13
+ import "./chunk-2UQJ5BDJ.js";
14
14
  import "./chunk-GC5P4KWY.js";
15
15
  import "./chunk-GDFJOCDO.js";
16
- import "./chunk-6HZF5XQB.js";
16
+ import "./chunk-JHEWSMOS.js";
17
17
  import "./chunk-ERSX3MKH.js";
18
18
  import "./chunk-QBFJGCWA.js";
19
19
  import "./chunk-4NZ47VXO.js";
20
20
  import "./chunk-D5FY4FAK.js";
21
21
  import "./chunk-JRQI6EVP.js";
22
- import "./chunk-Y2JZX6JB.js";
22
+ import "./chunk-QALAJNBG.js";
23
23
  import "./chunk-X7DMNLDD.js";
24
24
  import "./chunk-K6HH2KF3.js";
25
25
  import "./chunk-M7MLFR2S.js";
@@ -47,4 +47,4 @@ export {
47
47
  labelsRenameCommand,
48
48
  mediaDeleteCommand
49
49
  };
50
- //# sourceMappingURL=asset-writes-F5E3TWLS.js.map
50
+ //# sourceMappingURL=asset-writes-5TAUIKSN.js.map
@@ -10,7 +10,7 @@ import {
10
10
  repeatedListFlag,
11
11
  requireTarget,
12
12
  stageOp
13
- } from "./chunk-LC75VG6J.js";
13
+ } from "./chunk-2UQJ5BDJ.js";
14
14
  import {
15
15
  CUSTOMER_LIST_BATCH_ROWS,
16
16
  CUSTOMER_LIST_MAX_BATCHES,
@@ -21,13 +21,13 @@ import {
21
21
  csvOrJson,
22
22
  handleMetaError,
23
23
  resolveAccountIdArg
24
- } from "./chunk-6HZF5XQB.js";
24
+ } from "./chunk-JHEWSMOS.js";
25
25
  import "./chunk-ERSX3MKH.js";
26
26
  import "./chunk-QBFJGCWA.js";
27
27
  import "./chunk-4NZ47VXO.js";
28
28
  import "./chunk-D5FY4FAK.js";
29
29
  import "./chunk-JRQI6EVP.js";
30
- import "./chunk-Y2JZX6JB.js";
30
+ import "./chunk-QALAJNBG.js";
31
31
  import {
32
32
  writeAdsOutput,
33
33
  writeJsonEnvelope
@@ -324,4 +324,4 @@ export {
324
324
  savedAudiencesCommand,
325
325
  targetingFromSavedAudience
326
326
  };
327
- //# sourceMappingURL=audience-writes-LVPTXKT7.js.map
327
+ //# sourceMappingURL=audience-writes-P63WFDXJ.js.map
@@ -2,8 +2,8 @@ import {
2
2
  csvOrJson,
3
3
  handleMetaError,
4
4
  resolveAccountIdArg
5
- } from "./chunk-6HZF5XQB.js";
6
- import "./chunk-Y2JZX6JB.js";
5
+ } from "./chunk-JHEWSMOS.js";
6
+ import "./chunk-QALAJNBG.js";
7
7
  import {
8
8
  writeAdsJson,
9
9
  writeAdsOutput
@@ -67,11 +67,11 @@ Examples:
67
67
  },
68
68
  subCommands: {
69
69
  list: listCommand,
70
- create: () => import("./write-commands-K2XXF7JP.js").then((m) => m.audiencesCreateCommand),
71
- update: () => import("./write-commands-K2XXF7JP.js").then((m) => m.audiencesUpdateCommand),
72
- delete: () => import("./audience-writes-LVPTXKT7.js").then((m) => m.audiencesDeleteCommand),
73
- members: () => import("./audience-writes-LVPTXKT7.js").then((m) => m.audiencesMembersCommand),
74
- saved: () => import("./audience-writes-LVPTXKT7.js").then((m) => m.savedAudiencesCommand)
70
+ create: () => import("./write-commands-AANGPJ5F.js").then((m) => m.audiencesCreateCommand),
71
+ update: () => import("./write-commands-AANGPJ5F.js").then((m) => m.audiencesUpdateCommand),
72
+ delete: () => import("./audience-writes-P63WFDXJ.js").then((m) => m.audiencesDeleteCommand),
73
+ members: () => import("./audience-writes-P63WFDXJ.js").then((m) => m.audiencesMembersCommand),
74
+ saved: () => import("./audience-writes-P63WFDXJ.js").then((m) => m.savedAudiencesCommand)
75
75
  },
76
76
  // `args` stays even though the parent has no `run`: citty scans rawArgs for the
77
77
  // subcommand name using THIS command's arg defs, so without them `--account-id act_1`
@@ -83,4 +83,4 @@ Examples:
83
83
  export {
84
84
  audiencesCommand
85
85
  };
86
- //# sourceMappingURL=audiences-AVQ2VWHF.js.map
86
+ //# sourceMappingURL=audiences-U6MQRRTP.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  csvOrJson,
3
3
  handleMetaError
4
- } from "./chunk-6HZF5XQB.js";
5
- import "./chunk-Y2JZX6JB.js";
4
+ } from "./chunk-JHEWSMOS.js";
5
+ import "./chunk-QALAJNBG.js";
6
6
  import {
7
7
  writeAdsJson,
8
8
  writeAdsOutput
@@ -51,4 +51,4 @@ Examples:
51
51
  export {
52
52
  businessesCommand
53
53
  };
54
- //# sourceMappingURL=businesses-XH7A32WX.js.map
54
+ //# sourceMappingURL=businesses-RRYQYTG4.js.map
@@ -12,8 +12,8 @@ import {
12
12
  resolveAccountIdArg,
13
13
  resolveEffectiveStatus,
14
14
  statusFilterHints
15
- } from "./chunk-6HZF5XQB.js";
16
- import "./chunk-Y2JZX6JB.js";
15
+ } from "./chunk-JHEWSMOS.js";
16
+ import "./chunk-QALAJNBG.js";
17
17
  import "./chunk-X7DMNLDD.js";
18
18
  import {
19
19
  NO_CACHE_ARG
@@ -107,14 +107,14 @@ Examples:
107
107
  },
108
108
  subCommands: {
109
109
  list: listCommand,
110
- create: () => import("./write-commands-K2XXF7JP.js").then((m) => m.campaignsCreateCommand),
111
- update: () => import("./write-commands-K2XXF7JP.js").then((m) => m.campaignsUpdateCommand),
112
- pause: () => import("./write-commands-K2XXF7JP.js").then((m) => m.campaignsPauseCommand),
113
- resume: () => import("./write-commands-K2XXF7JP.js").then((m) => m.campaignsResumeCommand),
114
- archive: () => import("./write-commands-K2XXF7JP.js").then((m) => m.campaignsArchiveCommand),
115
- delete: () => import("./write-commands-K2XXF7JP.js").then((m) => m.campaignsDeleteCommand),
116
- duplicate: () => import("./write-commands-K2XXF7JP.js").then((m) => m.campaignsDuplicateCommand),
117
- copy: () => import("./copy-writes-USCBG57G.js").then((m) => m.campaignsCopyCommand)
110
+ create: () => import("./write-commands-AANGPJ5F.js").then((m) => m.campaignsCreateCommand),
111
+ update: () => import("./write-commands-AANGPJ5F.js").then((m) => m.campaignsUpdateCommand),
112
+ pause: () => import("./write-commands-AANGPJ5F.js").then((m) => m.campaignsPauseCommand),
113
+ resume: () => import("./write-commands-AANGPJ5F.js").then((m) => m.campaignsResumeCommand),
114
+ archive: () => import("./write-commands-AANGPJ5F.js").then((m) => m.campaignsArchiveCommand),
115
+ delete: () => import("./write-commands-AANGPJ5F.js").then((m) => m.campaignsDeleteCommand),
116
+ duplicate: () => import("./write-commands-AANGPJ5F.js").then((m) => m.campaignsDuplicateCommand),
117
+ copy: () => import("./copy-writes-GUOL2QUD.js").then((m) => m.campaignsCopyCommand)
118
118
  },
119
119
  // `args` stays even though the parent has no `run`: citty scans rawArgs for the
120
120
  // subcommand name using THIS command's arg defs, so without them `--account-id act_1`
@@ -127,4 +127,4 @@ export {
127
127
  advantagePlusHints,
128
128
  campaignsCommand
129
129
  };
130
- //# sourceMappingURL=campaigns-7ZUR46T2.js.map
130
+ //# sourceMappingURL=campaigns-DDUXFR77.js.map
@@ -7,7 +7,7 @@ import {
7
7
  requireTarget,
8
8
  stageOp,
9
9
  upper
10
- } from "./chunk-LC75VG6J.js";
10
+ } from "./chunk-2UQJ5BDJ.js";
11
11
  import {
12
12
  retailerIdFilter
13
13
  } from "./chunk-GC5P4KWY.js";
@@ -15,7 +15,7 @@ import "./chunk-GDFJOCDO.js";
15
15
  import {
16
16
  csvOrJson,
17
17
  handleMetaError
18
- } from "./chunk-6HZF5XQB.js";
18
+ } from "./chunk-JHEWSMOS.js";
19
19
  import {
20
20
  repeatedValues
21
21
  } from "./chunk-ERSX3MKH.js";
@@ -23,7 +23,7 @@ import "./chunk-QBFJGCWA.js";
23
23
  import "./chunk-4NZ47VXO.js";
24
24
  import "./chunk-D5FY4FAK.js";
25
25
  import "./chunk-JRQI6EVP.js";
26
- import "./chunk-Y2JZX6JB.js";
26
+ import "./chunk-QALAJNBG.js";
27
27
  import {
28
28
  writeAdsJson,
29
29
  writeAdsOutput,
@@ -778,4 +778,4 @@ export {
778
778
  productFieldsFromArgs,
779
779
  productSetFilterFromArgs
780
780
  };
781
- //# sourceMappingURL=catalogs-L6SLRMPR.js.map
781
+ //# sourceMappingURL=catalogs-A6CHXN5B.js.map
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  handleMetaError,
6
6
  resolveAccountIdArg
7
- } from "./chunk-6HZF5XQB.js";
7
+ } from "./chunk-JHEWSMOS.js";
8
8
  import {
9
9
  repeatedValues
10
10
  } from "./chunk-ERSX3MKH.js";
@@ -204,4 +204,4 @@ export {
204
204
  stageOps,
205
205
  stageStatusChange
206
206
  };
207
- //# sourceMappingURL=chunk-LC75VG6J.js.map
207
+ //# sourceMappingURL=chunk-2UQJ5BDJ.js.map
@@ -2,7 +2,7 @@ import {
2
2
  failWriteValidation,
3
3
  parseDateFlag,
4
4
  parseMoneyFlag
5
- } from "./chunk-LC75VG6J.js";
5
+ } from "./chunk-2UQJ5BDJ.js";
6
6
  import {
7
7
  repeatedValues
8
8
  } from "./chunk-ERSX3MKH.js";
@@ -284,4 +284,4 @@ export {
284
284
  clearFromFlags,
285
285
  clearArg
286
286
  };
287
- //# sourceMappingURL=chunk-AI3ICPS6.js.map
287
+ //# sourceMappingURL=chunk-3XG6I4K6.js.map
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-D5FY4FAK.js";
13
13
  import {
14
14
  termsRefusalFix
15
- } from "./chunk-Y2JZX6JB.js";
15
+ } from "./chunk-QALAJNBG.js";
16
16
  import {
17
17
  cacheGet,
18
18
  cacheSet,
@@ -673,4 +673,4 @@ export {
673
673
  fileCreateCommand,
674
674
  bidModifierFlag
675
675
  };
676
- //# sourceMappingURL=chunk-7RERKOMK.js.map
676
+ //# sourceMappingURL=chunk-IQ3MYXCJ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  termsRefusalFix
3
- } from "./chunk-Y2JZX6JB.js";
3
+ } from "./chunk-QALAJNBG.js";
4
4
  import {
5
5
  handleConnectionError,
6
6
  isOrganizationReadRefusal,
@@ -172,4 +172,4 @@ export {
172
172
  resolveEffectiveStatus,
173
173
  statusFilterHints
174
174
  };
175
- //# sourceMappingURL=chunk-6HZF5XQB.js.map
175
+ //# sourceMappingURL=chunk-JHEWSMOS.js.map
@@ -5,7 +5,7 @@ import {
5
5
  requireTarget,
6
6
  stageOp,
7
7
  stageOps
8
- } from "./chunk-LC75VG6J.js";
8
+ } from "./chunk-2UQJ5BDJ.js";
9
9
  import {
10
10
  repeatedValues
11
11
  } from "./chunk-ERSX3MKH.js";
@@ -216,4 +216,4 @@ export {
216
216
  labelsAttachCommand,
217
217
  labelsDetachCommand
218
218
  };
219
- //# sourceMappingURL=chunk-EAIFDVBK.js.map
219
+ //# sourceMappingURL=chunk-NAYO267Q.js.map
@@ -20,7 +20,7 @@ var TERMS_ACTION_PREFIX = "Action needed before publishing:";
20
20
  var PLATFORM_BY_LABEL = new Map(
21
21
  ADS_TERMS_PLATFORMS.map((platform) => [ADS_TERMS_PLATFORM_LABEL[platform], platform])
22
22
  );
23
- var NOTICE_SHAPE = /^accept (.+?) in (Meta|Google Ads|LinkedIn)\. (.+?) Who: (.+?)\. Steps: (1\. .+)$/;
23
+ var NOTICE_SHAPE = /^(accept|complete) (.+?) in (Meta|Google Ads|LinkedIn)\. (.+?) Who: (.+?)\. Steps: (1\. .+)$/;
24
24
  function numberedSteps(text) {
25
25
  const steps = [];
26
26
  let rest = text.replace(/^1\.\s/, "");
@@ -37,12 +37,13 @@ function parseTermsActionNotice(text) {
37
37
  if (!text.startsWith(TERMS_ACTION_PREFIX)) return void 0;
38
38
  const match = NOTICE_SHAPE.exec(text.slice(TERMS_ACTION_PREFIX.length).trim());
39
39
  if (!match) return void 0;
40
- const [, name, label, consequence, who, stepText] = match;
40
+ const [, verb, name, label, consequence, who, stepText] = match;
41
41
  const platform = label ? PLATFORM_BY_LABEL.get(label) : void 0;
42
- if (!platform || !name || !consequence || !who || !stepText) return void 0;
42
+ const action = verb === "accept" || verb === "complete" ? verb : void 0;
43
+ if (!platform || !action || !name || !consequence || !who || !stepText) return void 0;
43
44
  const steps = numberedSteps(stepText);
44
45
  const link = stepText.match(/https:\/\/\S+?(?=[\s,;)]|\.(?:\s|$)|$)/)?.[0] ?? null;
45
- return { platform, name, consequence, who, steps, link };
46
+ return { platform, action, name, consequence, who, steps, link };
46
47
  }
47
48
  var adsTermsRequestSchema = z.strictObject({
48
49
  platform: adsTermsPlatformSchema,
@@ -134,4 +135,4 @@ export {
134
135
  termsHints,
135
136
  termsRefusalFix
136
137
  };
137
- //# sourceMappingURL=chunk-Y2JZX6JB.js.map
138
+ //# sourceMappingURL=chunk-QALAJNBG.js.map