@push.rocks/smartai 2.3.0 → 4.0.1
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/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/index.d.ts +3 -3
- package/dist_ts/index.js +2 -2
- package/dist_ts/smartai.auth.openai.d.ts +15 -15
- package/dist_ts/smartai.auth.openai.js +52 -46
- package/dist_ts/smartai.classes.smartai.js +12 -5
- package/dist_ts/smartai.interfaces.d.ts +10 -11
- package/dist_ts/smartai.middleware.openai.d.ts +6 -0
- package/dist_ts/smartai.middleware.openai.js +40 -0
- package/dist_ts_openai_chatgpt_auth/index.d.ts +43 -0
- package/dist_ts_openai_chatgpt_auth/index.js +249 -0
- package/package.json +6 -1
- package/readme.hints.md +2 -1
- package/readme.md +39 -8
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/index.ts +21 -21
- package/ts/smartai.auth.openai.ts +85 -76
- package/ts/smartai.classes.smartai.ts +11 -4
- package/ts/smartai.interfaces.ts +10 -11
- package/ts/smartai.middleware.openai.ts +46 -0
- package/ts_openai_chatgpt_auth/index.ts +351 -0
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smartai',
|
|
6
|
-
version: '
|
|
6
|
+
version: '4.0.1',
|
|
7
7
|
description: 'Provider registry and capability utilities for ai-sdk (Vercel AI SDK). Core export returns LanguageModel; subpath exports provide vision, audio, image, document and research capabilities.'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxxQkFBcUI7SUFDM0IsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLDZMQUE2TDtDQUMzTSxDQUFBIn0=
|
package/dist_ts/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export { getModel, getModelSetup } from './smartai.classes.smartai.js';
|
|
2
|
-
export type { IOpenAiProviderOptions,
|
|
2
|
+
export type { IOpenAiProviderOptions, IOpenAiChatGptAuthCredentials, IOpenAiChatGptAuthOptions, IOpenAiChatGptCompleteDeviceCodeOptions, IOpenAiChatGptDeviceCode, IOpenAiChatGptDeviceCodePollOptions, IOpenAiChatGptTokenData, IOpenAiChatGptTokenInfo, ISmartAiModelSetup, ISmartAiOptions, TOpenAiReasoningEffort, TOpenAiTextVerbosity, TProvider, TSmartAiProviderOptions, IOllamaModelOptions, LanguageModelV3, LanguageModelV3Prompt, } from './smartai.interfaces.js';
|
|
3
3
|
export { createAnthropicCachingMiddleware } from './smartai.middleware.anthropic.js';
|
|
4
4
|
export { applySmartAiCacheProviderOptions, applySmartAiPromptCaching, createSmartAiCachingMiddleware, getSmartAiCacheProviderOptions, getSmartAiMessageCacheProviderOptions, mergeSmartAiProviderOptions, resolveSmartAiCacheProvider, } from './smartai.cache.js';
|
|
5
5
|
export type { ISmartAiCacheOptions, TSmartAiCacheRetention, TSmartAiCacheSetting, TSmartAiMessageCacheProvider, } from './smartai.cache.js';
|
|
6
6
|
export { createOllamaModel } from './smartai.provider.ollama.js';
|
|
7
|
-
export {
|
|
8
|
-
export type {
|
|
7
|
+
export { OPENAI_CHATGPT_AUTH_ISSUER, OPENAI_CHATGPT_CLIENT_ID, OPENAI_CHATGPT_CODEX_BASE_URL, OPENAI_CHATGPT_DEFAULT_ORIGINATOR, OpenAiChatGptAuthError, completeOpenAiChatGptDeviceCodeLogin, createOpenAiChatGptProviderSettings, ensureOpenAiChatGptWorkspaceAllowed, exchangeOpenAiChatGptAuthorizationCode, parseOpenAiChatGptTokenInfo, pollOpenAiChatGptDeviceCode, refreshOpenAiChatGptTokenData, requestOpenAiChatGptDeviceCode, } from './smartai.auth.openai.js';
|
|
8
|
+
export type { IOpenAiChatGptAuthorizationCode } from './smartai.auth.openai.js';
|
|
9
9
|
export { generateText, streamText, tool, jsonSchema } from 'ai';
|
|
10
10
|
export type { ModelMessage, ToolSet, StreamTextResult } from 'ai';
|
package/dist_ts/index.js
CHANGED
|
@@ -2,7 +2,7 @@ export { getModel, getModelSetup } from './smartai.classes.smartai.js';
|
|
|
2
2
|
export { createAnthropicCachingMiddleware } from './smartai.middleware.anthropic.js';
|
|
3
3
|
export { applySmartAiCacheProviderOptions, applySmartAiPromptCaching, createSmartAiCachingMiddleware, getSmartAiCacheProviderOptions, getSmartAiMessageCacheProviderOptions, mergeSmartAiProviderOptions, resolveSmartAiCacheProvider, } from './smartai.cache.js';
|
|
4
4
|
export { createOllamaModel } from './smartai.provider.ollama.js';
|
|
5
|
-
export {
|
|
5
|
+
export { OPENAI_CHATGPT_AUTH_ISSUER, OPENAI_CHATGPT_CLIENT_ID, OPENAI_CHATGPT_CODEX_BASE_URL, OPENAI_CHATGPT_DEFAULT_ORIGINATOR, OpenAiChatGptAuthError, completeOpenAiChatGptDeviceCodeLogin, createOpenAiChatGptProviderSettings, ensureOpenAiChatGptWorkspaceAllowed, exchangeOpenAiChatGptAuthorizationCode, parseOpenAiChatGptTokenInfo, pollOpenAiChatGptDeviceCode, refreshOpenAiChatGptTokenData, requestOpenAiChatGptDeviceCode, } from './smartai.auth.openai.js';
|
|
6
6
|
// Re-export commonly used ai-sdk functions for consumer convenience
|
|
7
7
|
export { generateText, streamText, tool, jsonSchema } from 'ai';
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBb0J2RSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRixPQUFPLEVBQ0wsZ0NBQWdDLEVBQ2hDLHlCQUF5QixFQUN6Qiw4QkFBOEIsRUFDOUIsOEJBQThCLEVBQzlCLHFDQUFxQyxFQUNyQywyQkFBMkIsRUFDM0IsMkJBQTJCLEdBQzVCLE1BQU0sb0JBQW9CLENBQUM7QUFPNUIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUNMLDBCQUEwQixFQUMxQix3QkFBd0IsRUFDeEIsNkJBQTZCLEVBQzdCLGlDQUFpQyxFQUNqQyxzQkFBc0IsRUFDdEIsb0NBQW9DLEVBQ3BDLG1DQUFtQyxFQUNuQyxtQ0FBbUMsRUFDbkMsc0NBQXNDLEVBQ3RDLDJCQUEyQixFQUMzQiwyQkFBMkIsRUFDM0IsNkJBQTZCLEVBQzdCLDhCQUE4QixHQUMvQixNQUFNLDBCQUEwQixDQUFDO0FBR2xDLG9FQUFvRTtBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sSUFBSSxDQUFDIn0=
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const
|
|
4
|
-
export declare const
|
|
5
|
-
export declare const
|
|
6
|
-
export declare class
|
|
1
|
+
import type { IOpenAiChatGptAuthCredentials, IOpenAiChatGptAuthOptions, IOpenAiChatGptCompleteDeviceCodeOptions, IOpenAiChatGptDeviceCode, IOpenAiChatGptDeviceCodePollOptions, IOpenAiChatGptTokenData, IOpenAiChatGptTokenInfo } from './smartai.interfaces.js';
|
|
2
|
+
export declare const OPENAI_CHATGPT_AUTH_ISSUER = "https://auth.openai.com";
|
|
3
|
+
export declare const OPENAI_CHATGPT_CLIENT_ID = "app_EMoamEEZ73f0CkXaXp7hrann";
|
|
4
|
+
export declare const OPENAI_CHATGPT_CODEX_BASE_URL = "https://chatgpt.com/backend-api/codex";
|
|
5
|
+
export declare const OPENAI_CHATGPT_DEFAULT_ORIGINATOR = "smartai";
|
|
6
|
+
export declare class OpenAiChatGptAuthError extends Error {
|
|
7
7
|
status?: number;
|
|
8
8
|
body?: string;
|
|
9
9
|
constructor(message: string, options?: {
|
|
@@ -11,19 +11,19 @@ export declare class OpenAiMaxAuthError extends Error {
|
|
|
11
11
|
body?: string;
|
|
12
12
|
});
|
|
13
13
|
}
|
|
14
|
-
export interface
|
|
14
|
+
export interface IOpenAiChatGptAuthorizationCode {
|
|
15
15
|
authorizationCode: string;
|
|
16
16
|
codeChallenge: string;
|
|
17
17
|
codeVerifier: string;
|
|
18
18
|
}
|
|
19
|
-
export declare function
|
|
20
|
-
export declare function
|
|
21
|
-
export declare function
|
|
22
|
-
export declare function
|
|
23
|
-
export declare function
|
|
24
|
-
export declare function
|
|
25
|
-
export declare function
|
|
26
|
-
export declare function
|
|
19
|
+
export declare function parseOpenAiChatGptTokenInfo(token: string): IOpenAiChatGptTokenInfo;
|
|
20
|
+
export declare function requestOpenAiChatGptDeviceCode(options?: IOpenAiChatGptAuthOptions): Promise<IOpenAiChatGptDeviceCode>;
|
|
21
|
+
export declare function pollOpenAiChatGptDeviceCode(deviceCode: IOpenAiChatGptDeviceCode, options?: IOpenAiChatGptDeviceCodePollOptions): Promise<IOpenAiChatGptAuthorizationCode>;
|
|
22
|
+
export declare function exchangeOpenAiChatGptAuthorizationCode(authorizationCode: IOpenAiChatGptAuthorizationCode, options?: IOpenAiChatGptAuthOptions): Promise<IOpenAiChatGptTokenData>;
|
|
23
|
+
export declare function ensureOpenAiChatGptWorkspaceAllowed(tokenData: IOpenAiChatGptTokenData, forcedChatGptWorkspaceId?: string): void;
|
|
24
|
+
export declare function completeOpenAiChatGptDeviceCodeLogin(deviceCode: IOpenAiChatGptDeviceCode, options?: IOpenAiChatGptCompleteDeviceCodeOptions): Promise<IOpenAiChatGptTokenData>;
|
|
25
|
+
export declare function refreshOpenAiChatGptTokenData(tokenData: IOpenAiChatGptTokenData, options?: IOpenAiChatGptAuthOptions): Promise<IOpenAiChatGptTokenData>;
|
|
26
|
+
export declare function createOpenAiChatGptProviderSettings(credentials: IOpenAiChatGptAuthCredentials): {
|
|
27
27
|
apiKey: string;
|
|
28
28
|
baseURL: string;
|
|
29
29
|
headers: Record<string, string>;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
export const
|
|
2
|
-
export const
|
|
3
|
-
export const
|
|
4
|
-
export const
|
|
1
|
+
export const OPENAI_CHATGPT_AUTH_ISSUER = 'https://auth.openai.com';
|
|
2
|
+
export const OPENAI_CHATGPT_CLIENT_ID = 'app_EMoamEEZ73f0CkXaXp7hrann';
|
|
3
|
+
export const OPENAI_CHATGPT_CODEX_BASE_URL = 'https://chatgpt.com/backend-api/codex';
|
|
4
|
+
export const OPENAI_CHATGPT_DEFAULT_ORIGINATOR = 'smartai';
|
|
5
5
|
const DEVICE_CODE_TIMEOUT_MS = 15 * 60 * 1000;
|
|
6
|
-
export class
|
|
6
|
+
export class OpenAiChatGptAuthError extends Error {
|
|
7
7
|
constructor(message, options = {}) {
|
|
8
8
|
super(message);
|
|
9
|
-
this.name = '
|
|
9
|
+
this.name = 'OpenAiChatGptAuthError';
|
|
10
10
|
this.status = options.status;
|
|
11
11
|
this.body = options.body;
|
|
12
12
|
}
|
|
@@ -14,19 +14,19 @@ export class OpenAiMaxAuthError extends Error {
|
|
|
14
14
|
function getFetch(options) {
|
|
15
15
|
const fetchFunction = options.fetch ?? globalThis.fetch;
|
|
16
16
|
if (!fetchFunction) {
|
|
17
|
-
throw new
|
|
17
|
+
throw new OpenAiChatGptAuthError('fetch is not available for OpenAI ChatGPT authentication.');
|
|
18
18
|
}
|
|
19
19
|
return fetchFunction;
|
|
20
20
|
}
|
|
21
21
|
function getIssuer(options) {
|
|
22
|
-
return (options.issuer ??
|
|
22
|
+
return (options.issuer ?? OPENAI_CHATGPT_AUTH_ISSUER).replace(/\/+$/, '');
|
|
23
23
|
}
|
|
24
24
|
function getClientId(options) {
|
|
25
|
-
return options.clientId ??
|
|
25
|
+
return options.clientId ?? OPENAI_CHATGPT_CLIENT_ID;
|
|
26
26
|
}
|
|
27
27
|
function asString(value, name) {
|
|
28
28
|
if (typeof value !== 'string' || value.length === 0) {
|
|
29
|
-
throw new
|
|
29
|
+
throw new OpenAiChatGptAuthError(`OpenAI ChatGPT auth response is missing ${name}.`);
|
|
30
30
|
}
|
|
31
31
|
return value;
|
|
32
32
|
}
|
|
@@ -36,14 +36,14 @@ function asOptionalString(value) {
|
|
|
36
36
|
function asIntervalSeconds(value) {
|
|
37
37
|
const interval = typeof value === 'number' ? value : Number.parseInt(String(value ?? ''), 10);
|
|
38
38
|
if (!Number.isFinite(interval) || interval <= 0) {
|
|
39
|
-
throw new
|
|
39
|
+
throw new OpenAiChatGptAuthError('OpenAI ChatGPT device-code response has an invalid interval.');
|
|
40
40
|
}
|
|
41
41
|
return interval;
|
|
42
42
|
}
|
|
43
43
|
async function readJson(response, context) {
|
|
44
44
|
const body = await response.text();
|
|
45
45
|
if (!response.ok) {
|
|
46
|
-
throw new
|
|
46
|
+
throw new OpenAiChatGptAuthError(`${context} failed with status ${response.status}.`, {
|
|
47
47
|
status: response.status,
|
|
48
48
|
body,
|
|
49
49
|
});
|
|
@@ -52,7 +52,7 @@ async function readJson(response, context) {
|
|
|
52
52
|
return body ? JSON.parse(body) : {};
|
|
53
53
|
}
|
|
54
54
|
catch (error) {
|
|
55
|
-
throw new
|
|
55
|
+
throw new OpenAiChatGptAuthError(`${context} returned invalid JSON: ${error.message}`, {
|
|
56
56
|
status: response.status,
|
|
57
57
|
body,
|
|
58
58
|
});
|
|
@@ -80,17 +80,17 @@ function sleep(ms) {
|
|
|
80
80
|
function parseJwtPayload(jwt) {
|
|
81
81
|
const parts = jwt.split('.');
|
|
82
82
|
if (parts.length !== 3 || !parts[1]) {
|
|
83
|
-
throw new
|
|
83
|
+
throw new OpenAiChatGptAuthError('OpenAI ChatGPT auth returned an invalid token.');
|
|
84
84
|
}
|
|
85
85
|
try {
|
|
86
86
|
return JSON.parse(Buffer.from(parts[1], 'base64url').toString('utf8'));
|
|
87
87
|
}
|
|
88
88
|
catch (error) {
|
|
89
|
-
throw new
|
|
89
|
+
throw new OpenAiChatGptAuthError(`OpenAI ChatGPT token could not be parsed: ${error.message}`);
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
|
-
export function
|
|
93
|
-
const claims = parseJwtPayload(
|
|
92
|
+
export function parseOpenAiChatGptTokenInfo(token) {
|
|
93
|
+
const claims = parseJwtPayload(token);
|
|
94
94
|
const profile = claims['https://api.openai.com/profile'];
|
|
95
95
|
const auth = claims['https://api.openai.com/auth'];
|
|
96
96
|
const expiresAtSeconds = typeof claims.exp === 'number' ? claims.exp : undefined;
|
|
@@ -101,23 +101,29 @@ export function parseOpenAiMaxIdToken(idToken) {
|
|
|
101
101
|
chatgptAccountId: asOptionalString(auth?.chatgpt_account_id),
|
|
102
102
|
chatgptAccountIsFedramp: auth?.chatgpt_account_is_fedramp === true,
|
|
103
103
|
expiresAt: expiresAtSeconds ? new Date(expiresAtSeconds * 1000).toISOString() : undefined,
|
|
104
|
-
rawJwt:
|
|
104
|
+
rawJwt: token,
|
|
105
105
|
};
|
|
106
106
|
}
|
|
107
|
-
function createTokenData(response) {
|
|
108
|
-
const
|
|
109
|
-
const
|
|
110
|
-
const
|
|
111
|
-
|
|
107
|
+
function createTokenData(response, existingTokenData) {
|
|
108
|
+
const accessToken = asOptionalString(response.access_token) ?? existingTokenData?.accessToken;
|
|
109
|
+
const refreshToken = asOptionalString(response.refresh_token) ?? existingTokenData?.refreshToken;
|
|
110
|
+
const idToken = asOptionalString(response.id_token) ?? existingTokenData?.idToken;
|
|
111
|
+
if (!accessToken) {
|
|
112
|
+
throw new OpenAiChatGptAuthError('OpenAI ChatGPT auth response is missing access_token.');
|
|
113
|
+
}
|
|
114
|
+
if (!refreshToken) {
|
|
115
|
+
throw new OpenAiChatGptAuthError('OpenAI ChatGPT auth response is missing refresh_token.');
|
|
116
|
+
}
|
|
117
|
+
const tokenInfo = parseOpenAiChatGptTokenInfo(idToken ?? accessToken);
|
|
112
118
|
return {
|
|
113
|
-
idToken,
|
|
114
119
|
accessToken,
|
|
115
120
|
refreshToken,
|
|
116
|
-
|
|
117
|
-
|
|
121
|
+
idToken,
|
|
122
|
+
accountId: tokenInfo.chatgptAccountId,
|
|
123
|
+
tokenInfo,
|
|
118
124
|
};
|
|
119
125
|
}
|
|
120
|
-
export async function
|
|
126
|
+
export async function requestOpenAiChatGptDeviceCode(options = {}) {
|
|
121
127
|
const issuer = getIssuer(options);
|
|
122
128
|
const response = await postJson(`${issuer}/api/accounts/deviceauth/usercode`, {
|
|
123
129
|
client_id: getClientId(options),
|
|
@@ -129,7 +135,7 @@ export async function requestOpenAiMaxDeviceCode(options = {}) {
|
|
|
129
135
|
intervalSeconds: asIntervalSeconds(response.interval),
|
|
130
136
|
};
|
|
131
137
|
}
|
|
132
|
-
export async function
|
|
138
|
+
export async function pollOpenAiChatGptDeviceCode(deviceCode, options = {}) {
|
|
133
139
|
const issuer = getIssuer(options);
|
|
134
140
|
const pollUrl = `${issuer}/api/accounts/deviceauth/token`;
|
|
135
141
|
const timeoutMs = options.timeoutMs ?? DEVICE_CODE_TIMEOUT_MS;
|
|
@@ -154,7 +160,7 @@ export async function pollOpenAiMaxDeviceCode(deviceCode, options = {}) {
|
|
|
154
160
|
}
|
|
155
161
|
if (response.status !== 403 && response.status !== 404) {
|
|
156
162
|
const body = await response.text();
|
|
157
|
-
throw new
|
|
163
|
+
throw new OpenAiChatGptAuthError(`OpenAI ChatGPT device-code polling failed with status ${response.status}.`, {
|
|
158
164
|
status: response.status,
|
|
159
165
|
body,
|
|
160
166
|
});
|
|
@@ -163,9 +169,9 @@ export async function pollOpenAiMaxDeviceCode(deviceCode, options = {}) {
|
|
|
163
169
|
const remaining = timeoutMs - (Date.now() - startedAt);
|
|
164
170
|
await sleepFunction(Math.min(deviceCode.intervalSeconds * 1000, Math.max(remaining, 0)));
|
|
165
171
|
}
|
|
166
|
-
throw new
|
|
172
|
+
throw new OpenAiChatGptAuthError('OpenAI ChatGPT device-code login timed out.');
|
|
167
173
|
}
|
|
168
|
-
export async function
|
|
174
|
+
export async function exchangeOpenAiChatGptAuthorizationCode(authorizationCode, options = {}) {
|
|
169
175
|
const issuer = getIssuer(options);
|
|
170
176
|
const response = await postForm(`${issuer}/oauth/token`, new URLSearchParams({
|
|
171
177
|
grant_type: 'authorization_code',
|
|
@@ -176,21 +182,21 @@ export async function exchangeOpenAiMaxAuthorizationCode(authorizationCode, opti
|
|
|
176
182
|
}), options);
|
|
177
183
|
return createTokenData(response);
|
|
178
184
|
}
|
|
179
|
-
export function
|
|
185
|
+
export function ensureOpenAiChatGptWorkspaceAllowed(tokenData, forcedChatGptWorkspaceId) {
|
|
180
186
|
if (!forcedChatGptWorkspaceId) {
|
|
181
187
|
return;
|
|
182
188
|
}
|
|
183
|
-
if (tokenData.
|
|
184
|
-
throw new
|
|
189
|
+
if (tokenData.tokenInfo.chatgptAccountId !== forcedChatGptWorkspaceId) {
|
|
190
|
+
throw new OpenAiChatGptAuthError(`OpenAI ChatGPT login is restricted to workspace ${forcedChatGptWorkspaceId}.`);
|
|
185
191
|
}
|
|
186
192
|
}
|
|
187
|
-
export async function
|
|
188
|
-
const authorizationCode = await
|
|
189
|
-
const tokenData = await
|
|
190
|
-
|
|
193
|
+
export async function completeOpenAiChatGptDeviceCodeLogin(deviceCode, options = {}) {
|
|
194
|
+
const authorizationCode = await pollOpenAiChatGptDeviceCode(deviceCode, options);
|
|
195
|
+
const tokenData = await exchangeOpenAiChatGptAuthorizationCode(authorizationCode, options);
|
|
196
|
+
ensureOpenAiChatGptWorkspaceAllowed(tokenData, options.forcedChatGptWorkspaceId);
|
|
191
197
|
return tokenData;
|
|
192
198
|
}
|
|
193
|
-
export async function
|
|
199
|
+
export async function refreshOpenAiChatGptTokenData(tokenData, options = {}) {
|
|
194
200
|
const issuer = getIssuer(options);
|
|
195
201
|
const response = await postJson(`${issuer}/oauth/token`, {
|
|
196
202
|
client_id: getClientId(options),
|
|
@@ -201,13 +207,13 @@ export async function refreshOpenAiMaxTokenData(tokenData, options = {}) {
|
|
|
201
207
|
id_token: response.id_token ?? tokenData.idToken,
|
|
202
208
|
access_token: response.access_token ?? tokenData.accessToken,
|
|
203
209
|
refresh_token: response.refresh_token ?? tokenData.refreshToken,
|
|
204
|
-
});
|
|
210
|
+
}, tokenData);
|
|
205
211
|
}
|
|
206
|
-
export function
|
|
207
|
-
const accountId = credentials.accountId ?? credentials.
|
|
208
|
-
const isFedrampAccount = credentials.
|
|
212
|
+
export function createOpenAiChatGptProviderSettings(credentials) {
|
|
213
|
+
const accountId = credentials.accountId ?? credentials.tokenInfo?.chatgptAccountId;
|
|
214
|
+
const isFedrampAccount = credentials.tokenInfo?.chatgptAccountIsFedramp === true;
|
|
209
215
|
const headers = {
|
|
210
|
-
originator: credentials.originator ??
|
|
216
|
+
originator: credentials.originator ?? OPENAI_CHATGPT_DEFAULT_ORIGINATOR,
|
|
211
217
|
};
|
|
212
218
|
if (accountId) {
|
|
213
219
|
headers['ChatGPT-Account-ID'] = accountId;
|
|
@@ -217,8 +223,8 @@ export function createOpenAiMaxProviderSettings(credentials) {
|
|
|
217
223
|
}
|
|
218
224
|
return {
|
|
219
225
|
apiKey: credentials.accessToken,
|
|
220
|
-
baseURL: credentials.baseUrl ??
|
|
226
|
+
baseURL: credentials.baseUrl ?? OPENAI_CHATGPT_CODEX_BASE_URL,
|
|
221
227
|
headers,
|
|
222
228
|
};
|
|
223
229
|
}
|
|
224
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhaS5hdXRoLm9wZW5haS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0YWkuYXV0aC5vcGVuYWkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcseUJBQXlCLENBQUM7QUFDaEUsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsOEJBQThCLENBQUM7QUFDbkUsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsdUNBQXVDLENBQUM7QUFDakYsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsU0FBUyxDQUFDO0FBRXZELE1BQU0sc0JBQXNCLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFFOUMsTUFBTSxPQUFPLGtCQUFtQixTQUFRLEtBQUs7SUFJM0MsWUFBWSxPQUFlLEVBQUUsVUFBOEMsRUFBRTtRQUMzRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLG9CQUFvQixDQUFDO1FBQ2pDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUM3QixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDM0IsQ0FBQztDQUNGO0FBY0QsU0FBUyxRQUFRLENBQUMsT0FBOEI7SUFDOUMsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDO0lBQ3hELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNuQixNQUFNLElBQUksa0JBQWtCLENBQUMsdURBQXVELENBQUMsQ0FBQztJQUN4RixDQUFDO0lBQ0QsT0FBTyxhQUFhLENBQUM7QUFDdkIsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLE9BQThCO0lBQy9DLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLHNCQUFzQixDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFB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
|
|
230
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhaS5hdXRoLm9wZW5haS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0YWkuYXV0aC5vcGVuYWkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcseUJBQXlCLENBQUM7QUFDcEUsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsOEJBQThCLENBQUM7QUFDdkUsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsdUNBQXVDLENBQUM7QUFDckYsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQUcsU0FBUyxDQUFDO0FBRTNELE1BQU0sc0JBQXNCLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFFOUMsTUFBTSxPQUFPLHNCQUF1QixTQUFRLEtBQUs7SUFJL0MsWUFBWSxPQUFlLEVBQUUsVUFBOEMsRUFBRTtRQUMzRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLHdCQUF3QixDQUFDO1FBQ3JDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUM3QixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDM0IsQ0FBQztDQUNGO0FBY0QsU0FBUyxRQUFRLENBQUMsT0FBa0M7SUFDbEQsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDO0lBQ3hELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNuQixNQUFNLElBQUksc0JBQXNCLENBQUMsMkRBQTJELENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBQ0QsT0FBTyxhQUFhLENBQUM7QUFDdkIsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLE9BQWtDO0lBQ25ELE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLDBCQUEwQixDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFB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
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import * as plugins from './plugins.js';
|
|
2
2
|
import { createOllamaModel } from './smartai.provider.ollama.js';
|
|
3
3
|
import { createAnthropicCachingMiddleware } from './smartai.middleware.anthropic.js';
|
|
4
|
-
import {
|
|
4
|
+
import { createOpenAiChatGptInstructionsMiddleware } from './smartai.middleware.openai.js';
|
|
5
|
+
import { createOpenAiChatGptProviderSettings } from './smartai.auth.openai.js';
|
|
5
6
|
/**
|
|
6
7
|
* Returns a LanguageModelV3 for the given provider and model.
|
|
7
8
|
* This is the primary API — consumers use the returned model with AI SDK's
|
|
@@ -20,10 +21,16 @@ export function getModel(options) {
|
|
|
20
21
|
});
|
|
21
22
|
}
|
|
22
23
|
case 'openai': {
|
|
23
|
-
const p = plugins.createOpenAI(options.
|
|
24
|
-
?
|
|
24
|
+
const p = plugins.createOpenAI(options.openAiChatGptAuth
|
|
25
|
+
? createOpenAiChatGptProviderSettings(options.openAiChatGptAuth)
|
|
25
26
|
: { apiKey: options.apiKey });
|
|
26
|
-
|
|
27
|
+
const base = p(options.model);
|
|
28
|
+
return options.openAiChatGptAuth
|
|
29
|
+
? plugins.wrapLanguageModel({
|
|
30
|
+
model: base,
|
|
31
|
+
middleware: createOpenAiChatGptInstructionsMiddleware(),
|
|
32
|
+
})
|
|
33
|
+
: base;
|
|
27
34
|
}
|
|
28
35
|
case 'google': {
|
|
29
36
|
const p = plugins.createGoogleGenerativeAI({ apiKey: options.apiKey });
|
|
@@ -58,4 +65,4 @@ export function getModelSetup(options) {
|
|
|
58
65
|
const model = getModel(options);
|
|
59
66
|
return options.providerOptions ? { model, providerOptions: options.providerOptions } : { model };
|
|
60
67
|
}
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhaS5jbGFzc2VzLnNtYXJ0YWkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGFpLmNsYXNzZXMuc21hcnRhaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUV4QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRixPQUFPLEVBQUUseUNBQXlDLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRixPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUvRTs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQyxPQUF3QjtJQUMvQyxRQUFRLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDakIsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUM5RCxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBb0IsQ0FBQztZQUNqRCxJQUFJLE9BQU8sQ0FBQyxhQUFhLEtBQUssS0FBSztnQkFBRSxPQUFPLElBQUksQ0FBQztZQUNqRCxPQUFPLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztnQkFDL0IsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsVUFBVSxFQUFFLGdDQUFnQyxDQUMxQyxPQUFPLE9BQU8sQ0FBQyxhQUFhLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQzlFO2FBQ0YsQ0FBK0IsQ0FBQztRQUNuQyxDQUFDO1FBQ0QsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ2QsTUFBTSxD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
|
|
@@ -3,7 +3,7 @@ import type { ISmartAiCacheOptions } from './smartai.cache.js';
|
|
|
3
3
|
export type TProvider = 'anthropic' | 'openai' | 'google' | 'groq' | 'mistral' | 'xai' | 'perplexity' | 'ollama';
|
|
4
4
|
export type TOpenAiReasoningEffort = 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh';
|
|
5
5
|
export type TOpenAiTextVerbosity = 'low' | 'medium' | 'high';
|
|
6
|
-
export interface
|
|
6
|
+
export interface IOpenAiChatGptTokenInfo {
|
|
7
7
|
email?: string;
|
|
8
8
|
chatgptPlanType?: string;
|
|
9
9
|
chatgptUserId?: string;
|
|
@@ -12,36 +12,35 @@ export interface IOpenAiMaxIdTokenInfo {
|
|
|
12
12
|
expiresAt?: string;
|
|
13
13
|
rawJwt: string;
|
|
14
14
|
}
|
|
15
|
-
export interface
|
|
15
|
+
export interface IOpenAiChatGptAuthCredentials {
|
|
16
16
|
accessToken: string;
|
|
17
17
|
refreshToken?: string;
|
|
18
18
|
idToken?: string;
|
|
19
19
|
accountId?: string;
|
|
20
|
-
|
|
20
|
+
tokenInfo?: IOpenAiChatGptTokenInfo;
|
|
21
21
|
baseUrl?: string;
|
|
22
22
|
originator?: string;
|
|
23
23
|
}
|
|
24
|
-
export interface
|
|
24
|
+
export interface IOpenAiChatGptTokenData extends IOpenAiChatGptAuthCredentials {
|
|
25
25
|
refreshToken: string;
|
|
26
|
-
|
|
27
|
-
idTokenInfo: IOpenAiMaxIdTokenInfo;
|
|
26
|
+
tokenInfo: IOpenAiChatGptTokenInfo;
|
|
28
27
|
}
|
|
29
|
-
export interface
|
|
28
|
+
export interface IOpenAiChatGptDeviceCode {
|
|
30
29
|
verificationUrl: string;
|
|
31
30
|
userCode: string;
|
|
32
31
|
deviceAuthId: string;
|
|
33
32
|
intervalSeconds: number;
|
|
34
33
|
}
|
|
35
|
-
export interface
|
|
34
|
+
export interface IOpenAiChatGptAuthOptions {
|
|
36
35
|
issuer?: string;
|
|
37
36
|
clientId?: string;
|
|
38
37
|
fetch?: typeof fetch;
|
|
39
38
|
}
|
|
40
|
-
export interface
|
|
39
|
+
export interface IOpenAiChatGptDeviceCodePollOptions extends IOpenAiChatGptAuthOptions {
|
|
41
40
|
timeoutMs?: number;
|
|
42
41
|
sleep?: (ms: number) => Promise<void>;
|
|
43
42
|
}
|
|
44
|
-
export interface
|
|
43
|
+
export interface IOpenAiChatGptCompleteDeviceCodeOptions extends IOpenAiChatGptDeviceCodePollOptions {
|
|
45
44
|
forcedChatGptWorkspaceId?: string;
|
|
46
45
|
}
|
|
47
46
|
export interface IOpenAiProviderOptions extends JSONObject {
|
|
@@ -86,7 +85,7 @@ export interface ISmartAiOptions {
|
|
|
86
85
|
* OpenAI ChatGPT/Codex subscription credentials from the device-code auth flow.
|
|
87
86
|
* Only used when provider === 'openai'.
|
|
88
87
|
*/
|
|
89
|
-
|
|
88
|
+
openAiChatGptAuth?: IOpenAiChatGptAuthCredentials;
|
|
90
89
|
/**
|
|
91
90
|
* Provider-specific AI SDK generation options.
|
|
92
91
|
* Pass this to generateText()/streamText() alongside the model.
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { LanguageModelV3Middleware } from '@ai-sdk/provider';
|
|
2
|
+
/**
|
|
3
|
+
* ChatGPT's Codex backend requires top-level Responses API instructions.
|
|
4
|
+
* The standard OpenAI provider otherwise serializes system prompts as input items.
|
|
5
|
+
*/
|
|
6
|
+
export declare function createOpenAiChatGptInstructionsMiddleware(): LanguageModelV3Middleware;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
const isNonEmptyString = (value) => typeof value === 'string' && value.trim().length > 0;
|
|
2
|
+
const getSystemInstructions = (prompt) => {
|
|
3
|
+
const instructions = prompt
|
|
4
|
+
.filter((message) => message.role === 'system')
|
|
5
|
+
.map((message) => message.content)
|
|
6
|
+
.filter(isNonEmptyString);
|
|
7
|
+
return instructions.length > 0 ? instructions.join('\n') : undefined;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* ChatGPT's Codex backend requires top-level Responses API instructions.
|
|
11
|
+
* The standard OpenAI provider otherwise serializes system prompts as input items.
|
|
12
|
+
*/
|
|
13
|
+
export function createOpenAiChatGptInstructionsMiddleware() {
|
|
14
|
+
return {
|
|
15
|
+
specificationVersion: 'v3',
|
|
16
|
+
transformParams: async ({ params }) => {
|
|
17
|
+
const instructions = getSystemInstructions(params.prompt);
|
|
18
|
+
if (!instructions) {
|
|
19
|
+
return params;
|
|
20
|
+
}
|
|
21
|
+
const providerOptions = params.providerOptions ?? {};
|
|
22
|
+
const openAiProviderOptions = providerOptions.openai ?? {};
|
|
23
|
+
if (isNonEmptyString(openAiProviderOptions.instructions)) {
|
|
24
|
+
return params;
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
...params,
|
|
28
|
+
prompt: params.prompt.filter((message) => message.role !== 'system'),
|
|
29
|
+
providerOptions: {
|
|
30
|
+
...providerOptions,
|
|
31
|
+
openai: {
|
|
32
|
+
...openAiProviderOptions,
|
|
33
|
+
instructions,
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhaS5taWRkbGV3YXJlLm9wZW5haS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0YWkubWlkZGxld2FyZS5vcGVuYWkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEtBQWMsRUFBbUIsRUFBRSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUVuSCxNQUFNLHFCQUFxQixHQUFHLENBQUMsTUFBNEMsRUFBc0IsRUFBRTtJQUNqRyxNQUFNLFlBQVksR0FBRyxNQUFNO1NBQ3hCLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUM7U0FDOUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1NBQ2pDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRTVCLE9BQU8sWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUN2RSxDQUFDLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUseUNBQXlDO0lBQ3ZELE9BQU87UUFDTCxvQkFBb0IsRUFBRSxJQUFJO1FBQzFCLGVBQWUsRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO1lBQ3BDLE1BQU0sWUFBWSxHQUFHLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMxRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ2xCLE9BQU8sTUFBTSxDQUFDO1lBQ2hCLENBQUM7WUFFRCxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQztZQUNyRCxNQUFNLHFCQUFxQixHQUFHLGVBQWUsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO1lBQzNELElBQUksZ0JBQWdCLENBQUMscUJBQXFCLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztnQkFDekQsT0FBTyxNQUFNLENBQUM7WUFDaEIsQ0FBQztZQUVELE9BQU87Z0JBQ0wsR0FBRyxNQUFNO2dCQUNULE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUM7Z0JBQ3BFLGVBQWUsRUFBRTtvQkFDZixHQUFHLGVBQWU7b0JBQ2xCLE1BQU0sRUFBRTt3QkFDTixHQUFHLHFCQUFxQjt3QkFDeEIsWUFBWTtxQkFDQztpQkFDaEI7YUFDbUMsQ0FBQztRQUN6QyxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMifQ==
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { IOpenAiChatGptAuthOptions, IOpenAiChatGptTokenData } from '../dist_ts/smartai.interfaces.js';
|
|
2
|
+
export type TOpenAiChatGptAuthSource = 'smartai' | 'opencode' | 'codex';
|
|
3
|
+
export type TOpenAiChatGptAuthFileFormat = TOpenAiChatGptAuthSource | 'auto';
|
|
4
|
+
export interface IOpenAiChatGptAuthSourceConfig {
|
|
5
|
+
source: TOpenAiChatGptAuthSource;
|
|
6
|
+
filePath?: string;
|
|
7
|
+
format?: TOpenAiChatGptAuthFileFormat;
|
|
8
|
+
writeBack?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface IOpenAiChatGptAuthSourceInspection {
|
|
11
|
+
source: TOpenAiChatGptAuthSource;
|
|
12
|
+
filePath: string;
|
|
13
|
+
exists: boolean;
|
|
14
|
+
usable: boolean;
|
|
15
|
+
expired?: boolean;
|
|
16
|
+
accountId?: string;
|
|
17
|
+
email?: string;
|
|
18
|
+
plan?: string;
|
|
19
|
+
expiresAt?: string;
|
|
20
|
+
error?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface IInspectOpenAiChatGptAuthSourcesOptions {
|
|
23
|
+
sources?: Array<TOpenAiChatGptAuthSource | IOpenAiChatGptAuthSourceConfig>;
|
|
24
|
+
homeDir?: string;
|
|
25
|
+
now?: Date;
|
|
26
|
+
}
|
|
27
|
+
export interface IResolveOpenAiChatGptAuthOptions extends IInspectOpenAiChatGptAuthSourcesOptions {
|
|
28
|
+
refresh?: 'ifNeeded' | false;
|
|
29
|
+
writeBack?: Partial<Record<TOpenAiChatGptAuthSource, boolean>>;
|
|
30
|
+
authOptions?: IOpenAiChatGptAuthOptions;
|
|
31
|
+
}
|
|
32
|
+
export interface IResolvedOpenAiChatGptAuth {
|
|
33
|
+
source: TOpenAiChatGptAuthSource;
|
|
34
|
+
filePath: string;
|
|
35
|
+
tokenData: IOpenAiChatGptTokenData;
|
|
36
|
+
refreshed: boolean;
|
|
37
|
+
}
|
|
38
|
+
export declare const getDefaultOpenAiChatGptAuthPath: (source: TOpenAiChatGptAuthSource, homeDir?: string) => string;
|
|
39
|
+
export declare const normalizeOpenAiChatGptAuth: (input: unknown, format?: TOpenAiChatGptAuthFileFormat) => IOpenAiChatGptTokenData | undefined;
|
|
40
|
+
export declare const readOpenAiChatGptAuthFile: (filePath: string, format?: TOpenAiChatGptAuthFileFormat) => Promise<IOpenAiChatGptTokenData | undefined>;
|
|
41
|
+
export declare const inspectOpenAiChatGptAuthSources: (options?: IInspectOpenAiChatGptAuthSourcesOptions) => Promise<IOpenAiChatGptAuthSourceInspection[]>;
|
|
42
|
+
export declare const resolveOpenAiChatGptAuth: (options?: IResolveOpenAiChatGptAuthOptions) => Promise<IResolvedOpenAiChatGptAuth | undefined>;
|
|
43
|
+
export declare const writeOpenAiChatGptAuthFile: (filePath: string, tokenData: IOpenAiChatGptTokenData, format?: TOpenAiChatGptAuthFileFormat) => Promise<void>;
|