agent-relay 3.1.21 → 3.1.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/bin/agent-relay-broker-darwin-arm64 +0 -0
  2. package/bin/agent-relay-broker-darwin-x64 +0 -0
  3. package/bin/agent-relay-broker-linux-arm64 +0 -0
  4. package/bin/agent-relay-broker-linux-x64 +0 -0
  5. package/dist/index.cjs +341 -64
  6. package/package.json +8 -8
  7. package/packages/acp-bridge/package.json +2 -2
  8. package/packages/config/dist/cli-registry.generated.d.ts +427 -67
  9. package/packages/config/dist/cli-registry.generated.d.ts.map +1 -1
  10. package/packages/config/dist/cli-registry.generated.js +334 -54
  11. package/packages/config/dist/cli-registry.generated.js.map +1 -1
  12. package/packages/config/package.json +1 -1
  13. package/packages/config/src/cli-registry.generated.ts +342 -54
  14. package/packages/hooks/package.json +4 -4
  15. package/packages/memory/package.json +2 -2
  16. package/packages/openclaw/package.json +2 -2
  17. package/packages/policy/package.json +2 -2
  18. package/packages/sdk/dist/__tests__/spawn-from-env.test.js +28 -12
  19. package/packages/sdk/dist/__tests__/spawn-from-env.test.js.map +1 -1
  20. package/packages/sdk/dist/spawn-from-env.d.ts +2 -1
  21. package/packages/sdk/dist/spawn-from-env.d.ts.map +1 -1
  22. package/packages/sdk/dist/spawn-from-env.js +20 -9
  23. package/packages/sdk/dist/spawn-from-env.js.map +1 -1
  24. package/packages/sdk/package.json +2 -2
  25. package/packages/sdk/src/__tests__/spawn-from-env.test.ts +37 -12
  26. package/packages/sdk/src/spawn-from-env.ts +26 -9
  27. package/packages/sdk-py/agent_relay/__init__.py +19 -16
  28. package/packages/sdk-py/agent_relay/models.py +230 -38
  29. package/packages/sdk-py/pyproject.toml +1 -1
  30. package/packages/shared/cli-registry.yaml +293 -42
  31. package/packages/telemetry/package.json +1 -1
  32. package/packages/trajectory/package.json +2 -2
  33. package/packages/user-directory/package.json +2 -2
  34. package/packages/utils/package.json +2 -2
  35. package/scripts/postinstall.js +117 -0
@@ -9,10 +9,12 @@ from typing import Final, TypedDict, List
9
9
 
10
10
  class CLIVersions:
11
11
  """CLI tool versions. Update packages/shared/cli-registry.yaml to change versions."""
12
- CLAUDE: Final[str] = "2.1.50" # Claude Code
13
- CODEX: Final[str] = "0.104.0" # Codex CLI
14
- GEMINI: Final[str] = "0.29.5" # Gemini CLI
15
- CURSOR: Final[str] = "0.48.6" # Cursor
12
+ CLAUDE: Final[str] = "2.1.72" # Claude Code
13
+ CODEX: Final[str] = "0.114.0" # Codex CLI
14
+ GEMINI: Final[str] = "0.33.0" # Gemini CLI
15
+ CURSOR: Final[str] = "2026.02.27-e7d2ef6" # Cursor
16
+ DROID: Final[str] = "0.1.0" # Droid
17
+ OPENCODE: Final[str] = "1.2.24" # OpenCode
16
18
  AIDER: Final[str] = "0.72.1" # Aider
17
19
  GOOSE: Final[str] = "1.0.16" # Goose
18
20
 
@@ -23,6 +25,8 @@ class CLIs:
23
25
  CODEX: Final[str] = "codex"
24
26
  GEMINI: Final[str] = "gemini"
25
27
  CURSOR: Final[str] = "cursor"
28
+ DROID: Final[str] = "droid"
29
+ OPENCODE: Final[str] = "opencode"
26
30
  AIDER: Final[str] = "aider"
27
31
  GOOSE: Final[str] = "goose"
28
32
 
@@ -36,45 +40,131 @@ class ClaudeModels:
36
40
 
37
41
  class CodexModels:
38
42
  """Codex CLI model identifiers."""
39
- GPT_5_2_CODEX: Final[str] = "gpt-5.2-codex" # GPT-5.2 Codex Frontier agentic coding model (default)
40
- GPT_5_3_CODEX: Final[str] = "gpt-5.3-codex" # GPT-5.3 Codex — Latest frontier agentic coding model
43
+ GPT_5_4: Final[str] = "gpt-5.4" # GPT-5.4Latest frontier agentic coding model (default)
44
+ GPT_5_3_CODEX: Final[str] = "gpt-5.3-codex" # GPT-5.3 Codex — Frontier agentic coding model
41
45
  GPT_5_3_CODEX_SPARK: Final[str] = "gpt-5.3-codex-spark" # GPT-5.3 Codex Spark — Ultra-fast coding model
