Commit Graph
5012 Commits
Author SHA1 Message Date
Michael Bolin 5ee8a17b4e feat: introduce GetConversationSummary RPC (#5803)
This adds an RPC to the app server to the the `ConversationSummary` via
a rollout path. Now that the VS Code extension supports showing the
Codex UI in an editor panel where the URI of the panel maps to the
rollout file, we need to be able to get the `ConversationSummary` from
the rollout file directly.
2025-10-27 09:11:45 -07:00
jif-oai 81be54b229 fix: test yield time (#5811) 2025-10-27 11:57:29 +00:00
jif-oai 5e8659dcbc chore: undo nits (#5631) 2025-10-27 11:48:01 +00:00
jif-oai 2338294b39 nit: doc on session task (#5809) 2025-10-27 11:43:33 +00:00
jif-oai afc4eaab8b feat: TUI undo op (#5629) 2025-10-27 10:55:29 +00:00
jif-oai e92c4f6561 feat: async ghost commit (#5618) 2025-10-27 10:09:10 +00:00
Michael Bolin a2845b43cb Merge 06878e0a62 into sapling-pr-archive-bolinfest 2025-10-27 02:34:14 -07:00
Michael Bolin 06878e0a62 feat: introduce GetConversationSummary RPC 2025-10-27 02:34:05 -07:00
Michael Bolin 15fa2283e7 feat: update NewConversationParams to take an optional model_provider (#5793)
An AppServer client should be able to use any (`model_provider`, `model`) in the user's config. `NewConversationParams` already supported specifying the `model`, but this PR expands it to support `model_provider`, as well.

---
[//]: # (BEGIN SAPLING FOOTER)
Stack created with [Sapling](https://sapling-scm.com). Best reviewed
with [ReviewStack](https://reviewstack.dev/openai/codex/pull/5793).
* #5803
* __->__ #5793
2025-10-27 09:33:30 +00:00
Michael Bolin 8f525bf27d merge commit for archive created by Sapling 2025-10-27 02:04:18 -07:00
Michael Bolin abbf02f343 feat: introduce GetConversationSummary RPC 2025-10-27 02:04:09 -07:00
Michael Bolin a596e9c5f2 feat: update NewConversationParams to take an optional model_provider 2025-10-27 02:03:41 -07:00
Michael Bolin 5907422d65 feat: annotate conversations with model_provider for filtering (#5658)
Because conversations that use the Responses API can have encrypted
reasoning messages, trying to resume a conversation with a different
provider could lead to confusing "failed to decrypt" errors. (This is
reproducible by starting a conversation using ChatGPT login and resuming
it as a conversation that uses OpenAI models via Azure.)

This changes `ListConversationsParams` to take a `model_providers:
Option<Vec<String>>` and adds `model_provider` on each
`ConversationSummary` it returns so these cases can be disambiguated.

Note this ended up making changes to
`codex-rs/core/src/rollout/tests.rs` because it had a number of cases
where it expected `Some` for the value of `next_cursor`, but the list of
rollouts was complete, so according to this docstring:


https://github.com/openai/codex/blob/bcd64c7e7231d6316a2377d1525a0fa74f21b783/codex-rs/app-server-protocol/src/protocol.rs#L334-L337

If there are no more items to return, then `next_cursor` should be
`None`. This PR updates that logic.






---
[//]: # (BEGIN SAPLING FOOTER)
Stack created with [Sapling](https://sapling-scm.com). Best reviewed
with [ReviewStack](https://reviewstack.dev/openai/codex/pull/5658).
* #5803
* #5793
* __->__ #5658
2025-10-27 02:03:30 -07:00
Michael Bolin 1ee040461a merge commit for archive created by Sapling 2025-10-27 02:03:03 -07:00
Michael Bolin 5a84a38317 feat: introduce GetConversationSummary RPC 2025-10-27 02:02:55 -07:00
Michael Bolin 1ff7ccd0d7 merge commit for archive created by Sapling 2025-10-27 00:27:07 -07:00
Michael Bolin c1a57748b2 feat: introduce GetConversationSummary RPC 2025-10-27 00:27:00 -07:00
Michael Bolin 8ed35bd38d Merge b9abfde313 into sapling-pr-archive-bolinfest 2025-10-27 00:14:06 -07:00
Michael Bolin b9abfde313 feat: introduce GetConversationSummary RPC 2025-10-27 00:13:25 -07:00
Michael Bolin 7635b61210 merge commit for archive created by Sapling 2025-10-26 23:03:36 -07:00
Michael Bolin c3a93cbe46 feat: update NewConversationParams to take an optional model_provider 2025-10-26 23:03:26 -07:00
Michael Bolin f9183c9cea feat: annotate conversations with model_provider for filtering 2025-10-26 23:03:26 -07:00
Ahmed Ibrahim f178805252 Add feedback upload request handling (#5682) 2025-10-27 05:53:39 +00:00
Michael Bolin 64d11e1de4 merge commit for archive created by Sapling 2025-10-26 22:13:21 -07:00
Michael Bolin 24d9adc527 feat: update NewConversationParams to take an optional model_provider 2025-10-26 21:59:44 -07:00
Michael Bolin b54cb224f1 feat: annotate conversations with model_provider for filtering 2025-10-26 21:59:44 -07:00
Michael Bolin e56dd0852f Merge 735540b6a9 into sapling-pr-archive-bolinfest 2025-10-26 20:25:49 -07:00
Michael Bolin 735540b6a9 feat: update NewConversationParams to take an optional model_provider 2025-10-26 20:25:43 -07:00
Michael Bolin 53a7afcd79 Merge 5aa9383012 into sapling-pr-archive-bolinfest 2025-10-26 18:58:20 -07:00
Michael Bolin 1fae499fd5 feat: annotate conversations with model_provider for filtering 2025-10-26 18:57:57 -07:00
Michael Bolin 5aa9383012 feat: update NewConversationParams to take an optional model_provider 2025-10-26 18:57:57 -07:00
Michael Bolin a55b0c4bcc fix: revert "[app-server] fix account/read response annotation (#5642)" (#5796)
Revert #5642 because this generates:

```
// GENERATED CODE! DO NOT MODIFY BY HAND!

// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.

export type GetAccountResponse = Account | null;
```

But `Account` is unknown.

The unique use of `#[ts(export)]` on `GetAccountResponse` is also
suspicious as are the changes to
`codex-rs/app-server-protocol/src/export.rs` since the existing system
has worked fine for quite some time.

Though a pure backout of #5642 puts things in a state where, as the PR
noted, the following does not work:

```
cargo run -p codex-app-server-protocol --bin export -- --out DIR
```

So in addition to the backout, this PR adds:

```rust
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)]
#[serde(rename_all = "camelCase")]
pub struct GetAccountResponse {
    pub account: Account,
}
```

and changes `GetAccount.response` as follows:

```diff
-        response: Option<Account>,
+        response: GetAccountResponse,
```

making it consistent with other types.

With this change, I verified that both of the following work:

```
just codex generate-ts --out /tmp/somewhere
cargo run -p codex-app-server-protocol --bin export -- --out /tmp/somewhere-else
```

The generated TypeScript is as follows:

```typescript
// GetAccountResponse.ts
import type { Account } from "./Account";

export type GetAccountResponse = { account: Account, };
```

and

```typescript
// Account.ts
import type { PlanType } from "./PlanType";

export type Account = { "type": "ApiKey", api_key: string, } | { "type": "chatgpt", email: string | null, plan_type: PlanType, };
```

Though while the inconsistency between `"type": "ApiKey"` and `"type":
"chatgpt"` is quite concerning, I'm not sure if that format is ever
written to disk in any case, but @owenlin0, I would recommend looking
into that.

Also, it appears that the types in `codex-rs/protocol/src/account.rs`
are used exclusively by the `app-server-protocol` crate, so perhaps they
should just be moved there?
2025-10-26 18:57:42 -07:00
Thibault Sottiaux 224222f09f fix: use codex-exp prefix for experimental models and consider codex- models to be production (#5797) 2025-10-27 01:55:12 +00:00
Michael Bolin fd90ca9be6 Merge 220eba713b into sapling-pr-archive-bolinfest 2025-10-26 18:41:11 -07:00
Michael Bolin 220eba713b Back out "[app-server] fix account/read response annotation (#5642)"
Original commit changeset: 190e7eb104
2025-10-26 18:41:06 -07:00
Michael Bolin 08bfac5ee4 Merge 67a0e64866 into sapling-pr-archive-bolinfest 2025-10-26 18:26:42 -07:00
Michael Bolin 67a0e64866 Back out "[app-server] fix account/read response annotation (#5642)"
Original commit changeset: 190e7eb104
2025-10-26 18:23:25 -07:00
Michael Bolin 327fdc1f66 Merge 1cfea37a53 into sapling-pr-archive-bolinfest 2025-10-26 16:46:02 -07:00
Michael Bolin 1cfea37a53 feat: update NewConversationParams to take an optional model_provider 2025-10-26 16:45:52 -07:00
Michael Bolin 3d9c27bc94 merge commit for archive created by Sapling 2025-10-26 16:13:49 -07:00
Michael Bolin 2bca20a3aa feat: annotate conversations with model_provider for filtering 2025-10-26 16:13:43 -07:00
Michael Bolin 8dd1899a88 merge commit for archive created by Sapling 2025-10-26 15:31:28 -07:00
Michael Bolin 299f2d33d0 feat: annotate conversations with model_provider for filtering 2025-10-26 15:20:48 -07:00
Michael Bolin 396101811d merge commit for archive created by Sapling 2025-10-26 13:59:14 -07:00
Michael Bolin 89b7b4a187 feat: annotate conversations with model_provider for filtering 2025-10-26 13:59:07 -07:00
Gabriel Peal 7aab45e060 [MCP] Minor docs clarifications around stdio tokens (#5676)
Noticed
[here](https://github.com/openai/codex/issues/4707#issuecomment-3446547561)
2025-10-26 13:38:30 -04:00
Eric Traut bcd64c7e72 Reduced runtime of unit test that was taking multiple minutes (#5688)
Modified `build_compacted_history_truncates_overlong_user_messages` test
to reduce runtime from minutes to tens of seconds
2025-10-25 23:46:08 -07:00
Michael Bolin 40ed0ab146 merge commit for archive created by Sapling 2025-10-25 23:42:29 -07:00
Michael Bolin 85cd533121 feat: annotate conversations with model_provider for filtering 2025-10-25 23:42:23 -07:00
Eric Traut c124f24354 Added support for sandbox_mode in profiles (#5686)
Currently, `approval_policy` is supported in profiles, but
`sandbox_mode` is not. This PR adds support for `sandbox_mode`.

Note: a fix for this was submitted in [this
PR](https://github.com/openai/codex/pull/2397), but the underlying code
has changed significantly since then.

This addresses issue #3034
2025-10-25 16:52:26 -07:00