Files
voyage/frontend/package.json
alex 757140ec70 feat(chat): add LLM-powered travel agent with multi-provider support
Implement a full chat-based travel agent using LiteLLM for multi-provider
LLM support (OpenAI, Anthropic, Gemini, Ollama, Groq, Mistral, etc.).

Backend:
- New 'chat' Django app with ChatConversation and ChatMessage models
- Streaming SSE endpoint via StreamingHttpResponse
- 5 agent tools: search_places, list_trips, get_trip_details,
  add_to_itinerary, get_weather
- LiteLLM client wrapper with per-user API key retrieval
- System prompt with user preference context injection

Frontend:
- New /chat route with full-page chat UI (DaisyUI + Tailwind)
- Collapsible conversation sidebar with CRUD
- SSE streaming response display with tool call visualization
- Provider selector dropdown
- SSE proxy fix to stream text/event-stream without buffering
- Navbar link and i18n keys
2026-03-08 18:44:44 +00:00

64 lines
1.7 KiB
JSON

{
"name": "voyage-frontend",
"version": "0.12.0",
"packageManager": "bun@1.2.22",
"scripts": {
"dev": "vite dev",
"django": "cd .. && cd backend/server && python3 manage.py runserver",
"build": "vite build",
"preview": "vite preview",
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
"lint": "prettier --check .",
"format": "prettier --write ."
},
"devDependencies": {
"@event-calendar/core": "^3.12.0",
"@event-calendar/day-grid": "^3.12.0",
"@event-calendar/interaction": "^3.12.0",
"@event-calendar/time-grid": "^3.12.0",
"@iconify-json/mdi": "^1.2.3",
"@sveltejs/adapter-node": "^5.5.4",
"@sveltejs/adapter-vercel": "^5.10.3",
"@sveltejs/kit": "^2.49.5",
"@sveltejs/vite-plugin-svelte": "^3.1.2",
"@tailwindcss/typography": "^0.5.19",
"@types/node": "^22.19.15",
"@types/qrcode": "^1.5.6",
"autoprefixer": "^10.4.27",
"baseline-browser-mapping": "^2.10.0",
"daisyui": "^4.12.24",
"postcss": "^8.5.8",
"prettier": "^3.8.1",
"prettier-plugin-svelte": "^3.5.1",
"svelte": "^4.2.20",
"svelte-check": "^3.8.6",
"tailwindcss": "^3.4.19",
"tslib": "^2.8.1",
"typescript": "^5.9.3",
"unplugin-icons": "^0.19.3",
"vite": "^5.4.21"
},
"type": "module",
"dependencies": {
"@mdi/js": "^7.4.47",
"@lukulent/svelte-umami": "^0.0.3",
"dompurify": "^3.3.2",
"emoji-picker-element": "^1.29.1",
"gsap": "^3.14.2",
"luxon": "^3.7.2",
"marked": "^15.0.12",
"psl": "^1.15.0",
"qrcode": "^1.5.4",
"svelte-dnd-action": "^0.9.69",
"svelte-i18n": "^4.0.1",
"svelte-maplibre": "^0.9.14"
},
"overrides": {
"esbuild": "^0.26.0",
"devalue": "^5.6.2",
"minimatch": "^10.2.1",
"tar": "^7.5.8"
}
}