2.5 KiB
| @aoagents/ao-core | @aoagents/ao-cli | @aoagents/ao | @aoagents/ao-plugin-runtime-process | @aoagents/ao-plugin-runtime-tmux | @aoagents/ao-plugin-agent-claude-code | @aoagents/ao-plugin-agent-codex | @aoagents/ao-plugin-agent-aider | @aoagents/ao-plugin-agent-opencode | @aoagents/ao-plugin-workspace-worktree | @aoagents/ao-plugin-workspace-clone | @aoagents/ao-plugin-tracker-github | @aoagents/ao-plugin-tracker-linear | @aoagents/ao-plugin-scm-github | @aoagents/ao-plugin-notifier-desktop | @aoagents/ao-plugin-notifier-slack | @aoagents/ao-plugin-notifier-webhook | @aoagents/ao-plugin-notifier-composio | @aoagents/ao-plugin-terminal-iterm2 | @aoagents/ao-plugin-terminal-web | @aoagents/ao-web |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| minor | minor | minor | minor | minor | minor | minor | minor | minor | minor | minor | minor | minor | minor | minor | minor | minor | minor | minor | minor | minor |
feat: native Windows support
AO now runs natively on Windows. The default runtime on Windows is process
(ConPTY via node-pty + named pipes — no tmux, no WSL); the dashboard,
agents (claude-code, codex, kimicode, aider, opencode, cursor), ao doctor,
and ao update all work out of the box. Each session gets a small detached
pty-host helper that wraps a ConPTY behind \\.\pipe\ao-pty-<sessionId>,
registered so ao stop can reach it.
A new cross-platform abstraction layer (packages/core/src/platform.ts)
centralises every platform branch behind helpers like isWindows(),
getDefaultRuntime(), getShell(), killProcessTree(), findPidByPort(),
and getEnvDefaults(). Path comparison uses pathsEqual /
canonicalCompareKey to handle NTFS case-insensitivity. PATH wrappers for
agent plugins (gh, git) ship as .cjs + .cmd shims on Windows;
script-runner runs .ps1 siblings of .sh scripts via PowerShell. New
ao-doctor.ps1 / ao-update.ps1 shipped.
ao open is now cross-platform: it sources sessions from sm.list()
instead of tmux list-sessions (so runtime-process sessions on Windows
appear), and the open action branches per OS — open-iterm-tab stays the
macOS path, native handling on Windows and Linux.
Behaviour on macOS and Linux is unchanged. Every Windows path is gated
behind isWindows(); runtime-tmux and the bash hook flows are untouched.
See docs/CROSS_PLATFORM.md for the developer reference (helper inventory,
EPERM-vs-ESRCH gotcha, PowerShell-vs-bash differences, pre-merge checklist).
The Windows runtime architecture (pty-host, pipe protocol, registry, sweep,
mux WS Windows branch) is documented in docs/ARCHITECTURE.md.