openai-ws-opencode 0.1.1 → 0.1.3
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 +2 -2
- package/dist/auth/oauth.d.ts.map +1 -1
- package/dist/auth/oauth.js +48 -13
- package/dist/auth/oauth.js.map +1 -1
- package/dist/constants.d.ts +4 -2
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +4 -2
- package/dist/constants.js.map +1 -1
- package/dist/models/resolve.js +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -82,7 +82,7 @@ This path uses the Codex/ChatGPT backend and sends:
|
|
|
82
82
|
|
|
83
83
|
- `Authorization: Bearer <access-token>`
|
|
84
84
|
- `ChatGPT-Account-Id` when available
|
|
85
|
-
- `originator:
|
|
85
|
+
- `originator: opencode`
|
|
86
86
|
- `OpenAI-Beta: responses_websockets=2026-02-06`
|
|
87
87
|
|
|
88
88
|
Important: the OAuth/Codex WebSocket path is unofficial, reuses Codex OAuth behavior, targets a private ChatGPT backend, can break without notice, and may carry account or terms-of-service risk. This project is not affiliated with OpenAI or OpenCode.
|
|
@@ -101,7 +101,7 @@ Then point OpenCode at the packed tarball through the plugin array:
|
|
|
101
101
|
|
|
102
102
|
```jsonc
|
|
103
103
|
{
|
|
104
|
-
"plugin": ["openai-ws-opencode@file:/absolute/path/openai-ws-opencode-0.1.
|
|
104
|
+
"plugin": ["openai-ws-opencode@file:/absolute/path/openai-ws-opencode-0.1.3.tgz"]
|
|
105
105
|
}
|
|
106
106
|
```
|
|
107
107
|
|
package/dist/auth/oauth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../src/auth/oauth.ts"],"names":[],"mappings":"AAAA,OAAa,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../src/auth/oauth.ts"],"names":[],"mappings":"AAAA,OAAa,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,WAAW,CAAA;AAmE3E,iBAAe,cAAc,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,iBAwCtE;AAiDD,wBAAgB,eAAe,SAS9B;AAED,wBAAsB,0BAA0B;;;;;;;;;;;;;;;;;GAmC/C;AAED,wBAAsB,yBAAyB;;;;;;;;;;;;;;;;;GA+C9C;AAED,eAAO,MAAM,YAAY;;;;;;;;IAexB,CAAA;AAED,eAAO,MAAM,YAAY;;;;CAIxB,CAAA"}
|
package/dist/auth/oauth.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import http from "node:http";
|
|
2
2
|
import crypto from "node:crypto";
|
|
3
|
-
import { CLIENT_ID, CODEX_ORIGINATOR, ISSUER, OAUTH_PORT } from "../constants.js";
|
|
3
|
+
import { CLIENT_ID, CODEX_OAUTH_SCOPE, CODEX_ORIGINATOR, ISSUER, OAUTH_FALLBACK_PORT, OAUTH_PORT } from "../constants.js";
|
|
4
4
|
import { exchangeCodeForTokens, extractAccountId, tokenExpiry } from "./tokens.js";
|
|
5
5
|
let oauthServer;
|
|
6
|
+
let oauthRedirectUri;
|
|
6
7
|
let pendingOAuth;
|
|
7
8
|
const HTML_OK = "<!doctype html><html><body><h1>Authorization successful</h1><p>Return to OpenCode.</p></body></html>";
|
|
8
9
|
const HTML_ERROR = "<!doctype html><html><body><h1>Authorization failed</h1></body></html>";
|
|
@@ -27,7 +28,7 @@ function buildAuthorizeUrl(redirectUri, pkce, state) {
|
|
|
27
28
|
response_type: "code",
|
|
28
29
|
client_id: CLIENT_ID,
|
|
29
30
|
redirect_uri: redirectUri,
|
|
30
|
-
scope:
|
|
31
|
+
scope: CODEX_OAUTH_SCOPE,
|
|
31
32
|
code_challenge: pkce.challenge,
|
|
32
33
|
code_challenge_method: "S256",
|
|
33
34
|
id_token_add_organizations: "true",
|
|
@@ -79,20 +80,54 @@ async function handleCallback(req, res) {
|
|
|
79
80
|
}
|
|
80
81
|
}
|
|
81
82
|
async function startOAuthServer() {
|
|
82
|
-
if (
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
83
|
+
if (oauthServer && oauthRedirectUri)
|
|
84
|
+
return oauthRedirectUri;
|
|
85
|
+
const server = http.createServer((req, res) => {
|
|
86
|
+
void handleCallback(req, res);
|
|
87
|
+
});
|
|
88
|
+
oauthServer = server;
|
|
89
|
+
let port;
|
|
90
|
+
try {
|
|
91
|
+
port = await listen(server, OAUTH_PORT);
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
if (!isAddressInUse(error)) {
|
|
95
|
+
oauthServer = undefined;
|
|
96
|
+
throw error;
|
|
97
|
+
}
|
|
98
|
+
try {
|
|
99
|
+
port = await listen(server, OAUTH_FALLBACK_PORT);
|
|
100
|
+
}
|
|
101
|
+
catch (fallbackError) {
|
|
102
|
+
oauthServer = undefined;
|
|
103
|
+
throw fallbackError;
|
|
104
|
+
}
|
|
90
105
|
}
|
|
91
|
-
|
|
106
|
+
oauthRedirectUri = `http://localhost:${port}/auth/callback`;
|
|
107
|
+
return oauthRedirectUri;
|
|
108
|
+
}
|
|
109
|
+
function listen(server, port) {
|
|
110
|
+
return new Promise((resolve, reject) => {
|
|
111
|
+
const onError = (error) => {
|
|
112
|
+
server.off("listening", onListening);
|
|
113
|
+
reject(error);
|
|
114
|
+
};
|
|
115
|
+
const onListening = () => {
|
|
116
|
+
server.off("error", onError);
|
|
117
|
+
resolve(port);
|
|
118
|
+
};
|
|
119
|
+
server.once("error", onError);
|
|
120
|
+
server.once("listening", onListening);
|
|
121
|
+
server.listen(port, "127.0.0.1");
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
function isAddressInUse(error) {
|
|
125
|
+
return typeof error === "object" && error !== null && "code" in error && error.code === "EADDRINUSE";
|
|
92
126
|
}
|
|
93
127
|
export function stopOAuthServer() {
|
|
94
128
|
oauthServer?.close();
|
|
95
129
|
oauthServer = undefined;
|
|
130
|
+
oauthRedirectUri = undefined;
|
|
96
131
|
if (pendingOAuth) {
|
|
97
132
|
clearTimeout(pendingOAuth.timeout);
|
|
98
133
|
pendingOAuth.reject(new Error("OAuth server stopped"));
|
|
@@ -140,7 +175,7 @@ export async function createBrowserAuthorization() {
|
|
|
140
175
|
export async function createDeviceAuthorization() {
|
|
141
176
|
const deviceResponse = await fetch(`${ISSUER}/api/accounts/deviceauth/usercode`, {
|
|
142
177
|
method: "POST",
|
|
143
|
-
headers: { "Content-Type": "application/json", "User-Agent": "openai-ws-opencode/0.1.
|
|
178
|
+
headers: { "Content-Type": "application/json", "User-Agent": "openai-ws-opencode/0.1.3" },
|
|
144
179
|
body: JSON.stringify({ client_id: CLIENT_ID }),
|
|
145
180
|
});
|
|
146
181
|
if (!deviceResponse.ok)
|
|
@@ -155,7 +190,7 @@ export async function createDeviceAuthorization() {
|
|
|
155
190
|
for (;;) {
|
|
156
191
|
const response = await fetch(`${ISSUER}/api/accounts/deviceauth/token`, {
|
|
157
192
|
method: "POST",
|
|
158
|
-
headers: { "Content-Type": "application/json", "User-Agent": "openai-ws-opencode/0.1.
|
|
193
|
+
headers: { "Content-Type": "application/json", "User-Agent": "openai-ws-opencode/0.1.3" },
|
|
159
194
|
body: JSON.stringify({
|
|
160
195
|
device_auth_id: deviceData.device_auth_id,
|
|
161
196
|
user_code: deviceData.user_code,
|
package/dist/auth/oauth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../src/auth/oauth.ts"],"names":[],"mappings":"AAAA,OAAO,IAAmD,MAAM,WAAW,CAAA;AAC3E,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../src/auth/oauth.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -7,8 +7,10 @@ export declare const CODEX_API_ENDPOINT = "https://chatgpt.com/backend-api/codex
|
|
|
7
7
|
export declare const OPENAI_WS_URL = "wss://api.openai.com/v1/responses";
|
|
8
8
|
export declare const CODEX_WS_URL = "wss://chatgpt.com/backend-api/codex/responses";
|
|
9
9
|
export declare const OPENAI_WS_BETA = "responses_websockets=2026-02-06";
|
|
10
|
-
export declare const CODEX_ORIGINATOR = "
|
|
11
|
-
export declare const
|
|
10
|
+
export declare const CODEX_ORIGINATOR = "opencode";
|
|
11
|
+
export declare const CODEX_OAUTH_SCOPE = "openid profile email offline_access";
|
|
12
|
+
export declare const OAUTH_PORT = 1455;
|
|
13
|
+
export declare const OAUTH_FALLBACK_PORT = 1457;
|
|
12
14
|
export declare const DEFAULT_INSTRUCTIONS = "You are a helpful assistant.";
|
|
13
15
|
export declare const INTERNAL_SESSION_HEADER = "x-openai-ws-opencode-session-id";
|
|
14
16
|
export declare const INTERNAL_AGENT_HEADER = "x-openai-ws-opencode-agent";
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,cAAc,CAAA;AAEtC,eAAO,MAAM,SAAS,iCAAiC,CAAA;AACvD,eAAO,MAAM,MAAM,4BAA4B,CAAA;AAC/C,eAAO,MAAM,eAAe,8BAA8B,CAAA;AAC1D,eAAO,MAAM,cAAc,0CAA0C,CAAA;AACrE,eAAO,MAAM,kBAAkB,oDAAgC,CAAA;AAC/D,eAAO,MAAM,aAAa,sCAAsC,CAAA;AAChE,eAAO,MAAM,YAAY,kDAAkD,CAAA;AAC3E,eAAO,MAAM,cAAc,oCAAoC,CAAA;AAC/D,eAAO,MAAM,gBAAgB,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,cAAc,CAAA;AAEtC,eAAO,MAAM,SAAS,iCAAiC,CAAA;AACvD,eAAO,MAAM,MAAM,4BAA4B,CAAA;AAC/C,eAAO,MAAM,eAAe,8BAA8B,CAAA;AAC1D,eAAO,MAAM,cAAc,0CAA0C,CAAA;AACrE,eAAO,MAAM,kBAAkB,oDAAgC,CAAA;AAC/D,eAAO,MAAM,aAAa,sCAAsC,CAAA;AAChE,eAAO,MAAM,YAAY,kDAAkD,CAAA;AAC3E,eAAO,MAAM,cAAc,oCAAoC,CAAA;AAC/D,eAAO,MAAM,gBAAgB,aAAa,CAAA;AAC1C,eAAO,MAAM,iBAAiB,wCAAwC,CAAA;AACtE,eAAO,MAAM,UAAU,OAAO,CAAA;AAC9B,eAAO,MAAM,mBAAmB,OAAO,CAAA;AACvC,eAAO,MAAM,oBAAoB,iCAAiC,CAAA;AAElE,eAAO,MAAM,uBAAuB,oCAAoC,CAAA;AACxE,eAAO,MAAM,qBAAqB,+BAA+B,CAAA;AACjE,eAAO,MAAM,qBAAqB,kCAAkC,CAAA;AACpE,eAAO,MAAM,2BAA2B,qCAAqC,CAAA"}
|
package/dist/constants.js
CHANGED
|
@@ -7,8 +7,10 @@ export const CODEX_API_ENDPOINT = `${CODEX_API_BASE}/responses`;
|
|
|
7
7
|
export const OPENAI_WS_URL = "wss://api.openai.com/v1/responses";
|
|
8
8
|
export const CODEX_WS_URL = "wss://chatgpt.com/backend-api/codex/responses";
|
|
9
9
|
export const OPENAI_WS_BETA = "responses_websockets=2026-02-06";
|
|
10
|
-
export const CODEX_ORIGINATOR = "
|
|
11
|
-
export const
|
|
10
|
+
export const CODEX_ORIGINATOR = "opencode";
|
|
11
|
+
export const CODEX_OAUTH_SCOPE = "openid profile email offline_access";
|
|
12
|
+
export const OAUTH_PORT = 1455;
|
|
13
|
+
export const OAUTH_FALLBACK_PORT = 1457;
|
|
12
14
|
export const DEFAULT_INSTRUCTIONS = "You are a helpful assistant.";
|
|
13
15
|
export const INTERNAL_SESSION_HEADER = "x-openai-ws-opencode-session-id";
|
|
14
16
|
export const INTERNAL_AGENT_HEADER = "x-openai-ws-opencode-agent";
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAA;AAEtC,MAAM,CAAC,MAAM,SAAS,GAAG,8BAA8B,CAAA;AACvD,MAAM,CAAC,MAAM,MAAM,GAAG,yBAAyB,CAAA;AAC/C,MAAM,CAAC,MAAM,eAAe,GAAG,2BAA2B,CAAA;AAC1D,MAAM,CAAC,MAAM,cAAc,GAAG,uCAAuC,CAAA;AACrE,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,cAAc,YAAY,CAAA;AAC/D,MAAM,CAAC,MAAM,aAAa,GAAG,mCAAmC,CAAA;AAChE,MAAM,CAAC,MAAM,YAAY,GAAG,+CAA+C,CAAA;AAC3E,MAAM,CAAC,MAAM,cAAc,GAAG,iCAAiC,CAAA;AAC/D,MAAM,CAAC,MAAM,gBAAgB,GAAG,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAA;AAEtC,MAAM,CAAC,MAAM,SAAS,GAAG,8BAA8B,CAAA;AACvD,MAAM,CAAC,MAAM,MAAM,GAAG,yBAAyB,CAAA;AAC/C,MAAM,CAAC,MAAM,eAAe,GAAG,2BAA2B,CAAA;AAC1D,MAAM,CAAC,MAAM,cAAc,GAAG,uCAAuC,CAAA;AACrE,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,cAAc,YAAY,CAAA;AAC/D,MAAM,CAAC,MAAM,aAAa,GAAG,mCAAmC,CAAA;AAChE,MAAM,CAAC,MAAM,YAAY,GAAG,+CAA+C,CAAA;AAC3E,MAAM,CAAC,MAAM,cAAc,GAAG,iCAAiC,CAAA;AAC/D,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAA;AAC1C,MAAM,CAAC,MAAM,iBAAiB,GAAG,qCAAqC,CAAA;AACtE,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAA;AAC9B,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAA;AACvC,MAAM,CAAC,MAAM,oBAAoB,GAAG,8BAA8B,CAAA;AAElE,MAAM,CAAC,MAAM,uBAAuB,GAAG,iCAAiC,CAAA;AACxE,MAAM,CAAC,MAAM,qBAAqB,GAAG,4BAA4B,CAAA;AACjE,MAAM,CAAC,MAAM,qBAAqB,GAAG,+BAA+B,CAAA;AACpE,MAAM,CAAC,MAAM,2BAA2B,GAAG,kCAAkC,CAAA"}
|
package/dist/models/resolve.js
CHANGED
|
@@ -103,7 +103,7 @@ export async function resolveModelsBestEffort(overrides = {}, options = {}) {
|
|
|
103
103
|
try {
|
|
104
104
|
const response = await fetchImpl("https://models.dev/api.json", {
|
|
105
105
|
signal: AbortSignal.timeout(timeoutMs),
|
|
106
|
-
headers: { "User-Agent": "openai-ws-opencode/0.1.
|
|
106
|
+
headers: { "User-Agent": "openai-ws-opencode/0.1.3" },
|
|
107
107
|
});
|
|
108
108
|
if (!response.ok)
|
|
109
109
|
return resolveModels(overrides);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openai-ws-opencode",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "OpenCode plugin for OpenAI Responses WebSocket transport.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
}
|
|
22
22
|
},
|
|
23
23
|
"bin": {
|
|
24
|
-
"openai-ws-opencode": "
|
|
24
|
+
"openai-ws-opencode": "bin/setup.js"
|
|
25
25
|
},
|
|
26
26
|
"files": [
|
|
27
27
|
"dist/",
|