Files
DeskClaw/src/stores/chat/cron-session-utils.ts

38 lines
1.0 KiB
TypeScript

export interface CronSessionKeyParts {
agentId: string;
jobId: string;
runSessionId?: string;
}
export function parseCronSessionKey(sessionKey: string): CronSessionKeyParts | null {
if (!sessionKey.startsWith('agent:')) return null;
const parts = sessionKey.split(':');
if (parts.length < 4 || parts[2] !== 'cron') return null;
const agentId = parts[1] || 'main';
const jobId = parts[3];
if (!jobId) return null;
if (parts.length === 4) {
return { agentId, jobId };
}
if (parts.length === 6 && parts[4] === 'run' && parts[5]) {
return { agentId, jobId, runSessionId: parts[5] };
}
return null;
}
export function isCronSessionKey(sessionKey: string): boolean {
return parseCronSessionKey(sessionKey) != null;
}
export function buildCronSessionHistoryPath(sessionKey: string, limit = 200): string {
const params = new URLSearchParams({ sessionKey });
if (Number.isFinite(limit) && limit > 0) {
params.set('limit', String(Math.floor(limit)));
}
return `/api/cron/session-history?${params.toString()}`;
}