@koda-sl/baker-cli 0.568.0 → 0.569.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (346) hide show
  1. package/README.md +3 -3
  2. package/dist/{account-D2AGXMM3.js → account-MYM2QNFO.js} +4 -4
  3. package/dist/{account-OCFXNHG7.js → account-OUKPRB7C.js} +3 -3
  4. package/dist/{account-U6DFMD2V.js → account-YJ2NNQYP.js} +4 -4
  5. package/dist/{account-assets-W7K2PUYB.js → account-assets-HOOPV5KR.js} +8 -8
  6. package/dist/{account-level-Z2JEIJ3X.js → account-level-3QWMJTZQ.js} +5 -5
  7. package/dist/{account-reads-WPKD2LPB.js → account-reads-RKK5BA6L.js} +4 -4
  8. package/dist/{account-users-BK45DBUH.js → account-users-GHMPDZUM.js} +4 -4
  9. package/dist/{account-writes-QSJ74QFR.js → account-writes-HEXKGWXC.js} +4 -4
  10. package/dist/{accounts-VSJVFIPH.js → accounts-DDNEHXXT.js} +2 -2
  11. package/dist/{accounts-3DS67RX7.js → accounts-K7VD47FG.js} +4 -4
  12. package/dist/{accounts-55PDBEDN.js → accounts-OSVXKNSI.js} +4 -4
  13. package/dist/{accounts-FALANOYX.js → accounts-S7CEGWJL.js} +4 -4
  14. package/dist/{accounts-AK4QIG24.js → accounts-SJOO4MQX.js} +4 -4
  15. package/dist/{active-entities-HR7NJJLU.js → active-entities-4KQQSMRZ.js} +3 -3
  16. package/dist/{activities-DEWHKBID.js → activities-FRA33VZZ.js} +4 -4
  17. package/dist/{ad-group-writes-QBHOPTT5.js → ad-group-writes-O2OP4NJ6.js} +4 -4
  18. package/dist/{ad-groups-JZDUFT6J.js → ad-groups-AMMMWHHX.js} +8 -8
  19. package/dist/{ad-writes-QYJO4IB3.js → ad-writes-IWLRLR2E.js} +4 -4
  20. package/dist/{ads-JYSYXF3U.js → ads-7TQKAH4B.js} +7 -7
  21. package/dist/{ads-UMSWEI5X.js → ads-KLSFKXUE.js} +9 -9
  22. package/dist/{ads-QKVNPHBH.js → ads-L6SMNOUM.js} +13 -13
  23. package/dist/{adsets-FEVYHKAQ.js → adsets-R75LSEV5.js} +12 -12
  24. package/dist/{analytics-7QSUKFXF.js → analytics-ITBXTEIC.js} +10 -10
  25. package/dist/{analytics-DR4DPUP4.js → analytics-WXLRAXXN.js} +3 -3
  26. package/dist/{asset-writes-7RFZZYU7.js → asset-writes-DECROLE3.js} +5 -5
  27. package/dist/{audience-size-6CZ2AZCK.js → audience-size-23UFSW6H.js} +3 -3
  28. package/dist/{audience-writes-RUGU6KEC.js → audience-writes-VSC2BY4Y.js} +4 -4
  29. package/dist/{audiences-RSAUXKHR.js → audiences-76S4WY7Q.js} +4 -4
  30. package/dist/{audiences-7OS2ZJYO.js → audiences-RN745R53.js} +3 -3
  31. package/dist/{audiences-6GVUZUCN.js → audiences-V773XHP2.js} +9 -9
  32. package/dist/{audit-4L7IKIRY.js → audit-BIHMDO5K.js} +3 -3
  33. package/dist/{audit-Q66O3Z46.js → audit-OT42WBII.js} +3 -3
  34. package/dist/{bid-pricing-LUWEWGCJ.js → bid-pricing-UHU2HOAP.js} +3 -3
  35. package/dist/{businesses-42NZP6FP.js → businesses-HECSW3EL.js} +3 -3
  36. package/dist/{campaign-groups-SZSO5B6C.js → campaign-groups-TAVIZR4L.js} +9 -9
  37. package/dist/{campaign-writes-GKNH2EHV.js → campaign-writes-72OPCWMG.js} +4 -4
  38. package/dist/{campaign-writes-AN4IHY5G.js → campaign-writes-AQ5T5TII.js} +4 -4
  39. package/dist/{campaigns-RDHQNOTI.js → campaigns-3P2UZWPD.js} +8 -8
  40. package/dist/{campaigns-VLVV2PPO.js → campaigns-D2V423FD.js} +12 -12
  41. package/dist/{campaigns-7RV65SXR.js → campaigns-NW2H7SAR.js} +8 -8
  42. package/dist/{campaigns-TO74Z7UH.js → campaigns-S62KEFVL.js} +12 -12
  43. package/dist/{cards-CAOGPPG4.js → cards-RYQN5JLR.js} +3 -3
  44. package/dist/{catalogs-7IEXGLSR.js → catalogs-G33WT5PS.js} +4 -4
  45. package/dist/{catalogs-5LWEXG5X.js → catalogs-XLWWM2Q3.js} +4 -4
  46. package/dist/{changes-WWZYTLC6.js → changes-SI2W2PZL.js} +3 -3
  47. package/dist/{chatgpt-ZI4GWP6S.js → chatgpt-PPWG5WOF.js} +13 -13
  48. package/dist/{chunk-TPGFX47R.js → chunk-23RVCBL7.js} +2 -2
  49. package/dist/{chunk-YVFHDZ3K.js → chunk-2VW7S77J.js} +3 -3
  50. package/dist/{chunk-ULIQNJ5J.js → chunk-4OQG4HBG.js} +3 -3
  51. package/dist/{chunk-2LBQNTTH.js → chunk-4PAGS7QH.js} +2 -2
  52. package/dist/{chunk-6IR7IQPV.js → chunk-5C4RRCKM.js} +2 -2
  53. package/dist/{chunk-OTRKBCUB.js → chunk-5ZHXLY7Y.js} +2 -2
  54. package/dist/{chunk-5H6N36LS.js → chunk-7TVVYP7K.js} +2 -2
  55. package/dist/{chunk-NTFNLVZG.js → chunk-A4O3JL6D.js} +2 -2
  56. package/dist/{chunk-2DAWUWA4.js → chunk-ANRTDNPQ.js} +2 -2
  57. package/dist/{chunk-ILGRC7LJ.js → chunk-B2BQ2Q64.js} +2 -2
  58. package/dist/{chunk-FWHEAR7F.js → chunk-DRQI2CJJ.js} +2 -2
  59. package/dist/{chunk-KZQQ6OLC.js → chunk-FB5OU5HZ.js} +3 -3
  60. package/dist/{chunk-N2TXADL7.js → chunk-FUIGPJZZ.js} +2 -2
  61. package/dist/{chunk-OSQTSS27.js → chunk-J32CYEIH.js} +2 -2
  62. package/dist/{chunk-UYZ4FUC7.js → chunk-JED4JBIK.js} +3 -3
  63. package/dist/{chunk-RBCO3C3Q.js → chunk-MK4HCMEA.js} +3 -2
  64. package/dist/{chunk-RBCO3C3Q.js.map → chunk-MK4HCMEA.js.map} +1 -1
  65. package/dist/{chunk-R4RWQ6YX.js → chunk-OLPABGH3.js} +2 -2
  66. package/dist/{chunk-C3EX5OKN.js → chunk-QUSDGZFS.js} +2 -2
  67. package/dist/{chunk-OASXBRXQ.js → chunk-QZSNT67Z.js} +2 -2
  68. package/dist/{chunk-3E74OM2E.js → chunk-RF3TP643.js} +2 -2
  69. package/dist/{chunk-WBWEKZQ2.js → chunk-RIRSFFWA.js} +2 -2
  70. package/dist/{chunk-JHS5PE5Y.js → chunk-VMZ62LHB.js} +37 -29
  71. package/dist/chunk-VMZ62LHB.js.map +1 -0
  72. package/dist/{chunk-CI3QSB6G.js → chunk-W743FIEY.js} +2 -2
  73. package/dist/{chunk-YD6OZSSY.js → chunk-ZICB4OI5.js} +2 -2
  74. package/dist/cli.js +10 -10
  75. package/dist/{companies-X6O55ACG.js → companies-DQKUPFWT.js} +3 -3
  76. package/dist/{config-NDL2YP37.js → config-GIETKZGS.js} +3 -3
  77. package/dist/{conversation-J22BH6O5.js → conversation-YHKIB3CU.js} +3 -3
  78. package/dist/{conversion-report-76S5JOVT.js → conversion-report-JV6WZLB3.js} +3 -3
  79. package/dist/{conversion-upload-command-5OILW65U.js → conversion-upload-command-LXJYNNCK.js} +3 -3
  80. package/dist/{conversion-writes-6HX665JT.js → conversion-writes-NH3DKRQX.js} +4 -4
  81. package/dist/{conversions-I2ZOQHKJ.js → conversions-E2KOXF3N.js} +8 -8
  82. package/dist/{conversions-QZJRF4WN.js → conversions-TKPTZJVM.js} +6 -6
  83. package/dist/{copy-writes-X2LM5I4Z.js → copy-writes-FP3EI5LI.js} +5 -5
  84. package/dist/{creatives-4G2V4J6N.js → creatives-5EIDMQ66.js} +9 -9
  85. package/dist/{creatives-SFPNXJ6Z.js → creatives-N7V2BSOW.js} +7 -7
  86. package/dist/{crm-HODCOAAI.js → crm-PMPO6QJE.js} +2 -2
  87. package/dist/{currency-BZUNQ4XJ.js → currency-NFKS6PRB.js} +3 -3
  88. package/dist/{custom-conversions-UHRBVUD2.js → custom-conversions-BFMGX2M3.js} +6 -6
  89. package/dist/{demographics-OFBRSF7A.js → demographics-CPMNWMBZ.js} +3 -3
  90. package/dist/{discover-PDSEJR2P.js → discover-DDYFCWQL.js} +2 -2
  91. package/dist/{draft-44KTLX4P.js → draft-2EVXU5XB.js} +4 -4
  92. package/dist/{draft-QN5XXOS6.js → draft-4UTNI7BT.js} +5 -5
  93. package/dist/{draft-PCXWAA2Y.js → draft-BCRW4RLR.js} +4 -4
  94. package/dist/{draft-6MWXURYC.js → draft-CQPEGNPP.js} +5 -5
  95. package/dist/{draft-RSKZSUOS.js → draft-CQWYTMSS.js} +4 -4
  96. package/dist/{draft-CKFSZDVI.js → draft-JYZA3BFD.js} +4 -4
  97. package/dist/{draft-WOE7KQ7T.js → draft-VT7DAOB7.js} +5 -5
  98. package/dist/{experiment-AZUKJ7ZO.js → experiment-YAX26BOO.js} +2 -2
  99. package/dist/{experiments-2DX4K3AQ.js → experiments-ZEN2H3RV.js} +4 -4
  100. package/dist/{facets-OLRASLT7.js → facets-RNC4D4UH.js} +3 -3
  101. package/dist/{forecast-7DZGLC7Y.js → forecast-YIDXHMST.js} +3 -3
  102. package/dist/{forecast-3KMAJJWJ.js → forecast-YO6BNYX7.js} +4 -4
  103. package/dist/{funding-BSAHWU35.js → funding-QDKFNQI2.js} +3 -3
  104. package/dist/{funnel-2ALYZ3GP.js → funnel-M3SRPZQT.js} +2 -2
  105. package/dist/{ga4-YVKA3V4V.js → ga4-N6EBLN2W.js} +15 -15
  106. package/dist/{google-RTDPHVLU.js → google-KTVWAA7F.js} +22 -22
  107. package/dist/{gsc-OJDMSP6H.js → gsc-FILOUFCG.js} +4 -4
  108. package/dist/{history-LXRFZNW7.js → history-QATQCGVQ.js} +4 -4
  109. package/dist/{hubspot-MRUCRJLL.js → hubspot-IJERD4KT.js} +3 -3
  110. package/dist/{insights-LZJZGNJZ.js → insights-AVNMRFQ4.js} +3 -3
  111. package/dist/{insights-H6M6VI43.js → insights-OZ2EXOHH.js} +3 -3
  112. package/dist/{instant-experiences-J4GSS3Y6.js → instant-experiences-M2JYG2QS.js} +4 -4
  113. package/dist/{job-UFGGBDG7.js → job-OJB6KIDV.js} +3 -3
  114. package/dist/{job-create-XM4NH322.js → job-create-C6FGCDW4.js} +3 -3
  115. package/dist/{job-status-47L5Z57J.js → job-status-4RJHESID.js} +3 -3
  116. package/dist/{languages-SVTYYYOC.js → languages-27QCKMNL.js} +2 -2
  117. package/dist/{leads-SEEJ3KRR.js → leads-AEXWNBAT.js} +4 -4
  118. package/dist/{leads-HFB5UXZJ.js → leads-O2NLCYDO.js} +3 -3
  119. package/dist/{line-item-writes-VEJ5Y6X4.js → line-item-writes-VSP6WEYK.js} +4 -4
  120. package/dist/{line-items-U6L2TMPG.js → line-items-BQ2CKMGL.js} +8 -8
  121. package/dist/{linkedin-SY2WZWKP.js → linkedin-YALC66DF.js} +31 -31
  122. package/dist/{locations-5SLLGWZO.js → locations-EA5VGY56.js} +3 -3
  123. package/dist/{locations-7EBZ6KRH.js → locations-OS24BBXE.js} +2 -2
  124. package/dist/{lookup-OU6CLATK.js → lookup-QNLX2535.js} +3 -3
  125. package/dist/{media-YKCCMLXL.js → media-5SWJCRHI.js} +3 -3
  126. package/dist/{media-DGV2AMZI.js → media-WGIEUEZW.js} +3 -3
  127. package/dist/{meta-5TRG7RTQ.js → meta-DRDMT5X4.js} +39 -39
  128. package/dist/{metrics-WRERNMRK.js → metrics-NCAYDJNO.js} +2 -2
  129. package/dist/{output-7X5WPPCA.js → output-HZW7LNUL.js} +2 -2
  130. package/dist/{page-photos-VYJU4RNQ.js → page-photos-PDSKTR2Z.js} +4 -4
  131. package/dist/{pages-6YMPZDEY.js → pages-UH6XEZBO.js} +3 -3
  132. package/dist/{pixels-WTTLC4O5.js → pixels-GY4LKGJK.js} +4 -4
  133. package/dist/{pixels-DZDVNIVL.js → pixels-PYNK73UG.js} +3 -3
  134. package/dist/{plan-JAWESWJN.js → plan-4OYUV2EF.js} +3 -3
  135. package/dist/{preview-JZXGR4KN.js → preview-7E4E3QPT.js} +3 -3
  136. package/dist/{preview-3UOBVP6M.js → preview-NP3OFLT6.js} +3 -3
  137. package/dist/{promoted-tweet-writes-6Y4MDPBH.js → promoted-tweet-writes-XILB6VCP.js} +4 -4
  138. package/dist/{promoted-tweets-JAR2W6KC.js → promoted-tweets-CBYZG6BG.js} +5 -5
  139. package/dist/{properties-Z5S3LRJ5.js → properties-RDOGNY2O.js} +3 -3
  140. package/dist/{query-KKXCMH3Q.js → query-K7R5GQ4E.js} +3 -3
  141. package/dist/{query-3QFT42PG.js → query-LJS64SEQ.js} +4 -4
  142. package/dist/{query-QXKGVHZL.js → query-PO3RT7BR.js} +3 -3
  143. package/dist/{questionnaire-U7UYICEA.js → questionnaire-4OH6K2BF.js} +2 -2
  144. package/dist/{read-ENUS7P3L.js → read-MU5XGWMK.js} +4 -4
  145. package/dist/{resolve-JRSSTIAF.js → resolve-FCAP4LQ3.js} +3 -3
  146. package/dist/{revenue-Q2JK5VY6.js → revenue-VFML2I5V.js} +4 -4
  147. package/dist/{rule-writes-WT6DQZZE.js → rule-writes-KWJNFMJV.js} +4 -4
  148. package/dist/{rules-Y75KR2PC.js → rules-NRH2X4BM.js} +9 -9
  149. package/dist/{sends-4ZO6BNZ4.js → sends-I2B6F5NW.js} +2 -2
  150. package/dist/{shared-UPMEBTVP.js → shared-Z7INVKCZ.js} +3 -3
  151. package/dist/{shopify-HGFUHYT7.js → shopify-AUDLALBS.js} +4 -4
  152. package/dist/{sitemaps-P3K5Z4TW.js → sitemaps-EOMSRKOD.js} +3 -3
  153. package/dist/{sites-TURWC53D.js → sites-6M73AONG.js} +4 -4
  154. package/dist/{sources-7ZFY3VEZ.js → sources-OR36YOTG.js} +2 -2
  155. package/dist/{stats-XNKAJD2Z.js → stats-MFEH2TSW.js} +5 -5
  156. package/dist/{studies-5G67ODR2.js → studies-XNJXWD7I.js} +7 -7
  157. package/dist/{study-writes-34BJFZAZ.js → study-writes-MFAJQHXK.js} +4 -4
  158. package/dist/{sync-QVEUQKU5.js → sync-SI25TKY5.js} +3 -3
  159. package/dist/{tag-manager-3GIW6BPB.js → tag-manager-JFC6YYVP.js} +9 -9
  160. package/dist/{targeting-TVZPIUUI.js → targeting-ZBGR2PSX.js} +4 -4
  161. package/dist/{targeting-constants-RJS2STR5.js → targeting-constants-RF2732EW.js} +3 -3
  162. package/dist/{targeting-criteria-SMBIEM7U.js → targeting-criteria-HU7OAJUA.js} +5 -5
  163. package/dist/{terms-AATAGKPT.js → terms-XFL6QO7A.js} +2 -2
  164. package/dist/{themes-5HKRO5RR.js → themes-SUNQVNES.js} +4 -4
  165. package/dist/{top-companies-PY2NL2GS.js → top-companies-MSLNT33I.js} +3 -3
  166. package/dist/{tweets-MLDLLLDB.js → tweets-6PQHJXJC.js} +3 -3
  167. package/dist/{unstage-65DUBYNZ.js → unstage-O23ILHCY.js} +2 -2
  168. package/dist/{url-options-4J3FRXHO.js → url-options-NZAS37S5.js} +3 -3
  169. package/dist/{url-params-TGCGWKAJ.js → url-params-LUQMABZX.js} +3 -3
  170. package/dist/{videos-NITQKILV.js → videos-AHOLXU42.js} +3 -3
  171. package/dist/{write-commands-SIOVTRHH.js → write-commands-5OFOD7TE.js} +10 -10
  172. package/dist/{write-commands-XLZCRVTU.js → write-commands-LHEJESKL.js} +3 -3
  173. package/dist/{write-commands-OBQPQUIE.js → write-commands-SD6DXVNK.js} +3 -3
  174. package/dist/{write-commands-VQPEHKH7.js → write-commands-UEQR7ZXO.js} +4 -4
  175. package/dist/{x-PW43O6JS.js → x-UNSHYLJJ.js} +15 -15
  176. package/package.json +1 -1
  177. package/dist/chunk-JHS5PE5Y.js.map +0 -1
  178. /package/dist/{account-D2AGXMM3.js.map → account-MYM2QNFO.js.map} +0 -0
  179. /package/dist/{account-OCFXNHG7.js.map → account-OUKPRB7C.js.map} +0 -0
  180. /package/dist/{account-U6DFMD2V.js.map → account-YJ2NNQYP.js.map} +0 -0
  181. /package/dist/{account-assets-W7K2PUYB.js.map → account-assets-HOOPV5KR.js.map} +0 -0
  182. /package/dist/{account-level-Z2JEIJ3X.js.map → account-level-3QWMJTZQ.js.map} +0 -0
  183. /package/dist/{account-reads-WPKD2LPB.js.map → account-reads-RKK5BA6L.js.map} +0 -0
  184. /package/dist/{account-users-BK45DBUH.js.map → account-users-GHMPDZUM.js.map} +0 -0
  185. /package/dist/{account-writes-QSJ74QFR.js.map → account-writes-HEXKGWXC.js.map} +0 -0
  186. /package/dist/{accounts-VSJVFIPH.js.map → accounts-DDNEHXXT.js.map} +0 -0
  187. /package/dist/{accounts-3DS67RX7.js.map → accounts-K7VD47FG.js.map} +0 -0
  188. /package/dist/{accounts-55PDBEDN.js.map → accounts-OSVXKNSI.js.map} +0 -0
  189. /package/dist/{accounts-FALANOYX.js.map → accounts-S7CEGWJL.js.map} +0 -0
  190. /package/dist/{accounts-AK4QIG24.js.map → accounts-SJOO4MQX.js.map} +0 -0
  191. /package/dist/{active-entities-HR7NJJLU.js.map → active-entities-4KQQSMRZ.js.map} +0 -0
  192. /package/dist/{activities-DEWHKBID.js.map → activities-FRA33VZZ.js.map} +0 -0
  193. /package/dist/{ad-group-writes-QBHOPTT5.js.map → ad-group-writes-O2OP4NJ6.js.map} +0 -0
  194. /package/dist/{ad-groups-JZDUFT6J.js.map → ad-groups-AMMMWHHX.js.map} +0 -0
  195. /package/dist/{ad-writes-QYJO4IB3.js.map → ad-writes-IWLRLR2E.js.map} +0 -0
  196. /package/dist/{ads-JYSYXF3U.js.map → ads-7TQKAH4B.js.map} +0 -0
  197. /package/dist/{ads-UMSWEI5X.js.map → ads-KLSFKXUE.js.map} +0 -0
  198. /package/dist/{ads-QKVNPHBH.js.map → ads-L6SMNOUM.js.map} +0 -0
  199. /package/dist/{adsets-FEVYHKAQ.js.map → adsets-R75LSEV5.js.map} +0 -0
  200. /package/dist/{analytics-7QSUKFXF.js.map → analytics-ITBXTEIC.js.map} +0 -0
  201. /package/dist/{analytics-DR4DPUP4.js.map → analytics-WXLRAXXN.js.map} +0 -0
  202. /package/dist/{asset-writes-7RFZZYU7.js.map → asset-writes-DECROLE3.js.map} +0 -0
  203. /package/dist/{audience-size-6CZ2AZCK.js.map → audience-size-23UFSW6H.js.map} +0 -0
  204. /package/dist/{audience-writes-RUGU6KEC.js.map → audience-writes-VSC2BY4Y.js.map} +0 -0
  205. /package/dist/{audiences-RSAUXKHR.js.map → audiences-76S4WY7Q.js.map} +0 -0
  206. /package/dist/{audiences-7OS2ZJYO.js.map → audiences-RN745R53.js.map} +0 -0
  207. /package/dist/{audiences-6GVUZUCN.js.map → audiences-V773XHP2.js.map} +0 -0
  208. /package/dist/{audit-4L7IKIRY.js.map → audit-BIHMDO5K.js.map} +0 -0
  209. /package/dist/{audit-Q66O3Z46.js.map → audit-OT42WBII.js.map} +0 -0
  210. /package/dist/{bid-pricing-LUWEWGCJ.js.map → bid-pricing-UHU2HOAP.js.map} +0 -0
  211. /package/dist/{businesses-42NZP6FP.js.map → businesses-HECSW3EL.js.map} +0 -0
  212. /package/dist/{campaign-groups-SZSO5B6C.js.map → campaign-groups-TAVIZR4L.js.map} +0 -0
  213. /package/dist/{campaign-writes-GKNH2EHV.js.map → campaign-writes-72OPCWMG.js.map} +0 -0
  214. /package/dist/{campaign-writes-AN4IHY5G.js.map → campaign-writes-AQ5T5TII.js.map} +0 -0
  215. /package/dist/{campaigns-RDHQNOTI.js.map → campaigns-3P2UZWPD.js.map} +0 -0
  216. /package/dist/{campaigns-VLVV2PPO.js.map → campaigns-D2V423FD.js.map} +0 -0
  217. /package/dist/{campaigns-7RV65SXR.js.map → campaigns-NW2H7SAR.js.map} +0 -0
  218. /package/dist/{campaigns-TO74Z7UH.js.map → campaigns-S62KEFVL.js.map} +0 -0
  219. /package/dist/{cards-CAOGPPG4.js.map → cards-RYQN5JLR.js.map} +0 -0
  220. /package/dist/{catalogs-7IEXGLSR.js.map → catalogs-G33WT5PS.js.map} +0 -0
  221. /package/dist/{catalogs-5LWEXG5X.js.map → catalogs-XLWWM2Q3.js.map} +0 -0
  222. /package/dist/{changes-WWZYTLC6.js.map → changes-SI2W2PZL.js.map} +0 -0
  223. /package/dist/{chatgpt-ZI4GWP6S.js.map → chatgpt-PPWG5WOF.js.map} +0 -0
  224. /package/dist/{chunk-TPGFX47R.js.map → chunk-23RVCBL7.js.map} +0 -0
  225. /package/dist/{chunk-YVFHDZ3K.js.map → chunk-2VW7S77J.js.map} +0 -0
  226. /package/dist/{chunk-ULIQNJ5J.js.map → chunk-4OQG4HBG.js.map} +0 -0
  227. /package/dist/{chunk-2LBQNTTH.js.map → chunk-4PAGS7QH.js.map} +0 -0
  228. /package/dist/{chunk-6IR7IQPV.js.map → chunk-5C4RRCKM.js.map} +0 -0
  229. /package/dist/{chunk-OTRKBCUB.js.map → chunk-5ZHXLY7Y.js.map} +0 -0
  230. /package/dist/{chunk-5H6N36LS.js.map → chunk-7TVVYP7K.js.map} +0 -0
  231. /package/dist/{chunk-NTFNLVZG.js.map → chunk-A4O3JL6D.js.map} +0 -0
  232. /package/dist/{chunk-2DAWUWA4.js.map → chunk-ANRTDNPQ.js.map} +0 -0
  233. /package/dist/{chunk-ILGRC7LJ.js.map → chunk-B2BQ2Q64.js.map} +0 -0
  234. /package/dist/{chunk-FWHEAR7F.js.map → chunk-DRQI2CJJ.js.map} +0 -0
  235. /package/dist/{chunk-KZQQ6OLC.js.map → chunk-FB5OU5HZ.js.map} +0 -0
  236. /package/dist/{chunk-N2TXADL7.js.map → chunk-FUIGPJZZ.js.map} +0 -0
  237. /package/dist/{chunk-OSQTSS27.js.map → chunk-J32CYEIH.js.map} +0 -0
  238. /package/dist/{chunk-UYZ4FUC7.js.map → chunk-JED4JBIK.js.map} +0 -0
  239. /package/dist/{chunk-R4RWQ6YX.js.map → chunk-OLPABGH3.js.map} +0 -0
  240. /package/dist/{chunk-C3EX5OKN.js.map → chunk-QUSDGZFS.js.map} +0 -0
  241. /package/dist/{chunk-OASXBRXQ.js.map → chunk-QZSNT67Z.js.map} +0 -0
  242. /package/dist/{chunk-3E74OM2E.js.map → chunk-RF3TP643.js.map} +0 -0
  243. /package/dist/{chunk-WBWEKZQ2.js.map → chunk-RIRSFFWA.js.map} +0 -0
  244. /package/dist/{chunk-CI3QSB6G.js.map → chunk-W743FIEY.js.map} +0 -0
  245. /package/dist/{chunk-YD6OZSSY.js.map → chunk-ZICB4OI5.js.map} +0 -0
  246. /package/dist/{companies-X6O55ACG.js.map → companies-DQKUPFWT.js.map} +0 -0
  247. /package/dist/{config-NDL2YP37.js.map → config-GIETKZGS.js.map} +0 -0
  248. /package/dist/{conversation-J22BH6O5.js.map → conversation-YHKIB3CU.js.map} +0 -0
  249. /package/dist/{conversion-report-76S5JOVT.js.map → conversion-report-JV6WZLB3.js.map} +0 -0
  250. /package/dist/{conversion-upload-command-5OILW65U.js.map → conversion-upload-command-LXJYNNCK.js.map} +0 -0
  251. /package/dist/{conversion-writes-6HX665JT.js.map → conversion-writes-NH3DKRQX.js.map} +0 -0
  252. /package/dist/{conversions-I2ZOQHKJ.js.map → conversions-E2KOXF3N.js.map} +0 -0
  253. /package/dist/{conversions-QZJRF4WN.js.map → conversions-TKPTZJVM.js.map} +0 -0
  254. /package/dist/{copy-writes-X2LM5I4Z.js.map → copy-writes-FP3EI5LI.js.map} +0 -0
  255. /package/dist/{creatives-4G2V4J6N.js.map → creatives-5EIDMQ66.js.map} +0 -0
  256. /package/dist/{creatives-SFPNXJ6Z.js.map → creatives-N7V2BSOW.js.map} +0 -0
  257. /package/dist/{crm-HODCOAAI.js.map → crm-PMPO6QJE.js.map} +0 -0
  258. /package/dist/{currency-BZUNQ4XJ.js.map → currency-NFKS6PRB.js.map} +0 -0
  259. /package/dist/{custom-conversions-UHRBVUD2.js.map → custom-conversions-BFMGX2M3.js.map} +0 -0
  260. /package/dist/{demographics-OFBRSF7A.js.map → demographics-CPMNWMBZ.js.map} +0 -0
  261. /package/dist/{discover-PDSEJR2P.js.map → discover-DDYFCWQL.js.map} +0 -0
  262. /package/dist/{draft-44KTLX4P.js.map → draft-2EVXU5XB.js.map} +0 -0
  263. /package/dist/{draft-QN5XXOS6.js.map → draft-4UTNI7BT.js.map} +0 -0
  264. /package/dist/{draft-PCXWAA2Y.js.map → draft-BCRW4RLR.js.map} +0 -0
  265. /package/dist/{draft-6MWXURYC.js.map → draft-CQPEGNPP.js.map} +0 -0
  266. /package/dist/{draft-RSKZSUOS.js.map → draft-CQWYTMSS.js.map} +0 -0
  267. /package/dist/{draft-CKFSZDVI.js.map → draft-JYZA3BFD.js.map} +0 -0
  268. /package/dist/{draft-WOE7KQ7T.js.map → draft-VT7DAOB7.js.map} +0 -0
  269. /package/dist/{experiment-AZUKJ7ZO.js.map → experiment-YAX26BOO.js.map} +0 -0
  270. /package/dist/{experiments-2DX4K3AQ.js.map → experiments-ZEN2H3RV.js.map} +0 -0
  271. /package/dist/{facets-OLRASLT7.js.map → facets-RNC4D4UH.js.map} +0 -0
  272. /package/dist/{forecast-7DZGLC7Y.js.map → forecast-YIDXHMST.js.map} +0 -0
  273. /package/dist/{forecast-3KMAJJWJ.js.map → forecast-YO6BNYX7.js.map} +0 -0
  274. /package/dist/{funding-BSAHWU35.js.map → funding-QDKFNQI2.js.map} +0 -0
  275. /package/dist/{funnel-2ALYZ3GP.js.map → funnel-M3SRPZQT.js.map} +0 -0
  276. /package/dist/{ga4-YVKA3V4V.js.map → ga4-N6EBLN2W.js.map} +0 -0
  277. /package/dist/{google-RTDPHVLU.js.map → google-KTVWAA7F.js.map} +0 -0
  278. /package/dist/{gsc-OJDMSP6H.js.map → gsc-FILOUFCG.js.map} +0 -0
  279. /package/dist/{history-LXRFZNW7.js.map → history-QATQCGVQ.js.map} +0 -0
  280. /package/dist/{hubspot-MRUCRJLL.js.map → hubspot-IJERD4KT.js.map} +0 -0
  281. /package/dist/{insights-LZJZGNJZ.js.map → insights-AVNMRFQ4.js.map} +0 -0
  282. /package/dist/{insights-H6M6VI43.js.map → insights-OZ2EXOHH.js.map} +0 -0
  283. /package/dist/{instant-experiences-J4GSS3Y6.js.map → instant-experiences-M2JYG2QS.js.map} +0 -0
  284. /package/dist/{job-UFGGBDG7.js.map → job-OJB6KIDV.js.map} +0 -0
  285. /package/dist/{job-create-XM4NH322.js.map → job-create-C6FGCDW4.js.map} +0 -0
  286. /package/dist/{job-status-47L5Z57J.js.map → job-status-4RJHESID.js.map} +0 -0
  287. /package/dist/{languages-SVTYYYOC.js.map → languages-27QCKMNL.js.map} +0 -0
  288. /package/dist/{leads-SEEJ3KRR.js.map → leads-AEXWNBAT.js.map} +0 -0
  289. /package/dist/{leads-HFB5UXZJ.js.map → leads-O2NLCYDO.js.map} +0 -0
  290. /package/dist/{line-item-writes-VEJ5Y6X4.js.map → line-item-writes-VSP6WEYK.js.map} +0 -0
  291. /package/dist/{line-items-U6L2TMPG.js.map → line-items-BQ2CKMGL.js.map} +0 -0
  292. /package/dist/{linkedin-SY2WZWKP.js.map → linkedin-YALC66DF.js.map} +0 -0
  293. /package/dist/{locations-5SLLGWZO.js.map → locations-EA5VGY56.js.map} +0 -0
  294. /package/dist/{locations-7EBZ6KRH.js.map → locations-OS24BBXE.js.map} +0 -0
  295. /package/dist/{lookup-OU6CLATK.js.map → lookup-QNLX2535.js.map} +0 -0
  296. /package/dist/{media-YKCCMLXL.js.map → media-5SWJCRHI.js.map} +0 -0
  297. /package/dist/{media-DGV2AMZI.js.map → media-WGIEUEZW.js.map} +0 -0
  298. /package/dist/{meta-5TRG7RTQ.js.map → meta-DRDMT5X4.js.map} +0 -0
  299. /package/dist/{metrics-WRERNMRK.js.map → metrics-NCAYDJNO.js.map} +0 -0
  300. /package/dist/{output-7X5WPPCA.js.map → output-HZW7LNUL.js.map} +0 -0
  301. /package/dist/{page-photos-VYJU4RNQ.js.map → page-photos-PDSKTR2Z.js.map} +0 -0
  302. /package/dist/{pages-6YMPZDEY.js.map → pages-UH6XEZBO.js.map} +0 -0
  303. /package/dist/{pixels-WTTLC4O5.js.map → pixels-GY4LKGJK.js.map} +0 -0
  304. /package/dist/{pixels-DZDVNIVL.js.map → pixels-PYNK73UG.js.map} +0 -0
  305. /package/dist/{plan-JAWESWJN.js.map → plan-4OYUV2EF.js.map} +0 -0
  306. /package/dist/{preview-JZXGR4KN.js.map → preview-7E4E3QPT.js.map} +0 -0
  307. /package/dist/{preview-3UOBVP6M.js.map → preview-NP3OFLT6.js.map} +0 -0
  308. /package/dist/{promoted-tweet-writes-6Y4MDPBH.js.map → promoted-tweet-writes-XILB6VCP.js.map} +0 -0
  309. /package/dist/{promoted-tweets-JAR2W6KC.js.map → promoted-tweets-CBYZG6BG.js.map} +0 -0
  310. /package/dist/{properties-Z5S3LRJ5.js.map → properties-RDOGNY2O.js.map} +0 -0
  311. /package/dist/{query-KKXCMH3Q.js.map → query-K7R5GQ4E.js.map} +0 -0
  312. /package/dist/{query-3QFT42PG.js.map → query-LJS64SEQ.js.map} +0 -0
  313. /package/dist/{query-QXKGVHZL.js.map → query-PO3RT7BR.js.map} +0 -0
  314. /package/dist/{questionnaire-U7UYICEA.js.map → questionnaire-4OH6K2BF.js.map} +0 -0
  315. /package/dist/{read-ENUS7P3L.js.map → read-MU5XGWMK.js.map} +0 -0
  316. /package/dist/{resolve-JRSSTIAF.js.map → resolve-FCAP4LQ3.js.map} +0 -0
  317. /package/dist/{revenue-Q2JK5VY6.js.map → revenue-VFML2I5V.js.map} +0 -0
  318. /package/dist/{rule-writes-WT6DQZZE.js.map → rule-writes-KWJNFMJV.js.map} +0 -0
  319. /package/dist/{rules-Y75KR2PC.js.map → rules-NRH2X4BM.js.map} +0 -0
  320. /package/dist/{sends-4ZO6BNZ4.js.map → sends-I2B6F5NW.js.map} +0 -0
  321. /package/dist/{shared-UPMEBTVP.js.map → shared-Z7INVKCZ.js.map} +0 -0
  322. /package/dist/{shopify-HGFUHYT7.js.map → shopify-AUDLALBS.js.map} +0 -0
  323. /package/dist/{sitemaps-P3K5Z4TW.js.map → sitemaps-EOMSRKOD.js.map} +0 -0
  324. /package/dist/{sites-TURWC53D.js.map → sites-6M73AONG.js.map} +0 -0
  325. /package/dist/{sources-7ZFY3VEZ.js.map → sources-OR36YOTG.js.map} +0 -0
  326. /package/dist/{stats-XNKAJD2Z.js.map → stats-MFEH2TSW.js.map} +0 -0
  327. /package/dist/{studies-5G67ODR2.js.map → studies-XNJXWD7I.js.map} +0 -0
  328. /package/dist/{study-writes-34BJFZAZ.js.map → study-writes-MFAJQHXK.js.map} +0 -0
  329. /package/dist/{sync-QVEUQKU5.js.map → sync-SI25TKY5.js.map} +0 -0
  330. /package/dist/{tag-manager-3GIW6BPB.js.map → tag-manager-JFC6YYVP.js.map} +0 -0
  331. /package/dist/{targeting-TVZPIUUI.js.map → targeting-ZBGR2PSX.js.map} +0 -0
  332. /package/dist/{targeting-constants-RJS2STR5.js.map → targeting-constants-RF2732EW.js.map} +0 -0
  333. /package/dist/{targeting-criteria-SMBIEM7U.js.map → targeting-criteria-HU7OAJUA.js.map} +0 -0
  334. /package/dist/{terms-AATAGKPT.js.map → terms-XFL6QO7A.js.map} +0 -0
  335. /package/dist/{themes-5HKRO5RR.js.map → themes-SUNQVNES.js.map} +0 -0
  336. /package/dist/{top-companies-PY2NL2GS.js.map → top-companies-MSLNT33I.js.map} +0 -0
  337. /package/dist/{tweets-MLDLLLDB.js.map → tweets-6PQHJXJC.js.map} +0 -0
  338. /package/dist/{unstage-65DUBYNZ.js.map → unstage-O23ILHCY.js.map} +0 -0
  339. /package/dist/{url-options-4J3FRXHO.js.map → url-options-NZAS37S5.js.map} +0 -0
  340. /package/dist/{url-params-TGCGWKAJ.js.map → url-params-LUQMABZX.js.map} +0 -0
  341. /package/dist/{videos-NITQKILV.js.map → videos-AHOLXU42.js.map} +0 -0
  342. /package/dist/{write-commands-SIOVTRHH.js.map → write-commands-5OFOD7TE.js.map} +0 -0
  343. /package/dist/{write-commands-XLZCRVTU.js.map → write-commands-LHEJESKL.js.map} +0 -0
  344. /package/dist/{write-commands-OBQPQUIE.js.map → write-commands-SD6DXVNK.js.map} +0 -0
  345. /package/dist/{write-commands-VQPEHKH7.js.map → write-commands-UEQR7ZXO.js.map} +0 -0
  346. /package/dist/{x-PW43O6JS.js.map → x-UNSHYLJJ.js.map} +0 -0
