opencode-openai-codex-multi-auth 4.4.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/LICENSE +37 -0
- package/README.md +89 -0
- package/assets/openai-codex-auth-config.schema.json +63 -0
- package/assets/opencode-logo-ornate-dark.svg +18 -0
- package/assets/readme-hero.svg +31 -0
- package/config/README.md +103 -0
- package/config/minimal-opencode.json +12 -0
- package/config/opencode-legacy.json +571 -0
- package/config/opencode-modern.json +239 -0
- package/dist/index.d.ts +42 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +564 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/accounts.d.ts +58 -0
- package/dist/lib/accounts.d.ts.map +1 -0
- package/dist/lib/accounts.js +405 -0
- package/dist/lib/accounts.js.map +1 -0
- package/dist/lib/auth/auth.d.ts +43 -0
- package/dist/lib/auth/auth.d.ts.map +1 -0
- package/dist/lib/auth/auth.js +163 -0
- package/dist/lib/auth/auth.js.map +1 -0
- package/dist/lib/auth/browser.d.ts +17 -0
- package/dist/lib/auth/browser.d.ts.map +1 -0
- package/dist/lib/auth/browser.js +76 -0
- package/dist/lib/auth/browser.js.map +1 -0
- package/dist/lib/auth/server.d.ts +10 -0
- package/dist/lib/auth/server.d.ts.map +1 -0
- package/dist/lib/auth/server.js +78 -0
- package/dist/lib/auth/server.js.map +1 -0
- package/dist/lib/cli.d.ts +8 -0
- package/dist/lib/cli.d.ts.map +1 -0
- package/dist/lib/cli.js +36 -0
- package/dist/lib/cli.js.map +1 -0
- package/dist/lib/config.d.ts +25 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +112 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/constants.d.ts +67 -0
- package/dist/lib/constants.d.ts.map +1 -0
- package/dist/lib/constants.js +67 -0
- package/dist/lib/constants.js.map +1 -0
- package/dist/lib/logger.d.ts +21 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +77 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/oauth-success.html +712 -0
- package/dist/lib/prompts/codex-opencode-bridge.d.ts +19 -0
- package/dist/lib/prompts/codex-opencode-bridge.d.ts.map +1 -0
- package/dist/lib/prompts/codex-opencode-bridge.js +152 -0
- package/dist/lib/prompts/codex-opencode-bridge.js.map +1 -0
- package/dist/lib/prompts/codex.d.ts +28 -0
- package/dist/lib/prompts/codex.d.ts.map +1 -0
- package/dist/lib/prompts/codex.js +248 -0
- package/dist/lib/prompts/codex.js.map +1 -0
- package/dist/lib/prompts/opencode-codex.d.ts +21 -0
- package/dist/lib/prompts/opencode-codex.d.ts.map +1 -0
- package/dist/lib/prompts/opencode-codex.js +91 -0
- package/dist/lib/prompts/opencode-codex.js.map +1 -0
- package/dist/lib/request/fetch-helpers.d.ts +73 -0
- package/dist/lib/request/fetch-helpers.d.ts.map +1 -0
- package/dist/lib/request/fetch-helpers.js +221 -0
- package/dist/lib/request/fetch-helpers.js.map +1 -0
- package/dist/lib/request/helpers/input-utils.d.ts +6 -0
- package/dist/lib/request/helpers/input-utils.d.ts.map +1 -0
- package/dist/lib/request/helpers/input-utils.js +174 -0
- package/dist/lib/request/helpers/input-utils.js.map +1 -0
- package/dist/lib/request/helpers/model-map.d.ts +28 -0
- package/dist/lib/request/helpers/model-map.d.ts.map +1 -0
- package/dist/lib/request/helpers/model-map.js +109 -0
- package/dist/lib/request/helpers/model-map.js.map +1 -0
- package/dist/lib/request/request-transformer.d.ts +93 -0
- package/dist/lib/request/request-transformer.d.ts.map +1 -0
- package/dist/lib/request/request-transformer.js +403 -0
- package/dist/lib/request/request-transformer.js.map +1 -0
- package/dist/lib/request/response-handler.d.ts +14 -0
- package/dist/lib/request/response-handler.d.ts.map +1 -0
- package/dist/lib/request/response-handler.js +88 -0
- package/dist/lib/request/response-handler.js.map +1 -0
- package/dist/lib/storage.d.ts +5 -0
- package/dist/lib/storage.d.ts.map +1 -0
- package/dist/lib/storage.js +46 -0
- package/dist/lib/storage.js.map +1 -0
- package/dist/lib/types.d.ts +236 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +2 -0
- package/dist/lib/types.js.map +1 -0
- package/package.json +77 -0
- package/scripts/install-opencode-codex-auth.js +450 -0
- package/scripts/test-all-models.sh +259 -0
- package/scripts/validate-model-map.sh +97 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { promises as fs } from "node:fs";
|
|
3
|
+
import { homedir } from "node:os";
|
|
4
|
+
import { dirname, join } from "node:path";
|
|
5
|
+
const STORAGE_DIR = join(homedir(), ".opencode");
|
|
6
|
+
const STORAGE_FILE = "openai-codex-accounts.json";
|
|
7
|
+
export function getStoragePath() {
|
|
8
|
+
return join(STORAGE_DIR, STORAGE_FILE);
|
|
9
|
+
}
|
|
10
|
+
export async function loadAccounts() {
|
|
11
|
+
const filePath = getStoragePath();
|
|
12
|
+
try {
|
|
13
|
+
if (!existsSync(filePath))
|
|
14
|
+
return null;
|
|
15
|
+
const raw = await fs.readFile(filePath, "utf-8");
|
|
16
|
+
const parsed = JSON.parse(raw);
|
|
17
|
+
if (!parsed || typeof parsed !== "object")
|
|
18
|
+
return null;
|
|
19
|
+
const storage = parsed;
|
|
20
|
+
if (storage.version !== 3)
|
|
21
|
+
return null;
|
|
22
|
+
if (!Array.isArray(storage.accounts))
|
|
23
|
+
return null;
|
|
24
|
+
const activeIndex = typeof storage.activeIndex === "number" && Number.isFinite(storage.activeIndex)
|
|
25
|
+
? Math.max(0, Math.floor(storage.activeIndex))
|
|
26
|
+
: 0;
|
|
27
|
+
const clampedActiveIndex = storage.accounts.length > 0
|
|
28
|
+
? Math.min(activeIndex, storage.accounts.length - 1)
|
|
29
|
+
: 0;
|
|
30
|
+
return {
|
|
31
|
+
version: 3,
|
|
32
|
+
accounts: storage.accounts,
|
|
33
|
+
activeIndex: clampedActiveIndex,
|
|
34
|
+
activeIndexByFamily: storage.activeIndexByFamily ?? {},
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export async function saveAccounts(storage) {
|
|
42
|
+
const filePath = getStoragePath();
|
|
43
|
+
await fs.mkdir(dirname(filePath), { recursive: true });
|
|
44
|
+
await fs.writeFile(filePath, JSON.stringify(storage, null, 2), "utf-8");
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../lib/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAI1C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;AACjD,MAAM,YAAY,GAAG,4BAA4B,CAAC;AAElD,MAAM,UAAU,cAAc;IAC7B,OAAO,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY;IACjC,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;IAClC,IAAI,CAAC;QACJ,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC;QACvC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;QAE1C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACvD,MAAM,OAAO,GAAG,MAAmC,CAAC;QACpD,IAAI,OAAO,CAAC,OAAO,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC;QAElD,MAAM,WAAW,GAChB,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC;YAC9E,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC,CAAC;QACN,MAAM,kBAAkB,GACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YAC1B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC,CAAC;QAEN,OAAO;YACN,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,OAAO,CAAC,QAAwC;YAC1D,WAAW,EAAE,kBAAkB;YAC/B,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,IAAI,EAAE;SACtD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAyB;IAC3D,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;IAClC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACzE,CAAC"}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import type { Auth, Provider, Model } from "@opencode-ai/sdk";
|
|
2
|
+
/**
|
|
3
|
+
* Plugin configuration from ~/.opencode/openai-codex-auth-config.json
|
|
4
|
+
*/
|
|
5
|
+
export interface PluginConfig {
|
|
6
|
+
/**
|
|
7
|
+
* Enable CODEX_MODE (Codex-OpenCode bridge prompt instead of tool remap)
|
|
8
|
+
* @default true
|
|
9
|
+
*/
|
|
10
|
+
codexMode?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Account selection strategy when multiple accounts are configured.
|
|
13
|
+
* - sticky: keep the same account until rate-limited (best for caching)
|
|
14
|
+
* - round-robin: rotate accounts on every request (best for throughput)
|
|
15
|
+
* @default "sticky"
|
|
16
|
+
*/
|
|
17
|
+
accountSelectionStrategy?: AccountSelectionStrategy;
|
|
18
|
+
/**
|
|
19
|
+
* Enable PID-based account offset for parallel agents.
|
|
20
|
+
* When enabled, each process chooses a different starting account but remains sticky.
|
|
21
|
+
*
|
|
22
|
+
* Note: This is only meaningful when 2+ accounts exist.
|
|
23
|
+
* @default true
|
|
24
|
+
*/
|
|
25
|
+
pidOffsetEnabled?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Suppress most toast notifications.
|
|
28
|
+
* @default false
|
|
29
|
+
*/
|
|
30
|
+
quietMode?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Milliseconds before token expiry to proactively refresh.
|
|
33
|
+
* @default 60000
|
|
34
|
+
*/
|
|
35
|
+
tokenRefreshSkewMs?: number;
|
|
36
|
+
/**
|
|
37
|
+
* Debounce interval for account-related toasts.
|
|
38
|
+
* @default 60000
|
|
39
|
+
*/
|
|
40
|
+
rateLimitToastDebounceMs?: number;
|
|
41
|
+
/**
|
|
42
|
+
* When all accounts are rate-limited, optionally wait and retry.
|
|
43
|
+
* @default false
|
|
44
|
+
*/
|
|
45
|
+
retryAllAccountsRateLimited?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Maximum time to wait when all accounts are rate-limited.
|
|
48
|
+
* Set to 0 to disable wait limit.
|
|
49
|
+
* @default 30000
|
|
50
|
+
*/
|
|
51
|
+
retryAllAccountsMaxWaitMs?: number;
|
|
52
|
+
/**
|
|
53
|
+
* Maximum number of "all accounts rate-limited" waits.
|
|
54
|
+
* @default 1
|
|
55
|
+
*/
|
|
56
|
+
retryAllAccountsMaxRetries?: number;
|
|
57
|
+
}
|
|
58
|
+
export type AccountSelectionStrategy = "sticky" | "round-robin";
|
|
59
|
+
export type OAuthAuthDetails = Extract<Auth, {
|
|
60
|
+
type: "oauth";
|
|
61
|
+
}>;
|
|
62
|
+
export type CooldownReason = "auth-failure";
|
|
63
|
+
export type RateLimitStateV3 = Record<string, number | undefined>;
|
|
64
|
+
export interface AccountRecordV3 {
|
|
65
|
+
refreshToken: string;
|
|
66
|
+
accountId?: string;
|
|
67
|
+
email?: string;
|
|
68
|
+
addedAt: number;
|
|
69
|
+
lastUsed: number;
|
|
70
|
+
lastSwitchReason?: "rate-limit" | "initial" | "rotation";
|
|
71
|
+
rateLimitResetTimes?: RateLimitStateV3;
|
|
72
|
+
coolingDownUntil?: number;
|
|
73
|
+
cooldownReason?: CooldownReason;
|
|
74
|
+
}
|
|
75
|
+
export interface AccountStorageV3 {
|
|
76
|
+
version: 3;
|
|
77
|
+
accounts: AccountRecordV3[];
|
|
78
|
+
activeIndex: number;
|
|
79
|
+
activeIndexByFamily?: Partial<Record<string, number>>;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* User configuration structure from opencode.json
|
|
83
|
+
*/
|
|
84
|
+
export interface UserConfig {
|
|
85
|
+
global: ConfigOptions;
|
|
86
|
+
models: {
|
|
87
|
+
[modelName: string]: {
|
|
88
|
+
options?: ConfigOptions;
|
|
89
|
+
variants?: Record<string, (ConfigOptions & {
|
|
90
|
+
disabled?: boolean;
|
|
91
|
+
}) | undefined>;
|
|
92
|
+
[key: string]: unknown;
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Configuration options for reasoning and text settings
|
|
98
|
+
*/
|
|
99
|
+
export interface ConfigOptions {
|
|
100
|
+
reasoningEffort?: "none" | "minimal" | "low" | "medium" | "high" | "xhigh";
|
|
101
|
+
reasoningSummary?: "auto" | "concise" | "detailed" | "off" | "on";
|
|
102
|
+
textVerbosity?: "low" | "medium" | "high";
|
|
103
|
+
include?: string[];
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Reasoning configuration for requests
|
|
107
|
+
*/
|
|
108
|
+
export interface ReasoningConfig {
|
|
109
|
+
effort: "none" | "minimal" | "low" | "medium" | "high" | "xhigh";
|
|
110
|
+
summary: "auto" | "concise" | "detailed" | "off" | "on";
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* OAuth server information
|
|
114
|
+
*/
|
|
115
|
+
export interface OAuthServerInfo {
|
|
116
|
+
port: number;
|
|
117
|
+
ready: boolean;
|
|
118
|
+
close: () => void;
|
|
119
|
+
waitForCode: (state: string) => Promise<{
|
|
120
|
+
code: string;
|
|
121
|
+
} | null>;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* PKCE challenge and verifier
|
|
125
|
+
*/
|
|
126
|
+
export interface PKCEPair {
|
|
127
|
+
challenge: string;
|
|
128
|
+
verifier: string;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Authorization flow result
|
|
132
|
+
*/
|
|
133
|
+
export interface AuthorizationFlow {
|
|
134
|
+
pkce: PKCEPair;
|
|
135
|
+
state: string;
|
|
136
|
+
url: string;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Token exchange success result
|
|
140
|
+
*/
|
|
141
|
+
export interface TokenSuccess {
|
|
142
|
+
type: "success";
|
|
143
|
+
access: string;
|
|
144
|
+
refresh: string;
|
|
145
|
+
expires: number;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Token exchange failure result
|
|
149
|
+
*/
|
|
150
|
+
export interface TokenFailure {
|
|
151
|
+
type: "failed";
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Token exchange result
|
|
155
|
+
*/
|
|
156
|
+
export type TokenResult = TokenSuccess | TokenFailure;
|
|
157
|
+
/**
|
|
158
|
+
* Parsed authorization input
|
|
159
|
+
*/
|
|
160
|
+
export interface ParsedAuthInput {
|
|
161
|
+
code?: string;
|
|
162
|
+
state?: string;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* JWT payload with ChatGPT account info
|
|
166
|
+
*/
|
|
167
|
+
export interface JWTPayload {
|
|
168
|
+
"https://api.openai.com/auth"?: {
|
|
169
|
+
chatgpt_account_id?: string;
|
|
170
|
+
};
|
|
171
|
+
[key: string]: unknown;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Message input item
|
|
175
|
+
*/
|
|
176
|
+
export interface InputItem {
|
|
177
|
+
id?: string;
|
|
178
|
+
type: string;
|
|
179
|
+
role: string;
|
|
180
|
+
content?: unknown;
|
|
181
|
+
[key: string]: unknown;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Request body structure
|
|
185
|
+
*/
|
|
186
|
+
export interface RequestBody {
|
|
187
|
+
model: string;
|
|
188
|
+
store?: boolean;
|
|
189
|
+
stream?: boolean;
|
|
190
|
+
instructions?: string;
|
|
191
|
+
input?: InputItem[];
|
|
192
|
+
tools?: unknown;
|
|
193
|
+
reasoning?: Partial<ReasoningConfig>;
|
|
194
|
+
text?: {
|
|
195
|
+
verbosity?: "low" | "medium" | "high";
|
|
196
|
+
};
|
|
197
|
+
include?: string[];
|
|
198
|
+
providerOptions?: {
|
|
199
|
+
openai?: Partial<ConfigOptions> & {
|
|
200
|
+
store?: boolean;
|
|
201
|
+
include?: string[];
|
|
202
|
+
};
|
|
203
|
+
[key: string]: unknown;
|
|
204
|
+
};
|
|
205
|
+
/** Stable key to enable prompt-token caching on Codex backend */
|
|
206
|
+
prompt_cache_key?: string;
|
|
207
|
+
max_output_tokens?: number;
|
|
208
|
+
max_completion_tokens?: number;
|
|
209
|
+
[key: string]: unknown;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* SSE event data structure
|
|
213
|
+
*/
|
|
214
|
+
export interface SSEEventData {
|
|
215
|
+
type: string;
|
|
216
|
+
response?: unknown;
|
|
217
|
+
[key: string]: unknown;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Cache metadata for Codex instructions
|
|
221
|
+
*/
|
|
222
|
+
export interface CacheMetadata {
|
|
223
|
+
etag: string | null;
|
|
224
|
+
tag: string;
|
|
225
|
+
lastChecked: number;
|
|
226
|
+
url: string;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* GitHub release data
|
|
230
|
+
*/
|
|
231
|
+
export interface GitHubRelease {
|
|
232
|
+
tag_name: string;
|
|
233
|
+
[key: string]: unknown;
|
|
234
|
+
}
|
|
235
|
+
export type { Auth, Provider, Model };
|
|
236
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../lib/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../lib/types.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "opencode-openai-codex-multi-auth",
|
|
3
|
+
"version": "4.4.0",
|
|
4
|
+
"description": "OpenAI ChatGPT (Codex backend) OAuth auth plugin for opencode - use your ChatGPT Plus/Pro subscription instead of API credits",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"author": "Numman Ali",
|
|
10
|
+
"contributors": [
|
|
11
|
+
"iam-brain (https://github.com/iam-brain)"
|
|
12
|
+
],
|
|
13
|
+
"repository": {
|
|
14
|
+
"type": "git",
|
|
15
|
+
"url": "git+https://github.com/iam-brain/opencode-openai-codex-multi-auth.git"
|
|
16
|
+
},
|
|
17
|
+
"keywords": [
|
|
18
|
+
"opencode",
|
|
19
|
+
"openai",
|
|
20
|
+
"codex",
|
|
21
|
+
"chatgpt",
|
|
22
|
+
"oauth",
|
|
23
|
+
"multi",
|
|
24
|
+
"gpt-5",
|
|
25
|
+
"plugin",
|
|
26
|
+
"auth",
|
|
27
|
+
"chatgpt-plus",
|
|
28
|
+
"chatgpt-pro"
|
|
29
|
+
],
|
|
30
|
+
"homepage": "https://github.com/iam-brain/opencode-openai-codex-multi-auth#readme",
|
|
31
|
+
"bugs": {
|
|
32
|
+
"url": "https://github.com/iam-brain/opencode-openai-codex-multi-auth/issues"
|
|
33
|
+
},
|
|
34
|
+
"scripts": {
|
|
35
|
+
"build": "tsc && cp lib/oauth-success.html dist/lib/",
|
|
36
|
+
"typecheck": "tsc --noEmit",
|
|
37
|
+
"test": "vitest run",
|
|
38
|
+
"test:watch": "vitest",
|
|
39
|
+
"test:ui": "vitest --ui",
|
|
40
|
+
"test:coverage": "vitest run --coverage"
|
|
41
|
+
},
|
|
42
|
+
"bin": {
|
|
43
|
+
"opencode-openai-codex-multi-auth": "scripts/install-opencode-codex-auth.js",
|
|
44
|
+
"opencode-openai-codex-auth": "scripts/install-opencode-codex-auth.js"
|
|
45
|
+
},
|
|
46
|
+
"files": [
|
|
47
|
+
"dist/",
|
|
48
|
+
"assets/",
|
|
49
|
+
"config/",
|
|
50
|
+
"scripts/",
|
|
51
|
+
"README.md",
|
|
52
|
+
"LICENSE"
|
|
53
|
+
],
|
|
54
|
+
"engines": {
|
|
55
|
+
"node": ">=20.0.0"
|
|
56
|
+
},
|
|
57
|
+
"peerDependencies": {
|
|
58
|
+
"@opencode-ai/plugin": "^1.0.150"
|
|
59
|
+
},
|
|
60
|
+
"devDependencies": {
|
|
61
|
+
"@opencode-ai/plugin": "^1.0.150",
|
|
62
|
+
"@opencode-ai/sdk": "^1.0.150",
|
|
63
|
+
"@types/node": "^24.6.2",
|
|
64
|
+
"@vitest/ui": "^3.2.4",
|
|
65
|
+
"typescript": "^5.9.3",
|
|
66
|
+
"vitest": "^3.2.4"
|
|
67
|
+
},
|
|
68
|
+
"dependencies": {
|
|
69
|
+
"@openauthjs/openauth": "^0.4.3",
|
|
70
|
+
"hono": "^4.10.4",
|
|
71
|
+
"jsonc-parser": "^3.3.1"
|
|
72
|
+
},
|
|
73
|
+
"overrides": {
|
|
74
|
+
"hono": "^4.10.4",
|
|
75
|
+
"vite": "^7.1.12"
|
|
76
|
+
}
|
|
77
|
+
}
|