@koda-sl/baker-cli 0.384.0-dev.4699b7308 → 0.385.0-dev.ec7b0e42b

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/README.md CHANGED
@@ -163,7 +163,7 @@ Multi-platform ad commands. Google, Meta, and LinkedIn support both reads and **
163
163
 
164
164
  ### `baker ads google accounts`
165
165
 
166
- List all accessible Google Ads accounts. Run this first to find account IDs.
166
+ List the Google Ads accounts selected for this company. Run this first to find account IDs.
167
167
 
168
168
  ```bash
169
169
  baker ads google accounts
@@ -788,7 +788,7 @@ Read X Ads campaigns, line items, promoted tweets, creatives, audiences, and ana
788
788
 
789
789
  | Subcommand | What it returns |
790
790
  |---|---|
791
- | `accounts` | All accessible X Ads accounts |
791
+ | `accounts` | X Ads accounts selected for this company that X currently lists |
792
792
  | `funding` | Funding instruments for an account |
793
793
  | `campaigns` | Campaigns (filter by `--funding-instrument-ids`, `--campaign-ids`) |
794
794
  | `line-items` | Line items / ad groups (filter by `--campaign-ids`, `--line-item-ids`) |
@@ -892,7 +892,7 @@ baker ads meta insights --object act_123 --level adset \
892
892
  baker ads meta activities --account-id act_123 --days 7
893
893
 
894
894
  # "Which Page should this ad run from?"
895
- baker ads meta pages # Facebook Pages the user manages (tasks shows which can ADVERTISE)
895
+ baker ads meta pages # Pages with promotingAccountIds and hasPageAccessToken
896
896
 
897
897
  # "What is the lead form collecting, and how many came in?"
898
898
  baker ads meta lead-forms --page-id 100635183117758 # instant forms on a Page + lead counts
@@ -930,6 +930,8 @@ baker ads meta custom-conversions --account-id act_123 # id, event cate
930
930
  baker ads meta custom-conversions --account-id act_123 --full # raw rule JSON, retention, timestamps
931
931
  ```
932
932
 
933
+ Use a Page only with an ad account listed in its `promotingAccountIds`. Instant-form reads need `hasPageAccessToken: true` on that Page and the company's lead-ads permissions.
934
+
933
935
  **Custom Conversions** — a marketer's own conversion (a pixel event narrowed by a rule, e.g. "PageView on /gracias"), which is what "my conversions" almost always means. To optimize an ad set toward one, pass `--custom-conversion-id <id>` and nothing else: Baker reads the conversion off Meta at stage time and fills its pixel, event category and rule, the same four fields Ads Manager stores. Staging refuses an archived or unavailable conversion, one not built on a pixel, and one belonging to another ad account. Deleting one — in Events Manager or over the API — archives it: it leaves the panel but stays readable on the account, so the listing still shows it flagged `archived`.
934
936
 
935
937
  `custom-conversions create` stages a new one (`--name`, `--pixel-id`, `--custom-event-type`, plus `--url-contains "/gracias"` or `--rule-file`). A rule is a tree of `and`/`or` over `{"<field>":{"<operator>":<value>}}` leaves, where the field is `URL`, `event`, `referrer` or any event parameter the pixel sends (`value`, `content_category`, or your own), so `--url-contains` is only the single-URL shortcut and `--rule-file` reaches the rest. Meta accepts an unmatchable rule and reports success, so staging refuses unknown operators, bare values, empty branches and two conditions written side by side where `and` was meant, before the op is staged. A case-sensitive `contains` is a real operator and gets through — on a URL always write `i_contains`. It is create-only, because Meta's edge offers neither update nor a delete that removes — which is also why staging refuses a create whose pixel, event category and rule already exist, live on the account or staged earlier in the same chat, or one that would pass Meta's cap of 100 per account. An ad set in the same chat can chain to it with `--custom-conversion-id meta_temp_*`.
@@ -952,6 +954,11 @@ Chain a full ad from scratch with `meta_temp_*` refs (each create returns one):
952
954
  # 1. (optional) upload creative media from the Baker library → publishes an image hash
953
955
  baker ads meta media upload --account-id act_123 --kind image --image-id <bakerImageId> # → meta_temp_img
954
956
 
957
+ # For on-ad leads, choose a Page with this account in promotingAccountIds and hasPageAccessToken: true
958
+ baker ads meta lead-forms create --account-id act_123 --page-id 555 --name "Free audit" \
959
+ --questions FULL_NAME,EMAIL,PHONE --privacy-policy-url https://example.com/privacy \
960
+ --follow-up-url https://example.com # → meta_temp_form
961
+
955
962
  # 2. campaign → ad set → creative → ad
956
963
  baker ads meta campaigns create --account-id act_123 --name "Q3 Prospecting" --objective OUTCOME_LEADS --daily-budget 50 # → meta_temp_camp
957
964
  baker ads meta adsets create --account-id act_123 --campaign meta_temp_camp --name "US 25-54" \
@@ -997,9 +1004,8 @@ To find one entity by name, pass `--name-contains <text>` to `campaigns`, `adset
997
1004
 
998
1005
  ```
