Commit Graph
10389 Commits
Author SHA1 Message Date
Michael Bolin 1ca44623cc Merge 6759b7b659 into sapling-pr-archive-bolinfest 2026-03-27 17:24:22 -07:00
Michael Bolin 6759b7b659 shell-command: reuse a PowerShell parser process on Windows 2026-03-27 17:24:10 -07:00
Michael Bolin adb3b736ca Merge 880a15a281 into sapling-pr-archive-bolinfest 2026-03-27 17:21:45 -07:00
Michael Bolin 880a15a281 chore: enforce argument-comment lint across all targets 2026-03-27 17:21:27 -07:00
Michael Bolin 298f66831e Merge a547507e48 into sapling-pr-archive-bolinfest 2026-03-27 16:57:25 -07:00
Michael Bolin a547507e48 fix: speed up test that uses PowerShell 2026-03-27 16:57:04 -07:00
Michael Bolin f367c71f6a merge commit for archive created by Sapling 2026-03-27 16:50:04 -07:00
Michael Bolin 28ac0c9171 chore: enforce argument-comment lint across all targets 2026-03-27 16:49:54 -07:00
Michael Bolin fb9bc28e9d merge commit for archive created by Sapling 2026-03-27 16:36:37 -07:00
Michael Bolin c42afa14dd wip: experiment with windows bazel v8 build 2026-03-27 16:36:26 -07:00
Michael Bolin c790a31e72 Merge 05737eb51e into sapling-pr-archive-bolinfest 2026-03-27 16:21:24 -07:00
Michael Bolin 05737eb51e chore: enforce argument-comment lint across all targets 2026-03-27 16:17:50 -07:00
Michael Bolin 2f8f47d1d6 merge commit for archive created by Sapling 2026-03-27 16:16:12 -07:00
Michael Bolin 983cfac0ac fix: stabilize SDK CI codex setup 2026-03-27 16:16:03 -07:00
Michael Bolin a2cbf3ca9c merge commit for archive created by Sapling 2026-03-27 16:14:41 -07:00
Michael Bolin a4fa041e7f chore: enforce argument-comment lint across all targets 2026-03-27 16:14:21 -07:00
Michael Bolin d3d62c9949 merge commit for archive created by Sapling 2026-03-27 16:12:35 -07:00
Michael Bolin 663b70848c fix: stabilize SDK CI codex setup 2026-03-27 16:12:14 -07:00
Michael Bolin 57be029551 Merge 475d54fdd1 into sapling-pr-archive-bolinfest 2026-03-27 16:09:09 -07:00
Michael Bolin 475d54fdd1 fix: stabilize SDK CI codex setup 2026-03-27 16:09:01 -07:00
Michael Bolin b98ab1d3e4 merge commit for archive created by Sapling 2026-03-27 16:07:46 -07:00
Michael Bolin f0b75c2560 wip: experiment with windows bazel v8 build 2026-03-27 16:07:31 -07:00
Michael Bolin 80d10cb8e0 merge commit for archive created by Sapling 2026-03-27 16:02:57 -07:00
Michael Bolin 895404b2fb wip: experiment with windows bazel v8 build 2026-03-27 16:02:45 -07:00
Drew Hintz f4f6eca871 [codex] Pin GitHub Actions workflow references (#15828)
Pin floating external GitHub Actions workflow refs to immutable SHAs.

Why are we doing this? Please see the rationale doc:
https://docs.google.com/document/d/1qOURCNx2zszQ0uWx7Fj5ERu4jpiYjxLVWBWgKa2wTsA/edit?tab=t.0

Did this break you? Please roll back and let hintz@ know
2026-03-27 23:00:05 +00:00
Michael Bolin d6eb030adf Merge 576ee3cb8b into sapling-pr-archive-bolinfest 2026-03-27 15:57:34 -07:00
Michael Bolin 576ee3cb8b fix: stabilize SDK CI codex setup 2026-03-27 15:57:30 -07:00
Eric Traut d65deec617 Remove the legacy TUI split (#15922)
This is the part 1 of 2 PRs that will delete the `tui` /
`tui_app_server` split. This part simply deletes the existing `tui`
directory and marks the `tui_app_server` feature flag as removed. I left
the `tui_app_server` feature flag in place for now so its presence
doesn't result in an error. It is simply ignored.

Part 2 will rename the `tui_app_server` directory `tui`. I did this as
two parts to reduce visible code churn.
2026-03-27 22:56:44 +00:00
Michael Bolin 13c039cff4 Merge 71a5905914 into sapling-pr-archive-bolinfest 2026-03-27 15:49:18 -07:00
Michael Bolin 71a5905914 wip: experiment with windows bazel v8 build 2026-03-27 15:49:10 -07:00
Michael Bolin b9da88bc5b merge commit for archive created by Sapling 2026-03-27 15:48:57 -07:00
Michael Bolin aaffe47501 wip: experiment with windows bazel v8 build 2026-03-27 15:48:43 -07:00
Michael Bolin 3da9d1d3a1 merge commit for archive created by Sapling 2026-03-27 15:46:56 -07:00
Michael Bolin 55fdf0a3b5 fix: stabilize SDK CI codex setup 2026-03-27 15:46:49 -07:00
iceweasel-oai 307e427a9b don't include redundant write roots in apply_patch (#16030)
apply_patch sometimes provides additional parent dir as a writable root
when it is already writable. This is mostly a no-op on Mac/Linux but
causes actual ACL churn on Windows that is best avoided. We are also
seeing some actual failures with these ACLs in the wild, which I haven't
fully tracked down, but it's safe/best to avoid doing it altogether.
2026-03-27 15:41:51 -07:00
Michael Bolin 0d2f67d4c6 merge commit for archive created by Sapling 2026-03-27 15:41:21 -07:00
Michael Bolin e7c455cb34 fix: stabilize SDK CI codex setup 2026-03-27 15:41:09 -07:00
Michael Bolin 1e6cf2940b merge commit for archive created by Sapling 2026-03-27 15:36:11 -07:00
Michael Bolin e800aa2d84 fix: stabilize SDK CI codex setup 2026-03-27 15:36:01 -07:00
Michael Bolin df1d6f3928 Merge 8370066556 into sapling-pr-archive-bolinfest 2026-03-27 15:31:37 -07:00
Michael Bolin 8370066556 fix: stabilize SDK CI codex setup 2026-03-27 15:31:09 -07:00
Matthew Zeng 5b71e5104f [mcp] Bypass read-only tool checks. (#16044)
- [x] Auto / unspecified approval mode: read-only tools now skip before
guardian routing.
- [x] Approve / always-allow mode: read-only tools still skip, now via
the shared early return.
- [x] Prompt mode: read-only tools no longer skip; they continue to
approval.
2026-03-27 15:22:04 -07:00
Eric Traut 465897dd0f Fix /copy regression in tui_app_server turn completion (#16021)
Addresses #16019

`tui_app_server` renders completed assistant messages from item
notifications, but it only updated `/copy` state from `turn/completed`.
After the app-server migration, turn completion no longer repeats the
final assistant text, so `/copy` could stay unavailable even after the
first normal response.

This PR track the last completed final-answer agent message during an
active app-server turn and promote it into the `/copy` cache when the
turn completes. This restores the pre-migration behavior without
changing rollback handling.
2026-03-27 16:00:24 -06:00
Michael Bolin 9f8475683b Merge d06ae316d6 into sapling-pr-archive-bolinfest 2026-03-27 14:55:28 -07:00
Michael Bolin d06ae316d6 codex-tools: extract tool spec models 2026-03-27 14:47:30 -07:00
Michael Bolin 19fc3dacf1 Merge 4172ee10c7 into sapling-pr-archive-bolinfest 2026-03-27 14:34:35 -07:00
Michael Bolin 4172ee10c7 fix: stabilize SDK CI codex setup 2026-03-27 14:34:29 -07:00
Eric Traut c5778dfca2 Fix tui_app_server hook notification rendering and replay (#16013)
Addresses #15984

HookStarted/HookCompleted notifications were being translated through a
fragile JSON bridge, so hook status/output never reached the renderer.
Early hook notifications could also be dropped during session refresh
before replay.

This PR fixes `tui_app_server` by mapping app-server hook notifications
into TUI hook events explicitly and preserving buffered hook
notifications across refresh, so cold-start and resumed sessions render
the same hook UI as the legacy TUI.
2026-03-27 15:33:51 -06:00
Michael Bolin 16d4ea9ca8 codex-tools: extract responses API tool models (#16031)
## Why

The previous extraction steps moved shared tool-schema parsing into
`codex-tools`, but `codex-core` still owned the generic Responses API
tool models and the last adapter layer that turned parsed tool
definitions into `ResponsesApiTool` values.

That left `core/src/tools/spec.rs` and `core/src/client_common.rs`
holding a chunk of tool-shaping code that does not need session state,
runtime plumbing, or any other `codex-core`-specific dependency. As a
result, `codex-tools` owned the parsed tool definition, but `codex-core`
still owned the generic wire model that those definitions are converted
into.

This change moves that boundary one step further. `codex-tools` now owns
the reusable Responses/tool wire structs and the shared conversion
helpers for dynamic tools, MCP tools, and deferred MCP aliases.
`codex-core` continues to own `ToolSpec` orchestration and the remaining
web-search-specific request shapes.

## What changed

- added `tools/src/responses_api.rs` to own `ResponsesApiTool`,
`FreeformTool`, `ToolSearchOutputTool`, namespace output types, and the
shared `ToolDefinition -> ResponsesApiTool` adapter helpers
- added `tools/src/responses_api_tests.rs` for deferred-loading
behavior, adapter coverage, and namespace serialization coverage
- rewired `core/src/tools/spec.rs` to use the extracted dynamic/MCP
adapter helpers instead of defining those conversions locally
- rewired `core/src/tools/handlers/tool_search.rs` to use the extracted
deferred MCP adapter and namespace output types directly
- slimmed `core/src/client_common.rs` so it now keeps `ToolSpec` and the
web-search-specific wire types, while reusing the extracted tool models
from `codex-tools`
- moved the extracted seam tests out of `core` and updated
`codex-rs/tools/README.md` plus `tools/src/lib.rs` to reflect the
expanded `codex-tools` boundary

## Test plan

- `cargo test -p codex-tools`
- `cargo test -p codex-core --lib tools::spec::`
- `cargo test -p codex-core --lib tools::handlers::tool_search::`
- `just fix -p codex-tools -p codex-core`
- `just argument-comment-lint`

## References

- [#15923](https://github.com/openai/codex/pull/15923) `codex-tools:
extract shared tool schema parsing`
- [#15928](https://github.com/openai/codex/pull/15928) `codex-tools:
extract MCP schema adapters`
- [#15944](https://github.com/openai/codex/pull/15944) `codex-tools:
extract dynamic tool adapters`
- [#15953](https://github.com/openai/codex/pull/15953) `codex-tools:
introduce named tool definitions`
2026-03-27 14:26:54 -07:00
bwanner-oai 82e8031338 Add usage-based business plan types (#15934)
## Summary
- add `self_serve_business_usage_based` and `enterprise_cbp_usage_based`
to the public/internal plan enums and regenerate the app-server + Python
SDK artifacts
- map both plans through JWT login and backend rate-limit payloads, then
bucket them with the existing Team/Business entitlement behavior in
cloud requirements, usage-limit copy, tooltips, and status display
- keep the earlier display-label remap commit on this branch so the new
Team-like and Business-like plans render consistently in the UI

## Testing
- `just write-app-server-schema`
- `uv run --project sdk/python python
sdk/python/scripts/update_sdk_artifacts.py generate-types`
- `just fix -p codex-protocol -p codex-login -p codex-core -p
codex-backend-client -p codex-cloud-requirements -p codex-tui -p
codex-tui-app-server -p codex-backend-openapi-models`
- `just fmt`
- `just argument-comment-lint`
- `cargo test -p codex-protocol
usage_based_plan_types_use_expected_wire_names`
- `cargo test -p codex-login usage_based`
- `cargo test -p codex-backend-client usage_based`
- `cargo test -p codex-cloud-requirements usage_based`
- `cargo test -p codex-core usage_limit_reached_error_formats_`
- `cargo test -p codex-tui plan_type_display_name_remaps_display_labels`
- `cargo test -p codex-tui remapped`
- `cargo test -p codex-tui-app-server
plan_type_display_name_remaps_display_labels`
- `cargo test -p codex-tui-app-server remapped`
- `cargo test -p codex-tui-app-server
preserves_usage_based_plan_type_wire_name`

## Notes
- a broader multi-crate `cargo test` run still hits unrelated existing
guardian-approval config failures in
`codex-rs/core/src/config/config_tests.rs`
2026-03-27 14:25:13 -07:00