Implement optional single-image intake, Signal ingestion, and multimodal vision analysis

- Add image intake service with format validation (JPEG, PNG, WebP) and EXIF/GPS stripping
- Enforce strict single-image rule across Web and Signal attachment channels
- Implement token-optimized vision downscaling and JPEG compression
- Add IMAGE_CONTEXT pipeline stage with OmniRoute vision routing and resilient failover
- Seed and manage versioned idea-image-interpreter prompt in catalog
- Update Web UI with responsive image picker, preview chip, and Visual Context tab
- Add comprehensive automated test suite in test_image_intake.py
- Update README and Labyricorn devlog
This commit is contained in:
2026-08-23 01:40:22 -07:00
parent 94ff1e4408
commit 41e08611c9
30 changed files with 3784 additions and 278 deletions
+2
View File
@@ -19,6 +19,7 @@ from .queue.worker import job_queue
from .api.ideas import router as ideas_router
from .api.admin import router as admin_router
from .api.auth_routes import router as auth_router
from .api.signal_integration import router as signal_router
from .prompts.catalog import get_all_prompts, get_all_profiles
TEMPLATES_DIR = BASE_DIR / "thinkstorm" / "templates"
@@ -64,6 +65,7 @@ app.mount("/static", StaticFiles(directory=str(STATIC_DIR)), name="static")
app.include_router(ideas_router)
app.include_router(admin_router)
app.include_router(auth_router)
app.include_router(signal_router)
# Trash root aliases
from .api.ideas import empty_trash