feat(cli-manager): add CLI wrapper endpoints management and UI integration

- Introduced functions to load and toggle CLI wrapper endpoints from the API.
- Updated the CLI manager UI to display and manage CLI wrapper endpoints.
- Removed CodexLens and Semantic Search from the tools section, now managed in their dedicated pages.

feat(codexlens-manager): move File Watcher card to the CodexLens Manager page

- Relocated the File Watcher card from the right column to the main content area of the CodexLens Manager page.

refactor(claude-cli-tools): enhance CLI tools configuration and migration

- Added support for new tool types: 'cli-wrapper' and 'api-endpoint'.
- Updated migration logic to handle new tool types and preserve endpoint IDs.
- Deprecated previous custom endpoint handling in favor of the new structure.

feat(cli-executor-core): integrate CLI settings for custom endpoint execution

- Implemented execution logic for custom CLI封装 endpoints using settings files.
- Enhanced error handling and output logging for CLI executions.
- Updated tool identification logic to support both built-in tools and custom endpoints.
This commit is contained in:
catlog22
2026-01-12 09:35:05 +08:00
parent cefb934a2c
commit 1044886e7d
10 changed files with 1187 additions and 279 deletions

View File

@@ -257,6 +257,10 @@ const i18n = {
'cli.addToCli': 'Add to CLI',
'cli.enabled': 'Enabled',
'cli.disabled': 'Disabled',
'cli.cliWrapper': 'CLI Wrapper',
'cli.wrapper': 'Wrapper',
'cli.customClaudeSettings': 'Custom Claude CLI settings',
'cli.updateFailed': 'Failed to update',
// CodexLens Configuration
'codexlens.config': 'CodexLens Configuration',
@@ -1618,7 +1622,7 @@ const i18n = {
'apiSettings.total': 'total',
'apiSettings.testConnection': 'Test Connection',
'apiSettings.endpointId': 'Endpoint ID',
'apiSettings.endpointIdHint': 'Usage: ccw cli -p "..." --model <endpoint-id>',
'apiSettings.endpointIdHint': 'Usage: ccw cli -p "..." --tool custom --model <endpoint-id> --mode analysis',
'apiSettings.endpoints': 'Endpoints',
'apiSettings.addEndpointHint': 'Create custom endpoint aliases for CLI usage',
'apiSettings.endpointModel': 'Model',
@@ -1752,12 +1756,15 @@ const i18n = {
'apiSettings.useModelTreeToManage': 'Use the model tree to manage individual models',
// CLI Settings
'apiSettings.cliSettings': 'CLI Settings',
'apiSettings.addCliSettings': 'Add CLI Settings',
'apiSettings.editCliSettings': 'Edit CLI Settings',
'apiSettings.noCliSettings': 'No CLI settings configured',
'apiSettings.noCliSettingsSelected': 'No CLI Settings Selected',
'apiSettings.cliSettingsHint': 'Select a CLI settings endpoint or create a new one',
'apiSettings.cliSettings': 'CLI Wrapper',
'apiSettings.addCliSettings': 'Add CLI Wrapper',
'apiSettings.editCliSettings': 'Edit CLI Wrapper',
'apiSettings.noCliSettings': 'No CLI wrapper configured',
'apiSettings.noCliSettingsSelected': 'No CLI Wrapper Selected',
'apiSettings.cliSettingsHint': 'Select a CLI wrapper endpoint or create a new one',
'apiSettings.showToken': 'Show',
'apiSettings.hideToken': 'Hide',
'apiSettings.syncFromJson': 'Parse JSON',
'apiSettings.cliProviderHint': 'Select an Anthropic provider to use its API key and base URL',
'apiSettings.noAnthropicProviders': 'No Anthropic providers configured. Please add one in the Providers tab first.',
'apiSettings.selectProviderFirst': 'Select a provider first',
@@ -1771,6 +1778,10 @@ const i18n = {
'apiSettings.envSettings': 'Environment Settings',
'apiSettings.settingsFilePath': 'Settings File Path',
'apiSettings.nameRequired': 'Name is required',
'apiSettings.nameInvalidFormat': 'Name must start with a letter and contain only letters, numbers, hyphens, and underscores',
'apiSettings.nameTooLong': 'Name must be 32 characters or less',
'apiSettings.nameConflict': 'Name conflicts with built-in tool',
'apiSettings.nameFormatHint': 'Letters, numbers, hyphens, underscores only. Used as: ccw cli --tool [name]',
'apiSettings.status': 'Status',
'apiSettings.providerBinding': 'Provider Binding',
'apiSettings.directConfig': 'Direct Configuration',
@@ -2391,6 +2402,10 @@ const i18n = {
'cli.addToCli': '添加到 CLI',
'cli.enabled': '已启用',
'cli.disabled': '已禁用',
'cli.cliWrapper': 'CLI 封装',
'cli.wrapper': '封装',
'cli.customClaudeSettings': '自定义 Claude CLI 配置',
'cli.updateFailed': '更新失败',
// CodexLens 配置
'codexlens.config': 'CodexLens 配置',
@@ -3761,7 +3776,7 @@ const i18n = {
'apiSettings.total': '总计',
'apiSettings.testConnection': '测试连接',
'apiSettings.endpointId': '端点 ID',
'apiSettings.endpointIdHint': '用法: ccw cli -p "..." --model <端点ID>',
'apiSettings.endpointIdHint': '用法: ccw cli -p "..." --tool custom --model <端点ID> --mode analysis',
'apiSettings.endpoints': '端点',
'apiSettings.addEndpointHint': '创建用于 CLI 的自定义端点别名',
'apiSettings.endpointModel': '模型',
@@ -3895,12 +3910,15 @@ const i18n = {
'apiSettings.useModelTreeToManage': '使用模型树管理各个模型',
// CLI Settings
'apiSettings.cliSettings': 'CLI 配置',
'apiSettings.addCliSettings': '添加 CLI 配置',
'apiSettings.editCliSettings': '编辑 CLI 配置',
'apiSettings.noCliSettings': '未配置 CLI 设置',
'apiSettings.noCliSettingsSelected': '未选择 CLI 配置',
'apiSettings.cliSettingsHint': '选择一个 CLI 配置端点或创建新的',
'apiSettings.cliSettings': 'CLI 封装',
'apiSettings.addCliSettings': '添加 CLI 封装',
'apiSettings.editCliSettings': '编辑 CLI 封装',
'apiSettings.noCliSettings': '未配置 CLI 封装',
'apiSettings.noCliSettingsSelected': '未选择 CLI 封装',
'apiSettings.cliSettingsHint': '选择一个 CLI 封装端点或创建新的',
'apiSettings.showToken': '显示',
'apiSettings.hideToken': '隐藏',
'apiSettings.syncFromJson': '解析 JSON',
'apiSettings.cliProviderHint': '选择一个 Anthropic 供应商以使用其 API 密钥和基础 URL',
'apiSettings.noAnthropicProviders': '未配置 Anthropic 供应商。请先在供应商标签页中添加。',
'apiSettings.selectProviderFirst': '请先选择供应商',
@@ -3914,6 +3932,10 @@ const i18n = {
'apiSettings.envSettings': '环境变量设置',
'apiSettings.settingsFilePath': '配置文件路径',
'apiSettings.nameRequired': '名称为必填项',
'apiSettings.nameInvalidFormat': '名称必须以字母开头,只能包含字母、数字、连字符和下划线',
'apiSettings.nameTooLong': '名称长度不能超过32个字符',
'apiSettings.nameConflict': '名称与内置工具冲突',
'apiSettings.nameFormatHint': '仅限字母、数字、连字符、下划线。用于命令: ccw cli --tool [名称]',
'apiSettings.tokenRequired': 'API 令牌为必填项',
'apiSettings.status': '状态',
'apiSettings.providerBinding': '供应商绑定',