Skip to content

Releases: teddashh/multi-ai-terminal

Multi-AI Terminal v0.2.10

Choose a tag to compare

@github-actions github-actions released this 23 Jul 10:46

v0.2.10 — Provider runtime unification & OpenRouter

Tasks #24 and #25 complete the next BAT-aligned provider-runtime slice: more providers now share one evidence contract without adding setup friction.

Provider expansion

  • Grok and Agy now run through a common headless CLI manager while preserving their existing runtime behavior.
  • OpenRouter joins as the fifth provider through an isolated Codex app-server runtime. Choose the model first, then its version; the exact selected slug is preserved through thread and turn routing.
  • The OpenRouter catalog supports bounded live, stale, and fallback data. OPENROUTER_API_KEY reaches only the runtime child; MAT persists neither the key nor an auth file.

Canonical evidence contract

  • A provider-neutral 19-event contract now validates session metadata, status, messages, tool activity, usage, errors, and turn completion.
  • One bridge keeps content and technical events ordered, canonicalizes tool pairing, suppresses replayed provider history, and guarantees exactly one terminal event per turn.

Smooth startup and reliable shutdown

  • Desktop startup keeps the BAT-style quiet first run: one server coordinator bootstraps only missing, supported Codex and Claude managed runtimes from pinned, integrity-verified artifacts. The web client no longer races it with a duplicate installer.
  • Shutdown now attempts provider disposal and server closure even when stopping or enumerating active runs fails, while reporting combined failures through the sanitized error path.

Evidence hardening

  • All five independent black-box instruments now use isolated data, minimal environments, ephemeral ports, bounded requests, verified child readiness, and process-group cleanup.
  • The new credential-free runtime-contract instrument uses a fake Codex app-server to verify exact OpenRouter routing, canonical event order, environment-value redaction, terminal metadata, and byte-equivalent replay after restart.

v0.2.10 — 供應商 runtime 統一與 OpenRouter

BAT 對齊工作的 #24 與 #25 已完成:更多供應商共用同一套 evidence 契約,同時維持順暢、不增加設定負擔的使用流程。

供應商擴充

  • Grok 與 Agy 改由共用的 headless CLI manager 驅動,同時保留各自原有的 runtime 行為。
  • OpenRouter 成為第五個供應商,透過隔離的 Codex app-server runtime 運作。介面先選模型、再選版本;選定的精確 slug 會一路保留至 thread 與 turn 路由。
  • OpenRouter catalog 支援有界的即時、過期快取與備援資料。OPENROUTER_API_KEY 只會傳給 runtime 子程序;MAT 不會保存金鑰或 auth 檔案。

Canonical evidence 契約

  • 新增供應商中立的 19-event 契約,統一驗證 session metadata、狀態、訊息、工具活動、用量、錯誤與回合結束。
  • 單一 bridge 維持內容與技術事件順序、標準化工具配對、抑制供應商重播的歷史紀錄,並保證每個回合恰好只有一個終止事件。

順暢啟動與可靠關閉

  • 桌面版保留 BAT 式安靜的首次啟動:只由單一 server coordinator,從固定版本且通過完整性驗證的 artifact,自動補齊缺少且受支援的 Codex、Claude managed runtime。網頁端不再啟動重複 installer 與它競速。
  • 即使停止或列舉進行中工作失敗,關閉流程仍會嘗試釋放 provider runtime 並關閉 server;合併後的錯誤只會通過已消毒的錯誤路徑回報。

Evidence 強化

  • 五個獨立 black-box instruments 現在全部使用隔離資料、最小化環境、臨時連接埠、有界請求、已驗證的子程序 readiness,以及 process-group 清理。
  • 新增不需憑證的 runtime-contract instrument,以假的 Codex app-server 驗證 OpenRouter 精確路由、canonical event 順序、環境值遮蔽、終止 metadata,以及重新啟動後 byte-equivalent replay。

Multi-AI Terminal v0.2.9

Choose a tag to compare

@github-actions github-actions released this 23 Jul 04:37

v0.2.9 — BAT-aligned provider auth & accounts

Task #23 of the BAT port plan (docs/bat-port-plan.md §4): provider sign-in, credentials, and account handling now follow better-agent-terminal's model.

Codex unified account store

  • Capture your current codex login into a sanitized account index (codex-accounts.json + per-account auth.json snapshots), then switch between accounts from Provider Setup. Switching copies only auth.json into the shared CODEX_HOME, drops the live session, and resets the app-server pair — config, sessions, and cache are never touched.
  • OAuth refresh tokens rotate: switch re-snapshots the outgoing account first, a same-target switch re-captures instead of restoring a stale copy, and the server re-syncs the active account at shutdown.
  • Accounts that fail with a canonical auth error are marked needs login (with the reason) and excluded from switching until you sign in again; a successful turn clears the flag unless an API key may have carried it.
  • Account ids are locked to a path-safe alphabet at the API, index, and store layers — crafted auth.json contents cannot escape the store boundary.

OpenAI API key chain

  • Set, inspect (presence + source only — never the value), and clear an OPENAI_API_KEY for codex: protected file (0600) first, environment fallback, BAT-style. Exec turns inject only the file-sourced key; login children always spawn with the key unset so codex doesn't misclassify the account.

Sign-in hardening

  • Sign-in, running turns, and account mutations now mutually refuse while the other is active, with the ceremony reserved synchronously at start.
  • Sign-in recipes resolve the managed runtime binaries, and failure excerpts are sanitized (environment values, one-time codes, URLs redacted; capped at 600 chars).