42
- GPT_5_1_CODEX_MAX: Final[str] = "gpt-5.1-codex-max" # GPT-5.1 Codex Max Deep and fast reasoning
46
+ GPT_5_2_CODEX: Final[str] = "gpt-5.2-codex" # GPT-5.2 Codex — Frontier agentic coding model
43
47
  GPT_5_2: Final[str] = "gpt-5.2" # GPT-5.2 — Frontier model, knowledge & reasoning
48
+ GPT_5_1_CODEX_MAX: Final[str] = "gpt-5.1-codex-max" # GPT-5.1 Codex Max — Deep and fast reasoning
44
49
  GPT_5_1_CODEX_MINI: Final[str] = "gpt-5.1-codex-mini" # GPT-5.1 Codex Mini — Cheaper, faster
45
50
 
46
51
 
47
52
  class GeminiModels:
48
53
  """Gemini CLI model identifiers."""
49
- GEMINI_3_PRO_PREVIEW: Final[str] = "gemini-3-pro-preview" # Gemini 3 Pro Preview
50
- GEMINI_2_5_PRO: Final[str] = "gemini-2.5-pro" # Gemini 2.5 Pro (default)
54
+ GEMINI_3_1_PRO_PREVIEW: Final[str] = "gemini-3.1-pro-preview" # Gemini 3.1 Pro Preview (default)
55
+ GEMINI_3_FLASH_PREVIEW: Final[str] = "gemini-3-flash-preview" # Gemini 3 Flash Preview
56
+ GEMINI_2_5_PRO: Final[str] = "gemini-2.5-pro" # Gemini 2.5 Pro
51
57
  GEMINI_2_5_FLASH: Final[str] = "gemini-2.5-flash" # Gemini 2.5 Flash
52
58
  GEMINI_2_5_FLASH_LITE: Final[str] = "gemini-2.5-flash-lite" # Gemini 2.5 Flash Lite
53
59
 
54
60
 
55
61
  class CursorModels:
56
62
  """Cursor model identifiers."""
57
- OPUS_4_5_THINKING: Final[str] = "opus-4.5-thinking" # Claude 4.5 Opus (Thinking) (default)
63
+ OPUS_4_6_THINKING: Final[str] = "opus-4.6-thinking" # Claude 4.6 Opus (Thinking) (default)
64
+ OPUS_4_6: Final[str] = "opus-4.6" # Claude 4.6 Opus
58
65
  OPUS_4_5: Final[str] = "opus-4.5" # Claude 4.5 Opus
66
+ OPUS_4_5_THINKING: Final[str] = "opus-4.5-thinking" # Claude 4.5 Opus (Thinking)
67
+ SONNET_4_6: Final[str] = "sonnet-4.6" # Claude 4.6 Sonnet
68
+ SONNET_4_6_THINKING: Final[str] = "sonnet-4.6-thinking" # Claude 4.6 Sonnet (Thinking)
59
69
  SONNET_4_5: Final[str] = "sonnet-4.5" # Claude 4.5 Sonnet
60
70
  SONNET_4_5_THINKING: Final[str] = "sonnet-4.5-thinking" # Claude 4.5 Sonnet (Thinking)
