@noodleseed/one 0.96.3 → 0.97.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 (106) hide show
  1. package/README.md +2 -1
  2. package/dist/commands/author-loop.d.ts.map +1 -1
  3. package/dist/commands/author-loop.js +7 -1
  4. package/dist/commands/author-loop.js.map +1 -1
  5. package/dist/commands/catalog-data-local-authoring.d.ts.map +1 -1
  6. package/dist/commands/catalog-data-local-authoring.js +2 -2
  7. package/dist/commands/catalog-data-local-authoring.js.map +1 -1
  8. package/dist/deploy.d.ts +5 -0
  9. package/dist/deploy.d.ts.map +1 -1
  10. package/dist/deploy.js +1 -1
  11. package/dist/deploy.js.map +1 -1
  12. package/dist/dev.d.ts +13 -0
  13. package/dist/dev.d.ts.map +1 -1
  14. package/dist/dev.js +116 -7
  15. package/dist/dev.js.map +1 -1
  16. package/dist/devtools-auth-routes.d.ts +4 -0
  17. package/dist/devtools-auth-routes.d.ts.map +1 -0
  18. package/dist/devtools-auth-routes.js +205 -0
  19. package/dist/devtools-auth-routes.js.map +1 -0
  20. package/dist/devtools-auth-session-helpers.d.ts +6 -0
  21. package/dist/devtools-auth-session-helpers.d.ts.map +1 -0
  22. package/dist/devtools-auth-session-helpers.js +19 -0
  23. package/dist/devtools-auth-session-helpers.js.map +1 -0
  24. package/dist/devtools-auth-session.d.ts +35 -0
  25. package/dist/devtools-auth-session.d.ts.map +1 -0
  26. package/dist/devtools-auth-session.js +433 -0
  27. package/dist/devtools-auth-session.js.map +1 -0
  28. package/dist/devtools-auth-types.d.ts +51 -0
  29. package/dist/devtools-auth-types.d.ts.map +1 -0
  30. package/dist/devtools-auth-types.js +16 -0
  31. package/dist/devtools-auth-types.js.map +1 -0
  32. package/dist/devtools-auth-ui.d.ts +6 -0
  33. package/dist/devtools-auth-ui.d.ts.map +1 -0
  34. package/dist/devtools-auth-ui.js +127 -0
  35. package/dist/devtools-auth-ui.js.map +1 -0
  36. package/dist/devtools-delegated-credential.d.ts +10 -0
  37. package/dist/devtools-delegated-credential.d.ts.map +1 -0
  38. package/dist/devtools-delegated-credential.js +32 -0
  39. package/dist/devtools-delegated-credential.js.map +1 -0
  40. package/dist/devtools-firebase-auth.d.ts +55 -0
  41. package/dist/devtools-firebase-auth.d.ts.map +1 -0
  42. package/dist/devtools-firebase-auth.js +237 -0
  43. package/dist/devtools-firebase-auth.js.map +1 -0
  44. package/dist/devtools-harness.d.ts +5 -0
  45. package/dist/devtools-harness.d.ts.map +1 -1
  46. package/dist/devtools-harness.js +60 -21
  47. package/dist/devtools-harness.js.map +1 -1
  48. package/dist/devtools-microsoft-auth.d.ts +42 -0
  49. package/dist/devtools-microsoft-auth.d.ts.map +1 -0
  50. package/dist/devtools-microsoft-auth.js +362 -0
  51. package/dist/devtools-microsoft-auth.js.map +1 -0
  52. package/dist/devtools-microsoft-errors.d.ts +7 -0
  53. package/dist/devtools-microsoft-errors.d.ts.map +1 -0
  54. package/dist/devtools-microsoft-errors.js +60 -0
  55. package/dist/devtools-microsoft-errors.js.map +1 -0
  56. package/dist/devtools-preview.d.ts +15 -13
  57. package/dist/devtools-preview.d.ts.map +1 -1
  58. package/dist/devtools-preview.js +101 -179
  59. package/dist/devtools-preview.js.map +1 -1
  60. package/dist/devtools-rpc-forwarder.d.ts +37 -0
  61. package/dist/devtools-rpc-forwarder.d.ts.map +1 -0
  62. package/dist/devtools-rpc-forwarder.js +251 -0
  63. package/dist/devtools-rpc-forwarder.js.map +1 -0
  64. package/dist/devtools-tool-safety.d.ts +20 -0
  65. package/dist/devtools-tool-safety.d.ts.map +1 -0
  66. package/dist/devtools-tool-safety.js +43 -0
  67. package/dist/devtools-tool-safety.js.map +1 -0
  68. package/dist/preview-session.d.ts.map +1 -1
  69. package/dist/preview-session.js +5 -0
  70. package/dist/preview-session.js.map +1 -1
  71. package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
  72. package/node_modules/@noodle-borg/auth/dist/index.d.ts +1 -0
  73. package/node_modules/@noodle-borg/auth/dist/index.d.ts.map +1 -1
  74. package/node_modules/@noodle-borg/auth/dist/index.js +1 -0
  75. package/node_modules/@noodle-borg/auth/dist/index.js.map +1 -1
  76. package/node_modules/@noodle-borg/auth/dist/mcp-oauth-client.d.ts +56 -0
  77. package/node_modules/@noodle-borg/auth/dist/mcp-oauth-client.d.ts.map +1 -0
  78. package/node_modules/@noodle-borg/auth/dist/mcp-oauth-client.js +367 -0
  79. package/node_modules/@noodle-borg/auth/dist/mcp-oauth-client.js.map +1 -0
  80. package/node_modules/@noodle-borg/service/dist/customer-verifier-boundaries.d.ts +13 -0
  81. package/node_modules/@noodle-borg/service/dist/customer-verifier-boundaries.d.ts.map +1 -0
  82. package/node_modules/@noodle-borg/service/dist/customer-verifier-boundaries.js +71 -0
  83. package/node_modules/@noodle-borg/service/dist/customer-verifier-boundaries.js.map +1 -0
  84. package/node_modules/@noodle-borg/service/dist/customer-verifier.d.ts +1 -1
  85. package/node_modules/@noodle-borg/service/dist/customer-verifier.d.ts.map +1 -1
  86. package/node_modules/@noodle-borg/service/dist/customer-verifier.js +43 -31
  87. package/node_modules/@noodle-borg/service/dist/customer-verifier.js.map +1 -1
  88. package/node_modules/@noodle-borg/service/dist/index.d.ts +3 -1
  89. package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -1
  90. package/node_modules/@noodle-borg/service/dist/index.js +1 -0
  91. package/node_modules/@noodle-borg/service/dist/index.js.map +1 -1
  92. package/node_modules/@noodle-borg/service/dist/local-devtools-delegated-credentials.d.ts +20 -0
  93. package/node_modules/@noodle-borg/service/dist/local-devtools-delegated-credentials.d.ts.map +1 -0
  94. package/node_modules/@noodle-borg/service/dist/local-devtools-delegated-credentials.js +107 -0
  95. package/node_modules/@noodle-borg/service/dist/local-devtools-delegated-credentials.js.map +1 -0
  96. package/node_modules/@noodle-borg/service/dist/oauth/microsoft.d.ts +5 -0
  97. package/node_modules/@noodle-borg/service/dist/oauth/microsoft.d.ts.map +1 -1
  98. package/node_modules/@noodle-borg/service/dist/oauth/microsoft.js +48 -28
  99. package/node_modules/@noodle-borg/service/dist/oauth/microsoft.js.map +1 -1
  100. package/node_modules/@noodle-borg/service/dist/serve-options.d.ts +13 -0
  101. package/node_modules/@noodle-borg/service/dist/serve-options.d.ts.map +1 -1
  102. package/node_modules/@noodle-borg/service/dist/serve.d.ts +3 -0
  103. package/node_modules/@noodle-borg/service/dist/serve.d.ts.map +1 -1
  104. package/node_modules/@noodle-borg/service/dist/serve.js +49 -18
  105. package/node_modules/@noodle-borg/service/dist/serve.js.map +1 -1
  106. package/package.json +1 -1
