From 3be55ef0c5175bf3e806b16429adf3c8e060aba0 Mon Sep 17 00:00:00 2001 From: chime3 Date: Sun, 10 Nov 2024 20:19:10 -0700 Subject: [PATCH 01/20] feat: added fireflies icon --- assets/fireflies/icon.png | Bin 0 -> 172501 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/fireflies/icon.png diff --git a/assets/fireflies/icon.png b/assets/fireflies/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f492afb354682657f8f3017bb71b7d830ba594 GIT binary patch literal 172501 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≤YcF>rm%5 z3I#l8B=Pp8Mo;h!A&JBja)6i~M-D|?dBC9_2|D53ej%{zmGo(~3ohgkX#3}K$E{qx zcY^>A$c8f}P0}I1JvR`?VGDT{h+FlQP-5z7nnw-TdU~;zeF}HB3rNdsr!vNIg7{`Q)bD1h3^s{@V|fo_xHX zYnP1*Cq<|YOA8S`Zq5QfQyr9qyuk#OFuiStY~^F<^IP2P$3XkX0rclD#?G;$4wO&C zIzfB^y+`W1!@nBP_4n@0r-A=`3%r4^!`BTYXXzO_+*TZ1Lg6CIYP=m*+Wwlf0-05c zo8oEL!#8tad#dPtGql%2M=|nj5mGHzl7#F}N0f&NoA@sG2N}tp=X2$#wK6MyVC=f| zj8!GU51|8@k%I_Bife;Pw*V+d(pcND<1OgA-yE?3YE7=v(6OMEQ<2;+eB1fSw;sfg zFdM_QmKMWsnkutWO7J5GWI;#|A;Re%@85wbs$p_@pV4RL(xo0iYgV@?nDS9}jAs3C zd9!`+-N#>}Mnf%Z3nQit>3ngc-af-W|3L!N;D)C=ly6skGx+QWu)o}Dw$@39Nc-jf zD!j*-y(^(cF*C^s8_^OTgtZFm+eKiGdaiQ~s{c0`v0c&*XRwQ-Ru*PRC>_gf&mPaIeqN(imz4V|)9(Cnu4)U%2?26!-i`xQvST!5=i zgVbvb1hU*D-=}CvV*pVV;WqBc`wj}$*E`0BT&}t~x0KImHfLycaHLqYTn-d5xno0K z5HQa8YhJG{4m-q_y0BvDh_3Vz*RexU3xJR#PP@@J+K#WD}+g=@dn zv;y98ro3T2Ulr+lXSMN5@jjeA?k8xOb&-I`RqJ2KpHJm6hkfXf6)nDwyFHF8;O?*P zl<_oGd}XmrPI6gL`ccok97ME{32sX7fq7-AT8o`5*cU=Lzul@xt0Qw-274idlY(n5 zyb~MYFhl>22g_+xp?scnU{;!Z6X(|7nfXWn{7)Yo7#e)pLHwr-7%ua-_y-g_A#~Ln)8Xg1MXU}v<7Hb&TGxwdakU+-+uZ4l1UGrjoKdN zFO3d#vb3`KSmC7uSJ!;6JJ3NYhHzg`g7#ih`%mV2L=KuhXjjc^{?~E9mmtj+>#DDx zeMX84=>2rGt+l!&e2fs30nNQO)JetVXdK4zhB{i5wkz3qj7N^ zcB6XZO0{3D9_!j@_>!jkSuEXz_QNWAgo9F0Q^#T=8B?g$&KD1@gSP($nC!yGD?4Geug))f!odP{< z$;!f;d<=eD9fPDSETU9gF@5MdcX(Ou`0S&HM6hci9eA2}^2o>XNBL<2x;HwJJIuEV z-iHZ%N`zW!Ma!iau9@k$;k~OB%ctny6mzjGCt4Z~cNG91DE}HgF!vY!e1LqbwF%^V zp{svZ<|{efp5v@tT>a!deVTsevU}`$$b4W`@S)LXW=BUIKwokqd)IczjNo0{b2BLS zuUUP6S(>~2`qp+3z4NYz2pk6O=c#uYZ5xiW%i-GBvQ}`@?`kW?c(xSU-5cJ6EV$v9_e&`9f`@eF;mDr?{bW}n1I;#>IGX8h6G>2-12SXUz9=q$v7FX z%AB}d`hY!H<-$0L4j#cS8OVE$^>jq=5>RHQj^e(iiW4PMt3+%-opKJP5mS1$Q_JwV zYDlZ7IfhB2j6aT$A-6W^?!TGty1=BHx(w-9JomSN2&)gPuiy3VjUF^ow%$J=)5OWa z>m{Cj&*@m|xzG2MXsP~0pAjh)5Q(fC4qw^wHDnU#X$*cEwCk?Z z(@Wt4)70O52w&Z~RqMtrc%TYs=RB8PVXs6(-;jaN8nBX~td`d2gAOGx(obKXJlX-ty2aM z8ynn!NSF1Sbwbm~Qseu5ydd%wM*ZI^!F~h`nmm_&7meQz$h`2T z(V))>`5fYdE}?PSKaQJY3vfx3YF{6_;V3(S8{;=OS{AJJGhaW!U5MQ<69Gt?nVG=w zeUgwx4Kx4j8>B+%8k_eeGXIz1L2D zX_!o}!o}c(2R6O-LSe+-B=!o*aCp|a?1+fqkPVs3)AyQ-xcgUD;PEqvO{BOgJFKMQ z2q`ncdDwnqSfv>&8VxGNh5IEr;C{s+b*HkhmzXpC5Xiq#t9}0>uDJe_c@O4ua#R|MpUK@g2_L`S6s9Zi9s_* zZXO1nefr;VvP8xhbT4d5&Lcp+g+!K6S*6?-9xO-Q(lkv4Oc6f*zHYPmf(- z#X$;BWP?`qJwqzv8lE3N2-+W(l{2BgZ~SZud>xB&X5N3ymmv(zUVKsJji6%TT>W0U2>buNuLc5gbr|3#AicM4yrl!&v z{jms%mjEXoR2@3KD^Pg102eIq*o7`_dvWQuvYFf7kq-h6fn^c4M{P-+!ljFz-WHbG zy;vG`h1TA{CET6sV`-($93+XM4`rCPN3hB97(OYMI^*L#ayxA=uQXdHTI+e zGvB9i0dp|Gl*TioIEJx?k@12)0cj&8Lhdc(Syu^$vid9?TV$~4HU#7la|<*D5RA0# zkSMk7>M-1cx_s5B#ChQpTChke*naBUu*up&G}M*aNJ43#QelTdypHeL1RxC%kz)lm^VC=r6W#wm3~@2x29Du<%pKfV-PXl>sRc< z-#k_F2ZZffj32SDahT$8_aTBOaMQ^m~gW7G;hy98fy zG375NN2_RjrHpAl#>VS?Jq^)fWoEV~pWFgfRcGw6tjpC^82pR!mllwp?PnwA^aEf0 z(*ls6C?MadT?YF4r+aCGuw}AL{PeC!yjs~AX=(mrBM0wPBtKBAo5r5eK;J&(x~0T(8CVhbrTNo^{FmNa_C{#bj9X?2snEae!KYWSphtei&1@-U* z9@1P&UI|N?C>g0u+Z5$9N5`t~1>RN$4;amDf*`mRvOdiWVB@(-25~XaRj1}oCm4tS zOi&ZEH-G4`Gaqqf&$VqcFJF7q>PY_8&Y@QFPg}yK;$yFJS{l_G`qE+p;SfaBZ^6n> z4Z=L>e0wuuVI;6NfA5nyi=JdQImS)EhBA1Uvrg~$&*j4r@GTbfc2@`c^&d#Oa1UM6 zH`Wd#&&vVhHrWU2fk=MECs`IrySc`vs-6k1daX$UW1*PB-Rf%)uEe|ZY-yX&fy@U_ zC5pU44Qugi{5&(<0ZvS+rnVHE&x|RQZB3?Q9 zhkCL*`ciY{2xWy@^1fXhF z0-a-?zE~&{^O9oM`|Hi&^{>puKRR*dGFi>;EMuuHbuRihw6#JvH#o&)%#>%PXR zRVNcQq#_`CrOkOO_$Ax$Hx@n7uxLXB3U!RhtzFsYF&s`%w zFVJ)ihriS5nq8>8=1&jINGodCMyb*&jFSlKStObrt!II;m2aEwSf{51#C9gJZlIIz znW{cbTQ3aK*EV_!+P!ifLiwWIPCV2q26-ynBHgiAv_O?t9rDQN0D{|FY|Z)v%FJI9 zxPv;cVxsw5cEt&Q%Ld4hPS4&z({G6h{%M|>MwU-kev|^9;y8RXY$-A=7AgV3FNq65 z34Cjf@-^K}n>-B5)4!9{E}}qhSHNGX0gC8_x+|1S-%aFSNSuK=3VpRAZ#&O?=*IG3 zp+#@H@1AERp;V0P_7Rkajceja5vdZP_sDP$V{u$d5B%bu&iU%fw2C?8;=>|E7-6-T zGb3+oT&vnCL<|)M2QhYqV6S^K`{-YMN`QZArj#h=N-Au^uas=;m!>)wbCjXAd$kqP}~3~K>*jVg0r z58usNcugGS`08g|H}dDFjt&>#OZZml_q-{|5p~G!j#O7;hp(J1zK?Q)3j=vNOUJe0 z6H@C@kap2g9ml{0TyRN*2@ZYvi6J!FLI!+fh2P~*OJV{@$dJfX2P*_sNTRE7o#UWT z=6R@mB!3KV%aCYD%_V;DDw3JxeL0&jJ2lY{4fR?BSM5Ao?vbbWSGEOS1Iv?6Im8el z8J?5)7v#*U{DKCMPCS_Iofg4^8AL0a6>#9U@L>eWiQCpk`e#FR9O-o-v4i}Lktv?n z6|YJn)5_N$>=)l%NZ28!8PAc2{hM+ORyf^C%+$kk9d-$ zH^%?~B0vgc+e7{@U=-JPBBA_wiAhV|C_E&#sE(?Cpd8E@>QsCzL88LpjTkYu5`~oK zTS;>tyydYFl6Ls({Objh53$RsLU%)HIG_e~xhQz4P3BKOQ3yDCogV$)rztbH=Ky1U zah?=i%8NKvMzM>CK|__#3oVet?b~Z7cdj+i@!t_LT%0RBm2bnLt8_sO3hfx_Li`6| zv=Gck>k9mRg)aBURv2&WBdzHh>TmwM_SY3mXAGG?0A*Kt-3;_p`S^c+&A~oHBGNcy z%BXw=pR=7Zi}s>8Rx=DyrGprc+16Jx7I@0jwk*8f`b5A}Rq<_9c54iH$O|Pm`xt_c z4mGC@`YwA1JXi=Lx3mK(H)&0Og3)VZ67U_mX@e?I_~5F>`7H~%$9WcjCULNUHi#+F zxnJ1?9#52dhecwE`HA%^WVz+7GHvyZyXer50gbY}#8Ez1U!*|%#{_wxZ;*3tbbie@kOE%a;IG7S2UH@0D6s^(hbpF}0-i-k&K( zA7imL539D#81!`ihN7AT3RQ@#f0NoQb!Gc-mSWuM+6{biM$o~=w%UnH;|?LVT3$|7 zn8itRr^iu9`<5}na5rs8#HS)7scos9sTwxIiX~Pla>B%X2#x3y`YVr(U^DFmV`zeS z19Fb1ts+veunW!<`5$u4QmuH<>fquorLl=~n+xbS`W3KKn*wMrQpd@2@3_JE5+cb5 z9lQ>GI}>yaYulC8hgCki#0XgPaaJ8YnM@VxpC@I&Y)V=oSp|UJ6MD!nO*}DI7;cyl z{BzF4^6zj#fs!uG6vtfJXDHZ6RbkJb8{ z;V!sp6-!xlu5-r_@}hCfs4}wcP#LdEtWkJJ}`_^KPf68)GF5V=3~a5L!1A6PZI2*lOL?-d0()N+4@(LI0|g z4nD)3ZGSdfDi&+mc?2k*n5a@-Q3ArG)TXCi@%c!w%Gx{wK(kK(!}HIuNCg(hgOrFR zTjut8BK()c{~ERJbzjD4$z)G z6f(&6b7Gq?tgvIJcKW3y4b5Y5d64Uz z#dZfp?1xfkO3C-Qejmtvqr_Ve8a1^2{DCdd+1}DdQk@iW+2-()ts)rQeGE$V@SrLx zZ}=0)a!NsLF7{}vbp)}rL)l^E@O^-pN@K7gj$&J#_P&U9f?b`jk~avVYd5k7Obtz? zE`e_Bgp;;eQi~ts*0D?QX2&bkQ0w-wRA`oY=a0xfgmM{VV0TSo4!6yJI*T)&8D`mR zXFbbqNk$MeM*%m=k2(HFvP_Zk`oG|L^b2@`ttlWC?XXr%EGM(9vos|q$-!^mO0IRr zKxS+ep%1K(E7jt0*yE$qmI++2hzmB<=r}9?YL6k;Z_^E-w90`~+GsA6Ax7}3vxo}Z zzLBd6EBxr=nH*+vRSR^ykIUVwyiNNoXd2Uz>e zJ&U()6gnhqFh`}+bql^%KLsxWoIphYtIR^rED(*ydJ)>SCq^pF2{*Duzw;{>xbL;O zSFsB?t{%C(PK?eUM(Zaic+E`Ff^N~;))%5!E+a-x_%qqa2BLH<{VpDr(=q$5gixR` zoZ<_x4cI&)8zXEB{bY5p;a=jmflw(Tn2`9%9_%6)1VG3d==!p~`^-B?>>T1(%)KRf0d^O? zr7nq|-PME!#sZI@@y|~VwdW|#ZkPOb>oW5MJ#9*9rcsNTG?(kJ|^|#_QRD0##jTd6|NtVcA1@0!FbIOn~jG{Z-|eHZG7fkDko0gZnWDEq)p}A>#ch=uaTH3?P;?T_E{;G?FYG9qJB&t%Px!+flom4^ zJ8u_c&fP}5`|n44)tc~7oZUukvtK~TrD`h7Lv573F>K%f;%ckrI>=OOHR0|QE4UT> zjWa~Tam~}n$tdq!zmS22Y!H)|Gv&Xp>?`G~c&xb87ji7I;Sol^d+d=~d0a!t5Z|4o zz)D7oco-(Br8+Oj&3%RPt$nQe!4?#KMyekz)Piy(m4p775WfpQY#M+nF2Qw#sSQkC zu*>zS0SL&mC4Vv?$TBUce2~bem;&T8jbh6~k~XMFp6~Ox^z=i7a`QJt3PqRQAnh@W zs?O5ADa;e*H_iob<0QqF3$T1HP$Xd+#%qi0_PozGpT~%L-`Gjl{_w2R0NPM1HB@eY z9e?iIltv&#XG12~0rBBAI3(CXF-dGLKX-p<5^VxIP>9HaU=9$Eeqp^(J;HE(%v_kK1oOuLAkJbi}@J`U|i((y;I zLwQwRzpL9^#h)8(hJk}EHauyMc|FkT)e2?G#*CPx-vo(*CX%s_`^?f^Q6O2fM%B=Q z1cLwEe6`)uK0|x>p_ji@bwBUV;= zK-@CdD3H07_4f^+b%1v+x0(kJoYO@m10+|LZ{FzD7oE z_&k39*iC11i>pD$$yo885mr7AQ6Qyel^e(iJCcJRDBD!U+BiZ%8RqxFYHr2^T~aui z7Ed%qTEloH*t-7|%1PrRl^8q*6IV6r&=Ootz(^7nu@fjO=qC4yp#-bopjA2Ary^MY z$%!Va64%t-N#={UTTV#a>wLw;M}7$BDPS$D?dAPh1IygFK(*-(Jh;A>m&BsW?ohH}I+eEFJA`>IP(dd0)(oqoh z$(+M+1E^GSP7CII@4B2Mm5Nf(ygnwDJC&Jvk8B8ZWR52H2VY_Ef$9to?j5l?;nPiwo2-WwoA5@MT_5XD#OZCc zwj$qri)bZ9>3sRWzr9R$K|py(1+JZZJBZ|~O)>N?2%0DSz)u|mTgI;%V_aKHC&Z4i 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
+