61
- GPT_5_2_CODEX: Final[str] = "gpt-5.2-codex" # GPT-5.2 Codex
62
- GPT_5_2_CODEX_HIGH: Final[str] = "gpt-5.2-codex-high" # GPT-5.2 Codex High
63
- GPT_5_2_CODEX_LOW: Final[str] = "gpt-5.2-codex-low" # GPT-5.2 Codex Low
71
+ COMPOSER_1_5: Final[str] = "composer-1.5" # Composer 1.5
72
+ COMPOSER_1: Final[str] = "composer-1" # Composer 1
73
+ GPT_5_4_XHIGH: Final[str] = "gpt-5.4-xhigh" # GPT-5.4 Extra High
74
+ GPT_5_4_XHIGH_FAST: Final[str] = "gpt-5.4-xhigh-fast" # GPT-5.4 Extra High Fast
75
+ GPT_5_4_HIGH: Final[str] = "gpt-5.4-high" # GPT-5.4 High
76
+ GPT_5_4_HIGH_FAST: Final[str] = "gpt-5.4-high-fast" # GPT-5.4 High Fast
77
+ GPT_5_4_MEDIUM: Final[str] = "gpt-5.4-medium" # GPT-5.4
78
+ GPT_5_4_MEDIUM_FAST: Final[str] = "gpt-5.4-medium-fast" # GPT-5.4 Fast
79
+ GPT_5_4_LOW: Final[str] = "gpt-5.4-low" # GPT-5.4 Low
80
+ GPT_5_3_CODEX_XHIGH: Final[str] = "gpt-5.3-codex-xhigh" # GPT-5.3 Codex Extra High
81
+ GPT_5_3_CODEX_XHIGH_FAST: Final[str] = "gpt-5.3-codex-xhigh-fast" # GPT-5.3 Codex Extra High Fast
82
+ GPT_5_3_CODEX_HIGH: Final[str] = "gpt-5.3-codex-high" # GPT-5.3 Codex High
83
+ GPT_5_3_CODEX_HIGH_FAST: Final[str] = "gpt-5.3-codex-high-fast" # GPT-5.3 Codex High Fast
84
+ GPT_5_3_CODEX: Final[str] = "gpt-5.3-codex" # GPT-5.3 Codex
85
+ GPT_5_3_CODEX_FAST: Final[str] = "gpt-5.3-codex-fast" # GPT-5.3 Codex Fast
86
+ GPT_5_3_CODEX_LOW: Final[str] = "gpt-5.3-codex-low" # GPT-5.3 Codex Low
87
+ GPT_5_3_CODEX_LOW_FAST: Final[str] = "gpt-5.3-codex-low-fast" # GPT-5.3 Codex Low Fast
88
+ GPT_5_3_CODEX_SPARK_PREVIEW: Final[str] = "gpt-5.3-codex-spark-preview" # GPT-5.3 Codex Spark
64
89
  GPT_5_2_CODEX_XHIGH: Final[str] = "gpt-5.2-codex-xhigh" # GPT-5.2 Codex Extra High
65
- GPT_5_2_CODEX_FAST: Final[str] = "gpt-5.2-codex-fast" # GPT-5.2 Codex Fast
90
+ GPT_5_2_CODEX_XHIGH_FAST: Final[str] = "gpt-5.2-codex-xhigh-fast" # GPT-5.2 Codex Extra High Fast
91
+ GPT_5_2_CODEX_HIGH: Final[str] = "gpt-5.2-codex-high" # GPT-5.2 Codex High
66
92
  GPT_5_2_CODEX_HIGH_FAST: Final[str] = "gpt-5.2-codex-high-fast" # GPT-5.2 Codex High Fast
93
+ GPT_5_2_CODEX: Final[str] = "gpt-5.2-codex" # GPT-5.2 Codex
94
+ GPT_5_2_CODEX_FAST: Final[str] = "gpt-5.2-codex-fast" # GPT-5.2 Codex Fast
95
+ GPT_5_2_CODEX_LOW: Final[str] = "gpt-5.2-codex-low" # GPT-5.2 Codex Low
67
96
  GPT_5_2_CODEX_LOW_FAST: Final[str] = "gpt-5.2-codex-low-fast" # GPT-5.2 Codex Low Fast
68
- GPT_5_2_CODEX_XHIGH_FAST: Final[str] = "gpt-5.2-codex-xhigh-fast" # GPT-5.2 Codex Extra High Fast
69
- GPT_5_1_CODEX_MAX: Final[str] = "gpt-5.1-codex-max" # GPT-5.1 Codex Max
70
- GPT_5_1_CODEX_MAX_HIGH: Final[str] = "gpt-5.1-codex-max-high" # GPT-5.1 Codex Max High
71
97
  GPT_5_2: Final[str] = "gpt-5.2" # GPT-5.2
72
98
  GPT_5_2_HIGH: Final[str] = "gpt-5.2-high" # GPT-5.2 High
99
+ GPT_5_1_CODEX_MAX: Final[str] = "gpt-5.1-codex-max" # GPT-5.1 Codex Max
100
+ GPT_5_1_CODEX_MAX_HIGH: Final[str] = "gpt-5.1-codex-max-high" # GPT-5.1 Codex Max High
101
+ GPT_5_1_CODEX_MINI: Final[str] = "gpt-5.1-codex-mini" # GPT-5.1 Codex Mini
73
102
  GPT_5_1_HIGH: Final[str] = "gpt-5.1-high" # GPT-5.1 High
103
+ GEMINI_3_1_PRO: Final[str] = "gemini-3.1-pro" # Gemini 3.1 Pro
74
104
  GEMINI_3_PRO: Final[str] = "gemini-3-pro" # Gemini 3 Pro
75
105
  GEMINI_3_FLASH: Final[str] = "gemini-3-flash" # Gemini 3 Flash
76
- COMPOSER_1: Final[str] = "composer-1" # Composer 1
77
106
  GROK: Final[str] = "grok" # Grok
