Commit Graph

4934 Commits

Author SHA1 Message Date
Phantom
b647017c43
ci: auto i18n (#9889)
* refactor(i18n): 将日语和俄语迁移到translate目录

* refactor(i18n): 将日语和俄语翻译文件移动到机器翻译目录

* docs(i18n): 更新翻译目录的README说明

* ci: 添加自动国际化翻译的 GitHub Actions 工作流

* Potential fix for code scanning alert no. 48: Workflow does not contain permissions

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* fix(i18n): 修复国际化文件末尾缺少换行符的问题

* ci(workflow): 修改自动i18n工作流触发条件为pull_request

将触发条件从push到main分支改为在pull_request的opened、synchronize和reopened事件时触发

* ci(workflow): 更新自动i18n工作流的权限和推送配置

添加pull-requests写入权限以支持PR操作
将推送动作更新为github-push-action并改为推送至PR分支

* ci(github): 更新自动i18n工作流以支持PR分支

修改自动i18n工作流,在检出步骤中添加ref参数以支持PR分支
更新提交消息格式以包含PR编号

* ci(workflows): 更新自动i18n工作流以使用yarn

将依赖管理从npm切换到yarn,并添加corepack启用步骤

* ci(workflow): 优化自动翻译工作流的依赖安装步骤

修改依赖安装命令,使用更精确的参数避免不必要的锁定文件生成,并确保安装开发依赖

* ci(workflow): 更新i18n翻译脚本的执行方式

* ci(workflow): 移除不必要的生产环境标志以简化依赖安装

移除 yarn add 命令中的 --production=false 标志,因为在此上下文中不需要区分生产环境依赖

* ci(workflow): 更新依赖安装命令以跳过构建步骤

* fix(i18n): Auto update translations for PR #9889

* ci(workflow): 优化依赖安装步骤以减少构建时间

将直接使用yarn安装依赖改为在临时目录中通过npm安装,避免全局安装影响

* ci(i18n): 在自动翻译工作流中忽略 package.json 和 yarn.lock 的更改

重置 package.json 和 yarn.lock 的更改,避免在自动更新翻译时提交这些文件

* ci(workflow): 简化自动i18n工作流的依赖安装步骤

移除不必要的corepack启用步骤,直接使用npm安装所需依赖

* Revert "fix(i18n): Auto update translations for PR #9889"

This reverts commit 23a4a366e1.

* ci(workflow): 将 npm 安装改为 yarn 全局安装依赖以简化命令

* ci(workflow): 将依赖安装从yarn改为npm

* ci(workflow): 修改i18n工作流以隔离依赖安装

将全局依赖安装改为在临时目录中安装,避免污染全局环境
使用npx运行tsx以确保使用正确版本的依赖

* fix(i18n): Auto update translations for PR #9889

* ci(workflow): 更新自动翻译工作流配置

移除 yarn 相关配置并更新翻译脚本文件名

* fix(i18n): Auto update translations for PR #9889

* ci(workflow): 在自动翻译工作流中添加prettier格式化步骤

添加prettier及其json排序插件用于自动格式化翻译后的i18n文件,确保代码风格一致

* Revert "fix(i18n): Auto update translations for PR #9889"

This reverts commit 423ca8fb03.

* ci(workflow): 修复自动翻译工作流中prettier路径问题

* fix(i18n): Auto update translations for PR #9889

* fix(i18n): 修正西班牙语翻译中的字幕文件字段

* ci(i18n): 添加无变更时的检查逻辑

避免在没有翻译变更时生成空提交

---------

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: GitHub Action <action@github.com>
2025-09-04 19:51:15 +08:00
LiuVaayne
3a8a603527
ci: Add Claude Code GitHub Workflow (#9893)
* "Claude PR Assistant workflow"

* "Claude Code Review workflow"

* fix: update OAuth token variable in Claude workflows
2025-09-04 19:43:04 +08:00
Chen Tao
b6d10656f9
feat: refactor Knowledge Base (#8384)
Co-authored-by: icarus <eurfelux@gmail.com>
Co-authored-by: eeee0717 <chentao020717@outlook.com>
2025-09-04 17:23:31 +08:00
Lin Manhui
7de31d8cb6
feat: Add PaddleOCR as a new OCR provider (#9876)
* feat: support PaddleOCR as an OCR provider

* style: fix format

* fix: update persistReducer version

* update wrt comments

* fix(ocr): 修复迁移147中OCR提供商的设置错误

将直接赋值改为使用addOcrProvider方法添加内置PaddleOCR提供商,确保正确初始化OCR服务

* Replace bare fetch with net.fetch

* Use '\n' as delimiter

* Optimize code wrt comments

* Add tip

---------

Co-authored-by: icarus <eurfelux@gmail.com>
2025-09-04 17:13:58 +08:00
LiuVaayne
cac84a8795
refactor(mcp): enhance MCPService logging and error handling (#9878) 2025-09-04 14:52:47 +08:00
MyPrototypeWhat
a227f6dcb9
Feat/aisdk package (#7404)
* feat: enhance AI SDK middleware integration and support

- Added AiSdkMiddlewareBuilder for dynamic middleware construction based on various conditions.
- Updated ModernAiProvider to utilize new middleware configuration, improving flexibility in handling completions.
- Refactored ApiService to pass middleware configuration during AI completions, enabling better control over processing.
- Introduced new README documentation for the middleware builder, outlining usage and supported conditions.

* feat: enhance AI core functionality with smoothStream integration

- Added smoothStream to the middleware exports in index.ts for improved streaming capabilities.
- Updated PluginEnabledAiClient to conditionally apply middlewares, removing the default simulateStreamingMiddleware.
- Modified ModernAiProvider to utilize smoothStream in streamText, enhancing text processing with configurable chunking and delay options.

* feat: enhance AI SDK documentation and client functionality

- Added detailed usage examples for the native provider registry in the README.md, demonstrating how to create and utilize custom provider registries.
- Updated ApiClientFactory to enforce type safety for model instances.
- Refactored PluginEnabledAiClient methods to support both built-in logic and custom registry usage for text and object generation, improving flexibility and usability.

* refactor: update AiSdkToChunkAdapter and middleware for improved chunk handling

- Modified convertAndEmitChunk method to handle new chunk types and streamline processing.
- Adjusted thinkingTimeMiddleware to remove unnecessary parameters and enhance clarity.
- Updated middleware integration in AiSdkMiddlewareBuilder for better middleware management.

* feat: add Cherry Studio transformation and settings plugins

- Introduced cherryStudioTransformPlugin for converting Cherry Studio messages to AI SDK format, enhancing compatibility.
- Added cherryStudioSettingsPlugin to manage Assistant settings like temperature and TopP.
- Implemented createCherryStudioContext function for preparing context metadata for Cherry Studio calls.

* fix: refine experimental_transform handling and improve chunking logic

- Updated PluginEnabledAiClient to streamline the handling of experimental_transform parameters.
- Adjusted ModernAiProvider's smoothStream configuration for better chunking of text, enhancing processing efficiency.
- Re-enabled block updates in messageThunk for improved state management.

* refactor: update ApiClientFactory and index_new for improved type handling and provider mapping

- Changed the type of options in ClientConfig to 'any' for flexibility.
- Overloaded createImageClient method to support different provider settings.
- Added vertexai mapping to the provider type mapping in index_new.ts for enhanced compatibility.

* feat: enhance AI SDK documentation and client functionality

- Added detailed usage examples for the native provider registry in the README.md, demonstrating how to create and utilize custom provider registries.
- Updated ApiClientFactory to enforce type safety for model instances.
- Refactored PluginEnabledAiClient methods to support both built-in logic and custom registry usage for text and object generation, improving flexibility and usability.

* feat: add openai-compatible provider and enhance provider configuration

- Introduced the @ai-sdk/openai-compatible package to support compatibility with OpenAI.
- Added a new ProviderConfigFactory and ProviderConfigBuilder for streamlined provider configuration.
- Updated the provider registry to include the new Google Vertex AI import path.
- Enhanced the index.ts to export new provider configuration utilities for better type safety and usability.
- Refactored ApiService and middleware to integrate the new provider configurations effectively.

* feat: enhance Vertex AI provider integration and configuration

- Added support for Google Vertex AI credentials in the provider configuration.
- Refactored the VertexAPIClient to handle both standard and VertexProvider types.
- Implemented utility functions to check Vertex AI configuration completeness and create VertexProvider instances.
- Updated provider mapping in index_new.ts to ensure proper handling of Vertex AI settings.

* feat: enhance provider options and examples for AI SDK

- Introduced new utility functions for creating and merging provider options, improving type safety and usability.
- Added comprehensive examples for OpenAI, Anthropic, Google, and generic provider options to demonstrate usage.
- Refactored existing code to streamline provider configuration and enhance clarity in the options management.
- Updated the PluginEnabledAiClient to simplify the handling of model parameters and improve overall functionality.

* feat: add patch for Google Vertex AI and enhance private key handling

- Introduced a patch for the @ai-sdk/google-vertex package to improve URL handling based on region.
- Added a new utility function to format private keys, ensuring correct PEM structure and validation.
- Updated the ProviderConfigBuilder to utilize the new private key formatting function for Google credentials.
- Created a pnpm workspace configuration to manage patched dependencies effectively.

* feat: add OpenAI Compatible provider and enhance provider configuration

- Introduced a new OpenAI Compatible provider to the AiProviderRegistry, allowing for integration with the @ai-sdk/openai-compatible package.
- Updated provider configuration logic to support the new provider, including adjustments to API host formatting and options management.
- Refactored middleware to streamline handling of OpenAI-specific configurations.

* fix: enhance anthropic provider configuration and middleware handling

- Updated providerToAiSdkConfig to support both OpenAI and Anthropic providers, improving flexibility in API host formatting.
- Refactored thinkingTimeMiddleware to ensure all chunks are correctly enqueued, enhancing middleware functionality.
- Corrected parameter naming in getAnthropicReasoningParams for consistency and clarity in configuration.

* feat: enhance AI SDK chunk handling and tool call processing

- Introduced ToolCallChunkHandler for managing tool call events and results, improving the handling of tool interactions.
- Updated AiSdkToChunkAdapter to utilize the new handler, streamlining the processing of tool call chunks.
- Refactored transformParameters to support dynamic tool integration and improved parameter handling.
- Adjusted provider mapping in factory.ts to include new provider types, enhancing compatibility with various AI services.
- Removed obsolete cherryStudioTransformPlugin to clean up the codebase and focus on more relevant functionality.

* feat: enhance provider ID resolution in AI SDK

- Updated getAiSdkProviderId function to include mapping for provider types, improving compatibility with third-party SDKs.
- Refined return logic to ensure correct provider ID resolution, enhancing overall functionality and support for various providers.

* refactor: restructure AI Core architecture and enhance client functionality

- Updated the AI Core documentation to reflect the new architecture and design principles, emphasizing modularity and type safety.
- Refactored the client structure by removing obsolete files and consolidating client creation logic into a more streamlined format.
- Introduced a new core module for managing execution and middleware, improving the overall organization of the codebase.
- Enhanced the orchestration layer to provide a clearer API for users, integrating the creation and execution processes more effectively.
- Added comprehensive type definitions and utility functions for better type safety and usability across the SDK.

* refactor: simplify AI Core architecture and enhance runtime execution

- Restructured the AI Core documentation to reflect a simplified two-layer architecture, focusing on clear responsibilities between models and runtime layers.
- Removed the orchestration layer and consolidated its functionality into the runtime layer, streamlining the API for users.
- Introduced a new runtime executor for managing plugin-enhanced AI calls, improving the handling of execution and middleware.
- Updated the core modules to enhance type safety and usability, including comprehensive type definitions for model creation and execution configurations.
- Removed obsolete files and refactored existing code to improve organization and maintainability across the SDK.

* feat: enhance AI Core runtime with advanced model handling and middleware support

- Introduced new high-level APIs for model creation and configuration, improving usability for advanced users.
- Enhanced the RuntimeExecutor to support both direct model usage and model ID resolution, allowing for more flexible execution options.
- Updated existing methods to accept middleware configurations, streamlining the integration of custom processing logic.
- Refactored the plugin system to better accommodate middleware, enhancing the overall extensibility of the AI Core.
- Improved documentation to reflect the new capabilities and usage patterns for the runtime APIs.

* feat: enhance plugin system with new reasoning and text plugins

- Introduced `reasonPlugin` and `textPlugin` to improve chunk processing and handling of reasoning content.
- Updated `transformStream` method signatures for better type safety and usability.
- Enhanced `ThinkingTimeMiddleware` to accurately track thinking time using `performance.now()`.
- Refactored `ThinkingBlock` component to utilize block thinking time directly, improving performance and clarity.
- Added logging for middleware builder to assist in debugging and monitoring middleware configurations.

* refactor: update RuntimeExecutor and introduce MCP Prompt Plugin

- Changed `pluginClient` to `pluginEngine` in `RuntimeExecutor` for clarity and consistency.
- Updated method calls in `RuntimeExecutor` to use the new `pluginEngine`.
- Enhanced `AiSdkMiddlewareBuilder` to include `mcpTools` in the middleware configuration.
- Added `MCPPromptPlugin` to support tool calls within prompts, enabling recursive processing and improved handling of tool interactions.
- Updated `ApiService` to pass `mcpTools` during chat completion requests, enhancing integration with the new plugin system.

* feat: enhance MCP Prompt plugin and recursive call capabilities

- Updated `tsconfig.web.json` to support wildcard imports for `@cherrystudio/ai-core`.
- Enhanced `package.json` to include type definitions and imports for built-in plugins.
- Introduced recursive call functionality in `PluginManager` and `PluginEngine`, allowing for improved handling of tool interactions.
- Added `MCPPromptPlugin` to facilitate tool calls within prompts, enabling recursive processing of tool results.
- Refactored `transformStream` methods across plugins to accommodate new parameters and improve type safety.

* <type>: <subject>
<body>
<footer>
用來簡要描述影響本次變動,概述即可

* feat: enhance MCP Prompt plugin with recursive call support and context handling

- Updated `AiRequestContext` to enforce `recursiveCall` and added `isRecursiveCall` for better state management.
- Modified `createContext` to initialize `recursiveCall` with a placeholder function.
- Enhanced `MCPPromptPlugin` to utilize a custom `createSystemMessage` function for improved message handling during recursive calls.
- Refactored `PluginEngine` to manage recursive call states, ensuring proper execution flow and context integrity.

* feat: update package dependencies and introduce new patches for AI SDK tools

- Added patches for `@ai-sdk/google-vertex` and `@ai-sdk/openai-compatible` to enhance functionality and fix issues.
- Updated `package.json` to reflect new dependency versions and patch paths.
- Refactored `transformParameters` and `ApiService` to support new tool configurations and improve parameter handling.
- Introduced utility functions for setting up tools and managing options, enhancing the overall integration of tools within the AI SDK.

* refactor: disable console logging in MCP Prompt plugin for cleaner output

- Commented out console log statements in the `createMCPPromptPlugin` to reduce noise during execution.
- Maintained the structure and functionality of the plugin while improving readability and performance.

* feat: enhance ModernAiProvider with new reasoning plugins and dynamic middleware construction

- Introduced `reasoningTimePlugin` and `smoothReasoningPlugin` to improve reasoning content handling and processing.
- Refactored `ModernAiProvider` to dynamically build plugin arrays based on middleware configuration, enhancing flexibility.
- Removed the obsolete `ThinkingTimeMiddleware` to streamline middleware management.
- Updated `buildAiSdkMiddlewares` to reflect changes in middleware handling and improve clarity in the configuration process.
- Enhanced logging for better visibility into plugin and middleware configurations during execution.

* feat: introduce MCP Prompt Plugin and refactor built-in plugin structure

- Added `mcpPromptPlugin.ts` to encapsulate MCP Prompt functionality, providing a structured approach for tool calls within prompts.
- Updated `index.ts` to reference the new `mcpPromptPlugin`, enhancing modularity and clarity in the built-in plugins.
- Removed the outdated `example-plugins.ts` file to streamline the plugin directory and focus on essential components.

* refactor: rename and restructure message handling in Conversation and Orchestrate services

- Renamed `prepareMessagesForLlm` to `prepareMessagesForModel` in `ConversationService` for clarity.
- Updated `OrchestrationService` to use the new method name and introduced a new function `transformMessagesAndFetch` for improved message processing.
- Adjusted imports in `messageThunk` to reflect the changes in the orchestration service, enhancing code readability and maintainability.

* refactor: streamline error handling and logging in ModernAiProvider

- Commented out the try-catch block in the `ModernAiProvider` class to simplify the code structure.
- Enhanced readability by removing unnecessary error logging while maintaining the core functionality of the AI processing flow.
- Updated `messageThunk` to incorporate an abort controller for improved request management during message processing.

* fix: update reasoningTimePlugin and smoothReasoningPlugin for improved performance tracking

- Changed the invocation of `reasoningTimePlugin` to a direct reference in `ModernAiProvider`.
- Initialized `thinkingStartTime` with `performance.now()` in `reasoningTimePlugin` for accurate timing.
- Removed `thinking_millsec` from the enqueued chunks in `smoothReasoningPlugin` to streamline data handling.
- Added console logging for performance tracking in `reasoningTimePlugin` to aid in debugging.

* feat: extend buildStreamTextParams to include capabilities for enhanced AI functionality

- Updated the return type of `buildStreamTextParams` to include `capabilities` for reasoning, web search, and image generation.
- Modified `fetchChatCompletion` to utilize the new capabilities structure, improving middleware configuration based on model capabilities.

* refactor: simplify provider validation and enhance plugin configuration

- Commented out the provider support check in `RuntimeExecutor` to streamline initialization.
- Updated `providerToAiSdkConfig` to utilize `AiCore.isSupported` for improved provider validation.
- Enhanced middleware configuration in `ModernAiProvider` to ensure tools are only added when enabled and available.
- Added comments in `transformParameters` for clarity on parameter handling and plugin activation.

* refactor: remove OpenRouter provider support and streamline reasoning logic

- Commented out the OpenRouter provider in `registry.ts` and related configurations due to excessive bugs.
- Simplified reasoning logic in `transformParameters.ts` and `options.ts` by removing unnecessary checks for `enableReasoning`.
- Enhanced logging in `transformParameters.ts` to provide better insights into reasoning capabilities.
- Updated `getReasoningEffort` to handle cases where reasoning effort is not defined, improving model compatibility.

* chore: update OpenRouter provider to version 0.7.2 and add support functions

- Updated the OpenRouter provider dependency in `package.json` and `yarn.lock` to version 0.7.2.
- Added a new function `createOpenRouterOptions` in `factory.ts` for creating OpenRouter provider options.
- Updated type definitions in `types.ts` and `registry.ts` to include OpenRouter provider settings, enhancing provider management.

* refactor: streamline reasoning plugins and remove unused components

- Removed the `reasoningTimePlugin` and `mcpPromptPlugin` to simplify the plugin architecture.
- Updated the `smoothReasoningPlugin` to enhance its functionality and reduce delay in processing.
- Adjusted the `textPlugin` to align with the new delay settings for smoother output.
- Modified the `ModernAiProvider` to utilize the updated `smoothReasoningPlugin` without the removed plugins.

* refactor: update reasoning plugins and enhance performance

- Replaced `smoothReasoningPlugin` with `reasoningTimePlugin` to improve reasoning time tracking.
- Commented out the unused `textPlugin` in the plugin list for better clarity.
- Adjusted delay settings in both `smoothReasoningPlugin` and `textPlugin` for optimized processing.
- Enhanced logging in reasoning plugins for better debugging and performance insights.

* feat: implement useSmoothStream hook for dynamic text rendering

- Added a new custom hook `useSmoothStream` to manage smooth text streaming with adjustable delays.
- Integrated the `useSmoothStream` hook into the `Markdown` component to enhance content display during streaming.
- Improved state management for displayed content and stream completion status in the `Markdown` component.

* feat: enhance OpenAI provider handling and add providerParams utility module

- Updated the `createBaseModel` function to handle OpenAI provider responses in strict mode.
- Modified `providerToAiSdkConfig` to include specific options for OpenAI when in strict mode.
- Introduced a new utility module `providerParams.ts` for managing provider-specific parameters, including OpenAI, Anthropic, and Gemini configurations.
- Added functions to retrieve service tiers, specific parameters, and reasoning efforts for various providers, improving overall provider management.

* feat: enhance OpenAI model handling with utility function

- Introduced `isOpenAIChatCompletionOnlyModel` utility function to determine if a model ID corresponds to OpenAI's chat completion-only models.
- Updated `createBaseModel` function to utilize the new utility for improved handling of OpenAI provider responses in strict mode.
- Refactored reasoning parameters in `getOpenAIReasoningParams` for consistency and clarity.

* refactor: remove providerParams utility module

* feat: add web search plugin for enhanced AI provider capabilities

- Introduced a new `webSearchPlugin` to provide unified web search functionality across multiple AI providers.
- Added helper functions for adapting web search parameters for OpenAI, Gemini, and Anthropic providers.
- Updated the built-in plugin index to export the new web search plugin and its configuration type.
- Created a new `helper.ts` file to encapsulate web search adaptation logic and support checks for provider compatibility.

* chore: migrate to v5

* refactor: migrate to v5 patch-1

* fix: unexpected chunk

* refactor: streamline model configuration and factory functions

- Updated the `createModel` function to accept a simplified `ModelConfig` interface, enhancing clarity and usability.
- Refactored `createBaseModel` to destructure parameters for better readability and maintainability.
- Removed the `ModelCreator.ts` file as its functionality has been integrated into the factory functions.
- Adjusted type definitions in `types.ts` to reflect changes in model configuration structure, ensuring consistency across the codebase.

* refactor: migrate to v5 patch-2

* fix(provider):  config error

* fix(provider): config error patch-1

* feat: support image

* refactor: enhance model configuration and plugin execution

- Simplified the `createModel` function to directly accept the `ModelConfig` object, improving clarity.
- Updated `createBaseModel` to include `extraModelConfig` for extended configuration options.
- Introduced `executeConfigureContext` method in `PluginManager` to handle context configuration for plugins.
- Adjusted type definitions in `types.ts` to ensure consistency with the new configuration structure.
- Refactored plugin execution methods in `PluginEngine` to utilize the resolved model directly, enhancing the flow of data through the plugin system.

* fix: openai-gemini support

* refactor: update type exports and enhance web search functionality

- Added `ReasoningPart`, `FilePart`, and `ImagePart` to type exports in `index.ts`.
- Refactored `transformParameters.ts` to include `enableWebSearch` option and integrate web search tools.
- Introduced new utility `getWebSearchTools` in `websearch.ts` to manage web search tool configurations based on model type.
- Commented out deprecated code in `smoothReasoningPlugin.ts` and `textPlugin.ts` for potential removal.

* fix: format apihost

* feat: add XAI provider options and enhance web search plugin

- Introduced `createXaiOptions` function for XAI provider configuration.
- Added `XaiProviderOptions` type and validation schema in `xai.ts`.
- Updated `ProviderOptionsMap` to include XAI options.
- Enhanced `webSearchPlugin` to support XAI-specific search parameters.
- Refactored helper functions to integrate new XAI options into provider configurations.

* feat: conditionally enable web search plugin based on configuration

- Updated the logic to add the `webSearchPlugin` only if `middlewareConfig.enableWebSearch` is true.
- Added comments to clarify the use of default search parameters and configuration options.

* feat: aihubmix support

* refactor: improve web search plugin and middleware integration

- Cleaned up the web search plugin code by commenting out unused sections for clarity.
- Enhanced middleware handling for the OpenAI provider by wrapping the logic in a block for better readability.
- Removed redundant imports from various files to streamline the codebase.
- Added `enableWebSearch` parameter to the fetchChatCompletion function for improved functionality.

* fix: azure-openai provider

* feat: enhance web search plugin configuration

- Added `sources` array to the default web search configuration, allowing for multiple source types including 'web', 'x', and 'news'.
- This update improves the flexibility and functionality of the web search plugin.

* chore: update ai package version to 5.0.0-beta.9 in package.json and yarn.lock

* feat: enhance model handling and provider integration

- Updated `createBaseModel` to differentiate between OpenAI chat and response models.
- Introduced new utility functions for model identification: `isOpenAIReasoningModel`, `isOpenAILLMModel`, and `getModelToProviderId`.
- Improved `transformParameters` to conditionally set the system prompt based on the assistant's prompt.
- Refactored `getAiSdkProviderIdForAihubmix` to simplify provider identification logic.
- Enhanced `getAiSdkProviderId` to support provider type checks.

* feat: enhance web search plugin and tool handling

- Refactored `helper.ts` to export new types `AnthropicSearchInput` and `AnthropicSearchOutput` for better integration with the web search plugin.
- Updated `index.ts` to include the new types in the exports for improved type safety.
- Modified `AiSdkToChunkAdapter.ts` to handle tool calls more flexibly by introducing a `GenericProviderTool` type, allowing for better differentiation between MCP tools and provider-executed tools.
- Adjusted `handleTooCallChunk.ts` to accommodate the new tool type structure, enhancing the handling of tool call responses.
- Updated type definitions in `index.ts` to reflect changes in tool handling logic.

* feat: enhance provider settings and model configuration

- Updated `ModelConfig` to include a `mode` property for better differentiation between 'chat' and 'responses'.
- Modified `createBaseModel` to conditionally set the provider based on the new `mode` property in `providerSettings`.
- Refactored `RuntimeExecutor` to utilize the updated `ModelConfig` for improved type safety and clarity in provider settings.
- Adjusted imports in `executor.ts` and `types.ts` to align with the new model configuration structure.

* feat: enhance AiSdkToChunkAdapter for web search results handling

- Updated `AiSdkToChunkAdapter` to include `webSearchResults` in the final output structure for improved web search integration.
- Modified `convertAndEmitChunk` method to handle `finish-step` events, differentiating between Google and other web search results.
- Adjusted the handling of `source` events to accumulate web search results for better processing.
- Enhanced citation formatting in `messageBlock.ts` to support new web search result structures.

* feat: integrate web search tool and enhance tool handling

- Added `webSearchTool` to facilitate web search functionality within the SDK.
- Updated `AiSdkToChunkAdapter` to utilize `BaseTool` for improved type handling.
- Refactored `transformParameters` to support `webSearchProviderId` for enhanced web search integration.
- Introduced new `BaseTool` type structure to unify tool definitions across the codebase.
- Adjusted imports and type definitions to align with the new tool handling logic.

* feat: enhance web search functionality and tool integration

- Introduced `extractSearchKeywords` function to facilitate keyword extraction from user messages for web searches.
- Updated `webSearchTool` to streamline the execution of web searches without requiring a request ID.
- Enhanced `WebSearchService` methods to be static for improved accessibility and clarity.
- Modified `ApiService` to pass `webSearchProviderId` for better integration with the web search functionality.
- Improved `ToolCallChunkHandler` to handle built-in tools more effectively.

* feat: add type property to server tools in MCPService

- Enhanced the server tool structure by adding a `type` property set to 'mcp' for better identification and handling of tools within the MCPService.

* chore: update dependencies and versions in package.json and yarn.lock

- Upgraded various SDK packages to their latest beta versions for improved functionality and compatibility.
- Updated `@ai-sdk/provider-utils` to version 3.0.0-beta.3.
- Adjusted dependencies in `package.json` to reflect the latest versions, including `@ai-sdk/amazon-bedrock`, `@ai-sdk/anthropic`, `@ai-sdk/azure`, and others.
- Removed outdated versions from `yarn.lock` and ensured consistency across the project.

* fix: update provider identification logic in aiCore

- Refactored the provider identification in `index_new.ts` to use `actualProvider.type` instead of `actualProvider.id` for better clarity and accuracy in determining OpenAI response modes.
- Removed redundant type checks in `factory.ts` to streamline the provider ID retrieval process.

* chore: update package dependencies and improve AI SDK chunk handling

- Bumped versions of several dependencies in package.json, including `@swc/plugin-styled-components` to 8.0.4 and `@vitejs/plugin-react-swc` to 3.10.2.
- Enhanced `AiSdkToChunkAdapter` to streamline chunk processing, including better handling of text and reasoning events.
- Added console logging for debugging in `BlockManager` and `messageThunk` to track state changes and callback executions.
- Updated integration tests to reflect changes in message structure and types.

* refactor: reorganize AiSdkToChunkAdapter and enhance tool call handling

- Moved AiSdkToChunkAdapter to a new directory structure for better organization.
- Implemented detailed handling for tool call events in ToolCallChunkHandler, including creation, updates, and completions.
- Added a new method to handle tool call creation and improved state management for active tool calls.
- Updated StreamProcessingService to support new chunk types and callbacks for block creation.
- Enhanced type definitions and added comments for clarity in the new chunk handling logic.

* refactor: enhance provider settings and update web search plugin configuration

- Updated providerSettings to allow optional 'mode' parameter for various providers, enhancing flexibility in model configuration.
- Refactored web search plugin to integrate Google search capabilities and streamline provider options handling.
- Removed deprecated code and improved type definitions for better clarity and maintainability.
- Added console logging for debugging purposes in the provider configuration process.

* chore: add repository metadata and homepage to package.json

- Included repository URL, bugs URL, and homepage in package.json for better project visibility and issue tracking.
- This update enhances the package's metadata, making it easier for users to find relevant resources and report issues.

* chore: remove deprecated patches for @ai-sdk/google-vertex and @ai-sdk/openai-compatible

- Deleted outdated patch files for @ai-sdk/google-vertex and @ai-sdk/openai-compatible from the project.
- Updated package.json to reflect the removal of these patches, streamlining dependency management.

* chore: update package.json and add tsdown configuration for build process

- Changed the main and types entries in package.json to point to the dist directory for better output management.
- Added a new tsdown.config.ts file to define the build configuration, specifying entry points, output directory, and formats for the project.

* chore(aiCore/version): update version to 1.0.0-alpha.0

* feat: enhance AI core functionality and introduce new tool components

- Updated README to reflect the addition of a powerful plugin system and built-in web search capabilities.
- Refactored tool call handling in `ToolCallChunkHandler` to improve state management and response formatting.
- Introduced new components `MessageMcpTool`, `MessageTool`, and `MessageTools` for better handling of tool responses and user interactions.
- Updated type definitions to support new tool response structures and improved overall code organization.
- Enhanced spinner component to accept React nodes for more flexible content rendering.

* feat: add React Native support to aiCore package

Add React Native compatibility configuration to package.json, including the
react-native field and updated exports mapping. Include documentation for
React Native usage with metro.config.js setup instructions.

* chore: bump @cherrystudio/ai-core version to 1.0.0-alpha.1

* chore: bump @cherrystudio/ai-core version to 1.0.0-alpha.2 and update exports

- Updated version in package.json to 1.0.0-alpha.2.
- Added new path mapping for @cherrystudio/ai-core in tsconfig.web.json.
- Refactored export paths in tsdown.config.ts and index.ts for consistency.
- Cleaned up type exports in index.ts and types.ts for better organization.

* refactor: reorganize provider and model exports for improved structure

- Updated exports in index.ts and related files to streamline provider and model management.
- Introduced a new ModelCreator module for better encapsulation of model creation logic.
- Refactored type imports to enhance clarity and maintainability across the codebase.
- Removed deprecated provider configurations and cleaned up unused code for better performance.

* chore: update @cherrystudio/ai-core version to 1.0.0-alpha.4 and clean up dependencies

- Bumped version in package.json to 1.0.0-alpha.4.
- Removed deprecated dependencies from package.json and yarn.lock for improved clarity.
- Updated README to reflect changes in supported providers and installation instructions.
- Refactored provider registration and usage examples for better clarity and usability.

* refactor: streamline AI provider registration by replacing dynamic imports with direct creator functions

- Updated the AiProviderRegistry to use direct references to creator functions for each AI provider, improving clarity and performance.
- Removed dynamic import statements for providers, simplifying the registration process and enhancing maintainability.

* chore: bump @cherrystudio/ai-core version to 1.0.0-alpha.5

- Updated version in package.json to 1.0.0-alpha.5.
- Enhanced provider configuration validation in createProvider function for improved error handling.

* docs: update AI SDK architecture and README for enhanced clarity and new features

- Revised AI SDK architecture diagram to reflect changes in component relationships, replacing PluginEngine with RuntimeExecutor.
- Updated README to highlight core features, including a refined plugin system, improved architecture design, and new built-in plugins.
- Added detailed examples for using built-in plugins and creating custom plugins, enhancing documentation for better usability.
- Included future version roadmap and related resources for user reference.

* feat: enhance web search tool functionality and type definitions

- Introduced new `WebSearchToolOutputSchema` type to standardize output from web search tools.
- Updated `webSearchTool` and `webSearchToolWithExtraction` to utilize Zod for input and output schema validation.
- Refactored tool execution logic to improve error handling and response formatting.
- Cleaned up unused type imports and comments for better code clarity.

* fix: conditionally enable reasoning middleware for OpenAI and Azure providers

- Added a check to enable the 'thinking-tag-extraction' middleware only if reasoning is enabled in the configuration for OpenAI and Azure providers.
- Commented out the provider type check in `getAiSdkProviderId` to prevent issues with retrieving provider options.

* feat: update OpenAI provider integration and enhance type definitions

- Bumped version of `@ai-sdk/openai-compatible` to 1.0.0-beta.8 in package.json.
- Introduced a new provider configuration for 'OpenAI Responses' in AiProviderRegistry, allowing for more flexible response handling.
- Updated type definitions to include 'openai-responses' in ProviderSettingsMap for improved type safety.
- Refactored getModelToProviderId function to return a more specific ProviderId type.

* feat: enhance ToolCallChunkHandler with detailed chunk handling and remove unused plugins

- Updated `handleToolCallCreated` method to support additional chunk types with optional provider metadata.
- Removed deprecated `smoothReasoningPlugin` and `textPlugin` files to clean up the codebase.
- Cleaned up unused type imports in `tool.ts` for improved clarity and maintainability.

* <type>: <subject>
<body>
<footer>
用來簡要描述影響本次變動,概述即可

* refactor: update message handling in searchOrchestrationPlugin for improved type safety

- Replaced `Message` type with `ModelMessage` in various functions to enhance type consistency.
- Refactored `getMessageContent` function to utilize the new `ModelMessage` type for better content extraction.
- Updated `storeConversationMemory` and `analyzeSearchIntent` functions to align with the new type definitions, ensuring clearer memory storage and intent analysis processes.

* chore: bump @cherrystudio/ai-core version to 1.0.0-alpha.6 and refactor web search tool

- Updated version in package.json to 1.0.0-alpha.6.
- Simplified response structure in ToolCallChunkHandler by removing unnecessary nesting.
- Refactored input schema for web search tool to enhance type safety and clarity.
- Cleaned up commented-out code in MessageTool for improved readability.

* refactor: consolidate queue utility imports in messageThunk.ts

- Combined separate imports of `getTopicQueue` and `waitForTopicQueue` from the queue utility into a single import statement for improved code clarity and organization.

* feat: implement knowledge search tool and enhance search orchestration logic

- Added a new `knowledgeSearchTool` to facilitate knowledge base searches based on user queries and intent analysis.
- Refactored `analyzeSearchIntent` to simplify message context construction and improve prompt formatting.
- Introduced a flag to prevent concurrent analysis processes in `searchOrchestrationPlugin`.
- Updated tool configuration logic to conditionally add the knowledge search tool based on the presence of knowledge bases and user settings.
- Cleaned up commented-out code for better readability and maintainability.

* refactor: enhance search orchestration and web search tool integration

- Updated `searchOrchestrationPlugin` to improve handling of assistant configurations and prevent concurrent analysis.
- Refactored `webSearchTool` to utilize pre-extracted keywords for more efficient web searches.
- Introduced a new `MessageKnowledgeSearch` component for displaying knowledge search results.
- Cleaned up commented-out code and improved type safety across various components.
- Enhanced the integration of web search results in the UI for better user experience.

* refactor: streamline async function syntax and enhance plugin event handling

- Simplified async function syntax in `RuntimeExecutor` and `PluginEngine` for improved readability.
- Updated `AiSdkToChunkAdapter` to refine condition checks for Google metadata.
- Enhanced `searchOrchestrationPlugin` to log conversation messages and improve memory storage logic.
- Improved memory processing by ensuring fallback for existing memories.
- Added new citation block handling in `toolCallbacks` for better integration with web search results.

* feat: integrate image generation capabilities and enhance testing framework

- Added support for image generation in the `RuntimeExecutor` with a new `generateImage` method.
- Updated `aiCore` package to include `vitest` for testing, with new test scripts added.
- Enhanced type definitions to accommodate image model handling in plugins.
- Introduced new methods for resolving and executing image generation with plugins.
- Updated package dependencies in `package.json` to include `vitest` and ensure compatibility with new features.

* refactor: enhance image generation handling and tool integration

- Updated image generation logic to support new model types and improved size handling.
- Refactored middleware configuration to better manage tool usage and reasoning capabilities.
- Introduced new utility functions for checking model compatibility with image generation.
- Enhanced the integration of plugins for improved functionality during image generation processes.
- Removed deprecated knowledge search tool to streamline the codebase.

* refactor: migrate to v5 patch-1

* fix: migrate to v5-patch2

* refactor: restructure aiCore for improved modularity and legacy support

- Introduced a new `index_new.ts` file to facilitate the modern AI provider while maintaining backward compatibility with the legacy `index.ts`.
- Created a `legacy` directory to house existing clients and middleware, ensuring a clear separation from new implementations.
- Updated import paths across various modules to reflect the new structure, enhancing code organization and maintainability.
- Added comprehensive middleware and utility functions to support the new architecture, improving overall functionality and extensibility.
- Enhanced plugin management with a dedicated `PluginBuilder` for better integration and configuration of AI plugins.

* chore(yarn.lock): remove deprecated provider entries and clean up dependencies

* chore(package.json): bump version to 1.0.0-alpha.7

* feat(tests): add unit tests for utility functions in utils.test.ts

- Implemented tests for `createErrorChunk`, `capitalize`, and `isAsyncIterable` functions.
- Ensured comprehensive coverage for various input scenarios, including error handling and edge cases.

* feat(aiCore): enhance AI SDK with tracing and telemetry support

- Integrated tracing capabilities into the ModernAiProvider, allowing for better tracking of AI completions and image generation processes.
- Added a new TelemetryPlugin to inject telemetry data into AI SDK requests, ensuring compatibility with existing tracing systems.
- Updated middleware and plugin configurations to support topic-based tracing, improving the overall observability of AI interactions.
- Introduced comprehensive logging throughout the AI SDK processes to facilitate debugging and performance monitoring.
- Added unit tests for new functionalities to ensure reliability and maintainability.

* fix: update MessageKnowledgeSearch to use knowledgeReferences

- Modified MessageKnowledgeSearch component to display additional context from toolInput.
- Updated the fetch complete message to reflect the count of knowledgeReferences instead of toolOutput.
- Adjusted the mapping of results to iterate over knowledgeReferences for rendering.

* refactor(aiCore): update ModernAiProvider constructor and clean up unused code

- Modified the constructor of ModernAiProvider to accept an optional provider parameter, enhancing flexibility in provider selection.
- Removed deprecated and unused functions related to search keyword extraction and search summary fetching, streamlining the codebase.
- Updated import statements and adjusted related logic to reflect the removal of obsolete functions, improving maintainability.

* feat(Dropdown): replace RightOutlined with ChevronRight icon and update useIcons to use ChevronDown

- Introduced a patch to replace the RightOutlined icon with ChevronRight in the Dropdown component for improved visual consistency.
- Updated the useIcons hook to utilize ChevronDown instead of DownOutlined, enhancing the icon set with Lucide icons.
- Adjusted icon properties for better customization and styling options.

* feat(aiCore): add enableUrlContext capability and new support function

- Enhanced the buildStreamTextParams function to include enableUrlContext in the capabilities object, improving the parameter set for AI interactions.
- Introduced a new isSupportedFlexServiceTier function to streamline model support checks, enhancing code clarity and maintainability.

* chore: update dependencies and remove unused patches

- Updated various package versions in yarn.lock for improved compatibility and performance.
- Removed obsolete patches for antd and openai, streamlining the dependency management.
- Adjusted icon imports in Dropdown and useIcons to utilize Lucide icons for better visual consistency.

* refactor(types): update ProviderId type definition for better compatibility

- Changed ProviderId type from a union of keyof ExtensibleProviderSettingsMap and string to an intersection, enhancing type safety.
- Renamed appendTrace method to appendMessageTrace in SpanManagerService for clarity and consistency.
- Updated references to appendTrace in useMessageOperations and ApiService to use the new method name.
- Added a new appendTrace method in SpanManagerService to bind existing traces, improving trace management.
- Adjusted topicId handling in fetchMessagesSummary to default to an empty string for better consistency.

* refactor(types): modify ProviderId type definition for improved flexibility

- Updated ProviderId type from an intersection of keyof ExtensibleProviderSettingsMap and string to a union, allowing for greater compatibility with dynamic provider settings.

* fix: file name

* fix: missing dependencies

* fix: remove default renderer from MessageTool

* feat(provider): enhance provider registration and validation system

- Introduced a new Zod-based schema for provider validation, improving type safety and consistency.
- Added support for dynamic provider IDs and enhanced the provider registration process.
- Updated the AiProviderRegistry to utilize the new validation functions, ensuring robust provider management.
- Added tests for the provider registry to validate dynamic imports and functionality.
- Updated yarn.lock to reflect the latest dependency versions.

* feat(toolUsePlugin): enhance tool parsing and extraction functionality

- Updated the `defaultParseToolUse` function to return both parsed results and remaining content, improving usability.
- Introduced a new `TagExtractor` class for flexible tag extraction, supporting various tag formats.
- Modified type definitions to reflect changes in parsing function signatures.
- Enhanced handling of tool call events in the `ToolCallChunkHandler` for better integration with the new parsing logic.
- Added `isBuiltIn` property to the `MCPTool` interface for clearer tool categorization.

* feat(aiCore): update vitest version and enhance provider validation

- Upgraded `vitest` dependency to version 3.2.4 in package.json and yarn.lock for improved testing capabilities.
- Removed console error logging in provider validation functions to streamline error handling.
- Added comprehensive tests for the AiProviderRegistry functionality, ensuring robust provider management and dynamic registration.
- Introduced new test cases for provider schemas to validate configurations and IDs.
- Deleted outdated registry test file to maintain a clean test suite.

* feat(toolUsePlugin): refactor tool execution and event management

- Extracted `StreamEventManager` and `ToolExecutor` classes from `promptToolUsePlugin.ts` to improve code organization and reduce complexity.
- Enhanced tool execution logic with better error handling and event management.
- Updated the `createPromptToolUsePlugin` function to utilize the new classes for cleaner implementation.
- Improved recursive call handling and result formatting for tool executions.
- Streamlined the overall flow of tool calls and event emissions within the plugin.

* feat(dependencies): update ai-sdk packages and improve logging

- Upgraded `@ai-sdk/gateway` to version 1.0.8 and `@ai-sdk/provider-utils` to version 3.0.4 in yarn.lock for enhanced functionality.
- Updated `ai` dependency in package.json to version ^5.0.16 for better compatibility.
- Added logging functionality in `AiSdkToChunkAdapter` to track chunk types and improve debugging.
- Refactored plugin imports to streamline code and enhance readability.
- Removed unnecessary console logs in `searchOrchestrationPlugin` to clean up the codebase.

* feat(dependencies): update ai-sdk packages and improve type safety

- Upgraded multiple `@ai-sdk` packages in `yarn.lock` and `package.json` to their latest versions for enhanced functionality and compatibility.
- Improved type safety in `searchOrchestrationPlugin` by adding optional chaining to handle potential undefined values in knowledge bases.
- Cleaned up dependency declarations to use caret (^) for versioning, ensuring compatibility with future updates.

* feat(aiCore): enhance tool response handling and type definitions

- Updated the ToolCallChunkHandler to support both MCPTool and NormalToolResponse types, improving flexibility in tool response management.
- Refactored type definitions for MCPToolResponse and introduced NormalToolResponse to better differentiate between tool response types.
- Enhanced logging in MCP utility functions for improved error tracking and debugging.
- Cleaned up type imports and ensured consistent handling of tool responses across various chunks.

* feat(tools): refactor MemorySearchTool and WebSearchTool for improved response handling

- Updated MemorySearchTool to utilize aiSdk for better integration and removed unused imports.
- Refactored WebSearchTool to streamline search results handling, changing from an array to a structured object for clarity.
- Adjusted MessageTool and MessageWebSearchTool components to reflect changes in tool response structure.
- Enhanced error handling and logging in tool callbacks for improved debugging and user feedback.

* feat(aiCore): update ai-sdk-provider and enhance message conversion logic

- Upgraded `@openrouter/ai-sdk-provider` to version ^1.1.2 in package.json and yarn.lock for improved functionality.
- Enhanced `convertMessageToSdkParam` and related functions to support additional model parameters, improving message conversion for various AI models.
- Integrated logging for error handling in file processing functions to aid in debugging and user feedback.
- Added support for native PDF input handling based on model capabilities, enhancing file processing features.

* feat(dependencies): update @ai-sdk/openai and @ai-sdk/provider-utils versions

- Upgraded `@ai-sdk/openai` to version 2.0.19 in `yarn.lock` and `package.json` for improved functionality and compatibility.
- Updated `@ai-sdk/provider-utils` to version 3.0.5, enhancing dependency management.
- Added `TypedToolError` type export in `index.ts` for better error handling.
- Removed unnecessary console logs in `webSearchPlugin` for cleaner code.
- Refactored type handling in `createProvider` to ensure proper type assertions.
- Enforced `topicId` as a required field in the `ModernAiProvider` configuration for stricter validation.

* [WIP]refactor(aiCore): restructure models and introduce ModelResolver

- Removed outdated ConfigManager and factory files to streamline model management.
- Added ModelResolver for improved model ID resolution, supporting both traditional and namespaced formats.
- Introduced DynamicProviderRegistry for dynamic provider management, enhancing flexibility in model handling.
- Updated index exports to reflect the new structure and maintain compatibility with existing functionality.

* feat(aiCore): introduce Hub Provider and enhance provider management

- Added a new example file demonstrating the usage of the Hub Provider for routing to multiple underlying providers.
- Implemented the Hub Provider to support model ID parsing and routing based on a specified format.
- Refactored provider management by introducing a Registry Management class for better organization and retrieval of provider instances.
- Updated the Provider Initializer to streamline the initialization and registration of providers, enhancing overall flexibility and usability.
- Removed outdated files related to provider creation and dynamic registration to simplify the codebase.

* feat(aiCore): enhance dynamic provider registration and refactor HubProvider

- Introduced dynamic provider registration functionality, allowing for flexible management of providers through a new registry system.
- Refactored HubProvider to streamline model resolution and improve error handling for unsupported models.
- Added utility functions for managing dynamic providers, including registration, cleanup, and alias resolution.
- Updated index exports to include new dynamic provider APIs, enhancing overall usability and integration.
- Removed outdated provider files and simplified the provider management structure for better maintainability.

* chore(aiCore): bump version to 1.0.0-alpha.9 in package.json

* feat(aiCore): add MemorySearchTool and WebSearchTool components

- Introduced MessageMemorySearch and MessageWebSearch components for handling memory and web search tool responses.
- Updated MemorySearchTool and WebSearchTool to improve response handling and integrate with the new components.
- Removed unused console logs and streamlined code for better readability and maintainability.
- Added new dependencies in package.json for enhanced functionality.

* refactor(aiCore): improve type handling and response structures

- Updated AiSdkToChunkAdapter to refine web search result handling.
- Modified McpToolChunkMiddleware to ensure consistent type usage for tool responses.
- Enhanced type definitions in chunk.ts and index.ts for better clarity and type safety.
- Adjusted MessageWebSearch styles for improved UI consistency.
- Refactored parseToolUse function to align with updated MCPTool response structures.

* feat(aiCore): enhance provider management and registration system

- Added support for a new provider configuration structure in package.json, enabling better integration of provider types.
- Updated tsdown.config.ts to include new entry points for provider modules, improving build organization.
- Refactored index.ts to streamline exports and enhance type handling for provider-related functionalities.
- Simplified provider initialization and registration processes, allowing for more flexible provider management.
- Improved type definitions and removed deprecated methods to enhance code clarity and maintainability.

* chore(aiCore): bump version to 1.0.0-alpha.10 in package.json

* fix(aiCore): update tool call status and enhance execution flow

- Changed tool call status from 'invoking' to 'pending' for better clarity in execution state.
- Updated the tool execution logic to include user confirmation for non-auto-approved tools, improving user interaction.
- Refactored the handling of experimental context in the tool execution parameters to support chunk streaming.
- Commented out unused tool input event cases in AiSdkToChunkAdapter for cleaner code.

* feat(types): add VertexProvider type for Google Cloud integration

Introduced a new VertexProvider type that includes properties for Google credentials and project details, enhancing type safety and support for Google Cloud functionalities.

* refactor(logging): 将console替换为logger以统一日志管理

* fix(i18n): 更新多语言文件中 websearch.fetch_complete 的翻译格式

统一将“已完成 X 次搜索”改为“X 个搜索结果”格式,并添加 avatar.builtin 字段翻译

* refactor(aiCore): streamline type exports and enhance provider registration

Removed unused type exports from the aiCore module and consolidated type definitions for better clarity. Updated provider registration tests to reflect new configurations and improved error handling for non-existent providers. Enhanced the overall structure of the provider management system, ensuring better type safety and consistency across the codebase.

* chore(dependencies): update ai and related packages to version 5.0.26 and 1.0.15

Updated the 'ai' package to version 5.0.26 and '@ai-sdk/gateway' to version 1.0.15. Also, updated '@ai-sdk/provider-utils' to version 3.0.7 and 'eventsource-parser' to version 3.0.5. Adjusted type definitions in aiCore for better type safety in plugin parameters and results.

* chore(config): add new aliases for ai-core in Vite and TypeScript configuration

Updated the Vite and TypeScript configuration files to include new path aliases for the ai-core package, enhancing module resolution for core providers and built-in plugins. This change improves the organization and accessibility of the ai-core components within the project.

* feat(release): update version to 1.6.0-beta.1 and enhance release notes with new features, improvements, and bug fixes

- Integrated a new AI SDK architecture for better performance
- Added OCR functionality for image text recognition
- Introduced a code tools page with environment variable settings
- Enhanced the MCP server list with search capabilities
- Improved SVG preview and HTML content rendering
- Fixed multiple issues including document preprocessing failures and path handling on Windows
- Optimized performance and memory usage across various components

* refactor(modelResolver): replace ':' with '|' as the default separator for model IDs

Updated the ModelResolver and related components to use '|' as the default separator instead of ':'. This change improves compatibility and resolves potential conflicts with model ID suffixes. Adjusted model resolution logic accordingly to ensure consistent behavior across the application.

* feat(aihubmix): add 'type' property to provider configuration for Gemini integration

* refactor(errorHandling): improve error serialization and update error handling in callbacks

- Updated the error handling in the `onError` callback to use `AISDKError` type for better type safety.
- Introduced a new `serializeError` function to standardize error serialization.
- Modified the `ErrorBlock` component to directly access the error message.
- Removed deprecated error formatting functions to streamline the error utility module.

* feat(i18n): add error detail translations and enhance error handling UI

- Added new translation keys for error details in multiple languages, including 'detail', 'details', 'message', 'requestBody', 'requestUrl', 'stack', and 'status'.
- Updated the ErrorBlock component to display a modal with detailed error information, allowing users to view and copy error details easily.
- Improved the user experience by providing a clear and accessible way to understand error messages and their context.

* feat(inputbar): enhance MCP tools visibility with prompt tool support

- Updated the Inputbar component to include the `isPromptToolUse` function, allowing for better visibility of MCP tools based on the assistant's capabilities.
- This change improves user experience by expanding the conditions under which MCP tools are displayed.

* refactor(aiCore): enhance completions methods with developer mode support

- Introduced a check for developer mode in the completions methods to enable tracing capabilities when a topic ID is provided.
- Updated the method signatures and internal calls to streamline the handling of completions with and without tracing.
- Improved code organization by making the completionsForTrace method private and renaming it for clarity.

* feat(ErrorBlock): add centered modal display for error details

- Updated the ErrorBlock component to include a centered modal for displaying error details, enhancing the user interface and accessibility of error information.

* chore(aiCore): update version to 1.0.0-alpha.11 and refactor model resolution logic

- Bumped the version of the ai-core package to 1.0.0-alpha.11.
- Removed the `isOpenAIChatCompletionOnlyModel` utility function to simplify model resolution.
- Adjusted the `providerToAiSdkConfig` function to accept a model parameter for improved configuration handling.
- Updated the `ModernAiProvider` class to utilize the new model parameter in its configuration.
- Cleaned up deprecated code related to search keyword extraction and reasoning parameters.

* fix(inputbar): conditionally display knowledge icon based on MCP tools visibility

- Updated the Inputbar component to conditionally show the knowledge icon only when both `showKnowledgeIcon` and `showMcpTools` are true. This change enhances the visibility logic for the knowledge icon, improving the user interface based on the current context.

* feat(aiCore): introduce provider configuration enhancements and initialization

- Added a new provider configuration module to handle special provider logic and formatting.
- Implemented asynchronous preparation of special provider configurations in the ModernAiProvider class.
- Refactored provider initialization logic to support dynamic registration of new AI providers.
- Updated utility functions to streamline provider option building and improve compatibility with new provider configurations.

* refactor(aiCore): streamline provider options and enhance OpenAI handling

- Simplified the OpenAI mode handling in the provider configuration.
- Added service tier settings to provider-specific options for better configuration management.
- Refactored the `buildOpenAIProviderOptions` function to remove redundant parameters and improve clarity.

* refactor(aiCore): enhance temperature and TopP parameter handling

- Updated `getTemperature` and `getTopP` functions to incorporate reasoning effort checks for Claude models.
- Refactored logic to ensure temperature and TopP settings are only returned when applicable.
- Improved clarity and maintainability of parameter retrieval functions.

* feat(releaseNotes): update release notes with new features and improvements

- Added a modal for detailed error information with multi-language support.
- Enhanced AI Core with version upgrade and improved parameter handling.
- Refactored error handling for better type safety and performance.
- Removed deprecated code and improved provider initialization logic.

* refactor(aiCore): clean up KnowledgeSearchTool and searchOrchestrationPlugin

- Commented out unused parameters and code in the KnowledgeSearchTool to improve clarity and maintainability.
- Removed the tool choice assignment in searchOrchestrationPlugin to streamline the logic.
- Updated instructions handling in KnowledgeSearchTool to eliminate unnecessary fields.

* chore(package): bump version to 1.6.0-beta.2

* refactor(transformParameters): 移除DEFAULT_MAX_TOKENS并替换console.log为logger.debug

移除未使用的DEFAULT_MAX_TOKENS常量,直接使用传入的maxTokens参数
将调试日志输出从console.log改为更规范的logger.debug

* docs(OrchestrateService): 添加注释说明暂时未使用的类和函数用途

* feat(OrchestrateService): 添加提示变量替换功能

在调用API前替换assistant.prompt中的变量,以支持动态提示内容

* refactor(providers): 重构基础 providers 定义和类型导出

将基础 provider IDs 和 schema 定义移到文件顶部
移除从 baseProviders 动态生成 IDs 的逻辑
使用 satisfies 约束 baseProviders 类型

* refactor(aiCore): 重构provider选项构建逻辑以支持更多provider类型

重构buildProviderOptions函数,使用schema验证providerId并分为基础provider和自定义provider处理
新增对deepseek、openai-compatible等provider的支持

* feat(reasoning): 增强模型推理控制逻辑,支持更多提供商和模型类型

添加对Hunyuan、DeepSeek混合推理等模型的支持
优化OpenRouter、Qwen等提供商的推理控制逻辑
统一不同提供商的思考控制方式
添加日志记录和错误处理

* refactor(aiCore): improve provider registration and model resolution logic

- Enhanced the model resolution logic to support dynamic provider IDs for chat modes.
- Updated provider registration to handle both OpenAI and Azure with a unified approach for chat variants.
- Refactored the `buildOpenAIProviderOptions` function to streamline parameter handling and removed unnecessary parameters.
- Added configuration options for Azure to manage API versions and deployment URLs effectively.

* feat(aiCore): 添加对智谱AI模型的支持

在getReasoningEffort函数中新增对智谱AI模型的支持逻辑,包括判断模型类型及设置对应的推理参数

* feat(翻译): 添加对Qwen MT模型翻译选项的特殊处理

添加对Qwen MT模型的支持,当助手类型为翻译时设置翻译选项。若目标语言不支持则抛出错误

* refactor(aiCore): 将console.log替换为logger.debug以改进日志记录

* refactor(aiCore): 提取 ModernAiProviderConfig 类型以复用

将多处重复的配置类型定义提取为 ModernAiProviderConfig 类型,提高代码可维护性

* refactor(services): 提取 FetchChatCompletionOptions 类型以提升代码可维护性

* refactor(ApiService): 重构 fetchChatCompletion 参数类型定义

将参数类型提取为独立的类型定义,支持 messages 或 prompt 两种参数形式

* fix(ApiService): 使FetchChatCompletionOptions参数变为可选

为了增加接口的灵活性,将options参数改为可选

* fix(ApiService): 修复prompt参数类型并添加消息转换逻辑

根据vercel/ai#8363问题,将prompt参数类型从StreamTextParams['prompt']改为string
当传入prompt参数时自动转换为messages格式

* refactor(translate): 重构语言检测功能,使用通用聊天接口替代专用接口

- 移除专用的语言检测接口 fetchLanguageDetection
- 使用现有的 fetchChatCompletion 接口实现语言检测功能
- 处理 QwenMT 模型的特殊逻辑
- 优化语言检测的提示词和参数处理

* refactor(TranslateService): 重构翻译服务使用新的API接口

移除旧的翻译逻辑,改用新的fetchChatCompletion接口实现翻译功能
简化代码结构并移除不再需要的依赖

* feat(abortController): 添加readyToAbort函数用于创建并注册AbortController

提供便捷方法创建AbortController并自动注册到全局映射中,简化取消操作的流程

* feat(aiCore): 添加对文本增量累积的可配置支持

根据模型是否支持文本增量来决定是否累积文本内容,新增accumulate参数控制行为

* fix(translate): 修复翻译过程中中止控制器的错误处理

修正abortController.ts中中止控制器的回调函数调用方式
统一翻译错误消息的格式化处理
改进翻译服务的中止逻辑和错误传播

* docs(i18n): 添加请求路径的国际化翻译

* fix(api): 修复API检查时的错误处理和取消逻辑

添加对API检查过程中错误的处理,并支持通过abortController取消请求
避免空系统提示词导致的报错,优化检查流程的健壮性

* feat(mini窗口): 添加ErrorBoundary组件包裹内容

为mini窗口内容添加错误边界组件,防止未捕获错误导致整个应用崩溃

* feat(release): 更新版本至1.6.0-beta.3并添加新功能和优化

- 新增多个功能,包括ErrorBoundary组件、智谱AI模型支持、系统OCR功能、文件页面批量删除等
- 重构翻译服务和语言检测功能,提升扩展性和类型安全
- 修复多个问题,改善API检查和翻译过程中的错误处理
- 优化构建配置和性能,提升初始化效率

* test: 更新ApiService测试中ApiClientFactory的模拟路径

* refactor(vertexai): 将VertexAI配置检查从ApiClientFactory移至VertexAPIClient

重构VertexAI客户端的配置检查逻辑,将其从工厂类移动到具体的客户端实现类中

* test(aiCore): 更新客户端兼容性测试的mock数据

添加isOpenAIModel等mock函数用于测试
修复AnthropicVertexClient的mock路径
添加注释说明服务层不应调用React Hook

* fix: 添加注释说明redux设置状态不应被服务层使用

* test(ActionUtils): 添加对ConversationService和models模块的mock测试

* test(Spinner): 更新快照

* test(ThinkingBlock): 移除不再需要的实时计时测试用例

* refactor(ThinkingBlock): 优化条件渲染逻辑以提高可读性

* test(streamCallback): 添加serializeError的mock实现

* fix(registry): enhance provider config validation and update error handling in tests

- Added a check for null or undefined config in registerProviderConfig function.
- Updated tests to ensure proper error messages are thrown when no providers are registered.
- Adjusted mock implementations in generateImage tests to reflect changes in provider model identifiers.

* refactor(aiCore): consolidate StreamTextParams type imports and enhance type definitions

- Moved StreamTextParams type definition to a new file for better organization.
- Updated imports across multiple files to reference the new location.
- Adjusted related type definitions in ApiService and ConversationService for consistency.

* feat(providerConfig): add AWS Bedrock support in provider configuration

- Implemented AWS Bedrock integration by adding access key, region, and secret access key retrieval.
- Enhanced providerToAiSdkConfig function to handle Bedrock-specific options.

* fix(providerConfig): update Google Vertex AI import and creator function name

- Changed the import path for Google Vertex AI to '@ai-sdk/google-vertex/edge'.
- Updated the creator function name from 'createGoogleVertex' to 'createVertex' for consistency.

* feat(providerConfig): implement API key rotation logic for providers

- Added a new function to handle rotating API keys for providers, reusing legacy multi-key logic.
- Updated the providerToAiSdkConfig function to utilize the new key rotation mechanism.
- Enhanced TranslateService imports for better organization.

* fix(aiCore): update file data and mediaType extraction in convertFileBlockToFilePart function

- Modified the conversion logic to correctly extract base64 data and MIME type from the API response.
- Ensured that the filename remains unchanged during the conversion process.

* feat(aiCore): enhance file processing logic in convertFileBlockToFilePart function

- Added support for handling image files and document types beyond PDF.
- Implemented file size limit checks and fallback mechanisms for text extraction.
- Improved logging for file processing outcomes, including success and failure cases.
- Introduced functions to check model support for image input and large file uploads.

* chore(release): update version to 1.6.0-beta.4 and enhance release notes

- Updated version in package.json to 1.6.0-beta.4.
- Revised release notes in electron-builder.yml to reflect new features, improvements, and bug fixes, including API key rotation, AWS Bedrock support, and enhanced file processing capabilities.

* refactor(aiCore): restructure parameter handling and file processing modules

- Removed the transformParameters module and replaced it with a more organized structure under prepareParams.
- Introduced new modules for file processing, model capabilities, and parameter handling to improve code maintainability and clarity.
- Updated relevant imports across services to reflect the new module structure.
- Enhanced logging and error handling in file processing functions.

* refactor(providerConfig): improve provider handling and configuration logic

- Introduced formatPrivateKey utility for better private key management.
- Updated handleSpecialProviders function to streamline provider type checks and error handling.
- Enhanced providerToAiSdkConfig function to include Google Vertex AI configuration with private key formatting.
- Removed commented-out code for clarity and maintainability.

* chore(dependencies): update ai package version and enhance aiCore functionality

- Updated the 'ai' package version from 5.0.26 to 5.0.29 in package.json and yarn.lock.
- Refactored aiCore's provider schemas to introduce new provider types and improve type safety.
- Enhanced the RuntimeExecutor class to streamline model handling and plugin execution for various AI tasks.
- Updated tests to reflect changes in parameter handling and ensure compatibility with new provider configurations.

* refactor(AiSdkToChunkAdapter): streamline web search result handling

- Replaced the switch statement with a source mapping object for improved readability and maintainability.
- Enhanced handling of various web search providers by mapping them to their respective sources.
- Simplified the logic for processing web search results in the onChunk method.

* chore: update release notes and version to 1.6.0-beta.5

- Enhanced web search functionality and optimized knowledge base settings for better performance.
- Added automatic image generation for Gemini 2.5 Flash Image model and improved OCR service compatibility on Linux.
- Refactored AI core architecture and improved message retry mechanisms.
- Fixed various UI component issues and improved overall stability.

* feat: enhance provider configuration and stream text parameters

- Added maxRetries option to buildStreamTextParams for improved error handling.
- Implemented custom fetch logic for 'cherryin' provider to include signature generation in requests.

* chore: update release notes and version to 1.6.0-beta.6

- Refined performance optimizations for AI services and improved compatibility with various providers.
- Enhanced error handling and stability in the ModernAiProvider class.
- Updated version in package.json to 1.6.0-beta.6.

* refactor(ErrorBlock): simplify CodeViewer component usage

- Removed unnecessary props from CodeViewer in ErrorBlock for cleaner code and improved readability.

* refactor(CodeViewer): change children prop type to React.ReactNode

- Updated the children prop type in CodeViewer from string to React.ReactNode for improved flexibility in rendering various content types.

* chore: update migration version and add migration logic for version 147

- Incremented migration version from 146 to 147.
- Implemented migration logic to trim trailing slashes from the apiHost of the anthropic provider.

* feat(错误处理): 增强AI SDK错误处理并添加国际化支持

添加AiSdkErrorUnion类型用于统一处理AI SDK错误
实现safeToString函数安全转换任意值为字符串
添加formatAiSdkError和formatError函数格式化错误信息
在ErrorBlock中重构错误详情展示逻辑,支持多种错误类型
补充国际化字段用于错误信息展示

* feat(i18n): 添加错误相关的多语言翻译字段

* feat(错误处理): 统一使用SerializedError类型处理错误并增强类型安全

重构错误处理逻辑,使用@reduxjs/toolkit的SerializedError类型统一处理错误
新增错误类型定义文件并扩展SerializedError接口
更新相关组件和工具函数以适配新的错误类型

* refactor(CodeViewer): make children prop optional for improved flexibility

* feat(ErrorBlock): add success message on clipboard copy action

* refactor(types): 重构错误类型定义并添加序列化功能

- 将 SerializedError 从 @reduxjs/toolkit 移至本地定义
- 添加 Serializable 类型和序列化工具函数
- 更新相关文件中的错误类型引用
- 实现安全序列化功能用于错误处理

* fix(错误处理): 修复错误块中显示错误信息的问题

修正错误块组件中错误信息的显示问题:
1. 修复BuiltinError组件中错误名称显示为消息的问题
2. 修复AiSdkError组件中原因显示为消息的问题
3. 修复AiApiCallError组件中各种字段显示为消息的问题
4. 使用CodeViewer组件正确显示JSON格式数据
5. 移除CodeViewer组件中不必要的children属性
6. 设置serialize默认pretty为true

* feat(错误处理): 添加序列化错误类型检查函数并更新错误格式化逻辑

添加 isSerializedError 类型检查函数用于判断序列化错误
更新 formatError 和 formatAiSdkError 函数以处理序列化错误类型
修改 ErrorBlock 组件使用新的类型检查函数替代 instanceof 检查

* fix: 使用 SerializedError 类型替换 errorData 的 Record 类型

* fix: 为错误对象添加name和stack字段

在工具执行失败和数据库升级时,为错误对象补充name和stack字段以提供更完整的错误信息

* fix(错误处理): 使用JSON.stringify格式化响应头信息以提高可读性

* fix(ErrorBlock): 修复错误状态码检查逻辑以支持statusCode字段

* fix(ErrorBlock): 修复错误状态码检查逻辑以支持statusCode字段

* feat(AI Provider): Update image generation handling to use legacy implementation for enhanced features

- Refactor image generation logic to utilize legacy completions for better support of image editing.
- Introduce uiMessages as a required parameter for image generation endpoints.
- Update related types and middleware configurations to accommodate new message structures.
- Adjust ConversationService and OrchestrateService to handle model and UI messages separately.

* docs(types): 添加prompt类型的注释

* feat: Update message handling to include optional uiMessages parameter

- Modify BaseParams type to make uiMessages optional.
- Refactor message preparation in HomeWindow and ActionUtils to handle modelMessages and uiMessages separately.
- Ensure compatibility with updated message structures in fetchChatCompletion calls.

* refactor(types): Enhance Serializable type to include SerializableValue for improved serialization handling

- Updated Serializable type to use SerializableValue for better clarity and structure.
- Ensured compatibility with nested objects and arrays in serialization logic.

* refactor(serialize): 重命名 SerializableValue 为 SerializablePrimitive 以提高可读性

将 SerializableValue 类型重命名为 SerializablePrimitive 以更准确地反映其用途,仅包含基本类型

* Revert "refactor(serialize): 重命名 SerializableValue 为 SerializablePrimitive 以提高可读性"

This reverts commit 8408a8d359.

* docs(serialize): 添加注释

* feat(tests): Mock ConversationService to return modelMessages and uiMessages for improved test coverage

- Updated the mock implementation of ConversationService in ActionUtils.test.ts to return structured modelMessages and uiMessages.
- This change enhances the test setup by providing realistic message data for testing purposes.

---------

Co-authored-by: suyao <sy20010504@gmail.com>
Co-authored-by: one <wangan.cs@gmail.com>
Co-authored-by: icarus <eurfelux@gmail.com>
2025-09-04 14:03:04 +08:00
Konv Suu
9ff4acf092
fix: regex pattern error when update manual blacklist (#9871) 2025-09-04 13:15:02 +08:00
Phantom
128b1fe9bc
fix(translate): wrong copy button state (#9867) 2025-09-04 13:01:39 +08:00
Phantom
9a92372c3e
refactor(mcp): use includes http to detect streamable http type mcp server (#9865)
refactor(mcp): 简化 McpServerTypeSchema 的类型校验逻辑

将联合类型替换为字符串校验并优化 http 相关类型的转换
2025-09-04 11:41:26 +08:00
Pleasure1234
0a36869b3c
fix: NavigationService initialization timing issue and add tab drag reordering (#9700)
* fix: NavigationService initialization timing issue and add tab drag reordering

- Fix NavigationService timing issue in TabsService by adding fallback navigation with setTimeout
- Add drag and drop functionality for tab reordering with visual feedback
- Remove unused MessageSquareDiff icon from Navbar
- Add reorderTabs action to tabs store

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Update tabs.ts

* Update TabContainer.tsx

* Update TabContainer.tsx

* fix(dnd): horizontal sortable (#9827)

* refactor(CodeViewer): improve props, aligned to CodeEditor (#9786)

* refactor(CodeViewer): improve props, aligned to CodeEditor

* refactor: simplify internal variables

* refactor: remove default lineNumbers

* fix: shiki theme container style

* revert: use ReactMarkdown for prompt editing

* fix: draggable list id type (#9809)

* refactor(dnd): rename idKey to itemKey for clarity

* refactor: key and id type for draggable lists

* chore: update yarn lock

* fix: type error

* refactor: improve getId fallbacks

* feat: integrate file selection and upload functionality in KnowledgeFiles component (#9815)

* feat: integrate file selection and upload functionality in KnowledgeFiles component

- Added useFiles hook to manage file selection.
- Updated handleAddFile to utilize the new file selection logic, allowing multiple file uploads.
- Improved user experience by handling file uploads asynchronously and logging the results.

* feat: enhance file upload interaction in KnowledgeFiles component

- Wrapped Dragger component in a div to allow for custom click handling.
- Prevented default click behavior to improve user experience when adding files.
- Maintained existing file upload functionality while enhancing the UI interaction.

* refactor(KnowledgeFiles): 提取文件处理逻辑到独立函数

将重复的文件上传和处理逻辑提取到独立的processFiles函数中,提高代码复用性和可维护性

---------

Co-authored-by: icarus <eurfelux@gmail.com>

* fix(Sortable): correct gap and horizontal style

* feat: make tabs sortable (example)

* refactor: improve sortable direction and gap

* refactor: update example

* fix: remove useless states

---------

Co-authored-by: beyondkmp <beyondkmp@gmail.com>
Co-authored-by: icarus <eurfelux@gmail.com>
Co-authored-by: Pleasure1234 <3196812536@qq.com>

* fix: syntax error

* refactor: remove useless styles

* fix: tabs overflow, add scrollbar

* fix: button gap

* fix: app region drag

* refactor: remove scrollbar, add space for app dragging

* Revert "refactor: remove scrollbar, add space for app dragging"

This reverts commit f6ebeb143e.

* refactor: update style

* refactor: add a scroll-to-right button

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: one <wangan.cs@gmail.com>
Co-authored-by: beyondkmp <beyondkmp@gmail.com>
Co-authored-by: icarus <eurfelux@gmail.com>
2025-09-04 02:42:42 +08:00
Phantom
a9a38f88bb
fix: transform parameters when adding mcp by json (#9850)
* fix(mcp): 添加 streamable_http 类型并转换为 streamableHttp

为了兼容其他配置,添加 streamable_http 类型并在解析时自动转换为 streamableHttp

* feat(mcp): 根据URL自动推断服务器类型

当未显式指定服务器类型时,通过检查URL后缀自动设置合适的类型(mcp或sse)

* feat(mcp): 添加http类型支持并映射到streamableHttp
2025-09-03 21:30:26 +08:00
SuYao
aca1fcad18
feat: enhance RichEditor with logging and improve NotesPage editor synchronization (#9817)
* feat: enhance RichEditor with logging and improve NotesPage editor synchronization

- Added logging for enhanced link setting failures in RichEditor.
- Improved content synchronization logic in NotesPage to prevent unnecessary updates and ensure cleaner state management during file switches.
- Updated markdown conversion to handle task list structures more robustly, including support for div formats in task items.
- Added tests to verify task list structure preservation during HTML to Markdown conversions.

* feat: enhance Markdown preview interaction in AssistantPromptSettings

- Added double-click functionality to toggle preview mode in the Markdown container, preserving scroll position for a smoother user experience.
2025-09-03 20:02:04 +08:00
LiuVaayne
24bc878c27
fix: correct provider URL formatting in syncModelScopeServers function (#9852) 2025-09-03 19:34:48 +08:00
one
b1a9fbc6fd
refactor: tooltip icons (#9841)
* refactor: add HelpTooltip, group tooltip icons

* refactor: add a tip for preview tools

* refactor: use HelpTooltip in SettingsTab
2025-09-03 18:02:53 +08:00
Pleasure1234
8a4c635c97
refactor: migrate showWorkspace setting from global settings to notes module (#9814)
* refactor: migrate showWorkspace setting from global settings to notes module

- Move showWorkspace state from settings store to notes store for better module cohesion
- Add useShowWorkspace hook in useNotesSettings for consistent access pattern
- Add smooth animation for workspace panel show/hide transition
- Relocate save to notes action to message toolbar for better accessibility
- Add migration v146 to handle state migration for existing users

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: cli lint error

* feat: add open outside menu

* fix: hooks error

* Update useShowWorkspace.ts

* fix: update icon import in NotesSidebarHeader component

- Replaced FilePlus icon with FilePlus2 in the NotesSidebarHeader for consistency with the latest icon set.

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: suyao <sy20010504@gmail.com>
2025-09-03 17:02:24 +08:00
one
16d5f5c299
fix: capture animations and fonts in iframe (#9800)
* fix: capture animations in iframe

* fix: font urls

* fix: yarn lock

* refactor: inline fonts persistence
2025-09-03 15:11:13 +08:00
Ricardo
69a5a0434a
fix: enhance Obsidian vault detection for multiple installation methods (#9821) 2025-09-03 15:08:59 +08:00
one
6d1f3a5729
fix(Markdown): regex for style (#9839) 2025-09-03 14:19:06 +08:00
co63oc
b725400428
fix typos (#9831) 2025-09-03 13:14:06 +08:00
beyondkmp
9f7d2be463
refactor(electron.vite.config.ts): streamline external dependencies and improve build configuration (#9835)
- Removed hardcoded external dependencies and replaced them with dynamic extraction from package.json.
- Cleaned up the configuration for better maintainability and flexibility in managing dependencies.
2025-09-03 12:45:33 +08:00
kangfenmao
fdee510c8c feat: add 'invalid_model' translation key across multiple languages
- Introduced a new translation key 'invalid_model' in English, Japanese, Russian, Chinese (Simplified and Traditional), Greek, Spanish, French, and Portuguese.
- Updated the SelectModelButton component to display an error tag when no valid provider is found, enhancing user feedback.
2025-09-03 11:56:57 +08:00
kangfenmao
76ac1bd8f7 fix: enhance provider selection logic in AssistantService
- Updated getProviderByModel function to improve provider selection.
- Added fallback logic to return a default or cherryin provider if the specified model provider is not found.
- Ensured that the first provider is returned as a last resort, enhancing robustness in provider retrieval.
2025-09-03 11:43:42 +08:00
beyondkmp
362658339a
feat: integrate file selection and upload functionality in KnowledgeFiles component (#9815)
* feat: integrate file selection and upload functionality in KnowledgeFiles component

- Added useFiles hook to manage file selection.
- Updated handleAddFile to utilize the new file selection logic, allowing multiple file uploads.
- Improved user experience by handling file uploads asynchronously and logging the results.

* feat: enhance file upload interaction in KnowledgeFiles component

- Wrapped Dragger component in a div to allow for custom click handling.
- Prevented default click behavior to improve user experience when adding files.
- Maintained existing file upload functionality while enhancing the UI interaction.

* refactor(KnowledgeFiles): 提取文件处理逻辑到独立函数

将重复的文件上传和处理逻辑提取到独立的processFiles函数中,提高代码复用性和可维护性

---------

Co-authored-by: icarus <eurfelux@gmail.com>
2025-09-02 23:34:08 +08:00
one
925d7e2a25
fix: draggable list id type (#9809)
* refactor(dnd): rename idKey to itemKey for clarity

* refactor: key and id type for draggable lists

* chore: update yarn lock

* fix: type error

* refactor: improve getId fallbacks
2025-09-02 23:28:29 +08:00
one
089477eb1e
refactor(CodeViewer): improve props, aligned to CodeEditor (#9786)
* refactor(CodeViewer): improve props, aligned to CodeEditor

* refactor: simplify internal variables

* refactor: remove default lineNumbers

* fix: shiki theme container style

* revert: use ReactMarkdown for prompt editing
2025-09-02 21:52:14 +08:00
Phantom
f153f77a7e
chore: update yarn.lock (#9808)
chore: 更新 yarn.lock
2025-09-02 20:03:27 +08:00
Teo
a34141c912
chore(migrate): update migration logic for version 145 and enforce showMessageOutline default (#9805) 2025-09-02 20:03:19 +08:00
Konv Suu
94374e7de2
fix: tabs 高度不足导致 border 样式不能占满父元素 (#9780)
* fix: tabs 高度不足导致 border 样式不能占满父元素

* Revert
2025-09-02 19:09:11 +08:00
yyhhyyyyyy
bdf6748956
fix: auto-enable image generation button for Gemini 2.5 Flash Image model (#9787) 2025-09-02 18:41:39 +08:00
beyondkmp
d6dcb471f9
chore: update TypeScript configuration and scripts (#9792)
- Added support for TypeScript incremental builds by enabling the `incremental` option and specifying the `tsBuildInfoFile` in both `tsconfig.node.json` and `tsconfig.web.json`.
- Updated the `typecheck` script in `package.json` to use `concurrently` for running node and web type checks in parallel.
- Added `.tsbuildinfo` to `.gitignore` to prevent build info files from being tracked.
2025-09-02 16:21:09 +08:00
beyondkmp
2c0391da81
chore: update vite down to 7.1.5 (#9794)
chore: update electron.vite.config.ts and yarn.lock for dependency management

- Added additional external dependencies in electron.vite.config.ts to improve build configuration.
- Updated multiple package versions in yarn.lock, including @napi-rs/wasm-runtime, @oxc-project/runtime, and @rolldown packages to their latest beta versions for better compatibility and performance.
- Adjusted fdir and picomatch versions to ensure alignment with the latest features and fixes.
2025-09-02 15:51:23 +08:00
Konv Suu
77c2255da4
feat: 解析链接的 og 数据并添加到 preview 内容中 (#9752)
* feat: 解析链接的 og 数据并添加到 preview 内容中

* update test cases

* refactor(useMetaDataParser): 移除冗余的isLoaded状态并优化加载逻辑

* feat(hyperlink): 重构超链接组件,提取OG卡片为独立组件

将超链接预览功能中的OG卡片逻辑提取为独立的OGCard组件
简化Hyperlink组件逻辑,移除重复代码

* refactor(OGCard): 简化加载状态并改进骨架屏样式

移除多余的SkeletonContainer包装,直接在加载状态返回CardSkeleton
重构骨架屏组件,添加图片和文本骨架样式
调整容器布局为flex列布局并添加间距

* test(Hyperlink): 添加OGCard组件模拟并更新快照

---------

Co-authored-by: icarus <eurfelux@gmail.com>
2025-09-02 14:46:41 +08:00
beyondkmp
5ce7261678
refactor: Improve linux build for system-ocr (#9775)
* refactor(ocr): streamline OCR service registration and improve image preprocessing

- Simplified the registration of the system OCR service by removing the conditional check for Linux.
- Updated SystemOcrService to directly import necessary modules, enhancing clarity.
- Refactored image preprocessing to use a static import of the 'sharp' library for better performance.

* add patch for system-ocr

* add patch

* add patch again

* add patch

* delete setting

* delete i18n

* lint error

* add isLinux

* Revert "delete i18n"

This reverts commit 173e65bbd0.

* Revert "delete setting"

This reverts commit de39c76f83.

* fix: add system check for error message

---------

Co-authored-by: icarus <eurfelux@gmail.com>
2025-09-02 12:59:14 +08:00
co63oc
001253b32d
fix typo grap gap (#9777) 2025-09-02 12:36:45 +08:00
2480822690
Remove loading state blocks input, Add "Retry failed messages" button (#9513)
* feat(chat/input): allow sending during streaming; remove loading guard

- Inputbar: drop loading check; keep Send clickable; right-click to pause
- Message/MessageMenubar: render menubar even while streaming
- Minor cleanup of unused imports and lints

* feat(chat/menubar): one-click regenerate (remove confirm); add empty-context fallback

- MessageMenubar: remove Popconfirm; click to regenerate
- ApiService: ensure last user message is included if filters empty (avoid messages=[])
- Minor cleanup

* feat(chat/ui): decouple generation from sending; enable actions during streaming

- MessageGroupMenuBar: add “Retry all” (ReloadOutlined) to retry errored/empty/no-block replies; tooltip via i18n
- Context fallback: always include last user message in both messageThunk and ApiService
- i18n: add message.group.retry_failed (zh-CN, en-US, ja-JP, ru-RU, zh-TW)
- Cleanup: remove unused imports; fix lints

* feat(chat/settings): Add confirmation settings for message actions

- Add "Confirm before deleting message" and "Confirm before regenerating message" options to the settings page, allowing users to customize action confirmations.
- Update internationalization files to support multi-language prompt messages.
- Modify the message menu bar to integrate the confirmation logic, enhancing the user experience.

* fix(chat/ui): Apply regeneration confirmation to user messages

Previously, the "Regenerate" action on user messages would trigger immediately, bypassing the `confirmRegenerateMessage` setting. This behavior was inconsistent with the regeneration logic for assistant messages, which correctly showed a confirmation dialog.

This commit wraps the user message's regenerate button in a `Popconfirm` component, conditioned on the `confirmRegenerateMessage` setting. This aligns its behavior with the existing logic for assistant messages.

Now, all regeneration actions are uniformly governed by the user's confirmation preference, creating a more consistent and predictable user experience.

* fix(ui): Only show 'Retry failed' button when errors exist

fix(ui): Conditionally render the 'Retry failed' button

The 'Retry failed messages' button in the message group menu bar was previously always visible, even when no messages had failed.

- The 'Retry failed' button is now conditionally rendered and will only appear if one or more messages in the group meet the failure criteria.

* feat(chat/ui): Add dedicated button to pause message generation

Replaced the undiscoverable right-click-to-pause functionality on the send button with a dedicated, visible "Pause" button. This new button only appears during message generation, making the action intuitive and accessible.

- Removed `onPause` and context menu logic from `SendMessageButton`.
- Added a conditional `CirclePause` button to the `Inputbar` when loading.

* feat(settings/migrate): initialize confirm message flags for legacy users

- Add migration 138 to default confirmDeleteMessage/confirmRegenerateMessage
- No behavior change for fresh installs (uses initialState)

fix(format): correct indentation in MessageMenubar

fix(settings/migrate): fix persistedReducer verison

* fix(ui): resolve React Hook dependency warnings

- Remove unnecessary `topic.prompt` dependencies from Message components
- Remove `loading` dependency from Inputbar useCallback

Resolves ESLint exhaustive-deps warnings and conflicts

---------

Co-authored-by: n2yt584v2t4nh7y <117180266+n2yt584v2t4nh7y@users.noreply.github.com>
2025-09-02 11:24:20 +08:00
RieN 7z
16b9f49cc8
feat: Add animation for sidebar (#9768) 2025-09-02 09:26:56 +08:00
Xiangxi Meng
1295d37ff6
Add the missing quotation mark (#9772)
Signed-off-by: Xiangxi Meng <mengxiangxi@pku.edu.cn>
2025-09-02 07:27:16 +08:00
kangfenmao
7119c8155a chore: bump version to 1.5.9 2025-09-02 04:43:58 +08:00
kangfenmao
cef8791c82 refactor(RichEditPopup): update minHeight to be dynamic based on window size
- Changed minHeight from a fixed value to a dynamic calculation using window.innerHeight for improved responsiveness.
2025-09-02 04:40:02 +08:00
kangfenmao
e417b57123 refactor(AihubmixPage): update mode options for aihubmix to include specific action values
- Changed mode option values to be more descriptive by prefixing with 'aihubmix_' for better clarity in the image generation context.
2025-09-02 04:40:02 +08:00
kangfenmao
c827aeaab2 feat(code): add 'modelscope' to CLAUDE_OFFICIAL_SUPPORTED_PROVIDERS and define its API base URL
- Updated CLAUDE_OFFICIAL_SUPPORTED_PROVIDERS to include 'modelscope'.
- Added API base URL configuration for 'modelscope' under the anthropic provider settings.
2025-09-02 04:40:02 +08:00
kangfenmao
f271cf737c fix: modelscope deepseek v3.1 think mode 2025-09-02 04:11:56 +08:00
kangfenmao
1f9a8276b1 refactor(settings): remove showTokens setting and related logic
- Eliminated the showTokens state and its associated actions from the settings management.
- Updated MessageTokens component to directly display token usage without relying on showTokens.
- Adjusted migration logic to remove default showTokens setting during state initialization.
2025-09-02 03:53:28 +08:00
kangfenmao
06b17128fd refactor(models): streamline model handling and update image generation logic
- Consolidated vision and function calling model definitions into a more structured format.
- Introduced dedicated image generation model checks in the Inputbar component.
- Removed deprecated model checks and updated related logic in ApiService.
- Added new TEXT_TO_IMAGES_MODELS configuration for better image model management.
- Enhanced overall model type handling for improved clarity and maintainability.
2025-09-02 03:44:46 +08:00
kangfenmao
6fb878d3b6 Revert "fix: complete PoeLogo rendering support across provider UI components (#9756)"
This reverts commit df7fd26907.
2025-09-02 02:48:43 +08:00
kangfenmao
80f49aecd7 feat(ocr): enhance OCR service for Linux compatibility and update image processing
- Added conditional registration of the system OCR service for non-Linux platforms.
- Updated SystemOcrService to handle Linux by returning an empty text response.
- Modified image preprocessing to dynamically require the 'sharp' library, improving compatibility and performance.
- Included additional files in the electron-builder configuration for packaging.
2025-09-02 02:29:24 +08:00
kangfenmao
5ab98c9d05 feat(i18n): add "supported_providers" key to multiple locale files and enhance CodeToolsPage with provider information
- Added the "supported_providers" translation key to English, Japanese, Russian, Simplified Chinese, and Traditional Chinese locale files.
- Updated CodeToolsPage to display a popover with supported providers when the Claude Code model is selected, improving user experience and accessibility of provider information.
- Introduced a new styled component for provider logos to enhance visual representation.
2025-09-02 01:07:38 +08:00
Yuhang
df7fd26907
fix: complete PoeLogo rendering support across provider UI components (#9756)
* fix:  PoeLogo in ProviderLogoPicker

* fix: PoeLogo in AddProviderPopup

该文件缺少足够参数匹配‘poe’,鉴于目前只有poe用的‘svg’,简便起见所以只匹配‘svg’而不匹配‘poe’,以后可能需要重构代码

* fix: PoeLogo in ProviderList

* refactor: provider logo rendering logic

1.三个地方渲染头像统一命名成getProviderLogo
2.鉴于目前PROVIDER_LOGO_MAP中只有poe的是‘svg’,故对于判断简化处理,以后有其它提供商改成‘svg’时再重构代码
3.优化内置头像选择器组件部分代码

* Update index.tsx

* refactor(provider-logo): 将获取provider logo的逻辑统一到useProviderLogo钩子中

将原本分散在各处的获取provider logo的逻辑集中到新创建的useProviderLogo钩子中
移除config/providers.ts中的getProviderLogo函数
修改所有使用getProviderLogo的地方改为使用新钩子

* refactor(useProvider): 移除未使用的getProviderLogo函数

* refactor(ProviderAvatar): 重构提供者头像组件为更灵活的API设计

将原有的getProviderAvatar函数重构为ProviderAvatar组件,提供更灵活的属性和样式控制
统一所有使用提供者头像的地方调用新组件,移除重复的样式代码

* refactor(ImageStorage): 使用put替代add方法更新数据库

将db.settings.add方法替换为db.settings.put,以提高数据更新的准确性和一致性

* feat(llm): 添加logos状态管理及相关操作

添加logos状态字段及setLogos、setLogo、removeLogo操作方法,用于管理不同LLM提供商的logo

* refactor(hooks): 使用 useCallback 优化 useTimer 的性能

将 setTimeoutTimer 和 setIntervalTimer 函数用 useCallback 包裹以避免不必要的重新创建

* refactor(provider-logo): 重构提供商logo管理逻辑,使用redux存储logo状态

- 将logo管理逻辑从组件中抽离到useProviderLogo hook
- 使用redux存储和更新logo状态
- 优化logo的加载和保存流程
- 统一处理系统提供商和自定义提供商的logo显示
- 移除冗余的ImageStorage直接调用

* test(api): 修复ApiService测试中的mock数据缺失

* fix(store): 更新持久化存储版本至144并添加迁移逻辑

添加版本144的迁移逻辑,初始化llm.logos状态以修复潜在问题

---------

Co-authored-by: icarus <eurfelux@gmail.com>
2025-09-02 00:50:54 +08:00
beyondkmp
86d8e10dcb
refactor: fix asar integration (#9753)
* refactor: replace afterPack script with beforePack and remove after-pack.js file

- Updated electron-builder configuration to use beforePack instead of afterPack.
- Removed the after-pack.js script as its functionality is no longer needed.

* refactor: streamline filter logic for architecture-specific packages in before-pack script

- Consolidated platform-specific filter conditions for arm64 and x64 architectures.
- Improved readability and maintainability by using arrays to manage filters for different architectures.
- Ensured that the correct filters are applied based on the architecture during the packaging process.

* chore: remove npm build commands from CI workflows

- Eliminated unnecessary `yarn build:npm` commands from the nightly build and release workflows for Linux, macOS, and Windows.
- Streamlined the build process by focusing on platform-specific build commands.

* delete build npm

* refactor: enhance architecture-specific package management in before-pack script

- Updated the before-pack script to include additional architecture-specific packages for arm64 and x64.
- Improved the organization of package filters and streamlined the logic for handling different architectures during the packaging process.
- Ensured that the correct filters are applied based on the architecture, enhancing the build process for various platforms.

* docs: clarify comment on prebuild binaries in before-pack script

* format code

* chore: add afterPack script to electron-builder configuration

- Included afterPack script in electron-builder.yml to enhance the packaging process.
- This addition allows for post-packaging tasks to be executed, improving build automation.

* chore: update macOS entitlements to disable library validation

- Added the key `com.apple.security.cs.disable-library-validation` to the entitlements file to enhance security settings for macOS builds.

* chore: remove unused package for win32 arm64 architecture

- Deleted the `@strongtz/win32-arm64-msvc` package from `package.json` and `yarn.lock` as it is no longer needed.
- Updated the `before-pack.js` script to improve architecture-specific package management by refining filter logic and ensuring correct package downloads based on architecture.
- Enhanced the `downloadNpmPackage` function to use Node.js streams for downloading and extracting packages, improving efficiency and error handling.
2025-09-01 19:48:24 +08:00
kangfenmao
d258d9474a fix(ApiService): change default knowledgeRecognition setting from 'on' to 'off' 2025-09-01 19:32:30 +08:00