@koda-sl/baker-cli 0.384.0-dev.4699b7308 → 0.384.0-dev.557795bef
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 +1098 -217
- package/canvas/tiktok-captions-composition/index.html +5 -6
- package/canvas/tiktok-captions-composition/meta.json +5 -0
- package/dist/account-4UEZAY5T.js +49 -0
- package/dist/account-4UEZAY5T.js.map +1 -0
- package/dist/account-OINZG6UP.js +80 -0
- package/dist/account-OINZG6UP.js.map +1 -0
- package/dist/account-QMDCUUSG.js +79 -0
- package/dist/account-QMDCUUSG.js.map +1 -0
- package/dist/account-reads-ZKKDYHK5.js +218 -0
- package/dist/account-reads-ZKKDYHK5.js.map +1 -0
- package/dist/account-writes-N4JDIDRB.js +66 -0
- package/dist/account-writes-N4JDIDRB.js.map +1 -0
- package/dist/accounts-AEBQFCNH.js +114 -0
- package/dist/accounts-AEBQFCNH.js.map +1 -0
- package/dist/accounts-EBGJ2YO7.js +611 -0
- package/dist/accounts-EBGJ2YO7.js.map +1 -0
- package/dist/accounts-HP4BLKK5.js +75 -0
- package/dist/accounts-HP4BLKK5.js.map +1 -0
- package/dist/accounts-YE2SQ3UQ.js +77 -0
- package/dist/accounts-YE2SQ3UQ.js.map +1 -0
- package/dist/accounts-Z4CLGQXJ.js +115 -0
- package/dist/accounts-Z4CLGQXJ.js.map +1 -0
- package/dist/actions-ADRIEQZX.js +55 -0
- package/dist/actions-ADRIEQZX.js.map +1 -0
- package/dist/active-entities-YB46ADQN.js +103 -0
- package/dist/active-entities-YB46ADQN.js.map +1 -0
- package/dist/activities-DUAIQJLN.js +74 -0
- package/dist/activities-DUAIQJLN.js.map +1 -0
- package/dist/ad-group-writes-HL3EZ3BT.js +170 -0
- package/dist/ad-group-writes-HL3EZ3BT.js.map +1 -0
- package/dist/ad-groups-FGS5JJGN.js +68 -0
- package/dist/ad-groups-FGS5JJGN.js.map +1 -0
- package/dist/ad-writes-LX4ACUHB.js +174 -0
- package/dist/ad-writes-LX4ACUHB.js.map +1 -0
- package/dist/add-5CUXNOUM.js +97 -0
- package/dist/add-5CUXNOUM.js.map +1 -0
- package/dist/add-6OXOQNET.js +302 -0
- package/dist/add-6OXOQNET.js.map +1 -0
- package/dist/add-E66HBIZV.js +105 -0
- package/dist/add-E66HBIZV.js.map +1 -0
- package/dist/add-ROK3ETQC.js +104 -0
- package/dist/add-ROK3ETQC.js.map +1 -0
- package/dist/add-accounts-YME5SCXD.js +91 -0
- package/dist/add-accounts-YME5SCXD.js.map +1 -0
- package/dist/ads-65R3WMDU.js +128 -0
- package/dist/ads-65R3WMDU.js.map +1 -0
- package/dist/ads-O63J7BDF.js +113 -0
- package/dist/ads-O63J7BDF.js.map +1 -0
- package/dist/ads-TFZ5PXKS.js +77 -0
- package/dist/ads-TFZ5PXKS.js.map +1 -0
- package/dist/ads-XSVRH45E.js +40 -0
- package/dist/ads-XSVRH45E.js.map +1 -0
- package/dist/adsets-Y62JOOTV.js +176 -0
- package/dist/adsets-Y62JOOTV.js.map +1 -0
- package/dist/advertisers-AIC4QPEK.js +120 -0
- package/dist/advertisers-AIC4QPEK.js.map +1 -0
- package/dist/advertisers-LJ2HKJ4W.js +125 -0
- package/dist/advertisers-LJ2HKJ4W.js.map +1 -0
- package/dist/analytics-N4PGXXEQ.js +1976 -0
- package/dist/analytics-N4PGXXEQ.js.map +1 -0
- package/dist/analytics-X3DR3UVG.js +433 -0
- package/dist/analytics-X3DR3UVG.js.map +1 -0
- package/dist/animate-E3SKQ6SI.js +480 -0
- package/dist/animate-E3SKQ6SI.js.map +1 -0
- package/dist/assign-Y7HGSQVJ.js +77 -0
- package/dist/assign-Y7HGSQVJ.js.map +1 -0
- package/dist/audience-size-SWX5YJQF.js +94 -0
- package/dist/audience-size-SWX5YJQF.js.map +1 -0
- package/dist/audiences-5A6BCWSA.js +268 -0
- package/dist/audiences-5A6BCWSA.js.map +1 -0
- package/dist/audiences-6QOCASVV.js +78 -0
- package/dist/audiences-6QOCASVV.js.map +1 -0
- package/dist/audiences-O67NGIP5.js +85 -0
- package/dist/audiences-O67NGIP5.js.map +1 -0
- package/dist/audit-2KVLWSAI.js +151 -0
- package/dist/audit-2KVLWSAI.js.map +1 -0
- package/dist/audit-HWK24VXI.js +88 -0
- package/dist/audit-HWK24VXI.js.map +1 -0
- package/dist/autocomplete-JJSGC5WU.js +111 -0
- package/dist/autocomplete-JJSGC5WU.js.map +1 -0
- package/dist/avatars-XIEKQ77J.js +38 -0
- package/dist/avatars-XIEKQ77J.js.map +1 -0
- package/dist/bid-pricing-D2HGRWZL.js +99 -0
- package/dist/bid-pricing-D2HGRWZL.js.map +1 -0
- package/dist/brand-AYYWRGIE.js +22 -0
- package/dist/brand-AYYWRGIE.js.map +1 -0
- package/dist/brief-3HUIDK5F.js +490 -0
- package/dist/brief-3HUIDK5F.js.map +1 -0
- package/dist/businesses-65EWTK5E.js +53 -0
- package/dist/businesses-65EWTK5E.js.map +1 -0
- package/dist/campaign-groups-6HCYR2JX.js +95 -0
- package/dist/campaign-groups-6HCYR2JX.js.map +1 -0
- package/dist/campaign-writes-M6JLF5AC.js +170 -0
- package/dist/campaign-writes-M6JLF5AC.js.map +1 -0
- package/dist/campaign-writes-Y6QPRQ4E.js +165 -0
- package/dist/campaign-writes-Y6QPRQ4E.js.map +1 -0
- package/dist/campaigns-6SM2ZSIH.js +76 -0
- package/dist/campaigns-6SM2ZSIH.js.map +1 -0
- package/dist/campaigns-7RKJZRY2.js +107 -0
- package/dist/campaigns-7RKJZRY2.js.map +1 -0
- package/dist/campaigns-KRI25JDZ.js +109 -0
- package/dist/campaigns-KRI25JDZ.js.map +1 -0
- package/dist/campaigns-TD7ZB5DG.js +110 -0
- package/dist/campaigns-TD7ZB5DG.js.map +1 -0
- package/dist/canvas-DMYY2DWI.js +46 -0
- package/dist/canvas-DMYY2DWI.js.map +1 -0
- package/dist/capabilities-3WJTXS2O.js +144 -0
- package/dist/capabilities-3WJTXS2O.js.map +1 -0
- package/dist/cards-7HRC4UQQ.js +85 -0
- package/dist/cards-7HRC4UQQ.js.map +1 -0
- package/dist/catalog-N6MDMIVL.js +64 -0
- package/dist/catalog-N6MDMIVL.js.map +1 -0
- package/dist/catalogs-PB46L7FH.js +128 -0
- package/dist/catalogs-PB46L7FH.js.map +1 -0
- package/dist/changes-SASUQK62.js +135 -0
- package/dist/changes-SASUQK62.js.map +1 -0
- package/dist/chatgpt-JKBSAG25.js +47 -0
- package/dist/chatgpt-JKBSAG25.js.map +1 -0
- package/dist/chats-WRVSQQB2.js +262 -0
- package/dist/chats-WRVSQQB2.js.map +1 -0
- package/dist/chunk-2FGKJY63.js +455 -0
- package/dist/chunk-2FGKJY63.js.map +1 -0
- package/dist/chunk-2GVXNKAE.js +42 -0
- package/dist/chunk-2GVXNKAE.js.map +1 -0
- package/dist/chunk-2J3PTIQB.js +479 -0
- package/dist/chunk-2J3PTIQB.js.map +1 -0
- package/dist/chunk-2J7XC2NO.js +346 -0
- package/dist/chunk-2J7XC2NO.js.map +1 -0
- package/dist/{chunk-VLUGGVJL.js → chunk-2UFRHW3T.js} +12 -4
- package/dist/chunk-2UFRHW3T.js.map +1 -0
- package/dist/chunk-2Y5V23PU.js +29 -0
- package/dist/chunk-2Y5V23PU.js.map +1 -0
- package/dist/chunk-3ACMDRSE.js +39 -0
- package/dist/chunk-3ACMDRSE.js.map +1 -0
- package/dist/chunk-3EWF7VII.js +1079 -0
- package/dist/chunk-3EWF7VII.js.map +1 -0
- package/dist/chunk-3LYMIKKN.js +625 -0
- package/dist/chunk-3LYMIKKN.js.map +1 -0
- package/dist/chunk-3M6RNCDD.js +26 -0
- package/dist/chunk-3M6RNCDD.js.map +1 -0
- package/dist/chunk-3MDO4RR2.js +310 -0
- package/dist/chunk-3MDO4RR2.js.map +1 -0
- package/dist/chunk-3NPOIHSX.js +6667 -0
- package/dist/chunk-3NPOIHSX.js.map +1 -0
- package/dist/chunk-3SK7TWGP.js +103 -0
- package/dist/chunk-3SK7TWGP.js.map +1 -0
- package/dist/chunk-3VXQYDJN.js +1743 -0
- package/dist/chunk-3VXQYDJN.js.map +1 -0
- package/dist/chunk-44VXKO65.js +106 -0
- package/dist/chunk-44VXKO65.js.map +1 -0
- package/dist/chunk-4NZ47VXO.js +137 -0
- package/dist/chunk-4NZ47VXO.js.map +1 -0
- package/dist/chunk-4X3UR372.js +225 -0
- package/dist/chunk-4X3UR372.js.map +1 -0
- package/dist/chunk-553XSIFW.js +304 -0
- package/dist/chunk-553XSIFW.js.map +1 -0
- package/dist/chunk-5FEBUCJU.js +25 -0
- package/dist/chunk-5FEBUCJU.js.map +1 -0
- package/dist/chunk-5HYSKH77.js +315 -0
- package/dist/chunk-5HYSKH77.js.map +1 -0
- package/dist/chunk-5MBPIONY.js +29 -0
- package/dist/chunk-5MBPIONY.js.map +1 -0
- package/dist/chunk-5UCP4EEQ.js +111 -0
- package/dist/chunk-5UCP4EEQ.js.map +1 -0
- package/dist/chunk-5VPJNNJL.js +494 -0
- package/dist/chunk-5VPJNNJL.js.map +1 -0
- package/dist/{chunk-VZEDAFAR.js → chunk-6YYSUISH.js} +47 -8
- package/dist/chunk-6YYSUISH.js.map +1 -0
- package/dist/chunk-7OHWEF3I.js +98 -0
- package/dist/chunk-7OHWEF3I.js.map +1 -0
- package/dist/chunk-A636XRD7.js +159 -0
- package/dist/chunk-A636XRD7.js.map +1 -0
- package/dist/chunk-A76FRBSF.js +297 -0
- package/dist/chunk-A76FRBSF.js.map +1 -0
- package/dist/chunk-AADVCEL4.js +817 -0
- package/dist/chunk-AADVCEL4.js.map +1 -0
- package/dist/chunk-AG62YO7C.js +96 -0
- package/dist/chunk-AG62YO7C.js.map +1 -0
- package/dist/chunk-AIRIT4GF.js +75 -0
- package/dist/chunk-AIRIT4GF.js.map +1 -0
- package/dist/chunk-AMCY5YCB.js +206 -0
- package/dist/chunk-AMCY5YCB.js.map +1 -0
- package/dist/chunk-AP3TP6VG.js +139 -0
- package/dist/chunk-AP3TP6VG.js.map +1 -0
- package/dist/chunk-APP475IQ.js +474 -0
- package/dist/chunk-APP475IQ.js.map +1 -0
- package/dist/chunk-AR7PU7BB.js +76 -0
- package/dist/chunk-AR7PU7BB.js.map +1 -0
- package/dist/chunk-B4S72KSS.js +172 -0
- package/dist/chunk-B4S72KSS.js.map +1 -0
- package/dist/chunk-BIPIL4QA.js +486 -0
- package/dist/chunk-BIPIL4QA.js.map +1 -0
- package/dist/chunk-BPUSL5Y2.js +58 -0
- package/dist/chunk-BPUSL5Y2.js.map +1 -0
- package/dist/chunk-BR32GHYD.js +65 -0
- package/dist/chunk-BR32GHYD.js.map +1 -0
- package/dist/chunk-CAMX6OHF.js +3182 -0
- package/dist/chunk-CAMX6OHF.js.map +1 -0
- package/dist/{chunk-MF7YA62W.js → chunk-CUL3VB4L.js} +10 -5
- package/dist/chunk-CUL3VB4L.js.map +1 -0
- package/dist/chunk-CVEY353K.js +66 -0
- package/dist/chunk-CVEY353K.js.map +1 -0
- package/dist/chunk-CWXADUKL.js +1599 -0
- package/dist/chunk-CWXADUKL.js.map +1 -0
- package/dist/chunk-D5FY4FAK.js +24 -0
- package/dist/chunk-D5FY4FAK.js.map +1 -0
- package/dist/chunk-DGCUPJZD.js +39 -0
- package/dist/chunk-DGCUPJZD.js.map +1 -0
- package/dist/chunk-DNCLWSHO.js +41 -0
- package/dist/chunk-DNCLWSHO.js.map +1 -0
- package/dist/chunk-DUPURL26.js +97 -0
- package/dist/chunk-DUPURL26.js.map +1 -0
- package/dist/chunk-E2ZOSNF5.js +96 -0
- package/dist/chunk-E2ZOSNF5.js.map +1 -0
- package/dist/chunk-E3HYHT7C.js +274 -0
- package/dist/chunk-E3HYHT7C.js.map +1 -0
- package/dist/chunk-EDLZGTGN.js +216 -0
- package/dist/chunk-EDLZGTGN.js.map +1 -0
- package/dist/chunk-EI5QN4UO.js +363 -0
- package/dist/chunk-EI5QN4UO.js.map +1 -0
- package/dist/{chunk-XHC4LMK4.js → chunk-EIGXX6KI.js} +16 -8
- package/dist/chunk-EIGXX6KI.js.map +1 -0
- package/dist/chunk-EPDE7ZRU.js +174 -0
- package/dist/chunk-EPDE7ZRU.js.map +1 -0
- package/dist/chunk-ERSX3MKH.js +34 -0
- package/dist/chunk-ERSX3MKH.js.map +1 -0
- package/dist/chunk-EVDRF4CI.js +509 -0
- package/dist/chunk-EVDRF4CI.js.map +1 -0
- package/dist/chunk-F4IEILTR.js +382 -0
- package/dist/chunk-F4IEILTR.js.map +1 -0
- package/dist/chunk-F7HRLPR5.js +67 -0
- package/dist/chunk-F7HRLPR5.js.map +1 -0
- package/dist/chunk-FEG6MN4H.js +84 -0
- package/dist/chunk-FEG6MN4H.js.map +1 -0
- package/dist/chunk-FKOECEVC.js +126 -0
- package/dist/chunk-FKOECEVC.js.map +1 -0
- package/dist/chunk-FMGW2NZI.js +106 -0
- package/dist/chunk-FMGW2NZI.js.map +1 -0
- package/dist/chunk-FPZKKNDK.js +98 -0
- package/dist/chunk-FPZKKNDK.js.map +1 -0
- package/dist/chunk-FUVCY63N.js +169 -0
- package/dist/chunk-FUVCY63N.js.map +1 -0
- package/dist/chunk-GBNJQNDS.js +19 -0
- package/dist/chunk-GBNJQNDS.js.map +1 -0
- package/dist/chunk-GIWHHCD6.js +145 -0
- package/dist/chunk-GIWHHCD6.js.map +1 -0
- package/dist/chunk-GOJXKIFQ.js +1605 -0
- package/dist/chunk-GOJXKIFQ.js.map +1 -0
- package/dist/chunk-GRQ2AXDX.js +9 -0
- package/dist/chunk-GRQ2AXDX.js.map +1 -0
- package/dist/chunk-GXDLWBOY.js +73 -0
- package/dist/chunk-GXDLWBOY.js.map +1 -0
- package/dist/chunk-HAE4WWFQ.js +455 -0
- package/dist/chunk-HAE4WWFQ.js.map +1 -0
- package/dist/chunk-I2DNBEV6.js +4227 -0
- package/dist/chunk-I2DNBEV6.js.map +1 -0
- package/dist/chunk-I4FTS5EE.js +455 -0
- package/dist/chunk-I4FTS5EE.js.map +1 -0
- package/dist/chunk-IELPT4K2.js +74 -0
- package/dist/chunk-IELPT4K2.js.map +1 -0
- package/dist/chunk-IJMWEO4P.js +57 -0
- package/dist/chunk-IJMWEO4P.js.map +1 -0
- package/dist/chunk-IREMSVKW.js +175 -0
- package/dist/chunk-IREMSVKW.js.map +1 -0
- package/dist/chunk-IVIJJXXT.js +62 -0
- package/dist/chunk-IVIJJXXT.js.map +1 -0
- package/dist/chunk-JD3W3ON7.js +188 -0
- package/dist/chunk-JD3W3ON7.js.map +1 -0
- package/dist/chunk-JLWBK3VC.js +5187 -0
- package/dist/chunk-JLWBK3VC.js.map +1 -0
- package/dist/chunk-JPK34QPS.js +134 -0
- package/dist/chunk-JPK34QPS.js.map +1 -0
- package/dist/chunk-JUY47NZ2.js +183 -0
- package/dist/chunk-JUY47NZ2.js.map +1 -0
- package/dist/chunk-JXMZEOHV.js +333 -0
- package/dist/chunk-JXMZEOHV.js.map +1 -0
- package/dist/chunk-K37K447U.js +51 -0
- package/dist/chunk-K37K447U.js.map +1 -0
- package/dist/chunk-K6TDB2KV.js +1442 -0
- package/dist/chunk-K6TDB2KV.js.map +1 -0
- package/dist/chunk-KIGGMKAE.js +66 -0
- package/dist/chunk-KIGGMKAE.js.map +1 -0
- package/dist/chunk-KKJ4KJCW.js +29 -0
- package/dist/chunk-KKJ4KJCW.js.map +1 -0
- package/dist/chunk-KONA5PSR.js +55 -0
- package/dist/chunk-KONA5PSR.js.map +1 -0
- package/dist/chunk-KVHRW7KO.js +60 -0
- package/dist/chunk-KVHRW7KO.js.map +1 -0
- package/dist/chunk-LA6PPSNA.js +65 -0
- package/dist/chunk-LA6PPSNA.js.map +1 -0
- package/dist/chunk-LKPJADL2.js +74 -0
- package/dist/chunk-LKPJADL2.js.map +1 -0
- package/dist/chunk-LWAEHLKV.js +74 -0
- package/dist/chunk-LWAEHLKV.js.map +1 -0
- package/dist/chunk-M6UNISGO.js +66 -0
- package/dist/chunk-M6UNISGO.js.map +1 -0
- package/dist/chunk-MIJAGBEP.js +23992 -0
- package/dist/chunk-MIJAGBEP.js.map +1 -0
- package/dist/chunk-MP4EXZ45.js +3151 -0
- package/dist/chunk-MP4EXZ45.js.map +1 -0
- package/dist/chunk-MYTDK3AL.js +2102 -0
- package/dist/chunk-MYTDK3AL.js.map +1 -0
- package/dist/chunk-MZQ5DX6S.js +125 -0
- package/dist/chunk-MZQ5DX6S.js.map +1 -0
- package/dist/chunk-NFSLRRIE.js +77 -0
- package/dist/chunk-NFSLRRIE.js.map +1 -0
- package/dist/chunk-NOK7MSVJ.js +533 -0
- package/dist/chunk-NOK7MSVJ.js.map +1 -0
- package/dist/chunk-NR5RZDAW.js +592 -0
- package/dist/chunk-NR5RZDAW.js.map +1 -0
- package/dist/chunk-O2EVJALZ.js +133 -0
- package/dist/chunk-O2EVJALZ.js.map +1 -0
- package/dist/chunk-O6UM5WWH.js +275 -0
- package/dist/chunk-O6UM5WWH.js.map +1 -0
- package/dist/chunk-O6XZIQXZ.js +6212 -0
- package/dist/chunk-O6XZIQXZ.js.map +1 -0
- package/dist/chunk-OIL6PU5W.js +35 -0
- package/dist/chunk-OIL6PU5W.js.map +1 -0
- package/dist/chunk-P4NSJS54.js +20 -0
- package/dist/chunk-P4NSJS54.js.map +1 -0
- package/dist/chunk-P5T7OZKV.js +26 -0
- package/dist/chunk-P5T7OZKV.js.map +1 -0
- package/dist/chunk-PFBQERWX.js +10 -0
- package/dist/chunk-PFBQERWX.js.map +1 -0
- package/dist/chunk-PSWVSLJU.js +56 -0
- package/dist/chunk-PSWVSLJU.js.map +1 -0
- package/dist/chunk-PY2NJ6XZ.js +191 -0
- package/dist/chunk-PY2NJ6XZ.js.map +1 -0
- package/dist/chunk-PZ4OM2LK.js +45 -0
- package/dist/chunk-PZ4OM2LK.js.map +1 -0
- package/dist/chunk-PZNOJ76W.js +541 -0
- package/dist/chunk-PZNOJ76W.js.map +1 -0
- package/dist/chunk-Q6ULQMWG.js +41 -0
- package/dist/chunk-Q6ULQMWG.js.map +1 -0
- package/dist/chunk-QKFD6PPX.js +57 -0
- package/dist/chunk-QKFD6PPX.js.map +1 -0
- package/dist/chunk-QMLGJ5OW.js +2891 -0
- package/dist/chunk-QMLGJ5OW.js.map +1 -0
- package/dist/chunk-R4TPDVBD.js +207 -0
- package/dist/chunk-R4TPDVBD.js.map +1 -0
- package/dist/chunk-R7QV5N2S.js +846 -0
- package/dist/chunk-R7QV5N2S.js.map +1 -0
- package/dist/chunk-RR3KT2E7.js +665 -0
- package/dist/chunk-RR3KT2E7.js.map +1 -0
- package/dist/chunk-SEPPFM5S.js +228 -0
- package/dist/chunk-SEPPFM5S.js.map +1 -0
- package/dist/chunk-SQ7DRYCC.js +150 -0
- package/dist/chunk-SQ7DRYCC.js.map +1 -0
- package/dist/chunk-SYULM665.js +610 -0
- package/dist/chunk-SYULM665.js.map +1 -0
- package/dist/chunk-TKT3OHZ6.js +170 -0
- package/dist/chunk-TKT3OHZ6.js.map +1 -0
- package/dist/chunk-TNOSX3PJ.js +136 -0
- package/dist/chunk-TNOSX3PJ.js.map +1 -0
- package/dist/chunk-TTVKI54A.js +160 -0
- package/dist/chunk-TTVKI54A.js.map +1 -0
- package/dist/chunk-U7ZVXFS3.js +23 -0
- package/dist/chunk-U7ZVXFS3.js.map +1 -0
- package/dist/chunk-UI6BKYQD.js +225 -0
- package/dist/chunk-UI6BKYQD.js.map +1 -0
- package/dist/chunk-UKLDW4UW.js +46 -0
- package/dist/chunk-UKLDW4UW.js.map +1 -0
- package/dist/chunk-V6XXXEXZ.js +76 -0
- package/dist/chunk-V6XXXEXZ.js.map +1 -0
- package/dist/chunk-V7BW2CIQ.js +92 -0
- package/dist/chunk-V7BW2CIQ.js.map +1 -0
- package/dist/chunk-VSU5R34H.js +76 -0
- package/dist/chunk-VSU5R34H.js.map +1 -0
- package/dist/chunk-W4SA4CMR.js +296 -0
- package/dist/chunk-W4SA4CMR.js.map +1 -0
- package/dist/chunk-WFUMNDCE.js +111 -0
- package/dist/chunk-WFUMNDCE.js.map +1 -0
- package/dist/chunk-WHWNXLTD.js +166 -0
- package/dist/chunk-WHWNXLTD.js.map +1 -0
- package/dist/chunk-WN4KX7GE.js +25 -0
- package/dist/chunk-WN4KX7GE.js.map +1 -0
- package/dist/chunk-XIY7P54H.js +84 -0
- package/dist/chunk-XIY7P54H.js.map +1 -0
- package/dist/chunk-YFPLNMPZ.js +337 -0
- package/dist/chunk-YFPLNMPZ.js.map +1 -0
- package/dist/chunk-YMBB4JBD.js +1830 -0
- package/dist/chunk-YMBB4JBD.js.map +1 -0
- package/dist/chunk-YQFM2P5W.js +197 -0
- package/dist/chunk-YQFM2P5W.js.map +1 -0
- package/dist/chunk-YQSBHWOI.js +41 -0
- package/dist/chunk-YTF3IVMF.js +149 -0
- package/dist/chunk-YTF3IVMF.js.map +1 -0
- package/dist/chunk-Z3ENMCFE.js +94 -0
- package/dist/chunk-Z3ENMCFE.js.map +1 -0
- package/dist/chunk-Z7MWSXLG.js +94 -0
- package/dist/chunk-Z7MWSXLG.js.map +1 -0
- package/dist/chunk-ZIXHS6AM.js +42 -0
- package/dist/chunk-ZIXHS6AM.js.map +1 -0
- package/dist/chunk-ZJ7TQUCU.js +4410 -0
- package/dist/chunk-ZJ7TQUCU.js.map +1 -0
- package/dist/chunk-ZNQRDLSS.js +52 -0
- package/dist/chunk-ZNQRDLSS.js.map +1 -0
- package/dist/claim-ROWH6JVB.js +197 -0
- package/dist/claim-ROWH6JVB.js.map +1 -0
- package/dist/cli.js +104 -69986
- package/dist/cli.js.map +1 -1
- package/dist/client-EURRWXPW.js +19 -0
- package/dist/code-FKQW7V7N.js +76 -0
- package/dist/code-FKQW7V7N.js.map +1 -0
- package/dist/companies-MD2MZKU6.js +195 -0
- package/dist/companies-MD2MZKU6.js.map +1 -0
- package/dist/complete-FCAJM6Z4.js +81 -0
- package/dist/complete-FCAJM6Z4.js.map +1 -0
- package/dist/config-OZOHIAOJ.js +88 -0
- package/dist/config-OZOHIAOJ.js.map +1 -0
- package/dist/connect-4YXFMXYX.js +42 -0
- package/dist/content-PCGSX2QU.js +85 -0
- package/dist/content-PCGSX2QU.js.map +1 -0
- package/dist/conversation-UX5NZ3IO.js +93 -0
- package/dist/conversation-UX5NZ3IO.js.map +1 -0
- package/dist/conversion-report-7QSWB2FY.js +125 -0
- package/dist/conversion-report-7QSWB2FY.js.map +1 -0
- package/dist/conversion-upload-command-XESIAQPU.js +438 -0
- package/dist/conversion-upload-command-XESIAQPU.js.map +1 -0
- package/dist/conversion-writes-BGOVLBS5.js +120 -0
- package/dist/conversion-writes-BGOVLBS5.js.map +1 -0
- package/dist/conversions-IYIWW4O7.js +76 -0
- package/dist/conversions-IYIWW4O7.js.map +1 -0
- package/dist/conversions-RLIJAE7E.js +135 -0
- package/dist/conversions-RLIJAE7E.js.map +1 -0
- package/dist/countries-5OBUVLLD.js +82 -0
- package/dist/countries-5OBUVLLD.js.map +1 -0
- package/dist/create-CUJLJUAQ.js +138 -0
- package/dist/create-CUJLJUAQ.js.map +1 -0
- package/dist/create-FENOT6DX.js +236 -0
- package/dist/create-FENOT6DX.js.map +1 -0
- package/dist/create-OFZQMOWO.js +59 -0
- package/dist/create-OFZQMOWO.js.map +1 -0
- package/dist/create-Z5SS2AWB.js +207 -0
- package/dist/create-Z5SS2AWB.js.map +1 -0
- package/dist/creatives-UJW2QBLH.js +182 -0
- package/dist/creatives-UJW2QBLH.js.map +1 -0
- package/dist/creatives-XI2DGQUZ.js +87 -0
- package/dist/creatives-XI2DGQUZ.js.map +1 -0
- package/dist/creatives-YLXQSROD.js +51 -0
- package/dist/creatives-YLXQSROD.js.map +1 -0
- package/dist/credentials-CH73QMD2.js +287 -0
- package/dist/credentials-CH73QMD2.js.map +1 -0
- package/dist/critique-C4WRQ4AJ.js +1449 -0
- package/dist/critique-C4WRQ4AJ.js.map +1 -0
- package/dist/critique-ZBNJ6MQ3.js +213 -0
- package/dist/critique-ZBNJ6MQ3.js.map +1 -0
- package/dist/crm-MJTT6GOJ.js +224 -0
- package/dist/crm-MJTT6GOJ.js.map +1 -0
- package/dist/crm-ZXHSEFYI.js +318 -0
- package/dist/crm-ZXHSEFYI.js.map +1 -0
- package/dist/crop-B52KIQ4O.js +113 -0
- package/dist/crop-B52KIQ4O.js.map +1 -0
- package/dist/currency-GGWF5DMU.js +88 -0
- package/dist/currency-GGWF5DMU.js.map +1 -0
- package/dist/custom-conversions-7WDBTC4X.js +125 -0
- package/dist/custom-conversions-7WDBTC4X.js.map +1 -0
- package/dist/customers-7E4HBSEY.js +56 -0
- package/dist/decide-PK7WNSQ2.js +199 -0
- package/dist/decide-PK7WNSQ2.js.map +1 -0
- package/dist/delete-56LKNEGA.js +71 -0
- package/dist/delete-56LKNEGA.js.map +1 -0
- package/dist/delete-DQY4ZSFN.js +54 -0
- package/dist/delete-DQY4ZSFN.js.map +1 -0
- package/dist/delete-EZ7HHOOD.js +69 -0
- package/dist/delete-EZ7HHOOD.js.map +1 -0
- package/dist/delete-JV4KAA6Y.js +66 -0
- package/dist/delete-JV4KAA6Y.js.map +1 -0
- package/dist/delete-YONJW4UZ.js +63 -0
- package/dist/delete-YONJW4UZ.js.map +1 -0
- package/dist/delete-YSYVFL6W.js +71 -0
- package/dist/delete-YSYVFL6W.js.map +1 -0
- package/dist/demographics-6N3TTYWC.js +138 -0
- package/dist/demographics-6N3TTYWC.js.map +1 -0
- package/dist/describe-AAVYIFE3.js +97 -0
- package/dist/describe-AAVYIFE3.js.map +1 -0
- package/dist/describe-UQFLWVFR.js +97 -0
- package/dist/describe-UQFLWVFR.js.map +1 -0
- package/dist/dimensions-QDXBG2XC.js +101 -0
- package/dist/dimensions-QDXBG2XC.js.map +1 -0
- package/dist/discard-S3NGGUSK.js +66 -0
- package/dist/discard-S3NGGUSK.js.map +1 -0
- package/dist/discover-6TEBPVNC.js +93 -0
- package/dist/discover-6TEBPVNC.js.map +1 -0
- package/dist/discover-SBZPB7T2.js +172 -0
- package/dist/discover-SBZPB7T2.js.map +1 -0
- package/dist/domain-AMAR76PB.js +98 -0
- package/dist/domain-AMAR76PB.js.map +1 -0
- package/dist/download-LV3GPOWV.js +299 -0
- package/dist/download-LV3GPOWV.js.map +1 -0
- package/dist/draft-6QZ7WMWM.js +217 -0
- package/dist/draft-6QZ7WMWM.js.map +1 -0
- package/dist/draft-DDFFTZ43.js +233 -0
- package/dist/draft-DDFFTZ43.js.map +1 -0
- package/dist/draft-FIKJXNIQ.js +281 -0
- package/dist/draft-FIKJXNIQ.js.map +1 -0
- package/dist/draft-GYGWTMBU.js +307 -0
- package/dist/draft-GYGWTMBU.js.map +1 -0
- package/dist/draft-KXL62WFS.js +328 -0
- package/dist/draft-KXL62WFS.js.map +1 -0
- package/dist/draft-N4LFPKTA.js +100 -0
- package/dist/draft-N4LFPKTA.js.map +1 -0
- package/dist/draft-POSLJCWG.js +306 -0
- package/dist/draft-POSLJCWG.js.map +1 -0
- package/dist/draft-XPO5RWST.js +103 -0
- package/dist/draft-XPO5RWST.js.map +1 -0
- package/dist/engine/index.d.ts +213 -127
- package/dist/engine/index.js +18 -4
- package/dist/{env-4P5HOGNA.js → env-TQ2XS2KY.js} +12 -2
- package/dist/env-TQ2XS2KY.js.map +1 -0
- package/dist/experiment-FQNKMORZ.js +1397 -0
- package/dist/experiment-FQNKMORZ.js.map +1 -0
- package/dist/export-4IZQZAPF.js +168 -0
- package/dist/export-4IZQZAPF.js.map +1 -0
- package/dist/extract-DZMGVQ7D.js +113 -0
- package/dist/extract-DZMGVQ7D.js.map +1 -0
- package/dist/facets-223V5P47.js +114 -0
- package/dist/facets-223V5P47.js.map +1 -0
- package/dist/favorites-DD2LNSTG.js +178 -0
- package/dist/favorites-DD2LNSTG.js.map +1 -0
- package/dist/feed-TUVFNX2U.js +177 -0
- package/dist/feed-TUVFNX2U.js.map +1 -0
- package/dist/feedback-MIW23MI2.js +66 -0
- package/dist/feedback-MIW23MI2.js.map +1 -0
- package/dist/feedback-record-RGKRKPGZ.js +175 -0
- package/dist/feedback-record-RGKRKPGZ.js.map +1 -0
- package/dist/fetch-O6UHNXWB.js +139 -0
- package/dist/fetch-O6UHNXWB.js.map +1 -0
- package/dist/fetch-TZ4UCMJK.js +176 -0
- package/dist/fetch-TZ4UCMJK.js.map +1 -0
- package/dist/find-4XKIBF4D.js +134 -0
- package/dist/find-4XKIBF4D.js.map +1 -0
- package/dist/fit-ODVVXV2Q.js +45 -0
- package/dist/fit-ODVVXV2Q.js.map +1 -0
- package/dist/flows-HVWBFZ7T.js +247 -0
- package/dist/flows-HVWBFZ7T.js.map +1 -0
- package/dist/follow-RCOXTZGY.js +94 -0
- package/dist/follow-RCOXTZGY.js.map +1 -0
- package/dist/follow-competitors-SQ5XBFTK.js +112 -0
- package/dist/follow-competitors-SQ5XBFTK.js.map +1 -0
- package/dist/following-VDU3BHC4.js +113 -0
- package/dist/following-VDU3BHC4.js.map +1 -0
- package/dist/fonts-NBIQAVQN.js +34 -0
- package/dist/fonts-NBIQAVQN.js.map +1 -0
- package/dist/forecast-2GJKBNBM.js +168 -0
- package/dist/forecast-2GJKBNBM.js.map +1 -0
- package/dist/forecast-76MUJBPO.js +104 -0
- package/dist/forecast-76MUJBPO.js.map +1 -0
- package/dist/funding-HTFVZLLG.js +85 -0
- package/dist/funding-HTFVZLLG.js.map +1 -0
- package/dist/funnel-FE2HIRVQ.js +394 -0
- package/dist/funnel-FE2HIRVQ.js.map +1 -0
- package/dist/ga4-2RC4EH7V.js +55 -0
- package/dist/ga4-2RC4EH7V.js.map +1 -0
- package/dist/generate-TPDOBCKQ.js +262 -0
- package/dist/generate-TPDOBCKQ.js.map +1 -0
- package/dist/get-6JNOVI27.js +56 -0
- package/dist/get-6JNOVI27.js.map +1 -0
- package/dist/get-FH2LIEYL.js +63 -0
- package/dist/get-FH2LIEYL.js.map +1 -0
- package/dist/get-GZLCDXXW.js +61 -0
- package/dist/get-GZLCDXXW.js.map +1 -0
- package/dist/get-KVAOPAQW.js +78 -0
- package/dist/get-KVAOPAQW.js.map +1 -0
- package/dist/get-TSPQYEKC.js +59 -0
- package/dist/get-TSPQYEKC.js.map +1 -0
- package/dist/get-TY3RXYNZ.js +63 -0
- package/dist/get-TY3RXYNZ.js.map +1 -0
- package/dist/get-VPW33XTN.js +92 -0
- package/dist/get-VPW33XTN.js.map +1 -0
- package/dist/gif-JFEYPFFI.js +94 -0
- package/dist/gif-JFEYPFFI.js.map +1 -0
- package/dist/google-R6RD4L6Z.js +136 -0
- package/dist/google-R6RD4L6Z.js.map +1 -0
- package/dist/google-VPQNRVIB.js +3190 -0
- package/dist/google-VPQNRVIB.js.map +1 -0
- package/dist/google-ads-JEQMNNMN.js +195 -0
- package/dist/google-ads-JEQMNNMN.js.map +1 -0
- package/dist/group-7AV6UL26.js +43 -0
- package/dist/group-7AV6UL26.js.map +1 -0
- package/dist/group-BVQZEZIC.js +43 -0
- package/dist/group-BVQZEZIC.js.map +1 -0
- package/dist/gsc-SQ42WAQE.js +30 -0
- package/dist/gsc-SQ42WAQE.js.map +1 -0
- package/dist/history-BNNHFURR.js +67 -0
- package/dist/history-BNNHFURR.js.map +1 -0
- package/dist/history-EHUQG4CE.js +133 -0
- package/dist/history-EHUQG4CE.js.map +1 -0
- package/dist/hubspot-JABE4USC.js +779 -0
- package/dist/hubspot-JABE4USC.js.map +1 -0
- package/dist/icon-OYTTSNSL.js +137 -0
- package/dist/icon-OYTTSNSL.js.map +1 -0
- package/dist/ideas-OD76WOQ3.js +32 -0
- package/dist/ideas-OD76WOQ3.js.map +1 -0
- package/dist/images-LY7AWWBK.js +90 -0
- package/dist/images-LY7AWWBK.js.map +1 -0
- package/dist/improve-W6GZNT2A.js +86 -0
- package/dist/improve-W6GZNT2A.js.map +1 -0
- package/dist/ingest-47WON6HT.js +23 -0
- package/dist/ingest-47WON6HT.js.map +1 -0
- package/dist/ingest-HDGGHBSJ.js +107 -0
- package/dist/ingest-HDGGHBSJ.js.map +1 -0
- package/dist/insights-IW7LGAWU.js +423 -0
- package/dist/insights-IW7LGAWU.js.map +1 -0
- package/dist/insights-QH54F56A.js +122 -0
- package/dist/insights-QH54F56A.js.map +1 -0
- package/dist/inspect-AJLG2HGL.js +189 -0
- package/dist/inspect-AJLG2HGL.js.map +1 -0
- package/dist/inspiration-RDQ3Y3N3.js +53 -0
- package/dist/inspiration-RDQ3Y3N3.js.map +1 -0
- package/dist/intent-5GSSCFZ2.js +95 -0
- package/dist/intent-5GSSCFZ2.js.map +1 -0
- package/dist/job-URVXJP75.js +202 -0
- package/dist/job-URVXJP75.js.map +1 -0
- package/dist/job-create-S4SECUVF.js +109 -0
- package/dist/job-create-S4SECUVF.js.map +1 -0
- package/dist/job-status-253SUCTJ.js +74 -0
- package/dist/job-status-253SUCTJ.js.map +1 -0
- package/dist/keep-GPSYDIGJ.js +78 -0
- package/dist/keep-GPSYDIGJ.js.map +1 -0
- package/dist/keyword-gap-NTFDX43B.js +130 -0
- package/dist/keyword-gap-NTFDX43B.js.map +1 -0
- package/dist/keyword-metrics-XSFLMBZX.js +197 -0
- package/dist/keyword-metrics-XSFLMBZX.js.map +1 -0
- package/dist/keywords-for-site-U4JLYXVE.js +128 -0
- package/dist/keywords-for-site-U4JLYXVE.js.map +1 -0
- package/dist/landing-AO72EGJ6.js +28 -0
- package/dist/landing-AO72EGJ6.js.map +1 -0
- package/dist/landings-NEF4PQL2.js +151 -0
- package/dist/landings-NEF4PQL2.js.map +1 -0
- package/dist/languages-3RDPPPTE.js +55 -0
- package/dist/languages-3RDPPPTE.js.map +1 -0
- package/dist/languages-CQX3YOIT.js +40 -0
- package/dist/languages-CQX3YOIT.js.map +1 -0
- package/dist/launches-GBHLJH5S.js +19 -0
- package/dist/launches-GBHLJH5S.js.map +1 -0
- package/dist/layerize-Q56C6LFG.js +190 -0
- package/dist/layerize-Q56C6LFG.js.map +1 -0
- package/dist/leads-JHUM6FYR.js +293 -0
- package/dist/leads-JHUM6FYR.js.map +1 -0
- package/dist/leads-UYZM2XQX.js +90 -0
- package/dist/leads-UYZM2XQX.js.map +1 -0
- package/dist/learn-D2KBGJHZ.js +203 -0
- package/dist/learn-D2KBGJHZ.js.map +1 -0
- package/dist/library-6VUFHTEK.js +109 -0
- package/dist/library-6VUFHTEK.js.map +1 -0
- package/dist/lighthouse-57U2GMPV.js +75 -0
- package/dist/lighthouse-57U2GMPV.js.map +1 -0
- package/dist/line-item-writes-R5GO6GTL.js +208 -0
- package/dist/line-item-writes-R5GO6GTL.js.map +1 -0
- package/dist/line-items-RBMH6YBZ.js +103 -0
- package/dist/line-items-RBMH6YBZ.js.map +1 -0
- package/dist/link-WS2RMCOP.js +64 -0
- package/dist/link-WS2RMCOP.js.map +1 -0
- package/dist/linkedin-FSIALZTS.js +1008 -0
- package/dist/linkedin-FSIALZTS.js.map +1 -0
- package/dist/list-2AE2Q4ZD.js +151 -0
- package/dist/list-2AE2Q4ZD.js.map +1 -0
- package/dist/list-E635Y6M4.js +303 -0
- package/dist/list-E635Y6M4.js.map +1 -0
- package/dist/list-G57ZO4PG.js +50 -0
- package/dist/list-G57ZO4PG.js.map +1 -0
- package/dist/list-JCSWZWDI.js +57 -0
- package/dist/list-JCSWZWDI.js.map +1 -0
- package/dist/list-KT6NXVLV.js +63 -0
- package/dist/list-KT6NXVLV.js.map +1 -0
- package/dist/list-RINCJOAC.js +76 -0
- package/dist/list-RINCJOAC.js.map +1 -0
- package/dist/list-SRNXHS6L.js +51 -0
- package/dist/list-SRNXHS6L.js.map +1 -0
- package/dist/list-YJSO4M5Q.js +65 -0
- package/dist/list-YJSO4M5Q.js.map +1 -0
- package/dist/locations-HW2Y5OJO.js +67 -0
- package/dist/locations-HW2Y5OJO.js.map +1 -0
- package/dist/locations-XOHI3VWI.js +40 -0
- package/dist/locations-XOHI3VWI.js.map +1 -0
- package/dist/log-3HX5BIO6.js +92 -0
- package/dist/log-3HX5BIO6.js.map +1 -0
- package/dist/logo-KXTGIYBI.js +18 -0
- package/dist/logo-KXTGIYBI.js.map +1 -0
- package/dist/lookup-X6O5UNJH.js +22 -0
- package/dist/lookup-X6O5UNJH.js.map +1 -0
- package/dist/make-QH77XOWM.js +633 -0
- package/dist/make-QH77XOWM.js.map +1 -0
- package/dist/map-QABBPYZM.js +404 -0
- package/dist/map-QABBPYZM.js.map +1 -0
- package/dist/mcp-HSD3W3OB.js +463 -0
- package/dist/mcp-HSD3W3OB.js.map +1 -0
- package/dist/media-MI4EE7L4.js +89 -0
- package/dist/media-MI4EE7L4.js.map +1 -0
- package/dist/media-QUTQOBA7.js +15 -0
- package/dist/media-QUTQOBA7.js.map +1 -0
- package/dist/media-sources-HO4DXRX5.js +32 -0
- package/dist/media-sources-HO4DXRX5.js.map +1 -0
- package/dist/members-YEYYJGY6.js +44 -0
- package/dist/members-YEYYJGY6.js.map +1 -0
- package/dist/meta-E3JOUOSS.js +69 -0
- package/dist/meta-E3JOUOSS.js.map +1 -0
- package/dist/metrics-HQ7XJAYQ.js +152 -0
- package/dist/metrics-HQ7XJAYQ.js.map +1 -0
- package/dist/models-PGX3FBHU.js +155 -0
- package/dist/models-PGX3FBHU.js.map +1 -0
- package/dist/normalize-FPJ6GSOY.js +806 -0
- package/dist/normalize-FPJ6GSOY.js.map +1 -0
- package/dist/normalize-GSQWN77S.js +141 -0
- package/dist/normalize-GSQWN77S.js.map +1 -0
- package/dist/options-F5XZMQLK.js +121 -0
- package/dist/options-F5XZMQLK.js.map +1 -0
- package/dist/output-GQFJ2T5B.js +24 -0
- package/dist/output-GQFJ2T5B.js.map +1 -0
- package/dist/page-VTTSBC6Y.js +105 -0
- package/dist/page-VTTSBC6Y.js.map +1 -0
- package/dist/pages-PMZVNVQM.js +66 -0
- package/dist/pages-PMZVNVQM.js.map +1 -0
- package/dist/performance-G67JQE5J.js +24 -0
- package/dist/performance-G67JQE5J.js.map +1 -0
- package/dist/pinterest-UDNGOWDM.js +96 -0
- package/dist/pinterest-UDNGOWDM.js.map +1 -0
- package/dist/pixels-OYZDGCH3.js +108 -0
- package/dist/pixels-OYZDGCH3.js.map +1 -0
- package/dist/pixels-XKGNTCFX.js +60 -0
- package/dist/pixels-XKGNTCFX.js.map +1 -0
- package/dist/plan-DZS3TVIJ.js +207 -0
- package/dist/plan-DZS3TVIJ.js.map +1 -0
- package/dist/preview-DR6MXOGI.js +169 -0
- package/dist/preview-DR6MXOGI.js.map +1 -0
- package/dist/profile-VOVZG44G.js +159 -0
- package/dist/profile-VOVZG44G.js.map +1 -0
- package/dist/promoted-tweet-writes-VCK2ADVJ.js +180 -0
- package/dist/promoted-tweet-writes-VCK2ADVJ.js.map +1 -0
- package/dist/promoted-tweets-4ACBP2RV.js +119 -0
- package/dist/promoted-tweets-4ACBP2RV.js.map +1 -0
- package/dist/properties-MKVF7MUK.js +101 -0
- package/dist/properties-MKVF7MUK.js.map +1 -0
- package/dist/publish-6XVA35T6.js +322 -0
- package/dist/publish-6XVA35T6.js.map +1 -0
- package/dist/query-CNWQ6STR.js +61 -0
- package/dist/query-CNWQ6STR.js.map +1 -0
- package/dist/query-DBSBZ73C.js +247 -0
- package/dist/query-DBSBZ73C.js.map +1 -0
- package/dist/query-QK4U4TEL.js +236 -0
- package/dist/query-QK4U4TEL.js.map +1 -0
- package/dist/questionnaire-OVJWNUVV.js +93 -0
- package/dist/questionnaire-OVJWNUVV.js.map +1 -0
- package/dist/read-L2QIVJTL.js +141 -0
- package/dist/read-L2QIVJTL.js.map +1 -0
- package/dist/reddit-SCEB2JQL.js +26 -0
- package/dist/reddit-SCEB2JQL.js.map +1 -0
- package/dist/refresh-TIH5Y3NP.js +94 -0
- package/dist/refresh-TIH5Y3NP.js.map +1 -0
- package/dist/release-LKMUKVXM.js +60 -0
- package/dist/release-LKMUKVXM.js.map +1 -0
- package/dist/relevant-pages-CRI2NLWG.js +99 -0
- package/dist/relevant-pages-CRI2NLWG.js.map +1 -0
- package/dist/remove-6ABOB7TZ.js +50 -0
- package/dist/remove-6ABOB7TZ.js.map +1 -0
- package/dist/remove-JKSCGKQG.js +48 -0
- package/dist/remove-JKSCGKQG.js.map +1 -0
- package/dist/reopen-27TDNXFP.js +63 -0
- package/dist/reopen-27TDNXFP.js.map +1 -0
- package/dist/rerun-XHECBJD5.js +84 -0
- package/dist/rerun-XHECBJD5.js.map +1 -0
- package/dist/research-4MOXIMDX.js +62 -0
- package/dist/research-4MOXIMDX.js.map +1 -0
- package/dist/research-XYXP7D4R.js +262 -0
- package/dist/research-XYXP7D4R.js.map +1 -0
- package/dist/reset-NLYEBPLX.js +54 -0
- package/dist/reset-NLYEBPLX.js.map +1 -0
- package/dist/reset-RDQOYBXX.js +54 -0
- package/dist/reset-RDQOYBXX.js.map +1 -0
- package/dist/resolve-VHKWC5KW.js +121 -0
- package/dist/resolve-VHKWC5KW.js.map +1 -0
- package/dist/retry-MTQSHXKH.js +60 -0
- package/dist/retry-MTQSHXKH.js.map +1 -0
- package/dist/retry-ZI5ECSFD.js +62 -0
- package/dist/retry-ZI5ECSFD.js.map +1 -0
- package/dist/retry-failed-2OYMCB55.js +45 -0
- package/dist/retry-failed-2OYMCB55.js.map +1 -0
- package/dist/run-BMJJRJL2.js +65 -0
- package/dist/run-BMJJRJL2.js.map +1 -0
- package/dist/run-IHXS6F5V.js +59 -0
- package/dist/run-IHXS6F5V.js.map +1 -0
- package/dist/scaffold-ad-QEADKYPL.js +1548 -0
- package/dist/scaffold-ad-QEADKYPL.js.map +1 -0
- package/dist/scaffold-static-ad-PTJ73ZNF.js +971 -0
- package/dist/scaffold-static-ad-PTJ73ZNF.js.map +1 -0
- package/dist/scaffold-video-ZQEZRVD6.js +872 -0
- package/dist/scaffold-video-ZQEZRVD6.js.map +1 -0
- package/dist/schedule-JD2EQJCT.js +61 -0
- package/dist/schedule-JD2EQJCT.js.map +1 -0
- package/dist/schedule-TLYT5UXM.js +66 -0
- package/dist/schedule-TLYT5UXM.js.map +1 -0
- package/dist/scheduled-agents-GIVKWTXX.js +49 -0
- package/dist/scheduled-agents-GIVKWTXX.js.map +1 -0
- package/dist/schema-MZTVCNP4.js +63 -0
- package/dist/schema-MZTVCNP4.js.map +1 -0
- package/dist/schema-RYTVKPLZ.js +132 -0
- package/dist/schema-RYTVKPLZ.js.map +1 -0
- package/dist/scrape-T3DA7ER7.js +2241 -0
- package/dist/scrape-T3DA7ER7.js.map +1 -0
- package/dist/screenshot-EIGC6SZB.js +102 -0
- package/dist/screenshot-EIGC6SZB.js.map +1 -0
- package/dist/search-2SVUDZIX.js +224 -0
- package/dist/search-2SVUDZIX.js.map +1 -0
- package/dist/search-34NFJ5F6.js +26 -0
- package/dist/search-34NFJ5F6.js.map +1 -0
- package/dist/search-AOFAN5NB.js +174 -0
- package/dist/search-AOFAN5NB.js.map +1 -0
- package/dist/search-BWE3OPOY.js +91 -0
- package/dist/search-BWE3OPOY.js.map +1 -0
- package/dist/search-EYYAOZND.js +92 -0
- package/dist/search-EYYAOZND.js.map +1 -0
- package/dist/search-copy-VKQ2OOBM.js +168 -0
- package/dist/search-copy-VKQ2OOBM.js.map +1 -0
- package/dist/seeds-HQYSVFIX.js +101 -0
- package/dist/seeds-HQYSVFIX.js.map +1 -0
- package/dist/select-HJMOAWAU.js +94 -0
- package/dist/select-HJMOAWAU.js.map +1 -0
- package/dist/sends-I7VQFE4S.js +309 -0
- package/dist/sends-I7VQFE4S.js.map +1 -0
- package/dist/sequences-JHSEJJGN.js +146 -0
- package/dist/sequences-JHSEJJGN.js.map +1 -0
- package/dist/set-prompt-TSS33JQZ.js +185 -0
- package/dist/set-prompt-TSS33JQZ.js.map +1 -0
- package/dist/setup-links-IW4BUANK.js +141 -0
- package/dist/setup-links-IW4BUANK.js.map +1 -0
- package/dist/{shared-J7DQZ2ED.js → shared-AT3FXPAG.js} +8 -6
- package/dist/shared-AT3FXPAG.js.map +1 -0
- package/dist/shopify-RQKO5TMR.js +3819 -0
- package/dist/shopify-RQKO5TMR.js.map +1 -0
- package/dist/site-3NU2BDAR.js +177 -0
- package/dist/site-3NU2BDAR.js.map +1 -0
- package/dist/sitemaps-FG37N5EB.js +87 -0
- package/dist/sitemaps-FG37N5EB.js.map +1 -0
- package/dist/sites-FIXK4Y3O.js +101 -0
- package/dist/sites-FIXK4Y3O.js.map +1 -0
- package/dist/skills-OKVCVQVD.js +47 -0
- package/dist/skills-OKVCVQVD.js.map +1 -0
- package/dist/sources-SEODRUIC.js +30 -0
- package/dist/sources-SEODRUIC.js.map +1 -0
- package/dist/sources-Z6BGTBGO.js +421 -0
- package/dist/sources-Z6BGTBGO.js.map +1 -0
- package/dist/stale-SWPDWXG7.js +63 -0
- package/dist/stale-SWPDWXG7.js.map +1 -0
- package/dist/stats-ZWZ7BAHV.js +34 -0
- package/dist/stats-ZWZ7BAHV.js.map +1 -0
- package/dist/status-7Y7UNSO6.js +62 -0
- package/dist/status-7Y7UNSO6.js.map +1 -0
- package/dist/sticker-FLRZM3BI.js +94 -0
- package/dist/sticker-FLRZM3BI.js.map +1 -0
- package/dist/stock-2CSMWRWV.js +179 -0
- package/dist/stock-2CSMWRWV.js.map +1 -0
- package/dist/studio-TTTR6N7D.js +49 -0
- package/dist/studio-TTTR6N7D.js.map +1 -0
- package/dist/sync-FH773IFH.js +54 -0
- package/dist/sync-FH773IFH.js.map +1 -0
- package/dist/sync-G5CS2RYV.js +54 -0
- package/dist/sync-G5CS2RYV.js.map +1 -0
- package/dist/sync-UADA6M33.js +265 -0
- package/dist/sync-UADA6M33.js.map +1 -0
- package/dist/sync-definition-77KLGPMA.js +52 -0
- package/dist/sync-definition-77KLGPMA.js.map +1 -0
- package/dist/tag-manager-NK3ZHSJB.js +43 -0
- package/dist/tag-manager-NK3ZHSJB.js.map +1 -0
- package/dist/tags-ANGHHLAC.js +20 -0
- package/dist/tags-ANGHHLAC.js.map +1 -0
- package/dist/tags-DKPUSQTJ.js +20 -0
- package/dist/tags-DKPUSQTJ.js.map +1 -0
- package/dist/tags-HSCV4ZAQ.js +20 -0
- package/dist/tags-HSCV4ZAQ.js.map +1 -0
- package/dist/tags-J3RMQEQM.js +26 -0
- package/dist/tags-J3RMQEQM.js.map +1 -0
- package/dist/tags-VZGTR3VJ.js +224 -0
- package/dist/tags-VZGTR3VJ.js.map +1 -0
- package/dist/targeting-constants-ZGBX3VWU.js +118 -0
- package/dist/targeting-constants-ZGBX3VWU.js.map +1 -0
- package/dist/targeting-criteria-BSG3CLHU.js +113 -0
- package/dist/targeting-criteria-BSG3CLHU.js.map +1 -0
- package/dist/targets-DVOAFYZQ.js +102 -0
- package/dist/targets-DVOAFYZQ.js.map +1 -0
- package/dist/templates-KJ5O44FF.js +178 -0
- package/dist/templates-KJ5O44FF.js.map +1 -0
- package/dist/testimonials-NB7V3DUO.js +32 -0
- package/dist/testimonials-NB7V3DUO.js.map +1 -0
- package/dist/themes-3RV3HNNE.js +94 -0
- package/dist/themes-3RV3HNNE.js.map +1 -0
- package/dist/top-companies-KRB3OZOT.js +108 -0
- package/dist/top-companies-KRB3OZOT.js.map +1 -0
- package/dist/translate-5FP32BIA.js +598 -0
- package/dist/translate-5FP32BIA.js.map +1 -0
- package/dist/triggers-EURHTCYC.js +141 -0
- package/dist/triggers-EURHTCYC.js.map +1 -0
- package/dist/tweets-X64YDEAA.js +123 -0
- package/dist/tweets-X64YDEAA.js.map +1 -0
- package/dist/unfollow-PIONCSBL.js +46 -0
- package/dist/unfollow-PIONCSBL.js.map +1 -0
- package/dist/unlink-HVVTZ3MB.js +67 -0
- package/dist/unlink-HVVTZ3MB.js.map +1 -0
- package/dist/unstage-BJJ5M7MK.js +95 -0
- package/dist/unstage-BJJ5M7MK.js.map +1 -0
- package/dist/unstage-Y7ZE3NUJ.js +84 -0
- package/dist/unstage-Y7ZE3NUJ.js.map +1 -0
- package/dist/update-3IP7FB6Y.js +98 -0
- package/dist/update-3IP7FB6Y.js.map +1 -0
- package/dist/update-CSDSK5NO.js +63 -0
- package/dist/update-CSDSK5NO.js.map +1 -0
- package/dist/update-FGJXVDB7.js +142 -0
- package/dist/update-FGJXVDB7.js.map +1 -0
- package/dist/update-MF7LY2OT.js +155 -0
- package/dist/update-MF7LY2OT.js.map +1 -0
- package/dist/upload-DDPI7KJV.js +126 -0
- package/dist/upload-DDPI7KJV.js.map +1 -0
- package/dist/upload-IWFYKD7A.js +150 -0
- package/dist/upload-IWFYKD7A.js.map +1 -0
- package/dist/upscale-EYCEYRWE.js +109 -0
- package/dist/upscale-EYCEYRWE.js.map +1 -0
- package/dist/url-options-RA3XISLN.js +130 -0
- package/dist/url-options-RA3XISLN.js.map +1 -0
- package/dist/url-params-SN4APXCK.js +98 -0
- package/dist/url-params-SN4APXCK.js.map +1 -0
- package/dist/use-E2TA2K6J.js +95 -0
- package/dist/use-E2TA2K6J.js.map +1 -0
- package/dist/validate-W52JOEXI.js +88 -0
- package/dist/validate-W52JOEXI.js.map +1 -0
- package/dist/variant-ETHB6XUM.js +338 -0
- package/dist/variant-ETHB6XUM.js.map +1 -0
- package/dist/videos-653WAFPG.js +39 -0
- package/dist/videos-653WAFPG.js.map +1 -0
- package/dist/view-BVEZRRV2.js +121 -0
- package/dist/view-BVEZRRV2.js.map +1 -0
- package/dist/viewer-check-W4ICSBHO.js +68 -0
- package/dist/viewer-check-W4ICSBHO.js.map +1 -0
- package/dist/web-JWIGFGIU.js +140 -0
- package/dist/web-JWIGFGIU.js.map +1 -0
- package/dist/winners-MJDKCGEZ.js +113 -0
- package/dist/winners-MJDKCGEZ.js.map +1 -0
- package/dist/winning-ads-O3IMUGGO.js +84 -0
- package/dist/winning-ads-O3IMUGGO.js.map +1 -0
- package/dist/write-commands-DA6FIFAO.js +737 -0
- package/dist/write-commands-DA6FIFAO.js.map +1 -0
- package/dist/write-commands-EMN2WENA.js +1015 -0
- package/dist/write-commands-EMN2WENA.js.map +1 -0
- package/dist/write-commands-KTPISQRE.js +206 -0
- package/dist/write-commands-KTPISQRE.js.map +1 -0
- package/dist/write-commands-QBGIWU27.js +713 -0
- package/dist/write-commands-QBGIWU27.js.map +1 -0
- package/dist/x-BT3SNCTU.js +47 -0
- package/dist/x-BT3SNCTU.js.map +1 -0
- package/package.json +9 -2
- package/dist/chunk-CHJOTJTZ.js +0 -9989
- package/dist/chunk-CHJOTJTZ.js.map +0 -1
- package/dist/chunk-HJEMOSPH.js +0 -1292
- package/dist/chunk-HJEMOSPH.js.map +0 -1
- package/dist/chunk-MF7YA62W.js.map +0 -1
- package/dist/chunk-VLUGGVJL.js.map +0 -1
- package/dist/chunk-VZEDAFAR.js.map +0 -1
- package/dist/chunk-XHC4LMK4.js.map +0 -1
- package/dist/client-GR6YL3YX.js +0 -17
- package/dist/output-NMQXZF3Z.js +0 -18
- /package/dist/{client-GR6YL3YX.js.map → chunk-YQSBHWOI.js.map} +0 -0
- /package/dist/{env-4P5HOGNA.js.map → client-EURRWXPW.js.map} +0 -0
- /package/dist/{output-NMQXZF3Z.js.map → connect-4YXFMXYX.js.map} +0 -0
- /package/dist/{shared-J7DQZ2ED.js.map → customers-7E4HBSEY.js.map} +0 -0
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import {
|
|
2
|
+
buildProfilePatch,
|
|
3
|
+
hasProfileEdit,
|
|
4
|
+
mergeProfile
|
|
5
|
+
} from "./chunk-IJMWEO4P.js";
|
|
6
|
+
import {
|
|
7
|
+
failAvatarApi,
|
|
8
|
+
failValidation,
|
|
9
|
+
updateHints
|
|
10
|
+
} from "./chunk-4X3UR372.js";
|
|
11
|
+
import {
|
|
12
|
+
readAvatars,
|
|
13
|
+
writeAvatars
|
|
14
|
+
} from "./chunk-5FEBUCJU.js";
|
|
15
|
+
import {
|
|
16
|
+
AVATAR_HANDLE_PATTERN
|
|
17
|
+
} from "./chunk-O6XZIQXZ.js";
|
|
18
|
+
import "./chunk-GXDLWBOY.js";
|
|
19
|
+
import "./chunk-GIWHHCD6.js";
|
|
20
|
+
import "./chunk-UI6BKYQD.js";
|
|
21
|
+
import "./chunk-I2DNBEV6.js";
|
|
22
|
+
import "./chunk-CUL3VB4L.js";
|
|
23
|
+
import "./chunk-6YYSUISH.js";
|
|
24
|
+
import "./chunk-I4FTS5EE.js";
|
|
25
|
+
import {
|
|
26
|
+
registerSchema,
|
|
27
|
+
writeJson
|
|
28
|
+
} from "./chunk-MYTDK3AL.js";
|
|
29
|
+
import "./chunk-YQSBHWOI.js";
|
|
30
|
+
|
|
31
|
+
// src/commands/avatars/update.ts
|
|
32
|
+
import { defineCommand } from "citty";
|
|
33
|
+
function readUpdateArgs(args) {
|
|
34
|
+
const handle = (args.handle || args["avatar-handle"])?.trim();
|
|
35
|
+
if (!handle) {
|
|
36
|
+
failValidation('An avatar handle is required, e.g. `baker avatars update marta --persona "\u2026"`.');
|
|
37
|
+
}
|
|
38
|
+
const name = args.name?.trim();
|
|
39
|
+
const newHandle = args["new-handle"]?.trim().toLowerCase();
|
|
40
|
+
const regenerateSheet = Boolean(args["regenerate-sheet"]);
|
|
41
|
+
const patch = buildProfilePatch(args);
|
|
42
|
+
if (patch.subjectDescription === "") {
|
|
43
|
+
failValidation(
|
|
44
|
+
"--subject cannot be emptied: it is what the identity sheet was built from. Replace it with a new description of the same length or better, and pass --regenerate-sheet."
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
if (newHandle && !AVATAR_HANDLE_PATTERN.test(newHandle)) {
|
|
48
|
+
failValidation(
|
|
49
|
+
`--new-handle "${newHandle}" is not usable. Use lowercase letters, numbers and dashes, starting with a letter.`
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
if (!name && !newHandle && !hasProfileEdit(patch) && !regenerateSheet) {
|
|
53
|
+
failValidation(
|
|
54
|
+
"Nothing to change. Pass at least one of --name, --new-handle, --subject, --persona, --speech, --motion, --wardrobe, --setting, --accent, --guardrails, --regenerate-sheet."
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
return { handle, name, newHandle, regenerateSheet, patch };
|
|
58
|
+
}
|
|
59
|
+
registerSchema({
|
|
60
|
+
command: "avatars.update",
|
|
61
|
+
description: 'Edit an avatar: rename it, change its handle, rewrite any part of its written profile, set the accent it speaks with, or rebuild its identity sheet. Profile flags are merged over what is stored, so `--persona "\u2026"` alone leaves the subject description intact. THE RULE THAT MATTERS: if you change --subject, pass --regenerate-sheet in the same call \u2014 otherwise the sheet still shows the person you described before, the words and the face stop matching, and every render drifts. Rebuilding is a ~30s billed render and puts the avatar back to `generating`.',
|
|
62
|
+
args: {
|
|
63
|
+
handle: { type: "string", description: "Handle of the avatar to edit", required: true },
|
|
64
|
+
name: { type: "string", description: "New display name", required: false },
|
|
65
|
+
"new-handle": { type: "string", description: "New mention handle (lowercase, dashes)", required: false },
|
|
66
|
+
subject: {
|
|
67
|
+
type: "string",
|
|
68
|
+
description: "Rewrite the identity description. Pass --regenerate-sheet with it, always.",
|
|
69
|
+
required: false
|
|
70
|
+
},
|
|
71
|
+
persona: { type: "string", description: "Who they are on camera", required: false },
|
|
72
|
+
speech: { type: "string", description: "How they speak", required: false },
|
|
73
|
+
motion: { type: "string", description: "Body language in video", required: false },
|
|
74
|
+
wardrobe: { type: "string", description: "Default outfit", required: false },
|
|
75
|
+
setting: { type: "string", description: "Default surroundings", required: false },
|
|
76
|
+
guardrails: {
|
|
77
|
+
type: "string",
|
|
78
|
+
description: "Comma-separated things they must never do (replaces the stored list; empty string clears it)",
|
|
79
|
+
required: false
|
|
80
|
+
},
|
|
81
|
+
accent: {
|
|
82
|
+
type: "string",
|
|
83
|
+
description: "Where their voice is FROM, as a place: 'Spanish from Spain, Madrid accent', 'Mexican Spanish'. THE lever for how they sound \u2014 an avatar has no pinned voice (ADR 0005), so the region directed in the prompt is the only thing steering pronunciation. An adjective like 'clear Spanish accent' is read as NO accent and the clip comes out sounding like nowhere.",
|
|
84
|
+
required: false
|
|
85
|
+
},
|
|
86
|
+
"regenerate-sheet": {
|
|
87
|
+
type: "boolean",
|
|
88
|
+
description: "Rebuild the identity sheet (~30s, billed). Required whenever --subject changed.",
|
|
89
|
+
required: false,
|
|
90
|
+
default: false
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
var updateCommand = defineCommand({
|
|
95
|
+
meta: {
|
|
96
|
+
name: "update",
|
|
97
|
+
description: 'Edit an avatar; profile flags merge over what is stored. Example: baker avatars update marta --subject "woman in her early 50s, silver bob" --regenerate-sheet'
|
|
98
|
+
},
|
|
99
|
+
args: {
|
|
100
|
+
handle: { type: "positional", description: "Handle of the avatar to edit", required: false },
|
|
101
|
+
"avatar-handle": { type: "string", description: "Handle (alternative to positional)", required: false },
|
|
102
|
+
name: { type: "string", description: "New display name", required: false },
|
|
103
|
+
"new-handle": { type: "string", description: "New mention handle", required: false },
|
|
104
|
+
subject: { type: "string", description: "Rewrite the identity description", required: false },
|
|
105
|
+
persona: { type: "string", description: "Who they are on camera", required: false },
|
|
106
|
+
speech: { type: "string", description: "How they speak", required: false },
|
|
107
|
+
motion: { type: "string", description: "Body language in video", required: false },
|
|
108
|
+
wardrobe: { type: "string", description: "Default outfit", required: false },
|
|
109
|
+
setting: { type: "string", description: "Default surroundings", required: false },
|
|
110
|
+
guardrails: { type: "string", description: "Comma-separated rules (empty string clears)", required: false },
|
|
111
|
+
accent: { type: "string", description: "Where their voice is FROM, as a place", required: false },
|
|
112
|
+
"regenerate-sheet": {
|
|
113
|
+
type: "boolean",
|
|
114
|
+
description: "Rebuild the identity sheet (~30s, billed)",
|
|
115
|
+
required: false,
|
|
116
|
+
default: false
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
run: async ({ args }) => {
|
|
120
|
+
const { handle, name, newHandle, regenerateSheet, patch } = readUpdateArgs(args);
|
|
121
|
+
try {
|
|
122
|
+
let profile;
|
|
123
|
+
let subjectChanged = false;
|
|
124
|
+
if (hasProfileEdit(patch)) {
|
|
125
|
+
const current = await readAvatars("/api/avatars/get", { handle, full: "1" });
|
|
126
|
+
profile = mergeProfile(current.profile, patch);
|
|
127
|
+
subjectChanged = profile.subjectDescription !== current.profile.subjectDescription;
|
|
128
|
+
}
|
|
129
|
+
const body = {
|
|
130
|
+
handle,
|
|
131
|
+
...name ? { name } : {},
|
|
132
|
+
...newHandle ? { newHandle } : {},
|
|
133
|
+
...profile ? { profile } : {},
|
|
134
|
+
...regenerateSheet ? { regenerateSheet: true } : {}
|
|
135
|
+
};
|
|
136
|
+
const data = await writeAvatars("/api/avatars/update", body);
|
|
137
|
+
writeJson({
|
|
138
|
+
ok: true,
|
|
139
|
+
data,
|
|
140
|
+
hints: updateHints({
|
|
141
|
+
avatar: data.avatar,
|
|
142
|
+
subjectChanged,
|
|
143
|
+
regeneratedSheet: regenerateSheet,
|
|
144
|
+
previousHandle: handle
|
|
145
|
+
})
|
|
146
|
+
});
|
|
147
|
+
} catch (err) {
|
|
148
|
+
failAvatarApi(err, handle);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
export {
|
|
153
|
+
updateCommand
|
|
154
|
+
};
|
|
155
|
+
//# sourceMappingURL=update-MF7LY2OT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/avatars/update.ts"],"sourcesContent":["import {\n AVATAR_HANDLE_PATTERN,\n type AvatarDetail,\n type AvatarsUpdateRequest,\n type AvatarsUpdateResponse,\n} from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { updateHints } from \"./casting.ts\";\nimport { failAvatarApi, failValidation } from \"./failures.ts\";\nimport { buildProfilePatch, hasProfileEdit, mergeProfile } from \"./profile.ts\";\nimport { readAvatars, writeAvatars } from \"./transport.ts\";\n\ninterface UpdateArgs {\n handle: string;\n name?: string;\n newHandle?: string;\n regenerateSheet: boolean;\n patch: ReturnType<typeof buildProfilePatch>;\n}\n\n/** Read and reject the flags before any network call. Exits on a bad edit. */\nfunction readUpdateArgs(args: Record<string, unknown>): UpdateArgs {\n const handle = ((args.handle as string | undefined) || (args[\"avatar-handle\"] as string | undefined))?.trim();\n if (!handle) {\n failValidation('An avatar handle is required, e.g. `baker avatars update marta --persona \"…\"`.');\n }\n\n const name = (args.name as string | undefined)?.trim();\n const newHandle = (args[\"new-handle\"] as string | undefined)?.trim().toLowerCase();\n const regenerateSheet = Boolean(args[\"regenerate-sheet\"]);\n const patch = buildProfilePatch(args);\n\n if (patch.subjectDescription === \"\") {\n failValidation(\n \"--subject cannot be emptied: it is what the identity sheet was built from. Replace it with a new description of the same length or better, and pass --regenerate-sheet.\",\n );\n }\n if (newHandle && !AVATAR_HANDLE_PATTERN.test(newHandle)) {\n failValidation(\n `--new-handle \"${newHandle}\" is not usable. Use lowercase letters, numbers and dashes, starting with a letter.`,\n );\n }\n if (!name && !newHandle && !hasProfileEdit(patch) && !regenerateSheet) {\n failValidation(\n \"Nothing to change. Pass at least one of --name, --new-handle, --subject, --persona, --speech, --motion, --wardrobe, --setting, --accent, --guardrails, --regenerate-sheet.\",\n );\n }\n\n return { handle, name, newHandle, regenerateSheet, patch };\n}\n\nregisterSchema({\n command: \"avatars.update\",\n description:\n 'Edit an avatar: rename it, change its handle, rewrite any part of its written profile, set the accent it speaks with, or rebuild its identity sheet. Profile flags are merged over what is stored, so `--persona \"…\"` alone leaves the subject description intact. THE RULE THAT MATTERS: if you change --subject, pass --regenerate-sheet in the same call — otherwise the sheet still shows the person you described before, the words and the face stop matching, and every render drifts. Rebuilding is a ~30s billed render and puts the avatar back to `generating`.',\n args: {\n handle: { type: \"string\", description: \"Handle of the avatar to edit\", required: true },\n name: { type: \"string\", description: \"New display name\", required: false },\n \"new-handle\": { type: \"string\", description: \"New mention handle (lowercase, dashes)\", required: false },\n subject: {\n type: \"string\",\n description: \"Rewrite the identity description. Pass --regenerate-sheet with it, always.\",\n required: false,\n },\n persona: { type: \"string\", description: \"Who they are on camera\", required: false },\n speech: { type: \"string\", description: \"How they speak\", required: false },\n motion: { type: \"string\", description: \"Body language in video\", required: false },\n wardrobe: { type: \"string\", description: \"Default outfit\", required: false },\n setting: { type: \"string\", description: \"Default surroundings\", required: false },\n guardrails: {\n type: \"string\",\n description: \"Comma-separated things they must never do (replaces the stored list; empty string clears it)\",\n required: false,\n },\n accent: {\n type: \"string\",\n description:\n \"Where their voice is FROM, as a place: 'Spanish from Spain, Madrid accent', 'Mexican Spanish'. THE lever for how they sound — an avatar has no pinned voice (ADR 0005), so the region directed in the prompt is the only thing steering pronunciation. An adjective like 'clear Spanish accent' is read as NO accent and the clip comes out sounding like nowhere.\",\n required: false,\n },\n \"regenerate-sheet\": {\n type: \"boolean\",\n description: \"Rebuild the identity sheet (~30s, billed). Required whenever --subject changed.\",\n required: false,\n default: false,\n },\n },\n});\n\nexport const updateCommand = defineCommand({\n meta: {\n name: \"update\",\n description:\n 'Edit an avatar; profile flags merge over what is stored. Example: baker avatars update marta --subject \"woman in her early 50s, silver bob\" --regenerate-sheet',\n },\n args: {\n handle: { type: \"positional\", description: \"Handle of the avatar to edit\", required: false },\n \"avatar-handle\": { type: \"string\", description: \"Handle (alternative to positional)\", required: false },\n name: { type: \"string\", description: \"New display name\", required: false },\n \"new-handle\": { type: \"string\", description: \"New mention handle\", required: false },\n subject: { type: \"string\", description: \"Rewrite the identity description\", required: false },\n persona: { type: \"string\", description: \"Who they are on camera\", required: false },\n speech: { type: \"string\", description: \"How they speak\", required: false },\n motion: { type: \"string\", description: \"Body language in video\", required: false },\n wardrobe: { type: \"string\", description: \"Default outfit\", required: false },\n setting: { type: \"string\", description: \"Default surroundings\", required: false },\n guardrails: { type: \"string\", description: \"Comma-separated rules (empty string clears)\", required: false },\n accent: { type: \"string\", description: \"Where their voice is FROM, as a place\", required: false },\n \"regenerate-sheet\": {\n type: \"boolean\",\n description: \"Rebuild the identity sheet (~30s, billed)\",\n required: false,\n default: false,\n },\n },\n run: async ({ args }) => {\n const { handle, name, newHandle, regenerateSheet, patch } = readUpdateArgs(args);\n\n try {\n let profile: AvatarsUpdateRequest[\"profile\"];\n let subjectChanged = false;\n if (hasProfileEdit(patch)) {\n // The API replaces the profile wholesale, so read the stored one and\n // merge — otherwise editing one field silently drops the rest.\n const current = await readAvatars<AvatarDetail>(\"/api/avatars/get\", { handle, full: \"1\" });\n profile = mergeProfile(current.profile, patch);\n subjectChanged = profile.subjectDescription !== current.profile.subjectDescription;\n }\n\n const body: AvatarsUpdateRequest = {\n handle,\n ...(name ? { name } : {}),\n ...(newHandle ? { newHandle } : {}),\n ...(profile ? { profile } : {}),\n ...(regenerateSheet ? { regenerateSheet: true } : {}),\n };\n\n const data = await writeAvatars<AvatarsUpdateResponse>(\"/api/avatars/update\", body);\n writeJson({\n ok: true,\n data,\n hints: updateHints({\n avatar: data.avatar,\n subjectChanged,\n regeneratedSheet: regenerateSheet,\n previousHandle: handle,\n }),\n });\n } catch (err) {\n failAvatarApi(err, handle);\n }\n },\n});\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import {
|
|
2
|
+
runVideoIngest
|
|
3
|
+
} from "./chunk-EI5QN4UO.js";
|
|
4
|
+
import "./chunk-FKOECEVC.js";
|
|
5
|
+
import {
|
|
6
|
+
detectVideoContentType,
|
|
7
|
+
uploadLocalVideo
|
|
8
|
+
} from "./chunk-XIY7P54H.js";
|
|
9
|
+
import "./chunk-W4SA4CMR.js";
|
|
10
|
+
import "./chunk-O6XZIQXZ.js";
|
|
11
|
+
import "./chunk-GXDLWBOY.js";
|
|
12
|
+
import "./chunk-GIWHHCD6.js";
|
|
13
|
+
import "./chunk-UI6BKYQD.js";
|
|
14
|
+
import "./chunk-I2DNBEV6.js";
|
|
15
|
+
import {
|
|
16
|
+
ApiError
|
|
17
|
+
} from "./chunk-CUL3VB4L.js";
|
|
18
|
+
import "./chunk-6YYSUISH.js";
|
|
19
|
+
import "./chunk-I4FTS5EE.js";
|
|
20
|
+
import {
|
|
21
|
+
registerSchema,
|
|
22
|
+
writeJson
|
|
23
|
+
} from "./chunk-MYTDK3AL.js";
|
|
24
|
+
import "./chunk-YQSBHWOI.js";
|
|
25
|
+
|
|
26
|
+
// src/commands/videos/upload.ts
|
|
27
|
+
import { stat } from "fs/promises";
|
|
28
|
+
import { basename } from "path";
|
|
29
|
+
import { defineCommand } from "citty";
|
|
30
|
+
registerSchema({
|
|
31
|
+
command: "videos.upload",
|
|
32
|
+
description: "Upload a video to Baker \u2014 a local file (via Mux direct upload) or a remote http(s) URL.",
|
|
33
|
+
args: {
|
|
34
|
+
file: { type: "string", description: "Local video file path, or a remote http(s) URL", required: true },
|
|
35
|
+
"content-type": {
|
|
36
|
+
type: "string",
|
|
37
|
+
description: "MIME type (auto-detected from extension if omitted)",
|
|
38
|
+
required: false
|
|
39
|
+
},
|
|
40
|
+
context: {
|
|
41
|
+
type: "string",
|
|
42
|
+
description: "What this clip is and what it is for. Feeds the analysis, so it is the single highest-leverage flag here. Example: --context 'Customer testimonial from Maria, shot on her phone for the Q3 retargeting push'",
|
|
43
|
+
required: false
|
|
44
|
+
},
|
|
45
|
+
"dry-run": {
|
|
46
|
+
type: "boolean",
|
|
47
|
+
description: "Preview the operation without executing",
|
|
48
|
+
required: false,
|
|
49
|
+
default: false
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
function isRemoteUrl(value) {
|
|
54
|
+
return /^https?:\/\//i.test(value);
|
|
55
|
+
}
|
|
56
|
+
var uploadCommand = defineCommand({
|
|
57
|
+
meta: {
|
|
58
|
+
name: "upload",
|
|
59
|
+
description: "Upload a video to Baker \u2014 accepts a local file path OR a remote http(s) URL.\n\nLocal: auto-detects content type and uploads via Mux direct upload.\nRemote: hands off to `videos ingest` (direct fetch, or download-then-upload for a YouTube/TikTok/Vimeo page).\n\nExamples:\n baker videos upload ./demo.mp4\n baker videos upload https://www.youtube.com/watch?v=abc123"
|
|
60
|
+
},
|
|
61
|
+
args: {
|
|
62
|
+
file: { type: "positional", description: "Local video file path or remote http(s) URL", required: false },
|
|
63
|
+
"content-type": { type: "string", description: "MIME type (local only \u2014 auto-detected)", required: false },
|
|
64
|
+
context: {
|
|
65
|
+
type: "string",
|
|
66
|
+
description: "What this clip is and what it is for \u2014 who is on camera, which campaign, how it was shot. Start here: the analysis reads it, so it is what makes the clip findable later.",
|
|
67
|
+
required: false
|
|
68
|
+
},
|
|
69
|
+
source: { type: "string", description: "Provenance (URL mode only): url | youtube", required: false },
|
|
70
|
+
"external-id": { type: "string", description: "Provider asset id (URL mode only)", required: false },
|
|
71
|
+
"external-url": { type: "string", description: "Canonical page URL (URL mode only)", required: false },
|
|
72
|
+
"dry-run": { type: "boolean", description: "Preview without executing", required: false, default: false }
|
|
73
|
+
},
|
|
74
|
+
run: async ({ args }) => {
|
|
75
|
+
try {
|
|
76
|
+
const filePath = args.file;
|
|
77
|
+
if (!filePath) {
|
|
78
|
+
writeJson({ ok: false, error: { code: "VALIDATION_ERROR", message: "File path or URL is required" } });
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
if (isRemoteUrl(filePath)) {
|
|
82
|
+
await runVideoIngest({
|
|
83
|
+
url: filePath,
|
|
84
|
+
source: args.source,
|
|
85
|
+
externalId: args["external-id"],
|
|
86
|
+
externalUrl: args["external-url"],
|
|
87
|
+
context: args.context,
|
|
88
|
+
dryRun: args["dry-run"] === true
|
|
89
|
+
});
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
const contentType = args["content-type"] || detectVideoContentType(filePath);
|
|
93
|
+
const descriptionContext = args.context;
|
|
94
|
+
if (args["dry-run"]) {
|
|
95
|
+
const fileStats = await stat(filePath);
|
|
96
|
+
const originalFilename = basename(filePath);
|
|
97
|
+
writeJson({
|
|
98
|
+
ok: true,
|
|
99
|
+
dryRun: true,
|
|
100
|
+
operation: "videos.upload",
|
|
101
|
+
params: { file: filePath, contentType, sizeBytes: fileStats.size, originalFilename, descriptionContext }
|
|
102
|
+
});
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
const { videoId } = await uploadLocalVideo({ file: filePath, contentType, descriptionContext });
|
|
106
|
+
writeJson({
|
|
107
|
+
ok: true,
|
|
108
|
+
data: { videoId },
|
|
109
|
+
hints: descriptionContext ? void 0 : [
|
|
110
|
+
"No --context given. Analysis runs on the frames and audio alone, so who is on camera and which campaign this belongs to will be guessed. Pass --context next time."
|
|
111
|
+
]
|
|
112
|
+
});
|
|
113
|
+
} catch (err) {
|
|
114
|
+
if (err instanceof ApiError) {
|
|
115
|
+
writeJson({ ok: false, error: { code: err.code, message: err.message } });
|
|
116
|
+
process.exit(1);
|
|
117
|
+
}
|
|
118
|
+
writeJson({ ok: false, error: { code: "INTERNAL_ERROR", message: "Unexpected error" } });
|
|
119
|
+
process.exit(1);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
export {
|
|
124
|
+
uploadCommand
|
|
125
|
+
};
|
|
126
|
+
//# sourceMappingURL=upload-DDPI7KJV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/videos/upload.ts"],"sourcesContent":["import { stat } from \"node:fs/promises\";\nimport { basename } from \"node:path\";\nimport { defineCommand } from \"citty\";\nimport { ApiError } from \"../../client.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { detectVideoContentType, uploadLocalVideo } from \"./api.ts\";\nimport { runVideoIngest } from \"./ingest.ts\";\n\nregisterSchema({\n command: \"videos.upload\",\n description: \"Upload a video to Baker — a local file (via Mux direct upload) or a remote http(s) URL.\",\n args: {\n file: { type: \"string\", description: \"Local video file path, or a remote http(s) URL\", required: true },\n \"content-type\": {\n type: \"string\",\n description: \"MIME type (auto-detected from extension if omitted)\",\n required: false,\n },\n context: {\n type: \"string\",\n description:\n \"What this clip is and what it is for. Feeds the analysis, so it is the single highest-leverage flag here. Example: --context 'Customer testimonial from Maria, shot on her phone for the Q3 retargeting push'\",\n required: false,\n },\n \"dry-run\": {\n type: \"boolean\",\n description: \"Preview the operation without executing\",\n required: false,\n default: false,\n },\n },\n});\n\nfunction isRemoteUrl(value: string): boolean {\n return /^https?:\\/\\//i.test(value);\n}\n\nexport const uploadCommand = defineCommand({\n meta: {\n name: \"upload\",\n description:\n \"Upload a video to Baker — accepts a local file path OR a remote http(s) URL.\\n\\nLocal: auto-detects content type and uploads via Mux direct upload.\\nRemote: hands off to `videos ingest` (direct fetch, or download-then-upload for a YouTube/TikTok/Vimeo page).\\n\\nExamples:\\n baker videos upload ./demo.mp4\\n baker videos upload https://www.youtube.com/watch?v=abc123\",\n },\n args: {\n file: { type: \"positional\", description: \"Local video file path or remote http(s) URL\", required: false },\n \"content-type\": { type: \"string\", description: \"MIME type (local only — auto-detected)\", required: false },\n context: {\n type: \"string\",\n description:\n \"What this clip is and what it is for — who is on camera, which campaign, how it was shot. Start here: the analysis reads it, so it is what makes the clip findable later.\",\n required: false,\n },\n source: { type: \"string\", description: \"Provenance (URL mode only): url | youtube\", required: false },\n \"external-id\": { type: \"string\", description: \"Provider asset id (URL mode only)\", required: false },\n \"external-url\": { type: \"string\", description: \"Canonical page URL (URL mode only)\", required: false },\n \"dry-run\": { type: \"boolean\", description: \"Preview without executing\", required: false, default: false },\n },\n run: async ({ args }) => {\n try {\n const filePath = args.file as string | undefined;\n if (!filePath) {\n writeJson({ ok: false, error: { code: \"VALIDATION_ERROR\", message: \"File path or URL is required\" } });\n process.exit(1);\n }\n\n // A URL is the ingest command's job — same routing `images upload` does, so\n // one verb covers both and a pasted link never fails with ENOENT.\n if (isRemoteUrl(filePath)) {\n // Every option this verb shares with `ingest` is forwarded. `--context`\n // in particular: both commands call it the highest-leverage flag, and\n // dropping it here meant a pasted link was analysed with strictly less\n // to go on than the same file uploaded by hand — silently, since no\n // error fired and the \"no context given\" hint did not either.\n await runVideoIngest({\n url: filePath,\n source: args.source as string | undefined,\n externalId: args[\"external-id\"] as string | undefined,\n externalUrl: args[\"external-url\"] as string | undefined,\n context: args.context as string | undefined,\n dryRun: args[\"dry-run\"] === true,\n });\n return;\n }\n\n const contentType = (args[\"content-type\"] as string | undefined) || detectVideoContentType(filePath);\n const descriptionContext = args.context as string | undefined;\n\n if (args[\"dry-run\"]) {\n const fileStats = await stat(filePath);\n const originalFilename = basename(filePath);\n writeJson({\n ok: true,\n dryRun: true,\n operation: \"videos.upload\",\n params: { file: filePath, contentType, sizeBytes: fileStats.size, originalFilename, descriptionContext },\n });\n return;\n }\n\n const { videoId } = await uploadLocalVideo({ file: filePath, contentType, descriptionContext });\n\n writeJson({\n ok: true,\n data: { videoId },\n hints: descriptionContext\n ? undefined\n : [\n \"No --context given. Analysis runs on the frames and audio alone, so who is on camera and which campaign this belongs to will be guessed. Pass --context next time.\",\n ],\n });\n } catch (err) {\n if (err instanceof ApiError) {\n writeJson({ ok: false, error: { code: err.code, message: err.message } });\n process.exit(1);\n }\n writeJson({ ok: false, error: { code: \"INTERNAL_ERROR\", message: \"Unexpected error\" } });\n process.exit(1);\n }\n },\n});\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import {
|
|
2
|
+
detectImageContentType,
|
|
3
|
+
uploadLocalImage
|
|
4
|
+
} from "./chunk-AG62YO7C.js";
|
|
5
|
+
import {
|
|
6
|
+
ApiError,
|
|
7
|
+
apiPost
|
|
8
|
+
} from "./chunk-CUL3VB4L.js";
|
|
9
|
+
import "./chunk-6YYSUISH.js";
|
|
10
|
+
import "./chunk-I4FTS5EE.js";
|
|
11
|
+
import {
|
|
12
|
+
registerSchema,
|
|
13
|
+
writeJson
|
|
14
|
+
} from "./chunk-MYTDK3AL.js";
|
|
15
|
+
import "./chunk-YQSBHWOI.js";
|
|
16
|
+
|
|
17
|
+
// src/commands/images/upload.ts
|
|
18
|
+
import { defineCommand } from "citty";
|
|
19
|
+
registerSchema({
|
|
20
|
+
command: "images.upload",
|
|
21
|
+
description: "Upload an image to the library \u2014 local file path or remote http(s) URL.",
|
|
22
|
+
args: {
|
|
23
|
+
file: { type: "string", description: "Local file path or remote http(s) URL", required: true },
|
|
24
|
+
source: { type: "string", description: "Source identifier (default: uploaded)", required: false },
|
|
25
|
+
"content-type": {
|
|
26
|
+
type: "string",
|
|
27
|
+
description: "MIME type (local files only \u2014 auto-detected from extension if omitted; ignored for URLs)",
|
|
28
|
+
required: false
|
|
29
|
+
},
|
|
30
|
+
"external-id": {
|
|
31
|
+
type: "string",
|
|
32
|
+
description: "Provider asset id (URL mode only \u2014 enables per-source dedup before bytes are fetched)",
|
|
33
|
+
required: false
|
|
34
|
+
},
|
|
35
|
+
"external-url": {
|
|
36
|
+
type: "string",
|
|
37
|
+
description: "Canonical page URL (URL mode only \u2014 parent page for scraped/Google hits, provider page for stock)",
|
|
38
|
+
required: false
|
|
39
|
+
},
|
|
40
|
+
"dry-run": {
|
|
41
|
+
type: "boolean",
|
|
42
|
+
description: "Preview the operation without executing",
|
|
43
|
+
required: false,
|
|
44
|
+
default: false
|
|
45
|
+
},
|
|
46
|
+
context: {
|
|
47
|
+
type: "string",
|
|
48
|
+
description: "Free-text hint passed to Gemini describe to bias the generated description and tags",
|
|
49
|
+
required: false
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
function isRemoteUrl(value) {
|
|
54
|
+
return /^https?:\/\//i.test(value);
|
|
55
|
+
}
|
|
56
|
+
var uploadCommand = defineCommand({
|
|
57
|
+
meta: {
|
|
58
|
+
name: "upload",
|
|
59
|
+
description: "Upload an image to the library \u2014 accepts a local file path OR a remote http(s) URL.\n\nLocal: reads bytes, sends to /api/images/upload, content-type auto-detected from extension.\nRemote: dispatches to /api/images/ingest with hash-dedup on bytes + externalId.\n\nExamples:\n baker images upload ./logo.png --source uploaded\n baker images upload ./cert.png --context 'ISO 27001 badge \u2014 enterprise tier'\n baker images upload https://acme.com/hero.png --source firecrawl --context 'Acme competitor pricing hero'"
|
|
60
|
+
},
|
|
61
|
+
args: {
|
|
62
|
+
file: { type: "positional", description: "Local file path or remote http(s) URL", required: false },
|
|
63
|
+
source: { type: "string", description: "Source identifier", required: false },
|
|
64
|
+
"content-type": {
|
|
65
|
+
type: "string",
|
|
66
|
+
description: "MIME type (local only \u2014 auto-detected if omitted)",
|
|
67
|
+
required: false
|
|
68
|
+
},
|
|
69
|
+
"external-id": { type: "string", description: "Provider asset id (URL mode only)", required: false },
|
|
70
|
+
"external-url": { type: "string", description: "Canonical page URL (URL mode only)", required: false },
|
|
71
|
+
"dry-run": { type: "boolean", description: "Preview without executing", required: false, default: false },
|
|
72
|
+
context: { type: "string", description: "Description context hint", required: false }
|
|
73
|
+
},
|
|
74
|
+
run: async ({ args }) => {
|
|
75
|
+
try {
|
|
76
|
+
const target = args.file;
|
|
77
|
+
if (!target) {
|
|
78
|
+
writeJson({
|
|
79
|
+
ok: false,
|
|
80
|
+
error: { code: "VALIDATION_ERROR", message: "File path or URL is required" }
|
|
81
|
+
});
|
|
82
|
+
process.exit(1);
|
|
83
|
+
}
|
|
84
|
+
if (isRemoteUrl(target)) {
|
|
85
|
+
await uploadRemote(target, args);
|
|
86
|
+
} else {
|
|
87
|
+
await uploadLocal(target, args);
|
|
88
|
+
}
|
|
89
|
+
} catch (err) {
|
|
90
|
+
if (err instanceof ApiError) {
|
|
91
|
+
writeJson({ ok: false, error: { code: err.code, message: err.message } });
|
|
92
|
+
process.exit(1);
|
|
93
|
+
}
|
|
94
|
+
writeJson({ ok: false, error: { code: "INTERNAL_ERROR", message: "Unexpected error" } });
|
|
95
|
+
process.exit(1);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
async function uploadRemote(target, args) {
|
|
100
|
+
const source = args.source ?? "uploaded";
|
|
101
|
+
if (args["dry-run"]) {
|
|
102
|
+
writeJson({
|
|
103
|
+
ok: true,
|
|
104
|
+
dryRun: true,
|
|
105
|
+
operation: "images.upload (remote)",
|
|
106
|
+
params: {
|
|
107
|
+
url: target,
|
|
108
|
+
source,
|
|
109
|
+
externalId: args["external-id"] ?? null,
|
|
110
|
+
externalUrl: args["external-url"] ?? null,
|
|
111
|
+
descriptionContext: args.context ?? null
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
const body = { url: target, source };
|
|
117
|
+
if (args["external-id"]) body.externalId = args["external-id"];
|
|
118
|
+
if (args["external-url"]) body.externalUrl = args["external-url"];
|
|
119
|
+
if (args.context) body.descriptionContext = args.context;
|
|
120
|
+
const data = await apiPost("/api/images/ingest", body);
|
|
121
|
+
writeJson({ ok: true, data });
|
|
122
|
+
}
|
|
123
|
+
async function uploadLocal(target, args) {
|
|
124
|
+
const contentType = args["content-type"] || detectImageContentType(target);
|
|
125
|
+
if (args["dry-run"]) {
|
|
126
|
+
writeJson({
|
|
127
|
+
ok: true,
|
|
128
|
+
dryRun: true,
|
|
129
|
+
operation: "images.upload (local)",
|
|
130
|
+
params: {
|
|
131
|
+
file: target,
|
|
132
|
+
contentType,
|
|
133
|
+
source: args.source ?? null,
|
|
134
|
+
descriptionContext: args.context ?? null
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
const data = await uploadLocalImage({
|
|
140
|
+
file: target,
|
|
141
|
+
contentType,
|
|
142
|
+
source: args.source,
|
|
143
|
+
descriptionContext: args.context
|
|
144
|
+
});
|
|
145
|
+
writeJson({ ok: true, data });
|
|
146
|
+
}
|
|
147
|
+
export {
|
|
148
|
+
uploadCommand
|
|
149
|
+
};
|
|
150
|
+
//# sourceMappingURL=upload-IWFYKD7A.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/images/upload.ts"],"sourcesContent":["import type { ImagesIngestRequest, ImagesIngestResponse } from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { ApiError, apiPost } from \"../../client.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { detectImageContentType, uploadLocalImage } from \"./api.ts\";\n\nregisterSchema({\n command: \"images.upload\",\n description: \"Upload an image to the library — local file path or remote http(s) URL.\",\n args: {\n file: { type: \"string\", description: \"Local file path or remote http(s) URL\", required: true },\n source: { type: \"string\", description: \"Source identifier (default: uploaded)\", required: false },\n \"content-type\": {\n type: \"string\",\n description: \"MIME type (local files only — auto-detected from extension if omitted; ignored for URLs)\",\n required: false,\n },\n \"external-id\": {\n type: \"string\",\n description: \"Provider asset id (URL mode only — enables per-source dedup before bytes are fetched)\",\n required: false,\n },\n \"external-url\": {\n type: \"string\",\n description: \"Canonical page URL (URL mode only — parent page for scraped/Google hits, provider page for stock)\",\n required: false,\n },\n \"dry-run\": {\n type: \"boolean\",\n description: \"Preview the operation without executing\",\n required: false,\n default: false,\n },\n context: {\n type: \"string\",\n description: \"Free-text hint passed to Gemini describe to bias the generated description and tags\",\n required: false,\n },\n },\n});\n\nfunction isRemoteUrl(value: string): boolean {\n return /^https?:\\/\\//i.test(value);\n}\n\nexport const uploadCommand = defineCommand({\n meta: {\n name: \"upload\",\n description:\n \"Upload an image to the library — accepts a local file path OR a remote http(s) URL.\\n\\nLocal: reads bytes, sends to /api/images/upload, content-type auto-detected from extension.\\nRemote: dispatches to /api/images/ingest with hash-dedup on bytes + externalId.\\n\\nExamples:\\n baker images upload ./logo.png --source uploaded\\n baker images upload ./cert.png --context 'ISO 27001 badge — enterprise tier'\\n baker images upload https://acme.com/hero.png --source firecrawl --context 'Acme competitor pricing hero'\",\n },\n args: {\n file: { type: \"positional\", description: \"Local file path or remote http(s) URL\", required: false },\n source: { type: \"string\", description: \"Source identifier\", required: false },\n \"content-type\": {\n type: \"string\",\n description: \"MIME type (local only — auto-detected if omitted)\",\n required: false,\n },\n \"external-id\": { type: \"string\", description: \"Provider asset id (URL mode only)\", required: false },\n \"external-url\": { type: \"string\", description: \"Canonical page URL (URL mode only)\", required: false },\n \"dry-run\": { type: \"boolean\", description: \"Preview without executing\", required: false, default: false },\n context: { type: \"string\", description: \"Description context hint\", required: false },\n },\n run: async ({ args }) => {\n try {\n const target = args.file as string | undefined;\n if (!target) {\n writeJson({\n ok: false,\n error: { code: \"VALIDATION_ERROR\", message: \"File path or URL is required\" },\n });\n process.exit(1);\n }\n\n if (isRemoteUrl(target)) {\n await uploadRemote(target, args);\n } else {\n await uploadLocal(target, args);\n }\n } catch (err) {\n if (err instanceof ApiError) {\n writeJson({ ok: false, error: { code: err.code, message: err.message } });\n process.exit(1);\n }\n writeJson({ ok: false, error: { code: \"INTERNAL_ERROR\", message: \"Unexpected error\" } });\n process.exit(1);\n }\n },\n});\n\ntype UploadArgs = Record<string, unknown>;\n\nasync function uploadRemote(target: string, args: UploadArgs): Promise<void> {\n const source = (args.source as string | undefined) ?? \"uploaded\";\n\n if (args[\"dry-run\"]) {\n writeJson({\n ok: true,\n dryRun: true,\n operation: \"images.upload (remote)\",\n params: {\n url: target,\n source,\n externalId: args[\"external-id\"] ?? null,\n externalUrl: args[\"external-url\"] ?? null,\n descriptionContext: args.context ?? null,\n },\n });\n return;\n }\n\n const body: ImagesIngestRequest = { url: target, source: source as ImagesIngestRequest[\"source\"] };\n if (args[\"external-id\"]) body.externalId = args[\"external-id\"] as string;\n if (args[\"external-url\"]) body.externalUrl = args[\"external-url\"] as string;\n if (args.context) body.descriptionContext = args.context as string;\n\n const data = await apiPost<ImagesIngestResponse>(\"/api/images/ingest\", body);\n writeJson({ ok: true, data });\n}\n\nasync function uploadLocal(target: string, args: UploadArgs): Promise<void> {\n const contentType = (args[\"content-type\"] as string | undefined) || detectImageContentType(target);\n\n if (args[\"dry-run\"]) {\n writeJson({\n ok: true,\n dryRun: true,\n operation: \"images.upload (local)\",\n params: {\n file: target,\n contentType,\n source: args.source ?? null,\n descriptionContext: args.context ?? null,\n },\n });\n return;\n }\n\n const data = await uploadLocalImage({\n file: target,\n contentType,\n source: args.source as string | undefined,\n descriptionContext: args.context as string | undefined,\n });\n writeJson({ ok: true, data });\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ApiError,
|
|
3
|
+
apiGet,
|
|
4
|
+
apiPost
|
|
5
|
+
} from "./chunk-CUL3VB4L.js";
|
|
6
|
+
import "./chunk-6YYSUISH.js";
|
|
7
|
+
import "./chunk-I4FTS5EE.js";
|
|
8
|
+
import {
|
|
9
|
+
registerSchema,
|
|
10
|
+
writeJson
|
|
11
|
+
} from "./chunk-MYTDK3AL.js";
|
|
12
|
+
import "./chunk-YQSBHWOI.js";
|
|
13
|
+
|
|
14
|
+
// src/commands/images/upscale.ts
|
|
15
|
+
import { defineCommand } from "citty";
|
|
16
|
+
registerSchema({
|
|
17
|
+
command: "images.upscale",
|
|
18
|
+
description: "Upscale a library image via the backend (Replicate, cost-tracked). Waits for completion by default. The image must be status 'ready' and raster (not SVG/AVIF).",
|
|
19
|
+
args: {
|
|
20
|
+
"image-id": { type: "string", description: "Library image ID to upscale", required: true },
|
|
21
|
+
"max-wait": {
|
|
22
|
+
type: "number",
|
|
23
|
+
description: "Max wait ms (default 120000 = 2 min). Set 0 to fire-and-forget.",
|
|
24
|
+
required: false,
|
|
25
|
+
default: 12e4
|
|
26
|
+
},
|
|
27
|
+
remove: {
|
|
28
|
+
type: "boolean",
|
|
29
|
+
description: "Drop the upscaled copy and go back to the original instead (free, applies immediately)",
|
|
30
|
+
required: false,
|
|
31
|
+
default: false
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
var POLL_INTERVAL_MS = 1500;
|
|
36
|
+
var upscaleCommand = defineCommand({
|
|
37
|
+
meta: {
|
|
38
|
+
name: "upscale",
|
|
39
|
+
description: "Upscale a library image via the Convex backend (Replicate, cost-tracked at $0.05/image). Waits for completion by default.\n\nExample: baker images upscale j571abc123def\nExample: baker images upscale j571abc123def --max-wait 0 # fire-and-forget\nExample: baker images upscale j571abc123def --remove # back to the original"
|
|
40
|
+
},
|
|
41
|
+
args: {
|
|
42
|
+
"image-id": { type: "positional", description: "Library image ID", required: false },
|
|
43
|
+
"max-wait": { type: "string", description: "Max wait ms (default 120000, 0 = no wait)", required: false },
|
|
44
|
+
remove: {
|
|
45
|
+
type: "boolean",
|
|
46
|
+
description: "Drop the upscaled copy and go back to the original instead",
|
|
47
|
+
required: false,
|
|
48
|
+
default: false
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
run: async ({ args }) => {
|
|
52
|
+
try {
|
|
53
|
+
const imageId = args["image-id"];
|
|
54
|
+
if (!imageId) {
|
|
55
|
+
writeJson({ ok: false, error: { code: "VALIDATION_ERROR", message: "image-id is required" } });
|
|
56
|
+
process.exit(1);
|
|
57
|
+
}
|
|
58
|
+
if (args.remove) {
|
|
59
|
+
const data = await apiPost("/api/images/upscale/remove", { id: imageId });
|
|
60
|
+
writeJson({
|
|
61
|
+
ok: true,
|
|
62
|
+
data,
|
|
63
|
+
hints: [
|
|
64
|
+
"Back to the original. Its description is being re-read from the original; already applied \u2014 publishing or discarding this chat does not undo it."
|
|
65
|
+
]
|
|
66
|
+
});
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const maxWait = args["max-wait"] ? Number(args["max-wait"]) : 12e4;
|
|
70
|
+
await apiPost("/api/images/upscale", { imageId });
|
|
71
|
+
if (maxWait === 0) {
|
|
72
|
+
writeJson({ ok: true, data: { imageId, status: "processing" } });
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
const start = Date.now();
|
|
76
|
+
while (Date.now() - start < maxWait) {
|
|
77
|
+
const doc = await apiGet("/api/images/get", { id: imageId });
|
|
78
|
+
if (doc.upscaleConfig?.status === "completed") {
|
|
79
|
+
writeJson({ ok: true, data: { imageId, status: "completed", image: doc } });
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
if (!doc.upscaleConfig) {
|
|
83
|
+
writeJson({
|
|
84
|
+
ok: false,
|
|
85
|
+
error: { code: "IMAGE_PROCESSING_ERROR", message: "Upscale failed" }
|
|
86
|
+
});
|
|
87
|
+
process.exit(1);
|
|
88
|
+
}
|
|
89
|
+
await new Promise((resolve) => setTimeout(resolve, POLL_INTERVAL_MS));
|
|
90
|
+
}
|
|
91
|
+
writeJson({ ok: false, error: { code: "TIMEOUT", message: `Image not ready within ${maxWait}ms` } });
|
|
92
|
+
process.exit(1);
|
|
93
|
+
} catch (err) {
|
|
94
|
+
if (err instanceof ApiError) {
|
|
95
|
+
writeJson({ ok: false, error: { code: err.code, message: err.message } });
|
|
96
|
+
process.exit(1);
|
|
97
|
+
}
|
|
98
|
+
writeJson({
|
|
99
|
+
ok: false,
|
|
100
|
+
error: { code: "INTERNAL_ERROR", message: err instanceof Error ? err.message : "Unexpected error" }
|
|
101
|
+
});
|
|
102
|
+
process.exit(1);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
export {
|
|
107
|
+
upscaleCommand
|
|
108
|
+
};
|
|
109
|
+
//# sourceMappingURL=upscale-EYCEYRWE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/images/upscale.ts"],"sourcesContent":["import type { ImageDoc, ImagesUpscaleRemoveResponse, ImagesUpscaleResponse } from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { ApiError, apiGet, apiPost } from \"../../client.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\n\nregisterSchema({\n command: \"images.upscale\",\n description:\n \"Upscale a library image via the backend (Replicate, cost-tracked). Waits for completion by default. The image must be status 'ready' and raster (not SVG/AVIF).\",\n args: {\n \"image-id\": { type: \"string\", description: \"Library image ID to upscale\", required: true },\n \"max-wait\": {\n type: \"number\",\n description: \"Max wait ms (default 120000 = 2 min). Set 0 to fire-and-forget.\",\n required: false,\n default: 120000,\n },\n remove: {\n type: \"boolean\",\n description: \"Drop the upscaled copy and go back to the original instead (free, applies immediately)\",\n required: false,\n default: false,\n },\n },\n});\n\nconst POLL_INTERVAL_MS = 1500;\n\nexport const upscaleCommand = defineCommand({\n meta: {\n name: \"upscale\",\n description:\n \"Upscale a library image via the Convex backend (Replicate, cost-tracked at $0.05/image). Waits for completion by default.\\n\\nExample: baker images upscale j571abc123def\\nExample: baker images upscale j571abc123def --max-wait 0 # fire-and-forget\\nExample: baker images upscale j571abc123def --remove # back to the original\",\n },\n args: {\n \"image-id\": { type: \"positional\", description: \"Library image ID\", required: false },\n \"max-wait\": { type: \"string\", description: \"Max wait ms (default 120000, 0 = no wait)\", required: false },\n remove: {\n type: \"boolean\",\n description: \"Drop the upscaled copy and go back to the original instead\",\n required: false,\n default: false,\n },\n },\n run: async ({ args }) => {\n try {\n const imageId = args[\"image-id\"] as string | undefined;\n if (!imageId) {\n writeJson({ ok: false, error: { code: \"VALIDATION_ERROR\", message: \"image-id is required\" } });\n process.exit(1);\n }\n if (args.remove) {\n const data = await apiPost<ImagesUpscaleRemoveResponse>(\"/api/images/upscale/remove\", { id: imageId });\n writeJson({\n ok: true,\n data,\n hints: [\n \"Back to the original. Its description is being re-read from the original; already applied — publishing or discarding this chat does not undo it.\",\n ],\n });\n return;\n }\n const maxWait = args[\"max-wait\"] ? Number(args[\"max-wait\"]) : 120000;\n\n await apiPost<ImagesUpscaleResponse>(\"/api/images/upscale\", { imageId });\n\n if (maxWait === 0) {\n writeJson({ ok: true, data: { imageId, status: \"processing\" } });\n return;\n }\n\n const start = Date.now();\n while (Date.now() - start < maxWait) {\n const doc = await apiGet<ImageDoc>(\"/api/images/get\", { id: imageId });\n if (doc.upscaleConfig?.status === \"completed\") {\n writeJson({ ok: true, data: { imageId, status: \"completed\", image: doc } });\n return;\n }\n // Backend clears upscaleConfig back to undefined on failure instead of an \"error\" status (no such status exists).\n if (!doc.upscaleConfig) {\n writeJson({\n ok: false,\n error: { code: \"IMAGE_PROCESSING_ERROR\", message: \"Upscale failed\" },\n });\n process.exit(1);\n }\n await new Promise((resolve) => setTimeout(resolve, POLL_INTERVAL_MS));\n }\n writeJson({ ok: false, error: { code: \"TIMEOUT\", message: `Image not ready within ${maxWait}ms` } });\n process.exit(1);\n } catch (err) {\n if (err instanceof ApiError) {\n writeJson({ ok: false, error: { code: err.code, message: err.message } });\n process.exit(1);\n }\n writeJson({\n ok: false,\n error: { code: \"INTERNAL_ERROR\", message: err instanceof Error ? err.message : \"Unexpected error\" },\n });\n process.exit(1);\n }\n },\n});\n"],"mappings":"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","names":[]}
|