@koda-sl/baker-cli 0.512.0 → 0.514.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/account-D6LEVVWT.js +82 -0
- package/dist/account-D6LEVVWT.js.map +1 -0
- package/dist/account-SGK3IJ6N.js +82 -0
- package/dist/account-SGK3IJ6N.js.map +1 -0
- package/dist/account-assets-J5Z4URLQ.js +290 -0
- package/dist/account-level-4SBYYHRS.js +611 -0
- package/dist/account-level-4SBYYHRS.js.map +1 -0
- package/dist/account-reads-2MSUVG46.js +219 -0
- package/dist/account-users-MHC7AD6K.js +64 -0
- package/dist/account-users-MHC7AD6K.js.map +1 -0
- package/dist/account-writes-QQQC54WC.js +68 -0
- package/dist/account-writes-QQQC54WC.js.map +1 -0
- package/dist/accounts-2O6I7YBN.js +80 -0
- package/dist/accounts-2O6I7YBN.js.map +1 -0
- package/dist/accounts-QNE5QWBG.js +701 -0
- package/dist/accounts-QNE5QWBG.js.map +1 -0
- package/dist/actions-D7OWCP36.js +55 -0
- package/dist/activecampaign-LBS4M4C4.js +938 -0
- package/dist/activecampaign-LBS4M4C4.js.map +1 -0
- package/dist/ad-group-writes-CJTTUUIT.js +172 -0
- package/dist/ad-group-writes-CJTTUUIT.js.map +1 -0
- package/dist/ad-groups-HLGSVH74.js +70 -0
- package/dist/ad-groups-HLGSVH74.js.map +1 -0
- package/dist/ad-writes-3UE3U7VE.js +176 -0
- package/dist/ad-writes-3UE3U7VE.js.map +1 -0
- package/dist/add-HFQB2NTU.js +107 -0
- package/dist/add-HFQB2NTU.js.map +1 -0
- package/dist/add-IUYE5H6A.js +305 -0
- package/dist/add-IUYE5H6A.js.map +1 -0
- package/dist/ads-HLUJB5SQ.js +48 -0
- package/dist/ads-MAOI7S6V.js +115 -0
- package/dist/ads-PYNDMHUD.js +79 -0
- package/dist/ads-PYNDMHUD.js.map +1 -0
- package/dist/adsets-QRKICEFD.js +182 -0
- package/dist/advertisers-XXM6POO5.js +123 -0
- package/dist/advertisers-XXM6POO5.js.map +1 -0
- package/dist/analytics-AULKYNNT.js +447 -0
- package/dist/analytics-AULKYNNT.js.map +1 -0
- package/dist/analytics-DNDTC643.js +2437 -0
- package/dist/analytics-DNDTC643.js.map +1 -0
- package/dist/asset-writes-JLVUAVUZ.js +50 -0
- package/dist/assign-2GQVQKKO.js +80 -0
- package/dist/assign-2GQVQKKO.js.map +1 -0
- package/dist/audience-size-C3YHQPZB.js +76 -0
- package/dist/audience-size-C3YHQPZB.js.map +1 -0
- package/dist/audience-writes-CDKQB3SM.js +327 -0
- package/dist/audience-writes-CDKQB3SM.js.map +1 -0
- package/dist/audiences-CDDI5HR5.js +86 -0
- package/dist/audiences-M3A3QK52.js +280 -0
- package/dist/audiences-M3A3QK52.js.map +1 -0
- package/dist/audit-FLPJ7GTE.js +154 -0
- package/dist/audit-FLPJ7GTE.js.map +1 -0
- package/dist/autocomplete-ZYMHHV7E.js +114 -0
- package/dist/autocomplete-ZYMHHV7E.js.map +1 -0
- package/dist/avatars-WZ2JDMHH.js +38 -0
- package/dist/bid-pricing-H3M63PTW.js +103 -0
- package/dist/bid-pricing-H3M63PTW.js.map +1 -0
- package/dist/brand-IZTTBZII.js +22 -0
- package/dist/brief-OPQ7ICOY.js +543 -0
- package/dist/brief-OPQ7ICOY.js.map +1 -0
- package/dist/campaign-groups-IQSDKOVI.js +99 -0
- package/dist/campaign-groups-IQSDKOVI.js.map +1 -0
- package/dist/campaign-writes-APAAV4ZU.js +168 -0
- package/dist/campaign-writes-APAAV4ZU.js.map +1 -0
- package/dist/campaign-writes-BN4PZP4Z.js +176 -0
- package/dist/campaign-writes-BN4PZP4Z.js.map +1 -0
- package/dist/campaigns-4Y3JQC2U.js +111 -0
- package/dist/campaigns-GA34MEN2.js +78 -0
- package/dist/campaigns-GA34MEN2.js.map +1 -0
- package/dist/campaigns-HES5MDUG.js +130 -0
- package/dist/campaigns-K2FVD3XW.js +113 -0
- package/dist/campaigns-K2FVD3XW.js.map +1 -0
- package/dist/canvas-IQ753Q2O.js +46 -0
- package/dist/capabilities-ZITW4RF7.js +147 -0
- package/dist/capabilities-ZITW4RF7.js.map +1 -0
- package/dist/catalogs-TGLSJEK5.js +781 -0
- package/dist/catalogs-TGLSJEK5.js.map +1 -0
- package/dist/catalogs-ZR7DECMG.js +130 -0
- package/dist/catalogs-ZR7DECMG.js.map +1 -0
- package/dist/changes-VWKTM27U.js +135 -0
- package/dist/chatgpt-OPOD2WHB.js +47 -0
- package/dist/chats-AL2SYBJO.js +279 -0
- package/dist/chats-AL2SYBJO.js.map +1 -0
- package/dist/check-U2YLRD6H.js +107 -0
- package/dist/check-U2YLRD6H.js.map +1 -0
- package/dist/chunk-2GYCWRF3.js +170 -0
- package/dist/chunk-2L7F7KR4.js +61 -0
- package/dist/chunk-44ZRCSR7.js +228 -0
- package/dist/chunk-46YLDIQG.js +4254 -0
- package/dist/chunk-4EDWXZ3I.js +363 -0
- package/dist/chunk-4FFBGR5L.js +66 -0
- package/dist/chunk-4UQRXKYJ.js +219 -0
- package/dist/chunk-4UZUUSVL.js +592 -0
- package/dist/chunk-4XHCEYHI.js +831 -0
- package/dist/chunk-4Z6PVR3M.js +479 -0
- package/dist/chunk-5Y5FZV2W.js +122 -0
- package/dist/chunk-6HJXLGDV.js +392 -0
- package/dist/chunk-6S5CWGDA.js +429 -0
- package/dist/chunk-6VYROVWO.js +494 -0
- package/dist/chunk-7BUIOP36.js +287 -0
- package/dist/chunk-AQRXXC6E.js +319 -0
- package/dist/chunk-ARBXT73X.js +387 -0
- package/dist/chunk-BEZHQIEI.js +97 -0
- package/dist/chunk-BFURWHVR.js +547 -0
- package/dist/chunk-BX6B25KK.js +358 -0
- package/dist/chunk-BX6B25KK.js.map +1 -0
- package/dist/chunk-DSCEXBDR.js +676 -0
- package/dist/chunk-FLWDFPXE.js +23 -0
- package/dist/chunk-FRNBRN2C.js +1646 -0
- package/dist/chunk-G4FG5EQO.js +110 -0
- package/dist/chunk-G4FG5EQO.js.map +1 -0
- package/dist/chunk-GE3VT3CA.js +51 -0
- package/dist/chunk-GW2WRZZA.js +24026 -0
- package/dist/chunk-GW2WRZZA.js.map +1 -0
- package/dist/chunk-HGBJQGO5.js +142 -0
- package/dist/chunk-I7AYMJZA.js +783 -0
- package/dist/chunk-IRM273C7.js +207 -0
- package/dist/chunk-IWKD56AY.js +156 -0
- package/dist/chunk-JLAQWMVF.js +3868 -0
- package/dist/chunk-JOE42ZW6.js +2984 -0
- package/dist/chunk-JOE42ZW6.js.map +1 -0
- package/dist/chunk-K6NULQN7.js +57 -0
- package/dist/chunk-L2BRAC2J.js +19 -0
- package/dist/chunk-LGMI4LSY.js +455 -0
- package/dist/chunk-NB2FU6EZ.js +179 -0
- package/dist/chunk-NKQWDEB7.js +115 -0
- package/dist/chunk-NKQWDEB7.js.map +1 -0
- package/dist/chunk-NWF2LRKO.js +188 -0
- package/dist/chunk-OG47L5GG.js +275 -0
- package/dist/chunk-OR6KVLI5.js +169 -0
- package/dist/chunk-PC3FJEZH.js +7211 -0
- package/dist/chunk-PC3FJEZH.js.map +1 -0
- package/dist/chunk-Q3GSVLE5.js +4274 -0
- package/dist/chunk-Q3GSVLE5.js.map +1 -0
- package/dist/chunk-QDQZ62FL.js +207 -0
- package/dist/chunk-QIOFOD4K.js +344 -0
- package/dist/chunk-R2SYF5FC.js +249 -0
- package/dist/chunk-RTH2I55B.js +942 -0
- package/dist/chunk-S6VFDNSQ.js +63 -0
- package/dist/chunk-SG2TDQEE.js +150 -0
- package/dist/chunk-SOPVIIUW.js +68 -0
- package/dist/chunk-SOPVIIUW.js.map +1 -0
- package/dist/chunk-T3P6O2VU.js +89 -0
- package/dist/chunk-TXDE2QJ3.js +604 -0
- package/dist/chunk-UDIEKCIR.js +203 -0
- package/dist/chunk-USCADMM3.js +163 -0
- package/dist/chunk-UUGISMNE.js +910 -0
- package/dist/chunk-VDPOCAQ2.js +197 -0
- package/dist/chunk-VEJ3QX6M.js +103 -0
- package/dist/chunk-VFJB7OG6.js +91 -0
- package/dist/chunk-VRIPVLE7.js +8954 -0
- package/dist/chunk-WFY7KSHB.js +274 -0
- package/dist/chunk-WLESMH4J.js +45 -0
- package/dist/chunk-XHQYFNNK.js +846 -0
- package/dist/chunk-XOQNM7I4.js +396 -0
- package/dist/chunk-XOQNM7I4.js.map +1 -0
- package/dist/chunk-YILZR3XI.js +224 -0
- package/dist/chunk-YJFLXOH4.js +191 -0
- package/dist/chunk-YWHZYR6S.js +297 -0
- package/dist/claim-GOLUTAJ3.js +200 -0
- package/dist/claim-GOLUTAJ3.js.map +1 -0
- package/dist/cli.js +30 -30
- package/dist/companies-4AJJGTMC.js +198 -0
- package/dist/companies-4AJJGTMC.js.map +1 -0
- package/dist/company-MOSPLRZJ.js +308 -0
- package/dist/company-MOSPLRZJ.js.map +1 -0
- package/dist/complete-777BDV45.js +84 -0
- package/dist/complete-777BDV45.js.map +1 -0
- package/dist/connect-3YY7MF3I.js +45 -0
- package/dist/conversation-KROMHDHK.js +96 -0
- package/dist/conversation-KROMHDHK.js.map +1 -0
- package/dist/conversion-report-JZHI2IHY.js +127 -0
- package/dist/conversion-report-JZHI2IHY.js.map +1 -0
- package/dist/conversion-upload-command-7RSZ5ZQU.js +439 -0
- package/dist/conversion-writes-SNCLQDXQ.js +122 -0
- package/dist/conversion-writes-SNCLQDXQ.js.map +1 -0
- package/dist/conversions-43EYP2W2.js +140 -0
- package/dist/conversions-43EYP2W2.js.map +1 -0
- package/dist/conversions-EUOWILCQ.js +78 -0
- package/dist/conversions-EUOWILCQ.js.map +1 -0
- package/dist/copy-writes-CIHIFLY6.js +170 -0
- package/dist/copy-writes-CIHIFLY6.js.map +1 -0
- package/dist/create-3WOZO2XT.js +239 -0
- package/dist/create-3WOZO2XT.js.map +1 -0
- package/dist/create-7IFYLX7P.js +210 -0
- package/dist/create-7IFYLX7P.js.map +1 -0
- package/dist/create-FOHIQC3E.js +62 -0
- package/dist/create-FOHIQC3E.js.map +1 -0
- package/dist/create-UWQSQTK6.js +135 -0
- package/dist/create-UWQSQTK6.js.map +1 -0
- package/dist/creatives-2DR3QHJW.js +58 -0
- package/dist/creatives-BB6S2OF6.js +89 -0
- package/dist/creatives-KUO67WYA.js +223 -0
- package/dist/creatives-KUO67WYA.js.map +1 -0
- package/dist/credentials-IP4L37XP.js +290 -0
- package/dist/credentials-IP4L37XP.js.map +1 -0
- package/dist/critique-LGDNMLBL.js +232 -0
- package/dist/critique-LGDNMLBL.js.map +1 -0
- package/dist/critique-LJMFAURK.js +1451 -0
- package/dist/critique-LJMFAURK.js.map +1 -0
- package/dist/crm-BNYW7PF7.js +323 -0
- package/dist/crm-BNYW7PF7.js.map +1 -0
- package/dist/crm-J53V2QTN.js +227 -0
- package/dist/crm-J53V2QTN.js.map +1 -0
- package/dist/currency-X7Y6TSLF.js +88 -0
- package/dist/custom-conversions-HAGG72LF.js +128 -0
- package/dist/customers-663K2OCP.js +59 -0
- package/dist/delete-5W3YVA4L.js +67 -0
- package/dist/delete-5W3YVA4L.js.map +1 -0
- package/dist/delete-6U7E6YUW.js +57 -0
- package/dist/delete-6U7E6YUW.js.map +1 -0
- package/dist/delete-G4NY6ZG6.js +69 -0
- package/dist/delete-G4NY6ZG6.js.map +1 -0
- package/dist/demographics-4Y5LTCU4.js +141 -0
- package/dist/demographics-4Y5LTCU4.js.map +1 -0
- package/dist/discard-RKCZNKMN.js +69 -0
- package/dist/discard-RKCZNKMN.js.map +1 -0
- package/dist/discover-6DORQWXY.js +172 -0
- package/dist/domain-PLA2O4FW.js +101 -0
- package/dist/domain-PLA2O4FW.js.map +1 -0
- package/dist/download-4EFLVSA4.js +172 -0
- package/dist/download-4EFLVSA4.js.map +1 -0
- package/dist/draft-4V7W5DV2.js +310 -0
- package/dist/draft-4V7W5DV2.js.map +1 -0
- package/dist/draft-HY3U2GHU.js +283 -0
- package/dist/draft-HY3U2GHU.js.map +1 -0
- package/dist/draft-JMNAGW7C.js +220 -0
- package/dist/draft-JMNAGW7C.js.map +1 -0
- package/dist/draft-R6EKORNS.js +308 -0
- package/dist/draft-TRPQCJ4B.js +335 -0
- package/dist/draft-TRPQCJ4B.js.map +1 -0
- package/dist/experiments-4V242DG2.js +236 -0
- package/dist/experiments-4V242DG2.js.map +1 -0
- package/dist/facets-WXJ2MCU6.js +117 -0
- package/dist/facets-WXJ2MCU6.js.map +1 -0
- package/dist/feedback-IRSRPXV6.js +111 -0
- package/dist/feedback-IRSRPXV6.js.map +1 -0
- package/dist/feedback-record-DT3R4NA3.js +265 -0
- package/dist/feedback-record-DT3R4NA3.js.map +1 -0
- package/dist/fetch-YLQP5VQL.js +179 -0
- package/dist/fetch-YLQP5VQL.js.map +1 -0
- package/dist/fit-BEFCY2B4.js +65 -0
- package/dist/flows-FDMF3F3P.js +250 -0
- package/dist/flows-FDMF3F3P.js.map +1 -0
- package/dist/fonts-C6XN5667.js +39 -0
- package/dist/forecast-BTPIXEQ5.js +169 -0
- package/dist/forecast-ZTXZD3HD.js +121 -0
- package/dist/forecast-ZTXZD3HD.js.map +1 -0
- package/dist/funnel-7KOEX7YM.js +397 -0
- package/dist/funnel-7KOEX7YM.js.map +1 -0
- package/dist/get-KBSKPTAV.js +59 -0
- package/dist/get-KBSKPTAV.js.map +1 -0
- package/dist/get-OSVQVMP6.js +82 -0
- package/dist/get-OSVQVMP6.js.map +1 -0
- package/dist/google-M6BJ22UL.js +3267 -0
- package/dist/google-ads-XCJVAXWF.js +198 -0
- package/dist/google-ads-XCJVAXWF.js.map +1 -0
- package/dist/history-3NTM5SFN.js +69 -0
- package/dist/history-3NTM5SFN.js.map +1 -0
- package/dist/history-4TN2A6BL.js +136 -0
- package/dist/history-4TN2A6BL.js.map +1 -0
- package/dist/history-5IWW2X33.js +102 -0
- package/dist/history-5IWW2X33.js.map +1 -0
- package/dist/hubspot-HMVSRJQZ.js +782 -0
- package/dist/hubspot-HMVSRJQZ.js.map +1 -0
- package/dist/ideas-M66FU45H.js +45 -0
- package/dist/images-MM5OPUKV.js +92 -0
- package/dist/ingest-GU3WEBN3.js +110 -0
- package/dist/ingest-GU3WEBN3.js.map +1 -0
- package/dist/ingest-KMLYCFF4.js +26 -0
- package/dist/insights-CQCWOCIT.js +132 -0
- package/dist/insights-CQCWOCIT.js.map +1 -0
- package/dist/insights-XZL2EM53.js +439 -0
- package/dist/insights-XZL2EM53.js.map +1 -0
- package/dist/inspect-4JO2J3D6.js +192 -0
- package/dist/inspect-4JO2J3D6.js.map +1 -0
- package/dist/instant-experiences-RM4MLJTL.js +260 -0
- package/dist/instant-experiences-RM4MLJTL.js.map +1 -0
- package/dist/intent-YCQCUCV3.js +95 -0
- package/dist/keyword-gap-PUSF7EKY.js +130 -0
- package/dist/keyword-metrics-JXBM22ZD.js +200 -0
- package/dist/keyword-metrics-JXBM22ZD.js.map +1 -0
- package/dist/keywords-for-site-OAYA7KP7.js +131 -0
- package/dist/keywords-for-site-OAYA7KP7.js.map +1 -0
- package/dist/landing-OZU5RRFV.js +28 -0
- package/dist/languages-SLFV73GE.js +40 -0
- package/dist/leads-Q7APIJRQ.js +115 -0
- package/dist/leads-Q7APIJRQ.js.map +1 -0
- package/dist/leads-ULYHTG22.js +540 -0
- package/dist/leads-ULYHTG22.js.map +1 -0
- package/dist/learn-NBBJRMVZ.js +207 -0
- package/dist/learn-NBBJRMVZ.js.map +1 -0
- package/dist/line-item-writes-X3L5NQEH.js +211 -0
- package/dist/line-item-writes-X3L5NQEH.js.map +1 -0
- package/dist/line-items-NJMEPEF5.js +107 -0
- package/dist/link-WZSNUQQ2.js +67 -0
- package/dist/link-WZSNUQQ2.js.map +1 -0
- package/dist/linkedin-55PAID62.js +1316 -0
- package/dist/linkedin-55PAID62.js.map +1 -0
- package/dist/linkedin-person-MVRI7LLC.js +139 -0
- package/dist/linkedin-person-MVRI7LLC.js.map +1 -0
- package/dist/list-6S54IAUX.js +67 -0
- package/dist/list-6S54IAUX.js.map +1 -0
- package/dist/list-QRJ4E3SC.js +154 -0
- package/dist/list-QRJ4E3SC.js.map +1 -0
- package/dist/list-RZUDFLJN.js +306 -0
- package/dist/list-RZUDFLJN.js.map +1 -0
- package/dist/locations-T2OMP6QN.js +40 -0
- package/dist/locations-W3VOYBWL.js +69 -0
- package/dist/locations-W3VOYBWL.js.map +1 -0
- package/dist/log-53SAPZZ3.js +95 -0
- package/dist/log-53SAPZZ3.js.map +1 -0
- package/dist/lookup-S5VG7AWH.js +23 -0
- package/dist/make-ZF3YIMKW.js +1370 -0
- package/dist/make-ZF3YIMKW.js.map +1 -0
- package/dist/map-J37QFJSV.js +436 -0
- package/dist/map-J37QFJSV.js.map +1 -0
- package/dist/mcp-YRIFPYNU.js +717 -0
- package/dist/mcp-YRIFPYNU.js.map +1 -0
- package/dist/media-P4T4ZBNS.js +18 -0
- package/dist/media-sources-EQI3U4TC.js +35 -0
- package/dist/members-GYVMSCKL.js +47 -0
- package/dist/members-GYVMSCKL.js.map +1 -0
- package/dist/meta-IPLWNYC7.js +122 -0
- package/dist/metrics-4YVJHYRI.js +152 -0
- package/dist/normalize-MFN3WCH5.js +144 -0
- package/dist/normalize-MFN3WCH5.js.map +1 -0
- package/dist/options-DLHDHO7H.js +125 -0
- package/dist/options-DLHDHO7H.js.map +1 -0
- package/dist/organization-C2VOA2SD.js +949 -0
- package/dist/organization-C2VOA2SD.js.map +1 -0
- package/dist/page-photos-OQ5QATQH.js +118 -0
- package/dist/page-photos-OQ5QATQH.js.map +1 -0
- package/dist/performance-NIF3CESZ.js +27 -0
- package/dist/performance-T6TBVHVU.js +5541 -0
- package/dist/performance-T6TBVHVU.js.map +1 -0
- package/dist/pixels-LQAJOZIM.js +62 -0
- package/dist/pixels-LQAJOZIM.js.map +1 -0
- package/dist/plan-7UF76Q6U.js +208 -0
- package/dist/plan-7UF76Q6U.js.map +1 -0
- package/dist/preview-LRJOQ7LM.js +218 -0
- package/dist/preview-LRJOQ7LM.js.map +1 -0
- package/dist/promoted-tweet-writes-Y6BBOWDL.js +183 -0
- package/dist/promoted-tweet-writes-Y6BBOWDL.js.map +1 -0
- package/dist/promoted-tweets-RJT53DRM.js +119 -0
- package/dist/publish-IOTMJCCY.js +344 -0
- package/dist/publish-IOTMJCCY.js.map +1 -0
- package/dist/query-XZMDGRO5.js +62 -0
- package/dist/questionnaire-DWEH5II4.js +94 -0
- package/dist/questionnaire-DWEH5II4.js.map +1 -0
- package/dist/reddit-JIHMAKAQ.js +29 -0
- package/dist/refresh-OQZ263CS.js +97 -0
- package/dist/refresh-OQZ263CS.js.map +1 -0
- package/dist/release-4CHFURO3.js +63 -0
- package/dist/release-4CHFURO3.js.map +1 -0
- package/dist/relevant-pages-FS7GBVXK.js +99 -0
- package/dist/remove-IJQPHPDI.js +53 -0
- package/dist/remove-IJQPHPDI.js.map +1 -0
- package/dist/reopen-YTLPVKUR.js +66 -0
- package/dist/reopen-YTLPVKUR.js.map +1 -0
- package/dist/rerun-C7NB7B35.js +95 -0
- package/dist/rerun-C7NB7B35.js.map +1 -0
- package/dist/research-PNBACCCP.js +72 -0
- package/dist/research-TLHNPK3O.js +265 -0
- package/dist/research-TLHNPK3O.js.map +1 -0
- package/dist/reset-JVLW7HA2.js +57 -0
- package/dist/reset-JVLW7HA2.js.map +1 -0
- package/dist/reset-Y6FXLAQE.js +57 -0
- package/dist/reset-Y6FXLAQE.js.map +1 -0
- package/dist/resolve-YLRESES5.js +124 -0
- package/dist/resolve-YLRESES5.js.map +1 -0
- package/dist/retry-3V3IGDRR.js +65 -0
- package/dist/retry-3V3IGDRR.js.map +1 -0
- package/dist/retry-AEKQLQMP.js +63 -0
- package/dist/retry-AEKQLQMP.js.map +1 -0
- package/dist/revenue-E4GQIOUY.js +91 -0
- package/dist/revenue-E4GQIOUY.js.map +1 -0
- package/dist/rule-writes-UAVWT4XS.js +525 -0
- package/dist/rule-writes-UAVWT4XS.js.map +1 -0
- package/dist/rules-34BQAWU3.js +99 -0
- package/dist/rules-34BQAWU3.js.map +1 -0
- package/dist/rules-ZVS2MWED.js +217 -0
- package/dist/rules-add-CM5XUYNS.js +465 -0
- package/dist/rules-add-CM5XUYNS.js.map +1 -0
- package/dist/run-MD64RDHZ.js +69 -0
- package/dist/run-MD64RDHZ.js.map +1 -0
- package/dist/run-QCNRR3CA.js +70 -0
- package/dist/scaffold-ad-NADPY3CB.js +1516 -0
- package/dist/scaffold-ad-NADPY3CB.js.map +1 -0
- package/dist/scaffold-static-ad-5YEYYVYH.js +1015 -0
- package/dist/scaffold-static-ad-5YEYYVYH.js.map +1 -0
- package/dist/scaffold-video-W7DF2CBJ.js +888 -0
- package/dist/scaffold-video-W7DF2CBJ.js.map +1 -0
- package/dist/schedule-CTRRF6TS.js +64 -0
- package/dist/schedule-CTRRF6TS.js.map +1 -0
- package/dist/scheduled-agents-OXYAVSIE.js +55 -0
- package/dist/schema-BEUYOGSW.js +135 -0
- package/dist/schema-BEUYOGSW.js.map +1 -0
- package/dist/search-GFJKWPKN.js +177 -0
- package/dist/search-GFJKWPKN.js.map +1 -0
- package/dist/select-S72CCL57.js +106 -0
- package/dist/select-S72CCL57.js.map +1 -0
- package/dist/sends-LAY5C74B.js +349 -0
- package/dist/sends-LAY5C74B.js.map +1 -0
- package/dist/set-prompt-YYFDRXRI.js +198 -0
- package/dist/set-prompt-YYFDRXRI.js.map +1 -0
- package/dist/setup-links-D4JJLESN.js +144 -0
- package/dist/setup-links-D4JJLESN.js.map +1 -0
- package/dist/shopify-T4UWFIQC.js +3958 -0
- package/dist/shopify-T4UWFIQC.js.map +1 -0
- package/dist/site-BBZAUZA3.js +180 -0
- package/dist/site-BBZAUZA3.js.map +1 -0
- package/dist/sources-BUPV7H7F.js +457 -0
- package/dist/sources-BUPV7H7F.js.map +1 -0
- package/dist/sources-FLUGHSVP.js +30 -0
- package/dist/stale-HP54JS5X.js +76 -0
- package/dist/stale-HP54JS5X.js.map +1 -0
- package/dist/status-CLSWQFCQ.js +65 -0
- package/dist/status-CLSWQFCQ.js.map +1 -0
- package/dist/studies-EPO2AM4M.js +250 -0
- package/dist/study-writes-7FP443QQ.js +470 -0
- package/dist/study-writes-7FP443QQ.js.map +1 -0
- package/dist/sync-4YTVVEVC.js +57 -0
- package/dist/sync-4YTVVEVC.js.map +1 -0
- package/dist/sync-definition-OGQ5XTQE.js +69 -0
- package/dist/tags-CZTRQNXV.js +26 -0
- package/dist/tags-FDQXWTCQ.js +23 -0
- package/dist/tags-FDQXWTCQ.js.map +1 -0
- package/dist/tags-R67DKRZ6.js +23 -0
- package/dist/tags-R67DKRZ6.js.map +1 -0
- package/dist/tags-SA2LU6AW.js +227 -0
- package/dist/tags-SA2LU6AW.js.map +1 -0
- package/dist/tags-ZOXX6VRE.js +23 -0
- package/dist/tags-ZOXX6VRE.js.map +1 -0
- package/dist/targeting-NKZFEZD7.js +762 -0
- package/dist/targeting-NKZFEZD7.js.map +1 -0
- package/dist/targeting-criteria-AQYXVSGN.js +113 -0
- package/dist/targets-UUVCEG3F.js +106 -0
- package/dist/targets-UUVCEG3F.js.map +1 -0
- package/dist/testimonials-G3OCNPBY.js +32 -0
- package/dist/themes-FEVYZZCW.js +95 -0
- package/dist/top-companies-BQGWKYUK.js +111 -0
- package/dist/top-companies-BQGWKYUK.js.map +1 -0
- package/dist/transcript-U46AEOEI.js +165 -0
- package/dist/transcript-U46AEOEI.js.map +1 -0
- package/dist/translate-AS7JVKYM.js +609 -0
- package/dist/translate-AS7JVKYM.js.map +1 -0
- package/dist/triggers-ECRBPYYF.js +144 -0
- package/dist/triggers-ECRBPYYF.js.map +1 -0
- package/dist/unlink-VDNCSRJV.js +70 -0
- package/dist/unlink-VDNCSRJV.js.map +1 -0
- package/dist/unstage-ATDXUYP2.js +88 -0
- package/dist/unstage-ATDXUYP2.js.map +1 -0
- package/dist/unstage-ZA3WQBEA.js +96 -0
- package/dist/unstage-ZA3WQBEA.js.map +1 -0
- package/dist/update-FJ6TBV3E.js +101 -0
- package/dist/update-FJ6TBV3E.js.map +1 -0
- package/dist/update-HDBJCSTI.js +66 -0
- package/dist/update-HDBJCSTI.js.map +1 -0
- package/dist/update-U43DJRGV.js +155 -0
- package/dist/update-U43DJRGV.js.map +1 -0
- package/dist/update-Z7TIUBMJ.js +192 -0
- package/dist/update-Z7TIUBMJ.js.map +1 -0
- package/dist/upload-LXCFSRIU.js +129 -0
- package/dist/upload-LXCFSRIU.js.map +1 -0
- package/dist/url-options-Z4BQBEMI.js +131 -0
- package/dist/url-options-Z4BQBEMI.js.map +1 -0
- package/dist/url-params-J7RKP5RB.js +101 -0
- package/dist/url-params-J7RKP5RB.js.map +1 -0
- package/dist/validate-VR3HEOMJ.js +122 -0
- package/dist/validate-VR3HEOMJ.js.map +1 -0
- package/dist/videos-36AXDUGZ.js +41 -0
- package/dist/viewer-check-6HL4OUQY.js +83 -0
- package/dist/web-7BRJRQX7.js +143 -0
- package/dist/web-7BRJRQX7.js.map +1 -0
- package/dist/winning-ads-GMM5W2O4.js +86 -0
- package/dist/write-commands-IM5DPG3R.js +1502 -0
- package/dist/write-commands-IM5DPG3R.js.map +1 -0
- package/dist/write-commands-OGVDWWBV.js +1172 -0
- package/dist/write-commands-OGVDWWBV.js.map +1 -0
- package/dist/x-HGFAL3NY.js +47 -0
- package/package.json +1 -1
- package/dist/account-C635ATVM.js +0 -80
- package/dist/account-C635ATVM.js.map +0 -1
- package/dist/account-WLQBAQMD.js +0 -80
- package/dist/account-WLQBAQMD.js.map +0 -1
- package/dist/account-assets-O7IA37RE.js +0 -290
- package/dist/account-level-EU7BWCO7.js +0 -609
- package/dist/account-level-EU7BWCO7.js.map +0 -1
- package/dist/account-reads-SNOWDHHF.js +0 -219
- package/dist/account-users-XYYENK6X.js +0 -62
- package/dist/account-users-XYYENK6X.js.map +0 -1
- package/dist/account-writes-TU3WJRSI.js +0 -66
- package/dist/account-writes-TU3WJRSI.js.map +0 -1
- package/dist/accounts-A2FBLZ5H.js +0 -78
- package/dist/accounts-A2FBLZ5H.js.map +0 -1
- package/dist/accounts-V2IZZ5KU.js +0 -699
- package/dist/accounts-V2IZZ5KU.js.map +0 -1
- package/dist/actions-Y4SULW2E.js +0 -55
- package/dist/activecampaign-63XG6CLL.js +0 -936
- package/dist/activecampaign-63XG6CLL.js.map +0 -1
- package/dist/ad-group-writes-HLBWN4E4.js +0 -170
- package/dist/ad-group-writes-HLBWN4E4.js.map +0 -1
- package/dist/ad-groups-33NZD6J3.js +0 -68
- package/dist/ad-groups-33NZD6J3.js.map +0 -1
- package/dist/ad-writes-7ZDNDZ2E.js +0 -174
- package/dist/ad-writes-7ZDNDZ2E.js.map +0 -1
- package/dist/add-FOLFVGQO.js +0 -303
- package/dist/add-FOLFVGQO.js.map +0 -1
- package/dist/add-RYB4JSYC.js +0 -105
- package/dist/add-RYB4JSYC.js.map +0 -1
- package/dist/ads-2TVWICGM.js +0 -48
- package/dist/ads-KBE5JXCH.js +0 -115
- package/dist/ads-X3AM6M7L.js +0 -77
- package/dist/ads-X3AM6M7L.js.map +0 -1
- package/dist/adsets-YWBJFPAZ.js +0 -182
- package/dist/advertisers-IGUMSK5Q.js +0 -121
- package/dist/advertisers-IGUMSK5Q.js.map +0 -1
- package/dist/analytics-3DKM7J43.js +0 -445
- package/dist/analytics-3DKM7J43.js.map +0 -1
- package/dist/analytics-R3QDSX2K.js +0 -2435
- package/dist/analytics-R3QDSX2K.js.map +0 -1
- package/dist/asset-writes-72DEVXGO.js +0 -48
- package/dist/assign-EKCGLNZB.js +0 -78
- package/dist/assign-EKCGLNZB.js.map +0 -1
- package/dist/audience-size-IKXK32HU.js +0 -74
- package/dist/audience-size-IKXK32HU.js.map +0 -1
- package/dist/audience-writes-KCHLNFSI.js +0 -325
- package/dist/audience-writes-KCHLNFSI.js.map +0 -1
- package/dist/audiences-QAH42HIM.js +0 -86
- package/dist/audiences-WCDWN64L.js +0 -268
- package/dist/audiences-WCDWN64L.js.map +0 -1
- package/dist/audit-CY76S4V7.js +0 -152
- package/dist/audit-CY76S4V7.js.map +0 -1
- package/dist/autocomplete-G2S5HNUS.js +0 -112
- package/dist/autocomplete-G2S5HNUS.js.map +0 -1
- package/dist/avatars-P4UPNZM4.js +0 -38
- package/dist/bid-pricing-AJT4QU2C.js +0 -101
- package/dist/bid-pricing-AJT4QU2C.js.map +0 -1
- package/dist/brand-HALQWZWB.js +0 -22
- package/dist/brief-NW7TGG2Q.js +0 -541
- package/dist/brief-NW7TGG2Q.js.map +0 -1
- package/dist/campaign-groups-I43KMAJP.js +0 -97
- package/dist/campaign-groups-I43KMAJP.js.map +0 -1
- package/dist/campaign-writes-DLLPFAGG.js +0 -166
- package/dist/campaign-writes-DLLPFAGG.js.map +0 -1
- package/dist/campaign-writes-XO74BALZ.js +0 -174
- package/dist/campaign-writes-XO74BALZ.js.map +0 -1
- package/dist/campaigns-LS65QM6W.js +0 -76
- package/dist/campaigns-LS65QM6W.js.map +0 -1
- package/dist/campaigns-UIYSYCF3.js +0 -111
- package/dist/campaigns-UIYSYCF3.js.map +0 -1
- package/dist/campaigns-XZOQ2VTK.js +0 -130
- package/dist/campaigns-YMM5TQVO.js +0 -111
- package/dist/canvas-IJS7H3VE.js +0 -46
- package/dist/capabilities-XMQPM3UL.js +0 -145
- package/dist/capabilities-XMQPM3UL.js.map +0 -1
- package/dist/catalogs-JLCSFZYC.js +0 -779
- package/dist/catalogs-JLCSFZYC.js.map +0 -1
- package/dist/catalogs-T23RKYFC.js +0 -128
- package/dist/catalogs-T23RKYFC.js.map +0 -1
- package/dist/changes-36C754R4.js +0 -135
- package/dist/chatgpt-3WFOPURY.js +0 -47
- package/dist/chats-ZI6EYDAF.js +0 -277
- package/dist/chats-ZI6EYDAF.js.map +0 -1
- package/dist/check-CHJ2OLAU.js +0 -105
- package/dist/check-CHJ2OLAU.js.map +0 -1
- package/dist/chunk-2TOIY2WN.js +0 -4254
- package/dist/chunk-4GAEB6NK.js +0 -228
- package/dist/chunk-5RVQK3SP.js +0 -494
- package/dist/chunk-5SRUAGTG.js +0 -547
- package/dist/chunk-5XTGG4PV.js +0 -274
- package/dist/chunk-6Z7Y4KQB.js +0 -275
- package/dist/chunk-7J3NZBPV.js +0 -2982
- package/dist/chunk-7J3NZBPV.js.map +0 -1
- package/dist/chunk-AIRD6T4W.js +0 -169
- package/dist/chunk-AQOFQNKQ.js +0 -57
- package/dist/chunk-ARUXGKZO.js +0 -91
- package/dist/chunk-AYPBARKP.js +0 -156
- package/dist/chunk-BRLZX3VP.js +0 -207
- package/dist/chunk-BTJSGJNQ.js +0 -604
- package/dist/chunk-C7QQQVBS.js +0 -51
- package/dist/chunk-CCEDZTP7.js +0 -391
- package/dist/chunk-CCEDZTP7.js.map +0 -1
- package/dist/chunk-D3KLDIPQ.js +0 -45
- package/dist/chunk-DUR7PEJI.js +0 -170
- package/dist/chunk-EDLZGTGN.js +0 -216
- package/dist/chunk-EDLZGTGN.js.map +0 -1
- package/dist/chunk-FFFJBNHA.js +0 -63
- package/dist/chunk-FPWQA7TK.js +0 -344
- package/dist/chunk-G5Y7OIPL.js +0 -392
- package/dist/chunk-GACSA5A6.js +0 -1646
- package/dist/chunk-GMHCHHAA.js +0 -19
- package/dist/chunk-H4NNQGG6.js +0 -66
- package/dist/chunk-HSQRITKG.js +0 -203
- package/dist/chunk-I47BEKYK.js +0 -831
- package/dist/chunk-JND6XSGZ.js +0 -7192
- package/dist/chunk-JND6XSGZ.js.map +0 -1
- package/dist/chunk-KBRJSPIM.js +0 -676
- package/dist/chunk-KQTNUDKD.js +0 -97
- package/dist/chunk-M7HD42M6.js +0 -24017
- package/dist/chunk-M7HD42M6.js.map +0 -1
- package/dist/chunk-MBSFEVOG.js +0 -163
- package/dist/chunk-MGYC2IRC.js +0 -783
- package/dist/chunk-MUXKYSTI.js +0 -297
- package/dist/chunk-MZCTX37B.js +0 -3868
- package/dist/chunk-N7M2TWR5.js +0 -592
- package/dist/chunk-NDFS3APP.js +0 -319
- package/dist/chunk-OBJCNGZL.js +0 -207
- package/dist/chunk-OJGYYH6K.js +0 -179
- package/dist/chunk-P6BKKUSX.js +0 -142
- package/dist/chunk-PLAOK4AK.js +0 -103
- package/dist/chunk-PLBITHV6.js +0 -846
- package/dist/chunk-PNKIOTCK.js +0 -349
- package/dist/chunk-PNKIOTCK.js.map +0 -1
- package/dist/chunk-QBRPM3DQ.js +0 -61
- package/dist/chunk-QMDMTZAW.js +0 -224
- package/dist/chunk-QW6HL7D6.js +0 -429
- package/dist/chunk-R53XMPDO.js +0 -363
- package/dist/chunk-RFIUOQLN.js +0 -89
- package/dist/chunk-RVEY7BTT.js +0 -8954
- package/dist/chunk-SCL7PM6P.js +0 -479
- package/dist/chunk-SM7G7RUA.js +0 -910
- package/dist/chunk-SVBJ56T7.js +0 -455
- package/dist/chunk-TVAIOC77.js +0 -287
- package/dist/chunk-TVTSA4EN.js +0 -188
- package/dist/chunk-VIPKDXGU.js +0 -4229
- package/dist/chunk-VIPKDXGU.js.map +0 -1
- package/dist/chunk-W574NV67.js +0 -191
- package/dist/chunk-XGPU2VDU.js +0 -219
- package/dist/chunk-XQXZJ5IR.js +0 -249
- package/dist/chunk-YMF2RG4Z.js +0 -942
- package/dist/chunk-Z2DRGXBB.js +0 -197
- package/dist/chunk-Z7YMSHRZ.js +0 -23
- package/dist/chunk-ZEC46NWW.js +0 -122
- package/dist/chunk-ZFC562TP.js +0 -387
- package/dist/chunk-ZNRGH4NS.js +0 -150
- package/dist/claim-OUYHVGB4.js +0 -198
- package/dist/claim-OUYHVGB4.js.map +0 -1
- package/dist/companies-XDNSG7ME.js +0 -196
- package/dist/companies-XDNSG7ME.js.map +0 -1
- package/dist/company-4FAYYPEJ.js +0 -306
- package/dist/company-4FAYYPEJ.js.map +0 -1
- package/dist/complete-M2PAUMDP.js +0 -82
- package/dist/complete-M2PAUMDP.js.map +0 -1
- package/dist/connect-PP6Z3F7Y.js +0 -43
- package/dist/conversation-B5NPTLFQ.js +0 -94
- package/dist/conversation-B5NPTLFQ.js.map +0 -1
- package/dist/conversion-report-DKXFHLLX.js +0 -125
- package/dist/conversion-report-DKXFHLLX.js.map +0 -1
- package/dist/conversion-upload-command-KTYAY7IG.js +0 -439
- package/dist/conversion-writes-7ODJDAUP.js +0 -120
- package/dist/conversion-writes-7ODJDAUP.js.map +0 -1
- package/dist/conversions-BKVGNNC6.js +0 -76
- package/dist/conversions-BKVGNNC6.js.map +0 -1
- package/dist/conversions-QRJL6JIO.js +0 -138
- package/dist/conversions-QRJL6JIO.js.map +0 -1
- package/dist/copy-writes-P4WK6OPM.js +0 -168
- package/dist/copy-writes-P4WK6OPM.js.map +0 -1
- package/dist/create-4DWCJ2UA.js +0 -208
- package/dist/create-4DWCJ2UA.js.map +0 -1
- package/dist/create-OYV33CQ6.js +0 -60
- package/dist/create-OYV33CQ6.js.map +0 -1
- package/dist/create-U6JVIYFY.js +0 -237
- package/dist/create-U6JVIYFY.js.map +0 -1
- package/dist/create-V4FNRO63.js +0 -133
- package/dist/create-V4FNRO63.js.map +0 -1
- package/dist/creatives-64FKWEGL.js +0 -221
- package/dist/creatives-64FKWEGL.js.map +0 -1
- package/dist/creatives-JPKA2RHU.js +0 -89
- package/dist/creatives-UJDPD4CI.js +0 -58
- package/dist/credentials-EIPEZ2C2.js +0 -288
- package/dist/credentials-EIPEZ2C2.js.map +0 -1
- package/dist/critique-BADMZAZP.js +0 -230
- package/dist/critique-BADMZAZP.js.map +0 -1
- package/dist/critique-M3DEVEDA.js +0 -1449
- package/dist/critique-M3DEVEDA.js.map +0 -1
- package/dist/crm-GIYSLLY7.js +0 -321
- package/dist/crm-GIYSLLY7.js.map +0 -1
- package/dist/crm-HXKSJRY3.js +0 -225
- package/dist/crm-HXKSJRY3.js.map +0 -1
- package/dist/currency-R4ORE2U3.js +0 -88
- package/dist/custom-conversions-5HJBB5XL.js +0 -128
- package/dist/customers-7J3QGSOJ.js +0 -57
- package/dist/delete-EDWJQMMV.js +0 -65
- package/dist/delete-EDWJQMMV.js.map +0 -1
- package/dist/delete-O24CVQMJ.js +0 -67
- package/dist/delete-O24CVQMJ.js.map +0 -1
- package/dist/delete-QN2OYUCS.js +0 -55
- package/dist/delete-QN2OYUCS.js.map +0 -1
- package/dist/demographics-MPYYF2OI.js +0 -139
- package/dist/demographics-MPYYF2OI.js.map +0 -1
- package/dist/discard-FJCFB6SA.js +0 -67
- package/dist/discard-FJCFB6SA.js.map +0 -1
- package/dist/discover-GSJRZUOC.js +0 -172
- package/dist/domain-UILPSEA5.js +0 -99
- package/dist/domain-UILPSEA5.js.map +0 -1
- package/dist/download-ZMAI7QSG.js +0 -170
- package/dist/download-ZMAI7QSG.js.map +0 -1
- package/dist/draft-5OQT3APG.js +0 -308
- package/dist/draft-5OQT3APG.js.map +0 -1
- package/dist/draft-LPVK6YHI.js +0 -281
- package/dist/draft-LPVK6YHI.js.map +0 -1
- package/dist/draft-MSESA5UE.js +0 -333
- package/dist/draft-MSESA5UE.js.map +0 -1
- package/dist/draft-WYDMLNYA.js +0 -308
- package/dist/draft-XOOSEVY5.js +0 -218
- package/dist/draft-XOOSEVY5.js.map +0 -1
- package/dist/experiments-PVOQUL47.js +0 -234
- package/dist/experiments-PVOQUL47.js.map +0 -1
- package/dist/facets-5RW4Z3D3.js +0 -115
- package/dist/facets-5RW4Z3D3.js.map +0 -1
- package/dist/feedback-GC56R2EJ.js +0 -109
- package/dist/feedback-GC56R2EJ.js.map +0 -1
- package/dist/feedback-record-JX7ZU6J7.js +0 -263
- package/dist/feedback-record-JX7ZU6J7.js.map +0 -1
- package/dist/fetch-WUTXAPBL.js +0 -177
- package/dist/fetch-WUTXAPBL.js.map +0 -1
- package/dist/fit-N7WDGWYZ.js +0 -63
- package/dist/flows-ULZACISF.js +0 -248
- package/dist/flows-ULZACISF.js.map +0 -1
- package/dist/fonts-TTUAP7HS.js +0 -37
- package/dist/forecast-4AG5F7YC.js +0 -169
- package/dist/forecast-RQJJRN5D.js +0 -119
- package/dist/forecast-RQJJRN5D.js.map +0 -1
- package/dist/funnel-QPWJIXWK.js +0 -395
- package/dist/funnel-QPWJIXWK.js.map +0 -1
- package/dist/get-35D7YHWJ.js +0 -57
- package/dist/get-35D7YHWJ.js.map +0 -1
- package/dist/get-GIETDPF4.js +0 -80
- package/dist/get-GIETDPF4.js.map +0 -1
- package/dist/google-NAA4BASO.js +0 -3267
- package/dist/google-ads-2IZFZO4C.js +0 -196
- package/dist/google-ads-2IZFZO4C.js.map +0 -1
- package/dist/history-5MRLNTCI.js +0 -67
- package/dist/history-5MRLNTCI.js.map +0 -1
- package/dist/history-RPLWWPLQ.js +0 -134
- package/dist/history-RPLWWPLQ.js.map +0 -1
- package/dist/history-TQYLUYVU.js +0 -100
- package/dist/history-TQYLUYVU.js.map +0 -1
- package/dist/hubspot-EPK43X4C.js +0 -780
- package/dist/hubspot-EPK43X4C.js.map +0 -1
- package/dist/ideas-SUXKKZC7.js +0 -43
- package/dist/images-VKVZ3DWG.js +0 -92
- package/dist/ingest-BBBFT6FZ.js +0 -24
- package/dist/ingest-EM2UY42Z.js +0 -108
- package/dist/ingest-EM2UY42Z.js.map +0 -1
- package/dist/insights-M3CYB22P.js +0 -437
- package/dist/insights-M3CYB22P.js.map +0 -1
- package/dist/insights-XCT3ONC7.js +0 -130
- package/dist/insights-XCT3ONC7.js.map +0 -1
- package/dist/inspect-ZPOVOENK.js +0 -190
- package/dist/inspect-ZPOVOENK.js.map +0 -1
- package/dist/instant-experiences-HT3HB4QZ.js +0 -258
- package/dist/instant-experiences-HT3HB4QZ.js.map +0 -1
- package/dist/intent-NSHW7EJT.js +0 -95
- package/dist/keyword-gap-ITTWKBWZ.js +0 -130
- package/dist/keyword-metrics-7DPR264W.js +0 -198
- package/dist/keyword-metrics-7DPR264W.js.map +0 -1
- package/dist/keywords-for-site-IXL22UKQ.js +0 -129
- package/dist/keywords-for-site-IXL22UKQ.js.map +0 -1
- package/dist/landing-KZ4OSHHR.js +0 -28
- package/dist/languages-MEFQQBJ2.js +0 -40
- package/dist/leads-DNQTRYIR.js +0 -113
- package/dist/leads-DNQTRYIR.js.map +0 -1
- package/dist/leads-SZOGCQFK.js +0 -538
- package/dist/leads-SZOGCQFK.js.map +0 -1
- package/dist/learn-Q7WZG7FA.js +0 -205
- package/dist/learn-Q7WZG7FA.js.map +0 -1
- package/dist/line-item-writes-3K7FT5GO.js +0 -209
- package/dist/line-item-writes-3K7FT5GO.js.map +0 -1
- package/dist/line-items-G5YJG25N.js +0 -107
- package/dist/link-2QVSIZJT.js +0 -65
- package/dist/link-2QVSIZJT.js.map +0 -1
- package/dist/linkedin-VAFPZNWZ.js +0 -1314
- package/dist/linkedin-VAFPZNWZ.js.map +0 -1
- package/dist/linkedin-person-EHTYVNZY.js +0 -137
- package/dist/linkedin-person-EHTYVNZY.js.map +0 -1
- package/dist/list-5TS2VPQZ.js +0 -152
- package/dist/list-5TS2VPQZ.js.map +0 -1
- package/dist/list-PSSQXQRJ.js +0 -65
- package/dist/list-PSSQXQRJ.js.map +0 -1
- package/dist/list-UMVIFQ3X.js +0 -304
- package/dist/list-UMVIFQ3X.js.map +0 -1
- package/dist/locations-RLWAS6AC.js +0 -40
- package/dist/locations-UKBOT6SB.js +0 -67
- package/dist/locations-UKBOT6SB.js.map +0 -1
- package/dist/log-ZZK3QMZB.js +0 -93
- package/dist/log-ZZK3QMZB.js.map +0 -1
- package/dist/lookup-ZJIP2M4X.js +0 -22
- package/dist/make-DB2BDVB3.js +0 -1368
- package/dist/make-DB2BDVB3.js.map +0 -1
- package/dist/map-UJ23GKRH.js +0 -434
- package/dist/map-UJ23GKRH.js.map +0 -1
- package/dist/mcp-SS2ALFRJ.js +0 -715
- package/dist/mcp-SS2ALFRJ.js.map +0 -1
- package/dist/media-ZWN7E777.js +0 -18
- package/dist/media-sources-GKSEDSE3.js +0 -35
- package/dist/members-KD2XRYPZ.js +0 -45
- package/dist/members-KD2XRYPZ.js.map +0 -1
- package/dist/meta-EHKXH257.js +0 -122
- package/dist/metrics-K6FDCMK7.js +0 -152
- package/dist/normalize-ZNTXNX6D.js +0 -142
- package/dist/normalize-ZNTXNX6D.js.map +0 -1
- package/dist/options-TBIFJF3E.js +0 -123
- package/dist/options-TBIFJF3E.js.map +0 -1
- package/dist/organization-26J2ZIKM.js +0 -947
- package/dist/organization-26J2ZIKM.js.map +0 -1
- package/dist/page-photos-HWKQOSCU.js +0 -116
- package/dist/page-photos-HWKQOSCU.js.map +0 -1
- package/dist/performance-6TPJGM6A.js +0 -25
- package/dist/performance-O5BXZGS6.js +0 -5539
- package/dist/performance-O5BXZGS6.js.map +0 -1
- package/dist/pixels-Z7ZGXAGB.js +0 -60
- package/dist/pixels-Z7ZGXAGB.js.map +0 -1
- package/dist/plan-TVQSEKYL.js +0 -207
- package/dist/plan-TVQSEKYL.js.map +0 -1
- package/dist/preview-CWRGDFCP.js +0 -216
- package/dist/preview-CWRGDFCP.js.map +0 -1
- package/dist/promoted-tweet-writes-SZN74JHY.js +0 -181
- package/dist/promoted-tweet-writes-SZN74JHY.js.map +0 -1
- package/dist/promoted-tweets-7P4TSQU7.js +0 -119
- package/dist/publish-3DUERLGT.js +0 -342
- package/dist/publish-3DUERLGT.js.map +0 -1
- package/dist/query-QM7MBQD7.js +0 -62
- package/dist/questionnaire-LEZJLMAV.js +0 -93
- package/dist/questionnaire-LEZJLMAV.js.map +0 -1
- package/dist/reddit-SN5CESF4.js +0 -27
- package/dist/refresh-2ICQBTK4.js +0 -95
- package/dist/refresh-2ICQBTK4.js.map +0 -1
- package/dist/release-JSZ4JXYJ.js +0 -61
- package/dist/release-JSZ4JXYJ.js.map +0 -1
- package/dist/relevant-pages-VOICMQ7U.js +0 -99
- package/dist/remove-TFUAVRFM.js +0 -51
- package/dist/remove-TFUAVRFM.js.map +0 -1
- package/dist/reopen-5T2PE7MU.js +0 -64
- package/dist/reopen-5T2PE7MU.js.map +0 -1
- package/dist/rerun-EZJ4MLYG.js +0 -93
- package/dist/rerun-EZJ4MLYG.js.map +0 -1
- package/dist/research-BKYSU2C6.js +0 -263
- package/dist/research-BKYSU2C6.js.map +0 -1
- package/dist/research-QU63CJB5.js +0 -72
- package/dist/reset-DKTKZF7G.js +0 -55
- package/dist/reset-DKTKZF7G.js.map +0 -1
- package/dist/reset-SXABIVP6.js +0 -55
- package/dist/reset-SXABIVP6.js.map +0 -1
- package/dist/resolve-L47U2T77.js +0 -122
- package/dist/resolve-L47U2T77.js.map +0 -1
- package/dist/retry-JEWPK2B5.js +0 -63
- package/dist/retry-JEWPK2B5.js.map +0 -1
- package/dist/retry-SXFVLT3W.js +0 -61
- package/dist/retry-SXFVLT3W.js.map +0 -1
- package/dist/revenue-2MAYTXRM.js +0 -89
- package/dist/revenue-2MAYTXRM.js.map +0 -1
- package/dist/rule-writes-S3RN47OG.js +0 -523
- package/dist/rule-writes-S3RN47OG.js.map +0 -1
- package/dist/rules-CHWTFASP.js +0 -97
- package/dist/rules-CHWTFASP.js.map +0 -1
- package/dist/rules-KTJ2ZZ62.js +0 -217
- package/dist/rules-add-3M5TALWN.js +0 -463
- package/dist/rules-add-3M5TALWN.js.map +0 -1
- package/dist/run-2DLA6YO4.js +0 -68
- package/dist/run-JCGH2NHD.js +0 -67
- package/dist/run-JCGH2NHD.js.map +0 -1
- package/dist/scaffold-ad-VEW7JDY7.js +0 -1514
- package/dist/scaffold-ad-VEW7JDY7.js.map +0 -1
- package/dist/scaffold-static-ad-DYRL7DOS.js +0 -1013
- package/dist/scaffold-static-ad-DYRL7DOS.js.map +0 -1
- package/dist/scaffold-video-YRAVVKUH.js +0 -886
- package/dist/scaffold-video-YRAVVKUH.js.map +0 -1
- package/dist/schedule-WYIC6VNW.js +0 -62
- package/dist/schedule-WYIC6VNW.js.map +0 -1
- package/dist/scheduled-agents-FRBF4EOK.js +0 -55
- package/dist/schema-TC2O3FYY.js +0 -133
- package/dist/schema-TC2O3FYY.js.map +0 -1
- package/dist/search-VDW242BN.js +0 -175
- package/dist/search-VDW242BN.js.map +0 -1
- package/dist/select-O5HSSC36.js +0 -104
- package/dist/select-O5HSSC36.js.map +0 -1
- package/dist/sends-6FI7WELX.js +0 -348
- package/dist/sends-6FI7WELX.js.map +0 -1
- package/dist/set-prompt-TI7N64PJ.js +0 -196
- package/dist/set-prompt-TI7N64PJ.js.map +0 -1
- package/dist/setup-links-BM2FTXUZ.js +0 -142
- package/dist/setup-links-BM2FTXUZ.js.map +0 -1
- package/dist/shopify-FIHG5PYP.js +0 -3956
- package/dist/shopify-FIHG5PYP.js.map +0 -1
- package/dist/site-S3IGBMVC.js +0 -178
- package/dist/site-S3IGBMVC.js.map +0 -1
- package/dist/sources-77WLFY4Y.js +0 -30
- package/dist/sources-A4B3R5JC.js +0 -455
- package/dist/sources-A4B3R5JC.js.map +0 -1
- package/dist/stale-YIRCXDOK.js +0 -74
- package/dist/stale-YIRCXDOK.js.map +0 -1
- package/dist/status-6YNR647D.js +0 -63
- package/dist/status-6YNR647D.js.map +0 -1
- package/dist/studies-ZOEUY6YP.js +0 -250
- package/dist/study-writes-DTGMCNFP.js +0 -468
- package/dist/study-writes-DTGMCNFP.js.map +0 -1
- package/dist/sync-FFVWHGLE.js +0 -55
- package/dist/sync-FFVWHGLE.js.map +0 -1
- package/dist/sync-definition-K4XOAG2B.js +0 -67
- package/dist/tags-5KIOGEKN.js +0 -21
- package/dist/tags-5KIOGEKN.js.map +0 -1
- package/dist/tags-BKAN5EAJ.js +0 -21
- package/dist/tags-BKAN5EAJ.js.map +0 -1
- package/dist/tags-ETOOYQ57.js +0 -26
- package/dist/tags-RPNK7TMO.js +0 -225
- package/dist/tags-RPNK7TMO.js.map +0 -1
- package/dist/tags-UM4QO46J.js +0 -21
- package/dist/tags-UM4QO46J.js.map +0 -1
- package/dist/targeting-VBQY3HUN.js +0 -760
- package/dist/targeting-VBQY3HUN.js.map +0 -1
- package/dist/targeting-criteria-L4DYIJZI.js +0 -113
- package/dist/targets-S6N7327Q.js +0 -104
- package/dist/targets-S6N7327Q.js.map +0 -1
- package/dist/testimonials-65N7IYN7.js +0 -32
- package/dist/themes-B4LCQUXB.js +0 -95
- package/dist/top-companies-SJKND75M.js +0 -109
- package/dist/top-companies-SJKND75M.js.map +0 -1
- package/dist/transcript-5I7I6DWL.js +0 -163
- package/dist/transcript-5I7I6DWL.js.map +0 -1
- package/dist/translate-SH6IG5Y7.js +0 -607
- package/dist/translate-SH6IG5Y7.js.map +0 -1
- package/dist/triggers-YRY3HTYU.js +0 -142
- package/dist/triggers-YRY3HTYU.js.map +0 -1
- package/dist/unlink-4B4YTQE4.js +0 -68
- package/dist/unlink-4B4YTQE4.js.map +0 -1
- package/dist/unstage-H5NTDJ6A.js +0 -86
- package/dist/unstage-H5NTDJ6A.js.map +0 -1
- package/dist/unstage-MDSSPUKV.js +0 -95
- package/dist/unstage-MDSSPUKV.js.map +0 -1
- package/dist/update-DI52JJGB.js +0 -99
- package/dist/update-DI52JJGB.js.map +0 -1
- package/dist/update-DMPDLMMV.js +0 -64
- package/dist/update-DMPDLMMV.js.map +0 -1
- package/dist/update-TUS4PJIG.js +0 -190
- package/dist/update-TUS4PJIG.js.map +0 -1
- package/dist/update-Z66LMXNS.js +0 -153
- package/dist/update-Z66LMXNS.js.map +0 -1
- package/dist/upload-7KQYZ7T7.js +0 -127
- package/dist/upload-7KQYZ7T7.js.map +0 -1
- package/dist/url-options-IHL4OU4C.js +0 -130
- package/dist/url-options-IHL4OU4C.js.map +0 -1
- package/dist/url-params-SDA2MWB5.js +0 -99
- package/dist/url-params-SDA2MWB5.js.map +0 -1
- package/dist/validate-ZABZNCSB.js +0 -120
- package/dist/validate-ZABZNCSB.js.map +0 -1
- package/dist/videos-BKVCCKIH.js +0 -41
- package/dist/viewer-check-B5O7ZY3Q.js +0 -81
- package/dist/web-KN3BTVG4.js +0 -141
- package/dist/web-KN3BTVG4.js.map +0 -1
- package/dist/winning-ads-JIDPISKM.js +0 -86
- package/dist/write-commands-K6M3RTVK.js +0 -1170
- package/dist/write-commands-K6M3RTVK.js.map +0 -1
- package/dist/write-commands-RVHLLLDR.js +0 -1498
- package/dist/write-commands-RVHLLLDR.js.map +0 -1
- package/dist/x-NLGWZCGX.js +0 -47
- /package/dist/{account-assets-O7IA37RE.js.map → account-assets-J5Z4URLQ.js.map} +0 -0
- /package/dist/{account-reads-SNOWDHHF.js.map → account-reads-2MSUVG46.js.map} +0 -0
- /package/dist/{actions-Y4SULW2E.js.map → actions-D7OWCP36.js.map} +0 -0
- /package/dist/{ads-2TVWICGM.js.map → ads-HLUJB5SQ.js.map} +0 -0
- /package/dist/{ads-KBE5JXCH.js.map → ads-MAOI7S6V.js.map} +0 -0
- /package/dist/{adsets-YWBJFPAZ.js.map → adsets-QRKICEFD.js.map} +0 -0
- /package/dist/{asset-writes-72DEVXGO.js.map → asset-writes-JLVUAVUZ.js.map} +0 -0
- /package/dist/{audiences-QAH42HIM.js.map → audiences-CDDI5HR5.js.map} +0 -0
- /package/dist/{avatars-P4UPNZM4.js.map → avatars-WZ2JDMHH.js.map} +0 -0
- /package/dist/{brand-HALQWZWB.js.map → brand-IZTTBZII.js.map} +0 -0
- /package/dist/{campaigns-YMM5TQVO.js.map → campaigns-4Y3JQC2U.js.map} +0 -0
- /package/dist/{campaigns-XZOQ2VTK.js.map → campaigns-HES5MDUG.js.map} +0 -0
- /package/dist/{canvas-IJS7H3VE.js.map → canvas-IQ753Q2O.js.map} +0 -0
- /package/dist/{changes-36C754R4.js.map → changes-VWKTM27U.js.map} +0 -0
- /package/dist/{chatgpt-3WFOPURY.js.map → chatgpt-OPOD2WHB.js.map} +0 -0
- /package/dist/{chunk-DUR7PEJI.js.map → chunk-2GYCWRF3.js.map} +0 -0
- /package/dist/{chunk-QBRPM3DQ.js.map → chunk-2L7F7KR4.js.map} +0 -0
- /package/dist/{chunk-4GAEB6NK.js.map → chunk-44ZRCSR7.js.map} +0 -0
- /package/dist/{chunk-2TOIY2WN.js.map → chunk-46YLDIQG.js.map} +0 -0
- /package/dist/{chunk-R53XMPDO.js.map → chunk-4EDWXZ3I.js.map} +0 -0
- /package/dist/{chunk-H4NNQGG6.js.map → chunk-4FFBGR5L.js.map} +0 -0
- /package/dist/{chunk-XGPU2VDU.js.map → chunk-4UQRXKYJ.js.map} +0 -0
- /package/dist/{chunk-N7M2TWR5.js.map → chunk-4UZUUSVL.js.map} +0 -0
- /package/dist/{chunk-I47BEKYK.js.map → chunk-4XHCEYHI.js.map} +0 -0
- /package/dist/{chunk-SCL7PM6P.js.map → chunk-4Z6PVR3M.js.map} +0 -0
- /package/dist/{chunk-ZEC46NWW.js.map → chunk-5Y5FZV2W.js.map} +0 -0
- /package/dist/{chunk-G5Y7OIPL.js.map → chunk-6HJXLGDV.js.map} +0 -0
- /package/dist/{chunk-QW6HL7D6.js.map → chunk-6S5CWGDA.js.map} +0 -0
- /package/dist/{chunk-5RVQK3SP.js.map → chunk-6VYROVWO.js.map} +0 -0
- /package/dist/{chunk-TVAIOC77.js.map → chunk-7BUIOP36.js.map} +0 -0
- /package/dist/{chunk-NDFS3APP.js.map → chunk-AQRXXC6E.js.map} +0 -0
- /package/dist/{chunk-ZFC562TP.js.map → chunk-ARBXT73X.js.map} +0 -0
- /package/dist/{chunk-KQTNUDKD.js.map → chunk-BEZHQIEI.js.map} +0 -0
- /package/dist/{chunk-5SRUAGTG.js.map → chunk-BFURWHVR.js.map} +0 -0
- /package/dist/{chunk-KBRJSPIM.js.map → chunk-DSCEXBDR.js.map} +0 -0
- /package/dist/{chunk-Z7YMSHRZ.js.map → chunk-FLWDFPXE.js.map} +0 -0
- /package/dist/{chunk-GACSA5A6.js.map → chunk-FRNBRN2C.js.map} +0 -0
- /package/dist/{chunk-C7QQQVBS.js.map → chunk-GE3VT3CA.js.map} +0 -0
- /package/dist/{chunk-P6BKKUSX.js.map → chunk-HGBJQGO5.js.map} +0 -0
- /package/dist/{chunk-MGYC2IRC.js.map → chunk-I7AYMJZA.js.map} +0 -0
- /package/dist/{chunk-BRLZX3VP.js.map → chunk-IRM273C7.js.map} +0 -0
- /package/dist/{chunk-AYPBARKP.js.map → chunk-IWKD56AY.js.map} +0 -0
- /package/dist/{chunk-MZCTX37B.js.map → chunk-JLAQWMVF.js.map} +0 -0
- /package/dist/{chunk-AQOFQNKQ.js.map → chunk-K6NULQN7.js.map} +0 -0
- /package/dist/{chunk-GMHCHHAA.js.map → chunk-L2BRAC2J.js.map} +0 -0
- /package/dist/{chunk-SVBJ56T7.js.map → chunk-LGMI4LSY.js.map} +0 -0
- /package/dist/{chunk-OJGYYH6K.js.map → chunk-NB2FU6EZ.js.map} +0 -0
- /package/dist/{chunk-TVTSA4EN.js.map → chunk-NWF2LRKO.js.map} +0 -0
- /package/dist/{chunk-6Z7Y4KQB.js.map → chunk-OG47L5GG.js.map} +0 -0
- /package/dist/{chunk-AIRD6T4W.js.map → chunk-OR6KVLI5.js.map} +0 -0
- /package/dist/{chunk-OBJCNGZL.js.map → chunk-QDQZ62FL.js.map} +0 -0
- /package/dist/{chunk-FPWQA7TK.js.map → chunk-QIOFOD4K.js.map} +0 -0
- /package/dist/{chunk-XQXZJ5IR.js.map → chunk-R2SYF5FC.js.map} +0 -0
- /package/dist/{chunk-YMF2RG4Z.js.map → chunk-RTH2I55B.js.map} +0 -0
- /package/dist/{chunk-FFFJBNHA.js.map → chunk-S6VFDNSQ.js.map} +0 -0
- /package/dist/{chunk-ZNRGH4NS.js.map → chunk-SG2TDQEE.js.map} +0 -0
- /package/dist/{chunk-RFIUOQLN.js.map → chunk-T3P6O2VU.js.map} +0 -0
- /package/dist/{chunk-BTJSGJNQ.js.map → chunk-TXDE2QJ3.js.map} +0 -0
- /package/dist/{chunk-HSQRITKG.js.map → chunk-UDIEKCIR.js.map} +0 -0
- /package/dist/{chunk-MBSFEVOG.js.map → chunk-USCADMM3.js.map} +0 -0
- /package/dist/{chunk-SM7G7RUA.js.map → chunk-UUGISMNE.js.map} +0 -0
- /package/dist/{chunk-Z2DRGXBB.js.map → chunk-VDPOCAQ2.js.map} +0 -0
- /package/dist/{chunk-PLAOK4AK.js.map → chunk-VEJ3QX6M.js.map} +0 -0
- /package/dist/{chunk-ARUXGKZO.js.map → chunk-VFJB7OG6.js.map} +0 -0
- /package/dist/{chunk-RVEY7BTT.js.map → chunk-VRIPVLE7.js.map} +0 -0
- /package/dist/{chunk-5XTGG4PV.js.map → chunk-WFY7KSHB.js.map} +0 -0
- /package/dist/{chunk-D3KLDIPQ.js.map → chunk-WLESMH4J.js.map} +0 -0
- /package/dist/{chunk-PLBITHV6.js.map → chunk-XHQYFNNK.js.map} +0 -0
- /package/dist/{chunk-QMDMTZAW.js.map → chunk-YILZR3XI.js.map} +0 -0
- /package/dist/{chunk-W574NV67.js.map → chunk-YJFLXOH4.js.map} +0 -0
- /package/dist/{chunk-MUXKYSTI.js.map → chunk-YWHZYR6S.js.map} +0 -0
- /package/dist/{connect-PP6Z3F7Y.js.map → connect-3YY7MF3I.js.map} +0 -0
- /package/dist/{conversion-upload-command-KTYAY7IG.js.map → conversion-upload-command-7RSZ5ZQU.js.map} +0 -0
- /package/dist/{creatives-UJDPD4CI.js.map → creatives-2DR3QHJW.js.map} +0 -0
- /package/dist/{creatives-JPKA2RHU.js.map → creatives-BB6S2OF6.js.map} +0 -0
- /package/dist/{currency-R4ORE2U3.js.map → currency-X7Y6TSLF.js.map} +0 -0
- /package/dist/{custom-conversions-5HJBB5XL.js.map → custom-conversions-HAGG72LF.js.map} +0 -0
- /package/dist/{customers-7J3QGSOJ.js.map → customers-663K2OCP.js.map} +0 -0
- /package/dist/{discover-GSJRZUOC.js.map → discover-6DORQWXY.js.map} +0 -0
- /package/dist/{draft-WYDMLNYA.js.map → draft-R6EKORNS.js.map} +0 -0
- /package/dist/{fit-N7WDGWYZ.js.map → fit-BEFCY2B4.js.map} +0 -0
- /package/dist/{fonts-TTUAP7HS.js.map → fonts-C6XN5667.js.map} +0 -0
- /package/dist/{forecast-4AG5F7YC.js.map → forecast-BTPIXEQ5.js.map} +0 -0
- /package/dist/{google-NAA4BASO.js.map → google-M6BJ22UL.js.map} +0 -0
- /package/dist/{ideas-SUXKKZC7.js.map → ideas-M66FU45H.js.map} +0 -0
- /package/dist/{images-VKVZ3DWG.js.map → images-MM5OPUKV.js.map} +0 -0
- /package/dist/{ingest-BBBFT6FZ.js.map → ingest-KMLYCFF4.js.map} +0 -0
- /package/dist/{intent-NSHW7EJT.js.map → intent-YCQCUCV3.js.map} +0 -0
- /package/dist/{keyword-gap-ITTWKBWZ.js.map → keyword-gap-PUSF7EKY.js.map} +0 -0
- /package/dist/{landing-KZ4OSHHR.js.map → landing-OZU5RRFV.js.map} +0 -0
- /package/dist/{languages-MEFQQBJ2.js.map → languages-SLFV73GE.js.map} +0 -0
- /package/dist/{line-items-G5YJG25N.js.map → line-items-NJMEPEF5.js.map} +0 -0
- /package/dist/{locations-RLWAS6AC.js.map → locations-T2OMP6QN.js.map} +0 -0
- /package/dist/{lookup-ZJIP2M4X.js.map → lookup-S5VG7AWH.js.map} +0 -0
- /package/dist/{media-ZWN7E777.js.map → media-P4T4ZBNS.js.map} +0 -0
- /package/dist/{media-sources-GKSEDSE3.js.map → media-sources-EQI3U4TC.js.map} +0 -0
- /package/dist/{meta-EHKXH257.js.map → meta-IPLWNYC7.js.map} +0 -0
- /package/dist/{metrics-K6FDCMK7.js.map → metrics-4YVJHYRI.js.map} +0 -0
- /package/dist/{performance-6TPJGM6A.js.map → performance-NIF3CESZ.js.map} +0 -0
- /package/dist/{promoted-tweets-7P4TSQU7.js.map → promoted-tweets-RJT53DRM.js.map} +0 -0
- /package/dist/{query-QM7MBQD7.js.map → query-XZMDGRO5.js.map} +0 -0
- /package/dist/{reddit-SN5CESF4.js.map → reddit-JIHMAKAQ.js.map} +0 -0
- /package/dist/{relevant-pages-VOICMQ7U.js.map → relevant-pages-FS7GBVXK.js.map} +0 -0
- /package/dist/{research-QU63CJB5.js.map → research-PNBACCCP.js.map} +0 -0
- /package/dist/{rules-KTJ2ZZ62.js.map → rules-ZVS2MWED.js.map} +0 -0
- /package/dist/{run-2DLA6YO4.js.map → run-QCNRR3CA.js.map} +0 -0
- /package/dist/{scheduled-agents-FRBF4EOK.js.map → scheduled-agents-OXYAVSIE.js.map} +0 -0
- /package/dist/{sources-77WLFY4Y.js.map → sources-FLUGHSVP.js.map} +0 -0
- /package/dist/{studies-ZOEUY6YP.js.map → studies-EPO2AM4M.js.map} +0 -0
- /package/dist/{sync-definition-K4XOAG2B.js.map → sync-definition-OGQ5XTQE.js.map} +0 -0
- /package/dist/{tags-ETOOYQ57.js.map → tags-CZTRQNXV.js.map} +0 -0
- /package/dist/{targeting-criteria-L4DYIJZI.js.map → targeting-criteria-AQYXVSGN.js.map} +0 -0
- /package/dist/{testimonials-65N7IYN7.js.map → testimonials-G3OCNPBY.js.map} +0 -0
- /package/dist/{themes-B4LCQUXB.js.map → themes-FEVYZZCW.js.map} +0 -0
- /package/dist/{videos-BKVCCKIH.js.map → videos-36AXDUGZ.js.map} +0 -0
- /package/dist/{viewer-check-B5O7ZY3Q.js.map → viewer-check-6HL4OUQY.js.map} +0 -0
- /package/dist/{winning-ads-JIDPISKM.js.map → winning-ads-GMM5W2O4.js.map} +0 -0
- /package/dist/{x-NLGWZCGX.js.map → x-HGFAL3NY.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/creatives/translate.ts","../src/commands/creatives/translate-ad.ts","../src/commands/creatives/translate-model.ts"],"sourcesContent":["/**\n * `baker creatives translate --slug <ad> --to es-MX,es-CO`: the command around `translateAd`. Local\n * file work and one text call, so no backend route: the new ads reach the dashboard through\n * `canvas sync-definition`, as `creatives make --series` does, and the call's spend waits in the\n * canvas cache for the next run record to bill (`holdUnbilledSpend`).\n */\nimport { readFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { defineCommand } from \"citty\";\nimport { askJev } from \"../../engine/nodes/local/lib/jev.ts\";\nimport { askAboutImages, RENDER_REVIEW_MODEL, type ReviewUsage } from \"../../engine/nodes/local/lib/render-review.ts\";\nimport { optionalChatId } from \"../../env.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { runBaker as baker } from \"../baker-child.ts\";\nimport { findWorkspaceRoot } from \"../canvas/normalize-paths.ts\";\nimport { holdUnbilledSpend } from \"../canvas/unbilled-spend.ts\";\nimport { translateAd, translateEnvelope } from \"./translate-ad.ts\";\nimport { type Failure, quoteLineQuestion } from \"./translate-model.ts\";\n\n/** How long the one call for every language may take. */\nconst TRANSLATE_TIMEOUT_MS = 120_000;\n\nconst DESCRIPTION = `The same static ad in other languages. Each language becomes its own creative, <ad>-<lang>, made as an ad of the series <ad> leads: its ready picture with only the words changed, so the design is never made again per language. Every language is translated in one call (transcreated for the market, same role and length per line, brand names, prices and numbers kept); seconds, nothing rendered. The ad must have a ready version.\n\nStart here:\n baker creatives translate --slug spring-offer --to es-MX,es-CO,pt-BR # one ad per country: Mexico and Colombia are two ads\n baker creatives translate --slug spring-offer --to de,fr # a language with no country: its neutral variety\n baker creatives translate --slug spring-offer --to de --copy-file de.json # your own lines: {\"de\": [\"line 1\", \"line 2\"]}\n baker creatives translate --slug spring-offer --to de --copy-file de.json # only some lines yours, the model writes the rest: {\"de\": {\"headline\": \"…\", \"3\": \"…\"}}\n baker creatives translate --slug spring-offer --to es-MX --note \"Informal tú. Keep 'Pro' in English.\" # brief the translator\nTo change one line of one language after: edit src/creatives/<ad>-<lang>/prompt.json copy, then baker canvas run --series <ad>.\nTen angle ads in three languages: one design (the lead), the angle ads (creatives make <idea> --series <lead>), then translate each angle ad. Never a new canvas or a new design per language.\nThen: baker canvas run --series spring-offer (renders every language at once). Adding a language later leaves the ones made as they are.`;\n\nconst ARGS = {\n slug: {\n type: \"string\",\n required: true,\n description: \"The ad to translate (its creative slug); it must have a ready version\",\n },\n to: {\n type: \"string\",\n required: true,\n description:\n \"The languages, comma-separated BCP-47 codes: es-MX,es-CO,pt-BR (a country's own variety) or de,fr. One new creative each: <slug>-<tag in lowercase>\",\n },\n \"copy-file\": {\n type: \"string\",\n required: false,\n description:\n 'A JSON file with your own lines. A language as an array is every line, in the ad\\'s order, no model asked: {\"es\": [\"line 1\", \"line 2\"]}. A language as an object is only the lines you write, by number (from 1) or role, and the model writes the rest: {\"de\": {\"headline\": \"…\", \"3\": \"…\"}}. Your words for a line also win over the reading that it is a customer\\'s, unless it is signed as theirs',\n },\n note: {\n type: \"string\",\n required: false,\n description:\n \"Your instructions for the translator, as you would brief a copywriter: the tone, tú or usted, a term to keep in English, what the market calls the product. A customer's words stay as they said them whatever it says\",\n },\n again: {\n type: \"boolean\",\n required: false,\n default: false,\n description:\n \"Translate a language already made again (after the ad's words changed); without it, a made language is left as it is\",\n },\n} as const;\n\nregisterSchema({ command: \"creatives.translate\", description: DESCRIPTION, args: ARGS });\n\nfunction fail(error: Failure): never {\n writeJson({ ok: false, error });\n process.exit(1);\n}\n\nasync function readCopyFile(file: string): Promise<unknown> {\n try {\n return JSON.parse(await readFile(path.resolve(file), \"utf8\"));\n } catch (e) {\n fail({\n code: \"translate_copy_file_unreadable\",\n message: `The copy file ${file} could not be read as JSON (${e instanceof Error ? e.message : String(e)}).`,\n fix: 'Write it as {\"<lang>\": [\"line 1\", \"line 2\"]}, one array per language.',\n });\n }\n}\n\nexport const translateCommand = defineCommand({\n meta: { name: \"translate\", description: DESCRIPTION },\n args: ARGS,\n async run({ args }) {\n const root = findWorkspaceRoot(process.cwd()) ?? process.cwd();\n const copyFile = typeof args[\"copy-file\"] === \"string\" && args[\"copy-file\"] ? args[\"copy-file\"] : undefined;\n const copy = copyFile ? await readCopyFile(copyFile) : undefined;\n const spent: ReviewUsage[] = [];\n const result = await translateAd(root, String(args.slug), String(args.to), {\n ask: (prompt) =>\n askAboutImages(RENDER_REVIEW_MODEL, [], prompt, (usage) => spent.push(usage), TRANSLATE_TIMEOUT_MS).catch(\n () => null,\n ),\n ...(copy !== undefined ? { copy } : {}),\n again: args.again === true,\n ...(typeof args.note === \"string\" && args.note.trim() ? { note: args.note.trim() } : {}),\n sync: (dir) => baker([\"canvas\", \"sync-definition\", dir, \"--title\"]),\n chatId: optionalChatId() ?? null,\n judgeQuotes: (texts) => askJev(texts.map(quoteLineQuestion), (usage) => spent.push(usage)),\n });\n // No run record carries this call: the next render of this workspace bills it. The ads are made\n // by now, so a cache that cannot be written never costs the command its answer.\n await holdUnbilledSpend(path.join(root, \"canvas\", \".cache\"), spent).catch(() => undefined);\n if (\"code\" in result) fail(result);\n writeJson(translateEnvelope(result));\n },\n});\n","/**\n * `baker creatives translate --slug <ad> --to es,de`: the same ad in other languages. Each\n * language is a new creative, `<ad>-<lang>`, made as an ad of the series `<ad>` leads: the ad's\n * ready picture with only its words changed to theirs, so the design is never made again per\n * language. Every language is translated in one text call (or read from the agent's own file);\n * nothing is rendered here: `baker canvas run --series <ad>` renders them all at once.\n */\nimport { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport type { CreativesRunData } from \"@baker/api\";\nimport { readAdSpec } from \"../../engine/scaffold/static-ad-spec.ts\";\nimport { languageName, languageTag, sameTag, tagSlug } from \"../../language.ts\";\nimport { parseDefinitionStrategyFields } from \"../canvas/creative-definition.ts\";\nimport { claimNewCreativeInWorkspace, creativeLimitRefusal } from \"../canvas/creative-limit.ts\";\nimport { leadVersion, seriesLeadsAbove, writeSeriesMemberCanvas } from \"../canvas/series-member.ts\";\nimport {\n acceptTranslations,\n buildTranslatePrompt,\n customersWordsAmong,\n type Failure,\n type LineOverrides,\n lineOverrides,\n MESSAGE_ROLE,\n numberedLines,\n parseLanguages,\n signedLines,\n translatedDefinition,\n translatedSpec,\n unknownLineKeys,\n} from \"./translate-model.ts\";\n\n/** What became of one language. */\nexport type Translation = {\n language: string;\n creative: string;\n status: \"made\" | \"exists\" | \"refused\";\n error?: Failure;\n /** `made`: the lines kept as a customer said them, untranslated. */\n kept?: string[];\n /** Of those, the numbers (from 1) of the lines only judged a customer's, which the agent may give its own words for. */\n judged?: number[];\n};\n\nexport type Translated = {\n source: string;\n sourceLanguage?: string;\n leadsAbove: string[];\n translations: Translation[];\n /** The ad's prompt.json was changed after its last render: the translations are of the version rendered. */\n changedSinceRender?: true;\n};\n\n/** The spec as an ad spec, comparable; null when it does not read as one. Pure. */\nfunction comparable(spec: unknown): string | null {\n try {\n return JSON.stringify(readAdSpec(spec));\n } catch {\n return null;\n }\n}\n\n/** Whether the source's prompt.json now says something else than the version rendered. */\nasync function changedSinceRender(root: string, source: string, rendered: unknown): Promise<boolean> {\n const raw = await readFile(path.join(creativeDir(root, source), \"prompt.json\"), \"utf8\").catch(() => null);\n if (raw === null) return false;\n let now: unknown;\n try {\n now = JSON.parse(raw);\n } catch {\n return false;\n }\n const [a, b] = [comparable(now), comparable(rendered)];\n return a !== null && b !== null && a !== b;\n}\n\ntype Deps = {\n /** The text model, asked once for every language; its parsed JSON answer, or null. */\n ask: (prompt: string) => Promise<unknown>;\n /** The lines the agent wrote itself (`--copy-file`): no model is asked. */\n copy?: unknown;\n /** The agent's instructions for the translator: the tone, the form of address, terms to keep. */\n note?: string;\n /** Translate a language already made again (its words), instead of leaving it as it is. */\n again?: boolean;\n sync: (dir: string) => Promise<unknown>;\n chatId: string | null;\n fetchRecord?: (runId: string) => Promise<CreativesRunData | null>;\n /** Jev: how likely each line is a customer's own words; null when it could not answer. */\n judgeQuotes?: (texts: string[]) => Promise<number[] | null>;\n};\n\n/** The creative a language of `source` is: `<source>-<tag>`, the tag lowercase (`spring-offer-es-mx`). */\nexport const translationSlug = (source: string, language: string) => `${source}-${tagSlug(language)}`;\n\nconst creativeDir = (root: string, slug: string) => path.join(root, \"src\", \"creatives\", slug);\n\nfunction definitionOf(root: string, slug: string): Promise<string | null> {\n return readFile(path.join(creativeDir(root, slug), \"_definition.md\"), \"utf8\").catch(() => null);\n}\n\n/** The language the source is in: its `_definition.md`'s, else its market's. */\nfunction sourceLanguageOf(definition: string, spec: Record<string, unknown>): string | undefined {\n const market = (spec.viewer as { market?: { language?: unknown } } | undefined)?.market?.language;\n return (\n parseDefinitionStrategyFields(definition).language ??\n (typeof market === \"string\" ? (languageTag(market) ?? undefined) : undefined)\n );\n}\n\n/**\n * What each language asked comes to before any words are written: already made (left as it is\n * unless `again`), its slug taken by another creative, or to translate.\n */\nasync function planLanguages(\n root: string,\n source: string,\n languages: readonly string[],\n again: boolean,\n): Promise<{ settled: Translation[]; pending: string[] }> {\n const settled: Translation[] = [];\n const pending: string[] = [];\n for (const language of languages) {\n const creative = translationSlug(source, language);\n const existing = await definitionOf(root, creative);\n const fields = existing === null ? null : parseDefinitionStrategyFields(existing);\n const ours = fields?.seriesLead === source && sameTag(fields.language ?? \"\", language);\n if (!fields || (again && ours)) {\n pending.push(language);\n } else if (ours) {\n settled.push({ language, creative, status: \"exists\" });\n } else {\n settled.push({\n language,\n creative,\n status: \"refused\",\n error: {\n code: \"translate_slug_taken\",\n message: `\"${creative}\" is already another creative, not the ${languageName(language) ?? language} version of \"${source}\".`,\n fix: `Rename or remove src/creatives/${creative}/ if it is a leftover, then translate again.`,\n },\n });\n }\n }\n return { settled, pending };\n}\n\n/**\n * The languages a copy file gives in full: every line in order, the printed lines alone (the message\n * then stays the source's), or every printed line by number or role. Pure.\n */\nfunction wordsInFile(\n copy: unknown,\n pending: readonly string[],\n overrides: LineOverrides,\n lines: ReadonlyArray<{ text: string; role?: string }>,\n): Record<string, string[]> {\n const printed = lines.flatMap((l, i) => (l.role === MESSAGE_ROLE ? [] : [i]));\n const full = acceptTranslations(copy, pending, lines.length);\n const printedOnly = printed.length < lines.length ? acceptTranslations(copy, pending, printed.length) : {};\n const byLine = Object.entries(overrides).flatMap(([language, given]) =>\n printed.every((i) => given[i] !== undefined) ? [[language, printed.map((i) => given[i] ?? \"\")] as const] : [],\n );\n return { ...Object.fromEntries(byLine), ...printedOnly, ...full };\n}\n\n/**\n * Each pending language's lines: the agent's own (`copy`) where its file gives them all, else one\n * model call for every other language, with any line the file gives for it (`lineOverrides`) kept\n * as the agent wrote it.\n */\nasync function wordsFor(\n pending: readonly string[],\n overrides: LineOverrides,\n lines: ReadonlyArray<{ text: string; role?: string }>,\n context: { from?: string; brand?: string },\n deps: Pick<Deps, \"ask\" | \"copy\" | \"note\">,\n): Promise<{ words: Record<string, string[]>; asked: string[] }> {\n if (pending.length === 0) return { words: {}, asked: [] };\n const fromFile = deps.copy === undefined ? {} : wordsInFile(deps.copy, pending, overrides, lines);\n const asked = deps.copy === undefined ? [...pending] : pending.filter((l) => overrides[l] && !fromFile[l]);\n const note = deps.note ? { note: deps.note } : {};\n const answer = asked.length > 0 ? await deps.ask(buildTranslatePrompt(lines, asked, { ...context, ...note })) : null;\n const answered = asked.length > 0 ? acceptTranslations(answer, asked, lines.length) : {};\n const words = { ...fromFile };\n for (const language of asked) {\n const written = answered[language];\n if (written) words[language] = written.map((text, i) => overrides[language]?.[i] ?? text);\n }\n return { words, asked };\n}\n\n/** The ad `source` in each language `to` names, or why none could be made. */\nexport async function translateAd(root: string, source: string, to: string, deps: Deps): Promise<Translated | Failure> {\n const version = await leadVersion(root, source, deps.fetchRecord);\n if (\"refused\" in version) return version.refused;\n const spec = version.spec as Record<string, unknown>;\n if (spec.native) {\n return {\n code: \"translate_native_unsupported\",\n message: `\"${source}\" is a copy of a screen people know (a post, a chat, a review wall): its words are not lines of copy to translate.`,\n fix: \"Make it in the other language as its own ad: baker creatives make <idea> with the words written in that language.\",\n };\n }\n const sourceDefinition = (await definitionOf(root, source)) ?? \"---\\nkind: static\\n---\\n\";\n const sourceLanguage = sourceLanguageOf(sourceDefinition, spec);\n const asked = parseLanguages(to, sourceLanguage);\n if (\"code\" in asked) return asked;\n\n const { settled, pending } = await planLanguages(root, source, asked.languages, deps.again === true);\n const lines = version.lead.copy;\n // A customer's words stay theirs: translated, they would be words nobody said under their name.\n const quoted = pending.length > 0 ? await customersWordsAmong(lines, deps.judgeQuotes) : new Set<number>();\n const signed = signedLines(lines);\n const overrides = deps.copy !== undefined ? lineOverrides(deps.copy, pending, lines) : {};\n // The agent's own words for a line win over the judge's reading of it, never over a signature.\n const quotedIn = (language: string) =>\n new Set([...quoted].filter((i) => overrides[language]?.[i] === undefined || signed.has(i)));\n const unchanged = pending.filter((language) => lines.every((_, i) => quotedIn(language).has(i)));\n const open = pending.filter((language) => !unchanged.includes(language));\n const brand = readAdSpec(spec).brand?.name;\n // What the ad says is asked in the same call, so the team reads it in the ad's own language.\n const message = parseDefinitionStrategyFields(sourceDefinition).message;\n const marked = lines.map((line, i) => (quoted.has(i) ? { ...line, customersWords: true } : line));\n const asks = message ? [...marked, { text: message, role: MESSAGE_ROLE }] : marked;\n const { words, asked: modelAsked } = await wordsFor(\n open,\n overrides,\n asks,\n { ...(sourceLanguage ? { from: sourceLanguage } : {}), ...(brand ? { brand } : {}) },\n deps,\n );\n const translations = [...settled, ...unchanged.map((language) => nothingToTranslate(source, language))];\n for (const language of open) {\n translations.push(\n await makeTranslation(\n root,\n {\n source,\n language,\n sourceDefinition,\n spec,\n lines,\n quoted: quotedIn(language),\n signed,\n words: words[language],\n fromModel: modelAsked.includes(language),\n },\n deps,\n ),\n );\n }\n const order = new Map(asked.languages.map((l, i) => [l, i]));\n translations.sort((a, b) => (order.get(a.language) ?? 0) - (order.get(b.language) ?? 0));\n return {\n source,\n ...(sourceLanguage ? { sourceLanguage } : {}),\n leadsAbove: await seriesLeadsAbove(root, source),\n translations,\n ...((await changedSinceRender(root, source, version.spec)) ? { changedSinceRender: true as const } : {}),\n };\n}\n\n/**\n * A language for an ad whose every line is a customer's words, kept as they said them: it would be\n * the same ad, which the series run refuses, and the words left to change are the customer's. Pure.\n */\nfunction nothingToTranslate(source: string, language: string): Translation {\n const name = languageName(language) ?? language;\n return {\n language,\n creative: translationSlug(source, language),\n status: \"refused\",\n error: {\n code: \"translate_nothing_to_translate\",\n message: `Every line of \"${source}\" is a customer's own words, kept as they said them, so in ${name} it would be the same ad.`,\n fix: `Never translate a customer's words yourself: that puts words they never said under their name. To reach ${name} speakers, run \"${source}\" as it is, or give it a line of your own (a headline or a call to action), render it, then translate again.`,\n },\n };\n}\n\n/** A language the copy file does not give in full, nor any line of it the ad has. Pure. */\nfunction copyMissing(\n language: string,\n name: string,\n lines: ReadonlyArray<{ text: string; role?: string }>,\n unknown: readonly string[],\n): Failure {\n const named = unknown.map((key) => JSON.stringify(key)).join(\", \");\n return {\n code: \"translate_copy_missing\",\n message: unknown.length\n ? `The copy file's ${name} lines ${named} name no line of the ad.`\n : `The copy file has no ${name} lines, or not one for each of the ad's ${lines.length} lines.`,\n fix: `Give \"${language}\" an array of ${lines.length} lines in the ad's order, or only the lines to change, by number or role ({\"${language}\": {\"headline\": \"…\"}}): the model writes the rest. The ad's lines: ${numberedLines(lines)}.`,\n };\n}\n\n/** One language written as an ad of the source's series: its words, its definition and its canvas. */\nasync function makeTranslation(\n root: string,\n t: {\n source: string;\n language: string;\n sourceDefinition: string;\n spec: Record<string, unknown>;\n lines: ReadonlyArray<{ text: string; role?: string }>;\n quoted: ReadonlySet<number>;\n signed: ReadonlySet<number>;\n words: string[] | undefined;\n /** The model was asked for this language's words (none were in the copy file, or only some). */\n fromModel: boolean;\n },\n deps: Deps,\n): Promise<Translation> {\n const creative = translationSlug(t.source, t.language);\n const refused = (error: Failure): Translation => ({ language: t.language, creative, status: \"refused\", error });\n const name = languageName(t.language) ?? t.language;\n if (!t.words) {\n return refused(\n !t.fromModel\n ? copyMissing(t.language, name, t.lines, unknownLineKeys(deps.copy, t.language, t.lines))\n : {\n code: \"translate_failed\",\n message: `The ${name} words could not be written.`,\n fix: `Write them yourself: --copy-file <json> with {\"${t.language}\": [${t.lines.length} lines in the ad's order]}.`,\n },\n );\n }\n const dir = creativeDir(root, creative);\n const definitionPath = path.join(dir, \"_definition.md\");\n const claim = await claimNewCreativeInWorkspace(path.join(root, \"canvas\"), creative, deps.chatId, definitionPath);\n if (!claim.allowed) return refused(creativeLimitRefusal(creative).error);\n await mkdir(dir, { recursive: true });\n await writeFile(\n path.join(dir, \"prompt.json\"),\n `${JSON.stringify(translatedSpec(t.spec, t.words, t.language, t.quoted), null, 2)}\\n`,\n \"utf8\",\n );\n const headline = Math.max(\n 0,\n t.lines.findIndex((l) => l.role === \"headline\"),\n );\n await writeFile(\n definitionPath,\n translatedDefinition(t.sourceDefinition, {\n source: t.source,\n language: t.language,\n title: t.words[headline] ?? creative,\n ...(t.words.length > t.lines.length ? { message: t.words[t.lines.length] } : {}),\n }),\n \"utf8\",\n );\n const made = await writeSeriesMemberCanvas(root, creative, {\n leadWords: true,\n ...(deps.fetchRecord ? { fetchRecord: deps.fetchRecord } : {}),\n });\n if (made === null || \"refused\" in made) {\n return refused(made?.refused ?? { code: \"translate_not_made\", message: `\"${creative}\" could not be made.` });\n }\n // The dashboard learns the translation and its series now, not at Publish.\n await deps.sync(dir);\n const kept = [...t.quoted].sort((a, b) => a - b);\n const judged = kept.filter((i) => !t.signed.has(i)).map((i) => i + 1);\n return {\n language: t.language,\n creative,\n status: \"made\",\n ...(kept.length ? { kept: kept.map((i) => t.lines[i]?.text ?? \"\") } : {}),\n ...(judged.length ? { judged } : {}),\n };\n}\n\n/** The lines a translation kept as a customer said them, and how to translate one that is the advertiser's own. Pure. */\nfunction keptHint(source: string, t: Translation): string {\n const kept = (t.kept ?? []).map((text) => JSON.stringify(text)).join(\", \");\n const [line] = t.judged ?? [];\n const change = line\n ? ` If line ${line} is the ad's own words, not a customer's, write it yourself: baker creatives translate --slug ${source} --to ${t.language} --again --copy-file with {\"${t.language}\": {\"${line}\": \"<its words in ${t.language}>\"}}; the model writes the other lines again.`\n : \"\";\n return `${t.creative}: kept as the customer said them, untranslated: ${kept}.${change}`;\n}\n\n/** What `translate` prints: each language's ad, then the one series run that renders them all. Pure. */\nexport function translateEnvelope(result: Translated) {\n const made = result.translations.filter((t) => t.status !== \"refused\").map((t) => t.creative);\n const refused = result.translations.filter((t) => t.status === \"refused\");\n const order = [...result.leadsAbove].reverse().concat(result.source);\n return {\n ok: true as const,\n data: {\n source: result.source,\n made,\n translations: result.translations.map((t) => ({ ...t, name: languageName(t.language) ?? t.language })),\n },\n hints: [\n ...(result.changedSinceRender\n ? [\n `src/creatives/${result.source}/prompt.json was changed since its last render, and every language is made from the version rendered: none of them has that change. Never say they do. To carry it: baker canvas run --slug ${result.source}, then translate again with --again.`,\n ]\n : []),\n ...(made.length > 0\n ? [\n `Next: baker canvas run --series ${result.source} renders every language at once, each the ${result.source} picture with its own words, reviewed and corrected on its own. A language already rendered from the current version of ${result.source} is not rendered again.`,\n ]\n : []),\n ...(made.length > 0\n ? [\n `To change a line of one language (a word the person wants otherwise, a line too long), edit its words in that ad's own copy, src/creatives/${made[0]}/prompt.json \\`copy\\` (never its design), then baker canvas run --series ${result.source}: only that ad is made again. To change how every line reads (tone, tú or usted, a term to keep), translate again with --again --note \"<what to change>\"; --again writes every line of that language again.`,\n ]\n : []),\n `A later change to ${result.source} (its picture or design) reaches every language on the next ${order.map((slug) => `baker canvas run --series ${slug}`).join(\", then \")}. A change to its words does not: translate again with --again for the languages to update.`,\n ...refused.map((t) => `${t.creative}: ${t.error?.message ?? \"not made\"}${t.error?.fix ? ` ${t.error.fix}` : \"\"}`),\n ...result.translations.flatMap((t) => (t.kept?.length ? [keptHint(result.source, t)] : [])),\n ],\n };\n}\n","/**\n * `baker creatives translate`, its decisions: which languages, what the model is asked, which\n * answer is kept, and what each translation is on disk (its words in the source's spec, its\n * `_definition.md`). A translation is an ad of the series the source leads: the source's picture\n * with only its words changed, so ten ads in three languages stay one design. Pure.\n */\nimport { z } from \"zod\";\nimport { isAdSpec, readAdSpec } from \"../../engine/scaffold/static-ad-spec.ts\";\nimport { isCustomersWords, isSignatureLine, maybeSigned } from \"../../engine/scaffold/static-proof.ts\";\nimport { languageName, languageRegion, languageTag, sameTag } from \"../../language.ts\";\nimport { setDefinitionFields } from \"./make-model.ts\";\nimport { withoutFields } from \"./make-series.ts\";\n\nexport type Failure = { code: string; message: string; fix?: string };\n\n/** The languages `--to` names, as lowercase tags, once each; refused when one names none or is the ad's own. */\nexport function parseLanguages(raw: string, sourceLanguage: string | undefined): { languages: string[] } | Failure {\n const asked = raw\n .split(\",\")\n .map((code) => code.trim())\n .filter(Boolean);\n if (asked.length === 0) {\n return {\n code: \"translate_language_invalid\",\n message: \"No language was named.\",\n fix: \"Name each language as a code, comma-separated: --to es,de,fr (pt-BR, es-MX for a regional variant).\",\n };\n }\n const languages: string[] = [];\n for (const code of asked) {\n const tag = languageTag(code);\n if (!tag) {\n return {\n code: \"translate_language_invalid\",\n message: `\"${code}\" is not a language code.`,\n fix: \"Name each language as a BCP-47 code: es, de, fr, pt-BR, es-MX.\",\n };\n }\n if (sourceLanguage && sameTag(tag, sourceLanguage)) {\n return {\n code: \"translate_same_language\",\n message: `The ad is already in ${languageName(tag) ?? tag}.`,\n fix: `Leave ${code} out of --to.`,\n };\n }\n if (!languages.some((l) => sameTag(l, tag))) languages.push(tag);\n }\n return { languages };\n}\n\ntype Line = { text: string; role?: string; customersWords?: boolean };\n\n/** Jev's question for one copy line: whether it is a customer's own words, the advertiser's copy aside. */\nexport const quoteLineQuestion = (text: string) => ({\n instructions: {\n question:\n \"Is `line` a customer's or reviewer's own words (a testimonial, or a quote signed with the name of the person who said it), rather than the advertiser's own copy, in whatever language it is written?\",\n line: text,\n },\n});\n\n/** At or above, Jev holds a line to be a customer's own words (scripts/quote-line-evals). */\nexport const CUSTOMERS_WORDS = 0.5;\n\n/**\n * The lines signed as a customer's by their shape: a dash and a name, a quote or signature role, or\n * the line a signature right below signs. Nobody's say-so makes them the advertiser's. Pure.\n */\nexport function signedLines(lines: readonly Line[]): Set<number> {\n const signed = new Set<number>();\n lines.forEach((line, i) => {\n if (line.role === MESSAGE_ROLE) return;\n const below = lines[i + 1];\n if (isCustomersWords(line) || (below !== undefined && isSignatureLine(below))) signed.add(i);\n });\n return signed;\n}\n\n/**\n * The indexes of `lines` that are a customer's own words: set as a quote, signed by its shape\n * alone or by a signature on the line below it, else held so by `judge` (Jev, one probability per\n * text), a line below that may sign it asked with it. Without a judge only the shape and the role\n * decide: a line nobody can tell is translated, as the advertiser's copy is.\n */\nexport async function customersWordsAmong(\n lines: readonly Line[],\n judge?: (texts: string[]) => Promise<number[] | null>,\n): Promise<Set<number>> {\n const kept = signedLines(lines);\n const open = lines.flatMap((line, i) => (line.role === MESSAGE_ROLE || kept.has(i) ? [] : [i]));\n if (!judge || open.length === 0) return kept;\n // A hyphen opening the line below may sign this one or be the advertiser's own: asked together.\n const asked = (i: number) => {\n const text = lines[i]?.text ?? \"\";\n const below = lines[i + 1]?.text;\n return below !== undefined && maybeSigned(below) && !maybeSigned(text) ? `${text}\\n${below}` : text;\n };\n const answers = await judge(open.map(asked));\n if (answers?.length !== open.length) return kept;\n for (const [k, i] of open.entries()) if ((answers[k] ?? 0) >= CUSTOMERS_WORDS) kept.add(i);\n return kept;\n}\n\n/** The role of the extra line a translation asks for: the ad's message, said in the language for the team. */\nexport const MESSAGE_ROLE = \"message\";\n\nconst Answer = z.object({ translations: z.record(z.string(), z.array(z.string()).catch([])) });\n\n/**\n * The languages the model translated fully: each line of the source answered by one non-empty\n * line, in order. A language answered short or blank is left out (refused, never half an ad). Pure.\n */\nexport function acceptTranslations(\n answer: unknown,\n languages: readonly string[],\n lineCount: number,\n): Record<string, string[]> {\n // `--copy-file` may hold the languages bare; a model may answer \"pt-BR\" for \"pt-br\".\n const wrapped =\n answer && typeof answer === \"object\" && !(\"translations\" in answer) ? { translations: answer } : answer;\n const parsed = Answer.safeParse(wrapped);\n if (!parsed.success) return {};\n const byTag = new Map(Object.entries(parsed.data.translations).map(([key, lines]) => [key.toLowerCase(), lines]));\n const kept: Record<string, string[]> = {};\n for (const language of languages) {\n const lines = byTag.get(language.toLowerCase())?.map((line) => line.trim());\n if (lines && lines.length === lineCount && lines.every(Boolean)) kept[language] = lines;\n }\n return kept;\n}\n\n/** A copy file's language given as some of its lines: each line's words, by its position in the ad. */\nexport type LineOverrides = Record<string, Record<number, string>>;\n\n/** The ad's line a copy file's key names: its number from 1, else the first line with that role. */\nexport function lineByKey(key: string, lines: readonly Line[]): number | undefined {\n if (/^\\d+$/.test(key)) {\n const n = Number(key) - 1;\n return n >= 0 && n < lines.length ? n : undefined;\n }\n const i = lines.findIndex((l) => l.role !== MESSAGE_ROLE && l.role?.toLowerCase() === key.trim().toLowerCase());\n return i === -1 ? undefined : i;\n}\n\n/**\n * The languages a copy file gives as some of their lines (`{\"de\": {\"headline\": \"…\", \"2\": \"…\"}}`):\n * those lines are the agent's words, the rest are translated. A language given as a full array is\n * `acceptTranslations`' to read; a key naming no line of the ad is left out (`unknownLineKeys`). Pure.\n */\nexport function lineOverrides(file: unknown, languages: readonly string[], lines: readonly Line[]): LineOverrides {\n const byTag = languageEntries(file);\n const out: LineOverrides = {};\n for (const language of languages) {\n const given = byTag.get(language.toLowerCase());\n if (!given || Array.isArray(given) || typeof given !== \"object\") continue;\n const words: Record<number, string> = {};\n for (const [key, text] of Object.entries(given)) {\n const i = lineByKey(key, lines);\n if (i !== undefined && typeof text === \"string\" && text.trim()) words[i] = text.trim();\n }\n if (Object.keys(words).length > 0) out[language] = words;\n }\n return out;\n}\n\n/** The keys a copy file gives `language` that name no line of the ad. Pure. */\nexport function unknownLineKeys(file: unknown, language: string, lines: readonly Line[]): string[] {\n const given = languageEntries(file).get(language.toLowerCase());\n if (!given || Array.isArray(given) || typeof given !== \"object\") return [];\n return Object.keys(given).filter((key) => lineByKey(key, lines) === undefined);\n}\n\n/** The ad's lines as a copy file names them: `1 headline: \"…\"`, one per line. Pure. */\nexport function numberedLines(lines: readonly Line[]): string {\n return lines\n .filter((l) => l.role !== MESSAGE_ROLE)\n .map((l, i) => `${i + 1}${l.role ? ` ${l.role}` : \"\"}: ${JSON.stringify(l.text)}`)\n .join(\"; \");\n}\n\n/** The file's languages by lowercase tag, whether it wraps them in `translations` or not. */\nfunction languageEntries(file: unknown): Map<string, unknown> {\n const record = file && typeof file === \"object\" && !Array.isArray(file) ? (file as Record<string, unknown>) : {};\n const languages = record.translations && typeof record.translations === \"object\" ? record.translations : record;\n return new Map(Object.entries(languages as Record<string, unknown>).map(([k, v]) => [k.toLowerCase(), v]));\n}\n\n/** What the model is asked: every language at once, line by line, for the same picture. Pure. */\nexport function buildTranslatePrompt(\n lines: readonly Line[],\n languages: readonly string[],\n context: { from?: string; brand?: string; note?: string },\n): string {\n const from = context.from ? languageName(context.from) : null;\n return [\n `These are the lines of copy printed on a finished static ad${from ? `, written in ${from}` : \"\"}. Translate them${from ? ` from ${from}` : \"\"} into each of these languages: ${languages.map((l) => `${l} (${languageName(l) ?? l})`).join(\", \")}.`,\n \"\",\n ...lines.map(\n (line, i) =>\n `${i + 1}. ${line.role === MESSAGE_ROLE ? \"[not printed: what the ad says, in one sentence, for the team that runs it] \" : line.role ? `[${line.role}] ` : \"\"}${line.customersWords ? \"[a customer's own words: copy it exactly as written, untranslated] \" : \"\"}${JSON.stringify(line.text)}`,\n ),\n \"\",\n \"Rules:\",\n \"- Transcreate as a native copywriter of that market would write the ad, not word for word: the same promise and tone, natural for the people who will see it.\",\n \"- Each line keeps its role: a headline stays a headline, a button stays a short button.\",\n \"- Keep each line about as long as the original: it is set in the same layout, in the same space, so a much longer line will not fit.\",\n `- Keep brand names${context.brand ? ` (${JSON.stringify(context.brand)})` : \"\"}, product names, numbers, prices, currencies, percentages and URLs exactly as they are.`,\n \"- Use the language's own accents and punctuation (¿ ¡ « » ß ç ã).\",\n ...varieties(languages),\n ...(context.note\n ? [\n \"\",\n `The team's own instructions for this translation. Follow them over the rules above, except that a customer's own words stay exactly as written.\\n${context.note}`,\n ]\n : []),\n \"\",\n `Reply with only this JSON, one array per language with exactly ${lines.length} lines in the order above: {\"translations\": {${languages.map((l) => `\"${l}\": [\"...\"]`).join(\", \")}}}`,\n ].join(\"\\n\");\n}\n\n/**\n * The translation's spec: the source's as it was drawn, each line's words replaced in place (its\n * role, lettering and placement kept) and, when the source names its market, that market's\n * language set, and its country when the tag names one (es-MX: Mexico). The currency stays the\n * source's: its prices are kept as they are. Everything else is the source's: the design is never the translation's own. Pure.\n */\nexport function translatedSpec(\n source: Record<string, unknown>,\n lines: readonly string[],\n language: string,\n customersWords: ReadonlySet<number> = new Set(),\n): Record<string, unknown> {\n // An older blueprint carries its words in its own shape: it is written as the ad spec it reads as.\n const spec: Record<string, unknown> = isAdSpec(source) ? source : readAdSpec(source);\n const copy = Array.isArray(spec.copy) ? (spec.copy as Array<Record<string, unknown>>) : [];\n const viewer = spec.viewer as { market?: Record<string, unknown> } | undefined;\n return {\n ...spec,\n // A customer's words stay theirs: translated, they would be words nobody said under their name.\n copy: copy.map((line, i) => (customersWords.has(i) ? line : { ...line, text: lines[i] ?? line.text })),\n ...(viewer?.market ? { viewer: { ...viewer, market: { ...viewer.market, ...marketOf(language) } } } : {}),\n };\n}\n\n/** What a translation's `_definition.md` keeps of its source's: everything but these, which are its own. */\nconst OWN_FIELDS = [\"series\", \"language\", \"title\", \"status\"];\n\n/** The translation's `_definition.md`: the source's reasons, as an ad of the source's series in `language`. Pure. */\nexport function translatedDefinition(\n source: string,\n translation: { source: string; language: string; title: string; message?: string },\n): string {\n return setDefinitionFields(withoutFields(source, OWN_FIELDS), {\n title: translation.title.slice(0, 120),\n series: translation.source,\n language: translation.language,\n status: \"draft\",\n ...(translation.message ? { message: translation.message } : {}),\n });\n}\n\n/** For each tag naming a country, the instruction to write as people there write ads. */\nfunction varieties(languages: readonly string[]): string[] {\n const regional = languages.flatMap((tag) => {\n const region = languageRegion(tag);\n return region\n ? [\n `- ${tag}: write it as people in ${region.name} write ads: its own vocabulary, spelling, idioms and form of address (tú, usted or vos as ads there use it), not a neutral one and not a neighbouring country's variety of the same language.`,\n ]\n : [];\n });\n return regional.length > 0 ? [\"\", \"Each regional variant is its own ad:\", ...regional] : [];\n}\n\n/** The market fields a tag decides: its language, and its country when it names one. */\nfunction marketOf(language: string): { language: string; country?: string } {\n const region = languageRegion(language);\n return region ? { language, country: region.code } : { language };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,SAAS,YAAAA,iBAAgB;AACzB,OAAOC,WAAU;AACjB,SAAS,qBAAqB;;;ACD9B,SAAS,OAAO,UAAU,iBAAiB;AAC3C,OAAO,UAAU;;;ACFjB,SAAS,SAAS;AAUX,SAAS,eAAe,KAAa,gBAAuE;AACjH,QAAM,QAAQ,IACX,MAAM,GAAG,EACT,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,EACzB,OAAO,OAAO;AACjB,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,MACT,KAAK;AAAA,IACP;AAAA,EACF;AACA,QAAM,YAAsB,CAAC;AAC7B,aAAW,QAAQ,OAAO;AACxB,UAAM,MAAM,YAAY,IAAI;AAC5B,QAAI,CAAC,KAAK;AACR,aAAO;AAAA,QACL,MAAM;AAAA,QACN,SAAS,IAAI,IAAI;AAAA,QACjB,KAAK;AAAA,MACP;AAAA,IACF;AACA,QAAI,kBAAkB,QAAQ,KAAK,cAAc,GAAG;AAClD,aAAO;AAAA,QACL,MAAM;AAAA,QACN,SAAS,wBAAwB,aAAa,GAAG,KAAK,GAAG;AAAA,QACzD,KAAK,SAAS,IAAI;AAAA,MACpB;AAAA,IACF;AACA,QAAI,CAAC,UAAU,KAAK,CAAC,MAAM,QAAQ,GAAG,GAAG,CAAC,EAAG,WAAU,KAAK,GAAG;AAAA,EACjE;AACA,SAAO,EAAE,UAAU;AACrB;AAKO,IAAM,oBAAoB,CAAC,UAAkB;AAAA,EAClD,cAAc;AAAA,IACZ,UACE;AAAA,IACF,MAAM;AAAA,EACR;AACF;AAGO,IAAM,kBAAkB;AAMxB,SAAS,YAAY,OAAqC;AAC/D,QAAM,SAAS,oBAAI,IAAY;AAC/B,QAAM,QAAQ,CAAC,MAAM,MAAM;AACzB,QAAI,KAAK,SAAS,aAAc;AAChC,UAAM,QAAQ,MAAM,IAAI,CAAC;AACzB,QAAI,iBAAiB,IAAI,KAAM,UAAU,UAAa,gBAAgB,KAAK,EAAI,QAAO,IAAI,CAAC;AAAA,EAC7F,CAAC;AACD,SAAO;AACT;AAQA,eAAsB,oBACpB,OACA,OACsB;AACtB,QAAM,OAAO,YAAY,KAAK;AAC9B,QAAM,OAAO,MAAM,QAAQ,CAAC,MAAM,MAAO,KAAK,SAAS,gBAAgB,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAE;AAC9F,MAAI,CAAC,SAAS,KAAK,WAAW,EAAG,QAAO;AAExC,QAAM,QAAQ,CAAC,MAAc;AAC3B,UAAM,OAAO,MAAM,CAAC,GAAG,QAAQ;AAC/B,UAAM,QAAQ,MAAM,IAAI,CAAC,GAAG;AAC5B,WAAO,UAAU,UAAa,YAAY,KAAK,KAAK,CAAC,YAAY,IAAI,IAAI,GAAG,IAAI;AAAA,EAAK,KAAK,KAAK;AAAA,EACjG;AACA,QAAM,UAAU,MAAM,MAAM,KAAK,IAAI,KAAK,CAAC;AAC3C,MAAI,SAAS,WAAW,KAAK,OAAQ,QAAO;AAC5C,aAAW,CAAC,GAAG,CAAC,KAAK,KAAK,QAAQ,EAAG,MAAK,QAAQ,CAAC,KAAK,MAAM,gBAAiB,MAAK,IAAI,CAAC;AACzF,SAAO;AACT;AAGO,IAAM,eAAe;AAE5B,IAAM,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AAMtF,SAAS,mBACd,QACA,WACA,WAC0B;AAE1B,QAAM,UACJ,UAAU,OAAO,WAAW,YAAY,EAAE,kBAAkB,UAAU,EAAE,cAAc,OAAO,IAAI;AACnG,QAAM,SAAS,OAAO,UAAU,OAAO;AACvC,MAAI,CAAC,OAAO,QAAS,QAAO,CAAC;AAC7B,QAAM,QAAQ,IAAI,IAAI,OAAO,QAAQ,OAAO,KAAK,YAAY,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,IAAI,YAAY,GAAG,KAAK,CAAC,CAAC;AAChH,QAAM,OAAiC,CAAC;AACxC,aAAW,YAAY,WAAW;AAChC,UAAM,QAAQ,MAAM,IAAI,SAAS,YAAY,CAAC,GAAG,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC;AAC1E,QAAI,SAAS,MAAM,WAAW,aAAa,MAAM,MAAM,OAAO,EAAG,MAAK,QAAQ,IAAI;AAAA,EACpF;AACA,SAAO;AACT;AAMO,SAAS,UAAU,KAAa,OAA4C;AACjF,MAAI,QAAQ,KAAK,GAAG,GAAG;AACrB,UAAM,IAAI,OAAO,GAAG,IAAI;AACxB,WAAO,KAAK,KAAK,IAAI,MAAM,SAAS,IAAI;AAAA,EAC1C;AACA,QAAM,IAAI,MAAM,UAAU,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,MAAM,YAAY,MAAM,IAAI,KAAK,EAAE,YAAY,CAAC;AAC9G,SAAO,MAAM,KAAK,SAAY;AAChC;AAOO,SAAS,cAAc,MAAe,WAA8B,OAAuC;AAChH,QAAM,QAAQ,gBAAgB,IAAI;AAClC,QAAM,MAAqB,CAAC;AAC5B,aAAW,YAAY,WAAW;AAChC,UAAM,QAAQ,MAAM,IAAI,SAAS,YAAY,CAAC;AAC9C,QAAI,CAAC,SAAS,MAAM,QAAQ,KAAK,KAAK,OAAO,UAAU,SAAU;AACjE,UAAM,QAAgC,CAAC;AACvC,eAAW,CAAC,KAAK,IAAI,KAAK,OAAO,QAAQ,KAAK,GAAG;AAC/C,YAAM,IAAI,UAAU,KAAK,KAAK;AAC9B,UAAI,MAAM,UAAa,OAAO,SAAS,YAAY,KAAK,KAAK,EAAG,OAAM,CAAC,IAAI,KAAK,KAAK;AAAA,IACvF;AACA,QAAI,OAAO,KAAK,KAAK,EAAE,SAAS,EAAG,KAAI,QAAQ,IAAI;AAAA,EACrD;AACA,SAAO;AACT;AAGO,SAAS,gBAAgB,MAAe,UAAkB,OAAkC;AACjG,QAAM,QAAQ,gBAAgB,IAAI,EAAE,IAAI,SAAS,YAAY,CAAC;AAC9D,MAAI,CAAC,SAAS,MAAM,QAAQ,KAAK,KAAK,OAAO,UAAU,SAAU,QAAO,CAAC;AACzE,SAAO,OAAO,KAAK,KAAK,EAAE,OAAO,CAAC,QAAQ,UAAU,KAAK,KAAK,MAAM,MAAS;AAC/E;AAGO,SAAS,cAAc,OAAgC;AAC5D,SAAO,MACJ,OAAO,CAAC,MAAM,EAAE,SAAS,YAAY,EACrC,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,OAAO,IAAI,EAAE,IAAI,KAAK,EAAE,KAAK,KAAK,UAAU,EAAE,IAAI,CAAC,EAAE,EAChF,KAAK,IAAI;AACd;AAGA,SAAS,gBAAgB,MAAqC;AAC5D,QAAM,SAAS,QAAQ,OAAO,SAAS,YAAY,CAAC,MAAM,QAAQ,IAAI,IAAK,OAAmC,CAAC;AAC/G,QAAM,YAAY,OAAO,gBAAgB,OAAO,OAAO,iBAAiB,WAAW,OAAO,eAAe;AACzG,SAAO,IAAI,IAAI,OAAO,QAAQ,SAAoC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;AAC3G;AAGO,SAAS,qBACd,OACA,WACA,SACQ;AACR,QAAM,OAAO,QAAQ,OAAO,aAAa,QAAQ,IAAI,IAAI;AACzD,SAAO;AAAA,IACL,8DAA8D,OAAO,gBAAgB,IAAI,KAAK,EAAE,mBAAmB,OAAO,SAAS,IAAI,KAAK,EAAE,kCAAkC,UAAU,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,IAAI,CAAC;AAAA,IACjP;AAAA,IACA,GAAG,MAAM;AAAA,MACP,CAAC,MAAM,MACL,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,eAAe,iFAAiF,KAAK,OAAO,IAAI,KAAK,IAAI,OAAO,EAAE,GAAG,KAAK,iBAAiB,wEAAwE,EAAE,GAAG,KAAK,UAAU,KAAK,IAAI,CAAC;AAAA,IAChS;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,qBAAqB,QAAQ,QAAQ,KAAK,KAAK,UAAU,QAAQ,KAAK,CAAC,MAAM,EAAE;AAAA,IAC/E;AAAA,IACA,GAAG,UAAU,SAAS;AAAA,IACtB,GAAI,QAAQ,OACR;AAAA,MACE;AAAA,MACA;AAAA,EAAoJ,QAAQ,IAAI;AAAA,IAClK,IACA,CAAC;AAAA,IACL;AAAA,IACA,kEAAkE,MAAM,MAAM,gDAAgD,UAAU,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,KAAK,IAAI,CAAC;AAAA,EAClL,EAAE,KAAK,IAAI;AACb;AAQO,SAAS,eACd,QACA,OACA,UACA,iBAAsC,oBAAI,IAAI,GACrB;AAEzB,QAAM,OAAgC,SAAS,MAAM,IAAI,SAAS,WAAW,MAAM;AACnF,QAAM,OAAO,MAAM,QAAQ,KAAK,IAAI,IAAK,KAAK,OAA0C,CAAC;AACzF,QAAM,SAAS,KAAK;AACpB,SAAO;AAAA,IACL,GAAG;AAAA;AAAA,IAEH,MAAM,KAAK,IAAI,CAAC,MAAM,MAAO,eAAe,IAAI,CAAC,IAAI,OAAO,EAAE,GAAG,MAAM,MAAM,MAAM,CAAC,KAAK,KAAK,KAAK,CAAE;AAAA,IACrG,GAAI,QAAQ,SAAS,EAAE,QAAQ,EAAE,GAAG,QAAQ,QAAQ,EAAE,GAAG,OAAO,QAAQ,GAAG,SAAS,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC;AAAA,EACzG;AACF;AAGA,IAAM,aAAa,CAAC,UAAU,YAAY,SAAS,QAAQ;AAGpD,SAAS,qBACd,QACA,aACQ;AACR,SAAO,oBAAoB,cAAc,QAAQ,UAAU,GAAG;AAAA,IAC5D,OAAO,YAAY,MAAM,MAAM,GAAG,GAAG;AAAA,IACrC,QAAQ,YAAY;AAAA,IACpB,UAAU,YAAY;AAAA,IACtB,QAAQ;AAAA,IACR,GAAI,YAAY,UAAU,EAAE,SAAS,YAAY,QAAQ,IAAI,CAAC;AAAA,EAChE,CAAC;AACH;AAGA,SAAS,UAAU,WAAwC;AACzD,QAAM,WAAW,UAAU,QAAQ,CAAC,QAAQ;AAC1C,UAAM,SAAS,eAAe,GAAG;AACjC,WAAO,SACH;AAAA,MACE,KAAK,GAAG,2BAA2B,OAAO,IAAI;AAAA,IAChD,IACA,CAAC;AAAA,EACP,CAAC;AACD,SAAO,SAAS,SAAS,IAAI,CAAC,IAAI,wCAAwC,GAAG,QAAQ,IAAI,CAAC;AAC5F;AAGA,SAAS,SAAS,UAA0D;AAC1E,QAAM,SAAS,eAAe,QAAQ;AACtC,SAAO,SAAS,EAAE,UAAU,SAAS,OAAO,KAAK,IAAI,EAAE,SAAS;AAClE;;;ADjOA,SAAS,WAAW,MAA8B;AAChD,MAAI;AACF,WAAO,KAAK,UAAU,WAAW,IAAI,CAAC;AAAA,EACxC,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAGA,eAAe,mBAAmB,MAAc,QAAgB,UAAqC;AACnG,QAAM,MAAM,MAAM,SAAS,KAAK,KAAK,YAAY,MAAM,MAAM,GAAG,aAAa,GAAG,MAAM,EAAE,MAAM,MAAM,IAAI;AACxG,MAAI,QAAQ,KAAM,QAAO;AACzB,MAAI;AACJ,MAAI;AACF,UAAM,KAAK,MAAM,GAAG;AAAA,EACtB,QAAQ;AACN,WAAO;AAAA,EACT;AACA,QAAM,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,WAAW,QAAQ,CAAC;AACrD,SAAO,MAAM,QAAQ,MAAM,QAAQ,MAAM;AAC3C;AAmBO,IAAM,kBAAkB,CAAC,QAAgB,aAAqB,GAAG,MAAM,IAAI,QAAQ,QAAQ,CAAC;AAEnG,IAAM,cAAc,CAAC,MAAc,SAAiB,KAAK,KAAK,MAAM,OAAO,aAAa,IAAI;AAE5F,SAAS,aAAa,MAAc,MAAsC;AACxE,SAAO,SAAS,KAAK,KAAK,YAAY,MAAM,IAAI,GAAG,gBAAgB,GAAG,MAAM,EAAE,MAAM,MAAM,IAAI;AAChG;AAGA,SAAS,iBAAiB,YAAoB,MAAmD;AAC/F,QAAM,SAAU,KAAK,QAA4D,QAAQ;AACzF,SACE,8BAA8B,UAAU,EAAE,aACzC,OAAO,WAAW,WAAY,YAAY,MAAM,KAAK,SAAa;AAEvE;AAMA,eAAe,cACb,MACA,QACA,WACA,OACwD;AACxD,QAAM,UAAyB,CAAC;AAChC,QAAM,UAAoB,CAAC;AAC3B,aAAW,YAAY,WAAW;AAChC,UAAM,WAAW,gBAAgB,QAAQ,QAAQ;AACjD,UAAM,WAAW,MAAM,aAAa,MAAM,QAAQ;AAClD,UAAM,SAAS,aAAa,OAAO,OAAO,8BAA8B,QAAQ;AAChF,UAAM,OAAO,QAAQ,eAAe,UAAU,QAAQ,OAAO,YAAY,IAAI,QAAQ;AACrF,QAAI,CAAC,UAAW,SAAS,MAAO;AAC9B,cAAQ,KAAK,QAAQ;AAAA,IACvB,WAAW,MAAM;AACf,cAAQ,KAAK,EAAE,UAAU,UAAU,QAAQ,SAAS,CAAC;AAAA,IACvD,OAAO;AACL,cAAQ,KAAK;AAAA,QACX;AAAA,QACA;AAAA,QACA,QAAQ;AAAA,QACR,OAAO;AAAA,UACL,MAAM;AAAA,UACN,SAAS,IAAI,QAAQ,0CAA0C,aAAa,QAAQ,KAAK,QAAQ,gBAAgB,MAAM;AAAA,UACvH,KAAK,kCAAkC,QAAQ;AAAA,QACjD;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACA,SAAO,EAAE,SAAS,QAAQ;AAC5B;AAMA,SAAS,YACP,MACA,SACA,WACA,OAC0B;AAC1B,QAAM,UAAU,MAAM,QAAQ,CAAC,GAAG,MAAO,EAAE,SAAS,eAAe,CAAC,IAAI,CAAC,CAAC,CAAE;AAC5E,QAAM,OAAO,mBAAmB,MAAM,SAAS,MAAM,MAAM;AAC3D,QAAM,cAAc,QAAQ,SAAS,MAAM,SAAS,mBAAmB,MAAM,SAAS,QAAQ,MAAM,IAAI,CAAC;AACzG,QAAM,SAAS,OAAO,QAAQ,SAAS,EAAE;AAAA,IAAQ,CAAC,CAAC,UAAU,KAAK,MAChE,QAAQ,MAAM,CAAC,MAAM,MAAM,CAAC,MAAM,MAAS,IAAI,CAAC,CAAC,UAAU,QAAQ,IAAI,CAAC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,CAAU,IAAI,CAAC;AAAA,EAC9G;AACA,SAAO,EAAE,GAAG,OAAO,YAAY,MAAM,GAAG,GAAG,aAAa,GAAG,KAAK;AAClE;AAOA,eAAe,SACb,SACA,WACA,OACA,SACA,MAC+D;AAC/D,MAAI,QAAQ,WAAW,EAAG,QAAO,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,EAAE;AACxD,QAAM,WAAW,KAAK,SAAS,SAAY,CAAC,IAAI,YAAY,KAAK,MAAM,SAAS,WAAW,KAAK;AAChG,QAAM,QAAQ,KAAK,SAAS,SAAY,CAAC,GAAG,OAAO,IAAI,QAAQ,OAAO,CAAC,MAAM,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACzG,QAAM,OAAO,KAAK,OAAO,EAAE,MAAM,KAAK,KAAK,IAAI,CAAC;AAChD,QAAM,SAAS,MAAM,SAAS,IAAI,MAAM,KAAK,IAAI,qBAAqB,OAAO,OAAO,EAAE,GAAG,SAAS,GAAG,KAAK,CAAC,CAAC,IAAI;AAChH,QAAM,WAAW,MAAM,SAAS,IAAI,mBAAmB,QAAQ,OAAO,MAAM,MAAM,IAAI,CAAC;AACvF,QAAM,QAAQ,EAAE,GAAG,SAAS;AAC5B,aAAW,YAAY,OAAO;AAC5B,UAAM,UAAU,SAAS,QAAQ;AACjC,QAAI,QAAS,OAAM,QAAQ,IAAI,QAAQ,IAAI,CAAC,MAAM,MAAM,UAAU,QAAQ,IAAI,CAAC,KAAK,IAAI;AAAA,EAC1F;AACA,SAAO,EAAE,OAAO,MAAM;AACxB;AAGA,eAAsB,YAAY,MAAc,QAAgB,IAAY,MAA2C;AACrH,QAAM,UAAU,MAAM,YAAY,MAAM,QAAQ,KAAK,WAAW;AAChE,MAAI,aAAa,QAAS,QAAO,QAAQ;AACzC,QAAM,OAAO,QAAQ;AACrB,MAAI,KAAK,QAAQ;AACf,WAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS,IAAI,MAAM;AAAA,MACnB,KAAK;AAAA,IACP;AAAA,EACF;AACA,QAAM,mBAAoB,MAAM,aAAa,MAAM,MAAM,KAAM;AAC/D,QAAM,iBAAiB,iBAAiB,kBAAkB,IAAI;AAC9D,QAAM,QAAQ,eAAe,IAAI,cAAc;AAC/C,MAAI,UAAU,MAAO,QAAO;AAE5B,QAAM,EAAE,SAAS,QAAQ,IAAI,MAAM,cAAc,MAAM,QAAQ,MAAM,WAAW,KAAK,UAAU,IAAI;AACnG,QAAM,QAAQ,QAAQ,KAAK;AAE3B,QAAM,SAAS,QAAQ,SAAS,IAAI,MAAM,oBAAoB,OAAO,KAAK,WAAW,IAAI,oBAAI,IAAY;AACzG,QAAM,SAAS,YAAY,KAAK;AAChC,QAAM,YAAY,KAAK,SAAS,SAAY,cAAc,KAAK,MAAM,SAAS,KAAK,IAAI,CAAC;AAExF,QAAM,WAAW,CAAC,aAChB,IAAI,IAAI,CAAC,GAAG,MAAM,EAAE,OAAO,CAAC,MAAM,UAAU,QAAQ,IAAI,CAAC,MAAM,UAAa,OAAO,IAAI,CAAC,CAAC,CAAC;AAC5F,QAAM,YAAY,QAAQ,OAAO,CAAC,aAAa,MAAM,MAAM,CAAC,GAAG,MAAM,SAAS,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;AAC/F,QAAM,OAAO,QAAQ,OAAO,CAAC,aAAa,CAAC,UAAU,SAAS,QAAQ,CAAC;AACvE,QAAM,QAAQ,WAAW,IAAI,EAAE,OAAO;AAEtC,QAAM,UAAU,8BAA8B,gBAAgB,EAAE;AAChE,QAAM,SAAS,MAAM,IAAI,CAAC,MAAM,MAAO,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,MAAM,gBAAgB,KAAK,IAAI,IAAK;AAChG,QAAM,OAAO,UAAU,CAAC,GAAG,QAAQ,EAAE,MAAM,SAAS,MAAM,aAAa,CAAC,IAAI;AAC5E,QAAM,EAAE,OAAO,OAAO,WAAW,IAAI,MAAM;AAAA,IACzC;AAAA,IACA;AAAA,IACA;AAAA,IACA,EAAE,GAAI,iBAAiB,EAAE,MAAM,eAAe,IAAI,CAAC,GAAI,GAAI,QAAQ,EAAE,MAAM,IAAI,CAAC,EAAG;AAAA,IACnF;AAAA,EACF;AACA,QAAM,eAAe,CAAC,GAAG,SAAS,GAAG,UAAU,IAAI,CAAC,aAAa,mBAAmB,QAAQ,QAAQ,CAAC,CAAC;AACtG,aAAW,YAAY,MAAM;AAC3B,iBAAa;AAAA,MACX,MAAM;AAAA,QACJ;AAAA,QACA;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,QAAQ,SAAS,QAAQ;AAAA,UACzB;AAAA,UACA,OAAO,MAAM,QAAQ;AAAA,UACrB,WAAW,WAAW,SAAS,QAAQ;AAAA,QACzC;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,QAAM,QAAQ,IAAI,IAAI,MAAM,UAAU,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3D,eAAa,KAAK,CAAC,GAAG,OAAO,MAAM,IAAI,EAAE,QAAQ,KAAK,MAAM,MAAM,IAAI,EAAE,QAAQ,KAAK,EAAE;AACvF,SAAO;AAAA,IACL;AAAA,IACA,GAAI,iBAAiB,EAAE,eAAe,IAAI,CAAC;AAAA,IAC3C,YAAY,MAAM,iBAAiB,MAAM,MAAM;AAAA,IAC/C;AAAA,IACA,GAAK,MAAM,mBAAmB,MAAM,QAAQ,QAAQ,IAAI,IAAK,EAAE,oBAAoB,KAAc,IAAI,CAAC;AAAA,EACxG;AACF;AAMA,SAAS,mBAAmB,QAAgB,UAA+B;AACzE,QAAM,OAAO,aAAa,QAAQ,KAAK;AACvC,SAAO;AAAA,IACL;AAAA,IACA,UAAU,gBAAgB,QAAQ,QAAQ;AAAA,IAC1C,QAAQ;AAAA,IACR,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS,kBAAkB,MAAM,8DAA8D,IAAI;AAAA,MACnG,KAAK,2GAA2G,IAAI,mBAAmB,MAAM;AAAA,IAC/I;AAAA,EACF;AACF;AAGA,SAAS,YACP,UACA,MACA,OACA,SACS;AACT,QAAM,QAAQ,QAAQ,IAAI,CAAC,QAAQ,KAAK,UAAU,GAAG,CAAC,EAAE,KAAK,IAAI;AACjE,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS,QAAQ,SACb,mBAAmB,IAAI,UAAU,KAAK,6BACtC,wBAAwB,IAAI,2CAA2C,MAAM,MAAM;AAAA,IACvF,KAAK,SAAS,QAAQ,iBAAiB,MAAM,MAAM,+EAA+E,QAAQ,2EAAsE,cAAc,KAAK,CAAC;AAAA,EACtO;AACF;AAGA,eAAe,gBACb,MACA,GAYA,MACsB;AACtB,QAAM,WAAW,gBAAgB,EAAE,QAAQ,EAAE,QAAQ;AACrD,QAAM,UAAU,CAAC,WAAiC,EAAE,UAAU,EAAE,UAAU,UAAU,QAAQ,WAAW,MAAM;AAC7G,QAAM,OAAO,aAAa,EAAE,QAAQ,KAAK,EAAE;AAC3C,MAAI,CAAC,EAAE,OAAO;AACZ,WAAO;AAAA,MACL,CAAC,EAAE,YACC,YAAY,EAAE,UAAU,MAAM,EAAE,OAAO,gBAAgB,KAAK,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,IACtF;AAAA,QACE,MAAM;AAAA,QACN,SAAS,OAAO,IAAI;AAAA,QACpB,KAAK,kDAAkD,EAAE,QAAQ,OAAO,EAAE,MAAM,MAAM;AAAA,MACxF;AAAA,IACN;AAAA,EACF;AACA,QAAM,MAAM,YAAY,MAAM,QAAQ;AACtC,QAAM,iBAAiB,KAAK,KAAK,KAAK,gBAAgB;AACtD,QAAM,QAAQ,MAAM,4BAA4B,KAAK,KAAK,MAAM,QAAQ,GAAG,UAAU,KAAK,QAAQ,cAAc;AAChH,MAAI,CAAC,MAAM,QAAS,QAAO,QAAQ,qBAAqB,QAAQ,EAAE,KAAK;AACvE,QAAM,MAAM,KAAK,EAAE,WAAW,KAAK,CAAC;AACpC,QAAM;AAAA,IACJ,KAAK,KAAK,KAAK,aAAa;AAAA,IAC5B,GAAG,KAAK,UAAU,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;AAAA;AAAA,IACjF;AAAA,EACF;AACA,QAAM,WAAW,KAAK;AAAA,IACpB;AAAA,IACA,EAAE,MAAM,UAAU,CAAC,MAAM,EAAE,SAAS,UAAU;AAAA,EAChD;AACA,QAAM;AAAA,IACJ;AAAA,IACA,qBAAqB,EAAE,kBAAkB;AAAA,MACvC,QAAQ,EAAE;AAAA,MACV,UAAU,EAAE;AAAA,MACZ,OAAO,EAAE,MAAM,QAAQ,KAAK;AAAA,MAC5B,GAAI,EAAE,MAAM,SAAS,EAAE,MAAM,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,MAAM,EAAE,IAAI,CAAC;AAAA,IAChF,CAAC;AAAA,IACD;AAAA,EACF;AACA,QAAM,OAAO,MAAM,wBAAwB,MAAM,UAAU;AAAA,IACzD,WAAW;AAAA,IACX,GAAI,KAAK,cAAc,EAAE,aAAa,KAAK,YAAY,IAAI,CAAC;AAAA,EAC9D,CAAC;AACD,MAAI,SAAS,QAAQ,aAAa,MAAM;AACtC,WAAO,QAAQ,MAAM,WAAW,EAAE,MAAM,sBAAsB,SAAS,IAAI,QAAQ,uBAAuB,CAAC;AAAA,EAC7G;AAEA,QAAM,KAAK,KAAK,GAAG;AACnB,QAAM,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC;AAC/C,QAAM,SAAS,KAAK,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC;AACpE,SAAO;AAAA,IACL,UAAU,EAAE;AAAA,IACZ;AAAA,IACA,QAAQ;AAAA,IACR,GAAI,KAAK,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,QAAQ,EAAE,EAAE,IAAI,CAAC;AAAA,IACvE,GAAI,OAAO,SAAS,EAAE,OAAO,IAAI,CAAC;AAAA,EACpC;AACF;AAGA,SAAS,SAAS,QAAgB,GAAwB;AACxD,QAAM,QAAQ,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,SAAS,KAAK,UAAU,IAAI,CAAC,EAAE,KAAK,IAAI;AACzE,QAAM,CAAC,IAAI,IAAI,EAAE,UAAU,CAAC;AAC5B,QAAM,SAAS,OACX,YAAY,IAAI,iGAAiG,MAAM,SAAS,EAAE,QAAQ,+BAA+B,EAAE,QAAQ,QAAQ,IAAI,qBAAqB,EAAE,QAAQ,kDAC9N;AACJ,SAAO,GAAG,EAAE,QAAQ,mDAAmD,IAAI,IAAI,MAAM;AACvF;AAGO,SAAS,kBAAkB,QAAoB;AACpD,QAAM,OAAO,OAAO,aAAa,OAAO,CAAC,MAAM,EAAE,WAAW,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ;AAC5F,QAAM,UAAU,OAAO,aAAa,OAAO,CAAC,MAAM,EAAE,WAAW,SAAS;AACxE,QAAM,QAAQ,CAAC,GAAG,OAAO,UAAU,EAAE,QAAQ,EAAE,OAAO,OAAO,MAAM;AACnE,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,MAAM;AAAA,MACJ,QAAQ,OAAO;AAAA,MACf;AAAA,MACA,cAAc,OAAO,aAAa,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,MAAM,aAAa,EAAE,QAAQ,KAAK,EAAE,SAAS,EAAE;AAAA,IACvG;AAAA,IACA,OAAO;AAAA,MACL,GAAI,OAAO,qBACP;AAAA,QACE,iBAAiB,OAAO,MAAM,+LAA+L,OAAO,MAAM;AAAA,MAC5O,IACA,CAAC;AAAA,MACL,GAAI,KAAK,SAAS,IACd;AAAA,QACE,mCAAmC,OAAO,MAAM,6CAA6C,OAAO,MAAM,2HAA2H,OAAO,MAAM;AAAA,MACpP,IACA,CAAC;AAAA,MACL,GAAI,KAAK,SAAS,IACd;AAAA,QACE,8IAA8I,KAAK,CAAC,CAAC,4EAA4E,OAAO,MAAM;AAAA,MAChP,IACA,CAAC;AAAA,MACL,qBAAqB,OAAO,MAAM,+DAA+D,MAAM,IAAI,CAAC,SAAS,6BAA6B,IAAI,EAAE,EAAE,KAAK,SAAS,CAAC;AAAA,MACzK,GAAG,QAAQ,IAAI,CAAC,MAAM,GAAG,EAAE,QAAQ,KAAK,EAAE,OAAO,WAAW,UAAU,GAAG,EAAE,OAAO,MAAM,IAAI,EAAE,MAAM,GAAG,KAAK,EAAE,EAAE;AAAA,MAChH,GAAG,OAAO,aAAa,QAAQ,CAAC,MAAO,EAAE,MAAM,SAAS,CAAC,SAAS,OAAO,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAE;AAAA,IAC5F;AAAA,EACF;AACF;;;AD1YA,IAAM,uBAAuB;AAE7B,IAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYpB,IAAM,OAAO;AAAA,EACX,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aAAa;AAAA,EACf;AAAA,EACA,IAAI;AAAA,IACF,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aACE;AAAA,EACJ;AAAA,EACA,aAAa;AAAA,IACX,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aACE;AAAA,EACJ;AAAA,EACA,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,UAAU;AAAA,IACV,aACE;AAAA,EACJ;AAAA,EACA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,UAAU;AAAA,IACV,SAAS;AAAA,IACT,aACE;AAAA,EACJ;AACF;AAEA,eAAe,EAAE,SAAS,uBAAuB,aAAa,aAAa,MAAM,KAAK,CAAC;AAEvF,SAAS,KAAK,OAAuB;AACnC,YAAU,EAAE,IAAI,OAAO,MAAM,CAAC;AAC9B,UAAQ,KAAK,CAAC;AAChB;AAEA,eAAe,aAAa,MAAgC;AAC1D,MAAI;AACF,WAAO,KAAK,MAAM,MAAMC,UAASC,MAAK,QAAQ,IAAI,GAAG,MAAM,CAAC;AAAA,EAC9D,SAAS,GAAG;AACV,SAAK;AAAA,MACH,MAAM;AAAA,MACN,SAAS,iBAAiB,IAAI,+BAA+B,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC,CAAC;AAAA,MACvG,KAAK;AAAA,IACP,CAAC;AAAA,EACH;AACF;AAEO,IAAM,mBAAmB,cAAc;AAAA,EAC5C,MAAM,EAAE,MAAM,aAAa,aAAa,YAAY;AAAA,EACpD,MAAM;AAAA,EACN,MAAM,IAAI,EAAE,KAAK,GAAG;AAClB,UAAM,OAAO,kBAAkB,QAAQ,IAAI,CAAC,KAAK,QAAQ,IAAI;AAC7D,UAAM,WAAW,OAAO,KAAK,WAAW,MAAM,YAAY,KAAK,WAAW,IAAI,KAAK,WAAW,IAAI;AAClG,UAAM,OAAO,WAAW,MAAM,aAAa,QAAQ,IAAI;AACvD,UAAM,QAAuB,CAAC;AAC9B,UAAM,SAAS,MAAM,YAAY,MAAM,OAAO,KAAK,IAAI,GAAG,OAAO,KAAK,EAAE,GAAG;AAAA,MACzE,KAAK,CAAC,WACJ,eAAe,qBAAqB,CAAC,GAAG,QAAQ,CAAC,UAAU,MAAM,KAAK,KAAK,GAAG,oBAAoB,EAAE;AAAA,QAClG,MAAM;AAAA,MACR;AAAA,MACF,GAAI,SAAS,SAAY,EAAE,KAAK,IAAI,CAAC;AAAA,MACrC,OAAO,KAAK,UAAU;AAAA,MACtB,GAAI,OAAO,KAAK,SAAS,YAAY,KAAK,KAAK,KAAK,IAAI,EAAE,MAAM,KAAK,KAAK,KAAK,EAAE,IAAI,CAAC;AAAA,MACtF,MAAM,CAAC,QAAQ,SAAM,CAAC,UAAU,mBAAmB,KAAK,SAAS,CAAC;AAAA,MAClE,QAAQ,eAAe,KAAK;AAAA,MAC5B,aAAa,CAAC,UAAU,OAAO,MAAM,IAAI,iBAAiB,GAAG,CAAC,UAAU,MAAM,KAAK,KAAK,CAAC;AAAA,IAC3F,CAAC;AAGD,UAAM,kBAAkBA,MAAK,KAAK,MAAM,UAAU,QAAQ,GAAG,KAAK,EAAE,MAAM,MAAM,MAAS;AACzF,QAAI,UAAU,OAAQ,MAAK,MAAM;AACjC,cAAU,kBAAkB,MAAM,CAAC;AAAA,EACrC;AACF,CAAC;","names":["readFile","path","readFile","path"]}
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
failApi
|
|
3
|
-
} from "./chunk-QW6HL7D6.js";
|
|
4
|
-
import "./chunk-ASRS37QE.js";
|
|
5
|
-
import {
|
|
6
|
-
triggerCatalogSchema
|
|
7
|
-
} from "./chunk-JND6XSGZ.js";
|
|
8
|
-
import "./chunk-CAZGM2NX.js";
|
|
9
|
-
import "./chunk-NZS3KEQ2.js";
|
|
10
|
-
import "./chunk-GIWHHCD6.js";
|
|
11
|
-
import "./chunk-NSBNIPIW.js";
|
|
12
|
-
import "./chunk-2TOIY2WN.js";
|
|
13
|
-
import {
|
|
14
|
-
apiPost
|
|
15
|
-
} from "./chunk-X7VQFLHI.js";
|
|
16
|
-
import "./chunk-LU4HI4KI.js";
|
|
17
|
-
import "./chunk-LGK7UWBN.js";
|
|
18
|
-
import {
|
|
19
|
-
registerSchema,
|
|
20
|
-
writeJson
|
|
21
|
-
} from "./chunk-Q7US4OOA.js";
|
|
22
|
-
import "./chunk-YQSBHWOI.js";
|
|
23
|
-
|
|
24
|
-
// src/commands/scheduled-agents/triggers.ts
|
|
25
|
-
import { defineCommand } from "citty";
|
|
26
|
-
var ARGS = {
|
|
27
|
-
trigger: {
|
|
28
|
-
type: "string",
|
|
29
|
-
description: "One trigger in full \u2014 what makes it run, what it narrows by, its payload fields. A kind (experiment.decided) or a family prefix (experiment).",
|
|
30
|
-
required: false
|
|
31
|
-
},
|
|
32
|
-
group: {
|
|
33
|
-
type: "string",
|
|
34
|
-
description: "Every trigger in one group, in full, e.g. experiments, tasks, forms. The listing names each group.",
|
|
35
|
-
required: false
|
|
36
|
-
},
|
|
37
|
-
full: {
|
|
38
|
-
type: "boolean",
|
|
39
|
-
description: "Every trigger in full (about 25 KB). Prefer --trigger or --group.",
|
|
40
|
-
required: false
|
|
41
|
-
}
|
|
42
|
-
};
|
|
43
|
-
registerSchema({
|
|
44
|
-
command: "scheduled-agents.triggers",
|
|
45
|
-
description: "Everything that can start a scheduled agent. Bare, a compact listing of every trigger kind by group; --trigger <kind|family> or --group <id> for what each narrows by and the payload fields it hands over. Read this before proposing automation, so the trigger you name is one that exists \u2014 a time of day is only the most obvious of them, and most of what a marketer actually wants is a reaction to something.",
|
|
46
|
-
args: ARGS
|
|
47
|
-
});
|
|
48
|
-
function matchesTrigger(kind, query) {
|
|
49
|
-
const family = query.replace(/\.?\*?$/, "");
|
|
50
|
-
return kind === query || kind.startsWith(`${family}.`);
|
|
51
|
-
}
|
|
52
|
-
function shapeTriggerCatalog(response, filter) {
|
|
53
|
-
const { trigger, group } = filter;
|
|
54
|
-
const unfiltered = trigger === void 0 && group === void 0;
|
|
55
|
-
if (unfiltered && filter.full) return { ok: true, data: response };
|
|
56
|
-
const parsed = triggerCatalogSchema.safeParse(response);
|
|
57
|
-
if (!parsed.success) {
|
|
58
|
-
return {
|
|
59
|
-
ok: false,
|
|
60
|
-
error: {
|
|
61
|
-
code: "INTERNAL_ERROR",
|
|
62
|
-
message: "The trigger list came back in a shape this version of the CLI cannot read.",
|
|
63
|
-
fix: {
|
|
64
|
-
action: "run `baker scheduled-agents triggers --full`",
|
|
65
|
-
explanation: "--full prints the whole list as the server sent it, without reading it."
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
const catalog = parsed.data;
|
|
71
|
-
if (unfiltered) {
|
|
72
|
-
return {
|
|
73
|
-
ok: true,
|
|
74
|
-
data: {
|
|
75
|
-
groups: catalog.groups.map((entry) => ({
|
|
76
|
-
group: entry.group,
|
|
77
|
-
triggers: Object.fromEntries(entry.triggers.map((t) => [t.kind, t.label]))
|
|
78
|
-
}))
|
|
79
|
-
},
|
|
80
|
-
hints: [
|
|
81
|
-
"Next: `baker scheduled-agents triggers --trigger <kind>` (or a family, e.g. --trigger experiment) for what it narrows by and the payload fields to use in --when and {{payload.<field>}}."
|
|
82
|
-
]
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
const groups = catalog.groups.filter((entry) => group === void 0 || entry.group === group).map((entry) => ({
|
|
86
|
-
...entry,
|
|
87
|
-
triggers: entry.triggers.filter(
|
|
88
|
-
(t) => trigger === void 0 || matchesTrigger(t.kind, trigger)
|
|
89
|
-
)
|
|
90
|
-
})).filter((entry) => entry.triggers.length > 0);
|
|
91
|
-
if (groups.length === 0) {
|
|
92
|
-
const asked = [
|
|
93
|
-
trigger === void 0 ? null : `--trigger "${trigger}"`,
|
|
94
|
-
group === void 0 ? null : `--group "${group}"`
|
|
95
|
-
].filter(Boolean);
|
|
96
|
-
return {
|
|
97
|
-
ok: false,
|
|
98
|
-
error: {
|
|
99
|
-
code: "NOT_FOUND",
|
|
100
|
-
message: `No trigger matches ${asked.join(" ")}.`,
|
|
101
|
-
fix: {
|
|
102
|
-
action: "run `baker scheduled-agents triggers`",
|
|
103
|
-
explanation: `Groups: ${catalog.groups.map((entry) => entry.group).join(", ")}. The bare command lists every trigger kind.`
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
return { ok: true, data: { groups, reacting: catalog.reacting } };
|
|
109
|
-
}
|
|
110
|
-
var triggersCommand = defineCommand({
|
|
111
|
-
meta: {
|
|
112
|
-
name: "triggers",
|
|
113
|
-
description: `Everything that can start a scheduled agent.
|
|
114
|
-
|
|
115
|
-
A scheduled agent is a trigger and a prompt. The trigger is the whole of the "when": a time, a cadence, a call-in from another tool, an event arriving (a HubSpot deal reaching a stage is one), a Form being submitted, an A/B test reaching an answer, a Task closing, a tool needing reconnecting, a publish leaving changes behind, a new review, a competitor launching ads.
|
|
116
|
-
|
|
117
|
-
Start here: the bare command lists every trigger kind by group, compactly. Then ask for the one you picked: it says what narrows it (\`pointAt\`) and the payload fields it hands over, for --when rules ("amount > 10000") and the prompt ({{payload.amount}}).
|
|
118
|
-
|
|
119
|
-
Examples:
|
|
120
|
-
baker scheduled-agents triggers
|
|
121
|
-
baker scheduled-agents triggers --trigger experiment.decided
|
|
122
|
-
baker scheduled-agents triggers --trigger experiment
|
|
123
|
-
baker scheduled-agents triggers --group tasks
|
|
124
|
-
Full guide: __tooling__/docs/tools/baker/scheduled-agents.md`
|
|
125
|
-
},
|
|
126
|
-
args: ARGS,
|
|
127
|
-
run: async ({ args }) => {
|
|
128
|
-
try {
|
|
129
|
-
const response = await apiPost("/api/scheduled-agents/triggers", {});
|
|
130
|
-
const shaped = shapeTriggerCatalog(response.data, { trigger: args.trigger, group: args.group, full: args.full });
|
|
131
|
-
writeJson(shaped);
|
|
132
|
-
if (!shaped.ok) process.exit(1);
|
|
133
|
-
} catch (err) {
|
|
134
|
-
failApi(err);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
});
|
|
138
|
-
export {
|
|
139
|
-
shapeTriggerCatalog,
|
|
140
|
-
triggersCommand
|
|
141
|
-
};
|
|
142
|
-
//# sourceMappingURL=triggers-YRY3HTYU.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/scheduled-agents/triggers.ts"],"sourcesContent":["import { type TriggerCatalogEntry, triggerCatalogSchema } from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { apiPost } from \"../../client.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { failApi } from \"./shared.ts\";\n\nconst ARGS = {\n trigger: {\n type: \"string\" as const,\n description:\n \"One trigger in full — what makes it run, what it narrows by, its payload fields. A kind (experiment.decided) or a family prefix (experiment).\",\n required: false,\n },\n group: {\n type: \"string\" as const,\n description: \"Every trigger in one group, in full, e.g. experiments, tasks, forms. The listing names each group.\",\n required: false,\n },\n full: {\n type: \"boolean\" as const,\n description: \"Every trigger in full (about 25 KB). Prefer --trigger or --group.\",\n required: false,\n },\n};\n\nregisterSchema({\n command: \"scheduled-agents.triggers\",\n description:\n \"Everything that can start a scheduled agent. Bare, a compact listing of every trigger kind by group; --trigger <kind|family> or --group <id> for what each narrows by and the payload fields it hands over. Read this before proposing automation, so the trigger you name is one that exists — a time of day is only the most obvious of them, and most of what a marketer actually wants is a reaction to something.\",\n args: ARGS,\n});\n\ninterface TriggerFilter {\n trigger?: string;\n group?: string;\n full?: boolean;\n}\n\ntype Shaped =\n | { ok: true; data: unknown; hints?: string[] }\n | { ok: false; error: { code: string; message: string; fix: { action: string; explanation: string } } };\n\n/** `experiment`, `experiment.` and `experiment.*` all name the family. */\nfunction matchesTrigger(kind: string, query: string): boolean {\n const family = query.replace(/\\.?\\*?$/, \"\");\n return kind === query || kind.startsWith(`${family}.`);\n}\n\n/**\n * One catalog, shaped for what the agent asked. The bare listing is a kind and\n * a label per trigger, because that is enough to pick one; the detail — what\n * it narrows by, its payload fields, how to write rules over them — is for the\n * one or few the agent picked. --full passes the response through unread, so\n * it still works when a newer server sends a catalog this CLI cannot parse.\n */\nexport function shapeTriggerCatalog(response: unknown, filter: TriggerFilter): Shaped {\n const { trigger, group } = filter;\n const unfiltered = trigger === undefined && group === undefined;\n if (unfiltered && filter.full) return { ok: true, data: response };\n const parsed = triggerCatalogSchema.safeParse(response);\n if (!parsed.success) {\n return {\n ok: false,\n error: {\n code: \"INTERNAL_ERROR\",\n message: \"The trigger list came back in a shape this version of the CLI cannot read.\",\n fix: {\n action: \"run `baker scheduled-agents triggers --full`\",\n explanation: \"--full prints the whole list as the server sent it, without reading it.\",\n },\n },\n };\n }\n const catalog = parsed.data;\n if (unfiltered) {\n return {\n ok: true,\n data: {\n groups: catalog.groups.map((entry) => ({\n group: entry.group,\n triggers: Object.fromEntries(entry.triggers.map((t) => [t.kind, t.label])),\n })),\n },\n hints: [\n \"Next: `baker scheduled-agents triggers --trigger <kind>` (or a family, e.g. --trigger experiment) for what it narrows by and the payload fields to use in --when and {{payload.<field>}}.\",\n ],\n };\n }\n\n const groups = catalog.groups\n .filter((entry) => group === undefined || entry.group === group)\n .map((entry) => ({\n ...entry,\n triggers: entry.triggers.filter(\n (t: TriggerCatalogEntry) => trigger === undefined || matchesTrigger(t.kind, trigger),\n ),\n }))\n .filter((entry) => entry.triggers.length > 0);\n\n if (groups.length === 0) {\n const asked = [\n trigger === undefined ? null : `--trigger \"${trigger}\"`,\n group === undefined ? null : `--group \"${group}\"`,\n ].filter(Boolean);\n return {\n ok: false,\n error: {\n code: \"NOT_FOUND\",\n message: `No trigger matches ${asked.join(\" \")}.`,\n fix: {\n action: \"run `baker scheduled-agents triggers`\",\n explanation: `Groups: ${catalog.groups.map((entry) => entry.group).join(\", \")}. The bare command lists every trigger kind.`,\n },\n },\n };\n }\n return { ok: true, data: { groups, reacting: catalog.reacting } };\n}\n\nexport const triggersCommand = defineCommand({\n meta: {\n name: \"triggers\",\n description: `Everything that can start a scheduled agent.\n\nA scheduled agent is a trigger and a prompt. The trigger is the whole of the \"when\": a time, a cadence, a call-in from another tool, an event arriving (a HubSpot deal reaching a stage is one), a Form being submitted, an A/B test reaching an answer, a Task closing, a tool needing reconnecting, a publish leaving changes behind, a new review, a competitor launching ads.\n\nStart here: the bare command lists every trigger kind by group, compactly. Then ask for the one you picked: it says what narrows it (\\`pointAt\\`) and the payload fields it hands over, for --when rules (\"amount > 10000\") and the prompt ({{payload.amount}}).\n\nExamples:\n baker scheduled-agents triggers\n baker scheduled-agents triggers --trigger experiment.decided\n baker scheduled-agents triggers --trigger experiment\n baker scheduled-agents triggers --group tasks\nFull guide: __tooling__/docs/tools/baker/scheduled-agents.md`,\n },\n args: ARGS,\n run: async ({ args }) => {\n try {\n const response = await apiPost<{ ok: true; data: unknown }>(\"/api/scheduled-agents/triggers\", {});\n const shaped = shapeTriggerCatalog(response.data, { trigger: args.trigger, group: args.group, full: args.full });\n writeJson(shaped);\n if (!shaped.ok) process.exit(1);\n } catch (err) {\n failApi(err);\n }\n },\n});\n"],"mappings":"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","names":[]}
|
package/dist/unlink-4B4YTQE4.js
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
failApi,
|
|
3
|
-
failValidation,
|
|
4
|
-
writeOk
|
|
5
|
-
} from "./chunk-HSQRITKG.js";
|
|
6
|
-
import "./chunk-JND6XSGZ.js";
|
|
7
|
-
import "./chunk-CAZGM2NX.js";
|
|
8
|
-
import "./chunk-NZS3KEQ2.js";
|
|
9
|
-
import "./chunk-GIWHHCD6.js";
|
|
10
|
-
import "./chunk-NSBNIPIW.js";
|
|
11
|
-
import "./chunk-2TOIY2WN.js";
|
|
12
|
-
import {
|
|
13
|
-
apiPost,
|
|
14
|
-
validateConvexId
|
|
15
|
-
} from "./chunk-X7VQFLHI.js";
|
|
16
|
-
import "./chunk-LU4HI4KI.js";
|
|
17
|
-
import {
|
|
18
|
-
requireChatId
|
|
19
|
-
} from "./chunk-LGK7UWBN.js";
|
|
20
|
-
import {
|
|
21
|
-
registerSchema
|
|
22
|
-
} from "./chunk-Q7US4OOA.js";
|
|
23
|
-
import "./chunk-YQSBHWOI.js";
|
|
24
|
-
|
|
25
|
-
// src/commands/actions/unlink.ts
|
|
26
|
-
import { defineCommand } from "citty";
|
|
27
|
-
registerSchema({
|
|
28
|
-
command: "actions.unlink",
|
|
29
|
-
description: "Stage removal of a 'blocker -> blocked' dependency. The blocked action must be claimed by current chat.",
|
|
30
|
-
args: {
|
|
31
|
-
blocker: { type: "string", description: "Blocker action ID", required: true },
|
|
32
|
-
blocked: { type: "string", description: "Blocked action ID (must be claimed by current chat)", required: true }
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
var unlinkCommand = defineCommand({
|
|
36
|
-
meta: {
|
|
37
|
-
name: "unlink",
|
|
38
|
-
description: "Stage removal of a dependency. Example: baker actions unlink --blocker <id> --blocked <id>"
|
|
39
|
-
},
|
|
40
|
-
args: {
|
|
41
|
-
blocker: { type: "string", description: "Blocker action ID", required: false },
|
|
42
|
-
blocked: { type: "string", description: "Blocked action ID", required: false }
|
|
43
|
-
},
|
|
44
|
-
run: async ({ args }) => {
|
|
45
|
-
try {
|
|
46
|
-
const blocker = args.blocker;
|
|
47
|
-
const blocked = args.blocked;
|
|
48
|
-
if (!blocker || !blocked) {
|
|
49
|
-
failValidation("--blocker and --blocked are required.");
|
|
50
|
-
}
|
|
51
|
-
validateConvexId(blocker);
|
|
52
|
-
validateConvexId(blocked);
|
|
53
|
-
const chatId = requireChatId();
|
|
54
|
-
await apiPost("/api/actions/unlink", {
|
|
55
|
-
chatId,
|
|
56
|
-
blockerId: blocker,
|
|
57
|
-
blockedId: blocked
|
|
58
|
-
});
|
|
59
|
-
writeOk();
|
|
60
|
-
} catch (err) {
|
|
61
|
-
failApi(err);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
});
|
|
65
|
-
export {
|
|
66
|
-
unlinkCommand
|
|
67
|
-
};
|
|
68
|
-
//# sourceMappingURL=unlink-4B4YTQE4.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/actions/unlink.ts"],"sourcesContent":["import type { ActionsUnlinkResponse } from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { apiPost, validateConvexId } from \"../../client.ts\";\nimport { requireChatId } from \"../../env.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { failApi, failValidation, writeOk } from \"./shared.ts\";\n\nregisterSchema({\n command: \"actions.unlink\",\n description:\n \"Stage removal of a 'blocker -> blocked' dependency. The blocked action must be claimed by current chat.\",\n args: {\n blocker: { type: \"string\", description: \"Blocker action ID\", required: true },\n blocked: { type: \"string\", description: \"Blocked action ID (must be claimed by current chat)\", required: true },\n },\n});\n\nexport const unlinkCommand = defineCommand({\n meta: {\n name: \"unlink\",\n description: \"Stage removal of a dependency. Example: baker actions unlink --blocker <id> --blocked <id>\",\n },\n args: {\n blocker: { type: \"string\", description: \"Blocker action ID\", required: false },\n blocked: { type: \"string\", description: \"Blocked action ID\", required: false },\n },\n run: async ({ args }) => {\n try {\n const blocker = args.blocker as string | undefined;\n const blocked = args.blocked as string | undefined;\n if (!blocker || !blocked) {\n failValidation(\"--blocker and --blocked are required.\");\n }\n validateConvexId(blocker);\n validateConvexId(blocked);\n const chatId = requireChatId();\n await apiPost<ActionsUnlinkResponse>(\"/api/actions/unlink\", {\n chatId,\n blockerId: blocker,\n blockedId: blocked,\n });\n writeOk();\n } catch (err) {\n failApi(err);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AACA,SAAS,qBAAqB;AAM9B,eAAe;AAAA,EACb,SAAS;AAAA,EACT,aACE;AAAA,EACF,MAAM;AAAA,IACJ,SAAS,EAAE,MAAM,UAAU,aAAa,qBAAqB,UAAU,KAAK;AAAA,IAC5E,SAAS,EAAE,MAAM,UAAU,aAAa,uDAAuD,UAAU,KAAK;AAAA,EAChH;AACF,CAAC;AAEM,IAAM,gBAAgB,cAAc;AAAA,EACzC,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AAAA,EACA,MAAM;AAAA,IACJ,SAAS,EAAE,MAAM,UAAU,aAAa,qBAAqB,UAAU,MAAM;AAAA,IAC7E,SAAS,EAAE,MAAM,UAAU,aAAa,qBAAqB,UAAU,MAAM;AAAA,EAC/E;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,QAAI;AACF,YAAM,UAAU,KAAK;AACrB,YAAM,UAAU,KAAK;AACrB,UAAI,CAAC,WAAW,CAAC,SAAS;AACxB,uBAAe,uCAAuC;AAAA,MACxD;AACA,uBAAiB,OAAO;AACxB,uBAAiB,OAAO;AACxB,YAAM,SAAS,cAAc;AAC7B,YAAM,QAA+B,uBAAuB;AAAA,QAC1D;AAAA,QACA,WAAW;AAAA,QACX,WAAW;AAAA,MACb,CAAC;AACD,cAAQ;AAAA,IACV,SAAS,KAAK;AACZ,cAAQ,GAAG;AAAA,IACb;AAAA,EACF;AACF,CAAC;","names":[]}
|
package/dist/unstage-H5NTDJ6A.js
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
failApi,
|
|
3
|
-
failValidation,
|
|
4
|
-
validateScheduledAgentRef
|
|
5
|
-
} from "./chunk-QW6HL7D6.js";
|
|
6
|
-
import "./chunk-ASRS37QE.js";
|
|
7
|
-
import "./chunk-JND6XSGZ.js";
|
|
8
|
-
import "./chunk-CAZGM2NX.js";
|
|
9
|
-
import "./chunk-NZS3KEQ2.js";
|
|
10
|
-
import "./chunk-GIWHHCD6.js";
|
|
11
|
-
import "./chunk-NSBNIPIW.js";
|
|
12
|
-
import "./chunk-2TOIY2WN.js";
|
|
13
|
-
import {
|
|
14
|
-
apiPost
|
|
15
|
-
} from "./chunk-X7VQFLHI.js";
|
|
16
|
-
import "./chunk-LU4HI4KI.js";
|
|
17
|
-
import {
|
|
18
|
-
requireChatId
|
|
19
|
-
} from "./chunk-LGK7UWBN.js";
|
|
20
|
-
import {
|
|
21
|
-
registerSchema,
|
|
22
|
-
writeJson
|
|
23
|
-
} from "./chunk-Q7US4OOA.js";
|
|
24
|
-
import "./chunk-YQSBHWOI.js";
|
|
25
|
-
|
|
26
|
-
// src/commands/scheduled-agents/unstage.ts
|
|
27
|
-
import { defineCommand } from "citty";
|
|
28
|
-
registerSchema({
|
|
29
|
-
command: "scheduled-agents.unstage",
|
|
30
|
-
description: "Take back what this chat staged on one scheduled agent, before Publish \u2014 the same as discarding its row in the change list. With --index, only that one change (its `index` in `baker scheduled-agents list` \u2192 draft.ops). Taking back a create also takes back the edits staged on it. Never touches a published item: to change or remove one, stage update/delete instead.",
|
|
31
|
-
args: {
|
|
32
|
-
id: { type: "string", description: "Published scheduled agent ID or temp_agent_* draft ID", required: true },
|
|
33
|
-
index: {
|
|
34
|
-
type: "string",
|
|
35
|
-
description: "Only this staged change, by its index in `list` \u2192 draft.ops. Indexes shift after each unstage \u2014 list again before the next one.",
|
|
36
|
-
required: false
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
function unstageBody(args, chatId) {
|
|
41
|
-
validateScheduledAgentRef(args.ref);
|
|
42
|
-
if (args.index === void 0) {
|
|
43
|
-
return { chatId, ref: args.ref };
|
|
44
|
-
}
|
|
45
|
-
const index = Number(args.index);
|
|
46
|
-
if (args.index.trim() === "" || !Number.isInteger(index) || index < 0) {
|
|
47
|
-
failValidation(
|
|
48
|
-
"--index must be a whole number from `baker scheduled-agents list` \u2192 draft.ops[].index. Leave it off to take back everything staged on the item."
|
|
49
|
-
);
|
|
50
|
-
}
|
|
51
|
-
return { chatId, ref: args.ref, index };
|
|
52
|
-
}
|
|
53
|
-
var unstageCommand = defineCommand({
|
|
54
|
-
meta: {
|
|
55
|
-
name: "unstage",
|
|
56
|
-
description: "Take back what this chat staged on a scheduled agent, before Publish. Examples: baker scheduled-agents unstage temp_agent_abc123 | baker scheduled-agents unstage <id> --index 2"
|
|
57
|
-
},
|
|
58
|
-
args: {
|
|
59
|
-
id: { type: "positional", description: "Scheduled agent ID or temp_agent_* draft ID", required: false },
|
|
60
|
-
"scheduled-agent-id": {
|
|
61
|
-
type: "string",
|
|
62
|
-
description: "Scheduled agent ID (alternative to positional)",
|
|
63
|
-
required: false
|
|
64
|
-
},
|
|
65
|
-
index: { type: "string", description: "Only this staged change, from list \u2192 draft.ops[].index", required: false }
|
|
66
|
-
},
|
|
67
|
-
run: async ({ args }) => {
|
|
68
|
-
try {
|
|
69
|
-
const ref = args.id || args["scheduled-agent-id"];
|
|
70
|
-
if (!ref) {
|
|
71
|
-
failValidation("Scheduled agent ID is required.");
|
|
72
|
-
}
|
|
73
|
-
const index = typeof args.index === "string" ? args.index : void 0;
|
|
74
|
-
const body = unstageBody({ ref, ...index !== void 0 ? { index } : {} }, requireChatId());
|
|
75
|
-
const response = await apiPost("/api/scheduled-agents/draft-op/remove", body);
|
|
76
|
-
writeJson(response);
|
|
77
|
-
} catch (err) {
|
|
78
|
-
failApi(err);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
export {
|
|
83
|
-
unstageBody,
|
|
84
|
-
unstageCommand
|
|
85
|
-
};
|
|
86
|
-
//# sourceMappingURL=unstage-H5NTDJ6A.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/scheduled-agents/unstage.ts"],"sourcesContent":["import type { ScheduledAgentsUnstageRequest, ScheduledAgentsUnstageResponse } from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { apiPost } from \"../../client.ts\";\nimport { requireChatId } from \"../../env.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { failApi, failValidation, validateScheduledAgentRef } from \"./shared.ts\";\n\nregisterSchema({\n command: \"scheduled-agents.unstage\",\n description:\n \"Take back what this chat staged on one scheduled agent, before Publish — the same as discarding its row in the change list. With --index, only that one change (its `index` in `baker scheduled-agents list` → draft.ops). Taking back a create also takes back the edits staged on it. Never touches a published item: to change or remove one, stage update/delete instead.\",\n args: {\n id: { type: \"string\", description: \"Published scheduled agent ID or temp_agent_* draft ID\", required: true },\n index: {\n type: \"string\",\n description:\n \"Only this staged change, by its index in `list` → draft.ops. Indexes shift after each unstage — list again before the next one.\",\n required: false,\n },\n },\n});\n\n/** The request for one unstage, checked before the round trip. */\nexport function unstageBody(args: { ref: string; index?: string }, chatId: string): ScheduledAgentsUnstageRequest {\n validateScheduledAgentRef(args.ref);\n if (args.index === undefined) {\n return { chatId, ref: args.ref };\n }\n const index = Number(args.index);\n if (args.index.trim() === \"\" || !Number.isInteger(index) || index < 0) {\n failValidation(\n \"--index must be a whole number from `baker scheduled-agents list` → draft.ops[].index. Leave it off to take back everything staged on the item.\",\n );\n }\n return { chatId, ref: args.ref, index };\n}\n\nexport const unstageCommand = defineCommand({\n meta: {\n name: \"unstage\",\n description:\n \"Take back what this chat staged on a scheduled agent, before Publish. Examples: baker scheduled-agents unstage temp_agent_abc123 | baker scheduled-agents unstage <id> --index 2\",\n },\n args: {\n id: { type: \"positional\", description: \"Scheduled agent ID or temp_agent_* draft ID\", required: false },\n \"scheduled-agent-id\": {\n type: \"string\",\n description: \"Scheduled agent ID (alternative to positional)\",\n required: false,\n },\n index: { type: \"string\", description: \"Only this staged change, from list → draft.ops[].index\", required: false },\n },\n run: async ({ args }) => {\n try {\n const ref = (args.id as string | undefined) || (args[\"scheduled-agent-id\"] as string | undefined);\n if (!ref) {\n failValidation(\"Scheduled agent ID is required.\");\n }\n const index = typeof args.index === \"string\" ? args.index : undefined;\n const body = unstageBody({ ref, ...(index !== undefined ? { index } : {}) }, requireChatId());\n const response = await apiPost<ScheduledAgentsUnstageResponse>(\"/api/scheduled-agents/draft-op/remove\", body);\n writeJson(response);\n } catch (err) {\n failApi(err);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,SAAS,qBAAqB;AAO9B,eAAe;AAAA,EACb,SAAS;AAAA,EACT,aACE;AAAA,EACF,MAAM;AAAA,IACJ,IAAI,EAAE,MAAM,UAAU,aAAa,yDAAyD,UAAU,KAAK;AAAA,IAC3G,OAAO;AAAA,MACL,MAAM;AAAA,MACN,aACE;AAAA,MACF,UAAU;AAAA,IACZ;AAAA,EACF;AACF,CAAC;AAGM,SAAS,YAAY,MAAuC,QAA+C;AAChH,4BAA0B,KAAK,GAAG;AAClC,MAAI,KAAK,UAAU,QAAW;AAC5B,WAAO,EAAE,QAAQ,KAAK,KAAK,IAAI;AAAA,EACjC;AACA,QAAM,QAAQ,OAAO,KAAK,KAAK;AAC/B,MAAI,KAAK,MAAM,KAAK,MAAM,MAAM,CAAC,OAAO,UAAU,KAAK,KAAK,QAAQ,GAAG;AACrE;AAAA,MACE;AAAA,IACF;AAAA,EACF;AACA,SAAO,EAAE,QAAQ,KAAK,KAAK,KAAK,MAAM;AACxC;AAEO,IAAM,iBAAiB,cAAc;AAAA,EAC1C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA,MAAM;AAAA,IACJ,IAAI,EAAE,MAAM,cAAc,aAAa,+CAA+C,UAAU,MAAM;AAAA,IACtG,sBAAsB;AAAA,MACpB,MAAM;AAAA,MACN,aAAa;AAAA,MACb,UAAU;AAAA,IACZ;AAAA,IACA,OAAO,EAAE,MAAM,UAAU,aAAa,+DAA0D,UAAU,MAAM;AAAA,EAClH;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,QAAI;AACF,YAAM,MAAO,KAAK,MAA8B,KAAK,oBAAoB;AACzE,UAAI,CAAC,KAAK;AACR,uBAAe,iCAAiC;AAAA,MAClD;AACA,YAAM,QAAQ,OAAO,KAAK,UAAU,WAAW,KAAK,QAAQ;AAC5D,YAAM,OAAO,YAAY,EAAE,KAAK,GAAI,UAAU,SAAY,EAAE,MAAM,IAAI,CAAC,EAAG,GAAG,cAAc,CAAC;AAC5F,YAAM,WAAW,MAAM,QAAwC,yCAAyC,IAAI;AAC5G,gBAAU,QAAQ;AAAA,IACpB,SAAS,KAAK;AACZ,cAAQ,GAAG;AAAA,IACb;AAAA,EACF;AACF,CAAC;","names":[]}
|
package/dist/unstage-MDSSPUKV.js
DELETED
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
analyticsErrorEnvelope
|
|
3
|
-
} from "./chunk-D3KLDIPQ.js";
|
|
4
|
-
import {
|
|
5
|
-
ANALYTICS_UNSTAGE_KINDS
|
|
6
|
-
} from "./chunk-7J3NZBPV.js";
|
|
7
|
-
import "./chunk-EDLZGTGN.js";
|
|
8
|
-
import {
|
|
9
|
-
writeJsonEnvelope
|
|
10
|
-
} from "./chunk-ZRP7Y2DM.js";
|
|
11
|
-
import {
|
|
12
|
-
apiPost
|
|
13
|
-
} from "./chunk-X7VQFLHI.js";
|
|
14
|
-
import "./chunk-LU4HI4KI.js";
|
|
15
|
-
import {
|
|
16
|
-
requireChatId
|
|
17
|
-
} from "./chunk-LGK7UWBN.js";
|
|
18
|
-
import {
|
|
19
|
-
registerSchema
|
|
20
|
-
} from "./chunk-Q7US4OOA.js";
|
|
21
|
-
import "./chunk-YQSBHWOI.js";
|
|
22
|
-
|
|
23
|
-
// src/commands/analytics/unstage.ts
|
|
24
|
-
import { defineCommand } from "citty";
|
|
25
|
-
var KIND_LIST = ANALYTICS_UNSTAGE_KINDS.join("|");
|
|
26
|
-
registerSchema({
|
|
27
|
-
command: "analytics.unstage",
|
|
28
|
-
description: `Take back a Measure change this chat staged, before Publish \u2014 the same as discarding its row in the change review. Name one with --kind and --ref (mapping: <platform>/<name> as \`analytics map\` prints it; conversion: the event key; send: the send id; source: the source id or src_temp_*), or pass --all to take back everything staged (all kinds, or one with --kind). Never touches anything already live.`,
|
|
29
|
-
args: {
|
|
30
|
-
kind: {
|
|
31
|
-
type: "string",
|
|
32
|
-
description: `What was staged: ${KIND_LIST}`,
|
|
33
|
-
required: false,
|
|
34
|
-
enum: [...ANALYTICS_UNSTAGE_KINDS]
|
|
35
|
-
},
|
|
36
|
-
ref: { type: "string", description: "Which staged change of that kind (see the description)", required: false },
|
|
37
|
-
all: { type: "boolean", description: "Take back everything staged (of --kind, or of every kind)", required: false }
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
function refuse(message) {
|
|
41
|
-
writeJsonEnvelope({ ok: false, error: { code: "VALIDATION_ERROR", message } });
|
|
42
|
-
process.exit(1);
|
|
43
|
-
}
|
|
44
|
-
function isUnstageKind(value) {
|
|
45
|
-
return ANALYTICS_UNSTAGE_KINDS.includes(value);
|
|
46
|
-
}
|
|
47
|
-
function unstageBody(args, chatId) {
|
|
48
|
-
if (args.kind !== void 0 && !isUnstageKind(args.kind)) {
|
|
49
|
-
refuse(`--kind must be one of ${KIND_LIST}.`);
|
|
50
|
-
}
|
|
51
|
-
const kind = args.kind;
|
|
52
|
-
if (args.all === true) {
|
|
53
|
-
if (args.ref !== void 0) {
|
|
54
|
-
refuse("Pass --ref to take back one staged change, or --all for everything \u2014 not both.");
|
|
55
|
-
}
|
|
56
|
-
return { chatId, all: true, ...kind !== void 0 ? { kind } : {} };
|
|
57
|
-
}
|
|
58
|
-
if (kind === void 0 || args.ref === void 0 || args.ref.trim() === "") {
|
|
59
|
-
refuse(`Pass --kind (${KIND_LIST}) with --ref to take back one staged change, or --all for everything staged.`);
|
|
60
|
-
}
|
|
61
|
-
return { chatId, kind, ref: args.ref };
|
|
62
|
-
}
|
|
63
|
-
var unstageCommand = defineCommand({
|
|
64
|
-
meta: {
|
|
65
|
-
name: "unstage",
|
|
66
|
-
description: "Take back a Measure change this chat staged, before Publish. Examples: baker analytics unstage --kind conversion --ref 'page:Deal won' | baker analytics unstage --kind mapping --ref google/kw | baker analytics unstage --all"
|
|
67
|
-
},
|
|
68
|
-
args: {
|
|
69
|
-
kind: { type: "string", description: `What was staged: ${KIND_LIST}`, required: false },
|
|
70
|
-
ref: { type: "string", description: "Which staged change of that kind", required: false },
|
|
71
|
-
all: { type: "boolean", description: "Take back everything staged", required: false }
|
|
72
|
-
},
|
|
73
|
-
run: async ({ args }) => {
|
|
74
|
-
try {
|
|
75
|
-
const body = unstageBody(
|
|
76
|
-
{
|
|
77
|
-
...typeof args.kind === "string" ? { kind: args.kind } : {},
|
|
78
|
-
...typeof args.ref === "string" ? { ref: args.ref } : {},
|
|
79
|
-
...args.all === true ? { all: true } : {}
|
|
80
|
-
},
|
|
81
|
-
requireChatId()
|
|
82
|
-
);
|
|
83
|
-
const response = await apiPost("/api/analytics/draft-op/remove", body);
|
|
84
|
-
writeJsonEnvelope(response);
|
|
85
|
-
} catch (err) {
|
|
86
|
-
writeJsonEnvelope({ ok: false, error: analyticsErrorEnvelope(err) });
|
|
87
|
-
process.exit(1);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
});
|
|
91
|
-
export {
|
|
92
|
-
unstageBody,
|
|
93
|
-
unstageCommand
|
|
94
|
-
};
|
|
95
|
-
//# sourceMappingURL=unstage-MDSSPUKV.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/analytics/unstage.ts"],"sourcesContent":["import {\n ANALYTICS_UNSTAGE_KINDS,\n type AnalyticsUnstageKind,\n type AnalyticsUnstageRequest,\n type AnalyticsUnstageResponse,\n} from \"@baker/api/analytics\";\nimport { defineCommand } from \"citty\";\nimport { apiPost } from \"../../client.ts\";\nimport { requireChatId } from \"../../env.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { writeJsonEnvelope } from \"../ads/output.ts\";\nimport { analyticsErrorEnvelope } from \"./errorEnvelope.ts\";\n\n/**\n * `baker analytics unstage` — take back a Measure change this chat staged.\n *\n * The same as discarding the row in the chat's change review: what is taken\n * back does not apply at Publish. Nothing live is touched — a change already\n * published is changed by staging another one.\n */\n\nconst KIND_LIST = ANALYTICS_UNSTAGE_KINDS.join(\"|\");\n\nregisterSchema({\n command: \"analytics.unstage\",\n description: `Take back a Measure change this chat staged, before Publish — the same as discarding its row in the change review. Name one with --kind and --ref (mapping: <platform>/<name> as \\`analytics map\\` prints it; conversion: the event key; send: the send id; source: the source id or src_temp_*), or pass --all to take back everything staged (all kinds, or one with --kind). Never touches anything already live.`,\n args: {\n kind: {\n type: \"string\",\n description: `What was staged: ${KIND_LIST}`,\n required: false,\n enum: [...ANALYTICS_UNSTAGE_KINDS],\n },\n ref: { type: \"string\", description: \"Which staged change of that kind (see the description)\", required: false },\n all: { type: \"boolean\", description: \"Take back everything staged (of --kind, or of every kind)\", required: false },\n },\n});\n\nfunction refuse(message: string): never {\n writeJsonEnvelope({ ok: false, error: { code: \"VALIDATION_ERROR\", message } });\n process.exit(1);\n}\n\nfunction isUnstageKind(value: string): value is AnalyticsUnstageKind {\n return (ANALYTICS_UNSTAGE_KINDS as readonly string[]).includes(value);\n}\n\n/** The request for one unstage, checked before the round trip. */\nexport function unstageBody(\n args: { kind?: string; ref?: string; all?: boolean },\n chatId: string,\n): AnalyticsUnstageRequest {\n if (args.kind !== undefined && !isUnstageKind(args.kind)) {\n refuse(`--kind must be one of ${KIND_LIST}.`);\n }\n const kind = args.kind;\n if (args.all === true) {\n if (args.ref !== undefined) {\n refuse(\"Pass --ref to take back one staged change, or --all for everything — not both.\");\n }\n return { chatId, all: true, ...(kind !== undefined ? { kind } : {}) };\n }\n if (kind === undefined || args.ref === undefined || args.ref.trim() === \"\") {\n refuse(`Pass --kind (${KIND_LIST}) with --ref to take back one staged change, or --all for everything staged.`);\n }\n return { chatId, kind, ref: args.ref };\n}\n\nexport const unstageCommand = defineCommand({\n meta: {\n name: \"unstage\",\n description:\n \"Take back a Measure change this chat staged, before Publish. Examples: baker analytics unstage --kind conversion --ref 'page:Deal won' | baker analytics unstage --kind mapping --ref google/kw | baker analytics unstage --all\",\n },\n args: {\n kind: { type: \"string\", description: `What was staged: ${KIND_LIST}`, required: false },\n ref: { type: \"string\", description: \"Which staged change of that kind\", required: false },\n all: { type: \"boolean\", description: \"Take back everything staged\", required: false },\n },\n run: async ({ args }) => {\n try {\n const body = unstageBody(\n {\n ...(typeof args.kind === \"string\" ? { kind: args.kind } : {}),\n ...(typeof args.ref === \"string\" ? { ref: args.ref } : {}),\n ...(args.all === true ? { all: true } : {}),\n },\n requireChatId(),\n );\n const response = await apiPost<AnalyticsUnstageResponse>(\"/api/analytics/draft-op/remove\", body);\n writeJsonEnvelope(response);\n } catch (err) {\n writeJsonEnvelope({ ok: false, error: analyticsErrorEnvelope(err) });\n process.exit(1);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAMA,SAAS,qBAAqB;AAe9B,IAAM,YAAY,wBAAwB,KAAK,GAAG;AAElD,eAAe;AAAA,EACb,SAAS;AAAA,EACT,aAAa;AAAA,EACb,MAAM;AAAA,IACJ,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,aAAa,oBAAoB,SAAS;AAAA,MAC1C,UAAU;AAAA,MACV,MAAM,CAAC,GAAG,uBAAuB;AAAA,IACnC;AAAA,IACA,KAAK,EAAE,MAAM,UAAU,aAAa,0DAA0D,UAAU,MAAM;AAAA,IAC9G,KAAK,EAAE,MAAM,WAAW,aAAa,6DAA6D,UAAU,MAAM;AAAA,EACpH;AACF,CAAC;AAED,SAAS,OAAO,SAAwB;AACtC,oBAAkB,EAAE,IAAI,OAAO,OAAO,EAAE,MAAM,oBAAoB,QAAQ,EAAE,CAAC;AAC7E,UAAQ,KAAK,CAAC;AAChB;AAEA,SAAS,cAAc,OAA8C;AACnE,SAAQ,wBAA8C,SAAS,KAAK;AACtE;AAGO,SAAS,YACd,MACA,QACyB;AACzB,MAAI,KAAK,SAAS,UAAa,CAAC,cAAc,KAAK,IAAI,GAAG;AACxD,WAAO,yBAAyB,SAAS,GAAG;AAAA,EAC9C;AACA,QAAM,OAAO,KAAK;AAClB,MAAI,KAAK,QAAQ,MAAM;AACrB,QAAI,KAAK,QAAQ,QAAW;AAC1B,aAAO,qFAAgF;AAAA,IACzF;AACA,WAAO,EAAE,QAAQ,KAAK,MAAM,GAAI,SAAS,SAAY,EAAE,KAAK,IAAI,CAAC,EAAG;AAAA,EACtE;AACA,MAAI,SAAS,UAAa,KAAK,QAAQ,UAAa,KAAK,IAAI,KAAK,MAAM,IAAI;AAC1E,WAAO,gBAAgB,SAAS,8EAA8E;AAAA,EAChH;AACA,SAAO,EAAE,QAAQ,MAAM,KAAK,KAAK,IAAI;AACvC;AAEO,IAAM,iBAAiB,cAAc;AAAA,EAC1C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA,MAAM;AAAA,IACJ,MAAM,EAAE,MAAM,UAAU,aAAa,oBAAoB,SAAS,IAAI,UAAU,MAAM;AAAA,IACtF,KAAK,EAAE,MAAM,UAAU,aAAa,oCAAoC,UAAU,MAAM;AAAA,IACxF,KAAK,EAAE,MAAM,WAAW,aAAa,+BAA+B,UAAU,MAAM;AAAA,EACtF;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,QAAI;AACF,YAAM,OAAO;AAAA,QACX;AAAA,UACE,GAAI,OAAO,KAAK,SAAS,WAAW,EAAE,MAAM,KAAK,KAAK,IAAI,CAAC;AAAA,UAC3D,GAAI,OAAO,KAAK,QAAQ,WAAW,EAAE,KAAK,KAAK,IAAI,IAAI,CAAC;AAAA,UACxD,GAAI,KAAK,QAAQ,OAAO,EAAE,KAAK,KAAK,IAAI,CAAC;AAAA,QAC3C;AAAA,QACA,cAAc;AAAA,MAChB;AACA,YAAM,WAAW,MAAM,QAAkC,kCAAkC,IAAI;AAC/F,wBAAkB,QAAQ;AAAA,IAC5B,SAAS,KAAK;AACZ,wBAAkB,EAAE,IAAI,OAAO,OAAO,uBAAuB,GAAG,EAAE,CAAC;AACnE,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF;AACF,CAAC;","names":[]}
|