Commit 52ef740
committed
Release v0.4.4: App-server multi-modal inputs, exec CLI parity, typed deltas
This release closes significant parity gaps with the upstream Codex CLI and
app-server protocol, adding multi-modal input support, comprehensive CLI flag
forwarding, and typed event handling for previously raw notifications.
App-server transport enhancements:
- Thread.run/3 and run_streamed/3 now accept UserInput block lists containing
text, image, and localImage types in addition to plain string input
- Thread start/resume forwards model, model_provider, config, base_instructions,
developer_instructions, and experimental_raw_events parameters
- Codex.Options defaults for model and reasoning_effort are applied to
app-server thread starts when not explicitly overridden
- Sandbox policy accepts full structured format with type, writable_roots,
network_access, exclude_tmpdir_env_var, and exclude_slash_tmp fields
- Added command_write_stdin/4 for interactive terminal command input
Typed app-server notifications:
- ReasoningSummaryPartAdded for incremental reasoning summary updates
- FileChangeOutputDelta for streaming file change apply-patch output
- TerminalInteraction for interactive stdin write events
- McpToolCallProgress for MCP tool execution progress messages
- AccountUpdated, AccountRateLimitsUpdated, AccountLoginCompleted for auth state
- McpServerOauthLoginCompleted for MCP OAuth flow completion
- WindowsWorldWritableWarning for Windows security warnings
- TurnCompleted now includes error field from turn.error payloads
Exec CLI parity:
- Added profile, oss, local_provider, full_auto, output_last_message, and color
flags to thread options with proper CLI argument forwarding
- Added dangerously_bypass_approvals_and_sandbox flag (mutually exclusive with
full_auto)
- Generic config_overrides field accepts string list or key/value pairs for
arbitrary -c key=value overrides
- Exec.review/2 and review_stream/2 run codex exec review with uncommitted,
base_branch, commit, or custom prompt targets
- Codex.resume_thread(:last) maps to codex exec resume --last
Reasoning item fidelity:
- Items.Reasoning now preserves summary and content as separate list fields
- Text field is still populated by joining summary and content for backwards
compatibility
- ItemAdapter and Items.parse handle structured reasoning consistently
Approval handling:
- Approval hooks can return grant_root option to accept file-change approvals
with the proposed root for the current session
- ApprovalDecision encodes grant_root as acceptForSession response
Bug fixes:
- Streamed turn failures handle non-text final_response payloads without
crashing by extracting error details from turn.error when present
- Structured /new input blocks (single text block containing /new) properly
reset conversation state for app-server and exec transport runs
- Tool guardrail handler exceptions are caught and surfaced as GuardrailError
instead of crashing the turn process
- Approval hook exceptions are caught and surfaced as Error with kind
approval_hook_failed
- Progress telemetry metadata merge handles nil base metadata gracefully
- Thread.Backoff clamps exponential delay to prevent integer overflow on high
attempt counts
- Tool call deduplication uses fallback key based on tool_name and arguments
hash when call_id is nil
Test coverage:
- Added tests for multi-modal input handling in app-server transport
- Added tests for structured /new reset behavior
- Added tests for guardrail and approval hook exception handling
- Added tests for exec CLI flag forwarding and review subcommand
- Added tests for reasoning summary/content preservation
- Added notification adapter tests for all new typed events
- Added backoff overflow protection tests1 parent 32cbb28 commit 52ef740
42 files changed
Lines changed: 8749 additions & 319 deletions
File tree
- docs
- 20251229/codex-parity-gap-analysis
- examples
- integration/fixtures/python
- lib
- codex
- app_server
- approvals
- thread
- transport
- test/codex
- app_server
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
8 | 35 | | |
9 | 36 | | |
10 | 37 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
19 | | - | |
20 | | - | |
21 | | - | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
| |||
33 | 33 | | |
34 | 34 | | |
35 | 35 | | |
36 | | - | |
| 36 | + | |
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
| |||
120 | 120 | | |
121 | 121 | | |
122 | 122 | | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
123 | 136 | | |
124 | 137 | | |
125 | 138 | | |
126 | 139 | | |
127 | 140 | | |
| 141 | + | |
128 | 142 | | |
129 | 143 | | |
130 | 144 | | |
| |||
258 | 272 | | |
259 | 273 | | |
260 | 274 | | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
261 | 282 | | |
262 | 283 | | |
263 | 284 | | |
| |||
355 | 376 | | |
356 | 377 | | |
357 | 378 | | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
358 | 382 | | |
359 | 383 | | |
360 | 384 | | |
| |||
558 | 582 | | |
559 | 583 | | |
560 | 584 | | |
561 | | - | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
| 592 | + | |
562 | 593 | | |
563 | 594 | | |
564 | 595 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
120 | 120 | | |
121 | 121 | | |
122 | 122 | | |
123 | | - | |
| 123 | + | |
124 | 124 | | |
125 | 125 | | |
126 | | - | |
| 126 | + | |
127 | 127 | | |
128 | 128 | | |
129 | 129 | | |
| 130 | + | |
| 131 | + | |
130 | 132 | | |
131 | 133 | | |
132 | 134 | | |
| |||
0 commit comments