@vybestack/llxprt-code 0.9.1 → 0.9.3

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 (67) hide show
  1. package/dist/package.json +3 -3
  2. package/dist/src/auth/BucketFailoverHandlerImpl.d.ts +6 -2
  3. package/dist/src/auth/BucketFailoverHandlerImpl.js +128 -22
  4. package/dist/src/auth/BucketFailoverHandlerImpl.js.map +1 -1
  5. package/dist/src/auth/BucketFailoverHandlerImpl.spec.js +201 -1
  6. package/dist/src/auth/BucketFailoverHandlerImpl.spec.js.map +1 -1
  7. package/dist/src/auth/__tests__/oauth-manager.getToken-bucket-peek.spec.js +2 -1
  8. package/dist/src/auth/__tests__/oauth-manager.getToken-bucket-peek.spec.js.map +1 -1
  9. package/dist/src/auth/oauth-manager.auth-lock.spec.js +6 -1
  10. package/dist/src/auth/oauth-manager.auth-lock.spec.js.map +1 -1
  11. package/dist/src/auth/oauth-manager.d.ts +10 -9
  12. package/dist/src/auth/oauth-manager.failover-wiring.spec.js +74 -1
  13. package/dist/src/auth/oauth-manager.failover-wiring.spec.js.map +1 -1
  14. package/dist/src/auth/oauth-manager.issue1468.spec.js +527 -2
  15. package/dist/src/auth/oauth-manager.issue1468.spec.js.map +1 -1
  16. package/dist/src/auth/oauth-manager.js +184 -67
  17. package/dist/src/auth/oauth-manager.js.map +1 -1
  18. package/dist/src/auth/oauth-manager.logout.spec.js +137 -0
  19. package/dist/src/auth/oauth-manager.logout.spec.js.map +1 -1
  20. package/dist/src/auth/oauth-manager.spec.js +58 -0
  21. package/dist/src/auth/oauth-manager.spec.js.map +1 -1
  22. package/dist/src/config/config.js +4 -0
  23. package/dist/src/config/config.js.map +1 -1
  24. package/dist/src/gemini.js.map +1 -1
  25. package/dist/src/generated/git-commit.d.ts +1 -1
  26. package/dist/src/generated/git-commit.js +1 -1
  27. package/dist/src/providers/aliases/chutes-ai.config +1 -1
  28. package/dist/src/providers/aliases/codex.config +1 -0
  29. package/dist/src/providers/aliases/deepseek.config +9 -0
  30. package/dist/src/providers/aliases/fireworks.config +1 -1
  31. package/dist/src/providers/aliases/gemini.config +1 -1
  32. package/dist/src/providers/aliases/openai.config +1 -1
  33. package/dist/src/providers/aliases/openrouter.config +1 -1
  34. package/dist/src/providers/aliases/synthetic.config +1 -1
  35. package/dist/src/providers/aliases/xai.config +1 -1
  36. package/dist/src/providers/aliases/zai.config +9 -0
  37. package/dist/src/providers/providerAliases.codex.test.js +2 -2
  38. package/dist/src/providers/providerAliases.codex.test.js.map +1 -1
  39. package/dist/src/providers/providerAliases.defaultModels.test.d.ts +6 -0
  40. package/dist/src/providers/providerAliases.defaultModels.test.js +57 -0
  41. package/dist/src/providers/providerAliases.defaultModels.test.js.map +1 -0
  42. package/dist/src/providers/providerManagerInstance.oauthRegistration.test.js +1 -1
  43. package/dist/src/providers/providerManagerInstance.oauthRegistration.test.js.map +1 -1
  44. package/dist/src/ui/AppContainer.js +1 -1
  45. package/dist/src/ui/AppContainer.js.map +1 -1
  46. package/dist/src/ui/commands/diagnosticsCommand.js +16 -7
  47. package/dist/src/ui/commands/diagnosticsCommand.js.map +1 -1
  48. package/dist/src/ui/commands/diagnosticsCommand.spec.js +68 -0
  49. package/dist/src/ui/commands/diagnosticsCommand.spec.js.map +1 -1
  50. package/dist/src/ui/commands/statsCommand.js +63 -4
  51. package/dist/src/ui/commands/statsCommand.js.map +1 -1
  52. package/dist/src/ui/components/AuthDialog.js +1 -1
  53. package/dist/src/ui/components/AuthDialog.js.map +1 -1
  54. package/dist/src/ui/utils/terminalCapabilityManager.d.ts +1 -0
  55. package/dist/src/ui/utils/terminalCapabilityManager.js +25 -1
  56. package/dist/src/ui/utils/terminalCapabilityManager.js.map +1 -1
  57. package/dist/src/ui/utils/terminalCapabilityManager.test.js +34 -1
  58. package/dist/src/ui/utils/terminalCapabilityManager.test.js.map +1 -1
  59. package/dist/src/ui/utils/terminalProtocolCleanup.js +1 -1
  60. package/dist/src/ui/utils/terminalProtocolCleanup.js.map +1 -1
  61. package/dist/src/ui/utils/terminalProtocolCleanup.test.js +2 -2
  62. package/dist/src/ui/utils/terminalProtocolCleanup.test.js.map +1 -1
  63. package/dist/src/utils/sandbox.d.ts +13 -0
  64. package/dist/src/utils/sandbox.js +163 -7
  65. package/dist/src/utils/sandbox.js.map +1 -1
  66. package/dist/tsconfig.build.tsbuildinfo +1 -1
  67. package/package.json +3 -3
