yumoqing 6c51e98108 Fix: per-user WebSocket push and file-based skill search in reasoning engine
- Replace shared ws_push callback with per-user ws_push_callbacks dict
  to prevent cross-user event leakage in concurrent sessions
- Add _current_user_id and _current_org_id tracking for user isolation
- Pass context parameter to harnessed_execute_tool for user isolation
- Add _search_skill_dir to search file-based skills in user and shared
  directories alongside DB-based skills
- Update _find_relevant_skills to search three sources: DB skills,
  user skills (~/.hermes/users/{id}/skills/), and shared skills
  (~/.hermes/skills/), with deduplication by skill name
- Update all _push() calls to pass user_id for per-user routing
- Update reasoning_console.wss to register per-user callbacks
- Clean up _current_user_id/_current_org_id in finally block
2026-05-13 13:41:42 +08:00
..