Phase 1 - Configuration Infrastructure (WS1): - Add instance-level AI env vars (VOYAGE_AI_PROVIDER, VOYAGE_AI_MODEL, VOYAGE_AI_API_KEY) - Implement fallback chain: user key → instance key → error - Add UserAISettings model for per-user provider/model preferences - Enhance provider catalog with instance_configured and user_configured flags - Optimize provider catalog to avoid N+1 queries Phase 1 - User Preference Learning (WS2): - Add Travel Preferences tab to Settings page - Improve preference formatting in system prompt with emoji headers - Add multi-user preference aggregation for shared collections Phase 2 - Day-Level Suggestions Modal (WS3): - Create ItinerarySuggestionModal with 3-step flow (category → filters → results) - Add AI suggestions button to itinerary Add dropdown - Support restaurant, activity, event, and lodging categories - Backend endpoint POST /api/chat/suggestions/day/ with context-aware prompts Phase 3 - Collection-Level Chat Improvements (WS4): - Inject collection context (destination, dates) into chat system prompt - Add quick action buttons for common queries - Add 'Add to itinerary' button on search_places results - Update chat UI with travel-themed branding and improved tool result cards Phase 3 - Web Search Capability (WS5): - Add web_search agent tool using DuckDuckGo - Support location_context parameter for biased results - Handle rate limiting gracefully Phase 4 - Extensibility Architecture (WS6): - Implement decorator-based @agent_tool registry - Convert existing tools to use decorators - Add GET /api/chat/capabilities/ endpoint for tool discovery - Refactor execute_tool() to use registry pattern
32 lines
1.2 KiB
Python
32 lines
1.2 KiB
Python
from integrations.views import *
|
|
from django.urls import path, include
|
|
from rest_framework.routers import DefaultRouter
|
|
from integrations.views import (
|
|
IntegrationView,
|
|
StravaIntegrationView,
|
|
WandererIntegrationViewSet,
|
|
UserAPIKeyViewSet,
|
|
UserAISettingsViewSet,
|
|
UserRecommendationPreferenceProfileViewSet,
|
|
)
|
|
|
|
# Create the router and register the ViewSet
|
|
router = DefaultRouter()
|
|
router.register(r"immich", ImmichIntegrationView, basename="immich")
|
|
router.register(r"", IntegrationView, basename="integrations")
|
|
router.register(r"immich", ImmichIntegrationViewSet, basename="immich_viewset")
|
|
router.register(r"strava", StravaIntegrationView, basename="strava")
|
|
router.register(r"wanderer", WandererIntegrationViewSet, basename="wanderer")
|
|
router.register(r"api-keys", UserAPIKeyViewSet, basename="user-api-keys")
|
|
router.register(
|
|
r"recommendation-preferences",
|
|
UserRecommendationPreferenceProfileViewSet,
|
|
basename="user-recommendation-preferences",
|
|
)
|
|
router.register(r"ai-settings", UserAISettingsViewSet, basename="user-ai-settings")
|
|
|
|
# Include the router URLs
|
|
urlpatterns = [
|
|
path("", include(router.urls)), # Includes /immich/ routes
|
|
]
|