107
+ KIMI_K2_5: Final[str] = "kimi-k2.5" # Kimi K2.5
108
+
109
+
110
+ class DroidModels:
111
+ """Droid model identifiers."""
112
+ OPUS_4_6_FAST: Final[str] = "opus-4.6-fast" # Opus 4.6 Fast Mode (12x) (default)
113
+ OPUS_4_5: Final[str] = "opus-4.5" # Opus 4.5 (2x)
114
+ SONNET_4_5: Final[str] = "sonnet-4.5" # Sonnet 4.5 (1.2x)
115
+ HAIKU_4_5: Final[str] = "haiku-4.5" # Haiku 4.5 (0.4x)
116
+ GPT_5_2: Final[str] = "gpt-5.2" # GPT-5.2 (0.7x)
117
+ GPT_5_2_CODEX: Final[str] = "gpt-5.2-codex" # GPT-5.2 Codex (0.7x)
118
+ GEMINI_3_FLASH: Final[str] = "gemini-3-flash" # Gemini 3 Flash (0.2x)
119
+ DROID_CORE: Final[str] = "droid-core-glm-4.7" # Droid Core (GLM-4.7) (0.25x)
120
+
121
+
122
+ class OpencodeModels:
123
+ """OpenCode model identifiers."""
124
+ OPENCODE_BIG_PICKLE: Final[str] = "opencode/big-pickle" # Big Pickle
125
+ OPENCODE_GPT_5_NANO: Final[str] = "opencode/gpt-5-nano" # GPT-5 Nano (OpenCode)
126
+ OPENCODE_MIMO_V2_FLASH_FREE: Final[str] = "opencode/mimo-v2-flash-free" # Mimo V2 Flash Free
127
+ OPENCODE_MINIMAX_M2_5_FREE: Final[str] = "opencode/minimax-m2.5-free" # MiniMax M2.5 Free
128
+ OPENAI_CODEX_MINI_LATEST: Final[str] = "openai/codex-mini-latest" # Codex Mini Latest
129
+ OPENAI_GPT_3_5_TURBO: Final[str] = "openai/gpt-3.5-turbo" # GPT-3.5 Turbo
130
+ OPENAI_GPT_4: Final[str] = "openai/gpt-4" # GPT-4
131
+ OPENAI_GPT_4_TURBO: Final[str] = "openai/gpt-4-turbo" # GPT-4 Turbo
132
+ OPENAI_GPT_4_1: Final[str] = "openai/gpt-4.1" # GPT-4.1
133
+ OPENAI_GPT_4_1_MINI: Final[str] = "openai/gpt-4.1-mini" # GPT-4.1 Mini
134
+ OPENAI_GPT_4_1_NANO: Final[str] = "openai/gpt-4.1-nano" # GPT-4.1 Nano
135
+ OPENAI_GPT_4O: Final[str] = "openai/gpt-4o" # GPT-4o
136
+ OPENAI_GPT_4O_2024_05_13: Final[str] = "openai/gpt-4o-2024-05-13" # GPT-4o (2024-05-13)
137
+ OPENAI_GPT_4O_2024_08_06: Final[str] = "openai/gpt-4o-2024-08-06" # GPT-4o (2024-08-06)
138
+ OPENAI_GPT_4O_2024_11_20: Final[str] = "openai/gpt-4o-2024-11-20" # GPT-4o (2024-11-20)
139
+ OPENAI_GPT_4O_MINI: Final[str] = "openai/gpt-4o-mini" # GPT-4o Mini
140
+ OPENAI_GPT_5: Final[str] = "openai/gpt-5" # GPT-5
141
+ OPENAI_GPT_5_CODEX: Final[str] = "openai/gpt-5-codex" # GPT-5 Codex
142
+ OPENAI_GPT_5_MINI: Final[str] = "openai/gpt-5-mini" # GPT-5 Mini
143
+ OPENAI_GPT_5_NANO: Final[str] = "openai/gpt-5-nano" # GPT-5 Nano
144
+ OPENAI_GPT_5_PRO: Final[str] = "openai/gpt-5-pro" # GPT-5 Pro
145
+ OPENAI_GPT_5_1: Final[str] = "openai/gpt-5.1" # GPT-5.1
146
+ OPENAI_GPT_5_1_CHAT_LATEST: Final[str] = "openai/gpt-5.1-chat-latest" # GPT-5.1 Chat Latest
147
+ OPENAI_GPT_5_1_CODEX: Final[str] = "openai/gpt-5.1-codex" # GPT-5.1 Codex
148
+ OPENAI_GPT_5_1_CODEX_MAX: Final[str] = "openai/gpt-5.1-codex-max" # GPT-5.1 Codex Max
149
+ OPENAI_GPT_5_1_CODEX_MINI: Final[str] = "openai/gpt-5.1-codex-mini" # GPT-5.1 Codex Mini
150
+ OPENAI_GPT_5_2: Final[str] = "openai/gpt-5.2" # GPT-5.2 (default)
151
+ OPENAI_GPT_5_2_CHAT_LATEST: Final[str] = "openai/gpt-5.2-chat-latest" # GPT-5.2 Chat Latest
152
+ OPENAI_GPT_5_2_CODEX: Final[str] = "openai/gpt-5.2-codex" # GPT-5.2 Codex
153
+ OPENAI_GPT_5_2_PRO: Final[str] = "openai/gpt-5.2-pro" # GPT-5.2 Pro
154
+ OPENAI_GPT_5_3_CODEX: Final[str] = "openai/gpt-5.3-codex" # GPT-5.3 Codex
155
+ OPENAI_GPT_5_3_CODEX_SPARK: Final[str] = "openai/gpt-5.3-codex-spark" # GPT-5.3 Codex Spark
156
+ OPENAI_GPT_5_4: Final[str] = "openai/gpt-5.4" # GPT-5.4
157
+ OPENAI_GPT_5_4_PRO: Final[str] = "openai/gpt-5.4-pro" # GPT-5.4 Pro
158
+ OPENAI_O1: Final[str] = "openai/o1" # O1
159
+ OPENAI_O1_MINI: Final[str] = "openai/o1-mini" # O1 Mini
160
+ OPENAI_O1_PREVIEW: Final[str] = "openai/o1-preview" # O1 Preview
161
+ OPENAI_O1_PRO: Final[str] = "openai/o1-pro" # O1 Pro
162
+ OPENAI_O3: Final[str] = "openai/o3" # O3
163
+ OPENAI_O3_DEEP_RESEARCH: Final[str] = "openai/o3-deep-research" # O3 Deep Research
164
+ OPENAI_O3_MINI: Final[str] = "openai/o3-mini" # O3 Mini
165
+ OPENAI_O3_PRO: Final[str] = "openai/o3-pro" # O3 Pro
166
+ OPENAI_O4_MINI: Final[str] = "openai/o4-mini" # O4 Mini
167
+ OPENAI_O4_MINI_DEEP_RESEARCH: Final[str] = "openai/o4-mini-deep-research" # O4 Mini Deep Research
78
168
 
