Files
Gadfly 983705f5d0 feat(codex): migrate Codex runtime to persistent app-server
Replace the per-turn `codex exec` TypeScript SDK path with a persistent
`codex app-server --listen stdio://` JSON-RPC connection managed by the
Node daemon: Java -> DaemonBridge -> persistent CodexAppServerService ->
native app-server, one initialized child per chat host with native
thread/turn lifecycle.

Node (ai-bridge):
- Add app-server stdio client (handshake, request/reply registries,
  classified errors, uncertainty budget) and the operation service
  (session FIFO, frozen settings revisions, reverse interactions,
  item/plan/compaction projections, launch-config rebuild at idle).
- Add persistent per-session service wrapper, CLI resolver with legacy
  dependency fallback, sanitized runtime environments, native history/
  subagents/catalog readers, privacy journal, and ephemeral text
  requests for prompt enhancement, commit generation and session titles.
- Remove the TypeScript SDK load path and JSONL re-read from live turns.

Java:
- Rewrite CodexSDKBridge on the provider facade: structured daemon
  routing with channel/epoch/runtime-generation gates, thread ownership
  registry, interaction registry with page tokens, native history
  reader with offline-only legacy fallback, and daemon lifecycle
  coordination.
- Add interaction/data/workspace-diff handlers, file navigation helper,
  native file-change undo plan (patch reversal, rename baselines), and
  Codex history merger for restored sessions.
- Route Codex runtime management to the shared CLI detection page;
  drop the Codex SDK dependency definition and install entries.
- Wire send identity (clientMessageId), stream-end release on startup
  errors, and per-origin diff/undo receipt routing.

Webview:
- Add native plan state, compaction status, turn activity, session edit
  ledger, workspace diff dialog, patch/file-change cards, command
  presentation, desktop attachment envelope handling, and Codex command
  dispatch (/compact, /diff, /approvals, execute plan).
- Align skill filtering with the native `enabled` field, complete the
  codexQuota locale block for all 10 languages, and keep cached
  normalization for high-volume message rendering.

BREAKING CHANGE (internal): Codex approvals switch from boolean file
IPC to structured bidirectional events carrying runtime/thread/turn/
item/RPC identity. Other providers keep their existing protocols.
Approval requests now follow Codex native policy instead of treating
every started tool as pending.

Verified: Node 1142 tests (1139 passed / 3 platform skips), Java 1655
tests across 204 suites plus Checkstyle/JaCoCo, webview 2178 vitest
tests and tsc, four-viewport Playwright suites, openspec strict
validation (71 requirements / 392 scenarios), JDK21 buildPlugin.
2026-10-05 03:18:18 +08:00
..