999
1006
  accounts # ad accounts in the connected scope
1000
- accounts --include-all # every account the token can see (admin/debug)
1001
1007
  account # single-account detail (currency, balance, business, status)
1002
- businesses # /me/businesses
1008
+ businesses # businesses linked to selected ad accounts
1003
1009
  campaigns # ACTIVE-only by default
1004
1010
  adsets # filter by --campaign-id
1005
1011
  ads # filter by --adset-id or --campaign-id
@@ -1125,7 +1131,6 @@ baker ads linkedin bid-pricing --account-id 503001492 \
1125
1131
 
1126
1132
  ```
1127
1133
  accounts # accounts in the connected picker scope
1128
- accounts --include-all # every account the token can see
1129
1134
  account # single-account detail (currency, type, status)
1130
1135
 
1131
1136
  campaign-groups # default ACTIVE-only
@@ -1497,7 +1502,7 @@ A Google Analytics connection made before writes shipped is read-only and every
1497
1502
 
1498
1503
  ### `baker ga4 properties`
1499
1504
 
1500
- List accessible GA4 properties. Run this first to find property IDs.
1505
+ List the GA4 properties selected for this company. Run this first to find property IDs.
1501
1506
 
1502
1507
  ```bash
1503
1508
  baker ga4 properties
@@ -3754,6 +3759,10 @@ baker schema tag-manager read # Kebab-case paths resolve to their registered n
3754
3759
 
3755
3760
  Not every command registers a schema. On `NOT_FOUND` the error carries a structured `fix` pointing at `--help` and the family's agent doc (`__tooling__/docs/tools/baker/<family>.md` in sandboxes). Every top-level family's `--help` also ends with a `Full guide:` line pointing at that doc; `packages/cli/__tests__/doc-coverage.test.ts` fails CI if a mounted command is missing from its family doc.
3756
3761
 
3762
+ ### `baker tag-manager containers`
3763
+
3764
+ Lists the company's selected Tag Manager containers that the connected Google account can still open. If access to a selected container was lost, the response names it in `unavailableContainers` and asks the user to reconnect with an account that can open it.
3765
+
3757
3766
  ## `baker studio` — make new imagery
3758
3767
 
3759
3768
  The generation lane. `baker images` **sources** what already exists; `baker studio` **makes** what doesn't. Every call opens a *batch* — one brief, 1-8 takes, rendered in parallel — recorded against the calling chat and shown in the dashboard Studio next to the batches the client ran themselves.
@@ -20,9 +20,9 @@ import {
20
20
  shouldEscalate
21
21
  } from "./chunk-HJEMOSPH.js";
22
22
 
23
- // ../../.pnpm-store/v10/links/@/safe-stable-stringify/2.5.0/766ad107c42df28eeadaf0ac2f9089c8a9e200f6ba0b2b1a817b8d536cbdcc49/node_modules/safe-stable-stringify/index.js
23
+ // ../../.pnpm-store/v10/links/@/safe-stable-stringify/2.5.0/509a695c9237c6e3727f1f1f99169917f329e3ff3f7877be290b684e24bf153d/node_modules/safe-stable-stringify/index.js
24
24
  var require_safe_stable_stringify = __commonJS({
25
- "../../.pnpm-store/v10/links/@/safe-stable-stringify/2.5.0/766ad107c42df28eeadaf0ac2f9089c8a9e200f6ba0b2b1a817b8d536cbdcc49/node_modules/safe-stable-stringify/index.js"(exports, module) {
25
+ "../../.pnpm-store/v10/links/@/safe-stable-stringify/2.5.0/509a695c9237c6e3727f1f1f99169917f329e3ff3f7877be290b684e24bf153d/node_modules/safe-stable-stringify/index.js"(exports, module) {
26
26
  "use strict";
27
27
  var { hasOwnProperty } = Object.prototype;
28
28
  var stringify = configure2();
@@ -1123,7 +1123,7 @@ function resolveAdaptFormats(params) {
1123
1123
  return params.formats ?? [];
1124
1124
  }
1125
1125
 
1126
- // ../../.pnpm-store/v10/links/@/safe-stable-stringify/2.5.0/766ad107c42df28eeadaf0ac2f9089c8a9e200f6ba0b2b1a817b8d536cbdcc49/node_modules/safe-stable-stringify/esm/wrapper.js
1126
+ // ../../.pnpm-store/v10/links/@/safe-stable-stringify/2.5.0/509a695c9237c6e3727f1f1f99169917f329e3ff3f7877be290b684e24bf153d/node_modules/safe-stable-stringify/esm/wrapper.js
1127
1127
  var import__ = __toESM(require_safe_stable_stringify(), 1);
1128
1128
  var configure = import__.default.configure;
1129
1129
  var wrapper_default = import__.default;
@@ -9986,4 +9986,4 @@ export {
9986
9986
  defaultRegistry,
9987
9987
  createEngineFromEnv
9988
9988
  };
9989
- //# sourceMappingURL=chunk-CHJOTJTZ.js.map
9989
+ //# sourceMappingURL=chunk-JHKW6IDX.js.map