Commit Graph

301 Commits

Author SHA1 Message Date
ruitanglin
bcbbf9cf3f fix(citations): only render CitationLink badges for AI messages
Human messages should display links as plain underlined text,
not as citation badges. This preserves the original user input
appearance when users paste URLs in their messages.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 14:28:28 +08:00
ruitanglin
0f9e3d508b fix(citations): improve citation link rendering and copy behavior
- Use citation.title for display text in CitationLink to ensure correct
  titles show during streaming (instead of generic "Source" text)
- Render all external links as CitationLink badges for consistent styling
  during streaming output
- Add removeAllCitations when copying message content to clipboard
- Simplify citations_format prompt for cleaner AI output

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-04 16:34:12 +08:00
ruitanglin
1e2675beb3 feat(citations): add shared citation components and optimize code
## New Features
- Add `CitationLink` shared component for rendering citation hover cards
- Add `CitationsLoadingIndicator` component for showing loading state
- Add `removeAllCitations` utility to strip all citations from content
- Add backend support for removing citations when downloading markdown files
- Add i18n support for citation loading messages (en-US, zh-CN)

## Code Optimizations
- Remove duplicate `ExternalLinkBadge` component, reuse `CitationLink` instead
- Consolidate `remarkPlugins` config in `streamdownPlugins` to avoid duplication
- Remove unused imports: `Citation`, `buildCitationMap`, `extractDomainFromUrl`, etc.
- Remove unused `messages` parameter from `ToolCall` component
- Remove unused `isWriteFile` parameter from `ArtifactFilePreview` component
- Remove unused `useI18n` hook from `MessageContent` component

## Bug Fixes
- Fix `remarkGfm` plugin configuration that prevented table rendering
- Fix React Hooks rule violation: move `useMemo` to component top level
- Replace `||` with `??` for nullish coalescing in clipboard data

## Code Cleanup
- Remove debug console.log/info statements from:
  - `threads/hooks.ts`
  - `notification/hooks.ts`
  - `memory-settings-page.tsx`
- Fix import order in `message-group.tsx`

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-04 11:56:10 +08:00
Henry Li
552d1c3a9a feat: add memory settings page 2026-02-03 18:18:56 +08:00
Henry Li
1cf081120e chore: add /api/memory 2026-02-03 15:21:15 +08:00
hetaoBackend
5682f7b67d fix: add file mtime-based cache invalidation for memory data
Implement automatic cache invalidation based on file modification time to ensure memory data consistency across Gateway API and agent prompts. The cache now automatically reloads when the memory file is updated externally.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-03 13:50:01 +08:00
hetaoBackend
74d47ad87f feat: add memory API and optimize memory middleware
- Add memory API endpoints for retrieving memory data:
  - GET /api/memory - get current memory data
  - POST /api/memory/reload - reload from file
  - GET /api/memory/config - get memory configuration
  - GET /api/memory/status - get config and data together
- Optimize MemoryMiddleware to only use user inputs and final
  assistant responses, filtering out intermediate tool calls
- Add memory configuration example to config.example.yaml

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 13:41:04 +08:00
hetaoBackend
ffd07bbafe feat: add global memory mechanism for personalized conversations
Implement a memory system that stores user context and conversation history
in memory.json, uses LLM to summarize conversations, and injects relevant
context into system prompts for personalized responses.

Key components:
- MemoryConfig for configuration management
- MemoryUpdateQueue with debounce for batch processing
- MemoryUpdater for LLM-based memory extraction
- MemoryMiddleware to queue conversations after agent execution
- Memory injection into lead agent system prompt

