@koda-sl/baker-cli 0.574.0 → 0.575.0-dev.85f21462e
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/account-MDLPCIDQ.js +82 -0
- package/dist/account-VRXCDDXY.js +82 -0
- package/dist/account-reads-FSOURMSH.js +219 -0
- package/dist/account-users-FXOWESWY.js +64 -0
- package/dist/account-writes-SRTOKSMT.js +68 -0
- package/dist/accounts-5YJZVSTB.js +498 -0
- package/dist/accounts-AT2UB2L3.js +80 -0
- package/dist/accounts-NR3ARJ72.js +119 -0
- package/dist/actions-766X6XRB.js +55 -0
- package/dist/activecampaign-MC4FYCCF.js +938 -0
- package/dist/ad-group-writes-UFBFB2PL.js +172 -0
- package/dist/ad-groups-KRKMZPF3.js +70 -0
- package/dist/ad-writes-SIAGGUDJ.js +176 -0
- package/dist/add-DWKVVW76.js +305 -0
- package/dist/add-MYX3BSUJ.js +107 -0
- package/dist/ads-3T4C4BBH.js +79 -0
- package/dist/ads-UGMHE33I.js +48 -0
- package/dist/advertisers-UFOLIRIK.js +123 -0
- package/dist/alerts-2GMBX6JV.js +151 -0
- package/dist/analytics-3EWNAHNG.js +2397 -0
- package/dist/analytics-G4WFP37R.js +447 -0
- package/dist/animate-PSOAMA52.js +480 -0
- package/dist/assign-5FALEZYD.js +80 -0
- package/dist/audience-size-VRYRLPO5.js +76 -0
- package/dist/audiences-EH426E3T.js +280 -0
- package/dist/audit-WHIVWMAI.js +154 -0
- package/dist/autocomplete-3HCLXTGK.js +114 -0
- package/dist/avatars-HN74FWDF.js +38 -0
- package/dist/bid-pricing-NN5JKZS4.js +103 -0
- package/dist/brand-MWU5IVEZ.js +22 -0
- package/dist/brief-6TXWQWHJ.js +543 -0
- package/dist/campaign-groups-MGEKCP7J.js +99 -0
- package/dist/campaign-writes-ORUT54WL.js +168 -0
- package/dist/campaign-writes-Z7B6V6Q3.js +176 -0
- package/dist/campaigns-3BDIHUSW.js +78 -0
- package/dist/campaigns-E7YC762Q.js +111 -0
- package/dist/campaigns-WLOJFSLV.js +113 -0
- package/dist/canvas-SEVIQRXN.js +46 -0
- package/dist/capabilities-KWJYBYQO.js +147 -0
- package/dist/catalog-DHTZDVWS.js +66 -0
- package/dist/catalogs-R4QFA5XO.js +130 -0
- package/dist/changes-F2GP72MO.js +167 -0
- package/dist/chatgpt-MN4XHO6L.js +47 -0
- package/dist/chats-IBMO724I.js +589 -0
- package/dist/check-EZI4OF3Q.js +107 -0
- package/dist/chunk-2CSNR4U7.js +8954 -0
- package/dist/chunk-2VUD4CIW.js +64 -0
- package/dist/chunk-423G75A7.js +494 -0
- package/dist/chunk-4ZAHRAWL.js +454 -0
- package/dist/chunk-5WOZ7OGU.js +1919 -0
- package/dist/chunk-66LUQENO.js +197 -0
- package/dist/chunk-6J2UZJ6F.js +962 -0
- package/dist/chunk-6OIKNJ7G.js +26 -0
- package/dist/chunk-7EPR7L2D.js +203 -0
- package/dist/chunk-AFWLBOIN.js +757 -0
- package/dist/chunk-ALCRXFIZ.js +351 -0
- package/dist/chunk-BJH2G3QF.js +312 -0
- package/dist/chunk-BTOGDXA4.js +8141 -0
- package/dist/chunk-BZXIDMV7.js +91 -0
- package/dist/chunk-C57NXUM2.js +24026 -0
- package/dist/chunk-C57NXUM2.js.map +1 -0
- package/dist/chunk-CNZ5KS4I.js +344 -0
- package/dist/chunk-D32EWSMB.js +150 -0
- package/dist/chunk-DAXBST7G.js +51 -0
- package/dist/chunk-DD6X3AZB.js +1258 -0
- package/dist/chunk-DI7M2JUA.js +167 -0
- package/dist/chunk-EA3643ET.js +392 -0
- package/dist/chunk-EBFKPGTL.js +220 -0
- package/dist/chunk-ETHUDFUY.js +169 -0
- package/dist/chunk-EZ3YSJTP.js +685 -0
- package/dist/chunk-F3CZFUXZ.js +3187 -0
- package/dist/chunk-F3CZFUXZ.js.map +1 -0
- package/dist/chunk-G6CLJ3WL.js +3510 -0
- package/dist/chunk-GLY3CB2F.js +78 -0
- package/dist/chunk-HXHGDFXA.js +103 -0
- package/dist/chunk-IEUF733F.js +5471 -0
- package/dist/chunk-IEX4RRHJ.js +163 -0
- package/dist/chunk-IMS53EQU.js +4277 -0
- package/dist/chunk-IMS53EQU.js.map +1 -0
- package/dist/chunk-IR2NRXHA.js +309 -0
- package/dist/chunk-J7L457MF.js +1518 -0
- package/dist/chunk-JFWTQDZL.js +604 -0
- package/dist/chunk-JGMQD3PX.js +274 -0
- package/dist/chunk-JTAPNHW5.js +98 -0
- package/dist/chunk-K2DKQ52D.js +89 -0
- package/dist/chunk-K3VMHRLJ.js +61 -0
- package/dist/chunk-LBPJDFFN.js +19 -0
- package/dist/chunk-LNRYMWXE.js +930 -0
- package/dist/chunk-LQRPFL2N.js +218 -0
- package/dist/chunk-LY7PDE76.js +285 -0
- package/dist/chunk-NOCBNING.js +638 -0
- package/dist/chunk-PEPLYJWK.js +91 -0
- package/dist/chunk-PK2U2ALQ.js +57 -0
- package/dist/chunk-PKSIPLMS.js +399 -0
- package/dist/chunk-QNY4IK3C.js +297 -0
- package/dist/chunk-QORVZUMT.js +2234 -0
- package/dist/chunk-RDIZCSTV.js +156 -0
- package/dist/chunk-RQ43VL2X.js +148 -0
- package/dist/chunk-S4QGD7PV.js +170 -0
- package/dist/chunk-S7WFZYKP.js +46 -0
- package/dist/chunk-SIKCVWM3.js +76 -0
- package/dist/chunk-SRMQCQ7T.js +142 -0
- package/dist/chunk-SZFWQVAC.js +819 -0
- package/dist/chunk-TBBAHTP3.js +1320 -0
- package/dist/chunk-U6EQMX3B.js +131 -0
- package/dist/chunk-UECTXVAO.js +479 -0
- package/dist/chunk-UQTINFCP.js +455 -0
- package/dist/chunk-UUUYWBTR.js +225 -0
- package/dist/chunk-UZ5ZC43B.js +259 -0
- package/dist/chunk-VSHXHSIW.js +249 -0
- package/dist/chunk-VTLW24DM.js +23 -0
- package/dist/chunk-WZXMZFVB.js +238 -0
- package/dist/chunk-X7NRAGJ5.js +504 -0
- package/dist/chunk-XYHAIEAF.js +5368 -0
- package/dist/chunk-XZJK2QB3.js +1920 -0
- package/dist/chunk-XZJK2QB3.js.map +1 -0
- package/dist/chunk-YLHWZOW7.js +224 -0
- package/dist/chunk-YNWBIAXJ.js +843 -0
- package/dist/chunk-YYYGUO2E.js +66 -0
- package/dist/chunk-ZAQQBVEM.js +432 -0
- package/dist/chunk-ZHQSXEJ2.js +547 -0
- package/dist/claim-JQCSXR4C.js +200 -0
- package/dist/cli.js +32 -32
- package/dist/companies-GHBIZKOK.js +34 -0
- package/dist/company-KNCYMQIA.js +308 -0
- package/dist/complete-V53XRNEQ.js +84 -0
- package/dist/connect-NUZQSIGL.js +45 -0
- package/dist/conversation-LBYO6ONM.js +96 -0
- package/dist/conversion-report-SRHJGIMT.js +127 -0
- package/dist/conversion-upload-command-5EKILBP2.js +439 -0
- package/dist/conversion-writes-P5FDTA6Y.js +122 -0
- package/dist/conversions-BXCGFNRK.js +140 -0
- package/dist/conversions-WJBOEPOO.js +78 -0
- package/dist/create-3PNWKXLP.js +239 -0
- package/dist/create-6FZR7JZT.js +135 -0
- package/dist/create-QXJ3UEOT.js +218 -0
- package/dist/create-XO7HUNPB.js +62 -0
- package/dist/creatives-O6TA2DOG.js +58 -0
- package/dist/creatives-YRYPXOCS.js +229 -0
- package/dist/credentials-ATAP54ZI.js +290 -0
- package/dist/critique-3UY7TUVQ.js +232 -0
- package/dist/critique-UC6SBKGO.js +1451 -0
- package/dist/crm-AXK74BCO.js +313 -0
- package/dist/crm-MGVGQ7PK.js +323 -0
- package/dist/currency-335ARWP5.js +88 -0
- package/dist/customers-7NBNJCDC.js +65 -0
- package/dist/delete-EKGTJSLK.js +69 -0
- package/dist/delete-OFG7FBMA.js +57 -0
- package/dist/delete-QQDGR7DD.js +67 -0
- package/dist/demographics-QWFAMEC2.js +141 -0
- package/dist/discard-4VW3AWI3.js +69 -0
- package/dist/discover-O6322XPL.js +172 -0
- package/dist/domain-EDPDUVAX.js +101 -0
- package/dist/download-46GLVBYU.js +172 -0
- package/dist/draft-IBR2W6GZ.js +332 -0
- package/dist/draft-NCUQFRGS.js +315 -0
- package/dist/draft-RRUJU2ZR.js +220 -0
- package/dist/draft-SLGJRUOV.js +615 -0
- package/dist/draft-TJAD7P6W.js +374 -0
- package/dist/engine/index.js +8 -8
- package/dist/experiments-DUVO7C7A.js +236 -0
- package/dist/extract-WYNFE6TQ.js +143 -0
- package/dist/facets-WTY6NOUV.js +117 -0
- package/dist/feedback-57BP27NA.js +115 -0
- package/dist/feedback-XDREGDOK.js +114 -0
- package/dist/feedback-record-HXSBLAZD.js +269 -0
- package/dist/fetch-L27MLPXM.js +204 -0
- package/dist/fit-K3G7HIMK.js +65 -0
- package/dist/flows-VJTWU3SU.js +340 -0
- package/dist/fonts-SEMIVGXJ.js +39 -0
- package/dist/forecast-EHOMHLUH.js +169 -0
- package/dist/forecast-VODA7N3G.js +121 -0
- package/dist/funnel-BXJDMVMF.js +397 -0
- package/dist/generate-VCGSO7HI.js +263 -0
- package/dist/get-EASXXOQR.js +62 -0
- package/dist/get-EN4UQI7R.js +82 -0
- package/dist/google-ATEQHENA.js +163 -0
- package/dist/google-ZVVKAI7T.js +3300 -0
- package/dist/google-ads-OUNSPGRQ.js +198 -0
- package/dist/history-5OJVW2ZF.js +153 -0
- package/dist/history-RQMCZQSC.js +69 -0
- package/dist/history-TDGBO76N.js +102 -0
- package/dist/hubspot-VQGONQQU.js +817 -0
- package/dist/ideas-B7RQXWHQ.js +45 -0
- package/dist/images-Q45MP4Q2.js +92 -0
- package/dist/ingest-6MMY4KDM.js +131 -0
- package/dist/ingest-UMQQIINM.js +28 -0
- package/dist/insights-WDHDMULM.js +132 -0
- package/dist/inspect-W2BIGA5F.js +192 -0
- package/dist/intent-3S6SHAYC.js +95 -0
- package/dist/keyword-gap-MGHKWE6A.js +130 -0
- package/dist/keyword-metrics-6R5TSHCE.js +200 -0
- package/dist/keywords-for-site-EFBLFX6E.js +131 -0
- package/dist/landing-WC5FX3UP.js +28 -0
- package/dist/languages-4J7JHZNB.js +40 -0
- package/dist/leads-CBOQ5CNM.js +115 -0
- package/dist/learn-ZUP35H3T.js +207 -0
- package/dist/line-item-writes-W4UFIYEA.js +211 -0
- package/dist/line-items-SGCUJF3S.js +107 -0
- package/dist/link-KLJB7COB.js +67 -0
- package/dist/linkedin-TANR45ZZ.js +1381 -0
- package/dist/linkedin-person-ECWP4XPE.js +139 -0
- package/dist/list-PXEJMDB4.js +67 -0
- package/dist/list-SVR5HBLA.js +306 -0
- package/dist/list-XELB7UV2.js +154 -0
- package/dist/locations-KM4XY56A.js +40 -0
- package/dist/locations-SNK2NDH3.js +69 -0
- package/dist/log-PMPOO42C.js +95 -0
- package/dist/make-Q36WVKT3.js +1367 -0
- package/dist/map-DQ65PS65.js +445 -0
- package/dist/mcp-XMFKYN3E.js +729 -0
- package/dist/media-sources-HG524YO4.js +35 -0
- package/dist/members-D4DI2IFH.js +47 -0
- package/dist/metrics-QVDXMTEI.js +152 -0
- package/dist/models-VOSJJFO2.js +155 -0
- package/dist/normalize-XRVNJTML.js +144 -0
- package/dist/options-HT27WLNS.js +125 -0
- package/dist/organization-DYPTFZBA.js +949 -0
- package/dist/people-5MJXHC3D.js +171 -0
- package/dist/people-TTUIYT3L.js +164 -0
- package/dist/performance-2AQ34OPB.js +27 -0
- package/dist/performance-WE4LHJ2B.js +5565 -0
- package/dist/pixels-EWFDIDFA.js +62 -0
- package/dist/preview-JYVRWRTT.js +101 -0
- package/dist/promoted-tweet-writes-HCVRPH45.js +183 -0
- package/dist/promoted-tweets-P56ZU6OK.js +119 -0
- package/dist/publish-4VWZHRYO.js +350 -0
- package/dist/query-DK7WWCJJ.js +62 -0
- package/dist/reddit-NSKYHSAC.js +29 -0
- package/dist/refresh-O3CLJX4O.js +97 -0
- package/dist/release-6TQQW4HB.js +63 -0
- package/dist/relevant-pages-B3ZFOGHQ.js +99 -0
- package/dist/remove-R55VAM47.js +53 -0
- package/dist/reopen-S426N3OD.js +66 -0
- package/dist/rerun-5KHANQR3.js +97 -0
- package/dist/research-5REXCSSO.js +265 -0
- package/dist/research-DMZLXMM2.js +78 -0
- package/dist/reset-5N2IVHFL.js +57 -0
- package/dist/reset-D4NGVG35.js +57 -0
- package/dist/resolve-V75JGD75.js +124 -0
- package/dist/retry-SB7EIJBA.js +65 -0
- package/dist/retry-WIKW6CGT.js +63 -0
- package/dist/revenue-GZJU3XMD.js +91 -0
- package/dist/rules-WI6YKZA4.js +99 -0
- package/dist/rules-add-JCRB4AJR.js +465 -0
- package/dist/run-RDHTORWZ.js +69 -0
- package/dist/run-VVK23U5P.js +72 -0
- package/dist/scaffold-ad-QSVBY3XR.js +1513 -0
- package/dist/scaffold-static-ad-64BZMUHP.js +1012 -0
- package/dist/scaffold-video-X27MRW7R.js +885 -0
- package/dist/schedule-XHPIVUJ6.js +64 -0
- package/dist/scheduled-agents-OMUQCGDG.js +56 -0
- package/dist/schema-RDVJQ5VW.js +135 -0
- package/dist/search-VX5ATSCD.js +177 -0
- package/dist/select-NX3VHQTH.js +110 -0
- package/dist/set-prompt-QGEWZ3HD.js +199 -0
- package/dist/setup-links-LIDZVTSU.js +144 -0
- package/dist/shopify-LZU3MCDG.js +4009 -0
- package/dist/site-CEO2V3BI.js +180 -0
- package/dist/sources-C7AQCP2Z.js +30 -0
- package/dist/sources-SIGZVORA.js +457 -0
- package/dist/stale-BOUBKOAA.js +90 -0
- package/dist/stale-BOUBKOAA.js.map +1 -0
- package/dist/status-NIG6OSAG.js +65 -0
- package/dist/stock-KY6BCN76.js +212 -0
- package/dist/studio-VQFYNK5O.js +49 -0
- package/dist/sync-3RS5E5ZI.js +57 -0
- package/dist/sync-definition-VHYZWLS5.js +70 -0
- package/dist/tags-F6DBHGIL.js +26 -0
- package/dist/tags-HGKEOIR7.js +23 -0
- package/dist/tags-I2LINXA7.js +23 -0
- package/dist/tags-UM6Y4DVQ.js +227 -0
- package/dist/tags-YCBZVXJQ.js +23 -0
- package/dist/targeting-criteria-XPK76HRH.js +113 -0
- package/dist/targets-KT4BNTKZ.js +106 -0
- package/dist/testimonials-QGXMSSWV.js +32 -0
- package/dist/themes-ZKUHKUZD.js +95 -0
- package/dist/top-companies-RC5KTWQ5.js +246 -0
- package/dist/transcript-OLF62WCH.js +165 -0
- package/dist/translate-NON5ZD3S.js +603 -0
- package/dist/triggers-UOQY4RFC.js +144 -0
- package/dist/unlink-RNIJPHHW.js +70 -0
- package/dist/unstage-QVDYVN77.js +88 -0
- package/dist/update-7KR5ABJP.js +66 -0
- package/dist/update-JAUWIWOH.js +192 -0
- package/dist/update-QZEF5MUW.js +101 -0
- package/dist/update-TRWHYXF4.js +155 -0
- package/dist/upload-MLK2MZB6.js +137 -0
- package/dist/url-options-2FVG55JF.js +131 -0
- package/dist/url-params-F4XNWPOD.js +101 -0
- package/dist/validate-P3AQVXG6.js +135 -0
- package/dist/videos-PAKAAFRD.js +41 -0
- package/dist/viewer-check-KXMDJH7R.js +83 -0
- package/dist/web-E5NHFG4Y.js +173 -0
- package/dist/winning-ads-P6PDTCCU.js +86 -0
- package/dist/write-commands-MBNO7DCX.js +1524 -0
- package/dist/x-5A74OD5P.js +47 -0
- package/package.json +1 -1
- package/dist/account-WFAMHUCQ.js +0 -82
- package/dist/account-Y7ZFEM7U.js +0 -82
- package/dist/account-reads-JPQ2K343.js +0 -219
- package/dist/account-users-QAFQDSZQ.js +0 -64
- package/dist/account-writes-EEKHPF5I.js +0 -68
- package/dist/accounts-H3KO5AEN.js +0 -119
- package/dist/accounts-OHVZAP4D.js +0 -498
- package/dist/accounts-TFUGF7UK.js +0 -80
- package/dist/actions-FTIRKAAN.js +0 -55
- package/dist/activecampaign-BCOEXYZ7.js +0 -938
- package/dist/ad-group-writes-UDQ4563V.js +0 -172
- package/dist/ad-groups-RXT2XKSE.js +0 -70
- package/dist/ad-writes-SHLTL2FY.js +0 -176
- package/dist/add-L6MKL2G2.js +0 -107
- package/dist/add-QGJPTGU7.js +0 -305
- package/dist/ads-AYXMFUIF.js +0 -48
- package/dist/ads-CUMOMBI3.js +0 -79
- package/dist/advertisers-RVTUZ53M.js +0 -123
- package/dist/alerts-LZJAF4AQ.js +0 -151
- package/dist/analytics-4YHYFRHH.js +0 -447
- package/dist/analytics-RLZ7BXIB.js +0 -2397
- package/dist/animate-MBNFCDUZ.js +0 -480
- package/dist/assign-JC5BK5XE.js +0 -80
- package/dist/audience-size-ZVRH3BEL.js +0 -76
- package/dist/audiences-KBW2UAOP.js +0 -280
- package/dist/audit-JXRVO37K.js +0 -154
- package/dist/autocomplete-CBBFRPJZ.js +0 -114
- package/dist/avatars-GB7B2MGR.js +0 -38
- package/dist/bid-pricing-G4IXJRVK.js +0 -103
- package/dist/brand-VKQ72SRQ.js +0 -22
- package/dist/brief-X3FRAPUH.js +0 -543
- package/dist/campaign-groups-NA73I7JR.js +0 -99
- package/dist/campaign-writes-JYMQF6CK.js +0 -176
- package/dist/campaign-writes-ZOLIX3EB.js +0 -168
- package/dist/campaigns-DZAZIUES.js +0 -113
- package/dist/campaigns-PB3QNTI4.js +0 -111
- package/dist/campaigns-TMHFCPAZ.js +0 -78
- package/dist/canvas-4EGLYNYM.js +0 -46
- package/dist/capabilities-JZFPET7C.js +0 -147
- package/dist/catalog-2P422WOQ.js +0 -66
- package/dist/catalogs-XFYYY3CS.js +0 -130
- package/dist/changes-GFJITHF6.js +0 -167
- package/dist/chatgpt-KNLATOZ6.js +0 -47
- package/dist/chats-CE7RKD6W.js +0 -589
- package/dist/check-SIMBAMXJ.js +0 -107
- package/dist/chunk-2NXACVED.js +0 -169
- package/dist/chunk-2S3VIE7D.js +0 -312
- package/dist/chunk-37QNC344.js +0 -843
- package/dist/chunk-3WLUQ7DM.js +0 -757
- package/dist/chunk-45ETXHUI.js +0 -66
- package/dist/chunk-46TEYVJ6.js +0 -432
- package/dist/chunk-4DHHMWP4.js +0 -24026
- package/dist/chunk-4DHHMWP4.js.map +0 -1
- package/dist/chunk-4GRVNPHA.js +0 -274
- package/dist/chunk-5G7UBTBE.js +0 -962
- package/dist/chunk-5HQ64Z7X.js +0 -479
- package/dist/chunk-5QCAWD6V.js +0 -163
- package/dist/chunk-6LLA6IF6.js +0 -285
- package/dist/chunk-6PJGHPXG.js +0 -131
- package/dist/chunk-7LFOSBF4.js +0 -3510
- package/dist/chunk-AJ4OO3CV.js +0 -8141
- package/dist/chunk-AWYXZU45.js +0 -51
- package/dist/chunk-AYOTYURE.js +0 -1518
- package/dist/chunk-BMMXYR7A.js +0 -238
- package/dist/chunk-BNEWJXKU.js +0 -638
- package/dist/chunk-BXR45CRI.js +0 -819
- package/dist/chunk-BYV4VS5E.js +0 -5471
- package/dist/chunk-CXVHS2SV.js +0 -91
- package/dist/chunk-DCBCEYSH.js +0 -98
- package/dist/chunk-FTP6NDOU.js +0 -1320
- package/dist/chunk-FUFLMP4B.js +0 -455
- package/dist/chunk-IDFAFNL6.js +0 -297
- package/dist/chunk-IGCS3X4F.js +0 -150
- package/dist/chunk-ILLS2XWG.js +0 -61
- package/dist/chunk-JAC6JVCI.js +0 -26
- package/dist/chunk-JTYD7A3C.js +0 -225
- package/dist/chunk-K2WKQXGH.js +0 -392
- package/dist/chunk-KSBXVA4K.js +0 -344
- package/dist/chunk-KSJRHAE4.js +0 -156
- package/dist/chunk-KYLTADVX.js +0 -494
- package/dist/chunk-L6UZM3ZN.js +0 -249
- package/dist/chunk-LRIP2J5S.js +0 -5368
- package/dist/chunk-M27HR7YD.js +0 -23
- package/dist/chunk-M7BSXJNL.js +0 -167
- package/dist/chunk-MCJ5I5LR.js +0 -3187
- package/dist/chunk-MCJ5I5LR.js.map +0 -1
- package/dist/chunk-MNJT2F7H.js +0 -504
- package/dist/chunk-MQU4LNYG.js +0 -46
- package/dist/chunk-MSOFG7FT.js +0 -197
- package/dist/chunk-MUU27AJF.js +0 -203
- package/dist/chunk-MVDMMSXS.js +0 -8954
- package/dist/chunk-MZPS46OR.js +0 -76
- package/dist/chunk-NEALLMDP.js +0 -1919
- package/dist/chunk-NZOMEXDN.js +0 -399
- package/dist/chunk-O5K5EKJC.js +0 -930
- package/dist/chunk-P3CYWSTO.js +0 -351
- package/dist/chunk-P7OX5Y75.js +0 -1920
- package/dist/chunk-P7OX5Y75.js.map +0 -1
- package/dist/chunk-QENSBNRJ.js +0 -1258
- package/dist/chunk-QY6GNZFH.js +0 -224
- package/dist/chunk-SGA5V2BM.js +0 -91
- package/dist/chunk-SLTZC32B.js +0 -218
- package/dist/chunk-SQZKWZ6F.js +0 -103
- package/dist/chunk-SSFQNMPS.js +0 -259
- package/dist/chunk-T3YHV2UM.js +0 -685
- package/dist/chunk-UYOUNHUQ.js +0 -309
- package/dist/chunk-VASOAJDL.js +0 -78
- package/dist/chunk-VC2XB5JT.js +0 -170
- package/dist/chunk-VQMEXYP3.js +0 -604
- package/dist/chunk-VUG7DFVI.js +0 -220
- package/dist/chunk-WB4FNMSI.js +0 -142
- package/dist/chunk-WUNWVQAI.js +0 -89
- package/dist/chunk-XGTZ3WQX.js +0 -2234
- package/dist/chunk-XHWHBGKX.js +0 -4277
- package/dist/chunk-XHWHBGKX.js.map +0 -1
- package/dist/chunk-YP5SD6O2.js +0 -148
- package/dist/chunk-YRW2AAKX.js +0 -454
- package/dist/chunk-YYFARPMN.js +0 -547
- package/dist/chunk-Z2QKUVHP.js +0 -57
- package/dist/chunk-Z2WTCFQ6.js +0 -19
- package/dist/chunk-Z3KRNKEA.js +0 -64
- package/dist/claim-QS3M3TOL.js +0 -200
- package/dist/companies-XCKJCRHM.js +0 -34
- package/dist/company-IQ4LMS24.js +0 -308
- package/dist/complete-PPHC25BS.js +0 -84
- package/dist/connect-F6LPMOCU.js +0 -45
- package/dist/conversation-GYDBXZN2.js +0 -96
- package/dist/conversion-report-6SVHPLHT.js +0 -127
- package/dist/conversion-upload-command-J3STKMAL.js +0 -439
- package/dist/conversion-writes-PEKNBIDQ.js +0 -122
- package/dist/conversions-7PSI7L55.js +0 -140
- package/dist/conversions-ICSKSSLX.js +0 -78
- package/dist/create-AJPHIQIT.js +0 -135
- package/dist/create-DM7DUVDQ.js +0 -239
- package/dist/create-R6BEEL3J.js +0 -62
- package/dist/create-XYJYG7CU.js +0 -218
- package/dist/creatives-LD76JBM4.js +0 -58
- package/dist/creatives-R6Q2QUQI.js +0 -229
- package/dist/credentials-P7L6PQKJ.js +0 -290
- package/dist/critique-DIVRMX7I.js +0 -1451
- package/dist/critique-KLGX7RI6.js +0 -232
- package/dist/crm-SBSOI3BQ.js +0 -313
- package/dist/crm-Y3F5UUXL.js +0 -323
- package/dist/currency-YZBACARU.js +0 -88
- package/dist/customers-7NG2IPJK.js +0 -65
- package/dist/delete-HGIMNZ4V.js +0 -57
- package/dist/delete-KDD6QSJA.js +0 -69
- package/dist/delete-S7U6A435.js +0 -67
- package/dist/demographics-PNEXYSZD.js +0 -141
- package/dist/discard-MT26YH73.js +0 -69
- package/dist/discover-RKW25QME.js +0 -172
- package/dist/domain-H6GRR7WD.js +0 -101
- package/dist/download-QCDXPSUM.js +0 -172
- package/dist/draft-EHDIVMWL.js +0 -615
- package/dist/draft-EUWOFQXE.js +0 -374
- package/dist/draft-FRX24TKC.js +0 -220
- package/dist/draft-RKKOSTJF.js +0 -332
- package/dist/draft-ZDS6KFZ3.js +0 -315
- package/dist/experiments-SJV3ZE46.js +0 -236
- package/dist/extract-MT3P3SYT.js +0 -143
- package/dist/facets-LWJT5J4S.js +0 -117
- package/dist/feedback-AB2QVJU3.js +0 -114
- package/dist/feedback-EGVQJTCD.js +0 -115
- package/dist/feedback-record-F32XSTKZ.js +0 -269
- package/dist/fetch-M5KGRBEI.js +0 -204
- package/dist/fit-YDHY7E7H.js +0 -65
- package/dist/flows-3V47HJQ3.js +0 -340
- package/dist/fonts-3GV2ZO5E.js +0 -39
- package/dist/forecast-327XLLZ3.js +0 -169
- package/dist/forecast-YKHZXBSB.js +0 -121
- package/dist/funnel-B4WROVPH.js +0 -397
- package/dist/generate-GBFLO76C.js +0 -263
- package/dist/get-FG3VO3BZ.js +0 -62
- package/dist/get-HQUIC2MQ.js +0 -82
- package/dist/google-FMGXNCW3.js +0 -3300
- package/dist/google-PKT7ORVP.js +0 -163
- package/dist/google-ads-AKIWTLR4.js +0 -198
- package/dist/history-FX223L6D.js +0 -102
- package/dist/history-HB45CGYR.js +0 -153
- package/dist/history-K4VYVCZC.js +0 -69
- package/dist/hubspot-SBPRX4A7.js +0 -817
- package/dist/ideas-6GD47AQW.js +0 -45
- package/dist/images-BC7ZWZ4B.js +0 -92
- package/dist/ingest-T3FJWORN.js +0 -131
- package/dist/ingest-XJ5DDUNG.js +0 -28
- package/dist/insights-RHOCF7VR.js +0 -132
- package/dist/inspect-GYEHCDZR.js +0 -192
- package/dist/intent-TKFH57DZ.js +0 -95
- package/dist/keyword-gap-7I2CIUTK.js +0 -130
- package/dist/keyword-metrics-K7L6CVTZ.js +0 -200
- package/dist/keywords-for-site-HBQBMVFS.js +0 -131
- package/dist/landing-RYX65ZJJ.js +0 -28
- package/dist/languages-FMHPUVOL.js +0 -40
- package/dist/leads-OAFYKOCF.js +0 -115
- package/dist/learn-SIATYUQL.js +0 -207
- package/dist/line-item-writes-4LAJW33S.js +0 -211
- package/dist/line-items-4FLTV275.js +0 -107
- package/dist/link-4EWQ6R6D.js +0 -67
- package/dist/linkedin-3KNDZPJT.js +0 -1381
- package/dist/linkedin-person-EFBNRT7A.js +0 -139
- package/dist/list-K7ROIVKU.js +0 -67
- package/dist/list-TJJPI57I.js +0 -154
- package/dist/list-VGMXUBFE.js +0 -306
- package/dist/locations-DD3JRZ4C.js +0 -69
- package/dist/locations-HWMEJ64P.js +0 -40
- package/dist/log-M7UCG5LZ.js +0 -95
- package/dist/make-US3C4YLT.js +0 -1367
- package/dist/map-OT5M3BJF.js +0 -445
- package/dist/mcp-32LXPARX.js +0 -729
- package/dist/media-sources-Z4JJELU7.js +0 -35
- package/dist/members-2BNKMQ2I.js +0 -47
- package/dist/metrics-KXTFXSWK.js +0 -152
- package/dist/models-2ZEM64H5.js +0 -155
- package/dist/normalize-GV2POGHI.js +0 -144
- package/dist/options-HKGF6VEW.js +0 -125
- package/dist/organization-G4VL7IQH.js +0 -949
- package/dist/people-2THRDMG4.js +0 -171
- package/dist/people-5A6NEDEU.js +0 -164
- package/dist/performance-67DDDP3X.js +0 -5565
- package/dist/performance-MF4547I7.js +0 -27
- package/dist/pixels-3CINROKJ.js +0 -62
- package/dist/preview-JITAEUWU.js +0 -101
- package/dist/promoted-tweet-writes-K7YJNRMS.js +0 -183
- package/dist/promoted-tweets-JIKZFJXO.js +0 -119
- package/dist/publish-4YT3CR4T.js +0 -350
- package/dist/query-NYH5PMQF.js +0 -62
- package/dist/reddit-CTAWHQ6K.js +0 -29
- package/dist/refresh-YYP23L3T.js +0 -97
- package/dist/release-ZPU626XC.js +0 -63
- package/dist/relevant-pages-QIF35NBQ.js +0 -99
- package/dist/remove-7RQJRXOV.js +0 -53
- package/dist/reopen-HANTJFNU.js +0 -66
- package/dist/rerun-LSWO6K7O.js +0 -97
- package/dist/research-YKP5MEEQ.js +0 -78
- package/dist/research-ZARG4TUX.js +0 -265
- package/dist/reset-LO2WLWSF.js +0 -57
- package/dist/reset-PDQTEM2J.js +0 -57
- package/dist/resolve-RXWBSGHW.js +0 -124
- package/dist/retry-M5RY4EFT.js +0 -65
- package/dist/retry-WRNZN2GO.js +0 -63
- package/dist/revenue-IXQTSRYQ.js +0 -91
- package/dist/rules-O64G4QVU.js +0 -99
- package/dist/rules-add-HW6UNH3U.js +0 -465
- package/dist/run-ENK7RU6R.js +0 -69
- package/dist/run-FO6EDDEN.js +0 -72
- package/dist/scaffold-ad-FFKVESN3.js +0 -1513
- package/dist/scaffold-static-ad-TWJM3TUK.js +0 -1012
- package/dist/scaffold-video-OK4TWNUK.js +0 -885
- package/dist/schedule-U4JVZER5.js +0 -64
- package/dist/scheduled-agents-ZIBL3WP5.js +0 -56
- package/dist/schema-6I2RSDO2.js +0 -135
- package/dist/search-QONARWFY.js +0 -177
- package/dist/select-EBLEMFQI.js +0 -110
- package/dist/set-prompt-CDYOXIIY.js +0 -199
- package/dist/setup-links-QQ2AWOZG.js +0 -144
- package/dist/shopify-SSDXRXN5.js +0 -4009
- package/dist/site-PHU5BRRL.js +0 -180
- package/dist/sources-I52AANVB.js +0 -30
- package/dist/sources-XH6RL3GF.js +0 -457
- package/dist/stale-A6RYRZDV.js +0 -90
- package/dist/stale-A6RYRZDV.js.map +0 -1
- package/dist/status-O4AGHCJY.js +0 -65
- package/dist/stock-C2TUFJUH.js +0 -212
- package/dist/studio-TG2UAKFI.js +0 -49
- package/dist/sync-NNNB2PWZ.js +0 -57
- package/dist/sync-definition-AABUGAYW.js +0 -70
- package/dist/tags-A2PCL4OL.js +0 -26
- package/dist/tags-KH6N6OKV.js +0 -23
- package/dist/tags-LAMQOQWY.js +0 -23
- package/dist/tags-MIR75PDJ.js +0 -227
- package/dist/tags-PHEHMZC7.js +0 -23
- package/dist/targeting-criteria-MRAEWFOW.js +0 -113
- package/dist/targets-JJO4Z4DI.js +0 -106
- package/dist/testimonials-5455FK4Y.js +0 -32
- package/dist/themes-7XHHY4XY.js +0 -95
- package/dist/top-companies-5SZO3NVE.js +0 -246
- package/dist/transcript-JHGN7KW7.js +0 -165
- package/dist/translate-YWSIWVRT.js +0 -603
- package/dist/triggers-RNGTCIVF.js +0 -144
- package/dist/unlink-PACTZ674.js +0 -70
- package/dist/unstage-NAJI4DDV.js +0 -88
- package/dist/update-5EXPDJ2T.js +0 -66
- package/dist/update-GK3QSHWA.js +0 -101
- package/dist/update-KPWP4DPC.js +0 -192
- package/dist/update-XZGK5UFK.js +0 -155
- package/dist/upload-JYZFK5ZO.js +0 -137
- package/dist/url-options-RTTLWCU5.js +0 -131
- package/dist/url-params-OHLTOL33.js +0 -101
- package/dist/validate-H6J4M43Q.js +0 -135
- package/dist/videos-5N3JQIAY.js +0 -41
- package/dist/viewer-check-H4OGC5FF.js +0 -83
- package/dist/web-CV3VMSDO.js +0 -173
- package/dist/winning-ads-FVTCV3GX.js +0 -86
- package/dist/write-commands-W4Z6MANM.js +0 -1524
- package/dist/x-WFYI4F6X.js +0 -47
- /package/dist/{account-Y7ZFEM7U.js.map → account-MDLPCIDQ.js.map} +0 -0
- /package/dist/{account-WFAMHUCQ.js.map → account-VRXCDDXY.js.map} +0 -0
- /package/dist/{account-reads-JPQ2K343.js.map → account-reads-FSOURMSH.js.map} +0 -0
- /package/dist/{account-users-QAFQDSZQ.js.map → account-users-FXOWESWY.js.map} +0 -0
- /package/dist/{account-writes-EEKHPF5I.js.map → account-writes-SRTOKSMT.js.map} +0 -0
- /package/dist/{accounts-OHVZAP4D.js.map → accounts-5YJZVSTB.js.map} +0 -0
- /package/dist/{accounts-TFUGF7UK.js.map → accounts-AT2UB2L3.js.map} +0 -0
- /package/dist/{accounts-H3KO5AEN.js.map → accounts-NR3ARJ72.js.map} +0 -0
- /package/dist/{actions-FTIRKAAN.js.map → actions-766X6XRB.js.map} +0 -0
- /package/dist/{activecampaign-BCOEXYZ7.js.map → activecampaign-MC4FYCCF.js.map} +0 -0
- /package/dist/{ad-group-writes-UDQ4563V.js.map → ad-group-writes-UFBFB2PL.js.map} +0 -0
- /package/dist/{ad-groups-RXT2XKSE.js.map → ad-groups-KRKMZPF3.js.map} +0 -0
- /package/dist/{ad-writes-SHLTL2FY.js.map → ad-writes-SIAGGUDJ.js.map} +0 -0
- /package/dist/{add-QGJPTGU7.js.map → add-DWKVVW76.js.map} +0 -0
- /package/dist/{add-L6MKL2G2.js.map → add-MYX3BSUJ.js.map} +0 -0
- /package/dist/{ads-CUMOMBI3.js.map → ads-3T4C4BBH.js.map} +0 -0
- /package/dist/{ads-AYXMFUIF.js.map → ads-UGMHE33I.js.map} +0 -0
- /package/dist/{advertisers-RVTUZ53M.js.map → advertisers-UFOLIRIK.js.map} +0 -0
- /package/dist/{alerts-LZJAF4AQ.js.map → alerts-2GMBX6JV.js.map} +0 -0
- /package/dist/{analytics-RLZ7BXIB.js.map → analytics-3EWNAHNG.js.map} +0 -0
- /package/dist/{analytics-4YHYFRHH.js.map → analytics-G4WFP37R.js.map} +0 -0
- /package/dist/{animate-MBNFCDUZ.js.map → animate-PSOAMA52.js.map} +0 -0
- /package/dist/{assign-JC5BK5XE.js.map → assign-5FALEZYD.js.map} +0 -0
- /package/dist/{audience-size-ZVRH3BEL.js.map → audience-size-VRYRLPO5.js.map} +0 -0
- /package/dist/{audiences-KBW2UAOP.js.map → audiences-EH426E3T.js.map} +0 -0
- /package/dist/{audit-JXRVO37K.js.map → audit-WHIVWMAI.js.map} +0 -0
- /package/dist/{autocomplete-CBBFRPJZ.js.map → autocomplete-3HCLXTGK.js.map} +0 -0
- /package/dist/{avatars-GB7B2MGR.js.map → avatars-HN74FWDF.js.map} +0 -0
- /package/dist/{bid-pricing-G4IXJRVK.js.map → bid-pricing-NN5JKZS4.js.map} +0 -0
- /package/dist/{brand-VKQ72SRQ.js.map → brand-MWU5IVEZ.js.map} +0 -0
- /package/dist/{brief-X3FRAPUH.js.map → brief-6TXWQWHJ.js.map} +0 -0
- /package/dist/{campaign-groups-NA73I7JR.js.map → campaign-groups-MGEKCP7J.js.map} +0 -0
- /package/dist/{campaign-writes-ZOLIX3EB.js.map → campaign-writes-ORUT54WL.js.map} +0 -0
- /package/dist/{campaign-writes-JYMQF6CK.js.map → campaign-writes-Z7B6V6Q3.js.map} +0 -0
- /package/dist/{campaigns-TMHFCPAZ.js.map → campaigns-3BDIHUSW.js.map} +0 -0
- /package/dist/{campaigns-PB3QNTI4.js.map → campaigns-E7YC762Q.js.map} +0 -0
- /package/dist/{campaigns-DZAZIUES.js.map → campaigns-WLOJFSLV.js.map} +0 -0
- /package/dist/{canvas-4EGLYNYM.js.map → canvas-SEVIQRXN.js.map} +0 -0
- /package/dist/{capabilities-JZFPET7C.js.map → capabilities-KWJYBYQO.js.map} +0 -0
- /package/dist/{catalog-2P422WOQ.js.map → catalog-DHTZDVWS.js.map} +0 -0
- /package/dist/{catalogs-XFYYY3CS.js.map → catalogs-R4QFA5XO.js.map} +0 -0
- /package/dist/{changes-GFJITHF6.js.map → changes-F2GP72MO.js.map} +0 -0
- /package/dist/{chatgpt-KNLATOZ6.js.map → chatgpt-MN4XHO6L.js.map} +0 -0
- /package/dist/{chats-CE7RKD6W.js.map → chats-IBMO724I.js.map} +0 -0
- /package/dist/{check-SIMBAMXJ.js.map → check-EZI4OF3Q.js.map} +0 -0
- /package/dist/{chunk-MVDMMSXS.js.map → chunk-2CSNR4U7.js.map} +0 -0
- /package/dist/{chunk-Z3KRNKEA.js.map → chunk-2VUD4CIW.js.map} +0 -0
- /package/dist/{chunk-KYLTADVX.js.map → chunk-423G75A7.js.map} +0 -0
- /package/dist/{chunk-YRW2AAKX.js.map → chunk-4ZAHRAWL.js.map} +0 -0
- /package/dist/{chunk-NEALLMDP.js.map → chunk-5WOZ7OGU.js.map} +0 -0
- /package/dist/{chunk-MSOFG7FT.js.map → chunk-66LUQENO.js.map} +0 -0
- /package/dist/{chunk-5G7UBTBE.js.map → chunk-6J2UZJ6F.js.map} +0 -0
- /package/dist/{chunk-JAC6JVCI.js.map → chunk-6OIKNJ7G.js.map} +0 -0
- /package/dist/{chunk-MUU27AJF.js.map → chunk-7EPR7L2D.js.map} +0 -0
- /package/dist/{chunk-3WLUQ7DM.js.map → chunk-AFWLBOIN.js.map} +0 -0
- /package/dist/{chunk-P3CYWSTO.js.map → chunk-ALCRXFIZ.js.map} +0 -0
- /package/dist/{chunk-2S3VIE7D.js.map → chunk-BJH2G3QF.js.map} +0 -0
- /package/dist/{chunk-AJ4OO3CV.js.map → chunk-BTOGDXA4.js.map} +0 -0
- /package/dist/{chunk-SGA5V2BM.js.map → chunk-BZXIDMV7.js.map} +0 -0
- /package/dist/{chunk-KSBXVA4K.js.map → chunk-CNZ5KS4I.js.map} +0 -0
- /package/dist/{chunk-IGCS3X4F.js.map → chunk-D32EWSMB.js.map} +0 -0
- /package/dist/{chunk-AWYXZU45.js.map → chunk-DAXBST7G.js.map} +0 -0
- /package/dist/{chunk-QENSBNRJ.js.map → chunk-DD6X3AZB.js.map} +0 -0
- /package/dist/{chunk-M7BSXJNL.js.map → chunk-DI7M2JUA.js.map} +0 -0
- /package/dist/{chunk-K2WKQXGH.js.map → chunk-EA3643ET.js.map} +0 -0
- /package/dist/{chunk-VUG7DFVI.js.map → chunk-EBFKPGTL.js.map} +0 -0
- /package/dist/{chunk-2NXACVED.js.map → chunk-ETHUDFUY.js.map} +0 -0
- /package/dist/{chunk-T3YHV2UM.js.map → chunk-EZ3YSJTP.js.map} +0 -0
- /package/dist/{chunk-7LFOSBF4.js.map → chunk-G6CLJ3WL.js.map} +0 -0
- /package/dist/{chunk-VASOAJDL.js.map → chunk-GLY3CB2F.js.map} +0 -0
- /package/dist/{chunk-SQZKWZ6F.js.map → chunk-HXHGDFXA.js.map} +0 -0
- /package/dist/{chunk-BYV4VS5E.js.map → chunk-IEUF733F.js.map} +0 -0
- /package/dist/{chunk-5QCAWD6V.js.map → chunk-IEX4RRHJ.js.map} +0 -0
- /package/dist/{chunk-UYOUNHUQ.js.map → chunk-IR2NRXHA.js.map} +0 -0
- /package/dist/{chunk-AYOTYURE.js.map → chunk-J7L457MF.js.map} +0 -0
- /package/dist/{chunk-VQMEXYP3.js.map → chunk-JFWTQDZL.js.map} +0 -0
- /package/dist/{chunk-4GRVNPHA.js.map → chunk-JGMQD3PX.js.map} +0 -0
- /package/dist/{chunk-DCBCEYSH.js.map → chunk-JTAPNHW5.js.map} +0 -0
- /package/dist/{chunk-WUNWVQAI.js.map → chunk-K2DKQ52D.js.map} +0 -0
- /package/dist/{chunk-ILLS2XWG.js.map → chunk-K3VMHRLJ.js.map} +0 -0
- /package/dist/{chunk-Z2WTCFQ6.js.map → chunk-LBPJDFFN.js.map} +0 -0
- /package/dist/{chunk-O5K5EKJC.js.map → chunk-LNRYMWXE.js.map} +0 -0
- /package/dist/{chunk-SLTZC32B.js.map → chunk-LQRPFL2N.js.map} +0 -0
- /package/dist/{chunk-6LLA6IF6.js.map → chunk-LY7PDE76.js.map} +0 -0
- /package/dist/{chunk-BNEWJXKU.js.map → chunk-NOCBNING.js.map} +0 -0
- /package/dist/{chunk-CXVHS2SV.js.map → chunk-PEPLYJWK.js.map} +0 -0
- /package/dist/{chunk-Z2QKUVHP.js.map → chunk-PK2U2ALQ.js.map} +0 -0
- /package/dist/{chunk-NZOMEXDN.js.map → chunk-PKSIPLMS.js.map} +0 -0
- /package/dist/{chunk-IDFAFNL6.js.map → chunk-QNY4IK3C.js.map} +0 -0
- /package/dist/{chunk-XGTZ3WQX.js.map → chunk-QORVZUMT.js.map} +0 -0
- /package/dist/{chunk-KSJRHAE4.js.map → chunk-RDIZCSTV.js.map} +0 -0
- /package/dist/{chunk-YP5SD6O2.js.map → chunk-RQ43VL2X.js.map} +0 -0
- /package/dist/{chunk-VC2XB5JT.js.map → chunk-S4QGD7PV.js.map} +0 -0
- /package/dist/{chunk-MQU4LNYG.js.map → chunk-S7WFZYKP.js.map} +0 -0
- /package/dist/{chunk-MZPS46OR.js.map → chunk-SIKCVWM3.js.map} +0 -0
- /package/dist/{chunk-WB4FNMSI.js.map → chunk-SRMQCQ7T.js.map} +0 -0
- /package/dist/{chunk-BXR45CRI.js.map → chunk-SZFWQVAC.js.map} +0 -0
- /package/dist/{chunk-FTP6NDOU.js.map → chunk-TBBAHTP3.js.map} +0 -0
- /package/dist/{chunk-6PJGHPXG.js.map → chunk-U6EQMX3B.js.map} +0 -0
- /package/dist/{chunk-5HQ64Z7X.js.map → chunk-UECTXVAO.js.map} +0 -0
- /package/dist/{chunk-FUFLMP4B.js.map → chunk-UQTINFCP.js.map} +0 -0
- /package/dist/{chunk-JTYD7A3C.js.map → chunk-UUUYWBTR.js.map} +0 -0
- /package/dist/{chunk-SSFQNMPS.js.map → chunk-UZ5ZC43B.js.map} +0 -0
- /package/dist/{chunk-L6UZM3ZN.js.map → chunk-VSHXHSIW.js.map} +0 -0
- /package/dist/{chunk-M27HR7YD.js.map → chunk-VTLW24DM.js.map} +0 -0
- /package/dist/{chunk-BMMXYR7A.js.map → chunk-WZXMZFVB.js.map} +0 -0
- /package/dist/{chunk-MNJT2F7H.js.map → chunk-X7NRAGJ5.js.map} +0 -0
- /package/dist/{chunk-LRIP2J5S.js.map → chunk-XYHAIEAF.js.map} +0 -0
- /package/dist/{chunk-QY6GNZFH.js.map → chunk-YLHWZOW7.js.map} +0 -0
- /package/dist/{chunk-37QNC344.js.map → chunk-YNWBIAXJ.js.map} +0 -0
- /package/dist/{chunk-45ETXHUI.js.map → chunk-YYYGUO2E.js.map} +0 -0
- /package/dist/{chunk-46TEYVJ6.js.map → chunk-ZAQQBVEM.js.map} +0 -0
- /package/dist/{chunk-YYFARPMN.js.map → chunk-ZHQSXEJ2.js.map} +0 -0
- /package/dist/{claim-QS3M3TOL.js.map → claim-JQCSXR4C.js.map} +0 -0
- /package/dist/{companies-XCKJCRHM.js.map → companies-GHBIZKOK.js.map} +0 -0
- /package/dist/{company-IQ4LMS24.js.map → company-KNCYMQIA.js.map} +0 -0
- /package/dist/{complete-PPHC25BS.js.map → complete-V53XRNEQ.js.map} +0 -0
- /package/dist/{connect-F6LPMOCU.js.map → connect-NUZQSIGL.js.map} +0 -0
- /package/dist/{conversation-GYDBXZN2.js.map → conversation-LBYO6ONM.js.map} +0 -0
- /package/dist/{conversion-report-6SVHPLHT.js.map → conversion-report-SRHJGIMT.js.map} +0 -0
- /package/dist/{conversion-upload-command-J3STKMAL.js.map → conversion-upload-command-5EKILBP2.js.map} +0 -0
- /package/dist/{conversion-writes-PEKNBIDQ.js.map → conversion-writes-P5FDTA6Y.js.map} +0 -0
- /package/dist/{conversions-7PSI7L55.js.map → conversions-BXCGFNRK.js.map} +0 -0
- /package/dist/{conversions-ICSKSSLX.js.map → conversions-WJBOEPOO.js.map} +0 -0
- /package/dist/{create-DM7DUVDQ.js.map → create-3PNWKXLP.js.map} +0 -0
- /package/dist/{create-AJPHIQIT.js.map → create-6FZR7JZT.js.map} +0 -0
- /package/dist/{create-XYJYG7CU.js.map → create-QXJ3UEOT.js.map} +0 -0
- /package/dist/{create-R6BEEL3J.js.map → create-XO7HUNPB.js.map} +0 -0
- /package/dist/{creatives-LD76JBM4.js.map → creatives-O6TA2DOG.js.map} +0 -0
- /package/dist/{creatives-R6Q2QUQI.js.map → creatives-YRYPXOCS.js.map} +0 -0
- /package/dist/{credentials-P7L6PQKJ.js.map → credentials-ATAP54ZI.js.map} +0 -0
- /package/dist/{critique-KLGX7RI6.js.map → critique-3UY7TUVQ.js.map} +0 -0
- /package/dist/{critique-DIVRMX7I.js.map → critique-UC6SBKGO.js.map} +0 -0
- /package/dist/{crm-SBSOI3BQ.js.map → crm-AXK74BCO.js.map} +0 -0
- /package/dist/{crm-Y3F5UUXL.js.map → crm-MGVGQ7PK.js.map} +0 -0
- /package/dist/{currency-YZBACARU.js.map → currency-335ARWP5.js.map} +0 -0
- /package/dist/{customers-7NG2IPJK.js.map → customers-7NBNJCDC.js.map} +0 -0
- /package/dist/{delete-KDD6QSJA.js.map → delete-EKGTJSLK.js.map} +0 -0
- /package/dist/{delete-HGIMNZ4V.js.map → delete-OFG7FBMA.js.map} +0 -0
- /package/dist/{delete-S7U6A435.js.map → delete-QQDGR7DD.js.map} +0 -0
- /package/dist/{demographics-PNEXYSZD.js.map → demographics-QWFAMEC2.js.map} +0 -0
- /package/dist/{discard-MT26YH73.js.map → discard-4VW3AWI3.js.map} +0 -0
- /package/dist/{discover-RKW25QME.js.map → discover-O6322XPL.js.map} +0 -0
- /package/dist/{domain-H6GRR7WD.js.map → domain-EDPDUVAX.js.map} +0 -0
- /package/dist/{download-QCDXPSUM.js.map → download-46GLVBYU.js.map} +0 -0
- /package/dist/{draft-RKKOSTJF.js.map → draft-IBR2W6GZ.js.map} +0 -0
- /package/dist/{draft-ZDS6KFZ3.js.map → draft-NCUQFRGS.js.map} +0 -0
- /package/dist/{draft-FRX24TKC.js.map → draft-RRUJU2ZR.js.map} +0 -0
- /package/dist/{draft-EHDIVMWL.js.map → draft-SLGJRUOV.js.map} +0 -0
- /package/dist/{draft-EUWOFQXE.js.map → draft-TJAD7P6W.js.map} +0 -0
- /package/dist/{experiments-SJV3ZE46.js.map → experiments-DUVO7C7A.js.map} +0 -0
- /package/dist/{extract-MT3P3SYT.js.map → extract-WYNFE6TQ.js.map} +0 -0
- /package/dist/{facets-LWJT5J4S.js.map → facets-WTY6NOUV.js.map} +0 -0
- /package/dist/{feedback-EGVQJTCD.js.map → feedback-57BP27NA.js.map} +0 -0
- /package/dist/{feedback-AB2QVJU3.js.map → feedback-XDREGDOK.js.map} +0 -0
- /package/dist/{feedback-record-F32XSTKZ.js.map → feedback-record-HXSBLAZD.js.map} +0 -0
- /package/dist/{fetch-M5KGRBEI.js.map → fetch-L27MLPXM.js.map} +0 -0
- /package/dist/{fit-YDHY7E7H.js.map → fit-K3G7HIMK.js.map} +0 -0
- /package/dist/{flows-3V47HJQ3.js.map → flows-VJTWU3SU.js.map} +0 -0
- /package/dist/{fonts-3GV2ZO5E.js.map → fonts-SEMIVGXJ.js.map} +0 -0
- /package/dist/{forecast-327XLLZ3.js.map → forecast-EHOMHLUH.js.map} +0 -0
- /package/dist/{forecast-YKHZXBSB.js.map → forecast-VODA7N3G.js.map} +0 -0
- /package/dist/{funnel-B4WROVPH.js.map → funnel-BXJDMVMF.js.map} +0 -0
- /package/dist/{generate-GBFLO76C.js.map → generate-VCGSO7HI.js.map} +0 -0
- /package/dist/{get-FG3VO3BZ.js.map → get-EASXXOQR.js.map} +0 -0
- /package/dist/{get-HQUIC2MQ.js.map → get-EN4UQI7R.js.map} +0 -0
- /package/dist/{google-PKT7ORVP.js.map → google-ATEQHENA.js.map} +0 -0
- /package/dist/{google-FMGXNCW3.js.map → google-ZVVKAI7T.js.map} +0 -0
- /package/dist/{google-ads-AKIWTLR4.js.map → google-ads-OUNSPGRQ.js.map} +0 -0
- /package/dist/{history-HB45CGYR.js.map → history-5OJVW2ZF.js.map} +0 -0
- /package/dist/{history-K4VYVCZC.js.map → history-RQMCZQSC.js.map} +0 -0
- /package/dist/{history-FX223L6D.js.map → history-TDGBO76N.js.map} +0 -0
- /package/dist/{hubspot-SBPRX4A7.js.map → hubspot-VQGONQQU.js.map} +0 -0
- /package/dist/{ideas-6GD47AQW.js.map → ideas-B7RQXWHQ.js.map} +0 -0
- /package/dist/{images-BC7ZWZ4B.js.map → images-Q45MP4Q2.js.map} +0 -0
- /package/dist/{ingest-T3FJWORN.js.map → ingest-6MMY4KDM.js.map} +0 -0
- /package/dist/{ingest-XJ5DDUNG.js.map → ingest-UMQQIINM.js.map} +0 -0
- /package/dist/{insights-RHOCF7VR.js.map → insights-WDHDMULM.js.map} +0 -0
- /package/dist/{inspect-GYEHCDZR.js.map → inspect-W2BIGA5F.js.map} +0 -0
- /package/dist/{intent-TKFH57DZ.js.map → intent-3S6SHAYC.js.map} +0 -0
- /package/dist/{keyword-gap-7I2CIUTK.js.map → keyword-gap-MGHKWE6A.js.map} +0 -0
- /package/dist/{keyword-metrics-K7L6CVTZ.js.map → keyword-metrics-6R5TSHCE.js.map} +0 -0
- /package/dist/{keywords-for-site-HBQBMVFS.js.map → keywords-for-site-EFBLFX6E.js.map} +0 -0
- /package/dist/{landing-RYX65ZJJ.js.map → landing-WC5FX3UP.js.map} +0 -0
- /package/dist/{languages-FMHPUVOL.js.map → languages-4J7JHZNB.js.map} +0 -0
- /package/dist/{leads-OAFYKOCF.js.map → leads-CBOQ5CNM.js.map} +0 -0
- /package/dist/{learn-SIATYUQL.js.map → learn-ZUP35H3T.js.map} +0 -0
- /package/dist/{line-item-writes-4LAJW33S.js.map → line-item-writes-W4UFIYEA.js.map} +0 -0
- /package/dist/{line-items-4FLTV275.js.map → line-items-SGCUJF3S.js.map} +0 -0
- /package/dist/{link-4EWQ6R6D.js.map → link-KLJB7COB.js.map} +0 -0
- /package/dist/{linkedin-3KNDZPJT.js.map → linkedin-TANR45ZZ.js.map} +0 -0
- /package/dist/{linkedin-person-EFBNRT7A.js.map → linkedin-person-ECWP4XPE.js.map} +0 -0
- /package/dist/{list-K7ROIVKU.js.map → list-PXEJMDB4.js.map} +0 -0
- /package/dist/{list-VGMXUBFE.js.map → list-SVR5HBLA.js.map} +0 -0
- /package/dist/{list-TJJPI57I.js.map → list-XELB7UV2.js.map} +0 -0
- /package/dist/{locations-HWMEJ64P.js.map → locations-KM4XY56A.js.map} +0 -0
- /package/dist/{locations-DD3JRZ4C.js.map → locations-SNK2NDH3.js.map} +0 -0
- /package/dist/{log-M7UCG5LZ.js.map → log-PMPOO42C.js.map} +0 -0
- /package/dist/{make-US3C4YLT.js.map → make-Q36WVKT3.js.map} +0 -0
- /package/dist/{map-OT5M3BJF.js.map → map-DQ65PS65.js.map} +0 -0
- /package/dist/{mcp-32LXPARX.js.map → mcp-XMFKYN3E.js.map} +0 -0
- /package/dist/{media-sources-Z4JJELU7.js.map → media-sources-HG524YO4.js.map} +0 -0
- /package/dist/{members-2BNKMQ2I.js.map → members-D4DI2IFH.js.map} +0 -0
- /package/dist/{metrics-KXTFXSWK.js.map → metrics-QVDXMTEI.js.map} +0 -0
- /package/dist/{models-2ZEM64H5.js.map → models-VOSJJFO2.js.map} +0 -0
- /package/dist/{normalize-GV2POGHI.js.map → normalize-XRVNJTML.js.map} +0 -0
- /package/dist/{options-HKGF6VEW.js.map → options-HT27WLNS.js.map} +0 -0
- /package/dist/{organization-G4VL7IQH.js.map → organization-DYPTFZBA.js.map} +0 -0
- /package/dist/{people-2THRDMG4.js.map → people-5MJXHC3D.js.map} +0 -0
- /package/dist/{people-5A6NEDEU.js.map → people-TTUIYT3L.js.map} +0 -0
- /package/dist/{performance-MF4547I7.js.map → performance-2AQ34OPB.js.map} +0 -0
- /package/dist/{performance-67DDDP3X.js.map → performance-WE4LHJ2B.js.map} +0 -0
- /package/dist/{pixels-3CINROKJ.js.map → pixels-EWFDIDFA.js.map} +0 -0
- /package/dist/{preview-JITAEUWU.js.map → preview-JYVRWRTT.js.map} +0 -0
- /package/dist/{promoted-tweet-writes-K7YJNRMS.js.map → promoted-tweet-writes-HCVRPH45.js.map} +0 -0
- /package/dist/{promoted-tweets-JIKZFJXO.js.map → promoted-tweets-P56ZU6OK.js.map} +0 -0
- /package/dist/{publish-4YT3CR4T.js.map → publish-4VWZHRYO.js.map} +0 -0
- /package/dist/{query-NYH5PMQF.js.map → query-DK7WWCJJ.js.map} +0 -0
- /package/dist/{reddit-CTAWHQ6K.js.map → reddit-NSKYHSAC.js.map} +0 -0
- /package/dist/{refresh-YYP23L3T.js.map → refresh-O3CLJX4O.js.map} +0 -0
- /package/dist/{release-ZPU626XC.js.map → release-6TQQW4HB.js.map} +0 -0
- /package/dist/{relevant-pages-QIF35NBQ.js.map → relevant-pages-B3ZFOGHQ.js.map} +0 -0
- /package/dist/{remove-7RQJRXOV.js.map → remove-R55VAM47.js.map} +0 -0
- /package/dist/{reopen-HANTJFNU.js.map → reopen-S426N3OD.js.map} +0 -0
- /package/dist/{rerun-LSWO6K7O.js.map → rerun-5KHANQR3.js.map} +0 -0
- /package/dist/{research-ZARG4TUX.js.map → research-5REXCSSO.js.map} +0 -0
- /package/dist/{research-YKP5MEEQ.js.map → research-DMZLXMM2.js.map} +0 -0
- /package/dist/{reset-PDQTEM2J.js.map → reset-5N2IVHFL.js.map} +0 -0
- /package/dist/{reset-LO2WLWSF.js.map → reset-D4NGVG35.js.map} +0 -0
- /package/dist/{resolve-RXWBSGHW.js.map → resolve-V75JGD75.js.map} +0 -0
- /package/dist/{retry-M5RY4EFT.js.map → retry-SB7EIJBA.js.map} +0 -0
- /package/dist/{retry-WRNZN2GO.js.map → retry-WIKW6CGT.js.map} +0 -0
- /package/dist/{revenue-IXQTSRYQ.js.map → revenue-GZJU3XMD.js.map} +0 -0
- /package/dist/{rules-O64G4QVU.js.map → rules-WI6YKZA4.js.map} +0 -0
- /package/dist/{rules-add-HW6UNH3U.js.map → rules-add-JCRB4AJR.js.map} +0 -0
- /package/dist/{run-ENK7RU6R.js.map → run-RDHTORWZ.js.map} +0 -0
- /package/dist/{run-FO6EDDEN.js.map → run-VVK23U5P.js.map} +0 -0
- /package/dist/{scaffold-ad-FFKVESN3.js.map → scaffold-ad-QSVBY3XR.js.map} +0 -0
- /package/dist/{scaffold-static-ad-TWJM3TUK.js.map → scaffold-static-ad-64BZMUHP.js.map} +0 -0
- /package/dist/{scaffold-video-OK4TWNUK.js.map → scaffold-video-X27MRW7R.js.map} +0 -0
- /package/dist/{schedule-U4JVZER5.js.map → schedule-XHPIVUJ6.js.map} +0 -0
- /package/dist/{scheduled-agents-ZIBL3WP5.js.map → scheduled-agents-OMUQCGDG.js.map} +0 -0
- /package/dist/{schema-6I2RSDO2.js.map → schema-RDVJQ5VW.js.map} +0 -0
- /package/dist/{search-QONARWFY.js.map → search-VX5ATSCD.js.map} +0 -0
- /package/dist/{select-EBLEMFQI.js.map → select-NX3VHQTH.js.map} +0 -0
- /package/dist/{set-prompt-CDYOXIIY.js.map → set-prompt-QGEWZ3HD.js.map} +0 -0
- /package/dist/{setup-links-QQ2AWOZG.js.map → setup-links-LIDZVTSU.js.map} +0 -0
- /package/dist/{shopify-SSDXRXN5.js.map → shopify-LZU3MCDG.js.map} +0 -0
- /package/dist/{site-PHU5BRRL.js.map → site-CEO2V3BI.js.map} +0 -0
- /package/dist/{sources-I52AANVB.js.map → sources-C7AQCP2Z.js.map} +0 -0
- /package/dist/{sources-XH6RL3GF.js.map → sources-SIGZVORA.js.map} +0 -0
- /package/dist/{status-O4AGHCJY.js.map → status-NIG6OSAG.js.map} +0 -0
- /package/dist/{stock-C2TUFJUH.js.map → stock-KY6BCN76.js.map} +0 -0
- /package/dist/{studio-TG2UAKFI.js.map → studio-VQFYNK5O.js.map} +0 -0
- /package/dist/{sync-NNNB2PWZ.js.map → sync-3RS5E5ZI.js.map} +0 -0
- /package/dist/{sync-definition-AABUGAYW.js.map → sync-definition-VHYZWLS5.js.map} +0 -0
- /package/dist/{tags-A2PCL4OL.js.map → tags-F6DBHGIL.js.map} +0 -0
- /package/dist/{tags-LAMQOQWY.js.map → tags-HGKEOIR7.js.map} +0 -0
- /package/dist/{tags-PHEHMZC7.js.map → tags-I2LINXA7.js.map} +0 -0
- /package/dist/{tags-MIR75PDJ.js.map → tags-UM6Y4DVQ.js.map} +0 -0
- /package/dist/{tags-KH6N6OKV.js.map → tags-YCBZVXJQ.js.map} +0 -0
- /package/dist/{targeting-criteria-MRAEWFOW.js.map → targeting-criteria-XPK76HRH.js.map} +0 -0
- /package/dist/{targets-JJO4Z4DI.js.map → targets-KT4BNTKZ.js.map} +0 -0
- /package/dist/{testimonials-5455FK4Y.js.map → testimonials-QGXMSSWV.js.map} +0 -0
- /package/dist/{themes-7XHHY4XY.js.map → themes-ZKUHKUZD.js.map} +0 -0
- /package/dist/{top-companies-5SZO3NVE.js.map → top-companies-RC5KTWQ5.js.map} +0 -0
- /package/dist/{transcript-JHGN7KW7.js.map → transcript-OLF62WCH.js.map} +0 -0
- /package/dist/{translate-YWSIWVRT.js.map → translate-NON5ZD3S.js.map} +0 -0
- /package/dist/{triggers-RNGTCIVF.js.map → triggers-UOQY4RFC.js.map} +0 -0
- /package/dist/{unlink-PACTZ674.js.map → unlink-RNIJPHHW.js.map} +0 -0
- /package/dist/{unstage-NAJI4DDV.js.map → unstage-QVDYVN77.js.map} +0 -0
- /package/dist/{update-5EXPDJ2T.js.map → update-7KR5ABJP.js.map} +0 -0
- /package/dist/{update-KPWP4DPC.js.map → update-JAUWIWOH.js.map} +0 -0
- /package/dist/{update-GK3QSHWA.js.map → update-QZEF5MUW.js.map} +0 -0
- /package/dist/{update-XZGK5UFK.js.map → update-TRWHYXF4.js.map} +0 -0
- /package/dist/{upload-JYZFK5ZO.js.map → upload-MLK2MZB6.js.map} +0 -0
- /package/dist/{url-options-RTTLWCU5.js.map → url-options-2FVG55JF.js.map} +0 -0
- /package/dist/{url-params-OHLTOL33.js.map → url-params-F4XNWPOD.js.map} +0 -0
- /package/dist/{validate-H6J4M43Q.js.map → validate-P3AQVXG6.js.map} +0 -0
- /package/dist/{videos-5N3JQIAY.js.map → videos-PAKAAFRD.js.map} +0 -0
- /package/dist/{viewer-check-H4OGC5FF.js.map → viewer-check-KXMDJH7R.js.map} +0 -0
- /package/dist/{web-CV3VMSDO.js.map → web-E5NHFG4Y.js.map} +0 -0
- /package/dist/{winning-ads-FVTCV3GX.js.map → winning-ads-P6PDTCCU.js.map} +0 -0
- /package/dist/{write-commands-W4Z6MANM.js.map → write-commands-MBNO7DCX.js.map} +0 -0
- /package/dist/{x-WFYI4F6X.js.map → x-5A74OD5P.js.map} +0 -0
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Phrases,
|
|
3
|
+
RULE_APPLIES,
|
|
4
|
+
RULE_KINDS,
|
|
5
|
+
RULE_STRENGTHS
|
|
6
|
+
} from "./chunk-NOCBNING.js";
|
|
7
|
+
import {
|
|
8
|
+
holdWorkspaceSpend
|
|
9
|
+
} from "./chunk-T4HIFVNK.js";
|
|
10
|
+
import {
|
|
11
|
+
askAboutText
|
|
12
|
+
} from "./chunk-YNWBIAXJ.js";
|
|
13
|
+
import {
|
|
14
|
+
CREATIVE_FEEDBACK_REASON_LABELS
|
|
15
|
+
} from "./chunk-BTOGDXA4.js";
|
|
16
|
+
|
|
17
|
+
// src/commands/creatives/rule-candidate.ts
|
|
18
|
+
import { createHash } from "crypto";
|
|
19
|
+
import { mkdir, readFile, writeFile } from "fs/promises";
|
|
20
|
+
import path from "path";
|
|
21
|
+
import { z } from "zod";
|
|
22
|
+
var optionalPhrases = Phrases.optional().catch(void 0);
|
|
23
|
+
var Draft = z.object({
|
|
24
|
+
because: z.string().trim().min(3).max(400),
|
|
25
|
+
text: z.string().trim().min(1).max(300),
|
|
26
|
+
strength: z.enum(RULE_STRENGTHS).catch("must"),
|
|
27
|
+
applies: z.enum(RULE_APPLIES).catch("any"),
|
|
28
|
+
language: z.string().trim().regex(/^[a-z]{2,3}$/).optional().catch(void 0),
|
|
29
|
+
kinds: z.array(z.enum(RULE_KINDS)).optional().catch(void 0),
|
|
30
|
+
platforms: optionalPhrases,
|
|
31
|
+
forbid: optionalPhrases,
|
|
32
|
+
require: optionalPhrases,
|
|
33
|
+
allow: optionalPhrases,
|
|
34
|
+
people: z.literal("real").optional().catch(void 0)
|
|
35
|
+
});
|
|
36
|
+
function parseDrafts(answer) {
|
|
37
|
+
const rules = answer?.rules;
|
|
38
|
+
if (!Array.isArray(rules)) return [];
|
|
39
|
+
return rules.slice(0, MAX_DRAFTS).flatMap((raw) => {
|
|
40
|
+
const draft = Draft.safeParse(raw);
|
|
41
|
+
if (!draft.success) return [];
|
|
42
|
+
const { because: _because, ...rule } = draft.data;
|
|
43
|
+
return [
|
|
44
|
+
Object.fromEntries(
|
|
45
|
+
Object.entries(rule).filter(([, v]) => v !== void 0 && !(Array.isArray(v) && v.length === 0))
|
|
46
|
+
)
|
|
47
|
+
];
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
var MAX_DRAFTS = 3;
|
|
51
|
+
function draftRulesPrompt(note, ad) {
|
|
52
|
+
const where = [ad.kind ? `a ${ad.kind} ad` : "an ad", ad.platform ? `for ${ad.platform}` : ""].filter(Boolean).join(" ");
|
|
53
|
+
return [
|
|
54
|
+
`A person rejected ${where} and said, in their own words:`,
|
|
55
|
+
`"""${note}"""`,
|
|
56
|
+
"",
|
|
57
|
+
"List only the standing rules this note states for EVERY future ad of the company (at most 3). Most notes state none: they ask for changes to this ad (fix a word, move the logo, speed up a scene, redo the pieces), and a change to this ad is never a rule, however it is phrased. A rule is standing only when the note itself says it holds beyond this ad (always, never, in every video, in these creatives, these mistakes keep happening, it is the format of the programme, the rule of the other pieces), or it corrects how the company or what it sells must always be named.",
|
|
58
|
+
"For each rule, quote in `because` the note's own words that make it hold beyond this ad; a rule you cannot quote that for is not a rule. Return JSON only:",
|
|
59
|
+
'{"rules": [{"because": string, "text": string, "strength": "never" | "must" | "prefer", "applies": "copy" | "picture" | "cast" | "logo" | "voice" | "sound" | "subtitles" | "any", "language": string, "kinds": ["static" | "video"], "platforms": string[], "forbid": string[], "require": string[], "allow": string[], "people": "real" | null}]}',
|
|
60
|
+
"- text: the rule in one short sentence, in the note's own language and close to its words.",
|
|
61
|
+
'- strength: "never" for a ban, "must" for something every ad has to do, "prefer" for a taste.',
|
|
62
|
+
'- applies: what of the ad it is about ("copy" for its words, "picture", "cast" for who appears, "logo", "voice", "sound", "subtitles"), else "any".',
|
|
63
|
+
`- language: the note's language as a two-letter code ("es").`,
|
|
64
|
+
'- kinds and platforms: only when the note limits the rule to them ("en estos creativos de linkedin" gives platforms ["linkedin"]); else [].',
|
|
65
|
+
`- forbid: the exact words the rule bans in the ad's words, only when a word or phrase decides it ("100 % online", not "online" gives forbid ["online"], allow ["100 % online"]); else []. require: words every ad must say; usually []. allow: the right phrase that contains a banned word.`,
|
|
66
|
+
'- people: "real" only when the rule is that no AI-made or invented people appear; else null.',
|
|
67
|
+
'Return {"rules": []} when the note states no standing rule.'
|
|
68
|
+
].join("\n");
|
|
69
|
+
}
|
|
70
|
+
var RULE_DRAFT_MODEL = "google/gemini-3.5-flash";
|
|
71
|
+
var DRAFT_REQUEST = {
|
|
72
|
+
provider: { order: ["google-vertex"], allow_fallbacks: false },
|
|
73
|
+
seed: 0,
|
|
74
|
+
reasoning: { effort: "low" },
|
|
75
|
+
response_format: { type: "json_object" }
|
|
76
|
+
};
|
|
77
|
+
var DRAFT_TIMEOUT_MS = 3e4;
|
|
78
|
+
function modelRuleDrafter(cacheDir) {
|
|
79
|
+
return async (note, ad) => {
|
|
80
|
+
const prompt = draftRulesPrompt(note, ad);
|
|
81
|
+
const key = createHash("sha256").update(JSON.stringify([RULE_DRAFT_MODEL, prompt])).digest("hex").slice(0, 16);
|
|
82
|
+
const file = path.join(cacheDir, "rule-drafts", `${key}.json`);
|
|
83
|
+
const cached = await readFile(file, "utf8").then(
|
|
84
|
+
(raw) => parseDrafts(JSON.parse(raw)),
|
|
85
|
+
() => null
|
|
86
|
+
);
|
|
87
|
+
if (cached) return cached;
|
|
88
|
+
const spent = [];
|
|
89
|
+
const answer = await askAboutText(RULE_DRAFT_MODEL, prompt, (u) => spent.push(u), {
|
|
90
|
+
timeoutMs: DRAFT_TIMEOUT_MS,
|
|
91
|
+
request: DRAFT_REQUEST
|
|
92
|
+
}).catch(() => null);
|
|
93
|
+
await holdWorkspaceSpend(spent);
|
|
94
|
+
if (answer === null) return [];
|
|
95
|
+
await mkdir(path.dirname(file), { recursive: true }).catch(() => void 0);
|
|
96
|
+
await writeFile(file, JSON.stringify(answer), "utf8").catch(() => void 0);
|
|
97
|
+
return parseDrafts(answer);
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
async function ruleCandidates(note, ad, draft) {
|
|
101
|
+
const text = note?.trim();
|
|
102
|
+
if (!text) return [];
|
|
103
|
+
return await draft(text, ad).catch(() => []);
|
|
104
|
+
}
|
|
105
|
+
var candidatesDir = (cacheDir) => path.join(cacheDir, "rule-candidates");
|
|
106
|
+
async function saveCandidates(cacheDir, candidates) {
|
|
107
|
+
await mkdir(candidatesDir(cacheDir), { recursive: true });
|
|
108
|
+
return await Promise.all(
|
|
109
|
+
candidates.map(async (c) => {
|
|
110
|
+
const id = `rc-${createHash("sha256").update(JSON.stringify(c)).digest("hex").slice(0, 8)}`;
|
|
111
|
+
await writeFile(path.join(candidatesDir(cacheDir), `${id}.json`), JSON.stringify(c), "utf8");
|
|
112
|
+
return id;
|
|
113
|
+
})
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
async function loadCandidate(cacheDir, id) {
|
|
117
|
+
if (!/^rc-[0-9a-f]{8}$/.test(id)) return null;
|
|
118
|
+
return await readFile(path.join(candidatesDir(cacheDir), `${id}.json`), "utf8").then(
|
|
119
|
+
(raw) => JSON.parse(raw),
|
|
120
|
+
() => null
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
var REPEATED_ON = 2;
|
|
124
|
+
var REPEATED_NOTES = 3;
|
|
125
|
+
function repeatedReasons(notes, reasons, slug) {
|
|
126
|
+
return reasons.flatMap((reason) => {
|
|
127
|
+
const others = notes.filter((n) => n.creative !== slug && n.reasons.includes(reason));
|
|
128
|
+
const creatives = new Set(others.map((n) => n.creative)).size;
|
|
129
|
+
return creatives >= REPEATED_ON ? [
|
|
130
|
+
{
|
|
131
|
+
label: CREATIVE_FEEDBACK_REASON_LABELS[reason],
|
|
132
|
+
creatives,
|
|
133
|
+
notes: [...new Set(others.map((n) => n.note))].slice(0, REPEATED_NOTES)
|
|
134
|
+
}
|
|
135
|
+
] : [];
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
function ruleCandidateHints(drafted, repeated) {
|
|
139
|
+
const asks = drafted.map(
|
|
140
|
+
(d) => `Their words state a rule for every ad: "${d.text}". Ask them once, in their language: make this a rule for every ad from now on? Only on yes: \`baker creatives rules add --candidate ${d.id}\` (reword it with --text if they correct it). On no, never ask again in this chat.`
|
|
141
|
+
);
|
|
142
|
+
const patterns = repeated.map(
|
|
143
|
+
(r) => `"${r.label}" was also the reason on ${r.creatives} other ads (their words: ${r.notes.map((n) => `"${n}"`).join("; ")}). ${drafted.length > 0 ? "Say so when you ask." : 'Ask them once whether there is a rule for every ad behind it; on yes, `baker creatives rules add --text "<the rule, in their words>" \u2026`.'}`
|
|
144
|
+
);
|
|
145
|
+
return [...asks, ...patterns];
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
export {
|
|
149
|
+
modelRuleDrafter,
|
|
150
|
+
ruleCandidates,
|
|
151
|
+
saveCandidates,
|
|
152
|
+
loadCandidate,
|
|
153
|
+
repeatedReasons,
|
|
154
|
+
ruleCandidateHints
|
|
155
|
+
};
|
|
156
|
+
//# sourceMappingURL=chunk-RDIZCSTV.js.map
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import {
|
|
2
|
+
RULES_DIR,
|
|
3
|
+
SAME_WORDS,
|
|
4
|
+
frontmatterOf,
|
|
5
|
+
parseIdea,
|
|
6
|
+
parseInsight
|
|
7
|
+
} from "./chunk-NOCBNING.js";
|
|
8
|
+
import {
|
|
9
|
+
rememberedJev
|
|
10
|
+
} from "./chunk-HZ7QUFUW.js";
|
|
11
|
+
import {
|
|
12
|
+
holdUnbilledSpend
|
|
13
|
+
} from "./chunk-T4HIFVNK.js";
|
|
14
|
+
|
|
15
|
+
// src/commands/creatives/ideas-judgments.ts
|
|
16
|
+
var STATISTIC_QUESTION = `\`quote\` was filed as something a customer said. Is it instead a statistic about a group of people, a share or a figure from a survey, a study or an article ("39% of UK homeowners say\u2026", "a quarter of buyers\u2026", "1 in 3 owners\u2026"), rather than one person's own words about their own experience? A person giving their own number ("My bill dropped 40%") is their own words. The quote may be in any language.`;
|
|
17
|
+
var STATISTIC_HELD = 0.65;
|
|
18
|
+
var SAME_MESSAGE_QUESTION = `\`a\` and \`b\` are the messages of two ads. Do they make the same core promise to the viewer (the same benefit, the same reason to act), even when one adds a detail or a few words, says it in other words, or is in another language? Two messages that promise different things about the same product are not the same.`;
|
|
19
|
+
var SAME_MESSAGE_HELD = 0.42;
|
|
20
|
+
async function withStatisticsRead(insights, ask) {
|
|
21
|
+
const observed = insights.filter((i) => i.status === "observed");
|
|
22
|
+
if (observed.length === 0) return [...insights];
|
|
23
|
+
const answers = await ask(observed.map((i) => ({ instructions: { quote: i.quote, question: STATISTIC_QUESTION } })));
|
|
24
|
+
if (answers === null) return [...insights];
|
|
25
|
+
const statistics = new Set(observed.filter((_, i) => (answers[i] ?? 0) >= STATISTIC_HELD).map((i) => i.id));
|
|
26
|
+
return insights.map((i) => statistics.has(i.id) ? { ...i, status: "interpreted" } : i);
|
|
27
|
+
}
|
|
28
|
+
async function sameMessageRead(ideas, ask) {
|
|
29
|
+
const failed = ideas.filter((i) => i.status === "failed");
|
|
30
|
+
const pairs = failed.flatMap(
|
|
31
|
+
(f) => ideas.filter((i) => i.id !== f.id && !SAME_WORDS(i.message, f.message)).map((i) => [f.message, i.message])
|
|
32
|
+
);
|
|
33
|
+
if (pairs.length === 0) return SAME_WORDS;
|
|
34
|
+
const answers = await ask(pairs.map(([a, b]) => ({ instructions: { a, b, question: SAME_MESSAGE_QUESTION } })));
|
|
35
|
+
if (answers === null) return SAME_WORDS;
|
|
36
|
+
const same = new Set(
|
|
37
|
+
pairs.filter((_, i) => (answers[i] ?? 0) >= SAME_MESSAGE_HELD).map(([a, b]) => `${a}\0${b}`)
|
|
38
|
+
);
|
|
39
|
+
return (a, b) => SAME_WORDS(a, b) || same.has(`${a}\0${b}`) || same.has(`${b}\0${a}`);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// src/commands/creatives/ideas-workspace.ts
|
|
43
|
+
import { readdir, readFile } from "fs/promises";
|
|
44
|
+
import path from "path";
|
|
45
|
+
var IDEAS_DIR = path.join("src", "creatives", "_ideas");
|
|
46
|
+
var INSIGHTS_DIR = path.join("src", "content", "insights");
|
|
47
|
+
async function markdownFiles(dir, recursive = false) {
|
|
48
|
+
const entries = await readdir(dir, { recursive }).catch(() => []);
|
|
49
|
+
return entries.filter((f) => f.endsWith(".md")).sort();
|
|
50
|
+
}
|
|
51
|
+
var idOf = (file) => file.replace(/\\/g, "/").replace(/\.md$/, "");
|
|
52
|
+
function workspaceIdeasJudge(root) {
|
|
53
|
+
const cacheDir = path.join(root, "canvas", ".cache");
|
|
54
|
+
const spent = [];
|
|
55
|
+
return {
|
|
56
|
+
ask: rememberedJev(path.join(cacheDir, "ideas-answers.json"), (u) => spent.push(u)),
|
|
57
|
+
done: () => holdUnbilledSpend(cacheDir, spent.splice(0)).catch(() => void 0)
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
async function readInsights(root, opts = {}) {
|
|
61
|
+
const dir = path.join(root, INSIGHTS_DIR);
|
|
62
|
+
const insights = [];
|
|
63
|
+
for (const file of await markdownFiles(dir, true)) {
|
|
64
|
+
const insight = parseInsight(idOf(file), await readFile(path.join(dir, file), "utf8").catch(() => ""));
|
|
65
|
+
if (insight) insights.push(insight);
|
|
66
|
+
}
|
|
67
|
+
if (opts.ask) return withStatisticsRead(insights, opts.ask);
|
|
68
|
+
const judge = workspaceIdeasJudge(root);
|
|
69
|
+
const read = await withStatisticsRead(insights, judge.ask);
|
|
70
|
+
await judge.done();
|
|
71
|
+
return read;
|
|
72
|
+
}
|
|
73
|
+
async function readIdeas(root) {
|
|
74
|
+
const dir = path.join(root, IDEAS_DIR);
|
|
75
|
+
const ideas = [];
|
|
76
|
+
const unreadable = [];
|
|
77
|
+
for (const file of await markdownFiles(dir)) {
|
|
78
|
+
const id = idOf(file);
|
|
79
|
+
const parsed = parseIdea(id, await readFile(path.join(dir, file), "utf8").catch(() => ""));
|
|
80
|
+
if (parsed.idea) ideas.push(parsed.idea);
|
|
81
|
+
else unreadable.push({ id, problems: parsed.problems });
|
|
82
|
+
}
|
|
83
|
+
return { ideas, unreadable };
|
|
84
|
+
}
|
|
85
|
+
async function readPersonaIds(root) {
|
|
86
|
+
return (await markdownFiles(path.join(root, "src", "content", "personas"), true)).map(idOf);
|
|
87
|
+
}
|
|
88
|
+
var MAX_KNOWLEDGE_CHARS = 2e5;
|
|
89
|
+
async function readKnowledgeCorpus(root) {
|
|
90
|
+
const parts = [];
|
|
91
|
+
const company = await readFile(path.join(root, "COMPANY.md"), "utf8").catch(() => "");
|
|
92
|
+
if (company) parts.push(company);
|
|
93
|
+
const content = path.join(root, "src", "content");
|
|
94
|
+
const insights = path.relative(content, path.join(root, INSIGHTS_DIR));
|
|
95
|
+
const rules = path.relative(content, path.join(root, RULES_DIR));
|
|
96
|
+
const files = (await markdownFiles(content, true)).filter((f) => {
|
|
97
|
+
const file = f.replace(/\\/g, "/");
|
|
98
|
+
return !file.startsWith(`${insights}/`) && !file.startsWith(`${rules}/`);
|
|
99
|
+
});
|
|
100
|
+
for (const file of files) {
|
|
101
|
+
parts.push(await readFile(path.join(content, file), "utf8").catch(() => ""));
|
|
102
|
+
if (parts.join("").length > MAX_KNOWLEDGE_CHARS) break;
|
|
103
|
+
}
|
|
104
|
+
return parts.join("\n").slice(0, MAX_KNOWLEDGE_CHARS);
|
|
105
|
+
}
|
|
106
|
+
async function readCreativeRecords(root) {
|
|
107
|
+
const dir = path.join(root, "src", "creatives");
|
|
108
|
+
const entries = await readdir(dir, { withFileTypes: true }).catch(() => []);
|
|
109
|
+
const records = [];
|
|
110
|
+
for (const entry of entries) {
|
|
111
|
+
if (!entry.isDirectory() || entry.name.startsWith("_")) continue;
|
|
112
|
+
const raw = await readFile(path.join(dir, entry.name, "_definition.md"), "utf8").catch(() => null);
|
|
113
|
+
if (raw === null) continue;
|
|
114
|
+
const fm = frontmatterOf(raw) ?? {};
|
|
115
|
+
const pick = (key) => typeof fm[key] === "string" && fm[key] ? { [key]: fm[key] } : {};
|
|
116
|
+
records.push({
|
|
117
|
+
slug: entry.name,
|
|
118
|
+
...pick("status"),
|
|
119
|
+
...pick("idea"),
|
|
120
|
+
...pick("awareness"),
|
|
121
|
+
...pick("angle"),
|
|
122
|
+
...pick("kind")
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
return records;
|
|
126
|
+
}
|
|
127
|
+
var SHOWN_STATUSES = /* @__PURE__ */ new Set(["rendered", "published"]);
|
|
128
|
+
function coverageOf(ideas, creatives) {
|
|
129
|
+
const live = ideas.filter((i) => i.status === "built" || i.status === "testing" || i.status === "winner");
|
|
130
|
+
const awareness = new Set(live.map((i) => i.awareness));
|
|
131
|
+
for (const creative of creatives) {
|
|
132
|
+
if (creative.awareness && SHOWN_STATUSES.has(creative.status ?? "")) awareness.add(creative.awareness);
|
|
133
|
+
}
|
|
134
|
+
return { coveredAwareness: [...awareness].sort(), closersLive: live.filter((i) => i.job === "closer").length };
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
export {
|
|
138
|
+
sameMessageRead,
|
|
139
|
+
IDEAS_DIR,
|
|
140
|
+
workspaceIdeasJudge,
|
|
141
|
+
readInsights,
|
|
142
|
+
readIdeas,
|
|
143
|
+
readPersonaIds,
|
|
144
|
+
readKnowledgeCorpus,
|
|
145
|
+
readCreativeRecords,
|
|
146
|
+
coverageOf
|
|
147
|
+
};
|
|
148
|
+
//# sourceMappingURL=chunk-RQ43VL2X.js.map
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import {
|
|
2
|
+
storeProductReads
|
|
3
|
+
} from "./chunk-SO7NANAH.js";
|
|
4
|
+
import {
|
|
5
|
+
coverageOf,
|
|
6
|
+
readCreativeRecords,
|
|
7
|
+
readIdeas,
|
|
8
|
+
readInsights,
|
|
9
|
+
readKnowledgeCorpus,
|
|
10
|
+
readPersonaIds,
|
|
11
|
+
sameMessageRead,
|
|
12
|
+
workspaceIdeasJudge
|
|
13
|
+
} from "./chunk-RQ43VL2X.js";
|
|
14
|
+
import {
|
|
15
|
+
readAllRules
|
|
16
|
+
} from "./chunk-CNZ5KS4I.js";
|
|
17
|
+
import {
|
|
18
|
+
IDEA_ANGLES,
|
|
19
|
+
IDEA_FORMATS,
|
|
20
|
+
checkIdeas
|
|
21
|
+
} from "./chunk-NOCBNING.js";
|
|
22
|
+
import {
|
|
23
|
+
findWorkspaceRoot
|
|
24
|
+
} from "./chunk-CGLNCFAG.js";
|
|
25
|
+
import {
|
|
26
|
+
selectRules
|
|
27
|
+
} from "./chunk-YNWBIAXJ.js";
|
|
28
|
+
import {
|
|
29
|
+
marketFromCompanyDoc
|
|
30
|
+
} from "./chunk-2WZI36D3.js";
|
|
31
|
+
import {
|
|
32
|
+
registerSchema,
|
|
33
|
+
writeJson
|
|
34
|
+
} from "./chunk-NXNOXZGB.js";
|
|
35
|
+
|
|
36
|
+
// src/commands/creatives/ideas.ts
|
|
37
|
+
import { readFile } from "fs/promises";
|
|
38
|
+
import path from "path";
|
|
39
|
+
import { defineCommand } from "citty";
|
|
40
|
+
var BUILD_NEXT = 3;
|
|
41
|
+
var DESCRIPTION = `Check and rank the ad ideas in src/creatives/_ideas/: is each backed by something a customer said (src/content/insights/), does it claim only what the Knowledge holds, is it a different ad from the others, does it fill a gap the live ads leave. Free and local.
|
|
42
|
+
|
|
43
|
+
Start here, after writing 4-8 idea files (one per file: who, message, evidence, awareness, angle, shows, job, why; format only for a video or a container the person asked for; plus product: <handle> when the ad sells a store product, so the store's prices count as sourced):
|
|
44
|
+
baker creatives ideas # ranked, with problems; build_next names the ones to make
|
|
45
|
+
baker creatives make <idea> # then build each one in build_next
|
|
46
|
+
An idea with a problem is not built until it is fixed. An idea with no evidence is an explore bet: it may be built, and says so.`;
|
|
47
|
+
var ARGS = {
|
|
48
|
+
full: {
|
|
49
|
+
type: "boolean",
|
|
50
|
+
description: "Every idea with its warnings and gaps, and the allowed angle and format values",
|
|
51
|
+
required: false,
|
|
52
|
+
default: false
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
registerSchema({ command: "creatives.ideas", description: DESCRIPTION, args: ARGS });
|
|
56
|
+
function ideasHints(report) {
|
|
57
|
+
const hints = [];
|
|
58
|
+
const toBuild = report.ideas.filter((i) => i.status === "idea");
|
|
59
|
+
if (toBuild.length === 0 && report.unreadable.length === 0) {
|
|
60
|
+
hints.push(
|
|
61
|
+
"No ideas yet. Write 4-8 files in src/creatives/_ideas/<idea>.md (who, message, evidence, awareness, angle, shows, job, why), then run this again."
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
if (report.unreadable.length > 0) {
|
|
65
|
+
hints.push(`Fix ${report.unreadable.map((u) => u.id).join(", ")}: each names what is missing or unknown.`);
|
|
66
|
+
}
|
|
67
|
+
const blocked = toBuild.filter((i) => i.problems.length > 0);
|
|
68
|
+
if (blocked.length > 0) hints.push(`Fix before building: ${blocked.map((i) => i.id).join(", ")}.`);
|
|
69
|
+
if (report.observedCount < 3) {
|
|
70
|
+
hints.push(
|
|
71
|
+
"Few customer quotes on file: run `baker research customers` so ideas stand on what customers said; until then they are explore bets."
|
|
72
|
+
);
|
|
73
|
+
} else if (toBuild.length > 0 && toBuild.every((i) => i.evidence === "explore")) {
|
|
74
|
+
hints.push("No idea cites an insight: put the insight ids that back each one in its `evidence`.");
|
|
75
|
+
}
|
|
76
|
+
const next = buildNext(report.ideas);
|
|
77
|
+
if (next.length === 1) hints.push(`Build: \`baker creatives make ${next[0]}\`.`);
|
|
78
|
+
if (next.length > 1)
|
|
79
|
+
hints.push(
|
|
80
|
+
`Build ${next.join(", ")} at once: one \`creative-producer\` per idea, all spawned in one message in the background, each given its idea id, and handle each as it returns. Never build them one after another: each render takes minutes. Edited an idea after this check? Run \`baker creatives ideas\` again first: a producer cannot build an idea with a problem.`
|
|
81
|
+
);
|
|
82
|
+
return hints;
|
|
83
|
+
}
|
|
84
|
+
function buildNext(ideas, count = BUILD_NEXT) {
|
|
85
|
+
const ready = ideas.filter((i) => i.status === "idea" && i.problems.length === 0);
|
|
86
|
+
const firstBet = ready.find((i) => i.evidence === "explore");
|
|
87
|
+
return ready.filter((i) => i.evidence !== "explore" || i === firstBet).slice(0, count).map((i) => i.id);
|
|
88
|
+
}
|
|
89
|
+
function compactIdea(check) {
|
|
90
|
+
return {
|
|
91
|
+
idea: check.id,
|
|
92
|
+
status: check.status,
|
|
93
|
+
evidence: check.evidence,
|
|
94
|
+
...check.quote ? { quote: check.quote.length > 120 ? `${check.quote.slice(0, 117)}...` : check.quote } : {},
|
|
95
|
+
awareness: check.awareness,
|
|
96
|
+
angle: check.angle,
|
|
97
|
+
...check.shows ? { shows: check.shows } : {},
|
|
98
|
+
...check.format ? { format: check.format } : {},
|
|
99
|
+
platforms: check.platforms ?? "unset",
|
|
100
|
+
...check.problems.length > 0 ? { problems: check.problems } : {},
|
|
101
|
+
...check.warnings.length > 0 ? { warnings: check.warnings } : {}
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
async function ideasReport(root, opts = {}) {
|
|
105
|
+
const judge = opts.ask ? { ask: opts.ask, done: () => Promise.resolve() } : workspaceIdeasJudge(root);
|
|
106
|
+
const [{ ideas, unreadable }, insights, knowledge, personas, creatives, rules, companyDoc] = await Promise.all([
|
|
107
|
+
readIdeas(root),
|
|
108
|
+
readInsights(root, { ask: judge.ask }),
|
|
109
|
+
readKnowledgeCorpus(root),
|
|
110
|
+
readPersonaIds(root),
|
|
111
|
+
readCreativeRecords(root),
|
|
112
|
+
readAllRules(root).then((all) => selectRules(all, {})),
|
|
113
|
+
readFile(path.join(root, "COMPANY.md"), "utf8").catch(() => null)
|
|
114
|
+
]);
|
|
115
|
+
const language = marketFromCompanyDoc(companyDoc)?.language;
|
|
116
|
+
const [sameMessage, products] = await Promise.all([
|
|
117
|
+
sameMessageRead(ideas, judge.ask),
|
|
118
|
+
storeProductReads(
|
|
119
|
+
ideas.map((i) => i.product),
|
|
120
|
+
opts.readProduct
|
|
121
|
+
)
|
|
122
|
+
]);
|
|
123
|
+
await judge.done();
|
|
124
|
+
const checked = checkIdeas({
|
|
125
|
+
ideas,
|
|
126
|
+
insights,
|
|
127
|
+
knowledge,
|
|
128
|
+
personas,
|
|
129
|
+
sameMessage,
|
|
130
|
+
products,
|
|
131
|
+
rules,
|
|
132
|
+
...language ? { language } : {},
|
|
133
|
+
...coverageOf(ideas, creatives)
|
|
134
|
+
});
|
|
135
|
+
return {
|
|
136
|
+
ideas: checked,
|
|
137
|
+
unreadable,
|
|
138
|
+
insightCount: insights.length,
|
|
139
|
+
observedCount: insights.filter((i) => i.status === "observed").length
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
var ideasCommand = defineCommand({
|
|
143
|
+
meta: { name: "ideas", description: DESCRIPTION },
|
|
144
|
+
args: ARGS,
|
|
145
|
+
async run({ args }) {
|
|
146
|
+
const root = findWorkspaceRoot(process.cwd()) ?? process.cwd();
|
|
147
|
+
const report = await ideasReport(root);
|
|
148
|
+
const full = args.full === true;
|
|
149
|
+
writeJson({
|
|
150
|
+
ok: true,
|
|
151
|
+
data: {
|
|
152
|
+
build_next: buildNext(report.ideas),
|
|
153
|
+
ideas: full ? report.ideas : report.ideas.map(compactIdea),
|
|
154
|
+
...report.unreadable.length > 0 ? { unreadable: report.unreadable } : {},
|
|
155
|
+
customer_quotes: { total: report.insightCount, observed: report.observedCount },
|
|
156
|
+
...full ? { allowed: { angle: IDEA_ANGLES, format: IDEA_FORMATS } } : {}
|
|
157
|
+
},
|
|
158
|
+
hints: ideasHints(report)
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
export {
|
|
164
|
+
ideasHints,
|
|
165
|
+
buildNext,
|
|
166
|
+
compactIdea,
|
|
167
|
+
ideasReport,
|
|
168
|
+
ideasCommand
|
|
169
|
+
};
|
|
170
|
+
//# sourceMappingURL=chunk-S4QGD7PV.js.map
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import {
|
|
2
|
+
RENDER_REVIEW_MODEL,
|
|
3
|
+
askAboutImages,
|
|
4
|
+
buildRulesReviewPrompt,
|
|
5
|
+
classifyRuleFindings,
|
|
6
|
+
reviewedRules,
|
|
7
|
+
rulesSystem
|
|
8
|
+
} from "./chunk-YNWBIAXJ.js";
|
|
9
|
+
|
|
10
|
+
// src/engine/nodes/local/lib/confirm-blocking.ts
|
|
11
|
+
var cutByFrame = (f) => f.kind?.defect === "cut";
|
|
12
|
+
async function confirmBlocking(findings, stills, formats, ask) {
|
|
13
|
+
const claims = findings.filter((f) => f.severity === "blocking" && !cutByFrame(f));
|
|
14
|
+
if (claims.length === 0 || stills.length === 0) return [...findings];
|
|
15
|
+
const prompt = [
|
|
16
|
+
`These are the finished sizes of one ad, in order: ${formats.map((f, i) => `Image ${i + 1} is the ${f}`).join("; ")}.`,
|
|
17
|
+
"A reviewer reported each claim below. Look again at the size each one names (and, for a claim comparing sizes, at the others) and answer true only when the defect is plainly there for someone looking at it on a phone.",
|
|
18
|
+
"Answer false when the thing is not there, when it is an ordinary part of the scene (a second house, a neighbour's roof, a reflection), or when the sizes it compares show the same thing.",
|
|
19
|
+
...claims.map((c, i) => `${i + 1}. ${c.what}`),
|
|
20
|
+
`Reply with only this JSON: {"answers":[true|false, ...]}, one answer per claim, in order.`
|
|
21
|
+
].join("\n");
|
|
22
|
+
const answer = await ask([...stills], prompt).catch(() => null);
|
|
23
|
+
const answers = answer?.answers;
|
|
24
|
+
if (!Array.isArray(answers) || answers.length !== claims.length) return [...findings];
|
|
25
|
+
const unconfirmed = new Set(claims.filter((_, i) => answers[i] === false));
|
|
26
|
+
return findings.map((f) => unconfirmed.has(f) ? { ...f, severity: "warning" } : f);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// src/engine/nodes/local/lib/rules-review.ts
|
|
30
|
+
var RULES_REVIEW_TIMEOUT_MS = 12e4;
|
|
31
|
+
async function reviewAgainstRules(opts) {
|
|
32
|
+
const rules = reviewedRules(opts.rules);
|
|
33
|
+
if (rules.length === 0 || opts.stills.length === 0) return [];
|
|
34
|
+
const system = rulesSystem(rules);
|
|
35
|
+
const ask = (images, prompt) => askAboutImages(RENDER_REVIEW_MODEL, images, prompt, opts.onSpend, RULES_REVIEW_TIMEOUT_MS, void 0, system);
|
|
36
|
+
const answer = await ask([...opts.stills], buildRulesReviewPrompt({ formats: opts.formats, rules }));
|
|
37
|
+
if (answer === null) return null;
|
|
38
|
+
return await confirmBlocking(classifyRuleFindings(answer, rules), opts.stills, opts.formats, ask);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export {
|
|
42
|
+
cutByFrame,
|
|
43
|
+
confirmBlocking,
|
|
44
|
+
reviewAgainstRules
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=chunk-S7WFZYKP.js.map
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import {
|
|
2
|
+
MODEL_REGISTRY,
|
|
3
|
+
isRegisteredModel
|
|
4
|
+
} from "./chunk-F3CZFUXZ.js";
|
|
5
|
+
|
|
6
|
+
// src/commands/canvas/scaffold-common.ts
|
|
7
|
+
import { access, readFile } from "fs/promises";
|
|
8
|
+
|
|
9
|
+
// src/commands/canvas/composition-path.ts
|
|
10
|
+
import { existsSync } from "fs";
|
|
11
|
+
import path from "path";
|
|
12
|
+
function resolveShippedCanvasDir(name, startDir, exists = existsSync, maxDepth = 8) {
|
|
13
|
+
const rel = path.join("canvas", name);
|
|
14
|
+
let dir = startDir;
|
|
15
|
+
for (let i = 0; i < maxDepth; i++) {
|
|
16
|
+
const candidate = path.join(dir, rel);
|
|
17
|
+
if (exists(path.join(candidate, "meta.json"))) return candidate;
|
|
18
|
+
const parent = path.dirname(dir);
|
|
19
|
+
if (parent === dir) break;
|
|
20
|
+
dir = parent;
|
|
21
|
+
}
|
|
22
|
+
return path.resolve(startDir, "../../../", rel);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// src/commands/canvas/scaffold-common.ts
|
|
26
|
+
var SHIPPED_OVERLAY_COMPOSITION_DIR = resolveShippedCanvasDir(
|
|
27
|
+
"video-overlay-composition",
|
|
28
|
+
import.meta.dirname
|
|
29
|
+
);
|
|
30
|
+
var SHIPPED_CAPTIONS_DIR = resolveShippedCanvasDir("tiktok-captions-composition", import.meta.dirname);
|
|
31
|
+
function resolveModel(kind, requested, fallback) {
|
|
32
|
+
const model = requested ? String(requested) : fallback;
|
|
33
|
+
if (isRegisteredModel(kind, model)) return model;
|
|
34
|
+
const known = Object.keys(MODEL_REGISTRY[kind]).join(", ");
|
|
35
|
+
throw new Error(`"${model}" is not a ${kind} model. Use one of: ${known}`);
|
|
36
|
+
}
|
|
37
|
+
async function loadAssetText(ref, label) {
|
|
38
|
+
const r = ref;
|
|
39
|
+
if (typeof r?.path === "string") return readFile(r.path, "utf8");
|
|
40
|
+
if (typeof r?.url === "string") {
|
|
41
|
+
const res = await fetch(r.url);
|
|
42
|
+
if (!res.ok) throw new Error(`failed to fetch ${label} (${res.status})`);
|
|
43
|
+
return res.text();
|
|
44
|
+
}
|
|
45
|
+
throw new Error(`${label}: output had no readable path or url`);
|
|
46
|
+
}
|
|
47
|
+
function parseElements(raw) {
|
|
48
|
+
const parsed = JSON.parse(raw);
|
|
49
|
+
if (Array.isArray(parsed)) return parsed;
|
|
50
|
+
if (parsed && typeof parsed === "object" && Array.isArray(parsed.elements)) {
|
|
51
|
+
return parsed.elements;
|
|
52
|
+
}
|
|
53
|
+
return [];
|
|
54
|
+
}
|
|
55
|
+
function fail(code, message, fix) {
|
|
56
|
+
process.stderr.write(`${JSON.stringify({ ok: false, error: { code, message, ...fix ? { fix } : {} } }, null, 2)}
|
|
57
|
+
`);
|
|
58
|
+
process.exit(2);
|
|
59
|
+
}
|
|
60
|
+
function fileExists(target) {
|
|
61
|
+
return access(target).then(
|
|
62
|
+
() => true,
|
|
63
|
+
() => false
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export {
|
|
68
|
+
SHIPPED_OVERLAY_COMPOSITION_DIR,
|
|
69
|
+
SHIPPED_CAPTIONS_DIR,
|
|
70
|
+
resolveModel,
|
|
71
|
+
loadAssetText,
|
|
72
|
+
parseElements,
|
|
73
|
+
fail,
|
|
74
|
+
fileExists
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=chunk-SIKCVWM3.js.map
|