@@ -3,13 +3,13 @@ import {
3
3
  } from "./chunk-FIN4ZXGJ.js";
4
4
  import {
5
5
  resolveXAccountId
6
- } from "./chunk-YD6OZSSY.js";
6
+ } from "./chunk-ZICB4OI5.js";
7
7
  import {
8
8
  cacheGet,
9
9
  cacheSet,
10
10
  writeAdsJson,
11
11
  writeAdsOutput
12
- } from "./chunk-RBCO3C3Q.js";
12
+ } from "./chunk-MK4HCMEA.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-CAOGPPG4.js.map
85
+ //# sourceMappingURL=cards-RYQN5JLR.js.map
@@ -8,7 +8,7 @@ import {
8
8
  requireTarget,
9
9
  stageOp,
10
10
  upper
11
- } from "./chunk-UYZ4FUC7.js";
11
+ } from "./chunk-JED4JBIK.js";
12
12
  import {
13
13
  retailerIdFilter
14
14
  } from "./chunk-GC5P4KWY.js";
@@ -16,7 +16,7 @@ import "./chunk-GDFJOCDO.js";
16
16
  import {
17
17
  csvOrJson,
18
18
  handleMetaError
19
- } from "./chunk-5H6N36LS.js";
19
+ } from "./chunk-7TVVYP7K.js";
20
20
  import {
21
21
  repeatedValues
22
22
  } from "./chunk-ERSX3MKH.js";
