Commit Graph
2790 Commits
Author SHA1 Message Date
Michael Bolin 472f9cfb38 merge commit for archive created by Sapling 2025-08-13 13:40:14 -07:00
Michael Bolin 06aa79880e fix: update OutgoingMessageSender::send_response() to take Serialize 2025-08-13 13:40:04 -07:00
Michael Bolin 08ed618f72 chore: introduce ConversationManager as a clearinghouse for all conversations (#2240)
This PR does two things because after I got deep into the first one I
started pulling on the thread to the second:

- Makes `ConversationManager` the place where all in-memory
conversations are created and stored. Previously, `MessageProcessor` in
the `codex-mcp-server` crate was doing this via its `session_map`, but
this is something that should be done in `codex-core`.
- It unwinds the `ctrl_c: tokio::sync::Notify` that was threaded
throughout our code. I think this made sense at one time, but now that
we handle Ctrl-C within the TUI and have a proper `Op::Interrupt` event,
I don't think this was quite right, so I removed it. For `codex exec`
and `codex proto`, we now use `tokio::signal::ctrl_c()` directly, but we
no longer make `Notify` a field of `Codex` or `CodexConversation`.

Changes of note:

- Adds the files `conversation_manager.rs` and `codex_conversation.rs`
to `codex-core`.
- `Codex` and `CodexSpawnOk` are no longer exported from `codex-core`:
other crates must use `CodexConversation` instead (which is created via
`ConversationManager`).
- `core/src/codex_wrapper.rs` has been deleted in favor of
`ConversationManager`.
- `ConversationManager::new_conversation()` returns `NewConversation`,
which is in line with the `new_conversation` tool we want to add to the
MCP server. Note `NewConversation` includes `SessionConfiguredEvent`, so
we eliminate checks in cases like `codex-rs/core/tests/client.rs` to
verify `SessionConfiguredEvent` is the first event because that is now
internal to `ConversationManager`.
- Quite a bit of code was deleted from
`codex-rs/mcp-server/src/message_processor.rs` since it no longer has to
manage multiple conversations itself: it goes through
`ConversationManager` instead.
- `core/tests/live_agent.rs` has been deleted because I had to update a
bunch of tests and all the tests in here were ignored, and I don't think
anyone ever ran them, so this was just technical debt, at this point.
- Removed `notify_on_sigint()` from `util.rs` (and in a follow-up, I
hope to refactor the blandly-named `util.rs` into more descriptive
files).
- In general, I started replacing local variables named `codex` as
`conversation`, where appropriate, though admittedly I didn't do it
through all the integration tests because that would have added a lot of
noise to this PR.




---
[//]: # (BEGIN SAPLING FOOTER)
Stack created with [Sapling](https://sapling-scm.com). Best reviewed
with [ReviewStack](https://reviewstack.dev/openai/codex/pull/2240).
* #2264
* #2263
* __->__ #2240
2025-08-13 13:38:18 -07:00
Michael Bolin b58aa53e01 Merge 7a5c29804c into sapling-pr-archive-bolinfest 2025-08-13 13:04:49 -07:00
Michael Bolin 7a5c29804c feat: support traditional JSON-RPC request/response in MCP server 2025-08-13 13:02:22 -07:00
Michael Bolin 7ad4c51555 merge commit for archive created by Sapling 2025-08-13 12:49:45 -07:00
Michael Bolin 6ed88edfa0 fix: update OutgoingMessageSender::send_response() to take Serialize 2025-08-13 12:49:39 -07:00
Michael Bolin 6a57c404b7 merge commit for archive created by Sapling 2025-08-13 12:47:40 -07:00
Michael Bolin 8ddbab6d33 fix: update OutgoingMessageSender::send_response() to take Serialize 2025-08-13 12:47:32 -07:00
Michael Bolin c680a3be60 Merge 064b77ab21 into sapling-pr-archive-bolinfest 2025-08-13 12:46:17 -07:00
Michael Bolin 064b77ab21 fix: update OutgoingMessageSender::send_response() to take Serialize 2025-08-13 12:45:42 -07:00
ae 30ee24521b fix: remove behavioral prompting from update_plan tool def (#2261)
- Moved some of the content to the main prompt.
2025-08-13 19:05:13 +00:00
Michael Bolin 86247a014d merge commit for archive created by Sapling 2025-08-13 11:18:09 -07:00
Michael Bolin 8a4b683bd9 chore: introduce CodexServer as a clearinghouse for all conversations 2025-08-13 11:18:03 -07:00
easong-openai cb312dfdb4 Update header from Working once batched commands are done (#2249)
Update commands from Working to Complete or Failed after they're done

before:
<img width="725" height="332" alt="image"
src="https://github.com/user-attachments/assets/fb93d21f-5c4a-42bc-a154-14f4fe99d5f9"
/>

after:
<img width="464" height="65" alt="image"
src="https://github.com/user-attachments/assets/15ec7c3b-355f-473e-9a8e-eab359ec5f0d"
/>
2025-08-13 11:10:48 -07:00
Michael Bolin b6cf98a07a merge commit for archive created by Sapling 2025-08-13 11:07:04 -07:00
Michael Bolin 8fe92eb4ba chore: introduce CodexServer as a clearinghouse for all conversations 2025-08-13 11:06:59 -07:00
Michael Bolin d008172ee5 merge commit for archive created by Sapling 2025-08-13 11:04:46 -07:00
Michael Bolin 335c1af95e chore: introduce CodexServer as a clearinghouse for all conversations 2025-08-13 11:04:41 -07:00
Michael Bolin 97a5f25f59 merge commit for archive created by Sapling 2025-08-13 11:03:01 -07:00
Michael Bolin 726cc18adf chore: introduce CodexServer as a clearinghouse for all conversations 2025-08-13 11:02:54 -07:00
amjith 0159bc7bdb feat(tui): add ctrl-b and ctrl-f shortcuts (#2260)
## Summary
- support Ctrl-b and Ctrl-f to move the cursor left and right in the
chat composer text area
- test Ctrl-b/Ctrl-f cursor movements

## Testing
- `just fmt`
- `just fix` *(fails: `let` expressions in this position are unstable)*
- `cargo test --all-features` *(fails: `let` expressions in this
position are unstable)*

------
https://chatgpt.com/codex/tasks/task_i_689cbd1d7968832e876fff169891e486
2025-08-13 10:37:39 -07:00
Michael Bolin d798bb9c60 Merge 18ecca4b08 into sapling-pr-archive-bolinfest 2025-08-13 10:36:19 -07:00
Michael Bolin 18ecca4b08 chore: introduce CodexServer as a clearinghouse for all conversations 2025-08-13 10:36:14 -07:00
Michael Bolin 72826ccc7c merge commit for archive created by Sapling 2025-08-13 10:27:14 -07:00
Michael Bolin 5155b06581 chore: introduce CodexServer as a clearinghouse for all conversations 2025-08-13 10:23:38 -07:00
Michael Bolin 079d141953 merge commit for archive created by Sapling 2025-08-13 10:09:31 -07:00
Michael Bolin 7fdd266b31 chore: introduce CodexServer as a clearinghouse for all conversations 2025-08-13 10:09:26 -07:00
Michael Bolin b8d90bd338 merge commit for archive created by Sapling 2025-08-13 09:43:40 -07:00
Michael Bolin bb9e75cee3 chore: introduce CodexServer as a clearinghouse for all conversations 2025-08-13 09:43:32 -07:00
pakrym-oai e6dc5a6df5 fix: display canonical command name in help (#2246)
## Summary
- ensure CLI help uses `codex` as program name regardless of binary
filename

## Testing
- `just fmt`
- `just fix` *(fails: `let` expressions in this position are unstable)*
- `cargo test --all-features` *(fails: `let` expressions in this
position are unstable)*

------
https://chatgpt.com/codex/tasks/task_i_689bd5a731188320814dcbbc546ce22a
2025-08-13 09:39:11 -07:00
Michael Bolin 3b22af9939 merge commit for archive created by Sapling 2025-08-13 09:21:44 -07:00
Michael Bolin 1152f4fdd6 chore: introduce CodexServer as a clearinghouse for all conversations 2025-08-13 09:21:35 -07:00
Michael Bolin bcee2818a0 merge commit for archive created by Sapling 2025-08-13 08:37:15 -07:00
Michael Bolin 0255cb3ad0 chore: introduce CodexServer as a clearinghouse for all conversations 2025-08-13 08:37:03 -07:00
Michael Bolin bc968672d5 merge commit for archive created by Sapling 2025-08-13 08:30:31 -07:00
Michael Bolin 5a097d9746 chore: introduce CodexServer as a clearinghouse for all conversations 2025-08-13 08:30:14 -07:00
Michael Bolin 5881d546bc merge commit for archive created by Sapling 2025-08-13 08:22:44 -07:00
Michael Bolin 48602a85a6 chore: introduce CodexServer as a clearinghouse for all conversations 2025-08-13 08:22:37 -07:00
easong-openai c991c6ef85 Fix frontend test (#2247)
UI fixtures are brittle! Who knew.
2025-08-13 01:12:31 +00:00
easong-openai 6340acd885 Re-add markdown streaming (#2029)
Wait for newlines, then render markdown on a line by line basis. Word wrap it for the current terminal size and then spit it out line by line into the UI. Also adds tests and fixes some UI regressions.
2025-08-12 17:37:28 -07:00
pakrym-oai 97a27ffc77 Fix build break and build release (#2242)
Build release profile for one configuration.
2025-08-12 15:56:45 -07:00
pakrym-oai 12cf0dd868 Better implementation of interrupt on Esc (#2111)
Use existing abstractions
2025-08-12 15:43:07 -07:00
pakrym-oai 6c254ca3e7 Fix release build (#2244)
Missing import.
2025-08-12 15:35:20 -07:00
Michael Bolin eab44ab27f merge commit for archive created by Sapling 2025-08-12 14:19:43 -07:00
Michael Bolin ae734f4aae chore: introduce CodexServer as a clearinghouse for all conversations 2025-08-12 14:19:36 -07:00
Michael Bolin ce9d5676f5 Merge b4233bc1af into sapling-pr-archive-bolinfest 2025-08-12 13:36:25 -07:00
Michael Bolin b4233bc1af chore: introduce CodexServer as a clearinghouse for all conversations 2025-08-12 13:36:05 -07:00
Ed Bayes eaa3969e68 Show "Update plan" in TUI plan updates (#2192)
## Summary
- Display "Update plan" instead of "Update to do" when the plan is
updated in the TUI

## Testing
- `just fmt`
- `just fix` *(fails: E0658 `let` expressions in this position are
unstable)*
- `cargo test --all-features` *(fails: E0658 `let` expressions in this
position are unstable)*

------
https://chatgpt.com/codex/tasks/task_i_6897f78fc5908322be488f02db42a5b9
2025-08-12 13:26:57 -07:00
Michael Bolin ce82722762 Merge 2c3d906f19 into sapling-pr-archive-bolinfest 2025-08-12 11:29:22 -07:00