@framers/agentos 0.1.41 → 0.1.43

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.
@@ -1,14 +1,15 @@
1
1
  /**
2
- * @fileoverview OpenAI OAuth device code flow implementation.
2
+ * @fileoverview OpenAI OAuth PKCE flow — browser-based, like the Codex CLI.
3
3
  *
4
4
  * Uses the same public client ID and endpoints as the Codex CLI to obtain
5
5
  * API access tokens from OpenAI consumer subscriptions (ChatGPT Plus/Pro).
6
6
  *
7
- * Flow:
8
- * 1. POST /deviceauth/usercode { device_auth_id, user_code, interval }
9
- * 2. User visits verification URL and enters the code
10
- * 3. Poll POST /deviceauth/token { authorization_code, code_verifier }
11
- * 4. Exchange POST /oauth/token with grant_type=authorization_code{ access_token, refresh_token }
7
+ * Flow (browser-based PKCE — bypasses Cloudflare challenges):
8
+ * 1. Generate PKCE code_verifier + code_challenge
9
+ * 2. Start a local HTTP server on localhost:1455
10
+ * 3. Open the user's browser to OpenAI's /authorize endpoint
11
+ * 4. User logs in via browserOpenAI redirects to localhost:1455/auth/callback
12
+ * 5. Exchange authorization_code + code_verifier for tokens via /oauth/token
12
13
  *
13
14
  * @module agentos/core/llm/auth/OpenAIOAuthFlow
14
15
  */
@@ -16,21 +17,26 @@ import type { IOAuthFlow, IOAuthTokenStore, OAuthTokenSet } from './types.js';
16
17
  export interface OpenAIOAuthFlowOptions {
17
18
  tokenStore?: IOAuthTokenStore;
18
19
  clientId?: string;
19
- /** Called when the user needs to visit a URL and enter a code. */
20
- onUserCode?: (userCode: string, verificationUrl: string) => void;
20
+ /** Called when the browser is about to open. */
21
+ onBrowserOpen?: (authUrl: string) => void;
21
22
  }
