@oai404iao/pi-codex-minimal-tools 1.4.1-alpha.0 → 2.1.0

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/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  Codex-specific Responses support for Pi, driven by an exact per-model JSON
4
4
  catalog instead of model-name heuristics.
5
5
 
6
- Peer floor: Pi 0.84.2; tested against 0.84.2 and 0.85.1.
6
+ Peer floor: Pi 0.85.1; tested against 0.85.1.
7
7
 
8
8
  > npm identity stays `@oai404iao/pi-codex-minimal-tools`. This checkout composes
9
9
  > core, web-search and imagegen through a shared runtime. The four new packages
@@ -112,7 +112,9 @@ Without `PI_CODING_AGENT_DIR`, Pi normally uses `~/.config/pi/agent` or
112
112
  "enabled": true,
113
113
  "glyphStyle": "unicode",
114
114
  "autoEnable": true,
115
+ "webSocketEnabled": true,
115
116
  "fastMode": false,
117
+ "imageGeneration": true,
116
118
  "imageOutputDir": ".pi/openai-codex-images",
117
119
  "imageModel": "gpt-image-2",
118
120
  "directImageApiFallback": false,
@@ -126,7 +128,9 @@ Without `PI_CODING_AGENT_DIR`, Pi normally uses `~/.config/pi/agent` or
126
128
  | `enabled` | Enable all package behavior. |
127
129
  | `glyphStyle` | Use `unicode` or `ascii` UI glyphs. |
128
130
  | `autoEnable` | Add supported package tools automatically. |
131
+ | `webSocketEnabled` | Global Responses WebSocket master switch. Set `false` to force SSE and disable WebSocket prewarm for every model profile. |
129
132
  | `fastMode` | Global user toggle; only profiles with `fast` are affected. |
133
+ | `imageGeneration` | Global master switch. Set `false` to omit image tools, `/image-gen`, presentation, hosted injection, standalone requests, and direct fallback without changing other model behavior. |
130
134
  | `imageOutputDir` | Generated-image output directory. Relative paths resolve from the workspace root. |
131
135
  | `imageModel` | Image model used by standalone/hosted image requests and direct fallback. |
132
136
  | `directImageApiFallback` | Permit the separate `OPENAI_API_KEY` Images API fallback. |
@@ -134,7 +138,9 @@ Without `PI_CODING_AGENT_DIR`, Pi normally uses `~/.config/pi/agent` or
134
138
  | `deferApplyPatchRendering` | Use Pi's fallback renderer instead of the streaming patch preview. |
135
139
 
136
140
  The older model-level keys remain readable for one migration version, but are
