@koda-sl/baker-cli 0.450.0-dev.b454c3dd2 → 0.450.0-dev.d6701597d
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 +10 -11
- package/dist/{account-XQXC7BR6.js → account-AL2ZDSR7.js} +4 -5
- package/dist/{account-XQXC7BR6.js.map → account-AL2ZDSR7.js.map} +1 -1
- package/dist/{accounts-722UY53A.js → accounts-HAFCLSR5.js} +3 -4
- package/dist/{accounts-722UY53A.js.map → accounts-HAFCLSR5.js.map} +1 -1
- package/dist/{accounts-E67BMK7T.js → accounts-O5MFO3QQ.js} +5 -6
- package/dist/{accounts-E67BMK7T.js.map → accounts-O5MFO3QQ.js.map} +1 -1
- package/dist/{actions-6TQMSVWD.js → actions-P35MEMGN.js} +18 -18
- package/dist/{add-2BEGRHUX.js → add-5GAN6CVO.js} +5 -28
- package/dist/add-5GAN6CVO.js.map +1 -0
- package/dist/{add-LEMKEOPO.js → add-6DTC6X5G.js} +2 -3
- package/dist/{add-LEMKEOPO.js.map → add-6DTC6X5G.js.map} +1 -1
- package/dist/{ads-AGYCVD62.js → ads-73PGA4YC.js} +4 -4
- package/dist/{advertisers-2VQKAYKG.js → advertisers-AE75CGVE.js} +3 -4
- package/dist/{advertisers-2VQKAYKG.js.map → advertisers-AE75CGVE.js.map} +1 -1
- package/dist/{analytics-IFELDWLL.js → analytics-FKCXIMPO.js} +20 -24
- package/dist/analytics-FKCXIMPO.js.map +1 -0
- package/dist/{analytics-OH5QEH7F.js → analytics-FPWQQGRM.js} +3 -4
- package/dist/{analytics-OH5QEH7F.js.map → analytics-FPWQQGRM.js.map} +1 -1
- package/dist/{assign-PTUJUCEL.js → assign-ABN2AQ4J.js} +3 -4
- package/dist/{assign-PTUJUCEL.js.map → assign-ABN2AQ4J.js.map} +1 -1
- package/dist/{audience-size-LRI6GJRT.js → audience-size-GNBJY35X.js} +3 -4
- package/dist/{audience-size-LRI6GJRT.js.map → audience-size-GNBJY35X.js.map} +1 -1
- package/dist/{audit-HWP7OPB7.js → audit-3VS63TBW.js} +3 -4
- package/dist/{audit-HWP7OPB7.js.map → audit-3VS63TBW.js.map} +1 -1
- package/dist/{autocomplete-J6DHU6MR.js → autocomplete-VS3XG3B7.js} +3 -4
- package/dist/{autocomplete-J6DHU6MR.js.map → autocomplete-VS3XG3B7.js.map} +1 -1
- package/dist/{avatars-467OSBD6.js → avatars-EKCKHCC3.js} +4 -4
- package/dist/{bid-pricing-EO5WLHGV.js → bid-pricing-Q72B65AY.js} +3 -4
- package/dist/{bid-pricing-EO5WLHGV.js.map → bid-pricing-Q72B65AY.js.map} +1 -1
- package/dist/{brand-YRTEPGBK.js → brand-C6PFGGQN.js} +2 -2
- package/dist/{brief-OSFJ2V7F.js → brief-YFJHQ5VQ.js} +7 -8
- package/dist/{brief-OSFJ2V7F.js.map → brief-YFJHQ5VQ.js.map} +1 -1
- package/dist/{campaign-groups-PQ6KSQJR.js → campaign-groups-KFFYQPU3.js} +8 -9
- package/dist/{campaign-groups-PQ6KSQJR.js.map → campaign-groups-KFFYQPU3.js.map} +1 -1
- package/dist/{campaign-writes-5OVLUD5E.js → campaign-writes-FHOS5XZY.js} +3 -4
- package/dist/{campaign-writes-5OVLUD5E.js.map → campaign-writes-FHOS5XZY.js.map} +1 -1
- package/dist/{campaigns-6T3NSUT2.js → campaigns-2NHWBF5C.js} +11 -12
- package/dist/{campaigns-6T3NSUT2.js.map → campaigns-2NHWBF5C.js.map} +1 -1
- package/dist/{campaigns-OYMXDGWX.js → campaigns-KZYZTXDS.js} +5 -5
- package/dist/{canvas-YQFG52IG.js → canvas-5NB27FX2.js} +13 -13
- package/dist/{capabilities-PXBKUN2G.js → capabilities-DJFTRJKS.js} +3 -4
- package/dist/{capabilities-PXBKUN2G.js.map → capabilities-DJFTRJKS.js.map} +1 -1
- package/dist/{catalog-XLXIM7IW.js → catalog-VSSY6FGI.js} +4 -4
- package/dist/{chats-UK47UE7C.js → chats-D2CSDX5Q.js} +3 -4
- package/dist/{chats-UK47UE7C.js.map → chats-D2CSDX5Q.js.map} +1 -1
- package/dist/{chunk-5ZNTADVR.js → chunk-3G3ZDLMI.js} +2 -2
- package/dist/{chunk-SJYEY5MV.js → chunk-3HJLHTWP.js} +3 -12
- package/dist/{chunk-SJYEY5MV.js.map → chunk-3HJLHTWP.js.map} +1 -1
- package/dist/{chunk-ZDMTXQ2Q.js → chunk-3IBYKLXR.js} +2 -2
- package/dist/{chunk-CWYAELVG.js → chunk-464O4MT2.js} +2 -2
- package/dist/{chunk-NA63BH7V.js → chunk-4AUMTNVB.js} +3 -3
- package/dist/{chunk-NDEE6G2J.js → chunk-4BQXAE7Z.js} +2 -2
- package/dist/{chunk-2AOE2MZQ.js → chunk-5ZDLTE5T.js} +3 -3
- package/dist/{chunk-ULG4QRTV.js → chunk-6NB47MRW.js} +2 -2
- package/dist/{chunk-24EB7EDR.js → chunk-7YCRFMXF.js} +3 -3
- package/dist/{chunk-WGUQHAJY.js → chunk-A4LOJ2VD.js} +2 -2
- package/dist/{chunk-6F7DVPOS.js → chunk-AEOSAVVL.js} +3 -3
- package/dist/{chunk-MACCF4JZ.js → chunk-CMPEUZOR.js} +22 -16
- package/dist/{chunk-MACCF4JZ.js.map → chunk-CMPEUZOR.js.map} +1 -1
- package/dist/{chunk-N4LAYIIN.js → chunk-CSYSX4D2.js} +2 -2
- package/dist/{chunk-RX2DKU3W.js → chunk-DGUNI37S.js} +2 -2
- package/dist/{chunk-QE7W555R.js → chunk-DWHIOO7E.js} +12 -163
- package/dist/chunk-DWHIOO7E.js.map +1 -0
- package/dist/{chunk-FPOGPFAG.js → chunk-EBWBG6YV.js} +51 -24
- package/dist/chunk-EBWBG6YV.js.map +1 -0
- package/dist/{chunk-NYIGXDUG.js → chunk-EDLZGTGN.js} +39 -1
- package/dist/chunk-EDLZGTGN.js.map +1 -0
- package/dist/{chunk-I3ZR655O.js → chunk-IR6D7K4H.js} +2 -2
- package/dist/{chunk-FUHN4MFY.js → chunk-JQJDXPCO.js} +2 -2
- package/dist/{chunk-7CTMH5AK.js → chunk-KAUOHQTF.js} +3 -3
- package/dist/{chunk-VYQ3QJ3C.js → chunk-KHRXPQID.js} +2 -2
- package/dist/{chunk-6Y7ZBENQ.js → chunk-LECGCWT5.js} +6 -6
- package/dist/{chunk-5WCSKQ7Z.js → chunk-LZ73CZGP.js} +6 -6
- package/dist/{chunk-R25YLW6H.js → chunk-MELOSESI.js} +2 -2
- package/dist/{chunk-DCRPXOJJ.js → chunk-MXYBTMKB.js} +2 -2
- package/dist/{chunk-54C6YDGJ.js → chunk-NPY4QUMQ.js} +2 -2
- package/dist/{chunk-LYQJ4PZW.js → chunk-OQ6663F4.js} +5 -5
- package/dist/{chunk-H3427GPU.js → chunk-OZRUJVIQ.js} +2 -2
- package/dist/{chunk-KMKEYI37.js → chunk-Q2V6E6SL.js} +3 -3
- package/dist/{chunk-VL43TNIP.js → chunk-QRP3PXWN.js} +2 -2
- package/dist/{chunk-HDLYPC6K.js → chunk-RPUSTYHL.js} +3 -5
- package/dist/{chunk-HDLYPC6K.js.map → chunk-RPUSTYHL.js.map} +1 -1
- package/dist/{chunk-C46GUI2S.js → chunk-RZBEK2VE.js} +2 -2
- package/dist/{chunk-2VPBIT65.js → chunk-S3A3YOKO.js} +8 -8
- package/dist/{chunk-FYGR3I2A.js → chunk-S77PZVYM.js} +3 -3
- package/dist/{chunk-VLMBTPXU.js → chunk-SHL7LOC3.js} +3 -3
- package/dist/{chunk-HR6IWNKE.js → chunk-SSJK7FEV.js} +1140 -1196
- package/dist/chunk-SSJK7FEV.js.map +1 -0
- package/dist/{chunk-KS2QY6MK.js → chunk-W3ZHJJVT.js} +4 -4
- package/dist/{chunk-7EPXVICM.js → chunk-XF4JUKVF.js} +5 -38
- package/dist/chunk-XF4JUKVF.js.map +1 -0
- package/dist/{chunk-RL5CP7N6.js → chunk-Y6O7EWYY.js} +5 -5
- package/dist/{chunk-6NY2GPR4.js → chunk-Y6ZQXUZ7.js} +3 -3
- package/dist/{chunk-HROZYQ5H.js → chunk-YRQYA2LR.js} +5 -63
- package/dist/chunk-YRQYA2LR.js.map +1 -0
- package/dist/{chunk-ASI4P6X2.js → chunk-YUCLMOEG.js} +6 -6
- package/dist/chunk-YUCLMOEG.js.map +1 -0
- package/dist/{chunk-WKQG6TER.js → chunk-ZEYEWPK6.js} +2 -2
- package/dist/{claim-W6G6VEG5.js → claim-FZ5OQLMU.js} +3 -4
- package/dist/{claim-W6G6VEG5.js.map → claim-FZ5OQLMU.js.map} +1 -1
- package/dist/cli.js +30 -30
- package/dist/{companies-TS6KBATJ.js → companies-DNI634RC.js} +3 -4
- package/dist/{companies-TS6KBATJ.js.map → companies-DNI634RC.js.map} +1 -1
- package/dist/{complete-LYR2HMQU.js → complete-2FZMGJV5.js} +3 -4
- package/dist/{complete-LYR2HMQU.js.map → complete-2FZMGJV5.js.map} +1 -1
- package/dist/{connect-FCXNVTXG.js → connect-QCOGEPP4.js} +6 -13
- package/dist/{conversation-6ZJGPCXM.js → conversation-6IOGV7B7.js} +3 -4
- package/dist/{conversation-6ZJGPCXM.js.map → conversation-6IOGV7B7.js.map} +1 -1
- package/dist/{conversions-UHB55MMQ.js → conversions-4SRZPBBX.js} +7 -8
- package/dist/{conversions-UHB55MMQ.js.map → conversions-4SRZPBBX.js.map} +1 -1
- package/dist/{create-EX6OWLNM.js → create-BJNMO6HT.js} +2 -3
- package/dist/{create-EX6OWLNM.js.map → create-BJNMO6HT.js.map} +1 -1
- package/dist/{create-JFSK4BOP.js → create-FX4OJ2XF.js} +3 -4
- package/dist/{create-JFSK4BOP.js.map → create-FX4OJ2XF.js.map} +1 -1
- package/dist/{create-JCA7JPLP.js → create-RM7HV77Y.js} +3 -4
- package/dist/{create-JCA7JPLP.js.map → create-RM7HV77Y.js.map} +1 -1
- package/dist/{create-WU22YYU2.js → create-VXM34ZWH.js} +3 -4
- package/dist/{create-WU22YYU2.js.map → create-VXM34ZWH.js.map} +1 -1
- package/dist/{creatives-FXUQ5WSD.js → creatives-B5NTXPUB.js} +10 -10
- package/dist/{creatives-KGXUOYPE.js → creatives-JSWBFQ5R.js} +8 -9
- package/dist/{creatives-KGXUOYPE.js.map → creatives-JSWBFQ5R.js.map} +1 -1
- package/dist/{credentials-MJC7PGKR.js → credentials-C33K6XCJ.js} +3 -4
- package/dist/{credentials-MJC7PGKR.js.map → credentials-C33K6XCJ.js.map} +1 -1
- package/dist/{critique-GS5VV5ZC.js → critique-4V5SKH7C.js} +6 -7
- package/dist/{critique-GS5VV5ZC.js.map → critique-4V5SKH7C.js.map} +1 -1
- package/dist/{critique-TPHR27KH.js → critique-ZS4ON3SU.js} +3 -4
- package/dist/{critique-TPHR27KH.js.map → critique-ZS4ON3SU.js.map} +1 -1
- package/dist/{crm-VK44O3ED.js → crm-52ROSWH5.js} +4 -5
- package/dist/{crm-VK44O3ED.js.map → crm-52ROSWH5.js.map} +1 -1
- package/dist/{crm-AVCM5D4G.js → crm-R5IXIFIV.js} +4 -5
- package/dist/{crm-AVCM5D4G.js.map → crm-R5IXIFIV.js.map} +1 -1
- package/dist/{customers-XH2DMTFH.js → customers-A36LOZOB.js} +5 -6
- package/dist/{delete-WI5E3DR3.js → delete-AIGE4Y4H.js} +3 -4
- package/dist/{delete-WI5E3DR3.js.map → delete-AIGE4Y4H.js.map} +1 -1
- package/dist/{delete-KRH2YMSZ.js → delete-HGHXY24R.js} +3 -4
- package/dist/{delete-KRH2YMSZ.js.map → delete-HGHXY24R.js.map} +1 -1
- package/dist/{delete-E3R3TKIL.js → delete-M2GDLPYN.js} +2 -3
- package/dist/{delete-E3R3TKIL.js.map → delete-M2GDLPYN.js.map} +1 -1
- package/dist/{demographics-XV5PBA77.js → demographics-NTWB2IMG.js} +3 -4
- package/dist/{demographics-XV5PBA77.js.map → demographics-NTWB2IMG.js.map} +1 -1
- package/dist/{discard-HTQUUHJR.js → discard-2WWQG6OU.js} +3 -4
- package/dist/{discard-HTQUUHJR.js.map → discard-2WWQG6OU.js.map} +1 -1
- package/dist/{domain-RECGZXJB.js → domain-Y2LT6JLT.js} +3 -4
- package/dist/{domain-RECGZXJB.js.map → domain-Y2LT6JLT.js.map} +1 -1
- package/dist/{draft-Q546QPPU.js → draft-EJXNNJ3Y.js} +4 -5
- package/dist/{draft-Q546QPPU.js.map → draft-EJXNNJ3Y.js.map} +1 -1
- package/dist/{draft-PVTX6QT6.js → draft-FJ7WHIXW.js} +3 -4
- package/dist/{draft-PVTX6QT6.js.map → draft-FJ7WHIXW.js.map} +1 -1
- package/dist/{draft-2IBSJEKC.js → draft-SLHAKJ2A.js} +3 -4
- package/dist/{draft-2IBSJEKC.js.map → draft-SLHAKJ2A.js.map} +1 -1
- package/dist/engine/index.js +3 -3
- package/dist/{facets-7EVPJMKS.js → facets-U7AQC4H6.js} +3 -4
- package/dist/{facets-7EVPJMKS.js.map → facets-U7AQC4H6.js.map} +1 -1
- package/dist/{feedback-EIZKS4JU.js → feedback-OLTCHE6C.js} +2 -2
- package/dist/{feedback-record-TKO54BOE.js → feedback-record-7WZ4H7EP.js} +8 -9
- package/dist/{feedback-record-TKO54BOE.js.map → feedback-record-7WZ4H7EP.js.map} +1 -1
- package/dist/{fetch-4BY6HYUM.js → fetch-W7NULDEO.js} +3 -4
- package/dist/{fetch-4BY6HYUM.js.map → fetch-W7NULDEO.js.map} +1 -1
- package/dist/{find-FRRHAPWX.js → find-OTDIX6V4.js} +4 -4
- package/dist/{flows-KTFAML22.js → flows-KABCBS3S.js} +17 -21
- package/dist/flows-KABCBS3S.js.map +1 -0
- package/dist/{fonts-MXR3ZKDX.js → fonts-EMMX3KII.js} +5 -6
- package/dist/{forecast-3QTJYVND.js → forecast-GNODEIIC.js} +3 -4
- package/dist/{forecast-3QTJYVND.js.map → forecast-GNODEIIC.js.map} +1 -1
- package/dist/{funnel-I6XIAEHG.js → funnel-AAX27NH4.js} +455 -11
- package/dist/funnel-AAX27NH4.js.map +1 -0
- package/dist/{ga4-DV2AXCSL.js → ga4-UDQ2HA2J.js} +1 -1
- package/dist/{get-5PKNKJ5S.js → get-QEYJRLV3.js} +4 -7
- package/dist/get-QEYJRLV3.js.map +1 -0
- package/dist/{get-72YPHJGV.js → get-RTVUZM6E.js} +3 -4
- package/dist/{get-72YPHJGV.js.map → get-RTVUZM6E.js.map} +1 -1
- package/dist/{google-QYYYSSXI.js → google-KTO3PLEU.js} +5 -5
- package/dist/{google-6OGZX47I.js → google-M7KEXVK5.js} +2 -2
- package/dist/{google-ads-QGMQKZQD.js → google-ads-OK6IG3UV.js} +3 -4
- package/dist/{google-ads-QGMQKZQD.js.map → google-ads-OK6IG3UV.js.map} +1 -1
- package/dist/{gsc-TAKOF7J5.js → gsc-P3QYGDV2.js} +1 -1
- package/dist/{history-6AVQX2OQ.js → history-PQUJKK26.js} +3 -4
- package/dist/{history-6AVQX2OQ.js.map → history-PQUJKK26.js.map} +1 -1
- package/dist/{hubspot-SVEMFK5S.js → hubspot-Y77VLY6Y.js} +8 -9
- package/dist/{hubspot-SVEMFK5S.js.map → hubspot-Y77VLY6Y.js.map} +1 -1
- package/dist/{icon-L4RSS6PZ.js → icon-I43F77FV.js} +4 -4
- package/dist/{ideas-NFOW3HKJ.js → ideas-MIDU7YOA.js} +2 -3
- package/dist/{images-2EFFUNNV.js → images-S254MS6O.js} +9 -9
- package/dist/{ingest-2SO62RRI.js → ingest-J4I3HKM3.js} +2 -3
- package/dist/{ingest-2SO62RRI.js.map → ingest-J4I3HKM3.js.map} +1 -1
- package/dist/{ingest-2EIKN4QC.js → ingest-YV2NLDBE.js} +3 -4
- package/dist/{inspect-4OOS4APT.js → inspect-Q5NHBBHX.js} +3 -4
- package/dist/{inspect-4OOS4APT.js.map → inspect-Q5NHBBHX.js.map} +1 -1
- package/dist/{inspiration-S3DU4CMQ.js → inspiration-P265QJ2H.js} +1 -1
- package/dist/{keyword-metrics-SF4CSNZ2.js → keyword-metrics-PDY4ZXSP.js} +3 -4
- package/dist/{keyword-metrics-SF4CSNZ2.js.map → keyword-metrics-PDY4ZXSP.js.map} +1 -1
- package/dist/{keywords-for-site-WDAOPNKC.js → keywords-for-site-GALSCV77.js} +3 -4
- package/dist/{keywords-for-site-WDAOPNKC.js.map → keywords-for-site-GALSCV77.js.map} +1 -1
- package/dist/{landing-2ZB46LXH.js → landing-CJYGWCK4.js} +3 -3
- package/dist/{leads-A4W5KTWB.js → leads-PHKG6CP3.js} +3 -4
- package/dist/{leads-A4W5KTWB.js.map → leads-PHKG6CP3.js.map} +1 -1
- package/dist/{learn-IPULBCOD.js → learn-FUQSY7DN.js} +4 -5
- package/dist/{learn-IPULBCOD.js.map → learn-FUQSY7DN.js.map} +1 -1
- package/dist/{line-item-writes-EMYSOJKM.js → line-item-writes-E6MZPIZZ.js} +3 -4
- package/dist/{line-item-writes-EMYSOJKM.js.map → line-item-writes-E6MZPIZZ.js.map} +1 -1
- package/dist/{line-items-5NECXUZT.js → line-items-7ZGIKEF2.js} +5 -5
- package/dist/{link-CI45HWFN.js → link-QYAW6A2W.js} +3 -4
- package/dist/{link-CI45HWFN.js.map → link-QYAW6A2W.js.map} +1 -1
- package/dist/{linkedin-B7SYR75X.js → linkedin-FFSDSGGS.js} +26 -27
- package/dist/{linkedin-B7SYR75X.js.map → linkedin-FFSDSGGS.js.map} +1 -1
- package/dist/{list-ZBT3EBVZ.js → list-5IC6KIKO.js} +3 -4
- package/dist/{list-ZBT3EBVZ.js.map → list-5IC6KIKO.js.map} +1 -1
- package/dist/{list-2BARXOT5.js → list-NVQC5SNY.js} +2 -3
- package/dist/{list-2BARXOT5.js.map → list-NVQC5SNY.js.map} +1 -1
- package/dist/{list-BIEVLEHS.js → list-SAV3LQHY.js} +3 -4
- package/dist/{list-BIEVLEHS.js.map → list-SAV3LQHY.js.map} +1 -1
- package/dist/{log-C23OOAJZ.js → log-XZPVOALD.js} +3 -4
- package/dist/{log-C23OOAJZ.js.map → log-XZPVOALD.js.map} +1 -1
- package/dist/{logo-Q5D7PZY6.js → logo-2IP663QO.js} +3 -3
- package/dist/{lookup-ETWY47F7.js → lookup-XK45W2SH.js} +5 -6
- package/dist/{make-TPKKJXGL.js → make-BMWRKIIY.js} +20 -18
- package/dist/{make-TPKKJXGL.js.map → make-BMWRKIIY.js.map} +1 -1
- package/dist/{map-SYZMPHLL.js → map-4J5WIWIG.js} +4 -5
- package/dist/{map-SYZMPHLL.js.map → map-4J5WIWIG.js.map} +1 -1
- package/dist/{mcp-6FQBVJ6F.js → mcp-XXD7ZQCP.js} +2 -3
- package/dist/{mcp-6FQBVJ6F.js.map → mcp-XXD7ZQCP.js.map} +1 -1
- package/dist/{media-sources-ZXHEEP6T.js → media-sources-O6ZRUA3N.js} +2 -2
- package/dist/{members-UDY4OOJW.js → members-D5ZYLS4Y.js} +3 -4
- package/dist/{members-UDY4OOJW.js.map → members-D5ZYLS4Y.js.map} +1 -1
- package/dist/{normalize-DAKHYS3V.js → normalize-PCNC6E2N.js} +3 -7
- package/dist/{normalize-DAKHYS3V.js.map → normalize-PCNC6E2N.js.map} +1 -1
- package/dist/{options-QL3ULED5.js → options-MQ65VEVD.js} +6 -7
- package/dist/{options-QL3ULED5.js.map → options-MQ65VEVD.js.map} +1 -1
- package/dist/{performance-UF5VTY2U.js → performance-6QW2KEEQ.js} +4 -5
- package/dist/{promoted-tweet-writes-7HGESJ46.js → promoted-tweet-writes-JPLHY3GM.js} +3 -4
- package/dist/{promoted-tweet-writes-7HGESJ46.js.map → promoted-tweet-writes-JPLHY3GM.js.map} +1 -1
- package/dist/{promoted-tweets-LZKS5JIF.js → promoted-tweets-SURKMHFI.js} +3 -3
- package/dist/{publish-NPD3SMZL.js → publish-HCQ6MXLB.js} +3 -4
- package/dist/{publish-NPD3SMZL.js.map → publish-HCQ6MXLB.js.map} +1 -1
- package/dist/{reddit-NU2N3LZD.js → reddit-GIP3ADMS.js} +4 -5
- package/dist/{refresh-EBVJ2C6L.js → refresh-UXQSLCR3.js} +2 -3
- package/dist/{refresh-EBVJ2C6L.js.map → refresh-UXQSLCR3.js.map} +1 -1
- package/dist/{release-V43YB2PY.js → release-5KVLXNP6.js} +3 -4
- package/dist/{release-V43YB2PY.js.map → release-5KVLXNP6.js.map} +1 -1
- package/dist/{remove-QPSWLFI4.js → remove-6FIVKCJI.js} +2 -3
- package/dist/{remove-QPSWLFI4.js.map → remove-6FIVKCJI.js.map} +1 -1
- package/dist/{reopen-GQ66NMWF.js → reopen-YM5LNOLB.js} +3 -4
- package/dist/{reopen-GQ66NMWF.js.map → reopen-YM5LNOLB.js.map} +1 -1
- package/dist/{rerun-PZK275DY.js → rerun-6XZG7BGK.js} +17 -18
- package/dist/{rerun-PZK275DY.js.map → rerun-6XZG7BGK.js.map} +1 -1
- package/dist/{research-FMM6AWZC.js → research-2BLEISBG.js} +10 -10
- package/dist/{research-GEOCUBXB.js → research-YOGE7GT2.js} +2 -3
- package/dist/{research-GEOCUBXB.js.map → research-YOGE7GT2.js.map} +1 -1
- package/dist/{reset-REXJ6AUK.js → reset-C4UHQ3EU.js} +2 -3
- package/dist/{reset-REXJ6AUK.js.map → reset-C4UHQ3EU.js.map} +1 -1
- package/dist/{reset-Y72IVESB.js → reset-OLVB6AE6.js} +2 -3
- package/dist/{reset-Y72IVESB.js.map → reset-OLVB6AE6.js.map} +1 -1
- package/dist/{resolve-OGX7C4TV.js → resolve-XYH2GDAE.js} +3 -4
- package/dist/{resolve-OGX7C4TV.js.map → resolve-XYH2GDAE.js.map} +1 -1
- package/dist/{retry-TCUBBFR5.js → retry-726GKI6V.js} +2 -3
- package/dist/{retry-TCUBBFR5.js.map → retry-726GKI6V.js.map} +1 -1
- package/dist/{retry-CD6JAQ3F.js → retry-7EELDEQP.js} +2 -3
- package/dist/{retry-CD6JAQ3F.js.map → retry-7EELDEQP.js.map} +1 -1
- package/dist/{run-EUO34T2J.js → run-MMEDKJDB.js} +17 -18
- package/dist/{run-A5ZDXTOI.js → run-P4KR2MXC.js} +3 -4
- package/dist/{run-A5ZDXTOI.js.map → run-P4KR2MXC.js.map} +1 -1
- package/dist/{scaffold-ad-SW2HEWM3.js → scaffold-ad-PBTEWDAC.js} +12 -13
- package/dist/{scaffold-ad-SW2HEWM3.js.map → scaffold-ad-PBTEWDAC.js.map} +1 -1
- package/dist/{scaffold-static-ad-ECTJL54Y.js → scaffold-static-ad-RM4M4X5U.js} +36 -37
- package/dist/scaffold-static-ad-RM4M4X5U.js.map +1 -0
- package/dist/{scaffold-video-EI7U7RBK.js → scaffold-video-O2TTKZIE.js} +11 -12
- package/dist/{scaffold-video-EI7U7RBK.js.map → scaffold-video-O2TTKZIE.js.map} +1 -1
- package/dist/{schedule-S5YZJZ5U.js → schedule-RDK4GEPI.js} +2 -3
- package/dist/{schedule-S5YZJZ5U.js.map → schedule-RDK4GEPI.js.map} +1 -1
- package/dist/{scheduled-agents-N4LJRM4C.js → scheduled-agents-6U44QE76.js} +11 -11
- package/dist/{schema-R7JWWOF4.js → schema-CHJDC7GQ.js} +4 -8
- package/dist/{schema-R7JWWOF4.js.map → schema-CHJDC7GQ.js.map} +1 -1
- package/dist/{search-KHMQH3AT.js → search-PMJRU3C4.js} +2 -3
- package/dist/{search-KHMQH3AT.js.map → search-PMJRU3C4.js.map} +1 -1
- package/dist/{select-O2FN2JEQ.js → select-OEUKOVZ5.js} +8 -9
- package/dist/{select-O2FN2JEQ.js.map → select-OEUKOVZ5.js.map} +1 -1
- package/dist/{sends-BQZM5PLS.js → sends-WGJVQUMF.js} +4 -5
- package/dist/{sends-BQZM5PLS.js.map → sends-WGJVQUMF.js.map} +1 -1
- package/dist/{set-prompt-2HASHGWC.js → set-prompt-5E5I7QAZ.js} +8 -9
- package/dist/{set-prompt-2HASHGWC.js.map → set-prompt-5E5I7QAZ.js.map} +1 -1
- package/dist/{setup-links-GYSE56GX.js → setup-links-REPREN3C.js} +3 -4
- package/dist/{setup-links-GYSE56GX.js.map → setup-links-REPREN3C.js.map} +1 -1
- package/dist/{site-4SKM7RKG.js → site-WFSWIA3S.js} +4 -5
- package/dist/{site-4SKM7RKG.js.map → site-WFSWIA3S.js.map} +1 -1
- package/dist/{sources-R2NKNC6J.js → sources-AMI2AWKZ.js} +9 -10
- package/dist/{sources-R2NKNC6J.js.map → sources-AMI2AWKZ.js.map} +1 -1
- package/dist/{sources-FQ2UZTHL.js → sources-YBQ6KPFM.js} +6 -6
- package/dist/{stale-W756ACKC.js → stale-IGFUKEN2.js} +7 -8
- package/dist/{stale-W756ACKC.js.map → stale-IGFUKEN2.js.map} +1 -1
- package/dist/{status-SE2VZJJB.js → status-7F2KHFGA.js} +3 -4
- package/dist/{status-SE2VZJJB.js.map → status-7F2KHFGA.js.map} +1 -1
- package/dist/{stock-KXJ26BY4.js → stock-2YCDN3N6.js} +5 -5
- package/dist/{studio-SYKOSNDB.js → studio-RA7QQH4O.js} +1 -1
- package/dist/{sync-LJGSODK3.js → sync-GWTLKZTU.js} +2 -3
- package/dist/{sync-LJGSODK3.js.map → sync-GWTLKZTU.js.map} +1 -1
- package/dist/{sync-definition-QR2N233R.js → sync-definition-UGSDX2SZ.js} +11 -12
- package/dist/{tags-PYWFSBTR.js → tags-3WPW6PTV.js} +4 -4
- package/dist/{tags-QQU3OKMZ.js → tags-6342FQEB.js} +3 -4
- package/dist/{tags-QQU3OKMZ.js.map → tags-6342FQEB.js.map} +1 -1
- package/dist/{tags-5SBMRC2A.js → tags-ABHSX6M5.js} +3 -4
- package/dist/{tags-5SBMRC2A.js.map → tags-ABHSX6M5.js.map} +1 -1
- package/dist/{tags-YYLNF3PK.js → tags-FJIBBBRG.js} +3 -4
- package/dist/{tags-YYLNF3PK.js.map → tags-FJIBBBRG.js.map} +1 -1
- package/dist/{tags-4BAVFH4S.js → tags-KFYLZLB3.js} +2 -3
- package/dist/{tags-4BAVFH4S.js.map → tags-KFYLZLB3.js.map} +1 -1
- package/dist/{targeting-criteria-RJFLFICN.js → targeting-criteria-NR47AF5C.js} +3 -3
- package/dist/{targets-S2MT2PNB.js → targets-L56KOVQE.js} +3 -4
- package/dist/{targets-S2MT2PNB.js.map → targets-L56KOVQE.js.map} +1 -1
- package/dist/{templates-ZE5TOGRT.js → templates-B6XGDYUF.js} +3 -4
- package/dist/{templates-ZE5TOGRT.js.map → templates-B6XGDYUF.js.map} +1 -1
- package/dist/{testimonials-DII5DYLR.js → testimonials-CVC4YIXO.js} +6 -6
- package/dist/{top-companies-PGIAEHDF.js → top-companies-45X3DT7Z.js} +3 -4
- package/dist/{top-companies-PGIAEHDF.js.map → top-companies-45X3DT7Z.js.map} +1 -1
- package/dist/{translate-GXTS633J.js → translate-VP5R67PL.js} +11 -12
- package/dist/{translate-GXTS633J.js.map → translate-VP5R67PL.js.map} +1 -1
- package/dist/{triggers-2PTONXRU.js → triggers-22EMIVFD.js} +3 -4
- package/dist/{triggers-2PTONXRU.js.map → triggers-22EMIVFD.js.map} +1 -1
- package/dist/{unlink-XRMYJ6DB.js → unlink-65KUN6ID.js} +3 -4
- package/dist/{unlink-XRMYJ6DB.js.map → unlink-65KUN6ID.js.map} +1 -1
- package/dist/{unstage-FY7A3YFF.js → unstage-2E3I5SWF.js} +3 -4
- package/dist/{unstage-FY7A3YFF.js.map → unstage-2E3I5SWF.js.map} +1 -1
- package/dist/{unstage-RM2RLXKD.js → unstage-4ZEULXEQ.js} +4 -5
- package/dist/{unstage-RM2RLXKD.js.map → unstage-4ZEULXEQ.js.map} +1 -1
- package/dist/{update-S4562V3O.js → update-2S7CSEAW.js} +3 -4
- package/dist/{update-S4562V3O.js.map → update-2S7CSEAW.js.map} +1 -1
- package/dist/{update-V6YVEUI2.js → update-7NCOTAQZ.js} +3 -4
- package/dist/{update-V6YVEUI2.js.map → update-7NCOTAQZ.js.map} +1 -1
- package/dist/{update-PJ67D2OG.js → update-D6DJC6T7.js} +2 -3
- package/dist/{update-PJ67D2OG.js.map → update-D6DJC6T7.js.map} +1 -1
- package/dist/{update-E5SRBXQR.js → update-KREBPGBH.js} +3 -4
- package/dist/{update-E5SRBXQR.js.map → update-KREBPGBH.js.map} +1 -1
- package/dist/{upload-R6CQVLKF.js → upload-O6NHRPS7.js} +3 -4
- package/dist/{upload-R6CQVLKF.js.map → upload-O6NHRPS7.js.map} +1 -1
- package/dist/{url-options-JOKU46F2.js → url-options-GGXAL3J4.js} +3 -4
- package/dist/{url-options-JOKU46F2.js.map → url-options-GGXAL3J4.js.map} +1 -1
- package/dist/{url-params-7U2XMOWF.js → url-params-3EFGVTZZ.js} +3 -4
- package/dist/{url-params-7U2XMOWF.js.map → url-params-3EFGVTZZ.js.map} +1 -1
- package/dist/{validate-7YPOUKPB.js → validate-CSJM7XZM.js} +9 -10
- package/dist/{validate-7YPOUKPB.js.map → validate-CSJM7XZM.js.map} +1 -1
- package/dist/{videos-LICG6ACJ.js → videos-YSXYGTBM.js} +5 -5
- package/dist/{web-BA2PGTWU.js → web-IGIGVEKS.js} +3 -4
- package/dist/{web-BA2PGTWU.js.map → web-IGIGVEKS.js.map} +1 -1
- package/dist/{winning-ads-C6S2C5VP.js → winning-ads-2WS7FI4E.js} +2 -2
- package/dist/{write-commands-7SJ3BOW5.js → write-commands-5C7FUOVN.js} +4 -5
- package/dist/{write-commands-7SJ3BOW5.js.map → write-commands-5C7FUOVN.js.map} +1 -1
- package/dist/{x-CZHRC6U7.js → x-BFSKFCZD.js} +6 -6
- package/package.json +1 -1
- package/dist/add-2BEGRHUX.js.map +0 -1
- package/dist/analytics-IFELDWLL.js.map +0 -1
- package/dist/chunk-4PDHHHUJ.js +0 -537
- package/dist/chunk-4PDHHHUJ.js.map +0 -1
- package/dist/chunk-7EPXVICM.js.map +0 -1
- package/dist/chunk-ASI4P6X2.js.map +0 -1
- package/dist/chunk-FPOGPFAG.js.map +0 -1
- package/dist/chunk-HR6IWNKE.js.map +0 -1
- package/dist/chunk-HROZYQ5H.js.map +0 -1
- package/dist/chunk-NYIGXDUG.js.map +0 -1
- package/dist/chunk-QE7W555R.js.map +0 -1
- package/dist/flows-KTFAML22.js.map +0 -1
- package/dist/funnel-I6XIAEHG.js.map +0 -1
- package/dist/get-5PKNKJ5S.js.map +0 -1
- package/dist/plan-FT632COT.js +0 -51
- package/dist/plan-FT632COT.js.map +0 -1
- package/dist/questionnaire-JNGYJTAY.js +0 -37
- package/dist/questionnaire-JNGYJTAY.js.map +0 -1
- package/dist/scaffold-static-ad-ECTJL54Y.js.map +0 -1
- /package/dist/{actions-6TQMSVWD.js.map → actions-P35MEMGN.js.map} +0 -0
- /package/dist/{ads-AGYCVD62.js.map → ads-73PGA4YC.js.map} +0 -0
- /package/dist/{avatars-467OSBD6.js.map → avatars-EKCKHCC3.js.map} +0 -0
- /package/dist/{brand-YRTEPGBK.js.map → brand-C6PFGGQN.js.map} +0 -0
- /package/dist/{campaigns-OYMXDGWX.js.map → campaigns-KZYZTXDS.js.map} +0 -0
- /package/dist/{canvas-YQFG52IG.js.map → canvas-5NB27FX2.js.map} +0 -0
- /package/dist/{catalog-XLXIM7IW.js.map → catalog-VSSY6FGI.js.map} +0 -0
- /package/dist/{chunk-5ZNTADVR.js.map → chunk-3G3ZDLMI.js.map} +0 -0
- /package/dist/{chunk-ZDMTXQ2Q.js.map → chunk-3IBYKLXR.js.map} +0 -0
- /package/dist/{chunk-CWYAELVG.js.map → chunk-464O4MT2.js.map} +0 -0
- /package/dist/{chunk-NA63BH7V.js.map → chunk-4AUMTNVB.js.map} +0 -0
- /package/dist/{chunk-NDEE6G2J.js.map → chunk-4BQXAE7Z.js.map} +0 -0
- /package/dist/{chunk-2AOE2MZQ.js.map → chunk-5ZDLTE5T.js.map} +0 -0
- /package/dist/{chunk-ULG4QRTV.js.map → chunk-6NB47MRW.js.map} +0 -0
- /package/dist/{chunk-24EB7EDR.js.map → chunk-7YCRFMXF.js.map} +0 -0
- /package/dist/{chunk-WGUQHAJY.js.map → chunk-A4LOJ2VD.js.map} +0 -0
- /package/dist/{chunk-6F7DVPOS.js.map → chunk-AEOSAVVL.js.map} +0 -0
- /package/dist/{chunk-N4LAYIIN.js.map → chunk-CSYSX4D2.js.map} +0 -0
- /package/dist/{chunk-RX2DKU3W.js.map → chunk-DGUNI37S.js.map} +0 -0
- /package/dist/{chunk-I3ZR655O.js.map → chunk-IR6D7K4H.js.map} +0 -0
- /package/dist/{chunk-FUHN4MFY.js.map → chunk-JQJDXPCO.js.map} +0 -0
- /package/dist/{chunk-7CTMH5AK.js.map → chunk-KAUOHQTF.js.map} +0 -0
- /package/dist/{chunk-VYQ3QJ3C.js.map → chunk-KHRXPQID.js.map} +0 -0
- /package/dist/{chunk-6Y7ZBENQ.js.map → chunk-LECGCWT5.js.map} +0 -0
- /package/dist/{chunk-5WCSKQ7Z.js.map → chunk-LZ73CZGP.js.map} +0 -0
- /package/dist/{chunk-R25YLW6H.js.map → chunk-MELOSESI.js.map} +0 -0
- /package/dist/{chunk-DCRPXOJJ.js.map → chunk-MXYBTMKB.js.map} +0 -0
- /package/dist/{chunk-54C6YDGJ.js.map → chunk-NPY4QUMQ.js.map} +0 -0
- /package/dist/{chunk-LYQJ4PZW.js.map → chunk-OQ6663F4.js.map} +0 -0
- /package/dist/{chunk-H3427GPU.js.map → chunk-OZRUJVIQ.js.map} +0 -0
- /package/dist/{chunk-KMKEYI37.js.map → chunk-Q2V6E6SL.js.map} +0 -0
- /package/dist/{chunk-VL43TNIP.js.map → chunk-QRP3PXWN.js.map} +0 -0
- /package/dist/{chunk-C46GUI2S.js.map → chunk-RZBEK2VE.js.map} +0 -0
- /package/dist/{chunk-2VPBIT65.js.map → chunk-S3A3YOKO.js.map} +0 -0
- /package/dist/{chunk-FYGR3I2A.js.map → chunk-S77PZVYM.js.map} +0 -0
- /package/dist/{chunk-VLMBTPXU.js.map → chunk-SHL7LOC3.js.map} +0 -0
- /package/dist/{chunk-KS2QY6MK.js.map → chunk-W3ZHJJVT.js.map} +0 -0
- /package/dist/{chunk-RL5CP7N6.js.map → chunk-Y6O7EWYY.js.map} +0 -0
- /package/dist/{chunk-6NY2GPR4.js.map → chunk-Y6ZQXUZ7.js.map} +0 -0
- /package/dist/{chunk-WKQG6TER.js.map → chunk-ZEYEWPK6.js.map} +0 -0
- /package/dist/{connect-FCXNVTXG.js.map → connect-QCOGEPP4.js.map} +0 -0
- /package/dist/{creatives-FXUQ5WSD.js.map → creatives-B5NTXPUB.js.map} +0 -0
- /package/dist/{customers-XH2DMTFH.js.map → customers-A36LOZOB.js.map} +0 -0
- /package/dist/{feedback-EIZKS4JU.js.map → feedback-OLTCHE6C.js.map} +0 -0
- /package/dist/{find-FRRHAPWX.js.map → find-OTDIX6V4.js.map} +0 -0
- /package/dist/{fonts-MXR3ZKDX.js.map → fonts-EMMX3KII.js.map} +0 -0
- /package/dist/{ga4-DV2AXCSL.js.map → ga4-UDQ2HA2J.js.map} +0 -0
- /package/dist/{google-QYYYSSXI.js.map → google-KTO3PLEU.js.map} +0 -0
- /package/dist/{google-6OGZX47I.js.map → google-M7KEXVK5.js.map} +0 -0
- /package/dist/{gsc-TAKOF7J5.js.map → gsc-P3QYGDV2.js.map} +0 -0
- /package/dist/{icon-L4RSS6PZ.js.map → icon-I43F77FV.js.map} +0 -0
- /package/dist/{ideas-NFOW3HKJ.js.map → ideas-MIDU7YOA.js.map} +0 -0
- /package/dist/{images-2EFFUNNV.js.map → images-S254MS6O.js.map} +0 -0
- /package/dist/{ingest-2EIKN4QC.js.map → ingest-YV2NLDBE.js.map} +0 -0
- /package/dist/{inspiration-S3DU4CMQ.js.map → inspiration-P265QJ2H.js.map} +0 -0
- /package/dist/{landing-2ZB46LXH.js.map → landing-CJYGWCK4.js.map} +0 -0
- /package/dist/{line-items-5NECXUZT.js.map → line-items-7ZGIKEF2.js.map} +0 -0
- /package/dist/{logo-Q5D7PZY6.js.map → logo-2IP663QO.js.map} +0 -0
- /package/dist/{lookup-ETWY47F7.js.map → lookup-XK45W2SH.js.map} +0 -0
- /package/dist/{media-sources-ZXHEEP6T.js.map → media-sources-O6ZRUA3N.js.map} +0 -0
- /package/dist/{performance-UF5VTY2U.js.map → performance-6QW2KEEQ.js.map} +0 -0
- /package/dist/{promoted-tweets-LZKS5JIF.js.map → promoted-tweets-SURKMHFI.js.map} +0 -0
- /package/dist/{reddit-NU2N3LZD.js.map → reddit-GIP3ADMS.js.map} +0 -0
- /package/dist/{research-FMM6AWZC.js.map → research-2BLEISBG.js.map} +0 -0
- /package/dist/{run-EUO34T2J.js.map → run-MMEDKJDB.js.map} +0 -0
- /package/dist/{scheduled-agents-N4LJRM4C.js.map → scheduled-agents-6U44QE76.js.map} +0 -0
- /package/dist/{sources-FQ2UZTHL.js.map → sources-YBQ6KPFM.js.map} +0 -0
- /package/dist/{stock-KXJ26BY4.js.map → stock-2YCDN3N6.js.map} +0 -0
- /package/dist/{studio-SYKOSNDB.js.map → studio-RA7QQH4O.js.map} +0 -0
- /package/dist/{sync-definition-QR2N233R.js.map → sync-definition-UGSDX2SZ.js.map} +0 -0
- /package/dist/{tags-PYWFSBTR.js.map → tags-3WPW6PTV.js.map} +0 -0
- /package/dist/{targeting-criteria-RJFLFICN.js.map → targeting-criteria-NR47AF5C.js.map} +0 -0
- /package/dist/{testimonials-DII5DYLR.js.map → testimonials-CVC4YIXO.js.map} +0 -0
- /package/dist/{videos-LICG6ACJ.js.map → videos-YSXYGTBM.js.map} +0 -0
- /package/dist/{winning-ads-C6S2C5VP.js.map → winning-ads-2WS7FI4E.js.map} +0 -0
- /package/dist/{x-CZHRC6U7.js.map → x-BFSKFCZD.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/chats/index.ts"],"sourcesContent":["import type { ChatsDiffResponse, ChatsListResponse, ChatsTranscriptResponse, ChatsViewResponse } from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { apiPost } from \"../../client.ts\";\nimport { getEnv } from \"../../env.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { failApi } from \"../actions/shared.ts\";\n\nconst STATUS_GROUPS = [\"active\", \"archived\", \"all\"] as const;\nconst REPO_SURFACES = [\"knowledge\", \"company\", \"brand\", \"landings\", \"flows\", \"creatives\"] as const;\n\nfunction parseBoundedInt(raw: string | undefined, name: string, min: number, max: number): number | undefined {\n if (raw === undefined) {\n return undefined;\n }\n const value = Number.parseInt(raw, 10);\n if (Number.isNaN(value) || value < min || value > max) {\n throw new Error(`--${name} must be an integer between ${min} and ${max}`);\n }\n return value;\n}\n\nregisterSchema({\n command: \"chats.list\",\n description:\n \"Start here: list other Sessions on this account (newest first) so you can reuse what was done before. Each row shows the Session id, title, status, and a count of what it produced (creatives, landings, actions, flows, reports…). Then drill in with `baker chats view <id>`, `baker chats transcript <id>`, or `baker chats diff <id>`. Read-only.\",\n args: {\n status: { type: \"string\", description: \"Filter: active|archived|all (default: all)\", required: false },\n limit: { type: \"string\", description: \"Max Sessions to return, 1-100 (default: 20)\", required: false },\n full: { type: \"boolean\", description: \"Include each Session's full change list\", required: false, default: false },\n },\n});\n\nconst listCommand = defineCommand({\n meta: { name: \"list\", description: \"List other Sessions on this account, newest first.\" },\n args: {\n status: { type: \"string\", description: \"Filter: active|archived|all (default: all)\", required: false },\n limit: { type: \"string\", description: \"Max Sessions (1-100, default 20)\", required: false },\n full: { type: \"boolean\", description: \"Include each Session's full change list\", required: false, default: false },\n },\n run: async ({ args }) => {\n try {\n const body: Record<string, unknown> = {};\n if (args.status) {\n if (!(STATUS_GROUPS as readonly string[]).includes(args.status)) {\n throw new Error(`--status must be one of: ${STATUS_GROUPS.join(\"|\")}`);\n }\n body.status = args.status;\n }\n const limit = parseBoundedInt(args.limit, \"limit\", 1, 100);\n if (limit !== undefined) {\n body.limit = limit;\n }\n if (args.full) {\n body.full = true;\n }\n // Exclude our own Session so we never list ourselves as a reusable \"other\".\n const selfChatId = getEnv().BAKER_CHAT_ID;\n if (selfChatId) {\n body.excludeChatId = selfChatId;\n }\n const response = await apiPost<ChatsListResponse>(\"/api/chats/list\", body);\n writeJson({\n ...response,\n meta: { count: response.data.chats.length },\n ...(response.data.chats.length === 0\n ? { hints: [\"No Sessions matched. Widen with --status all or a larger --limit.\"] }\n : {\n hints: [\n \"Drill in: `baker chats view <id>` for outputs, `chats transcript <id>` for the conversation, `chats diff <id>` for the real file changes.\",\n ],\n }),\n });\n } catch (err) {\n failApi(err);\n }\n },\n});\n\nregisterSchema({\n command: \"chats.view\",\n description:\n \"Inspect one Session's FULL picture of what it changed — the unified `effects`: git content (landings, creatives, flows, knowledge, brand), plus DB-only effects that never touch the repo — Actions, Scheduled agents, Tags, Tag Manager, Google Analytics, ad-platform writes, the funnel (`funnel`: which steps it added, changed or removed, and which ways in it added or removed in `triggersAdded`/`triggersRemoved`), what counts as a conversion (`conversions`), conversion sends, event sources, and every other staged or already-applied change (`otherChanges`: A/B tests, recipes, library images) — each resolved to real detail (names, descriptions, priorities, tag types, ad operations) and, once published, its `outcome`. Also `publish` (what each external surface actually did, with the provider's own error), `activity` (the chat's own timeline: status changes, publish start/fail, workspace recoveries, timeouts), `usage` (per-thread cost and the Session's token totals), the kickoff (how it was asked), threads, and commits. Effects are `staged` (in-progress draft) or applied. A completed Session is NOT proof its external changes landed — read `publish`. Use after `baker chats list` to decide whether to reuse it. Read-only.\",\n args: {\n id: { type: \"positional\", description: \"The Session id (from `baker chats list`)\", required: true },\n full: {\n type: \"boolean\",\n description: \"Untruncated effect lists and full activity metadata (compact caps each list at 25)\",\n required: false,\n default: false,\n },\n },\n});\n\nconst viewCommand = defineCommand({\n meta: {\n name: \"view\",\n description: \"Inspect one Session's full effects — git content + actions/tags/ads, kickoff, commits.\",\n },\n args: {\n id: { type: \"positional\", description: \"The Session id\", required: true },\n full: { type: \"boolean\", description: \"Include full detail\", required: false, default: false },\n },\n run: async ({ args }) => {\n try {\n const response = await apiPost<ChatsViewResponse>(\"/api/chats/view\", {\n chatId: args.id,\n ...(args.full ? { full: true } : {}),\n });\n const hints: string[] = [];\n // The most dangerous thing a reader can conclude from this command is\n // that a completed Session published everything it staged. It usually\n // did; better than one published draft in three did not.\n if (response.data.publish && !response.data.publish.complete) {\n const failed = response.data.publish.failedTotal;\n hints.push(\n `This Session's publish left ${failed} change${failed === 1 ? \"\" : \"s\"} behind — see \\`publish.surfaces\\` for the platform's own words. Do not report those changes as live.`,\n );\n }\n if (response.data.diffAvailable) {\n hints.push(\"See the real file-level diff of the git content with `baker chats diff <id> --full`.\");\n } else if (response.data.status === \"in_progress\" || response.data.status === \"publishing\") {\n hints.push(\n \"This Session is still in progress — read its current file changes with `baker chats diff <id> --live`.\",\n );\n }\n hints.push(\"Read the conversation with `baker chats transcript <id>`.\");\n writeJson({ ...response, hints });\n } catch (err) {\n failApi(err);\n }\n },\n});\n\nregisterSchema({\n command: \"chats.transcript\",\n description:\n \"Read another Session's conversation (user + agent turns), most-recent first-capped. Use to see exactly how a past request was phrased and iterated before replaying it for a new goal. Compact truncates long messages; add --full for verbatim text. Read-only.\",\n args: {\n id: { type: \"positional\", description: \"The Session id\", required: true },\n limit: { type: \"string\", description: \"Max messages to return, 1-1000 (default: 100)\", required: false },\n full: {\n type: \"boolean\",\n description: \"Return verbatim (untruncated) message text\",\n required: false,\n default: false,\n },\n },\n});\n\nconst transcriptCommand = defineCommand({\n meta: { name: \"transcript\", description: \"Read another Session's conversation.\" },\n args: {\n id: { type: \"positional\", description: \"The Session id\", required: true },\n limit: { type: \"string\", description: \"Max messages (1-1000, default 100)\", required: false },\n full: { type: \"boolean\", description: \"Verbatim message text\", required: false, default: false },\n },\n run: async ({ args }) => {\n try {\n const body: Record<string, unknown> = { chatId: args.id };\n const limit = parseBoundedInt(args.limit, \"limit\", 1, 1000);\n if (limit !== undefined) {\n body.limit = limit;\n }\n if (args.full) {\n body.full = true;\n }\n const response = await apiPost<ChatsTranscriptResponse>(\"/api/chats/transcript\", body);\n writeJson({\n ...response,\n meta: { count: response.data.entries.length },\n ...(response.data.truncated\n ? { hints: [\"Older messages were dropped to fit --limit. Raise --limit to see more.\"] }\n : {}),\n });\n } catch (err) {\n failApi(err);\n }\n },\n});\n\nregisterSchema({\n command: \"chats.diff\",\n description:\n \"See the real file-level changes a Session made (landings, creatives, brand, flows, knowledge). Published Sessions read from git; for an in-progress (unpublished) Session pass --live to read its changes straight from its running workspace. Without --live, an unpublished Session returns available:false — use `baker chats view` for the staged summary. Compact lists changed files with +/- counts; add --full for the actual diff text. Read-only.\",\n args: {\n id: { type: \"positional\", description: \"The Session id\", required: true },\n surface: {\n type: \"string\",\n description: \"Filter to one surface: knowledge|company|brand|landings|flows|creatives\",\n required: false,\n },\n full: {\n type: \"boolean\",\n description: \"Include the unified-diff patch text per file\",\n required: false,\n default: false,\n },\n live: {\n type: \"boolean\",\n description:\n \"For an in-progress Session, read its changes from the live workspace (slower; resumes the paused Runtime). Ignored for published Sessions.\",\n required: false,\n default: false,\n },\n },\n});\n\nconst diffCommand = defineCommand({\n meta: { name: \"diff\", description: \"See a published Session's real file-level changes.\" },\n args: {\n id: { type: \"positional\", description: \"The Session id\", required: true },\n surface: {\n type: \"string\",\n description: \"Filter: knowledge|company|brand|landings|flows|creatives\",\n required: false,\n },\n full: { type: \"boolean\", description: \"Include the diff patch text per file\", required: false, default: false },\n live: {\n type: \"boolean\",\n description: \"Read an in-progress Session's changes from its live workspace (slower)\",\n required: false,\n default: false,\n },\n },\n run: async ({ args }) => {\n try {\n const body: Record<string, unknown> = { chatId: args.id };\n if (args.surface) {\n if (!(REPO_SURFACES as readonly string[]).includes(args.surface)) {\n throw new Error(`--surface must be one of: ${REPO_SURFACES.join(\"|\")}`);\n }\n body.surface = args.surface;\n }\n if (args.full) {\n body.full = true;\n }\n if (args.live) {\n body.live = true;\n }\n const response = await apiPost<ChatsDiffResponse>(\"/api/chats/diff\", body);\n writeJson({\n ...response,\n meta: { count: response.data.files.length },\n ...(!response.data.available && response.data.reason ? { hints: [response.data.reason] } : {}),\n ...(response.data.available && !args.full && response.data.files.length > 0\n ? { hints: [\"Add --full to read the actual diff text for each file.\"] }\n : {}),\n });\n } catch (err) {\n failApi(err);\n }\n },\n});\n\nexport const chatsCommand = defineCommand({\n meta: {\n name: \"chats\",\n description: `Inspect other Sessions on this account (read-only): list them, view what they produced, read their conversation, and see their real file changes — so you can reuse past work for a new goal.\nFull guide: __tooling__/docs/tools/baker/chats.md`,\n },\n subCommands: {\n list: listCommand,\n view: viewCommand,\n transcript: transcriptCommand,\n diff: diffCommand,\n },\n});\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/commands/chats/index.ts"],"sourcesContent":["import type { ChatsDiffResponse, ChatsListResponse, ChatsTranscriptResponse, ChatsViewResponse } from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { apiPost } from \"../../client.ts\";\nimport { getEnv } from \"../../env.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { failApi } from \"../actions/shared.ts\";\n\nconst STATUS_GROUPS = [\"active\", \"archived\", \"all\"] as const;\nconst REPO_SURFACES = [\"knowledge\", \"company\", \"brand\", \"landings\", \"flows\", \"creatives\"] as const;\n\nfunction parseBoundedInt(raw: string | undefined, name: string, min: number, max: number): number | undefined {\n if (raw === undefined) {\n return undefined;\n }\n const value = Number.parseInt(raw, 10);\n if (Number.isNaN(value) || value < min || value > max) {\n throw new Error(`--${name} must be an integer between ${min} and ${max}`);\n }\n return value;\n}\n\nregisterSchema({\n command: \"chats.list\",\n description:\n \"Start here: list other Sessions on this account (newest first) so you can reuse what was done before. Each row shows the Session id, title, status, and a count of what it produced (creatives, landings, actions, flows, reports…). Then drill in with `baker chats view <id>`, `baker chats transcript <id>`, or `baker chats diff <id>`. Read-only.\",\n args: {\n status: { type: \"string\", description: \"Filter: active|archived|all (default: all)\", required: false },\n limit: { type: \"string\", description: \"Max Sessions to return, 1-100 (default: 20)\", required: false },\n full: { type: \"boolean\", description: \"Include each Session's full change list\", required: false, default: false },\n },\n});\n\nconst listCommand = defineCommand({\n meta: { name: \"list\", description: \"List other Sessions on this account, newest first.\" },\n args: {\n status: { type: \"string\", description: \"Filter: active|archived|all (default: all)\", required: false },\n limit: { type: \"string\", description: \"Max Sessions (1-100, default 20)\", required: false },\n full: { type: \"boolean\", description: \"Include each Session's full change list\", required: false, default: false },\n },\n run: async ({ args }) => {\n try {\n const body: Record<string, unknown> = {};\n if (args.status) {\n if (!(STATUS_GROUPS as readonly string[]).includes(args.status)) {\n throw new Error(`--status must be one of: ${STATUS_GROUPS.join(\"|\")}`);\n }\n body.status = args.status;\n }\n const limit = parseBoundedInt(args.limit, \"limit\", 1, 100);\n if (limit !== undefined) {\n body.limit = limit;\n }\n if (args.full) {\n body.full = true;\n }\n // Exclude our own Session so we never list ourselves as a reusable \"other\".\n const selfChatId = getEnv().BAKER_CHAT_ID;\n if (selfChatId) {\n body.excludeChatId = selfChatId;\n }\n const response = await apiPost<ChatsListResponse>(\"/api/chats/list\", body);\n writeJson({\n ...response,\n meta: { count: response.data.chats.length },\n ...(response.data.chats.length === 0\n ? { hints: [\"No Sessions matched. Widen with --status all or a larger --limit.\"] }\n : {\n hints: [\n \"Drill in: `baker chats view <id>` for outputs, `chats transcript <id>` for the conversation, `chats diff <id>` for the real file changes.\",\n ],\n }),\n });\n } catch (err) {\n failApi(err);\n }\n },\n});\n\nregisterSchema({\n command: \"chats.view\",\n description:\n \"Inspect one Session's FULL picture of what it changed — the unified `effects`: git content (landings, creatives, flows, knowledge, brand), plus DB-only effects that never touch the repo — Actions, Scheduled agents, Tags, Tag Manager, Google Analytics, ad-platform writes, the funnel (`funnel`: which steps it added, changed or removed, and which ways in it added or removed in `triggersAdded`/`triggersRemoved`), what counts as a conversion (`conversions`), conversion sends, event sources, and every other staged or already-applied change (`otherChanges`: A/B tests, recipes, library images) — each resolved to real detail (names, descriptions, priorities, tag types, ad operations) and, once published, its `outcome`. Also `publish` (what each external surface actually did, with the provider's own error), `activity` (the chat's own timeline: status changes, publish start/fail, workspace recoveries, timeouts), `usage` (per-thread cost and the Session's token totals), the kickoff (how it was asked), threads, and commits. Effects are `staged` (in-progress draft) or applied. A completed Session is NOT proof its external changes landed — read `publish`. Use after `baker chats list` to decide whether to reuse it. Read-only.\",\n args: {\n id: { type: \"positional\", description: \"The Session id (from `baker chats list`)\", required: true },\n full: {\n type: \"boolean\",\n description: \"Untruncated effect lists and full activity metadata (compact caps each list at 25)\",\n required: false,\n default: false,\n },\n },\n});\n\nconst viewCommand = defineCommand({\n meta: {\n name: \"view\",\n description: \"Inspect one Session's full effects — git content + actions/tags/ads, kickoff, commits.\",\n },\n args: {\n id: { type: \"positional\", description: \"The Session id\", required: true },\n full: { type: \"boolean\", description: \"Include full detail\", required: false, default: false },\n },\n run: async ({ args }) => {\n try {\n const response = await apiPost<ChatsViewResponse>(\"/api/chats/view\", {\n chatId: args.id,\n ...(args.full ? { full: true } : {}),\n });\n const hints: string[] = [];\n // The most dangerous thing a reader can conclude from this command is\n // that a completed Session published everything it staged. It usually\n // did; better than one published draft in three did not.\n if (response.data.publish && !response.data.publish.complete) {\n const failed = response.data.publish.failedTotal;\n hints.push(\n `This Session's publish left ${failed} change${failed === 1 ? \"\" : \"s\"} behind — see \\`publish.surfaces\\` for the platform's own words. Do not report those changes as live.`,\n );\n }\n if (response.data.diffAvailable) {\n hints.push(\"See the real file-level diff of the git content with `baker chats diff <id> --full`.\");\n } else if (response.data.status === \"in_progress\" || response.data.status === \"publishing\") {\n hints.push(\n \"This Session is still in progress — read its current file changes with `baker chats diff <id> --live`.\",\n );\n }\n hints.push(\"Read the conversation with `baker chats transcript <id>`.\");\n writeJson({ ...response, hints });\n } catch (err) {\n failApi(err);\n }\n },\n});\n\nregisterSchema({\n command: \"chats.transcript\",\n description:\n \"Read another Session's conversation (user + agent turns), most-recent first-capped. Use to see exactly how a past request was phrased and iterated before replaying it for a new goal. Compact truncates long messages; add --full for verbatim text. Read-only.\",\n args: {\n id: { type: \"positional\", description: \"The Session id\", required: true },\n limit: { type: \"string\", description: \"Max messages to return, 1-1000 (default: 100)\", required: false },\n full: {\n type: \"boolean\",\n description: \"Return verbatim (untruncated) message text\",\n required: false,\n default: false,\n },\n },\n});\n\nconst transcriptCommand = defineCommand({\n meta: { name: \"transcript\", description: \"Read another Session's conversation.\" },\n args: {\n id: { type: \"positional\", description: \"The Session id\", required: true },\n limit: { type: \"string\", description: \"Max messages (1-1000, default 100)\", required: false },\n full: { type: \"boolean\", description: \"Verbatim message text\", required: false, default: false },\n },\n run: async ({ args }) => {\n try {\n const body: Record<string, unknown> = { chatId: args.id };\n const limit = parseBoundedInt(args.limit, \"limit\", 1, 1000);\n if (limit !== undefined) {\n body.limit = limit;\n }\n if (args.full) {\n body.full = true;\n }\n const response = await apiPost<ChatsTranscriptResponse>(\"/api/chats/transcript\", body);\n writeJson({\n ...response,\n meta: { count: response.data.entries.length },\n ...(response.data.truncated\n ? { hints: [\"Older messages were dropped to fit --limit. Raise --limit to see more.\"] }\n : {}),\n });\n } catch (err) {\n failApi(err);\n }\n },\n});\n\nregisterSchema({\n command: \"chats.diff\",\n description:\n \"See the real file-level changes a Session made (landings, creatives, brand, flows, knowledge). Published Sessions read from git; for an in-progress (unpublished) Session pass --live to read its changes straight from its running workspace. Without --live, an unpublished Session returns available:false — use `baker chats view` for the staged summary. Compact lists changed files with +/- counts; add --full for the actual diff text. Read-only.\",\n args: {\n id: { type: \"positional\", description: \"The Session id\", required: true },\n surface: {\n type: \"string\",\n description: \"Filter to one surface: knowledge|company|brand|landings|flows|creatives\",\n required: false,\n },\n full: {\n type: \"boolean\",\n description: \"Include the unified-diff patch text per file\",\n required: false,\n default: false,\n },\n live: {\n type: \"boolean\",\n description:\n \"For an in-progress Session, read its changes from the live workspace (slower; resumes the paused Runtime). Ignored for published Sessions.\",\n required: false,\n default: false,\n },\n },\n});\n\nconst diffCommand = defineCommand({\n meta: { name: \"diff\", description: \"See a published Session's real file-level changes.\" },\n args: {\n id: { type: \"positional\", description: \"The Session id\", required: true },\n surface: {\n type: \"string\",\n description: \"Filter: knowledge|company|brand|landings|flows|creatives\",\n required: false,\n },\n full: { type: \"boolean\", description: \"Include the diff patch text per file\", required: false, default: false },\n live: {\n type: \"boolean\",\n description: \"Read an in-progress Session's changes from its live workspace (slower)\",\n required: false,\n default: false,\n },\n },\n run: async ({ args }) => {\n try {\n const body: Record<string, unknown> = { chatId: args.id };\n if (args.surface) {\n if (!(REPO_SURFACES as readonly string[]).includes(args.surface)) {\n throw new Error(`--surface must be one of: ${REPO_SURFACES.join(\"|\")}`);\n }\n body.surface = args.surface;\n }\n if (args.full) {\n body.full = true;\n }\n if (args.live) {\n body.live = true;\n }\n const response = await apiPost<ChatsDiffResponse>(\"/api/chats/diff\", body);\n writeJson({\n ...response,\n meta: { count: response.data.files.length },\n ...(!response.data.available && response.data.reason ? { hints: [response.data.reason] } : {}),\n ...(response.data.available && !args.full && response.data.files.length > 0\n ? { hints: [\"Add --full to read the actual diff text for each file.\"] }\n : {}),\n });\n } catch (err) {\n failApi(err);\n }\n },\n});\n\nexport const chatsCommand = defineCommand({\n meta: {\n name: \"chats\",\n description: `Inspect other Sessions on this account (read-only): list them, view what they produced, read their conversation, and see their real file changes — so you can reuse past work for a new goal.\nFull guide: __tooling__/docs/tools/baker/chats.md`,\n },\n subCommands: {\n list: listCommand,\n view: viewCommand,\n transcript: transcriptCommand,\n diff: diffCommand,\n },\n});\n"],"mappings":"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","names":[]}
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
mediaTagsCreateRequestSchema,
|
|
3
3
|
mediaTagsDeleteRequestSchema,
|
|
4
4
|
mediaTagsUpdateRequestSchema
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-XF4JUKVF.js";
|
|
6
6
|
import {
|
|
7
7
|
ApiError,
|
|
8
8
|
apiGet,
|
|
@@ -194,4 +194,4 @@ Examples:
|
|
|
194
194
|
export {
|
|
195
195
|
makeTagsCommand
|
|
196
196
|
};
|
|
197
|
-
//# sourceMappingURL=chunk-
|
|
197
|
+
//# sourceMappingURL=chunk-3G3ZDLMI.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ACTION_TEMP_ID_PREFIX
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-XF4JUKVF.js";
|
|
4
4
|
import {
|
|
5
5
|
ApiError
|
|
6
6
|
} from "./chunk-XBOK23HI.js";
|
|
@@ -146,14 +146,6 @@ function buildListHints({ returned, limit }) {
|
|
|
146
146
|
`This list is capped at ${limit} Tasks and came back full, so older Tasks exist that are NOT shown. Do not treat it as the whole backlog \u2014 re-run with --limit ${limit * 2} (or narrow with --status / --search).`
|
|
147
147
|
];
|
|
148
148
|
}
|
|
149
|
-
function buildGetHints(detail) {
|
|
150
|
-
if (!detail || detail.action.status !== "pending" || detail.activeChat !== null) {
|
|
151
|
-
return [];
|
|
152
|
-
}
|
|
153
|
-
return [
|
|
154
|
-
`If you are working on this Task in this chat, claim it first so the Tasks page shows it in progress: baker actions claim ${detail.action._id}`
|
|
155
|
-
];
|
|
156
|
-
}
|
|
157
149
|
|
|
158
150
|
export {
|
|
159
151
|
writeOk,
|
|
@@ -166,7 +158,6 @@ export {
|
|
|
166
158
|
parsePriority,
|
|
167
159
|
buildCreateHints,
|
|
168
160
|
ACTIONS_LIST_DEFAULT_LIMIT,
|
|
169
|
-
buildListHints
|
|
170
|
-
buildGetHints
|
|
161
|
+
buildListHints
|
|
171
162
|
};
|
|
172
|
-
//# sourceMappingURL=chunk-
|
|
163
|
+
//# sourceMappingURL=chunk-3HJLHTWP.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/actions/tagError.ts","../src/commands/actions/shared.ts"],"sourcesContent":["/**\n * Structured remediation for the one `actions` failure an agent cannot fix from\n * the message alone: an unknown `--tags` slug.\n *\n * The backend already inlines the valid taxonomy in the rejection text\n * (`unknownActionTagMessage`, packages/backend/convex/actionItems/tags/utils.ts),\n * but only `{ code, message }` crosses the HTTP boundary into `ApiError`. Parsing\n * the two lists back out here is what lets `error.fix` carry them as data, so the\n * agent retries in the same call instead of running `tags list` and trying again\n * — the \"list-then-retry dance\" this file exists to end.\n *\n * Fails closed: anything that doesn't match exactly returns `null` and the caller\n * emits the plain message it would have emitted anyway.\n */\n\nconst UNKNOWN_TAG_RE = /Unknown action tag\\(s\\): ([^.]+)\\. Valid tags: ([^.]+)\\./;\n\n// A type alias, not an interface: the envelope's `fix` slot is\n// `{ action, explanation } & Record<string, unknown>`, and only an alias is\n// structurally assignable to that index signature.\nexport type ActionTagFix = {\n action: \"retry_with_a_valid_tag\";\n explanation: string;\n unknownTags: string[];\n validTags: string[];\n mintCommand: string;\n listCommand: string;\n};\n\nfunction splitSlugs(list: string): string[] {\n return list\n .split(\",\")\n .map((slug) => slug.trim())\n .filter((slug) => slug.length > 0);\n}\n\nexport function actionTagFix(message: string): ActionTagFix | null {\n const match = UNKNOWN_TAG_RE.exec(message);\n if (!match) {\n return null;\n }\n const [, unknownList, validList] = match;\n const unknownTags = splitSlugs(unknownList ?? \"\");\n const validTags = splitSlugs(validList ?? \"\");\n const first = unknownTags[0];\n if (first === undefined || validTags.length === 0) {\n return null;\n }\n return {\n action: \"retry_with_a_valid_tag\",\n explanation:\n `The tag(s) ${unknownTags.join(\", \")} are not in this company's taxonomy. ` +\n `\\`validTags\\` below is the complete accepted set — pick from it and re-run the same command. ` +\n `Only mint a new tag when none of them names this work; a near-duplicate of an existing tag ` +\n `splits the backlog's filter instead of extending it.`,\n unknownTags,\n validTags,\n mintCommand: `baker actions tags create --slug ${first} --description \"<what ${first} groups>\"`,\n listCommand: \"baker actions tags list\",\n };\n}\n","import { ACTION_TEMP_ID_PREFIX } from \"@baker/api\";\nimport { ApiError } from \"../../client.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport type { AdvisoryHint } from \"./advisory.ts\";\nimport { actionTagFix } from \"./tagError.ts\";\n\nexport function writeOk<T = null>(data?: T): void {\n writeJson({ ok: true, data: (data ?? null) as T });\n}\n\nexport function failValidation(message: string): never {\n writeJson({ ok: false, error: { code: \"VALIDATION_ERROR\", message } });\n process.exit(1);\n}\n\n// Every actions command routes its API failures through here, so attaching the\n// tag `fix` at this one point covers `create`, `update`, and any later write\n// path that hits the same strict tag gate. Non-tag errors are untouched.\nexport function failApi(err: unknown): never {\n if (err instanceof ApiError) {\n const fix = actionTagFix(err.message);\n writeJson({ ok: false, error: { code: err.code, message: err.message, ...(fix ? { fix } : {}) } });\n process.exit(1);\n }\n if (err instanceof Error) {\n writeJson({ ok: false, error: { code: \"INTERNAL_ERROR\", message: err.message } });\n process.exit(1);\n }\n writeJson({ ok: false, error: { code: \"INTERNAL_ERROR\", message: \"Unexpected error\" } });\n process.exit(1);\n}\n\nexport function generateTempId(): string {\n return `${ACTION_TEMP_ID_PREFIX}${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 10)}`;\n}\n\nexport function isTempId(id: string): boolean {\n return id.startsWith(ACTION_TEMP_ID_PREFIX);\n}\n\n// Parse a `--tags a,b,c` CSV flag into a deduped slug list. Returns undefined\n// when the flag was omitted so callers can distinguish \"not provided\" from\n// \"explicitly cleared\" (empty list).\nexport function parseTagList(value: unknown): string[] | undefined {\n if (typeof value !== \"string\") {\n return undefined;\n }\n const tags = value\n .split(\",\")\n .map((t) => t.trim())\n .filter((t) => t.length > 0);\n return [...new Set(tags)];\n}\n\n// User priority for an action. Drives the dependency-aware \"Do first\" ordering\n// in `baker actions list`. Unset == \"normal\" (ranks as medium).\nexport const ACTION_PRIORITIES = [\"urgent\", \"high\", \"medium\", \"low\"] as const;\ntype ActionPriority = (typeof ACTION_PRIORITIES)[number];\n\n// Parse a `--priority` flag. Returns:\n// - undefined → flag omitted (leave unchanged on update; unset on create)\n// - null → explicit clear (only meaningful on update; \"\" or \"none\")\n// - one of ACTION_PRIORITIES on a valid value\n// Fails validation on any other string so the agent gets an immediate error.\nexport function parsePriority(\n value: unknown,\n { allowClear }: { allowClear: boolean },\n): ActionPriority | null | undefined {\n if (value === undefined) {\n return undefined;\n }\n if (typeof value !== \"string\") {\n failValidation(\n `--priority must be one of: ${ACTION_PRIORITIES.join(\", \")}${allowClear ? \", or 'none' to clear\" : \"\"}.`,\n );\n }\n const trimmed = value.trim().toLowerCase();\n if (trimmed === \"\") {\n if (allowClear) {\n return null;\n }\n return undefined;\n }\n if (allowClear && (trimmed === \"none\" || trimmed === \"clear\")) {\n return null;\n }\n if ((ACTION_PRIORITIES as readonly string[]).includes(trimmed)) {\n return trimmed as ActionPriority;\n }\n failValidation(\n `Unknown --priority \"${value}\". Expected one of: ${ACTION_PRIORITIES.join(\", \")}${allowClear ? \", or 'none' to clear\" : \"\"}.`,\n );\n}\n\n// Two tiers, because the two counts want different amounts of words.\n//\n// The mean chat that files anything files ~2, and two Tasks is already above\n// the bar (\"a Task is the exception\"), so a 2→1 merge is the cheapest win\n// available — but firing the full paragraph on the modal chat is how you train\n// the model to skim `hints[]` and miss the do-it-now redirect above it. So 2\n// gets one sentence.\n//\n// Three is where \"capturing follow-ups\" stops looking like a backlog and\n// starts looking like a to-do list handed back to the user. That gets the\n// paragraph, from there on, every time — a legitimate 3-Task chat (an approved\n// plan) still benefits from being asked whether any two merge.\nexport const FAN_OUT_NUDGE_THRESHOLD = 2;\nexport const FAN_OUT_THRESHOLD = 3;\n\n// Every hint `create` returns, in reading order. The two that argue against\n// the action existing come first — by the time the agent reaches \"add tags\" it\n// has already accepted the action as a given.\nexport function buildCreateHints({\n advisory,\n description,\n tempId,\n tags,\n prioritySet,\n draftCreateCount,\n}: {\n /** What the Task reads as (`advisory.ts`), decided before: recurring work, or work a surface does now. */\n advisory: AdvisoryHint | null;\n description: string;\n tempId: string;\n tags: string[] | undefined;\n prioritySet: boolean;\n draftCreateCount: number;\n}): string[] {\n const hints: string[] = [];\n if (advisory) {\n hints.push(\n `${advisory.hint} If nothing actually blocks it: baker actions draft remove ${tempId}, then do the work.`,\n );\n }\n // The advisory reading is a judgment; this count is a fact. It keeps firing on\n // every further create — a chat that fanned out into a to-do list is the\n // failure the whole hint set exists to catch.\n if (draftCreateCount >= FAN_OUT_THRESHOLD) {\n hints.push(\n `${draftCreateCount} Tasks are staged in this chat. Re-read them with \\`baker actions draft\\`: can any be done now with a surface you already have, and do any two touch the same system (same container, same campaign, same page)? Those belong in ONE Task — fold them together with \\`baker actions update\\` and drop the extras with \\`baker actions draft remove <tempId>\\`.`,\n );\n } else if (draftCreateCount === FAN_OUT_NUDGE_THRESHOLD) {\n hints.push(\n `Second Task staged in this chat. If these two land on the same system (same container, same campaign, same page) they are ONE Task — fold them with \\`baker actions update\\` and drop the extra with \\`baker actions draft remove ${tempId}\\`.`,\n );\n }\n hints.push(`Link dependencies: baker actions link --blocker <id> --blocked ${tempId}`);\n if (!description) {\n hints.push(\"Add description: baker actions update <tempId> --description '...' (what/why/where/done-when)\");\n }\n if (!tags || tags.length === 0) {\n hints.push(\n \"MISSING --tags. This action is invisible to the backlog's tag filter. Re-run with --tags <slug,...> (`baker actions tags list` for the taxonomy, `baker actions tags create --slug <slug>` to mint) — or `baker actions update <tempId> --tags <slug,...>`.\",\n );\n }\n if (!prioritySet) {\n hints.push(\n `MISSING --priority. Without it this action ranks as 'normal' (medium) in the do-first ordering, so urgent/high client work won't surface first. Re-run with --priority ${ACTION_PRIORITIES.join(\"|\")} — or \\`baker actions update <tempId> --priority <level>\\`.`,\n );\n }\n return hints;\n}\n\n/**\n * How far back a flat `baker actions list` reads when the caller does not say.\n *\n * Sent explicitly rather than left to the server default so this side knows the\n * window it asked for, and can therefore tell when a read came back exactly full\n * — the only evidence available that older Tasks exist. Without that the agent\n * reads a truncated backlog as a complete one and reports finished work that was\n * never seen.\n */\nexport const ACTIONS_LIST_DEFAULT_LIMIT = 500;\n\nexport function buildListHints({ returned, limit }: { returned: number; limit: number }): string[] {\n if (returned < limit) {\n return [];\n }\n return [\n `This list is capped at ${limit} Tasks and came back full, so older Tasks exist that are NOT shown. Do not treat it as the whole backlog — re-run with --limit ${limit * 2} (or narrow with --status / --search).`,\n ];\n}\n\n/**\n * A pending Task nobody is working on is one the agent was most likely asked to\n * solve: without a claim the dashboard shows no work in progress on it.\n */\nexport function buildGetHints(\n detail: { action: { _id: string; status: string }; activeChat: unknown } | null,\n): string[] {\n if (!detail || detail.action.status !== \"pending\" || detail.activeChat !== null) {\n return [];\n }\n return [\n `If you are working on this Task in this chat, claim it first so the Tasks page shows it in progress: baker actions claim ${detail.action._id}`,\n ];\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/commands/actions/tagError.ts","../src/commands/actions/shared.ts"],"sourcesContent":["/**\n * Structured remediation for the one `actions` failure an agent cannot fix from\n * the message alone: an unknown `--tags` slug.\n *\n * The backend already inlines the valid taxonomy in the rejection text\n * (`unknownActionTagMessage`, packages/backend/convex/actionItems/tags/utils.ts),\n * but only `{ code, message }` crosses the HTTP boundary into `ApiError`. Parsing\n * the two lists back out here is what lets `error.fix` carry them as data, so the\n * agent retries in the same call instead of running `tags list` and trying again\n * — the \"list-then-retry dance\" this file exists to end.\n *\n * Fails closed: anything that doesn't match exactly returns `null` and the caller\n * emits the plain message it would have emitted anyway.\n */\n\nconst UNKNOWN_TAG_RE = /Unknown action tag\\(s\\): ([^.]+)\\. Valid tags: ([^.]+)\\./;\n\n// A type alias, not an interface: the envelope's `fix` slot is\n// `{ action, explanation } & Record<string, unknown>`, and only an alias is\n// structurally assignable to that index signature.\nexport type ActionTagFix = {\n action: \"retry_with_a_valid_tag\";\n explanation: string;\n unknownTags: string[];\n validTags: string[];\n mintCommand: string;\n listCommand: string;\n};\n\nfunction splitSlugs(list: string): string[] {\n return list\n .split(\",\")\n .map((slug) => slug.trim())\n .filter((slug) => slug.length > 0);\n}\n\nexport function actionTagFix(message: string): ActionTagFix | null {\n const match = UNKNOWN_TAG_RE.exec(message);\n if (!match) {\n return null;\n }\n const [, unknownList, validList] = match;\n const unknownTags = splitSlugs(unknownList ?? \"\");\n const validTags = splitSlugs(validList ?? \"\");\n const first = unknownTags[0];\n if (first === undefined || validTags.length === 0) {\n return null;\n }\n return {\n action: \"retry_with_a_valid_tag\",\n explanation:\n `The tag(s) ${unknownTags.join(\", \")} are not in this company's taxonomy. ` +\n `\\`validTags\\` below is the complete accepted set — pick from it and re-run the same command. ` +\n `Only mint a new tag when none of them names this work; a near-duplicate of an existing tag ` +\n `splits the backlog's filter instead of extending it.`,\n unknownTags,\n validTags,\n mintCommand: `baker actions tags create --slug ${first} --description \"<what ${first} groups>\"`,\n listCommand: \"baker actions tags list\",\n };\n}\n","import { ACTION_TEMP_ID_PREFIX } from \"@baker/api\";\nimport { ApiError } from \"../../client.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport type { AdvisoryHint } from \"./advisory.ts\";\nimport { actionTagFix } from \"./tagError.ts\";\n\nexport function writeOk<T = null>(data?: T): void {\n writeJson({ ok: true, data: (data ?? null) as T });\n}\n\nexport function failValidation(message: string): never {\n writeJson({ ok: false, error: { code: \"VALIDATION_ERROR\", message } });\n process.exit(1);\n}\n\n// Every actions command routes its API failures through here, so attaching the\n// tag `fix` at this one point covers `create`, `update`, and any later write\n// path that hits the same strict tag gate. Non-tag errors are untouched.\nexport function failApi(err: unknown): never {\n if (err instanceof ApiError) {\n const fix = actionTagFix(err.message);\n writeJson({ ok: false, error: { code: err.code, message: err.message, ...(fix ? { fix } : {}) } });\n process.exit(1);\n }\n if (err instanceof Error) {\n writeJson({ ok: false, error: { code: \"INTERNAL_ERROR\", message: err.message } });\n process.exit(1);\n }\n writeJson({ ok: false, error: { code: \"INTERNAL_ERROR\", message: \"Unexpected error\" } });\n process.exit(1);\n}\n\nexport function generateTempId(): string {\n return `${ACTION_TEMP_ID_PREFIX}${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 10)}`;\n}\n\nexport function isTempId(id: string): boolean {\n return id.startsWith(ACTION_TEMP_ID_PREFIX);\n}\n\n// Parse a `--tags a,b,c` CSV flag into a deduped slug list. Returns undefined\n// when the flag was omitted so callers can distinguish \"not provided\" from\n// \"explicitly cleared\" (empty list).\nexport function parseTagList(value: unknown): string[] | undefined {\n if (typeof value !== \"string\") {\n return undefined;\n }\n const tags = value\n .split(\",\")\n .map((t) => t.trim())\n .filter((t) => t.length > 0);\n return [...new Set(tags)];\n}\n\n// User priority for an action. Drives the dependency-aware \"Do first\" ordering\n// in `baker actions list`. Unset == \"normal\" (ranks as medium).\nexport const ACTION_PRIORITIES = [\"urgent\", \"high\", \"medium\", \"low\"] as const;\ntype ActionPriority = (typeof ACTION_PRIORITIES)[number];\n\n// Parse a `--priority` flag. Returns:\n// - undefined → flag omitted (leave unchanged on update; unset on create)\n// - null → explicit clear (only meaningful on update; \"\" or \"none\")\n// - one of ACTION_PRIORITIES on a valid value\n// Fails validation on any other string so the agent gets an immediate error.\nexport function parsePriority(\n value: unknown,\n { allowClear }: { allowClear: boolean },\n): ActionPriority | null | undefined {\n if (value === undefined) {\n return undefined;\n }\n if (typeof value !== \"string\") {\n failValidation(\n `--priority must be one of: ${ACTION_PRIORITIES.join(\", \")}${allowClear ? \", or 'none' to clear\" : \"\"}.`,\n );\n }\n const trimmed = value.trim().toLowerCase();\n if (trimmed === \"\") {\n if (allowClear) {\n return null;\n }\n return undefined;\n }\n if (allowClear && (trimmed === \"none\" || trimmed === \"clear\")) {\n return null;\n }\n if ((ACTION_PRIORITIES as readonly string[]).includes(trimmed)) {\n return trimmed as ActionPriority;\n }\n failValidation(\n `Unknown --priority \"${value}\". Expected one of: ${ACTION_PRIORITIES.join(\", \")}${allowClear ? \", or 'none' to clear\" : \"\"}.`,\n );\n}\n\n// Two tiers, because the two counts want different amounts of words.\n//\n// The mean chat that files anything files ~2, and two Tasks is already above\n// the bar (\"a Task is the exception\"), so a 2→1 merge is the cheapest win\n// available — but firing the full paragraph on the modal chat is how you train\n// the model to skim `hints[]` and miss the do-it-now redirect above it. So 2\n// gets one sentence.\n//\n// Three is where \"capturing follow-ups\" stops looking like a backlog and\n// starts looking like a to-do list handed back to the user. That gets the\n// paragraph, from there on, every time — a legitimate 3-Task chat (an approved\n// plan) still benefits from being asked whether any two merge.\nexport const FAN_OUT_NUDGE_THRESHOLD = 2;\nexport const FAN_OUT_THRESHOLD = 3;\n\n// Every hint `create` returns, in reading order. The two that argue against\n// the action existing come first — by the time the agent reaches \"add tags\" it\n// has already accepted the action as a given.\nexport function buildCreateHints({\n advisory,\n description,\n tempId,\n tags,\n prioritySet,\n draftCreateCount,\n}: {\n /** What the Task reads as (`advisory.ts`), decided before: recurring work, or work a surface does now. */\n advisory: AdvisoryHint | null;\n description: string;\n tempId: string;\n tags: string[] | undefined;\n prioritySet: boolean;\n draftCreateCount: number;\n}): string[] {\n const hints: string[] = [];\n if (advisory) {\n hints.push(\n `${advisory.hint} If nothing actually blocks it: baker actions draft remove ${tempId}, then do the work.`,\n );\n }\n // The advisory reading is a judgment; this count is a fact. It keeps firing on\n // every further create — a chat that fanned out into a to-do list is the\n // failure the whole hint set exists to catch.\n if (draftCreateCount >= FAN_OUT_THRESHOLD) {\n hints.push(\n `${draftCreateCount} Tasks are staged in this chat. Re-read them with \\`baker actions draft\\`: can any be done now with a surface you already have, and do any two touch the same system (same container, same campaign, same page)? Those belong in ONE Task — fold them together with \\`baker actions update\\` and drop the extras with \\`baker actions draft remove <tempId>\\`.`,\n );\n } else if (draftCreateCount === FAN_OUT_NUDGE_THRESHOLD) {\n hints.push(\n `Second Task staged in this chat. If these two land on the same system (same container, same campaign, same page) they are ONE Task — fold them with \\`baker actions update\\` and drop the extra with \\`baker actions draft remove ${tempId}\\`.`,\n );\n }\n hints.push(`Link dependencies: baker actions link --blocker <id> --blocked ${tempId}`);\n if (!description) {\n hints.push(\"Add description: baker actions update <tempId> --description '...' (what/why/where/done-when)\");\n }\n if (!tags || tags.length === 0) {\n hints.push(\n \"MISSING --tags. This action is invisible to the backlog's tag filter. Re-run with --tags <slug,...> (`baker actions tags list` for the taxonomy, `baker actions tags create --slug <slug>` to mint) — or `baker actions update <tempId> --tags <slug,...>`.\",\n );\n }\n if (!prioritySet) {\n hints.push(\n `MISSING --priority. Without it this action ranks as 'normal' (medium) in the do-first ordering, so urgent/high client work won't surface first. Re-run with --priority ${ACTION_PRIORITIES.join(\"|\")} — or \\`baker actions update <tempId> --priority <level>\\`.`,\n );\n }\n return hints;\n}\n\n/**\n * How far back a flat `baker actions list` reads when the caller does not say.\n *\n * Sent explicitly rather than left to the server default so this side knows the\n * window it asked for, and can therefore tell when a read came back exactly full\n * — the only evidence available that older Tasks exist. Without that the agent\n * reads a truncated backlog as a complete one and reports finished work that was\n * never seen.\n */\nexport const ACTIONS_LIST_DEFAULT_LIMIT = 500;\n\nexport function buildListHints({ returned, limit }: { returned: number; limit: number }): string[] {\n if (returned < limit) {\n return [];\n }\n return [\n `This list is capped at ${limit} Tasks and came back full, so older Tasks exist that are NOT shown. Do not treat it as the whole backlog — re-run with --limit ${limit * 2} (or narrow with --status / --search).`,\n ];\n}\n"],"mappings":"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","names":[]}
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
} from "./chunk-RX6F3GEA.js";
|
|
7
7
|
import {
|
|
8
8
|
brandTokensSchema
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-XF4JUKVF.js";
|
|
10
10
|
|
|
11
11
|
// src/engine/landing/lib/brand-tokens.ts
|
|
12
12
|
import { readFile as readFile2 } from "fs/promises";
|
|
@@ -334,4 +334,4 @@ export {
|
|
|
334
334
|
brandCommitsAiHue,
|
|
335
335
|
brandCommitsCream
|
|
336
336
|
};
|
|
337
|
-
//# sourceMappingURL=chunk-
|
|
337
|
+
//# sourceMappingURL=chunk-3IBYKLXR.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
REF_PREFIX
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-EBWBG6YV.js";
|
|
4
4
|
|
|
5
5
|
// src/commands/canvas/node-preview.ts
|
|
6
6
|
var MAX_PARAMS_PREVIEW_LENGTH = 4e3;
|
|
@@ -57,4 +57,4 @@ ${body}` : header || body || compactJson(record);
|
|
|
57
57
|
export {
|
|
58
58
|
nodeParamsPreview
|
|
59
59
|
};
|
|
60
|
-
//# sourceMappingURL=chunk-
|
|
60
|
+
//# sourceMappingURL=chunk-464O4MT2.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
handleLinkedinError,
|
|
3
3
|
resolveAccountIdArg
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-CSYSX4D2.js";
|
|
5
5
|
import {
|
|
6
6
|
adCopyHints,
|
|
7
7
|
booleanWordPositionalError,
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
import {
|
|
17
17
|
LINKEDIN_DRAFT_BATCH_MAX,
|
|
18
18
|
linkedinDraftOpInputSchema
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-XF4JUKVF.js";
|
|
20
20
|
import {
|
|
21
21
|
apiPost
|
|
22
22
|
} from "./chunk-XBOK23HI.js";
|
|
@@ -343,4 +343,4 @@ export {
|
|
|
343
343
|
requireTarget,
|
|
344
344
|
requireTargets
|
|
345
345
|
};
|
|
346
|
-
//# sourceMappingURL=chunk-
|
|
346
|
+
//# sourceMappingURL=chunk-4AUMTNVB.js.map
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
suggestFamilies,
|
|
21
21
|
unresolvedBrandFamilies,
|
|
22
22
|
upsertFontFaceCss
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-QRP3PXWN.js";
|
|
24
24
|
import {
|
|
25
25
|
registerSchema,
|
|
26
26
|
writeJson
|
|
@@ -491,4 +491,4 @@ export {
|
|
|
491
491
|
fontsAdoptCommand,
|
|
492
492
|
fontsCommand
|
|
493
493
|
};
|
|
494
|
-
//# sourceMappingURL=chunk-
|
|
494
|
+
//# sourceMappingURL=chunk-4BQXAE7Z.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
failApi
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-3HJLHTWP.js";
|
|
4
4
|
import {
|
|
5
5
|
CREATIVE_PERFORMANCE_DEFAULT_DAYS,
|
|
6
6
|
CREATIVE_PERFORMANCE_MAX_DAYS
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-XF4JUKVF.js";
|
|
8
8
|
import {
|
|
9
9
|
apiPost
|
|
10
10
|
} from "./chunk-XBOK23HI.js";
|
|
@@ -156,4 +156,4 @@ export {
|
|
|
156
156
|
parseDays,
|
|
157
157
|
performanceCommand
|
|
158
158
|
};
|
|
159
|
-
//# sourceMappingURL=chunk-
|
|
159
|
+
//# sourceMappingURL=chunk-5ZDLTE5T.js.map
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
import {
|
|
6
6
|
leadVersion,
|
|
7
7
|
writeSeriesMemberCanvas
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-S3A3YOKO.js";
|
|
9
9
|
import {
|
|
10
10
|
definitionFieldsOf,
|
|
11
11
|
setDefinitionFields,
|
|
@@ -89,4 +89,4 @@ export {
|
|
|
89
89
|
makeSeriesAd,
|
|
90
90
|
seriesMadeEnvelope
|
|
91
91
|
};
|
|
92
|
-
//# sourceMappingURL=chunk-
|
|
92
|
+
//# sourceMappingURL=chunk-6NB47MRW.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./chunk-GRQ2AXDX.js";
|
|
5
5
|
import {
|
|
6
6
|
MATCH_FIELD_FORWARDING
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-EDLZGTGN.js";
|
|
8
8
|
import {
|
|
9
9
|
EVENT_INGEST_BATCH_MAX,
|
|
10
10
|
EVENT_INGEST_BODY_MAX_BYTES,
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
MAX_EVENT_NAME,
|
|
14
14
|
REJECTION_CODES,
|
|
15
15
|
STANDARD_EVENT_NAMES
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-XF4JUKVF.js";
|
|
17
17
|
|
|
18
18
|
// ../api/src/event-ingest/arrivals.ts
|
|
19
19
|
import { z } from "zod";
|
|
@@ -430,4 +430,4 @@ export {
|
|
|
430
430
|
eventIngestUrl,
|
|
431
431
|
ingestBrief
|
|
432
432
|
};
|
|
433
|
-
//# sourceMappingURL=chunk-
|
|
433
|
+
//# sourceMappingURL=chunk-7YCRFMXF.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
creativesRunResponseSchema
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-XF4JUKVF.js";
|
|
4
4
|
import {
|
|
5
5
|
ApiError,
|
|
6
6
|
apiPost
|
|
@@ -20,4 +20,4 @@ async function fetchRunRecord(runId, post = apiPost) {
|
|
|
20
20
|
export {
|
|
21
21
|
fetchRunRecord
|
|
22
22
|
};
|
|
23
|
-
//# sourceMappingURL=chunk-
|
|
23
|
+
//# sourceMappingURL=chunk-A4LOJ2VD.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
mappingRowProblem,
|
|
3
3
|
mentionOf
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-EDLZGTGN.js";
|
|
5
5
|
import {
|
|
6
6
|
CONDITION_LOGICS,
|
|
7
7
|
HUBSPOT_DEAL_CONTACTS,
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
onlyCondition,
|
|
13
13
|
triggerProblem,
|
|
14
14
|
validateEventName
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-XF4JUKVF.js";
|
|
16
16
|
|
|
17
17
|
// ../api/src/event-sources/hubspot.ts
|
|
18
18
|
var HUBSPOT_CONTACT_ID_VARIABLE = "id";
|
|
@@ -307,4 +307,4 @@ export {
|
|
|
307
307
|
hubspotDefaultMapping,
|
|
308
308
|
hubspotTriggerInputSchema
|
|
309
309
|
};
|
|
310
|
-
//# sourceMappingURL=chunk-
|
|
310
|
+
//# sourceMappingURL=chunk-AEOSAVVL.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
nodeParamsPreview
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-464O4MT2.js";
|
|
4
4
|
import {
|
|
5
5
|
outputRatioWarningsFor
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-Q2V6E6SL.js";
|
|
7
7
|
import {
|
|
8
8
|
waitForSheet
|
|
9
9
|
} from "./chunk-WN4KX7GE.js";
|
|
@@ -13,10 +13,7 @@ import {
|
|
|
13
13
|
} from "./chunk-PWGWMIIJ.js";
|
|
14
14
|
import {
|
|
15
15
|
fetchBrandLogo
|
|
16
|
-
} from "./chunk-
|
|
17
|
-
import {
|
|
18
|
-
advanceDefinitionStatus
|
|
19
|
-
} from "./chunk-3ACMDRSE.js";
|
|
16
|
+
} from "./chunk-W3ZHJJVT.js";
|
|
20
17
|
import {
|
|
21
18
|
correctedPicture,
|
|
22
19
|
ingestedNow,
|
|
@@ -33,7 +30,7 @@ import {
|
|
|
33
30
|
variantImage,
|
|
34
31
|
versionRun,
|
|
35
32
|
writeSeriesMemberCanvas
|
|
36
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-S3A3YOKO.js";
|
|
37
34
|
import {
|
|
38
35
|
buildFailedRunRecord,
|
|
39
36
|
buildInitialRunRecord,
|
|
@@ -42,7 +39,7 @@ import {
|
|
|
42
39
|
finalFiles,
|
|
43
40
|
finalOutputLabelsFromCanvas,
|
|
44
41
|
nodeOutputsToRecord
|
|
45
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-Y6ZQXUZ7.js";
|
|
46
43
|
import {
|
|
47
44
|
clearLegacyDirtyMarker,
|
|
48
45
|
readRenderState,
|
|
@@ -51,7 +48,7 @@ import {
|
|
|
51
48
|
recordReviewOutcome,
|
|
52
49
|
recordSeriesLeadRun,
|
|
53
50
|
recordSnapshot
|
|
54
|
-
} from "./chunk-
|
|
51
|
+
} from "./chunk-KAUOHQTF.js";
|
|
55
52
|
import {
|
|
56
53
|
BRAND_LOGO_ROLE,
|
|
57
54
|
CLAIMS_MODEL,
|
|
@@ -79,7 +76,10 @@ import {
|
|
|
79
76
|
uncastPeople,
|
|
80
77
|
wireNamedPeople,
|
|
81
78
|
wireProofBadges
|
|
82
|
-
} from "./chunk-
|
|
79
|
+
} from "./chunk-YUCLMOEG.js";
|
|
80
|
+
import {
|
|
81
|
+
advanceDefinitionStatus
|
|
82
|
+
} from "./chunk-3ACMDRSE.js";
|
|
83
83
|
import {
|
|
84
84
|
ViewerAnswerSchema,
|
|
85
85
|
describeViewer,
|
|
@@ -118,7 +118,7 @@ import {
|
|
|
118
118
|
createEngineFromEnv,
|
|
119
119
|
resolveConcurrency,
|
|
120
120
|
ulid
|
|
121
|
-
} from "./chunk-
|
|
121
|
+
} from "./chunk-OQ6663F4.js";
|
|
122
122
|
import {
|
|
123
123
|
BackendClient,
|
|
124
124
|
LOGO_COMPOSITE_ROLE,
|
|
@@ -140,7 +140,10 @@ import {
|
|
|
140
140
|
regenerateTargets,
|
|
141
141
|
rolesById,
|
|
142
142
|
staticMasterFormat
|
|
143
|
-
} from "./chunk-
|
|
143
|
+
} from "./chunk-EBWBG6YV.js";
|
|
144
|
+
import {
|
|
145
|
+
requireCredentialsFromEnv
|
|
146
|
+
} from "./chunk-W3B4BHQU.js";
|
|
144
147
|
import {
|
|
145
148
|
bytesOf,
|
|
146
149
|
judgeWinner,
|
|
@@ -150,9 +153,6 @@ import {
|
|
|
150
153
|
samePictureSizes,
|
|
151
154
|
staticVerdict
|
|
152
155
|
} from "./chunk-NCWCZY5P.js";
|
|
153
|
-
import {
|
|
154
|
-
requireCredentialsFromEnv
|
|
155
|
-
} from "./chunk-W3B4BHQU.js";
|
|
156
156
|
import {
|
|
157
157
|
AdSpecSchema,
|
|
158
158
|
adSpecJsonSchema,
|
|
@@ -2102,6 +2102,10 @@ function acceptRepair(before, answer) {
|
|
|
2102
2102
|
const now = AdSpecSchema.safeParse(spec);
|
|
2103
2103
|
if (!was.success || !now.success) return null;
|
|
2104
2104
|
if (JSON.stringify(was.data) === JSON.stringify(now.data)) return null;
|
|
2105
|
+
for (const key of ["concept", "mechanism", "message", "brand"]) {
|
|
2106
|
+
if (JSON.stringify(was.data[key]) !== JSON.stringify(now.data[key])) return null;
|
|
2107
|
+
}
|
|
2108
|
+
if (was.data.native && was.data.native.surface !== now.data.native?.surface) return null;
|
|
2105
2109
|
const kept = printedWords(now.data);
|
|
2106
2110
|
if (!printedWords(was.data).every((text) => kept.includes(text))) return null;
|
|
2107
2111
|
return { changed: parsed.data.changed, spec };
|
|
@@ -2117,6 +2121,8 @@ function buildSpecRepairPrompt(spec, findings, schema) {
|
|
|
2117
2121
|
"- A rating or stars shown with no source: name the source only if the spec already states one anywhere; otherwise drop the stars or the rating. Never invent a source, a number or a claim.",
|
|
2118
2122
|
"- A native screen's layout (where its headline, bubbles or cards sit, what it shows) is changed in its `native` block.",
|
|
2119
2123
|
"- Keep every line of copy word for word: never reword, shorten or drop one. Keep the schema, the brand and everything the defects do not touch.",
|
|
2124
|
+
"- Preserve `concept`, `mechanism`, `message` and `brand` exactly, including the CTA colour. Fix how the ad executes its idea; never change why it works or remove its load-bearing elements to make a defect pass.",
|
|
2125
|
+
"- Keep a native screen on the same `native.surface`. Notes stays Notes, a review stays on its review platform. Change its layout or content only; never replace it with a physical document or a generic ad.",
|
|
2120
2126
|
"",
|
|
2121
2127
|
'Reply with only this JSON, naming only the fields you replace, each by its dotted path in the spec ("scene.layout", "references", "copy.2.position", "native.messages"), with its whole new value: {"changed": "<one plain sentence a marketer reads: what you changed and why>", "set": [{"path": "<dotted path>", "value": <its new value>}]}',
|
|
2122
2128
|
"",
|
|
@@ -3144,4 +3150,4 @@ export {
|
|
|
3144
3150
|
executeCanvasRun,
|
|
3145
3151
|
buildBackendClient
|
|
3146
3152
|
};
|
|
3147
|
-
//# sourceMappingURL=chunk-
|
|
3153
|
+
//# sourceMappingURL=chunk-CMPEUZOR.js.map
|