Claude accounts (read-only)

  • Provider Setup shows the claude account index (email, subscription, active/default) when present. Read-only — the claude CLI stays the owner of its credentials.

UI

  • Provider Setup gains the codex account list (active / needs-login badges, switch, capture, confirmed remove), the API-key row (password input; the key never persists in the page), and the claude read-only list. Fully localized (EN / zh-TW).

Acceptance: three-way review (codex gpt-5.6-sol implementation, Fable 5 gatekeeper fixes, grok 4.5 review — final verdict PASS). Gates: 553 server/shared + 164 web tests, browser smoke 13/13, real codex + claude turn smokes.


v0.2.9 — 供應商登入與帳號管理(BAT 對齊)

BAT 移植計畫任務 #23(docs/bat-port-plan.md §4):供應商登入、憑證與帳號處理全面採用 better-agent-terminal 的模型。

Codex 統一帳號庫

  • 可將目前的 codex 登入「擷取」進消毒後的帳號索引(codex-accounts.json + 各帳號的 auth.json 快照),並在供應商設定中切換帳號。切換複製 auth.json 到共用 CODEX_HOME,同時斷開連線並重置 app-server — 設定檔、工作階段與快取一律不碰。
  • OAuth refresh token 會輪替:切換前先回存外送帳號的最新快照;切到目前使用中的帳號時改為重新擷取,不會用舊快照蓋掉新 token;伺服器關閉時也會再同步一次。
  • 遇到標準認證錯誤的帳號會標記「需要登入」(附原因)並停用切換,重新登入後恢復;成功回合會清除標記(但設有 API 金鑰時不清除,因為可能是金鑰撐起了該回合)。
  • 帳號 id 在 API、索引與帳號庫三層鎖定路徑安全字元 — 偽造的 auth.json 內容無法逃出帳號庫邊界。

OpenAI API 金鑰鏈

  • 可設定、查看(只顯示有無與來源,絕不顯示值)、清除 codex 用的 OPENAI_API_KEY:保護檔案(0600)優先、環境變數備援,比照 BAT。exec 回合只注入檔案來源的金鑰;登入子程序一律拔除金鑰,避免 codex 誤判帳號型態。

登入強化

  • 登入、進行中的回合、帳號操作三者互斥,登入儀式在開始時即同步預約。
  • 登入配方改用受管 runtime 解析;失敗摘錄一律消毒(環境值、一次性代碼、URL 皆遮蔽,上限 600 字元)。

Claude 帳號(唯讀)

  • 供應商設定會顯示 claude 帳號索引(email、訂閱、使用中/預設)。唯讀 — claude CLI 仍是其憑證的唯一擁有者。

介面

  • 供應商設定新增:codex 帳號清單(使用中/需要登入徽章、切換、擷取、二段式移除)、API 金鑰列(密碼欄位;金鑰不會留在頁面中)、claude 唯讀清單。完整雙語(EN / zh-TW)。

驗收:三方審查(codex gpt-5.6-sol 實作、Fable 5 守門修正、grok 4.5 二審 — 最終判決 PASS)。關卡:伺服器/共用 553 + 網頁 164 測試、瀏覽器 smoke 13/13、codex 與 claude 真機回合 smoke。

Multi-AI Terminal v0.2.8

Choose a tag to compare

@github-actions github-actions released this 23 Jul 02:44

v0.2.8 — Claude Agent SDK session runtime

EN

Claude runs now ride the Claude Agent SDK session runtime by default. Each MAT session keeps one persistent streaming query alive across turns, so follow-up turns reuse the warm session instead of cold-starting the CLI, and interrupts land as soft turn interrupts instead of process kills.

  • Session runtime (default): one persistent SDK query per session with streaming input; turns are serialized per session, results carry strict usage (inputTokens / outputTokens / costUsd), and the reported SDK session id becomes the resume ref.
  • Interrupt semantics: killing an active turn sends a soft SDK interrupt (the session survives); killing a queued turn cancels it before it starts. Both classify as killed (SIGTERM), never as provider errors.
  • Resilience: closed generators rebuild transparently with resume; managed-runtime changes recycle idle sessions immediately and busy ones at turn end; idle sessions are reaped after 5 minutes (resume still works cold).
  • Stream shape: text/thinking deltas coalesce into readable message blocks (same shape as the codex app-server runtime); tool use and tool results pass through as structured events.
  • Opt-out: set MAT_CLAUDE_RUNTIME=cli to use the legacy one-shot CLI path; MAT_DISABLE_AGENT_SDK=1 disables SDK loading entirely (runs fail over with a clear error pointing at the CLI opt-out).

Validated end-to-end against the real Claude Agent SDK (one-turn smoke through the production adapter: exit 0, real session ref, strict usage, coalesced stream).

zh-TW

Claude 執行現在預設走 Claude Agent SDK session runtime。每個 MAT session 維持一條跨回合的持久串流查詢:後續回合重用暖 session、不再冷啟 CLI,中斷也改為軟性回合中斷、不殺行程。

  • Session runtime(預設):每 session 一條持久 SDK query、串流輸入;同 session 回合序列化,結果帶嚴格 usage(inputTokens / outputTokens / costUsd),SDK 回報的 session id 即為 resume ref。
  • 中斷語意:中止進行中的回合送軟性 SDK interrupt(session 存活);中止排隊中的回合在起跑前取消。兩者一律歸類為 killed(SIGTERM),不會誤判為 provider 錯誤。
  • 韌性:generator 關閉後以 resume 透明重建;受管 runtime 變更時,閒置 session 立即回收、忙碌 session 於回合結束回收;閒置 5 分鐘的 session 會被回收(冷 resume 仍可用)。
  • 串流形狀:text/thinking delta 合併為可讀的訊息區塊(與 codex app-server runtime 同形);工具呼叫與結果以結構化事件透傳。
  • 退出選項:設 MAT_CLAUDE_RUNTIME=cli 走舊制一次性 CLI 路徑;MAT_DISABLE_AGENT_SDK=1 完全停用 SDK 載入(執行會以明確錯誤指向 CLI 退出選項)。

