Files
zn-ai/electron/utils/token-usage-writer.ts
duanshuwen 85d92b937f feat: add models management and usage history components
- Introduced RequestContentDialog for displaying request content details.
- Added UsageBarChart for visualizing token usage data.
- Implemented UsageHistorySection to manage and display usage history with filtering and pagination.
- Created provider-types for managing provider-related types.
- Developed ModelsPage to encapsulate models configuration, providers, and usage history.
- Defined usage-history types and utility functions for managing usage data.
- Updated routing to include models page and redirect agents to models.
- Refactored chat store to integrate models instead of agents.
- Established models store for managing model-related state and data fetching.
2026-04-18 09:41:59 +08:00

42 lines
1.4 KiB
TypeScript

import { app } from 'electron';
import * as fs from 'fs';
import * as path from 'path';
import { parseSessionKey } from '@runtime/lib/models';
const PRIMARY_TRANSCRIPT_ROOT_DIR = 'models';
const LEGACY_TRANSCRIPT_ROOT_DIR = 'agents';
function buildTranscriptFilePath(sessionKey: string, rootDirName: string): string {
const parsed = parseSessionKey(sessionKey);
const agentId = parsed.isAgentSession ? parsed.agentId : 'default';
let sessionId = parsed.isAgentSession ? parsed.sessionId : sessionKey;
if (!sessionId) {
sessionId = 'unknown';
}
const baseDir = path.join(app.getPath('userData'), rootDirName, agentId, 'sessions');
return path.join(baseDir, `${sessionId}.jsonl`);
}
export function getTranscriptFilePath(sessionKey: string): string {
return buildTranscriptFilePath(sessionKey, PRIMARY_TRANSCRIPT_ROOT_DIR);
}
export function getLegacyTranscriptFilePath(sessionKey: string): string {
return buildTranscriptFilePath(sessionKey, LEGACY_TRANSCRIPT_ROOT_DIR);
}
export function getTranscriptPathCandidates(sessionKey: string): string[] {
return Array.from(new Set([
getTranscriptFilePath(sessionKey),
getLegacyTranscriptFilePath(sessionKey),
]));
}
export function appendTranscriptLine(sessionKey: string, lineObject: any): void {
const filePath = getTranscriptFilePath(sessionKey);
fs.mkdirSync(path.dirname(filePath), { recursive: true });
fs.appendFileSync(filePath, JSON.stringify(lineObject) + '\n', 'utf-8');
}