79
169
 
80
170
  class ModelOption(TypedDict):
@@ -90,43 +180,127 @@ CLAUDE_MODEL_OPTIONS: Final[List[ModelOption]] = [
90
180
  ]
91
181
 
92
182
  CODEX_MODEL_OPTIONS: Final[List[ModelOption]] = [
93
- {"value": "gpt-5.2-codex", "label": "GPT-5.2 Codex Frontier agentic coding model"},
94
- {"value": "gpt-5.3-codex", "label": "GPT-5.3 Codex — Latest frontier agentic coding model"},
183
+ {"value": "gpt-5.4", "label": "GPT-5.4Latest frontier agentic coding model"},
184
+ {"value": "gpt-5.3-codex", "label": "GPT-5.3 Codex — Frontier agentic coding model"},
95
185
  {"value": "gpt-5.3-codex-spark", "label": "GPT-5.3 Codex Spark — Ultra-fast coding model"},
96
- {"value": "gpt-5.1-codex-max", "label": "GPT-5.1 Codex Max Deep and fast reasoning"},
186
+ {"value": "gpt-5.2-codex", "label": "GPT-5.2 Codex — Frontier agentic coding model"},
97
187
  {"value": "gpt-5.2", "label": "GPT-5.2 — Frontier model, knowledge & reasoning"},
188
+ {"value": "gpt-5.1-codex-max", "label": "GPT-5.1 Codex Max — Deep and fast reasoning"},
98
189
  {"value": "gpt-5.1-codex-mini", "label": "GPT-5.1 Codex Mini — Cheaper, faster"},
99
190
  ]
100
191
 
101
192
  GEMINI_MODEL_OPTIONS: Final[List[ModelOption]] = [
102
- {"value": "gemini-3-pro-preview", "label": "Gemini 3 Pro Preview"},
193
+ {"value": "gemini-3.1-pro-preview", "label": "Gemini 3.1 Pro Preview"},
194
+ {"value": "gemini-3-flash-preview", "label": "Gemini 3 Flash Preview"},
103
195
  {"value": "gemini-2.5-pro", "label": "Gemini 2.5 Pro"},
104
196
  {"value": "gemini-2.5-flash", "label": "Gemini 2.5 Flash"},
105
197
  {"value": "gemini-2.5-flash-lite", "label": "Gemini 2.5 Flash Lite"},
106
198
  ]
107
199
 
