From eb391e74ec6a7649135efcca49a2f8a2c7bdbc23 Mon Sep 17 00:00:00 2001 From: zk <> Date: Mon, 14 Sep 2026 12:02:54 +0800 Subject: [PATCH] chore(cli-version): verify agy against 1.2.2 Gate B: 7/7, 150.92s, against a manifest download whose sha512 was checked before it ran. The log reports only version=1.2.2, and the binary was byte-identical before and after (mtime 11:02:31, size 180089984). Gate C: CLEAR, read from the candidate binary's own `agy changelog`; the web page has neither 1.2.1 nor 1.2.2. Range covers both, since the updater went straight from 1.2.0 to 1.2.2. --help and models --help are byte-identical 1.2.0 -> 1.2.2, diffed against the captures stored with the previous record. All nine flags build_argv emits are present. Everything on our surface is a fix. Transient 502/503/504/429 and mid-stream interruptions now retry in-process while PRESERVING completed tool call outputs (a retry that discarded them would replay tool cards), with clear user-facing messages when unrecovered. MCP schema validation relaxes back to honouring open object schemas, undoing the over-strictness 1.1.27 introduced; the MCP test passed. view_file now rejects binary and >100 MB files with a clear error instead of overflowing the context window, which surfaces as a tool ERROR step our card already renders. One item renames tools -- plugin-bundled MCP servers are now namespaced as _ -- but only for plugin-bundled servers, which we do not use. Ours are provisioned through our own path and the MCP test is unchanged. Correction to the previous record: `View release` anchors on the web page are NOT CLI-only. The Hub uses them too, and Hub versions like 1.21.9 / 1.22.2 match a `View release 1\.[0-9]+\.[0-9]+` pattern. The only reliable web check is an exact match on the candidate, closing quote included. Record: ~/aion/protocols/samples/antigravity-cli/1.2.2/ --- crates/aionui-session/src/backend/cli_version.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/crates/aionui-session/src/backend/cli_version.rs b/crates/aionui-session/src/backend/cli_version.rs index 728b0a388..624b4ed42 100644 --- a/crates/aionui-session/src/backend/cli_version.rs +++ b/crates/aionui-session/src/backend/cli_version.rs @@ -38,7 +38,7 @@ use crate::event::{LocalizedText, NoticeLevel}; /// 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.151.0"; -pub const VERIFIED_AGY_VERSION: &str = "1.2.0"; +pub const VERIFIED_AGY_VERSION: &str = "1.2.2"; /// The verified release for a direct-CLI backend, keyed by the program name the /// backend spawns. `None` for anything not version-gated here. @@ -475,15 +475,15 @@ mod tests { // The literal the other two CLIs already pin, which agy was missing: a // user on exactly the verified release is told nothing, and a bump that // lands without re-verifying against that exact binary breaks here. - assert_eq!(classify("1.2.0", VERIFIED_AGY_VERSION), VersionVerdict::Verified); - assert!(drift_notice("agy", "1.2.0", VERIFIED_AGY_VERSION).is_none()); + assert_eq!(classify("1.2.2", VERIFIED_AGY_VERSION), VersionVerdict::Verified); + assert!(drift_notice("agy", "1.2.2", VERIFIED_AGY_VERSION).is_none()); // agy prints a bare version, so the older/newer paths are worth pinning // on that exact shape rather than only on a decorated one. // 1.1.29 is OLDER than 1.2.0: the minor component decides, and a // lexical compare would get this backwards ("1.1.29" > "1.2.0"). assert_eq!(classify("1.1.29", VERIFIED_AGY_VERSION), VersionVerdict::Older); - assert_eq!(classify("1.2.1", VERIFIED_AGY_VERSION), VersionVerdict::Newer); + assert_eq!(classify("1.2.3", VERIFIED_AGY_VERSION), VersionVerdict::Newer); } /// Both drift directions are `Info` — the tier the frontend draws as a quiet