teamcopilot 0.3.6 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist/chat/index.js +104 -81
  2. package/dist/cronjob/index.js +2 -0
  3. package/dist/cronjobs/index.js +822 -0
  4. package/dist/cronjobs/scheduler.js +936 -0
  5. package/dist/frontend/assets/{cssMode-BRVRAYCz.js → cssMode-Cqdl5sUM.js} +1 -1
  6. package/dist/frontend/assets/{freemarker2-B5FvHwsO.js → freemarker2-ykAhuplU.js} +1 -1
  7. package/dist/frontend/assets/{handlebars-DWX2asql.js → handlebars-DX_JwRM8.js} +1 -1
  8. package/dist/frontend/assets/{html-BEBxxD9G.js → html-Bi_zOcbU.js} +1 -1
  9. package/dist/frontend/assets/{htmlMode-B2LbPTwC.js → htmlMode-CkAUoAah.js} +1 -1
  10. package/dist/frontend/assets/index-Ba9bElZm.css +1 -0
  11. package/dist/frontend/assets/{index-D3TE04C5.js → index-Cgozj4fx.js} +245 -242
  12. package/dist/frontend/assets/{javascript-Bh4JwoPV.js → javascript-D3Rjwp97.js} +1 -1
  13. package/dist/frontend/assets/{jsonMode-7j-aplXT.js → jsonMode-K4i6LjP2.js} +1 -1
  14. package/dist/frontend/assets/{liquid-BP4OxkO7.js → liquid-D8F4-sAz.js} +1 -1
  15. package/dist/frontend/assets/{mdx-C1OIcGbY.js → mdx-C2xw8PNz.js} +1 -1
  16. package/dist/frontend/assets/{python-BO8Wy5jz.js → python-CqTGfu2v.js} +1 -1
  17. package/dist/frontend/assets/{razor-BDtqXvAH.js → razor-DFSsPzdZ.js} +1 -1
  18. package/dist/frontend/assets/{tsMode-D22HcCuX.js → tsMode-BkLQEtPb.js} +1 -1
  19. package/dist/frontend/assets/{typescript-CagwEzRw.js → typescript-CE_GQ-M1.js} +1 -1
  20. package/dist/frontend/assets/{xml-fE5sGZ5z.js → xml-CGjMtNcA.js} +1 -1
  21. package/dist/frontend/assets/{yaml-CZMoG4WG.js → yaml-Zju9kuFB.js} +1 -1
  22. package/dist/frontend/index.html +2 -2
  23. package/dist/index.js +3 -0
  24. package/dist/types/cronjob.js +2 -0
  25. package/dist/utils/chat-prompt-context.js +65 -0
  26. package/dist/utils/chat-session.js +12 -0
  27. package/dist/utils/index.js +27 -0
  28. package/dist/utils/workflow-interruption.js +5 -2
  29. package/dist/utils/workflow-run-validation.js +25 -0
  30. package/dist/utils/workspace-sync.js +17 -0
  31. package/dist/workflows/index.js +24 -25
  32. package/dist/workspace_files/.opencode/plugins/apply-patch-session-diff.ts +2 -2
  33. package/dist/workspace_files/.opencode/plugins/askCronjobUser.ts +106 -0
  34. package/dist/workspace_files/.opencode/plugins/manageCronjobTodos.ts +190 -0
  35. package/dist/workspace_files/.opencode/plugins/manageCronjobs.ts +376 -0
  36. package/dist/workspace_files/.opencode/plugins/markCronjobCompleted.ts +107 -0
  37. package/dist/workspace_files/.opencode/plugins/markCronjobFailed.ts +107 -0
  38. package/dist/workspace_files/AGENTS.md +51 -1
  39. package/package.json +1 -1
  40. package/prisma/generated/client/edge.js +50 -3
  41. package/prisma/generated/client/index-browser.js +47 -0
  42. package/prisma/generated/client/index.d.ts +13918 -7530
  43. package/prisma/generated/client/index.js +50 -3
  44. package/prisma/generated/client/package.json +1 -1
  45. package/prisma/generated/client/schema.prisma +72 -1
  46. package/prisma/generated/client/wasm.js +50 -3
  47. package/prisma/migrations/20260508050030_add_cronjobs/migration.sql +78 -0
  48. package/prisma/migrations/20260508093158_add_structured_cronjob_schedules/migration.sql +23 -0
  49. package/prisma/migrations/20260508105129_add_cronjob_targets/migration.sql +50 -0
  50. package/prisma/migrations/20260509044545_flatten_cronjob_schema/migration.sql +88 -0
  51. package/prisma/migrations/20260509052232_simplify_cronjob_schedule_storage/migration.sql +42 -0
  52. package/prisma/migrations/20260509054000_remove_chat_session_source_add_cronjob_run_indexes/migration.sql +28 -0
  53. package/prisma/migrations/20260509061000_cascade_cronjob_run_links/migration.sql +29 -0
  54. package/prisma/migrations/20260513073541_add_cronjob_run_todos/migration.sql +18 -0
  55. package/prisma/migrations/20260513133021_add_cronjob_user_response_wait/migration.sql +29 -0
  56. package/prisma/migrations/20260513135733_add_cronjob_user_handoff_state/migration.sql +30 -0
  57. package/prisma/migrations/20260513142511_drop_awaiting_user_response/migration.sql +35 -0
  58. package/prisma/migrations/20260514032204_simplify_cronjob_run_lifecycle/migration.sql +34 -0
  59. package/prisma/migrations/20260514043000_clear_cronjob_run_history/migration.sql +6 -0
  60. package/prisma/migrations/20260515094618_add_todo_list_version/migration.sql +32 -0
  61. package/prisma/migrations/20260516082714_add_cronjob_monitor_timeout/migration.sql +38 -0
  62. package/prisma/migrations/20260516083452_allow_decimal_cronjob_timeout/migration.sql +37 -0
  63. package/prisma/migrations/20260516084455_add_cronjob_timeout_defaults/migration.sql +31 -0
  64. package/prisma/schema.prisma +71 -1
  65. package/dist/frontend/assets/index-D1Hcz_bo.css +0 -1
@@ -161,10 +161,54 @@ exports.Prisma.Chat_sessionsScalarFieldEnum = {
161
161
  opencode_session_id: 'opencode_session_id',
162
162
  title: 'title',
163
163
  last_seen_assistant_message_id: 'last_seen_assistant_message_id',
164
+ visible_to_user: 'visible_to_user',
164
165
  created_at: 'created_at',
165
166
  updated_at: 'updated_at'
166
167
  };
167
168
 
169
+ exports.Prisma.CronjobsScalarFieldEnum = {
170
+ id: 'id',
171
+ user_id: 'user_id',
172
+ name: 'name',
173
+ enabled: 'enabled',
174
+ target_type: 'target_type',
175
+ prompt: 'prompt',
176
+ prompt_allow_workflow_runs_without_permission: 'prompt_allow_workflow_runs_without_permission',
177
+ workflow_slug: 'workflow_slug',
178
+ workflow_input_json: 'workflow_input_json',
179
+ cron_expression: 'cron_expression',
180
+ timezone: 'timezone',
181
+ monitor_timeout_value: 'monitor_timeout_value',
182
+ monitor_timeout_unit: 'monitor_timeout_unit',
183
+ created_at: 'created_at',
184
+ updated_at: 'updated_at'
185
+ };
186
+
187
+ exports.Prisma.Cronjob_runsScalarFieldEnum = {
188
+ id: 'id',
189
+ cronjob_id: 'cronjob_id',
190
+ status: 'status',
191
+ started_at: 'started_at',
192
+ completed_at: 'completed_at',
193
+ workflow_run_id: 'workflow_run_id',
194
+ summary: 'summary',
195
+ session_id: 'session_id',
196
+ opencode_session_id: 'opencode_session_id',
197
+ error_message: 'error_message',
198
+ todo_list_version: 'todo_list_version'
199
+ };
200
+
201
+ exports.Prisma.Cronjob_run_todosScalarFieldEnum = {
202
+ id: 'id',
203
+ run_id: 'run_id',
204
+ content: 'content',
205
+ status: 'status',
206
+ position: 'position',
207
+ summary: 'summary',
208
+ created_at: 'created_at',
209
+ completed_at: 'completed_at'
210
+ };
211
+
168
212
  exports.Prisma.Chat_session_usageScalarFieldEnum = {
169
213
  chat_session_id: 'chat_session_id',
170
214
  last_synced_message_id: 'last_synced_message_id',
@@ -266,6 +310,9 @@ exports.Prisma.ModelName = {
266
310
  user_secrets: 'user_secrets',
267
311
  global_secrets: 'global_secrets',
268
312
  chat_sessions: 'chat_sessions',
313
+ cronjobs: 'cronjobs',
314
+ cronjob_runs: 'cronjob_runs',
315
+ cronjob_run_todos: 'cronjob_run_todos',
269
316
  chat_session_usage: 'chat_session_usage',
270
317
  chat_session_tracked_files: 'chat_session_tracked_files',
271
318
  tool_execution_permissions: 'tool_execution_permissions',
@@ -323,13 +370,13 @@ const config = {
323
370
  }
324
371
  }
325
372
  },
