fix: parse execute_immediately from frontend boolean/string correctly
- Support 'true', '1', 'yes' for execute_immediately parameter - Previously 'true' == '1' evaluated to False, blocking execution - Fix session storage: clean datetime objects before json.dumps
This commit is contained in:
parent
356544853a
commit
dfa350737a
@ -603,25 +603,36 @@ class HermesReasoningEngine:
|
||||
plan: Dict, violations: List, status: str):
|
||||
"""Store reasoning session in database."""
|
||||
try:
|
||||
# Ensure plan is serializable
|
||||
plan_str = json.dumps(plan, ensure_ascii=False, default=str)
|
||||
# Clean plan object to ensure JSON serializability
|
||||
def clean_plan(obj):
|
||||
if isinstance(obj, dict):
|
||||
return {k: clean_plan(v) for k, v in obj.items()}
|
||||
elif isinstance(obj, list):
|
||||
return [clean_plan(i) for i in obj]
|
||||
elif isinstance(obj, datetime):
|
||||
return obj.isoformat()
|
||||
return obj
|
||||
|
||||
clean_plan_obj = clean_plan(plan)
|
||||
|
||||
data = {
|
||||
'id': session_id,
|
||||
'user_id': user_id,
|
||||
'initial_request': request,
|
||||
'context_summary': '',
|
||||
'execution_plan_json': plan_str,
|
||||
'execution_plan_json': json.dumps(clean_plan_obj, ensure_ascii=False),
|
||||
'reasoning_steps_json': '[]',
|
||||
'safety_violations_json': json.dumps(violations, ensure_ascii=False),
|
||||
'final_decision_json': json.dumps({'status': status}),
|
||||
'status': status,
|
||||
'created_at': datetime.now(),
|
||||
'updated_at': datetime.now(),
|
||||
'created_at': datetime.now().isoformat(),
|
||||
'updated_at': datetime.now().isoformat(),
|
||||
}
|
||||
async with self.db.sqlorContext('default') as sor:
|
||||
await sor.C('harnessed_reasoning_sessions', data)
|
||||
res = await sor.C('harnessed_reasoning_sessions', data)
|
||||
info(f"Session stored: {session_id}, result={res}")
|
||||
except Exception as e:
|
||||
warning(f"Failed to store session: {e}")
|
||||
error(f"Failed to store session details: {e}")
|
||||
|
||||
async def _update_session_status(self, session_id: str, status: str):
|
||||
"""Update session status."""
|
||||
|
||||
@ -11,7 +11,8 @@ try:
|
||||
result['options'] = {'title': 'Error', 'message': '请输入推理请求', 'type': 'error'}
|
||||
else:
|
||||
user_id = await get_user()
|
||||
execute_immediately = params_kw.get('execute_immediately', '1') == '1'
|
||||
execute_val = str(params_kw.get('execute_immediately', '1')).lower()
|
||||
execute_immediately = execute_val in ('1', 'true', 'yes', 'on')
|
||||
|
||||
# Call the reasoning engine from ServerEnv
|
||||
reasoning_result = await hermes_reason_and_execute(
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user