teamcopilot 0.1.2 → 0.1.3

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 (34) hide show
  1. package/dist/chat/index.js +93 -12
  2. package/dist/frontend/assets/{cssMode-DPbQk08M.js → cssMode-CV1QbDdV.js} +1 -1
  3. package/dist/frontend/assets/{freemarker2-DFE4Z2hp.js → freemarker2-SMKJ5iKX.js} +1 -1
  4. package/dist/frontend/assets/{handlebars-Dw_PK21Y.js → handlebars-k8LxWzR3.js} +1 -1
  5. package/dist/frontend/assets/{html-DxZRNRpl.js → html-ynahYm-q.js} +1 -1
  6. package/dist/frontend/assets/{htmlMode-iGgmnmtJ.js → htmlMode-CKlgbgGX.js} +1 -1
  7. package/dist/frontend/assets/index-CDt94asq.css +1 -0
  8. package/dist/frontend/assets/{index-CphuwuEr.js → index-CjZBHWet.js} +205 -205
  9. package/dist/frontend/assets/{javascript-Bw_u6aiq.js → javascript-3tohEroZ.js} +1 -1
  10. package/dist/frontend/assets/{jsonMode-iBiD9w9m.js → jsonMode-Bc561-dq.js} +1 -1
  11. package/dist/frontend/assets/{liquid-nnkE2sbw.js → liquid-DwkCYmXC.js} +1 -1
  12. package/dist/frontend/assets/{mdx-CHi7ETpD.js → mdx-BpoFi6BF.js} +1 -1
  13. package/dist/frontend/assets/{python--OTnmJv2.js → python-BiLSr3a-.js} +1 -1
  14. package/dist/frontend/assets/{razor-C6OgnQD9.js → razor-BcYPJYvW.js} +1 -1
  15. package/dist/frontend/assets/{tsMode-DzsKqqZD.js → tsMode-0Aumq3lP.js} +1 -1
  16. package/dist/frontend/assets/{typescript-BMZ0H3W7.js → typescript-C2VKs0MK.js} +1 -1
  17. package/dist/frontend/assets/{xml-HTDEz_LP.js → xml-B19fG9u5.js} +1 -1
  18. package/dist/frontend/assets/{yaml-CVa5ypgE.js → yaml-DFv9ENR5.js} +1 -1
  19. package/dist/frontend/index.html +2 -2
  20. package/dist/utils/approval-snapshot-common.js +2 -0
  21. package/dist/utils/chat-session-file-diff.js +120 -0
  22. package/dist/utils/workspace-sync.js +24 -0
  23. package/dist/workspace_files/.opencode/plugins/apply-patch-session-diff.ts +177 -0
  24. package/package.json +1 -1
  25. package/prisma/generated/client/edge.js +18 -3
  26. package/prisma/generated/client/index-browser.js +15 -0
  27. package/prisma/generated/client/index.d.ts +2067 -173
  28. package/prisma/generated/client/index.js +18 -3
  29. package/prisma/generated/client/package.json +1 -1
  30. package/prisma/generated/client/schema.prisma +22 -3
  31. package/prisma/generated/client/wasm.js +18 -3
  32. package/prisma/migrations/20260324144454_add_chat_session_tracked_files/migration.sql +21 -0
  33. package/prisma/schema.prisma +20 -1
  34. package/dist/frontend/assets/index-Ds8n3J4W.css +0 -1
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.normalizeWorkspaceRelativePath = normalizeWorkspaceRelativePath;
7
+ exports.captureCurrentFileBaseline = captureCurrentFileBaseline;
8
+ exports.buildChatSessionFileDiffResponse = buildChatSessionFileDiffResponse;
9
+ const fs_1 = __importDefault(require("fs"));
10
+ const path_1 = __importDefault(require("path"));
11
+ const approval_snapshot_common_1 = require("./approval-snapshot-common");
12
+ const workspace_sync_1 = require("./workspace-sync");
13
+ function normalizeWorkspaceRelativePath(rawPath) {
14
+ const normalized = path_1.default.posix.normalize(rawPath.split("\\").join("/").trim());
15
+ if (!normalized || normalized === "." || normalized === ".." || normalized.startsWith("../") || normalized.startsWith("/")) {
16
+ throw {
17
+ status: 400,
18
+ message: "file path must be a workspace-relative path"
19
+ };
20
+ }
21
+ return normalized;
22
+ }
23
+ function getAbsoluteWorkspacePath(relativePath) {
24
+ const workspaceDir = (0, workspace_sync_1.getWorkspaceDirFromEnv)();
25
+ const absolutePath = path_1.default.resolve(workspaceDir, relativePath);
26
+ const relativeCheck = path_1.default.relative(workspaceDir, absolutePath);
27
+ if (relativeCheck.startsWith("..") || path_1.default.isAbsolute(relativeCheck)) {
28
+ throw {
29
+ status: 400,
30
+ message: "file path must stay inside workspace"
31
+ };
32
+ }
33
+ return absolutePath;
34
+ }
35
+ function captureCurrentFileBaseline(relativePath) {
36
+ const absolutePath = getAbsoluteWorkspacePath(relativePath);
37
+ if (!fs_1.default.existsSync(absolutePath)) {
38
+ return {
39
+ existed_at_baseline: false,
40
+ content_kind: "missing",
41
+ text_content: null,
42
+ binary_content: null,
43
+ size_bytes: null,
44
+ content_sha256: null,
45
+ };
46
+ }
47
+ const stat = fs_1.default.statSync(absolutePath);
48
+ if (!stat.isFile()) {
49
+ throw {
50
+ status: 400,
51
+ message: `Tracked path '${relativePath}' is not a regular file`
52
+ };
53
+ }
54
+ const bytes = fs_1.default.readFileSync(absolutePath);
55
+ const isBinary = (0, approval_snapshot_common_1.looksBinary)(bytes);
56
+ return {
57
+ existed_at_baseline: true,
58
+ content_kind: isBinary ? "binary" : "text",
59
+ text_content: isBinary ? null : bytes.toString("utf-8"),
60
+ binary_content: isBinary ? bytes : null,
61
+ size_bytes: bytes.length,
62
+ content_sha256: (0, approval_snapshot_common_1.sha256)(bytes),
63
+ };
64
+ }
65
+ function toSnapshotFile(relativePath, baseline) {
66
+ if (!baseline.existed_at_baseline || baseline.content_kind === "missing") {
67
+ return null;
68
+ }
69
+ return {
70
+ relative_path: relativePath,
71
+ content_kind: baseline.content_kind === "binary" ? "binary" : "text",
72
+ text_content: baseline.content_kind === "text" ? baseline.text_content : null,
73
+ binary_content: baseline.content_kind === "binary"
74
+ ? (baseline.binary_content ? Buffer.from(baseline.binary_content) : null)
75
+ : null,
76
+ size_bytes: baseline.size_bytes ?? 0,
77
+ content_sha256: baseline.content_sha256 ?? "",
78
+ };
79
+ }
80
+ function readCurrentSnapshotFile(relativePath) {
81
+ const capture = captureCurrentFileBaseline(relativePath);
82
+ return toSnapshotFile(relativePath, capture);
83
+ }
84
+ function buildSnapshotFromFiles(files) {
85
+ return {
86
+ workflow_slug: "chat-session",
87
+ snapshot_hash: "",
88
+ file_count: files.length,
89
+ files,
90
+ };
91
+ }
92
+ function buildChatSessionFileDiffResponse(baselines) {
93
+ if (baselines.length === 0) {
94
+ return {
95
+ has_previous_snapshot: false,
96
+ summary: {
97
+ added: 0,
98
+ modified: 0,
99
+ deleted: 0,
100
+ text_files: 0,
101
+ binary_files: 0,
102
+ },
103
+ files: [],
104
+ ignored_rules: [],
105
+ };
106
+ }
107
+ const previousFiles = [];
108
+ const currentFiles = [];
109
+ for (const baseline of baselines) {
110
+ const previous = toSnapshotFile(baseline.relative_path, baseline);
111
+ if (previous) {
112
+ previousFiles.push(previous);
113
+ }
114
+ const current = readCurrentSnapshotFile(baseline.relative_path);
115
+ if (current) {
116
+ currentFiles.push(current);
117
+ }
118
+ }
119
+ return (0, approval_snapshot_common_1.buildApprovalDiffResponse)(buildSnapshotFromFiles(previousFiles), buildSnapshotFromFiles(currentFiles));
120
+ }
@@ -14,6 +14,7 @@ const path_1 = __importDefault(require("path"));
14
14
  const ignore_1 = __importDefault(require("ignore"));