326
- "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"./generated/client\"\n}\n\ndatasource db {\n provider = \"sqlite\"\n url = env(\"DATABASE_URL\")\n}\n\nmodel users {\n id String @id @default(uuid())\n email String @unique\n name String\n role String // \"User\" or \"Engineer\"\n created_at BigInt\n password_hash String\n must_change_password Boolean @default(false)\n reset_token String?\n reset_token_expires_at BigInt?\n workflowRuns workflow_runs[]\n chatSessions chat_sessions[]\n resourcePermissionUsers resource_permission_users[]\n createdResourceMetadata resource_metadata[] @relation(\"ResourceCreatedBy\")\n approvedResourceMetadata resource_metadata[] @relation(\"ResourceApprovedBy\")\n userSecrets user_secrets[]\n}\n\nmodel workflow_runs {\n id String @id @default(uuid())\n ran_by_user_id String?\n status String // \"running\" | \"success\" | \"failed\"\n started_at BigInt\n completed_at BigInt?\n args String? // JSON string of input arguments passed to the workflow\n error_message String?\n output String? // Captured stdout/stderr from the workflow run\n workflow_slug String\n session_id String?\n message_id String?\n run_source String // \"user\" | \"api\"\n workflow_api_key_id String?\n user users? @relation(fields: [ran_by_user_id], references: [id], onDelete: SetNull)\n workflowApiKey workflow_api_keys? @relation(fields: [workflow_api_key_id], references: [id], onDelete: SetNull)\n\n @@index([started_at])\n @@index([session_id, message_id])\n @@index([workflow_api_key_id])\n}\n\nmodel workflow_api_keys {\n id String @id @default(uuid())\n workflow_slug String\n api_key String @unique\n created_by_user_id String\n created_at BigInt\n workflowRuns workflow_runs[]\n\n @@index([workflow_slug])\n @@index([created_by_user_id])\n}\n\nmodel workflow_aborted_sessions {\n session_id String @id\n created_at BigInt\n}\n\nmodel key_value {\n key String @id\n value String\n}\n\nmodel user_secrets {\n id String @id @default(uuid())\n user_id String\n key String\n value String\n created_at BigInt\n updated_at BigInt\n user users @relation(fields: [user_id], references: [id], onDelete: Cascade)\n\n @@unique([user_id, key])\n @@index([user_id])\n}\n\nmodel global_secrets {\n id String @id @default(uuid())\n key String @unique\n value String\n created_by_user_id String\n updated_by_user_id String\n created_at BigInt\n updated_at BigInt\n\n @@index([created_by_user_id])\n @@index([updated_by_user_id])\n}\n\nmodel chat_sessions {\n id String @id @default(uuid())\n user_id String\n opencode_session_id String @unique\n title String\n last_seen_assistant_message_id String?\n created_at BigInt\n updated_at BigInt\n trackedFiles chat_session_tracked_files[]\n usage chat_session_usage?\n user users @relation(fields: [user_id], references: [id], onDelete: Cascade)\n}\n\nmodel chat_session_usage {\n chat_session_id String @id\n last_synced_message_id String\n provider_id String\n input_tokens Int\n output_tokens Int\n cached_tokens Int\n cost_usd Float\n model_id String\n updated_at BigInt\n session chat_sessions @relation(fields: [chat_session_id], references: [id], onDelete: Cascade)\n}\n\nmodel chat_session_tracked_files {\n id String @id @default(uuid())\n chat_session_id String\n relative_path String\n existed_at_baseline Boolean\n content_kind String // \"text\" | \"binary\" | \"missing\"\n text_content String?\n binary_content Bytes?\n size_bytes Int?\n content_sha256 String?\n created_at BigInt\n updated_at BigInt\n session chat_sessions @relation(fields: [chat_session_id], references: [id], onDelete: Cascade)\n\n @@unique([chat_session_id, relative_path])\n @@index([chat_session_id])\n}\n\nmodel tool_execution_permissions {\n id String @id @default(uuid())\n opencode_session_id String\n message_id String\n call_id String\n status String // \"pending\" | \"approved\" | \"rejected\"\n created_at BigInt\n responded_at BigInt?\n\n @@unique([opencode_session_id, message_id, call_id])\n @@index([opencode_session_id, status])\n}\n\nmodel resource_metadata {\n resource_kind String\n resource_slug String\n created_by_user_id String?\n approved_by_user_id String?\n created_at BigInt\n updated_at BigInt\n approvedSnapshot resource_approved_snapshots?\n createdByUser users? @relation(\"ResourceCreatedBy\", fields: [created_by_user_id], references: [id], onDelete: SetNull)\n approvedByUser users? @relation(\"ResourceApprovedBy\", fields: [approved_by_user_id], references: [id], onDelete: SetNull)\n\n @@id([resource_kind, resource_slug])\n @@index([resource_slug])\n @@index([created_by_user_id])\n @@index([approved_by_user_id])\n}\n\nmodel resource_permissions {\n resource_kind String\n resource_slug String\n permission_mode String // \"restricted\" | \"everyone\"\n created_at BigInt\n updated_at BigInt\n allowedUsers resource_permission_users[]\n\n @@id([resource_kind, resource_slug])\n @@index([resource_slug])\n}\n\nmodel resource_permission_users {\n id String @id @default(uuid())\n resource_kind String\n resource_slug String\n user_id String\n created_at BigInt\n permission resource_permissions @relation(fields: [resource_kind, resource_slug], references: [resource_kind, resource_slug], onDelete: Cascade)\n user users @relation(fields: [user_id], references: [id], onDelete: Cascade)\n\n @@unique([resource_kind, resource_slug, user_id])\n @@index([resource_kind, resource_slug])\n}\n\nmodel resource_approved_snapshots {\n resource_kind String\n resource_slug String\n file_count Int\n created_at BigInt\n updated_at BigInt\n resource resource_metadata @relation(fields: [resource_kind, resource_slug], references: [resource_kind, resource_slug], onDelete: Cascade)\n files resource_approved_snapshot_files[]\n\n @@id([resource_kind, resource_slug])\n @@index([resource_slug])\n}\n\nmodel resource_approved_snapshot_files {\n id String @id @default(uuid())\n resource_kind String\n resource_slug String\n relative_path String\n content_kind String // \"text\" | \"binary\"\n text_content String?\n binary_content Bytes?\n size_bytes Int\n content_sha256 String\n snapshot resource_approved_snapshots @relation(fields: [resource_kind, resource_slug], references: [resource_kind, resource_slug], onDelete: Cascade)\n\n @@unique([resource_kind, resource_slug, relative_path])\n @@index([resource_kind, resource_slug])\n}\n",
327
- "inlineSchemaHash": "dbbbec63e5e1f43c29a173a4781f7dae78664bd1cc32fee359d4f9f61901f6bd",
373
+ "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"./generated/client\"\n}\n\ndatasource db {\n provider = \"sqlite\"\n url = env(\"DATABASE_URL\")\n}\n\nmodel users {\n id String @id @default(uuid())\n email String @unique\n name String\n role String // \"User\" or \"Engineer\"\n created_at BigInt\n password_hash String\n must_change_password Boolean @default(false)\n reset_token String?\n reset_token_expires_at BigInt?\n workflowRuns workflow_runs[]\n chatSessions chat_sessions[]\n cronjobs cronjobs[]\n resourcePermissionUsers resource_permission_users[]\n createdResourceMetadata resource_metadata[] @relation(\"ResourceCreatedBy\")\n approvedResourceMetadata resource_metadata[] @relation(\"ResourceApprovedBy\")\n userSecrets user_secrets[]\n}\n\nmodel workflow_runs {\n id String @id @default(uuid())\n ran_by_user_id String?\n status String // \"running\" | \"success\" | \"failed\"\n started_at BigInt\n completed_at BigInt?\n args String? // JSON string of input arguments passed to the workflow\n error_message String?\n output String? // Captured stdout/stderr from the workflow run\n workflow_slug String\n session_id String?\n message_id String?\n run_source String // \"user\" | \"api\" | \"cronjob\"\n workflow_api_key_id String?\n user users? @relation(fields: [ran_by_user_id], references: [id], onDelete: SetNull)\n workflowApiKey workflow_api_keys? @relation(fields: [workflow_api_key_id], references: [id], onDelete: SetNull)\n cronjobRuns cronjob_runs[]\n\n @@index([started_at])\n @@index([session_id, message_id])\n @@index([workflow_api_key_id])\n}\n\nmodel workflow_api_keys {\n id String @id @default(uuid())\n workflow_slug String\n api_key String @unique\n created_by_user_id String\n created_at BigInt\n workflowRuns workflow_runs[]\n\n @@index([workflow_slug])\n @@index([created_by_user_id])\n}\n\nmodel workflow_aborted_sessions {\n session_id String @id\n created_at BigInt\n}\n\nmodel key_value {\n key String @id\n value String\n}\n\nmodel user_secrets {\n id String @id @default(uuid())\n user_id String\n key String\n value String\n created_at BigInt\n updated_at BigInt\n user users @relation(fields: [user_id], references: [id], onDelete: Cascade)\n\n @@unique([user_id, key])\n @@index([user_id])\n}\n\nmodel global_secrets {\n id String @id @default(uuid())\n key String @unique\n value String\n created_by_user_id String\n updated_by_user_id String\n created_at BigInt\n updated_at BigInt\n\n @@index([created_by_user_id])\n @@index([updated_by_user_id])\n}\n\nmodel chat_sessions {\n id String @id @default(uuid())\n user_id String\n opencode_session_id String @unique\n title String\n last_seen_assistant_message_id String?\n visible_to_user Boolean @default(true)\n created_at BigInt\n updated_at BigInt\n trackedFiles chat_session_tracked_files[]\n usage chat_session_usage?\n cronjobRuns cronjob_runs[]\n user users @relation(fields: [user_id], references: [id], onDelete: Cascade)\n\n @@index([visible_to_user])\n}\n\nmodel cronjobs {\n id String @id @default(uuid())\n user_id String\n name String\n enabled Boolean\n target_type String // \"prompt\" | \"workflow\"\n prompt String?\n prompt_allow_workflow_runs_without_permission Boolean?\n workflow_slug String?\n workflow_input_json String?\n cron_expression String\n timezone String\n monitor_timeout_value Float @default(2)\n monitor_timeout_unit String @default(\"hours\") // \"minutes\" | \"hours\" | \"days\"\n created_at BigInt\n updated_at BigInt\n user users @relation(fields: [user_id], references: [id], onDelete: Cascade)\n runs cronjob_runs[]\n\n @@unique([user_id, name])\n @@index([user_id])\n @@index([enabled])\n @@index([target_type])\n @@index([workflow_slug])\n}\n\nmodel cronjob_runs {\n id String @id @default(uuid())\n cronjob_id String\n status String // prompt: \"running\" | \"paused\" | \"success\" | \"failed\" | \"skipped\" | \"terminated\"; workflow: \"running\" | \"success\" | \"failed\" | \"skipped\"\n started_at BigInt\n completed_at BigInt?\n workflow_run_id String?\n summary String?\n session_id String?\n opencode_session_id String?\n error_message String?\n todo_list_version Int @default(0)\n cronjob cronjobs @relation(fields: [cronjob_id], references: [id], onDelete: Cascade)\n session chat_sessions? @relation(fields: [session_id], references: [id], onDelete: Cascade)\n workflowRun workflow_runs? @relation(fields: [workflow_run_id], references: [id], onDelete: Cascade)\n todos cronjob_run_todos[]\n\n @@index([cronjob_id, started_at])\n @@index([cronjob_id, status])\n @@index([workflow_run_id])\n @@index([session_id])\n @@index([opencode_session_id, status])\n}\n\nmodel cronjob_run_todos {\n id String @id @default(uuid())\n run_id String\n content String\n status String // \"pending\" = not started yet; \"in_progress\" = current todo; \"completed\" = finished\n position Int\n summary String?\n created_at BigInt\n completed_at BigInt?\n run cronjob_runs @relation(fields: [run_id], references: [id], onDelete: Cascade)\n\n @@index([run_id, status, position])\n @@index([run_id, position])\n}\n\nmodel chat_session_usage {\n chat_session_id String @id\n last_synced_message_id String\n provider_id String\n input_tokens Int\n output_tokens Int\n cached_tokens Int\n cost_usd Float\n model_id String\n updated_at BigInt\n session chat_sessions @relation(fields: [chat_session_id], references: [id], onDelete: Cascade)\n}\n\nmodel chat_session_tracked_files {\n id String @id @default(uuid())\n chat_session_id String\n relative_path String\n existed_at_baseline Boolean\n content_kind String // \"text\" | \"binary\" | \"missing\"\n text_content String?\n binary_content Bytes?\n size_bytes Int?\n content_sha256 String?\n created_at BigInt\n updated_at BigInt\n session chat_sessions @relation(fields: [chat_session_id], references: [id], onDelete: Cascade)\n\n @@unique([chat_session_id, relative_path])\n @@index([chat_session_id])\n}\n\nmodel tool_execution_permissions {\n id String @id @default(uuid())\n opencode_session_id String\n message_id String\n call_id String\n status String // \"pending\" | \"approved\" | \"rejected\"\n created_at BigInt\n responded_at BigInt?\n\n @@unique([opencode_session_id, message_id, call_id])\n @@index([opencode_session_id, status])\n}\n\nmodel resource_metadata {\n resource_kind String\n resource_slug String\n created_by_user_id String?\n approved_by_user_id String?\n created_at BigInt\n updated_at BigInt\n approvedSnapshot resource_approved_snapshots?\n createdByUser users? @relation(\"ResourceCreatedBy\", fields: [created_by_user_id], references: [id], onDelete: SetNull)\n approvedByUser users? @relation(\"ResourceApprovedBy\", fields: [approved_by_user_id], references: [id], onDelete: SetNull)\n\n @@id([resource_kind, resource_slug])\n @@index([resource_slug])\n @@index([created_by_user_id])\n @@index([approved_by_user_id])\n}\n\nmodel resource_permissions {\n resource_kind String\n resource_slug String\n permission_mode String // \"restricted\" | \"everyone\"\n created_at BigInt\n updated_at BigInt\n allowedUsers resource_permission_users[]\n\n @@id([resource_kind, resource_slug])\n @@index([resource_slug])\n}\n\nmodel resource_permission_users {\n id String @id @default(uuid())\n resource_kind String\n resource_slug String\n user_id String\n created_at BigInt\n permission resource_permissions @relation(fields: [resource_kind, resource_slug], references: [resource_kind, resource_slug], onDelete: Cascade)\n user users @relation(fields: [user_id], references: [id], onDelete: Cascade)\n\n @@unique([resource_kind, resource_slug, user_id])\n @@index([resource_kind, resource_slug])\n}\n\nmodel resource_approved_snapshots {\n resource_kind String\n resource_slug String\n file_count Int\n created_at BigInt\n updated_at BigInt\n resource resource_metadata @relation(fields: [resource_kind, resource_slug], references: [resource_kind, resource_slug], onDelete: Cascade)\n files resource_approved_snapshot_files[]\n\n @@id([resource_kind, resource_slug])\n @@index([resource_slug])\n}\n\nmodel resource_approved_snapshot_files {\n id String @id @default(uuid())\n resource_kind String\n resource_slug String\n relative_path String\n content_kind String // \"text\" | \"binary\"\n text_content String?\n binary_content Bytes?\n size_bytes Int\n content_sha256 String\n snapshot resource_approved_snapshots @relation(fields: [resource_kind, resource_slug], references: [resource_kind, resource_slug], onDelete: Cascade)\n\n @@unique([resource_kind, resource_slug, relative_path])\n @@index([resource_kind, resource_slug])\n}\n",
374
+ "inlineSchemaHash": "365f7a66ef1a3911b2564a1f1cd26b622414e1a42ad30215b6494a54bdb53b89",
328
375
  "copyEngine": true
