@team-agent/installer 0.5.107 → 0.5.108
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.
- package/Cargo.lock +1 -1
- package/Cargo.toml +1 -1
- package/crates/team-agent/src/cli/adapters.rs +1 -1
- package/crates/team-agent/src/cli/emit.rs +3 -3
- package/crates/team-agent/src/cli/mod.rs +87 -4
- package/crates/team-agent/src/cli/models.rs +252 -3
- package/crates/team-agent/src/cli/spec.rs +1 -1
- package/crates/team-agent/src/cli/status_port/brief.rs +155 -37
- package/crates/team-agent/src/cli/tests/shutdown_kill_plan.rs +184 -0
- package/crates/team-agent/src/cli/tests/status_brief.rs +624 -0
- package/crates/team-agent/src/provider/model_catalog.rs +166 -3
- package/crates/team-agent/src/provider/testdata/cursor-list-models-native.stdout +250 -0
- package/crates/team-agent/src/provider/testdata/grok-models-authenticated.stdout +9 -0
- package/crates/team-agent/src/provider/testdata/grok-models-unauthenticated.stdout +7 -0
- package/package.json +4 -4
|
@@ -80,10 +80,11 @@ impl CatalogError {
|
|
|
80
80
|
"cursor_agent" => "agent",
|
|
81
81
|
"codex" => "codex",
|
|
82
82
|
"claude" | "claude_code" => "claude",
|
|
83
|
+
"grok" => "grok",
|
|
83
84
|
_ => "provider CLI",
|
|
84
85
|
};
|
|
85
86
|
match self {
|
|
86
|
-
Self::UnsupportedProvider => "choose a supported provider: pi, cursor_agent, codex, claude, or
|
|
87
|
+
Self::UnsupportedProvider => "choose a supported provider: pi, cursor_agent, codex, claude, claude_code, or grok".into(),
|
|
87
88
|
Self::ExecutableUnavailable => format!("install or repair the PATH-first `{executable}` executable, then retry `team-agent models --provider {provider}`"),
|
|
88
89
|
Self::UnsupportedSchema => format!("upgrade `{executable}` to a version that supports its model catalog protocol, then retry `team-agent models --provider {provider}`"),
|
|
89
90
|
Self::CommandFailed => format!("run `{executable}` directly to check catalog/account access, then retry `team-agent models --provider {provider}`"),
|
|
@@ -118,6 +119,7 @@ fn display_provider(provider: &str) -> &str {
|
|
|
118
119
|
"cursor_agent" => "Cursor",
|
|
119
120
|
"codex" => "Codex",
|
|
120
121
|
"claude" | "claude_code" => "Claude",
|
|
122
|
+
"grok" => "Grok",
|
|
121
123
|
_ => provider,
|
|
122
124
|
}
|
|
123
125
|
}
|
|
@@ -130,6 +132,7 @@ pub fn parse_catalog_provider(name: &str) -> Option<Provider> {
|
|
|
130
132
|
"codex" => Some(Provider::Codex),
|
|
131
133
|
"claude" => Some(Provider::Claude),
|
|
132
134
|
"claude_code" => Some(Provider::ClaudeCode),
|
|
135
|
+
"grok" => Some(Provider::Grok),
|
|
133
136
|
_ => None,
|
|
134
137
|
}
|
|
135
138
|
}
|
|
@@ -153,6 +156,7 @@ enum CatalogSource {
|
|
|
153
156
|
Pi,
|
|
154
157
|
CursorAgent,
|
|
155
158
|
Codex,
|
|
159
|
+
Grok,
|
|
156
160
|
Claude,
|
|
157
161
|
}
|
|
158
162
|
|
|
@@ -163,7 +167,8 @@ fn catalog_source(provider: Provider) -> Option<CatalogSource> {
|
|
|
163
167
|
Provider::CursorAgent => Some(CatalogSource::CursorAgent),
|
|
164
168
|
Provider::Codex => Some(CatalogSource::Codex),
|
|
165
169
|
Provider::Claude | Provider::ClaudeCode => Some(CatalogSource::Claude),
|
|
166
|
-
Provider::
|
|
170
|
+
Provider::Grok => Some(CatalogSource::Grok),
|
|
171
|
+
Provider::Copilot | Provider::GeminiCli | Provider::Fake => None,
|
|
167
172
|
}
|
|
168
173
|
}
|
|
169
174
|
|
|
@@ -184,6 +189,10 @@ pub fn discover_model_catalog(provider_name: &str) -> Result<Vec<ModelRecord>, C
|
|
|
184
189
|
let bytes = run_native("codex", &["debug", "models"], None, None, &[], CATALOG_TIMEOUT, MAX_CATALOG_BYTES, &mut NoopObserver)?;
|
|
185
190
|
parse_codex_catalog(&bytes, requested_provider)?
|
|
186
191
|
}
|
|
192
|
+
CatalogSource::Grok => {
|
|
193
|
+
let bytes = run_native("grok", &["models"], None, None, &[], CATALOG_TIMEOUT, MAX_CATALOG_BYTES, &mut NoopObserver)?;
|
|
194
|
+
parse_grok_catalog(&bytes)?
|
|
195
|
+
}
|
|
187
196
|
CatalogSource::Claude => discover_claude_catalog(requested_provider)?,
|
|
188
197
|
};
|
|
189
198
|
Ok(records)
|
|
@@ -242,8 +251,20 @@ pub(crate) fn parse_pi_catalog(bytes: &[u8]) -> Result<Vec<ModelRecord>, Catalog
|
|
|
242
251
|
|
|
243
252
|
pub(crate) fn parse_cursor_catalog(bytes: &[u8]) -> Result<Vec<ModelRecord>, CatalogError> {
|
|
244
253
|
let text = std::str::from_utf8(bytes).map_err(|_| CatalogError::InvalidUtf8)?;
|
|
254
|
+
let lines = text.lines().collect::<Vec<_>>();
|
|
255
|
+
let tip_line = lines
|
|
256
|
+
.iter()
|
|
257
|
+
.rposition(|line| !line.trim().is_empty())
|
|
258
|
+
.filter(|index| {
|
|
259
|
+
lines[*index]
|
|
260
|
+
.strip_prefix("Tip: use --model ")
|
|
261
|
+
.is_some_and(|tip| !tip.is_empty())
|
|
262
|
+
});
|
|
245
263
|
let mut records: Vec<ModelRecord> = Vec::new();
|
|
246
|
-
for line in
|
|
264
|
+
for (index, line) in lines.into_iter().enumerate() {
|
|
265
|
+
if Some(index) == tip_line {
|
|
266
|
+
continue;
|
|
267
|
+
}
|
|
247
268
|
let line = line.trim();
|
|
248
269
|
if line.is_empty() || line.trim_end_matches(':').eq_ignore_ascii_case("available models") { continue; }
|
|
249
270
|
let Some((id, display)) = line.split_once(" - ") else { return Err(CatalogError::Malformed); };
|
|
@@ -260,6 +281,117 @@ pub(crate) fn parse_cursor_catalog(bytes: &[u8]) -> Result<Vec<ModelRecord>, Cat
|
|
|
260
281
|
Ok(records)
|
|
261
282
|
}
|
|
262
283
|
|
|
284
|
+
fn parse_grok_catalog(bytes: &[u8]) -> Result<Vec<ModelRecord>, CatalogError> {
|
|
285
|
+
let text = std::str::from_utf8(bytes).map_err(|_| CatalogError::InvalidUtf8)?;
|
|
286
|
+
let mut has_auth_notice = false;
|
|
287
|
+
let mut has_models_header = false;
|
|
288
|
+
let mut declared_default: Option<String> = None;
|
|
289
|
+
let mut starred_default: Option<String> = None;
|
|
290
|
+
let mut marked_default: Option<String> = None;
|
|
291
|
+
let mut seen = HashSet::new();
|
|
292
|
+
let mut records = Vec::new();
|
|
293
|
+
|
|
294
|
+
for line in text.lines() {
|
|
295
|
+
let line = line.trim();
|
|
296
|
+
if line.is_empty() {
|
|
297
|
+
continue;
|
|
298
|
+
}
|
|
299
|
+
if !has_models_header {
|
|
300
|
+
if matches!(line, "You are logged in with grok.com." | "You are not authenticated.") {
|
|
301
|
+
if has_auth_notice {
|
|
302
|
+
return Err(CatalogError::Malformed);
|
|
303
|
+
}
|
|
304
|
+
has_auth_notice = true;
|
|
305
|
+
continue;
|
|
306
|
+
}
|
|
307
|
+
if let Some(id) = line.strip_prefix("Default model: ") {
|
|
308
|
+
if declared_default.is_some() || id.is_empty() {
|
|
309
|
+
return Err(CatalogError::Malformed);
|
|
310
|
+
}
|
|
311
|
+
validate_identity(id)?;
|
|
312
|
+
declared_default = Some(id.to_string());
|
|
313
|
+
continue;
|
|
314
|
+
}
|
|
315
|
+
if line == "Available models:" {
|
|
316
|
+
has_models_header = true;
|
|
317
|
+
continue;
|
|
318
|
+
}
|
|
319
|
+
return Err(CatalogError::Malformed);
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
let (is_starred, row) = if let Some(row) = line.strip_prefix("- ") {
|
|
323
|
+
(false, row)
|
|
324
|
+
} else if let Some(row) = line.strip_prefix("* ") {
|
|
325
|
+
(true, row)
|
|
326
|
+
} else {
|
|
327
|
+
return Err(CatalogError::Malformed);
|
|
328
|
+
};
|
|
329
|
+
if row == "(default)" {
|
|
330
|
+
return Err(CatalogError::Malformed);
|
|
331
|
+
}
|
|
332
|
+
let (id, has_default_marker) = row
|
|
333
|
+
.strip_suffix(" (default)")
|
|
334
|
+
.map_or((row, false), |id| (id, true));
|
|
335
|
+
if id.is_empty() {
|
|
336
|
+
return Err(CatalogError::Malformed);
|
|
337
|
+
}
|
|
338
|
+
validate_identity(id)?;
|
|
339
|
+
if !seen.insert(id.to_string()) {
|
|
340
|
+
return Err(CatalogError::DuplicateIdentity(id.to_string()));
|
|
341
|
+
}
|
|
342
|
+
if is_starred {
|
|
343
|
+
if starred_default.as_deref().is_some_and(|current| current != id) {
|
|
344
|
+
return Err(CatalogError::Malformed);
|
|
345
|
+
}
|
|
346
|
+
starred_default = Some(id.to_string());
|
|
347
|
+
}
|
|
348
|
+
if has_default_marker {
|
|
349
|
+
if marked_default.as_deref().is_some_and(|current| current != id) {
|
|
350
|
+
return Err(CatalogError::Malformed);
|
|
351
|
+
}
|
|
352
|
+
marked_default = Some(id.to_string());
|
|
353
|
+
}
|
|
354
|
+
records.push(ModelRecord {
|
|
355
|
+
provider: "grok".into(),
|
|
356
|
+
vendor: "xai".into(),
|
|
357
|
+
id: id.into(),
|
|
358
|
+
display_name: id.into(),
|
|
359
|
+
default: None,
|
|
360
|
+
aliases: Vec::new(),
|
|
361
|
+
});
|
|
362
|
+
}
|
|
363
|
+
if !has_models_header {
|
|
364
|
+
return Err(CatalogError::Malformed);
|
|
365
|
+
}
|
|
366
|
+
if records.is_empty() {
|
|
367
|
+
return Err(CatalogError::Empty);
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
let mut default_id: Option<&str> = None;
|
|
371
|
+
for candidate in [
|
|
372
|
+
declared_default.as_deref(),
|
|
373
|
+
starred_default.as_deref(),
|
|
374
|
+
marked_default.as_deref(),
|
|
375
|
+
]
|
|
376
|
+
.into_iter()
|
|
377
|
+
.flatten()
|
|
378
|
+
{
|
|
379
|
+
if default_id.is_some_and(|current| current != candidate) {
|
|
380
|
+
return Err(CatalogError::Malformed);
|
|
381
|
+
}
|
|
382
|
+
default_id = Some(candidate);
|
|
383
|
+
}
|
|
384
|
+
if let Some(default_id) = default_id {
|
|
385
|
+
if !seen.contains(default_id) {
|
|
386
|
+
return Err(CatalogError::Malformed);
|
|
387
|
+
}
|
|
388
|
+
for record in &mut records {
|
|
389
|
+
record.default = Some(record.id.as_str() == default_id);
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
Ok(records)
|
|
393
|
+
}
|
|
394
|
+
|
|
263
395
|
fn parse_codex_catalog(bytes: &[u8], provider: &str) -> Result<Vec<ModelRecord>, CatalogError> {
|
|
264
396
|
let value: serde_json::Value = serde_json::from_slice(bytes).map_err(|_| CatalogError::Malformed)?;
|
|
265
397
|
let rows = value.get("models").and_then(serde_json::Value::as_array).ok_or(CatalogError::UnsupportedSchema)?;
|
|
@@ -647,4 +779,35 @@ mod tests {
|
|
|
647
779
|
assert!(!model_matches(&row, "LUNA absent"));
|
|
648
780
|
assert!(model_matches(&row, " "));
|
|
649
781
|
}
|
|
782
|
+
|
|
783
|
+
#[test]
|
|
784
|
+
fn frozen_cursor_catalog_skips_only_its_native_trailing_tip() {
|
|
785
|
+
let frozen = include_bytes!("testdata/cursor-list-models-native.stdout");
|
|
786
|
+
let records = parse_cursor_catalog(frozen).unwrap();
|
|
787
|
+
let low = records.iter().find(|row| row.id == "gpt-5.6-luna-low").unwrap();
|
|
788
|
+
assert_eq!(low.provider.as_str(), "cursor_agent");
|
|
789
|
+
assert_eq!(low.vendor.as_str(), "gpt");
|
|
790
|
+
assert_eq!(low.display_name, "GPT-5.6 Luna 1M Low (current)");
|
|
791
|
+
assert_eq!(low.default, Some(false));
|
|
792
|
+
assert!(low.aliases.is_empty());
|
|
793
|
+
let xhigh = records.iter().find(|row| row.id == "gpt-5.6-luna-xhigh").unwrap();
|
|
794
|
+
assert_eq!(xhigh.id.as_str(), "gpt-5.6-luna-xhigh");
|
|
795
|
+
assert_eq!(xhigh.display_name, "GPT-5.6 Luna 1M Extra High");
|
|
796
|
+
let auto = records.iter().find(|row| row.id == "auto").unwrap();
|
|
797
|
+
assert_eq!(auto.default, Some(true));
|
|
798
|
+
|
|
799
|
+
let text = std::str::from_utf8(frozen).unwrap();
|
|
800
|
+
let without_tip = text.split_once("\nTip: use --model ").unwrap().0;
|
|
801
|
+
assert_eq!(parse_cursor_catalog(without_tip.as_bytes()).unwrap(), parse_cursor_catalog(frozen).unwrap());
|
|
802
|
+
}
|
|
803
|
+
|
|
804
|
+
#[test]
|
|
805
|
+
fn cursor_tip_compatibility_keeps_fail_closed_row_validation() {
|
|
806
|
+
let duplicate = b"Available models\na - A\na - A\n";
|
|
807
|
+
assert!(matches!(parse_cursor_catalog(duplicate), Err(CatalogError::DuplicateIdentity(_))));
|
|
808
|
+
assert!(matches!(parse_cursor_catalog(b"Available models\n"), Err(CatalogError::Empty)));
|
|
809
|
+
assert!(matches!(parse_cursor_catalog(&[b'A', 0xff]), Err(CatalogError::InvalidUtf8)));
|
|
810
|
+
assert!(matches!(parse_cursor_catalog(b"Available models\na - A\nnot a model row\n"), Err(CatalogError::Malformed)));
|
|
811
|
+
assert!(matches!(parse_cursor_catalog(b"Available models\na - A\nTip: use --model a to switch.\nunexpected tail\n"), Err(CatalogError::Malformed)));
|
|
812
|
+
}
|
|
650
813
|
}
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
Available models
|
|
2
|
+
|
|
3
|
+
auto - Auto (default)
|
|
4
|
+
gpt-5.3-codex-low - Codex 5.3 Low
|
|
5
|
+
gpt-5.3-codex-low-fast - Codex 5.3 Low Fast
|
|
6
|
+
gpt-5.3-codex - Codex 5.3
|
|
7
|
+
gpt-5.3-codex-fast - Codex 5.3 Fast
|
|
8
|
+
gpt-5.3-codex-high - Codex 5.3 High
|
|
9
|
+
gpt-5.3-codex-high-fast - Codex 5.3 High Fast
|
|
10
|
+
gpt-5.3-codex-xhigh - Codex 5.3 Extra High
|
|
11
|
+
gpt-5.3-codex-xhigh-fast - Codex 5.3 Extra High Fast
|
|
12
|
+
gpt-5.2 - GPT-5.2
|
|
13
|
+
composer-2.5 - Composer 2.5
|
|
14
|
+
claude-opus-5-thinking-high - Claude Opus 5 1M Thinking
|
|
15
|
+
claude-opus-5-thinking-high-fast - Claude Opus 5 1M Thinking Fast
|
|
16
|
+
gpt-5.6-sol-high - GPT-5.6 Sol 1M High
|
|
17
|
+
gpt-5.6-sol-high-fast - GPT-5.6 Sol 1M High Fast
|
|
18
|
+
gpt-5.6-sol-xhigh - GPT-5.6 Sol 1M Extra High
|
|
19
|
+
gpt-5.6-sol-xhigh-fast - GPT-5.6 Sol 1M Extra High Fast
|
|
20
|
+
claude-fable-5-thinking-high - Claude Fable 5 1M Thinking (NO ZDR)
|
|
21
|
+
claude-fable-5-thinking-xhigh - Claude Fable 5 1M Extra High Thinking (NO ZDR)
|
|
22
|
+
cursor-grok-4.5-high - Grok 4.5
|
|
23
|
+
cursor-grok-4.5-high-fast - Grok 4.5 Fast
|
|
24
|
+
gemini-3.7-flash-high - Gemini 3.7 Flash
|
|
25
|
+
claude-sonnet-5-thinking-high - Claude Sonnet 5 1M Thinking
|
|
26
|
+
claude-sonnet-5-thinking-xhigh - Claude Sonnet 5 1M Extra High Thinking
|
|
27
|
+
gpt-5.6-luna-high - GPT-5.6 Luna 1M High
|
|
28
|
+
grok-4.7-low - Grok 4.7 Low
|
|
29
|
+
grok-4.7-low-fast - Grok 4.7 Low Fast
|
|
30
|
+
grok-4.7-medium - Grok 4.7 Medium
|
|
31
|
+
grok-4.7-medium-fast - Grok 4.7 Medium Fast
|
|
32
|
+
grok-4.7-high - Grok 4.7 High
|
|
33
|
+
grok-4.7-high-fast - Grok 4.7 High Fast
|
|
34
|
+
grok-4.7-xhigh - Grok 4.7 Extra High
|
|
35
|
+
grok-4.7-xhigh-fast - Grok 4.7 Extra High Fast
|
|
36
|
+
cursor-grok-4.6-low - Grok 4.6 Low
|
|
37
|
+
cursor-grok-4.6-low-fast - Grok 4.6 Low Fast
|
|
38
|
+
cursor-grok-4.6-medium - Grok 4.6 Medium
|
|
39
|
+
cursor-grok-4.6-medium-fast - Grok 4.6 Medium Fast
|
|
40
|
+
cursor-grok-4.6-high - Grok 4.6
|
|
41
|
+
cursor-grok-4.6-high-fast - Grok 4.6 Fast
|
|
42
|
+
cursor-grok-4.6-xhigh - Grok 4.6 Extra High
|
|
43
|
+
cursor-grok-4.6-xhigh-fast - Grok 4.6 Extra High Fast
|
|
44
|
+
composer-2.5-fast - Composer 2.5 Fast
|
|
45
|
+
claude-opus-5-5-low - Claude Opus 5.5 1M Low
|
|
46
|
+
claude-opus-5-5-low-fast - Claude Opus 5.5 1M Low Fast
|
|
47
|
+
claude-opus-5-5-medium - Claude Opus 5.5 1M
|
|
48
|
+
claude-opus-5-5-medium-fast - Claude Opus 5.5 1M Fast
|
|
49
|
+
claude-opus-5-5-high - Claude Opus 5.5 1M High
|
|
50
|
+
claude-opus-5-5-high-fast - Claude Opus 5.5 1M High Fast
|
|
51
|
+
claude-opus-5-5-xhigh - Claude Opus 5.5 1M Extra High
|
|
52
|
+
claude-opus-5-5-xhigh-fast - Claude Opus 5.5 1M Extra High Fast
|
|
53
|
+
claude-opus-5-5-max - Claude Opus 5.5 1M Max
|
|
54
|
+
claude-opus-5-5-max-fast - Claude Opus 5.5 1M Max Fast
|
|
55
|
+
claude-opus-5-low - Claude Opus 5 1M Low
|
|
56
|
+
claude-opus-5-low-fast - Claude Opus 5 1M Low Fast
|
|
57
|
+
claude-opus-5-medium - Claude Opus 5 1M Medium
|
|
58
|
+
claude-opus-5-medium-fast - Claude Opus 5 1M Medium Fast
|
|
59
|
+
claude-opus-5-high - Claude Opus 5 1M
|
|
60
|
+
claude-opus-5-high-fast - Claude Opus 5 1M Fast
|
|
61
|
+
claude-opus-5-thinking-low - Claude Opus 5 1M Low Thinking
|
|
62
|
+
claude-opus-5-thinking-low-fast - Claude Opus 5 1M Low Thinking Fast
|
|
63
|
+
claude-opus-5-thinking-medium - Claude Opus 5 1M Medium Thinking
|
|
64
|
+
claude-opus-5-thinking-medium-fast - Claude Opus 5 1M Medium Thinking Fast
|
|
65
|
+
claude-opus-5-thinking-xhigh - Claude Opus 5 1M Extra High Thinking
|
|
66
|
+
claude-opus-5-thinking-xhigh-fast - Claude Opus 5 1M Extra High Thinking Fast
|
|
67
|
+
claude-opus-5-thinking-max - Claude Opus 5 1M Max Thinking
|
|
68
|
+
claude-opus-5-thinking-max-fast - Claude Opus 5 1M Max Thinking Fast
|
|
69
|
+
claude-opus-4-8-low - Claude Opus 4.8 1M Low
|
|
70
|
+
claude-opus-4-8-low-fast - Claude Opus 4.8 1M Low Fast
|
|
71
|
+
claude-opus-4-8-medium - Claude Opus 4.8 1M Medium
|
|
72
|
+
claude-opus-4-8-medium-fast - Claude Opus 4.8 1M Medium Fast
|
|
73
|
+
claude-opus-4-8-high - Claude Opus 4.8 1M
|
|
74
|
+
claude-opus-4-8-high-fast - Claude Opus 4.8 1M Fast
|
|
75
|
+
claude-opus-4-8-xhigh - Claude Opus 4.8 1M Extra High
|
|
76
|
+
claude-opus-4-8-xhigh-fast - Claude Opus 4.8 1M Extra High Fast
|
|
77
|
+
claude-opus-4-8-max - Claude Opus 4.8 1M Max
|
|
78
|
+
claude-opus-4-8-max-fast - Claude Opus 4.8 1M Max Fast
|
|
79
|
+
claude-opus-4-8-thinking-low - Claude Opus 4.8 1M Low Thinking
|
|
80
|
+
claude-opus-4-8-thinking-low-fast - Claude Opus 4.8 1M Low Thinking Fast
|
|
81
|
+
claude-opus-4-8-thinking-medium - Claude Opus 4.8 1M Medium Thinking
|
|
82
|
+
claude-opus-4-8-thinking-medium-fast - Claude Opus 4.8 1M Medium Thinking Fast
|
|
83
|
+
claude-opus-4-8-thinking-high - Claude Opus 4.8 1M Thinking
|
|
84
|
+
claude-opus-4-8-thinking-high-fast - Claude Opus 4.8 1M Thinking Fast
|
|
85
|
+
claude-opus-4-8-thinking-xhigh - Claude Opus 4.8 1M Extra High Thinking
|
|
86
|
+
claude-opus-4-8-thinking-xhigh-fast - Claude Opus 4.8 1M Extra High Thinking Fast
|
|
87
|
+
claude-opus-4-8-thinking-max - Claude Opus 4.8 1M Max Thinking
|
|
88
|
+
claude-opus-4-8-thinking-max-fast - Claude Opus 4.8 1M Max Thinking Fast
|
|
89
|
+
gpt-5.6-sol-none - GPT-5.6 Sol 1M None
|
|
90
|
+
gpt-5.6-sol-none-fast - GPT-5.6 Sol 1M None Fast
|
|
91
|
+
gpt-5.6-sol-low - GPT-5.6 Sol 1M Low
|
|
92
|
+
gpt-5.6-sol-low-fast - GPT-5.6 Sol 1M Low Fast
|
|
93
|
+
gpt-5.6-sol-medium - GPT-5.6 Sol 1M
|
|
94
|
+
gpt-5.6-sol-medium-fast - GPT-5.6 Sol 1M Fast
|
|
95
|
+
gpt-5.6-sol-max - GPT-5.6 Sol 1M Max
|
|
96
|
+
gpt-5.6-sol-max-fast - GPT-5.6 Sol 1M Max Fast
|
|
97
|
+
gpt-5.5-none - GPT-5.5 1M None
|
|
98
|
+
gpt-5.5-none-fast - GPT-5.5 None Fast
|
|
99
|
+
gpt-5.5-low - GPT-5.5 1M Low
|
|
100
|
+
gpt-5.5-low-fast - GPT-5.5 Low Fast
|
|
101
|
+
gpt-5.5-medium - GPT-5.5 1M
|
|
102
|
+
gpt-5.5-medium-fast - GPT-5.5 Fast
|
|
103
|
+
gpt-5.5-high - GPT-5.5 1M High
|
|
104
|
+
gpt-5.5-high-fast - GPT-5.5 High Fast
|
|
105
|
+
gpt-5.5-extra-high - GPT-5.5 1M Extra High
|
|
106
|
+
gpt-5.5-extra-high-fast - GPT-5.5 Extra High Fast
|
|
107
|
+
claude-fable-5-1-low - Claude Fable 5.1 1M Low (NO ZDR)
|
|
108
|
+
claude-fable-5-1-medium - Claude Fable 5.1 1M Medium (NO ZDR)
|
|
109
|
+
claude-fable-5-1-high - Claude Fable 5.1 1M (NO ZDR)
|
|
110
|
+
claude-fable-5-1-xhigh - Claude Fable 5.1 1M Extra High (NO ZDR)
|
|
111
|
+
claude-fable-5-1-max - Claude Fable 5.1 1M Max (NO ZDR)
|
|
112
|
+
claude-fable-5-1-thinking-low - Claude Fable 5.1 1M Low Thinking (NO ZDR)
|
|
113
|
+
claude-fable-5-1-thinking-medium - Claude Fable 5.1 1M Medium Thinking (NO ZDR)
|
|
114
|
+
claude-fable-5-1-thinking-high - Claude Fable 5.1 1M Thinking (NO ZDR)
|
|
115
|
+
claude-fable-5-1-thinking-xhigh - Claude Fable 5.1 1M Extra High Thinking (NO ZDR)
|
|
116
|
+
claude-fable-5-1-thinking-max - Claude Fable 5.1 1M Max Thinking (NO ZDR)
|
|
117
|
+
claude-fable-5-low - Claude Fable 5 1M Low (NO ZDR)
|
|
118
|
+
claude-fable-5-medium - Claude Fable 5 1M Medium (NO ZDR)
|
|
119
|
+
claude-fable-5-high - Claude Fable 5 1M (NO ZDR)
|
|
120
|
+
claude-fable-5-xhigh - Claude Fable 5 1M Extra High (NO ZDR)
|
|
121
|
+
claude-fable-5-max - Claude Fable 5 1M Max (NO ZDR)
|
|
122
|
+
claude-fable-5-thinking-low - Claude Fable 5 1M Low Thinking (NO ZDR)
|
|
123
|
+
claude-fable-5-thinking-medium - Claude Fable 5 1M Medium Thinking (NO ZDR)
|
|
124
|
+
claude-fable-5-thinking-max - Claude Fable 5 1M Max Thinking (NO ZDR)
|
|
125
|
+
cursor-grok-4.5-low - Grok 4.5 Low
|
|
126
|
+
cursor-grok-4.5-low-fast - Grok 4.5 Low Fast
|
|
127
|
+
cursor-grok-4.5-medium - Grok 4.5 Medium
|
|
128
|
+
cursor-grok-4.5-medium-fast - Grok 4.5 Medium Fast
|
|
129
|
+
gemini-3.8-flash-low - Gemini 3.8 Flash Low
|
|
130
|
+
gemini-3.8-flash-medium - Gemini 3.8 Flash Medium
|
|
131
|
+
gemini-3.8-flash-high - Gemini 3.8 Flash High
|
|
132
|
+
gemini-3.7-flash-low - Gemini 3.7 Flash Low
|
|
133
|
+
gemini-3.7-flash-medium - Gemini 3.7 Flash Medium
|
|
134
|
+
muse-spark-1.3-minimal - Muse Spark 1.3 1M Minimal
|
|
135
|
+
muse-spark-1.3-low - Muse Spark 1.3 1M Low
|
|
136
|
+
muse-spark-1.3-medium - Muse Spark 1.3 1M Medium
|
|
137
|
+
muse-spark-1.3-high - Muse Spark 1.3 1M
|
|
138
|
+
muse-spark-1.3-xhigh - Muse Spark 1.3 1M Extra High
|
|
139
|
+
muse-spark-1.3-max - Muse Spark 1.3 1M Max
|
|
140
|
+
gpt-5.6-terra-none - GPT-5.6 Terra 1M None
|
|
141
|
+
gpt-5.6-terra-none-fast - GPT-5.6 Terra 1M None Fast
|
|
142
|
+
gpt-5.6-terra-low - GPT-5.6 Terra 1M Low
|
|
143
|
+
gpt-5.6-terra-low-fast - GPT-5.6 Terra 1M Low Fast
|
|
144
|
+
gpt-5.6-terra-medium - GPT-5.6 Terra 1M
|
|
145
|
+
gpt-5.6-terra-medium-fast - GPT-5.6 Terra 1M Fast
|
|
146
|
+
gpt-5.6-terra-high - GPT-5.6 Terra 1M High
|
|
147
|
+
gpt-5.6-terra-high-fast - GPT-5.6 Terra 1M High Fast
|
|
148
|
+
gpt-5.6-terra-xhigh - GPT-5.6 Terra 1M Extra High
|
|
149
|
+
gpt-5.6-terra-xhigh-fast - GPT-5.6 Terra 1M Extra High Fast
|
|
150
|
+
gpt-5.6-terra-max - GPT-5.6 Terra 1M Max
|
|
151
|
+
gpt-5.6-terra-max-fast - GPT-5.6 Terra 1M Max Fast
|
|
152
|
+
claude-sonnet-5-5-low - Claude Sonnet 5.5 Low
|
|
153
|
+
claude-sonnet-5-5-medium - Claude Sonnet 5.5 Medium
|
|
154
|
+
claude-sonnet-5-5-high - Claude Sonnet 5.5 High
|
|
155
|
+
claude-sonnet-5-5-xhigh - Claude Sonnet 5.5 Extra High
|
|
156
|
+
claude-sonnet-5-5-max - Claude Sonnet 5.5 Max
|
|
157
|
+
claude-sonnet-5-low - Claude Sonnet 5 1M Low
|
|
158
|
+
claude-sonnet-5-medium - Claude Sonnet 5 1M Medium
|
|
159
|
+
claude-sonnet-5-high - Claude Sonnet 5 1M
|
|
160
|
+
claude-sonnet-5-xhigh - Claude Sonnet 5 1M Extra High
|
|
161
|
+
claude-sonnet-5-max - Claude Sonnet 5 1M Max
|
|
162
|
+
claude-sonnet-5-thinking-low - Claude Sonnet 5 1M Low Thinking
|
|
163
|
+
claude-sonnet-5-thinking-medium - Claude Sonnet 5 1M Medium Thinking
|
|
164
|
+
claude-sonnet-5-thinking-max - Claude Sonnet 5 1M Max Thinking
|
|
165
|
+
claude-4.6-sonnet-medium - Claude Sonnet 4.6 1M
|
|
166
|
+
claude-4.6-sonnet-medium-thinking - Claude Sonnet 4.6 1M Thinking
|
|
167
|
+
claude-opus-4-7-low - Claude Opus 4.7 1M Low
|
|
168
|
+
claude-opus-4-7-low-fast - Claude Opus 4.7 1M Low Fast
|
|
169
|
+
claude-opus-4-7-medium - Claude Opus 4.7 1M Medium
|
|
170
|
+
claude-opus-4-7-medium-fast - Claude Opus 4.7 1M Medium Fast
|
|
171
|
+
claude-opus-4-7-high - Claude Opus 4.7 1M High
|
|
172
|
+
claude-opus-4-7-high-fast - Claude Opus 4.7 1M High Fast
|
|
173
|
+
claude-opus-4-7-xhigh - Claude Opus 4.7 1M
|
|
174
|
+
claude-opus-4-7-xhigh-fast - Claude Opus 4.7 1M Fast
|
|
175
|
+
claude-opus-4-7-max - Claude Opus 4.7 1M Max
|
|
176
|
+
claude-opus-4-7-max-fast - Claude Opus 4.7 1M Max Fast
|
|
177
|
+
claude-opus-4-7-thinking-low - Claude Opus 4.7 1M Low Thinking
|
|
178
|
+
claude-opus-4-7-thinking-low-fast - Claude Opus 4.7 1M Low Thinking Fast
|
|
179
|
+
claude-opus-4-7-thinking-medium - Claude Opus 4.7 1M Medium Thinking
|
|
180
|
+
claude-opus-4-7-thinking-medium-fast - Claude Opus 4.7 1M Medium Thinking Fast
|
|
181
|
+
claude-opus-4-7-thinking-high - Claude Opus 4.7 1M High Thinking
|
|
182
|
+
claude-opus-4-7-thinking-high-fast - Claude Opus 4.7 1M High Thinking Fast
|
|
183
|
+
claude-opus-4-7-thinking-xhigh - Claude Opus 4.7 1M Thinking
|
|
184
|
+
claude-opus-4-7-thinking-xhigh-fast - Claude Opus 4.7 1M Thinking Fast
|
|
185
|
+
claude-opus-4-7-thinking-max - Claude Opus 4.7 1M Max Thinking
|
|
186
|
+
claude-opus-4-7-thinking-max-fast - Claude Opus 4.7 1M Max Thinking Fast
|
|
187
|
+
gpt-5.4-low - GPT-5.4 1M Low
|
|
188
|
+
gpt-5.4-medium - GPT-5.4 1M
|
|
189
|
+
gpt-5.4-medium-fast - GPT-5.4 Fast
|
|
190
|
+
gpt-5.4-high - GPT-5.4 1M High
|
|
191
|
+
gpt-5.4-high-fast - GPT-5.4 High Fast
|
|
192
|
+
gpt-5.4-xhigh - GPT-5.4 1M Extra High
|
|
193
|
+
gpt-5.4-xhigh-fast - GPT-5.4 Extra High Fast
|
|
194
|
+
claude-4.6-opus-high - Claude Opus 4.6 1M
|
|
195
|
+
claude-4.6-opus-max - Claude Opus 4.6 1M Max
|
|
196
|
+
claude-4.6-opus-high-thinking - Claude Opus 4.6 1M Thinking
|
|
197
|
+
claude-4.6-opus-max-thinking - Claude Opus 4.6 1M Max Thinking
|
|
198
|
+
claude-4.5-opus-high - Claude Opus 4.5
|
|
199
|
+
claude-4.5-opus-high-thinking - Claude Opus 4.5 Thinking
|
|
200
|
+
gpt-5.2-low - GPT-5.2 Low
|
|
201
|
+
gpt-5.2-low-fast - GPT-5.2 Low Fast
|
|
202
|
+
gpt-5.2-fast - GPT-5.2 Fast
|
|
203
|
+
gpt-5.2-high - GPT-5.2 High
|
|
204
|
+
gpt-5.2-high-fast - GPT-5.2 High Fast
|
|
205
|
+
gpt-5.2-xhigh - GPT-5.2 Extra High
|
|
206
|
+
gpt-5.2-xhigh-fast - GPT-5.2 Extra High Fast
|
|
207
|
+
gpt-5.6-luna-none - GPT-5.6 Luna 1M None
|
|
208
|
+
gpt-5.6-luna-none-fast - GPT-5.6 Luna 1M None Fast
|
|
209
|
+
gpt-5.6-luna-low - GPT-5.6 Luna 1M Low (current)
|
|
210
|
+
gpt-5.6-luna-low-fast - GPT-5.6 Luna 1M Low Fast
|
|
211
|
+
gpt-5.6-luna-medium - GPT-5.6 Luna 1M
|
|
212
|
+
gpt-5.6-luna-medium-fast - GPT-5.6 Luna 1M Fast
|
|
213
|
+
gpt-5.6-luna-high-fast - GPT-5.6 Luna 1M High Fast
|
|
214
|
+
gpt-5.6-luna-xhigh - GPT-5.6 Luna 1M Extra High
|
|
215
|
+
gpt-5.6-luna-xhigh-fast - GPT-5.6 Luna 1M Extra High Fast
|
|
216
|
+
gpt-5.6-luna-max - GPT-5.6 Luna 1M Max
|
|
217
|
+
gpt-5.6-luna-max-fast - GPT-5.6 Luna 1M Max Fast
|
|
218
|
+
gemini-3.6-flash-minimal - Gemini 3.6 Flash Minimal
|
|
219
|
+
gemini-3.6-flash-low - Gemini 3.6 Flash Low
|
|
220
|
+
gemini-3.6-flash-medium - Gemini 3.6 Flash Medium
|
|
221
|
+
gemini-3.6-flash-high - Gemini 3.6 Flash
|
|
222
|
+
gemini-3.1-pro - Gemini 3.1 Pro
|
|
223
|
+
gpt-5.4-mini-none - GPT-5.4 Mini None
|
|
224
|
+
gpt-5.4-mini-low - GPT-5.4 Mini Low
|
|
225
|
+
gpt-5.4-mini-medium - GPT-5.4 Mini
|
|
226
|
+
gpt-5.4-mini-high - GPT-5.4 Mini High
|
|
227
|
+
gpt-5.4-mini-xhigh - GPT-5.4 Mini Extra High
|
|
228
|
+
gpt-5.4-nano-none - GPT-5.4 Nano None
|
|
229
|
+
gpt-5.4-nano-low - GPT-5.4 Nano Low
|
|
230
|
+
gpt-5.4-nano-medium - GPT-5.4 Nano
|
|
231
|
+
gpt-5.4-nano-high - GPT-5.4 Nano High
|
|
232
|
+
gpt-5.4-nano-xhigh - GPT-5.4 Nano Extra High
|
|
233
|
+
claude-4.5-sonnet - Claude Sonnet 4.5
|
|
234
|
+
claude-4.5-sonnet-thinking - Claude Sonnet 4.5 Thinking
|
|
235
|
+
gpt-5.1-low - GPT-5.1 Low
|
|
236
|
+
gpt-5.1 - GPT-5.1
|
|
237
|
+
gpt-5.1-high - GPT-5.1 High
|
|
238
|
+
gemini-3-flash - Gemini 3 Flash
|
|
239
|
+
gemini-3.5-flash - Gemini 3.5 Flash
|
|
240
|
+
claude-4-sonnet - Claude Sonnet 4
|
|
241
|
+
claude-4-sonnet-thinking - Claude Sonnet 4 Thinking
|
|
242
|
+
gpt-5-mini - GPT-5 Mini
|
|
243
|
+
kimi-k3-low - Kimi K3 Low
|
|
244
|
+
kimi-k3-high - Kimi K3 High
|
|
245
|
+
kimi-k3-max - Kimi K3
|
|
246
|
+
kimi-k2.7-code - Kimi K2.7 Code
|
|
247
|
+
glm-5.2-high - GLM 5.2
|
|
248
|
+
glm-5.2-max - GLM 5.2 Max
|
|
249
|
+
|
|
250
|
+
Tip: use --model <id> (or /model <id> in interactive mode) to switch. Parameterized models also accept quoted overrides, e.g. --model 'claude-opus-4-8[context=1m,effort=high,fast=false]'.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@team-agent/installer",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.108",
|
|
4
4
|
"description": "npx installer for Team Agent",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"codex",
|
|
@@ -20,9 +20,9 @@
|
|
|
20
20
|
"team-agent-installer": "npm/install.mjs"
|
|
21
21
|
},
|
|
22
22
|
"optionalDependencies": {
|
|
23
|
-
"@team-agent/cli-darwin-arm64": "0.5.
|
|
24
|
-
"@team-agent/cli-darwin-x64": "0.5.
|
|
25
|
-
"@team-agent/cli-linux-x64": "0.5.
|
|
23
|
+
"@team-agent/cli-darwin-arm64": "0.5.108",
|
|
24
|
+
"@team-agent/cli-darwin-x64": "0.5.108",
|
|
25
|
+
"@team-agent/cli-linux-x64": "0.5.108"
|
|
26
26
|
},
|
|
27
27
|
"scripts": {
|
|
28
28
|
"postinstall": "node npm/bincheck.mjs",
|