@koda-sl/baker-cli 0.553.0 → 0.555.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 +8 -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-7QKQEHKT.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-B6ER4TQ7.js +2437 -0
- package/dist/analytics-QW5ZXDJR.js +447 -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-Y3DALQIU.js +38 -0
- package/dist/bid-pricing-UUAC4GTQ.js +103 -0
- package/dist/brand-IZYD5SBJ.js +22 -0
- package/dist/brief-NA3E2W4P.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-WHFDCHUP.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-YBHXCXWZ.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-3HKZU3Y5.js +19 -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-6PT22YSR.js +91 -0
- package/dist/chunk-6WVYBY2G.js +8954 -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-AL4MRNYI.js +709 -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-DAMC4FKK.js +224 -0
- package/dist/chunk-DSDI5DY3.js +115 -0
- package/dist/chunk-DSDI5DY3.js.map +1 -0
- package/dist/chunk-DWPOAU4Z.js +5471 -0
- package/dist/chunk-EENYLJUN.js +225 -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-KOEXPN3G.js +2209 -0
- package/dist/chunk-KT5JVIPZ.js +91 -0
- package/dist/chunk-LC6PVPJX.js +76 -0
- package/dist/chunk-LETR3RQE.js +275 -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-OBQ5YUOZ.js +1902 -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-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-TWFZIHKK.js +219 -0
- package/dist/chunk-U6G6ALXP.js +66 -0
- package/dist/chunk-UCJAPB5Y.js +334 -0
- package/dist/chunk-VFDWUIGR.js +57 -0
- package/dist/chunk-WC3YSN7L.js +604 -0
- package/dist/chunk-WIOPEK7K.js +930 -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-XYKODRQR.js +191 -0
- package/dist/chunk-XZAVBONI.js +64 -0
- package/dist/chunk-Y5PNLB24.js +84 -0
- package/dist/claim-PGDIRXIC.js +200 -0
- package/dist/cli.js +34 -34
- 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-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-LTIV3XPT.js +58 -0
- package/dist/creatives-Y2WLGDJW.js +223 -0
- package/dist/credentials-J5DMQJWN.js +290 -0
- package/dist/critique-RFTS2I46.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-2JVWCYRF.js +134 -0
- package/dist/draft-2JVWCYRF.js.map +1 -0
- package/dist/draft-4WMYCA7I.js +315 -0
- package/dist/draft-4WMYCA7I.js.map +1 -0
- package/dist/draft-7VGBJIJU.js +260 -0
- package/dist/draft-7VGBJIJU.js.map +1 -0
- package/dist/draft-DR5BJK7V.js +138 -0
- package/dist/draft-DR5BJK7V.js.map +1 -0
- package/dist/draft-EB5ZFDVN.js +557 -0
- package/dist/draft-EB5ZFDVN.js.map +1 -0
- package/dist/draft-I2FLECEX.js +220 -0
- package/dist/draft-N56HPS36.js +374 -0
- package/dist/draft-N56HPS36.js.map +1 -0
- package/dist/draft-ZLZRTPY6.js +332 -0
- package/dist/draft-ZLZRTPY6.js.map +1 -0
- package/dist/engine/index.js +5 -5
- 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-PXWPR3NZ.js +136 -0
- package/dist/feedback-QSIPSNAL.js +115 -0
- package/dist/feedback-record-DJHJWJAF.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-IJ2UUICC.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/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-VUWUKGD6.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/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-L3WDTW4D.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-RONIUYLJ.js +1330 -0
- package/dist/linkedin-RONIUYLJ.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-ZIJQZD5K.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-L4BI7HFL.js +35 -0
- package/dist/members-BX37KHKO.js +47 -0
- package/dist/meta-2GJZPVKM.js +122 -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/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-MA2GB6WL.js +96 -0
- package/dist/research-TDH4OBX6.js +265 -0
- package/dist/research-WWJUNYSJ.js +75 -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-FRPO2WNQ.js +69 -0
- package/dist/run-HENSSAQW.js +71 -0
- package/dist/scaffold-ad-QQBCUYUO.js +1513 -0
- package/dist/scaffold-static-ad-WUOAQEXS.js +1011 -0
- package/dist/scaffold-video-KFQAKQUO.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/search-2BAY3KKX.js +177 -0
- package/dist/select-K2SXPDDJ.js +110 -0
- package/dist/set-prompt-BZFOV3EB.js +199 -0
- package/dist/setup-links-QT63UZBR.js +144 -0
- package/dist/shopify-Q7TQIQ6N.js +4009 -0
- package/dist/shopify-Q7TQIQ6N.js.map +1 -0
- package/dist/site-S6QVMP7W.js +180 -0
- package/dist/sources-DTQ4NQAM.js +30 -0
- package/dist/sources-ORG5KQSW.js +457 -0
- package/dist/stale-5O7BQVTN.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-IDXFTGHP.js +49 -0
- package/dist/study-writes-GBUUKX4O.js +471 -0
- package/dist/sync-7LJZPHM3.js +57 -0
- package/dist/sync-definition-Q3XUSEZJ.js +70 -0
- package/dist/tag-manager-5WZPX2FJ.js +43 -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-KLF3Y4QO.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-CBITGC7C.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-SAQEORZY.js +125 -0
- package/dist/videos-GOIDZVVD.js +41 -0
- package/dist/viewer-check-KTRRUVZN.js +83 -0
- package/dist/web-6KUM7Q7S.js +173 -0
- package/dist/winning-ads-LOMI72Q2.js +86 -0
- package/dist/write-commands-3U5ZMIHH.js +1524 -0
- package/dist/write-commands-F5XPPLOO.js +1169 -0
- package/dist/x-APVY4YHX.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-EVQ37EV3.js +0 -120
- package/dist/ads-O5PUYU7H.js +0 -48
- 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-RQQWU7AP.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/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-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-2NKXOBT6.js +0 -106
- package/dist/draft-2NKXOBT6.js.map +0 -1
- package/dist/draft-3MPADYS4.js +0 -220
- package/dist/draft-AAEGEQZZ.js +0 -247
- package/dist/draft-AAEGEQZZ.js.map +0 -1
- package/dist/draft-CRDQR5I3.js +0 -342
- package/dist/draft-CRDQR5I3.js.map +0 -1
- package/dist/draft-I63QQ7LY.js +0 -106
- package/dist/draft-I63QQ7LY.js.map +0 -1
- package/dist/draft-PO5X4UVA.js +0 -313
- package/dist/draft-PO5X4UVA.js.map +0 -1
- package/dist/draft-QCKJT7XQ.js +0 -288
- package/dist/draft-QCKJT7XQ.js.map +0 -1
- package/dist/draft-VMLXZQQX.js +0 -408
- package/dist/draft-VMLXZQQX.js.map +0 -1
- 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-A3HLGTSI.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-HWEDJ4YS.js +0 -144
- package/dist/google-HWEDJ4YS.js.map +0 -1
- package/dist/google-WH3IXXMX.js +0 -3285
- package/dist/google-ads-4DLYASRC.js +0 -198
- 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/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-ZOBYUBGV.js +0 -1330
- package/dist/linkedin-ZOBYUBGV.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-IRXPQRBH.js +0 -122
- 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/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/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-PVMHMVIC.js +0 -3980
- package/dist/shopify-PVMHMVIC.js.map +0 -1
- 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/tag-manager-XAX5AI42.js +0 -43
- 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-2IZMW46M.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-O5PUYU7H.js.map → ads-7QKQEHKT.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-CZMCM7XC.js.map → analytics-B6ER4TQ7.js.map} +0 -0
- /package/dist/{analytics-K5FCQLI5.js.map → analytics-QW5ZXDJR.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-Y3DALQIU.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-NA3E2W4P.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-WHFDCHUP.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-RQQWU7AP.js.map → chatgpt-YBHXCXWZ.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-4XMPL3RU.js.map → chunk-3HKZU3Y5.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-IBBGABK2.js.map → chunk-6PT22YSR.js.map} +0 -0
- /package/dist/{chunk-QFVZIQRQ.js.map → chunk-6WVYBY2G.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-ZMTWQDFC.js.map → chunk-AL4MRNYI.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-YCAJCVW4.js.map → chunk-DAMC4FKK.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-N5AIO23H.js.map → chunk-KOEXPN3G.js.map} +0 -0
- /package/dist/{chunk-JBMZVC5D.js.map → chunk-KT5JVIPZ.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-XB4NKZAQ.js.map → chunk-N3PASNUA.js.map} +0 -0
- /package/dist/{chunk-SFQFUQDW.js.map → chunk-NL77JRKE.js.map} +0 -0
- /package/dist/{chunk-OIORUNKH.js.map → chunk-OBQ5YUOZ.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-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-IC4MREQH.js.map → chunk-TWFZIHKK.js.map} +0 -0
- /package/dist/{chunk-73MLPGI2.js.map → chunk-U6G6ALXP.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-FSEFZZ2T.js.map → chunk-WIOPEK7K.js.map} +0 -0
- /package/dist/{chunk-5NLUTJCQ.js.map → chunk-X3GWGFZP.js.map} +0 -0
- /package/dist/{chunk-Y4ZBNZBU.js.map → chunk-XYKODRQR.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/{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-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-LTIV3XPT.js.map} +0 -0
- /package/dist/{creatives-E4CTMZJJ.js.map → creatives-Y2WLGDJW.js.map} +0 -0
- /package/dist/{credentials-E2AIMWKX.js.map → credentials-J5DMQJWN.js.map} +0 -0
- /package/dist/{critique-JVT6X2T3.js.map → critique-RFTS2I46.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-3MPADYS4.js.map → draft-I2FLECEX.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-IVSLM5PN.js.map → feedback-PXWPR3NZ.js.map} +0 -0
- /package/dist/{feedback-HJRVTU6C.js.map → feedback-QSIPSNAL.js.map} +0 -0
- /package/dist/{feedback-record-P7CO3IGE.js.map → feedback-record-DJHJWJAF.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-A3HLGTSI.js.map → ga4-IJ2UUICC.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-WH3IXXMX.js.map → google-UJ4YJGTJ.js.map} +0 -0
- /package/dist/{google-ads-4DLYASRC.js.map → google-ads-RRKKSKDD.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-VUWUKGD6.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/{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-L3WDTW4D.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-ZIJQZD5K.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-L4BI7HFL.js.map} +0 -0
- /package/dist/{members-N3PQSVQC.js.map → members-BX37KHKO.js.map} +0 -0
- /package/dist/{meta-IRXPQRBH.js.map → meta-2GJZPVKM.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/{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-MA2GB6WL.js.map} +0 -0
- /package/dist/{research-7YDQOKA6.js.map → research-TDH4OBX6.js.map} +0 -0
- /package/dist/{research-MHXKAQW4.js.map → research-WWJUNYSJ.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-2LQ7XJEO.js.map → run-FRPO2WNQ.js.map} +0 -0
- /package/dist/{run-M7YU6KCV.js.map → run-HENSSAQW.js.map} +0 -0
- /package/dist/{scaffold-ad-6YPZ75YJ.js.map → scaffold-ad-QQBCUYUO.js.map} +0 -0
- /package/dist/{scaffold-static-ad-UJEWTDU5.js.map → scaffold-static-ad-WUOAQEXS.js.map} +0 -0
- /package/dist/{scaffold-video-M4VWSVJ6.js.map → scaffold-video-KFQAKQUO.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-K2SXPDDJ.js.map} +0 -0
- /package/dist/{set-prompt-TODWV2F4.js.map → set-prompt-BZFOV3EB.js.map} +0 -0
- /package/dist/{setup-links-MNBD3UMH.js.map → setup-links-QT63UZBR.js.map} +0 -0
- /package/dist/{site-ZZUKS6MQ.js.map → site-S6QVMP7W.js.map} +0 -0
- /package/dist/{sources-36MJ6T4V.js.map → sources-DTQ4NQAM.js.map} +0 -0
- /package/dist/{sources-GNLQHTSJ.js.map → sources-ORG5KQSW.js.map} +0 -0
- /package/dist/{stale-GJN7UO3D.js.map → stale-5O7BQVTN.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-IDXFTGHP.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-Q3XUSEZJ.js.map} +0 -0
- /package/dist/{tag-manager-XAX5AI42.js.map → tag-manager-5WZPX2FJ.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-KLF3Y4QO.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-CBITGC7C.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-SAQEORZY.js.map} +0 -0
- /package/dist/{videos-PJAPZPOT.js.map → videos-GOIDZVVD.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-LOMI72Q2.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-2IZMW46M.js.map → x-APVY4YHX.js.map} +0 -0
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import {
|
|
2
|
+
videosDownloadResponseSchema
|
|
3
|
+
} from "./chunk-MKLAZD23.js";
|
|
4
|
+
import "./chunk-QV6AST5T.js";
|
|
5
|
+
import "./chunk-WCU362Z6.js";
|
|
6
|
+
import "./chunk-GIWHHCD6.js";
|
|
7
|
+
import "./chunk-SOPVIIUW.js";
|
|
8
|
+
import "./chunk-G4FG5EQO.js";
|
|
9
|
+
import "./chunk-R7XDGNZD.js";
|
|
10
|
+
import "./chunk-MSMTG6OC.js";
|
|
11
|
+
import {
|
|
12
|
+
ApiError,
|
|
13
|
+
apiPost,
|
|
14
|
+
validateConvexId
|
|
15
|
+
} from "./chunk-GFWWHCBF.js";
|
|
16
|
+
import "./chunk-JXTNP3B5.js";
|
|
17
|
+
import "./chunk-45D6WRCJ.js";
|
|
18
|
+
import {
|
|
19
|
+
registerSchema,
|
|
20
|
+
writeJson
|
|
21
|
+
} from "./chunk-CCYZJMZ7.js";
|
|
22
|
+
import "./chunk-YQSBHWOI.js";
|
|
23
|
+
|
|
24
|
+
// src/commands/videos/download.ts
|
|
25
|
+
import { mkdir, open, rm, stat } from "fs/promises";
|
|
26
|
+
import path from "path";
|
|
27
|
+
import { Readable } from "stream";
|
|
28
|
+
import { pipeline } from "stream/promises";
|
|
29
|
+
import { defineCommand } from "citty";
|
|
30
|
+
var DEFAULT_TIMEOUT_SECONDS = 20 * 60;
|
|
31
|
+
var POLL_INTERVAL_MS = 1e4;
|
|
32
|
+
registerSchema({
|
|
33
|
+
command: "videos.download",
|
|
34
|
+
description: "Save a library video (one from `videos search`, or one the user attached in chat) as a local .mp4 to edit with ffmpeg or a canvas ingest node. Waits while the file is prepared.",
|
|
35
|
+
args: {
|
|
36
|
+
id: { type: "string", description: "Library video ID", required: true },
|
|
37
|
+
out: { type: "string", description: "Directory to write the file into (created if missing)", required: true },
|
|
38
|
+
"timeout-seconds": {
|
|
39
|
+
type: "string",
|
|
40
|
+
description: `How long to wait for the file to be prepared (default ${DEFAULT_TIMEOUT_SECONDS})`,
|
|
41
|
+
required: false
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
async function awaitDownloadUrl(ask, options) {
|
|
46
|
+
const deadline = options.now() + options.timeoutMs;
|
|
47
|
+
for (; ; ) {
|
|
48
|
+
const answer = await ask();
|
|
49
|
+
if (answer.status === "ready") return { ready: true, url: answer.url, filename: answer.filename };
|
|
50
|
+
if (options.now() + options.intervalMs > deadline) return { ready: false, lastStatus: answer.status };
|
|
51
|
+
await options.sleep(options.intervalMs);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
async function saveVideoFile(url, outDir, filename) {
|
|
55
|
+
await mkdir(outDir, { recursive: true });
|
|
56
|
+
const { name: stem, ext } = path.parse(path.basename(filename));
|
|
57
|
+
for (let n = 1; ; n++) {
|
|
58
|
+
const file = path.join(outDir, `${stem}${n === 1 ? "" : `-${n}`}${ext || ".mp4"}`);
|
|
59
|
+
let handle;
|
|
60
|
+
try {
|
|
61
|
+
handle = await open(file, "wx");
|
|
62
|
+
} catch (err) {
|
|
63
|
+
if (err instanceof Error && "code" in err && err.code === "EEXIST") continue;
|
|
64
|
+
throw err;
|
|
65
|
+
}
|
|
66
|
+
try {
|
|
67
|
+
const response = await fetch(url);
|
|
68
|
+
if (!response.ok || !response.body)
|
|
69
|
+
throw new Error(`The video file could not be fetched (HTTP ${response.status})`);
|
|
70
|
+
await pipeline(Readable.fromWeb(response.body), handle.createWriteStream());
|
|
71
|
+
} catch (err) {
|
|
72
|
+
await handle.close().catch(() => void 0);
|
|
73
|
+
await rm(file, { force: true });
|
|
74
|
+
throw err;
|
|
75
|
+
}
|
|
76
|
+
return { file, bytes: (await stat(file)).size };
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
async function downloadLibraryVideo(args, deps) {
|
|
80
|
+
let wait;
|
|
81
|
+
try {
|
|
82
|
+
wait = await awaitDownloadUrl(deps.ask, { timeoutMs: args.timeoutMs, intervalMs: args.intervalMs, ...deps });
|
|
83
|
+
} catch (err) {
|
|
84
|
+
if (!(err instanceof ApiError)) throw err;
|
|
85
|
+
const fix = err.fix ?? (err.code === "CONFLICT" ? {
|
|
86
|
+
action: "continue_without",
|
|
87
|
+
explanation: "Tell the user why this video cannot be used and carry on without it."
|
|
88
|
+
} : void 0);
|
|
89
|
+
return { ok: false, error: { code: err.code, message: err.message, ...fix ? { fix } : {} } };
|
|
90
|
+
}
|
|
91
|
+
if (!wait.ready) {
|
|
92
|
+
return {
|
|
93
|
+
ok: false,
|
|
94
|
+
error: {
|
|
95
|
+
code: "TIMEOUT",
|
|
96
|
+
message: wait.lastStatus === "processing" ? "The video is still being uploaded to the library." : "The library is still preparing a downloadable file of this video.",
|
|
97
|
+
fix: {
|
|
98
|
+
action: "wait_and_retry",
|
|
99
|
+
explanation: "Tell the user the video is still being prepared, carry on with the rest of the job, and run this command again in a few minutes. Do not abort the whole job."
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
try {
|
|
105
|
+
const saved = await saveVideoFile(wait.url, path.resolve(args.out), wait.filename);
|
|
106
|
+
return {
|
|
107
|
+
ok: true,
|
|
108
|
+
data: saved,
|
|
109
|
+
hints: [
|
|
110
|
+
`Edit ${saved.file} with ffprobe/ffmpeg, or feed it to a canvas ingest node as { source: "path", path, expect: "video" }. The library video is unchanged.`
|
|
111
|
+
]
|
|
112
|
+
};
|
|
113
|
+
} catch (err) {
|
|
114
|
+
return {
|
|
115
|
+
ok: false,
|
|
116
|
+
error: { code: "DOWNLOAD_FAILED", message: err instanceof Error ? err.message : String(err) }
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
function positiveInt(value) {
|
|
121
|
+
const parsed = typeof value === "string" ? Number.parseInt(value, 10) : Number.NaN;
|
|
122
|
+
return Number.isInteger(parsed) && parsed > 0 ? parsed : void 0;
|
|
123
|
+
}
|
|
124
|
+
var downloadCommand = defineCommand({
|
|
125
|
+
meta: {
|
|
126
|
+
name: "download",
|
|
127
|
+
description: "Save a library video as a local .mp4 so you can edit it (ffmpeg, canvas ingest node). Use it for a video the user attached in chat, or one found with `videos search`. Waits up to 20 minutes while the file is prepared.\n\nExample: baker videos download j571abc123def --out /tmp/clips"
|
|
128
|
+
},
|
|
129
|
+
args: {
|
|
130
|
+
id: { type: "positional", description: "Library video ID", required: true },
|
|
131
|
+
out: { type: "string", description: "Directory to write the file into", required: true },
|
|
132
|
+
"timeout-seconds": {
|
|
133
|
+
type: "string",
|
|
134
|
+
description: `How long to wait for the file (default ${DEFAULT_TIMEOUT_SECONDS})`,
|
|
135
|
+
required: false
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
run: async ({ args }) => {
|
|
139
|
+
const id = String(args.id ?? "");
|
|
140
|
+
try {
|
|
141
|
+
validateConvexId(id);
|
|
142
|
+
} catch (err) {
|
|
143
|
+
writeJson({
|
|
144
|
+
ok: false,
|
|
145
|
+
error: { code: "VALIDATION_ERROR", message: err instanceof Error ? err.message : "Invalid video ID" }
|
|
146
|
+
});
|
|
147
|
+
process.exit(1);
|
|
148
|
+
}
|
|
149
|
+
const result = await downloadLibraryVideo(
|
|
150
|
+
{
|
|
151
|
+
id,
|
|
152
|
+
out: String(args.out ?? ""),
|
|
153
|
+
timeoutMs: (positiveInt(args["timeout-seconds"]) ?? DEFAULT_TIMEOUT_SECONDS) * 1e3,
|
|
154
|
+
intervalMs: POLL_INTERVAL_MS
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
ask: async () => videosDownloadResponseSchema.parse(await apiPost("/api/videos/download", { id })),
|
|
158
|
+
now: Date.now,
|
|
159
|
+
sleep: (ms) => new Promise((resolve) => setTimeout(resolve, ms))
|
|
160
|
+
}
|
|
161
|
+
);
|
|
162
|
+
writeJson(result);
|
|
163
|
+
if (!result.ok) process.exit(1);
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
export {
|
|
167
|
+
awaitDownloadUrl,
|
|
168
|
+
downloadCommand,
|
|
169
|
+
downloadLibraryVideo,
|
|
170
|
+
saveVideoFile
|
|
171
|
+
};
|
|
172
|
+
//# sourceMappingURL=download-LOBPOIU5.js.map
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import {
|
|
2
|
+
draftAction,
|
|
3
|
+
draftList,
|
|
4
|
+
loadJsonArg,
|
|
5
|
+
requireTarget
|
|
6
|
+
} from "./chunk-6KEVNO5O.js";
|
|
7
|
+
import {
|
|
8
|
+
amendDraftRefs,
|
|
9
|
+
draftRefs,
|
|
10
|
+
removeDraftRefs
|
|
11
|
+
} from "./chunk-DSDI5DY3.js";
|
|
12
|
+
import "./chunk-D5FY4FAK.js";
|
|
13
|
+
import "./chunk-QYH2UZAK.js";
|
|
14
|
+
import {
|
|
15
|
+
CHAT_READ_ARG,
|
|
16
|
+
DRAFT_FULL_ARG
|
|
17
|
+
} from "./chunk-X32MFGWW.js";
|
|
18
|
+
import "./chunk-GFWWHCBF.js";
|
|
19
|
+
import "./chunk-JXTNP3B5.js";
|
|
20
|
+
import "./chunk-45D6WRCJ.js";
|
|
21
|
+
import {
|
|
22
|
+
registerSchema
|
|
23
|
+
} from "./chunk-CCYZJMZ7.js";
|
|
24
|
+
import "./chunk-YQSBHWOI.js";
|
|
25
|
+
|
|
26
|
+
// src/commands/ga4/draft.ts
|
|
27
|
+
import { defineCommand } from "citty";
|
|
28
|
+
registerSchema({
|
|
29
|
+
command: "ga4.draft",
|
|
30
|
+
description: "Review and undo the Google Analytics changes staged on this chat. Use `list` to see everything staged, `show` to inspect one change in full before the chat completes, `amend` to correct one in place, and `remove`/`clear` to drop them. `list` and `show` take --chat <id> to read an earlier chat's changes instead.",
|
|
31
|
+
args: {
|
|
32
|
+
json: { type: "boolean", description: "Print the raw JSON envelope instead of the readable list", required: false },
|
|
33
|
+
full: { type: "boolean", description: DRAFT_FULL_ARG.description, required: false },
|
|
34
|
+
chat: { type: "string", description: CHAT_READ_ARG.description, required: false }
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
var draftCommand = defineCommand({
|
|
38
|
+
meta: {
|
|
39
|
+
name: "draft",
|
|
40
|
+
description: "List, show, amend, remove or clear the Google Analytics changes staged on this chat. `list` and `show` take --chat <id> to read an earlier chat's changes instead."
|
|
41
|
+
},
|
|
42
|
+
subCommands: {
|
|
43
|
+
list: defineCommand({
|
|
44
|
+
meta: {
|
|
45
|
+
name: "list",
|
|
46
|
+
description: "Review everything staged on this chat (--json for the raw envelope, --full for every change's payload too)"
|
|
47
|
+
},
|
|
48
|
+
args: {
|
|
49
|
+
json: { type: "boolean", description: "Print the raw JSON envelope", required: false },
|
|
50
|
+
full: DRAFT_FULL_ARG,
|
|
51
|
+
chat: CHAT_READ_ARG
|
|
52
|
+
},
|
|
53
|
+
run: async ({ args }) => {
|
|
54
|
+
await draftList(args.json === true, args.chat, args.full === true);
|
|
55
|
+
}
|
|
56
|
+
}),
|
|
57
|
+
show: defineCommand({
|
|
58
|
+
meta: {
|
|
59
|
+
name: "show",
|
|
60
|
+
description: "Print the full staged payload for one change, alongside how the property looks today \u2014 the receipt to verify it before the chat completes (never truncated)."
|
|
61
|
+
},
|
|
62
|
+
args: {
|
|
63
|
+
ref: { type: "positional", description: "Staged ref or target id", required: false },
|
|
64
|
+
chat: CHAT_READ_ARG
|
|
65
|
+
},
|
|
66
|
+
run: async ({ args }) => {
|
|
67
|
+
await draftAction(
|
|
68
|
+
"/api/ga4/draft/show",
|
|
69
|
+
{ ref: requireTarget(args, "change") },
|
|
70
|
+
args.chat
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
}),
|
|
74
|
+
amend: defineCommand({
|
|
75
|
+
meta: {
|
|
76
|
+
name: "amend",
|
|
77
|
+
description: "Update a staged change in place \u2014 merges a JSON patch into its payload (objects deep-merge, null deletes a key, arrays/scalars replace) and re-runs every check. Use this instead of remove + re-create. Many refs take the same patch in one call: draft amend <ref> <ref> --patch '{\u2026}'."
|
|
78
|
+
},
|
|
79
|
+
args: {
|
|
80
|
+
ref: {
|
|
81
|
+
type: "positional",
|
|
82
|
+
description: "Staged ref(s) or target id(s) \u2014 several, space- or comma-separated",
|
|
83
|
+
required: false
|
|
84
|
+
},
|
|
85
|
+
patch: { type: "string", description: "Inline JSON patch object", required: false },
|
|
86
|
+
file: { type: "string", description: "JSON file with the patch object", required: false }
|
|
87
|
+
},
|
|
88
|
+
run: async ({ args }) => {
|
|
89
|
+
const refs = draftRefs(args._);
|
|
90
|
+
if (refs.length > 1) {
|
|
91
|
+
await amendDraftRefs("/api/ga4/draft/amend", refs, loadJsonArg(args, "patch"));
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
await draftAction("/api/ga4/draft/amend", {
|
|
95
|
+
ref: requireTarget(args, "change"),
|
|
96
|
+
patch: loadJsonArg(args, "patch")
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
}),
|
|
100
|
+
remove: defineCommand({
|
|
101
|
+
meta: {
|
|
102
|
+
name: "remove",
|
|
103
|
+
description: "Remove staged changes \u2014 one, or many in one call: baker ga4 draft remove <ref> <ref> \u2026"
|
|
104
|
+
},
|
|
105
|
+
args: {
|
|
106
|
+
ref: {
|
|
107
|
+
type: "positional",
|
|
108
|
+
description: "Staged ref(s) or target id(s) \u2014 several, space- or comma-separated",
|
|
109
|
+
required: false
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
run: async ({ args }) => {
|
|
113
|
+
const refs = draftRefs(args._);
|
|
114
|
+
if (refs.length > 1) {
|
|
115
|
+
await removeDraftRefs("/api/ga4/draft/remove", refs);
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
await draftAction("/api/ga4/draft/remove", {
|
|
119
|
+
ref: requireTarget(args, "change")
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
}),
|
|
123
|
+
clear: defineCommand({
|
|
124
|
+
meta: { name: "clear", description: "Discard all Google Analytics changes staged on this chat" },
|
|
125
|
+
run: async () => {
|
|
126
|
+
await draftAction("/api/ga4/draft/clear", {});
|
|
127
|
+
}
|
|
128
|
+
})
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
export {
|
|
132
|
+
draftCommand
|
|
133
|
+
};
|
|
134
|
+
//# sourceMappingURL=draft-2JVWCYRF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/ga4/draft.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { CHAT_READ_ARG, DRAFT_FULL_ARG } from \"../chat-arg.ts\";\nimport { amendDraftRefs, draftRefs, removeDraftRefs } from \"../draft-refs.ts\";\nimport { draftAction, draftList, loadJsonArg, requireTarget } from \"./shared.ts\";\n\nregisterSchema({\n command: \"ga4.draft\",\n description:\n \"Review and undo the Google Analytics changes staged on this chat. Use `list` to see everything staged, `show` to inspect one change in full before the chat completes, `amend` to correct one in place, and `remove`/`clear` to drop them. `list` and `show` take --chat <id> to read an earlier chat's changes instead.\",\n args: {\n json: { type: \"boolean\", description: \"Print the raw JSON envelope instead of the readable list\", required: false },\n full: { type: \"boolean\", description: DRAFT_FULL_ARG.description, required: false },\n chat: { type: \"string\", description: CHAT_READ_ARG.description, required: false },\n },\n});\n\nexport const draftCommand = defineCommand({\n meta: {\n name: \"draft\",\n description:\n \"List, show, amend, remove or clear the Google Analytics changes staged on this chat. `list` and `show` take --chat <id> to read an earlier chat's changes instead.\",\n },\n subCommands: {\n list: defineCommand({\n meta: {\n name: \"list\",\n description:\n \"Review everything staged on this chat (--json for the raw envelope, --full for every change's payload too)\",\n },\n args: {\n json: { type: \"boolean\", description: \"Print the raw JSON envelope\", required: false },\n full: DRAFT_FULL_ARG,\n chat: CHAT_READ_ARG,\n },\n run: async ({ args }) => {\n await draftList(args.json === true, args.chat, args.full === true);\n },\n }),\n show: defineCommand({\n meta: {\n name: \"show\",\n description:\n \"Print the full staged payload for one change, alongside how the property looks today — the receipt to verify it before the chat completes (never truncated).\",\n },\n args: {\n ref: { type: \"positional\", description: \"Staged ref or target id\", required: false },\n chat: CHAT_READ_ARG,\n },\n run: async ({ args }) => {\n await draftAction(\n \"/api/ga4/draft/show\",\n { ref: requireTarget(args as Record<string, unknown>, \"change\") },\n args.chat,\n );\n },\n }),\n amend: defineCommand({\n meta: {\n name: \"amend\",\n description:\n \"Update a staged change in place — merges a JSON patch into its payload (objects deep-merge, null deletes a key, arrays/scalars replace) and re-runs every check. Use this instead of remove + re-create. Many refs take the same patch in one call: draft amend <ref> <ref> --patch '{…}'.\",\n },\n args: {\n ref: {\n type: \"positional\",\n description: \"Staged ref(s) or target id(s) — several, space- or comma-separated\",\n required: false,\n },\n patch: { type: \"string\", description: \"Inline JSON patch object\", required: false },\n file: { type: \"string\", description: \"JSON file with the patch object\", required: false },\n },\n run: async ({ args }) => {\n const refs = draftRefs(args._);\n if (refs.length > 1) {\n await amendDraftRefs(\"/api/ga4/draft/amend\", refs, loadJsonArg(args as Record<string, unknown>, \"patch\"));\n return;\n }\n await draftAction(\"/api/ga4/draft/amend\", {\n ref: requireTarget(args as Record<string, unknown>, \"change\"),\n patch: loadJsonArg(args as Record<string, unknown>, \"patch\"),\n });\n },\n }),\n remove: defineCommand({\n meta: {\n name: \"remove\",\n description: \"Remove staged changes — one, or many in one call: baker ga4 draft remove <ref> <ref> …\",\n },\n args: {\n ref: {\n type: \"positional\",\n description: \"Staged ref(s) or target id(s) — several, space- or comma-separated\",\n required: false,\n },\n },\n run: async ({ args }) => {\n const refs = draftRefs(args._);\n if (refs.length > 1) {\n await removeDraftRefs(\"/api/ga4/draft/remove\", refs);\n return;\n }\n await draftAction(\"/api/ga4/draft/remove\", {\n ref: requireTarget(args as Record<string, unknown>, \"change\"),\n });\n },\n }),\n clear: defineCommand({\n meta: { name: \"clear\", description: \"Discard all Google Analytics changes staged on this chat\" },\n run: async () => {\n await draftAction(\"/api/ga4/draft/clear\", {});\n },\n }),\n },\n});\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
import {
|
|
2
|
+
failWriteValidation,
|
|
3
|
+
schemaArgs
|
|
4
|
+
} from "./chunk-7SNNQCDD.js";
|
|
5
|
+
import {
|
|
6
|
+
CHATGPT_ADS_REFERENCE,
|
|
7
|
+
chatgptFailure
|
|
8
|
+
} from "./chunk-FAV6GUOZ.js";
|
|
9
|
+
import {
|
|
10
|
+
amendDraftRefs,
|
|
11
|
+
draftRefs,
|
|
12
|
+
removeDraftRefs
|
|
13
|
+
} from "./chunk-DSDI5DY3.js";
|
|
14
|
+
import {
|
|
15
|
+
writeJsonEnvelope
|
|
16
|
+
} from "./chunk-QYH2UZAK.js";
|
|
17
|
+
import {
|
|
18
|
+
CHAT_READ_ARG,
|
|
19
|
+
DRAFT_FULL_ARG
|
|
20
|
+
} from "./chunk-X32MFGWW.js";
|
|
21
|
+
import "./chunk-SOPVIIUW.js";
|
|
22
|
+
import "./chunk-G4FG5EQO.js";
|
|
23
|
+
import {
|
|
24
|
+
apiPost
|
|
25
|
+
} from "./chunk-GFWWHCBF.js";
|
|
26
|
+
import "./chunk-JXTNP3B5.js";
|
|
27
|
+
import {
|
|
28
|
+
requireChatId,
|
|
29
|
+
resolveChatId
|
|
30
|
+
} from "./chunk-45D6WRCJ.js";
|
|
31
|
+
import {
|
|
32
|
+
registerSchema
|
|
33
|
+
} from "./chunk-CCYZJMZ7.js";
|
|
34
|
+
import "./chunk-YQSBHWOI.js";
|
|
35
|
+
|
|
36
|
+
// src/commands/ads/chatgpt/draft.ts
|
|
37
|
+
import { readFileSync } from "fs";
|
|
38
|
+
import { defineCommand } from "citty";
|
|
39
|
+
|
|
40
|
+
// src/commands/ads/chatgpt/draft-status.ts
|
|
41
|
+
var OPERATION_LABELS = {
|
|
42
|
+
create: { staged: "Creating", done: "Created", notDone: "Not created" },
|
|
43
|
+
update: { staged: "Updating", done: "Updated", notDone: "Not updated" },
|
|
44
|
+
pause: { staged: "Pausing", done: "Paused", notDone: "Not paused" },
|
|
45
|
+
resume: { staged: "Resuming", done: "Resumed", notDone: "Not resumed" },
|
|
46
|
+
archive: { staged: "Archiving", done: "Archived", notDone: "Not archived" }
|
|
47
|
+
};
|
|
48
|
+
var STATUS_HEADINGS = {
|
|
49
|
+
active: "staged",
|
|
50
|
+
publishing: "publishing",
|
|
51
|
+
applied: "published",
|
|
52
|
+
discarded: "discarded"
|
|
53
|
+
};
|
|
54
|
+
function badge(node) {
|
|
55
|
+
const label = node.operation ? OPERATION_LABELS[node.operation] : void 0;
|
|
56
|
+
if (!label) {
|
|
57
|
+
return node.existing ? "on ChatGPT Ads" : "staged";
|
|
58
|
+
}
|
|
59
|
+
if (node.outcome === "applied") {
|
|
60
|
+
return label.done;
|
|
61
|
+
}
|
|
62
|
+
return node.outcome ? `${label.notDone} (${node.outcome})` : label.staged;
|
|
63
|
+
}
|
|
64
|
+
function renderNode(node, depth, out) {
|
|
65
|
+
const indent = " ".repeat(depth);
|
|
66
|
+
out.push(`${indent}${node.entity}: ${node.name} \u2014 ${badge(node)}`);
|
|
67
|
+
for (const warning of node.warnings ?? []) {
|
|
68
|
+
out.push(`${indent} ! ${warning}`);
|
|
69
|
+
}
|
|
70
|
+
for (const child of node.children) {
|
|
71
|
+
renderNode(child, depth + 1, out);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function didNotApply(op) {
|
|
75
|
+
return op.result?.status === "failed" || op.result?.status === "skipped";
|
|
76
|
+
}
|
|
77
|
+
function didApply(op) {
|
|
78
|
+
return op.result?.status === "applied" || op.result?.status === "simulated";
|
|
79
|
+
}
|
|
80
|
+
function headingLine(draft) {
|
|
81
|
+
const heading = STATUS_HEADINGS[draft.status] ?? draft.status;
|
|
82
|
+
if (draft.status !== "applied" && draft.status !== "publishing") {
|
|
83
|
+
return `ChatGPT Ads: ${draft.count} change${draft.count === 1 ? "" : "s"} ${heading}`;
|
|
84
|
+
}
|
|
85
|
+
const applied = draft.ops.filter(didApply).length;
|
|
86
|
+
const failed = draft.ops.filter(didNotApply).length;
|
|
87
|
+
return `ChatGPT Ads: ${heading} \xB7 ${applied} applied${failed > 0 ? `, ${failed} failed` : ""}`;
|
|
88
|
+
}
|
|
89
|
+
function renderChatgptDraftStatus(draft) {
|
|
90
|
+
if (draft.status === "none" || draft.count === 0) {
|
|
91
|
+
return "No ChatGPT Ads changes staged";
|
|
92
|
+
}
|
|
93
|
+
const out = [headingLine(draft), ""];
|
|
94
|
+
for (const node of draft.tree ?? []) {
|
|
95
|
+
renderNode(node, 0, out);
|
|
96
|
+
}
|
|
97
|
+
const summaryByRef = new Map(draft.ops.map((op) => [op.ref, op.summary]));
|
|
98
|
+
const problems = draft.ops.filter(didNotApply).map((op) => {
|
|
99
|
+
if (op.result?.status === "failed") {
|
|
100
|
+
return `\u2717 ${op.summary} \u2014 failed: ${op.result.error ?? "ChatGPT Ads gave no reason"}`;
|
|
101
|
+
}
|
|
102
|
+
const waitedOn = op.result?.skippedBecause;
|
|
103
|
+
const parent = (waitedOn && summaryByRef.get(waitedOn)) ?? "a change that did not apply";
|
|
104
|
+
return `\u2717 ${op.summary} \u2014 skipped: waiting on ${parent}, which did not apply`;
|
|
105
|
+
});
|
|
106
|
+
if (problems.length > 0) {
|
|
107
|
+
out.push("", ...problems);
|
|
108
|
+
}
|
|
109
|
+
return out.join("\n");
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// src/commands/ads/chatgpt/draft.ts
|
|
113
|
+
async function run(call) {
|
|
114
|
+
try {
|
|
115
|
+
writeJsonEnvelope({ ok: true, data: await call() });
|
|
116
|
+
} catch (err) {
|
|
117
|
+
writeJsonEnvelope({ ...chatgptFailure(err, CHATGPT_ADS_REFERENCE.overview) });
|
|
118
|
+
process.exit(1);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
var LIST_ARGS = {
|
|
122
|
+
json: { type: "boolean", description: "Print the raw JSON envelope instead of the readable tree" },
|
|
123
|
+
full: DRAFT_FULL_ARG,
|
|
124
|
+
chat: CHAT_READ_ARG
|
|
125
|
+
};
|
|
126
|
+
registerSchema({
|
|
127
|
+
command: "ads.chatgpt.draft",
|
|
128
|
+
description: "Review everything staged for ChatGPT Ads on this chat as a Campaign \u25B8 Ad group \u25B8 Ad tree. After a publish this is the authoritative record: `published \xB7 N applied`, or a `\u2717 \u2026 failed:` line per change that did not land, with ChatGPT Ads' reason.",
|
|
129
|
+
args: schemaArgs(LIST_ARGS)
|
|
130
|
+
});
|
|
131
|
+
var listCommand = defineCommand({
|
|
132
|
+
meta: {
|
|
133
|
+
name: "list",
|
|
134
|
+
description: "Review everything staged as a Campaign \u25B8 Ad group \u25B8 Ad tree. Example: baker ads chatgpt draft"
|
|
135
|
+
},
|
|
136
|
+
args: LIST_ARGS,
|
|
137
|
+
run: async ({ args }) => {
|
|
138
|
+
try {
|
|
139
|
+
const full = args.full === true;
|
|
140
|
+
const draft = await apiPost("/api/ads/chatgpt/draft", {
|
|
141
|
+
chatId: resolveChatId(args.chat),
|
|
142
|
+
...full ? { full: true } : {}
|
|
143
|
+
});
|
|
144
|
+
if (args.json === true || full) {
|
|
145
|
+
writeJsonEnvelope({ ok: true, data: draft });
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
process.stdout.write(`${renderChatgptDraftStatus(draft)}
|
|
149
|
+
`);
|
|
150
|
+
} catch (err) {
|
|
151
|
+
writeJsonEnvelope({ ...chatgptFailure(err, CHATGPT_ADS_REFERENCE.overview) });
|
|
152
|
+
process.exit(1);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
var SHOW_ARGS = {
|
|
157
|
+
ref: {
|
|
158
|
+
type: "positional",
|
|
159
|
+
description: "Op ref (chatgpt_temp_* for creates), or the target id for a staged update",
|
|
160
|
+
required: true
|
|
161
|
+
},
|
|
162
|
+
chat: CHAT_READ_ARG
|
|
163
|
+
};
|
|
164
|
+
registerSchema({
|
|
165
|
+
command: "ads.chatgpt.draft.show",
|
|
166
|
+
description: "The full staged payload, warnings and before-snapshot for one change \u2014 the receipt to check before publishing.",
|
|
167
|
+
args: schemaArgs(SHOW_ARGS)
|
|
168
|
+
});
|
|
169
|
+
var showCommand = defineCommand({
|
|
170
|
+
meta: {
|
|
171
|
+
name: "show",
|
|
172
|
+
description: "Show one staged change in full. Example: baker ads chatgpt draft show chatgpt_temp_ab12"
|
|
173
|
+
},
|
|
174
|
+
args: SHOW_ARGS,
|
|
175
|
+
run: async ({ args }) => {
|
|
176
|
+
await run(
|
|
177
|
+
() => apiPost("/api/ads/chatgpt/draft/show", {
|
|
178
|
+
chatId: resolveChatId(args.chat),
|
|
179
|
+
ref: String(args.ref)
|
|
180
|
+
})
|
|
181
|
+
);
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
var AMEND_ARGS = {
|
|
185
|
+
ref: {
|
|
186
|
+
type: "positional",
|
|
187
|
+
description: "Op ref(s) or target id(s) \u2014 several, space- or comma-separated, before the patch",
|
|
188
|
+
required: true
|
|
189
|
+
},
|
|
190
|
+
patch: { type: "positional", description: "JSON object, or @path to a file holding one", required: true }
|
|
191
|
+
};
|
|
192
|
+
registerSchema({
|
|
193
|
+
command: "ads.chatgpt.draft.amend",
|
|
194
|
+
description: "Change staged ops in place instead of removing and re-staging them \u2014 one, or many with the same patch in one call. The patch merges into the payload (JSON merge-patch: `null` deletes a key; money is in micros) and the whole op re-validates.",
|
|
195
|
+
args: schemaArgs(AMEND_ARGS)
|
|
196
|
+
});
|
|
197
|
+
var amendCommand = defineCommand({
|
|
198
|
+
meta: {
|
|
199
|
+
name: "amend",
|
|
200
|
+
description: `Change a staged op in place. Money in the payload is micros: 20 = 20000000.
|
|
201
|
+
|
|
202
|
+
Examples:
|
|
203
|
+
baker ads chatgpt draft amend chatgpt_temp_ab12 '{"dailyBudgetMicros": 30000000}'
|
|
204
|
+
baker ads chatgpt draft amend chatgpt_temp_ab12 chatgpt_temp_cd34 chatgpt_temp_ef56 '{"status":"active"}'`
|
|
205
|
+
},
|
|
206
|
+
args: AMEND_ARGS,
|
|
207
|
+
run: async ({ args }) => {
|
|
208
|
+
const positionals = Array.isArray(args._) ? args._ : [];
|
|
209
|
+
const refs = draftRefs(positionals.slice(0, -1));
|
|
210
|
+
const raw = String(positionals.at(-1) ?? args.patch);
|
|
211
|
+
let patch;
|
|
212
|
+
try {
|
|
213
|
+
patch = JSON.parse(raw.startsWith("@") ? readFileSync(raw.slice(1), "utf8") : raw);
|
|
214
|
+
} catch {
|
|
215
|
+
failWriteValidation("patch must be a JSON object, or @path to a file holding one");
|
|
216
|
+
}
|
|
217
|
+
if (patch === null || typeof patch !== "object" || Array.isArray(patch)) {
|
|
218
|
+
failWriteValidation("patch must be a JSON object");
|
|
219
|
+
}
|
|
220
|
+
if (refs.length > 1) {
|
|
221
|
+
await amendDraftRefs("/api/ads/chatgpt/draft/amend", refs, patch);
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
await run(
|
|
225
|
+
() => apiPost("/api/ads/chatgpt/draft/amend", {
|
|
226
|
+
chatId: requireChatId(),
|
|
227
|
+
ref: String(args.ref),
|
|
228
|
+
patch
|
|
229
|
+
})
|
|
230
|
+
);
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
var REMOVE_ARGS = {
|
|
234
|
+
ref: {
|
|
235
|
+
type: "positional",
|
|
236
|
+
description: "Op ref(s) or target id(s) \u2014 several, space- or comma-separated",
|
|
237
|
+
required: true
|
|
238
|
+
}
|
|
239
|
+
};
|
|
240
|
+
registerSchema({
|
|
241
|
+
command: "ads.chatgpt.draft.remove",
|
|
242
|
+
description: "Drop staged ChatGPT Ads changes \u2014 one, or many in one call. Removing a create also drops everything staged under it.",
|
|
243
|
+
args: schemaArgs(REMOVE_ARGS)
|
|
244
|
+
});
|
|
245
|
+
var removeCommand = defineCommand({
|
|
246
|
+
meta: {
|
|
247
|
+
name: "remove",
|
|
248
|
+
description: "Drop staged changes (and what depends on them) \u2014 one, or many in one call. Example: baker ads chatgpt draft remove chatgpt_temp_ab12 chatgpt_temp_cd34"
|
|
249
|
+
},
|
|
250
|
+
args: REMOVE_ARGS,
|
|
251
|
+
run: async ({ args }) => {
|
|
252
|
+
const refs = draftRefs(args._);
|
|
253
|
+
if (refs.length > 1) {
|
|
254
|
+
await removeDraftRefs("/api/ads/chatgpt/draft/remove", refs);
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
await run(
|
|
258
|
+
() => apiPost("/api/ads/chatgpt/draft/remove", {
|
|
259
|
+
chatId: requireChatId(),
|
|
260
|
+
ref: String(args.ref)
|
|
261
|
+
})
|
|
262
|
+
);
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
registerSchema({
|
|
266
|
+
command: "ads.chatgpt.draft.clear",
|
|
267
|
+
description: "Drop every staged ChatGPT Ads change on this chat. Nothing reached ChatGPT Ads, so nothing needs reversing.",
|
|
268
|
+
args: {}
|
|
269
|
+
});
|
|
270
|
+
var clearCommand = defineCommand({
|
|
271
|
+
meta: {
|
|
272
|
+
name: "clear",
|
|
273
|
+
description: "Drop every staged ChatGPT Ads change on this chat. Example: baker ads chatgpt draft clear"
|
|
274
|
+
},
|
|
275
|
+
args: {},
|
|
276
|
+
run: async () => {
|
|
277
|
+
await run(
|
|
278
|
+
() => apiPost("/api/ads/chatgpt/draft/clear", {
|
|
279
|
+
chatId: requireChatId()
|
|
280
|
+
})
|
|
281
|
+
);
|
|
282
|
+
}
|
|
283
|
+
});
|
|
284
|
+
var draftCommand = defineCommand({
|
|
285
|
+
meta: {
|
|
286
|
+
name: "draft",
|
|
287
|
+
description: `Review and edit the ChatGPT Ads changes staged on this chat.
|
|
288
|
+
|
|
289
|
+
Nothing staged has reached ChatGPT Ads. Everything applies when the chat is
|
|
290
|
+
published, and discarding the chat drops all of it.
|
|
291
|
+
|
|
292
|
+
Examples:
|
|
293
|
+
baker ads chatgpt draft \u2014 the Campaign \u25B8 Ad group \u25B8 Ad tree
|
|
294
|
+
baker ads chatgpt draft show chatgpt_temp_ab12 \u2014 one change in full
|
|
295
|
+
baker ads chatgpt draft list --full \u2014 every change in full, in one call
|
|
296
|
+
baker ads chatgpt draft amend chatgpt_temp_ab12 '{"name":"New"}'
|
|
297
|
+
baker ads chatgpt draft remove chatgpt_temp_ab12
|
|
298
|
+
baker ads chatgpt draft clear`
|
|
299
|
+
},
|
|
300
|
+
subCommands: {
|
|
301
|
+
list: listCommand,
|
|
302
|
+
show: showCommand,
|
|
303
|
+
amend: amendCommand,
|
|
304
|
+
remove: removeCommand,
|
|
305
|
+
clear: clearCommand
|
|
306
|
+
},
|
|
307
|
+
// A parent must never declare `run`: citty falls through to it after the
|
|
308
|
+
// matched subcommand, so every edit would also print the whole draft.
|
|
309
|
+
args: LIST_ARGS,
|
|
310
|
+
default: "list"
|
|
311
|
+
});
|
|
312
|
+
export {
|
|
313
|
+
draftCommand
|
|
314
|
+
};
|
|
315
|
+
//# sourceMappingURL=draft-4WMYCA7I.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/ads/chatgpt/draft.ts","../src/commands/ads/chatgpt/draft-status.ts"],"sourcesContent":["import { readFileSync } from \"node:fs\";\nimport type {\n ChatgptDraftClearResponse,\n ChatgptDraftListResponse,\n ChatgptDraftRemoveResponse,\n ChatgptDraftShowResponse,\n ChatgptDraftStageResponse,\n} from \"@baker/api/ads-chatgpt\";\nimport { defineCommand } from \"citty\";\nimport { apiPost } from \"../../../client.ts\";\nimport { requireChatId, resolveChatId } from \"../../../env.ts\";\nimport { registerSchema } from \"../../../schemas.ts\";\nimport { CHAT_READ_ARG, DRAFT_FULL_ARG } from \"../../chat-arg.ts\";\nimport { amendDraftRefs, draftRefs, removeDraftRefs } from \"../../draft-refs.ts\";\nimport { writeJsonEnvelope } from \"../output.ts\";\nimport { renderChatgptDraftStatus } from \"./draft-status.ts\";\nimport { CHATGPT_ADS_REFERENCE, chatgptFailure } from \"./shared.ts\";\nimport { failWriteValidation, schemaArgs } from \"./write-shared.ts\";\n\n/**\n * Review and edit the ChatGPT Ads changes staged on this chat. Nothing staged\n * has reached ChatGPT Ads; it all applies when the chat is published.\n */\n\n/** The ChatGPT Ads routes answer with the payload itself; the envelope is the CLI's to add. */\nasync function run<T>(call: () => Promise<T>): Promise<void> {\n try {\n writeJsonEnvelope({ ok: true, data: await call() });\n } catch (err) {\n writeJsonEnvelope({ ...chatgptFailure(err, CHATGPT_ADS_REFERENCE.overview) });\n process.exit(1);\n }\n}\n\nconst LIST_ARGS = {\n json: { type: \"boolean\", description: \"Print the raw JSON envelope instead of the readable tree\" },\n full: DRAFT_FULL_ARG,\n chat: CHAT_READ_ARG,\n} as const;\n\nregisterSchema({\n command: \"ads.chatgpt.draft\",\n description:\n \"Review everything staged for ChatGPT Ads on this chat as a Campaign ▸ Ad group ▸ Ad tree. After a publish this is the authoritative record: `published · N applied`, or a `✗ … failed:` line per change that did not land, with ChatGPT Ads' reason.\",\n args: schemaArgs(LIST_ARGS),\n});\n\nconst listCommand = defineCommand({\n meta: {\n name: \"list\",\n description: \"Review everything staged as a Campaign ▸ Ad group ▸ Ad tree. Example: baker ads chatgpt draft\",\n },\n args: LIST_ARGS,\n run: async ({ args }) => {\n try {\n const full = args.full === true;\n const draft = await apiPost<ChatgptDraftListResponse>(\"/api/ads/chatgpt/draft\", {\n chatId: resolveChatId(args.chat),\n ...(full ? { full: true } : {}),\n });\n if (args.json === true || full) {\n writeJsonEnvelope({ ok: true, data: draft });\n return;\n }\n process.stdout.write(`${renderChatgptDraftStatus(draft)}\\n`);\n } catch (err) {\n writeJsonEnvelope({ ...chatgptFailure(err, CHATGPT_ADS_REFERENCE.overview) });\n process.exit(1);\n }\n },\n});\n\nconst SHOW_ARGS = {\n ref: {\n type: \"positional\",\n description: \"Op ref (chatgpt_temp_* for creates), or the target id for a staged update\",\n required: true,\n },\n chat: CHAT_READ_ARG,\n} as const;\n\nregisterSchema({\n command: \"ads.chatgpt.draft.show\",\n description:\n \"The full staged payload, warnings and before-snapshot for one change — the receipt to check before publishing.\",\n args: schemaArgs(SHOW_ARGS),\n});\n\nconst showCommand = defineCommand({\n meta: {\n name: \"show\",\n description: \"Show one staged change in full. Example: baker ads chatgpt draft show chatgpt_temp_ab12\",\n },\n args: SHOW_ARGS,\n run: async ({ args }) => {\n await run(() =>\n apiPost<ChatgptDraftShowResponse>(\"/api/ads/chatgpt/draft/show\", {\n chatId: resolveChatId(args.chat),\n ref: String(args.ref),\n }),\n );\n },\n});\n\nconst AMEND_ARGS = {\n ref: {\n type: \"positional\",\n description: \"Op ref(s) or target id(s) — several, space- or comma-separated, before the patch\",\n required: true,\n },\n patch: { type: \"positional\", description: \"JSON object, or @path to a file holding one\", required: true },\n} as const;\n\nregisterSchema({\n command: \"ads.chatgpt.draft.amend\",\n description:\n \"Change staged ops in place instead of removing and re-staging them — one, or many with the same patch in one call. The patch merges into the payload (JSON merge-patch: `null` deletes a key; money is in micros) and the whole op re-validates.\",\n args: schemaArgs(AMEND_ARGS),\n});\n\nconst amendCommand = defineCommand({\n meta: {\n name: \"amend\",\n description: `Change a staged op in place. Money in the payload is micros: 20 = 20000000.\n\nExamples:\n baker ads chatgpt draft amend chatgpt_temp_ab12 '{\"dailyBudgetMicros\": 30000000}'\n baker ads chatgpt draft amend chatgpt_temp_ab12 chatgpt_temp_cd34 chatgpt_temp_ef56 '{\"status\":\"active\"}'`,\n },\n args: AMEND_ARGS,\n run: async ({ args }) => {\n const positionals = Array.isArray(args._) ? args._ : [];\n const refs = draftRefs(positionals.slice(0, -1));\n const raw = String(positionals.at(-1) ?? args.patch);\n let patch: unknown;\n try {\n patch = JSON.parse(raw.startsWith(\"@\") ? readFileSync(raw.slice(1), \"utf8\") : raw);\n } catch {\n failWriteValidation(\"patch must be a JSON object, or @path to a file holding one\");\n }\n if (patch === null || typeof patch !== \"object\" || Array.isArray(patch)) {\n failWriteValidation(\"patch must be a JSON object\");\n }\n if (refs.length > 1) {\n await amendDraftRefs(\"/api/ads/chatgpt/draft/amend\", refs, patch);\n return;\n }\n await run(() =>\n apiPost<ChatgptDraftStageResponse>(\"/api/ads/chatgpt/draft/amend\", {\n chatId: requireChatId(),\n ref: String(args.ref),\n patch,\n }),\n );\n },\n});\n\nconst REMOVE_ARGS = {\n ref: {\n type: \"positional\",\n description: \"Op ref(s) or target id(s) — several, space- or comma-separated\",\n required: true,\n },\n} as const;\n\nregisterSchema({\n command: \"ads.chatgpt.draft.remove\",\n description:\n \"Drop staged ChatGPT Ads changes — one, or many in one call. Removing a create also drops everything staged under it.\",\n args: schemaArgs(REMOVE_ARGS),\n});\n\nconst removeCommand = defineCommand({\n meta: {\n name: \"remove\",\n description:\n \"Drop staged changes (and what depends on them) — one, or many in one call. Example: baker ads chatgpt draft remove chatgpt_temp_ab12 chatgpt_temp_cd34\",\n },\n args: REMOVE_ARGS,\n run: async ({ args }) => {\n const refs = draftRefs(args._);\n if (refs.length > 1) {\n await removeDraftRefs(\"/api/ads/chatgpt/draft/remove\", refs);\n return;\n }\n await run(() =>\n apiPost<ChatgptDraftRemoveResponse>(\"/api/ads/chatgpt/draft/remove\", {\n chatId: requireChatId(),\n ref: String(args.ref),\n }),\n );\n },\n});\n\nregisterSchema({\n command: \"ads.chatgpt.draft.clear\",\n description:\n \"Drop every staged ChatGPT Ads change on this chat. Nothing reached ChatGPT Ads, so nothing needs reversing.\",\n args: {},\n});\n\nconst clearCommand = defineCommand({\n meta: {\n name: \"clear\",\n description: \"Drop every staged ChatGPT Ads change on this chat. Example: baker ads chatgpt draft clear\",\n },\n args: {},\n run: async () => {\n await run(() =>\n apiPost<ChatgptDraftClearResponse>(\"/api/ads/chatgpt/draft/clear\", {\n chatId: requireChatId(),\n }),\n );\n },\n});\n\nexport const draftCommand = defineCommand({\n meta: {\n name: \"draft\",\n description: `Review and edit the ChatGPT Ads changes staged on this chat.\n\nNothing staged has reached ChatGPT Ads. Everything applies when the chat is\npublished, and discarding the chat drops all of it.\n\nExamples:\n baker ads chatgpt draft — the Campaign ▸ Ad group ▸ Ad tree\n baker ads chatgpt draft show chatgpt_temp_ab12 — one change in full\n baker ads chatgpt draft list --full — every change in full, in one call\n baker ads chatgpt draft amend chatgpt_temp_ab12 '{\"name\":\"New\"}'\n baker ads chatgpt draft remove chatgpt_temp_ab12\n baker ads chatgpt draft clear`,\n },\n subCommands: {\n list: listCommand,\n show: showCommand,\n amend: amendCommand,\n remove: removeCommand,\n clear: clearCommand,\n },\n // A parent must never declare `run`: citty falls through to it after the\n // matched subcommand, so every edit would also print the whole draft.\n args: LIST_ARGS,\n default: \"list\",\n});\n","import type { ChatgptDraftListResponse, ChatgptDraftOpView, ChatgptDraftStatusNode } from \"@baker/api/ads-chatgpt\";\n\n/**\n * The staged ChatGPT Ads draft as a readable Campaign ▸ Ad group ▸ Ad tree.\n * After a publish its first line is the authoritative record: a draft still\n * reading `publishing` minutes later did not finish, whatever ChatGPT Ads shows.\n */\n\nconst OPERATION_LABELS: Record<string, { staged: string; done: string; notDone: string }> = {\n create: { staged: \"Creating\", done: \"Created\", notDone: \"Not created\" },\n update: { staged: \"Updating\", done: \"Updated\", notDone: \"Not updated\" },\n pause: { staged: \"Pausing\", done: \"Paused\", notDone: \"Not paused\" },\n resume: { staged: \"Resuming\", done: \"Resumed\", notDone: \"Not resumed\" },\n archive: { staged: \"Archiving\", done: \"Archived\", notDone: \"Not archived\" },\n};\n\nconst STATUS_HEADINGS: Record<string, string> = {\n active: \"staged\",\n publishing: \"publishing\",\n applied: \"published\",\n discarded: \"discarded\",\n};\n\nfunction badge(node: ChatgptDraftStatusNode): string {\n const label = node.operation ? OPERATION_LABELS[node.operation] : undefined;\n if (!label) {\n return node.existing ? \"on ChatGPT Ads\" : \"staged\";\n }\n if (node.outcome === \"applied\") {\n return label.done;\n }\n return node.outcome ? `${label.notDone} (${node.outcome})` : label.staged;\n}\n\nfunction renderNode(node: ChatgptDraftStatusNode, depth: number, out: string[]): void {\n const indent = \" \".repeat(depth);\n out.push(`${indent}${node.entity}: ${node.name} — ${badge(node)}`);\n for (const warning of node.warnings ?? []) {\n out.push(`${indent} ! ${warning}`);\n }\n for (const child of node.children) {\n renderNode(child, depth + 1, out);\n }\n}\n\nfunction didNotApply(op: ChatgptDraftOpView): boolean {\n return op.result?.status === \"failed\" || op.result?.status === \"skipped\";\n}\n\nfunction didApply(op: ChatgptDraftOpView): boolean {\n return op.result?.status === \"applied\" || op.result?.status === \"simulated\";\n}\n\nfunction headingLine(draft: ChatgptDraftListResponse): string {\n const heading = STATUS_HEADINGS[draft.status] ?? draft.status;\n if (draft.status !== \"applied\" && draft.status !== \"publishing\") {\n return `ChatGPT Ads: ${draft.count} change${draft.count === 1 ? \"\" : \"s\"} ${heading}`;\n }\n const applied = draft.ops.filter(didApply).length;\n const failed = draft.ops.filter(didNotApply).length;\n return `ChatGPT Ads: ${heading} · ${applied} applied${failed > 0 ? `, ${failed} failed` : \"\"}`;\n}\n\nexport function renderChatgptDraftStatus(draft: ChatgptDraftListResponse): string {\n if (draft.status === \"none\" || draft.count === 0) {\n return \"No ChatGPT Ads changes staged\";\n }\n const out = [headingLine(draft), \"\"];\n for (const node of draft.tree ?? []) {\n renderNode(node, 0, out);\n }\n const summaryByRef = new Map(draft.ops.map((op) => [op.ref, op.summary]));\n const problems = draft.ops.filter(didNotApply).map((op) => {\n if (op.result?.status === \"failed\") {\n return `✗ ${op.summary} — failed: ${op.result.error ?? \"ChatGPT Ads gave no reason\"}`;\n }\n const waitedOn = op.result?.skippedBecause;\n const parent = (waitedOn && summaryByRef.get(waitedOn)) ?? \"a change that did not apply\";\n return `✗ ${op.summary} — skipped: waiting on ${parent}, which did not apply`;\n });\n if (problems.length > 0) {\n out.push(\"\", ...problems);\n }\n return out.join(\"\\n\");\n}\n"],"mappings":"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","names":[]}
|