
    RjL                       d Z ddlmZ ddlZddlZddlZddlZddlZddl	m
Z
 ej                  j                  dd      Z e
d      Zej                  j                  dd	      Zej                  j                  d
d      dk7  ej                  j                  dd      dk7  ej                  j                  dd      dk7  ej                  j                  dd      dk7  ej                  j                  dd      dk7  ej                  j                  dd      dk7  ej                  j                  dd      dk7  ej                  j                  dd      dk7  ej                  j                  dd      dk7  d	Zg dZdZdZ ej(                  dej*                        Zh dZg dg dg dg dg dg dg dg d g d!g d"d#
Zd$d%d&d'd(d)d*d+d,d-	Zd. Zd/ Zd0 Zd1 Zd2 Zd3 Zd4 Z d5 Z!d6 Z"d7 Z#d8 Z$d9 Z%d: Z&d; Z'd< Z(d= Z)d> Z*d? Z+d@ Z,dA Z-dB Z.y)CzControlled Phase-1 retrieval repair.
Read-only against knowledge DB, Obsidian and Graphiti.
No entity merges, source writes, Graphiti writes or index changes.
    )annotationsN)PathKNOWLEDGE_DBz+/opt/struktur/youtube-research/knowledge.dbz/opt/obsidian-vaultGRAPHITI_URLzhttp://127.0.0.1:8644RETRIEVAL_ENTITY_RESOLVER10RETRIEVAL_INTENT_GATING"RETRIEVAL_GRAPHITI_PROVENANCE_GATERETRIEVAL_ENTITY_FIRST_FTSRETRIEVAL_CROSS_LAYER_DEDUPEEVIDENCE_DEDUPEASSERTION_SCOPEENTITY_YOUTUBE_GATERETRIEVAL_METADATA_V2)	entity_resolverintent_gatinggraphiti_provenance_gateentity_first_ftscross_layer_dedupeevidence_dedupeassertion_scopeentity_youtube_gateretrieval_metadata_v2)u   lüftungsprofi mallorca   lüftungsprofizlueftungsprofi mallorcalueftungsprofizmallorca airserviceszmallorca air serviceszcompany:lueftungsprofi-mallorcau.   Lüftungsprofi Mallorca / Mallorca AirServicesz\b(?:eisen|heinz)\b>)      für   überorandaufausdasdemdenderdesdieeinforhowistmitourtheundunsvonwaswiewirdoeseinehaveintoodersindthatthiswhatwithabouteinemeineneinertheirwhich)	agent
autonomousagentenlong-runningreliability
monitoringrecoverycontexttoken)rF   rG   subagentskillsworkflowrK   )rI   dauerbetriebrK   rL   rJ   )costrN   budgetrate
modellwahl)
provenienzsourceevidenceaudittraceability)wissensbasis	knowledgeragobsidian	retrieval)failurerL   rK   retryrJ   )	guardrail
validationerrorrL   )
autonome	autonomenrH   z
ki-agentenlangfristigkostennachvollziehbarkeitwissenu
   ausfällenfehlverhalteng?g      ?gffffff?g?      ?g?g?g      ?g333333?)	AUFTRAGSBESTAETIGUNGRECHNUNG
BESTELLUNGPROJEKTDATENTECHNISCHE_UNTERLAGEANGEBOTINBETRIEBNAHMEEMAILSONSTIGc                 B    t        j                  dt         ddd      S )Nzfile:z?mode=roT
   )uritimeout)sqlite3connectDB     +/home/hermes/knowledge_query-phase2-live.pyror   "   s    5H!5$rJ
