
    yj
R                        U d dl Z d dlmZ d dlmZmZ d dlmZ d dlm	Z
 d dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZmZ d d	lmZm Z m!Z!m"Z" d d
l#m$Z$ d dl%m&Z& d dl'm(Z( d dl)m*Z*m+Z+m,Z, ddl-m.Z.  ed           e(j/        j0        Z1e2e3d<    ee4          Z5 ede.j6         ede ed          dd           ededd           ededd           edee7d ed                     edee7d ed                     ed ed          d e$j8                               ed  ed          d!           eddgd"d#g           eddgd$d%g                    Z9e G d& d'e.                      Z:e G d( d)e.                      Z;e G d* d+e.                      Z<e G d, d-e.                      Z=e G d. d/e.                      Z>e G d0 d1e.                      Z?e G d2 d3e.                      Z@e G d4 d5e.                      ZAe G d6 d7e.                      ZBe G d8 d9e.                      ZCe G d: d;e.                      ZDdS )<    N)	getLogger)Anyfinal)load_dotenv)generate)Vector)
BigIntegerBooleanCheckConstraintColumnDateTime
ForeignKeyForeignKeyConstraintIdentityIndexIntegerTableUniqueConstrainttext)JSONBTEXT)MappedMappedColumnmapped_columnrelationship)func)override)settings)DocumentLevelTaskTypeVectorSyncState   )BaseT_VECTOR_DIMsession_peersworkspace_nameworkspaces.nameF)primary_keynullablesession_name	peer_nameconfiguration'{}'::jsonb)defaultr)   server_defaultinternal_metadata	joined_attimezoner)   r/   left_atr)   sessions.namesessions.workspace_name
peers.namepeers.workspace_namec                      e Zd ZU dZeed<    eeed          Z	e
e         ed<    eed          Ze
e         ed<    e ed           ej                    d	          Ze
ej                 ed
<    edee ed                    Ze
eeef                  ed<    edee ed                    Ze
eeef                  ed<    eee ed                    Ze
eeef                  ed<    eddd          Z eddd          Z edd          Z edd           edd           edd          fZdS ) 	Workspace
workspaces__tablename__Tr.   r(   iduniquenamer2   r/   index
created_atmetadatar-   r.   r/   
h_metadatar0   r,   Session	workspaceall, delete, delete-orphanback_populatescascadePeerWebhookEndpointrN   length(id) = 21	id_lengthrC   length(name) <= 512name_lengthid ~ '^[A-Za-z0-9_-]+$'	id_formatN)__name__
__module____qualname__r>   str__annotations__r   r   generate_nanoidr@   r   rC   r   r   nowrF   datetimer   dictr   rI   r   r0   r,   r   sessionspeerswebhook_endpointsr   __table_args__     2/DATA/AppData/hermes/projects/honcho/src/models.pyr<   r<   `   s'        %M3%%%#mD/tTTTBsTTT%d4888D&+888,9M$

$- - -Jx()    *7E4]8K8K* * *JtCH~&    1>UDmATAT1 1 1vd38n-    -:MtDD,?,?- - -M6$sCx.)    |+7S  H L{4P  E %%6{SSS 	)<<<-MBBB1DDDNNNrh   r<   c                      e Zd ZU dZeed<    eeed          Z	e
e         ed<    eed          Ze
e         ed<    ed	ee ed
                    Ze
eeef                  ed<    edee ed
                    Ze
eeef                  ed<    e ed           ej                    d          Ze
ej                 ed<    e ed          dd          Ze
e         ed<    eee ed
                    Ze
eeef                  ed<    edd          Z eded          Z edd           edd           edd           edd          fZ d efd!Z!d"S )#rP   rd   r>   Tr?   r@   Fr6   rC   rG   r-   rH   rI   r0   r2   rD   rF   r'   r)   rE   r&   r,   r<   rR   rJ   	secondaryrN   rS   rT   rU   rV   rW   rX   rY   returnc                 h    d| j          d| j         d| j         d| j         d| j         d| j         dS )NzPeer(id=, name=, workspace_name=, created_at=, h_metadata=z, configuration=))r@   rC   r&   rF   rI   r,   selfs    ri   __repr__zPeer.__repr__   s     }$'  }  }$)  }  }dFY  }  }hlhw  }  }  GK  GV  }  }  hl  hz  }  }  }  	}rh   N)"rZ   r[   r\   r>   r]   r^   r   r   r_   r@   r   rC   r   rb   r   rI   r   r0   r   r   r`   rF   ra   r   r&   r,   r   rK   session_peers_tablerc   r   r   rf   rw   rg   rh   ri   rP   rP      s{         M3   #mD/tTTTBsTTT%dU;;;D&+;;;)6E4]8K8K* * *JtCH~&    1>UDmATAT1 1 1vd38n-    -:M$

$- - -Jx()    #0-
$%%T# # #NF3K    -:MtDD,?,?- - -M6$sCx.)    [AAAI|0  H
 	!122)<<<-MBBB1DDD	N}# } } } } } }rh   rP   c                   *   e Zd ZU dZeed<    eede          Z	e
