@koda-sl/baker-cli 0.449.0 → 0.450.0-dev.b454c3dd2
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 +11 -2
- package/dist/account-4H7QVBRK.js +80 -0
- package/dist/account-XQXC7BR6.js +80 -0
- package/dist/account-XQXC7BR6.js.map +1 -0
- package/dist/account-writes-AK42HGRM.js +66 -0
- package/dist/accounts-722UY53A.js +78 -0
- package/dist/accounts-722UY53A.js.map +1 -0
- package/dist/accounts-E67BMK7T.js +612 -0
- package/dist/accounts-E67BMK7T.js.map +1 -0
- package/dist/actions-6TQMSVWD.js +55 -0
- package/dist/ad-group-writes-QQS4223F.js +170 -0
- package/dist/ad-groups-WGPDPUI2.js +68 -0
- package/dist/ad-writes-XE2IE4DS.js +174 -0
- package/dist/add-2BEGRHUX.js +303 -0
- package/dist/add-2BEGRHUX.js.map +1 -0
- package/dist/add-LEMKEOPO.js +105 -0
- package/dist/add-LEMKEOPO.js.map +1 -0
- package/dist/ads-AGYCVD62.js +40 -0
- package/dist/ads-BCOSQALY.js +77 -0
- package/dist/advertisers-2VQKAYKG.js +121 -0
- package/dist/advertisers-2VQKAYKG.js.map +1 -0
- package/dist/analytics-IFELDWLL.js +1962 -0
- package/dist/analytics-IFELDWLL.js.map +1 -0
- package/dist/analytics-OH5QEH7F.js +434 -0
- package/dist/analytics-OH5QEH7F.js.map +1 -0
- package/dist/animate-AIZ3GS4J.js +480 -0
- package/dist/assign-PTUJUCEL.js +78 -0
- package/dist/assign-PTUJUCEL.js.map +1 -0
- package/dist/audience-size-LRI6GJRT.js +95 -0
- package/dist/audience-size-LRI6GJRT.js.map +1 -0
- package/dist/audiences-TGD5US2M.js +268 -0
- package/dist/audit-HWP7OPB7.js +152 -0
- package/dist/audit-HWP7OPB7.js.map +1 -0
- package/dist/autocomplete-J6DHU6MR.js +112 -0
- package/dist/autocomplete-J6DHU6MR.js.map +1 -0
- package/dist/avatars-467OSBD6.js +38 -0
- package/dist/bid-pricing-EO5WLHGV.js +100 -0
- package/dist/bid-pricing-EO5WLHGV.js.map +1 -0
- package/dist/brand-YRTEPGBK.js +22 -0
- package/dist/brief-OSFJ2V7F.js +478 -0
- package/dist/brief-OSFJ2V7F.js.map +1 -0
- package/dist/campaign-groups-PQ6KSQJR.js +96 -0
- package/dist/campaign-groups-PQ6KSQJR.js.map +1 -0
- package/dist/campaign-writes-5OVLUD5E.js +166 -0
- package/dist/campaign-writes-5OVLUD5E.js.map +1 -0
- package/dist/campaign-writes-SXLZFYF6.js +170 -0
- package/dist/campaigns-6T3NSUT2.js +110 -0
- package/dist/campaigns-6T3NSUT2.js.map +1 -0
- package/dist/campaigns-OYMXDGWX.js +107 -0
- package/dist/campaigns-YS3OGQXO.js +76 -0
- package/dist/canvas-YQFG52IG.js +46 -0
- package/dist/capabilities-PXBKUN2G.js +145 -0
- package/dist/capabilities-PXBKUN2G.js.map +1 -0
- package/dist/catalog-XLXIM7IW.js +65 -0
- package/dist/catalogs-BRXEDE56.js +128 -0
- package/dist/chatgpt-7W75X3ER.js +47 -0
- package/dist/chats-UK47UE7C.js +263 -0
- package/dist/chats-UK47UE7C.js.map +1 -0
- package/dist/chunk-24EB7EDR.js +433 -0
- package/dist/chunk-2AOE2MZQ.js +159 -0
- package/dist/chunk-2VPBIT65.js +509 -0
- package/dist/chunk-4PDHHHUJ.js +537 -0
- package/dist/chunk-4PDHHHUJ.js.map +1 -0
- package/dist/chunk-54C6YDGJ.js +622 -0
- package/dist/chunk-5WCSKQ7Z.js +188 -0
- package/dist/chunk-5ZNTADVR.js +197 -0
- package/dist/chunk-6F7DVPOS.js +310 -0
- package/dist/chunk-6NY2GPR4.js +304 -0
- package/dist/chunk-6Y7ZBENQ.js +207 -0
- package/dist/chunk-7CTMH5AK.js +111 -0
- package/dist/chunk-7EPXVICM.js +6184 -0
- package/dist/chunk-7EPXVICM.js.map +1 -0
- package/dist/chunk-7J6EHOH6.js +274 -0
- package/dist/chunk-ASI4P6X2.js +6667 -0
- package/dist/chunk-C46GUI2S.js +19 -0
- package/dist/chunk-CAMX6OHF.js +3182 -0
- package/dist/chunk-CAMX6OHF.js.map +1 -0
- package/dist/chunk-CWYAELVG.js +60 -0
- package/dist/chunk-DCRPXOJJ.js +363 -0
- package/dist/chunk-EAP4O4FE.js +440 -0
- package/dist/chunk-FPOGPFAG.js +4383 -0
- package/dist/chunk-FTWJFDIN.js +23992 -0
- package/dist/chunk-FTWJFDIN.js.map +1 -0
- package/dist/chunk-FUHN4MFY.js +103 -0
- package/dist/chunk-FYGR3I2A.js +297 -0
- package/dist/chunk-H3427GPU.js +206 -0
- package/dist/chunk-HDLYPC6K.js +172 -0
- package/dist/chunk-HDLYPC6K.js.map +1 -0
- package/dist/chunk-HR6IWNKE.js +2942 -0
- package/dist/chunk-HR6IWNKE.js.map +1 -0
- package/dist/chunk-HROZYQ5H.js +275 -0
- package/dist/chunk-HROZYQ5H.js.map +1 -0
- package/dist/chunk-HZUDRKGR.js +98 -0
- package/dist/chunk-I3ZR655O.js +382 -0
- package/dist/chunk-KMKEYI37.js +96 -0
- package/dist/chunk-KS2QY6MK.js +139 -0
- package/dist/chunk-LYQJ4PZW.js +5189 -0
- package/dist/chunk-MACCF4JZ.js +3147 -0
- package/dist/chunk-N4LAYIIN.js +175 -0
- package/dist/chunk-NA63BH7V.js +346 -0
- package/dist/chunk-NCWCZY5P.js +1441 -0
- package/dist/chunk-NDEE6G2J.js +494 -0
- package/dist/chunk-NJXNU2G6.js +819 -0
- package/dist/chunk-NYIGXDUG.js +178 -0
- package/dist/chunk-NYIGXDUG.js.map +1 -0
- package/dist/chunk-P5T7OZKV.js +26 -0
- package/dist/chunk-PZXCWSKV.js +1830 -0
- package/dist/chunk-QE7W555R.js +541 -0
- package/dist/chunk-QE7W555R.js.map +1 -0
- package/dist/chunk-R25YLW6H.js +20 -0
- package/dist/chunk-RL5CP7N6.js +57 -0
- package/dist/chunk-RX2DKU3W.js +592 -0
- package/dist/chunk-SJYEY5MV.js +172 -0
- package/dist/chunk-SJYEY5MV.js.map +1 -0
- package/dist/chunk-ULG4QRTV.js +92 -0
- package/dist/chunk-VL43TNIP.js +455 -0
- package/dist/chunk-VLMBTPXU.js +51 -0
- package/dist/chunk-VNUNE5AB.js +160 -0
- package/dist/chunk-VYQ3QJ3C.js +169 -0
- package/dist/chunk-WGUQHAJY.js +23 -0
- package/dist/chunk-WKQG6TER.js +1079 -0
- package/dist/chunk-XFGAUP5B.js +76 -0
- package/dist/chunk-ZDMTXQ2Q.js +337 -0
- package/dist/claim-W6G6VEG5.js +198 -0
- package/dist/claim-W6G6VEG5.js.map +1 -0
- package/dist/cli.js +30 -30
- package/dist/companies-TS6KBATJ.js +196 -0
- package/dist/companies-TS6KBATJ.js.map +1 -0
- package/dist/complete-LYR2HMQU.js +82 -0
- package/dist/complete-LYR2HMQU.js.map +1 -0
- package/dist/connect-FCXNVTXG.js +43 -0
- package/dist/conversation-6ZJGPCXM.js +94 -0
- package/dist/conversation-6ZJGPCXM.js.map +1 -0
- package/dist/conversion-report-XQBJ6LG4.js +125 -0
- package/dist/conversion-writes-UBCVXP2E.js +120 -0
- package/dist/conversions-D236RTUK.js +76 -0
- package/dist/conversions-UHB55MMQ.js +136 -0
- package/dist/conversions-UHB55MMQ.js.map +1 -0
- package/dist/create-EX6OWLNM.js +208 -0
- package/dist/create-EX6OWLNM.js.map +1 -0
- package/dist/create-JCA7JPLP.js +131 -0
- package/dist/create-JCA7JPLP.js.map +1 -0
- package/dist/create-JFSK4BOP.js +60 -0
- package/dist/create-JFSK4BOP.js.map +1 -0
- package/dist/create-WU22YYU2.js +236 -0
- package/dist/create-WU22YYU2.js.map +1 -0
- package/dist/creatives-FXUQ5WSD.js +51 -0
- package/dist/creatives-KGXUOYPE.js +183 -0
- package/dist/creatives-KGXUOYPE.js.map +1 -0
- package/dist/credentials-MJC7PGKR.js +1056 -0
- package/dist/credentials-MJC7PGKR.js.map +1 -0
- package/dist/critique-GS5VV5ZC.js +214 -0
- package/dist/critique-GS5VV5ZC.js.map +1 -0
- package/dist/critique-TPHR27KH.js +1450 -0
- package/dist/critique-TPHR27KH.js.map +1 -0
- package/dist/crm-AVCM5D4G.js +319 -0
- package/dist/crm-AVCM5D4G.js.map +1 -0
- package/dist/crm-VK44O3ED.js +225 -0
- package/dist/crm-VK44O3ED.js.map +1 -0
- package/dist/customers-XH2DMTFH.js +57 -0
- package/dist/delete-E3R3TKIL.js +67 -0
- package/dist/delete-E3R3TKIL.js.map +1 -0
- package/dist/delete-KRH2YMSZ.js +55 -0
- package/dist/delete-KRH2YMSZ.js.map +1 -0
- package/dist/delete-WI5E3DR3.js +64 -0
- package/dist/delete-WI5E3DR3.js.map +1 -0
- package/dist/demographics-XV5PBA77.js +139 -0
- package/dist/demographics-XV5PBA77.js.map +1 -0
- package/dist/discard-HTQUUHJR.js +67 -0
- package/dist/discard-HTQUUHJR.js.map +1 -0
- package/dist/domain-RECGZXJB.js +99 -0
- package/dist/domain-RECGZXJB.js.map +1 -0
- package/dist/draft-2IBSJEKC.js +218 -0
- package/dist/draft-2IBSJEKC.js.map +1 -0
- package/dist/draft-MNFJ4G3C.js +281 -0
- package/dist/draft-PVTX6QT6.js +329 -0
- package/dist/draft-PVTX6QT6.js.map +1 -0
- package/dist/draft-Q546QPPU.js +307 -0
- package/dist/draft-Q546QPPU.js.map +1 -0
- package/dist/engine/index.js +6 -6
- package/dist/facets-7EVPJMKS.js +115 -0
- package/dist/facets-7EVPJMKS.js.map +1 -0
- package/dist/feedback-EIZKS4JU.js +66 -0
- package/dist/feedback-record-TKO54BOE.js +176 -0
- package/dist/feedback-record-TKO54BOE.js.map +1 -0
- package/dist/fetch-4BY6HYUM.js +177 -0
- package/dist/fetch-4BY6HYUM.js.map +1 -0
- package/dist/find-FRRHAPWX.js +134 -0
- package/dist/fit-UOFYFJ4Q.js +45 -0
- package/dist/flows-KTFAML22.js +248 -0
- package/dist/flows-KTFAML22.js.map +1 -0
- package/dist/fonts-MXR3ZKDX.js +35 -0
- package/dist/forecast-3QTJYVND.js +105 -0
- package/dist/forecast-3QTJYVND.js.map +1 -0
- package/dist/funnel-I6XIAEHG.js +393 -0
- package/dist/funnel-I6XIAEHG.js.map +1 -0
- package/dist/ga4-DV2AXCSL.js +55 -0
- package/dist/generate-3XYYITU6.js +262 -0
- package/dist/get-5PKNKJ5S.js +57 -0
- package/dist/get-5PKNKJ5S.js.map +1 -0
- package/dist/get-72YPHJGV.js +79 -0
- package/dist/get-72YPHJGV.js.map +1 -0
- package/dist/google-6OGZX47I.js +1872 -0
- package/dist/google-QYYYSSXI.js +136 -0
- package/dist/google-ads-QGMQKZQD.js +196 -0
- package/dist/google-ads-QGMQKZQD.js.map +1 -0
- package/dist/gsc-TAKOF7J5.js +30 -0
- package/dist/history-6AVQX2OQ.js +134 -0
- package/dist/history-6AVQX2OQ.js.map +1 -0
- package/dist/history-Q3QCT64S.js +67 -0
- package/dist/hubspot-SVEMFK5S.js +780 -0
- package/dist/hubspot-SVEMFK5S.js.map +1 -0
- package/dist/icon-L4RSS6PZ.js +137 -0
- package/dist/ideas-NFOW3HKJ.js +33 -0
- package/dist/images-2EFFUNNV.js +90 -0
- package/dist/ingest-2EIKN4QC.js +24 -0
- package/dist/ingest-2SO62RRI.js +108 -0
- package/dist/ingest-2SO62RRI.js.map +1 -0
- package/dist/insights-LNAXV2CG.js +122 -0
- package/dist/inspect-4OOS4APT.js +190 -0
- package/dist/inspect-4OOS4APT.js.map +1 -0
- package/dist/inspiration-S3DU4CMQ.js +53 -0
- package/dist/keyword-metrics-SF4CSNZ2.js +198 -0
- package/dist/keyword-metrics-SF4CSNZ2.js.map +1 -0
- package/dist/keywords-for-site-WDAOPNKC.js +129 -0
- package/dist/keywords-for-site-WDAOPNKC.js.map +1 -0
- package/dist/landing-2ZB46LXH.js +28 -0
- package/dist/leads-A4W5KTWB.js +91 -0
- package/dist/leads-A4W5KTWB.js.map +1 -0
- package/dist/learn-IPULBCOD.js +204 -0
- package/dist/learn-IPULBCOD.js.map +1 -0
- package/dist/line-item-writes-EMYSOJKM.js +209 -0
- package/dist/line-item-writes-EMYSOJKM.js.map +1 -0
- package/dist/line-items-5NECXUZT.js +103 -0
- package/dist/link-CI45HWFN.js +65 -0
- package/dist/link-CI45HWFN.js.map +1 -0
- package/dist/linkedin-B7SYR75X.js +1009 -0
- package/dist/linkedin-B7SYR75X.js.map +1 -0
- package/dist/list-2BARXOT5.js +152 -0
- package/dist/list-2BARXOT5.js.map +1 -0
- package/dist/list-BIEVLEHS.js +304 -0
- package/dist/list-BIEVLEHS.js.map +1 -0
- package/dist/list-ZBT3EBVZ.js +64 -0
- package/dist/list-ZBT3EBVZ.js.map +1 -0
- package/dist/locations-2NKBJKBT.js +67 -0
- package/dist/log-C23OOAJZ.js +93 -0
- package/dist/log-C23OOAJZ.js.map +1 -0
- package/dist/logo-Q5D7PZY6.js +18 -0
- package/dist/lookup-ETWY47F7.js +23 -0
- package/dist/make-TPKKJXGL.js +594 -0
- package/dist/make-TPKKJXGL.js.map +1 -0
- package/dist/map-SYZMPHLL.js +405 -0
- package/dist/map-SYZMPHLL.js.map +1 -0
- package/dist/mcp-6FQBVJ6F.js +477 -0
- package/dist/mcp-6FQBVJ6F.js.map +1 -0
- package/dist/media-sources-ZXHEEP6T.js +32 -0
- package/dist/members-UDY4OOJW.js +45 -0
- package/dist/members-UDY4OOJW.js.map +1 -0
- package/dist/models-3Z6MDHQW.js +155 -0
- package/dist/normalize-DAKHYS3V.js +142 -0
- package/dist/normalize-DAKHYS3V.js.map +1 -0
- package/dist/options-QL3ULED5.js +122 -0
- package/dist/options-QL3ULED5.js.map +1 -0
- package/dist/performance-UF5VTY2U.js +25 -0
- package/dist/pixels-TZPF746S.js +60 -0
- package/dist/plan-FT632COT.js +51 -0
- package/dist/plan-FT632COT.js.map +1 -0
- package/dist/promoted-tweet-writes-7HGESJ46.js +181 -0
- package/dist/promoted-tweet-writes-7HGESJ46.js.map +1 -0
- package/dist/promoted-tweets-LZKS5JIF.js +119 -0
- package/dist/publish-NPD3SMZL.js +323 -0
- package/dist/publish-NPD3SMZL.js.map +1 -0
- package/dist/questionnaire-JNGYJTAY.js +37 -0
- package/dist/questionnaire-JNGYJTAY.js.map +1 -0
- package/dist/reddit-NU2N3LZD.js +27 -0
- package/dist/refresh-EBVJ2C6L.js +95 -0
- package/dist/refresh-EBVJ2C6L.js.map +1 -0
- package/dist/release-V43YB2PY.js +61 -0
- package/dist/release-V43YB2PY.js.map +1 -0
- package/dist/remove-QPSWLFI4.js +51 -0
- package/dist/remove-QPSWLFI4.js.map +1 -0
- package/dist/reopen-GQ66NMWF.js +64 -0
- package/dist/reopen-GQ66NMWF.js.map +1 -0
- package/dist/rerun-PZK275DY.js +86 -0
- package/dist/rerun-PZK275DY.js.map +1 -0
- package/dist/research-FMM6AWZC.js +62 -0
- package/dist/research-GEOCUBXB.js +263 -0
- package/dist/research-GEOCUBXB.js.map +1 -0
- package/dist/reset-REXJ6AUK.js +55 -0
- package/dist/reset-REXJ6AUK.js.map +1 -0
- package/dist/reset-Y72IVESB.js +55 -0
- package/dist/reset-Y72IVESB.js.map +1 -0
- package/dist/resolve-OGX7C4TV.js +122 -0
- package/dist/resolve-OGX7C4TV.js.map +1 -0
- package/dist/retry-CD6JAQ3F.js +61 -0
- package/dist/retry-CD6JAQ3F.js.map +1 -0
- package/dist/retry-TCUBBFR5.js +63 -0
- package/dist/retry-TCUBBFR5.js.map +1 -0
- package/dist/run-A5ZDXTOI.js +66 -0
- package/dist/run-A5ZDXTOI.js.map +1 -0
- package/dist/run-EUO34T2J.js +61 -0
- package/dist/scaffold-ad-SW2HEWM3.js +1550 -0
- package/dist/scaffold-ad-SW2HEWM3.js.map +1 -0
- package/dist/scaffold-static-ad-ECTJL54Y.js +967 -0
- package/dist/scaffold-static-ad-ECTJL54Y.js.map +1 -0
- package/dist/scaffold-video-EI7U7RBK.js +874 -0
- package/dist/scaffold-video-EI7U7RBK.js.map +1 -0
- package/dist/schedule-S5YZJZ5U.js +62 -0
- package/dist/schedule-S5YZJZ5U.js.map +1 -0
- package/dist/scheduled-agents-N4LJRM4C.js +49 -0
- package/dist/schema-R7JWWOF4.js +133 -0
- package/dist/schema-R7JWWOF4.js.map +1 -0
- package/dist/search-KHMQH3AT.js +175 -0
- package/dist/search-KHMQH3AT.js.map +1 -0
- package/dist/select-O2FN2JEQ.js +95 -0
- package/dist/select-O2FN2JEQ.js.map +1 -0
- package/dist/sends-BQZM5PLS.js +310 -0
- package/dist/sends-BQZM5PLS.js.map +1 -0
- package/dist/set-prompt-2HASHGWC.js +187 -0
- package/dist/set-prompt-2HASHGWC.js.map +1 -0
- package/dist/setup-links-GYSE56GX.js +142 -0
- package/dist/setup-links-GYSE56GX.js.map +1 -0
- package/dist/site-4SKM7RKG.js +178 -0
- package/dist/site-4SKM7RKG.js.map +1 -0
- package/dist/sources-FQ2UZTHL.js +30 -0
- package/dist/sources-R2NKNC6J.js +422 -0
- package/dist/sources-R2NKNC6J.js.map +1 -0
- package/dist/stale-W756ACKC.js +64 -0
- package/dist/stale-W756ACKC.js.map +1 -0
- package/dist/status-SE2VZJJB.js +63 -0
- package/dist/status-SE2VZJJB.js.map +1 -0
- package/dist/stock-KXJ26BY4.js +179 -0
- package/dist/studio-SYKOSNDB.js +49 -0
- package/dist/sync-LJGSODK3.js +55 -0
- package/dist/sync-LJGSODK3.js.map +1 -0
- package/dist/sync-definition-QR2N233R.js +54 -0
- package/dist/tags-4BAVFH4S.js +225 -0
- package/dist/tags-4BAVFH4S.js.map +1 -0
- package/dist/tags-5SBMRC2A.js +21 -0
- package/dist/tags-5SBMRC2A.js.map +1 -0
- package/dist/tags-PYWFSBTR.js +26 -0
- package/dist/tags-QQU3OKMZ.js +21 -0
- package/dist/tags-QQU3OKMZ.js.map +1 -0
- package/dist/tags-YYLNF3PK.js +21 -0
- package/dist/tags-YYLNF3PK.js.map +1 -0
- package/dist/targeting-criteria-RJFLFICN.js +113 -0
- package/dist/targets-S2MT2PNB.js +103 -0
- package/dist/targets-S2MT2PNB.js.map +1 -0
- package/dist/templates-ZE5TOGRT.js +179 -0
- package/dist/templates-ZE5TOGRT.js.map +1 -0
- package/dist/testimonials-DII5DYLR.js +32 -0
- package/dist/top-companies-PGIAEHDF.js +109 -0
- package/dist/top-companies-PGIAEHDF.js.map +1 -0
- package/dist/translate-GXTS633J.js +599 -0
- package/dist/translate-GXTS633J.js.map +1 -0
- package/dist/triggers-2PTONXRU.js +142 -0
- package/dist/triggers-2PTONXRU.js.map +1 -0
- package/dist/unlink-XRMYJ6DB.js +68 -0
- package/dist/unlink-XRMYJ6DB.js.map +1 -0
- package/dist/unstage-FY7A3YFF.js +85 -0
- package/dist/unstage-FY7A3YFF.js.map +1 -0
- package/dist/unstage-RM2RLXKD.js +96 -0
- package/dist/unstage-RM2RLXKD.js.map +1 -0
- package/dist/update-E5SRBXQR.js +143 -0
- package/dist/update-E5SRBXQR.js.map +1 -0
- package/dist/update-PJ67D2OG.js +156 -0
- package/dist/update-PJ67D2OG.js.map +1 -0
- package/dist/update-S4562V3O.js +64 -0
- package/dist/update-S4562V3O.js.map +1 -0
- package/dist/update-V6YVEUI2.js +99 -0
- package/dist/update-V6YVEUI2.js.map +1 -0
- package/dist/upload-R6CQVLKF.js +127 -0
- package/dist/upload-R6CQVLKF.js.map +1 -0
- package/dist/url-options-JOKU46F2.js +128 -0
- package/dist/url-options-JOKU46F2.js.map +1 -0
- package/dist/url-params-7U2XMOWF.js +99 -0
- package/dist/url-params-7U2XMOWF.js.map +1 -0
- package/dist/validate-7YPOUKPB.js +90 -0
- package/dist/validate-7YPOUKPB.js.map +1 -0
- package/dist/videos-LICG6ACJ.js +39 -0
- package/dist/viewer-check-L4B4LIAX.js +69 -0
- package/dist/web-BA2PGTWU.js +141 -0
- package/dist/web-BA2PGTWU.js.map +1 -0
- package/dist/winning-ads-C6S2C5VP.js +62 -0
- package/dist/write-commands-7SJ3BOW5.js +1016 -0
- package/dist/write-commands-7SJ3BOW5.js.map +1 -0
- package/dist/x-CZHRC6U7.js +47 -0
- package/package.json +1 -1
- package/dist/account-AL2ZDSR7.js +0 -79
- package/dist/account-AL2ZDSR7.js.map +0 -1
- package/dist/account-F6MHQ64I.js +0 -80
- package/dist/account-writes-ISE4U2FQ.js +0 -66
- package/dist/accounts-HAFCLSR5.js +0 -77
- package/dist/accounts-HAFCLSR5.js.map +0 -1
- package/dist/accounts-O5MFO3QQ.js +0 -611
- package/dist/accounts-O5MFO3QQ.js.map +0 -1
- package/dist/actions-P35MEMGN.js +0 -55
- package/dist/ad-group-writes-UU5NNKSO.js +0 -170
- package/dist/ad-groups-CGFXZNIA.js +0 -68
- package/dist/ad-writes-NALDYWOR.js +0 -174
- package/dist/add-5GAN6CVO.js +0 -280
- package/dist/add-5GAN6CVO.js.map +0 -1
- package/dist/add-6DTC6X5G.js +0 -104
- package/dist/add-6DTC6X5G.js.map +0 -1
- package/dist/ads-C47NA2HH.js +0 -40
- package/dist/ads-PV7GZXPR.js +0 -77
- package/dist/advertisers-AE75CGVE.js +0 -120
- package/dist/advertisers-AE75CGVE.js.map +0 -1
- package/dist/analytics-FKCXIMPO.js +0 -1958
- package/dist/analytics-FKCXIMPO.js.map +0 -1
- package/dist/analytics-FPWQQGRM.js +0 -433
- package/dist/analytics-FPWQQGRM.js.map +0 -1
- package/dist/animate-FWWHSYPL.js +0 -480
- package/dist/assign-ABN2AQ4J.js +0 -77
- package/dist/assign-ABN2AQ4J.js.map +0 -1
- package/dist/audience-size-GNBJY35X.js +0 -94
- package/dist/audience-size-GNBJY35X.js.map +0 -1
- package/dist/audiences-VEKGLWBG.js +0 -268
- package/dist/audit-3VS63TBW.js +0 -151
- package/dist/audit-3VS63TBW.js.map +0 -1
- package/dist/autocomplete-VS3XG3B7.js +0 -111
- package/dist/autocomplete-VS3XG3B7.js.map +0 -1
- package/dist/avatars-EKCKHCC3.js +0 -38
- package/dist/bid-pricing-Q72B65AY.js +0 -99
- package/dist/bid-pricing-Q72B65AY.js.map +0 -1
- package/dist/brand-C6PFGGQN.js +0 -22
- package/dist/brief-UO52ZHFI.js +0 -477
- package/dist/brief-UO52ZHFI.js.map +0 -1
- package/dist/campaign-groups-KFFYQPU3.js +0 -95
- package/dist/campaign-groups-KFFYQPU3.js.map +0 -1
- package/dist/campaign-writes-FHOS5XZY.js +0 -165
- package/dist/campaign-writes-FHOS5XZY.js.map +0 -1
- package/dist/campaign-writes-SX52CJYW.js +0 -170
- package/dist/campaigns-2NHWBF5C.js +0 -109
- package/dist/campaigns-2NHWBF5C.js.map +0 -1
- package/dist/campaigns-KZYZTXDS.js +0 -107
- package/dist/campaigns-X3DPCCSN.js +0 -76
- package/dist/canvas-DPCBGW7K.js +0 -46
- package/dist/capabilities-DJFTRJKS.js +0 -144
- package/dist/capabilities-DJFTRJKS.js.map +0 -1
- package/dist/catalog-ME44ZRZF.js +0 -65
- package/dist/catalogs-G3YEVG6S.js +0 -128
- package/dist/chatgpt-QNUN63YS.js +0 -47
- package/dist/chats-D2CSDX5Q.js +0 -262
- package/dist/chats-D2CSDX5Q.js.map +0 -1
- package/dist/chunk-2QHODRR6.js +0 -19
- package/dist/chunk-35XWJEWH.js +0 -274
- package/dist/chunk-3G3ZDLMI.js +0 -197
- package/dist/chunk-3HJLHTWP.js +0 -163
- package/dist/chunk-3HJLHTWP.js.map +0 -1
- package/dist/chunk-3IBYKLXR.js +0 -337
- package/dist/chunk-4AUMTNVB.js +0 -346
- package/dist/chunk-4BQXAE7Z.js +0 -494
- package/dist/chunk-54UVGFX3.js +0 -440
- package/dist/chunk-5Y5UAJWD.js +0 -111
- package/dist/chunk-5ZDLTE5T.js +0 -159
- package/dist/chunk-647RO73Q.js +0 -92
- package/dist/chunk-7YCRFMXF.js +0 -433
- package/dist/chunk-7ZHMGXE2.js +0 -819
- package/dist/chunk-A4LOJ2VD.js +0 -23
- package/dist/chunk-AEOSAVVL.js +0 -310
- package/dist/chunk-CHSNHVYF.js +0 -3182
- package/dist/chunk-CHSNHVYF.js.map +0 -1
- package/dist/chunk-CSYSX4D2.js +0 -175
- package/dist/chunk-DWHIOO7E.js +0 -390
- package/dist/chunk-DWHIOO7E.js.map +0 -1
- package/dist/chunk-EDLZGTGN.js +0 -216
- package/dist/chunk-EDLZGTGN.js.map +0 -1
- package/dist/chunk-FD27ZDVP.js +0 -304
- package/dist/chunk-GBMP4F45.js +0 -3147
- package/dist/chunk-GLCPTMPG.js +0 -5189
- package/dist/chunk-HBTF25YG.js +0 -592
- package/dist/chunk-HQSCJYZO.js +0 -26
- package/dist/chunk-IBURXTL4.js +0 -509
- package/dist/chunk-IR6D7K4H.js +0 -382
- package/dist/chunk-J5IY3GVE.js +0 -96
- package/dist/chunk-JQJDXPCO.js +0 -103
- package/dist/chunk-K66OLA6Y.js +0 -4383
- package/dist/chunk-K7FZXIOZ.js +0 -60
- package/dist/chunk-KFE3S63W.js +0 -1441
- package/dist/chunk-KHRXPQID.js +0 -169
- package/dist/chunk-KLBTXETO.js +0 -23992
- package/dist/chunk-KLBTXETO.js.map +0 -1
- package/dist/chunk-KQTYTCKQ.js +0 -98
- package/dist/chunk-LYBXCXJB.js +0 -160
- package/dist/chunk-LZ73CZGP.js +0 -188
- package/dist/chunk-MELOSESI.js +0 -20
- package/dist/chunk-MXYBTMKB.js +0 -363
- package/dist/chunk-NPY4QUMQ.js +0 -622
- package/dist/chunk-OZRUJVIQ.js +0 -206
- package/dist/chunk-QRP3PXWN.js +0 -455
- package/dist/chunk-RPUSTYHL.js +0 -170
- package/dist/chunk-RPUSTYHL.js.map +0 -1
- package/dist/chunk-S77PZVYM.js +0 -297
- package/dist/chunk-SHL7LOC3.js +0 -51
- package/dist/chunk-SSJK7FEV.js +0 -2886
- package/dist/chunk-SSJK7FEV.js.map +0 -1
- package/dist/chunk-TT5R35PJ.js +0 -207
- package/dist/chunk-ULJ5RFOV.js +0 -76
- package/dist/chunk-VB6WJJR3.js +0 -1830
- package/dist/chunk-W3ZHJJVT.js +0 -139
- package/dist/chunk-XF4JUKVF.js +0 -6151
- package/dist/chunk-XF4JUKVF.js.map +0 -1
- package/dist/chunk-Y6O7EWYY.js +0 -57
- package/dist/chunk-YRQYA2LR.js +0 -217
- package/dist/chunk-YRQYA2LR.js.map +0 -1
- package/dist/chunk-Z2EOC6PL.js +0 -6667
- package/dist/chunk-ZEYEWPK6.js +0 -1079
- package/dist/claim-FZ5OQLMU.js +0 -197
- package/dist/claim-FZ5OQLMU.js.map +0 -1
- package/dist/companies-DNI634RC.js +0 -195
- package/dist/companies-DNI634RC.js.map +0 -1
- package/dist/complete-2FZMGJV5.js +0 -81
- package/dist/complete-2FZMGJV5.js.map +0 -1
- package/dist/connect-QCOGEPP4.js +0 -36
- package/dist/conversation-6IOGV7B7.js +0 -93
- package/dist/conversation-6IOGV7B7.js.map +0 -1
- package/dist/conversion-report-N4HANYOB.js +0 -125
- package/dist/conversion-writes-LW4HQKK5.js +0 -120
- package/dist/conversions-4SRZPBBX.js +0 -135
- package/dist/conversions-4SRZPBBX.js.map +0 -1
- package/dist/conversions-TS723AZV.js +0 -76
- package/dist/create-BJNMO6HT.js +0 -207
- package/dist/create-BJNMO6HT.js.map +0 -1
- package/dist/create-FX4OJ2XF.js +0 -59
- package/dist/create-FX4OJ2XF.js.map +0 -1
- package/dist/create-RM7HV77Y.js +0 -130
- package/dist/create-RM7HV77Y.js.map +0 -1
- package/dist/create-VXM34ZWH.js +0 -235
- package/dist/create-VXM34ZWH.js.map +0 -1
- package/dist/creatives-JSWBFQ5R.js +0 -182
- package/dist/creatives-JSWBFQ5R.js.map +0 -1
- package/dist/creatives-SJTJU6VT.js +0 -51
- package/dist/credentials-VOZTILFO.js +0 -1055
- package/dist/credentials-VOZTILFO.js.map +0 -1
- package/dist/critique-65W63MFZ.js +0 -213
- package/dist/critique-65W63MFZ.js.map +0 -1
- package/dist/critique-ZS4ON3SU.js +0 -1449
- package/dist/critique-ZS4ON3SU.js.map +0 -1
- package/dist/crm-52ROSWH5.js +0 -224
- package/dist/crm-52ROSWH5.js.map +0 -1
- package/dist/crm-R5IXIFIV.js +0 -318
- package/dist/crm-R5IXIFIV.js.map +0 -1
- package/dist/customers-4AWBFDUF.js +0 -56
- package/dist/delete-AIGE4Y4H.js +0 -63
- package/dist/delete-AIGE4Y4H.js.map +0 -1
- package/dist/delete-HGHXY24R.js +0 -54
- package/dist/delete-HGHXY24R.js.map +0 -1
- package/dist/delete-M2GDLPYN.js +0 -66
- package/dist/delete-M2GDLPYN.js.map +0 -1
- package/dist/demographics-NTWB2IMG.js +0 -138
- package/dist/demographics-NTWB2IMG.js.map +0 -1
- package/dist/discard-2WWQG6OU.js +0 -66
- package/dist/discard-2WWQG6OU.js.map +0 -1
- package/dist/domain-Y2LT6JLT.js +0 -98
- package/dist/domain-Y2LT6JLT.js.map +0 -1
- package/dist/draft-EJXNNJ3Y.js +0 -306
- package/dist/draft-EJXNNJ3Y.js.map +0 -1
- package/dist/draft-FJ7WHIXW.js +0 -328
- package/dist/draft-FJ7WHIXW.js.map +0 -1
- package/dist/draft-SLHAKJ2A.js +0 -217
- package/dist/draft-SLHAKJ2A.js.map +0 -1
- package/dist/draft-THPZFASM.js +0 -281
- package/dist/facets-U7AQC4H6.js +0 -114
- package/dist/facets-U7AQC4H6.js.map +0 -1
- package/dist/feedback-XNJQ63DS.js +0 -66
- package/dist/feedback-record-FDLMWMDG.js +0 -175
- package/dist/feedback-record-FDLMWMDG.js.map +0 -1
- package/dist/fetch-W7NULDEO.js +0 -176
- package/dist/fetch-W7NULDEO.js.map +0 -1
- package/dist/find-OTDIX6V4.js +0 -134
- package/dist/fit-7237F5EB.js +0 -45
- package/dist/flows-KABCBS3S.js +0 -244
- package/dist/flows-KABCBS3S.js.map +0 -1
- package/dist/fonts-EMMX3KII.js +0 -34
- package/dist/forecast-GNODEIIC.js +0 -104
- package/dist/forecast-GNODEIIC.js.map +0 -1
- package/dist/funnel-AAX27NH4.js +0 -837
- package/dist/funnel-AAX27NH4.js.map +0 -1
- package/dist/ga4-UDQ2HA2J.js +0 -55
- package/dist/generate-MMBYB44G.js +0 -262
- package/dist/get-QEYJRLV3.js +0 -54
- package/dist/get-QEYJRLV3.js.map +0 -1
- package/dist/get-RTVUZM6E.js +0 -78
- package/dist/get-RTVUZM6E.js.map +0 -1
- package/dist/google-KTO3PLEU.js +0 -136
- package/dist/google-M7KEXVK5.js +0 -1872
- package/dist/google-ads-OK6IG3UV.js +0 -195
- package/dist/google-ads-OK6IG3UV.js.map +0 -1
- package/dist/gsc-P3QYGDV2.js +0 -30
- package/dist/history-DBIEYQHY.js +0 -67
- package/dist/history-PQUJKK26.js +0 -133
- package/dist/history-PQUJKK26.js.map +0 -1
- package/dist/hubspot-Y77VLY6Y.js +0 -779
- package/dist/hubspot-Y77VLY6Y.js.map +0 -1
- package/dist/icon-I43F77FV.js +0 -137
- package/dist/ideas-MIDU7YOA.js +0 -32
- package/dist/images-S254MS6O.js +0 -90
- package/dist/ingest-J4I3HKM3.js +0 -107
- package/dist/ingest-J4I3HKM3.js.map +0 -1
- package/dist/ingest-YV2NLDBE.js +0 -23
- package/dist/insights-ZIU6FJMS.js +0 -122
- package/dist/inspect-Q5NHBBHX.js +0 -189
- package/dist/inspect-Q5NHBBHX.js.map +0 -1
- package/dist/inspiration-P265QJ2H.js +0 -53
- package/dist/keyword-metrics-PDY4ZXSP.js +0 -197
- package/dist/keyword-metrics-PDY4ZXSP.js.map +0 -1
- package/dist/keywords-for-site-GALSCV77.js +0 -128
- package/dist/keywords-for-site-GALSCV77.js.map +0 -1
- package/dist/landing-CJYGWCK4.js +0 -28
- package/dist/leads-PHKG6CP3.js +0 -90
- package/dist/leads-PHKG6CP3.js.map +0 -1
- package/dist/learn-3VO6DXUX.js +0 -203
- package/dist/learn-3VO6DXUX.js.map +0 -1
- package/dist/line-item-writes-E6MZPIZZ.js +0 -208
- package/dist/line-item-writes-E6MZPIZZ.js.map +0 -1
- package/dist/line-items-7ZGIKEF2.js +0 -103
- package/dist/link-QYAW6A2W.js +0 -64
- package/dist/link-QYAW6A2W.js.map +0 -1
- package/dist/linkedin-FFSDSGGS.js +0 -1008
- package/dist/linkedin-FFSDSGGS.js.map +0 -1
- package/dist/list-5IC6KIKO.js +0 -63
- package/dist/list-5IC6KIKO.js.map +0 -1
- package/dist/list-NVQC5SNY.js +0 -151
- package/dist/list-NVQC5SNY.js.map +0 -1
- package/dist/list-SAV3LQHY.js +0 -303
- package/dist/list-SAV3LQHY.js.map +0 -1
- package/dist/locations-74TPQWAT.js +0 -67
- package/dist/log-XZPVOALD.js +0 -92
- package/dist/log-XZPVOALD.js.map +0 -1
- package/dist/logo-2IP663QO.js +0 -18
- package/dist/lookup-XK45W2SH.js +0 -22
- package/dist/make-LCNP76OF.js +0 -593
- package/dist/make-LCNP76OF.js.map +0 -1
- package/dist/map-4J5WIWIG.js +0 -404
- package/dist/map-4J5WIWIG.js.map +0 -1
- package/dist/mcp-XXD7ZQCP.js +0 -476
- package/dist/mcp-XXD7ZQCP.js.map +0 -1
- package/dist/media-sources-O6ZRUA3N.js +0 -32
- package/dist/members-D5ZYLS4Y.js +0 -44
- package/dist/members-D5ZYLS4Y.js.map +0 -1
- package/dist/models-7U3GRYHF.js +0 -155
- package/dist/normalize-PCNC6E2N.js +0 -138
- package/dist/normalize-PCNC6E2N.js.map +0 -1
- package/dist/options-MQ65VEVD.js +0 -121
- package/dist/options-MQ65VEVD.js.map +0 -1
- package/dist/performance-6QW2KEEQ.js +0 -24
- package/dist/pixels-45A55MOP.js +0 -60
- package/dist/promoted-tweet-writes-JPLHY3GM.js +0 -180
- package/dist/promoted-tweet-writes-JPLHY3GM.js.map +0 -1
- package/dist/promoted-tweets-SURKMHFI.js +0 -119
- package/dist/publish-HCQ6MXLB.js +0 -322
- package/dist/publish-HCQ6MXLB.js.map +0 -1
- package/dist/reddit-GIP3ADMS.js +0 -26
- package/dist/refresh-UXQSLCR3.js +0 -94
- package/dist/refresh-UXQSLCR3.js.map +0 -1
- package/dist/release-5KVLXNP6.js +0 -60
- package/dist/release-5KVLXNP6.js.map +0 -1
- package/dist/remove-6FIVKCJI.js +0 -50
- package/dist/remove-6FIVKCJI.js.map +0 -1
- package/dist/reopen-YM5LNOLB.js +0 -63
- package/dist/reopen-YM5LNOLB.js.map +0 -1
- package/dist/rerun-CET74VPF.js +0 -85
- package/dist/rerun-CET74VPF.js.map +0 -1
- package/dist/research-EY7C7JJY.js +0 -62
- package/dist/research-YOGE7GT2.js +0 -262
- package/dist/research-YOGE7GT2.js.map +0 -1
- package/dist/reset-C4UHQ3EU.js +0 -54
- package/dist/reset-C4UHQ3EU.js.map +0 -1
- package/dist/reset-OLVB6AE6.js +0 -54
- package/dist/reset-OLVB6AE6.js.map +0 -1
- package/dist/resolve-XYH2GDAE.js +0 -121
- package/dist/resolve-XYH2GDAE.js.map +0 -1
- package/dist/retry-726GKI6V.js +0 -62
- package/dist/retry-726GKI6V.js.map +0 -1
- package/dist/retry-7EELDEQP.js +0 -60
- package/dist/retry-7EELDEQP.js.map +0 -1
- package/dist/run-P4KR2MXC.js +0 -65
- package/dist/run-P4KR2MXC.js.map +0 -1
- package/dist/run-XQ7EM3JT.js +0 -60
- package/dist/scaffold-ad-U2KSHKBC.js +0 -1549
- package/dist/scaffold-ad-U2KSHKBC.js.map +0 -1
- package/dist/scaffold-static-ad-63LQKUSO.js +0 -966
- package/dist/scaffold-static-ad-63LQKUSO.js.map +0 -1
- package/dist/scaffold-video-MUS6LHJQ.js +0 -873
- package/dist/scaffold-video-MUS6LHJQ.js.map +0 -1
- package/dist/schedule-RDK4GEPI.js +0 -61
- package/dist/schedule-RDK4GEPI.js.map +0 -1
- package/dist/scheduled-agents-6U44QE76.js +0 -49
- package/dist/schema-CHJDC7GQ.js +0 -129
- package/dist/schema-CHJDC7GQ.js.map +0 -1
- package/dist/search-PMJRU3C4.js +0 -174
- package/dist/search-PMJRU3C4.js.map +0 -1
- package/dist/select-4Z7BW5RH.js +0 -94
- package/dist/select-4Z7BW5RH.js.map +0 -1
- package/dist/sends-WGJVQUMF.js +0 -309
- package/dist/sends-WGJVQUMF.js.map +0 -1
- package/dist/set-prompt-OB2V3XJP.js +0 -186
- package/dist/set-prompt-OB2V3XJP.js.map +0 -1
- package/dist/setup-links-REPREN3C.js +0 -141
- package/dist/setup-links-REPREN3C.js.map +0 -1
- package/dist/site-WFSWIA3S.js +0 -177
- package/dist/site-WFSWIA3S.js.map +0 -1
- package/dist/sources-AMI2AWKZ.js +0 -421
- package/dist/sources-AMI2AWKZ.js.map +0 -1
- package/dist/sources-YBQ6KPFM.js +0 -30
- package/dist/stale-DAYXOY3Z.js +0 -63
- package/dist/stale-DAYXOY3Z.js.map +0 -1
- package/dist/status-7F2KHFGA.js +0 -62
- package/dist/status-7F2KHFGA.js.map +0 -1
- package/dist/stock-2YCDN3N6.js +0 -179
- package/dist/studio-C5K3YX3P.js +0 -49
- package/dist/sync-GWTLKZTU.js +0 -54
- package/dist/sync-GWTLKZTU.js.map +0 -1
- package/dist/sync-definition-ILS2B2BJ.js +0 -53
- package/dist/tags-3WPW6PTV.js +0 -26
- package/dist/tags-6342FQEB.js +0 -20
- package/dist/tags-6342FQEB.js.map +0 -1
- package/dist/tags-ABHSX6M5.js +0 -20
- package/dist/tags-ABHSX6M5.js.map +0 -1
- package/dist/tags-FJIBBBRG.js +0 -20
- package/dist/tags-FJIBBBRG.js.map +0 -1
- package/dist/tags-KFYLZLB3.js +0 -224
- package/dist/tags-KFYLZLB3.js.map +0 -1
- package/dist/targeting-criteria-NR47AF5C.js +0 -113
- package/dist/targets-L56KOVQE.js +0 -102
- package/dist/targets-L56KOVQE.js.map +0 -1
- package/dist/templates-B6XGDYUF.js +0 -178
- package/dist/templates-B6XGDYUF.js.map +0 -1
- package/dist/testimonials-CVC4YIXO.js +0 -32
- package/dist/top-companies-45X3DT7Z.js +0 -108
- package/dist/top-companies-45X3DT7Z.js.map +0 -1
- package/dist/translate-TA5KQIU7.js +0 -598
- package/dist/translate-TA5KQIU7.js.map +0 -1
- package/dist/triggers-22EMIVFD.js +0 -141
- package/dist/triggers-22EMIVFD.js.map +0 -1
- package/dist/unlink-65KUN6ID.js +0 -67
- package/dist/unlink-65KUN6ID.js.map +0 -1
- package/dist/unstage-2E3I5SWF.js +0 -84
- package/dist/unstage-2E3I5SWF.js.map +0 -1
- package/dist/unstage-4ZEULXEQ.js +0 -95
- package/dist/unstage-4ZEULXEQ.js.map +0 -1
- package/dist/update-2S7CSEAW.js +0 -63
- package/dist/update-2S7CSEAW.js.map +0 -1
- package/dist/update-7NCOTAQZ.js +0 -98
- package/dist/update-7NCOTAQZ.js.map +0 -1
- package/dist/update-D6DJC6T7.js +0 -155
- package/dist/update-D6DJC6T7.js.map +0 -1
- package/dist/update-KREBPGBH.js +0 -142
- package/dist/update-KREBPGBH.js.map +0 -1
- package/dist/upload-O6NHRPS7.js +0 -126
- package/dist/upload-O6NHRPS7.js.map +0 -1
- package/dist/url-options-GGXAL3J4.js +0 -127
- package/dist/url-options-GGXAL3J4.js.map +0 -1
- package/dist/url-params-3EFGVTZZ.js +0 -98
- package/dist/url-params-3EFGVTZZ.js.map +0 -1
- package/dist/validate-LDBAAXQO.js +0 -89
- package/dist/validate-LDBAAXQO.js.map +0 -1
- package/dist/videos-YSXYGTBM.js +0 -39
- package/dist/viewer-check-45T2HLAH.js +0 -69
- package/dist/web-IGIGVEKS.js +0 -140
- package/dist/web-IGIGVEKS.js.map +0 -1
- package/dist/winning-ads-ASH5DSV3.js +0 -62
- package/dist/write-commands-5C7FUOVN.js +0 -1015
- package/dist/write-commands-5C7FUOVN.js.map +0 -1
- package/dist/x-BFSKFCZD.js +0 -47
- /package/dist/{account-F6MHQ64I.js.map → account-4H7QVBRK.js.map} +0 -0
- /package/dist/{account-writes-ISE4U2FQ.js.map → account-writes-AK42HGRM.js.map} +0 -0
- /package/dist/{actions-P35MEMGN.js.map → actions-6TQMSVWD.js.map} +0 -0
- /package/dist/{ad-group-writes-UU5NNKSO.js.map → ad-group-writes-QQS4223F.js.map} +0 -0
- /package/dist/{ad-groups-CGFXZNIA.js.map → ad-groups-WGPDPUI2.js.map} +0 -0
- /package/dist/{ad-writes-NALDYWOR.js.map → ad-writes-XE2IE4DS.js.map} +0 -0
- /package/dist/{ads-C47NA2HH.js.map → ads-AGYCVD62.js.map} +0 -0
- /package/dist/{ads-PV7GZXPR.js.map → ads-BCOSQALY.js.map} +0 -0
- /package/dist/{animate-FWWHSYPL.js.map → animate-AIZ3GS4J.js.map} +0 -0
- /package/dist/{audiences-VEKGLWBG.js.map → audiences-TGD5US2M.js.map} +0 -0
- /package/dist/{avatars-EKCKHCC3.js.map → avatars-467OSBD6.js.map} +0 -0
- /package/dist/{brand-C6PFGGQN.js.map → brand-YRTEPGBK.js.map} +0 -0
- /package/dist/{campaign-writes-SX52CJYW.js.map → campaign-writes-SXLZFYF6.js.map} +0 -0
- /package/dist/{campaigns-KZYZTXDS.js.map → campaigns-OYMXDGWX.js.map} +0 -0
- /package/dist/{campaigns-X3DPCCSN.js.map → campaigns-YS3OGQXO.js.map} +0 -0
- /package/dist/{canvas-DPCBGW7K.js.map → canvas-YQFG52IG.js.map} +0 -0
- /package/dist/{catalog-ME44ZRZF.js.map → catalog-XLXIM7IW.js.map} +0 -0
- /package/dist/{catalogs-G3YEVG6S.js.map → catalogs-BRXEDE56.js.map} +0 -0
- /package/dist/{chatgpt-QNUN63YS.js.map → chatgpt-7W75X3ER.js.map} +0 -0
- /package/dist/{chunk-7YCRFMXF.js.map → chunk-24EB7EDR.js.map} +0 -0
- /package/dist/{chunk-5ZDLTE5T.js.map → chunk-2AOE2MZQ.js.map} +0 -0
- /package/dist/{chunk-IBURXTL4.js.map → chunk-2VPBIT65.js.map} +0 -0
- /package/dist/{chunk-NPY4QUMQ.js.map → chunk-54C6YDGJ.js.map} +0 -0
- /package/dist/{chunk-LZ73CZGP.js.map → chunk-5WCSKQ7Z.js.map} +0 -0
- /package/dist/{chunk-3G3ZDLMI.js.map → chunk-5ZNTADVR.js.map} +0 -0
- /package/dist/{chunk-AEOSAVVL.js.map → chunk-6F7DVPOS.js.map} +0 -0
- /package/dist/{chunk-FD27ZDVP.js.map → chunk-6NY2GPR4.js.map} +0 -0
- /package/dist/{chunk-TT5R35PJ.js.map → chunk-6Y7ZBENQ.js.map} +0 -0
- /package/dist/{chunk-5Y5UAJWD.js.map → chunk-7CTMH5AK.js.map} +0 -0
- /package/dist/{chunk-35XWJEWH.js.map → chunk-7J6EHOH6.js.map} +0 -0
- /package/dist/{chunk-Z2EOC6PL.js.map → chunk-ASI4P6X2.js.map} +0 -0
- /package/dist/{chunk-2QHODRR6.js.map → chunk-C46GUI2S.js.map} +0 -0
- /package/dist/{chunk-K7FZXIOZ.js.map → chunk-CWYAELVG.js.map} +0 -0
- /package/dist/{chunk-MXYBTMKB.js.map → chunk-DCRPXOJJ.js.map} +0 -0
- /package/dist/{chunk-54UVGFX3.js.map → chunk-EAP4O4FE.js.map} +0 -0
- /package/dist/{chunk-K66OLA6Y.js.map → chunk-FPOGPFAG.js.map} +0 -0
- /package/dist/{chunk-JQJDXPCO.js.map → chunk-FUHN4MFY.js.map} +0 -0
- /package/dist/{chunk-S77PZVYM.js.map → chunk-FYGR3I2A.js.map} +0 -0
- /package/dist/{chunk-OZRUJVIQ.js.map → chunk-H3427GPU.js.map} +0 -0
- /package/dist/{chunk-KQTYTCKQ.js.map → chunk-HZUDRKGR.js.map} +0 -0
- /package/dist/{chunk-IR6D7K4H.js.map → chunk-I3ZR655O.js.map} +0 -0
- /package/dist/{chunk-J5IY3GVE.js.map → chunk-KMKEYI37.js.map} +0 -0
- /package/dist/{chunk-W3ZHJJVT.js.map → chunk-KS2QY6MK.js.map} +0 -0
- /package/dist/{chunk-GLCPTMPG.js.map → chunk-LYQJ4PZW.js.map} +0 -0
- /package/dist/{chunk-GBMP4F45.js.map → chunk-MACCF4JZ.js.map} +0 -0
- /package/dist/{chunk-CSYSX4D2.js.map → chunk-N4LAYIIN.js.map} +0 -0
- /package/dist/{chunk-4AUMTNVB.js.map → chunk-NA63BH7V.js.map} +0 -0
- /package/dist/{chunk-KFE3S63W.js.map → chunk-NCWCZY5P.js.map} +0 -0
- /package/dist/{chunk-4BQXAE7Z.js.map → chunk-NDEE6G2J.js.map} +0 -0
- /package/dist/{chunk-7ZHMGXE2.js.map → chunk-NJXNU2G6.js.map} +0 -0
- /package/dist/{chunk-HQSCJYZO.js.map → chunk-P5T7OZKV.js.map} +0 -0
- /package/dist/{chunk-VB6WJJR3.js.map → chunk-PZXCWSKV.js.map} +0 -0
- /package/dist/{chunk-MELOSESI.js.map → chunk-R25YLW6H.js.map} +0 -0
- /package/dist/{chunk-Y6O7EWYY.js.map → chunk-RL5CP7N6.js.map} +0 -0
- /package/dist/{chunk-HBTF25YG.js.map → chunk-RX2DKU3W.js.map} +0 -0
- /package/dist/{chunk-647RO73Q.js.map → chunk-ULG4QRTV.js.map} +0 -0
- /package/dist/{chunk-QRP3PXWN.js.map → chunk-VL43TNIP.js.map} +0 -0
- /package/dist/{chunk-SHL7LOC3.js.map → chunk-VLMBTPXU.js.map} +0 -0
- /package/dist/{chunk-LYBXCXJB.js.map → chunk-VNUNE5AB.js.map} +0 -0
- /package/dist/{chunk-KHRXPQID.js.map → chunk-VYQ3QJ3C.js.map} +0 -0
- /package/dist/{chunk-A4LOJ2VD.js.map → chunk-WGUQHAJY.js.map} +0 -0
- /package/dist/{chunk-ZEYEWPK6.js.map → chunk-WKQG6TER.js.map} +0 -0
- /package/dist/{chunk-ULJ5RFOV.js.map → chunk-XFGAUP5B.js.map} +0 -0
- /package/dist/{chunk-3IBYKLXR.js.map → chunk-ZDMTXQ2Q.js.map} +0 -0
- /package/dist/{connect-QCOGEPP4.js.map → connect-FCXNVTXG.js.map} +0 -0
- /package/dist/{conversion-report-N4HANYOB.js.map → conversion-report-XQBJ6LG4.js.map} +0 -0
- /package/dist/{conversion-writes-LW4HQKK5.js.map → conversion-writes-UBCVXP2E.js.map} +0 -0
- /package/dist/{conversions-TS723AZV.js.map → conversions-D236RTUK.js.map} +0 -0
- /package/dist/{creatives-SJTJU6VT.js.map → creatives-FXUQ5WSD.js.map} +0 -0
- /package/dist/{customers-4AWBFDUF.js.map → customers-XH2DMTFH.js.map} +0 -0
- /package/dist/{draft-THPZFASM.js.map → draft-MNFJ4G3C.js.map} +0 -0
- /package/dist/{feedback-XNJQ63DS.js.map → feedback-EIZKS4JU.js.map} +0 -0
- /package/dist/{find-OTDIX6V4.js.map → find-FRRHAPWX.js.map} +0 -0
- /package/dist/{fit-7237F5EB.js.map → fit-UOFYFJ4Q.js.map} +0 -0
- /package/dist/{fonts-EMMX3KII.js.map → fonts-MXR3ZKDX.js.map} +0 -0
- /package/dist/{ga4-UDQ2HA2J.js.map → ga4-DV2AXCSL.js.map} +0 -0
- /package/dist/{generate-MMBYB44G.js.map → generate-3XYYITU6.js.map} +0 -0
- /package/dist/{google-M7KEXVK5.js.map → google-6OGZX47I.js.map} +0 -0
- /package/dist/{google-KTO3PLEU.js.map → google-QYYYSSXI.js.map} +0 -0
- /package/dist/{gsc-P3QYGDV2.js.map → gsc-TAKOF7J5.js.map} +0 -0
- /package/dist/{history-DBIEYQHY.js.map → history-Q3QCT64S.js.map} +0 -0
- /package/dist/{icon-I43F77FV.js.map → icon-L4RSS6PZ.js.map} +0 -0
- /package/dist/{ideas-MIDU7YOA.js.map → ideas-NFOW3HKJ.js.map} +0 -0
- /package/dist/{images-S254MS6O.js.map → images-2EFFUNNV.js.map} +0 -0
- /package/dist/{ingest-YV2NLDBE.js.map → ingest-2EIKN4QC.js.map} +0 -0
- /package/dist/{insights-ZIU6FJMS.js.map → insights-LNAXV2CG.js.map} +0 -0
- /package/dist/{inspiration-P265QJ2H.js.map → inspiration-S3DU4CMQ.js.map} +0 -0
- /package/dist/{landing-CJYGWCK4.js.map → landing-2ZB46LXH.js.map} +0 -0
- /package/dist/{line-items-7ZGIKEF2.js.map → line-items-5NECXUZT.js.map} +0 -0
- /package/dist/{locations-74TPQWAT.js.map → locations-2NKBJKBT.js.map} +0 -0
- /package/dist/{logo-2IP663QO.js.map → logo-Q5D7PZY6.js.map} +0 -0
- /package/dist/{lookup-XK45W2SH.js.map → lookup-ETWY47F7.js.map} +0 -0
- /package/dist/{media-sources-O6ZRUA3N.js.map → media-sources-ZXHEEP6T.js.map} +0 -0
- /package/dist/{models-7U3GRYHF.js.map → models-3Z6MDHQW.js.map} +0 -0
- /package/dist/{performance-6QW2KEEQ.js.map → performance-UF5VTY2U.js.map} +0 -0
- /package/dist/{pixels-45A55MOP.js.map → pixels-TZPF746S.js.map} +0 -0
- /package/dist/{promoted-tweets-SURKMHFI.js.map → promoted-tweets-LZKS5JIF.js.map} +0 -0
- /package/dist/{reddit-GIP3ADMS.js.map → reddit-NU2N3LZD.js.map} +0 -0
- /package/dist/{research-EY7C7JJY.js.map → research-FMM6AWZC.js.map} +0 -0
- /package/dist/{run-XQ7EM3JT.js.map → run-EUO34T2J.js.map} +0 -0
- /package/dist/{scheduled-agents-6U44QE76.js.map → scheduled-agents-N4LJRM4C.js.map} +0 -0
- /package/dist/{sources-YBQ6KPFM.js.map → sources-FQ2UZTHL.js.map} +0 -0
- /package/dist/{stock-2YCDN3N6.js.map → stock-KXJ26BY4.js.map} +0 -0
- /package/dist/{studio-C5K3YX3P.js.map → studio-SYKOSNDB.js.map} +0 -0
- /package/dist/{sync-definition-ILS2B2BJ.js.map → sync-definition-QR2N233R.js.map} +0 -0
- /package/dist/{tags-3WPW6PTV.js.map → tags-PYWFSBTR.js.map} +0 -0
- /package/dist/{targeting-criteria-NR47AF5C.js.map → targeting-criteria-RJFLFICN.js.map} +0 -0
- /package/dist/{testimonials-CVC4YIXO.js.map → testimonials-DII5DYLR.js.map} +0 -0
- /package/dist/{videos-YSXYGTBM.js.map → videos-LICG6ACJ.js.map} +0 -0
- /package/dist/{viewer-check-45T2HLAH.js.map → viewer-check-L4B4LIAX.js.map} +0 -0
- /package/dist/{winning-ads-ASH5DSV3.js.map → winning-ads-C6S2C5VP.js.map} +0 -0
- /package/dist/{x-BFSKFCZD.js.map → x-CZHRC6U7.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/ads/linkedin/audience-size.ts"],"sourcesContent":["import { readFileSync } from \"node:fs\";\nimport { defineCommand } from \"citty\";\nimport { NO_CACHE_ARG } from \"../../../cache-flag.ts\";\nimport { apiPost } from \"../../../client.ts\";\nimport { writeAdsJson } from \"../output.ts\";\nimport { handleLinkedinError, resolveAccountIdArg } from \"./shared.ts\";\n\ninterface AudienceSizeResult {\n total: number;\n active: number;\n warnings: string[];\n}\n\n/**\n * Read targeting JSON from --targeting-file, --targeting (inline JSON), or\n * stdin. Returns the parsed object — failure exits via handleLinkedinError.\n */\nfunction loadTargeting(args: Record<string, unknown>): unknown {\n const inline = args.targeting as string | undefined;\n if (inline) {\n try {\n return JSON.parse(inline);\n } catch {\n handleLinkedinError(new Error(\"--targeting must be valid JSON. See LinkedIn 'targetingCriteria' shape.\"));\n }\n }\n const file = args[\"targeting-file\"] as string | undefined;\n if (file) {\n try {\n return JSON.parse(readFileSync(file, \"utf-8\"));\n } catch (e) {\n handleLinkedinError(\n new Error(`Failed to read --targeting-file: ${e instanceof Error ? e.message : \"I/O error\"}`),\n );\n }\n }\n handleLinkedinError(new Error(\"Pass --targeting-file <path> or --targeting '{...JSON...}'\"));\n}\n\nexport const audienceSizeCommand = defineCommand({\n meta: {\n name: \"audience-size\",\n description: `Estimate audience size for a targeting payload — pre-launch sanity check.\n\nReturns total + active counts plus playbook §04 warnings:\n size <20K → too narrow (will not deliver)\n size <50K → outside the 50K–500K sweet spot\n size >500K → outside the sweet spot\n size >1M → too broad, refine ICP\n\nThe targeting payload must follow LinkedIn's 'targetingCriteria' shape — an\ninclude/exclude tree of and/or boolean operators with adTargetingFacet keys.\nThe simplest form:\n { \"include\": { \"and\": [{ \"or\": { \"urn:li:adTargetingFacet:locations\": [\"urn:li:geo:103644278\"] }}]}}\n\nExamples:\n baker ads linkedin audience-size --account-id 503001492 --targeting-file targeting.json\n baker ads linkedin audience-size --account-id 503001492 --targeting '{\"include\":{\"and\":[]}}'`,\n },\n args: {\n \"account-id\": { type: \"string\", description: \"Numeric account ID or urn:li:sponsoredAccount:N\" },\n \"account-urn\": { type: \"string\", description: \"Alias for --account-id\" },\n targeting: { type: \"string\", description: \"Inline JSON targetingCriteria payload\" },\n \"targeting-file\": { type: \"string\", description: \"Path to JSON file with targetingCriteria\" },\n \"no-cache\": NO_CACHE_ARG,\n output: { type: \"string\", description: \"json\", default: \"json\" },\n },\n run: async ({ args }) => {\n const accountId = resolveAccountIdArg(args);\n const targetingCriteria = loadTargeting(args);\n try {\n const data = await apiPost<AudienceSizeResult>(\"/api/ads/linkedin/audience-size\", {\n accountId,\n targetingCriteria,\n skipCache: Boolean(args[\"no-cache\"]),\n });\n writeAdsJson({ ok: true, data });\n } catch (err) {\n handleLinkedinError(err);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAgB9B,SAAS,cAAc,MAAwC;AAC7D,QAAM,SAAS,KAAK;AACpB,MAAI,QAAQ;AACV,QAAI;AACF,aAAO,KAAK,MAAM,MAAM;AAAA,IAC1B,QAAQ;AACN,0BAAoB,IAAI,MAAM,yEAAyE,CAAC;AAAA,IAC1G;AAAA,EACF;AACA,QAAM,OAAO,KAAK,gBAAgB;AAClC,MAAI,MAAM;AACR,QAAI;AACF,aAAO,KAAK,MAAM,aAAa,MAAM,OAAO,CAAC;AAAA,IAC/C,SAAS,GAAG;AACV;AAAA,QACE,IAAI,MAAM,oCAAoC,aAAa,QAAQ,EAAE,UAAU,WAAW,EAAE;AAAA,MAC9F;AAAA,IACF;AAAA,EACF;AACA,sBAAoB,IAAI,MAAM,4DAA4D,CAAC;AAC7F;AAEO,IAAM,sBAAsB,cAAc;AAAA,EAC/C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBf;AAAA,EACA,MAAM;AAAA,IACJ,cAAc,EAAE,MAAM,UAAU,aAAa,kDAAkD;AAAA,IAC/F,eAAe,EAAE,MAAM,UAAU,aAAa,yBAAyB;AAAA,IACvE,WAAW,EAAE,MAAM,UAAU,aAAa,wCAAwC;AAAA,IAClF,kBAAkB,EAAE,MAAM,UAAU,aAAa,2CAA2C;AAAA,IAC5F,YAAY;AAAA,IACZ,QAAQ,EAAE,MAAM,UAAU,aAAa,QAAQ,SAAS,OAAO;AAAA,EACjE;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,UAAM,YAAY,oBAAoB,IAAI;AAC1C,UAAM,oBAAoB,cAAc,IAAI;AAC5C,QAAI;AACF,YAAM,OAAO,MAAM,QAA4B,mCAAmC;AAAA,QAChF;AAAA,QACA;AAAA,QACA,WAAW,QAAQ,KAAK,UAAU,CAAC;AAAA,MACrC,CAAC;AACD,mBAAa,EAAE,IAAI,MAAM,KAAK,CAAC;AAAA,IACjC,SAAS,KAAK;AACZ,0BAAoB,GAAG;AAAA,IACzB;AAAA,EACF;AACF,CAAC;","names":[]}
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
import {
|
|
2
|
+
csvArg,
|
|
3
|
+
failWriteValidation,
|
|
4
|
+
requireTarget,
|
|
5
|
+
requireTargets,
|
|
6
|
+
schemaArgs,
|
|
7
|
+
stageChatgptOp,
|
|
8
|
+
stageChatgptOps
|
|
9
|
+
} from "./chunk-7J6EHOH6.js";
|
|
10
|
+
import {
|
|
11
|
+
CHATGPT_ADS_REFERENCE,
|
|
12
|
+
CHATGPT_AUDIENCE_USES,
|
|
13
|
+
CHATGPT_MAX_STAGED_MEMBERS,
|
|
14
|
+
runChatgptListRead
|
|
15
|
+
} from "./chunk-FTWJFDIN.js";
|
|
16
|
+
import "./chunk-VFIOJD5M.js";
|
|
17
|
+
import "./chunk-XBOK23HI.js";
|
|
18
|
+
import "./chunk-IFWP3ZDO.js";
|
|
19
|
+
import "./chunk-NAWWC5I3.js";
|
|
20
|
+
import {
|
|
21
|
+
registerSchema
|
|
22
|
+
} from "./chunk-NU7JSWVA.js";
|
|
23
|
+
import "./chunk-YQSBHWOI.js";
|
|
24
|
+
|
|
25
|
+
// src/commands/ads/chatgpt/audiences.ts
|
|
26
|
+
import { readFileSync } from "fs";
|
|
27
|
+
import { defineCommand } from "citty";
|
|
28
|
+
|
|
29
|
+
// src/commands/ads/chatgpt/audience-members.ts
|
|
30
|
+
import { createHash } from "crypto";
|
|
31
|
+
import { parse } from "csv-parse/sync";
|
|
32
|
+
import { isSupportedCountry, parsePhoneNumberFromString } from "libphonenumber-js";
|
|
33
|
+
function sha256(value) {
|
|
34
|
+
return createHash("sha256").update(value, "utf8").digest("hex");
|
|
35
|
+
}
|
|
36
|
+
function normalizedEmail(value) {
|
|
37
|
+
const email = value.trim().toLowerCase();
|
|
38
|
+
return /^[^@\s;,|]+@[^@\s;,|]+\.[^@\s;,|]+$/.test(email) ? email : void 0;
|
|
39
|
+
}
|
|
40
|
+
function normalizedPhone(value, defaultCountry) {
|
|
41
|
+
const country = defaultCountry && isSupportedCountry(defaultCountry) ? defaultCountry : void 0;
|
|
42
|
+
const phone = parsePhoneNumberFromString(value.trim(), country);
|
|
43
|
+
return phone?.isValid() ? phone.number : void 0;
|
|
44
|
+
}
|
|
45
|
+
function hashedMembers(input) {
|
|
46
|
+
const rejected = [];
|
|
47
|
+
const emailHashes = /* @__PURE__ */ new Set();
|
|
48
|
+
const phoneHashes = /* @__PURE__ */ new Set();
|
|
49
|
+
for (const value of input.emails) {
|
|
50
|
+
const email = normalizedEmail(value);
|
|
51
|
+
email ? emailHashes.add(sha256(email)) : rejected.push(value.trim());
|
|
52
|
+
}
|
|
53
|
+
for (const value of input.phones) {
|
|
54
|
+
const phone = normalizedPhone(value, input.defaultCountry);
|
|
55
|
+
phone ? phoneHashes.add(sha256(phone)) : rejected.push(value.trim());
|
|
56
|
+
}
|
|
57
|
+
return { emailHashes: [...emailHashes], phoneHashes: [...phoneHashes], rejected };
|
|
58
|
+
}
|
|
59
|
+
function headerWords(cell) {
|
|
60
|
+
return cell.normalize("NFD").replace(new RegExp("\\p{Diacritic}", "gu"), "").toLowerCase().replace(/[^a-z0-9]+/g, " ").trim();
|
|
61
|
+
}
|
|
62
|
+
var EMAIL_HEADER = /\b(e ?mail|correo|mail)\b/;
|
|
63
|
+
var PHONE_HEADER = /\b(phone|telefono|movil|mobile|tel|celular)\b/;
|
|
64
|
+
function membersFromFile(content) {
|
|
65
|
+
const rows = parse(content, {
|
|
66
|
+
bom: true,
|
|
67
|
+
skip_empty_lines: true,
|
|
68
|
+
relax_column_count: true,
|
|
69
|
+
trim: true,
|
|
70
|
+
delimiter: [",", ";", " "]
|
|
71
|
+
});
|
|
72
|
+
const header = (rows[0] ?? []).map(headerWords);
|
|
73
|
+
const emailColumn = header.findIndex((cell) => EMAIL_HEADER.test(cell));
|
|
74
|
+
const phoneColumn = header.findIndex((cell) => !EMAIL_HEADER.test(cell) && PHONE_HEADER.test(cell));
|
|
75
|
+
if (emailColumn >= 0 || phoneColumn >= 0) {
|
|
76
|
+
const cells = (column) => column < 0 ? [] : rows.slice(1).flatMap((row) => row[column] ? [row[column]] : []);
|
|
77
|
+
return { emails: cells(emailColumn), phones: cells(phoneColumn) };
|
|
78
|
+
}
|
|
79
|
+
const values = rows.flatMap((row) => row[0] ? [row[0]] : []);
|
|
80
|
+
return values.some((value) => value.includes("@")) ? { emails: values, phones: [] } : { emails: [], phones: values };
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// src/commands/ads/chatgpt/audiences.ts
|
|
84
|
+
var REFERENCE = CHATGPT_ADS_REFERENCE.audiences;
|
|
85
|
+
var MEMBER_ARGS = {
|
|
86
|
+
emails: { type: "string", description: "Emails, comma-separated" },
|
|
87
|
+
phones: { type: "string", description: "Phones, comma-separated \u2014 E.164 (+34\u2026), or local with --country" },
|
|
88
|
+
file: {
|
|
89
|
+
type: "string",
|
|
90
|
+
description: "A CSV with an email and/or phone column, or one email or phone per line \u2014 the company's own customers"
|
|
91
|
+
},
|
|
92
|
+
country: { type: "string", description: "Country of phones written without a +code, e.g. ES" }
|
|
93
|
+
};
|
|
94
|
+
function membersFromArgs(args, readFile = (path) => readFileSync(path, "utf8")) {
|
|
95
|
+
const fromFile = typeof args.file === "string" && args.file ? membersFromFile(readFile(args.file)) : { emails: [], phones: [] };
|
|
96
|
+
const given = [...csvArg(args.emails) ?? [], ...fromFile.emails];
|
|
97
|
+
const givenPhones = [...csvArg(args.phones) ?? [], ...fromFile.phones];
|
|
98
|
+
const members = hashedMembers({
|
|
99
|
+
emails: given,
|
|
100
|
+
phones: givenPhones,
|
|
101
|
+
defaultCountry: typeof args.country === "string" ? args.country.toUpperCase() : void 0
|
|
102
|
+
});
|
|
103
|
+
const count = members.emailHashes.length + members.phoneHashes.length;
|
|
104
|
+
const offered = given.length + givenPhones.length + (typeof args.file === "string" && args.file ? 1 : 0);
|
|
105
|
+
const refusal = count > CHATGPT_MAX_STAGED_MEMBERS ? `${count} members \u2014 at most ${CHATGPT_MAX_STAGED_MEMBERS} per change; split the file` : count === 0 && offered > 0 ? "none of the values was an email or a valid phone \u2014 name the columns email and phone, and give phones a +country code or --country" : void 0;
|
|
106
|
+
return {
|
|
107
|
+
payload: {
|
|
108
|
+
...members.emailHashes.length > 0 ? { emailHashes: members.emailHashes } : {},
|
|
109
|
+
...members.phoneHashes.length > 0 ? { phoneHashes: members.phoneHashes } : {}
|
|
110
|
+
},
|
|
111
|
+
rejected: members.rejected.length,
|
|
112
|
+
...refusal ? { refusal } : {}
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
function rejectedHint(rejected) {
|
|
116
|
+
return rejected > 0 ? [
|
|
117
|
+
`${rejected} value(s) were neither an email nor a valid phone and were left out \u2014 phones need a +country code, or --country.`
|
|
118
|
+
] : [];
|
|
119
|
+
}
|
|
120
|
+
var LIST_ARGS = {
|
|
121
|
+
"eligible-for": {
|
|
122
|
+
type: "string",
|
|
123
|
+
description: `Only audiences ChatGPT Ads lets serve this use: ${CHATGPT_AUDIENCE_USES.join("|")}`
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
registerSchema({
|
|
127
|
+
command: "ads.chatgpt.audiences.list",
|
|
128
|
+
description: "The account's custom audiences: status, and matched people as a privacy range (under_25k\u2026). `ready` is not eligibility \u2014 pass --eligible-for to list only those a use accepts.",
|
|
129
|
+
args: schemaArgs(LIST_ARGS)
|
|
130
|
+
});
|
|
131
|
+
var audiencesListCommand = defineCommand({
|
|
132
|
+
meta: { name: "list", description: "List the account's custom audiences." },
|
|
133
|
+
args: LIST_ARGS,
|
|
134
|
+
run: async ({ args }) => {
|
|
135
|
+
const use = typeof args["eligible-for"] === "string" ? args["eligible-for"] : void 0;
|
|
136
|
+
await runChatgptListRead(
|
|
137
|
+
REFERENCE,
|
|
138
|
+
"/api/ads/chatgpt/audiences",
|
|
139
|
+
use ? { eligible_for: use } : void 0,
|
|
140
|
+
(rows) => rows.length === 0 ? ["No audience. Stage one with `baker ads chatgpt audiences create --name \u2026 --file customers.csv`."] : [
|
|
141
|
+
"Including an audience needs about 25,000 matched people; excluding works at any size. Custom audiences do not work in campaigns serving the EEA or Switzerland."
|
|
142
|
+
]
|
|
143
|
+
);
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
var CREATE_ARGS = {
|
|
147
|
+
name: { type: "string", description: "Audience name (3+ characters)", required: true },
|
|
148
|
+
description: { type: "string", description: "What the list is" },
|
|
149
|
+
...MEMBER_ARGS
|
|
150
|
+
};
|
|
151
|
+
registerSchema({
|
|
152
|
+
command: "ads.chatgpt.audiences.create",
|
|
153
|
+
description: "Stage a custom audience from the company's own customers (emails and/or phones, hashed on this machine), or an empty one. Created when the chat is published; only first-party data the company may use for ads.",
|
|
154
|
+
args: schemaArgs(CREATE_ARGS)
|
|
155
|
+
});
|
|
156
|
+
var audiencesCreateCommand = defineCommand({
|
|
157
|
+
meta: {
|
|
158
|
+
name: "create",
|
|
159
|
+
description: `Stage a custom audience (applies when the chat is published). Members are hashed here; nothing raw is sent.
|
|
160
|
+
|
|
161
|
+
Examples:
|
|
162
|
+
baker ads chatgpt audiences create --name "Customers 2026" --file customers.csv --country ES
|
|
163
|
+
baker ads chatgpt audiences create --name "Recent buyers" # empty, fill it later with add`
|
|
164
|
+
},
|
|
165
|
+
args: CREATE_ARGS,
|
|
166
|
+
run: async ({ args }) => {
|
|
167
|
+
const { payload, rejected, refusal } = membersFromArgs(args);
|
|
168
|
+
if (refusal) {
|
|
169
|
+
failWriteValidation(refusal);
|
|
170
|
+
}
|
|
171
|
+
await stageChatgptOp(
|
|
172
|
+
{
|
|
173
|
+
kind: "audience.create",
|
|
174
|
+
payload: { name: args.name, ...args.description ? { description: args.description } : {}, ...payload }
|
|
175
|
+
},
|
|
176
|
+
REFERENCE,
|
|
177
|
+
(staged) => [
|
|
178
|
+
...rejectedHint(rejected),
|
|
179
|
+
`Use it on a campaign after the publish, once \`audiences\` shows it ready: campaigns update <cmpn_id> --excluded-audience-ids <caud_id>. (${staged.ref} is its ref in this chat.)`
|
|
180
|
+
]
|
|
181
|
+
);
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
function membersCommand(verb) {
|
|
185
|
+
const args = {
|
|
186
|
+
id: { type: "positional", description: "Audience id (caud_\u2026)", required: true },
|
|
187
|
+
...MEMBER_ARGS
|
|
188
|
+
};
|
|
189
|
+
registerSchema({
|
|
190
|
+
command: `ads.chatgpt.audiences.${verb}`,
|
|
191
|
+
description: `Stage ${verb === "add" ? "adding" : "removing"} members ${verb === "add" ? "to" : "from"} a live custom audience, hashed on this machine. Applies when the chat is published.`,
|
|
192
|
+
args: schemaArgs(args)
|
|
193
|
+
});
|
|
194
|
+
return defineCommand({
|
|
195
|
+
meta: {
|
|
196
|
+
name: verb,
|
|
197
|
+
description: `Stage ${verb === "add" ? "adding" : "removing"} members.
|
|
198
|
+
|
|
199
|
+
Example:
|
|
200
|
+
baker ads chatgpt audiences ${verb} caud_123 --emails ana@example.com,luis@example.com`
|
|
201
|
+
},
|
|
202
|
+
args,
|
|
203
|
+
run: async ({ args: parsed }) => {
|
|
204
|
+
const { payload, rejected, refusal } = membersFromArgs(parsed);
|
|
205
|
+
if (refusal) {
|
|
206
|
+
failWriteValidation(refusal);
|
|
207
|
+
}
|
|
208
|
+
if (!payload.emailHashes && !payload.phoneHashes) {
|
|
209
|
+
failWriteValidation("name at least one email or phone with --emails, --phones or --file");
|
|
210
|
+
}
|
|
211
|
+
await stageChatgptOp(
|
|
212
|
+
{ kind: `audience.${verb}`, target: requireTarget(parsed, "id"), payload },
|
|
213
|
+
REFERENCE,
|
|
214
|
+
() => rejectedHint(rejected)
|
|
215
|
+
);
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
var ARCHIVE_ARGS = {
|
|
220
|
+
ids: { type: "positional", description: "Audience ids, comma-separated", required: true }
|
|
221
|
+
};
|
|
222
|
+
registerSchema({
|
|
223
|
+
command: "ads.chatgpt.audiences.archive",
|
|
224
|
+
description: "Stage archiving custom audiences \u2014 for good: ChatGPT Ads cannot bring one back. Pass every id in one call.",
|
|
225
|
+
args: schemaArgs(ARCHIVE_ARGS)
|
|
226
|
+
});
|
|
227
|
+
var audiencesArchiveCommand = defineCommand({
|
|
228
|
+
meta: {
|
|
229
|
+
name: "archive",
|
|
230
|
+
description: `Stage archiving audiences, for good.
|
|
231
|
+
|
|
232
|
+
Example:
|
|
233
|
+
baker ads chatgpt audiences archive caud_123`
|
|
234
|
+
},
|
|
235
|
+
args: ARCHIVE_ARGS,
|
|
236
|
+
run: async ({ args }) => {
|
|
237
|
+
await stageChatgptOps(
|
|
238
|
+
requireTargets(args, "ids").map((id) => ({ kind: "audience.archive", target: id, payload: {} })),
|
|
239
|
+
REFERENCE
|
|
240
|
+
);
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
var audiencesCommand = defineCommand({
|
|
244
|
+
meta: {
|
|
245
|
+
name: "audiences",
|
|
246
|
+
description: `Custom audiences \u2014 the company's own customer lists a campaign serves to or leaves out.
|
|
247
|
+
|
|
248
|
+
Examples:
|
|
249
|
+
baker ads chatgpt audiences
|
|
250
|
+
baker ads chatgpt audiences create --name "Customers 2026" --file customers.csv --country ES
|
|
251
|
+
baker ads chatgpt audiences add caud_123 --emails ana@example.com`
|
|
252
|
+
},
|
|
253
|
+
subCommands: {
|
|
254
|
+
list: audiencesListCommand,
|
|
255
|
+
create: audiencesCreateCommand,
|
|
256
|
+
add: membersCommand("add"),
|
|
257
|
+
remove: membersCommand("remove"),
|
|
258
|
+
archive: audiencesArchiveCommand
|
|
259
|
+
},
|
|
260
|
+
// A parent must never declare `run`: citty falls through to it after the matched subcommand.
|
|
261
|
+
args: {},
|
|
262
|
+
default: "list"
|
|
263
|
+
});
|
|
264
|
+
export {
|
|
265
|
+
audiencesCommand,
|
|
266
|
+
membersFromArgs
|
|
267
|
+
};
|
|
268
|
+
//# sourceMappingURL=audiences-TGD5US2M.js.map
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import {
|
|
2
|
+
handleLinkedinError,
|
|
3
|
+
resolveAccountIdArg
|
|
4
|
+
} from "./chunk-N4LAYIIN.js";
|
|
5
|
+
import {
|
|
6
|
+
writeAdsJson
|
|
7
|
+
} from "./chunk-VFIOJD5M.js";
|
|
8
|
+
import {
|
|
9
|
+
NO_CACHE_ARG
|
|
10
|
+
} from "./chunk-X7ZODEXJ.js";
|
|
11
|
+
import "./chunk-7EPXVICM.js";
|
|
12
|
+
import "./chunk-GXDLWBOY.js";
|
|
13
|
+
import "./chunk-TEINLN64.js";
|
|
14
|
+
import "./chunk-ZJWUBJYQ.js";
|
|
15
|
+
import "./chunk-HR6IWNKE.js";
|
|
16
|
+
import "./chunk-NE4F3FHN.js";
|
|
17
|
+
import {
|
|
18
|
+
apiPost
|
|
19
|
+
} from "./chunk-XBOK23HI.js";
|
|
20
|
+
import "./chunk-IFWP3ZDO.js";
|
|
21
|
+
import "./chunk-NAWWC5I3.js";
|
|
22
|
+
import "./chunk-NU7JSWVA.js";
|
|
23
|
+
import "./chunk-YQSBHWOI.js";
|
|
24
|
+
|
|
25
|
+
// src/commands/ads/linkedin/audit.ts
|
|
26
|
+
import { defineCommand } from "citty";
|
|
27
|
+
var SEVERITY_RANK = {
|
|
28
|
+
critical: 0,
|
|
29
|
+
high: 1,
|
|
30
|
+
medium: 2,
|
|
31
|
+
low: 3
|
|
32
|
+
};
|
|
33
|
+
var STATUS_RANK = {
|
|
34
|
+
fail: 0,
|
|
35
|
+
warn: 1,
|
|
36
|
+
partial: 2,
|
|
37
|
+
pass: 3,
|
|
38
|
+
n_a: 4
|
|
39
|
+
};
|
|
40
|
+
function filterFindings(findings, severity, area) {
|
|
41
|
+
return findings.filter((f) => {
|
|
42
|
+
if (severity && !severity.includes(f.severity)) return false;
|
|
43
|
+
if (area && !area.includes(f.area)) return false;
|
|
44
|
+
return true;
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
function sortFindings(findings) {
|
|
48
|
+
return [...findings].sort((a, b) => {
|
|
49
|
+
const sa = STATUS_RANK[a.status] - STATUS_RANK[b.status];
|
|
50
|
+
if (sa !== 0) return sa;
|
|
51
|
+
return SEVERITY_RANK[a.severity] - SEVERITY_RANK[b.severity];
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
function renderMarkdown(result) {
|
|
55
|
+
const lines = [];
|
|
56
|
+
lines.push(`# LinkedIn Ads Audit \u2014 ${result.account.name} (${result.account.id})`);
|
|
57
|
+
lines.push("");
|
|
58
|
+
lines.push(
|
|
59
|
+
`**Scope:** ${result.scope.campaigns} campaigns, ${result.scope.creatives} creatives, last ${result.scope.windowDays}d`
|
|
60
|
+
);
|
|
61
|
+
lines.push("");
|
|
62
|
+
lines.push(
|
|
63
|
+
`**Summary:** ${result.summary.pass} pass \u2022 ${result.summary.critical} critical \u2022 ${result.summary.high} high \u2022 ${result.summary.medium} medium \u2022 ${result.summary.low} low \u2022 ${result.summary.n_a} n/a (${result.summary.totalChecks} total)`
|
|
64
|
+
);
|
|
65
|
+
lines.push("");
|
|
66
|
+
lines.push("| # | Area | Check | Status | Severity | Notes |");
|
|
67
|
+
lines.push("|---|------|-------|--------|----------|-------|");
|
|
68
|
+
result.findings.forEach((f, idx) => {
|
|
69
|
+
const note = noteOf(f);
|
|
70
|
+
lines.push(
|
|
71
|
+
`| ${idx + 1} | ${f.area} | ${escapeMd(f.check)} | ${f.status.toUpperCase()} | ${f.severity} | ${escapeMd(note)} |`
|
|
72
|
+
);
|
|
73
|
+
});
|
|
74
|
+
return lines.join("\n");
|
|
75
|
+
}
|
|
76
|
+
function escapeMd(text) {
|
|
77
|
+
return text.replace(/\|/g, "\\|").replace(/\n/g, " ");
|
|
78
|
+
}
|
|
79
|
+
function noteOf(f) {
|
|
80
|
+
if (f.status === "pass") return "";
|
|
81
|
+
const ev = f.evidence ? JSON.stringify(f.evidence) : "";
|
|
82
|
+
const fix = f.fix?.explanation ?? "";
|
|
83
|
+
return [fix, ev].filter(Boolean).join(" \u2014 ");
|
|
84
|
+
}
|
|
85
|
+
var auditCommand = defineCommand({
|
|
86
|
+
meta: {
|
|
87
|
+
name: "audit",
|
|
88
|
+
description: `Run a LinkedIn Ads playbook audit \u2014 30+ checks across Settings, Tracking,
|
|
89
|
+
Audience, Campaigns, Creative, Performance, Bidding, and Compliance.
|
|
90
|
+
|
|
91
|
+
Each finding has {id, area, check, status, severity, evidence, fix} fields with
|
|
92
|
+
playbook citations. The default JSON output is agent-friendly; --format md
|
|
93
|
+
renders a deliverable-ready table that mirrors the google-ads-playbook
|
|
94
|
+
10-audit-summary.md style.
|
|
95
|
+
|
|
96
|
+
Exit code 0 always. Use the JSON 'summary' counts to decide if action is needed.
|
|
97
|
+
|
|
98
|
+
Examples:
|
|
99
|
+
baker ads linkedin audit --account-id 503001492
|
|
100
|
+
baker ads linkedin audit --account-id 503001492 --campaign-id 1234 # narrow scope
|
|
101
|
+
baker ads linkedin audit --account-id 503001492 --window-days 90
|
|
102
|
+
baker ads linkedin audit --account-id 503001492 --severity critical,high
|
|
103
|
+
baker ads linkedin audit --account-id 503001492 --area Settings,Tracking
|
|
104
|
+
baker ads linkedin audit --account-id 503001492 --format md`
|
|
105
|
+
},
|
|
106
|
+
args: {
|
|
107
|
+
"account-id": { type: "string", description: "Numeric account ID or urn:li:sponsoredAccount:N" },
|
|
108
|
+
"account-urn": { type: "string", description: "Alias for --account-id" },
|
|
109
|
+
"campaign-id": { type: "string", description: "Narrow scope to a single campaign" },
|
|
110
|
+
"window-days": { type: "string", description: "Lookback window for performance checks (default: 30)" },
|
|
111
|
+
severity: { type: "string", description: "CSV severity filter: critical,high,medium,low" },
|
|
112
|
+
area: {
|
|
113
|
+
type: "string",
|
|
114
|
+
description: "CSV area filter: Settings,Tracking,Audience,Campaigns,Creative,Performance,Bidding,Compliance,Hygiene"
|
|
115
|
+
},
|
|
116
|
+
format: { type: "string", description: "Output format: json | md (default: json)" },
|
|
117
|
+
"no-cache": NO_CACHE_ARG
|
|
118
|
+
},
|
|
119
|
+
run: async ({ args }) => {
|
|
120
|
+
const accountId = resolveAccountIdArg(args);
|
|
121
|
+
const windowDays = args["window-days"] ? Number(args["window-days"]) : 30;
|
|
122
|
+
if (!Number.isFinite(windowDays) || windowDays < 1 || windowDays > 365) {
|
|
123
|
+
handleLinkedinError(new Error("--window-days must be 1..365"));
|
|
124
|
+
}
|
|
125
|
+
try {
|
|
126
|
+
const data = await apiPost("/api/ads/linkedin/audit", {
|
|
127
|
+
accountId,
|
|
128
|
+
campaignId: args["campaign-id"] ? String(args["campaign-id"]) : void 0,
|
|
129
|
+
windowDays,
|
|
130
|
+
skipCache: Boolean(args["no-cache"])
|
|
131
|
+
});
|
|
132
|
+
const severityFilter = args.severity?.split(",").map((s) => s.trim().toLowerCase()).filter(Boolean);
|
|
133
|
+
const areaFilter = args.area?.split(",").map((s) => s.trim()).filter(Boolean);
|
|
134
|
+
const filtered = filterFindings(data.findings, severityFilter, areaFilter);
|
|
135
|
+
const sorted = sortFindings(filtered);
|
|
136
|
+
const result = { ...data, findings: sorted };
|
|
137
|
+
const fmt = args.format ?? "json";
|
|
138
|
+
if (fmt === "md") {
|
|
139
|
+
process.stdout.write(`${renderMarkdown(result)}
|
|
140
|
+
`);
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
writeAdsJson({ ok: true, data: result });
|
|
144
|
+
} catch (err) {
|
|
145
|
+
handleLinkedinError(err);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
export {
|
|
150
|
+
auditCommand
|
|
151
|
+
};
|
|
152
|
+
//# sourceMappingURL=audit-HWP7OPB7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/ads/linkedin/audit.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport { NO_CACHE_ARG } from \"../../../cache-flag.ts\";\nimport { apiPost } from \"../../../client.ts\";\nimport { writeAdsJson } from \"../output.ts\";\nimport { handleLinkedinError, resolveAccountIdArg } from \"./shared.ts\";\n\ninterface AuditFinding {\n id: string;\n area: string;\n check: string;\n status: \"pass\" | \"fail\" | \"partial\" | \"warn\" | \"n_a\";\n severity: \"critical\" | \"high\" | \"medium\" | \"low\";\n evidence?: Record<string, unknown>;\n fix?: { explanation: string; playbookRef?: string; correctedCommand?: string };\n}\n\ninterface AuditResult {\n account: { urn: string; id: string; name: string };\n scope: { campaigns: number; creatives: number; windowDays: number };\n summary: {\n critical: number;\n high: number;\n medium: number;\n low: number;\n pass: number;\n n_a: number;\n totalChecks: number;\n };\n findings: AuditFinding[];\n}\n\nconst SEVERITY_RANK: Record<AuditFinding[\"severity\"], number> = {\n critical: 0,\n high: 1,\n medium: 2,\n low: 3,\n};\n\nconst STATUS_RANK: Record<AuditFinding[\"status\"], number> = {\n fail: 0,\n warn: 1,\n partial: 2,\n pass: 3,\n n_a: 4,\n};\n\nfunction filterFindings(\n findings: AuditFinding[],\n severity: string[] | undefined,\n area: string[] | undefined,\n): AuditFinding[] {\n return findings.filter((f) => {\n if (severity && !severity.includes(f.severity)) return false;\n if (area && !area.includes(f.area)) return false;\n return true;\n });\n}\n\nfunction sortFindings(findings: AuditFinding[]): AuditFinding[] {\n return [...findings].sort((a, b) => {\n const sa = STATUS_RANK[a.status] - STATUS_RANK[b.status];\n if (sa !== 0) return sa;\n return SEVERITY_RANK[a.severity] - SEVERITY_RANK[b.severity];\n });\n}\n\n/**\n * Render the audit as a markdown table that mirrors\n * google-ads-playbook/10-audit-summary.md so the agent can drop it into a\n * client deliverable as-is.\n */\nfunction renderMarkdown(result: AuditResult): string {\n const lines: string[] = [];\n lines.push(`# LinkedIn Ads Audit — ${result.account.name} (${result.account.id})`);\n lines.push(\"\");\n lines.push(\n `**Scope:** ${result.scope.campaigns} campaigns, ${result.scope.creatives} creatives, last ${result.scope.windowDays}d`,\n );\n lines.push(\"\");\n lines.push(\n `**Summary:** ${result.summary.pass} pass • ${result.summary.critical} critical • ${result.summary.high} high • ${result.summary.medium} medium • ${result.summary.low} low • ${result.summary.n_a} n/a (${result.summary.totalChecks} total)`,\n );\n lines.push(\"\");\n lines.push(\"| # | Area | Check | Status | Severity | Notes |\");\n lines.push(\"|---|------|-------|--------|----------|-------|\");\n result.findings.forEach((f, idx) => {\n const note = noteOf(f);\n lines.push(\n `| ${idx + 1} | ${f.area} | ${escapeMd(f.check)} | ${f.status.toUpperCase()} | ${f.severity} | ${escapeMd(note)} |`,\n );\n });\n return lines.join(\"\\n\");\n}\n\nfunction escapeMd(text: string): string {\n return text.replace(/\\|/g, \"\\\\|\").replace(/\\n/g, \" \");\n}\n\nfunction noteOf(f: AuditFinding): string {\n if (f.status === \"pass\") return \"\";\n const ev = f.evidence ? JSON.stringify(f.evidence) : \"\";\n const fix = f.fix?.explanation ?? \"\";\n return [fix, ev].filter(Boolean).join(\" — \");\n}\n\nexport const auditCommand = defineCommand({\n meta: {\n name: \"audit\",\n description: `Run a LinkedIn Ads playbook audit — 30+ checks across Settings, Tracking,\nAudience, Campaigns, Creative, Performance, Bidding, and Compliance.\n\nEach finding has {id, area, check, status, severity, evidence, fix} fields with\nplaybook citations. The default JSON output is agent-friendly; --format md\nrenders a deliverable-ready table that mirrors the google-ads-playbook\n10-audit-summary.md style.\n\nExit code 0 always. Use the JSON 'summary' counts to decide if action is needed.\n\nExamples:\n baker ads linkedin audit --account-id 503001492\n baker ads linkedin audit --account-id 503001492 --campaign-id 1234 # narrow scope\n baker ads linkedin audit --account-id 503001492 --window-days 90\n baker ads linkedin audit --account-id 503001492 --severity critical,high\n baker ads linkedin audit --account-id 503001492 --area Settings,Tracking\n baker ads linkedin audit --account-id 503001492 --format md`,\n },\n args: {\n \"account-id\": { type: \"string\", description: \"Numeric account ID or urn:li:sponsoredAccount:N\" },\n \"account-urn\": { type: \"string\", description: \"Alias for --account-id\" },\n \"campaign-id\": { type: \"string\", description: \"Narrow scope to a single campaign\" },\n \"window-days\": { type: \"string\", description: \"Lookback window for performance checks (default: 30)\" },\n severity: { type: \"string\", description: \"CSV severity filter: critical,high,medium,low\" },\n area: {\n type: \"string\",\n description:\n \"CSV area filter: Settings,Tracking,Audience,Campaigns,Creative,Performance,Bidding,Compliance,Hygiene\",\n },\n format: { type: \"string\", description: \"Output format: json | md (default: json)\" },\n \"no-cache\": NO_CACHE_ARG,\n },\n run: async ({ args }) => {\n const accountId = resolveAccountIdArg(args);\n const windowDays = args[\"window-days\"] ? Number(args[\"window-days\"]) : 30;\n if (!Number.isFinite(windowDays) || windowDays < 1 || windowDays > 365) {\n handleLinkedinError(new Error(\"--window-days must be 1..365\"));\n }\n try {\n const data = await apiPost<AuditResult>(\"/api/ads/linkedin/audit\", {\n accountId,\n campaignId: args[\"campaign-id\"] ? String(args[\"campaign-id\"]) : undefined,\n windowDays,\n skipCache: Boolean(args[\"no-cache\"]),\n });\n\n const severityFilter = (args.severity as string | undefined)\n ?.split(\",\")\n .map((s) => s.trim().toLowerCase())\n .filter(Boolean);\n const areaFilter = (args.area as string | undefined)\n ?.split(\",\")\n .map((s) => s.trim())\n .filter(Boolean);\n const filtered = filterFindings(data.findings, severityFilter, areaFilter);\n const sorted = sortFindings(filtered);\n const result: AuditResult = { ...data, findings: sorted };\n\n const fmt = (args.format as string | undefined) ?? \"json\";\n if (fmt === \"md\") {\n process.stdout.write(`${renderMarkdown(result)}\\n`);\n return;\n }\n writeAdsJson({ ok: true, data: result });\n } catch (err) {\n handleLinkedinError(err);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,qBAAqB;AA+B9B,IAAM,gBAA0D;AAAA,EAC9D,UAAU;AAAA,EACV,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,KAAK;AACP;AAEA,IAAM,cAAsD;AAAA,EAC1D,MAAM;AAAA,EACN,MAAM;AAAA,EACN,SAAS;AAAA,EACT,MAAM;AAAA,EACN,KAAK;AACP;AAEA,SAAS,eACP,UACA,UACA,MACgB;AAChB,SAAO,SAAS,OAAO,CAAC,MAAM;AAC5B,QAAI,YAAY,CAAC,SAAS,SAAS,EAAE,QAAQ,EAAG,QAAO;AACvD,QAAI,QAAQ,CAAC,KAAK,SAAS,EAAE,IAAI,EAAG,QAAO;AAC3C,WAAO;AAAA,EACT,CAAC;AACH;AAEA,SAAS,aAAa,UAA0C;AAC9D,SAAO,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM;AAClC,UAAM,KAAK,YAAY,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM;AACvD,QAAI,OAAO,EAAG,QAAO;AACrB,WAAO,cAAc,EAAE,QAAQ,IAAI,cAAc,EAAE,QAAQ;AAAA,EAC7D,CAAC;AACH;AAOA,SAAS,eAAe,QAA6B;AACnD,QAAM,QAAkB,CAAC;AACzB,QAAM,KAAK,+BAA0B,OAAO,QAAQ,IAAI,KAAK,OAAO,QAAQ,EAAE,GAAG;AACjF,QAAM,KAAK,EAAE;AACb,QAAM;AAAA,IACJ,cAAc,OAAO,MAAM,SAAS,eAAe,OAAO,MAAM,SAAS,oBAAoB,OAAO,MAAM,UAAU;AAAA,EACtH;AACA,QAAM,KAAK,EAAE;AACb,QAAM;AAAA,IACJ,gBAAgB,OAAO,QAAQ,IAAI,gBAAW,OAAO,QAAQ,QAAQ,oBAAe,OAAO,QAAQ,IAAI,gBAAW,OAAO,QAAQ,MAAM,kBAAa,OAAO,QAAQ,GAAG,eAAU,OAAO,QAAQ,GAAG,SAAS,OAAO,QAAQ,WAAW;AAAA,EACvO;AACA,QAAM,KAAK,EAAE;AACb,QAAM,KAAK,kDAAkD;AAC7D,QAAM,KAAK,kDAAkD;AAC7D,SAAO,SAAS,QAAQ,CAAC,GAAG,QAAQ;AAClC,UAAM,OAAO,OAAO,CAAC;AACrB,UAAM;AAAA,MACJ,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,MAAM,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,YAAY,CAAC,MAAM,EAAE,QAAQ,MAAM,SAAS,IAAI,CAAC;AAAA,IACjH;AAAA,EACF,CAAC;AACD,SAAO,MAAM,KAAK,IAAI;AACxB;AAEA,SAAS,SAAS,MAAsB;AACtC,SAAO,KAAK,QAAQ,OAAO,KAAK,EAAE,QAAQ,OAAO,GAAG;AACtD;AAEA,SAAS,OAAO,GAAyB;AACvC,MAAI,EAAE,WAAW,OAAQ,QAAO;AAChC,QAAM,KAAK,EAAE,WAAW,KAAK,UAAU,EAAE,QAAQ,IAAI;AACrD,QAAM,MAAM,EAAE,KAAK,eAAe;AAClC,SAAO,CAAC,KAAK,EAAE,EAAE,OAAO,OAAO,EAAE,KAAK,UAAK;AAC7C;AAEO,IAAM,eAAe,cAAc;AAAA,EACxC,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBf;AAAA,EACA,MAAM;AAAA,IACJ,cAAc,EAAE,MAAM,UAAU,aAAa,kDAAkD;AAAA,IAC/F,eAAe,EAAE,MAAM,UAAU,aAAa,yBAAyB;AAAA,IACvE,eAAe,EAAE,MAAM,UAAU,aAAa,oCAAoC;AAAA,IAClF,eAAe,EAAE,MAAM,UAAU,aAAa,uDAAuD;AAAA,IACrG,UAAU,EAAE,MAAM,UAAU,aAAa,gDAAgD;AAAA,IACzF,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,aACE;AAAA,IACJ;AAAA,IACA,QAAQ,EAAE,MAAM,UAAU,aAAa,2CAA2C;AAAA,IAClF,YAAY;AAAA,EACd;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,UAAM,YAAY,oBAAoB,IAAI;AAC1C,UAAM,aAAa,KAAK,aAAa,IAAI,OAAO,KAAK,aAAa,CAAC,IAAI;AACvE,QAAI,CAAC,OAAO,SAAS,UAAU,KAAK,aAAa,KAAK,aAAa,KAAK;AACtE,0BAAoB,IAAI,MAAM,8BAA8B,CAAC;AAAA,IAC/D;AACA,QAAI;AACF,YAAM,OAAO,MAAM,QAAqB,2BAA2B;AAAA,QACjE;AAAA,QACA,YAAY,KAAK,aAAa,IAAI,OAAO,KAAK,aAAa,CAAC,IAAI;AAAA,QAChE;AAAA,QACA,WAAW,QAAQ,KAAK,UAAU,CAAC;AAAA,MACrC,CAAC;AAED,YAAM,iBAAkB,KAAK,UACzB,MAAM,GAAG,EACV,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,EACjC,OAAO,OAAO;AACjB,YAAM,aAAc,KAAK,MACrB,MAAM,GAAG,EACV,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EACnB,OAAO,OAAO;AACjB,YAAM,WAAW,eAAe,KAAK,UAAU,gBAAgB,UAAU;AACzE,YAAM,SAAS,aAAa,QAAQ;AACpC,YAAM,SAAsB,EAAE,GAAG,MAAM,UAAU,OAAO;AAExD,YAAM,MAAO,KAAK,UAAiC;AACnD,UAAI,QAAQ,MAAM;AAChB,gBAAQ,OAAO,MAAM,GAAG,eAAe,MAAM,CAAC;AAAA,CAAI;AAClD;AAAA,MACF;AACA,mBAAa,EAAE,IAAI,MAAM,MAAM,OAAO,CAAC;AAAA,IACzC,SAAS,KAAK;AACZ,0BAAoB,GAAG;AAAA,IACzB;AAAA,EACF;AACF,CAAC;","names":[]}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import {
|
|
2
|
+
noSerpRowsHints
|
|
3
|
+
} from "./chunk-H3427GPU.js";
|
|
4
|
+
import {
|
|
5
|
+
RESEARCH_DATA_NOTE,
|
|
6
|
+
handleResearchError,
|
|
7
|
+
writeResearchHints,
|
|
8
|
+
writeResearchJson,
|
|
9
|
+
writeResearchOutput
|
|
10
|
+
} from "./chunk-WNFIJAUO.js";
|
|
11
|
+
import {
|
|
12
|
+
buildResearchQueryContext,
|
|
13
|
+
warnDefaults
|
|
14
|
+
} from "./chunk-LIQ4SQ2T.js";
|
|
15
|
+
import "./chunk-XCM6XWOB.js";
|
|
16
|
+
import "./chunk-7EPXVICM.js";
|
|
17
|
+
import "./chunk-GXDLWBOY.js";
|
|
18
|
+
import "./chunk-TEINLN64.js";
|
|
19
|
+
import "./chunk-ZJWUBJYQ.js";
|
|
20
|
+
import "./chunk-HR6IWNKE.js";
|
|
21
|
+
import "./chunk-NE4F3FHN.js";
|
|
22
|
+
import {
|
|
23
|
+
apiPost
|
|
24
|
+
} from "./chunk-XBOK23HI.js";
|
|
25
|
+
import "./chunk-IFWP3ZDO.js";
|
|
26
|
+
import "./chunk-NAWWC5I3.js";
|
|
27
|
+
import {
|
|
28
|
+
registerSchema
|
|
29
|
+
} from "./chunk-NU7JSWVA.js";
|
|
30
|
+
import "./chunk-YQSBHWOI.js";
|
|
31
|
+
|
|
32
|
+
// src/commands/research/autocomplete.ts
|
|
33
|
+
import { defineCommand } from "citty";
|
|
34
|
+
registerSchema({
|
|
35
|
+
command: "research.autocomplete",
|
|
36
|
+
description: "Get Google Autocomplete suggestions for a seed keyword. Useful for keyword expansion and discovering what people actually search for. If --location and --language are omitted, defaults to United States (us) and English (en).",
|
|
37
|
+
args: {
|
|
38
|
+
keyword: { type: "string", description: "Seed keyword (positional)", required: true },
|
|
39
|
+
location: {
|
|
40
|
+
type: "string",
|
|
41
|
+
description: "Country code (us, uk, es, de...) or DataForSEO location code. Defaults to us (United States) if omitted",
|
|
42
|
+
required: false
|
|
43
|
+
},
|
|
44
|
+
language: {
|
|
45
|
+
type: "string",
|
|
46
|
+
description: "Language code or name. Defaults to en (English) if omitted",
|
|
47
|
+
required: false
|
|
48
|
+
},
|
|
49
|
+
limit: { type: "string", description: "Max suggestions (default: 10, max: 20)", required: false },
|
|
50
|
+
"no-cache": { type: "boolean", description: "Skip server cache, hit API directly", required: false }
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
var FIELDS = {
|
|
54
|
+
suggestion: "Autocomplete suggestion from Google"
|
|
55
|
+
};
|
|
56
|
+
var autocompleteCommand = defineCommand({
|
|
57
|
+
meta: {
|
|
58
|
+
name: "autocomplete",
|
|
59
|
+
description: `Get Google Autocomplete suggestions for keyword expansion.
|
|
60
|
+
|
|
61
|
+
Examples:
|
|
62
|
+
baker research autocomplete "running shoes"
|
|
63
|
+
baker research autocomplete "crm" --location uk --limit 5`
|
|
64
|
+
},
|
|
65
|
+
args: {
|
|
66
|
+
keyword: { type: "positional", description: "Seed keyword", required: true },
|
|
67
|
+
location: { type: "string", description: "Country code or location code (default: us)", required: false },
|
|
68
|
+
language: { type: "string", description: "Language code or name (default: en)", required: false },
|
|
69
|
+
limit: { type: "string", description: "Max suggestions (default: 10, max: 20)", required: false },
|
|
70
|
+
output: { type: "string", description: "Format: json|csv|md|jsonl", required: false, default: "json" },
|
|
71
|
+
"no-cache": { type: "boolean", description: "Skip server cache, hit API directly", required: false }
|
|
72
|
+
},
|
|
73
|
+
run: async ({ args }) => {
|
|
74
|
+
const keyword = args.keyword;
|
|
75
|
+
const location = args.location || void 0;
|
|
76
|
+
const language = args.language || void 0;
|
|
77
|
+
const limit = args.limit ? Number(args.limit) : void 0;
|
|
78
|
+
const skipCache = args["no-cache"] ? true : void 0;
|
|
79
|
+
const queryContext = buildResearchQueryContext(location, language);
|
|
80
|
+
try {
|
|
81
|
+
const data = await apiPost("/api/research/autocomplete", {
|
|
82
|
+
keyword,
|
|
83
|
+
location,
|
|
84
|
+
language,
|
|
85
|
+
limit,
|
|
86
|
+
skipCache
|
|
87
|
+
});
|
|
88
|
+
warnDefaults(queryContext);
|
|
89
|
+
const format = args.output || "json";
|
|
90
|
+
const hints = noSerpRowsHints(data.length, queryContext);
|
|
91
|
+
if (format !== "json") {
|
|
92
|
+
writeResearchOutput(data, format);
|
|
93
|
+
writeResearchHints(hints, format);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
writeResearchJson({
|
|
97
|
+
ok: true,
|
|
98
|
+
data,
|
|
99
|
+
fields: FIELDS,
|
|
100
|
+
note: RESEARCH_DATA_NOTE,
|
|
101
|
+
query_context: queryContext,
|
|
102
|
+
hints
|
|
103
|
+
});
|
|
104
|
+
} catch (err) {
|
|
105
|
+
handleResearchError(err);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
export {
|
|
110
|
+
autocompleteCommand
|
|
111
|
+
};
|
|
112
|
+
//# sourceMappingURL=autocomplete-J6DHU6MR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/research/autocomplete.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport { apiPost } from \"../../client.ts\";\nimport { buildResearchQueryContext, warnDefaults } from \"../../geo-context.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { noSerpRowsHints } from \"./hints.ts\";\nimport {\n handleResearchError,\n RESEARCH_DATA_NOTE,\n writeResearchHints,\n writeResearchJson,\n writeResearchOutput,\n} from \"./output.ts\";\n\nregisterSchema({\n command: \"research.autocomplete\",\n description:\n \"Get Google Autocomplete suggestions for a seed keyword. Useful for keyword expansion and discovering what people actually search for. If --location and --language are omitted, defaults to United States (us) and English (en).\",\n args: {\n keyword: { type: \"string\", description: \"Seed keyword (positional)\", required: true },\n location: {\n type: \"string\",\n description:\n \"Country code (us, uk, es, de...) or DataForSEO location code. Defaults to us (United States) if omitted\",\n required: false,\n },\n language: {\n type: \"string\",\n description: \"Language code or name. Defaults to en (English) if omitted\",\n required: false,\n },\n limit: { type: \"string\", description: \"Max suggestions (default: 10, max: 20)\", required: false },\n \"no-cache\": { type: \"boolean\", description: \"Skip server cache, hit API directly\", required: false },\n },\n});\n\ninterface AutocompleteResult {\n suggestion: string;\n}\n\nconst FIELDS: Record<string, string> = {\n suggestion: \"Autocomplete suggestion from Google\",\n};\n\nexport const autocompleteCommand = defineCommand({\n meta: {\n name: \"autocomplete\",\n description: `Get Google Autocomplete suggestions for keyword expansion.\n\nExamples:\n baker research autocomplete \"running shoes\"\n baker research autocomplete \"crm\" --location uk --limit 5`,\n },\n args: {\n keyword: { type: \"positional\", description: \"Seed keyword\", required: true },\n location: { type: \"string\", description: \"Country code or location code (default: us)\", required: false },\n language: { type: \"string\", description: \"Language code or name (default: en)\", required: false },\n limit: { type: \"string\", description: \"Max suggestions (default: 10, max: 20)\", required: false },\n output: { type: \"string\", description: \"Format: json|csv|md|jsonl\", required: false, default: \"json\" },\n \"no-cache\": { type: \"boolean\", description: \"Skip server cache, hit API directly\", required: false },\n },\n run: async ({ args }) => {\n const keyword = args.keyword as string;\n const location = (args.location as string) || undefined;\n const language = (args.language as string) || undefined;\n const limit = args.limit ? Number(args.limit) : undefined;\n const skipCache = args[\"no-cache\"] ? true : undefined;\n const queryContext = buildResearchQueryContext(location, language);\n\n try {\n const data = await apiPost<AutocompleteResult[]>(\"/api/research/autocomplete\", {\n keyword,\n location,\n language,\n limit,\n skipCache,\n });\n\n warnDefaults(queryContext);\n const format = (args.output as string) || \"json\";\n const hints = noSerpRowsHints(data.length, queryContext);\n if (format !== \"json\") {\n writeResearchOutput(data as unknown as Array<Record<string, unknown>>, format);\n writeResearchHints(hints, format);\n return;\n }\n writeResearchJson({\n ok: true,\n data,\n fields: FIELDS,\n note: RESEARCH_DATA_NOTE,\n query_context: queryContext,\n hints,\n });\n } catch (err) {\n handleResearchError(err);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,qBAAqB;AAa9B,eAAe;AAAA,EACb,SAAS;AAAA,EACT,aACE;AAAA,EACF,MAAM;AAAA,IACJ,SAAS,EAAE,MAAM,UAAU,aAAa,6BAA6B,UAAU,KAAK;AAAA,IACpF,UAAU;AAAA,MACR,MAAM;AAAA,MACN,aACE;AAAA,MACF,UAAU;AAAA,IACZ;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,aAAa;AAAA,MACb,UAAU;AAAA,IACZ;AAAA,IACA,OAAO,EAAE,MAAM,UAAU,aAAa,0CAA0C,UAAU,MAAM;AAAA,IAChG,YAAY,EAAE,MAAM,WAAW,aAAa,uCAAuC,UAAU,MAAM;AAAA,EACrG;AACF,CAAC;AAMD,IAAM,SAAiC;AAAA,EACrC,YAAY;AACd;AAEO,IAAM,sBAAsB,cAAc;AAAA,EAC/C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA,EAKf;AAAA,EACA,MAAM;AAAA,IACJ,SAAS,EAAE,MAAM,cAAc,aAAa,gBAAgB,UAAU,KAAK;AAAA,IAC3E,UAAU,EAAE,MAAM,UAAU,aAAa,+CAA+C,UAAU,MAAM;AAAA,IACxG,UAAU,EAAE,MAAM,UAAU,aAAa,uCAAuC,UAAU,MAAM;AAAA,IAChG,OAAO,EAAE,MAAM,UAAU,aAAa,0CAA0C,UAAU,MAAM;AAAA,IAChG,QAAQ,EAAE,MAAM,UAAU,aAAa,6BAA6B,UAAU,OAAO,SAAS,OAAO;AAAA,IACrG,YAAY,EAAE,MAAM,WAAW,aAAa,uCAAuC,UAAU,MAAM;AAAA,EACrG;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,UAAM,UAAU,KAAK;AACrB,UAAM,WAAY,KAAK,YAAuB;AAC9C,UAAM,WAAY,KAAK,YAAuB;AAC9C,UAAM,QAAQ,KAAK,QAAQ,OAAO,KAAK,KAAK,IAAI;AAChD,UAAM,YAAY,KAAK,UAAU,IAAI,OAAO;AAC5C,UAAM,eAAe,0BAA0B,UAAU,QAAQ;AAEjE,QAAI;AACF,YAAM,OAAO,MAAM,QAA8B,8BAA8B;AAAA,QAC7E;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAED,mBAAa,YAAY;AACzB,YAAM,SAAU,KAAK,UAAqB;AAC1C,YAAM,QAAQ,gBAAgB,KAAK,QAAQ,YAAY;AACvD,UAAI,WAAW,QAAQ;AACrB,4BAAoB,MAAmD,MAAM;AAC7E,2BAAmB,OAAO,MAAM;AAChC;AAAA,MACF;AACA,wBAAkB;AAAA,QAChB,IAAI;AAAA,QACJ;AAAA,QACA,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,eAAe;AAAA,QACf;AAAA,MACF,CAAC;AAAA,IACH,SAAS,KAAK;AACZ,0BAAoB,GAAG;AAAA,IACzB;AAAA,EACF;AACF,CAAC;","names":[]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import "./chunk-YQSBHWOI.js";
|
|
2
|
+
|
|
3
|
+
// src/commands/avatars/index.ts
|
|
4
|
+
import { defineCommand } from "citty";
|
|
5
|
+
var avatarsCommand = defineCommand({
|
|
6
|
+
meta: {
|
|
7
|
+
name: "avatars",
|
|
8
|
+
description: `Reusable AI presenters this company can cast into images and video. An avatar holds one settled identity, so the same face can carry a whole campaign. Subcommands: list, get, create, research, update, delete.
|
|
9
|
+
|
|
10
|
+
How casting works:
|
|
11
|
+
1. baker avatars list See who this company already has (reuse before you create)
|
|
12
|
+
2. baker avatars get <handle> Status, identity sheet URL, subject description
|
|
13
|
+
3. baker images generate "<scene>" --reference <sheetUrl>
|
|
14
|
+
Ground the render on the identity sheet, never on a source photo,
|
|
15
|
+
and copy the subject description into the prompt verbatim
|
|
16
|
+
|
|
17
|
+
Examples:
|
|
18
|
+
baker avatars list --status ready --output md
|
|
19
|
+
baker avatars get marta --full
|
|
20
|
+
baker avatars create --name "Marta" --subject "woman in her early 40s, shoulder-length dark hair, light olive skin"
|
|
21
|
+
baker avatars research "Lautaro Suarez, CTO at Vibiz" --create A real, named person, from their public photos
|
|
22
|
+
baker avatars update marta --subject "\u2026" --regenerate-sheet
|
|
23
|
+
baker avatars delete marta --archive
|
|
24
|
+
Full guide: __tooling__/docs/tools/baker/avatars.md`
|
|
25
|
+
},
|
|
26
|
+
subCommands: {
|
|
27
|
+
list: () => import("./list-P7NAFN6J.js").then((m) => m.listCommand),
|
|
28
|
+
get: () => import("./get-YIHTAMRT.js").then((m) => m.getCommand),
|
|
29
|
+
create: () => import("./create-EX6OWLNM.js").then((m) => m.createCommand),
|
|
30
|
+
research: () => import("./research-GEOCUBXB.js").then((m) => m.researchCommand),
|
|
31
|
+
update: () => import("./update-PJ67D2OG.js").then((m) => m.updateCommand),
|
|
32
|
+
delete: () => import("./delete-A5XD52K4.js").then((m) => m.deleteCommand)
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
export {
|
|
36
|
+
avatarsCommand
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=avatars-467OSBD6.js.map
|