set -euo pipefail docker exec -i im-admin-knowledge-worker-1 python - <<'PY' import copy,json,time from pathlib import Path import admin_backend,model_gateway from knowledge_worker import enhance database=admin_backend.Database(Path('/data/backend.db')) with database.connect() as db: row=db.execute("SELECT * FROM knowledge_job WHERE id=?",('2a5c16ea559b4d5c890943fc0a541dba',)).fetchone() if row is None: raise SystemExit('Target job not found') job=dict(row); options=json.loads(job['options_json']); pending=json.loads(job['state_json']).get('_pending',[]) print(json.dumps({'id':job['id'],'status':job['status'],'processed':job['processed'],'created_items':job['created_items'], 'model_calls':job['model_calls'],'max_model_calls':options.get('max_model_calls'),'error':job['error'], 'provider':options.get('model_provider_id'),'pending_count':len(pending), 'pending_lengths':[{k:len(c.get(k,'')) for k in ('question','answer')} for c in pending]},ensure_ascii=False),flush=True) if job['status']!='failed' or not pending or job['model_calls']>=options['max_model_calls']: raise SystemExit(0) original=model_gateway.call_outlet async def inspect(*args,**kwargs): result=await original(*args,**kwargs) raw=result.get('text','').strip() if raw.startswith('```'): raw=raw.split('\n',1)[-1].rsplit('```',1)[0] try: data=json.loads(raw) except ValueError: data=None summary={'output_chars':len(raw),'provider_error':bool(result.get('error')),'json_object':isinstance(data,dict)} if isinstance(data,dict): summary['fields']={k:{'type':type(data.get(k)).__name__,'length':len(data[k].strip()) if isinstance(data.get(k),str) else None,'present':k in data} for k in ('title','question','answer','conditions','category','kind')} summary['valid_kind']=data.get('kind') in ('qa','procedure','case') print(json.dumps(summary,ensure_ascii=False),flush=True) return result model_gateway.call_outlet=inspect started=time.monotonic() try: enhance(copy.deepcopy(pending[0]),database,options) print(json.dumps({'reproduction':'passed','seconds':round(time.monotonic()-started,2)}),flush=True) except ValueError as error: print(json.dumps({'reproduction':'failed','safe_validation_error':str(error),'seconds':round(time.monotonic()-started,2)},ensure_ascii=False),flush=True) PY