4.3 KiB
4.3 KiB
Mistral API Logging Changes
Overview
Added comprehensive logging to debug and monitor Mistral API calls in the planning phase. All logs now output to container logs using console.log() and console.error() for easy debugging.
Changes Made
1. Enhanced sendMistralChat() Function (lines 3187-3276)
Added detailed logging at every stage:
-
Request Initialization:
- Logs API URL, model, message count
- Shows API key status and prefix (first 8 chars for debugging)
-
Response Handling:
- Logs HTTP status, headers, and response OK status
- Logs detailed response structure inspection
- Shows if choices/message/content exist in response
- Logs content length and preview (first 200 chars)
-
Error Handling:
- Logs full error response body on HTTP errors
- Logs fetch errors with stack traces
- Alerts when response has no content
Example log output:
[MISTRAL] Starting API request { url: '...', model: 'mistral-large-latest', messageCount: 3 }
[MISTRAL] Response received { status: 200, ok: true }
[MISTRAL] Response data structure { hasChoices: true, choicesLength: 1, hasContent: true, contentLength: 523 }
[MISTRAL] Successfully extracted reply { replyLength: 523, replyPreview: '...' }
2. Enhanced sendMistralPlanWithFallback() Function (lines 3366-3410)
Added fallback chain logging:
- Logs full model chain before attempting
- Logs each model attempt
- Logs success/failure for each model
- Shows why fallback was triggered or broken
- Logs final failure with all attempts
Example log output:
[MISTRAL] Starting fallback chain { preferredModel: '', chainLength: 2, models: [...] }
[MISTRAL] Trying model: mistral-large-latest
[MISTRAL] Plan succeeded on first try { model: 'mistral-large-latest' }
3. Enhanced handlePlanMessage() Function (lines 3460-3593)
Added end-to-end planning logging:
- Logs plan chain configuration at start
- Logs each provider attempt
- Logs provider limits and skips
- Logs detailed Mistral result inspection
- Logs final success with reply preview
- Logs comprehensive error info with stack traces
Example log output:
[PLAN] Starting plan message handling { sessionId: '...', planChainLength: 2, providers: [...] }
[PLAN] Trying provider { provider: 'mistral', model: '' }
[PLAN] Using Mistral provider { modelHint: '', messagesCount: 3 }
[PLAN] Mistral result received { hasResult: true, hasReply: true, replyLength: 523, model: '...' }
[PLAN] Provider succeeded { provider: 'mistral', model: '...', replyLength: 523, replyPreview: '...' }
[PLAN] Plan message completed successfully { sessionId: '...', provider: 'mistral', model: '...' }
4. Bootstrap Configuration Logging (lines 6590-6615)
Added provider configuration display on server startup:
- Shows OpenRouter configuration
- Shows Mistral configuration (API key status, models, URL)
- Shows planning settings
- Helps verify environment setup
Example output:
=== PROVIDER CONFIGURATION ===
[CONFIG] OpenRouter: { configured: true, apiUrl: '...', primaryModel: '...' }
[CONFIG] Mistral: { configured: true, apiUrl: '...', primaryModel: '...', hasApiKey: true, apiKeyPrefix: 'sk_test_...' }
[CONFIG] Planning Settings: { provider: 'mistral', planningChainLength: 2, planningChain: [...] }
==============================
Log Prefixes
All logs use consistent prefixes for easy filtering:
[MISTRAL]- Mistral API-specific operations[PLAN]- Plan message handling[CONFIG]- Configuration at startup
Benefits
- Debugging: Full visibility into API request/response cycle
- Monitoring: Easy to track provider performance
- Troubleshooting: Detailed error messages with context
- Configuration Validation: Startup logs verify settings
- Container Logs: All output goes to stdout/stderr for Docker log collection
Testing
To verify logging works:
- Start the container
- Watch logs:
docker logs -f <container_name> - Send a plan message through the builder
- You should see detailed logs for each step
Common Issues Debuggable Now
- Empty responses: Logs will show if API returns no content
- Wrong response format: Structure inspection shows what fields exist
- API errors: Full error body and status logged
- Fallback chain: See exactly which models are tried and why they fail
- Configuration issues: Startup logs show if API keys/models are set