Note: Add memory section to config.yaml to enable (see config.example.yaml)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 13:31:05 +08:00
Henry Li
4fd9a2de8e docs: add README.md 2026-02-02 23:24:58 +08:00
Henry Li
268b7f911c fix: fix position 2026-02-02 16:40:43 +08:00
Henry Li
8bc9d1b226 fix: set default state for todo list collapse to true 2026-02-02 14:46:26 +08:00
Henry Li
e01127eec9 fix: set default state for todo list collapse to false 2026-02-02 14:46:10 +08:00
Henry Li
26acd6f3ad feat: enhance welcome component and input box with skill mode handling and localization updates 2026-02-02 14:44:23 +08:00
Henry Li
9cc41139cb feat: update button in skill settings to include icon 2026-02-02 14:31:44 +08:00
Henry Li
207cb2b98d feat: use list of links 2026-02-02 13:25:21 +08:00
Henry Li
b5e9eeea99 feat: update button styling for artifacts tooltip 2026-02-02 11:43:02 +08:00
Henry Li
e673405c00 feat: add suggestions 2026-02-02 11:21:30 +08:00
Henry Li
b1227bb911 feat: integrate PromptInputProvider into ChatLayout and utilize prompt input controller in ChatPage 2026-02-02 10:18:02 +08:00
Henry Li
f1db301d77 feat: add file icons 2026-02-02 10:02:31 +08:00
Henry Li
02400e0e8c feat: add file icon 2026-02-02 09:49:44 +08:00
Henry Li
0091da1aee feat: adjust tooltips 2026-02-02 09:32:18 +08:00
Henry Li
076c1f0985 feat: wrap path and command in Tooltip for enhanced user experience 2026-02-02 09:23:36 +08:00
Henry Li
33e82a7abe fix: update TooltipContent component to handle sideOffset correctly and add shadow styling 2026-02-02 09:23:24 +08:00
Henry Li
ac16a73a47 docs: add comments 2026-02-02 09:11:05 +08:00
Henry Li
7da0a03dd0 feat: add skeleton 2026-02-02 09:05:33 +08:00
Henry Li
1eb4da6c75 feat: dynamic title 2026-02-02 09:05:24 +08:00
Henry Li
b50fbf83d0 feat: use create skill as title 2026-02-02 08:43:37 +08:00
hetaoBackend
7fd5ba258d feat: add find-skills skill for discovering agent skills
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 23:54:08 +08:00
hetaoBackend
4f4b7cde2e docs: add comprehensive backend documentation
- Add README.md with project overview, quick start, and API reference
- Add CONTRIBUTING.md with development setup and contribution guidelines
- Add docs/ARCHITECTURE.md with detailed system architecture diagrams
- Add docs/API.md with complete API reference for LangGraph and Gateway
- Add docs/README.md as documentation index
- Update CLAUDE.md with improved structure and new features
- Update docs/TODO.md to reflect current status
- Update pyproject.toml description

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 22:18:25 +08:00
Henry Li
890a8379ce feat: update skills 2026-02-01 11:12:08 +08:00
Henry Li
e28d5d2cf9 docs: update artifacts 2026-02-01 11:05:00 +08:00
Henry Li
88e1c7c0b3 feat: add new demo 2026-02-01 10:58:27 +08:00
Henry Li
f656fd0768 feat: update github-deep-research skill 2026-02-01 10:55:21 +08:00
Henry Li
a1267875fa feat: add tooltip for installation 2026-02-01 10:55:08 +08:00
Henry Li
469e044935 feat: add github-deep-research skill 2026-02-01 10:54:19 +08:00
Henry Li
45fab66a7d fix: add translations 2026-01-31 22:49:59 +08:00
Henry Li
7d3e7eb1c9 docs: rephrasing 2026-01-31 22:42:17 +08:00
Henry Li
67ec1162cb feat: implement create skill 2026-01-31 22:31:25 +08:00
hetaoBackend
41f8b931c9 feat: add .skill file preview support
Enable previewing .skill files (ZIP archives) by extracting and displaying
their SKILL.md content. Add caching to avoid repeated ZIP extraction.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 22:27:06 +08:00
hetaoBackend
5834b15af7 feat: add skill installation API endpoint
Add POST /api/skills/install endpoint to install .skill files from
thread's user-data directory. The endpoint extracts the ZIP archive,
validates SKILL.md frontmatter, and installs to skills/custom/.

Frontend Install buttons now call the API instead of downloading.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 22:10:05 +08:00
hetaoBackend
c76481d8f7 refactor: update skills XML format in prompt template
Change skills rendering from attribute-based format to nested element format
with <available_skills>, <skill>, <name>, <description>, and <location> tags
for better readability and structure.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 21:54:29 +08:00
Henry Li
8ecb6b3d1d fix: fix eslint errors and warnings 2026-01-31 21:46:31 +08:00
Henry Li
9c3b928f1d feat: preview the message if possible 2026-01-31 20:22:15 +08:00
Henry Li
2ba687b239 fix: fix eslint errors 2026-01-31 11:11:13 +08:00
Henry Li
c62caf95c4 feat: add notification 2026-01-31 11:08:27 +08:00
Henry Li
4e0571f3b3 feat: change email 2026-01-30 22:32:47 +08:00
hetaoBackend
8182ed3737 fix: fix aio sandbox shutdown bug 2026-01-30 22:02:07 +08:00
Henry Li
21e12d91eb fix: fix condition of displaying artifacts 2026-01-30 21:51:18 +08:00
Henry Li
1bb91bb267 feat: support Github Flavored Markdown 2026-01-30 16:41:18 +08:00
Henry Li
05794e29d1 chore: remove 2026-01-30 11:01:09 +08:00