已對真實 Claude Agent SDK 完成端到端驗證(經正式 adapter 的單回合 smoke:exit 0、真實 session ref、嚴格 usage、合併串流)。

Multi-AI Terminal v0.2.7

Choose a tag to compare

@github-actions github-actions released this 23 Jul 01:42

v0.2.7 — Codex persistent session runtime

English

  • Codex runs now ride a persistent codex app-server session runtime by default: one shared JSON-RPC child serves all Codex nodes, with per-session thread management, streamed agent/thinking/tool events, token-usage capture, and clean turn interrupts (a steered kill now lands as a proper interrupt instead of a process kill).
  • Resuming a Codex session adopts the existing app-server thread (thread/resume) instead of replaying from scratch, so follow-up turns keep full server-side context.
  • Robust lifecycle handling: idle reaper, EOF-drain with lazy respawn, connection-loss recovery (in-flight turns settle as interrupted/failed, sessions resume on the fresh child), stale-turn filtering, and approval requests auto-declined under the engine's non-interactive policy.
  • Managed-runtime aware: when the managed Codex runtime is updated, the shared app-server recycles as soon as it goes idle, so the next run picks up the new binary.
  • The legacy codex exec path remains available as an explicit opt-out via MAT_CODEX_RUNTIME=exec.
  • Validated against the real codex CLI 0.144.0: protocol handshake smoke plus a full one-turn smoke through the production spawn path (streamed events, session ref, result text), alongside 48 provider tests covering the wire protocol end to end against a scripted fake app-server.

繁體中文

  • Codex 執行預設改走常駐的 codex app-server session runtime:所有 Codex 節點共用同一個 JSON-RPC 子行程,支援 per-session thread 管理、即時串流 agent/思考/工具事件、token 用量擷取,以及乾淨的回合中斷(kill 現在會以正確的 interrupt 收場,而不是直接砍行程)。
  • 續接 Codex session 時會直接收養既有的 app-server thread(thread/resume),後續回合保留完整的伺服器端上下文,不再從頭重放。
  • 完整的生命週期處理:閒置回收、EOF 排空與惰性重生、連線中斷復原(進行中的回合會以 interrupted/failed 收斂,session 在新子行程上續接)、過期回合過濾,以及在引擎非互動政策下自動拒絕核准請求。
  • 與受管 runtime 整合:更新受管 Codex runtime 後,共用的 app-server 會在閒置時立即回收,下一次執行自動使用新版本。
  • 舊的 codex exec 路徑保留為明確的退路,可透過 MAT_CODEX_RUNTIME=exec 切換。
  • 已對真實 codex CLI 0.144.0 驗證:協定握手 smoke,加上走正式 spawn 路徑的完整單回合 smoke(串流事件、session ref、結果文字),並有 48 個 provider 測試以腳本化的假 app-server 端到端覆蓋 wire protocol。

Multi-AI Terminal v0.2.6

Choose a tag to compare

@github-actions github-actions released this 23 Jul 00:11

Multi-AI Terminal v0.2.6

English

Managed runtimes go live (BAT-aligned)

The runtime foundation from v0.2.5 is now wired end-to-end. Installing Claude Code or Codex from Provider Setup performs a pinned, hash-verified managed install into MAT's own data directory instead of touching your system — and from then on the adapters launch that managed binary (an explicit env override still wins, and platforms without a catalog entry keep the existing PATH discovery). The setup dialog shows the live runtime state (managed / external / missing / broken) plus the pinned version, fed by new /api/runtimes endpoints and runtime:changed events. Installs and removals run in the background behind a single mutation lock, so a concurrent request gets an honest 409 naming the operation in flight instead of a race; removal only ever deletes MAT's own <dataDir>/runtimes/ tree and stays available even on platforms that can't install. Grok and Antigravity keep their existing setup recipes for now — they join the managed model in an upcoming release.

Desktop first-run auto-install

The desktop app quietly provisions the pinned runtimes (Codex, then Claude Code — only the ones that are missing and installable) shortly after first launch, so a fresh machine is ready to run without a manual install step. This is gated behind an environment flag that only the desktop shell sets: server-only and agent-lane usage never installs anything on its own.

Under the hood

  • Managed Codex children get MAT's isolated helper directory prepended to their PATH and the bundled Node appended — appended, never prepended, so it can't shadow whichever binary the resolver actually picked.
  • The runtime catalog ships beside the bundled server with candidate-path loading, so the desktop build resolves it without a repo checkout.
  • Three-way accepted as usual: codex implemented, the gatekeeper caught a child-PATH shadowing regression and an install/clear dedupe join before review, grok 4.5 found three more (all fixed with regression tests). 30 runtime/API tests; full suite, agent integration, and browser smoke green.

繁體中文

受管 Runtime 正式上線(對齊 BAT)

