/** * agent-session-runner.ts * * Streaming variant of runAgent wired to a VIBN agent_sessions row. * After every LLM turn + tool call, it PATCHes the session in the VIBN DB * so the frontend can poll (and later WebSocket) the live output. * * Key differences from runAgent: * - Accepts an `emit` callback instead of updating job-store * - Accepts an `isStopped` check so the frontend can cancel mid-run * - Tracks which files were written/modified for the changed_files panel * - Calls vibn-frontend's PATCH /api/projects/[id]/agent/sessions/[sid] */ import { AgentConfig } from './agents'; import { ToolContext } from './tools'; export interface OutputLine { ts: string; type: 'step' | 'stdout' | 'stderr' | 'info' | 'error' | 'done'; text: string; } export interface SessionRunOptions { sessionId: string; projectId: string; vibnApiUrl: string; appPath: string; repoRoot?: string; isStopped: () => boolean; autoApprove?: boolean; giteaRepo?: string; coolifyAppUuid?: string; coolifyApiUrl?: string; coolifyApiToken?: string; theiaWorkspaceSubdir?: string; } export declare function runSessionAgent(config: AgentConfig, task: string, ctx: ToolContext, opts: SessionRunOptions): Promise;