@vymalo/opencode-oauth2 0.11.0 → 0.14.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 (57) hide show
  1. package/dist/cache.d.ts +6 -6
  2. package/dist/cache.js +100 -104
  3. package/dist/cache.js.map +1 -1
  4. package/dist/config.d.ts +107 -107
  5. package/dist/config.js +173 -182
  6. package/dist/config.js.map +1 -1
  7. package/dist/index.js +1 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/lib.js +1 -0
  10. package/dist/lib.js.map +1 -1
  11. package/dist/logging.d.ts +6 -6
  12. package/dist/logging.js +57 -56
  13. package/dist/logging.js.map +1 -1
  14. package/dist/model-discovery.d.ts +3 -3
  15. package/dist/model-discovery.js +61 -66
  16. package/dist/model-discovery.js.map +1 -1
  17. package/dist/model-normalization.js +84 -73
  18. package/dist/model-normalization.js.map +1 -1
  19. package/dist/oauth/browser.js +29 -25
  20. package/dist/oauth/browser.js.map +1 -1
  21. package/dist/oauth/client.d.ts +46 -46
  22. package/dist/oauth/client.js +411 -430
  23. package/dist/oauth/client.js.map +1 -1
  24. package/dist/oauth/device-code.d.ts +23 -23
  25. package/dist/oauth/device-code.js +225 -235
  26. package/dist/oauth/device-code.js.map +1 -1
  27. package/dist/oauth/discovery.d.ts +5 -5
  28. package/dist/oauth/discovery.js +34 -34
  29. package/dist/oauth/discovery.js.map +1 -1
  30. package/dist/oauth/http-utils.d.ts +27 -27
  31. package/dist/oauth/http-utils.js +96 -107
  32. package/dist/oauth/http-utils.js.map +1 -1
  33. package/dist/oauth/local-callback.d.ts +5 -5
  34. package/dist/oauth/local-callback.js +76 -74
  35. package/dist/oauth/local-callback.js.map +1 -1
  36. package/dist/oauth/pkce.d.ts +2 -2
  37. package/dist/oauth/pkce.js +9 -5
  38. package/dist/oauth/pkce.js.map +1 -1
  39. package/dist/oauth/subject-token.d.ts +15 -15
  40. package/dist/oauth/subject-token.js +68 -73
  41. package/dist/oauth/subject-token.js.map +1 -1
  42. package/dist/opencode.d.ts +15 -15
  43. package/dist/opencode.js +477 -497
  44. package/dist/opencode.js.map +1 -1
  45. package/dist/plugin.d.ts +39 -39
  46. package/dist/plugin.js +270 -277
  47. package/dist/plugin.js.map +1 -1
  48. package/dist/responses-repair.d.ts +12 -35
  49. package/dist/responses-repair.js +119 -125
  50. package/dist/responses-repair.js.map +1 -1
  51. package/dist/scheduler.d.ts +5 -5
  52. package/dist/scheduler.js +43 -45
  53. package/dist/scheduler.js.map +1 -1
  54. package/dist/types.d.ts +25 -25
  55. package/dist/types.js +1 -0
  56. package/dist/types.js.map +1 -1
  57. package/package.json +3 -3
package/dist/plugin.js CHANGED
@@ -6,282 +6,275 @@ import { diffModels, normalizeModelList } from "./model-normalization.js";
6
6
  import { OAuthClient } from "./oauth/client.js";
7
7
  import { startScheduler } from "./scheduler.js";