@@ -29,7 +29,7 @@ import {
29
29
  writeAdsJson,
30
30
  writeAdsOutput,
31
31
  writeJsonEnvelope
32
- } from "./chunk-RBCO3C3Q.js";
32
+ } from "./chunk-MK4HCMEA.js";
33
33
  import "./chunk-Y5PNLB24.js";
34
34
  import "./chunk-N3PASNUA.js";
35
35
  import {
@@ -779,4 +779,4 @@ export {
779
779
  productFieldsFromArgs,
780
780
  productSetFilterFromArgs
781
781
  };
782
- //# sourceMappingURL=catalogs-7IEXGLSR.js.map
782
+ //# sourceMappingURL=catalogs-G33WT5PS.js.map
@@ -2,14 +2,14 @@ import {
2
2
  failWriteValidation,
3
3
  productFiltersArg,
4
4
  schemaArgs
5
- } from "./chunk-ULIQNJ5J.js";
5
+ } from "./chunk-4OQG4HBG.js";
6
6
  import {
7
7
  CHATGPT_ADS_REFERENCE,
8
8
  chatgptAdsProductQuerySchema,
9
9
  runChatgptListRead,
10
10
  runChatgptRead
11
- } from "./chunk-OASXBRXQ.js";
12
- import "./chunk-RBCO3C3Q.js";
11
+ } from "./chunk-QZSNT67Z.js";
12
+ import "./chunk-MK4HCMEA.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-5LWEXG5X.js.map
130
+ //# sourceMappingURL=catalogs-XLWWM2Q3.js.map
@@ -6,7 +6,7 @@ import {
6
6
  cappedChangesHint,
7
7
  parseApiError,
8
8
  resolveChangesWindow
9
- } from "./chunk-N2TXADL7.js";
9
+ } from "./chunk-FUIGPJZZ.js";
10
10
  import {
11
11
  CHANGES_MAX_LIMIT,
12
12
  CHANGE_RESOURCE_TYPES,
@@ -19,7 +19,7 @@ import {
19
19
  writeAdsJson,
20
20
  writeAdsOutput,
21
21
  writeJsonEnvelope
22
- } from "./chunk-RBCO3C3Q.js";
22
+ } from "./chunk-MK4HCMEA.js";
23
23
  import "./chunk-XHWHBGKX.js";