15
15
  const child_process_1 = require("child_process");
16
16
  const util_1 = require("util");
17
+ const crypto_1 = __importDefault(require("crypto"));
17
18
  const assert_1 = require("./assert");
18
19
  const runtime_paths_1 = require("./runtime-paths");
19
20
  const execFileAsync = (0, util_1.promisify)(child_process_1.execFile);
@@ -22,6 +23,7 @@ const WORKSPACE_DB_FILENAME = "data.db";
22
23
  const HONEYTOKEN_UUID = "1f9f0b72-5f9f-4c9b-aef1-2fb2e0f6d8c4";
23
24
  const HONEYTOKEN_FILE_NAME = `honeytoken-${HONEYTOKEN_UUID}.txt`;
24
25
  const WORKSPACE_AZURE_PROVIDER_VERSION = "3.0.48";
26
+ const WORKSPACE_INSTALL_STATE_RELATIVE_PATH = path_1.default.join(".opencode", "install-state.json");
25
27
  function getWorkspaceDirFromEnv() {
26
28
  let workspaceDir = (0, assert_1.assertEnv)("WORKSPACE_DIR");
27
29
  if (!path_1.default.isAbsolute(workspaceDir)) {
@@ -59,6 +61,9 @@ function shouldSkipManagedDirectoryContent(relativePath) {
59
61
  if (relativePath === ".opencode/xdg-data" || relativePath.startsWith(".opencode/xdg-data/")) {
60
62
  return true;
61
63
  }
64
+ if (relativePath === normalizeRelativePath(WORKSPACE_INSTALL_STATE_RELATIVE_PATH)) {
65
+ return true;
66
+ }
62
67
  return false;
63
68
  }
64
69
  function evaluateIgnoreRuleSets(relativePath, isDirectory, ruleSets) {
@@ -204,11 +209,30 @@ async function initializeWorkspaceNodeDependencies(workspaceDir) {
204
209
  ...existingPackageJson,
205
210
  dependencies,
206
211
  };
212
+ const installStatePath = path_1.default.join(workspaceDir, WORKSPACE_INSTALL_STATE_RELATIVE_PATH);
213
+ const desiredInstallState = {
214
+ dependencies,
215
+ };
216
+ const desiredInstallStateHash = crypto_1.default
217
+ .createHash("sha256")
218
+ .update(JSON.stringify(desiredInstallState))
219
+ .digest("hex");
220
+ const existingInstallState = fs_1.default.existsSync(installStatePath)
221
+ ? JSON.parse(fs_1.default.readFileSync(installStatePath, "utf-8"))
222
+ : null;
223
+ const hasMatchingInstallState = existingInstallState?.hash === desiredInstallStateHash;
224
+ const nodeModulesPath = path_1.default.join(workspaceDir, "node_modules");
225
+ const packageJsonMatches = JSON.stringify(existingPackageJson) === JSON.stringify(workspacePackageJson);
226
+ if (hasMatchingInstallState && packageJsonMatches && fs_1.default.existsSync(nodeModulesPath)) {
227
+ return;
228
+ }
207
229
  fs_1.default.writeFileSync(workspacePackageJsonPath, JSON.stringify(workspacePackageJson, null, 2), "utf-8");
208
230
  await execFileAsync("npm", ["install"], {
209
231
  cwd: workspaceDir,
210
232
  env: process.env,
211
233
  });
234
+ fs_1.default.mkdirSync(path_1.default.dirname(installStatePath), { recursive: true });
235
+ fs_1.default.writeFileSync(installStatePath, `${JSON.stringify({ hash: desiredInstallStateHash }, null, 2)}\n`, "utf-8");
212
236
  }
213
237
  async function initializeWorkspaceDirectory() {
214
238
  const workspaceDir = getWorkspaceDirFromEnv();
@@ -0,0 +1,177 @@
1
+ import path from "node:path"
2
+ import type { Plugin } from "@opencode-ai/plugin"
3
+
4
+ function getApiBaseUrl(): string {
5
+ const port = process.env.TEAMCOPILOT_PORT?.trim()
6
+ if (!port) {
7
+ throw new Error("TEAMCOPILOT_PORT must be set.")
8
+ }
9
+ return `http://localhost:${port}`
10
+ }
11
+
12
+ interface SessionLookupResponse {
13
+ error?: unknown
14
+ data?: {
15
+ id?: string
16
+ parentID?: string
17
+ }
18
+ }
19
+
20
+ function findPatchPayload(value: unknown): string | null {
21
+ if (typeof value === "string") {
22
+ const normalized = value.replace(/\r\n/g, "\n")
23
+ if (normalized.includes("*** Begin Patch")) {
24
+ return normalized
25
+ }
26
+ return null
27
+ }
28
+
29
+ if (!value || typeof value !== "object") {
30
+ return null
31
+ }
32
+
33
+ for (const nestedValue of Object.values(value as Record<string, unknown>)) {
34
+ const match = findPatchPayload(nestedValue)
35
+ if (match) {
36
+ return match
37
+ }
38
+ }
39
+
40
+ return null
41
+ }
42
+
43
+ function extractTrackedPathsFromPatch(patchText: string): string[] {
44
+ const normalized = patchText.replace(/\r\n/g, "\n")
45
+ const fileHeaderMatches = normalized.matchAll(/^\s*\*\*\* (?:Add|Update|Delete) File: (.+)$/gm)
46
+ const paths = Array.from(fileHeaderMatches, (match) => match[1].trim()).filter(
47
+ (candidate) => candidate.length > 0
48
+ )
49
+
50
+ if (paths.length === 0) {
51
+ throw new Error("Could not determine target path from apply_patch payload.")
52
+ }
53
+
54
+ const moveToMatches = normalized.matchAll(/^\s*\*\*\* Move to: (.+)$/gm)
55
+ for (const match of moveToMatches) {
56
+ const targetPath = match[1].trim()
57
+ if (targetPath.length > 0) {
58
+ paths.push(targetPath)
59
+ }
60
+ }
61
+
62
+ return Array.from(new Set(paths.filter((candidate) => candidate.length > 0)))
63
+ }
64
+
65
+ function normalizeRelativePath(rawPath: string, workspaceDir: string): string {
66
+ const trimmed = rawPath.trim()
67
+ if (!trimmed) {
68
+ throw new Error("apply_patch hook received an empty file path.")
69
+ }
70
+
71
+ const resolvedPath = path.isAbsolute(trimmed)
72
+ ? path.resolve(trimmed)
73
+ : path.resolve(workspaceDir, trimmed)
74
+ const relativePath = path.relative(workspaceDir, resolvedPath)
75
+
76
+ if (relativePath.startsWith("..") || path.isAbsolute(relativePath)) {
77
+ throw new Error(`apply_patch path '${trimmed}' is outside the workspace.`)
78
+ }
79
+
80
+ return relativePath.split(path.sep).join("/")
81
+ }
82
+
83
+ async function readErrorMessageFromResponse(
84
+ response: Response,
85
+ fallbackMessage: string
86
+ ): Promise<string> {
87
+ try {
88
+ const text = await response.text()
89
+ if (!text) return fallbackMessage
90
+ try {
91
+ const parsed: unknown = JSON.parse(text)
92
+ if (parsed && typeof parsed === "object" && "message" in parsed) {
93
+ const message = (parsed as { message?: unknown }).message
94
+ if (typeof message === "string" && message.trim().length > 0) {
95
+ return message
96
+ }
97
+ }
98
+ } catch {
99
+ // Fall back to plain text.
100
+ }
101
+ return text.trim().length > 0 ? text : fallbackMessage
102
+ } catch {
103
+ return fallbackMessage
104
+ }
105
+ }
106
+
107
+ export const ApplyPatchSessionDiffPlugin: Plugin = async ({ client, directory }) => {
108
+ async function resolveRootSessionID(sessionID: string): Promise<string> {
109
+ let currentSessionID = sessionID
110
+
111
+ while (true) {
112
+ const response = (await client.session.get({
113
+ path: {
114
+ id: currentSessionID,
115
+ },
116
+ })) as SessionLookupResponse
117
+ if (response.error) {
118
+ throw new Error(`Failed to resolve root session for ${currentSessionID}`)
119
+ }
120
+
121
+ const parentID = response.data?.parentID
122
+ if (!parentID) {
123
+ return currentSessionID
124
+ }
125
+
126
+ currentSessionID = parentID
127
+ }
128
+ }
129
+
130
+ async function captureBaselineForPath(sessionID: string, relativePath: string): Promise<void> {
131
+ const response = await fetch(`${getApiBaseUrl()}/api/chat/sessions/file-diff/capture-baseline`, {
132
+ method: "POST",
133
+ headers: {
134
+ "Content-Type": "application/json",
135
+ Authorization: `Bearer ${sessionID}`,
136
+ },
137
+ body: JSON.stringify({
138
+ path: relativePath,
139
+ }),
140
+ })
141
+
142
+ if (!response.ok) {
143
+ const errorMessage = await readErrorMessageFromResponse(
144
+ response,
145
+ `Failed to capture file baseline for ${relativePath} (HTTP ${response.status})`
146
+ )
147
+ throw new Error(errorMessage)
148
+ }
149
+ }
150
+
151
+ return {
152
+ "tool.execute.before": async (input, output) => {
153
+ if (input.tool !== "apply_patch") {
154
+ return
155
+ }
156
+
157
+ const rawSessionID = typeof input.sessionID === "string" ? input.sessionID.trim() : ""
158
+ if (!rawSessionID) {
159
+ throw new Error("apply_patch hook could not determine session ID.")
160
+ }
161
+
162
+ const rootSessionID = await resolveRootSessionID(rawSessionID)
163
+ const patchPayload = findPatchPayload(output.args) ?? findPatchPayload(input.args)
164
+ if (!patchPayload) {
165
+ throw new Error("apply_patch hook could not find patch payload.")
166
+ }
167
+
168
+ const paths = extractTrackedPathsFromPatch(patchPayload)
169
+ for (const candidatePath of paths) {
170
+ const relativePath = normalizeRelativePath(candidatePath, directory)
171
+ await captureBaselineForPath(rootSessionID, relativePath)
172
+ }
173
+ },
174
+ }
175
+ }
176
+
177
+ export default ApplyPatchSessionDiffPlugin
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "teamcopilot",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "A shared AI Agent for Teams",
5
5
  "homepage": "https://teamcopilot.ai",
6
6
  "repository": {
@@ -135,6 +135,20 @@ exports.Prisma.Chat_sessionsScalarFieldEnum = {
135
135
  updated_at: 'updated_at'
136
136
  };
137
137
 
138
+ exports.Prisma.Chat_session_tracked_filesScalarFieldEnum = {
139
+ id: 'id',
140
+ chat_session_id: 'chat_session_id',
141
+ relative_path: 'relative_path',
142
+ existed_at_baseline: 'existed_at_baseline',
143
+ content_kind: 'content_kind',
144
+ text_content: 'text_content',
145
+ binary_content: 'binary_content',
146
+ size_bytes: 'size_bytes',
147
+ content_sha256: 'content_sha256',
148
+ created_at: 'created_at',
149
+ updated_at: 'updated_at'
150
+ };
151
+
138
152
  exports.Prisma.Tool_execution_permissionsScalarFieldEnum = {
139
153
  id: 'id',
140
154
  opencode_session_id: 'opencode_session_id',
@@ -207,6 +221,7 @@ exports.Prisma.ModelName = {
207
221
  workflow_aborted_sessions: 'workflow_aborted_sessions',
208
222
  key_value: 'key_value',
209
223
  chat_sessions: 'chat_sessions',
224
+ chat_session_tracked_files: 'chat_session_tracked_files',
210
225
  tool_execution_permissions: 'tool_execution_permissions',
211
226
  resource_metadata: 'resource_metadata',
212
227
  resource_permissions: 'resource_permissions',
@@ -262,13 +277,13 @@ const config = {
262
277
  }
263
278
  }
264
279
  },
265
- "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}\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 user users @relation(fields: [ran_by_user_id], references: [id], onDelete: Cascade)\n\n @@index([started_at])\n @@index([session_id, message_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 chat_sessions {\n id String @id @default(uuid())\n user_id String\n opencode_session_id String @unique\n title String\n created_at BigInt\n updated_at BigInt\n user users @relation(fields: [user_id], references: [id], onDelete: Cascade)\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",
266
- "inlineSchemaHash": "dacbd763b12ea632925d64bed2f4e2b1bc845eb6765824a14f15d6d99d855ccb",
280
+ "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}\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 user users @relation(fields: [ran_by_user_id], references: [id], onDelete: Cascade)\n\n @@index([started_at])\n @@index([session_id, message_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 chat_sessions {\n id String @id @default(uuid())\n user_id String\n opencode_session_id String @unique\n title String\n created_at BigInt\n updated_at BigInt\n trackedFiles chat_session_tracked_files[]\n user users @relation(fields: [user_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",
281
+ "inlineSchemaHash": "45c13b219e910ceddc3f4af9a68fbb39f9651cf3071b968a4c1480a1aad8e81c",
267
282
  "copyEngine": true
268
283
  }
269
284
  config.dirname = '/'
270
285
 
271
- config.runtimeDataModel = JSON.parse("{\"models\":{\"users\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"role\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"password_hash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"must_change_password\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"reset_token\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"reset_token_expires_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"workflowRuns\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"workflow_runs\",\"nativeType\":null,\"relationName\":\"usersToworkflow_runs\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"chatSessions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"chat_sessions\",\"nativeType\":null,\"relationName\":\"chat_sessionsTousers\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"resourcePermissionUsers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"resource_permission_users\",\"nativeType\":null,\"relationName\":\"resource_permission_usersTousers\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdResourceMetadata\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"resource_metadata\",\"nativeType\":null,\"relationName\":\"ResourceCreatedBy\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"approvedResourceMetadata\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"resource_metadata\",\"nativeType\":null,\"relationName\":\"ResourceApprovedBy\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"workflow_runs\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ran_by_user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"started_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"completed_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"args\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"error_message\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"output\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"workflow_slug\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"session_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"message_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"users\",\"nativeType\":null,\"relationName\":\"usersToworkflow_runs\",\"relationFromFields\":[\"ran_by_user_id\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"workflow_aborted_sessions\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"session_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"key_value\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"key\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"chat_sessions\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"opencode_session_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"users\",\"nativeType\":null,\"relationName\":\"chat_sessionsTousers\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"tool_execution_permissions\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"opencode_session_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"message_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"call_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"responded_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"opencode_session_id\",\"message_id\",\"call_id\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"opencode_session_id\",\"message_id\",\"call_id\"]}],\"isGenerated\":false},\"resource_metadata\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"resource_kind\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"resource_slug\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_by_user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"approved_by_user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"approvedSnapshot\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"resource_approved_snapshots\",\"nativeType\":null,\"relationName\":\"resource_approved_snapshotsToresource_metadata\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdByUser\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"users\",\"nativeType\":null,\"relationName\":\"ResourceCreatedBy\",\"relationFromFields\":[\"created_by_user_id\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"approvedByUser\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"users\",\"nativeType\":null,\"relationName\":\"ResourceApprovedBy\",\"relationFromFields\":[\"approved_by_user_id\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"resource_kind\",\"resource_slug\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"resource_permissions\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"resource_kind\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"resource_slug\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"permission_mode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allowedUsers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"resource_permission_users\",\"nativeType\":null,\"relationName\":\"resource_permission_usersToresource_permissions\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"resource_kind\",\"resource_slug\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"resource_permission_users\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"resource_kind\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"resource_slug\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"permission\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"resource_permissions\",\"nativeType\":null,\"relationName\":\"resource_permission_usersToresource_permissions\",\"relationFromFields\":[\"resource_kind\",\"resource_slug\"],\"relationToFields\":[\"resource_kind\",\"resource_slug\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"users\",\"nativeType\":null,\"relationName\":\"resource_permission_usersTousers\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"resource_kind\",\"resource_slug\",\"user_id\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"resource_kind\",\"resource_slug\",\"user_id\"]}],\"isGenerated\":false},\"resource_approved_snapshots\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"resource_kind\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"resource_slug\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"file_count\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"resource\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"resource_metadata\",\"nativeType\":null,\"relationName\":\"resource_approved_snapshotsToresource_metadata\",\"relationFromFields\":[\"resource_kind\",\"resource_slug\"],\"relationToFields\":[\"resource_kind\",\"resource_slug\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"files\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"resource_approved_snapshot_files\",\"nativeType\":null,\"relationName\":\"resource_approved_snapshot_filesToresource_approved_snapshots\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"resource_kind\",\"resource_slug\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"resource_approved_snapshot_files\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"resource_kind\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"resource_slug\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"relative_path\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"content_kind\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"text_content\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"binary_content\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Bytes\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"size_bytes\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"content_sha256\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"snapshot\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"resource_approved_snapshots\",\"nativeType\":null,\"relationName\":\"resource_approved_snapshot_filesToresource_approved_snapshots\",\"relationFromFields\":[\"resource_kind\",\"resource_slug\"],\"relationToFields\":[\"resource_kind\",\"resource_slug\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"resource_kind\",\"resource_slug\",\"relative_path\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"resource_kind\",\"resource_slug\",\"relative_path\"]}],\"isGenerated\":false}},\"enums\":{},\"types\":{}}")
286
+ config.runtimeDataModel = JSON.parse("{\"models\":{\"users\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"role\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"password_hash\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"must_change_password\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"reset_token\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"reset_token_expires_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"workflowRuns\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"workflow_runs\",\"nativeType\":null,\"relationName\":\"usersToworkflow_runs\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"chatSessions\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"chat_sessions\",\"nativeType\":null,\"relationName\":\"chat_sessionsTousers\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"resourcePermissionUsers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"resource_permission_users\",\"nativeType\":null,\"relationName\":\"resource_permission_usersTousers\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdResourceMetadata\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"resource_metadata\",\"nativeType\":null,\"relationName\":\"ResourceCreatedBy\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"approvedResourceMetadata\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"resource_metadata\",\"nativeType\":null,\"relationName\":\"ResourceApprovedBy\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"workflow_runs\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"ran_by_user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"started_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"completed_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"args\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"error_message\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"output\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"workflow_slug\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"session_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"message_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"users\",\"nativeType\":null,\"relationName\":\"usersToworkflow_runs\",\"relationFromFields\":[\"ran_by_user_id\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"workflow_aborted_sessions\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"session_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"key_value\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"key\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"value\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"chat_sessions\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"opencode_session_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"title\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"trackedFiles\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"chat_session_tracked_files\",\"nativeType\":null,\"relationName\":\"chat_session_tracked_filesTochat_sessions\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"users\",\"nativeType\":null,\"relationName\":\"chat_sessionsTousers\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"chat_session_tracked_files\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"chat_session_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"relative_path\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"existed_at_baseline\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"content_kind\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"text_content\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"binary_content\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Bytes\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"size_bytes\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"content_sha256\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"session\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"chat_sessions\",\"nativeType\":null,\"relationName\":\"chat_session_tracked_filesTochat_sessions\",\"relationFromFields\":[\"chat_session_id\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"chat_session_id\",\"relative_path\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"chat_session_id\",\"relative_path\"]}],\"isGenerated\":false},\"tool_execution_permissions\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"opencode_session_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"message_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"call_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"responded_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"opencode_session_id\",\"message_id\",\"call_id\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"opencode_session_id\",\"message_id\",\"call_id\"]}],\"isGenerated\":false},\"resource_metadata\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"resource_kind\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"resource_slug\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_by_user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"approved_by_user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"approvedSnapshot\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"resource_approved_snapshots\",\"nativeType\":null,\"relationName\":\"resource_approved_snapshotsToresource_metadata\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdByUser\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"users\",\"nativeType\":null,\"relationName\":\"ResourceCreatedBy\",\"relationFromFields\":[\"created_by_user_id\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"approvedByUser\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"users\",\"nativeType\":null,\"relationName\":\"ResourceApprovedBy\",\"relationFromFields\":[\"approved_by_user_id\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"SetNull\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"resource_kind\",\"resource_slug\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"resource_permissions\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"resource_kind\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"resource_slug\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"permission_mode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"allowedUsers\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"resource_permission_users\",\"nativeType\":null,\"relationName\":\"resource_permission_usersToresource_permissions\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"resource_kind\",\"resource_slug\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"resource_permission_users\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"resource_kind\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"resource_slug\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"permission\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"resource_permissions\",\"nativeType\":null,\"relationName\":\"resource_permission_usersToresource_permissions\",\"relationFromFields\":[\"resource_kind\",\"resource_slug\"],\"relationToFields\":[\"resource_kind\",\"resource_slug\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"users\",\"nativeType\":null,\"relationName\":\"resource_permission_usersTousers\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"id\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"resource_kind\",\"resource_slug\",\"user_id\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"resource_kind\",\"resource_slug\",\"user_id\"]}],\"isGenerated\":false},\"resource_approved_snapshots\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"resource_kind\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"resource_slug\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"file_count\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"BigInt\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"resource\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"resource_metadata\",\"nativeType\":null,\"relationName\":\"resource_approved_snapshotsToresource_metadata\",\"relationFromFields\":[\"resource_kind\",\"resource_slug\"],\"relationToFields\":[\"resource_kind\",\"resource_slug\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"files\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"resource_approved_snapshot_files\",\"nativeType\":null,\"relationName\":\"resource_approved_snapshot_filesToresource_approved_snapshots\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"resource_kind\",\"resource_slug\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"resource_approved_snapshot_files\":{\"dbName\":null,\"schema\":null,\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"String\",\"nativeType\":null,\"default\":{\"name\":\"uuid\",\"args\":[4]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"resource_kind\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"resource_slug\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"relative_path\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"content_kind\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"text_content\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"binary_content\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Bytes\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"size_bytes\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"content_sha256\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"snapshot\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"resource_approved_snapshots\",\"nativeType\":null,\"relationName\":\"resource_approved_snapshot_filesToresource_approved_snapshots\",\"relationFromFields\":[\"resource_kind\",\"resource_slug\"],\"relationToFields\":[\"resource_kind\",\"resource_slug\"],\"relationOnDelete\":\"Cascade\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"resource_kind\",\"resource_slug\",\"relative_path\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"resource_kind\",\"resource_slug\",\"relative_path\"]}],\"isGenerated\":false}},\"enums\":{},\"types\":{}}")
272
287
  defineDmmfProperty(exports.Prisma, config.runtimeDataModel)
273
288
  config.engineWasm = undefined
274
289
  config.compilerWasm = undefined