Files
VoiceVault/backend/__pycache__/db_queries.cpython-314.pyc

139 lines
38 KiB
Plaintext
Raw Normal View History

2026-02-14 22:57:24 -07:00
+
2026-02-15 12:56:39 -07:00
}<1C>i(L<00><00>ra<00>R[t<0tRt^RIt^RIt^RIt^RIHtHtHtH t H
2026-02-15 00:07:07 -07:00
t
2026-02-15 12:56:39 -07:00
^RI H t ^RI HtHt] !4]P !R4;'gRP#4t]P !R4;'gRP#4t]'d ]'g ]!R4h]!]]4t ]^kR R
ltR R ltR RltRRltR\RRlltR]RRlltRRltRRltRRltRRltRRltRR lt R!R"lt!R^R#R$llt"R_R%R&llt#R'R(lt$R)R*lt%R+R,lt&R-R.lt'R/R0lt(R1R2lt)R3R4lt*R5R6lt+R`R7R8llt,R9R:lt-R;R<lt.RaR=R>llt/RbR?R@llt0RARBlt1RCRDlt2RERFlt3RGRHlt4RcRIRJllt5RKRLlt6RMRNlt7RORPlt8RQRRlt9RSRTlt:RURVlt;RWRXlt$RYRZlt!R#)dz9
2026-02-14 22:57:24 -07:00
Supabase data layer aligned with TitanForge/schema.sql.
2026-02-15 12:56:39 -07:00
N)<05>Any<6E>Dict<63>List<73>Optional<61>Tuple)<01> load_dotenv)<02>Client<6E> create_client<6E> SUPABASE_URL<52><00>SUPABASE_SERVICE_ROLE_KEYzHMissing SUPABASE_URL or SUPABASE_SERVICE_ROLE_KEY environment variables.c<00>h<00>V^8<>dQhR\R\\\\3,,/#<00><03><00>response<73>return)rrr<00>str)<01>formats"<22>6/Users/mannpatel/Work/TitanForge/backend/db_queries.py<70> __annotate__rs'<00><00>1<>1<>C<EFBFBD>1<>D<EFBFBD><14>c<EFBFBD>3<EFBFBD>h<EFBFBD><1E>0<>1<>c<00>0<00>\VRR4;'g.#)<02>dataN)<01>getattr)rs&r<00>_rowsrs<00><00> <12>8<EFBFBD>V<EFBFBD>T<EFBFBD> *<2A> 0<> 0<>b<EFBFBD>0rc<00>h<00>V^8<>dQhR\R\\\\3,,/#r)rrrr)rs"rrrs'<00><00>%<25>%<25>S<EFBFBD>%<25>X<EFBFBD>d<EFBFBD>3<EFBFBD><03>8<EFBFBD>n<EFBFBD>5<>%rc<00>><00>\V4pV'd
V^,#R#)<02>N)r)rrs& r<00>_firstrs<00><00> <10><18>?<3F>D<EFBFBD><1A>4<EFBFBD><01>7<EFBFBD>$<24><04>$rc<00>^<00>V^8<>dQhR\R\R\\\3,/#)r<00>page<67>limitr)<02>int<6E>tuple)rs"rrr!s)<00><00><16><16>C<EFBFBD><16><03><16><05>c<EFBFBD>3<EFBFBD>h<EFBFBD><0F>rc<00><><00>\^V4p\\^V4^d4pV^,
2026-02-14 22:57:24 -07:00
V,pW!,^,
2026-02-15 12:56:39 -07:00
pW#3#)<01>)<02>max<61>min)r r!<00>start<72>ends&& r<00> _paginater*!sA<00><00> <0E>q<EFBFBD>$<24><<3C>D<EFBFBD> <0F><03>A<EFBFBD>u<EFBFBD> <0A>s<EFBFBD> #<23>E<EFBFBD> <11>A<EFBFBD>X<EFBFBD><15> <1E>E<EFBFBD>
2026-02-14 22:57:24 -07:00
<0F>-<2D>!<21>
2026-02-15 12:56:39 -07:00
<1B>C<EFBFBD> <10>:<3A>rc<00>R<00>V^8<>dQhR\R\\\3,/#<00>r<00> stored_pathr)rr)rs"rrr)s"<00><00><1E><1E>C<EFBFBD><1E>E<EFBFBD>#<23>s<EFBFBD>(<28>O<EFBFBD>rc<04><><00>T;'gRPR^4p\V4^8wgV^,'dV^,'g\RV 24hV^,V^,3#)zs
2026-02-15 00:07:07 -07:00
Convert stored path like 'archives/user/uuid/original/file.mp4'
into ('archives', 'user/uuid/original/file.mp4').
r <00>/zInvalid storage path format: )<03>split<69>len<65>
2026-02-15 12:56:39 -07:00
ValueError)r-<00>partss& r<00>_parse_bucket_pathr4)s_<00><00>
2026-02-15 00:07:07 -07:00
<19> <1E> <1E>B<EFBFBD> %<25> %<25>c<EFBFBD>1<EFBFBD> -<2D>E<EFBFBD>
2026-02-15 12:56:39 -07:00
<EFBFBD>5<EFBFBD>z<EFBFBD>Q<EFBFBD><EFBFBD>e<EFBFBD>A<EFBFBD>h<EFBFBD>h<EFBFBD>e<EFBFBD>A<EFBFBD>h<EFBFBD>h<EFBFBD><18>8<><1B> <0A>F<>G<>G<> <10><11>8<EFBFBD>U<EFBFBD>1<EFBFBD>X<EFBFBD> <1D>rc<00><><00>V^8<>dQhR\R\R\R\R\R\\\3,/#)r<00>bucket<65> object_path<74>content<6E> content_type<70>upsertr)r<00>bytes<65>boolrr)rs"rrr4sL<00><00><06><06> <0F><06><14><06><13><06><16> <06>
2026-02-15 00:07:07 -07:00
<11> <06> 
<EFBFBD>#<23>s<EFBFBD>(<28>^<5E> rc
<04><><00>\PPV4PVVRVR\ V4P 4/4#)zC
Upload bytes to Supabase Storage and return upload response data.
2026-02-15 12:56:39 -07:00
z content-typer:)<06>supabase<73>storage<67>from_<6D>uploadr<00>lower)r6r7r8r9r:s&&&&&r<00>upload_storage_objectrC4sF<00><00> <11><18><18><1E><1E>v<EFBFBD>&<26> <0F><16> <17> <13> <1B>\<5C>8<EFBFBD>S<EFBFBD><16>[<5B>5F<35>5F<35>5H<35> I<>
2026-02-15 00:07:07 -07:00
<EFBFBD>rc<00>^<00>V^8<>dQhR\R\R\\\3,/#)r<00>post_id<69>
2026-02-15 12:56:39 -07:00
expires_inr<00>r"rrr)rs"rrrHs)<00><00>)<06>)<06>C<EFBFBD>)<06>S<EFBFBD>)<06>D<EFBFBD><13>c<EFBFBD><18>N<EFBFBD>)rc <04><00>\PR4PR4PRV4PRR4P ^4P 4p\ V4pV'g \R4h\VR,4wrE\PPV4PWQ4p\V\4'd~VPR4;'gdVPR 4;'gKVPR
2026-02-15 00:07:07 -07:00
/4PR 4;'g"VPR
/4PR4pMR pV'g \R 4hRVR VRVRVPR4RVRV/#)z@
Return a signed URL for the original audio/video archive file.
2026-02-15 02:18:07 -07:00
<EFBFBD> archive_fileszpath, content_typerE<00>role<6C>original_audioz,Original audio file not found for this post.<2E>path<74> signedURL<52> signedUrlrNz/Failed to create signed URL for original audio.r6r7r9<00>
signed_urlrF)r><00>table<6C>select<63>eqr!<00>executerr2r4r?r@<00>create_signed_url<72>
2026-02-15 12:56:39 -07:00
isinstance<EFBFBD>dict<63>get<65> RuntimeError)rErFr<00>rowr6r7<00>signedrOs&& r<00>get_original_audio_urlr[Hs]<00><00>
2026-02-15 00:07:07 -07:00
<11><0E><0E><EFBFBD>'<27> <0F><16>$<24> %<25> <0B><12>I<EFBFBD>w<EFBFBD> <1F> <0B><12>F<EFBFBD>$<24> %<25> <0E><15>q<EFBFBD><18> <10><17><19>  <0A> <11><18>
<1A>C<EFBFBD> <0E><18>G<>H<>H<>,<2C>S<EFBFBD><16>[<5B>9<><17>F<EFBFBD> <15> <1D> <1D> #<23> #<23>F<EFBFBD> +<2B> =<3D> =<3D>k<EFBFBD> V<>F<EFBFBD><12>&<26>$<24><1F><1F> <12>J<EFBFBD>J<EFBFBD>{<7B> #<23> 7<> 7<><15>z<EFBFBD>z<EFBFBD>+<2B>&<26> 7<> 7<><15>z<EFBFBD>z<EFBFBD>&<26>"<22>%<25>)<29>)<29>+<2B>6<> 7<> 7<><16>z<EFBFBD>z<EFBFBD>&<26>"<22>%<25>)<29>)<29>+<2B>6<> <13><1A>
2026-02-15 12:56:39 -07:00
<EFBFBD> <15><1A>L<>M<>M<> <12>7<EFBFBD><10>&<26><15>{<7B><16><03><07><07><0E>/<2F><14>j<EFBFBD><14>j<EFBFBD>  <06>rc <00>t<00>V^8<>dQhR\R\R\\\\3,,/#)rrErJr)r"rrrr)rs"rrrts.<00><00> <1C> <1C>c<EFBFBD> <1C><13> <1C><18>$<24>s<EFBFBD>C<EFBFBD>x<EFBFBD>.<2E>9Q<39> rc<00><><00>\PR4PR4PRV4PRV4P ^4P 4p\ V4#)rI<00>*rErJ)r>rPrQrRr!rSr)rErJrs&& r<00>get_archive_file_by_roler_tsQ<00><00><10><0E><0E><EFBFBD>'<27> <0F><16><03><1B> <0B><12>I<EFBFBD>w<EFBFBD> <1F> <0B><12>F<EFBFBD>D<EFBFBD> <19> <0E><15>q<EFBFBD><18> <10><17><19>  <0A> <12>(<28> <1B>rc<00>0<00>V^8<>dQhR\R\/#r,)rr;)rs"rrr<00>s<00><00> E<01> E<01><03> E<01><05> Erc<04><><00>\V4wr\PPV4P V4p\ V\ \34'd \ V4#\R4h)zW
2026-02-15 02:18:07 -07:00
Download object bytes from a stored path like
'archives/user/uuid/original/file.mp4'.
2026-02-15 12:56:39 -07:00
z*Failed to download storage object content.) r4r>r?r@<00>downloadrUr;<00> bytearrayrX)r-r6r7r8s& r<00>&download_storage_object_by_stored_pathrd<00>sZ<00><00>
2026-02-15 02:18:07 -07:00
-<2D>[<5B>9<><17>F<EFBFBD><16><1E><1E>$<24>$<24>V<EFBFBD>,<2C>5<>5<>k<EFBFBD>B<>G<EFBFBD><11>'<27>E<EFBFBD>9<EFBFBD>-<2D>.<2E>.<2E><14>W<EFBFBD>~<7E><1D>
<16>C<>
2026-02-15 12:56:39 -07:00
D<EFBFBD>Drc<00>t<00>V^8<>dQhR\\\3,R\\\3,/#<00>r<00>payloadr<00>rrr)rs"rrr<00>s*<00><00><13><13><14>c<EFBFBD>3<EFBFBD>h<EFBFBD><1E><13>D<EFBFBD><13>c<EFBFBD><18>N<EFBFBD>rc <00><><00>RR.pVF)pVPV4'dK\RV R24h RVR,RVR,RVPR4RVPR4RVPR4/p\PR4P V4P 4p\ V4pV'g \R4hV#) <09>email<69> password_hash<73>'<27>' is required.<2E> display_name<6D>
avatar_url<EFBFBD>bio<69>userszFailed to create user.<2E>rWr2r>rP<00>insertrSrrX<00>rg<00>required<65>fieldrr<00>createds& r<00> create_userrx<00>s<><00><00><17><1F>)<29>H<EFBFBD><19><05><16>{<7B>{<7B>5<EFBFBD>!<21>!<21><1C>q<EFBFBD><15><07>~<7E>6<>7<> 7<><1A>
<10><17><17>!<21><17><17><1F>1<><16><07> <0B> <0B>N<EFBFBD>3<><14>g<EFBFBD>k<EFBFBD>k<EFBFBD>,<2C>/<2F> <0A>w<EFBFBD>{<7B>{<7B>5<EFBFBD>!<21>  <06>D<EFBFBD><18>~<7E>~<7E>g<EFBFBD>&<26>-<2D>-<2D>d<EFBFBD>3<>;<3B>;<3B>=<3D>H<EFBFBD><14>X<EFBFBD><1E>G<EFBFBD> <12><1A>3<>4<>4<> <12>Nrc<00>h<00>V^8<>dQhR\R\\\\3,,/#)r<00>user_idr<00>r"rrrr)rs"rrr<00>s+<00><00>a<01>a<01>C<EFBFBD>a<01>H<EFBFBD>T<EFBFBD>#<23>s<EFBFBD>(<28>^<5E>$<<3C>arc<00><><00>\\PR4PR4P RV4P ^4P 44#)rqr^rz<00>rr>rPrQrRr!rS)rzs&r<00>get_user_by_idr~<00>sC<00><00> <11>(<28>.<2E>.<2E><17>)<29>0<>0<><13>5<>8<>8<><19>G<EFBFBD>L<>R<>R<>ST<53>U<>]<5D>]<5D>_<> `<60>`rc<00>h<00>V^8<>dQhR\R\\\\3,,/#)rrjr)rrrr)rs"rrr<00>s+<00><00>]<01>]<01>S<EFBFBD>]<01>X<EFBFBD>d<EFBFBD>3<EFBFBD><03>8<EFBFBD>n<EFBFBD>%=<3D>]rc<00><><00>\\PR4PR4P RV4P ^4P 44#)rqr^rjr})rjs&r<00>get_user_by_emailr<6C><00>sB<00><00> <11>(<28>.<2E>.<2E><17>)<29>0<>0<><13>5<>8<>8<><17>%<25>H<>N<>N<>q<EFBFBD>Q<>Y<>Y<>[<5B> \<5C>\rc<00>t<00>V^8<>dQhR\\\3,R\\\3,/#rfrh)rs"rrr<00>s*<00><00><13><13>t<EFBFBD>C<EFBFBD><13>H<EFBFBD>~<7E><13>$<24>s<EFBFBD>C<EFBFBD>x<EFBFBD>.<2E>rc<00>Z<00>.ROpVF(pVPV4R9gK\RV R24h RVR,RVR,RVPR4RVPRR4RVPRR 4R
2026-02-14 22:57:24 -07:00
VPR
2026-02-15 02:18:07 -07:00
4R VPR R 4RVR,R VPR 4RVPR4RVPR4/ p\PR4P V4P 4p\ V4pV'g \R4hV#)rz<00>title<6C>storage_prefixrlrm<00> description<6F>
2026-02-15 12:56:39 -07:00
visibility<EFBFBD>private<74>status<75>uploaded<65> recorded_date<74>language<67>en<65>manifest_sha256<35> bundle_sha256<35> published_at<61> audio_postszFailed to create audio post.)rzr<>r<>)Nr rrrts& r<00>create_audio_postr<74><00>s<00><00>5<>H<EFBFBD><19><05> <12>;<3B>;<3B>u<EFBFBD> <1D><1A> +<2B><1C>q<EFBFBD><15><07>~<7E>6<>7<> 7<><1A>
2026-02-14 22:57:24 -07:00
<12>7<EFBFBD>9<EFBFBD>%<25><0F><17><17>!<21><15>w<EFBFBD>{<7B>{<7B>=<3D>1<><14>g<EFBFBD>k<EFBFBD>k<EFBFBD>,<2C> <09>:<3A><10>'<27>+<2B>+<2B>h<EFBFBD>
<EFBFBD>3<><17><17><1B><1B>_<EFBFBD>5<><12>G<EFBFBD>K<EFBFBD>K<EFBFBD>
2026-02-15 12:56:39 -07:00
<EFBFBD>D<EFBFBD>1<><18>'<27>"2<>3<><19>7<EFBFBD>;<3B>;<3B>'8<>9<><17><17><1B><1B>_<EFBFBD>5<><16><07> <0B> <0B>N<EFBFBD>3<> <06>D<EFBFBD><18>~<7E>~<7E>m<EFBFBD>,<2C>3<>3<>D<EFBFBD>9<>A<>A<>C<>H<EFBFBD><14>X<EFBFBD><1E>G<EFBFBD> <12><1A>9<>:<3A>:<3A> <12>Nrc<00>h<00>V^8<>dQhR\R\\\\3,,/#<00>rrErr{)rs"rrr<00>s'<00><00>#<23>#<23>#<23>#<23>(<28>4<EFBFBD><03>S<EFBFBD><08>><3E>*B<>#rc<00><><00>\PR4PR4PRV4P ^4p\ VP 44#)r<><00>2*, users(user_id, email, display_name, avatar_url)rE)r>rPrQrRr!rrS)rE<00>querys& r<00>get_audio_post_by_idr<64><00>sF<00><00><10><0E><0E>}<7D>%<25> <0F><16>D<> E<> <0B><12>I<EFBFBD>w<EFBFBD> <1F> <0E><15>q<EFBFBD><18> 
<EFBFBD> <12>%<25>-<2D>-<2D>/<2F> "<22>"rc <00><><00>V^8<>dQhR\R\R\R\\\\3,,/#)rrzr r!r<00>r"rrrr)rs"rrr<00>s><00><00>E<01>E<01>s<EFBFBD>E<01>#<23>E<01>#<23>E<01>t<EFBFBD>D<EFBFBD>QT<51>VY<56>QY<51>N<EFBFBD>G[<5B>Erc<00><00>\WVR7#))r r!rz)<01>list_audio_posts)rzr r!s&&&r<00>list_user_historyr<79><00>s<00><00> <1B><14>G<EFBFBD> D<>Drc <00><><00>V^8<>dQhR\R\R\\,R\\,R\\\\
3,,/#)rr r!r<>rzr)r"rrrrr)rs"rrr<00>se<00><00>
2026-02-14 22:57:24 -07:00
<1B>
<1B>3<EFBFBD>
<1B>3<EFBFBD>
<1B><18>#<23><1D>
<1B>`h<>il<69>`m<>
<1B>y}<7D>C<02>DG<02>IL<02>DL<02>M<02>zN<02>
2026-02-15 02:18:07 -07:00
rc<00>B<00>\W4wrE\PR4PR4pV'dVP RV4pV'dVP RV4pVP RRR7P WE4P4p\V4#)r<>r<>r<>rz<00>
2026-02-15 12:56:39 -07:00
created_atT<EFBFBD><01>desc<73> r*r>rPrQrR<00>order<65>rangerSr)r r!r<>rzr(r)r<>rs&&&& rr<>r<><00>s~<00><00><1A>4<EFBFBD>'<27>J<EFBFBD>E<EFBFBD> <14>N<EFBFBD>N<EFBFBD>=<3D> )<29> 0<> 0<>1e<31> f<>E<EFBFBD><11><15><08><08><1C>z<EFBFBD>2<><05><0E><15><08><08><19>G<EFBFBD>,<2C><05><14>{<7B>{<7B><<3C>d<EFBFBD>{<7B>3<>9<>9<>%<25>E<>M<>M<>O<>H<EFBFBD> <10><18>?<3F>rc <00><><00>V^8<>dQhR\R\\\3,R\\\\3,,/#)rrE<00>updatesr)r"rrrr)rs"rrr<00>s7<00><00><1C><1C>s<EFBFBD><1C>T<EFBFBD>#<23>s<EFBFBD>(<28>^<5E><1C><08><14>c<EFBFBD>SV<53>h<EFBFBD><1E>@X<>rc<00>R<00>V'g \V4#0RmpVP4UUu/uFwr4W29gK W4bK pppV'g \V4#\PR4P V4P RV4P 4p\V4#uuppi)r<>r<>rE>
r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>)r<><00>itemsr>rP<00>updaterRrSr)rEr<><00>allowed<65>k<>v<>cleanrs&& r<00>update_audio_postr<74><00>s<><00><00> <12>#<23>G<EFBFBD>,<2C>,<2C> <06>G<EFBFBD>&<26>m<EFBFBD>m<EFBFBD>o<EFBFBD> ><3E>o<EFBFBD>d<EFBFBD>a<EFBFBD><11><1C>T<EFBFBD>Q<EFBFBD>T<EFBFBD>o<EFBFBD>E<EFBFBD> ><3E> <10>#<23>G<EFBFBD>,<2C>,<2C> <11><0E><0E>}<7D>%<25> <0F><16><05><1D> <0B><12>I<EFBFBD>w<EFBFBD> <1F> <10><17><19>  <0A> <12>(<28> <1B><1B><> ?s
2026-02-14 22:57:24 -07:00
<00>
2026-02-15 12:56:39 -07:00
B#<06>B#c<00><><00>V^8<>dQhR\R\\\3,R\\\3,/#<00>rrErgrrG)rs"rrrs1<00><00><13><13>c<EFBFBD><13>D<EFBFBD><13>c<EFBFBD><18>N<EFBFBD><13>t<EFBFBD>C<EFBFBD><13>H<EFBFBD>~<7E>rc <00><><00>.R
2026-02-15 02:18:07 -07:00
OpVF)pVPV4'dK\RV R24h RVRVR,RVR,RVPR4RVPR4RVR,/p\PR4P V4P 4p\ V4pV'g \R 4hV#) rJrL<00>sha256rlrmrEr9<00>
2026-02-15 12:56:39 -07:00
size_bytesrIzFailed to add archive file.)rJrLr<>rr)rErgrurvrrrws&& r<00>add_archive_filer<65>s<><00><00>)<29>H<EFBFBD><19><05><16>{<7B>{<7B>5<EFBFBD>!<21>!<21><1C>q<EFBFBD><15><07>~<7E>6<>7<> 7<><1A>
<12>7<EFBFBD><0E><07><06><0F><0E><07><06><0F><16><07> <0B> <0B>N<EFBFBD>3<><14>g<EFBFBD>k<EFBFBD>k<EFBFBD>,<2C>/<2F><10>'<27>(<28>#<23>  <06>D<EFBFBD><18>~<7E>~<7E>o<EFBFBD>.<2E>5<>5<>d<EFBFBD>;<3B>C<>C<>E<>H<EFBFBD><14>X<EFBFBD><1E>G<EFBFBD> <12><1A>8<>9<>9<> <12>Nrc<00>h<00>V^8<>dQhR\R\\\\3,,/#r<>r<>)rs"rrrs'<00><00><1B><1B><03><1B><04>T<EFBFBD>#<23>s<EFBFBD>(<28>^<5E>(<<3C>rc<00><><00>\PR4PR4PRV4P RRR7P 4p\ V4#)rIr^rEr<>Fr<46>)r>rPrQrRr<>rSr)rErs& r<00>list_archive_filesr<73>sI<00><00><10><0E><0E><EFBFBD>'<27> <0F><16><03><1B> <0B><12>I<EFBFBD>w<EFBFBD> <1F> <0E><15>|<7C>%<25><15> (<28> <10><17><19>  <0A> <11><18>?<3F>rc<00>^<00>V^8<>dQhR\R\R\\\3,/#)rrE<00>metadatar)r"rrr)rs"rrr%s)<00><00> <0F> <0F>S<EFBFBD> <0F>C<EFBFBD> <0F>D<EFBFBD><13>c<EFBFBD><18>N<EFBFBD> rc<00><00>RVRV/p\\PR4PR4P RV4P ^4P 44pV'dF\PR4PRV/4P RV4P 4pM2\PR4PV4P 4p\V4pV'g \R4hV#)rEr<><00>archive_metadataz"Failed to upsert archive metadata.)
rr>rPrQrRr!rSr<>rsrX)rEr<>r<00>existingrrYs&& r<00>upsert_archive_metadatar<61>%s<><00><00> <15>w<EFBFBD>
2026-02-14 22:57:24 -07:00
<EFBFBD>H<EFBFBD> 5<>D<EFBFBD><15>h<EFBFBD>n<EFBFBD>n<EFBFBD>%7<>8<>?<3F>?<3F> <09>J<>M<>M<>i<EFBFBD>Y`<60>a<>g<>g<>hi<68>j<>r<>r<>t<>u<>H<EFBFBD><0F><1B>><3E>><3E>"4<>5<><<3C><<3C>j<EFBFBD>(<28>=S<>T<>W<>W<>Xa<58>cj<63>k<>s<>s<>u<><08><1B>><3E>><3E>"4<>5<><<3C><<3C>T<EFBFBD>B<>J<>J<>L<><08>
<10><18>
2026-02-15 12:56:39 -07:00
<1A>C<EFBFBD> <0E><1A>?<3F>@<40>@<40> <0E>Jrc<00>h<00>V^8<>dQhR\R\\\\3,,/#r<>r{)rs"rrr4s+<00><00>l<01>l<01>#<23>l<01>(<28>4<EFBFBD><03>S<EFBFBD><08>><3E>*B<>lrc<00><><00>\\PR4PR4P RV4P ^4P 44#)r<>r^rEr}<00>rEs&r<00>get_archive_metadatar<61>4sD<00><00> <11>(<28>.<2E>.<2E>!3<>4<>;<3B>;<3B>C<EFBFBD>@<40>C<>C<>I<EFBFBD>w<EFBFBD>W<>]<5D>]<5D>^_<>`<60>h<>h<>j<> k<>krc<00><><00>V^8<>dQhR\R\\\3,R\\\3,/#r<>rG)rs"rrr8s1<00><00><0F><0F>3<EFBFBD><0F><14>c<EFBFBD>3<EFBFBD>h<EFBFBD><1E><0F>D<EFBFBD><13>c<EFBFBD><18>N<EFBFBD>rc<00><00>RVRVPRR4RVPR4RVPR4RVPR4RVPR4/p\\PR4P R4P RV4P ^4P44pV'do\PR4PVP4UUu/uFwrEVR8wgKWEbK upp4P RV4P4pM2\PR4PV4P4p\V4pV'g \R4hV#uuppi) rE<00>has_speaker_consentF<74>license<73> consent_notes<65> allowed_use<73> restrictions<6E>archive_rightsz Failed to upsert archive rights.) rWrr>rPrQrRr!rSr<>r<>rsrX)rErgrr<>r<>r<>rrYs&& r<00>upsert_archive_rightsr<73>8s7<00><00><11>7<EFBFBD><1D>w<EFBFBD>{<7B>{<7B>+@<40>%<25>H<><11>7<EFBFBD>;<3B>;<3B>y<EFBFBD>)<29><17><17><1B><1B>_<EFBFBD>5<><15>w<EFBFBD>{<7B>{<7B>=<3D>1<><16><07> <0B> <0B>N<EFBFBD>3<>  <06>D<EFBFBD><16>h<EFBFBD>n<EFBFBD>n<EFBFBD>%5<>6<>=<3D>=<3D>i<EFBFBD>H<>K<>K<>I<EFBFBD>W^<5E>_<>e<>e<>fg<66>h<>p<>p<>r<>s<>H<EFBFBD><0F> <14>N<EFBFBD>N<EFBFBD>+<2B> ,<2C> <13>V<EFBFBD>d<EFBFBD>j<EFBFBD>j<EFBFBD>l<EFBFBD>E<>l<EFBFBD>d<EFBFBD>a<EFBFBD>a<EFBFBD>9<EFBFBD>n<EFBFBD>T<EFBFBD>Q<EFBFBD>T<EFBFBD>l<EFBFBD>E<> F<> <0F>R<EFBFBD> <09>7<EFBFBD> #<23> <14>W<EFBFBD>Y<EFBFBD> <11><1C>><3E>><3E>"2<>3<>:<3A>:<3A>4<EFBFBD>@<40>H<>H<>J<><08>
2026-02-14 22:57:24 -07:00
<10><18>
<1A>C<EFBFBD> <0E><1A>=<3D>><3E>><3E> <0E>J<EFBFBD><4A>Fs <00>. E=
<EFBFBD>>E=
2026-02-15 12:56:39 -07:00
c<00>h<00>V^8<>dQhR\R\\\\3,,/#r<>r{)rs"rrrSs+<00><00>j<01>j<01><03>j<01><08><14>c<EFBFBD>3<EFBFBD>h<EFBFBD><1E>(@<40>jrc<00><><00>\\PR4PR4P RV4P ^4P 44#)r<>r^rEr}r<>s&r<00>get_archive_rightsr<73>SsD<00><00> <11>(<28>.<2E>.<2E>!1<>2<>9<>9<>#<23>><3E>A<>A<>)<29>W<EFBFBD>U<>[<5B>[<5B>\]<5D>^<5E>f<>f<>h<> i<>irc <00><><00>V^8<>dQhR\R\\\\3,,R\\\\3,,/#)rrE<00>chunksrr<>)rs"rrrYs<<00><00><1B><1B>C<EFBFBD><1B><14>d<EFBFBD>3<EFBFBD><03>8<EFBFBD>n<EFBFBD>)=<3D><1B>$<24>t<EFBFBD>C<EFBFBD>QT<51>H<EFBFBD>~<7E>BV<42>rc<00><><00>V'g.#.pVF<>pVPR4p\V\4'd'RRPRV44,R,pVP RVRVPR4RVPR4RVPR4R VPR 4RV/4K<> \
2026-02-15 02:18:07 -07:00
P R
2026-02-15 12:56:39 -07:00
4PV4P4p\V4#) <0B> embedding<6E>[<5B>,c3<00>J"<00>TFp\\V44x<00>K R#5i<01>N<>r<00>float<61><02>.0r<EFBFBD>s& r<00> <genexpr><3E>!add_rag_chunks.<locals>.<genexpr>as<00><00><00>&H<>i<EFBFBD><11>s<EFBFBD>5<EFBFBD><11>8<EFBFBD>}<7D>}<7D>i<EFBFBD><69><00>!#<01>]rE<00> start_sec<65>end_sec<65>text<78>
2026-02-15 02:18:07 -07:00
confidence<EFBFBD>
rag_chunks)
2026-02-15 12:56:39 -07:00
rWrU<00>list<73>join<69>appendr>rPrsrSr)rEr<><00>rows<77>cr<63>rs&& r<00>add_rag_chunksr<73>Ys<><00><00> <11><11> <09> <0A>D<EFBFBD> <13><01><15>E<EFBFBD>E<EFBFBD>+<2B>&<26> <09> <15>i<EFBFBD><14> &<26> &<26><1B>c<EFBFBD>h<EFBFBD>h<EFBFBD>&H<>i<EFBFBD>&H<>H<>H<>3<EFBFBD>N<>I<EFBFBD> <0C> <0B> <0B><19>7<EFBFBD><1B>Q<EFBFBD>U<EFBFBD>U<EFBFBD>;<3B>/<2F><19>1<EFBFBD>5<EFBFBD>5<EFBFBD><19>+<2B><16><01><05><05>f<EFBFBD> <0A><1C>a<EFBFBD>e<EFBFBD>e<EFBFBD>L<EFBFBD>1<><1B>Y<EFBFBD>  <0E>
<EFBFBD> <14><18>~<7E>~<7E>l<EFBFBD>+<2B>2<>2<>4<EFBFBD>8<>@<40>@<40>B<>H<EFBFBD> <10><18>?<3F>rc <00><><00>V^8<>dQhR\R\R\R\\\\3,,/#)rrEr r!rr<>)rs"rrrqs8<00><00>
2026-02-14 22:57:24 -07:00
<1B>
<1B>S<EFBFBD>
<1B><03>
<1B><03>
<1B>d<EFBFBD>4<EFBFBD>PS<50>UX<55>PX<50>><3E>FZ<46>
2026-02-15 12:56:39 -07:00
rc<00><><00>\W4wr4\PR4PR4P RV4P RRR7P W44P4p\V4#)r<>r^rEr<>Fr<46>r<>)rEr r!r(r)rs&&& r<00>list_rag_chunksr<73>qs_<00><00><1A>4<EFBFBD>'<27>J<EFBFBD>E<EFBFBD><10><0E><0E>|<7C>$<24> <0F><16><03><1B> <0B><12>I<EFBFBD>w<EFBFBD> <1F> <0E><15>{<7B><15><15> '<27> <0E><15>u<EFBFBD> <1A> <10><17><19>  <0A> <11><18>?<3F>rc<00>t<00>V^8<>dQhR\\\3,R\\\3,/#)rrYrrh)rs"rrr~s*<00><00><06><06>4<EFBFBD><03>S<EFBFBD><08>><3E><06>d<EFBFBD>3<EFBFBD><03>8<EFBFBD>n<EFBFBD>rc
<04>2<00>VPR4p\V\4'dV'd
V^,#/#\V\4'dV#RVPR4RVPR4RVPR4RVPR4/#)z<>
Normalize joined post payload from Supabase. It can come back as:
- row["audio_posts"] = {...}
- row["audio_posts"] = [{...}]
- flat fields on row from RPC
r<EFBFBD>rzr<>r<>r<>)rWrUr<>rV)rY<00>posts& r<00>_extract_post_rowr<77>~s<><00><00> <0F>7<EFBFBD>7<EFBFBD>=<3D> !<21>D<EFBFBD><11>$<24><04><1D><1D><1E>t<EFBFBD>A<EFBFBD>w<EFBFBD>&<26>B<EFBFBD>&<26><11>$<24><04><1D><1D><13> <0B><11>3<EFBFBD>7<EFBFBD>7<EFBFBD>9<EFBFBD>%<25><14>c<EFBFBD>g<EFBFBD>g<EFBFBD>l<EFBFBD>+<2B><0F><13><17><17><17>!<21><14>c<EFBFBD>g<EFBFBD>g<EFBFBD>l<EFBFBD>+<2B>  <06>rc<00>^<00>V^8<>dQhR\\\3,R\R\/#)rrY<00>requester_user_idr)rrrr"r<)rs"rrr<00>s.<00><00>C<01>C<01>$<24>s<EFBFBD>C<EFBFBD>x<EFBFBD>.<2E>C<01>S<EFBFBD>C<01>T<EFBFBD>Crc<00>~<00>\V4pVPR4pVPR4pVR8H;'gWA8H#)r<>rz<00>public)r<>rW)rYr<>r<>r<><00>owner_ids&& r<00>_can_access_postr<74><00>s><00><00> <1C>S<EFBFBD> !<21>D<EFBFBD><15><18><18>,<2C>'<27>J<EFBFBD><13>x<EFBFBD>x<EFBFBD> <09>"<22>H<EFBFBD> <15><18> !<21> B<> B<>X<EFBFBD>%B<>Brc <00><><00>V^8<>dQhR\R\R\R\R\\\\3,,/#)rrz<00>
query_textr r!r)r"rrrr)rs"rrr<00>sB<00><00><1F><1F>s<EFBFBD><1F><03><1F>3<EFBFBD><1F>3<EFBFBD><1F>X\<5C>]a<>be<62>gj<67>bj<62>]k<>Xl<58>rc<00><><00>\W#4wrE\PR4PR4P RRV R24P RRR7P ^\RVR,44P4p.p\V4F5p\W<>4'gK\V4VR &VPV4K7 WtV^,#)
r<EFBFBD>z<>chunk_id, post_id, start_sec, end_sec, text, confidence, created_at, audio_posts!inner(post_id, user_id, title, visibility, created_at)r<><00>%r<>Tr<54>i<>i<>r<>) r*r>rPrQ<00>iliker<65>r<>r'rSrr<>r<>r<>) rzr<>r r!r(r)rr<>rYs &&&& r<00>search_rag_chunksr<73><00>s<><00><00><1A>4<EFBFBD>'<27>J<EFBFBD>E<EFBFBD><10><0E><0E>|<7C>$<24> <0F><16> Q<01>
2026-02-14 22:57:24 -07:00
<EFBFBD>
2026-02-15 12:56:39 -07:00
<0F><15>v<EFBFBD><11>:<3A>,<2C>a<EFBFBD>(<28> )<29> <0E><15>|<7C>$<24><15> '<27> <0E><15>q<EFBFBD>#<23>d<EFBFBD>C<EFBFBD>#<23>I<EFBFBD>&<26> '<27> <10><17><19> <0A> <0E>D<EFBFBD><14>X<EFBFBD><EFBFBD><03> <1B>C<EFBFBD> )<29> )<29>!2<>3<EFBFBD>!7<>C<EFBFBD> <0A> <1E> <10>K<EFBFBD>K<EFBFBD><03> <1C><1F> <10>c<EFBFBD>A<EFBFBD>g<EFBFBD> <1E>rc <00><><00>V^8<>dQhR\R\\,R\R\\\\
3,,/#)rrz<00>query_embeddingr!r)r"rr<>rrr)rs"rrr<00>s@<00><00>7<1F>7<1F>c<EFBFBD>7<1F>D<EFBFBD><15>K<EFBFBD>7<1F>PS<50>7<1F>]a<>bf<62>gj<67>lo<6C>go<67>bp<62>]q<>7rc <04><><00>RRPRV44,R,p\\^V4^d4p\P RRVRVRV/4P 4p\ V4Uu.uFp\W`4'gKVNK ppV'dVR V#\PR
4PR 4PR 4P 4p\ V4pV'g.#VUu.uFp\W`4'gKVNK ppV'g.#\V4p .p
VFxp \V PR 44p V 'gK'\W<>4p V fK8\!V 4p\#V 4VR&W<>R&VP%R R 4V
P'V4Kz V
P)RRR7V
R V#uupi \dEL;i;iuupi)zC
2026-02-15 02:18:07 -07:00
Vector search via SQL RPC function `match_rag_chunks` (pgvector).
2026-02-15 12:56:39 -07:00
r<EFBFBD>r<>c3<00>J"<00>TFp\\V44x<00>K R#5ir<>r<>r<>s& rr<><00>+search_rag_chunks_vector.<locals>.<genexpr><3E>s<00><00><00> H<><0F>1<EFBFBD><13>U<EFBFBD>1<EFBFBD>X<EFBFBD><1D><1D><0F>r<EFBFBD>r<><00>match_rag_chunks<6B> p_user_id<69>p_query_embedding<6E> p_match_countNr<4E>z<>chunk_id, post_id, start_sec, end_sec, text, confidence, created_at, embedding, audio_posts!inner(post_id, user_id, title, visibility, created_at)i<> r<>r<><00>
similarityc<00>&<00>VPRR4#)r<00>)rW)<01>rs&r<00><lambda><3E>*search_rag_chunks_vector.<locals>.<lambda><3E>s<00><00>a<EFBFBD>e<EFBFBD>e<EFBFBD>L<EFBFBD>#<23>6rT)<02>key<65>reverse)r<>r'r&r><00>rpcrSrr<><00> ExceptionrPrQr!<00>_normalize_vec<65>_parse_embeddingrW<00>_cosine_similarityrVr<><00>popr<70><00>sort)rzr<>r!<00> vector_text<78>
safe_limitrr r<><00>
candidates<EFBFBD>q<>rankedrY<00>emb<6D>score<72>outs&&& r<00>search_rag_chunks_vectorr<00>s<><00><00><16><03><08><08> H<><0F> H<>H<>H<>3<EFBFBD>N<>K<EFBFBD><14>S<EFBFBD><11>E<EFBFBD>]<5D>C<EFBFBD>(<28>J<EFBFBD>  <0A><1B><<3C><<3C> <1E><1B>W<EFBFBD>#<23>[<5B><1F><1A> <0E>
<EFBFBD> <12>'<27>)<29> <11>!<21><18>?<3F>K<>?<3F>a<EFBFBD>.><3E>q<EFBFBD>.J<><01><01>?<3F><04>K<> <0F><17> <0B><1A>$<24> $<24> <10> <11><0E><0E>|<7C>$<24> <0F><16> Q<01>
<EFBFBD>
<0F><15>t<EFBFBD><1B> <10><17><19> <0A><17>x<EFBFBD><1F>J<EFBFBD> <15><11> <09>'<27>H<>Z<EFBFBD><01>+;<3B>A<EFBFBD>+G<>!<21>!<21>Z<EFBFBD>J<EFBFBD>H<> <15><11> <09><16><EFBFBD>'<27>A<EFBFBD> <0F>F<EFBFBD><19><03><1E>s<EFBFBD>w<EFBFBD>w<EFBFBD>{<7B>3<>4<><03><12> <14>"<22>1<EFBFBD>*<2A><05> <10>=<3D> <14><12>3<EFBFBD>i<EFBFBD><03>.<2E>s<EFBFBD>3<><03>M<EFBFBD><1A>!<21>L<EFBFBD><19> <0B><07><07> <0B>T<EFBFBD>"<22><0E> <0A> <0A>c<EFBFBD><1A><1A> <0B>K<EFBFBD>K<EFBFBD>6<><04>K<EFBFBD>E<> <11>+<2B>:<3A> <1E><1E><>OL<01><> <15> <0A> <0C> <0A><> Is5<00>7G<00>5G <04> G <04>G<00>=G"<04>G"<04> G<00> G<03>Gc<00>\<00>V^8<>dQhR\R\\\,,/#)r<00>valuer)rrrr<>)rs"rrr<00>s#<00><00><10><10>C<EFBFBD><10>H<EFBFBD>T<EFBFBD>%<25>[<5B>$9<>rc<00><><00>VfR#\V\4'dVUu.uFp\V4NK up#\V\4'd<>VP 4pV'gR#VP R4'd\VPR4'dEV^RPR4Uu.uF%qP 4'gK\V4NK' up#\P!V4p\V\4'dVUu.uFp\V4NK up#R#R#uupi \dR#i;iuupiuupi \dR#i;i)Nr<4E>r<>r<><00><><EFBFBD><EFBFBD><EFBFBD>) rUr<>r<>rr<00>strip<69>
startswith<EFBFBD>endswithr0<00>json<6F>loads)rr<>r<><00>parseds& rrr<00>s<00><00> <0C>}<7D><13><11>%<25><14><1E><1E> <18>&+<2B>,<2C>e<EFBFBD><11>E<EFBFBD>!<21>H<EFBFBD>e<EFBFBD>,<2C> ,<2C><12>%<25><13><1D><1D><14>{<7B>{<7B>}<7D><04><13><17> <18><13><EFBFBD><EFBFBD>s<EFBFBD>#<23>#<23><04> <0A> <0A>c<EFBFBD>(:<3A>(:<3A>*.<2E>q<EFBFBD><12>*<2A>*:<3A>*:<3A>3<EFBFBD>*?<3F>M<>*?<3F>Q<EFBFBD>7<EFBFBD>7<EFBFBD>9<EFBFBD><08><05>a<EFBFBD><08>*?<3F>M<>M<><19>Z<EFBFBD>Z<EFBFBD><04>%<25>F<EFBFBD><19>&<26>$<24>'<27>'<27>*0<>1<>&<26>Q<EFBFBD><05>a<EFBFBD><08>&<26>1<>1<>(<28> <10><>-<2D><><18> <18><17> <18><>N<01><>2<><32><18> <18><17> <18>si<00>D-<00>D(<04>D-<00>*E <00>E <00>E <00>.D?<04>
D?<04>E <00>0E <00> E<04> E <00>(D-<00>- D<<03>;D<<03>?
E <00> E<03>Ec<00>\<00>V^8<>dQhR\\,R\\,/#)r<00>vecr)rr<>)rs"rrr<00>s"<00><00>*<2A>*<2A><04>U<EFBFBD> <0B>*<2A><04>U<EFBFBD> <0B>*rc<00><><00>V'g.#\P!\RV444pV^8:dVUu.uFpRNK up#VUu.uFp\V4V, NK up#uupiuupi)c3<00>X"<00>TF p\V4\V4,x<00>K" R#5ir<>)r<>r<>s& rr<><00>!_normalize_vec.<locals>.<genexpr>s <00><00><00>:<3A>c<EFBFBD><11><15>q<EFBFBD><18>E<EFBFBD>!<21>H<EFBFBD>,<2C>,<2C>c<EFBFBD>s<00>(*r)<04>math<74>sqrt<72>sumr<6D>)r)<00>norm<72>_r<5F>s& rrr<00>sf<00><00> <0E><11> <09> <0F>9<EFBFBD>9<EFBFBD>S<EFBFBD>:<3A>c<EFBFBD>:<3A>:<3A> ;<3B>D<EFBFBD> <0B>q<EFBFBD>y<EFBFBD> <20>!<21>S<EFBFBD><01><03>S<EFBFBD>!<21>!<21>%(<28> )<29>S<EFBFBD><01>E<EFBFBD>!<21>H<EFBFBD>t<EFBFBD>O<EFBFBD>O<EFBFBD>S<EFBFBD> )<29>)<29><>"<22><> )s <00> A,<04>A1c<00>~<00>V^8<>dQhR\\,R\\,R\\,/#)r<00>a<>br)rr<>r)rs"rrrs-<00><00>"<22>"<22>$<24>u<EFBFBD>+<2B>"<22>$<24>u<EFBFBD>+<2B>"<22>(<28>5<EFBFBD>/<2F>"rc<00>l<00>V'd V'gR#\\V4\V44pV^8XdR#RpRp\V4FCp\W,4p\W,4pW6V,, pWGV,, pKE V^8:dR#V\P
!V4, #)Nr)r'r1r<>r<>r-r.)r3r4<00>n<>dot<6F>bnorm<72>i<>av<61>bvs&& rrrs<><00><00> <0C>A<EFBFBD><13> <0B>C<EFBFBD><01>F<EFBFBD>C<EFBFBD><01>F<EFBFBD><1B>A<EFBFBD><08>A<EFBFBD>v<EFBFBD><13>
<0A>C<EFBFBD> <0F>E<EFBFBD> <12>1<EFBFBD>X<EFBFBD><01> <12>1<EFBFBD>4<EFBFBD>[<5B><02> <12>1<EFBFBD>4<EFBFBD>[<5B><02> <0B>B<EFBFBD>w<EFBFBD><0E><03> <0A>b<EFBFBD><17><18><05> <16>
 <0A><01>z<EFBFBD><13> <0E><14><19><19>5<EFBFBD>!<21> !<21>!rc<00>t<00>V^8<>dQhR\\\3,R\\\3,/#rfrh)rs"rrrs*<00><00><0F><0F>4<EFBFBD><03>S<EFBFBD><08>><3E><0F>d<EFBFBD>3<EFBFBD><03>8<EFBFBD>n<EFBFBD>rc
<00>f<00>VPR4'g \R4hRVPR4RVPR4RVR,RVPR4/p\PR4P V4P 4p\ V4pV'g \R4hV#)<07>actionz'action' is required.rErz<00>details<6C> audit_logzFailed to create audit log.rr)rgrrrYs& r<00> add_audit_logrAs<><00><00> <12>;<3B>;<3B>x<EFBFBD> <20> <20><18>0<>1<>1<> <12>7<EFBFBD>;<3B>;<3B>y<EFBFBD>)<29><11>7<EFBFBD>;<3B>;<3B>y<EFBFBD>)<29><10>'<27>(<28>#<23><11>7<EFBFBD>;<3B>;<3B>y<EFBFBD>)<29>  <06>D<EFBFBD><18>~<7E>~<7E>k<EFBFBD>*<2A>1<>1<>$<24>7<>?<3F>?<3F>A<>H<EFBFBD>
2026-02-14 22:57:24 -07:00
<10><18>
2026-02-15 00:07:07 -07:00
<1A>C<EFBFBD> <0E><1A>8<>9<>9<> <0E>Jrc <00><><00>V^8<>dQhR\\,R\\,R\R\R\\\\
2026-02-15 12:56:39 -07:00
3,,/#)rrErzr r!r)rr"rrrr)rs"rrr.s`<00><00>
2026-02-14 22:57:24 -07:00
<1B>
<1B>X<EFBFBD>c<EFBFBD>]<5D>
<1B>H<EFBFBD>S<EFBFBD>M<EFBFBD>
<1B>X[<5B>
<1B>hk<68>
<1B>vz<76>{<>AD<02>FI<02>AI<02>|J<02>wK<02>
2026-02-15 12:56:39 -07:00
rc<00>2<00>\W#4wrE\PR4PR4pVeVP RV4pVeVP RV4pVP RRR7P WE4P4p\V4#)r@r^rErzr<>Tr<54>r<>)rErzr r!r(r)r<>rs&&&& r<00>list_audit_logsrD.s<><00><00><1A>4<EFBFBD>'<27>J<EFBFBD>E<EFBFBD> <14>N<EFBFBD>N<EFBFBD>;<3B> '<27> .<2E> .<2E>s<EFBFBD> 3<>E<EFBFBD><0E><1A><15><08><08><19>G<EFBFBD>,<2C><05><0E><1A><15><08><08><19>G<EFBFBD>,<2C><05><14>{<7B>{<7B><<3C>d<EFBFBD>{<7B>3<>9<>9<>%<25>E<>M<>M<>O<>H<EFBFBD> <10><18>?<3F>rc<00>R<00>V^8<>dQhR\R\\\3,/#r<>rG)rs"rrr=s"<00><00> <06> <06>S<EFBFBD> <06>T<EFBFBD>#<23>s<EFBFBD>(<28>^<5E> rc<00><><00>\V4pV'g/#RVR\V4R\V4R\V4R\ V^RR7R\ V^^<5E>R7/#) r<><00>filesr<73><00>rightsr<73>i<>)r r!r@)rEr r!)r<>r<>r<>r<>r<>rD)rEr<>s& r<00>get_post_bundlerI=sb<00><00> <1F><07> (<28>D<EFBFBD> <0F><11> <09> <0F><04><0F>#<23>G<EFBFBD>,<2C><12>(<28><17>1<><10>$<24>W<EFBFBD>-<2D><14>o<EFBFBD>g<EFBFBD>A<EFBFBD>T<EFBFBD>B<><13>_<EFBFBD>W<EFBFBD>1<EFBFBD>C<EFBFBD>H<>  <06>rc<00>$<00>V^8<>dQhR\/#<00>rrE<00>r")rs"rrrLs<00><00>K<01>K<01>s<EFBFBD>Krc<00><><00>\PR4P4PRV4P 4R#)r<>rEN<>r>rP<00>deleterRrSr<>s&r<00>delete_rag_chunksrPLs-<00><00> <0C>N<EFBFBD>N<EFBFBD><<3C> <20>'<27>'<27>)<29>,<2C>,<2C>Y<EFBFBD><07>@<40>H<>H<>Jrc<00>$<00>V^8<>dQhR\/#rKrL)rs"rrrOs<00><00>N<01>N<01>#<23>Nrc<00>H<00>\V4pVFGp\VR,4wr4\PP V4P V.4KI \P R4P4PRV4P4R# K<>;i)rLrIrEN)
r<EFBFBD>r4r>r?r@<00>removerPrOrRrS)rErG<00> file_infor6r7s& r<00>delete_archive_filesrUOs<><00><00> <1E>w<EFBFBD> '<27>E<EFBFBD><1A> <09> <11>"4<>Y<EFBFBD>v<EFBFBD>5F<35>"G<> <1F>F<EFBFBD> <14> <1C> <1C> "<22> "<22>6<EFBFBD> *<2A> 1<> 1<>;<3B>-<2D> @<40><1B>  <0A>N<EFBFBD>N<EFBFBD>?<3F>#<23>*<2A>*<2A>,<2C>/<2F>/<2F> <09>7<EFBFBD>C<>K<>K<>M<><4D> <11> <10>s <00>AB<02>B!c<00>$<00>V^8<>dQhR\/#rKrL)rs"rrrYs<00><00>Q<01>Q<01>S<EFBFBD>Qrc<00><><00>\PR4P4PRV4P 4R#)r<>rENrNr<>s&r<00>delete_metadatarXYs.<00><00> <0C>N<EFBFBD>N<EFBFBD>%<25>&<26>-<2D>-<2D>/<2F>2<>2<>9<EFBFBD>g<EFBFBD>F<>N<>N<>Prc<00>$<00>V^8<>dQhR\/#rKrL)rs"rrr\s<00><00>O<01>O<01>3<EFBFBD>Orc<00><><00>\PR4P4PRV4P 4R#)r<>rENrNr<>s&r<00> delete_rightsr[\s.<00><00> <0C>N<EFBFBD>N<EFBFBD>#<23>$<24>+<2B>+<2B>-<2D>0<>0<><19>G<EFBFBD>D<>L<>L<>Nrc<00>$<00>V^8<>dQhR\/#rKrL)rs"rrr_s<00><00>L<01>L<01>s<EFBFBD>Lrc<00><><00>\PR4P4PRV4P 4R#)r<>rENrNr<>s&r<00>delete_audio_postr^_s-<00><00> <0C>N<EFBFBD>N<EFBFBD>=<3D>!<21>(<28>(<28>*<2A>-<2D>-<2D>i<EFBFBD><17>A<>I<>I<>Krc<00>0<00>V^8<>dQhR\R\/#)rrEr<>)r"rV)rs"rrrbs<00><00>)<29>)<29>s<EFBFBD>)<29>T<EFBFBD>)rc<00><><00>\PR4PV4PRV4P 4\ V4#)r<>rE)r>rPr<>rRrSr<>)rEr<>s&&rr<>r<>bs:<00><00> <0C>N<EFBFBD>N<EFBFBD>=<3D>!<21>(<28>(<28><17>1<>4<>4<>Y<EFBFBD><07>H<>P<>P<>R<> <1F><07> (<28>(rc<00>$<00>V^8<>dQhR\/#rKrL)rs"rrrfs<00><00>0<>0<>#<23>0rc<00><><00>\PR4PR4PRV4P 4P 4pVP 'd VP #R#)r<>r^rEN)r>rPrQrR<00>singlerSr)rE<00>results& rr<>r<>fsQ<00><00> <15>^<5E>^<5E>M<EFBFBD> *<2A> 1<> 1<>#<23> 6<> 9<> 9<>)<29>W<EFBFBD> M<> T<> T<> V<> ^<5E> ^<5E> `<60>F<EFBFBD> <20>+<2B>+<2B>+<2B>6<EFBFBD>;<3B>;<3B>/<2F>4<EFBFBD>/rc<00>@<00>V^8<>dQh/^\9d
\;R&#)rr>)<02>__conditional_annotations__r)rs"rrrs<00><00><04><04>(J<01>I<>&<26>I<>)r)zapplication/octet-streamF)i)r%<00>)r%rgNN)r%<00><>)r%<00>)ri)NNr%<00>d)=rf<00>__doc__<5F>osr-r%<00>typingrrrrr<00>dotenvrr>rr <00>getenvr"r
r rXrrr*r4rCr[r_rdrxr~r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>r<>rrrrrArDrIrPrUrXr[r^r)rfs@r<00><module>rpsd<00><><01><04>
<EFBFBD> <0B> <0B>3<>3<><1E>*<2A> <0B> <0A><12> <09> <09>.<2E>)<29>/<2F>/<2F>R<EFBFBD>6<>6<>8<> <0C><1F>Y<EFBFBD>Y<EFBFBD>'B<>C<>I<>I<>r<EFBFBD>P<>P<>R<><19><13>4<>
2026-02-14 22:57:24 -07:00
<16>a<>
b<EFBFBD>b<> <20><1C>/H<>I<><08>I<>1<>%<25>
2026-02-15 02:18:07 -07:00
<16><1E><06>()<06>X <1C> E<01><13>*a<01>]<01> <13>6#<23>E<01>
<1B><1C>><13>,<1B> <0F>l<01><0F>6j<01> <1B>0
2026-02-15 12:56:39 -07:00
<1B><06>(C<01><1F>*7<1F>t<10>.*<2A>"<22>(<0F>$
<1B> <06>K<01>N<01>Q<01>O<01>L<01>)<29>0r