e         ed<    ee          Ze
e         ed<    ed ed                    Ze
e         ed	<    ed
ee ed                    Ze
eeef                  ed<    edee ed                    Ze
eeef                  ed<    e ed           ej                    d          Ze
ej                 ed<    e ed          dd          Ze
e         ed<    eee ed                    Ze
eeef                  ed<    edd          Z eded          Z edd          Z  e!dd           e"dd           e"dd            e"d!d"          fZ#d#efd$Z$d%S )&rJ   rc   r>   T)r(   r.   r@   rC   truerH   	is_activerG   r-   rI   r0   r2   rD   rF   r'   Frk   r&   r,   r<   rR   rP   rl   MessagesessionrV   rW   rU   rS   rT   rX   rY   rn   c                 h    d| j          d| j         d| j         d| j         d| j         d| j         dS )NzSession(id=rp   rq   z, is_active=rr   rs   rt   )r@   rC   r&   r{   rF   rI   ru   s    ri   rw   zSession.__repr__   s     xTW  x  xTY  x  xI\  x  xjnjx  x  x  HL  HW  x  x  fj  fu  x  x  x  	xrh   N)%rZ   r[   r\   r>   r]   r^   r   r   r_   r@   r   rC   r   r{   boolr   rb   rI   r   r0   r   r   r`   rF   ra   r   r&   r,   r   rK   rx   rd   messagesr   r   rf   rw   rg   rh   ri   rJ   rJ      s        #M3####mDdOTTTBsTTT%d++D&+++++mDfVVVIvd|VVV)6E4]8K8K* * *JtCH~&    1>UDmATAT1 1 1vd38n-    -:M$

