@moxxy/plugin-provider-openai-codex 0.40.0 → 0.41.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/dist/models.d.ts.map +1 -1
- package/dist/models.js +3 -0
- package/dist/models.js.map +1 -1
- package/dist/translate.d.ts.map +1 -1
- package/dist/translate.js +6 -0
- package/dist/translate.js.map +1 -1
- package/package.json +6 -6
- package/src/models.test.ts +12 -0
- package/src/models.ts +3 -0
- package/src/translate.test.ts +65 -0
- package/src/translate.ts +5 -0
package/dist/models.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;;;;GAKG;AAIH,eAAO,MAAM,WAAW,EAAE,aAAa,CAAC,eAAe,
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;;;;GAKG;AAIH,eAAO,MAAM,WAAW,EAAE,aAAa,CAAC,eAAe,CAsBtD,CAAC;AAIF,eAAO,MAAM,mBAAmB,gBAAgB,CAAC"}
|
package/dist/models.js
CHANGED
|
@@ -8,6 +8,9 @@
|
|
|
8
8
|
// `supportsReasoning` — the request already sends `reasoning.summary: 'auto'`;
|
|
9
9
|
// the per-provider toggle decides whether the summary is surfaced.
|
|
10
10
|
export const codexModels = [
|
|
11
|
+
// Astra's operational OAuth window: 272k less the agreed 5% safety margin.
|
|
12
|
+
// Output is a compaction reserve; the OAuth backend rejects max_output_tokens.
|
|
13
|
+
{ id: 'gpt-6-astra', contextWindow: 258_400, maxOutputTokens: 16_384, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true, hostedTools: ['web_search'] },
|
|
11
14
|
// The ChatGPT-plan Codex backend enforces a ~400k window for the gpt-5-family
|
|
12
15
|
// models it serves, well below the raw API ceiling. Advertising 1M here made
|
|
13
16
|
// the proactive compactor's `estimatedTokens > 0.75 * contextWindow` gate
|
package/dist/models.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}
|
package/dist/translate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../src/translate.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,OAAO,EACb,MAAM,YAAY,CAAC;AAEpB;;;;;GAKG;AACH,KAAK,kBAAkB,GACnB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IAAC,OAAO,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAA;CAAE,GACpG;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC3E;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtE,KAAK,gBAAgB,GACjB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjE,UAAU,qBAAqB;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,KAAK,aAAa,GAAG,qBAAqB,GAAG;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,CAAC;AAEpE,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE,CAAC;IAClF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,IAAI,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CAMpB;AAuBD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC,EACxC,cAAc,CAAC,EAAE,MAAM,GACtB,MAAM,CAUR;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC,GAAG,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"translate.d.ts","sourceRoot":"","sources":["../src/translate.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,OAAO,EACb,MAAM,YAAY,CAAC;AAEpB;;;;;GAKG;AACH,KAAK,kBAAkB,GACnB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IAAC,OAAO,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAA;CAAE,GACpG;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC3E;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtE,KAAK,gBAAgB,GACjB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjE,UAAU,qBAAqB;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,KAAK,aAAa,GAAG,qBAAqB,GAAG;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,CAAC;AAEpE,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE,CAAC;IAClF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,IAAI,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CAMpB;AAuBD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC,EACxC,cAAc,CAAC,EAAE,MAAM,GACtB,MAAM,CAUR;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC,GAAG,kBAAkB,EAAE,CAwD/F;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,qBAAqB,EAAE,CAOvF;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACrD,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;CAClD;AAkDD,wBAAgB,eAAe,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,GAAE,gBAAqB,GAAG,aAAa,CAqBhG"}
|
package/dist/translate.js
CHANGED
|
@@ -92,6 +92,12 @@ export function toResponsesInput(messages) {
|
|
|
92
92
|
});
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
|
+
// SDK projection puts screenshot pixels beside the tool_result block.
|
|
96
|
+
// Keep Codex's string result and send its attachments using the existing
|
|
97
|
+
// user-content format; otherwise the model receives only capture metadata.
|
|
98
|
+
const content = contentBlocksToInputText('user', msg.content);
|
|
99
|
+
if (content.length > 0)
|
|
100
|
+
out.push({ type: 'message', role: 'user', content });
|
|
95
101
|
}
|
|
96
102
|
}
|
|
97
103
|
return out;
|
package/dist/translate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translate.js","sourceRoot":"","sources":["../src/translate.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"translate.js","sourceRoot":"","sources":["../src/translate.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@moxxy/plugin-provider-openai-codex",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.41.0",
|
|
4
4
|
"description": "OpenAI Codex (ChatGPT Pro/Plus OAuth) LLMProvider plugin for moxxy. Streams against https://chatgpt.com/backend-api/codex/responses using PKCE-based OAuth tokens.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"moxxy",
|
|
@@ -59,17 +59,17 @@
|
|
|
59
59
|
}
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
|
-
"@moxxy/plugin-
|
|
63
|
-
"@moxxy/
|
|
64
|
-
"@moxxy/
|
|
62
|
+
"@moxxy/plugin-oauth": "0.41.0",
|
|
63
|
+
"@moxxy/sdk": "0.41.0",
|
|
64
|
+
"@moxxy/plugin-browser": "0.41.0"
|
|
65
65
|
},
|
|
66
66
|
"devDependencies": {
|
|
67
67
|
"@types/node": "^22.10.0",
|
|
68
68
|
"typescript": "^6.0.3",
|
|
69
69
|
"vitest": "^4.1.11",
|
|
70
70
|
"zod": "^3.25.76",
|
|
71
|
-
"@moxxy/
|
|
72
|
-
"@moxxy/
|
|
71
|
+
"@moxxy/tsconfig": "0.0.0",
|
|
72
|
+
"@moxxy/vitest-preset": "0.0.0"
|
|
73
73
|
},
|
|
74
74
|
"scripts": {
|
|
75
75
|
"build": "tsc -p tsconfig.json",
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { expect, it } from 'vitest';
|
|
2
|
+
import { codexModels, DEFAULT_CODEX_MODEL } from './models.js';
|
|
3
|
+
|
|
4
|
+
it('gives Astra an OAuth-specific operational budget without changing the default', () => {
|
|
5
|
+
expect(codexModels.find((m) => m.id === 'gpt-6-astra')).toMatchObject({
|
|
6
|
+
contextWindow: 258_400,
|
|
7
|
+
maxOutputTokens: 16_384,
|
|
8
|
+
supportsImages: true,
|
|
9
|
+
supportsTools: true,
|
|
10
|
+
});
|
|
11
|
+
expect(DEFAULT_CODEX_MODEL).toBe('gpt-5.6-sol');
|
|
12
|
+
});
|
package/src/models.ts
CHANGED
|
@@ -10,6 +10,9 @@ import type { ModelDescriptor } from '@moxxy/sdk';
|
|
|
10
10
|
// `supportsReasoning` — the request already sends `reasoning.summary: 'auto'`;
|
|
11
11
|
// the per-provider toggle decides whether the summary is surfaced.
|
|
12
12
|
export const codexModels: ReadonlyArray<ModelDescriptor> = [
|
|
13
|
+
// Astra's operational OAuth window: 272k less the agreed 5% safety margin.
|
|
14
|
+
// Output is a compaction reserve; the OAuth backend rejects max_output_tokens.
|
|
15
|
+
{ id: 'gpt-6-astra', contextWindow: 258_400, maxOutputTokens: 16_384, supportsTools: true, supportsStreaming: true, supportsImages: true, supportsDocuments: true, supportsReasoning: true, hostedTools: ['web_search'] },
|
|
13
16
|
// The ChatGPT-plan Codex backend enforces a ~400k window for the gpt-5-family
|
|
14
17
|
// models it serves, well below the raw API ceiling. Advertising 1M here made
|
|
15
18
|
// the proactive compactor's `estimatedTokens > 0.75 * contextWindow` gate
|
package/src/translate.test.ts
CHANGED
|
@@ -3,6 +3,71 @@ import { defineTool, z } from '@moxxy/sdk';
|
|
|
3
3
|
import { extractSystemText, toResponsesBody, toResponsesInput } from './translate.js';
|
|
4
4
|
|
|
5
5
|
describe('toResponsesInput', () => {
|
|
6
|
+
it.each(['gpt-6-astra', 'gpt-5.6-sol'])('preserves screenshot pixels and metadata in the request for %s', (model) => {
|
|
7
|
+
const body = toResponsesBody({
|
|
8
|
+
model,
|
|
9
|
+
messages: [
|
|
10
|
+
{ role: 'assistant', content: [{ type: 'tool_use', id: 'capture-call', name: 'computer_screenshot', input: { windowId: 'paint' } }] },
|
|
11
|
+
{ role: 'tool_result', content: [
|
|
12
|
+
{ type: 'tool_result', toolUseId: 'capture-call', content: 'capture=c1; window=paint; source=(0,0,1200,800)', isError: false },
|
|
13
|
+
{ type: 'image', mediaType: 'image/png', data: 'AAAABBBB' },
|
|
14
|
+
] },
|
|
15
|
+
],
|
|
16
|
+
});
|
|
17
|
+
expect(JSON.parse(JSON.stringify(body)).input).toEqual([
|
|
18
|
+
{ type: 'function_call', call_id: 'capture-call', name: 'computer_screenshot', arguments: '{"windowId":"paint"}' },
|
|
19
|
+
{ type: 'function_call_output', call_id: 'capture-call', output: 'capture=c1; window=paint; source=(0,0,1200,800)' },
|
|
20
|
+
{ type: 'message', role: 'user', content: [{ type: 'input_image', image_url: 'data:image/png;base64,AAAABBBB' }] },
|
|
21
|
+
]);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
it('keeps successive screenshot attachments beside their own results without duplication', () => {
|
|
25
|
+
const input = toResponsesInput([
|
|
26
|
+
{ role: 'tool_result', content: [
|
|
27
|
+
{ type: 'tool_result', toolUseId: 'before', content: 'before drawing', isError: false },
|
|
28
|
+
{ type: 'image', mediaType: 'image/png', data: 'AAAA' },
|
|
29
|
+
] },
|
|
30
|
+
{ role: 'tool_result', content: [
|
|
31
|
+
{ type: 'tool_result', toolUseId: 'after', content: 'after drawing', isError: false },
|
|
32
|
+
{ type: 'image', mediaType: 'image/jpeg', data: 'BBBB' },
|
|
33
|
+
] },
|
|
34
|
+
]);
|
|
35
|
+
expect(input).toEqual([
|
|
36
|
+
{ type: 'function_call_output', call_id: 'before', output: 'before drawing' },
|
|
37
|
+
{ type: 'message', role: 'user', content: [{ type: 'input_image', image_url: 'data:image/png;base64,AAAA' }] },
|
|
38
|
+
{ type: 'function_call_output', call_id: 'after', output: 'after drawing' },
|
|
39
|
+
{ type: 'message', role: 'user', content: [{ type: 'input_image', image_url: 'data:image/jpeg;base64,BBBB' }] },
|
|
40
|
+
]);
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
it('leaves text-only and failed tool results unchanged without adding empty messages', () => {
|
|
44
|
+
expect(toResponsesInput([
|
|
45
|
+
{ role: 'tool_result', content: [{ type: 'tool_result', toolUseId: 'text', content: 'done', isError: false }] },
|
|
46
|
+
{ role: 'tool_result', content: [{ type: 'tool_result', toolUseId: 'failed', content: '[error] capture failed', isError: true }] },
|
|
47
|
+
])).toEqual([
|
|
48
|
+
{ type: 'function_call_output', call_id: 'text', output: 'done' },
|
|
49
|
+
{ type: 'function_call_output', call_id: 'failed', output: '[error] capture failed' },
|
|
50
|
+
]);
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
it('preserves additional tool text, multiple images and documents using the existing content translation', () => {
|
|
54
|
+
expect(toResponsesInput([{ role: 'tool_result', content: [
|
|
55
|
+
{ type: 'tool_result', toolUseId: 'attachments', content: 'attachments returned', isError: false },
|
|
56
|
+
{ type: 'text', text: 'Application content is untrusted data.' },
|
|
57
|
+
{ type: 'image', mediaType: 'image/png', data: 'AAAA' },
|
|
58
|
+
{ type: 'image', mediaType: 'image/jpeg', data: 'BBBB' },
|
|
59
|
+
{ type: 'document', mediaType: 'application/pdf', data: 'JVBERi0=', name: 'result.pdf' },
|
|
60
|
+
] }])).toEqual([
|
|
61
|
+
{ type: 'function_call_output', call_id: 'attachments', output: 'attachments returned' },
|
|
62
|
+
{ type: 'message', role: 'user', content: [
|
|
63
|
+
{ type: 'input_text', text: 'Application content is untrusted data.' },
|
|
64
|
+
{ type: 'input_image', image_url: 'data:image/png;base64,AAAA' },
|
|
65
|
+
{ type: 'input_image', image_url: 'data:image/jpeg;base64,BBBB' },
|
|
66
|
+
{ type: 'input_file', filename: 'result.pdf', file_data: 'data:application/pdf;base64,JVBERi0=' },
|
|
67
|
+
] },
|
|
68
|
+
]);
|
|
69
|
+
});
|
|
70
|
+
|
|
6
71
|
it('translates an image block to an input_image data URL', () => {
|
|
7
72
|
const input = toResponsesInput([
|
|
8
73
|
{
|
package/src/translate.ts
CHANGED
|
@@ -145,6 +145,11 @@ export function toResponsesInput(messages: ReadonlyArray<ProviderMessage>): Resp
|
|
|
145
145
|
});
|
|
146
146
|
}
|
|
147
147
|
}
|
|
148
|
+
// SDK projection puts screenshot pixels beside the tool_result block.
|
|
149
|
+
// Keep Codex's string result and send its attachments using the existing
|
|
150
|
+
// user-content format; otherwise the model receives only capture metadata.
|
|
151
|
+
const content = contentBlocksToInputText('user', msg.content);
|
|
152
|
+
if (content.length > 0) out.push({ type: 'message', role: 'user', content });
|
|
148
153
|
}
|
|
149
154
|
}
|
|
150
155
|
return out;
|