Files
msd-core/.changeset/2088-eos-codex-declarative-adapter.md
Tom Boucher 6e773d97df feat(#2088): migrate Codex onto the Embeddable Orchestration System (ADR-1239)
Drive Codex install/uninstall through the descriptor-driven Host-Integration
Interface (declarative embedding adapter → engine surface dispatch) and fold
every positive `runtime === 'codex'` / `isCodex` projection into descriptor-driven
`runtime.hostBehaviors`. Install/uninstall output stays byte-parity-gated
(tests/fixtures/golden-install-parity/codex.json); no other runtime changes.

Three Context7-verified upgrades, each with a test on the user-reachable surface:
- Skill root → canonical $HOME/.agents/skills via a skills-kind `home` override,
  with pre-move migration cleanup (stale ~/.codex/skills/gsd-* removed on install
  and uninstall; user content preserved). Fixes getGlobalSkillsBase, writeManifest,
  and the skill-manifest inventory to honor the override so --skills-root /
  sync-skills / the manifest report the real location.
- Six new hooks.json lifecycle events (PreToolUse, PermissionRequest, PreCompact,
  PostCompact, SubagentStop, UserPromptSubmit) shared by install + uninstall;
  extendedHookEvents reconciled [] -> the schema-valid wired subset.
- Explicit `[agents] max_depth = 1` in the managed config.toml block, pinning the
  negotiated dispatch.maxDepth:1 axis. validateCodexConfigSchema now permits a
  known-scalar-only bare `[agents]` AgentsToml table (still rejects [[agents]] and
  unknown-key break-forms, #2760); mergeCodexConfig preserves the user's own
  AgentsToml scalars (max_threads etc.) instead of dropping them.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 21:42:11 -04:00

1.9 KiB

type
type
Changed

Codex is now driven through the public Host-Integration Interface, with three capability upgrades (ADR-1239 / EoS). Codex previously installed via hardcoded runtime === 'codex'/isCodex projection in bin/install.js; its config.toml / agent-.toml / hooks.json install now runs through the declarative embedding adapter and descriptor-driven runtime.hostBehaviors, with zero positive isCodex gates and zero runtime === 'codex' branches remaining (source-guarded). Install/uninstall output stays byte-parity-gated (tests/fixtures/golden-install-parity/codex.json). Three Context7-verified upgrades land, each with a test driving the user-reachable surface: (1) skill root — GSD skills now install to Codex's canonical $HOME/.agents/skills (via a skills-kind home override) instead of the deprecated $CODEX_HOME/skills fallback, and pre-move installs are migrated (stale ~/.codex/skills/gsd-* cleaned on both install and uninstall, user-owned content preserved); (2) hook events — GSD registers the six documented Codex lifecycle events it previously skipped (PreToolUse, PermissionRequest, PreCompact, PostCompact, SubagentStop, UserPromptSubmit, in addition to the existing SessionStart/SubagentStart/Stop/PostToolUse) in hooks.json, so gsd-context-monitor fires at the same points as in Claude Code, and the descriptor extendedHookEvents is reconciled from [] to the schema-valid wired subset; (3) dispatch tuning — [agents] max_depth = 1 is written explicitly into the managed config.toml block to pin the negotiated dispatch.maxDepth: 1 axis (degradationFor flattens GSD-hosted waves to single-level), and validateCodexConfigSchema now permits a known-scalar-only [agents] AgentsToml table (coexisting with the flattened [agents.gsd-*] role sub-tables) while still rejecting the [[agents]] and unknown-key break-forms from #2760. (#2088)