@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 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/images/download.ts","../src/commands/images/downloadPaths.ts"],"sourcesContent":["import type { ImagesGetResponse } from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { ApiError, apiGet, validateConvexId } from \"../../client.ts\";\nimport { fetchExternalBytes, MAX_REMOTE_IMAGE_BYTES } from \"../../lib/externalFetch.ts\";\nimport { atomicWrite, isDirectory, isRemoteUrl } from \"../../lib/image/io.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport {\n baseNameFromUrl,\n deriveExtension,\n disambiguate,\n resolveDownloadPath,\n sanitizeBaseName,\n} from \"./downloadPaths.ts\";\n\n/**\n * Remote asset → local file.\n *\n * The docs have always described the pipeline as `source → download → normalize\n * → place` and told the agent \"local files only — download remote assets\n * first\", while no download command existed: `normalize` refuses URLs and takes\n * no library ids, and the only URL→disk writer was `crop`, which demands\n * rectangle coordinates. Agents filled the hole with `curl`, hand-assembling\n * media URLs out of JSON responses.\n *\n * Local-only by design, like `normalize` / `crop` / `dimensions` — the bytes go\n * to the sandbox, not through the backend. Library ids resolve through the\n * existing `GET /api/images/get` route, so no new backend surface is needed.\n */\n\nregisterSchema({\n command: \"images.download\",\n description:\n \"Download remote images or library images to local files, so the local transforms (normalize, crop, dimensions) can read them.\",\n args: {\n targets: {\n type: \"string\",\n description:\n \"One or more image URLs and/or library image ids, space- or comma-separated (e.g. 'https://…/logo.webp j57abc123').\",\n required: true,\n },\n out: {\n type: \"string\",\n description:\n \"Output directory (must exist) or, with a single target, an exact file path. Default: the working directory.\",\n required: false,\n },\n },\n});\n\ninterface Target {\n raw: string;\n kind: \"url\" | \"imageId\";\n}\n\ninterface Downloaded {\n input: string;\n output: string;\n bytes: number;\n contentType: string | null;\n}\n\ninterface FailedDownload {\n input: string;\n error: string;\n}\n\nclass ValidationError extends Error {}\n\n/** A target that is neither a URL nor a library id — usually a local path,\n * which needs no download at all. */\nclass UnusableTargetError extends Error {\n constructor(readonly target: string) {\n super(`\"${target}\" is neither an image URL nor a library image id.`);\n }\n}\n\n/** Every positional, each of which may itself be a comma-separated list. */\nfunction readTargets(args: Record<string, unknown>): string[] {\n const positionals = Array.isArray(args._) ? args._ : [];\n const named = typeof args.targets === \"string\" ? [args.targets] : [];\n const all = positionals.length > 0 ? positionals : named;\n const seen = new Set<string>();\n const out: string[] = [];\n for (const value of all) {\n if (typeof value !== \"string\") continue;\n for (const part of value.split(\",\").map((p) => p.trim())) {\n if (part.length > 0 && !seen.has(part)) {\n seen.add(part);\n out.push(part);\n }\n }\n }\n return out;\n}\n\n/** A target is a URL or a library id — nothing else resolves to bytes. */\nfunction classify(raw: string): Target {\n if (isRemoteUrl(raw)) {\n return { raw, kind: \"url\" };\n }\n try {\n validateConvexId(raw);\n } catch {\n throw new UnusableTargetError(raw);\n }\n return { raw, kind: \"imageId\" };\n}\n\ninterface Resolved {\n input: string;\n url: string;\n baseName: string;\n}\n\n/** Turn a target into a fetchable URL plus the stem to name its file after. */\nasync function resolveTarget(target: Target): Promise<Resolved> {\n if (target.kind === \"url\") {\n return { input: target.raw, url: target.raw, baseName: baseNameFromUrl(target.raw) };\n }\n const doc = await apiGet<ImagesGetResponse>(\"/api/images/get\", { id: target.raw });\n // The library row's own name is what the agent searched for; fall back to the\n // id so a nameless row still writes a file it can find again.\n const stem = sanitizeBaseName(doc.name.length > 0 ? doc.name : target.raw);\n return { input: target.raw, url: doc.imageUrl, baseName: stem };\n}\n\nasync function fetchBytes(url: string): Promise<{ buffer: Buffer; contentType: string | null }> {\n // These URLs come straight from agent argv, so the ceiling is not a formality:\n // nothing upstream has looked at where they point or how big they are.\n return await fetchExternalBytes(url, { maxBytes: MAX_REMOTE_IMAGE_BYTES });\n}\n\nconst NEXT_STEP_HINT =\n \"Downloaded files are local paths — the local transforms take them directly: `baker images normalize <file> --color '#FFFFFF' --height 40`, `baker images crop <file> --x … --y … --width … --height …`, `baker images dimensions <file>`. For a landing, page-scoped images belong in `src/pages/{landing}/_images/`.\";\n\n// These two used to explain a 403 as \"the host refuses datacenter IPs, so\n// re-source it\". That was an accurate diagnosis and is now a stale instruction:\n// a refusal is retried from a different exit before this command ever reports\n// one, so a 403 that survives to here has already been answered from more than\n// one address and will not yield to another attempt. The advice is unchanged —\n// move on — but the reason is now \"this host will not serve us\", not \"try\n// somewhere our address is welcome\". Neither string may mention how that was\n// established; the agent has no proxy to reason about and no decision to make\n// about one.\nconst PARTIAL_FAILURE_HINT =\n \"Some targets did not download. Carry on with the ones that did — a missing asset never blocks the rest of the job. Retry a failed URL only if it was a transient 5xx; a 403 means the host will not serve these bytes to anyone but a browser, so re-source it (`baker images extract <page>`) instead.\";\n\nconst ALL_FAILED_FIX = {\n action: \"use_different_resource\",\n explanation:\n \"None of the targets could be downloaded. A 403/404 means the host will not serve these bytes — re-source the asset (`baker images extract <page-url>`, `baker images stock <query>`) or, for a library image, check the row is `ready` with `baker images get <id>`. Do not retry the same URLs in a loop, and do not fall back to `curl` — continue the job with a placeholder if nothing can be fetched.\",\n};\n\n/** Resolve `--out` once: an existing directory, or a trailing slash meaning one. */\nasync function outIsDirectory(out: string | undefined): Promise<boolean> {\n if (!out) return false;\n return out.endsWith(\"/\") || (await isDirectory(out));\n}\n\ninterface DownloadPlan {\n targets: Target[];\n out: string | undefined;\n outIsDir: boolean;\n}\n\nasync function buildPlan(args: Record<string, unknown>): Promise<DownloadPlan> {\n const raw = readTargets(args);\n if (raw.length === 0) {\n throw new ValidationError(\"At least one image URL or library image id is required.\");\n }\n const targets = raw.map(classify);\n const out = typeof args.out === \"string\" && args.out.length > 0 ? args.out : undefined;\n const outIsDir = await outIsDirectory(out);\n if (out && !outIsDir && targets.length > 1) {\n throw new ValidationError(\n `--out must be an existing directory when downloading more than one image (got \"${out}\").`,\n );\n }\n return { targets, out, outIsDir };\n}\n\ninterface FetchedTarget {\n input: string;\n buffer: Buffer;\n contentType: string | null;\n path: string;\n}\n\nfunction failureMessage(err: unknown, fallback: string): string {\n return err instanceof Error ? err.message : fallback;\n}\n\n/**\n * Fetch every target, keeping going past a failure: one unreachable host must\n * not cost the agent the other five assets. Paths are resolved for the whole\n * batch before any write, so collisions can be renamed rather than overwritten.\n */\nasync function runDownloads(plan: DownloadPlan): Promise<{ downloaded: Downloaded[]; failed: FailedDownload[] }> {\n const failed: FailedDownload[] = [];\n const fetched: FetchedTarget[] = [];\n\n for (const target of plan.targets) {\n try {\n const resolved = await resolveTarget(target);\n const { buffer, contentType } = await fetchBytes(resolved.url);\n fetched.push({\n input: resolved.input,\n buffer,\n contentType,\n path: resolveDownloadPath({\n baseName: resolved.baseName,\n extension: deriveExtension(contentType, resolved.url),\n out: plan.out,\n outIsDirectory: plan.outIsDir,\n }),\n });\n } catch (err) {\n failed.push({ input: target.raw, error: failureMessage(err, \"Download failed\") });\n }\n }\n\n const paths = disambiguate(fetched.map((item) => item.path));\n const downloaded: Downloaded[] = [];\n for (const [index, item] of fetched.entries()) {\n const path = paths[index] ?? item.path;\n try {\n await atomicWrite(path, item.buffer);\n downloaded.push({ input: item.input, output: path, bytes: item.buffer.length, contentType: item.contentType });\n } catch (err) {\n failed.push({ input: item.input, error: failureMessage(err, \"Write failed\") });\n }\n }\n return { downloaded, failed };\n}\n\nfunction emitError(err: unknown): never {\n if (err instanceof UnusableTargetError) {\n writeJson({\n ok: false,\n error: {\n code: \"VALIDATION_ERROR\",\n message: err.message,\n fix: {\n action: \"retry_with_changes\",\n explanation:\n \"`download` takes remote image URLs (https://…) and library image ids. A path that is already on disk needs no download — pass it straight to `baker images normalize` / `crop` / `dimensions`. To get a library id, run `baker images library <query>` and read `_id`.\",\n },\n },\n });\n process.exit(1);\n }\n if (err instanceof ValidationError) {\n writeJson({ ok: false, error: { code: \"VALIDATION_ERROR\", message: err.message } });\n process.exit(1);\n }\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\nexport const downloadCommand = defineCommand({\n meta: {\n name: \"download\",\n description:\n \"Download image URLs and/or library images to local files — the missing first half of `source → download → normalize → place`. Never use `curl` for this.\\n\\nExamples:\\n baker images download https://media.withbaker.com/…/logo.webp\\n baker images download j57abc123 j57def456 --out src/pages/pricing/_images/\\n baker images download https://…/hero.png --out ./hero.png\",\n },\n args: {\n targets: { type: \"positional\", description: \"Image URLs and/or library image ids\", required: false },\n out: { type: \"string\", description: \"Output directory (must exist), or exact file path for a single target\" },\n },\n run: async ({ args }) => {\n try {\n const plan = await buildPlan(args as Record<string, unknown>);\n const { downloaded, failed } = await runDownloads(plan);\n\n if (downloaded.length === 0) {\n writeJson({\n ok: false,\n error: {\n code: \"DOWNLOAD_FAILED\",\n message: `None of the ${plan.targets.length} target(s) could be downloaded: ${failed\n .map((f) => `${f.input} (${f.error})`)\n .join(\"; \")}`,\n fix: ALL_FAILED_FIX,\n },\n });\n process.exit(1);\n }\n\n const hints = [NEXT_STEP_HINT, ...(failed.length > 0 ? [PARTIAL_FAILURE_HINT] : [])];\n writeJson({ ok: true, data: { downloaded, failed }, hints });\n } catch (err) {\n emitError(err);\n }\n },\n});\n","/**\n * Where a downloaded asset lands, and what it is called.\n *\n * Split out from the command so the naming rules are testable without a\n * network or a filesystem — the part that decides whether `normalize` can read\n * the file back is the extension, and deriving it from the URL alone is how\n * a `.png` URL serving webp bytes ends up misnamed.\n */\n\nimport { basename, extname, join } from \"node:path\";\n\nconst CONTENT_TYPE_EXTENSIONS: Record<string, string> = {\n \"image/webp\": \".webp\",\n \"image/png\": \".png\",\n \"image/jpeg\": \".jpg\",\n \"image/jpg\": \".jpg\",\n \"image/gif\": \".gif\",\n \"image/svg+xml\": \".svg\",\n \"image/avif\": \".avif\",\n \"image/bmp\": \".bmp\",\n \"image/tiff\": \".tiff\",\n \"image/x-icon\": \".ico\",\n \"image/vnd.microsoft.icon\": \".ico\",\n};\n\nconst KNOWN_EXTENSIONS = new Set([\".webp\", \".png\", \".jpg\", \".jpeg\", \".gif\", \".svg\", \".avif\", \".bmp\", \".tiff\", \".ico\"]);\n\n/** The path portion of a URL, with the host and query removed. A bare host must\n * not leak into a filename — `https://media.withbaker.com/` names no file. */\nfunction urlPath(sourceUrl: string): string {\n try {\n return new URL(sourceUrl).pathname;\n } catch {\n return sourceUrl.split(/[?#]/)[0] ?? \"\";\n }\n}\n\n/** The URL's own path extension, when it names an image format we recognise. */\nfunction extensionFromUrl(sourceUrl: string): string | null {\n const ext = extname(urlPath(sourceUrl)).toLowerCase();\n return KNOWN_EXTENSIONS.has(ext) ? ext : null;\n}\n\n/**\n * The extension to write under. The served `Content-Type` wins: Baker's media\n * host routinely serves webp from a `.png` URL, and a file named for the URL\n * would then lie to every local tool that reads it back.\n */\nexport function deriveExtension(contentType: string | null | undefined, sourceUrl: string): string {\n const normalized = (contentType ?? \"\").split(\";\")[0]?.trim().toLowerCase() ?? \"\";\n const fromType = CONTENT_TYPE_EXTENSIONS[normalized];\n if (fromType) {\n return fromType;\n }\n return extensionFromUrl(sourceUrl) ?? \".bin\";\n}\n\n/**\n * A stem long enough and featureless enough to be a CDN hash rather than a name.\n *\n * Pixabay serves every file under one — an 80-character token with no word\n * breaks — so a downloaded illustration landed in a client's `_images/` as\n * `g030ff139944c078854d52b34eb635c9f5...png`, and that name then goes in the\n * page's `src` and into their repo. Pexels' `pexels-photo-11982694` has word\n * breaks and is left alone.\n */\nfunction looksLikeCdnHash(stem: string): boolean {\n return stem.length >= 32 && !/[-_.]/.test(stem);\n}\n\n/** The site a URL belongs to, as a short word usable in a filename. */\nfunction hostLabel(sourceUrl: string): string | null {\n try {\n const host = new URL(sourceUrl).hostname.replace(/^www\\./, \"\");\n const label = host.split(\".\").filter((part) => part !== \"cdn\" && part !== \"images\")[0];\n return label && /^[a-z0-9-]+$/.test(label) ? label : null;\n } catch {\n return null;\n }\n}\n\n/** A filesystem-safe stem, with no extension. */\nexport function sanitizeBaseName(raw: string): string {\n const stem = raw\n .trim()\n .toLowerCase()\n .replace(/\\.[a-z0-9]{1,5}$/i, \"\")\n .replace(/[^a-z0-9._-]+/g, \"-\")\n .replace(/^[-.]+|[-.]+$/g, \"\")\n .slice(0, 80);\n return stem.length > 0 ? stem : \"image\";\n}\n\n/**\n * The stem for a remote URL: its last path segment, or `image`. A segment that\n * is only a CDN hash is replaced by the site it came from plus a short prefix of\n * the hash, which stays unique between two files from the same site while being\n * readable in a page's markup.\n */\nexport function baseNameFromUrl(sourceUrl: string): string {\n const stem = sanitizeBaseName(basename(urlPath(sourceUrl)));\n if (looksLikeCdnHash(stem)) {\n const label = hostLabel(sourceUrl);\n if (label) return `${label}-${stem.slice(0, 8)}`;\n }\n return stem;\n}\n\ninterface DownloadPathInput {\n baseName: string;\n extension: string;\n /** `--out`, as given. */\n out?: string;\n /** Whether `--out` resolved to an existing directory (or is written as one). */\n outIsDirectory: boolean;\n}\n\n/**\n * `--out` naming a directory keeps the derived filename; `--out` naming a file\n * is taken literally, extension included — the caller asked for that path.\n */\nexport function resolveDownloadPath({ baseName, extension, out, outIsDirectory }: DownloadPathInput): string {\n const filename = `${baseName}${extension}`;\n if (!out) {\n return filename;\n }\n if (outIsDirectory) {\n return join(out, filename);\n }\n return out;\n}\n\n/**\n * Make a batch of resolved paths collision-free.\n *\n * Two hits from different hosts routinely end in the same segment (`/a/logo.png`\n * and `/b/logo.png`), and writing both would leave one file where the agent\n * asked for two — silently, since each write succeeds.\n *\n * The names this mints are claimed too, which is the whole difference between\n * this and a per-name counter. `[\"logo.png\", \"logo.png\", \"logo-2.png\"]` used to\n * produce `logo-2.png` twice: the third entry was its own first sighting, so it\n * passed through untouched and collided with the name invented for the second.\n * That reproduced the exact failure the function exists to prevent, one step\n * further along.\n */\nexport function disambiguate(paths: string[]): string[] {\n const taken = new Set<string>();\n return paths.map((path) => {\n if (!taken.has(path)) {\n taken.add(path);\n return path;\n }\n const ext = extname(path);\n const stem = path.slice(0, path.length - ext.length);\n // Step until free rather than trusting a count: the candidate can collide\n // with a name that arrived on its own, not only with an earlier duplicate.\n let n = 2;\n while (taken.has(`${stem}-${n}${ext}`)) n += 1;\n const unique = `${stem}-${n}${ext}`;\n taken.add(unique);\n return unique;\n });\n}\n"],"mappings":"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","names":["outIsDirectory"]}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CHAT_READ_ARG
|
|
3
|
+
} from "./chunk-PFBQERWX.js";
|
|
4
|
+
import {
|
|
5
|
+
failApi,
|
|
6
|
+
failValidation,
|
|
7
|
+
isTempId
|
|
8
|
+
} from "./chunk-JUY47NZ2.js";
|
|
9
|
+
import {
|
|
10
|
+
REMOVABLE_DRAFT_OP_KINDS
|
|
11
|
+
} from "./chunk-O6XZIQXZ.js";
|
|
12
|
+
import "./chunk-GXDLWBOY.js";
|
|
13
|
+
import "./chunk-GIWHHCD6.js";
|
|
14
|
+
import "./chunk-UI6BKYQD.js";
|
|
15
|
+
import "./chunk-I2DNBEV6.js";
|
|
16
|
+
import {
|
|
17
|
+
apiPost,
|
|
18
|
+
validateConvexId
|
|
19
|
+
} from "./chunk-CUL3VB4L.js";
|
|
20
|
+
import "./chunk-6YYSUISH.js";
|
|
21
|
+
import {
|
|
22
|
+
requireChatId,
|
|
23
|
+
resolveChatId
|
|
24
|
+
} from "./chunk-I4FTS5EE.js";
|
|
25
|
+
import {
|
|
26
|
+
registerSchema,
|
|
27
|
+
writeJson,
|
|
28
|
+
writeOutput
|
|
29
|
+
} from "./chunk-MYTDK3AL.js";
|
|
30
|
+
import "./chunk-YQSBHWOI.js";
|
|
31
|
+
|
|
32
|
+
// src/commands/actions/draft.ts
|
|
33
|
+
import { defineCommand } from "citty";
|
|
34
|
+
var REMOVE_OP_KINDS = REMOVABLE_DRAFT_OP_KINDS;
|
|
35
|
+
registerSchema({
|
|
36
|
+
command: "actions.draft.list",
|
|
37
|
+
description: "Review the action ops staged in THIS chat's draft before publish (creates/updates/completes/discards/links). Staged ops are invisible to `actions list`/`status` until the chat publishes \u2014 use this to verify what will apply and catch duplicates. Takes --chat <id> to read an earlier chat's staged ops instead. Start here: `baker actions draft --output md` for a one-row-per-op table; add --fields to pick columns.",
|
|
38
|
+
args: {
|
|
39
|
+
chat: { type: "string", description: CHAT_READ_ARG.description, required: false },
|
|
40
|
+
output: {
|
|
41
|
+
type: "string",
|
|
42
|
+
description: "Output format: json (default, full envelope with status/count/warnings) | md | files. md and files render one row per staged op.",
|
|
43
|
+
required: false,
|
|
44
|
+
enum: ["json", "md", "files"]
|
|
45
|
+
},
|
|
46
|
+
fields: {
|
|
47
|
+
type: "string",
|
|
48
|
+
description: "Comma-separated columns for md/files output, e.g. kind,name,ref,tags",
|
|
49
|
+
required: false
|
|
50
|
+
},
|
|
51
|
+
full: {
|
|
52
|
+
type: "boolean",
|
|
53
|
+
description: "Include each op's payload (description, note, reason, blocker) in md/files output",
|
|
54
|
+
required: false,
|
|
55
|
+
default: false
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
var OUTPUT_ARGS = {
|
|
60
|
+
output: { type: "string", description: "Output format: json|md|files", required: false, default: "json" },
|
|
61
|
+
fields: { type: "string", description: "Comma-separated field names to include (md/files)", required: false },
|
|
62
|
+
full: { type: "boolean", description: "Include each op's full payload", required: false, default: false }
|
|
63
|
+
};
|
|
64
|
+
function text(value) {
|
|
65
|
+
return typeof value === "string" ? value : "";
|
|
66
|
+
}
|
|
67
|
+
function draftOpNormalizer(record, full) {
|
|
68
|
+
const compact = {
|
|
69
|
+
kind: text(record.kind),
|
|
70
|
+
name: text(record.targetName),
|
|
71
|
+
ref: text(record.tempId) || text(record.targetActionId),
|
|
72
|
+
tags: Array.isArray(record.tags) ? record.tags.join(",") : ""
|
|
73
|
+
};
|
|
74
|
+
if (!full) {
|
|
75
|
+
return compact;
|
|
76
|
+
}
|
|
77
|
+
return {
|
|
78
|
+
...compact,
|
|
79
|
+
description: text(record.description),
|
|
80
|
+
note: text(record.note),
|
|
81
|
+
reason: text(record.reason),
|
|
82
|
+
blocker: text(record.blockerTempId) || text(record.blockerActionId) || text(record.blockerName)
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
registerSchema({
|
|
86
|
+
command: "actions.draft.remove",
|
|
87
|
+
description: "Drop a single staged action op from this chat's draft before publish. For a tempId, removing the create cascades into its complete/link ops. For a real action ID, pass --op to say which op to drop. Use this to UNDO a staged op \u2014 never stage `complete` to delete an action.",
|
|
88
|
+
args: {
|
|
89
|
+
ref: { type: "string", description: "tempId (temp_*) or real action ID to drop from the draft", required: true },
|
|
90
|
+
op: {
|
|
91
|
+
type: "string",
|
|
92
|
+
description: "Required for real action IDs: which op to drop (update|complete|discard|assign|reopen)",
|
|
93
|
+
required: false
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
registerSchema({
|
|
98
|
+
command: "actions.draft.clear",
|
|
99
|
+
description: "Discard ALL staged action ops in this chat's draft before publish. Nothing applies on publish. Does not touch already-published actions.",
|
|
100
|
+
args: {}
|
|
101
|
+
});
|
|
102
|
+
var listCommand = defineCommand({
|
|
103
|
+
meta: {
|
|
104
|
+
name: "list",
|
|
105
|
+
description: "Show every action op staged in this chat's draft, with footgun warnings. Example: baker actions draft --output md"
|
|
106
|
+
},
|
|
107
|
+
args: { chat: CHAT_READ_ARG, ...OUTPUT_ARGS },
|
|
108
|
+
run: async ({ args }) => {
|
|
109
|
+
try {
|
|
110
|
+
const chatId = resolveChatId(args.chat);
|
|
111
|
+
const response = await apiPost("/api/actions/draft", { chatId });
|
|
112
|
+
const format = args.output === "md" || args.output === "files" ? args.output : "json";
|
|
113
|
+
if (format === "json") {
|
|
114
|
+
writeJson(response);
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
writeOutput(
|
|
118
|
+
{ ok: true, data: response.data.ops },
|
|
119
|
+
format,
|
|
120
|
+
args.fields ? args.fields.split(",") : void 0,
|
|
121
|
+
args.full,
|
|
122
|
+
draftOpNormalizer
|
|
123
|
+
);
|
|
124
|
+
process.stderr.write(`draft status: ${response.data.status}, ${response.data.count} op(s)
|
|
125
|
+
`);
|
|
126
|
+
for (const warning of response.data.warnings) {
|
|
127
|
+
process.stderr.write(`warning: ${warning.tempId} \u2014 ${warning.name}
|
|
128
|
+
`);
|
|
129
|
+
}
|
|
130
|
+
} catch (err) {
|
|
131
|
+
failApi(err);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
var removeCommand = defineCommand({
|
|
136
|
+
meta: {
|
|
137
|
+
name: "remove",
|
|
138
|
+
description: "Drop one staged op from the draft. Example: baker actions draft remove temp_abc123 | baker actions draft remove jx7... --op complete"
|
|
139
|
+
},
|
|
140
|
+
args: {
|
|
141
|
+
ref: { type: "positional", description: "tempId or real action ID", required: false },
|
|
142
|
+
op: {
|
|
143
|
+
type: "string",
|
|
144
|
+
description: "Op kind for real IDs: update|complete|discard|assign|reopen",
|
|
145
|
+
required: false
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
run: async ({ args }) => {
|
|
149
|
+
try {
|
|
150
|
+
const ref = args.ref;
|
|
151
|
+
if (!ref) {
|
|
152
|
+
failValidation("A tempId or action ID is required.");
|
|
153
|
+
}
|
|
154
|
+
const chatId = requireChatId();
|
|
155
|
+
if (isTempId(ref)) {
|
|
156
|
+
await apiPost("/api/actions/draft-op/remove", {
|
|
157
|
+
chatId,
|
|
158
|
+
target: { kind: "tempId", tempId: ref }
|
|
159
|
+
});
|
|
160
|
+
writeJson({ ok: true, data: { removed: ref, kind: "tempId" } });
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
validateConvexId(ref);
|
|
164
|
+
const op = args.op;
|
|
165
|
+
if (!op || !REMOVE_OP_KINDS.includes(op)) {
|
|
166
|
+
failValidation(
|
|
167
|
+
`Removing a staged op for a real action ID requires --op (one of: ${REMOVE_OP_KINDS.join("|")}).`
|
|
168
|
+
);
|
|
169
|
+
}
|
|
170
|
+
await apiPost("/api/actions/draft-op/remove", {
|
|
171
|
+
chatId,
|
|
172
|
+
target: { kind: "actionId", actionId: ref, opKind: op }
|
|
173
|
+
});
|
|
174
|
+
writeJson({ ok: true, data: { removed: ref, kind: "actionId", op } });
|
|
175
|
+
} catch (err) {
|
|
176
|
+
failApi(err);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
var clearCommand = defineCommand({
|
|
181
|
+
meta: {
|
|
182
|
+
name: "clear",
|
|
183
|
+
description: "Discard every staged op in this chat's draft. Example: baker actions draft clear"
|
|
184
|
+
},
|
|
185
|
+
run: async () => {
|
|
186
|
+
try {
|
|
187
|
+
const chatId = requireChatId();
|
|
188
|
+
await apiPost("/api/actions/draft/clear", { chatId });
|
|
189
|
+
writeJson({ ok: true, data: { cleared: true } });
|
|
190
|
+
} catch (err) {
|
|
191
|
+
failApi(err);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
var draftCommand = defineCommand({
|
|
196
|
+
meta: {
|
|
197
|
+
name: "draft",
|
|
198
|
+
description: "Review and edit the action ops staged in this chat BEFORE publish. Subcommands: list (default), remove, clear. Staged ops are invisible to `actions list`/`status` until publish, so check here before finishing. `list` takes --chat <id> to read an earlier chat's staged ops instead."
|
|
199
|
+
},
|
|
200
|
+
// Declared on the parent too: `default: "list"` dispatches the bare `draft --chat <id>` form, and
|
|
201
|
+
// citty prints help for a flag the parent does not know instead of forwarding it.
|
|
202
|
+
args: { chat: CHAT_READ_ARG, ...OUTPUT_ARGS },
|
|
203
|
+
subCommands: {
|
|
204
|
+
list: listCommand,
|
|
205
|
+
remove: removeCommand,
|
|
206
|
+
clear: clearCommand
|
|
207
|
+
},
|
|
208
|
+
// Bare `baker actions draft` (no subcommand) shows the staged ops. This must be
|
|
209
|
+
// `default`, not `run`: citty falls through to `run` after dispatching a subcommand,
|
|
210
|
+
// so a `run` here would also list the draft on every `remove` / `clear`.
|
|
211
|
+
default: "list"
|
|
212
|
+
});
|
|
213
|
+
export {
|
|
214
|
+
draftCommand,
|
|
215
|
+
draftOpNormalizer
|
|
216
|
+
};
|
|
217
|
+
//# sourceMappingURL=draft-6QZ7WMWM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/actions/draft.ts"],"sourcesContent":["import {\n type ActionsDraftClearResponse,\n type ActionsDraftResponse,\n type ActionsRemoveDraftOpResponse,\n REMOVABLE_DRAFT_OP_KINDS,\n} from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { apiPost, validateConvexId } from \"../../client.ts\";\nimport { requireChatId, resolveChatId } from \"../../env.ts\";\nimport { type OutputFormat, writeJson, writeOutput } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { CHAT_READ_ARG } from \"../chat-arg.ts\";\nimport { failApi, failValidation, isTempId } from \"./shared.ts\";\n\ntype RemoveOpKind = (typeof REMOVABLE_DRAFT_OP_KINDS)[number];\nconst REMOVE_OP_KINDS: readonly RemoveOpKind[] = REMOVABLE_DRAFT_OP_KINDS;\n\nregisterSchema({\n command: \"actions.draft.list\",\n description:\n \"Review the action ops staged in THIS chat's draft before publish (creates/updates/completes/discards/links). Staged ops are invisible to `actions list`/`status` until the chat publishes — use this to verify what will apply and catch duplicates. Takes --chat <id> to read an earlier chat's staged ops instead. Start here: `baker actions draft --output md` for a one-row-per-op table; add --fields to pick columns.\",\n args: {\n chat: { type: \"string\", description: CHAT_READ_ARG.description, required: false },\n output: {\n type: \"string\",\n description:\n \"Output format: json (default, full envelope with status/count/warnings) | md | files. md and files render one row per staged op.\",\n required: false,\n enum: [\"json\", \"md\", \"files\"],\n },\n fields: {\n type: \"string\",\n description: \"Comma-separated columns for md/files output, e.g. kind,name,ref,tags\",\n required: false,\n },\n full: {\n type: \"boolean\",\n description: \"Include each op's payload (description, note, reason, blocker) in md/files output\",\n required: false,\n default: false,\n },\n },\n});\n\nconst OUTPUT_ARGS = {\n output: { type: \"string\", description: \"Output format: json|md|files\", required: false, default: \"json\" },\n fields: { type: \"string\", description: \"Comma-separated field names to include (md/files)\", required: false },\n full: { type: \"boolean\", description: \"Include each op's full payload\", required: false, default: false },\n} as const;\n\nfunction text(value: unknown): string {\n return typeof value === \"string\" ? value : \"\";\n}\n\n/**\n * One staged op as a table row. `ref` is the handle the agent needs next —\n * `draft remove <ref>`, `update <ref>` — which is the tempId for a staged create\n * and the real action id for an op against a published action.\n */\nexport function draftOpNormalizer(record: Record<string, unknown>, full: boolean): Record<string, unknown> {\n const compact = {\n kind: text(record.kind),\n name: text(record.targetName),\n ref: text(record.tempId) || text(record.targetActionId),\n tags: Array.isArray(record.tags) ? record.tags.join(\",\") : \"\",\n };\n if (!full) {\n return compact;\n }\n return {\n ...compact,\n description: text(record.description),\n note: text(record.note),\n reason: text(record.reason),\n blocker: text(record.blockerTempId) || text(record.blockerActionId) || text(record.blockerName),\n };\n}\n\nregisterSchema({\n command: \"actions.draft.remove\",\n description:\n \"Drop a single staged action op from this chat's draft before publish. For a tempId, removing the create cascades into its complete/link ops. For a real action ID, pass --op to say which op to drop. Use this to UNDO a staged op — never stage `complete` to delete an action.\",\n args: {\n ref: { type: \"string\", description: \"tempId (temp_*) or real action ID to drop from the draft\", required: true },\n op: {\n type: \"string\",\n description: \"Required for real action IDs: which op to drop (update|complete|discard|assign|reopen)\",\n required: false,\n },\n },\n});\n\nregisterSchema({\n command: \"actions.draft.clear\",\n description:\n \"Discard ALL staged action ops in this chat's draft before publish. Nothing applies on publish. Does not touch already-published actions.\",\n args: {},\n});\n\nconst listCommand = defineCommand({\n meta: {\n name: \"list\",\n description:\n \"Show every action op staged in this chat's draft, with footgun warnings. Example: baker actions draft --output md\",\n },\n args: { chat: CHAT_READ_ARG, ...OUTPUT_ARGS },\n run: async ({ args }) => {\n try {\n const chatId = resolveChatId(args.chat);\n const response = await apiPost<ActionsDraftResponse>(\"/api/actions/draft\", { chatId });\n // Anything that isn't a table format falls back to the full JSON envelope\n // — a typo'd `--output` must not silently print nothing.\n const format: OutputFormat = args.output === \"md\" || args.output === \"files\" ? args.output : \"json\";\n if (format === \"json\") {\n writeJson(response);\n return;\n }\n // md/files render the ops as rows; `status`, `count` and the footgun\n // warnings have no column to live in, so they go to stderr rather than\n // being dropped — a warning nobody sees is the reason this format exists.\n writeOutput(\n { ok: true, data: response.data.ops },\n format,\n args.fields ? (args.fields as string).split(\",\") : undefined,\n args.full as boolean,\n draftOpNormalizer,\n );\n process.stderr.write(`draft status: ${response.data.status}, ${response.data.count} op(s)\\n`);\n for (const warning of response.data.warnings) {\n process.stderr.write(`warning: ${warning.tempId} — ${warning.name}\\n`);\n }\n } catch (err) {\n failApi(err);\n }\n },\n});\n\nconst removeCommand = defineCommand({\n meta: {\n name: \"remove\",\n description:\n \"Drop one staged op from the draft. Example: baker actions draft remove temp_abc123 | baker actions draft remove jx7... --op complete\",\n },\n args: {\n ref: { type: \"positional\", description: \"tempId or real action ID\", required: false },\n op: {\n type: \"string\",\n description: \"Op kind for real IDs: update|complete|discard|assign|reopen\",\n required: false,\n },\n },\n run: async ({ args }) => {\n try {\n const ref = args.ref as string | undefined;\n if (!ref) {\n failValidation(\"A tempId or action ID is required.\");\n }\n const chatId = requireChatId();\n\n if (isTempId(ref)) {\n await apiPost<ActionsRemoveDraftOpResponse>(\"/api/actions/draft-op/remove\", {\n chatId,\n target: { kind: \"tempId\", tempId: ref },\n });\n writeJson({ ok: true, data: { removed: ref, kind: \"tempId\" } });\n return;\n }\n\n validateConvexId(ref);\n const op = args.op as string | undefined;\n if (!op || !REMOVE_OP_KINDS.includes(op as RemoveOpKind)) {\n failValidation(\n `Removing a staged op for a real action ID requires --op (one of: ${REMOVE_OP_KINDS.join(\"|\")}).`,\n );\n }\n await apiPost<ActionsRemoveDraftOpResponse>(\"/api/actions/draft-op/remove\", {\n chatId,\n target: { kind: \"actionId\", actionId: ref, opKind: op },\n });\n writeJson({ ok: true, data: { removed: ref, kind: \"actionId\", op } });\n } catch (err) {\n failApi(err);\n }\n },\n});\n\nconst clearCommand = defineCommand({\n meta: {\n name: \"clear\",\n description: \"Discard every staged op in this chat's draft. Example: baker actions draft clear\",\n },\n run: async () => {\n try {\n const chatId = requireChatId();\n await apiPost<ActionsDraftClearResponse>(\"/api/actions/draft/clear\", { chatId });\n writeJson({ ok: true, data: { cleared: true } });\n } catch (err) {\n failApi(err);\n }\n },\n});\n\nexport const draftCommand = defineCommand({\n meta: {\n name: \"draft\",\n description:\n \"Review and edit the action ops staged in this chat BEFORE publish. Subcommands: list (default), remove, clear. Staged ops are invisible to `actions list`/`status` until publish, so check here before finishing. `list` takes --chat <id> to read an earlier chat's staged ops instead.\",\n },\n // Declared on the parent too: `default: \"list\"` dispatches the bare `draft --chat <id>` form, and\n // citty prints help for a flag the parent does not know instead of forwarding it.\n args: { chat: CHAT_READ_ARG, ...OUTPUT_ARGS },\n subCommands: {\n list: listCommand,\n remove: removeCommand,\n clear: clearCommand,\n },\n // Bare `baker actions draft` (no subcommand) shows the staged ops. This must be\n // `default`, not `run`: citty falls through to `run` after dispatching a subcommand,\n // so a `run` here would also list the draft on every `remove` / `clear`.\n default: \"list\",\n});\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import {
|
|
2
|
+
handleMetaError
|
|
3
|
+
} from "./chunk-2UFRHW3T.js";
|
|
4
|
+
import {
|
|
5
|
+
hintLines
|
|
6
|
+
} from "./chunk-D5FY4FAK.js";
|
|
7
|
+
import {
|
|
8
|
+
writeJsonEnvelope
|
|
9
|
+
} from "./chunk-EIGXX6KI.js";
|
|
10
|
+
import {
|
|
11
|
+
CHAT_READ_ARG
|
|
12
|
+
} from "./chunk-PFBQERWX.js";
|
|
13
|
+
import {
|
|
14
|
+
apiPost
|
|
15
|
+
} from "./chunk-CUL3VB4L.js";
|
|
16
|
+
import "./chunk-6YYSUISH.js";
|
|
17
|
+
import {
|
|
18
|
+
requireChatId,
|
|
19
|
+
resolveChatId
|
|
20
|
+
} from "./chunk-I4FTS5EE.js";
|
|
21
|
+
import {
|
|
22
|
+
registerSchema
|
|
23
|
+
} from "./chunk-MYTDK3AL.js";
|
|
24
|
+
import "./chunk-YQSBHWOI.js";
|
|
25
|
+
|
|
26
|
+
// src/commands/ads/meta/draft.ts
|
|
27
|
+
import { defineCommand } from "citty";
|
|
28
|
+
|
|
29
|
+
// src/commands/ads/meta/draft-status.ts
|
|
30
|
+
var STATUS_HEADINGS = {
|
|
31
|
+
active: "staged",
|
|
32
|
+
publishing: "publishing",
|
|
33
|
+
applied: "published",
|
|
34
|
+
partial: "published with failures",
|
|
35
|
+
discarded: "discarded",
|
|
36
|
+
none: "none"
|
|
37
|
+
};
|
|
38
|
+
function plural(count, word) {
|
|
39
|
+
return `${count} ${word}${count === 1 ? "" : "s"}`;
|
|
40
|
+
}
|
|
41
|
+
function headingLine(draft) {
|
|
42
|
+
const heading = STATUS_HEADINGS[draft.status];
|
|
43
|
+
if (draft.status === "active" || draft.status === "discarded") {
|
|
44
|
+
return `Meta Ads \u2014 ${plural(draft.count, "change")} ${heading} \xB7 ${draft.mode}`;
|
|
45
|
+
}
|
|
46
|
+
const counts = /* @__PURE__ */ new Map();
|
|
47
|
+
for (const op of draft.ops) {
|
|
48
|
+
const status = op.result?.status ?? "pending";
|
|
49
|
+
counts.set(status, (counts.get(status) ?? 0) + 1);
|
|
50
|
+
}
|
|
51
|
+
const summary = [...counts].map(([status, count]) => `${count} ${status}`).join(", ");
|
|
52
|
+
return `Meta Ads \u2014 ${heading} \xB7 ${summary} \xB7 ${draft.mode}`;
|
|
53
|
+
}
|
|
54
|
+
function resultPart(op) {
|
|
55
|
+
const result = op.result;
|
|
56
|
+
if (!result) {
|
|
57
|
+
return void 0;
|
|
58
|
+
}
|
|
59
|
+
if (result.status === "failed") {
|
|
60
|
+
return `\u2717 failed: ${result.error ?? "no reason recorded"}`;
|
|
61
|
+
}
|
|
62
|
+
if (result.status === "skipped") {
|
|
63
|
+
const because = result.skippedBecause;
|
|
64
|
+
if (because && op.dependsOn.includes(because)) {
|
|
65
|
+
return `\u2717 skipped: ${because} did not apply`;
|
|
66
|
+
}
|
|
67
|
+
return `\u2717 skipped: ${because ?? "a change it needs did not apply"}`;
|
|
68
|
+
}
|
|
69
|
+
const id = result.id ?? result.hash;
|
|
70
|
+
const applied = `\u2713 ${result.status}${id ? ` \u2192 ${id}` : ""}`;
|
|
71
|
+
const verification = result.verification;
|
|
72
|
+
if (verification && verification.status !== "confirmed") {
|
|
73
|
+
return `${applied} (read-back ${verification.status}${verification.note ? `: ${verification.note}` : ""})`;
|
|
74
|
+
}
|
|
75
|
+
return applied;
|
|
76
|
+
}
|
|
77
|
+
function opLine(op, showAccount) {
|
|
78
|
+
const parts = [op.ref, op.kind, op.summary];
|
|
79
|
+
if (op.target && op.target !== op.ref) {
|
|
80
|
+
parts.push(`target ${op.target}`);
|
|
81
|
+
}
|
|
82
|
+
if (showAccount) {
|
|
83
|
+
parts.push(`account ${op.accountId}`);
|
|
84
|
+
}
|
|
85
|
+
if (op.dependsOn.length > 0) {
|
|
86
|
+
parts.push(`after ${op.dependsOn.join(", ")}`);
|
|
87
|
+
}
|
|
88
|
+
const result = resultPart(op);
|
|
89
|
+
if (result) {
|
|
90
|
+
parts.push(result);
|
|
91
|
+
}
|
|
92
|
+
return ` ${parts.join(" \xB7 ").replace(/[\r\n]+/g, " ")}`;
|
|
93
|
+
}
|
|
94
|
+
function renderDraftStatus(draft) {
|
|
95
|
+
if (draft.status === "none" || draft.count === 0) {
|
|
96
|
+
return "No staged Meta changes on this chat.";
|
|
97
|
+
}
|
|
98
|
+
const lines = [headingLine(draft)];
|
|
99
|
+
if (draft.status === "active") {
|
|
100
|
+
lines.push("Publishing makes every change real on the ad account.");
|
|
101
|
+
}
|
|
102
|
+
lines.push("");
|
|
103
|
+
const showAccount = new Set(draft.ops.map((op) => op.accountId)).size > 1;
|
|
104
|
+
for (const op of draft.ops) {
|
|
105
|
+
lines.push(opLine(op, showAccount));
|
|
106
|
+
}
|
|
107
|
+
if (draft.advisories.length > 0) {
|
|
108
|
+
lines.push("", "Advisories");
|
|
109
|
+
for (const advisory of draft.advisories) {
|
|
110
|
+
lines.push(` ! ${advisory.ref}: ${advisory.message}`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
lines.push("", "Full staged payload for one op: baker ads meta draft show <ref> \xB7 raw envelope: --json");
|
|
114
|
+
return lines.join("\n");
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// src/commands/ads/meta/draft.ts
|
|
118
|
+
registerSchema({
|
|
119
|
+
command: "ads.meta.draft",
|
|
120
|
+
description: "Review every Meta op staged on this chat, one line each: ref \xB7 kind \xB7 summary \xB7 what it waits on, and after a publish \u2713 applied \u2192 id or \u2717 failed: <error>. `draft show <ref>` prints one op's full payload.",
|
|
121
|
+
args: {
|
|
122
|
+
json: { type: "boolean", description: "Raw JSON envelope instead of the readable list", required: false },
|
|
123
|
+
chat: { type: "string", description: "Read another chat's draft instead of this one", required: false }
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
async function listDraft(json, chat) {
|
|
127
|
+
try {
|
|
128
|
+
const chatId = resolveChatId(chat);
|
|
129
|
+
const response = await apiPost("/api/ads/meta/draft", { chatId });
|
|
130
|
+
if (json || !response.ok || !response.data) {
|
|
131
|
+
writeJsonEnvelope(response);
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
process.stdout.write(`${renderDraftStatus(response.data)}${hintLines(response)}
|
|
135
|
+
`);
|
|
136
|
+
} catch (err) {
|
|
137
|
+
handleMetaError(err);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
var listCommand = defineCommand({
|
|
141
|
+
meta: {
|
|
142
|
+
name: "list",
|
|
143
|
+
description: "Show every Meta write op staged in this chat, one line each (ref \xB7 kind \xB7 summary \xB7 dependencies \xB7 post-publish result); --json for the raw envelope. Publishing reaches the real ad account, so review this before you finish. Example: baker ads meta draft"
|
|
144
|
+
},
|
|
145
|
+
args: {
|
|
146
|
+
json: { type: "boolean", description: "Print the raw JSON envelope instead of the readable list" },
|
|
147
|
+
chat: CHAT_READ_ARG
|
|
148
|
+
},
|
|
149
|
+
run: async ({ args }) => {
|
|
150
|
+
await listDraft(args.json === true, args.chat);
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
var showCommand = defineCommand({
|
|
154
|
+
meta: {
|
|
155
|
+
name: "show",
|
|
156
|
+
description: "Print the full staged payload for one op \u2014 the receipt to verify a change looks right before publish (never truncated). Example: baker ads meta draft show meta_temp_abc123"
|
|
157
|
+
},
|
|
158
|
+
args: {
|
|
159
|
+
ref: { type: "positional", description: "Op ref (meta_temp_* for creates, target id for updates)", required: true },
|
|
160
|
+
chat: CHAT_READ_ARG
|
|
161
|
+
},
|
|
162
|
+
run: async ({ args }) => {
|
|
163
|
+
try {
|
|
164
|
+
const chatId = resolveChatId(args.chat);
|
|
165
|
+
const response = await apiPost("/api/ads/meta/draft/show", {
|
|
166
|
+
chatId,
|
|
167
|
+
ref: args.ref
|
|
168
|
+
});
|
|
169
|
+
writeJsonEnvelope(response);
|
|
170
|
+
} catch (err) {
|
|
171
|
+
handleMetaError(err);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
var removeCommand = defineCommand({
|
|
176
|
+
meta: {
|
|
177
|
+
name: "remove",
|
|
178
|
+
description: "Drop one staged Meta op. Removing a create cascades to everything that depends on it. Example: baker ads meta draft remove meta_temp_abc123"
|
|
179
|
+
},
|
|
180
|
+
args: {
|
|
181
|
+
ref: { type: "positional", description: "Op ref (meta_temp_* for creates, target id for updates)", required: true }
|
|
182
|
+
},
|
|
183
|
+
run: async ({ args }) => {
|
|
184
|
+
try {
|
|
185
|
+
const chatId = requireChatId();
|
|
186
|
+
const response = await apiPost("/api/ads/meta/draft/remove", {
|
|
187
|
+
chatId,
|
|
188
|
+
ref: args.ref
|
|
189
|
+
});
|
|
190
|
+
writeJsonEnvelope(response);
|
|
191
|
+
} catch (err) {
|
|
192
|
+
handleMetaError(err);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
var clearCommand = defineCommand({
|
|
197
|
+
meta: {
|
|
198
|
+
name: "clear",
|
|
199
|
+
description: "Discard ALL staged Meta ops in this chat's draft \u2014 nothing will apply on publish. Example: baker ads meta draft clear"
|
|
200
|
+
},
|
|
201
|
+
run: async () => {
|
|
202
|
+
try {
|
|
203
|
+
const chatId = requireChatId();
|
|
204
|
+
const response = await apiPost("/api/ads/meta/draft/clear", {
|
|
205
|
+
chatId
|
|
206
|
+
});
|
|
207
|
+
writeJsonEnvelope(response);
|
|
208
|
+
} catch (err) {
|
|
209
|
+
handleMetaError(err);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
var metaDraftCommand = defineCommand({
|
|
214
|
+
meta: {
|
|
215
|
+
name: "draft",
|
|
216
|
+
description: "Review and edit the Meta write ops staged in this chat BEFORE publish. Subcommands: list (default), show, remove, clear. Ops never hit Meta until the chat is published. `list` and `show` take --chat <id> to read an earlier chat's changes instead."
|
|
217
|
+
},
|
|
218
|
+
// Declared on the parent too: `default: "list"` dispatches the bare `draft --chat <id>` form, and
|
|
219
|
+
// citty prints help for a flag the parent does not know instead of forwarding it.
|
|
220
|
+
args: {
|
|
221
|
+
json: { type: "boolean", description: "Print the raw JSON envelope instead of the readable list" },
|
|
222
|
+
chat: CHAT_READ_ARG
|
|
223
|
+
},
|
|
224
|
+
subCommands: { list: listCommand, show: showCommand, remove: removeCommand, clear: clearCommand },
|
|
225
|
+
// `default` (not `run`) dispatches the bare invocation: citty falls through to `run`
|
|
226
|
+
// after dispatching a subcommand, so a `run` here would list the draft a second time
|
|
227
|
+
// on every `draft list` / `draft remove` / `draft clear`.
|
|
228
|
+
default: "list"
|
|
229
|
+
});
|
|
230
|
+
export {
|
|
231
|
+
metaDraftCommand
|
|
232
|
+
};
|
|
233
|
+
//# sourceMappingURL=draft-DDFFTZ43.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/ads/meta/draft.ts","../src/commands/ads/meta/draft-status.ts"],"sourcesContent":["import type {\n MetaDraftClearResponse,\n MetaDraftListResponse,\n MetaDraftRemoveResponse,\n MetaDraftShowResponse,\n} from \"@baker/api/ads-meta\";\nimport { defineCommand } from \"citty\";\nimport { apiPost } from \"../../../client.ts\";\nimport { requireChatId, resolveChatId } from \"../../../env.ts\";\nimport { registerSchema } from \"../../../schemas.ts\";\nimport { CHAT_READ_ARG } from \"../../chat-arg.ts\";\nimport { hintLines } from \"../hints.ts\";\nimport { writeJsonEnvelope } from \"../output.ts\";\nimport { renderDraftStatus } from \"./draft-status.ts\";\nimport { handleMetaError } from \"./shared.ts\";\n\nregisterSchema({\n command: \"ads.meta.draft\",\n description:\n \"Review every Meta op staged on this chat, one line each: ref · kind · summary · what it waits on, and after a publish ✓ applied → id or ✗ failed: <error>. `draft show <ref>` prints one op's full payload.\",\n args: {\n json: { type: \"boolean\", description: \"Raw JSON envelope instead of the readable list\", required: false },\n chat: { type: \"string\", description: \"Read another chat's draft instead of this one\", required: false },\n },\n});\n\n/**\n * The readable one-line-per-op view is the default, like the Google, LinkedIn and X drafts;\n * `--json` (or `--output json`) returns the raw envelope for tools.\n */\nasync function listDraft(json: boolean, chat?: unknown): Promise<void> {\n try {\n const chatId = resolveChatId(chat);\n const response = await apiPost<{ ok: boolean; data?: MetaDraftListResponse }>(\"/api/ads/meta/draft\", { chatId });\n if (json || !response.ok || !response.data) {\n writeJsonEnvelope(response);\n return;\n }\n process.stdout.write(`${renderDraftStatus(response.data)}${hintLines(response)}\\n`);\n } catch (err) {\n handleMetaError(err);\n }\n}\n\nconst listCommand = defineCommand({\n meta: {\n name: \"list\",\n description:\n \"Show every Meta write op staged in this chat, one line each (ref · kind · summary · dependencies · post-publish result); --json for the raw envelope. Publishing reaches the real ad account, so review this before you finish. Example: baker ads meta draft\",\n },\n args: {\n json: { type: \"boolean\", description: \"Print the raw JSON envelope instead of the readable list\" },\n chat: CHAT_READ_ARG,\n },\n run: async ({ args }) => {\n await listDraft(args.json === true, args.chat);\n },\n});\n\nconst showCommand = defineCommand({\n meta: {\n name: \"show\",\n description:\n \"Print the full staged payload for one op — the receipt to verify a change looks right before publish (never truncated). Example: baker ads meta draft show meta_temp_abc123\",\n },\n args: {\n ref: { type: \"positional\", description: \"Op ref (meta_temp_* for creates, target id for updates)\", required: true },\n chat: CHAT_READ_ARG,\n },\n run: async ({ args }) => {\n try {\n const chatId = resolveChatId(args.chat);\n const response = await apiPost<{ ok: true; data: MetaDraftShowResponse }>(\"/api/ads/meta/draft/show\", {\n chatId,\n ref: args.ref,\n });\n writeJsonEnvelope(response);\n } catch (err) {\n handleMetaError(err);\n }\n },\n});\n\nconst removeCommand = defineCommand({\n meta: {\n name: \"remove\",\n description:\n \"Drop one staged Meta op. Removing a create cascades to everything that depends on it. Example: baker ads meta draft remove meta_temp_abc123\",\n },\n args: {\n ref: { type: \"positional\", description: \"Op ref (meta_temp_* for creates, target id for updates)\", required: true },\n },\n run: async ({ args }) => {\n try {\n const chatId = requireChatId();\n const response = await apiPost<{ ok: true; data: MetaDraftRemoveResponse }>(\"/api/ads/meta/draft/remove\", {\n chatId,\n ref: args.ref,\n });\n writeJsonEnvelope(response);\n } catch (err) {\n handleMetaError(err);\n }\n },\n});\n\nconst clearCommand = defineCommand({\n meta: {\n name: \"clear\",\n description:\n \"Discard ALL staged Meta ops in this chat's draft — nothing will apply on publish. Example: baker ads meta draft clear\",\n },\n run: async () => {\n try {\n const chatId = requireChatId();\n const response = await apiPost<{ ok: true; data: MetaDraftClearResponse }>(\"/api/ads/meta/draft/clear\", {\n chatId,\n });\n writeJsonEnvelope(response);\n } catch (err) {\n handleMetaError(err);\n }\n },\n});\n\nexport const metaDraftCommand = defineCommand({\n meta: {\n name: \"draft\",\n description:\n \"Review and edit the Meta write ops staged in this chat BEFORE publish. Subcommands: list (default), show, remove, clear. Ops never hit Meta until the chat is published. `list` and `show` take --chat <id> to read an earlier chat's changes instead.\",\n },\n // Declared on the parent too: `default: \"list\"` dispatches the bare `draft --chat <id>` form, and\n // citty prints help for a flag the parent does not know instead of forwarding it.\n args: {\n json: { type: \"boolean\", description: \"Print the raw JSON envelope instead of the readable list\" },\n chat: CHAT_READ_ARG,\n },\n subCommands: { list: listCommand, show: showCommand, remove: removeCommand, clear: clearCommand },\n // `default` (not `run`) dispatches the bare invocation: citty falls through to `run`\n // after dispatching a subcommand, so a `run` here would list the draft a second time\n // on every `draft list` / `draft remove` / `draft clear`.\n default: \"list\",\n});\n","import type { MetaDraftListResponse, MetaDraftOpView } from \"@baker/api/ads-meta\";\n\n/**\n * Render the staged Meta draft as one line per op — ref, kind, summary, what it\n * waits on and, after a publish, what happened to it. The Google, LinkedIn and\n * X drafts already print a readable view by default; Meta printed the pretty\n * JSON envelope, and agents piped every read through python to get these same\n * columns back. Pure: takes the draft-list response, returns text.\n */\n\nconst STATUS_HEADINGS: Record<MetaDraftListResponse[\"status\"], string> = {\n active: \"staged\",\n publishing: \"publishing\",\n applied: \"published\",\n partial: \"published with failures\",\n discarded: \"discarded\",\n none: \"none\",\n};\n\nfunction plural(count: number, word: string): string {\n return `${count} ${word}${count === 1 ? \"\" : \"s\"}`;\n}\n\nfunction headingLine(draft: MetaDraftListResponse): string {\n const heading = STATUS_HEADINGS[draft.status];\n if (draft.status === \"active\" || draft.status === \"discarded\") {\n return `Meta Ads — ${plural(draft.count, \"change\")} ${heading} · ${draft.mode}`;\n }\n const counts = new Map<string, number>();\n for (const op of draft.ops) {\n const status = op.result?.status ?? \"pending\";\n counts.set(status, (counts.get(status) ?? 0) + 1);\n }\n const summary = [...counts].map(([status, count]) => `${count} ${status}`).join(\", \");\n return `Meta Ads — ${heading} · ${summary} · ${draft.mode}`;\n}\n\nfunction resultPart(op: MetaDraftOpView): string | undefined {\n const result = op.result;\n if (!result) {\n return undefined;\n }\n if (result.status === \"failed\") {\n return `✗ failed: ${result.error ?? \"no reason recorded\"}`;\n }\n if (result.status === \"skipped\") {\n // Publish records either the dependency ref that did not apply or a plain reason; either way the op is finished.\n const because = result.skippedBecause;\n if (because && op.dependsOn.includes(because)) {\n return `✗ skipped: ${because} did not apply`;\n }\n return `✗ skipped: ${because ?? \"a change it needs did not apply\"}`;\n }\n const id = result.id ?? result.hash;\n const applied = `✓ ${result.status}${id ? ` → ${id}` : \"\"}`;\n const verification = result.verification;\n if (verification && verification.status !== \"confirmed\") {\n return `${applied} (read-back ${verification.status}${verification.note ? `: ${verification.note}` : \"\"})`;\n }\n return applied;\n}\n\nfunction opLine(op: MetaDraftOpView, showAccount: boolean): string {\n const parts = [op.ref, op.kind, op.summary];\n if (op.target && op.target !== op.ref) {\n parts.push(`target ${op.target}`);\n }\n if (showAccount) {\n parts.push(`account ${op.accountId}`);\n }\n if (op.dependsOn.length > 0) {\n parts.push(`after ${op.dependsOn.join(\", \")}`);\n }\n const result = resultPart(op);\n if (result) {\n parts.push(result);\n }\n // Creative copy and provider errors can carry line breaks; one op stays one line.\n return ` ${parts.join(\" · \").replace(/[\\r\\n]+/g, \" \")}`;\n}\n\nexport function renderDraftStatus(draft: MetaDraftListResponse): string {\n if (draft.status === \"none\" || draft.count === 0) {\n return \"No staged Meta changes on this chat.\";\n }\n const lines = [headingLine(draft)];\n if (draft.status === \"active\") {\n lines.push(\"Publishing makes every change real on the ad account.\");\n }\n lines.push(\"\");\n // A draft may span several ad accounts; the account is only noise when there is one.\n const showAccount = new Set(draft.ops.map((op) => op.accountId)).size > 1;\n for (const op of draft.ops) {\n lines.push(opLine(op, showAccount));\n }\n if (draft.advisories.length > 0) {\n lines.push(\"\", \"Advisories\");\n for (const advisory of draft.advisories) {\n lines.push(` ! ${advisory.ref}: ${advisory.message}`);\n }\n }\n lines.push(\"\", \"Full staged payload for one op: baker ads meta draft show <ref> · raw envelope: --json\");\n return lines.join(\"\\n\");\n}\n"],"mappings":"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","names":[]}
|