24
24
  import {
25
25
  ApiError,
@@ -164,4 +164,4 @@ Examples:
164
164
  export {
165
165
  changesCommand
166
166
  };
167
- //# sourceMappingURL=changes-WWZYTLC6.js.map
167
+ //# sourceMappingURL=changes-SI2W2PZL.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-U6DFMD2V.js").then((m) => m.accountCommand),
31
- campaigns: () => import("./campaigns-7RV65SXR.js").then((m) => m.campaignsCommand),
32
- "ad-groups": () => import("./ad-groups-JZDUFT6J.js").then((m) => m.adGroupsCommand),
33
- ads: () => import("./ads-UMSWEI5X.js").then((m) => m.adsCommand),
34
- conversions: () => import("./conversions-QZJRF4WN.js").then((m) => m.conversionsCommand),
35
- pixels: () => import("./pixels-WTTLC4O5.js").then((m) => m.pixelsCommand),
36
- audiences: () => import("./audiences-RSAUXKHR.js").then((m) => m.audiencesCommand),
37
- catalogs: () => import("./catalogs-5LWEXG5X.js").then((m) => m.catalogsCommand),
38
- history: () => import("./history-LXRFZNW7.js").then((m) => m.historyCommand),
39
- insights: () => import("./insights-H6M6VI43.js").then((m) => m.insightsCommand),
40
- locations: () => import("./locations-5SLLGWZO.js").then((m) => m.locationsCommand),
41
- draft: () => import("./draft-WOE7KQ7T.js").then((m) => m.draftCommand)
30
+ account: () => import("./account-YJ2NNQYP.js").then((m) => m.accountCommand),
31
+ campaigns: () => import("./campaigns-NW2H7SAR.js").then((m) => m.campaignsCommand),
32
+ "ad-groups": () => import("./ad-groups-AMMMWHHX.js").then((m) => m.adGroupsCommand),
33
+ ads: () => import("./ads-KLSFKXUE.js").then((m) => m.adsCommand),
34
+ conversions: () => import("./conversions-TKPTZJVM.js").then((m) => m.conversionsCommand),
35
+ pixels: () => import("./pixels-GY4LKGJK.js").then((m) => m.pixelsCommand),
36
+ audiences: () => import("./audiences-76S4WY7Q.js").then((m) => m.audiencesCommand),
37
+ catalogs: () => import("./catalogs-XLWWM2Q3.js").then((m) => m.catalogsCommand),
38
+ history: () => import("./history-QATQCGVQ.js").then((m) => m.historyCommand),
39
+ insights: () => import("./insights-OZ2EXOHH.js").then((m) => m.insightsCommand),
40
+ locations: () => import("./locations-EA5VGY56.js").then((m) => m.locationsCommand),
41
+ draft: () => import("./draft-VT7DAOB7.js").then((m) => m.draftCommand)
42
42
  }
