
    j                         d Z ddlZddl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	d      Z
 e	d      Z ej                  d      Zd Zd Zed	k(  r e e             y)
zFRun the explicit Hermes VPS knowledge-closure command for one session.    N)Pathz/home/hermes/.hermesz0/opt/struktur/session-knowledge-review/review.dbu   (?i)\b(wissen\s+(?:dieser\s+)?session\s+aufbereiten\s+und\s+session\s+abschließen|wissensabschluss|session\s+(?:für|fuer)\s+wissen\s+abschließen|session\s+abschließen)\bc                     t        | xs d      D ]J  \  }}|dk(  s	 t        j                  | || j                  d      dz          }t	        |t
              r|c S L y #  Y RxY w)N {}   )	enumeratejsonloadsrfind
isinstancedict)sichxs       C/opt/struktur/session-knowledge-review/session_knowledge_closure.pyparser      sj    qwB TQrW
jj1QWWS\!^$%A!D(	 	 $s   ;AA"c                  
   t        j                         } | j                  dd       | j                  dd       | j                  dd	       | j                         }t        d
z  |j
                  z  dz  }t        j                  |      }t        j                  |_	        |j                  d|j                  f      j                         }|st        d      t        j                  t              }|j                  d       |j                  d|j
                  dz   |j                  z   f      j                         }|r|d   dk(  rd|j                  d}|j                  rdt!        j"                  g dddd      }|j$                  |d<   |j$                  dk(  rdnd|d<   |j&                  dd  |d<   |j(                  dd  |d<   t+        t-        j.                  |d             y|j                  d |j                  f      j1                         }	d!j3                  d" |	D              d#d  }
d$|j                  z   d%z   |
z   }g d&}	 t!        j"                  ||ddd'(      }|j&                  |j&                  j5                  d)      d  j7                         }|j$                  dk7  s|st9        d*|j(                  d+d  z         t;        d,      j=                  |j?                               jA                         }tC        jB                         }|j                  d-|j                  d.||d/f       |j                  d0|d1||j                  f       |jE                          |j                  d2|j
                  dz   |j                  z   |j                  |j
                  d|d3d |f       |jE                          t!        j"                  d4d5d6d|j                  d7d8gddd9      }d|j                  ||j$                  tG        |j&                        xs |j&                  dd  d:}|j                  rdt!        j"                  g dddd      }|j$                  |d<   |j$                  dk(  rdnd|d<   |j&                  dd  |d<   |j(                  dd  |d<   t+        t-        j.                  |d             y# tH        $ r}|j                  d2|j
                  dz   |j                  z   |j                  |j
                  dd d3tK        |      d f       |jE                          t+        t-        j.                  dtK        |      d;d             Y d }~y<d }~ww xY w)=Nz--session-idT)requiredz	--profile	hermesvps)defaultz
--pipeline
store_true)actionprofileszstate.dbz!select * from sessions where id=?SESSION_NOT_FOUNDzcreate table if not exists knowledge_editor_closures (session_key text primary key, session_id text, profile text, status text, completed_at real, editor_profile text, error text, handoff_hash text)z@select status from knowledge_editor_closures where session_key=?:r   	COMPLETEDALREADY_COMPLETED)status
session_id)sudoz-nz&/usr/local/sbin/hermes-project-controlrestartservicez#obsidian-knowledge-pipeline.servicex   )textcapture_outputtimeoutpipeline_start_exitFAILEDpipeline_statusi0pipeline_trigger_stdoutpipeline_trigger_stderrF)ensure_asciiz@select role,content from messages where session_id=? order by idz

c              3   Z   K   | ]#  }|d    j                          d|d   xs d  % yw)r   z: r   r   N)upper).0rs     r   	<genexpr>zmain.<locals>.<genexpr>   s       Gv  lm  KL  MN  KO  KU  KU  KW  JX  XZ  [\  ]^  [_  [e  ce  Zf  Hg  Gvs   )+i@+up  Erstelle ausschließlich eine strukturierte SESSION-WISSENSÜBERGABE aus dem folgenden Sessioninhalt. Keine neuen Fakten. Trenne bestätigte Erkenntnisse von Arbeitsaufträgen und Zwischenständen. Ausgabe exakt mit Überschrift SESSION-WISSENSÜBERGABE und den Kategorien Projekt, Session-ID, Dauerhaft relevante Erkenntnisse, Bestätigte Architektur-/Prozessentscheidungen, Produktive Pfade/Konfigurationen, Bestätigte Fehlerursachen/Reparaturen, Dauerhafte Rollen/Zuständigkeiten, Offene bzw. nicht bestätigte Punkte, Nicht dauerhaft relevante Zwischenstände. Leere Kategorien als „keine“ markieren.

