@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,102 @@
|
|
|
1
|
+
import {
|
|
2
|
+
OUTPUT_ARGS,
|
|
3
|
+
writeProviderHits
|
|
4
|
+
} from "./chunk-LWAEHLKV.js";
|
|
5
|
+
import {
|
|
6
|
+
ApiError,
|
|
7
|
+
apiPost
|
|
8
|
+
} from "./chunk-CUL3VB4L.js";
|
|
9
|
+
import "./chunk-6YYSUISH.js";
|
|
10
|
+
import "./chunk-I4FTS5EE.js";
|
|
11
|
+
import {
|
|
12
|
+
registerSchema,
|
|
13
|
+
writeJson
|
|
14
|
+
} from "./chunk-MYTDK3AL.js";
|
|
15
|
+
import "./chunk-YQSBHWOI.js";
|
|
16
|
+
|
|
17
|
+
// src/commands/images/screenshot.ts
|
|
18
|
+
import { defineCommand } from "citty";
|
|
19
|
+
registerSchema({
|
|
20
|
+
command: "images.screenshot",
|
|
21
|
+
description: "Capture a website screenshot via ScreenshotOne. Auto-ingests on success.",
|
|
22
|
+
args: {
|
|
23
|
+
url: { type: "string", description: "URL to capture", required: true },
|
|
24
|
+
"full-page": { type: "boolean", description: "Full-page capture", required: false, default: false },
|
|
25
|
+
viewport: { type: "string", description: "WxH (e.g. 1440x900)", required: false },
|
|
26
|
+
format: { type: "string", description: "webp | png | jpg", required: false, default: "webp" },
|
|
27
|
+
context: {
|
|
28
|
+
type: "string",
|
|
29
|
+
description: "Free-text hint passed to Gemini describe (e.g. 'competitor pricing page screenshot')",
|
|
30
|
+
required: false
|
|
31
|
+
},
|
|
32
|
+
output: { type: "string", description: "Output format: json|files|md", required: false, default: "json" },
|
|
33
|
+
fields: { type: "string", description: "Comma-separated field names to include", required: false },
|
|
34
|
+
full: { type: "boolean", description: "Include full metadata", required: false, default: false }
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
var screenshotCommand = defineCommand({
|
|
38
|
+
meta: {
|
|
39
|
+
name: "screenshot",
|
|
40
|
+
description: "Screenshot a URL via ScreenshotOne. $0.009/capture. Auto-ingests to library.\n\nExample: baker images screenshot https://stripe.com --full-page"
|
|
41
|
+
},
|
|
42
|
+
args: {
|
|
43
|
+
url: { type: "positional", description: "URL to capture", required: false },
|
|
44
|
+
"full-page": { type: "boolean", description: "Full-page capture", required: false },
|
|
45
|
+
viewport: { type: "string", description: "WxH viewport (e.g. 1440x900)", required: false },
|
|
46
|
+
format: { type: "string", description: "webp|png|jpg", required: false },
|
|
47
|
+
context: { type: "string", description: "Description context hint", required: false },
|
|
48
|
+
...OUTPUT_ARGS
|
|
49
|
+
},
|
|
50
|
+
run: async ({ args }) => {
|
|
51
|
+
try {
|
|
52
|
+
const url = args.url;
|
|
53
|
+
if (!url) {
|
|
54
|
+
writeJson({ ok: false, error: { code: "VALIDATION_ERROR", message: "URL is required" } });
|
|
55
|
+
process.exit(1);
|
|
56
|
+
}
|
|
57
|
+
const body = { url };
|
|
58
|
+
if (args["full-page"]) body.fullPage = true;
|
|
59
|
+
if (args.format) body.format = args.format;
|
|
60
|
+
const viewport = args.viewport;
|
|
61
|
+
if (viewport) {
|
|
62
|
+
const match = viewport.match(/^(\d+)x(\d+)$/);
|
|
63
|
+
if (!match) {
|
|
64
|
+
writeJson({
|
|
65
|
+
ok: false,
|
|
66
|
+
error: { code: "VALIDATION_ERROR", message: "--viewport must be WxH (e.g. 1440x900)" }
|
|
67
|
+
});
|
|
68
|
+
process.exit(1);
|
|
69
|
+
}
|
|
70
|
+
body.viewportWidth = Number(match[1]);
|
|
71
|
+
body.viewportHeight = Number(match[2]);
|
|
72
|
+
}
|
|
73
|
+
if (args.context) body.descriptionContext = args.context;
|
|
74
|
+
const data = await apiPost("/api/images/screenshot", body);
|
|
75
|
+
writeProviderHits(data, data.hits, args, []);
|
|
76
|
+
} catch (err) {
|
|
77
|
+
if (err instanceof ApiError) {
|
|
78
|
+
const isUrlProblem = err.code === "VALIDATION_ERROR" || err.code === "NOT_FOUND";
|
|
79
|
+
writeJson({
|
|
80
|
+
ok: false,
|
|
81
|
+
error: {
|
|
82
|
+
code: err.code,
|
|
83
|
+
message: err.message,
|
|
84
|
+
...isUrlProblem ? {
|
|
85
|
+
fix: {
|
|
86
|
+
action: "reject",
|
|
87
|
+
explanation: "Verify the URL is correct and publicly reachable, then retry with a working address. If the page can't be captured, continue without this screenshot rather than stopping the job."
|
|
88
|
+
}
|
|
89
|
+
} : {}
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
process.exit(1);
|
|
93
|
+
}
|
|
94
|
+
writeJson({ ok: false, error: { code: "INTERNAL_ERROR", message: "Unexpected error" } });
|
|
95
|
+
process.exit(1);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
export {
|
|
100
|
+
screenshotCommand
|
|
101
|
+
};
|
|
102
|
+
//# sourceMappingURL=screenshot-EIGC6SZB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/images/screenshot.ts"],"sourcesContent":["import type { ImagesScreenshotRequest, ImagesScreenshotResponse } from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { ApiError, apiPost } from \"../../client.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { OUTPUT_ARGS, writeProviderHits } from \"./providerHits.ts\";\n\nregisterSchema({\n command: \"images.screenshot\",\n description: \"Capture a website screenshot via ScreenshotOne. Auto-ingests on success.\",\n args: {\n url: { type: \"string\", description: \"URL to capture\", required: true },\n \"full-page\": { type: \"boolean\", description: \"Full-page capture\", required: false, default: false },\n viewport: { type: \"string\", description: \"WxH (e.g. 1440x900)\", required: false },\n format: { type: \"string\", description: \"webp | png | jpg\", required: false, default: \"webp\" },\n context: {\n type: \"string\",\n description: \"Free-text hint passed to Gemini describe (e.g. 'competitor pricing page screenshot')\",\n required: false,\n },\n output: { type: \"string\", description: \"Output format: json|files|md\", required: false, default: \"json\" },\n fields: { type: \"string\", description: \"Comma-separated field names to include\", required: false },\n full: { type: \"boolean\", description: \"Include full metadata\", required: false, default: false },\n },\n});\n\nexport const screenshotCommand = defineCommand({\n meta: {\n name: \"screenshot\",\n description:\n \"Screenshot a URL via ScreenshotOne. $0.009/capture. Auto-ingests to library.\\n\\nExample: baker images screenshot https://stripe.com --full-page\",\n },\n args: {\n url: { type: \"positional\", description: \"URL to capture\", required: false },\n \"full-page\": { type: \"boolean\", description: \"Full-page capture\", required: false },\n viewport: { type: \"string\", description: \"WxH viewport (e.g. 1440x900)\", required: false },\n format: { type: \"string\", description: \"webp|png|jpg\", required: false },\n context: { type: \"string\", description: \"Description context hint\", required: false },\n ...OUTPUT_ARGS,\n },\n run: async ({ args }) => {\n try {\n const url = args.url as string | undefined;\n if (!url) {\n writeJson({ ok: false, error: { code: \"VALIDATION_ERROR\", message: \"URL is required\" } });\n process.exit(1);\n }\n const body: ImagesScreenshotRequest = { url };\n if (args[\"full-page\"]) body.fullPage = true;\n if (args.format) body.format = args.format as ImagesScreenshotRequest[\"format\"];\n const viewport = args.viewport as string | undefined;\n if (viewport) {\n const match = viewport.match(/^(\\d+)x(\\d+)$/);\n if (!match) {\n writeJson({\n ok: false,\n error: { code: \"VALIDATION_ERROR\", message: \"--viewport must be WxH (e.g. 1440x900)\" },\n });\n process.exit(1);\n }\n body.viewportWidth = Number(match[1]);\n body.viewportHeight = Number(match[2]);\n }\n if (args.context) body.descriptionContext = args.context as string;\n\n const data = await apiPost<ImagesScreenshotResponse>(\"/api/images/screenshot\", body);\n writeProviderHits(data, data.hits, args as Record<string, unknown>, []);\n } catch (err) {\n if (err instanceof ApiError) {\n // A bad/unreachable URL comes back as a 4xx (VALIDATION_ERROR / NOT_FOUND).\n // Tell the agent how to recover and to keep going rather than aborting the job.\n const isUrlProblem = err.code === \"VALIDATION_ERROR\" || err.code === \"NOT_FOUND\";\n writeJson({\n ok: false,\n error: {\n code: err.code,\n message: err.message,\n ...(isUrlProblem\n ? {\n fix: {\n action: \"reject\",\n explanation:\n \"Verify the URL is correct and publicly reachable, then retry with a working address. If the page can't be captured, continue without this screenshot rather than stopping the job.\",\n },\n }\n : {}),\n },\n });\n process.exit(1);\n }\n writeJson({ ok: false, error: { code: \"INTERNAL_ERROR\", message: \"Unexpected error\" } });\n process.exit(1);\n }\n },\n});\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import {
|
|
2
|
+
READABLE_SHOT,
|
|
3
|
+
downloadReadableShot
|
|
4
|
+
} from "./chunk-DNCLWSHO.js";
|
|
5
|
+
import {
|
|
6
|
+
INSPIRATION_HINTS,
|
|
7
|
+
favoritesScopeHints,
|
|
8
|
+
parseNumber,
|
|
9
|
+
reportError,
|
|
10
|
+
splitList
|
|
11
|
+
} from "./chunk-Z7MWSXLG.js";
|
|
12
|
+
import {
|
|
13
|
+
apiPost
|
|
14
|
+
} from "./chunk-CUL3VB4L.js";
|
|
15
|
+
import "./chunk-6YYSUISH.js";
|
|
16
|
+
import "./chunk-I4FTS5EE.js";
|
|
17
|
+
import {
|
|
18
|
+
registerSchema,
|
|
19
|
+
writeJson
|
|
20
|
+
} from "./chunk-MYTDK3AL.js";
|
|
21
|
+
import "./chunk-YQSBHWOI.js";
|
|
22
|
+
|
|
23
|
+
// src/commands/landing/inspiration/search.ts
|
|
24
|
+
import path from "path";
|
|
25
|
+
import { defineCommand } from "citty";
|
|
26
|
+
registerSchema({
|
|
27
|
+
command: "landing.inspiration.search",
|
|
28
|
+
description: "Search the shared library of real landing-page sections for reference before you design. Start here: baker landing inspiration search 'pricing with a monthly/annual toggle'. Returns the idea behind each section plus a downloaded screenshot you can Read. Defaults to this company's saved sections; pass --scope all for the whole library.",
|
|
29
|
+
args: {
|
|
30
|
+
query: { type: "string", description: "What you want to see, in plain English", required: false },
|
|
31
|
+
type: {
|
|
32
|
+
type: "string",
|
|
33
|
+
description: "Comma list of section types: hero,pricing,faq,testimonials,\u2026",
|
|
34
|
+
required: false
|
|
35
|
+
},
|
|
36
|
+
composition: {
|
|
37
|
+
type: "string",
|
|
38
|
+
description: "Comma list of composition patterns (references/composition.md)",
|
|
39
|
+
required: false
|
|
40
|
+
},
|
|
41
|
+
register: {
|
|
42
|
+
type: "string",
|
|
43
|
+
description: "Comma list of visual registers: dev-tool-minimal,luxury-high-end,\u2026",
|
|
44
|
+
required: false
|
|
45
|
+
},
|
|
46
|
+
interaction: { type: "string", description: "Comma list of interaction patterns", required: false },
|
|
47
|
+
motion: {
|
|
48
|
+
type: "string",
|
|
49
|
+
description: "Comma list of motion kinds: scroll-reveal,marquee,parallax,\u2026",
|
|
50
|
+
required: false
|
|
51
|
+
},
|
|
52
|
+
media: { type: "string", description: "Comma list of media kinds", required: false },
|
|
53
|
+
device: { type: "string", description: "Comma list of content devices", required: false },
|
|
54
|
+
theme: { type: "string", description: "light | dark | mixed", required: false },
|
|
55
|
+
"max-rank": {
|
|
56
|
+
type: "number",
|
|
57
|
+
description: "Show>Tell rank ceiling 1-7; 3 means 'rank 3 or better'",
|
|
58
|
+
required: false
|
|
59
|
+
},
|
|
60
|
+
"min-craft": { type: "number", description: "Craft floor 0-1", required: false },
|
|
61
|
+
"min-fidelity": {
|
|
62
|
+
type: "number",
|
|
63
|
+
description: "Only sections whose markup reproduces this well (0-1)",
|
|
64
|
+
required: false
|
|
65
|
+
},
|
|
66
|
+
domain: { type: "string", description: "Restrict to one site", required: false },
|
|
67
|
+
"similar-to": {
|
|
68
|
+
type: "string",
|
|
69
|
+
description: "Section id \u2014 find sections that look like this one",
|
|
70
|
+
required: false
|
|
71
|
+
},
|
|
72
|
+
scope: { type: "string", description: "favorites (default) | all", required: false },
|
|
73
|
+
limit: { type: "number", description: "Max results (default 8)", required: false },
|
|
74
|
+
"no-images": { type: "boolean", description: "Skip downloading screenshots", required: false },
|
|
75
|
+
full: {
|
|
76
|
+
type: "boolean",
|
|
77
|
+
description: "Add every classification facet (theme, density, rank, interactions, media, devices, tags, headline)",
|
|
78
|
+
required: false
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
function buildSearchBody(args) {
|
|
83
|
+
const body = {};
|
|
84
|
+
const setList = (key, value) => {
|
|
85
|
+
const list = splitList(value);
|
|
86
|
+
if (list) Object.assign(body, { [key]: list });
|
|
87
|
+
};
|
|
88
|
+
if (args.query) body.query = String(args.query);
|
|
89
|
+
if (args["similar-to"]) body.similarToSectionId = String(args["similar-to"]);
|
|
90
|
+
setList("sectionType", args.type);
|
|
91
|
+
setList("composition", args.composition);
|
|
92
|
+
setList("visualRegister", args.register);
|
|
93
|
+
setList("interaction", args.interaction);
|
|
94
|
+
setList("motion", args.motion);
|
|
95
|
+
setList("mediaKind", args.media);
|
|
96
|
+
setList("contentDevice", args.device);
|
|
97
|
+
if (args.theme) body.theme = String(args.theme);
|
|
98
|
+
if (args.domain) body.domain = String(args.domain);
|
|
99
|
+
const maxRank = parseNumber(args["max-rank"]);
|
|
100
|
+
if (maxRank !== void 0) body.maxShowTellRank = maxRank;
|
|
101
|
+
const minCraft = parseNumber(args["min-craft"]);
|
|
102
|
+
if (minCraft !== void 0) body.minCraftScore = minCraft;
|
|
103
|
+
const minFidelity = parseNumber(args["min-fidelity"]);
|
|
104
|
+
if (minFidelity !== void 0) body.minFidelity = minFidelity;
|
|
105
|
+
const limit = parseNumber(args.limit);
|
|
106
|
+
body.limit = limit ?? 8;
|
|
107
|
+
body.scope = args.scope === "all" ? "all" : "favorites";
|
|
108
|
+
return body;
|
|
109
|
+
}
|
|
110
|
+
async function downloadShots(results) {
|
|
111
|
+
const dir = path.join(process.cwd(), ".baker", "inspiration");
|
|
112
|
+
const saved = /* @__PURE__ */ new Map();
|
|
113
|
+
await Promise.all(
|
|
114
|
+
results.map(async (result) => {
|
|
115
|
+
const file = await downloadReadableShot(
|
|
116
|
+
result.desktopShotUrl,
|
|
117
|
+
path.join(dir, `${result.id}.${READABLE_SHOT.extension}`)
|
|
118
|
+
);
|
|
119
|
+
if (file) saved.set(result.id, file);
|
|
120
|
+
})
|
|
121
|
+
);
|
|
122
|
+
return saved;
|
|
123
|
+
}
|
|
124
|
+
var searchCommand = defineCommand({
|
|
125
|
+
meta: {
|
|
126
|
+
name: "search",
|
|
127
|
+
description: "Search real landing-page sections for reference. Example: baker landing inspiration search 'dark developer hero with a terminal' --register dev-tool-minimal --scope all"
|
|
128
|
+
},
|
|
129
|
+
args: {
|
|
130
|
+
query: { type: "positional", description: "What you want to see, in plain English", required: false },
|
|
131
|
+
type: { type: "string", description: "Comma list of section types", required: false },
|
|
132
|
+
composition: { type: "string", description: "Comma list of composition patterns", required: false },
|
|
133
|
+
register: { type: "string", description: "Comma list of visual registers", required: false },
|
|
134
|
+
interaction: { type: "string", description: "Comma list of interaction patterns", required: false },
|
|
135
|
+
motion: { type: "string", description: "Comma list of motion kinds", required: false },
|
|
136
|
+
media: { type: "string", description: "Comma list of media kinds", required: false },
|
|
137
|
+
device: { type: "string", description: "Comma list of content devices", required: false },
|
|
138
|
+
theme: { type: "string", description: "light | dark | mixed", required: false },
|
|
139
|
+
"max-rank": { type: "string", description: "Show>Tell rank ceiling 1-7", required: false },
|
|
140
|
+
"min-craft": { type: "string", description: "Craft floor 0-1", required: false },
|
|
141
|
+
"min-fidelity": { type: "string", description: "Reproduction-fidelity floor 0-1", required: false },
|
|
142
|
+
domain: { type: "string", description: "Restrict to one site", required: false },
|
|
143
|
+
"similar-to": { type: "string", description: "Section id to find lookalikes of", required: false },
|
|
144
|
+
scope: { type: "string", description: "favorites (default) | all", required: false, default: "favorites" },
|
|
145
|
+
limit: { type: "string", description: "Max results (default 8)", required: false },
|
|
146
|
+
"no-images": { type: "boolean", description: "Skip downloading screenshots", required: false, default: false },
|
|
147
|
+
full: { type: "boolean", description: "Include every classification facet", required: false, default: false }
|
|
148
|
+
},
|
|
149
|
+
run: async ({ args }) => {
|
|
150
|
+
try {
|
|
151
|
+
const body = buildSearchBody(args);
|
|
152
|
+
const data = await apiPost("/api/landing-inspiration/search", body);
|
|
153
|
+
const results = Array.isArray(data?.results) ? data.results : [];
|
|
154
|
+
const shots = args["no-images"] ? /* @__PURE__ */ new Map() : await downloadShots(results);
|
|
155
|
+
const full = args.full;
|
|
156
|
+
const rows = results.map((result) => ({
|
|
157
|
+
id: result.id,
|
|
158
|
+
// The id `page` takes. Its own schema says "from a search result's source
|
|
159
|
+
// id", and until this line no projection emitted one — so the ordering
|
|
160
|
+
// view could only be reached straight after `add`, never from a search.
|
|
161
|
+
page_id: result.sourceId,
|
|
162
|
+
section: result.sectionType,
|
|
163
|
+
composition: result.composition,
|
|
164
|
+
look: result.visualRegister,
|
|
165
|
+
motion: result.motionSummary,
|
|
166
|
+
why_it_works: result.whyItWorks,
|
|
167
|
+
craft: Number(result.craftScore?.toFixed?.(2) ?? result.craftScore),
|
|
168
|
+
fidelity: result.fidelity,
|
|
169
|
+
domain: result.domain,
|
|
170
|
+
// Only worth saying when it means something: >1 marks a section the site
|
|
171
|
+
// reuses across its pages, which is a stronger signal than a one-off.
|
|
172
|
+
...result.pageCount > 1 ? { used_on_pages: result.pageCount } : {},
|
|
173
|
+
// With --no-images there is no file, so hand back the URL instead. A row
|
|
174
|
+
// with neither is a section the agent is asked to judge sight unseen,
|
|
175
|
+
// which is the one thing a visual library must never produce.
|
|
176
|
+
...args["no-images"] ? { screenshot_url: result.desktopShotUrl ?? null } : { screenshot: shots.get(result.id) ?? null },
|
|
177
|
+
...full ? {
|
|
178
|
+
theme: result.theme,
|
|
179
|
+
density: result.density,
|
|
180
|
+
show_tell_rank: result.showTellRank,
|
|
181
|
+
interactions: result.interactions,
|
|
182
|
+
media: result.mediaKinds,
|
|
183
|
+
devices: result.contentDevices,
|
|
184
|
+
tags: result.tags,
|
|
185
|
+
headline: result.headline,
|
|
186
|
+
source_url: result.sourceUrl
|
|
187
|
+
} : {}
|
|
188
|
+
}));
|
|
189
|
+
const hints = [INSPIRATION_HINTS.adapt];
|
|
190
|
+
const scopeHints = body.scope === "favorites" ? favoritesScopeHints(data.favoritesHealth, rows.length) : [];
|
|
191
|
+
if (scopeHints.length > 0) {
|
|
192
|
+
hints.push(...scopeHints);
|
|
193
|
+
} else if (rows.length === 0) {
|
|
194
|
+
hints.push(
|
|
195
|
+
body.scope === "favorites" ? "No matches in this company's saved sections. Retry with --scope all to search the whole library, or add a page with `baker landing inspiration add <url>`." : "No matches. Loosen the filters, or add reference pages with `baker landing inspiration add <url>`."
|
|
196
|
+
);
|
|
197
|
+
}
|
|
198
|
+
if (rows.length > 0 && data.moreInFullLibrary > 0) {
|
|
199
|
+
hints.push(`${data.moreInFullLibrary} more match in the full library \u2014 re-run with --scope all.`);
|
|
200
|
+
}
|
|
201
|
+
if (shots.size > 0) hints.push(`Screenshots saved to .baker/inspiration/ \u2014 Read them before deciding.`);
|
|
202
|
+
writeJson({
|
|
203
|
+
ok: true,
|
|
204
|
+
data: {
|
|
205
|
+
results: rows,
|
|
206
|
+
scope: data.scope,
|
|
207
|
+
more_in_full_library: data.moreInFullLibrary,
|
|
208
|
+
total: data.total,
|
|
209
|
+
// Only present when there was something to explain, so a healthy
|
|
210
|
+
// search pays nothing for it.
|
|
211
|
+
...data.favoritesHealth ? { saved_pages: data.favoritesHealth } : {}
|
|
212
|
+
},
|
|
213
|
+
hints
|
|
214
|
+
});
|
|
215
|
+
} catch (error) {
|
|
216
|
+
reportError(error);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
export {
|
|
221
|
+
buildSearchBody,
|
|
222
|
+
searchCommand
|
|
223
|
+
};
|
|
224
|
+
//# sourceMappingURL=search-2SVUDZIX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/landing/inspiration/search.ts"],"sourcesContent":["import path from \"node:path\";\nimport type { InspirationSearchRequest, InspirationSearchResponse } from \"@baker/api/landing-library\";\nimport { defineCommand } from \"citty\";\nimport { apiPost } from \"../../../client.ts\";\nimport { writeJson } from \"../../../output.ts\";\nimport { registerSchema } from \"../../../schemas.ts\";\nimport { favoritesScopeHints, INSPIRATION_HINTS, parseNumber, reportError, splitList } from \"./shared.ts\";\nimport { downloadReadableShot, READABLE_SHOT } from \"./shot.ts\";\n\nregisterSchema({\n command: \"landing.inspiration.search\",\n description:\n \"Search the shared library of real landing-page sections for reference before you design. Start here: baker landing inspiration search 'pricing with a monthly/annual toggle'. Returns the idea behind each section plus a downloaded screenshot you can Read. Defaults to this company's saved sections; pass --scope all for the whole library.\",\n args: {\n query: { type: \"string\", description: \"What you want to see, in plain English\", required: false },\n type: {\n type: \"string\",\n description: \"Comma list of section types: hero,pricing,faq,testimonials,…\",\n required: false,\n },\n composition: {\n type: \"string\",\n description: \"Comma list of composition patterns (references/composition.md)\",\n required: false,\n },\n register: {\n type: \"string\",\n description: \"Comma list of visual registers: dev-tool-minimal,luxury-high-end,…\",\n required: false,\n },\n interaction: { type: \"string\", description: \"Comma list of interaction patterns\", required: false },\n motion: {\n type: \"string\",\n description: \"Comma list of motion kinds: scroll-reveal,marquee,parallax,…\",\n required: false,\n },\n media: { type: \"string\", description: \"Comma list of media kinds\", required: false },\n device: { type: \"string\", description: \"Comma list of content devices\", required: false },\n theme: { type: \"string\", description: \"light | dark | mixed\", required: false },\n \"max-rank\": {\n type: \"number\",\n description: \"Show>Tell rank ceiling 1-7; 3 means 'rank 3 or better'\",\n required: false,\n },\n \"min-craft\": { type: \"number\", description: \"Craft floor 0-1\", required: false },\n \"min-fidelity\": {\n type: \"number\",\n description: \"Only sections whose markup reproduces this well (0-1)\",\n required: false,\n },\n domain: { type: \"string\", description: \"Restrict to one site\", required: false },\n \"similar-to\": {\n type: \"string\",\n description: \"Section id — find sections that look like this one\",\n required: false,\n },\n scope: { type: \"string\", description: \"favorites (default) | all\", required: false },\n limit: { type: \"number\", description: \"Max results (default 8)\", required: false },\n \"no-images\": { type: \"boolean\", description: \"Skip downloading screenshots\", required: false },\n full: {\n type: \"boolean\",\n description:\n \"Add every classification facet (theme, density, rank, interactions, media, devices, tags, headline)\",\n required: false,\n },\n },\n});\n\nexport function buildSearchBody(args: Record<string, unknown>): InspirationSearchRequest {\n const body: InspirationSearchRequest = {};\n const setList = (key: keyof InspirationSearchRequest, value: unknown) => {\n const list = splitList(value as string | undefined);\n if (list) Object.assign(body, { [key]: list });\n };\n\n if (args.query) body.query = String(args.query);\n if (args[\"similar-to\"]) body.similarToSectionId = String(args[\"similar-to\"]);\n setList(\"sectionType\", args.type);\n setList(\"composition\", args.composition);\n setList(\"visualRegister\", args.register);\n setList(\"interaction\", args.interaction);\n setList(\"motion\", args.motion);\n setList(\"mediaKind\", args.media);\n setList(\"contentDevice\", args.device);\n if (args.theme) body.theme = String(args.theme) as InspirationSearchRequest[\"theme\"];\n if (args.domain) body.domain = String(args.domain);\n\n const maxRank = parseNumber(args[\"max-rank\"] as string | undefined);\n if (maxRank !== undefined) body.maxShowTellRank = maxRank;\n const minCraft = parseNumber(args[\"min-craft\"] as string | undefined);\n if (minCraft !== undefined) body.minCraftScore = minCraft;\n const minFidelity = parseNumber(args[\"min-fidelity\"] as string | undefined);\n if (minFidelity !== undefined) body.minFidelity = minFidelity;\n const limit = parseNumber(args.limit as string | undefined);\n body.limit = limit ?? 8;\n body.scope = args.scope === \"all\" ? \"all\" : \"favorites\";\n return body;\n}\n\n/**\n * Put the screenshots on disk.\n *\n * The whole library is a visual one, and an agent that can only read a text\n * description of a section is working from exactly the second-hand doctrine this\n * was built to replace. Downloading each hit so it can be `Read` is the point.\n *\n * At the readable size, not the archive size — see `shot.ts`. This runs at the\n * default limit of eight hits, so the difference is eight 2x PNGs of context\n * against eight design-width renditions.\n */\nasync function downloadShots(results: InspirationSearchResponse[\"results\"]): Promise<Map<string, string>> {\n const dir = path.join(process.cwd(), \".baker\", \"inspiration\");\n const saved = new Map<string, string>();\n await Promise.all(\n results.map(async (result) => {\n const file = await downloadReadableShot(\n result.desktopShotUrl,\n path.join(dir, `${result.id}.${READABLE_SHOT.extension}`),\n );\n if (file) saved.set(result.id, file);\n }),\n );\n return saved;\n}\n\nexport const searchCommand = defineCommand({\n meta: {\n name: \"search\",\n description:\n \"Search real landing-page sections for reference. Example: baker landing inspiration search 'dark developer hero with a terminal' --register dev-tool-minimal --scope all\",\n },\n args: {\n query: { type: \"positional\", description: \"What you want to see, in plain English\", required: false },\n type: { type: \"string\", description: \"Comma list of section types\", required: false },\n composition: { type: \"string\", description: \"Comma list of composition patterns\", required: false },\n register: { type: \"string\", description: \"Comma list of visual registers\", required: false },\n interaction: { type: \"string\", description: \"Comma list of interaction patterns\", required: false },\n motion: { type: \"string\", description: \"Comma list of motion kinds\", required: false },\n media: { type: \"string\", description: \"Comma list of media kinds\", required: false },\n device: { type: \"string\", description: \"Comma list of content devices\", required: false },\n theme: { type: \"string\", description: \"light | dark | mixed\", required: false },\n \"max-rank\": { type: \"string\", description: \"Show>Tell rank ceiling 1-7\", required: false },\n \"min-craft\": { type: \"string\", description: \"Craft floor 0-1\", required: false },\n \"min-fidelity\": { type: \"string\", description: \"Reproduction-fidelity floor 0-1\", required: false },\n domain: { type: \"string\", description: \"Restrict to one site\", required: false },\n \"similar-to\": { type: \"string\", description: \"Section id to find lookalikes of\", required: false },\n scope: { type: \"string\", description: \"favorites (default) | all\", required: false, default: \"favorites\" },\n limit: { type: \"string\", description: \"Max results (default 8)\", required: false },\n \"no-images\": { type: \"boolean\", description: \"Skip downloading screenshots\", required: false, default: false },\n full: { type: \"boolean\", description: \"Include every classification facet\", required: false, default: false },\n },\n run: async ({ args }) => {\n try {\n const body = buildSearchBody(args as Record<string, unknown>);\n const data = await apiPost<InspirationSearchResponse>(\"/api/landing-inspiration/search\", body);\n const results = Array.isArray(data?.results) ? data.results : [];\n const shots = (args[\"no-images\"] as boolean) ? new Map<string, string>() : await downloadShots(results);\n\n const full = args.full as boolean;\n const rows = results.map((result) => ({\n id: result.id,\n // The id `page` takes. Its own schema says \"from a search result's source\n // id\", and until this line no projection emitted one — so the ordering\n // view could only be reached straight after `add`, never from a search.\n page_id: result.sourceId,\n section: result.sectionType,\n composition: result.composition,\n look: result.visualRegister,\n motion: result.motionSummary,\n why_it_works: result.whyItWorks,\n craft: Number(result.craftScore?.toFixed?.(2) ?? result.craftScore),\n fidelity: result.fidelity,\n domain: result.domain,\n // Only worth saying when it means something: >1 marks a section the site\n // reuses across its pages, which is a stronger signal than a one-off.\n ...(result.pageCount > 1 ? { used_on_pages: result.pageCount } : {}),\n // With --no-images there is no file, so hand back the URL instead. A row\n // with neither is a section the agent is asked to judge sight unseen,\n // which is the one thing a visual library must never produce.\n ...((args[\"no-images\"] as boolean)\n ? { screenshot_url: result.desktopShotUrl ?? null }\n : { screenshot: shots.get(result.id) ?? null }),\n ...(full\n ? {\n theme: result.theme,\n density: result.density,\n show_tell_rank: result.showTellRank,\n interactions: result.interactions,\n media: result.mediaKinds,\n devices: result.contentDevices,\n tags: result.tags,\n headline: result.headline,\n source_url: result.sourceUrl,\n }\n : {}),\n }));\n\n const hints = [INSPIRATION_HINTS.adapt];\n // A thin favorites result is explained by the state of the saved set, not\n // by the search — and the three states it can be in call for opposite\n // next moves. The scope is never widened here; it is only made legible.\n const scopeHints = body.scope === \"favorites\" ? favoritesScopeHints(data.favoritesHealth, rows.length) : [];\n if (scopeHints.length > 0) {\n hints.push(...scopeHints);\n } else if (rows.length === 0) {\n hints.push(\n body.scope === \"favorites\"\n ? \"No matches in this company's saved sections. Retry with --scope all to search the whole library, or add a page with `baker landing inspiration add <url>`.\"\n : \"No matches. Loosen the filters, or add reference pages with `baker landing inspiration add <url>`.\",\n );\n }\n if (rows.length > 0 && data.moreInFullLibrary > 0) {\n hints.push(`${data.moreInFullLibrary} more match in the full library — re-run with --scope all.`);\n }\n if (shots.size > 0) hints.push(`Screenshots saved to .baker/inspiration/ — Read them before deciding.`);\n\n writeJson({\n ok: true,\n data: {\n results: rows,\n scope: data.scope,\n more_in_full_library: data.moreInFullLibrary,\n total: data.total,\n // Only present when there was something to explain, so a healthy\n // search pays nothing for it.\n ...(data.favoritesHealth ? { saved_pages: data.favoritesHealth } : {}),\n },\n hints,\n });\n } catch (error) {\n reportError(error);\n }\n },\n});\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import {
|
|
2
|
+
buildSearchBody,
|
|
3
|
+
designedByDefault,
|
|
4
|
+
searchCommand,
|
|
5
|
+
searchErrorFix,
|
|
6
|
+
searchHints,
|
|
7
|
+
searchRejection,
|
|
8
|
+
unknownCountryFix
|
|
9
|
+
} from "./chunk-NOK7MSVJ.js";
|
|
10
|
+
import "./chunk-BR32GHYD.js";
|
|
11
|
+
import "./chunk-OIL6PU5W.js";
|
|
12
|
+
import "./chunk-CUL3VB4L.js";
|
|
13
|
+
import "./chunk-6YYSUISH.js";
|
|
14
|
+
import "./chunk-I4FTS5EE.js";
|
|
15
|
+
import "./chunk-MYTDK3AL.js";
|
|
16
|
+
import "./chunk-YQSBHWOI.js";
|
|
17
|
+
export {
|
|
18
|
+
buildSearchBody,
|
|
19
|
+
designedByDefault,
|
|
20
|
+
searchCommand,
|
|
21
|
+
searchErrorFix,
|
|
22
|
+
searchHints,
|
|
23
|
+
searchRejection,
|
|
24
|
+
unknownCountryFix
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=search-34NFJ5F6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import {
|
|
2
|
+
measureEmptyCorpus
|
|
3
|
+
} from "./chunk-44VXKO65.js";
|
|
4
|
+
import {
|
|
5
|
+
activeFilterFlags
|
|
6
|
+
} from "./chunk-Q6ULQMWG.js";
|
|
7
|
+
import {
|
|
8
|
+
testimonialSourceTypeSchema
|
|
9
|
+
} from "./chunk-O6XZIQXZ.js";
|
|
10
|
+
import "./chunk-GXDLWBOY.js";
|
|
11
|
+
import "./chunk-GIWHHCD6.js";
|
|
12
|
+
import "./chunk-UI6BKYQD.js";
|
|
13
|
+
import "./chunk-I2DNBEV6.js";
|
|
14
|
+
import {
|
|
15
|
+
ApiError,
|
|
16
|
+
apiPost
|
|
17
|
+
} from "./chunk-CUL3VB4L.js";
|
|
18
|
+
import "./chunk-6YYSUISH.js";
|
|
19
|
+
import "./chunk-I4FTS5EE.js";
|
|
20
|
+
import {
|
|
21
|
+
registerSchema,
|
|
22
|
+
testimonialNormalizer,
|
|
23
|
+
writeJson,
|
|
24
|
+
writeOutput
|
|
25
|
+
} from "./chunk-MYTDK3AL.js";
|
|
26
|
+
import "./chunk-YQSBHWOI.js";
|
|
27
|
+
|
|
28
|
+
// src/commands/testimonials/search.ts
|
|
29
|
+
import { defineCommand } from "citty";
|
|
30
|
+
var FILTER_FLAGS = ["source", "rating-min", "rating-max", "status", "sentiment", "language", "tags"];
|
|
31
|
+
function languageBiasHint(results, requestedLanguage) {
|
|
32
|
+
if (requestedLanguage) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
const withLang = results.filter((r) => typeof r.language === "string" && r.language.length > 0);
|
|
36
|
+
if (withLang.length < 3) {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
const counts = /* @__PURE__ */ new Map();
|
|
40
|
+
for (const r of withLang) {
|
|
41
|
+
const lang = r.language;
|
|
42
|
+
counts.set(lang, (counts.get(lang) ?? 0) + 1);
|
|
43
|
+
}
|
|
44
|
+
const [topLang, topCount] = [...counts.entries()].sort((a, b) => b[1] - a[1])[0] ?? ["", 0];
|
|
45
|
+
if (topLang && topCount / withLang.length >= 0.8) {
|
|
46
|
+
return `Results skew ${topLang} (${topCount}/${withLang.length}). If you're sourcing quotes for a specific market, pass --language <code> (e.g. --language en) so the ad's language matches its audience.`;
|
|
47
|
+
}
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
registerSchema({
|
|
51
|
+
command: "testimonials.search",
|
|
52
|
+
description: "Search testimonials by text query. Uses hybrid BM25 + vector + reranking.",
|
|
53
|
+
args: {
|
|
54
|
+
query: { type: "string", description: "Search query text", required: true },
|
|
55
|
+
limit: { type: "number", description: "Maximum results to return", required: false, default: 10 },
|
|
56
|
+
source: {
|
|
57
|
+
type: "string",
|
|
58
|
+
description: `Filter by source: ${testimonialSourceTypeSchema.options.join("|")}`,
|
|
59
|
+
required: false,
|
|
60
|
+
enum: [...testimonialSourceTypeSchema.options]
|
|
61
|
+
},
|
|
62
|
+
"rating-min": { type: "number", description: "Minimum star rating (1-5)", required: false },
|
|
63
|
+
"rating-max": { type: "number", description: "Maximum star rating (1-5)", required: false },
|
|
64
|
+
status: {
|
|
65
|
+
type: "string",
|
|
66
|
+
description: "Filter by status: pending|processing|ready|error",
|
|
67
|
+
required: false,
|
|
68
|
+
enum: ["pending", "processing", "ready", "error"]
|
|
69
|
+
},
|
|
70
|
+
sentiment: {
|
|
71
|
+
type: "string",
|
|
72
|
+
description: "Filter: positive|neutral|negative",
|
|
73
|
+
required: false,
|
|
74
|
+
enum: ["positive", "neutral", "negative"]
|
|
75
|
+
},
|
|
76
|
+
language: { type: "string", description: "Filter by language code (e.g. en, es)", required: false },
|
|
77
|
+
tags: { type: "string", description: "Comma-separated tags to filter by", required: false }
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
function buildSearchRequest(query, args) {
|
|
81
|
+
const body = { query };
|
|
82
|
+
if (args.limit !== void 0) {
|
|
83
|
+
body.limit = Number(args.limit);
|
|
84
|
+
}
|
|
85
|
+
if (args.source) {
|
|
86
|
+
body.source = args.source;
|
|
87
|
+
}
|
|
88
|
+
if (args["rating-min"] !== void 0) {
|
|
89
|
+
body.rating_min = Number(args["rating-min"]);
|
|
90
|
+
}
|
|
91
|
+
if (args["rating-max"] !== void 0) {
|
|
92
|
+
body.rating_max = Number(args["rating-max"]);
|
|
93
|
+
}
|
|
94
|
+
if (args.status) {
|
|
95
|
+
body.status = args.status;
|
|
96
|
+
}
|
|
97
|
+
if (args.sentiment) {
|
|
98
|
+
body.sentiment = args.sentiment;
|
|
99
|
+
}
|
|
100
|
+
if (args.language) {
|
|
101
|
+
body.language = args.language;
|
|
102
|
+
}
|
|
103
|
+
if (args.tags) {
|
|
104
|
+
body.tags = args.tags.split(",").filter(Boolean);
|
|
105
|
+
}
|
|
106
|
+
return body;
|
|
107
|
+
}
|
|
108
|
+
var searchCommand = defineCommand({
|
|
109
|
+
meta: {
|
|
110
|
+
name: "search",
|
|
111
|
+
description: "Semantic search testimonials by text query. Uses hybrid BM25 + vector + reranking. Example: baker testimonials search 'great service' --rating-min 4"
|
|
112
|
+
},
|
|
113
|
+
args: {
|
|
114
|
+
query: { type: "positional", description: "Search query text", required: false },
|
|
115
|
+
limit: { type: "string", description: "Max results (default 10)", required: false },
|
|
116
|
+
source: {
|
|
117
|
+
type: "string",
|
|
118
|
+
description: `Filter by source: ${testimonialSourceTypeSchema.options.join("|")}`,
|
|
119
|
+
required: false
|
|
120
|
+
},
|
|
121
|
+
"rating-min": { type: "string", description: "Minimum star rating (1-5)", required: false },
|
|
122
|
+
"rating-max": { type: "string", description: "Maximum star rating (1-5)", required: false },
|
|
123
|
+
status: { type: "string", description: "Filter by status: pending|processing|ready|error", required: false },
|
|
124
|
+
sentiment: { type: "string", description: "Filter: positive|neutral|negative", required: false },
|
|
125
|
+
language: { type: "string", description: "Filter by language code (e.g. en, es)", required: false },
|
|
126
|
+
tags: { type: "string", description: "Comma-separated tags to filter by", required: false },
|
|
127
|
+
output: { type: "string", description: "Output format: json|files|md", required: false, default: "json" },
|
|
128
|
+
fields: { type: "string", description: "Comma-separated field names to include", required: false },
|
|
129
|
+
full: { type: "boolean", description: "Include full metadata", required: false, default: false }
|
|
130
|
+
},
|
|
131
|
+
run: async ({ args }) => {
|
|
132
|
+
try {
|
|
133
|
+
const query = args.query;
|
|
134
|
+
if (!query) {
|
|
135
|
+
writeJson({ ok: false, error: { code: "VALIDATION_ERROR", message: "Search query is required" } });
|
|
136
|
+
process.exit(1);
|
|
137
|
+
}
|
|
138
|
+
const body = buildSearchRequest(query, args);
|
|
139
|
+
const data = await apiPost("/api/testimonials/search", body);
|
|
140
|
+
const languageHint = languageBiasHint(data, body.language);
|
|
141
|
+
const { hints: emptyHints, empty } = await measureEmptyCorpus({
|
|
142
|
+
command: "search",
|
|
143
|
+
resultCount: data.length,
|
|
144
|
+
activeFilters: activeFilterFlags(args, FILTER_FLAGS)
|
|
145
|
+
});
|
|
146
|
+
const hints = [...emptyHints, ...languageHint ? [languageHint] : []];
|
|
147
|
+
const outputFormat = args.output || "json";
|
|
148
|
+
writeOutput(
|
|
149
|
+
{ ok: true, data, ...empty ? { meta: { empty } } : {}, ...hints.length > 0 ? { hints } : {} },
|
|
150
|
+
outputFormat,
|
|
151
|
+
args.fields ? args.fields.split(",") : void 0,
|
|
152
|
+
args.full,
|
|
153
|
+
testimonialNormalizer
|
|
154
|
+
);
|
|
155
|
+
if (outputFormat !== "json") {
|
|
156
|
+
for (const hint of hints) {
|
|
157
|
+
process.stderr.write(`${hint}
|
|
158
|
+
`);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
} catch (err) {
|
|
162
|
+
if (err instanceof ApiError) {
|
|
163
|
+
writeJson({ ok: false, error: { code: err.code, message: err.message } });
|
|
164
|
+
process.exit(1);
|
|
165
|
+
}
|
|
166
|
+
writeJson({ ok: false, error: { code: "INTERNAL_ERROR", message: "Unexpected error" } });
|
|
167
|
+
process.exit(1);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
export {
|
|
172
|
+
searchCommand
|
|
173
|
+
};
|
|
174
|
+
//# sourceMappingURL=search-AOFAN5NB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/testimonials/search.ts"],"sourcesContent":["import {\n type TestimonialsSearchRequest,\n type TestimonialsSearchResponse,\n testimonialSourceTypeSchema,\n} from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { ApiError, apiPost } from \"../../client.ts\";\nimport { type OutputFormat, testimonialNormalizer, writeJson, writeOutput } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { activeFilterFlags } from \"../images/searchHints.ts\";\nimport { measureEmptyCorpus } from \"./emptyCorpusHints.ts\";\n\nconst FILTER_FLAGS = [\"source\", \"rating-min\", \"rating-max\", \"status\", \"sentiment\", \"language\", \"tags\"];\n\n/**\n * Hybrid search reranks over this company's whole corpus with no language\n * awareness, so a corpus seeded in one language returns that language even for\n * an English query. When the caller didn't pin a `--language` and the results\n * clearly skew to one, nudge them to scope by the target market's language —\n * otherwise a Spanish/French-heavy corpus silently starves a market-specific ad\n * of on-language quotes.\n */\nfunction languageBiasHint(results: TestimonialsSearchResponse, requestedLanguage: string | undefined): string | null {\n if (requestedLanguage) {\n return null;\n }\n const withLang = results.filter((r) => typeof r.language === \"string\" && r.language.length > 0);\n if (withLang.length < 3) {\n return null;\n }\n const counts = new Map<string, number>();\n for (const r of withLang) {\n const lang = r.language as string;\n counts.set(lang, (counts.get(lang) ?? 0) + 1);\n }\n const [topLang, topCount] = [...counts.entries()].sort((a, b) => b[1] - a[1])[0] ?? [\"\", 0];\n if (topLang && topCount / withLang.length >= 0.8) {\n return `Results skew ${topLang} (${topCount}/${withLang.length}). If you're sourcing quotes for a specific market, pass --language <code> (e.g. --language en) so the ad's language matches its audience.`;\n }\n return null;\n}\n\nregisterSchema({\n command: \"testimonials.search\",\n description: \"Search testimonials by text query. Uses hybrid BM25 + vector + reranking.\",\n args: {\n query: { type: \"string\", description: \"Search query text\", required: true },\n limit: { type: \"number\", description: \"Maximum results to return\", required: false, default: 10 },\n source: {\n type: \"string\",\n description: `Filter by source: ${testimonialSourceTypeSchema.options.join(\"|\")}`,\n required: false,\n enum: [...testimonialSourceTypeSchema.options],\n },\n \"rating-min\": { type: \"number\", description: \"Minimum star rating (1-5)\", required: false },\n \"rating-max\": { type: \"number\", description: \"Maximum star rating (1-5)\", required: false },\n status: {\n type: \"string\",\n description: \"Filter by status: pending|processing|ready|error\",\n required: false,\n enum: [\"pending\", \"processing\", \"ready\", \"error\"],\n },\n sentiment: {\n type: \"string\",\n description: \"Filter: positive|neutral|negative\",\n required: false,\n enum: [\"positive\", \"neutral\", \"negative\"],\n },\n language: { type: \"string\", description: \"Filter by language code (e.g. en, es)\", required: false },\n tags: { type: \"string\", description: \"Comma-separated tags to filter by\", required: false },\n },\n});\n\n/** Assemble the search request body from CLI args, applying only the flags that were provided. */\nfunction buildSearchRequest(query: string, args: Record<string, unknown>): TestimonialsSearchRequest {\n const body: TestimonialsSearchRequest = { query };\n if (args.limit !== undefined) {\n body.limit = Number(args.limit);\n }\n if (args.source) {\n body.source = args.source as TestimonialsSearchRequest[\"source\"];\n }\n if (args[\"rating-min\"] !== undefined) {\n body.rating_min = Number(args[\"rating-min\"]);\n }\n if (args[\"rating-max\"] !== undefined) {\n body.rating_max = Number(args[\"rating-max\"]);\n }\n if (args.status) {\n body.status = args.status as TestimonialsSearchRequest[\"status\"];\n }\n if (args.sentiment) {\n body.sentiment = args.sentiment as TestimonialsSearchRequest[\"sentiment\"];\n }\n if (args.language) {\n body.language = args.language as string;\n }\n if (args.tags) {\n body.tags = (args.tags as string).split(\",\").filter(Boolean);\n }\n return body;\n}\n\nexport const searchCommand = defineCommand({\n meta: {\n name: \"search\",\n description:\n \"Semantic search testimonials by text query. Uses hybrid BM25 + vector + reranking. Example: baker testimonials search 'great service' --rating-min 4\",\n },\n args: {\n query: { type: \"positional\", description: \"Search query text\", required: false },\n limit: { type: \"string\", description: \"Max results (default 10)\", required: false },\n source: {\n type: \"string\",\n description: `Filter by source: ${testimonialSourceTypeSchema.options.join(\"|\")}`,\n required: false,\n },\n \"rating-min\": { type: \"string\", description: \"Minimum star rating (1-5)\", required: false },\n \"rating-max\": { type: \"string\", description: \"Maximum star rating (1-5)\", required: false },\n status: { type: \"string\", description: \"Filter by status: pending|processing|ready|error\", required: false },\n sentiment: { type: \"string\", description: \"Filter: positive|neutral|negative\", required: false },\n language: { type: \"string\", description: \"Filter by language code (e.g. en, es)\", required: false },\n tags: { type: \"string\", description: \"Comma-separated tags to filter by\", required: false },\n output: { type: \"string\", description: \"Output format: json|files|md\", required: false, default: \"json\" },\n fields: { type: \"string\", description: \"Comma-separated field names to include\", required: false },\n full: { type: \"boolean\", description: \"Include full metadata\", required: false, default: false },\n },\n run: async ({ args }) => {\n try {\n const query = args.query as string | undefined;\n if (!query) {\n writeJson({ ok: false, error: { code: \"VALIDATION_ERROR\", message: \"Search query is required\" } });\n process.exit(1);\n }\n\n const body = buildSearchRequest(query, args);\n const data = await apiPost<TestimonialsSearchResponse>(\"/api/testimonials/search\", body);\n const languageHint = languageBiasHint(data, body.language);\n const { hints: emptyHints, empty } = await measureEmptyCorpus({\n command: \"search\",\n resultCount: data.length,\n activeFilters: activeFilterFlags(args, FILTER_FLAGS),\n });\n const hints = [...emptyHints, ...(languageHint ? [languageHint] : [])];\n const outputFormat = (args.output as OutputFormat) || \"json\";\n writeOutput(\n { ok: true, data, ...(empty ? { meta: { empty } } : {}), ...(hints.length > 0 ? { hints } : {}) },\n outputFormat,\n args.fields ? args.fields.split(\",\") : undefined,\n args.full as boolean,\n testimonialNormalizer,\n );\n // md/files render only the table, so hints (which never reach the table)\n // go to stderr — otherwise `--output md` hides the language skew, and an\n // empty result prints a header row and nothing else.\n if (outputFormat !== \"json\") {\n for (const hint of hints) {\n process.stderr.write(`${hint}\\n`);\n }\n }\n } catch (err) {\n if (err instanceof ApiError) {\n writeJson({ ok: false, error: { code: err.code, message: err.message } });\n process.exit(1);\n }\n writeJson({ ok: false, error: { code: \"INTERNAL_ERROR\", message: \"Unexpected error\" } });\n process.exit(1);\n }\n },\n});\n"],"mappings":"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","names":[]}
|