Jr   c                    t        j                  d| j                               D cg c]  }|t        vs| c}d d S c c}w )Nu   [\wÄÖÜäöüß-]{3,}   )refindalllowerSTOP)qxs     r   tokensr   #   s9    "**-G	"RdQVW_cVcqdehfhiids   ??c                    t        |       }g }|D ]'  }|j                  t        j                  |g              ) t	        t
        j                  ||z               d d S )N    )r   extend	EXPANSIONgetlistdictfromkeys)r   bets       r   expandedr   $   sO    	!9a
)QAHHY]]1R())T]]1Q3 "%%r   c                :    dj                  d | D              xs dS )N OR c              3  L   K   | ]  }d |j                  d d      z   d z     yw)"z""N)replace.0r   s     r   	<genexpr>zphrase_expr.<locals>.<genexpr>(   s%     +XAC		#d0C,CC,G+Xs   "$z"wissen")join)valuess    r   phrase_exprr   (   s    +XQW+X X f\ffr   c                   | j                         g }t        t        t        d      D ]  }|v s|j	                  |        t        t        j                  |             }|r^|d   }|dv xr3 t        j                               dk  xr t        fddD               }t        t        ||t        v rdnd	|rd
nd||dS d d d ddd|dS )NTkeyreverser   >   r   r      c              3  &   K   | ]  }|v  
 y wNr~   r   r   lows     r   r   z!resolve_entity.<locals>.<genexpr>1   s!       `tmn`aeh`h  `t   )mallorcaunternehmenfirma	   geschäftwebsiter   exact_aliastoken_aliasmediumhighcanonical_entity_idcanonical_namematched_alias
match_type
confidence	ambiguityproject_hintnoneF)casefoldsortedALIASESlenappendbool
PROJECT_REsearchsplitany	CANONICALCANONICAL_NAME)r   hitsaprojectmatched	ambiguousr   s         @r   resolve_entityr   *   s)   ZZ\4
S
. Q#Xdkk!n	j"	#
q'';;  tCIIK@PRS@S  t\_  `t  ss  `t  ]t  Yt) )>Za  AH  LS  ASo|  Yf  @I  t|  OU  bk  {B  
C  C#T$\bpv  DI  Y`  	a  ar   c                j   | j                         t        fddD              |d<   t        fddD              ry|j                  d      st        fdd	D              ry
|j                  d      rt        fddD              ryt        fddD              ryt        fddD              ryy)Nc              3  &   K   | ]  }|v  
 y wr   r~   r   s     r   r   zclassify.<locals>.<genexpr>7   s       'QAqCx  'Qr   )projektunterlagenprojektpraxisprojektbelegzdurch konkrete projektbelegtproject_evidence_requestedc              3  &   K   | ]  }|v  
 y wr   r~   r   s     r   r   zclassify.<locals>.<genexpr>8   s       UQS  Ur   )typischerweiseztypisch produrchschnittdurchschnittlichmeistverkauftu
   häufigsteu   übliche projektgrößestatisticalr   c              3  &   K   | ]  }|v  
 y wr   r~   r   s     r   r   zclassify.<locals>.<genexpr>:   s       #v18  #vr   )	z
im projektz
im auftragangebotu   auftragsbestätigungauftragsbestaetigung
bestellungrechnungverkauftu   stückr   r   c              3  &   K   | ]  }|v  
 y wr   r~   r   s     r   r   zclassify.<locals>.<genexpr><   s       ,|AH  ,|r   )
