feat(ai/usage): added automatic token refresh for expired Kimi OAuth credentials
- Added automatic token refresh for expired Kimi OAuth credentials in usage provider. - Imported refreshKimiToken function to enable token refresh capability. - Enhanced error handling with validation for refresh token availability and try-catch block for refresh failures.
This commit is contained in:
@@ -9,7 +9,7 @@ import type {
|
||||
UsageStatus,
|
||||
UsageWindow,
|
||||
} from "../usage";
|
||||
import { getKimiCommonHeaders } from "../utils/oauth/kimi";
|
||||
import { getKimiCommonHeaders, refreshKimiToken } from "../utils/oauth/kimi";
|
||||
|
||||
const DEFAULT_BASE_URL = "https://api.kimi.com/coding/v1";
|
||||
const USAGE_PATH = "usages";
|
||||
@@ -259,13 +259,23 @@ export const kimiUsageProvider: UsageProvider = {
|
||||
const { credential } = params;
|
||||
if (credential.type !== "oauth") return null;
|
||||
|
||||
const accessToken = credential.accessToken;
|
||||
let accessToken = credential.accessToken;
|
||||
if (!accessToken) return null;
|
||||
|
||||
const nowMs = ctx.now();
|
||||
if (credential.expiresAt !== undefined && credential.expiresAt <= nowMs) {
|
||||
ctx.logger?.warn("Kimi usage token expired", { provider: params.provider });
|
||||
return null;
|
||||
if (!credential.refreshToken) {
|
||||
ctx.logger?.warn("Kimi usage token expired, no refresh token", { provider: params.provider });
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
ctx.logger?.debug("Kimi usage token expired, refreshing", { provider: params.provider });
|
||||
const refreshed = await refreshKimiToken(credential.refreshToken);
|
||||
accessToken = refreshed.access;
|
||||
} catch (error) {
|
||||
ctx.logger?.warn("Kimi usage token refresh failed", { provider: params.provider, error: String(error) });
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
const baseUrl = normalizeBaseUrl(params.baseUrl);
|
||||
|
||||
Reference in New Issue
Block a user