108
200
  CURSOR_MODEL_OPTIONS: Final[List[ModelOption]] = [
109
- {"value": "opus-4.5-thinking", "label": "Claude 4.5 Opus (Thinking)"},
201
+ {"value": "opus-4.6-thinking", "label": "Claude 4.6 Opus (Thinking)"},
202
+ {"value": "opus-4.6", "label": "Claude 4.6 Opus"},
110
203
  {"value": "opus-4.5", "label": "Claude 4.5 Opus"},
204
+ {"value": "opus-4.5-thinking", "label": "Claude 4.5 Opus (Thinking)"},
205
+ {"value": "sonnet-4.6", "label": "Claude 4.6 Sonnet"},
206
+ {"value": "sonnet-4.6-thinking", "label": "Claude 4.6 Sonnet (Thinking)"},
111
207
  {"value": "sonnet-4.5", "label": "Claude 4.5 Sonnet"},
112
208
  {"value": "sonnet-4.5-thinking", "label": "Claude 4.5 Sonnet (Thinking)"},
113
- {"value": "gpt-5.2-codex", "label": "GPT-5.2 Codex"},
114
- {"value": "gpt-5.2-codex-high", "label": "GPT-5.2 Codex High"},
115
- {"value": "gpt-5.2-codex-low", "label": "GPT-5.2 Codex Low"},
209
+ {"value": "composer-1.5", "label": "Composer 1.5"},
210
+ {"value": "composer-1", "label": "Composer 1"},
211
+ {"value": "gpt-5.4-xhigh", "label": "GPT-5.4 Extra High"},
212
+ {"value": "gpt-5.4-xhigh-fast", "label": "GPT-5.4 Extra High Fast"},
213
+ {"value": "gpt-5.4-high", "label": "GPT-5.4 High"},
214
+ {"value": "gpt-5.4-high-fast", "label": "GPT-5.4 High Fast"},
215
+ {"value": "gpt-5.4-medium", "label": "GPT-5.4"},
216
+ {"value": "gpt-5.4-medium-fast", "label": "GPT-5.4 Fast"},
217
+ {"value": "gpt-5.4-low", "label": "GPT-5.4 Low"},
218
+ {"value": "gpt-5.3-codex-xhigh", "label": "GPT-5.3 Codex Extra High"},
219
+ {"value": "gpt-5.3-codex-xhigh-fast", "label": "GPT-5.3 Codex Extra High Fast"},
220
+ {"value": "gpt-5.3-codex-high", "label": "GPT-5.3 Codex High"},
221
+ {"value": "gpt-5.3-codex-high-fast", "label": "GPT-5.3 Codex High Fast"},
222
+ {"value": "gpt-5.3-codex", "label": "GPT-5.3 Codex"},
223
+ {"value": "gpt-5.3-codex-fast", "label": "GPT-5.3 Codex Fast"},
224
+ {"value": "gpt-5.3-codex-low", "label": "GPT-5.3 Codex Low"},
225
+ {"value": "gpt-5.3-codex-low-fast", "label": "GPT-5.3 Codex Low Fast"},
226
+ {"value": "gpt-5.3-codex-spark-preview", "label": "GPT-5.3 Codex Spark"},
116
227
  {"value": "gpt-5.2-codex-xhigh", "label": "GPT-5.2 Codex Extra High"},
117
- {"value": "gpt-5.2-codex-fast", "label": "GPT-5.2 Codex Fast"},
228
+ {"value": "gpt-5.2-codex-xhigh-fast", "label": "GPT-5.2 Codex Extra High Fast"},
229
+ {"value": "gpt-5.2-codex-high", "label": "GPT-5.2 Codex High"},
118
230
  {"value": "gpt-5.2-codex-high-fast", "label": "GPT-5.2 Codex High Fast"},
231
+ {"value": "gpt-5.2-codex", "label": "GPT-5.2 Codex"},
232
+ {"value": "gpt-5.2-codex-fast", "label": "GPT-5.2 Codex Fast"},
233
+ {"value": "gpt-5.2-codex-low", "label": "GPT-5.2 Codex Low"},
119
234
  {"value": "gpt-5.2-codex-low-fast", "label": "GPT-5.2 Codex Low Fast"},
120
- {"value": "gpt-5.2-codex-xhigh-fast", "label": "GPT-5.2 Codex Extra High Fast"},
121
- {"value": "gpt-5.1-codex-max", "label": "GPT-5.1 Codex Max"},
122
- {"value": "gpt-5.1-codex-max-high", "label": "GPT-5.1 Codex Max High"},
123
235
  {"value": "gpt-5.2", "label": "GPT-5.2"},
124
236
  {"value": "gpt-5.2-high", "label": "GPT-5.2 High"},
237
+ {"value": "gpt-5.1-codex-max", "label": "GPT-5.1 Codex Max"},
238
+ {"value": "gpt-5.1-codex-max-high", "label": "GPT-5.1 Codex Max High"},
239
+ {"value": "gpt-5.1-codex-mini", "label": "GPT-5.1 Codex Mini"},
125
240
  {"value": "gpt-5.1-high", "label": "GPT-5.1 High"},
241
+ {"value": "gemini-3.1-pro", "label": "Gemini 3.1 Pro"},
126
242
  {"value": "gemini-3-pro", "label": "Gemini 3 Pro"},
127
243
  {"value": "gemini-3-flash", "label": "Gemini 3 Flash"},
128
- {"value": "composer-1", "label": "Composer 1"},
129
244
  {"value": "grok", "label": "Grok"},
245
+ {"value": "kimi-k2.5", "label": "Kimi K2.5"},
246
+ ]
247
+
248
+ DROID_MODEL_OPTIONS: Final[List[ModelOption]] = [
249
+ {"value": "opus-4.6-fast", "label": "Opus 4.6 Fast Mode (12x)"},
250
+ {"value": "opus-4.5", "label": "Opus 4.5 (2x)"},
251
+ {"value": "sonnet-4.5", "label": "Sonnet 4.5 (1.2x)"},
252
+ {"value": "haiku-4.5", "label": "Haiku 4.5 (0.4x)"},
253
+ {"value": "gpt-5.2", "label": "GPT-5.2 (0.7x)"},
254
+ {"value": "gpt-5.2-codex", "label": "GPT-5.2 Codex (0.7x)"},
255
+ {"value": "gemini-3-flash", "label": "Gemini 3 Flash (0.2x)"},
256
+ {"value": "droid-core-glm-4.7", "label": "Droid Core (GLM-4.7) (0.25x)"},
257
+ ]
258
+
259
+ OPENCODE_MODEL_OPTIONS: Final[List[ModelOption]] = [
260
+ {"value": "opencode/big-pickle", "label": "Big Pickle"},
261
+ {"value": "opencode/gpt-5-nano", "label": "GPT-5 Nano (OpenCode)"},
262
+ {"value": "opencode/mimo-v2-flash-free", "label": "Mimo V2 Flash Free"},
263
+ {"value": "opencode/minimax-m2.5-free", "label": "MiniMax M2.5 Free"},
264
+ {"value": "openai/codex-mini-latest", "label": "Codex Mini Latest"},
265
+ {"value": "openai/gpt-3.5-turbo", "label": "GPT-3.5 Turbo"},
266
+ {"value": "openai/gpt-4", "label": "GPT-4"},
267
+ {"value": "openai/gpt-4-turbo", "label": "GPT-4 Turbo"},
268
+ {"value": "openai/gpt-4.1", "label": "GPT-4.1"},
269
+ {"value": "openai/gpt-4.1-mini", "label": "GPT-4.1 Mini"},
270
+ {"value": "openai/gpt-4.1-nano", "label": "GPT-4.1 Nano"},
271
+ {"value": "openai/gpt-4o", "label": "GPT-4o"},
272
+ {"value": "openai/gpt-4o-2024-05-13", "label": "GPT-4o (2024-05-13)"},
273
+ {"value": "openai/gpt-4o-2024-08-06", "label": "GPT-4o (2024-08-06)"},
274
+ {"value": "openai/gpt-4o-2024-11-20", "label": "GPT-4o (2024-11-20)"},
275
+ {"value": "openai/gpt-4o-mini", "label": "GPT-4o Mini"},
276
+ {"value": "openai/gpt-5", "label": "GPT-5"},
277
+ {"value": "openai/gpt-5-codex", "label": "GPT-5 Codex"},
278
+ {"value": "openai/gpt-5-mini", "label": "GPT-5 Mini"},
279
+ {"value": "openai/gpt-5-nano", "label": "GPT-5 Nano"},
280
+ {"value": "openai/gpt-5-pro", "label": "GPT-5 Pro"},
281
+ {"value": "openai/gpt-5.1", "label": "GPT-5.1"},
282
+ {"value": "openai/gpt-5.1-chat-latest", "label": "GPT-5.1 Chat Latest"},
283
+ {"value": "openai/gpt-5.1-codex", "label": "GPT-5.1 Codex"},
284
+ {"value": "openai/gpt-5.1-codex-max", "label": "GPT-5.1 Codex Max"},
285
+ {"value": "openai/gpt-5.1-codex-mini", "label": "GPT-5.1 Codex Mini"},
286
+ {"value": "openai/gpt-5.2", "label": "GPT-5.2"},
287
+ {"value": "openai/gpt-5.2-chat-latest", "label": "GPT-5.2 Chat Latest"},
288
+ {"value": "openai/gpt-5.2-codex", "label": "GPT-5.2 Codex"},
289
+ {"value": "openai/gpt-5.2-pro", "label": "GPT-5.2 Pro"},
290
+ {"value": "openai/gpt-5.3-codex", "label": "GPT-5.3 Codex"},
291
+ {"value": "openai/gpt-5.3-codex-spark", "label": "GPT-5.3 Codex Spark"},
292
+ {"value": "openai/gpt-5.4", "label": "GPT-5.4"},
293
+ {"value": "openai/gpt-5.4-pro", "label": "GPT-5.4 Pro"},
294
+ {"value": "openai/o1", "label": "O1"},
295
+ {"value": "openai/o1-mini", "label": "O1 Mini"},
296
+ {"value": "openai/o1-preview", "label": "O1 Preview"},
297
+ {"value": "openai/o1-pro", "label": "O1 Pro"},
298
+ {"value": "openai/o3", "label": "O3"},
299
+ {"value": "openai/o3-deep-research", "label": "O3 Deep Research"},
300
+ {"value": "openai/o3-mini", "label": "O3 Mini"},
301
+ {"value": "openai/o3-pro", "label": "O3 Pro"},
302
+ {"value": "openai/o4-mini", "label": "O4 Mini"},
303
+ {"value": "openai/o4-mini-deep-research", "label": "O4 Mini Deep Research"},
130
304
  ]
