2026-02-07 08:52:37 +09:00

30 lines
907 B
TypeScript

/**
* Session management helpers for agent execution
*/
import { loadPersonaSessions, updatePersonaSession, loadGlobalConfig } from '../../../infra/config/index.js';
import type { AgentResponse } from '../../../core/models/index.js';
/**
* Execute a function with agent session management.
* Automatically loads existing session and saves updated session ID.
*/
export async function withPersonaSession(
cwd: string,
personaName: string,
fn: (sessionId?: string) => Promise<AgentResponse>,
provider?: string
): Promise<AgentResponse> {
const resolvedProvider = provider ?? loadGlobalConfig().provider ?? 'claude';
const sessions = loadPersonaSessions(cwd, resolvedProvider);
const sessionId = sessions[personaName];
const result = await fn(sessionId);
if (result.sessionId) {
updatePersonaSession(cwd, personaName, result.sessionId, resolvedProvider);
}
return result;
}