import { BaseSqliteRepository } from './base-sqlite-repository.js'; import { tasks } from '../schema/index.js'; export type TaskRow = typeof tasks.$inferSelect; export type NewTask = typeof tasks.$inferInsert; export interface AgentUsageRow { agentId: string; workspaceId: string | null; totalTasks: number; inputTokens: number; outputTokens: number; cachedInputTokens: number; costUsd: number; totalTokens: number; } export interface TrendRow { date: string; agentId: string; inputTokens: number; outputTokens: number; cachedInputTokens: number; costUsd: number; totalTokens: number; } export interface ProviderUsageRow { provider: string; totalTasks: number; inputTokens: number; outputTokens: number; cachedInputTokens: number; costUsd: number; totalTokens: number; activeDurationMs: number; lastActiveAt: string | null; } export declare class TaskRepository extends BaseSqliteRepository { private readonly dbPath?; constructor(opts?: { dbPath?: string; dbRoot?: string; }); resolveDbPath(): string; private openHandle; startTask(opts: { id: string; agentId: string; prompt: string; mode: string; status: string; startedAt: string; pid?: number | null; parentTaskId?: string | null; callerAgentId?: string | null; traceId?: string | null; command?: string | null; metadata?: string | null; workspaceId?: string | null; platform?: string | null; crewxVersion?: string | null; threadId?: string | null; model?: string | null; renderedPrompt?: string | null; codingAgentCommand?: string | null; }): void; finishTask(opts: { id: string; status: string; result?: string | null; error?: string | null; completedAt: string; durationMs?: number | null; exitCode?: number | null; inputTokens?: number; outputTokens?: number; cachedInputTokens?: number; costUsd?: number; model?: string | null; }): void; appendLog(taskId: string, entry: { timestamp: string; level: string; message: string; }): void; getRunningTasks(): TaskRow[]; getAllTasks(): TaskRow[]; getTask(id: string): TaskRow | undefined; killTask(id: string): { killed: boolean; pid?: number; }; reapOrphanedTasks(): number; findTaskStatus(taskId: string, workspaceId?: string): TaskRow | undefined; findChildTasks(parentTaskId: string, workspaceId?: string): TaskRow[]; getWorkspaceUsageSummary(workspaceId?: string): Array<{ workspace_id: string; input_tokens: number; output_tokens: number; cost_usd: number; task_count: number; }>; getThreadTokenUsage(threadId: string, workspaceId?: string): { inputTokens: number; outputTokens: number; costUsd: number; }; findTasksByThread(threadId: string, workspaceId?: string): TaskRow[]; findAllTasks(params: { workspaceId?: string; agentId?: string; agents?: string[]; status?: string; statuses?: string[]; search?: string; q?: string; limit: number; offset: number; sortDir?: 'ASC' | 'DESC'; from?: string; to?: string; }): { rows: TaskRow[]; total: number; }; getAgentUsage(from: string, to: string, workspace?: string): AgentUsageRow[]; getAgentUsageTrendRaw(from: string, to: string, workspace?: string): TrendRow[]; findTaskForStop(taskId: string, workspaceId: string): TaskRow | undefined; markTaskFailed(taskId: string, error: string, workspaceId?: string): void; findTasksByPromptHint(hint: string, workspaceId?: string): TaskRow[]; getProviderUsage(from: string, to: string, workspace?: string): ProviderUsageRow[]; }