@koda-sl/baker-cli 0.213.0 → 0.215.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.
- package/README.md +5 -1
- package/canvas/hello-world-overlay.json +1 -1
- package/dist/cli.js +28 -7
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2691,7 +2691,11 @@ baker winning-ads follow "https://www.linkedin.com/company/acme" --platform link
|
|
|
2691
2691
|
|
|
2692
2692
|
### `baker winning-ads following`
|
|
2693
2693
|
|
|
2694
|
-
List the brands you follow → `GET /api/ad-library/following`. Each row shows `status` (`ready` vs `adding…`) plus cached counts (`active_ad_count`, `total_ad_count`, `family_count`) and
|
|
2694
|
+
List the brands you follow → `GET /api/ad-library/following`. Each row shows `status` (`ready` vs `adding…`) plus cached counts (`active_ad_count`, `total_ad_count`, `family_count`) and progress through the two stages of adding a brand (`adding_discovered`, `adding_enqueued`, `adding_ingested` — the last two are both counts for the current run, so they read as a fraction). `--full` adds `image_url` + `platforms`.
|
|
2695
|
+
|
|
2696
|
+
**A brand's counts only mean something once it is `ready`.** While it is `adding…` they are a lie in progress. And `discovery_failed: true` on a `ready` brand says we finished but couldn't see everything, so its counts are *short* — which is not the same as the brand running no ads, though both show zero. Re-run `follow` on it to try again.
|
|
2697
|
+
|
|
2698
|
+
Response `hints` name both cases: brands we couldn't finish, and brands still filling in. In `--output md`/`files` the table is the payload and the hints are written to **stderr** so they still surface without corrupting the output.
|
|
2695
2699
|
|
|
2696
2700
|
```bash
|
|
2697
2701
|
baker winning-ads following --output md
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"id": "person_image",
|
|
10
10
|
"type": "image_generate",
|
|
11
11
|
"params": {
|
|
12
|
-
"model": "google/gemini-3.
|
|
12
|
+
"model": "google/gemini-3.1-flash-image-preview",
|
|
13
13
|
"prompt": "Portrait photo of a friendly person smiling, standing outdoors in a city park with soft golden-hour sunlight, 9:16 framing, natural colors.",
|
|
14
14
|
"aspect_ratio": "9:16",
|
|
15
15
|
"image_size": "1K"
|
package/dist/cli.js
CHANGED
|
@@ -40085,7 +40085,7 @@ registerSchema({
|
|
|
40085
40085
|
prompt: { type: "string", description: "Additional prompt instructions for the spawned agent", required: false },
|
|
40086
40086
|
template: {
|
|
40087
40087
|
type: "string",
|
|
40088
|
-
description: "
|
|
40088
|
+
description: "Start this schedule from one of Baker's templates, by its id from `baker scheduled-actions templates --list`. The template's brief is **copied** onto the task, so the person who owns it can read and edit exactly what it will do; anything you pass in --prompt is appended after it. Editing the template later does not change a task already built from it, and the same template can be used more than once.",
|
|
40089
40089
|
required: false
|
|
40090
40090
|
}
|
|
40091
40091
|
}
|
|
@@ -44213,7 +44213,7 @@ var followCompetitorsCommand = defineCommand207({
|
|
|
44213
44213
|
import { defineCommand as defineCommand208 } from "citty";
|
|
44214
44214
|
registerSchema({
|
|
44215
44215
|
command: "winning-ads.following",
|
|
44216
|
-
description: "List the brands you follow in your ad-dna library, with each one's status (ready vs still adding) and cached ad counts.",
|
|
44216
|
+
description: "List the brands you follow in your ad-dna library, with each one's status (ready vs still adding) and cached ad counts. A brand still adding has counts that are a lie in progress; one with `discovery_failed` has counts that are short because we couldn't finish looking, which is not the same as it running no ads.",
|
|
44217
44217
|
args: {}
|
|
44218
44218
|
});
|
|
44219
44219
|
function displayStatus(status) {
|
|
@@ -44230,9 +44230,29 @@ function compactFollowed(record) {
|
|
|
44230
44230
|
family_count: record.family_count ?? null,
|
|
44231
44231
|
adding_discovered: record.adding_discovered ?? null,
|
|
44232
44232
|
adding_enqueued: record.adding_enqueued ?? null,
|
|
44233
|
-
adding_ingested: record.adding_ingested ?? null
|
|
44233
|
+
adding_ingested: record.adding_ingested ?? null,
|
|
44234
|
+
// Without this a brand we failed to finish looking at is indistinguishable
|
|
44235
|
+
// from one that genuinely runs no ads — both read `ready` with 0 ads.
|
|
44236
|
+
discovery_failed: record.discovery_failed ?? null
|
|
44234
44237
|
};
|
|
44235
44238
|
}
|
|
44239
|
+
function followingHints(records) {
|
|
44240
|
+
const hints = [];
|
|
44241
|
+
const label = (r) => String(r.label ?? r.advertiser_id ?? "");
|
|
44242
|
+
const incomplete = records.filter((r) => r.discovery_failed === true && r.status !== "adding\u2026");
|
|
44243
|
+
if (incomplete.length > 0) {
|
|
44244
|
+
hints.push(
|
|
44245
|
+
`${incomplete.length} brand(s) couldn't be fully added: ${incomplete.map(label).join(", ")}. Their counts are incomplete \u2014 re-run \`baker winning-ads follow <domain>\` for each to try again.`
|
|
44246
|
+
);
|
|
44247
|
+
}
|
|
44248
|
+
const adding = records.filter((r) => r.status === "adding\u2026");
|
|
44249
|
+
if (adding.length > 0) {
|
|
44250
|
+
hints.push(
|
|
44251
|
+
`${adding.length} brand(s) are still being added: ${adding.map(label).join(", ")}. Their ad counts fill in over the next few minutes \u2014 don't report them as final, and don't re-follow to speed it up.`
|
|
44252
|
+
);
|
|
44253
|
+
}
|
|
44254
|
+
return hints;
|
|
44255
|
+
}
|
|
44236
44256
|
function followingNormalizer(record, full) {
|
|
44237
44257
|
const compact2 = compactFollowed(record);
|
|
44238
44258
|
if (!full) {
|
|
@@ -44247,7 +44267,7 @@ function followingNormalizer(record, full) {
|
|
|
44247
44267
|
var followingCommand = defineCommand208({
|
|
44248
44268
|
meta: {
|
|
44249
44269
|
name: "following",
|
|
44250
|
-
description: "List brands you follow, with status (ready / adding\u2026) and cached counts. Example: baker winning-ads following --output md"
|
|
44270
|
+
description: "List brands you follow, with status (ready / adding\u2026) and cached counts. A brand's counts are only final once it is ready. Example: baker winning-ads following --output md"
|
|
44251
44271
|
},
|
|
44252
44272
|
args: {
|
|
44253
44273
|
output: { type: "string", description: "Output format: json|files|md", required: false, default: "json" },
|
|
@@ -44260,13 +44280,14 @@ var followingCommand = defineCommand208({
|
|
|
44260
44280
|
const output = args.output || "json";
|
|
44261
44281
|
const full = args.full;
|
|
44262
44282
|
const rawList = Array.isArray(data?.following) ? data.following : [];
|
|
44283
|
+
const following = rawList.map((f) => followingNormalizer(f, full));
|
|
44284
|
+
const hints = followingHints(following);
|
|
44263
44285
|
if (output === "json") {
|
|
44264
|
-
|
|
44265
|
-
writeJson({ ok: true, data: { following } });
|
|
44286
|
+
writeJson({ ok: true, data: { following }, hints: hints.length > 0 ? hints : void 0 });
|
|
44266
44287
|
return;
|
|
44267
44288
|
}
|
|
44268
44289
|
writeOutput(
|
|
44269
|
-
{ ok: true, data: rawList },
|
|
44290
|
+
{ ok: true, data: rawList, hints: hints.length > 0 ? hints : void 0 },
|
|
44270
44291
|
output,
|
|
44271
44292
|
args.fields ? args.fields.split(",") : void 0,
|
|
44272
44293
|
full,
|