@soku-ai/cli 0.1.0-alpha.16 → 0.1.0-alpha.17

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/version.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  export declare const CLI_PACKAGE_NAME = "@soku-ai/cli";
2
- export declare const CLI_VERSION = "0.1.0-alpha.16";
2
+ export declare const CLI_VERSION = "0.1.0-alpha.17";
3
3
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,3 +1,3 @@
1
1
  export const CLI_PACKAGE_NAME = '@soku-ai/cli';
2
- export const CLI_VERSION = '0.1.0-alpha.16';
2
+ export const CLI_VERSION = '0.1.0-alpha.17';
3
3
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@soku-ai/cli",
3
- "version": "0.1.0-alpha.16",
3
+ "version": "0.1.0-alpha.17",
4
4
  "description": "Soku CLI — call Soku ads/GA4/PostHog data capabilities from any AI agent or shell.",
5
5
  "license": "MIT",
6
6
  "author": "About Intelligence",
@@ -157,32 +157,61 @@ The command path determines platform. Do not add `--platform`; the CLI injects
157
157
 
158
158
  ## ChatGPT Ads Writes
159
159
 
160
- ChatGPT Ads uses the generic `ads` action surface. The platform object model is
161
- ad unit first, campaign second:
160
+ Use:
162
161
 
163
- 1. Create one or more ad units with `ads/create_ad_unit`.
164
- 2. Create the campaign with `ads/create_campaign`, `platform=chatgpt_ads`, and a
165
- non-empty `ad_unit_ids` list.
166
- 3. Keep new campaigns paused. The backend forces create to paused; do not submit
167
- `update_campaign(status=active)` unless the user explicitly asks for
168
- activation and approves that exact review.
162
+ ```bash
163
+ soku ads chatgpt --help
164
+ soku ads chatgpt account --help
165
+ soku ads chatgpt campaign --help
166
+ soku ads chatgpt ad-group --help
167
+ soku ads chatgpt ad --help
168
+ ```
169
169
 
170
- Use `soku call` when a typed command is not obvious:
170
+ The command path determines platform. Do not add `--platform`; the CLI injects
171
+ `platform=chatgpt_ads`.
172
+
173
+ The object model is `Campaign → Ad Group → Ad`. `campaign create` requires a
174
+ non-empty inline ad-groups array (`--ad-groups '<json>'` or
175
+ `--ad-groups-file groups.json`); each group is `manual` (with authored `ads`)
176
+ or `generative`. Campaign, ad group, and ad creates are all forced paused by
177
+ the backend; activation is a separate review-gated
178
+ `soku ads chatgpt campaign activate` that the user must explicitly request and
179
+ approve. ChatGPT Ads status literals are lowercase `active` / `paused`, ads
180
+ live under `ad_group_id` (never `adset_id`), and every mutation requires
181
+ `--account-id`.
171
182
 
172
183
  ```bash
173
- soku call ads create_ad_unit \
174
- --payload '{"platform":"chatgpt_ads","account_id":"<account_id>","platform_extras":{"description":"Ad unit description","landing_page":"https://example.com/?utm_source=chatgpt_ads","static_ad_text":"Primary text","static_cta":"Learn more"}}' \
175
- --summary "Create paused ChatGPT Ads ad unit input"
176
-
177
- soku call ads create_campaign \
178
- --payload '{"platform":"chatgpt_ads","account_id":"<account_id>","name":"Launch Test","budget_daily_micros":300000000,"platform_extras":{"landing_page":"https://example.com/?utm_source=chatgpt_ads","campaign_objective":"clicks","ad_unit_ids":["<ad_unit_id>"]}}' \
184
+ soku ads chatgpt campaign create \
185
+ --account-id <account_id> --name "Launch Test" \
186
+ --landing-page "https://example.com/?utm_source=chatgpt_ads" \
187
+ --objective clicks --budget-daily 300 \
188
+ --ad-groups '[{"group_type":"manual","name":"AG 1","landing_page":"https://example.com/?utm_source=chatgpt_ads","brand_name":"Example","ads":[{"name":"Ad 1","headline":"Headline","copy":"Body","cta":"Learn more","landing_page":"https://example.com/?utm_source=chatgpt_ads"}]}]' \
179
189
  --summary "Create paused ChatGPT Ads campaign Launch Test"
190
+
191
+ soku ads chatgpt ad-group create \
192
+ --account-id <account_id> --campaign-id <campaign_id> \
193
+ --name "AG 2" --landing-page "https://example.com/?utm_source=chatgpt_ads" \
194
+ --brand-name "Example" --group-type generative \
195
+ --summary "Add generative ad group AG 2"
196
+
197
+ soku ads chatgpt ad create \
198
+ --account-id <account_id> --ad-group-id <ad_group_id> \
199
+ --name "Ad 2" --headline "Headline" --copy "Body" --cta "Learn more" \
200
+ --landing-page "https://example.com/?utm_source=chatgpt_ads" \
201
+ --summary "Add authored ad Ad 2"
180
202
  ```
181
203
 
182
- Available ChatGPT Ads write actions: `create_ad_unit`, `create_campaign`,
183
- `generate_ad_units`, `add_campaign_ad_units`, `replace_campaign_ad_units`,
184
- `update_campaign`, and `archive_ad_unit`. Treat `archive_ad_unit` as a toggle:
185
- verify current state before using it.
204
+ Reads need no `--summary`: `soku ads chatgpt account info` (billing facts plus
205
+ activation/tracking preflight), `campaign list|get`, `ad-group list|get`.
206
+ Archives (`campaign remove`, `ad-group archive`, `ad archive`) are
207
+ provider-side archive toggles — verify current state with a read first.
208
+
209
+ Legacy ad-unit campaigns (`create_ad_unit`, `generate_ad_units`,
210
+ `add_campaign_ad_units`, `replace_campaign_ad_units`, `archive_ad_unit`) are
211
+ deprecated and stay on the raw `soku call ads <action>` surface for existing
212
+ campaigns only; do not use them for new deployments. Migrate a legacy campaign
213
+ with `soku ads chatgpt campaign migrate-legacy` (moves ad units into paused Ad
214
+ Groups and authored Ads).
186
215
 
187
216
  ## Review Gate
188
217