- 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
- Restore datetime objects instead of isoformat strings for db driver handling
- Print full traceback when session storage fails to identify exact error source
- Replace all sor.sqlExe(ORDER BY/LIMIT) with sor.R(ns={sort:...}) pattern
- _get_config: add user_id parameter and filter
- _find_relevant_skills: use sor.R with $or and $like filters
- list_reasoning_sessions: use sor.R with ns sort and Python slicing
- All queries now include user_id filter for multi-user isolation
- Add detailed logging to _llm_call method
- Improve _parse_plan_json to handle more LLM response formats
- Show LLM error messages in reasoning_submit.dspy
- Better error handling and fallback for JSON parsing
- Rewrite core.py: all mock implementations replaced with real calls
* _generate_plan() uses llm_chat from harnessed_agent for LLM-based planning
* _execute_tool() calls harnessed_execute_tool for real tool execution
* _get_memory_context() calls harnessed_get_intelligent_memory_context
* _safety_check() with configurable strict/moderate/lenient modes
* _try_recovery() for auto-recovery on common failures
* All session persistence uses real database operations
- Fix reasoning_console.ui: uitype 'textarea' -> 'text' per bricks spec
- Add .gitignore
The reasoning module now:
1. Calls LLM to analyze user request and generate execution plan
2. Safety-checks the plan before execution
3. Executes tools via harnessed_agent's tool system
4. Recovers from common errors automatically
5. Stores session history in database