@koda-sl/baker-cli 0.554.0 → 0.556.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -4
- package/dist/account-H5CL6KUY.js +82 -0
- package/dist/account-assets-QMKT5AT7.js +290 -0
- package/dist/account-level-BELF6JHB.js +611 -0
- package/dist/account-reads-T6GTSAXE.js +219 -0
- package/dist/account-users-ZGJCVGX4.js +64 -0
- package/dist/accounts-EXQNPSYH.js +701 -0
- package/dist/accounts-GNVLFZ3X.js +80 -0
- package/dist/actions-Q2BMP27K.js +55 -0
- package/dist/activecampaign-SJO2YK6M.js +938 -0
- package/dist/add-Q3FGYX5Q.js +305 -0
- package/dist/add-YGQBSEVK.js +107 -0
- package/dist/ads-CWKKIYD6.js +48 -0
- package/dist/ads-H5AEYIY3.js +120 -0
- package/dist/adsets-BUIT7HF2.js +182 -0
- package/dist/advertisers-ZAHXMIAT.js +123 -0
- package/dist/analytics-QW5ZXDJR.js +447 -0
- package/dist/analytics-XPU5SANS.js +2437 -0
- package/dist/animate-Q43SOWB4.js +480 -0
- package/dist/asset-writes-JVFE457M.js +50 -0
- package/dist/assign-HJ2NXW4W.js +80 -0
- package/dist/audience-size-IM3N6W7C.js +76 -0
- package/dist/audience-writes-DWSCHYQF.js +327 -0
- package/dist/audiences-PYBJU2GV.js +106 -0
- package/dist/audit-N3LAQMD4.js +154 -0
- package/dist/autocomplete-FBTPT5MA.js +114 -0
- package/dist/avatars-3OMFIKOJ.js +38 -0
- package/dist/bid-pricing-UUAC4GTQ.js +103 -0
- package/dist/brand-IZYD5SBJ.js +22 -0
- package/dist/brief-TNOKTNFJ.js +543 -0
- package/dist/campaign-groups-3IUOLEK2.js +99 -0
- package/dist/campaign-writes-Y7QNFOE7.js +168 -0
- package/dist/campaigns-2Z6WXIVA.js +130 -0
- package/dist/campaigns-B2AUW4TV.js +111 -0
- package/dist/campaigns-IDEA3LOK.js +113 -0
- package/dist/canvas-PVNQ7YWV.js +46 -0
- package/dist/capabilities-FVMMLKPY.js +147 -0
- package/dist/catalog-URTZYAPU.js +66 -0
- package/dist/catalogs-OEUNVE4N.js +782 -0
- package/dist/chatgpt-6KBW7F5S.js +47 -0
- package/dist/chats-EENMDXWZ.js +449 -0
- package/dist/check-7735BPTR.js +107 -0
- package/dist/chunk-2QGGI7MF.js +831 -0
- package/dist/chunk-3OMFSYQ3.js +344 -0
- package/dist/chunk-4N3Y5QWW.js +29 -0
- package/dist/chunk-4N3Y5QWW.js.map +1 -0
- package/dist/chunk-65CQYRMK.js +98 -0
- package/dist/chunk-6MZFOMLU.js +225 -0
- package/dist/chunk-757ZFIL4.js +910 -0
- package/dist/chunk-75HAGIH6.js +61 -0
- package/dist/chunk-7BVRFQN4.js +430 -0
- package/dist/chunk-7TDJCDKT.js +163 -0
- package/dist/chunk-7WDH6OKW.js +1902 -0
- package/dist/chunk-AL4MRNYI.js +709 -0
- package/dist/chunk-AMM4JMSN.js +91 -0
- package/dist/chunk-AU3IMZZC.js +19 -0
- package/dist/chunk-BMNOMOWP.js +156 -0
- package/dist/chunk-BS2MC62Y.js +203 -0
- package/dist/chunk-C6PWVZQE.js +103 -0
- package/dist/chunk-CDTAKCJR.js +178 -0
- package/dist/chunk-CH44XVPE.js +142 -0
- package/dist/chunk-CJWLDKFO.js +494 -0
- package/dist/chunk-DWPOAU4Z.js +5471 -0
- package/dist/chunk-EENYLJUN.js +225 -0
- package/dist/chunk-EGVWSAWY.js +83 -0
- package/dist/chunk-EGVWSAWY.js.map +1 -0
- package/dist/chunk-EJBLF2LI.js +167 -0
- package/dist/chunk-EJMPKO6V.js +287 -0
- package/dist/chunk-EKXLJRO3.js +197 -0
- package/dist/chunk-EL3TDR5S.js +1744 -0
- package/dist/chunk-GRDZWZKQ.js +249 -0
- package/dist/chunk-GVUBRSD3.js +51 -0
- package/dist/chunk-GYREQDTJ.js +392 -0
- package/dist/chunk-HBRXFQQV.js +3510 -0
- package/dist/chunk-HLHR3EK2.js +23 -0
- package/dist/chunk-IMFIRELA.js +547 -0
- package/dist/chunk-IOKD77L2.js +89 -0
- package/dist/chunk-KDAINT54.js +131 -0
- package/dist/chunk-KKKZRQFY.js +297 -0
- package/dist/chunk-KLO36KTV.js +224 -0
- package/dist/chunk-LC6PVPJX.js +76 -0
- package/dist/chunk-LETR3RQE.js +275 -0
- package/dist/chunk-MAVT2CJ4.js +66 -0
- package/dist/chunk-MJDN7CR7.js +930 -0
- package/dist/chunk-MKLAZD23.js +7857 -0
- package/dist/chunk-MKLAZD23.js.map +1 -0
- package/dist/chunk-N3PASNUA.js +136 -0
- package/dist/chunk-NL77JRKE.js +170 -0
- package/dist/chunk-OTFHIGEO.js +207 -0
- package/dist/chunk-PCUWBZM3.js +169 -0
- package/dist/chunk-PNWXTOQ4.js +455 -0
- package/dist/chunk-PQFTKHDA.js +479 -0
- package/dist/chunk-Q5DFEVLE.js +148 -0
- package/dist/chunk-QAJFMVGU.js +91 -0
- package/dist/chunk-QXCGWAC6.js +399 -0
- package/dist/chunk-RKDMYL4A.js +438 -0
- package/dist/chunk-SCBSAIVV.js +392 -0
- package/dist/chunk-SPBUE7R4.js +685 -0
- package/dist/chunk-TRAMBRVO.js +191 -0
- package/dist/chunk-TWFZIHKK.js +219 -0
- package/dist/chunk-UCJAPB5Y.js +334 -0
- package/dist/chunk-VFDWUIGR.js +57 -0
- package/dist/chunk-VN3WDB4O.js +45 -0
- package/dist/chunk-VN3WDB4O.js.map +1 -0
- package/dist/chunk-WC3YSN7L.js +604 -0
- package/dist/chunk-X3GWGFZP.js +5368 -0
- package/dist/chunk-X6U3B6YK.js +343 -0
- package/dist/chunk-X6U3B6YK.js.map +1 -0
- package/dist/chunk-XZAVBONI.js +64 -0
- package/dist/chunk-Y5PNLB24.js +84 -0
- package/dist/chunk-ZC6FICZ7.js +2209 -0
- package/dist/chunk-ZEGWP4FP.js +8954 -0
- package/dist/claim-PGDIRXIC.js +200 -0
- package/dist/cli.js +36 -36
- package/dist/companies-WTPKGEB3.js +198 -0
- package/dist/company-6H2H73YP.js +308 -0
- package/dist/complete-2QBC3POO.js +84 -0
- package/dist/connect-35YPFAUL.js +45 -0
- package/dist/conversation-YZFNEWDV.js +96 -0
- package/dist/conversion-upload-command-J2FIO74Y.js +439 -0
- package/dist/conversions-UGRVDRWU.js +78 -0
- package/dist/conversions-ZFDBD3OU.js +140 -0
- package/dist/copy-writes-2B36QJUY.js +170 -0
- package/dist/create-3H67EUTO.js +62 -0
- package/dist/create-ALTOBDP4.js +239 -0
- package/dist/create-C3MWUYX2.js +210 -0
- package/dist/create-WHTT6IXY.js +135 -0
- package/dist/creatives-22BYP5VN.js +118 -0
- package/dist/creatives-IFOPXTZK.js +58 -0
- package/dist/creatives-WBBN6G7H.js +229 -0
- package/dist/creatives-WBBN6G7H.js.map +1 -0
- package/dist/credentials-J5DMQJWN.js +290 -0
- package/dist/critique-PQRVFC52.js +232 -0
- package/dist/critique-X6XVPIUG.js +1451 -0
- package/dist/crm-LWRGJYHW.js +227 -0
- package/dist/crm-RUNEJY2R.js +323 -0
- package/dist/crop-4V4P3SKI.js +113 -0
- package/dist/custom-conversions-V7QPZIB4.js +128 -0
- package/dist/customers-IDB6NLQ6.js +65 -0
- package/dist/delete-2QKVUKKB.js +67 -0
- package/dist/delete-B7BKF24X.js +57 -0
- package/dist/delete-HBRYUWAA.js +69 -0
- package/dist/demographics-JHB3NFLU.js +141 -0
- package/dist/dimensions-KI3OENZD.js +101 -0
- package/dist/discard-FEJ6YL22.js +69 -0
- package/dist/domain-JYWNXBKS.js +101 -0
- package/dist/download-H3ZDQTFG.js +337 -0
- package/dist/download-H3ZDQTFG.js.map +1 -0
- package/dist/download-LOBPOIU5.js +172 -0
- package/dist/draft-EB5ZFDVN.js +557 -0
- package/dist/draft-I2FLECEX.js +220 -0
- package/dist/draft-N56HPS36.js +374 -0
- package/dist/draft-ZLZRTPY6.js +332 -0
- package/dist/engine/index.js +5 -5
- package/dist/experiment-O6726OBP.js +1397 -0
- package/dist/experiments-WVTBHD6G.js +236 -0
- package/dist/extract-UELZV3NI.js +142 -0
- package/dist/extract-UELZV3NI.js.map +1 -0
- package/dist/facets-V2ITIUKD.js +117 -0
- package/dist/feedback-MXUZWVOL.js +115 -0
- package/dist/feedback-PXWPR3NZ.js +136 -0
- package/dist/feedback-record-76RUAHZH.js +269 -0
- package/dist/fetch-QVOOC3FA.js +204 -0
- package/dist/fit-REGMM46H.js +65 -0
- package/dist/flows-EZV3KCV6.js +250 -0
- package/dist/fonts-NUX66HEI.js +39 -0
- package/dist/forecast-W6HKYVX5.js +121 -0
- package/dist/forecast-XDRKCR65.js +169 -0
- package/dist/funnel-3YABA3G2.js +397 -0
- package/dist/ga4-XFJO7VK2.js +55 -0
- package/dist/generate-22HT24SA.js +263 -0
- package/dist/get-GQQLBE5C.js +82 -0
- package/dist/get-NL3YZFUJ.js +62 -0
- package/dist/google-BPB5JLJG.js +162 -0
- package/dist/google-BPB5JLJG.js.map +1 -0
- package/dist/google-UJ4YJGTJ.js +3285 -0
- package/dist/google-ads-RRKKSKDD.js +198 -0
- package/dist/gsc-ILEIJYWP.js +30 -0
- package/dist/history-2UANIBRN.js +102 -0
- package/dist/history-YZ727ZRG.js +153 -0
- package/dist/hubspot-KWLXJ6QD.js +782 -0
- package/dist/ideas-ZO533P5Y.js +45 -0
- package/dist/images-Z7YBWRVJ.js +92 -0
- package/dist/ingest-C2HJ5LUY.js +27 -0
- package/dist/ingest-H53JR4GK.js +123 -0
- package/dist/inspect-BM6GJHQV.js +192 -0
- package/dist/inspiration-WGUU7W5Z.js +53 -0
- package/dist/instant-experiences-U6U3FYIH.js +264 -0
- package/dist/keyword-metrics-R2QCEDYW.js +200 -0
- package/dist/keywords-for-site-NBV72C3W.js +131 -0
- package/dist/landing-5RRWTSWK.js +28 -0
- package/dist/leads-6PF7ZWCH.js +115 -0
- package/dist/leads-IG3IIHXG.js +541 -0
- package/dist/learn-V2LIBEEY.js +207 -0
- package/dist/line-item-writes-GMNWL4DI.js +211 -0
- package/dist/line-items-KPIKXLG4.js +107 -0
- package/dist/link-X7IYKR5V.js +67 -0
- package/dist/linkedin-DJ4VDOF4.js +1344 -0
- package/dist/linkedin-DJ4VDOF4.js.map +1 -0
- package/dist/linkedin-person-47XFTBIN.js +139 -0
- package/dist/list-PHNA7QIF.js +154 -0
- package/dist/list-QF3BANBM.js +306 -0
- package/dist/list-SB3SUTH6.js +67 -0
- package/dist/log-JFLSSUJ6.js +95 -0
- package/dist/make-HZ5KAYSB.js +1367 -0
- package/dist/map-NYJT2MGI.js +436 -0
- package/dist/mcp-ABQEICYR.js +729 -0
- package/dist/media-AT3VV3PU.js +18 -0
- package/dist/media-sources-DEEKEJUB.js +35 -0
- package/dist/members-BX37KHKO.js +47 -0
- package/dist/meta-XUHI3E3L.js +122 -0
- package/dist/meta-XUHI3E3L.js.map +1 -0
- package/dist/normalize-M3VMWF4W.js +806 -0
- package/dist/normalize-MA2FBBIV.js +144 -0
- package/dist/options-NMWWF2HN.js +125 -0
- package/dist/organization-GRAA6ZXU.js +949 -0
- package/dist/page-photos-ABK4CJME.js +118 -0
- package/dist/performance-MQLRSH44.js +5565 -0
- package/dist/performance-RUBIGEAQ.js +27 -0
- package/dist/posts-F7NFSUHV.js +36 -0
- package/dist/preview-IBNFQ5RQ.js +101 -0
- package/dist/preview-IBNFQ5RQ.js.map +1 -0
- package/dist/preview-OV2EZ6YF.js +245 -0
- package/dist/preview-OV2EZ6YF.js.map +1 -0
- package/dist/promoted-tweet-writes-3P6QFGLN.js +183 -0
- package/dist/promoted-tweets-TGFPH7UI.js +119 -0
- package/dist/publish-OUVO65Z5.js +344 -0
- package/dist/reddit-HWQCUSEM.js +29 -0
- package/dist/refresh-ENQDQGTK.js +97 -0
- package/dist/release-ZTVXLUQS.js +63 -0
- package/dist/remove-XAFRT7O7.js +53 -0
- package/dist/reopen-SWSZHXJZ.js +66 -0
- package/dist/rerun-X7XVOAL3.js +96 -0
- package/dist/research-JMU4C4JZ.js +75 -0
- package/dist/research-TDH4OBX6.js +265 -0
- package/dist/reset-34HTKUBQ.js +57 -0
- package/dist/reset-KMMGLM7W.js +57 -0
- package/dist/resolve-2CIIKADD.js +124 -0
- package/dist/retry-V7KZIZKR.js +63 -0
- package/dist/retry-YXM23NSB.js +65 -0
- package/dist/revenue-D4L6U2CW.js +91 -0
- package/dist/rule-writes-HUBHHYEO.js +530 -0
- package/dist/rules-47LFGCPW.js +217 -0
- package/dist/rules-F6RNUOXP.js +99 -0
- package/dist/rules-add-SAQRESVK.js +465 -0
- package/dist/run-3GCYZ2HX.js +71 -0
- package/dist/run-FRPO2WNQ.js +69 -0
- package/dist/scaffold-ad-E6DD6U46.js +1513 -0
- package/dist/scaffold-static-ad-6WNS2PXB.js +1011 -0
- package/dist/scaffold-video-QKXFQ5FC.js +885 -0
- package/dist/schedule-S4XAVVEI.js +64 -0
- package/dist/scheduled-agents-ZWAP6QLC.js +55 -0
- package/dist/schema-EJ2XPUN6.js +135 -0
- package/dist/scrape-O4X6VGV2.js +2209 -0
- package/dist/scrape-O4X6VGV2.js.map +1 -0
- package/dist/search-2BAY3KKX.js +177 -0
- package/dist/select-ABRNFFR2.js +110 -0
- package/dist/set-prompt-5LYHDT4E.js +199 -0
- package/dist/setup-links-QT63UZBR.js +144 -0
- package/dist/shopify-L4ZUI6OT.js +4009 -0
- package/dist/site-S6QVMP7W.js +180 -0
- package/dist/sources-6TWWOO7Q.js +30 -0
- package/dist/sources-ORG5KQSW.js +457 -0
- package/dist/stale-MLQPXNLZ.js +90 -0
- package/dist/status-4G2YUCZR.js +65 -0
- package/dist/stock-5SQ2PGEC.js +211 -0
- package/dist/stock-5SQ2PGEC.js.map +1 -0
- package/dist/studies-QLSKON6M.js +250 -0
- package/dist/studio-ZLBBYHNY.js +49 -0
- package/dist/study-writes-GBUUKX4O.js +471 -0
- package/dist/sync-7LJZPHM3.js +57 -0
- package/dist/sync-definition-MXVL2I2H.js +70 -0
- package/dist/tags-2ARVNEYS.js +23 -0
- package/dist/tags-F4IT7RQR.js +23 -0
- package/dist/tags-F7ZO52EM.js +23 -0
- package/dist/tags-NBGGBHXR.js +227 -0
- package/dist/tags-TCSGQYDR.js +26 -0
- package/dist/targeting-DAUTJDUB.js +762 -0
- package/dist/targeting-criteria-H42LRULY.js +113 -0
- package/dist/targets-WB4E5XL2.js +106 -0
- package/dist/testimonials-RIJSQDSB.js +32 -0
- package/dist/themes-BGBDYQQK.js +95 -0
- package/dist/top-companies-C2W5TJ7G.js +111 -0
- package/dist/transcript-S7VR2GJE.js +165 -0
- package/dist/translate-A4GHRHSP.js +603 -0
- package/dist/triggers-EOKMR74O.js +144 -0
- package/dist/unlink-PC3TMWUT.js +70 -0
- package/dist/unstage-SU2ATDSZ.js +88 -0
- package/dist/update-DKX3EEES.js +155 -0
- package/dist/update-JYZ45YJG.js +66 -0
- package/dist/update-TAZSUOAS.js +192 -0
- package/dist/update-WRJUH2NM.js +101 -0
- package/dist/upload-BLXTMK5Q.js +130 -0
- package/dist/url-params-YVOFU6MK.js +101 -0
- package/dist/validate-44PVFQH7.js +125 -0
- package/dist/videos-RWPQVXS5.js +41 -0
- package/dist/viewer-check-KTRRUVZN.js +83 -0
- package/dist/web-6KUM7Q7S.js +173 -0
- package/dist/winning-ads-IT3O4EAN.js +86 -0
- package/dist/write-commands-3U5ZMIHH.js +1524 -0
- package/dist/write-commands-F5XPPLOO.js +1169 -0
- package/dist/x-X7URL52T.js +47 -0
- package/package.json +1 -1
- package/dist/account-XIC5TTV3.js +0 -82
- package/dist/account-assets-V7KSSTVP.js +0 -290
- package/dist/account-level-2KLG6HTG.js +0 -611
- package/dist/account-reads-ZPZUCB3P.js +0 -219
- package/dist/account-users-XTUKRDWK.js +0 -64
- package/dist/accounts-25JL77F7.js +0 -701
- package/dist/accounts-AF72N4NV.js +0 -80
- package/dist/actions-IJO4JW7J.js +0 -55
- package/dist/activecampaign-PBTUMTO5.js +0 -938
- package/dist/add-KHQXXHC5.js +0 -107
- package/dist/add-YQPFRDVM.js +0 -305
- package/dist/ads-5YCCRXEU.js +0 -48
- package/dist/ads-EVQ37EV3.js +0 -120
- package/dist/adsets-4IW5TRAK.js +0 -182
- package/dist/advertisers-JNOWSZZC.js +0 -123
- package/dist/analytics-CZMCM7XC.js +0 -2437
- package/dist/analytics-K5FCQLI5.js +0 -447
- package/dist/animate-C6BRMRRD.js +0 -480
- package/dist/asset-writes-RF6XTWLY.js +0 -50
- package/dist/assign-WXZNXVJH.js +0 -80
- package/dist/audience-size-ZCWH4CFC.js +0 -76
- package/dist/audience-writes-5KT6FHUY.js +0 -327
- package/dist/audiences-ZDOK3OYC.js +0 -106
- package/dist/audit-RBRXPPKK.js +0 -154
- package/dist/autocomplete-P5OU7QVL.js +0 -114
- package/dist/avatars-UHBA2BQ3.js +0 -38
- package/dist/bid-pricing-LHNYSDG4.js +0 -103
- package/dist/brand-7WL3O74X.js +0 -22
- package/dist/brief-HWZU75WP.js +0 -543
- package/dist/campaign-groups-BYS3GNEP.js +0 -99
- package/dist/campaign-writes-N6OHAK6V.js +0 -168
- package/dist/campaigns-2E4AQBFB.js +0 -113
- package/dist/campaigns-3U5IRXSV.js +0 -130
- package/dist/campaigns-QLKGN4FB.js +0 -111
- package/dist/canvas-GGHJ26ZM.js +0 -46
- package/dist/capabilities-TKEEHR7K.js +0 -147
- package/dist/catalog-7KQN43HS.js +0 -66
- package/dist/catalogs-5CHPI4H6.js +0 -782
- package/dist/chatgpt-YBHXCXWZ.js +0 -47
- package/dist/chats-PBXYH2LT.js +0 -449
- package/dist/check-SVYI72DF.js +0 -107
- package/dist/chunk-2RL2T5JO.js +0 -142
- package/dist/chunk-3HLQZTQ3.js +0 -685
- package/dist/chunk-42JTSTQ3.js +0 -207
- package/dist/chunk-4AEAL63J.js +0 -203
- package/dist/chunk-4PM32OS3.js +0 -57
- package/dist/chunk-4ULGRGBG.js +0 -333
- package/dist/chunk-4ULGRGBG.js.map +0 -1
- package/dist/chunk-4XMPL3RU.js +0 -19
- package/dist/chunk-5AOTCCTT.js +0 -831
- package/dist/chunk-5NLUTJCQ.js +0 -5368
- package/dist/chunk-6FWVRXDW.js +0 -64
- package/dist/chunk-6MXM6DA6.js +0 -225
- package/dist/chunk-73MLPGI2.js +0 -66
- package/dist/chunk-7OVPQX4X.js +0 -163
- package/dist/chunk-B5UVOCYA.js +0 -344
- package/dist/chunk-BRNZMKO4.js +0 -604
- package/dist/chunk-CJFCQMUY.js +0 -438
- package/dist/chunk-D6VQPBVM.js +0 -5471
- package/dist/chunk-DK66PUXL.js +0 -275
- package/dist/chunk-DNH2ZPZP.js +0 -287
- package/dist/chunk-DWSSQBLO.js +0 -103
- package/dist/chunk-ESXUIV6V.js +0 -169
- package/dist/chunk-FSEFZZ2T.js +0 -930
- package/dist/chunk-I4BQTVMY.js +0 -225
- package/dist/chunk-IBBGABK2.js +0 -91
- package/dist/chunk-IC4MREQH.js +0 -219
- package/dist/chunk-IJ6NQKAT.js +0 -61
- package/dist/chunk-IZROFBH7.js +0 -167
- package/dist/chunk-J5UTL4HE.js +0 -3510
- package/dist/chunk-JBMZVC5D.js +0 -91
- package/dist/chunk-LFELUKCA.js +0 -249
- package/dist/chunk-LMOZWB4G.js +0 -98
- package/dist/chunk-LVLTWPRR.js +0 -392
- package/dist/chunk-N5AIO23H.js +0 -2209
- package/dist/chunk-NE3OMP7R.js +0 -23
- package/dist/chunk-NO52OH3Y.js +0 -156
- package/dist/chunk-NRIKX35V.js +0 -399
- package/dist/chunk-NZYWKZ3Q.js +0 -76
- package/dist/chunk-OIORUNKH.js +0 -1902
- package/dist/chunk-OKXLOLEV.js +0 -455
- package/dist/chunk-P4MXGSSJ.js +0 -178
- package/dist/chunk-PYAR343F.js +0 -479
- package/dist/chunk-QFVZIQRQ.js +0 -8954
- package/dist/chunk-QI5UKQX3.js +0 -297
- package/dist/chunk-RCNAKWK7.js +0 -7852
- package/dist/chunk-RCNAKWK7.js.map +0 -1
- package/dist/chunk-RHNNFCRY.js +0 -494
- package/dist/chunk-RJQT7QXX.js +0 -547
- package/dist/chunk-RMZLB4AH.js +0 -197
- package/dist/chunk-S4NMWYHW.js +0 -51
- package/dist/chunk-S6XZIBWV.js +0 -392
- package/dist/chunk-SFQFUQDW.js +0 -170
- package/dist/chunk-SP3MHBME.js +0 -89
- package/dist/chunk-TGT4XHLX.js +0 -131
- package/dist/chunk-VX6GTRT3.js +0 -910
- package/dist/chunk-WGJ2QEW4.js +0 -334
- package/dist/chunk-XB4NKZAQ.js +0 -136
- package/dist/chunk-XSBX3LJP.js +0 -430
- package/dist/chunk-XXBP73RV.js +0 -148
- package/dist/chunk-Y3SK6EMU.js +0 -84
- package/dist/chunk-Y4ZBNZBU.js +0 -191
- package/dist/chunk-YCAJCVW4.js +0 -224
- package/dist/chunk-ZANXEMON.js +0 -1744
- package/dist/chunk-ZMTWQDFC.js +0 -709
- package/dist/claim-Q76T3MYA.js +0 -200
- package/dist/companies-MLWRWQ73.js +0 -198
- package/dist/company-X5Z67PMK.js +0 -308
- package/dist/complete-3CFP6XVY.js +0 -84
- package/dist/connect-QXFAB4RJ.js +0 -45
- package/dist/conversation-C6K6IZTH.js +0 -96
- package/dist/conversion-upload-command-D7S5HF22.js +0 -439
- package/dist/conversions-4ILDIG3K.js +0 -140
- package/dist/conversions-CRL327RY.js +0 -78
- package/dist/copy-writes-FYXKHJDB.js +0 -170
- package/dist/create-LDQ3YHET.js +0 -62
- package/dist/create-TKOG7DNJ.js +0 -210
- package/dist/create-WFMJOZLO.js +0 -135
- package/dist/create-WQNT345R.js +0 -239
- package/dist/creatives-45SJAD3G.js +0 -118
- package/dist/creatives-E4CTMZJJ.js +0 -223
- package/dist/creatives-E4CTMZJJ.js.map +0 -1
- package/dist/creatives-Q4OXNCTT.js +0 -58
- package/dist/credentials-E2AIMWKX.js +0 -290
- package/dist/critique-EWV3O3TD.js +0 -1451
- package/dist/critique-JVT6X2T3.js +0 -232
- package/dist/crm-NQH5FTK6.js +0 -227
- package/dist/crm-YGQKK76D.js +0 -323
- package/dist/crop-KV24WHOR.js +0 -113
- package/dist/custom-conversions-EJNX4MCK.js +0 -128
- package/dist/customers-YFEPJF4G.js +0 -65
- package/dist/delete-2UJVTHRE.js +0 -67
- package/dist/delete-7QAJSOCO.js +0 -69
- package/dist/delete-O4RO2HMR.js +0 -57
- package/dist/demographics-YWBHAMZ5.js +0 -141
- package/dist/dimensions-YXOXHOXW.js +0 -101
- package/dist/discard-YX4XUXG3.js +0 -69
- package/dist/domain-5R6CYVFY.js +0 -101
- package/dist/download-D2O4RYJ3.js +0 -172
- package/dist/download-SYWQXF57.js +0 -299
- package/dist/download-SYWQXF57.js.map +0 -1
- package/dist/draft-3MPADYS4.js +0 -220
- package/dist/draft-L56EMJQT.js +0 -374
- package/dist/draft-NLSQDRVQ.js +0 -332
- package/dist/draft-SGNQOUYH.js +0 -557
- package/dist/experiment-3NDXGQK6.js +0 -1397
- package/dist/experiments-DYNNWQRB.js +0 -236
- package/dist/extract-DWDZI35Y.js +0 -121
- package/dist/extract-DWDZI35Y.js.map +0 -1
- package/dist/facets-Y2IEM37E.js +0 -117
- package/dist/feedback-HJRVTU6C.js +0 -115
- package/dist/feedback-IVSLM5PN.js +0 -136
- package/dist/feedback-record-P7CO3IGE.js +0 -269
- package/dist/fetch-V2U5VUQZ.js +0 -204
- package/dist/fit-JDG6E46O.js +0 -65
- package/dist/flows-DP574PEX.js +0 -250
- package/dist/fonts-RMROS3LX.js +0 -39
- package/dist/forecast-AAHHVTBK.js +0 -169
- package/dist/forecast-BRXNGMGD.js +0 -121
- package/dist/funnel-FQX3DOE7.js +0 -397
- package/dist/ga4-IJ2UUICC.js +0 -55
- package/dist/generate-SYOQE3F7.js +0 -263
- package/dist/get-HMTI2IR6.js +0 -82
- package/dist/get-VFDNTZ54.js +0 -62
- package/dist/google-4FP6AHBL.js +0 -3285
- package/dist/google-HWEDJ4YS.js +0 -144
- package/dist/google-HWEDJ4YS.js.map +0 -1
- package/dist/google-ads-4DLYASRC.js +0 -198
- package/dist/gsc-YAU4EA75.js +0 -30
- package/dist/history-6B6RXNV3.js +0 -102
- package/dist/history-NLZSX4BK.js +0 -153
- package/dist/hubspot-LABBRJ44.js +0 -782
- package/dist/ideas-A4ELJN23.js +0 -45
- package/dist/images-JVNT7KYM.js +0 -92
- package/dist/ingest-GQWR3RHR.js +0 -27
- package/dist/ingest-JYN2IDKV.js +0 -123
- package/dist/inspect-72DY33YD.js +0 -192
- package/dist/inspiration-DNWTXEPX.js +0 -53
- package/dist/instant-experiences-6NTBX4SL.js +0 -264
- package/dist/keyword-metrics-GP7L2MQE.js +0 -200
- package/dist/keywords-for-site-6YWAUOKJ.js +0 -131
- package/dist/landing-EKHAZS5P.js +0 -28
- package/dist/leads-RN6RYOMU.js +0 -541
- package/dist/leads-UCXIIA5K.js +0 -115
- package/dist/learn-EJEFERQZ.js +0 -207
- package/dist/line-item-writes-IMCE2FDW.js +0 -211
- package/dist/line-items-ISUC3WDO.js +0 -107
- package/dist/link-6QL4ZVSU.js +0 -67
- package/dist/linkedin-OFL77SUR.js +0 -1330
- package/dist/linkedin-OFL77SUR.js.map +0 -1
- package/dist/linkedin-person-C24CBKCH.js +0 -139
- package/dist/list-2VNI3U7I.js +0 -154
- package/dist/list-PZD2QOZL.js +0 -67
- package/dist/list-SUXUMXPJ.js +0 -306
- package/dist/log-VLI7KQF2.js +0 -95
- package/dist/make-365ZJ25L.js +0 -1367
- package/dist/map-OEFL45WA.js +0 -436
- package/dist/mcp-NCZYQXQL.js +0 -729
- package/dist/media-WASM45QW.js +0 -18
- package/dist/media-sources-CZDK4W5Q.js +0 -35
- package/dist/members-N3PQSVQC.js +0 -47
- package/dist/meta-QFLNABF5.js +0 -122
- package/dist/meta-QFLNABF5.js.map +0 -1
- package/dist/normalize-4OKUF5BJ.js +0 -806
- package/dist/normalize-6DEJPTBF.js +0 -144
- package/dist/options-OJX77MYT.js +0 -125
- package/dist/organization-URQGKFEC.js +0 -949
- package/dist/page-photos-N4S7U7FR.js +0 -118
- package/dist/performance-P5T4LJRG.js +0 -27
- package/dist/performance-SIWBDORI.js +0 -5565
- package/dist/posts-MVCGZV54.js +0 -36
- package/dist/preview-DMTQR6ZW.js +0 -218
- package/dist/preview-DMTQR6ZW.js.map +0 -1
- package/dist/promoted-tweet-writes-S2HP5DEI.js +0 -183
- package/dist/promoted-tweets-WZT4N5IR.js +0 -119
- package/dist/publish-EDYBQHGJ.js +0 -344
- package/dist/reddit-DEGGHR4M.js +0 -29
- package/dist/refresh-HPNJGI2U.js +0 -97
- package/dist/release-H7M37CEO.js +0 -63
- package/dist/remove-MV4YS72N.js +0 -53
- package/dist/reopen-EFW2SKOY.js +0 -66
- package/dist/rerun-OM4N74YK.js +0 -96
- package/dist/research-7YDQOKA6.js +0 -265
- package/dist/research-MHXKAQW4.js +0 -75
- package/dist/reset-HT4AGJPR.js +0 -57
- package/dist/reset-XPZQ5F4D.js +0 -57
- package/dist/resolve-RTTXEN2B.js +0 -124
- package/dist/retry-DVLVWHEK.js +0 -63
- package/dist/retry-SBGWOUQO.js +0 -65
- package/dist/revenue-KJLJ53XY.js +0 -91
- package/dist/rule-writes-DNXELESR.js +0 -530
- package/dist/rules-KCSET46P.js +0 -217
- package/dist/rules-NVKU732Z.js +0 -99
- package/dist/rules-add-KY42EHJE.js +0 -465
- package/dist/run-2LQ7XJEO.js +0 -69
- package/dist/run-M7YU6KCV.js +0 -71
- package/dist/scaffold-ad-6YPZ75YJ.js +0 -1513
- package/dist/scaffold-static-ad-UJEWTDU5.js +0 -1011
- package/dist/scaffold-video-M4VWSVJ6.js +0 -885
- package/dist/schedule-J7HZQ2EL.js +0 -64
- package/dist/scheduled-agents-IVUQUKF4.js +0 -55
- package/dist/schema-LHBKBUV7.js +0 -135
- package/dist/scrape-FQUGOXCG.js +0 -2241
- package/dist/scrape-FQUGOXCG.js.map +0 -1
- package/dist/search-3AW52FO6.js +0 -177
- package/dist/select-STIWQ36I.js +0 -110
- package/dist/set-prompt-TODWV2F4.js +0 -199
- package/dist/setup-links-MNBD3UMH.js +0 -144
- package/dist/shopify-RJWLTNPQ.js +0 -4009
- package/dist/site-ZZUKS6MQ.js +0 -180
- package/dist/sources-36MJ6T4V.js +0 -30
- package/dist/sources-GNLQHTSJ.js +0 -457
- package/dist/stale-GJN7UO3D.js +0 -90
- package/dist/status-6EGB6ORB.js +0 -65
- package/dist/stock-DJ6I3CTO.js +0 -187
- package/dist/stock-DJ6I3CTO.js.map +0 -1
- package/dist/studies-4XXCEAHH.js +0 -250
- package/dist/studio-OARORMDJ.js +0 -49
- package/dist/study-writes-J56UIIE3.js +0 -471
- package/dist/sync-QHM3LMAX.js +0 -57
- package/dist/sync-definition-YXGN6PIQ.js +0 -70
- package/dist/tags-GHV5R7NI.js +0 -26
- package/dist/tags-IDWUV2FY.js +0 -227
- package/dist/tags-MBBRBZJH.js +0 -23
- package/dist/tags-MQYF2JHQ.js +0 -23
- package/dist/tags-ZGXJHATH.js +0 -23
- package/dist/targeting-KJ4DI56R.js +0 -762
- package/dist/targeting-criteria-GDCXOAUD.js +0 -113
- package/dist/targets-MYHOPAYY.js +0 -106
- package/dist/testimonials-R6RFGAKP.js +0 -32
- package/dist/themes-LHVXXVTX.js +0 -95
- package/dist/top-companies-POTV3Y2A.js +0 -111
- package/dist/transcript-4RVYKDVZ.js +0 -165
- package/dist/translate-UCASCVMN.js +0 -603
- package/dist/triggers-XHMMOZJK.js +0 -144
- package/dist/unlink-3IW3EORE.js +0 -70
- package/dist/unstage-APVF6KHB.js +0 -88
- package/dist/update-2VSJH4LQ.js +0 -66
- package/dist/update-42QYBUE3.js +0 -101
- package/dist/update-ESK6PSME.js +0 -192
- package/dist/update-V7SRDGHN.js +0 -155
- package/dist/upload-42IR5RIL.js +0 -130
- package/dist/url-params-GEESXN57.js +0 -101
- package/dist/validate-Z5SSEUES.js +0 -125
- package/dist/videos-PJAPZPOT.js +0 -41
- package/dist/viewer-check-6M34VY7K.js +0 -83
- package/dist/web-PUVVFMV3.js +0 -173
- package/dist/winning-ads-ZCP4MIEQ.js +0 -86
- package/dist/write-commands-5LEEPKA7.js +0 -1169
- package/dist/write-commands-ZS4O4DSV.js +0 -1524
- package/dist/x-ZKCLP23S.js +0 -47
- /package/dist/{account-XIC5TTV3.js.map → account-H5CL6KUY.js.map} +0 -0
- /package/dist/{account-assets-V7KSSTVP.js.map → account-assets-QMKT5AT7.js.map} +0 -0
- /package/dist/{account-level-2KLG6HTG.js.map → account-level-BELF6JHB.js.map} +0 -0
- /package/dist/{account-reads-ZPZUCB3P.js.map → account-reads-T6GTSAXE.js.map} +0 -0
- /package/dist/{account-users-XTUKRDWK.js.map → account-users-ZGJCVGX4.js.map} +0 -0
- /package/dist/{accounts-25JL77F7.js.map → accounts-EXQNPSYH.js.map} +0 -0
- /package/dist/{accounts-AF72N4NV.js.map → accounts-GNVLFZ3X.js.map} +0 -0
- /package/dist/{actions-IJO4JW7J.js.map → actions-Q2BMP27K.js.map} +0 -0
- /package/dist/{activecampaign-PBTUMTO5.js.map → activecampaign-SJO2YK6M.js.map} +0 -0
- /package/dist/{add-YQPFRDVM.js.map → add-Q3FGYX5Q.js.map} +0 -0
- /package/dist/{add-KHQXXHC5.js.map → add-YGQBSEVK.js.map} +0 -0
- /package/dist/{ads-5YCCRXEU.js.map → ads-CWKKIYD6.js.map} +0 -0
- /package/dist/{ads-EVQ37EV3.js.map → ads-H5AEYIY3.js.map} +0 -0
- /package/dist/{adsets-4IW5TRAK.js.map → adsets-BUIT7HF2.js.map} +0 -0
- /package/dist/{advertisers-JNOWSZZC.js.map → advertisers-ZAHXMIAT.js.map} +0 -0
- /package/dist/{analytics-K5FCQLI5.js.map → analytics-QW5ZXDJR.js.map} +0 -0
- /package/dist/{analytics-CZMCM7XC.js.map → analytics-XPU5SANS.js.map} +0 -0
- /package/dist/{animate-C6BRMRRD.js.map → animate-Q43SOWB4.js.map} +0 -0
- /package/dist/{asset-writes-RF6XTWLY.js.map → asset-writes-JVFE457M.js.map} +0 -0
- /package/dist/{assign-WXZNXVJH.js.map → assign-HJ2NXW4W.js.map} +0 -0
- /package/dist/{audience-size-ZCWH4CFC.js.map → audience-size-IM3N6W7C.js.map} +0 -0
- /package/dist/{audience-writes-5KT6FHUY.js.map → audience-writes-DWSCHYQF.js.map} +0 -0
- /package/dist/{audiences-ZDOK3OYC.js.map → audiences-PYBJU2GV.js.map} +0 -0
- /package/dist/{audit-RBRXPPKK.js.map → audit-N3LAQMD4.js.map} +0 -0
- /package/dist/{autocomplete-P5OU7QVL.js.map → autocomplete-FBTPT5MA.js.map} +0 -0
- /package/dist/{avatars-UHBA2BQ3.js.map → avatars-3OMFIKOJ.js.map} +0 -0
- /package/dist/{bid-pricing-LHNYSDG4.js.map → bid-pricing-UUAC4GTQ.js.map} +0 -0
- /package/dist/{brand-7WL3O74X.js.map → brand-IZYD5SBJ.js.map} +0 -0
- /package/dist/{brief-HWZU75WP.js.map → brief-TNOKTNFJ.js.map} +0 -0
- /package/dist/{campaign-groups-BYS3GNEP.js.map → campaign-groups-3IUOLEK2.js.map} +0 -0
- /package/dist/{campaign-writes-N6OHAK6V.js.map → campaign-writes-Y7QNFOE7.js.map} +0 -0
- /package/dist/{campaigns-3U5IRXSV.js.map → campaigns-2Z6WXIVA.js.map} +0 -0
- /package/dist/{campaigns-QLKGN4FB.js.map → campaigns-B2AUW4TV.js.map} +0 -0
- /package/dist/{campaigns-2E4AQBFB.js.map → campaigns-IDEA3LOK.js.map} +0 -0
- /package/dist/{canvas-GGHJ26ZM.js.map → canvas-PVNQ7YWV.js.map} +0 -0
- /package/dist/{capabilities-TKEEHR7K.js.map → capabilities-FVMMLKPY.js.map} +0 -0
- /package/dist/{catalog-7KQN43HS.js.map → catalog-URTZYAPU.js.map} +0 -0
- /package/dist/{catalogs-5CHPI4H6.js.map → catalogs-OEUNVE4N.js.map} +0 -0
- /package/dist/{chatgpt-YBHXCXWZ.js.map → chatgpt-6KBW7F5S.js.map} +0 -0
- /package/dist/{chats-PBXYH2LT.js.map → chats-EENMDXWZ.js.map} +0 -0
- /package/dist/{check-SVYI72DF.js.map → check-7735BPTR.js.map} +0 -0
- /package/dist/{chunk-5AOTCCTT.js.map → chunk-2QGGI7MF.js.map} +0 -0
- /package/dist/{chunk-B5UVOCYA.js.map → chunk-3OMFSYQ3.js.map} +0 -0
- /package/dist/{chunk-LMOZWB4G.js.map → chunk-65CQYRMK.js.map} +0 -0
- /package/dist/{chunk-I4BQTVMY.js.map → chunk-6MZFOMLU.js.map} +0 -0
- /package/dist/{chunk-VX6GTRT3.js.map → chunk-757ZFIL4.js.map} +0 -0
- /package/dist/{chunk-IJ6NQKAT.js.map → chunk-75HAGIH6.js.map} +0 -0
- /package/dist/{chunk-XSBX3LJP.js.map → chunk-7BVRFQN4.js.map} +0 -0
- /package/dist/{chunk-7OVPQX4X.js.map → chunk-7TDJCDKT.js.map} +0 -0
- /package/dist/{chunk-OIORUNKH.js.map → chunk-7WDH6OKW.js.map} +0 -0
- /package/dist/{chunk-ZMTWQDFC.js.map → chunk-AL4MRNYI.js.map} +0 -0
- /package/dist/{chunk-JBMZVC5D.js.map → chunk-AMM4JMSN.js.map} +0 -0
- /package/dist/{chunk-4XMPL3RU.js.map → chunk-AU3IMZZC.js.map} +0 -0
- /package/dist/{chunk-NO52OH3Y.js.map → chunk-BMNOMOWP.js.map} +0 -0
- /package/dist/{chunk-4AEAL63J.js.map → chunk-BS2MC62Y.js.map} +0 -0
- /package/dist/{chunk-DWSSQBLO.js.map → chunk-C6PWVZQE.js.map} +0 -0
- /package/dist/{chunk-P4MXGSSJ.js.map → chunk-CDTAKCJR.js.map} +0 -0
- /package/dist/{chunk-2RL2T5JO.js.map → chunk-CH44XVPE.js.map} +0 -0
- /package/dist/{chunk-RHNNFCRY.js.map → chunk-CJWLDKFO.js.map} +0 -0
- /package/dist/{chunk-D6VQPBVM.js.map → chunk-DWPOAU4Z.js.map} +0 -0
- /package/dist/{chunk-6MXM6DA6.js.map → chunk-EENYLJUN.js.map} +0 -0
- /package/dist/{chunk-IZROFBH7.js.map → chunk-EJBLF2LI.js.map} +0 -0
- /package/dist/{chunk-DNH2ZPZP.js.map → chunk-EJMPKO6V.js.map} +0 -0
- /package/dist/{chunk-RMZLB4AH.js.map → chunk-EKXLJRO3.js.map} +0 -0
- /package/dist/{chunk-ZANXEMON.js.map → chunk-EL3TDR5S.js.map} +0 -0
- /package/dist/{chunk-LFELUKCA.js.map → chunk-GRDZWZKQ.js.map} +0 -0
- /package/dist/{chunk-S4NMWYHW.js.map → chunk-GVUBRSD3.js.map} +0 -0
- /package/dist/{chunk-LVLTWPRR.js.map → chunk-GYREQDTJ.js.map} +0 -0
- /package/dist/{chunk-J5UTL4HE.js.map → chunk-HBRXFQQV.js.map} +0 -0
- /package/dist/{chunk-NE3OMP7R.js.map → chunk-HLHR3EK2.js.map} +0 -0
- /package/dist/{chunk-RJQT7QXX.js.map → chunk-IMFIRELA.js.map} +0 -0
- /package/dist/{chunk-SP3MHBME.js.map → chunk-IOKD77L2.js.map} +0 -0
- /package/dist/{chunk-TGT4XHLX.js.map → chunk-KDAINT54.js.map} +0 -0
- /package/dist/{chunk-QI5UKQX3.js.map → chunk-KKKZRQFY.js.map} +0 -0
- /package/dist/{chunk-YCAJCVW4.js.map → chunk-KLO36KTV.js.map} +0 -0
- /package/dist/{chunk-NZYWKZ3Q.js.map → chunk-LC6PVPJX.js.map} +0 -0
- /package/dist/{chunk-DK66PUXL.js.map → chunk-LETR3RQE.js.map} +0 -0
- /package/dist/{chunk-73MLPGI2.js.map → chunk-MAVT2CJ4.js.map} +0 -0
- /package/dist/{chunk-FSEFZZ2T.js.map → chunk-MJDN7CR7.js.map} +0 -0
- /package/dist/{chunk-XB4NKZAQ.js.map → chunk-N3PASNUA.js.map} +0 -0
- /package/dist/{chunk-SFQFUQDW.js.map → chunk-NL77JRKE.js.map} +0 -0
- /package/dist/{chunk-42JTSTQ3.js.map → chunk-OTFHIGEO.js.map} +0 -0
- /package/dist/{chunk-ESXUIV6V.js.map → chunk-PCUWBZM3.js.map} +0 -0
- /package/dist/{chunk-OKXLOLEV.js.map → chunk-PNWXTOQ4.js.map} +0 -0
- /package/dist/{chunk-PYAR343F.js.map → chunk-PQFTKHDA.js.map} +0 -0
- /package/dist/{chunk-XXBP73RV.js.map → chunk-Q5DFEVLE.js.map} +0 -0
- /package/dist/{chunk-IBBGABK2.js.map → chunk-QAJFMVGU.js.map} +0 -0
- /package/dist/{chunk-NRIKX35V.js.map → chunk-QXCGWAC6.js.map} +0 -0
- /package/dist/{chunk-CJFCQMUY.js.map → chunk-RKDMYL4A.js.map} +0 -0
- /package/dist/{chunk-S6XZIBWV.js.map → chunk-SCBSAIVV.js.map} +0 -0
- /package/dist/{chunk-3HLQZTQ3.js.map → chunk-SPBUE7R4.js.map} +0 -0
- /package/dist/{chunk-Y4ZBNZBU.js.map → chunk-TRAMBRVO.js.map} +0 -0
- /package/dist/{chunk-IC4MREQH.js.map → chunk-TWFZIHKK.js.map} +0 -0
- /package/dist/{chunk-WGJ2QEW4.js.map → chunk-UCJAPB5Y.js.map} +0 -0
- /package/dist/{chunk-4PM32OS3.js.map → chunk-VFDWUIGR.js.map} +0 -0
- /package/dist/{chunk-BRNZMKO4.js.map → chunk-WC3YSN7L.js.map} +0 -0
- /package/dist/{chunk-5NLUTJCQ.js.map → chunk-X3GWGFZP.js.map} +0 -0
- /package/dist/{chunk-6FWVRXDW.js.map → chunk-XZAVBONI.js.map} +0 -0
- /package/dist/{chunk-Y3SK6EMU.js.map → chunk-Y5PNLB24.js.map} +0 -0
- /package/dist/{chunk-N5AIO23H.js.map → chunk-ZC6FICZ7.js.map} +0 -0
- /package/dist/{chunk-QFVZIQRQ.js.map → chunk-ZEGWP4FP.js.map} +0 -0
- /package/dist/{claim-Q76T3MYA.js.map → claim-PGDIRXIC.js.map} +0 -0
- /package/dist/{companies-MLWRWQ73.js.map → companies-WTPKGEB3.js.map} +0 -0
- /package/dist/{company-X5Z67PMK.js.map → company-6H2H73YP.js.map} +0 -0
- /package/dist/{complete-3CFP6XVY.js.map → complete-2QBC3POO.js.map} +0 -0
- /package/dist/{connect-QXFAB4RJ.js.map → connect-35YPFAUL.js.map} +0 -0
- /package/dist/{conversation-C6K6IZTH.js.map → conversation-YZFNEWDV.js.map} +0 -0
- /package/dist/{conversion-upload-command-D7S5HF22.js.map → conversion-upload-command-J2FIO74Y.js.map} +0 -0
- /package/dist/{conversions-CRL327RY.js.map → conversions-UGRVDRWU.js.map} +0 -0
- /package/dist/{conversions-4ILDIG3K.js.map → conversions-ZFDBD3OU.js.map} +0 -0
- /package/dist/{copy-writes-FYXKHJDB.js.map → copy-writes-2B36QJUY.js.map} +0 -0
- /package/dist/{create-LDQ3YHET.js.map → create-3H67EUTO.js.map} +0 -0
- /package/dist/{create-WQNT345R.js.map → create-ALTOBDP4.js.map} +0 -0
- /package/dist/{create-TKOG7DNJ.js.map → create-C3MWUYX2.js.map} +0 -0
- /package/dist/{create-WFMJOZLO.js.map → create-WHTT6IXY.js.map} +0 -0
- /package/dist/{creatives-45SJAD3G.js.map → creatives-22BYP5VN.js.map} +0 -0
- /package/dist/{creatives-Q4OXNCTT.js.map → creatives-IFOPXTZK.js.map} +0 -0
- /package/dist/{credentials-E2AIMWKX.js.map → credentials-J5DMQJWN.js.map} +0 -0
- /package/dist/{critique-JVT6X2T3.js.map → critique-PQRVFC52.js.map} +0 -0
- /package/dist/{critique-EWV3O3TD.js.map → critique-X6XVPIUG.js.map} +0 -0
- /package/dist/{crm-NQH5FTK6.js.map → crm-LWRGJYHW.js.map} +0 -0
- /package/dist/{crm-YGQKK76D.js.map → crm-RUNEJY2R.js.map} +0 -0
- /package/dist/{crop-KV24WHOR.js.map → crop-4V4P3SKI.js.map} +0 -0
- /package/dist/{custom-conversions-EJNX4MCK.js.map → custom-conversions-V7QPZIB4.js.map} +0 -0
- /package/dist/{customers-YFEPJF4G.js.map → customers-IDB6NLQ6.js.map} +0 -0
- /package/dist/{delete-2UJVTHRE.js.map → delete-2QKVUKKB.js.map} +0 -0
- /package/dist/{delete-O4RO2HMR.js.map → delete-B7BKF24X.js.map} +0 -0
- /package/dist/{delete-7QAJSOCO.js.map → delete-HBRYUWAA.js.map} +0 -0
- /package/dist/{demographics-YWBHAMZ5.js.map → demographics-JHB3NFLU.js.map} +0 -0
- /package/dist/{dimensions-YXOXHOXW.js.map → dimensions-KI3OENZD.js.map} +0 -0
- /package/dist/{discard-YX4XUXG3.js.map → discard-FEJ6YL22.js.map} +0 -0
- /package/dist/{domain-5R6CYVFY.js.map → domain-JYWNXBKS.js.map} +0 -0
- /package/dist/{download-D2O4RYJ3.js.map → download-LOBPOIU5.js.map} +0 -0
- /package/dist/{draft-SGNQOUYH.js.map → draft-EB5ZFDVN.js.map} +0 -0
- /package/dist/{draft-3MPADYS4.js.map → draft-I2FLECEX.js.map} +0 -0
- /package/dist/{draft-L56EMJQT.js.map → draft-N56HPS36.js.map} +0 -0
- /package/dist/{draft-NLSQDRVQ.js.map → draft-ZLZRTPY6.js.map} +0 -0
- /package/dist/{experiment-3NDXGQK6.js.map → experiment-O6726OBP.js.map} +0 -0
- /package/dist/{experiments-DYNNWQRB.js.map → experiments-WVTBHD6G.js.map} +0 -0
- /package/dist/{facets-Y2IEM37E.js.map → facets-V2ITIUKD.js.map} +0 -0
- /package/dist/{feedback-HJRVTU6C.js.map → feedback-MXUZWVOL.js.map} +0 -0
- /package/dist/{feedback-IVSLM5PN.js.map → feedback-PXWPR3NZ.js.map} +0 -0
- /package/dist/{feedback-record-P7CO3IGE.js.map → feedback-record-76RUAHZH.js.map} +0 -0
- /package/dist/{fetch-V2U5VUQZ.js.map → fetch-QVOOC3FA.js.map} +0 -0
- /package/dist/{fit-JDG6E46O.js.map → fit-REGMM46H.js.map} +0 -0
- /package/dist/{flows-DP574PEX.js.map → flows-EZV3KCV6.js.map} +0 -0
- /package/dist/{fonts-RMROS3LX.js.map → fonts-NUX66HEI.js.map} +0 -0
- /package/dist/{forecast-BRXNGMGD.js.map → forecast-W6HKYVX5.js.map} +0 -0
- /package/dist/{forecast-AAHHVTBK.js.map → forecast-XDRKCR65.js.map} +0 -0
- /package/dist/{funnel-FQX3DOE7.js.map → funnel-3YABA3G2.js.map} +0 -0
- /package/dist/{ga4-IJ2UUICC.js.map → ga4-XFJO7VK2.js.map} +0 -0
- /package/dist/{generate-SYOQE3F7.js.map → generate-22HT24SA.js.map} +0 -0
- /package/dist/{get-HMTI2IR6.js.map → get-GQQLBE5C.js.map} +0 -0
- /package/dist/{get-VFDNTZ54.js.map → get-NL3YZFUJ.js.map} +0 -0
- /package/dist/{google-4FP6AHBL.js.map → google-UJ4YJGTJ.js.map} +0 -0
- /package/dist/{google-ads-4DLYASRC.js.map → google-ads-RRKKSKDD.js.map} +0 -0
- /package/dist/{gsc-YAU4EA75.js.map → gsc-ILEIJYWP.js.map} +0 -0
- /package/dist/{history-6B6RXNV3.js.map → history-2UANIBRN.js.map} +0 -0
- /package/dist/{history-NLZSX4BK.js.map → history-YZ727ZRG.js.map} +0 -0
- /package/dist/{hubspot-LABBRJ44.js.map → hubspot-KWLXJ6QD.js.map} +0 -0
- /package/dist/{ideas-A4ELJN23.js.map → ideas-ZO533P5Y.js.map} +0 -0
- /package/dist/{images-JVNT7KYM.js.map → images-Z7YBWRVJ.js.map} +0 -0
- /package/dist/{ingest-GQWR3RHR.js.map → ingest-C2HJ5LUY.js.map} +0 -0
- /package/dist/{ingest-JYN2IDKV.js.map → ingest-H53JR4GK.js.map} +0 -0
- /package/dist/{inspect-72DY33YD.js.map → inspect-BM6GJHQV.js.map} +0 -0
- /package/dist/{inspiration-DNWTXEPX.js.map → inspiration-WGUU7W5Z.js.map} +0 -0
- /package/dist/{instant-experiences-6NTBX4SL.js.map → instant-experiences-U6U3FYIH.js.map} +0 -0
- /package/dist/{keyword-metrics-GP7L2MQE.js.map → keyword-metrics-R2QCEDYW.js.map} +0 -0
- /package/dist/{keywords-for-site-6YWAUOKJ.js.map → keywords-for-site-NBV72C3W.js.map} +0 -0
- /package/dist/{landing-EKHAZS5P.js.map → landing-5RRWTSWK.js.map} +0 -0
- /package/dist/{leads-UCXIIA5K.js.map → leads-6PF7ZWCH.js.map} +0 -0
- /package/dist/{leads-RN6RYOMU.js.map → leads-IG3IIHXG.js.map} +0 -0
- /package/dist/{learn-EJEFERQZ.js.map → learn-V2LIBEEY.js.map} +0 -0
- /package/dist/{line-item-writes-IMCE2FDW.js.map → line-item-writes-GMNWL4DI.js.map} +0 -0
- /package/dist/{line-items-ISUC3WDO.js.map → line-items-KPIKXLG4.js.map} +0 -0
- /package/dist/{link-6QL4ZVSU.js.map → link-X7IYKR5V.js.map} +0 -0
- /package/dist/{linkedin-person-C24CBKCH.js.map → linkedin-person-47XFTBIN.js.map} +0 -0
- /package/dist/{list-2VNI3U7I.js.map → list-PHNA7QIF.js.map} +0 -0
- /package/dist/{list-SUXUMXPJ.js.map → list-QF3BANBM.js.map} +0 -0
- /package/dist/{list-PZD2QOZL.js.map → list-SB3SUTH6.js.map} +0 -0
- /package/dist/{log-VLI7KQF2.js.map → log-JFLSSUJ6.js.map} +0 -0
- /package/dist/{make-365ZJ25L.js.map → make-HZ5KAYSB.js.map} +0 -0
- /package/dist/{map-OEFL45WA.js.map → map-NYJT2MGI.js.map} +0 -0
- /package/dist/{mcp-NCZYQXQL.js.map → mcp-ABQEICYR.js.map} +0 -0
- /package/dist/{media-WASM45QW.js.map → media-AT3VV3PU.js.map} +0 -0
- /package/dist/{media-sources-CZDK4W5Q.js.map → media-sources-DEEKEJUB.js.map} +0 -0
- /package/dist/{members-N3PQSVQC.js.map → members-BX37KHKO.js.map} +0 -0
- /package/dist/{normalize-4OKUF5BJ.js.map → normalize-M3VMWF4W.js.map} +0 -0
- /package/dist/{normalize-6DEJPTBF.js.map → normalize-MA2FBBIV.js.map} +0 -0
- /package/dist/{options-OJX77MYT.js.map → options-NMWWF2HN.js.map} +0 -0
- /package/dist/{organization-URQGKFEC.js.map → organization-GRAA6ZXU.js.map} +0 -0
- /package/dist/{page-photos-N4S7U7FR.js.map → page-photos-ABK4CJME.js.map} +0 -0
- /package/dist/{performance-SIWBDORI.js.map → performance-MQLRSH44.js.map} +0 -0
- /package/dist/{performance-P5T4LJRG.js.map → performance-RUBIGEAQ.js.map} +0 -0
- /package/dist/{posts-MVCGZV54.js.map → posts-F7NFSUHV.js.map} +0 -0
- /package/dist/{promoted-tweet-writes-S2HP5DEI.js.map → promoted-tweet-writes-3P6QFGLN.js.map} +0 -0
- /package/dist/{promoted-tweets-WZT4N5IR.js.map → promoted-tweets-TGFPH7UI.js.map} +0 -0
- /package/dist/{publish-EDYBQHGJ.js.map → publish-OUVO65Z5.js.map} +0 -0
- /package/dist/{reddit-DEGGHR4M.js.map → reddit-HWQCUSEM.js.map} +0 -0
- /package/dist/{refresh-HPNJGI2U.js.map → refresh-ENQDQGTK.js.map} +0 -0
- /package/dist/{release-H7M37CEO.js.map → release-ZTVXLUQS.js.map} +0 -0
- /package/dist/{remove-MV4YS72N.js.map → remove-XAFRT7O7.js.map} +0 -0
- /package/dist/{reopen-EFW2SKOY.js.map → reopen-SWSZHXJZ.js.map} +0 -0
- /package/dist/{rerun-OM4N74YK.js.map → rerun-X7XVOAL3.js.map} +0 -0
- /package/dist/{research-MHXKAQW4.js.map → research-JMU4C4JZ.js.map} +0 -0
- /package/dist/{research-7YDQOKA6.js.map → research-TDH4OBX6.js.map} +0 -0
- /package/dist/{reset-HT4AGJPR.js.map → reset-34HTKUBQ.js.map} +0 -0
- /package/dist/{reset-XPZQ5F4D.js.map → reset-KMMGLM7W.js.map} +0 -0
- /package/dist/{resolve-RTTXEN2B.js.map → resolve-2CIIKADD.js.map} +0 -0
- /package/dist/{retry-DVLVWHEK.js.map → retry-V7KZIZKR.js.map} +0 -0
- /package/dist/{retry-SBGWOUQO.js.map → retry-YXM23NSB.js.map} +0 -0
- /package/dist/{revenue-KJLJ53XY.js.map → revenue-D4L6U2CW.js.map} +0 -0
- /package/dist/{rule-writes-DNXELESR.js.map → rule-writes-HUBHHYEO.js.map} +0 -0
- /package/dist/{rules-KCSET46P.js.map → rules-47LFGCPW.js.map} +0 -0
- /package/dist/{rules-NVKU732Z.js.map → rules-F6RNUOXP.js.map} +0 -0
- /package/dist/{rules-add-KY42EHJE.js.map → rules-add-SAQRESVK.js.map} +0 -0
- /package/dist/{run-M7YU6KCV.js.map → run-3GCYZ2HX.js.map} +0 -0
- /package/dist/{run-2LQ7XJEO.js.map → run-FRPO2WNQ.js.map} +0 -0
- /package/dist/{scaffold-ad-6YPZ75YJ.js.map → scaffold-ad-E6DD6U46.js.map} +0 -0
- /package/dist/{scaffold-static-ad-UJEWTDU5.js.map → scaffold-static-ad-6WNS2PXB.js.map} +0 -0
- /package/dist/{scaffold-video-M4VWSVJ6.js.map → scaffold-video-QKXFQ5FC.js.map} +0 -0
- /package/dist/{schedule-J7HZQ2EL.js.map → schedule-S4XAVVEI.js.map} +0 -0
- /package/dist/{scheduled-agents-IVUQUKF4.js.map → scheduled-agents-ZWAP6QLC.js.map} +0 -0
- /package/dist/{schema-LHBKBUV7.js.map → schema-EJ2XPUN6.js.map} +0 -0
- /package/dist/{search-3AW52FO6.js.map → search-2BAY3KKX.js.map} +0 -0
- /package/dist/{select-STIWQ36I.js.map → select-ABRNFFR2.js.map} +0 -0
- /package/dist/{set-prompt-TODWV2F4.js.map → set-prompt-5LYHDT4E.js.map} +0 -0
- /package/dist/{setup-links-MNBD3UMH.js.map → setup-links-QT63UZBR.js.map} +0 -0
- /package/dist/{shopify-RJWLTNPQ.js.map → shopify-L4ZUI6OT.js.map} +0 -0
- /package/dist/{site-ZZUKS6MQ.js.map → site-S6QVMP7W.js.map} +0 -0
- /package/dist/{sources-36MJ6T4V.js.map → sources-6TWWOO7Q.js.map} +0 -0
- /package/dist/{sources-GNLQHTSJ.js.map → sources-ORG5KQSW.js.map} +0 -0
- /package/dist/{stale-GJN7UO3D.js.map → stale-MLQPXNLZ.js.map} +0 -0
- /package/dist/{status-6EGB6ORB.js.map → status-4G2YUCZR.js.map} +0 -0
- /package/dist/{studies-4XXCEAHH.js.map → studies-QLSKON6M.js.map} +0 -0
- /package/dist/{studio-OARORMDJ.js.map → studio-ZLBBYHNY.js.map} +0 -0
- /package/dist/{study-writes-J56UIIE3.js.map → study-writes-GBUUKX4O.js.map} +0 -0
- /package/dist/{sync-QHM3LMAX.js.map → sync-7LJZPHM3.js.map} +0 -0
- /package/dist/{sync-definition-YXGN6PIQ.js.map → sync-definition-MXVL2I2H.js.map} +0 -0
- /package/dist/{tags-MQYF2JHQ.js.map → tags-2ARVNEYS.js.map} +0 -0
- /package/dist/{tags-ZGXJHATH.js.map → tags-F4IT7RQR.js.map} +0 -0
- /package/dist/{tags-MBBRBZJH.js.map → tags-F7ZO52EM.js.map} +0 -0
- /package/dist/{tags-IDWUV2FY.js.map → tags-NBGGBHXR.js.map} +0 -0
- /package/dist/{tags-GHV5R7NI.js.map → tags-TCSGQYDR.js.map} +0 -0
- /package/dist/{targeting-KJ4DI56R.js.map → targeting-DAUTJDUB.js.map} +0 -0
- /package/dist/{targeting-criteria-GDCXOAUD.js.map → targeting-criteria-H42LRULY.js.map} +0 -0
- /package/dist/{targets-MYHOPAYY.js.map → targets-WB4E5XL2.js.map} +0 -0
- /package/dist/{testimonials-R6RFGAKP.js.map → testimonials-RIJSQDSB.js.map} +0 -0
- /package/dist/{themes-LHVXXVTX.js.map → themes-BGBDYQQK.js.map} +0 -0
- /package/dist/{top-companies-POTV3Y2A.js.map → top-companies-C2W5TJ7G.js.map} +0 -0
- /package/dist/{transcript-4RVYKDVZ.js.map → transcript-S7VR2GJE.js.map} +0 -0
- /package/dist/{translate-UCASCVMN.js.map → translate-A4GHRHSP.js.map} +0 -0
- /package/dist/{triggers-XHMMOZJK.js.map → triggers-EOKMR74O.js.map} +0 -0
- /package/dist/{unlink-3IW3EORE.js.map → unlink-PC3TMWUT.js.map} +0 -0
- /package/dist/{unstage-APVF6KHB.js.map → unstage-SU2ATDSZ.js.map} +0 -0
- /package/dist/{update-V7SRDGHN.js.map → update-DKX3EEES.js.map} +0 -0
- /package/dist/{update-2VSJH4LQ.js.map → update-JYZ45YJG.js.map} +0 -0
- /package/dist/{update-ESK6PSME.js.map → update-TAZSUOAS.js.map} +0 -0
- /package/dist/{update-42QYBUE3.js.map → update-WRJUH2NM.js.map} +0 -0
- /package/dist/{upload-42IR5RIL.js.map → upload-BLXTMK5Q.js.map} +0 -0
- /package/dist/{url-params-GEESXN57.js.map → url-params-YVOFU6MK.js.map} +0 -0
- /package/dist/{validate-Z5SSEUES.js.map → validate-44PVFQH7.js.map} +0 -0
- /package/dist/{videos-PJAPZPOT.js.map → videos-RWPQVXS5.js.map} +0 -0
- /package/dist/{viewer-check-6M34VY7K.js.map → viewer-check-KTRRUVZN.js.map} +0 -0
- /package/dist/{web-PUVVFMV3.js.map → web-6KUM7Q7S.js.map} +0 -0
- /package/dist/{winning-ads-ZCP4MIEQ.js.map → winning-ads-IT3O4EAN.js.map} +0 -0
- /package/dist/{write-commands-ZS4O4DSV.js.map → write-commands-3U5ZMIHH.js.map} +0 -0
- /package/dist/{write-commands-5LEEPKA7.js.map → write-commands-F5XPPLOO.js.map} +0 -0
- /package/dist/{x-ZKCLP23S.js.map → x-X7URL52T.js.map} +0 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import {
|
|
2
|
+
holdUnbilledSpend
|
|
3
|
+
} from "./chunk-Y5PNLB24.js";
|
|
4
|
+
import {
|
|
5
|
+
askAboutText
|
|
6
|
+
} from "./chunk-DLM5OSHM.js";
|
|
7
|
+
|
|
8
|
+
// src/engine/brand/brand-doc.ts
|
|
9
|
+
import { createHash } from "crypto";
|
|
10
|
+
import { mkdir, readdir, readFile, writeFile } from "fs/promises";
|
|
11
|
+
import path from "path";
|
|
12
|
+
import { z } from "zod";
|
|
13
|
+
var BRAND_DOC_MODEL = "google/gemini-3.5-flash-lite";
|
|
14
|
+
var REQUEST = {
|
|
15
|
+
provider: { order: ["google-vertex"], allow_fallbacks: false },
|
|
16
|
+
seed: 0,
|
|
17
|
+
response_format: { type: "json_object" }
|
|
18
|
+
};
|
|
19
|
+
var PROMPT_VERSION = 3;
|
|
20
|
+
var TIMEOUT_MS = 3e4;
|
|
21
|
+
var BRAND_MD_CHARS = 32e3;
|
|
22
|
+
var NOTE_CHARS = 600;
|
|
23
|
+
var COMPANY_MD_CHARS = 4e3;
|
|
24
|
+
var Font = z.object({
|
|
25
|
+
family: z.string().trim().min(1).max(60),
|
|
26
|
+
role: z.enum(["heading", "body", "any"]).catch("any"),
|
|
27
|
+
use: z.boolean()
|
|
28
|
+
});
|
|
29
|
+
var Color = z.object({
|
|
30
|
+
hex: z.string().trim().regex(/^#?[0-9a-fA-F]{6}$/).transform((h) => `#${h.replace(/^#/, "").toLowerCase()}`),
|
|
31
|
+
use: z.boolean()
|
|
32
|
+
});
|
|
33
|
+
var note = z.string().trim().min(1).max(NOTE_CHARS).nullable().optional().catch(null);
|
|
34
|
+
var Reading = z.object({
|
|
35
|
+
name: z.string().trim().min(1).max(80).nullable().catch(null),
|
|
36
|
+
wordmark: z.array(z.string().trim().min(1).max(40)).catch([]),
|
|
37
|
+
logoNames: z.array(z.string().trim().min(1).max(40)).catch([]),
|
|
38
|
+
fonts: z.array(z.unknown()).catch([]),
|
|
39
|
+
colors: z.array(z.unknown()).catch([]),
|
|
40
|
+
voice: note,
|
|
41
|
+
imagery: note,
|
|
42
|
+
logoUsage: note
|
|
43
|
+
});
|
|
44
|
+
function brandDocPrompt(docs) {
|
|
45
|
+
return [
|
|
46
|
+
"You read a company's brand guidelines (BRAND.md), the start of its company profile (COMPANY.md) and the file names of its logos. They may be written in any language, or several. Extract only what they state; never invent a value.",
|
|
47
|
+
"",
|
|
48
|
+
"Return JSON only, in this shape:",
|
|
49
|
+
'{"name": string | null, "wordmark": string[], "logoNames": string[], "fonts": [{"family": string, "role": "heading" | "body" | "any", "use": boolean}], "colors": [{"hex": "#rrggbb", "use": boolean}], "voice": string | null, "imagery": string | null, "logoUsage": string | null}',
|
|
50
|
+
"",
|
|
51
|
+
`- name: the brand's name exactly as written ("# Zernio Brand Guidelines" names Zernio). null when neither document states one, as in an unfilled template ("# Brand Guidelines", "# Company", TODO).`,
|
|
52
|
+
`- wordmark: every word the documents say the logo prints, as they quote it ("Wordmark: \\"permut\\"" gives "permut"; 'symbol plus "Cubbo" wordmark' gives "Cubbo"), even when it is also the name. [] when they quote none.`,
|
|
53
|
+
'- logoNames: a product or brand name a logo file name carries ("logo-engage-blue.png" gives "Engage"). Colours, variants, sizes and formats (dark, white, icon, isotype, png) are not names. [] when none.',
|
|
54
|
+
`- fonts: every typeface the guidelines name, by its family name exactly, the banned ones included. role is heading, body, or any when they do not say. use is false when the guidelines ban it, forbid it or say to avoid it or never use it, in any wording or language; true when the brand uses it. Only a named typeface counts: a generic family (sans-serif, serif, monospace, system-ui) or the operating system's own fonts ("system stack", "system fonts") is not one, so leave it out.`,
|
|
55
|
+
"- colors: every hex colour the guidelines give. use is false when they ban it or say to avoid it, true when it is a brand colour.",
|
|
56
|
+
"- voice: how the brand speaks, as the guidelines put it, at most two sentences in their language. null when they do not say.",
|
|
57
|
+
"- imagery: what the brand's pictures look like and never look like (photography, illustration, people; a ```generation-style block says it too), at most two sentences in their language. null when they do not say.",
|
|
58
|
+
"- logoUsage: which logo file an ad uses and how it must appear (which file for which product, line or background, what never to do to it), at most two sentences in their language. null when they do not say.",
|
|
59
|
+
"",
|
|
60
|
+
"<brand_md>",
|
|
61
|
+
(docs.brandMd ?? "").slice(0, BRAND_MD_CHARS),
|
|
62
|
+
"</brand_md>",
|
|
63
|
+
"<company_md>",
|
|
64
|
+
(docs.companyMd ?? "").slice(0, COMPANY_MD_CHARS),
|
|
65
|
+
"</company_md>",
|
|
66
|
+
"<logo_files>",
|
|
67
|
+
(docs.logoFiles ?? []).join("\n"),
|
|
68
|
+
"</logo_files>"
|
|
69
|
+
].join("\n");
|
|
70
|
+
}
|
|
71
|
+
function parseBrandDoc(answer) {
|
|
72
|
+
const parsed = Reading.safeParse(answer);
|
|
73
|
+
if (!parsed.success) return null;
|
|
74
|
+
const fonts = parsed.data.fonts.flatMap((f) => {
|
|
75
|
+
const font = Font.safeParse(f);
|
|
76
|
+
return font.success ? [font.data] : [];
|
|
77
|
+
});
|
|
78
|
+
const colors = parsed.data.colors.flatMap((c) => {
|
|
79
|
+
const color = Color.safeParse(c);
|
|
80
|
+
return color.success ? [color.data] : [];
|
|
81
|
+
});
|
|
82
|
+
const { voice, imagery, logoUsage } = parsed.data;
|
|
83
|
+
return {
|
|
84
|
+
...parsed.data.name ? { name: parsed.data.name } : {},
|
|
85
|
+
wordmark: [.../* @__PURE__ */ new Set([...parsed.data.wordmark, ...parsed.data.logoNames])],
|
|
86
|
+
fonts,
|
|
87
|
+
colors,
|
|
88
|
+
...voice ? { voice } : {},
|
|
89
|
+
...imagery ? { imagery } : {},
|
|
90
|
+
...logoUsage ? { logoUsage } : {}
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
function brandDocReader(cacheDir, onSpend) {
|
|
94
|
+
return async (docs) => {
|
|
95
|
+
const prompt = brandDocPrompt(docs);
|
|
96
|
+
const key = createHash("sha256").update(JSON.stringify([PROMPT_VERSION, BRAND_DOC_MODEL, prompt])).digest("hex");
|
|
97
|
+
const file = path.join(cacheDir, "brand-doc", `${key}.json`);
|
|
98
|
+
const cached = parseBrandDoc(await readFile(file, "utf8").then(JSON.parse, () => null));
|
|
99
|
+
if (cached) return cached;
|
|
100
|
+
const spent = [];
|
|
101
|
+
const answer = await askAboutText(BRAND_DOC_MODEL, prompt, (u) => onSpend ? onSpend(u) : spent.push(u), {
|
|
102
|
+
timeoutMs: TIMEOUT_MS,
|
|
103
|
+
request: REQUEST
|
|
104
|
+
}).catch(() => null);
|
|
105
|
+
await holdUnbilledSpend(cacheDir, spent).catch(() => void 0);
|
|
106
|
+
const reading = parseBrandDoc(answer);
|
|
107
|
+
if (reading) {
|
|
108
|
+
await mkdir(path.dirname(file), { recursive: true }).catch(() => void 0);
|
|
109
|
+
await writeFile(file, JSON.stringify(reading), "utf8").catch(() => void 0);
|
|
110
|
+
}
|
|
111
|
+
return reading;
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
var LOGO_FILE = /logo|lockup|wordmark|isotype|isologo/i;
|
|
115
|
+
async function workspaceBrandDocs(root) {
|
|
116
|
+
const read = (rel) => readFile(path.join(root, rel), "utf8").catch(() => null);
|
|
117
|
+
const logoFiles = (await readdir(path.join(root, "src", "brand", "logos")).catch(() => [])).filter((f) => /\.(png|jpe?g|webp|svg)$/i.test(f) && LOGO_FILE.test(f)).sort();
|
|
118
|
+
return { brandMd: await read("src/brand/BRAND.md"), companyMd: await read("COMPANY.md"), logoFiles };
|
|
119
|
+
}
|
|
120
|
+
async function readWorkspaceBrandDoc(root, opts = {}) {
|
|
121
|
+
const docs = await workspaceBrandDocs(root);
|
|
122
|
+
if (!docs.brandMd?.trim() && !docs.companyMd?.trim()) return null;
|
|
123
|
+
const read = opts.read ?? brandDocReader(path.join(root, "canvas", ".cache"), opts.onSpend);
|
|
124
|
+
return await read(docs).catch(() => null);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export {
|
|
128
|
+
LOGO_FILE,
|
|
129
|
+
readWorkspaceBrandDoc
|
|
130
|
+
};
|
|
131
|
+
//# sourceMappingURL=chunk-KDAINT54.js.map
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
import {
|
|
2
|
+
REDDIT_LINK_REJECTED,
|
|
3
|
+
redditSearchHints,
|
|
4
|
+
redditSubredditsHints,
|
|
5
|
+
redditThreadHints
|
|
6
|
+
} from "./chunk-UCJAPB5Y.js";
|
|
7
|
+
import {
|
|
8
|
+
handleResearchError,
|
|
9
|
+
writeResearchJson
|
|
10
|
+
} from "./chunk-CXYX6G3I.js";
|
|
11
|
+
import {
|
|
12
|
+
repeatedValues
|
|
13
|
+
} from "./chunk-ERSX3MKH.js";
|
|
14
|
+
import {
|
|
15
|
+
RESEARCH_REDDIT_THREAD_DEFAULT_COMMENTS
|
|
16
|
+
} from "./chunk-MKLAZD23.js";
|
|
17
|
+
import {
|
|
18
|
+
apiPost
|
|
19
|
+
} from "./chunk-GFWWHCBF.js";
|
|
20
|
+
import {
|
|
21
|
+
registerSchema
|
|
22
|
+
} from "./chunk-CCYZJMZ7.js";
|
|
23
|
+
|
|
24
|
+
// src/commands/research/reddit.ts
|
|
25
|
+
import { defineCommand } from "citty";
|
|
26
|
+
var TIMEOUT_MS = 18e4;
|
|
27
|
+
var TEXT_PREVIEW_CHARS = 1500;
|
|
28
|
+
var ITEM_FIELDS = {
|
|
29
|
+
kind: "post or comment",
|
|
30
|
+
subreddit: "Where it was said",
|
|
31
|
+
title: "The post's title (on a comment: the post it answers)",
|
|
32
|
+
text: "Verbatim \u2014 quote this, exactly",
|
|
33
|
+
text_truncated: "The text was cut; re-run with --full before quoting the end of it",
|
|
34
|
+
author: "Reddit username, or null once the account is deleted",
|
|
35
|
+
score: "Points",
|
|
36
|
+
comment_count: "Posts only",
|
|
37
|
+
created: "Date written (UTC)",
|
|
38
|
+
permalink: "Cite THIS link \u2014 it is built from where the words actually are",
|
|
39
|
+
depth: "Thread comments: 0 answers the post, 1 answers a comment",
|
|
40
|
+
source: "reddit_api / reddit_web = live Reddit; archive = the Arctic Shift archive of Reddit"
|
|
41
|
+
};
|
|
42
|
+
registerSchema({
|
|
43
|
+
command: "research.reddit.search",
|
|
44
|
+
description: "Search Reddit posts or comments for the audience's own words. Returns verbatim text with a real permalink for each hit. Start here for voice-of-customer work on Reddit.",
|
|
45
|
+
args: {
|
|
46
|
+
query: {
|
|
47
|
+
type: "string",
|
|
48
|
+
description: "Words to match \u2014 the audience's phrasing, not a description of it",
|
|
49
|
+
required: true
|
|
50
|
+
},
|
|
51
|
+
subreddit: {
|
|
52
|
+
type: "string",
|
|
53
|
+
description: "Subreddits to search (up to 10): comma-separated (couriersofreddit,AmazonFlexUK) or the flag repeated. Needed for --kind comments",
|
|
54
|
+
required: false
|
|
55
|
+
},
|
|
56
|
+
kind: {
|
|
57
|
+
type: "string",
|
|
58
|
+
description: "posts (default) or comments \u2014 the replies are where most of the voice is",
|
|
59
|
+
required: false,
|
|
60
|
+
enum: ["posts", "comments"]
|
|
61
|
+
},
|
|
62
|
+
since: { type: "string", description: "Only things written on or after this day, YYYY-MM-DD", required: false },
|
|
63
|
+
limit: { type: "number", description: "Results to return (1-50, default 25)", required: false },
|
|
64
|
+
full: {
|
|
65
|
+
type: "boolean",
|
|
66
|
+
description: "Return every text whole instead of a preview",
|
|
67
|
+
required: false,
|
|
68
|
+
default: false
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
registerSchema({
|
|
73
|
+
command: "research.reddit.thread",
|
|
74
|
+
description: "Read one Reddit thread verbatim: the post and its best comments, each with its own permalink. Use it on any Reddit link before quoting it \u2014 it also exposes links that point somewhere other than they claim.",
|
|
75
|
+
args: {
|
|
76
|
+
target: {
|
|
77
|
+
type: "string",
|
|
78
|
+
description: "The thread's link (any Reddit form, including share links) or post id",
|
|
79
|
+
required: true
|
|
80
|
+
},
|
|
81
|
+
comments: { type: "number", description: "Comments to return, best first (0-200, default 40)", required: false },
|
|
82
|
+
full: {
|
|
83
|
+
type: "boolean",
|
|
84
|
+
description: "Return every text whole instead of a preview",
|
|
85
|
+
required: false,
|
|
86
|
+
default: false
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
registerSchema({
|
|
91
|
+
command: "research.reddit.subreddits",
|
|
92
|
+
description: "Find the subreddits where an audience talks about a topic, with member counts and whether they can be read. Run it before searching, instead of guessing subreddit names.",
|
|
93
|
+
args: {
|
|
94
|
+
query: { type: "string", description: 'The audience or topic, e.g. "amazon flex uk", "deliveroo"', required: true },
|
|
95
|
+
limit: { type: "number", description: "Subreddits to return (1-25, default 10)", required: false }
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
function searchReddit(body) {
|
|
99
|
+
return apiPost("/api/research/reddit/search", body, { timeoutMs: TIMEOUT_MS });
|
|
100
|
+
}
|
|
101
|
+
function findSubreddits(body) {
|
|
102
|
+
return apiPost("/api/research/reddit/subreddits", body, { timeoutMs: TIMEOUT_MS });
|
|
103
|
+
}
|
|
104
|
+
function row(item, full) {
|
|
105
|
+
const cut = !full && item.text.length > TEXT_PREVIEW_CHARS;
|
|
106
|
+
return {
|
|
107
|
+
kind: item.kind,
|
|
108
|
+
subreddit: item.subreddit,
|
|
109
|
+
title: item.title,
|
|
110
|
+
text: cut ? `${item.text.slice(0, TEXT_PREVIEW_CHARS)}\u2026` : item.text,
|
|
111
|
+
...cut ? { text_truncated: true } : {},
|
|
112
|
+
author: item.author,
|
|
113
|
+
score: item.score,
|
|
114
|
+
...item.kind === "post" ? { comment_count: item.commentCount } : {},
|
|
115
|
+
created: item.createdAt.slice(0, 10),
|
|
116
|
+
permalink: item.permalink,
|
|
117
|
+
...item.depth !== null ? { depth: item.depth } : {}
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
function redditFix(code) {
|
|
121
|
+
if (code === "NOT_FOUND") return REDDIT_LINK_REJECTED;
|
|
122
|
+
if (code === "BAD_REQUEST" || code === "VALIDATION_ERROR") {
|
|
123
|
+
return { action: "retry_with_changes", explanation: "Follow the message above and run the command again." };
|
|
124
|
+
}
|
|
125
|
+
return {
|
|
126
|
+
action: "continue_without",
|
|
127
|
+
explanation: "Don't loop on it. Finish the job with the other sources, say plainly that Reddit is a gap in this research, and never stand in a summary's paraphrase for a Reddit quote."
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
function failValidation(message) {
|
|
131
|
+
writeResearchJson({ ok: false, error: { code: "VALIDATION_ERROR", message, fix: redditFix("VALIDATION_ERROR") } });
|
|
132
|
+
process.exit(1);
|
|
133
|
+
}
|
|
134
|
+
function subredditsFromArgs(rawArgs, parsed) {
|
|
135
|
+
return repeatedValues(rawArgs, "subreddit", parsed).flatMap((value) => value.split(",")).map((name) => name.trim()).filter(Boolean);
|
|
136
|
+
}
|
|
137
|
+
var searchCommand = defineCommand({
|
|
138
|
+
meta: {
|
|
139
|
+
name: "search",
|
|
140
|
+
description: `Search Reddit for the audience's own words, verbatim, each with a permalink you can cite.
|
|
141
|
+
|
|
142
|
+
Start here for Reddit voice-of-customer. Matches words, not meaning \u2014 search the way the audience writes, and quote a phrase to keep it together ('"right to work"').
|
|
143
|
+
|
|
144
|
+
Examples:
|
|
145
|
+
baker research reddit search "agency never paid" --subreddit couriersofreddit,AmazonFlexUK
|
|
146
|
+
baker research reddit search '"right to work"' --subreddit UKJobs,AmazonFlexUK
|
|
147
|
+
baker research reddit search "visa" --subreddit UberEATS --kind comments --since 2025-01-01
|
|
148
|
+
baker research reddit search "side hustle student deliveries"`
|
|
149
|
+
},
|
|
150
|
+
args: {
|
|
151
|
+
query: { type: "positional", description: "Words to match", required: false },
|
|
152
|
+
subreddit: {
|
|
153
|
+
type: "string",
|
|
154
|
+
description: "Subreddits (up to 10): comma-separated, or repeat the flag",
|
|
155
|
+
required: false
|
|
156
|
+
},
|
|
157
|
+
kind: { type: "string", description: "posts (default) or comments", required: false },
|
|
158
|
+
since: { type: "string", description: "YYYY-MM-DD", required: false },
|
|
159
|
+
limit: { type: "string", description: "1-50, default 25", required: false },
|
|
160
|
+
full: { type: "boolean", description: "Whole texts, not previews", required: false }
|
|
161
|
+
},
|
|
162
|
+
run: async ({ args, rawArgs }) => {
|
|
163
|
+
const query = args.query?.trim();
|
|
164
|
+
if (!query) failValidation('Say what to search for: baker research reddit search "<words>"');
|
|
165
|
+
const kind = args.kind ?? "posts";
|
|
166
|
+
if (kind !== "posts" && kind !== "comments") failValidation("--kind must be posts or comments");
|
|
167
|
+
const body = {
|
|
168
|
+
query,
|
|
169
|
+
kind,
|
|
170
|
+
subreddits: subredditsFromArgs(rawArgs, args.subreddit)
|
|
171
|
+
};
|
|
172
|
+
if (args.since) body.since = args.since;
|
|
173
|
+
if (args.limit) body.limit = Number(args.limit);
|
|
174
|
+
try {
|
|
175
|
+
const data = await searchReddit(body);
|
|
176
|
+
writeResearchJson({
|
|
177
|
+
ok: true,
|
|
178
|
+
data: data.results.map((item) => row(item, Boolean(args.full))),
|
|
179
|
+
source: data.source,
|
|
180
|
+
fields: ITEM_FIELDS,
|
|
181
|
+
hints: redditSearchHints({ resultCount: data.results.length, kind, source: data.source })
|
|
182
|
+
});
|
|
183
|
+
} catch (err) {
|
|
184
|
+
handleResearchError(err, redditFix);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
var threadCommand = defineCommand({
|
|
189
|
+
meta: {
|
|
190
|
+
name: "thread",
|
|
191
|
+
description: `Read one Reddit thread verbatim \u2014 the post and its best comments, each with its own permalink.
|
|
192
|
+
|
|
193
|
+
Run it on every Reddit link before you quote from it, including links a research summary gave you: it refuses a link whose post is somewhere other than the link claims.
|
|
194
|
+
|
|
195
|
+
Examples:
|
|
196
|
+
baker research reddit thread "https://www.reddit.com/r/AmazonFlexUK/comments/1abc2de/agency_still_hasnt_paid_me/"
|
|
197
|
+
baker research reddit thread "https://www.reddit.com/r/UberEATS/s/3TzXiyxaMD" --comments 100
|
|
198
|
+
baker research reddit thread 1abc2de --full`
|
|
199
|
+
},
|
|
200
|
+
args: {
|
|
201
|
+
target: { type: "positional", description: "Thread link or post id", required: false },
|
|
202
|
+
comments: { type: "string", description: "0-200, default 40", required: false },
|
|
203
|
+
full: { type: "boolean", description: "Whole texts, not previews", required: false }
|
|
204
|
+
},
|
|
205
|
+
run: async ({ args }) => {
|
|
206
|
+
const target = args.target?.trim();
|
|
207
|
+
if (!target) failValidation("Pass the thread's link or post id: baker research reddit thread <url>");
|
|
208
|
+
const commentsAsked = args.comments ? Number(args.comments) : RESEARCH_REDDIT_THREAD_DEFAULT_COMMENTS;
|
|
209
|
+
const body = { target, comments: commentsAsked };
|
|
210
|
+
try {
|
|
211
|
+
const data = await apiPost("/api/research/reddit/thread", body, {
|
|
212
|
+
timeoutMs: TIMEOUT_MS
|
|
213
|
+
});
|
|
214
|
+
const full = Boolean(args.full);
|
|
215
|
+
writeResearchJson({
|
|
216
|
+
ok: true,
|
|
217
|
+
data: { post: row(data.post, full), comments: data.comments.map((item) => row(item, full)) },
|
|
218
|
+
source: data.source,
|
|
219
|
+
fields: ITEM_FIELDS,
|
|
220
|
+
hints: redditThreadHints({
|
|
221
|
+
commentsShown: data.comments.length,
|
|
222
|
+
commentsAsked,
|
|
223
|
+
commentCount: data.post.commentCount,
|
|
224
|
+
source: data.source
|
|
225
|
+
})
|
|
226
|
+
});
|
|
227
|
+
} catch (err) {
|
|
228
|
+
handleResearchError(err, redditFix);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
var subredditsCommand = defineCommand({
|
|
233
|
+
meta: {
|
|
234
|
+
name: "subreddits",
|
|
235
|
+
description: `Find the subreddits where an audience talks \u2014 name, members, and whether it can be read.
|
|
236
|
+
|
|
237
|
+
Run it before \`reddit search\` instead of guessing names: a plausible-sounding subreddit can be dead (r/CouriersUK has one post), while the conversation sits in r/AmazonFlexUK or r/deliveroos.
|
|
238
|
+
|
|
239
|
+
Examples:
|
|
240
|
+
baker research reddit subreddits "amazon flex uk"
|
|
241
|
+
baker research reddit subreddits "deliveroo" --limit 5`
|
|
242
|
+
},
|
|
243
|
+
args: {
|
|
244
|
+
query: { type: "positional", description: "Audience or topic", required: false },
|
|
245
|
+
limit: { type: "string", description: "1-25, default 10", required: false }
|
|
246
|
+
},
|
|
247
|
+
run: async ({ args }) => {
|
|
248
|
+
const query = args.query?.trim();
|
|
249
|
+
if (!query) failValidation('Say what to look for: baker research reddit subreddits "<audience or topic>"');
|
|
250
|
+
const body = { query };
|
|
251
|
+
if (args.limit) body.limit = Number(args.limit);
|
|
252
|
+
try {
|
|
253
|
+
const data = await findSubreddits(body);
|
|
254
|
+
writeResearchJson({
|
|
255
|
+
ok: true,
|
|
256
|
+
data: data.results,
|
|
257
|
+
source: data.source,
|
|
258
|
+
fields: {
|
|
259
|
+
name: "Pass this to --subreddit",
|
|
260
|
+
subscribers: "Members \u2014 size, not activity",
|
|
261
|
+
access: "public / restricted (readable, members post) / private (unreadable) / null when the source doesn't say",
|
|
262
|
+
description: "The subreddit's own summary",
|
|
263
|
+
url: "The subreddit"
|
|
264
|
+
},
|
|
265
|
+
hints: redditSubredditsHints({ resultCount: data.results.length })
|
|
266
|
+
});
|
|
267
|
+
} catch (err) {
|
|
268
|
+
handleResearchError(err, redditFix);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
});
|
|
272
|
+
var redditCommand = defineCommand({
|
|
273
|
+
meta: {
|
|
274
|
+
name: "reddit",
|
|
275
|
+
description: `Read Reddit verbatim \u2014 the one site no page reader will open for us.
|
|
276
|
+
|
|
277
|
+
Commands:
|
|
278
|
+
subreddits \u2014 Find where the audience talks (start here)
|
|
279
|
+
search \u2014 Find posts or comments in the audience's own words
|
|
280
|
+
thread \u2014 Read one thread: the post and its best comments
|
|
281
|
+
|
|
282
|
+
Examples:
|
|
283
|
+
baker research reddit subreddits "amazon flex uk"
|
|
284
|
+
baker research reddit search "agency never paid" --subreddit couriersofreddit,AmazonFlexUK --kind comments
|
|
285
|
+
baker research reddit thread "https://www.reddit.com/r/AmazonFlexUK/comments/1abc2de/"
|
|
286
|
+
Full guide: __tooling__/docs/tools/baker/research.md`
|
|
287
|
+
},
|
|
288
|
+
subCommands: { subreddits: subredditsCommand, search: searchCommand, thread: threadCommand }
|
|
289
|
+
});
|
|
290
|
+
|
|
291
|
+
export {
|
|
292
|
+
searchReddit,
|
|
293
|
+
findSubreddits,
|
|
294
|
+
subredditsFromArgs,
|
|
295
|
+
redditCommand
|
|
296
|
+
};
|
|
297
|
+
//# sourceMappingURL=chunk-KKKZRQFY.js.map
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import {
|
|
2
|
+
nodeParamsPreview
|
|
3
|
+
} from "./chunk-XZAVBONI.js";
|
|
4
|
+
import {
|
|
5
|
+
creativeSlugFromCanvasPath
|
|
6
|
+
} from "./chunk-EJBLF2LI.js";
|
|
7
|
+
import {
|
|
8
|
+
parseDefinitionDelivery,
|
|
9
|
+
parseDefinitionSeriesPlace,
|
|
10
|
+
parseDefinitionSourceFields,
|
|
11
|
+
parseDefinitionStrategyFields,
|
|
12
|
+
prepareCanvas
|
|
13
|
+
} from "./chunk-ZEGWP4FP.js";
|
|
14
|
+
import {
|
|
15
|
+
BackendClient
|
|
16
|
+
} from "./chunk-DWPOAU4Z.js";
|
|
17
|
+
import {
|
|
18
|
+
nodeDependencies
|
|
19
|
+
} from "./chunk-X3GWGFZP.js";
|
|
20
|
+
import {
|
|
21
|
+
requireCredentialsFromEnv
|
|
22
|
+
} from "./chunk-EL3TDR5S.js";
|
|
23
|
+
|
|
24
|
+
// src/commands/canvas/sync-definition.ts
|
|
25
|
+
import { readdir, readFile, stat } from "fs/promises";
|
|
26
|
+
import path from "path";
|
|
27
|
+
import { parseDocument } from "yaml";
|
|
28
|
+
import { defineCommand } from "citty";
|
|
29
|
+
|
|
30
|
+
// src/commands/canvas/definition-graph.ts
|
|
31
|
+
var MAX_NODES = 300;
|
|
32
|
+
var PREVIEWABLE_INGEST_EXPECTS = /* @__PURE__ */ new Set(["image"]);
|
|
33
|
+
function nodeInputPreviewUrl(type, params) {
|
|
34
|
+
if (type !== "ingest" || !params || typeof params !== "object") return void 0;
|
|
35
|
+
const p = params;
|
|
36
|
+
if (p.source !== "url" || typeof p.url !== "string") return void 0;
|
|
37
|
+
if (!/^https?:\/\//i.test(p.url)) return void 0;
|
|
38
|
+
if (typeof p.expect === "string" && !PREVIEWABLE_INGEST_EXPECTS.has(p.expect)) return void 0;
|
|
39
|
+
return p.url;
|
|
40
|
+
}
|
|
41
|
+
function canvasToDefinitionGraph(canvas) {
|
|
42
|
+
const rawNodes = canvas?.nodes;
|
|
43
|
+
if (!Array.isArray(rawNodes)) return null;
|
|
44
|
+
const parsed = [];
|
|
45
|
+
for (const raw of rawNodes) {
|
|
46
|
+
const id = raw?.id;
|
|
47
|
+
const type = raw?.type;
|
|
48
|
+
if (typeof id !== "string" || typeof type !== "string") continue;
|
|
49
|
+
parsed.push({ id, type, inputs: raw.inputs, params: raw.params });
|
|
50
|
+
if (parsed.length >= MAX_NODES) break;
|
|
51
|
+
}
|
|
52
|
+
if (parsed.length === 0) return null;
|
|
53
|
+
const ids = new Set(parsed.map((n) => n.id));
|
|
54
|
+
const nodes = parsed.map(({ id, type, inputs, params }) => {
|
|
55
|
+
const deps = nodeDependencies({ id, inputs, params }, ids);
|
|
56
|
+
deps.delete(id);
|
|
57
|
+
const depList = [...deps];
|
|
58
|
+
const paramsPreview = nodeParamsPreview(params, depList);
|
|
59
|
+
const base = { id, type };
|
|
60
|
+
if (depList.length > 0) base.deps = depList;
|
|
61
|
+
if (paramsPreview) base.paramsPreview = paramsPreview;
|
|
62
|
+
const inputPreviewUrl = nodeInputPreviewUrl(type, params);
|
|
63
|
+
if (inputPreviewUrl) base.inputPreviewUrl = inputPreviewUrl;
|
|
64
|
+
return base;
|
|
65
|
+
});
|
|
66
|
+
const rawOutput = canvas?.output;
|
|
67
|
+
const outNode = rawOutput?.node;
|
|
68
|
+
const outSlot = rawOutput?.output;
|
|
69
|
+
const output = typeof outNode === "string" && typeof outSlot === "string" ? { node: outNode, output: outSlot } : void 0;
|
|
70
|
+
return { nodes, output };
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// src/commands/canvas/sync-definition.ts
|
|
74
|
+
function buildDefinitionSyncPayload(input, graph, chatId) {
|
|
75
|
+
const { canvas: _canvas, ...fields } = input;
|
|
76
|
+
return Object.fromEntries([
|
|
77
|
+
...Object.entries(fields).filter(([, v]) => v !== void 0),
|
|
78
|
+
["graph", graph],
|
|
79
|
+
["chatId", chatId]
|
|
80
|
+
]);
|
|
81
|
+
}
|
|
82
|
+
async function readDefinitionSourceFields(canvasPath) {
|
|
83
|
+
try {
|
|
84
|
+
return parseDefinitionSourceFields(await readFile(path.join(path.dirname(canvasPath), "_definition.md"), "utf8"));
|
|
85
|
+
} catch {
|
|
86
|
+
return {};
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
async function readDefinitionPlatforms(canvasPath) {
|
|
90
|
+
const raw = await readFile(path.join(path.dirname(canvasPath), "_definition.md"), "utf8").catch(() => null);
|
|
91
|
+
const delivery = raw === null ? null : parseDefinitionDelivery(raw);
|
|
92
|
+
return delivery ? { platforms: delivery.platforms ?? null } : {};
|
|
93
|
+
}
|
|
94
|
+
async function readDefinitionBody(canvasPath) {
|
|
95
|
+
try {
|
|
96
|
+
return { definition: await readFile(path.join(path.dirname(canvasPath), "_definition.md"), "utf8") };
|
|
97
|
+
} catch {
|
|
98
|
+
return {};
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
async function readDefinitionTitle(canvasPath) {
|
|
102
|
+
try {
|
|
103
|
+
const raw = await readFile(path.join(path.dirname(canvasPath), "_definition.md"), "utf8");
|
|
104
|
+
const match = raw.match(/^---\r?\n([\s\S]*?\r?\n)?---/);
|
|
105
|
+
const doc = match ? parseDocument(match[1] ?? "") : null;
|
|
106
|
+
const title = doc && doc.errors.length === 0 ? doc.get("title") : void 0;
|
|
107
|
+
return typeof title === "string" && title.trim() ? title.trim() : void 0;
|
|
108
|
+
} catch {
|
|
109
|
+
return void 0;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
async function readDefinitionStrategyFields(canvasPath) {
|
|
113
|
+
try {
|
|
114
|
+
return parseDefinitionStrategyFields(await readFile(path.join(path.dirname(canvasPath), "_definition.md"), "utf8"));
|
|
115
|
+
} catch {
|
|
116
|
+
return {};
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
async function readDefinitionSeriesPlace(canvasPath) {
|
|
120
|
+
try {
|
|
121
|
+
return parseDefinitionSeriesPlace(await readFile(path.join(path.dirname(canvasPath), "_definition.md"), "utf8")) ?? {};
|
|
122
|
+
} catch {
|
|
123
|
+
return {};
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
async function syncCreativeDefinitionBestEffort(input) {
|
|
127
|
+
const chatId = process.env.BAKER_CHAT_ID;
|
|
128
|
+
if (!chatId) return;
|
|
129
|
+
const graph = canvasToDefinitionGraph(input.canvas);
|
|
130
|
+
if (!graph || graph.nodes.length === 0) return;
|
|
131
|
+
try {
|
|
132
|
+
const creds = requireCredentialsFromEnv();
|
|
133
|
+
const client = new BackendClient({ baseUrl: creds.url, apiKey: creds.apiKey });
|
|
134
|
+
await client.syncCreativeDefinition(buildDefinitionSyncPayload(input, graph, chatId));
|
|
135
|
+
process.stdout.write(`[definition] synced workflow graph (${graph.nodes.length} nodes) \u2014 view it in the dashboard
|
|
136
|
+
`);
|
|
137
|
+
} catch (e) {
|
|
138
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
139
|
+
process.stderr.write(`[warn] workflow graph not synced (${msg})
|
|
140
|
+
`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
async function resolveCanvasPath(inputPath) {
|
|
144
|
+
const resolved = path.resolve(inputPath);
|
|
145
|
+
let dir = resolved;
|
|
146
|
+
try {
|
|
147
|
+
if ((await stat(resolved)).isFile()) {
|
|
148
|
+
if (resolved.endsWith(".canvas.json")) return resolved;
|
|
149
|
+
dir = path.dirname(resolved);
|
|
150
|
+
}
|
|
151
|
+
} catch {
|
|
152
|
+
dir = resolved.endsWith(".canvas.json") ? path.dirname(resolved) : resolved;
|
|
153
|
+
}
|
|
154
|
+
let entries;
|
|
155
|
+
try {
|
|
156
|
+
entries = await readdir(dir);
|
|
157
|
+
} catch {
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
const canvases = entries.filter((name) => name.endsWith(".canvas.json"));
|
|
161
|
+
const slug = creativeSlugFromCanvasPath(`${dir}/x/`);
|
|
162
|
+
const chosen = (slug ? canvases.find((name) => name === `${slug}.canvas.json`) : void 0) ?? canvases[0];
|
|
163
|
+
return chosen ? path.join(dir, chosen) : null;
|
|
164
|
+
}
|
|
165
|
+
var syncDefinitionCommand = defineCommand({
|
|
166
|
+
meta: {
|
|
167
|
+
name: "sync-definition",
|
|
168
|
+
description: "Push a creative's current node-graph + input thumbnails to the dashboard without rendering. The graph has the creative's blueprint applied (prompt.json and scenes/*.json edits), exactly as `run` would render it, without changing any file. Runs automatically when you edit a creative's canvas.json or prompt.json."
|
|
169
|
+
},
|
|
170
|
+
args: {
|
|
171
|
+
file: {
|
|
172
|
+
type: "positional",
|
|
173
|
+
required: true,
|
|
174
|
+
description: "A path under src/creatives/<slug>/ (the .canvas.json, its prompt.json, or the folder)"
|
|
175
|
+
},
|
|
176
|
+
title: {
|
|
177
|
+
type: "boolean",
|
|
178
|
+
description: "Also record the title its _definition.md gives. Only for a creative just made from another (a series ad, a translation), never on an edit re-sync."
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
async run({ args }) {
|
|
182
|
+
const canvasPath = await resolveCanvasPath(String(args.file));
|
|
183
|
+
if (!canvasPath) {
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
const slug = creativeSlugFromCanvasPath(canvasPath);
|
|
187
|
+
if (!slug) return;
|
|
188
|
+
let canvas;
|
|
189
|
+
let sourceSha;
|
|
190
|
+
try {
|
|
191
|
+
const prepared = await prepareCanvas(canvasPath, { write: false });
|
|
192
|
+
canvas = prepared.fileGraph;
|
|
193
|
+
sourceSha = prepared.sourceSha;
|
|
194
|
+
} catch {
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
const title = args.title ? await readDefinitionTitle(canvasPath) : void 0;
|
|
198
|
+
await syncCreativeDefinitionBestEffort({
|
|
199
|
+
slug,
|
|
200
|
+
canvas,
|
|
201
|
+
sourceSha,
|
|
202
|
+
...title ? { title } : {},
|
|
203
|
+
...await readDefinitionSourceFields(canvasPath),
|
|
204
|
+
...await readDefinitionStrategyFields(canvasPath),
|
|
205
|
+
...await readDefinitionSeriesPlace(canvasPath),
|
|
206
|
+
...await readDefinitionPlatforms(canvasPath),
|
|
207
|
+
...await readDefinitionBody(canvasPath)
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
export {
|
|
213
|
+
buildDefinitionSyncPayload,
|
|
214
|
+
readDefinitionSourceFields,
|
|
215
|
+
readDefinitionPlatforms,
|
|
216
|
+
readDefinitionBody,
|
|
217
|
+
readDefinitionTitle,
|
|
218
|
+
readDefinitionStrategyFields,
|
|
219
|
+
readDefinitionSeriesPlace,
|
|
220
|
+
syncCreativeDefinitionBestEffort,
|
|
221
|
+
resolveCanvasPath,
|
|
222
|
+
syncDefinitionCommand
|
|
223
|
+
};
|
|
224
|
+
//# sourceMappingURL=chunk-KLO36KTV.js.map
|