@koda-sl/baker-cli 0.537.0 → 0.538.0-dev.fc2958a1d
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/account-2RNYGT6E.js +82 -0
- package/dist/account-T26J6HSJ.js +82 -0
- package/dist/account-reads-P2WXB3NZ.js +219 -0
- package/dist/account-users-REWJY2TN.js +64 -0
- package/dist/account-writes-QEZQCU46.js +68 -0
- package/dist/accounts-MJ7AGPOW.js +701 -0
- package/dist/accounts-PGSNRUNV.js +80 -0
- package/dist/actions-NGBCTPNG.js +55 -0
- package/dist/activecampaign-ASE4IVTD.js +938 -0
- package/dist/ad-group-writes-MVQKICSC.js +172 -0
- package/dist/ad-groups-5OGD7PJ7.js +70 -0
- package/dist/ad-writes-OVD6EESQ.js +176 -0
- package/dist/add-QBEF2C7Z.js +107 -0
- package/dist/add-YJP43JWJ.js +305 -0
- package/dist/ads-GF7QLKBX.js +48 -0
- package/dist/ads-SCWCG2YI.js +79 -0
- package/dist/advertisers-SUZT4NRJ.js +123 -0
- package/dist/analytics-NJBF3U54.js +2437 -0
- package/dist/analytics-PI6SXDW4.js +447 -0
- package/dist/animate-HV2QJWVE.js +480 -0
- package/dist/assign-6YG56OCM.js +80 -0
- package/dist/audience-size-5X3BHQ6Q.js +76 -0
- package/dist/audiences-6N5B7CA2.js +280 -0
- package/dist/audit-PLXF2NAS.js +154 -0
- package/dist/autocomplete-YJSDRTMT.js +114 -0
- package/dist/avatars-BDQWTQKY.js +38 -0
- package/dist/bid-pricing-BUNOVWUB.js +103 -0
- package/dist/brand-MHFSUXWN.js +22 -0
- package/dist/brief-A5AEZBZL.js +543 -0
- package/dist/campaign-groups-UYNINWXX.js +99 -0
- package/dist/campaign-writes-RCA52SAP.js +168 -0
- package/dist/campaign-writes-TFRV62VN.js +176 -0
- package/dist/campaigns-CIQIZ46G.js +113 -0
- package/dist/campaigns-EETR5UJR.js +111 -0
- package/dist/campaigns-KPUA4GP2.js +78 -0
- package/dist/canvas-M3RXWJ2T.js +46 -0
- package/dist/capabilities-XFLST37G.js +147 -0
- package/dist/catalog-JVBRY2U6.js +66 -0
- package/dist/catalogs-QYAAPTMV.js +130 -0
- package/dist/changes-Y4NAQ2IV.js +135 -0
- package/dist/chatgpt-KJAUJBRK.js +47 -0
- package/dist/chats-5BNHZWO7.js +384 -0
- package/dist/check-ESD3QPIZ.js +107 -0
- package/dist/chunk-2EVHGBQY.js +319 -0
- package/dist/chunk-2JFCDUZO.js +156 -0
- package/dist/chunk-2MAQKELK.js +494 -0
- package/dist/chunk-2OCUXPWT.js +1919 -0
- package/dist/chunk-3ANPDWU7.js +438 -0
- package/dist/chunk-3C3IR2F6.js +2209 -0
- package/dist/chunk-3GMJEM4C.js +377 -0
- package/dist/chunk-4YWSFFOP.js +831 -0
- package/dist/chunk-5JG77PP3.js +57 -0
- package/dist/chunk-5TWI6FFY.js +344 -0
- package/dist/chunk-65HTWFKN.js +224 -0
- package/dist/chunk-6OIKNJ7G.js +26 -0
- package/dist/chunk-6RUHIXVA.js +455 -0
- package/dist/chunk-6X4XAANZ.js +191 -0
- package/dist/chunk-6Z32HS4D.js +91 -0
- package/dist/chunk-7MK4TND6.js +163 -0
- package/dist/chunk-AUO4QNMI.js +148 -0
- package/dist/chunk-B6WOWVAA.js +285 -0
- package/dist/chunk-BF32BRMX.js +98 -0
- package/dist/chunk-BIFK5OGB.js +249 -0
- package/dist/chunk-BNO3EFGR.js +4266 -0
- package/dist/chunk-BNO3EFGR.js.map +1 -0
- package/dist/chunk-BUXPBPAP.js +142 -0
- package/dist/chunk-CDRS2QAP.js +392 -0
- package/dist/chunk-CFVVZKSU.js +387 -0
- package/dist/chunk-D3KWV63D.js +19 -0
- package/dist/chunk-D5LV3ECR.js +23 -0
- package/dist/chunk-DBLOEIJ2.js +5368 -0
- package/dist/chunk-DQIPDAPH.js +274 -0
- package/dist/chunk-EFBJ35ZS.js +930 -0
- package/dist/chunk-EMXBMLQ4.js +91 -0
- package/dist/chunk-EZVRXFCC.js +169 -0
- package/dist/chunk-F3CZFUXZ.js +3187 -0
- package/dist/chunk-F3CZFUXZ.js.map +1 -0
- package/dist/chunk-GCFC2MNR.js +228 -0
- package/dist/chunk-GQ4D3BT6.js +207 -0
- package/dist/chunk-HMFIOE4P.js +63 -0
- package/dist/chunk-HXLCETLB.js +3510 -0
- package/dist/chunk-JZ6XRIXG.js +846 -0
- package/dist/chunk-KAUW3OFC.js +843 -0
- package/dist/chunk-KFHW5TCM.js +167 -0
- package/dist/chunk-MHRFRSQ6.js +676 -0
- package/dist/chunk-MQZXGTGI.js +479 -0
- package/dist/chunk-NNNMTRGI.js +547 -0
- package/dist/chunk-NQF5U6FX.js +150 -0
- package/dist/chunk-OROWRGRJ.js +170 -0
- package/dist/chunk-OWJGBIQ2.js +1646 -0
- package/dist/chunk-PAU4VS7H.js +103 -0
- package/dist/chunk-PTGC7CVG.js +429 -0
- package/dist/chunk-RAO7FTMY.js +64 -0
- package/dist/chunk-RM5T4MA6.js +783 -0
- package/dist/chunk-RP2PU3CA.js +275 -0
- package/dist/chunk-RSKU45CU.js +89 -0
- package/dist/chunk-SA6XZ3FP.js +1902 -0
- package/dist/chunk-SIKCVWM3.js +76 -0
- package/dist/chunk-SPQHISWX.js +8954 -0
- package/dist/chunk-SQVT243W.js +51 -0
- package/dist/chunk-T267DS5U.js +297 -0
- package/dist/chunk-UQKDP46G.js +197 -0
- package/dist/chunk-UVVOG5A7.js +61 -0
- package/dist/chunk-UZGZS35I.js +592 -0
- package/dist/chunk-W7BORINM.js +66 -0
- package/dist/chunk-WM6JHUPY.js +5471 -0
- package/dist/chunk-XBMZNFN7.js +203 -0
- package/dist/chunk-XHW24Q5Q.js +910 -0
- package/dist/chunk-XMHTLWWE.js +225 -0
- package/dist/chunk-XPXHJ6EP.js +24026 -0
- package/dist/chunk-XPXHJ6EP.js.map +1 -0
- package/dist/chunk-XXS6SUVM.js +7712 -0
- package/dist/chunk-Y3ESEQRI.js +46 -0
- package/dist/chunk-YAX5CGUY.js +638 -0
- package/dist/chunk-ZCN2XUPQ.js +604 -0
- package/dist/chunk-ZJOXRK2G.js +1518 -0
- package/dist/chunk-ZPHHJPDG.js +131 -0
- package/dist/claim-NM5T33W6.js +200 -0
- package/dist/cli.js +31 -31
- package/dist/companies-VBNBS6LR.js +198 -0
- package/dist/company-3KOV3TJT.js +308 -0
- package/dist/complete-TVY4F5YX.js +84 -0
- package/dist/connect-W6H3DT2C.js +45 -0
- package/dist/conversation-LCGWNPUG.js +96 -0
- package/dist/conversion-report-GK2FUT2R.js +127 -0
- package/dist/conversion-upload-command-Q7LZFFZL.js +439 -0
- package/dist/conversion-writes-STESFLTB.js +122 -0
- package/dist/conversions-D2RPIL3I.js +140 -0
- package/dist/conversions-JBRU7CGB.js +78 -0
- package/dist/create-DHIXUD4Q.js +135 -0
- package/dist/create-OW2BLTBE.js +239 -0
- package/dist/create-TYG5SAQE.js +210 -0
- package/dist/create-XGDJKMDB.js +62 -0
- package/dist/creatives-3ZPFUAKL.js +58 -0
- package/dist/creatives-PN6EQYVU.js +223 -0
- package/dist/credentials-AVRHDGM5.js +290 -0
- package/dist/critique-76EMERXI.js +1451 -0
- package/dist/critique-SZSKQYUL.js +232 -0
- package/dist/crm-4O65STFF.js +227 -0
- package/dist/crm-JMIIB55O.js +323 -0
- package/dist/currency-HQW6FJS5.js +88 -0
- package/dist/customers-GV3AD6B6.js +59 -0
- package/dist/delete-CJGW5MKC.js +69 -0
- package/dist/delete-ISAOQTI5.js +57 -0
- package/dist/delete-WFF5EVIL.js +67 -0
- package/dist/demographics-XSMD6KI4.js +141 -0
- package/dist/discard-B5QMX35Q.js +69 -0
- package/dist/discover-DLGO3VW6.js +172 -0
- package/dist/domain-WA4HAHCE.js +101 -0
- package/dist/download-67IB5DPC.js +172 -0
- package/dist/draft-4MKYX4VU.js +396 -0
- package/dist/draft-I7HIRQ6F.js +283 -0
- package/dist/draft-NXGJ3DD4.js +220 -0
- package/dist/draft-P73N5PT4.js +310 -0
- package/dist/draft-QAPMXYBR.js +335 -0
- package/dist/engine/index.js +8 -8
- package/dist/experiments-YEI3HSBU.js +236 -0
- package/dist/facets-EQLEOMDT.js +117 -0
- package/dist/feedback-JNSHN7DE.js +115 -0
- package/dist/feedback-record-JV43NSJI.js +269 -0
- package/dist/fetch-O4EYJVMN.js +179 -0
- package/dist/fit-7N7AHYQF.js +65 -0
- package/dist/flows-DTZGIGZS.js +250 -0
- package/dist/fonts-TYDQXRIU.js +39 -0
- package/dist/forecast-AODSMD7S.js +169 -0
- package/dist/forecast-VO7XY46L.js +121 -0
- package/dist/funnel-CV4DZXUS.js +397 -0
- package/dist/generate-HSDSCKDW.js +263 -0
- package/dist/get-4S4XRZ2J.js +82 -0
- package/dist/get-FDZZEB5R.js +59 -0
- package/dist/google-DPBZJ3TV.js +3267 -0
- package/dist/google-ads-EPFX2NA4.js +198 -0
- package/dist/history-7UJW5TRO.js +102 -0
- package/dist/history-JCLXT3AO.js +136 -0
- package/dist/history-SHQVK5I7.js +69 -0
- package/dist/hubspot-J6372OWH.js +782 -0
- package/dist/ideas-TKMMQ557.js +45 -0
- package/dist/images-J7LJETPR.js +92 -0
- package/dist/ingest-LVAH5OF5.js +123 -0
- package/dist/ingest-UBP7TEXU.js +27 -0
- package/dist/insights-UMPXHRKD.js +132 -0
- package/dist/inspect-22G3OPFK.js +192 -0
- package/dist/intent-NBP5IDND.js +95 -0
- package/dist/keyword-gap-67UJ2LDD.js +130 -0
- package/dist/keyword-metrics-QP5ZNOC6.js +200 -0
- package/dist/keywords-for-site-QTE332T7.js +131 -0
- package/dist/landing-TOYYCWFX.js +28 -0
- package/dist/languages-TM7SHGRO.js +40 -0
- package/dist/leads-FTWBDLBQ.js +115 -0
- package/dist/learn-3N7M3UHA.js +207 -0
- package/dist/line-item-writes-VFPXT4W6.js +211 -0
- package/dist/line-items-HB2N7RKO.js +107 -0
- package/dist/link-KAY6VYFH.js +67 -0
- package/dist/linkedin-CDSEMSCF.js +1328 -0
- package/dist/linkedin-person-HR6HKFUU.js +139 -0
- package/dist/list-INU27RQJ.js +306 -0
- package/dist/list-QWCU77C3.js +67 -0
- package/dist/list-VJ3CVEDW.js +154 -0
- package/dist/locations-HAXZUHJP.js +40 -0
- package/dist/locations-JFBM4XBL.js +69 -0
- package/dist/log-AUN4NOPP.js +95 -0
- package/dist/make-B5HDRFCX.js +1367 -0
- package/dist/map-CCBSITK7.js +436 -0
- package/dist/mcp-45YWYNYM.js +729 -0
- package/dist/media-sources-N7MBY3GE.js +35 -0
- package/dist/members-2P2QCBJO.js +47 -0
- package/dist/metrics-XWHE4LYQ.js +152 -0
- package/dist/models-3C6BWHEC.js +155 -0
- package/dist/normalize-MLRJ6IYU.js +144 -0
- package/dist/options-6QAJ67XB.js +125 -0
- package/dist/organization-P5LAMNMT.js +949 -0
- package/dist/performance-3PH7UYQN.js +27 -0
- package/dist/performance-6BMFU6IJ.js +5565 -0
- package/dist/pixels-PMPL63ON.js +62 -0
- package/dist/promoted-tweet-writes-EPXZFIUP.js +183 -0
- package/dist/promoted-tweets-Q46HUYN6.js +119 -0
- package/dist/publish-DHDRUTXM.js +344 -0
- package/dist/query-IR3LCFON.js +62 -0
- package/dist/reddit-2FQOS3B3.js +29 -0
- package/dist/refresh-VJPKAPJM.js +97 -0
- package/dist/release-O233BAQA.js +63 -0
- package/dist/relevant-pages-NPUSAV3K.js +99 -0
- package/dist/remove-HNSOYQVB.js +53 -0
- package/dist/reopen-B7KHVN5X.js +66 -0
- package/dist/rerun-KAB7AXTY.js +96 -0
- package/dist/research-I4ZQ4YQ3.js +72 -0
- package/dist/research-Z2SE775C.js +265 -0
- package/dist/reset-4T6XUNOO.js +57 -0
- package/dist/reset-YHEMD5N5.js +57 -0
- package/dist/resolve-5RJD2ELK.js +124 -0
- package/dist/retry-S3EC6FCA.js +65 -0
- package/dist/retry-WKYMY2KB.js +63 -0
- package/dist/revenue-C4E4PRLL.js +91 -0
- package/dist/rules-JGTKFXM3.js +99 -0
- package/dist/rules-add-3DTRLVGR.js +465 -0
- package/dist/run-2TKYHCN2.js +71 -0
- package/dist/run-TYJLOJW7.js +69 -0
- package/dist/scaffold-ad-RFRUPUKW.js +1513 -0
- package/dist/scaffold-static-ad-N5QCJFGP.js +1011 -0
- package/dist/scaffold-video-VAG3WN5W.js +885 -0
- package/dist/schedule-6UYJLE5K.js +64 -0
- package/dist/scheduled-agents-YEHJ4XIB.js +55 -0
- package/dist/schema-BCCCNVNO.js +135 -0
- package/dist/search-J43ZG7W3.js +177 -0
- package/dist/select-I2UPGGZ5.js +110 -0
- package/dist/sends-CEZAPEQN.js +349 -0
- package/dist/sends-CEZAPEQN.js.map +1 -0
- package/dist/set-prompt-SU7YM7FW.js +199 -0
- package/dist/setup-links-VWK4MBI3.js +144 -0
- package/dist/shopify-6KNHPC4R.js +3958 -0
- package/dist/site-PHTJ5VI3.js +180 -0
- package/dist/sources-255OGK6K.js +30 -0
- package/dist/sources-52N253A7.js +457 -0
- package/dist/sources-52N253A7.js.map +1 -0
- package/dist/stale-KN2ZOJ5T.js +90 -0
- package/dist/status-BJH7ODU4.js +65 -0
- package/dist/studio-C2UVCTDD.js +49 -0
- package/dist/sync-MIKA6IM6.js +57 -0
- package/dist/sync-definition-LO425HBD.js +70 -0
- package/dist/tags-DKSJ4E7E.js +227 -0
- package/dist/tags-JEGCEFMZ.js +23 -0
- package/dist/tags-MNHBZ7FH.js +23 -0
- package/dist/tags-S5XY63D3.js +23 -0
- package/dist/tags-VVO3BT66.js +26 -0
- package/dist/targeting-criteria-BIIGZTLQ.js +113 -0
- package/dist/targets-SX3NMYQ3.js +106 -0
- package/dist/testimonials-U3KBI3VU.js +32 -0
- package/dist/themes-32CUPT4M.js +95 -0
- package/dist/top-companies-DFM4F2SE.js +111 -0
- package/dist/transcript-4BSUSOQ4.js +165 -0
- package/dist/translate-JE7CZJ26.js +603 -0
- package/dist/triggers-SRI27OAP.js +144 -0
- package/dist/unlink-U7HZ4CYW.js +70 -0
- package/dist/unstage-JJGZJVHT.js +88 -0
- package/dist/update-JN75LN32.js +66 -0
- package/dist/update-PU5LSQ7W.js +192 -0
- package/dist/update-PUWD5HX4.js +101 -0
- package/dist/update-R4EEEWT4.js +155 -0
- package/dist/upload-4CUPZI3X.js +130 -0
- package/dist/url-options-P3UTLYUY.js +131 -0
- package/dist/url-params-V7KQMWK3.js +101 -0
- package/dist/validate-6GRMJKZI.js +125 -0
- package/dist/videos-6ZZ6LLTL.js +41 -0
- package/dist/viewer-check-B36TNSZI.js +83 -0
- package/dist/web-H5CWLHRA.js +143 -0
- package/dist/winning-ads-SHNXPIYB.js +86 -0
- package/dist/write-commands-RI6UP4YG.js +1525 -0
- package/dist/x-CI2XPNBR.js +47 -0
- package/package.json +1 -1
- package/dist/account-LO57QU6O.js +0 -82
- package/dist/account-V5XHQY2D.js +0 -82
- package/dist/account-reads-CPL3HLZ5.js +0 -219
- package/dist/account-users-RF3VN6VL.js +0 -64
- package/dist/account-writes-MFKCVMMV.js +0 -68
- package/dist/accounts-DTHZLL3R.js +0 -701
- package/dist/accounts-SJ5MKHKE.js +0 -80
- package/dist/actions-LRJRQXC3.js +0 -55
- package/dist/activecampaign-DMFUWRD6.js +0 -938
- package/dist/ad-group-writes-WFYPFO7R.js +0 -172
- package/dist/ad-groups-IPY3TJUX.js +0 -70
- package/dist/ad-writes-LDNNN72V.js +0 -176
- package/dist/add-HSF5S544.js +0 -107
- package/dist/add-IOIY44HY.js +0 -305
- package/dist/ads-CDA6DGGZ.js +0 -48
- package/dist/ads-NTDJRTEG.js +0 -79
- package/dist/advertisers-T4AGXFN4.js +0 -123
- package/dist/analytics-MDIE5CPL.js +0 -2437
- package/dist/analytics-TLEWXYXV.js +0 -447
- package/dist/animate-CQON6SZE.js +0 -480
- package/dist/assign-N5PNZWUW.js +0 -80
- package/dist/audience-size-GMANWKU5.js +0 -76
- package/dist/audiences-KRI7E7FY.js +0 -280
- package/dist/audit-EGLLMYFY.js +0 -154
- package/dist/autocomplete-6DUDQLRT.js +0 -114
- package/dist/avatars-UZN75NVZ.js +0 -38
- package/dist/bid-pricing-SQERHWYU.js +0 -103
- package/dist/brand-XY7EVNPW.js +0 -22
- package/dist/brief-NMACLLA2.js +0 -543
- package/dist/campaign-groups-VWSLBQKJ.js +0 -99
- package/dist/campaign-writes-DAL4EFIV.js +0 -176
- package/dist/campaign-writes-FBIQOLRS.js +0 -168
- package/dist/campaigns-64JH3U6Z.js +0 -113
- package/dist/campaigns-KYI6WAXT.js +0 -111
- package/dist/campaigns-TKQDXU5H.js +0 -78
- package/dist/canvas-DTJM2LTE.js +0 -46
- package/dist/capabilities-O5UVQ4KK.js +0 -147
- package/dist/catalog-6CXOEKBI.js +0 -66
- package/dist/catalogs-ETVY5OZ5.js +0 -130
- package/dist/changes-MHNRAC2E.js +0 -135
- package/dist/chatgpt-GINMQJBI.js +0 -47
- package/dist/chats-NUO3CA4N.js +0 -384
- package/dist/check-RRHOCY2U.js +0 -107
- package/dist/chunk-2AJ5UNOF.js +0 -131
- package/dist/chunk-2Y3VZILY.js +0 -98
- package/dist/chunk-3BOPIUO6.js +0 -163
- package/dist/chunk-3LH5ANM4.js +0 -7712
- package/dist/chunk-3RWSYI6N.js +0 -63
- package/dist/chunk-4PWC4KAK.js +0 -843
- package/dist/chunk-5MMAYAWR.js +0 -103
- package/dist/chunk-5VVXF3OS.js +0 -676
- package/dist/chunk-5Y3EEI52.js +0 -224
- package/dist/chunk-6EMVPPSQ.js +0 -89
- package/dist/chunk-77MDZIHK.js +0 -23
- package/dist/chunk-A5PQYKVO.js +0 -344
- package/dist/chunk-AA3WWPX2.js +0 -392
- package/dist/chunk-AL6373J7.js +0 -930
- package/dist/chunk-AMHVCMBW.js +0 -3510
- package/dist/chunk-BQYSBQZ3.js +0 -91
- package/dist/chunk-BYZQ43VI.js +0 -592
- package/dist/chunk-C54JXXV3.js +0 -24026
- package/dist/chunk-C54JXXV3.js.map +0 -1
- package/dist/chunk-C753PJBU.js +0 -91
- package/dist/chunk-CB7GZQVN.js +0 -249
- package/dist/chunk-CTBDVZ5E.js +0 -274
- package/dist/chunk-CV35AJYT.js +0 -57
- package/dist/chunk-EJBHZ7AQ.js +0 -387
- package/dist/chunk-EKQCHHZW.js +0 -319
- package/dist/chunk-FOD5VSHH.js +0 -51
- package/dist/chunk-FSLSISPI.js +0 -46
- package/dist/chunk-G523URK2.js +0 -438
- package/dist/chunk-G6KE737R.js +0 -377
- package/dist/chunk-GNZM7SWV.js +0 -156
- package/dist/chunk-GRXBD43G.js +0 -169
- package/dist/chunk-GT76FWES.js +0 -1919
- package/dist/chunk-GTIQUOYC.js +0 -148
- package/dist/chunk-GTV62WIS.js +0 -479
- package/dist/chunk-GY6N42PE.js +0 -142
- package/dist/chunk-H27R5IVQ.js +0 -64
- package/dist/chunk-HHQYP6RM.js +0 -783
- package/dist/chunk-HN7GK5UX.js +0 -910
- package/dist/chunk-I6W6FAUZ.js +0 -547
- package/dist/chunk-IJ5DWALA.js +0 -225
- package/dist/chunk-JAC6JVCI.js +0 -26
- package/dist/chunk-K5CEP7W4.js +0 -66
- package/dist/chunk-KJOEW2PI.js +0 -297
- package/dist/chunk-KVBNUGQ6.js +0 -197
- package/dist/chunk-MCJ5I5LR.js +0 -3187
- package/dist/chunk-MCJ5I5LR.js.map +0 -1
- package/dist/chunk-MLMQR24H.js +0 -1646
- package/dist/chunk-MZPS46OR.js +0 -76
- package/dist/chunk-N2MZLW6O.js +0 -170
- package/dist/chunk-NGXZQESA.js +0 -5471
- package/dist/chunk-NJIRVF2B.js +0 -8954
- package/dist/chunk-NNG4QCKJ.js +0 -207
- package/dist/chunk-NPF4KTRK.js +0 -191
- package/dist/chunk-NQ5O2NCJ.js +0 -5368
- package/dist/chunk-OU4TDC2P.js +0 -275
- package/dist/chunk-P7WISPGE.js +0 -61
- package/dist/chunk-R2VP7FK4.js +0 -831
- package/dist/chunk-RD63FPG6.js +0 -150
- package/dist/chunk-RFR7ZN3P.js +0 -604
- package/dist/chunk-RW32BYY3.js +0 -1518
- package/dist/chunk-SMDJW5W4.js +0 -19
- package/dist/chunk-THV7SMY6.js +0 -203
- package/dist/chunk-TI4UL56R.js +0 -4266
- package/dist/chunk-TI4UL56R.js.map +0 -1
- package/dist/chunk-TNQJDM2P.js +0 -1902
- package/dist/chunk-TQDZQT6U.js +0 -167
- package/dist/chunk-UC46M2KW.js +0 -494
- package/dist/chunk-UIPSSTMA.js +0 -228
- package/dist/chunk-VMUJ6JHR.js +0 -2209
- package/dist/chunk-VWKFQ4ZY.js +0 -285
- package/dist/chunk-WAE4G3Q6.js +0 -846
- package/dist/chunk-WTYKTPZP.js +0 -455
- package/dist/chunk-XFMFZAWL.js +0 -429
- package/dist/chunk-YFIWCMVC.js +0 -638
- package/dist/claim-ZKKC5472.js +0 -200
- package/dist/companies-CJFQ63MC.js +0 -198
- package/dist/company-7K4EDRIN.js +0 -308
- package/dist/complete-ODOQLGSO.js +0 -84
- package/dist/connect-APAK3WAY.js +0 -45
- package/dist/conversation-B6V3VCT5.js +0 -96
- package/dist/conversion-report-JNWBTLA5.js +0 -127
- package/dist/conversion-upload-command-6OKMSO2T.js +0 -439
- package/dist/conversion-writes-2VOWP4RD.js +0 -122
- package/dist/conversions-D32UTEPH.js +0 -140
- package/dist/conversions-JGIBYLK5.js +0 -78
- package/dist/create-ALMXIVHA.js +0 -239
- package/dist/create-EUQYK2SH.js +0 -135
- package/dist/create-TOCR7EFZ.js +0 -62
- package/dist/create-VAGPIZTU.js +0 -210
- package/dist/creatives-62PV7BIF.js +0 -223
- package/dist/creatives-HUDKBUDS.js +0 -58
- package/dist/credentials-WCD4F225.js +0 -290
- package/dist/critique-KJXHSKLT.js +0 -1451
- package/dist/critique-OO6SORTA.js +0 -232
- package/dist/crm-5CYCCV34.js +0 -323
- package/dist/crm-YVRIT2RL.js +0 -227
- package/dist/currency-SH4DDE3X.js +0 -88
- package/dist/customers-FSOXPMOU.js +0 -59
- package/dist/delete-EEU6WJ6M.js +0 -67
- package/dist/delete-H7IWZGUZ.js +0 -69
- package/dist/delete-QXZFJNUS.js +0 -57
- package/dist/demographics-RM5PA54R.js +0 -141
- package/dist/discard-6XOYXNZ6.js +0 -69
- package/dist/discover-VEHKBNCY.js +0 -172
- package/dist/domain-X7MT3XUG.js +0 -101
- package/dist/download-YQYR5GUP.js +0 -172
- package/dist/draft-DUAFRL2G.js +0 -283
- package/dist/draft-FXMGEY3E.js +0 -220
- package/dist/draft-V7VGPJK4.js +0 -396
- package/dist/draft-XWHU5C5Z.js +0 -335
- package/dist/draft-YXGASP7M.js +0 -310
- package/dist/experiments-2XOC77Y7.js +0 -236
- package/dist/facets-7Q36JF2D.js +0 -117
- package/dist/feedback-WPV2RKJS.js +0 -115
- package/dist/feedback-record-UEWS4FZJ.js +0 -269
- package/dist/fetch-AARAG6UL.js +0 -179
- package/dist/fit-T4ALNNXL.js +0 -65
- package/dist/flows-PYPA2FM3.js +0 -250
- package/dist/fonts-H2GG2JXA.js +0 -39
- package/dist/forecast-LMSPNY6X.js +0 -121
- package/dist/forecast-UYBYSH3Y.js +0 -169
- package/dist/funnel-KIYPFPIY.js +0 -397
- package/dist/generate-QG7GX6WO.js +0 -263
- package/dist/get-IN6UXQRX.js +0 -59
- package/dist/get-ROETYEYF.js +0 -82
- package/dist/google-ZT3J3G4Z.js +0 -3267
- package/dist/google-ads-CBJZKTXG.js +0 -198
- package/dist/history-GTT55ZP7.js +0 -102
- package/dist/history-UYG35MNJ.js +0 -136
- package/dist/history-XOB23MLX.js +0 -69
- package/dist/hubspot-B6Z77JY6.js +0 -782
- package/dist/ideas-RVK4RNKN.js +0 -45
- package/dist/images-RGJZ6FJL.js +0 -92
- package/dist/ingest-7FHCKRYR.js +0 -27
- package/dist/ingest-GBWY2ZEP.js +0 -123
- package/dist/insights-7CQJOBWX.js +0 -132
- package/dist/inspect-RC6GKLIF.js +0 -192
- package/dist/intent-P75BDP4H.js +0 -95
- package/dist/keyword-gap-54F6CZLM.js +0 -130
- package/dist/keyword-metrics-PL5IYZGN.js +0 -200
- package/dist/keywords-for-site-4FMJ5IGN.js +0 -131
- package/dist/landing-24TVKWTP.js +0 -28
- package/dist/languages-PEGOE365.js +0 -40
- package/dist/leads-6TFBPYMM.js +0 -115
- package/dist/learn-4LGNFGWH.js +0 -207
- package/dist/line-item-writes-AOTRDB4L.js +0 -211
- package/dist/line-items-ERV3F2EI.js +0 -107
- package/dist/link-QZXI5YJP.js +0 -67
- package/dist/linkedin-4BKZ5KUE.js +0 -1328
- package/dist/linkedin-person-ZLXMOG2U.js +0 -139
- package/dist/list-7FB6764Q.js +0 -67
- package/dist/list-QHAYR2IQ.js +0 -154
- package/dist/list-UCQEHPIR.js +0 -306
- package/dist/locations-MXWGZIGU.js +0 -69
- package/dist/locations-SHYN5J4Q.js +0 -40
- package/dist/log-WPZRUMZU.js +0 -95
- package/dist/make-VCAS2M2W.js +0 -1367
- package/dist/map-5EQO2VXB.js +0 -436
- package/dist/mcp-CKOYL4IU.js +0 -729
- package/dist/media-sources-EDZ2PBJY.js +0 -35
- package/dist/members-E2AGJIU6.js +0 -47
- package/dist/metrics-25LYUEB7.js +0 -152
- package/dist/models-EU3NO4IY.js +0 -155
- package/dist/normalize-PHJT5CAD.js +0 -144
- package/dist/options-KFABOCWK.js +0 -125
- package/dist/organization-BP5DTWL7.js +0 -949
- package/dist/performance-C4M3GJPC.js +0 -27
- package/dist/performance-H3SJD3SN.js +0 -5565
- package/dist/pixels-NLH2PN6Q.js +0 -62
- package/dist/promoted-tweet-writes-ATWAKV6N.js +0 -183
- package/dist/promoted-tweets-TWQP3MDP.js +0 -119
- package/dist/publish-Q4W7MI7P.js +0 -344
- package/dist/query-TP3L4W7Z.js +0 -62
- package/dist/reddit-JWZYSUAG.js +0 -29
- package/dist/refresh-VRBHP4AA.js +0 -97
- package/dist/release-OV4ZDCXG.js +0 -63
- package/dist/relevant-pages-VJHTUJMB.js +0 -99
- package/dist/remove-DBCSQSEP.js +0 -53
- package/dist/reopen-5ZOEKYQ5.js +0 -66
- package/dist/rerun-YMRW6BHM.js +0 -96
- package/dist/research-HUM6CF74.js +0 -265
- package/dist/research-M3QPWTYX.js +0 -72
- package/dist/reset-BPAFOW6M.js +0 -57
- package/dist/reset-WAY3BSZX.js +0 -57
- package/dist/resolve-AQ6UFEMN.js +0 -124
- package/dist/retry-3KYFTPXZ.js +0 -65
- package/dist/retry-XO54CIRK.js +0 -63
- package/dist/revenue-PPDMQO3H.js +0 -91
- package/dist/rules-4ENXG5XW.js +0 -99
- package/dist/rules-add-FTBOOE6L.js +0 -465
- package/dist/run-2ZRTKR7A.js +0 -69
- package/dist/run-UECCNQ63.js +0 -71
- package/dist/scaffold-ad-DFKFUOOZ.js +0 -1513
- package/dist/scaffold-static-ad-II3TUE5I.js +0 -1011
- package/dist/scaffold-video-IKVYICIY.js +0 -885
- package/dist/schedule-ERHKGQID.js +0 -64
- package/dist/scheduled-agents-ICXFV7NP.js +0 -55
- package/dist/schema-NUUZ3MG7.js +0 -135
- package/dist/search-B2APYHV6.js +0 -177
- package/dist/select-WVNPJDXP.js +0 -110
- package/dist/sends-H7WMLJ5H.js +0 -349
- package/dist/sends-H7WMLJ5H.js.map +0 -1
- package/dist/set-prompt-KHBDWDXA.js +0 -199
- package/dist/setup-links-R3FH7WK4.js +0 -144
- package/dist/shopify-34CFN6SG.js +0 -3958
- package/dist/site-H6AMVMIX.js +0 -180
- package/dist/sources-2VJMHUH7.js +0 -30
- package/dist/sources-S63224S7.js +0 -457
- package/dist/sources-S63224S7.js.map +0 -1
- package/dist/stale-6BEHWQZ7.js +0 -90
- package/dist/status-MCMOSDVX.js +0 -65
- package/dist/studio-4QOFG7MQ.js +0 -49
- package/dist/sync-WJCJHNET.js +0 -57
- package/dist/sync-definition-THVMBGJR.js +0 -70
- package/dist/tags-AGFUJ2BB.js +0 -227
- package/dist/tags-OPMPPJY2.js +0 -23
- package/dist/tags-VGJ76RJT.js +0 -26
- package/dist/tags-VOCMMZ75.js +0 -23
- package/dist/tags-WK6P5A4D.js +0 -23
- package/dist/targeting-criteria-KRIMZRVI.js +0 -113
- package/dist/targets-MCOEM4XQ.js +0 -106
- package/dist/testimonials-A2AFXSZV.js +0 -32
- package/dist/themes-JBX6W4SP.js +0 -95
- package/dist/top-companies-ESCRXLSK.js +0 -111
- package/dist/transcript-N2ZWN4CI.js +0 -165
- package/dist/translate-YGUYVOGA.js +0 -603
- package/dist/triggers-G4EW5XG6.js +0 -144
- package/dist/unlink-DRIVH2GT.js +0 -70
- package/dist/unstage-WUQV6QBV.js +0 -88
- package/dist/update-5GIAKABM.js +0 -66
- package/dist/update-COXCKREW.js +0 -101
- package/dist/update-NA4M4J5D.js +0 -155
- package/dist/update-T7PSOZES.js +0 -192
- package/dist/upload-IXVEJLZU.js +0 -130
- package/dist/url-options-LHEGWNAH.js +0 -131
- package/dist/url-params-IL2M2WZI.js +0 -101
- package/dist/validate-QAJJ7QCJ.js +0 -125
- package/dist/videos-I7PCC2EC.js +0 -41
- package/dist/viewer-check-PUAWVYWP.js +0 -83
- package/dist/web-O2MCPPB5.js +0 -143
- package/dist/winning-ads-FTMP4FUC.js +0 -86
- package/dist/write-commands-NKKNWQIM.js +0 -1525
- package/dist/x-FPRMRQLQ.js +0 -47
- /package/dist/{account-LO57QU6O.js.map → account-2RNYGT6E.js.map} +0 -0
- /package/dist/{account-V5XHQY2D.js.map → account-T26J6HSJ.js.map} +0 -0
- /package/dist/{account-reads-CPL3HLZ5.js.map → account-reads-P2WXB3NZ.js.map} +0 -0
- /package/dist/{account-users-RF3VN6VL.js.map → account-users-REWJY2TN.js.map} +0 -0
- /package/dist/{account-writes-MFKCVMMV.js.map → account-writes-QEZQCU46.js.map} +0 -0
- /package/dist/{accounts-DTHZLL3R.js.map → accounts-MJ7AGPOW.js.map} +0 -0
- /package/dist/{accounts-SJ5MKHKE.js.map → accounts-PGSNRUNV.js.map} +0 -0
- /package/dist/{actions-LRJRQXC3.js.map → actions-NGBCTPNG.js.map} +0 -0
- /package/dist/{activecampaign-DMFUWRD6.js.map → activecampaign-ASE4IVTD.js.map} +0 -0
- /package/dist/{ad-group-writes-WFYPFO7R.js.map → ad-group-writes-MVQKICSC.js.map} +0 -0
- /package/dist/{ad-groups-IPY3TJUX.js.map → ad-groups-5OGD7PJ7.js.map} +0 -0
- /package/dist/{ad-writes-LDNNN72V.js.map → ad-writes-OVD6EESQ.js.map} +0 -0
- /package/dist/{add-HSF5S544.js.map → add-QBEF2C7Z.js.map} +0 -0
- /package/dist/{add-IOIY44HY.js.map → add-YJP43JWJ.js.map} +0 -0
- /package/dist/{ads-CDA6DGGZ.js.map → ads-GF7QLKBX.js.map} +0 -0
- /package/dist/{ads-NTDJRTEG.js.map → ads-SCWCG2YI.js.map} +0 -0
- /package/dist/{advertisers-T4AGXFN4.js.map → advertisers-SUZT4NRJ.js.map} +0 -0
- /package/dist/{analytics-MDIE5CPL.js.map → analytics-NJBF3U54.js.map} +0 -0
- /package/dist/{analytics-TLEWXYXV.js.map → analytics-PI6SXDW4.js.map} +0 -0
- /package/dist/{animate-CQON6SZE.js.map → animate-HV2QJWVE.js.map} +0 -0
- /package/dist/{assign-N5PNZWUW.js.map → assign-6YG56OCM.js.map} +0 -0
- /package/dist/{audience-size-GMANWKU5.js.map → audience-size-5X3BHQ6Q.js.map} +0 -0
- /package/dist/{audiences-KRI7E7FY.js.map → audiences-6N5B7CA2.js.map} +0 -0
- /package/dist/{audit-EGLLMYFY.js.map → audit-PLXF2NAS.js.map} +0 -0
- /package/dist/{autocomplete-6DUDQLRT.js.map → autocomplete-YJSDRTMT.js.map} +0 -0
- /package/dist/{avatars-UZN75NVZ.js.map → avatars-BDQWTQKY.js.map} +0 -0
- /package/dist/{bid-pricing-SQERHWYU.js.map → bid-pricing-BUNOVWUB.js.map} +0 -0
- /package/dist/{brand-XY7EVNPW.js.map → brand-MHFSUXWN.js.map} +0 -0
- /package/dist/{brief-NMACLLA2.js.map → brief-A5AEZBZL.js.map} +0 -0
- /package/dist/{campaign-groups-VWSLBQKJ.js.map → campaign-groups-UYNINWXX.js.map} +0 -0
- /package/dist/{campaign-writes-FBIQOLRS.js.map → campaign-writes-RCA52SAP.js.map} +0 -0
- /package/dist/{campaign-writes-DAL4EFIV.js.map → campaign-writes-TFRV62VN.js.map} +0 -0
- /package/dist/{campaigns-64JH3U6Z.js.map → campaigns-CIQIZ46G.js.map} +0 -0
- /package/dist/{campaigns-KYI6WAXT.js.map → campaigns-EETR5UJR.js.map} +0 -0
- /package/dist/{campaigns-TKQDXU5H.js.map → campaigns-KPUA4GP2.js.map} +0 -0
- /package/dist/{canvas-DTJM2LTE.js.map → canvas-M3RXWJ2T.js.map} +0 -0
- /package/dist/{capabilities-O5UVQ4KK.js.map → capabilities-XFLST37G.js.map} +0 -0
- /package/dist/{catalog-6CXOEKBI.js.map → catalog-JVBRY2U6.js.map} +0 -0
- /package/dist/{catalogs-ETVY5OZ5.js.map → catalogs-QYAAPTMV.js.map} +0 -0
- /package/dist/{changes-MHNRAC2E.js.map → changes-Y4NAQ2IV.js.map} +0 -0
- /package/dist/{chatgpt-GINMQJBI.js.map → chatgpt-KJAUJBRK.js.map} +0 -0
- /package/dist/{chats-NUO3CA4N.js.map → chats-5BNHZWO7.js.map} +0 -0
- /package/dist/{check-RRHOCY2U.js.map → check-ESD3QPIZ.js.map} +0 -0
- /package/dist/{chunk-EKQCHHZW.js.map → chunk-2EVHGBQY.js.map} +0 -0
- /package/dist/{chunk-GNZM7SWV.js.map → chunk-2JFCDUZO.js.map} +0 -0
- /package/dist/{chunk-UC46M2KW.js.map → chunk-2MAQKELK.js.map} +0 -0
- /package/dist/{chunk-GT76FWES.js.map → chunk-2OCUXPWT.js.map} +0 -0
- /package/dist/{chunk-G523URK2.js.map → chunk-3ANPDWU7.js.map} +0 -0
- /package/dist/{chunk-VMUJ6JHR.js.map → chunk-3C3IR2F6.js.map} +0 -0
- /package/dist/{chunk-G6KE737R.js.map → chunk-3GMJEM4C.js.map} +0 -0
- /package/dist/{chunk-R2VP7FK4.js.map → chunk-4YWSFFOP.js.map} +0 -0
- /package/dist/{chunk-CV35AJYT.js.map → chunk-5JG77PP3.js.map} +0 -0
- /package/dist/{chunk-A5PQYKVO.js.map → chunk-5TWI6FFY.js.map} +0 -0
- /package/dist/{chunk-5Y3EEI52.js.map → chunk-65HTWFKN.js.map} +0 -0
- /package/dist/{chunk-JAC6JVCI.js.map → chunk-6OIKNJ7G.js.map} +0 -0
- /package/dist/{chunk-WTYKTPZP.js.map → chunk-6RUHIXVA.js.map} +0 -0
- /package/dist/{chunk-NPF4KTRK.js.map → chunk-6X4XAANZ.js.map} +0 -0
- /package/dist/{chunk-C753PJBU.js.map → chunk-6Z32HS4D.js.map} +0 -0
- /package/dist/{chunk-3BOPIUO6.js.map → chunk-7MK4TND6.js.map} +0 -0
- /package/dist/{chunk-GTIQUOYC.js.map → chunk-AUO4QNMI.js.map} +0 -0
- /package/dist/{chunk-VWKFQ4ZY.js.map → chunk-B6WOWVAA.js.map} +0 -0
- /package/dist/{chunk-2Y3VZILY.js.map → chunk-BF32BRMX.js.map} +0 -0
- /package/dist/{chunk-CB7GZQVN.js.map → chunk-BIFK5OGB.js.map} +0 -0
- /package/dist/{chunk-GY6N42PE.js.map → chunk-BUXPBPAP.js.map} +0 -0
- /package/dist/{chunk-AA3WWPX2.js.map → chunk-CDRS2QAP.js.map} +0 -0
- /package/dist/{chunk-EJBHZ7AQ.js.map → chunk-CFVVZKSU.js.map} +0 -0
- /package/dist/{chunk-SMDJW5W4.js.map → chunk-D3KWV63D.js.map} +0 -0
- /package/dist/{chunk-77MDZIHK.js.map → chunk-D5LV3ECR.js.map} +0 -0
- /package/dist/{chunk-NQ5O2NCJ.js.map → chunk-DBLOEIJ2.js.map} +0 -0
- /package/dist/{chunk-CTBDVZ5E.js.map → chunk-DQIPDAPH.js.map} +0 -0
- /package/dist/{chunk-AL6373J7.js.map → chunk-EFBJ35ZS.js.map} +0 -0
- /package/dist/{chunk-BQYSBQZ3.js.map → chunk-EMXBMLQ4.js.map} +0 -0
- /package/dist/{chunk-GRXBD43G.js.map → chunk-EZVRXFCC.js.map} +0 -0
- /package/dist/{chunk-UIPSSTMA.js.map → chunk-GCFC2MNR.js.map} +0 -0
- /package/dist/{chunk-NNG4QCKJ.js.map → chunk-GQ4D3BT6.js.map} +0 -0
- /package/dist/{chunk-3RWSYI6N.js.map → chunk-HMFIOE4P.js.map} +0 -0
- /package/dist/{chunk-AMHVCMBW.js.map → chunk-HXLCETLB.js.map} +0 -0
- /package/dist/{chunk-WAE4G3Q6.js.map → chunk-JZ6XRIXG.js.map} +0 -0
- /package/dist/{chunk-4PWC4KAK.js.map → chunk-KAUW3OFC.js.map} +0 -0
- /package/dist/{chunk-TQDZQT6U.js.map → chunk-KFHW5TCM.js.map} +0 -0
- /package/dist/{chunk-5VVXF3OS.js.map → chunk-MHRFRSQ6.js.map} +0 -0
- /package/dist/{chunk-GTV62WIS.js.map → chunk-MQZXGTGI.js.map} +0 -0
- /package/dist/{chunk-I6W6FAUZ.js.map → chunk-NNNMTRGI.js.map} +0 -0
- /package/dist/{chunk-RD63FPG6.js.map → chunk-NQF5U6FX.js.map} +0 -0
- /package/dist/{chunk-N2MZLW6O.js.map → chunk-OROWRGRJ.js.map} +0 -0
- /package/dist/{chunk-MLMQR24H.js.map → chunk-OWJGBIQ2.js.map} +0 -0
- /package/dist/{chunk-5MMAYAWR.js.map → chunk-PAU4VS7H.js.map} +0 -0
- /package/dist/{chunk-XFMFZAWL.js.map → chunk-PTGC7CVG.js.map} +0 -0
- /package/dist/{chunk-H27R5IVQ.js.map → chunk-RAO7FTMY.js.map} +0 -0
- /package/dist/{chunk-HHQYP6RM.js.map → chunk-RM5T4MA6.js.map} +0 -0
- /package/dist/{chunk-OU4TDC2P.js.map → chunk-RP2PU3CA.js.map} +0 -0
- /package/dist/{chunk-6EMVPPSQ.js.map → chunk-RSKU45CU.js.map} +0 -0
- /package/dist/{chunk-TNQJDM2P.js.map → chunk-SA6XZ3FP.js.map} +0 -0
- /package/dist/{chunk-MZPS46OR.js.map → chunk-SIKCVWM3.js.map} +0 -0
- /package/dist/{chunk-NJIRVF2B.js.map → chunk-SPQHISWX.js.map} +0 -0
- /package/dist/{chunk-FOD5VSHH.js.map → chunk-SQVT243W.js.map} +0 -0
- /package/dist/{chunk-KJOEW2PI.js.map → chunk-T267DS5U.js.map} +0 -0
- /package/dist/{chunk-KVBNUGQ6.js.map → chunk-UQKDP46G.js.map} +0 -0
- /package/dist/{chunk-P7WISPGE.js.map → chunk-UVVOG5A7.js.map} +0 -0
- /package/dist/{chunk-BYZQ43VI.js.map → chunk-UZGZS35I.js.map} +0 -0
- /package/dist/{chunk-K5CEP7W4.js.map → chunk-W7BORINM.js.map} +0 -0
- /package/dist/{chunk-NGXZQESA.js.map → chunk-WM6JHUPY.js.map} +0 -0
- /package/dist/{chunk-THV7SMY6.js.map → chunk-XBMZNFN7.js.map} +0 -0
- /package/dist/{chunk-HN7GK5UX.js.map → chunk-XHW24Q5Q.js.map} +0 -0
- /package/dist/{chunk-IJ5DWALA.js.map → chunk-XMHTLWWE.js.map} +0 -0
- /package/dist/{chunk-3LH5ANM4.js.map → chunk-XXS6SUVM.js.map} +0 -0
- /package/dist/{chunk-FSLSISPI.js.map → chunk-Y3ESEQRI.js.map} +0 -0
- /package/dist/{chunk-YFIWCMVC.js.map → chunk-YAX5CGUY.js.map} +0 -0
- /package/dist/{chunk-RFR7ZN3P.js.map → chunk-ZCN2XUPQ.js.map} +0 -0
- /package/dist/{chunk-RW32BYY3.js.map → chunk-ZJOXRK2G.js.map} +0 -0
- /package/dist/{chunk-2AJ5UNOF.js.map → chunk-ZPHHJPDG.js.map} +0 -0
- /package/dist/{claim-ZKKC5472.js.map → claim-NM5T33W6.js.map} +0 -0
- /package/dist/{companies-CJFQ63MC.js.map → companies-VBNBS6LR.js.map} +0 -0
- /package/dist/{company-7K4EDRIN.js.map → company-3KOV3TJT.js.map} +0 -0
- /package/dist/{complete-ODOQLGSO.js.map → complete-TVY4F5YX.js.map} +0 -0
- /package/dist/{connect-APAK3WAY.js.map → connect-W6H3DT2C.js.map} +0 -0
- /package/dist/{conversation-B6V3VCT5.js.map → conversation-LCGWNPUG.js.map} +0 -0
- /package/dist/{conversion-report-JNWBTLA5.js.map → conversion-report-GK2FUT2R.js.map} +0 -0
- /package/dist/{conversion-upload-command-6OKMSO2T.js.map → conversion-upload-command-Q7LZFFZL.js.map} +0 -0
- /package/dist/{conversion-writes-2VOWP4RD.js.map → conversion-writes-STESFLTB.js.map} +0 -0
- /package/dist/{conversions-D32UTEPH.js.map → conversions-D2RPIL3I.js.map} +0 -0
- /package/dist/{conversions-JGIBYLK5.js.map → conversions-JBRU7CGB.js.map} +0 -0
- /package/dist/{create-EUQYK2SH.js.map → create-DHIXUD4Q.js.map} +0 -0
- /package/dist/{create-ALMXIVHA.js.map → create-OW2BLTBE.js.map} +0 -0
- /package/dist/{create-VAGPIZTU.js.map → create-TYG5SAQE.js.map} +0 -0
- /package/dist/{create-TOCR7EFZ.js.map → create-XGDJKMDB.js.map} +0 -0
- /package/dist/{creatives-HUDKBUDS.js.map → creatives-3ZPFUAKL.js.map} +0 -0
- /package/dist/{creatives-62PV7BIF.js.map → creatives-PN6EQYVU.js.map} +0 -0
- /package/dist/{credentials-WCD4F225.js.map → credentials-AVRHDGM5.js.map} +0 -0
- /package/dist/{critique-KJXHSKLT.js.map → critique-76EMERXI.js.map} +0 -0
- /package/dist/{critique-OO6SORTA.js.map → critique-SZSKQYUL.js.map} +0 -0
- /package/dist/{crm-YVRIT2RL.js.map → crm-4O65STFF.js.map} +0 -0
- /package/dist/{crm-5CYCCV34.js.map → crm-JMIIB55O.js.map} +0 -0
- /package/dist/{currency-SH4DDE3X.js.map → currency-HQW6FJS5.js.map} +0 -0
- /package/dist/{customers-FSOXPMOU.js.map → customers-GV3AD6B6.js.map} +0 -0
- /package/dist/{delete-H7IWZGUZ.js.map → delete-CJGW5MKC.js.map} +0 -0
- /package/dist/{delete-QXZFJNUS.js.map → delete-ISAOQTI5.js.map} +0 -0
- /package/dist/{delete-EEU6WJ6M.js.map → delete-WFF5EVIL.js.map} +0 -0
- /package/dist/{demographics-RM5PA54R.js.map → demographics-XSMD6KI4.js.map} +0 -0
- /package/dist/{discard-6XOYXNZ6.js.map → discard-B5QMX35Q.js.map} +0 -0
- /package/dist/{discover-VEHKBNCY.js.map → discover-DLGO3VW6.js.map} +0 -0
- /package/dist/{domain-X7MT3XUG.js.map → domain-WA4HAHCE.js.map} +0 -0
- /package/dist/{download-YQYR5GUP.js.map → download-67IB5DPC.js.map} +0 -0
- /package/dist/{draft-V7VGPJK4.js.map → draft-4MKYX4VU.js.map} +0 -0
- /package/dist/{draft-DUAFRL2G.js.map → draft-I7HIRQ6F.js.map} +0 -0
- /package/dist/{draft-FXMGEY3E.js.map → draft-NXGJ3DD4.js.map} +0 -0
- /package/dist/{draft-YXGASP7M.js.map → draft-P73N5PT4.js.map} +0 -0
- /package/dist/{draft-XWHU5C5Z.js.map → draft-QAPMXYBR.js.map} +0 -0
- /package/dist/{experiments-2XOC77Y7.js.map → experiments-YEI3HSBU.js.map} +0 -0
- /package/dist/{facets-7Q36JF2D.js.map → facets-EQLEOMDT.js.map} +0 -0
- /package/dist/{feedback-WPV2RKJS.js.map → feedback-JNSHN7DE.js.map} +0 -0
- /package/dist/{feedback-record-UEWS4FZJ.js.map → feedback-record-JV43NSJI.js.map} +0 -0
- /package/dist/{fetch-AARAG6UL.js.map → fetch-O4EYJVMN.js.map} +0 -0
- /package/dist/{fit-T4ALNNXL.js.map → fit-7N7AHYQF.js.map} +0 -0
- /package/dist/{flows-PYPA2FM3.js.map → flows-DTZGIGZS.js.map} +0 -0
- /package/dist/{fonts-H2GG2JXA.js.map → fonts-TYDQXRIU.js.map} +0 -0
- /package/dist/{forecast-UYBYSH3Y.js.map → forecast-AODSMD7S.js.map} +0 -0
- /package/dist/{forecast-LMSPNY6X.js.map → forecast-VO7XY46L.js.map} +0 -0
- /package/dist/{funnel-KIYPFPIY.js.map → funnel-CV4DZXUS.js.map} +0 -0
- /package/dist/{generate-QG7GX6WO.js.map → generate-HSDSCKDW.js.map} +0 -0
- /package/dist/{get-ROETYEYF.js.map → get-4S4XRZ2J.js.map} +0 -0
- /package/dist/{get-IN6UXQRX.js.map → get-FDZZEB5R.js.map} +0 -0
- /package/dist/{google-ZT3J3G4Z.js.map → google-DPBZJ3TV.js.map} +0 -0
- /package/dist/{google-ads-CBJZKTXG.js.map → google-ads-EPFX2NA4.js.map} +0 -0
- /package/dist/{history-GTT55ZP7.js.map → history-7UJW5TRO.js.map} +0 -0
- /package/dist/{history-UYG35MNJ.js.map → history-JCLXT3AO.js.map} +0 -0
- /package/dist/{history-XOB23MLX.js.map → history-SHQVK5I7.js.map} +0 -0
- /package/dist/{hubspot-B6Z77JY6.js.map → hubspot-J6372OWH.js.map} +0 -0
- /package/dist/{ideas-RVK4RNKN.js.map → ideas-TKMMQ557.js.map} +0 -0
- /package/dist/{images-RGJZ6FJL.js.map → images-J7LJETPR.js.map} +0 -0
- /package/dist/{ingest-GBWY2ZEP.js.map → ingest-LVAH5OF5.js.map} +0 -0
- /package/dist/{ingest-7FHCKRYR.js.map → ingest-UBP7TEXU.js.map} +0 -0
- /package/dist/{insights-7CQJOBWX.js.map → insights-UMPXHRKD.js.map} +0 -0
- /package/dist/{inspect-RC6GKLIF.js.map → inspect-22G3OPFK.js.map} +0 -0
- /package/dist/{intent-P75BDP4H.js.map → intent-NBP5IDND.js.map} +0 -0
- /package/dist/{keyword-gap-54F6CZLM.js.map → keyword-gap-67UJ2LDD.js.map} +0 -0
- /package/dist/{keyword-metrics-PL5IYZGN.js.map → keyword-metrics-QP5ZNOC6.js.map} +0 -0
- /package/dist/{keywords-for-site-4FMJ5IGN.js.map → keywords-for-site-QTE332T7.js.map} +0 -0
- /package/dist/{landing-24TVKWTP.js.map → landing-TOYYCWFX.js.map} +0 -0
- /package/dist/{languages-PEGOE365.js.map → languages-TM7SHGRO.js.map} +0 -0
- /package/dist/{leads-6TFBPYMM.js.map → leads-FTWBDLBQ.js.map} +0 -0
- /package/dist/{learn-4LGNFGWH.js.map → learn-3N7M3UHA.js.map} +0 -0
- /package/dist/{line-item-writes-AOTRDB4L.js.map → line-item-writes-VFPXT4W6.js.map} +0 -0
- /package/dist/{line-items-ERV3F2EI.js.map → line-items-HB2N7RKO.js.map} +0 -0
- /package/dist/{link-QZXI5YJP.js.map → link-KAY6VYFH.js.map} +0 -0
- /package/dist/{linkedin-4BKZ5KUE.js.map → linkedin-CDSEMSCF.js.map} +0 -0
- /package/dist/{linkedin-person-ZLXMOG2U.js.map → linkedin-person-HR6HKFUU.js.map} +0 -0
- /package/dist/{list-UCQEHPIR.js.map → list-INU27RQJ.js.map} +0 -0
- /package/dist/{list-7FB6764Q.js.map → list-QWCU77C3.js.map} +0 -0
- /package/dist/{list-QHAYR2IQ.js.map → list-VJ3CVEDW.js.map} +0 -0
- /package/dist/{locations-SHYN5J4Q.js.map → locations-HAXZUHJP.js.map} +0 -0
- /package/dist/{locations-MXWGZIGU.js.map → locations-JFBM4XBL.js.map} +0 -0
- /package/dist/{log-WPZRUMZU.js.map → log-AUN4NOPP.js.map} +0 -0
- /package/dist/{make-VCAS2M2W.js.map → make-B5HDRFCX.js.map} +0 -0
- /package/dist/{map-5EQO2VXB.js.map → map-CCBSITK7.js.map} +0 -0
- /package/dist/{mcp-CKOYL4IU.js.map → mcp-45YWYNYM.js.map} +0 -0
- /package/dist/{media-sources-EDZ2PBJY.js.map → media-sources-N7MBY3GE.js.map} +0 -0
- /package/dist/{members-E2AGJIU6.js.map → members-2P2QCBJO.js.map} +0 -0
- /package/dist/{metrics-25LYUEB7.js.map → metrics-XWHE4LYQ.js.map} +0 -0
- /package/dist/{models-EU3NO4IY.js.map → models-3C6BWHEC.js.map} +0 -0
- /package/dist/{normalize-PHJT5CAD.js.map → normalize-MLRJ6IYU.js.map} +0 -0
- /package/dist/{options-KFABOCWK.js.map → options-6QAJ67XB.js.map} +0 -0
- /package/dist/{organization-BP5DTWL7.js.map → organization-P5LAMNMT.js.map} +0 -0
- /package/dist/{performance-C4M3GJPC.js.map → performance-3PH7UYQN.js.map} +0 -0
- /package/dist/{performance-H3SJD3SN.js.map → performance-6BMFU6IJ.js.map} +0 -0
- /package/dist/{pixels-NLH2PN6Q.js.map → pixels-PMPL63ON.js.map} +0 -0
- /package/dist/{promoted-tweet-writes-ATWAKV6N.js.map → promoted-tweet-writes-EPXZFIUP.js.map} +0 -0
- /package/dist/{promoted-tweets-TWQP3MDP.js.map → promoted-tweets-Q46HUYN6.js.map} +0 -0
- /package/dist/{publish-Q4W7MI7P.js.map → publish-DHDRUTXM.js.map} +0 -0
- /package/dist/{query-TP3L4W7Z.js.map → query-IR3LCFON.js.map} +0 -0
- /package/dist/{reddit-JWZYSUAG.js.map → reddit-2FQOS3B3.js.map} +0 -0
- /package/dist/{refresh-VRBHP4AA.js.map → refresh-VJPKAPJM.js.map} +0 -0
- /package/dist/{release-OV4ZDCXG.js.map → release-O233BAQA.js.map} +0 -0
- /package/dist/{relevant-pages-VJHTUJMB.js.map → relevant-pages-NPUSAV3K.js.map} +0 -0
- /package/dist/{remove-DBCSQSEP.js.map → remove-HNSOYQVB.js.map} +0 -0
- /package/dist/{reopen-5ZOEKYQ5.js.map → reopen-B7KHVN5X.js.map} +0 -0
- /package/dist/{rerun-YMRW6BHM.js.map → rerun-KAB7AXTY.js.map} +0 -0
- /package/dist/{research-M3QPWTYX.js.map → research-I4ZQ4YQ3.js.map} +0 -0
- /package/dist/{research-HUM6CF74.js.map → research-Z2SE775C.js.map} +0 -0
- /package/dist/{reset-BPAFOW6M.js.map → reset-4T6XUNOO.js.map} +0 -0
- /package/dist/{reset-WAY3BSZX.js.map → reset-YHEMD5N5.js.map} +0 -0
- /package/dist/{resolve-AQ6UFEMN.js.map → resolve-5RJD2ELK.js.map} +0 -0
- /package/dist/{retry-3KYFTPXZ.js.map → retry-S3EC6FCA.js.map} +0 -0
- /package/dist/{retry-XO54CIRK.js.map → retry-WKYMY2KB.js.map} +0 -0
- /package/dist/{revenue-PPDMQO3H.js.map → revenue-C4E4PRLL.js.map} +0 -0
- /package/dist/{rules-4ENXG5XW.js.map → rules-JGTKFXM3.js.map} +0 -0
- /package/dist/{rules-add-FTBOOE6L.js.map → rules-add-3DTRLVGR.js.map} +0 -0
- /package/dist/{run-UECCNQ63.js.map → run-2TKYHCN2.js.map} +0 -0
- /package/dist/{run-2ZRTKR7A.js.map → run-TYJLOJW7.js.map} +0 -0
- /package/dist/{scaffold-ad-DFKFUOOZ.js.map → scaffold-ad-RFRUPUKW.js.map} +0 -0
- /package/dist/{scaffold-static-ad-II3TUE5I.js.map → scaffold-static-ad-N5QCJFGP.js.map} +0 -0
- /package/dist/{scaffold-video-IKVYICIY.js.map → scaffold-video-VAG3WN5W.js.map} +0 -0
- /package/dist/{schedule-ERHKGQID.js.map → schedule-6UYJLE5K.js.map} +0 -0
- /package/dist/{scheduled-agents-ICXFV7NP.js.map → scheduled-agents-YEHJ4XIB.js.map} +0 -0
- /package/dist/{schema-NUUZ3MG7.js.map → schema-BCCCNVNO.js.map} +0 -0
- /package/dist/{search-B2APYHV6.js.map → search-J43ZG7W3.js.map} +0 -0
- /package/dist/{select-WVNPJDXP.js.map → select-I2UPGGZ5.js.map} +0 -0
- /package/dist/{set-prompt-KHBDWDXA.js.map → set-prompt-SU7YM7FW.js.map} +0 -0
- /package/dist/{setup-links-R3FH7WK4.js.map → setup-links-VWK4MBI3.js.map} +0 -0
- /package/dist/{shopify-34CFN6SG.js.map → shopify-6KNHPC4R.js.map} +0 -0
- /package/dist/{site-H6AMVMIX.js.map → site-PHTJ5VI3.js.map} +0 -0
- /package/dist/{sources-2VJMHUH7.js.map → sources-255OGK6K.js.map} +0 -0
- /package/dist/{stale-6BEHWQZ7.js.map → stale-KN2ZOJ5T.js.map} +0 -0
- /package/dist/{status-MCMOSDVX.js.map → status-BJH7ODU4.js.map} +0 -0
- /package/dist/{studio-4QOFG7MQ.js.map → studio-C2UVCTDD.js.map} +0 -0
- /package/dist/{sync-WJCJHNET.js.map → sync-MIKA6IM6.js.map} +0 -0
- /package/dist/{sync-definition-THVMBGJR.js.map → sync-definition-LO425HBD.js.map} +0 -0
- /package/dist/{tags-AGFUJ2BB.js.map → tags-DKSJ4E7E.js.map} +0 -0
- /package/dist/{tags-OPMPPJY2.js.map → tags-JEGCEFMZ.js.map} +0 -0
- /package/dist/{tags-VOCMMZ75.js.map → tags-MNHBZ7FH.js.map} +0 -0
- /package/dist/{tags-WK6P5A4D.js.map → tags-S5XY63D3.js.map} +0 -0
- /package/dist/{tags-VGJ76RJT.js.map → tags-VVO3BT66.js.map} +0 -0
- /package/dist/{targeting-criteria-KRIMZRVI.js.map → targeting-criteria-BIIGZTLQ.js.map} +0 -0
- /package/dist/{targets-MCOEM4XQ.js.map → targets-SX3NMYQ3.js.map} +0 -0
- /package/dist/{testimonials-A2AFXSZV.js.map → testimonials-U3KBI3VU.js.map} +0 -0
- /package/dist/{themes-JBX6W4SP.js.map → themes-32CUPT4M.js.map} +0 -0
- /package/dist/{top-companies-ESCRXLSK.js.map → top-companies-DFM4F2SE.js.map} +0 -0
- /package/dist/{transcript-N2ZWN4CI.js.map → transcript-4BSUSOQ4.js.map} +0 -0
- /package/dist/{translate-YGUYVOGA.js.map → translate-JE7CZJ26.js.map} +0 -0
- /package/dist/{triggers-G4EW5XG6.js.map → triggers-SRI27OAP.js.map} +0 -0
- /package/dist/{unlink-DRIVH2GT.js.map → unlink-U7HZ4CYW.js.map} +0 -0
- /package/dist/{unstage-WUQV6QBV.js.map → unstage-JJGZJVHT.js.map} +0 -0
- /package/dist/{update-5GIAKABM.js.map → update-JN75LN32.js.map} +0 -0
- /package/dist/{update-T7PSOZES.js.map → update-PU5LSQ7W.js.map} +0 -0
- /package/dist/{update-COXCKREW.js.map → update-PUWD5HX4.js.map} +0 -0
- /package/dist/{update-NA4M4J5D.js.map → update-R4EEEWT4.js.map} +0 -0
- /package/dist/{upload-IXVEJLZU.js.map → upload-4CUPZI3X.js.map} +0 -0
- /package/dist/{url-options-LHEGWNAH.js.map → url-options-P3UTLYUY.js.map} +0 -0
- /package/dist/{url-params-IL2M2WZI.js.map → url-params-V7KQMWK3.js.map} +0 -0
- /package/dist/{validate-QAJJ7QCJ.js.map → validate-6GRMJKZI.js.map} +0 -0
- /package/dist/{videos-I7PCC2EC.js.map → videos-6ZZ6LLTL.js.map} +0 -0
- /package/dist/{viewer-check-PUAWVYWP.js.map → viewer-check-B36TNSZI.js.map} +0 -0
- /package/dist/{web-O2MCPPB5.js.map → web-H5CWLHRA.js.map} +0 -0
- /package/dist/{winning-ads-FTMP4FUC.js.map → winning-ads-SHNXPIYB.js.map} +0 -0
- /package/dist/{write-commands-NKKNWQIM.js.map → write-commands-RI6UP4YG.js.map} +0 -0
- /package/dist/{x-FPRMRQLQ.js.map → x-CI2XPNBR.js.map} +0 -0
package/dist/chunk-AL6373J7.js
DELETED
|
@@ -1,930 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
fetchRunRecord
|
|
3
|
-
} from "./chunk-77MDZIHK.js";
|
|
4
|
-
import {
|
|
5
|
-
isStaticAdCanvas,
|
|
6
|
-
readRenderState
|
|
7
|
-
} from "./chunk-TNQJDM2P.js";
|
|
8
|
-
import {
|
|
9
|
-
finalOutputLabelsFromCanvas
|
|
10
|
-
} from "./chunk-TQDZQT6U.js";
|
|
11
|
-
import {
|
|
12
|
-
fixBriefNode,
|
|
13
|
-
formatOfAdaptId,
|
|
14
|
-
isCustomersWords,
|
|
15
|
-
isSignatureLine,
|
|
16
|
-
parseDefinitionStrategyFields,
|
|
17
|
-
plateFixPrompt,
|
|
18
|
-
sameTag,
|
|
19
|
-
seriesMemberAd
|
|
20
|
-
} from "./chunk-NJIRVF2B.js";
|
|
21
|
-
import {
|
|
22
|
-
localPathParam
|
|
23
|
-
} from "./chunk-CM2LECNX.js";
|
|
24
|
-
import {
|
|
25
|
-
LOGO_COMPOSITE_ROLE,
|
|
26
|
-
NodeDecl,
|
|
27
|
-
SERIES_LEAD_ROLE,
|
|
28
|
-
STATIC_ADAPT_FORMAT_ROLE,
|
|
29
|
-
STATIC_FIX_ROLE,
|
|
30
|
-
STATIC_FORMAT_ROLE,
|
|
31
|
-
STATIC_LEAD_ROLE,
|
|
32
|
-
STATIC_MASTER_ROLE,
|
|
33
|
-
STATIC_PICK_ROLE,
|
|
34
|
-
STATIC_PLATE_ROLE,
|
|
35
|
-
STATIC_SAFE_FIT_ROLE,
|
|
36
|
-
STATIC_SIZE_ROLE,
|
|
37
|
-
STATIC_VARIANTS_ROLE,
|
|
38
|
-
STATIC_VARIANT_CALL_ROLE,
|
|
39
|
-
VARIANT_PREFILTER_ROLE,
|
|
40
|
-
isPlateCanvas,
|
|
41
|
-
nodesWithRole,
|
|
42
|
-
relaidPictureRole,
|
|
43
|
-
rolesById,
|
|
44
|
-
staticMasterFormat
|
|
45
|
-
} from "./chunk-NQ5O2NCJ.js";
|
|
46
|
-
import {
|
|
47
|
-
isAdSpec,
|
|
48
|
-
readAdSpec
|
|
49
|
-
} from "./chunk-GT76FWES.js";
|
|
50
|
-
import {
|
|
51
|
-
canonicalize
|
|
52
|
-
} from "./chunk-MCJ5I5LR.js";
|
|
53
|
-
import {
|
|
54
|
-
sha256Hex,
|
|
55
|
-
toModelSafeImage
|
|
56
|
-
} from "./chunk-AXSSATJW.js";
|
|
57
|
-
|
|
58
|
-
// src/commands/baker-child.ts
|
|
59
|
-
import { execFile } from "child_process";
|
|
60
|
-
import { promisify } from "util";
|
|
61
|
-
var run = promisify(execFile);
|
|
62
|
-
function lastJsonObject(stdout) {
|
|
63
|
-
for (let at = stdout.lastIndexOf("{"); at >= 0; at = stdout.lastIndexOf("{", at - 1)) {
|
|
64
|
-
if (at > 0 && stdout[at - 1] !== "\n") continue;
|
|
65
|
-
try {
|
|
66
|
-
const parsed = JSON.parse(stdout.slice(at));
|
|
67
|
-
if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) return parsed;
|
|
68
|
-
} catch {
|
|
69
|
-
}
|
|
70
|
-
if (at === 0) break;
|
|
71
|
-
}
|
|
72
|
-
return null;
|
|
73
|
-
}
|
|
74
|
-
async function runBaker(args, signal) {
|
|
75
|
-
const entry = process.argv[1];
|
|
76
|
-
const [file, argv] = entry ? [process.execPath, [...process.execArgv, entry, ...args]] : ["baker", args];
|
|
77
|
-
try {
|
|
78
|
-
const { stdout } = await run(file, argv, { maxBuffer: 32 * 1024 * 1024, ...signal ? { signal } : {} });
|
|
79
|
-
return lastJsonObject(stdout) ?? { ok: false, error: { code: "INTERNAL_ERROR", message: "no answer" } };
|
|
80
|
-
} catch (err) {
|
|
81
|
-
const { stdout = "", stderr = "" } = err;
|
|
82
|
-
return lastJsonObject(stdout) ?? lastJsonObject(stderr) ?? {
|
|
83
|
-
ok: false,
|
|
84
|
-
error: { code: "INTERNAL_ERROR", message: err instanceof Error ? err.message.slice(0, 300) : String(err) }
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
// src/engine/scaffold/static-history.ts
|
|
90
|
-
var PICTURE_ROLES = /* @__PURE__ */ new Set([
|
|
91
|
-
STATIC_VARIANT_CALL_ROLE,
|
|
92
|
-
STATIC_VARIANTS_ROLE,
|
|
93
|
-
VARIANT_PREFILTER_ROLE,
|
|
94
|
-
STATIC_PICK_ROLE,
|
|
95
|
-
STATIC_FIX_ROLE,
|
|
96
|
-
SERIES_LEAD_ROLE,
|
|
97
|
-
STATIC_LEAD_ROLE,
|
|
98
|
-
STATIC_PLATE_ROLE
|
|
99
|
-
]);
|
|
100
|
-
var EDIT_ID = /^edit_(\d+)$/;
|
|
101
|
-
function refNode(ref) {
|
|
102
|
-
return typeof ref === "string" ? ref.match(/^\$ref:([a-z][a-z0-9_]*)\./)?.[1] ?? null : null;
|
|
103
|
-
}
|
|
104
|
-
function depsOf(node) {
|
|
105
|
-
const found = [];
|
|
106
|
-
const walk = (v) => {
|
|
107
|
-
if (typeof v === "string") {
|
|
108
|
-
const id = refNode(v);
|
|
109
|
-
if (id) found.push(id);
|
|
110
|
-
} else if (Array.isArray(v)) v.forEach(walk);
|
|
111
|
-
else if (v && typeof v === "object") Object.values(v).forEach(walk);
|
|
112
|
-
};
|
|
113
|
-
walk(node.inputs);
|
|
114
|
-
walk(node.params);
|
|
115
|
-
return found;
|
|
116
|
-
}
|
|
117
|
-
function ancestors(nodes, id) {
|
|
118
|
-
const byId = new Map(nodes.map((n) => [n.id, n]));
|
|
119
|
-
const seen = /* @__PURE__ */ new Set();
|
|
120
|
-
const visit = (at) => {
|
|
121
|
-
const n = byId.get(at);
|
|
122
|
-
if (!n || seen.has(at)) return;
|
|
123
|
-
seen.add(at);
|
|
124
|
-
for (const dep of depsOf(n)) visit(dep);
|
|
125
|
-
};
|
|
126
|
-
visit(id);
|
|
127
|
-
return nodes.filter((n) => seen.has(n.id));
|
|
128
|
-
}
|
|
129
|
-
var isPicture = (n) => PICTURE_ROLES.has(n.tags?.role ?? "");
|
|
130
|
-
function framingPrefilter(nodes, master) {
|
|
131
|
-
const reads = JSON.stringify(master.inputs ?? {});
|
|
132
|
-
return nodes.find((n) => n.tags?.role === VARIANT_PREFILTER_ROLE && reads.includes(`$ref:${n.id}.`));
|
|
133
|
-
}
|
|
134
|
-
function frameNode(prefilter, id, image) {
|
|
135
|
-
if (!prefilter) return null;
|
|
136
|
-
const { judge_model: _judge, judge_prompt: _prompt, ...params } = prefilter.params ?? {};
|
|
137
|
-
return { ...prefilter, id, inputs: { ...prefilter.inputs, images: [image] }, params };
|
|
138
|
-
}
|
|
139
|
-
function variantIndex(outputs, sha) {
|
|
140
|
-
const images = Array.isArray(outputs?.images) ? outputs.images : [];
|
|
141
|
-
const want = sha.trim().toLowerCase();
|
|
142
|
-
if (!/^[0-9a-f]{8,64}$/.test(want)) return null;
|
|
143
|
-
const hits = images.flatMap((img, i) => typeof img?.sha256 === "string" && img.sha256.startsWith(want) ? [i] : []);
|
|
144
|
-
return hits.length === 1 ? hits[0] ?? null : null;
|
|
145
|
-
}
|
|
146
|
-
function variantSources(nodes) {
|
|
147
|
-
const calls = nodes.filter((n) => n.tags?.role === STATIC_VARIANT_CALL_ROLE);
|
|
148
|
-
const ids = new Set(calls.flatMap((call) => ancestors(nodes, call.id).map((n) => n.id)));
|
|
149
|
-
return nodes.filter((n) => ids.has(n.id));
|
|
150
|
-
}
|
|
151
|
-
function variantFiles(canvas) {
|
|
152
|
-
return variantSources(canvas.nodes).flatMap((n) => {
|
|
153
|
-
const { source, path: path3, expect } = n.params ?? {};
|
|
154
|
-
return n.type === "ingest" && source === "path" && typeof path3 === "string" ? [{ id: n.id, path: path3, expect: String(expect ?? "") }] : [];
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
function declared(n) {
|
|
158
|
-
const { path: _where, ...params } = n.params ?? {};
|
|
159
|
-
const own = n.type === "ingest" && n.params?.source === "path" ? params : n.params ?? {};
|
|
160
|
-
return canonicalize({ type: n.type, inputs: n.inputs ?? {}, params: own });
|
|
161
|
-
}
|
|
162
|
-
function makesSameVariants(current, version, ingested) {
|
|
163
|
-
const sources = variantSources(current.nodes);
|
|
164
|
-
if (sources.length === 0) return false;
|
|
165
|
-
const was = new Map(version.canvas.nodes.map((n) => [n.id, n]));
|
|
166
|
-
const sameDeclaration = sources.every((n) => {
|
|
167
|
-
const before = was.get(n.id);
|
|
168
|
-
return before !== void 0 && declared(before) === declared(n);
|
|
169
|
-
});
|
|
170
|
-
return sameDeclaration && variantFiles(current).every((file) => {
|
|
171
|
-
const asset = version.outputs[file.id]?.asset;
|
|
172
|
-
return typeof asset?.sha256 === "string" && (ingested[file.id] ?? []).includes(asset.sha256);
|
|
173
|
-
});
|
|
174
|
-
}
|
|
175
|
-
function madeThisRun(grown) {
|
|
176
|
-
const master = grown.canvas.nodes.find((n) => n.tags?.role === STATIC_MASTER_ROLE);
|
|
177
|
-
const head = refNode(master?.inputs?.image);
|
|
178
|
-
const nodes = grown.canvas.nodes.filter((n) => !(n.id in grown.pinned) || n.id === head);
|
|
179
|
-
return { ...grown.canvas, nodes };
|
|
180
|
-
}
|
|
181
|
-
function growFromVersion(current, version, growth) {
|
|
182
|
-
if (isPlateCanvas(current)) return growPlateFromVersion(current, version, growth);
|
|
183
|
-
const master = current.nodes.find((n) => n.tags?.role === STATIC_MASTER_ROLE);
|
|
184
|
-
const history = master ? versionHistory(current, version, growth) : null;
|
|
185
|
-
if (!master || !history) return null;
|
|
186
|
-
const { kept, pinned } = history;
|
|
187
|
-
const keptIds = new Set(kept.map((n) => n.id));
|
|
188
|
-
const stage = new Set(
|
|
189
|
-
ancestors(current.nodes, master.id).filter((n) => n.id !== master.id && isPicture(n)).map((n) => n.id)
|
|
190
|
-
);
|
|
191
|
-
const rest = current.nodes.filter((n) => !stage.has(n.id) && !keptIds.has(n.id));
|
|
192
|
-
const top = stepsOnTop({ current, master, kept, rest }, history.picture, growth);
|
|
193
|
-
if (!top) return null;
|
|
194
|
-
const at = rest.findIndex((n) => n.id === master.id);
|
|
195
|
-
const nodes = rest.map((n) => n.id === master.id ? { ...n, inputs: { ...n.inputs, image: top.picture } } : n);
|
|
196
|
-
return {
|
|
197
|
-
canvas: { ...current, nodes: [...nodes.slice(0, at), ...kept, ...top.added, ...nodes.slice(at)] },
|
|
198
|
-
pinned
|
|
199
|
-
};
|
|
200
|
-
}
|
|
201
|
-
function versionHistory(current, version, growth) {
|
|
202
|
-
const was = version.canvas.nodes;
|
|
203
|
-
const image = was.find((n) => n.tags?.role === STATIC_MASTER_ROLE)?.inputs?.image;
|
|
204
|
-
if (typeof image !== "string") return null;
|
|
205
|
-
let picture = image;
|
|
206
|
-
let from = refNode(image) ?? "";
|
|
207
|
-
if (growth.kind === "variant") {
|
|
208
|
-
const variants = was.find((n) => n.tags?.role === STATIC_VARIANTS_ROLE);
|
|
209
|
-
const at = variants ? variantIndex(version.outputs[variants.id], growth.sha256) : null;
|
|
210
|
-
if (!variants || at === null) return null;
|
|
211
|
-
picture = `$ref:${variants.id}.images#${at}`;
|
|
212
|
-
from = variants.id;
|
|
213
|
-
}
|
|
214
|
-
const own = new Set(current.nodes.map((n) => n.id));
|
|
215
|
-
const kept = ancestors(was, from).filter((n) => isPicture(n) || !own.has(n.id));
|
|
216
|
-
const pinned = {};
|
|
217
|
-
for (const n of kept) {
|
|
218
|
-
const outputs = version.outputs[n.id];
|
|
219
|
-
if (!outputs) return null;
|
|
220
|
-
pinned[n.id] = outputs;
|
|
221
|
-
}
|
|
222
|
-
return { kept, pinned, picture };
|
|
223
|
-
}
|
|
224
|
-
function stepsOnTop(at, picture, growth) {
|
|
225
|
-
if (growth.kind === "keep") return { added: [], picture };
|
|
226
|
-
const prefilter = framingPrefilter(at.current.nodes, at.master);
|
|
227
|
-
const step = growth.kind === "edit" ? editStep(at, picture, growth) : chosenStep(picture);
|
|
228
|
-
if (!step) return null;
|
|
229
|
-
const frame = frameNode(prefilter, `${step.id}_frame`, `$ref:${step.id}.images#0`);
|
|
230
|
-
return frame ? { added: [step, frame], picture: `$ref:${frame.id}.image` } : { added: [step], picture: `$ref:${step.id}.images#0` };
|
|
231
|
-
}
|
|
232
|
-
function editStep(at, picture, growth) {
|
|
233
|
-
const n = 1 + Math.max(0, ...at.kept.map((k) => Number(k.id.match(EDIT_ID)?.[1] ?? 0)));
|
|
234
|
-
const template = at.current.nodes.find(
|
|
235
|
-
(v) => v.type === "image_generate" && [STATIC_VARIANT_CALL_ROLE, STATIC_VARIANTS_ROLE].includes(v.tags?.role ?? "")
|
|
236
|
-
);
|
|
237
|
-
if (!template) return null;
|
|
238
|
-
const masterFormat = staticMasterFormat(at.current);
|
|
239
|
-
const brief = fixBriefNode({ nodes: [...at.kept, ...at.rest] }, template, growth.promptJson, {
|
|
240
|
-
instruction: growth.instruction,
|
|
241
|
-
previous: picture,
|
|
242
|
-
...growth.rejected ? { rejected: growth.rejected } : {},
|
|
243
|
-
...growth.rules ? { rules: growth.rules } : {},
|
|
244
|
-
...masterFormat ? { format: masterFormat } : {}
|
|
245
|
-
});
|
|
246
|
-
const { n: _n, ...params } = brief.params ?? {};
|
|
247
|
-
return {
|
|
248
|
-
id: `edit_${n}`,
|
|
249
|
-
type: brief.type,
|
|
250
|
-
...brief.inputs ? { inputs: brief.inputs } : {},
|
|
251
|
-
params,
|
|
252
|
-
tags: { role: STATIC_FIX_ROLE }
|
|
253
|
-
};
|
|
254
|
-
}
|
|
255
|
-
function chosenStep(picture) {
|
|
256
|
-
return { id: "chosen", type: "collect", inputs: { images: [picture] }, tags: { role: STATIC_PICK_ROLE } };
|
|
257
|
-
}
|
|
258
|
-
function platePrefilter(nodes) {
|
|
259
|
-
return nodes.find((n) => n.type === "static_prefilter" && n.tags?.role === VARIANT_PREFILTER_ROLE);
|
|
260
|
-
}
|
|
261
|
-
function shownPlate(nodes, fallback) {
|
|
262
|
-
const size = nodes.find(
|
|
263
|
-
(n) => n.type === "static_format" && n.tags?.role === STATIC_FORMAT_ROLE && typeof n.inputs?.plate === "string" && !n.inputs.plate.startsWith("$ref:plate_wide.")
|
|
264
|
-
);
|
|
265
|
-
return typeof size?.inputs?.plate === "string" ? size.inputs.plate : fallback;
|
|
266
|
-
}
|
|
267
|
-
function askedForPlate(canvas) {
|
|
268
|
-
return canvas.metadata?.master_shape === "plate";
|
|
269
|
-
}
|
|
270
|
-
function adPlate(nodes) {
|
|
271
|
-
return nodes.find(
|
|
272
|
-
(n) => n.type === "static_plate" && n.tags?.role === STATIC_PLATE_ROLE && n.params?.mode === "from_ad"
|
|
273
|
-
);
|
|
274
|
-
}
|
|
275
|
-
function rewired(node, from, to) {
|
|
276
|
-
if (!node.inputs) return node;
|
|
277
|
-
const text = JSON.stringify(node.inputs);
|
|
278
|
-
const next = text.split(JSON.stringify(from)).join(JSON.stringify(to));
|
|
279
|
-
return next === text ? node : { ...node, inputs: JSON.parse(next) };
|
|
280
|
-
}
|
|
281
|
-
function growPlateFromVersion(current, version, growth) {
|
|
282
|
-
const head = platePrefilter(current.nodes);
|
|
283
|
-
const was = platePrefilter(version.canvas.nodes);
|
|
284
|
-
if (head && !isPlateCanvas(version.canvas)) return growFromApprovedAd(current, head, version, growth);
|
|
285
|
-
if (head && !was && adPlate(version.canvas.nodes)) return growFromMovedAd(current, head, version, growth);
|
|
286
|
-
const shown = head && was ? plateShownBy(version, was, growth) : null;
|
|
287
|
-
if (!head || !shown) return null;
|
|
288
|
-
const own = new Set(current.nodes.map((n) => n.id));
|
|
289
|
-
const kept = ancestors(version.canvas.nodes, shown.from).filter((n) => isPicture(n) || !own.has(n.id));
|
|
290
|
-
const pinned = recordedOutputs(kept, version);
|
|
291
|
-
const edit = growth.kind === "edit" ? plateEditStep(current, kept, shown.plate, growth) : null;
|
|
292
|
-
if (!pinned || growth.kind === "edit" && !edit) return null;
|
|
293
|
-
const plate = edit ? `$ref:${edit.id}.images#0` : shown.plate;
|
|
294
|
-
const added = [...shown.chosen ? [shown.chosen] : [], ...edit ? [edit] : []];
|
|
295
|
-
const stage = new Set(
|
|
296
|
-
ancestors(current.nodes, head.id).filter(isPicture).map((n) => n.id)
|
|
297
|
-
);
|
|
298
|
-
const keptIds = new Set(kept.map((n) => n.id));
|
|
299
|
-
const remaining = current.nodes.filter((n) => !stage.has(n.id) && !keptIds.has(n.id));
|
|
300
|
-
const at = afterHead(current.nodes, remaining, head);
|
|
301
|
-
const rest = remaining.map((n) => rewired(n, `$ref:${head.id}.plate`, plate));
|
|
302
|
-
return {
|
|
303
|
-
canvas: { ...current, nodes: [...rest.slice(0, at), ...kept, ...added, ...rest.slice(at)] },
|
|
304
|
-
pinned
|
|
305
|
-
};
|
|
306
|
-
}
|
|
307
|
-
function plateShownBy(version, was, growth) {
|
|
308
|
-
if (growth.kind !== "variant") {
|
|
309
|
-
const plate2 = shownPlate(version.canvas.nodes, `$ref:${was.id}.plate`);
|
|
310
|
-
return { plate: plate2, from: refNode(plate2) ?? was.id };
|
|
311
|
-
}
|
|
312
|
-
const variants = version.canvas.nodes.find((n) => n.tags?.role === STATIC_VARIANTS_ROLE);
|
|
313
|
-
const at = variants ? variantIndex(version.outputs[variants.id], growth.sha256) : null;
|
|
314
|
-
const plates = was.inputs?.plates;
|
|
315
|
-
const plate = at !== null && Array.isArray(plates) ? plates[at] : void 0;
|
|
316
|
-
if (!variants || typeof plate !== "string") return null;
|
|
317
|
-
const { judge_model: _judge, judge_prompt: _prompt, ...params } = was.params ?? {};
|
|
318
|
-
const chosen = {
|
|
319
|
-
id: "chosen",
|
|
320
|
-
type: "static_prefilter",
|
|
321
|
-
inputs: { images: [`$ref:${variants.id}.images#${at}`], plates: [plate] },
|
|
322
|
-
params,
|
|
323
|
-
tags: { role: STATIC_PICK_ROLE }
|
|
324
|
-
};
|
|
325
|
-
return { plate: "$ref:chosen.plate", from: was.id, chosen };
|
|
326
|
-
}
|
|
327
|
-
function recordedOutputs(kept, version) {
|
|
328
|
-
const pinned = {};
|
|
329
|
-
for (const n of kept) {
|
|
330
|
-
const outputs = version.outputs[n.id];
|
|
331
|
-
if (!outputs) return null;
|
|
332
|
-
pinned[n.id] = outputs;
|
|
333
|
-
}
|
|
334
|
-
return pinned;
|
|
335
|
-
}
|
|
336
|
-
function plateEditStep(current, kept, plate, growth) {
|
|
337
|
-
const n = 1 + Math.max(0, ...kept.map((k) => Number(k.id.match(EDIT_ID)?.[1] ?? 0)));
|
|
338
|
-
const template = current.nodes.find((v) => v.type === "image_generate" && v.tags?.role === STATIC_VARIANT_CALL_ROLE);
|
|
339
|
-
if (!template) return null;
|
|
340
|
-
const { n: _n, prompt: _prompt, ...params } = template.params ?? {};
|
|
341
|
-
const wired = template.inputs?.reference;
|
|
342
|
-
const refs = (Array.isArray(wired) ? wired : []).filter(
|
|
343
|
-
(r) => typeof r === "string" && !r.startsWith("$ref:original.")
|
|
344
|
-
);
|
|
345
|
-
return {
|
|
346
|
-
id: `edit_${n}`,
|
|
347
|
-
type: "image_generate",
|
|
348
|
-
inputs: { reference: [plate, ...refs] },
|
|
349
|
-
params: {
|
|
350
|
-
...params,
|
|
351
|
-
prompt: plateFixPrompt(growth.instruction, {
|
|
352
|
-
...growth.rejected ? { rejected: growth.rejected } : {},
|
|
353
|
-
...growth.rules ? { rules: growth.rules } : {}
|
|
354
|
-
})
|
|
355
|
-
},
|
|
356
|
-
tags: { role: STATIC_FIX_ROLE }
|
|
357
|
-
};
|
|
358
|
-
}
|
|
359
|
-
function afterHead(nodes, remaining, head) {
|
|
360
|
-
const headAt = nodes.indexOf(head);
|
|
361
|
-
const at = remaining.findIndex((n) => nodes.indexOf(n) > headAt);
|
|
362
|
-
return at < 0 ? remaining.length : at;
|
|
363
|
-
}
|
|
364
|
-
function urlOf(output) {
|
|
365
|
-
const url = output?.url;
|
|
366
|
-
return typeof url === "string" && /^(?:https?|data):/.test(url) ? url : null;
|
|
367
|
-
}
|
|
368
|
-
function approvedAd(version, growth) {
|
|
369
|
-
if (growth.kind === "variant") {
|
|
370
|
-
const variants = version.canvas.nodes.find((n) => n.tags?.role === STATIC_VARIANTS_ROLE);
|
|
371
|
-
const at = variants ? variantIndex(version.outputs[variants.id], growth.sha256) : null;
|
|
372
|
-
const images = variants ? version.outputs[variants.id]?.images : void 0;
|
|
373
|
-
const url2 = at !== null && Array.isArray(images) ? urlOf(images[at]) : null;
|
|
374
|
-
return url2 ? { url: url2, delivered: false } : null;
|
|
375
|
-
}
|
|
376
|
-
const master = version.canvas.nodes.find((n) => n.tags?.role === STATIC_MASTER_ROLE);
|
|
377
|
-
const url = master ? urlOf(version.outputs[master.id]?.image ?? version.outputs[master.id]?.asset) : null;
|
|
378
|
-
return url ? { url, delivered: true } : null;
|
|
379
|
-
}
|
|
380
|
-
function growFromApprovedAd(current, head, version, growth) {
|
|
381
|
-
if (!askedForPlate(current)) return null;
|
|
382
|
-
const ad = approvedAd(version, growth);
|
|
383
|
-
const parts = adParts(current);
|
|
384
|
-
if (!ad || !parts) return null;
|
|
385
|
-
const { template, lead } = parts;
|
|
386
|
-
const asIs = ad.delivered && growth.kind === "keep" && growth.wordsChanged !== true;
|
|
387
|
-
const approved = {
|
|
388
|
-
id: "approved",
|
|
389
|
-
type: "ingest",
|
|
390
|
-
params: { source: "url", url: ad.url, expect: "image" },
|
|
391
|
-
// Delivered as it is, it is the version's chosen picture to every reader (`withDeliveredSizes`).
|
|
392
|
-
...asIs ? { tags: { role: STATIC_MASTER_ROLE } } : {}
|
|
393
|
-
};
|
|
394
|
-
const words = lead.params?.words ?? {};
|
|
395
|
-
const plate = {
|
|
396
|
-
id: "plate_ad",
|
|
397
|
-
type: "static_plate",
|
|
398
|
-
inputs: { image: "$ref:approved.asset" },
|
|
399
|
-
params: {
|
|
400
|
-
mode: "from_ad",
|
|
401
|
-
aspect_ratio: String(template.params?.aspect_ratio ?? "9:16"),
|
|
402
|
-
paint: {
|
|
403
|
-
model: String(words.model ?? template.params?.model ?? ""),
|
|
404
|
-
...words.quality ? { quality: words.quality } : {}
|
|
405
|
-
},
|
|
406
|
-
...Array.isArray(lead.params?.copy) ? { copy: lead.params.copy } : {},
|
|
407
|
-
...Array.isArray(lead.params?.in_scene) ? { in_scene: lead.params.in_scene } : {}
|
|
408
|
-
},
|
|
409
|
-
tags: { role: STATIC_PLATE_ROLE }
|
|
410
|
-
};
|
|
411
|
-
const edit = growth.kind === "edit" ? plateEditStep(current, [], "$ref:plate_ad.image", growth) : null;
|
|
412
|
-
return {
|
|
413
|
-
canvas: cutFromAd(current, head, parts, { top: [approved, plate, ...edit ? [edit] : []], edit, plate, asIs }),
|
|
414
|
-
pinned: {}
|
|
415
|
-
};
|
|
416
|
-
}
|
|
417
|
-
function growFromMovedAd(current, head, version, growth) {
|
|
418
|
-
const plate = adPlate(version.canvas.nodes);
|
|
419
|
-
const parts = adParts(current);
|
|
420
|
-
if (!plate || !parts || growth.kind === "variant") return null;
|
|
421
|
-
const shown = shownPlate(version.canvas.nodes, `$ref:${plate.id}.image`);
|
|
422
|
-
const own = new Set(current.nodes.map((n) => n.id));
|
|
423
|
-
const kept = ancestors(version.canvas.nodes, refNode(shown) ?? plate.id).filter(
|
|
424
|
-
(n) => isPicture(n) || !own.has(n.id)
|
|
425
|
-
);
|
|
426
|
-
const pinned = recordedOutputs(kept, version);
|
|
427
|
-
const edit = growth.kind === "edit" ? plateEditStep(current, kept, shown, growth) : null;
|
|
428
|
-
if (!pinned || growth.kind === "edit" && !edit) return null;
|
|
429
|
-
const approvedId = refNode(plate.inputs?.image);
|
|
430
|
-
const deliveredAsIs = kept.some((n) => n.id === approvedId && n.tags?.role === STATIC_MASTER_ROLE);
|
|
431
|
-
const asIs = deliveredAsIs && growth.kind === "keep" && growth.wordsChanged !== true;
|
|
432
|
-
const top = kept.map((n) => {
|
|
433
|
-
if (n.id !== approvedId || asIs || !n.tags) return n;
|
|
434
|
-
const { tags: _tags, ...untagged } = n;
|
|
435
|
-
return untagged;
|
|
436
|
-
});
|
|
437
|
-
return {
|
|
438
|
-
canvas: cutFromAd(current, head, parts, { top: [...top, ...edit ? [edit] : []], edit, plate, shown, asIs }),
|
|
439
|
-
pinned
|
|
440
|
-
};
|
|
441
|
-
}
|
|
442
|
-
function adParts(current) {
|
|
443
|
-
const template = current.nodes.find((v) => v.type === "image_generate" && v.tags?.role === STATIC_VARIANT_CALL_ROLE);
|
|
444
|
-
const master = current.nodes.find((n) => n.tags?.role === STATIC_MASTER_ROLE);
|
|
445
|
-
const leadId = refNode(master?.inputs?.image);
|
|
446
|
-
const lead = current.nodes.find((n) => n.id === leadId && n.type === "static_format");
|
|
447
|
-
return template && master && lead ? { template, master, lead } : null;
|
|
448
|
-
}
|
|
449
|
-
function cutFromAd(current, head, parts, at) {
|
|
450
|
-
const painted = `$ref:${at.plate.id}.image`;
|
|
451
|
-
const picture = at.edit ? `$ref:${at.edit.id}.images#0` : at.shown ?? painted;
|
|
452
|
-
const approved = `$ref:${refNode(at.plate.inputs?.image) ?? "approved"}.asset`;
|
|
453
|
-
const stage = new Set(
|
|
454
|
-
ancestors(current.nodes, head.id).filter(isPicture).map((n) => n.id)
|
|
455
|
-
);
|
|
456
|
-
const topIds = new Set(at.top.map((n) => n.id));
|
|
457
|
-
const leadLogo = at.asIs ? current.nodes.find((n) => n.tags?.role === LOGO_COMPOSITE_ROLE && refNode(n.inputs?.image) === parts.master.id) : void 0;
|
|
458
|
-
const dropped = at.asIs ? /* @__PURE__ */ new Set([...stage, parts.master.id, parts.lead.id, ...leadLogo ? [leadLogo.id] : []]) : stage;
|
|
459
|
-
const remaining = current.nodes.filter((n) => !dropped.has(n.id) && !topIds.has(n.id)).map((n) => leadLogo ? rewired(n, `$ref:${leadLogo.id}.image`, approved) : n);
|
|
460
|
-
const insertAt = afterHead(current.nodes, remaining, head);
|
|
461
|
-
const rest = remaining.map((n) => {
|
|
462
|
-
const cut = rewired(n, `$ref:${head.id}.plate`, picture);
|
|
463
|
-
const subjects = picture === painted && cut.type === "static_format" && cut.inputs?.plate === picture && cut.inputs.subjects === void 0 ? { ...cut, inputs: { ...cut.inputs, subjects: `$ref:${at.plate.id}.subjects` } } : cut;
|
|
464
|
-
return at.asIs ? rewired(rewired(subjects, `$ref:${parts.master.id}.image`, approved), `$ref:${parts.lead.id}.image`, approved) : subjects;
|
|
465
|
-
});
|
|
466
|
-
return { ...current, nodes: [...rest.slice(0, insertAt), ...at.top, ...rest.slice(insertAt)] };
|
|
467
|
-
}
|
|
468
|
-
function plainRunGrowth(current, version, opts) {
|
|
469
|
-
if (opts.sameVariants) return { kind: "keep" };
|
|
470
|
-
if (!isPlateCanvas(current) || opts.frameChanged || opts.pictureChanged) return null;
|
|
471
|
-
if (isPlateCanvas(version.canvas) && !adPlate(version.canvas.nodes))
|
|
472
|
-
return opts.wordsChanged ? { kind: "keep" } : null;
|
|
473
|
-
if (!isPlateCanvas(version.canvas) && !askedForPlate(current)) return null;
|
|
474
|
-
return { kind: "keep", wordsChanged: opts.wordsChanged };
|
|
475
|
-
}
|
|
476
|
-
function shownPlateUrl(version) {
|
|
477
|
-
const was = platePrefilter(version.canvas.nodes);
|
|
478
|
-
const painted = adPlate(version.canvas.nodes);
|
|
479
|
-
const fallback = was ? `$ref:${was.id}.plate` : painted ? `$ref:${painted.id}.image` : null;
|
|
480
|
-
if (!fallback || !isPlateCanvas(version.canvas)) return null;
|
|
481
|
-
const ref = shownPlate(version.canvas.nodes, fallback).match(/^\$ref:([a-z][a-z0-9_]*)\.([a-z_]+)(?:#(\d+))?$/);
|
|
482
|
-
if (!ref) return null;
|
|
483
|
-
const [, id = "", slot = "", index] = ref;
|
|
484
|
-
const out = version.outputs[id]?.[slot];
|
|
485
|
-
return urlOf(index === void 0 ? out : Array.isArray(out) ? out[Number(index)] : void 0);
|
|
486
|
-
}
|
|
487
|
-
|
|
488
|
-
// src/commands/canvas/static-fix.ts
|
|
489
|
-
import { readFile } from "fs/promises";
|
|
490
|
-
import path from "path";
|
|
491
|
-
import { z } from "zod";
|
|
492
|
-
async function previousAdImage(canvasRoot, runId, fetchRecord = fetchRunRecord, roles = {}) {
|
|
493
|
-
try {
|
|
494
|
-
const manifest = JSON.parse(await readFile(path.join(canvasRoot, runId, "manifest.json"), "utf8"));
|
|
495
|
-
const byNode = Object.fromEntries(
|
|
496
|
-
Object.entries(manifest.outputs_by_node ?? {}).map(([id, out]) => [id, { ...out, ...roles[id] ? { role: roles[id] } : {} }])
|
|
497
|
-
);
|
|
498
|
-
const local = chosenUrl(byNode);
|
|
499
|
-
if (local) return local;
|
|
500
|
-
} catch {
|
|
501
|
-
}
|
|
502
|
-
const record = await fetchRecord(runId).catch(() => null);
|
|
503
|
-
if (!record) return null;
|
|
504
|
-
return chosenUrl(
|
|
505
|
-
Object.fromEntries(
|
|
506
|
-
record.nodes.map((n) => {
|
|
507
|
-
const role = n.role ?? roles[n.nodeId];
|
|
508
|
-
return [n.nodeId, { images: n.outputs, ...role ? { role } : {} }];
|
|
509
|
-
})
|
|
510
|
-
)
|
|
511
|
-
);
|
|
512
|
-
}
|
|
513
|
-
async function previousDelivered(canvasRoot, runId, finalNode, labels, opts = {}) {
|
|
514
|
-
try {
|
|
515
|
-
const manifest = JSON.parse(await readFile(path.join(canvasRoot, runId, "manifest.json"), "utf8"));
|
|
516
|
-
const images = manifest.outputs_by_node?.[finalNode]?.images ?? [];
|
|
517
|
-
return images.flatMap((image, i) => {
|
|
518
|
-
const local = typeof image.path === "string" ? image.path : null;
|
|
519
|
-
const durable = typeof image.url === "string" ? image.url : null;
|
|
520
|
-
const source = opts.prefer === "url" ? durable ?? local : local ?? durable;
|
|
521
|
-
const format = labels[i];
|
|
522
|
-
return source && format ? [{ format, path: source }] : [];
|
|
523
|
-
});
|
|
524
|
-
} catch {
|
|
525
|
-
return [];
|
|
526
|
-
}
|
|
527
|
-
}
|
|
528
|
-
var CHOSEN = [
|
|
529
|
-
(_, out) => out.role === STATIC_MASTER_ROLE,
|
|
530
|
-
(_, out) => out.role === STATIC_PICK_ROLE,
|
|
531
|
-
(_, out) => out.role === STATIC_FIX_ROLE,
|
|
532
|
-
(id, out) => id === "pick" && out.role === void 0,
|
|
533
|
-
(id, out) => id === "ad" && out.role === void 0
|
|
534
|
-
];
|
|
535
|
-
function urlOf2(out) {
|
|
536
|
-
const url = out.images?.find((o) => typeof o?.url === "string")?.url ?? out.image?.url ?? out.asset?.url;
|
|
537
|
-
return typeof url === "string" ? url : null;
|
|
538
|
-
}
|
|
539
|
-
function chosenUrl(byNode) {
|
|
540
|
-
const entries = Object.entries(byNode).filter(([, out]) => out.role !== STATIC_VARIANTS_ROLE);
|
|
541
|
-
for (const matches of CHOSEN) {
|
|
542
|
-
for (const [id, out] of entries) {
|
|
543
|
-
if (!matches(id, out)) continue;
|
|
544
|
-
const url = urlOf2(out);
|
|
545
|
-
if (url) return url;
|
|
546
|
-
}
|
|
547
|
-
}
|
|
548
|
-
return null;
|
|
549
|
-
}
|
|
550
|
-
function correctedUrl(byNode) {
|
|
551
|
-
const editNumber = (id) => Number(id.match(/^edit_(\d+)$/)?.[1] ?? 0);
|
|
552
|
-
const entries = Object.entries(byNode).sort(([a], [b]) => editNumber(b) - editNumber(a));
|
|
553
|
-
for (const [id, out] of entries) {
|
|
554
|
-
if (id === "fix" || id === "chosen" || out.role === STATIC_FIX_ROLE) {
|
|
555
|
-
const url = urlOf2(out);
|
|
556
|
-
if (url) return url;
|
|
557
|
-
}
|
|
558
|
-
}
|
|
559
|
-
return null;
|
|
560
|
-
}
|
|
561
|
-
async function fetchGraph(url) {
|
|
562
|
-
const res = await fetch(url);
|
|
563
|
-
return res.ok ? res.json() : null;
|
|
564
|
-
}
|
|
565
|
-
var HISTORY = { record: fetchRunRecord, graph: fetchGraph };
|
|
566
|
-
var VersionGraph = z.object({ nodes: z.array(NodeDecl) });
|
|
567
|
-
var VersionManifest = z.object({
|
|
568
|
-
canvas: VersionGraph,
|
|
569
|
-
outputs_by_node: z.record(z.string(), z.record(z.string(), z.unknown()))
|
|
570
|
-
});
|
|
571
|
-
async function versionRun(canvasRoot, runId, sources = HISTORY) {
|
|
572
|
-
try {
|
|
573
|
-
const manifest = VersionManifest.safeParse(JSON.parse(await readFile(path.join(canvasRoot, runId, "manifest.json"), "utf8")));
|
|
574
|
-
if (manifest.success) return { canvas: manifest.data.canvas, outputs: manifest.data.outputs_by_node };
|
|
575
|
-
} catch {
|
|
576
|
-
}
|
|
577
|
-
const record = await sources.record(runId).catch(() => null);
|
|
578
|
-
const graph = record?.graphUrl ? await sources.graph(record.graphUrl).catch(() => null) : null;
|
|
579
|
-
const canvas = VersionGraph.safeParse(graph);
|
|
580
|
-
return record && canvas.success ? { canvas: canvas.data, outputs: outputsByNode(record.nodes) } : null;
|
|
581
|
-
}
|
|
582
|
-
async function ingestedNow(files, canvasDir) {
|
|
583
|
-
const entries = await Promise.all(
|
|
584
|
-
files.map(async (file) => {
|
|
585
|
-
const bytes = await readFile(path.resolve(canvasDir, file.path)).catch(() => null);
|
|
586
|
-
if (!bytes) return [file.id, []];
|
|
587
|
-
const own = sha256Hex(bytes);
|
|
588
|
-
if (file.expect !== "image") return [file.id, [own]];
|
|
589
|
-
const raster = await toModelSafeImage(bytes).catch(() => null);
|
|
590
|
-
return [file.id, raster ? [.../* @__PURE__ */ new Set([own, sha256Hex(raster.bytes)])] : [own]];
|
|
591
|
-
})
|
|
592
|
-
);
|
|
593
|
-
return Object.fromEntries(entries);
|
|
594
|
-
}
|
|
595
|
-
function outputsByNode(nodes) {
|
|
596
|
-
const byNode = {};
|
|
597
|
-
for (const node of nodes) {
|
|
598
|
-
const outputs = {};
|
|
599
|
-
for (const out of node.outputs) {
|
|
600
|
-
const [slot = "", index] = String(out.slot ?? "").split("#");
|
|
601
|
-
const { slot: _slot, label: _label, durationMs, ...ref } = out;
|
|
602
|
-
const asset = { ...ref, ...typeof durationMs === "number" ? { duration_ms: durationMs } : {} };
|
|
603
|
-
if (index === void 0) outputs[slot] = asset;
|
|
604
|
-
else {
|
|
605
|
-
const list = Array.isArray(outputs[slot]) ? outputs[slot] : [];
|
|
606
|
-
list[Number(index)] = asset;
|
|
607
|
-
outputs[slot] = list;
|
|
608
|
-
}
|
|
609
|
-
}
|
|
610
|
-
if (Object.keys(outputs).length > 0) byNode[node.nodeId] = outputs;
|
|
611
|
-
}
|
|
612
|
-
return byNode;
|
|
613
|
-
}
|
|
614
|
-
async function correctedPicture(canvasRoot, runId, fetchRecord = fetchRunRecord) {
|
|
615
|
-
try {
|
|
616
|
-
const manifest = JSON.parse(await readFile(path.join(canvasRoot, runId, "manifest.json"), "utf8"));
|
|
617
|
-
if (manifest.outputs_by_node) return correctedUrl(manifest.outputs_by_node);
|
|
618
|
-
} catch {
|
|
619
|
-
}
|
|
620
|
-
const record = await fetchRecord(runId).catch(() => null);
|
|
621
|
-
if (!record) return null;
|
|
622
|
-
return correctedUrl(
|
|
623
|
-
Object.fromEntries(record.nodes.map((n) => [n.nodeId, { images: n.outputs, ...n.role ? { role: n.role } : {} }]))
|
|
624
|
-
);
|
|
625
|
-
}
|
|
626
|
-
function pictureRecord(runId, opts) {
|
|
627
|
-
const chosen = opts.chose === true || opts.keeps === true && keepsChosen(opts.of, opts.from);
|
|
628
|
-
return { runId, ...chosen ? { chosen: true } : {}, ...opts.redrawn ? { redrawn: true } : {} };
|
|
629
|
-
}
|
|
630
|
-
function keepsChosen(picture, from) {
|
|
631
|
-
return picture?.chosen === true && from !== void 0 && picture.runId === from;
|
|
632
|
-
}
|
|
633
|
-
function relaysSizesOnly(canvas, ids) {
|
|
634
|
-
const roles = rolesById(canvas);
|
|
635
|
-
const sizing = /* @__PURE__ */ new Set([
|
|
636
|
-
STATIC_ADAPT_FORMAT_ROLE,
|
|
637
|
-
STATIC_SIZE_ROLE,
|
|
638
|
-
STATIC_SAFE_FIT_ROLE,
|
|
639
|
-
STATIC_FORMAT_ROLE,
|
|
640
|
-
STATIC_PLATE_ROLE
|
|
641
|
-
]);
|
|
642
|
-
return ids.length > 0 && ids.every((id) => sizing.has(roles[id] ?? ""));
|
|
643
|
-
}
|
|
644
|
-
var SHA_PREFIX = /^[0-9a-f]{8,64}$/;
|
|
645
|
-
function matchVariant(outputs, sha) {
|
|
646
|
-
const hits = outputs.filter((o) => typeof o?.sha256 === "string" && o.sha256.startsWith(sha) && typeof o.url === "string");
|
|
647
|
-
const urls = [...new Set(hits.map((o) => o.url))];
|
|
648
|
-
return urls.length === 1 ? urls[0] : null;
|
|
649
|
-
}
|
|
650
|
-
async function variantImage(canvasRoot, runId, sha256, fetchRecord = fetchRunRecord, roles = {}) {
|
|
651
|
-
const sha = sha256.trim().toLowerCase();
|
|
652
|
-
if (!SHA_PREFIX.test(sha)) return null;
|
|
653
|
-
try {
|
|
654
|
-
const manifest = JSON.parse(await readFile(path.join(canvasRoot, runId, "manifest.json"), "utf8"));
|
|
655
|
-
for (const [id, out] of Object.entries(manifest.outputs_by_node ?? {})) {
|
|
656
|
-
if (roles[id] !== STATIC_VARIANTS_ROLE) continue;
|
|
657
|
-
const url = matchVariant(out.images ?? [], sha);
|
|
658
|
-
if (url) return url;
|
|
659
|
-
}
|
|
660
|
-
} catch {
|
|
661
|
-
}
|
|
662
|
-
const record = await fetchRecord(runId).catch(() => null);
|
|
663
|
-
const variants = record?.nodes.find((n) => n.role === STATIC_VARIANTS_ROLE);
|
|
664
|
-
return variants ? matchVariant(variants.outputs, sha) : null;
|
|
665
|
-
}
|
|
666
|
-
|
|
667
|
-
// src/commands/canvas/series-member.ts
|
|
668
|
-
import { existsSync } from "fs";
|
|
669
|
-
import { readdir, readFile as readFile2, writeFile } from "fs/promises";
|
|
670
|
-
import path2 from "path";
|
|
671
|
-
var creativeDir = (root, slug) => path2.join(root, "src", "creatives", slug);
|
|
672
|
-
var canvasFile = (root, slug) => path2.join(creativeDir(root, slug), `${slug}.canvas.json`);
|
|
673
|
-
async function seriesFieldsOf(root, slug) {
|
|
674
|
-
const raw = await readFile2(path2.join(creativeDir(root, slug), "_definition.md"), "utf8").catch(() => null);
|
|
675
|
-
return raw === null ? {} : parseDefinitionStrategyFields(raw);
|
|
676
|
-
}
|
|
677
|
-
async function seriesLeadOf(root, slug) {
|
|
678
|
-
return (await seriesFieldsOf(root, slug)).seriesLead ?? null;
|
|
679
|
-
}
|
|
680
|
-
async function translatedInto(root, slug, lead) {
|
|
681
|
-
const own = (await seriesFieldsOf(root, slug)).language;
|
|
682
|
-
const leads = (await seriesFieldsOf(root, lead)).language;
|
|
683
|
-
return own && !(leads && sameTag(own, leads)) ? own : void 0;
|
|
684
|
-
}
|
|
685
|
-
var SERIES_DEPTH = 3;
|
|
686
|
-
async function seriesLeadsAbove(root, slug) {
|
|
687
|
-
const leads = [];
|
|
688
|
-
let at = await seriesLeadOf(root, slug);
|
|
689
|
-
while (at && at !== slug && !leads.includes(at) && leads.length < SERIES_DEPTH) {
|
|
690
|
-
leads.push(at);
|
|
691
|
-
at = await seriesLeadOf(root, at);
|
|
692
|
-
}
|
|
693
|
-
return leads;
|
|
694
|
-
}
|
|
695
|
-
async function seriesMembers(root, lead) {
|
|
696
|
-
const slugs = await readdir(path2.join(root, "src", "creatives")).catch(() => []);
|
|
697
|
-
const members = [];
|
|
698
|
-
for (const slug of slugs.sort()) {
|
|
699
|
-
if (slug !== lead && await seriesLeadOf(root, slug) === lead) members.push(slug);
|
|
700
|
-
}
|
|
701
|
-
return members;
|
|
702
|
-
}
|
|
703
|
-
function refusal(code, message, fix) {
|
|
704
|
-
return { refused: { code, message, fix } };
|
|
705
|
-
}
|
|
706
|
-
async function leadVersion(root, lead, fetchRecord = fetchRunRecord) {
|
|
707
|
-
const file = canvasFile(root, lead);
|
|
708
|
-
const canvas = existsSync(file) ? JSON.parse(await readFile2(file, "utf8")) : null;
|
|
709
|
-
if (!canvas || !isStaticAdCanvas(canvas)) {
|
|
710
|
-
return refusal(
|
|
711
|
-
"series_lead_not_found",
|
|
712
|
-
`The lead ad "${lead}" is not a static ad in this workspace.`,
|
|
713
|
-
"Name a static ad of this workspace as the lead: make it with `baker creatives make <idea>` and render it first."
|
|
714
|
-
);
|
|
715
|
-
}
|
|
716
|
-
const canvasRoot = path2.join(root, "canvas");
|
|
717
|
-
const state = await readRenderState(canvasRoot, lead);
|
|
718
|
-
const runId = state.rendered?.runId;
|
|
719
|
-
if (!runId) {
|
|
720
|
-
return refusal(
|
|
721
|
-
"series_lead_not_rendered",
|
|
722
|
-
`The lead ad "${lead}" has no finished version yet: every ad of its series is made from it.`,
|
|
723
|
-
`Render the lead first and get it ready: baker canvas run --slug ${lead}. Then make the series.`
|
|
724
|
-
);
|
|
725
|
-
}
|
|
726
|
-
if ((state.blocking ?? []).length > 0) {
|
|
727
|
-
return refusal(
|
|
728
|
-
"series_lead_not_ready",
|
|
729
|
-
`The lead ad "${lead}" still needs fixes (${(state.blocking ?? []).join(" | ")}): the series would copy them.`,
|
|
730
|
-
`Correct the lead until its verdict is ready (baker canvas run --slug ${lead}, or --fix "<what to change>"), then run the series again.`
|
|
731
|
-
);
|
|
732
|
-
}
|
|
733
|
-
const record = () => fetchRecord(runId).catch(() => null);
|
|
734
|
-
const picture = await previousAdImage(canvasRoot, runId, record, { ...rolesById(canvas), ...relaidPictureRole(canvas) });
|
|
735
|
-
const sizes = await deliveredSizes(canvasRoot, runId, canvas, record);
|
|
736
|
-
const version = isPlateCanvas(canvas) ? await versionRun(canvasRoot, runId).catch(() => null) : null;
|
|
737
|
-
const plate = version ? shownPlateUrl(version) : null;
|
|
738
|
-
if (!picture || isPlateCanvas(canvas) && !plate) {
|
|
739
|
-
return refusal(
|
|
740
|
-
"series_lead_not_rendered",
|
|
741
|
-
`The finished picture of the lead's version (${runId}) is not available.`,
|
|
742
|
-
`Render the lead again (baker canvas run --slug ${lead}), then run the series.`
|
|
743
|
-
);
|
|
744
|
-
}
|
|
745
|
-
const drawn = state.prompt ?? JSON.parse(await readFile2(path2.join(creativeDir(root, lead), "prompt.json"), "utf8"));
|
|
746
|
-
const copy = readAdSpec(drawn).copy.map((l) => ({ text: l.text, ...l.role ? { role: l.role } : {} }));
|
|
747
|
-
return { lead: { slug: lead, runId, copy, picture, sizes, ...plate ? { plate } : {} }, canvas, spec: drawn };
|
|
748
|
-
}
|
|
749
|
-
async function deliveredSizes(canvasRoot, runId, canvas, record) {
|
|
750
|
-
const masterReads = String(nodesWithRole(canvas, STATIC_MASTER_ROLE)[0]?.inputs?.image ?? "");
|
|
751
|
-
const wanted = /* @__PURE__ */ new Set([
|
|
752
|
-
...nodesWithRole(canvas, STATIC_ADAPT_FORMAT_ROLE).flatMap((n) => formatOfAdaptId(n.id) ?? []),
|
|
753
|
-
...nodesWithRole(canvas, STATIC_FORMAT_ROLE).flatMap((n) => {
|
|
754
|
-
const format = n.params?.format;
|
|
755
|
-
return typeof format === "string" && !masterReads.startsWith(`$ref:${n.id}.`) ? [format] : [];
|
|
756
|
-
})
|
|
757
|
-
]);
|
|
758
|
-
const labels = finalOutputLabelsFromCanvas(canvas);
|
|
759
|
-
const local = await previousDelivered(canvasRoot, runId, labels?.nodeId ?? "final", labels?.labels ?? [], {
|
|
760
|
-
prefer: "url"
|
|
761
|
-
});
|
|
762
|
-
const found = local.length > 0 ? local : ((await record())?.finalOutputs ?? []).flatMap(
|
|
763
|
-
(o) => o.label && o.url ? [{ format: o.label, path: o.url }] : []
|
|
764
|
-
);
|
|
765
|
-
return Object.fromEntries(found.filter((d) => wanted.has(d.format)).map((d) => [d.format, d.path]));
|
|
766
|
-
}
|
|
767
|
-
function rebaseLeadPaths(canvas, leadDir, memberDir) {
|
|
768
|
-
const out = structuredClone(canvas);
|
|
769
|
-
for (const node of out.nodes ?? []) {
|
|
770
|
-
const key = localPathParam(node);
|
|
771
|
-
const value = key ? node.params?.[key] : void 0;
|
|
772
|
-
if (!key || !node.params || typeof value !== "string" || node.id === "prompt" || path2.isAbsolute(value)) continue;
|
|
773
|
-
const rel = path2.relative(memberDir, path2.resolve(leadDir, value)).split(path2.sep).join("/");
|
|
774
|
-
node.params[key] = rel.startsWith(".") ? rel : `./${rel}`;
|
|
775
|
-
}
|
|
776
|
-
return out;
|
|
777
|
-
}
|
|
778
|
-
var DESIGN_FIELDS = [
|
|
779
|
-
"scene",
|
|
780
|
-
"brand",
|
|
781
|
-
"colors",
|
|
782
|
-
"references",
|
|
783
|
-
"logo",
|
|
784
|
-
"logo_position",
|
|
785
|
-
"third_party_brands",
|
|
786
|
-
"formats",
|
|
787
|
-
"direction"
|
|
788
|
-
];
|
|
789
|
-
function seriesDesignOf(spec) {
|
|
790
|
-
try {
|
|
791
|
-
const read = readAdSpec(spec);
|
|
792
|
-
return JSON.stringify(DESIGN_FIELDS.map((key) => read[key] ?? null));
|
|
793
|
-
} catch {
|
|
794
|
-
return null;
|
|
795
|
-
}
|
|
796
|
-
}
|
|
797
|
-
function withLeadDesign(memberSpec, leadSpec) {
|
|
798
|
-
const asSpec = (spec) => isAdSpec(spec) ? spec : readAdSpec(spec);
|
|
799
|
-
const lead = asSpec(leadSpec);
|
|
800
|
-
const out = { ...asSpec(memberSpec) };
|
|
801
|
-
for (const key of DESIGN_FIELDS) {
|
|
802
|
-
if (key in lead) out[key] = lead[key];
|
|
803
|
-
else delete out[key];
|
|
804
|
-
}
|
|
805
|
-
return out;
|
|
806
|
-
}
|
|
807
|
-
function unchangedCopyRefusal(lead, memberSpec) {
|
|
808
|
-
const words = (copy2) => copy2.map((l) => l.text.trim()).join("\n");
|
|
809
|
-
let copy;
|
|
810
|
-
try {
|
|
811
|
-
copy = readAdSpec(memberSpec).copy;
|
|
812
|
-
} catch {
|
|
813
|
-
return null;
|
|
814
|
-
}
|
|
815
|
-
if (words(copy) !== words(lead.copy)) return null;
|
|
816
|
-
return refusal(
|
|
817
|
-
"series_copy_unchanged",
|
|
818
|
-
`This ad's words are still the lead's ("${lead.copy[0]?.text ?? ""}"): it would render the lead again.`,
|
|
819
|
-
"Write this ad's own words in its prompt.json `copy`, one line for each of the lead's (same roles), saying this ad's message. Keep everything else: the design is the lead's."
|
|
820
|
-
);
|
|
821
|
-
}
|
|
822
|
-
function changedCustomerWordsRefusal(lead, memberSpec) {
|
|
823
|
-
let copy;
|
|
824
|
-
try {
|
|
825
|
-
copy = readAdSpec(memberSpec).copy;
|
|
826
|
-
} catch {
|
|
827
|
-
return null;
|
|
828
|
-
}
|
|
829
|
-
const said = new Set(copy.map((l) => l.text.trim()));
|
|
830
|
-
const changed = lead.copy.filter((line, i) => {
|
|
831
|
-
const below = lead.copy[i + 1];
|
|
832
|
-
const theirs = isCustomersWords(line) || below !== void 0 && isSignatureLine(below);
|
|
833
|
-
return theirs && !said.has(line.text.trim());
|
|
834
|
-
});
|
|
835
|
-
if (changed.length === 0) return null;
|
|
836
|
-
return refusal(
|
|
837
|
-
"series_customer_words_changed",
|
|
838
|
-
`This translation changed a customer's own words: ${changed.map((l) => `"${l.text}"`).join(", ")} is how they said it, and translated it would be words they never said under their name.`,
|
|
839
|
-
`Put ${changed.length === 1 ? "that line" : "those lines"} back in this ad's prompt.json exactly as the lead has ${changed.length === 1 ? "it" : "them"}: ${changed.map((l) => `"${l.text}"`).join(", ")}. Translate only the advertiser's own lines.`
|
|
840
|
-
);
|
|
841
|
-
}
|
|
842
|
-
function designChangedRefusal(lead, leads) {
|
|
843
|
-
const chain = leads.length > 0 ? leads : [lead];
|
|
844
|
-
const design = chain[chain.length - 1] ?? lead;
|
|
845
|
-
const runs = [...chain].reverse().map((l) => `baker canvas run --series ${l}`);
|
|
846
|
-
return refusal(
|
|
847
|
-
"series_design_changed",
|
|
848
|
-
`This ad's design (its scene, colours, pictures or logo in prompt.json) was changed on the ad itself, but every ad of the series has the design of "${design}".`,
|
|
849
|
-
`Make the change once, on ${design}: edit src/creatives/${design}/prompt.json (or baker canvas run --slug ${design} --fix "<the change>"), then ${runs.join(", then ")}: every ad takes the new design, its own words kept. Only this ad's copy belongs in its own prompt.json.`
|
|
850
|
-
);
|
|
851
|
-
}
|
|
852
|
-
async function writeSeriesMemberCanvas(root, slug, opts = {}) {
|
|
853
|
-
const lead = await seriesLeadOf(root, slug);
|
|
854
|
-
if (!lead) return null;
|
|
855
|
-
const version = await leadVersion(root, lead, opts.fetchRecord);
|
|
856
|
-
if ("refused" in version) return version;
|
|
857
|
-
const dir = creativeDir(root, slug);
|
|
858
|
-
const promptPath = path2.join(dir, "prompt.json");
|
|
859
|
-
let memberSpec = JSON.parse(await readFile2(promptPath, "utf8").catch(() => "null"));
|
|
860
|
-
const unchanged = opts.leadWords ? null : unchangedCopyRefusal(version.lead, memberSpec);
|
|
861
|
-
if (unchanged) return unchanged;
|
|
862
|
-
const language = await translatedInto(root, slug, lead);
|
|
863
|
-
const rewritten = language ? changedCustomerWordsRefusal(version.lead, memberSpec) : null;
|
|
864
|
-
if (rewritten) return rewritten;
|
|
865
|
-
const file = canvasFile(root, slug);
|
|
866
|
-
const before = await readFile2(file, "utf8").catch(() => null);
|
|
867
|
-
const leadDesign = seriesDesignOf(version.spec);
|
|
868
|
-
const ownDesign = seriesDesignOf(memberSpec);
|
|
869
|
-
const previous = before ? JSON.parse(before).metadata?.series : void 0;
|
|
870
|
-
const synced = previous?.design;
|
|
871
|
-
let designFromLead = false;
|
|
872
|
-
if (leadDesign !== null && ownDesign !== null && ownDesign !== leadDesign) {
|
|
873
|
-
if (!opts.takeLeadDesign && ownDesign !== synced) {
|
|
874
|
-
return designChangedRefusal(lead, await seriesLeadsAbove(root, slug));
|
|
875
|
-
}
|
|
876
|
-
memberSpec = withLeadDesign(memberSpec, version.spec);
|
|
877
|
-
await writeFile(promptPath, `${JSON.stringify(memberSpec, null, 2)}
|
|
878
|
-
`, "utf8");
|
|
879
|
-
designFromLead = true;
|
|
880
|
-
}
|
|
881
|
-
const canvas = seriesMemberAd(
|
|
882
|
-
rebaseLeadPaths(version.canvas, creativeDir(root, lead), dir),
|
|
883
|
-
{ ...version.lead, ...leadDesign !== null ? { design: leadDesign } : {} },
|
|
884
|
-
language ? { language } : {}
|
|
885
|
-
);
|
|
886
|
-
const text = `${JSON.stringify(canvas, null, 2)}
|
|
887
|
-
`;
|
|
888
|
-
if (before !== text) await writeFile(file, text, "utf8");
|
|
889
|
-
const madeFrom = (await readRenderState(path2.join(root, "canvas"), slug)).seriesLeadRun;
|
|
890
|
-
const newLeadVersion = madeFrom !== void 0 && madeFrom !== version.lead.runId;
|
|
891
|
-
return { lead, leadRunId: version.lead.runId, canvasPath: file, written: before !== text, designFromLead, newLeadVersion };
|
|
892
|
-
}
|
|
893
|
-
function seriesRunHints(slug, series) {
|
|
894
|
-
const leads = series.leads?.length ? series.leads : series.lead ? [series.lead] : [];
|
|
895
|
-
const root = leads[leads.length - 1];
|
|
896
|
-
if (root) {
|
|
897
|
-
const runs = [...leads].reverse().map((lead) => `baker canvas run --series ${lead}`);
|
|
898
|
-
return [
|
|
899
|
-
`This ad is one of the series led by ${leads[0]}: its picture is ${root}'s with its own words. A change to what every ad shares (the picture, colours, layout, logo) is made once, on ${root} (src/creatives/${root}/prompt.json, or baker canvas run --slug ${root} --fix "<the change>"), then ${runs.join(", then ")}. Correct only this ad's own words or its own defect here.`
|
|
900
|
-
];
|
|
901
|
-
}
|
|
902
|
-
if (series.members.length === 0) return [];
|
|
903
|
-
return [
|
|
904
|
-
`This ad leads a series of ${series.members.length + 1}: baker canvas run --series ${slug} makes ${series.members.join(", ")} again from this version, each with its own words. Until then they show the lead's earlier version; an ad of the series run by itself (baker canvas run --slug ${series.members[0]}) is made from this version too, its design included.`
|
|
905
|
-
];
|
|
906
|
-
}
|
|
907
|
-
|
|
908
|
-
export {
|
|
909
|
-
runBaker,
|
|
910
|
-
variantFiles,
|
|
911
|
-
makesSameVariants,
|
|
912
|
-
madeThisRun,
|
|
913
|
-
growFromVersion,
|
|
914
|
-
plainRunGrowth,
|
|
915
|
-
previousAdImage,
|
|
916
|
-
previousDelivered,
|
|
917
|
-
versionRun,
|
|
918
|
-
ingestedNow,
|
|
919
|
-
correctedPicture,
|
|
920
|
-
pictureRecord,
|
|
921
|
-
keepsChosen,
|
|
922
|
-
relaysSizesOnly,
|
|
923
|
-
variantImage,
|
|
924
|
-
seriesLeadsAbove,
|
|
925
|
-
seriesMembers,
|
|
926
|
-
leadVersion,
|
|
927
|
-
writeSeriesMemberCanvas,
|
|
928
|
-
seriesRunHints
|
|
929
|
-
};
|
|
930
|
-
//# sourceMappingURL=chunk-AL6373J7.js.map
|