// Package multimodal groups the runtime's non-text input/output handling: // image understanding (vision) and speech (voice). // // It follows DevDocs/design/06-多模态.md: // // - The vision subpackage routes image messages through a layered strategy // (main model first, then a tool-shaped vision/OCR adapter) and registers // those adapters as sdk.Tool capabilities so the M2 tool loop can invoke // them without putting the image in the main-model context. // - The voice subpackage provides asynchronous STT/TTS through a degrading // provider chain (cloud → local → edge-tts/espeak → silent). // // Both subpackages keep real provider calls behind interfaces with an HTTP // default implementation, so they are testable with a stdlib httptest server // and leave the real cloud/local providers as adaptation points for later // milestones. package multimodal