Skip to content

Commit a2ca7db

Browse files
committed
BREAKING: namespace change to codex_app_server_sdk
- move implementation to canonical package namespace - remove codex_app_server_client compatibility shim package - update tests to import/patch codex_app_server_sdk modules directly - update packaging to ship only src/codex_app_server_sdk - clean README to remove legacy import migration block - bump version to 0.3.0 BREAKING CHANGE: legacy imports from codex_app_server_client are no longer supported; use codex_app_server_sdk.
1 parent f89bff7 commit a2ca7db

40 files changed

Lines changed: 155 additions & 151 deletions

README.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# codex-app-server-client
1+
# codex-app-server-sdk
22

33
High-level async Python client for `codex app-server`.
44

@@ -47,7 +47,7 @@ uv pip install codex-app-server-sdk
4747

4848
```python
4949
import asyncio
50-
from codex_app_server_client import CodexClient
50+
from codex_app_server_sdk import CodexClient
5151

5252

5353
async def main() -> None:
@@ -70,7 +70,7 @@ You can override via:
7070

7171
```python
7272
import asyncio
73-
from codex_app_server_client import CodexClient
73+
from codex_app_server_sdk import CodexClient
7474

7575

7676
async def main() -> None:
@@ -92,7 +92,7 @@ Both high-level APIs support resuming the same running turn.
9292

9393
```python
9494
import asyncio
95-
from codex_app_server_client import CodexClient, CodexTurnInactiveError
95+
from codex_app_server_sdk import CodexClient, CodexTurnInactiveError
9696

9797

9898
async def main() -> None:
@@ -128,7 +128,7 @@ Use explicit thread handles when you need thread-scoped configuration.
128128

129129
```python
130130
import asyncio
131-
from codex_app_server_client import CodexClient, ThreadConfig, TurnOverrides
131+
from codex_app_server_sdk import CodexClient, ThreadConfig, TurnOverrides
132132

133133

134134
async def main() -> None:
@@ -176,7 +176,7 @@ asyncio.run(main())
176176
Example:
177177

178178
```python
179-
from codex_app_server_client import ThreadConfig, UNSET
179+
from codex_app_server_sdk import ThreadConfig, UNSET
180180

181181
cfg = ThreadConfig(
182182
model=UNSET, # omit key
@@ -376,7 +376,7 @@ uv run python examples/chat_session_websocket.py
376376

377377
## API reference (quick)
378378

379-
### `CodexClient` (`src/codex_app_server_client/client.py`)
379+
### `CodexClient` (`src/codex_app_server_sdk/client.py`)
380380

381381
- `connect_stdio(...)`: create a stdio-configured client (unstarted).
382382
- `connect_websocket(...)`: create a websocket-configured client (unstarted).
@@ -404,13 +404,13 @@ uv run python examples/chat_session_websocket.py
404404
- `interrupt_turn(turn_id, timeout=None)`: low-level turn interruption request.
405405
- `close()`: cancel receive loop and close transport.
406406

407-
### `Transport` and implementations (`src/codex_app_server_client/transport.py`)
407+
### `Transport` and implementations (`src/codex_app_server_sdk/transport.py`)
408408

409409
- `Transport.connect/send/recv/close`: abstract interface.
410410
- `StdioTransport`: line-delimited JSON over subprocess stdin/stdout.
411411
- `WebSocketTransport`: JSON messages over websocket frames.
412412

413-
### Data models (`src/codex_app_server_client/models.py`)
413+
### Data models (`src/codex_app_server_sdk/models.py`)
414414

415415
- `InitializeResult`: parsed initialize response (`protocol_version`, `server_info`, `capabilities`, `raw`).
416416
- `ConversationStep`: completed step from `chat(...)` (`step_type`, `item_type`, `text`, `item_id`, `thread_id`, `turn_id`, `data`).
@@ -422,7 +422,7 @@ uv run python examples/chat_session_websocket.py
422422
- `UNSET`: sentinel for “omit this field from request payload.”
423423
- `ApprovalPolicy`: literal type for approval policy values (`untrusted`, `on-failure`, `on-request`, `never`).
424424

425-
### `ThreadHandle` (`src/codex_app_server_client/client.py`)
425+
### `ThreadHandle` (`src/codex_app_server_sdk/client.py`)
426426

427427
- `thread_id`: bound thread id.
428428
- `defaults`: local thread config snapshot.
@@ -434,7 +434,7 @@ uv run python examples/chat_session_websocket.py
434434
- `set_name(name)`, `archive()`, `unarchive()`, `rollback(num_turns)`, `compact()`: thread lifecycle/history helpers.
435435
- `start_review(target, delivery=None)`: thread-bound review API.
436436

437-
### Exceptions (`src/codex_app_server_client/errors.py`)
437+
### Exceptions (`src/codex_app_server_sdk/errors.py`)
438438

439439
- `CodexError`: base exception.
440440
- `CodexTransportError`: transport/connectivity problems.
@@ -475,7 +475,7 @@ When `params=None`, the client sends:
475475
{
476476
"protocolVersion": "1",
477477
"clientInfo": {
478-
"name": "codex-app-server-client",
478+
"name": "codex-app-server-sdk",
479479
"version": "0.1.0"
480480
},
481481
"capabilities": {
@@ -520,7 +520,7 @@ Merge rules:
520520

521521
```python
522522
import asyncio
523-
from codex_app_server_client import CodexClient
523+
from codex_app_server_sdk import CodexClient
524524

