spb/zyquo-agent Public MIT
The autonomous agent that actually operates your Mac — plans, runs real commands, verifies its own work.
Swift 94.7%
Shell 4.1%
Python 0.7%
Makefile 0.5%
1//2// AgentModelSupport.swift3// Zyquo Agent4//5// Author: Simon-Pierre Boucher6// Mail: contact@spboucher.ai7//8// The agent-capable subset of the shared Zyquo Cloud catalog, exactly as9// documented in docs/PROVIDER-REUSE.md §3: models with live-verified native10// function calling, frontier-tier multi-step reasoning, and ≥ ~128K context.11// Everything else stays in the picker (same list as Cloud) but is12// de-emphasized; models with `capabilities.tools == false` (Perplexity sonar,13// Gemma, QVQ, DeepSeek R1 distills…) are hard-excluded — the agent loop14// refuses to start with them.15//1617import Foundation1819enum AgentModelSupport {20 /// Curated "provider|modelID" keys of the agent-capable subset21 /// (the 🤖 marks in docs/PROVIDER-REUSE.md §2).22 static let capableKeys: Set<String> = [23 // OpenAI24 "openai|gpt-5.6-sol",25 "openai|gpt-5.6-terra",26 "openai|gpt-5.6-luna",27 "openai|gpt-5.5",28 "openai|gpt-5.4",29 "openai|gpt-5.4-mini",30 "openai|gpt-5.2",31 "openai|gpt-5.1",32 "openai|gpt-5",33 "openai|gpt-5-mini",34 "openai|o3",35 "openai|o4-mini",36 // Anthropic37 "anthropic|claude-opus-5",38 "anthropic|claude-sonnet-5",39 "anthropic|claude-fable-5",40 "anthropic|claude-opus-4-8",41 "anthropic|claude-opus-4-7",42 "anthropic|claude-opus-4-6",43 "anthropic|claude-sonnet-4-6",44 "anthropic|claude-haiku-4-5-20251001",45 // xAI46 "xai|grok-4.5",47 "xai|grok-4.3",48 "xai|grok-4.20",49 "xai|grok-4.20-non-reasoning",50 "xai|grok-code-fast-1",51 // Mistral52 "mistral|mistral-medium-latest",53 "mistral|mistral-large-latest",54 "mistral|mistral-small-latest",55 // Google Gemini (compat endpoint)56 "gemini|gemini-3.6-flash",57 "gemini|gemini-3.5-flash",58 "gemini|gemini-3.5-flash-lite",59 "gemini|gemini-3.1-pro-preview",60 "gemini|gemini-2.5-pro",61 "gemini|gemini-2.5-flash",62 "gemini|gemini-pro-latest",63 "gemini|gemini-flash-latest",64 // Alibaba Qwen / DashScope65 "qwen|qwen3.7-max",66 "qwen|qwen3.7-plus",67 "qwen|qwen3.7-flash",68 "qwen|qwen3.6-plus",69 "qwen|qwen3.5-plus",70 "qwen|qwen3-coder-plus",71 "qwen|qwen3-coder-flash",72 "qwen|qwen3-coder-next",73 "qwen|qwen3-coder-480b-a35b-instruct",74 "qwen|qwen3.5-397b-a17b",75 "qwen|deepseek-v4-pro",76 "qwen|glm-5.2",77 // DeepSeek78 "deepseek|deepseek-v4-flash",79 "deepseek|deepseek-v4-pro",80 // Kimi / Moonshot81 "kimi|kimi-k3",82 "kimi|kimi-k2.7-code",83 "kimi|kimi-k2.7-code-highspeed",84 "kimi|kimi-k2.6",85 "kimi|kimi-k2.5",86 // Together AI87 "together|moonshotai/Kimi-K3",88 "together|moonshotai/Kimi-K2.7-Code",89 "together|deepseek-ai/DeepSeek-V4-Pro",90 "together|zai-org/GLM-5.2",91 "together|Qwen/Qwen3.7-Max",92 "together|openai/gpt-oss-120b",93 "together|nvidia/nemotron-3-ultra-550b-a55b",94 "together|MiniMaxAI/MiniMax-M3",95 // DeepInfra96 "deepinfra|anthropic/claude-fable-5",97 "deepinfra|anthropic/claude-opus-5",98 "deepinfra|anthropic/claude-sonnet-5",99 "deepinfra|anthropic/claude-opus-4-8",100 "deepinfra|anthropic/claude-haiku-4-5",101 "deepinfra|google/gemini-3.1-pro",102 "deepinfra|google/gemini-3.5-flash",103 "deepinfra|deepseek-ai/DeepSeek-V4-Pro",104 "deepinfra|deepseek-ai/DeepSeek-V4-Flash",105 "deepinfra|moonshotai/Kimi-K2.7-Code",106 "deepinfra|zai-org/GLM-5.2",107 "deepinfra|Qwen/Qwen3.7-Max",108 "deepinfra|Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo",109 "deepinfra|openai/gpt-oss-120b",110 "deepinfra|MiniMaxAI/MiniMax-M3",111 // Cerebras112 "cerebras|gpt-oss-120b",113 "cerebras|gemma-4-31b",114 ]115116 /// Overall default agent model (docs/PROVIDER-REUSE.md §3):117 /// Claude Sonnet 5 — 1M context, adaptive thinking, best-in-class tool use.118 static let defaultModelID = "claude-sonnet-5"119 static let defaultModelProvider = ProviderID.anthropic120121 /// Suggested per-provider agent defaults (bolded 🤖 entries in §2).122 static let providerDefaults: [ProviderID: String] = [123 .openai: "gpt-5.6-terra",124 .anthropic: "claude-sonnet-5",125 .xai: "grok-4.5",126 .mistral: "mistral-medium-latest",127 .gemini: "gemini-3.6-flash",128 .qwen: "qwen3.7-max",129 .deepseek: "deepseek-v4-pro",130 .kimi: "kimi-k3",131 .together: "deepseek-ai/DeepSeek-V4-Pro",132 .deepinfra: "deepseek-ai/DeepSeek-V4-Pro",133 .cerebras: "gpt-oss-120b",134 ]135136 /// Recommended top tier, surfaced first in the model chip (§3).137 static let recommendedKeys: [String] = [138 "anthropic|claude-sonnet-5",139 "anthropic|claude-opus-5",140 "openai|gpt-5.6-terra",141 "openai|gpt-5.6-sol",142 "gemini|gemini-3.6-flash",143 "xai|grok-4.5",144 "xai|grok-code-fast-1",145 "deepseek|deepseek-v4-pro",146 "kimi|kimi-k3",147 "kimi|kimi-k2.7-code",148 "qwen|qwen3.7-max",149 "mistral|mistral-medium-latest",150 "cerebras|gpt-oss-120b",151 ]152}153154extension AIModel {155 /// Whether this model is suitable for deep agentic, multi-step tool use.156 /// Built-ins follow the curated subset; user-defined custom models qualify157 /// whenever they declare tool support. `capabilities.tools == false` is158 /// always disqualifying (hard exclusion).159 var agentCapable: Bool {160 guard capabilities.tools, !isLegacy else { return false }161 if provider == .custom { return true }162 return AgentModelSupport.capableKeys.contains("\(provider.rawValue)|\(id)")163 }164}165