Commit Graph

342 Commits

Author SHA1 Message Date
Michael Bolin
884be27925 merge commit for archive created by Sapling 2025-04-25 11:48:30 -07:00
Michael Bolin
285c335951 feat: add ZDR support to Rust implementation 2025-04-25 11:48:21 -07:00
Michael Bolin
65c7bcce0b merge commit for archive created by Sapling 2025-04-25 11:44:35 -07:00
Michael Bolin
2e1904f308 feat: add ZDR support to Rust implementation 2025-04-25 11:44:28 -07:00
oai-ragona
d7a40195e6 [codex-rs] Reliability pass on networking (#658)
We currently see a behavior that looks like this:
```
2025-04-25T16:52:24.552789Z  WARN codex_core::codex: stream disconnected - retrying turn (1/10 in 232ms)...
codex> event: BackgroundEvent { message: "stream error: stream disconnected before completion: Transport error: error decoding response body; retrying 1/10 in 232ms…" }
2025-04-25T16:52:54.789885Z  WARN codex_core::codex: stream disconnected - retrying turn (2/10 in 418ms)...
codex> event: BackgroundEvent { message: "stream error: stream disconnected before completion: Transport error: error decoding response body; retrying 2/10 in 418ms…" }
```

This PR contains a few different fixes that attempt to resolve/improve
this:
1. **Remove overall client timeout.** I think
[this](https://github.com/openai/codex/pull/658/files#diff-c39945d3c42f29b506ff54b7fa2be0795b06d7ad97f1bf33956f60e3c6f19c19L173)
is perhaps the big fix -- it looks to me like this was actually timing
out even if events were still coming through, and that was causing a
disconnect right in the middle of a healthy stream.
2. **Cap response sizes.** We were frequently sending MUCH larger
responses than the upstream typescript `codex`, and that was definitely
not helping. [Fix
here](https://github.com/openai/codex/pull/658/files#diff-d792bef59aa3ee8cb0cbad8b176dbfefe451c227ac89919da7c3e536a9d6cdc0R21-R26)
for that one.
3. **Much higher idle timeout.** Our idle timeout value was much lower
than typescript.
4. **Sub-linear backoff.** We were much too aggressively backing off,
[this](https://github.com/openai/codex/pull/658/files#diff-5d5959b95c6239e6188516da5c6b7eb78154cd9cfedfb9f753d30a7b6d6b8b06R30-R33)
makes it sub-exponential but maintains the jitter and such.

I was seeing that `stream error: stream disconnected` behavior
constantly, and anecdotally I can no longer reproduce. It feels much
snappier.
2025-04-25 11:44:22 -07:00
Michael Bolin
3e780a32db merge commit for archive created by Sapling 2025-04-25 11:07:27 -07:00
Michael Bolin
b05ea21b17 feat: add ZDR support to Rust implementation 2025-04-25 11:07:21 -07:00
Tomas Cupr
4760aa1eb9 perf: optimize token streaming with balanced approach (#635)
- Replace setTimeout(10ms) with queueMicrotask for immediate processing
- Add minimal 3ms setTimeout for rendering to maintain readable UX
- Reduces per-token delay while preserving streaming experience
- Add performance test to verify optimization works correctly

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Thibault Sottiaux <tibo@openai.com>
2025-04-25 10:49:38 -07:00
Michael Bolin
cced48f9e2 merge commit for archive created by Sapling 2025-04-25 10:41:33 -07:00
Michael Bolin
34c2daf1b4 feat: add ZDR support to Rust implementation 2025-04-25 10:41:27 -07:00
Thibault Sottiaux
d401283a41 feat: more native keyboard navigation in multiline editor (#655)
Signed-off-by: Thibault Sottiaux <tibo@openai.com>
2025-04-25 10:35:30 -07:00
Michael Bolin
df9613b3d0 merge commit for archive created by Sapling 2025-04-25 10:34:36 -07:00
Michael Bolin
14ec2086aa feat: add ZDR support to Rust implementation 2025-04-25 10:34:27 -07:00
Michael Bolin
c9e6848a4f merge commit for archive created by Sapling 2025-04-25 10:33:34 -07:00
Michael Bolin
6538d9c592 feat: add ZDR support to Rust implementation 2025-04-25 10:33:28 -07:00
Michael Bolin
5107a06186 merge commit for archive created by Sapling 2025-04-25 10:24:34 -07:00
Michael Bolin
79caa92217 feat: add ZDR support to Rust implementation 2025-04-25 10:24:28 -07:00
rumple
69ce06d2f8 feat: Add support for OpenAI-Organization and OpenAI-Project headers (#626)
Added support for OpenAI-Organization and OpenAI-Project headers for
OpenAI API calls.

This is for #74
2025-04-25 09:52:42 -07:00
Thibault Sottiaux
866626347b fix: only allow going up in history when not already in history if input is empty (#654)
\+ cleanup below input help to be "ctrl+c to exit | "/" to see commands
| enter to send" now that we have command autocompletion
\+ minor other drive-by code cleanups

---------

Signed-off-by: Thibault Sottiaux <tibo@openai.com>
2025-04-25 09:39:24 -07:00
Pulipaka Sai Krishna
2759ff39da fix: model selection (#643)
fix: pass correct selected model in ModelOverlay

The ModelOverlay component was incorrectly passing the current model
instead of the newly selected model to its onSelect callback. This
prevented model changes from being applied properly.

The fix ensures that when a user selects a new model, the parent
component receives the correct newly selected model value, allowing
model changes to work as intended.
2025-04-25 09:38:05 -07:00
Luci
3fe7e53327 fix: nits in apply patch (#640)
## Description

Fix a nit in `apply patch`, potentially improving performance slightly.
2025-04-25 07:27:48 -07:00
Luci
1ef8e8afd3 docs: provider config (#653)
close: #651

Hi! @tibo-openai 👋 Could you share some great examples of
`instructions.md` files? Thanks!

---------

Co-authored-by: Thibault Sottiaux <tibo@openai.com>
2025-04-25 07:25:32 -07:00
Luci
a9ecb2efce chore: upgrade prettier to v3 (#644)
## Description

This PR addresses the following improvements:

**Unify Prettier Version**: Currently, the Prettier version used in
`/package.json` and `/codex-cli/package.json` are different. In this PR,
we're updating both to use Prettier v3.

- Prettier v3 introduces improved support for JavaScript and TypeScript.
(e.g. the formatting scenario shown in the image below. This is more
aligned with the TypeScript indentation standard).

<img width="1126" alt="image"
src="https://github.com/user-attachments/assets/6e237eb8-4553-4574-b336-ed9561c55370"
/>

**Add Prettier Auto-Formatting in lint-staged**: We've added a step to
automatically run prettier --write on JavaScript and TypeScript files as
part of the lint-staged process, before the ESLint checks.

- This will help ensure that all committed code is properly formatted
according to the project's Prettier configuration.
2025-04-25 07:21:50 -07:00
Michael Bolin
7177f709b5 Merge 9717ac87c1 into sapling-pr-archive-bolinfest 2025-04-24 23:55:20 -07:00
Michael Bolin
9717ac87c1 feat: add ZDR support to Rust implementation 2025-04-24 23:54:21 -07:00
Michael Bolin
5847374630 merge commit for archive created by Sapling 2025-04-24 23:07:29 -07:00
Michael Bolin
73eb766637 feat(tui-rs): add support for mousewheel scrolling 2025-04-24 23:06:25 -07:00
Michael Bolin
ea3637eac1 merge commit for archive created by Sapling 2025-04-24 22:36:17 -07:00
Michael Bolin
461ab550ce feat(tui-rs): add support for mousewheel scrolling 2025-04-24 22:36:13 -07:00
Michael Bolin
5e4164b251 merge commit for archive created by Sapling 2025-04-24 22:32:52 -07:00
Michael Bolin
b90cf2a778 feat(tui-rs): add support for mousewheel scrolling 2025-04-24 22:32:47 -07:00
Michael Bolin
74aee5cdc8 Merge 006da34ada into sapling-pr-archive-bolinfest 2025-04-24 22:29:31 -07:00
Michael Bolin
006da34ada feat(tui-rs): add support for mousewheel scrolling 2025-04-24 22:29:28 -07:00
Michael Bolin
abfe8c48cf Merge ea4557f963 into sapling-pr-archive-bolinfest 2025-04-24 22:23:50 -07:00
Michael Bolin
ea4557f963 feat(tui-rs): add support for mousewheel scrolling 2025-04-24 22:22:32 -07:00
Michael Bolin
bfe6fac463 fix: close stdin when running an exec tool call (#636)
We were already doing this in the TypeScript version, but forgot to
bring this over to Rust:


c38c2a59c7/codex-cli/src/utils/agent/sandbox/raw-exec.ts (L76-L78)
2025-04-24 18:06:08 -07:00
Michael Bolin
6a9c9f4b6c fix: add RUST_BACKTRACE=full when running cargo test in CI (#638)
This should provide more information in the event of a failure.
2025-04-24 18:05:56 -07:00
Michael Bolin
cc91e701a9 Merge 4db909caa7 into sapling-pr-archive-bolinfest 2025-04-24 18:03:27 -07:00
Michael Bolin
4db909caa7 fix: add RUST_BACKTRACE=full when running cargo test in CI 2025-04-24 18:03:21 -07:00
Michael Bolin
5cdcbfa9b4 fix: only run rust-ci.yml on PRs that modify files in codex-rs (#637)
The `rust-ci.yml` build appears to be a bit flaky (we're looking into
it...), so to save TypeScript contributors some noise, restrict the
`rust-ci.yml` job so that it only runs on PRs that touch files in
`codex-rs/`.
2025-04-24 17:59:35 -07:00
Michael Bolin
3b7b999a5e merge commit for archive created by Sapling 2025-04-24 17:56:29 -07:00
Michael Bolin
eec2b1a3d4 fix: for now, only run rust-ci.yml on PRs that modify files in codex-rs 2025-04-24 17:56:23 -07:00
Michael Bolin
bd71affbd1 Merge c9dffbaf04 into sapling-pr-archive-bolinfest 2025-04-24 17:54:48 -07:00
Michael Bolin
c9dffbaf04 fix: for now, only run rust-ci.yml on PRs that modify files in codex-rs 2025-04-24 17:54:42 -07:00
Michael Bolin
f356dfe8d6 Merge d2cb604b7d into sapling-pr-archive-bolinfest 2025-04-24 17:46:19 -07:00
Michael Bolin
d2cb604b7d fix: close stdin when running an exec tool call 2025-04-24 17:46:10 -07:00
Luci
c38c2a59c7 fix(utils): save config (#578)
## Description

When `saveConfig` is called, the project doc is incorrectly saved into
user instructions. This change ensures that only user instructions are
saved to `instructions.md` during saveConfig, preventing data
corruption.

close: #576

---------

Co-authored-by: Thibault Sottiaux <tibo@openai.com>
2025-04-24 17:32:33 -07:00
Michael Bolin
58f0e5ab74 feat: introduce codex_execpolicy crate for defining "safe" commands (#634)
As described in detail in `codex-rs/execpolicy/README.md` introduced in
this PR, `execpolicy` is a tool that lets you define a set of _patterns_
used to match [`execv(3)`](https://linux.die.net/man/3/execv)
invocations. When a pattern is matched, `execpolicy` returns the parsed
version in a structured form that is amenable to static analysis.

The primary use case is to define patterns match commands that should be
auto-approved by a tool such as Codex. This supports a richer pattern
matching mechanism that the sort of prefix-matching we have done to
date, e.g.:


5e40d9d221/codex-cli/src/approvals.ts (L333-L354)

Note we are still playing with the API and the `system_path` option in
particular still needs some work.
2025-04-24 17:14:47 -07:00
Michael Bolin
b6d4412762 merge commit for archive created by Sapling 2025-04-24 17:07:42 -07:00
Michael Bolin
687dc8b68b feat: introduce codex_execpolicy crate for defining "safe" commands 2025-04-24 17:07:37 -07:00