offrouter-core 0.2.2 → 0.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/README.md +39 -0
- package/dist/auth/credential-chain.d.ts +1 -0
- package/dist/auth/credential-chain.d.ts.map +1 -1
- package/dist/auth/credential-chain.js +28 -11
- package/dist/auth/credential-chain.js.map +1 -1
- package/dist/auth/index.d.ts +2 -2
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +1 -1
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/oauth-pkce.d.ts +68 -5
- package/dist/auth/oauth-pkce.d.ts.map +1 -1
- package/dist/auth/oauth-pkce.js +249 -65
- package/dist/auth/oauth-pkce.js.map +1 -1
- package/dist/auth/oauth-server.d.ts +3 -1
- package/dist/auth/oauth-server.d.ts.map +1 -1
- package/dist/auth/oauth-server.js +122 -37
- package/dist/auth/oauth-server.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# offrouter-core
|
|
2
|
+
|
|
3
|
+
Core routing engine for OffRouter — subscription-first model routing for coding agents.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Policy engine** — evaluate routing policies against provider capability, cost, and user-defined rules
|
|
8
|
+
- **Credential chain auth** — OAuth PKCE flow + API key auth with automatic discovery
|
|
9
|
+
- **Provider catalog** — discover available providers, models, and subscription tiers
|
|
10
|
+
- **Usage tracking** — real-time usage counters with near-limit detection and fallback triggers
|
|
11
|
+
- **Multi-account subscriptions** — aggregate capacity across multiple accounts on the same provider
|
|
12
|
+
- **Audit logging** — structured, redactable audit trail with configurable persistence
|
|
13
|
+
|
|
14
|
+
## Install
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
npm install offrouter-core
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Quick example
|
|
21
|
+
|
|
22
|
+
```ts
|
|
23
|
+
import { routeRequest, evaluatePolicy, loadConfig } from 'offrouter-core'
|
|
24
|
+
|
|
25
|
+
const config = await loadConfig('~/.config/offrouter/config.json')
|
|
26
|
+
const result = await routeRequest(
|
|
27
|
+
{ prompt: 'Explain quantum computing', model: 'sonnet' },
|
|
28
|
+
config
|
|
29
|
+
)
|
|
30
|
+
console.log(result.chosenProvider, result.chosenModel)
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Links
|
|
34
|
+
|
|
35
|
+
- [offrouter.com](https://offrouter.com)
|
|
36
|
+
- [GitHub](https://github.com/pooriaarab/offrouter)
|
|
37
|
+
- [Docs](https://offrouter.com/docs/quickstart.html)
|
|
38
|
+
|
|
39
|
+
Claude Code primary model is unchanged in V1; OffRouter routes delegated work.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credential-chain.d.ts","sourceRoot":"","sources":["../../src/auth/credential-chain.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"credential-chain.d.ts","sourceRoot":"","sources":["../../src/auth/credential-chain.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAYjD;;;;GAIG;AACH,qBAAa,QAAQ,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;;gBAGjC,KAAK,EAAE,CAAC;IAIpB,oEAAoE;IACpE,IAAI,QAAQ,IAAI,CAAC,CAEhB;IAED,iEAAiE;IACjE,MAAM,IAAI,MAAM;IAIhB,wDAAwD;IACxD,QAAQ,IAAI,MAAM;CAGnB;AAMD;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxB,4CAA4C;IAC5C,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;CACjD;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,yCAAyC;IACzC,KAAK,EAAE,WAAW,CAAC;IACnB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAClE;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,gBAAgB,EAAE,EAC3B,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAQlC"}
|
|
@@ -64,7 +64,7 @@ async function trySource(source, opts) {
|
|
|
64
64
|
// Resolve stored OAuth tokens. This does NOT trigger a login flow;
|
|
65
65
|
// it resolves tokens already obtained via the `login` command.
|
|
66
66
|
// If the token is expired and a refresher is wired, try refreshing.
|
|
67
|
-
return tryOAuth(source.provider, opts.store, opts.refreshOAuthToken);
|
|
67
|
+
return tryOAuth(source.provider, opts.store, opts.refreshOAuthToken, source.accountId);
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
}
|
|
@@ -124,24 +124,41 @@ async function tryKeychain(providerId, store, accountId) {
|
|
|
124
124
|
* Resolve a credential from stored OAuth tokens (no new login flow).
|
|
125
125
|
* Returns the access token if valid, triggers refresh if expired + wired,
|
|
126
126
|
* or returns null if no tokens exist or refresh fails.
|
|
127
|
+
*
|
|
128
|
+
* Auto-refresh: when the token is expired or within 5 minutes of expiry,
|
|
129
|
+
* and a refreshToken is stored, tries to refresh the token internally.
|
|
130
|
+
* If refresh fails, returns null to fall through to the next source.
|
|
127
131
|
*/
|
|
128
|
-
async function tryOAuth(providerId, store, refresh) {
|
|
132
|
+
async function tryOAuth(providerId, store, refresh, accountId) {
|
|
129
133
|
try {
|
|
130
|
-
const tokens = await getOAuthTokens(providerId, store);
|
|
134
|
+
const tokens = await getOAuthTokens(providerId, store, accountId);
|
|
131
135
|
if (!tokens)
|
|
132
136
|
return null;
|
|
133
|
-
|
|
137
|
+
// Use 5-minute early-refresh window (subtract 5 min from expiresAt).
|
|
138
|
+
if (!isOAuthTokenExpired(tokens, Date.now(), 5 * 60_000)) {
|
|
134
139
|
return tokens.accessToken;
|
|
135
140
|
}
|
|
136
|
-
// Expired: try refresh if a refresher is wired.
|
|
137
|
-
if (
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
+
// Expired or near expiry: try refresh if a refresher is wired.
|
|
142
|
+
if (refresh) {
|
|
143
|
+
try {
|
|
144
|
+
return await refresh(providerId);
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
141
149
|
}
|
|
142
|
-
|
|
143
|
-
|
|
150
|
+
// No callback but has a refreshToken stored -- auto-refresh internally.
|
|
151
|
+
if (tokens.refreshToken) {
|
|
152
|
+
try {
|
|
153
|
+
const { refreshTokens } = await import("./oauth-pkce.js");
|
|
154
|
+
const result = await refreshTokens(providerId, tokens.refreshToken, store, { accountId });
|
|
155
|
+
return result.accessToken.rawValue;
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
144
160
|
}
|
|
161
|
+
return null;
|
|
145
162
|
}
|
|
146
163
|
catch {
|
|
147
164
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credential-chain.js","sourceRoot":"","sources":["../../src/auth/credential-chain.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,mBAAmB,GACpB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"credential-chain.js","sourceRoot":"","sources":["../../src/auth/credential-chain.ts"],"names":[],"mappings":"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"}
|
package/dist/auth/index.d.ts
CHANGED
|
@@ -5,6 +5,6 @@ export { Redacted, resolveCredential, } from "./credential-chain.js";
|
|
|
5
5
|
export type { CredentialResult, CredentialSource, ResolveCredentialOptions, } from "./credential-chain.js";
|
|
6
6
|
export { deleteOAuthTokens, getOAuthTokens, getProviderToken, isOAuthTokenExpired, setOAuthTokens, setProviderToken, } from "./keychain.js";
|
|
7
7
|
export type { OAuthStoredTokens } from "./keychain.js";
|
|
8
|
-
export { defaultCallbackPort, exchangeCodeForTokens, generateCodeChallenge, generateCodeVerifier, isOAuthProvider, PKCE_CONFIGS, refreshTokens, resolveClientId, runOAuthLogin, startOAuthFlow, } from "./oauth-pkce.js";
|
|
9
|
-
export type { OAuthFlowResult, OAuthFlowState, OAuthProviderConfig, OAuthStartOptions, OAuthTokenOptions, OAuthTokenResponse, RunOAuthLoginOptions, RunOAuthLoginResult, } from "./oauth-pkce.js";
|
|
8
|
+
export { defaultCallbackPort, exchangeCodeForTokens, generateCodeChallenge, generateCodeVerifier, isDeviceCodeProvider, isOAuthProvider, PKCE_CONFIGS, refreshTokens, resolveClientId, runOAuthLogin, startDeviceCodeFlow, startOAuthFlow, } from "./oauth-pkce.js";
|
|
9
|
+
export type { DeviceCodeFlowOptions, DeviceCodeResult, DeviceCodeResponse, OAuthFlowResult, OAuthFlowState, OAuthProviderConfig, OAuthStartOptions, OAuthTokenOptions, OAuthTokenResponse, RunOAuthLoginOptions, RunOAuthLoginResult, } from "./oauth-pkce.js";
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/auth/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,QAAQ,EACR,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,aAAa,EACb,eAAe,EACf,aAAa,EACb,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,QAAQ,EACR,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,aAAa,EACb,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC"}
|
package/dist/auth/index.js
CHANGED
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export { Redacted, resolveCredential, } from "./credential-chain.js";
|
|
5
5
|
export { deleteOAuthTokens, getOAuthTokens, getProviderToken, isOAuthTokenExpired, setOAuthTokens, setProviderToken, } from "./keychain.js";
|
|
6
|
-
export { defaultCallbackPort, exchangeCodeForTokens, generateCodeChallenge, generateCodeVerifier, isOAuthProvider, PKCE_CONFIGS, refreshTokens, resolveClientId, runOAuthLogin, startOAuthFlow, } from "./oauth-pkce.js";
|
|
6
|
+
export { defaultCallbackPort, exchangeCodeForTokens, generateCodeChallenge, generateCodeVerifier, isDeviceCodeProvider, isOAuthProvider, PKCE_CONFIGS, refreshTokens, resolveClientId, runOAuthLogin, startDeviceCodeFlow, startOAuthFlow, } from "./oauth-pkce.js";
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
package/dist/auth/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,QAAQ,EACR,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAO/B,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,aAAa,EACb,eAAe,EACf,aAAa,EACb,cAAc,GACf,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,QAAQ,EACR,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAO/B,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,aAAa,EACb,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,cAAc,GACf,MAAM,iBAAiB,CAAC"}
|
|
@@ -2,7 +2,7 @@ import type { SecretStore } from "../secrets.js";
|
|
|
2
2
|
import { Redacted } from "./credential-chain.js";
|
|
3
3
|
/**
|
|
4
4
|
* Generate a random code verifier for PKCE (RFC 7636).
|
|
5
|
-
*
|
|
5
|
+
* Uses base64url encoding of 32 random bytes (43 chars).
|
|
6
6
|
*/
|
|
7
7
|
export declare function generateCodeVerifier(): string;
|
|
8
8
|
/**
|
|
@@ -11,22 +11,30 @@ export declare function generateCodeVerifier(): string;
|
|
|
11
11
|
*/
|
|
12
12
|
export declare function generateCodeChallenge(verifier: string): Promise<string>;
|
|
13
13
|
export interface OAuthProviderConfig {
|
|
14
|
-
authorizeUrl
|
|
14
|
+
authorizeUrl?: string;
|
|
15
15
|
tokenUrl: string;
|
|
16
16
|
scopes: string[];
|
|
17
17
|
defaultClientId?: string;
|
|
18
18
|
clientIdEnvVar?: string;
|
|
19
|
+
callbackPort?: number;
|
|
20
|
+
callbackPath?: string;
|
|
21
|
+
/** Device code URL for device-code flow (xAI, GitHub Copilot). */
|
|
22
|
+
deviceCodeUrl?: string;
|
|
19
23
|
}
|
|
20
24
|
/**
|
|
21
25
|
* OAuth PKCE configurations for supported providers.
|
|
22
|
-
*
|
|
23
|
-
*
|
|
26
|
+
* Anthropic and OpenAI use PKCE browser callback flow.
|
|
27
|
+
* xAI (Grok) and GitHub Copilot use device code flow.
|
|
24
28
|
*/
|
|
25
29
|
export declare const PKCE_CONFIGS: Record<string, OAuthProviderConfig>;
|
|
26
30
|
/**
|
|
27
31
|
* Returns true if the provider supports OAuth (opt-in).
|
|
28
32
|
*/
|
|
29
33
|
export declare function isOAuthProvider(providerId: string): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Returns true if the provider uses device code flow instead of PKCE browser callback.
|
|
36
|
+
*/
|
|
37
|
+
export declare function isDeviceCodeProvider(providerId: string): boolean;
|
|
30
38
|
/**
|
|
31
39
|
* In-memory session data associated with a PKCE nonce.
|
|
32
40
|
* Never serialised into the caller-visible state string.
|
|
@@ -34,6 +42,7 @@ export declare function isOAuthProvider(providerId: string): boolean;
|
|
|
34
42
|
export interface OAuthSession {
|
|
35
43
|
codeVerifier: string;
|
|
36
44
|
redirectUri: string;
|
|
45
|
+
nonce: string;
|
|
37
46
|
createdAt: number;
|
|
38
47
|
}
|
|
39
48
|
/**
|
|
@@ -66,13 +75,51 @@ export interface OAuthStartOptions {
|
|
|
66
75
|
}
|
|
67
76
|
export interface OAuthTokenOptions {
|
|
68
77
|
store: SecretStore;
|
|
78
|
+
/** Override client ID (default from env or PKCE_CONFIGS). */
|
|
79
|
+
clientId?: string;
|
|
69
80
|
fetch?: typeof globalThis.fetch;
|
|
81
|
+
/**
|
|
82
|
+
* Optional account id for multi-account storage.
|
|
83
|
+
* When set, tokens are stored under ${providerId}:${accountId}:oauth.
|
|
84
|
+
*/
|
|
85
|
+
accountId?: string;
|
|
86
|
+
}
|
|
87
|
+
export interface DeviceCodeFlowOptions {
|
|
88
|
+
store: SecretStore;
|
|
89
|
+
/** Override client ID (default from env or PKCE_CONFIGS). */
|
|
90
|
+
clientId?: string;
|
|
91
|
+
/** Injectable fetch (tests). */
|
|
92
|
+
fetch?: typeof globalThis.fetch;
|
|
93
|
+
/** Called with the device code data once received. */
|
|
94
|
+
onDeviceCode?: (data: DeviceCodeResponse) => void;
|
|
95
|
+
/** Best-effort browser open (non-throwing). */
|
|
96
|
+
openBrowser?: (url: string) => Promise<boolean> | boolean;
|
|
97
|
+
/** Optional abort signal. */
|
|
98
|
+
signal?: AbortSignal;
|
|
99
|
+
/**
|
|
100
|
+
* Optional account id for multi-account storage.
|
|
101
|
+
* When set, tokens are stored under ${providerId}:${accountId}:oauth.
|
|
102
|
+
*/
|
|
103
|
+
accountId?: string;
|
|
104
|
+
}
|
|
105
|
+
export interface DeviceCodeResponse {
|
|
106
|
+
device_code: string;
|
|
107
|
+
user_code: string;
|
|
108
|
+
verification_uri: string;
|
|
109
|
+
verification_uri_complete?: string;
|
|
110
|
+
interval?: number;
|
|
111
|
+
expires_in: number;
|
|
112
|
+
}
|
|
113
|
+
export interface DeviceCodeResult {
|
|
114
|
+
provider: string;
|
|
115
|
+
expiresAt?: number;
|
|
116
|
+
scope?: string;
|
|
70
117
|
}
|
|
71
118
|
/**
|
|
72
119
|
* Create an OAuth state string that encodes provider metadata.
|
|
73
120
|
* Used to validate the callback matches the initiated flow.
|
|
74
121
|
*/
|
|
75
|
-
export declare function createOAuthState(
|
|
122
|
+
export declare function createOAuthState(_provider: string): string;
|
|
76
123
|
/**
|
|
77
124
|
* Start an OAuth PKCE flow for the given provider.
|
|
78
125
|
* Returns the authorization URL and state for redirect.
|
|
@@ -110,6 +157,11 @@ export interface RunOAuthLoginOptions {
|
|
|
110
157
|
fetch?: typeof globalThis.fetch;
|
|
111
158
|
/** Optional abort signal. */
|
|
112
159
|
signal?: AbortSignal;
|
|
160
|
+
/**
|
|
161
|
+
* Optional account id for multi-account storage.
|
|
162
|
+
* When set, tokens are stored under ${providerId}:${accountId}:oauth.
|
|
163
|
+
*/
|
|
164
|
+
accountId?: string;
|
|
113
165
|
}
|
|
114
166
|
export interface RunOAuthLoginResult {
|
|
115
167
|
provider: string;
|
|
@@ -128,11 +180,22 @@ export interface RunOAuthLoginResult {
|
|
|
128
180
|
* 7. Clean up the server
|
|
129
181
|
*/
|
|
130
182
|
export declare function runOAuthLogin(opts: RunOAuthLoginOptions): Promise<RunOAuthLoginResult>;
|
|
183
|
+
/**
|
|
184
|
+
* Run the device code flow for providers that don't support PKCE browser callback.
|
|
185
|
+
*
|
|
186
|
+
* 1. Requests a device code from the provider
|
|
187
|
+
* 2. Prints the user code and verification URL
|
|
188
|
+
* 3. Attempts to open the browser to the verification URL
|
|
189
|
+
* 4. Polls the token endpoint until the user authorizes
|
|
190
|
+
* 5. Stores tokens in the secret store
|
|
191
|
+
*/
|
|
192
|
+
export declare function startDeviceCodeFlow(provider: string, options: DeviceCodeFlowOptions): Promise<DeviceCodeResult>;
|
|
131
193
|
/**
|
|
132
194
|
* Refresh an OAuth token using a refresh token.
|
|
133
195
|
* Updates the stored tokens on success.
|
|
134
196
|
*/
|
|
135
197
|
export declare function refreshTokens(provider: string, refreshToken: string, store: SecretStore, options?: {
|
|
136
198
|
fetch?: typeof globalThis.fetch;
|
|
199
|
+
accountId?: string;
|
|
137
200
|
}): Promise<OAuthTokenResponse>;
|
|
138
201
|
//# sourceMappingURL=oauth-pkce.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-pkce.d.ts","sourceRoot":"","sources":["../../src/auth/oauth-pkce.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"oauth-pkce.d.ts","sourceRoot":"","sources":["../../src/auth/oauth-pkce.ts"],"names":[],"mappings":"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"}
|
package/dist/auth/oauth-pkce.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* OAuth PKCE flow for OffRouter.
|
|
2
|
+
* OAuth PKCE and device code flow for OffRouter.
|
|
3
3
|
*
|
|
4
|
-
* Supports
|
|
5
|
-
*
|
|
4
|
+
* Supports PKCE browser callback flow (Anthropic, OpenAI) and
|
|
5
|
+
* device code flow (xAI/Grok, GitHub Copilot).
|
|
6
|
+
* Gemini/Z.ai are API-key only and do NOT implement OAuth.
|
|
6
7
|
*
|
|
7
8
|
* Never auto-triggers OAuth. Requires explicit user configuration.
|
|
8
9
|
* Tokens are stored in the SecretStore (keychain or file fallback).
|
|
@@ -14,19 +15,17 @@ import { startCallbackServer } from "./oauth-server.js";
|
|
|
14
15
|
// ---------------------------------------------------------------------------
|
|
15
16
|
// PKCE code generation
|
|
16
17
|
// ---------------------------------------------------------------------------
|
|
17
|
-
const VERIFIER_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~";
|
|
18
18
|
/**
|
|
19
19
|
* Generate a random code verifier for PKCE (RFC 7636).
|
|
20
|
-
*
|
|
20
|
+
* Uses base64url encoding of 32 random bytes (43 chars).
|
|
21
21
|
*/
|
|
22
22
|
export function generateCodeVerifier() {
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
verifier += VERIFIER_CHARS[bytes[i] % VERIFIER_CHARS.length];
|
|
23
|
+
const bytes = randomBytes(32);
|
|
24
|
+
let binary = "";
|
|
25
|
+
for (const byte of bytes) {
|
|
26
|
+
binary += String.fromCharCode(byte);
|
|
28
27
|
}
|
|
29
|
-
return
|
|
28
|
+
return btoa(binary).replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "");
|
|
30
29
|
}
|
|
31
30
|
/**
|
|
32
31
|
* Generate a S256 code challenge from a verifier (RFC 7636).
|
|
@@ -44,23 +43,48 @@ export async function generateCodeChallenge(verifier) {
|
|
|
44
43
|
}
|
|
45
44
|
/**
|
|
46
45
|
* OAuth PKCE configurations for supported providers.
|
|
47
|
-
*
|
|
48
|
-
*
|
|
46
|
+
* Anthropic and OpenAI use PKCE browser callback flow.
|
|
47
|
+
* xAI (Grok) and GitHub Copilot use device code flow.
|
|
49
48
|
*/
|
|
50
49
|
export const PKCE_CONFIGS = {
|
|
51
50
|
anthropic: {
|
|
52
|
-
authorizeUrl: "https://
|
|
53
|
-
tokenUrl: "https://
|
|
54
|
-
scopes: [
|
|
51
|
+
authorizeUrl: "https://claude.ai/oauth/authorize",
|
|
52
|
+
tokenUrl: "https://platform.claude.com/v1/oauth/token",
|
|
53
|
+
scopes: [
|
|
54
|
+
"org:create_api_key",
|
|
55
|
+
"user:profile",
|
|
56
|
+
"user:inference",
|
|
57
|
+
"user:sessions:claude_code",
|
|
58
|
+
"user:mcp_servers",
|
|
59
|
+
"user:file_upload",
|
|
60
|
+
],
|
|
55
61
|
clientIdEnvVar: "OFFROUTER_ANTHROPIC_CLIENT_ID",
|
|
56
|
-
|
|
62
|
+
defaultClientId: "9d1c250a-e61b-44d9-88ed-5944d1962f5e",
|
|
63
|
+
callbackPort: 53692,
|
|
64
|
+
callbackPath: "/callback",
|
|
57
65
|
},
|
|
58
66
|
openai: {
|
|
59
67
|
authorizeUrl: "https://auth.openai.com/oauth/authorize",
|
|
60
68
|
tokenUrl: "https://auth.openai.com/oauth/token",
|
|
61
|
-
scopes: ["offline_access"],
|
|
69
|
+
scopes: ["openid", "profile", "email", "offline_access"],
|
|
62
70
|
clientIdEnvVar: "OFFROUTER_OPENAI_CLIENT_ID",
|
|
63
|
-
|
|
71
|
+
defaultClientId: "app_EMoamEEZ73f0CkXaXp7hrann",
|
|
72
|
+
callbackPort: 1455,
|
|
73
|
+
callbackPath: "/auth/callback",
|
|
74
|
+
},
|
|
75
|
+
xai: {
|
|
76
|
+
tokenUrl: "https://auth.x.ai/oauth2/token",
|
|
77
|
+
scopes: ["openid", "profile", "email", "offline_access", "grok-cli:access", "api:access"],
|
|
78
|
+
clientIdEnvVar: "OFFROUTER_XAI_CLIENT_ID",
|
|
79
|
+
defaultClientId: "b1a00492-073a-47ea-816f-4c329264a828",
|
|
80
|
+
deviceCodeUrl: "https://auth.x.ai/oauth2/device/code",
|
|
81
|
+
},
|
|
82
|
+
"github-copilot": {
|
|
83
|
+
tokenUrl: "https://github.com/login/oauth/access_token",
|
|
84
|
+
scopes: [],
|
|
85
|
+
clientIdEnvVar: "OFFROUTER_GITHUB_COPILOT_CLIENT_ID",
|
|
86
|
+
defaultClientId: "Iv1.b507a08c87ecfe98",
|
|
87
|
+
deviceCodeUrl: "https://github.com/login/device/code",
|
|
64
88
|
},
|
|
65
89
|
};
|
|
66
90
|
/**
|
|
@@ -69,6 +93,13 @@ export const PKCE_CONFIGS = {
|
|
|
69
93
|
export function isOAuthProvider(providerId) {
|
|
70
94
|
return providerId in PKCE_CONFIGS;
|
|
71
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* Returns true if the provider uses device code flow instead of PKCE browser callback.
|
|
98
|
+
*/
|
|
99
|
+
export function isDeviceCodeProvider(providerId) {
|
|
100
|
+
const config = PKCE_CONFIGS[providerId];
|
|
101
|
+
return !!config?.deviceCodeUrl;
|
|
102
|
+
}
|
|
72
103
|
// ---------------------------------------------------------------------------
|
|
73
104
|
// OAuth session store (in-memory, out-of-band — NOT embedded in state)
|
|
74
105
|
// ---------------------------------------------------------------------------
|
|
@@ -100,9 +131,10 @@ export function cancelOAuthSession(nonce) {
|
|
|
100
131
|
* Create an OAuth state string that encodes provider metadata.
|
|
101
132
|
* Used to validate the callback matches the initiated flow.
|
|
102
133
|
*/
|
|
103
|
-
export function createOAuthState(
|
|
104
|
-
|
|
105
|
-
|
|
134
|
+
export function createOAuthState(_provider) {
|
|
135
|
+
// Simple nonce string (not JSON) - some providers reject complex state values.
|
|
136
|
+
void _provider;
|
|
137
|
+
return randomBytes(16).toString("hex");
|
|
106
138
|
}
|
|
107
139
|
/**
|
|
108
140
|
* Start an OAuth PKCE flow for the given provider.
|
|
@@ -111,12 +143,13 @@ export function createOAuthState(provider) {
|
|
|
111
143
|
*/
|
|
112
144
|
export async function startOAuthFlow(provider, options) {
|
|
113
145
|
const config = PKCE_CONFIGS[provider];
|
|
114
|
-
if (!config) {
|
|
146
|
+
if (!config || !config.authorizeUrl) {
|
|
115
147
|
throw new Error(`OAuth not supported for provider: ${provider}. ` +
|
|
116
148
|
`OAuth is only available for anthropic and openai providers.`);
|
|
117
149
|
}
|
|
118
150
|
const clientId = options.clientId ??
|
|
119
|
-
(config.clientIdEnvVar ? process.env[config.clientIdEnvVar] : undefined)
|
|
151
|
+
(config.clientIdEnvVar ? process.env[config.clientIdEnvVar] : undefined) ??
|
|
152
|
+
config.defaultClientId;
|
|
120
153
|
if (!clientId) {
|
|
121
154
|
throw new Error(`Client ID required for ${provider} OAuth. ` +
|
|
122
155
|
`Set the ${config.clientIdEnvVar ?? "client id"} environment variable ` +
|
|
@@ -124,8 +157,11 @@ export async function startOAuthFlow(provider, options) {
|
|
|
124
157
|
}
|
|
125
158
|
const codeVerifier = generateCodeVerifier();
|
|
126
159
|
const codeChallenge = await generateCodeChallenge(codeVerifier);
|
|
127
|
-
|
|
160
|
+
// Use the verifier as the state (same pattern as pi/other CLIs).
|
|
161
|
+
// The callback server validates state === verifier.
|
|
162
|
+
const state = codeVerifier;
|
|
128
163
|
const params = new URLSearchParams({
|
|
164
|
+
code: "true",
|
|
129
165
|
response_type: "code",
|
|
130
166
|
client_id: clientId,
|
|
131
167
|
redirect_uri: options.redirectUri,
|
|
@@ -135,16 +171,17 @@ export async function startOAuthFlow(provider, options) {
|
|
|
135
171
|
scope: config.scopes.join(" "),
|
|
136
172
|
});
|
|
137
173
|
const authorizeUrl = `${config.authorizeUrl}?${params.toString()}`;
|
|
138
|
-
// Store the verifier
|
|
139
|
-
|
|
140
|
-
sessions.set(
|
|
174
|
+
// Store the verifier in the session, keyed by the state (= verifier).
|
|
175
|
+
// The callback validates state === verifier, then we consume the session.
|
|
176
|
+
sessions.set(state, {
|
|
141
177
|
codeVerifier,
|
|
142
178
|
redirectUri: options.redirectUri,
|
|
179
|
+
nonce: state,
|
|
143
180
|
createdAt: Date.now(),
|
|
144
181
|
});
|
|
145
182
|
return {
|
|
146
183
|
authorizeUrl,
|
|
147
|
-
state, //
|
|
184
|
+
state, // simple nonce string, no secrets
|
|
148
185
|
};
|
|
149
186
|
}
|
|
150
187
|
/**
|
|
@@ -156,40 +193,47 @@ export async function exchangeCodeForTokens(provider, code, statePayload, option
|
|
|
156
193
|
if (!config) {
|
|
157
194
|
throw new Error(`OAuth not supported for provider: ${provider}`);
|
|
158
195
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
stateData = JSON.parse(statePayload);
|
|
162
|
-
}
|
|
163
|
-
catch {
|
|
164
|
-
throw new Error("Invalid OAuth state payload");
|
|
165
|
-
}
|
|
166
|
-
if (!stateData.nonce) {
|
|
167
|
-
throw new Error("Missing nonce in OAuth state");
|
|
168
|
-
}
|
|
169
|
-
const session = consumeOAuthSession(stateData.nonce);
|
|
196
|
+
// statePayload is now a simple nonce string (not JSON).
|
|
197
|
+
const session = consumeOAuthSession(statePayload);
|
|
170
198
|
if (!session) {
|
|
171
199
|
throw new Error("OAuth session expired, already consumed, or not found. Please restart the OAuth flow.");
|
|
172
200
|
}
|
|
173
201
|
if (!session.codeVerifier) {
|
|
174
202
|
throw new Error("Missing code verifier in OAuth session");
|
|
175
203
|
}
|
|
176
|
-
const clientId =
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
204
|
+
const clientId = options.clientId ??
|
|
205
|
+
resolveClientId(provider) ??
|
|
206
|
+
"";
|
|
207
|
+
// Anthropic uses JSON body; all others use form-encoded.
|
|
208
|
+
// Anthropic requires the state field in the token exchange to match the
|
|
209
|
+
// state sent in the authorize URL.
|
|
210
|
+
const useJson = provider === "anthropic";
|
|
211
|
+
const tokenBody = useJson
|
|
212
|
+
? JSON.stringify({
|
|
213
|
+
grant_type: "authorization_code",
|
|
214
|
+
client_id: clientId,
|
|
215
|
+
code,
|
|
216
|
+
state: statePayload,
|
|
217
|
+
redirect_uri: session.redirectUri,
|
|
218
|
+
code_verifier: session.codeVerifier,
|
|
219
|
+
})
|
|
220
|
+
: new URLSearchParams({
|
|
221
|
+
grant_type: "authorization_code",
|
|
222
|
+
code,
|
|
223
|
+
redirect_uri: session.redirectUri,
|
|
224
|
+
client_id: clientId,
|
|
225
|
+
code_verifier: session.codeVerifier,
|
|
226
|
+
}).toString();
|
|
186
227
|
const fetchImpl = options.fetch ?? globalThis.fetch.bind(globalThis);
|
|
187
228
|
const response = await fetchImpl(config.tokenUrl, {
|
|
188
229
|
method: "POST",
|
|
189
230
|
headers: {
|
|
190
|
-
"content-type":
|
|
231
|
+
"content-type": useJson
|
|
232
|
+
? "application/json"
|
|
233
|
+
: "application/x-www-form-urlencoded",
|
|
234
|
+
accept: "application/json",
|
|
191
235
|
},
|
|
192
|
-
body:
|
|
236
|
+
body: tokenBody,
|
|
193
237
|
});
|
|
194
238
|
if (!response.ok) {
|
|
195
239
|
const body = await response.text().catch(() => "");
|
|
@@ -210,7 +254,7 @@ export async function exchangeCodeForTokens(provider, code, statePayload, option
|
|
|
210
254
|
: undefined,
|
|
211
255
|
scope: json.scope,
|
|
212
256
|
obtainedAt,
|
|
213
|
-
}, options.store);
|
|
257
|
+
}, options.store, options.accountId);
|
|
214
258
|
}
|
|
215
259
|
return {
|
|
216
260
|
accessToken: new Redacted(json.access_token),
|
|
@@ -226,7 +270,7 @@ export async function exchangeCodeForTokens(provider, code, statePayload, option
|
|
|
226
270
|
// ---------------------------------------------------------------------------
|
|
227
271
|
/** Default loopback ports for supported providers. */
|
|
228
272
|
const DEFAULT_CALLBACK_PORTS = {
|
|
229
|
-
anthropic:
|
|
273
|
+
anthropic: 53692,
|
|
230
274
|
openai: 1455,
|
|
231
275
|
};
|
|
232
276
|
/**
|
|
@@ -241,9 +285,9 @@ export function defaultCallbackPort(provider) {
|
|
|
241
285
|
*/
|
|
242
286
|
export function resolveClientId(provider, env = process.env) {
|
|
243
287
|
const config = PKCE_CONFIGS[provider];
|
|
244
|
-
if (!config
|
|
288
|
+
if (!config)
|
|
245
289
|
return undefined;
|
|
246
|
-
return env[config.clientIdEnvVar] ??
|
|
290
|
+
return env[config.clientIdEnvVar ?? ""] ?? config.defaultClientId;
|
|
247
291
|
}
|
|
248
292
|
/**
|
|
249
293
|
* Run the full OAuth PKCE login flow:
|
|
@@ -270,7 +314,8 @@ export async function runOAuthLogin(opts) {
|
|
|
270
314
|
}
|
|
271
315
|
// 1. Start callback server
|
|
272
316
|
const port = opts.port ?? defaultCallbackPort(opts.provider);
|
|
273
|
-
const
|
|
317
|
+
const callbackPath = config.callbackPath ?? "/callback";
|
|
318
|
+
const server = await startCallbackServer(port, { callbackPath });
|
|
274
319
|
try {
|
|
275
320
|
const redirectUri = server.url;
|
|
276
321
|
// 2. Build the authorize URL with PKCE
|
|
@@ -298,6 +343,7 @@ export async function runOAuthLogin(opts) {
|
|
|
298
343
|
const tokens = await exchangeCodeForTokens(opts.provider, code, flow.state, {
|
|
299
344
|
store: opts.store,
|
|
300
345
|
fetch: opts.fetch,
|
|
346
|
+
accountId: opts.accountId,
|
|
301
347
|
});
|
|
302
348
|
// 6. Tokens are already stored by exchangeCodeForTokens.
|
|
303
349
|
// Compute expiresAt from expiresIn for the result.
|
|
@@ -316,6 +362,133 @@ export async function runOAuthLogin(opts) {
|
|
|
316
362
|
await server.close();
|
|
317
363
|
}
|
|
318
364
|
}
|
|
365
|
+
// ---------------------------------------------------------------------------
|
|
366
|
+
// Device code flow (xAI, GitHub Copilot)
|
|
367
|
+
// ---------------------------------------------------------------------------
|
|
368
|
+
/**
|
|
369
|
+
* Run the device code flow for providers that don't support PKCE browser callback.
|
|
370
|
+
*
|
|
371
|
+
* 1. Requests a device code from the provider
|
|
372
|
+
* 2. Prints the user code and verification URL
|
|
373
|
+
* 3. Attempts to open the browser to the verification URL
|
|
374
|
+
* 4. Polls the token endpoint until the user authorizes
|
|
375
|
+
* 5. Stores tokens in the secret store
|
|
376
|
+
*/
|
|
377
|
+
export async function startDeviceCodeFlow(provider, options) {
|
|
378
|
+
const config = PKCE_CONFIGS[provider];
|
|
379
|
+
if (!config || !config.deviceCodeUrl) {
|
|
380
|
+
throw new Error(`Device code flow not supported for provider: ${provider}`);
|
|
381
|
+
}
|
|
382
|
+
const clientId = options.clientId ??
|
|
383
|
+
(config.clientIdEnvVar ? process.env[config.clientIdEnvVar] : undefined) ??
|
|
384
|
+
config.defaultClientId;
|
|
385
|
+
if (!clientId) {
|
|
386
|
+
throw new Error(`Client ID required for ${provider} device code flow. ` +
|
|
387
|
+
`Set the ${config.clientIdEnvVar ?? "client id"} environment variable ` +
|
|
388
|
+
`or pass it explicitly.`);
|
|
389
|
+
}
|
|
390
|
+
const fetchImpl = options.fetch ?? globalThis.fetch.bind(globalThis);
|
|
391
|
+
// 1. Request device code
|
|
392
|
+
const deviceCodeParams = new URLSearchParams({
|
|
393
|
+
client_id: clientId,
|
|
394
|
+
scope: config.scopes.join(" "),
|
|
395
|
+
});
|
|
396
|
+
const deviceResponse = await fetchImpl(config.deviceCodeUrl, {
|
|
397
|
+
method: "POST",
|
|
398
|
+
headers: {
|
|
399
|
+
"content-type": "application/x-www-form-urlencoded",
|
|
400
|
+
accept: "application/json",
|
|
401
|
+
},
|
|
402
|
+
body: deviceCodeParams.toString(),
|
|
403
|
+
});
|
|
404
|
+
if (!deviceResponse.ok) {
|
|
405
|
+
const body = await deviceResponse.text().catch(() => "");
|
|
406
|
+
throw new Error(`Device code request failed for ${provider}: HTTP ${deviceResponse.status} ${body}`);
|
|
407
|
+
}
|
|
408
|
+
const deviceData = (await deviceResponse.json());
|
|
409
|
+
if (!deviceData.device_code || !deviceData.user_code) {
|
|
410
|
+
throw new Error(`Device code request for ${provider} returned incomplete data`);
|
|
411
|
+
}
|
|
412
|
+
// 2. Notify caller with device code data
|
|
413
|
+
options.onDeviceCode?.(deviceData);
|
|
414
|
+
// 3. Attempt to open browser to verification URL
|
|
415
|
+
const verificationUrl = deviceData.verification_uri_complete ?? deviceData.verification_uri;
|
|
416
|
+
if (options.openBrowser) {
|
|
417
|
+
try {
|
|
418
|
+
await options.openBrowser(verificationUrl);
|
|
419
|
+
}
|
|
420
|
+
catch {
|
|
421
|
+
// Best-effort only.
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
// 4. Poll for token
|
|
425
|
+
const pollInterval = (deviceData.interval ?? 5) * 1000;
|
|
426
|
+
const maxWaitMs = 5 * 60 * 1000; // 5 minutes
|
|
427
|
+
const startTime = Date.now();
|
|
428
|
+
while (true) {
|
|
429
|
+
if (options.signal?.aborted) {
|
|
430
|
+
throw new Error("Device code flow was aborted.");
|
|
431
|
+
}
|
|
432
|
+
if (Date.now() - startTime > maxWaitMs) {
|
|
433
|
+
throw new Error(`Device code flow timed out for ${provider} after ${maxWaitMs / 1000}s`);
|
|
434
|
+
}
|
|
435
|
+
await new Promise((resolve) => setTimeout(resolve, pollInterval));
|
|
436
|
+
const tokenParams = new URLSearchParams({
|
|
437
|
+
grant_type: "urn:ietf:params:oauth:grant-type:device_code",
|
|
438
|
+
device_code: deviceData.device_code,
|
|
439
|
+
client_id: clientId,
|
|
440
|
+
});
|
|
441
|
+
const tokenResponse = await fetchImpl(config.tokenUrl, {
|
|
442
|
+
method: "POST",
|
|
443
|
+
headers: {
|
|
444
|
+
"content-type": "application/x-www-form-urlencoded",
|
|
445
|
+
accept: "application/json",
|
|
446
|
+
},
|
|
447
|
+
body: tokenParams.toString(),
|
|
448
|
+
});
|
|
449
|
+
if (!tokenResponse.ok) {
|
|
450
|
+
const body = await tokenResponse.text().catch(() => "");
|
|
451
|
+
// Handle expected polling errors
|
|
452
|
+
if (body.includes("authorization_pending")) {
|
|
453
|
+
continue; // Keep polling
|
|
454
|
+
}
|
|
455
|
+
if (body.includes("slow_down")) {
|
|
456
|
+
// Increase interval by 5 seconds as per RFC
|
|
457
|
+
await new Promise((resolve) => setTimeout(resolve, 5000));
|
|
458
|
+
continue;
|
|
459
|
+
}
|
|
460
|
+
if (body.includes("expired_token")) {
|
|
461
|
+
throw new Error(`Device code expired for ${provider}. Please restart the login flow.`);
|
|
462
|
+
}
|
|
463
|
+
if (body.includes("access_denied")) {
|
|
464
|
+
throw new Error(`Device code flow denied for ${provider}.`);
|
|
465
|
+
}
|
|
466
|
+
throw new Error(`Token polling failed for ${provider}: HTTP ${tokenResponse.status} ${body}`);
|
|
467
|
+
}
|
|
468
|
+
const json = (await tokenResponse.json());
|
|
469
|
+
if (!json.access_token) {
|
|
470
|
+
throw new Error(`Token polling for ${provider} returned no access_token`);
|
|
471
|
+
}
|
|
472
|
+
// 5. Store tokens in secret store
|
|
473
|
+
const obtainedAt = Date.now();
|
|
474
|
+
await setOAuthTokens(provider, {
|
|
475
|
+
accessToken: json.access_token,
|
|
476
|
+
refreshToken: json.refresh_token,
|
|
477
|
+
expiresAt: json.expires_in
|
|
478
|
+
? obtainedAt + json.expires_in * 1000
|
|
479
|
+
: undefined,
|
|
480
|
+
scope: json.scope,
|
|
481
|
+
obtainedAt,
|
|
482
|
+
}, options.store, options.accountId);
|
|
483
|
+
return {
|
|
484
|
+
provider,
|
|
485
|
+
expiresAt: json.expires_in
|
|
486
|
+
? obtainedAt + json.expires_in * 1000
|
|
487
|
+
: undefined,
|
|
488
|
+
scope: json.scope,
|
|
489
|
+
};
|
|
490
|
+
}
|
|
491
|
+
}
|
|
319
492
|
/**
|
|
320
493
|
* Refresh an OAuth token using a refresh token.
|
|
321
494
|
* Updates the stored tokens on success.
|
|
@@ -331,18 +504,29 @@ export async function refreshTokens(provider, refreshToken, store, options) {
|
|
|
331
504
|
const clientId = config.clientIdEnvVar
|
|
332
505
|
? (process.env[config.clientIdEnvVar] ?? "")
|
|
333
506
|
: "";
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
507
|
+
// Anthropic uses JSON body; OpenAI uses form-encoded.
|
|
508
|
+
const useJson = provider === "anthropic";
|
|
509
|
+
const refreshBody = useJson
|
|
510
|
+
? JSON.stringify({
|
|
511
|
+
grant_type: "refresh_token",
|
|
512
|
+
refresh_token: refreshToken,
|
|
513
|
+
client_id: clientId,
|
|
514
|
+
})
|
|
515
|
+
: new URLSearchParams({
|
|
516
|
+
grant_type: "refresh_token",
|
|
517
|
+
refresh_token: refreshToken,
|
|
518
|
+
client_id: clientId,
|
|
519
|
+
}).toString();
|
|
339
520
|
const fetchImpl = options?.fetch ?? globalThis.fetch.bind(globalThis);
|
|
340
521
|
const response = await fetchImpl(config.tokenUrl, {
|
|
341
522
|
method: "POST",
|
|
342
523
|
headers: {
|
|
343
|
-
"content-type":
|
|
524
|
+
"content-type": useJson
|
|
525
|
+
? "application/json"
|
|
526
|
+
: "application/x-www-form-urlencoded",
|
|
527
|
+
accept: "application/json",
|
|
344
528
|
},
|
|
345
|
-
body:
|
|
529
|
+
body: refreshBody,
|
|
346
530
|
});
|
|
347
531
|
if (!response.ok) {
|
|
348
532
|
const body = await response.text().catch(() => "");
|
|
@@ -362,7 +546,7 @@ export async function refreshTokens(provider, refreshToken, store, options) {
|
|
|
362
546
|
: undefined,
|
|
363
547
|
scope: json.scope,
|
|
364
548
|
obtainedAt,
|
|
365
|
-
}, store);
|
|
549
|
+
}, store, options?.accountId);
|
|
366
550
|
return {
|
|
367
551
|
accessToken: new Redacted(json.access_token),
|
|
368
552
|
refreshToken: json.refresh_token
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-pkce.js","sourceRoot":"","sources":["../../src/auth/oauth-pkce.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"oauth-pkce.js","sourceRoot":"","sources":["../../src/auth/oauth-pkce.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,8 @@ export interface CallbackServerOptions {
|
|
|
5
5
|
* May also be supplied per-call to waitForCode.
|
|
6
6
|
*/
|
|
7
7
|
expectedState?: string;
|
|
8
|
+
/** Callback path (default: /callback). OpenAI uses /auth/callback. */
|
|
9
|
+
callbackPath?: string;
|
|
8
10
|
}
|
|
9
11
|
export interface WaitForCodeOptions {
|
|
10
12
|
/** Overrides the server-level expectedState for this call. */
|
|
@@ -19,7 +21,7 @@ export interface CallbackCode {
|
|
|
19
21
|
state: string;
|
|
20
22
|
}
|
|
21
23
|
export interface CallbackServerHandle {
|
|
22
|
-
/** Full redirect_uri to register with the provider (http://
|
|
24
|
+
/** Full redirect_uri to register with the provider (http://localhost:PORT/callback). */
|
|
23
25
|
url: string;
|
|
24
26
|
/** Actual bound port (useful when 0 was requested). */
|
|
25
27
|
port: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-server.d.ts","sourceRoot":"","sources":["../../src/auth/oauth-server.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"oauth-server.d.ts","sourceRoot":"","sources":["../../src/auth/oauth-server.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,8DAA8D;IAC9D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,wFAAwF;IACxF,GAAG,EAAE,MAAM,CAAC;IACZ,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,wFAAwF;IACxF,WAAW,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACjE,oDAAoD;IACpD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,oBAAoB,CAAC,CA8K/B"}
|
|
@@ -11,7 +11,7 @@ import { createServer } from "node:http";
|
|
|
11
11
|
import { URL } from "node:url";
|
|
12
12
|
/** Loopback-only hostname. Hardcoded to prevent accidental 0.0.0.0 binds. */
|
|
13
13
|
const LOOPBACK_HOST = "127.0.0.1";
|
|
14
|
-
/** Path the provider redirects to (http://
|
|
14
|
+
/** Path the provider redirects to (http://localhost:PORT/callback). */
|
|
15
15
|
const CALLBACK_PATH = "/callback";
|
|
16
16
|
/**
|
|
17
17
|
* Start a loopback HTTP server that captures an OAuth authorization code.
|
|
@@ -20,6 +20,7 @@ const CALLBACK_PATH = "/callback";
|
|
|
20
20
|
export function startCallbackServer(port, options = {}) {
|
|
21
21
|
return new Promise((resolve, reject) => {
|
|
22
22
|
const serverLevelState = options.expectedState;
|
|
23
|
+
const effectiveCallbackPath = options.callbackPath ?? CALLBACK_PATH;
|
|
23
24
|
// Deferred for the first valid callback (has a `code` param).
|
|
24
25
|
let captured = null;
|
|
25
26
|
const waiters = [];
|
|
@@ -52,7 +53,7 @@ export function startCallbackServer(port, options = {}) {
|
|
|
52
53
|
res.end(authorizationDeniedPage(error));
|
|
53
54
|
return;
|
|
54
55
|
}
|
|
55
|
-
if (pathname !==
|
|
56
|
+
if (pathname !== effectiveCallbackPath) {
|
|
56
57
|
res.writeHead(404, { "content-type": "text/plain; charset=utf-8" });
|
|
57
58
|
res.end("Not Found");
|
|
58
59
|
return;
|
|
@@ -84,7 +85,7 @@ export function startCallbackServer(port, options = {}) {
|
|
|
84
85
|
httpServer.listen(port, LOOPBACK_HOST, () => {
|
|
85
86
|
const address = httpServer.address();
|
|
86
87
|
const boundPort = address && typeof address === "object" ? address.port : port;
|
|
87
|
-
const redirectUrl = `http
|
|
88
|
+
const redirectUrl = `http://localhost:${boundPort}${effectiveCallbackPath}`;
|
|
88
89
|
const handle = {
|
|
89
90
|
url: redirectUrl,
|
|
90
91
|
port: boundPort,
|
|
@@ -152,46 +153,130 @@ export function startCallbackServer(port, options = {}) {
|
|
|
152
153
|
// ---------------------------------------------------------------------------
|
|
153
154
|
// Static HTML pages (ASCII-only, no secret material)
|
|
154
155
|
// ---------------------------------------------------------------------------
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
156
|
+
// ---------------------------------------------------------------------------
|
|
157
|
+
// Styled HTML pages (dark theme, OffRouter branding)
|
|
158
|
+
// ---------------------------------------------------------------------------
|
|
159
|
+
const STYLED_HTML_TEMPLATE = `
|
|
160
|
+
<!doctype html>
|
|
161
|
+
<html lang="en">
|
|
162
|
+
<head>
|
|
163
|
+
<meta charset="utf-8">
|
|
164
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
165
|
+
<title>OffRouter — $$TITLE</title>
|
|
166
|
+
<style>
|
|
167
|
+
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
|
168
|
+
body {
|
|
169
|
+
background: #09090b;
|
|
170
|
+
color: #fafafa;
|
|
171
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
|
|
172
|
+
display: flex;
|
|
173
|
+
justify-content: center;
|
|
174
|
+
align-items: center;
|
|
175
|
+
min-height: 100vh;
|
|
176
|
+
padding: 1rem;
|
|
177
|
+
}
|
|
178
|
+
.card {
|
|
179
|
+
background: #18181b;
|
|
180
|
+
border: 1px solid #27272a;
|
|
181
|
+
border-radius: 12px;
|
|
182
|
+
padding: 2.5rem;
|
|
183
|
+
max-width: 560px;
|
|
184
|
+
width: 100%;
|
|
185
|
+
text-align: center;
|
|
186
|
+
}
|
|
187
|
+
.logo {
|
|
188
|
+
margin-bottom: 1.5rem;
|
|
189
|
+
}
|
|
190
|
+
.logo svg {
|
|
191
|
+
width: 48px;
|
|
192
|
+
height: 48px;
|
|
193
|
+
}
|
|
194
|
+
.icon {
|
|
195
|
+
margin-bottom: 1rem;
|
|
196
|
+
}
|
|
197
|
+
.icon-success {
|
|
198
|
+
color: #22c55e;
|
|
199
|
+
}
|
|
200
|
+
.icon-error {
|
|
201
|
+
color: #ef4444;
|
|
202
|
+
}
|
|
203
|
+
h1 {
|
|
204
|
+
font-size: 1.5rem;
|
|
205
|
+
font-weight: 600;
|
|
206
|
+
margin-bottom: 0.75rem;
|
|
207
|
+
}
|
|
208
|
+
p {
|
|
209
|
+
color: #a1a1aa;
|
|
210
|
+
line-height: 1.6;
|
|
211
|
+
margin-bottom: 1.5rem;
|
|
212
|
+
}
|
|
213
|
+
.details {
|
|
214
|
+
background: #27272a;
|
|
215
|
+
border-radius: 8px;
|
|
216
|
+
padding: 1rem;
|
|
217
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
|
|
218
|
+
font-size: 0.875rem;
|
|
219
|
+
color: #fafafa;
|
|
220
|
+
word-break: break-word;
|
|
221
|
+
text-align: left;
|
|
222
|
+
margin-bottom: 1.5rem;
|
|
223
|
+
}
|
|
224
|
+
.link {
|
|
225
|
+
color: #a1a1aa;
|
|
226
|
+
font-size: 0.875rem;
|
|
227
|
+
}
|
|
228
|
+
.link a {
|
|
229
|
+
color: #fafafa;
|
|
230
|
+
text-decoration: underline;
|
|
231
|
+
}
|
|
232
|
+
.link a:hover {
|
|
233
|
+
color: #ffffff;
|
|
234
|
+
}
|
|
235
|
+
</style>
|
|
236
|
+
</head>
|
|
237
|
+
<body>
|
|
238
|
+
<div class="card">
|
|
239
|
+
<div class="logo">
|
|
240
|
+
<svg viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
241
|
+
<circle cx="24" cy="24" r="20" stroke="#fafafa" stroke-width="2"/>
|
|
242
|
+
<circle cx="24" cy="24" r="9" stroke="#fafafa" stroke-width="2"/>
|
|
243
|
+
<circle cx="24" cy="24" r="3" fill="#fafafa"/>
|
|
244
|
+
<line x1="24" y1="4" x2="24" y2="14" stroke="#fafafa" stroke-width="2" stroke-linecap="round"/>
|
|
245
|
+
<line x1="24" y1="34" x2="24" y2="44" stroke="#fafafa" stroke-width="2" stroke-linecap="round"/>
|
|
246
|
+
<line x1="4" y1="24" x2="14" y2="24" stroke="#fafafa" stroke-width="2" stroke-linecap="round"/>
|
|
247
|
+
<line x1="34" y1="24" x2="44" y2="24" stroke="#fafafa" stroke-width="2" stroke-linecap="round"/>
|
|
248
|
+
<line x1="8.2" y1="8.2" x2="15.5" y2="15.5" stroke="#fafafa" stroke-width="2" stroke-linecap="round"/>
|
|
249
|
+
<line x1="32.5" y1="32.5" x2="39.8" y2="39.8" stroke="#fafafa" stroke-width="2" stroke-linecap="round"/>
|
|
250
|
+
<line x1="39.8" y1="8.2" x2="32.5" y2="15.5" stroke="#fafafa" stroke-width="2" stroke-linecap="round"/>
|
|
251
|
+
<line x1="15.5" y1="32.5" x2="8.2" y2="39.8" stroke="#fafafa" stroke-width="2" stroke-linecap="round"/>
|
|
252
|
+
</svg>
|
|
253
|
+
</div>
|
|
254
|
+
$$CONTENT
|
|
255
|
+
<div class="link">
|
|
256
|
+
<a href="https://offrouter.com" target="_blank" rel="noopener noreferrer">Visit offrouter.com</a>
|
|
257
|
+
</div>
|
|
258
|
+
</div>
|
|
259
|
+
</body>
|
|
260
|
+
</html>`;
|
|
261
|
+
function styledPage(title, icon, heading, details) {
|
|
262
|
+
const content = [
|
|
263
|
+
`<div class="icon ${icon === "✓" ? "icon-success" : "icon-error"}" style="font-size: 2.5rem;">${icon}</div>`,
|
|
264
|
+
`<h1>${heading}</h1>`,
|
|
265
|
+
details ? `<p>${details}</p>` : "",
|
|
166
266
|
].join("\n");
|
|
267
|
+
return STYLED_HTML_TEMPLATE
|
|
268
|
+
.replace("$$TITLE", title)
|
|
269
|
+
.replace("$$CONTENT", content);
|
|
270
|
+
}
|
|
271
|
+
function successPage() {
|
|
272
|
+
return styledPage("Authentication successful", "✓", "Authentication successful", "You can close this tab and return to your terminal.");
|
|
167
273
|
}
|
|
168
274
|
function authorizationDeniedPage(error) {
|
|
169
275
|
const safe = escapeHtml(error);
|
|
170
|
-
return
|
|
171
|
-
"<!doctype html>",
|
|
172
|
-
"<html lang=\"en\">",
|
|
173
|
-
"<head><meta charset=\"utf-8\"><title>OffRouter login</title></head>",
|
|
174
|
-
"<body>",
|
|
175
|
-
"<h1>OffRouter login not completed</h1>",
|
|
176
|
-
`<p>The provider reported: ${safe}</p>`,
|
|
177
|
-
"<p>You can close this tab and try again from your terminal.</p>",
|
|
178
|
-
"</body>",
|
|
179
|
-
"</html>",
|
|
180
|
-
"",
|
|
181
|
-
].join("\n");
|
|
276
|
+
return styledPage("Authentication failed", "✗", "Authentication failed", `The provider reported: <strong>${safe}</strong>. You can close this tab and try again from your terminal.`);
|
|
182
277
|
}
|
|
183
278
|
function missingCodePage() {
|
|
184
|
-
return
|
|
185
|
-
"<!doctype html>",
|
|
186
|
-
"<html lang=\"en\">",
|
|
187
|
-
"<head><meta charset=\"utf-8\"><title>OffRouter login</title></head>",
|
|
188
|
-
"<body>",
|
|
189
|
-
"<h1>OffRouter login incomplete</h1>",
|
|
190
|
-
"<p>The callback did not include an authorization code.</p>",
|
|
191
|
-
"</body>",
|
|
192
|
-
"</html>",
|
|
193
|
-
"",
|
|
194
|
-
].join("\n");
|
|
279
|
+
return styledPage("Authentication incomplete", "✗", "Authentication incomplete", "The callback did not include an authorization code. Please try again from your terminal.");
|
|
195
280
|
}
|
|
196
281
|
function escapeHtml(value) {
|
|
197
282
|
return value
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-server.js","sourceRoot":"","sources":["../../src/auth/oauth-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,YAAY,EAA0D,MAAM,WAAW,CAAC;AACjG,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,6EAA6E;AAC7E,MAAM,aAAa,GAAG,WAAW,CAAC;AAElC,uEAAuE;AACvE,MAAM,aAAa,GAAG,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"oauth-server.js","sourceRoot":"","sources":["../../src/auth/oauth-server.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -32,8 +32,8 @@ export { FakeProviderAdapter, createFakeProvider } from "./providers/fake.js";
|
|
|
32
32
|
export type { FakeModelConfig, FakeProviderOptions } from "./providers/fake.js";
|
|
33
33
|
export { OLLAMA_DUMMY_BEARER, OpenAiCompatibleAdapter, createOpenAiCompatibleAdapter, } from "./providers/openai-compatible.js";
|
|
34
34
|
export type { OpenAiCompatibleFlavor, OpenAiCompatibleOptions, } from "./providers/openai-compatible.js";
|
|
35
|
-
export { Redacted, defaultCallbackPort, deleteOAuthTokens, exchangeCodeForTokens, generateCodeChallenge, generateCodeVerifier, getOAuthTokens, getProviderToken, isOAuthProvider, isOAuthTokenExpired, PKCE_CONFIGS, refreshTokens, resolveClientId, resolveCredential, runOAuthLogin, setOAuthTokens, setProviderToken, startOAuthFlow, } from "./auth/index.js";
|
|
36
|
-
export type { CredentialResult, CredentialSource, OAuthFlowResult, OAuthFlowState, OAuthProviderConfig, OAuthStoredTokens, OAuthStartOptions, OAuthTokenOptions, OAuthTokenResponse, ResolveCredentialOptions, RunOAuthLoginOptions, RunOAuthLoginResult, } from "./auth/index.js";
|
|
35
|
+
export { Redacted, defaultCallbackPort, deleteOAuthTokens, exchangeCodeForTokens, generateCodeChallenge, generateCodeVerifier, getOAuthTokens, getProviderToken, isDeviceCodeProvider, isOAuthProvider, isOAuthTokenExpired, PKCE_CONFIGS, refreshTokens, resolveClientId, resolveCredential, runOAuthLogin, setOAuthTokens, setProviderToken, startDeviceCodeFlow, startOAuthFlow, } from "./auth/index.js";
|
|
36
|
+
export type { CredentialResult, CredentialSource, DeviceCodeFlowOptions, DeviceCodeResult, DeviceCodeResponse, OAuthFlowResult, OAuthFlowState, OAuthProviderConfig, OAuthStoredTokens, OAuthStartOptions, OAuthTokenOptions, OAuthTokenResponse, ResolveCredentialOptions, RunOAuthLoginOptions, RunOAuthLoginResult, } from "./auth/index.js";
|
|
37
37
|
export { CHAT_COMPLETIONS_DONE, ChatCompletionsRequestSchema, ChatCompletionsSseBuilder, RESPONSES_PROMPT_PREVIEW_CHARS, ResponsesRequestSchema, ResponsesSseBuilder, InvalidProxyRequestError, buildDelegationRequest, buildRouteRequest, createResponsesProxyContext, extractPromptFromChatCompletions, extractPromptFromResponsesInput, openAiErrorPayload, policyDecisionToHttpStatus, promptDigest, promptPreview, providerErrorCodeToHttpStatus, responsesSseData, } from "./proxy/responses-mapper.js";
|
|
38
38
|
export { startResponsesProxy } from "./proxy/responses-server.js";
|
|
39
39
|
export type { BuildDelegationInput, BuildRouteInput, ChatCompletionDeltaEvent, ChatCompletionObject, ChatUsageInput, OpenAiErrorPayload, ParsedResponsesInput, ResponsesMessageItem, ResponsesObject, ResponsesOutputTextPart, ResponsesProxyContext, ResponsesUsageInput, } from "./proxy/responses-mapper.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,YAAY,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE1D,YAAY,EACV,SAAS,EACT,QAAQ,EACR,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,UAAU,EACV,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,SAAS,EACT,aAAa,EACb,kBAAkB,EAClB,QAAQ,EACR,YAAY,GACb,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,eAAe,EACf,cAAc,EACd,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,EACxB,uBAAuB,EACvB,oBAAoB,EACpB,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,cAAc,EACd,kBAAkB,GACnB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,cAAc,EACd,6BAA6B,EAC7B,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC3E,YAAY,EACV,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,wBAAwB,EACxB,cAAc,EACd,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,WAAW,EACX,aAAa,EACb,UAAU,EACV,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,QAAQ,EACR,MAAM,GACP,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,sBAAsB,EACtB,0BAA0B,EAC1B,WAAW,GACZ,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAC3E,YAAY,EACV,qBAAqB,EACrB,WAAW,EACX,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,yBAAyB,EACzB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAClG,OAAO,EACL,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACpB,UAAU,EACV,UAAU,EACV,cAAc,EACd,UAAU,GACX,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,wBAAwB,EACxB,aAAa,EACb,qBAAqB,EACrB,eAAe,EACf,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,UAAU,EACV,YAAY,EACZ,aAAa,EACb,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,EACb,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,YAAY,EACZ,yBAAyB,EACzB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACV,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,WAAW,EACX,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAEhF,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,6BAA6B,GAC9B,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EACV,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,yBAAyB,EACzB,8BAA8B,EAC9B,sBAAsB,EACtB,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EACjB,2BAA2B,EAC3B,gCAAgC,EAChC,+BAA+B,EAC/B,kBAAkB,EAClB,0BAA0B,EAC1B,YAAY,EACZ,aAAa,EACb,6BAA6B,EAC7B,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,YAAY,EACV,oBAAoB,EACpB,eAAe,EACf,wBAAwB,EACxB,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACV,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,6BAA6B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -19,7 +19,7 @@ export { BUILTIN_PROVIDERS, BUILTIN_PROVIDER_IDS, getBuiltinProvider, selectBuil
|
|
|
19
19
|
export { FakeProviderAdapter, createFakeProvider } from "./providers/fake.js";
|
|
20
20
|
export { OLLAMA_DUMMY_BEARER, OpenAiCompatibleAdapter, createOpenAiCompatibleAdapter, } from "./providers/openai-compatible.js";
|
|
21
21
|
// Auth module (credential chain, OAuth PKCE, keychain helpers)
|
|
22
|
-
export { Redacted, defaultCallbackPort, deleteOAuthTokens, exchangeCodeForTokens, generateCodeChallenge, generateCodeVerifier, getOAuthTokens, getProviderToken, isOAuthProvider, isOAuthTokenExpired, PKCE_CONFIGS, refreshTokens, resolveClientId, resolveCredential, runOAuthLogin, setOAuthTokens, setProviderToken, startOAuthFlow, } from "./auth/index.js";
|
|
22
|
+
export { Redacted, defaultCallbackPort, deleteOAuthTokens, exchangeCodeForTokens, generateCodeChallenge, generateCodeVerifier, getOAuthTokens, getProviderToken, isDeviceCodeProvider, isOAuthProvider, isOAuthTokenExpired, PKCE_CONFIGS, refreshTokens, resolveClientId, resolveCredential, runOAuthLogin, setOAuthTokens, setProviderToken, startDeviceCodeFlow, startOAuthFlow, } from "./auth/index.js";
|
|
23
23
|
// OpenAI Responses-compatible local proxy
|
|
24
24
|
export { CHAT_COMPLETIONS_DONE, ChatCompletionsRequestSchema, ChatCompletionsSseBuilder, RESPONSES_PROMPT_PREVIEW_CHARS, ResponsesRequestSchema, ResponsesSseBuilder, InvalidProxyRequestError, buildDelegationRequest, buildRouteRequest, createResponsesProxyContext, extractPromptFromChatCompletions, extractPromptFromResponsesInput, openAiErrorPayload, policyDecisionToHttpStatus, promptDigest, promptPreview, providerErrorCodeToHttpStatus, responsesSseData, } from "./proxy/responses-mapper.js";
|
|
25
25
|
export { startResponsesProxy } from "./proxy/responses-server.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AA2BvD,OAAO,EACL,eAAe,EACf,cAAc,EACd,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,EACxB,uBAAuB,EACvB,oBAAoB,EACpB,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,cAAc,EACd,kBAAkB,GACnB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,cAAc,EACd,6BAA6B,EAC7B,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAY3E,OAAO,EACL,WAAW,EACX,aAAa,EACb,UAAU,EACV,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAYrB,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,QAAQ,EACR,MAAM,GACP,MAAM,cAAc,CAAC;AAOtB,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAY3E,OAAO,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAClG,OAAO,EACL,cAAc,GACf,MAAM,iBAAiB,CAAC;AAkBzB,gCAAgC;AAChC,OAAO,EACL,wBAAwB,EACxB,aAAa,EACb,qBAAqB,EACrB,eAAe,EACf,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAchC,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAQhC,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AASrC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAG9E,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,6BAA6B,GAC9B,MAAM,kCAAkC,CAAC;AAM1C,+DAA+D;AAC/D,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,cAAc,GACf,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AA2BvD,OAAO,EACL,eAAe,EACf,cAAc,EACd,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,EACxB,uBAAuB,EACvB,oBAAoB,EACpB,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,cAAc,EACd,kBAAkB,GACnB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,cAAc,EACd,6BAA6B,EAC7B,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAY3E,OAAO,EACL,WAAW,EACX,aAAa,EACb,UAAU,EACV,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAYrB,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,wBAAwB,EACxB,QAAQ,EACR,MAAM,GACP,MAAM,cAAc,CAAC;AAOtB,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAY3E,OAAO,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAClG,OAAO,EACL,cAAc,GACf,MAAM,iBAAiB,CAAC;AAkBzB,gCAAgC;AAChC,OAAO,EACL,wBAAwB,EACxB,aAAa,EACb,qBAAqB,EACrB,eAAe,EACf,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAchC,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAQhC,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AASrC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAG9E,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,6BAA6B,GAC9B,MAAM,kCAAkC,CAAC;AAM1C,+DAA+D;AAC/D,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,GACf,MAAM,iBAAiB,CAAC;AAmBzB,0CAA0C;AAC1C,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,yBAAyB,EACzB,8BAA8B,EAC9B,sBAAsB,EACtB,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EACjB,2BAA2B,EAC3B,gCAAgC,EAChC,+BAA+B,EAC/B,kBAAkB,EAClB,0BAA0B,EAC1B,YAAY,EACZ,aAAa,EACb,6BAA6B,EAC7B,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC"}
|