@koda-sl/baker-cli 0.354.0-dev.7687bbeae → 0.354.0-dev.85a2d7a47
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 +1 -1
- package/dist/cli.js +30 -43
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -696,7 +696,7 @@ Command groups: `budgets`, `campaigns`, `ad-groups`, `keywords` (add/update/remo
|
|
|
696
696
|
|
|
697
697
|
**Retiring a conversion action** — `status` accepts `ENABLED` and `REMOVED` only. Google denies `HIDDEN` on every conversion-action write, so to stop bidding toward an action while it keeps measuring use `--no-primary`, and to stop it counting at all use `"status": "REMOVED"`. Conversion actions **Google owns** cannot be changed at all — Smart campaign call/directions actions, the in-ad lead form's submit, YouTube subscriptions and follow-on views, Floodlight and Search Ads 360 imports, store visits, codeless webpage actions. Staging any edit to one, a rename included, is refused up front; there is no manual route either, since the Google Ads interface will not change them.
|
|
698
698
|
|
|
699
|
-
**Reviewing the draft** — `baker ads google draft list` renders everything you've staged as a grouped campaign ▸ ad group ▸ ad tree (with non-blocking completeness advisories), the CLI counterpart to the dashboard's Google Ads tab. Pass `--json` for the raw envelope. Once the chat has published it reports the outcome instead — `published · N applied, M failed`, with a `✗` line naming each op that did not land and why
|
|
699
|
+
**Reviewing the draft** — `baker ads google draft list` renders everything you've staged as a grouped campaign ▸ ad group ▸ ad tree (with non-blocking completeness advisories), the CLI counterpart to the dashboard's Google Ads tab. Pass `--json` for the raw envelope. Once the chat has published it reports the outcome instead — `published · N applied, M failed`, with a `✗` line naming each op that did not land and why. Aim for a fully built campaign — 2–4 ad groups, ≥5 keywords each, 2–4 RSAs with 8–12 headlines, ≥4 sitelinks / ≥3 callouts / ≥1 structured snippet, and ≥1 shared negative list; the advisories flag what's still thin.
|
|
700
700
|
|
|
701
701
|
**Amending a staged op** — `draft amend <ref> (--file patch.json | --patch '<json>')` merges a JSON patch into an already-staged op's payload (objects deep-merge, `null` deletes a key, arrays/scalars replace) and re-validates it in full. Always prefer this over removing and re-staging — it preserves the op's ref (so dependents don't break) and its position in the draft. `draft show <ref>` prints the full staged payload (including warnings/annotations) so you can verify a change looks right before publish.
|
|
702
702
|
|
package/dist/cli.js
CHANGED
|
@@ -3569,10 +3569,7 @@ var googleDraftStatusNodeSchema = z6.lazy(
|
|
|
3569
3569
|
existing: z6.boolean(),
|
|
3570
3570
|
collections: z6.array(googleDraftStatusCollectionSchema),
|
|
3571
3571
|
children: z6.array(googleDraftStatusNodeSchema),
|
|
3572
|
-
warnings: z6.array(z6.string()).optional()
|
|
3573
|
-
result: googleDraftOpResultSchema.shape.status.optional(),
|
|
3574
|
-
foldedNotApplied: z6.object({ failed: z6.number(), skipped: z6.number() }).optional(),
|
|
3575
|
-
status: z6.string().optional()
|
|
3572
|
+
warnings: z6.array(z6.string()).optional()
|
|
3576
3573
|
})
|
|
3577
3574
|
);
|
|
3578
3575
|
var googleDraftListResponseSchema = z6.object({
|
|
@@ -5671,7 +5668,11 @@ var historyEntrySchema = z17.object({
|
|
|
5671
5668
|
});
|
|
5672
5669
|
var historyListResponseSchema = z17.object({
|
|
5673
5670
|
ok: z17.literal(true),
|
|
5674
|
-
data: z17.object({
|
|
5671
|
+
data: z17.object({
|
|
5672
|
+
entries: z17.array(historyEntrySchema),
|
|
5673
|
+
/** The search stopped at its row budget before reading the whole window. */
|
|
5674
|
+
scanLimited: z17.boolean().optional()
|
|
5675
|
+
})
|
|
5675
5676
|
});
|
|
5676
5677
|
|
|
5677
5678
|
// ../api/src/hubspot.ts
|
|
@@ -11044,44 +11045,14 @@ var OPERATION_LABELS = {
|
|
|
11044
11045
|
update: "Updating",
|
|
11045
11046
|
pause: "Pausing",
|
|
11046
11047
|
resume: "Resuming",
|
|
11047
|
-
remove: "Removing"
|
|
11048
|
-
upload: "Uploading"
|
|
11049
|
-
};
|
|
11050
|
-
var APPLIED_LABELS = {
|
|
11051
|
-
create: "Created",
|
|
11052
|
-
update: "Updated",
|
|
11053
|
-
pause: "Paused",
|
|
11054
|
-
resume: "Resumed",
|
|
11055
|
-
remove: "Removed",
|
|
11056
|
-
upload: "Uploaded"
|
|
11048
|
+
remove: "Removing"
|
|
11057
11049
|
};
|
|
11058
|
-
function notAppliedText(node) {
|
|
11059
|
-
const { failed = 0, skipped = 0 } = node.foldedNotApplied ?? {};
|
|
11060
|
-
const changes = (n) => `${n} change${n === 1 ? "" : "s"}`;
|
|
11061
|
-
const parts = [
|
|
11062
|
-
...failed > 0 ? [`${changes(failed)} failed`] : [],
|
|
11063
|
-
...skipped > 0 ? [`${changes(skipped)} skipped`] : []
|
|
11064
|
-
];
|
|
11065
|
-
return parts.length > 0 ? parts.join(", ") : void 0;
|
|
11066
|
-
}
|
|
11067
|
-
function outcomeBadge(node, result) {
|
|
11068
|
-
const verb = node.operation ?? "update";
|
|
11069
|
-
if (result === "applied") {
|
|
11070
|
-
return node.operation ? APPLIED_LABELS[verb] ?? "Applied" : "Changes applied";
|
|
11071
|
-
}
|
|
11072
|
-
if (result === "simulated") {
|
|
11073
|
-
return `Simulated (${verb})`;
|
|
11074
|
-
}
|
|
11075
|
-
if (result === "failed") {
|
|
11076
|
-
return node.operation ? `Failed to ${verb}` : "Failed";
|
|
11077
|
-
}
|
|
11078
|
-
return "Skipped";
|
|
11079
|
-
}
|
|
11080
11050
|
function badge(node) {
|
|
11081
|
-
const label = node.
|
|
11082
|
-
|
|
11083
|
-
|
|
11084
|
-
|
|
11051
|
+
const label = node.operation ? OPERATION_LABELS[node.operation] : void 0;
|
|
11052
|
+
if (label) {
|
|
11053
|
+
return label;
|
|
11054
|
+
}
|
|
11055
|
+
return node.existing ? "on Google Ads" : "staged";
|
|
11085
11056
|
}
|
|
11086
11057
|
function collectionLine(collection) {
|
|
11087
11058
|
const parts = [];
|
|
@@ -11480,7 +11451,7 @@ var draftCommand2 = defineCommand22({
|
|
|
11480
11451
|
list: defineCommand22({
|
|
11481
11452
|
meta: {
|
|
11482
11453
|
name: "list",
|
|
11483
|
-
description: "Review everything staged as a campaign \u25B8 ad group \u25B8 ad tree
|
|
11454
|
+
description: "Review everything staged as a campaign \u25B8 ad group \u25B8 ad tree (--json for the raw envelope)"
|
|
11484
11455
|
},
|
|
11485
11456
|
args: {
|
|
11486
11457
|
json: { type: "boolean", description: "Print the raw JSON envelope instead of the readable tree" },
|
|
@@ -51318,6 +51289,21 @@ Full guide: __tooling__/docs/tools/baker/gsc.md`
|
|
|
51318
51289
|
|
|
51319
51290
|
// src/commands/history/index.ts
|
|
51320
51291
|
import { defineCommand as defineCommand142 } from "citty";
|
|
51292
|
+
|
|
51293
|
+
// src/commands/history/hints.ts
|
|
51294
|
+
function buildHistoryHints2(data) {
|
|
51295
|
+
if (data.entries.length > 0) {
|
|
51296
|
+
return data.scanLimited ? ["The search stopped before reading the whole window, so older matching changes may be missing from this list."] : [];
|
|
51297
|
+
}
|
|
51298
|
+
if (data.scanLimited) {
|
|
51299
|
+
return [
|
|
51300
|
+
"None of the most recent account changes matched, and older ones were not searched: this is not proof that nothing matching happened."
|
|
51301
|
+
];
|
|
51302
|
+
}
|
|
51303
|
+
return ["No history entries matched. Widen with a larger --days or drop --category."];
|
|
51304
|
+
}
|
|
51305
|
+
|
|
51306
|
+
// src/commands/history/index.ts
|
|
51321
51307
|
registerSchema({
|
|
51322
51308
|
command: "history.list",
|
|
51323
51309
|
description: "Start here: unified account history (audit log) \u2014 everything that changed on this account, newest first: publishes, chat lifecycle, backlog actions, team changes, setup links, tags, schedules, ad-platform writes, followed advertisers, media, creatives, reports, domains, and integrations. Use it to see what happened recently before planning work. Compact by default; add --full for raw metadata per entry.",
|
|
@@ -51408,10 +51394,11 @@ var listCommand15 = defineCommand142({
|
|
|
51408
51394
|
body.full = true;
|
|
51409
51395
|
}
|
|
51410
51396
|
const response = await apiPost("/api/history/list", body);
|
|
51397
|
+
const hints2 = buildHistoryHints2(response.data);
|
|
51411
51398
|
writeJson({
|
|
51412
51399
|
...response,
|
|
51413
51400
|
meta: { count: response.data.entries.length },
|
|
51414
|
-
...
|
|
51401
|
+
...hints2.length > 0 ? { hints: hints2 } : {}
|
|
51415
51402
|
});
|
|
51416
51403
|
} catch (err) {
|
|
51417
51404
|
failApi(err);
|