@koda-sl/baker-cli 0.545.0-dev.2a6beac48 → 0.545.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/account-2HJ4GKHN.js +82 -0
- package/dist/account-6GKPLNDY.js +82 -0
- package/dist/account-reads-X36NPCX5.js +219 -0
- package/dist/account-users-FGL3DZES.js +64 -0
- package/dist/account-writes-FZ3KCJZY.js +68 -0
- package/dist/accounts-PKSW3DBQ.js +80 -0
- package/dist/accounts-S5C6MZFO.js +701 -0
- package/dist/actions-ARN3OFB7.js +55 -0
- package/dist/activecampaign-3YJC3H2R.js +938 -0
- package/dist/ad-group-writes-XGG3WQEO.js +172 -0
- package/dist/ad-groups-GZIPUN64.js +70 -0
- package/dist/ad-writes-2VTRWQLW.js +176 -0
- package/dist/add-CNYKQD7B.js +107 -0
- package/dist/add-IABKHM5N.js +305 -0
- package/dist/ads-LNWALF6G.js +79 -0
- package/dist/ads-UXHJCUTX.js +48 -0
- package/dist/advertisers-UT7EJ6YS.js +123 -0
- package/dist/analytics-COUVH7MV.js +447 -0
- package/dist/analytics-EHUUNMGZ.js +2437 -0
- package/dist/animate-DM4OUJMR.js +480 -0
- package/dist/assign-FWT5QQDF.js +80 -0
- package/dist/audience-size-YI2RLIG7.js +76 -0
- package/dist/audiences-7D5VPOWF.js +280 -0
- package/dist/audit-BPRRCIWN.js +154 -0
- package/dist/autocomplete-OD6SHZZH.js +114 -0
- package/dist/avatars-FFFPCH6D.js +38 -0
- package/dist/bid-pricing-JF557IO2.js +103 -0
- package/dist/brand-ZUYJWKI3.js +22 -0
- package/dist/brief-CJDBD5GJ.js +543 -0
- package/dist/campaign-groups-VCT6ZH66.js +99 -0
- package/dist/campaign-writes-H22P6YPW.js +176 -0
- package/dist/campaign-writes-YOHDMYDT.js +168 -0
- package/dist/campaigns-265JXD2Z.js +78 -0
- package/dist/campaigns-7EGRZ3V6.js +113 -0
- package/dist/campaigns-ORK5BYAM.js +111 -0
- package/dist/canvas-FW5F3KZJ.js +46 -0
- package/dist/capabilities-ISW7XT44.js +147 -0
- package/dist/catalog-DPUQBZZ7.js +66 -0
- package/dist/catalogs-SBXFAD3X.js +130 -0
- package/dist/changes-HXVZUJMH.js +143 -0
- package/dist/chatgpt-UXJPCGZU.js +47 -0
- package/dist/chats-FH3DQNYD.js +449 -0
- package/dist/check-QC5RHS3Z.js +107 -0
- package/dist/chunk-2AC5GJHC.js +455 -0
- package/dist/chunk-2VSUMGJV.js +89 -0
- package/dist/chunk-4D73PLXU.js +843 -0
- package/dist/chunk-4S5ZAG4S.js +63 -0
- package/dist/chunk-5MMJPUBH.js +387 -0
- package/dist/chunk-5Y2XPKW2.js +156 -0
- package/dist/chunk-6HCYCMIH.js +61 -0
- package/dist/chunk-6R2BQ6FK.js +344 -0
- package/dist/chunk-7P74QKVC.js +297 -0
- package/dist/chunk-7SJU6PQ7.js +604 -0
- package/dist/chunk-A37TIYFD.js +91 -0
- package/dist/chunk-A6NVGPCZ.js +479 -0
- package/dist/chunk-AK7CL5IW.js +334 -0
- package/dist/chunk-AOT3UZBM.js +930 -0
- package/dist/chunk-D2ZAZGQH.js +547 -0
- package/dist/chunk-DYTBVVQX.js +679 -0
- package/dist/chunk-DYTBVVQX.js.map +1 -0
- package/dist/chunk-EB76M4ZH.js +19 -0
- package/dist/chunk-EBWOLUII.js +24026 -0
- package/dist/chunk-EBWOLUII.js.map +1 -0
- package/dist/chunk-EOMY5SUJ.js +783 -0
- package/dist/chunk-EY5WWPPZ.js +1902 -0
- package/dist/chunk-EZKT5YGX.js +23 -0
- package/dist/chunk-FVDC6AKZ.js +150 -0
- package/dist/chunk-GN7K3NPI.js +148 -0
- package/dist/chunk-GQAKWQAV.js +224 -0
- package/dist/chunk-HBDWE7WK.js +98 -0
- package/dist/chunk-HETNOUE4.js +377 -0
- package/dist/chunk-HFAT5S5B.js +170 -0
- package/dist/chunk-HQ3I2QVT.js +275 -0
- package/dist/chunk-IN5UCEJD.js +91 -0
- package/dist/chunk-JAC6JVCI.js +26 -0
- package/dist/chunk-JLLGXYOZ.js +857 -0
- package/dist/chunk-JY3OJBKZ.js +3510 -0
- package/dist/chunk-KBZRG6IK.js +429 -0
- package/dist/chunk-KBZRG6IK.js.map +1 -0
- package/dist/chunk-KCRBAMFU.js +392 -0
- package/dist/chunk-KIXVHP2C.js +1919 -0
- package/dist/chunk-KTY7H44G.js +831 -0
- package/dist/chunk-LKOMEXUB.js +51 -0
- package/dist/chunk-LVKAMWKJ.js +163 -0
- package/dist/chunk-LWCGQNVU.js +685 -0
- package/dist/chunk-MCJ5I5LR.js +3187 -0
- package/dist/chunk-MCJ5I5LR.js.map +1 -0
- package/dist/chunk-MLJKPUWP.js +191 -0
- package/dist/chunk-MLJKPUWP.js.map +1 -0
- package/dist/chunk-MSMTG6OC.js +4269 -0
- package/dist/chunk-MSMTG6OC.js.map +1 -0
- package/dist/chunk-MZPS46OR.js +76 -0
- package/dist/chunk-N4AIJQ4W.js +438 -0
- package/dist/chunk-NBWZVBDG.js +131 -0
- package/dist/chunk-OKB2EAJH.js +8954 -0
- package/dist/chunk-OT2MN5UR.js +169 -0
- package/dist/chunk-OZR3KUJ3.js +57 -0
- package/dist/chunk-P3VY5JEM.js +274 -0
- package/dist/chunk-PXGR3VGW.js +1646 -0
- package/dist/chunk-QK3HMAVU.js +5471 -0
- package/dist/chunk-R65V26HH.js +7770 -0
- package/dist/chunk-R65V26HH.js.map +1 -0
- package/dist/chunk-RHEWQB5O.js +638 -0
- package/dist/chunk-RP36XHWT.js +46 -0
- package/dist/chunk-RXOQZA4K.js +66 -0
- package/dist/chunk-SEHJ7Y7J.js +207 -0
- package/dist/chunk-SNWFM2DB.js +228 -0
- package/dist/chunk-TAGRKRFI.js +103 -0
- package/dist/chunk-TARINRA4.js +1518 -0
- package/dist/chunk-TNZUMU55.js +167 -0
- package/dist/chunk-TP2NS5SG.js +191 -0
- package/dist/chunk-UOXC3XA5.js +494 -0
- package/dist/chunk-UQA6Z23M.js +142 -0
- package/dist/chunk-V2XA5SIO.js +152 -0
- package/dist/chunk-V2XA5SIO.js.map +1 -0
- package/dist/chunk-VOUCQ2YW.js +64 -0
- package/dist/chunk-WJ5AHR4K.js +2209 -0
- package/dist/chunk-WOE4TZHJ.js +285 -0
- package/dist/chunk-X32MFGWW.js +15 -0
- package/dist/chunk-X32MFGWW.js.map +1 -0
- package/dist/chunk-XYNQMRNX.js +5368 -0
- package/dist/chunk-YEISVDKW.js +203 -0
- package/dist/chunk-YNLWSP5E.js +910 -0
- package/dist/chunk-ZEUAJAKN.js +225 -0
- package/dist/chunk-ZUUVWWB5.js +197 -0
- package/dist/chunk-ZVAZFHH7.js +249 -0
- package/dist/claim-FBL5VBYZ.js +200 -0
- package/dist/cli.js +33 -33
- package/dist/companies-URRCAJZE.js +198 -0
- package/dist/company-LDCNUPHZ.js +308 -0
- package/dist/complete-3UGPO444.js +84 -0
- package/dist/config-3VK74MY6.js +88 -0
- package/dist/connect-M5KPZQWE.js +45 -0
- package/dist/conversation-S7YANZJR.js +96 -0
- package/dist/conversion-report-RB2MU7UD.js +127 -0
- package/dist/conversion-upload-command-HFZYKVXA.js +439 -0
- package/dist/conversion-writes-56AIPXPK.js +122 -0
- package/dist/conversions-NRX76ZIT.js +78 -0
- package/dist/conversions-QZL4DSJO.js +140 -0
- package/dist/create-56PJRLMA.js +62 -0
- package/dist/create-OE5MRW3X.js +210 -0
- package/dist/create-RL7PRIDY.js +239 -0
- package/dist/create-Y6YVJ5L4.js +135 -0
- package/dist/creatives-ESVH63AP.js +223 -0
- package/dist/creatives-URHXATY6.js +58 -0
- package/dist/credentials-O6QSB7ZR.js +290 -0
- package/dist/critique-EWJBOCXQ.js +1451 -0
- package/dist/critique-PTGGXRFG.js +232 -0
- package/dist/crm-F6RGNQH5.js +323 -0
- package/dist/crm-GLPOO22Q.js +227 -0
- package/dist/currency-CHBV6WIO.js +88 -0
- package/dist/customers-Q76FCWYO.js +65 -0
- package/dist/delete-ODFDZCL3.js +57 -0
- package/dist/delete-OVMPDGWQ.js +69 -0
- package/dist/delete-XN7N4S4H.js +67 -0
- package/dist/demographics-IY5RI55Z.js +141 -0
- package/dist/discard-GKIA5FML.js +69 -0
- package/dist/discover-ZU2DAV23.js +172 -0
- package/dist/domain-WGXA7OXV.js +101 -0
- package/dist/download-DYYNUGLX.js +172 -0
- package/dist/draft-6EHV5NAN.js +247 -0
- package/dist/draft-6EHV5NAN.js.map +1 -0
- package/dist/draft-EWGNZUU4.js +288 -0
- package/dist/draft-EWGNZUU4.js.map +1 -0
- package/dist/draft-EX2I6UJB.js +313 -0
- package/dist/draft-EX2I6UJB.js.map +1 -0
- package/dist/draft-FSZMTGWI.js +106 -0
- package/dist/draft-FSZMTGWI.js.map +1 -0
- package/dist/draft-GKI6MB7L.js +342 -0
- package/dist/draft-GKI6MB7L.js.map +1 -0
- package/dist/draft-P3YJZY74.js +106 -0
- package/dist/draft-P3YJZY74.js.map +1 -0
- package/dist/draft-R7BNWMBR.js +408 -0
- package/dist/draft-R7BNWMBR.js.map +1 -0
- package/dist/draft-VYIRZO3E.js +220 -0
- package/dist/engine/index.js +8 -8
- package/dist/experiments-6DOKWFH4.js +236 -0
- package/dist/facets-ZU5DT2QW.js +117 -0
- package/dist/feedback-RIUBM557.js +115 -0
- package/dist/feedback-record-3VVAUCOH.js +269 -0
- package/dist/fetch-T6TZCU74.js +204 -0
- package/dist/fit-YPOHTM7Y.js +65 -0
- package/dist/flows-CKVEZFF2.js +250 -0
- package/dist/fonts-3J3UVZ2E.js +39 -0
- package/dist/forecast-372Q6KQZ.js +169 -0
- package/dist/forecast-JEAFUR2O.js +121 -0
- package/dist/funnel-FBTNPTS7.js +397 -0
- package/dist/ga4-GDMHIFBU.js +55 -0
- package/dist/generate-JQIK3UYS.js +263 -0
- package/dist/get-5N5FCGNH.js +59 -0
- package/dist/get-EXHUQT65.js +82 -0
- package/dist/google-JHTOX6WM.js +3270 -0
- package/dist/google-ads-ZAYRCG2D.js +198 -0
- package/dist/history-4ULZ4BVV.js +153 -0
- package/dist/history-6J3XRNTZ.js +102 -0
- package/dist/history-VNLS2TKB.js +69 -0
- package/dist/hubspot-ZEHWWJHK.js +782 -0
- package/dist/ideas-SB6546GI.js +45 -0
- package/dist/images-LEZYVE7R.js +92 -0
- package/dist/ingest-4OOTCOLO.js +123 -0
- package/dist/ingest-KNJCCIBG.js +27 -0
- package/dist/insights-XY6II7TX.js +132 -0
- package/dist/inspect-MHKEYNIC.js +192 -0
- package/dist/intent-5QUPPZNI.js +95 -0
- package/dist/keyword-gap-IG3EFLDH.js +130 -0
- package/dist/keyword-metrics-EL7MO3H6.js +200 -0
- package/dist/keywords-for-site-I7KJLZ2I.js +131 -0
- package/dist/landing-Z3QGJYM3.js +28 -0
- package/dist/languages-LNHWSCMT.js +40 -0
- package/dist/leads-WQCTZYKT.js +115 -0
- package/dist/learn-6KW6TUVL.js +207 -0
- package/dist/line-item-writes-B2KSP36W.js +211 -0
- package/dist/line-items-3ICE5DBI.js +107 -0
- package/dist/link-QRQ34ZDH.js +67 -0
- package/dist/linkedin-D4RKHQPS.js +1330 -0
- package/dist/linkedin-D4RKHQPS.js.map +1 -0
- package/dist/linkedin-person-Y5TCUOXS.js +139 -0
- package/dist/list-6HZVHA6T.js +154 -0
- package/dist/list-CHYJ53JD.js +306 -0
- package/dist/list-XAMJSOGI.js +67 -0
- package/dist/locations-64JNCQID.js +69 -0
- package/dist/locations-KVAAO7LD.js +40 -0
- package/dist/log-PLXGA74X.js +95 -0
- package/dist/make-EP4YSN26.js +1367 -0
- package/dist/map-CAFMAMPP.js +436 -0
- package/dist/mcp-DDWSXLU7.js +729 -0
- package/dist/media-sources-J5FXYPV5.js +35 -0
- package/dist/members-ZA7S5KWP.js +47 -0
- package/dist/meta-XVPSGNHU.js +122 -0
- package/dist/metrics-MXGA3EFS.js +152 -0
- package/dist/models-Z6SUHWKI.js +155 -0
- package/dist/normalize-ZHM2ZVXZ.js +144 -0
- package/dist/options-JTMDZECY.js +125 -0
- package/dist/organization-5OJEJEQV.js +949 -0
- package/dist/performance-AHVTOYTM.js +5565 -0
- package/dist/performance-S273NSUB.js +27 -0
- package/dist/pixels-H642RPK4.js +62 -0
- package/dist/plan-FRRE4YQC.js +208 -0
- package/dist/promoted-tweet-writes-UF6LYMH4.js +183 -0
- package/dist/promoted-tweets-Z4GG6D7P.js +119 -0
- package/dist/publish-YQ6MHS7P.js +344 -0
- package/dist/query-FT2BA3WH.js +62 -0
- package/dist/read-7ZFZAJSQ.js +141 -0
- package/dist/reddit-YWYRZBL2.js +29 -0
- package/dist/refresh-TEXTTECA.js +97 -0
- package/dist/release-3JDETBZI.js +63 -0
- package/dist/relevant-pages-OCHLUV5K.js +99 -0
- package/dist/remove-KZTSU4K2.js +53 -0
- package/dist/reopen-GIJSFNDH.js +66 -0
- package/dist/rerun-6UZNOPUG.js +96 -0
- package/dist/research-TMKG4NQJ.js +75 -0
- package/dist/research-XA2IJ2XV.js +265 -0
- package/dist/reset-7VL6WJLE.js +57 -0
- package/dist/reset-HLZ6JHGY.js +57 -0
- package/dist/resolve-H2QW3U5Y.js +124 -0
- package/dist/retry-MIZ67MPP.js +65 -0
- package/dist/retry-WSWW6EJT.js +63 -0
- package/dist/revenue-LTU7HRT2.js +91 -0
- package/dist/rules-BGBCUUPH.js +99 -0
- package/dist/rules-add-SZT2MSOD.js +465 -0
- package/dist/run-FHGT4UQ7.js +69 -0
- package/dist/run-XUDGECLL.js +71 -0
- package/dist/scaffold-ad-VXNO3SQP.js +1513 -0
- package/dist/scaffold-static-ad-FT55VV3T.js +1011 -0
- package/dist/scaffold-video-V7WX5AWZ.js +885 -0
- package/dist/schedule-BNRLEFMZ.js +64 -0
- package/dist/scheduled-agents-MAXXXJ7W.js +55 -0
- package/dist/schema-YADPD54K.js +135 -0
- package/dist/search-56ORG4PL.js +177 -0
- package/dist/select-DON4DMNM.js +110 -0
- package/dist/set-prompt-J22TUCRU.js +199 -0
- package/dist/setup-links-CHODCBYH.js +144 -0
- package/dist/shopify-FCYU4AR6.js +3980 -0
- package/dist/shopify-FCYU4AR6.js.map +1 -0
- package/dist/site-BF3Q26W5.js +180 -0
- package/dist/sources-SLCYAWTZ.js +457 -0
- package/dist/sources-VHHC6YQM.js +30 -0
- package/dist/stale-GLVTL2ZK.js +90 -0
- package/dist/status-E3RA644P.js +65 -0
- package/dist/studio-6ZXUKA4G.js +49 -0
- package/dist/sync-6QCDDJMO.js +57 -0
- package/dist/sync-definition-DXNHGY5E.js +70 -0
- package/dist/tag-manager-74CGUGXX.js +43 -0
- package/dist/tags-AMZSQJJ2.js +26 -0
- package/dist/tags-KW7PG2TR.js +23 -0
- package/dist/tags-MGV5KG6I.js +23 -0
- package/dist/tags-TM27EIAL.js +23 -0
- package/dist/tags-VWGKVGZD.js +227 -0
- package/dist/targeting-criteria-FT3G4HAW.js +113 -0
- package/dist/targets-XLVHWO6Z.js +106 -0
- package/dist/testimonials-INXY7CXU.js +32 -0
- package/dist/themes-R3A6IVQN.js +95 -0
- package/dist/top-companies-MNX3GBCP.js +111 -0
- package/dist/transcript-GIAOWCTO.js +165 -0
- package/dist/translate-JEQ4K4AH.js +603 -0
- package/dist/triggers-KDXLDZ23.js +144 -0
- package/dist/unlink-PNBSDLBQ.js +70 -0
- package/dist/unstage-X2PDLT5O.js +88 -0
- package/dist/update-4JGHSQVZ.js +66 -0
- package/dist/update-4XUQN4LK.js +101 -0
- package/dist/update-TJTDFWER.js +155 -0
- package/dist/update-URU4TO2F.js +192 -0
- package/dist/upload-TO5EPTVD.js +130 -0
- package/dist/url-options-YZ6UG3NY.js +131 -0
- package/dist/url-params-533CWJH3.js +101 -0
- package/dist/validate-XF6HU7D4.js +125 -0
- package/dist/videos-KYZ4CUOB.js +41 -0
- package/dist/viewer-check-U5GUU34Z.js +83 -0
- package/dist/web-ZYMSMIV6.js +173 -0
- package/dist/winning-ads-BCN5RVAE.js +86 -0
- package/dist/write-commands-5Z5A3D3M.js +713 -0
- package/dist/write-commands-7DTFGM6E.js +206 -0
- package/dist/write-commands-PZZ72PNL.js +1525 -0
- package/dist/x-DLEZYTAU.js +47 -0
- package/package.json +1 -1
- package/dist/account-D236Y3BP.js +0 -82
- package/dist/account-IG3U6UXZ.js +0 -82
- package/dist/account-reads-L2GYNCD3.js +0 -219
- package/dist/account-users-A5H7FC7T.js +0 -64
- package/dist/account-writes-BSSKSTZ2.js +0 -68
- package/dist/accounts-ENS2ONLA.js +0 -701
- package/dist/accounts-RTUSISHG.js +0 -80
- package/dist/actions-3SQGXLLM.js +0 -55
- package/dist/activecampaign-MJ4SIVWY.js +0 -938
- package/dist/ad-group-writes-KMB3OMJG.js +0 -172
- package/dist/ad-groups-E67CNQS4.js +0 -70
- package/dist/ad-writes-FNMKNFUN.js +0 -176
- package/dist/add-BH2GJZ46.js +0 -305
- package/dist/add-FJJHZDVW.js +0 -107
- package/dist/ads-4LASBP4G.js +0 -79
- package/dist/ads-WE6GT2BL.js +0 -48
- package/dist/advertisers-P742OQFI.js +0 -123
- package/dist/analytics-ICV42S7D.js +0 -447
- package/dist/analytics-XCUJSG3F.js +0 -2437
- package/dist/animate-OWXAT2RK.js +0 -480
- package/dist/assign-OQYVRXCT.js +0 -80
- package/dist/audience-size-NN43B7FF.js +0 -76
- package/dist/audiences-3R574STZ.js +0 -280
- package/dist/audit-JLH2TBIL.js +0 -154
- package/dist/autocomplete-ZQAKVB6T.js +0 -114
- package/dist/avatars-JWCZ2KVM.js +0 -38
- package/dist/bid-pricing-CX3V76MC.js +0 -103
- package/dist/brand-NKHAO4TK.js +0 -22
- package/dist/brief-6RDPVD4A.js +0 -543
- package/dist/campaign-groups-3PVR3IXH.js +0 -99
- package/dist/campaign-writes-TBWAZOZ2.js +0 -168
- package/dist/campaign-writes-Z2J24SUZ.js +0 -176
- package/dist/campaigns-43OS6EUG.js +0 -78
- package/dist/campaigns-PW4XK65Y.js +0 -113
- package/dist/campaigns-RN3SPC7L.js +0 -111
- package/dist/canvas-QJI65546.js +0 -46
- package/dist/capabilities-KPQWOCTA.js +0 -147
- package/dist/catalog-7LINLVVY.js +0 -66
- package/dist/catalogs-IR22RGZD.js +0 -130
- package/dist/changes-RSEGYV45.js +0 -143
- package/dist/chatgpt-PDFFKPY2.js +0 -47
- package/dist/chats-RRD42PZ5.js +0 -449
- package/dist/check-TPP2KZY6.js +0 -107
- package/dist/chunk-3BXD6MC6.js +0 -197
- package/dist/chunk-3EUITH4J.js +0 -638
- package/dist/chunk-3MZNBHC7.js +0 -156
- package/dist/chunk-47K5MDGX.js +0 -170
- package/dist/chunk-4IRJ5JXA.js +0 -46
- package/dist/chunk-5IFFPSEN.js +0 -225
- package/dist/chunk-64ALJ6TJ.js +0 -274
- package/dist/chunk-6OIKNJ7G.js +0 -26
- package/dist/chunk-6UMQSHGK.js +0 -2209
- package/dist/chunk-7UFV6H7J.js +0 -167
- package/dist/chunk-7VDTLOSX.js +0 -344
- package/dist/chunk-7YYTE5XE.js +0 -191
- package/dist/chunk-ANUFRN3B.js +0 -334
- package/dist/chunk-B3CDNANO.js +0 -843
- package/dist/chunk-B74ZFQKS.js +0 -676
- package/dist/chunk-B74ZFQKS.js.map +0 -1
- package/dist/chunk-BDWNJRTY.js +0 -1902
- package/dist/chunk-BH3JS7EF.js +0 -91
- package/dist/chunk-BKIHYRQL.js +0 -149
- package/dist/chunk-BKIHYRQL.js.map +0 -1
- package/dist/chunk-BLGTDKIV.js +0 -831
- package/dist/chunk-BNO3EFGR.js +0 -4266
- package/dist/chunk-BNO3EFGR.js.map +0 -1
- package/dist/chunk-CXCZHEVW.js +0 -23
- package/dist/chunk-CYKFXG4R.js +0 -455
- package/dist/chunk-DD33NA2U.js +0 -89
- package/dist/chunk-DD6IMD7G.js +0 -207
- package/dist/chunk-E5H7JIWB.js +0 -3510
- package/dist/chunk-EYBIZT7T.js +0 -61
- package/dist/chunk-F3CZFUXZ.js +0 -3187
- package/dist/chunk-F3CZFUXZ.js.map +0 -1
- package/dist/chunk-FGSRPKOV.js +0 -438
- package/dist/chunk-FSK77EEM.js +0 -910
- package/dist/chunk-G2FDUCUU.js +0 -297
- package/dist/chunk-G6J6AWTE.js +0 -5471
- package/dist/chunk-GCFC2MNR.js +0 -228
- package/dist/chunk-GCZK4BMB.js +0 -5368
- package/dist/chunk-GJD43KID.js +0 -479
- package/dist/chunk-HGRCKRCF.js +0 -51
- package/dist/chunk-HMFIOE4P.js +0 -63
- package/dist/chunk-IM3GD4G3.js +0 -857
- package/dist/chunk-IUWM5XHR.js +0 -103
- package/dist/chunk-JBNT444M.js +0 -285
- package/dist/chunk-JW6VZBV7.js +0 -1646
- package/dist/chunk-KIX3ZM24.js +0 -685
- package/dist/chunk-L7AJMZ6Z.js +0 -24026
- package/dist/chunk-L7AJMZ6Z.js.map +0 -1
- package/dist/chunk-LDFM37DM.js +0 -148
- package/dist/chunk-NQF5U6FX.js +0 -150
- package/dist/chunk-ODN2LYPJ.js +0 -19
- package/dist/chunk-OKBIPYZN.js +0 -66
- package/dist/chunk-OM45JY2R.js +0 -377
- package/dist/chunk-ORLQEQDF.js +0 -203
- package/dist/chunk-OW2SDF66.js +0 -142
- package/dist/chunk-P6FMQHJJ.js +0 -131
- package/dist/chunk-PFBQERWX.js +0 -10
- package/dist/chunk-PFBQERWX.js.map +0 -1
- package/dist/chunk-Q6LCL67T.js +0 -1518
- package/dist/chunk-QB334QBO.js +0 -604
- package/dist/chunk-QJCGLIVD.js +0 -57
- package/dist/chunk-RKT6RFOR.js +0 -249
- package/dist/chunk-RM5T4MA6.js +0 -783
- package/dist/chunk-RYXGJDBK.js +0 -392
- package/dist/chunk-S47XHWFU.js +0 -7794
- package/dist/chunk-S47XHWFU.js.map +0 -1
- package/dist/chunk-SBPUCN6H.js +0 -547
- package/dist/chunk-SIKCVWM3.js +0 -76
- package/dist/chunk-SOYKSA2X.js +0 -224
- package/dist/chunk-TGW2POU6.js +0 -430
- package/dist/chunk-TGW2POU6.js.map +0 -1
- package/dist/chunk-TL6P7WDT.js +0 -387
- package/dist/chunk-TSNL3AYG.js +0 -8954
- package/dist/chunk-TTDLK73U.js +0 -494
- package/dist/chunk-V4UJERGL.js +0 -64
- package/dist/chunk-VJKLZVAM.js +0 -169
- package/dist/chunk-VZGLL54O.js +0 -930
- package/dist/chunk-WGJHVP7T.js +0 -163
- package/dist/chunk-WJ6UJBHB.js +0 -91
- package/dist/chunk-WSYZT2QI.js +0 -275
- package/dist/chunk-XU6XQPNM.js +0 -1919
- package/dist/chunk-Y2AKJYI4.js +0 -191
- package/dist/chunk-Y2AKJYI4.js.map +0 -1
- package/dist/chunk-YQB66YKJ.js +0 -98
- package/dist/claim-75KAZXLJ.js +0 -200
- package/dist/companies-IB4C245S.js +0 -198
- package/dist/company-5J2EGA42.js +0 -308
- package/dist/complete-7AT7QWZN.js +0 -84
- package/dist/config-3GCILBEL.js +0 -88
- package/dist/connect-HKVHKX44.js +0 -45
- package/dist/conversation-5OEBGDYR.js +0 -96
- package/dist/conversion-report-R4KJI4VA.js +0 -127
- package/dist/conversion-upload-command-XQQWLYHZ.js +0 -439
- package/dist/conversion-writes-XIQEIDPS.js +0 -122
- package/dist/conversions-LLVHKDOQ.js +0 -140
- package/dist/conversions-RMBQNW3T.js +0 -78
- package/dist/create-2TAKPSGG.js +0 -210
- package/dist/create-J3OXZGXC.js +0 -239
- package/dist/create-RL3L7L2S.js +0 -135
- package/dist/create-ZVTM57AZ.js +0 -62
- package/dist/creatives-3EAIKWGU.js +0 -223
- package/dist/creatives-AALLH7YU.js +0 -58
- package/dist/credentials-MS4NJHEG.js +0 -290
- package/dist/critique-KLITVZA4.js +0 -1451
- package/dist/critique-NFPZD54K.js +0 -232
- package/dist/crm-7BAHXTK4.js +0 -227
- package/dist/crm-QQ7LGCLO.js +0 -323
- package/dist/currency-XFHCLKAV.js +0 -88
- package/dist/customers-NENDLH5A.js +0 -65
- package/dist/delete-VOUXBXU3.js +0 -67
- package/dist/delete-WACZG5SD.js +0 -69
- package/dist/delete-ZCPZ2ACI.js +0 -57
- package/dist/demographics-C5EL3BI6.js +0 -141
- package/dist/discard-RQXALYQZ.js +0 -69
- package/dist/discover-R3QBVUHZ.js +0 -172
- package/dist/domain-HV2N4S3O.js +0 -101
- package/dist/download-OQFJOZFD.js +0 -172
- package/dist/draft-25YY6NMC.js +0 -396
- package/dist/draft-25YY6NMC.js.map +0 -1
- package/dist/draft-4SZHKEAW.js +0 -310
- package/dist/draft-4SZHKEAW.js.map +0 -1
- package/dist/draft-6E7EQUCU.js +0 -103
- package/dist/draft-6E7EQUCU.js.map +0 -1
- package/dist/draft-GIJCJIQ5.js +0 -240
- package/dist/draft-GIJCJIQ5.js.map +0 -1
- package/dist/draft-IXHBF7UK.js +0 -335
- package/dist/draft-IXHBF7UK.js.map +0 -1
- package/dist/draft-Q74WOMUR.js +0 -283
- package/dist/draft-Q74WOMUR.js.map +0 -1
- package/dist/draft-RK3ZAUBF.js +0 -100
- package/dist/draft-RK3ZAUBF.js.map +0 -1
- package/dist/draft-SDOXYIND.js +0 -220
- package/dist/experiments-5UC4QVZU.js +0 -236
- package/dist/facets-I2CY2STO.js +0 -117
- package/dist/feedback-WGRNI4J3.js +0 -115
- package/dist/feedback-record-C6VYJQOL.js +0 -269
- package/dist/fetch-WS4CABQN.js +0 -204
- package/dist/fit-BJH2KAKU.js +0 -65
- package/dist/flows-ZQ66S64A.js +0 -250
- package/dist/fonts-EKLOSPJA.js +0 -39
- package/dist/forecast-JOQESPEP.js +0 -169
- package/dist/forecast-KDJVAWTO.js +0 -121
- package/dist/funnel-PD7EMXAX.js +0 -397
- package/dist/ga4-SBHUQKGK.js +0 -55
- package/dist/generate-SW5KLHXG.js +0 -263
- package/dist/get-IMZPHROU.js +0 -59
- package/dist/get-PIYAY4MD.js +0 -82
- package/dist/google-Q424277P.js +0 -3270
- package/dist/google-ads-VG2ZQBAP.js +0 -198
- package/dist/history-4LN2MMCY.js +0 -102
- package/dist/history-7DF5HFJT.js +0 -69
- package/dist/history-SECNIWQQ.js +0 -153
- package/dist/hubspot-HW3DMFB2.js +0 -782
- package/dist/ideas-CIFADAYV.js +0 -45
- package/dist/images-KV7UJMNO.js +0 -92
- package/dist/ingest-3DW2YGCB.js +0 -123
- package/dist/ingest-OG3RUM2Z.js +0 -27
- package/dist/insights-YVV5MHPQ.js +0 -132
- package/dist/inspect-YJGFTVGT.js +0 -192
- package/dist/intent-5VLQBTM7.js +0 -95
- package/dist/keyword-gap-COLF7JNH.js +0 -130
- package/dist/keyword-metrics-I7OIBLCO.js +0 -200
- package/dist/keywords-for-site-DIIUKEVJ.js +0 -131
- package/dist/landing-FFAMZ3CD.js +0 -28
- package/dist/languages-RYIOZQFH.js +0 -40
- package/dist/leads-WSK4N2I6.js +0 -115
- package/dist/learn-A4LSAKRL.js +0 -207
- package/dist/line-item-writes-Q47ZVHB6.js +0 -211
- package/dist/line-items-MHIXPRTG.js +0 -107
- package/dist/link-6FVFHGP4.js +0 -67
- package/dist/linkedin-ATHYXJ4Q.js +0 -1328
- package/dist/linkedin-ATHYXJ4Q.js.map +0 -1
- package/dist/linkedin-person-3MFAKS2Y.js +0 -139
- package/dist/list-7RNRZN4W.js +0 -154
- package/dist/list-BDGTMCFP.js +0 -306
- package/dist/list-MPZF6NTD.js +0 -67
- package/dist/locations-7RYEWKJO.js +0 -69
- package/dist/locations-OF2ZI5YX.js +0 -40
- package/dist/log-MBPVGWLX.js +0 -95
- package/dist/make-DYFGYGMD.js +0 -1367
- package/dist/map-UUHQJSSU.js +0 -436
- package/dist/mcp-BH5MXQMJ.js +0 -729
- package/dist/media-sources-4BJOODBR.js +0 -35
- package/dist/members-PK2AXSE4.js +0 -47
- package/dist/meta-X46LC3GI.js +0 -122
- package/dist/metrics-PKMIG7VL.js +0 -152
- package/dist/models-X2IXXAD6.js +0 -155
- package/dist/normalize-36K2VJMB.js +0 -144
- package/dist/options-7BEM4Z5E.js +0 -125
- package/dist/organization-RSFFVT2M.js +0 -949
- package/dist/performance-4L2AFM4A.js +0 -27
- package/dist/performance-PVZ5V6YL.js +0 -5565
- package/dist/pixels-DBSPNHIE.js +0 -62
- package/dist/plan-2Q6SOHMD.js +0 -208
- package/dist/promoted-tweet-writes-UW2VRBZ2.js +0 -183
- package/dist/promoted-tweets-MJEZFPLW.js +0 -119
- package/dist/publish-XNYDOQ7I.js +0 -344
- package/dist/query-GBIWIZSS.js +0 -62
- package/dist/read-DF3UPNBM.js +0 -141
- package/dist/reddit-NLC55XYL.js +0 -29
- package/dist/refresh-5EGKQGJI.js +0 -97
- package/dist/release-RDNXS362.js +0 -63
- package/dist/relevant-pages-OZPYOGFO.js +0 -99
- package/dist/remove-OVN7XALF.js +0 -53
- package/dist/reopen-ODW3ZUEG.js +0 -66
- package/dist/rerun-3MTIAJUZ.js +0 -96
- package/dist/research-63ISQ74U.js +0 -75
- package/dist/research-RKFSB7OH.js +0 -265
- package/dist/reset-EZSCJXPC.js +0 -57
- package/dist/reset-GUJSHPHR.js +0 -57
- package/dist/resolve-BTM6MDOY.js +0 -124
- package/dist/retry-6BXQONQ3.js +0 -65
- package/dist/retry-OL2W3HFH.js +0 -63
- package/dist/revenue-P26LJFEF.js +0 -91
- package/dist/rules-MN5CBYLN.js +0 -99
- package/dist/rules-add-YPD466NS.js +0 -465
- package/dist/run-PEHYPLDQ.js +0 -69
- package/dist/run-WTN5QQ2P.js +0 -71
- package/dist/scaffold-ad-ZHZUX4Q6.js +0 -1513
- package/dist/scaffold-static-ad-SHGWFBBO.js +0 -1011
- package/dist/scaffold-video-VENWOP75.js +0 -885
- package/dist/schedule-637C6MY3.js +0 -64
- package/dist/scheduled-agents-ZUM6UUF2.js +0 -55
- package/dist/schema-NEL6O4O2.js +0 -135
- package/dist/search-36RRNTF6.js +0 -177
- package/dist/select-INJUT4PU.js +0 -110
- package/dist/set-prompt-X3DCUAGP.js +0 -199
- package/dist/setup-links-UG7S553A.js +0 -144
- package/dist/shopify-WLXZHJII.js +0 -3958
- package/dist/shopify-WLXZHJII.js.map +0 -1
- package/dist/site-YCSCW42E.js +0 -180
- package/dist/sources-HP3PRSU6.js +0 -457
- package/dist/sources-TQKN3HD7.js +0 -30
- package/dist/stale-KKBZ5FJX.js +0 -90
- package/dist/status-2HQBV7WL.js +0 -65
- package/dist/studio-OV2ZY5W3.js +0 -49
- package/dist/sync-QVPBBQAW.js +0 -57
- package/dist/sync-definition-YQJTCJJC.js +0 -70
- package/dist/tag-manager-5ORFHLM4.js +0 -43
- package/dist/tags-4VQS3QAK.js +0 -23
- package/dist/tags-TCGLKPB5.js +0 -227
- package/dist/tags-UUDTBJ6U.js +0 -23
- package/dist/tags-VJS37ZWW.js +0 -26
- package/dist/tags-YQVXWGWX.js +0 -23
- package/dist/targeting-criteria-3EXFTUMR.js +0 -113
- package/dist/targets-H7TVQ47T.js +0 -106
- package/dist/testimonials-NOLI2BVV.js +0 -32
- package/dist/themes-GD53PVOD.js +0 -95
- package/dist/top-companies-2KMUKTCC.js +0 -111
- package/dist/transcript-HJH2YNGC.js +0 -165
- package/dist/translate-X7TMHL22.js +0 -603
- package/dist/triggers-7HRFXKFZ.js +0 -144
- package/dist/unlink-G5KUMOL4.js +0 -70
- package/dist/unstage-WYJY5HKG.js +0 -88
- package/dist/update-GJ425R5V.js +0 -101
- package/dist/update-T6COJ6BO.js +0 -192
- package/dist/update-THOWGBFC.js +0 -155
- package/dist/update-WKS5QUFB.js +0 -66
- package/dist/upload-35QHU7B4.js +0 -130
- package/dist/url-options-VNNI4QXX.js +0 -131
- package/dist/url-params-3JU5W2AS.js +0 -101
- package/dist/validate-XQD5H6MU.js +0 -125
- package/dist/videos-JBJP3CZD.js +0 -41
- package/dist/viewer-check-ACRU6HY3.js +0 -83
- package/dist/web-NRG6WKRV.js +0 -173
- package/dist/winning-ads-ZKVXCS2L.js +0 -86
- package/dist/write-commands-ECCJLDLG.js +0 -1525
- package/dist/write-commands-FGWCJHLH.js +0 -713
- package/dist/write-commands-UTM7PPK5.js +0 -206
- package/dist/x-M3LIA6SI.js +0 -47
- /package/dist/{account-IG3U6UXZ.js.map → account-2HJ4GKHN.js.map} +0 -0
- /package/dist/{account-D236Y3BP.js.map → account-6GKPLNDY.js.map} +0 -0
- /package/dist/{account-reads-L2GYNCD3.js.map → account-reads-X36NPCX5.js.map} +0 -0
- /package/dist/{account-users-A5H7FC7T.js.map → account-users-FGL3DZES.js.map} +0 -0
- /package/dist/{account-writes-BSSKSTZ2.js.map → account-writes-FZ3KCJZY.js.map} +0 -0
- /package/dist/{accounts-RTUSISHG.js.map → accounts-PKSW3DBQ.js.map} +0 -0
- /package/dist/{accounts-ENS2ONLA.js.map → accounts-S5C6MZFO.js.map} +0 -0
- /package/dist/{actions-3SQGXLLM.js.map → actions-ARN3OFB7.js.map} +0 -0
- /package/dist/{activecampaign-MJ4SIVWY.js.map → activecampaign-3YJC3H2R.js.map} +0 -0
- /package/dist/{ad-group-writes-KMB3OMJG.js.map → ad-group-writes-XGG3WQEO.js.map} +0 -0
- /package/dist/{ad-groups-E67CNQS4.js.map → ad-groups-GZIPUN64.js.map} +0 -0
- /package/dist/{ad-writes-FNMKNFUN.js.map → ad-writes-2VTRWQLW.js.map} +0 -0
- /package/dist/{add-FJJHZDVW.js.map → add-CNYKQD7B.js.map} +0 -0
- /package/dist/{add-BH2GJZ46.js.map → add-IABKHM5N.js.map} +0 -0
- /package/dist/{ads-4LASBP4G.js.map → ads-LNWALF6G.js.map} +0 -0
- /package/dist/{ads-WE6GT2BL.js.map → ads-UXHJCUTX.js.map} +0 -0
- /package/dist/{advertisers-P742OQFI.js.map → advertisers-UT7EJ6YS.js.map} +0 -0
- /package/dist/{analytics-ICV42S7D.js.map → analytics-COUVH7MV.js.map} +0 -0
- /package/dist/{analytics-XCUJSG3F.js.map → analytics-EHUUNMGZ.js.map} +0 -0
- /package/dist/{animate-OWXAT2RK.js.map → animate-DM4OUJMR.js.map} +0 -0
- /package/dist/{assign-OQYVRXCT.js.map → assign-FWT5QQDF.js.map} +0 -0
- /package/dist/{audience-size-NN43B7FF.js.map → audience-size-YI2RLIG7.js.map} +0 -0
- /package/dist/{audiences-3R574STZ.js.map → audiences-7D5VPOWF.js.map} +0 -0
- /package/dist/{audit-JLH2TBIL.js.map → audit-BPRRCIWN.js.map} +0 -0
- /package/dist/{autocomplete-ZQAKVB6T.js.map → autocomplete-OD6SHZZH.js.map} +0 -0
- /package/dist/{avatars-JWCZ2KVM.js.map → avatars-FFFPCH6D.js.map} +0 -0
- /package/dist/{bid-pricing-CX3V76MC.js.map → bid-pricing-JF557IO2.js.map} +0 -0
- /package/dist/{brand-NKHAO4TK.js.map → brand-ZUYJWKI3.js.map} +0 -0
- /package/dist/{brief-6RDPVD4A.js.map → brief-CJDBD5GJ.js.map} +0 -0
- /package/dist/{campaign-groups-3PVR3IXH.js.map → campaign-groups-VCT6ZH66.js.map} +0 -0
- /package/dist/{campaign-writes-Z2J24SUZ.js.map → campaign-writes-H22P6YPW.js.map} +0 -0
- /package/dist/{campaign-writes-TBWAZOZ2.js.map → campaign-writes-YOHDMYDT.js.map} +0 -0
- /package/dist/{campaigns-43OS6EUG.js.map → campaigns-265JXD2Z.js.map} +0 -0
- /package/dist/{campaigns-PW4XK65Y.js.map → campaigns-7EGRZ3V6.js.map} +0 -0
- /package/dist/{campaigns-RN3SPC7L.js.map → campaigns-ORK5BYAM.js.map} +0 -0
- /package/dist/{canvas-QJI65546.js.map → canvas-FW5F3KZJ.js.map} +0 -0
- /package/dist/{capabilities-KPQWOCTA.js.map → capabilities-ISW7XT44.js.map} +0 -0
- /package/dist/{catalog-7LINLVVY.js.map → catalog-DPUQBZZ7.js.map} +0 -0
- /package/dist/{catalogs-IR22RGZD.js.map → catalogs-SBXFAD3X.js.map} +0 -0
- /package/dist/{changes-RSEGYV45.js.map → changes-HXVZUJMH.js.map} +0 -0
- /package/dist/{chatgpt-PDFFKPY2.js.map → chatgpt-UXJPCGZU.js.map} +0 -0
- /package/dist/{chats-RRD42PZ5.js.map → chats-FH3DQNYD.js.map} +0 -0
- /package/dist/{check-TPP2KZY6.js.map → check-QC5RHS3Z.js.map} +0 -0
- /package/dist/{chunk-CYKFXG4R.js.map → chunk-2AC5GJHC.js.map} +0 -0
- /package/dist/{chunk-DD33NA2U.js.map → chunk-2VSUMGJV.js.map} +0 -0
- /package/dist/{chunk-B3CDNANO.js.map → chunk-4D73PLXU.js.map} +0 -0
- /package/dist/{chunk-HMFIOE4P.js.map → chunk-4S5ZAG4S.js.map} +0 -0
- /package/dist/{chunk-TL6P7WDT.js.map → chunk-5MMJPUBH.js.map} +0 -0
- /package/dist/{chunk-3MZNBHC7.js.map → chunk-5Y2XPKW2.js.map} +0 -0
- /package/dist/{chunk-EYBIZT7T.js.map → chunk-6HCYCMIH.js.map} +0 -0
- /package/dist/{chunk-7VDTLOSX.js.map → chunk-6R2BQ6FK.js.map} +0 -0
- /package/dist/{chunk-G2FDUCUU.js.map → chunk-7P74QKVC.js.map} +0 -0
- /package/dist/{chunk-QB334QBO.js.map → chunk-7SJU6PQ7.js.map} +0 -0
- /package/dist/{chunk-WJ6UJBHB.js.map → chunk-A37TIYFD.js.map} +0 -0
- /package/dist/{chunk-GJD43KID.js.map → chunk-A6NVGPCZ.js.map} +0 -0
- /package/dist/{chunk-ANUFRN3B.js.map → chunk-AK7CL5IW.js.map} +0 -0
- /package/dist/{chunk-VZGLL54O.js.map → chunk-AOT3UZBM.js.map} +0 -0
- /package/dist/{chunk-SBPUCN6H.js.map → chunk-D2ZAZGQH.js.map} +0 -0
- /package/dist/{chunk-ODN2LYPJ.js.map → chunk-EB76M4ZH.js.map} +0 -0
- /package/dist/{chunk-RM5T4MA6.js.map → chunk-EOMY5SUJ.js.map} +0 -0
- /package/dist/{chunk-BDWNJRTY.js.map → chunk-EY5WWPPZ.js.map} +0 -0
- /package/dist/{chunk-CXCZHEVW.js.map → chunk-EZKT5YGX.js.map} +0 -0
- /package/dist/{chunk-NQF5U6FX.js.map → chunk-FVDC6AKZ.js.map} +0 -0
- /package/dist/{chunk-LDFM37DM.js.map → chunk-GN7K3NPI.js.map} +0 -0
- /package/dist/{chunk-SOYKSA2X.js.map → chunk-GQAKWQAV.js.map} +0 -0
- /package/dist/{chunk-YQB66YKJ.js.map → chunk-HBDWE7WK.js.map} +0 -0
- /package/dist/{chunk-OM45JY2R.js.map → chunk-HETNOUE4.js.map} +0 -0
- /package/dist/{chunk-47K5MDGX.js.map → chunk-HFAT5S5B.js.map} +0 -0
- /package/dist/{chunk-WSYZT2QI.js.map → chunk-HQ3I2QVT.js.map} +0 -0
- /package/dist/{chunk-BH3JS7EF.js.map → chunk-IN5UCEJD.js.map} +0 -0
- /package/dist/{chunk-6OIKNJ7G.js.map → chunk-JAC6JVCI.js.map} +0 -0
- /package/dist/{chunk-IM3GD4G3.js.map → chunk-JLLGXYOZ.js.map} +0 -0
- /package/dist/{chunk-E5H7JIWB.js.map → chunk-JY3OJBKZ.js.map} +0 -0
- /package/dist/{chunk-RYXGJDBK.js.map → chunk-KCRBAMFU.js.map} +0 -0
- /package/dist/{chunk-XU6XQPNM.js.map → chunk-KIXVHP2C.js.map} +0 -0
- /package/dist/{chunk-BLGTDKIV.js.map → chunk-KTY7H44G.js.map} +0 -0
- /package/dist/{chunk-HGRCKRCF.js.map → chunk-LKOMEXUB.js.map} +0 -0
- /package/dist/{chunk-WGJHVP7T.js.map → chunk-LVKAMWKJ.js.map} +0 -0
- /package/dist/{chunk-KIX3ZM24.js.map → chunk-LWCGQNVU.js.map} +0 -0
- /package/dist/{chunk-SIKCVWM3.js.map → chunk-MZPS46OR.js.map} +0 -0
- /package/dist/{chunk-FGSRPKOV.js.map → chunk-N4AIJQ4W.js.map} +0 -0
- /package/dist/{chunk-P6FMQHJJ.js.map → chunk-NBWZVBDG.js.map} +0 -0
- /package/dist/{chunk-TSNL3AYG.js.map → chunk-OKB2EAJH.js.map} +0 -0
- /package/dist/{chunk-VJKLZVAM.js.map → chunk-OT2MN5UR.js.map} +0 -0
- /package/dist/{chunk-QJCGLIVD.js.map → chunk-OZR3KUJ3.js.map} +0 -0
- /package/dist/{chunk-64ALJ6TJ.js.map → chunk-P3VY5JEM.js.map} +0 -0
- /package/dist/{chunk-JW6VZBV7.js.map → chunk-PXGR3VGW.js.map} +0 -0
- /package/dist/{chunk-G6J6AWTE.js.map → chunk-QK3HMAVU.js.map} +0 -0
- /package/dist/{chunk-3EUITH4J.js.map → chunk-RHEWQB5O.js.map} +0 -0
- /package/dist/{chunk-4IRJ5JXA.js.map → chunk-RP36XHWT.js.map} +0 -0
- /package/dist/{chunk-OKBIPYZN.js.map → chunk-RXOQZA4K.js.map} +0 -0
- /package/dist/{chunk-DD6IMD7G.js.map → chunk-SEHJ7Y7J.js.map} +0 -0
- /package/dist/{chunk-GCFC2MNR.js.map → chunk-SNWFM2DB.js.map} +0 -0
- /package/dist/{chunk-IUWM5XHR.js.map → chunk-TAGRKRFI.js.map} +0 -0
- /package/dist/{chunk-Q6LCL67T.js.map → chunk-TARINRA4.js.map} +0 -0
- /package/dist/{chunk-7UFV6H7J.js.map → chunk-TNZUMU55.js.map} +0 -0
- /package/dist/{chunk-7YYTE5XE.js.map → chunk-TP2NS5SG.js.map} +0 -0
- /package/dist/{chunk-TTDLK73U.js.map → chunk-UOXC3XA5.js.map} +0 -0
- /package/dist/{chunk-OW2SDF66.js.map → chunk-UQA6Z23M.js.map} +0 -0
- /package/dist/{chunk-V4UJERGL.js.map → chunk-VOUCQ2YW.js.map} +0 -0
- /package/dist/{chunk-6UMQSHGK.js.map → chunk-WJ5AHR4K.js.map} +0 -0
- /package/dist/{chunk-JBNT444M.js.map → chunk-WOE4TZHJ.js.map} +0 -0
- /package/dist/{chunk-GCZK4BMB.js.map → chunk-XYNQMRNX.js.map} +0 -0
- /package/dist/{chunk-ORLQEQDF.js.map → chunk-YEISVDKW.js.map} +0 -0
- /package/dist/{chunk-FSK77EEM.js.map → chunk-YNLWSP5E.js.map} +0 -0
- /package/dist/{chunk-5IFFPSEN.js.map → chunk-ZEUAJAKN.js.map} +0 -0
- /package/dist/{chunk-3BXD6MC6.js.map → chunk-ZUUVWWB5.js.map} +0 -0
- /package/dist/{chunk-RKT6RFOR.js.map → chunk-ZVAZFHH7.js.map} +0 -0
- /package/dist/{claim-75KAZXLJ.js.map → claim-FBL5VBYZ.js.map} +0 -0
- /package/dist/{companies-IB4C245S.js.map → companies-URRCAJZE.js.map} +0 -0
- /package/dist/{company-5J2EGA42.js.map → company-LDCNUPHZ.js.map} +0 -0
- /package/dist/{complete-7AT7QWZN.js.map → complete-3UGPO444.js.map} +0 -0
- /package/dist/{config-3GCILBEL.js.map → config-3VK74MY6.js.map} +0 -0
- /package/dist/{connect-HKVHKX44.js.map → connect-M5KPZQWE.js.map} +0 -0
- /package/dist/{conversation-5OEBGDYR.js.map → conversation-S7YANZJR.js.map} +0 -0
- /package/dist/{conversion-report-R4KJI4VA.js.map → conversion-report-RB2MU7UD.js.map} +0 -0
- /package/dist/{conversion-upload-command-XQQWLYHZ.js.map → conversion-upload-command-HFZYKVXA.js.map} +0 -0
- /package/dist/{conversion-writes-XIQEIDPS.js.map → conversion-writes-56AIPXPK.js.map} +0 -0
- /package/dist/{conversions-RMBQNW3T.js.map → conversions-NRX76ZIT.js.map} +0 -0
- /package/dist/{conversions-LLVHKDOQ.js.map → conversions-QZL4DSJO.js.map} +0 -0
- /package/dist/{create-ZVTM57AZ.js.map → create-56PJRLMA.js.map} +0 -0
- /package/dist/{create-2TAKPSGG.js.map → create-OE5MRW3X.js.map} +0 -0
- /package/dist/{create-J3OXZGXC.js.map → create-RL7PRIDY.js.map} +0 -0
- /package/dist/{create-RL3L7L2S.js.map → create-Y6YVJ5L4.js.map} +0 -0
- /package/dist/{creatives-3EAIKWGU.js.map → creatives-ESVH63AP.js.map} +0 -0
- /package/dist/{creatives-AALLH7YU.js.map → creatives-URHXATY6.js.map} +0 -0
- /package/dist/{credentials-MS4NJHEG.js.map → credentials-O6QSB7ZR.js.map} +0 -0
- /package/dist/{critique-KLITVZA4.js.map → critique-EWJBOCXQ.js.map} +0 -0
- /package/dist/{critique-NFPZD54K.js.map → critique-PTGGXRFG.js.map} +0 -0
- /package/dist/{crm-QQ7LGCLO.js.map → crm-F6RGNQH5.js.map} +0 -0
- /package/dist/{crm-7BAHXTK4.js.map → crm-GLPOO22Q.js.map} +0 -0
- /package/dist/{currency-XFHCLKAV.js.map → currency-CHBV6WIO.js.map} +0 -0
- /package/dist/{customers-NENDLH5A.js.map → customers-Q76FCWYO.js.map} +0 -0
- /package/dist/{delete-ZCPZ2ACI.js.map → delete-ODFDZCL3.js.map} +0 -0
- /package/dist/{delete-WACZG5SD.js.map → delete-OVMPDGWQ.js.map} +0 -0
- /package/dist/{delete-VOUXBXU3.js.map → delete-XN7N4S4H.js.map} +0 -0
- /package/dist/{demographics-C5EL3BI6.js.map → demographics-IY5RI55Z.js.map} +0 -0
- /package/dist/{discard-RQXALYQZ.js.map → discard-GKIA5FML.js.map} +0 -0
- /package/dist/{discover-R3QBVUHZ.js.map → discover-ZU2DAV23.js.map} +0 -0
- /package/dist/{domain-HV2N4S3O.js.map → domain-WGXA7OXV.js.map} +0 -0
- /package/dist/{download-OQFJOZFD.js.map → download-DYYNUGLX.js.map} +0 -0
- /package/dist/{draft-SDOXYIND.js.map → draft-VYIRZO3E.js.map} +0 -0
- /package/dist/{experiments-5UC4QVZU.js.map → experiments-6DOKWFH4.js.map} +0 -0
- /package/dist/{facets-I2CY2STO.js.map → facets-ZU5DT2QW.js.map} +0 -0
- /package/dist/{feedback-WGRNI4J3.js.map → feedback-RIUBM557.js.map} +0 -0
- /package/dist/{feedback-record-C6VYJQOL.js.map → feedback-record-3VVAUCOH.js.map} +0 -0
- /package/dist/{fetch-WS4CABQN.js.map → fetch-T6TZCU74.js.map} +0 -0
- /package/dist/{fit-BJH2KAKU.js.map → fit-YPOHTM7Y.js.map} +0 -0
- /package/dist/{flows-ZQ66S64A.js.map → flows-CKVEZFF2.js.map} +0 -0
- /package/dist/{fonts-EKLOSPJA.js.map → fonts-3J3UVZ2E.js.map} +0 -0
- /package/dist/{forecast-JOQESPEP.js.map → forecast-372Q6KQZ.js.map} +0 -0
- /package/dist/{forecast-KDJVAWTO.js.map → forecast-JEAFUR2O.js.map} +0 -0
- /package/dist/{funnel-PD7EMXAX.js.map → funnel-FBTNPTS7.js.map} +0 -0
- /package/dist/{ga4-SBHUQKGK.js.map → ga4-GDMHIFBU.js.map} +0 -0
- /package/dist/{generate-SW5KLHXG.js.map → generate-JQIK3UYS.js.map} +0 -0
- /package/dist/{get-IMZPHROU.js.map → get-5N5FCGNH.js.map} +0 -0
- /package/dist/{get-PIYAY4MD.js.map → get-EXHUQT65.js.map} +0 -0
- /package/dist/{google-Q424277P.js.map → google-JHTOX6WM.js.map} +0 -0
- /package/dist/{google-ads-VG2ZQBAP.js.map → google-ads-ZAYRCG2D.js.map} +0 -0
- /package/dist/{history-SECNIWQQ.js.map → history-4ULZ4BVV.js.map} +0 -0
- /package/dist/{history-4LN2MMCY.js.map → history-6J3XRNTZ.js.map} +0 -0
- /package/dist/{history-7DF5HFJT.js.map → history-VNLS2TKB.js.map} +0 -0
- /package/dist/{hubspot-HW3DMFB2.js.map → hubspot-ZEHWWJHK.js.map} +0 -0
- /package/dist/{ideas-CIFADAYV.js.map → ideas-SB6546GI.js.map} +0 -0
- /package/dist/{images-KV7UJMNO.js.map → images-LEZYVE7R.js.map} +0 -0
- /package/dist/{ingest-3DW2YGCB.js.map → ingest-4OOTCOLO.js.map} +0 -0
- /package/dist/{ingest-OG3RUM2Z.js.map → ingest-KNJCCIBG.js.map} +0 -0
- /package/dist/{insights-YVV5MHPQ.js.map → insights-XY6II7TX.js.map} +0 -0
- /package/dist/{inspect-YJGFTVGT.js.map → inspect-MHKEYNIC.js.map} +0 -0
- /package/dist/{intent-5VLQBTM7.js.map → intent-5QUPPZNI.js.map} +0 -0
- /package/dist/{keyword-gap-COLF7JNH.js.map → keyword-gap-IG3EFLDH.js.map} +0 -0
- /package/dist/{keyword-metrics-I7OIBLCO.js.map → keyword-metrics-EL7MO3H6.js.map} +0 -0
- /package/dist/{keywords-for-site-DIIUKEVJ.js.map → keywords-for-site-I7KJLZ2I.js.map} +0 -0
- /package/dist/{landing-FFAMZ3CD.js.map → landing-Z3QGJYM3.js.map} +0 -0
- /package/dist/{languages-RYIOZQFH.js.map → languages-LNHWSCMT.js.map} +0 -0
- /package/dist/{leads-WSK4N2I6.js.map → leads-WQCTZYKT.js.map} +0 -0
- /package/dist/{learn-A4LSAKRL.js.map → learn-6KW6TUVL.js.map} +0 -0
- /package/dist/{line-item-writes-Q47ZVHB6.js.map → line-item-writes-B2KSP36W.js.map} +0 -0
- /package/dist/{line-items-MHIXPRTG.js.map → line-items-3ICE5DBI.js.map} +0 -0
- /package/dist/{link-6FVFHGP4.js.map → link-QRQ34ZDH.js.map} +0 -0
- /package/dist/{linkedin-person-3MFAKS2Y.js.map → linkedin-person-Y5TCUOXS.js.map} +0 -0
- /package/dist/{list-7RNRZN4W.js.map → list-6HZVHA6T.js.map} +0 -0
- /package/dist/{list-BDGTMCFP.js.map → list-CHYJ53JD.js.map} +0 -0
- /package/dist/{list-MPZF6NTD.js.map → list-XAMJSOGI.js.map} +0 -0
- /package/dist/{locations-7RYEWKJO.js.map → locations-64JNCQID.js.map} +0 -0
- /package/dist/{locations-OF2ZI5YX.js.map → locations-KVAAO7LD.js.map} +0 -0
- /package/dist/{log-MBPVGWLX.js.map → log-PLXGA74X.js.map} +0 -0
- /package/dist/{make-DYFGYGMD.js.map → make-EP4YSN26.js.map} +0 -0
- /package/dist/{map-UUHQJSSU.js.map → map-CAFMAMPP.js.map} +0 -0
- /package/dist/{mcp-BH5MXQMJ.js.map → mcp-DDWSXLU7.js.map} +0 -0
- /package/dist/{media-sources-4BJOODBR.js.map → media-sources-J5FXYPV5.js.map} +0 -0
- /package/dist/{members-PK2AXSE4.js.map → members-ZA7S5KWP.js.map} +0 -0
- /package/dist/{meta-X46LC3GI.js.map → meta-XVPSGNHU.js.map} +0 -0
- /package/dist/{metrics-PKMIG7VL.js.map → metrics-MXGA3EFS.js.map} +0 -0
- /package/dist/{models-X2IXXAD6.js.map → models-Z6SUHWKI.js.map} +0 -0
- /package/dist/{normalize-36K2VJMB.js.map → normalize-ZHM2ZVXZ.js.map} +0 -0
- /package/dist/{options-7BEM4Z5E.js.map → options-JTMDZECY.js.map} +0 -0
- /package/dist/{organization-RSFFVT2M.js.map → organization-5OJEJEQV.js.map} +0 -0
- /package/dist/{performance-PVZ5V6YL.js.map → performance-AHVTOYTM.js.map} +0 -0
- /package/dist/{performance-4L2AFM4A.js.map → performance-S273NSUB.js.map} +0 -0
- /package/dist/{pixels-DBSPNHIE.js.map → pixels-H642RPK4.js.map} +0 -0
- /package/dist/{plan-2Q6SOHMD.js.map → plan-FRRE4YQC.js.map} +0 -0
- /package/dist/{promoted-tweet-writes-UW2VRBZ2.js.map → promoted-tweet-writes-UF6LYMH4.js.map} +0 -0
- /package/dist/{promoted-tweets-MJEZFPLW.js.map → promoted-tweets-Z4GG6D7P.js.map} +0 -0
- /package/dist/{publish-XNYDOQ7I.js.map → publish-YQ6MHS7P.js.map} +0 -0
- /package/dist/{query-GBIWIZSS.js.map → query-FT2BA3WH.js.map} +0 -0
- /package/dist/{read-DF3UPNBM.js.map → read-7ZFZAJSQ.js.map} +0 -0
- /package/dist/{reddit-NLC55XYL.js.map → reddit-YWYRZBL2.js.map} +0 -0
- /package/dist/{refresh-5EGKQGJI.js.map → refresh-TEXTTECA.js.map} +0 -0
- /package/dist/{release-RDNXS362.js.map → release-3JDETBZI.js.map} +0 -0
- /package/dist/{relevant-pages-OZPYOGFO.js.map → relevant-pages-OCHLUV5K.js.map} +0 -0
- /package/dist/{remove-OVN7XALF.js.map → remove-KZTSU4K2.js.map} +0 -0
- /package/dist/{reopen-ODW3ZUEG.js.map → reopen-GIJSFNDH.js.map} +0 -0
- /package/dist/{rerun-3MTIAJUZ.js.map → rerun-6UZNOPUG.js.map} +0 -0
- /package/dist/{research-63ISQ74U.js.map → research-TMKG4NQJ.js.map} +0 -0
- /package/dist/{research-RKFSB7OH.js.map → research-XA2IJ2XV.js.map} +0 -0
- /package/dist/{reset-EZSCJXPC.js.map → reset-7VL6WJLE.js.map} +0 -0
- /package/dist/{reset-GUJSHPHR.js.map → reset-HLZ6JHGY.js.map} +0 -0
- /package/dist/{resolve-BTM6MDOY.js.map → resolve-H2QW3U5Y.js.map} +0 -0
- /package/dist/{retry-6BXQONQ3.js.map → retry-MIZ67MPP.js.map} +0 -0
- /package/dist/{retry-OL2W3HFH.js.map → retry-WSWW6EJT.js.map} +0 -0
- /package/dist/{revenue-P26LJFEF.js.map → revenue-LTU7HRT2.js.map} +0 -0
- /package/dist/{rules-MN5CBYLN.js.map → rules-BGBCUUPH.js.map} +0 -0
- /package/dist/{rules-add-YPD466NS.js.map → rules-add-SZT2MSOD.js.map} +0 -0
- /package/dist/{run-PEHYPLDQ.js.map → run-FHGT4UQ7.js.map} +0 -0
- /package/dist/{run-WTN5QQ2P.js.map → run-XUDGECLL.js.map} +0 -0
- /package/dist/{scaffold-ad-ZHZUX4Q6.js.map → scaffold-ad-VXNO3SQP.js.map} +0 -0
- /package/dist/{scaffold-static-ad-SHGWFBBO.js.map → scaffold-static-ad-FT55VV3T.js.map} +0 -0
- /package/dist/{scaffold-video-VENWOP75.js.map → scaffold-video-V7WX5AWZ.js.map} +0 -0
- /package/dist/{schedule-637C6MY3.js.map → schedule-BNRLEFMZ.js.map} +0 -0
- /package/dist/{scheduled-agents-ZUM6UUF2.js.map → scheduled-agents-MAXXXJ7W.js.map} +0 -0
- /package/dist/{schema-NEL6O4O2.js.map → schema-YADPD54K.js.map} +0 -0
- /package/dist/{search-36RRNTF6.js.map → search-56ORG4PL.js.map} +0 -0
- /package/dist/{select-INJUT4PU.js.map → select-DON4DMNM.js.map} +0 -0
- /package/dist/{set-prompt-X3DCUAGP.js.map → set-prompt-J22TUCRU.js.map} +0 -0
- /package/dist/{setup-links-UG7S553A.js.map → setup-links-CHODCBYH.js.map} +0 -0
- /package/dist/{site-YCSCW42E.js.map → site-BF3Q26W5.js.map} +0 -0
- /package/dist/{sources-HP3PRSU6.js.map → sources-SLCYAWTZ.js.map} +0 -0
- /package/dist/{sources-TQKN3HD7.js.map → sources-VHHC6YQM.js.map} +0 -0
- /package/dist/{stale-KKBZ5FJX.js.map → stale-GLVTL2ZK.js.map} +0 -0
- /package/dist/{status-2HQBV7WL.js.map → status-E3RA644P.js.map} +0 -0
- /package/dist/{studio-OV2ZY5W3.js.map → studio-6ZXUKA4G.js.map} +0 -0
- /package/dist/{sync-QVPBBQAW.js.map → sync-6QCDDJMO.js.map} +0 -0
- /package/dist/{sync-definition-YQJTCJJC.js.map → sync-definition-DXNHGY5E.js.map} +0 -0
- /package/dist/{tag-manager-5ORFHLM4.js.map → tag-manager-74CGUGXX.js.map} +0 -0
- /package/dist/{tags-VJS37ZWW.js.map → tags-AMZSQJJ2.js.map} +0 -0
- /package/dist/{tags-YQVXWGWX.js.map → tags-KW7PG2TR.js.map} +0 -0
- /package/dist/{tags-UUDTBJ6U.js.map → tags-MGV5KG6I.js.map} +0 -0
- /package/dist/{tags-4VQS3QAK.js.map → tags-TM27EIAL.js.map} +0 -0
- /package/dist/{tags-TCGLKPB5.js.map → tags-VWGKVGZD.js.map} +0 -0
- /package/dist/{targeting-criteria-3EXFTUMR.js.map → targeting-criteria-FT3G4HAW.js.map} +0 -0
- /package/dist/{targets-H7TVQ47T.js.map → targets-XLVHWO6Z.js.map} +0 -0
- /package/dist/{testimonials-NOLI2BVV.js.map → testimonials-INXY7CXU.js.map} +0 -0
- /package/dist/{themes-GD53PVOD.js.map → themes-R3A6IVQN.js.map} +0 -0
- /package/dist/{top-companies-2KMUKTCC.js.map → top-companies-MNX3GBCP.js.map} +0 -0
- /package/dist/{transcript-HJH2YNGC.js.map → transcript-GIAOWCTO.js.map} +0 -0
- /package/dist/{translate-X7TMHL22.js.map → translate-JEQ4K4AH.js.map} +0 -0
- /package/dist/{triggers-7HRFXKFZ.js.map → triggers-KDXLDZ23.js.map} +0 -0
- /package/dist/{unlink-G5KUMOL4.js.map → unlink-PNBSDLBQ.js.map} +0 -0
- /package/dist/{unstage-WYJY5HKG.js.map → unstage-X2PDLT5O.js.map} +0 -0
- /package/dist/{update-WKS5QUFB.js.map → update-4JGHSQVZ.js.map} +0 -0
- /package/dist/{update-GJ425R5V.js.map → update-4XUQN4LK.js.map} +0 -0
- /package/dist/{update-THOWGBFC.js.map → update-TJTDFWER.js.map} +0 -0
- /package/dist/{update-T6COJ6BO.js.map → update-URU4TO2F.js.map} +0 -0
- /package/dist/{upload-35QHU7B4.js.map → upload-TO5EPTVD.js.map} +0 -0
- /package/dist/{url-options-VNNI4QXX.js.map → url-options-YZ6UG3NY.js.map} +0 -0
- /package/dist/{url-params-3JU5W2AS.js.map → url-params-533CWJH3.js.map} +0 -0
- /package/dist/{validate-XQD5H6MU.js.map → validate-XF6HU7D4.js.map} +0 -0
- /package/dist/{videos-JBJP3CZD.js.map → videos-KYZ4CUOB.js.map} +0 -0
- /package/dist/{viewer-check-ACRU6HY3.js.map → viewer-check-U5GUU34Z.js.map} +0 -0
- /package/dist/{web-NRG6WKRV.js.map → web-ZYMSMIV6.js.map} +0 -0
- /package/dist/{winning-ads-ZKVXCS2L.js.map → winning-ads-BCN5RVAE.js.map} +0 -0
- /package/dist/{write-commands-FGWCJHLH.js.map → write-commands-5Z5A3D3M.js.map} +0 -0
- /package/dist/{write-commands-UTM7PPK5.js.map → write-commands-7DTFGM6E.js.map} +0 -0
- /package/dist/{write-commands-ECCJLDLG.js.map → write-commands-PZZ72PNL.js.map} +0 -0
- /package/dist/{x-M3LIA6SI.js.map → x-DLEZYTAU.js.map} +0 -0
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
import {
|
|
2
|
+
handleMetaError
|
|
3
|
+
} from "./chunk-RW33IGR5.js";
|
|
4
|
+
import {
|
|
5
|
+
hintLines
|
|
6
|
+
} from "./chunk-D5FY4FAK.js";
|
|
7
|
+
import "./chunk-QALAJNBG.js";
|
|
8
|
+
import {
|
|
9
|
+
writeJsonEnvelope
|
|
10
|
+
} from "./chunk-MGWAZXY6.js";
|
|
11
|
+
import {
|
|
12
|
+
CHAT_READ_ARG,
|
|
13
|
+
DRAFT_FULL_ARG
|
|
14
|
+
} from "./chunk-X32MFGWW.js";
|
|
15
|
+
import {
|
|
16
|
+
apiPost
|
|
17
|
+
} from "./chunk-B2OHCWYB.js";
|
|
18
|
+
import "./chunk-SVUFNCOE.js";
|
|
19
|
+
import {
|
|
20
|
+
requireChatId,
|
|
21
|
+
resolveChatId
|
|
22
|
+
} from "./chunk-E54435XT.js";
|
|
23
|
+
import {
|
|
24
|
+
registerSchema
|
|
25
|
+
} from "./chunk-WCIS4FZH.js";
|
|
26
|
+
import "./chunk-YQSBHWOI.js";
|
|
27
|
+
|
|
28
|
+
// src/commands/ads/meta/draft.ts
|
|
29
|
+
import { defineCommand } from "citty";
|
|
30
|
+
|
|
31
|
+
// src/commands/ads/meta/draft-status.ts
|
|
32
|
+
var STATUS_HEADINGS = {
|
|
33
|
+
active: "staged",
|
|
34
|
+
publishing: "publishing",
|
|
35
|
+
applied: "published",
|
|
36
|
+
partial: "published with failures",
|
|
37
|
+
discarded: "discarded",
|
|
38
|
+
none: "none"
|
|
39
|
+
};
|
|
40
|
+
function plural(count, word) {
|
|
41
|
+
return `${count} ${word}${count === 1 ? "" : "s"}`;
|
|
42
|
+
}
|
|
43
|
+
function headingLine(draft) {
|
|
44
|
+
const heading = STATUS_HEADINGS[draft.status];
|
|
45
|
+
if (draft.status === "active" || draft.status === "discarded") {
|
|
46
|
+
return `Meta Ads \u2014 ${plural(draft.count, "change")} ${heading} \xB7 ${draft.mode}`;
|
|
47
|
+
}
|
|
48
|
+
const counts = /* @__PURE__ */ new Map();
|
|
49
|
+
for (const op of draft.ops) {
|
|
50
|
+
const status = op.result?.status ?? "pending";
|
|
51
|
+
counts.set(status, (counts.get(status) ?? 0) + 1);
|
|
52
|
+
}
|
|
53
|
+
const summary = [...counts].map(([status, count]) => `${count} ${status}`).join(", ");
|
|
54
|
+
return `Meta Ads \u2014 ${heading} \xB7 ${summary} \xB7 ${draft.mode}`;
|
|
55
|
+
}
|
|
56
|
+
function failedPart(result) {
|
|
57
|
+
const landed = result.landed ? ` (${result.landed})` : "";
|
|
58
|
+
return `\u2717 failed: ${result.error ?? "no reason recorded"}${landed}`;
|
|
59
|
+
}
|
|
60
|
+
function resultPart(op) {
|
|
61
|
+
const result = op.result;
|
|
62
|
+
if (!result) {
|
|
63
|
+
return void 0;
|
|
64
|
+
}
|
|
65
|
+
if (result.status === "failed") {
|
|
66
|
+
return failedPart(result);
|
|
67
|
+
}
|
|
68
|
+
if (result.status === "skipped") {
|
|
69
|
+
const because = result.skippedBecause;
|
|
70
|
+
if (because && op.dependsOn.includes(because)) {
|
|
71
|
+
return `\u2717 skipped: ${because} did not apply`;
|
|
72
|
+
}
|
|
73
|
+
return `\u2717 skipped: ${because ?? "a change it needs did not apply"}`;
|
|
74
|
+
}
|
|
75
|
+
const id = result.id ?? result.hash;
|
|
76
|
+
const applied = `\u2713 ${result.status}${id ? ` \u2192 ${id}` : ""}`;
|
|
77
|
+
const verification = result.verification;
|
|
78
|
+
if (verification && verification.status !== "confirmed") {
|
|
79
|
+
return `${applied} (read-back ${verification.status}${verification.note ? `: ${verification.note}` : ""})`;
|
|
80
|
+
}
|
|
81
|
+
return applied;
|
|
82
|
+
}
|
|
83
|
+
function opLine(op, showAccount) {
|
|
84
|
+
const parts = [op.ref, op.kind, op.summary];
|
|
85
|
+
if (op.target && op.target !== op.ref) {
|
|
86
|
+
parts.push(`target ${op.target}`);
|
|
87
|
+
}
|
|
88
|
+
if (showAccount) {
|
|
89
|
+
parts.push(`account ${op.accountId}`);
|
|
90
|
+
}
|
|
91
|
+
if (op.dependsOn.length > 0) {
|
|
92
|
+
parts.push(`after ${op.dependsOn.join(", ")}`);
|
|
93
|
+
}
|
|
94
|
+
const result = resultPart(op);
|
|
95
|
+
if (result) {
|
|
96
|
+
parts.push(result);
|
|
97
|
+
}
|
|
98
|
+
return ` ${parts.join(" \xB7 ").replace(/[\r\n]+/g, " ")}`;
|
|
99
|
+
}
|
|
100
|
+
function renderDraftStatus(draft) {
|
|
101
|
+
if (draft.status === "none" || draft.count === 0) {
|
|
102
|
+
return "No staged Meta changes on this chat.";
|
|
103
|
+
}
|
|
104
|
+
const lines = [headingLine(draft)];
|
|
105
|
+
if (draft.status === "active") {
|
|
106
|
+
lines.push("Publishing makes every change real on the ad account.");
|
|
107
|
+
}
|
|
108
|
+
lines.push("");
|
|
109
|
+
const showAccount = new Set(draft.ops.map((op) => op.accountId)).size > 1;
|
|
110
|
+
for (const op of draft.ops) {
|
|
111
|
+
lines.push(opLine(op, showAccount));
|
|
112
|
+
}
|
|
113
|
+
if (draft.advisories.length > 0) {
|
|
114
|
+
lines.push("", "Advisories");
|
|
115
|
+
for (const advisory of draft.advisories) {
|
|
116
|
+
lines.push(` ! ${advisory.ref}: ${advisory.message}`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
lines.push("", "Full staged payload for one op: baker ads meta draft show <ref> \xB7 raw envelope: --json");
|
|
120
|
+
return lines.join("\n");
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// src/commands/ads/meta/draft.ts
|
|
124
|
+
registerSchema({
|
|
125
|
+
command: "ads.meta.draft",
|
|
126
|
+
description: "Review every Meta op staged on this chat, one line each: ref \xB7 kind \xB7 summary \xB7 what it waits on, and after a publish \u2713 applied \u2192 id or \u2717 failed: <error>. `draft show <ref>` prints one op's full payload.",
|
|
127
|
+
args: {
|
|
128
|
+
json: { type: "boolean", description: "Raw JSON envelope instead of the readable list", required: false },
|
|
129
|
+
full: { type: "boolean", description: DRAFT_FULL_ARG.description, required: false },
|
|
130
|
+
chat: { type: "string", description: "Read another chat's draft instead of this one", required: false }
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
async function listDraft(json, chat, full = false) {
|
|
134
|
+
try {
|
|
135
|
+
const chatId = resolveChatId(chat);
|
|
136
|
+
const response = await apiPost("/api/ads/meta/draft", {
|
|
137
|
+
chatId,
|
|
138
|
+
...full ? { full: true } : {}
|
|
139
|
+
});
|
|
140
|
+
if (json || full || !response.ok || !response.data) {
|
|
141
|
+
writeJsonEnvelope(response);
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
process.stdout.write(`${renderDraftStatus(response.data)}${hintLines(response)}
|
|
145
|
+
`);
|
|
146
|
+
} catch (err) {
|
|
147
|
+
handleMetaError(err);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
var listCommand = defineCommand({
|
|
151
|
+
meta: {
|
|
152
|
+
name: "list",
|
|
153
|
+
description: "Show every Meta write op staged in this chat, one line each (ref \xB7 kind \xB7 summary \xB7 dependencies \xB7 post-publish result); --json for the raw envelope, --full for every op's payload too. Publishing reaches the real ad account, so review this before you finish. Example: baker ads meta draft"
|
|
154
|
+
},
|
|
155
|
+
args: {
|
|
156
|
+
json: { type: "boolean", description: "Print the raw JSON envelope instead of the readable list" },
|
|
157
|
+
full: DRAFT_FULL_ARG,
|
|
158
|
+
chat: CHAT_READ_ARG
|
|
159
|
+
},
|
|
160
|
+
run: async ({ args }) => {
|
|
161
|
+
await listDraft(args.json === true, args.chat, args.full === true);
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
var showCommand = defineCommand({
|
|
165
|
+
meta: {
|
|
166
|
+
name: "show",
|
|
167
|
+
description: "Print the full staged payload for one op \u2014 the receipt to verify a change looks right before publish (never truncated). Example: baker ads meta draft show meta_temp_abc123"
|
|
168
|
+
},
|
|
169
|
+
args: {
|
|
170
|
+
ref: { type: "positional", description: "Op ref (meta_temp_* for creates, target id for updates)", required: true },
|
|
171
|
+
// `show` always prints the envelope; `--json` is the spelling `list` taught, so it is accepted here too.
|
|
172
|
+
json: { type: "boolean", description: "Accepted for symmetry with list; show always prints the JSON envelope" },
|
|
173
|
+
chat: CHAT_READ_ARG
|
|
174
|
+
},
|
|
175
|
+
run: async ({ args }) => {
|
|
176
|
+
try {
|
|
177
|
+
const chatId = resolveChatId(args.chat);
|
|
178
|
+
const response = await apiPost("/api/ads/meta/draft/show", {
|
|
179
|
+
chatId,
|
|
180
|
+
ref: args.ref
|
|
181
|
+
});
|
|
182
|
+
writeJsonEnvelope(response);
|
|
183
|
+
} catch (err) {
|
|
184
|
+
handleMetaError(err);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
var removeCommand = defineCommand({
|
|
189
|
+
meta: {
|
|
190
|
+
name: "remove",
|
|
191
|
+
description: "Drop one staged Meta op. Removing a create cascades to everything that depends on it. Example: baker ads meta draft remove meta_temp_abc123"
|
|
192
|
+
},
|
|
193
|
+
args: {
|
|
194
|
+
ref: { type: "positional", description: "Op ref (meta_temp_* for creates, target id for updates)", required: true }
|
|
195
|
+
},
|
|
196
|
+
run: async ({ args }) => {
|
|
197
|
+
try {
|
|
198
|
+
const chatId = requireChatId();
|
|
199
|
+
const response = await apiPost("/api/ads/meta/draft/remove", {
|
|
200
|
+
chatId,
|
|
201
|
+
ref: args.ref
|
|
202
|
+
});
|
|
203
|
+
writeJsonEnvelope(response);
|
|
204
|
+
} catch (err) {
|
|
205
|
+
handleMetaError(err);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
var clearCommand = defineCommand({
|
|
210
|
+
meta: {
|
|
211
|
+
name: "clear",
|
|
212
|
+
description: "Discard ALL staged Meta ops in this chat's draft \u2014 nothing will apply on publish. Example: baker ads meta draft clear"
|
|
213
|
+
},
|
|
214
|
+
run: async () => {
|
|
215
|
+
try {
|
|
216
|
+
const chatId = requireChatId();
|
|
217
|
+
const response = await apiPost("/api/ads/meta/draft/clear", {
|
|
218
|
+
chatId
|
|
219
|
+
});
|
|
220
|
+
writeJsonEnvelope(response);
|
|
221
|
+
} catch (err) {
|
|
222
|
+
handleMetaError(err);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
var metaDraftCommand = defineCommand({
|
|
227
|
+
meta: {
|
|
228
|
+
name: "draft",
|
|
229
|
+
description: "Review and edit the Meta write ops staged in this chat BEFORE publish. Subcommands: list (default), show, remove, clear. Ops never hit Meta until the chat is published. `list` and `show` take --chat <id> to read an earlier chat's changes instead."
|
|
230
|
+
},
|
|
231
|
+
// Declared on the parent too: `default: "list"` dispatches the bare `draft --chat <id>` form, and
|
|
232
|
+
// citty prints help for a flag the parent does not know instead of forwarding it.
|
|
233
|
+
args: {
|
|
234
|
+
json: { type: "boolean", description: "Print the raw JSON envelope instead of the readable list" },
|
|
235
|
+
full: DRAFT_FULL_ARG,
|
|
236
|
+
chat: CHAT_READ_ARG
|
|
237
|
+
},
|
|
238
|
+
subCommands: { list: listCommand, show: showCommand, remove: removeCommand, clear: clearCommand },
|
|
239
|
+
// `default` (not `run`) dispatches the bare invocation: citty falls through to `run`
|
|
240
|
+
// after dispatching a subcommand, so a `run` here would list the draft a second time
|
|
241
|
+
// on every `draft list` / `draft remove` / `draft clear`.
|
|
242
|
+
default: "list"
|
|
243
|
+
});
|
|
244
|
+
export {
|
|
245
|
+
metaDraftCommand
|
|
246
|
+
};
|
|
247
|
+
//# sourceMappingURL=draft-6EHV5NAN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/ads/meta/draft.ts","../src/commands/ads/meta/draft-status.ts"],"sourcesContent":["import type {\n MetaDraftClearResponse,\n MetaDraftListResponse,\n MetaDraftRemoveResponse,\n MetaDraftShowResponse,\n} from \"@baker/api/ads-meta\";\nimport { defineCommand } from \"citty\";\nimport { apiPost } from \"../../../client.ts\";\nimport { requireChatId, resolveChatId } from \"../../../env.ts\";\nimport { registerSchema } from \"../../../schemas.ts\";\nimport { CHAT_READ_ARG, DRAFT_FULL_ARG } from \"../../chat-arg.ts\";\nimport { hintLines } from \"../hints.ts\";\nimport { writeJsonEnvelope } from \"../output.ts\";\nimport { renderDraftStatus } from \"./draft-status.ts\";\nimport { handleMetaError } from \"./shared.ts\";\n\nregisterSchema({\n command: \"ads.meta.draft\",\n description:\n \"Review every Meta op staged on this chat, one line each: ref · kind · summary · what it waits on, and after a publish ✓ applied → id or ✗ failed: <error>. `draft show <ref>` prints one op's full payload.\",\n args: {\n json: { type: \"boolean\", description: \"Raw JSON envelope instead of the readable list\", required: false },\n full: { type: \"boolean\", description: DRAFT_FULL_ARG.description, required: false },\n chat: { type: \"string\", description: \"Read another chat's draft instead of this one\", required: false },\n },\n});\n\n/**\n * The readable one-line-per-op view is the default, like the Google, LinkedIn and X drafts;\n * `--json` (or `--output json`) returns the raw envelope for tools.\n */\nasync function listDraft(json: boolean, chat?: unknown, full = false): Promise<void> {\n try {\n const chatId = resolveChatId(chat);\n const response = await apiPost<{ ok: boolean; data?: MetaDraftListResponse }>(\"/api/ads/meta/draft\", {\n chatId,\n ...(full ? { full: true } : {}),\n });\n if (json || full || !response.ok || !response.data) {\n writeJsonEnvelope(response);\n return;\n }\n process.stdout.write(`${renderDraftStatus(response.data)}${hintLines(response)}\\n`);\n } catch (err) {\n handleMetaError(err);\n }\n}\n\nconst listCommand = defineCommand({\n meta: {\n name: \"list\",\n description:\n \"Show every Meta write op staged in this chat, one line each (ref · kind · summary · dependencies · post-publish result); --json for the raw envelope, --full for every op's payload too. Publishing reaches the real ad account, so review this before you finish. Example: baker ads meta draft\",\n },\n args: {\n json: { type: \"boolean\", description: \"Print the raw JSON envelope instead of the readable list\" },\n full: DRAFT_FULL_ARG,\n chat: CHAT_READ_ARG,\n },\n run: async ({ args }) => {\n await listDraft(args.json === true, args.chat, args.full === true);\n },\n});\n\nconst showCommand = defineCommand({\n meta: {\n name: \"show\",\n description:\n \"Print the full staged payload for one op — the receipt to verify a change looks right before publish (never truncated). Example: baker ads meta draft show meta_temp_abc123\",\n },\n args: {\n ref: { type: \"positional\", description: \"Op ref (meta_temp_* for creates, target id for updates)\", required: true },\n // `show` always prints the envelope; `--json` is the spelling `list` taught, so it is accepted here too.\n json: { type: \"boolean\", description: \"Accepted for symmetry with list; show always prints the JSON envelope\" },\n chat: CHAT_READ_ARG,\n },\n run: async ({ args }) => {\n try {\n const chatId = resolveChatId(args.chat);\n const response = await apiPost<{ ok: true; data: MetaDraftShowResponse }>(\"/api/ads/meta/draft/show\", {\n chatId,\n ref: args.ref,\n });\n writeJsonEnvelope(response);\n } catch (err) {\n handleMetaError(err);\n }\n },\n});\n\nconst removeCommand = defineCommand({\n meta: {\n name: \"remove\",\n description:\n \"Drop one staged Meta op. Removing a create cascades to everything that depends on it. Example: baker ads meta draft remove meta_temp_abc123\",\n },\n args: {\n ref: { type: \"positional\", description: \"Op ref (meta_temp_* for creates, target id for updates)\", required: true },\n },\n run: async ({ args }) => {\n try {\n const chatId = requireChatId();\n const response = await apiPost<{ ok: true; data: MetaDraftRemoveResponse }>(\"/api/ads/meta/draft/remove\", {\n chatId,\n ref: args.ref,\n });\n writeJsonEnvelope(response);\n } catch (err) {\n handleMetaError(err);\n }\n },\n});\n\nconst clearCommand = defineCommand({\n meta: {\n name: \"clear\",\n description:\n \"Discard ALL staged Meta ops in this chat's draft — nothing will apply on publish. Example: baker ads meta draft clear\",\n },\n run: async () => {\n try {\n const chatId = requireChatId();\n const response = await apiPost<{ ok: true; data: MetaDraftClearResponse }>(\"/api/ads/meta/draft/clear\", {\n chatId,\n });\n writeJsonEnvelope(response);\n } catch (err) {\n handleMetaError(err);\n }\n },\n});\n\nexport const metaDraftCommand = defineCommand({\n meta: {\n name: \"draft\",\n description:\n \"Review and edit the Meta write ops staged in this chat BEFORE publish. Subcommands: list (default), show, remove, clear. Ops never hit Meta until the chat is published. `list` and `show` take --chat <id> to read an earlier chat's changes instead.\",\n },\n // Declared on the parent too: `default: \"list\"` dispatches the bare `draft --chat <id>` form, and\n // citty prints help for a flag the parent does not know instead of forwarding it.\n args: {\n json: { type: \"boolean\", description: \"Print the raw JSON envelope instead of the readable list\" },\n full: DRAFT_FULL_ARG,\n chat: CHAT_READ_ARG,\n },\n subCommands: { list: listCommand, show: showCommand, remove: removeCommand, clear: clearCommand },\n // `default` (not `run`) dispatches the bare invocation: citty falls through to `run`\n // after dispatching a subcommand, so a `run` here would list the draft a second time\n // on every `draft list` / `draft remove` / `draft clear`.\n default: \"list\",\n});\n","import type { MetaDraftListResponse, MetaDraftOpView } from \"@baker/api/ads-meta\";\n\n/**\n * Render the staged Meta draft as one line per op — ref, kind, summary, what it\n * waits on and, after a publish, what happened to it. The Google, LinkedIn and\n * X drafts already print a readable view by default; Meta printed the pretty\n * JSON envelope, and agents piped every read through python to get these same\n * columns back. Pure: takes the draft-list response, returns text.\n */\n\nconst STATUS_HEADINGS: Record<MetaDraftListResponse[\"status\"], string> = {\n active: \"staged\",\n publishing: \"publishing\",\n applied: \"published\",\n partial: \"published with failures\",\n discarded: \"discarded\",\n none: \"none\",\n};\n\nfunction plural(count: number, word: string): string {\n return `${count} ${word}${count === 1 ? \"\" : \"s\"}`;\n}\n\nfunction headingLine(draft: MetaDraftListResponse): string {\n const heading = STATUS_HEADINGS[draft.status];\n if (draft.status === \"active\" || draft.status === \"discarded\") {\n return `Meta Ads — ${plural(draft.count, \"change\")} ${heading} · ${draft.mode}`;\n }\n const counts = new Map<string, number>();\n for (const op of draft.ops) {\n const status = op.result?.status ?? \"pending\";\n counts.set(status, (counts.get(status) ?? 0) + 1);\n }\n const summary = [...counts].map(([status, count]) => `${count} ${status}`).join(\", \");\n return `Meta Ads — ${heading} · ${summary} · ${draft.mode}`;\n}\n\n/** A failed op: why, and what of it already reached Meta. */\nfunction failedPart(result: NonNullable<MetaDraftOpView[\"result\"]>): string {\n const landed = result.landed ? ` (${result.landed})` : \"\";\n return `✗ failed: ${result.error ?? \"no reason recorded\"}${landed}`;\n}\n\nfunction resultPart(op: MetaDraftOpView): string | undefined {\n const result = op.result;\n if (!result) {\n return undefined;\n }\n if (result.status === \"failed\") {\n return failedPart(result);\n }\n if (result.status === \"skipped\") {\n // Publish records either the dependency ref that did not apply or a plain reason; either way the op is finished.\n const because = result.skippedBecause;\n if (because && op.dependsOn.includes(because)) {\n return `✗ skipped: ${because} did not apply`;\n }\n return `✗ skipped: ${because ?? \"a change it needs did not apply\"}`;\n }\n const id = result.id ?? result.hash;\n const applied = `✓ ${result.status}${id ? ` → ${id}` : \"\"}`;\n const verification = result.verification;\n if (verification && verification.status !== \"confirmed\") {\n return `${applied} (read-back ${verification.status}${verification.note ? `: ${verification.note}` : \"\"})`;\n }\n return applied;\n}\n\nfunction opLine(op: MetaDraftOpView, showAccount: boolean): string {\n const parts = [op.ref, op.kind, op.summary];\n if (op.target && op.target !== op.ref) {\n parts.push(`target ${op.target}`);\n }\n if (showAccount) {\n parts.push(`account ${op.accountId}`);\n }\n if (op.dependsOn.length > 0) {\n parts.push(`after ${op.dependsOn.join(\", \")}`);\n }\n const result = resultPart(op);\n if (result) {\n parts.push(result);\n }\n // Creative copy and provider errors can carry line breaks; one op stays one line.\n return ` ${parts.join(\" · \").replace(/[\\r\\n]+/g, \" \")}`;\n}\n\nexport function renderDraftStatus(draft: MetaDraftListResponse): string {\n if (draft.status === \"none\" || draft.count === 0) {\n return \"No staged Meta changes on this chat.\";\n }\n const lines = [headingLine(draft)];\n if (draft.status === \"active\") {\n lines.push(\"Publishing makes every change real on the ad account.\");\n }\n lines.push(\"\");\n // A draft may span several ad accounts; the account is only noise when there is one.\n const showAccount = new Set(draft.ops.map((op) => op.accountId)).size > 1;\n for (const op of draft.ops) {\n lines.push(opLine(op, showAccount));\n }\n if (draft.advisories.length > 0) {\n lines.push(\"\", \"Advisories\");\n for (const advisory of draft.advisories) {\n lines.push(` ! ${advisory.ref}: ${advisory.message}`);\n }\n }\n lines.push(\"\", \"Full staged payload for one op: baker ads meta draft show <ref> · raw envelope: --json\");\n return lines.join(\"\\n\");\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
import {
|
|
2
|
+
failWriteValidation,
|
|
3
|
+
schemaArgs
|
|
4
|
+
} from "./chunk-P3VY5JEM.js";
|
|
5
|
+
import {
|
|
6
|
+
CHATGPT_ADS_REFERENCE,
|
|
7
|
+
chatgptFailure
|
|
8
|
+
} from "./chunk-EBWOLUII.js";
|
|
9
|
+
import {
|
|
10
|
+
writeJsonEnvelope
|
|
11
|
+
} from "./chunk-MGWAZXY6.js";
|
|
12
|
+
import {
|
|
13
|
+
CHAT_READ_ARG,
|
|
14
|
+
DRAFT_FULL_ARG
|
|
15
|
+
} from "./chunk-X32MFGWW.js";
|
|
16
|
+
import "./chunk-SOPVIIUW.js";
|
|
17
|
+
import "./chunk-G4FG5EQO.js";
|
|
18
|
+
import {
|
|
19
|
+
apiPost
|
|
20
|
+
} from "./chunk-B2OHCWYB.js";
|
|
21
|
+
import "./chunk-SVUFNCOE.js";
|
|
22
|
+
import {
|
|
23
|
+
requireChatId,
|
|
24
|
+
resolveChatId
|
|
25
|
+
} from "./chunk-E54435XT.js";
|
|
26
|
+
import {
|
|
27
|
+
registerSchema
|
|
28
|
+
} from "./chunk-WCIS4FZH.js";
|
|
29
|
+
import "./chunk-YQSBHWOI.js";
|
|
30
|
+
|
|
31
|
+
// src/commands/ads/chatgpt/draft.ts
|
|
32
|
+
import { readFileSync } from "fs";
|
|
33
|
+
import { defineCommand } from "citty";
|
|
34
|
+
|
|
35
|
+
// src/commands/ads/chatgpt/draft-status.ts
|
|
36
|
+
var OPERATION_LABELS = {
|
|
37
|
+
create: { staged: "Creating", done: "Created", notDone: "Not created" },
|
|
38
|
+
update: { staged: "Updating", done: "Updated", notDone: "Not updated" },
|
|
39
|
+
pause: { staged: "Pausing", done: "Paused", notDone: "Not paused" },
|
|
40
|
+
resume: { staged: "Resuming", done: "Resumed", notDone: "Not resumed" },
|
|
41
|
+
archive: { staged: "Archiving", done: "Archived", notDone: "Not archived" }
|
|
42
|
+
};
|
|
43
|
+
var STATUS_HEADINGS = {
|
|
44
|
+
active: "staged",
|
|
45
|
+
publishing: "publishing",
|
|
46
|
+
applied: "published",
|
|
47
|
+
discarded: "discarded"
|
|
48
|
+
};
|
|
49
|
+
function badge(node) {
|
|
50
|
+
const label = node.operation ? OPERATION_LABELS[node.operation] : void 0;
|
|
51
|
+
if (!label) {
|
|
52
|
+
return node.existing ? "on ChatGPT Ads" : "staged";
|
|
53
|
+
}
|
|
54
|
+
if (node.outcome === "applied") {
|
|
55
|
+
return label.done;
|
|
56
|
+
}
|
|
57
|
+
return node.outcome ? `${label.notDone} (${node.outcome})` : label.staged;
|
|
58
|
+
}
|
|
59
|
+
function renderNode(node, depth, out) {
|
|
60
|
+
const indent = " ".repeat(depth);
|
|
61
|
+
out.push(`${indent}${node.entity}: ${node.name} \u2014 ${badge(node)}`);
|
|
62
|
+
for (const warning of node.warnings ?? []) {
|
|
63
|
+
out.push(`${indent} ! ${warning}`);
|
|
64
|
+
}
|
|
65
|
+
for (const child of node.children) {
|
|
66
|
+
renderNode(child, depth + 1, out);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
function didNotApply(op) {
|
|
70
|
+
return op.result?.status === "failed" || op.result?.status === "skipped";
|
|
71
|
+
}
|
|
72
|
+
function didApply(op) {
|
|
73
|
+
return op.result?.status === "applied" || op.result?.status === "simulated";
|
|
74
|
+
}
|
|
75
|
+
function headingLine(draft) {
|
|
76
|
+
const heading = STATUS_HEADINGS[draft.status] ?? draft.status;
|
|
77
|
+
if (draft.status !== "applied" && draft.status !== "publishing") {
|
|
78
|
+
return `ChatGPT Ads: ${draft.count} change${draft.count === 1 ? "" : "s"} ${heading}`;
|
|
79
|
+
}
|
|
80
|
+
const applied = draft.ops.filter(didApply).length;
|
|
81
|
+
const failed = draft.ops.filter(didNotApply).length;
|
|
82
|
+
return `ChatGPT Ads: ${heading} \xB7 ${applied} applied${failed > 0 ? `, ${failed} failed` : ""}`;
|
|
83
|
+
}
|
|
84
|
+
function renderChatgptDraftStatus(draft) {
|
|
85
|
+
if (draft.status === "none" || draft.count === 0) {
|
|
86
|
+
return "No ChatGPT Ads changes staged";
|
|
87
|
+
}
|
|
88
|
+
const out = [headingLine(draft), ""];
|
|
89
|
+
for (const node of draft.tree ?? []) {
|
|
90
|
+
renderNode(node, 0, out);
|
|
91
|
+
}
|
|
92
|
+
const summaryByRef = new Map(draft.ops.map((op) => [op.ref, op.summary]));
|
|
93
|
+
const problems = draft.ops.filter(didNotApply).map((op) => {
|
|
94
|
+
if (op.result?.status === "failed") {
|
|
95
|
+
return `\u2717 ${op.summary} \u2014 failed: ${op.result.error ?? "ChatGPT Ads gave no reason"}`;
|
|
96
|
+
}
|
|
97
|
+
const waitedOn = op.result?.skippedBecause;
|
|
98
|
+
const parent = (waitedOn && summaryByRef.get(waitedOn)) ?? "a change that did not apply";
|
|
99
|
+
return `\u2717 ${op.summary} \u2014 skipped: waiting on ${parent}, which did not apply`;
|
|
100
|
+
});
|
|
101
|
+
if (problems.length > 0) {
|
|
102
|
+
out.push("", ...problems);
|
|
103
|
+
}
|
|
104
|
+
return out.join("\n");
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// src/commands/ads/chatgpt/draft.ts
|
|
108
|
+
async function run(call) {
|
|
109
|
+
try {
|
|
110
|
+
writeJsonEnvelope({ ok: true, data: await call() });
|
|
111
|
+
} catch (err) {
|
|
112
|
+
writeJsonEnvelope({ ...chatgptFailure(err, CHATGPT_ADS_REFERENCE.overview) });
|
|
113
|
+
process.exit(1);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
var LIST_ARGS = {
|
|
117
|
+
json: { type: "boolean", description: "Print the raw JSON envelope instead of the readable tree" },
|
|
118
|
+
full: DRAFT_FULL_ARG,
|
|
119
|
+
chat: CHAT_READ_ARG
|
|
120
|
+
};
|
|
121
|
+
registerSchema({
|
|
122
|
+
command: "ads.chatgpt.draft",
|
|
123
|
+
description: "Review everything staged for ChatGPT Ads on this chat as a Campaign \u25B8 Ad group \u25B8 Ad tree. After a publish this is the authoritative record: `published \xB7 N applied`, or a `\u2717 \u2026 failed:` line per change that did not land, with ChatGPT Ads' reason.",
|
|
124
|
+
args: schemaArgs(LIST_ARGS)
|
|
125
|
+
});
|
|
126
|
+
var listCommand = defineCommand({
|
|
127
|
+
meta: {
|
|
128
|
+
name: "list",
|
|
129
|
+
description: "Review everything staged as a Campaign \u25B8 Ad group \u25B8 Ad tree. Example: baker ads chatgpt draft"
|
|
130
|
+
},
|
|
131
|
+
args: LIST_ARGS,
|
|
132
|
+
run: async ({ args }) => {
|
|
133
|
+
try {
|
|
134
|
+
const full = args.full === true;
|
|
135
|
+
const draft = await apiPost("/api/ads/chatgpt/draft", {
|
|
136
|
+
chatId: resolveChatId(args.chat),
|
|
137
|
+
...full ? { full: true } : {}
|
|
138
|
+
});
|
|
139
|
+
if (args.json === true || full) {
|
|
140
|
+
writeJsonEnvelope({ ok: true, data: draft });
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
process.stdout.write(`${renderChatgptDraftStatus(draft)}
|
|
144
|
+
`);
|
|
145
|
+
} catch (err) {
|
|
146
|
+
writeJsonEnvelope({ ...chatgptFailure(err, CHATGPT_ADS_REFERENCE.overview) });
|
|
147
|
+
process.exit(1);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
var SHOW_ARGS = {
|
|
152
|
+
ref: {
|
|
153
|
+
type: "positional",
|
|
154
|
+
description: "Op ref (chatgpt_temp_* for creates), or the target id for a staged update",
|
|
155
|
+
required: true
|
|
156
|
+
},
|
|
157
|
+
chat: CHAT_READ_ARG
|
|
158
|
+
};
|
|
159
|
+
registerSchema({
|
|
160
|
+
command: "ads.chatgpt.draft.show",
|
|
161
|
+
description: "The full staged payload, warnings and before-snapshot for one change \u2014 the receipt to check before publishing.",
|
|
162
|
+
args: schemaArgs(SHOW_ARGS)
|
|
163
|
+
});
|
|
164
|
+
var showCommand = defineCommand({
|
|
165
|
+
meta: {
|
|
166
|
+
name: "show",
|
|
167
|
+
description: "Show one staged change in full. Example: baker ads chatgpt draft show chatgpt_temp_ab12"
|
|
168
|
+
},
|
|
169
|
+
args: SHOW_ARGS,
|
|
170
|
+
run: async ({ args }) => {
|
|
171
|
+
await run(
|
|
172
|
+
() => apiPost("/api/ads/chatgpt/draft/show", {
|
|
173
|
+
chatId: resolveChatId(args.chat),
|
|
174
|
+
ref: String(args.ref)
|
|
175
|
+
})
|
|
176
|
+
);
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
var AMEND_ARGS = {
|
|
180
|
+
ref: { type: "positional", description: "Op ref or target id", required: true },
|
|
181
|
+
patch: { type: "positional", description: "JSON object, or @path to a file holding one", required: true }
|
|
182
|
+
};
|
|
183
|
+
registerSchema({
|
|
184
|
+
command: "ads.chatgpt.draft.amend",
|
|
185
|
+
description: "Change a staged op in place instead of removing and re-staging it. The patch merges into the payload (JSON merge-patch: `null` deletes a key; money is in micros) and the whole op re-validates.",
|
|
186
|
+
args: schemaArgs(AMEND_ARGS)
|
|
187
|
+
});
|
|
188
|
+
var amendCommand = defineCommand({
|
|
189
|
+
meta: {
|
|
190
|
+
name: "amend",
|
|
191
|
+
description: `Change a staged op in place. Money in the payload is micros: 20 = 20000000.
|
|
192
|
+
|
|
193
|
+
Example:
|
|
194
|
+
baker ads chatgpt draft amend chatgpt_temp_ab12 '{"dailyBudgetMicros": 30000000}'`
|
|
195
|
+
},
|
|
196
|
+
args: AMEND_ARGS,
|
|
197
|
+
run: async ({ args }) => {
|
|
198
|
+
const raw = String(args.patch);
|
|
199
|
+
let patch;
|
|
200
|
+
try {
|
|
201
|
+
patch = JSON.parse(raw.startsWith("@") ? readFileSync(raw.slice(1), "utf8") : raw);
|
|
202
|
+
} catch {
|
|
203
|
+
failWriteValidation("patch must be a JSON object, or @path to a file holding one");
|
|
204
|
+
}
|
|
205
|
+
if (patch === null || typeof patch !== "object" || Array.isArray(patch)) {
|
|
206
|
+
failWriteValidation("patch must be a JSON object");
|
|
207
|
+
}
|
|
208
|
+
await run(
|
|
209
|
+
() => apiPost("/api/ads/chatgpt/draft/amend", {
|
|
210
|
+
chatId: requireChatId(),
|
|
211
|
+
ref: String(args.ref),
|
|
212
|
+
patch
|
|
213
|
+
})
|
|
214
|
+
);
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
var REMOVE_ARGS = { ref: { type: "positional", description: "Op ref or target id", required: true } };
|
|
218
|
+
registerSchema({
|
|
219
|
+
command: "ads.chatgpt.draft.remove",
|
|
220
|
+
description: "Drop one staged ChatGPT Ads change. Removing a create also drops everything staged under it.",
|
|
221
|
+
args: schemaArgs(REMOVE_ARGS)
|
|
222
|
+
});
|
|
223
|
+
var removeCommand = defineCommand({
|
|
224
|
+
meta: {
|
|
225
|
+
name: "remove",
|
|
226
|
+
description: "Drop one staged change (and what depends on it). Example: baker ads chatgpt draft remove chatgpt_temp_ab12"
|
|
227
|
+
},
|
|
228
|
+
args: REMOVE_ARGS,
|
|
229
|
+
run: async ({ args }) => {
|
|
230
|
+
await run(
|
|
231
|
+
() => apiPost("/api/ads/chatgpt/draft/remove", {
|
|
232
|
+
chatId: requireChatId(),
|
|
233
|
+
ref: String(args.ref)
|
|
234
|
+
})
|
|
235
|
+
);
|
|
236
|
+
}
|
|
237
|
+
});
|
|
238
|
+
registerSchema({
|
|
239
|
+
command: "ads.chatgpt.draft.clear",
|
|
240
|
+
description: "Drop every staged ChatGPT Ads change on this chat. Nothing reached ChatGPT Ads, so nothing needs reversing.",
|
|
241
|
+
args: {}
|
|
242
|
+
});
|
|
243
|
+
var clearCommand = defineCommand({
|
|
244
|
+
meta: {
|
|
245
|
+
name: "clear",
|
|
246
|
+
description: "Drop every staged ChatGPT Ads change on this chat. Example: baker ads chatgpt draft clear"
|
|
247
|
+
},
|
|
248
|
+
args: {},
|
|
249
|
+
run: async () => {
|
|
250
|
+
await run(
|
|
251
|
+
() => apiPost("/api/ads/chatgpt/draft/clear", {
|
|
252
|
+
chatId: requireChatId()
|
|
253
|
+
})
|
|
254
|
+
);
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
var draftCommand = defineCommand({
|
|
258
|
+
meta: {
|
|
259
|
+
name: "draft",
|
|
260
|
+
description: `Review and edit the ChatGPT Ads changes staged on this chat.
|
|
261
|
+
|
|
262
|
+
Nothing staged has reached ChatGPT Ads. Everything applies when the chat is
|
|
263
|
+
published, and discarding the chat drops all of it.
|
|
264
|
+
|
|
265
|
+
Examples:
|
|
266
|
+
baker ads chatgpt draft \u2014 the Campaign \u25B8 Ad group \u25B8 Ad tree
|
|
267
|
+
baker ads chatgpt draft show chatgpt_temp_ab12 \u2014 one change in full
|
|
268
|
+
baker ads chatgpt draft list --full \u2014 every change in full, in one call
|
|
269
|
+
baker ads chatgpt draft amend chatgpt_temp_ab12 '{"name":"New"}'
|
|
270
|
+
baker ads chatgpt draft remove chatgpt_temp_ab12
|
|
271
|
+
baker ads chatgpt draft clear`
|
|
272
|
+
},
|
|
273
|
+
subCommands: {
|
|
274
|
+
list: listCommand,
|
|
275
|
+
show: showCommand,
|
|
276
|
+
amend: amendCommand,
|
|
277
|
+
remove: removeCommand,
|
|
278
|
+
clear: clearCommand
|
|
279
|
+
},
|
|
280
|
+
// A parent must never declare `run`: citty falls through to it after the
|
|
281
|
+
// matched subcommand, so every edit would also print the whole draft.
|
|
282
|
+
args: LIST_ARGS,
|
|
283
|
+
default: "list"
|
|
284
|
+
});
|
|
285
|
+
export {
|
|
286
|
+
draftCommand
|
|
287
|
+
};
|
|
288
|
+
//# sourceMappingURL=draft-EWGNZUU4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/ads/chatgpt/draft.ts","../src/commands/ads/chatgpt/draft-status.ts"],"sourcesContent":["import { readFileSync } from \"node:fs\";\nimport type {\n ChatgptDraftClearResponse,\n ChatgptDraftListResponse,\n ChatgptDraftRemoveResponse,\n ChatgptDraftShowResponse,\n ChatgptDraftStageResponse,\n} from \"@baker/api/ads-chatgpt\";\nimport { defineCommand } from \"citty\";\nimport { apiPost } from \"../../../client.ts\";\nimport { requireChatId, resolveChatId } from \"../../../env.ts\";\nimport { registerSchema } from \"../../../schemas.ts\";\nimport { CHAT_READ_ARG, DRAFT_FULL_ARG } from \"../../chat-arg.ts\";\nimport { writeJsonEnvelope } from \"../output.ts\";\nimport { renderChatgptDraftStatus } from \"./draft-status.ts\";\nimport { CHATGPT_ADS_REFERENCE, chatgptFailure } from \"./shared.ts\";\nimport { failWriteValidation, schemaArgs } from \"./write-shared.ts\";\n\n/**\n * Review and edit the ChatGPT Ads changes staged on this chat. Nothing staged\n * has reached ChatGPT Ads; it all applies when the chat is published.\n */\n\n/** The ChatGPT Ads routes answer with the payload itself; the envelope is the CLI's to add. */\nasync function run<T>(call: () => Promise<T>): Promise<void> {\n try {\n writeJsonEnvelope({ ok: true, data: await call() });\n } catch (err) {\n writeJsonEnvelope({ ...chatgptFailure(err, CHATGPT_ADS_REFERENCE.overview) });\n process.exit(1);\n }\n}\n\nconst LIST_ARGS = {\n json: { type: \"boolean\", description: \"Print the raw JSON envelope instead of the readable tree\" },\n full: DRAFT_FULL_ARG,\n chat: CHAT_READ_ARG,\n} as const;\n\nregisterSchema({\n command: \"ads.chatgpt.draft\",\n description:\n \"Review everything staged for ChatGPT Ads on this chat as a Campaign ▸ Ad group ▸ Ad tree. After a publish this is the authoritative record: `published · N applied`, or a `✗ … failed:` line per change that did not land, with ChatGPT Ads' reason.\",\n args: schemaArgs(LIST_ARGS),\n});\n\nconst listCommand = defineCommand({\n meta: {\n name: \"list\",\n description: \"Review everything staged as a Campaign ▸ Ad group ▸ Ad tree. Example: baker ads chatgpt draft\",\n },\n args: LIST_ARGS,\n run: async ({ args }) => {\n try {\n const full = args.full === true;\n const draft = await apiPost<ChatgptDraftListResponse>(\"/api/ads/chatgpt/draft\", {\n chatId: resolveChatId(args.chat),\n ...(full ? { full: true } : {}),\n });\n if (args.json === true || full) {\n writeJsonEnvelope({ ok: true, data: draft });\n return;\n }\n process.stdout.write(`${renderChatgptDraftStatus(draft)}\\n`);\n } catch (err) {\n writeJsonEnvelope({ ...chatgptFailure(err, CHATGPT_ADS_REFERENCE.overview) });\n process.exit(1);\n }\n },\n});\n\nconst SHOW_ARGS = {\n ref: {\n type: \"positional\",\n description: \"Op ref (chatgpt_temp_* for creates), or the target id for a staged update\",\n required: true,\n },\n chat: CHAT_READ_ARG,\n} as const;\n\nregisterSchema({\n command: \"ads.chatgpt.draft.show\",\n description:\n \"The full staged payload, warnings and before-snapshot for one change — the receipt to check before publishing.\",\n args: schemaArgs(SHOW_ARGS),\n});\n\nconst showCommand = defineCommand({\n meta: {\n name: \"show\",\n description: \"Show one staged change in full. Example: baker ads chatgpt draft show chatgpt_temp_ab12\",\n },\n args: SHOW_ARGS,\n run: async ({ args }) => {\n await run(() =>\n apiPost<ChatgptDraftShowResponse>(\"/api/ads/chatgpt/draft/show\", {\n chatId: resolveChatId(args.chat),\n ref: String(args.ref),\n }),\n );\n },\n});\n\nconst AMEND_ARGS = {\n ref: { type: \"positional\", description: \"Op ref or target id\", required: true },\n patch: { type: \"positional\", description: \"JSON object, or @path to a file holding one\", required: true },\n} as const;\n\nregisterSchema({\n command: \"ads.chatgpt.draft.amend\",\n description:\n \"Change a staged op in place instead of removing and re-staging it. The patch merges into the payload (JSON merge-patch: `null` deletes a key; money is in micros) and the whole op re-validates.\",\n args: schemaArgs(AMEND_ARGS),\n});\n\nconst amendCommand = defineCommand({\n meta: {\n name: \"amend\",\n description: `Change a staged op in place. Money in the payload is micros: 20 = 20000000.\n\nExample:\n baker ads chatgpt draft amend chatgpt_temp_ab12 '{\"dailyBudgetMicros\": 30000000}'`,\n },\n args: AMEND_ARGS,\n run: async ({ args }) => {\n const raw = String(args.patch);\n let patch: unknown;\n try {\n patch = JSON.parse(raw.startsWith(\"@\") ? readFileSync(raw.slice(1), \"utf8\") : raw);\n } catch {\n failWriteValidation(\"patch must be a JSON object, or @path to a file holding one\");\n }\n if (patch === null || typeof patch !== \"object\" || Array.isArray(patch)) {\n failWriteValidation(\"patch must be a JSON object\");\n }\n await run(() =>\n apiPost<ChatgptDraftStageResponse>(\"/api/ads/chatgpt/draft/amend\", {\n chatId: requireChatId(),\n ref: String(args.ref),\n patch,\n }),\n );\n },\n});\n\nconst REMOVE_ARGS = { ref: { type: \"positional\", description: \"Op ref or target id\", required: true } } as const;\n\nregisterSchema({\n command: \"ads.chatgpt.draft.remove\",\n description: \"Drop one staged ChatGPT Ads change. Removing a create also drops everything staged under it.\",\n args: schemaArgs(REMOVE_ARGS),\n});\n\nconst removeCommand = defineCommand({\n meta: {\n name: \"remove\",\n description:\n \"Drop one staged change (and what depends on it). Example: baker ads chatgpt draft remove chatgpt_temp_ab12\",\n },\n args: REMOVE_ARGS,\n run: async ({ args }) => {\n await run(() =>\n apiPost<ChatgptDraftRemoveResponse>(\"/api/ads/chatgpt/draft/remove\", {\n chatId: requireChatId(),\n ref: String(args.ref),\n }),\n );\n },\n});\n\nregisterSchema({\n command: \"ads.chatgpt.draft.clear\",\n description:\n \"Drop every staged ChatGPT Ads change on this chat. Nothing reached ChatGPT Ads, so nothing needs reversing.\",\n args: {},\n});\n\nconst clearCommand = defineCommand({\n meta: {\n name: \"clear\",\n description: \"Drop every staged ChatGPT Ads change on this chat. Example: baker ads chatgpt draft clear\",\n },\n args: {},\n run: async () => {\n await run(() =>\n apiPost<ChatgptDraftClearResponse>(\"/api/ads/chatgpt/draft/clear\", {\n chatId: requireChatId(),\n }),\n );\n },\n});\n\nexport const draftCommand = defineCommand({\n meta: {\n name: \"draft\",\n description: `Review and edit the ChatGPT Ads changes staged on this chat.\n\nNothing staged has reached ChatGPT Ads. Everything applies when the chat is\npublished, and discarding the chat drops all of it.\n\nExamples:\n baker ads chatgpt draft — the Campaign ▸ Ad group ▸ Ad tree\n baker ads chatgpt draft show chatgpt_temp_ab12 — one change in full\n baker ads chatgpt draft list --full — every change in full, in one call\n baker ads chatgpt draft amend chatgpt_temp_ab12 '{\"name\":\"New\"}'\n baker ads chatgpt draft remove chatgpt_temp_ab12\n baker ads chatgpt draft clear`,\n },\n subCommands: {\n list: listCommand,\n show: showCommand,\n amend: amendCommand,\n remove: removeCommand,\n clear: clearCommand,\n },\n // A parent must never declare `run`: citty falls through to it after the\n // matched subcommand, so every edit would also print the whole draft.\n args: LIST_ARGS,\n default: \"list\",\n});\n","import type { ChatgptDraftListResponse, ChatgptDraftOpView, ChatgptDraftStatusNode } from \"@baker/api/ads-chatgpt\";\n\n/**\n * The staged ChatGPT Ads draft as a readable Campaign ▸ Ad group ▸ Ad tree.\n * After a publish its first line is the authoritative record: a draft still\n * reading `publishing` minutes later did not finish, whatever ChatGPT Ads shows.\n */\n\nconst OPERATION_LABELS: Record<string, { staged: string; done: string; notDone: string }> = {\n create: { staged: \"Creating\", done: \"Created\", notDone: \"Not created\" },\n update: { staged: \"Updating\", done: \"Updated\", notDone: \"Not updated\" },\n pause: { staged: \"Pausing\", done: \"Paused\", notDone: \"Not paused\" },\n resume: { staged: \"Resuming\", done: \"Resumed\", notDone: \"Not resumed\" },\n archive: { staged: \"Archiving\", done: \"Archived\", notDone: \"Not archived\" },\n};\n\nconst STATUS_HEADINGS: Record<string, string> = {\n active: \"staged\",\n publishing: \"publishing\",\n applied: \"published\",\n discarded: \"discarded\",\n};\n\nfunction badge(node: ChatgptDraftStatusNode): string {\n const label = node.operation ? OPERATION_LABELS[node.operation] : undefined;\n if (!label) {\n return node.existing ? \"on ChatGPT Ads\" : \"staged\";\n }\n if (node.outcome === \"applied\") {\n return label.done;\n }\n return node.outcome ? `${label.notDone} (${node.outcome})` : label.staged;\n}\n\nfunction renderNode(node: ChatgptDraftStatusNode, depth: number, out: string[]): void {\n const indent = \" \".repeat(depth);\n out.push(`${indent}${node.entity}: ${node.name} — ${badge(node)}`);\n for (const warning of node.warnings ?? []) {\n out.push(`${indent} ! ${warning}`);\n }\n for (const child of node.children) {\n renderNode(child, depth + 1, out);\n }\n}\n\nfunction didNotApply(op: ChatgptDraftOpView): boolean {\n return op.result?.status === \"failed\" || op.result?.status === \"skipped\";\n}\n\nfunction didApply(op: ChatgptDraftOpView): boolean {\n return op.result?.status === \"applied\" || op.result?.status === \"simulated\";\n}\n\nfunction headingLine(draft: ChatgptDraftListResponse): string {\n const heading = STATUS_HEADINGS[draft.status] ?? draft.status;\n if (draft.status !== \"applied\" && draft.status !== \"publishing\") {\n return `ChatGPT Ads: ${draft.count} change${draft.count === 1 ? \"\" : \"s\"} ${heading}`;\n }\n const applied = draft.ops.filter(didApply).length;\n const failed = draft.ops.filter(didNotApply).length;\n return `ChatGPT Ads: ${heading} · ${applied} applied${failed > 0 ? `, ${failed} failed` : \"\"}`;\n}\n\nexport function renderChatgptDraftStatus(draft: ChatgptDraftListResponse): string {\n if (draft.status === \"none\" || draft.count === 0) {\n return \"No ChatGPT Ads changes staged\";\n }\n const out = [headingLine(draft), \"\"];\n for (const node of draft.tree ?? []) {\n renderNode(node, 0, out);\n }\n const summaryByRef = new Map(draft.ops.map((op) => [op.ref, op.summary]));\n const problems = draft.ops.filter(didNotApply).map((op) => {\n if (op.result?.status === \"failed\") {\n return `✗ ${op.summary} — failed: ${op.result.error ?? \"ChatGPT Ads gave no reason\"}`;\n }\n const waitedOn = op.result?.skippedBecause;\n const parent = (waitedOn && summaryByRef.get(waitedOn)) ?? \"a change that did not apply\";\n return `✗ ${op.summary} — skipped: waiting on ${parent}, which did not apply`;\n });\n if (problems.length > 0) {\n out.push(\"\", ...problems);\n }\n return out.join(\"\\n\");\n}\n"],"mappings":"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","names":[]}
|