329
376
  }
330
377
  config.dirname = '/'
331
378
 
332
- config.runtimeDataModel = JSON.parse("{\"models\":{\"users\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"role\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"password_hash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"must_change_password\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"reset_token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reset_token_expires_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"workflowRuns\",\"kind\":\"object\",\"type\":\"workflow_runs\",\"relationName\":\"usersToworkflow_runs\"},{\"name\":\"chatSessions\",\"kind\":\"object\",\"type\":\"chat_sessions\",\"relationName\":\"chat_sessionsTousers\"},{\"name\":\"resourcePermissionUsers\",\"kind\":\"object\",\"type\":\"resource_permission_users\",\"relationName\":\"resource_permission_usersTousers\"},{\"name\":\"createdResourceMetadata\",\"kind\":\"object\",\"type\":\"resource_metadata\",\"relationName\":\"ResourceCreatedBy\"},{\"name\":\"approvedResourceMetadata\",\"kind\":\"object\",\"type\":\"resource_metadata\",\"relationName\":\"ResourceApprovedBy\"},{\"name\":\"userSecrets\",\"kind\":\"object\",\"type\":\"user_secrets\",\"relationName\":\"user_secretsTousers\"}],\"dbName\":null},\"workflow_runs\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ran_by_user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"started_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"completed_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"args\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"error_message\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"output\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"workflow_slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"session_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"message_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"run_source\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"workflow_api_key_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"users\",\"relationName\":\"usersToworkflow_runs\"},{\"name\":\"workflowApiKey\",\"kind\":\"object\",\"type\":\"workflow_api_keys\",\"relationName\":\"workflow_api_keysToworkflow_runs\"}],\"dbName\":null},\"workflow_api_keys\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"workflow_slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"api_key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_by_user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"workflowRuns\",\"kind\":\"object\",\"type\":\"workflow_runs\",\"relationName\":\"workflow_api_keysToworkflow_runs\"}],\"dbName\":null},\"workflow_aborted_sessions\":{\"fields\":[{\"name\":\"session_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"}],\"dbName\":null},\"key_value\":{\"fields\":[{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"user_secrets\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"users\",\"relationName\":\"user_secretsTousers\"}],\"dbName\":null},\"global_secrets\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_by_user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updated_by_user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"}],\"dbName\":null},\"chat_sessions\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"opencode_session_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"last_seen_assistant_message_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"trackedFiles\",\"kind\":\"object\",\"type\":\"chat_session_tracked_files\",\"relationName\":\"chat_session_tracked_filesTochat_sessions\"},{\"name\":\"usage\",\"kind\":\"object\",\"type\":\"chat_session_usage\",\"relationName\":\"chat_session_usageTochat_sessions\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"users\",\"relationName\":\"chat_sessionsTousers\"}],\"dbName\":null},\"chat_session_usage\":{\"fields\":[{\"name\":\"chat_session_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"last_synced_message_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"provider_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"input_tokens\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"output_tokens\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"cached_tokens\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"cost_usd\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"model_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"session\",\"kind\":\"object\",\"type\":\"chat_sessions\",\"relationName\":\"chat_session_usageTochat_sessions\"}],\"dbName\":null},\"chat_session_tracked_files\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"chat_session_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"relative_path\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"existed_at_baseline\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"content_kind\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"text_content\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"binary_content\",\"kind\":\"scalar\",\"type\":\"Bytes\"},{\"name\":\"size_bytes\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"content_sha256\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"session\",\"kind\":\"object\",\"type\":\"chat_sessions\",\"relationName\":\"chat_session_tracked_filesTochat_sessions\"}],\"dbName\":null},\"tool_execution_permissions\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"opencode_session_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"message_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"call_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"responded_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"}],\"dbName\":null},\"resource_metadata\":{\"fields\":[{\"name\":\"resource_kind\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resource_slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_by_user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"approved_by_user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"approvedSnapshot\",\"kind\":\"object\",\"type\":\"resource_approved_snapshots\",\"relationName\":\"resource_approved_snapshotsToresource_metadata\"},{\"name\":\"createdByUser\",\"kind\":\"object\",\"type\":\"users\",\"relationName\":\"ResourceCreatedBy\"},{\"name\":\"approvedByUser\",\"kind\":\"object\",\"type\":\"users\",\"relationName\":\"ResourceApprovedBy\"}],\"dbName\":null},\"resource_permissions\":{\"fields\":[{\"name\":\"resource_kind\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resource_slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"permission_mode\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"allowedUsers\",\"kind\":\"object\",\"type\":\"resource_permission_users\",\"relationName\":\"resource_permission_usersToresource_permissions\"}],\"dbName\":null},\"resource_permission_users\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resource_kind\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resource_slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"permission\",\"kind\":\"object\",\"type\":\"resource_permissions\",\"relationName\":\"resource_permission_usersToresource_permissions\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"users\",\"relationName\":\"resource_permission_usersTousers\"}],\"dbName\":null},\"resource_approved_snapshots\":{\"fields\":[{\"name\":\"resource_kind\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resource_slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"file_count\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"resource\",\"kind\":\"object\",\"type\":\"resource_metadata\",\"relationName\":\"resource_approved_snapshotsToresource_metadata\"},{\"name\":\"files\",\"kind\":\"object\",\"type\":\"resource_approved_snapshot_files\",\"relationName\":\"resource_approved_snapshot_filesToresource_approved_snapshots\"}],\"dbName\":null},\"resource_approved_snapshot_files\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resource_kind\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resource_slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"relative_path\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"content_kind\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"text_content\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"binary_content\",\"kind\":\"scalar\",\"type\":\"Bytes\"},{\"name\":\"size_bytes\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"content_sha256\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"snapshot\",\"kind\":\"object\",\"type\":\"resource_approved_snapshots\",\"relationName\":\"resource_approved_snapshot_filesToresource_approved_snapshots\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}")
379
+ config.runtimeDataModel = JSON.parse("{\"models\":{\"users\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"role\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"password_hash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"must_change_password\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"reset_token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reset_token_expires_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"workflowRuns\",\"kind\":\"object\",\"type\":\"workflow_runs\",\"relationName\":\"usersToworkflow_runs\"},{\"name\":\"chatSessions\",\"kind\":\"object\",\"type\":\"chat_sessions\",\"relationName\":\"chat_sessionsTousers\"},{\"name\":\"cronjobs\",\"kind\":\"object\",\"type\":\"cronjobs\",\"relationName\":\"cronjobsTousers\"},{\"name\":\"resourcePermissionUsers\",\"kind\":\"object\",\"type\":\"resource_permission_users\",\"relationName\":\"resource_permission_usersTousers\"},{\"name\":\"createdResourceMetadata\",\"kind\":\"object\",\"type\":\"resource_metadata\",\"relationName\":\"ResourceCreatedBy\"},{\"name\":\"approvedResourceMetadata\",\"kind\":\"object\",\"type\":\"resource_metadata\",\"relationName\":\"ResourceApprovedBy\"},{\"name\":\"userSecrets\",\"kind\":\"object\",\"type\":\"user_secrets\",\"relationName\":\"user_secretsTousers\"}],\"dbName\":null},\"workflow_runs\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ran_by_user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"started_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"completed_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"args\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"error_message\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"output\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"workflow_slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"session_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"message_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"run_source\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"workflow_api_key_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"users\",\"relationName\":\"usersToworkflow_runs\"},{\"name\":\"workflowApiKey\",\"kind\":\"object\",\"type\":\"workflow_api_keys\",\"relationName\":\"workflow_api_keysToworkflow_runs\"},{\"name\":\"cronjobRuns\",\"kind\":\"object\",\"type\":\"cronjob_runs\",\"relationName\":\"cronjob_runsToworkflow_runs\"}],\"dbName\":null},\"workflow_api_keys\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"workflow_slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"api_key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_by_user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"workflowRuns\",\"kind\":\"object\",\"type\":\"workflow_runs\",\"relationName\":\"workflow_api_keysToworkflow_runs\"}],\"dbName\":null},\"workflow_aborted_sessions\":{\"fields\":[{\"name\":\"session_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"}],\"dbName\":null},\"key_value\":{\"fields\":[{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"user_secrets\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"users\",\"relationName\":\"user_secretsTousers\"}],\"dbName\":null},\"global_secrets\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_by_user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updated_by_user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"}],\"dbName\":null},\"chat_sessions\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"opencode_session_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"last_seen_assistant_message_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"visible_to_user\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"trackedFiles\",\"kind\":\"object\",\"type\":\"chat_session_tracked_files\",\"relationName\":\"chat_session_tracked_filesTochat_sessions\"},{\"name\":\"usage\",\"kind\":\"object\",\"type\":\"chat_session_usage\",\"relationName\":\"chat_session_usageTochat_sessions\"},{\"name\":\"cronjobRuns\",\"kind\":\"object\",\"type\":\"cronjob_runs\",\"relationName\":\"chat_sessionsTocronjob_runs\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"users\",\"relationName\":\"chat_sessionsTousers\"}],\"dbName\":null},\"cronjobs\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"enabled\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"target_type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"prompt\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"prompt_allow_workflow_runs_without_permission\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"workflow_slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"workflow_input_json\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"cron_expression\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"timezone\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"monitor_timeout_value\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"monitor_timeout_unit\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"users\",\"relationName\":\"cronjobsTousers\"},{\"name\":\"runs\",\"kind\":\"object\",\"type\":\"cronjob_runs\",\"relationName\":\"cronjob_runsTocronjobs\"}],\"dbName\":null},\"cronjob_runs\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"cronjob_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"started_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"completed_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"workflow_run_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"summary\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"session_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"opencode_session_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"error_message\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"todo_list_version\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"cronjob\",\"kind\":\"object\",\"type\":\"cronjobs\",\"relationName\":\"cronjob_runsTocronjobs\"},{\"name\":\"session\",\"kind\":\"object\",\"type\":\"chat_sessions\",\"relationName\":\"chat_sessionsTocronjob_runs\"},{\"name\":\"workflowRun\",\"kind\":\"object\",\"type\":\"workflow_runs\",\"relationName\":\"cronjob_runsToworkflow_runs\"},{\"name\":\"todos\",\"kind\":\"object\",\"type\":\"cronjob_run_todos\",\"relationName\":\"cronjob_run_todosTocronjob_runs\"}],\"dbName\":null},\"cronjob_run_todos\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"run_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"content\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"position\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"summary\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"completed_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"run\",\"kind\":\"object\",\"type\":\"cronjob_runs\",\"relationName\":\"cronjob_run_todosTocronjob_runs\"}],\"dbName\":null},\"chat_session_usage\":{\"fields\":[{\"name\":\"chat_session_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"last_synced_message_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"provider_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"input_tokens\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"output_tokens\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"cached_tokens\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"cost_usd\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"model_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"session\",\"kind\":\"object\",\"type\":\"chat_sessions\",\"relationName\":\"chat_session_usageTochat_sessions\"}],\"dbName\":null},\"chat_session_tracked_files\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"chat_session_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"relative_path\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"existed_at_baseline\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"content_kind\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"text_content\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"binary_content\",\"kind\":\"scalar\",\"type\":\"Bytes\"},{\"name\":\"size_bytes\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"content_sha256\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"session\",\"kind\":\"object\",\"type\":\"chat_sessions\",\"relationName\":\"chat_session_tracked_filesTochat_sessions\"}],\"dbName\":null},\"tool_execution_permissions\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"opencode_session_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"message_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"call_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"responded_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"}],\"dbName\":null},\"resource_metadata\":{\"fields\":[{\"name\":\"resource_kind\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resource_slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_by_user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"approved_by_user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"approvedSnapshot\",\"kind\":\"object\",\"type\":\"resource_approved_snapshots\",\"relationName\":\"resource_approved_snapshotsToresource_metadata\"},{\"name\":\"createdByUser\",\"kind\":\"object\",\"type\":\"users\",\"relationName\":\"ResourceCreatedBy\"},{\"name\":\"approvedByUser\",\"kind\":\"object\",\"type\":\"users\",\"relationName\":\"ResourceApprovedBy\"}],\"dbName\":null},\"resource_permissions\":{\"fields\":[{\"name\":\"resource_kind\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resource_slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"permission_mode\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"allowedUsers\",\"kind\":\"object\",\"type\":\"resource_permission_users\",\"relationName\":\"resource_permission_usersToresource_permissions\"}],\"dbName\":null},\"resource_permission_users\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resource_kind\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resource_slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"permission\",\"kind\":\"object\",\"type\":\"resource_permissions\",\"relationName\":\"resource_permission_usersToresource_permissions\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"users\",\"relationName\":\"resource_permission_usersTousers\"}],\"dbName\":null},\"resource_approved_snapshots\":{\"fields\":[{\"name\":\"resource_kind\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resource_slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"file_count\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"resource\",\"kind\":\"object\",\"type\":\"resource_metadata\",\"relationName\":\"resource_approved_snapshotsToresource_metadata\"},{\"name\":\"files\",\"kind\":\"object\",\"type\":\"resource_approved_snapshot_files\",\"relationName\":\"resource_approved_snapshot_filesToresource_approved_snapshots\"}],\"dbName\":null},\"resource_approved_snapshot_files\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resource_kind\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resource_slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"relative_path\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"content_kind\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"text_content\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"binary_content\",\"kind\":\"scalar\",\"type\":\"Bytes\"},{\"name\":\"size_bytes\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"content_sha256\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"snapshot\",\"kind\":\"object\",\"type\":\"resource_approved_snapshots\",\"relationName\":\"resource_approved_snapshot_filesToresource_approved_snapshots\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}")
333
380
  defineDmmfProperty(exports.Prisma, config.runtimeDataModel)
