├── .claude ├── agents │ ├── backend-test-architect.md │ ├── frontend-developer.md │ ├── frontend-test-engineer.md │ ├── hexagonal-backend-architect.md │ ├── qa-criteria-validator.md │ ├── shadcn-ui-architect.md │ ├── typescript-test-explorer.md │ └── ui-ux-analyzer.md ├── commands │ ├── analyze_bug.md │ ├── create-new-gh-issue.md │ ├── explore-plan.md │ ├── implement-feedback.md │ ├── rule2hook.md │ ├── start-working-on-issue-new.md │ ├── update-feedback.md │ ├── worktree-tdd.md │ └── worktree.md ├── doc │ ├── chat_history │ │ ├── FINAL_PLAN.md │ │ ├── acceptance-criteria.md │ │ ├── backend-testing-strategy.md │ │ ├── backend.md │ │ ├── frontend-data-architecture.md │ │ ├── frontend-testing-strategy.md │ │ ├── sidebar-ui-design.md │ │ ├── test-scenario-mapping.md │ │ └── validation-checklist.md │ └── dark_light_mode │ │ ├── frontend_architecture_advice.md │ │ ├── shadcn_ui_advice.md │ │ └── test_cases.md ├── hooks │ └── on-notification-say.sh ├── sessions │ ├── context_session_chat_history.md │ └── context_session_dark_light_mode.md └── settings.json ├── .env.example ├── .eslintrc.json ├── .github └── workflows │ └── test.yml ├── .gitignore ├── .mcp.json ├── CLAUDE.md ├── README.md ├── __tests__ └── components │ ├── ThemeProvider.test.tsx │ └── ThemeToggle.test.tsx ├── app ├── (chat) │ ├── layout.tsx │ └── page.tsx ├── api │ └── conversations │ │ ├── [id] │ │ └── route.ts │ │ ├── list │ │ └── route.ts │ │ └── route.ts ├── favicon.ico ├── features │ └── conversation │ │ ├── components │ │ ├── chat-container.tsx │ │ ├── chat.tsx │ │ ├── conversation-list-item.tsx │ │ ├── conversation-list.tsx │ │ ├── conversation-sidebar.tsx │ │ ├── icons.tsx │ │ ├── markdown.tsx │ │ ├── message.tsx │ │ ├── multimodal-input.tsx │ │ ├── overview.tsx │ │ ├── preview-attachment.tsx │ │ └── weather.tsx │ │ ├── data │ │ ├── schemas │ │ │ ├── conversation.schema.ts │ │ │ └── message.schema.ts │ │ └── services │ │ │ ├── conversation.service.ts │ │ │ └── storage.service.ts │ │ └── hooks │ │ ├── mutations │ │ └── useConversationMutation.ts │ │ ├── queries │ │ └── useConversationQuery.ts │ │ ├── useConversation.tsx │ │ ├── useConversationHandlers.tsx │ │ └── useConversationStorage.ts ├── globals.css ├── icons.tsx ├── layout.tsx ├── og │ ├── background.png │ └── route.tsx └── utils │ ├── prompt.ts │ ├── tools.ts │ └── types.ts ├── assets ├── geist-semibold.ttf └── geist.ttf ├── components.json ├── components ├── navbar.tsx ├── theme-provider.tsx ├── theme-toggle.tsx └── ui │ ├── alert-dialog.tsx │ ├── badge.tsx │ ├── button.tsx │ ├── input.tsx │ ├── scroll-area.tsx │ ├── separator.tsx │ ├── sheet.tsx │ ├── sidebar.tsx │ ├── skeleton.tsx │ ├── textarea.tsx │ └── tooltip.tsx ├── hooks ├── use-mobile.tsx └── use-scroll-to-bottom.tsx ├── lib └── utils.ts ├── next.config.js ├── package.json ├── pnpm-lock.yaml ├── postcss.config.js ├── public ├── next.svg └── vercel.svg ├── src ├── application │ ├── dto │ │ ├── ChatRequestDto.ts │ │ ├── ChatResponseDto.ts │ │ ├── ConversationDto.ts │ │ └── MessageDto.ts │ ├── mappers │ │ ├── ConversationMapper.ts │ │ └── MessageMapper.ts │ ├── ports │ │ ├── inbound │ │ │ ├── IChatService.ts │ │ │ └── IStreamingService.ts │ │ └── outbound │ │ │ ├── IAIProvider.ts │ │ │ ├── IStreamAdapter.ts │ │ │ ├── IToolRegistry.ts │ │ │ └── IWeatherService.ts │ └── use-cases │ │ ├── ExecuteToolUseCase.ts │ │ ├── ManageConversationUseCase.ts │ │ ├── SendMessageUseCase.ts │ │ └── StreamChatCompletionUseCase.ts ├── domain │ ├── __test-helpers__ │ │ ├── builders │ │ │ ├── ConversationBuilder.ts │ │ │ ├── MessageBuilder.ts │ │ │ └── ToolInvocationBuilder.ts │ │ └── factories │ │ │ └── MessageFactory.ts │ ├── entities │ │ ├── Conversation.ts │ │ ├── Message.ts │ │ ├── StreamingResponse.ts │ │ ├── ToolInvocation.ts │ │ └── __tests__ │ │ │ ├── Conversation.test.ts │ │ │ ├── Message.test.ts │ │ │ ├── StreamingResponse.test.ts │ │ │ └── ToolInvocation.test.ts │ ├── exceptions │ │ ├── ConversationError.ts │ │ ├── InvalidMessageError.ts │ │ ├── StreamingError.ts │ │ ├── ToolExecutionError.ts │ │ └── __tests__ │ │ │ ├── ConversationError.test.ts │ │ │ ├── InvalidMessageError.test.ts │ │ │ ├── StreamingError.test.ts │ │ │ └── ToolExecutionError.test.ts │ ├── repositories │ │ └── IConversationRepository.ts │ ├── services │ │ ├── ConversationOrchestrator.ts │ │ ├── MessageValidator.ts │ │ └── __tests__ │ │ │ ├── ConversationOrchestrator.test.ts │ │ │ └── MessageValidator.test.ts │ └── value-objects │ │ ├── Attachment.ts │ │ ├── Coordinates.ts │ │ ├── MessageContent.ts │ │ ├── MessageRole.ts │ │ ├── ToolName.ts │ │ └── __tests__ │ │ ├── Attachment.test.ts │ │ ├── Coordinates.test.ts │ │ ├── MessageContent.test.ts │ │ ├── MessageRole.test.ts │ │ └── ToolName.test.ts └── infrastructure │ ├── adapters │ ├── ai │ │ ├── OpenAIAdapter.ts │ │ └── OpenAIMessageConverter.ts │ ├── database │ │ ├── MongoDBClient.ts │ │ ├── MongoDBConversationRepository.ts │ │ ├── mappers │ │ │ └── ConversationDocumentMapper.ts │ │ └── types │ │ │ └── ConversationDocument.ts │ ├── streaming │ │ ├── StreamEncoder.ts │ │ └── VercelStreamAdapter.ts │ └── tools │ │ ├── ToolRegistry.ts │ │ ├── WeatherTool.ts │ │ └── WeatherToolAdapter.ts │ ├── config │ ├── DependencyContainer.ts │ └── container.ts │ └── repositories │ └── InMemoryConversationRepository.ts ├── tailwind.config.js ├── tsconfig.json ├── vitest.config.ts ├── vitest.setup.ts └── yarn.lock /.claude/agents/backend-test-architect.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.claude/agents/backend-test-architect.md -------------------------------------------------------------------------------- /.claude/agents/frontend-developer.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.claude/agents/frontend-developer.md -------------------------------------------------------------------------------- /.claude/agents/frontend-test-engineer.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.claude/agents/frontend-test-engineer.md -------------------------------------------------------------------------------- /.claude/agents/hexagonal-backend-architect.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.claude/agents/hexagonal-backend-architect.md -------------------------------------------------------------------------------- /.claude/agents/qa-criteria-validator.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.claude/agents/qa-criteria-validator.md -------------------------------------------------------------------------------- /.claude/agents/shadcn-ui-architect.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.claude/agents/shadcn-ui-architect.md -------------------------------------------------------------------------------- /.claude/agents/typescript-test-explorer.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.claude/agents/typescript-test-explorer.md -------------------------------------------------------------------------------- /.claude/agents/ui-ux-analyzer.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.claude/agents/ui-ux-analyzer.md -------------------------------------------------------------------------------- /.claude/commands/analyze_bug.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.claude/commands/analyze_bug.md -------------------------------------------------------------------------------- /.claude/commands/create-new-gh-issue.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.claude/commands/create-new-gh-issue.md -------------------------------------------------------------------------------- /.claude/commands/explore-plan.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.claude/commands/explore-plan.md -------------------------------------------------------------------------------- /.claude/commands/implement-feedback.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.claude/commands/implement-feedback.md -------------------------------------------------------------------------------- /.claude/commands/rule2hook.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.claude/commands/rule2hook.md -------------------------------------------------------------------------------- /.claude/commands/start-working-on-issue-new.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.claude/commands/start-working-on-issue-new.md -------------------------------------------------------------------------------- /.claude/commands/update-feedback.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.claude/commands/update-feedback.md -------------------------------------------------------------------------------- /.claude/commands/worktree-tdd.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.claude/commands/worktree-tdd.md -------------------------------------------------------------------------------- /.claude/commands/worktree.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.claude/commands/worktree.md -------------------------------------------------------------------------------- /.claude/doc/chat_history/FINAL_PLAN.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.claude/doc/chat_history/FINAL_PLAN.md -------------------------------------------------------------------------------- /.claude/doc/chat_history/acceptance-criteria.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.claude/doc/chat_history/acceptance-criteria.md -------------------------------------------------------------------------------- /.claude/doc/chat_history/backend-testing-strategy.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.claude/doc/chat_history/backend-testing-strategy.md -------------------------------------------------------------------------------- /.claude/doc/chat_history/backend.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.claude/doc/chat_history/backend.md -------------------------------------------------------------------------------- /.claude/doc/chat_history/frontend-data-architecture.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.claude/doc/chat_history/frontend-data-architecture.md -------------------------------------------------------------------------------- /.claude/doc/chat_history/frontend-testing-strategy.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.claude/doc/chat_history/frontend-testing-strategy.md -------------------------------------------------------------------------------- /.claude/doc/chat_history/sidebar-ui-design.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.claude/doc/chat_history/sidebar-ui-design.md -------------------------------------------------------------------------------- /.claude/doc/chat_history/test-scenario-mapping.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.claude/doc/chat_history/test-scenario-mapping.md -------------------------------------------------------------------------------- /.claude/doc/chat_history/validation-checklist.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.claude/doc/chat_history/validation-checklist.md -------------------------------------------------------------------------------- /.claude/doc/dark_light_mode/frontend_architecture_advice.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.claude/doc/dark_light_mode/frontend_architecture_advice.md -------------------------------------------------------------------------------- /.claude/doc/dark_light_mode/shadcn_ui_advice.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.claude/doc/dark_light_mode/shadcn_ui_advice.md -------------------------------------------------------------------------------- /.claude/doc/dark_light_mode/test_cases.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.claude/doc/dark_light_mode/test_cases.md -------------------------------------------------------------------------------- /.claude/hooks/on-notification-say.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.claude/hooks/on-notification-say.sh -------------------------------------------------------------------------------- /.claude/sessions/context_session_chat_history.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.claude/sessions/context_session_chat_history.md -------------------------------------------------------------------------------- /.claude/sessions/context_session_dark_light_mode.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.claude/sessions/context_session_dark_light_mode.md -------------------------------------------------------------------------------- /.claude/settings.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.claude/settings.json -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | OPENAI_API_KEY= 2 | REPOSITORY_TYPE="mongodb" 3 | MONGODB_URL= 4 | DATABASE_NAME= -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.github/workflows/test.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.gitignore -------------------------------------------------------------------------------- /.mcp.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/.mcp.json -------------------------------------------------------------------------------- /CLAUDE.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/CLAUDE.md -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/README.md -------------------------------------------------------------------------------- /__tests__/components/ThemeProvider.test.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/__tests__/components/ThemeProvider.test.tsx -------------------------------------------------------------------------------- /__tests__/components/ThemeToggle.test.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/__tests__/components/ThemeToggle.test.tsx -------------------------------------------------------------------------------- /app/(chat)/layout.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/(chat)/layout.tsx -------------------------------------------------------------------------------- /app/(chat)/page.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/(chat)/page.tsx -------------------------------------------------------------------------------- /app/api/conversations/[id]/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/api/conversations/[id]/route.ts -------------------------------------------------------------------------------- /app/api/conversations/list/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/api/conversations/list/route.ts -------------------------------------------------------------------------------- /app/api/conversations/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/api/conversations/route.ts -------------------------------------------------------------------------------- /app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/favicon.ico -------------------------------------------------------------------------------- /app/features/conversation/components/chat-container.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/features/conversation/components/chat-container.tsx -------------------------------------------------------------------------------- /app/features/conversation/components/chat.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/features/conversation/components/chat.tsx -------------------------------------------------------------------------------- /app/features/conversation/components/conversation-list-item.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/features/conversation/components/conversation-list-item.tsx -------------------------------------------------------------------------------- /app/features/conversation/components/conversation-list.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/features/conversation/components/conversation-list.tsx -------------------------------------------------------------------------------- /app/features/conversation/components/conversation-sidebar.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/features/conversation/components/conversation-sidebar.tsx -------------------------------------------------------------------------------- /app/features/conversation/components/icons.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/features/conversation/components/icons.tsx -------------------------------------------------------------------------------- /app/features/conversation/components/markdown.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/features/conversation/components/markdown.tsx -------------------------------------------------------------------------------- /app/features/conversation/components/message.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/features/conversation/components/message.tsx -------------------------------------------------------------------------------- /app/features/conversation/components/multimodal-input.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/features/conversation/components/multimodal-input.tsx -------------------------------------------------------------------------------- /app/features/conversation/components/overview.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/features/conversation/components/overview.tsx -------------------------------------------------------------------------------- /app/features/conversation/components/preview-attachment.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/features/conversation/components/preview-attachment.tsx -------------------------------------------------------------------------------- /app/features/conversation/components/weather.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/features/conversation/components/weather.tsx -------------------------------------------------------------------------------- /app/features/conversation/data/schemas/conversation.schema.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/features/conversation/data/schemas/conversation.schema.ts -------------------------------------------------------------------------------- /app/features/conversation/data/schemas/message.schema.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/features/conversation/data/schemas/message.schema.ts -------------------------------------------------------------------------------- /app/features/conversation/data/services/conversation.service.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/features/conversation/data/services/conversation.service.ts -------------------------------------------------------------------------------- /app/features/conversation/data/services/storage.service.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/features/conversation/data/services/storage.service.ts -------------------------------------------------------------------------------- /app/features/conversation/hooks/mutations/useConversationMutation.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/features/conversation/hooks/mutations/useConversationMutation.ts -------------------------------------------------------------------------------- /app/features/conversation/hooks/queries/useConversationQuery.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/features/conversation/hooks/queries/useConversationQuery.ts -------------------------------------------------------------------------------- /app/features/conversation/hooks/useConversation.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/features/conversation/hooks/useConversation.tsx -------------------------------------------------------------------------------- /app/features/conversation/hooks/useConversationHandlers.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/features/conversation/hooks/useConversationHandlers.tsx -------------------------------------------------------------------------------- /app/features/conversation/hooks/useConversationStorage.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/features/conversation/hooks/useConversationStorage.ts -------------------------------------------------------------------------------- /app/globals.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/globals.css -------------------------------------------------------------------------------- /app/icons.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/icons.tsx -------------------------------------------------------------------------------- /app/layout.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/layout.tsx -------------------------------------------------------------------------------- /app/og/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/og/background.png -------------------------------------------------------------------------------- /app/og/route.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/og/route.tsx -------------------------------------------------------------------------------- /app/utils/prompt.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/utils/prompt.ts -------------------------------------------------------------------------------- /app/utils/tools.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/utils/tools.ts -------------------------------------------------------------------------------- /app/utils/types.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/app/utils/types.ts -------------------------------------------------------------------------------- /assets/geist-semibold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/assets/geist-semibold.ttf -------------------------------------------------------------------------------- /assets/geist.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/assets/geist.ttf -------------------------------------------------------------------------------- /components.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/components.json -------------------------------------------------------------------------------- /components/navbar.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/components/navbar.tsx -------------------------------------------------------------------------------- /components/theme-provider.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/components/theme-provider.tsx -------------------------------------------------------------------------------- /components/theme-toggle.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/components/theme-toggle.tsx -------------------------------------------------------------------------------- /components/ui/alert-dialog.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/components/ui/alert-dialog.tsx -------------------------------------------------------------------------------- /components/ui/badge.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/components/ui/badge.tsx -------------------------------------------------------------------------------- /components/ui/button.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/components/ui/button.tsx -------------------------------------------------------------------------------- /components/ui/input.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/components/ui/input.tsx -------------------------------------------------------------------------------- /components/ui/scroll-area.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/components/ui/scroll-area.tsx -------------------------------------------------------------------------------- /components/ui/separator.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/components/ui/separator.tsx -------------------------------------------------------------------------------- /components/ui/sheet.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/components/ui/sheet.tsx -------------------------------------------------------------------------------- /components/ui/sidebar.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/components/ui/sidebar.tsx -------------------------------------------------------------------------------- /components/ui/skeleton.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/components/ui/skeleton.tsx -------------------------------------------------------------------------------- /components/ui/textarea.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/components/ui/textarea.tsx -------------------------------------------------------------------------------- /components/ui/tooltip.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/components/ui/tooltip.tsx -------------------------------------------------------------------------------- /hooks/use-mobile.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/hooks/use-mobile.tsx -------------------------------------------------------------------------------- /hooks/use-scroll-to-bottom.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/hooks/use-scroll-to-bottom.tsx -------------------------------------------------------------------------------- /lib/utils.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/lib/utils.ts -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/next.config.js -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/package.json -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/pnpm-lock.yaml -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/postcss.config.js -------------------------------------------------------------------------------- /public/next.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/public/next.svg -------------------------------------------------------------------------------- /public/vercel.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/public/vercel.svg -------------------------------------------------------------------------------- /src/application/dto/ChatRequestDto.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/application/dto/ChatRequestDto.ts -------------------------------------------------------------------------------- /src/application/dto/ChatResponseDto.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/application/dto/ChatResponseDto.ts -------------------------------------------------------------------------------- /src/application/dto/ConversationDto.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/application/dto/ConversationDto.ts -------------------------------------------------------------------------------- /src/application/dto/MessageDto.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/application/dto/MessageDto.ts -------------------------------------------------------------------------------- /src/application/mappers/ConversationMapper.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/application/mappers/ConversationMapper.ts -------------------------------------------------------------------------------- /src/application/mappers/MessageMapper.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/application/mappers/MessageMapper.ts -------------------------------------------------------------------------------- /src/application/ports/inbound/IChatService.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/application/ports/inbound/IChatService.ts -------------------------------------------------------------------------------- /src/application/ports/inbound/IStreamingService.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/application/ports/inbound/IStreamingService.ts -------------------------------------------------------------------------------- /src/application/ports/outbound/IAIProvider.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/application/ports/outbound/IAIProvider.ts -------------------------------------------------------------------------------- /src/application/ports/outbound/IStreamAdapter.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/application/ports/outbound/IStreamAdapter.ts -------------------------------------------------------------------------------- /src/application/ports/outbound/IToolRegistry.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/application/ports/outbound/IToolRegistry.ts -------------------------------------------------------------------------------- /src/application/ports/outbound/IWeatherService.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/application/ports/outbound/IWeatherService.ts -------------------------------------------------------------------------------- /src/application/use-cases/ExecuteToolUseCase.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/application/use-cases/ExecuteToolUseCase.ts -------------------------------------------------------------------------------- /src/application/use-cases/ManageConversationUseCase.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/application/use-cases/ManageConversationUseCase.ts -------------------------------------------------------------------------------- /src/application/use-cases/SendMessageUseCase.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/application/use-cases/SendMessageUseCase.ts -------------------------------------------------------------------------------- /src/application/use-cases/StreamChatCompletionUseCase.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/application/use-cases/StreamChatCompletionUseCase.ts -------------------------------------------------------------------------------- /src/domain/__test-helpers__/builders/ConversationBuilder.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/__test-helpers__/builders/ConversationBuilder.ts -------------------------------------------------------------------------------- /src/domain/__test-helpers__/builders/MessageBuilder.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/__test-helpers__/builders/MessageBuilder.ts -------------------------------------------------------------------------------- /src/domain/__test-helpers__/builders/ToolInvocationBuilder.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/__test-helpers__/builders/ToolInvocationBuilder.ts -------------------------------------------------------------------------------- /src/domain/__test-helpers__/factories/MessageFactory.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/__test-helpers__/factories/MessageFactory.ts -------------------------------------------------------------------------------- /src/domain/entities/Conversation.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/entities/Conversation.ts -------------------------------------------------------------------------------- /src/domain/entities/Message.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/entities/Message.ts -------------------------------------------------------------------------------- /src/domain/entities/StreamingResponse.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/entities/StreamingResponse.ts -------------------------------------------------------------------------------- /src/domain/entities/ToolInvocation.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/entities/ToolInvocation.ts -------------------------------------------------------------------------------- /src/domain/entities/__tests__/Conversation.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/entities/__tests__/Conversation.test.ts -------------------------------------------------------------------------------- /src/domain/entities/__tests__/Message.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/entities/__tests__/Message.test.ts -------------------------------------------------------------------------------- /src/domain/entities/__tests__/StreamingResponse.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/entities/__tests__/StreamingResponse.test.ts -------------------------------------------------------------------------------- /src/domain/entities/__tests__/ToolInvocation.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/entities/__tests__/ToolInvocation.test.ts -------------------------------------------------------------------------------- /src/domain/exceptions/ConversationError.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/exceptions/ConversationError.ts -------------------------------------------------------------------------------- /src/domain/exceptions/InvalidMessageError.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/exceptions/InvalidMessageError.ts -------------------------------------------------------------------------------- /src/domain/exceptions/StreamingError.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/exceptions/StreamingError.ts -------------------------------------------------------------------------------- /src/domain/exceptions/ToolExecutionError.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/exceptions/ToolExecutionError.ts -------------------------------------------------------------------------------- /src/domain/exceptions/__tests__/ConversationError.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/exceptions/__tests__/ConversationError.test.ts -------------------------------------------------------------------------------- /src/domain/exceptions/__tests__/InvalidMessageError.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/exceptions/__tests__/InvalidMessageError.test.ts -------------------------------------------------------------------------------- /src/domain/exceptions/__tests__/StreamingError.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/exceptions/__tests__/StreamingError.test.ts -------------------------------------------------------------------------------- /src/domain/exceptions/__tests__/ToolExecutionError.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/exceptions/__tests__/ToolExecutionError.test.ts -------------------------------------------------------------------------------- /src/domain/repositories/IConversationRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/repositories/IConversationRepository.ts -------------------------------------------------------------------------------- /src/domain/services/ConversationOrchestrator.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/services/ConversationOrchestrator.ts -------------------------------------------------------------------------------- /src/domain/services/MessageValidator.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/services/MessageValidator.ts -------------------------------------------------------------------------------- /src/domain/services/__tests__/ConversationOrchestrator.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/services/__tests__/ConversationOrchestrator.test.ts -------------------------------------------------------------------------------- /src/domain/services/__tests__/MessageValidator.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/services/__tests__/MessageValidator.test.ts -------------------------------------------------------------------------------- /src/domain/value-objects/Attachment.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/value-objects/Attachment.ts -------------------------------------------------------------------------------- /src/domain/value-objects/Coordinates.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/value-objects/Coordinates.ts -------------------------------------------------------------------------------- /src/domain/value-objects/MessageContent.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/value-objects/MessageContent.ts -------------------------------------------------------------------------------- /src/domain/value-objects/MessageRole.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/value-objects/MessageRole.ts -------------------------------------------------------------------------------- /src/domain/value-objects/ToolName.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/value-objects/ToolName.ts -------------------------------------------------------------------------------- /src/domain/value-objects/__tests__/Attachment.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/value-objects/__tests__/Attachment.test.ts -------------------------------------------------------------------------------- /src/domain/value-objects/__tests__/Coordinates.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/value-objects/__tests__/Coordinates.test.ts -------------------------------------------------------------------------------- /src/domain/value-objects/__tests__/MessageContent.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/value-objects/__tests__/MessageContent.test.ts -------------------------------------------------------------------------------- /src/domain/value-objects/__tests__/MessageRole.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/value-objects/__tests__/MessageRole.test.ts -------------------------------------------------------------------------------- /src/domain/value-objects/__tests__/ToolName.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/domain/value-objects/__tests__/ToolName.test.ts -------------------------------------------------------------------------------- /src/infrastructure/adapters/ai/OpenAIAdapter.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/infrastructure/adapters/ai/OpenAIAdapter.ts -------------------------------------------------------------------------------- /src/infrastructure/adapters/ai/OpenAIMessageConverter.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/infrastructure/adapters/ai/OpenAIMessageConverter.ts -------------------------------------------------------------------------------- /src/infrastructure/adapters/database/MongoDBClient.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/infrastructure/adapters/database/MongoDBClient.ts -------------------------------------------------------------------------------- /src/infrastructure/adapters/database/MongoDBConversationRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/infrastructure/adapters/database/MongoDBConversationRepository.ts -------------------------------------------------------------------------------- /src/infrastructure/adapters/database/mappers/ConversationDocumentMapper.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/infrastructure/adapters/database/mappers/ConversationDocumentMapper.ts -------------------------------------------------------------------------------- /src/infrastructure/adapters/database/types/ConversationDocument.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/infrastructure/adapters/database/types/ConversationDocument.ts -------------------------------------------------------------------------------- /src/infrastructure/adapters/streaming/StreamEncoder.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/infrastructure/adapters/streaming/StreamEncoder.ts -------------------------------------------------------------------------------- /src/infrastructure/adapters/streaming/VercelStreamAdapter.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/infrastructure/adapters/streaming/VercelStreamAdapter.ts -------------------------------------------------------------------------------- /src/infrastructure/adapters/tools/ToolRegistry.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/infrastructure/adapters/tools/ToolRegistry.ts -------------------------------------------------------------------------------- /src/infrastructure/adapters/tools/WeatherTool.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/infrastructure/adapters/tools/WeatherTool.ts -------------------------------------------------------------------------------- /src/infrastructure/adapters/tools/WeatherToolAdapter.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/infrastructure/adapters/tools/WeatherToolAdapter.ts -------------------------------------------------------------------------------- /src/infrastructure/config/DependencyContainer.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/infrastructure/config/DependencyContainer.ts -------------------------------------------------------------------------------- /src/infrastructure/config/container.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/infrastructure/config/container.ts -------------------------------------------------------------------------------- /src/infrastructure/repositories/InMemoryConversationRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/src/infrastructure/repositories/InMemoryConversationRepository.ts -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/tailwind.config.js -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/tsconfig.json -------------------------------------------------------------------------------- /vitest.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/vitest.config.ts -------------------------------------------------------------------------------- /vitest.setup.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/vitest.setup.ts -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gurusup/claude-code-demo/HEAD/yarn.lock --------------------------------------------------------------------------------