BIG pi update with claude chat

This commit is contained in:
Jonas H
2026-04-24 14:22:59 +02:00
parent fbb00a49ba
commit 248667468c
24 changed files with 4225 additions and 1112 deletions

View File

@@ -55,6 +55,8 @@ export interface UsageData {
/** Unix ms timestamp of when the session window resets (from the raw API response). */
sessionResetsAt?: number;
weeklyResetsIn?: string;
/** Unix ms timestamp of when the weekly window resets. */
weeklyResetsAt?: number;
extraSpend?: number;
extraLimit?: number;
error?: string;
@@ -321,13 +323,34 @@ export function formatResetsAt(isoDate: string, nowMs = Date.now()): string {
return formatDuration(diffSeconds);
}
const CLAUDE_CREDENTIALS_FILE = path.join(os.homedir(), ".claude", ".credentials.json");
export function readAuth(authFile = DEFAULT_AUTH_FILE): AuthData | null {
let result: AuthData | null = null;
// Read pi auth.json for non-Claude providers
try {
const parsed = JSON.parse(fs.readFileSync(authFile, "utf-8"));
return asObject(parsed) as AuthData;
result = asObject(parsed) as AuthData;
} catch {
return null;
result = {} as AuthData;
}
// Read Claude credentials from ~/.claude/.credentials.json
try {
const claudeRaw = fs.readFileSync(CLAUDE_CREDENTIALS_FILE, "utf-8");
const claudeCreds = JSON.parse(claudeRaw);
const oauth = claudeCreds?.claudeAiOauth;
if (oauth?.accessToken) {
result!.anthropic = {
access: oauth.accessToken,
refresh: oauth.refreshToken,
expires: typeof oauth.expiresAt === "number" ? oauth.expiresAt : undefined,
};
}
} catch {}
return result;
}
export function writeAuth(auth: AuthData, authFile = DEFAULT_AUTH_FILE): boolean {
@@ -647,6 +670,9 @@ export async function fetchClaudeUsage(token: string, config: RequestConfig = {}
const sessionResetsAt = data?.five_hour?.resets_at
? new Date(data.five_hour.resets_at).getTime()
: undefined;
const weeklyResetsAt = data?.seven_day?.resets_at
? new Date(data.seven_day.resets_at).getTime()
: undefined;
const usage: UsageData = {
session: readPercentCandidate(data?.five_hour?.utilization) ?? 0,
@@ -654,6 +680,7 @@ export async function fetchClaudeUsage(token: string, config: RequestConfig = {}
sessionResetsIn: data?.five_hour?.resets_at ? formatResetsAt(data.five_hour.resets_at) : undefined,
sessionResetsAt: Number.isFinite(sessionResetsAt) ? sessionResetsAt : undefined,
weeklyResetsIn: data?.seven_day?.resets_at ? formatResetsAt(data.seven_day.resets_at) : undefined,
weeklyResetsAt: Number.isFinite(weeklyResetsAt) ? weeklyResetsAt : undefined,
};
if (data?.extra_usage?.is_enabled) {