43
43
  });
44
44
  export {
45
45
  chatgptCommand
46
46
  };
47
- //# sourceMappingURL=chatgpt-ZI4GWP6S.js.map
47
+ //# sourceMappingURL=chatgpt-PPWG5WOF.js.map
@@ -19,7 +19,7 @@ import {
19
19
  handleConnectionError,
20
20
  isNotConnectedError,
21
21
  writeJsonEnvelope
22
- } from "./chunk-RBCO3C3Q.js";
22
+ } from "./chunk-MK4HCMEA.js";
23
23
  import {
24
24
  describeOpPayload
25
25
  } from "./chunk-R7XDGNZD.js";
@@ -706,4 +706,4 @@ export {
706
706
  fileCreateCommand,
707
707
  bidModifierFlag
708
708
  };
709
- //# sourceMappingURL=chunk-TPGFX47R.js.map
709
+ //# sourceMappingURL=chunk-23RVCBL7.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  handleLinkedinError,
3
3
  resolveAccountIdArg
4
- } from "./chunk-CI3QSB6G.js";
4
+ } from "./chunk-W743FIEY.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-RBCO3C3Q.js";
15
+ } from "./chunk-MK4HCMEA.js";
16
16
  import {
17
17
  LINKEDIN_DRAFT_BATCH_MAX,
18
18
  linkedinDraftOpInputSchema,
@@ -396,4 +396,4 @@ export {
396
396
  requireTarget,
397
397
  requireTargets
398
398
  };
399
- //# sourceMappingURL=chunk-YVFHDZ3K.js.map
399
+ //# sourceMappingURL=chunk-2VW7S77J.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  chatgptDraftOpInputSchema,
3
3
  chatgptFailure
4
- } from "./chunk-OASXBRXQ.js";
4
+ } from "./chunk-QZSNT67Z.js";
5
5
  import {
6
6
  writeJsonEnvelope
7
- } from "./chunk-RBCO3C3Q.js";
7
+ } from "./chunk-MK4HCMEA.js";
8
8
  import {
9
9
  ApiError,
10
10
  apiPost
@@ -271,4 +271,4 @@ export {
271
271
  statusCommand,
272
272
  productFiltersArg
273
273
  };
274
- //# sourceMappingURL=chunk-ULIQNJ5J.js.map
274
+ //# sourceMappingURL=chunk-4OQG4HBG.js.map
@@ -2,7 +2,7 @@ import {
2
2
  handleConnectionError,
3
3
  isNotConnectedError,
4
4
  writeAdsJson
5
- } from "./chunk-RBCO3C3Q.js";
5
+ } from "./chunk-MK4HCMEA.js";
6
6
  import {
7
7
  ApiError
8
8
  } from "./chunk-QEREDRZO.js";
