@sms/model-gpt-oauth
Classes
CodexTokenManager
Defined in: packages/drivers/model/gpt-oauth/src/auth.ts:99
Hands out a valid access token, refreshing (once, shared across concurrent callers) when it is about to expire.
Constructors
Constructor
new CodexTokenManager(opts): CodexTokenManager;
Defined in: packages/drivers/model/gpt-oauth/src/auth.ts:104
Parameters
| Parameter | Type |
|---|---|
opts | TokenManagerOptions |
Returns
Methods
current()
current(): Promise<{
accessToken: string;
accountId: string | undefined;
}>;
Defined in: packages/drivers/model/gpt-oauth/src/auth.ts:109
Returns
Promise<{
accessToken: string;
accountId: string | undefined;
}>
refresh()
refresh(): Promise<CodexTokens>;
Defined in: packages/drivers/model/gpt-oauth/src/auth.ts:119
Force a refresh (after a 401). Concurrent calls share one request.
Returns
Promise<CodexTokens>
Interfaces
CodexTokens
Defined in: packages/drivers/model/gpt-oauth/src/auth.ts:10
Codex OAuth tokens: parsing, expiry, refresh. No Node APIs — runs in Workers.
The tokens come from codex login (~/.codex/auth.json, see ./node) or any store you give
the driver. Access tokens are JWTs; the ChatGPT account id lives in their
https://api.openai.com/auth claim. Refresh uses Codex CLI’s public OAuth client, so the
refresh token from codex login keeps working here.
Properties
accessToken
accessToken: string;
Defined in: packages/drivers/model/gpt-oauth/src/auth.ts:11
accountId?
optional accountId?: string;
Defined in: packages/drivers/model/gpt-oauth/src/auth.ts:14
Defaults to the chatgpt_account_id claim of the access token.
idToken?
optional idToken?: string;
Defined in: packages/drivers/model/gpt-oauth/src/auth.ts:15
refreshToken
refreshToken: string;
Defined in: packages/drivers/model/gpt-oauth/src/auth.ts:12
GptOauthModelOptions
Defined in: packages/drivers/model/gpt-oauth/src/index.ts:45
Properties
baseURL?
optional baseURL?: string;
Defined in: packages/drivers/model/gpt-oauth/src/index.ts:59
Default: https://chatgpt.com/backend-api/codex
debug?
optional debug?: (...args) => void;
Defined in: packages/drivers/model/gpt-oauth/src/index.ts:62
Parameters
| Parameter | Type |
|---|---|
…args | unknown[] |
Returns
void
effort?
optional effort?: "low" | "medium" | "high" | "minimal";
Defined in: packages/drivers/model/gpt-oauth/src/index.ts:55
reasoning.effort.
fetch?
optional fetch?: {
(input, init?): Promise<Response>;
(input, init?): Promise<Response>;
};
Defined in: packages/drivers/model/gpt-oauth/src/index.ts:61
Inject a fetch (tests, proxies). Used for the model calls and the token refresh.
Call Signature
(input, init?): Promise<Response>;
Parameters
| Parameter | Type |
|---|---|
input | RequestInfo | URL |
init? | RequestInit |
Returns
Promise<Response>
Call Signature
(input, init?): Promise<Response>;
Parameters
| Parameter | Type |
|---|---|
input | string | Request | URL |
init? | RequestInit |
Returns
Promise<Response>
maxOutputTokens?
optional maxOutputTokens?: number;
Defined in: packages/drivers/model/gpt-oauth/src/index.ts:57
Only sent when set; Codex itself does not send one.
model?
optional model?: string;
Defined in: packages/drivers/model/gpt-oauth/src/index.ts:53
Default: ‘gpt-5.5’.
store?
optional store?: TokenStore;
Defined in: packages/drivers/model/gpt-oauth/src/index.ts:51
Persist refreshed tokens (and seed them when tokens is not given).
tokens?
optional tokens?: string | Record<string, unknown> | CodexTokens;
Defined in: packages/drivers/model/gpt-oauth/src/index.ts:49
Tokens from codex login — a CodexTokens, or the text/object of ~/.codex/auth.json.
unofficial
unofficial: true;
Defined in: packages/drivers/model/gpt-oauth/src/index.ts:47
Acknowledge that this talks to an undocumented endpoint with your personal login. Required.
TokenManagerOptions
Defined in: packages/drivers/model/gpt-oauth/src/auth.ts:89
Properties
fetch?
optional fetch?: {
(input, init?): Promise<Response>;
(input, init?): Promise<Response>;
};
Defined in: packages/drivers/model/gpt-oauth/src/auth.ts:92
Call Signature
(input, init?): Promise<Response>;
Parameters
| Parameter | Type |
|---|---|
input | RequestInfo | URL |
init? | RequestInit |
Returns
Promise<Response>
Call Signature
(input, init?): Promise<Response>;
Parameters
| Parameter | Type |
|---|---|
input | string | Request | URL |
init? | RequestInit |
Returns
Promise<Response>
now?
optional now?: () => number;
Defined in: packages/drivers/model/gpt-oauth/src/auth.ts:95
Returns
number
skewMs?
optional skewMs?: number;
Defined in: packages/drivers/model/gpt-oauth/src/auth.ts:94
Refresh this long before exp. Default 60s.
store?
optional store?: TokenStore;
Defined in: packages/drivers/model/gpt-oauth/src/auth.ts:91
tokens?
optional tokens?: CodexTokens;
Defined in: packages/drivers/model/gpt-oauth/src/auth.ts:90
TokenStore
Defined in: packages/drivers/model/gpt-oauth/src/auth.ts:19
Where refreshed tokens go (a KV namespace, a file, a DO…). load seeds the manager when no tokens were given.
Methods
load()
load():
| CodexTokens
| Promise<CodexTokens | undefined>
| undefined;
Defined in: packages/drivers/model/gpt-oauth/src/auth.ts:20
Returns
| CodexTokens
| Promise<CodexTokens | undefined>
| undefined
save()
save(tokens): void | Promise<void>;
Defined in: packages/drivers/model/gpt-oauth/src/auth.ts:21
Parameters
| Parameter | Type |
|---|---|
tokens | CodexTokens |
Returns
void | Promise<void>
Variables
CODEX_BACKEND_URL
const CODEX_BACKEND_URL: "https://chatgpt.com/backend-api/codex" = 'https://chatgpt.com/backend-api/codex';
Defined in: packages/drivers/model/gpt-oauth/src/index.ts:65
CODEX_CLIENT_ID
const CODEX_CLIENT_ID: "app_EMoamEEZ73f0CkXaXp7hrann" = 'app_EMoamEEZ73f0CkXaXp7hrann';
Defined in: packages/drivers/model/gpt-oauth/src/auth.ts:24
CODEX_TOKEN_URL
const CODEX_TOKEN_URL: "https://auth.openai.com/oauth/token" = 'https://auth.openai.com/oauth/token';
Defined in: packages/drivers/model/gpt-oauth/src/auth.ts:25
Functions
accountIdOf()
function accountIdOf(tokens): string | undefined;
Defined in: packages/drivers/model/gpt-oauth/src/auth.ts:50
Parameters
| Parameter | Type |
|---|---|
tokens | CodexTokens |
Returns
string | undefined
createGptOauthModel()
function createGptOauthModel(opts): ModelService;
Defined in: packages/drivers/model/gpt-oauth/src/index.ts:254
Parameters
| Parameter | Type |
|---|---|
opts | GptOauthModelOptions |
Returns
gptOauthModelPlugin()
function gptOauthModelPlugin(opts): SystemPlugin;
Defined in: packages/drivers/model/gpt-oauth/src/index.ts:259
createGptOauthModel wrapped as the system plugin that provides model.
Parameters
| Parameter | Type |
|---|---|
opts | GptOauthModelOptions |
Returns
jwtExpiresAt()
function jwtExpiresAt(token): number | undefined;
Defined in: packages/drivers/model/gpt-oauth/src/auth.ts:45
exp in ms, or undefined for a non-JWT token.
Parameters
| Parameter | Type |
|---|---|
token | string |
Returns
number | undefined
jwtPayload()
function jwtPayload(token): Record<string, unknown>;
Defined in: packages/drivers/model/gpt-oauth/src/auth.ts:34
Parameters
| Parameter | Type |
|---|---|
token | string |
Returns
Record<string, unknown>
kvTokenStore()
function kvTokenStore(kv, key?): TokenStore;
Defined in: packages/drivers/model/gpt-oauth/src/index.ts:264
A TokenStore on anything with a KV-style get/put of strings (Workers KV, a Map wrapper…).
Parameters
| Parameter | Type | Default value |
|---|---|---|
kv | { get: string | Promise<string | null> | null; put: void | Promise<void>; } | undefined |
kv.get | undefined | |
kv.put | undefined | |
key | string | 'codex-oauth' |
Returns
parseCodexAuth()
function parseCodexAuth(json): CodexTokens;
Defined in: packages/drivers/model/gpt-oauth/src/auth.ts:57
Accepts ~/.codex/auth.json ({ tokens: { access_token, … } }) or a serialized CodexTokens.
Parameters
| Parameter | Type |
|---|---|
json | string | Record<string, unknown> |
Returns
toCodexAuthJson()
function toCodexAuthJson(tokens): string;
Defined in: packages/drivers/model/gpt-oauth/src/auth.ts:73
The shape codex itself writes, so a store can be shared with the CLI.
Parameters
| Parameter | Type |
|---|---|
tokens | CodexTokens |
Returns
string