Something went wrong. Try again.
source dump of claude code forked from oppi.li/claude-code
Something went wrong. Try again.
2.0 kB · 81 lines
TypeScript
at main
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182/** * Singleton manager for cloud-provider authentication status (AWS Bedrock, * GCP Vertex). Communicates auth refresh state between auth utilities and * React components / SDK output. The SDK 'auth_status' message shape is * provider-agnostic, so a single manager serves all providers. * * Legacy name: originally AWS-only; now used by all cloud auth refresh flows. */
import { createSignal } from './signal.js'
export type AwsAuthStatus = { isAuthenticating: boolean output: string[] error?: string}
export class AwsAuthStatusManager { private static instance: AwsAuthStatusManager | null = null private status: AwsAuthStatus = { isAuthenticating: false, output: [], } private changed = createSignal<[status: AwsAuthStatus]>()
static getInstance(): AwsAuthStatusManager { if (!AwsAuthStatusManager.instance) { AwsAuthStatusManager.instance = new AwsAuthStatusManager() } return AwsAuthStatusManager.instance }
getStatus(): AwsAuthStatus { return { ...this.status, output: [...this.status.output], } }
startAuthentication(): void { this.status = { isAuthenticating: true, output: [], } this.changed.emit(this.getStatus()) }
addOutput(line: string): void { this.status.output.push(line) this.changed.emit(this.getStatus()) }
setError(error: string): void { this.status.error = error this.changed.emit(this.getStatus()) }
endAuthentication(success: boolean): void { if (success) { // Clear the status completely on success this.status = { isAuthenticating: false, output: [], } } else { // Keep the output visible on failure this.status.isAuthenticating = false } this.changed.emit(this.getStatus()) }
subscribe = this.changed.subscribe
// Clean up for testing static reset(): void { if (AwsAuthStatusManager.instance) { AwsAuthStatusManager.instance.changed.clear() AwsAuthStatusManager.instance = null } }}