Login with Fireflies.ai

+ + +
+ + +
+ + + +
+ + + +
+ + + diff --git a/src/web/provider/fireflies/script.js b/src/web/provider/fireflies/script.js new file mode 100644 index 00000000..da47066b --- /dev/null +++ b/src/web/provider/fireflies/script.js @@ -0,0 +1,44 @@ +function setError(message) { + $("#errorContainer").show(); + $("#errorMessage").text(message); + setTimeout(() => { + $("#errorContainer").hide(); + }, 5000); +} + +function disableButton() { + $('#submitButton').prop('disabled', true); +} + +function enableButton() { + $('#submitButton').prop('disabled', false); +} + +function submitApiKey() { + disableButton(); + const apiKey = $('.form-control').val().trim(); + + if (!apiKey) { + setError("API Key is required."); + enableButton(); + return; + } + + $.post('/api/rest/v1/fireflies/apiKeySubmit', { apiKey: apiKey }, null, 'json') + .done((response) => { + if (response.status === 'success') { + window.location.href = response.redirect; + } else { + setError("Invalid API Key. Please try again."); + enableButton(); + } + }) + .fail(() => { + setError("Failed to connect to Fireflies API. Please try again later."); + enableButton(); + }); +} + +$(document).ready(function() { + $("#errorContainer").hide(); +}); From f5fa5197687e7bd69ec47845c1620e714242cf4a Mon Sep 17 00:00:00 2001 From: chime3 Date: Sun, 10 Nov 2024 20:20:50 -0700 Subject: [PATCH 03/20] feat: added flireFlies config --- src/serverconfig.example.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/serverconfig.example.json b/src/serverconfig.example.json index d25710f7..a10e74a4 100644 --- a/src/serverconfig.example.json +++ b/src/serverconfig.example.json @@ -114,6 +114,10 @@ "messagesPerGroupLimit": 100, "maxGroupSize": 50, "useDbPos": true + }, + "fireflies": { + "maxSyncLoops": 1, + "batchSize": 500 } }, "providerDefaults": { From fe69fcaa10ef6c0090cddba362941e88a37c64f3 Mon Sep 17 00:00:00 2001 From: chime3 Date: Sun, 10 Nov 2024 20:21:39 -0700 Subject: [PATCH 04/20] feat: added fireflies controller and route --- src/api/rest/v1/fireflies/controller.ts | 16 ++++++++++++++++ src/api/rest/v1/fireflies/routes.ts | 8 ++++++++ 2 files changed, 24 insertions(+) create mode 100644 src/api/rest/v1/fireflies/controller.ts create mode 100644 src/api/rest/v1/fireflies/routes.ts diff --git a/src/api/rest/v1/fireflies/controller.ts b/src/api/rest/v1/fireflies/controller.ts new file mode 100644 index 00000000..62884ee2 --- /dev/null +++ b/src/api/rest/v1/fireflies/controller.ts @@ -0,0 +1,16 @@ +import { Request, Response, NextFunction } from "express"; + +export default class Controller { + public static async apiKeySubmit(req: Request, res: Response, next: NextFunction) { + try { + const apiKey = req.body.apiKey; + + // @todo Validate API key if any (pending from FireFlies) + + // Redirect to the callback endpoint with the apiKey + res.redirect(`/callback/fireflies?apiKey=${encodeURIComponent(apiKey)}`); + } catch (error) { + next(error); + } + } +} diff --git a/src/api/rest/v1/fireflies/routes.ts b/src/api/rest/v1/fireflies/routes.ts new file mode 100644 index 00000000..920148be --- /dev/null +++ b/src/api/rest/v1/fireflies/routes.ts @@ -0,0 +1,8 @@ +import express from 'express' +import Controller from './controller' + +const router = express.Router() + +router.post('/apiKeySubmit', Controller.apiKeySubmit) + +export default router \ No newline at end of file From ab672ba4c637d7ede015314c4b942ea6c8542873 Mon Sep 17 00:00:00 2001 From: chime3 Date: Wed, 13 Nov 2024 15:15:33 -0700 Subject: [PATCH 05/20] feat: added fireflies route --- src/api/rest/v1/fireflies/controller.ts | 3 +++ src/api/rest/v1/routes.ts | 2 ++ 2 files changed, 5 insertions(+) diff --git a/src/api/rest/v1/fireflies/controller.ts b/src/api/rest/v1/fireflies/controller.ts index 62884ee2..e73d7a5c 100644 --- a/src/api/rest/v1/fireflies/controller.ts +++ b/src/api/rest/v1/fireflies/controller.ts @@ -9,6 +9,9 @@ export default class Controller { // Redirect to the callback endpoint with the apiKey res.redirect(`/callback/fireflies?apiKey=${encodeURIComponent(apiKey)}`); + res.send({ + success: true + }) } catch (error) { next(error); } diff --git a/src/api/rest/v1/routes.ts b/src/api/rest/v1/routes.ts index b74968ec..79d29805 100644 --- a/src/api/rest/v1/routes.ts +++ b/src/api/rest/v1/routes.ts @@ -9,6 +9,7 @@ import AdminRoutes from './admin/routes' import InfoRoutes from './info/routes' import LLMRoutes from './llm/routes' import TelegramRoutes from './telegram/routes' +import FireFliesRoutes from './fireflies/routes' import SearchRoutes from "./search/routes" import AccountRoutes from './account/routes' @@ -26,5 +27,6 @@ router.use('/search', SearchRoutes) router.use('/account', AccountRoutes) router.use('/telegram', TelegramRoutes) +router.use('/fireflies', FireFliesRoutes) export default router From e633ec1f955e5ed1c3ce6d4e152fb6c993824ffc Mon Sep 17 00:00:00 2001 From: chime3 Date: Wed, 13 Nov 2024 15:17:02 -0700 Subject: [PATCH 06/20] feat: added fireflies functions --- src/providers/fireflies/api.ts | 72 ++++++++++++++++++++++++++++++++ src/providers/fireflies/index.ts | 60 ++++++++++++++++++++++++++ 2 files changed, 132 insertions(+) create mode 100644 src/providers/fireflies/api.ts create mode 100644 src/providers/fireflies/index.ts diff --git a/src/providers/fireflies/api.ts b/src/providers/fireflies/api.ts new file mode 100644 index 00000000..f6dd8f23 --- /dev/null +++ b/src/providers/fireflies/api.ts @@ -0,0 +1,72 @@ +import axios, { AxiosResponse } from 'axios'; + +export interface FireFliesConfig { + apiKey: string; + baseUrl?: string; +} + +export interface User { + name: string; + integrations: string[]; + // Add more properties as necessary +} + +export interface GraphQLResponse { + data: T; + errors?: { message: string }[]; +} + +export class FireFliesClient { + private apiKey: string; + private baseUrl: string; + + constructor(config: FireFliesConfig) { + this.apiKey = config.apiKey; + this.baseUrl = config.baseUrl || 'https://api.fireflies.ai/graphql'; + } + + private get headers() { + return { + 'Content-Type': 'application/json', + Authorization: `Bearer ${this.apiKey}` + }; + } + + private async executeQuery(query: string, variables: Record): Promise> { + const payload = { query, variables }; + + try { + const response: AxiosResponse> = await axios.post(this.baseUrl, payload, { headers: this.headers }); + if (response.data.errors) { + throw new Error(`GraphQL error: ${response.data.errors.map(e => e.message).join(', ')}`); + } + return response.data; + } catch (error) { + console.error('Error executing GraphQL query:', error); + throw error; + } + } + + /** + * + * @param userId Optional + * + * @returns Owner by default + */ + public async getUser(userId?: string): Promise { + const query = ` + query User($userId: String!) { + user(id: $userId) { + name + integrations + } + } + `; + const variables = { userId }; + + const response = await this.executeQuery<{ user: User }>(query, variables); + return response.data.user; + } + + // You can add more methods to handle other queries or mutations here +} diff --git a/src/providers/fireflies/index.ts b/src/providers/fireflies/index.ts new file mode 100644 index 00000000..9b282c2d --- /dev/null +++ b/src/providers/fireflies/index.ts @@ -0,0 +1,60 @@ +import { Request, Response } from 'express' +import Base from "../BaseProvider" + +import { BaseProviderConfig, ConnectionCallbackResponse, PassportProfile } from '../../interfaces' +import { FireFliesClient, FireFliesConfig } from './api' + +export default class FireFliesProvider extends Base { + + protected config: BaseProviderConfig + + + public getProviderName() { + return 'fireflies' + } + + public getProviderLabel() { + return 'FireFlies' + } + + public getProviderApplicationUrl() { + return 'https://fireflies.ai/' + } + + public setConfig(config: BaseProviderConfig) { + this.config = config + } + + public syncHandlers(): any[] { + return [] + } + + public async connect(req: Request, res: Response, next: any): Promise { + return res.redirect('/provider/fireflies') + } + + public async callback(req: Request, res: Response, next: any): Promise { + + const apiKey = req.query.apiKey!.toString(); + + const config: FireFliesConfig = { + apiKey: apiKey + } + + const client = new FireFliesClient(config); + + const profile = await client.getUser(); + + return { + id: "", + accessToken: apiKey, + refreshToken: apiKey, + profile: { + provider: '', + id: '', + displayName: '' + } + } + } +} + From 001cdffa7c71b4daef8a53960b7845866780d58c Mon Sep 17 00:00:00 2001 From: chime3 Date: Thu, 14 Nov 2024 01:35:38 -0700 Subject: [PATCH 07/20] fix: updated fireflies user type --- src/providers/fireflies/api.ts | 50 +++++++++++++++++++++++----------- 1 file changed, 34 insertions(+), 16 deletions(-) diff --git a/src/providers/fireflies/api.ts b/src/providers/fireflies/api.ts index f6dd8f23..f237216b 100644 --- a/src/providers/fireflies/api.ts +++ b/src/providers/fireflies/api.ts @@ -6,9 +6,13 @@ export interface FireFliesConfig { } export interface User { + user_id: string; name: string; - integrations: string[]; - // Add more properties as necessary + email: string; + is_admin?: string; + num_transcripts?: string; + integrations?: string[]; + } export interface GraphQLResponse { @@ -32,7 +36,7 @@ export class FireFliesClient { }; } - private async executeQuery(query: string, variables: Record): Promise> { + private async executeQuery(query: string, variables?: Record): Promise> { const payload = { query, variables }; try { @@ -49,24 +53,38 @@ export class FireFliesClient { /** * - * @param userId Optional - * + * @param userId Optional + * * @returns Owner by default */ public async getUser(userId?: string): Promise { - const query = ` - query User($userId: String!) { - user(id: $userId) { - name - integrations + const query = userId + ? ` + query User($userId: String!) { + user(id: $userId) { + user_id + name + email + } } - } - `; - const variables = { userId }; - - const response = await this.executeQuery<{ user: User }>(query, variables); + ` + : ` + query { + user { + user_id + name + email + } + } + `; + + // Pass variables only if userId is defined + const response = userId + ? await this.executeQuery<{ user: User }>(query, { userId }) + : await this.executeQuery<{ user: User }>(query); + return response.data.user; } - + // You can add more methods to handle other queries or mutations here } From 25674486508f99bcb4acf80f9c510f3ef5ed205e Mon Sep 17 00:00:00 2001 From: chime3 Date: Thu, 14 Nov 2024 01:36:22 -0700 Subject: [PATCH 08/20] fix: added fireflies callback function --- src/api/rest/v1/fireflies/controller.ts | 14 ++++---- src/providers/fireflies/index.ts | 46 +++++++++++++++++-------- src/web/provider/fireflies/script.js | 9 ++--- 3 files changed, 42 insertions(+), 27 deletions(-) diff --git a/src/api/rest/v1/fireflies/controller.ts b/src/api/rest/v1/fireflies/controller.ts index e73d7a5c..fe086515 100644 --- a/src/api/rest/v1/fireflies/controller.ts +++ b/src/api/rest/v1/fireflies/controller.ts @@ -7,13 +7,15 @@ export default class Controller { // @todo Validate API key if any (pending from FireFlies) - // Redirect to the callback endpoint with the apiKey - res.redirect(`/callback/fireflies?apiKey=${encodeURIComponent(apiKey)}`); - res.send({ - success: true - }) + // Redirect to the callback endpoint with the apiKey + res.status(200).send({ + redirect: `/callback/fireflies?apiKey=${encodeURIComponent(apiKey)}` + }); + } catch (error) { - next(error); + res.status(400).send({ + error: error.message + }); } } } diff --git a/src/providers/fireflies/index.ts b/src/providers/fireflies/index.ts index 9b282c2d..5a57359c 100644 --- a/src/providers/fireflies/index.ts +++ b/src/providers/fireflies/index.ts @@ -34,27 +34,45 @@ export default class FireFliesProvider extends Base { } public async callback(req: Request, res: Response, next: any): Promise { - const apiKey = req.query.apiKey!.toString(); - + + // Initialize Fireflies client configuration const config: FireFliesConfig = { apiKey: apiKey - } - + }; + const client = new FireFliesClient(config); - - const profile = await client.getUser(); - + + // Fetch user profile from Fireflies + const ffProfile = await client.getUser(); + + // Set up display name + const displayName = ffProfile.name.trim(); + + // Construct the profile structure similar to the Telegram format + const profile: PassportProfile = { + id: ffProfile.user_id.toString(), + provider: this.getProviderId(), // Assuming getProviderId() returns 'fireflies' or similar identifier + displayName: displayName, + name: { + familyName: ffProfile.name.split(" ").slice(-1)[0], // Last word as family name + givenName: ffProfile.name.split(" ").slice(0, -1).join(" ") // First part as given name + }, + connectionProfile: { + username: ffProfile.email.split('@')[0], // Username from email prefix + readableId: ffProfile.user_id, + email: ffProfile.email, + verified: true // Assuming profile is verified + } + }; + return { - id: "", + id: profile.id, accessToken: apiKey, refreshToken: apiKey, - profile: { - provider: '', - id: '', - displayName: '' - } - } + profile + }; } + } diff --git a/src/web/provider/fireflies/script.js b/src/web/provider/fireflies/script.js index da47066b..1f666179 100644 --- a/src/web/provider/fireflies/script.js +++ b/src/web/provider/fireflies/script.js @@ -25,13 +25,8 @@ function submitApiKey() { } $.post('/api/rest/v1/fireflies/apiKeySubmit', { apiKey: apiKey }, null, 'json') - .done((response) => { - if (response.status === 'success') { - window.location.href = response.redirect; - } else { - setError("Invalid API Key. Please try again."); - enableButton(); - } + .done((response) => { + window.location.href = response.redirect; }) .fail(() => { setError("Failed to connect to Fireflies API. Please try again later."); From 4979a23fd9a12678863760ff242cf442c2a56e24 Mon Sep 17 00:00:00 2001 From: chime3 Date: Fri, 15 Nov 2024 01:12:05 -0700 Subject: [PATCH 09/20] feat: defined meeting transcript schema --- src/schemas.ts | 23 +++++++++++++++++++++++ src/serverconfig.example.json | 3 ++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/schemas.ts b/src/schemas.ts index a1f9e1d6..af11096b 100644 --- a/src/schemas.ts +++ b/src/schemas.ts @@ -156,3 +156,26 @@ export interface SchemaEvent extends SchemaRecord { attachments?: CalendarAttachment[] } + +export interface SchemaMeetingTranscript extends SchemaRecord{ + organizerEmail: string; + user?: SchemaPerson; + speakers?: SchemaPerson[]; + meetingAttendees?: SchemaPerson[]; + duration?: number; + dateTime?: string; + sentence?: SchemaMeetingTranscriptSentence[]; + calendarEventId?: string; +} + +export interface SchemaPerson { + email?: string; + displayName: string; + name?: string; + phoneNumber?: string; +} + +export interface SchemaMeetingTranscriptSentence { + rawText: string; + speakerName: string; +} diff --git a/src/serverconfig.example.json b/src/serverconfig.example.json index a10e74a4..fc9c8af5 100644 --- a/src/serverconfig.example.json +++ b/src/serverconfig.example.json @@ -32,7 +32,8 @@ "CHAT_GROUP": "https://common.schemas.verida.io/social/chat/group/v0.1.0/schema.json", "CHAT_MESSAGE": "https://common.schemas.verida.io/social/chat/message/v0.1.0/schema.json", "CALENDAR": "https://common.schemas.verida.io/social/calendar/v0.1.0/schema.json", - "EVENT": "https://common.schemas.verida.io/social/event/v0.1.0/schema.json" + "EVENT": "https://common.schemas.verida.io/social/event/v0.1.0/schema.json", + "MEETING_TRANSCRIPT": "https://common.schemas.verida.io/social/meeting-transcript/v0.1.0/schema.json" }, "llms": { "bedrockEndpoint": "", From 127339f14366f5229f67913dca8140fb7d98849a Mon Sep 17 00:00:00 2001 From: chime3 Date: Fri, 15 Nov 2024 01:24:38 -0700 Subject: [PATCH 10/20] feat: added meeting transcript handler --- src/providers/fireflies/meeting-transcript.ts | 177 ++++++++++++++++++ 1 file changed, 177 insertions(+) create mode 100644 src/providers/fireflies/meeting-transcript.ts diff --git a/src/providers/fireflies/meeting-transcript.ts b/src/providers/fireflies/meeting-transcript.ts new file mode 100644 index 00000000..3703b2d1 --- /dev/null +++ b/src/providers/fireflies/meeting-transcript.ts @@ -0,0 +1,177 @@ +import axios from 'axios'; +import CONFIG from "../../config"; +import { BaseHandlerConfig, SyncHandlerPosition, SyncItemsBreak, SyncItemsResult, SyncProviderLogLevel } from '../../interfaces'; +import { ItemsRangeTracker } from "../../helpers/itemsRangeTracker"; + +import { + SyncResponse, + SyncHandlerStatus, + ProviderHandlerOption, + ConnectionOptionType, +} from "../../interfaces"; +import { SchemaMeetingTranscript } from "../../schemas"; +import AccessDeniedError from "../AccessDeniedError"; +import InvalidTokenError from "../InvalidTokenError"; +import BaseSyncHandler from '../BaseSyncHandler'; + +const MAX_BATCH_SIZE = 50; // Maximum limit for Fireflies API queries + +export interface SyncTranscriptItemsResult extends SyncItemsResult { + items: SchemaMeetingTranscript[]; +} + +export default class MeetingTranscriptHandler extends BaseSyncHandler { + + protected config: BaseHandlerConfig; + + public getLabel(): string { + return "Meeting Transcript"; + } + + public getName(): string { + return 'meeting-transcript'; + } + + public getSchemaUri(): string { + return CONFIG.verida.schemas.MEETING_TRANSCRIPT; + } + + public getProviderApplicationUrl() { + return 'https://app.fireflies.ai/'; + } + + public getOptions(): ProviderHandlerOption[] { + return [{ + id: 'dateRange', + label: 'Transcript Date Range', + type: ConnectionOptionType.ENUM, + enumOptions: [{ + value: '1-month', + label: '1 month' + }, { + value: '3-months', + label: '3 months' + }, { + value: '6-months', + label: '6 months' + }], + defaultValue: '3-months' + }]; + } + + private async getFirefliesClient() { + return axios.create({ + baseURL: 'https://api.fireflies.ai/graphql', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${this.connection.accessToken}`, + }, + }); + } + + public async _sync( + api: any, + syncPosition: SyncHandlerPosition + ): Promise { + try { + if (this.config.batchSize > MAX_BATCH_SIZE) { + throw new Error(`Batch size (${this.config.batchSize}) is larger than permitted (${MAX_BATCH_SIZE})`); + } + + const client = await this.getFirefliesClient(); + const rangeTracker = new ItemsRangeTracker(syncPosition.thisRef); + let items: SchemaMeetingTranscript[] = []; + + let currentRange = rangeTracker.nextRange(); + const query = ` + query Transcripts($limit: Int, $skip: Int, $userId: String, $fromDate: DateTime, $toDate: DateTime) { + transcripts(limit: $limit, skip: $skip, user_id: $userId, fromDate: $fromDate, toDate: $toDate) { + id + title + date + speakers { + id + name + } + participants + transcript_url + duration + summary { + keywords + action_items + short_summary + } + } + } + `; + + const variables = { + limit: this.config.batchSize, + skip: currentRange.startId || 0, + userId: this.config.userId, + fromDate: this.config.fromDate, + toDate: this.config.toDate, + }; + + const response = await client.post('', { query, variables }); + const resultData = await this.buildResults(response.data.data.transcripts, currentRange.endId); + + items = resultData.items; + + if (!items.length) { + syncPosition.syncMessage = `No transcripts found within specified range.`; + syncPosition.status = SyncHandlerStatus.ENABLED; + } else { + syncPosition.syncMessage = `Fetched ${items.length} transcripts.`; + } + + syncPosition.thisRef = rangeTracker.export(); + + return { + results: items, + position: syncPosition, + }; + } catch (err: any) { + if (err.response && err.response.status == 403) { + throw new AccessDeniedError(err.message); + } else if (err.response && err.response.status == 401) { + throw new InvalidTokenError(err.message); + } + throw err; + } + } + + protected async buildResults( + transcripts: any[], + breakId: string + ): Promise { + const results: SchemaMeetingTranscript[] = []; + let breakHit: SyncItemsBreak; + + for (const transcript of transcripts) { + const transcriptId = transcript.id; + + if (transcriptId === breakId) { + this.emit('log', { + level: SyncProviderLogLevel.DEBUG, + message: `Break ID hit (${breakId})` + }); + breakHit = SyncItemsBreak.ID; + break; + } + + results.push({ + _id: this.buildItemId(transcriptId), + name: transcript.title || 'Untitled meeting', + organizerEmail: transcript.organizerEmail, + insertedAt: new Date().toISOString(), + duration: transcript.duration, + }); + } + + return { + items: results, + breakHit, + }; + } +} From 0f42109260a92a1aad66057dc75dba0bf0472838 Mon Sep 17 00:00:00 2001 From: chime3 Date: Thu, 21 Nov 2024 18:38:11 -0700 Subject: [PATCH 11/20] feat: improved meeting transcript handler --- src/providers/fireflies/api.ts | 2 +- src/providers/fireflies/index.ts | 23 ++-- src/providers/fireflies/meeting-transcript.ts | 113 ++++++++++++------ 3 files changed, 91 insertions(+), 47 deletions(-) diff --git a/src/providers/fireflies/api.ts b/src/providers/fireflies/api.ts index f237216b..dd2aca6a 100644 --- a/src/providers/fireflies/api.ts +++ b/src/providers/fireflies/api.ts @@ -36,7 +36,7 @@ export class FireFliesClient { }; } - private async executeQuery(query: string, variables?: Record): Promise> { + public async executeQuery(query: string, variables?: Record): Promise> { const payload = { query, variables }; try { diff --git a/src/providers/fireflies/index.ts b/src/providers/fireflies/index.ts index 5a57359c..ba08ca97 100644 --- a/src/providers/fireflies/index.ts +++ b/src/providers/fireflies/index.ts @@ -3,6 +3,7 @@ import Base from "../BaseProvider" import { BaseProviderConfig, ConnectionCallbackResponse, PassportProfile } from '../../interfaces' import { FireFliesClient, FireFliesConfig } from './api' +import MeetingTranscriptHandler from './meeting-transcript' export default class FireFliesProvider extends Base { @@ -26,7 +27,9 @@ export default class FireFliesProvider extends Base { } public syncHandlers(): any[] { - return [] + return [ + MeetingTranscriptHandler + ] } public async connect(req: Request, res: Response, next: any): Promise { @@ -35,20 +38,20 @@ export default class FireFliesProvider extends Base { public async callback(req: Request, res: Response, next: any): Promise { const apiKey = req.query.apiKey!.toString(); - + // Initialize Fireflies client configuration const config: FireFliesConfig = { apiKey: apiKey }; - + const client = new FireFliesClient(config); - + // Fetch user profile from Fireflies const ffProfile = await client.getUser(); - + // Set up display name const displayName = ffProfile.name.trim(); - + // Construct the profile structure similar to the Telegram format const profile: PassportProfile = { id: ffProfile.user_id.toString(), @@ -65,7 +68,7 @@ export default class FireFliesProvider extends Base { verified: true // Assuming profile is verified } }; - + return { id: profile.id, accessToken: apiKey, @@ -73,6 +76,10 @@ export default class FireFliesProvider extends Base { profile }; } - + + public async getApi( + accessToken?: string, + refreshToken?: string + ): Promise { } } diff --git a/src/providers/fireflies/meeting-transcript.ts b/src/providers/fireflies/meeting-transcript.ts index 3703b2d1..3ad9d15f 100644 --- a/src/providers/fireflies/meeting-transcript.ts +++ b/src/providers/fireflies/meeting-transcript.ts @@ -13,6 +13,7 @@ import { SchemaMeetingTranscript } from "../../schemas"; import AccessDeniedError from "../AccessDeniedError"; import InvalidTokenError from "../InvalidTokenError"; import BaseSyncHandler from '../BaseSyncHandler'; +import { FireFliesClient } from './api'; const MAX_BATCH_SIZE = 50; // Maximum limit for Fireflies API queries @@ -59,62 +60,67 @@ export default class MeetingTranscriptHandler extends BaseSyncHandler { }]; } - private async getFirefliesClient() { - return axios.create({ - baseURL: 'https://api.fireflies.ai/graphql', - headers: { - 'Content-Type': 'application/json', - Authorization: `Bearer ${this.connection.accessToken}`, - }, - }); - } - public async _sync( api: any, syncPosition: SyncHandlerPosition ): Promise { + try { if (this.config.batchSize > MAX_BATCH_SIZE) { throw new Error(`Batch size (${this.config.batchSize}) is larger than permitted (${MAX_BATCH_SIZE})`); } - const client = await this.getFirefliesClient(); + const client = new FireFliesClient({ + apiKey: this.connection.accessToken + }); + const rangeTracker = new ItemsRangeTracker(syncPosition.thisRef); let items: SchemaMeetingTranscript[] = []; let currentRange = rangeTracker.nextRange(); + const query = ` - query Transcripts($limit: Int, $skip: Int, $userId: String, $fromDate: DateTime, $toDate: DateTime) { - transcripts(limit: $limit, skip: $skip, user_id: $userId, fromDate: $fromDate, toDate: $toDate) { + query Transcripts($limit: Int, $skip: Int) { + transcripts(limit: $limit, skip: $skip) { id title - date + organizer_email + user { + email + name + } + date speakers { id name } - participants - transcript_url + sentences { + speaker_name + raw_text + } + meeting_attendees { + displayName + email + phoneNumber + name + } duration - summary { - keywords - action_items + summary { short_summary } + cal_id } } `; const variables = { limit: this.config.batchSize, - skip: currentRange.startId || 0, - userId: this.config.userId, - fromDate: this.config.fromDate, - toDate: this.config.toDate, + skip: currentRange.startId || 0 }; - const response = await client.post('', { query, variables }); - const resultData = await this.buildResults(response.data.data.transcripts, currentRange.endId); + const response = await client.executeQuery(query, variables) + + const resultData = await this.buildResults(response.data.transcripts, currentRange.endId); items = resultData.items; @@ -146,32 +152,63 @@ export default class MeetingTranscriptHandler extends BaseSyncHandler { breakId: string ): Promise { const results: SchemaMeetingTranscript[] = []; - let breakHit: SyncItemsBreak; - + let breakHit: SyncItemsBreak | undefined; + for (const transcript of transcripts) { const transcriptId = transcript.id; - + + // Check for the break ID to stop processing if (transcriptId === breakId) { this.emit('log', { level: SyncProviderLogLevel.DEBUG, - message: `Break ID hit (${breakId})` + message: `Break ID hit (${breakId})`, }); breakHit = SyncItemsBreak.ID; break; } - + + // Map transcript fields to SchemaMeetingTranscript results.push({ - _id: this.buildItemId(transcriptId), - name: transcript.title || 'Untitled meeting', - organizerEmail: transcript.organizerEmail, - insertedAt: new Date().toISOString(), - duration: transcript.duration, + _id: this.buildItemId(transcriptId), // Unique ID for each transcript + name: transcript.title || 'Untitled meeting', + organizerEmail: transcript.organizer_email, + user: transcript.user + ? { + email: transcript.user.email, + displayName: transcript.user.name || 'Unknown', + name: transcript.user.name || undefined, + } + : undefined, + speakers: transcript.speakers + ? transcript.speakers.map((speaker: any) => ({ + displayName: speaker.name, + email: speaker?.email, + })) + : [], + meetingAttendees: transcript.meeting_attendees + ? transcript.meeting_attendees.map((attendee: any) => ({ + displayName: attendee.displayName, + email: attendee.email, + phoneNumber: attendee.phoneNumber, + name: attendee.name, + })) + : [], + duration: transcript.duration, + dateTime: transcript.date || undefined, + sentence: transcript.sentences + ? transcript.sentences.map((sentence: any) => ({ + rawText: sentence.raw_text, + speakerName: sentence.speaker_name, + })) + : [], + calendarEventId: transcript.cal_id || undefined, + insertedAt: new Date().toISOString(), // Add the current timestamp }); } - + return { items: results, - breakHit, + breakHit, // Indicates if a break ID was encountered }; - } + } } From 57deabb10153753170c0a9f490ffc780470c76eb Mon Sep 17 00:00:00 2001 From: chime3 Date: Thu, 21 Nov 2024 18:38:47 -0700 Subject: [PATCH 12/20] fix: modified batch size --- src/serverconfig.example.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/serverconfig.example.json b/src/serverconfig.example.json index fc9c8af5..a49ef4b2 100644 --- a/src/serverconfig.example.json +++ b/src/serverconfig.example.json @@ -118,7 +118,7 @@ }, "fireflies": { "maxSyncLoops": 1, - "batchSize": 500 + "batchSize": 50 } }, "providerDefaults": { From a6320bf103e5abb0a47151734aaf3b2608090e54 Mon Sep 17 00:00:00 2001 From: chime3 Date: Sun, 22 Dec 2024 20:06:22 -0700 Subject: [PATCH 13/20] feat: added fireflies status as active --- src/serverconfig.example.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/serverconfig.example.json b/src/serverconfig.example.json index 10eb96cd..2150b23f 100644 --- a/src/serverconfig.example.json +++ b/src/serverconfig.example.json @@ -132,6 +132,8 @@ "useDbPos": true }, "fireflies": { + "status": "active", + "label": "FireFlies", "maxSyncLoops": 1, "batchSize": 50 } From b81cc0a2cd05428c8593a16112c403850a58031f Mon Sep 17 00:00:00 2001 From: chime3 Date: Sun, 22 Dec 2024 20:16:03 -0700 Subject: [PATCH 14/20] feat: added meeting transcript option in UI --- src/web/developer/data/data.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/web/developer/data/data.js b/src/web/developer/data/data.js index ec9202a0..f64a3762 100644 --- a/src/web/developer/data/data.js +++ b/src/web/developer/data/data.js @@ -22,7 +22,8 @@ $(document).ready(function() { "Chat Message": "https://common.schemas.verida.io/social/chat/message/v0.1.0/schema.json", "Files": "https://common.schemas.verida.io/file/v0.1.0/schema.json", "Calendar": "https://common.schemas.verida.io/social/calendar/v0.1.0/schema.json", - "Event": "https://common.schemas.verida.io/social/event/v0.1.0/schema.json" + "Event": "https://common.schemas.verida.io/social/event/v0.1.0/schema.json", + "Meeting Transcript": "https://common.schemas.verida.io/social/meeting-transcript/v0.1.0/schema.json" }; // Load Verida Key and Schema from local storage From 834246ac7e772f39cafaa79cc67001e6687d9901 Mon Sep 17 00:00:00 2001 From: chime3 Date: Sun, 22 Dec 2024 20:22:29 -0700 Subject: [PATCH 15/20] fix: meeting transcript type bug --- src/providers/fireflies/meeting-transcript.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/providers/fireflies/meeting-transcript.ts b/src/providers/fireflies/meeting-transcript.ts index 3ad9d15f..d20d8003 100644 --- a/src/providers/fireflies/meeting-transcript.ts +++ b/src/providers/fireflies/meeting-transcript.ts @@ -125,7 +125,7 @@ export default class MeetingTranscriptHandler extends BaseSyncHandler { items = resultData.items; if (!items.length) { - syncPosition.syncMessage = `No transcripts found within specified range.`; + syncPosition.syncMessage = "No transcripts found within specified range."; syncPosition.status = SyncHandlerStatus.ENABLED; } else { syncPosition.syncMessage = `Fetched ${items.length} transcripts.`; @@ -187,7 +187,9 @@ export default class MeetingTranscriptHandler extends BaseSyncHandler { : [], meetingAttendees: transcript.meeting_attendees ? transcript.meeting_attendees.map((attendee: any) => ({ - displayName: attendee.displayName, + displayName: typeof attendee.displayName === 'string' && attendee.displayName.trim() + ? attendee.displayName.trim() + : 'Unknown', email: attendee.email, phoneNumber: attendee.phoneNumber, name: attendee.name, From a5a18730f8122bc5686d8470f05edabdfe24578a Mon Sep 17 00:00:00 2001 From: chime3 Date: Sun, 22 Dec 2024 22:04:21 -0700 Subject: [PATCH 16/20] fix: meetingattendee data type bug --- src/providers/fireflies/meeting-transcript.ts | 57 +++++++++++-------- 1 file changed, 32 insertions(+), 25 deletions(-) diff --git a/src/providers/fireflies/meeting-transcript.ts b/src/providers/fireflies/meeting-transcript.ts index d20d8003..4348ee21 100644 --- a/src/providers/fireflies/meeting-transcript.ts +++ b/src/providers/fireflies/meeting-transcript.ts @@ -22,7 +22,7 @@ export interface SyncTranscriptItemsResult extends SyncItemsResult { } export default class MeetingTranscriptHandler extends BaseSyncHandler { - + protected config: BaseHandlerConfig; public getLabel(): string { @@ -64,7 +64,7 @@ export default class MeetingTranscriptHandler extends BaseSyncHandler { api: any, syncPosition: SyncHandlerPosition ): Promise { - + try { if (this.config.batchSize > MAX_BATCH_SIZE) { throw new Error(`Batch size (${this.config.batchSize}) is larger than permitted (${MAX_BATCH_SIZE})`); @@ -115,7 +115,7 @@ export default class MeetingTranscriptHandler extends BaseSyncHandler { const variables = { limit: this.config.batchSize, - skip: currentRange.startId || 0 + skip: currentRange.startId || 0 }; const response = await client.executeQuery(query, variables) @@ -153,10 +153,10 @@ export default class MeetingTranscriptHandler extends BaseSyncHandler { ): Promise { const results: SchemaMeetingTranscript[] = []; let breakHit: SyncItemsBreak | undefined; - + for (const transcript of transcripts) { const transcriptId = transcript.id; - + // Check for the break ID to stop processing if (transcriptId === breakId) { this.emit('log', { @@ -166,7 +166,7 @@ export default class MeetingTranscriptHandler extends BaseSyncHandler { breakHit = SyncItemsBreak.ID; break; } - + // Map transcript fields to SchemaMeetingTranscript results.push({ _id: this.buildItemId(transcriptId), // Unique ID for each transcript @@ -174,43 +174,50 @@ export default class MeetingTranscriptHandler extends BaseSyncHandler { organizerEmail: transcript.organizer_email, user: transcript.user ? { - email: transcript.user.email, - displayName: transcript.user.name || 'Unknown', - name: transcript.user.name || undefined, - } + email: transcript.user.email, + displayName: transcript.user.name || 'Unknown', + name: transcript.user.name || undefined, + } : undefined, speakers: transcript.speakers ? transcript.speakers.map((speaker: any) => ({ - displayName: speaker.name, - email: speaker?.email, - })) + displayName: speaker.name, + email: speaker?.email, + })) : [], meetingAttendees: transcript.meeting_attendees ? transcript.meeting_attendees.map((attendee: any) => ({ - displayName: typeof attendee.displayName === 'string' && attendee.displayName.trim() - ? attendee.displayName.trim() - : 'Unknown', - email: attendee.email, - phoneNumber: attendee.phoneNumber, - name: attendee.name, - })) + displayName: typeof attendee.displayName === 'string' && attendee.displayName.trim() + ? attendee.displayName.trim() + : 'Unknown', + email: typeof attendee.email === 'string' && attendee.email.trim() + ? attendee.email.trim() + : 'Unknown', + phoneNumber: typeof attendee.phoneNumber === 'string' && attendee.phoneNumber.trim() + ? attendee.phoneNumber.trim() + : 'Unknown', + name: typeof attendee.name === 'string' && attendee.name.trim() + ? attendee.name.trim() + : 'Unknown', + })) : [], + duration: transcript.duration, dateTime: transcript.date || undefined, sentence: transcript.sentences ? transcript.sentences.map((sentence: any) => ({ - rawText: sentence.raw_text, - speakerName: sentence.speaker_name, - })) + rawText: sentence.raw_text, + speakerName: sentence.speaker_name, + })) : [], calendarEventId: transcript.cal_id || undefined, insertedAt: new Date().toISOString(), // Add the current timestamp }); } - + return { items: results, breakHit, // Indicates if a break ID was encountered }; - } + } } From 787b1e30f4af4a6d7613896adf9c80342265cef0 Mon Sep 17 00:00:00 2001 From: chime3 Date: Thu, 9 Jan 2025 20:24:59 -0700 Subject: [PATCH 17/20] feat: fireflies meeting transcript unit test --- .../fireflies/meeting-transcript.tests.ts | 152 ++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 tests/providers/fireflies/meeting-transcript.tests.ts diff --git a/tests/providers/fireflies/meeting-transcript.tests.ts b/tests/providers/fireflies/meeting-transcript.tests.ts new file mode 100644 index 00000000..8ca7a13d --- /dev/null +++ b/tests/providers/fireflies/meeting-transcript.tests.ts @@ -0,0 +1,152 @@ +const assert = require("assert"); +import { + BaseProviderConfig, + Connection, + SyncHandlerPosition, + SyncHandlerStatus, +} from "../../../src/interfaces"; +import Providers from "../../../src/providers"; +import CommonUtils, { NetworkInstance } from "../../common.utils"; +import MeetingTranscriptHandler from "../../../src/providers/fireflies/meeting-transcript"; +import BaseProvider from "../../../src/providers/BaseProvider"; +import { CommonTests, GenericTestConfig } from "../../common.tests"; +import { SchemaMeetingTranscript } from "../../../src/schemas"; + +const providerId = "fireflies"; +let network: NetworkInstance; +let connection: Connection; +let provider: BaseProvider; +let handlerName = "meeting-transcript"; +let testConfig: GenericTestConfig; +let providerConfig: Omit = { + batchSize: 10 +}; + +describe(`${providerId} Tests`, function () { + this.timeout(100000); + + this.beforeAll(async function () { + network = await CommonUtils.getNetwork(); + connection = await CommonUtils.getConnection(providerId); + provider = Providers(providerId, network.context, connection); + + testConfig = { + idPrefix: `${provider.getProviderName()}-${connection.profile.id}`, + timeOrderAttribute: "dateTime", + batchSizeLimitAttribute: "batchSize", + }; + }); + + describe(`Fetch ${providerId} data`, () => { + it(`Can pass basic tests: ${handlerName}`, async () => { + const { api, handler, provider } = await CommonTests.buildTestObjects( + providerId, + MeetingTranscriptHandler, + providerConfig, + connection + ); + + try { + const syncPosition: SyncHandlerPosition = { + _id: `${providerId}-${handlerName}`, + providerId, + handlerId: handler.getId(), + accountId: provider.getAccountId(), + status: SyncHandlerStatus.ENABLED, + }; + + // First batch + const response = await handler._sync(api, syncPosition); + assert.ok(response.results, "Have results"); + assert.ok(response.results.length <= providerConfig.batchSize, + "Results respect batch size limit"); + + // Verify schema compliance + const transcript = response.results[0] as SchemaMeetingTranscript; + assert.ok(transcript._id, "Has _id"); + assert.ok(transcript.sourceId, "Has sourceId"); + assert.ok(transcript.title, "Has title"); + assert.ok(transcript.dateTime, "Has dateTime"); + assert.ok(transcript.transcript, "Has transcript"); + assert.ok(Array.isArray(transcript.attendees), "Has attendees array"); + + } catch (err) { + await provider.close(); + throw err; + } + }); + + it(`Can limit results by timestamp`, async () => { + const lastRecordHours = 24; + const lastRecordTimestamp = new Date( + Date.now() - lastRecordHours * 3600000 + ).toISOString(); + + const syncPosition: Omit = { + providerId, + handlerId: handlerName, + accountId: provider.getAccountId(), + status: SyncHandlerStatus.ENABLED, + }; + + providerConfig.metadata = { + breakTimestamp: lastRecordTimestamp, + }; + + const syncResponse = await CommonTests.runSyncTest( + providerId, + MeetingTranscriptHandler, + connection, + testConfig, + syncPosition, + providerConfig + ); + + assert.ok( + syncResponse.results && syncResponse.results.length, + "Have results (You may not have any meetings in the testing timeframe)" + ); + + const results = syncResponse.results; + assert.ok( + results[results.length - 1].dateTime > lastRecordTimestamp, + "Last result is within expected date/time range" + ); + }); + + it('Handles API errors appropriately', async () => { + const { handler } = await CommonTests.buildTestObjects( + providerId, + MeetingTranscriptHandler, + providerConfig, + connection + ); + + const mockApi = { + executeQuery: async () => { + throw { response: { status: 401 } }; + } + }; + + const syncPosition: SyncHandlerPosition = { + _id: `${providerId}-${handlerName}`, + providerId, + handlerId: handler.getId(), + accountId: provider.getAccountId(), + status: SyncHandlerStatus.ENABLED, + }; + + try { + await handler._sync(mockApi, syncPosition); + assert.fail('Should have thrown an error'); + } catch (err) { + assert.ok(err.name === 'InvalidTokenError', 'Throws correct error type'); + } + }); + }); + + this.afterAll(async function () { + const { context } = await CommonUtils.getNetwork(); + await context.close(); + }); +}); \ No newline at end of file From 60875c8ed53f5c771ba9b4f069ef8cc0b93b8d59 Mon Sep 17 00:00:00 2001 From: chime3 Date: Thu, 9 Jan 2025 20:44:27 -0700 Subject: [PATCH 18/20] feat: added fireflies readme --- src/providers/fireflies/README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 src/providers/fireflies/README.md diff --git a/src/providers/fireflies/README.md b/src/providers/fireflies/README.md new file mode 100644 index 00000000..053b827f --- /dev/null +++ b/src/providers/fireflies/README.md @@ -0,0 +1,10 @@ +## Authentication + +Fireflies uses API key authentication and GraphQL for all API interactions. + +#### Getting an API Key + +1. Log in to your Fireflies.ai account +2. Navigate to Settings > Developer Settings +3. Use the existing one or reset another +4. Copy and securely store your API key From 79a787aff6f258f632486eb916c215e1ded458cd Mon Sep 17 00:00:00 2001 From: chime3 Date: Wed, 15 Jan 2025 00:42:59 -0700 Subject: [PATCH 19/20] fix: update meeting transcript date time format --- src/providers/fireflies/meeting-transcript.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/providers/fireflies/meeting-transcript.ts b/src/providers/fireflies/meeting-transcript.ts index 4348ee21..ed1054b8 100644 --- a/src/providers/fireflies/meeting-transcript.ts +++ b/src/providers/fireflies/meeting-transcript.ts @@ -175,7 +175,7 @@ export default class MeetingTranscriptHandler extends BaseSyncHandler { user: transcript.user ? { email: transcript.user.email, - displayName: transcript.user.name || 'Unknown', + displayName: transcript.user.name || '', name: transcript.user.name || undefined, } : undefined, @@ -189,21 +189,21 @@ export default class MeetingTranscriptHandler extends BaseSyncHandler { ? transcript.meeting_attendees.map((attendee: any) => ({ displayName: typeof attendee.displayName === 'string' && attendee.displayName.trim() ? attendee.displayName.trim() - : 'Unknown', + : '', email: typeof attendee.email === 'string' && attendee.email.trim() ? attendee.email.trim() - : 'Unknown', + : '', phoneNumber: typeof attendee.phoneNumber === 'string' && attendee.phoneNumber.trim() ? attendee.phoneNumber.trim() - : 'Unknown', + : '', name: typeof attendee.name === 'string' && attendee.name.trim() ? attendee.name.trim() - : 'Unknown', + : '', })) : [], duration: transcript.duration, - dateTime: transcript.date || undefined, + dateTime: new Date(transcript.date).toISOString(), sentence: transcript.sentences ? transcript.sentences.map((sentence: any) => ({ rawText: sentence.raw_text, From 8fd5ef116c6364980d888b6a2c7e7f146e650e92 Mon Sep 17 00:00:00 2001 From: chime3 Date: Sun, 26 Jan 2025 16:10:55 -0700 Subject: [PATCH 20/20] feat: refactored fireflies unit test --- .../fireflies/meeting-transcript.tests.ts | 185 ++++++++++++------ 1 file changed, 124 insertions(+), 61 deletions(-) diff --git a/tests/providers/fireflies/meeting-transcript.tests.ts b/tests/providers/fireflies/meeting-transcript.tests.ts index 8ca7a13d..28a09935 100644 --- a/tests/providers/fireflies/meeting-transcript.tests.ts +++ b/tests/providers/fireflies/meeting-transcript.tests.ts @@ -1,16 +1,19 @@ const assert = require("assert"); +import CONFIG from "../../../src/config"; import { + BaseHandlerConfig, BaseProviderConfig, Connection, SyncHandlerPosition, - SyncHandlerStatus, + SyncHandlerStatus } from "../../../src/interfaces"; import Providers from "../../../src/providers"; import CommonUtils, { NetworkInstance } from "../../common.utils"; -import MeetingTranscriptHandler from "../../../src/providers/fireflies/meeting-transcript"; + +import FirefliesMeetingTranscriptHandler from "../../../src/providers/fireflies/meeting-transcript"; import BaseProvider from "../../../src/providers/BaseProvider"; import { CommonTests, GenericTestConfig } from "../../common.tests"; -import { SchemaMeetingTranscript } from "../../../src/schemas"; +import { SchemaMeetingTranscript, SchemaRecord } from "../../../src/schemas"; const providerId = "fireflies"; let network: NetworkInstance; @@ -18,21 +21,23 @@ let connection: Connection; let provider: BaseProvider; let handlerName = "meeting-transcript"; let testConfig: GenericTestConfig; -let providerConfig: Omit = { - batchSize: 10 + +let providerConfig: Omit = {}; +let handlerConfig: BaseHandlerConfig = { + batchSize: 20 }; -describe(`${providerId} Tests`, function () { +describe(`${providerId} meeting transcript tests`, function () { this.timeout(100000); this.beforeAll(async function () { network = await CommonUtils.getNetwork(); connection = await CommonUtils.getConnection(providerId); provider = Providers(providerId, network.context, connection); - + testConfig = { - idPrefix: `${provider.getProviderName()}-${connection.profile.id}`, - timeOrderAttribute: "dateTime", + idPrefix: `${provider.getProviderId()}-${connection.profile.id}`, + timeOrderAttribute: "insertedAt", batchSizeLimitAttribute: "batchSize", }; }); @@ -41,11 +46,13 @@ describe(`${providerId} Tests`, function () { it(`Can pass basic tests: ${handlerName}`, async () => { const { api, handler, provider } = await CommonTests.buildTestObjects( providerId, - MeetingTranscriptHandler, + FirefliesMeetingTranscriptHandler, providerConfig, connection ); + handler.setConfig(handlerConfig); + try { const syncPosition: SyncHandlerPosition = { _id: `${providerId}-${handlerName}`, @@ -57,76 +64,127 @@ describe(`${providerId} Tests`, function () { // First batch const response = await handler._sync(api, syncPosition); - assert.ok(response.results, "Have results"); - assert.ok(response.results.length <= providerConfig.batchSize, - "Results respect batch size limit"); - - // Verify schema compliance - const transcript = response.results[0] as SchemaMeetingTranscript; - assert.ok(transcript._id, "Has _id"); - assert.ok(transcript.sourceId, "Has sourceId"); - assert.ok(transcript.title, "Has title"); - assert.ok(transcript.dateTime, "Has dateTime"); - assert.ok(transcript.transcript, "Has transcript"); - assert.ok(Array.isArray(transcript.attendees), "Has attendees array"); + const results = response.results; + + // Basic assertions + assert.ok(results && results.length, "Have results returned"); + assert.ok(results.length > 0, "Have meeting-transcripts returned"); + + // Check first item structure + CommonTests.checkItem(results[0], handler, provider); + + // Verify sync status + assert.equal( + SyncHandlerStatus.SYNCING, + response.position.status, + "Sync is active" + ); + // Second batch + const secondBatchResponse = await handler._sync(api, response.position); + const secondBatchResults = secondBatchResponse.results; + + // Verify second batch + assert.ok(secondBatchResults && secondBatchResults.length, "Have second batch results"); } catch (err) { await provider.close(); throw err; } }); - it(`Can limit results by timestamp`, async () => { - const lastRecordHours = 24; - const lastRecordTimestamp = new Date( - Date.now() - lastRecordHours * 3600000 - ).toISOString(); + it(`Should have valid meeting-transcript data structure`, async () => { + const { api, handler, provider } = await CommonTests.buildTestObjects( + providerId, + FirefliesMeetingTranscriptHandler, + providerConfig, + connection + ); + handler.setConfig(handlerConfig); - const syncPosition: Omit = { + const syncPosition: SyncHandlerPosition = { + _id: `${providerId}-${handlerName}`, providerId, - handlerId: handlerName, + handlerId: handler.getId(), accountId: provider.getAccountId(), status: SyncHandlerStatus.ENABLED, }; - providerConfig.metadata = { - breakTimestamp: lastRecordTimestamp, - }; + const response = await handler._sync(api, syncPosition); + const results = response.results; - const syncResponse = await CommonTests.runSyncTest( + // Check meeting-transcript structure + const firstItem = results[0]; + assert.ok(firstItem.organizerEmail, "Item has organizer"); + assert.ok(firstItem.duration, "Item has duration"); + assert.ok(firstItem.sourceId, "Item has sourceId"); + assert.ok(firstItem.summary, "Item has summary"); + }); + + it(`Should process meeting-transcripts in chronological order`, async () => { + const { api, handler, provider } = await CommonTests.buildTestObjects( providerId, - MeetingTranscriptHandler, - connection, - testConfig, - syncPosition, - providerConfig + FirefliesMeetingTranscriptHandler, + providerConfig, + connection ); + handler.setConfig(handlerConfig); - assert.ok( - syncResponse.results && syncResponse.results.length, - "Have results (You may not have any meetings in the testing timeframe)" - ); + const syncPosition: SyncHandlerPosition = { + _id: `${providerId}-${handlerName}`, + providerId, + handlerId: handler.getId(), + accountId: provider.getAccountId(), + status: SyncHandlerStatus.ENABLED, + }; - const results = syncResponse.results; - assert.ok( - results[results.length - 1].dateTime > lastRecordTimestamp, - "Last result is within expected date/time range" + const response = await handler._sync(api, syncPosition); + const results = response.results; + + const timestamps = results.map(t => new Date(t.dateTime!).getTime()); + const isSortedAscending = timestamps.every( + (val, i, arr) => i === 0 || val >= arr[i - 1] ); + + assert.ok(isSortedAscending, "Meeting-transcripts are processed in chronological order"); }); - it('Handles API errors appropriately', async () => { - const { handler } = await CommonTests.buildTestObjects( + it(`Should ensure second batch items aren't in the first batch`, async () => { + const { api, handler, provider } = await CommonTests.buildTestObjects( providerId, - MeetingTranscriptHandler, + FirefliesMeetingTranscriptHandler, providerConfig, connection ); + handler.setConfig(handlerConfig); - const mockApi = { - executeQuery: async () => { - throw { response: { status: 401 } }; - } - }; + const firstBatchResponse = await handler._sync(api, { + _id: `${providerId}-${handlerName}`, + providerId, + handlerId: handler.getId(), + accountId: provider.getAccountId(), + status: SyncHandlerStatus.ENABLED, + }); + + const firstBatchItems = firstBatchResponse.results; + + const secondBatchResponse = await handler._sync(api, firstBatchResponse.position); + const secondBatchItems = secondBatchResponse.results; + + const firstBatchIds = firstBatchItems.map(item => item.sourceId); + const secondBatchIds = secondBatchItems.map(item => item.sourceId); + + const intersection = firstBatchIds.filter(id => secondBatchIds.includes(id)); + assert.equal(intersection.length, 0, "No overlapping items between batches"); + }); + + it(`Should handle AI-generated metadata correctly`, async () => { + const { api, handler, provider } = await CommonTests.buildTestObjects( + providerId, + FirefliesMeetingTranscriptHandler, + providerConfig, + connection + ); + handler.setConfig(handlerConfig); const syncPosition: SyncHandlerPosition = { _id: `${providerId}-${handlerName}`, @@ -136,17 +194,22 @@ describe(`${providerId} Tests`, function () { status: SyncHandlerStatus.ENABLED, }; - try { - await handler._sync(mockApi, syncPosition); - assert.fail('Should have thrown an error'); - } catch (err) { - assert.ok(err.name === 'InvalidTokenError', 'Throws correct error type'); - } + const response = await handler._sync(api, syncPosition); + const results = response.results; + + results.forEach(item => { + // Check AI-generated metadata(summary, topics, score etc), summary only + assert.ok(item.summary, "Item has AI summary"); + + // Check meeting metadata(start, end time, participants etc), duration only + assert.ok(typeof item.duration === 'number', "Item has valid duration"); + }); }); + }); this.afterAll(async function () { const { context } = await CommonUtils.getNetwork(); await context.close(); }); -}); \ No newline at end of file +});

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 literal 0 HcmV?d00001 From fe24693dcb27664b0adac6ae2202cea46f0f25d4 Mon Sep 17 00:00:00 2001 From: chime3 Date: Sun, 10 Nov 2024 20:20:16 -0700 Subject: [PATCH 02/20] feat: added fireFlies UI --- src/web/provider/fireflies/index.html | 53 +++++++++++++++++++++++++++ src/web/provider/fireflies/script.js | 44 ++++++++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 src/web/provider/fireflies/index.html create mode 100644 src/web/provider/fireflies/script.js diff --git a/src/web/provider/fireflies/index.html b/src/web/provider/fireflies/index.html new file mode 100644 index 00000000..53cbe25f --- /dev/null +++ b/src/web/provider/fireflies/index.html @@ -0,0 +1,53 @@ + + + + + + Fireflies.ai Login + + + + + + +