gooseworks 0.3.7 → 0.3.8
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"master-skill.d.ts","sourceRoot":"","sources":["../../src/skills/master-skill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,UAAU;IACzB,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,oDAAoD;AACpD,wBAAgB,cAAc,IAAI,UAAU,EAAE,CAM7C;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CA8K9C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"master-skill.d.ts","sourceRoot":"","sources":["../../src/skills/master-skill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,UAAU;IACzB,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,oDAAoD;AACpD,wBAAgB,cAAc,IAAI,UAAU,EAAE,CAM7C;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CA8K9C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CA2QhD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CA6OlD"}
|
|
@@ -393,10 +393,49 @@ Then poll with \`get_remix_batch\` and hand back the links, same as above.
|
|
|
393
393
|
|
|
394
394
|
## Brand research
|
|
395
395
|
|
|
396
|
-
|
|
397
|
-
\`
|
|
398
|
-
|
|
399
|
-
|
|
396
|
+
Prefer the backend's result: \`get_brand_kit { brand_id }\`. If \`researchStatus\` is
|
|
397
|
+
\`complete\`, REUSE it — never re-research.
|
|
398
|
+
|
|
399
|
+
**The split — backend owns visuals, you own the qualitative depth:**
|
|
400
|
+
|
|
401
|
+
- **Backend LIGHT pass (automatic).** \`create_ad_brand\` with a \`website_url\` kicks off the same
|
|
402
|
+
backend research the web app uses, in \`mode: "light"\`: it resolves the **authoritative logo,
|
|
403
|
+
colors, and fonts** (Brandfetch + context.dev) plus a baseline kit, then flips
|
|
404
|
+
\`research_status\` to \`complete\` — usually under a minute. You can't reproduce those visual
|
|
405
|
+
signals locally, so **never re-derive logo/colors/fonts.** (Web onboarding via \`/api/ads/onboard\`
|
|
406
|
+
runs the full thing; nothing to do but read it.)
|
|
407
|
+
- **Your DEEP pass (local, agentic).** You add the qualitative depth the light pass leaves thin —
|
|
408
|
+
positioning, audience segments, voice, brandType, value props, proof points, products — grounded
|
|
409
|
+
on the actual site.
|
|
410
|
+
|
|
411
|
+
**CLI brand-research flow:**
|
|
412
|
+
|
|
413
|
+
1. \`create_ad_brand { name, website_url }\` → keep \`brand_id\` + \`slug\`. The brand comes back with
|
|
414
|
+
\`research_status: "pending"\` (light pass in flight).
|
|
415
|
+
2. **Wait for the backend light pass:** poll \`get_brand_kit { brand_id }\` until \`researchStatus\`
|
|
416
|
+
is \`complete\` (usually <60s). Now the kit has authoritative logo/colors/fonts + a baseline.
|
|
417
|
+
At this point generation is already unblocked — but do the deep pass to make it good.
|
|
418
|
+
3. **Deep research locally:** \`gooseworks fetch brand-research\` and follow its phases. **Ground
|
|
419
|
+
every fact on the fetched site** — if the site can't be read, say so and ask the user; never
|
|
420
|
+
guess a category from the brand name alone.
|
|
421
|
+
4. **Write the pack** with \`write_file\` under \`agent-config/brands/<slug>/\`:
|
|
422
|
+
- the \`brand-research/*.md\` docs + \`brand-assets/manifest.json\` (human-readable pack), AND
|
|
423
|
+
- \`brand-research/kit-patch.json\` — the STRUCTURED fields the web UI renders. Field-for-field
|
|
424
|
+
contract; only what you put here reaches the kit. Shape:
|
|
425
|
+
\`{ positioning?: string, audience?: string, voice?: string, brandType?: string, tagline?: string, valueProps?: string[], proofPoints?: string[], products?: [{ name, description?, link?, pricing?, imageUrls?: string[] }] }\`
|
|
426
|
+
(\`brandType\` ∈ product | saas | service | agency | restaurant | fashion | beauty | fitness |
|
|
427
|
+
finance | education | health). Only URLs already in our storage for product images.
|
|
428
|
+
- **Do NOT set logo / colors / fonts here** — the backend light pass already owns those.
|
|
429
|
+
5. **Persist it:** \`finalize_brand_research { brand_id }\` merges \`kit-patch.json\` into the kit
|
|
430
|
+
NON-CLOBBERINGLY (it will NOT overwrite the backend's visuals or any user edit), then re-confirms
|
|
431
|
+
\`research_status: complete\`.
|
|
432
|
+
6. **Verify:** \`get_brand_kit { brand_id }\` — confirm the qualitative fields you wrote are present
|
|
433
|
+
before generating.
|
|
434
|
+
|
|
435
|
+
**If the brand has NO website**, the backend light pass can't run (nothing to fetch) — do the whole
|
|
436
|
+
thing locally (steps 3–6) and finalize; an un-finalized brand has no kit for generation and leaves
|
|
437
|
+
no artifact to debug a wrong run (this is how a bad local classification, e.g. mislabelling a SaaS
|
|
438
|
+
as a "drink company", used to vanish without a trace).
|
|
400
439
|
|
|
401
440
|
## Analyze / intelligence (fetched recipes — NOT generation)
|
|
402
441
|
|
|
@@ -528,38 +567,34 @@ id). The app NEVER runs you — it is the viewer + review surface; you are the r
|
|
|
528
567
|
never re-research. If not, run brand research first (\`gooseworks fetch brand-research\`,
|
|
529
568
|
follow it, then \`finalize_brand_research { brand_id }\`) before continuing.
|
|
530
569
|
|
|
531
|
-
## Step 2 —
|
|
532
|
-
|
|
533
|
-
The
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
\`/tmp/gooseworks-scripts/<slug>/\` and FOLLOW the recipe's SKILL.md — it orchestrates the others.
|
|
560
|
-
The renderer (the \`create-*-mockup\` atom for the format) is a Node package —
|
|
561
|
-
\`npm install\` in its folder so its \`generate.js\` + Playwright resolve, and point the recorder's
|
|
562
|
-
\`NODE_PATH\` at it.
|
|
570
|
+
## Step 2 — read the template's recipe (it carries everything; NO hardcoded format map)
|
|
571
|
+
|
|
572
|
+
The ad format is a **template (data) in the ad_sample DB**, not a per-format skill.
|
|
573
|
+
\`get_ad_template(source_sample_id)\` returns the template's \`recipe\` — a self-contained brief you
|
|
574
|
+
read and execute. **Do NOT map \`format\` to a hardcoded recipe slug** (there is no such table):
|
|
575
|
+
|
|
576
|
+
- \`recipe.format\` — the format label (e.g. \`vignette\`), for display only.
|
|
577
|
+
- \`recipe.atoms\` — the **capabilities** this template composes (e.g. \`create-video-seedance-2-fal\`,
|
|
578
|
+
\`create-image-gpt-image-fal\`, \`review-ugc-render\`, \`watch\`). \`gooseworks fetch <name>\` each — they
|
|
579
|
+
live in \`skills/ads/capabilities/\` and are reused across templates (so they cache).
|
|
580
|
+
- \`recipe.instructions\` — the **playbook** to follow: \`instructions.inline\` prose, or
|
|
581
|
+
\`instructions.doc_url\` (an S3 markdown doc — fetch it).
|
|
582
|
+
- \`recipe.config\` — every param (prompts, layout, timings, palette, model choices).
|
|
583
|
+
- \`recipe.inputs\` — the brand-asset contract (which product / logo / offer this template needs).
|
|
584
|
+
- \`recipe.assets\` — reference material as S3 links (reference render, style guide, example frames) —
|
|
585
|
+
fetch as needed.
|
|
586
|
+
|
|
587
|
+
Runtime: **read the recipe → \`gooseworks fetch\` each capability in \`recipe.atoms\` → follow
|
|
588
|
+
\`recipe.instructions\` with \`recipe.config\` + the brand's bound \`inputs\`.** The template IS the recipe;
|
|
589
|
+
there is no \`format → recipe-slug\` table and no per-format skill to fetch.
|
|
590
|
+
|
|
591
|
+
Save each fetched capability's scripts + files under \`/tmp/gooseworks-scripts/<name>/\`. If a capability
|
|
592
|
+
is a Node package (a phone-mockup renderer), \`npm install\` in its folder so its \`generate.js\` +
|
|
593
|
+
Playwright resolve, and point the recorder's \`NODE_PATH\` at it.
|
|
594
|
+
|
|
595
|
+
> **Migration note:** older phone-mockup formats (\`imessage\` / \`chatgpt\` / \`apple-notes\`) whose DB
|
|
596
|
+
> recipe does not yet carry \`atoms\` / \`instructions\` still hold the legacy \`recipe.thread\` payload;
|
|
597
|
+
> migrate them to this shape (capabilities + instructions in the DB) — do not reintroduce a CLI map.
|
|
563
598
|
|
|
564
599
|
## Step 3 — prepare ALL the ingredients, then review ONCE (always, before any paid render)
|
|
565
600
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"master-skill.js","sourceRoot":"","sources":["../../src/skills/master-skill.ts"],"names":[],"mappings":";;AA4BA,wCAMC;AAWD,sDA8KC;AAiBD,
|
|
1
|
+
{"version":3,"file":"master-skill.js","sourceRoot":"","sources":["../../src/skills/master-skill.ts"],"names":[],"mappings":";;AA4BA,wCAMC;AAWD,sDA8KC;AAiBD,0DA2QC;AAcD,8DA6OC;AAvtBD,oDAAoD;AACpD,SAAgB,cAAc;IAC5B,OAAO;QACL,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,qBAAqB,EAAE,EAAE;QACxD,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,uBAAuB,EAAE,EAAE;QACzD,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,yBAAyB,EAAE,EAAE;KAC9D,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,qBAAqB;IACnC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4KR,CAAC;AACF,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAgB,uBAAuB;IACrC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyQR,CAAC;AACF,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,yBAAyB;IACvC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2OR,CAAC;AACF,CAAC"}
|