137
- deprecated. See [Legacy migration](#legacy-migration).
141
+ deprecated and no longer appear in `config.schema.json`. `imageGeneration` is
142
+ the exception: it remains the supported global master switch. See
143
+ [Legacy migration](#legacy-migration).
138
144
 
139
145
  ### Per-Model Catalog
140
146
 
@@ -297,10 +303,12 @@ Important constraints:
297
303
  ## Built-In Profiles
298
304
 
299
305
  The bundled catalog is based on local Codex commit
300
- `eb9dceba1a2e658142a456c5898836774835616b` from August 12, 2026.
306
+ `eb9dceba1a2e658142a456c5898836774835616b` from August 12, 2026, with the
307
+ Astra profile updated from `ddea03ad049142943bdbf13e937b1d67e8c1ba0c`.
301
308
 
302
309
  | Models | Responses | Web | Image | Patch | Compaction |
303
310
  | --- | --- | --- | --- | --- | --- |
311
+ | `openai-codex/gpt-6-astra` | Lite, auto WS/SSE | standalone text+image | standalone | custom | responses |
304
312
  | `gpt-5.6-sol`, `gpt-5.6-terra`, `gpt-5.6-luna` | Lite, auto WS/SSE | standalone text+image | standalone | custom | responses |
305
313
  | `gpt-5.5`, `gpt-5.4` | Standard, auto WS/SSE | hosted text+image | standalone | custom | responses |
306
314
  | `gpt-5.4-mini`, `codex-auto-review` | Standard, auto WS/SSE | hosted text+image | standalone | custom | responses |
@@ -309,8 +317,19 @@ The bundled catalog is based on local Codex commit
309
317
  | `gpt-4.1` | Standard SSE | off | hosted | off | Pi |
310
318
  | `o4-mini` | Standard SSE | off | off | off | Pi |
311
319
 
312
- Equivalent `openai/...` and `openai-codex/...` IDs are included; the latter
313
- switch only the endpoint/auth shape to `codex`.
320
+ The pre-Astra entries include equivalent `openai/...` and
321
+ `openai-codex/...` IDs; the latter switch only the endpoint/auth shape to
322
+ `codex`. Astra is bundled only for `openai-codex`, matching the analyzed
323
+ ChatGPT subscription route. A public-API or proxy Astra deployment requires an
324
+ explicit user profile for that endpoint.
325
+
326
+ Pi 0.85.1 provides the Astra model descriptor; it is now the package peer
327
+ floor. The extension composes its stream shim over that provider and does not
328
+ replace authentication, streams, or the model catalog.
329
+ The descriptor keeps the production default at 272,000 context tokens and
330
+ 128,000 output tokens. A backend-authorized larger context must be selected
331
+ explicitly through Pi's provider `modelOverrides`; the extension does not infer
332
+ that entitlement from the Astra slug.
314
333
 
315
334
  These entries are defaults, not claims that every proxy with the same model
316
335
  slug supports the protocol. Override or disable a profile for the endpoint
@@ -335,6 +354,10 @@ raw result text.
335
354
 
336
355
  ## Image Generation
337
356
 
357
+ Set global `config.json.imageGeneration` to `false` to disable the entire
358
+ generation capability. Per-model `tools.imageGeneration:false` disables only
359
+ that profile. Neither setting disables image input or historical image replay.
360
+
338
361
  `tools.imageGeneration` supports:
339
362
 
340
363
  - `hosted`: Responses `image_generation`.
@@ -353,6 +376,11 @@ loaded image-capable model with an enabled catalog profile.
353
376
 
354
377
  ## WebSocket And Compaction
355
378
 
379
+ Global `config.json.webSocketEnabled:false` forces `sse` and disables
380
+ WebSocket prewarm without changing the selected per-model profile. When it is
381
+ `true` (the default), each profile's `responses.transport` and
382
+ `responses.websocketPrewarm` values apply.
383
+
356
384
  `transport` values:
357
385
 
358
386
  - `sse`: HTTP streaming only.
@@ -407,14 +435,15 @@ model override for compatibility:
407
435
  | `requestProfile.systemPromptPlacement` | `responses.systemPromptPlacement` |
408
436
  | `requestProfile.patchTransport` | `tools.applyPatch` |
409
437
  | `apiKeyMode` | `responses.endpoint` |
410
- | `imageGeneration` | `tools.imageGeneration` |
411
438
  | `webSearchEnabled` | `tools.webSearch` |
412
439
  | `viewImage` | `tools.viewImage` |
413
440
  | `applyPatchEnabled` | `tools.applyPatch` |
414
441
  | `additionalModelIds` | one exact user catalog entry per model |
415
442
 
416
443
  Move these values to extension `models.json`; legacy projection is intended
417
- only as a transition path.
444
+ only as a transition path. `imageGeneration` is no longer a legacy projection:
445
+ it is the supported global gate, while per-model selection stays in
446
+ `tools.imageGeneration`.
418
447
 
419
448
  ## Protocol Reference
420
449
 
@@ -8,7 +8,7 @@ forwards or verified asset mirrors. Their adaptations now live in
8
8
  `@oai404iao/pi-codex-runtime/src/reserved-tools/`. Those packages retain the
9
9
  original modification notices, Apache snapshots and provenance. Search/image
10
10
  clients live in their respective capability packages. No upstream revision or
11
- reviewed fingerprint changed during this move.
11
+ reviewed reserved-tool fingerprint changed during this move.
12
12
 
13
13
  ## OpenAI Codex
14
14
 
@@ -59,6 +59,16 @@ The repository's `reference/` directory contains protocol analysis based on
59
59
  both Codex revisions above. It is development documentation and is excluded
60
60
  from the npm tarball.
61
61
 
62
+ ### GPT-6 Astra profile
63
+
64
+ The Astra profile is derived from Codex model/request metadata at revision
65
+ [`ddea03ad049142943bdbf13e937b1d67e8c1ba0c`](https://github.com/openai/codex/commit/ddea03ad049142943bdbf13e937b1d67e8c1ba0c)
66
+ and cross-checked against the MIT-licensed
67
+ `@earendil-works/pi-ai@0.85.1` generated catalog. The Codex file/blob hashes
68
+ and locked npm tarball identity are recorded in
69
+ `provenance/openai-codex-ddea03ad-astra.json`. This delta does not repin or
70
+ modify the reserved namespace-tool and apply-patch grammar fingerprints.
71
+
62
72
  ### Modified namespace-tool compatibility serialization
63
73
 
64
74
  `src/codex-reserved-tools.ts` is a modified TypeScript compatibility
@@ -27,23 +27,9 @@
27
27
  "description": "Automatically activate enabled package tools on supported models.",
28
28
  "default": true
29
29
  },
30
- "nativeProviderTools": {
30
+ "webSocketEnabled": {
31
31
  "type": "boolean",
32
- "description": "Deprecated compatibility override. Move per-model hosted tool behavior to extension models.json.",
33
- "deprecated": true,
34
- "default": true
35
- },
36
- "openaiTransport": {
37
- "type": "string",
38
- "description": "Deprecated compatibility override. Move per-model Responses transport to extension models.json.",
39
- "deprecated": true,
40
- "enum": ["sse", "websocket", "websocket-cached", "auto"],
41
- "default": "sse"
42
- },
43
- "openaiWebSocketPrewarm": {
44
- "type": "boolean",
45
- "description": "Deprecated compatibility override. Move per-model one-shot session-startup WebSocket prewarm behavior to extension models.json.",
46
- "deprecated": true,
32
+ "description": "Global Responses WebSocket master switch. false forces SSE and disables WebSocket prewarm for every model profile.",
47
33
  "default": true
48
34
  },
49
35
  "fastMode": {
@@ -51,74 +37,11 @@
51
37
  "description": "Global user toggle for the Fast service tier declared by the active model profile.",
52
38
  "default": false
53
39
  },
54
- "compactionMode": {
55
- "type": "string",
56
- "description": "Deprecated compatibility override. Move per-model compaction behavior to extension models.json.",
57
- "deprecated": true,
58
- "enum": ["pi", "responses", "responses-compact"],
59
- "default": "pi"
60
- },
61
- "requestProfile": {
62
- "type": "object",
63
- "description": "Deprecated compatibility override. Move Responses mode, reasoning summary, prompt placement, patch transport, and tool capabilities to extension models.json.",
64
- "deprecated": true,
65
- "default": {},
66
- "additionalProperties": false,
67
- "properties": {
68
- "responsesMode": {
69
- "type": "string",
70
- "description": "Responses protocol mode. Lite requires an endpoint that implements the Codex Responses Lite contract.",
71
- "enum": ["standard", "lite"],
72
- "default": "standard"
73
- },
74
- "reasoningSummary": {
75
- "type": "string",
76
- "description": "Deprecated compatibility override for the reasoning summary mode. Move this to responses.reasoningSummary in the per-model catalog.",
77
- "enum": ["auto", "concise", "detailed", "none"],
78
- "default": "auto"
79
- },
80
- "systemPromptPlacement": {
81
- "type": "string",
82
- "description": "Where Standard Responses places Pi's system prompt. Responses Lite always uses a developer message.",
83
- "enum": ["instructions", "developer"],
84
- "default": "instructions"
85
- },
86
- "patchTransport": {
87
- "type": "string",
88
- "description": "Transport for apply_patch: a JSON function tool or the Codex freeform custom tool.",
89
- "enum": ["function", "custom"],
90
- "default": "function"
91
- },
92
- "supportsHostedTools": {
93
- "type": "boolean",
94
- "description": "Enable hosted-tool activation and request rewriting. Responses Lite always disables hosted tools.",
95
- "default": true
96
- },
97
- "supportsParallelTools": {
98
- "type": "boolean",
99
- "description": "Enable parallel tool calls in provider requests. Responses Lite always disables parallel tools.",
100
- "default": true
101
- }
102
- }
103
- },
104
- "apiKeyMode": {
105
- "type": "boolean",
106
- "description": "Deprecated compatibility override. Move the endpoint/auth shape to responses.endpoint in extension models.json.",
107
- "deprecated": true,
108
- "default": false
109
- },
110
40
  "imageGeneration": {
111
41
  "type": "boolean",
112
- "description": "Deprecated compatibility override. Move per-model image-generation support to extension models.json.",
113
- "deprecated": true,
42
+ "description": "Global image-generation master switch. false disables image tools, commands, presentation, hosted injection, standalone endpoints, and direct fallback without changing other model-profile behavior.",
114
43
  "default": true
115
44
  },
116
- "webSearchEnabled": {
117
- "type": "boolean",
118
- "description": "Deprecated compatibility override. Move per-model web-search support to extension models.json.",
119
- "deprecated": true,
120
- "default": false
121
- },
122
45
  "imageOutputDir": {
123
46
  "type": "string",
124
47
  "description": "Directory for generated images. Relative paths resolve against the workspace root.",
@@ -137,34 +60,11 @@
137
60
  "description": "Allow direct OpenAI Images API generation when native Codex generation is unavailable.",
138
61
  "default": false
139
62
  },
140
- "viewImage": {
141
- "type": "boolean",
142
- "description": "Deprecated compatibility override. Move per-model view_image support to extension models.json.",
143
- "deprecated": true,
144
- "default": false
145
- },
146
63
  "viewImageWorkspaceOnly": {
147
64
  "type": "boolean",
148
65
  "description": "Reject view_image paths outside the active workspace.",
149
66
  "default": false
150
67
  },
151
- "applyPatchEnabled": {
152
- "type": "boolean",
153
- "description": "Deprecated compatibility override. Move per-model apply_patch support to extension models.json.",
154
- "deprecated": true,
155
- "default": true
156
- },
157
- "additionalModelIds": {
158
- "type": "array",
159
- "description": "Deprecated compatibility allowlist. Add exact per-model entries to extension models.json instead.",
160
- "deprecated": true,
161
- "items": {
162
- "type": "string",
163
- "pattern": "^[^\\s/]+/\\S+$"
164
- },
165
- "uniqueItems": true,
166
- "default": []
167
- },
168
68
  "deferApplyPatchRendering": {
169
69
  "type": "boolean",
170
70
  "description": "Use Pi's fallback tool renderer instead of the built-in streaming filesystem preview.",
package/index.ts ADDED
@@ -0,0 +1,2 @@
1
+ export { default } from "./src/index.js";
2
+ export * from "./src/index.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oai404iao/pi-codex-minimal-tools",
3
- "version": "1.4.1-alpha.0",
3
+ "version": "2.1.0",
4
4
  "description": "Model-profiled Codex Responses tools for Pi: WebSocket, Lite, web search, images, compaction, and apply_patch",
5
5
  "repository": {
6
6
  "type": "git",
@@ -33,20 +33,20 @@
33
33
  },
34
34
  "pi": {
35
35
  "extensions": [
36
- "./src/index.ts"
36
+ "./index.ts"
37
37
  ]
38
38
  },
39
39
  "peerDependencies": {
40
- "@earendil-works/pi-ai": ">=0.84.2",
41
- "@earendil-works/pi-coding-agent": ">=0.84.2",
42
- "@earendil-works/pi-tui": ">=0.84.2",
40
+ "@earendil-works/pi-ai": ">=0.85.1",
41
+ "@earendil-works/pi-coding-agent": ">=0.85.1",
42
+ "@earendil-works/pi-tui": ">=0.85.1",
43
43
  "typebox": "*"
44
44
  },
45
45
  "dependencies": {
46
- "@oai404iao/pi-codex-runtime": "0.1.0-alpha.1",
47
- "@oai404iao/pi-codex-core": "0.1.0-alpha.1",
48
- "@oai404iao/pi-codex-web-search": "0.1.0-alpha.1",
49
- "@oai404iao/pi-codex-imagegen": "0.1.0-alpha.1"
46
+ "@oai404iao/pi-codex-runtime": "0.2.0",
47
+ "@oai404iao/pi-codex-core": "0.2.0",
48
+ "@oai404iao/pi-codex-web-search": "0.1.1",
49
+ "@oai404iao/pi-codex-imagegen": "0.1.1"
50
50
  },
51
51
  "devDependencies": {
52
52
  "@earendil-works/pi-ai": "0.85.1",
@@ -63,6 +63,7 @@
63
63
  "check": "npm run typecheck && npm test"
64
64
  },
65
65
  "files": [
66
+ "index.ts",
66
67
  "src/",
67
68
  "provenance/",
68
69
  "README.md",
@@ -87,5 +88,5 @@
87
88
  "optional": true
88
89
  }
89
90
  },
90
- "gitHead": "53026bf9e3f6a1d16a9c990e6034b49041928eab"
91
+ "gitHead": "61f1d82471fff63e3e9d5c0276b5e069c9fc8f1f"
91
92
  }
@@ -0,0 +1,54 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "upstream": {
4
+ "repository": "https://github.com/openai/codex",
5
+ "revision": "ddea03ad049142943bdbf13e937b1d67e8c1ba0c",
6
+ "commitUrl": "https://github.com/openai/codex/commit/ddea03ad049142943bdbf13e937b1d67e8c1ba0c",
7
+ "license": "Apache-2.0"
8
+ },
9
+ "files": {
10
+ "LICENSE": {
11
+ "role": "upstream Apache-2.0 license",
12
+ "gitBlobSha": "4606e72e042564097e8780d66c1d4dcb611869bd",
13
+ "sha256": "d17f227e4df5da1600391338865ce0f3055211760a36688f816941d58232d8dc",
14
+ "rawUrl": "https://raw.githubusercontent.com/openai/codex/ddea03ad049142943bdbf13e937b1d67e8c1ba0c/LICENSE"
15
+ },
16
+ "NOTICE": {
17
+ "role": "upstream NOTICE",
18
+ "gitBlobSha": "2805899d56d0332d175cfc613c67d45d6f006db7",
19
+ "sha256": "9d71575ecfd9a843fc1677b0efb08053c6ba9fd686a0de1a6f5382fd3c220915",
20
+ "rawUrl": "https://raw.githubusercontent.com/openai/codex/ddea03ad049142943bdbf13e937b1d67e8c1ba0c/NOTICE"
21
+ },
22
+ "codex-rs/models-manager/models.json": {
23
+ "role": "GPT-6 Astra capabilities and defaults",
24
+ "gitBlobSha": "1b5ce2c515986f84147abe5f4fb6e9b0deab0470",
25
+ "sha256": "897614e513a591b362f76c34e4b4d31af5809a2b52f8c0ab57f2990c5bf4ab3d",
26
+ "rawUrl": "https://raw.githubusercontent.com/openai/codex/ddea03ad049142943bdbf13e937b1d67e8c1ba0c/codex-rs/models-manager/models.json"
27
+ },
28
+ "codex-rs/models-manager/src/model_info.rs": {
29
+ "role": "model metadata representation and context-window limits",
30
+ "gitBlobSha": "ca1006993137d66de19137ff136f7ac8d36f9da3",
31
+ "sha256": "919883a4a15f6f3cace2ec78388aa7f9f8e042f74f553877843552ed55bf15bf",
32
+ "rawUrl": "https://raw.githubusercontent.com/openai/codex/ddea03ad049142943bdbf13e937b1d67e8c1ba0c/codex-rs/models-manager/src/model_info.rs"
33
+ },
34
+ "codex-rs/core/src/client.rs": {
35
+ "role": "Responses Lite and WebSocket request behavior",
36
+ "gitBlobSha": "8d2db30d7bb942cd030cb8d511eaafba8cbe46dd",
37
+ "sha256": "6a9b3d5d60293ca694e1642c905b574c2c12da490cff1c165e485f35a81f6edb",
38
+ "rawUrl": "https://raw.githubusercontent.com/openai/codex/ddea03ad049142943bdbf13e937b1d67e8c1ba0c/codex-rs/core/src/client.rs"
39
+ }
40
+ },
41
+ "catalogReference": {
42
+ "package": "@earendil-works/pi-ai",
43
+ "version": "0.85.1",
44
+ "license": "MIT",
45
+ "repository": "https://github.com/earendil-works/pi",
46
+ "tarballIntegrity": "sha512-+VgVIJDkDO2efYJKEEqvPTH4zmnIaXdAppGbO+vKFA9qy5PdhFiAenuFAkU+oiCSfOC4dMHDyrjdQeL4ZoC5CQ==",
47
+ "path": "dist/providers/data/openai-codex.json",
48
+ "sha256": "a10bfcfd34db6bcb98d8ee46175e154cab30530a137dbf31ac1434020ed3ffdd"
49
+ },
50
+ "localImplementations": [
51
+ "pi-codex-runtime/src/model-catalog/default-models.json",
52
+ "pi-codex-minimal-tools/src/model-catalog/default-models.json"
53
+ ]
54
+ }
@@ -150,6 +150,14 @@
150
150
  "endpoint": "codex"
151
151
  }
152
152
  },
153
+ {
154
+ "id": "openai-codex/gpt-6-astra",
155
+ "extends": "openai/gpt-5.6-sol",
156
+ "responses": {
157
+ "endpoint": "codex",
158
+ "reasoningSummary": "none"
159
+ }
160
+ },
153
161
  {
154
162
  "id": "openai-codex/gpt-5.6-terra",
155
163
  "extends": "openai/gpt-5.6-terra",