@koda-sl/baker-cli 0.25.0-dev.f89d9a60 → 0.25.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.
Files changed (158) hide show
  1. package/README.md +78 -55
  2. package/dist/cli.js +1 -1
  3. package/dist/commands/ads/index.d.ts.map +1 -1
  4. package/dist/commands/ads/index.js +8 -7
  5. package/dist/commands/ads/index.js.map +1 -1
  6. package/dist/commands/ads/meta/account.d.ts +11 -0
  7. package/dist/commands/ads/meta/account.d.ts.map +1 -0
  8. package/dist/commands/ads/meta/account.js +32 -0
  9. package/dist/commands/ads/meta/account.js.map +1 -0
  10. package/dist/commands/ads/meta/accounts.d.ts +20 -0
  11. package/dist/commands/ads/meta/accounts.d.ts.map +1 -0
  12. package/dist/commands/ads/meta/accounts.js +55 -0
  13. package/dist/commands/ads/meta/accounts.js.map +1 -0
  14. package/dist/commands/ads/meta/activities.d.ts +24 -0
  15. package/dist/commands/ads/meta/activities.d.ts.map +1 -0
  16. package/dist/commands/ads/meta/activities.js +44 -0
  17. package/dist/commands/ads/meta/activities.js.map +1 -0
  18. package/dist/commands/ads/meta/ads.d.ts +36 -0
  19. package/dist/commands/ads/meta/ads.d.ts.map +1 -0
  20. package/dist/commands/ads/meta/ads.js +57 -0
  21. package/dist/commands/ads/meta/ads.js.map +1 -0
  22. package/dist/commands/ads/meta/adsets.d.ts +32 -0
  23. package/dist/commands/ads/meta/adsets.d.ts.map +1 -0
  24. package/dist/commands/ads/meta/adsets.js +50 -0
  25. package/dist/commands/ads/meta/adsets.js.map +1 -0
  26. package/dist/commands/ads/meta/audiences.d.ts +20 -0
  27. package/dist/commands/ads/meta/audiences.d.ts.map +1 -0
  28. package/dist/commands/ads/meta/audiences.js +41 -0
  29. package/dist/commands/ads/meta/audiences.js.map +1 -0
  30. package/dist/commands/ads/meta/businesses.d.ts +12 -0
  31. package/dist/commands/ads/meta/businesses.d.ts.map +1 -0
  32. package/dist/commands/ads/meta/businesses.js +35 -0
  33. package/dist/commands/ads/meta/businesses.js.map +1 -0
  34. package/dist/commands/ads/meta/campaigns.d.ts +28 -0
  35. package/dist/commands/ads/meta/campaigns.d.ts.map +1 -0
  36. package/dist/commands/ads/meta/campaigns.js +51 -0
  37. package/dist/commands/ads/meta/campaigns.js.map +1 -0
  38. package/dist/commands/ads/meta/creatives.d.ts +24 -0
  39. package/dist/commands/ads/meta/creatives.d.ts.map +1 -0
  40. package/dist/commands/ads/meta/creatives.js +51 -0
  41. package/dist/commands/ads/meta/creatives.js.map +1 -0
  42. package/dist/commands/ads/meta/index.d.ts +17 -0
  43. package/dist/commands/ads/meta/index.d.ts.map +1 -0
  44. package/dist/commands/ads/meta/index.js +79 -0
  45. package/dist/commands/ads/meta/index.js.map +1 -0
  46. package/dist/commands/ads/meta/insights.d.ts +92 -0
  47. package/dist/commands/ads/meta/insights.d.ts.map +1 -0
  48. package/dist/commands/ads/meta/insights.js +260 -0
  49. package/dist/commands/ads/meta/insights.js.map +1 -0
  50. package/dist/commands/ads/meta/pixels.d.ts +33 -0
  51. package/dist/commands/ads/meta/pixels.d.ts.map +1 -0
  52. package/dist/commands/ads/meta/pixels.js +76 -0
  53. package/dist/commands/ads/meta/pixels.js.map +1 -0
  54. package/dist/commands/ads/meta/presets.d.ts +30 -0
  55. package/dist/commands/ads/meta/presets.d.ts.map +1 -0
  56. package/dist/commands/ads/meta/presets.js +86 -0
  57. package/dist/commands/ads/meta/presets.js.map +1 -0
  58. package/dist/commands/ads/meta/preview.d.ts +32 -0
  59. package/dist/commands/ads/meta/preview.d.ts.map +1 -0
  60. package/dist/commands/ads/meta/preview.js +90 -0
  61. package/dist/commands/ads/meta/preview.js.map +1 -0
  62. package/dist/commands/ads/meta/shared.d.ts +18 -0
  63. package/dist/commands/ads/meta/shared.d.ts.map +1 -0
  64. package/dist/commands/ads/meta/shared.js +86 -0
  65. package/dist/commands/ads/meta/shared.js.map +1 -0
  66. package/dist/env.d.ts +1 -1
  67. package/dist/env.d.ts.map +1 -1
  68. package/dist/env.js +1 -4
  69. package/dist/env.js.map +1 -1
  70. package/dist/error-handler.d.ts +1 -1
  71. package/dist/error-handler.d.ts.map +1 -1
  72. package/dist/error-handler.js +3 -3
  73. package/dist/error-handler.js.map +1 -1
  74. package/package.json +1 -1
  75. package/dist/commands/ads/x/accounts.d.ts +0 -14
  76. package/dist/commands/ads/x/accounts.d.ts.map +0 -1
  77. package/dist/commands/ads/x/accounts.js +0 -73
  78. package/dist/commands/ads/x/accounts.js.map +0 -1
  79. package/dist/commands/ads/x/active-entities.d.ts +0 -43
  80. package/dist/commands/ads/x/active-entities.d.ts.map +0 -1
  81. package/dist/commands/ads/x/active-entities.js +0 -88
  82. package/dist/commands/ads/x/active-entities.js.map +0 -1
  83. package/dist/commands/ads/x/audiences.d.ts +0 -19
  84. package/dist/commands/ads/x/audiences.d.ts.map +0 -1
  85. package/dist/commands/ads/x/audiences.js +0 -65
  86. package/dist/commands/ads/x/audiences.js.map +0 -1
  87. package/dist/commands/ads/x/campaigns.d.ts +0 -34
  88. package/dist/commands/ads/x/campaigns.d.ts.map +0 -1
  89. package/dist/commands/ads/x/campaigns.js +0 -56
  90. package/dist/commands/ads/x/campaigns.js.map +0 -1
  91. package/dist/commands/ads/x/cards.d.ts +0 -19
  92. package/dist/commands/ads/x/cards.d.ts.map +0 -1
  93. package/dist/commands/ads/x/cards.js +0 -65
  94. package/dist/commands/ads/x/cards.js.map +0 -1
  95. package/dist/commands/ads/x/error-parser.d.ts +0 -3
  96. package/dist/commands/ads/x/error-parser.d.ts.map +0 -1
  97. package/dist/commands/ads/x/error-parser.js +0 -80
  98. package/dist/commands/ads/x/error-parser.js.map +0 -1
  99. package/dist/commands/ads/x/funding.d.ts +0 -19
  100. package/dist/commands/ads/x/funding.d.ts.map +0 -1
  101. package/dist/commands/ads/x/funding.js +0 -65
  102. package/dist/commands/ads/x/funding.js.map +0 -1
  103. package/dist/commands/ads/x/index.d.ts +0 -2
  104. package/dist/commands/ads/x/index.d.ts.map +0 -1
  105. package/dist/commands/ads/x/index.js +0 -50
  106. package/dist/commands/ads/x/index.js.map +0 -1
  107. package/dist/commands/ads/x/line-items.d.ts +0 -34
  108. package/dist/commands/ads/x/line-items.d.ts.map +0 -1
  109. package/dist/commands/ads/x/line-items.js +0 -55
  110. package/dist/commands/ads/x/line-items.js.map +0 -1
  111. package/dist/commands/ads/x/media.d.ts +0 -24
  112. package/dist/commands/ads/x/media.d.ts.map +0 -1
  113. package/dist/commands/ads/x/media.js +0 -70
  114. package/dist/commands/ads/x/media.js.map +0 -1
  115. package/dist/commands/ads/x/output.d.ts +0 -13
  116. package/dist/commands/ads/x/output.d.ts.map +0 -1
  117. package/dist/commands/ads/x/output.js +0 -75
  118. package/dist/commands/ads/x/output.js.map +0 -1
  119. package/dist/commands/ads/x/presets.d.ts +0 -15
  120. package/dist/commands/ads/x/presets.d.ts.map +0 -1
  121. package/dist/commands/ads/x/presets.js +0 -60
  122. package/dist/commands/ads/x/presets.js.map +0 -1
  123. package/dist/commands/ads/x/promoted-tweets.d.ts +0 -29
  124. package/dist/commands/ads/x/promoted-tweets.d.ts.map +0 -1
  125. package/dist/commands/ads/x/promoted-tweets.js +0 -74
  126. package/dist/commands/ads/x/promoted-tweets.js.map +0 -1
  127. package/dist/commands/ads/x/run-list.d.ts +0 -17
  128. package/dist/commands/ads/x/run-list.d.ts.map +0 -1
  129. package/dist/commands/ads/x/run-list.js +0 -60
  130. package/dist/commands/ads/x/run-list.js.map +0 -1
  131. package/dist/commands/ads/x/stats/index.d.ts +0 -2
  132. package/dist/commands/ads/x/stats/index.d.ts.map +0 -1
  133. package/dist/commands/ads/x/stats/index.js +0 -32
  134. package/dist/commands/ads/x/stats/index.js.map +0 -1
  135. package/dist/commands/ads/x/stats/job-create.d.ts +0 -58
  136. package/dist/commands/ads/x/stats/job-create.d.ts.map +0 -1
  137. package/dist/commands/ads/x/stats/job-create.js +0 -95
  138. package/dist/commands/ads/x/stats/job-create.js.map +0 -1
  139. package/dist/commands/ads/x/stats/job-status.d.ts +0 -18
  140. package/dist/commands/ads/x/stats/job-status.d.ts.map +0 -1
  141. package/dist/commands/ads/x/stats/job-status.js +0 -58
  142. package/dist/commands/ads/x/stats/job-status.js.map +0 -1
  143. package/dist/commands/ads/x/stats/job.d.ts +0 -63
  144. package/dist/commands/ads/x/stats/job.d.ts.map +0 -1
  145. package/dist/commands/ads/x/stats/job.js +0 -183
  146. package/dist/commands/ads/x/stats/job.js.map +0 -1
  147. package/dist/commands/ads/x/stats/sync.d.ts +0 -73
  148. package/dist/commands/ads/x/stats/sync.d.ts.map +0 -1
  149. package/dist/commands/ads/x/stats/sync.js +0 -151
  150. package/dist/commands/ads/x/stats/sync.js.map +0 -1
  151. package/dist/commands/ads/x/targeting-constants.d.ts +0 -34
  152. package/dist/commands/ads/x/targeting-constants.d.ts.map +0 -1
  153. package/dist/commands/ads/x/targeting-constants.js +0 -80
  154. package/dist/commands/ads/x/targeting-constants.js.map +0 -1
  155. package/dist/commands/ads/x/targeting-criteria.d.ts +0 -24
  156. package/dist/commands/ads/x/targeting-criteria.d.ts.map +0 -1
  157. package/dist/commands/ads/x/targeting-criteria.js +0 -69
  158. package/dist/commands/ads/x/targeting-criteria.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview.js","sourceRoot":"","sources":["../../../../src/commands/ads/meta/preview.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export declare function handleMetaError(err: unknown): never;