@@ -73,4 +73,4 @@ function exitWithServiceReadError(err) {
73
73
  export {
74
74
  exitWithServiceReadError
75
75
  };
76
- //# sourceMappingURL=chunk-2LBQNTTH.js.map
76
+ //# sourceMappingURL=chunk-4PAGS7QH.js.map
@@ -6,7 +6,7 @@ import {
6
6
  cacheSet,
7
7
  writeAdsJson,
8
8
  writeAdsOutput
9
- } from "./chunk-RBCO3C3Q.js";
9
+ } from "./chunk-MK4HCMEA.js";
10
10
  import {
11
11
  ApiError,
12
12
  apiGet
@@ -66,4 +66,4 @@ async function runListCommand(opts) {
66
66
  export {
67
67
  runListCommand
68
68
  };
69
- //# sourceMappingURL=chunk-6IR7IQPV.js.map
69
+ //# sourceMappingURL=chunk-5C4RRCKM.js.map
@@ -5,7 +5,7 @@ import {
5
5
  requireTarget,
6
6
  stageOp,
7
7
  stageOps
8
- } from "./chunk-UYZ4FUC7.js";
8
+ } from "./chunk-JED4JBIK.js";
9
9
  import {
10
10
  repeatedValues
11
11
  } from "./chunk-ERSX3MKH.js";
@@ -216,4 +216,4 @@ export {
216
216
  labelsAttachCommand,
217
217
  labelsDetachCommand
218
218
  };
219
- //# sourceMappingURL=chunk-OTRKBCUB.js.map
219
+ //# sourceMappingURL=chunk-5ZHXLY7Y.js.map
@@ -9,7 +9,7 @@ import {
9
9
  needsConnectionFix,
10
10
  writeAdsJson,
11
11
  writeJsonEnvelope
12
- } from "./chunk-RBCO3C3Q.js";
12
+ } from "./chunk-MK4HCMEA.js";
13
13
  import {
14
14
  ApiError,
15
15
  apiGet
@@ -214,4 +214,4 @@ export {
214
214
  resolveEffectiveStatus,
215
215
  statusFilterHints
216
216
  };
217
- //# sourceMappingURL=chunk-5H6N36LS.js.map
217
+ //# sourceMappingURL=chunk-7TVVYP7K.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  writeJsonEnvelope
3
- } from "./chunk-RBCO3C3Q.js";
3
+ } from "./chunk-MK4HCMEA.js";
4
4
  import {
5
5
  apiGet
6
6
  } from "./chunk-QEREDRZO.js";
@@ -23,4 +23,4 @@ export {
23
23
  AVAILABLE_ARG,
24
24
  writeAvailableAccounts
25
25
  };
26
- //# sourceMappingURL=chunk-NTFNLVZG.js.map
26
+ //# sourceMappingURL=chunk-A4O3JL6D.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  writeJsonEnvelope
3
- } from "./chunk-RBCO3C3Q.js";
3
+ } from "./chunk-MK4HCMEA.js";
4
4
  import {
5
5
  ApiError,
6
6
  apiPost
@@ -112,4 +112,4 @@ export {
112
112
  removeDraftRefs,
113
113
  amendDraftRefs
114
114
  };
115
- //# sourceMappingURL=chunk-2DAWUWA4.js.map
115
+ //# sourceMappingURL=chunk-ANRTDNPQ.js.map
@@ -2,7 +2,7 @@ import {
2
2
  failWriteValidation,
3
3
  parseDateFlag,
4
4
  parseMoneyFlag
5
- } from "./chunk-UYZ4FUC7.js";
5
+ } from "./chunk-JED4JBIK.js";
6
6
  import {
7
7
  repeatedValues
8
8
  } from "./chunk-ERSX3MKH.js";
@@ -284,4 +284,4 @@ export {
284
284
  clearFromFlags,
285
285
  clearArg
286
286
  };
287
- //# sourceMappingURL=chunk-ILGRC7LJ.js.map
287
+ //# sourceMappingURL=chunk-B2BQ2Q64.js.map
@@ -4,7 +4,7 @@ import {
4
4
  handleConnectionError,
5
5
  needsConnectionFix,
6
6
  writeJsonEnvelope
7
- } from "./chunk-RBCO3C3Q.js";
7
+ } from "./chunk-MK4HCMEA.js";
8
8
  import {
9
9
  ApiError,
10
10
  apiGet
@@ -135,4 +135,4 @@ export {
135
135
  handleGscSiteError,
136
136
  resolveSiteUrl
137
137
  };
138
- //# sourceMappingURL=chunk-FWHEAR7F.js.map
138
+ //# sourceMappingURL=chunk-DRQI2CJJ.js.map
@@ -3,11 +3,11 @@ import {
3
3
  } from "./chunk-FIN4ZXGJ.js";
4
4
  import {
5
5
  resolveXAccountId
6
- } from "./chunk-YD6OZSSY.js";
6
+ } from "./chunk-ZICB4OI5.js";
7
7
  import {
8
8
  writeAdsJson,
9
9
  writeJsonEnvelope
10
- } from "./chunk-RBCO3C3Q.js";
10
+ } from "./chunk-MK4HCMEA.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-KZQQ6OLC.js.map
169
+ //# sourceMappingURL=chunk-FB5OU5HZ.js.map
@@ -9,7 +9,7 @@ import {
9
9
  import {
10
10
  connectionFixExplanation,
11
11
  isNotConnectedError
12
- } from "./chunk-RBCO3C3Q.js";
12
+ } from "./chunk-MK4HCMEA.js";
13
13
 
14
14
  // src/commands/ads/google/during-literals.ts
15
15
  var GAQL_DURING_LITERALS = [
@@ -1317,4 +1317,4 @@ export {
1317
1317
  serverFailure,
1318
1318
  parseApiError
1319
1319
  };
1320
- //# sourceMappingURL=chunk-N2TXADL7.js.map
1320
+ //# sourceMappingURL=chunk-FUIGPJZZ.js.map
@@ -4,7 +4,7 @@ import {
4
4
  handleConnectionError,
5
5
  needsConnectionFix,
6
6
  writeJsonEnvelope
7
- } from "./chunk-RBCO3C3Q.js";
7
+ } from "./chunk-MK4HCMEA.js";
8
8
  import {
9
9
  ApiError,
10
10
  apiGet
@@ -71,4 +71,4 @@ ${list}`
71
71
  export {
72
72
  resolvePropertyId
73
73
  };
74
- //# sourceMappingURL=chunk-OSQTSS27.js.map
74
+ //# sourceMappingURL=chunk-J32CYEIH.js.map
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  handleMetaError,
6
6
  resolveAccountIdArg
7
- } from "./chunk-5H6N36LS.js";
7
+ } from "./chunk-7TVVYP7K.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-RBCO3C3Q.js";
21
+ } from "./chunk-MK4HCMEA.js";
22
22
  import {
23
23
  describeOpPayload
24
24
  } from "./chunk-R7XDGNZD.js";
@@ -222,4 +222,4 @@ export {
222
222
  stageOps,
223
223
  stageStatusChange
224
224
  };
225
- //# sourceMappingURL=chunk-UYZ4FUC7.js.map
225
+ //# sourceMappingURL=chunk-JED4JBIK.js.map
@@ -270,7 +270,8 @@ async function resolveCustomerId(args) {
270
270
  const accounts = await fetchAccounts(useCache);
271
271
  const [single] = accounts;
272
272
  if (accounts.length === 1 && single) {
273
- process.stderr.write(`Using account "${single.name}" (${single.id})
273
+ const answersInJson = (args.output ?? "json") === "json" || Boolean(args.out);
274
+ if (!answersInJson) process.stderr.write(`Using account "${single.name}" (${single.id})
274
275
  `);
275
276
  return single.id;
276
277
  }
