feat(cloud-coding-agents): Eliza Cloud as provider for CLI coding agents#1757
feat(cloud-coding-agents): Eliza Cloud as provider for CLI coding agents#1757HaruHunab1320 merged 9 commits intodevelopfrom
Conversation
Adds Eliza Cloud as an LLM provider for the CLI coding agents (Claude Code, Codex, Aider) and ships the supporting milady-side plumbing. Eliza Cloud does NOT proxy Gemini, so cloud mode leaves Gemini's auth state unchanged. ## Auth readiness - `packages/agent/src/runtime/agent-orchestrator-compat.ts` — added `readMiladyEnvKey` and `readMiladyCloudApiKey` helpers, and a `cloudReady` branch that treats Claude / Codex as fully auth-ready when `PARALLAX_LLM_PROVIDER=cloud` and a `cloud.apiKey` is paired in `milady.json`. Plumbed through the framework availability surface so the settings UI reflects it. - `packages/agent/src/auth/credentials.ts` — extended the Claude Code OAuth credential reader to also accept the `.credentials.json` blob format and the macOS Keychain entry `"Claude Code-credentials"` (current macOS installs). Kept the TOS-respecting policy of NOT exporting the Claude subscription token as `ANTHROPIC_API_KEY` to the main runtime — the token is still only usable via the Claude Code CLI spawned by the task-agent orchestrator. ## API routes - `packages/agent/src/api/coding-agent-bridge.ts` — surfaces adapter `auth` status through the framework list, and adds a new `POST /api/coding-agents/auth/:agent` route that triggers the CLI auth flow via `coding-agent-adapters`. - `packages/agent/src/api/server.ts` — registers the trigger-auth route in the fallback handler alongside the existing agent list. ## Settings UI - `packages/app-core/src/components/coding/CodingAgentSettingsSection.tsx` — rewritten to surface the Eliza Cloud provider option, let the user pair a cloud API key, and reflect per-CLI auth readiness under both subscription-mode and cloud-mode. - `packages/app-core/src/api/client-types-cloud.ts` — client types for the new cloud auth state fields. ## xterm theme - `packages/app-core/src/components/coding/PtyTerminalPane.tsx` — added a full 16-color ANSI palette (Tokyo Night Storm) so Codex's dim brightBlack commentary is readable against the dark terminal background. Previously the default xterm palette left Codex's reasoning text almost invisible. ## Plumbing - `@elizaos/plugin-agent-orchestrator` bumped to `0.6.1` in both the root and `packages/agent/package.json`. The plugin ships the matching cloud provider integration + reliability fixes (watchdog `isSessionLoading` gate, validator filesystem evidence, 2nd-person idle nudge prompt, Codex WS-disable via custom provider). See plugin PR #27 for details. - Submodule pointer for `plugins/plugin-agent-orchestrator` bumped to `ad3bf3c` — the alpha tip with the workspace-dep regression fix on top of #27. - `.gitignore` — excludes `scripts/codex-sniff.ts`, the local sniffing proxy used to debug the Codex ↔ Vercel AI Gateway request shape. Useful developer tool, not product code. ## Known pre-existing issues unchanged by this PR - Typecheck: 11 pre-existing `tsc --noEmit` errors on develop, same 11 on this branch. No net-new errors. - Biome: pre-existing ~44 errors / ~46 warnings in the touched `packages/agent/src/**` files on develop, reduced to ~37 / ~44 on this branch via `biome check --write` auto-fixes to formatting only — no behavior changes. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
The review is complete. Here's the summary: PR #1757 — feat(cloud-coding-agents): Eliza Cloud as provider for CLI coding agents Decision: REQUEST CHANGES Classification: Feature — adds Eliza Cloud as an LLM provider for CLI coding agents (Claude Code, Codex, Aider), extends OAuth credential reading, and rewrites the coding agent settings UI. Consistent with author's claim. Scope: Needs deep review (touches runtime auth, credentials, API routes, and UI — 726 additions, new contributor). Universal invariants: All intact. Critical bug (blocks merge):
const importedClaudeAuth =
provider === "anthropic-subscription"
? (importClaudeCodeOAuthToken() ?? readConfiguredAnthropicSetupToken()) // Promise, never null
: null;A Secondary required changes:
Noted (non-blocking): Codex-through-cloud is correctly flagged as blocked upstream on elizaOS/cloud#427+#428. The UI is wired but won't function until those cloud PRs deploy — doesn't break currently-working flows. |
… status, plug settings leaks - getSubscriptionStatus() stays sync and reads the Claude Code OAuth blob directly. Fixes the Promise-truthy regression where every user appeared to have a valid Anthropic subscription configured. - CodingAgentSettingsSection: filter _-prefixed synthetic keys from the auto-save envPatch so _CLOUD_API_KEY no longer leaks from config.cloud.apiKey into config.env on every keystroke. - CodingAgentSettingsSection: track the auth-completion poll in a ref and clear it on unmount / new auth flow to stop the setInterval network-request leak after the settings panel closes. - packages/agent: declare missing @miladyai/coding-agent-adapters workspace dependency. - deploy/cloud-agent-template: pin Eliza dependency versions to satisfy the release contract check. - Add regression tests for getSubscriptionStatus covering the sync signature, missing-blob, fresh-blob, expired-blob, setup-token fallback, and codex negative cases. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
The review is complete. Here is the full verdict — please post it to the PR when ready:
1. Classification (derived): feature — consistent with author's claim. Touches auth credential handling, new API endpoint, new third-party dependency, settings UI rewrite (+439/−91 LOC), plugin version bumps, and an unexplained 2. Rubric (derived): New dependency vetting, auth/credential handling correctness, API endpoint security, React state management correctness, and soundness of the partially-blocked Codex-through-cloud path. 3. Scope verdict: needs deep review 4. Universal invariants: all intact — NODE_PATH in all three sites, patch-deps intact, Electrobun startup guards intact, milady namespace preserved, no hardcoded port numbers, no top-level plugin imports, no access control file touches. 5. Judgment:
6. PR-type-specific checks:
7. Security: concerns
8. Decision: REQUEST CHANGES Blocking items before merge:
@greptileai please perform a deep review — this PR was flagged as needing deep analysis by agent-review. |
- CodingAgentSettingsSection: move updateConfig out of the setPrefs state updater into a debounced useEffect (400ms). React state updaters must be pure; the old path fired twice per keystroke in Strict Mode and persisted 40+ partial-key snapshots while a user typed an API key. The debounce coalesces rapid edits into a single POST so a mid-flight failure can no longer leave milady.json with a partial credential. - coding-agent-bridge: drop the unused duplicate of the POST /api/coding-agents/auth/:agent handler. The canonical copy lives in server.ts's private handleCodingAgentsFallback — the bridge export was never wired in, so keeping both would silently drift. - agent-orchestrator-compat: stop treating Codex as auth-ready under cloudReady. elizaOS/cloud#427 (responses-stream reconciliation) has not deployed, so Codex-through-cloud would fail at runtime with no explanation. Restore once cloud#427/#428 ship. - credentials: call readClaudeCodeOAuthBlob() once per provider row and destructure, instead of hitting it twice (the second call shelled out to `security` on macOS on every status poll). deploy/cloud-agent-template/package.json pin is left in place: the release contract check requires exact versions there (the template is published as a standalone deploy artifact, not a workspace member, so `workspace:*` won't resolve against any registry). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Greptile SummaryThis PR adds Eliza Cloud as an LLM provider for CLI coding agents (Claude Code, Codex, Aider), wires up a new The two blockers flagged in the previous review round ( Key issues remaining:
Greptile verdict: REQUEST CHANGES Confidence Score: 3/5Not safe to merge as-is: the cloud-mode + Gemini-only scenario produces an unrecoverable loading state in the settings UI. The two previously-flagged blockers (HTTP-200-on-error, double blob read) are fixed and the new sanitizer/normalizer modules are correct. However, a new P1 regression exists: when PARALLAX_LLM_PROVIDER=cloud is selected and Gemini is the only installed CLI, availableAgents becomes empty while installedAgents.length > 0, bypassing the "no supported CLIs" guard and leaving the component stuck on the loading spinner indefinitely. The auth error silence (P2) and redundant file reads (P2) are follow-up quality items. One targeted fix to the availableAgents / "no CLIs" guard brings this to merge-ready. packages/app-core/src/components/coding/CodingAgentSettingsSection.tsx — stuck loading state (P1) and silent auth failure (P2)
|
| Filename | Overview |
|---|---|
| packages/app-core/src/components/coding/CodingAgentSettingsSection.tsx | Major rewrite (+439/−91) adding cloud provider option, per-CLI auth readiness indicators, and debounced auto-save; contains a P1 stuck-loading bug when cloud mode is active and only Gemini CLI is installed, and a P2 silent-failure on auth error path. |
| packages/agent/src/runtime/agent-orchestrator-compat.ts | Adds readMiladyEnvKey and readMiladyCloudApiKey helpers and wires cloudReady into Claude's auth-readiness check; logic is correct but introduces three additional synchronous milady.json reads per computeFrameworkState call (P2 efficiency concern). |
| packages/agent/src/auth/credentials.ts | Extends readClaudeCodeOAuthBlob to cover both .credentials.json and macOS Keychain; the previously flagged double-read TOCTOU is fixed (single claudeBlob capture per getSubscriptionStatus map iteration). |
| packages/agent/src/api/server.ts | Registers POST /api/coding-agents/auth/:agent in the fallback handler with a 15 s timeout and correct 4xx/504 status codes; the previously flagged HTTP-200-on-error bug is fixed. |
| packages/agent/src/api/coding-agents-auth-sanitize.ts | New module that whitelists four fields and rejects non-http(s) URLs from adapter triggerAuth() responses; well-tested and correctly prevents javascript: / file: URL injection. |
| packages/agent/src/api/coding-agents-preflight-normalize.ts | Pins the auth field shape from the adapter preflight at the HTTP boundary; correctly coerces unknown statuses to "unknown" and drops unexpected fields. |
| packages/app-core/src/components/coding/PtyTerminalPane.tsx | Adds full 16-color ANSI palette (Tokyo Night Storm) to fix illegible brightBlack commentary rows in Codex; straightforward and low-risk. |
| packages/app-core/src/api/client-types-cloud.ts | No significant changes visible in this file from the diff context; types appear consistent with the new auth fields surfaced by the bridge. |
Sequence Diagram
sequenceDiagram
participant UI as CodingAgentSettingsSection
participant API as API Server (server.ts)
participant Adapter as coding-agent-adapters
participant Sanitizer as coding-agents-auth-sanitize
participant Preflight as /api/coding-agents/preflight
participant Compat as agent-orchestrator-compat
participant Config as milady.json
UI->>API: POST /api/coding-agents/auth/:agent
API->>Adapter: createAdapter(agentType)
API->>Adapter: adapter.triggerAuth() [15s timeout]
Adapter-->>API: { launched, url, deviceCode, instructions }
API->>Sanitizer: sanitizeAuthResult(triggered)
Note over Sanitizer: Whitelist 4 fields<br/>Reject non-http(s) URLs
Sanitizer-->>API: SanitizedAuthResult
API-->>UI: 200 { launched, url, deviceCode, instructions }
UI->>UI: setInterval poll every 3s (max 2min)
loop Poll for auth completion
UI->>Preflight: GET /api/coding-agents/preflight
Preflight->>Compat: computeFrameworkState()
Compat->>Config: readJsonFile(milady.json) x5
Note over Compat: readConfiguredSubscriptionProvider<br/>readMiladyEnvKey(PARALLAX_LLM_PROVIDER)<br/>readMiladyCloudApiKey<br/>hasClaudeSubscriptionAuth<br/>readMiladyEnvKey(PARALLAX_DEFAULT_AGENT_TYPE)
Config-->>Compat: { env.PARALLAX_LLM_PROVIDER, cloud.apiKey, ... }
Compat->>Compat: cloudReady = llmProvider==cloud && apiKey present
Compat->>Compat: claudeReady = cloudReady OR subscriptionAuth OR apiKey
Compat-->>Preflight: FrameworkState
Preflight-->>UI: AgentPreflightResult[]
UI->>UI: Check auth.status === authenticated
end
Reviews (4): Last reviewed commit: "fix(cloud-coding-agents): delete dead co..." | Re-trigger Greptile
|
|
The Decision: REQUEST CHANGES (preliminary, awaiting Greptile) Five substantive required changes:
What's good: The |
…aude - server.ts auth route: return 4xx when triggerAuth() yields no result (HTTP 200 was causing the client's res.ok check to pass and kick off a spurious 2-minute polling loop). Add a 15s server-side timeout so hanging CLI auth subprocesses in headless/ Docker environments don't pin an async indefinitely. Whitelist response fields (launched, url, deviceCode, instructions) before forwarding to the browser so the adapter's untyped response shape can't leak tokens or internal secrets in unexpected fields. Stop echoing raw adapter error strings to the client. - credentials.ts: treat a parseable Claude Code OAuth blob with null expiresAt as valid. Older `.credentials.json` payloads omit the field entirely — the previous check reported them as `valid: false`, which would have prompted re-auth on users with a working Claude Code install. The presence of an accessToken is itself evidence of authentication; the runtime refreshes via the refresh token on first use. - Add regression test for the null-expiresAt legacy blob format. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
I have enough information for a complete review. Let me write it up.
PR #1757 — feat(cloud-coding-agents): Eliza Cloud as provider for CLI coding agents1. Classification (derived): feature — consistent with author's claim. The diff confirms: new LLM provider routing path, auth credential reader refactor, new API route, settings UI rewrite, and plugin version bump. 2. Rubric (derived): Auth credential correctness and security (new route + credential reader refactor), new npm dependency supply chain, settings UI i18n conventions, and API route sanitization completeness are the load-bearing axes for this PR. 3. Scope verdict: needs deep review — new auth route touching credential flows, new npm dependency ( 4. Universal invariants: all intact — 5. Judgment:
6. PR-type-specific checks (feature + auth route + UI):
7. Security: concerns (non-critical)
8. Decision: REQUEST CHANGES Blocking asks:
Non-blocking asks (should fix before merge, won't hold): @greptileai please perform a deep review — this PR was flagged as needing deep analysis by agent-review. |
…tests - server.ts auth route: extract response sanitizer into `coding-agents-auth-sanitize.ts` and reject `url` values that don't parse as `http:` or `https:`. Defense in depth against a malicious/compromised adapter smuggling `javascript:`, `data:`, or `file:` URLs through an <a href>. React's built-in sanitizer also blocks these, but explicit server-side validation is stronger and keeps the UI layer honest. - Add coding-agents-auth-sanitize.test.ts covering whitelist enforcement (accessToken / refreshToken / apiKey dropped), scheme acceptance (http, https), scheme rejection (javascript, data, file, malformed), and null/non-object input handling. - CodingAgentSettingsSection: route new user-facing strings through t() to match the rest of the file — LLM Provider label and options, API-key field labels and descriptions, cloud-pair status, per-agent Authenticate/Authenticating button labels, sign-in link, device-code line, Retry button. - CLAUDE.md: document that @elizaos/plugin-agent-orchestrator is pinned to an exact published version (0.6.1) and that `bun run setup:upstreams` is required to develop against a local checkout of the plugin. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ht auth shape - CodingAgentSettingsSection: add `.catch` to the debounced updateConfig call so a failed POST surfaces an inline error banner instead of silently dropping the user's typed API key. Restores the error-feedback surface SaveFooter used to own — the previous fire-and-forget would leave `prefs` populated with a key that was never persisted, so a restart would lose it. - Add `coding-agents-preflight-normalize.ts` that validates the adapter's `auth` field at the HTTP boundary. Previously the server forwarded `raw.auth as Record<string, unknown>` while the client typed it as a specific 4-field struct; a shape drift in the adapter would silently break the UI's `needsAuth` check and the Authenticate button would never render. Coerces unknown statuses to "unknown" and drops any field the adapter might smuggle in beyond the whitelist (`status`, `method`, `detail`, `loginHint`). - Wire the normalizer into both `handleCodingAgentsFallback` copies (coding-agent-bridge.ts + server.ts) and share the type via import. - 7 regression tests for the normalizer covering null input, status coercion, field whitelisting, and non-string handling. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
The review is complete. Here is the full structured verdict:
PR #1757 — Review1. Classification (derived): Feature — consistent with author's claim. 2. Rubric (derived): Security of the new process-spawning route, supply chain risk on 3. Scope verdict: Needs deep review — new process-spawning API route via a package owned by a probationary contributor, credential-reading refactor, 439-line UI rewrite. 4. Universal invariants: All intact. NODE_PATH untouched in all three sites, patch-deps preserved, Electrobun guards intact, no access control files modified, no hardcoded ports. 5. Judgment:
6. PR-type-specific checks: Auth route regex-constrained ( 7. Security:
8. Decision: REQUEST CHANGES [BLOCK 1] [BLOCK 2] Supply chain disclosure required: the PR author is the sole maintainer of [Non-blocking] Document |
…li-provider # Conflicts: # plugins/plugin-agent-orchestrator
…t PARALLAX_LLM_PROVIDER - Delete packages/agent/src/api/coding-agent-bridge.ts entirely. The exported handleCodingAgentsFallback had zero importers across the repo — the live preflight/auth route wiring all lives in server.ts's private copy of the same function. Leaving the bridge file around was actively dangerous: a future contributor could patch a security fix into the dead copy while the live server.ts path goes unchanged. The NOTE comment added earlier was insufficient; the whole file needed to go. - Document PARALLAX_LLM_PROVIDER in CLAUDE.md's env var table with its three valid values (subscription / api_keys / cloud), where it's set (Coding Agents settings UI), and where it's consumed (agent-orchestrator-compat.ts). The PARALLAX_* namespace is owned by @elizaos/plugin-agent-orchestrator upstream; renaming is a follow-up that should rename the whole namespace at once. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
The GitHub write operations require user approval. Here is the full review ready to post:
1. Classification (derived): feature — consistent with author's claim. Multi-layer: auth plumbing ( 2. Rubric (derived): Correctness of the async→sync split in 3. Scope verdict: needs deep review — feature + auth changes + new npm dep + significant UI rewrite from a probationary contributor. 4. Universal invariants: all intact — NODE_PATH files, 5. Judgment:
6. PR-type-specific checks:
7. Security:
8. Decision: REQUEST CHANGES Required before merge:
@greptileai please perform a deep review — this PR was flagged as needing deep analysis by agent-review. |
|
The review is complete. Here's what I found: PR #1757 — feat(cloud-coding-agents): Eliza Cloud as provider for CLI coding agents Decision: REQUEST CHANGES (preliminary, awaiting Greptile deep review) Classification: feature + bug-fix + refactor. The bug fix (Promise-truthy in Universal invariants: All intact. NODE_PATH, patch-deps.mjs, Electrobun guards, namespace, ports, access control files — none touched. Required changes before merge:
Strengths: The |
…plit settings UI
- server.ts auth route: validate agentType against a 4-item allowlist
(claude/codex/gemini/aider) before passing to createAdapter. The
\w+ regex on the URL blocks path traversal but still accepts
arbitrary identifiers like __proto__, constructor, or any future
adapter name the package happens to export. Gate on the shapes the
UI actually ships today.
- server.ts auth route: log the full error (stack + message) via
logger.error in the catch block before returning the generic
client-facing message. The outer catch was correctly sanitizing
the response but silently dropping production-debug info.
- Split CodingAgentSettingsSection.tsx (1064 LOC) into five smaller
modules, bringing the parent to 444 LOC (under the ~500 guideline):
- coding-agent-settings-shared.ts — types, constants, fallback
model lists (128 LOC)
- LlmProviderSection.tsx — LLM provider select + api_keys inputs
+ cloud pair status (174 LOC)
- GlobalPrefsSection.tsx — selection strategy, approval preset,
scratch retention, coding directory (199 LOC)
- AgentTabsSection.tsx — segmented agent tabs, per-agent auth
flow, auth-result banner, availability line (200 LOC)
- ModelConfigSection.tsx — aider provider, powerful/fast model
selects, fallback hint (150 LOC)
Parent now owns state + load/save effects + handlers + render
orchestration only. Update CodingAgentSettingsSection.test.tsx to
import ADAPTER_NAME_TO_TAB from the new shared module.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
The review is ready but requires user approval to post. Here is the full review output:
1. Classification (derived): feature — consistent with author's claim. Multi-layer: runtime/credentials + new API route + plugin version pin + settings UI refactor. 2. Rubric (derived): Auth correctness (Promise-truthy bug fix), new API route security (allowlist + sanitization), credential handling at HTTP boundaries, UI decomposition within ~500 LOC conventions, supply-chain for new 3. Scope verdict: needs deep review 4. Universal invariants: all intact. All three NODE_PATH sites, 5. Judgment:
6. PR-type-specific checks: All OK — auth route allowlist ( 7. Security: clear. TOS compliance preserved. 8. Decision: APPROVE Please approve the |
Summary
Adds Eliza Cloud as an LLM provider for the CLI coding agents (Claude Code, Codex, Aider) and ships the supporting milady-side plumbing. Eliza Cloud does not proxy Gemini, so cloud mode leaves Gemini's auth state unchanged.
Paired with elizaos-plugins/plugin-agent-orchestrator#27 (already merged + published as
@elizaos/plugin-agent-orchestrator@0.6.1), which ships the plugin-side cloud provider integration and three reliability fixes.Auth readiness
packages/agent/src/runtime/agent-orchestrator-compat.ts— addedreadMiladyEnvKeyandreadMiladyCloudApiKeyhelpers, and acloudReadybranch that treats Claude / Codex as fully auth-ready whenPARALLAX_LLM_PROVIDER=cloudand acloud.apiKeyis paired inmilady.json. Plumbed through the framework availability surface so the settings UI reflects it.packages/agent/src/auth/credentials.ts— extended the Claude Code OAuth credential reader to also accept:.credentials.jsonblob format"Claude Code-credentials"(current macOS installs)Kept the TOS-respecting policy of not exporting the Claude subscription token as
ANTHROPIC_API_KEYto the main runtime — the token is still only usable via the Claude Code CLI spawned by the task-agent orchestrator.API routes
packages/agent/src/api/coding-agent-bridge.ts— surfaces adapterauthstatus through the framework list, and adds a newPOST /api/coding-agents/auth/:agentroute that triggers the CLI auth flow viacoding-agent-adapters.packages/agent/src/api/server.ts— registers the trigger-auth route in the fallback handler alongside the existing agent list.Settings UI
packages/app-core/src/components/coding/CodingAgentSettingsSection.tsx— rewritten to surface the Eliza Cloud provider option, let the user pair a cloud API key, and reflect per-CLI auth readiness under both subscription-mode and cloud-mode. +439/−91 LOC, drives the settings surface for all CLI agents.packages/app-core/src/api/client-types-cloud.ts— client types for the new cloud auth state fields.xterm theme
packages/app-core/src/components/coding/PtyTerminalPane.tsx— added a full 16-color ANSI palette (Tokyo Night Storm) so Codex's dimbrightBlackcommentary is readable against the dark terminal background. Previously the default xterm palette left Codex's reasoning text almost invisible.Plumbing
@elizaos/plugin-agent-orchestratorbumped to0.6.1in both the root andpackages/agent/package.json. The plugin at that version ships the matching cloud provider integration + reliability fixes (watchdogisSessionLoadinggate, validator filesystem evidence, 2nd-person idle nudge prompt, Codex WS-disable via custom provider). See plugin PR Fix/plugins page scroll #27.Submodule pointer for
plugins/plugin-agent-orchestratorbumped toad3bf3c— the alpha tip with the workspace-dep regression fix on top of Fix/plugins page scroll #27..gitignore— excludesscripts/codex-sniff.ts, a local sniffing proxy used to debug the Codex ↔ Vercel AI Gateway request shape during this feature's development. Useful dev tool, not product code.Test plan
bun run verify:typecheck— 11 pre-existing errors, same count as pristine develop. Zero net-new errors.bun run verify:lint(biome) — pre-existing ~44 errors / ~46 warnings in the touched files on develop, reduced to ~37 / ~44 on this branch viabiome check --writeauto-fixes (formatting only, no behavior changes).0.6.1locally; npm consumers will pull the published 0.6.1 once available.Stacked dependencies
@elizaos/plugin-agent-orchestrator@0.6.1pty-manager@1.11.0coding-agent-adapters@0.16.3elizaOS/cloud#427elizaOS/cloud#428Followups (not in this PR)
alphastill has pre-existing type errors in Shaw's recent refactor (stall-classifier, swarm-decision-loop, swarm-event-triage, task-history, coding-task-handlers) that need a fix PR. Not blocking this milady PR because we consume the published 0.6.1 which was built before those regressions landed.🤖 Generated with Claude Code