@koda-sl/baker-cli 0.514.0-dev.555f7007e → 0.515.0-dev.14a31186e
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 +1 -18
- package/dist/{account-ZY655BIU.js → account-BA3IO3AN.js} +3 -3
- package/dist/{account-UFYZS3K6.js → account-JNBDG6PB.js} +4 -4
- package/dist/{account-QX4G4BJ7.js → account-PISI6UMC.js} +4 -4
- package/dist/{account-assets-J5Z4URLQ.js → account-assets-T3VVNBUG.js} +8 -8
- package/dist/{account-level-4SBYYHRS.js → account-level-MPFWRPEK.js} +5 -5
- package/dist/{account-reads-FOEVPWDP.js → account-reads-ATFFFKV4.js} +4 -4
- package/dist/{account-users-UTIF7MIT.js → account-users-FBA7PDBK.js} +4 -4
- package/dist/{account-writes-QAQXRIEY.js → account-writes-R5T3F5QT.js} +4 -4
- package/dist/{accounts-FT2SRKMD.js → accounts-4R3MBNJG.js} +4 -4
- package/dist/{accounts-SNB65ZEW.js → accounts-5WF7VE7J.js} +4 -4
- package/dist/{accounts-JK3OAS5U.js → accounts-JNVS3HEX.js} +2 -2
- package/dist/{accounts-OE33CKWD.js → accounts-KELFJVQM.js} +4 -4
- package/dist/{accounts-K5XLEO6W.js → accounts-VPWCLF6X.js} +3 -3
- package/dist/{active-entities-3BAPHE4P.js → active-entities-WDPW7652.js} +3 -3
- package/dist/{activities-LKLPORDI.js → activities-WGPHYSFU.js} +4 -4
- package/dist/{ad-group-writes-XY5JYTKT.js → ad-group-writes-4OCFZI33.js} +4 -4
- package/dist/{ad-groups-YEO5ZS5U.js → ad-groups-7NE3A255.js} +8 -8
- package/dist/{ad-writes-XRCPK4SP.js → ad-writes-FWUMC6AE.js} +4 -4
- package/dist/{ads-MAOI7S6V.js → ads-F7AUJWK7.js} +13 -13
- package/dist/{ads-H7H7H2CM.js → ads-ITEUGEUV.js} +9 -9
- package/dist/{ads-AYJAYLFR.js → ads-MUFH7FLP.js} +7 -7
- package/dist/{adsets-QRKICEFD.js → adsets-XH2ULWPM.js} +12 -12
- package/dist/{analytics-XB6FRNVJ.js → analytics-TPI27PJL.js} +3 -3
- package/dist/{analytics-ADIWEM6G.js → analytics-ZFWZ5YD5.js} +10 -10
- package/dist/{asset-writes-JLVUAVUZ.js → asset-writes-4X3AJQ4Q.js} +5 -5
- package/dist/{audience-size-P5L6MZ4C.js → audience-size-4JPP222L.js} +3 -3
- package/dist/{audience-writes-CDKQB3SM.js → audience-writes-TXWPDJ2F.js} +4 -4
- package/dist/{audiences-XKERWKKE.js → audiences-5QFAMXWP.js} +4 -4
- package/dist/{audiences-CDDI5HR5.js → audiences-MBBXWEOI.js} +8 -8
- package/dist/{audiences-34IQKOGS.js → audiences-YUG5JLL4.js} +3 -3
- package/dist/{audit-SEADLC6F.js → audit-QQAM5QJ2.js} +3 -3
- package/dist/{audit-7ED6CUTQ.js → audit-WFXS5ELM.js} +3 -3
- package/dist/{bid-pricing-NWSUO3VM.js → bid-pricing-JKUFSCZG.js} +3 -3
- package/dist/{businesses-MGP2YCEU.js → businesses-24JNY46Z.js} +3 -3
- package/dist/{campaign-groups-PH64UXZJ.js → campaign-groups-QUEKAHHT.js} +9 -9
- package/dist/{campaign-writes-BN3EGDK5.js → campaign-writes-GZ5MKJ63.js} +4 -4
- package/dist/{campaign-writes-CLV5ZSUK.js → campaign-writes-UO5P7OD7.js} +4 -4
- package/dist/{campaigns-5XRY27JZ.js → campaigns-7V7PYIHJ.js} +8 -8
- package/dist/{campaigns-ZYU4BXDP.js → campaigns-G24AEUCM.js} +8 -8
- package/dist/{campaigns-HES5MDUG.js → campaigns-KXYGSH27.js} +12 -12
- package/dist/{campaigns-JF4TYYUP.js → campaigns-QNBBQTMU.js} +12 -12
- package/dist/{cards-A7GQVC7B.js → cards-NSNAFTEB.js} +3 -3
- package/dist/{catalogs-6XLBWAUS.js → catalogs-I4WWTCIZ.js} +4 -4
- package/dist/{catalogs-TGLSJEK5.js → catalogs-VZYAATUR.js} +4 -4
- package/dist/{changes-OOUVQDBY.js → changes-BPC2O52H.js} +3 -3
- package/dist/{chatgpt-NAXIFWXV.js → chatgpt-WFGSWJ5N.js} +13 -13
- package/dist/{chunk-KUY26RCF.js → chunk-2F4DELSV.js} +2 -2
- package/dist/{chunk-ZRP7Y2DM.js → chunk-6DPSWLGY.js} +7 -3
- package/dist/chunk-6DPSWLGY.js.map +1 -0
- package/dist/{chunk-GAYRBIEF.js → chunk-ASRS37QE.js} +1 -3
- package/dist/chunk-ASRS37QE.js.map +1 -0
- package/dist/{chunk-EW7JSTRZ.js → chunk-C3IO4R4B.js} +2 -2
- package/dist/{chunk-4LF4AYPT.js → chunk-DHVFI7AE.js} +2 -2
- package/dist/{chunk-DMJUIUAL.js → chunk-DN6ZZTQE.js} +2 -2
- package/dist/{chunk-DM3Q6F5F.js → chunk-FCHZ5TNG.js} +2 -2
- package/dist/{chunk-7I6ZVBLM.js → chunk-GX5333QH.js} +3 -3
- package/dist/{chunk-HMIROUFV.js → chunk-HCQJYI6X.js} +2 -2
- package/dist/{chunk-GU5MXV2Y.js → chunk-HHVWV5BJ.js} +2 -2
- package/dist/{chunk-HGUYC5K6.js → chunk-I3WGTSDY.js} +2 -2
- package/dist/{chunk-7NF73SCB.js → chunk-IDSDJHRS.js} +2 -2
- package/dist/{chunk-QDQZ62FL.js → chunk-ILPHIYAL.js} +3 -3
- package/dist/{chunk-TGPGQTZA.js → chunk-IPO33JRU.js} +3 -3
- package/dist/{chunk-3G3GC5N4.js → chunk-KGYTIPS2.js} +2 -2
- package/dist/{chunk-3GAR4AZK.js → chunk-LNODLR7W.js} +2 -2
- package/dist/{chunk-B2POVFR2.js → chunk-M7QZSEHF.js} +2 -2
- package/dist/{chunk-K7IE6UYV.js → chunk-SBNBYRGZ.js} +3 -3
- package/dist/{chunk-RCJKABOS.js → chunk-TU5LQUJM.js} +2 -2
- package/dist/{chunk-TLQOMWLQ.js → chunk-TU7DWSTW.js} +2 -2
- package/dist/{chunk-7BUIOP36.js → chunk-TYXZ2SRW.js} +2 -2
- package/dist/{chunk-NWF2LRKO.js → chunk-VPABGAN4.js} +2 -2
- package/dist/{chunk-BJOK7QD4.js → chunk-VXWG4ZS2.js} +2 -2
- package/dist/{chunk-4UQRXKYJ.js → chunk-Z35KUMBW.js} +2 -2
- package/dist/{chunk-3M45PYU7.js → chunk-Z53DY5HT.js} +3 -3
- package/dist/cli.js +14 -15
- package/dist/cli.js.map +1 -1
- package/dist/{companies-KMMV6EJW.js → companies-NVQJ5EBX.js} +3 -3
- package/dist/{config-SMVIY6RW.js → config-55WGRLY3.js} +3 -3
- package/dist/{conversation-KHTZBGX2.js → conversation-A3ROPGFG.js} +3 -3
- package/dist/{conversion-report-U66HW6JM.js → conversion-report-BN4Q27MI.js} +3 -3
- package/dist/{conversion-upload-command-IHFKVX2M.js → conversion-upload-command-S4DGGI7K.js} +3 -3
- package/dist/{conversion-writes-RSGDOAET.js → conversion-writes-IZ7WLCYM.js} +4 -4
- package/dist/{conversions-BVOL43W4.js → conversions-RFJM3YRJ.js} +6 -6
- package/dist/{conversions-SUMZAV2T.js → conversions-YFIVZRLB.js} +8 -8
- package/dist/{copy-writes-CIHIFLY6.js → copy-writes-E3V5TUVU.js} +5 -5
- package/dist/{create-UL2OYXOA.js → create-HXGBZAOM.js} +3 -3
- package/dist/{creatives-FU3YELGU.js → creatives-6XGPDWCK.js} +9 -9
- package/dist/{creatives-BB6S2OF6.js → creatives-DUR5Z5AN.js} +6 -6
- package/dist/{crm-MQQRBITZ.js → crm-MFI4NZA3.js} +2 -2
- package/dist/{currency-CGKO5GKH.js → currency-5ED5P4JQ.js} +3 -3
- package/dist/{custom-conversions-HAGG72LF.js → custom-conversions-OIA5Y2GX.js} +6 -6
- package/dist/{delete-UIKB5ZXS.js → delete-CUFKAGJF.js} +3 -3
- package/dist/{demographics-ABZODD45.js → demographics-JHKN3EOT.js} +3 -3
- package/dist/{discover-VM3O7CQM.js → discover-BSQ35XIS.js} +2 -2
- package/dist/{draft-RIR2V6A2.js → draft-2ZX73IRO.js} +3 -3
- package/dist/{draft-5UUJC675.js → draft-6XYWFCIO.js} +4 -4
- package/dist/{draft-CRDBU6LF.js → draft-EK5PKBUR.js} +3 -3
- package/dist/{draft-BATA5CVI.js → draft-KB6WX63J.js} +4 -4
- package/dist/{draft-ZCL7FVBH.js → draft-L5Q6KEER.js} +3 -3
- package/dist/{draft-DJIYEMZU.js → draft-MJRMZGMP.js} +3 -3
- package/dist/{draft-P7IDMXWR.js → draft-ZRFZJ7Z3.js} +4 -4
- package/dist/{experiment-I5CRLOVN.js → experiment-3VRHCQN5.js} +2 -2
- package/dist/{experiments-MLLTHMMS.js → experiments-WOZFSKVI.js} +4 -4
- package/dist/{facets-KSHR3MBE.js → facets-2YXLHG4K.js} +3 -3
- package/dist/{forecast-ONVS2QAI.js → forecast-3NKGNWV3.js} +4 -4
- package/dist/{forecast-HT46MFL4.js → forecast-EX5IXM7C.js} +3 -3
- package/dist/{funding-5W4LX6DU.js → funding-TCEPQXRQ.js} +3 -3
- package/dist/{funnel-76BAD64Q.js → funnel-AX43MHB7.js} +2 -2
- package/dist/{ga4-BWVCDVIR.js → ga4-JE3HS36B.js} +15 -15
- package/dist/{get-4KFAO475.js → get-2RITKOGH.js} +3 -3
- package/dist/{google-7EZP7I6J.js → google-6KIKJCY7.js} +22 -22
- package/dist/{gsc-2MPE4N32.js → gsc-RMVOYIM3.js} +4 -4
- package/dist/{history-RDVV7KBN.js → history-KUC4KEYO.js} +3 -3
- package/dist/{history-FEBJHFHJ.js → history-VDZEOXQ4.js} +4 -4
- package/dist/{hubspot-A3RQNMYN.js → hubspot-FEKXKUAR.js} +3 -3
- package/dist/{insights-XZL2EM53.js → insights-HATH3IC6.js} +3 -3
- package/dist/{insights-UTCMSWSC.js → insights-UJGQ6WCQ.js} +3 -3
- package/dist/{instant-experiences-RM4MLJTL.js → instant-experiences-A2SIQNB5.js} +4 -4
- package/dist/{job-DRFCQ27M.js → job-SM2OQ2LO.js} +3 -3
- package/dist/{job-create-2EC25Y3J.js → job-create-ECZHPVKH.js} +3 -3
- package/dist/{job-status-UNVZRPIA.js → job-status-QSYDKIIV.js} +3 -3
- package/dist/{languages-DIQ3OG3E.js → languages-2JLPFE6B.js} +2 -2
- package/dist/{leads-LAATTW5G.js → leads-57S7XBRP.js} +3 -3
- package/dist/{leads-ULYHTG22.js → leads-QAYS7AJO.js} +4 -4
- package/dist/{line-item-writes-XJTTA3X5.js → line-item-writes-ONK72SG7.js} +4 -4
- package/dist/{line-items-JR25T2C5.js → line-items-L4HQHJP3.js} +8 -8
- package/dist/{linkedin-W5BJ6HEH.js → linkedin-YEAXKAG6.js} +30 -30
- package/dist/{list-3653DIYB.js → list-KHWFCIBV.js} +3 -3
- package/dist/{locations-HTVYJSDJ.js → locations-FB5RGOA4.js} +2 -2
- package/dist/{locations-M2B5XDU4.js → locations-ZVEU3XNW.js} +3 -3
- package/dist/{lookup-S5VG7AWH.js → lookup-MELV3RUL.js} +3 -3
- package/dist/{mcp-TFQTME4P.js → mcp-6T4PEZ5R.js} +15 -3
- package/dist/mcp-6T4PEZ5R.js.map +1 -0
- package/dist/{media-XCTZJIW4.js → media-BPI2VE6A.js} +3 -3
- package/dist/{media-P4T4ZBNS.js → media-EEWZZU3P.js} +3 -3
- package/dist/{meta-IPLWNYC7.js → meta-SMJUQP37.js} +38 -38
- package/dist/{metrics-WYWUX6Y5.js → metrics-S45EIREU.js} +2 -2
- package/dist/{output-WTEPRUPE.js → output-4QBQEM4C.js} +2 -2
- package/dist/{page-photos-OQ5QATQH.js → page-photos-HRKPDQBM.js} +4 -4
- package/dist/{pages-J6AF5NDU.js → pages-DTQWQUKP.js} +3 -3
- package/dist/{pixels-ZZTB6NWF.js → pixels-2BKADWE6.js} +3 -3
- package/dist/{pixels-THEGYRXT.js → pixels-ISHV4JZD.js} +4 -4
- package/dist/{plan-7UF76Q6U.js → plan-A6VC3ZO7.js} +3 -3
- package/dist/{preview-LRJOQ7LM.js → preview-GGIGXPJW.js} +3 -3
- package/dist/{promoted-tweet-writes-SBXWKO23.js → promoted-tweet-writes-WDSUBZ6D.js} +4 -4
- package/dist/{promoted-tweets-W42FNWS7.js → promoted-tweets-UFWAFTKD.js} +5 -5
- package/dist/{properties-RBLJCVSG.js → properties-VWKO3AAK.js} +3 -3
- package/dist/{query-IQICLABN.js → query-EG7R6MIA.js} +4 -4
- package/dist/{query-KQ675KJZ.js → query-OOP63DJF.js} +3 -3
- package/dist/{query-BJJYUGQZ.js → query-RBZFAIDK.js} +3 -3
- package/dist/{questionnaire-DWEH5II4.js → questionnaire-7SHYRTMJ.js} +2 -2
- package/dist/{read-QME7JYVF.js → read-GOULD7YL.js} +4 -4
- package/dist/{resolve-KRKIJKT7.js → resolve-5IWZBGO2.js} +3 -3
- package/dist/{revenue-UBZUTSXN.js → revenue-E5RDAGBU.js} +4 -4
- package/dist/{rule-writes-UAVWT4XS.js → rule-writes-K4P3XBJW.js} +4 -4
- package/dist/{rules-ZVS2MWED.js → rules-HY7S2YTD.js} +9 -9
- package/dist/{run-K2DOMOAN.js → run-GQEZCRPX.js} +3 -3
- package/dist/{scheduled-agents-ZGCUZ6SB.js → scheduled-agents-3J3B5O3T.js} +11 -11
- package/dist/{schema-D6BMZAPB.js → schema-6Y3IXFDC.js} +2 -2
- package/dist/{sends-LAY5C74B.js → sends-WBYTALR7.js} +2 -2
- package/dist/{shared-ZFULUOPQ.js → shared-CGEJI2RB.js} +3 -3
- package/dist/{shopify-LXSR37XI.js → shopify-SL7L364P.js} +3 -3
- package/dist/{sitemaps-F3HYH5ZP.js → sitemaps-5SP7PVQ6.js} +3 -3
- package/dist/{sites-JSMF72BY.js → sites-YZDPHBST.js} +3 -3
- package/dist/{sources-AOF2YDYX.js → sources-SRV7RSHI.js} +2 -2
- package/dist/{stats-QP4LFQZJ.js → stats-EGGNFTKI.js} +5 -5
- package/dist/{studies-EPO2AM4M.js → studies-6VUUOMZD.js} +7 -7
- package/dist/{study-writes-7FP443QQ.js → study-writes-IR7RSSTK.js} +4 -4
- package/dist/{sync-PHH65JFS.js → sync-SCM6JGJP.js} +3 -3
- package/dist/{tag-manager-F7PVTDBB.js → tag-manager-REKD4WGU.js} +9 -9
- package/dist/{targeting-NKZFEZD7.js → targeting-BQUD54MF.js} +4 -4
- package/dist/{targeting-constants-236ES5HE.js → targeting-constants-MRQB4N5I.js} +3 -3
- package/dist/{targeting-criteria-AU5CSMAU.js → targeting-criteria-3RSGL4PU.js} +5 -5
- package/dist/{targets-IOIH5JYS.js → targets-EQ6PS7BY.js} +3 -3
- package/dist/{terms-O6ODXEOK.js → terms-D2KAFHKJ.js} +2 -2
- package/dist/{themes-PGPIAKAO.js → themes-IAJPT5Y7.js} +4 -4
- package/dist/{top-companies-FSITN3ZR.js → top-companies-P33JBCQI.js} +3 -3
- package/dist/{triggers-MONMZSKT.js → triggers-J42TLW7M.js} +3 -3
- package/dist/{tweets-IUINLOXF.js → tweets-JN6ARKF6.js} +3 -3
- package/dist/{unstage-ZA3WQBEA.js → unstage-5C27F2LZ.js} +2 -2
- package/dist/{unstage-JXG5AU5Q.js → unstage-F73JVWEC.js} +3 -3
- package/dist/{update-RZSV4NYP.js → update-G7QXDY74.js} +3 -3
- package/dist/{url-options-63DED6CR.js → url-options-VI76IGTY.js} +3 -3
- package/dist/{url-params-TRFI2PMD.js → url-params-4H2EZWWH.js} +3 -3
- package/dist/{write-commands-OTWH6BKZ.js → write-commands-B25W4FP5.js} +3 -3
- package/dist/{write-commands-5J47ZNO4.js → write-commands-GNNEUVDW.js} +3 -3
- package/dist/{write-commands-NVCX7IAU.js → write-commands-KWO3X6OW.js} +4 -4
- package/dist/{write-commands-OGVDWWBV.js → write-commands-NXJQQ62W.js} +10 -10
- package/dist/{x-ZQNHYIDU.js → x-4GPADHQR.js} +15 -15
- package/package.json +1 -1
- package/dist/chunk-GAYRBIEF.js.map +0 -1
- package/dist/chunk-ZRP7Y2DM.js.map +0 -1
- package/dist/lead-routes-XBO2GOBL.js +0 -608
- package/dist/lead-routes-XBO2GOBL.js.map +0 -1
- package/dist/mcp-TFQTME4P.js.map +0 -1
- /package/dist/{account-ZY655BIU.js.map → account-BA3IO3AN.js.map} +0 -0
- /package/dist/{account-UFYZS3K6.js.map → account-JNBDG6PB.js.map} +0 -0
- /package/dist/{account-QX4G4BJ7.js.map → account-PISI6UMC.js.map} +0 -0
- /package/dist/{account-assets-J5Z4URLQ.js.map → account-assets-T3VVNBUG.js.map} +0 -0
- /package/dist/{account-level-4SBYYHRS.js.map → account-level-MPFWRPEK.js.map} +0 -0
- /package/dist/{account-reads-FOEVPWDP.js.map → account-reads-ATFFFKV4.js.map} +0 -0
- /package/dist/{account-users-UTIF7MIT.js.map → account-users-FBA7PDBK.js.map} +0 -0
- /package/dist/{account-writes-QAQXRIEY.js.map → account-writes-R5T3F5QT.js.map} +0 -0
- /package/dist/{accounts-FT2SRKMD.js.map → accounts-4R3MBNJG.js.map} +0 -0
- /package/dist/{accounts-SNB65ZEW.js.map → accounts-5WF7VE7J.js.map} +0 -0
- /package/dist/{accounts-JK3OAS5U.js.map → accounts-JNVS3HEX.js.map} +0 -0
- /package/dist/{accounts-OE33CKWD.js.map → accounts-KELFJVQM.js.map} +0 -0
- /package/dist/{accounts-K5XLEO6W.js.map → accounts-VPWCLF6X.js.map} +0 -0
- /package/dist/{active-entities-3BAPHE4P.js.map → active-entities-WDPW7652.js.map} +0 -0
- /package/dist/{activities-LKLPORDI.js.map → activities-WGPHYSFU.js.map} +0 -0
- /package/dist/{ad-group-writes-XY5JYTKT.js.map → ad-group-writes-4OCFZI33.js.map} +0 -0
- /package/dist/{ad-groups-YEO5ZS5U.js.map → ad-groups-7NE3A255.js.map} +0 -0
- /package/dist/{ad-writes-XRCPK4SP.js.map → ad-writes-FWUMC6AE.js.map} +0 -0
- /package/dist/{ads-MAOI7S6V.js.map → ads-F7AUJWK7.js.map} +0 -0
- /package/dist/{ads-H7H7H2CM.js.map → ads-ITEUGEUV.js.map} +0 -0
- /package/dist/{ads-AYJAYLFR.js.map → ads-MUFH7FLP.js.map} +0 -0
- /package/dist/{adsets-QRKICEFD.js.map → adsets-XH2ULWPM.js.map} +0 -0
- /package/dist/{analytics-XB6FRNVJ.js.map → analytics-TPI27PJL.js.map} +0 -0
- /package/dist/{analytics-ADIWEM6G.js.map → analytics-ZFWZ5YD5.js.map} +0 -0
- /package/dist/{asset-writes-JLVUAVUZ.js.map → asset-writes-4X3AJQ4Q.js.map} +0 -0
- /package/dist/{audience-size-P5L6MZ4C.js.map → audience-size-4JPP222L.js.map} +0 -0
- /package/dist/{audience-writes-CDKQB3SM.js.map → audience-writes-TXWPDJ2F.js.map} +0 -0
- /package/dist/{audiences-XKERWKKE.js.map → audiences-5QFAMXWP.js.map} +0 -0
- /package/dist/{audiences-CDDI5HR5.js.map → audiences-MBBXWEOI.js.map} +0 -0
- /package/dist/{audiences-34IQKOGS.js.map → audiences-YUG5JLL4.js.map} +0 -0
- /package/dist/{audit-SEADLC6F.js.map → audit-QQAM5QJ2.js.map} +0 -0
- /package/dist/{audit-7ED6CUTQ.js.map → audit-WFXS5ELM.js.map} +0 -0
- /package/dist/{bid-pricing-NWSUO3VM.js.map → bid-pricing-JKUFSCZG.js.map} +0 -0
- /package/dist/{businesses-MGP2YCEU.js.map → businesses-24JNY46Z.js.map} +0 -0
- /package/dist/{campaign-groups-PH64UXZJ.js.map → campaign-groups-QUEKAHHT.js.map} +0 -0
- /package/dist/{campaign-writes-BN3EGDK5.js.map → campaign-writes-GZ5MKJ63.js.map} +0 -0
- /package/dist/{campaign-writes-CLV5ZSUK.js.map → campaign-writes-UO5P7OD7.js.map} +0 -0
- /package/dist/{campaigns-5XRY27JZ.js.map → campaigns-7V7PYIHJ.js.map} +0 -0
- /package/dist/{campaigns-ZYU4BXDP.js.map → campaigns-G24AEUCM.js.map} +0 -0
- /package/dist/{campaigns-HES5MDUG.js.map → campaigns-KXYGSH27.js.map} +0 -0
- /package/dist/{campaigns-JF4TYYUP.js.map → campaigns-QNBBQTMU.js.map} +0 -0
- /package/dist/{cards-A7GQVC7B.js.map → cards-NSNAFTEB.js.map} +0 -0
- /package/dist/{catalogs-6XLBWAUS.js.map → catalogs-I4WWTCIZ.js.map} +0 -0
- /package/dist/{catalogs-TGLSJEK5.js.map → catalogs-VZYAATUR.js.map} +0 -0
- /package/dist/{changes-OOUVQDBY.js.map → changes-BPC2O52H.js.map} +0 -0
- /package/dist/{chatgpt-NAXIFWXV.js.map → chatgpt-WFGSWJ5N.js.map} +0 -0
- /package/dist/{chunk-KUY26RCF.js.map → chunk-2F4DELSV.js.map} +0 -0
- /package/dist/{chunk-EW7JSTRZ.js.map → chunk-C3IO4R4B.js.map} +0 -0
- /package/dist/{chunk-4LF4AYPT.js.map → chunk-DHVFI7AE.js.map} +0 -0
- /package/dist/{chunk-DMJUIUAL.js.map → chunk-DN6ZZTQE.js.map} +0 -0
- /package/dist/{chunk-DM3Q6F5F.js.map → chunk-FCHZ5TNG.js.map} +0 -0
- /package/dist/{chunk-7I6ZVBLM.js.map → chunk-GX5333QH.js.map} +0 -0
- /package/dist/{chunk-HMIROUFV.js.map → chunk-HCQJYI6X.js.map} +0 -0
- /package/dist/{chunk-GU5MXV2Y.js.map → chunk-HHVWV5BJ.js.map} +0 -0
- /package/dist/{chunk-HGUYC5K6.js.map → chunk-I3WGTSDY.js.map} +0 -0
- /package/dist/{chunk-7NF73SCB.js.map → chunk-IDSDJHRS.js.map} +0 -0
- /package/dist/{chunk-QDQZ62FL.js.map → chunk-ILPHIYAL.js.map} +0 -0
- /package/dist/{chunk-TGPGQTZA.js.map → chunk-IPO33JRU.js.map} +0 -0
- /package/dist/{chunk-3G3GC5N4.js.map → chunk-KGYTIPS2.js.map} +0 -0
- /package/dist/{chunk-3GAR4AZK.js.map → chunk-LNODLR7W.js.map} +0 -0
- /package/dist/{chunk-B2POVFR2.js.map → chunk-M7QZSEHF.js.map} +0 -0
- /package/dist/{chunk-K7IE6UYV.js.map → chunk-SBNBYRGZ.js.map} +0 -0
- /package/dist/{chunk-RCJKABOS.js.map → chunk-TU5LQUJM.js.map} +0 -0
- /package/dist/{chunk-TLQOMWLQ.js.map → chunk-TU7DWSTW.js.map} +0 -0
- /package/dist/{chunk-7BUIOP36.js.map → chunk-TYXZ2SRW.js.map} +0 -0
- /package/dist/{chunk-NWF2LRKO.js.map → chunk-VPABGAN4.js.map} +0 -0
- /package/dist/{chunk-BJOK7QD4.js.map → chunk-VXWG4ZS2.js.map} +0 -0
- /package/dist/{chunk-4UQRXKYJ.js.map → chunk-Z35KUMBW.js.map} +0 -0
- /package/dist/{chunk-3M45PYU7.js.map → chunk-Z53DY5HT.js.map} +0 -0
- /package/dist/{companies-KMMV6EJW.js.map → companies-NVQJ5EBX.js.map} +0 -0
- /package/dist/{config-SMVIY6RW.js.map → config-55WGRLY3.js.map} +0 -0
- /package/dist/{conversation-KHTZBGX2.js.map → conversation-A3ROPGFG.js.map} +0 -0
- /package/dist/{conversion-report-U66HW6JM.js.map → conversion-report-BN4Q27MI.js.map} +0 -0
- /package/dist/{conversion-upload-command-IHFKVX2M.js.map → conversion-upload-command-S4DGGI7K.js.map} +0 -0
- /package/dist/{conversion-writes-RSGDOAET.js.map → conversion-writes-IZ7WLCYM.js.map} +0 -0
- /package/dist/{conversions-BVOL43W4.js.map → conversions-RFJM3YRJ.js.map} +0 -0
- /package/dist/{conversions-SUMZAV2T.js.map → conversions-YFIVZRLB.js.map} +0 -0
- /package/dist/{copy-writes-CIHIFLY6.js.map → copy-writes-E3V5TUVU.js.map} +0 -0
- /package/dist/{create-UL2OYXOA.js.map → create-HXGBZAOM.js.map} +0 -0
- /package/dist/{creatives-FU3YELGU.js.map → creatives-6XGPDWCK.js.map} +0 -0
- /package/dist/{creatives-BB6S2OF6.js.map → creatives-DUR5Z5AN.js.map} +0 -0
- /package/dist/{crm-MQQRBITZ.js.map → crm-MFI4NZA3.js.map} +0 -0
- /package/dist/{currency-CGKO5GKH.js.map → currency-5ED5P4JQ.js.map} +0 -0
- /package/dist/{custom-conversions-HAGG72LF.js.map → custom-conversions-OIA5Y2GX.js.map} +0 -0
- /package/dist/{delete-UIKB5ZXS.js.map → delete-CUFKAGJF.js.map} +0 -0
- /package/dist/{demographics-ABZODD45.js.map → demographics-JHKN3EOT.js.map} +0 -0
- /package/dist/{discover-VM3O7CQM.js.map → discover-BSQ35XIS.js.map} +0 -0
- /package/dist/{draft-RIR2V6A2.js.map → draft-2ZX73IRO.js.map} +0 -0
- /package/dist/{draft-5UUJC675.js.map → draft-6XYWFCIO.js.map} +0 -0
- /package/dist/{draft-CRDBU6LF.js.map → draft-EK5PKBUR.js.map} +0 -0
- /package/dist/{draft-BATA5CVI.js.map → draft-KB6WX63J.js.map} +0 -0
- /package/dist/{draft-ZCL7FVBH.js.map → draft-L5Q6KEER.js.map} +0 -0
- /package/dist/{draft-DJIYEMZU.js.map → draft-MJRMZGMP.js.map} +0 -0
- /package/dist/{draft-P7IDMXWR.js.map → draft-ZRFZJ7Z3.js.map} +0 -0
- /package/dist/{experiment-I5CRLOVN.js.map → experiment-3VRHCQN5.js.map} +0 -0
- /package/dist/{experiments-MLLTHMMS.js.map → experiments-WOZFSKVI.js.map} +0 -0
- /package/dist/{facets-KSHR3MBE.js.map → facets-2YXLHG4K.js.map} +0 -0
- /package/dist/{forecast-ONVS2QAI.js.map → forecast-3NKGNWV3.js.map} +0 -0
- /package/dist/{forecast-HT46MFL4.js.map → forecast-EX5IXM7C.js.map} +0 -0
- /package/dist/{funding-5W4LX6DU.js.map → funding-TCEPQXRQ.js.map} +0 -0
- /package/dist/{funnel-76BAD64Q.js.map → funnel-AX43MHB7.js.map} +0 -0
- /package/dist/{ga4-BWVCDVIR.js.map → ga4-JE3HS36B.js.map} +0 -0
- /package/dist/{get-4KFAO475.js.map → get-2RITKOGH.js.map} +0 -0
- /package/dist/{google-7EZP7I6J.js.map → google-6KIKJCY7.js.map} +0 -0
- /package/dist/{gsc-2MPE4N32.js.map → gsc-RMVOYIM3.js.map} +0 -0
- /package/dist/{history-RDVV7KBN.js.map → history-KUC4KEYO.js.map} +0 -0
- /package/dist/{history-FEBJHFHJ.js.map → history-VDZEOXQ4.js.map} +0 -0
- /package/dist/{hubspot-A3RQNMYN.js.map → hubspot-FEKXKUAR.js.map} +0 -0
- /package/dist/{insights-XZL2EM53.js.map → insights-HATH3IC6.js.map} +0 -0
- /package/dist/{insights-UTCMSWSC.js.map → insights-UJGQ6WCQ.js.map} +0 -0
- /package/dist/{instant-experiences-RM4MLJTL.js.map → instant-experiences-A2SIQNB5.js.map} +0 -0
- /package/dist/{job-DRFCQ27M.js.map → job-SM2OQ2LO.js.map} +0 -0
- /package/dist/{job-create-2EC25Y3J.js.map → job-create-ECZHPVKH.js.map} +0 -0
- /package/dist/{job-status-UNVZRPIA.js.map → job-status-QSYDKIIV.js.map} +0 -0
- /package/dist/{languages-DIQ3OG3E.js.map → languages-2JLPFE6B.js.map} +0 -0
- /package/dist/{leads-LAATTW5G.js.map → leads-57S7XBRP.js.map} +0 -0
- /package/dist/{leads-ULYHTG22.js.map → leads-QAYS7AJO.js.map} +0 -0
- /package/dist/{line-item-writes-XJTTA3X5.js.map → line-item-writes-ONK72SG7.js.map} +0 -0
- /package/dist/{line-items-JR25T2C5.js.map → line-items-L4HQHJP3.js.map} +0 -0
- /package/dist/{linkedin-W5BJ6HEH.js.map → linkedin-YEAXKAG6.js.map} +0 -0
- /package/dist/{list-3653DIYB.js.map → list-KHWFCIBV.js.map} +0 -0
- /package/dist/{locations-HTVYJSDJ.js.map → locations-FB5RGOA4.js.map} +0 -0
- /package/dist/{locations-M2B5XDU4.js.map → locations-ZVEU3XNW.js.map} +0 -0
- /package/dist/{lookup-S5VG7AWH.js.map → lookup-MELV3RUL.js.map} +0 -0
- /package/dist/{media-XCTZJIW4.js.map → media-BPI2VE6A.js.map} +0 -0
- /package/dist/{media-P4T4ZBNS.js.map → media-EEWZZU3P.js.map} +0 -0
- /package/dist/{meta-IPLWNYC7.js.map → meta-SMJUQP37.js.map} +0 -0
- /package/dist/{metrics-WYWUX6Y5.js.map → metrics-S45EIREU.js.map} +0 -0
- /package/dist/{output-WTEPRUPE.js.map → output-4QBQEM4C.js.map} +0 -0
- /package/dist/{page-photos-OQ5QATQH.js.map → page-photos-HRKPDQBM.js.map} +0 -0
- /package/dist/{pages-J6AF5NDU.js.map → pages-DTQWQUKP.js.map} +0 -0
- /package/dist/{pixels-ZZTB6NWF.js.map → pixels-2BKADWE6.js.map} +0 -0
- /package/dist/{pixels-THEGYRXT.js.map → pixels-ISHV4JZD.js.map} +0 -0
- /package/dist/{plan-7UF76Q6U.js.map → plan-A6VC3ZO7.js.map} +0 -0
- /package/dist/{preview-LRJOQ7LM.js.map → preview-GGIGXPJW.js.map} +0 -0
- /package/dist/{promoted-tweet-writes-SBXWKO23.js.map → promoted-tweet-writes-WDSUBZ6D.js.map} +0 -0
- /package/dist/{promoted-tweets-W42FNWS7.js.map → promoted-tweets-UFWAFTKD.js.map} +0 -0
- /package/dist/{properties-RBLJCVSG.js.map → properties-VWKO3AAK.js.map} +0 -0
- /package/dist/{query-IQICLABN.js.map → query-EG7R6MIA.js.map} +0 -0
- /package/dist/{query-KQ675KJZ.js.map → query-OOP63DJF.js.map} +0 -0
- /package/dist/{query-BJJYUGQZ.js.map → query-RBZFAIDK.js.map} +0 -0
- /package/dist/{questionnaire-DWEH5II4.js.map → questionnaire-7SHYRTMJ.js.map} +0 -0
- /package/dist/{read-QME7JYVF.js.map → read-GOULD7YL.js.map} +0 -0
- /package/dist/{resolve-KRKIJKT7.js.map → resolve-5IWZBGO2.js.map} +0 -0
- /package/dist/{revenue-UBZUTSXN.js.map → revenue-E5RDAGBU.js.map} +0 -0
- /package/dist/{rule-writes-UAVWT4XS.js.map → rule-writes-K4P3XBJW.js.map} +0 -0
- /package/dist/{rules-ZVS2MWED.js.map → rules-HY7S2YTD.js.map} +0 -0
- /package/dist/{run-K2DOMOAN.js.map → run-GQEZCRPX.js.map} +0 -0
- /package/dist/{scheduled-agents-ZGCUZ6SB.js.map → scheduled-agents-3J3B5O3T.js.map} +0 -0
- /package/dist/{schema-D6BMZAPB.js.map → schema-6Y3IXFDC.js.map} +0 -0
- /package/dist/{sends-LAY5C74B.js.map → sends-WBYTALR7.js.map} +0 -0
- /package/dist/{shared-ZFULUOPQ.js.map → shared-CGEJI2RB.js.map} +0 -0
- /package/dist/{shopify-LXSR37XI.js.map → shopify-SL7L364P.js.map} +0 -0
- /package/dist/{sitemaps-F3HYH5ZP.js.map → sitemaps-5SP7PVQ6.js.map} +0 -0
- /package/dist/{sites-JSMF72BY.js.map → sites-YZDPHBST.js.map} +0 -0
- /package/dist/{sources-AOF2YDYX.js.map → sources-SRV7RSHI.js.map} +0 -0
- /package/dist/{stats-QP4LFQZJ.js.map → stats-EGGNFTKI.js.map} +0 -0
- /package/dist/{studies-EPO2AM4M.js.map → studies-6VUUOMZD.js.map} +0 -0
- /package/dist/{study-writes-7FP443QQ.js.map → study-writes-IR7RSSTK.js.map} +0 -0
- /package/dist/{sync-PHH65JFS.js.map → sync-SCM6JGJP.js.map} +0 -0
- /package/dist/{tag-manager-F7PVTDBB.js.map → tag-manager-REKD4WGU.js.map} +0 -0
- /package/dist/{targeting-NKZFEZD7.js.map → targeting-BQUD54MF.js.map} +0 -0
- /package/dist/{targeting-constants-236ES5HE.js.map → targeting-constants-MRQB4N5I.js.map} +0 -0
- /package/dist/{targeting-criteria-AU5CSMAU.js.map → targeting-criteria-3RSGL4PU.js.map} +0 -0
- /package/dist/{targets-IOIH5JYS.js.map → targets-EQ6PS7BY.js.map} +0 -0
- /package/dist/{terms-O6ODXEOK.js.map → terms-D2KAFHKJ.js.map} +0 -0
- /package/dist/{themes-PGPIAKAO.js.map → themes-IAJPT5Y7.js.map} +0 -0
- /package/dist/{top-companies-FSITN3ZR.js.map → top-companies-P33JBCQI.js.map} +0 -0
- /package/dist/{triggers-MONMZSKT.js.map → triggers-J42TLW7M.js.map} +0 -0
- /package/dist/{tweets-IUINLOXF.js.map → tweets-JN6ARKF6.js.map} +0 -0
- /package/dist/{unstage-ZA3WQBEA.js.map → unstage-5C27F2LZ.js.map} +0 -0
- /package/dist/{unstage-JXG5AU5Q.js.map → unstage-F73JVWEC.js.map} +0 -0
- /package/dist/{update-RZSV4NYP.js.map → update-G7QXDY74.js.map} +0 -0
- /package/dist/{url-options-63DED6CR.js.map → url-options-VI76IGTY.js.map} +0 -0
- /package/dist/{url-params-TRFI2PMD.js.map → url-params-4H2EZWWH.js.map} +0 -0
- /package/dist/{write-commands-OTWH6BKZ.js.map → write-commands-B25W4FP5.js.map} +0 -0
- /package/dist/{write-commands-5J47ZNO4.js.map → write-commands-GNNEUVDW.js.map} +0 -0
- /package/dist/{write-commands-NVCX7IAU.js.map → write-commands-KWO3X6OW.js.map} +0 -0
- /package/dist/{write-commands-OGVDWWBV.js.map → write-commands-NXJQQ62W.js.map} +0 -0
- /package/dist/{x-ZQNHYIDU.js.map → x-4GPADHQR.js.map} +0 -0
|
@@ -3,13 +3,13 @@ import {
|
|
|
3
3
|
} from "./chunk-FIN4ZXGJ.js";
|
|
4
4
|
import {
|
|
5
5
|
resolveXAccountId
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-IDSDJHRS.js";
|
|
7
7
|
import {
|
|
8
8
|
cacheGet,
|
|
9
9
|
cacheSet,
|
|
10
10
|
writeAdsJson,
|
|
11
11
|
writeAdsOutput
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-6DPSWLGY.js";
|
|
13
13
|
import {
|
|
14
14
|
ApiError,
|
|
15
15
|
apiGet
|
|
@@ -82,4 +82,4 @@ Examples:
|
|
|
82
82
|
export {
|
|
83
83
|
cardsCommand
|
|
84
84
|
};
|
|
85
|
-
//# sourceMappingURL=cards-
|
|
85
|
+
//# sourceMappingURL=cards-NSNAFTEB.js.map
|
|
@@ -2,14 +2,14 @@ import {
|
|
|
2
2
|
failWriteValidation,
|
|
3
3
|
productFiltersArg,
|
|
4
4
|
schemaArgs
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-Z53DY5HT.js";
|
|
6
6
|
import {
|
|
7
7
|
CHATGPT_ADS_REFERENCE,
|
|
8
8
|
chatgptAdsProductQuerySchema,
|
|
9
9
|
runChatgptListRead,
|
|
10
10
|
runChatgptRead
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import "./chunk-
|
|
11
|
+
} from "./chunk-C3IO4R4B.js";
|
|
12
|
+
import "./chunk-6DPSWLGY.js";
|
|
13
13
|
import "./chunk-SOPVIIUW.js";
|
|
14
14
|
import "./chunk-G4FG5EQO.js";
|
|
15
15
|
import {
|
|
@@ -127,4 +127,4 @@ Examples:
|
|
|
127
127
|
export {
|
|
128
128
|
catalogsCommand
|
|
129
129
|
};
|
|
130
|
-
//# sourceMappingURL=catalogs-
|
|
130
|
+
//# sourceMappingURL=catalogs-I4WWTCIZ.js.map
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
requireTarget,
|
|
8
8
|
stageOp,
|
|
9
9
|
upper
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-ILPHIYAL.js";
|
|
11
11
|
import {
|
|
12
12
|
retailerIdFilter
|
|
13
13
|
} from "./chunk-Q3GSVLE5.js";
|
|
@@ -15,7 +15,7 @@ import "./chunk-GDFJOCDO.js";
|
|
|
15
15
|
import {
|
|
16
16
|
csvOrJson,
|
|
17
17
|
handleMetaError
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-M7QZSEHF.js";
|
|
19
19
|
import {
|
|
20
20
|
repeatedValues
|
|
21
21
|
} from "./chunk-ERSX3MKH.js";
|
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
writeAdsJson,
|
|
29
29
|
writeAdsOutput,
|
|
30
30
|
writeJsonEnvelope
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-6DPSWLGY.js";
|
|
32
32
|
import "./chunk-E44NXCTL.js";
|
|
33
33
|
import "./chunk-EJGAJHLB.js";
|
|
34
34
|
import {
|
|
@@ -778,4 +778,4 @@ export {
|
|
|
778
778
|
productFieldsFromArgs,
|
|
779
779
|
productSetFilterFromArgs
|
|
780
780
|
};
|
|
781
|
-
//# sourceMappingURL=catalogs-
|
|
781
|
+
//# sourceMappingURL=catalogs-VZYAATUR.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
parseApiError,
|
|
6
6
|
resolveChangesWindow
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-DHVFI7AE.js";
|
|
8
8
|
import {
|
|
9
9
|
CHANGE_SCOPE_MAX_DAYS,
|
|
10
10
|
DEFAULT_CHANGE_DAYS
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
writeAdsJson,
|
|
16
16
|
writeAdsOutput,
|
|
17
17
|
writeJsonEnvelope
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-6DPSWLGY.js";
|
|
19
19
|
import "./chunk-MUS2UTWU.js";
|
|
20
20
|
import {
|
|
21
21
|
ApiError,
|
|
@@ -132,4 +132,4 @@ Examples:
|
|
|
132
132
|
export {
|
|
133
133
|
changesCommand
|
|
134
134
|
};
|
|
135
|
-
//# sourceMappingURL=changes-
|
|
135
|
+
//# sourceMappingURL=changes-BPC2O52H.js.map
|
|
@@ -27,21 +27,21 @@ One company connects one ChatGPT Ads account, so there is no account id to pass.
|
|
|
27
27
|
Full guide: __tooling__/docs/tools/baker/ads-chatgpt.md`
|
|
28
28
|
},
|
|
29
29
|
subCommands: {
|
|
30
|
-
account: () => import("./account-
|
|
31
|
-
campaigns: () => import("./campaigns-
|
|
32
|
-
"ad-groups": () => import("./ad-groups-
|
|
33
|
-
ads: () => import("./ads-
|
|
34
|
-
conversions: () => import("./conversions-
|
|
35
|
-
pixels: () => import("./pixels-
|
|
36
|
-
audiences: () => import("./audiences-
|
|
37
|
-
catalogs: () => import("./catalogs-
|
|
38
|
-
history: () => import("./history-
|
|
39
|
-
insights: () => import("./insights-
|
|
40
|
-
locations: () => import("./locations-
|
|
41
|
-
draft: () => import("./draft-
|
|
30
|
+
account: () => import("./account-JNBDG6PB.js").then((m) => m.accountCommand),
|
|
31
|
+
campaigns: () => import("./campaigns-7V7PYIHJ.js").then((m) => m.campaignsCommand),
|
|
32
|
+
"ad-groups": () => import("./ad-groups-7NE3A255.js").then((m) => m.adGroupsCommand),
|
|
33
|
+
ads: () => import("./ads-ITEUGEUV.js").then((m) => m.adsCommand),
|
|
34
|
+
conversions: () => import("./conversions-RFJM3YRJ.js").then((m) => m.conversionsCommand),
|
|
35
|
+
pixels: () => import("./pixels-ISHV4JZD.js").then((m) => m.pixelsCommand),
|
|
36
|
+
audiences: () => import("./audiences-5QFAMXWP.js").then((m) => m.audiencesCommand),
|
|
37
|
+
catalogs: () => import("./catalogs-I4WWTCIZ.js").then((m) => m.catalogsCommand),
|
|
38
|
+
history: () => import("./history-VDZEOXQ4.js").then((m) => m.historyCommand),
|
|
39
|
+
insights: () => import("./insights-UJGQ6WCQ.js").then((m) => m.insightsCommand),
|
|
40
|
+
locations: () => import("./locations-ZVEU3XNW.js").then((m) => m.locationsCommand),
|
|
41
|
+
draft: () => import("./draft-KB6WX63J.js").then((m) => m.draftCommand)
|
|
42
42
|
}
|
|
43
43
|
});
|
|
44
44
|
export {
|
|
45
45
|
chatgptCommand
|
|
46
46
|
};
|
|
47
|
-
//# sourceMappingURL=chatgpt-
|
|
47
|
+
//# sourceMappingURL=chatgpt-WFGSWJ5N.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
writeAdsOutput
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-6DPSWLGY.js";
|
|
4
4
|
import {
|
|
5
5
|
asRecord,
|
|
6
6
|
shapeListRows
|
|
@@ -197,4 +197,4 @@ export {
|
|
|
197
197
|
META_LIST_SHAPE_ARGS,
|
|
198
198
|
registerMetaListSchema
|
|
199
199
|
};
|
|
200
|
-
//# sourceMappingURL=chunk-
|
|
200
|
+
//# sourceMappingURL=chunk-2F4DELSV.js.map
|
|
@@ -24,14 +24,18 @@ var PLATFORM_NAME = {
|
|
|
24
24
|
meta_ads: "Meta Ads",
|
|
25
25
|
linkedin_ads: "LinkedIn Ads"
|
|
26
26
|
};
|
|
27
|
-
function connectionFixExplanation(platform) {
|
|
27
|
+
function connectionFixExplanation(platform, originalMessage) {
|
|
28
28
|
const name = PLATFORM_NAME[platform];
|
|
29
29
|
const slug = REQUEST_CONNECTION_PLATFORM[platform];
|
|
30
30
|
if (optionalTargetCompany()) {
|
|
31
31
|
return `${name} is not connected for that company. It can only be connected in that company's own workspace, never with \`request_connection\` from here. Show that company as not connected for ${name} and carry on with the others.`;
|
|
32
32
|
}
|
|
33
|
+
if (originalMessage !== void 0 && SIGN_IN_ENDED.test(originalMessage)) {
|
|
34
|
+
return `${name} is connected, but its sign-in no longer works (it expired, or was revoked on the platform) \u2014 this is not a Baker error, and retrying later cannot fix it: only the user signing in again can. Call the \`request_connection\` tool now with { platform: "${slug}", reason } \u2014 the card offers Reconnect. If that call fails, give the exact route: dashboard \u2192 Brain \u2192 Integrations \u2192 Platforms \u2192 ${name} \u2192 Reconnect. Then carry on with the rest of the task and say what stays unavailable until it is reconnected.`;
|
|
35
|
+
}
|
|
33
36
|
return `${name} is not connected for this company (or no account has been picked). Don't send the user to Settings or end the turn here \u2014 call the \`request_connection\` tool with { platform: "${slug}", reason } and they connect and pick their accounts from inside the chat. If the \`request_connection\` call fails, say so plainly and give the exact route: dashboard \u2192 Brain \u2192 Integrations \u2192 Platforms \u2192 ${name}. Then carry on with the rest of the task and say what stays unavailable until it is connected.`;
|
|
34
37
|
}
|
|
38
|
+
var SIGN_IN_ENDED = /connection expired|must reconnect/i;
|
|
35
39
|
function handleConnectionError(platform, originalMessage) {
|
|
36
40
|
const platformName = PLATFORM_NAME[platform];
|
|
37
41
|
const alternative = {
|
|
@@ -57,7 +61,7 @@ function handleConnectionError(platform, originalMessage) {
|
|
|
57
61
|
message: originalMessage || `No ${platformName} connection found for this company.`,
|
|
58
62
|
fix: optionalTargetCompany() ? { action: "continue_without", explanation: connectionFixExplanation(platform) } : {
|
|
59
63
|
action: "request_connection",
|
|
60
|
-
explanation: `${connectionFixExplanation(platform)} (Optional fallback for estimated external insights: 'baker research ${alternative}'.)`
|
|
64
|
+
explanation: `${connectionFixExplanation(platform, originalMessage)} (Optional fallback for estimated external insights: 'baker research ${alternative}'.)`
|
|
61
65
|
},
|
|
62
66
|
retryable: false
|
|
63
67
|
}
|
|
@@ -317,4 +321,4 @@ export {
|
|
|
317
321
|
needsConnectionFix,
|
|
318
322
|
isOrganizationReadRefusal
|
|
319
323
|
};
|
|
320
|
-
//# sourceMappingURL=chunk-
|
|
324
|
+
//# sourceMappingURL=chunk-6DPSWLGY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/error-handler.ts","../src/commands/ads/cache.ts","../src/commands/ads/output.ts"],"sourcesContent":["import { writeJsonEnvelope } from \"./commands/ads/output.ts\";\nimport { optionalTargetCompany } from \"./env.ts\";\n\ntype ConnectionPlatform = \"google_ads\" | \"ga4\" | \"gsc\" | \"x_ads\" | \"meta_ads\" | \"linkedin_ads\";\n\n/**\n * Platforms the agent can get connected without the user leaving the chat, via\n * the blocking `request_connection` tool, and the id that tool expects. Every\n * platform this CLI can talk to is here — keep it in step with\n * `CONNECTION_PLATFORMS` in `packages/bridge/src/hono/connection-input.ts`: a\n * platform the tool accepts but this map omits sends the user to Settings for a\n * door the agent could have opened itself.\n */\nconst REQUEST_CONNECTION_PLATFORM: Record<ConnectionPlatform, string> = {\n google_ads: \"google-ads\",\n ga4: \"google-analytics\",\n gsc: \"google-search-console\",\n linkedin_ads: \"linkedin\",\n meta_ads: \"meta\",\n x_ads: \"x-ads\",\n};\n\nconst PLATFORM_NAME: Record<ConnectionPlatform, string> = {\n google_ads: \"Google Ads\",\n ga4: \"Google Analytics 4\",\n gsc: \"Google Search Console\",\n x_ads: \"X Ads\",\n meta_ads: \"Meta Ads\",\n linkedin_ads: \"LinkedIn Ads\",\n};\n\n/**\n * How to tell the agent to get a platform connected. Never \"send them to\n * Settings\" for a platform `request_connection` covers — that ends the turn on a\n * wall the agent could have opened itself, and it now covers every platform this\n * CLI talks to. The fallback line matters too: if the `request_connection` call\n * fails, the agent must still be able to say where the connect button is instead\n * of stalling.\n */\nexport function connectionFixExplanation(platform: ConnectionPlatform, originalMessage?: string): string {\n const name = PLATFORM_NAME[platform];\n const slug = REQUEST_CONNECTION_PLATFORM[platform];\n // Read with `--company` from the organization workspace: connecting from here\n // would connect the workspace, not the company the read named.\n if (optionalTargetCompany()) {\n return (\n `${name} is not connected for that company. It can only be connected in that company's own workspace, ` +\n `never with \\`request_connection\\` from here. Show that company as not connected for ${name} and carry on ` +\n \"with the others.\"\n );\n }\n if (originalMessage !== undefined && SIGN_IN_ENDED.test(originalMessage)) {\n return (\n `${name} is connected, but its sign-in no longer works (it expired, or was revoked on the platform) — this is ` +\n `not a Baker error, and retrying later cannot fix it: only the user signing in again can. Call the ` +\n `\\`request_connection\\` tool now with { platform: \"${slug}\", reason } — the card offers Reconnect. If that call ` +\n `fails, give the exact route: dashboard → Brain → Integrations → Platforms → ${name} → Reconnect. Then carry on ` +\n \"with the rest of the task and say what stays unavailable until it is reconnected.\"\n );\n }\n return (\n `${name} is not connected for this company (or no account has been picked). Don't send the user to Settings ` +\n `or end the turn here — call the \\`request_connection\\` tool with { platform: \"${slug}\", reason } and ` +\n `they connect and pick their accounts from inside the chat. If the \\`request_connection\\` call fails, say so ` +\n `plainly and give the exact route: dashboard → Brain → Integrations → Platforms → ${name}. Then carry on with the ` +\n `rest of the task and say what stays unavailable until it is connected.`\n );\n}\n\n/** How the backend says a stored sign-in stopped working (`reconnectMessage`, `convex/oauth/connectedPlatforms.ts`). */\nconst SIGN_IN_ENDED = /connection expired|must reconnect/i;\n\n/**\n * Shared error handler for \"No Connection\" scenarios.\n * Provides a structured error for AI agents with a suggested fix and alternative commands.\n */\nexport function handleConnectionError(platform: ConnectionPlatform, originalMessage?: string): never {\n const platformName = PLATFORM_NAME[platform];\n\n const alternative = {\n google_ads: \"keywords-for-site or research advertisers\",\n ga4: \"lighthouse for page performance\",\n gsc: \"keywords-for-site or research keyword-gap\",\n x_ads: \"research advertisers\",\n meta_ads: \"research advertisers or research keyword-ideas\",\n linkedin_ads: \"research advertisers (LinkedIn Ad Library) or research keyword-ideas\",\n }[platform];\n\n const code = {\n google_ads: \"NO_GOOGLE_ADS_CONNECTION\",\n ga4: \"NO_GA4_CONNECTION\",\n gsc: \"NO_GSC_CONNECTION\",\n x_ads: \"NO_X_ADS_CONNECTION\",\n meta_ads: \"NO_META_ADS_CONNECTION\",\n linkedin_ads: \"NO_LINKEDIN_ADS_CONNECTION\",\n }[platform];\n\n const envelope = {\n ok: false,\n error: {\n code,\n message: originalMessage || `No ${platformName} connection found for this company.`,\n fix: optionalTargetCompany()\n ? { action: \"continue_without\", explanation: connectionFixExplanation(platform) }\n : {\n action: \"request_connection\",\n explanation: `${connectionFixExplanation(platform, originalMessage)} (Optional fallback for estimated external insights: 'baker research ${alternative}'.)`,\n },\n retryable: false,\n },\n };\n\n writeJsonEnvelope(envelope);\n process.exit(1);\n}\n\n/**\n * Does this API failure mean \"the platform isn't connected\"? The read commands\n * surface the backend's own 404/403 verbatim, so the connect fix has to be\n * recognised from the code the client mapped it to plus the message.\n */\nexport function isNotConnectedError(code: string, message: string): boolean {\n if (code !== \"NOT_FOUND\" && code !== \"UNAUTHORIZED\" && code !== \"FORBIDDEN\") {\n return false;\n }\n // The last alternative is the write-path 403 (\"customer X is not in this\n // company's connected Google Ads accounts\") — a different sentence for the\n // same remedy: connect, and pick the account.\n return /no .* connection found|not connected|no .* (selected|picked)|is not in .* connected/i.test(message);\n}\n\n/**\n * Does this failure warrant the connect form? A dead token (401) always does —\n * whatever the wording, the remedy is to sign in again.\n *\n * A 404 or 403 only does when the backend says so. Both codes are overloaded:\n * 403 is also an asset-level refusal on a live connection (reconnecting cannot\n * grant it), and 404 is also how \"no staged op <ref> in this draft\" and a\n * mistyped `--chat` come back. Answering either with \"ask the user to connect\n * Meta Ads\" sends the agent to fix something that was never broken, and the\n * real missing-connection 404 says \"No <platform> connection found\" anyway.\n */\nexport function needsConnectionFix(code: string, message: string): boolean {\n if (code === \"UNAUTHORIZED\") {\n return true;\n }\n return isNotConnectedError(code, message);\n}\n\n/**\n * The organization workspace's refusal of a write to a company (`--company`).\n * It is about where the change belongs, not about the platform, so no\n * platform's permission advice applies to it.\n */\nexport function isOrganizationReadRefusal(message: string): boolean {\n return message.startsWith(\"The organization workspace only reads its companies\");\n}\n","import { createHash } from \"node:crypto\";\nimport { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { join } from \"node:path\";\nimport { optionalTargetCompany } from \"../../env.ts\";\nimport type { CacheEntry } from \"./types.ts\";\n\n/**\n * One folder per company a call reads (`--company`), so the organization\n * workspace never answers one company's read with another's cached accounts.\n * Resolved per call: the flag is read after the command's modules load.\n */\nfunction cacheDir(): string {\n const company = optionalTargetCompany()?.replace(/[^a-zA-Z0-9_]/g, \"\");\n return join(homedir(), \".baker\", \"cache\", \"ads\", ...(company ? [\"company\", company] : []));\n}\n\nfunction ensureDir(dir: string): void {\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n}\n\nfunction hashKey(key: string): string {\n return createHash(\"sha256\").update(key).digest(\"hex\").slice(0, 16);\n}\n\nfunction cachePath(category: string, key: string): string {\n const dir = join(cacheDir(), category);\n ensureDir(dir);\n return join(dir, `${hashKey(key)}.json`);\n}\n\nexport function cacheGet<T>(category: string, key: string): CacheEntry<T> | null {\n const path = cachePath(category, key);\n if (!existsSync(path)) {\n return null;\n }\n try {\n const raw = readFileSync(path, \"utf-8\");\n const entry = JSON.parse(raw) as CacheEntry<T>;\n if (entry.expiresAt < Date.now()) {\n rmSync(path, { force: true });\n return null;\n }\n return entry;\n } catch {\n rmSync(path, { force: true });\n return null;\n }\n}\n\nexport function cacheSet<T>(\n category: string,\n key: string,\n data: T,\n ttlMs: number,\n fields?: Record<string, string>,\n): void {\n const path = cachePath(category, key);\n const entry: CacheEntry<T> = {\n expiresAt: Date.now() + ttlMs,\n data,\n fields,\n };\n writeFileSync(path, JSON.stringify(entry), \"utf-8\");\n}\n\nconst HOUR = 60 * 60 * 1000;\nconst MINUTE = 60 * 1000;\n\nexport function getQueryTtl(query: string): number {\n const upper = query.toUpperCase();\n if (upper.includes(\"TODAY\")) {\n return 15 * MINUTE;\n }\n if (upper.includes(\"LAST_7_DAYS\") || upper.includes(\"LAST_14_DAYS\")) {\n return 1 * HOUR;\n }\n // Historical data (BETWEEN, LAST_30_DAYS, LAST_90_DAYS, etc.)\n return 6 * HOUR;\n}\n\nexport function buildQueryCacheKey(customerId: string, query: string): string {\n const today = new Date().toISOString().slice(0, 10);\n return `${customerId}:${today}:${query.trim().replace(/\\s+/g, \" \")}`;\n}\n\ninterface CachedAccount {\n id: string;\n access_type: \"direct\" | \"managed\";\n manager_id?: string;\n}\n\nexport function getManagerIdForCustomer(customerId: string): string | undefined {\n const cached = cacheGet<CachedAccount[]>(\"accounts\", \"list\");\n if (!cached) return undefined;\n const account = cached.data.find((a) => a.id === customerId);\n if (account?.access_type === \"managed\") return account.manager_id;\n return undefined;\n}\n","import { ApiError, apiGet } from \"../../client.ts\";\nimport { getEnv } from \"../../env.ts\";\nimport { handleConnectionError, isNotConnectedError } from \"../../error-handler.ts\";\nimport type { QueryContext } from \"../../geo-context.ts\";\nimport { cacheGet, cacheSet } from \"./cache.ts\";\nimport type { AdsErrorEnvelope, AdsFileSummary, AdsSuccessEnvelope } from \"./types.ts\";\n\ntype AdsOutput =\n | AdsSuccessEnvelope<unknown>\n | AdsErrorEnvelope\n | AdsFileSummary\n | { ok: true; data: unknown; query_context?: QueryContext; cached?: true; fields?: Record<string, string> }\n | { ok: false; error: { code: string; message: string } };\n\nexport function writeAdsJson(envelope: AdsOutput): void {\n process.stdout.write(`${JSON.stringify(envelope, null, 2)}\\n`);\n}\n\nexport function writeJsonEnvelope(envelope: Record<string, unknown>): void {\n process.stdout.write(`${JSON.stringify(envelope, null, 2)}\\n`);\n}\n\n/** The formats `writeAdsOutput` prints. */\nexport const TABLE_OUTPUT_FORMATS = [\"json\", \"csv\", \"jsonl\", \"md\"] as const;\n\n/** Why `--output <format>` cannot be printed, or null — rather than quietly falling back to JSON. */\nexport function outputFormatRefusal(format: string, supported: readonly string[]): string | null {\n if (supported.includes(format)) return null;\n const list =\n supported.length > 1 ? `${supported.slice(0, -1).join(\", \")} or ${supported.at(-1)}` : supported.join(\"\");\n return `--output ${format} is not supported — use ${list}`;\n}\n\nexport function toCsvRow(values: string[]): string {\n return values\n .map((v) => {\n if (v.includes(\",\") || v.includes('\"') || v.includes(\"\\n\")) {\n return `\"${v.replace(/\"/g, '\"\"')}\"`;\n }\n return v;\n })\n .join(\",\");\n}\n\nfunction flattenRow(row: Record<string, unknown>): Record<string, string> {\n const flat: Record<string, string> = {};\n for (const [key, val] of Object.entries(row)) {\n flat[key] = typeof val === \"object\" && val !== null ? JSON.stringify(val) : String(val ?? \"\");\n }\n return flat;\n}\n\n/**\n * One write per table: a line-by-line write piped into `head` hits a closed pipe on\n * the next line and crashes with EPIPE, where a single write lands in the pipe buffer.\n */\nfunction writeWhole(lines: string[]): void {\n process.stdout.write(`${lines.join(\"\\n\")}\\n`);\n}\n\nfunction writeAdsCsv(data: Array<Record<string, unknown>>, fields?: string[]): void {\n if (data.length === 0) return;\n const cols = fields ?? Object.keys(data[0] ?? {});\n const lines = [toCsvRow(cols)];\n for (const row of data) {\n const flat = flattenRow(row);\n lines.push(toCsvRow(cols.map((f) => flat[f] ?? \"\")));\n }\n writeWhole(lines);\n}\n\nfunction writeAdsJsonl(data: Array<Record<string, unknown>>): void {\n if (data.length === 0) return;\n writeWhole(data.map((row) => JSON.stringify(row)));\n}\n\n/** A `|` or line break in a name would split its cell and shift every later column. */\nfunction mdCell(value: string): string {\n return value.replace(/\\|/g, \"\\\\|\").replace(/\\r?\\n/g, \" \");\n}\n\nfunction writeAdsMd(data: Array<Record<string, unknown>>, fields?: string[]): void {\n if (data.length === 0) return;\n const cols = fields ?? Object.keys(data[0] ?? {});\n const lines = [`| ${cols.join(\" | \")} |`, `| ${cols.map(() => \"---\").join(\" | \")} |`];\n for (const row of data) {\n const flat = flattenRow(row);\n lines.push(`| ${cols.map((f) => mdCell(flat[f] ?? \"\")).join(\" | \")} |`);\n }\n writeWhole(lines);\n}\n\n/**\n * `hints` ride in the JSON envelope; csv/jsonl/md stdout has no room for them,\n * and an empty result is exactly when the hint matters, so they go to stderr.\n */\nexport function writeAdsOutput(\n data: Array<Record<string, unknown>>,\n format: string,\n fields?: string[],\n hints: string[] = [],\n): void {\n switch (format) {\n case \"csv\":\n writeAdsCsv(data, fields);\n break;\n case \"jsonl\":\n writeAdsJsonl(data);\n break;\n case \"md\":\n writeAdsMd(data, fields);\n break;\n default:\n writeJsonEnvelope(hints.length > 0 ? { ok: true, data, hints } : { ok: true, data });\n return;\n }\n for (const hint of hints) process.stderr.write(`${hint}\\n`);\n}\n\ninterface AccountInfo {\n id: string;\n name: string;\n access_type: \"direct\" | \"managed\";\n level: number;\n manager_id?: string;\n}\n\nasync function fetchAccounts(useCache = true): Promise<AccountInfo[]> {\n if (useCache) {\n const cached = cacheGet<AccountInfo[]>(\"accounts\", \"list\");\n if (cached) return cached.data;\n }\n const params = !useCache ? { \"skip-cache\": \"true\" } : undefined;\n const data = await apiGet<AccountInfo[]>(\"/api/ads/google/accounts\", params);\n if (useCache) {\n cacheSet(\"accounts\", \"list\", data, 60 * 60 * 1000);\n }\n return data;\n}\n\nexport async function resolveCustomerId(args: Record<string, unknown>): Promise<string> {\n const fromArgs = args[\"customer-id\"] as string | undefined;\n const customerId = fromArgs || getEnv().BAKER_GOOGLE_ADS_CUSTOMER_ID;\n\n if (customerId) {\n if (!/^\\d{10}$/.test(customerId)) {\n writeAdsJson({\n ok: false,\n error: {\n code: \"INVALID_CUSTOMER_ID\",\n message:\n \"Customer ID must be exactly 10 digits without dashes. Pass --customer-id or set BAKER_GOOGLE_ADS_CUSTOMER_ID.\",\n },\n });\n process.exit(1);\n }\n return customerId;\n }\n\n const useCache = !args[\"no-cache\"];\n\n try {\n const accounts = await fetchAccounts(useCache);\n const [single] = accounts;\n if (accounts.length === 1 && single) {\n process.stderr.write(`Using account \"${single.name}\" (${single.id})\\n`);\n return single.id;\n }\n if (accounts.length === 0) {\n handleConnectionError(\"google_ads\");\n }\n const list = accounts.map((a) => ` ${a.id} ${a.name}`).join(\"\\n\");\n writeAdsJson({\n ok: false,\n error: {\n code: \"MULTIPLE_ACCOUNTS\",\n message: `Multiple accounts found. Pass --customer-id or set BAKER_GOOGLE_ADS_CUSTOMER_ID:\\n${list}`,\n },\n });\n process.exit(1);\n } catch (err) {\n // \"No connection\" reaches here as a 404/403 from the accounts lookup. Reporting it as\n // an unusable customer id sends the agent hunting for an id that cannot exist yet.\n if (err instanceof ApiError && isNotConnectedError(err.code, err.message)) {\n handleConnectionError(\"google_ads\", err.message);\n }\n writeAdsJson({\n ok: false,\n error: {\n code: \"INVALID_CUSTOMER_ID\",\n message: \"Could not auto-detect account. Pass --customer-id or set BAKER_GOOGLE_ADS_CUSTOMER_ID.\",\n },\n });\n process.exit(1);\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -295,8 +295,6 @@ var ORGANIZATION_COMMANDS = [
|
|
|
295
295
|
"landing export list",
|
|
296
296
|
"site show",
|
|
297
297
|
"site domain list",
|
|
298
|
-
"lead-routes list",
|
|
299
|
-
"lead-routes fields",
|
|
300
298
|
"credentials list",
|
|
301
299
|
"setup-links list",
|
|
302
300
|
"media-sources list",
|
|
@@ -709,4 +707,4 @@ export {
|
|
|
709
707
|
offers,
|
|
710
708
|
applyAgentProfile
|
|
711
709
|
};
|
|
712
|
-
//# sourceMappingURL=chunk-
|
|
710
|
+
//# sourceMappingURL=chunk-ASRS37QE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/command-loading.ts","../src/profile-help.ts","../src/agent-profile.ts"],"sourcesContent":["import type { Resolvable, SubCommandsDef } from \"citty\";\n\n/**\n * Which command families one `baker` invocation has to load.\n *\n * Loading every family is what made each `baker` process hold ~135 MB of heap\n * while it waited on one HTTP call: twenty parallel agents ran sixty of them and\n * filled an 8 GB Runtime. A command needs its own family and nothing else.\n */\nexport function familiesToLoad(argv: readonly string[], families: readonly string[]): string[] | \"all\" {\n const first = argv.find((token) => !token.startsWith(\"-\"));\n // `schema` reads the registry every family fills as it loads.\n if (first !== undefined && first !== \"schema\" && families.includes(first)) return [first];\n return \"all\";\n}\n\nexport type LoadableCommand = { meta?: Resolvable<unknown>; subCommands?: Resolvable<SubCommandsDef> };\n\nasync function resolved<T>(value: Resolvable<T>): Promise<T> {\n return typeof value === \"function\" ? await (value as () => T | Promise<T>)() : await value;\n}\n\n/** The command's subcommands, loaded in place if they were declared lazily. */\nasync function subCommandsOf(command: LoadableCommand): Promise<SubCommandsDef | undefined> {\n if (command.subCommands === undefined) return undefined;\n const subCommands = await resolved(command.subCommands);\n command.subCommands = subCommands;\n return subCommands;\n}\n\n/**\n * The subcommand of `command` that `token` names, by its name or an alias, as\n * citty finds it — loaded in place. An alias lives in the subcommand's own\n * meta, so a token that is no name loads the siblings to read theirs.\n */\nexport async function loadSubCommandNamed(\n command: LoadableCommand,\n token: string,\n): Promise<[string, LoadableCommand] | null> {\n const subCommands = await subCommandsOf(command);\n if (!subCommands) return null;\n const named = subCommands[token];\n if (named !== undefined) {\n const loaded = await resolved(named);\n subCommands[token] = loaded;\n return [token, loaded];\n }\n for (const [name, sub] of Object.entries(subCommands)) {\n const loaded = await resolved(sub);\n subCommands[name] = loaded;\n const meta = (await resolved(loaded.meta ?? {})) as { alias?: unknown };\n const aliases = Array.isArray(meta.alias) ? meta.alias : meta.alias === undefined ? [] : [meta.alias];\n if (aliases.includes(token)) return [name, loaded];\n }\n return null;\n}\n\n/** Loads, in place, every command at every depth. */\nexport async function loadAllCommands(command: LoadableCommand): Promise<void> {\n const subCommands = await subCommandsOf(command);\n if (!subCommands) return;\n for (const [name, sub] of Object.entries(subCommands)) {\n const loaded = await resolved(sub);\n subCommands[name] = loaded;\n await loadAllCommands(loaded);\n }\n}\n\n/**\n * Loads, in place, the command `argv` names and every parent on the way — and\n * nothing else, so the flag guards in `cli.ts` see the command they judge while\n * its siblings stay unloaded. Everything loads for `schema` and an unknown\n * name, which need the whole tree. It stops at the first flag: the organization\n * guard (`agent-profile.ts`) walks on past one itself, and loads the subtree a\n * `--help` lists.\n */\nexport async function loadCommands<T extends LoadableCommand>(root: T, argv: readonly string[]): Promise<T> {\n const families = Object.keys((await subCommandsOf(root)) ?? {});\n if (familiesToLoad(argv, families) === \"all\") {\n await loadAllCommands(root);\n return root;\n }\n let command: LoadableCommand = root;\n for (const token of argv) {\n if (token === \"--\" || token.startsWith(\"-\")) break;\n const subCommands = await subCommandsOf(command);\n const sub = subCommands?.[token];\n if (!subCommands || sub === undefined) break;\n const loaded = await resolved(sub);\n subCommands[token] = loaded;\n command = loaded;\n }\n return root;\n}\n","/**\n * What a command's help says, for the agent reading it.\n *\n * Descriptions are written for a company's agent, which may run every command:\n * they cite writes as examples (`baker ads meta campaigns create …`) and say a\n * family \"lists campaigns, or stages writes\". Read by the organization's agent,\n * which may only read, each is a call it would make and be refused. So a line\n * that names a command the reader may not run leaves its help, and where a\n * family holds commands the reader may not run, so does the talk of staging\n * them. A family the reader may change whole (the organization's own Scheduled\n * agents) keeps its staging, because it is how that family works.\n */\n\nimport type { AgentProfile } from \"./agent-profile.ts\";\n\ntype HelpNode = { meta?: unknown; subCommands?: unknown };\ntype Offers = (path: string) => boolean;\n\nfunction loadedSubCommands(node: HelpNode): Array<[string, HelpNode]> {\n const subCommands = node.subCommands;\n if (typeof subCommands !== \"object\" || subCommands === null) return [];\n return Object.entries(subCommands as Record<string, unknown>).flatMap(([name, sub]) =>\n typeof sub === \"object\" && sub !== null ? [[name, sub as HelpNode] as [string, HelpNode]] : [],\n );\n}\n\nfunction subCommandNames(node: HelpNode): string[] {\n const subCommands = node.subCommands;\n return typeof subCommands === \"object\" && subCommands !== null ? Object.keys(subCommands) : [];\n}\n\n/**\n * The command words name (`baker <words>`, or a family's command in backticks),\n * as far as the tree reaches; none when the first is no family. Where the tree\n * is not loaded this far (another family, a sibling this call never needed),\n * the words as written stand for the command: `offers` reads a command by its\n * leading words, so an argument after them changes nothing.\n */\nfunction commandOf(root: HelpNode, mention: string): string[] {\n const words = mention.trim().split(/\\s+/);\n let node: HelpNode = root;\n const path: string[] = [];\n for (const word of words) {\n const loaded = loadedSubCommands(node).find(([name]) => name === word)?.[1];\n if (!loaded) {\n // Not loaded is not \"not there\": a lazy entry of that name stands for the words written.\n return subCommandNames(node).includes(word) ? [words.join(\" \")] : path.length > 0 ? [path.join(\" \")] : [];\n }\n node = loaded;\n path.push(word);\n }\n return [path.join(\" \")];\n}\n\nfunction indentOf(line: string): number {\n return line.length - line.trimStart().length;\n}\n\n/**\n * The lines without those `drops` says go, each taken with what continues it:\n * the lines indented under it, the next line after a trailing `\\`, and the rest\n * of a sentence wrapped onto the lines below. `drops` returns the kept text of\n * a line, or null to drop it.\n */\nfunction dropping(lines: string[], drops: (line: string) => string | null): string[] {\n const kept: string[] = [];\n let carried: ((line: string) => boolean) | null = null;\n for (const line of lines) {\n if (carried?.(line)) continue;\n carried = null;\n const rest = drops(line);\n if (rest !== null) {\n kept.push(rest);\n continue;\n }\n const indent = indentOf(line);\n if (/\\\\\\s*$/.test(line)) {\n let open = true;\n carried = (next) => {\n const continues = open;\n open = /\\\\\\s*$/.test(next);\n return continues;\n };\n } else if (indent === 0 && !/[.:!?)]\\s*$/.test(line)) {\n let open = true;\n carried = (next) => {\n const continues = open && next.trim() !== \"\" && indentOf(next) === 0;\n open = continues && !/[.:!?)]\\s*$/.test(next);\n return continues;\n };\n } else if (indent > 0) {\n carried = (next) => next.trim() !== \"\" && indentOf(next) > indent;\n }\n }\n return kept;\n}\n\n/** A line that stands alone — an example, a table row, a \"Label: …\" entry — goes whole. */\nconst STANDALONE_LINE = /^(?:\\s|baker\\b|[A-Z][\\w ]{0,30}:\\s)/;\n\nfunction balanced(text: string): boolean {\n return (text.match(/\\(/g)?.length ?? 0) === (text.match(/\\)/g)?.length ?? 0);\n}\n\n/** Each command the text names, at where it names it: `baker <words>`, or a family's `<words>` in backticks. */\nfunction commandMentions(root: HelpNode, text: string): Array<{ at: number; words: string }> {\n const families = new Set(subCommandNames(root));\n const quoted = [...text.matchAll(/`([a-z][\\w-]*(?:[ \\t][a-z][\\w-]*)*)(?=[`\\s<])/g)].filter((match) =>\n families.has((match[1] ?? \"\").split(/\\s+/)[0] ?? \"\"),\n );\n return [...text.matchAll(/`?\\bbaker ((?:[a-z][\\w-]*[ \\t]?)+)/g), ...quoted].map((match) => ({\n at: match.index,\n words: match[1] ?? \"\",\n }));\n}\n\n/**\n * Where the text first mentions something the reader may not use — a command\n * it is not offered, or a flag it is refused (`--add-trigger`) — or -1.\n */\nfunction firstUnusable(root: HelpNode, text: string, offered: Offers, refusedFlags: readonly string[]): number {\n const commands = commandMentions(root, text)\n .filter(({ words }) => commandOf(root, words).some((path) => !offered(path)))\n .map(({ at }) => at);\n const flags = refusedFlags.flatMap((flag) => {\n const match = new RegExp(`--${flag}(?![\\\\w-])`).exec(text);\n return match ? [match.index] : [];\n });\n const at = [...commands, ...flags];\n return at.length > 0 ? Math.min(...at) : -1;\n}\n\n/**\n * The sentence without what it says about something the reader may not use:\n * cut back to the clause before the mention when one stands on its own, else\n * dropped.\n */\nfunction sentenceWithout(sentence: string, unusableAt: number): string {\n if (unusableAt === -1) return sentence;\n const before = sentence.slice(0, unusableAt).replace(/`$/, \"\");\n const cut = Math.max(before.lastIndexOf(\", \"), before.lastIndexOf(\" — \"), before.lastIndexOf(\"; \"));\n const clause = cut === -1 ? \"\" : before.slice(0, cut).trim();\n // \"To undo one, `baker …`\" only led to the command.\n const leadsIn = /^(?:to|use|run|call|for|with)\\b/i.test(clause);\n return clause.split(/\\s+/).length >= 3 && balanced(clause) && !leadsIn ? `${clause}.` : \"\";\n}\n\n/** A sentence that leans on the one before it (\"It never touches a live tag.\"). */\nconst LEANS_BACK = /^(?:it|they|this|that|these|those)\\b/i;\n\n/** The text without any mention of a command the reader may not run, or a flag it is refused. */\nexport function withoutUnoffered(\n root: HelpNode,\n text: string,\n offered: Offers,\n refusedFlags: readonly string[] = [],\n): string {\n const unusable = (part: string) => firstUnusable(root, part, offered, refusedFlags);\n return dropping(text.split(\"\\n\"), (line) => {\n if (unusable(line) === -1) return line;\n if (STANDALONE_LINE.test(line)) return null;\n const kept: string[] = [];\n let dropped = false;\n for (const sentence of line.split(/(?<=[.!?])\\s+/)) {\n const rest: string = dropped && LEANS_BACK.test(sentence) ? \"\" : sentenceWithout(sentence, unusable(sentence));\n dropped = rest === \"\";\n if (rest !== \"\") kept.push(rest);\n }\n return kept.length === 0 ? null : kept.join(\" \");\n }).join(\"\\n\");\n}\n\n/** Whether anything loaded under `path` is a command the reader may not run. */\nfunction holdsUnoffered(node: HelpNode, path: string[], offered: Offers): boolean {\n return loadedSubCommands(node).some(\n ([name, sub]) => !offered([...path, name].join(\" \")) || holdsUnoffered(sub, [...path, name], offered),\n );\n}\n\n/** A sentence or line that is about staging a change, from its first words. */\nconst WRITE_TALK =\n /^(?:stage\\b|staged\\b|staging\\b|write subcommands\\b|writes\\b|then stage\\b|drafts:|staged vs published\\b|lifecycle:|nothing staged\\b|on publish\\b|\\w+(?: \\/ \\w+)*\\s+—\\s+stage\\b)/i;\n\n/** The tail of a sentence offering a change: \"List campaigns, or stage writes (…)\". */\nconst WRITE_CLAUSE =\n /(?:\\s*(?:[,;]|\\s—|\\s-)\\s*(?:(?:or|plus|and)\\s+)?|\\s+(?:or|plus|and)\\s+)(?:stage[sd]?|staged)\\b[^.]*/gi;\n\n/** \"List, show, amend or clear …\": a sentence opening on a list of this command's own verbs. */\nconst VERB_LIST = /^((?:[A-Za-z]+, )*[A-Za-z]+,? (?:or|and) [a-z]+)\\b/;\n\n/** The sentence naming, of the verbs it opens on, only those the reader may run; \"\" when none. */\nfunction withOfferedVerbs(sentence: string, children: ReadonlySet<string>, unoffered: ReadonlySet<string>): string {\n const list = VERB_LIST.exec(sentence)?.[1];\n if (!list) return sentence;\n const verbs = list.split(/,\\s*(?:(?:or|and)\\s+)?|\\s+(?:or|and)\\s+/).map((verb) => verb.toLowerCase());\n if (!verbs.every((verb) => children.has(verb))) return sentence;\n const kept = verbs.filter((verb) => !unoffered.has(verb));\n if (kept.length === 0) return \"\";\n const named = kept.length === 1 ? (kept[0] ?? \"\") : `${kept.slice(0, -1).join(\", \")} or ${kept.at(-1)}`;\n return `${named.charAt(0).toUpperCase()}${named.slice(1)}${sentence.slice(list.length)}`;\n}\n\n/** Whether text opens on the name of a command here the reader may not run (\"Release if…\", \" associate-campaign / …\"). */\nfunction opensOnUnoffered(text: string, unoffered: ReadonlySet<string>): boolean {\n const first =\n text\n .trim()\n .split(/[\\s/]+/)[0]\n ?.toLowerCase() ?? \"\";\n return unoffered.has(first);\n}\n\n/** A line that is about a change: staging talk, a command it may not run, or \"Library writes (…):\" over reads. */\nfunction isWriteLine(line: string, unoffered: ReadonlySet<string>): boolean {\n if (WRITE_TALK.test(line.trim())) return true;\n if (indentOf(line) > 0) return opensOnUnoffered(line, unoffered);\n return /:\\s*$/.test(line) && /\\bwrites?\\b/i.test(line);\n}\n\nfunction withoutWriteTalk(paragraph: string, children: ReadonlySet<string>, unoffered: ReadonlySet<string>): string {\n const prose = (text: string) =>\n text\n .replace(WRITE_CLAUSE, \"\")\n .split(/(?<=[.!?])\\s+/)\n .map((sentence) => withOfferedVerbs(sentence, children, unoffered))\n .filter(\n (sentence) => sentence !== \"\" && !WRITE_TALK.test(sentence.trim()) && !opensOnUnoffered(sentence, unoffered),\n )\n .join(\" \");\n const lines = paragraph.split(\"\\n\");\n // Examples, tables and headings are kept line by line, and a line of prose among them sentence by sentence.\n if (lines.some((line) => /^\\s/.test(line) || STANDALONE_LINE.test(line) || /:\\s*$/.test(line))) {\n return dropping(lines, (line) => {\n if (isWriteLine(line, unoffered)) return null;\n if (indentOf(line) > 0 || STANDALONE_LINE.test(line) || !/[.!?]\\s*$/.test(line)) return line;\n const kept = prose(line);\n return kept === \"\" ? null : kept;\n }).join(\"\\n\");\n }\n return prose(lines.join(\" \"));\n}\n\n/** \"Subcommands: list (default), remove, clear.\" names only the ones the reader may run. */\nfunction withOfferedSubcommands(text: string, path: string[], offered: Offers): string {\n return text.replace(/Subcommands: ([^.]*)\\./g, (_whole, list: string) => {\n const kept = list.split(/,\\s*/).filter((item) => offered([...path, item.split(/\\s/)[0] ?? \"\"].join(\" \")));\n return kept.length > 0 ? `Subcommands: ${kept.join(\", \")}.` : \"\";\n });\n}\n\n/** Drops a heading whose block below it was emptied, and the blank lines left behind. */\nfunction tidy(text: string): string {\n const lines = text.split(\"\\n\");\n const kept = lines.filter((line, index) => {\n if (!/:\\s*$/.test(line)) return true;\n const next = lines.slice(index + 1).find((later) => later.trim() !== \"\");\n return next !== undefined && /^\\s/.test(next) && lines[index + 1]?.trim() !== \"\";\n });\n return kept\n .join(\"\\n\")\n .replace(/\\n{3,}/g, \"\\n\\n\")\n .replace(/^(?:[ \\t]*\\n)+/, \"\")\n .trimEnd();\n}\n\nexport function describedFor(\n root: HelpNode,\n description: string,\n path: string[],\n node: HelpNode,\n profile: AgentProfile,\n offered: Offers,\n refusedFlags: readonly string[] = [],\n): string {\n const cited = withoutUnoffered(root, description, offered, refusedFlags);\n if (profile === \"company\" || !holdsUnoffered(node, path, offered)) return tidy(cited);\n const children = new Set(subCommandNames(node));\n const unoffered = new Set([...children].filter((name) => !offered([...path, name].join(\" \"))));\n const shaped = cited\n .split(/\\n\\s*\\n/)\n .map((paragraph) => withoutWriteTalk(withOfferedSubcommands(paragraph, path, offered), children, unoffered))\n .join(\"\\n\\n\");\n const text = tidy(shaped);\n if (text !== \"\") return text;\n const reads = loadedSubCommands(node).flatMap(([name]) => (offered([...path, name].join(\" \")) ? [name] : []));\n return reads.length > 0 ? `Read: ${reads.join(\", \")}.` : \"\";\n}\n","import { type LoadableCommand, loadAllCommands, loadSubCommandNamed } from \"./command-loading.ts\";\nimport { optionalWorkspaceKind } from \"./env.ts\";\nimport { describedFor, withoutUnoffered } from \"./profile-help.ts\";\n\n/**\n * Which commands this CLI offers the agent running it.\n *\n * One CLI serves two agents. A company's agent works inside its own workspace\n * and changes it; it is offered everything, except the organization family,\n * which is for reading other companies and means nothing to it. The\n * organization workspace's agent reads every company of its organization and\n * changes none of them: it is offered the reads alone, plus the research and\n * judgment it runs as itself, and its own Scheduled agents.\n *\n * This is what the agent is shown, not what it is allowed: the backend refuses\n * a write naming a company whatever the CLI does (`readNamedCompany`). Kept as\n * an explicit list so a new command is hidden from the organization until\n * someone decides it only reads.\n */\n\nexport type AgentProfile = \"company\" | \"organization\";\n\n/** Set on the organization workspace's Runtime (`runtimeSession/nodeActions.ts`). */\nexport function agentProfile(workspaceKind: string | undefined = optionalWorkspaceKind()): AgentProfile {\n return workspaceKind === \"organization\" ? \"organization\" : \"company\";\n}\n\n/** Families only the organization workspace runs: hidden from a company's agent. */\nconst ORGANIZATION_ONLY = [\"organization\"];\n\n/**\n * Every command the organization workspace's agent is offered, as typed. An\n * entry offers that command and everything under it.\n */\nexport const ORGANIZATION_COMMANDS: readonly string[] = [\n \"schema\",\n \"capabilities\",\n \"organization\",\n // What a company did and has.\n \"chats\",\n \"history\",\n \"actions list\",\n \"actions log\",\n \"actions get\",\n \"actions status\",\n \"actions draft list\",\n \"actions tags list\",\n // The organization's own Scheduled agents, which live in this workspace:\n // staged like a company's, applied at Publish. Naming a company is still a\n // read only (`readNamedCompany`), so none of these reaches one.\n \"scheduled-agents\",\n \"experiment status\",\n \"experiment history\",\n \"flows list\",\n \"flows show\",\n \"flows schema\",\n \"testimonials get\",\n \"testimonials search\",\n \"testimonials list\",\n \"testimonials tags list\",\n \"testimonials sources list\",\n \"images get\",\n \"images search\",\n \"images library\",\n \"images tags list\",\n // A page's or a link's pictures and videos, to the workspace's own disk: a\n // client's logo, the photos on its site, the video it sent. Firecrawl reads\n // the page; nothing reaches any library (`--auto-ingest` is refused below).\n \"images download\",\n \"images extract\",\n \"videos get\",\n \"videos search\",\n \"videos tags list\",\n \"videos fetch\",\n \"studio get\",\n \"studio list\",\n \"avatars list\",\n \"avatars get\",\n \"creatives performance\",\n \"creatives feedback read\",\n \"landing export status\",\n \"landing export list\",\n \"site show\",\n \"site domain list\",\n \"credentials list\",\n \"setup-links list\",\n \"media-sources list\",\n \"posts list\",\n \"posts get\",\n \"posts search\",\n \"mcp connected\",\n \"mcp catalog\",\n \"mcp tools\",\n \"mcp execute\",\n \"mcp list\",\n // Ads, every platform: accounts, structure, results, staged drafts.\n \"ads google accounts\",\n \"ads google currency\",\n \"ads google url-options\",\n \"ads google changes\",\n \"ads google invoices\",\n \"ads google identity-verification\",\n \"ads google previews\",\n \"ads google brands\",\n \"ads google query\",\n \"ads google keywords discover\",\n \"ads google keywords metrics\",\n \"ads google keywords forecast\",\n \"ads google keywords themes\",\n \"ads google keywords locations\",\n \"ads google keywords languages\",\n \"ads google keywords list\",\n \"ads google budgets list\",\n \"ads google campaigns list\",\n \"ads google ad-groups list\",\n \"ads google negative-keywords list\",\n \"ads google keyword-lists list\",\n \"ads google ads list\",\n \"ads google assets list\",\n \"ads google asset-groups list\",\n \"ads google audiences list\",\n \"ads google audiences targeting\",\n \"ads google conversions list\",\n \"ads google bidding-strategies list\",\n \"ads google labels list\",\n \"ads google campaign-criteria list\",\n \"ads google ad-group-criteria list\",\n \"ads google ad-group-bid-modifiers list\",\n \"ads google account-exclusions list\",\n \"ads google asset-group-signals list\",\n \"ads google merchant-center list\",\n \"ads google draft list\",\n \"ads google draft show\",\n \"ads meta accounts\",\n \"ads meta account\",\n \"ads meta businesses\",\n \"ads meta pages\",\n \"ads meta lead-forms list\",\n \"ads meta leads\",\n \"ads meta campaigns list\",\n \"ads meta adsets list\",\n \"ads meta ads list\",\n \"ads meta creatives list\",\n \"ads meta audiences list\",\n \"ads meta custom-conversions list\",\n \"ads meta pixels\",\n \"ads meta activities\",\n \"ads meta insights\",\n \"ads meta draft list\",\n \"ads meta draft show\",\n \"ads linkedin accounts\",\n \"ads linkedin account detail\",\n \"ads linkedin campaign-groups list\",\n \"ads linkedin campaigns list\",\n \"ads linkedin creatives list\",\n \"ads linkedin draft list\",\n \"ads linkedin draft show\",\n \"ads linkedin analytics\",\n \"ads linkedin demographics\",\n \"ads linkedin companies\",\n \"ads linkedin top-companies\",\n \"ads linkedin resolve\",\n \"ads linkedin facets list\",\n \"ads linkedin facets values\",\n \"ads linkedin audience-size\",\n \"ads linkedin bid-pricing\",\n \"ads linkedin forecast\",\n \"ads linkedin leads\",\n \"ads linkedin conversions list\",\n \"ads linkedin conversions health\",\n \"ads linkedin conversation\",\n \"ads linkedin audit\",\n \"ads linkedin url-params\",\n \"ads x accounts\",\n \"ads x funding\",\n \"ads x campaigns list\",\n \"ads x line-items list\",\n \"ads x promoted-tweets list\",\n \"ads x tweets\",\n \"ads x cards\",\n \"ads x draft list\",\n \"ads x draft show\",\n \"ads x media\",\n \"ads x audiences\",\n \"ads x targeting-criteria list\",\n \"ads x targeting-constants\",\n \"ads x active-entities\",\n \"ads x stats job-status\",\n \"ads chatgpt account show\",\n \"ads chatgpt campaigns list\",\n \"ads chatgpt ad-groups list\",\n \"ads chatgpt ads list\",\n \"ads chatgpt conversions list\",\n \"ads chatgpt conversions events\",\n \"ads chatgpt conversions report\",\n \"ads chatgpt audiences list\",\n \"ads chatgpt catalogs list\",\n \"ads chatgpt catalogs uploads\",\n \"ads chatgpt catalogs products\",\n \"ads chatgpt history\",\n \"ads chatgpt insights\",\n \"ads chatgpt locations\",\n \"ads chatgpt draft list\",\n \"ads chatgpt draft show\",\n // Baker's synced copy of every platform's results, which the live reads above\n // point at first. Reads only: each `show` beside its staged changes.\n \"ads performance overview\",\n \"ads performance trend\",\n // Who the ads brought: counts per ad and per persona answer, and the ladder\n // and persona map they are counted by (`adPerformance/peopleRoute.ts`).\n \"ads performance people\",\n \"ads performance personas\",\n \"ads performance ladder\",\n \"ads performance persona-fields\",\n \"ads performance accounts\",\n \"ads performance setup\",\n \"ads performance entities\",\n \"ads performance entity\",\n \"ads performance changes\",\n \"ads performance impact\",\n \"ads performance creatives\",\n \"ads performance families show\",\n \"ads performance families choices\",\n \"ads performance creative-health\",\n \"ads performance creative-assets\",\n \"ads performance health\",\n \"ads performance breakdown\",\n \"ads performance search-terms\",\n \"ads performance pacing\",\n \"ads performance funnel\",\n \"ads performance tracking\",\n \"ads performance landings\",\n \"ads performance live-in\",\n \"ads performance status\",\n \"ads performance goals show\",\n \"ads performance progress\",\n \"ads performance diagnose\",\n \"ads performance pulse\",\n \"ads performance anomalies\",\n \"ads performance recap\",\n \"ads performance targets show\",\n \"ads performance budget-recommendations\",\n \"ads performance attention show\",\n \"ads performance currency show\",\n \"ads performance brand-split\",\n \"ads performance impression-share\",\n \"ads performance keyword-quality\",\n \"ads performance google-report\",\n \"ads performance budgets show\",\n \"ads performance segments show\",\n // Pages and measurement.\n \"analytics overview\",\n \"analytics traffic\",\n \"analytics funnel\",\n \"analytics flow\",\n \"analytics page\",\n \"analytics triggers\",\n \"analytics releases\",\n \"analytics paid\",\n \"analytics delivery\",\n \"analytics submissions\",\n \"analytics geo\",\n \"analytics bots\",\n \"analytics landings\",\n \"analytics tags\",\n \"analytics events\",\n \"analytics feed\",\n \"analytics lookup\",\n \"analytics devices\",\n \"analytics ads\",\n \"analytics conversions\",\n \"analytics sends\",\n \"analytics tracking\",\n \"analytics arrivals\",\n \"analytics sending-events\",\n \"analytics sources\",\n \"analytics website-tag\",\n \"analytics sites\",\n \"analytics questionnaire\",\n \"analytics presets\",\n \"funnel\",\n \"ga4 properties\",\n \"ga4 config\",\n \"ga4 audit\",\n \"ga4 query\",\n \"ga4 draft list\",\n \"ga4 draft show\",\n \"gsc\",\n \"tags list\",\n \"tags draft\",\n \"tag-manager containers\",\n \"tag-manager read\",\n \"tag-manager draft list\",\n \"tag-manager draft show\",\n // CRM and accounts.\n \"hubspot\",\n \"accounts influenced\",\n \"accounts engagement\",\n \"accounts warm\",\n \"accounts company\",\n \"accounts campaigns\",\n \"accounts crm status\",\n \"accounts crm check\",\n \"accounts crm contract\",\n // Research and judgment, run as the workspace itself (never with --company).\n // Not `research customers`, which writes into a company's Knowledge, nor\n // `winning-ads fit`, which judges an ad against a company's own COMPANY.md.\n \"research web\",\n \"research fetch\",\n \"research linkedin-person\",\n \"research transcript\",\n \"research company\",\n \"research google-ads\",\n \"research reddit\",\n \"research advertisers\",\n \"research autocomplete\",\n \"research countries\",\n \"research intent\",\n \"research keyword-metrics\",\n \"research keywords-for-site\",\n \"research keyword-gap\",\n \"research languages\",\n \"research lighthouse\",\n \"research relevant-pages\",\n \"decide\",\n \"winning-ads search\",\n \"winning-ads advertisers\",\n // Adds a brand to Baker's shared library with nobody following it, so a\n // client being set up can be read there: its channels, ads and landings.\n \"winning-ads add\",\n \"winning-ads discover\",\n \"winning-ads following\",\n \"winning-ads feed\",\n \"winning-ads winners\",\n \"winning-ads ads\",\n \"winning-ads profile\",\n \"winning-ads launches\",\n \"winning-ads landings\",\n \"winning-ads search-copy\",\n \"winning-ads content\",\n \"winning-ads hooks\",\n \"winning-ads mechanisms\",\n \"winning-ads formats\",\n];\n\nfunction covers(entry: string, path: string): boolean {\n return path === entry || path.startsWith(`${entry} `);\n}\n\n/**\n * Whether `path` (a command as typed, `\"ads meta campaigns list\"`) is offered\n * to `profile`. A group is offered when anything under it is, so the way to an\n * offered command stays open.\n */\nexport function offers(profile: AgentProfile, path: string): boolean {\n if (path === \"\") return true;\n if (profile === \"company\") {\n return !ORGANIZATION_ONLY.some((family) => covers(family, path));\n }\n return ORGANIZATION_COMMANDS.some((entry) => covers(entry, path) || covers(path, entry));\n}\n\n/**\n * The flags that change something, on commands the organization is offered to\n * read. `funnel` reads the funnel and `funnel --add-trigger` changes it, so the\n * command is offered and these are refused, and left out of its help.\n */\nexport const ORGANIZATION_WRITE_FLAGS: Readonly<Record<string, readonly string[]>> = {\n \"images extract\": [\"auto-ingest\", \"context\"],\n funnel: [\"steps\", \"step\", \"add-trigger\", \"remove-trigger\", \"event\", \"remove-step\", \"preset\"],\n \"analytics conversions\": [\"event\", \"name\", \"rename\", \"to\", \"remove-name\", \"count-mode\", \"remove\"],\n \"analytics sends\": [\n \"set\",\n \"source-event\",\n \"from\",\n \"platform\",\n \"tag\",\n \"event\",\n \"account\",\n \"parameter\",\n \"id\",\n \"remove\",\n ],\n \"analytics sources\": [\n \"server\",\n \"create\",\n \"create-hubspot\",\n \"create-activecampaign\",\n \"events\",\n \"account\",\n \"set-trigger\",\n \"set-amount\",\n \"amount-property\",\n \"currency\",\n \"write\",\n \"name\",\n \"map\",\n \"field\",\n \"pause\",\n \"resume\",\n \"remove\",\n ],\n \"analytics sites\": [\"add\", \"remove\"],\n};\n\nfunction kebabCase(name: string): string {\n return name.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`);\n}\n\n/** The first flag in `argv` the organization is refused on the command at `path`, if any. */\nfunction refusedFlagIn(path: string, argv: readonly string[]): string | null {\n const refused = ORGANIZATION_WRITE_FLAGS[path];\n if (!refused) return null;\n const end = argv.indexOf(\"--\");\n for (const token of end === -1 ? argv : argv.slice(0, end)) {\n if (!token.startsWith(\"--\")) continue;\n const name = kebabCase(token.slice(2).split(\"=\")[0] ?? \"\").replace(/^no-/, \"\");\n if (refused.includes(name)) return name;\n }\n return null;\n}\n\ntype ProfiledCommand = { meta?: unknown; subCommands?: unknown };\n\n/** What the organization's agent is told when it reaches for a command it is not offered. */\nexport const ORGANIZATION_REFUSAL =\n \"The organization workspace only reads its companies, and this command changes something. A change to a company is made in that company's own chat; here, read it and show it in a Report.\";\n\nfunction hide(command: ProfiledCommand): void {\n if (typeof command.meta === \"object\" && command.meta !== null) {\n (command.meta as { hidden?: boolean }).hidden = true;\n }\n}\n\n/**\n * Rewrites, in place, what each loaded command `profile` is shown says\n * (`profile-help.ts`), and takes off it the flags `profile` is refused. Args are\n * replaced rather than edited: one definition can be shared between commands.\n */\nfunction describeOffered(root: ProfiledCommand, command: ProfiledCommand, profile: AgentProfile, path: string[]): void {\n const meta = command.meta as { hidden?: boolean; description?: unknown } | undefined;\n if (meta?.hidden === true) return;\n const offered = (cited: string) => offers(profile, cited);\n const refusedFlags = profile === \"organization\" ? (ORGANIZATION_WRITE_FLAGS[path.join(\" \")] ?? []) : [];\n if (typeof meta?.description === \"string\") {\n meta.description = describedFor(root, meta.description, path, command, profile, offered, refusedFlags);\n }\n const shaped = command as { args?: unknown };\n if (typeof shaped.args === \"object\" && shaped.args !== null) {\n shaped.args = Object.fromEntries(\n Object.entries(shaped.args as Record<string, unknown>).flatMap(([name, arg]) => {\n if (refusedFlags.includes(kebabCase(name))) return [];\n const description = (arg as { description?: unknown } | null)?.description;\n return [\n [\n name,\n typeof description === \"string\"\n ? { ...(arg as object), description: withoutUnoffered(root, description, offered, refusedFlags) }\n : arg,\n ],\n ];\n }),\n );\n }\n const subCommands = command.subCommands;\n if (typeof subCommands !== \"object\" || subCommands === null) return;\n for (const [name, sub] of Object.entries(subCommands as Record<string, unknown>)) {\n if (typeof sub === \"object\" && sub !== null)\n describeOffered(root, sub as ProfiledCommand, profile, [...path, name]);\n }\n}\n\n/** Marks, in place, every loaded command `profile` is not offered as hidden from help. */\nfunction hideUnoffered(command: ProfiledCommand, profile: AgentProfile, path: string[]): void {\n const subCommands = command.subCommands;\n if (typeof subCommands !== \"object\" || subCommands === null) return;\n for (const [name, sub] of Object.entries(subCommands as Record<string, unknown>)) {\n if (typeof sub !== \"object\" || sub === null) continue;\n const subPath = [...path, name];\n if (!offers(profile, subPath.join(\" \"))) hide(sub as ProfiledCommand);\n hideUnoffered(sub as ProfiledCommand, profile, subPath);\n }\n}\n\ntype ArgDefinition = { type?: unknown; alias?: unknown };\n\nfunction camelCase(name: string): string {\n return name.replace(/-([a-z0-9])/g, (_, letter: string) => letter.toUpperCase());\n}\n\nfunction aliases(of: unknown): unknown[] {\n return Array.isArray(of) ? of : of === undefined ? [] : [of];\n}\n\n/** Whether `flag` takes the token after it as its value on `command`, as citty reads it. */\nfunction takesValue(command: ProfiledCommand & { args?: unknown }, flag: string): boolean {\n if (flag.includes(\"=\") || typeof command.args !== \"object\" || command.args === null) return false;\n const name = flag.replace(/^-{1,2}/, \"\");\n return Object.entries(command.args as Record<string, ArgDefinition>).some(\n ([key, definition]) =>\n (definition.type === \"string\" || definition.type === \"enum\") &&\n (camelCase(key) === camelCase(name) || aliases(definition.alias).includes(name)),\n );\n}\n\n/**\n * The command `argv` addresses, found the way citty finds it: flags, and the\n * value after one that takes it, are skipped, so a flag before a command's name\n * cannot leave the path at its group. Each step is loaded on the way —\n * `loadCommands` stops at the first flag, and `--company` is taken off only\n * after it ran, so the guard cannot lean on what it loaded.\n */\nasync function addressedCommand(\n root: ProfiledCommand,\n argv: readonly string[],\n): Promise<{ path: string; command: ProfiledCommand }> {\n const path: string[] = [];\n let command: ProfiledCommand = root;\n for (let index = 0; index < argv.length; index++) {\n const token = argv[index] ?? \"\";\n if (token === \"--\") break;\n if (token.startsWith(\"-\")) {\n if (takesValue(command, token)) index++;\n continue;\n }\n const next = await loadSubCommandNamed(command as LoadableCommand, token);\n if (!next) break;\n path.push(next[0]);\n command = next[1] as ProfiledCommand;\n }\n return { path: path.join(\" \"), command };\n}\n\n/**\n * Shapes the loaded command tree for the agent running it: what it is not\n * offered leaves its help, and the organization's agent is refused a command it\n * is not offered (the returned message; `null` when it may run). A company's\n * agent is never refused: the organization's commands are only out of its help,\n * because a Report published from the organization workspace runs them on a\n * runner that has no profile of its own.\n */\nexport async function applyAgentProfile(\n root: ProfiledCommand,\n profile: AgentProfile,\n argv: readonly string[],\n): Promise<string | null> {\n const { path, command } = await addressedCommand(root, argv);\n // A walk that ends on a group prints its usage — `--help` anywhere, past `--`\n // too, or no command or an unknown one — listing its subcommands, which are\n // hidden only once loaded. A walk that reaches a command loads nothing more.\n await loadAllCommands(command as LoadableCommand);\n // Judged before the help is shaped, which takes the refused flags off the command.\n const refused = profile === \"organization\" && (!offers(profile, path) || refusedFlagIn(path, argv) !== null);\n hideUnoffered(root, profile, []);\n describeOffered(root, root, profile, []);\n return refused ? ORGANIZATION_REFUSAL : null;\n}\n"],"mappings":"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,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA;AAAA,EAIA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA;AAAA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA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","names":["aliases","at"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
writeJsonEnvelope
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-6DPSWLGY.js";
|
|
4
4
|
import {
|
|
5
5
|
PEOPLE_PREVIEW_ROWS,
|
|
6
6
|
maskedPersonValueIssue
|
|
@@ -24023,4 +24023,4 @@ export {
|
|
|
24023
24023
|
runChatgptRead,
|
|
24024
24024
|
runChatgptListRead
|
|
24025
24025
|
};
|
|
24026
|
-
//# sourceMappingURL=chunk-
|
|
24026
|
+
//# sourceMappingURL=chunk-C3IO4R4B.js.map
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
import {
|
|
8
8
|
connectionFixExplanation,
|
|
9
9
|
isNotConnectedError
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-6DPSWLGY.js";
|
|
11
11
|
|
|
12
12
|
// src/commands/ads/google/during-literals.ts
|
|
13
13
|
var GAQL_DURING_LITERALS = [
|
|
@@ -843,4 +843,4 @@ export {
|
|
|
843
843
|
resolveChangesWindow,
|
|
844
844
|
parseApiError
|
|
845
845
|
};
|
|
846
|
-
//# sourceMappingURL=chunk-
|
|
846
|
+
//# sourceMappingURL=chunk-DHVFI7AE.js.map
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
handleConnectionError,
|
|
20
20
|
isNotConnectedError,
|
|
21
21
|
writeJsonEnvelope
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-6DPSWLGY.js";
|
|
23
23
|
import {
|
|
24
24
|
GOOGLE_DRAFT_BATCH_MAX,
|
|
25
25
|
OP_TOO_LARGE_FIX,
|
|
@@ -673,4 +673,4 @@ export {
|
|
|
673
673
|
fileCreateCommand,
|
|
674
674
|
bidModifierFlag
|
|
675
675
|
};
|
|
676
|
-
//# sourceMappingURL=chunk-
|
|
676
|
+
//# sourceMappingURL=chunk-DN6ZZTQE.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
writeJsonEnvelope
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-6DPSWLGY.js";
|
|
4
4
|
import {
|
|
5
5
|
apiGet
|
|
6
6
|
} from "./chunk-X7VQFLHI.js";
|
|
@@ -23,4 +23,4 @@ export {
|
|
|
23
23
|
AVAILABLE_ARG,
|
|
24
24
|
writeAvailableAccounts
|
|
25
25
|
};
|
|
26
|
-
//# sourceMappingURL=chunk-
|
|
26
|
+
//# sourceMappingURL=chunk-FCHZ5TNG.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
handleLinkedinError,
|
|
3
3
|
resolveAccountIdArg
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-VXWG4ZS2.js";
|
|
5
5
|
import {
|
|
6
6
|
adCopyHints,
|
|
7
7
|
booleanWordPositionalError,
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
} from "./chunk-D5FY4FAK.js";
|
|
13
13
|
import {
|
|
14
14
|
writeJsonEnvelope
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-6DPSWLGY.js";
|
|
16
16
|
import {
|
|
17
17
|
LINKEDIN_DRAFT_BATCH_MAX,
|
|
18
18
|
linkedinDraftOpInputSchema,
|
|
@@ -355,4 +355,4 @@ export {
|
|
|
355
355
|
requireTarget,
|
|
356
356
|
requireTargets
|
|
357
357
|
};
|
|
358
|
-
//# sourceMappingURL=chunk-
|
|
358
|
+
//# sourceMappingURL=chunk-GX5333QH.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
handleConnectionError,
|
|
5
5
|
needsConnectionFix,
|
|
6
6
|
writeJsonEnvelope
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-6DPSWLGY.js";
|
|
8
8
|
import {
|
|
9
9
|
ApiError,
|
|
10
10
|
apiGet
|
|
@@ -71,4 +71,4 @@ ${list}`
|
|
|
71
71
|
export {
|
|
72
72
|
resolveSiteUrl
|
|
73
73
|
};
|
|
74
|
-
//# sourceMappingURL=chunk-
|
|
74
|
+
//# sourceMappingURL=chunk-HCQJYI6X.js.map
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
import {
|
|
6
6
|
isNotConnectedError,
|
|
7
7
|
writeJsonEnvelope
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-6DPSWLGY.js";
|
|
9
9
|
import {
|
|
10
10
|
ApiError,
|
|
11
11
|
apiPost
|
|
@@ -188,4 +188,4 @@ export {
|
|
|
188
188
|
draftAction,
|
|
189
189
|
draftList
|
|
190
190
|
};
|
|
191
|
-
//# sourceMappingURL=chunk-
|
|
191
|
+
//# sourceMappingURL=chunk-HHVWV5BJ.js.map
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
handleConnectionError,
|
|
3
3
|
isNotConnectedError,
|
|
4
4
|
writeAdsJson
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-6DPSWLGY.js";
|
|
6
6
|
import {
|
|
7
7
|
ApiError
|
|
8
8
|
} from "./chunk-X7VQFLHI.js";
|
|
@@ -73,4 +73,4 @@ function exitWithServiceReadError(err) {
|
|
|
73
73
|
export {
|
|
74
74
|
exitWithServiceReadError
|
|
75
75
|
};
|
|
76
|
-
//# sourceMappingURL=chunk-
|
|
76
|
+
//# sourceMappingURL=chunk-I3WGTSDY.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
handleConnectionError,
|
|
5
5
|
needsConnectionFix,
|
|
6
6
|
writeAdsJson
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-6DPSWLGY.js";
|
|
8
8
|
import {
|
|
9
9
|
ApiError,
|
|
10
10
|
apiGet
|
|
@@ -103,4 +103,4 @@ export {
|
|
|
103
103
|
resolveXAccountId,
|
|
104
104
|
resolveXAccountTimezone
|
|
105
105
|
};
|
|
106
|
-
//# sourceMappingURL=chunk-
|
|
106
|
+
//# sourceMappingURL=chunk-IDSDJHRS.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
handleMetaError,
|
|
6
6
|
resolveAccountIdArg
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-M7QZSEHF.js";
|
|
8
8
|
import {
|
|
9
9
|
repeatedValues
|
|
10
10
|
} from "./chunk-ERSX3MKH.js";
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
} from "./chunk-D5FY4FAK.js";
|
|
19
19
|
import {
|
|
20
20
|
writeJsonEnvelope
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-6DPSWLGY.js";
|
|
22
22
|
import {
|
|
23
23
|
apiPost
|
|
24
24
|
} from "./chunk-X7VQFLHI.js";
|
|
@@ -204,4 +204,4 @@ export {
|
|
|
204
204
|
stageOps,
|
|
205
205
|
stageStatusChange
|
|
206
206
|
};
|
|
207
|
-
//# sourceMappingURL=chunk-
|
|
207
|
+
//# sourceMappingURL=chunk-ILPHIYAL.js.map
|
|
@@ -3,11 +3,11 @@ import {
|
|
|
3
3
|
} from "./chunk-FIN4ZXGJ.js";
|
|
4
4
|
import {
|
|
5
5
|
resolveXAccountId
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-IDSDJHRS.js";
|
|
7
7
|
import {
|
|
8
8
|
writeAdsJson,
|
|
9
9
|
writeJsonEnvelope
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-6DPSWLGY.js";
|
|
11
11
|
import {
|
|
12
12
|
X_DRAFT_BATCH_MAX,
|
|
13
13
|
xDraftOpInputSchema
|
|
@@ -166,4 +166,4 @@ export {
|
|
|
166
166
|
requireTarget,
|
|
167
167
|
requireTargets
|
|
168
168
|
};
|
|
169
|
-
//# sourceMappingURL=chunk-
|
|
169
|
+
//# sourceMappingURL=chunk-IPO33JRU.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
agentProfile
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ASRS37QE.js";
|
|
4
4
|
import {
|
|
5
5
|
AUTO_PUBLISH_REFUSAL,
|
|
6
6
|
MAX_AI_CONDITION_CHARS,
|
|
@@ -426,4 +426,4 @@ export {
|
|
|
426
426
|
reactionBody,
|
|
427
427
|
chatBody
|
|
428
428
|
};
|
|
429
|
-
//# sourceMappingURL=chunk-
|
|
429
|
+
//# sourceMappingURL=chunk-KGYTIPS2.js.map
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
import {
|
|
6
6
|
isNotConnectedError,
|
|
7
7
|
writeJsonEnvelope
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-6DPSWLGY.js";
|
|
9
9
|
import {
|
|
10
10
|
ApiError,
|
|
11
11
|
apiPost
|
|
@@ -146,4 +146,4 @@ export {
|
|
|
146
146
|
draftAction,
|
|
147
147
|
draftList
|
|
148
148
|
};
|
|
149
|
-
//# sourceMappingURL=chunk-
|
|
149
|
+
//# sourceMappingURL=chunk-LNODLR7W.js.map
|