@@ -321,4 +322,4 @@ export {
321
322
  needsConnectionFix,
322
323
  isOrganizationReadRefusal
323
324
  };
324
- //# sourceMappingURL=chunk-RBCO3C3Q.js.map
325
+ //# sourceMappingURL=chunk-MK4HCMEA.js.map
@@ -1 +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":[]}
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 // A JSON capture is often `2>&1`, where this line would sit in front of the envelope. An --out\n // read always answers with a JSON summary, whatever --output names.\n const answersInJson = (args.output ?? \"json\") === \"json\" || Boolean(args.out);\n if (!answersInJson) 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":";;;;;;;;;;AAaA,IAAM,8BAAkE;AAAA,EACtE,YAAY;AAAA,EACZ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,cAAc;AAAA,EACd,UAAU;AAAA,EACV,OAAO;AACT;AAEA,IAAM,gBAAoD;AAAA,EACxD,YAAY;AAAA,EACZ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,OAAO;AAAA,EACP,UAAU;AAAA,EACV,cAAc;AAChB;AAUO,SAAS,yBAAyB,UAA8B,iBAAkC;AACvG,QAAM,OAAO,cAAc,QAAQ;AACnC,QAAM,OAAO,4BAA4B,QAAQ;AAGjD,MAAI,sBAAsB,GAAG;AAC3B,WACE,GAAG,IAAI,qLACgF,IAAI;AAAA,EAG/F;AACA,MAAI,oBAAoB,UAAa,cAAc,KAAK,eAAe,GAAG;AACxE,WACE,GAAG,IAAI,kQAE8C,IAAI,8JACsB,IAAI;AAAA,EAGvF;AACA,SACE,GAAG,IAAI,0LAC0E,IAAI,oOAED,IAAI;AAG5F;AAGA,IAAM,gBAAgB;AAMf,SAAS,sBAAsB,UAA8B,iBAAiC;AACnG,QAAM,eAAe,cAAc,QAAQ;AAE3C,QAAM,cAAc;AAAA,IAClB,YAAY;AAAA,IACZ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,cAAc;AAAA,EAChB,EAAE,QAAQ;AAEV,QAAM,OAAO;AAAA,IACX,YAAY;AAAA,IACZ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,cAAc;AAAA,EAChB,EAAE,QAAQ;AAEV,QAAM,WAAW;AAAA,IACf,IAAI;AAAA,IACJ,OAAO;AAAA,MACL;AAAA,MACA,SAAS,mBAAmB,MAAM,YAAY;AAAA,MAC9C,KAAK,sBAAsB,IACvB,EAAE,QAAQ,oBAAoB,aAAa,yBAAyB,QAAQ,EAAE,IAC9E;AAAA,QACE,QAAQ;AAAA,QACR,aAAa,GAAG,yBAAyB,UAAU,eAAe,CAAC,wEAAwE,WAAW;AAAA,MACxJ;AAAA,MACJ,WAAW;AAAA,IACb;AAAA,EACF;AAEA,oBAAkB,QAAQ;AAC1B,UAAQ,KAAK,CAAC;AAChB;AAOO,SAAS,oBAAoB,MAAc,SAA0B;AAC1E,MAAI,SAAS,eAAe,SAAS,kBAAkB,SAAS,aAAa;AAC3E,WAAO;AAAA,EACT;AAIA,SAAO,uFAAuF,KAAK,OAAO;AAC5G;AAaO,SAAS,mBAAmB,MAAc,SAA0B;AACzE,MAAI,SAAS,gBAAgB;AAC3B,WAAO;AAAA,EACT;AACA,SAAO,oBAAoB,MAAM,OAAO;AAC1C;AAOO,SAAS,0BAA0B,SAA0B;AAClE,SAAO,QAAQ,WAAW,qDAAqD;AACjF;;;AC5JA,SAAS,kBAAkB;AAC3B,SAAS,YAAY,WAAW,cAAc,QAAQ,qBAAqB;AAC3E,SAAS,eAAe;AACxB,SAAS,YAAY;AASrB,SAAS,WAAmB;AAC1B,QAAM,UAAU,sBAAsB,GAAG,QAAQ,kBAAkB,EAAE;AACrE,SAAO,KAAK,QAAQ,GAAG,UAAU,SAAS,OAAO,GAAI,UAAU,CAAC,WAAW,OAAO,IAAI,CAAC,CAAE;AAC3F;AAEA,SAAS,UAAU,KAAmB;AACpC,MAAI,CAAC,WAAW,GAAG,GAAG;AACpB,cAAU,KAAK,EAAE,WAAW,KAAK,CAAC;AAAA,EACpC;AACF;AAEA,SAAS,QAAQ,KAAqB;AACpC,SAAO,WAAW,QAAQ,EAAE,OAAO,GAAG,EAAE,OAAO,KAAK,EAAE,MAAM,GAAG,EAAE;AACnE;AAEA,SAAS,UAAU,UAAkB,KAAqB;AACxD,QAAM,MAAM,KAAK,SAAS,GAAG,QAAQ;AACrC,YAAU,GAAG;AACb,SAAO,KAAK,KAAK,GAAG,QAAQ,GAAG,CAAC,OAAO;AACzC;AAEO,SAAS,SAAY,UAAkB,KAAmC;AAC/E,QAAM,OAAO,UAAU,UAAU,GAAG;AACpC,MAAI,CAAC,WAAW,IAAI,GAAG;AACrB,WAAO;AAAA,EACT;AACA,MAAI;AACF,UAAM,MAAM,aAAa,MAAM,OAAO;AACtC,UAAM,QAAQ,KAAK,MAAM,GAAG;AAC5B,QAAI,MAAM,YAAY,KAAK,IAAI,GAAG;AAChC,aAAO,MAAM,EAAE,OAAO,KAAK,CAAC;AAC5B,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT,QAAQ;AACN,WAAO,MAAM,EAAE,OAAO,KAAK,CAAC;AAC5B,WAAO;AAAA,EACT;AACF;AAEO,SAAS,SACd,UACA,KACA,MACA,OACA,QACM;AACN,QAAM,OAAO,UAAU,UAAU,GAAG;AACpC,QAAM,QAAuB;AAAA,IAC3B,WAAW,KAAK,IAAI,IAAI;AAAA,IACxB;AAAA,IACA;AAAA,EACF;AACA,gBAAc,MAAM,KAAK,UAAU,KAAK,GAAG,OAAO;AACpD;AAEA,IAAM,OAAO,KAAK,KAAK;AACvB,IAAM,SAAS,KAAK;AAEb,SAAS,YAAY,OAAuB;AACjD,QAAM,QAAQ,MAAM,YAAY;AAChC,MAAI,MAAM,SAAS,OAAO,GAAG;AAC3B,WAAO,KAAK;AAAA,EACd;AACA,MAAI,MAAM,SAAS,aAAa,KAAK,MAAM,SAAS,cAAc,GAAG;AACnE,WAAO,IAAI;AAAA,EACb;AAEA,SAAO,IAAI;AACb;AAEO,SAAS,mBAAmB,YAAoB,OAAuB;AAC5E,QAAM,SAAQ,oBAAI,KAAK,GAAE,YAAY,EAAE,MAAM,GAAG,EAAE;AAClD,SAAO,GAAG,UAAU,IAAI,KAAK,IAAI,MAAM,KAAK,EAAE,QAAQ,QAAQ,GAAG,CAAC;AACpE;AAQO,SAAS,wBAAwB,YAAwC;AAC9E,QAAM,SAAS,SAA0B,YAAY,MAAM;AAC3D,MAAI,CAAC,OAAQ,QAAO;AACpB,QAAM,UAAU,OAAO,KAAK,KAAK,CAAC,MAAM,EAAE,OAAO,UAAU;AAC3D,MAAI,SAAS,gBAAgB,UAAW,QAAO,QAAQ;AACvD,SAAO;AACT;;;ACtFO,SAAS,aAAa,UAA2B;AACtD,UAAQ,OAAO,MAAM,GAAG,KAAK,UAAU,UAAU,MAAM,CAAC,CAAC;AAAA,CAAI;AAC/D;AAEO,SAAS,kBAAkB,UAAyC;AACzE,UAAQ,OAAO,MAAM,GAAG,KAAK,UAAU,UAAU,MAAM,CAAC,CAAC;AAAA,CAAI;AAC/D;AAGO,IAAM,uBAAuB,CAAC,QAAQ,OAAO,SAAS,IAAI;AAG1D,SAAS,oBAAoB,QAAgB,WAA6C;AAC/F,MAAI,UAAU,SAAS,MAAM,EAAG,QAAO;AACvC,QAAM,OACJ,UAAU,SAAS,IAAI,GAAG,UAAU,MAAM,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,OAAO,UAAU,GAAG,EAAE,CAAC,KAAK,UAAU,KAAK,EAAE;AAC1G,SAAO,YAAY,MAAM,gCAA2B,IAAI;AAC1D;AAEO,SAAS,SAAS,QAA0B;AACjD,SAAO,OACJ,IAAI,CAAC,MAAM;AACV,QAAI,EAAE,SAAS,GAAG,KAAK,EAAE,SAAS,GAAG,KAAK,EAAE,SAAS,IAAI,GAAG;AAC1D,aAAO,IAAI,EAAE,QAAQ,MAAM,IAAI,CAAC;AAAA,IAClC;AACA,WAAO;AAAA,EACT,CAAC,EACA,KAAK,GAAG;AACb;AAEA,SAAS,WAAW,KAAsD;AACxE,QAAM,OAA+B,CAAC;AACtC,aAAW,CAAC,KAAK,GAAG,KAAK,OAAO,QAAQ,GAAG,GAAG;AAC5C,SAAK,GAAG,IAAI,OAAO,QAAQ,YAAY,QAAQ,OAAO,KAAK,UAAU,GAAG,IAAI,OAAO,OAAO,EAAE;AAAA,EAC9F;AACA,SAAO;AACT;AAMA,SAAS,WAAW,OAAuB;AACzC,UAAQ,OAAO,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;AAAA,CAAI;AAC9C;AAEA,SAAS,YAAY,MAAsC,QAAyB;AAClF,MAAI,KAAK,WAAW,EAAG;AACvB,QAAM,OAAO,UAAU,OAAO,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC;AAChD,QAAM,QAAQ,CAAC,SAAS,IAAI,CAAC;AAC7B,aAAW,OAAO,MAAM;AACtB,UAAM,OAAO,WAAW,GAAG;AAC3B,UAAM,KAAK,SAAS,KAAK,IAAI,CAAC,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;AAAA,EACrD;AACA,aAAW,KAAK;AAClB;AAEA,SAAS,cAAc,MAA4C;AACjE,MAAI,KAAK,WAAW,EAAG;AACvB,aAAW,KAAK,IAAI,CAAC,QAAQ,KAAK,UAAU,GAAG,CAAC,CAAC;AACnD;AAGA,SAAS,OAAO,OAAuB;AACrC,SAAO,MAAM,QAAQ,OAAO,KAAK,EAAE,QAAQ,UAAU,GAAG;AAC1D;AAEA,SAAS,WAAW,MAAsC,QAAyB;AACjF,MAAI,KAAK,WAAW,EAAG;AACvB,QAAM,OAAO,UAAU,OAAO,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC;AAChD,QAAM,QAAQ,CAAC,KAAK,KAAK,KAAK,KAAK,CAAC,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,EAAE,KAAK,KAAK,CAAC,IAAI;AACpF,aAAW,OAAO,MAAM;AACtB,UAAM,OAAO,WAAW,GAAG;AAC3B,UAAM,KAAK,KAAK,KAAK,IAAI,CAAC,MAAM,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI;AAAA,EACxE;AACA,aAAW,KAAK;AAClB;AAMO,SAAS,eACd,MACA,QACA,QACA,QAAkB,CAAC,GACb;AACN,UAAQ,QAAQ;AAAA,IACd,KAAK;AACH,kBAAY,MAAM,MAAM;AACxB;AAAA,IACF,KAAK;AACH,oBAAc,IAAI;AAClB;AAAA,IACF,KAAK;AACH,iBAAW,MAAM,MAAM;AACvB;AAAA,IACF;AACE,wBAAkB,MAAM,SAAS,IAAI,EAAE,IAAI,MAAM,MAAM,MAAM,IAAI,EAAE,IAAI,MAAM,KAAK,CAAC;AACnF;AAAA,EACJ;AACA,aAAW,QAAQ,MAAO,SAAQ,OAAO,MAAM,GAAG,IAAI;AAAA,CAAI;AAC5D;AAUA,eAAe,cAAc,WAAW,MAA8B;AACpE,MAAI,UAAU;AACZ,UAAM,SAAS,SAAwB,YAAY,MAAM;AACzD,QAAI,OAAQ,QAAO,OAAO;AAAA,EAC5B;AACA,QAAM,SAAS,CAAC,WAAW,EAAE,cAAc,OAAO,IAAI;AACtD,QAAM,OAAO,MAAM,OAAsB,4BAA4B,MAAM;AAC3E,MAAI,UAAU;AACZ,aAAS,YAAY,QAAQ,MAAM,KAAK,KAAK,GAAI;AAAA,EACnD;AACA,SAAO;AACT;AAEA,eAAsB,kBAAkB,MAAgD;AACtF,QAAM,WAAW,KAAK,aAAa;AACnC,QAAM,aAAa,YAAY,OAAO,EAAE;AAExC,MAAI,YAAY;AACd,QAAI,CAAC,WAAW,KAAK,UAAU,GAAG;AAChC,mBAAa;AAAA,QACX,IAAI;AAAA,QACJ,OAAO;AAAA,UACL,MAAM;AAAA,UACN,SACE;AAAA,QACJ;AAAA,MACF,CAAC;AACD,cAAQ,KAAK,CAAC;AAAA,IAChB;AACA,WAAO;AAAA,EACT;AAEA,QAAM,WAAW,CAAC,KAAK,UAAU;AAEjC,MAAI;AACF,UAAM,WAAW,MAAM,cAAc,QAAQ;AAC7C,UAAM,CAAC,MAAM,IAAI;AACjB,QAAI,SAAS,WAAW,KAAK,QAAQ;AAGnC,YAAM,iBAAiB,KAAK,UAAU,YAAY,UAAU,QAAQ,KAAK,GAAG;AAC5E,UAAI,CAAC,cAAe,SAAQ,OAAO,MAAM,kBAAkB,OAAO,IAAI,MAAM,OAAO,EAAE;AAAA,CAAK;AAC1F,aAAO,OAAO;AAAA,IAChB;AACA,QAAI,SAAS,WAAW,GAAG;AACzB,4BAAsB,YAAY;AAAA,IACpC;AACA,UAAM,OAAO,SAAS,IAAI,CAAC,MAAM,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,IAAI;AAClE,iBAAa;AAAA,MACX,IAAI;AAAA,MACJ,OAAO;AAAA,QACL,MAAM;AAAA,QACN,SAAS;AAAA,EAAqF,IAAI;AAAA,MACpG;AAAA,IACF,CAAC;AACD,YAAQ,KAAK,CAAC;AAAA,EAChB,SAAS,KAAK;AAGZ,QAAI,eAAe,YAAY,oBAAoB,IAAI,MAAM,IAAI,OAAO,GAAG;AACzE,4BAAsB,cAAc,IAAI,OAAO;AAAA,IACjD;AACA,iBAAa;AAAA,MACX,IAAI;AAAA,MACJ,OAAO;AAAA,QACL,MAAM;AAAA,QACN,SAAS;AAAA,MACX;AAAA,IACF,CAAC;AACD,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;","names":[]}
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  isNotConnectedError,
7
7
  writeJsonEnvelope
