# @aoagents/ao-plugin-scm-github ## 0.9.1 ### Patch Changes - 2d4c457: Fix canary nightly to include all publishable packages and fix Next.js import.meta.url build path issue - Updated dependencies [2d4c457] - @aoagents/ao-core@0.9.1 ## 0.9.0 ### Patch Changes - Updated dependencies [73bed33] - Updated dependencies [a610601] - Updated dependencies [7d9b862] - Updated dependencies [6d48022] - Updated dependencies [fcedb25] - Updated dependencies [94981dc] - Updated dependencies [2980570] - Updated dependencies [d5d0f07] - @aoagents/ao-core@0.9.0 ## 0.8.0 ### Patch Changes - Updated dependencies - @aoagents/ao-core@0.8.0 ## 0.7.0 ### Minor Changes - 0f5ae0b: 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-`, 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`. ### Patch Changes - Updated dependencies [0f5ae0b] - Updated dependencies [fe33bb7] - Updated dependencies [7c46dc9] - @aoagents/ao-core@0.7.0 ## 0.6.0 ### Patch Changes - Updated dependencies - Updated dependencies [40aeb78] - Updated dependencies - Updated dependencies - @aoagents/ao-core@0.6.0 ## 0.5.0 ### Patch Changes - Updated dependencies [dd07b6b] - @aoagents/ao-core@0.5.0 ## 0.4.0 ### Patch Changes - c8af50f: Make `ProjectConfig.repo` optional to support projects without a configured remote. **Migration:** `ProjectConfig.repo` is now `string | undefined` instead of `string`. External plugins that access `project.repo` directly (e.g. `project.repo.split("/")`) must add a null check first. Use a guard like `if (!project.repo) return null;` or a helper that throws with a descriptive error. - a8bc746: scm-github: cache 4 more hot-path reads (CI, mergeability, pending comments, detectPR) Completes the bulk of the AO-side caching work alongside the prior PR view cache. Per-method TTLs match the approved policy: 5s max for decision-influencing fields. - `getCIChecks` (`gh pr checks`): 5s TTL - `getMergeability` (composite `pr view` + CI + state): 5s TTL on the composite result - `getPendingComments` (`gh api graphql` review threads): 5s TTL — ETag doesn't help on GraphQL per Experiment 2 - `detectPR` (`gh pr list --head BRANCH`): 5s TTL, **positive-only** — `[]` results are never cached so a freshly created PR surfaces on the next poll. Branch-keyed entry is invalidated by `mergePR`/`closePR` alongside the number-keyed entries. Combined with the prior PR view cache, this covers the top 6 AO-side gh operation categories that accounted for ~85% of calls in tier-5 bench traces. Tests: 85 existing + 9 new cache tests, all 162 passing. - a8bc746: scm-github: cache 5 `gh pr view` callsites with per-method TTLs The lifecycle worker repeatedly polls each PR for state, summary, reviews, and review decision. Trace data showed `gh pr view` was the single largest AO-side endpoint at 1,280 calls per 5-session tier-5 run with >97% duplicate rate (e.g. PR #184 polled 86× for `--json state` alone in 11.5 minutes). Adds an in-process per-instance cache inside `createGitHubSCM()`, keyed by `${owner}/${repo}#${prKey}:${method}` so different field-sets stay isolated. Per-method TTLs balance reduction against staleness on decision-influencing fields: - `resolvePR`: 60s (identity metadata only — number, url, title, branch refs, isDraft) - `getPRState`: 5s - `getPRSummary`: 5s - `getReviews`: 5s - `getReviewDecision`: 5s `assignPRToCurrentUser`, `mergePR`, and `closePR` each invalidate the entire PR cache for that PR after the mutation, so AO never sees stale state from its own writes. Failures are not cached. `getCIChecksFromStatusRollup` and `getMergeability` are intentionally NOT cached here — those need ETag-based revalidation, not blind TTL, and will land in a follow-up change. Expected reduction: ~1,165 of ~1,280 `gh pr view` calls per tier-5 run. Tests: 73 existing + 12 new cache tests, all passing. - Updated dependencies [2306078] - Updated dependencies [faaddb1] - Updated dependencies [f330a1e] - Updated dependencies [a862327] - Updated dependencies [331f1ce] - Updated dependencies [703d584] - Updated dependencies [f674422] - Updated dependencies [62353eb] - Updated dependencies [bd36c7b] - Updated dependencies [e7ad928] - Updated dependencies [ca8c4cc] - Updated dependencies [7b82374] - Updated dependencies [4701122] - Updated dependencies [c8af50f] - Updated dependencies [bcdda4b] - Updated dependencies [1cbf657] - Updated dependencies [c447c7c] - Updated dependencies [a45eb32] - Updated dependencies [7072143] - Updated dependencies [ed2dcea] - @aoagents/ao-core@0.4.0 ## 0.2.0 ### Patch Changes - Updated dependencies [3a650b0] - @composio/ao-core@0.2.0