-
Notifications
You must be signed in to change notification settings - Fork 611
chore: add sdd rules #1248
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
chore: add sdd rules #1248
Conversation
Add comprehensive SDD methodology guide for AI-assisted development with focus on architectural consistency, minimal complexity, and forward compatibility principles.
Remove fragmented rule files and consolidate into comprehensive guides: - Expand development-setup.mdc with complete commands and best practices - Update i18n.mdc with 12-language support and quality guidelines - Add vue-stack-guide.mdc for Vue 3, Pinia, Shadcn, Tailwind patterns - Remove obsolete agent and rule files Improve maintainability and reduce duplication while preserving all guidance.
📝 WalkthroughWalkthroughConsolidates and reorganizes repository documentation: removes multiple specialized agent and Cursor rule files, expands development and i18n docs, and adds Specification-Driven Development and a new Vue 3 stack guide. No code or public API surfaces were changed. Changes
Sequence Diagram(s)(omitted — changes are documentation-only and do not introduce new multi-component control flow) Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Suggested reviewers
Poem
Pre-merge checks✅ Passed checks (3 passed)
📜 Recent review detailsConfiguration used: defaults Review profile: CHILL Plan: Pro 📒 Files selected for processing (2)
🚧 Files skipped from review as they are similar to previous changes (1)
🧰 Additional context used🧠 Learnings (6)📚 Learning: 2025-11-25T05:27:12.209ZApplied to files:
📚 Learning: 2025-11-25T05:28:20.513ZApplied to files:
📚 Learning: 2025-11-25T05:28:20.513ZApplied to files:
📚 Learning: 2025-11-25T05:27:26.656ZApplied to files:
📚 Learning: 2025-11-25T05:26:24.867ZApplied to files:
📚 Learning: 2025-11-25T05:28:20.513ZApplied to files:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
…reness Add lightweight spec artifact recommendations and update compatibility/migration emphasis in SDD methodology guidance.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
📜 Review details
Configuration used: defaults
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (20)
.claude/agents/electron-architecture-agent.md.claude/agents/i18n-code-reviewer.md.claude/agents/llm-provider-agent.md.claude/agents/mcp-integration-agent.md.cursor/rules/development-setup.mdc.cursor/rules/electron-best-practices.mdc.cursor/rules/error-logging.mdc.cursor/rules/i18n.mdc.cursor/rules/llm-agent-loop.mdc.cursor/rules/performance.mdc.cursor/rules/pinia-best-practices.mdc.cursor/rules/project-structure.mdc.cursor/rules/provider-guidelines.mdc.cursor/rules/vue-best-practices.mdc.cursor/rules/vue-router-best-practices.mdc.cursor/rules/vue-shadcn.mdc.cursor/rules/vue-stack-guide.mdcAGENTS.mdCLAUDE.mddocs/spec-driven-dev.md
💤 Files with no reviewable changes (14)
- .cursor/rules/error-logging.mdc
- .cursor/rules/electron-best-practices.mdc
- .cursor/rules/performance.mdc
- .cursor/rules/project-structure.mdc
- .claude/agents/llm-provider-agent.md
- .claude/agents/electron-architecture-agent.md
- .cursor/rules/vue-shadcn.mdc
- .cursor/rules/vue-router-best-practices.mdc
- .cursor/rules/pinia-best-practices.mdc
- .claude/agents/mcp-integration-agent.md
- .cursor/rules/provider-guidelines.mdc
- .cursor/rules/llm-agent-loop.mdc
- .cursor/rules/vue-best-practices.mdc
- .claude/agents/i18n-code-reviewer.md
🧰 Additional context used
🧠 Learnings (35)
📚 Learning: 2025-11-25T05:26:11.312Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-11-25T05:26:11.312Z
Learning: Applies to **/*.{ts,tsx,js,jsx,vue} : Use English for logs and comments (Chinese text exists in legacy code, but new code should use English)
Applied to files:
.cursor/rules/development-setup.mdc.cursor/rules/i18n.mdc
📚 Learning: 2025-11-25T05:28:20.513Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T05:28:20.513Z
Learning: After completing a feature, always run `pnpm run format` and `pnpm run lint` to keep formatting and lint status clean
Applied to files:
.cursor/rules/development-setup.mdc
📚 Learning: 2025-11-25T05:26:11.312Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-11-25T05:26:11.312Z
Learning: Use `pnpm` as the package manager (required Node.js >= 20.19.0, pnpm >= 10.11.0)
Applied to files:
.cursor/rules/development-setup.mdc
📚 Learning: 2025-11-25T05:27:45.545Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: .cursor/rules/vue-best-practices.mdc:0-0
Timestamp: 2025-11-25T05:27:45.545Z
Learning: Applies to src/renderer/src/**/*.{vue,ts,tsx,js,jsx} : Use the Composition API for better code organization and reusability in Vue.js applications
Applied to files:
.cursor/rules/vue-stack-guide.mdcCLAUDE.md
📚 Learning: 2025-11-25T05:27:45.545Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: .cursor/rules/vue-best-practices.mdc:0-0
Timestamp: 2025-11-25T05:27:45.545Z
Learning: Applies to src/renderer/src/**/*.{vue,ts,tsx,js,jsx} : Implement proper state management with Pinia in Vue.js applications
Applied to files:
.cursor/rules/vue-stack-guide.mdc
📚 Learning: 2025-11-25T05:28:04.454Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: .cursor/rules/vue-shadcn.mdc:0-0
Timestamp: 2025-11-25T05:28:04.454Z
Learning: Applies to src/renderer/**/*.vue : Structure files: exported component, composables, helpers, static content, types
Applied to files:
.cursor/rules/vue-stack-guide.mdc
📚 Learning: 2025-11-25T05:28:04.454Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: .cursor/rules/vue-shadcn.mdc:0-0
Timestamp: 2025-11-25T05:28:04.454Z
Learning: Applies to src/renderer/**/*.vue : Use Shadcn Vue, Radix Vue, and Tailwind for components and styling
Applied to files:
.cursor/rules/vue-stack-guide.mdcCLAUDE.md
📚 Learning: 2025-11-25T05:28:20.513Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T05:28:20.513Z
Learning: Applies to src/renderer/**/*.{ts,tsx,vue} : Vue 3 app code in `src/renderer/src` should be organized into `components/`, `stores/`, `views/`, `i18n/`, `lib/` directories with shell UI in `src/renderer/shell/`
Applied to files:
.cursor/rules/vue-stack-guide.mdc
📚 Learning: 2025-11-25T05:26:11.312Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-11-25T05:26:11.312Z
Learning: Applies to **/*.vue : Use Vue 3 Composition API for all components instead of Options API
Applied to files:
.cursor/rules/vue-stack-guide.mdc
📚 Learning: 2025-11-25T05:28:04.454Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: .cursor/rules/vue-shadcn.mdc:0-0
Timestamp: 2025-11-25T05:28:04.454Z
Learning: Applies to src/renderer/**/*.vue : Use composition API and declarative programming patterns; avoid options API
Applied to files:
.cursor/rules/vue-stack-guide.mdc
📚 Learning: 2025-11-25T05:28:04.454Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: .cursor/rules/vue-shadcn.mdc:0-0
Timestamp: 2025-11-25T05:28:04.454Z
Learning: Follow Nuxt 3 directory structure (e.g., pages/, components/, composables/)
Applied to files:
.cursor/rules/vue-stack-guide.mdc
📚 Learning: 2025-11-25T05:28:20.513Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T05:28:20.513Z
Learning: Applies to src/renderer/src/**/*.{ts,tsx,vue} : Use TypeScript with Vue 3 Composition API for the renderer application
Applied to files:
.cursor/rules/vue-stack-guide.mdc
📚 Learning: 2025-11-25T05:27:45.545Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: .cursor/rules/vue-best-practices.mdc:0-0
Timestamp: 2025-11-25T05:27:45.545Z
Learning: Applies to src/renderer/src/**/*.{vue,ts,tsx,js,jsx} : Utilize Vue Router for navigation and route management in Vue.js applications
Applied to files:
.cursor/rules/vue-stack-guide.mdc
📚 Learning: 2025-11-25T05:27:20.067Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: .cursor/rules/pinia-best-practices.mdc:0-0
Timestamp: 2025-11-25T05:27:20.067Z
Learning: Applies to src/renderer/src/stores/**/*.{vue,ts,tsx,js,jsx} : Use modules to organize related state and actions in Pinia stores
Applied to files:
.cursor/rules/vue-stack-guide.mdc
📚 Learning: 2025-11-25T05:27:20.067Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: .cursor/rules/pinia-best-practices.mdc:0-0
Timestamp: 2025-11-25T05:27:20.067Z
Learning: Applies to src/renderer/src/stores/**/*.{vue,ts,tsx,js,jsx} : Keep Pinia stores focused on global state, not component-specific data
Applied to files:
.cursor/rules/vue-stack-guide.mdc
📚 Learning: 2025-11-25T05:27:26.656Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: .cursor/rules/project-structure.mdc:0-0
Timestamp: 2025-11-25T05:27:26.656Z
Learning: Applies to src/renderer/**/*.{vue,js,ts} : Renderer process code should be placed in `src/renderer` (Vue 3 application)
Applied to files:
.cursor/rules/vue-stack-guide.mdc
📚 Learning: 2025-11-25T05:28:04.454Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: .cursor/rules/vue-shadcn.mdc:0-0
Timestamp: 2025-11-25T05:28:04.454Z
Learning: Applies to src/renderer/**/composables/*.ts : Use VueUse for common composables and utility functions
Applied to files:
.cursor/rules/vue-stack-guide.mdc
📚 Learning: 2025-11-25T05:27:12.209Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: .cursor/rules/llm-agent-loop.mdc:0-0
Timestamp: 2025-11-25T05:27:12.209Z
Learning: Implement separation of concerns where `src/main/presenter/llmProviderPresenter/index.ts` manages the Agent loop and conversation history, while Provider files handle LLM API interactions, Provider-specific request/response formatting, tool definition conversion, and native vs non-native tool call mechanisms
Applied to files:
AGENTS.md
📚 Learning: 2025-11-25T05:26:24.867Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: .cursor/rules/electron-best-practices.mdc:0-0
Timestamp: 2025-11-25T05:26:24.867Z
Learning: Applies to {src/main/presenter/**/*.ts,src/renderer/**/*.ts} : Implement proper inter-process communication (IPC) patterns using Electron's ipcRenderer and ipcMain APIs
Applied to files:
AGENTS.mdCLAUDE.md
📚 Learning: 2025-11-25T05:28:20.513Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T05:28:20.513Z
Learning: Require Node ≥ 20.19 and pnpm ≥ 10.11 (pnpm only, not npm) as the project toolchain
Applied to files:
AGENTS.md
📚 Learning: 2025-11-25T05:28:20.513Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T05:28:20.513Z
Learning: Applies to src/main/**/*.ts : Electron main process code belongs in `src/main/` with presenters in `presenter/` (Window/Tab/Thread/Mcp/Config/LLMProvider) and `eventbus.ts` for app events
Applied to files:
AGENTS.md
📚 Learning: 2025-11-25T05:28:20.513Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T05:28:20.513Z
Learning: Applies to src/main/**/*.ts : Use the Presenter pattern in the main process for UI coordination
Applied to files:
CLAUDE.md
📚 Learning: 2025-11-25T05:26:11.312Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-11-25T05:26:11.312Z
Learning: Applies to src/renderer/**/*.ts : Use the `usePresenter.ts` composable for renderer-to-main IPC communication to call presenter methods directly
Applied to files:
CLAUDE.md
📚 Learning: 2025-11-25T05:26:11.312Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-11-25T05:26:11.312Z
Learning: Applies to src/main/presenter/**/*.ts : Organize core business logic into dedicated Presenter classes, with one presenter per functional domain
Applied to files:
CLAUDE.md
📚 Learning: 2025-11-25T05:26:43.510Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: .cursor/rules/i18n.mdc:0-0
Timestamp: 2025-11-25T05:26:43.510Z
Learning: Applies to src/renderer/src/**/*.{vue,ts,tsx} : All user-facing strings must use i18n keys with vue-i18n framework in the renderer
Applied to files:
CLAUDE.md.cursor/rules/i18n.mdc
📚 Learning: 2025-11-25T05:28:04.454Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: .cursor/rules/vue-shadcn.mdc:0-0
Timestamp: 2025-11-25T05:28:04.454Z
Learning: Applies to src/renderer/**/*.{ts,tsx,vue} : Write concise, technical TypeScript code with accurate examples
Applied to files:
CLAUDE.md
📚 Learning: 2025-11-25T05:28:04.454Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: .cursor/rules/vue-shadcn.mdc:0-0
Timestamp: 2025-11-25T05:28:04.454Z
Learning: Applies to src/renderer/**/*.{ts,vue} : Use provide/inject for dependency injection when appropriate
Applied to files:
CLAUDE.md
📚 Learning: 2025-11-25T05:26:43.510Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: .cursor/rules/i18n.mdc:0-0
Timestamp: 2025-11-25T05:26:43.510Z
Learning: Applies to src/renderer/src/**/*.{vue,ts,tsx} : Avoid hardcoding user-facing text and ensure all user-visible text uses the i18n translation system
Applied to files:
CLAUDE.md.cursor/rules/i18n.mdc
📚 Learning: 2025-11-25T05:26:43.510Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: .cursor/rules/i18n.mdc:0-0
Timestamp: 2025-11-25T05:26:43.510Z
Learning: Applies to src/renderer/src/i18n/**/*.json : Maintain consistent key-value structure across all language translation files (zh-CN, en-US, ko-KR, ru-RU, zh-HK, fr-FR, fa-IR)
Applied to files:
.cursor/rules/i18n.mdc
📚 Learning: 2025-11-25T05:26:11.312Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-11-25T05:26:11.312Z
Learning: Applies to src/renderer/**/*.vue : All user-facing strings must use i18n keys via vue-i18n for internationalization
Applied to files:
.cursor/rules/i18n.mdc
📚 Learning: 2025-11-25T05:28:20.513Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T05:28:20.513Z
Learning: Applies to src/renderer/src/**/*.{ts,tsx,vue} : All user-facing strings must use vue-i18n keys in `src/renderer/src/i18n`
Applied to files:
.cursor/rules/i18n.mdc
📚 Learning: 2025-11-25T05:26:43.510Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: .cursor/rules/i18n.mdc:0-0
Timestamp: 2025-11-25T05:26:43.510Z
Learning: Applies to src/renderer/src/**/*.{vue,ts,tsx} : Import and use useI18n() composable with the t() function to access translations in Vue components and TypeScript files
Applied to files:
.cursor/rules/i18n.mdc
📚 Learning: 2025-11-25T05:26:43.510Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: .cursor/rules/i18n.mdc:0-0
Timestamp: 2025-11-25T05:26:43.510Z
Learning: Applies to src/renderer/src/**/*.{vue,ts,tsx} : Use the dynamic locale.value property to switch languages at runtime
Applied to files:
.cursor/rules/i18n.mdc
📚 Learning: 2025-11-25T05:26:43.510Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: .cursor/rules/i18n.mdc:0-0
Timestamp: 2025-11-25T05:26:43.510Z
Learning: Applies to src/renderer/src/i18n/**/*.json : Translation key naming convention: use dot-separated hierarchical structure with lowercase letters and descriptive names (e.g., 'common.button.submit')
Applied to files:
.cursor/rules/i18n.mdc
📚 Learning: 2025-11-25T05:26:15.929Z
Learnt from: CR
Repo: ThinkInAIXYZ/deepchat PR: 0
File: .cursor/rules/development-setup.mdc:0-0
Timestamp: 2025-11-25T05:26:15.929Z
Learning: Applies to **/*.{js,ts,jsx,tsx,mjs,cjs} : Write logs and comments in English
Applied to files:
.cursor/rules/i18n.mdc
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: build-check (x64)
🔇 Additional comments (9)
.cursor/rules/development-setup.mdc (4)
141-154: All referenced documentation files exist. Confirmed thatdocs/ARCHITECTURE.md,docs/FLOWS.md,docs/guides/code-navigation.md, anddocs/guides/getting-started.mdare present in the repository.
8-12: Requirements are accurately documented.Node.js and pnpm version requirements in
package.jsonmatch those specified in the documentation: Node.js ≥ 20.19.0 and pnpm ≥ 10.11.0. No changes needed.
1-5: The metadata and glob pattern configuration is intentional and appropriate.The empty
globs:field combined withalwaysApply: trueis the correct pattern for this file. This differs from the other Cursor rules (i18n.mdcandvue-stack-guide.mdc), which use specific glob patterns withalwaysApply: false. Development setup guidance should be globally accessible regardless of file type or location, making the "always apply" approach the right choice. No changes needed.
24-83: All npm script commands listed in the documentation exist inpackage.jsonand their descriptions are accurate. No discrepancies found between the documented commands and the actual scripts available in the project..cursor/rules/i18n.mdc (2)
14-28: All 12 supported locales listed in the documentation are properly configured and present in the codebase. Each locale directory (da-DK, en-US, fa-IR, fr-FR, he-IL, ja-JP, ko-KR, pt-BR, ru-RU, zh-CN, zh-HK, zh-TW) contains 20 JSON translation files. The documentation is accurate.
30-68: Update the i18n file structure diagram to match actual supported locales.The file structure diagram (lines 30-68) includes 11 locale directories, but the documented i18n translation file requirements specify only 7 supported locales: zh-CN, en-US, ko-KR, ru-RU, zh-HK, fr-FR, and fa-IR. Remove the unsupported locales from the diagram: ja-JP, zh-TW, pt-BR, and da-DK.
Likely an incorrect or invalid review comment.
CLAUDE.md (1)
192-196: Clear guidance directing to comprehensive SDD documentation.The new section provides a good bridge to the detailed spec-driven-dev.md, with key principles accurately summarized. Placement after code standards and before IPC communication is logical. The link and principle list will help developers understand the methodology before diving into implementation details.
docs/spec-driven-dev.md (1)
97-117: All code patterns are correct and accurately documented.Verification confirms that:
CONFIG_EVENTS.SETTING_CHANGEDexists insrc/main/events.tsand is properly exportedSendTarget.ALL_WINDOWSis defined as an enum insrc/main/eventbus.tswith 100+ uses across presentersusePresentercomposable exists atsrc/renderer/src/composables/usePresenter.tsand matches the documented API- All four pattern examples (Presenter signatures, EventBus communication, component-presenter integration, Vue 3 component setup) align with actual codebase implementations
The patterns provide clear, actionable examples that developers can follow directly.
.cursor/rules/vue-stack-guide.mdc (1)
386-418: Fix IPC communication and event handling patterns to match actual Electron APIs.The IPC example contains critical errors. The method name is incorrect—use
getConversationList()instead oflistConversations(). More importantly, the event handling pattern is fundamentally wrong. Events are not accessed via arendererEventsobject; instead, subscribe usingwindow.electron.ipcRenderer.on()with specific event constants and clean up withremoveListener().Corrected IPC Communication Example
import { usePresenter } from '@/composables/usePresenter' const presenter = usePresenter() // Call main process methods await presenter.agentPresenter.sendMessage(agentId, content) const result = await presenter.sessionPresenter.getConversationList(page, pageSize)Corrected Event Handling Example
import { CONVERSATION_EVENTS } from '@/events' import { onUnmounted } from 'vue' // Subscribe to events const handleListUpdate = (conversations) => { updateConversationList(conversations) } window.electron.ipcRenderer.on(CONVERSATION_EVENTS.LIST_UPDATED, (_, conversations) => { handleListUpdate(conversations) }) // Cleanup onUnmounted(() => { window.electron.ipcRenderer.removeListener(CONVERSATION_EVENTS.LIST_UPDATED, handleListUpdate) })⛔ Skipped due to learnings
Learnt from: CR Repo: ThinkInAIXYZ/deepchat PR: 0 File: .cursor/rules/electron-best-practices.mdc:0-0 Timestamp: 2025-11-25T05:26:24.867Z Learning: Applies to {src/main/presenter/**/*.ts,src/renderer/**/*.ts} : Implement proper inter-process communication (IPC) patterns using Electron's ipcRenderer and ipcMain APIsLearnt from: CR Repo: ThinkInAIXYZ/deepchat PR: 0 File: .cursor/rules/vue-shadcn.mdc:0-0 Timestamp: 2025-11-25T05:28:04.454Z Learning: Applies to src/renderer/**/*.{ts,tsx,vue} : Write concise, technical TypeScript code with accurate examplesLearnt from: CR Repo: ThinkInAIXYZ/deepchat PR: 0 File: .cursor/rules/vue-best-practices.mdc:0-0 Timestamp: 2025-11-25T05:27:45.545Z Learning: Applies to src/renderer/src/**/*.{vue,ts,tsx,js,jsx} : Use the Composition API for better code organization and reusability in Vue.js applicationsLearnt from: CR Repo: ThinkInAIXYZ/deepchat PR: 0 File: AGENTS.md:0-0 Timestamp: 2025-11-25T05:28:20.513Z Learning: Applies to src/main/**/*.ts : Electron main process code belongs in `src/main/` with presenters in `presenter/` (Window/Tab/Thread/Mcp/Config/LLMProvider) and `eventbus.ts` for app eventsLearnt from: CR Repo: ThinkInAIXYZ/deepchat PR: 0 File: .cursor/rules/vue-shadcn.mdc:0-0 Timestamp: 2025-11-25T05:28:04.454Z Learning: Applies to src/renderer/**/*.vue : Use composition API and declarative programming patterns; avoid options APILearnt from: CR Repo: ThinkInAIXYZ/deepchat PR: 0 File: AGENTS.md:0-0 Timestamp: 2025-11-25T05:28:20.513Z Learning: Applies to src/renderer/**/*.{ts,tsx,vue} : Vue 3 app code in `src/renderer/src` should be organized into `components/`, `stores/`, `views/`, `i18n/`, `lib/` directories with shell UI in `src/renderer/shell/`Learnt from: CR Repo: ThinkInAIXYZ/deepchat PR: 0 File: .cursor/rules/project-structure.mdc:0-0 Timestamp: 2025-11-25T05:27:26.656Z Learning: Applies to src/renderer/**/*.{vue,js,ts} : Renderer process code should be placed in `src/renderer` (Vue 3 application)Learnt from: CR Repo: ThinkInAIXYZ/deepchat PR: 0 File: CLAUDE.md:0-0 Timestamp: 2025-11-25T05:26:11.312Z Learning: Applies to src/renderer/**/*.vue : Ensure proper error handling and loading states in all UI componentsLearnt from: CR Repo: ThinkInAIXYZ/deepchat PR: 0 File: .cursor/rules/vue-shadcn.mdc:0-0 Timestamp: 2025-11-25T05:28:04.454Z Learning: Applies to src/renderer/**/*.{ts,vue} : Leverage ref, reactive, and computed for reactive state managementLearnt from: CR Repo: ThinkInAIXYZ/deepchat PR: 0 File: CLAUDE.md:0-0 Timestamp: 2025-11-25T05:26:11.312Z Learning: Applies to src/renderer/**/*.ts : Use the `usePresenter.ts` composable for renderer-to-main IPC communication to call presenter methods directlyLearnt from: CR Repo: ThinkInAIXYZ/deepchat PR: 0 File: AGENTS.md:0-0 Timestamp: 2025-11-25T05:28:20.513Z Learning: Applies to src/main/**/*.ts : Use the Presenter pattern in the main process for UI coordinationLearnt from: CR Repo: ThinkInAIXYZ/deepchat PR: 0 File: CLAUDE.md:0-0 Timestamp: 2025-11-25T05:26:11.312Z Learning: Applies to src/main/**/*.ts : Use EventBus from `src/main/eventbus.ts` for main-to-renderer communication, broadcasting events via `mainWindow.webContents.send()`Learnt from: CR Repo: ThinkInAIXYZ/deepchat PR: 0 File: .cursor/rules/electron-best-practices.mdc:0-0 Timestamp: 2025-11-25T05:26:24.867Z Learning: Applies to src/main/**/*.ts : Use EventBus pattern for inter-process communication within the main process to decouple modulesLearnt from: CR Repo: ThinkInAIXYZ/deepchat PR: 0 File: .cursor/rules/llm-agent-loop.mdc:0-0 Timestamp: 2025-11-25T05:27:12.209Z Learning: Applies to src/main/presenter/llmProviderPresenter/index.ts : In `src/main/presenter/llmProviderPresenter/index.ts`, listen for standardized events yielded by `coreStream` and handle them accordingly: buffer text content (`currentContent`), handle `tool_call_start/chunk/end` events by collecting tool details and calling `presenter.mcpPresenter.callTool`, send frontend events via `eventBus` with tool call status, format tool results for the next LLM call, and set `needContinueConversation = true`Learnt from: CR Repo: ThinkInAIXYZ/deepchat PR: 0 File: .cursor/rules/llm-agent-loop.mdc:0-0 Timestamp: 2025-11-25T05:27:12.209Z Learning: Implement separation of concerns where `src/main/presenter/llmProviderPresenter/index.ts` manages the Agent loop and conversation history, while Provider files handle LLM API interactions, Provider-specific request/response formatting, tool definition conversion, and native vs non-native tool call mechanismsLearnt from: CR Repo: ThinkInAIXYZ/deepchat PR: 0 File: AGENTS.md:0-0 Timestamp: 2025-11-25T05:28:20.513Z Learning: Applies to src/**/*.ts : Use EventBus for inter-process communication eventsLearnt from: CR Repo: ThinkInAIXYZ/deepchat PR: 0 File: .cursor/rules/llm-agent-loop.mdc:0-0 Timestamp: 2025-11-25T05:27:12.209Z Learning: Applies to src/main/presenter/llmProviderPresenter/index.ts : In `src/main/presenter/llmProviderPresenter/index.ts`, handle `reasoning`, `text`, `image_data`, and `usage` events by processing and forwarding them through `STREAM_EVENTS.RESPONSE` events to the frontend
Summary by CodeRabbit
Documentation
Chores
✏️ Tip: You can customize this high-level summary in your review settings.