- Extend Message model with optional tool_calls and tool_call_id fields for OpenAI compatibility
- Update add_assistant_message to accept and forward tool_calls parameter
- Refactor add_tool_result to store raw result string with tool_call_id instead of JSON wrapper
- Add _prepare_message_for_api helper to convert internal Message to OpenAI API format
- Fix ToolCall.function to allow None default for missing function definitions
- Adjust tool execution in PyrApp to access function name/arguments as dict keys