131
305
 
132
306
  class Models:
@@ -135,6 +309,8 @@ class Models:
135
309
  Codex = CodexModels
136
310
  Gemini = GeminiModels
137
311
  Cursor = CursorModels
312
+ Droid = DroidModels
313
+ Opencode = OpencodeModels
138
314
 
139
315
 
140
316
  class ModelOptions:
@@ -143,6 +319,8 @@ class ModelOptions:
143
319
  Codex = CODEX_MODEL_OPTIONS
144
320
  Gemini = GEMINI_MODEL_OPTIONS
145
321
  Cursor = CURSOR_MODEL_OPTIONS
322
+ Droid = DROID_MODEL_OPTIONS
323
+ Opencode = OPENCODE_MODEL_OPTIONS
146
324
 
147
325
 
148
326
  class SwarmPatterns:
@@ -161,36 +339,50 @@ class SwarmPatterns:
161
339
 
162
340
  DEFAULT_MODELS: Final[dict] = {
163
341
  "claude": "sonnet",
164
- "codex": "gpt-5.2-codex",
165
- "gemini": "gemini-2.5-pro",
166
- "cursor": "opus-4.5-thinking",
342
+ "codex": "gpt-5.4",
343
+ "gemini": "gemini-3.1-pro-preview",
344
+ "cursor": "opus-4.6-thinking",
345
+ "droid": "opus-4.6-fast",
346
+ "opencode": "openai/gpt-5.2",
167
347
  }