525525

526526
async def main() -> None:

docs/api/client.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
# `codex_app_server_client.client`
1+
# `codex_app_server_sdk.client`
22

3-
::: codex_app_server_client.client
3+
::: codex_app_server_sdk.client

docs/api/errors.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
# `codex_app_server_client.errors`
1+
# `codex_app_server_sdk.errors`
22

3-
::: codex_app_server_client.errors
3+
::: codex_app_server_sdk.errors

docs/api/models.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
# `codex_app_server_client.models`
1+
# `codex_app_server_sdk.models`
22

3-
::: codex_app_server_client.models
3+
::: codex_app_server_sdk.models

docs/api/package.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
# `codex_app_server_client`
1+
# `codex_app_server_sdk`
22

3-
::: codex_app_server_client
3+
::: codex_app_server_sdk

docs/api/protocol.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
# `codex_app_server_client.protocol`
1+
# `codex_app_server_sdk.protocol`
22

3-
::: codex_app_server_client.protocol
3+
::: codex_app_server_sdk.protocol

docs/api/transport.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
# `codex_app_server_client.transport`
1+
# `codex_app_server_sdk.transport`
22

3-
::: codex_app_server_client.transport
3+
::: codex_app_server_sdk.transport

docs/behavior-guarantees.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,21 @@ This page records intended high-level behavior for consumers.
44

55
## Related API
66