u	   was weißz	was wisstr   r   r   r   
leistungenpartnerr   zmallorca aircompanyc              3  &   K   | ]  }|v  
 y wr   r~   r   s     r   r   zclassify.<locals>.<genexpr>=   s     jQSjr   )smartfanu   lüftungsanlageu   lüftungsgerätu   luftqualitätfeuchtigkeitproductc              3  &   K   | ]  }|v  
 y wr   r~   r   s     r   r   zclassify.<locals>.<genexpr>>   s     RQSRr   )rF   kiautonomr^   zsecond brainwissensresearchunclear)r   r   r   )r   entr   s     @r   classifyr   5   s    ZZ\#&  'Q  :P  'Q  $Q!"  U  T  U  U	GGNs  #v  6u  #v   v	GG!"  ,|  ?{  ,|  )|  FOjijjs|RQRR[er   c                     dj                   fddD              j                         t        fdt        D              xs dv S )N c              3  Z   K   | ]"  }t        j                  |      xs d        $ yw) N)strr   )r   kr   s     r   r   z_entity_text.<locals>.<genexpr>B   s(       DACaB  Ds   (+)titlesummarycontent	statementfactsource_identityoriginal_pathpathc              3  &   K   | ]  }|v  
 y wr   r~   )r   r   ss     r   r   z_entity_text.<locals>.<genexpr>C   s     $qAF$r   mallorca-airservices)r   r   r   r   )r   r  s   `@r   _entity_textr  A   sR    88  D  *C  D  D  M  M  O$G$$C(>!(CCr   c                4   t               }t        j                  |_        g }	 t        d   r|dk(  rt
        n
t        |       }t        |      }|j                  d|f      j                         }|D ]U  }t        |      }	t        |      dz   |	d<   d|	d<   t        |	      |	d<   t        d	   r
|d
v r|	d   sE|j                  |	       W ||j                          S # t        j                  $ r g cY |j                          S w xY w# |j                          w xY w)Nr   r   zSELECT v.id,v.youtube_id,v.title,v.channel,v.summary,v.published_at,(-bm25(videos_fts)) score FROM videos_fts JOIN videos v ON videos_fts.rowid=v.id WHERE videos_fts MATCH ? ORDER BY score DESC LIMIT 30   rankSOURCEsource_kindentity_matchr   )r   r   r   )r   r{   Rowrow_factoryFLAGSr   r   r   executefetchallr   r   r  r   closeError)
r   r   intentcoutvalsexprrowsrds
             r   ftsr  E   s   4w{{C*+	0AwxPQ{$4$yy  b  dh  cj  k  t  t  v$ a	!W1C
aiXAm$4Q]^_Q`q?P!"v1T'T]^_m]npx::a= 
	
 	Ri	
  	
s$   B&C D/D DD Dc                   t               }t        j                  |_        g }	 t	        |       }|dk(  rt
        }t        |      }|j                  d|f      j                         }|D ]  }t        |      }	t        |	      |	d<   dt        |	j                  dd            j                         v }
|dk(  rP|	j                  d      s-|
s+dt        |	j                  d	d            j                         v r|j                  d
      s|dk(  r.|
s+dt        |	j                  d	d            j                         v r|dk(  r|	d   s|dk7  r|	j                  d      r|	d   st        |      dz   |	d<   d|	d<   |j                  |	         ||j!                          S # t        j"                  $ r g cY |j!                          S w xY w# |j!                          w xY w)Nr   zSELECT rowid,doc_id,source_identity,project,document_type,original_path,content,(-bm25(kdata_fts)) score FROM kdata_fts WHERE kdata_fts MATCH ? ORDER BY score DESC LIMIT 30r
  eisen, heinzr   r   r   /eisen, heinz/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   r   r  r  r  r  r  r  r  r  project_sources              r   kftsr  T   s   4w{{C{$YW4$yy  D  FJ  EL  M  V  V  X$ 	Ba	!W1Qa C.?(C$D$M$M$OO>iQUU9-CSWZ[\[`[`apqs[tWuW~W~  XA  DA  KN  KR  KR  So  Kpjn0@Co^`HaDbDkDkDm0mi. 18iAEE),Q~5FXaZ1V9(=)CJJqM	B 
	
 	Ri	
  	
s$   E&F G/G GG Gc           	        t               }t        j                  |_        g }	 t	        |       }dj                  d |D              xs d}|j                  d| d|D cg c]  }d| d
 c}      j                         }|D ]  }	t        |	      t        j                  d      xs d      j                  d	      rd
ndd<   ddddddj                  j                  d      d      d<   t              d<   dt        j                  dd            j                         v }
|dv r|
r|dk(  r|j                  d      s|dv rd   st        fd|D              d<   |j                          |j!                  d d       t#        |d d  d!      D ]
  \  }|d"<    |d d  |j%                          S c c}w # t        j&                  $ r g cY |j%                          S w xY w# |j%                          w xY w)#Nr   c              3      K   | ]  }d   yw)zstatement LIKE ?Nr~   )r   _s     r   r   zkus.<locals>.<genexpr>l   s     'Iq(:'Is   z1=1zSELECT id,statement,source_identity,source_version_id,source_locator,evidence_class,review_state,gold_state,legacy_placeholder,content_version_hash FROM knowledge_units WHERE legacy_placeholder=0 AND review_state NOT IN ('REJECTED','LEGACY') AND ()%r   r   )k-daten:youtube:r  DERIVEDr	  g?g333333?rm   g?gffffff?)	GESICHERTu
   BESTÄTIGT	PLAUSIBELUNSICHERu   WIDERSPRÜCHLICHevidence_classquality_weightr
  r  )r   r   r   r   )r   r   c              3     K   | ]6  }j                  d       xs dj                         j                  |       8 yw)r   r   N)r   r   count)r   r   r  s     r   r   zkus.<locals>.<genexpr>u   s3     Squu[)/R99;AA!DSs   <?	relevancec                "    | d   | d   z  | d   fS )Nr/  r,  idr~   r   s    r   <lambda>zkus.<locals>.<lambda>w   s    ;*:(;;AdGD r   Tr      r  r  )r   r{   r  r  r   r   r  r  r   r   r   
startswithr  r   sumr   sort	enumerater  r  )r   r   r  r  r  r  clausesr   r  r  r  ir  s               @r   kusr;  i   sQ   4w{{C{$FKK'ID'IIRUGyy  M  NU  MV  VW  Z  nr  [s  ij  ^_  `a  _b  bc  \d  [s  t  }  }  $ a	!W13quu5F/G/M2+N+Y+YZq+rx  yBa$'SSTWkmnrrstsxsx  zJ  tK  LN  O1!!_1^ C.?(C$D$M$M$OO>&&>69CTY\Y`Y`a}Y~  BJ%%a.?SdSS1[>::a= ((DT(Rs3Bx".caQ1V9.	Sb	
 [s 	Ri	
  	
s6   ;G F>
,EG >G G+G. *G++G. .H c           	     4   t         j                  j                  t        dz   t	        j
                  | dd      j                         ddid      }	 t         j                  j                  |d	      5 }t	        j                  |j                               }d d d        g }t        j                  d
g       d      D ]  \  }}|j                  dd      |j                  d      d|dddd}	t        |j                  d      xs] |j                  d      xsJ |j                  d      xs7 |j                  d      xs$ |j                  d      xs |j                  d            |	d<   |j                  |	        |S # 1 sw Y   xY w# t        $ r g cY S w xY w)Nz/searchr   )querylimitContent-Typeapplication/jsonPOSTmethodr4  rz   resultsr  r   r   scorezgraphiti:/searchUNKNOWNunattributed_graph_factF)r   rF  rX   r  r	  provenance_statusr
  episode_uuidepisoder   source_description	timestampr   attribution_present)urllibrequestRequestGRAPHjsondumpsencodeurlopenloadsreadr8  r   r   r   	Exception)
