@vymalo/opencode-oauth2 0.14.0 → 0.15.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.
Files changed (47) hide show
  1. package/dist/cache.d.ts +14 -3
  2. package/dist/cache.js +32 -86
  3. package/dist/cache.js.map +1 -1
  4. package/dist/config.d.ts +3 -37
  5. package/dist/config.js +39 -136
  6. package/dist/config.js.map +1 -1
  7. package/dist/lib.d.ts +2 -2
  8. package/dist/lib.js +1 -1
  9. package/dist/lib.js.map +1 -1
  10. package/dist/model-discovery.d.ts +2 -2
  11. package/dist/model-discovery.js +1 -1
  12. package/dist/opencode.d.ts +1 -1
  13. package/dist/opencode.js +1 -1
  14. package/dist/opencode.js.map +1 -1
  15. package/dist/plugin.d.ts +4 -2
  16. package/dist/plugin.js +62 -31
  17. package/dist/plugin.js.map +1 -1
  18. package/dist/scheduler.d.ts +1 -1
  19. package/dist/types.d.ts +1 -7
  20. package/package.json +3 -2
  21. package/dist/logging.d.ts +0 -13
  22. package/dist/logging.js +0 -64
  23. package/dist/logging.js.map +0 -1
  24. package/dist/oauth/browser.d.ts +0 -1
  25. package/dist/oauth/browser.js +0 -33
  26. package/dist/oauth/browser.js.map +0 -1
  27. package/dist/oauth/client.d.ts +0 -56
  28. package/dist/oauth/client.js +0 -424
  29. package/dist/oauth/client.js.map +0 -1
  30. package/dist/oauth/device-code.d.ts +0 -28
  31. package/dist/oauth/device-code.js +0 -247
  32. package/dist/oauth/device-code.js.map +0 -1
  33. package/dist/oauth/discovery.d.ts +0 -8
  34. package/dist/oauth/discovery.js +0 -38
  35. package/dist/oauth/discovery.js.map +0 -1
  36. package/dist/oauth/http-utils.d.ts +0 -33
  37. package/dist/oauth/http-utils.js +0 -118
  38. package/dist/oauth/http-utils.js.map +0 -1
  39. package/dist/oauth/local-callback.d.ts +0 -10
  40. package/dist/oauth/local-callback.js +0 -84
  41. package/dist/oauth/local-callback.js.map +0 -1
  42. package/dist/oauth/pkce.d.ts +0 -5
  43. package/dist/oauth/pkce.js +0 -17
  44. package/dist/oauth/pkce.js.map +0 -1
  45. package/dist/oauth/subject-token.d.ts +0 -20
  46. package/dist/oauth/subject-token.js +0 -81
  47. package/dist/oauth/subject-token.js.map +0 -1
package/dist/plugin.js CHANGED
@@ -1,9 +1,8 @@
1
+ import { createJsonConsoleLogger, TokenRuntime } from "@vymalo/opencode-auth-core/lib";
1
2
  import { FileCacheStore, resolveCacheDir } from "./cache.js";
2
3
  import { validateConfig } from "./config.js";
3
- import { createJsonConsoleLogger } from "./logging.js";
4
4
  import { fetchModels } from "./model-discovery.js";
5
5
  import { diffModels, normalizeModelList } from "./model-normalization.js";
6
- import { OAuthClient } from "./oauth/client.js";
7
6
  import { startScheduler } from "./scheduler.js";
