pi-openai-codex-compat 0.0.17 → 0.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 0.0.18 - 2026-09-30
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- Keep Pi 0.99 running in the terminal UI. Pi 0.99's footer reads session
|
|
10
|
+
methods the Codex footer did not provide, so Pi exited on its first render.
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Opt-in Responses Lite for GPT-6.1 Sol. GPT-6.1 Sol uses standard reasoning
|
|
15
|
+
mode even when `pro` is configured.
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- Require Pi `>=0.99.1 <0.100.0`. Restart Pi after upgrading it.
|
|
20
|
+
|
|
5
21
|
## 0.0.17 - 2026-09-25
|
|
6
22
|
|
|
7
23
|
### Fixed
|
package/README.md
CHANGED
|
@@ -22,7 +22,7 @@ Pi provides the Codex OAuth flow and model catalog. At session start, this packa
|
|
|
22
22
|
## Requirements
|
|
23
23
|
|
|
24
24
|
- Node.js 22.19 or newer
|
|
25
|
-
- Pi `>=0.
|
|
25
|
+
- Pi `>=0.99.1 <0.100.0`
|
|
26
26
|
- An OpenAI Codex login in Pi
|
|
27
27
|
|
|
28
28
|
Restart Pi after upgrading its runtime. `/reload` reloads extensions but cannot
|
|
@@ -269,10 +269,15 @@ Defaults:
|
|
|
269
269
|
| `reasoningMode` | `standard`, `pro` | `standard` | Controls supported models' execution mode independently of Pi's reasoning-effort control. The default omits `reasoning.mode`; `pro` sends `reasoning.mode: "pro"`. |
|
|
270
270
|
|
|
271
271
|
Responses Lite supports exactly `gpt-5.6-sol`, `gpt-5.6-terra`, `gpt-5.6-luna`,
|
|
272
|
-
`gpt-6-astra`, `gpt-6-sol`, and `gpt-6-
|
|
273
|
-
`gpt-5.6`, `gpt-5.6-*`, and exactly `gpt-6-astra`. GPT-6 Sol
|
|
274
|
-
standard reasoning mode even when `pro` is configured.
|
|
275
|
-
opt-in. GPT-6 Sol
|
|
272
|
+
`gpt-6-astra`, `gpt-6-sol`, `gpt-6-luna`, and `gpt-6.1-sol`. Pro reasoning mode
|
|
273
|
+
supports `gpt-5.6`, `gpt-5.6-*`, and exactly `gpt-6-astra`. GPT-6 Sol, GPT-6
|
|
274
|
+
Luna, and GPT-6.1 Sol use standard reasoning mode even when `pro` is configured.
|
|
275
|
+
Both controls remain opt-in. GPT-6.1 Sol requires Pi 0.99.1's model catalog.
|
|
276
|
+
|
|
277
|
+
As of September 30, 2026, the Codex endpoint rejects `reasoning.mode` for every
|
|
278
|
+
tested model, including those listed above, so `pro` requests fail there. The
|
|
279
|
+
setting remains for providers that accept it. Releases do not test pro mode
|
|
280
|
+
against `openai-codex`.
|
|
276
281
|
|
|
277
282
|
Invalid JSON setting values are ignored and invalid JSON does not prevent Pi from
|
|
278
283
|
starting. The settings pane reports malformed JSON instead of overwriting it.
|
|
@@ -645,7 +650,7 @@ npm run pack:dry
|
|
|
645
650
|
`mise run check` runs the linters, formatters, type checks, and the offline
|
|
646
651
|
test suite; `mise run test` runs only the offline suite. Both tasks bind
|
|
647
652
|
`PI_PACKAGE_DIR` to `node_modules/@earendil-works/pi-coding-agent`, so tests
|
|
648
|
-
that load Pi in-process read this repository's Pi 0.
|
|
653
|
+
that load Pi in-process read this repository's Pi 0.99.1 resources even when a
|
|
649
654
|
global `PI_PACKAGE_DIR` points at another installation. Ordinary `pi` launches
|
|
650
655
|
outside these tasks are unaffected. Offline tests also exercise
|
|
651
656
|
`scripts/release.ts` with every child process mocked: they never run Git, npm,
|
|
@@ -661,11 +666,11 @@ mise run test:live:codex
|
|
|
661
666
|
```
|
|
662
667
|
|
|
663
668
|
The task obtains the local Codex bearer token and runs the tests with
|
|
664
|
-
`gpt-5.6-luna`, `gpt-6-sol`, and `gpt-6-
|
|
665
|
-
It also packs the extension and loads that archive through the shipped Pi
|
|
666
|
-
0.
|
|
669
|
+
`gpt-5.6-luna`, `gpt-6-sol`, `gpt-6-luna`, and `gpt-6.1-sol` at medium reasoning
|
|
670
|
+
effort. It also packs the extension and loads that archive through the shipped Pi
|
|
671
|
+
0.99.1 CLI. Ordinary Responses and Responses Lite tests exercise tool calls,
|
|
667
672
|
prompt reload, native compaction, and persisted-session resume against Codex.
|
|
668
|
-
All
|
|
673
|
+
All four models use standard reasoning mode. SDK tests verify Responses Lite
|
|
669
674
|
WebSocket history, prewarming, continuation, and the built-in read tool.
|
|
670
675
|
CLI tests also execute the built-in read tool after resume.
|
|
671
676
|
Test credentials stay in memory and child-process environments. Test sessions
|
|
@@ -679,9 +684,9 @@ The packaged-CLI test selects its archive and executable as follows:
|
|
|
679
684
|
existing regular file that `tar` can list, and an empty, missing, directory,
|
|
680
685
|
or invalid value fails the test instead of falling back to a fresh pack.
|
|
681
686
|
- `PI_CODEX_CLI_PATH` selects another Pi `cli.js`; the default is this
|
|
682
|
-
repository's Pi 0.
|
|
683
|
-
executable reports version 0.
|
|
684
|
-
is run against. The supported range is `>=0.
|
|
687
|
+
repository's Pi 0.99.1 dependency. The test asserts that the selected
|
|
688
|
+
executable reports version 0.99.1, the only Pi version the packaged CLI test
|
|
689
|
+
is run against. The supported range is `>=0.99.1 <0.100.0`.
|
|
685
690
|
- Each Pi child process receives `PI_PACKAGE_DIR` bound to the selected
|
|
686
691
|
executable's package directory, so the runtime under test reads its own
|
|
687
692
|
metadata.
|
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
type ExtensionContext,
|
|
5
5
|
type ReadonlyFooterDataProvider,
|
|
6
6
|
type SessionEntry,
|
|
7
|
+
type SessionManager,
|
|
7
8
|
} from "@earendil-works/pi-coding-agent";
|
|
8
9
|
import type { Component } from "@earendil-works/pi-tui";
|
|
9
10
|
import type { CodexCompatConfig } from "./config.ts";
|
|
@@ -69,14 +70,23 @@ export function footerModel(
|
|
|
69
70
|
return { ...model, id, reasoning: false };
|
|
70
71
|
}
|
|
71
72
|
|
|
73
|
+
/**
|
|
74
|
+
* The part of Pi's `AgentSession` that `FooterComponent` reads. Pi constructs the
|
|
75
|
+
* footer with its own session, so the compiler cannot check this adapter against
|
|
76
|
+
* the footer's actual reads; the packaged TUI test renders it through Pi.
|
|
77
|
+
*/
|
|
72
78
|
interface FooterSessionAdapter {
|
|
73
79
|
readonly state: {
|
|
74
80
|
model: Model<Api> | undefined;
|
|
75
81
|
thinkingLevel: string;
|
|
76
82
|
};
|
|
83
|
+
/** Pi keys its cached session statistics on this identity. */
|
|
84
|
+
readonly model: Model<Api> | undefined;
|
|
85
|
+
/** Extensions cannot observe virtual-model routing, so the footer omits it. */
|
|
86
|
+
readonly routedModel: undefined;
|
|
77
87
|
sessionManager: Pick<
|
|
78
|
-
|
|
79
|
-
"getEntries" | "getCwd" | "getSessionName"
|
|
88
|
+
SessionManager,
|
|
89
|
+
"getEntries" | "getEntryCount" | "getCwd" | "getLeafId" | "getSessionId" | "getSessionName"
|
|
80
90
|
>;
|
|
81
91
|
getContextUsage: () => ReturnType<ExtensionContext["getContextUsage"]>;
|
|
82
92
|
modelRuntime: {
|
|
@@ -190,13 +200,20 @@ class CachedFooterSession implements FooterSessionAdapter {
|
|
|
190
200
|
|
|
191
201
|
readonly sessionManager: FooterSessionAdapter["sessionManager"];
|
|
192
202
|
readonly modelRuntime: FooterSessionAdapter["modelRuntime"];
|
|
203
|
+
readonly routedModel = undefined;
|
|
193
204
|
|
|
194
205
|
constructor(ctx: FooterContext, resolveConfig: ConfigResolver) {
|
|
195
206
|
this.ctx = ctx;
|
|
196
207
|
this.resolveConfig = resolveConfig;
|
|
208
|
+
// Pi's footer caches its statistics by session id, leaf id, entry count, and
|
|
209
|
+
// model. The aggregated snapshot is keyed by the same session and leaf, so
|
|
210
|
+
// both caches refresh together.
|
|
197
211
|
this.sessionManager = {
|
|
198
212
|
getEntries: () => this.getSnapshot().entries,
|
|
213
|
+
getEntryCount: () => this.getSnapshot().entries.length,
|
|
199
214
|
getCwd: () => ctx.sessionManager.getCwd(),
|
|
215
|
+
getLeafId: () => ctx.sessionManager.getLeafId(),
|
|
216
|
+
getSessionId: () => ctx.sessionManager.getSessionId(),
|
|
200
217
|
getSessionName: () => this.getSnapshot().displayName,
|
|
201
218
|
};
|
|
202
219
|
this.modelRuntime = {
|
|
@@ -220,6 +237,10 @@ class CachedFooterSession implements FooterSessionAdapter {
|
|
|
220
237
|
};
|
|
221
238
|
}
|
|
222
239
|
|
|
240
|
+
get model(): Model<Api> | undefined {
|
|
241
|
+
return selectedRegistryModel(this.ctx);
|
|
242
|
+
}
|
|
243
|
+
|
|
223
244
|
get state(): FooterSessionAdapter["state"] {
|
|
224
245
|
const model = selectedRegistryModel(this.ctx);
|
|
225
246
|
return {
|
|
@@ -24,7 +24,7 @@ export const TRANSCRIPT_APIS = [
|
|
|
24
24
|
*/
|
|
25
25
|
export const SESSION_APIS = ["buildSessionProjection"] as const;
|
|
26
26
|
|
|
27
|
-
export const REQUIRED_PI = "Pi 0.
|
|
27
|
+
export const REQUIRED_PI = "Pi 0.99.x";
|
|
28
28
|
|
|
29
29
|
/** Check the loaded host, not package metadata that PI_PACKAGE_DIR can override. */
|
|
30
30
|
export function requirePiTranscriptRuntime(
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-openai-codex-compat",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.18",
|
|
4
4
|
"description": "OpenAI Codex compatibility for Pi with native compaction, fast mode, and Codex-optimized capabilities",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pi-package"
|
|
@@ -51,9 +51,9 @@
|
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@2h2d/oxlint-config": "0.1.1",
|
|
53
53
|
"@2h2d/ts-config": "0.0.1",
|
|
54
|
-
"@earendil-works/pi-ai": "0.
|
|
55
|
-
"@earendil-works/pi-coding-agent": "0.
|
|
56
|
-
"@earendil-works/pi-tui": "0.
|
|
54
|
+
"@earendil-works/pi-ai": "0.99.1",
|
|
55
|
+
"@earendil-works/pi-coding-agent": "0.99.1",
|
|
56
|
+
"@earendil-works/pi-tui": "0.99.1",
|
|
57
57
|
"@types/node": "22.20.1",
|
|
58
58
|
"oxfmt": "0.64.0",
|
|
59
59
|
"oxlint": "1.79.0",
|
|
@@ -62,9 +62,9 @@
|
|
|
62
62
|
"typescript": "7.0.2"
|
|
63
63
|
},
|
|
64
64
|
"peerDependencies": {
|
|
65
|
-
"@earendil-works/pi-ai": ">=0.
|
|
66
|
-
"@earendil-works/pi-coding-agent": ">=0.
|
|
67
|
-
"@earendil-works/pi-tui": ">=0.
|
|
65
|
+
"@earendil-works/pi-ai": ">=0.99.1 <0.100.0",
|
|
66
|
+
"@earendil-works/pi-coding-agent": ">=0.99.1 <0.100.0",
|
|
67
|
+
"@earendil-works/pi-tui": ">=0.99.1 <0.100.0",
|
|
68
68
|
"typebox": "*"
|
|
69
69
|
},
|
|
70
70
|
"engines": {
|