Checkpoint of the safe subagent slice:
- SessionExecution.awaitIdle (coordinator drain-to-quiescence loop)
- SessionV2.wait delegates to awaitIdle; drop unavailable error + handler catch
- SessionV2.create: parentID/title, optional location inherited from parent
- subagent tool file (core/src/tool/subagent.ts) NOT yet wired into the node
graph; wiring the global SessionV2 dep from a location-scoped tool is the open
problem being experimented on next.
Brings the latest dev (45 commits) into v2. Conflict resolutions:
- core/src/session.ts: keep v2's Service (BusyError active-checks in
revert.stage/clear/commit, rename method + Renamed event) and add
dev's history method. v2's Renamed event flows through the merged
SessionEvent.Definitions into the OpenCodeEvent union, so it encodes
correctly on the SSE stream.
- server/src/handlers/event.ts: take dev's OpenCodeEvent encoder, which
supersedes v2's PublicEventManifest handler wiring. This also brings
dev's live event stream (allBounded + heartbeat + keepalive headers)
onto v2.
- Removed the now-orphaned public-event-manifest.ts (only self-referenced
after taking dev's handler).
- Generated client + sdk types regenerated via codegen (not hand-merged);
they pick up dev's effect SSE OpenAPI-naming patch (V2EventStream).
Cherry-picks the packages/core changes from the v2 branch onto dev:
- combined ordered stdout/stderr in AppProcess + bash structured output
- edit/apply-patch return FileDiff info with status and line stats
- ignore no-op model switches; record reasoning timestamps
- return unexpected local tool defects to the model and continue
- keep OAuth account metadata out of request bodies
- nest OpenAI reasoning effort/summary options
- load OpenCode provider config asynchronously; batch plugin boot
- export latest public event manifest
Includes the supporting schema reasoning time field and regenerated
client/SDK types.