From 1364746d79475ba34ac1e5a41a3bd5a9e5534c2c Mon Sep 17 00:00:00 2001 From: Siddhesh Sonar Date: Wed, 28 Oct 2026 00:38:35 +0530 Subject: [PATCH 1/6] models: show granted gated cloud models in the account list Co-authored-by: Cursor --- src/account/console.rs | 38 ++++++++++++++++++++++++++++++++++++++ src/account/model_cache.rs | 10 +++++++++- src/commands/cmd_list.rs | 14 +++++++++++--- 3 files changed, 58 insertions(+), 4 deletions(-) diff --git a/src/account/console.rs b/src/account/console.rs index 00ef45a1..3b1d9b59 100644 --- a/src/account/console.rs +++ b/src/account/console.rs @@ -296,6 +296,18 @@ pub struct CatalogPrice { pub decisions_only: bool, } +/// Chat models `GET /v1/models` omitted that this account is still entitled +/// to. The price catalog is per-account, so a gated id is here only when the +/// account holds the grant. Decision-only rows are not chat models. +pub fn gated_chat_ids(listed: &[String], prices: &[CatalogPrice]) -> Vec { + prices + .iter() + .filter(|price| !price.decisions_only && !price.id.is_empty()) + .filter(|price| !listed.iter().any(|id| id == &price.id)) + .map(|price| price.id.clone()) + .collect() +} + #[derive(Debug, Clone, Default, PartialEq)] pub struct DecisionsResult { pub response: decisions::DecisionsResponse, @@ -2267,6 +2279,32 @@ mod tests { use std::collections::HashMap; use std::time::Duration; + fn price(id: &str, decisions_only: bool) -> super::CatalogPrice { + super::CatalogPrice { + id: id.to_string(), + decisions_only, + ..Default::default() + } + } + + #[test] + fn gated_chat_ids_are_entitled_catalog_rows_missing_from_the_model_list() { + let listed = vec!["deepseek-v4.1-flash-1017".to_string()]; + let prices = vec![ + price("deepseek-v4.1-flash-1017", false), + price("deepseek-v4.1-flash-1017-uncensored", false), + price("eve", true), + price("", false), + ]; + assert_eq!( + super::gated_chat_ids(&listed, &prices), + vec!["deepseek-v4.1-flash-1017-uncensored".to_string()] + ); + assert!( + super::gated_chat_ids(&listed, &[price("deepseek-v4.1-flash-1017", false)]).is_empty() + ); + } + #[test] fn console_tls_uses_the_platform_stack_and_trust_store() { let tls = super::console_tls_config(); diff --git a/src/account/model_cache.rs b/src/account/model_cache.rs index 58dc862d..289d95a0 100644 --- a/src/account/model_cache.rs +++ b/src/account/model_cache.rs @@ -168,11 +168,19 @@ pub fn refresh_model_cache_now(credentials: &Credentials) -> Result<(), bool> { // Rate-limited or unreachable is a "try again", anything else a hard fail. return Err(result == super::IdentityResult::Unavailable); } - let ids: Vec = models + let mut ids: Vec = models .into_iter() .filter(|model| !model.id.is_empty()) .map(|model| model.id) .collect(); + // Gated chat models are entitled on the price catalog and absent from + // /v1/models. A failed catalog read leaves the public list as-is, so an + // account without the grant still fails `-m` as an unknown model. + if let (super::IdentityResult::Ok, prices, _) = + console.fetch_catalog(&credentials.console_url, &credentials.access_token) + { + ids.extend(super::gated_chat_ids(&ids, &prices)); + } // A failed write must not report success: the caller (and the launch // path validating against the cache) would otherwise trust a catalog that // was never actually persisted, and reject a valid model against the diff --git a/src/commands/cmd_list.rs b/src/commands/cmd_list.rs index 75f91d77..aba875d9 100644 --- a/src/commands/cmd_list.rs +++ b/src/commands/cmd_list.rs @@ -254,12 +254,20 @@ fn cloud_models() -> Result { decisions_only: false, }) .collect(); - // Decision-only models never appear above; the price catalog - // names them. A failed price lookup is not fatal: the rows just - // stay missing, exactly as before. + // The price catalog is this account's entitlements. Chat models + // it names that /v1/models left out are gated: shown only when + // this account holds the grant. Decision-only models never appear + // above. A failed price lookup is not fatal: those rows stay missing. if let Ok(prices) = session.call(|client, url, token| { client.fetch_catalog_within(url, token, CLOUD_LOOKUP_TIMEOUT_MS) }) { + let listed: Vec = rows.iter().map(|row| row.id.clone()).collect(); + for id in crate::account::gated_chat_ids(&listed, &prices) { + rows.push(CloudRow { + id, + decisions_only: false, + }); + } for price in &prices { if price.decisions_only && !price.id.is_empty() From 19edfb82c42a0405e09ae699072e0a762adca989 Mon Sep 17 00:00:00 2001 From: Siddhesh Sonar Date: Wed, 28 Oct 2026 00:49:17 +0530 Subject: [PATCH 2/6] help: list shannon under Security tools Co-authored-by: Cursor --- src/app.rs | 3 +-- src/cli_formatter.rs | 10 +++++----- .../expected/alt_help__--no-color__--help.stdout | 2 +- tests/golden/expected/alt_help__-h.stdout | 2 +- tests/golden/expected/alt_help__help.stdout | 2 +- tests/golden/expected/alt_help__help__nope.stdout | 2 +- tests/golden/expected/help__ROOT.stdout | 2 +- tests/golden/expected/help__help.stdout | 2 +- 8 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/app.rs b/src/app.rs index a0f7c627..c69ddf42 100644 --- a/src/app.rs +++ b/src/app.rs @@ -134,12 +134,11 @@ pub fn configure_app(app: &mut App) { "deepseek", "prime-agent", "command-code", - "shannon", ], }, Section { group: "Security tools", - names: &["deepsec", "vvah"], + names: &["shannon", "deepsec", "vvah"], }, Section { group: "Account", diff --git a/src/cli_formatter.rs b/src/cli_formatter.rs index 8f34e927..78c5b7e6 100644 --- a/src/cli_formatter.rs +++ b/src/cli_formatter.rs @@ -1200,11 +1200,6 @@ mod tests { "Open OpenCode with a local or cloud model", "Coding tools", ), - leaf( - "shannon", - "Test your own apps with Shannon, an AI pentester", - "Coding tools", - ), leaf("hermes", "Open Hermes with a model", "Coding tools"), leaf("openclaw", "Open OpenClaw with a model", "Coding tools"), leaf( @@ -1222,6 +1217,11 @@ mod tests { "Open Command Code with a model", "Coding tools", ), + leaf( + "shannon", + "Test your own apps with Shannon, an AI pentester", + "Security tools", + ), leaf( "deepsec", "Scan your own repos with DeepSec", diff --git a/tests/golden/expected/alt_help__--no-color__--help.stdout b/tests/golden/expected/alt_help__--no-color__--help.stdout index f4775c3c..86d30bfa 100644 --- a/tests/golden/expected/alt_help__--no-color__--help.stdout +++ b/tests/golden/expected/alt_help__--no-color__--help.stdout @@ -20,7 +20,6 @@ Coding tools: codex Open Codex with a model chatgpt Open ChatGPT's Codex with a model opencode Open OpenCode with a local or cloud model - shannon Test your own apps with Shannon, an AI pentester hermes Open Hermes with a model openclaw Open OpenClaw with a model deepseek Open DeepSeek Harness with a model @@ -28,6 +27,7 @@ Coding tools: command-code Open Command Code with a model Security tools: + shannon Test your own apps with Shannon, an AI pentester deepsec Scan your own repos with DeepSec vvah Scan your own repos with VVAH diff --git a/tests/golden/expected/alt_help__-h.stdout b/tests/golden/expected/alt_help__-h.stdout index f4775c3c..86d30bfa 100644 --- a/tests/golden/expected/alt_help__-h.stdout +++ b/tests/golden/expected/alt_help__-h.stdout @@ -20,7 +20,6 @@ Coding tools: codex Open Codex with a model chatgpt Open ChatGPT's Codex with a model opencode Open OpenCode with a local or cloud model - shannon Test your own apps with Shannon, an AI pentester hermes Open Hermes with a model openclaw Open OpenClaw with a model deepseek Open DeepSeek Harness with a model @@ -28,6 +27,7 @@ Coding tools: command-code Open Command Code with a model Security tools: + shannon Test your own apps with Shannon, an AI pentester deepsec Scan your own repos with DeepSec vvah Scan your own repos with VVAH diff --git a/tests/golden/expected/alt_help__help.stdout b/tests/golden/expected/alt_help__help.stdout index f4775c3c..86d30bfa 100644 --- a/tests/golden/expected/alt_help__help.stdout +++ b/tests/golden/expected/alt_help__help.stdout @@ -20,7 +20,6 @@ Coding tools: codex Open Codex with a model chatgpt Open ChatGPT's Codex with a model opencode Open OpenCode with a local or cloud model - shannon Test your own apps with Shannon, an AI pentester hermes Open Hermes with a model openclaw Open OpenClaw with a model deepseek Open DeepSeek Harness with a model @@ -28,6 +27,7 @@ Coding tools: command-code Open Command Code with a model Security tools: + shannon Test your own apps with Shannon, an AI pentester deepsec Scan your own repos with DeepSec vvah Scan your own repos with VVAH diff --git a/tests/golden/expected/alt_help__help__nope.stdout b/tests/golden/expected/alt_help__help__nope.stdout index f4775c3c..86d30bfa 100644 --- a/tests/golden/expected/alt_help__help__nope.stdout +++ b/tests/golden/expected/alt_help__help__nope.stdout @@ -20,7 +20,6 @@ Coding tools: codex Open Codex with a model chatgpt Open ChatGPT's Codex with a model opencode Open OpenCode with a local or cloud model - shannon Test your own apps with Shannon, an AI pentester hermes Open Hermes with a model openclaw Open OpenClaw with a model deepseek Open DeepSeek Harness with a model @@ -28,6 +27,7 @@ Coding tools: command-code Open Command Code with a model Security tools: + shannon Test your own apps with Shannon, an AI pentester deepsec Scan your own repos with DeepSec vvah Scan your own repos with VVAH diff --git a/tests/golden/expected/help__ROOT.stdout b/tests/golden/expected/help__ROOT.stdout index f4775c3c..86d30bfa 100644 --- a/tests/golden/expected/help__ROOT.stdout +++ b/tests/golden/expected/help__ROOT.stdout @@ -20,7 +20,6 @@ Coding tools: codex Open Codex with a model chatgpt Open ChatGPT's Codex with a model opencode Open OpenCode with a local or cloud model - shannon Test your own apps with Shannon, an AI pentester hermes Open Hermes with a model openclaw Open OpenClaw with a model deepseek Open DeepSeek Harness with a model @@ -28,6 +27,7 @@ Coding tools: command-code Open Command Code with a model Security tools: + shannon Test your own apps with Shannon, an AI pentester deepsec Scan your own repos with DeepSec vvah Scan your own repos with VVAH diff --git a/tests/golden/expected/help__help.stdout b/tests/golden/expected/help__help.stdout index f4775c3c..86d30bfa 100644 --- a/tests/golden/expected/help__help.stdout +++ b/tests/golden/expected/help__help.stdout @@ -20,7 +20,6 @@ Coding tools: codex Open Codex with a model chatgpt Open ChatGPT's Codex with a model opencode Open OpenCode with a local or cloud model - shannon Test your own apps with Shannon, an AI pentester hermes Open Hermes with a model openclaw Open OpenClaw with a model deepseek Open DeepSeek Harness with a model @@ -28,6 +27,7 @@ Coding tools: command-code Open Command Code with a model Security tools: + shannon Test your own apps with Shannon, an AI pentester deepsec Scan your own repos with DeepSec vvah Scan your own repos with VVAH From 55562a001ee6631b6a5f4c07258cc74dd6a66eed Mon Sep 17 00:00:00 2001 From: Siddhesh Sonar Date: Wed, 28 Oct 2026 00:56:34 +0530 Subject: [PATCH 3/6] release: 0.8.16 Co-authored-by: Cursor --- Cargo.lock | 2 +- Cargo.toml | 2 +- Formula/wally.rb | 6 +++--- versions.toml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6d7ee988..34994028 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1410,7 +1410,7 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "wally" -version = "0.8.15" +version = "0.8.16" dependencies = [ "brotli-decompressor", "ctrlc", diff --git a/Cargo.toml b/Cargo.toml index c5ba3de8..35a74e5e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,7 +5,7 @@ [package] name = "wally" # Must equal [product] version in versions.toml (scripts/ci/check-versions.py). -version = "0.8.15" +version = "0.8.16" edition = "2021" rust-version = "1.93" license = "Apache-2.0" diff --git a/Formula/wally.rb b/Formula/wally.rb index 5841fa12..a2ca8a5d 100644 --- a/Formula/wally.rb +++ b/Formula/wally.rb @@ -3,15 +3,15 @@ class Wally < Formula desc "Run models on your machine or your RunAnywhere account" homepage "https://github.com/RunanywhereAI/wally" - version "0.8.15" + version "0.8.16" license "MIT" # macOS arm64 ships the Swift MLX host # (llama.cpp + ONNX + Sherpa + MLX). Linux is not in this cut. on_macos do on_arm do - url "https://github.com/RunanywhereAI/wally/releases/download/v0.8.15/wally-0.8.15-macos-arm64.tar.gz" - # Placeholder -- the v0.8.15 release has not published a wally-named asset + url "https://github.com/RunanywhereAI/wally/releases/download/v0.8.16/wally-0.8.16-macos-arm64.tar.gz" + # Placeholder -- the v0.8.16 release has not published a wally-named asset # yet. scripts/release/update-tap.sh re-stamps this from the real release # checksum; a stale value here fails brew install's own hash check # rather than installing something unverified. diff --git a/versions.toml b/versions.toml index 279ed8ae..50138916 100644 --- a/versions.toml +++ b/versions.toml @@ -7,7 +7,7 @@ [product] # wally's own release version; git tag is v (auto-tag.yml reads it here). -version = "0.8.15" +version = "0.8.16" [contracts] # Vendored from InferenceInfra at this exact revision. From 22c9c1caf971bcb2e0d818ca855de7f4c041f874 Mon Sep 17 00:00:00 2001 From: Siddhesh Sonar Date: Wed, 28 Oct 2026 01:02:42 +0530 Subject: [PATCH 4/6] models: keep granted ids when the catalog read fails Co-authored-by: Cursor --- src/account/console.rs | 20 ++++++++++++++------ src/account/model_cache.rs | 26 ++++++++++++++++++++------ src/harness/catalog_models.rs | 15 +++++++-------- 3 files changed, 41 insertions(+), 20 deletions(-) diff --git a/src/account/console.rs b/src/account/console.rs index 3b1d9b59..ba6e34de 100644 --- a/src/account/console.rs +++ b/src/account/console.rs @@ -300,12 +300,19 @@ pub struct CatalogPrice { /// to. The price catalog is per-account, so a gated id is here only when the /// account holds the grant. Decision-only rows are not chat models. pub fn gated_chat_ids(listed: &[String], prices: &[CatalogPrice]) -> Vec { - prices - .iter() - .filter(|price| !price.decisions_only && !price.id.is_empty()) - .filter(|price| !listed.iter().any(|id| id == &price.id)) - .map(|price| price.id.clone()) - .collect() + let mut ids = Vec::new(); + for price in prices { + let id = price.id.as_str(); + if price.decisions_only + || id.is_empty() + || listed.iter().any(|listed_id| listed_id == id) + || ids.iter().any(|seen: &String| seen == id) + { + continue; + } + ids.push(price.id.clone()); + } + ids } #[derive(Debug, Clone, Default, PartialEq)] @@ -2293,6 +2300,7 @@ mod tests { let prices = vec![ price("deepseek-v4.1-flash-1017", false), price("deepseek-v4.1-flash-1017-uncensored", false), + price("deepseek-v4.1-flash-1017-uncensored", false), price("eve", true), price("", false), ]; diff --git a/src/account/model_cache.rs b/src/account/model_cache.rs index 289d95a0..29960f64 100644 --- a/src/account/model_cache.rs +++ b/src/account/model_cache.rs @@ -174,12 +174,26 @@ pub fn refresh_model_cache_now(credentials: &Credentials) -> Result<(), bool> { .map(|model| model.id) .collect(); // Gated chat models are entitled on the price catalog and absent from - // /v1/models. A failed catalog read leaves the public list as-is, so an - // account without the grant still fails `-m` as an unknown model. - if let (super::IdentityResult::Ok, prices, _) = - console.fetch_catalog(&credentials.console_url, &credentials.access_token) - { - ids.extend(super::gated_chat_ids(&ids, &prices)); + // /v1/models. Same 3s bound as `models list`, so a hung catalog cannot + // stall a launch for the transport's full timeout. + const CATALOG_TIMEOUT_MS: i32 = 3_000; + match console.fetch_catalog_within( + &credentials.console_url, + &credentials.access_token, + CATALOG_TIMEOUT_MS, + ) { + (super::IdentityResult::Ok, prices, _) => { + ids.extend(super::gated_chat_ids(&ids, &prices)); + } + // A failed catalog read must not drop grants the last good read + // cached. Ids that are not on the fresh public list are those grants. + _ => { + for cached in cached_model_ids() { + if !cached.is_empty() && !ids.iter().any(|id| id == &cached) { + ids.push(cached); + } + } + } } // A failed write must not report success: the caller (and the launch // path validating against the cache) would otherwise trust a catalog that diff --git a/src/harness/catalog_models.rs b/src/harness/catalog_models.rs index abfb81e9..2d610ab0 100644 --- a/src/harness/catalog_models.rs +++ b/src/harness/catalog_models.rs @@ -162,15 +162,14 @@ pub fn account_models_with( // (the same shape `primary_first` uses for a model it only knows by id). // Decisions-only ids stay out: they are the one thing the catalogue names // that is deliberately not a chat model. - for price in &prices { - if price.id.is_empty() || price.decisions_only || out.iter().any(|m| m.id == price.id) { - continue; - } + let listed: Vec = out.iter().map(|model| model.id.clone()).collect(); + for id in crate::account::gated_chat_ids(&listed, &prices) { + let price = prices.iter().find(|price| price.id == id); out.push(CatalogModel { - id: price.id.clone(), - input_per_mtok: price.input_per_mtok, - output_per_mtok: price.output_per_mtok, - cached_input_per_mtok: price.cached_input_per_mtok, + id, + input_per_mtok: price.map(|price| price.input_per_mtok).unwrap_or(0), + output_per_mtok: price.map(|price| price.output_per_mtok).unwrap_or(0), + cached_input_per_mtok: price.map(|price| price.cached_input_per_mtok).unwrap_or(0), ..Default::default() }); } From a174254d206dec1e3fc5dc5f9b4bf3f5fb611ce2 Mon Sep 17 00:00:00 2001 From: Siddhesh Sonar Date: Wed, 28 Oct 2026 01:16:16 +0530 Subject: [PATCH 5/6] tests: expect the catalog read when the model cache refreshes Co-authored-by: Cursor --- tests/test_account_cli.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/test_account_cli.py b/tests/test_account_cli.py index 0e70c025..5724d64b 100644 --- a/tests/test_account_cli.py +++ b/tests/test_account_cli.py @@ -219,6 +219,10 @@ def do_GET(self): elif self.path == "/v1/models": # Login primes the model cache from here; a minimal catalog is enough. self.reply(200, {"data": [{"id": "glm-5.3-flash"}]}) + elif self.path == "/v1/models/catalog": + # The cache refresh also asks the price catalog for granted models + # the public list omits. Empty is a signed-in account with none. + self.reply(200, {"models": []}) elif self.path.startswith("/v1/cli/usage/requests"): self.reply_requests_page() elif self.path.startswith("/v1/cli/usage"): @@ -527,6 +531,7 @@ def main(): ("POST", "/auth/cli/start", None), ("POST", "/auth/cli/poll", None), ("GET", "/v1/models", f"Bearer {ACCESS_TOKEN}"), + ("GET", "/v1/models/catalog", f"Bearer {ACCESS_TOKEN}"), # The sign-in left to expire: two polls 29 s apart, then it stops. ("POST", "/auth/cli/start", None), ("POST", "/auth/cli/poll", None), @@ -538,6 +543,7 @@ def main(): ("POST", "/auth/cli/poll", None), ("POST", "/auth/cli/poll", None), ("GET", "/v1/models", f"Bearer {ACCESS_TOKEN}"), + ("GET", "/v1/models/catalog", f"Bearer {ACCESS_TOKEN}"), ("GET", "/v1/me", f"Bearer {ACCESS_TOKEN}"), # One read per invocation. The windows are totalled server-side, so # `days` and `limit` are held at the minimum the route accepts — From 22effe26cd5809c0b5d5853de57a1404332e9c3c Mon Sep 17 00:00:00 2001 From: Siddhesh Sonar Date: Wed, 28 Oct 2026 01:43:23 +0530 Subject: [PATCH 6/6] tests: move shannon under Security tools in the help goldens Co-authored-by: Cursor --- tests/golden/expected/parse__--bogus.stderr | 2 +- tests/golden/expected/parse__-U__--json.stderr | 2 +- tests/golden/expected/parse__-u__-v.stderr | 2 +- tests/golden/expected/parse__-z.stderr | 2 +- tests/golden/expected/unknown__auth.stderr | 2 +- tests/golden/expected/unknown__chat.stderr | 2 +- tests/golden/expected/unknown__diarize.stderr | 2 +- tests/golden/expected/unknown__embed.stderr | 2 +- tests/golden/expected/unknown__foo.stderr | 2 +- tests/golden/expected/unknown__image.stderr | 2 +- tests/golden/expected/unknown__list.stderr | 2 +- tests/golden/expected/unknown__lora.stderr | 2 +- tests/golden/expected/unknown__ls.stderr | 2 +- tests/golden/expected/unknown__pull.stderr | 2 +- tests/golden/expected/unknown__rag.stderr | 2 +- tests/golden/expected/unknown__rerank.stderr | 2 +- tests/golden/expected/unknown__rm.stderr | 2 +- tests/golden/expected/unknown__segment.stderr | 2 +- tests/golden/expected/unknown__show.stderr | 2 +- tests/golden/expected/unknown__stt.stderr | 2 +- tests/golden/expected/unknown__tts.stderr | 2 +- tests/golden/expected/unknown__vad.stderr | 2 +- tests/golden/expected/unknown__vlm.stderr | 2 +- tests/golden/expected/unknown__voice.stderr | 2 +- tests/golden/expected/version__bare.stderr | 2 +- 25 files changed, 25 insertions(+), 25 deletions(-) diff --git a/tests/golden/expected/parse__--bogus.stderr b/tests/golden/expected/parse__--bogus.stderr index 97285fb6..f731714e 100644 --- a/tests/golden/expected/parse__--bogus.stderr +++ b/tests/golden/expected/parse__--bogus.stderr @@ -21,7 +21,6 @@ Coding tools: codex Open Codex with a model chatgpt Open ChatGPT's Codex with a model opencode Open OpenCode with a local or cloud model - shannon Test your own apps with Shannon, an AI pentester hermes Open Hermes with a model openclaw Open OpenClaw with a model deepseek Open DeepSeek Harness with a model @@ -29,6 +28,7 @@ Coding tools: command-code Open Command Code with a model Security tools: + shannon Test your own apps with Shannon, an AI pentester deepsec Scan your own repos with DeepSec vvah Scan your own repos with VVAH diff --git a/tests/golden/expected/parse__-U__--json.stderr b/tests/golden/expected/parse__-U__--json.stderr index 96fb9b96..3663d7b6 100644 --- a/tests/golden/expected/parse__-U__--json.stderr +++ b/tests/golden/expected/parse__-U__--json.stderr @@ -21,7 +21,6 @@ Coding tools: codex Open Codex with a model chatgpt Open ChatGPT's Codex with a model opencode Open OpenCode with a local or cloud model - shannon Test your own apps with Shannon, an AI pentester hermes Open Hermes with a model openclaw Open OpenClaw with a model deepseek Open DeepSeek Harness with a model @@ -29,6 +28,7 @@ Coding tools: command-code Open Command Code with a model Security tools: + shannon Test your own apps with Shannon, an AI pentester deepsec Scan your own repos with DeepSec vvah Scan your own repos with VVAH diff --git a/tests/golden/expected/parse__-u__-v.stderr b/tests/golden/expected/parse__-u__-v.stderr index 84ddc118..98f76374 100644 --- a/tests/golden/expected/parse__-u__-v.stderr +++ b/tests/golden/expected/parse__-u__-v.stderr @@ -21,7 +21,6 @@ Coding tools: codex Open Codex with a model chatgpt Open ChatGPT's Codex with a model opencode Open OpenCode with a local or cloud model - shannon Test your own apps with Shannon, an AI pentester hermes Open Hermes with a model openclaw Open OpenClaw with a model deepseek Open DeepSeek Harness with a model @@ -29,6 +28,7 @@ Coding tools: command-code Open Command Code with a model Security tools: + shannon Test your own apps with Shannon, an AI pentester deepsec Scan your own repos with DeepSec vvah Scan your own repos with VVAH diff --git a/tests/golden/expected/parse__-z.stderr b/tests/golden/expected/parse__-z.stderr index 09171f7b..a6474b94 100644 --- a/tests/golden/expected/parse__-z.stderr +++ b/tests/golden/expected/parse__-z.stderr @@ -21,7 +21,6 @@ Coding tools: codex Open Codex with a model chatgpt Open ChatGPT's Codex with a model opencode Open OpenCode with a local or cloud model - shannon Test your own apps with Shannon, an AI pentester hermes Open Hermes with a model openclaw Open OpenClaw with a model deepseek Open DeepSeek Harness with a model @@ -29,6 +28,7 @@ Coding tools: command-code Open Command Code with a model Security tools: + shannon Test your own apps with Shannon, an AI pentester deepsec Scan your own repos with DeepSec vvah Scan your own repos with VVAH diff --git a/tests/golden/expected/unknown__auth.stderr b/tests/golden/expected/unknown__auth.stderr index 6a3c13c6..fb62c456 100644 --- a/tests/golden/expected/unknown__auth.stderr +++ b/tests/golden/expected/unknown__auth.stderr @@ -21,7 +21,6 @@ Coding tools: codex Open Codex with a model chatgpt Open ChatGPT's Codex with a model opencode Open OpenCode with a local or cloud model - shannon Test your own apps with Shannon, an AI pentester hermes Open Hermes with a model openclaw Open OpenClaw with a model deepseek Open DeepSeek Harness with a model @@ -29,6 +28,7 @@ Coding tools: command-code Open Command Code with a model Security tools: + shannon Test your own apps with Shannon, an AI pentester deepsec Scan your own repos with DeepSec vvah Scan your own repos with VVAH diff --git a/tests/golden/expected/unknown__chat.stderr b/tests/golden/expected/unknown__chat.stderr index 4a1a8bdc..49a0f9d1 100644 --- a/tests/golden/expected/unknown__chat.stderr +++ b/tests/golden/expected/unknown__chat.stderr @@ -21,7 +21,6 @@ Coding tools: codex Open Codex with a model chatgpt Open ChatGPT's Codex with a model opencode Open OpenCode with a local or cloud model - shannon Test your own apps with Shannon, an AI pentester hermes Open Hermes with a model openclaw Open OpenClaw with a model deepseek Open DeepSeek Harness with a model @@ -29,6 +28,7 @@ Coding tools: command-code Open Command Code with a model Security tools: + shannon Test your own apps with Shannon, an AI pentester deepsec Scan your own repos with DeepSec vvah Scan your own repos with VVAH diff --git a/tests/golden/expected/unknown__diarize.stderr b/tests/golden/expected/unknown__diarize.stderr index c5186bbb..b1195cde 100644 --- a/tests/golden/expected/unknown__diarize.stderr +++ b/tests/golden/expected/unknown__diarize.stderr @@ -21,7 +21,6 @@ Coding tools: codex Open Codex with a model chatgpt Open ChatGPT's Codex with a model opencode Open OpenCode with a local or cloud model - shannon Test your own apps with Shannon, an AI pentester hermes Open Hermes with a model openclaw Open OpenClaw with a model deepseek Open DeepSeek Harness with a model @@ -29,6 +28,7 @@ Coding tools: command-code Open Command Code with a model Security tools: + shannon Test your own apps with Shannon, an AI pentester deepsec Scan your own repos with DeepSec vvah Scan your own repos with VVAH diff --git a/tests/golden/expected/unknown__embed.stderr b/tests/golden/expected/unknown__embed.stderr index 764114d4..6e82a6c7 100644 --- a/tests/golden/expected/unknown__embed.stderr +++ b/tests/golden/expected/unknown__embed.stderr @@ -21,7 +21,6 @@ Coding tools: codex Open Codex with a model chatgpt Open ChatGPT's Codex with a model opencode Open OpenCode with a local or cloud model - shannon Test your own apps with Shannon, an AI pentester hermes Open Hermes with a model openclaw Open OpenClaw with a model deepseek Open DeepSeek Harness with a model @@ -29,6 +28,7 @@ Coding tools: command-code Open Command Code with a model Security tools: + shannon Test your own apps with Shannon, an AI pentester deepsec Scan your own repos with DeepSec vvah Scan your own repos with VVAH diff --git a/tests/golden/expected/unknown__foo.stderr b/tests/golden/expected/unknown__foo.stderr index a5dcde70..ea9dbfaa 100644 --- a/tests/golden/expected/unknown__foo.stderr +++ b/tests/golden/expected/unknown__foo.stderr @@ -21,7 +21,6 @@ Coding tools: codex Open Codex with a model chatgpt Open ChatGPT's Codex with a model opencode Open OpenCode with a local or cloud model - shannon Test your own apps with Shannon, an AI pentester hermes Open Hermes with a model openclaw Open OpenClaw with a model deepseek Open DeepSeek Harness with a model @@ -29,6 +28,7 @@ Coding tools: command-code Open Command Code with a model Security tools: + shannon Test your own apps with Shannon, an AI pentester deepsec Scan your own repos with DeepSec vvah Scan your own repos with VVAH diff --git a/tests/golden/expected/unknown__image.stderr b/tests/golden/expected/unknown__image.stderr index c44e9332..c3ab761b 100644 --- a/tests/golden/expected/unknown__image.stderr +++ b/tests/golden/expected/unknown__image.stderr @@ -21,7 +21,6 @@ Coding tools: codex Open Codex with a model chatgpt Open ChatGPT's Codex with a model opencode Open OpenCode with a local or cloud model - shannon Test your own apps with Shannon, an AI pentester hermes Open Hermes with a model openclaw Open OpenClaw with a model deepseek Open DeepSeek Harness with a model @@ -29,6 +28,7 @@ Coding tools: command-code Open Command Code with a model Security tools: + shannon Test your own apps with Shannon, an AI pentester deepsec Scan your own repos with DeepSec vvah Scan your own repos with VVAH diff --git a/tests/golden/expected/unknown__list.stderr b/tests/golden/expected/unknown__list.stderr index 90dfb4af..c60a4375 100644 --- a/tests/golden/expected/unknown__list.stderr +++ b/tests/golden/expected/unknown__list.stderr @@ -21,7 +21,6 @@ Coding tools: codex Open Codex with a model chatgpt Open ChatGPT's Codex with a model opencode Open OpenCode with a local or cloud model - shannon Test your own apps with Shannon, an AI pentester hermes Open Hermes with a model openclaw Open OpenClaw with a model deepseek Open DeepSeek Harness with a model @@ -29,6 +28,7 @@ Coding tools: command-code Open Command Code with a model Security tools: + shannon Test your own apps with Shannon, an AI pentester deepsec Scan your own repos with DeepSec vvah Scan your own repos with VVAH diff --git a/tests/golden/expected/unknown__lora.stderr b/tests/golden/expected/unknown__lora.stderr index 99518b27..db3511ee 100644 --- a/tests/golden/expected/unknown__lora.stderr +++ b/tests/golden/expected/unknown__lora.stderr @@ -21,7 +21,6 @@ Coding tools: codex Open Codex with a model chatgpt Open ChatGPT's Codex with a model opencode Open OpenCode with a local or cloud model - shannon Test your own apps with Shannon, an AI pentester hermes Open Hermes with a model openclaw Open OpenClaw with a model deepseek Open DeepSeek Harness with a model @@ -29,6 +28,7 @@ Coding tools: command-code Open Command Code with a model Security tools: + shannon Test your own apps with Shannon, an AI pentester deepsec Scan your own repos with DeepSec vvah Scan your own repos with VVAH diff --git a/tests/golden/expected/unknown__ls.stderr b/tests/golden/expected/unknown__ls.stderr index 65ca1f3c..a7825820 100644 --- a/tests/golden/expected/unknown__ls.stderr +++ b/tests/golden/expected/unknown__ls.stderr @@ -21,7 +21,6 @@ Coding tools: codex Open Codex with a model chatgpt Open ChatGPT's Codex with a model opencode Open OpenCode with a local or cloud model - shannon Test your own apps with Shannon, an AI pentester hermes Open Hermes with a model openclaw Open OpenClaw with a model deepseek Open DeepSeek Harness with a model @@ -29,6 +28,7 @@ Coding tools: command-code Open Command Code with a model Security tools: + shannon Test your own apps with Shannon, an AI pentester deepsec Scan your own repos with DeepSec vvah Scan your own repos with VVAH diff --git a/tests/golden/expected/unknown__pull.stderr b/tests/golden/expected/unknown__pull.stderr index d9064832..1696bd68 100644 --- a/tests/golden/expected/unknown__pull.stderr +++ b/tests/golden/expected/unknown__pull.stderr @@ -21,7 +21,6 @@ Coding tools: codex Open Codex with a model chatgpt Open ChatGPT's Codex with a model opencode Open OpenCode with a local or cloud model - shannon Test your own apps with Shannon, an AI pentester hermes Open Hermes with a model openclaw Open OpenClaw with a model deepseek Open DeepSeek Harness with a model @@ -29,6 +28,7 @@ Coding tools: command-code Open Command Code with a model Security tools: + shannon Test your own apps with Shannon, an AI pentester deepsec Scan your own repos with DeepSec vvah Scan your own repos with VVAH diff --git a/tests/golden/expected/unknown__rag.stderr b/tests/golden/expected/unknown__rag.stderr index 755bcbbf..81b854be 100644 --- a/tests/golden/expected/unknown__rag.stderr +++ b/tests/golden/expected/unknown__rag.stderr @@ -21,7 +21,6 @@ Coding tools: codex Open Codex with a model chatgpt Open ChatGPT's Codex with a model opencode Open OpenCode with a local or cloud model - shannon Test your own apps with Shannon, an AI pentester hermes Open Hermes with a model openclaw Open OpenClaw with a model deepseek Open DeepSeek Harness with a model @@ -29,6 +28,7 @@ Coding tools: command-code Open Command Code with a model Security tools: + shannon Test your own apps with Shannon, an AI pentester deepsec Scan your own repos with DeepSec vvah Scan your own repos with VVAH diff --git a/tests/golden/expected/unknown__rerank.stderr b/tests/golden/expected/unknown__rerank.stderr index 3c0f04a4..3f1e6ead 100644 --- a/tests/golden/expected/unknown__rerank.stderr +++ b/tests/golden/expected/unknown__rerank.stderr @@ -21,7 +21,6 @@ Coding tools: codex Open Codex with a model chatgpt Open ChatGPT's Codex with a model opencode Open OpenCode with a local or cloud model - shannon Test your own apps with Shannon, an AI pentester hermes Open Hermes with a model openclaw Open OpenClaw with a model deepseek Open DeepSeek Harness with a model @@ -29,6 +28,7 @@ Coding tools: command-code Open Command Code with a model Security tools: + shannon Test your own apps with Shannon, an AI pentester deepsec Scan your own repos with DeepSec vvah Scan your own repos with VVAH diff --git a/tests/golden/expected/unknown__rm.stderr b/tests/golden/expected/unknown__rm.stderr index f61aeb4a..2959a857 100644 --- a/tests/golden/expected/unknown__rm.stderr +++ b/tests/golden/expected/unknown__rm.stderr @@ -21,7 +21,6 @@ Coding tools: codex Open Codex with a model chatgpt Open ChatGPT's Codex with a model opencode Open OpenCode with a local or cloud model - shannon Test your own apps with Shannon, an AI pentester hermes Open Hermes with a model openclaw Open OpenClaw with a model deepseek Open DeepSeek Harness with a model @@ -29,6 +28,7 @@ Coding tools: command-code Open Command Code with a model Security tools: + shannon Test your own apps with Shannon, an AI pentester deepsec Scan your own repos with DeepSec vvah Scan your own repos with VVAH diff --git a/tests/golden/expected/unknown__segment.stderr b/tests/golden/expected/unknown__segment.stderr index 81ebc7c3..9bbc9105 100644 --- a/tests/golden/expected/unknown__segment.stderr +++ b/tests/golden/expected/unknown__segment.stderr @@ -21,7 +21,6 @@ Coding tools: codex Open Codex with a model chatgpt Open ChatGPT's Codex with a model opencode Open OpenCode with a local or cloud model - shannon Test your own apps with Shannon, an AI pentester hermes Open Hermes with a model openclaw Open OpenClaw with a model deepseek Open DeepSeek Harness with a model @@ -29,6 +28,7 @@ Coding tools: command-code Open Command Code with a model Security tools: + shannon Test your own apps with Shannon, an AI pentester deepsec Scan your own repos with DeepSec vvah Scan your own repos with VVAH diff --git a/tests/golden/expected/unknown__show.stderr b/tests/golden/expected/unknown__show.stderr index 06b9ba46..298dfaf4 100644 --- a/tests/golden/expected/unknown__show.stderr +++ b/tests/golden/expected/unknown__show.stderr @@ -21,7 +21,6 @@ Coding tools: codex Open Codex with a model chatgpt Open ChatGPT's Codex with a model opencode Open OpenCode with a local or cloud model - shannon Test your own apps with Shannon, an AI pentester hermes Open Hermes with a model openclaw Open OpenClaw with a model deepseek Open DeepSeek Harness with a model @@ -29,6 +28,7 @@ Coding tools: command-code Open Command Code with a model Security tools: + shannon Test your own apps with Shannon, an AI pentester deepsec Scan your own repos with DeepSec vvah Scan your own repos with VVAH diff --git a/tests/golden/expected/unknown__stt.stderr b/tests/golden/expected/unknown__stt.stderr index a7c314d5..fb1be01b 100644 --- a/tests/golden/expected/unknown__stt.stderr +++ b/tests/golden/expected/unknown__stt.stderr @@ -21,7 +21,6 @@ Coding tools: codex Open Codex with a model chatgpt Open ChatGPT's Codex with a model opencode Open OpenCode with a local or cloud model - shannon Test your own apps with Shannon, an AI pentester hermes Open Hermes with a model openclaw Open OpenClaw with a model deepseek Open DeepSeek Harness with a model @@ -29,6 +28,7 @@ Coding tools: command-code Open Command Code with a model Security tools: + shannon Test your own apps with Shannon, an AI pentester deepsec Scan your own repos with DeepSec vvah Scan your own repos with VVAH diff --git a/tests/golden/expected/unknown__tts.stderr b/tests/golden/expected/unknown__tts.stderr index 1b44a057..96f8d1e7 100644 --- a/tests/golden/expected/unknown__tts.stderr +++ b/tests/golden/expected/unknown__tts.stderr @@ -21,7 +21,6 @@ Coding tools: codex Open Codex with a model chatgpt Open ChatGPT's Codex with a model opencode Open OpenCode with a local or cloud model - shannon Test your own apps with Shannon, an AI pentester hermes Open Hermes with a model openclaw Open OpenClaw with a model deepseek Open DeepSeek Harness with a model @@ -29,6 +28,7 @@ Coding tools: command-code Open Command Code with a model Security tools: + shannon Test your own apps with Shannon, an AI pentester deepsec Scan your own repos with DeepSec vvah Scan your own repos with VVAH diff --git a/tests/golden/expected/unknown__vad.stderr b/tests/golden/expected/unknown__vad.stderr index 7c2f3274..08dc300c 100644 --- a/tests/golden/expected/unknown__vad.stderr +++ b/tests/golden/expected/unknown__vad.stderr @@ -21,7 +21,6 @@ Coding tools: codex Open Codex with a model chatgpt Open ChatGPT's Codex with a model opencode Open OpenCode with a local or cloud model - shannon Test your own apps with Shannon, an AI pentester hermes Open Hermes with a model openclaw Open OpenClaw with a model deepseek Open DeepSeek Harness with a model @@ -29,6 +28,7 @@ Coding tools: command-code Open Command Code with a model Security tools: + shannon Test your own apps with Shannon, an AI pentester deepsec Scan your own repos with DeepSec vvah Scan your own repos with VVAH diff --git a/tests/golden/expected/unknown__vlm.stderr b/tests/golden/expected/unknown__vlm.stderr index fbf9d7dd..ac9f7974 100644 --- a/tests/golden/expected/unknown__vlm.stderr +++ b/tests/golden/expected/unknown__vlm.stderr @@ -21,7 +21,6 @@ Coding tools: codex Open Codex with a model chatgpt Open ChatGPT's Codex with a model opencode Open OpenCode with a local or cloud model - shannon Test your own apps with Shannon, an AI pentester hermes Open Hermes with a model openclaw Open OpenClaw with a model deepseek Open DeepSeek Harness with a model @@ -29,6 +28,7 @@ Coding tools: command-code Open Command Code with a model Security tools: + shannon Test your own apps with Shannon, an AI pentester deepsec Scan your own repos with DeepSec vvah Scan your own repos with VVAH diff --git a/tests/golden/expected/unknown__voice.stderr b/tests/golden/expected/unknown__voice.stderr index 847768c0..dac8ab22 100644 --- a/tests/golden/expected/unknown__voice.stderr +++ b/tests/golden/expected/unknown__voice.stderr @@ -21,7 +21,6 @@ Coding tools: codex Open Codex with a model chatgpt Open ChatGPT's Codex with a model opencode Open OpenCode with a local or cloud model - shannon Test your own apps with Shannon, an AI pentester hermes Open Hermes with a model openclaw Open OpenClaw with a model deepseek Open DeepSeek Harness with a model @@ -29,6 +28,7 @@ Coding tools: command-code Open Command Code with a model Security tools: + shannon Test your own apps with Shannon, an AI pentester deepsec Scan your own repos with DeepSec vvah Scan your own repos with VVAH diff --git a/tests/golden/expected/version__bare.stderr b/tests/golden/expected/version__bare.stderr index b31e25b9..65c952ab 100644 --- a/tests/golden/expected/version__bare.stderr +++ b/tests/golden/expected/version__bare.stderr @@ -20,7 +20,6 @@ Coding tools: codex Open Codex with a model chatgpt Open ChatGPT's Codex with a model opencode Open OpenCode with a local or cloud model - shannon Test your own apps with Shannon, an AI pentester hermes Open Hermes with a model openclaw Open OpenClaw with a model deepseek Open DeepSeek Harness with a model @@ -28,6 +27,7 @@ Coding tools: command-code Open Command Code with a model Security tools: + shannon Test your own apps with Shannon, an AI pentester deepsec Scan your own repos with DeepSec vvah Scan your own repos with VVAH