import sqlite3,json,hashlib
from pathlib import Path
q=sqlite3.connect('file:/opt/struktur/obsidian-graphiti-import/obsidian_graphiti_import.db?mode=ro',uri=True); q.row_factory=sqlite3.Row
print('COUNTS',dict(q.execute('select status,count(*) from files group by status').fetchall()))
for r in q.execute('select id,status,last_error,last_error_phase,graphiti_episode_uuid,attempts from files where id in (3,11)'): print('QUEUE',dict(r))
q.close(); r=sqlite3.connect('file:/opt/struktur/graphiti/request-data/requests.db?mode=ro',uri=True); r.row_factory=sqlite3.Row
for x in r.execute("select request_id,run_id,queue_id,status,http_status,llm_request_count,episode_uuid,error_phase,error_message,started_at,completed_at from graphiti_requests where queue_id in ('3','11') order by rowid"): print('REQUEST',dict(x))
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()
print('BLOCK',json.load(open('/opt/struktur/obsidian-graphiti-import/import_run_block.json')))
print('PROVIDER',json.load(open('/opt/struktur/obsidian-graphiti-import/provider_state.json')))
p=Path('/opt/struktur/knowledge-pipeline-aggregator-staging/AA-RETRY-RECOVERY-FINAL.md'); print('REPORT_SHA',hashlib.sha256(p.read_bytes()).hexdigest()); print('REPORT_TAIL',p.read_text()[-1400:])