Template
- /api/chat streams via AI SDK v7 through OpenRouter (OPENROUTER_API_KEY), with a store-specific system prompt and five read-only tools: searchCatalogue, getProductDetails, listCollections, getCollectionProducts, browseProducts - Sidebar assistant on the right that opens from a launcher and expands, built on ai-elements (conversation, message, prompt-input, tool) with shimmer on in-flight tool calls - Extract services/shopify/catalog.ts so the Storefront fetchers have no React imports and can run in a Route Handler; the client hooks now re-export from it - ai-elements pulled in the canonical shadcn primitives, replacing the hand-rolled command/dialog/button variants; search dialog moved to the cmdk-based Command and CommandDialog forwards shouldFilter - Pin shiki to ^3.19.0 to match streamdown and drop the duplicate copy - Add .env.example documenting the required env vars Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016jWbNNJLksC1QG8z8845FX
55 lines
1.7 KiB
JSON
55 lines
1.7 KiB
JSON
{
|
|
"name": "nextjs-app",
|
|
"type": "module",
|
|
"private": true,
|
|
"scripts": {
|
|
"dev": "next dev --webpack",
|
|
"build": "next build --webpack",
|
|
"start": "next start"
|
|
},
|
|
"version": "0.0.0",
|
|
"dependencies": {
|
|
"@ai-sdk/react": "^4.0.47",
|
|
"@next/swc-wasm-web": "16.2.10",
|
|
"@openrouter/ai-sdk-provider": "^3.0.0",
|
|
"@remixicon/react": "^4.9.0",
|
|
"@shopify/storefront-api-client": "^1.0.0",
|
|
"@streamdown/cjk": "^1.0.3",
|
|
"@streamdown/code": "^1.1.1",
|
|
"@streamdown/math": "^1.0.2",
|
|
"@streamdown/mermaid": "^1.0.2",
|
|
"@supabase/supabase-js": "^2.51.0",
|
|
"ai": "^7",
|
|
"class-variance-authority": "0.7.1",
|
|
"clsx": "^2.1.1",
|
|
"cmdk": "^1.1.1",
|
|
"embla-carousel-react": "^8.6.0",
|
|
"framer-motion": "12.42.2",
|
|
"input-otp": "^1.4.2",
|
|
"lucide-react": "^0.562.0",
|
|
"motion": "^12.23.26",
|
|
"nanoid": "^6.0.0",
|
|
"next": "16.2.10",
|
|
"radix-ui": "^1.6.7",
|
|
"react": "^19.0.0",
|
|
"react-dom": "^19.0.0",
|
|
"shiki": "^3.19.0",
|
|
"sonner": "^2.0.7",
|
|
"streamdown": "^2.5.0",
|
|
"tailwind-merge": "^3.4.0",
|
|
"tailwindcss": "^4",
|
|
"tw-animate-css": "1.4.0",
|
|
"use-stick-to-bottom": "^1.1.6",
|
|
"zod": "^4.4.3",
|
|
"zustand": "^5.0.11"
|
|
},
|
|
"devDependencies": {
|
|
"@tailwindcss/postcss": "^4",
|
|
"@types/node": "^22",
|
|
"@types/react": "^19",
|
|
"@types/react-dom": "^19",
|
|
"typescript": "^5.7.3"
|
|
},
|
|
"packageManager": "yarn@4.18.0+sha512.fcb8716fe7cd0eece141ffc18b92193a9df9204c1ba83189c288835223fc0bbe64af473bab0d5e9927a7daeb5caf2bb07eb2787cc9338ca040ea125f2a1f2f7e"
|
|
}
|