334
381
  config.engineWasm = {
335
382
  getRuntime: async () => require('./query_engine_bg.js'),
@@ -0,0 +1,78 @@
1
+ -- CreateTable
2
+ CREATE TABLE "cronjobs" (
3
+ "id" TEXT NOT NULL PRIMARY KEY,
4
+ "user_id" TEXT NOT NULL,
5
+ "name" TEXT NOT NULL,
6
+ "prompt" TEXT NOT NULL,
7
+ "enabled" BOOLEAN NOT NULL,
8
+ "allow_workflow_runs_without_permission" BOOLEAN NOT NULL,
9
+ "created_at" BIGINT NOT NULL,
10
+ "updated_at" BIGINT NOT NULL,
11
+ CONSTRAINT "cronjobs_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users" ("id") ON DELETE CASCADE ON UPDATE CASCADE
12
+ );
13
+
14
+ -- CreateTable
15
+ CREATE TABLE "cronjob_schedules" (
16
+ "cronjob_id" TEXT NOT NULL PRIMARY KEY,
17
+ "preset_key" TEXT,
18
+ "cron_expression" TEXT,
19
+ "timezone" TEXT NOT NULL,
20
+ "created_at" BIGINT NOT NULL,
21
+ "updated_at" BIGINT NOT NULL,
22
+ CONSTRAINT "cronjob_schedules_cronjob_id_fkey" FOREIGN KEY ("cronjob_id") REFERENCES "cronjobs" ("id") ON DELETE CASCADE ON UPDATE CASCADE
23
+ );
24
+
25
+ -- CreateTable
26
+ CREATE TABLE "cronjob_runs" (
27
+ "id" TEXT NOT NULL PRIMARY KEY,
28
+ "cronjob_id" TEXT NOT NULL,
29
+ "status" TEXT NOT NULL,
30
+ "started_at" BIGINT NOT NULL,
31
+ "completed_at" BIGINT,
32
+ "prompt_snapshot" TEXT NOT NULL,
33
+ "summary" TEXT,
34
+ "session_id" TEXT,
35
+ "opencode_session_id" TEXT,
36
+ "needs_user_input_reason" TEXT,
37
+ "error_message" TEXT,
38
+ CONSTRAINT "cronjob_runs_cronjob_id_fkey" FOREIGN KEY ("cronjob_id") REFERENCES "cronjobs" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
39
+ CONSTRAINT "cronjob_runs_session_id_fkey" FOREIGN KEY ("session_id") REFERENCES "chat_sessions" ("id") ON DELETE SET NULL ON UPDATE CASCADE
40
+ );
41
+
42
+ -- RedefineTables
43
+ PRAGMA defer_foreign_keys=ON;
44
+ PRAGMA foreign_keys=OFF;
45
+ CREATE TABLE "new_chat_sessions" (
46
+ "id" TEXT NOT NULL PRIMARY KEY,
47
+ "user_id" TEXT NOT NULL,
48
+ "opencode_session_id" TEXT NOT NULL,
49
+ "title" TEXT NOT NULL,
50
+ "last_seen_assistant_message_id" TEXT,
51
+ "source" TEXT NOT NULL DEFAULT 'user',
52
+ "visible_to_user" BOOLEAN NOT NULL DEFAULT true,
53
+ "created_at" BIGINT NOT NULL,
54
+ "updated_at" BIGINT NOT NULL,
55
+ CONSTRAINT "chat_sessions_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users" ("id") ON DELETE CASCADE ON UPDATE CASCADE
56
+ );
57
+ INSERT INTO "new_chat_sessions" ("created_at", "id", "last_seen_assistant_message_id", "opencode_session_id", "title", "updated_at", "user_id") SELECT "created_at", "id", "last_seen_assistant_message_id", "opencode_session_id", "title", "updated_at", "user_id" FROM "chat_sessions";
58
+ DROP TABLE "chat_sessions";
59
+ ALTER TABLE "new_chat_sessions" RENAME TO "chat_sessions";
60
+ CREATE UNIQUE INDEX "chat_sessions_opencode_session_id_key" ON "chat_sessions"("opencode_session_id");
61
+ CREATE INDEX "chat_sessions_source_visible_to_user_idx" ON "chat_sessions"("source", "visible_to_user");
62
+ PRAGMA foreign_keys=ON;
63
+ PRAGMA defer_foreign_keys=OFF;
64
+
65
+ -- CreateIndex
66
+ CREATE INDEX "cronjobs_user_id_idx" ON "cronjobs"("user_id");
67
+
68
+ -- CreateIndex
69
+ CREATE INDEX "cronjobs_enabled_idx" ON "cronjobs"("enabled");
70
+
71
+ -- CreateIndex
72
+ CREATE UNIQUE INDEX "cronjobs_user_id_name_key" ON "cronjobs"("user_id", "name");
73
+
74
+ -- CreateIndex
75
+ CREATE INDEX "cronjob_runs_cronjob_id_started_at_idx" ON "cronjob_runs"("cronjob_id", "started_at");
76
+
77
+ -- CreateIndex
78
+ CREATE INDEX "cronjob_runs_cronjob_id_status_idx" ON "cronjob_runs"("cronjob_id", "status");
@@ -0,0 +1,23 @@
1
+ -- RedefineTables
2
+ PRAGMA defer_foreign_keys=ON;
3
+ PRAGMA foreign_keys=OFF;
4
+ CREATE TABLE "new_cronjob_schedules" (
5
+ "cronjob_id" TEXT NOT NULL PRIMARY KEY,
6
+ "preset_key" TEXT,
7
+ "cron_expression" TEXT,
8
+ "timezone" TEXT NOT NULL,
9
+ "schedule_type" TEXT NOT NULL DEFAULT 'cron',
10
+ "time_minutes" INTEGER,
11
+ "days_of_week" TEXT,
12
+ "week_interval" INTEGER,
13
+ "anchor_date" TEXT,
14
+ "day_of_month" INTEGER,
15
+ "created_at" BIGINT NOT NULL,
16
+ "updated_at" BIGINT NOT NULL,
17
+ CONSTRAINT "cronjob_schedules_cronjob_id_fkey" FOREIGN KEY ("cronjob_id") REFERENCES "cronjobs" ("id") ON DELETE CASCADE ON UPDATE CASCADE
18
+ );
19
+ INSERT INTO "new_cronjob_schedules" ("created_at", "cron_expression", "cronjob_id", "preset_key", "timezone", "updated_at") SELECT "created_at", "cron_expression", "cronjob_id", "preset_key", "timezone", "updated_at" FROM "cronjob_schedules";
20
+ DROP TABLE "cronjob_schedules";
21
+ ALTER TABLE "new_cronjob_schedules" RENAME TO "cronjob_schedules";
22
+ PRAGMA foreign_keys=ON;
23
+ PRAGMA defer_foreign_keys=OFF;
@@ -0,0 +1,50 @@
1
+ -- CreateTable
2
+ CREATE TABLE "cronjob_targets" (
3
+ "cronjob_id" TEXT NOT NULL PRIMARY KEY,
4
+ "target_type" TEXT NOT NULL,
5
+ "prompt" TEXT,
6
+ "prompt_allow_workflow_runs_without_permission" BOOLEAN,
7
+ "workflow_slug" TEXT,
8
+ "workflow_input_json" TEXT,
9
+ "created_at" BIGINT NOT NULL,
10
+ "updated_at" BIGINT NOT NULL,
11
+ CONSTRAINT "cronjob_targets_cronjob_id_fkey" FOREIGN KEY ("cronjob_id") REFERENCES "cronjobs" ("id") ON DELETE CASCADE ON UPDATE CASCADE
12
+ );
13
+
14
+ -- RedefineTables
15
+ PRAGMA defer_foreign_keys=ON;
16
+ PRAGMA foreign_keys=OFF;
17
+ CREATE TABLE "new_cronjob_runs" (
18
+ "id" TEXT NOT NULL PRIMARY KEY,
19
+ "cronjob_id" TEXT NOT NULL,
20
+ "status" TEXT NOT NULL,
21
+ "started_at" BIGINT NOT NULL,
22
+ "completed_at" BIGINT,
23
+ "target_type_snapshot" TEXT NOT NULL DEFAULT 'prompt',
24
+ "prompt_snapshot" TEXT,
25
+ "workflow_slug_snapshot" TEXT,
26
+ "workflow_input_snapshot_json" TEXT,
27
+ "workflow_run_id" TEXT,
28
+ "summary" TEXT,
29
+ "session_id" TEXT,
30
+ "opencode_session_id" TEXT,
31
+ "needs_user_input_reason" TEXT,
32
+ "error_message" TEXT,
33
+ CONSTRAINT "cronjob_runs_cronjob_id_fkey" FOREIGN KEY ("cronjob_id") REFERENCES "cronjobs" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
34
+ CONSTRAINT "cronjob_runs_session_id_fkey" FOREIGN KEY ("session_id") REFERENCES "chat_sessions" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
35
+ CONSTRAINT "cronjob_runs_workflow_run_id_fkey" FOREIGN KEY ("workflow_run_id") REFERENCES "workflow_runs" ("id") ON DELETE SET NULL ON UPDATE CASCADE
36
+ );
37
+ INSERT INTO "new_cronjob_runs" ("completed_at", "cronjob_id", "error_message", "id", "needs_user_input_reason", "opencode_session_id", "prompt_snapshot", "session_id", "started_at", "status", "summary") SELECT "completed_at", "cronjob_id", "error_message", "id", "needs_user_input_reason", "opencode_session_id", "prompt_snapshot", "session_id", "started_at", "status", "summary" FROM "cronjob_runs";
38
+ DROP TABLE "cronjob_runs";
39
+ ALTER TABLE "new_cronjob_runs" RENAME TO "cronjob_runs";
40
+ CREATE INDEX "cronjob_runs_cronjob_id_started_at_idx" ON "cronjob_runs"("cronjob_id", "started_at");
41
+ CREATE INDEX "cronjob_runs_cronjob_id_status_idx" ON "cronjob_runs"("cronjob_id", "status");
42
+ CREATE INDEX "cronjob_runs_workflow_run_id_idx" ON "cronjob_runs"("workflow_run_id");
43
+ PRAGMA foreign_keys=ON;
44
+ PRAGMA defer_foreign_keys=OFF;
45
+
46
+ -- CreateIndex
47
+ CREATE INDEX "cronjob_targets_target_type_idx" ON "cronjob_targets"("target_type");
48
+
49
+ -- CreateIndex
50
+ CREATE INDEX "cronjob_targets_workflow_slug_idx" ON "cronjob_targets"("workflow_slug");
@@ -0,0 +1,88 @@
1
+ /*
2
+ Warnings:
3
+
4
+ - You are about to drop the `cronjob_schedules` table. If the table is not empty, all the data it contains will be lost.
5
+ - You are about to drop the `cronjob_targets` table. If the table is not empty, all the data it contains will be lost.
6
+ - You are about to drop the column `needs_user_input_reason` on the `cronjob_runs` table. All the data in the column will be lost.
7
+ - You are about to drop the column `prompt_snapshot` on the `cronjob_runs` table. All the data in the column will be lost.
8
+ - You are about to drop the column `target_type_snapshot` on the `cronjob_runs` table. All the data in the column will be lost.
9
+ - You are about to drop the column `workflow_input_snapshot_json` on the `cronjob_runs` table. All the data in the column will be lost.
10
+ - You are about to drop the column `workflow_slug_snapshot` on the `cronjob_runs` table. All the data in the column will be lost.
11
+ - You are about to drop the column `allow_workflow_runs_without_permission` on the `cronjobs` table. All the data in the column will be lost.
12
+ - Added the required column `target_type` to the `cronjobs` table without a default value. This is not possible if the table is not empty.
13
+ - Added the required column `timezone` to the `cronjobs` table without a default value. This is not possible if the table is not empty.
14
+
15
+ */
16
+ -- DropIndex
17
+ DROP INDEX "cronjob_targets_workflow_slug_idx";
18
+
19
+ -- DropIndex
20
+ DROP INDEX "cronjob_targets_target_type_idx";
21
+
22
+ -- DropTable
23
+ PRAGMA foreign_keys=off;
24
+ DROP TABLE "cronjob_schedules";
25
+ PRAGMA foreign_keys=on;
26
+
27
+ -- DropTable
28
+ PRAGMA foreign_keys=off;
29
+ DROP TABLE "cronjob_targets";
30
+ PRAGMA foreign_keys=on;
31
+
32
+ -- RedefineTables
33
+ PRAGMA defer_foreign_keys=ON;
34
+ PRAGMA foreign_keys=OFF;
35
+ CREATE TABLE "new_cronjob_runs" (
36
+ "id" TEXT NOT NULL PRIMARY KEY,
37
+ "cronjob_id" TEXT NOT NULL,
38
+ "status" TEXT NOT NULL,
39
+ "started_at" BIGINT NOT NULL,
40
+ "completed_at" BIGINT,
41
+ "workflow_run_id" TEXT,
42
+ "summary" TEXT,
43
+ "session_id" TEXT,
44
+ "opencode_session_id" TEXT,
45
+ "error_message" TEXT,
46
+ CONSTRAINT "cronjob_runs_cronjob_id_fkey" FOREIGN KEY ("cronjob_id") REFERENCES "cronjobs" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
47
+ CONSTRAINT "cronjob_runs_session_id_fkey" FOREIGN KEY ("session_id") REFERENCES "chat_sessions" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
48
+ CONSTRAINT "cronjob_runs_workflow_run_id_fkey" FOREIGN KEY ("workflow_run_id") REFERENCES "workflow_runs" ("id") ON DELETE SET NULL ON UPDATE CASCADE
49
+ );
50
+ INSERT INTO "new_cronjob_runs" ("completed_at", "cronjob_id", "error_message", "id", "opencode_session_id", "session_id", "started_at", "status", "summary", "workflow_run_id") SELECT "completed_at", "cronjob_id", "error_message", "id", "opencode_session_id", "session_id", "started_at", "status", "summary", "workflow_run_id" FROM "cronjob_runs";
51
+ DROP TABLE "cronjob_runs";
52
+ ALTER TABLE "new_cronjob_runs" RENAME TO "cronjob_runs";
53
+ CREATE INDEX "cronjob_runs_cronjob_id_started_at_idx" ON "cronjob_runs"("cronjob_id", "started_at");
54
+ CREATE INDEX "cronjob_runs_cronjob_id_status_idx" ON "cronjob_runs"("cronjob_id", "status");
55
+ CREATE INDEX "cronjob_runs_workflow_run_id_idx" ON "cronjob_runs"("workflow_run_id");
56
+ CREATE TABLE "new_cronjobs" (
57
+ "id" TEXT NOT NULL PRIMARY KEY,
58
+ "user_id" TEXT NOT NULL,
59
+ "name" TEXT NOT NULL,
60
+ "enabled" BOOLEAN NOT NULL,
61
+ "target_type" TEXT NOT NULL,
62
+ "prompt" TEXT,
63
+ "prompt_allow_workflow_runs_without_permission" BOOLEAN,
64
+ "workflow_slug" TEXT,
65
+ "workflow_input_json" TEXT,
66
+ "preset_key" TEXT,
67
+ "cron_expression" TEXT,
68
+ "timezone" TEXT NOT NULL,
69
+ "schedule_type" TEXT NOT NULL DEFAULT 'cron',
70
+ "time_minutes" INTEGER,
71
+ "days_of_week" TEXT,
72
+ "week_interval" INTEGER,
73
+ "anchor_date" TEXT,
74
+ "day_of_month" INTEGER,
75
+ "created_at" BIGINT NOT NULL,
76
+ "updated_at" BIGINT NOT NULL,
77
+ CONSTRAINT "cronjobs_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users" ("id") ON DELETE CASCADE ON UPDATE CASCADE
78
+ );
79
+ INSERT INTO "new_cronjobs" ("created_at", "enabled", "id", "name", "prompt", "updated_at", "user_id") SELECT "created_at", "enabled", "id", "name", "prompt", "updated_at", "user_id" FROM "cronjobs";
80
+ DROP TABLE "cronjobs";
81
+ ALTER TABLE "new_cronjobs" RENAME TO "cronjobs";
82
+ CREATE INDEX "cronjobs_user_id_idx" ON "cronjobs"("user_id");
83
+ CREATE INDEX "cronjobs_enabled_idx" ON "cronjobs"("enabled");
84
+ CREATE INDEX "cronjobs_target_type_idx" ON "cronjobs"("target_type");
85
+ CREATE INDEX "cronjobs_workflow_slug_idx" ON "cronjobs"("workflow_slug");
86
+ CREATE UNIQUE INDEX "cronjobs_user_id_name_key" ON "cronjobs"("user_id", "name");
87
+ PRAGMA foreign_keys=ON;
88
+ PRAGMA defer_foreign_keys=OFF;
@@ -0,0 +1,42 @@
1
+ /*
2
+ Warnings:
3
+
4
+ - You are about to drop the column `anchor_date` on the `cronjobs` table. All the data in the column will be lost.
5
+ - You are about to drop the column `day_of_month` on the `cronjobs` table. All the data in the column will be lost.
6
+ - You are about to drop the column `days_of_week` on the `cronjobs` table. All the data in the column will be lost.
7
+ - You are about to drop the column `preset_key` on the `cronjobs` table. All the data in the column will be lost.
8
+ - You are about to drop the column `schedule_type` on the `cronjobs` table. All the data in the column will be lost.
9
+ - You are about to drop the column `time_minutes` on the `cronjobs` table. All the data in the column will be lost.
10
+ - You are about to drop the column `week_interval` on the `cronjobs` table. All the data in the column will be lost.
11
+ - Made the column `cron_expression` on table `cronjobs` required. This step will fail if there are existing NULL values in that column.
12
+
13
+ */
14
+ -- RedefineTables
15
+ PRAGMA defer_foreign_keys=ON;
16
+ PRAGMA foreign_keys=OFF;
17
+ CREATE TABLE "new_cronjobs" (
18
+ "id" TEXT NOT NULL PRIMARY KEY,
19
+ "user_id" TEXT NOT NULL,
20
+ "name" TEXT NOT NULL,
21
+ "enabled" BOOLEAN NOT NULL,
22
+ "target_type" TEXT NOT NULL,
23
+ "prompt" TEXT,
24
+ "prompt_allow_workflow_runs_without_permission" BOOLEAN,
25
+ "workflow_slug" TEXT,
26
+ "workflow_input_json" TEXT,
27
+ "cron_expression" TEXT NOT NULL,
28
+ "timezone" TEXT NOT NULL,
29
+ "created_at" BIGINT NOT NULL,
30
+ "updated_at" BIGINT NOT NULL,
31
+ CONSTRAINT "cronjobs_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users" ("id") ON DELETE CASCADE ON UPDATE CASCADE
32
+ );
33
+ INSERT INTO "new_cronjobs" ("created_at", "cron_expression", "enabled", "id", "name", "prompt", "prompt_allow_workflow_runs_without_permission", "target_type", "timezone", "updated_at", "user_id", "workflow_input_json", "workflow_slug") SELECT "created_at", "cron_expression", "enabled", "id", "name", "prompt", "prompt_allow_workflow_runs_without_permission", "target_type", "timezone", "updated_at", "user_id", "workflow_input_json", "workflow_slug" FROM "cronjobs";
34
+ DROP TABLE "cronjobs";
35
+ ALTER TABLE "new_cronjobs" RENAME TO "cronjobs";
36
+ CREATE INDEX "cronjobs_user_id_idx" ON "cronjobs"("user_id");
37
+ CREATE INDEX "cronjobs_enabled_idx" ON "cronjobs"("enabled");
38
+ CREATE INDEX "cronjobs_target_type_idx" ON "cronjobs"("target_type");
39
+ CREATE INDEX "cronjobs_workflow_slug_idx" ON "cronjobs"("workflow_slug");
40
+ CREATE UNIQUE INDEX "cronjobs_user_id_name_key" ON "cronjobs"("user_id", "name");
41
+ PRAGMA foreign_keys=ON;
42
+ PRAGMA defer_foreign_keys=OFF;
@@ -0,0 +1,28 @@
1
+ -- RedefineTables
2
+ PRAGMA defer_foreign_keys=ON;
3
+ PRAGMA foreign_keys=OFF;
4
+ CREATE TABLE "new_chat_sessions" (
5
+ "id" TEXT NOT NULL PRIMARY KEY,
6
+ "user_id" TEXT NOT NULL,
7
+ "opencode_session_id" TEXT NOT NULL,
8
+ "title" TEXT NOT NULL,
9
+ "last_seen_assistant_message_id" TEXT,
10
+ "visible_to_user" BOOLEAN NOT NULL DEFAULT true,
11
+ "created_at" BIGINT NOT NULL,
12
+ "updated_at" BIGINT NOT NULL,
13
+ CONSTRAINT "chat_sessions_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users" ("id") ON DELETE CASCADE ON UPDATE CASCADE
14
+ );
15
+ INSERT INTO "new_chat_sessions" ("created_at", "id", "last_seen_assistant_message_id", "opencode_session_id", "title", "updated_at", "user_id", "visible_to_user") SELECT "created_at", "id", "last_seen_assistant_message_id", "opencode_session_id", "title", "updated_at", "user_id", "visible_to_user" FROM "chat_sessions";
16
+ DROP TABLE "chat_sessions";
17
+ ALTER TABLE "new_chat_sessions" RENAME TO "chat_sessions";
18
+ CREATE UNIQUE INDEX "chat_sessions_opencode_session_id_key" ON "chat_sessions"("opencode_session_id");
19
+ CREATE INDEX "chat_sessions_visible_to_user_idx" ON "chat_sessions"("visible_to_user");
20
+ PRAGMA foreign_keys=ON;
21
+ PRAGMA defer_foreign_keys=OFF;
22
+
23
+ -- CreateIndex
24
+ CREATE INDEX "cronjob_runs_session_id_idx" ON "cronjob_runs"("session_id");
25
+
26
+ -- CreateIndex
27
+ CREATE INDEX "cronjob_runs_opencode_session_id_status_idx" ON "cronjob_runs"("opencode_session_id", "status");
28
+
@@ -0,0 +1,29 @@
1
+ -- RedefineTables
2
+ PRAGMA defer_foreign_keys=ON;
3
+ PRAGMA foreign_keys=OFF;
4
+ CREATE TABLE "new_cronjob_runs" (
5
+ "id" TEXT NOT NULL PRIMARY KEY,
6
+ "cronjob_id" TEXT NOT NULL,
7
+ "status" TEXT NOT NULL,
8
+ "started_at" BIGINT NOT NULL,
9
+ "completed_at" BIGINT,
10
+ "workflow_run_id" TEXT,
11
+ "summary" TEXT,
12
+ "session_id" TEXT,
13
+ "opencode_session_id" TEXT,
14
+ "error_message" TEXT,
15
+ CONSTRAINT "cronjob_runs_cronjob_id_fkey" FOREIGN KEY ("cronjob_id") REFERENCES "cronjobs" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
16
+ CONSTRAINT "cronjob_runs_session_id_fkey" FOREIGN KEY ("session_id") REFERENCES "chat_sessions" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
17
+ CONSTRAINT "cronjob_runs_workflow_run_id_fkey" FOREIGN KEY ("workflow_run_id") REFERENCES "workflow_runs" ("id") ON DELETE CASCADE ON UPDATE CASCADE
18
+ );
19
+ INSERT INTO "new_cronjob_runs" ("completed_at", "cronjob_id", "error_message", "id", "opencode_session_id", "session_id", "started_at", "status", "summary", "workflow_run_id") SELECT "completed_at", "cronjob_id", "error_message", "id", "opencode_session_id", "session_id", "started_at", "status", "summary", "workflow_run_id" FROM "cronjob_runs";
20
+ DROP TABLE "cronjob_runs";
21
+ ALTER TABLE "new_cronjob_runs" RENAME TO "cronjob_runs";
22
+ CREATE INDEX "cronjob_runs_cronjob_id_started_at_idx" ON "cronjob_runs"("cronjob_id", "started_at");
23
+ CREATE INDEX "cronjob_runs_cronjob_id_status_idx" ON "cronjob_runs"("cronjob_id", "status");
24
+ CREATE INDEX "cronjob_runs_workflow_run_id_idx" ON "cronjob_runs"("workflow_run_id");
25
+ CREATE INDEX "cronjob_runs_session_id_idx" ON "cronjob_runs"("session_id");
26
+ CREATE INDEX "cronjob_runs_opencode_session_id_status_idx" ON "cronjob_runs"("opencode_session_id", "status");
27
+ PRAGMA foreign_keys=ON;
28
+ PRAGMA defer_foreign_keys=OFF;
29
+
@@ -0,0 +1,18 @@
1
+ -- CreateTable
2
+ CREATE TABLE "cronjob_run_todos" (
3
+ "id" TEXT NOT NULL PRIMARY KEY,
4
+ "run_id" TEXT NOT NULL,
5
+ "content" TEXT NOT NULL,
6
+ "status" TEXT NOT NULL,
7
+ "position" INTEGER NOT NULL,
8
+ "summary" TEXT,
9
+ "created_at" BIGINT NOT NULL,
10
+ "completed_at" BIGINT,
11
+ CONSTRAINT "cronjob_run_todos_run_id_fkey" FOREIGN KEY ("run_id") REFERENCES "cronjob_runs" ("id") ON DELETE CASCADE ON UPDATE CASCADE
12
+ );
13
+
14
+ -- CreateIndex
15
+ CREATE INDEX "cronjob_run_todos_run_id_status_position_idx" ON "cronjob_run_todos"("run_id", "status", "position");
16
+
17
+ -- CreateIndex
18
+ CREATE INDEX "cronjob_run_todos_run_id_position_idx" ON "cronjob_run_todos"("run_id", "position");
@@ -0,0 +1,29 @@
1
+ -- RedefineTables
2
+ PRAGMA defer_foreign_keys=ON;
3
+ PRAGMA foreign_keys=OFF;
4
+ CREATE TABLE "new_cronjob_runs" (
5
+ "id" TEXT NOT NULL PRIMARY KEY,
6
+ "cronjob_id" TEXT NOT NULL,
7
+ "status" TEXT NOT NULL,
8
+ "started_at" BIGINT NOT NULL,
9
+ "completed_at" BIGINT,
10
+ "workflow_run_id" TEXT,
11
+ "summary" TEXT,
12
+ "session_id" TEXT,
13
+ "opencode_session_id" TEXT,
14
+ "error_message" TEXT,
15
+ "awaiting_user_response" BOOLEAN NOT NULL DEFAULT false,
16
+ CONSTRAINT "cronjob_runs_cronjob_id_fkey" FOREIGN KEY ("cronjob_id") REFERENCES "cronjobs" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
17
+ CONSTRAINT "cronjob_runs_session_id_fkey" FOREIGN KEY ("session_id") REFERENCES "chat_sessions" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
18
+ CONSTRAINT "cronjob_runs_workflow_run_id_fkey" FOREIGN KEY ("workflow_run_id") REFERENCES "workflow_runs" ("id") ON DELETE CASCADE ON UPDATE CASCADE
19
+ );
20
+ INSERT INTO "new_cronjob_runs" ("completed_at", "cronjob_id", "error_message", "id", "opencode_session_id", "session_id", "started_at", "status", "summary", "workflow_run_id") SELECT "completed_at", "cronjob_id", "error_message", "id", "opencode_session_id", "session_id", "started_at", "status", "summary", "workflow_run_id" FROM "cronjob_runs";
21
+ DROP TABLE "cronjob_runs";
22
+ ALTER TABLE "new_cronjob_runs" RENAME TO "cronjob_runs";
23
+ CREATE INDEX "cronjob_runs_cronjob_id_started_at_idx" ON "cronjob_runs"("cronjob_id", "started_at");
24
+ CREATE INDEX "cronjob_runs_cronjob_id_status_idx" ON "cronjob_runs"("cronjob_id", "status");
25
+ CREATE INDEX "cronjob_runs_workflow_run_id_idx" ON "cronjob_runs"("workflow_run_id");
26
+ CREATE INDEX "cronjob_runs_session_id_idx" ON "cronjob_runs"("session_id");
27
+ CREATE INDEX "cronjob_runs_opencode_session_id_status_idx" ON "cronjob_runs"("opencode_session_id", "status");
28
+ PRAGMA foreign_keys=ON;
29
+ PRAGMA defer_foreign_keys=OFF;