r   r   r  reqr  r  r  r:  r   items
             r   graphr\  }   s   ^^E)ODJJ"7M,N,U,U,WYghzX{  DJ  K	~~c"-ITZZ5I1I#quuYr*1- cafR wAS[\kt  Jc  sx  	y4#AEE.$9  %yQUU9=M  %yQRQVQVWhQi  %ymnmrmr  tH  nI  %y  MN  MR  MR  S^  M_  %y  cd  ch  ch  ix  cy   z4::d	
 
* JI 	)s+   !F	 3$E=C%F	 =FF	 	FFc                  
 g }t         dz  t         dz  t         dz  t         dz  t         dz  g}|D ]  }|j                         s|j                  d      D ]  }|j                  dd	      }|j                         
t        
fd
t        D              st        
fddD              sS|dk(  rY|j                  dt        |j                  t                     z   t        |      |d d t        
fd|dk(  rt        n
t        |       D              dddd         |j                  d d       t        |d d d      D ]
  \  }}	||	d<    |d d S # t        $ r Y w xY w)Nz
LP-CONTEXTz03-ProjekteProjectszEmail-Agentz
AG-CONTEXTz*.mdutf8r   )encodingerrorsc              3  &   K   | ]  }|v  
 y wr   r~   )r   r   r   s     r   r   zobs.<locals>.<genexpr>   s     (1a3h(r   c              3  &   K   | ]  }|v  
 y wr   r~   r   s     r   r   zobs.<locals>.<genexpr>   s     4q!Q#X4qr   )r   r  r   	obsidian:  c              3  @   K   | ]  }j                  |        y wr   )r.  r   s     r   r   zobs.<locals>.<genexpr>   s3       uz  GHuxu~u~  @A  vB  uzs   r   r  Tr   )r   r   textr/  r	  r
  r  c                    | d   | d   fS )Nr/  r   r~   r2  s    r   r3  zobs.<locals>.<lambda>   s    +q):';< r   r   r   r  r  )VAULTexistsrglob	read_textOSErrorr   r   r   r   r   relative_tor6  r   r7  r8  )r   r   r  r  search_rootsrootpr   r:  r   r   s             @r   obsrr     s   u\)%*=eJ>NuUbObchiucuv pT	x::f pa	