168
348
 
169
349
  CLI_REGISTRY: Final[dict] = {
170
350
  "claude": {
171
351
  "name": "Claude Code",
172
352
  "package": "@anthropic-ai/claude-code",
173
- "version": "2.1.50",
353
+ "version": "2.1.72",
174
354
  "install": "npm install -g @anthropic-ai/claude-code",
175
355
  },
176
356
  "codex": {
177
357
  "name": "Codex CLI",
178
358
  "package": "@openai/codex",
179
- "version": "0.104.0",
359
+ "version": "0.114.0",
180
360
  "install": "npm install -g @openai/codex",
181
361
  },
182
362
  "gemini": {
183
363
  "name": "Gemini CLI",
184
364
  "package": "@google/gemini-cli",
185
- "version": "0.29.5",
365
+ "version": "0.33.0",
186
366
  "install": "npm install -g @google/gemini-cli",
187
367
  },
188
368
  "cursor": {
189
369
  "name": "Cursor",
190
370
  "package": "cursor",
191
- "version": "0.48.6",
371
+ "version": "2026.02.27-e7d2ef6",
192
372
  "install": "Download from cursor.com",
193
373
  },
374
+ "droid": {
375
+ "name": "Droid",
376
+ "package": "droid",
377
+ "version": "0.1.0",
378
+ "install": "Download from droid.dev",
379
+ },
380
+ "opencode": {
381
+ "name": "OpenCode",
382
+ "package": "opencode-ai",
383
+ "version": "1.2.24",
384
+ "install": "npm install -g opencode-ai",
385
+ },
194
386
  "aider": {
195
387
  "name": "Aider",
196
388
  "package": "aider-chat",
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "agent-relay-sdk"
7
- version = "3.1.21"
7
+ version = "3.1.22"
8
8
  description = "Python SDK for Agent Relay workflows"
9
9
  readme = "README.md"
10
10
  license = "Apache-2.0"