$- - -Jx()    #0-
$%%T# # #NF3K    -:MtDD,?,?- - -M6$sCx.)    [DDDIL-j  E |Ii@@@H 	!122-MBBB)<<<1DDD	Nx# x x x x x xrh   rJ   c                      e Zd ZU dZeed<    ee e            dd          Z	e
e         ed<    eede          Ze
e         ed<    eed	          Ze
e         ed
<    ee          Ze
e         ed<    edee ed                    Ze
eeef                  ed<    edee ed                    Ze
eeef                  ed<    eedd          Ze
e         ed<    eed	          Ze
e         ed<    e ed           ej                    d          Ze
ej                 ed<    eed          Ze
e         ed<    eed          Z e
e         ed<    e!dd          Z" e#dd           e#d d!           e#d"d#           e$d
dgd$d%g           e$ddgd&d'g           e%d(d
dddg)           e&dd
d           e%d* ed+          d,-          fZ'e(d.efd/            Z)d0S )1r|   r   r>   Tr(   autoincrementr@   )rB   r.   	public_idFr6   r*   contentrG   r-   rH   rI   r0   r   )r.   r)   token_countseq_in_sessionr2   rD   rF   rE   r+   r&   rJ   rR   zlength(public_id) = 21public_id_lengthrU   zpublic_id ~ '^[A-Za-z0-9_-]+$'public_id_formatlength(content) <= 65535content_lengthr7   r8   r9   r:   ix_messages_session_lookup)postgresql_includeix_messages_content_ginzto_tsvector('english', content)ginpostgresql_usingrn   c           	      H    d| j          d| j         d| j         d| j         d	S )NzMessage(id=z, session_name=z, peer_name=z
, content=rt   )r@   r*   r+   r   ru   s    ri   rw   zMessage.__repr__  s8    }TW}}T5F}}TXTb}}nrnz}}}}rh   N)*rZ   r[   r\   r>   r]   r^   r   r	   r   r@   r   intr   r_   r   r*   r   r   rb   r   rI   r   r0   r   r   r   r   r   r`   rF   ra   r+   r&   r   r}   r   r   r   r   rf   r   rw   rg   rh   ri   r|   r|      s        #M3####mHHJJD  Bs    +]  Ivc{    !.dU C C CL&+CCC(=..GVC[...)6E4]8K8K* * *JtCH~&    1>UDmATAT1 1 1vd38n-     -}Wa%PPPKPPP"/-
U"K"K"KNF3KKKK,9M$

$- - -Jx()    +]4t<<<Ivc{<<<"/-D"A"A"ANF3KAAAl9Z@@@G 	07IJJJ8?QRRR29IJJJ-.78	
 	

 	*+12	
 	
 	( $l3		
 	
 	
 		
 	
 	%D233"	
 	
 	
5NB ~# ~ ~ ~ X~ ~ ~rh   r|   c            
       x   e Zd ZU dZeed<    ee e            dd          Z	e
e         ed<    ee          Ze
e         ed<    e ee          d          Zee         ed<    e ed	d
          dd          Ze
e         ed<    e ed          dd          Ze
e         ed<    eedd          Ze
e         ed<    eedd          Ze
e         ed<    e ed           ej                    d          Ze
ej                 ed<    eeddd          Ze
e         ed<    e ed          d          Ze
ej        dz           ed<    ee dd e!d                    Z"e
e         ed<    e#ddgdd g           e#ddgd!d"g           e$d#dd$d%d&d'dd(i)           e$d*dd          fZ%dS )+MessageEmbeddingmessage_embeddingsr>   Tr   r@   r   r6   	embeddingzmessages.public_idCASCADE)ondeleteFrk   
message_idr'   r&   r*   r+   r2   rD   rF   pendingr)   r/   rE   
sync_stateNlast_sync_atr   0r)   r.   r/   sync_attemptsr7   r8   r9   r:   $ix_message_embeddings_embedding_hnswhnsw   @   mef_constructionvector_cosine_opsr   postgresql_withpostgresql_ops-ix_message_embeddings_sync_state_last_sync_at)&rZ   r[   r\   r>   r]   r^   r   r	   r   r@   r   r   r   r   r   r$   r   r   r   r   r   r&   r*   r+   r   r   r`   rF   ra   r   r!   r   r   r   r   r   r   rf   rg   rh   ri   r   r     s        -M3---#mHHJJD  Bs    )=..GVC[...#0=1D1Dt#T#T#TI|C TTT+m
')<<<uTX  Js    #0-
$%%T# # #NF3K    !.dU$ O O OL&+OOO*]4%tLLLIvc{LLL,9M$

$- - -Jx()    +8-uYd+ + +J'    6C]$$6 6 6L&*T12    "/%4499" " "M6#;    	-.78	
 	
 	*+12	
 	

 	2#"$<<')<=	
 	
 	
 	;	
 	
'NNNrh   r   c            	          e Zd ZU dZeed<    eeed          Z	e
e         ed<    eed          Ze
e         ed<    eed          Ze
e         ed<    e ed	           ej                    d
          Ze
ej                 ed<    edee ed                    Ze
eeef                  ed<    edee ed                    Ze
eeef                  ed<    eddd          Z e ed          dd          Ze
e         ed<    eddd           edd           edd           eddgddg           eddgddg          fZd S )!
Collectioncollectionsr>   Tr?   r@   r   observerobservedr2   rD   rF   rG   r-   rH   rI   r0   Document
collectionrL   rM   r'   Frk   r&   rS   rT   rU   rX   rY   r9   r:   N) rZ   r[   r\   r>   r]   r^   r   r   r_   r@   r   r   r   r   r   r`   rF   ra   r   rb   r   rI   r   r0   r   	documentsr   r&   r   r   r   rf   rg   rh   ri   r   r   N  sX        &M3&&&#mD/tTTTBsTTT)M$d;;;HfSk;;;)M$d;;;HfSk;;;,9M$

$- - -Jx()    *7E4]8K8K* * *JtCH~&    1>UDmATAT1 1 1vd38n-    <9U  I #0-
$%%T# # #NF3K   
 		
 	

 	)<<<1DDD)*12	
 	

 	)*12	
 	
NNNrh   r   c                      e Zd ZU dZeed<    eeed          Z	e
e         ed<    edee ed                    Ze
eeef                  ed<    ee          Ze
e         ed	<    eed
d          Ze
e         ed<    eed
 ed                    Ze
