refactor(sol): make base access surface import-clean without journal-host deps master
Make the thin-client `sol` access surface import-clean and runnable when journal-host dependency families (Flask/web, provider SDKs, media/ML libs, importer/indexer modules) are absent. - Defer Flask in solstone/apps/__init__.py (TYPE_CHECKING Blueprint) — cascade clears flask/werkzeug/jinja2 from chat, call, link, apps. Same for the secure_listener werkzeug path on link. - Classify provider errors SDK-free in providers/shared.py (string match on exception module/name) — clears anthropic/openai/google.genai/httpx/PIL from the providers.state / provider_readiness path. - Lazy-load writer/indexer/readiness chains: chat_stream writers + chat_cli chat_view (numpy); tools.health + tools.call + facets (numpy/PIL/soundfile/ frontmatter). - Re-cut `sol import` as a thin Convey-HTTP client (solstone/think/import_client.py): KEEP modes over HTTP (/app/import/api/save|save-path|start), REJECT journal-host modes (--dry-run/--sync/--backends/--list-importers/--auto <guidance>) with a service hint, RELOCATE journal-source to `sol call import`. No silent flag drop. - Move the heavy importer engine behind a new `journal importer` service command; repoint the import-start + Plaud/Granola/Obsidian sync web queues off `sol import` (breaks the recursive supervisor loop). - Add a dispatch-level journal-extra hint in run_command() for service commands that fail on a missing journal-host dep. - Add scripts/check_access_imports_clean.py (CI-wired smoke guard) + self-test that blocks the heavy families and asserts the full access matrix + hint cases. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>