v0.2.5 打好的 runtime 地基這版全線接通。在 Provider Setup 安裝 Claude Code 或 Codex,現在是釘版、雜湊驗證的受管安裝,裝進 MAT 自己的資料目錄、完全不動你的系統——此後 adapters 一律啟動這份受管執行檔(明確的環境變數覆寫仍優先;catalog 未涵蓋的平台維持既有 PATH 探索)。設定視窗會顯示即時 runtime 狀態(受管/外部/未安裝/損壞)與釘定版本,由新的 /api/runtimes 端點與 runtime:changed 事件驅動。安裝與移除都在背景執行、由單一互斥鎖序列化——併發請求會收到誠實的 409 並指名進行中的操作,而不是彼此競速;移除永遠只刪 MAT 自己的 <dataDir>/runtimes/ 樹,且在無法安裝的平台上仍然可用。Grok 與 Antigravity 暫時維持既有安裝方式,之後的版本再納入受管模型。

桌面版首次啟動自動安裝

桌面版會在首次啟動後不久,靜靜地把釘版 runtimes 裝好(先 Codex、後 Claude Code——只裝「缺少且可安裝」的),新機器不需手動安裝就能直接開跑。這個行為由只有桌面殼層會設定的環境旗標把關:純伺服器與 agent 工作流永遠不會自行安裝任何東西。

底層細節

  • 受管 Codex 子行程的 PATH:MAT 的隔離 helper 目錄放最前面、內建 Node 附加在最後面——只附加、絕不前置,才不會遮蔽 resolver 實際選中的那個執行檔。
  • Runtime catalog 隨打包後的伺服器一起出貨,以候選路徑載入,桌面版不需要 repo checkout 也能解析。
  • 照例三方驗收:codex 實作;守門人在送審前先抓到子行程 PATH 遮蔽回歸與 install/clear 去重合流缺陷;grok 4.5 再找出三條(全數修正並補回歸測試)。30 條 runtime/API 測試;完整測試套件、agent 整合測試、瀏覽器 smoke 全綠。

Multi-AI Terminal v0.2.5

Choose a tag to compare

@github-actions github-actions released this 22 Jul 23:19

Multi-AI Terminal v0.2.5

English

AI-Sister Commemorative Edition theme

The third theme is now the AI-Sister Commemorative Edition, ported from the Multi-AI Chat desktop app it pays tribute to: the deep-violet/gold/teal palette, the edition badge with the ensemble artwork in the theme panel, and per-provider character avatars on agent chips and conversation headers (Claude, Codex, Grok; Antigravity wears the Gemini artwork, matching its model family). Everything is gated to the theme — Midnight and Daylight are pixel-for-pixel unchanged. A previously saved Aurora preference migrates to AI-Sister automatically.

App icon in the navigation rail

The rail now opens with the actual app icon instead of the "MAT" text mark — the same 256px source the desktop icon uses, so the window and the dock finally agree on who they are.

Managed runtime foundation (BAT-aligned)

Groundwork for the runtime overhaul: a pinned runtime catalog (Claude Agent SDK 0.3.212, Codex 0.144.5, Node 24.18.0 across six platforms) with npm/nodejs.org integrity hashes, a hash-verified installer core (staged extract, --version probe, atomic swap with rollback, stale-version pruning, everything contained under <dataDir>/runtimes/), and a resolver that prefers an env override, then a managed install, then the existing PATH discovery. Nothing is wired to the provider adapters yet — that lands with the upcoming session-runtime work — but the plumbing ships verified: 22 offline unit tests, three-way reviewed (codex implemented, grok found a real resolver-cache blocker before it could ship, all fixes re-verified).

Internal

  • The orchestrated-steer integration test no longer races fast mock agents on loaded CI runners.

繁體中文

AI-Sister 紀念版主題

第三個主題換成 AI-Sister 紀念版,自它致敬的 Multi-AI Chat 桌面版移植而來:深紫金青的配色、主題面板上的紀念徽章與合影標記,以及 agent chip 與對話標頭上的角色頭像(Claude、Codex、Grok;Antigravity 依其模型家族使用 Gemini 頭像)。所有元素只在此主題下出現——午夜深色與日光淺色完全不受影響。先前儲存的「極光三色」偏好會自動遷移為 AI-Sister。

導覽列改用 App 圖示

左上角的「MAT」文字換成真正的 app 圖示——與桌面圖示同一份 256px 來源,視窗和 dock 終於長得一樣。

受管 Runtime 基建(對齊 BAT)

Runtime 大改版的地基:釘版 runtime catalog(Claude Agent SDK 0.3.212、Codex 0.144.5、Node 24.18.0,六平台)附 npm/nodejs.org 完整性雜湊;經雜湊驗證的安裝核心(暫存解壓、--version 探測、原子換裝含回滾、舊版清理,全部限制在 <dataDir>/runtimes/ 之內);以及「環境變數覆寫 → 受管安裝 → 既有 PATH 探索」的解析器。目前尚未接上 provider adapters——那會隨接下來的 session-runtime 工作落地——但這套管線是驗證過才出貨的:22 條離線單元測試、三方審查(codex 實作、grok 在出貨前抓到一條真實的 resolver cache blocker、修正全數複核)。

內部

  • Orchestrated-steer 整合測試不再於高負載 CI 上與快速 mock agent 競速。

Multi-AI Terminal v0.2.4

Choose a tag to compare

@github-actions github-actions released this 22 Jul 03:39

Multi-AI Terminal v0.2.4