@@ -0,0 +1,433 @@
1
+ import { canonicalScopes, McpOAuthClient, parseBearerChallenge, } from '@noodle-borg/auth';
2
+ import { constantTimeStringEqual, safeFailure } from './devtools-auth-session-helpers.js';
3
+ import { DevtoolsAuthRequiredError, } from './devtools-auth-types.js';
4
+ import { storeDevtoolsDelegatedCredential } from './devtools-delegated-credential.js';
5
+ import { FirebaseDevtoolsAuthDriver, } from './devtools-firebase-auth.js';
6
+ import { MicrosoftDevtoolsAuthDriver, microsoftIssuer } from './devtools-microsoft-auth.js';
7
+ export { DevtoolsAuthRequiredError, } from './devtools-auth-types.js';
8
+ export class DevtoolsAuthSession {
9
+ #resource;
10
+ #auth;
11
+ #delegatedCredentialSink;
12
+ #driverFactory;
13
+ #firebaseDriver;
14
+ #driver;
15
+ #selectedIssuer;
16
+ #discovery;
17
+ #registration;
18
+ #pending;
19
+ #firebasePending;
20
+ #tokens;
21
+ #requestedScopes = [];
22
+ #state;
23
+ #message;
24
+ #errorCode;
25
+ #generation = 0;
26
+ #refreshing;
27
+ constructor(options) {
28
+ this.#resource = options.resource;
29
+ this.#auth = options.auth;
30
+ this.#delegatedCredentialSink = options.delegatedCredentialSink;
31
+ this.#state = options.auth.kind === 'unsupported' ? 'unsupported' : 'signed_out';
32
+ if (options.auth.kind === 'firebase') {
33
+ this.#firebaseDriver =
34
+ options.firebaseDriver ??
35
+ new FirebaseDevtoolsAuthDriver({
36
+ auth: options.auth,
37
+ resource: options.resource,
38
+ redirectUri: options.redirectUri,
39
+ ...(options.fetchFn !== undefined ? { fetchFn: options.fetchFn } : {}),
40
+ });
41
+ }
42
+ else if (options.auth.kind === 'microsoft') {
43
+ const microsoftAuth = options.auth;
44
+ const issuer = microsoftIssuer(microsoftAuth.tenantId);
45
+ this.#selectedIssuer = issuer;
46
+ this.#driverFactory =
47
+ options.driverFactory ??
48
+ (() => options.driver ??
49
+ new MicrosoftDevtoolsAuthDriver({
50
+ auth: microsoftAuth,
51
+ resource: options.resource,
52
+ redirectUri: options.redirectUri,
53
+ ...(options.fetchFn !== undefined ? { fetchFn: options.fetchFn } : {}),
54
+ }));
55
+ this.#driver = this.#driverFactory(issuer);
56
+ }
57
+ else if (options.auth.kind !== 'unsupported') {
58
+ const allowInsecureLocalhost = options.auth.allowInsecureLocalhost === true;
59
+ this.#driverFactory =
60
+ options.driverFactory ??
61
+ (options.driver !== undefined
62
+ ? () => options.driver
63
+ : (issuer) => new McpOAuthClient({
64
+ resource: options.resource,
65
+ issuer,
66
+ redirectUri: options.redirectUri,
67
+ ...(options.fetchFn !== undefined ? { fetchFn: options.fetchFn } : {}),
68
+ ...(allowInsecureLocalhost ? { allowInsecureLocalhost: true } : {}),
69
+ }));
70
+ if (options.auth.kind === 'oidc') {
71
+ this.#selectedIssuer = options.auth.issuer;
72
+ this.#driver = this.#driverFactory(options.auth.issuer);
73
+ }
74
+ }
75
+ }
76
+ status() {
77
+ if (this.#auth.kind === 'unsupported') {
78
+ return {
79
+ required: true,
80
+ supported: false,
81
+ state: 'unsupported',
82
+ method: this.#auth.method,
83
+ scopes: [],
84
+ message: `${this.#auth.method} sign-in is not supported in Devtools yet`,
85
+ };
86
+ }
87
+ const issuers = this.#configuredIssuers();
88
+ const firebaseIssuer = this.#auth.kind === 'firebase'
89
+ ? (this.#auth.authDomain ?? `${this.#auth.projectId}.firebaseapp.com`)
90
+ : undefined;
91
+ return {
92
+ required: true,
93
+ supported: true,
94
+ state: this.#state,
95
+ ...(this.#selectedIssuer !== undefined
96
+ ? { issuer: this.#selectedIssuer }
97
+ : firebaseIssuer === undefined
98
+ ? {}
99
+ : { issuer: firebaseIssuer }),
100
+ ...(this.#auth.kind === 'federatedOidc' ? { issuers } : {}),
101
+ ...(this.#auth.kind === 'firebase' ? { method: 'firebase' } : {}),
102
+ ...(this.#auth.kind === 'microsoft' ? { method: 'microsoft' } : {}),
103
+ scopes: [...this.#visibleScopes()],
104
+ ...(this.#tokens?.expiresAt !== undefined ? { expiresAt: this.#tokens.expiresAt } : {}),
105
+ ...(this.#errorCode !== undefined ? { errorCode: this.#errorCode } : {}),
106
+ ...(this.#message !== undefined ? { message: this.#message } : {}),
107
+ };
108
+ }
109
+ async start(issuer) {
110
+ if (this.#auth.kind === 'firebase')
111
+ return this.#startFirebase();
112
+ const selectedIssuer = this.#resolveIssuer(issuer);
113
+ const switchingIssuer = selectedIssuer !== this.#selectedIssuer;
114
+ const generation = ++this.#generation;
115
+ this.#refreshing = undefined;
116
+ this.#pending = undefined;
117
+ this.#tokens = undefined;
118
+ this.#clearDelegatedCredential();
119
+ this.#state = 'authorizing';
120
+ this.#message = undefined;
121
+ this.#errorCode = undefined;
122
+ try {
123
+ if (switchingIssuer) {
124
+ this.#selectedIssuer = selectedIssuer;
125
+ this.#driver = undefined;
126
+ this.#discovery = undefined;
127
+ this.#registration = undefined;
128
+ }
129
+ const driver = this.#requiredDriver();
130
+ const discovery = this.#discovery ?? (await driver.discover());
131
+ this.#assertGeneration(generation);
132
+ this.#discovery = discovery;
133
+ if (this.#requestedScopes.length === 0) {
134
+ this.#requestedScopes = discovery.scopes;
135
+ }
136
+ const registration = this.#registration ?? (await driver.register(discovery, this.#requestedScopes));
137
+ this.#assertGeneration(generation);
138
+ this.#registration = registration;
139
+ const pending = driver.beginAuthorization(discovery, registration, this.#requestedScopes);
140
+ this.#assertGeneration(generation);
141
+ this.#pending = pending;
142
+ this.#state = 'authorizing';
143
+ this.#message = undefined;
144
+ return pending.authorizationUrl;
145
+ }
146
+ catch (error) {
147
+ if (this.#generation === generation) {
148
+ this.#state = 'error';
149
+ const failure = safeFailure(error, 'Could not start sign-in');
150
+ this.#message = failure.message;
151
+ this.#errorCode = failure.errorCode;
152
+ }
153
+ throw error;
154
+ }
155
+ }
156
+ async complete(callbackUrl) {
157
+ if (this.#auth.kind === 'firebase') {
158
+ throw new DevtoolsAuthRequiredError('Firebase sign-in requires a form POST');
159
+ }
160
+ const driver = this.#requiredDriver();
161
+ if (!this.#discovery || !this.#registration || !this.#pending) {
162
+ throw new DevtoolsAuthRequiredError('No OAuth sign-in is pending');
163
+ }
164
+ const generation = this.#generation;
165
+ const discovery = this.#discovery;
166
+ const registration = this.#registration;
167
+ const pending = this.#pending;
168
+ const callbackState = new URL(callbackUrl).searchParams.get('state') ?? '';
169
+ if (!constantTimeStringEqual(callbackState, pending.state)) {
170
+ throw new DevtoolsAuthRequiredError('OAuth callback does not match the active sign-in');
171
+ }
172
+ this.#pending = undefined;
173
+ try {
174
+ const tokens = await driver.exchangeCallback(discovery, registration, pending, callbackUrl);
175
+ this.#assertGeneration(generation);
176
+ await this.#storeDelegatedCredential(tokens);
177
+ this.#assertGeneration(generation);
178
+ this.#tokens = tokens;
179
+ this.#requestedScopes = canonicalScopes([...this.#requestedScopes, ...tokens.scope]);
180
+ this.#state = 'signed_in';
181
+ this.#message = undefined;
182
+ this.#errorCode = undefined;
183
+ }
184
+ catch (error) {
185
+ if (this.#generation === generation) {
186
+ this.#state = 'error';
187
+ const failure = safeFailure(error, 'Sign-in failed');
188
+ this.#message = failure.message;
189
+ this.#errorCode = failure.errorCode;
190
+ }
191
+ throw error;
192
+ }
193
+ }
194
+ callbackTransport() {
195
+ return this.#auth.kind === 'firebase' ? 'form_post' : 'query';
196
+ }
197
+ firebaseAuthorizationPage(url) {
198
+ if (this.#auth.kind !== 'firebase' || !this.#firebasePending)
199
+ return undefined;
200
+ return this.#requiredFirebaseDriver().renderAuthorizationPage(url, this.#firebasePending);
201
+ }
202
+ async completeFirebase(callback) {
203
+ if (this.#auth.kind !== 'firebase' || !this.#firebasePending) {
204
+ throw new DevtoolsAuthRequiredError('No Firebase sign-in is pending');
205
+ }
206
+ const pending = this.#firebasePending;
207
+ if (!constantTimeStringEqual(callback.state, pending.state)) {
208
+ throw new DevtoolsAuthRequiredError('Firebase callback does not match the active sign-in');
209
+ }
210
+ const generation = this.#generation;
211
+ this.#firebasePending = undefined;
212
+ try {
213
+ const tokens = await this.#requiredFirebaseDriver().completeAuthorization(pending, callback);
214
+ this.#assertGeneration(generation);
215
+ await this.#storeDelegatedCredential(tokens);
216
+ this.#assertGeneration(generation);
217
+ this.#tokens = tokens;
218
+ this.#state = 'signed_in';
219
+ this.#message = undefined;
220
+ this.#errorCode = undefined;
221
+ }
222
+ catch (error) {
223
+ if (this.#generation === generation) {
224
+ this.#state = 'error';
225
+ const failure = safeFailure(error, 'Firebase sign-in failed');
226
+ this.#message = failure.message;
227
+ this.#errorCode = failure.errorCode;
228
+ }
229
+ throw error;
230
+ }
231
+ }
232
+ async accessToken(options = {}) {
233
+ if (this.#state === 'reauthorization_required')
234
+ throw new DevtoolsAuthRequiredError();
235
+ if (!this.#tokens)
236
+ throw new DevtoolsAuthRequiredError();
237
+ const expiring = this.#tokens.expiresAt !== undefined && this.#tokens.expiresAt <= Date.now() + 30_000;
238
+ if (options.forceRefresh === true || expiring) {
239
+ if (!this.#tokens.refreshToken) {
240
+ this.#tokens = undefined;
241
+ this.#state = 'signed_out';
242
+ this.#clearDelegatedCredential();
243
+ throw new DevtoolsAuthRequiredError('Your sign-in expired; sign in again');
244
+ }
245
+ const generation = this.#generation;
246
+ const current = this.#tokens;
247
+ let refreshing = this.#refreshing;
248
+ if (!refreshing || refreshing.generation !== generation) {
249
+ const refreshPromise = this.#auth.kind === 'firebase'
250
+ ? this.#requiredFirebaseDriver().refresh(current)
251
+ : this.#discovery !== undefined && this.#registration !== undefined
252
+ ? this.#requiredDriver().refresh(this.#discovery, this.#registration, current)
253
+ : undefined;
254
+ if (refreshPromise === undefined) {
255
+ this.#tokens = undefined;
256
+ this.#state = 'signed_out';
257
+ this.#clearDelegatedCredential();
258
+ throw new DevtoolsAuthRequiredError('Your sign-in expired; sign in again');
259
+ }
260
+ refreshing = {
261
+ generation,
262
+ promise: refreshPromise,
263
+ };
264
+ this.#refreshing = refreshing;
265
+ }
266
+ try {
267
+ const tokens = await refreshing.promise;
268
+ this.#assertGeneration(generation);
269
+ await this.#storeDelegatedCredential(tokens);
270
+ this.#assertGeneration(generation);
271
+ this.#tokens = tokens;
272
+ }
273
+ catch {
274
+ if (this.#generation === generation) {
275
+ this.#tokens = undefined;
276
+ this.#state = 'signed_out';
277
+ this.#clearDelegatedCredential();
278
+ }
279
+ throw new DevtoolsAuthRequiredError('Your sign-in expired; sign in again');
280
+ }
281
+ finally {
282
+ if (this.#refreshing === refreshing) {
283
+ this.#refreshing = undefined;
284
+ }
285
+ }
286
+ }
287
+ this.#state = 'signed_in';
288
+ return this.#tokens.accessToken;
289
+ }
290
+ noteBearerChallenge(status, header) {
291
+ const challenge = parseBearerChallenge(header);
292
+ if (status !== 403 ||
293
+ challenge?.error !== 'insufficient_scope' ||
294
+ challenge.scopes.length === 0) {
295
+ return;
296
+ }
297
+ this.#generation += 1;
298
+ this.#refreshing = undefined;
299
+ this.#requestedScopes = canonicalScopes(this.#auth.kind === 'microsoft'
300
+ ? [
301
+ ...this.#requestedScopes,
302
+ ...(this.#discovery?.scopes ?? []),
303
+ ...(this.#tokens?.scope ?? []),
304
+ ]
305
+ : [
306
+ ...this.#requestedScopes,
307
+ ...(this.#discovery?.scopes ?? []),
308
+ ...(this.#tokens?.scope ?? []),
309
+ ...challenge.scopes,
310
+ ]);
311
+ this.#tokens = undefined;
312
+ this.#clearDelegatedCredential();
313
+ this.#pending = undefined;
314
+ this.#state = 'reauthorization_required';
315
+ this.#message =
316
+ this.#auth.kind === 'firebase'
317
+ ? 'This Firebase user is missing required app permissions; update its custom claims, then sign in again'
318
+ : this.#auth.kind === 'microsoft'
319
+ ? 'This Microsoft user is missing required app permissions; update its Entra app roles or claims, then sign in again'
320
+ : 'Additional permission is required; sign in again to continue';
321
+ this.#errorCode = undefined;
322
+ }
323
+ clear() {
324
+ this.#generation += 1;
325
+ this.#refreshing = undefined;
326
+ this.#discovery = undefined;
327
+ this.#registration = undefined;
328
+ this.#pending = undefined;
329
+ this.#firebasePending = undefined;
330
+ this.#tokens = undefined;
331
+ this.#clearDelegatedCredential();
332
+ this.#driver = undefined;
333
+ this.#requestedScopes = [];
334
+ this.#message = undefined;
335
+ this.#errorCode = undefined;
336
+ this.#state = this.#auth.kind === 'unsupported' ? 'unsupported' : 'signed_out';
337
+ }
338
+ async #storeDelegatedCredential(tokens) {
339
+ await storeDevtoolsDelegatedCredential({
340
+ auth: this.#auth,
341
+ resource: this.#resource,
342
+ tokens,
343
+ sink: this.#delegatedCredentialSink,
344
+ });
345
+ }
346
+ #clearDelegatedCredential() {
347
+ this.#delegatedCredentialSink?.clearResource(this.#resource);
348
+ }
349
+ #visibleScopes() {
350
+ return canonicalScopes([
351
+ ...this.#requestedScopes,
352
+ ...(this.#tokens?.scope ?? []),
353
+ ...(this.#pending?.scopes ?? []),
354
+ ]);
355
+ }
356
+ #requiredDriver() {
357
+ if (!this.#driver && this.#selectedIssuer && this.#driverFactory) {
358
+ this.#driver = this.#driverFactory(this.#selectedIssuer);
359
+ }
360
+ if (!this.#driver) {
361
+ throw new Error(`${this.#auth.kind === 'unsupported' ? this.#auth.method : 'configured'} authentication is not supported in Devtools yet`);
362
+ }
363
+ return this.#driver;
364
+ }
365
+ #requiredFirebaseDriver() {
366
+ if (!this.#firebaseDriver) {
367
+ throw new Error('Firebase authentication is not supported in Devtools yet');
368
+ }
369
+ return this.#firebaseDriver;
370
+ }
371
+ async #startFirebase() {
372
+ const generation = ++this.#generation;
373
+ this.#refreshing = undefined;
374
+ this.#pending = undefined;
375
+ this.#firebasePending = undefined;
376
+ this.#tokens = undefined;
377
+ this.#clearDelegatedCredential();
378
+ this.#state = 'authorizing';
379
+ this.#message = undefined;
380
+ this.#errorCode = undefined;
381
+ try {
382
+ const pending = this.#requiredFirebaseDriver().beginAuthorization();
383
+ this.#assertGeneration(generation);
384
+ this.#firebasePending = pending;
385
+ return pending.authorizationUrl;
386
+ }
387
+ catch (error) {
388
+ if (this.#generation === generation) {
389
+ this.#state = 'error';
390
+ const failure = safeFailure(error, 'Could not start Firebase sign-in');
391
+ this.#message = failure.message;
392
+ this.#errorCode = failure.errorCode;
393
+ }
394
+ throw error;
395
+ }
396
+ }
397
+ #configuredIssuers() {
398
+ if (this.#auth.kind === 'oidc')
399
+ return [this.#auth.issuer];
400
+ if (this.#auth.kind === 'federatedOidc')
401
+ return [...this.#auth.issuers];
402
+ if (this.#auth.kind === 'microsoft')
403
+ return [microsoftIssuer(this.#auth.tenantId)];
404
+ return [];
405
+ }
406
+ #resolveIssuer(requestedIssuer) {
407
+ if (this.#auth.kind === 'unsupported') {
408
+ throw new Error(`${this.#auth.method} sign-in is not supported in Devtools yet`);
409
+ }
410
+ const issuers = this.#configuredIssuers();
411
+ if (requestedIssuer !== undefined) {
412
+ if (!issuers.includes(requestedIssuer)) {
413
+ throw new DevtoolsAuthRequiredError('Selected identity provider is not configured');
414
+ }
415
+ return requestedIssuer;
416
+ }
417
+ if (this.#selectedIssuer !== undefined && issuers.includes(this.#selectedIssuer)) {
418
+ return this.#selectedIssuer;
419
+ }
420
+ if (issuers.length === 1 && issuers[0] !== undefined)
421
+ return issuers[0];
422
+ if (issuers.length > 1) {
423
+ throw new DevtoolsAuthRequiredError('Choose an identity provider to sign in');
424
+ }
425
+ throw new DevtoolsAuthRequiredError('No identity provider is configured');
426
+ }
427
+ #assertGeneration(generation) {
428
+ if (this.#generation !== generation) {
429
+ throw new DevtoolsAuthRequiredError('Sign-in was cancelled');
430
+ }
431
+ }
432
+ }
433
+ //# sourceMappingURL=devtools-auth-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devtools-auth-session.js","sourceRoot":"","sources":["../src/devtools-auth-session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import type { McpOAuthClientRegistration, McpOAuthDiscovery, McpOAuthPendingAuthorization, McpOAuthTokens } from '@noodle-borg/auth';
2
+ import type { DevtoolsFirebaseAuthConfig } from './devtools-firebase-auth.js';
3
+ import type { DevtoolsMicrosoftAuthConfig } from './devtools-microsoft-auth.js';
4
+ export type DevtoolsCustomerAuth = {
5
+ readonly kind: 'oidc';
6
+ readonly issuer: string;
7
+ /** Opaque local-only revision used to clear credentials when audience/claim routing changes. */
8
+ readonly configurationKey?: string;
9
+ /** Test/self-host seam. Production authorization servers must use HTTPS. */
10
+ readonly allowInsecureLocalhost?: boolean;
11
+ } | {
12
+ readonly kind: 'federatedOidc';
13
+ readonly issuers: readonly string[];
14
+ /** Opaque local-only revision used to clear credentials when audience/claim routing changes. */
15
+ readonly configurationKey?: string;
16
+ /** Test/self-host seam. Production authorization servers must use HTTPS. */
17
+ readonly allowInsecureLocalhost?: boolean;
18
+ } | DevtoolsFirebaseAuthConfig | DevtoolsMicrosoftAuthConfig | {
19
+ readonly kind: 'unsupported';
20
+ readonly method: string;
21
+ };
22
+ export interface DevtoolsOAuthDriver {
23
+ discover(): Promise<McpOAuthDiscovery>;
24
+ register(discovery: McpOAuthDiscovery, scopes?: readonly string[]): Promise<McpOAuthClientRegistration>;
25
+ beginAuthorization(discovery: McpOAuthDiscovery, registration: McpOAuthClientRegistration, scopes?: readonly string[]): McpOAuthPendingAuthorization;
26
+ exchangeCallback(discovery: McpOAuthDiscovery, registration: McpOAuthClientRegistration, pending: McpOAuthPendingAuthorization, callbackUrl: string): Promise<McpOAuthTokens>;
27
+ refresh(discovery: McpOAuthDiscovery, registration: McpOAuthClientRegistration, current: McpOAuthTokens): Promise<McpOAuthTokens>;
28
+ }
29
+ export type DevtoolsAuthState = 'signed_out' | 'authorizing' | 'signed_in' | 'reauthorization_required' | 'unsupported' | 'error';
30
+ export interface DevtoolsAuthStatus {
31
+ readonly required: true;
32
+ readonly supported: boolean;
33
+ readonly state: DevtoolsAuthState;
34
+ readonly issuer?: string;
35
+ readonly issuers?: readonly string[];
36
+ readonly method?: string;
37
+ readonly scopes: readonly string[];
38
+ readonly expiresAt?: number;
39
+ /** Allowlisted provider/standards code only; never a raw provider response or request identifier. */
40
+ readonly errorCode?: string;
41
+ readonly message?: string;
42
+ }
43
+ /** A browser-safe auth failure whose code and message are intentionally curated by the Node host. */
44
+ export declare class DevtoolsAuthError extends Error {
45
+ readonly code: string;
46
+ constructor(code: string, message: string);
47
+ }
48
+ export declare class DevtoolsAuthRequiredError extends Error {
49
+ constructor(message?: string);
50
+ }
51
+ //# sourceMappingURL=devtools-auth-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devtools-auth-types.d.ts","sourceRoot":"","sources":["../src/devtools-auth-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAC1B,iBAAiB,EACjB,4BAA4B,EAC5B,cAAc,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAEhF,MAAM,MAAM,oBAAoB,GAC5B;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,gGAAgG;IAChG,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,4EAA4E;IAC5E,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAC3C,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,gGAAgG;IAChG,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,4EAA4E;IAC5E,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAC3C,GACD,0BAA0B,GAC1B,2BAA2B,GAC3B;IACE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEN,MAAM,WAAW,mBAAmB;IAClC,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACvC,QAAQ,CACN,SAAS,EAAE,iBAAiB,EAC5B,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,GACzB,OAAO,CAAC,0BAA0B,CAAC,CAAC;IACvC,kBAAkB,CAChB,SAAS,EAAE,iBAAiB,EAC5B,YAAY,EAAE,0BAA0B,EACxC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,GACzB,4BAA4B,CAAC;IAChC,gBAAgB,CACd,SAAS,EAAE,iBAAiB,EAC5B,YAAY,EAAE,0BAA0B,EACxC,OAAO,EAAE,4BAA4B,EACrC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3B,OAAO,CACL,SAAS,EAAE,iBAAiB,EAC5B,YAAY,EAAE,0BAA0B,EACxC,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,cAAc,CAAC,CAAC;CAC5B;AAED,MAAM,MAAM,iBAAiB,GACzB,YAAY,GACZ,aAAa,GACb,WAAW,GACX,0BAA0B,GAC1B,aAAa,GACb,OAAO,CAAC;AAEZ,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,qGAAqG;IACrG,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,qGAAqG;AACrG,qBAAa,iBAAkB,SAAQ,KAAK;IAExC,QAAQ,CAAC,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM;CAKlB;AAED,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,OAAO,SAAiC;CAIrD"}
@@ -0,0 +1,16 @@
1
+ /** A browser-safe auth failure whose code and message are intentionally curated by the Node host. */
2
+ export class DevtoolsAuthError extends Error {
3
+ code;
4
+ constructor(code, message) {
5
+ super(message);
6
+ this.code = code;
7
+ this.name = 'DevtoolsAuthError';
8
+ }
9
+ }
10
+ export class DevtoolsAuthRequiredError extends Error {
11
+ constructor(message = 'Sign in to test this MCP app') {
12
+ super(message);
13
+ this.name = 'DevtoolsAuthRequiredError';
14
+ }
15
+ }
16
+ //# sourceMappingURL=devtools-auth-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devtools-auth-types.js","sourceRoot":"","sources":["../src/devtools-auth-types.ts"],"names":[],"mappings":"AA+EA,qGAAqG;AACrG,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAE/B;IADX,YACW,IAAY,EACrB,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHN,SAAI,GAAJ,IAAI,CAAQ;QAIrB,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAClD,YAAY,OAAO,GAAG,8BAA8B;QAClD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;IAC1C,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ /** Authenticated-preview UI. All OAuth credentials remain in the loopback process. */
2
+ export declare const DEVTOOLS_AUTH_STYLES = "\n.auth-gate{\n position:absolute;\n inset:64px 0 0;\n z-index:20;\n display:none;\n align-items:center;\n justify-content:center;\n padding:28px;\n background:rgba(8,8,10,.88);\n backdrop-filter:blur(18px);\n}\n.auth-locked .auth-gate{display:flex}\n.auth-card{\n display:flex;\n width:min(440px,100%);\n flex-direction:column;\n align-items:center;\n gap:12px;\n padding:30px;\n border:1px solid var(--nd-border);\n border-radius:24px;\n background:var(--nd-panel-solid);\n text-align:center;\n box-shadow:0 24px 80px rgba(0,0,0,.45);\n}\n.auth-card h3{margin:0;font-size:22px;font-weight:610;letter-spacing:-.03em}\n.auth-card p{margin:0;color:var(--nd-muted);font-size:12.5px;line-height:1.6}\n.auth-issuer{font-family:var(--nd-mono);color:#d4d4d8!important;word-break:break-all}\n.auth-issuer[hidden]{display:none}\n.auth-provider{\n display:grid;\n width:min(320px,100%);\n gap:6px;\n text-align:left;\n}\n.auth-provider[hidden]{display:none}\n.auth-provider label{color:var(--nd-muted);font-size:10.5px}\n.auth-provider select{\n width:100%;\n padding:9px 30px 9px 10px;\n border:1px solid var(--nd-border);\n border-radius:9px;\n background:var(--nd-panel);\n color:var(--nd-text);\n font:11px var(--nd-mono);\n}\n.auth-provider select:disabled{cursor:wait;opacity:.7}\n.auth-detail{min-height:16px;color:var(--nd-faint)!important;font-size:10.5px!important}\n.auth-detail.err{color:var(--nd-error)!important}\n.auth-card .btn{\n min-width:164px;\n display:inline-flex;\n align-items:center;\n justify-content:center;\n gap:8px;\n}\n.auth-card .btn.is-loading::before{\n width:12px;\n height:12px;\n border:2px solid currentColor;\n border-right-color:transparent;\n border-radius:50%;\n content:\"\";\n animation:auth-button-spin .7s linear infinite;\n}\n@keyframes auth-button-spin{to{transform:rotate(360deg)}}\n@media (prefers-reduced-motion:reduce){\n .auth-card .btn.is-loading::before{animation-duration:1.4s}\n}\n.auth-session{\n display:none;\n align-items:center;\n gap:7px;\n margin-left:auto;\n color:var(--nd-muted);\n font-size:10.5px;\n}\n.auth-session.on{display:flex}\n.auth-session button{\n padding:5px 8px;\n border:0;\n background:transparent;\n color:var(--nd-faint);\n font-size:10px;\n cursor:pointer;\n}\n.auth-session button:hover{color:var(--nd-text)}\n.auth-session .status-dot{width:6px;height:6px}\n.auth-required .brand__url{display:none}\n";
3
+ export declare const DEVTOOLS_AUTH_GATE_HTML: string;
4
+ export declare const DEVTOOLS_AUTH_SESSION_HTML: string;
5
+ export declare const DEVTOOLS_AUTH_CLIENT_JS: string;
6
+ //# sourceMappingURL=devtools-auth-ui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devtools-auth-ui.d.ts","sourceRoot":"","sources":["../src/devtools-auth-ui.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,eAAO,MAAM,oBAAoB,w4EA0FhC,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAYpB,CAAC;AAEjB,eAAO,MAAM,0BAA0B,QAK7B,CAAC;AAGX,eAAO,MAAM,uBAAuB,QAexB,CAAC"}