SESSION-ID: 
)r"   z-uhermesenvzHOME=/home/hermeszUSER=hermeszLOGNAME=hermesz/home/hermes/.local/bin/hermesz-pwissensredakteurchatz	--oneshotz-Qz--query-file-   )inputr&   r'   r(   u   SESSION-WISSENSÜBERGABEzEDITOR_FAILED:ihashlibzVinsert into messages(session_id,role,content,timestamp,display_kind) values(?,?,?,?,?)	assistantknowledge_handoffzgupdate sessions set ended_at=?,end_reason=?,message_count=message_count+1,last_activity_at=? where id=?knowledge_closurezHinsert or replace into knowledge_editor_closures values(?,?,?,?,?,?,?,?)r7   python3z2/opt/struktur/session-knowledge-review/reviewer.pyz--oncez--agent-limit25i,  )r    r!   handoff_hashreviewer_exitreviewer_output)r    errorr   )&argparseArgumentParseradd_argument
parse_args
STATE_ROOTprofilesqlite3connectRowrow_factoryexecuter!   fetchone
SystemExitREVIEWpipeline
subprocessrun
returncodestdoutstderrprintr
   dumpsfetchalljoinfindstripRuntimeError
__import__sha256encode	hexdigesttimecommitr   	Exceptionstr)apadbpcrowrcoldresultpimsgs
transcriptpromptcmdphandoffhnowrres                      r   mainr|      s   boondoKBOO\gp{OL|}  ~M  ~M  NZ  bn  ~M  ~o  rt  r  r  rA  pq
199$Z/7??33GV]VaVaYY2ALL?CLLN:122OOFBJJ  (t  u  z|  zD  zD  EG  IJ  IR  IR  SV  IV  WX  Wc  Wc  Ic  He  zf  zo  zo  zq  vyCFK&ALL	A&ZZnn  F  LP  `d  mp  q2!#6
 ,.MM1,<[(6
%'YYuv%66
#$%'YYuv%66
#$

6u-.aiiRTUT`T`Sbclln  |B  |G  |G  Gv  qu  Gv  |v  w~  w  |@pz 	A
  B
C
  B
N
  B
N
  	N
  O
S
  	S
  T
^
  	^
 yX NN3VT#N!WXW_W_`a`h`h`m`m  oI  aJ  aK  XL  XR  XR  XTw\\1_G<8HRVRW8X+Y%Yy  !12<<>!DIIKPQPYPY  [s  uv  uA  uA  BM  NU  VY  Zm  tn  Qo  pq  py  py  zc  eh  i|  }@  AB  AM  AM  dN  pO  PQ  PX  PX  PZ  []  [e  [e  fp  rs  r{  r{  |  r  @A  @L  @L  rL  MN  MY  MY  Z[  Zc  Zc  do  ps  tF	  G	K	  L	M	  qN	  [O	  P	R	  P	Y	  P	Y	  P	[	^^YST\]klmlxlx  zI  JN  O  UY  im  vy  z"ALLZ\ZgZgz  AC  AJ  AJ  {K  {`  OQ  OX  OX  Y^  Y_  O`  
a&ZZ nn  F  LP  `d  mp  q2!#6
 ,.MM1,<[(6
%'YYuv%66
#$%'YYuv%66
#$

6u-.a X**WYZYbYbcfYfghgsgsYstu  uA  uA  BC  BK  BK  LT  UY  Zl  mp  qr  ms  tx  Yy  z  {}  {D  {D  {F  GL  MQ  MW  MW  bj  sv  wx  sy  Xz  HM  MN  GO  WXXs   I)R2 2	U;BUU__main__)__doc__rF   r
   osrerL   rU   re   pathlibr   rJ   rS   compileTRIGGERSr   r|   __name__rR        r   <module>r      sh    L 2 2 2 2 &'
5g0h	  E  
F&XN Zj00r   