MAT is now an agent-ready source release: a checked-out copy of this repository can be built, launched, verified, and stopped by your coding agent — Claude Code or Codex — under an explicit, machine-readable contract. This follows the approach proven in multi-ai-chat-desktop, adapted to a lane that needs no Rust at all.

Drive MAT with your coding agent

  • Skills ship in-repo: .claude/skills/launch-multi-ai-terminal/ (Claude Code) and .agents/skills/launch-multi-ai-terminal/ (Codex, with agents/openai.yaml). Ask your agent to launch Multi-AI Terminal from source: it audits the declared side effects, checks prerequisites, builds, starts the server on a free 127.0.0.1 port, and reports the URL for you to open in your own browser.
  • The skills are explicit-only (disable-model-invocation: true / allow_implicit_invocation: false): an agent may use them only when you ask, never implicitly on opening the repository.
  • The lane is npm-only — Node.js 20+ and npm are the whole prerequisite list. No Rust toolchain, no installers, no release-asset downloads.

A machine-readable contract

  • agent-release.json declares the entrypoints, allowed/denied permissions, declared side effects, runtime states, and exit codes; agent-release.schema.json validates it in CI.
  • Five lifecycle commands, also exposed as npm scripts: agent:doctor, agent:audit, agent:launch, agent:status, agent:stop (all support --json).
  • Audit runs before and after a launch and records what actually changed against what was declared.

Identity-safe lifecycle

  • Launch runs the server under a runner process carrying a single-use token in its command line. status and stop act only on a process this repository provably started; foreign or unverifiable PIDs are refused, never killed.
  • Readiness is a log marker scoped to the current run segment ([MAT_AGENT] READY url=...) — a marker left by an earlier run can never fake readiness for a new one.
  • All lifecycle records (state, log, launch receipt, before/after audits) live in the gitignored .agent-runtime/ directory.
  • The server now supports --port 0 (bind a free ephemeral port and print the READY line); the agent lane uses it by default, so it never collides with the desktop app or a dev server.

Boundaries

  • Lifecycle scripts never install or remove host toolchains, never modify PATH or shell profiles, never elevate privileges, never read provider credentials, and never upload logs or audits.
  • The skills are forbidden from driving the launched server's provider install, update, or sign-in APIs on your behalf — those stay yours, in your own browser.
  • Do not run the source lane while the installed desktop app is open: both use the same data directory (MAT_DATA_DIR or ~/.multi-ai-terminal/).

Verification

  • A new cross-platform end-to-end test drives the real cycle — launch → READY → serve UI + health → stop → clean state — on Ubuntu and Windows CI (npm run test:agent), against a temporary data directory.
  • The release snapshot passes 59 test files / 407 tests, full typecheck, all four independent evidence instruments, and the real-browser smoke.

Multi-AI Terminal v0.2.4(繁體中文)

MAT 現在是 agent-ready 原始碼發行版:你的 coding agent(Claude Code 或 Codex)可以在明確、機器可讀的契約下,將這個 repo 的 checkout 建置、啟動、驗證與停止。作法沿用 multi-ai-chat-desktop 已驗證的模式,並改造成完全不需要 Rust 的通道。

用你的 coding agent 驅動 MAT

  • Skill 隨 repo 提供:.claude/skills/launch-multi-ai-terminal/(Claude Code)與 .agents/skills/launch-multi-ai-terminal/(Codex,含 agents/openai.yaml)。要求 agent 從原始碼啟動 Multi-AI Terminal:它會先稽核宣告的副作用、檢查前置需求、建置、在空閒的 127.0.0.1 埠啟動 server,然後回報 URL,由你自己在瀏覽器開啟。
  • Skill 僅限明確指示(disable-model-invocation: true / allow_implicit_invocation: false):只有你主動要求時 agent 才能使用,開啟 repo 不會隱式觸發。
  • 此通道只用 npm — 前置需求就是 Node.js 20+ 與 npm。不需要 Rust toolchain、不產生安裝包、不下載 release 資產。

機器可讀的契約

  • agent-release.json 宣告進入點、允許/禁止的權限、副作用、runtime 狀態與結束碼;agent-release.schema.json 在 CI 驗證它。
  • 五個生命週期指令,也提供 npm scripts:agent:doctoragent:auditagent:launchagent:statusagent:stop(皆支援 --json)。
  • 啟動前後各跑一次稽核,將實際變更與宣告內容對照記錄。

身分安全的生命週期

  • 啟動時 server 掛在一個 runner process 下,其命令列帶著一次性 token。statusstop 只對「本 repo 可證明是自己啟動」的 process 動作;外來或無法驗證的 PID 一律拒絕,絕不誤殺。
  • 就緒判定是限定在本次啟動 log 區段內的標記([MAT_AGENT] READY url=...)— 先前執行留下的標記無法偽裝新一次啟動已就緒。
  • 所有生命週期紀錄(狀態、log、launch 收據、前後稽核)都放在已被 gitignore 的 .agent-runtime/
  • Server 新增 --port 0 支援(綁定空閒臨時埠並印出 READY 行);agent 通道預設使用,因此不會和桌面 App 或 dev server 撞埠。

界線

  • 生命週期腳本永不安裝/移除主機 toolchain、永不改 PATH 或 shell profile、永不提權、永不讀取 provider 憑證、永不上傳 log 或稽核。
  • Skill 被禁止代替你操作已啟動 server 的 provider 安裝/更新/登入 API — 這些永遠由你自己在瀏覽器完成。
  • 安裝版桌面 App 開啟時請勿同時執行原始碼通道:兩者共用同一資料目錄(MAT_DATA_DIR~/.multi-ai-terminal/)。

