Compare commits

..

2 Commits

Author SHA1 Message Date
e8939be04e debug: enhance diagnostic logging to detect args field in tool_calls
Added more detailed logging to identify if DeepSeek responses include
both 'function.arguments' and 'args' fields, or if tool_calls are
objects vs dicts, to understand why parse_tool_call isn't converting
string args to dict as expected.
2025-11-06 12:00:08 -05:00
2e0cf4d507 docs: add v0.5.0 roadmap for performance metrics and status APIs
Added new pre-v1.0 release (v0.5.0) with two new API endpoints:

1. Performance Metrics API (GET /metrics/performance)
   - Query model performance over custom date ranges
   - Returns total return, trade count, win rate, daily P&L stats
   - Enables model comparison and strategy evaluation

2. Status & Coverage Endpoint (GET /status)
   - Comprehensive system status in single endpoint
   - Price data coverage (symbols, date ranges, gaps)
   - Model simulation progress (date ranges, completion %)
   - System health (database, MCP services, disk usage)

Updated version history:
- Added v0.4.0 (current release)
- Added v0.5.0 (planned)
- Renamed v1.3.0 to "Advanced performance metrics"

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-06 11:41:21 -05:00
2 changed files with 25 additions and 13 deletions

View File

@@ -679,11 +679,13 @@ To propose a new feature:
- **v0.1.0** - Initial release with batch execution
- **v0.2.0** - Docker deployment support
- **v0.3.0** - REST API, on-demand downloads, database storage (current)
- **v0.3.0** - REST API, on-demand downloads, database storage
- **v0.4.0** - Daily P&L calculation, day-centric results API, reasoning summaries (current)
- **v0.5.0** - Performance metrics & status APIs (planned)
- **v1.0.0** - Production stability & validation (planned)
- **v1.1.0** - API authentication & security (planned)
- **v1.2.0** - Position history & analytics (planned)
- **v1.3.0** - Performance metrics & analytics (planned)
- **v1.3.0** - Advanced performance metrics & analytics (planned)
- **v1.4.0** - Data management API (planned)
- **v1.5.0** - Web dashboard UI (planned)
- **v1.6.0** - Advanced configuration & customization (planned)
@@ -691,4 +693,4 @@ To propose a new feature:
---
Last updated: 2025-11-01
Last updated: 2025-11-06

View File

@@ -51,16 +51,26 @@ class ToolCallArgsParsingWrapper:
message = choice['message']
print(f" Message keys: {list(message.keys())}")
if 'tool_calls' in message and message['tool_calls']:
print(f" tool_calls count: {len(message['tool_calls'])}")
for i, tc in enumerate(message['tool_calls'][:2]): # Show first 2
print(f" tool_calls[{i}] keys: {list(tc.keys())}")
if 'function' in tc:
print(f" function keys: {list(tc['function'].keys())}")
if 'arguments' in tc['function']:
args = tc['function']['arguments']
print(f" arguments type: {type(args).__name__}")
print(f" arguments value (first 100 chars): {str(args)[:100]}")
# Check for raw tool_calls in message (before parse_tool_call processing)
if 'tool_calls' in message:
tool_calls_value = message['tool_calls']
print(f" message['tool_calls'] type: {type(tool_calls_value)}")
if tool_calls_value:
print(f" tool_calls count: {len(tool_calls_value)}")
for i, tc in enumerate(tool_calls_value): # Show ALL
print(f" tool_calls[{i}] type: {type(tc)}")
print(f" tool_calls[{i}] keys: {list(tc.keys()) if isinstance(tc, dict) else 'N/A'}")
if isinstance(tc, dict):
if 'function' in tc:
print(f" function keys: {list(tc['function'].keys())}")
if 'arguments' in tc['function']:
args = tc['function']['arguments']
print(f" function.arguments type: {type(args).__name__}")
print(f" function.arguments value: {str(args)[:100]}")
if 'args' in tc:
print(f" ALSO HAS 'args' KEY: type={type(tc['args']).__name__}")
print(f" args value: {str(tc['args'])[:100]}")
# Fix tool_calls: Normalize to OpenAI format if needed
if 'choices' in response_dict: