# SmartAI Project Hints ## Dependencies - Uses `@git.zone/tstest` v3.x for testing (import from `@git.zone/tstest/tapbundle`) - `@push.rocks/smartfs` v1.x for file system operations - `@anthropic-ai/sdk` v0.71.x with extended thinking support - `@mistralai/mistralai` v1.x for Mistral OCR and chat capabilities - `openai` v6.x for OpenAI API integration - `@push.rocks/smartrequest` v5.x - uses `response.stream()` + `Readable.fromWeb()` for streaming ## Important Notes - When extended thinking is enabled, temperature parameter must NOT be set (or set to 1) - The `streamNode()` method was removed in smartrequest v5, use `response.stream()` with `Readable.fromWeb()` instead ## Provider Capabilities Summary | Provider | Chat | Stream | TTS | Vision | Documents | Research | Images | |--------------|------|--------|-----|--------|-----------|----------|--------| | OpenAI | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | Anthropic | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | | Mistral | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | | ElevenLabs | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | | Ollama | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | | XAI | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | | Perplexity | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | | Groq | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | | Exo | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ## Mistral Provider Integration ### Overview The Mistral provider supports: - **Document AI** via Mistral OCR (December 2025) - native PDF processing without image conversion - **Chat capabilities** using Mistral's chat models (`mistral-large-latest`, etc.) ### Key Advantage: Native PDF Support Unlike other providers that require converting PDFs to images (using SmartPdf), Mistral OCR natively accepts PDF documents as base64-encoded data. This makes document processing potentially faster and more accurate for text extraction. ### Configuration ```typescript import * as smartai from '@push.rocks/smartai'; const provider = new smartai.MistralProvider({ mistralToken: 'your-token-here', chatModel: 'mistral-large-latest', // default ocrModel: 'mistral-ocr-latest', // default tableFormat: 'markdown', // 'markdown' or 'html' }); await provider.start(); ``` ### API Key Tests require `MISTRAL_API_KEY` in `.nogit/env.json`. ## Anthropic Extended Thinking Feature ### Configuration Extended thinking is configured at the provider level during instantiation: ```typescript import * as smartai from '@push.rocks/smartai'; const provider = new smartai.AnthropicProvider({ anthropicToken: 'your-token-here', extendedThinking: 'normal', // Options: 'quick' | 'normal' | 'deep' | 'off' }); ``` ### Thinking Modes | Mode | Budget Tokens | Use Case | | ---------- | ------------- | ----------------------------------------------- | | `'quick'` | 2,048 | Lightweight reasoning for simple queries | | `'normal'` | 8,000 | **Default** - Balanced reasoning for most tasks | | `'deep'` | 16,000 | Complex reasoning for difficult problems | | `'off'` | 0 | Disable extended thinking | ### Implementation Details - Extended thinking is implemented via `getThinkingConfig()` private method - When thinking is enabled, temperature must NOT be set - Uses `claude-sonnet-4-5-20250929` model ## Testing Run tests with: ```bash pnpm test ``` Run specific tests: ```bash npx tstest test/test.something.ts --verbose ```