fI	6qzz|3
((
(4qGp4q1qrzj::Su1E-F!FcRSf\]^c_c\dqt  uz  X^  `i  Xi  MT  ou  vw  ox  uz  rz  IQ  ae  mn  o  ppp <TJc#2hq!-SQqA!F)-CR (s   E	EEc                    | j                  d      r| d   S | j                  d      rd| d   z   S | j                  d      ry dt        | j                  d      xs | j                  d            z   S )Nr   
youtube_idr&  r   zunknown:rowidr  r   r   r2  s    r   identityrw     sf    EE
A&7$88EE,z!L/99EE&M3quuW~6v777r   c                    | j                  d      }|r|j                  d      r|S |r|j                  d      r|S |r|j                  d      r|S y )Nr   r%  rd  r&  )r   r5  )r   sids     r   evidence_idrz     sJ    UUCNN:&s
CNN;'CNN:&s
r   c                    t        | j                  d      xs d      }|dz   t        | j                  d      xs d      z   j                         }d|v rd|v ry| j                  d      rd	t        | d         z   S y )
Nr   r   r   r   r  )auftragsbestaetigung_projekt_eisen_ag2502z0family:projekt-eisen:auftragsbestaetigung-ag2502rz  zfamily:r   r   r   )r   ry  r   s      r   evidence_familyr~     s{     	!	'R(
3ws155)/R00::<dJdR	;EE-3q/?+@!@@r   c                   t        | j                  d      xs d      j                         }t        | j                  d      xs | j                  d      xs d      j                         }d|v xs
 d|v xs d|v }|xr | j                  d      dv }|rd	g|rd
gz   S g z   S | j                  d      dk(  s| j                  d      dk(  r|dk(  rdgS dgS | j                  d      dk(  rdgS dgS )Nr   r   r   r   r  r  document_type)rs   rn   rp   ro   rq   PROJECT_ONLY
HISTORICALlayerr_   r	  r'  r   COMPANY_GENERALCURRENT_UNVERIFIEDfts5r}  )r   r  ry  rg  r   
historicals         r   r   r      s    	!	'R(113#aeeK>P>jTUTYTYZcTd>jhj:k:t:t:vT
C

T#3s#:
TnPT>T}/3||^$
|nKKKKEE'NJ!%%"6	"A`fhq`qK\  KM  DM  xL  KM  DMEE'NF$8#99	r   c                l    t        | j                  d      xs d      }|j                         }d|v ry|S )Nr   r   r|  u   AG2502-Auftragsbestätigungr}  )r   ry  r   s      r   family_version_labelr     s6     	!	'R(\\^/36	&r   c                    	 t               }|j                  d| f      j                         }|j                          d|r|d   iS d iS # t        $ r i cY S w xY w)NzAselect document_type from kdata_documents where source_identity=?r  r   )r   r  fetchoner  rY  )identity_valuer  r  s      r   source_metar     s    D!AIIY[iZkluuw!yz  zA  zA  zC  M\  ef  ]^  _`  ]a  Lq  Eq  lp  Lq  Eq)s   AA	 A	 	AAc                 B    t         j                  j                  dd      S )NOPENROUTER_API_KEYr   )osenvironr   r~   r   r   envr     s    "**..!5b99r   c                   |syt               }|syt        j                  ddddddd	d
|  d| dgdd      j                         }t        j
                  j                  d|dd|z   dddd      }	 t        j
                  j                  |d      5 }t        j                  |j                               }d d d        d   d   d   j                  d      }t        |t              rdj                  d |D              }t        |xs d      j                         d fS # 1 sw Y   jxY w# t         $ r!}	dt#        |	      j$                  fcY d }	~	S d }	~	ww xY w) N)uE   Die vorhandenen Wissensquellen ermöglichen keine belastbare Antwort.insufficient_evidence)uN   Relevante Quellen wurden gefunden, aber die LLM-Synthese ist nicht verfügbar.llm_not_configuredzqwen/qwen3.7-flashg?re  systemu  Beantworte auf Deutsch streng quellengebunden. Nutze nur den erkannten Intent und die attribuierten Quellen. Trenne COMPANY_GENERAL/COMPANY_SUPPORTED von PROJECT_ONLY und HISTORICAL. Projektquellen sind starke Praxisbelege, beweisen aber allein kein allgemeines Portfolio. Stelle einzelne Projektpreise nie als allgemeine Standardpreise dar. Bei wenigen Projekten keine typischen, durchschnittlichen oder meistverkauften Werte ableiten; sage ausdrücklich, wenn die Datenbasis zu klein ist. Wenn Dokumente abweichen und kein Grund dokumentiert ist, sage nur: Die Dokumente zeigen unterschiedliche Darstellungen; der genaue Grund ergibt sich aus den vorliegenden Quellen nicht. Behaupte keine rechtliche Entity-Gleichheit ohne Beleg. Erfinde nichts.)roler   userzFrage: z\n\nMaterial:\n)modeltemperature