@@ -18,12 +18,16 @@
18
18
  * returning buckets, returning [] if they don't match.
19
19
  */
20
20
  import { beforeEach, afterEach, describe, expect, it, vi } from 'vitest';
21
- // Hoisted mock for ProfileManager that returns controlled profiles
22
- const mockLoadProfile = vi.fn();
21
+ // Hoisted mocks used by module factories
22
+ const { mockLoadProfile, mockFetchAnthropicUsage } = vi.hoisted(() => ({
23
+ mockLoadProfile: vi.fn(),
24
+ mockFetchAnthropicUsage: vi.fn(),
25
+ }));
23
26
  vi.mock('@vybestack/llxprt-code-core', async () => {
24
27
  const actual = await vi.importActual('@vybestack/llxprt-code-core');
25
28
  return {
26
29
  ...actual,
30
+ fetchAnthropicUsage: mockFetchAnthropicUsage,
27
31
  ProfileManager: class MockProfileManager {
28
32
  async loadProfile(name) {
29
33
  return mockLoadProfile(name);
@@ -110,10 +114,531 @@ describe('Issue #1468: getProfileBuckets validates provider matches profile', ()
110
114
  const settings = createLoadedSettings();
111
115
  manager = new OAuthManager(tokenStore, settings);
112
116
  vi.clearAllMocks();
117
+ mockFetchAnthropicUsage.mockReset();
113
118
  });
114
119
  afterEach(() => {
115
120
  tokenStore.clear();
116
121
  });
122
+ it('uses request profile metadata to resolve bucketed tokens for subagent runtimes', async () => {
123
+ mockGetCurrentProfileName.mockReturnValue('foreground-profile');
124
+ mockLoadProfile.mockImplementation(async (profileName) => {
125
+ if (profileName === 'foreground-profile') {
126
+ return {
127
+ provider: 'anthropic',
128
+ auth: {
129
+ type: 'oauth',
130
+ buckets: ['foreground-bucket'],
131
+ },
132
+ };
133
+ }
134
+ if (profileName === 'opusthinkingbucketed') {
135
+ return {
136
+ provider: 'anthropic',
137
+ auth: {
138
+ type: 'oauth',
139
+ buckets: ['bucket-a', 'bucket-b', 'bucket-c'],
140
+ },
141
+ };
142
+ }
143
+ throw new Error(`Unexpected profile lookup: ${profileName}`);
144
+ });
145
+ const provider = {
146
+ name: 'anthropic',
147
+ initiateAuth: vi.fn().mockResolvedValue({
148
+ access_token: 'fresh-token',
149
+ token_type: 'Bearer',
150
+ expiry: Math.floor(Date.now() / 1000) + 3600,
151
+ }),
152
+ getToken: vi.fn().mockResolvedValue(null),
153
+ refreshToken: vi.fn().mockResolvedValue(null),
154
+ };
155
+ manager.registerProvider(provider);
156
+ await manager.toggleOAuthEnabled('anthropic');
157
+ await tokenStore.saveToken('anthropic', {
158
+ access_token: 'bucket-a-token',
159
+ token_type: 'Bearer',
160
+ expiry: Math.floor(Date.now() / 1000) + 3600,
161
+ }, 'bucket-a');
162
+ const metadata = {
163
+ profileId: 'opusthinkingbucketed',
164
+ providerId: 'anthropic',
165
+ runtimeMetadata: {
166
+ source: 'SubagentOrchestrator',
167
+ subagent: 'codeanalyzer',
168
+ },
169
+ };
170
+ const token = await manager.getOAuthToken('anthropic', metadata);
171
+ expect(token?.access_token).toBe('bucket-a-token');
172
+ });
173
+ it('does not inherit a foreground session bucket when request metadata targets a different profile', async () => {
174
+ mockGetCurrentProfileName.mockReturnValue('foreground-profile');
175
+ mockLoadProfile.mockImplementation(async (profileName) => {
176
+ if (profileName === 'foreground-profile') {
177
+ return {
178
+ provider: 'anthropic',
179
+ auth: {
180
+ type: 'oauth',
181
+ buckets: ['foreground-bucket'],
182
+ },
183
+ };
184
+ }
185
+ if (profileName === 'opusthinkingbucketed') {
186
+ return {
187
+ provider: 'anthropic',
188
+ auth: {
189
+ type: 'oauth',
190
+ buckets: ['bucket-a', 'bucket-b', 'bucket-c'],
191
+ },
192
+ };
193
+ }
194
+ throw new Error(`Unexpected profile lookup: ${profileName}`);
195
+ });
196
+ const provider = {
197
+ name: 'anthropic',
198
+ initiateAuth: vi.fn().mockResolvedValue({
199
+ access_token: 'fresh-token',
200
+ token_type: 'Bearer',
201
+ expiry: Math.floor(Date.now() / 1000) + 3600,
202
+ }),
203
+ getToken: vi.fn().mockResolvedValue(null),
204
+ refreshToken: vi.fn().mockResolvedValue(null),
205
+ };
206
+ manager.registerProvider(provider);
207
+ await manager.toggleOAuthEnabled('anthropic');
208
+ manager.setSessionBucket('anthropic', 'foreground-bucket');
209
+ await tokenStore.saveToken('anthropic', {
210
+ access_token: 'foreground-token',
211
+ token_type: 'Bearer',
212
+ expiry: Math.floor(Date.now() / 1000) + 3600,
213
+ }, 'foreground-bucket');
214
+ await tokenStore.saveToken('anthropic', {
215
+ access_token: 'bucket-a-token',
216
+ token_type: 'Bearer',
217
+ expiry: Math.floor(Date.now() / 1000) + 3600,
218
+ }, 'bucket-a');
219
+ const metadata = {
220
+ profileId: 'opusthinkingbucketed',
221
+ providerId: 'anthropic',
222
+ runtimeMetadata: {
223
+ source: 'SubagentOrchestrator',
224
+ subagent: 'codeanalyzer',
225
+ },
226
+ };
227
+ const token = await manager.getOAuthToken('anthropic', metadata);
228
+ expect(token?.access_token).toBe('bucket-a-token');
229
+ });
230
+ it('preserves request-scoped session state when getToken peeks a later bucket', async () => {
231
+ mockGetCurrentProfileName.mockReturnValue('foreground-profile');
232
+ mockLoadProfile.mockImplementation(async (profileName) => {
233
+ if (profileName === 'foreground-profile') {
234
+ return {
235
+ provider: 'anthropic',
236
+ auth: {
237
+ type: 'oauth',
238
+ buckets: ['foreground-bucket'],
239
+ },
240
+ };
241
+ }
242
+ if (profileName === 'opusthinkingbucketed') {
243
+ return {
244
+ provider: 'anthropic',
245
+ auth: {
246
+ type: 'oauth',
247
+ buckets: ['bucket-a', 'bucket-b', 'bucket-c'],
248
+ },
249
+ };
250
+ }
251
+ throw new Error(`Unexpected profile lookup: ${profileName}`);
252
+ });
253
+ const provider = {
254
+ name: 'anthropic',
255
+ initiateAuth: vi.fn().mockResolvedValue({
256
+ access_token: 'fresh-token',
257
+ token_type: 'Bearer',
258
+ expiry: Math.floor(Date.now() / 1000) + 3600,
259
+ }),
260
+ getToken: vi.fn().mockResolvedValue(null),
261
+ refreshToken: vi.fn().mockResolvedValue(null),
262
+ };
263
+ manager.registerProvider(provider);
264
+ await manager.toggleOAuthEnabled('anthropic');
265
+ manager.setSessionBucket('anthropic', 'foreground-bucket');
266
+ await tokenStore.saveToken('anthropic', {
267
+ access_token: 'bucket-b-token',
268
+ token_type: 'Bearer',
269
+ expiry: Math.floor(Date.now() / 1000) + 3600,
270
+ }, 'bucket-b');
271
+ const metadata = {
272
+ profileId: 'opusthinkingbucketed',
273
+ providerId: 'anthropic',
274
+ runtimeMetadata: {
275
+ source: 'SubagentOrchestrator',
276
+ subagent: 'codeanalyzer',
277
+ },
278
+ };
279
+ const token = await manager.getToken('anthropic', metadata);
280
+ expect(token).toBe('bucket-b-token');
281
+ expect(manager.getSessionBucket('anthropic', metadata)).toBe('bucket-b');
282
+ });
283
+ it('does not fall back to foreground buckets when an explicit request profile cannot be loaded', async () => {
284
+ mockGetCurrentProfileName.mockReturnValue('foreground-profile');
285
+ mockLoadProfile.mockImplementation(async (profileName) => {
286
+ if (profileName === 'foreground-profile') {
287
+ return {
288
+ provider: 'anthropic',
289
+ auth: {
290
+ type: 'oauth',
291
+ buckets: ['foreground-bucket'],
292
+ },
293
+ };
294
+ }
295
+ throw new Error(`Unexpected profile lookup: ${profileName}`);
296
+ });
297
+ const provider = {
298
+ name: 'anthropic',
299
+ initiateAuth: vi.fn().mockResolvedValue({
300
+ access_token: 'fresh-token',
301
+ token_type: 'Bearer',
302
+ expiry: Math.floor(Date.now() / 1000) + 3600,
303
+ }),
304
+ getToken: vi.fn().mockResolvedValue(null),
305
+ refreshToken: vi.fn().mockResolvedValue(null),
306
+ };
307
+ manager.registerProvider(provider);
308
+ await manager.toggleOAuthEnabled('anthropic');
309
+ manager.setSessionBucket('anthropic', 'foreground-bucket');
310
+ await tokenStore.saveToken('anthropic', {
311
+ access_token: 'foreground-token',
312
+ token_type: 'Bearer',
313
+ expiry: Math.floor(Date.now() / 1000) + 3600,
314
+ }, 'foreground-bucket');
315
+ const metadata = {
316
+ profileId: 'missing-profile',
317
+ providerId: 'anthropic',
318
+ runtimeMetadata: {
319
+ source: 'SubagentOrchestrator',
320
+ subagent: 'codeanalyzer',
321
+ },
322
+ };
323
+ await expect(manager.getOAuthToken('anthropic', metadata)).rejects.toThrow('Unexpected profile lookup: missing-profile');
324
+ });
325
+ it('establishes a request-scoped default session bucket for single-bucket profiles', async () => {
326
+ mockGetCurrentProfileName.mockReturnValue('foreground-profile');
327
+ mockLoadProfile.mockImplementation(async (profileName) => {
328
+ if (profileName === 'foreground-profile') {
329
+ return {
330
+ provider: 'anthropic',
331
+ auth: {
332
+ type: 'oauth',
333
+ buckets: ['foreground-bucket'],
334
+ },
335
+ };
336
+ }
337
+ if (profileName === 'subagent-single') {
338
+ return {
339
+ provider: 'anthropic',
340
+ auth: {
341
+ type: 'oauth',
342
+ buckets: ['subagent-bucket'],
343
+ },
344
+ };
345
+ }
346
+ throw new Error(`Unexpected profile lookup: ${profileName}`);
347
+ });
348
+ const provider = {
349
+ name: 'anthropic',
350
+ initiateAuth: vi.fn().mockResolvedValue({
351
+ access_token: 'fresh-token',
352
+ token_type: 'Bearer',
353
+ expiry: Math.floor(Date.now() / 1000) + 3600,
354
+ }),
355
+ getToken: vi.fn().mockResolvedValue(null),
356
+ refreshToken: vi.fn().mockResolvedValue(null),
357
+ };
358
+ manager.registerProvider(provider);
359
+ await manager.toggleOAuthEnabled('anthropic');
360
+ manager.setSessionBucket('anthropic', 'foreground-bucket');
361
+ const metadata = {
362
+ profileId: 'subagent-single',
363
+ providerId: 'anthropic',
364
+ runtimeMetadata: {
365
+ source: 'SubagentOrchestrator',
366
+ subagent: 'codeanalyzer',
367
+ },
368
+ };
369
+ const token = await manager.getOAuthToken('anthropic', metadata);
370
+ expect(token).toBeNull();
371
+ expect(manager.getSessionBucket('anthropic')).toBe('foreground-bucket');
372
+ expect(manager.getSessionBucket('anthropic', metadata)).toBe('subagent-bucket');
373
+ });
374
+ it('uses the current profile scoped session bucket for logout when no bucket is provided', async () => {
375
+ mockGetCurrentProfileName.mockReturnValue('opusthinkingbucketed');
376
+ mockLoadProfile.mockResolvedValue({
377
+ provider: 'anthropic',
378
+ auth: {
379
+ type: 'oauth',
380
+ buckets: ['bucket-a', 'bucket-b'],
381
+ },
382
+ });
383
+ const logout = vi.fn().mockResolvedValue(undefined);
384
+ const provider = {
385
+ name: 'anthropic',
386
+ initiateAuth: vi.fn().mockResolvedValue({
387
+ access_token: 'fresh-token',
388
+ token_type: 'Bearer',
389
+ expiry: Math.floor(Date.now() / 1000) + 3600,
390
+ }),
391
+ getToken: vi.fn().mockResolvedValue(null),
392
+ refreshToken: vi.fn().mockResolvedValue(null),
393
+ logout,
394
+ };
395
+ manager.registerProvider(provider);
396
+ await tokenStore.saveToken('anthropic', {
397
+ access_token: 'bucket-b-token',
398
+ token_type: 'Bearer',
399
+ expiry: Math.floor(Date.now() / 1000) + 3600,
400
+ }, 'bucket-b');
401
+ manager.setSessionBucket('anthropic', 'bucket-b', {
402
+ profileId: 'opusthinkingbucketed',
403
+ providerId: 'anthropic',
404
+ });
405
+ await manager.logout('anthropic');
406
+ expect(logout).toHaveBeenCalledTimes(1);
407
+ await expect(tokenStore.getToken('anthropic', 'bucket-b')).resolves.toBeNull();
408
+ });
409
+ it('falls back to the unscoped foreground session bucket for logout when no scoped bucket exists', async () => {
410
+ mockGetCurrentProfileName.mockReturnValue('opusthinkingbucketed');
411
+ mockLoadProfile.mockResolvedValue({
412
+ provider: 'anthropic',
413
+ auth: {
414
+ type: 'oauth',
415
+ buckets: ['bucket-a', 'bucket-b'],
416
+ },
417
+ });
418
+ const logout = vi.fn().mockResolvedValue(undefined);
419
+ const provider = {
420
+ name: 'anthropic',
421
+ initiateAuth: vi.fn().mockResolvedValue({
422
+ access_token: 'fresh-token',
423
+ token_type: 'Bearer',
424
+ expiry: Math.floor(Date.now() / 1000) + 3600,
425
+ }),
426
+ getToken: vi.fn().mockResolvedValue(null),
427
+ refreshToken: vi.fn().mockResolvedValue(null),
428
+ logout,
429
+ };
430
+ manager.registerProvider(provider);
431
+ await tokenStore.saveToken('anthropic', {
432
+ access_token: 'bucket-b-token',
433
+ token_type: 'Bearer',
434
+ expiry: Math.floor(Date.now() / 1000) + 3600,
435
+ }, 'bucket-b');
436
+ manager.setSessionBucket('anthropic', 'bucket-b');
437
+ await manager.logout('anthropic');
438
+ expect(logout).toHaveBeenCalledTimes(1);
439
+ await expect(tokenStore.getToken('anthropic', 'bucket-b')).resolves.toBeNull();
440
+ });
441
+ it('marks the current profile scoped session bucket as active in auth status', async () => {
442
+ mockGetCurrentProfileName.mockReturnValue('opusthinkingbucketed');
443
+ mockLoadProfile.mockResolvedValue({
444
+ provider: 'anthropic',
445
+ auth: {
446
+ type: 'oauth',
447
+ buckets: ['bucket-a', 'bucket-b'],
448
+ },
449
+ });
450
+ await tokenStore.saveToken('anthropic', {
451
+ access_token: 'bucket-a-token',
452
+ token_type: 'Bearer',
453
+ expiry: Math.floor(Date.now() / 1000) + 3600,
454
+ }, 'bucket-a');
455
+ await tokenStore.saveToken('anthropic', {
456
+ access_token: 'bucket-b-token',
457
+ token_type: 'Bearer',
458
+ expiry: Math.floor(Date.now() / 1000) + 3600,
459
+ }, 'bucket-b');
460
+ manager.setSessionBucket('anthropic', 'bucket-b', {
461
+ profileId: 'opusthinkingbucketed',
462
+ providerId: 'anthropic',
463
+ });
464
+ const statuses = await manager.getAuthStatusWithBuckets('anthropic');
465
+ expect(statuses.find((status) => status.bucket === 'bucket-a')?.isSessionBucket).toBe(false);
466
+ expect(statuses.find((status) => status.bucket === 'bucket-b')?.isSessionBucket).toBe(true);
467
+ });
468
+ it('falls back to the unscoped foreground session bucket in auth status when no scoped bucket exists', async () => {
469
+ mockGetCurrentProfileName.mockReturnValue('opusthinkingbucketed');
470
+ mockLoadProfile.mockResolvedValue({
471
+ provider: 'anthropic',
472
+ auth: {
473
+ type: 'oauth',
474
+ buckets: ['bucket-a', 'bucket-b'],
475
+ },
476
+ });
477
+ await tokenStore.saveToken('anthropic', {
478
+ access_token: 'bucket-a-token',
479
+ token_type: 'Bearer',
480
+ expiry: Math.floor(Date.now() / 1000) + 3600,
481
+ }, 'bucket-a');
482
+ await tokenStore.saveToken('anthropic', {
483
+ access_token: 'bucket-b-token',
484
+ token_type: 'Bearer',
485
+ expiry: Math.floor(Date.now() / 1000) + 3600,
486
+ }, 'bucket-b');
487
+ manager.setSessionBucket('anthropic', 'bucket-b');
488
+ const statuses = await manager.getAuthStatusWithBuckets('anthropic');
489
+ expect(statuses.find((status) => status.bucket === 'bucket-a')?.isSessionBucket).toBe(false);
490
+ expect(statuses.find((status) => status.bucket === 'bucket-b')?.isSessionBucket).toBe(true);
491
+ });
492
+ it('uses the current profile scoped session bucket for anthropic usage lookups', async () => {
493
+ mockGetCurrentProfileName.mockReturnValue('opusthinkingbucketed');
494
+ mockLoadProfile.mockResolvedValue({
495
+ provider: 'anthropic',
496
+ auth: {
497
+ type: 'oauth',
498
+ buckets: ['bucket-a', 'bucket-b'],
499
+ },
500
+ });
501
+ const provider = {
502
+ name: 'anthropic',
503
+ initiateAuth: vi.fn().mockResolvedValue({
504
+ access_token: 'fresh-token',
505
+ token_type: 'Bearer',
506
+ expiry: Math.floor(Date.now() / 1000) + 3600,
507
+ }),
508
+ getToken: vi.fn().mockResolvedValue(null),
509
+ refreshToken: vi.fn().mockResolvedValue(null),
510
+ };
511
+ manager.registerProvider(provider);
512
+ await tokenStore.saveToken('anthropic', {
513
+ access_token: 'bucket-b-token',
514
+ token_type: 'Bearer',
515
+ expiry: Math.floor(Date.now() / 1000) + 3600,
516
+ }, 'bucket-b');
517
+ manager.setSessionBucket('anthropic', 'bucket-b', {
518
+ profileId: 'opusthinkingbucketed',
519
+ providerId: 'anthropic',
520
+ });
521
+ mockFetchAnthropicUsage.mockResolvedValue({ bucket: 'bucket-b' });
522
+ const usage = await manager.getAnthropicUsageInfo();
523
+ expect(mockFetchAnthropicUsage).toHaveBeenCalledWith('bucket-b-token');
524
+ expect(usage).toEqual({ bucket: 'bucket-b' });
525
+ });
526
+ it('falls back to the unscoped foreground session bucket for anthropic usage lookups when no scoped bucket exists', async () => {
527
+ mockGetCurrentProfileName.mockReturnValue('opusthinkingbucketed');
528
+ mockLoadProfile.mockResolvedValue({
529
+ provider: 'anthropic',
530
+ auth: {
531
+ type: 'oauth',
532
+ buckets: ['bucket-a', 'bucket-b'],
533
+ },
534
+ });
535
+ const provider = {
536
+ name: 'anthropic',
537
+ initiateAuth: vi.fn().mockResolvedValue({
538
+ access_token: 'fresh-token',
539
+ token_type: 'Bearer',
540
+ expiry: Math.floor(Date.now() / 1000) + 3600,
541
+ }),
542
+ getToken: vi.fn().mockResolvedValue(null),
543
+ refreshToken: vi.fn().mockResolvedValue(null),
544
+ };
545
+ manager.registerProvider(provider);
546
+ await tokenStore.saveToken('anthropic', {
547
+ access_token: 'bucket-b-token',
548
+ token_type: 'Bearer',
549
+ expiry: Math.floor(Date.now() / 1000) + 3600,
550
+ }, 'bucket-b');
551
+ manager.setSessionBucket('anthropic', 'bucket-b');
552
+ mockFetchAnthropicUsage.mockResolvedValue({ bucket: 'bucket-b' });
553
+ const usage = await manager.getAnthropicUsageInfo();
554
+ expect(mockFetchAnthropicUsage).toHaveBeenCalledWith('bucket-b-token');
555
+ expect(usage).toEqual({ bucket: 'bucket-b' });
556
+ });
557
+ it('uses the only configured profile bucket for logout, auth status, and anthropic usage after a fresh restart', async () => {
558
+ mockGetCurrentProfileName.mockReturnValue('single-bucket-profile');
559
+ mockLoadProfile.mockResolvedValue({
560
+ provider: 'anthropic',
561
+ auth: {
562
+ type: 'oauth',
563
+ buckets: ['named-bucket'],
564
+ },
565
+ });
566
+ const logout = vi.fn().mockResolvedValue(undefined);
567
+ const provider = {
568
+ name: 'anthropic',
569
+ initiateAuth: vi.fn().mockResolvedValue({
570
+ access_token: 'fresh-token',
571
+ token_type: 'Bearer',
572
+ expiry: Math.floor(Date.now() / 1000) + 3600,
573
+ }),
574
+ getToken: vi.fn().mockResolvedValue(null),
575
+ refreshToken: vi.fn().mockResolvedValue(null),
576
+ logout,
577
+ };
578
+ manager.registerProvider(provider);
579
+ await tokenStore.saveToken('anthropic', {
580
+ access_token: 'named-bucket-token',
581
+ token_type: 'Bearer',
582
+ expiry: Math.floor(Date.now() / 1000) + 3600,
583
+ }, 'named-bucket');
584
+ mockFetchAnthropicUsage.mockResolvedValue({ bucket: 'named-bucket' });
585
+ const statusesBeforeLogout = await manager.getAuthStatusWithBuckets('anthropic');
586
+ expect(statusesBeforeLogout.find((status) => status.bucket === 'named-bucket')
587
+ ?.isSessionBucket).toBe(true);
588
+ const usage = await manager.getAnthropicUsageInfo();
589
+ expect(mockFetchAnthropicUsage).toHaveBeenCalledWith('named-bucket-token');
590
+ expect(usage).toEqual({ bucket: 'named-bucket' });
591
+ await manager.logout('anthropic');
592
+ expect(logout).toHaveBeenCalledTimes(1);
593
+ await expect(tokenStore.getToken('anthropic', 'named-bucket')).resolves.toBeNull();
594
+ });
595
+ it('prefers the current profile only bucket over a stale unscoped session bucket', async () => {
596
+ mockGetCurrentProfileName.mockReturnValue('single-bucket-profile');
597
+ mockLoadProfile.mockResolvedValue({
598
+ provider: 'anthropic',
599
+ auth: {
600
+ type: 'oauth',
601
+ buckets: ['named-bucket'],
602
+ },
603
+ });
604
+ const logout = vi.fn().mockResolvedValue(undefined);
605
+ const provider = {
606
+ name: 'anthropic',
607
+ initiateAuth: vi.fn().mockResolvedValue({
608
+ access_token: 'fresh-token',
609
+ token_type: 'Bearer',
610
+ expiry: Math.floor(Date.now() / 1000) + 3600,
611
+ }),
612
+ getToken: vi.fn().mockResolvedValue(null),
613
+ refreshToken: vi.fn().mockResolvedValue(null),
614
+ logout,
615
+ };
616
+ manager.registerProvider(provider);
617
+ await tokenStore.saveToken('anthropic', {
618
+ access_token: 'foreground-token',
619
+ token_type: 'Bearer',
620
+ expiry: Math.floor(Date.now() / 1000) + 3600,
621
+ }, 'foreground-bucket');
622
+ await tokenStore.saveToken('anthropic', {
623
+ access_token: 'named-bucket-token',
624
+ token_type: 'Bearer',
625
+ expiry: Math.floor(Date.now() / 1000) + 3600,
626
+ }, 'named-bucket');
627
+ manager.setSessionBucket('anthropic', 'foreground-bucket');
628
+ mockFetchAnthropicUsage.mockResolvedValue({ bucket: 'named-bucket' });
629
+ const statuses = await manager.getAuthStatusWithBuckets('anthropic');
630
+ expect(statuses.find((status) => status.bucket === 'named-bucket')
631
+ ?.isSessionBucket).toBe(true);
632
+ expect(statuses.find((status) => status.bucket === 'foreground-bucket')
633
+ ?.isSessionBucket).toBe(false);
634
+ const usage = await manager.getAnthropicUsageInfo();
635
+ expect(mockFetchAnthropicUsage).toHaveBeenCalledWith('named-bucket-token');
636
+ expect(usage).toEqual({ bucket: 'named-bucket' });
637
+ await manager.logout('anthropic');
638
+ expect(logout).toHaveBeenCalledTimes(1);
639
+ await expect(tokenStore.getToken('anthropic', 'named-bucket')).resolves.toBeNull();
640
+ await expect(tokenStore.getToken('anthropic', 'foreground-bucket')).resolves.not.toBeNull();
641
+ });
117
642
  describe('when requesting buckets for a provider that matches the loaded profile', () => {
118
643
  /**
119
644
  * @requirement Issue #1468
@@ -1 +1 @@
1
- {"version":3,"file":"oauth-manager.issue1468.spec.js","sourceRoot":"","sources":["../../../src/auth/oauth-manager.issue1468.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oauth-manager.issue1468.spec.js","sourceRoot":"","sources":["../../../src/auth/oauth-manager.issue1468.spec.ts"],"names":[],"mappings":"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"}