7-
- [`CodexClient.chat(...)`](api/client.md#codex_app_server_client.client.CodexClient.chat)
8-
- [`CodexClient.chat_once(...)`](api/client.md#codex_app_server_client.client.CodexClient.chat_once)
9-
- [`CodexTurnInactiveError`](api/errors.md#codex_app_server_client.errors.CodexTurnInactiveError)
10-
- [`CodexClient.cancel(...)`](api/client.md#codex_app_server_client.client.CodexClient.cancel)
11-
- [`CodexClient`](api/client.md#codex_app_server_client.client.CodexClient)
7+
- [`CodexClient.chat(...)`](api/client.md#codex_app_server_sdk.client.CodexClient.chat)
8+
- [`CodexClient.chat_once(...)`](api/client.md#codex_app_server_sdk.client.CodexClient.chat_once)
9+
- [`CodexTurnInactiveError`](api/errors.md#codex_app_server_sdk.errors.CodexTurnInactiveError)
10+
- [`CodexClient.cancel(...)`](api/client.md#codex_app_server_sdk.client.CodexClient.cancel)
11+
- [`CodexClient`](api/client.md#codex_app_server_sdk.client.CodexClient)
1212

1313
## Streaming model
1414

15-
- [`chat(...)`](api/client.md#codex_app_server_client.client.CodexClient.chat) yields completed, non-delta step blocks.
15+
- [`chat(...)`](api/client.md#codex_app_server_sdk.client.CodexClient.chat) yields completed, non-delta step blocks.
1616
- step stream is based on live turn notifications (`item/completed`).
17-
- snapshot backfill from `thread/read` is not merged into [`chat(...)`](api/client.md#codex_app_server_client.client.CodexClient.chat).
17+
- snapshot backfill from `thread/read` is not merged into [`chat(...)`](api/client.md#codex_app_server_sdk.client.CodexClient.chat).
1818

1919
## Final text resolution
2020

21-
- [`chat_once(...)`](api/client.md#codex_app_server_client.client.CodexClient.chat_once) prefers completed assistant messages from live events.
21+
- [`chat_once(...)`](api/client.md#codex_app_server_sdk.client.CodexClient.chat_once) prefers completed assistant messages from live events.
2222
- fallback to `thread/read(includeTurns=true)` is used when needed to recover final text.
2323

2424
## Timeout model
@@ -29,13 +29,13 @@ This page records intended high-level behavior for consumers.
2929

3030
## Continuation model
3131

32-
- inactivity timeout raises [`CodexTurnInactiveError`](api/errors.md#codex_app_server_client.errors.CodexTurnInactiveError) with continuation token.
32+
- inactivity timeout raises [`CodexTurnInactiveError`](api/errors.md#codex_app_server_sdk.errors.CodexTurnInactiveError) with continuation token.
3333
- continuation can resume the same running turn in the same client instance.
3434
- continuation cannot be combined with fresh turn input/options.
3535

3636
## Cancel model
3737

38-
- [`cancel(...)`](api/client.md#codex_app_server_client.client.CodexClient.cancel) sends best-effort interrupt.
38+
- [`cancel(...)`](api/client.md#codex_app_server_sdk.client.CodexClient.cancel) sends best-effort interrupt.
3939
- unread steps/events since continuation cursor are returned.
4040
- internal state is cleaned so thread reuse is safe.
4141

docs/conversation.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@
22

33
## Related API
44

5-
- [`CodexClient.chat_once(...)`](api/client.md#codex_app_server_client.client.CodexClient.chat_once)
6-
- [`CodexClient.chat(...)`](api/client.md#codex_app_server_client.client.CodexClient.chat)
7-
- [`CodexClient.start_thread(...)`](api/client.md#codex_app_server_client.client.CodexClient.start_thread)
8-
- [`ThreadHandle`](api/client.md#codex_app_server_client.client.ThreadHandle)
9-
- [`TurnOverrides`](api/models.md#codex_app_server_client.models.TurnOverrides)
5+
- [`CodexClient.chat_once(...)`](api/client.md#codex_app_server_sdk.client.CodexClient.chat_once)
6+
- [`CodexClient.chat(...)`](api/client.md#codex_app_server_sdk.client.CodexClient.chat)
7+
- [`CodexClient.start_thread(...)`](api/client.md#codex_app_server_sdk.client.CodexClient.start_thread)
8+
- [`ThreadHandle`](api/client.md#codex_app_server_sdk.client.ThreadHandle)
9+
- [`TurnOverrides`](api/models.md#codex_app_server_sdk.models.TurnOverrides)
1010

1111
Two high-level conversation entrypoints are provided:
1212

13-
- [`chat_once(...)`](api/client.md#codex_app_server_client.client.CodexClient.chat_once): one message in, final assistant text out
14-
- [`chat(...)`](api/client.md#codex_app_server_client.client.CodexClient.chat): async iterator of completed, non-delta step blocks
13+
- [`chat_once(...)`](api/client.md#codex_app_server_sdk.client.CodexClient.chat_once): one message in, final assistant text out
14+
- [`chat(...)`](api/client.md#codex_app_server_sdk.client.CodexClient.chat): async iterator of completed, non-delta step blocks
1515

1616
## `chat_once(...)`
1717

@@ -34,12 +34,12 @@ async for step in client.chat("Diagnose this failure"):
3434

3535
### Step source semantics
3636

37-
[`chat(...)`](api/client.md#codex_app_server_client.client.CodexClient.chat) emits steps from live `item/completed` notifications for the active
37+
[`chat(...)`](api/client.md#codex_app_server_sdk.client.CodexClient.chat) emits steps from live `item/completed` notifications for the active
3838
turn. It does not merge `thread/read` snapshot items into the same stream.
3939

4040
## Thread binding
4141

42-
You can call APIs directly with `thread_id=...`, or use [`ThreadHandle`](api/client.md#codex_app_server_client.client.ThreadHandle):
42+
You can call APIs directly with `thread_id=...`, or use [`ThreadHandle`](api/client.md#codex_app_server_sdk.client.ThreadHandle):
4343

4444
```python
4545
thread = await client.start_thread()
@@ -49,6 +49,6 @@ result = await thread.chat_once("Hello")
4949
## Per-turn metadata and overrides
5050

5151
- `metadata` is applied on `turn/start`
52-
- [`TurnOverrides`](api/models.md#codex_app_server_client.models.TurnOverrides) controls per-turn execution options (`cwd`, `model`, `effort`, etc.)
52+
- [`TurnOverrides`](api/models.md#codex_app_server_sdk.models.TurnOverrides) controls per-turn execution options (`cwd`, `model`, `effort`, etc.)
5353
- when resuming with `continuation=...`, do not pass `text`, `thread_id`,
5454
`user`, `metadata`, `thread_config`, or `turn_overrides`

docs/examples.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ All examples live in `examples/`.
44

55
## Related API
66

7-
- [`CodexClient`](api/client.md#codex_app_server_client.client.CodexClient)
8-
- [`ThreadHandle`](api/client.md#codex_app_server_client.client.ThreadHandle)
9-
- [`CodexClient.chat(...)`](api/client.md#codex_app_server_client.client.CodexClient.chat)
10-
- [`CodexClient.chat_once(...)`](api/client.md#codex_app_server_client.client.CodexClient.chat_once)
11-
- [`CodexClient.cancel(...)`](api/client.md#codex_app_server_client.client.CodexClient.cancel)
12-
- [`CodexClient.start_thread(...)`](api/client.md#codex_app_server_client.client.CodexClient.start_thread)
13-
- [`CodexClient.resume_thread(...)`](api/client.md#codex_app_server_client.client.CodexClient.resume_thread)
7+
- [`CodexClient`](api/client.md#codex_app_server_sdk.client.CodexClient)
8+
- [`ThreadHandle`](api/client.md#codex_app_server_sdk.client.ThreadHandle)
9+
- [`CodexClient.chat(...)`](api/client.md#codex_app_server_sdk.client.CodexClient.chat)
10+
- [`CodexClient.chat_once(...)`](api/client.md#codex_app_server_sdk.client.CodexClient.chat_once)
11+
- [`CodexClient.cancel(...)`](api/client.md#codex_app_server_sdk.client.CodexClient.cancel)
12+
- [`CodexClient.start_thread(...)`](api/client.md#codex_app_server_sdk.client.CodexClient.start_thread)
13+
- [`CodexClient.resume_thread(...)`](api/client.md#codex_app_server_sdk.client.CodexClient.resume_thread)
1414

1515
## `chat_steps_rich.py`
1616

@@ -43,7 +43,7 @@ uv run python examples/thread_resume_by_id.py --thread-id <existing-thread-id>
4343

4444
## `thread_concurrent_handles.py`
4545

46-
Runs two fresh [`ThreadHandle`](api/client.md#codex_app_server_client.client.ThreadHandle)s concurrently over one shared client connection.
46+
Runs two fresh [`ThreadHandle`](api/client.md#codex_app_server_sdk.client.ThreadHandle)s concurrently over one shared client connection.
4747

4848
```bash
4949
uv run python examples/thread_concurrent_handles.py --transport stdio

0 commit comments

Comments
 (0)