max_tokensmessagesF)ensure_asciiz-https://openrouter.ai/api/v1/chat/completionsr@  zBearer zhttp://127.0.0.1:8655zHermes Knowledge Query)r?  AuthorizationzHTTP-RefererzX-TitlerA  rB  Z   rD  choicesr   messager   r   c              3  v   K   | ]1  }t        |t              r|j                  d d      n
t        |       3 yw)rg  r   N)
isinstancer   r   r   r   s     r   r   zsynth.<locals>.<genexpr>   s1     -ref*QtBTaeeF2.>Z]^_Z`.`-rs   79znQuellen wurden gefunden, aber die LLM-Synthese ist fehlgeschlagen; es wird keine unbelegte Antwort ausgegeben.)r  rS  rT  rU  rO  rP  rQ  rV  rW  rX  r   r  r   r   r   striprY  type__name__)
r   ctxnr   bodyrZ  r  r  r   r   s
             r   synthr     s   	pUx
jj.Sdgo  {i  `j  sy  FM  NO  MP  Pb  cf  bg  Dh  ki  _j  k  y~    F  F  H^^KDas  EN  OR  ER  by  D\  R]  ek  l`~~c"-ITZZ5I1I
I,q/)
$
(
(
3'bgg-rjq-r&rg	W]		!	!	#D	(( JI 	  `  O  PT  UV  PW  P`  P`  `  `  `s7   5!D/ $D#:A(D/ #D,(D/ /	E8EEEc                   | xs dj                         }|st        d      t        d   rt        |      n	d d d ddddd}t        d   rt	        ||      nd	}t        |||      t        |||      t        |||      t        |||      t        |||      d
}g }dddd}|j                         D ]   \  }}t               }	|D ]  }
t        |
      }