e         ed<    e ee          d          Zee         ed<    eed ed                    Ze
ee         dz           ed<    e ed           ej                    d          Ze
e j                  ed<    eed          Z!e
e         ed<    eed          Z"e
e         ed<    e e#d          d
d          Z$e
e         ed<    eedd          Z%e
edz           ed<    e ed          ddd          Z&e
e j         dz           ed <    eed
d!d"          Z'e
e(         ed#<    e ed          d          Z)e
e j         dz           ed$<    eed
d% ed&          '          Z*e
e         ed(<    e+d)d*          Z, e-d+d,-           e-d.d/-           e-d0d1-           e.g d2g d3           e.ddgd4d5g           e.ddgd4d5g           e.ddgd6d7g           e/d8dd9d:d;d<dd=i>           e/d?dd@A           e/dBd#d$          f
Z0dS )Cr   r   r>   Tr?   r@   r0   r-   rH   r   Fexplicitr4   level1times_derivedr6   r   NULLN
source_idsr2   rD   rF   r   r   r   r'   rk   r&   r*   )r)   rE   r.   
deleted_atr   r   r   r   r   r   r   r   r   rR   rS   rT   rU   r   r   rX   rY   )r   r   r&   )zcollections.observerzcollections.observedzcollections.workspace_namer9   r:   r7   r8   ix_documents_embedding_hnswr   r   r   r   r   r   ix_documents_source_ids_ginr   r   $ix_documents_sync_state_last_sync_at)1rZ   r[   r\   r>   r]   r^   r   r   r_   r@   r   r   rb   r   r0   r   r   r   r   r   r   r   r   r$   r   r   r   listr   r   r`   rF   ra   r   r   r   r&   r*   r   r   r!   r   r   r   r   r   r   r   rf   rg   rh   ri   r   r   z  s        $M3$$$#mD/tTTTBsTTT0=UDmATAT1 1 1vd38n-    )=..GVC[...#0=uZ$ $ $E6-     "/%S		" " "M6#;    $1=1D1Dt#T#T#TI|C TTT+8=TT&\\, , ,JtCy4'(    -:M$

$- - -Jx()    *M$d;;;HfSk;;;)M$d;;;HfSk;;;"/-
$%%T# # #NF3K    (5}TDPT'U'U'UL&t$UUU3@=$$dD4 4 4Jx(4/0   
 +8-uYd+ + +J'    6C]$$6 6 6L&*T12    "/%4499" " "M6#;    l;GGGJ 	)<<<29IJJJ1DDD666  	
 	
 	)*12	
 	

 	)*12	
 	

 	-.78	
 	

 	)#"$<<0	
 	
 	
 	)"	
 	
 	
 	2	
 	
[2NNNrh   r   c                   x   e Zd ZU dZeed<    ee e            dd          Z	e
e         ed<    e ed          dd          Ze
edz           ed	<    eed
          Ze
e         ed<    eed
          Ze
e         ed<    eed
          Ze
eeef                  ed<    eed
 ed          d          Ze
e         ed<    eed          Ze
edz           ed<    e ed           ej                    d          Ze
ej                 ed<    e ed          dd          Z e
edz           ed<    ee ed          d          Z!e
edz           ed<    e"dd ed                     e"dddd           e"ddd ed                      e"d!dd ed"                     fZ#d#efd$Z$dS )%	QueueItemqueuer>   Tr   r@   zsessions.idrk   N
session_idFr6   work_unit_key	task_typepayloadfalse)r.   r/   rE   	processederrorr2   rD   rF   r'   r&   zmessages.idr   ix_queue_message_id_not_nullzmessage_id IS NOT NULL)postgresql_where#ix_queue_work_unit_key_processed_id)uq_queue_reconciler_pending_work_unit_keyz.task_type = 'reconciler' AND processed = false)rB   r   $uq_queue_dream_pending_work_unit_keyz)task_type = 'dream' AND processed = falsern   c                     d| j          d| j         d| j         d| j         d| j         d| j         d| j         d| j         d	S )
NzQueueItem(id=z, session_id=z, work_unit_key=z, task_type=z
, payload=z, processed=rq   z, message_id=rt   )r@   r   r   r   r   r   r&   r   ru   s    ri   rw   zQueueItem.__repr__  s     @tw  @  @T_  @  @VZVh  @  @vz  wE  @  @  QU  Q]  @  @  ko  ky  @  @  LP  L_  @  @  nr  n}  @  @  @  	@rh   )%rZ   r[   r\   r>   r]   r^   r   r	   r   r@   r   r   r   r   r   r   r   r    r   r   rb   r   r
   r   r   r   r   r   r   r`   rF   ra   r&   r   r   rf   rw   rg   rh   ri   r   r     s         M3   #mHHJJD  Bs    &3]
