File size: 1,555 Bytes
69b897d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/**
 * 客户端定义配置
 * 定义所有支持的客户端类型和它们的属性
 */

const CLIENT_DEFINITIONS = {
  CLAUDE_CODE: {
    id: 'claude_code',
    name: 'Claude Code',
    displayName: 'Claude Code CLI',
    description: 'Claude Code command-line interface',
    icon: '🤖'
  },

  GEMINI_CLI: {
    id: 'gemini_cli',
    name: 'Gemini CLI',
    displayName: 'Gemini Command Line Tool',
    description: 'Google Gemini API command-line interface',
    icon: '💎'
  },

  CODEX_CLI: {
    id: 'codex_cli',
    name: 'Codex CLI',
    displayName: 'Codex Command Line Tool',
    description: 'Cursor/Codex command-line interface',
    icon: '🔷'
  },

  DROID_CLI: {
    id: 'droid_cli',
    name: 'Droid CLI',
    displayName: 'Factory Droid CLI',
    description: 'Factory Droid platform command-line interface',
    icon: '🤖'
  }
}

// 导出客户端ID枚举
const CLIENT_IDS = {
  CLAUDE_CODE: 'claude_code',
  GEMINI_CLI: 'gemini_cli',
  CODEX_CLI: 'codex_cli',
  DROID_CLI: 'droid_cli'
}

// 获取所有客户端定义
function getAllClientDefinitions() {
  return Object.values(CLIENT_DEFINITIONS)
}

// 根据ID获取客户端定义
function getClientDefinitionById(clientId) {
  return Object.values(CLIENT_DEFINITIONS).find((client) => client.id === clientId)
}

// 检查客户端ID是否有效
function isValidClientId(clientId) {
  return Object.values(CLIENT_IDS).includes(clientId)
}

module.exports = {
  CLIENT_DEFINITIONS,
  CLIENT_IDS,
  getAllClientDefinitions,
  getClientDefinitionById,
  isValidClientId
}