8
- } from "./chunk-RBCO3C3Q.js";
8
+ } from "./chunk-MK4HCMEA.js";
9
9
  import {
10
10
  ApiError,
11
11
  apiPost
@@ -149,4 +149,4 @@ export {
149
149
  draftAction,
150
150
  draftList
151
151
  };
152
- //# sourceMappingURL=chunk-R4RWQ6YX.js.map
152
+ //# sourceMappingURL=chunk-OLPABGH3.js.map
@@ -8,7 +8,7 @@ import {
8
8
  } from "./chunk-PILLZPNC.js";
9
9
  import {
10
10
  writeJsonEnvelope
11
- } from "./chunk-RBCO3C3Q.js";
11
+ } from "./chunk-MK4HCMEA.js";
12
12
  import {
13
13
  apiPost
14
14
  } from "./chunk-QEREDRZO.js";
@@ -185,4 +185,4 @@ export {
185
185
  lookupReport,
186
186
  lookupCommand
187
187
  };
188
- //# sourceMappingURL=chunk-C3EX5OKN.js.map
188
+ //# sourceMappingURL=chunk-QUSDGZFS.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  writeJsonEnvelope
3
- } from "./chunk-RBCO3C3Q.js";
3
+ } from "./chunk-MK4HCMEA.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-OASXBRXQ.js.map
24026
+ //# sourceMappingURL=chunk-QZSNT67Z.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  writeAdsOutput
3
- } from "./chunk-RBCO3C3Q.js";
3
+ } from "./chunk-MK4HCMEA.js";
4
4
  import {
5
5
  asRecord,
6
6
  shapeListRows
@@ -285,4 +285,4 @@ export {
285
285
  META_LIST_SHAPE_ARGS,
286
286
  registerMetaListSchema
287
287
  };
288
- //# sourceMappingURL=chunk-3E74OM2E.js.map
288
+ //# sourceMappingURL=chunk-RF3TP643.js.map
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  isNotConnectedError,
7
7
  writeJsonEnvelope
8
- } from "./chunk-RBCO3C3Q.js";
8
+ } from "./chunk-MK4HCMEA.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-WBWEKZQ2.js.map
191
+ //# sourceMappingURL=chunk-RIRSFFWA.js.map