A teljes design thread ciklus: brief → kérdések → koncepciók → kiválasztás.
A kanonikus konverzációs ciklus egyetlen, csak bővíthető (append-only) design threadet használ:
-
start_design_threada briefel → kapsz egysessionId. -
Poll
get_design_thread. Amikor a legutóbbiagent_messagetartalmazasking: true, válaszolj rá ezzel:send_design_message. Ismételd ezt a felfedezés és a felmérés szakaszban. Ha a discovery olyan domainre esik, amelyet a fiók nem birtokol, a következőagent_messagemegkérdezi erről a kereskedőt (askingDomainvan beállítva) a koncepciókra lépés helyett — válaszolj rá ugyanígy, majd folytasd. -
Amikor a koncepciókártyák elkészültek, hívd meg a
select_variant-t egy vagy több kártya id-vel. Küldd el a teljes, sorrendben megadott kiválasztást; több id A/B készletet hoz létre. Ez az ügynök „Build it” funkciója: a kiválasztás egyetlen hívásban történik meg ÉS épül fel, a piszkozat kampány azonnal létrejön, és a válasz tartalmaz egyjobId-t, amire várhatsz awatch_job. Ahhoz, hogy LÁSD a kártyákat, hívd meg aget_concept_board: ugyanazokat a kártyákat egyetlen fix 2×2-es képként, amelybe bele van renderelve az egyes kártyák betűje és neve. -
Folytasd a
send_design_message-vel a kiválasztott popup szerkesztéséhez. Ha inkább egy újabb koncepciókört kérnél, állítsd be anewVariant: true-t; opcionálisan add át egy kiválasztott run-tnewVariantFrom-ként. Folyamatosan kérdezd le (poll) aget_design_thread-t a teljes, sorrendben megadott naplóért. -
A piszkozat kampányt általában azonnal létrehozza a
select_variant(az id-je acampaignId-ban található): olvasd be és mentsd el a célzását aget_campaign_settings/set_campaign_settings-vel, majd apublish_campaign-vel. A hívás körülbelül 40 másodpercen belül válaszol, még akkor is, ha az építés még csak most kezdődik el — egypending: trueválasz nullcampaignId-vel pontosan ezt jelenti; figyeld ajobId-t, és olvasd ki a kampányt aget_design_thread-ból röviddel utána.create_campaigntovábbra is elérhető egy befejezett run esetén, amelyhez még nincs kampány, egyébként pedig a már létező piszkozatot adja vissza. -
select_variantéscreate_campaignegyaránt elutasít409 domain_not_on_account-val, ha a kampány olyan domainre kerülne, amelyet a fiók nem birtokol — ennekagentMessagemegkéri a kereskedőt, hogy adja hozzá a domaint, vagy nevezzen meg egy saját domaint. Ismételd meg ugyanazt a hívást a kereskedő válaszával, mint opcionálisdomainparaméterrel.
start_design_thread({ text: "A 10% welcome popup for shop.com" })
→ { sessionId }
# poll
get_design_thread({ sessionId })
→ { events: [{ type: "agent_message", payload: { asking: true, ... } }] }
send_design_message({ sessionId, message: "New visitors" })
→ { routedTo: "board" }
# after concept cards arrive — picks, builds and creates the draft campaign
select_variant({ sessionId, conceptIds: ["0-a", "0-b"] })
→ { runId, runIds, campaignId, jobId: "run:<runId>", next }
watch_job({ jobId })
→ { status: "completed", hasHtml: true }
send_design_message({ sessionId, message: "Make the CTA more prominent" })
→ { routedTo: "run", runId }
# explicitly start another concept round instead of editing the picked popup
send_design_message({ sessionId, message: "Try a bolder direction", newVariant: true, newVariantFrom: runId })
→ { routedTo: "board" }
# the draft campaign already exists: agree targeting, then publish
get_campaign_settings({ campaignId })
set_campaign_settings({ campaignId, ... })
publish_campaign({ campaignId })
Közvetlen képernyőkép-alapú rekonstrukcióhoz, design beszélgetés nélkül, használd az upload_reference_image (ha szükséges), build_popup, watch_job, és a get_popup_html-t. Használd a get_job -t helyette, ha egyetlen státuszlekérdezésre van szükséged, vagy ha a kliens nem tud nyitva tartani egy kérést; mindkét esetben a runId a jobId. Egy önálló build_popup run-hoz nincs designer session, így nem adható át a create_campaign.
get_popup_html visszaadja a markupot; get_popup_preview visszaadja a képet — egy elkészült build szerveroldalon renderelt képernyőképeit valós böngészőarányban (asztali: 1440×900, mobil: 390×844), viewportonként egy képpel.