Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

@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
ParameterType
optsTokenManagerOptions
Returns

CodexTokenManager

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
ParameterType
argsunknown[]
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>;

MDN Reference

Parameters
ParameterType
inputRequestInfo | URL
init?RequestInit
Returns

Promise<Response>

Call Signature
(input, init?): Promise<Response>;

MDN Reference

Parameters
ParameterType
inputstring | 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>;

MDN Reference

Parameters
ParameterType
inputRequestInfo | URL
init?RequestInit
Returns

Promise<Response>

Call Signature
(input, init?): Promise<Response>;

MDN Reference

Parameters
ParameterType
inputstring | 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
ParameterType
tokensCodexTokens
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

ParameterType
tokensCodexTokens

Returns

string | undefined


createGptOauthModel()

function createGptOauthModel(opts): ModelService;

Defined in: packages/drivers/model/gpt-oauth/src/index.ts:254

Parameters

ParameterType
optsGptOauthModelOptions

Returns

ModelService


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

ParameterType
optsGptOauthModelOptions

Returns

SystemPlugin


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

ParameterType
tokenstring

Returns

number | undefined


jwtPayload()

function jwtPayload(token): Record<string, unknown>;

Defined in: packages/drivers/model/gpt-oauth/src/auth.ts:34

Parameters

ParameterType
tokenstring

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

ParameterTypeDefault value
kv{ get: string | Promise<string | null> | null; put: void | Promise<void>; }undefined
kv.getundefined
kv.putundefined
keystring'codex-oauth'

Returns

TokenStore


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

ParameterType
jsonstring | Record<string, unknown>

Returns

CodexTokens


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

ParameterType
tokensCodexTokens

Returns

string