8
8
  export class OAuth2ModelSyncPlugin {
9
- configInput;
10
- options;
11
- logger;
12
- config;
13
- cacheStore;
14
- runtimeByServer = new Map();
15
- initialized = false;
16
- started = false;
17
- constructor(configInput, options = {}) {
18
- this.configInput = configInput;
19
- this.options = options;
20
- this.config = validateConfig(this.configInput);
21
- this.logger = options.logger ?? createJsonConsoleLogger(this.config.logLevel);
22
- this.cacheStore = new FileCacheStore(options.cacheDir ?? resolveCacheDir(this.config.cacheNamespace), this.logger);
23
- }
24
- async initialize() {
25
- if (this.initialized) {
26
- return;
27
- }
28
- await this.cacheStore.ensureReady();
29
- for (const server of this.config.servers) {
30
- const cached = await this.cacheStore.loadServerState(server.id);
31
- this.logger.trace("oauth2_cache_load", {
32
- serverId: server.id,
33
- hit: Boolean(cached),
34
- cachedModelCount: cached?.models.length ?? 0,
35
- hasCachedToken: Boolean(cached?.token)
36
- });
37
- const initialState = cached ?? {
38
- serverId: server.id,
39
- updatedAt: Date.now(),
40
- models: [],
41
- rawModels: []
42
- };
43
- this.runtimeByServer.set(server.id, { state: initialState });
44
- }
45
- this.logger.debug("plugin_initialized", {
46
- serverCount: this.config.servers.length
47
- });
48
- this.initialized = true;
49
- }
50
- async start(options = {}) {
51
- if (this.started) {
52
- return;
53
- }
54
- await this.initialize();
55
- const warmup = options.warmup ?? true;
56
- // Warmup interactivity tracks the host process: an attached TTY (a real
57
- // terminal) means a user can complete an interactive flow, so warmup
58
- // allows browser/device-code paths if needed for first-time provider
59
- // setup. Without a TTY (CI, daemonized run, piped stdin) we stay
60
- // non-interactive so startup never hangs on a callback that will never
61
- // arrive. Callers can override explicitly via `interactive`.
62
- const interactiveWarmup = options.interactive ?? Boolean(process.stdin?.isTTY && process.stdout?.isTTY);
63
- this.logger.trace("oauth2_start", {
64
- serverCount: this.config.servers.length,
65
- warmup,
66
- interactiveWarmup
67
- });
68
- for (const server of this.config.servers) {
69
- if (warmup) {
70
- try {
71
- await this.syncServer(server.id, { interactive: interactiveWarmup });
72
- }
73
- catch (error) {
74
- this.logger.warn("sync_startup_failed", {
75
- serverId: server.id,
76
- error: error instanceof Error ? error.message : String(error)
77
- });
78
- }
79
- }
80
- this.logger.trace("oauth2_scheduler_registered", {
81
- serverId: server.id,
82
- intervalMinutes: server.syncIntervalMinutes
83
- });
84
- const handle = startScheduler({
85
- intervalMs: Math.round(server.syncIntervalMinutes * 60_000),
86
- logger: this.logger,
87
- taskName: `sync:${server.id}`,
88
- run: async () => {
89
- await this.syncServer(server.id);
90
- }
91
- });
92
- const runtime = this.runtimeByServer.get(server.id);
93
- if (runtime) {
94
- runtime.scheduler = handle;
95
- }
96
- }
97
- this.started = true;
98
- }
99
- stop() {
100
- for (const runtime of this.runtimeByServer.values()) {
101
- runtime.scheduler?.stop();
102
- }
103
- this.started = false;
104
- }
105
- async syncAll() {
106
- const snapshots = [];
107
- for (const server of this.config.servers) {
108
- snapshots.push(await this.syncServer(server.id));
109
- }
110
- return snapshots;
111
- }
112
- async syncServer(serverId, options = {}) {
113
- const server = this.requireServerConfig(serverId);
114
- const runtime = this.runtimeByServer.get(serverId);
115
- if (!runtime) {
116
- throw new Error(`runtime not initialized for server: ${serverId}`);
117
- }
118
- this.logger.debug("sync_start", { serverId, interactive: options.interactive !== false });
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
- });
126
- const previousState = runtime.state;
127
- try {
128
- this.logger.trace("oauth2_sync_ensure_token", {
129
- serverId,
130
- hadCachedToken: Boolean(previousState.token),
131
- hadRefreshToken: Boolean(previousState.token?.refreshToken),
132
- interactive: options.interactive !== false
133
- });
134
- const token = await oauth.ensureToken(previousState.token, {
135
- interactive: options.interactive
136
- });
137
- this.logger.trace("oauth2_model_discovery_fetch_start", {
138
- serverId,
139
- baseURL: server.baseURL,
140
- tokenChanged: token.accessToken !== previousState.token?.accessToken
141
- });
142
- const rawModels = await fetchModels(server.baseURL, token, {
143
- fetchImpl: this.options.fetchImpl,
144
- timeoutMs: this.config.httpTimeoutMs,
145
- logger: this.logger
146
- });
147
- this.logger.trace("oauth2_model_discovery_fetch_finished", {
148
- serverId,
149
- rawModelCount: rawModels.length
150
- });
151
- const normalizedModels = normalizeModelList(rawModels, server.nameOverrides);
152
- const diff = diffModels(previousState.models, normalizedModels);
153
- this.logger.trace("oauth2_model_discovery_normalized", {
154
- serverId,
155
- modelCount: normalizedModels.length,
156
- added: diff.added.length,
157
- removed: diff.removed.length,
158
- renamed: diff.renamed.length
159
- });
160
- const nextState = {
161
- ...previousState,
162
- updatedAt: Date.now(),
163
- lastSyncAt: Date.now(),
164
- token,
165
- rawModels,
166
- models: normalizedModels
167
- };
168
- await this.cacheStore.saveServerState(nextState);
169
- runtime.state = nextState;
170
- // Stay quiet on the steady-state happy path (no model changes), but
171
- // surface at `info` when the model set actually shifted so a clean
172
- // startup is silent while a meaningful change is still visible.
173
- const changed = diff.added.length + diff.removed.length + diff.renamed.length > 0;
174
- this.logger[changed ? "info" : "debug"]("sync_success", {
175
- serverId,
176
- modelCount: normalizedModels.length,
177
- added: diff.added.length,
178
- removed: diff.removed.length,
179
- renamed: diff.renamed.length
180
- });
181
- return {
182
- serverId,
183
- models: normalizedModels,
184
- lastSyncAt: nextState.lastSyncAt
185
- };
186
- }
187
- catch (error) {
188
- this.logger.error("sync_failed", {
189
- serverId,
190
- error: error instanceof Error ? error.message : String(error)
191
- });
192
- // Keep last-known-good state by not mutating runtime state.
193
- return {
194
- serverId,
195
- models: previousState.models,
196
- lastSyncAt: previousState.lastSyncAt
197
- };
198
- }
199
- }
200
- async ensureAccessToken(serverId, options = {}) {
201
- const server = this.requireServerConfig(serverId);
202
- const runtime = this.runtimeByServer.get(serverId);
203
- if (!runtime) {
204
- throw new Error(`runtime not initialized for server: ${serverId}`);
205
- }
206
- const oauth = new OAuthClient(server, {
207
- fetchImpl: this.options.fetchImpl,
208
- logger: this.logger,
209
- timeoutMs: this.config.httpTimeoutMs,
210
- onAuthorizationUrl: this.options.onAuthorizationUrl,
211
- tokenExpirySkewMs: this.config.tokenExpirySkewMs
212
- });
213
- // `interactive` is forwarded so config-time callers can ask for a
214
- // refresh-only ensure (`interactive: false`): a valid cached token is
215
- // returned as-is, a stale-but-refreshable one is refreshed, and anything
216
- // that would need a browser / device-code prompt throws instead of
217
- // blocking. The per-chat path leaves it unset so a real login can proceed.
218
- this.logger.trace("oauth2_ensure_access_token_start", {
219
- serverId,
220
- hadCachedToken: Boolean(runtime.state.token),
221
- hadRefreshToken: Boolean(runtime.state.token?.refreshToken),
222
- interactive: options.interactive !== false
223
- });
224
- const token = await oauth.ensureToken(runtime.state.token, {
225
- interactive: options.interactive
226
- });
227
- if (token.accessToken !== runtime.state.token?.accessToken) {
228
- this.logger.trace("oauth2_ensure_access_token_refreshed", {
229
- serverId,
230
- present: Boolean(token.accessToken),
231
- expiresInSeconds: typeof token.expiresAt === "number"
232
- ? Math.max(0, Math.round((token.expiresAt - Date.now()) / 1000))
233
- : undefined
234
- });
235
- const nextState = {
236
- ...runtime.state,
237
- updatedAt: Date.now(),
238
- token
239
- };
240
- await this.cacheStore.saveServerState(nextState);
241
- runtime.state = nextState;
242
- }
243
- else {
244
- this.logger.trace("oauth2_ensure_access_token_reused_cached", {
245
- serverId,
246
- present: Boolean(token.accessToken)
247
- });
248
- }
249
- return token;
250
- }
251
- async ensureServerReady(serverId) {
252
- const runtime = this.runtimeByServer.get(serverId);
253
- if (!runtime) {
254
- throw new Error(`runtime not initialized for server: ${serverId}`);
255
- }
256
- if (!runtime.state.lastSyncAt || runtime.state.models.length === 0) {
257
- return this.syncServer(serverId);
258
- }
259
- return {
260
- serverId,
261
- models: runtime.state.models,
262
- lastSyncAt: runtime.state.lastSyncAt
263
- };
264
- }
265
- getServerModels(serverId) {
266
- const runtime = this.runtimeByServer.get(serverId);
267
- if (!runtime) {
268
- throw new Error(`runtime not initialized for server: ${serverId}`);
269
- }
270
- return [...runtime.state.models];
271
- }
272
- getProviderModelMap(serverId) {
273
- const models = this.getServerModels(serverId);
274
- return Object.fromEntries(models.map((model) => [model.id, { name: model.displayName }]));
275
- }
276
- getCachedToken(serverId) {
277
- return this.runtimeByServer.get(serverId)?.state.token;
278
- }
279
- requireServerConfig(serverId) {
280
- const server = this.config.servers.find((item) => item.id === serverId);
281
- if (!server) {
282
- throw new Error(`unknown server id: ${serverId}`);
283
- }
284
- return server;
285
- }
9
+ configInput;
10
+ options;
11
+ logger;
12
+ config;
13
+ cacheStore;
14
+ runtimeByServer = new Map();
15
+ initialized = false;
16
+ started = false;
17
+ constructor(configInput, options = {}) {
18
+ this.configInput = configInput;
19
+ this.options = options;
20
+ this.config = validateConfig(this.configInput);
21
+ this.logger = options.logger ?? createJsonConsoleLogger(this.config.logLevel);
22
+ this.cacheStore = new FileCacheStore(options.cacheDir ?? resolveCacheDir(this.config.cacheNamespace), this.logger);
23
+ }
24
+ async initialize() {
25
+ if (this.initialized) {
26
+ return;
27
+ }
28
+ await this.cacheStore.ensureReady();
29
+ for (const server of this.config.servers) {
30
+ const cached = await this.cacheStore.loadServerState(server.id);
31
+ this.logger.trace("oauth2_cache_load", {
32
+ serverId: server.id,
33
+ hit: Boolean(cached),
34
+ cachedModelCount: cached?.models.length ?? 0,
35
+ hasCachedToken: Boolean(cached?.token)
36
+ });
37
+ const initialState = cached ?? {
38
+ serverId: server.id,
39
+ updatedAt: Date.now(),
40
+ models: [],
41
+ rawModels: []
42
+ };
43
+ this.runtimeByServer.set(server.id, { state: initialState });
44
+ }
45
+ this.logger.debug("plugin_initialized", { serverCount: this.config.servers.length });
46
+ this.initialized = true;
47
+ }
48
+ async start(options = {}) {
49
+ if (this.started) {
50
+ return;
51
+ }
52
+ await this.initialize();
53
+ const warmup = options.warmup ?? true;
54
+ // Warmup interactivity tracks the host process: an attached TTY (a real
55
+ // terminal) means a user can complete an interactive flow, so warmup
56
+ // allows browser/device-code paths if needed for first-time provider
57
+ // setup. Without a TTY (CI, daemonized run, piped stdin) we stay
58
+ // non-interactive so startup never hangs on a callback that will never
59
+ // arrive. Callers can override explicitly via `interactive`.
60
+ const interactiveWarmup = options.interactive ?? Boolean(process.stdin?.isTTY && process.stdout?.isTTY);
61
+ this.logger.trace("oauth2_start", {
62
+ serverCount: this.config.servers.length,
63
+ warmup,
64
+ interactiveWarmup
65
+ });
66
+ for (const server of this.config.servers) {
67
+ if (warmup) {
68
+ try {
69
+ await this.syncServer(server.id, { interactive: interactiveWarmup });
70
+ } catch (error) {
71
+ this.logger.warn("sync_startup_failed", {
72
+ serverId: server.id,
73
+ error: error instanceof Error ? error.message : String(error)
74
+ });
75
+ }
76
+ }
77
+ this.logger.trace("oauth2_scheduler_registered", {
78
+ serverId: server.id,
79
+ intervalMinutes: server.syncIntervalMinutes
80
+ });
81
+ const handle = startScheduler({
82
+ intervalMs: Math.round(server.syncIntervalMinutes * 6e4),
83
+ logger: this.logger,
84
+ taskName: `sync:${server.id}`,
85
+ run: async () => {
86
+ await this.syncServer(server.id);
87
+ }
88
+ });
89
+ const runtime = this.runtimeByServer.get(server.id);
90
+ if (runtime) {
91
+ runtime.scheduler = handle;
92
+ }
93
+ }
94
+ this.started = true;
95
+ }
96
+ stop() {
97
+ for (const runtime of this.runtimeByServer.values()) {
98
+ runtime.scheduler?.stop();
99
+ }
100
+ this.started = false;
101
+ }
102
+ async syncAll() {
103
+ const snapshots = [];
104
+ for (const server of this.config.servers) {
105
+ snapshots.push(await this.syncServer(server.id));
106
+ }
107
+ return snapshots;
108
+ }
109
+ async syncServer(serverId, options = {}) {
110
+ const server = this.requireServerConfig(serverId);
111
+ const runtime = this.runtimeByServer.get(serverId);
112
+ if (!runtime) {
113
+ throw new Error(`runtime not initialized for server: ${serverId}`);
114
+ }
115
+ this.logger.debug("sync_start", {
116
+ serverId,
117
+ interactive: options.interactive !== false
118
+ });
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
+ });
126
+ const previousState = runtime.state;
127
+ try {
128
+ this.logger.trace("oauth2_sync_ensure_token", {
129
+ serverId,
130
+ hadCachedToken: Boolean(previousState.token),
131
+ hadRefreshToken: Boolean(previousState.token?.refreshToken),
132
+ interactive: options.interactive !== false
133
+ });
134
+ const token = await oauth.ensureToken(previousState.token, { interactive: options.interactive });
135
+ this.logger.trace("oauth2_model_discovery_fetch_start", {
136
+ serverId,
137
+ baseURL: server.baseURL,
138
+ tokenChanged: token.accessToken !== previousState.token?.accessToken
139
+ });
140
+ const rawModels = await fetchModels(server.baseURL, token, {
141
+ fetchImpl: this.options.fetchImpl,
142
+ timeoutMs: this.config.httpTimeoutMs,
143
+ logger: this.logger
144
+ });
145
+ this.logger.trace("oauth2_model_discovery_fetch_finished", {
146
+ serverId,
147
+ rawModelCount: rawModels.length
148
+ });
149
+ const normalizedModels = normalizeModelList(rawModels, server.nameOverrides);
150
+ const diff = diffModels(previousState.models, normalizedModels);
151
+ this.logger.trace("oauth2_model_discovery_normalized", {
152
+ serverId,
153
+ modelCount: normalizedModels.length,
154
+ added: diff.added.length,
155
+ removed: diff.removed.length,
156
+ renamed: diff.renamed.length
157
+ });
158
+ const nextState = {
159
+ ...previousState,
160
+ updatedAt: Date.now(),
161
+ lastSyncAt: Date.now(),
162
+ token,
163
+ rawModels,
164
+ models: normalizedModels
165
+ };
166
+ await this.cacheStore.saveServerState(nextState);
167
+ runtime.state = nextState;
168
+ // Stay quiet on the steady-state happy path (no model changes), but
169
+ // surface at `info` when the model set actually shifted so a clean
170
+ // startup is silent while a meaningful change is still visible.
171
+ const changed = diff.added.length + diff.removed.length + diff.renamed.length > 0;
172
+ this.logger[changed ? "info" : "debug"]("sync_success", {
173
+ serverId,
174
+ modelCount: normalizedModels.length,
175
+ added: diff.added.length,
176
+ removed: diff.removed.length,
177
+ renamed: diff.renamed.length
178
+ });
179
+ return {
180
+ serverId,
181
+ models: normalizedModels,
182
+ lastSyncAt: nextState.lastSyncAt
183
+ };
184
+ } catch (error) {
185
+ this.logger.error("sync_failed", {
186
+ serverId,
187
+ error: error instanceof Error ? error.message : String(error)
188
+ });
189
+ // Keep last-known-good state by not mutating runtime state.
190
+ return {
191
+ serverId,
192
+ models: previousState.models,
193
+ lastSyncAt: previousState.lastSyncAt
194
+ };
195
+ }
196
+ }
197
+ async ensureAccessToken(serverId, options = {}) {
198
+ const server = this.requireServerConfig(serverId);
199
+ const runtime = this.runtimeByServer.get(serverId);
200
+ if (!runtime) {
201
+ throw new Error(`runtime not initialized for server: ${serverId}`);
202
+ }
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
+ });
210
+ // `interactive` is forwarded so config-time callers can ask for a
211
+ // refresh-only ensure (`interactive: false`): a valid cached token is
212
+ // returned as-is, a stale-but-refreshable one is refreshed, and anything
213
+ // that would need a browser / device-code prompt throws instead of
214
+ // blocking. The per-chat path leaves it unset so a real login can proceed.
215
+ this.logger.trace("oauth2_ensure_access_token_start", {
216
+ serverId,
217
+ hadCachedToken: Boolean(runtime.state.token),
218
+ hadRefreshToken: Boolean(runtime.state.token?.refreshToken),
219
+ interactive: options.interactive !== false
220
+ });
221
+ const token = await oauth.ensureToken(runtime.state.token, { interactive: options.interactive });
222
+ if (token.accessToken !== runtime.state.token?.accessToken) {
223
+ this.logger.trace("oauth2_ensure_access_token_refreshed", {
224
+ serverId,
225
+ present: Boolean(token.accessToken),
226
+ expiresInSeconds: typeof token.expiresAt === "number" ? Math.max(0, Math.round((token.expiresAt - Date.now()) / 1e3)) : undefined
227
+ });
228
+ const nextState = {
229
+ ...runtime.state,
230
+ updatedAt: Date.now(),
231
+ token
232
+ };
233
+ await this.cacheStore.saveServerState(nextState);
234
+ runtime.state = nextState;
235
+ } else {
236
+ this.logger.trace("oauth2_ensure_access_token_reused_cached", {
237
+ serverId,
238
+ present: Boolean(token.accessToken)
239
+ });
240
+ }
241
+ return token;
242
+ }
243
+ async ensureServerReady(serverId) {
244
+ const runtime = this.runtimeByServer.get(serverId);
245
+ if (!runtime) {
246
+ throw new Error(`runtime not initialized for server: ${serverId}`);
247
+ }
248
+ if (!runtime.state.lastSyncAt || runtime.state.models.length === 0) {
249
+ return this.syncServer(serverId);
250
+ }
251
+ return {
252
+ serverId,
253
+ models: runtime.state.models,
254
+ lastSyncAt: runtime.state.lastSyncAt
255
+ };
256
+ }
257
+ getServerModels(serverId) {
258
+ const runtime = this.runtimeByServer.get(serverId);
259
+ if (!runtime) {
260
+ throw new Error(`runtime not initialized for server: ${serverId}`);
261
+ }
262
+ return [...runtime.state.models];
263
+ }
264
+ getProviderModelMap(serverId) {
265
+ const models = this.getServerModels(serverId);
266
+ return Object.fromEntries(models.map((model) => [model.id, { name: model.displayName }]));
267
+ }
268
+ getCachedToken(serverId) {
269
+ return this.runtimeByServer.get(serverId)?.state.token;
270
+ }
271
+ requireServerConfig(serverId) {
272
+ const server = this.config.servers.find((item) => item.id === serverId);
273
+ if (!server) {
274
+ throw new Error(`unknown server id: ${serverId}`);
275
+ }
276
+ return server;
277
+ }
286
278
  }
279
+
287
280
  //# sourceMappingURL=plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
1
+ {"mappings":"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","names":[],"sources":["../src/plugin.ts"],"version":3,"file":"plugin.js","sourceRoot":""}