import { createDecorator } from '@moonshot-ai/agent-core-v2'; import { verifyPassword } from './password'; import type { TokenStore } from './tokenStore'; export interface IAuthTokenService { readonly _serviceBrand: undefined; getToken(): string; isValid(candidate: string): Promise; } export const IAuthTokenService = createDecorator('authTokenService'); export function createAuthTokenService(deps: { readonly tokenStore: TokenStore; readonly passwordHash: string | undefined; }): IAuthTokenService { return { _serviceBrand: undefined, getToken: () => deps.tokenStore.getToken(), isValid: async (candidate) => deps.tokenStore.isValid(candidate) || (await verifyPassword(candidate, deps.passwordHash)), }; }