驗證

  • 新增跨平台端對端測試,在 Ubuntu 與 Windows CI 走完真實流程 — 啟動 → READY → 提供 UI 與 health → 停止 → 狀態清空(npm run test:agent),並使用臨時資料目錄。
  • 本版快照通過 59 個測試檔 / 407 個測試、完整 typecheck、四個獨立證據儀器,以及真實瀏覽器 smoke。

Multi-AI Terminal v0.2.3

Choose a tag to compare

@github-actions github-actions released this 21 Jul 20:55

Multi-AI Terminal v0.2.3

Sign in to your CLIs without leaving MAT

v0.2.2 could install a CLI for you — and then leave you stranded: the first run died because the CLI was installed but not signed in, and fixing that meant opening a terminal. Provider Setup now drives each CLI's own login flow directly:

  • claude — MAT starts claude auth login, shows you the sign-in link, and you paste the confirmation code from the browser back into MAT. MAT forwards it to the CLI and then verifies with claude auth status before reporting success.
  • codex — MAT starts the device flow, shows the link and the one-time code, and detects completion on its own once you approve in the browser. Note: codex discards its existing login the moment this flow starts; MAT warns you before it begins.
  • grok — the same device-flow ceremony via grok login --device-code.

Safety was the design driver. MAT only runs fixed, server-side login recipes on your explicit click; the sign-in URL is accepted only when it is https on that provider's own domains; your pasted code goes only to the CLI's standard input, never a command line; and MAT never reads, writes, or copies the CLI's credential store — the CLI itself performs the OAuth exchange, exactly as if you had run it in a terminal. Login URLs, codes, and CLI output are never written to diagnostics.

Update an outdated CLI with one click

The other way a "working" setup fails: the CLI is too old to expose a newer model, and runs die with a confusing error. When a CLI is detected, Provider Setup now offers Update CLI — claude runs its own claude update (which respects how it was installed), npm-installed CLIs reinstall @latest, and Antigravity upgrades through winget on Windows. The result reports the freshly detected version.

Also in this release

  • Sign-in outcomes are first-class translated messages in both English and 繁體中文; the CLI's own status line (e.g. "Logged in using ChatGPT") is always shown verbatim.
  • The whole sign-in ceremony is capped below the device-code expiry, a stuck login can be cancelled, and an abandoned CLI process is always cleaned up.
  • 32 new tests drive the real recipes end to end against scripted fake CLIs: trusted-host rejection, plain-http rejection, kill-on-no-URL, timeout, the single-session lock, and output redaction.

Multi-AI Terminal v0.2.3(繁體中文)

不用離開 MAT 就能登入 CLI

v0.2.2 能幫你安裝 CLI——然後把你留在原地:第一次執行就因為「已安裝但未登入」而失敗,而解法卻要你自己開終端機。現在「服務提供者設定」可以直接驅動每個 CLI 自己的登入流程:

  • claude — MAT 啟動 claude auth login,顯示登入連結;你在瀏覽器授權後,把確認代碼貼回 MAT。MAT 轉交給 CLI,並先以 claude auth status 驗證成功才回報完成。
  • codex — MAT 啟動裝置授權流程,顯示連結與一次性代碼;你在瀏覽器核准後,MAT 會自動偵測完成。**注意:**codex 在這個流程一開始就會讓現有登入立即失效,MAT 會在開始前先警告你。
  • grok — 透過 grok login --device-code 走同樣的裝置授權流程。

安全性是這個設計的核心。MAT 只在你明確點擊時執行固定的伺服器端登入配方;登入連結必須是該服務自家網域的 https 才會顯示;你貼上的代碼只會送進 CLI 的標準輸入,絕不會進入任何命令列;MAT 也絕不讀取、寫入或複製 CLI 的憑證檔——OAuth 交換完全由 CLI 自己完成,跟你在終端機執行一模一樣。登入連結、代碼與 CLI 輸出永遠不會寫入診斷紀錄。

一鍵更新過舊的 CLI

另一種「看似正常卻會失敗」的情況:CLI 版本太舊、叫不出較新的模型,執行時只留下難懂的錯誤。現在只要偵測到 CLI,「服務提供者設定」就會提供更新 CLI——claude 使用它自己的 claude update(會尊重原本的安裝方式)、npm 安裝的 CLI 重新安裝 @latest、Windows 上的 Antigravity 透過 winget 升級,完成後回報重新偵測到的版本。

本版其他改進

  • 登入結果訊息在英文與繁體中文都是完整翻譯的正式文案;CLI 自己的狀態文字(例如「Logged in using ChatGPT」)一律原文呈現。
  • 整個登入流程的時限低於裝置代碼的有效期限;卡住的登入可以取消,被放棄的 CLI 程序一定會被清理。
  • 新增 32 個測試以腳本化的假 CLI 完整驅動真實配方:不信任網域拒絕、純 http 拒絕、無連結時終止程序、逾時、單一登入鎖,以及輸出遮蔽。

Multi-AI Terminal v0.2.2

Choose a tag to compare

@github-actions github-actions released this 21 Jul 08:36

Multi-AI Terminal v0.2.2 — Windows Recovery Follow-Through

v0.2.2 closes the three field failures reported against v0.2.1 on Windows: CLIs that were installed but still read as “not detected”, a native folder Browse button that silently did nothing, and English text remaining in the Traditional Chinese interface. It is a focused hotfix on the v0.2.1 line and changes no workflow, evidence, or security behavior.

