feat(server): refactor copilot (#14892)

#### PR Dependency Tree


* **PR #14892** 👈

This tree was auto-generated by
[Charcoal](https://github.com/danerwilliams/charcoal)
This commit is contained in:
DarkSky
2026-05-04 00:36:47 +08:00
committed by GitHub
parent fa8f1a096c
commit d64f368623
239 changed files with 35859 additions and 16777 deletions
+75 -14
View File
@@ -494,7 +494,7 @@ model AiPrompt {
config Json? @db.Json
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz(3)
updatedAt DateTime @default(now()) @map("updated_at") @db.Timestamptz(3)
// whether the prompt is modified by the admin panel
// whether the prompt metadata is manually overridden in compat storage
modified Boolean @default(false)
messages AiPromptMessage[]
@@ -504,19 +504,21 @@ model AiPrompt {
}
model AiSessionMessage {
id String @id @default(uuid()) @db.VarChar
sessionId String @map("session_id") @db.VarChar
role AiPromptRole
content String @db.Text
streamObjects Json? @db.Json
attachments Json? @db.Json
params Json? @db.Json
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz(3)
updatedAt DateTime @updatedAt @map("updated_at") @db.Timestamptz(3)
id String @id @default(uuid()) @db.VarChar
sessionId String @map("session_id") @db.VarChar
compatSubmissionId String? @map("compat_submission_id") @db.VarChar
role AiPromptRole
content String @db.Text
streamObjects Json? @db.Json
attachments Json? @db.Json
params Json? @db.Json
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz(3)
updatedAt DateTime @updatedAt @map("updated_at") @db.Timestamptz(3)
session AiSession @relation(fields: [sessionId], references: [id], onDelete: Cascade)
@@index([sessionId])
@@index([sessionId, compatSubmissionId])
@@index([createdAt, role])
@@map("ai_sessions_messages")
}
@@ -538,10 +540,11 @@ model AiSession {
updatedAt DateTime @default(now()) @updatedAt @map("updated_at") @db.Timestamptz(3)
deletedAt DateTime? @map("deleted_at") @db.Timestamptz(3)
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
prompt AiPrompt @relation(fields: [promptName], references: [name], onDelete: Cascade)
messages AiSessionMessage[]
context AiContext[]
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
prompt AiPrompt @relation(fields: [promptName], references: [name], onDelete: Cascade)
messages AiSessionMessage[]
context AiContext[]
actionRuns AiActionRun[]
//NOTE:
// unrecorded index:
@@ -554,6 +557,64 @@ model AiSession {
@@map("ai_sessions_metadata")
}
model AiActionRun {
id String @id @default(uuid()) @db.VarChar
userId String @map("user_id") @db.VarChar
workspaceId String @map("workspace_id") @db.VarChar
docId String? @map("doc_id") @db.VarChar
sessionId String? @map("session_id") @db.VarChar
userMessageId String? @map("user_message_id") @db.VarChar
compatSubmissionId String? @map("compat_submission_id") @db.VarChar
assistantMessageId String? @map("assistant_message_id") @db.VarChar
actionId String @map("action_id") @db.VarChar
actionVersion String @map("action_version") @db.VarChar
status String @db.VarChar
attempt Int @default(1)
retryOf String? @map("retry_of") @db.VarChar
inputSnapshot Json? @map("input_snapshot") @db.Json
result Json? @db.Json
artifacts Json? @db.Json
resultSummary String? @map("result_summary") @db.Text
errorCode String? @map("error_code") @db.VarChar
trace Json? @db.Json
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz(3)
updatedAt DateTime @updatedAt @map("updated_at") @db.Timestamptz(3)
session AiSession? @relation(fields: [sessionId], references: [id], onDelete: SetNull)
@@index([userId, workspaceId])
@@index([sessionId])
@@index([actionId, actionVersion])
@@index([status])
@@index([retryOf])
@@map("ai_action_runs")
}
model AiTranscriptTask {
id String @id @default(uuid()) @db.VarChar
userId String @map("user_id") @db.VarChar
workspaceId String @map("workspace_id") @db.VarChar
blobId String @map("blob_id") @db.VarChar
status String @db.VarChar
strategy String @db.VarChar
recipeId String @map("recipe_id") @db.VarChar
recipeVersion String @map("recipe_version") @db.VarChar
actionRunId String? @map("action_run_id") @db.VarChar
inputSnapshot Json? @map("input_snapshot") @db.Json
publicMeta Json? @map("public_meta") @db.Json
protectedResult Json? @map("protected_result") @db.Json
errorCode String? @map("error_code") @db.VarChar
settledAt DateTime? @map("settled_at") @db.Timestamptz(3)
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz(3)
updatedAt DateTime @updatedAt @map("updated_at") @db.Timestamptz(3)
@@index([userId, workspaceId])
@@index([workspaceId, blobId])
@@index([status])
@@index([actionRunId])
@@map("ai_transcript_tasks")
}
model AiContext {
id String @id @default(uuid()) @db.VarChar
sessionId String @map("session_id") @db.VarChar