2
+ /** Pull the default Meta ad account ID from `--account-id` arg or `BAKER_META_AD_ACCOUNT_ID` env. */
3
+ export declare function resolveAccountIdArg(args: Record<string, unknown>): string;
4
+ export declare function getDateRange(args: Record<string, unknown>): {
5
+ datePreset?: string;
6
+ since?: string;
7
+ until?: string;
8
+ };
9
+ export declare function todayIso(): string;
10
+ export declare function daysAgoIso(days: number): string;
11
+ export declare function csvOrJson(args: Record<string, unknown>): string;
12
+ /**
13
+ * Default to ACTIVE-only on listings — that's almost always what an AI agent or
14
+ * a human glance wants. Pass `--effective-status ACTIVE,PAUSED` to override, or
15
+ * `--all-statuses` to drop the filter entirely.
16
+ */
17
+ export declare function resolveEffectiveStatus(args: Record<string, unknown>): string | undefined;
18
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/commands/ads/meta/shared.ts"],"names":[],"mappings":"AAQA,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,CAoBnD;AAID,qGAAqG;AACrG,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAwBzE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAMnH;AAED,wBAAgB,QAAQ,IAAI,MAAM,CAEjC;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CASxF"}
@@ -0,0 +1,86 @@
1
+ import { ApiError } from "../../../client.js";
2
+ import { getEnv } from "../../../env.js";
3
+ import { handleConnectionError } from "../../../error-handler.js";
4
+ import { writeAdsJson } from "../output.js";
5
+ const DAY_MS = 86_400_000;
6
+ export function handleMetaError(err) {
7
+ if (err instanceof ApiError) {
8
+ if (err.code === "UNAUTHORIZED" || err.code === "NOT_FOUND") {
9
+ handleConnectionError("meta_ads", err.message);
10
+ }
11
+ const envelope = {
12
+ ok: false,
13
+ error: {
14
+ code: err.code,
15
+ message: err.message,
16
+ fix: { action: "reject", explanation: err.message },
17
+ retryable: err.code === "RATE_LIMITED" || err.code === "INTERNAL_ERROR",
18
+ },
19
+ };
20
+ writeAdsJson(envelope);
21
+ process.exit(1);
22
+ }
23
+ const message = err instanceof Error ? err.message : "Unexpected error";
24
+ writeAdsJson({ ok: false, error: { code: "NETWORK_ERROR", message } });
25
+ process.exit(1);
26
+ }
27
+ const ACCOUNT_ID_RE = /^(act_)?[0-9]+$/;
28
+ /** Pull the default Meta ad account ID from `--account-id` arg or `BAKER_META_AD_ACCOUNT_ID` env. */
29
+ export function resolveAccountIdArg(args) {
30
+ const fromArgs = args["account-id"];
31
+ const id = fromArgs || getEnv().BAKER_META_AD_ACCOUNT_ID;
32
+ if (!id) {
33
+ writeAdsJson({
34
+ ok: false,
35
+ error: {
36
+ code: "MISSING_ACCOUNT_ID",
37
+ message: "Pass --account-id or set BAKER_META_AD_ACCOUNT_ID. Run `baker ads meta accounts` to find IDs.",
38
+ },
39
+ });
40
+ process.exit(1);
41
+ }
42
+ if (!ACCOUNT_ID_RE.test(id)) {
43
+ writeAdsJson({
44
+ ok: false,
45
+ error: {
46
+ code: "INVALID_ACCOUNT_ID",
47
+ message: `Invalid account ID "${id}". Expected numeric ID, optionally prefixed with "act_".`,
48
+ },
49
+ });
50
+ process.exit(1);
51
+ }
52
+ return id.startsWith("act_") ? id : `act_${id}`;
53
+ }
54
+ export function getDateRange(args) {
55
+ const datePreset = args["date-preset"];
56
+ const since = args.since;
57
+ const until = args.until;
58
+ if (since && until)
59
+ return { since, until };
60
+ return { datePreset: datePreset ?? "last_7d" };
61
+ }
62
+ export function todayIso() {
63
+ return new Date().toISOString().slice(0, 10);
64
+ }
65
+ export function daysAgoIso(days) {
66
+ return new Date(Date.now() - days * DAY_MS).toISOString().slice(0, 10);
67
+ }
68
+ export function csvOrJson(args) {
69
+ return args.output ?? "json";
70
+ }
71
+ /**
72
+ * Default to ACTIVE-only on listings — that's almost always what an AI agent or
73
+ * a human glance wants. Pass `--effective-status ACTIVE,PAUSED` to override, or
74
+ * `--all-statuses` to drop the filter entirely.
75
+ */
76
+ export function resolveEffectiveStatus(args) {
77
+ if (args["all-statuses"]) {
78
+ return undefined;
79
+ }
80
+ const explicit = args["effective-status"];
81
+ if (explicit) {
82
+ return explicit;
83
+ }
84
+ return "ACTIVE";
85
+ }
86
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/commands/ads/meta/shared.ts"],"names":[],"mappings":"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"}
package/dist/env.d.ts CHANGED
@@ -5,7 +5,7 @@ type Env = {
5
5
  BAKER_GOOGLE_ADS_CUSTOMER_ID?: string;
6
6
  BAKER_GA4_PROPERTY_ID?: string;
7
7
  BAKER_GSC_SITE_URL?: string;
8
- BAKER_X_ADS_ACCOUNT_ID?: string;
8
+ BAKER_META_AD_ACCOUNT_ID?: string;
9
9
  };