Windows provider detection actually completes

  • Version probes now settle when the CLI process exits (after a short output flush) instead of waiting for its stdio streams to close. A background helper that inherits the CLI's stdout — common in updater-style launchers — could previously hold those streams open long past exit, turning a healthy CLI into a timeout at any timeout value, and Retry detection could never succeed. The probe also releases its pipe ends so nothing lingers.
  • Discovery now searches the official Codex installer location %LOCALAPPDATA%\Programs\OpenAI\Codex\bin and %USERPROFILE%\.local\bin in addition to the existing well-known directories.
  • A probe timeout now says how long MAT waited and that retrying detection is safe; a silent nonzero exit reports its exit code.

Native folder Browse works again

  • The desktop shell serves the UI from a random loopback port, which Tauri v2 treats as a remote origin. The dialog capability now authorizes that actual origin (http://127.0.0.1:*/*, window main, dialog:allow-open only), so the native folder picker opens again. A new integration test pins the plugin registration and this minimal grant.
  • If the picker still fails, the workspace form now preserves the underlying dialog error (bounded) instead of collapsing everything into a generic message, so field reports can say why.

Complete Traditional Chinese chrome

  • Built-in workflow, stage, and role names, run/node statuses, effort and permission levels, event kinds, health findings, run controls, token/exit labels, and relative times now display in Traditional Chinese, including inside the workflow editor, agent chips, and workspace cards.
  • Canonical server guidance is translated only on an exact match: missing-CLI, probe-timeout, sign-in expired / not signed in with their Fix: command lines, the refresh-token race explanation, and evidence-integrity messages. Task text, custom workflow names, transcripts, report/patch/tool evidence, and arbitrary CLI errors stay byte-for-byte source text.
  • Workspace cards carry additive workflowId/workflowBuiltin provenance in the last-run summary, so a custom workflow that merely shares a built-in's name is never mistranslated. Existing saved data remains valid.
  • The real-browser smoke now creates a workspace entirely in Traditional Chinese mode and fails if built-in workflow names leak English.

Release evidence

  • 50 test files / 348 tests, full typecheck, production build, and synchronized v0.2.2 manifests pass.
  • All four independent evidence instruments and the full real-Chromium smoke pass, including the new Traditional Chinese workspace flow.
  • Linux and Windows CI pass; release assets are built for Linux x64, Windows x64, macOS x64, and macOS arm64.

Compatibility: shared schemas evolve additively (the new last-run provenance fields are optional), saved data remains supported, and provider adapters remain headless-only. Node.js 20 or newer is required.


Multi-AI Terminal v0.2.2 — Windows 復原收尾

v0.2.2 收掉 v0.2.1 在 Windows 上回報的三個實地問題:已安裝的 CLI 仍被判定「未偵測到」、原生資料夾「瀏覽」按鈕毫無反應,以及繁體中文介面殘留英文。這是 v0.2.1 系列的聚焦修正版,不更動任何 workflow、證據或安全行為。

Windows 偵測真正能完成

  • 版本檢查改為在 CLI 程序結束時(短暫等待輸出後)即判定結果,不再等待 stdio 串流關閉。更新器型啟動器常見的背景輔助程序會繼承 CLI 的 stdout,把串流一直握著,導致健康的 CLI 在任何逾時設定下都被判為逾時,「重新偵測」也永遠不會成功。檢查完成後也會釋放管線,不留殘留。
  • 偵測路徑新增 Codex 官方安裝位置 %LOCALAPPDATA%\Programs\OpenAI\Codex\bin%USERPROFILE%\.local\bin,其餘既有目錄不變。
  • 版本檢查逾時會說明等了多久、可以直接再重新偵測;無輸出的非零結束則會顯示結束代碼。

原生資料夾瀏覽恢復可用

  • 桌面外殼是從隨機 loopback 連接埠載入介面,Tauri v2 將其視為遠端來源。對話框能力設定現在授權這個實際來源(http://127.0.0.1:*/*,僅 main 視窗、僅 dialog:allow-open),原生資料夾選擇器因此恢復運作。新增的整合測試固定住外掛註冊與這組最小授權。
  • 若選擇器仍失敗,工作區表單會保留(有長度上限的)底層錯誤原因,不再一律折成籠統訊息,方便回報時說清楚原因。

繁體中文介面補完

  • 內建 workflow/階段/角色名稱、執行與節點狀態、推理強度與權限等級、事件類型、健康狀態項目、執行控制、token/結束代碼標籤與相對時間現在都以繁中顯示,包括 workflow 編輯器、代理標籤與工作區卡片內。
  • 伺服器的固定指引只在完全比對時翻譯:找不到 CLI、版本檢查逾時、登入過期/尚未登入及其 Fix: 指令行、refresh token 競爭說明、證據完整性訊息。任務文字、自訂 workflow 名稱、逐字稿、報告/patch/工具證據與任意 CLI 錯誤維持原文,逐位元組不變。
  • 工作區卡片的上次執行摘要新增可選的 workflowIdworkflowBuiltin 來源欄位;名稱恰好與內建相同的自訂 workflow 不會被誤翻。既有儲存資料完全相容。
  • 真實瀏覽器 smoke 新增全程繁中的工作區建立流程,內建 workflow 名稱若漏出英文即失敗。

版本證據

  • 50 個測試檔/348 個測試、完整 typecheck、production build 與同步的 v0.2.2 版本清單全數通過。
  • 四個獨立證據 instruments 與完整真實 Chromium smoke 全數通過,包含新增的繁中工作區流程。
  • Linux 與 Windows CI 通過;發行資產涵蓋 Linux x64、Windows x64、macOS x64 與 macOS arm64。

相容性:shared schemas 僅以可選欄位擴充(上次執行來源欄位為 optional)、既有儲存資料持續支援、provider adapters 維持 headless-only。需 Node.js 20 以上。

Multi-AI Terminal v0.2.1

Choose a tag to compare

@github-actions github-actions released this 21 Jul 06:49

Multi-AI Terminal v0.2.1 — Provider Recovery & Localized UI

v0.2.1 turns a field debug bundle into a focused reliability and usability release. It fixes false “not detected” results after restarting MAT, makes long provider installs explain themselves, and adds a clearer bilingual interface with three persistent themes—without changing MAT's deliberately headless, no-PTY architecture.

Reliable provider recovery

  • Gives Windows CLI version checks 15 seconds to cold-start (8 seconds elsewhere) and caches transient failures for only 2 seconds instead of 10 minutes.
  • Adds an explicit cache-bypassing Retry detection action in provider Setup and a global Recheck providers action in Health.
  • Extends the Agy/winget installation window to 10 minutes, shows elapsed time and wait guidance, automatically rechecks detection, and keeps a clear success or restart-once message visible afterward.
  • Keeps installation explicit and recipe-only: user input never reaches a command line, and environment-derived values remain redacted from diagnostics and bundles.

Clearer bilingual workflow

  • Adds persisted System / English / Traditional Chinese interface language choices. Raw CLI errors, model ids, and user-authored workflow data remain unmodified so technical evidence stays exact.
  • Places visible text beside navigation icons, so Projects, Launch, settings, and activity controls are understandable without guessing their symbols.
  • Strengthens Conversation attribution with a prominent node label plus provider/model, stage, attempt, source sequence, timestamp, and provider-color identity.
  • Localizes setup, Health, workspace, workflow, run, Conversation, and Timeline controls, including actionable provider and verification guidance.

Three persistent themes

  • Adds Midnight, Daylight, and violet/gold/teal Aurora themes.
  • Persists language and theme choices across restarts and applies them before React mounts to avoid a startup flash.
  • Moves the interface onto semantic surface/text tokens and preserves readable success, warning, and error contrast in Daylight.

Release evidence

  • 48 test files / 328 tests, full typecheck, production build, and synchronized v0.2.1 manifests pass.
  • All four independent evidence instruments and the full real-Chromium smoke pass, including visible navigation labels, Traditional Chinese, all three themes, persistence, live/replay evidence, steering, and debug export.
  • Linux and Windows CI pass; release assets are built for Linux x64, Windows x64, macOS x64, and macOS arm64.

Compatibility: existing shared schemas remain additive, saved data remains supported, and provider adapters remain headless-only. Node.js 20 or newer is required.


Multi-AI Terminal v0.2.1 — Provider 復原與繁中介面

v0.2.1 將實際 debug bundle 的證據落成一個聚焦可靠性與易用性的版本:修正重開 MAT 後 provider 被誤判為「未偵測到」、讓耗時安裝清楚交代進度與結果,並加入更直覺的雙語介面與三套持久化主題,同時維持 MAT 刻意設計的 headless、無 PTY 架構。

可靠的 provider 復原

  • Windows 的 CLI 冷啟動版本檢查延長為 15 秒(其他平台 8 秒),暫時性失敗只快取 2 秒,不再誤判後卡住 10 分鐘。
  • Provider 設定新增會略過快取的「重新偵測」,Health 也提供全域「重新偵測 providers」。
  • Agy/winget 安裝時限延長到 10 分鐘;介面會顯示經過時間與等待說明,完成後自動重新偵測,並持續顯示成功或只需重開一次的明確指引。
  • 安裝仍只能由使用者明確點擊固定 recipe;使用者輸入不會進入命令列,環境來源的值也會繼續在 diagnostics 與 bundles 中遮蔽。

更清楚的雙語工作流程

  • 新增持久化的「跟隨系統/English/繁體中文」介面語言。CLI 原始錯誤、model id 與使用者建立的 workflow 資料維持原文,確保技術證據不失真。
  • 導覽 icon 旁加入可見文字,Projects、Launch、設定欄與活動面板不再需要猜圖示用途。
  • Conversation 卡片加強 node 名稱,並清楚列出 provider/model、stage、attempt、來源序號、時間與 provider 色彩識別。
  • 設定、Health、workspace、workflow、run、Conversation 與 Timeline 控制皆支援繁中,包括可直接採取行動的 provider 與驗證指引。

三套持久化主題

  • 新增 午夜深色日光淺色與紫/金/青的 極光三色
  • 語言與主題會跨重開保存,並在 React 掛載前套用,避免啟動時閃爍。
  • 介面改用語意化的表面與文字色彩;Daylight 下的成功、警告與錯誤狀態仍保持清楚可讀。

出貨證據

  • 48 個測試檔/328 項測試、完整 typecheck、production build 與 v0.2.1 六檔版本同步全數通過。
  • 四支獨立 evidence 儀器與完整真 Chromium smoke 全數通過,涵蓋可見導覽文字、繁體中文、三套主題與偏好保存,以及 live/replay evidence、steering 和 debug export。
  • Linux 與 Windows CI 通過;發行產物涵蓋 Linux x64、Windows x64、macOS x64 與 macOS arm64。

相容性:shared schemas 仍只做增量演進,既有儲存資料維持支援,provider adapters 仍為純 headless。需要 Node.js 20 或更新版本。