=!!D& & &JsTz"    "/te!D!D!DM6#;DDD"/-u"E"E"EIvhEEE&3mEE&J&J&JGVDcN#JJJ+mttG}}D  Ivd|    !.dT B B BE6#*BBB,9M$

$- - -Jx()    *7
$%%D* * *NF3:&    &3]JJ}--& & &JsTz"   
 	*!T":;;	
 	
 	

 	1		
 	
 	7!T"RSS		
 	
 	
 	2!T"MNN		
 	
 	
)N8@# @ @ @ @ @ @rh   r   c                      e Zd ZU dZeed<    eeed          Z	e
e         ed<    eed          Ze
e         ed<    e ed           ej                     ej                    	          Ze
ej                 ed
<   dS )ActiveQueueSessionactive_queue_sessionsr>   Tr?   r@   rA   r   r2   )r/   onupdatelast_updatedN)rZ   r[   r\   r>   r]   r^   r   r   r_   r@   r   r   r   r   r`   r   ra   rg   rh   ri   r   r     s         0M3000#mD/tTTTBsTTT!.tD!A!A!AM6#;AAA.;m$

XTXZZ/ / /L&*+     rh   r   c                   n   e Zd ZU dZeed<    eeed          Z	e
e         ed<    e ed          dd          Ze
e         ed	<    eed
          Ze
e         ed<    e ed           ej                              Ze
ej                 ed<    edd          Z edd          fZdefdZdS )rQ   re   r>   Tr?   r@   r'   Frk   r&   r6   urlr2   )r/   rF   r<   rR   zlength(url) <= 2048
url_lengthrU   rn   c                 8    d| j          d| j         d| j         dS )NzWebhookEndpoint(id=rq   z, url=rt   )r@   r&   r   ru   s    ri   rw   zWebhookEndpoint.__repr__4  s,    eTWeet?ReeZ^Zbeeeerh   N)rZ   r[   r\   r>   r]   r^   r   r   r_   r@   r   r   r&   r   r   r   r`   rF   ra   r   rK   r   rf   rw   rg   rh   ri   rQ   rQ   $  sG        ,M3,,,#mD/tTTTBsTTT"/-
$%%T# # #NF3K    %}TE:::C:::,9M$

- - -Jx()    [9LMMMI%o&;,OOOQNf# f f f f f frh   rQ   c                       e Zd ZU eZeed<   ee         ed<   ee         ed<   ee         ed<   ee	ee
f                  ed<   ee	ee
f                  ed<   eej                 ed<   eej        dz           ed	<   dS )
SessionPeer	__table__r&   r*   r+   r,   r0   r1   Nr5   )rZ   r[   r\   rx   r   r   r^   r   r]   rb   r   ra   rg   rh   ri   r   r   8  s         *Iu*** 3K+c{$sCx.))))d38n----h'((((H%,------rh   r   )Era   loggingr   typingr   r   dotenvr   nanoidr   r_   pgvector.sqlalchemyr   
sqlalchemyr	   r
   r   r   r   r   r   r   r   r   r   r   r   sqlalchemy.dialects.postgresqlr   r   sqlalchemy.ormr   r   r   r   sqlalchemy.sqlr   typing_extensionsr   
src.configr   src.utils.typesr   r    r!   dbr#   	EMBEDDINGVECTOR_DIMENSIONSr$   r   r^   rZ   loggerrG   rb   r`   rx   r<   rP   rJ   r|   r   r   r   r   r   rQ   r   rg   rh   ri   <module>r      s                        . . . . . . & & & & & &                              7 6 6 6 6 6 6 6 L L L L L L L L L L L L       & & & & & &       D D D D D D D D D D       T    %7S 7 7 7	8		 eM
F
$%%   F	   F;$???
FtM**   FtM**   F$txzz	   F$   	)*	34 
 	&'	-. a4 4 n        @ !} !} !} !} !}4 !} !} !}H #x #x #x #x #xd #x #x #xL C~ C~ C~ C~ C~d C~ C~ C~L 6 6 6 6 6t 6 6 6r ( ( ( ( ( ( ( (V ^ ^ ^ ^ ^t ^ ^ ^B 7@ 7@ 7@ 7@ 7@ 7@ 7@ 7@t 	 	 	 	 	 	 	 	 f f f f fd f f f& 
. 
. 
. 
. 
.$ 
. 
. 
. 
. 
.rh   