10
10
  export declare function getEnv(): Env;
11
11
  export declare function requireChatId(): string;
package/dist/env.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAGA,KAAK,GAAG,GAAG;IACT,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC,CAAC;AAIF,wBAAgB,MAAM,IAAI,GAAG,CAsB5B;AAED,wBAAgB,aAAa,IAAI,MAAM,CAQtC"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAGA,KAAK,GAAG,GAAG;IACT,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC,CAAC;AAIF,wBAAgB,MAAM,IAAI,GAAG,CAmB5B;AAED,wBAAgB,aAAa,IAAI,MAAM,CAQtC"}
package/dist/env.js CHANGED
@@ -14,10 +14,7 @@ export function getEnv() {
14
14
  .optional(),
15
15
  BAKER_GA4_PROPERTY_ID: z.string().optional(),
16
16
  BAKER_GSC_SITE_URL: z.string().optional(),
17
- BAKER_X_ADS_ACCOUNT_ID: z
18
- .string()
19
- .regex(/^[a-z0-9]+$/, "X Ads account ID must be a base36 string")
20
- .optional(),
17
+ BAKER_META_AD_ACCOUNT_ID: z.string().optional(),
21
18
  },
22
19
  runtimeEnv: process.env,
23
20
  });
package/dist/env.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,IAAI,MAAuB,CAAC;AAE5B,MAAM,UAAU,MAAM;IACpB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,SAAS,CAAC;YACjB,MAAM,EAAE;gBACN,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,+BAA+B,CAAC;gBAC5E,aAAa,EAAE,CAAC,CAAC,GAAG,CAAC,mCAAmC,CAAC;gBACzD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBACpC,4BAA4B,EAAE,CAAC;qBAC5B,MAAM,EAAE;qBACR,KAAK,CAAC,UAAU,CAAC;qBACjB,QAAQ,EAAE;gBACb,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAC5C,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBACzC,sBAAsB,EAAE,CAAC;qBACtB,MAAM,EAAE;qBACR,KAAK,CAAC,aAAa,EAAE,0CAA0C,CAAC;qBAChE,QAAQ,EAAE;aACd;YACD,UAAU,EAAE,OAAO,CAAC,GAAG;SACxB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,iHAAiH,CAClH,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC,aAAa,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,IAAI,MAAuB,CAAC;AAE5B,MAAM,UAAU,MAAM;IACpB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,SAAS,CAAC;YACjB,MAAM,EAAE;gBACN,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,+BAA+B,CAAC;gBAC5E,aAAa,EAAE,CAAC,CAAC,GAAG,CAAC,mCAAmC,CAAC;gBACzD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBACpC,4BAA4B,EAAE,CAAC;qBAC5B,MAAM,EAAE;qBACR,KAAK,CAAC,UAAU,CAAC;qBACjB,QAAQ,EAAE;gBACb,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAC5C,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBACzC,wBAAwB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAChD;YACD,UAAU,EAAE,OAAO,CAAC,GAAG;SACxB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,iHAAiH,CAClH,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC,aAAa,CAAC;AAC3B,CAAC"}
@@ -1,4 +1,4 @@
1
- type ConnectionPlatform = "google_ads" | "ga4" | "gsc" | "x_ads";
1
+ type ConnectionPlatform = "google_ads" | "ga4" | "gsc" | "meta_ads";
2
2
  /**
3
3
  * Shared error handler for "No Connection" scenarios.
4
4
  * Provides a structured error for AI agents with a suggested fix and alternative commands.
@@ -1 +1 @@
1
- {"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../src/error-handler.ts"],"names":[],"mappings":"AAEA,KAAK,kBAAkB,GAAG,YAAY,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;AAEjE;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,KAAK,CAqCnG"}
1
+ {"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../src/error-handler.ts"],"names":[],"mappings":"AAEA,KAAK,kBAAkB,GAAG,YAAY,GAAG,KAAK,GAAG,KAAK,GAAG,UAAU,CAAC;AAEpE;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,KAAK,CAqCnG"}
@@ -8,19 +8,19 @@ export function handleConnectionError(platform, originalMessage) {
8
8
  google_ads: "Google Ads",
9
9
  ga4: "Google Analytics 4",
10
10
  gsc: "Google Search Console",
11
- x_ads: "X Ads",
11
+ meta_ads: "Meta Ads",
12
12
  }[platform];
13
13
  const alternative = {
14
14
  google_ads: "keywords-for-site or research advertisers",
15
15
  ga4: "lighthouse for page performance",
16
16
  gsc: "keywords-for-site or research keyword-gap",
17
- x_ads: "research advertisers",
17
+ meta_ads: "research advertisers or research keyword-ideas",
18
18
  }[platform];
19
19
  const code = {
20
20
  google_ads: "NO_GOOGLE_ADS_CONNECTION",
21
21
  ga4: "NO_GA4_CONNECTION",
22
22
  gsc: "NO_GSC_CONNECTION",
23
- x_ads: "NO_X_ADS_CONNECTION",
23
+ meta_ads: "NO_META_ADS_CONNECTION",
24
24
  }[platform];
25
25
  const envelope = {
26
26
  ok: false,
@@ -1 +1 @@
1
- {"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../src/error-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAI7D;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAA4B,EAAE,eAAwB;IAC1F,MAAM,YAAY,GAAG;QACnB,UAAU,EAAE,YAAY;QACxB,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,uBAAuB;QAC5B,KAAK,EAAE,OAAO;KACf,CAAC,QAAQ,CAAC,CAAC;IAEZ,MAAM,WAAW,GAAG;QAClB,UAAU,EAAE,2CAA2C;QACvD,GAAG,EAAE,iCAAiC;QACtC,GAAG,EAAE,2CAA2C;QAChD,KAAK,EAAE,sBAAsB;KAC9B,CAAC,QAAQ,CAAC,CAAC;IAEZ,MAAM,IAAI,GAAG;QACX,UAAU,EAAE,0BAA0B;QACtC,GAAG,EAAE,mBAAmB;QACxB,GAAG,EAAE,mBAAmB;QACxB,KAAK,EAAE,qBAAqB;KAC7B,CAAC,QAAQ,CAAC,CAAC;IAEZ,MAAM,QAAQ,GAAG;QACf,EAAE,EAAE,KAAK;QACT,KAAK,EAAE;YACL,IAAI;YACJ,OAAO,EAAE,eAAe,IAAI,MAAM,YAAY,qCAAqC;YACnF,GAAG,EAAE;gBACH,MAAM,EAAE,cAAc;gBACtB,WAAW,EAAE,uGAAuG,YAAY,4DAA4D,YAAY,8PAA8P,WAAW,qCAAqC;aACvf;YACD,SAAS,EAAE,KAAK;SACjB;KACF,CAAC;IAEF,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../src/error-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAI7D;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAA4B,EAAE,eAAwB;IAC1F,MAAM,YAAY,GAAG;QACnB,UAAU,EAAE,YAAY;QACxB,GAAG,EAAE,oBAAoB;QACzB,GAAG,EAAE,uBAAuB;QAC5B,QAAQ,EAAE,UAAU;KACrB,CAAC,QAAQ,CAAC,CAAC;IAEZ,MAAM,WAAW,GAAG;QAClB,UAAU,EAAE,2CAA2C;QACvD,GAAG,EAAE,iCAAiC;QACtC,GAAG,EAAE,2CAA2C;QAChD,QAAQ,EAAE,gDAAgD;KAC3D,CAAC,QAAQ,CAAC,CAAC;IAEZ,MAAM,IAAI,GAAG;QACX,UAAU,EAAE,0BAA0B;QACtC,GAAG,EAAE,mBAAmB;QACxB,GAAG,EAAE,mBAAmB;QACxB,QAAQ,EAAE,wBAAwB;KACnC,CAAC,QAAQ,CAAC,CAAC;IAEZ,MAAM,QAAQ,GAAG;QACf,EAAE,EAAE,KAAK;QACT,KAAK,EAAE;YACL,IAAI;YACJ,OAAO,EAAE,eAAe,IAAI,MAAM,YAAY,qCAAqC;YACnF,GAAG,EAAE;gBACH,MAAM,EAAE,cAAc;gBACtB,WAAW,EAAE,uGAAuG,YAAY,4DAA4D,YAAY,8PAA8P,WAAW,qCAAqC;aACvf;YACD,SAAS,EAAE,KAAK;SACjB;KACF,CAAC;IAEF,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@koda-sl/baker-cli",
3
- "version": "0.25.0-dev.f89d9a60",
3
+ "version": "0.25.1",
4
4
  "description": "AI-agent-first CLI for interacting with Baker",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,14 +0,0 @@
1
- export declare const accountsCommand: import("citty").CommandDef<{
2
- readonly "no-cache": {
3
- readonly type: "boolean";
4
- readonly description: "Skip cache";
5
- readonly required: false;
6
- };
7
- readonly output: {
8
- readonly type: "string";
9
- readonly description: "Format: json|csv|md";
10
- readonly required: false;
11
- readonly default: "json";
12
- };
13
- }>;
14
- //# sourceMappingURL=accounts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../../../../src/commands/ads/x/accounts.ts"],"names":[],"mappings":"AAuCA,eAAO,MAAM,eAAe;;;;;;;;;;;;EAqC1B,CAAC"}
@@ -1,73 +0,0 @@
1
- import { defineCommand } from "citty";
2
- import { ApiError, apiGet } from "../../../client.js";
3
- import { handleConnectionError } from "../../../error-handler.js";
4
- import { registerSchema } from "../../../schemas.js";
5
- import { cacheGet, cacheSet } from "../cache.js";
6
- import { writeAdsJson, writeAdsOutput } from "../output.js";
7
- registerSchema({
8
- command: "ads.x.accounts",
9
- description: "List all accessible X Ads accounts. Returns accounts with id (base36), name, approval_status, timezone, currency. Run this first to find account IDs for other commands.",
10
- args: {
11
- "no-cache": { type: "boolean", description: "Skip cache, hit API directly", required: false },
12
- },
13
- });
14
- function handleAccountsError(err) {
15
- if (err instanceof ApiError) {
16
- if (err.code === "UNAUTHORIZED" || err.code === "NOT_FOUND") {
17
- handleConnectionError("x_ads", err.message);
18
- }
19
- const envelope = {
20
- ok: false,
21
- error: {
22
- code: err.code,
23
- message: err.message,
24
- fix: { action: "reject", explanation: err.message },
25
- retryable: false,
26
- },
27
- };
28
- writeAdsJson(envelope);
29
- process.exit(1);
30
- }
31
- writeAdsJson({ ok: false, error: { code: "NETWORK_ERROR", message: "Unexpected error" } });
32
- process.exit(1);
33
- }
34
- export const accountsCommand = defineCommand({
35
- meta: {
36
- name: "accounts",
37
- description: `List accessible X Ads accounts. Returns account IDs needed for all other commands.
38
-
39
- Examples:
40
- baker ads x accounts`,
41
- },
42
- args: {
43
- "no-cache": { type: "boolean", description: "Skip cache", required: false },
44
- output: { type: "string", description: "Format: json|csv|md", required: false, default: "json" },
45
- },
46
- run: async ({ args }) => {
47
- const useCache = !args["no-cache"];
48
- if (useCache) {
49
- const cached = cacheGet("x-accounts", "list");
50
- if (cached) {
51
- writeAdsJson({ ok: true, data: cached.data, cached: true });
52
- return;
53
- }
54
- }
55
- try {
56
- const params = !useCache ? { "skip-cache": "true" } : undefined;
57
- const data = await apiGet("/api/ads/x/accounts", params);
58
- if (useCache) {
59
- cacheSet("x-accounts", "list", data, 60 * 60 * 1000);
60
- }
61
- const format = args.output || "json";
62
- if (format !== "json") {
63
- writeAdsOutput(data, format);
64
- return;
65
- }
66
- writeAdsJson({ ok: true, data });
67
- }
68
- catch (err) {
69
- handleAccountsError(err);
70
- }
71
- },
72
- });
73
- //# sourceMappingURL=accounts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"accounts.js","sourceRoot":"","sources":["../../../../src/commands/ads/x/accounts.ts"],"names":[],"mappings":"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"}
@@ -1,43 +0,0 @@
1
- export declare const activeEntitiesCommand: import("citty").CommandDef<{
2
- readonly "account-id": {
3
- readonly type: "string";
4
- readonly description: "X Ads account ID";
5
- readonly required: false;
6
- };
7
- readonly entity: {
8
- readonly type: "string";
9
- readonly description: "CAMPAIGN | LINE_ITEM | PROMOTED_TWEET";
10
- readonly required: true;
11
- };
12
- readonly "start-time": {
13
- readonly type: "string";
14
- readonly description: "ISO 8601 hour-aligned start";
15
- readonly required: true;
16
- };
17
- readonly "end-time": {
18
- readonly type: "string";
19
- readonly description: "ISO 8601 hour-aligned end";
20
- readonly required: true;
21
- };
22
- readonly "campaign-ids": {
23
- readonly type: "string";
24
- readonly description: "CSV of campaign IDs";
25
- readonly required: false;
26
- };
27
- readonly "line-item-ids": {
28
- readonly type: "string";
29
- readonly description: "CSV of line item IDs";
30
- readonly required: false;
31
- };
32
- readonly "funding-instrument-ids": {
33
- readonly type: "string";
34
- readonly description: "CSV of funding instrument IDs";
35
- readonly required: false;
36
- };
37
- readonly "no-cache": {
38
- readonly type: "boolean";
39
- readonly description: "Skip cache";
40
- readonly required: false;
41
- };
42
- }>;
43
- //# sourceMappingURL=active-entities.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"active-entities.d.ts","sourceRoot":"","sources":["../../../../src/commands/ads/x/active-entities.ts"],"names":[],"mappings":"AAiCA,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuDhC,CAAC"}
@@ -1,88 +0,0 @@
1
- import { defineCommand } from "citty";
2
- import { ApiError, apiPost } from "../../../client.js";
3
- import { registerSchema } from "../../../schemas.js";
4
- import { cacheGet, cacheSet } from "../cache.js";
5
- import { writeAdsJson } from "../output.js";
6
- import { parseXApiError } from "./error-parser.js";
7
- import { resolveXAccountId } from "./output.js";
8
- registerSchema({
9
- command: "ads.x.activeEntities",
10
- description: "List entities (campaigns/line items) that had metric activity within a time range. Use this to narrow which entities to query for stats. Time range max 90 days. Times must be ISO 8601 hour-aligned.",
11
- args: {
12
- "account-id": { type: "string", description: "X Ads account ID", required: false },
13
- entity: { type: "string", description: "CAMPAIGN | LINE_ITEM | PROMOTED_TWEET", required: true },
14
- "start-time": { type: "string", description: "ISO 8601 hour-aligned start", required: true },
15
- "end-time": { type: "string", description: "ISO 8601 hour-aligned end", required: true },
16
- "campaign-ids": { type: "string", description: "CSV of campaign IDs", required: false },
17
- "line-item-ids": { type: "string", description: "CSV of line item IDs", required: false },
18
- "funding-instrument-ids": { type: "string", description: "CSV of funding instrument IDs", required: false },
19
- "no-cache": { type: "boolean", description: "Skip cache", required: false },
20
- },
21
- });
22
- function parseCsv(v) {
23
- if (typeof v !== "string" || v.length === 0)
24
- return undefined;
25
- const parts = v
26
- .split(",")
27
- .map((s) => s.trim())
28
- .filter(Boolean);
29
- return parts.length > 0 ? parts : undefined;
30
- }
31
- export const activeEntitiesCommand = defineCommand({
32
- meta: {
33
- name: "active-entities",
34
- description: `List entities with metric activity in a time range.
35
-
36
- Examples:
37
- baker ads x active-entities --account-id 18ce53xyz --entity LINE_ITEM \\
38
- --start-time 2026-04-30T00:00:00Z --end-time 2026-05-07T00:00:00Z`,
39
- },
40
- args: {
41
- "account-id": { type: "string", description: "X Ads account ID", required: false },
42
- entity: { type: "string", description: "CAMPAIGN | LINE_ITEM | PROMOTED_TWEET", required: true },
43
- "start-time": { type: "string", description: "ISO 8601 hour-aligned start", required: true },
44
- "end-time": { type: "string", description: "ISO 8601 hour-aligned end", required: true },
45
- "campaign-ids": { type: "string", description: "CSV of campaign IDs", required: false },
46
- "line-item-ids": { type: "string", description: "CSV of line item IDs", required: false },
47
- "funding-instrument-ids": { type: "string", description: "CSV of funding instrument IDs", required: false },
48
- "no-cache": { type: "boolean", description: "Skip cache", required: false },
49
- },
50
- run: async ({ args }) => {
51
- const accountId = await resolveXAccountId(args);
52
- const useCache = !args["no-cache"];
53
- const body = {
54
- accountId,
55
- entity: args.entity,
56
- startTime: args["start-time"],
57
- endTime: args["end-time"],
58
- fundingInstrumentIds: parseCsv(args["funding-instrument-ids"]),
59
- campaignIds: parseCsv(args["campaign-ids"]),
60
- lineItemIds: parseCsv(args["line-item-ids"]),
61
- skipCache: !useCache || undefined,
62
- };
63
- const cacheKey = `active-entities:${JSON.stringify(body)}`;
64
- if (useCache) {
65
- const cached = cacheGet("x-account-data", cacheKey);
66
- if (cached) {
67
- writeAdsJson({ ok: true, data: cached.data, cached: true });
68
- return;
69
- }
70
- }
71
- try {
72
- const data = await apiPost("/api/ads/x/active-entities", body);
73
- if (useCache) {
74
- cacheSet("x-account-data", cacheKey, data, 5 * 60 * 1000);
75
- }
76
- writeAdsJson({ ok: true, data });
77
- }
78
- catch (err) {
79
- if (err instanceof ApiError) {
80
- writeAdsJson(parseXApiError(err.message, accountId));
81
- process.exit(1);
82
- }
83
- writeAdsJson({ ok: false, error: { code: "NETWORK_ERROR", message: "Unexpected error" } });
84
- process.exit(1);
85
- }
86
- },
87
- });
88
- //# sourceMappingURL=active-entities.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"active-entities.js","sourceRoot":"","sources":["../../../../src/commands/ads/x/active-entities.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- export declare const audiencesCommand: import("citty").CommandDef<{
2
- readonly "account-id": {
3
- readonly type: "string";
4
- readonly description: "X Ads account ID";
5
- readonly required: false;
6
- };
7
- readonly "no-cache": {
8
- readonly type: "boolean";
9
- readonly description: "Skip cache";
10
- readonly required: false;
11
- };
12
- readonly output: {
13
- readonly type: "string";
14
- readonly description: "Format: json|csv|md";
15
- readonly required: false;
16
- readonly default: "json";
17
- };
18
- }>;
19
- //# sourceMappingURL=audiences.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"audiences.d.ts","sourceRoot":"","sources":["../../../../src/commands/ads/x/audiences.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;EA+C3B,CAAC"}
@@ -1,65 +0,0 @@
1
- import { defineCommand } from "citty";
2
- import { ApiError, apiGet } from "../../../client.js";
3
- import { registerSchema } from "../../../schemas.js";
4
- import { cacheGet, cacheSet } from "../cache.js";
5
- import { writeAdsJson, writeAdsOutput } from "../output.js";
6
- import { parseXApiError } from "./error-parser.js";
7
- import { resolveXAccountId } from "./output.js";
8
- registerSchema({
9
- command: "ads.x.audiences",
10
- description: "List custom audiences for an X Ads account. Returns id, name, audience_size, audience_type, targetable status. Audiences need 100+ active users in the past 90 days to be targetable.",
11
- args: {
12
- "account-id": { type: "string", description: "X Ads account ID", required: false },
13
- "no-cache": { type: "boolean", description: "Skip cache", required: false },
14
- },
15
- });
16
- export const audiencesCommand = defineCommand({
17
- meta: {
18
- name: "audiences",
19
- description: `List X Ads custom audiences.
20
-
21
- Examples:
22
- baker ads x audiences --account-id 18ce53xyz`,
23
- },
24
- args: {
25
- "account-id": { type: "string", description: "X Ads account ID", required: false },
26
- "no-cache": { type: "boolean", description: "Skip cache", required: false },
27
- output: { type: "string", description: "Format: json|csv|md", required: false, default: "json" },
28
- },
29
- run: async ({ args }) => {
30
- const accountId = await resolveXAccountId(args);
31
- const useCache = !args["no-cache"];
32
- const cacheKey = `audiences:${accountId}`;
33
- if (useCache) {
34
- const cached = cacheGet("x-account-data", cacheKey);
35
- if (cached) {
36
- writeAdsJson({ ok: true, data: cached.data, cached: true });
37
- return;
38
- }
39
- }
40
- try {
41
- const params = { "account-id": accountId };
42
- if (!useCache)
43
- params["skip-cache"] = "true";
44
- const data = await apiGet("/api/ads/x/custom-audiences", params);
45
- if (useCache) {
46
- cacheSet("x-account-data", cacheKey, data, 6 * 60 * 60 * 1000);
47
- }
48
- const format = args.output || "json";
49
- if (format !== "json") {
50
- writeAdsOutput(data, format);
51
- return;
52
- }
53
- writeAdsJson({ ok: true, data });
54
- }
55
- catch (err) {
56
- if (err instanceof ApiError) {
57
- writeAdsJson(parseXApiError(err.message, accountId));
58
- process.exit(1);
59
- }
60
- writeAdsJson({ ok: false, error: { code: "NETWORK_ERROR", message: "Unexpected error" } });
61
- process.exit(1);
62
- }
63
- },
64
- });
65
- //# sourceMappingURL=audiences.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"audiences.js","sourceRoot":"","sources":["../../../../src/commands/ads/x/audiences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,cAAc,CAAC;IACb,OAAO,EAAE,iBAAiB;IAC1B,WAAW,EACT,uLAAuL;IACzL,IAAI,EAAE;QACJ,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE,QAAQ,EAAE,KAAK,EAAE;QAClF,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE;KAC5E;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC;IAC5C,IAAI,EAAE;QACJ,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE;;;+CAG8B;KAC5C;IACD,IAAI,EAAE;QACJ,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE,QAAQ,EAAE,KAAK,EAAE;QAClF,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE;QAC3E,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qBAAqB,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE;KACjG;IACD,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACtB,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnC,MAAM,QAAQ,GAAG,aAAa,SAAS,EAAE,CAAC;QAE1C,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,QAAQ,CAAY,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YAC/D,IAAI,MAAM,EAAE,CAAC;gBACX,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5D,OAAO;YACT,CAAC;QACH,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAA2B,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;YACnE,IAAI,CAAC,QAAQ;gBAAE,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC;YAC7C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAY,6BAA6B,EAAE,MAAM,CAAC,CAAC;YAC5E,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;YACjE,CAAC;YACD,MAAM,MAAM,GAAI,IAAI,CAAC,MAAiB,IAAI,MAAM,CAAC;YACjD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,cAAc,CAAC,IAAsC,EAAE,MAAM,CAAC,CAAC;gBAC/D,OAAO;YACT,CAAC;YACD,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;gBAC5B,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;gBACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,YAAY,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;YAC3F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;CACF,CAAC,CAAC"}
@@ -1,34 +0,0 @@
1
- export declare const campaignsCommand: import("citty").CommandDef<{
2
- readonly "account-id": {
3
- readonly type: "string";
4
- readonly description: "X Ads account ID";
5
- readonly required: false;
6
- };
7
- readonly "funding-instrument-ids": {
8
- readonly type: "string";
9
- readonly description: "CSV of funding instrument IDs";
10
- readonly required: false;
11
- };
12
- readonly "campaign-ids": {
13
- readonly type: "string";
14
- readonly description: "CSV of campaign IDs";
15
- readonly required: false;
16
- };
17
- readonly "with-deleted": {
18
- readonly type: "boolean";
19
- readonly description: "Include deleted";
20
- readonly required: false;
21
- };
22
- readonly "no-cache": {
23
- readonly type: "boolean";
24
- readonly description: "Skip cache";
25
- readonly required: false;
26
- };
27
- readonly output: {
28
- readonly type: "string";
29
- readonly description: "Format: json|csv|md";
30
- readonly required: false;
31
- readonly default: "json";
32
- };
33
- }>;
34
- //# sourceMappingURL=campaigns.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"campaigns.d.ts","sourceRoot":"","sources":["../../../../src/commands/ads/x/campaigns.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuC3B,CAAC"}