@koda-sl/baker-cli 0.545.0 → 0.546.0-dev.a72c87f73
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/dist/account-IG3U6UXZ.js +82 -0
- package/dist/account-IGWCS2VJ.js +82 -0
- package/dist/account-reads-LOCJMS35.js +219 -0
- package/dist/account-users-H4VP43RZ.js +64 -0
- package/dist/account-writes-BSSKSTZ2.js +68 -0
- package/dist/accounts-C4PNBT5X.js +701 -0
- package/dist/accounts-GPTG4XW5.js +80 -0
- package/dist/actions-F7YO5I27.js +55 -0
- package/dist/activecampaign-S4E46SA6.js +938 -0
- package/dist/ad-group-writes-KMB3OMJG.js +172 -0
- package/dist/ad-groups-E67CNQS4.js +70 -0
- package/dist/ad-writes-FNMKNFUN.js +176 -0
- package/dist/add-LROKBWW4.js +107 -0
- package/dist/add-SG5XWFRN.js +305 -0
- package/dist/ads-4LASBP4G.js +79 -0
- package/dist/ads-7ICT2D4M.js +48 -0
- package/dist/advertisers-IQMTOR4D.js +123 -0
- package/dist/analytics-6DSJ6WHO.js +2437 -0
- package/dist/analytics-D6S5LW2F.js +447 -0
- package/dist/animate-OWXAT2RK.js +480 -0
- package/dist/assign-TMG6FDLW.js +80 -0
- package/dist/audience-size-KPJOSG5W.js +76 -0
- package/dist/audiences-3R574STZ.js +280 -0
- package/dist/audit-35TDKIGY.js +154 -0
- package/dist/autocomplete-T63KPKRZ.js +114 -0
- package/dist/avatars-AVK4S3HS.js +38 -0
- package/dist/bid-pricing-O5IK37CL.js +103 -0
- package/dist/brand-SG6VOHF4.js +22 -0
- package/dist/brief-RWA6MXTN.js +543 -0
- package/dist/campaign-groups-SSZISPJ5.js +99 -0
- package/dist/campaign-writes-74KDZ7RR.js +168 -0
- package/dist/campaign-writes-Z2J24SUZ.js +176 -0
- package/dist/campaigns-43OS6EUG.js +78 -0
- package/dist/campaigns-B5TSL3UD.js +113 -0
- package/dist/campaigns-TFNPOQEW.js +111 -0
- package/dist/canvas-4LSM4Y5I.js +46 -0
- package/dist/capabilities-CTKSS7AI.js +147 -0
- package/dist/catalog-7LINLVVY.js +66 -0
- package/dist/catalogs-IR22RGZD.js +130 -0
- package/dist/changes-JAGWBHQC.js +143 -0
- package/dist/chatgpt-NE2RBMFK.js +47 -0
- package/dist/chats-6TRVVEBG.js +449 -0
- package/dist/check-DZGMLLRL.js +107 -0
- package/dist/chunk-2DQC4XSN.js +224 -0
- package/dist/chunk-3BWT5YDD.js +57 -0
- package/dist/chunk-3EUITH4J.js +638 -0
- package/dist/chunk-3J5ZTJGN.js +163 -0
- package/dist/chunk-3OFLYMPK.js +547 -0
- package/dist/chunk-4IRJ5JXA.js +46 -0
- package/dist/chunk-5IFFPSEN.js +225 -0
- package/dist/chunk-5YNGVEX2.js +23 -0
- package/dist/chunk-64ALJ6TJ.js +274 -0
- package/dist/chunk-6OIKNJ7G.js +26 -0
- package/dist/chunk-7L3Z2GDZ.js +61 -0
- package/dist/chunk-7LYJVM7L.js +377 -0
- package/dist/chunk-7UFV6H7J.js +167 -0
- package/dist/chunk-AGVLJLOT.js +203 -0
- package/dist/chunk-B3CDNANO.js +843 -0
- package/dist/chunk-BNI5DAB7.js +783 -0
- package/dist/chunk-BRT5IG7N.js +438 -0
- package/dist/chunk-CXRS5YLB.js +150 -0
- package/dist/chunk-CY6EPTJA.js +191 -0
- package/dist/chunk-CZ4Q3I25.js +2209 -0
- package/dist/chunk-E5H7JIWB.js +3510 -0
- package/dist/chunk-EGW3D3RW.js +207 -0
- package/dist/chunk-EPLSDHBT.js +8954 -0
- package/dist/chunk-F2VUMTCJ.js +103 -0
- package/dist/chunk-F3CZFUXZ.js +3187 -0
- package/dist/chunk-F3CZFUXZ.js.map +1 -0
- package/dist/chunk-FLF2CIL2.js +66 -0
- package/dist/chunk-FM4YT7QA.js +156 -0
- package/dist/chunk-FUIPDGGH.js +197 -0
- package/dist/chunk-G47B4DOH.js +910 -0
- package/dist/chunk-G6J6AWTE.js +5471 -0
- package/dist/chunk-GCZK4BMB.js +5368 -0
- package/dist/chunk-GVYJOHX5.js +455 -0
- package/dist/chunk-H4CLWLYF.js +4269 -0
- package/dist/chunk-H4CLWLYF.js.map +1 -0
- package/dist/chunk-ICEYCLRU.js +679 -0
- package/dist/chunk-IDFTXHRQ.js +275 -0
- package/dist/chunk-J2RUOIME.js +494 -0
- package/dist/chunk-JBNT444M.js +285 -0
- package/dist/chunk-K4IPXVVC.js +430 -0
- package/dist/chunk-K4IPXVVC.js.map +1 -0
- package/dist/chunk-KAUP6ONR.js +89 -0
- package/dist/chunk-KTO2Y3DI.js +1646 -0
- package/dist/chunk-KVYXHWX2.js +249 -0
- package/dist/chunk-L7AJMZ6Z.js +24026 -0
- package/dist/chunk-L7AJMZ6Z.js.map +1 -0
- package/dist/chunk-LDFM37DM.js +148 -0
- package/dist/chunk-LHC6OHQ6.js +857 -0
- package/dist/chunk-LQOJBPKV.js +142 -0
- package/dist/chunk-METHLFNZ.js +63 -0
- package/dist/chunk-MGOSJSDV.js +51 -0
- package/dist/chunk-O34P4WD5.js +604 -0
- package/dist/chunk-O5V2KBI4.js +387 -0
- package/dist/chunk-OO7Y2NMT.js +685 -0
- package/dist/chunk-P3AHGZH2.js +170 -0
- package/dist/chunk-P6FMQHJJ.js +131 -0
- package/dist/chunk-Q6LCL67T.js +1518 -0
- package/dist/chunk-Q7G5CWH6.js +169 -0
- package/dist/chunk-RA73BVUX.js +392 -0
- package/dist/chunk-S6ZCFRL5.js +19 -0
- package/dist/chunk-SIKCVWM3.js +76 -0
- package/dist/chunk-SIWXWRAD.js +831 -0
- package/dist/chunk-UKIS6BLM.js +7800 -0
- package/dist/chunk-UKIS6BLM.js.map +1 -0
- package/dist/chunk-UNIJPTDU.js +344 -0
- package/dist/chunk-UXFRUYTR.js +91 -0
- package/dist/chunk-V4UJERGL.js +64 -0
- package/dist/chunk-W46BM7HF.js +334 -0
- package/dist/chunk-WH7CATSZ.js +930 -0
- package/dist/chunk-WM2PLENG.js +1902 -0
- package/dist/chunk-XU6XQPNM.js +1919 -0
- package/dist/chunk-YKFGXS26.js +228 -0
- package/dist/chunk-YQB66YKJ.js +98 -0
- package/dist/chunk-YZKZQXRX.js +297 -0
- package/dist/chunk-ZDHWB32Y.js +91 -0
- package/dist/chunk-ZOYNCIRB.js +479 -0
- package/dist/claim-PTCFUZM2.js +200 -0
- package/dist/cli.js +31 -31
- package/dist/companies-STCBOG5Z.js +198 -0
- package/dist/company-4CE7CGNC.js +308 -0
- package/dist/complete-R4A7LBOQ.js +84 -0
- package/dist/connect-4VLRGTAM.js +45 -0
- package/dist/conversation-JS52LHCZ.js +96 -0
- package/dist/conversion-report-R4KJI4VA.js +127 -0
- package/dist/conversion-upload-command-WCLWA27O.js +439 -0
- package/dist/conversion-writes-XIQEIDPS.js +122 -0
- package/dist/conversions-IYEF6WZP.js +140 -0
- package/dist/conversions-RMBQNW3T.js +78 -0
- package/dist/create-6I7SRQHV.js +135 -0
- package/dist/create-JYBMK5JH.js +210 -0
- package/dist/create-MPUAOJQB.js +62 -0
- package/dist/create-W7L5B374.js +239 -0
- package/dist/creatives-EPXJ2PDV.js +223 -0
- package/dist/creatives-PP6Z2T6Z.js +58 -0
- package/dist/credentials-R4BZ76RD.js +290 -0
- package/dist/critique-ICVRILIZ.js +232 -0
- package/dist/critique-OTIGYFZU.js +1451 -0
- package/dist/crm-5JFMA2YB.js +227 -0
- package/dist/crm-PRTHRLXM.js +323 -0
- package/dist/currency-BY647ZB7.js +88 -0
- package/dist/customers-5EWPVKJV.js +65 -0
- package/dist/delete-5EWH2SQQ.js +57 -0
- package/dist/delete-V2FBPIN7.js +69 -0
- package/dist/delete-ZWUCKXI5.js +67 -0
- package/dist/demographics-2YCVAAPH.js +141 -0
- package/dist/discard-N7K3UQ7M.js +69 -0
- package/dist/discover-TAJUFO5R.js +172 -0
- package/dist/domain-YYTNWNSF.js +101 -0
- package/dist/download-JMJRYJ37.js +172 -0
- package/dist/draft-KQACMPH2.js +313 -0
- package/dist/draft-PENVOYCI.js +220 -0
- package/dist/draft-RGSDXFFT.js +408 -0
- package/dist/draft-SKEGKHIK.js +288 -0
- package/dist/draft-UOMHLIVY.js +342 -0
- package/dist/engine/index.js +8 -8
- package/dist/experiments-W5D7ERVJ.js +236 -0
- package/dist/facets-FUNOZ6JS.js +117 -0
- package/dist/feedback-OVZFH7UV.js +115 -0
- package/dist/feedback-record-DKDR3XHH.js +269 -0
- package/dist/fetch-QKP23NSX.js +204 -0
- package/dist/fit-PZPU2IZZ.js +65 -0
- package/dist/flows-GBMZJX4R.js +250 -0
- package/dist/fonts-2YY5465Q.js +39 -0
- package/dist/forecast-7B75GCRH.js +121 -0
- package/dist/forecast-VOND3WVO.js +169 -0
- package/dist/funnel-G4CMJ2C4.js +397 -0
- package/dist/generate-SW5KLHXG.js +263 -0
- package/dist/get-44VNCDBQ.js +59 -0
- package/dist/get-ZPJFKFHL.js +82 -0
- package/dist/google-VYARAUQH.js +3270 -0
- package/dist/google-ads-BKDTCXUS.js +198 -0
- package/dist/history-7DF5HFJT.js +69 -0
- package/dist/history-NEKVFRGQ.js +102 -0
- package/dist/history-YU6HH574.js +153 -0
- package/dist/hubspot-Q3ZQODAX.js +782 -0
- package/dist/ideas-75LW4KBY.js +45 -0
- package/dist/images-7FS4KEGU.js +92 -0
- package/dist/ingest-MHH5OQP4.js +27 -0
- package/dist/ingest-S5OS6WIU.js +123 -0
- package/dist/insights-YVV5MHPQ.js +132 -0
- package/dist/inspect-PIFZILBU.js +192 -0
- package/dist/inspiration-KL27O45N.js +53 -0
- package/dist/intent-GIAQDMHF.js +95 -0
- package/dist/keyword-gap-NZF75XGF.js +130 -0
- package/dist/keyword-metrics-H5M5I3N4.js +200 -0
- package/dist/keywords-for-site-RILBDULX.js +131 -0
- package/dist/landing-H5KY6F7K.js +28 -0
- package/dist/languages-GGNN7FEK.js +40 -0
- package/dist/leads-WCWH4C73.js +115 -0
- package/dist/learn-RUZUBNQZ.js +207 -0
- package/dist/line-item-writes-5Z3AEUV2.js +211 -0
- package/dist/line-items-IYSM2NEA.js +107 -0
- package/dist/link-KRNL5O7Z.js +67 -0
- package/dist/linkedin-GZIYAH4C.js +1330 -0
- package/dist/linkedin-person-PMXUBPVL.js +139 -0
- package/dist/list-ALQGX6JI.js +67 -0
- package/dist/list-I37IE3NN.js +154 -0
- package/dist/list-JD5T6CGQ.js +306 -0
- package/dist/locations-7RYEWKJO.js +69 -0
- package/dist/locations-BU4ZGWAS.js +40 -0
- package/dist/log-JWUFDOG6.js +95 -0
- package/dist/make-QCGOTYNW.js +1367 -0
- package/dist/map-EYKEY4VA.js +436 -0
- package/dist/mcp-P2PZCFFJ.js +729 -0
- package/dist/media-sources-UUNS3LES.js +35 -0
- package/dist/members-XTW5F5N5.js +47 -0
- package/dist/metrics-Z75Q2FHP.js +152 -0
- package/dist/models-X2IXXAD6.js +155 -0
- package/dist/normalize-P2UQIQOX.js +144 -0
- package/dist/options-2OK4LBAD.js +125 -0
- package/dist/organization-I5AIPZEH.js +949 -0
- package/dist/performance-4UPNHWC2.js +5565 -0
- package/dist/performance-H5FJQBOP.js +27 -0
- package/dist/pixels-DBSPNHIE.js +62 -0
- package/dist/promoted-tweet-writes-V5N5JDYQ.js +183 -0
- package/dist/promoted-tweets-ZSNBS3QQ.js +119 -0
- package/dist/publish-M6U72N3H.js +344 -0
- package/dist/query-NMQKS4MY.js +62 -0
- package/dist/reddit-AZMVTHPR.js +29 -0
- package/dist/refresh-42TJTJSN.js +97 -0
- package/dist/release-VT6TNWUV.js +63 -0
- package/dist/relevant-pages-JRIDJL4L.js +99 -0
- package/dist/remove-YW25PRT4.js +53 -0
- package/dist/reopen-WGTMBOHK.js +66 -0
- package/dist/rerun-O7P5LMC4.js +96 -0
- package/dist/research-IQWYPRBV.js +265 -0
- package/dist/research-WYNVU26K.js +75 -0
- package/dist/reset-4YPVS6QU.js +57 -0
- package/dist/reset-NF6K4NHK.js +57 -0
- package/dist/resolve-GB4ORVSB.js +124 -0
- package/dist/retry-LKJVOXVX.js +65 -0
- package/dist/retry-W3NSNNDV.js +63 -0
- package/dist/revenue-KHUWJPMJ.js +91 -0
- package/dist/rules-HMAONF3A.js +99 -0
- package/dist/rules-add-BP5XSD23.js +465 -0
- package/dist/run-EBCP5VIQ.js +71 -0
- package/dist/run-QP7JP2H4.js +69 -0
- package/dist/scaffold-ad-JVDV7FET.js +1513 -0
- package/dist/scaffold-static-ad-VD3KXMHT.js +1011 -0
- package/dist/scaffold-video-X3YR6APK.js +885 -0
- package/dist/schedule-7OKUUJHO.js +64 -0
- package/dist/scheduled-agents-N6FDAL7K.js +55 -0
- package/dist/schema-6O6CJTT5.js +135 -0
- package/dist/scrape-U6DIREQ2.js +2241 -0
- package/dist/scrape-U6DIREQ2.js.map +1 -0
- package/dist/search-WGOCL2KW.js +177 -0
- package/dist/select-6PVDRJQJ.js +110 -0
- package/dist/set-prompt-EDM7CPME.js +199 -0
- package/dist/setup-links-Z2KIKKJM.js +144 -0
- package/dist/shopify-AANLSYQY.js +3980 -0
- package/dist/site-6HHZJW2S.js +180 -0
- package/dist/sources-72AAZL4C.js +30 -0
- package/dist/sources-VRWQ65G6.js +457 -0
- package/dist/stale-KO6NQVR4.js +90 -0
- package/dist/status-QRO7U5K2.js +65 -0
- package/dist/studio-OV2ZY5W3.js +49 -0
- package/dist/sync-AQZ7JYEG.js +57 -0
- package/dist/sync-definition-OKSJA6MA.js +70 -0
- package/dist/tags-5GFUNIIK.js +23 -0
- package/dist/tags-DIFC2HFB.js +23 -0
- package/dist/tags-M26JKN2F.js +23 -0
- package/dist/tags-QFEG7LJV.js +26 -0
- package/dist/tags-ZWYUQYWT.js +227 -0
- package/dist/targeting-criteria-UQMPM2K5.js +113 -0
- package/dist/targets-YCVILKKZ.js +106 -0
- package/dist/testimonials-SJQJDEK4.js +32 -0
- package/dist/themes-RRLYZ46U.js +95 -0
- package/dist/top-companies-LPYM65KX.js +111 -0
- package/dist/transcript-D2IQWUSP.js +165 -0
- package/dist/translate-CPDFHEI4.js +603 -0
- package/dist/triggers-543HDVJK.js +144 -0
- package/dist/unlink-DQGU7K7V.js +70 -0
- package/dist/unstage-7UQU4MQT.js +88 -0
- package/dist/update-DGIBKKIB.js +155 -0
- package/dist/update-FEZ3EVTA.js +66 -0
- package/dist/update-QF6WBJU7.js +101 -0
- package/dist/update-RY3GU5QI.js +192 -0
- package/dist/upload-VMDGQ4HS.js +130 -0
- package/dist/url-options-2TQCGD2W.js +131 -0
- package/dist/url-params-LMC2DRHP.js +101 -0
- package/dist/validate-TLWEN4IL.js +125 -0
- package/dist/videos-GFOHRAJ7.js +41 -0
- package/dist/view-ZT3SAZKQ.js +121 -0
- package/dist/view-ZT3SAZKQ.js.map +1 -0
- package/dist/viewer-check-EKDFC7LQ.js +83 -0
- package/dist/web-L7LF6FLF.js +173 -0
- package/dist/winning-ads-RUS4NE5C.js +86 -0
- package/dist/write-commands-2JYDSXAX.js +1525 -0
- package/dist/x-HLZUSGJT.js +47 -0
- package/package.json +1 -1
- package/dist/account-2HJ4GKHN.js +0 -82
- package/dist/account-6GKPLNDY.js +0 -82
- package/dist/account-reads-X36NPCX5.js +0 -219
- package/dist/account-users-FGL3DZES.js +0 -64
- package/dist/account-writes-FZ3KCJZY.js +0 -68
- package/dist/accounts-PKSW3DBQ.js +0 -80
- package/dist/accounts-S5C6MZFO.js +0 -701
- package/dist/actions-ARN3OFB7.js +0 -55
- package/dist/activecampaign-3YJC3H2R.js +0 -938
- package/dist/ad-group-writes-XGG3WQEO.js +0 -172
- package/dist/ad-groups-GZIPUN64.js +0 -70
- package/dist/ad-writes-2VTRWQLW.js +0 -176
- package/dist/add-CNYKQD7B.js +0 -107
- package/dist/add-IABKHM5N.js +0 -305
- package/dist/ads-LNWALF6G.js +0 -79
- package/dist/ads-UXHJCUTX.js +0 -48
- package/dist/advertisers-UT7EJ6YS.js +0 -123
- package/dist/analytics-COUVH7MV.js +0 -447
- package/dist/analytics-EHUUNMGZ.js +0 -2437
- package/dist/animate-DM4OUJMR.js +0 -480
- package/dist/assign-FWT5QQDF.js +0 -80
- package/dist/audience-size-YI2RLIG7.js +0 -76
- package/dist/audiences-7D5VPOWF.js +0 -280
- package/dist/audit-BPRRCIWN.js +0 -154
- package/dist/autocomplete-OD6SHZZH.js +0 -114
- package/dist/avatars-FFFPCH6D.js +0 -38
- package/dist/bid-pricing-JF557IO2.js +0 -103
- package/dist/brand-ZUYJWKI3.js +0 -22
- package/dist/brief-CJDBD5GJ.js +0 -543
- package/dist/campaign-groups-VCT6ZH66.js +0 -99
- package/dist/campaign-writes-H22P6YPW.js +0 -176
- package/dist/campaign-writes-YOHDMYDT.js +0 -168
- package/dist/campaigns-265JXD2Z.js +0 -78
- package/dist/campaigns-7EGRZ3V6.js +0 -113
- package/dist/campaigns-ORK5BYAM.js +0 -111
- package/dist/canvas-FW5F3KZJ.js +0 -46
- package/dist/capabilities-ISW7XT44.js +0 -147
- package/dist/catalog-DPUQBZZ7.js +0 -66
- package/dist/catalogs-SBXFAD3X.js +0 -130
- package/dist/changes-HXVZUJMH.js +0 -143
- package/dist/chatgpt-UXJPCGZU.js +0 -47
- package/dist/chats-FH3DQNYD.js +0 -449
- package/dist/check-QC5RHS3Z.js +0 -107
- package/dist/chunk-2AC5GJHC.js +0 -455
- package/dist/chunk-2VSUMGJV.js +0 -89
- package/dist/chunk-4D73PLXU.js +0 -843
- package/dist/chunk-4S5ZAG4S.js +0 -63
- package/dist/chunk-5MMJPUBH.js +0 -387
- package/dist/chunk-5Y2XPKW2.js +0 -156
- package/dist/chunk-6HCYCMIH.js +0 -61
- package/dist/chunk-6R2BQ6FK.js +0 -344
- package/dist/chunk-7P74QKVC.js +0 -297
- package/dist/chunk-7SJU6PQ7.js +0 -604
- package/dist/chunk-A37TIYFD.js +0 -91
- package/dist/chunk-A6NVGPCZ.js +0 -479
- package/dist/chunk-AK7CL5IW.js +0 -334
- package/dist/chunk-AOT3UZBM.js +0 -930
- package/dist/chunk-D2ZAZGQH.js +0 -547
- package/dist/chunk-DYTBVVQX.js +0 -679
- package/dist/chunk-EB76M4ZH.js +0 -19
- package/dist/chunk-EBWOLUII.js +0 -24026
- package/dist/chunk-EBWOLUII.js.map +0 -1
- package/dist/chunk-EOMY5SUJ.js +0 -783
- package/dist/chunk-EY5WWPPZ.js +0 -1902
- package/dist/chunk-EZKT5YGX.js +0 -23
- package/dist/chunk-FVDC6AKZ.js +0 -150
- package/dist/chunk-GN7K3NPI.js +0 -148
- package/dist/chunk-GQAKWQAV.js +0 -224
- package/dist/chunk-HBDWE7WK.js +0 -98
- package/dist/chunk-HETNOUE4.js +0 -377
- package/dist/chunk-HFAT5S5B.js +0 -170
- package/dist/chunk-HQ3I2QVT.js +0 -275
- package/dist/chunk-IN5UCEJD.js +0 -91
- package/dist/chunk-JAC6JVCI.js +0 -26
- package/dist/chunk-JLLGXYOZ.js +0 -857
- package/dist/chunk-JY3OJBKZ.js +0 -3510
- package/dist/chunk-KBZRG6IK.js +0 -429
- package/dist/chunk-KBZRG6IK.js.map +0 -1
- package/dist/chunk-KCRBAMFU.js +0 -392
- package/dist/chunk-KIXVHP2C.js +0 -1919
- package/dist/chunk-KTY7H44G.js +0 -831
- package/dist/chunk-LKOMEXUB.js +0 -51
- package/dist/chunk-LVKAMWKJ.js +0 -163
- package/dist/chunk-LWCGQNVU.js +0 -685
- package/dist/chunk-MCJ5I5LR.js +0 -3187
- package/dist/chunk-MCJ5I5LR.js.map +0 -1
- package/dist/chunk-MSMTG6OC.js +0 -4269
- package/dist/chunk-MSMTG6OC.js.map +0 -1
- package/dist/chunk-MZPS46OR.js +0 -76
- package/dist/chunk-N4AIJQ4W.js +0 -438
- package/dist/chunk-NBWZVBDG.js +0 -131
- package/dist/chunk-OKB2EAJH.js +0 -8954
- package/dist/chunk-OT2MN5UR.js +0 -169
- package/dist/chunk-OZR3KUJ3.js +0 -57
- package/dist/chunk-P3VY5JEM.js +0 -274
- package/dist/chunk-PXGR3VGW.js +0 -1646
- package/dist/chunk-QK3HMAVU.js +0 -5471
- package/dist/chunk-R65V26HH.js +0 -7770
- package/dist/chunk-R65V26HH.js.map +0 -1
- package/dist/chunk-RHEWQB5O.js +0 -638
- package/dist/chunk-RP36XHWT.js +0 -46
- package/dist/chunk-RXOQZA4K.js +0 -66
- package/dist/chunk-SEHJ7Y7J.js +0 -207
- package/dist/chunk-SNWFM2DB.js +0 -228
- package/dist/chunk-TAGRKRFI.js +0 -103
- package/dist/chunk-TARINRA4.js +0 -1518
- package/dist/chunk-TNZUMU55.js +0 -167
- package/dist/chunk-TP2NS5SG.js +0 -191
- package/dist/chunk-UOXC3XA5.js +0 -494
- package/dist/chunk-UQA6Z23M.js +0 -142
- package/dist/chunk-VOUCQ2YW.js +0 -64
- package/dist/chunk-WJ5AHR4K.js +0 -2209
- package/dist/chunk-WOE4TZHJ.js +0 -285
- package/dist/chunk-XYNQMRNX.js +0 -5368
- package/dist/chunk-YEISVDKW.js +0 -203
- package/dist/chunk-YNLWSP5E.js +0 -910
- package/dist/chunk-ZEUAJAKN.js +0 -225
- package/dist/chunk-ZUUVWWB5.js +0 -197
- package/dist/chunk-ZVAZFHH7.js +0 -249
- package/dist/claim-FBL5VBYZ.js +0 -200
- package/dist/companies-URRCAJZE.js +0 -198
- package/dist/company-LDCNUPHZ.js +0 -308
- package/dist/complete-3UGPO444.js +0 -84
- package/dist/connect-M5KPZQWE.js +0 -45
- package/dist/conversation-S7YANZJR.js +0 -96
- package/dist/conversion-report-RB2MU7UD.js +0 -127
- package/dist/conversion-upload-command-HFZYKVXA.js +0 -439
- package/dist/conversion-writes-56AIPXPK.js +0 -122
- package/dist/conversions-NRX76ZIT.js +0 -78
- package/dist/conversions-QZL4DSJO.js +0 -140
- package/dist/create-56PJRLMA.js +0 -62
- package/dist/create-OE5MRW3X.js +0 -210
- package/dist/create-RL7PRIDY.js +0 -239
- package/dist/create-Y6YVJ5L4.js +0 -135
- package/dist/creatives-ESVH63AP.js +0 -223
- package/dist/creatives-URHXATY6.js +0 -58
- package/dist/credentials-O6QSB7ZR.js +0 -290
- package/dist/critique-EWJBOCXQ.js +0 -1451
- package/dist/critique-PTGGXRFG.js +0 -232
- package/dist/crm-F6RGNQH5.js +0 -323
- package/dist/crm-GLPOO22Q.js +0 -227
- package/dist/currency-CHBV6WIO.js +0 -88
- package/dist/customers-Q76FCWYO.js +0 -65
- package/dist/delete-ODFDZCL3.js +0 -57
- package/dist/delete-OVMPDGWQ.js +0 -69
- package/dist/delete-XN7N4S4H.js +0 -67
- package/dist/demographics-IY5RI55Z.js +0 -141
- package/dist/discard-GKIA5FML.js +0 -69
- package/dist/discover-ZU2DAV23.js +0 -172
- package/dist/domain-WGXA7OXV.js +0 -101
- package/dist/download-DYYNUGLX.js +0 -172
- package/dist/draft-EWGNZUU4.js +0 -288
- package/dist/draft-EX2I6UJB.js +0 -313
- package/dist/draft-GKI6MB7L.js +0 -342
- package/dist/draft-R7BNWMBR.js +0 -408
- package/dist/draft-VYIRZO3E.js +0 -220
- package/dist/experiments-6DOKWFH4.js +0 -236
- package/dist/facets-ZU5DT2QW.js +0 -117
- package/dist/feedback-RIUBM557.js +0 -115
- package/dist/feedback-record-3VVAUCOH.js +0 -269
- package/dist/fetch-T6TZCU74.js +0 -204
- package/dist/fit-YPOHTM7Y.js +0 -65
- package/dist/flows-CKVEZFF2.js +0 -250
- package/dist/fonts-3J3UVZ2E.js +0 -39
- package/dist/forecast-372Q6KQZ.js +0 -169
- package/dist/forecast-JEAFUR2O.js +0 -121
- package/dist/funnel-FBTNPTS7.js +0 -397
- package/dist/generate-JQIK3UYS.js +0 -263
- package/dist/get-5N5FCGNH.js +0 -59
- package/dist/get-EXHUQT65.js +0 -82
- package/dist/google-JHTOX6WM.js +0 -3270
- package/dist/google-ads-ZAYRCG2D.js +0 -198
- package/dist/history-4ULZ4BVV.js +0 -153
- package/dist/history-6J3XRNTZ.js +0 -102
- package/dist/history-VNLS2TKB.js +0 -69
- package/dist/hubspot-ZEHWWJHK.js +0 -782
- package/dist/ideas-SB6546GI.js +0 -45
- package/dist/images-LEZYVE7R.js +0 -92
- package/dist/ingest-4OOTCOLO.js +0 -123
- package/dist/ingest-KNJCCIBG.js +0 -27
- package/dist/insights-XY6II7TX.js +0 -132
- package/dist/inspect-MHKEYNIC.js +0 -192
- package/dist/inspiration-CSN3AXDD.js +0 -53
- package/dist/intent-5QUPPZNI.js +0 -95
- package/dist/keyword-gap-IG3EFLDH.js +0 -130
- package/dist/keyword-metrics-EL7MO3H6.js +0 -200
- package/dist/keywords-for-site-I7KJLZ2I.js +0 -131
- package/dist/landing-Z3QGJYM3.js +0 -28
- package/dist/languages-LNHWSCMT.js +0 -40
- package/dist/leads-WQCTZYKT.js +0 -115
- package/dist/learn-6KW6TUVL.js +0 -207
- package/dist/line-item-writes-B2KSP36W.js +0 -211
- package/dist/line-items-3ICE5DBI.js +0 -107
- package/dist/link-QRQ34ZDH.js +0 -67
- package/dist/linkedin-D4RKHQPS.js +0 -1330
- package/dist/linkedin-person-Y5TCUOXS.js +0 -139
- package/dist/list-6HZVHA6T.js +0 -154
- package/dist/list-CHYJ53JD.js +0 -306
- package/dist/list-XAMJSOGI.js +0 -67
- package/dist/locations-64JNCQID.js +0 -69
- package/dist/locations-KVAAO7LD.js +0 -40
- package/dist/log-PLXGA74X.js +0 -95
- package/dist/make-EP4YSN26.js +0 -1367
- package/dist/map-CAFMAMPP.js +0 -436
- package/dist/mcp-DDWSXLU7.js +0 -729
- package/dist/media-sources-J5FXYPV5.js +0 -35
- package/dist/members-ZA7S5KWP.js +0 -47
- package/dist/metrics-MXGA3EFS.js +0 -152
- package/dist/models-Z6SUHWKI.js +0 -155
- package/dist/normalize-ZHM2ZVXZ.js +0 -144
- package/dist/options-JTMDZECY.js +0 -125
- package/dist/organization-5OJEJEQV.js +0 -949
- package/dist/performance-AHVTOYTM.js +0 -5565
- package/dist/performance-S273NSUB.js +0 -27
- package/dist/pixels-H642RPK4.js +0 -62
- package/dist/promoted-tweet-writes-UF6LYMH4.js +0 -183
- package/dist/promoted-tweets-Z4GG6D7P.js +0 -119
- package/dist/publish-YQ6MHS7P.js +0 -344
- package/dist/query-FT2BA3WH.js +0 -62
- package/dist/reddit-YWYRZBL2.js +0 -29
- package/dist/refresh-TEXTTECA.js +0 -97
- package/dist/release-3JDETBZI.js +0 -63
- package/dist/relevant-pages-OCHLUV5K.js +0 -99
- package/dist/remove-KZTSU4K2.js +0 -53
- package/dist/reopen-GIJSFNDH.js +0 -66
- package/dist/rerun-6UZNOPUG.js +0 -96
- package/dist/research-TMKG4NQJ.js +0 -75
- package/dist/research-XA2IJ2XV.js +0 -265
- package/dist/reset-7VL6WJLE.js +0 -57
- package/dist/reset-HLZ6JHGY.js +0 -57
- package/dist/resolve-H2QW3U5Y.js +0 -124
- package/dist/retry-MIZ67MPP.js +0 -65
- package/dist/retry-WSWW6EJT.js +0 -63
- package/dist/revenue-LTU7HRT2.js +0 -91
- package/dist/rules-BGBCUUPH.js +0 -99
- package/dist/rules-add-SZT2MSOD.js +0 -465
- package/dist/run-FHGT4UQ7.js +0 -69
- package/dist/run-XUDGECLL.js +0 -71
- package/dist/scaffold-ad-VXNO3SQP.js +0 -1513
- package/dist/scaffold-static-ad-FT55VV3T.js +0 -1011
- package/dist/scaffold-video-V7WX5AWZ.js +0 -885
- package/dist/schedule-BNRLEFMZ.js +0 -64
- package/dist/scheduled-agents-MAXXXJ7W.js +0 -55
- package/dist/schema-YADPD54K.js +0 -135
- package/dist/scrape-3PWNMK4D.js +0 -2241
- package/dist/scrape-3PWNMK4D.js.map +0 -1
- package/dist/search-56ORG4PL.js +0 -177
- package/dist/select-DON4DMNM.js +0 -110
- package/dist/set-prompt-J22TUCRU.js +0 -199
- package/dist/setup-links-CHODCBYH.js +0 -144
- package/dist/shopify-FCYU4AR6.js +0 -3980
- package/dist/site-BF3Q26W5.js +0 -180
- package/dist/sources-SLCYAWTZ.js +0 -457
- package/dist/sources-VHHC6YQM.js +0 -30
- package/dist/stale-GLVTL2ZK.js +0 -90
- package/dist/status-E3RA644P.js +0 -65
- package/dist/studio-6ZXUKA4G.js +0 -49
- package/dist/sync-6QCDDJMO.js +0 -57
- package/dist/sync-definition-DXNHGY5E.js +0 -70
- package/dist/tags-AMZSQJJ2.js +0 -26
- package/dist/tags-KW7PG2TR.js +0 -23
- package/dist/tags-MGV5KG6I.js +0 -23
- package/dist/tags-TM27EIAL.js +0 -23
- package/dist/tags-VWGKVGZD.js +0 -227
- package/dist/targeting-criteria-FT3G4HAW.js +0 -113
- package/dist/targets-XLVHWO6Z.js +0 -106
- package/dist/testimonials-INXY7CXU.js +0 -32
- package/dist/themes-R3A6IVQN.js +0 -95
- package/dist/top-companies-MNX3GBCP.js +0 -111
- package/dist/transcript-GIAOWCTO.js +0 -165
- package/dist/translate-JEQ4K4AH.js +0 -603
- package/dist/triggers-KDXLDZ23.js +0 -144
- package/dist/unlink-PNBSDLBQ.js +0 -70
- package/dist/unstage-X2PDLT5O.js +0 -88
- package/dist/update-4JGHSQVZ.js +0 -66
- package/dist/update-4XUQN4LK.js +0 -101
- package/dist/update-TJTDFWER.js +0 -155
- package/dist/update-URU4TO2F.js +0 -192
- package/dist/upload-TO5EPTVD.js +0 -130
- package/dist/url-options-YZ6UG3NY.js +0 -131
- package/dist/url-params-533CWJH3.js +0 -101
- package/dist/validate-XF6HU7D4.js +0 -125
- package/dist/videos-KYZ4CUOB.js +0 -41
- package/dist/view-VFZUL5UL.js +0 -121
- package/dist/view-VFZUL5UL.js.map +0 -1
- package/dist/viewer-check-U5GUU34Z.js +0 -83
- package/dist/web-ZYMSMIV6.js +0 -173
- package/dist/winning-ads-BCN5RVAE.js +0 -86
- package/dist/write-commands-PZZ72PNL.js +0 -1525
- package/dist/x-DLEZYTAU.js +0 -47
- /package/dist/{account-2HJ4GKHN.js.map → account-IG3U6UXZ.js.map} +0 -0
- /package/dist/{account-6GKPLNDY.js.map → account-IGWCS2VJ.js.map} +0 -0
- /package/dist/{account-reads-X36NPCX5.js.map → account-reads-LOCJMS35.js.map} +0 -0
- /package/dist/{account-users-FGL3DZES.js.map → account-users-H4VP43RZ.js.map} +0 -0
- /package/dist/{account-writes-FZ3KCJZY.js.map → account-writes-BSSKSTZ2.js.map} +0 -0
- /package/dist/{accounts-S5C6MZFO.js.map → accounts-C4PNBT5X.js.map} +0 -0
- /package/dist/{accounts-PKSW3DBQ.js.map → accounts-GPTG4XW5.js.map} +0 -0
- /package/dist/{actions-ARN3OFB7.js.map → actions-F7YO5I27.js.map} +0 -0
- /package/dist/{activecampaign-3YJC3H2R.js.map → activecampaign-S4E46SA6.js.map} +0 -0
- /package/dist/{ad-group-writes-XGG3WQEO.js.map → ad-group-writes-KMB3OMJG.js.map} +0 -0
- /package/dist/{ad-groups-GZIPUN64.js.map → ad-groups-E67CNQS4.js.map} +0 -0
- /package/dist/{ad-writes-2VTRWQLW.js.map → ad-writes-FNMKNFUN.js.map} +0 -0
- /package/dist/{add-CNYKQD7B.js.map → add-LROKBWW4.js.map} +0 -0
- /package/dist/{add-IABKHM5N.js.map → add-SG5XWFRN.js.map} +0 -0
- /package/dist/{ads-LNWALF6G.js.map → ads-4LASBP4G.js.map} +0 -0
- /package/dist/{ads-UXHJCUTX.js.map → ads-7ICT2D4M.js.map} +0 -0
- /package/dist/{advertisers-UT7EJ6YS.js.map → advertisers-IQMTOR4D.js.map} +0 -0
- /package/dist/{analytics-EHUUNMGZ.js.map → analytics-6DSJ6WHO.js.map} +0 -0
- /package/dist/{analytics-COUVH7MV.js.map → analytics-D6S5LW2F.js.map} +0 -0
- /package/dist/{animate-DM4OUJMR.js.map → animate-OWXAT2RK.js.map} +0 -0
- /package/dist/{assign-FWT5QQDF.js.map → assign-TMG6FDLW.js.map} +0 -0
- /package/dist/{audience-size-YI2RLIG7.js.map → audience-size-KPJOSG5W.js.map} +0 -0
- /package/dist/{audiences-7D5VPOWF.js.map → audiences-3R574STZ.js.map} +0 -0
- /package/dist/{audit-BPRRCIWN.js.map → audit-35TDKIGY.js.map} +0 -0
- /package/dist/{autocomplete-OD6SHZZH.js.map → autocomplete-T63KPKRZ.js.map} +0 -0
- /package/dist/{avatars-FFFPCH6D.js.map → avatars-AVK4S3HS.js.map} +0 -0
- /package/dist/{bid-pricing-JF557IO2.js.map → bid-pricing-O5IK37CL.js.map} +0 -0
- /package/dist/{brand-ZUYJWKI3.js.map → brand-SG6VOHF4.js.map} +0 -0
- /package/dist/{brief-CJDBD5GJ.js.map → brief-RWA6MXTN.js.map} +0 -0
- /package/dist/{campaign-groups-VCT6ZH66.js.map → campaign-groups-SSZISPJ5.js.map} +0 -0
- /package/dist/{campaign-writes-YOHDMYDT.js.map → campaign-writes-74KDZ7RR.js.map} +0 -0
- /package/dist/{campaign-writes-H22P6YPW.js.map → campaign-writes-Z2J24SUZ.js.map} +0 -0
- /package/dist/{campaigns-265JXD2Z.js.map → campaigns-43OS6EUG.js.map} +0 -0
- /package/dist/{campaigns-7EGRZ3V6.js.map → campaigns-B5TSL3UD.js.map} +0 -0
- /package/dist/{campaigns-ORK5BYAM.js.map → campaigns-TFNPOQEW.js.map} +0 -0
- /package/dist/{canvas-FW5F3KZJ.js.map → canvas-4LSM4Y5I.js.map} +0 -0
- /package/dist/{capabilities-ISW7XT44.js.map → capabilities-CTKSS7AI.js.map} +0 -0
- /package/dist/{catalog-DPUQBZZ7.js.map → catalog-7LINLVVY.js.map} +0 -0
- /package/dist/{catalogs-SBXFAD3X.js.map → catalogs-IR22RGZD.js.map} +0 -0
- /package/dist/{changes-HXVZUJMH.js.map → changes-JAGWBHQC.js.map} +0 -0
- /package/dist/{chatgpt-UXJPCGZU.js.map → chatgpt-NE2RBMFK.js.map} +0 -0
- /package/dist/{chats-FH3DQNYD.js.map → chats-6TRVVEBG.js.map} +0 -0
- /package/dist/{check-QC5RHS3Z.js.map → check-DZGMLLRL.js.map} +0 -0
- /package/dist/{chunk-GQAKWQAV.js.map → chunk-2DQC4XSN.js.map} +0 -0
- /package/dist/{chunk-OZR3KUJ3.js.map → chunk-3BWT5YDD.js.map} +0 -0
- /package/dist/{chunk-RHEWQB5O.js.map → chunk-3EUITH4J.js.map} +0 -0
- /package/dist/{chunk-LVKAMWKJ.js.map → chunk-3J5ZTJGN.js.map} +0 -0
- /package/dist/{chunk-D2ZAZGQH.js.map → chunk-3OFLYMPK.js.map} +0 -0
- /package/dist/{chunk-RP36XHWT.js.map → chunk-4IRJ5JXA.js.map} +0 -0
- /package/dist/{chunk-ZEUAJAKN.js.map → chunk-5IFFPSEN.js.map} +0 -0
- /package/dist/{chunk-EZKT5YGX.js.map → chunk-5YNGVEX2.js.map} +0 -0
- /package/dist/{chunk-P3VY5JEM.js.map → chunk-64ALJ6TJ.js.map} +0 -0
- /package/dist/{chunk-JAC6JVCI.js.map → chunk-6OIKNJ7G.js.map} +0 -0
- /package/dist/{chunk-6HCYCMIH.js.map → chunk-7L3Z2GDZ.js.map} +0 -0
- /package/dist/{chunk-HETNOUE4.js.map → chunk-7LYJVM7L.js.map} +0 -0
- /package/dist/{chunk-TNZUMU55.js.map → chunk-7UFV6H7J.js.map} +0 -0
- /package/dist/{chunk-YEISVDKW.js.map → chunk-AGVLJLOT.js.map} +0 -0
- /package/dist/{chunk-4D73PLXU.js.map → chunk-B3CDNANO.js.map} +0 -0
- /package/dist/{chunk-EOMY5SUJ.js.map → chunk-BNI5DAB7.js.map} +0 -0
- /package/dist/{chunk-N4AIJQ4W.js.map → chunk-BRT5IG7N.js.map} +0 -0
- /package/dist/{chunk-FVDC6AKZ.js.map → chunk-CXRS5YLB.js.map} +0 -0
- /package/dist/{chunk-TP2NS5SG.js.map → chunk-CY6EPTJA.js.map} +0 -0
- /package/dist/{chunk-WJ5AHR4K.js.map → chunk-CZ4Q3I25.js.map} +0 -0
- /package/dist/{chunk-JY3OJBKZ.js.map → chunk-E5H7JIWB.js.map} +0 -0
- /package/dist/{chunk-SEHJ7Y7J.js.map → chunk-EGW3D3RW.js.map} +0 -0
- /package/dist/{chunk-OKB2EAJH.js.map → chunk-EPLSDHBT.js.map} +0 -0
- /package/dist/{chunk-TAGRKRFI.js.map → chunk-F2VUMTCJ.js.map} +0 -0
- /package/dist/{chunk-RXOQZA4K.js.map → chunk-FLF2CIL2.js.map} +0 -0
- /package/dist/{chunk-5Y2XPKW2.js.map → chunk-FM4YT7QA.js.map} +0 -0
- /package/dist/{chunk-ZUUVWWB5.js.map → chunk-FUIPDGGH.js.map} +0 -0
- /package/dist/{chunk-YNLWSP5E.js.map → chunk-G47B4DOH.js.map} +0 -0
- /package/dist/{chunk-QK3HMAVU.js.map → chunk-G6J6AWTE.js.map} +0 -0
- /package/dist/{chunk-XYNQMRNX.js.map → chunk-GCZK4BMB.js.map} +0 -0
- /package/dist/{chunk-2AC5GJHC.js.map → chunk-GVYJOHX5.js.map} +0 -0
- /package/dist/{chunk-DYTBVVQX.js.map → chunk-ICEYCLRU.js.map} +0 -0
- /package/dist/{chunk-HQ3I2QVT.js.map → chunk-IDFTXHRQ.js.map} +0 -0
- /package/dist/{chunk-UOXC3XA5.js.map → chunk-J2RUOIME.js.map} +0 -0
- /package/dist/{chunk-WOE4TZHJ.js.map → chunk-JBNT444M.js.map} +0 -0
- /package/dist/{chunk-2VSUMGJV.js.map → chunk-KAUP6ONR.js.map} +0 -0
- /package/dist/{chunk-PXGR3VGW.js.map → chunk-KTO2Y3DI.js.map} +0 -0
- /package/dist/{chunk-ZVAZFHH7.js.map → chunk-KVYXHWX2.js.map} +0 -0
- /package/dist/{chunk-GN7K3NPI.js.map → chunk-LDFM37DM.js.map} +0 -0
- /package/dist/{chunk-JLLGXYOZ.js.map → chunk-LHC6OHQ6.js.map} +0 -0
- /package/dist/{chunk-UQA6Z23M.js.map → chunk-LQOJBPKV.js.map} +0 -0
- /package/dist/{chunk-4S5ZAG4S.js.map → chunk-METHLFNZ.js.map} +0 -0
- /package/dist/{chunk-LKOMEXUB.js.map → chunk-MGOSJSDV.js.map} +0 -0
- /package/dist/{chunk-7SJU6PQ7.js.map → chunk-O34P4WD5.js.map} +0 -0
- /package/dist/{chunk-5MMJPUBH.js.map → chunk-O5V2KBI4.js.map} +0 -0
- /package/dist/{chunk-LWCGQNVU.js.map → chunk-OO7Y2NMT.js.map} +0 -0
- /package/dist/{chunk-HFAT5S5B.js.map → chunk-P3AHGZH2.js.map} +0 -0
- /package/dist/{chunk-NBWZVBDG.js.map → chunk-P6FMQHJJ.js.map} +0 -0
- /package/dist/{chunk-TARINRA4.js.map → chunk-Q6LCL67T.js.map} +0 -0
- /package/dist/{chunk-OT2MN5UR.js.map → chunk-Q7G5CWH6.js.map} +0 -0
- /package/dist/{chunk-KCRBAMFU.js.map → chunk-RA73BVUX.js.map} +0 -0
- /package/dist/{chunk-EB76M4ZH.js.map → chunk-S6ZCFRL5.js.map} +0 -0
- /package/dist/{chunk-MZPS46OR.js.map → chunk-SIKCVWM3.js.map} +0 -0
- /package/dist/{chunk-KTY7H44G.js.map → chunk-SIWXWRAD.js.map} +0 -0
- /package/dist/{chunk-6R2BQ6FK.js.map → chunk-UNIJPTDU.js.map} +0 -0
- /package/dist/{chunk-A37TIYFD.js.map → chunk-UXFRUYTR.js.map} +0 -0
- /package/dist/{chunk-VOUCQ2YW.js.map → chunk-V4UJERGL.js.map} +0 -0
- /package/dist/{chunk-AK7CL5IW.js.map → chunk-W46BM7HF.js.map} +0 -0
- /package/dist/{chunk-AOT3UZBM.js.map → chunk-WH7CATSZ.js.map} +0 -0
- /package/dist/{chunk-EY5WWPPZ.js.map → chunk-WM2PLENG.js.map} +0 -0
- /package/dist/{chunk-KIXVHP2C.js.map → chunk-XU6XQPNM.js.map} +0 -0
- /package/dist/{chunk-SNWFM2DB.js.map → chunk-YKFGXS26.js.map} +0 -0
- /package/dist/{chunk-HBDWE7WK.js.map → chunk-YQB66YKJ.js.map} +0 -0
- /package/dist/{chunk-7P74QKVC.js.map → chunk-YZKZQXRX.js.map} +0 -0
- /package/dist/{chunk-IN5UCEJD.js.map → chunk-ZDHWB32Y.js.map} +0 -0
- /package/dist/{chunk-A6NVGPCZ.js.map → chunk-ZOYNCIRB.js.map} +0 -0
- /package/dist/{claim-FBL5VBYZ.js.map → claim-PTCFUZM2.js.map} +0 -0
- /package/dist/{companies-URRCAJZE.js.map → companies-STCBOG5Z.js.map} +0 -0
- /package/dist/{company-LDCNUPHZ.js.map → company-4CE7CGNC.js.map} +0 -0
- /package/dist/{complete-3UGPO444.js.map → complete-R4A7LBOQ.js.map} +0 -0
- /package/dist/{connect-M5KPZQWE.js.map → connect-4VLRGTAM.js.map} +0 -0
- /package/dist/{conversation-S7YANZJR.js.map → conversation-JS52LHCZ.js.map} +0 -0
- /package/dist/{conversion-report-RB2MU7UD.js.map → conversion-report-R4KJI4VA.js.map} +0 -0
- /package/dist/{conversion-upload-command-HFZYKVXA.js.map → conversion-upload-command-WCLWA27O.js.map} +0 -0
- /package/dist/{conversion-writes-56AIPXPK.js.map → conversion-writes-XIQEIDPS.js.map} +0 -0
- /package/dist/{conversions-QZL4DSJO.js.map → conversions-IYEF6WZP.js.map} +0 -0
- /package/dist/{conversions-NRX76ZIT.js.map → conversions-RMBQNW3T.js.map} +0 -0
- /package/dist/{create-Y6YVJ5L4.js.map → create-6I7SRQHV.js.map} +0 -0
- /package/dist/{create-OE5MRW3X.js.map → create-JYBMK5JH.js.map} +0 -0
- /package/dist/{create-56PJRLMA.js.map → create-MPUAOJQB.js.map} +0 -0
- /package/dist/{create-RL7PRIDY.js.map → create-W7L5B374.js.map} +0 -0
- /package/dist/{creatives-ESVH63AP.js.map → creatives-EPXJ2PDV.js.map} +0 -0
- /package/dist/{creatives-URHXATY6.js.map → creatives-PP6Z2T6Z.js.map} +0 -0
- /package/dist/{credentials-O6QSB7ZR.js.map → credentials-R4BZ76RD.js.map} +0 -0
- /package/dist/{critique-PTGGXRFG.js.map → critique-ICVRILIZ.js.map} +0 -0
- /package/dist/{critique-EWJBOCXQ.js.map → critique-OTIGYFZU.js.map} +0 -0
- /package/dist/{crm-GLPOO22Q.js.map → crm-5JFMA2YB.js.map} +0 -0
- /package/dist/{crm-F6RGNQH5.js.map → crm-PRTHRLXM.js.map} +0 -0
- /package/dist/{currency-CHBV6WIO.js.map → currency-BY647ZB7.js.map} +0 -0
- /package/dist/{customers-Q76FCWYO.js.map → customers-5EWPVKJV.js.map} +0 -0
- /package/dist/{delete-ODFDZCL3.js.map → delete-5EWH2SQQ.js.map} +0 -0
- /package/dist/{delete-OVMPDGWQ.js.map → delete-V2FBPIN7.js.map} +0 -0
- /package/dist/{delete-XN7N4S4H.js.map → delete-ZWUCKXI5.js.map} +0 -0
- /package/dist/{demographics-IY5RI55Z.js.map → demographics-2YCVAAPH.js.map} +0 -0
- /package/dist/{discard-GKIA5FML.js.map → discard-N7K3UQ7M.js.map} +0 -0
- /package/dist/{discover-ZU2DAV23.js.map → discover-TAJUFO5R.js.map} +0 -0
- /package/dist/{domain-WGXA7OXV.js.map → domain-YYTNWNSF.js.map} +0 -0
- /package/dist/{download-DYYNUGLX.js.map → download-JMJRYJ37.js.map} +0 -0
- /package/dist/{draft-EX2I6UJB.js.map → draft-KQACMPH2.js.map} +0 -0
- /package/dist/{draft-VYIRZO3E.js.map → draft-PENVOYCI.js.map} +0 -0
- /package/dist/{draft-R7BNWMBR.js.map → draft-RGSDXFFT.js.map} +0 -0
- /package/dist/{draft-EWGNZUU4.js.map → draft-SKEGKHIK.js.map} +0 -0
- /package/dist/{draft-GKI6MB7L.js.map → draft-UOMHLIVY.js.map} +0 -0
- /package/dist/{experiments-6DOKWFH4.js.map → experiments-W5D7ERVJ.js.map} +0 -0
- /package/dist/{facets-ZU5DT2QW.js.map → facets-FUNOZ6JS.js.map} +0 -0
- /package/dist/{feedback-RIUBM557.js.map → feedback-OVZFH7UV.js.map} +0 -0
- /package/dist/{feedback-record-3VVAUCOH.js.map → feedback-record-DKDR3XHH.js.map} +0 -0
- /package/dist/{fetch-T6TZCU74.js.map → fetch-QKP23NSX.js.map} +0 -0
- /package/dist/{fit-YPOHTM7Y.js.map → fit-PZPU2IZZ.js.map} +0 -0
- /package/dist/{flows-CKVEZFF2.js.map → flows-GBMZJX4R.js.map} +0 -0
- /package/dist/{fonts-3J3UVZ2E.js.map → fonts-2YY5465Q.js.map} +0 -0
- /package/dist/{forecast-JEAFUR2O.js.map → forecast-7B75GCRH.js.map} +0 -0
- /package/dist/{forecast-372Q6KQZ.js.map → forecast-VOND3WVO.js.map} +0 -0
- /package/dist/{funnel-FBTNPTS7.js.map → funnel-G4CMJ2C4.js.map} +0 -0
- /package/dist/{generate-JQIK3UYS.js.map → generate-SW5KLHXG.js.map} +0 -0
- /package/dist/{get-5N5FCGNH.js.map → get-44VNCDBQ.js.map} +0 -0
- /package/dist/{get-EXHUQT65.js.map → get-ZPJFKFHL.js.map} +0 -0
- /package/dist/{google-JHTOX6WM.js.map → google-VYARAUQH.js.map} +0 -0
- /package/dist/{google-ads-ZAYRCG2D.js.map → google-ads-BKDTCXUS.js.map} +0 -0
- /package/dist/{history-VNLS2TKB.js.map → history-7DF5HFJT.js.map} +0 -0
- /package/dist/{history-6J3XRNTZ.js.map → history-NEKVFRGQ.js.map} +0 -0
- /package/dist/{history-4ULZ4BVV.js.map → history-YU6HH574.js.map} +0 -0
- /package/dist/{hubspot-ZEHWWJHK.js.map → hubspot-Q3ZQODAX.js.map} +0 -0
- /package/dist/{ideas-SB6546GI.js.map → ideas-75LW4KBY.js.map} +0 -0
- /package/dist/{images-LEZYVE7R.js.map → images-7FS4KEGU.js.map} +0 -0
- /package/dist/{ingest-KNJCCIBG.js.map → ingest-MHH5OQP4.js.map} +0 -0
- /package/dist/{ingest-4OOTCOLO.js.map → ingest-S5OS6WIU.js.map} +0 -0
- /package/dist/{insights-XY6II7TX.js.map → insights-YVV5MHPQ.js.map} +0 -0
- /package/dist/{inspect-MHKEYNIC.js.map → inspect-PIFZILBU.js.map} +0 -0
- /package/dist/{inspiration-CSN3AXDD.js.map → inspiration-KL27O45N.js.map} +0 -0
- /package/dist/{intent-5QUPPZNI.js.map → intent-GIAQDMHF.js.map} +0 -0
- /package/dist/{keyword-gap-IG3EFLDH.js.map → keyword-gap-NZF75XGF.js.map} +0 -0
- /package/dist/{keyword-metrics-EL7MO3H6.js.map → keyword-metrics-H5M5I3N4.js.map} +0 -0
- /package/dist/{keywords-for-site-I7KJLZ2I.js.map → keywords-for-site-RILBDULX.js.map} +0 -0
- /package/dist/{landing-Z3QGJYM3.js.map → landing-H5KY6F7K.js.map} +0 -0
- /package/dist/{languages-LNHWSCMT.js.map → languages-GGNN7FEK.js.map} +0 -0
- /package/dist/{leads-WQCTZYKT.js.map → leads-WCWH4C73.js.map} +0 -0
- /package/dist/{learn-6KW6TUVL.js.map → learn-RUZUBNQZ.js.map} +0 -0
- /package/dist/{line-item-writes-B2KSP36W.js.map → line-item-writes-5Z3AEUV2.js.map} +0 -0
- /package/dist/{line-items-3ICE5DBI.js.map → line-items-IYSM2NEA.js.map} +0 -0
- /package/dist/{link-QRQ34ZDH.js.map → link-KRNL5O7Z.js.map} +0 -0
- /package/dist/{linkedin-D4RKHQPS.js.map → linkedin-GZIYAH4C.js.map} +0 -0
- /package/dist/{linkedin-person-Y5TCUOXS.js.map → linkedin-person-PMXUBPVL.js.map} +0 -0
- /package/dist/{list-XAMJSOGI.js.map → list-ALQGX6JI.js.map} +0 -0
- /package/dist/{list-6HZVHA6T.js.map → list-I37IE3NN.js.map} +0 -0
- /package/dist/{list-CHYJ53JD.js.map → list-JD5T6CGQ.js.map} +0 -0
- /package/dist/{locations-64JNCQID.js.map → locations-7RYEWKJO.js.map} +0 -0
- /package/dist/{locations-KVAAO7LD.js.map → locations-BU4ZGWAS.js.map} +0 -0
- /package/dist/{log-PLXGA74X.js.map → log-JWUFDOG6.js.map} +0 -0
- /package/dist/{make-EP4YSN26.js.map → make-QCGOTYNW.js.map} +0 -0
- /package/dist/{map-CAFMAMPP.js.map → map-EYKEY4VA.js.map} +0 -0
- /package/dist/{mcp-DDWSXLU7.js.map → mcp-P2PZCFFJ.js.map} +0 -0
- /package/dist/{media-sources-J5FXYPV5.js.map → media-sources-UUNS3LES.js.map} +0 -0
- /package/dist/{members-ZA7S5KWP.js.map → members-XTW5F5N5.js.map} +0 -0
- /package/dist/{metrics-MXGA3EFS.js.map → metrics-Z75Q2FHP.js.map} +0 -0
- /package/dist/{models-Z6SUHWKI.js.map → models-X2IXXAD6.js.map} +0 -0
- /package/dist/{normalize-ZHM2ZVXZ.js.map → normalize-P2UQIQOX.js.map} +0 -0
- /package/dist/{options-JTMDZECY.js.map → options-2OK4LBAD.js.map} +0 -0
- /package/dist/{organization-5OJEJEQV.js.map → organization-I5AIPZEH.js.map} +0 -0
- /package/dist/{performance-AHVTOYTM.js.map → performance-4UPNHWC2.js.map} +0 -0
- /package/dist/{performance-S273NSUB.js.map → performance-H5FJQBOP.js.map} +0 -0
- /package/dist/{pixels-H642RPK4.js.map → pixels-DBSPNHIE.js.map} +0 -0
- /package/dist/{promoted-tweet-writes-UF6LYMH4.js.map → promoted-tweet-writes-V5N5JDYQ.js.map} +0 -0
- /package/dist/{promoted-tweets-Z4GG6D7P.js.map → promoted-tweets-ZSNBS3QQ.js.map} +0 -0
- /package/dist/{publish-YQ6MHS7P.js.map → publish-M6U72N3H.js.map} +0 -0
- /package/dist/{query-FT2BA3WH.js.map → query-NMQKS4MY.js.map} +0 -0
- /package/dist/{reddit-YWYRZBL2.js.map → reddit-AZMVTHPR.js.map} +0 -0
- /package/dist/{refresh-TEXTTECA.js.map → refresh-42TJTJSN.js.map} +0 -0
- /package/dist/{release-3JDETBZI.js.map → release-VT6TNWUV.js.map} +0 -0
- /package/dist/{relevant-pages-OCHLUV5K.js.map → relevant-pages-JRIDJL4L.js.map} +0 -0
- /package/dist/{remove-KZTSU4K2.js.map → remove-YW25PRT4.js.map} +0 -0
- /package/dist/{reopen-GIJSFNDH.js.map → reopen-WGTMBOHK.js.map} +0 -0
- /package/dist/{rerun-6UZNOPUG.js.map → rerun-O7P5LMC4.js.map} +0 -0
- /package/dist/{research-XA2IJ2XV.js.map → research-IQWYPRBV.js.map} +0 -0
- /package/dist/{research-TMKG4NQJ.js.map → research-WYNVU26K.js.map} +0 -0
- /package/dist/{reset-7VL6WJLE.js.map → reset-4YPVS6QU.js.map} +0 -0
- /package/dist/{reset-HLZ6JHGY.js.map → reset-NF6K4NHK.js.map} +0 -0
- /package/dist/{resolve-H2QW3U5Y.js.map → resolve-GB4ORVSB.js.map} +0 -0
- /package/dist/{retry-MIZ67MPP.js.map → retry-LKJVOXVX.js.map} +0 -0
- /package/dist/{retry-WSWW6EJT.js.map → retry-W3NSNNDV.js.map} +0 -0
- /package/dist/{revenue-LTU7HRT2.js.map → revenue-KHUWJPMJ.js.map} +0 -0
- /package/dist/{rules-BGBCUUPH.js.map → rules-HMAONF3A.js.map} +0 -0
- /package/dist/{rules-add-SZT2MSOD.js.map → rules-add-BP5XSD23.js.map} +0 -0
- /package/dist/{run-XUDGECLL.js.map → run-EBCP5VIQ.js.map} +0 -0
- /package/dist/{run-FHGT4UQ7.js.map → run-QP7JP2H4.js.map} +0 -0
- /package/dist/{scaffold-ad-VXNO3SQP.js.map → scaffold-ad-JVDV7FET.js.map} +0 -0
- /package/dist/{scaffold-static-ad-FT55VV3T.js.map → scaffold-static-ad-VD3KXMHT.js.map} +0 -0
- /package/dist/{scaffold-video-V7WX5AWZ.js.map → scaffold-video-X3YR6APK.js.map} +0 -0
- /package/dist/{schedule-BNRLEFMZ.js.map → schedule-7OKUUJHO.js.map} +0 -0
- /package/dist/{scheduled-agents-MAXXXJ7W.js.map → scheduled-agents-N6FDAL7K.js.map} +0 -0
- /package/dist/{schema-YADPD54K.js.map → schema-6O6CJTT5.js.map} +0 -0
- /package/dist/{search-56ORG4PL.js.map → search-WGOCL2KW.js.map} +0 -0
- /package/dist/{select-DON4DMNM.js.map → select-6PVDRJQJ.js.map} +0 -0
- /package/dist/{set-prompt-J22TUCRU.js.map → set-prompt-EDM7CPME.js.map} +0 -0
- /package/dist/{setup-links-CHODCBYH.js.map → setup-links-Z2KIKKJM.js.map} +0 -0
- /package/dist/{shopify-FCYU4AR6.js.map → shopify-AANLSYQY.js.map} +0 -0
- /package/dist/{site-BF3Q26W5.js.map → site-6HHZJW2S.js.map} +0 -0
- /package/dist/{sources-VHHC6YQM.js.map → sources-72AAZL4C.js.map} +0 -0
- /package/dist/{sources-SLCYAWTZ.js.map → sources-VRWQ65G6.js.map} +0 -0
- /package/dist/{stale-GLVTL2ZK.js.map → stale-KO6NQVR4.js.map} +0 -0
- /package/dist/{status-E3RA644P.js.map → status-QRO7U5K2.js.map} +0 -0
- /package/dist/{studio-6ZXUKA4G.js.map → studio-OV2ZY5W3.js.map} +0 -0
- /package/dist/{sync-6QCDDJMO.js.map → sync-AQZ7JYEG.js.map} +0 -0
- /package/dist/{sync-definition-DXNHGY5E.js.map → sync-definition-OKSJA6MA.js.map} +0 -0
- /package/dist/{tags-KW7PG2TR.js.map → tags-5GFUNIIK.js.map} +0 -0
- /package/dist/{tags-MGV5KG6I.js.map → tags-DIFC2HFB.js.map} +0 -0
- /package/dist/{tags-TM27EIAL.js.map → tags-M26JKN2F.js.map} +0 -0
- /package/dist/{tags-AMZSQJJ2.js.map → tags-QFEG7LJV.js.map} +0 -0
- /package/dist/{tags-VWGKVGZD.js.map → tags-ZWYUQYWT.js.map} +0 -0
- /package/dist/{targeting-criteria-FT3G4HAW.js.map → targeting-criteria-UQMPM2K5.js.map} +0 -0
- /package/dist/{targets-XLVHWO6Z.js.map → targets-YCVILKKZ.js.map} +0 -0
- /package/dist/{testimonials-INXY7CXU.js.map → testimonials-SJQJDEK4.js.map} +0 -0
- /package/dist/{themes-R3A6IVQN.js.map → themes-RRLYZ46U.js.map} +0 -0
- /package/dist/{top-companies-MNX3GBCP.js.map → top-companies-LPYM65KX.js.map} +0 -0
- /package/dist/{transcript-GIAOWCTO.js.map → transcript-D2IQWUSP.js.map} +0 -0
- /package/dist/{translate-JEQ4K4AH.js.map → translate-CPDFHEI4.js.map} +0 -0
- /package/dist/{triggers-KDXLDZ23.js.map → triggers-543HDVJK.js.map} +0 -0
- /package/dist/{unlink-PNBSDLBQ.js.map → unlink-DQGU7K7V.js.map} +0 -0
- /package/dist/{unstage-X2PDLT5O.js.map → unstage-7UQU4MQT.js.map} +0 -0
- /package/dist/{update-TJTDFWER.js.map → update-DGIBKKIB.js.map} +0 -0
- /package/dist/{update-4JGHSQVZ.js.map → update-FEZ3EVTA.js.map} +0 -0
- /package/dist/{update-4XUQN4LK.js.map → update-QF6WBJU7.js.map} +0 -0
- /package/dist/{update-URU4TO2F.js.map → update-RY3GU5QI.js.map} +0 -0
- /package/dist/{upload-TO5EPTVD.js.map → upload-VMDGQ4HS.js.map} +0 -0
- /package/dist/{url-options-YZ6UG3NY.js.map → url-options-2TQCGD2W.js.map} +0 -0
- /package/dist/{url-params-533CWJH3.js.map → url-params-LMC2DRHP.js.map} +0 -0
- /package/dist/{validate-XF6HU7D4.js.map → validate-TLWEN4IL.js.map} +0 -0
- /package/dist/{videos-KYZ4CUOB.js.map → videos-GFOHRAJ7.js.map} +0 -0
- /package/dist/{viewer-check-U5GUU34Z.js.map → viewer-check-EKDFC7LQ.js.map} +0 -0
- /package/dist/{web-ZYMSMIV6.js.map → web-L7LF6FLF.js.map} +0 -0
- /package/dist/{winning-ads-BCN5RVAE.js.map → winning-ads-RUS4NE5C.js.map} +0 -0
- /package/dist/{write-commands-PZZ72PNL.js.map → write-commands-2JYDSXAX.js.map} +0 -0
- /package/dist/{x-DLEZYTAU.js.map → x-HLZUSGJT.js.map} +0 -0
package/dist/chunk-MZPS46OR.js
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
MODEL_REGISTRY,
|
|
3
|
-
isRegisteredModel
|
|
4
|
-
} from "./chunk-MCJ5I5LR.js";
|
|
5
|
-
|
|
6
|
-
// src/commands/canvas/scaffold-common.ts
|
|
7
|
-
import { access, readFile } from "fs/promises";
|
|
8
|
-
|
|
9
|
-
// src/commands/canvas/composition-path.ts
|
|
10
|
-
import { existsSync } from "fs";
|
|
11
|
-
import path from "path";
|
|
12
|
-
function resolveShippedCanvasDir(name, startDir, exists = existsSync, maxDepth = 8) {
|
|
13
|
-
const rel = path.join("canvas", name);
|
|
14
|
-
let dir = startDir;
|
|
15
|
-
for (let i = 0; i < maxDepth; i++) {
|
|
16
|
-
const candidate = path.join(dir, rel);
|
|
17
|
-
if (exists(path.join(candidate, "meta.json"))) return candidate;
|
|
18
|
-
const parent = path.dirname(dir);
|
|
19
|
-
if (parent === dir) break;
|
|
20
|
-
dir = parent;
|
|
21
|
-
}
|
|
22
|
-
return path.resolve(startDir, "../../../", rel);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
// src/commands/canvas/scaffold-common.ts
|
|
26
|
-
var SHIPPED_OVERLAY_COMPOSITION_DIR = resolveShippedCanvasDir(
|
|
27
|
-
"video-overlay-composition",
|
|
28
|
-
import.meta.dirname
|
|
29
|
-
);
|
|
30
|
-
var SHIPPED_CAPTIONS_DIR = resolveShippedCanvasDir("tiktok-captions-composition", import.meta.dirname);
|
|
31
|
-
function resolveModel(kind, requested, fallback) {
|
|
32
|
-
const model = requested ? String(requested) : fallback;
|
|
33
|
-
if (isRegisteredModel(kind, model)) return model;
|
|
34
|
-
const known = Object.keys(MODEL_REGISTRY[kind]).join(", ");
|
|
35
|
-
throw new Error(`"${model}" is not a ${kind} model. Use one of: ${known}`);
|
|
36
|
-
}
|
|
37
|
-
async function loadAssetText(ref, label) {
|
|
38
|
-
const r = ref;
|
|
39
|
-
if (typeof r?.path === "string") return readFile(r.path, "utf8");
|
|
40
|
-
if (typeof r?.url === "string") {
|
|
41
|
-
const res = await fetch(r.url);
|
|
42
|
-
if (!res.ok) throw new Error(`failed to fetch ${label} (${res.status})`);
|
|
43
|
-
return res.text();
|
|
44
|
-
}
|
|
45
|
-
throw new Error(`${label}: output had no readable path or url`);
|
|
46
|
-
}
|
|
47
|
-
function parseElements(raw) {
|
|
48
|
-
const parsed = JSON.parse(raw);
|
|
49
|
-
if (Array.isArray(parsed)) return parsed;
|
|
50
|
-
if (parsed && typeof parsed === "object" && Array.isArray(parsed.elements)) {
|
|
51
|
-
return parsed.elements;
|
|
52
|
-
}
|
|
53
|
-
return [];
|
|
54
|
-
}
|
|
55
|
-
function fail(code, message, fix) {
|
|
56
|
-
process.stderr.write(`${JSON.stringify({ ok: false, error: { code, message, ...fix ? { fix } : {} } }, null, 2)}
|
|
57
|
-
`);
|
|
58
|
-
process.exit(2);
|
|
59
|
-
}
|
|
60
|
-
function fileExists(target) {
|
|
61
|
-
return access(target).then(
|
|
62
|
-
() => true,
|
|
63
|
-
() => false
|
|
64
|
-
);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
export {
|
|
68
|
-
SHIPPED_OVERLAY_COMPOSITION_DIR,
|
|
69
|
-
SHIPPED_CAPTIONS_DIR,
|
|
70
|
-
resolveModel,
|
|
71
|
-
loadAssetText,
|
|
72
|
-
parseElements,
|
|
73
|
-
fail,
|
|
74
|
-
fileExists
|
|
75
|
-
};
|
|
76
|
-
//# sourceMappingURL=chunk-MZPS46OR.js.map
|
package/dist/chunk-N4AIJQ4W.js
DELETED
|
@@ -1,438 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
MAX_VIDEO_INGEST_BYTES,
|
|
3
|
-
MAX_VIDEO_INGEST_SECONDS,
|
|
4
|
-
directDedupeKey,
|
|
5
|
-
downloadTimeoutMs,
|
|
6
|
-
isDirectMediaUrl,
|
|
7
|
-
isDrmProtected,
|
|
8
|
-
isRegionBlocked,
|
|
9
|
-
isToolingOrBlockFailure,
|
|
10
|
-
refuseByDuration,
|
|
11
|
-
resolveIngestSource,
|
|
12
|
-
worthDownloadingInstead
|
|
13
|
-
} from "./chunk-FKOECEVC.js";
|
|
14
|
-
import {
|
|
15
|
-
eachTarget,
|
|
16
|
-
failWith,
|
|
17
|
-
positionalTargets
|
|
18
|
-
} from "./chunk-JELKYZ4L.js";
|
|
19
|
-
import {
|
|
20
|
-
YtDlpError,
|
|
21
|
-
canonicalUrl,
|
|
22
|
-
durationSeconds,
|
|
23
|
-
isAudioOnly,
|
|
24
|
-
isVimeoAuthFailure,
|
|
25
|
-
probeYtDlp,
|
|
26
|
-
runYtDlp,
|
|
27
|
-
ytDlpBlockSignal
|
|
28
|
-
} from "./chunk-XBR7TSZN.js";
|
|
29
|
-
import {
|
|
30
|
-
videosIngestRequestSchema
|
|
31
|
-
} from "./chunk-R65V26HH.js";
|
|
32
|
-
import {
|
|
33
|
-
ApiError,
|
|
34
|
-
apiPost
|
|
35
|
-
} from "./chunk-B2OHCWYB.js";
|
|
36
|
-
import {
|
|
37
|
-
captureVimeoCookie,
|
|
38
|
-
isProxyFailure
|
|
39
|
-
} from "./chunk-E54435XT.js";
|
|
40
|
-
import {
|
|
41
|
-
maskEnvelope,
|
|
42
|
-
registerSchema,
|
|
43
|
-
writeJson
|
|
44
|
-
} from "./chunk-WCIS4FZH.js";
|
|
45
|
-
|
|
46
|
-
// src/commands/videos/ingest.ts
|
|
47
|
-
import { mkdtemp, rm, stat } from "fs/promises";
|
|
48
|
-
import { tmpdir } from "os";
|
|
49
|
-
import path from "path";
|
|
50
|
-
import { defineCommand } from "citty";
|
|
51
|
-
|
|
52
|
-
// src/lib/streamUpload.ts
|
|
53
|
-
import { createHash } from "crypto";
|
|
54
|
-
import { createReadStream } from "fs";
|
|
55
|
-
import { Readable } from "stream";
|
|
56
|
-
import { pipeline } from "stream/promises";
|
|
57
|
-
async function hashFile(filePath) {
|
|
58
|
-
const hash = createHash("sha256");
|
|
59
|
-
await pipeline(createReadStream(filePath), hash);
|
|
60
|
-
return hash.digest("hex");
|
|
61
|
-
}
|
|
62
|
-
async function putFileStreamed(args) {
|
|
63
|
-
const body = Readable.toWeb(createReadStream(args.filePath));
|
|
64
|
-
return await fetch(args.putUrl, {
|
|
65
|
-
method: "PUT",
|
|
66
|
-
body,
|
|
67
|
-
headers: {
|
|
68
|
-
"Content-Type": args.contentType,
|
|
69
|
-
"Content-Length": String(args.sizeBytes)
|
|
70
|
-
},
|
|
71
|
-
duplex: "half"
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
// src/commands/videos/ingest.ts
|
|
76
|
-
registerSchema({
|
|
77
|
-
command: "videos.ingest",
|
|
78
|
-
description: "Add videos to the library from URLs \u2014 direct files, or YouTube/TikTok/Vimeo pages. Several URLs run at once and return one row each.",
|
|
79
|
-
args: {
|
|
80
|
-
url: {
|
|
81
|
-
type: "string",
|
|
82
|
-
description: "Video URL (direct file or a watch/post page); pass several to add them at once",
|
|
83
|
-
required: true
|
|
84
|
-
},
|
|
85
|
-
source: { type: "string", description: "Provenance: url | youtube", required: false },
|
|
86
|
-
"external-id": { type: "string", description: "Provider asset id (deduped on)", required: false },
|
|
87
|
-
"external-url": { type: "string", description: "Canonical page URL", required: false },
|
|
88
|
-
download: {
|
|
89
|
-
type: "boolean",
|
|
90
|
-
description: "Force the download path instead of letting Baker fetch the URL directly",
|
|
91
|
-
required: false,
|
|
92
|
-
default: false
|
|
93
|
-
},
|
|
94
|
-
country: {
|
|
95
|
-
type: "string",
|
|
96
|
-
description: "Two-letter country to fetch from (e.g. US, DE, JP) \u2014 use when a video is blocked in your region",
|
|
97
|
-
required: false
|
|
98
|
-
},
|
|
99
|
-
context: {
|
|
100
|
-
type: "string",
|
|
101
|
-
description: "What you know that the video cannot show \u2014 the campaign, whether the person on camera is a real customer, what it is for. Highest-leverage flag here: it is what makes the clip findable later.",
|
|
102
|
-
required: false
|
|
103
|
-
},
|
|
104
|
-
"dry-run": { type: "boolean", description: "Preview the operation without executing", required: false },
|
|
105
|
-
fields: {
|
|
106
|
-
type: "string",
|
|
107
|
-
description: "Comma-separated field names to keep on each added video; failed URLs are always listed whole",
|
|
108
|
-
required: false
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
});
|
|
112
|
-
var ingestCommand = defineCommand({
|
|
113
|
-
meta: {
|
|
114
|
-
name: "ingest",
|
|
115
|
-
description: 'Add videos to the library from URLs. A direct file URL is handed straight to Baker, which fetches it. A page URL (YouTube, TikTok, Vimeo, Instagram) is downloaded here first, then uploaded \u2014 and a direct URL that Baker cannot fetch falls back to that same path automatically. Several URLs are added at once, so a list takes about as long as its slowest clip: pass them all in one call rather than looping.\n\nExamples:\n baker videos ingest https://www.youtube.com/watch?v=abc123\n baker videos ingest https://youtu.be/a https://youtu.be/b https://cdn.example.com/c.mp4 --context "Spring campaign testimonials"'
|
|
116
|
-
},
|
|
117
|
-
args: {
|
|
118
|
-
url: { type: "positional", description: "Video URL; pass several to add them at once", required: false },
|
|
119
|
-
source: { type: "string", description: "Provenance: url | youtube", required: false },
|
|
120
|
-
"external-id": { type: "string", description: "Provider asset id (one URL only)", required: false },
|
|
121
|
-
"external-url": { type: "string", description: "Canonical page URL (one URL only)", required: false },
|
|
122
|
-
download: { type: "boolean", description: "Force the download path", required: false, default: false },
|
|
123
|
-
country: { type: "string", description: "Two-letter country to fetch from, e.g. US", required: false },
|
|
124
|
-
context: {
|
|
125
|
-
type: "string",
|
|
126
|
-
description: "Context for the analysis \u2014 campaign, who is on camera, intended use (applies to every URL)",
|
|
127
|
-
required: false
|
|
128
|
-
},
|
|
129
|
-
"dry-run": { type: "boolean", description: "Preview without executing", required: false, default: false },
|
|
130
|
-
fields: { type: "string", description: "Comma-separated field names to keep on each added video", required: false }
|
|
131
|
-
},
|
|
132
|
-
run: ({ args }) => runVideoIngest({
|
|
133
|
-
urls: positionalTargets(args),
|
|
134
|
-
source: args.source,
|
|
135
|
-
externalId: args["external-id"],
|
|
136
|
-
externalUrl: args["external-url"],
|
|
137
|
-
forceDownload: args.download === true,
|
|
138
|
-
country: args.country,
|
|
139
|
-
context: args.context,
|
|
140
|
-
dryRun: args["dry-run"] === true,
|
|
141
|
-
fields: typeof args.fields === "string" && args.fields.length > 0 ? args.fields.split(",") : void 0
|
|
142
|
-
})
|
|
143
|
-
});
|
|
144
|
-
async function runVideoIngest(opts) {
|
|
145
|
-
const { urls } = opts;
|
|
146
|
-
if (urls.length === 0) {
|
|
147
|
-
failWith({ code: "VALIDATION_ERROR", message: "URL is required" });
|
|
148
|
-
}
|
|
149
|
-
if (urls.length > 1 && (opts.externalId || opts.externalUrl)) {
|
|
150
|
-
failWith({
|
|
151
|
-
code: "VALIDATION_ERROR",
|
|
152
|
-
message: "--external-id and --external-url name a single video, so they cannot be used with several URLs."
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
const country = opts.country?.trim() || void 0;
|
|
156
|
-
const plans = planIngests(opts);
|
|
157
|
-
if (opts.dryRun) {
|
|
158
|
-
const params = plans.map(({ args, direct }) => dryRunParams(args, direct, country));
|
|
159
|
-
writeJson({
|
|
160
|
-
ok: true,
|
|
161
|
-
dryRun: true,
|
|
162
|
-
operation: "videos.ingest",
|
|
163
|
-
params: params.length === 1 && params[0] ? params[0] : { items: params }
|
|
164
|
-
});
|
|
165
|
-
return;
|
|
166
|
-
}
|
|
167
|
-
const byUrl = new Map(plans.map((plan) => [plan.args.url, plan]));
|
|
168
|
-
const outcomes = await eachTarget(
|
|
169
|
-
urls,
|
|
170
|
-
(url) => {
|
|
171
|
-
const plan = byUrl.get(url);
|
|
172
|
-
return ingestByRoute(plan.args, plan.direct, country);
|
|
173
|
-
},
|
|
174
|
-
ingestFailure
|
|
175
|
-
);
|
|
176
|
-
writeIngestOutcomes(outcomes, opts.fields);
|
|
177
|
-
}
|
|
178
|
-
function planIngests(opts) {
|
|
179
|
-
const plans = opts.urls.map((url) => {
|
|
180
|
-
const args = {
|
|
181
|
-
url,
|
|
182
|
-
source: resolveIngestSource(opts.source, url),
|
|
183
|
-
externalId: opts.externalId,
|
|
184
|
-
// Deliberately NOT pre-filled with the pasted URL. Doing so shadowed the
|
|
185
|
-
// canonical URL the probe resolves (`?? canonicalUrl(...)` below could never
|
|
186
|
-
// run), so the same video filed under a different `externalUrl` depending on
|
|
187
|
-
// whether the link was copied from a share sheet, a shorts page or the
|
|
188
|
-
// address bar. `downloadThenIngest` falls back to `args.url` when the probe
|
|
189
|
-
// resolves nothing, which is the value this used to hard-code.
|
|
190
|
-
externalUrl: opts.externalUrl,
|
|
191
|
-
descriptionContext: opts.context?.trim() || void 0
|
|
192
|
-
};
|
|
193
|
-
return { args, direct: !opts.forceDownload && isDirectMediaUrl(url) };
|
|
194
|
-
});
|
|
195
|
-
for (const { args } of plans) {
|
|
196
|
-
const validation = videosIngestRequestSchema.safeParse(args);
|
|
197
|
-
if (!validation.success) {
|
|
198
|
-
const problem = validation.error.issues[0];
|
|
199
|
-
const where = opts.urls.length > 1 ? `${args.url}: ` : "";
|
|
200
|
-
failWith({
|
|
201
|
-
code: "VALIDATION_ERROR",
|
|
202
|
-
message: problem ? `${where}${problem.path.join(".") || "request"}: ${problem.message}` : `${where}Invalid request`
|
|
203
|
-
});
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
return plans;
|
|
207
|
-
}
|
|
208
|
-
function writeIngestOutcomes(outcomes, fields) {
|
|
209
|
-
const [only] = outcomes;
|
|
210
|
-
if (outcomes.length === 1 && only) {
|
|
211
|
-
if (!only.ok) failWith(only.error);
|
|
212
|
-
if (!fields) {
|
|
213
|
-
writeJson({ ok: true, data: only.data, hints: ingestHints(only.data) });
|
|
214
|
-
return;
|
|
215
|
-
}
|
|
216
|
-
const shown2 = narrowed(only.data, fields);
|
|
217
|
-
writeJson({ ok: true, data: shown2.data, hints: [...ingestHints(only.data) ?? [], ...shown2.hints] });
|
|
218
|
-
return;
|
|
219
|
-
}
|
|
220
|
-
const ingested = outcomes.flatMap((o) => o.ok ? [{ url: o.target, ...o.data }] : []);
|
|
221
|
-
const failed = outcomes.flatMap((o) => o.ok ? [] : [{ url: o.target, error: o.error }]);
|
|
222
|
-
const hints = ingested.flatMap((row) => (ingestHints(row) ?? []).map((hint) => `${row.url}: ${hint}`));
|
|
223
|
-
if (ingested.length === 0) {
|
|
224
|
-
writeJson({
|
|
225
|
-
ok: false,
|
|
226
|
-
error: {
|
|
227
|
-
code: "INGEST_FAILED",
|
|
228
|
-
message: `None of the ${outcomes.length} videos could be added: ${failed.map((f) => `${f.url} \u2014 ${f.error.message}`).join("; ")}`
|
|
229
|
-
},
|
|
230
|
-
hints: failed.flatMap((f) => f.error.fix ? [`${f.url}: ${f.error.fix}`] : [])
|
|
231
|
-
});
|
|
232
|
-
process.exit(1);
|
|
233
|
-
}
|
|
234
|
-
if (failed.length > 0) {
|
|
235
|
-
hints.push(
|
|
236
|
-
`${failed.length} of ${outcomes.length} could not be added \u2014 each one's reason and fix is in failed[]. The rest are in the library; carry on with them.`
|
|
237
|
-
);
|
|
238
|
-
}
|
|
239
|
-
const shown = fields ? narrowed(ingested, fields) : { data: ingested, hints: [] };
|
|
240
|
-
hints.push(...shown.hints);
|
|
241
|
-
writeJson({ ok: true, data: { ingested: shown.data, failed }, ...hints.length > 0 ? { hints } : {} });
|
|
242
|
-
}
|
|
243
|
-
function narrowed(data, fields) {
|
|
244
|
-
const masked = maskEnvelope({ ok: true, data }, fields);
|
|
245
|
-
const hints = Array.isArray(masked.hints) ? masked.hints.filter((hint) => typeof hint === "string") : [];
|
|
246
|
-
return { data: masked.data, hints };
|
|
247
|
-
}
|
|
248
|
-
function ingestHints(data) {
|
|
249
|
-
if (data.reducedQuality !== true) return void 0;
|
|
250
|
-
return [
|
|
251
|
-
"Added, but at standard quality (360p): the site refused to release the full-quality file and this was the best it would hand over. Tell the user \u2014 the clip is in the library and usable, it is just not high-resolution. If they need the crisp version, ask them for the original file and use `baker videos upload <file>`."
|
|
252
|
-
];
|
|
253
|
-
}
|
|
254
|
-
function dryRunParams(args, direct, country) {
|
|
255
|
-
return {
|
|
256
|
-
url: args.url,
|
|
257
|
-
source: args.source,
|
|
258
|
-
// Known up front on the direct route, because it is derived from the URL
|
|
259
|
-
// alone. The download route's key comes from the probe, which a dry run
|
|
260
|
-
// does not perform, so there it stays null rather than becoming a guess.
|
|
261
|
-
externalId: args.externalId ?? (direct ? directDedupeKey(args.source, args.url) : null),
|
|
262
|
-
// A page URL's canonical form is only known after the probe, which a dry
|
|
263
|
-
// run does not perform — so this is null rather than a guess.
|
|
264
|
-
externalUrl: args.externalUrl ?? null,
|
|
265
|
-
direct,
|
|
266
|
-
country: country ?? null,
|
|
267
|
-
descriptionContext: args.descriptionContext ?? null
|
|
268
|
-
};
|
|
269
|
-
}
|
|
270
|
-
async function ingestByRoute(args, direct, country) {
|
|
271
|
-
if (!direct) {
|
|
272
|
-
return { ...await downloadThenIngest(args, country), via: "download" };
|
|
273
|
-
}
|
|
274
|
-
try {
|
|
275
|
-
const externalId = args.externalId ?? directDedupeKey(args.source, args.url);
|
|
276
|
-
return { ...await ingestUrl({ ...args, externalId }), via: "direct" };
|
|
277
|
-
} catch (err) {
|
|
278
|
-
if (!(err instanceof ApiError) || !worthDownloadingInstead(err.code)) throw err;
|
|
279
|
-
return { ...await downloadThenIngest(args, country), via: "download", fallbackFrom: err.message };
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
function ytDlpFailure(err) {
|
|
283
|
-
const detail = `${err.stderrTail} ${err.message}`;
|
|
284
|
-
if (isProxyFailure(ytDlpBlockSignal(detail))) {
|
|
285
|
-
return failure(
|
|
286
|
-
"Couldn't download that video: our connection to the internet was refused.",
|
|
287
|
-
"This is Baker's egress proxy, not the link \u2014 its credentials look wrong or expired. The link is probably fine. Report it; retrying won't help until the proxy is fixed."
|
|
288
|
-
);
|
|
289
|
-
}
|
|
290
|
-
if (isDrmProtected(detail)) {
|
|
291
|
-
return failure(
|
|
292
|
-
"That video is copy-protected, so it can't be added to the library.",
|
|
293
|
-
"The publisher encrypted this one against downloading. Nothing will change that \u2014 not retrying, not a different region. Ask whoever owns the video for the original file and add it with `baker videos upload <file>`."
|
|
294
|
-
);
|
|
295
|
-
}
|
|
296
|
-
if (isVimeoAuthFailure(detail)) {
|
|
297
|
-
return failure(
|
|
298
|
-
"Vimeo wouldn't hand over that video \u2014 Baker isn't signed in to Vimeo.",
|
|
299
|
-
"Vimeo now refuses anonymous downloads entirely, so this needs a signed-in session and the one Baker holds has either expired or was never set. Nothing is wrong with the link. Report it so the Vimeo cookie can be refreshed; meanwhile download the file and use `baker videos upload <file>`."
|
|
300
|
-
);
|
|
301
|
-
}
|
|
302
|
-
if (isRegionBlocked(detail)) {
|
|
303
|
-
return failure(
|
|
304
|
-
`That video isn't available in the region we're fetching from. ${err.stderrTail || err.message}`,
|
|
305
|
-
"Re-run with `--country <two-letter code>` for a country where the video plays \u2014 e.g. `--country US`. Pick the one the video belongs to (the uploader's country is the usual answer); each attempt costs a paid connection, so choose rather than work through the list."
|
|
306
|
-
);
|
|
307
|
-
}
|
|
308
|
-
return failure(
|
|
309
|
-
`Couldn't download that video. ${err.stderrTail || err.message}`,
|
|
310
|
-
isToolingOrBlockFailure(detail) ? "The site wouldn't hand over the video \u2014 usually the downloader being out of date against a site that changed, or the request being blocked. Retrying won't help, and the link is probably fine. Report it so the tool can be updated; meanwhile download the file and use `baker videos upload <file>`." : "Check the link is public and playable. Private or age-restricted videos can't be downloaded \u2014 download the file yourself and use `baker videos upload <file>`."
|
|
311
|
-
);
|
|
312
|
-
}
|
|
313
|
-
function failure(message, fix, code = "INGEST_FAILED") {
|
|
314
|
-
return { code, message, fix };
|
|
315
|
-
}
|
|
316
|
-
function ingestFailure(err) {
|
|
317
|
-
if (err instanceof ApiError) return { code: err.code, message: err.message };
|
|
318
|
-
if (err instanceof YtDlpError) return ytDlpFailure(err);
|
|
319
|
-
const detail = err instanceof Error ? err.message : String(err);
|
|
320
|
-
if (detail.includes("timed out after")) {
|
|
321
|
-
return failure(
|
|
322
|
-
"That video took too long to download and was stopped part-way.",
|
|
323
|
-
"Long or slow-serving videos can outrun the download window. Try a shorter clip, or download this one yourself and use `baker videos upload <file>`.",
|
|
324
|
-
"INTERNAL_ERROR"
|
|
325
|
-
);
|
|
326
|
-
}
|
|
327
|
-
return failure(
|
|
328
|
-
`Couldn't add that video. ${detail}`,
|
|
329
|
-
"This is a fault on Baker's side, not a problem with the link. Report it.",
|
|
330
|
-
"INTERNAL_ERROR"
|
|
331
|
-
);
|
|
332
|
-
}
|
|
333
|
-
function dedupeKey(args, info) {
|
|
334
|
-
const id = typeof info.id === "string" ? info.id : void 0;
|
|
335
|
-
if (!id) return void 0;
|
|
336
|
-
if (info.extractor === "generic") return `${args.source}:${canonicalUrl(info) ?? args.url}`;
|
|
337
|
-
return `${args.source}:${id}`;
|
|
338
|
-
}
|
|
339
|
-
function ingestUrl(args) {
|
|
340
|
-
const body = {
|
|
341
|
-
url: args.url,
|
|
342
|
-
source: args.source
|
|
343
|
-
};
|
|
344
|
-
if (args.externalId) body.externalId = args.externalId;
|
|
345
|
-
if (args.externalUrl) body.externalUrl = args.externalUrl;
|
|
346
|
-
if (args.descriptionContext) body.descriptionContext = args.descriptionContext;
|
|
347
|
-
return apiPost("/api/videos/ingest", body);
|
|
348
|
-
}
|
|
349
|
-
async function downloadThenIngest(args, country) {
|
|
350
|
-
const vimeoCookie = captureVimeoCookie();
|
|
351
|
-
const workDir = await mkdtemp(path.join(tmpdir(), "videos-ingest-"));
|
|
352
|
-
try {
|
|
353
|
-
const probe = await probeYtDlp({ url: args.url, country, vimeoCookie, cookieDir: workDir });
|
|
354
|
-
if (isAudioOnly(probe.info)) {
|
|
355
|
-
throw new ApiError(
|
|
356
|
-
"VALIDATION_ERROR",
|
|
357
|
-
"That link is audio, not video, so it can't go in the video library. Music and podcast links have no picture to store."
|
|
358
|
-
);
|
|
359
|
-
}
|
|
360
|
-
const tooLong = refuseByDuration(durationSeconds(probe.info), MAX_VIDEO_INGEST_SECONDS);
|
|
361
|
-
if (tooLong) {
|
|
362
|
-
throw new ApiError("VALIDATION_ERROR", tooLong);
|
|
363
|
-
}
|
|
364
|
-
const externalId = args.externalId ?? dedupeKey(args, probe.info);
|
|
365
|
-
const { filePath, info, tier, reducedQuality } = await runYtDlp({
|
|
366
|
-
url: args.url,
|
|
367
|
-
audioOnly: false,
|
|
368
|
-
workDir,
|
|
369
|
-
// Deliberately uncapped: take the best the site will release and let Mux
|
|
370
|
-
// decide what to serve. The 1080p ceiling this replaces was reasoning
|
|
371
|
-
// about the wrong cost — it saved download bytes by throwing away source
|
|
372
|
-
// pixels *before* the one system that can make renditions from them ever
|
|
373
|
-
// saw them, so a 4K master became a 1080p master permanently, for
|
|
374
|
-
// everything the library is ever asked to do with that clip afterwards.
|
|
375
|
-
// Downscaling is Mux's job and it is cheap; re-acquiring a master is not.
|
|
376
|
-
country,
|
|
377
|
-
vimeoCookie,
|
|
378
|
-
// Budgeted from the probed length, so the duration we accept and the time
|
|
379
|
-
// we allow to fetch it cannot drift apart.
|
|
380
|
-
timeoutMs: downloadTimeoutMs(durationSeconds(probe.info))
|
|
381
|
-
});
|
|
382
|
-
const stats = await stat(filePath);
|
|
383
|
-
if (stats.size > MAX_VIDEO_INGEST_BYTES) {
|
|
384
|
-
throw new ApiError(
|
|
385
|
-
"VALIDATION_ERROR",
|
|
386
|
-
`That video is ${(stats.size / 1024 ** 3).toFixed(1)} GB, over the ${Math.round(MAX_VIDEO_INGEST_BYTES / 1024 ** 3)} GB limit for this route.`
|
|
387
|
-
);
|
|
388
|
-
}
|
|
389
|
-
const publicUrl = await uploadToAssetStore(filePath, stats.size);
|
|
390
|
-
return {
|
|
391
|
-
...await ingestUrl({
|
|
392
|
-
...args,
|
|
393
|
-
url: publicUrl,
|
|
394
|
-
externalId,
|
|
395
|
-
externalUrl: args.externalUrl ?? canonicalUrl(probe.info) ?? args.url
|
|
396
|
-
}),
|
|
397
|
-
egress: tier,
|
|
398
|
-
// Named in the result for the same reason `egress` is: a geo-targeted exit
|
|
399
|
-
// is a deliberate, billable choice and must not be invisible afterwards.
|
|
400
|
-
...country ? { country } : {},
|
|
401
|
-
// Third member of the same family. The site refused the good formats and
|
|
402
|
-
// the download quietly took the one it would release, which is the right
|
|
403
|
-
// call — but a clip that is 360p because of that must say so here, or the
|
|
404
|
-
// only way to find out is to watch it.
|
|
405
|
-
...reducedQuality ? { reducedQuality: true } : {},
|
|
406
|
-
// What the site released, so a clip that came in small is visible in the
|
|
407
|
-
// answer rather than after the marketer has already looked at it.
|
|
408
|
-
...downloadedResolution(info)
|
|
409
|
-
};
|
|
410
|
-
} finally {
|
|
411
|
-
await rm(workDir, { recursive: true, force: true }).catch(() => {
|
|
412
|
-
});
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
function downloadedResolution(info) {
|
|
416
|
-
const { width, height } = info;
|
|
417
|
-
return typeof width === "number" && typeof height === "number" ? { width, height } : {};
|
|
418
|
-
}
|
|
419
|
-
async function uploadToAssetStore(filePath, sizeBytes) {
|
|
420
|
-
const sha256 = await hashFile(filePath);
|
|
421
|
-
const { putUrl, publicUrl } = await apiPost("/api/canvas/assets/presign", {
|
|
422
|
-
sha256,
|
|
423
|
-
mime: "video/mp4",
|
|
424
|
-
purpose: "source"
|
|
425
|
-
});
|
|
426
|
-
const putRes = await putFileStreamed({ putUrl, filePath, contentType: "video/mp4", sizeBytes });
|
|
427
|
-
if (!putRes.ok) {
|
|
428
|
-
throw new ApiError("INTERNAL_ERROR", `Storing the downloaded video failed: HTTP ${putRes.status}`);
|
|
429
|
-
}
|
|
430
|
-
return publicUrl;
|
|
431
|
-
}
|
|
432
|
-
|
|
433
|
-
export {
|
|
434
|
-
ingestCommand,
|
|
435
|
-
runVideoIngest,
|
|
436
|
-
ingestHints
|
|
437
|
-
};
|
|
438
|
-
//# sourceMappingURL=chunk-N4AIJQ4W.js.map
|
package/dist/chunk-NBWZVBDG.js
DELETED
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
holdUnbilledSpend
|
|
3
|
-
} from "./chunk-VWOKPC3T.js";
|
|
4
|
-
import {
|
|
5
|
-
askAboutText
|
|
6
|
-
} from "./chunk-4D73PLXU.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-NBWZVBDG.js.map
|