Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions crates/aionui-runtime/resources/acp-registry-npx-lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"codebuddy": {
"registry_json_id": "codebuddy-code",
"package": "@tencent-ai/codebuddy-code",
"version": "2.141.0"
"version": "2.143.1"
},
"deepagents": {
"registry_json_id": "deepagents",
Expand All @@ -19,27 +19,27 @@
"dimcode": {
"registry_json_id": "dimcode",
"package": "dimcode",
"version": "0.3.22"
"version": "0.3.28"
},
"dirac": {
"registry_json_id": "dirac",
"package": "dirac-cli",
"version": "0.5.1"
"version": "0.5.5"
},
"glm-acp-agent": {
"registry_json_id": "glm-acp-agent",
"package": "glm-acp-agent",
"version": "1.6.1"
"version": "1.8.0"
},
"grok": {
"registry_json_id": "grok-build",
"package": "@xai-official/grok",
"version": "1.0.12"
"version": "1.0.18"
},
"kilo": {
"registry_json_id": "kilo",
"package": "@kilocode/cli",
"version": "7.5.5"
"version": "7.5.9"
},
"mimo-code": {
"package": "@mimo-ai/cli",
Expand Down
4 changes: 2 additions & 2 deletions crates/aionui-runtime/src/registry_npx_lock.rs
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ mod tests {
#[test]
fn pins_grok_build_to_verified_release() {
let args = pin_registry_npx_args("grok", &strings(&["-y", "@xai-official/grok", "agent", "stdio"])).unwrap();
assert_eq!(args, ["-y", "@xai-official/grok@1.0.12", "agent", "stdio"]);
assert_eq!(args, ["-y", "@xai-official/grok@1.0.18", "agent", "stdio"]);
}

#[test]
Expand All @@ -126,7 +126,7 @@ mod tests {
[
"-y",
"--package",
"@tencent-ai/codebuddy-code@2.141.0",
"@tencent-ai/codebuddy-code@2.143.1",
"codebuddy",
"--acp"
]
Expand Down
38 changes: 27 additions & 11 deletions crates/aionui-session/src/backend/cli_version.rs
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@ use crate::event::{LocalizedText, NoticeLevel};
/// on does complete turns and passes the suite, so the gate walks forward over
/// 0.147.0 and leaves it unverified rather than a floor anyone can install into.
pub const VERIFIED_CLAUDE_VERSION: &str = "2.1.236";
pub const VERIFIED_CODEX_VERSION: &str = "0.150.1";
pub const VERIFIED_AGY_VERSION: &str = "1.1.22";
pub const VERIFIED_CODEX_VERSION: &str = "0.151.0";
pub const VERIFIED_AGY_VERSION: &str = "1.1.25";

/// The verified release for a direct-CLI backend, keyed by the program name the
/// backend spawns. `None` for anything not version-gated here.
Expand Down Expand Up @@ -456,10 +456,10 @@ mod tests {

#[test]
fn components_compare_numerically_not_lexically() {
// The bug a string compare would introduce: "0.150.1" < "0.99.0"
// lexically, but 150 > 99.
// The bug a string compare would introduce: "0.151.0" < "0.99.0"
// lexically, but 151 > 99.
assert_eq!(classify("0.99.0", VERIFIED_CODEX_VERSION), VersionVerdict::Older);
assert_eq!(classify("0.151.0", VERIFIED_CODEX_VERSION), VersionVerdict::Newer);
assert_eq!(classify("0.151.1", VERIFIED_CODEX_VERSION), VersionVerdict::Newer);
}

#[test]
Expand All @@ -470,6 +470,14 @@ mod tests {
assert_eq!(parse_version("1.1.10"), Some(vec![1, 1, 10]));
}

#[test]
fn the_verified_agy_release_says_nothing() {
assert_eq!(classify("1.1.25", VERIFIED_AGY_VERSION), VersionVerdict::Verified);
assert!(drift_notice("agy", "1.1.25", VERIFIED_AGY_VERSION).is_none());
assert_eq!(classify("1.1.24", VERIFIED_AGY_VERSION), VersionVerdict::Older);
assert_eq!(classify("1.1.26", VERIFIED_AGY_VERSION), VersionVerdict::Newer);
}

/// Both drift directions are `Info` — the tier the frontend draws as a quiet
/// centred line. `Warning` renders with the same alarm glyph as an error,
/// and a drifting install is not a failure. What must stay distinguishable
Expand Down Expand Up @@ -552,14 +560,22 @@ mod tests {

#[test]
fn local_codex_output_is_classified_as_newer() {
// Prefixed `codex --version` output, with a release actually newer
// than the current pin (0.150.1). 0.147.0 used to be Newer when the
// pin was 0.144.6; it is Older now.
assert_eq!(parse_version("codex-cli 0.151.0"), Some(vec![0, 151, 0]));
let (level, _, localized) =
drift_notice("codex", "codex-cli 0.151.0", VERIFIED_CODEX_VERSION).expect("0.151.0 drifts from 0.150.1");
// Real `codex --version` output shape, one release above the verified
// one so the newer path is what gets exercised.
assert_eq!(parse_version("codex-cli 0.152.0"), Some(vec![0, 152, 0]));
let (level, _, localized) = drift_notice("codex", "codex-cli 0.152.0", VERIFIED_CODEX_VERSION)
.expect("0.152.0 drifts from the verified release");
assert_eq!(level, NoticeLevel::Info);
assert_eq!(localized.code, CODE_CLI_VERSION_NEWER);

// Literal on purpose, same as the claude case: a user actually on the
// verified release is told nothing, and this breaks if a bump lands
// without re-verifying against that exact binary.
assert_eq!(
classify("codex-cli 0.151.0", VERIFIED_CODEX_VERSION),
VersionVerdict::Verified
);
assert!(drift_notice("codex", "codex-cli 0.151.0", VERIFIED_CODEX_VERSION).is_none());
}

#[test]
Expand Down
Loading