22
23
  export declare class OpenAIOAuthFlow implements IOAuthFlow {
23
24
  readonly providerId = "openai";
24
25
  private readonly store;
25
26
  private readonly clientId;
26
- private readonly onUserCode;
27
+ private readonly onBrowserOpen;
27
28
  private refreshPromise;
28
29
  constructor(opts?: OpenAIOAuthFlowOptions);
29
30
  /**
30
- * Run the device code OAuth flow interactively.
31
- * Displays a user code and waits for the user to authorize.
31
+ * Run the browser-based PKCE OAuth flow.
32
+ * Opens the user's browser, waits for the callback, exchanges for tokens.
32
33
  */
33
34
  authenticate(): Promise<OAuthTokenSet>;
35
+ /**
36
+ * Exchange an id_token for an OpenAI API key.
37
+ * This mirrors Codex CLI's `obtain_api_key()` step.
38
+ */
39
+ private obtainApiKey;
34
40
  /**
35
41
  * Refresh an expired access token using the refresh token.
36
42
  */
@@ -1 +1 @@
1
- {"version":3,"file":"OpenAIOAuthFlow.d.ts","sourceRoot":"","sources":["../../../../src/core/llm/auth/OpenAIOAuthFlow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAChB,aAAa,EACd,MAAM,YAAY,CAAC;AA2BpB,MAAM,WAAW,sBAAsB;IACrC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,KAAK,IAAI,CAAC;CAClE;AAED,qBAAa,eAAgB,YAAW,UAAU;IAChD,QAAQ,CAAC,UAAU,YAAY;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmB;IACzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsD;IACjF,OAAO,CAAC,cAAc,CAAuC;gBAEjD,IAAI,CAAC,EAAE,sBAAsB;IAMzC;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,aAAa,CAAC;IAsG5C;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAoC5D;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO;IAIvC;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;CAsBxC"}
1
+ {"version":3,"file":"OpenAIOAuthFlow.d.ts","sourceRoot":"","sources":["../../../../src/core/llm/auth/OpenAIOAuthFlow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAChB,aAAa,EACd,MAAM,YAAY,CAAC;AA2BpB,MAAM,WAAW,sBAAsB;IACrC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAED,qBAAa,eAAgB,YAAW,UAAU;IAChD,QAAQ,CAAC,UAAU,YAAY;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmB;IACzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4B;IAC1D,OAAO,CAAC,cAAc,CAAuC;gBAEjD,IAAI,CAAC,EAAE,sBAAsB;IAMzC;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,aAAa,CAAC;IA2E5C;;;OAGG;YACW,YAAY;IAsB1B;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAoC5D;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO;IAIvC;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;CAsBxC"}
@@ -1,119 +1,133 @@
1
1
  /**
2
- * @fileoverview OpenAI OAuth device code flow implementation.
2
+ * @fileoverview OpenAI OAuth PKCE flow — browser-based, like the Codex CLI.
3
3
  *
4
4
  * Uses the same public client ID and endpoints as the Codex CLI to obtain
5
5
  * API access tokens from OpenAI consumer subscriptions (ChatGPT Plus/Pro).
6
6
  *
7
- * Flow:
8
- * 1. POST /deviceauth/usercode { device_auth_id, user_code, interval }
9
- * 2. User visits verification URL and enters the code
10
- * 3. Poll POST /deviceauth/token { authorization_code, code_verifier }
11
- * 4. Exchange POST /oauth/token with grant_type=authorization_code{ access_token, refresh_token }
7
+ * Flow (browser-based PKCE — bypasses Cloudflare challenges):
8
+ * 1. Generate PKCE code_verifier + code_challenge
9
+ * 2. Start a local HTTP server on localhost:1455
10
+ * 3. Open the user's browser to OpenAI's /authorize endpoint
11
+ * 4. User logs in via browserOpenAI redirects to localhost:1455/auth/callback
12
+ * 5. Exchange authorization_code + code_verifier for tokens via /oauth/token
12
13
  *
13
14
  * @module agentos/core/llm/auth/OpenAIOAuthFlow
14
15
  */
16
+ import { createServer } from 'node:http';
17
+ import { randomBytes, createHash } from 'node:crypto';
15
18
  import { FileTokenStore } from './FileTokenStore.js';
16
19
  /** OpenAI's public Codex CLI client ID. */
17
20
  const OPENAI_CLIENT_ID = 'app_EMoamEEZ73f0CkXaXp7hrann';
18
21
  /** OpenAI auth base URL. */
19
22
  const AUTH_BASE_URL = 'https://auth.openai.com';
20
- /** Redirect URI used in the code exchange step. */
21
- const REDIRECT_URI = 'http://localhost:1455/auth/callback';
22
- /** Verification URL shown to the user. */
23
- const VERIFICATION_URL = 'https://platform.openai.com/device';
24
- /** Common headers for all auth requests — User-Agent required to bypass Cloudflare. */
23
+ /** Local callback server port (same as Codex CLI). */
24
+ const CALLBACK_PORT = 1455;
25
+ /** Redirect URI must match what OpenAI expects for this client ID. */
26
+ const REDIRECT_URI = `http://localhost:${CALLBACK_PORT}/auth/callback`;
27
+ /** Common headers for token exchange requests. */
25
28
  const AUTH_HEADERS = {
26
29
  'User-Agent': 'wunderland-cli/1.0 (OpenAI OAuth; +https://wunderland.sh)',
27
30
  'Accept': 'application/json',
28
31
  };
29
32
  /** Buffer in ms before expiry to trigger refresh (5 minutes). */
30
33
  const REFRESH_BUFFER_MS = 5 * 60 * 1000;
31
- /** Maximum time to wait for user to authorize (15 minutes). */
32
- const MAX_POLL_DURATION_MS = 15 * 60 * 1000;
34
+ /** Maximum time to wait for user to authorize (10 minutes). */
35
+ const MAX_AUTH_TIMEOUT_MS = 10 * 60 * 1000;
33
36
  export class OpenAIOAuthFlow {
34
37
  constructor(opts) {
35
38
  this.providerId = 'openai';
36
39
  this.refreshPromise = null;
37
40
  this.store = opts?.tokenStore ?? new FileTokenStore();
38
41
  this.clientId = opts?.clientId ?? OPENAI_CLIENT_ID;
39
- this.onUserCode = opts?.onUserCode ?? defaultOnUserCode;
42
+ this.onBrowserOpen = opts?.onBrowserOpen ?? (() => { });
40
43
  }
41
44
  /**
42
- * Run the device code OAuth flow interactively.
43
- * Displays a user code and waits for the user to authorize.
45
+ * Run the browser-based PKCE OAuth flow.
46
+ * Opens the user's browser, waits for the callback, exchanges for tokens.
44
47
  */
45
48
  async authenticate() {
46
- // Step 1: Request device code
47
- const deviceRes = await fetch(`${AUTH_BASE_URL}/deviceauth/usercode`, {
48
- method: 'POST',
49
- headers: { ...AUTH_HEADERS, 'Content-Type': 'application/json' },
50
- body: JSON.stringify({ client_id: this.clientId }),
51
- });
52
- if (!deviceRes.ok) {
53
- const body = await deviceRes.text();
54
- throw new Error(`Failed to request device code: ${deviceRes.status} ${body}`);
55
- }
56
- const deviceData = await deviceRes.json();
57
- const { device_auth_id, user_code, interval } = deviceData;
58
- const pollIntervalMs = (interval || 5) * 1000;
59
- // Display code to user
60
- this.onUserCode(user_code, VERIFICATION_URL);
61
- // Step 2: Poll for authorization
62
- const startTime = Date.now();
63
- let authCode;
64
- let codeVerifier;
65
- while (Date.now() - startTime < MAX_POLL_DURATION_MS) {
66
- await sleep(pollIntervalMs);
67
- const pollRes = await fetch(`${AUTH_BASE_URL}/deviceauth/token`, {
49
+ // Step 1: Generate PKCE pair
50
+ const codeVerifier = generateCodeVerifier();
51
+ const codeChallenge = generateCodeChallenge(codeVerifier);
52
+ const state = randomBytes(16).toString('hex');
53
+ // Step 2: Start local callback server
54
+ const { promise: callbackPromise, server } = startCallbackServer(state);
55
+ try {
56
+ // Step 3: Build authorization URL and open browser
57
+ const authUrl = buildAuthUrl(this.clientId, codeChallenge, state);
58
+ this.onBrowserOpen(authUrl);
59
+ // Open the system browser
60
+ await openBrowser(authUrl);
61
+ // Step 4: Wait for the callback with auth code
62
+ const authCode = await Promise.race([
63
+ callbackPromise,
64
+ timeout(MAX_AUTH_TIMEOUT_MS).then(() => {
65
+ throw new Error('OAuth authorization timed out. Please try again.');
66
+ }),
67
+ ]);
68
+ // Step 5: Exchange authorization code for tokens
69
+ const tokenRes = await fetch(`${AUTH_BASE_URL}/oauth/token`, {
68
70
  method: 'POST',
69
- headers: { ...AUTH_HEADERS, 'Content-Type': 'application/json' },
70
- body: JSON.stringify({ device_auth_id, user_code }),
71
+ headers: { ...AUTH_HEADERS, 'Content-Type': 'application/x-www-form-urlencoded' },
72
+ body: new URLSearchParams({
73
+ grant_type: 'authorization_code',
74
+ code: authCode,
75
+ redirect_uri: REDIRECT_URI,
76
+ client_id: this.clientId,
77
+ code_verifier: codeVerifier,
78
+ }).toString(),
71
79
  });
72
- if (pollRes.ok) {
73
- const pollData = await pollRes.json();
74
- if (pollData.authorization_code) {
75
- authCode = pollData.authorization_code;
76
- codeVerifier = pollData.code_verifier;
77
- break;
78
- }
79
- }
80
- // 403/428 means "authorization_pending" — keep polling
81
- if (pollRes.status === 403 || pollRes.status === 428) {
82
- continue;
80
+ if (!tokenRes.ok) {
81
+ const body = await tokenRes.text();
82
+ throw new Error(`Token exchange failed: ${tokenRes.status} ${body}`);
83
83
  }
84
- // Other errors are fatal
85
- if (!pollRes.ok) {
86
- const body = await pollRes.text();
87
- throw new Error(`Device auth poll failed: ${pollRes.status} ${body}`);
84
+ const tokenData = await tokenRes.json();
85
+ // Step 6: Exchange id_token for an OpenAI API key (like Codex CLI's obtain_api_key)
86
+ let apiKey = tokenData.access_token;
87
+ if (tokenData.id_token) {
88
+ try {
89
+ apiKey = await this.obtainApiKey(tokenData.id_token);
90
+ }
91
+ catch {
92
+ // Fall back to access_token if API key exchange fails
93
+ }
88
94
  }
95
+ const tokens = {
96
+ accessToken: apiKey,
97
+ refreshToken: tokenData.refresh_token,
98
+ expiresAt: Date.now() + (tokenData.expires_in ?? 3600) * 1000,
99
+ idToken: tokenData.id_token,
100
+ };
101
+ await this.store.save(this.providerId, tokens);
102
+ return tokens;
89
103
  }
90
- if (!authCode) {
91
- throw new Error('OAuth authorization timed out. Please try again.');
104
+ finally {
105
+ // Always shut down the callback server
106
+ server.close();
92
107
  }
93
- // Step 3: Exchange authorization code for tokens
94
- const tokenRes = await fetch(`${AUTH_BASE_URL}/oauth/token`, {
108
+ }
109
+ /**
110
+ * Exchange an id_token for an OpenAI API key.
111
+ * This mirrors Codex CLI's `obtain_api_key()` step.
112
+ */
113
+ async obtainApiKey(idToken) {
114
+ const res = await fetch(`${AUTH_BASE_URL}/oauth/token`, {
95
115
  method: 'POST',
96
116
  headers: { ...AUTH_HEADERS, 'Content-Type': 'application/x-www-form-urlencoded' },
97
117
  body: new URLSearchParams({
98
- grant_type: 'authorization_code',
99
- code: authCode,
100
- redirect_uri: REDIRECT_URI,
118
+ grant_type: 'urn:ietf:params:oauth:grant-type:token-exchange',
101
119
  client_id: this.clientId,
102
- ...(codeVerifier ? { code_verifier: codeVerifier } : {}),
120
+ requested_token: 'openai-api-key',
121
+ subject_token: idToken,
122
+ subject_token_type: 'urn:ietf:params:oauth:token-type:id_token',
103
123
  }).toString(),
104
124
  });
105
- if (!tokenRes.ok) {
106
- const body = await tokenRes.text();
107
- throw new Error(`Token exchange failed: ${tokenRes.status} ${body}`);
125
+ if (!res.ok) {
126
+ const body = await res.text();
127
+ throw new Error(`API key exchange failed: ${res.status} ${body}`);
108
128
  }
109
- const tokenData = await tokenRes.json();
110
- const tokens = {
111
- accessToken: tokenData.access_token,
112
- refreshToken: tokenData.refresh_token,
113
- expiresAt: Date.now() + (tokenData.expires_in ?? 3600) * 1000,
114
- };
115
- await this.store.save(this.providerId, tokens);
116
- return tokens;
129
+ const data = await res.json();
130
+ return data.access_token;
117
131
  }
118
132
  /**
119
133
  * Refresh an expired access token using the refresh token.
@@ -172,16 +186,100 @@ export class OpenAIOAuthFlow {
172
186
  return refreshed.accessToken;
173
187
  }
174
188
  }
175
- function defaultOnUserCode(userCode, verificationUrl) {
176
- console.log('');
177
- console.log(' To authenticate, visit:');
178
- console.log(` ${verificationUrl}`);
179
- console.log('');
180
- console.log(` Enter code: ${userCode}`);
181
- console.log('');
182
- console.log(' Waiting for authorization...');
189
+ // ── PKCE helpers ────────────────────────────────────────────────────────────
190
+ function generateCodeVerifier() {
191
+ return randomBytes(32).toString('base64url');
192
+ }
193
+ function generateCodeChallenge(verifier) {
194
+ return createHash('sha256').update(verifier).digest('base64url');
195
+ }
196
+ // ── Authorization URL builder ───────────────────────────────────────────────
197
+ function buildAuthUrl(clientId, codeChallenge, state) {
198
+ const params = new URLSearchParams({
199
+ response_type: 'code',
200
+ client_id: clientId,
201
+ redirect_uri: REDIRECT_URI,
202
+ scope: 'openid profile email offline_access api.connectors.read api.connectors.invoke',
203
+ state,
204
+ code_challenge: codeChallenge,
205
+ code_challenge_method: 'S256',
206
+ id_token_add_organizations: 'true',
207
+ codex_cli_simplified_flow: 'true',
208
+ });
209
+ return `${AUTH_BASE_URL}/oauth/authorize?${params.toString()}`;
210
+ }
211
+ // ── Local callback server ───────────────────────────────────────────────────
212
+ const SUCCESS_HTML = `<!DOCTYPE html><html><head><title>Wunderland — Authenticated</title>
213
+ <style>body{font-family:system-ui,-apple-system,sans-serif;display:flex;align-items:center;justify-content:center;min-height:100vh;margin:0;background:#0a0a0f;color:#c9d1d9}
214
+ .card{text-align:center;padding:3rem;border:1px solid #a855f7;border-radius:16px;max-width:420px}
215
+ h1{color:#a855f7;margin:0 0 1rem}p{color:#6b7280;line-height:1.6}
216
+ .check{font-size:3rem;margin-bottom:1rem}</style></head>
217
+ <body><div class="card"><div class="check">✓</div><h1>Authenticated</h1>
218
+ <p>You can close this tab and return to your terminal.</p></div></body></html>`;
219
+ const ERROR_HTML = (msg) => `<!DOCTYPE html><html><head><title>Wunderland — Error</title>
220
+ <style>body{font-family:system-ui,-apple-system,sans-serif;display:flex;align-items:center;justify-content:center;min-height:100vh;margin:0;background:#0a0a0f;color:#c9d1d9}
221
+ .card{text-align:center;padding:3rem;border:1px solid #ef4444;border-radius:16px;max-width:420px}
222
+ h1{color:#ef4444;margin:0 0 1rem}p{color:#6b7280;line-height:1.6}</style></head>
223
+ <body><div class="card"><h1>Authentication Failed</h1><p>${msg}</p></div></body></html>`;
224
+ function startCallbackServer(expectedState) {
225
+ let resolveCode;
226
+ let rejectCode;
227
+ const promise = new Promise((resolve, reject) => {
228
+ resolveCode = resolve;
229
+ rejectCode = reject;
230
+ });
231
+ const server = createServer((req, res) => {
232
+ const url = new URL(req.url ?? '/', `http://localhost:${CALLBACK_PORT}`);
233
+ if (url.pathname !== '/auth/callback') {
234
+ res.writeHead(404, { 'Content-Type': 'text/plain' });
235
+ res.end('Not found');
236
+ return;
237
+ }
238
+ const code = url.searchParams.get('code');
239
+ const state = url.searchParams.get('state');
240
+ const error = url.searchParams.get('error');
241
+ const errorDescription = url.searchParams.get('error_description');
242
+ if (error) {
243
+ res.writeHead(200, { 'Content-Type': 'text/html' });
244
+ res.end(ERROR_HTML(errorDescription || error));
245
+ rejectCode(new Error(`OAuth error: ${error} — ${errorDescription || 'unknown'}`));
246
+ return;
247
+ }
248
+ if (!code) {
249
+ res.writeHead(400, { 'Content-Type': 'text/html' });
250
+ res.end(ERROR_HTML('No authorization code received.'));
251
+ rejectCode(new Error('No authorization code in callback'));
252
+ return;
253
+ }
254
+ if (state !== expectedState) {
255
+ res.writeHead(400, { 'Content-Type': 'text/html' });
256
+ res.end(ERROR_HTML('State mismatch — possible CSRF attack.'));
257
+ rejectCode(new Error('OAuth state mismatch'));
258
+ return;
259
+ }
260
+ // Success
261
+ res.writeHead(200, { 'Content-Type': 'text/html' });
262
+ res.end(SUCCESS_HTML);
263
+ resolveCode(code);
264
+ });
265
+ server.listen(CALLBACK_PORT, '127.0.0.1');
266
+ return { promise, server };
267
+ }
268
+ // ── Browser opener ──────────────────────────────────────────────────────────
269
+ async function openBrowser(url) {
270
+ const { exec } = await import('node:child_process');
271
+ const { platform } = await import('node:os');
272
+ const cmd = platform() === 'darwin'
273
+ ? `open "${url}"`
274
+ : platform() === 'win32'
275
+ ? `start "" "${url}"`
276
+ : `xdg-open "${url}"`;
277
+ return new Promise((resolve) => {
278
+ exec(cmd, () => resolve());
279
+ });
183
280
  }
184
- function sleep(ms) {
281
+ // ── Utilities ───────────────────────────────────────────────────────────────
282
+ function timeout(ms) {
185
283
  return new Promise((resolve) => setTimeout(resolve, ms));
186
284
  }
187
285
  //# sourceMappingURL=OpenAIOAuthFlow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OpenAIOAuthFlow.js","sourceRoot":"","sources":["../../../../src/core/llm/auth/OpenAIOAuthFlow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OpenAIOAuthFlow.js","sourceRoot":"","sources":["../../../../src/core/llm/auth/OpenAIOAuthFlow.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,8 @@ export interface OAuthTokenSet {
10
10
  refreshToken?: string;
11
11
  /** Unix epoch milliseconds when the access token expires. */
12
12
  expiresAt: number;
13
+ /** OpenID Connect id_token (used for API key exchange in OpenAI OAuth). */
14
+ idToken?: string;
13
15
  /** Provider-specific metadata (e.g., igUserId for Instagram). */
14
16
  metadata?: Record<string, string>;
15
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/llm/auth/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,iDAAiD;AACjD,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;AAE7C,8BAA8B;AAC9B,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED,6CAA6C;AAC7C,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,kBAAkB,EAAE,MAAM,CAAC;IAC3B,wEAAwE;IACxE,mBAAmB,EAAE,MAAM,CAAC;IAC5B,+DAA+D;IAC/D,aAAa,EAAE,MAAM,CAAC;IACtB,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,2CAA2C;AAC3C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACxD,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1C;AAED,qDAAqD;AACrD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,iEAAiE;IACjE,YAAY,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAEvC,sEAAsE;IACtE,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAEvD,sEAAsE;IACtE,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC;IAExC;;;;OAIG;IACH,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACnC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/llm/auth/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,iDAAiD;AACjD,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;AAE7C,8BAA8B;AAC9B,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED,6CAA6C;AAC7C,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,kBAAkB,EAAE,MAAM,CAAC;IAC3B,wEAAwE;IACxE,mBAAmB,EAAE,MAAM,CAAC;IAC5B,+DAA+D;IAC/D,aAAa,EAAE,MAAM,CAAC;IACtB,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,2CAA2C;AAC3C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACxD,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1C;AAED,qDAAqD;AACrD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,iEAAiE;IACjE,YAAY,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAEvC,sEAAsE;IACtE,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAEvD,sEAAsE;IACtE,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC;IAExC;;;;OAIG;IACH,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACnC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@framers/agentos",
3
- "version": "0.1.41",
3
+ "version": "0.1.43",
4
4
  "description": "Modular AgentOS orchestration library",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",