t        |
      }||	v r|	j                  |       |dk(  r(t        d   r|
j                  d      s|dxx   dz  cc<   ]|dk(  rb|dv r^dt!        |
j                  dd            j#                         v s|
j                  d      dk(  r|j                  d      s|dxx   dz  cc<   |dk(  r$|dk(  r|
j                  d      s|dxx   dz  cc<   ||
d<   ||
d<   ||
d<   ||
d<   t%        |
      |
d <   |
j                  d!      xs t'        |      j                  d!      |
d!<   t)        |
      |
d"<   t+        |
|      |
d#<   t-        |
      |
d$<   dd%t/        |
j                  d&d'            z   z  |
d(<   |
j                  d)      d*k(  rd+n$t0        j                  |
j                  d!      d,      |
d-<   |
d(   |
d-   z  |
d.<   |j3                  |
         t        d/   s
t        d0   ri }i }|D ]  }
t        d0   r|
j                  d"      nd xsN |
j                  d       xs; d1t!        |
j                  d&            z   d2z   t!        |
j                  d            z   |j5                  g       j3                  |
       |vs|
d.   |   d.   kD  s|
|<    t7        |j9                         d3 d45      d d6 }|D ]  }
|j                  t        d0   r|
j                  d"      nd xsN |
j                  d       xs; d1t!        |
j                  d&            z   d2z   t!        |
j                  d            z   g       }t;        t        d7 |D                    |
d8<   |D cg c]%  }|j                  d      s|j                  d      ' c}|
d9<   t;        |      |
d:<    nt7        |d; d45      d d6 }g }|D ]1  }
|j3                  d<D ci c]  }||
j                  |       c}       3 g }|D ]R  }
|
d   dk(  r*|
j                  d=       d>|
j                  d?      xs d }nr|
d   d@k(  r|
j                  dA      xs dd dB }nQ|
d   dCk(  r|
j                  dD      xs d}n3|
d   dEk(  r|
j                  dF      xs d}n|
j                  dG      xs d}|j3                  dH|
d    dI|
j                  d       dJ|
j                  d"       dK|
j                  d)       dL|
j                  d!       dMdNj=                  |
j                  d#      xs g        dO|
j                  d&       dP|
j                  d        dQ|        U t?        |dRj=                  |      d dS t;        |            \  }}t;        t        dT |D                    }t;        t        dU |D                    }tA        dV |D              }d
D ci c]  tA        fdW|D               }}|||tC        d||z
        t;        |      dX||d   |d@   |dC   |d   |dE   dY}||rdZn|d[k\  rd\nd]|||||||tE        |      tG        |      |j                         D ci c]  \  }}|t;        |       c}}t;        |      ||t        ||||d^d_	S c c}w c c}w c c}w c c}}w )`Nr   zquestion darf nicht leer seinr   disabledr   Fr   r   r   )r  
kdata_fts5knowledge_unitsgraphitir_   r   )project_without_project_intentrH  non_entity_sourcer  r   rN  rH  r  r   )r  r  r  r   r   zEisen, Heinzr   r  r  r
  r  r  entity_resolutionr  rz  r  r~  r   version_label<   r    	rrf_scorer	  SYNTHETIC_TESTg?rm   quality_multiplierfusion_scorer   r   zgraph::c                T    | d   | j                  dd      | j                  dd       fS )Nr  r,  r  r  r  r   r2  s    r   r3  zask.<locals>.<lambda>   s2    Q~->quuEUVW?XZ[Z_Z_`fgjZkYk,l r   Tr   r   c              3  t   K   | ]0  }|j                  d       st        |j                  d              2 ywr   Nrv  )r   ms     r   r   zask.<locals>.<genexpr>   s.     $pqWXW\W\]nWoS/@)A%B$ps   88family_version_countfamily_membersrepresentation_countc                    | d   S )Nr  r~   r2  s    r   r3  zask.<locals>.<lambda>   s    1^+< r   )r  r   r	  r  r  rF  r  r  rz  r~  r  r  r  r   r  r   r   r   source_locatorr   r   rI  r   z | r   r  r   i  r  r   r_   rg  r   [|z|family=z|kind=z|doc=z|scope=,z|rank=z|evidence_id=z]
z

