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>
85 lines
2.1 KiB
JSON
85 lines
2.1 KiB
JSON
{
|
|
"id": "codex",
|
|
"role": "runtime",
|
|
"version": "1.7.0-rc.4",
|
|
"title": "OpenAI Codex CLI",
|
|
"description": "OpenAI Codex CLI — shell-var command style; per-agent sandbox tiers; config.toml + hooks.json hook surface; tier-1 support.",
|
|
"tier": "core",
|
|
"requires": [],
|
|
"engines": {
|
|
"gsd": ">=1.6.0"
|
|
},
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "dot-home",
|
|
"name": ".codex",
|
|
"env": [
|
|
"CODEX_HOME"
|
|
]
|
|
},
|
|
"localConfigDir": ".codex",
|
|
"configFormat": "toml",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToCodexSkill",
|
|
"home": ".agents"
|
|
}
|
|
],
|
|
"local": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToCodexSkill",
|
|
"home": ".agents"
|
|
}
|
|
]
|
|
},
|
|
"commandStyle": "shell-var",
|
|
"hooksSurface": "codex-hooks-json",
|
|
"hookEvents": "claude",
|
|
"sandboxTier": "codex-agent-sandbox",
|
|
"supportTier": 1,
|
|
"installSurface": "codex-toml",
|
|
"writesSharedSettings": false,
|
|
"permissionWriter": null,
|
|
"extendedHookEvents": [
|
|
"SubagentStop",
|
|
"Stop",
|
|
"PreCompact"
|
|
],
|
|
"hostIntegration": {
|
|
"embeddingMode": "declarative",
|
|
"commandSurface": "slash-file",
|
|
"dispatch": {
|
|
"namedDispatch": true,
|
|
"nested": true,
|
|
"maxDepth": 1,
|
|
"background": true,
|
|
"subagentToolkit": "full",
|
|
"backgroundDispatch": true
|
|
},
|
|
"modelMode": "passive",
|
|
"hookBus": "host",
|
|
"stateIO": "filesystem",
|
|
"transport": "mcp",
|
|
"runtime": "node"
|
|
},
|
|
"hostBehaviors": {
|
|
"reapplyCommand": "$gsd-update --reapply",
|
|
"tomlConfigInstall": true,
|
|
"cleanupSkillSidecars": true,
|
|
"agentTomlFiles": true,
|
|
"frontmatterDialect": "codex"
|
|
}
|
|
}
|
|
}
|