@koda-sl/baker-cli 0.449.0 → 0.450.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -2
- package/dist/{account-AL2ZDSR7.js → account-2SVI5OK7.js} +4 -4
- package/dist/{accounts-HAFCLSR5.js → accounts-2XAOZX3U.js} +3 -3
- package/dist/{accounts-O5MFO3QQ.js → accounts-U4BGY3QU.js} +5 -5
- package/dist/{actions-P35MEMGN.js → actions-6EJU7CAQ.js} +18 -18
- package/dist/{add-6DTC6X5G.js → add-IPGEYQQG.js} +2 -2
- package/dist/{add-5GAN6CVO.js → add-P7CCVY2J.js} +27 -5
- package/dist/add-P7CCVY2J.js.map +1 -0
- package/dist/{ads-C47NA2HH.js → ads-6MXVIV62.js} +3 -3
- package/dist/{advertisers-AE75CGVE.js → advertisers-JG4DZ6SB.js} +3 -3
- package/dist/{analytics-FKCXIMPO.js → analytics-IMYVNQIX.js} +6 -6
- package/dist/{analytics-FPWQQGRM.js → analytics-RNEUAKC4.js} +3 -3
- package/dist/{assign-ABN2AQ4J.js → assign-46TXQRT5.js} +3 -3
- package/dist/{audience-size-GNBJY35X.js → audience-size-5TNQO3IL.js} +3 -3
- package/dist/{audit-3VS63TBW.js → audit-XRE7XH3Q.js} +3 -3
- package/dist/{autocomplete-VS3XG3B7.js → autocomplete-2ZWSQ6QQ.js} +3 -3
- package/dist/{avatars-EKCKHCC3.js → avatars-M6NSD3KS.js} +4 -4
- package/dist/{bid-pricing-Q72B65AY.js → bid-pricing-OIVPZCWW.js} +3 -3
- package/dist/{brand-C6PFGGQN.js → brand-YDNX7LYQ.js} +2 -2
- package/dist/{brief-UO52ZHFI.js → brief-EK6ULGXD.js} +7 -7
- package/dist/{campaign-groups-KFFYQPU3.js → campaign-groups-TAP6LK6F.js} +8 -8
- package/dist/{campaign-writes-FHOS5XZY.js → campaign-writes-4SWPBZE6.js} +3 -3
- package/dist/{campaigns-KZYZTXDS.js → campaigns-AQAJN23T.js} +5 -5
- package/dist/{campaigns-2NHWBF5C.js → campaigns-ROMLENHI.js} +11 -11
- package/dist/{canvas-DPCBGW7K.js → canvas-XYCDLDRS.js} +12 -12
- package/dist/{capabilities-DJFTRJKS.js → capabilities-GGPTIAFO.js} +3 -3
- package/dist/{chats-D2CSDX5Q.js → chats-G343BSVB.js} +3 -3
- package/dist/{chunk-OZRUJVIQ.js → chunk-355DHOHD.js} +2 -2
- package/dist/{chunk-CSYSX4D2.js → chunk-3URK7DAA.js} +2 -2
- package/dist/{chunk-A4LOJ2VD.js → chunk-3YOFT3AP.js} +2 -2
- package/dist/{chunk-647RO73Q.js → chunk-542XAHNT.js} +2 -2
- package/dist/{chunk-5ZDLTE5T.js → chunk-64WGDUXH.js} +3 -3
- package/dist/{chunk-HBTF25YG.js → chunk-7WD2RW2R.js} +2 -2
- package/dist/{chunk-QRP3PXWN.js → chunk-B6GITCGN.js} +2 -2
- package/dist/{chunk-XF4JUKVF.js → chunk-BAUSWB7O.js} +30 -3
- package/dist/chunk-BAUSWB7O.js.map +1 -0
- package/dist/{chunk-IBURXTL4.js → chunk-D5XAVXUZ.js} +5 -5
- package/dist/{chunk-3HJLHTWP.js → chunk-EIVYFZ4N.js} +12 -3
- package/dist/{chunk-3HJLHTWP.js.map → chunk-EIVYFZ4N.js.map} +1 -1
- package/dist/{chunk-JQJDXPCO.js → chunk-F4F3PLN3.js} +2 -2
- package/dist/{chunk-NPY4QUMQ.js → chunk-LZSXZB2F.js} +2 -2
- package/dist/{chunk-3IBYKLXR.js → chunk-MURPCCLG.js} +2 -2
- package/dist/{chunk-2QHODRR6.js → chunk-NEXCBTBZ.js} +2 -2
- package/dist/{chunk-AEOSAVVL.js → chunk-NR2TDASR.js} +2 -2
- package/dist/{chunk-KHRXPQID.js → chunk-OVT676K6.js} +2 -2
- package/dist/{chunk-FD27ZDVP.js → chunk-P2RE52V7.js} +2 -2
- package/dist/{chunk-Z2EOC6PL.js → chunk-P6ICBEE4.js} +4 -4
- package/dist/{chunk-TT5R35PJ.js → chunk-PLGIETFZ.js} +3 -3
- package/dist/{chunk-YRQYA2LR.js → chunk-Q4JYX424.js} +63 -5
- package/dist/chunk-Q4JYX424.js.map +1 -0
- package/dist/{chunk-4AUMTNVB.js → chunk-QJNTI36W.js} +3 -3
- package/dist/{chunk-5Y5UAJWD.js → chunk-TD6GIMV6.js} +3 -3
- package/dist/{chunk-ZEYEWPK6.js → chunk-TESII3FM.js} +2 -2
- package/dist/{chunk-GBMP4F45.js → chunk-TXI5OWCF.js} +5 -5
- package/dist/{chunk-IR6D7K4H.js → chunk-UC7VFFXR.js} +2 -2
- package/dist/{chunk-7YCRFMXF.js → chunk-UNI5AASR.js} +2 -2
- package/dist/{chunk-3G3ZDLMI.js → chunk-UX5HYEN3.js} +2 -2
- package/dist/{chunk-MXYBTMKB.js → chunk-V4RGDJAN.js} +2 -2
- package/dist/{chunk-SHL7LOC3.js → chunk-W2TJIZS2.js} +3 -3
- package/dist/{chunk-4BQXAE7Z.js → chunk-W5VGWEAG.js} +2 -2
- package/dist/{chunk-S77PZVYM.js → chunk-WDZOVF6P.js} +3 -3
- package/dist/{chunk-Y6O7EWYY.js → chunk-YCOP4FGJ.js} +2 -2
- package/dist/{chunk-DWHIOO7E.js → chunk-YT7SSJFR.js} +163 -12
- package/dist/chunk-YT7SSJFR.js.map +1 -0
- package/dist/{claim-FZ5OQLMU.js → claim-INJHV4FM.js} +3 -3
- package/dist/cli.js +27 -27
- package/dist/{companies-DNI634RC.js → companies-3REQZWKU.js} +3 -3
- package/dist/{complete-2FZMGJV5.js → complete-DX2DAAEZ.js} +3 -3
- package/dist/{connect-QCOGEPP4.js → connect-O4OGKMAK.js} +12 -6
- package/dist/{conversation-6IOGV7B7.js → conversation-6A2X5W64.js} +3 -3
- package/dist/{conversions-4SRZPBBX.js → conversions-PT6UDIX3.js} +7 -7
- package/dist/{create-VXM34ZWH.js → create-BR3Q4A4C.js} +3 -3
- package/dist/{create-BJNMO6HT.js → create-EOLNJGAX.js} +2 -2
- package/dist/{create-FX4OJ2XF.js → create-I2UB7FWX.js} +3 -3
- package/dist/{create-RM7HV77Y.js → create-S47CLYXJ.js} +3 -3
- package/dist/{creatives-SJTJU6VT.js → creatives-D3NXWVUF.js} +10 -10
- package/dist/{creatives-JSWBFQ5R.js → creatives-FBH4DKSX.js} +8 -8
- package/dist/{credentials-VOZTILFO.js → credentials-4BPEXA3E.js} +3 -3
- package/dist/{critique-65W63MFZ.js → critique-3XJG44NG.js} +5 -5
- package/dist/{critique-ZS4ON3SU.js → critique-LU27A765.js} +3 -3
- package/dist/{crm-52ROSWH5.js → crm-GOE6ZO5N.js} +4 -4
- package/dist/{crm-R5IXIFIV.js → crm-NEI6E2T2.js} +4 -4
- package/dist/{customers-4AWBFDUF.js → customers-USB6VCMU.js} +5 -5
- package/dist/{delete-M2GDLPYN.js → delete-67XFFHUY.js} +2 -2
- package/dist/{delete-HGHXY24R.js → delete-BT7I3EMN.js} +3 -3
- package/dist/{delete-AIGE4Y4H.js → delete-ONE22VRX.js} +3 -3
- package/dist/{demographics-NTWB2IMG.js → demographics-R4LCQGDJ.js} +3 -3
- package/dist/{discard-2WWQG6OU.js → discard-BOPTV4V5.js} +3 -3
- package/dist/{domain-Y2LT6JLT.js → domain-B54ILSOO.js} +3 -3
- package/dist/{draft-SLHAKJ2A.js → draft-DWSBVJUF.js} +3 -3
- package/dist/{draft-FJ7WHIXW.js → draft-J4SGNGGW.js} +3 -3
- package/dist/{draft-EJXNNJ3Y.js → draft-ROERDGSK.js} +4 -4
- package/dist/{facets-U7AQC4H6.js → facets-FUTIWQXK.js} +3 -3
- package/dist/{feedback-XNJQ63DS.js → feedback-C6CBUUDA.js} +2 -2
- package/dist/{feedback-record-FDLMWMDG.js → feedback-record-FM5MW2YV.js} +7 -7
- package/dist/{fetch-W7NULDEO.js → fetch-D7JPGEYZ.js} +3 -3
- package/dist/{flows-KABCBS3S.js → flows-L6BF3TDT.js} +20 -17
- package/dist/flows-L6BF3TDT.js.map +1 -0
- package/dist/{fonts-EMMX3KII.js → fonts-THAAZY7Z.js} +5 -5
- package/dist/{forecast-GNODEIIC.js → forecast-RYYVMNYT.js} +3 -3
- package/dist/{funnel-AAX27NH4.js → funnel-SK7WDPRS.js} +4 -4
- package/dist/{get-RTVUZM6E.js → get-3STPGBX3.js} +3 -3
- package/dist/{get-QEYJRLV3.js → get-YBIF3H52.js} +6 -4
- package/dist/get-YBIF3H52.js.map +1 -0
- package/dist/{google-ads-OK6IG3UV.js → google-ads-YD7LYWGY.js} +3 -3
- package/dist/{history-PQUJKK26.js → history-RWWBR4TN.js} +3 -3
- package/dist/{hubspot-Y77VLY6Y.js → hubspot-E65QNOI4.js} +7 -7
- package/dist/{ideas-MIDU7YOA.js → ideas-ZB7O7T5I.js} +2 -2
- package/dist/{images-S254MS6O.js → images-U4DKZQTE.js} +4 -4
- package/dist/{ingest-YV2NLDBE.js → ingest-MZXGMFA5.js} +3 -3
- package/dist/{ingest-J4I3HKM3.js → ingest-ROEMTZMG.js} +2 -2
- package/dist/{inspect-Q5NHBBHX.js → inspect-MCMUJPXU.js} +3 -3
- package/dist/{keyword-metrics-PDY4ZXSP.js → keyword-metrics-MLFTDAS4.js} +3 -3
- package/dist/{keywords-for-site-GALSCV77.js → keywords-for-site-4WUBJNTI.js} +3 -3
- package/dist/{landing-CJYGWCK4.js → landing-5GDWJN4C.js} +2 -2
- package/dist/{leads-PHKG6CP3.js → leads-LDOOJI5K.js} +3 -3
- package/dist/{learn-3VO6DXUX.js → learn-MMIGRLCP.js} +4 -4
- package/dist/{line-item-writes-E6MZPIZZ.js → line-item-writes-LFDWJBQG.js} +3 -3
- package/dist/{line-items-7ZGIKEF2.js → line-items-T3EVXB4M.js} +5 -5
- package/dist/{link-QYAW6A2W.js → link-M5ESAD5Y.js} +3 -3
- package/dist/{linkedin-FFSDSGGS.js → linkedin-4FNKZNIR.js} +26 -26
- package/dist/{list-SAV3LQHY.js → list-EF6QI4JT.js} +3 -3
- package/dist/{list-5IC6KIKO.js → list-FNW254C3.js} +3 -3
- package/dist/{list-NVQC5SNY.js → list-XWUTPJRQ.js} +2 -2
- package/dist/{log-XZPVOALD.js → log-5MESJJLM.js} +3 -3
- package/dist/{make-LCNP76OF.js → make-ATEHKECL.js} +10 -10
- package/dist/{map-4J5WIWIG.js → map-5NONUYFP.js} +4 -4
- package/dist/{mcp-XXD7ZQCP.js → mcp-CGITBQQA.js} +2 -2
- package/dist/{media-sources-O6ZRUA3N.js → media-sources-6TFUGPE2.js} +2 -2
- package/dist/{members-D5ZYLS4Y.js → members-R2GQVSVA.js} +3 -3
- package/dist/{normalize-PCNC6E2N.js → normalize-L6WBNGQA.js} +6 -3
- package/dist/{normalize-PCNC6E2N.js.map → normalize-L6WBNGQA.js.map} +1 -1
- package/dist/{options-MQ65VEVD.js → options-YT2ZGB2Z.js} +6 -6
- package/dist/{performance-6QW2KEEQ.js → performance-52IILAFE.js} +4 -4
- package/dist/{promoted-tweet-writes-JPLHY3GM.js → promoted-tweet-writes-QVIKWEIZ.js} +3 -3
- package/dist/{promoted-tweets-SURKMHFI.js → promoted-tweets-2AALRV5O.js} +3 -3
- package/dist/{publish-HCQ6MXLB.js → publish-XFLOZAOQ.js} +3 -3
- package/dist/{reddit-GIP3ADMS.js → reddit-HFBAGWNP.js} +4 -4
- package/dist/{refresh-UXQSLCR3.js → refresh-INKIU3QV.js} +2 -2
- package/dist/{release-5KVLXNP6.js → release-C2MFXAPJ.js} +3 -3
- package/dist/{remove-6FIVKCJI.js → remove-JWSVNUJ4.js} +2 -2
- package/dist/{reopen-YM5LNOLB.js → reopen-3GM4OSLZ.js} +3 -3
- package/dist/{rerun-CET74VPF.js → rerun-FCZRSS3H.js} +10 -10
- package/dist/{research-EY7C7JJY.js → research-EBQ5KWOS.js} +10 -10
- package/dist/{research-YOGE7GT2.js → research-HUMDT7T4.js} +2 -2
- package/dist/{reset-OLVB6AE6.js → reset-3BEGDSBW.js} +2 -2
- package/dist/{reset-C4UHQ3EU.js → reset-TVDYP2VK.js} +2 -2
- package/dist/{resolve-XYH2GDAE.js → resolve-OQKUGWEI.js} +3 -3
- package/dist/{retry-726GKI6V.js → retry-EJBF6GBJ.js} +2 -2
- package/dist/{retry-7EELDEQP.js → retry-GUHOWYO2.js} +2 -2
- package/dist/{run-P4KR2MXC.js → run-3D6QZC6L.js} +3 -3
- package/dist/{run-XQ7EM3JT.js → run-CUUAWKAZ.js} +10 -10
- package/dist/{scaffold-ad-U2KSHKBC.js → scaffold-ad-AYKWASWY.js} +8 -8
- package/dist/{scaffold-static-ad-63LQKUSO.js → scaffold-static-ad-IEZEQW4N.js} +12 -12
- package/dist/{scaffold-video-MUS6LHJQ.js → scaffold-video-YMN7AJS4.js} +7 -7
- package/dist/{schedule-RDK4GEPI.js → schedule-QVYVMRIY.js} +2 -2
- package/dist/{scheduled-agents-6U44QE76.js → scheduled-agents-CNIGCLAP.js} +11 -11
- package/dist/{schema-CHJDC7GQ.js → schema-7UUVQ4RH.js} +7 -4
- package/dist/{schema-CHJDC7GQ.js.map → schema-7UUVQ4RH.js.map} +1 -1
- package/dist/{search-PMJRU3C4.js → search-XUGIKFW3.js} +2 -2
- package/dist/{select-4Z7BW5RH.js → select-LSS7ZJSB.js} +7 -7
- package/dist/{set-prompt-OB2V3XJP.js → set-prompt-P3WR2TZX.js} +5 -5
- package/dist/{setup-links-REPREN3C.js → setup-links-4VILWID2.js} +3 -3
- package/dist/{site-WFSWIA3S.js → site-TLJVSZQF.js} +4 -4
- package/dist/{sources-YBQ6KPFM.js → sources-4MKBWFWG.js} +6 -6
- package/dist/{sources-AMI2AWKZ.js → sources-7FCRKPXJ.js} +6 -6
- package/dist/{stale-DAYXOY3Z.js → stale-7VJECYYJ.js} +6 -6
- package/dist/{status-7F2KHFGA.js → status-WZKAKUG4.js} +3 -3
- package/dist/{sync-GWTLKZTU.js → sync-DEWLEMTT.js} +2 -2
- package/dist/{sync-definition-ILS2B2BJ.js → sync-definition-ARIX5XWM.js} +7 -7
- package/dist/{tags-3WPW6PTV.js → tags-ANV54THE.js} +4 -4
- package/dist/{tags-FJIBBBRG.js → tags-IWN3QPK5.js} +3 -3
- package/dist/{tags-ABHSX6M5.js → tags-O76MDVID.js} +3 -3
- package/dist/{tags-6342FQEB.js → tags-RBB4TU7U.js} +3 -3
- package/dist/{tags-KFYLZLB3.js → tags-V5FR3DYU.js} +2 -2
- package/dist/{targeting-criteria-NR47AF5C.js → targeting-criteria-6IOXVE4K.js} +3 -3
- package/dist/{targets-L56KOVQE.js → targets-FFLV6OMF.js} +3 -3
- package/dist/{templates-B6XGDYUF.js → templates-Y3ZLB7MK.js} +3 -3
- package/dist/{testimonials-CVC4YIXO.js → testimonials-FCYS4NKB.js} +6 -6
- package/dist/{top-companies-45X3DT7Z.js → top-companies-BL4F7OPI.js} +3 -3
- package/dist/{translate-TA5KQIU7.js → translate-GGONJG62.js} +10 -10
- package/dist/{triggers-22EMIVFD.js → triggers-6Q3YRHZS.js} +3 -3
- package/dist/{unlink-65KUN6ID.js → unlink-WDSOVBFL.js} +3 -3
- package/dist/{unstage-2E3I5SWF.js → unstage-JYJIKPB5.js} +3 -3
- package/dist/{update-2S7CSEAW.js → update-CWZVKOUB.js} +3 -3
- package/dist/{update-7NCOTAQZ.js → update-FUYXN33G.js} +3 -3
- package/dist/{update-KREBPGBH.js → update-IXSCDBM4.js} +3 -3
- package/dist/{update-D6DJC6T7.js → update-WSG6RVFX.js} +2 -2
- package/dist/{upload-O6NHRPS7.js → upload-CKV2XS3G.js} +3 -3
- package/dist/{url-params-3EFGVTZZ.js → url-params-UJSNI4XC.js} +3 -3
- package/dist/{validate-LDBAAXQO.js → validate-FSFELDFZ.js} +5 -5
- package/dist/{videos-YSXYGTBM.js → videos-FAKURRTG.js} +5 -5
- package/dist/{web-IGIGVEKS.js → web-RRGHSAFY.js} +3 -3
- package/dist/{winning-ads-ASH5DSV3.js → winning-ads-HRSCX6O2.js} +2 -2
- package/dist/{write-commands-5C7FUOVN.js → write-commands-TAG7DQKT.js} +4 -4
- package/dist/{x-BFSKFCZD.js → x-FBWHL3PL.js} +6 -6
- package/package.json +1 -1
- package/dist/add-5GAN6CVO.js.map +0 -1
- package/dist/chunk-DWHIOO7E.js.map +0 -1
- package/dist/chunk-XF4JUKVF.js.map +0 -1
- package/dist/chunk-YRQYA2LR.js.map +0 -1
- package/dist/flows-KABCBS3S.js.map +0 -1
- package/dist/get-QEYJRLV3.js.map +0 -1
- /package/dist/{account-AL2ZDSR7.js.map → account-2SVI5OK7.js.map} +0 -0
- /package/dist/{accounts-HAFCLSR5.js.map → accounts-2XAOZX3U.js.map} +0 -0
- /package/dist/{accounts-O5MFO3QQ.js.map → accounts-U4BGY3QU.js.map} +0 -0
- /package/dist/{actions-P35MEMGN.js.map → actions-6EJU7CAQ.js.map} +0 -0
- /package/dist/{add-6DTC6X5G.js.map → add-IPGEYQQG.js.map} +0 -0
- /package/dist/{ads-C47NA2HH.js.map → ads-6MXVIV62.js.map} +0 -0
- /package/dist/{advertisers-AE75CGVE.js.map → advertisers-JG4DZ6SB.js.map} +0 -0
- /package/dist/{analytics-FKCXIMPO.js.map → analytics-IMYVNQIX.js.map} +0 -0
- /package/dist/{analytics-FPWQQGRM.js.map → analytics-RNEUAKC4.js.map} +0 -0
- /package/dist/{assign-ABN2AQ4J.js.map → assign-46TXQRT5.js.map} +0 -0
- /package/dist/{audience-size-GNBJY35X.js.map → audience-size-5TNQO3IL.js.map} +0 -0
- /package/dist/{audit-3VS63TBW.js.map → audit-XRE7XH3Q.js.map} +0 -0
- /package/dist/{autocomplete-VS3XG3B7.js.map → autocomplete-2ZWSQ6QQ.js.map} +0 -0
- /package/dist/{avatars-EKCKHCC3.js.map → avatars-M6NSD3KS.js.map} +0 -0
- /package/dist/{bid-pricing-Q72B65AY.js.map → bid-pricing-OIVPZCWW.js.map} +0 -0
- /package/dist/{brand-C6PFGGQN.js.map → brand-YDNX7LYQ.js.map} +0 -0
- /package/dist/{brief-UO52ZHFI.js.map → brief-EK6ULGXD.js.map} +0 -0
- /package/dist/{campaign-groups-KFFYQPU3.js.map → campaign-groups-TAP6LK6F.js.map} +0 -0
- /package/dist/{campaign-writes-FHOS5XZY.js.map → campaign-writes-4SWPBZE6.js.map} +0 -0
- /package/dist/{campaigns-KZYZTXDS.js.map → campaigns-AQAJN23T.js.map} +0 -0
- /package/dist/{campaigns-2NHWBF5C.js.map → campaigns-ROMLENHI.js.map} +0 -0
- /package/dist/{canvas-DPCBGW7K.js.map → canvas-XYCDLDRS.js.map} +0 -0
- /package/dist/{capabilities-DJFTRJKS.js.map → capabilities-GGPTIAFO.js.map} +0 -0
- /package/dist/{chats-D2CSDX5Q.js.map → chats-G343BSVB.js.map} +0 -0
- /package/dist/{chunk-OZRUJVIQ.js.map → chunk-355DHOHD.js.map} +0 -0
- /package/dist/{chunk-CSYSX4D2.js.map → chunk-3URK7DAA.js.map} +0 -0
- /package/dist/{chunk-A4LOJ2VD.js.map → chunk-3YOFT3AP.js.map} +0 -0
- /package/dist/{chunk-647RO73Q.js.map → chunk-542XAHNT.js.map} +0 -0
- /package/dist/{chunk-5ZDLTE5T.js.map → chunk-64WGDUXH.js.map} +0 -0
- /package/dist/{chunk-HBTF25YG.js.map → chunk-7WD2RW2R.js.map} +0 -0
- /package/dist/{chunk-QRP3PXWN.js.map → chunk-B6GITCGN.js.map} +0 -0
- /package/dist/{chunk-IBURXTL4.js.map → chunk-D5XAVXUZ.js.map} +0 -0
- /package/dist/{chunk-JQJDXPCO.js.map → chunk-F4F3PLN3.js.map} +0 -0
- /package/dist/{chunk-NPY4QUMQ.js.map → chunk-LZSXZB2F.js.map} +0 -0
- /package/dist/{chunk-3IBYKLXR.js.map → chunk-MURPCCLG.js.map} +0 -0
- /package/dist/{chunk-2QHODRR6.js.map → chunk-NEXCBTBZ.js.map} +0 -0
- /package/dist/{chunk-AEOSAVVL.js.map → chunk-NR2TDASR.js.map} +0 -0
- /package/dist/{chunk-KHRXPQID.js.map → chunk-OVT676K6.js.map} +0 -0
- /package/dist/{chunk-FD27ZDVP.js.map → chunk-P2RE52V7.js.map} +0 -0
- /package/dist/{chunk-Z2EOC6PL.js.map → chunk-P6ICBEE4.js.map} +0 -0
- /package/dist/{chunk-TT5R35PJ.js.map → chunk-PLGIETFZ.js.map} +0 -0
- /package/dist/{chunk-4AUMTNVB.js.map → chunk-QJNTI36W.js.map} +0 -0
- /package/dist/{chunk-5Y5UAJWD.js.map → chunk-TD6GIMV6.js.map} +0 -0
- /package/dist/{chunk-ZEYEWPK6.js.map → chunk-TESII3FM.js.map} +0 -0
- /package/dist/{chunk-GBMP4F45.js.map → chunk-TXI5OWCF.js.map} +0 -0
- /package/dist/{chunk-IR6D7K4H.js.map → chunk-UC7VFFXR.js.map} +0 -0
- /package/dist/{chunk-7YCRFMXF.js.map → chunk-UNI5AASR.js.map} +0 -0
- /package/dist/{chunk-3G3ZDLMI.js.map → chunk-UX5HYEN3.js.map} +0 -0
- /package/dist/{chunk-MXYBTMKB.js.map → chunk-V4RGDJAN.js.map} +0 -0
- /package/dist/{chunk-SHL7LOC3.js.map → chunk-W2TJIZS2.js.map} +0 -0
- /package/dist/{chunk-4BQXAE7Z.js.map → chunk-W5VGWEAG.js.map} +0 -0
- /package/dist/{chunk-S77PZVYM.js.map → chunk-WDZOVF6P.js.map} +0 -0
- /package/dist/{chunk-Y6O7EWYY.js.map → chunk-YCOP4FGJ.js.map} +0 -0
- /package/dist/{claim-FZ5OQLMU.js.map → claim-INJHV4FM.js.map} +0 -0
- /package/dist/{companies-DNI634RC.js.map → companies-3REQZWKU.js.map} +0 -0
- /package/dist/{complete-2FZMGJV5.js.map → complete-DX2DAAEZ.js.map} +0 -0
- /package/dist/{connect-QCOGEPP4.js.map → connect-O4OGKMAK.js.map} +0 -0
- /package/dist/{conversation-6IOGV7B7.js.map → conversation-6A2X5W64.js.map} +0 -0
- /package/dist/{conversions-4SRZPBBX.js.map → conversions-PT6UDIX3.js.map} +0 -0
- /package/dist/{create-VXM34ZWH.js.map → create-BR3Q4A4C.js.map} +0 -0
- /package/dist/{create-BJNMO6HT.js.map → create-EOLNJGAX.js.map} +0 -0
- /package/dist/{create-FX4OJ2XF.js.map → create-I2UB7FWX.js.map} +0 -0
- /package/dist/{create-RM7HV77Y.js.map → create-S47CLYXJ.js.map} +0 -0
- /package/dist/{creatives-SJTJU6VT.js.map → creatives-D3NXWVUF.js.map} +0 -0
- /package/dist/{creatives-JSWBFQ5R.js.map → creatives-FBH4DKSX.js.map} +0 -0
- /package/dist/{credentials-VOZTILFO.js.map → credentials-4BPEXA3E.js.map} +0 -0
- /package/dist/{critique-65W63MFZ.js.map → critique-3XJG44NG.js.map} +0 -0
- /package/dist/{critique-ZS4ON3SU.js.map → critique-LU27A765.js.map} +0 -0
- /package/dist/{crm-52ROSWH5.js.map → crm-GOE6ZO5N.js.map} +0 -0
- /package/dist/{crm-R5IXIFIV.js.map → crm-NEI6E2T2.js.map} +0 -0
- /package/dist/{customers-4AWBFDUF.js.map → customers-USB6VCMU.js.map} +0 -0
- /package/dist/{delete-M2GDLPYN.js.map → delete-67XFFHUY.js.map} +0 -0
- /package/dist/{delete-HGHXY24R.js.map → delete-BT7I3EMN.js.map} +0 -0
- /package/dist/{delete-AIGE4Y4H.js.map → delete-ONE22VRX.js.map} +0 -0
- /package/dist/{demographics-NTWB2IMG.js.map → demographics-R4LCQGDJ.js.map} +0 -0
- /package/dist/{discard-2WWQG6OU.js.map → discard-BOPTV4V5.js.map} +0 -0
- /package/dist/{domain-Y2LT6JLT.js.map → domain-B54ILSOO.js.map} +0 -0
- /package/dist/{draft-SLHAKJ2A.js.map → draft-DWSBVJUF.js.map} +0 -0
- /package/dist/{draft-FJ7WHIXW.js.map → draft-J4SGNGGW.js.map} +0 -0
- /package/dist/{draft-EJXNNJ3Y.js.map → draft-ROERDGSK.js.map} +0 -0
- /package/dist/{facets-U7AQC4H6.js.map → facets-FUTIWQXK.js.map} +0 -0
- /package/dist/{feedback-XNJQ63DS.js.map → feedback-C6CBUUDA.js.map} +0 -0
- /package/dist/{feedback-record-FDLMWMDG.js.map → feedback-record-FM5MW2YV.js.map} +0 -0
- /package/dist/{fetch-W7NULDEO.js.map → fetch-D7JPGEYZ.js.map} +0 -0
- /package/dist/{fonts-EMMX3KII.js.map → fonts-THAAZY7Z.js.map} +0 -0
- /package/dist/{forecast-GNODEIIC.js.map → forecast-RYYVMNYT.js.map} +0 -0
- /package/dist/{funnel-AAX27NH4.js.map → funnel-SK7WDPRS.js.map} +0 -0
- /package/dist/{get-RTVUZM6E.js.map → get-3STPGBX3.js.map} +0 -0
- /package/dist/{google-ads-OK6IG3UV.js.map → google-ads-YD7LYWGY.js.map} +0 -0
- /package/dist/{history-PQUJKK26.js.map → history-RWWBR4TN.js.map} +0 -0
- /package/dist/{hubspot-Y77VLY6Y.js.map → hubspot-E65QNOI4.js.map} +0 -0
- /package/dist/{ideas-MIDU7YOA.js.map → ideas-ZB7O7T5I.js.map} +0 -0
- /package/dist/{images-S254MS6O.js.map → images-U4DKZQTE.js.map} +0 -0
- /package/dist/{ingest-YV2NLDBE.js.map → ingest-MZXGMFA5.js.map} +0 -0
- /package/dist/{ingest-J4I3HKM3.js.map → ingest-ROEMTZMG.js.map} +0 -0
- /package/dist/{inspect-Q5NHBBHX.js.map → inspect-MCMUJPXU.js.map} +0 -0
- /package/dist/{keyword-metrics-PDY4ZXSP.js.map → keyword-metrics-MLFTDAS4.js.map} +0 -0
- /package/dist/{keywords-for-site-GALSCV77.js.map → keywords-for-site-4WUBJNTI.js.map} +0 -0
- /package/dist/{landing-CJYGWCK4.js.map → landing-5GDWJN4C.js.map} +0 -0
- /package/dist/{leads-PHKG6CP3.js.map → leads-LDOOJI5K.js.map} +0 -0
- /package/dist/{learn-3VO6DXUX.js.map → learn-MMIGRLCP.js.map} +0 -0
- /package/dist/{line-item-writes-E6MZPIZZ.js.map → line-item-writes-LFDWJBQG.js.map} +0 -0
- /package/dist/{line-items-7ZGIKEF2.js.map → line-items-T3EVXB4M.js.map} +0 -0
- /package/dist/{link-QYAW6A2W.js.map → link-M5ESAD5Y.js.map} +0 -0
- /package/dist/{linkedin-FFSDSGGS.js.map → linkedin-4FNKZNIR.js.map} +0 -0
- /package/dist/{list-SAV3LQHY.js.map → list-EF6QI4JT.js.map} +0 -0
- /package/dist/{list-5IC6KIKO.js.map → list-FNW254C3.js.map} +0 -0
- /package/dist/{list-NVQC5SNY.js.map → list-XWUTPJRQ.js.map} +0 -0
- /package/dist/{log-XZPVOALD.js.map → log-5MESJJLM.js.map} +0 -0
- /package/dist/{make-LCNP76OF.js.map → make-ATEHKECL.js.map} +0 -0
- /package/dist/{map-4J5WIWIG.js.map → map-5NONUYFP.js.map} +0 -0
- /package/dist/{mcp-XXD7ZQCP.js.map → mcp-CGITBQQA.js.map} +0 -0
- /package/dist/{media-sources-O6ZRUA3N.js.map → media-sources-6TFUGPE2.js.map} +0 -0
- /package/dist/{members-D5ZYLS4Y.js.map → members-R2GQVSVA.js.map} +0 -0
- /package/dist/{options-MQ65VEVD.js.map → options-YT2ZGB2Z.js.map} +0 -0
- /package/dist/{performance-6QW2KEEQ.js.map → performance-52IILAFE.js.map} +0 -0
- /package/dist/{promoted-tweet-writes-JPLHY3GM.js.map → promoted-tweet-writes-QVIKWEIZ.js.map} +0 -0
- /package/dist/{promoted-tweets-SURKMHFI.js.map → promoted-tweets-2AALRV5O.js.map} +0 -0
- /package/dist/{publish-HCQ6MXLB.js.map → publish-XFLOZAOQ.js.map} +0 -0
- /package/dist/{reddit-GIP3ADMS.js.map → reddit-HFBAGWNP.js.map} +0 -0
- /package/dist/{refresh-UXQSLCR3.js.map → refresh-INKIU3QV.js.map} +0 -0
- /package/dist/{release-5KVLXNP6.js.map → release-C2MFXAPJ.js.map} +0 -0
- /package/dist/{remove-6FIVKCJI.js.map → remove-JWSVNUJ4.js.map} +0 -0
- /package/dist/{reopen-YM5LNOLB.js.map → reopen-3GM4OSLZ.js.map} +0 -0
- /package/dist/{rerun-CET74VPF.js.map → rerun-FCZRSS3H.js.map} +0 -0
- /package/dist/{research-EY7C7JJY.js.map → research-EBQ5KWOS.js.map} +0 -0
- /package/dist/{research-YOGE7GT2.js.map → research-HUMDT7T4.js.map} +0 -0
- /package/dist/{reset-OLVB6AE6.js.map → reset-3BEGDSBW.js.map} +0 -0
- /package/dist/{reset-C4UHQ3EU.js.map → reset-TVDYP2VK.js.map} +0 -0
- /package/dist/{resolve-XYH2GDAE.js.map → resolve-OQKUGWEI.js.map} +0 -0
- /package/dist/{retry-726GKI6V.js.map → retry-EJBF6GBJ.js.map} +0 -0
- /package/dist/{retry-7EELDEQP.js.map → retry-GUHOWYO2.js.map} +0 -0
- /package/dist/{run-P4KR2MXC.js.map → run-3D6QZC6L.js.map} +0 -0
- /package/dist/{run-XQ7EM3JT.js.map → run-CUUAWKAZ.js.map} +0 -0
- /package/dist/{scaffold-ad-U2KSHKBC.js.map → scaffold-ad-AYKWASWY.js.map} +0 -0
- /package/dist/{scaffold-static-ad-63LQKUSO.js.map → scaffold-static-ad-IEZEQW4N.js.map} +0 -0
- /package/dist/{scaffold-video-MUS6LHJQ.js.map → scaffold-video-YMN7AJS4.js.map} +0 -0
- /package/dist/{schedule-RDK4GEPI.js.map → schedule-QVYVMRIY.js.map} +0 -0
- /package/dist/{scheduled-agents-6U44QE76.js.map → scheduled-agents-CNIGCLAP.js.map} +0 -0
- /package/dist/{search-PMJRU3C4.js.map → search-XUGIKFW3.js.map} +0 -0
- /package/dist/{select-4Z7BW5RH.js.map → select-LSS7ZJSB.js.map} +0 -0
- /package/dist/{set-prompt-OB2V3XJP.js.map → set-prompt-P3WR2TZX.js.map} +0 -0
- /package/dist/{setup-links-REPREN3C.js.map → setup-links-4VILWID2.js.map} +0 -0
- /package/dist/{site-WFSWIA3S.js.map → site-TLJVSZQF.js.map} +0 -0
- /package/dist/{sources-YBQ6KPFM.js.map → sources-4MKBWFWG.js.map} +0 -0
- /package/dist/{sources-AMI2AWKZ.js.map → sources-7FCRKPXJ.js.map} +0 -0
- /package/dist/{stale-DAYXOY3Z.js.map → stale-7VJECYYJ.js.map} +0 -0
- /package/dist/{status-7F2KHFGA.js.map → status-WZKAKUG4.js.map} +0 -0
- /package/dist/{sync-GWTLKZTU.js.map → sync-DEWLEMTT.js.map} +0 -0
- /package/dist/{sync-definition-ILS2B2BJ.js.map → sync-definition-ARIX5XWM.js.map} +0 -0
- /package/dist/{tags-3WPW6PTV.js.map → tags-ANV54THE.js.map} +0 -0
- /package/dist/{tags-FJIBBBRG.js.map → tags-IWN3QPK5.js.map} +0 -0
- /package/dist/{tags-ABHSX6M5.js.map → tags-O76MDVID.js.map} +0 -0
- /package/dist/{tags-6342FQEB.js.map → tags-RBB4TU7U.js.map} +0 -0
- /package/dist/{tags-KFYLZLB3.js.map → tags-V5FR3DYU.js.map} +0 -0
- /package/dist/{targeting-criteria-NR47AF5C.js.map → targeting-criteria-6IOXVE4K.js.map} +0 -0
- /package/dist/{targets-L56KOVQE.js.map → targets-FFLV6OMF.js.map} +0 -0
- /package/dist/{templates-B6XGDYUF.js.map → templates-Y3ZLB7MK.js.map} +0 -0
- /package/dist/{testimonials-CVC4YIXO.js.map → testimonials-FCYS4NKB.js.map} +0 -0
- /package/dist/{top-companies-45X3DT7Z.js.map → top-companies-BL4F7OPI.js.map} +0 -0
- /package/dist/{translate-TA5KQIU7.js.map → translate-GGONJG62.js.map} +0 -0
- /package/dist/{triggers-22EMIVFD.js.map → triggers-6Q3YRHZS.js.map} +0 -0
- /package/dist/{unlink-65KUN6ID.js.map → unlink-WDSOVBFL.js.map} +0 -0
- /package/dist/{unstage-2E3I5SWF.js.map → unstage-JYJIKPB5.js.map} +0 -0
- /package/dist/{update-2S7CSEAW.js.map → update-CWZVKOUB.js.map} +0 -0
- /package/dist/{update-7NCOTAQZ.js.map → update-FUYXN33G.js.map} +0 -0
- /package/dist/{update-KREBPGBH.js.map → update-IXSCDBM4.js.map} +0 -0
- /package/dist/{update-D6DJC6T7.js.map → update-WSG6RVFX.js.map} +0 -0
- /package/dist/{upload-O6NHRPS7.js.map → upload-CKV2XS3G.js.map} +0 -0
- /package/dist/{url-params-3EFGVTZZ.js.map → url-params-UJSNI4XC.js.map} +0 -0
- /package/dist/{validate-LDBAAXQO.js.map → validate-FSFELDFZ.js.map} +0 -0
- /package/dist/{videos-YSXYGTBM.js.map → videos-FAKURRTG.js.map} +0 -0
- /package/dist/{web-IGIGVEKS.js.map → web-RRGHSAFY.js.map} +0 -0
- /package/dist/{winning-ads-ASH5DSV3.js.map → winning-ads-HRSCX6O2.js.map} +0 -0
- /package/dist/{write-commands-5C7FUOVN.js.map → write-commands-TAG7DQKT.js.map} +0 -0
- /package/dist/{x-BFSKFCZD.js.map → x-FBWHL3PL.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/flows/shared.ts"],"sourcesContent":["import { existsSync, readdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport {\n FLOW_ACCOUNT_ONLY_KINDS,\n FLOW_AGENT_DESTINATION_KINDS,\n FLOW_RESOURCE_NODE_TYPES,\n FLOW_SECRET_FIELDS,\n FLOW_SECRET_SIDE_EFFECT_TYPES,\n type FlowConfigStatus,\n type FlowSideEffectType,\n isFlowOauthSideEffect,\n} from \"@baker/api\";\nimport { writeJson } from \"../../output.ts\";\n\nconst FLOWS_DIR = \"src/lib/flow-engine/flows\";\n\n/** Resolve the flows directory from cwd (walk up a few levels to find the repo root). */\nexport function flowsDir(): string {\n let dir = process.cwd();\n for (let i = 0; i < 6; i++) {\n const candidate = join(dir, FLOWS_DIR);\n if (existsSync(candidate)) {\n return candidate;\n }\n const parent = join(dir, \"..\");\n if (parent === dir) {\n break;\n }\n dir = parent;\n }\n return join(process.cwd(), FLOWS_DIR);\n}\n\nexport function failLocal(message: string): never {\n writeJson({ ok: false, error: { code: \"NOT_FOUND\", message } });\n process.exit(1);\n}\n\nexport function listFlowSlugs(): string[] {\n const dir = flowsDir();\n if (!existsSync(dir)) {\n return [];\n }\n return readdirSync(dir, { withFileTypes: true })\n .filter((entry) => entry.isDirectory() && !entry.name.startsWith(\"_\") && entry.name !== \".gitkeep\")\n .map((entry) => entry.name)\n .sort();\n}\n\ntype AnyRecord = Record<string, unknown>;\n\n/** Absolute path to a form's `_data.json` — the one file the agent may edit. */\nexport function flowDataPath(slug: string): string {\n return join(flowsDir(), slug, \"_data.json\");\n}\n\n/**\n * Write a form tree back. Two-space JSON with a trailing newline, matching what\n * the scaffolder and the repo's markdown/JSON formatting already produce — a\n * write in any other shape turns a one-field edit into a whole-file diff.\n */\nexport function writeFlowTree(slug: string, tree: AnyRecord): void {\n writeFileSync(flowDataPath(slug), `${JSON.stringify(tree, null, 2)}\\n`, \"utf-8\");\n}\n\n/**\n * Every node in the tree, depth-first, parents before children.\n *\n * `Array.isArray`, not `?? []`: `_data.json` is hand-authored, so `children`\n * can be an object or a string, and `??` only guards null. These walkers are\n * what `flows show` and the pre-commit `normalize` run over, which are the two\n * things reached for when a form file is already wrong — throwing there would\n * take out the diagnosis along with the form.\n */\nexport function walkNodes(node: AnyRecord, acc: AnyRecord[] = []): AnyRecord[] {\n if (!node || typeof node !== \"object\") return acc;\n acc.push(node);\n if (Array.isArray(node.children)) {\n for (const child of node.children as AnyRecord[]) walkNodes(child, acc);\n }\n return acc;\n}\n\n/**\n * Every side effect in the tree, with the node that owns it.\n *\n * Walked rather than read off the root: side effects hang off whichever node\n * fires them, so a multi-step form keeps them on a child step. Reading\n * `tree.sideEffects` alone reports \"no side effects\" for a form that plainly\n * has one.\n */\nexport function collectSideEffects(tree: AnyRecord): Array<{ node: AnyRecord; sideEffect: AnyRecord }> {\n return walkNodes(tree).flatMap((node) =>\n Array.isArray(node.sideEffects)\n ? (node.sideEffects as AnyRecord[])\n .filter((sideEffect): sideEffect is AnyRecord => Boolean(sideEffect) && typeof sideEffect === \"object\")\n .map((sideEffect) => ({ node, sideEffect }))\n : [],\n );\n}\n\n/** Whether this workspace holds a Form by that slug. Never exits. */\nexport function flowExists(slug: string): boolean {\n return existsSync(join(flowsDir(), slug, \"_data.json\"));\n}\n\nexport function readFlowTree(slug: string): AnyRecord {\n const path = join(flowsDir(), slug, \"_data.json\");\n if (!existsSync(path)) {\n failLocal(`No form \"${slug}\". Run \"baker flows list\" to see the forms in this workspace.`);\n }\n try {\n return JSON.parse(readFileSync(path, \"utf-8\")) as AnyRecord;\n } catch (error) {\n failLocal(`Could not read form \"${slug}\": ${error instanceof Error ? error.message : String(error)}`);\n }\n}\n\nfunction isConfigured(value: unknown): boolean {\n return typeof value === \"string\" && value.length > 0;\n}\n\ntype NodeMeta = { nodeId: string; nodeName?: string };\n\nfunction nodeMeta(record: AnyRecord): NodeMeta {\n const nodeId = typeof record.id === \"string\" ? record.id : \"\";\n const nodeName = typeof record.name === \"string\" ? record.name : undefined;\n return { nodeId, ...(nodeName ? { nodeName } : {}) };\n}\n\nfunction widgetNodeStatus(record: AnyRecord, meta: NodeMeta): FlowConfigStatus | null {\n const nodeData = record.nodeData as AnyRecord | undefined;\n const nodeType = nodeData?.type;\n if (typeof nodeType !== \"string\" || !(FLOW_RESOURCE_NODE_TYPES as readonly string[]).includes(nodeType)) {\n return null;\n }\n const external = (nodeData?.form as AnyRecord | undefined)?.external;\n const selected = external != null && typeof external === \"object\";\n const name = selected ? (external as AnyRecord).name : undefined;\n return {\n ...meta,\n target: \"node\",\n kind: nodeType,\n status: selected\n ? `${nodeType} — selected${typeof name === \"string\" ? ` \"${name}\"` : \"\"}`\n : `${nodeType} — not selected`,\n needsInput: !selected,\n };\n}\n\n/**\n * Whether this side effect still needs something only the user can give.\n *\n * `false` for a type that has no confidential half at all (a pixel takes a tag\n * ref and nothing else), so a caller can ask the question of any side effect\n * without first checking whether the question applies.\n */\nexport function sideEffectNeedsInput(raw: unknown): boolean {\n const effect = raw as AnyRecord | null;\n const type = effect?.type;\n if (typeof type !== \"string\" || !(FLOW_SECRET_SIDE_EFFECT_TYPES as readonly string[]).includes(type)) {\n return false;\n }\n const configured = isConfigured(effect?.encryptedConfig);\n if (!isFlowOauthSideEffect(type as FlowSideEffectType)) return !configured;\n return !isConfigured(effect?.oauthProviderId) || !configured;\n}\n\nfunction sideEffectStatus(raw: unknown, meta: NodeMeta): FlowConfigStatus | null {\n const effect = raw as AnyRecord | null;\n const type = effect?.type;\n if (typeof type !== \"string\" || !(FLOW_SECRET_SIDE_EFFECT_TYPES as readonly string[]).includes(type)) {\n return null;\n }\n const configured = isConfigured(effect?.encryptedConfig);\n const oauth = isFlowOauthSideEffect(type as FlowSideEffectType);\n const connected = isConfigured(effect?.oauthProviderId);\n const needs = FLOW_SECRET_FIELDS[type as FlowSideEffectType];\n const status = oauth\n ? `${type} — connection ${connected ? \"[connected]\" : \"[needs connection]\"}, config ${configured ? \"[set]\" : \"[missing]\"}`\n : configured\n ? `${type} — [configured]`\n : `${type} — [missing]${needs.length > 0 ? ` (needs: ${needs.join(\", \")})` : \"\"}`;\n return {\n ...meta,\n target: \"sideEffect\",\n ...(typeof effect?.id === \"string\" ? { sideEffectId: effect.id } : {}),\n kind: type,\n status,\n needsInput: sideEffectNeedsInput(effect),\n };\n}\n\n/**\n * The exact call that fills a still-unconfigured item — `baker flows connect`\n * for anything the agent can wire itself, `request_flow_input` for the rest\n * and as the fallback.\n *\n * Emitted as a ready-to-issue call rather than a reminder that one exists. The\n * argument set is not guessable — it needs the node id, and for a side effect\n * the side-effect id too — so a hint that only named the tool would still cost\n * the agent a `flows show --full` to assemble.\n */\nexport function requestFlowInputCall(slug: string, status: FlowConfigStatus): string {\n const args =\n status.target === \"node\"\n ? `{ target: \"node\", flowSlug: \"${slug}\", nodeId: \"${status.nodeId}\", nodeType: \"${status.kind}\" }`\n : `{ target: \"sideEffect\", flowSlug: \"${slug}\", nodeId: \"${status.nodeId}\", sideEffectId: \"${status.sideEffectId}\", sideEffectType: \"${status.kind}\" }`;\n const card = `request_flow_input with ${args}`;\n const target = status.target === \"node\" ? `--node ${status.nodeId}` : `--side-effect ${status.sideEffectId}`;\n const fallback = \"only if nothing is connected or several could be meant\";\n if (status.kind === \"hubspotForm\") {\n return `baker flows connect ${slug} ${target} --hubspot-form <formId from baker hubspot forms list> — ${fallback}: ${card}`;\n }\n if (status.kind === \"hubspot\" || status.kind === \"hubspotMeeting\") {\n const list = status.kind === \"hubspot\" ? \"forms view <id>\" : \"meetings view <slug>\";\n return `write \\`baker hubspot ${list} --as-node\\` into the step's form.external — ${fallback}: ${card}`;\n }\n if ((FLOW_ACCOUNT_ONLY_KINDS as readonly string[]).includes(status.kind)) {\n return `baker flows connect ${slug} ${target} — ${fallback}: ${card}`;\n }\n if ((FLOW_AGENT_DESTINATION_KINDS as readonly string[]).includes(status.kind)) {\n const sheet = status.kind === \"googleSpreadsheet\" ? ' (or --new-sheet \"<title>\" --columns \"…\")' : \"\";\n return `baker flows connect ${slug} ${target} --resource <id from baker flows options ${status.kind}>${sheet} — ${fallback}: ${card}`;\n }\n return card;\n}\n\n/**\n * Walk a local flow tree collecting the configuration status of every\n * confidential field — WITHOUT decrypting anything. A present `encryptedConfig`\n * string / `oauthProviderId` / `form.external` object means \"configured\"; null /\n * absent means the agent still needs to run `request_flow_input` for it.\n */\nexport function collectConfigStatus(node: unknown, acc: FlowConfigStatus[]): void {\n if (!node || typeof node !== \"object\") {\n return;\n }\n const record = node as AnyRecord;\n const meta = nodeMeta(record);\n\n const widget = widgetNodeStatus(record, meta);\n if (widget) {\n acc.push(widget);\n }\n if (Array.isArray(record.sideEffects)) {\n for (const raw of record.sideEffects) {\n const status = sideEffectStatus(raw, meta);\n if (status) {\n acc.push(status);\n }\n }\n }\n if (Array.isArray(record.children)) {\n for (const child of record.children) {\n collectConfigStatus(child, acc);\n }\n }\n}\n\n/** Replace opaque ciphertext with a status marker so `--full` stays readable and never leaks noise. */\nexport function redactTree(node: unknown): unknown {\n if (Array.isArray(node)) {\n return node.map(redactTree);\n }\n if (!node || typeof node !== \"object\") {\n return node;\n }\n const out: AnyRecord = {};\n for (const [key, value] of Object.entries(node as AnyRecord)) {\n if (key === \"encryptedConfig\") {\n out[key] = isConfigured(value) ? \"[configured]\" : value;\n } else {\n out[key] = redactTree(value);\n }\n }\n return out;\n}\n\n/**\n * The constant a step's name becomes in the generated `_query.ts`.\n *\n * Byte-for-byte the scaffold's own `toScreamingSnake`\n * (`__tooling__/checks/base/flow-typed/flow-typed.mjs`), which is the only implementation\n * that decides anything: the watcher writes `export const <key> = \"<node id>\";`\n * for every step and throws `Duplicate flow node name` when two steps produce\n * the same one. `flows-step-name-key.test.ts` pins the two together.\n *\n * It is copied rather than imported because the CLI ships as a binary into a\n * Session Runtime and the scaffold ships as files — there is no module boundary\n * they share. The copy that was here before was NOT this rule: it uppercased and\n * squashed every non-alphanumeric run, which agrees on `Contact Info` and\n * disagrees on `contactInfo` (`CONTACTINFO` here, `CONTACT_INFO` there). So\n * `add-node` waved through a name that collided in the generator, the watcher\n * then threw, and `_query.ts` stopped regenerating for the whole form.\n */\nexport function stepNameKey(name: string): string {\n return name\n .replace(/([a-z])([A-Z])/g, \"$1_$2\")\n .replace(/[-\\s]+/g, \"_\")\n .toUpperCase();\n}\n\n/**\n * Whether that constant is one TypeScript will accept.\n *\n * `flow-typed.mjs` interpolates the key straight into `export const <key> = …`\n * without checking, so a step called \"1. Your details\" or \"Thanks!\" writes a\n * `_query.ts` that is a syntax error, and the whole workspace stops building —\n * a failure whose message names the generated file rather than the step that\n * caused it. `add-node` is where a name is minted, so it is where this is worth\n * catching.\n *\n * The real identifier grammar, not `[A-Z0-9_]`: this product is Spanish-first\n * and `INFORMACIÓN_DE_CONTACTO` is both a legal identifier and an ordinary step\n * name. Rejecting it would be the check being wrong, not the name.\n */\nexport function isUsableStepNameKey(key: string): boolean {\n return /^[\\p{ID_Start}$_][\\p{ID_Continue}$]*$/u.test(key);\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/flows/index.ts"],"sourcesContent":["import {\n driftRepairHint,\n FLOW_AGENT_DESTINATION_KINDS,\n type FlowConfigStatus,\n type FlowDrift,\n type FlowSummary,\n type FlowsDriftResponse,\n type FlowsShowResponse,\n flowNodeTriggers,\n} from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { apiPost } from \"../../client.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport {\n collectConfigStatus,\n collectSideEffects,\n listFlowSlugs,\n readFlowTree,\n redactTree,\n requestFlowInputCall,\n} from \"./shared.ts\";\n\nregisterSchema({\n command: \"flows.list\",\n description:\n \"List the Forms (flows) in this workspace and how many confidential fields each still needs configured. Read-only.\",\n args: {},\n});\n\nregisterSchema({\n command: \"flows.show\",\n description:\n \"Show a Form's confidential fields and whether each is configured (secrets/connections/third-party resources), AND whether its destination has changed under it — never reveals secret values. Destination drift is the one problem a Form cannot show you itself: when a HubSpot field a Form maps is deleted, HubSpot refuses the WHOLE submission and the visitor still sees the thank-you screen, so every lead is lost silently. Run this before changing any Form. Author structure by editing the flow's _data.json; configure confidential fields with the request_flow_input tool.\",\n args: {\n slug: { type: \"positional\", description: \"Form slug (folder under flows/)\", required: true },\n full: { type: \"boolean\", description: \"Include the full flow tree (secret values redacted)\", required: false },\n },\n});\n\nfunction statusFor(slug: string): FlowConfigStatus[] {\n const tree = readFlowTree(slug);\n const config: FlowConfigStatus[] = [];\n collectConfigStatus(tree, config);\n return config;\n}\n\n/**\n * The calls that close out everything this form is still waiting on.\n *\n * `show` is the command an agent runs to answer \"is this form wired up?\", and\n * it answered with `needsInput: true` and nothing else — leaving the agent to\n * work out that a tool exists, which tool, and how to address the exact node or\n * side effect. The whole point of asking is to find out what to do next, so the\n * answer is the call itself.\n */\nfunction pendingInputHints(slug: string, config: FlowConfigStatus[]): string[] {\n const pending = config.filter((row) => row.needsInput);\n if (pending.length === 0) return [];\n const calls = pending.slice(0, MAX_PENDING_HINTS).map((row) => `${row.kind}: ${requestFlowInputCall(slug, row)}`);\n const rest = pending.length - calls.length;\n return [\n ...repeatedKindHints(slug, pending),\n `${pending.length} item${pending.length === 1 ? \"\" : \"s\"} still unwired. Wire each yourself with the command below when you know which resource is meant; the card is the fallback, and its result carries the destination — read the names from there rather than looking them up again.`,\n ...calls,\n ...(rest > 0 ? [`…and ${rest} more — see \\`config\\` above.`] : []),\n ];\n}\n\n/**\n * Several unwired items of one kind usually share one destination — chat\n * r57ed43j had 24 HubSpot side effects all sending to the same form — so\n * name the call that fills them all at once.\n */\nfunction repeatedKindHints(slug: string, pending: FlowConfigStatus[]): string[] {\n const counts = new Map<string, number>();\n for (const row of pending) counts.set(row.kind, (counts.get(row.kind) ?? 0) + 1);\n return [...counts].flatMap(([kind, count]) => {\n if (count < 2) return [];\n if (kind === \"hubspotForm\") {\n return [\n `${count} hubspotForm side effects are unwired. When they all send to the same HubSpot form: baker flows connect ${slug} --all --hubspot-form <formId>.`,\n ];\n }\n if (!(FLOW_AGENT_DESTINATION_KINDS as readonly string[]).includes(kind)) return [];\n return [\n `${count} ${kind} items are unwired. When they share one destination: baker flows connect ${slug} --all --type ${kind} [--resource <id>].`,\n ];\n });\n}\n\n/** Enough for any real form; the cap only stops a pathological tree flooding the response. */\nconst MAX_PENDING_HINTS = 6;\n\n/**\n * Side effects wired to a moment their own step never raises.\n *\n * `fireSideEffects` filters on `triggerId` equality, so one that does not match\n * is inert: written, valid, green on every check in the repo, and it never\n * runs. Nothing else in the toolchain looks at the pair — `validate-flow.mjs`\n * only checks the key is present and `validate-flow-schema.mjs` does not read\n * it at all — so a form can report \"fully configured\" while a side effect on it\n * has never fired once. This is the one command that is asked whether a form is\n * wired up, so it is the one that has to say.\n *\n * Silent about a node type the trigger table does not cover: no opinion is the\n * honest answer there, and a false \"this never fires\" on a working form would\n * cost more than the warning is worth.\n */\nexport function inertSideEffectHints(tree: Record<string, unknown>): string[] {\n const dead = collectSideEffects(tree).flatMap(({ node, sideEffect }) => {\n const triggers = flowNodeTriggers(node.nodeData);\n if (!triggers.known) return [];\n const triggerId = String(sideEffect.triggerId ?? \"\");\n if (triggers.available.includes(triggerId)) return [];\n const where = `${String(sideEffect.id ?? sideEffect.type)} on \"${String(node.name ?? node.id)}\"`;\n const raises =\n triggers.available.length > 0\n ? `It raises: ${triggers.available.join(\", \")}.`\n : (triggers.why ?? \"That step raises nothing.\");\n return [`${where} fires on \\`${triggerId || \"(none)\"}\\`, which that step never raises. ${raises}`];\n });\n\n if (dead.length === 0) return [];\n return [\n `${dead.length} side effect${dead.length === 1 ? \" has\" : \"s have\"} a triggerId their step never raises, so ${dead.length === 1 ? \"it never runs\" : \"they never run\"} — no error, nothing half-written, just nothing. A triggerId belongs to the STEP, not to the side-effect type.`,\n ...dead.slice(0, MAX_PENDING_HINTS),\n ...(dead.length > MAX_PENDING_HINTS ? [`…and ${dead.length - MAX_PENDING_HINTS} more.`] : []),\n \"Fix each by setting the id its own step raises: `baker flows schema node <nodeType>` lists them.\",\n ];\n}\n\n/**\n * Where the company funnel stands on this Form.\n *\n * A Form moves nobody along the company funnel until a step names one of its\n * endings, and nothing places it for the agent — so a Form that is configured,\n * fires every pixel and counts its conversions can still leave \"Became a lead\"\n * at zero. `show` reads only the local file and cannot tell whether a step\n * names it; `baker funnel` can, so the hint names that read and the write.\n */\nexport function funnelPlacementHint(slug: string): string {\n return `Whether this Form moves anyone along the company funnel is not in _data.json either: \\`baker funnel\\` names every Form no step counts. If it names this one, place its ending on the step it moves people to — \\`submit:${slug}\\`, or its booking trigger, both listed by \\`baker funnel --moments\\` — with \\`baker funnel --step\\`, which replaces the step it names, so keep that step's other ways in.`;\n}\n\n/**\n * What this Form's destination has changed under it, asked of Baker.\n *\n * A read the Company Workspace cannot do for itself twice over: the findings\n * live on the `flows` row, and the HubSpot form id a repair needs is inside an\n * encrypted config. Before this, detection had no reader in the Runtime at all\n * — 47 live findings across 11 Forms, and an agent editing one of those Forms\n * could not see a single one.\n *\n * A failure returns null rather than `[]`. They are different answers and\n * collapsing them would report a Form healthy on the strength of a network\n * error, which is exactly the silence the drift check exists to break.\n */\nasync function readDrift(slug: string): Promise<FlowsDriftResponse | null> {\n try {\n const response = await apiPost<{ ok: true; data: FlowsDriftResponse }>(\"/api/flows/drift\", { slug });\n return response.data;\n } catch {\n return null;\n }\n}\n\n/**\n * Drift said to an agent: what is wrong, and the command that fixes it.\n *\n * The summary comes from `@baker/api`, which the dashboard badge reads too, so\n * this and the badge cannot come apart about whether a Form is healthy. What is\n * added here is the half that is the CLI's: the repair, spelled as a command\n * line, because an agent that has to go and work out `--prune-missing` for\n * itself will instead reach for `--replace` and delete the mappings that still\n * work.\n */\nexport function driftHints(slug: string, drift: FlowsDriftResponse | null): string[] {\n if (drift === null) {\n return [\n \"Could not check whether this Form's destination has changed under it. Treat that as UNKNOWN, not as healthy — a deleted HubSpot field refuses every submission while the visitor still sees the thank-you screen.\",\n ];\n }\n\n const forms = drift.forms.filter((form) => form.slug === slug);\n if (forms.length === 0) {\n return drift.checkedAt === null\n ? [\n \"This Form's destination has never been checked, so nothing here says it is healthy — only that nothing was compared.\",\n ]\n : [];\n }\n\n return forms.flatMap((form: FlowDrift) => {\n const repair = driftRepairHint(slug, form.formGuid, form.deadFields, form.sideEffectId);\n return [`DESTINATION DRIFT (${form.severity}): ${form.summary}`, ...(repair === null ? [] : [repair])];\n });\n}\n\nfunction displayName(slug: string): string {\n const tree = readFlowTree(slug);\n const name = tree.displayName;\n return typeof name === \"string\" && name.trim() ? name.trim() : slug;\n}\n\nconst listCommand = defineCommand({\n meta: {\n name: \"list\",\n description:\n \"List Forms in this workspace with the count of confidential fields still needing setup. Example: baker flows list\",\n },\n run: () => {\n const flows: FlowSummary[] = listFlowSlugs().map((slug) => ({\n slug,\n name: displayName(slug),\n needsConfig: statusFor(slug).filter((c) => c.needsInput).length,\n }));\n const pending = flows.filter((flow) => flow.needsConfig > 0);\n writeJson({\n ok: true,\n data: { flows },\n hints: [\n ...(pending.length > 0\n ? [\n `Still waiting on the user: ${pending.map((flow) => `${flow.slug} (${flow.needsConfig})`).join(\", \")}. \\`baker flows show <slug>\\` returns the request_flow_input call for each.`,\n ]\n : []),\n // \"Set the conversions on the Forms\" lands here first, and nothing in\n // this family can do it — the conversion side effects it does offer\n // fire a pixel and are not what any Baker report counts.\n \"Setting what a Form COUNTS is not in this family: a conversion is a named event held in Baker. `baker analytics conversions` lists what this company counts; `--flow <slug>` spells one Form's endings as keys you can count, traffic or no traffic.\",\n ],\n });\n },\n});\n\nconst showCommand = defineCommand({\n meta: {\n name: \"show\",\n description:\n \"Show a Form's confidential fields and their configuration status (never secret values). Example: baker flows show contact\",\n },\n args: {\n slug: { type: \"positional\", description: \"Form slug\", required: true },\n full: { type: \"boolean\", description: \"Include the full flow tree (secret values redacted)\" },\n },\n run: async ({ args }) => {\n const slug = String(args.slug);\n const config = statusFor(slug);\n const tree = readFlowTree(slug);\n const drift = await readDrift(slug);\n const response: FlowsShowResponse = {\n slug,\n name: displayName(slug),\n config,\n drift: drift === null ? null : drift.forms.filter((form) => form.slug === slug),\n ...(drift === null ? {} : { driftCheckedAt: drift.checkedAt }),\n ...(args.full === true ? { tree: redactTree(tree) } : {}),\n };\n writeJson({\n ok: true,\n data: response,\n // Drift first, above everything. The other hints are about work still to\n // do; this one is about leads already being lost, and it is the only\n // thing here that is true of a Form that looks completely finished.\n hints: [\n ...driftHints(slug, drift),\n ...inertSideEffectHints(tree),\n ...pendingInputHints(slug, config),\n // The question this command is asked — \"is this Form wired up?\" — has\n // an answer that is not in this file at all. What a Form counts is a\n // named event in Baker, and a Form can be perfectly configured, fire\n // every pixel it has, and still report converting nobody.\n `What this Form counts as a conversion is NOT in _data.json and not in any side effect here: it is a named event held in Baker. Read it, and this Form's own endings spelled as event keys, with \\`baker analytics conversions --flow ${slug}\\`.`,\n funnelPlacementHint(slug),\n ],\n });\n },\n});\n\nexport const flowsCommand = defineCommand({\n meta: {\n name: \"flows\",\n description: `Read and shape this workspace's Forms (flows).\n\nReads never reveal a secret value. Writes touch only the form's own _data.json — they stage structure, never a live system.\n\nWire a connected platform yourself once you know which resource is meant — no card for the user: \\`baker flows options <kind>\\` lists what the account holds, \\`baker flows connect\\` writes it (Calendly, SavvyCal, GoHighLevel steps; Google Sheets, Pipedrive, GoHighLevel and HubSpot destinations; \\`--same-as\\` copies another Form's). A HubSpot step takes \\`baker hubspot forms view <id> --as-node\\`. Anything sealed is written sealed; you never see a secret.\n\nThe request_flow_input tool (baker_ui MCP server) is the fallback: typed secrets (webhooks, Zapier, Crmble), a platform nobody connected, the user's own existing spreadsheet, or several resources that could be meant.\n\nExamples:\n baker flows list # every Form + how many fields still need setup\n baker flows show contact # one Form's confidential fields and their status\n baker flows schema node customForm # the shape of a step, before you author one\n baker flows add-node contact --type text --name \"Thanks\"\n baker flows add-side-effect contact --node <id> --type googleSpreadsheet\n baker flows options calendly # what the connected account holds\n baker flows connect contact --node book --resource <id>\n baker flows connect contact --side-effect se-hubspotForm-1 --hubspot-form <formId> # --all: every unwired one\n baker flows map contact --map A=name --map B=email --write\nFull guide: __tooling__/docs/tools/baker/flows.md`,\n },\n subCommands: {\n list: listCommand,\n show: showCommand,\n schema: () => import(\"./schema.ts\").then((m) => m.schemaCommand),\n \"add-node\": () => import(\"./add.ts\").then((m) => m.addNodeCommand),\n \"add-side-effect\": () => import(\"./add.ts\").then((m) => m.addSideEffectCommand),\n options: () => import(\"./options.ts\").then((m) => m.optionsCommand),\n connect: () => import(\"./connect.ts\").then((m) => m.connectCommand),\n map: () => import(\"./map.ts\").then((m) => m.mapCommand),\n normalize: () => import(\"./normalize.ts\").then((m) => m.normalizeCommand),\n },\n // Bare `baker flows` lists the Forms. This must be `default`, not `run`: citty falls\n // through to `run` after dispatching a subcommand, so a `run` here would also print\n // the list on every `baker flows show <slug>`.\n default: \"list\",\n});\n"],"mappings":"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","names":[]}
|
package/dist/get-QEYJRLV3.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/actions/get.ts"],"sourcesContent":["import type { ActionsGetResponse } from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { apiPost, validateConvexId } from \"../../client.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { failApi, failValidation } from \"./shared.ts\";\n\nregisterSchema({\n command: \"actions.get\",\n description: \"Get a single action with tags, blockers, blocked-by, and active-chat info.\",\n args: {\n id: { type: \"string\", description: \"Action ID\", required: true },\n },\n});\n\nexport const getCommand = defineCommand({\n meta: { name: \"get\", description: \"Get a single action by ID. Example: baker actions get <action-id>\" },\n args: {\n id: { type: \"positional\", description: \"Action ID\", required: false },\n \"action-id\": { type: \"string\", description: \"Action ID (alternative to positional)\", required: false },\n },\n run: async ({ args }) => {\n try {\n const id = (args.id as string | undefined) || (args[\"action-id\"] as string | undefined);\n if (!id) {\n failValidation(\"Action ID is required.\");\n }\n validateConvexId(id);\n const response = await apiPost<ActionsGetResponse>(\"/api/actions/get\", { actionId: id });\n writeJson(response);\n } catch (err) {\n failApi(err);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA,SAAS,qBAAqB;AAM9B,eAAe;AAAA,EACb,SAAS;AAAA,EACT,aAAa;AAAA,EACb,MAAM;AAAA,IACJ,IAAI,EAAE,MAAM,UAAU,aAAa,aAAa,UAAU,KAAK;AAAA,EACjE;AACF,CAAC;AAEM,IAAM,aAAa,cAAc;AAAA,EACtC,MAAM,EAAE,MAAM,OAAO,aAAa,oEAAoE;AAAA,EACtG,MAAM;AAAA,IACJ,IAAI,EAAE,MAAM,cAAc,aAAa,aAAa,UAAU,MAAM;AAAA,IACpE,aAAa,EAAE,MAAM,UAAU,aAAa,yCAAyC,UAAU,MAAM;AAAA,EACvG;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,QAAI;AACF,YAAM,KAAM,KAAK,MAA8B,KAAK,WAAW;AAC/D,UAAI,CAAC,IAAI;AACP,uBAAe,wBAAwB;AAAA,MACzC;AACA,uBAAiB,EAAE;AACnB,YAAM,WAAW,MAAM,QAA4B,oBAAoB,EAAE,UAAU,GAAG,CAAC;AACvF,gBAAU,QAAQ;AAAA,IACpB,SAAS,KAAK;AACZ,cAAQ,GAAG;AAAA,IACb;AAAA,EACF;AACF,CAAC;","names":[]}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/dist/{promoted-tweet-writes-JPLHY3GM.js.map → promoted-tweet-writes-QVIKWEIZ.js.map}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|