/** * Database Service - Prisma-based persistence layer */ import { PrismaClient, Prisma } from '@prisma/client'; /** * Database Service */ export declare class DatabaseService { private prisma; private logger; private isConnected; constructor(); /** * Connect to database */ connect(): Promise; /** * Disconnect from database */ disconnect(): Promise; /** * Get Prisma client */ getClient(): PrismaClient; /** * Create project */ createProject(data: Prisma.ProjectCreateInput): Promise<{ description: string | null; status: import(".prisma/client").$Enums.ProjectStatus; priority: number; createdAt: Date; completedAt: Date | null; name: string; id: string; updatedAt: Date; metadata: Prisma.JsonValue | null; masterPlan: string; }>; /** * Get project by ID */ getProject(id: string): Promise<{ tasks: { type: string; description: string | null; status: import(".prisma/client").$Enums.TaskStatus; priority: number; assignedTo: string | null; assignedAt: Date | null; createdAt: Date; completedAt: Date | null; requiredCapabilities: string[]; name: string; maxRetries: number; projectId: string; id: string; updatedAt: Date; metadata: Prisma.JsonValue | null; estimatedTokens: number | null; retryCount: number; startedAt: Date | null; estimatedDuration: number | null; }[]; workflows: { error: string | null; description: string | null; status: import(".prisma/client").$Enums.WorkflowStatus; createdAt: Date; completedAt: Date | null; name: string; projectId: string; id: string; updatedAt: Date; metadata: Prisma.JsonValue | null; startedAt: Date | null; definition: Prisma.JsonValue; }[]; metrics: { createdAt: Date; totalTasks: number; projectId: string; id: string; updatedAt: Date; completedTasks: number; failedTasks: number; averageDuration: number; totalDuration: number | null; contextUsage: number; tokenUsage: number; }; } & { description: string | null; status: import(".prisma/client").$Enums.ProjectStatus; priority: number; createdAt: Date; completedAt: Date | null; name: string; id: string; updatedAt: Date; metadata: Prisma.JsonValue | null; masterPlan: string; }>; /** * Update project */ updateProject(id: string, data: Prisma.ProjectUpdateInput): Promise<{ description: string | null; status: import(".prisma/client").$Enums.ProjectStatus; priority: number; createdAt: Date; completedAt: Date | null; name: string; id: string; updatedAt: Date; metadata: Prisma.JsonValue | null; masterPlan: string; }>; /** * Get active projects */ getActiveProjects(): Promise<({ metrics: { createdAt: Date; totalTasks: number; projectId: string; id: string; updatedAt: Date; completedTasks: number; failedTasks: number; averageDuration: number; totalDuration: number | null; contextUsage: number; tokenUsage: number; }; } & { description: string | null; status: import(".prisma/client").$Enums.ProjectStatus; priority: number; createdAt: Date; completedAt: Date | null; name: string; id: string; updatedAt: Date; metadata: Prisma.JsonValue | null; masterPlan: string; })[]>; /** * Create task */ createTask(data: Prisma.TaskCreateInput): Promise<{ type: string; description: string | null; status: import(".prisma/client").$Enums.TaskStatus; priority: number; assignedTo: string | null; assignedAt: Date | null; createdAt: Date; completedAt: Date | null; requiredCapabilities: string[]; name: string; maxRetries: number; projectId: string; id: string; updatedAt: Date; metadata: Prisma.JsonValue | null; estimatedTokens: number | null; retryCount: number; startedAt: Date | null; estimatedDuration: number | null; }>; /** * Create multiple tasks */ createTasks(tasks: Prisma.TaskCreateManyInput[]): Promise; /** * Get task by ID */ getTask(id: string): Promise<{ result: { error: string | null; taskId: string; status: import(".prisma/client").$Enums.TaskStatus; createdAt: Date; id: string; metrics: Prisma.JsonValue | null; output: Prisma.JsonValue | null; }; terminal: { lastHeartbeat: Date | null; status: import(".prisma/client").$Enums.TerminalStatus; createdAt: Date; capabilities: string[]; specializations: string[]; ipAddress: string | null; name: string; id: string; updatedAt: Date; metadata: Prisma.JsonValue | null; maxTokens: number; maxConcurrentTasks: number; performanceScore: number | null; userAgent: string | null; connectedAt: Date; disconnectedAt: Date | null; }; project: { description: string | null; status: import(".prisma/client").$Enums.ProjectStatus; priority: number; createdAt: Date; completedAt: Date | null; name: string; id: string; updatedAt: Date; metadata: Prisma.JsonValue | null; masterPlan: string; }; dependencies: { taskId: string; createdAt: Date; id: string; dependsOnId: string; }[]; dependents: { taskId: string; createdAt: Date; id: string; dependsOnId: string; }[]; artifacts: { url: string | null; taskId: string; type: string; createdAt: Date; size: number; name: string; id: string; metadata: Prisma.JsonValue | null; content: Buffer | null; }[]; } & { type: string; description: string | null; status: import(".prisma/client").$Enums.TaskStatus; priority: number; assignedTo: string | null; assignedAt: Date | null; createdAt: Date; completedAt: Date | null; requiredCapabilities: string[]; name: string; maxRetries: number; projectId: string; id: string; updatedAt: Date; metadata: Prisma.JsonValue | null; estimatedTokens: number | null; retryCount: number; startedAt: Date | null; estimatedDuration: number | null; }>; /** * Update task */ updateTask(id: string, data: Prisma.TaskUpdateInput): Promise<{ type: string; description: string | null; status: import(".prisma/client").$Enums.TaskStatus; priority: number; assignedTo: string | null; assignedAt: Date | null; createdAt: Date; completedAt: Date | null; requiredCapabilities: string[]; name: string; maxRetries: number; projectId: string; id: string; updatedAt: Date; metadata: Prisma.JsonValue | null; estimatedTokens: number | null; retryCount: number; startedAt: Date | null; estimatedDuration: number | null; }>; /** * Get pending tasks */ getPendingTasks(limit?: number): Promise<{ type: string; description: string | null; status: import(".prisma/client").$Enums.TaskStatus; priority: number; assignedTo: string | null; assignedAt: Date | null; createdAt: Date; completedAt: Date | null; requiredCapabilities: string[]; name: string; maxRetries: number; projectId: string; id: string; updatedAt: Date; metadata: Prisma.JsonValue | null; estimatedTokens: number | null; retryCount: number; startedAt: Date | null; estimatedDuration: number | null; }[]>; /** * Assign task to terminal */ assignTask(taskId: string, terminalId: string): Promise<{ type: string; description: string | null; status: import(".prisma/client").$Enums.TaskStatus; priority: number; assignedTo: string | null; assignedAt: Date | null; createdAt: Date; completedAt: Date | null; requiredCapabilities: string[]; name: string; maxRetries: number; projectId: string; id: string; updatedAt: Date; metadata: Prisma.JsonValue | null; estimatedTokens: number | null; retryCount: number; startedAt: Date | null; estimatedDuration: number | null; }>; /** * Complete task */ completeTask(taskId: string, result: Prisma.TaskResultCreateWithoutTaskInput): Promise<[{ type: string; description: string | null; status: import(".prisma/client").$Enums.TaskStatus; priority: number; assignedTo: string | null; assignedAt: Date | null; createdAt: Date; completedAt: Date | null; requiredCapabilities: string[]; name: string; maxRetries: number; projectId: string; id: string; updatedAt: Date; metadata: Prisma.JsonValue | null; estimatedTokens: number | null; retryCount: number; startedAt: Date | null; estimatedDuration: number | null; }, { error: string | null; taskId: string; status: import(".prisma/client").$Enums.TaskStatus; createdAt: Date; id: string; metrics: Prisma.JsonValue | null; output: Prisma.JsonValue | null; }]>; /** * Create task dependency */ createTaskDependency(taskId: string, dependsOnId: string): Promise<{ taskId: string; createdAt: Date; id: string; dependsOnId: string; }>; /** * Get task dependencies */ getTaskDependencies(taskId: string): Promise<({ dependsOn: { type: string; description: string | null; status: import(".prisma/client").$Enums.TaskStatus; priority: number; assignedTo: string | null; assignedAt: Date | null; createdAt: Date; completedAt: Date | null; requiredCapabilities: string[]; name: string; maxRetries: number; projectId: string; id: string; updatedAt: Date; metadata: Prisma.JsonValue | null; estimatedTokens: number | null; retryCount: number; startedAt: Date | null; estimatedDuration: number | null; }; } & { taskId: string; createdAt: Date; id: string; dependsOnId: string; })[]>; /** * Register terminal */ registerTerminal(data: Prisma.TerminalCreateInput): Promise<{ lastHeartbeat: Date | null; status: import(".prisma/client").$Enums.TerminalStatus; createdAt: Date; capabilities: string[]; specializations: string[]; ipAddress: string | null; name: string; id: string; updatedAt: Date; metadata: Prisma.JsonValue | null; maxTokens: number; maxConcurrentTasks: number; performanceScore: number | null; userAgent: string | null; connectedAt: Date; disconnectedAt: Date | null; }>; /** * Update terminal */ updateTerminal(id: string, data: Prisma.TerminalUpdateInput): Promise<{ lastHeartbeat: Date | null; status: import(".prisma/client").$Enums.TerminalStatus; createdAt: Date; capabilities: string[]; specializations: string[]; ipAddress: string | null; name: string; id: string; updatedAt: Date; metadata: Prisma.JsonValue | null; maxTokens: number; maxConcurrentTasks: number; performanceScore: number | null; userAgent: string | null; connectedAt: Date; disconnectedAt: Date | null; }>; /** * Get terminal by ID */ getTerminal(id: string): Promise<{ tasks: { type: string; description: string | null; status: import(".prisma/client").$Enums.TaskStatus; priority: number; assignedTo: string | null; assignedAt: Date | null; createdAt: Date; completedAt: Date | null; requiredCapabilities: string[]; name: string; maxRetries: number; projectId: string; id: string; updatedAt: Date; metadata: Prisma.JsonValue | null; estimatedTokens: number | null; retryCount: number; startedAt: Date | null; estimatedDuration: number | null; }[]; } & { lastHeartbeat: Date | null; status: import(".prisma/client").$Enums.TerminalStatus; createdAt: Date; capabilities: string[]; specializations: string[]; ipAddress: string | null; name: string; id: string; updatedAt: Date; metadata: Prisma.JsonValue | null; maxTokens: number; maxConcurrentTasks: number; performanceScore: number | null; userAgent: string | null; connectedAt: Date; disconnectedAt: Date | null; }>; /** * Get active terminals */ getActiveTerminals(): Promise<{ lastHeartbeat: Date | null; status: import(".prisma/client").$Enums.TerminalStatus; createdAt: Date; capabilities: string[]; specializations: string[]; ipAddress: string | null; name: string; id: string; updatedAt: Date; metadata: Prisma.JsonValue | null; maxTokens: number; maxConcurrentTasks: number; performanceScore: number | null; userAgent: string | null; connectedAt: Date; disconnectedAt: Date | null; }[]>; /** * Disconnect terminal */ disconnectTerminal(id: string): Promise<{ lastHeartbeat: Date | null; status: import(".prisma/client").$Enums.TerminalStatus; createdAt: Date; capabilities: string[]; specializations: string[]; ipAddress: string | null; name: string; id: string; updatedAt: Date; metadata: Prisma.JsonValue | null; maxTokens: number; maxConcurrentTasks: number; performanceScore: number | null; userAgent: string | null; connectedAt: Date; disconnectedAt: Date | null; }>; /** * Create terminal session */ createTerminalSession(terminalId: string, token: string, expiresIn: number): Promise<{ createdAt: Date; terminalId: string; token: string; id: string; expiresAt: Date; }>; /** * Validate terminal session */ validateTerminalSession(token: string): Promise<{ terminal: { lastHeartbeat: Date | null; status: import(".prisma/client").$Enums.TerminalStatus; createdAt: Date; capabilities: string[]; specializations: string[]; ipAddress: string | null; name: string; id: string; updatedAt: Date; metadata: Prisma.JsonValue | null; maxTokens: number; maxConcurrentTasks: number; performanceScore: number | null; userAgent: string | null; connectedAt: Date; disconnectedAt: Date | null; }; } & { createdAt: Date; terminalId: string; token: string; id: string; expiresAt: Date; }>; /** * Create workflow */ createWorkflow(data: Prisma.WorkflowCreateInput): Promise<{ error: string | null; description: string | null; status: import(".prisma/client").$Enums.WorkflowStatus; createdAt: Date; completedAt: Date | null; name: string; projectId: string; id: string; updatedAt: Date; metadata: Prisma.JsonValue | null; startedAt: Date | null; definition: Prisma.JsonValue; }>; /** * Update workflow */ updateWorkflow(id: string, data: Prisma.WorkflowUpdateInput): Promise<{ error: string | null; description: string | null; status: import(".prisma/client").$Enums.WorkflowStatus; createdAt: Date; completedAt: Date | null; name: string; projectId: string; id: string; updatedAt: Date; metadata: Prisma.JsonValue | null; startedAt: Date | null; definition: Prisma.JsonValue; }>; /** * Get workflow */ getWorkflow(id: string): Promise<{ project: { description: string | null; status: import(".prisma/client").$Enums.ProjectStatus; priority: number; createdAt: Date; completedAt: Date | null; name: string; id: string; updatedAt: Date; metadata: Prisma.JsonValue | null; masterPlan: string; }; stages: { status: import(".prisma/client").$Enums.WorkflowStatus; createdAt: Date; completedAt: Date | null; name: string; id: string; metadata: Prisma.JsonValue | null; startedAt: Date | null; workflowId: string; taskIds: string[]; }[]; } & { error: string | null; description: string | null; status: import(".prisma/client").$Enums.WorkflowStatus; createdAt: Date; completedAt: Date | null; name: string; projectId: string; id: string; updatedAt: Date; metadata: Prisma.JsonValue | null; startedAt: Date | null; definition: Prisma.JsonValue; }>; /** * Store context */ storeContext(data: Prisma.ContextCreateInput): Promise<{ taskId: string | null; type: import(".prisma/client").$Enums.ContextType; createdAt: Date; version: number; terminalId: string | null; projectId: string | null; key: string; scope: import(".prisma/client").$Enums.ContextScope; id: string; value: Prisma.JsonValue; updatedAt: Date; createdBy: string; updatedBy: string; metadata: Prisma.JsonValue | null; ttl: number | null; locked: boolean; checksum: string | null; expiresAt: Date | null; }>; /** * Get context */ getContext(key: string, scope: string): Promise<{ taskId: string | null; type: import(".prisma/client").$Enums.ContextType; createdAt: Date; version: number; terminalId: string | null; projectId: string | null; key: string; scope: import(".prisma/client").$Enums.ContextScope; id: string; value: Prisma.JsonValue; updatedAt: Date; createdBy: string; updatedBy: string; metadata: Prisma.JsonValue | null; ttl: number | null; locked: boolean; checksum: string | null; expiresAt: Date | null; }>; /** * Query context */ queryContext(filter: { projectId?: string; taskId?: string; terminalId?: string; scope?: string; type?: string; }): Promise<{ taskId: string | null; type: import(".prisma/client").$Enums.ContextType; createdAt: Date; version: number; terminalId: string | null; projectId: string | null; key: string; scope: import(".prisma/client").$Enums.ContextScope; id: string; value: Prisma.JsonValue; updatedAt: Date; createdBy: string; updatedBy: string; metadata: Prisma.JsonValue | null; ttl: number | null; locked: boolean; checksum: string | null; expiresAt: Date | null; }[]>; /** * Delete expired context */ deleteExpiredContext(): Promise; /** * Enqueue task */ enqueueTask(taskId: string, priority?: number): Promise<{ taskId: string; priority: number; createdAt: Date; id: string; updatedAt: Date; metadata: Prisma.JsonValue | null; attempts: number; scheduledAt: Date | null; }>; /** * Dequeue task */ dequeueTask(): Promise<{ taskId: string; priority: number; createdAt: Date; id: string; updatedAt: Date; metadata: Prisma.JsonValue | null; attempts: number; scheduledAt: Date | null; }>; /** * Get queue size */ getQueueSize(): Promise; /** * Update project metrics */ updateProjectMetrics(projectId: string, data: Prisma.ProjectMetricsUpdateInput): Promise<{ createdAt: Date; totalTasks: number; projectId: string; id: string; updatedAt: Date; completedTasks: number; failedTasks: number; averageDuration: number; totalDuration: number | null; contextUsage: number; tokenUsage: number; }>; /** * Record terminal metrics */ recordTerminalMetrics(data: Prisma.TerminalMetricsCreateInput): Promise<{ terminalId: string; id: string; timestamp: Date; cpuUsage: number; memoryUsage: number; tasksCompleted: number; tasksFailed: number; averageLatency: number; contextSize: number; }>; /** * Get terminal metrics */ getTerminalMetrics(terminalId: string, since?: Date): Promise<{ terminalId: string; id: string; timestamp: Date; cpuUsage: number; memoryUsage: number; tasksCompleted: number; tasksFailed: number; averageLatency: number; contextSize: number; }[]>; /** * Log error */ logError(data: Prisma.ErrorLogCreateInput): Promise<{ error: string; taskId: string | null; createdAt: Date; terminalId: string | null; projectId: string | null; id: string; metadata: Prisma.JsonValue | null; component: string; action: string; stack: string | null; }>; /** * Get error logs */ getErrorLogs(filter: { component?: string; taskId?: string; terminalId?: string; projectId?: string; since?: Date; }): Promise<{ error: string; taskId: string | null; createdAt: Date; terminalId: string | null; projectId: string | null; id: string; metadata: Prisma.JsonValue | null; component: string; action: string; stack: string | null; }[]>; /** * Log audit event */ logAudit(data: Prisma.AuditLogCreateInput): Promise<{ createdAt: Date; ipAddress: string | null; id: string; userAgent: string | null; action: string; userId: string | null; resource: string; resourceId: string | null; changes: Prisma.JsonValue | null; }>; /** * Get audit logs */ getAuditLogs(filter: { userId?: string; action?: string; resource?: string; resourceId?: string; since?: Date; }): Promise<{ createdAt: Date; ipAddress: string | null; id: string; userAgent: string | null; action: string; userId: string | null; resource: string; resourceId: string | null; changes: Prisma.JsonValue | null; }[]>; /** * Execute transaction */ transaction(fn: (prisma: Prisma.TransactionClient) => Promise): Promise; /** * Clean old data */ cleanOldData(daysToKeep?: number): Promise; /** * Get database statistics */ getStatistics(): Promise<{ projects: number; tasks: number; terminals: number; context: number; queue: number; }>; } //# sourceMappingURL=database.service.d.ts.map