Explorer
/tmp/aa035_verify.py
← Zurück ↓ Download
import sqlite3,json,urllib.request
from pathlib import Path
Q='/opt/struktur/obsidian-graphiti-import/obsidian_graphiti_import.db'; R='/opt/struktur/graphiti/request-data/requests.db'; EV='/opt/struktur/graphiti/request-data/processing-events.jsonl'
q=sqlite3.connect('file:'+Q+'?mode=ro',uri=True); q.row_factory=sqlite3.Row; row=dict(q.execute('select id,relative_path,status,attempts,last_attempt,last_error,last_error_phase,graphiti_status,graphiti_episode_name,graphiti_episode_uuid,updated_at,import_key,content_hash from files where id=11').fetchone()); print('QUEUE',json.dumps(row,ensure_ascii=False)); q.close()
r=sqlite3.connect('file:'+R+'?mode=ro',uri=True); r.row_factory=sqlite3.Row; req=dict(r.execute("select request_id,run_id,queue_id,started_at,completed_at,status,http_status,llm_request_count,model,provider,error_phase,error_message,terminal_reason,recovery_result,episode_uuid from graphiti_requests where queue_id='11' order by rowid desc limit 1").fetchone()); print('REQUEST',json.dumps(req,ensure_ascii=False)); print('TOTAL_REQUESTS',r.execute('select count(*) from graphiti_requests').fetchone()[0]); print('ACTIVE',r.execute("select count(*) from graphiti_requests where status in ('started','processing')").fetchone()[0]); r.close()
rid=req['request_id']; ev=[]
for line in Path(EV).read_text(errors='replace').splitlines():
 try:
  x=json.loads(line)
  if x.get('request_id')==rid: ev.append(x)
 except: pass
print('EVENT_COUNT',len(ev));
for x in ev:
 if x.get('phase','').startswith('llm_call') or x.get('phase') in ['edge_extraction','edge_completed','neo4j_write_commit','graphiti_processing','worker_process']:
  print('EVENT',json.dumps({k:x.get(k) for k in ['phase','graphiti_phase','llm_call_index','outcome','input_tokens','output_tokens','finish_reason','native_finish_reason','error_class','timeout_reason','duration_ms','max_tokens','request_id','edge_index','edge_total','error_message','error_reason']},ensure_ascii=False))
# episode check using current queue fields
payload=json.dumps({'name':'obsidian_'+row['import_key'],'import_key':row['import_key'],'obsidian_path':row['relative_path'],'content_hash':row['content_hash']}).encode(); u=urllib.request.Request('http://127.0.0.1:8644/episodes/check',data=payload,headers={'Content-Type':'application/json'}); print('EPISODE_CHECK',urllib.request.urlopen(u,timeout=30).read().decode())
print('HEALTH',urllib.request.urlopen('http://127.0.0.1:8644/health',timeout=30).read().decode())
print('BLOCK',Path('/opt/struktur/obsidian-graphiti-import/import_run_block.json').read_text())