8
7
  export class OAuth2ModelSyncPlugin {
9
8
  configInput;
@@ -21,6 +20,58 @@ export class OAuth2ModelSyncPlugin {
21
20
  this.logger = options.logger ?? createJsonConsoleLogger(this.config.logLevel);
22
21
  this.cacheStore = new FileCacheStore(options.cacheDir ?? resolveCacheDir(this.config.cacheNamespace), this.logger);
23
22
  }
23
+ buildTokenRuntime(serverId) {
24
+ const server = this.requireServerConfig(serverId);
25
+ const runtime = this.runtimeByServer.get(serverId);
26
+ const authConfig = {
27
+ id: server.id,
28
+ issuer: server.issuer,
29
+ clientId: server.clientId,
30
+ clientSecret: server.clientSecret,
31
+ scopes: server.scopes,
32
+ authorizationEndpoint: server.authorizationEndpoint,
33
+ tokenEndpoint: server.tokenEndpoint,
34
+ deviceAuthorizationEndpoint: server.deviceAuthorizationEndpoint,
35
+ jwksUri: server.jwksUri,
36
+ redirectPort: server.redirectPort,
37
+ authFlow: server.authFlow,
38
+ pkce: server.pkce,
39
+ subjectTokenSource: server.subjectTokenSource,
40
+ tokenExchangeAudience: server.tokenExchangeAudience
41
+ };
42
+ return new TokenRuntime(server.id, authConfig, {
43
+ logger: this.logger,
44
+ fetchImpl: this.options.fetchImpl,
45
+ timeoutMs: this.config.httpTimeoutMs,
46
+ onAuthorizationUrl: this.options.onAuthorizationUrl,
47
+ tokenExpirySkewMs: this.config.tokenExpirySkewMs,
48
+ // Delegate the token cache to oauth2's fused CachedServerState so the
49
+ // on-disk location and shape are preserved (tests + existing installs).
50
+ getCached: async () => runtime?.state.token,
51
+ setCached: async (token) => {
52
+ if (!runtime) {
53
+ return;
54
+ }
55
+ const next = {
56
+ ...runtime.state,
57
+ updatedAt: Date.now(),
58
+ token
59
+ };
60
+ await this.cacheStore.saveServerState(next);
61
+ runtime.state = next;
62
+ }
63
+ });
64
+ }
65
+ ensureTokenRuntime(serverId) {
66
+ const runtime = this.runtimeByServer.get(serverId);
67
+ if (!runtime) {
68
+ throw new Error(`runtime not initialized for server: ${serverId}`);
69
+ }
70
+ if (!runtime.tokenRuntime) {
71
+ runtime.tokenRuntime = this.buildTokenRuntime(serverId);
72
+ }
73
+ return runtime.tokenRuntime;
74
+ }
24
75
  async initialize() {
25
76
  if (this.initialized) {
26
77
  return;
@@ -107,7 +158,6 @@ export class OAuth2ModelSyncPlugin {
107
158
  return snapshots;
108
159
  }
109
160
  async syncServer(serverId, options = {}) {
110
- const server = this.requireServerConfig(serverId);
111
161
  const runtime = this.runtimeByServer.get(serverId);
112
162
  if (!runtime) {
113
163
  throw new Error(`runtime not initialized for server: ${serverId}`);
@@ -116,13 +166,7 @@ export class OAuth2ModelSyncPlugin {
116
166
  serverId,
117
167
  interactive: options.interactive !== false
118
168
  });
119
- const oauth = new OAuthClient(server, {
120
- fetchImpl: this.options.fetchImpl,
121
- logger: this.logger,
122
- timeoutMs: this.config.httpTimeoutMs,
123
- onAuthorizationUrl: this.options.onAuthorizationUrl,
124
- tokenExpirySkewMs: this.config.tokenExpirySkewMs
125
- });
169
+ const tokenRuntime = this.ensureTokenRuntime(serverId);
126
170
  const previousState = runtime.state;
127
171
  try {
128
172
  this.logger.trace("oauth2_sync_ensure_token", {
@@ -131,13 +175,13 @@ export class OAuth2ModelSyncPlugin {
131
175
  hadRefreshToken: Boolean(previousState.token?.refreshToken),
132
176
  interactive: options.interactive !== false
133
177
  });
134
- const token = await oauth.ensureToken(previousState.token, { interactive: options.interactive });
178
+ const token = await tokenRuntime.ensure({ interactive: options.interactive });
135
179
  this.logger.trace("oauth2_model_discovery_fetch_start", {
136
180
  serverId,
137
- baseURL: server.baseURL,
181
+ baseURL: this.requireServerConfig(serverId).baseURL,
138
182
  tokenChanged: token.accessToken !== previousState.token?.accessToken
139
183
  });
140
- const rawModels = await fetchModels(server.baseURL, token, {
184
+ const rawModels = await fetchModels(this.requireServerConfig(serverId).baseURL, token, {
141
185
  fetchImpl: this.options.fetchImpl,
142
186
  timeoutMs: this.config.httpTimeoutMs,
143
187
  logger: this.logger
@@ -146,7 +190,7 @@ export class OAuth2ModelSyncPlugin {
146
190
  serverId,
147
191
  rawModelCount: rawModels.length
148
192
  });
149
- const normalizedModels = normalizeModelList(rawModels, server.nameOverrides);
193
+ const normalizedModels = normalizeModelList(rawModels, this.requireServerConfig(serverId).nameOverrides);
150
194
  const diff = diffModels(previousState.models, normalizedModels);
151
195
  this.logger.trace("oauth2_model_discovery_normalized", {
152
196
  serverId,
@@ -195,18 +239,11 @@ export class OAuth2ModelSyncPlugin {
195
239
  }
196
240
  }
197
241
  async ensureAccessToken(serverId, options = {}) {
198
- const server = this.requireServerConfig(serverId);
199
242
  const runtime = this.runtimeByServer.get(serverId);
200
243
  if (!runtime) {
201
244
  throw new Error(`runtime not initialized for server: ${serverId}`);
202
245
  }
203
- const oauth = new OAuthClient(server, {
204
- fetchImpl: this.options.fetchImpl,
205
- logger: this.logger,
206
- timeoutMs: this.config.httpTimeoutMs,
207
- onAuthorizationUrl: this.options.onAuthorizationUrl,
208
- tokenExpirySkewMs: this.config.tokenExpirySkewMs
209
- });
246
+ const tokenRuntime = this.ensureTokenRuntime(serverId);
210
247
  // `interactive` is forwarded so config-time callers can ask for a
211
248
  // refresh-only ensure (`interactive: false`): a valid cached token is
212
249
  // returned as-is, a stale-but-refreshable one is refreshed, and anything
@@ -218,20 +255,14 @@ export class OAuth2ModelSyncPlugin {
218
255
  hadRefreshToken: Boolean(runtime.state.token?.refreshToken),
219
256
  interactive: options.interactive !== false
220
257
  });
221
- const token = await oauth.ensureToken(runtime.state.token, { interactive: options.interactive });
222
- if (token.accessToken !== runtime.state.token?.accessToken) {
258
+ const previousToken = runtime.state.token;
259
+ const token = await tokenRuntime.ensure({ interactive: options.interactive });
260
+ if (token.accessToken !== previousToken?.accessToken) {
223
261
  this.logger.trace("oauth2_ensure_access_token_refreshed", {
224
262
  serverId,
225
263
  present: Boolean(token.accessToken),
226
264
  expiresInSeconds: typeof token.expiresAt === "number" ? Math.max(0, Math.round((token.expiresAt - Date.now()) / 1e3)) : undefined
227
265
  });
228
- const nextState = {
229
- ...runtime.state,
230
- updatedAt: Date.now(),
231
- token
232
- };
233
- await this.cacheStore.saveServerState(nextState);
234
- runtime.state = nextState;
235
266
  } else {
236
267
  this.logger.trace("oauth2_ensure_access_token_reused_cached", {
237
268
  serverId,
@@ -1 +1 @@
1
- {"mappings":"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","names":[],"sources":["../src/plugin.ts"],"version":3,"file":"plugin.js","sourceRoot":""}
1
+ {"mappings":"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","names":[],"sources":["../src/plugin.ts"],"version":3,"file":"plugin.js","sourceRoot":""}
@@ -1,4 +1,4 @@
1
- import type { Logger } from "./logging.js";
1
+ import type { Logger } from "@vymalo/opencode-auth-core/lib";
2
2
  export interface SchedulerHandle {
3
3
  stop(): void;
4
4
  }
package/dist/types.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { TokenSet } from "@vymalo/opencode-auth-core/lib";
1
2
  export interface RawModel {
2
3
  id: string;
3
4
  [key: string]: unknown;
@@ -15,13 +16,6 @@ export interface ModelDiff {
15
16
  after: string;
16
17
  }>;
17
18
  }
18
- export interface TokenSet {
19
- accessToken: string;
20
- tokenType: string;
21
- refreshToken?: string;
22
- scope?: string;
23
- expiresAt?: number;
24
- }
25
19
  export interface CachedServerState {
26
20
  serverId: string;
27
21
  updatedAt: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vymalo/opencode-oauth2",
3
- "version": "0.14.0",
3
+ "version": "0.15.0",
4
4
  "description": "OpenCode plugin for OAuth2/OIDC-secured, OpenAI-compatible model providers with periodic model sync.",
5
5
  "license": "MIT",
6
6
  "author": "vymalo contributors",
@@ -47,7 +47,8 @@
47
47
  "access": "public"
48
48
  },
49
49
  "dependencies": {
50
- "@opencode-ai/plugin": "1.15.10"
50
+ "@opencode-ai/plugin": "1.15.10",
51
+ "@vymalo/opencode-auth-core": "0.15.0"
51
52
  },
52
53
  "devDependencies": {
53
54
  "@ai-sdk/openai": "^2.0.106",
package/dist/logging.d.ts DELETED
@@ -1,13 +0,0 @@
1
- export type LogLevel = "trace" | "debug" | "info" | "warn" | "error";
2
- export declare const LOG_LEVEL_PRIORITY: Record<LogLevel, number>;
3
- export interface LogFields {
4
- [key: string]: unknown;
5
- }
6
- export interface Logger {
7
- trace(event: string, fields?: LogFields): void;
8
- debug(event: string, fields?: LogFields): void;
9
- info(event: string, fields?: LogFields): void;
10
- warn(event: string, fields?: LogFields): void;
11
- error(event: string, fields?: LogFields): void;
12
- }
13
- export declare function createJsonConsoleLogger(minLevel?: LogLevel): Logger;
package/dist/logging.js DELETED
@@ -1,64 +0,0 @@
1
- export const LOG_LEVEL_PRIORITY = {
2
- trace: 5,
3
- debug: 10,
4
- info: 20,
5
- warn: 30,
6
- error: 40
7
- };
8
- function redactFields(fields) {
9
- if (!fields) {
10
- return undefined;
11
- }
12
- const redacted = {};
13
- for (const [key, value] of Object.entries(fields)) {
14
- if (/token|secret|password/i.test(key)) {
15
- redacted[key] = "[redacted]";
16
- continue;
17
- }
18
- redacted[key] = value;
19
- }
20
- return redacted;
21
- }
22
- export function createJsonConsoleLogger(minLevel = "info") {
23
- const minPriority = LOG_LEVEL_PRIORITY[minLevel];
24
- const log = (level, event, fields) => {
25
- if (LOG_LEVEL_PRIORITY[level] < minPriority) {
26
- return;
27
- }
28
- const payload = {
29
- ts: new Date().toISOString(),
30
- level,
31
- event,
32
- ...redactFields(fields) ?? {}
33
- };
34
- const line = JSON.stringify(payload);
35
- if (level === "error") {
36
- console.error(line);
37
- return;
38
- }
39
- if (level === "warn") {
40
- console.warn(line);
41
- return;
42
- }
43
- console.log(line);
44
- };
45
- return {
46
- trace(event, fields) {
47
- log("trace", event, fields);
48
- },
49
- debug(event, fields) {
50
- log("debug", event, fields);
51
- },
52
- info(event, fields) {
53
- log("info", event, fields);
54
- },
55
- warn(event, fields) {
56
- log("warn", event, fields);
57
- },
58
- error(event, fields) {
59
- log("error", event, fields);
60
- }
61
- };
62
- }
63
-
64
- //# sourceMappingURL=logging.js.map
@@ -1 +0,0 @@
1
- {"mappings":"AAEA,OAAO,MAAM,qBAA+C;CAC1D,OAAO;CACP,OAAO;CACP,MAAM;CACN,MAAM;CACN,OAAO;AACT;AAcA,SAAS,aAAa,QAA2C;CAC/D,IAAI,CAAC,QAAQ;EACX,OAAO;CACT;CAEA,MAAM,WAAsB,CAAC;CAC7B,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,MAAM,GAAG;EACjD,IAAI,yBAAyB,KAAK,GAAG,GAAG;GACtC,SAAS,OAAO;GAChB;EACF;EACA,SAAS,OAAO;CAClB;CAEA,OAAO;AACT;AAEA,OAAO,SAAS,wBAAwB,WAAqB,QAAgB;CAC3E,MAAM,cAAc,mBAAmB;CAEvC,MAAM,OAAO,OAAiB,OAAe,WAA6B;EACxE,IAAI,mBAAmB,SAAS,aAAa;GAC3C;EACF;EAEA,MAAM,UAAU;GACd,IAAI,IAAI,KAAK,CAAC,CAAC,YAAY;GAC3B;GACA;GACA,GAAI,aAAa,MAAM,KAAK,CAAC;EAC/B;EAEA,MAAM,OAAO,KAAK,UAAU,OAAO;EACnC,IAAI,UAAU,SAAS;GACrB,QAAQ,MAAM,IAAI;GAClB;EACF;EAEA,IAAI,UAAU,QAAQ;GACpB,QAAQ,KAAK,IAAI;GACjB;EACF;EAEA,QAAQ,IAAI,IAAI;CAClB;CAEA,OAAO;EACL,MAAM,OAAO,QAAQ;GACnB,IAAI,SAAS,OAAO,MAAM;EAC5B;EACA,MAAM,OAAO,QAAQ;GACnB,IAAI,SAAS,OAAO,MAAM;EAC5B;EACA,KAAK,OAAO,QAAQ;GAClB,IAAI,QAAQ,OAAO,MAAM;EAC3B;EACA,KAAK,OAAO,QAAQ;GAClB,IAAI,QAAQ,OAAO,MAAM;EAC3B;EACA,MAAM,OAAO,QAAQ;GACnB,IAAI,SAAS,OAAO,MAAM;EAC5B;CACF;AACF","names":[],"sources":["../src/logging.ts"],"version":3,"file":"logging.js","sourceRoot":""}
@@ -1 +0,0 @@
1
- export declare function openExternalUrl(url: string): Promise<void>;
@@ -1,33 +0,0 @@
1
- import { spawn } from "node:child_process";
2
- export async function openExternalUrl(url) {
3
- await new Promise((resolve, reject) => {
4
- let command;
5
- let args;
6
- if (process.platform === "darwin") {
7
- command = "open";
8
- args = [url];
9
- } else if (process.platform === "win32") {
10
- command = "cmd";
11
- args = [
12
- "/c",
13
- "start",
14
- "",
15
- url
16
- ];
17
- } else {
18
- command = "xdg-open";
19
- args = [url];
20
- }
21
- const child = spawn(command, args, {
22
- stdio: "ignore",
23
- detached: true
24
- });
25
- child.once("error", reject);
26
- child.once("spawn", () => {
27
- child.unref();
28
- resolve();
29
- });
30
- });
31
- }
32
-
33
- //# sourceMappingURL=browser.js.map
@@ -1 +0,0 @@
1
- {"mappings":"AAAA,SAAS,aAAa;AAEtB,OAAO,eAAe,gBAAgB,KAA4B;CAChE,MAAM,IAAI,SAAe,SAAS,WAAW;EAC3C,IAAI;EACJ,IAAI;EAEJ,IAAI,QAAQ,aAAa,UAAU;GACjC,UAAU;GACV,OAAO,CAAC,GAAG;EACb,OAAO,IAAI,QAAQ,aAAa,SAAS;GACvC,UAAU;GACV,OAAO;IAAC;IAAM;IAAS;IAAI;GAAG;EAChC,OAAO;GACL,UAAU;GACV,OAAO,CAAC,GAAG;EACb;EAEA,MAAM,QAAQ,MAAM,SAAS,MAAM;GACjC,OAAO;GACP,UAAU;EACZ,CAAC;EAED,MAAM,KAAK,SAAS,MAAM;EAC1B,MAAM,KAAK,eAAe;GACxB,MAAM,MAAM;GACZ,QAAQ;EACV,CAAC;CACH,CAAC;AACH","names":[],"sources":["../../src/oauth/browser.ts"],"version":3,"file":"browser.js","sourceRoot":""}
@@ -1,56 +0,0 @@
1
- import type { OAuthServerConfig } from "../config.js";
2
- import type { Logger } from "../logging.js";
3
- import type { TokenSet } from "../types.js";
4
- interface OAuthClientOptions {
5
- fetchImpl?: typeof fetch;
6
- logger: Logger;
7
- timeoutMs: number;
8
- onAuthorizationUrl?: (url: string) => Promise<void> | void;
9
- tokenExpirySkewMs?: number;
10
- }
11
- export declare function toTokenSet(payload: Record<string, unknown>, options?: {
12
- fallbackRefreshToken?: string;
13
- requireRefreshToken?: boolean;
14
- }): TokenSet;
15
- export declare class OAuthClient {
16
- private readonly server;
17
- private readonly fetchImpl;
18
- private readonly logger;
19
- private readonly timeoutMs;
20
- private readonly onAuthorizationUrl?;
21
- private readonly tokenExpirySkewMs;
22
- constructor(server: OAuthServerConfig, options: OAuthClientOptions);
23
- private isTokenValid;
24
- /**
25
- * POST to a token endpoint with an AbortController-backed timeout. Without
26
- * this, a stalled IdP would block the warmup path indefinitely (the plugin
27
- * runs token requests at config-hook time for cached/client_credentials
28
- * paths).
29
- */
30
- private postWithTimeout;
31
- ensureToken(current?: TokenSet, options?: {
32
- interactive?: boolean;
33
- }): Promise<TokenSet>;
34
- private loginClientCredentials;
35
- private loginJwtBearer;
36
- private loginTokenExchange;
37
- /**
38
- * Shared driver for jwt_bearer and token_exchange. Both grants:
39
- * - resolve a platform-supplied JWT from `subjectTokenSource`
40
- * - POST it to the token endpoint with grant-specific form fields
41
- * - get back an access token (refresh token is NOT expected for either)
42
- */
43
- private postFederatedGrant;
44
- /**
45
- * Resolve endpoints for the configured flow. Skips OIDC discovery entirely
46
- * when the explicit endpoints needed for the flow are all present in config
47
- * — discovery is unavailable on RFC 8414-only servers and on Keycloak
48
- * realms where the well-known doc is locked down.
49
- */
50
- private resolveEndpoints;
51
- private hasExplicitEndpointsForFlow;
52
- private refreshToken;
53
- private loginDeviceCode;
54
- private loginInteractive;
55
- }
56
- export {};