i]  c              3  b   K   | ]'  }|j                  d       s|j                  d        ) ywr  r  r   s     r   r   zask.<locals>.<genexpr>  s&     \1155IZC[aee-.\s   //c              3     K   | ];  }|j                  d       xs$ |j                  d      xs |j                  d       = yw)r~  rz  r   Nr  r   s     r   r   zask.<locals>.<genexpr>  s;     tghaee-.b!%%2Fb!%%PaJbbts   AAc              3  @   K   | ]  }|j                  d d        yw)r  r  Nr  r   s     r   r   zask.<locals>.<genexpr>  s     Ka!%% 6q9Ks   c              3  L   K   | ]  }|j                  d       k(  sd  yw)r  r  Nr  )r   r   r   s     r   r   zask.<locals>.<genexpr>	  s      =1155>1+<Q=s   $$)source_countevidence_family_countr  duplicate_representationsfinal_context_count)
fts5_countkdata_fts5_countknowledge_unit_countgraphiti_countobsidian_countinsufficient   	supportedr   )questionr   expanded_tokensraw_candidate_countsr  distinct_source_countfinal_contextfeature_flagsmetadata_v2r  r  r  )	answerr   warningr  r  rejected_candidatesrY   sourcesr`   )$r  
ValueErrorr  r   r   r  r  r;  r\  rr  itemssetr   rw  addr   r   r   rz  r  r~  r   r  float
DOC_WEIGHTr   
setdefaultr   r   r   r   r  r6  maxr   r   )r  r   r   r  rawallrowsrejectedr  r  seenr   identbestr  rM   membersr  r  r   blockspayloadr  r  r  family_countr  layer_countsmetadatavs                     `          r   askr     s
   N	;<< 12^Ateiz~  MW  ek  x}  MR  9S 13y3vD3v,>QTUVWZ[aQbnstuvy  {A  oB  NQ  RS  TW  X^  N_  `	TUjklX99; OZU4
u$ Oa	!W1HQKetmH88E?ZE"<=aeeLaFb&'*'HiE%EE>]`abafafgxy{a|]}  ^G  ^G  ^I  LI  MN  MR  MR  S\  M]  _m  Mm  wz  w~  w~  [  w\-.1.8iE6M!%%2G !1$!h1W:%Q()3F1GY_Qx[N1]quu_7M7xQ\]bQcQgQghwQxAo$6'*1'&11*1-1_RaeeF3/0011[>!"}!57G!G2Z^^\]\a\abq\rsvMw1{^A&:$;;1^W^^A=N#OO( 

5):#;	$. Ka"'(9":aee  W}I]  Wbjknopototu{o|k}b}  B  cB  CF  GH  GL  GL  MT  GU  CV  cV1Qr"))!,tmq(a)@@aK #luy
z{~|~
' *a5AR;Squu%67Y]  pbcbgbghubv  p  |D  EH  IJ  IN  IN  OU  IV  EW  |W  X[  |[  \_  `a  `e  `e  fm  `n  \o  |o  qs  t7 $pG$p!pq1:A^QQUUK\E]/0^1 \1	*
 g"<TJ3BOw	
 dQ	..  'b  c!AEE!H*  c  dd

 MQwZAEE'N#33quuY7G7M26N!Oz<!%%	*:*@b%4)Hz$$aeeK.@.FBgz:quuV}':wf#--!AgJ<q'8!9 :(155IZC[B\\bcdchchivcwbxx}~  D  D  ET  U  ~V  V]  ^a  ^f  ^f  gh  gl  gl  m~  g  gE  CE  ^F  ]G  GM  NO  NS  NS  TZ  N[  M\  \i  jk  jo  jo  p}  j~  i  B  CJ  BK  L  MM aF+FU3CLA#\\\]#tlsttuK7KK HE  F!q====  F  F&|cw  UX  YZ  [o  p|  [|  U}  TW  X_  T`  K  co  K  }I  JP  }Q  eq  r~  e  Wc  du  Wv  HT  U_  H`  r~  I  rJ  KnUacdUdkjr  F  [^  hn  EM  Y\  gn  GH  RX  YZ  R[  nv  wx  ny  fi  fo  fo  fq  Qr  _b  _`  ab  RS  TW  XY  TZ  RZ  Qr  IL  MT  IU  nz  KR  ch  w  O[  t@	  X	l	  {m	  	n	  n	) _
 c F Qrs   9]]"]
]#&]()/__doc__
__future__r   rS  r  r   r{   urllib.requestrO  pathlibr   r  r   r}   ri  rR  r  r   r   r   compileIr   r   r   r  r   r   r   r   r   r   r  r  r  r;  r\  rr  rw  rz  r~  r   r  r  r  r  r  r~   r   r   <module>r     sH   # , , , ::>>.!NO
 !jjnn^$;<JJNN#>sCSH**..!:3?DZZ^^,PQTUWZZZZ^^$@EsJzz~~&DSI3NJJNN#4S93>JJNN#4S93>

'<SA3F**..)@EsJ
	 ,	?2::,RTT2
 U}  Kr  }  MO  ^c  mZ  qj	  t	m
  {
t  Er  s	#'4TY]ux  DF  X[  dg  rt  u
 J i& g	a
D*(8

 :`:n	r   