@opengeni/db 0.28.1 → 0.31.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 (187) hide show
  1. package/dist/attached-browser-devices.d.ts +42 -0
  2. package/dist/attempt-tool-catalogs.d.ts +16 -0
  3. package/dist/browser-auth.d.ts +91 -0
  4. package/dist/browser-identities.d.ts +128 -0
  5. package/dist/browser-sessions.d.ts +272 -0
  6. package/dist/browser-state-artifacts.d.ts +17 -0
  7. package/dist/capability-components.d.ts +37 -0
  8. package/dist/capability-integrations.d.ts +192 -0
  9. package/dist/chunk-F5FT7BEZ.js +3535 -0
  10. package/dist/chunk-F5FT7BEZ.js.map +1 -0
  11. package/dist/chunk-ISI2TIUG.js +639 -0
  12. package/dist/chunk-ISI2TIUG.js.map +1 -0
  13. package/dist/chunk-MWDVXQOL.js +11639 -0
  14. package/dist/chunk-MWDVXQOL.js.map +1 -0
  15. package/dist/chunk-NBE6CHRI.js +955 -0
  16. package/dist/chunk-NBE6CHRI.js.map +1 -0
  17. package/dist/{chunk-DBS5HPEW.js → chunk-YHZXQ7HP.js} +760 -11
  18. package/dist/chunk-YHZXQ7HP.js.map +1 -0
  19. package/dist/codemode-operations.d.ts +117 -0
  20. package/dist/codex-token-resolver.d.ts +2 -2
  21. package/dist/company-profile-schema.d.ts +798 -0
  22. package/dist/company-profile.d.ts +268 -0
  23. package/dist/computer-sessions.d.ts +109 -0
  24. package/dist/connection-token-resolver.d.ts +9 -4
  25. package/dist/database.d.ts +52 -3
  26. package/dist/editable-artifact-durable-export.d.ts +153 -0
  27. package/dist/editable-artifact-durable-export.js +788 -0
  28. package/dist/editable-artifact-durable-export.js.map +1 -0
  29. package/dist/editable-artifact-materialization.d.ts +123 -0
  30. package/dist/editable-artifacts-schema.d.ts +4152 -0
  31. package/dist/editable-artifacts.d.ts +610 -0
  32. package/dist/editable-artifacts.js +26 -0
  33. package/dist/editable-artifacts.js.map +1 -0
  34. package/dist/environment-crypto.d.ts +8 -4
  35. package/dist/generated-images.d.ts +139 -0
  36. package/dist/index.d.ts +958 -126
  37. package/dist/index.js +31204 -12172
  38. package/dist/index.js.map +1 -1
  39. package/dist/insights.d.ts +51 -4
  40. package/dist/integration-bindings.d.ts +70 -0
  41. package/dist/integration-features.d.ts +99 -0
  42. package/dist/interaction-revisions.d.ts +3 -0
  43. package/dist/interaction-schema.d.ts +5372 -0
  44. package/dist/knowledge-source-sync-schema.d.ts +1679 -0
  45. package/dist/knowledge-source-sync.d.ts +274 -0
  46. package/dist/lossless-columns.d.ts +58 -0
  47. package/dist/lossless-json.d.ts +39 -0
  48. package/dist/memory-domain.d.ts +3 -6
  49. package/dist/memory-governance.d.ts +2 -2
  50. package/dist/memory-slack-delivery.d.ts +101 -0
  51. package/dist/new-session-drafts.d.ts +2 -2
  52. package/dist/pack-components.d.ts +76 -0
  53. package/dist/pack-installations.d.ts +86 -0
  54. package/dist/persistence-errors.d.ts +7 -14
  55. package/dist/plugin-packages.d.ts +126 -0
  56. package/dist/preference-registry.d.ts +1 -1
  57. package/dist/provision-roles.d.ts +9 -1
  58. package/dist/provision-roles.js +1 -1
  59. package/dist/runtime-posture.d.ts +18 -6
  60. package/dist/schema.d.ts +19122 -8731
  61. package/dist/schema.js +173 -1
  62. package/dist/scoped-knowledge.d.ts +97 -1
  63. package/dist/session-control.d.ts +4 -4
  64. package/dist/session-queue-commands.d.ts +19 -11
  65. package/dist/session-realtime-context.d.ts +2 -2
  66. package/dist/session-realtime-ledger.d.ts +4 -4
  67. package/dist/session-realtime-mirror.d.ts +2 -2
  68. package/dist/session-realtime-state.d.ts +1 -1
  69. package/dist/session-realtime-terminal.d.ts +8 -1
  70. package/dist/session-realtime.d.ts +7 -7
  71. package/dist/session-tool-call-settlement.d.ts +1 -1
  72. package/dist/slack-user-link-access.d.ts +54 -0
  73. package/dist/transcription-recordings-schema.d.ts +44 -6
  74. package/dist/transcription-recordings.d.ts +3 -3
  75. package/dist/turn-initiator.d.ts +2 -2
  76. package/dist/video-generation.d.ts +216 -0
  77. package/dist/video-generation.js +66 -0
  78. package/dist/video-generation.js.map +1 -0
  79. package/dist/workspace-artifacts.d.ts +1 -1
  80. package/dist/workspace-instruction-policies.d.ts +1 -1
  81. package/dist/workspace-learning-policy-schema.d.ts +932 -0
  82. package/dist/workspace-learning-policy.d.ts +161 -0
  83. package/drizzle/0065_enrollment_credential_generation.sql +10 -0
  84. package/drizzle/0140_retained_screenshot_artifacts.sql +192 -0
  85. package/drizzle/0176_lossless_canonical_json.sql +975 -0
  86. package/drizzle/0177_session_events_workspace_turn_type_index.sql +5 -0
  87. package/drizzle/0178_permissioned_secret_reads.sql +14 -0
  88. package/drizzle/0179_slack_private_shortcut_delivery_gate.sql +85 -0
  89. package/drizzle/0180_retained_screenshot_lifecycle_fences.sql +273 -0
  90. package/drizzle/0181_connected_machine_removal.sql +52 -0
  91. package/drizzle/0182_connected_machine_remove_session_default.sql +77 -0
  92. package/drizzle/0183_model_call_provider_cost_estimates.sql +39 -0
  93. package/drizzle/0184_sandbox_drain_teardown_fence.sql +682 -0
  94. package/drizzle/0185_temporal_schedule_cleanup_outbox.sql +168 -0
  95. package/drizzle/0186_sandbox_capture_provider_contract.sql +400 -0
  96. package/drizzle/0187_generated_image_artifacts.sql +173 -0
  97. package/drizzle/0188_image_generation_retention_failure.sql +25 -0
  98. package/drizzle/0189_retained_session_image_formats.sql +13 -0
  99. package/drizzle/0190_timeline_annotations.sql +31 -0
  100. package/drizzle/0191_editable_artifact_engine.sql +3853 -0
  101. package/drizzle/0192_editable_artifact_live_tickets.sql +338 -0
  102. package/drizzle/0193_editable_artifact_authorization.sql +190 -0
  103. package/drizzle/0194_editable_artifact_durable_exports.sql +160 -0
  104. package/drizzle/0195_editable_artifact_import_authorization.sql +203 -0
  105. package/drizzle/0196_rig_provider_images.sql +152 -0
  106. package/drizzle/0197_knowledge_source_sync_schedules.sql +523 -0
  107. package/drizzle/0198_memory_slack_publication_delivery.sql +393 -0
  108. package/drizzle/0199_workspace_learning_policy.sql +980 -0
  109. package/drizzle/0201_company_profile_authority.sql +849 -0
  110. package/drizzle/0202_document_index_checkpoints.sql +85 -0
  111. package/drizzle/0203_durable_video_generation.sql +353 -0
  112. package/drizzle/0204_video_generation_funding.sql +44 -0
  113. package/drizzle/0205_attempt_tool_catalogs.sql +230 -0
  114. package/drizzle/0206_browser_sessions.sql +646 -0
  115. package/drizzle/0207_browser_identities.sql +379 -0
  116. package/drizzle/0208_attached_browser_devices.sql +165 -0
  117. package/drizzle/0209_computer_sessions.sql +575 -0
  118. package/drizzle/0210_browser_auth_network_interventions.sql +441 -0
  119. package/drizzle/0211_editable_artifact_session_links.sql +58 -0
  120. package/drizzle/0212_slack_installation_bindings.sql +348 -0
  121. package/drizzle/0213_slack_user_link_access_requests.sql +177 -0
  122. package/drizzle/0214_session_activity_commit_gate.sql +262 -0
  123. package/drizzle/0215_capabilities_platform.sql +980 -0
  124. package/drizzle/0216_pack_component_ownership.sql +235 -0
  125. package/drizzle/0217_capability_definition_delete_authority.sql +32 -0
  126. package/package.json +18 -5
  127. package/src/attached-browser-devices.ts +371 -0
  128. package/src/attempt-tool-catalogs.ts +131 -0
  129. package/src/browser-auth.ts +1896 -0
  130. package/src/browser-identities.ts +1168 -0
  131. package/src/browser-sessions.ts +2005 -0
  132. package/src/browser-state-artifacts.ts +59 -0
  133. package/src/capability-components.ts +166 -0
  134. package/src/capability-integrations.ts +1663 -0
  135. package/src/codemode-operations.ts +674 -0
  136. package/src/company-profile-schema.ts +143 -0
  137. package/src/company-profile.ts +968 -0
  138. package/src/computer-sessions.ts +1130 -0
  139. package/src/connection-token-resolver.ts +270 -25
  140. package/src/database.ts +434 -24
  141. package/src/editable-artifact-durable-export.ts +1201 -0
  142. package/src/editable-artifact-materialization.ts +893 -0
  143. package/src/editable-artifacts-schema.ts +879 -0
  144. package/src/editable-artifacts.ts +5404 -0
  145. package/src/environment-crypto.ts +22 -9
  146. package/src/generated-images.ts +740 -0
  147. package/src/index.ts +10117 -2730
  148. package/src/insights.ts +160 -13
  149. package/src/integration-bindings.ts +455 -0
  150. package/src/integration-features.ts +859 -0
  151. package/src/interaction-revisions.ts +40 -0
  152. package/src/interaction-schema.ts +1303 -0
  153. package/src/knowledge-source-sync-schema.ts +192 -0
  154. package/src/knowledge-source-sync.ts +1922 -0
  155. package/src/lossless-columns.ts +35 -0
  156. package/src/lossless-json.ts +322 -0
  157. package/src/memory-domain.ts +5 -44
  158. package/src/memory-slack-delivery.ts +801 -0
  159. package/src/pack-components.ts +954 -0
  160. package/src/pack-installations.ts +929 -0
  161. package/src/persistence-errors.ts +26 -34
  162. package/src/plugin-packages.ts +1186 -0
  163. package/src/provision-roles.ts +302 -1
  164. package/src/runtime-posture-cli.ts +9 -0
  165. package/src/runtime-posture.ts +514 -5
  166. package/src/schema.ts +5177 -2957
  167. package/src/scoped-knowledge-schema.ts +1 -1
  168. package/src/scoped-knowledge.ts +655 -3
  169. package/src/session-control.ts +133 -81
  170. package/src/session-queue-commands.ts +511 -247
  171. package/src/session-realtime-context.ts +20 -7
  172. package/src/session-realtime-ledger.ts +32 -10
  173. package/src/session-realtime-mirror.ts +4 -2
  174. package/src/session-realtime-terminal.ts +89 -21
  175. package/src/session-realtime.ts +10 -9
  176. package/src/session-tool-call-settlement.ts +38 -15
  177. package/src/slack-user-link-access.ts +702 -0
  178. package/src/transcription-recordings-schema.ts +5 -2
  179. package/src/transcription-recordings.ts +70 -40
  180. package/src/video-generation.ts +1452 -0
  181. package/src/workspace-learning-policy-schema.ts +139 -0
  182. package/src/workspace-learning-policy.ts +595 -0
  183. package/dist/chunk-DBS5HPEW.js.map +0 -1
  184. package/dist/chunk-HT5T62CC.js +0 -6803
  185. package/dist/chunk-HT5T62CC.js.map +0 -1
  186. package/dist/event-payload-sanitizer.d.ts +0 -32
  187. package/src/event-payload-sanitizer.ts +0 -377
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/schema.ts","../src/workspace-instruction-policies-schema.ts","../src/preference-registry-schema.ts","../src/memory-governance-schema.ts","../src/scoped-knowledge-schema.ts","../src/transcription-recordings-schema.ts"],"sourcesContent":["import type {\n FirstPartyMcpToolName,\n McpPersonalConnectionDelegation,\n McpServerConnectionRef,\n SessionMcpApprovalPolicy,\n} from \"@opengeni/contracts\";\nimport { sql } from \"drizzle-orm\";\nimport type { SessionToolPolicy } from \"@opengeni/contracts\";\nimport type { HumanInputQuestion, HumanInputResponse } from \"@opengeni/contracts\";\nimport {\n bigint,\n boolean,\n check,\n foreignKey,\n index,\n integer,\n jsonb,\n numeric,\n pgTable,\n text,\n timestamp,\n uniqueIndex,\n uuid,\n customType,\n} from \"drizzle-orm/pg-core\";\n\nconst vector = customType<{ data: number[]; driverData: string }>({\n dataType() {\n return \"vector(3072)\";\n },\n toDriver(value) {\n return `[${value.join(\",\")}]`;\n },\n});\n\nexport type ConnectorActionPolicyDecision = \"allow\" | \"ask\" | \"block\";\n\nexport type ConnectorActionPolicySnapshotEntry = {\n id: string;\n connectionId: string;\n serverId: string;\n toolName: string;\n actionName: string;\n policy: ConnectorActionPolicyDecision;\n version: number;\n};\n\nexport const managedAccounts = pgTable(\n \"managed_accounts\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n name: text(\"name\").notNull(),\n externalSource: text(\"external_source\"),\n externalId: text(\"external_id\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n external: uniqueIndex(\"managed_accounts_external_idx\").on(\n table.externalSource,\n table.externalId,\n ),\n }),\n);\n\nexport const workspaces = pgTable(\n \"workspaces\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n name: text(\"name\").notNull(),\n slug: text(\"slug\"),\n externalSource: text(\"external_source\"),\n externalId: text(\"external_id\"),\n // White-label agent persona template override. NULL means the deployment\n // default (OPENGENI_AGENT_INSTRUCTIONS_TEMPLATE / DEFAULT_AGENT_INSTRUCTIONS).\n agentInstructions: text(\"agent_instructions\"),\n // Growth-ready per-workspace settings bag (migration 0045). Holds memoryEnabled\n // and future workspace-level toggles; validated/merged via WorkspaceSettingsSchema.\n settings: jsonb(\"settings\").$type<Record<string, unknown>>().notNull().default({}),\n // The workspace's default rig (migration 0047). NULL ⇒ no default; sessions\n // created without an explicit rig ride no rig (today's behavior exactly). FK\n // (-> rigs(id) ON DELETE SET NULL) lives in migration 0047, not a Drizzle\n // .references(), because `rigs` is declared later in this file (same\n // forward-reference pattern as sessions.activeSandboxId). Consumed in M3.\n defaultRigId: uuid(\"default_rig_id\"),\n // Workspace-wide viewer admission intent set by the warm-meter reaper when\n // managed credits or the monthly warm allowance are exhausted. It is\n // deliberately independent of a lease so a dashboard cannot re-arm a\n // draining box or spawn a cold successor before a fresh limit evaluation\n // clears the gate.\n sandboxViewerForceDrainReason: text(\"sandbox_viewer_force_drain_reason\", {\n enum: [\"balance\", \"warm_cap\"],\n }),\n sandboxViewerForceDrainRequestedAt: timestamp(\"sandbox_viewer_force_drain_requested_at\", {\n withTimezone: true,\n }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n account: index(\"workspaces_account_idx\").on(table.accountId),\n accountSlug: uniqueIndex(\"workspaces_account_slug_idx\")\n .on(table.accountId, table.slug)\n .where(sql`${table.slug} is not null`),\n external: uniqueIndex(\"workspaces_external_idx\").on(table.externalSource, table.externalId),\n sandboxViewerForceDrain: index(\"workspaces_sandbox_viewer_force_drain_idx\")\n .on(table.id)\n .where(sql`${table.sandboxViewerForceDrainReason} is not null`),\n sandboxViewerForceDrainValid: check(\n \"workspaces_sandbox_viewer_force_drain_check\",\n sql`(\n ${table.sandboxViewerForceDrainReason} is null\n and ${table.sandboxViewerForceDrainRequestedAt} is null\n ) or (\n ${table.sandboxViewerForceDrainReason} in ('balance', 'warm_cap')\n and ${table.sandboxViewerForceDrainRequestedAt} is not null\n )`,\n ),\n }),\n);\n\n// A single generic workspace-published surface. Presentation labels such as\n// app, page, gallery, or document are intentionally not persisted as types.\nexport const workspaceArtifacts = pgTable(\n \"workspace_artifacts\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n slug: text(\"slug\").notNull(),\n title: text(\"title\").notNull(),\n description: text(\"description\"),\n status: text(\"status\").$type<\"active\" | \"archived\">().notNull().default(\"active\"),\n // The FK to workspace_artifact_versions is installed by migration after\n // that table exists. Keeping this pointer here makes reads inexpensive.\n currentVersionId: uuid(\"current_version_id\"),\n createdBySubjectId: text(\"created_by_subject_id\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"workspace_artifacts_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n workspaceSlug: uniqueIndex(\"workspace_artifacts_workspace_slug_uq\").on(\n table.workspaceId,\n table.slug,\n ),\n workspaceId: uniqueIndex(\"workspace_artifacts_workspace_id_uq\").on(table.workspaceId, table.id),\n list: index(\"workspace_artifacts_list_idx\").on(table.workspaceId, table.updatedAt),\n }),\n);\n\nexport const workspaceArtifactVersions = pgTable(\n \"workspace_artifact_versions\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n artifactId: uuid(\"artifact_id\").notNull(),\n revision: integer(\"revision\").notNull(),\n contentKey: text(\"content_key\").notNull(),\n contentType: text(\"content_type\").$type<\"text/html\">().notNull().default(\"text/html\"),\n contentSha256: text(\"content_sha256\").notNull(),\n sizeBytes: integer(\"size_bytes\").notNull(),\n operationKey: text(\"operation_key\").notNull(),\n sourceSessionId: uuid(\"source_session_id\"),\n sourceTurnId: uuid(\"source_turn_id\"),\n sourceAttemptId: uuid(\"source_attempt_id\"),\n sourceExecutionGeneration: integer(\"source_execution_generation\"),\n createdBySubjectId: text(\"created_by_subject_id\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"workspace_artifact_versions_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n artifact: foreignKey({\n name: \"workspace_artifact_versions_artifact_fk\",\n columns: [table.workspaceId, table.artifactId],\n foreignColumns: [workspaceArtifacts.workspaceId, workspaceArtifacts.id],\n }).onDelete(\"cascade\"),\n workspaceId: uniqueIndex(\"workspace_artifact_versions_workspace_id_uq\").on(\n table.workspaceId,\n table.id,\n ),\n revision: uniqueIndex(\"workspace_artifact_versions_revision_uq\").on(\n table.workspaceId,\n table.artifactId,\n table.revision,\n ),\n operation: uniqueIndex(\"workspace_artifact_versions_operation_uq\").on(\n table.workspaceId,\n table.operationKey,\n ),\n provenance: check(\n \"workspace_artifact_versions_provenance_chk\",\n sql`(\n ${table.sourceSessionId} is null\n and ${table.sourceTurnId} is null\n and ${table.sourceAttemptId} is null\n and ${table.sourceExecutionGeneration} is null\n ) or (\n ${table.sourceSessionId} is not null\n and ${table.sourceTurnId} is not null\n and ${table.sourceAttemptId} is not null\n and ${table.sourceExecutionGeneration} > 0\n )`,\n ),\n }),\n);\n\nexport const workspaceArtifactEvents = pgTable(\n \"workspace_artifact_events\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n artifactId: uuid(\"artifact_id\").notNull(),\n type: text(\"type\").$type<\"published\" | \"rolled_back\">().notNull(),\n fromVersionId: uuid(\"from_version_id\"),\n toVersionId: uuid(\"to_version_id\").notNull(),\n operationKey: text(\"operation_key\").notNull(),\n sourceSessionId: uuid(\"source_session_id\"),\n sourceTurnId: uuid(\"source_turn_id\"),\n sourceAttemptId: uuid(\"source_attempt_id\"),\n sourceExecutionGeneration: integer(\"source_execution_generation\"),\n actorSubjectId: text(\"actor_subject_id\").notNull(),\n reason: text(\"reason\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"workspace_artifact_events_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n artifact: foreignKey({\n name: \"workspace_artifact_events_artifact_fk\",\n columns: [table.workspaceId, table.artifactId],\n foreignColumns: [workspaceArtifacts.workspaceId, workspaceArtifacts.id],\n }).onDelete(\"cascade\"),\n operation: uniqueIndex(\"workspace_artifact_events_operation_uq\").on(\n table.workspaceId,\n table.operationKey,\n ),\n list: index(\"workspace_artifact_events_list_idx\").on(\n table.workspaceId,\n table.artifactId,\n table.createdAt,\n ),\n provenance: check(\n \"workspace_artifact_events_provenance_chk\",\n sql`(\n ${table.sourceSessionId} is null\n and ${table.sourceTurnId} is null\n and ${table.sourceAttemptId} is null\n and ${table.sourceExecutionGeneration} is null\n ) or (\n ${table.sourceSessionId} is not null\n and ${table.sourceTurnId} is not null\n and ${table.sourceAttemptId} is not null\n and ${table.sourceExecutionGeneration} > 0\n )`,\n ),\n }),\n);\n\n// One target-schema-local deployment fallback. The migration runner reconciles\n// this singleton from OPENGENI_MAX_NESTED_AGENT_DEPTH; session admission locks\n// and reads it through the SECURITY DEFINER capability installed by the\n// boundary migration so the application role cannot mutate policy authority.\nexport const nestedAgentDepthConfiguration = pgTable(\n \"nested_agent_depth_configuration\",\n {\n singleton: boolean(\"singleton\").primaryKey().notNull().default(true),\n maxNestedAgentDepth: integer(\"max_nested_agent_depth\").notNull(),\n policySource: text(\"policy_source\").$type<\"deployment\" | \"default\">().notNull(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n singletonOnly: check(\n \"nested_agent_depth_configuration_singleton_check\",\n sql`${table.singleton}`,\n ),\n maxValid: check(\n \"nested_agent_depth_configuration_max_check\",\n sql`${table.maxNestedAgentDepth} >= 0`,\n ),\n sourceValid: check(\n \"nested_agent_depth_configuration_source_check\",\n sql`${table.policySource} in ('deployment', 'default')`,\n ),\n }),\n);\n\n// One mandatory workspace-wide admission barrier. Every inference-admitting\n// transaction locks this row before it touches a session; Pause/Resume and\n// foreground Send/Steer advance its monotonic revision under FOR UPDATE.\nexport const workspaceInferenceControls = pgTable(\n \"workspace_inference_controls\",\n {\n workspaceId: uuid(\"workspace_id\").primaryKey(),\n accountId: uuid(\"account_id\").notNull(),\n revision: bigint(\"revision\", { mode: \"number\" }).notNull().default(0),\n workspaceState: text(\"workspace_state\").notNull().default(\"active\"),\n workspacePauseRevision: bigint(\"workspace_pause_revision\", {\n mode: \"number\",\n }),\n reason: text(\"reason\"),\n changedBy: text(\"changed_by\"),\n changedAt: timestamp(\"changed_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"workspace_inference_controls_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n workspaceAccountIdentity: uniqueIndex(\"workspace_inference_controls_workspace_account_uq\").on(\n table.workspaceId,\n table.accountId,\n ),\n stateValid: check(\n \"workspace_inference_controls_state_check\",\n sql`${table.workspaceState} in ('active', 'paused')`,\n ),\n pauseRevisionConsistent: check(\n \"workspace_inference_controls_pause_revision_check\",\n sql`(${table.workspaceState} = 'active' and ${table.workspacePauseRevision} is null)\n or (${table.workspaceState} = 'paused' and ${table.workspacePauseRevision} is not null)`,\n ),\n revisionValid: check(\n \"workspace_inference_controls_revision_check\",\n sql`${table.revision} >= 0 and (${table.workspacePauseRevision} is null or ${table.workspacePauseRevision} <= ${table.revision})`,\n ),\n }),\n);\n\n// One transactionally allocated activity clock per workspace. An updated-order\n// first page takes a SHARE lock on this row after the workspace-control lock;\n// semantic writers allocate after UUID-ordered session locks. Plain MVCC page\n// reads never lock session rows, so that ordering cannot form a cycle.\nexport const workspaceSessionActivityRevisions = pgTable(\n \"workspace_session_activity_revisions\",\n {\n workspaceId: uuid(\"workspace_id\").primaryKey(),\n accountId: uuid(\"account_id\").notNull(),\n revision: bigint(\"revision\", { mode: \"number\" }).notNull().default(0),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"workspace_session_activity_revisions_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n revisionValid: check(\n \"workspace_session_activity_revisions_revision_check\",\n sql`${table.revision} >= 0`,\n ),\n }),\n);\n\nexport const workspaceMemberships = pgTable(\n \"workspace_memberships\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n subjectId: text(\"subject_id\").notNull(),\n subjectLabel: text(\"subject_label\"),\n role: text(\"role\").notNull().default(\"member\"),\n permissions: jsonb(\"permissions\").$type<string[]>().notNull().default([]),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n subjectWorkspace: uniqueIndex(\"workspace_memberships_subject_workspace_idx\").on(\n table.subjectId,\n table.workspaceId,\n ),\n subject: index(\"workspace_memberships_subject_idx\").on(table.subjectId),\n account: index(\"workspace_memberships_account_idx\").on(table.accountId),\n }),\n);\n\nexport const apiKeys = pgTable(\n \"api_keys\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\").references(() => workspaces.id, {\n onDelete: \"cascade\",\n }),\n name: text(\"name\").notNull(),\n prefix: text(\"prefix\").notNull(),\n keyHash: text(\"key_hash\").notNull(),\n permissions: jsonb(\"permissions\").$type<string[]>().notNull().default([]),\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }),\n revokedAt: timestamp(\"revoked_at\", { withTimezone: true }),\n lastUsedAt: timestamp(\"last_used_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n prefix: index(\"api_keys_prefix_idx\").on(table.prefix),\n hash: uniqueIndex(\"api_keys_key_hash_idx\").on(table.keyHash),\n account: index(\"api_keys_account_idx\").on(table.accountId),\n workspace: index(\"api_keys_workspace_idx\").on(table.workspaceId),\n }),\n);\n\nexport const workspaceVariableSets = pgTable(\n \"workspace_variable_sets\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n name: text(\"name\").notNull(),\n description: text(\"description\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceName: uniqueIndex(\"workspace_variable_sets_workspace_name_idx\").on(\n table.workspaceId,\n table.name,\n ),\n workspaceCreated: index(\"workspace_variable_sets_workspace_created_idx\").on(\n table.workspaceId,\n table.createdAt,\n ),\n }),\n);\n\nexport const workspaceVariableSetVariables = pgTable(\n \"workspace_variable_set_variables\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n variableSetId: uuid(\"variable_set_id\")\n .notNull()\n .references(() => workspaceVariableSets.id, { onDelete: \"cascade\" }),\n name: text(\"name\").notNull(),\n // Format: v1:<base64 iv>:<base64 ciphertext||gcm-tag>. Never returned by any API.\n valueEncrypted: text(\"value_encrypted\").notNull(),\n version: integer(\"version\").notNull().default(1),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n variableSetName: uniqueIndex(\"workspace_variable_set_variables_env_name_idx\").on(\n table.workspaceId,\n table.variableSetId,\n table.name,\n ),\n variableSet: index(\"workspace_variable_set_variables_workspace_env_idx\").on(\n table.workspaceId,\n table.variableSetId,\n ),\n }),\n);\n\n// Per-workspace ChatGPT/Codex subscription credential. One row per connected\n// ChatGPT account within a workspace.\n// access/refresh/id tokens live INSIDE credential_encrypted (v1 AES-256-GCM,\n// same envelope as workspace_variable_set_variables); the other columns are\n// plaintext metadata (header value + UI). RLS-isolated per workspace.\nexport const codexSubscriptionCredentials = pgTable(\n \"codex_subscription_credentials\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n // Format: v1:<base64 iv>:<base64 ciphertext||gcm-tag>. JSON {access_token, refresh_token, id_token}. Never returned by any API.\n credentialEncrypted: text(\"credential_encrypted\").notNull(),\n chatgptAccountId: text(\"chatgpt_account_id\"), // plaintext ChatGPT-Account-ID header value (non-secret)\n scopes: text(\"scopes\"), // space-delimited, as granted\n planType: text(\"plan_type\"),\n isFedramp: boolean(\"is_fedramp\").notNull().default(false),\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }), // derived from access-token JWT exp\n lastRefreshAt: timestamp(\"last_refresh_at\", { withTimezone: true }),\n status: text(\"status\").notNull().default(\"active\"), // active | needs_relogin | error\n lastError: text(\"last_error\"),\n version: integer(\"version\").notNull().default(1),\n label: text(\"label\"), // user-chosen nickname; null ⇒ derive from email/plan/account\n accountEmail: text(\"account_email\"), // email from the id_token (user's own email; non-secret)\n // P2 usage cache (plaintext metadata; NEVER a token). Snapshotted from\n // GET /wham/usage; drives the quota bars + the cache TTL. primary = 5h window\n // (limit_window_seconds 18000), secondary = weekly (604800).\n primaryUsedPercent: integer(\"primary_used_percent\"),\n primaryResetAt: timestamp(\"primary_reset_at\", { withTimezone: true }),\n secondaryUsedPercent: integer(\"secondary_used_percent\"),\n secondaryResetAt: timestamp(\"secondary_reset_at\", { withTimezone: true }),\n usageCheckedAt: timestamp(\"usage_checked_at\", { withTimezone: true }), // snapshot freshness → cache TTL clock\n // P3 rotation cooldown (plaintext metadata; NEVER a token). Set when this account hit its\n // usage cap on a rotation turn; the rotation engine treats `exhausted_until > now()` as\n // capped/skip so it isn't immediately re-picked. Self-clears via the now() comparison.\n exhaustedUntil: timestamp(\"exhausted_until\", { withTimezone: true }),\n // Workspace-local, server-held fairness cursor. Provider usage headers are\n // capacity hints, never the sole allocator: live lease count is ranked first\n // and this cursor deterministically breaks equal-load/equal-capacity ties.\n // This flag controls NEW automatic allocations only. Credential health,\n // refresh, encrypted material, and an already-leased in-flight turn are\n // intentionally independent. account eligibility policy owns toggle OCC/audit and product UI.\n allocatorEnabled: boolean(\"allocator_enabled\").notNull().default(true),\n // Independent OCC/audit sequence for the allocator toggle. Token refresh\n // continues to own `version`; quota/cache writes own neither counter.\n allocatorVersion: integer(\"allocator_version\").notNull().default(1),\n allocatorUpdatedBySubjectId: text(\"allocator_updated_by_subject_id\"),\n allocatorUpdatedAt: timestamp(\"allocator_updated_at\", { withTimezone: true }),\n // Authoritative count-only summary cached from /wham/usage. Detailed rows\n // are never persisted as redemption authority; every first POST preflights\n // the provider's fresh detail endpoint.\n resetCreditAvailableCount: integer(\"reset_credit_available_count\"),\n resetCreditsCheckedAt: timestamp(\"reset_credits_checked_at\", { withTimezone: true }),\n // Set only by a direct Better Auth cookie connection/reconnection. Legacy,\n // configured, delegated, API-key, and agent-created rows remain view-only.\n connectedBySubjectId: text(\"connected_by_subject_id\"),\n selectionCount: integer(\"selection_count\").notNull().default(0),\n lastSelectedAt: timestamp(\"last_selected_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n // REPLACES codex_subscription_credentials_workspace_idx (the one-per-workspace cap).\n // One row per (workspace, ChatGPT account). Partial WHERE chatgpt_account_id IS NOT NULL\n // so degenerate null-account rows can't collide; the device-grant connect path always\n // populates chatgpt_account_id.\n wsAccount: uniqueIndex(\"codex_subscription_credentials_ws_account_idx\")\n .on(table.workspaceId, table.chatgptAccountId)\n .where(sql`${table.chatgptAccountId} is not null`),\n workspace: index(\"codex_subscription_credentials_workspace_lookup_idx\").on(table.workspaceId),\n // Composite identity is the defense-in-depth FK target for workspace-local\n // lease references in migration 0053.\n workspaceIdentity: uniqueIndex(\"codex_subscription_credentials_workspace_id_idx\").on(\n table.workspaceId,\n table.id,\n ),\n workspaceAccountIdentity: uniqueIndex(\n \"codex_subscription_credentials_workspace_account_id_idx\",\n ).on(table.workspaceId, table.accountId, table.id),\n }),\n);\n\n// Optional workspace-level credential used only for ChatGPT connected Apps.\n// Inference selection, usage, cooldown, allocator, pins, and leases never read\n// this row. A durable null row retains the OCC sequence after designation clear.\nexport const codexAppsSettings = pgTable(\n \"codex_apps_settings\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n credentialId: uuid(\"credential_id\"),\n version: integer(\"version\").notNull().default(1),\n designatedAt: timestamp(\"designated_at\", { withTimezone: true }),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"codex_apps_settings_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n credentialScope: foreignKey({\n name: \"codex_apps_settings_credential_scope_fk\",\n columns: [table.workspaceId, table.accountId, table.credentialId],\n foreignColumns: [\n codexSubscriptionCredentials.workspaceId,\n codexSubscriptionCredentials.accountId,\n codexSubscriptionCredentials.id,\n ],\n }).onDelete(\"cascade\"),\n workspace: uniqueIndex(\"codex_apps_settings_workspace_idx\").on(table.workspaceId),\n designationShape: check(\n \"codex_apps_settings_designation_shape_chk\",\n sql`${table.version} > 0 and (\n (${table.credentialId} is null and ${table.designatedAt} is null)\n or\n (${table.credentialId} is not null and ${table.designatedAt} is not null)\n )`,\n ),\n }),\n);\n\n// One durable logical human redemption. `processing` means the fresh provider\n// detail preflight is still owed; `provider_started` means the POST may have\n// reached upstream and every retry must reuse upstreamIdempotencyKey without\n// requiring the credit to remain visible as available.\nexport const codexResetRedemptionAttempts = pgTable(\n \"codex_reset_redemption_attempts\",\n {\n id: uuid(\"id\").primaryKey(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n credentialId: uuid(\"credential_id\").notNull(),\n subjectId: text(\"subject_id\").notNull(),\n browserSessionHash: text(\"browser_session_hash\").notNull(),\n creditId: text(\"credit_id\").notNull(),\n upstreamIdempotencyKey: uuid(\"upstream_idempotency_key\").notNull().defaultRandom(),\n status: text(\"status\").notNull().default(\"processing\"),\n outcome: text(\"outcome\"),\n claimHolderId: uuid(\"claim_holder_id\"),\n claimExpiresAt: timestamp(\"claim_expires_at\", { withTimezone: true }),\n confirmationExpiresAt: timestamp(\"confirmation_expires_at\", { withTimezone: true }).notNull(),\n providerStartedAt: timestamp(\"provider_started_at\", { withTimezone: true }),\n completedAt: timestamp(\"completed_at\", { withTimezone: true }),\n lastFailureKind: text(\"last_failure_kind\"),\n retryCount: integer(\"retry_count\").notNull().default(0),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"codex_reset_redemption_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n upstreamKey: uniqueIndex(\"codex_reset_redemption_upstream_key_idx\").on(\n table.upstreamIdempotencyKey,\n ),\n credentialCredit: uniqueIndex(\"codex_reset_redemption_credential_credit_idx\")\n .on(table.workspaceId, table.credentialId, table.creditId)\n .where(\n sql`${table.status} <> 'completed' or ${table.outcome} in ('reset', 'alreadyRedeemed')`,\n ),\n workspaceCredential: index(\"codex_reset_redemption_workspace_credential_idx\").on(\n table.workspaceId,\n table.credentialId,\n table.createdAt,\n ),\n claimExpiry: index(\"codex_reset_redemption_claim_expiry_idx\")\n .on(table.claimExpiresAt)\n .where(sql`${table.status} <> 'completed'`),\n statusValid: check(\n \"codex_reset_redemption_status_check\",\n sql`${table.status} in ('processing', 'provider_started', 'completed')`,\n ),\n outcomeValid: check(\n \"codex_reset_redemption_outcome_check\",\n sql`${table.outcome} is null or ${table.outcome} in ('reset', 'nothingToReset', 'noCredit', 'alreadyRedeemed')`,\n ),\n completionConsistent: check(\n \"codex_reset_redemption_completed_check\",\n sql`(${table.status} = 'completed') = (${table.outcome} is not null and ${table.completedAt} is not null)`,\n ),\n retryCountValid: check(\n \"codex_reset_redemption_retry_count_check\",\n sql`${table.retryCount} >= 0`,\n ),\n humanSubjectValid: check(\n \"codex_reset_redemption_human_subject_check\",\n sql`${table.subjectId} like 'user:_%'`,\n ),\n }),\n);\n\n// Generic external-service credential spine. credential_encrypted is the ONLY\n// secret-bearing column; normal API reads use metadata-only helpers below the DB\n// layer. Runtime token material is decrypted only by the broker accessor.\nexport const connections = pgTable(\n \"connections\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n subjectId: text(\"subject_id\"),\n providerDomain: text(\"provider_domain\").notNull(),\n kind: text(\"kind\").notNull(),\n status: text(\"status\").notNull().default(\"active\"),\n credentialEncrypted: text(\"credential_encrypted\").notNull(),\n grantedScopes: jsonb(\"granted_scopes\").$type<string[]>().notNull().default([]),\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }),\n lastRefreshAt: timestamp(\"last_refresh_at\", { withTimezone: true }),\n lastUsedAt: timestamp(\"last_used_at\", { withTimezone: true }),\n lastError: text(\"last_error\"),\n version: integer(\"version\").notNull().default(1),\n // Server-owned proof that the dedicated install route verified the exact\n // credential at this connection version. Generic/legacy writers cannot set\n // these columns, and migration 0131 clears them when protected fields change\n // without a fresh verification in the same statement.\n verifiedInstallAt: timestamp(\"verified_install_at\", { withTimezone: true }),\n verifiedInstallVersion: integer(\"verified_install_version\"),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>().notNull().default({}),\n createdBySubjectId: text(\"created_by_subject_id\"),\n updatedBySubjectId: text(\"updated_by_subject_id\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceProviderStatus: index(\"connections_workspace_provider_status_idx\").on(\n table.workspaceId,\n table.providerDomain,\n table.status,\n ),\n workspaceSubjectProvider: index(\"connections_workspace_subject_provider_idx\").on(\n table.workspaceId,\n table.subjectId,\n table.providerDomain,\n ),\n workspaceKind: index(\"connections_workspace_kind_idx\").on(table.workspaceId, table.kind),\n workspaceExpires: index(\"connections_workspace_expires_idx\").on(\n table.workspaceId,\n table.expiresAt,\n ),\n }),\n);\n\nexport const connectionDisconnectOperations = pgTable(\n \"connection_disconnect_operations\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n connectionId: uuid(\"connection_id\")\n .notNull()\n .references(() => connections.id, { onDelete: \"cascade\" }),\n subjectId: text(\"subject_id\").notNull(),\n idempotencyKey: text(\"idempotency_key\").notNull(),\n expectedVersion: integer(\"expected_version\").notNull(),\n resultVersion: integer(\"result_version\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceSubjectKey: uniqueIndex(\"connection_disconnect_operations_subject_key_uq\").on(\n table.workspaceId,\n table.subjectId,\n table.idempotencyKey,\n ),\n connectionGeneration: uniqueIndex(\n \"connection_disconnect_operations_connection_generation_uq\",\n ).on(table.workspaceId, table.connectionId, table.expectedVersion),\n identityValid: check(\n \"connection_disconnect_operations_identity_check\",\n sql`length(${table.subjectId}) between 1 and 512\n and length(${table.idempotencyKey}) between 1 and 200\n and ${table.idempotencyKey} = btrim(${table.idempotencyKey})\n and ${table.expectedVersion} > 0\n and ${table.resultVersion} = ${table.expectedVersion} + 1`,\n ),\n }),\n);\n\nexport const connectorActionPolicies = pgTable(\n \"connector_action_policies\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n connectionId: text(\"connection_id\").notNull(),\n serverId: text(\"server_id\").notNull(),\n toolName: text(\"tool_name\").notNull(),\n actionName: text(\"action_name\").notNull(),\n policy: text(\"policy\").$type<ConnectorActionPolicyDecision>().notNull(),\n version: integer(\"version\").notNull().default(1),\n createdBySubjectId: text(\"created_by_subject_id\").notNull(),\n updatedBySubjectId: text(\"updated_by_subject_id\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"connector_action_policies_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n scope: uniqueIndex(\"connector_action_policies_scope_uq\").on(\n table.workspaceId,\n table.connectionId,\n table.serverId,\n table.toolName,\n table.actionName,\n ),\n workspaceConnection: index(\"connector_action_policies_workspace_connection_idx\").on(\n table.workspaceId,\n table.connectionId,\n table.serverId,\n ),\n policyValid: check(\n \"connector_action_policies_policy_chk\",\n sql`${table.policy} in ('allow', 'ask', 'block')`,\n ),\n versionValid: check(\"connector_action_policies_version_chk\", sql`${table.version} > 0`),\n }),\n);\n\nexport const slackBotUserLinks = pgTable(\n \"slack_bot_user_links\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n connectionId: uuid(\"connection_id\")\n .notNull()\n .references(() => connections.id, { onDelete: \"cascade\" }),\n slackTeamId: text(\"slack_team_id\").notNull(),\n slackUserId: text(\"slack_user_id\").notNull(),\n subjectId: text(\"subject_id\").notNull(),\n linkedBySubjectId: text(\"linked_by_subject_id\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n connectionUser: uniqueIndex(\"slack_bot_user_links_connection_user_uq\").on(\n table.connectionId,\n table.slackUserId,\n ),\n workspaceSubject: index(\"slack_bot_user_links_workspace_subject_idx\").on(\n table.workspaceId,\n table.subjectId,\n ),\n }),\n);\n\nexport const slackInteractionInbox = pgTable(\n \"slack_interaction_inbox\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n connectionId: uuid(\"connection_id\")\n .notNull()\n .references(() => connections.id, { onDelete: \"cascade\" }),\n providerEventId: text(\"provider_event_id\").notNull(),\n providerMessageId: text(\"provider_message_id\").notNull(),\n slackTeamId: text(\"slack_team_id\").notNull(),\n slackUserId: text(\"slack_user_id\").notNull(),\n slackChannelId: text(\"slack_channel_id\").notNull(),\n slackMessageTs: text(\"slack_message_ts\").notNull(),\n slackThreadTs: text(\"slack_thread_ts\"),\n triggerKind: text(\"trigger_kind\")\n .$type<\n \"app_mention\" | \"dm\" | \"reaction\" | \"slash_command\" | \"message_shortcut\" | \"thread_reply\"\n >()\n .notNull(),\n text: text(\"text\").notNull(),\n status: text(\"status\")\n .$type<\"pending\" | \"processing\" | \"processed\" | \"failed\">()\n .notNull()\n .default(\"pending\"),\n claimHolderId: uuid(\"claim_holder_id\"),\n claimExpiresAt: timestamp(\"claim_expires_at\", { withTimezone: true }),\n attemptCount: integer(\"attempt_count\").notNull().default(0),\n retryAt: timestamp(\"retry_at\", { withTimezone: true }),\n lastErrorCode: text(\"last_error_code\"),\n reactionContextCheckpoint: jsonb(\"reaction_context_checkpoint\").$type<unknown>(),\n processedAt: timestamp(\"processed_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n providerEvent: uniqueIndex(\"slack_interaction_inbox_provider_event_uq\").on(\n table.connectionId,\n table.providerEventId,\n ),\n providerMessage: uniqueIndex(\"slack_interaction_inbox_provider_message_uq\").on(\n table.connectionId,\n table.providerMessageId,\n ),\n pending: index(\"slack_interaction_inbox_pending_idx\").on(\n table.status,\n table.retryAt,\n table.createdAt,\n table.id,\n ),\n }),\n);\n\nexport const slackInteractions = pgTable(\n \"slack_interactions\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n connectionId: uuid(\"connection_id\")\n .notNull()\n .references(() => connections.id, { onDelete: \"cascade\" }),\n slackTeamId: text(\"slack_team_id\").notNull(),\n slackChannelId: text(\"slack_channel_id\").notNull(),\n slackThreadTs: text(\"slack_thread_ts\").notNull(),\n routeKey: text(\"route_key\").notNull(),\n triggeringProviderEventId: text(\"triggering_provider_event_id\").notNull(),\n owningSubjectId: text(\"owning_subject_id\").notNull(),\n visibility: text(\"visibility\").$type<\"private\" | \"workspace\">().notNull(),\n sessionReservationId: uuid(\"session_reservation_id\").notNull().defaultRandom(),\n sessionId: uuid(\"session_id\").references(() => sessions.id, {\n onDelete: \"cascade\",\n }),\n lastDeliveredSessionEventSequence: integer(\"last_delivered_session_event_sequence\")\n .notNull()\n .default(0),\n deliveryClaimHolderId: uuid(\"delivery_claim_holder_id\"),\n deliveryClaimExpiresAt: timestamp(\"delivery_claim_expires_at\", {\n withTimezone: true,\n }),\n deliveryAttemptCount: integer(\"delivery_attempt_count\").notNull().default(0),\n deliveryRetryAt: timestamp(\"delivery_retry_at\", { withTimezone: true }),\n deliveryLastErrorCode: text(\"delivery_last_error_code\"),\n ackSlackMessageTs: text(\"ack_slack_message_ts\"),\n progressCount: integer(\"progress_count\").notNull().default(0),\n terminalDeliveryState: text(\"terminal_delivery_state\")\n .$type<\"open\" | \"completed\" | \"failed\" | \"cancelled\" | \"blocked\">()\n .notNull()\n .default(\"open\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n route: uniqueIndex(\"slack_interactions_route_uq\").on(table.connectionId, table.routeKey),\n identity: uniqueIndex(\"slack_interactions_identity_uq\").on(\n table.accountId,\n table.workspaceId,\n table.id,\n ),\n workspaceReservation: uniqueIndex(\"slack_interactions_workspace_reservation_uq\").on(\n table.workspaceId,\n table.sessionReservationId,\n ),\n workspaceSession: uniqueIndex(\"slack_interactions_workspace_session_uq\")\n .on(table.workspaceId, table.sessionId)\n .where(sql`${table.sessionId} is not null`),\n delivery: index(\"slack_interactions_delivery_idx\").on(\n table.terminalDeliveryState,\n table.deliveryRetryAt,\n table.updatedAt,\n table.id,\n ),\n }),\n);\n\nexport const slackInteractionProgressDeliveries = pgTable(\n \"slack_interaction_progress_deliveries\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n interactionId: uuid(\"interaction_id\").notNull(),\n sessionEventSequence: integer(\"session_event_sequence\").notNull(),\n slot: integer(\"slot\").notNull(),\n operationId: uuid(\"operation_id\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n interactionIdentity: foreignKey({\n columns: [table.accountId, table.workspaceId, table.interactionId],\n foreignColumns: [\n slackInteractions.accountId,\n slackInteractions.workspaceId,\n slackInteractions.id,\n ],\n name: \"slack_interaction_progress_deliveries_interaction_fk\",\n }).onDelete(\"cascade\"),\n event: uniqueIndex(\"slack_interaction_progress_deliveries_event_uq\").on(\n table.interactionId,\n table.sessionEventSequence,\n ),\n slot: uniqueIndex(\"slack_interaction_progress_deliveries_slot_uq\").on(\n table.interactionId,\n table.slot,\n ),\n operation: uniqueIndex(\"slack_interaction_progress_deliveries_operation_uq\").on(\n table.workspaceId,\n table.operationId,\n ),\n }),\n);\n\n// Durable provider-operation identity for OpenGeni Slack bot posts. The\n// caller-supplied operation UUID is also Slack's client_msg_id; a bounded claim\n// serializes live attempts while an expired/released claim can safely retry the\n// same provider identity after response loss or process death.\nexport const slackBotPostOperations = pgTable(\n \"slack_bot_post_operations\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n connectionId: uuid(\"connection_id\")\n .notNull()\n .references(() => connections.id, { onDelete: \"cascade\" }),\n operationId: uuid(\"operation_id\").notNull(),\n clientMessageId: uuid(\"client_message_id\").notNull(),\n targetKind: text(\"target_kind\").$type<\"channel\" | \"user\">().notNull(),\n targetId: text(\"target_id\").notNull(),\n requestDigest: text(\"request_digest\").notNull(),\n status: text(\"status\").$type<\"provider_started\" | \"completed\">().notNull(),\n claimHolderId: uuid(\"claim_holder_id\"),\n claimExpiresAt: timestamp(\"claim_expires_at\", { withTimezone: true }),\n attemptCount: integer(\"attempt_count\").notNull().default(0),\n lastFailureCode: text(\"last_failure_code\"),\n slackChannelId: text(\"slack_channel_id\"),\n slackMessageTimestamp: text(\"slack_message_timestamp\"),\n completedAt: timestamp(\"completed_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceOperation: uniqueIndex(\"slack_bot_post_operations_workspace_operation_uq\").on(\n table.workspaceId,\n table.connectionId,\n table.operationId,\n ),\n workspaceStatus: index(\"slack_bot_post_operations_workspace_status_idx\").on(\n table.workspaceId,\n table.status,\n table.updatedAt,\n ),\n targetKindValid: check(\n \"slack_bot_post_operations_target_kind_check\",\n sql`${table.targetKind} in ('channel', 'user')`,\n ),\n statusValid: check(\n \"slack_bot_post_operations_status_check\",\n sql`${table.status} in ('provider_started', 'completed')`,\n ),\n identityValid: check(\n \"slack_bot_post_operations_identity_check\",\n sql`${table.clientMessageId} = ${table.operationId}\n and length(${table.targetId}) between 1 and 64\n and ${table.requestDigest} ~ '^[0-9a-f]{64}$'\n and ${table.attemptCount} > 0\n and ((${table.claimHolderId} is null) = (${table.claimExpiresAt} is null))`,\n ),\n completionValid: check(\n \"slack_bot_post_operations_completion_check\",\n sql`(\n ${table.status} = 'provider_started'\n and ${table.slackChannelId} is null\n and ${table.slackMessageTimestamp} is null\n and ${table.completedAt} is null\n ) or (\n ${table.status} = 'completed'\n and ${table.claimHolderId} is null\n and ${table.claimExpiresAt} is null\n and ${table.slackChannelId} is not null\n and ${table.slackMessageTimestamp} is not null\n and ${table.completedAt} is not null\n )`,\n ),\n }),\n);\n\n// Durable provider-operation identity for OpenGeni Slack bot deletions. Slack\n// has no client-supplied idempotency key for chat.delete, so an expired\n// provider_started claim becomes outcome_unknown and must be reconciled before\n// another mutation is admitted.\nexport const slackBotDeleteOperations = pgTable(\n \"slack_bot_delete_operations\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n connectionId: uuid(\"connection_id\")\n .notNull()\n .references(() => connections.id, { onDelete: \"cascade\" }),\n operationId: uuid(\"operation_id\").notNull(),\n principalType: text(\"principal_type\").$type<\"subject\" | \"service\">().notNull(),\n principalId: text(\"principal_id\").notNull(),\n toolName: text(\"tool_name\").notNull(),\n channelId: text(\"channel_id\").notNull(),\n messageTimestamp: text(\"message_timestamp\").notNull(),\n requestDigest: text(\"request_digest\").notNull(),\n status: text(\"status\")\n .$type<\"pending\" | \"provider_started\" | \"outcome_unknown\" | \"completed\">()\n .notNull(),\n claimHolderId: uuid(\"claim_holder_id\"),\n claimExpiresAt: timestamp(\"claim_expires_at\", { withTimezone: true }),\n attemptCount: integer(\"attempt_count\").notNull().default(0),\n lastFailureCode: text(\"last_failure_code\"),\n slackChannelId: text(\"slack_channel_id\"),\n slackMessageTimestamp: text(\"slack_message_timestamp\"),\n completedAt: timestamp(\"completed_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceOperation: uniqueIndex(\"slack_bot_delete_operations_workspace_operation_uq\").on(\n table.workspaceId,\n table.operationId,\n ),\n workspaceStatus: index(\"slack_bot_delete_operations_workspace_status_idx\").on(\n table.workspaceId,\n table.status,\n table.updatedAt,\n ),\n principalValid: check(\n \"slack_bot_delete_operations_principal_check\",\n sql`${table.principalType} in ('subject', 'service')\n and length(${table.principalId}) between 1 and 512`,\n ),\n identityValid: check(\n \"slack_bot_delete_operations_identity_check\",\n sql`${table.toolName} = 'slack_bot_delete_message'\n and length(${table.channelId}) between 1 and 64\n and length(${table.messageTimestamp}) between 1 and 64\n and ${table.requestDigest} ~ '^[0-9a-f]{64}$'\n and ${table.attemptCount} > 0\n and ((${table.claimHolderId} is null) = (${table.claimExpiresAt} is null))`,\n ),\n statusValid: check(\n \"slack_bot_delete_operations_status_check\",\n sql`${table.status} in ('pending', 'provider_started', 'outcome_unknown', 'completed')`,\n ),\n completionValid: check(\n \"slack_bot_delete_operations_completion_check\",\n sql`(\n ${table.status} <> 'completed'\n and ${table.slackChannelId} is null\n and ${table.slackMessageTimestamp} is null\n and ${table.completedAt} is null\n ) or (\n ${table.status} = 'completed'\n and ${table.claimHolderId} is null\n and ${table.claimExpiresAt} is null\n and ${table.slackChannelId} is not null\n and ${table.slackMessageTimestamp} is not null\n and ${table.completedAt} is not null\n )`,\n ),\n }),\n);\n\n// OAuth client registrations minted through MCP DCR, keyed by authorization\n// server issuer. This is deployment-wide client identity, not a workspace\n// credential; per-user/provider tokens still live only in connections.\nexport const integrationOauthClients = pgTable(\n \"integration_oauth_clients\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n issuer: text(\"issuer\").notNull(),\n authorizationServer: text(\"authorization_server\").notNull(),\n clientId: text(\"client_id\").notNull(),\n clientSecretEncrypted: text(\"client_secret_encrypted\"),\n tokenEndpointAuthMethod: text(\"token_endpoint_auth_method\").notNull().default(\"none\"),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>().notNull().default({}),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n issuer: uniqueIndex(\"integration_oauth_clients_issuer_idx\").on(table.issuer),\n authorizationServer: index(\"integration_oauth_clients_as_idx\").on(table.authorizationServer),\n }),\n);\n\n// Consumed OAuth state nonces. Rows are inserted only on callback; the primary\n// key makes a verified state single-use across API instances.\nexport const integrationOauthStateNonces = pgTable(\n \"integration_oauth_state_nonces\",\n {\n nonce: text(\"nonce\").primaryKey(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n subjectId: text(\"subject_id\").notNull(),\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }).notNull(),\n usedAt: timestamp(\"used_at\", { withTimezone: true }).notNull().defaultNow(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspace: index(\"integration_oauth_state_nonces_workspace_idx\").on(table.workspaceId),\n expires: index(\"integration_oauth_state_nonces_expires_idx\").on(table.expiresAt),\n }),\n);\n\n// Per-workspace Codex account selection (the ACTIVE pointer) + P3 rotation\n// forward-compat. One row per workspace. The only P1-load-bearing column is\n// activeCredentialId — the account a session runs on when it has no pin. NULL ⇒\n// none selected (e.g. the active one was just disconnected). The\n// (account_id, workspace_id) pair inherits the verbatim workspace_rls_visible\n// policy. active_credential_id's FK is declared in the MIGRATION (not\n// .references()) to avoid a forward-reference on the const ordering, exactly like\n// sessions.activeSandboxId; ON DELETE SET NULL.\nexport const codexRotationSettings = pgTable(\n \"codex_rotation_settings\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n activeCredentialId: uuid(\"active_credential_id\"),\n // Legacy selector bit. Keep false as the DB default forever: an old worker\n // only understands this column, so a schema-first rollout or binary\n // rollback must never make it enter the non-atomic rotation path.\n rotationEnabled: boolean(\"rotation_enabled\").notNull().default(false),\n // Revision-aware allocator cutover. Only migration-compatible API/worker\n // code reads this bit; old binaries safely ignore it and keep the legacy\n // pin/rotation policy.\n leaseRotationEnabled: boolean(\"lease_rotation_enabled\").notNull().default(false),\n rotationStrategy: text(\"rotation_strategy\").notNull().default(\"sharded\"), // sharded-rotation policy: legacy residue; behavior is always sharded\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspace: uniqueIndex(\"codex_rotation_settings_workspace_idx\").on(table.workspaceId),\n }),\n);\n\n// Per-workspace model/provider availability policy — the HARD blocker deciding\n// which providers/models may serve a turn in this workspace AT ALL. NULL columns\n// mean unrestricted (today's behavior for every workspace without a row). A\n// non-null allowed_providers is a strict allowlist over provider identities\n// (the same identities the model router resolves to, with the built-in\n// OpenAI/Azure client — including the legacy resolveTurnModel-null fallback —\n// mapped to one well-known id); a non-null allowed_models is an additional\n// exact-model-id allowlist. Enforced at the API model-choke points (422) and,\n// authoritatively, in the worker immediately after turn model resolution: a\n// blocked resolution NEVER reaches a model call and NEVER silently remaps.\n// This exists so a codex-subscription workspace can be fail-closed to codex —\n// a turn can wait/fail loud, but can never fall through to the paid built-in.\nexport const workspaceModelPolicies = pgTable(\n \"workspace_model_policies\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n allowedProviders: text(\"allowed_providers\").array(),\n allowedModels: text(\"allowed_models\").array(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspace: uniqueIndex(\"workspace_model_policies_workspace_idx\").on(table.workspaceId),\n }),\n);\n\n// One workspace-local short-lived holder per running Codex turn. Selection and\n// insertion happen atomically while codex_rotation_settings is locked FOR\n// UPDATE, so concurrent replicas in the SAME workspace see one another's\n// assignments before choosing. Workspaces never share or correlate lease state.\n// The composite (workspace, account), (workspace, credential), and\n// (workspace, turn) FKs are declared in migration 0053 (sessionTurns is defined\n// later in this module).\nexport const codexCredentialLeases = pgTable(\n \"codex_credential_leases\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n credentialId: uuid(\"credential_id\").notNull(),\n turnId: uuid(\"turn_id\").notNull(),\n // Temporal activity execution fence. A successor dispatch for the same\n // durable turn replaces holderId and increments generation atomically;\n // stale/zombie heartbeats and releases must match both values.\n holderId: text(\"holder_id\").notNull(),\n generation: integer(\"generation\").notNull().default(1),\n leasedUntil: timestamp(\"leased_until\", { withTimezone: true }).notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n turn: uniqueIndex(\"codex_credential_leases_workspace_turn_idx\").on(\n table.workspaceId,\n table.turnId,\n ),\n activeCredential: index(\"codex_credential_leases_active_credential_idx\").on(\n table.workspaceId,\n table.credentialId,\n table.leasedUntil,\n ),\n expiry: index(\"codex_credential_leases_expiry_idx\").on(table.leasedUntil),\n }),\n);\n\nexport const sessions = pgTable(\n \"sessions\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n status: text(\"status\").notNull().default(\"queued\"),\n initialMessage: text(\"initial_message\").notNull(),\n // Invisible host context frozen with the winning session create. The\n // initial turn copies this value so an idempotent repair can never adopt a\n // retrying caller's different instructions.\n initialTurnInstructions: text(\"initial_turn_instructions\"),\n title: text(\"title\"),\n titleSource: text(\"title_source\"),\n // Per-session agent persona/system instructions supplied at create (the\n // per-agent-type prompt lever for embedding hosts). NULL ⇒ the session\n // carried none, so the composed agent instructions are byte-identical to a\n // workspace-only persona (no backfill, no behavior change for existing rows).\n // Composed system-level AFTER the workspace agentInstructions; never emitted\n // as a timeline event.\n instructions: text(\"instructions\"),\n // Immutable normalized prompt-policy role. This is deliberately separate\n // from workspace membership roles and memory selectors. Existing rows keep\n // NULL and use the bounded metadata.role compatibility fallback at the\n // attempt-snapshot boundary.\n policyRole: text(\"policy_role\"),\n resources: jsonb(\"resources\").$type<unknown[]>().notNull().default([]),\n skills: jsonb(\"skills\").$type<unknown[]>().notNull().default([]),\n tools: jsonb(\"tools\").$type<unknown[]>().notNull().default([]),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>().notNull().default({}),\n // Frozen creator fact. This is used for creation attribution and for the\n // idempotent first-turn repair only; later turns capture their own actor.\n createdByKind: text(\"created_by_kind\").notNull().default(\"service\"),\n createdBySubjectId: text(\"created_by_subject_id\").notNull().default(\"unattributed-legacy\"),\n createdByContext: jsonb(\"created_by_context\")\n .$type<Record<string, unknown>>()\n .notNull()\n .default({ backfill: true }),\n model: text(\"model\").notNull(),\n sandboxBackend: text(\"sandbox_backend\").notNull(),\n // The OS this session's box runs. Defaults to 'linux' (today's only OS, so\n // every existing + new row is a behavior-preserving no-op). CHECK-constrained\n // to the SandboxOs enum (linux|macos|windows) in migration 0018.\n sandboxOs: text(\"sandbox_os\").notNull().default(\"linux\"),\n // The shared-sandbox group this session's box belongs to. Defaults to the\n // session's OWN id (a singleton group: group === session — today's 1:1\n // behavior). When spawned shared via session_create, set to the PARENT's\n // sandboxGroupId so both run in ONE box. Immutable once set. NOT an FK (the\n // value is this row's id or an ancestor session's id in the same workspace;\n // the live lease row, not a sandbox_groups table, materializes the group).\n // The app generates the uuid and uses it for both id and sandbox_group_id in\n // one insert — it cannot SQL-default to id (id is defaultRandom()).\n sandboxGroupId: uuid(\"sandbox_group_id\").notNull(),\n // The first-class swappable-sandbox POINTER (bring-your-own-compute M2).\n // NULL == \"use the session's own group sandbox\" (the\n // backward-compat default — every existing/new row is a behavior-preserving\n // no-op). The routing proxy re-reads (active_sandbox_id, active_epoch) PER\n // TOOL CALL to make a Modal<->selfhosted hot-swap seamless. The FK\n // (-> sandboxes(id) ON DELETE SET NULL — a deleted sandbox degrades the\n // pointer to the group default, never dangles) lives in migration 0024, NOT a\n // Drizzle .references() — exactly like parentSessionId below, so the const\n // ordering imposes no forward-reference.\n activeSandboxId: uuid(\"active_sandbox_id\"),\n // The SECOND epoch ABOVE sandbox_leases.lease_epoch, bumped on every swap; an\n // in-flight op fenced by a stale active_epoch retries against the new active\n // sandbox. integer (NOT bigint) — the lease-epoch spike: int8 reads back as a\n // JS string and breaks the strict fence; int4 returns a number.\n activeEpoch: integer(\"active_epoch\").notNull().default(0),\n // The session's WORKING DIRECTORY — the path/cwd base the (selfhosted) box's\n // agent/terminal/file-dock operate under. A launch-workspace_root-relative\n // subdir or an absolute machine path; surfaced alongside the active-sandbox\n // pointer (readActiveSandbox) and written through the epoch-fenced\n // setActiveSandbox CAS, NOT the row INSERT. NULL (the default) ⇒ today's\n // behavior exactly — the agent substitutes its workspace_root for an empty cwd,\n // so an unset working_dir is a byte-identical no-op. Create-time only (Stage A).\n workingDir: text(\"working_dir\"),\n variableSetId: uuid(\"variable_set_id\").references(() => workspaceVariableSets.id, {\n onDelete: \"set null\",\n }),\n // The rig this session rides + the exact rig version frozen at create time\n // (migration 0047). NULL ⇒ the session rides no rig (today's behavior). FKs\n // (-> rigs(id)/rig_versions(id) ON DELETE SET NULL) live in migration 0047,\n // not Drizzle .references(), because those tables are declared later in this\n // file (forward-reference pattern, same as activeSandboxId). Consumed in M3.\n rigId: uuid(\"rig_id\"),\n rigVersionId: uuid(\"rig_version_id\"),\n // Non-default first-party MCP token permissions (manager-style sessions);\n // null means the fixed worker default set in @opengeni/runtime.\n firstPartyMcpPermissions: jsonb(\"first_party_mcp_permissions\").$type<string[]>(),\n // Exact model-visible first-party tool selection. All catalogued tools are\n // selected by default; [] intentionally selects no broad-server tools.\n firstPartyMcpTools: jsonb(\"first_party_mcp_tools\").$type<FirstPartyMcpToolName[]>().notNull(),\n // Initial-command staging only. initializeSessionStartAtomically copies\n // this immutable snapshot onto the first turn so create repair survives a\n // crash between the session insert and first-turn transaction. Runtime\n // credential authority must never read this session field.\n initialPersonalConnectionDelegations: jsonb(\"initial_personal_connection_delegations\")\n .$type<McpPersonalConnectionDelegation[]>()\n .notNull()\n .default([]),\n // Durable tool-policy origin. Migration 0136 removes the old null/legacy\n // representation so every session has one explicit policy mode.\n toolPolicy: jsonb(\"tool_policy\").$type<SessionToolPolicy>().notNull(),\n // Optimistic-concurrency fence for durable session tool-policy writes.\n toolPolicyVersion: integer(\"tool_policy_version\").notNull().default(1),\n // The manager session that spawned this one via session_create. Set only\n // when the creating grant carried a worker-signed sessionId claim (a session\n // spawning a worker); null for direct API creates and scheduled-task runs.\n // When set, this worker's terminal-for-now transitions wake the parent so a\n // manager can orchestrate workers without busy-polling. The migration-owned\n // self-reference uses ON DELETE RESTRICT so immutable hierarchy and\n // authority lineage cannot be silently orphaned by a parent hard delete.\n parentSessionId: uuid(\"parent_session_id\"),\n // Exact parent turn whose worker-signed attempt created this child. This is\n // private immutable authority lineage: child completion copies personal MCP\n // authority from that turn, never from whichever parent turn ran most\n // recently. Null for top-level and legacy child sessions.\n parentTurnId: uuid(\"parent_turn_id\"),\n // Workspace-scoped CREATE idempotency key. NULL means the create carried no\n // key (each such create is independent). When set, the partial unique index\n // below collapses concurrent/retried creates with the same key in the same\n // workspace to a single session row — the dedup that closes the\n // double-submit/double-dispatch stuck-queued bug.\n createIdempotencyKey: text(\"create_idempotency_key\"),\n // Immutable creation-time hierarchy and policy snapshot. These values are\n // populated by the database admission boundary and never re-derived from\n // a live workspace setting for an existing session.\n rootSessionId: uuid(\"root_session_id\").notNull(),\n nestedAgentDepth: integer(\"nested_agent_depth\").notNull(),\n maxNestedAgentDepthOverride: integer(\"max_nested_agent_depth_override\"),\n effectiveMaxNestedAgentDepth: integer(\"effective_max_nested_agent_depth\").notNull(),\n nestedAgentDepthPolicySource: text(\"nested_agent_depth_policy_source\").notNull(),\n nestedAgentDepthPolicySessionId: uuid(\"nested_agent_depth_policy_session_id\"),\n temporalWorkflowId: text(\"temporal_workflow_id\"),\n activeTurnId: uuid(\"active_turn_id\"),\n // Actual input tokens reported for the latest authoritative ordinary model\n // call. Compaction/context clearing invalidates it to null; local history\n // estimates must never be stored here.\n lastInputTokens: integer(\"last_input_tokens\"),\n // Operator /compact request flag. The API sets\n // it true; the worker honors it BEFORE the next turn's model call by forcing\n // a compaction, then clears it. A durable flag (not a transient signal) so\n // the trigger survives a worker restart and converges before the next turn.\n compactRequested: boolean(\"compact_requested\").notNull().default(false),\n queueVersion: integer(\"queue_version\").notNull().default(0),\n queueHeadPosition: bigint(\"queue_head_position\", { mode: \"number\" }).notNull().default(0),\n queueTailPosition: bigint(\"queue_tail_position\", { mode: \"number\" }).notNull().default(0),\n directControlState: text(\"direct_control_state\").notNull().default(\"active\"),\n directPauseRevision: bigint(\"direct_pause_revision\", { mode: \"number\" }),\n subtreeRunOverrideRevision: bigint(\"subtree_run_override_revision\", {\n mode: \"number\",\n }),\n controlVersion: bigint(\"control_version\", { mode: \"number\" }).notNull().default(0),\n directControlReason: text(\"direct_control_reason\"),\n directControlChangedBy: text(\"direct_control_changed_by\"),\n directControlChangedAt: timestamp(\"direct_control_changed_at\", {\n withTimezone: true,\n }),\n lastSequence: integer(\"last_sequence\").notNull().default(0),\n // The session's PINNED Codex account (manual override from the in-session\n // switcher). NULL ⇒ follow the workspace active pointer. FK declared in the\n // migration with ON DELETE SET NULL (a disconnected pin degrades to \"follow\n // active\", never dangles), same pattern as activeSandboxId.\n codexPinnedCredentialId: uuid(\"codex_pinned_credential_id\"),\n // The Codex account the session's most recent turn ACTUALLY ran on — drives\n // the \"Running on:\" indicator. Written by the worker at the turn boundary. FK\n // ON DELETE SET NULL (migration).\n codexLastCredentialId: uuid(\"codex_last_credential_id\"),\n // The SOURCE of codex_pinned_credential_id (AM-2): 'manual' — the user's\n // in-session account switcher, which is SACRED and never moved by any policy —\n // or 'policy' — the sharded rotation strategy's deterministic per-session home\n // assignment, which MAY be re-sharded to another account when its own account\n // caps. NULL when there is no pin (and for every pre-existing row). CHECK\n // (manual|policy) lives in the migration; no FK (it describes the pin, not an\n // account).\n codexPinSource: text(\"codex_pin_source\"),\n // Frozen at create: remote_v2 (Codex remote compaction + Codex-only models)\n // or portable (plaintext compaction + free provider switching). Existing\n // rows backfill to portable. CHECK lives in the migration.\n codexCompactionMode: text(\"codex_compaction_mode\").notNull().default(\"portable\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n // Assigned by the database trigger whenever canonical updated_at activity\n // advances. Legacy rows remain zero until touched; raw delta-only writers\n // intentionally omit updated_at and therefore do not allocate revisions.\n activityRevision: bigint(\"activity_revision\", { mode: \"number\" }).notNull().default(0),\n },\n (table) => ({\n workspaceIdentity: uniqueIndex(\"sessions_workspace_id_idx\").on(table.workspaceId, table.id),\n workspaceCreated: index(\"sessions_workspace_created_idx\").on(\n table.workspaceId,\n table.createdAt,\n ),\n // Model-facing monitoring pages use exact (timestamp,id) keysets. Keep the\n // older prefix index during rolling deploys; these composites serve both\n // deterministic traversal and updatedAfter change scans.\n workspaceCreatedId: index(\"sessions_workspace_created_id_idx\").on(\n table.workspaceId,\n table.createdAt.desc(),\n table.id.desc(),\n ),\n workspaceUpdatedId: index(\"sessions_workspace_updated_id_idx\").on(\n table.workspaceId,\n table.updatedAt.desc(),\n table.id.desc(),\n ),\n workspaceActivityRevision: index(\"sessions_workspace_activity_revision_idx\").on(\n table.workspaceId,\n table.activityRevision.desc(),\n table.updatedAt.desc(),\n table.id.desc(),\n ),\n variableSet: index(\"sessions_variable_set_idx\").on(table.workspaceId, table.variableSetId),\n parent: index(\"sessions_parent_idx\").on(table.workspaceId, table.parentSessionId),\n // Routing index: resolve session_id -> sandbox_group_id at every lease entry\n // point and enumerate all sessions in a group for attribution/disclosure.\n sandboxGroup: index(\"sessions_sandbox_group_idx\").on(table.workspaceId, table.sandboxGroupId),\n // Partial unique index: one session per (workspace, create_idempotency_key)\n // when a key is present. The boundary trigger reserves the cross-outcome\n // winner before this source row commits; a losing source insert is\n // suppressed and the domain layer replays the durable winner.\n createIdempotency: uniqueIndex(\"sessions_workspace_create_idempotency_idx\")\n .on(table.workspaceId, table.createIdempotencyKey)\n .where(sql`${table.createIdempotencyKey} is not null`),\n rootDepth: index(\"sessions_workspace_root_depth_idx\").on(\n table.workspaceId,\n table.rootSessionId,\n table.nestedAgentDepth,\n ),\n }),\n);\n\n// One temporary realtime owner for an ordinary session. Terminal rows remain\n// as lifecycle evidence; the partial unique index admits only one active owner.\nexport const sessionRealtimeModes = pgTable(\n \"session_realtime_modes\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n sessionId: uuid(\"session_id\").notNull(),\n operationId: uuid(\"operation_id\").notNull(),\n ownerSubjectId: text(\"owner_subject_id\").notNull(),\n browserInstanceId: text(\"browser_instance_id\").notNull(),\n ownerKeyHash: text(\"owner_key_hash\").notNull(),\n model: text(\"model\").notNull(),\n state: text(\"state\").notNull().default(\"active\"),\n version: integer(\"version\").notNull().default(1),\n connectionEpoch: integer(\"connection_epoch\").notNull().default(1),\n leaseExpiresAt: timestamp(\"lease_expires_at\", { withTimezone: true }).notNull(),\n lastHeartbeatAt: timestamp(\"last_heartbeat_at\", { withTimezone: true }).notNull(),\n startedAt: timestamp(\"started_at\", { withTimezone: true }).notNull().defaultNow(),\n endedAt: timestamp(\"ended_at\", { withTimezone: true }),\n endReason: text(\"end_reason\"),\n // The rolling migration owns this forward reference. End commits at most\n // one canonical transcript-tail Steer and binds its audit projection here.\n contextProjectionId: uuid(\"context_projection_id\"),\n contextProjectedAt: timestamp(\"context_projected_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"session_realtime_modes_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n workspaceSession: foreignKey({\n name: \"session_realtime_modes_workspace_session_fk\",\n columns: [table.workspaceId, table.sessionId],\n foreignColumns: [sessions.workspaceId, sessions.id],\n }).onDelete(\"cascade\"),\n operation: uniqueIndex(\"session_realtime_modes_operation_uq\").on(\n table.workspaceId,\n table.sessionId,\n table.operationId,\n ),\n oneActive: uniqueIndex(\"session_realtime_modes_one_active_uq\")\n .on(table.workspaceId, table.sessionId)\n .where(sql`${table.state} = 'active'`),\n activeLease: index(\"session_realtime_modes_active_lease_idx\")\n .on(table.leaseExpiresAt, table.workspaceId, table.sessionId)\n .where(sql`${table.state} = 'active'`),\n stateValid: check(\n \"session_realtime_modes_state_check\",\n sql`${table.state} in ('active', 'ended')`,\n ),\n modelValid: check(\n \"session_realtime_modes_model_check\",\n sql`${table.model} in (\n 'gpt-live-1-boulder-alpha',\n 'opengeni-gateway/openai/gpt-realtime-2.1',\n 'opengeni-gateway/openai/gpt-realtime-mini',\n 'opengeni-gateway/xai/grok-voice-think-fast-2.0',\n 'workspace-gateway/openai/gpt-realtime-2.1',\n 'workspace-gateway/openai/gpt-realtime-mini',\n 'workspace-gateway/xai/grok-voice-think-fast-2.0'\n )`,\n ),\n endReasonValid: check(\n \"session_realtime_modes_end_reason_check\",\n sql`${table.endReason} is null or ${table.endReason} in ('user_stop', 'browser_unload', 'lease_expired')`,\n ),\n versionValid: check(\"session_realtime_modes_version_check\", sql`${table.version} >= 1`),\n epochValid: check(\"session_realtime_modes_epoch_check\", sql`${table.connectionEpoch} >= 1`),\n ownerSubjectValid: check(\n \"session_realtime_modes_owner_subject_check\",\n sql`octet_length(${table.ownerSubjectId}) between 1 and 1024`,\n ),\n browserInstanceValid: check(\n \"session_realtime_modes_browser_instance_check\",\n sql`octet_length(${table.browserInstanceId}) between 1 and 256`,\n ),\n ownerKeyHashValid: check(\n \"session_realtime_modes_owner_key_hash_check\",\n sql`${table.ownerKeyHash} ~ '^[0-9a-f]{64}$'`,\n ),\n leaseValid: check(\n \"session_realtime_modes_lease_check\",\n sql`${table.leaseExpiresAt} > ${table.lastHeartbeatAt}`,\n ),\n terminalValid: check(\n \"session_realtime_modes_terminal_check\",\n sql`(${table.state} = 'active' and ${table.endedAt} is null and ${table.endReason} is null)\n or (${table.state} = 'ended' and ${table.endedAt} is not null and ${table.endReason} is not null)`,\n ),\n }),\n);\n\nexport const sessionRealtimeConnections = pgTable(\n \"session_realtime_connections\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n sessionId: uuid(\"session_id\").notNull(),\n realtimeId: uuid(\"realtime_id\")\n .notNull()\n .references(() => sessionRealtimeModes.id, { onDelete: \"cascade\" }),\n operationId: uuid(\"operation_id\").notNull(),\n connectionEpoch: integer(\"connection_epoch\").notNull(),\n startupFenceSequence: integer(\"startup_fence_sequence\").notNull().default(0),\n promotionMode: text(\"promotion_mode\").notNull().default(\"legacy\"),\n state: text(\"state\").notNull().default(\"negotiating\"),\n sdpAnswer: text(\"sdp_answer\"),\n failureCode: text(\"failure_code\"),\n providerSessionId: text(\"provider_session_id\"),\n startupEventId: text(\"startup_event_id\"),\n startupAcknowledgedAt: timestamp(\"startup_acknowledged_at\", { withTimezone: true }),\n negotiatedAt: timestamp(\"negotiated_at\", { withTimezone: true }),\n closedAt: timestamp(\"closed_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"session_realtime_connections_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n workspaceSession: foreignKey({\n name: \"session_realtime_connections_workspace_session_fk\",\n columns: [table.workspaceId, table.sessionId],\n foreignColumns: [sessions.workspaceId, sessions.id],\n }).onDelete(\"cascade\"),\n operation: uniqueIndex(\"session_realtime_connections_operation_uq\").on(\n table.realtimeId,\n table.operationId,\n ),\n epoch: uniqueIndex(\"session_realtime_connections_epoch_uq\").on(\n table.realtimeId,\n table.connectionEpoch,\n ),\n oneActive: uniqueIndex(\"session_realtime_connections_one_active_uq\")\n .on(table.realtimeId)\n .where(\n sql`(${table.promotionMode} = 'legacy' and ${table.state} in ('negotiating', 'ready', 'active'))\n or (${table.promotionMode} = 'staged' and ${table.state} = 'active')`,\n ),\n onePreparing: uniqueIndex(\"session_realtime_connections_one_preparing_uq\")\n .on(table.realtimeId)\n .where(\n sql`(${table.promotionMode} = 'legacy' and ${table.state} in ('negotiating', 'ready', 'active'))\n or (${table.promotionMode} = 'staged' and ${table.state} in ('negotiating', 'ready'))`,\n ),\n epochValid: check(\n \"session_realtime_connections_epoch_check\",\n sql`${table.connectionEpoch} >= 1`,\n ),\n startupFenceValid: check(\n \"session_realtime_connections_startup_fence_check\",\n sql`${table.startupFenceSequence} >= 0`,\n ),\n promotionModeValid: check(\n \"session_realtime_connections_promotion_mode_check\",\n sql`${table.promotionMode} in ('legacy', 'staged')`,\n ),\n stateValid: check(\n \"session_realtime_connections_state_check\",\n sql`${table.state} in ('negotiating', 'ready', 'active', 'failed', 'closed')`,\n ),\n sdpValid: check(\n \"session_realtime_connections_sdp_check\",\n sql`${table.sdpAnswer} is null or octet_length(${table.sdpAnswer}) between 1 and 1048576`,\n ),\n failureValid: check(\n \"session_realtime_connections_failure_check\",\n sql`${table.failureCode} is null or octet_length(${table.failureCode}) between 1 and 128`,\n ),\n providerSessionValid: check(\n \"session_realtime_connections_provider_session_check\",\n sql`${table.providerSessionId} is null or octet_length(${table.providerSessionId}) between 1 and 1024`,\n ),\n startupEventValid: check(\n \"session_realtime_connections_startup_event_check\",\n sql`${table.startupEventId} is null or octet_length(${table.startupEventId}) between 1 and 1024`,\n ),\n startupAckValid: check(\n \"session_realtime_connections_startup_ack_check\",\n sql`(${table.startupAcknowledgedAt} is null and ${table.providerSessionId} is null and ${table.startupEventId} is null)\n or (${table.startupAcknowledgedAt} is not null and ${table.providerSessionId} is not null)`,\n ),\n terminalValid: check(\n \"session_realtime_connections_terminal_check\",\n sql`(${table.state} = 'negotiating' and ${table.sdpAnswer} is null and ${table.failureCode} is null and ${table.negotiatedAt} is null and ${table.closedAt} is null)\n or (${table.state} = 'ready' and ${table.sdpAnswer} is not null and ${table.failureCode} is null and ${table.negotiatedAt} is not null and ${table.closedAt} is null)\n or (${table.state} = 'active' and ${table.sdpAnswer} is not null and ${table.failureCode} is null and ${table.negotiatedAt} is not null and ${table.closedAt} is null)\n or (${table.state} = 'failed' and ${table.sdpAnswer} is null and ${table.failureCode} is not null and ${table.closedAt} is not null)\n or (${table.state} = 'closed' and ${table.closedAt} is not null)`,\n ),\n }),\n);\n\nexport const sessionRealtimeEntries = pgTable(\n \"session_realtime_entries\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n sessionId: uuid(\"session_id\").notNull(),\n realtimeId: uuid(\"realtime_id\")\n .notNull()\n .references(() => sessionRealtimeModes.id, { onDelete: \"cascade\" }),\n operationId: uuid(\"operation_id\").notNull(),\n connectionEpoch: integer(\"connection_epoch\").notNull(),\n sequence: integer(\"sequence\").notNull(),\n direction: text(\"direction\").notNull(),\n kind: text(\"kind\").notNull(),\n role: text(\"role\"),\n providerEventId: text(\"provider_event_id\"),\n delegationItemId: text(\"delegation_item_id\"),\n // The referenced tables are declared later in this schema module; the\n // rolling migration owns all three ON DELETE SET NULL foreign keys.\n sourceUpdateId: uuid(\"source_update_id\"),\n historyItemId: uuid(\"history_item_id\"),\n // The rolling migration owns this ON DELETE SET NULL foreign key because\n // sessionTurns is declared later in this schema module. A non-null value\n // links the accepted provider call and its one terminal outbound\n // result/error to the same ordinary turn. It never denotes a child/fork\n // session.\n turnId: uuid(\"turn_id\"),\n text: text(\"text\"),\n payload: jsonb(\"payload\").$type<Record<string, unknown>>().notNull().default({}),\n clientAckedAt: timestamp(\"client_acked_at\", { withTimezone: true }),\n providerAckedAt: timestamp(\"provider_acked_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"session_realtime_entries_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n workspaceSession: foreignKey({\n name: \"session_realtime_entries_workspace_session_fk\",\n columns: [table.workspaceId, table.sessionId],\n foreignColumns: [sessions.workspaceId, sessions.id],\n }).onDelete(\"cascade\"),\n operation: uniqueIndex(\"session_realtime_entries_operation_uq\").on(\n table.realtimeId,\n table.operationId,\n ),\n sequence: uniqueIndex(\"session_realtime_entries_sequence_uq\").on(\n table.realtimeId,\n table.sequence,\n ),\n sourceUpdate: uniqueIndex(\"session_realtime_entries_source_update_uq\")\n .on(table.realtimeId, table.sourceUpdateId)\n .where(sql`${table.sourceUpdateId} is not null`),\n delegationTurn: uniqueIndex(\"session_realtime_entries_delegation_turn_uq\")\n .on(table.turnId)\n .where(sql`${table.kind} = 'delegation_call' and ${table.turnId} is not null`),\n delegationTerminal: uniqueIndex(\"session_realtime_entries_delegation_terminal_uq\")\n .on(table.turnId)\n .where(\n sql`${table.direction} = 'provider_out' and ${table.kind} in ('delegation_result', 'error') and ${table.turnId} is not null`,\n ),\n delegationCall: uniqueIndex(\"session_realtime_entries_delegation_call_uq\")\n .on(table.realtimeId, table.delegationItemId)\n .where(sql`${table.kind} = 'delegation_call' and ${table.delegationItemId} is not null`),\n outboundPending: index(\"session_realtime_entries_outbound_pending_idx\")\n .on(table.realtimeId, table.sequence)\n .where(sql`${table.direction} = 'provider_out' and ${table.providerAckedAt} is null`),\n epochValid: check(\"session_realtime_entries_epoch_check\", sql`${table.connectionEpoch} >= 1`),\n sequenceValid: check(\"session_realtime_entries_sequence_check\", sql`${table.sequence} >= 1`),\n directionValid: check(\n \"session_realtime_entries_direction_check\",\n sql`${table.direction} in ('provider_in', 'provider_out')`,\n ),\n kindValid: check(\n \"session_realtime_entries_kind_check\",\n sql`${table.kind} in ('user_transcript', 'assistant_transcript', 'delegation_call', 'delegation_progress', 'delegation_result', 'interruption', 'session_update', 'error')`,\n ),\n roleValid: check(\n \"session_realtime_entries_role_check\",\n sql`${table.role} is null or ${table.role} in ('user', 'assistant')`,\n ),\n providerEventValid: check(\n \"session_realtime_entries_provider_event_check\",\n sql`${table.providerEventId} is null or octet_length(${table.providerEventId}) between 1 and 1024`,\n ),\n delegationItemValid: check(\n \"session_realtime_entries_delegation_item_check\",\n sql`${table.delegationItemId} is null or octet_length(${table.delegationItemId}) between 1 and 1024`,\n ),\n textValid: check(\n \"session_realtime_entries_text_check\",\n sql`${table.text} is null or octet_length(${table.text}) <= 131072`,\n ),\n payloadValid: check(\n \"session_realtime_entries_payload_check\",\n sql`octet_length(${table.payload}::text) <= 131072`,\n ),\n turnValid: check(\n \"session_realtime_entries_turn_check\",\n sql`${table.turnId} is null\n or (${table.kind} = 'delegation_call' and ${table.direction} = 'provider_in')\n or (${table.kind} in ('delegation_progress', 'delegation_result', 'error') and ${table.direction} = 'provider_out')`,\n ),\n transcriptValid: check(\n \"session_realtime_entries_transcript_check\",\n sql`(${table.kind} = 'user_transcript' and ${table.role} = 'user' and ${table.text} is not null)\n or (${table.kind} = 'assistant_transcript' and ${table.role} = 'assistant' and ${table.text} is not null)\n or (${table.kind} not in ('user_transcript', 'assistant_transcript') and ${table.role} is null)`,\n ),\n }),\n);\n\n// A denied session create is durable evidence, not a mutable session/resource\n// artifact. It has its own workspace-scoped idempotency key so retries replay\n// the same denial without creating a session or billing/run rows.\nexport const sessionSpawnDenials = pgTable(\n \"session_spawn_denials\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n parentSessionId: uuid(\"parent_session_id\"),\n rootSessionId: uuid(\"root_session_id\"),\n currentDepth: integer(\"current_depth\").notNull(),\n attemptedDepth: bigint(\"attempted_depth\", { mode: \"number\" }).notNull(),\n effectiveMaxNestedAgentDepth: integer(\"effective_max_nested_agent_depth\").notNull(),\n requestedMaxNestedAgentDepthOverride: integer(\"requested_max_nested_agent_depth_override\"),\n policySource: text(\"policy_source\").notNull(),\n policySessionId: uuid(\"policy_session_id\"),\n subjectId: text(\"subject_id\"),\n code: text(\"code\").notNull(),\n idempotencyKey: text(\"idempotency_key\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceIdentity: uniqueIndex(\"session_spawn_denials_workspace_id_uq\").on(\n table.workspaceId,\n table.id,\n ),\n workspaceCreated: index(\"session_spawn_denials_workspace_created_idx\").on(\n table.workspaceId,\n table.createdAt,\n ),\n parent: index(\"session_spawn_denials_parent_idx\").on(\n table.workspaceId,\n table.parentSessionId,\n table.createdAt,\n ),\n idempotency: uniqueIndex(\"session_spawn_denials_workspace_idempotency_idx\")\n .on(table.workspaceId, table.idempotencyKey)\n .where(sql`${table.idempotencyKey} is not null`),\n workspaceAccount: foreignKey({\n name: \"session_spawn_denials_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n }),\n);\n\n// Per-authenticated-subject session organization. This is deliberately a\n// relation instead of a session column: one member's pin must never reorder a\n// shared workspace for another member, and a session's own activity timestamps\n// must remain agent/runtime truth. `subjectId` is the trusted AccessGrant\n// subject, which is text because configured/delegated principals are not always\n// UUIDs. The account/workspace pair carries the standard forced-RLS boundary.\nexport const sessionPins = pgTable(\n \"session_pins\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n subjectId: text(\"subject_id\").notNull(),\n sessionId: uuid(\"session_id\")\n .notNull()\n .references(() => sessions.id, { onDelete: \"cascade\" }),\n // Keep an unpinned tombstone (pinned=false, pinned_at=null) rather than\n // deleting it. That preserves a monotonic version and prevents an ABA race:\n // a stale client that saw pin version 1 cannot silently overwrite a later\n // unpin+re-pin that would otherwise recreate version 1.\n pinned: boolean(\"pinned\").notNull().default(true),\n pinnedAt: timestamp(\"pinned_at\", { withTimezone: true }).defaultNow(),\n version: integer(\"version\").notNull().default(1),\n },\n (table) => ({\n subjectNonempty: check(\n \"session_pins_subject_nonempty\",\n sql`length(btrim(${table.subjectId})) > 0`,\n ),\n versionPositive: check(\"session_pins_version_positive\", sql`${table.version} >= 1`),\n stateConsistent: check(\n \"session_pins_state_consistent\",\n sql`((${table.pinned}) and (${table.pinnedAt}) is not null) or ((not ${table.pinned}) and (${table.pinnedAt}) is null)`,\n ),\n workspaceAccount: foreignKey({\n name: \"session_pins_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n workspaceSession: foreignKey({\n name: \"session_pins_workspace_session_fk\",\n columns: [table.workspaceId, table.sessionId],\n foreignColumns: [sessions.workspaceId, sessions.id],\n }).onDelete(\"cascade\"),\n subjectSession: uniqueIndex(\"session_pins_subject_workspace_session_idx\").on(\n table.subjectId,\n table.workspaceId,\n table.sessionId,\n ),\n subjectPinned: index(\"session_pins_workspace_subject_pinned_idx\").on(\n table.workspaceId,\n table.subjectId,\n table.pinned,\n table.pinnedAt.desc(),\n table.sessionId.desc(),\n ),\n }),\n);\n\n// A short-lived server-owned continuation snapshot for the pin-aware session\n// list. The ordinary list is ordered by mutable activity, so a cursor cannot\n// safely replay that order from updated_at alone across HTTP requests. The\n// snapshot stores the already-ordered ordinary ids; the list query still joins\n// live session rows for current lifecycle/title data and expires snapshots\n// opportunistically.\nexport const sessionListSnapshots = pgTable(\n \"session_list_snapshots\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n subjectId: text(\"subject_id\").notNull(),\n parentSessionFilter: text(\"parent_session_filter\").notNull().default(\"all\"),\n search: text(\"search\"),\n ordinarySessionIds: uuid(\"ordinary_session_ids\")\n .array()\n .notNull()\n .default(sql`'{}'::uuid[]`),\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }).notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"session_list_snapshots_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n subjectNonempty: check(\n \"session_list_snapshots_subject_nonempty\",\n sql`length(btrim(${table.subjectId})) > 0`,\n ),\n parentFilterValid: check(\n \"session_list_snapshots_parent_filter_valid\",\n sql`${table.parentSessionFilter} = 'all' or ${table.parentSessionFilter} = 'null' or ${table.parentSessionFilter} ~ '^[0-9a-fA-F-]{36}$'`,\n ),\n searchLength: check(\n \"session_list_snapshots_search_length\",\n sql`${table.search} is null or length(${table.search}) <= 200`,\n ),\n workspaceExpiry: index(\"session_list_snapshots_workspace_expiry_idx\").on(\n table.workspaceId,\n table.subjectId,\n table.expiresAt,\n ),\n expiryReaper: index(\"session_list_snapshots_expiry_reaper_idx\").on(table.expiresAt, table.id),\n }),\n);\n\nexport const sessionMcpServers = pgTable(\n \"session_mcp_servers\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n sessionId: uuid(\"session_id\")\n .notNull()\n .references(() => sessions.id, { onDelete: \"cascade\" }),\n serverId: text(\"server_id\").notNull(),\n name: text(\"name\"),\n url: text(\"url\").notNull(),\n allowedTools: jsonb(\"allowed_tools\").$type<string[]>(),\n timeoutMs: integer(\"timeout_ms\"),\n cacheToolsList: boolean(\"cache_tools_list\").notNull().default(false),\n // Human-approval policy: `true` = every tool requires approval, a string[] of\n // UNPREFIXED tool names = only those require it, null/absent = auto-run.\n requireApproval: jsonb(\"require_approval\").$type<boolean | string[]>(),\n // Non-secret pointer resolved at request time by the standalone broker or\n // an embedding host. Unlike headersEncrypted, this is safe to project.\n connectionRef: jsonb(\"connection_ref\").$type<McpServerConnectionRef>(),\n // Map of header name -> AES-GCM ciphertext. Values are decrypted only by the\n // worker's run-preparation path and never returned by API helpers.\n headersEncrypted: jsonb(\"headers_encrypted\")\n .$type<Record<string, string>>()\n .notNull()\n .default({}),\n credentialVersion: integer(\"credential_version\").notNull().default(1),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n sessionServer: uniqueIndex(\"session_mcp_servers_session_server_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.serverId,\n ),\n session: index(\"session_mcp_servers_session_idx\").on(table.workspaceId, table.sessionId),\n }),\n);\n\nexport const files = pgTable(\n \"files\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n status: text(\"status\").notNull().default(\"pending_upload\"),\n filename: text(\"filename\").notNull(),\n safeFilename: text(\"safe_filename\").notNull(),\n contentType: text(\"content_type\").notNull(),\n sizeBytes: bigint(\"size_bytes\", { mode: \"number\" }).notNull(),\n sha256: text(\"sha256\"),\n bucket: text(\"bucket\").notNull(),\n objectKey: text(\"object_key\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceCreated: index(\"files_workspace_created_idx\").on(table.workspaceId, table.createdAt),\n objectKey: uniqueIndex(\"files_object_key_idx\").on(table.objectKey),\n status: index(\"files_status_idx\").on(table.status),\n }),\n);\n\nexport const fileUploads = pgTable(\n \"file_uploads\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n fileId: uuid(\"file_id\")\n .notNull()\n .references(() => files.id, { onDelete: \"cascade\" }),\n status: text(\"status\").notNull().default(\"pending\"),\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }).notNull(),\n completedAt: timestamp(\"completed_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspace: index(\"file_uploads_workspace_idx\").on(table.workspaceId),\n fileId: index(\"file_uploads_file_id_idx\").on(table.fileId),\n status: index(\"file_uploads_status_idx\").on(table.status),\n }),\n);\n\nexport const documentBases = pgTable(\n \"document_bases\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n name: text(\"name\").notNull(),\n description: text(\"description\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceCreated: index(\"document_bases_workspace_created_idx\").on(\n table.workspaceId,\n table.createdAt,\n ),\n defaultName: uniqueIndex(\"document_bases_workspace_default_name_uq\")\n .on(table.workspaceId)\n .where(sql`lower(btrim(${table.name})) = 'default'`),\n }),\n);\n\nexport const documents = pgTable(\n \"documents\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n baseId: uuid(\"base_id\")\n .notNull()\n .references(() => documentBases.id, { onDelete: \"cascade\" }),\n fileId: uuid(\"file_id\")\n .notNull()\n .references(() => files.id, { onDelete: \"restrict\" }),\n status: text(\"status\").notNull().default(\"queued\"),\n title: text(\"title\").notNull(),\n parser: text(\"parser\").notNull().default(\"liteparse\"),\n chunkCount: integer(\"chunk_count\").notNull().default(0),\n error: text(\"error\"),\n sourceKind: text(\"source_kind\").notNull().default(\"manual_upload\"),\n sourceUri: text(\"source_uri\"),\n sourceExternalId: text(\"source_external_id\"),\n sourceTitle: text(\"source_title\"),\n sourceAuthor: text(\"source_author\"),\n sourceCreatedAt: timestamp(\"source_created_at\", { withTimezone: true }),\n sourceUpdatedAt: timestamp(\"source_updated_at\", { withTimezone: true }),\n sourceVersion: text(\"source_version\"),\n aclTags: jsonb(\"acl_tags\").$type<string[]>().notNull().default([]),\n // Durable authorization tuple. The workspace_id above remains ingestion\n // provenance; organization authority deliberately has no workspace owner.\n authorityKind: text(\"authority_kind\").notNull().default(\"workspace\"),\n authorityWorkspaceId: uuid(\"authority_workspace_id\"),\n authoritySubjectId: text(\"authority_subject_id\"),\n // Per-document access controls. visibility 'private' restricts human reads to\n // created_by (a grant subject id, not a uuid); agent_access=false hides the\n // document from agent retrieval surfaces (docs MCP) while humans keep REST.\n visibility: text(\"visibility\").notNull().default(\"workspace\"),\n createdBy: text(\"created_by\"),\n agentAccess: boolean(\"agent_access\").notNull().default(true),\n // Auto-curation output (knowledge drops).\n summary: text(\"summary\"),\n topics: jsonb(\"topics\").$type<string[]>().notNull().default([]),\n curationStatus: text(\"curation_status\").notNull().default(\"none\"),\n curation: jsonb(\"curation\").$type<Record<string, unknown>>(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n baseFile: uniqueIndex(\"documents_workspace_base_file_idx\").on(\n table.workspaceId,\n table.baseId,\n table.fileId,\n ),\n baseStatus: index(\"documents_workspace_base_status_idx\").on(\n table.workspaceId,\n table.baseId,\n table.status,\n ),\n sourceKind: index(\"documents_workspace_source_kind_idx\").on(\n table.workspaceId,\n table.sourceKind,\n ),\n sourceExternalId: index(\"documents_workspace_source_external_id_idx\").on(\n table.workspaceId,\n table.sourceExternalId,\n ),\n curationStatus: index(\"documents_workspace_curation_status_idx\").on(\n table.workspaceId,\n table.curationStatus,\n ),\n authority: index(\"documents_authority_idx\").on(\n table.accountId,\n table.authorityKind,\n table.authorityWorkspaceId,\n table.authoritySubjectId,\n table.status,\n ),\n authorityWorkspaceAccount: foreignKey({\n name: \"documents_authority_workspace_fk\",\n columns: [table.authorityWorkspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"restrict\"),\n authorityState: check(\n \"documents_authority_chk\",\n sql`(${table.authorityKind} = 'organization' and ${table.authorityWorkspaceId} is null and ${table.authoritySubjectId} is null)\n or (${table.authorityKind} = 'workspace' and ${table.authorityWorkspaceId} = ${table.workspaceId} and ${table.authoritySubjectId} is null)\n or (${table.authorityKind} = 'personal' and ${table.authorityWorkspaceId} = ${table.workspaceId} and nullif(btrim(${table.authoritySubjectId}), '') is not null and octet_length(convert_to(${table.authoritySubjectId}, 'UTF8')) <= 1024 and ${table.authoritySubjectId} = ${table.createdBy})`,\n ),\n authorityVisibility: check(\n \"documents_authority_visibility_chk\",\n sql`(${table.authorityKind} = 'personal') = (${table.visibility} = 'private')`,\n ),\n visibilityState: check(\n \"documents_visibility_chk\",\n sql`${table.visibility} in ('workspace', 'private')`,\n ),\n curationState: check(\n \"documents_curation_status_chk\",\n sql`${table.curationStatus} in ('none', 'pending', 'suggested', 'auto_filed', 'failed')`,\n ),\n privateCreator: check(\n \"documents_private_creator_chk\",\n sql`${table.visibility} <> 'private' or nullif(btrim(${table.createdBy}), '') is not null`,\n ),\n topicsArray: check(\"documents_topics_array_chk\", sql`jsonb_typeof(${table.topics}) = 'array'`),\n curationObject: check(\n \"documents_curation_object_chk\",\n sql`${table.curation} is null or jsonb_typeof(${table.curation}) = 'object'`,\n ),\n }),\n);\n\nexport const documentChunks = pgTable(\n \"document_chunks\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n documentId: uuid(\"document_id\")\n .notNull()\n .references(() => documents.id, { onDelete: \"cascade\" }),\n baseId: uuid(\"base_id\")\n .notNull()\n .references(() => documentBases.id, { onDelete: \"cascade\" }),\n fileId: uuid(\"file_id\")\n .notNull()\n .references(() => files.id, { onDelete: \"restrict\" }),\n chunkIndex: integer(\"chunk_index\").notNull(),\n text: text(\"text\").notNull(),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>().notNull().default({}),\n authorityKind: text(\"authority_kind\").notNull().default(\"workspace\"),\n authorityWorkspaceId: uuid(\"authority_workspace_id\"),\n authoritySubjectId: text(\"authority_subject_id\"),\n embedding: vector(\"embedding\").notNull(),\n embeddingModel: text(\"embedding_model\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n documentIndex: uniqueIndex(\"document_chunks_workspace_document_index_idx\").on(\n table.workspaceId,\n table.documentId,\n table.chunkIndex,\n ),\n base: index(\"document_chunks_workspace_base_idx\").on(table.workspaceId, table.baseId),\n authority: index(\"document_chunks_authority_idx\").on(\n table.accountId,\n table.authorityKind,\n table.authorityWorkspaceId,\n table.authoritySubjectId,\n ),\n authorityWorkspaceAccount: foreignKey({\n name: \"document_chunks_authority_workspace_fk\",\n columns: [table.authorityWorkspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"restrict\"),\n authorityState: check(\n \"document_chunks_authority_chk\",\n sql`(${table.authorityKind} = 'organization' and ${table.authorityWorkspaceId} is null and ${table.authoritySubjectId} is null)\n or (${table.authorityKind} = 'workspace' and ${table.authorityWorkspaceId} = ${table.workspaceId} and ${table.authoritySubjectId} is null)\n or (${table.authorityKind} = 'personal' and ${table.authorityWorkspaceId} = ${table.workspaceId} and nullif(btrim(${table.authoritySubjectId}), '') is not null and octet_length(convert_to(${table.authoritySubjectId}, 'UTF8')) <= 1024)`,\n ),\n }),\n);\n\nexport const knowledgeMemories = pgTable(\n \"knowledge_memories\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n status: text(\"status\").notNull().default(\"proposed\"),\n kind: text(\"kind\").notNull().default(\"semantic\"),\n scope: text(\"scope\").notNull().default(\"workspace\"),\n text: text(\"text\").notNull(),\n sourceRefs: jsonb(\"source_refs\").$type<unknown[]>().notNull().default([]),\n confidence: integer(\"confidence\").notNull().default(50),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>().notNull().default({}),\n createdBySessionId: uuid(\"created_by_session_id\").references(() => sessions.id, {\n onDelete: \"set null\",\n }),\n reviewedBy: text(\"reviewed_by\"),\n reviewedAt: timestamp(\"reviewed_at\", { withTimezone: true }),\n // Workspace Memory V1 (migration 0045). Embedding is nullable: fail-soft writes\n // (embedder unavailable) persist keyword-searchable rows without a vector.\n embedding: vector(\"embedding\"),\n embeddingModel: text(\"embedding_model\"),\n pinned: boolean(\"pinned\").notNull().default(false),\n usageCount: integer(\"usage_count\").notNull().default(0),\n lastUsedAt: timestamp(\"last_used_at\", { withTimezone: true }),\n // Self-referential supersession chain. FKs live in migration 0045 (ON DELETE SET\n // NULL); declared here as plain columns like the migration-only composite FK.\n supersedesId: uuid(\"supersedes_id\"),\n supersededById: uuid(\"superseded_by_id\"),\n validFrom: timestamp(\"valid_from\", { withTimezone: true }).notNull().defaultNow(),\n validUntil: timestamp(\"valid_until\", { withTimezone: true }),\n // Hierarchical memory foundation (migration 0152). `scope` remains the V1\n // compatibility projection; typed selectors are the fail-closed authority.\n scopeType: text(\"scope_type\").notNull().default(\"workspace\"),\n scopeSubjectId: text(\"scope_subject_id\"),\n scopeRoleKey: text(\"scope_role_key\"),\n scopeSessionId: uuid(\"scope_session_id\"),\n namespace: text(\"namespace_key\").notNull().default(\"general\"),\n labels: text(\"labels\").array().notNull().default([]),\n memoryVersion: integer(\"memory_version\").notNull().default(1),\n createdByKind: text(\"created_by_kind\").notNull().default(\"service\"),\n createdBySubjectId: text(\"created_by_subject_id\").notNull().default(\"unattributed-legacy\"),\n createdByContext: jsonb(\"created_by_context\")\n .$type<Record<string, unknown>>()\n .notNull()\n .default({ backfill: true }),\n // sha256(normalizeMemoryText(text)) — exact-dedup key; see memory-domain.\n textHash: text(\"text_hash\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceStatus: index(\"knowledge_memories_workspace_status_idx\").on(\n table.workspaceId,\n table.status,\n table.updatedAt,\n ),\n workspaceKind: index(\"knowledge_memories_workspace_kind_idx\").on(table.workspaceId, table.kind),\n workspaceScope: index(\"knowledge_memories_workspace_scope_idx\").on(\n table.workspaceId,\n table.scope,\n ),\n workspaceTypedScope: index(\"knowledge_memories_workspace_typed_scope_idx\").on(\n table.workspaceId,\n table.scopeType,\n table.scopeSubjectId,\n table.scopeRoleKey,\n table.scopeSessionId,\n ),\n workspaceNamespace: index(\"knowledge_memories_workspace_namespace_idx\").on(\n table.workspaceId,\n table.namespace,\n ),\n labelsGin: index(\"knowledge_memories_labels_idx\").using(\"gin\", table.labels),\n createdBySession: index(\"knowledge_memories_workspace_created_by_session_idx\").on(\n table.workspaceId,\n table.createdBySessionId,\n ),\n // Working-set selection (partial index mirrors migration 0045).\n workspaceVisible: index(\"knowledge_memories_workspace_visible_idx\")\n .on(table.workspaceId, table.pinned, table.updatedAt)\n .where(sql`${table.status} in ('active', 'approved')`),\n workspaceTextHash: index(\"knowledge_memories_workspace_text_hash_idx\").on(\n table.workspaceId,\n table.textHash,\n ),\n // Drizzle 0.45 cannot encode PostgreSQL `NULLS NOT DISTINCT`; migration\n // 0152 owns that option so nullable scope selectors remain one identity.\n scopeVisibleTextHashUnique: uniqueIndex(\"knowledge_memories_scope_visible_text_hash_uq\")\n .on(\n table.workspaceId,\n table.scopeType,\n table.scopeSubjectId,\n table.scopeRoleKey,\n table.scopeSessionId,\n table.namespace,\n table.textHash,\n )\n .where(sql`${table.status} in ('active', 'approved') and ${table.textHash} is not null`),\n }),\n);\n\nexport const sessionTurns = pgTable(\n \"session_turns\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n sessionId: uuid(\"session_id\")\n .notNull()\n .references(() => sessions.id, { onDelete: \"cascade\" }),\n triggerEventId: uuid(\"trigger_event_id\").notNull(),\n temporalWorkflowId: text(\"temporal_workflow_id\").notNull(),\n status: text(\"status\").notNull(),\n source: text(\"source\").notNull().default(\"user\"),\n position: bigint(\"position\", { mode: \"number\" }).notNull(),\n prompt: text(\"prompt\").notNull(),\n // Host context for this exact turn. System-level at runtime and deliberately\n // separate from the visible prompt/event payload.\n turnInstructions: text(\"turn_instructions\"),\n resources: jsonb(\"resources\").$type<unknown[]>().notNull().default([]),\n tools: jsonb(\"tools\").$type<unknown[]>().notNull().default([]),\n // false = inherit the durable session policy; true = this turn explicitly\n // replaces it with `tools` after the core subset fence.\n toolsProvided: boolean(\"tools_provided\").notNull().default(false),\n model: text(\"model\").notNull(),\n reasoningEffort: text(\"reasoning_effort\").notNull(),\n // Peer of model + reasoning_effort for Fast/priority inheritance.\n latencyMode: text(\"latency_mode\").notNull().default(\"standard\"),\n sandboxBackend: text(\"sandbox_backend\").notNull(),\n // Per-turn OS override. NULL = inherit the session's sandbox_os. CHECK-\n // constrained to the SandboxOs enum (or NULL) in migration 0018.\n sandboxOs: text(\"sandbox_os\"),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>().notNull().default({}),\n version: integer(\"version\").notNull().default(1),\n executionGeneration: integer(\"execution_generation\").notNull().default(0),\n // Composite FK to session_turn_attempts is installed by migration 0063.\n // It lives in SQL because attempts carry the reciprocal turn FK and because\n // the claim transaction preallocates this ID before inserting the attempt;\n // the SQL constraint is therefore DEFERRABLE INITIALLY DEFERRED.\n activeAttemptId: uuid(\"active_attempt_id\"),\n lineage: jsonb(\"lineage\").$type<Record<string, unknown>>().notNull().default({}),\n // Required immutable authority captured when the turn is accepted. These\n // columns are deliberately outside mutable metadata/lineage.\n initiatorKind: text(\"initiator_kind\").notNull().default(\"service\"),\n initiatorSubjectId: text(\"initiator_subject_id\").notNull().default(\"unattributed-legacy\"),\n initiatorContext: jsonb(\"initiator_context\")\n .$type<Record<string, unknown>>()\n .notNull()\n .default({ backfill: true }),\n // Immutable human authority for exact-attempt governance. Human turns bind\n // their own subject; trusted continuations/compactions may inherit the\n // causal turn's value while retaining a service initiator. Null means the\n // turn has no human preference authority.\n initiatingHumanSubjectId: text(\"initiating_human_subject_id\"),\n // Immutable exact personal MCP authority for this logical turn. Recovery,\n // approval, retries, and Toolspace reuse this row; no runtime may infer\n // broader authority from the session creator or mutable session state.\n personalConnectionDelegations: jsonb(\"personal_connection_delegations\")\n .$type<McpPersonalConnectionDelegation[]>()\n .notNull()\n .default([]),\n cancelledBy: text(\"cancelled_by\"),\n cancelReason: text(\"cancel_reason\"),\n // Atomic per-turn toolspace call budget counter (migration 0043). Incremented\n // by a single conditional UPDATE at tools/call time; the row lock serializes\n // concurrent reservations so exactly `toolspaceMaxCallsPerTurn` succeed.\n toolspaceCallCount: integer(\"toolspace_call_count\").notNull().default(0),\n startedAt: timestamp(\"started_at\", { withTimezone: true }),\n finishedAt: timestamp(\"finished_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceIdentity: uniqueIndex(\"session_turns_workspace_id_idx\").on(\n table.workspaceId,\n table.id,\n ),\n queue: index(\"session_turns_workspace_queue_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.status,\n table.position,\n ),\n oneCurrentInference: uniqueIndex(\"session_turns_one_current_inference_uq\")\n .on(table.workspaceId, table.sessionId)\n .where(sql`${table.status} in ('running','requires_action','recovering','waiting_capacity')`),\n latencyModeValid: check(\n \"session_turns_latency_mode_check\",\n sql`${table.latencyMode} in ('standard', 'priority', 'fast')`,\n ),\n }),\n);\n\n// One bounded audit/idempotency projection of an ended mode's transcript-tail\n// wrapper, bound to the exact ordinary Steer turn that durably carries it.\nexport const sessionRealtimeContextProjections = pgTable(\n \"session_realtime_context_projections\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n sessionId: uuid(\"session_id\").notNull(),\n turnId: uuid(\"turn_id\").notNull(),\n context: text(\"context\"),\n sourceModeCount: integer(\"source_mode_count\").notNull(),\n sourceEntryCount: integer(\"source_entry_count\").notNull(),\n includedEntryCount: integer(\"included_entry_count\").notNull(),\n omittedEntryCount: integer(\"omitted_entry_count\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"session_realtime_context_projections_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n workspaceSession: foreignKey({\n name: \"session_realtime_context_projections_workspace_session_fk\",\n columns: [table.workspaceId, table.sessionId],\n foreignColumns: [sessions.workspaceId, sessions.id],\n }).onDelete(\"cascade\"),\n workspaceTurn: foreignKey({\n name: \"session_realtime_context_projections_workspace_turn_fk\",\n columns: [table.workspaceId, table.turnId],\n foreignColumns: [sessionTurns.workspaceId, sessionTurns.id],\n }).onDelete(\"cascade\"),\n turn: uniqueIndex(\"session_realtime_context_projections_turn_uq\").on(\n table.workspaceId,\n table.sessionId,\n table.turnId,\n ),\n contextValid: check(\n \"session_realtime_context_projections_context_check\",\n sql`${table.context} is null or octet_length(${table.context}) between 1 and 65536`,\n ),\n countsValid: check(\n \"session_realtime_context_projections_counts_check\",\n sql`${table.sourceModeCount} >= 1\n and ${table.sourceEntryCount} >= 0\n and ${table.includedEntryCount} >= 0\n and ${table.omittedEntryCount} >= 0\n and ${table.includedEntryCount} + ${table.omittedEntryCount} = ${table.sourceEntryCount}\n and ((${table.sourceEntryCount} = 0 and ${table.context} is null)\n or (${table.sourceEntryCount} > 0 and ${table.context} is not null))`,\n ),\n }),\n);\n\n// First-class ownership for one accepted execution attempt. A workflow may\n// preallocate id, but this row is inserted only by the activity transaction\n// that actually claims the logical turn and registers its exact dispatch.\nexport const sessionTurnAttempts = pgTable(\n \"session_turn_attempts\",\n {\n id: uuid(\"id\").primaryKey(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n sessionId: uuid(\"session_id\").notNull(),\n turnId: uuid(\"turn_id\").notNull(),\n executionGeneration: integer(\"execution_generation\").notNull(),\n state: text(\"state\").notNull().default(\"claimed\"),\n outcome: text(\"outcome\"),\n temporalWorkflowId: text(\"temporal_workflow_id\").notNull(),\n temporalWorkflowRunId: text(\"temporal_workflow_run_id\").notNull(),\n temporalActivityId: text(\"temporal_activity_id\").notNull(),\n workerId: text(\"worker_id\"),\n leaseId: text(\"lease_id\"),\n leaseExpiresAt: timestamp(\"lease_expires_at\", { withTimezone: true }),\n verifiedControlRevision: bigint(\"verified_control_revision\", {\n mode: \"number\",\n }).notNull(),\n // Immutable policy snapshot captured under the session lock at claim.\n mcpApprovalPolicies: jsonb(\"mcp_approval_policies\")\n .$type<Record<string, SessionMcpApprovalPolicy>>()\n .notNull(),\n connectorActionPolicies: jsonb(\"connector_action_policies\")\n .$type<ConnectorActionPolicySnapshotEntry[]>()\n .notNull()\n .default([]),\n startedAt: timestamp(\"started_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n closedAt: timestamp(\"closed_at\", { withTimezone: true }),\n // The cancelled activity writes this after losing inference, user-visible\n // output, and workspace-persistence authority. Fenced/idempotent cleanup\n // and telemetry may still finish. Temporal activity cancellation or\n // terminalization is transport state only; queue admission and clients use\n // this durable receipt as the physical-quiescence authority.\n quiescedAt: timestamp(\"quiesced_at\", { withTimezone: true }),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"session_turn_attempts_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n workspaceSession: foreignKey({\n name: \"session_turn_attempts_workspace_session_fk\",\n columns: [table.workspaceId, table.sessionId],\n foreignColumns: [sessions.workspaceId, sessions.id],\n }).onDelete(\"restrict\"),\n workspaceTurn: foreignKey({\n name: \"session_turn_attempts_workspace_turn_fk\",\n columns: [table.workspaceId, table.turnId],\n foreignColumns: [sessionTurns.workspaceId, sessionTurns.id],\n }).onDelete(\"restrict\"),\n workspaceIdentity: uniqueIndex(\"session_turn_attempts_workspace_id_uq\").on(\n table.workspaceId,\n table.id,\n ),\n ownershipIdentity: uniqueIndex(\"session_turn_attempts_human_input_owner_uq\").on(\n table.accountId,\n table.workspaceId,\n table.sessionId,\n table.turnId,\n table.id,\n ),\n liveTurn: uniqueIndex(\"session_turn_attempts_live_turn_uq\")\n .on(table.workspaceId, table.turnId)\n .where(sql`${table.state} in ('claimed', 'running')`),\n liveSession: uniqueIndex(\"session_turn_attempts_live_session_uq\")\n .on(table.workspaceId, table.sessionId)\n .where(sql`${table.state} in ('claimed', 'running')`),\n latestSessionAttempt: index(\"session_turn_attempts_latest_session_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.startedAt.desc(),\n table.id.desc(),\n ),\n dispatch: uniqueIndex(\"session_turn_attempts_dispatch_uq\").on(\n table.workspaceId,\n table.temporalWorkflowRunId,\n table.temporalActivityId,\n ),\n leaseExpiry: index(\"session_turn_attempts_lease_expiry_idx\")\n .on(table.leaseExpiresAt, table.workspaceId, table.sessionId)\n .where(sql`${table.state} in ('claimed', 'running')`),\n stateValid: check(\n \"session_turn_attempts_state_check\",\n sql`${table.state} in ('claimed', 'running', 'closed')`,\n ),\n outcomeValid: check(\n \"session_turn_attempts_outcome_check\",\n sql`${table.outcome} is null or ${table.outcome} in (\n 'completed', 'failed', 'cancelled', 'superseded', 'requires_action',\n 'waiting_capacity', 'interrupted_recoverable', 'lease_lost_recoverable',\n 'pre_cutover_closed'\n )`,\n ),\n closedConsistent: check(\n \"session_turn_attempts_closed_check\",\n sql`(${table.state} = 'closed' and ${table.outcome} is not null and ${table.closedAt} is not null)\n or (${table.state} <> 'closed' and ${table.outcome} is null and ${table.closedAt} is null)`,\n ),\n }),\n);\n\nexport const connectorActionRequests = pgTable(\n \"connector_action_requests\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n sessionId: uuid(\"session_id\").notNull(),\n turnId: uuid(\"turn_id\").notNull(),\n creationAttemptId: uuid(\"creation_attempt_id\").notNull(),\n creationExecutionGeneration: integer(\"creation_execution_generation\").notNull(),\n executionAttemptId: uuid(\"execution_attempt_id\"),\n executionAttemptGeneration: integer(\"execution_attempt_generation\"),\n approvalId: text(\"approval_id\").notNull(),\n initiatorKind: text(\"initiator_kind\").$type<\"subject\" | \"service\">().notNull(),\n initiatorSubjectId: text(\"initiator_subject_id\").notNull(),\n connectionId: text(\"connection_id\").notNull(),\n connectionVersion: integer(\"connection_version\"),\n serverId: text(\"server_id\").notNull(),\n toolName: text(\"tool_name\").notNull(),\n actionName: text(\"action_name\").notNull(),\n // Attempt-frozen provenance intentionally survives policy deletion.\n policyId: uuid(\"policy_id\"),\n policyVersion: integer(\"policy_version\"),\n policySource: text(\"policy_source\").$type<\"explicit\" | \"ambiguous\">().notNull(),\n policyDecision: text(\"policy_decision\").$type<ConnectorActionPolicyDecision>().notNull(),\n actionFingerprint: text(\"action_fingerprint\").notNull(),\n status: text(\"status\")\n .$type<\n | \"pending\"\n | \"approved\"\n | \"rejected\"\n | \"blocked\"\n | \"executing\"\n | \"completed\"\n | \"failed\"\n | \"uncertain\"\n >()\n .notNull(),\n decision: text(\"decision\").$type<\"approve\" | \"reject\">(),\n decisionBySubjectId: text(\"decision_by_subject_id\"),\n decisionEventId: uuid(\"decision_event_id\"),\n decidedAt: timestamp(\"decided_at\", { withTimezone: true }),\n executionStartedAt: timestamp(\"execution_started_at\", { withTimezone: true }),\n executionFinishedAt: timestamp(\"execution_finished_at\", { withTimezone: true }),\n outcome: text(\"outcome\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n creationAttempt: foreignKey({\n name: \"connector_action_requests_creation_attempt_fk\",\n columns: [\n table.accountId,\n table.workspaceId,\n table.sessionId,\n table.turnId,\n table.creationAttemptId,\n ],\n foreignColumns: [\n sessionTurnAttempts.accountId,\n sessionTurnAttempts.workspaceId,\n sessionTurnAttempts.sessionId,\n sessionTurnAttempts.turnId,\n sessionTurnAttempts.id,\n ],\n }).onDelete(\"cascade\"),\n executionAttempt: foreignKey({\n name: \"connector_action_requests_execution_attempt_fk\",\n columns: [\n table.accountId,\n table.workspaceId,\n table.sessionId,\n table.turnId,\n table.executionAttemptId,\n ],\n foreignColumns: [\n sessionTurnAttempts.accountId,\n sessionTurnAttempts.workspaceId,\n sessionTurnAttempts.sessionId,\n sessionTurnAttempts.turnId,\n sessionTurnAttempts.id,\n ],\n }).onDelete(\"cascade\"),\n identity: uniqueIndex(\"connector_action_requests_identity_uq\").on(\n table.workspaceId,\n table.sessionId,\n table.turnId,\n table.approvalId,\n ),\n attemptStatus: index(\"connector_action_requests_attempt_status_idx\").on(\n table.workspaceId,\n table.creationAttemptId,\n table.status,\n ),\n sessionCreated: index(\"connector_action_requests_session_created_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.createdAt.desc(),\n table.id.desc(),\n ),\n policyDecisionValid: check(\n \"connector_action_requests_policy_decision_chk\",\n sql`${table.policyDecision} in ('allow', 'ask', 'block')`,\n ),\n statusValid: check(\n \"connector_action_requests_status_chk\",\n sql`${table.status} in (\n 'pending', 'approved', 'rejected', 'blocked', 'executing',\n 'completed', 'failed', 'uncertain'\n )`,\n ),\n }),\n);\n\n// One durable idempotency/operation record for every queue, control,\n// foreground Send/Steer, and Agent MCP mutation. The database migration owns\n// the NULLS NOT DISTINCT uniqueness form because Drizzle does not model it.\nexport const sessionCommandReceipts = pgTable(\n \"session_command_receipts\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n actorType: text(\"actor_type\").notNull(),\n actorSubjectId: text(\"actor_subject_id\"),\n actorAttemptId: uuid(\"actor_attempt_id\"),\n action: text(\"action\").notNull(),\n targetSessionId: uuid(\"target_session_id\"),\n targetTurnId: uuid(\"target_turn_id\"),\n operationKey: text(\"operation_key\").notNull(),\n canonicalRequestHash: text(\"canonical_request_hash\").notNull(),\n appliedControlRevision: bigint(\"applied_control_revision\", {\n mode: \"number\",\n }),\n appliedQueueVersion: integer(\"applied_queue_version\"),\n appliedTurnVersion: integer(\"applied_turn_version\"),\n appliedDraftRevision: bigint(\"applied_draft_revision\", { mode: \"number\" }),\n result: jsonb(\"result\").$type<Record<string, unknown>>().notNull().default({}),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"session_command_receipts_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n actorAttempt: foreignKey({\n name: \"session_command_receipts_actor_attempt_fk\",\n columns: [table.workspaceId, table.actorAttemptId],\n foreignColumns: [sessionTurnAttempts.workspaceId, sessionTurnAttempts.id],\n }).onDelete(\"restrict\"),\n targetSession: foreignKey({\n name: \"session_command_receipts_target_session_fk\",\n columns: [table.workspaceId, table.targetSessionId],\n foreignColumns: [sessions.workspaceId, sessions.id],\n }).onDelete(\"restrict\"),\n targetTurn: foreignKey({\n name: \"session_command_receipts_target_turn_fk\",\n columns: [table.workspaceId, table.targetTurnId],\n foreignColumns: [sessionTurns.workspaceId, sessionTurns.id],\n }).onDelete(\"restrict\"),\n workspaceIdentity: uniqueIndex(\"session_command_receipts_workspace_id_uq\").on(\n table.workspaceId,\n table.id,\n ),\n targetCreated: index(\"session_command_receipts_target_created_idx\").on(\n table.workspaceId,\n table.targetSessionId,\n table.createdAt,\n ),\n goalUpdateOperation: uniqueIndex(\"session_command_receipts_goal_update_operation_uq\")\n .on(table.workspaceId, table.action, table.targetSessionId, table.operationKey)\n .where(sql`${table.action} = 'goal.update'`),\n actorValid: check(\n \"session_command_receipts_actor_check\",\n sql`(\n ${table.actorType} = 'agent_attempt'\n and ${table.actorAttemptId} is not null\n and ${table.actorSubjectId} is null\n ) or (\n ${table.actorType} in ('human', 'operator', 'service')\n and ${table.actorSubjectId} is not null\n and ${table.actorAttemptId} is null\n )`,\n ),\n }),\n);\n\n// One workspace-scoped durable invalidation per committed control revision.\n// This is deliberately separate from conversation/session events: a parent or\n// workspace Pause can change thousands of effective projections without\n// manufacturing one event (or queue row) per descendant.\nexport const workspaceControlEvents = pgTable(\n \"workspace_control_events\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n revision: bigint(\"revision\", { mode: \"number\" }).notNull(),\n scope: text(\"scope\").notNull(),\n rootSessionId: uuid(\"root_session_id\"),\n action: text(\"action\").notNull(),\n automatic: boolean(\"automatic\").notNull().default(false),\n reason: text(\"reason\"),\n reasonOriginalBytes: integer(\"reason_original_bytes\"),\n actor: text(\"actor\").notNull(),\n // Null is the rolling-upgrade shape for untouched, already-bounded legacy\n // rows. New writes and rewritten poison rows carry exact source byte facts.\n actorOriginalBytes: integer(\"actor_original_bytes\"),\n occurredAt: timestamp(\"occurred_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"workspace_control_events_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n rootSession: foreignKey({\n name: \"workspace_control_events_root_session_fk\",\n columns: [table.workspaceId, table.rootSessionId],\n foreignColumns: [sessions.workspaceId, sessions.id],\n }).onDelete(\"restrict\"),\n workspaceRevision: uniqueIndex(\"workspace_control_events_workspace_revision_uq\").on(\n table.workspaceId,\n table.revision,\n ),\n revisionValid: check(\"workspace_control_events_revision_check\", sql`${table.revision} > 0`),\n shapeValid: check(\n \"workspace_control_events_shape_check\",\n sql`(${table.scope} = 'workspace' and ${table.rootSessionId} is null)\n or (${table.scope} = 'session' and ${table.rootSessionId} is not null)`,\n ),\n actionValid: check(\n \"workspace_control_events_action_check\",\n sql`${table.action} in ('pause', 'resume')`,\n ),\n }),\n);\n\n// An interruption is an independently durable request against an exact live\n// attempt. Multiple Pause/Steer causes coexist; no scalar session field owns\n// delivery or settlement.\nexport const sessionAttemptInterruptions = pgTable(\n \"session_attempt_interruptions\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n sessionId: uuid(\"session_id\").notNull(),\n operationId: uuid(\"operation_id\").notNull(),\n attemptId: uuid(\"attempt_id\").notNull(),\n kind: text(\"kind\").notNull(),\n controlRevision: bigint(\"control_revision\", { mode: \"number\" }).notNull(),\n state: text(\"state\").notNull().default(\"pending\"),\n requestedAt: timestamp(\"requested_at\", { withTimezone: true }).notNull().defaultNow(),\n deliveredAt: timestamp(\"delivered_at\", { withTimezone: true }),\n acknowledgedAt: timestamp(\"acknowledged_at\", { withTimezone: true }),\n settledAt: timestamp(\"settled_at\", { withTimezone: true }),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"session_attempt_interruptions_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n workspaceSession: foreignKey({\n name: \"session_attempt_interruptions_workspace_session_fk\",\n columns: [table.workspaceId, table.sessionId],\n foreignColumns: [sessions.workspaceId, sessions.id],\n }).onDelete(\"restrict\"),\n operation: foreignKey({\n name: \"session_attempt_interruptions_operation_fk\",\n columns: [table.workspaceId, table.operationId],\n foreignColumns: [sessionCommandReceipts.workspaceId, sessionCommandReceipts.id],\n }).onDelete(\"restrict\"),\n attempt: foreignKey({\n name: \"session_attempt_interruptions_attempt_fk\",\n columns: [table.workspaceId, table.attemptId],\n foreignColumns: [sessionTurnAttempts.workspaceId, sessionTurnAttempts.id],\n }).onDelete(\"restrict\"),\n operationAttempt: uniqueIndex(\"session_attempt_interruptions_operation_attempt_uq\").on(\n table.operationId,\n table.attemptId,\n ),\n unsettled: index(\"session_attempt_interruptions_unsettled_idx\")\n .on(table.workspaceId, table.sessionId, table.requestedAt)\n .where(sql`${table.state} in ('pending', 'delivered', 'acknowledged')`),\n kindValid: check(\n \"session_attempt_interruptions_kind_check\",\n sql`${table.kind} in ('session_pause', 'workspace_pause', 'steer', 'maintenance')`,\n ),\n stateValid: check(\n \"session_attempt_interruptions_state_check\",\n sql`${table.state} in ('pending', 'delivered', 'acknowledged', 'settled', 'rejected_stale')`,\n ),\n }),\n);\n\n// Private, authenticated-subject composer truth. Editing a queued prompt and\n// restoring it here is one transaction; human drafts are never agent-visible.\nexport const composerDrafts = pgTable(\n \"composer_drafts\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n sessionId: uuid(\"session_id\").notNull(),\n subjectId: text(\"subject_id\").notNull(),\n revision: bigint(\"revision\", { mode: \"number\" }).notNull().default(1),\n text: text(\"text\").notNull().default(\"\"),\n resources: jsonb(\"resources\").$type<unknown[]>().notNull().default([]),\n tools: jsonb(\"tools\").$type<unknown[]>().notNull().default([]),\n toolsProvided: boolean(\"tools_provided\").notNull().default(false),\n model: text(\"model\").notNull(),\n reasoningEffort: text(\"reasoning_effort\").notNull(),\n latencyMode: text(\"latency_mode\").notNull().default(\"standard\"),\n sourceTurnId: uuid(\"source_turn_id\"),\n sourceTurnVersion: integer(\"source_turn_version\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"composer_drafts_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n workspaceSession: foreignKey({\n name: \"composer_drafts_workspace_session_fk\",\n columns: [table.workspaceId, table.sessionId],\n foreignColumns: [sessions.workspaceId, sessions.id],\n }).onDelete(\"cascade\"),\n sourceTurn: foreignKey({\n name: \"composer_drafts_source_turn_fk\",\n columns: [table.workspaceId, table.sourceTurnId],\n foreignColumns: [sessionTurns.workspaceId, sessionTurns.id],\n }).onDelete(\"restrict\"),\n subjectSession: uniqueIndex(\"composer_drafts_subject_session_uq\").on(\n table.workspaceId,\n table.sessionId,\n table.subjectId,\n ),\n subjectValid: check(\n \"composer_drafts_subject_check\",\n sql`length(btrim(${table.subjectId})) > 0`,\n ),\n revisionValid: check(\"composer_drafts_revision_check\", sql`${table.revision} >= 1`),\n latencyModeValid: check(\n \"composer_drafts_latency_mode_check\",\n sql`${table.latencyMode} in ('standard', 'priority', 'fast')`,\n ),\n }),\n);\n\n// Private pre-session composer truth. It is separate from composerDrafts so\n// the established-session table keeps its mandatory session foreign key.\nexport const newSessionDrafts = pgTable(\n \"new_session_drafts\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n subjectId: text(\"subject_id\").notNull(),\n revision: bigint(\"revision\", { mode: \"number\" }).notNull().default(1),\n text: text(\"text\").notNull().default(\"\"),\n resources: jsonb(\"resources\").$type<unknown[]>().notNull().default([]),\n tools: jsonb(\"tools\").$type<unknown[]>().notNull().default([]),\n model: text(\"model\").notNull(),\n reasoningEffort: text(\"reasoning_effort\").notNull(),\n latencyMode: text(\"latency_mode\").notNull().default(\"standard\"),\n sessionOptions: jsonb(\"session_options\").$type<Record<string, unknown>>().notNull().default({}),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"new_session_drafts_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n subjectWorkspace: uniqueIndex(\"new_session_drafts_subject_workspace_uq\").on(\n table.workspaceId,\n table.subjectId,\n ),\n subjectValid: check(\n \"new_session_drafts_subject_check\",\n sql`length(btrim(${table.subjectId})) > 0`,\n ),\n revisionValid: check(\"new_session_drafts_revision_check\", sql`${table.revision} >= 1`),\n latencyModeValid: check(\n \"new_session_drafts_latency_mode_check\",\n sql`${table.latencyMode} in ('standard', 'priority', 'fast')`,\n ),\n }),\n);\n\nexport const sessionSystemUpdates = pgTable(\n \"session_system_updates\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n sessionId: uuid(\"session_id\")\n .notNull()\n .references(() => sessions.id, { onDelete: \"cascade\" }),\n kind: text(\"kind\").notNull(),\n classification: text(\"classification\").notNull().default(\"info\"),\n sourceId: text(\"source_id\").notNull(),\n dedupeKey: text(\"dedupe_key\").notNull(),\n summary: text(\"summary\").notNull(),\n payload: jsonb(\"payload\").$type<Record<string, unknown>>().notNull().default({}),\n lineage: jsonb(\"lineage\").$type<Record<string, unknown>>().notNull().default({}),\n // Private immutable authority frozen when this machine input is accepted.\n // Public projections intentionally omit connection ids and owner subjects.\n personalConnectionDelegations: jsonb(\"personal_connection_delegations\")\n .$type<McpPersonalConnectionDelegation[]>()\n .notNull()\n .default([]),\n // pending is visible queue truth; delivered means its exact model-memory\n // batch was durably claimed. Terminal cancellation/supersession is explicit.\n state: text(\"state\").notNull().default(\"pending\"),\n deliveredTurnId: uuid(\"delivered_turn_id\").references(() => sessionTurns.id, {\n onDelete: \"set null\",\n }),\n // Migration owns the forward FK to session_history_items, declared later.\n // Every member of one claimed batch points at the exact model-memory row.\n deliveredHistoryItemId: uuid(\"delivered_history_item_id\"),\n deliveredAt: timestamp(\"delivered_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n kindValid: check(\n \"system_updates_kind_check\",\n sql`${table.kind} in ('scheduled_occurrence', 'goal_continuation', 'agent_message', 'agent_steer_instruction', 'child_terminal_result')`,\n ),\n payloadKindValid: check(\n \"system_updates_payload_kind_check\",\n sql`${table.payload} ->> 'type' = ${table.kind}`,\n ),\n stateValid: check(\n \"system_updates_state_check\",\n sql`${table.state} in ('pending', 'delivered', 'cancelled', 'superseded', 'failed')`,\n ),\n dedupe: uniqueIndex(\"session_system_updates_dedupe_uq\").on(\n table.workspaceId,\n table.sessionId,\n table.dedupeKey,\n ),\n pending: index(\"session_system_updates_pending_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.state,\n table.createdAt,\n ),\n onePendingSteer: uniqueIndex(\"session_system_updates_one_pending_steer_idx\")\n .on(table.workspaceId, table.sessionId)\n .where(sql`${table.kind} = 'agent_steer_instruction' and ${table.state} = 'pending'`),\n deliveryHistoryValid: check(\n \"session_system_updates_delivery_history_check\",\n sql`(\n (${table.state} = 'delivered' and ${table.deliveredHistoryItemId} is not null)\n or\n (${table.state} <> 'delivered' and ${table.deliveredHistoryItemId} is null)\n )`,\n ),\n }),\n);\n\n/**\n * Durable child-terminal producer outbox. The source terminal transaction\n * inserts this row; fan-in delivery marks it delivered inside\n * addSessionSystemUpdateWithSourceMutation. A bounded reconciler may retry a\n * committed row after any worker/process death without duplicating a member.\n */\nexport const sessionSystemUpdateOutbox = pgTable(\n \"session_system_update_outbox\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n sourceSessionId: uuid(\"source_session_id\")\n .notNull()\n .references(() => sessions.id, { onDelete: \"cascade\" }),\n targetSessionId: uuid(\"target_session_id\")\n .notNull()\n .references(() => sessions.id, { onDelete: \"cascade\" }),\n dedupeKey: text(\"dedupe_key\").notNull(),\n kind: text(\"kind\").notNull(),\n classification: text(\"classification\").notNull(),\n sourceId: text(\"source_id\").notNull(),\n summary: text(\"summary\").notNull(),\n payload: jsonb(\"payload\").$type<Record<string, unknown>>().notNull().default({}),\n lineage: jsonb(\"lineage\").$type<Record<string, unknown>>().notNull().default({}),\n // Exact private authority copied from the causal parent turn in the source\n // terminal transaction. Delivery retries cannot replace this snapshot.\n personalConnectionDelegations: jsonb(\"personal_connection_delegations\")\n .$type<McpPersonalConnectionDelegation[]>()\n .notNull()\n .default([]),\n status: text(\"status\").notNull().default(\"pending\"),\n attempts: integer(\"attempts\").notNull().default(0),\n updateId: uuid(\"update_id\"),\n lastError: text(\"last_error\"),\n deliveredAt: timestamp(\"delivered_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n kindValid: check(\n \"system_update_outbox_kind_check\",\n sql`${table.kind} = 'child_terminal_result'`,\n ),\n payloadKindValid: check(\n \"system_update_outbox_payload_kind_check\",\n sql`${table.payload} ->> 'type' = 'child_terminal_result'`,\n ),\n dedupe: uniqueIndex(\"session_system_update_outbox_dedupe_uq\").on(\n table.workspaceId,\n table.dedupeKey,\n ),\n pending: index(\"session_system_update_outbox_pending_idx\").on(table.status, table.createdAt),\n }),\n);\n\n/**\n * Transactional delivery ledger for session-workflow wakeups. Postgres owns\n * work eligibility; Temporal signals are only nudges. One coalescing row per\n * session makes a committed mutation repairable without periodically scanning\n * every session that happens to look runnable.\n */\nexport const sessionWorkflowWakeOutbox = pgTable(\n \"session_workflow_wake_outbox\",\n {\n sessionId: uuid(\"session_id\").primaryKey(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n temporalWorkflowId: text(\"temporal_workflow_id\").notNull(),\n wakeRevision: bigint(\"wake_revision\", { mode: \"number\" }).notNull().default(1),\n deliveredRevision: bigint(\"delivered_revision\", { mode: \"number\" }).notNull().default(0),\n controlRevision: bigint(\"control_revision\", { mode: \"number\" }).notNull().default(0),\n reason: text(\"reason\").notNull(),\n attempts: integer(\"attempts\").notNull().default(0),\n nextAttemptAt: timestamp(\"next_attempt_at\", { withTimezone: true }).notNull().defaultNow(),\n lastError: text(\"last_error\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n revisionValid: check(\n \"session_workflow_wake_outbox_revision_check\",\n sql`${table.wakeRevision} > 0 and ${table.deliveredRevision} >= 0 and ${table.deliveredRevision} <= ${table.wakeRevision}`,\n ),\n revisionSafe: check(\n \"session_workflow_wake_outbox_revision_safe_check\",\n sql`${table.wakeRevision} <= 9007199254740991 and ${table.deliveredRevision} <= 9007199254740991`,\n ),\n controlRevisionValid: check(\n \"session_workflow_wake_outbox_control_revision_check\",\n sql`${table.controlRevision} >= 0 and ${table.controlRevision} <= ${table.wakeRevision} and ${table.controlRevision} <= 9007199254740991`,\n ),\n workspaceAccount: foreignKey({\n name: \"session_workflow_wake_outbox_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n workspaceSessionFk: foreignKey({\n name: \"session_workflow_wake_outbox_workspace_session_fk\",\n columns: [table.workspaceId, table.sessionId],\n foreignColumns: [sessions.workspaceId, sessions.id],\n }).onDelete(\"cascade\"),\n workspaceSession: uniqueIndex(\"session_workflow_wake_outbox_workspace_session_uq\").on(\n table.workspaceId,\n table.sessionId,\n ),\n pending: index(\"session_workflow_wake_outbox_pending_idx\")\n .on(table.nextAttemptAt, table.updatedAt, table.sessionId)\n .where(sql`${table.wakeRevision} > ${table.deliveredRevision}`),\n }),\n);\n\nexport const sessionGoals = pgTable(\n \"session_goals\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n sessionId: uuid(\"session_id\")\n .notNull()\n .references(() => sessions.id, { onDelete: \"cascade\" }),\n status: text(\"status\").notNull().default(\"active\"), // active | paused | completed\n text: text(\"text\").notNull(),\n successCriteria: text(\"success_criteria\"),\n evidence: text(\"evidence\"), // set by goal_complete\n rationale: text(\"rationale\"), // set by goal_pause\n pausedReason: text(\"paused_reason\"), // agent | user_pause | api | no_progress | max_auto_continuations | limits\n createdBy: text(\"created_by\").notNull().default(\"api\"), // api | agent | scheduled_task\n version: integer(\"version\").notNull().default(1), // bumped on every set/update; progress signal\n autoContinuations: integer(\"auto_continuations\").notNull().default(0),\n noProgressStreak: integer(\"no_progress_streak\").notNull().default(0),\n maxAutoContinuations: integer(\"max_auto_continuations\"), // per-goal override; a configured settings cap (if any) remains the hard ceiling\n lastContinuationTurnId: uuid(\"last_continuation_turn_id\"),\n versionAtLastContinuation: integer(\"version_at_last_continuation\"),\n // Postgres owns the continuation obligation. Terminal settlement advances\n // wakeRevision in the same transaction that makes the session idle;\n // materialization advances observedRevision only alongside the one typed\n // update, timeline events, usage row, and workflow-wake outbox row.\n // Temporal signals and workflow history are replaceable nudges over these\n // monotonic revisions.\n continuationWakeRevision: bigint(\"continuation_wake_revision\", { mode: \"number\" })\n .notNull()\n .default(0),\n continuationObservedRevision: bigint(\"continuation_observed_revision\", { mode: \"number\" })\n .notNull()\n .default(0),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>().notNull().default({}),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceIdentity: uniqueIndex(\"session_goals_workspace_id_idx\").on(\n table.workspaceId,\n table.id,\n ),\n workspaceSession: uniqueIndex(\"session_goals_workspace_session_idx\").on(\n table.workspaceId,\n table.sessionId,\n ),\n status: index(\"session_goals_workspace_status_idx\").on(table.workspaceId, table.status),\n continuationRevisionValid: check(\n \"session_goals_continuation_revision_check\",\n sql`${table.continuationWakeRevision} >= 0 and ${table.continuationObservedRevision} >= 0 and ${table.continuationObservedRevision} <= ${table.continuationWakeRevision} and ${table.continuationWakeRevision} <= 9007199254740991 and ${table.continuationObservedRevision} <= 9007199254740991`,\n ),\n }),\n);\n\n// credential allocator: one durable, coalescing capacity waiter per session. The row is both\n// the wait state and the commit->signal outbox: capacity mutations increment\n// wakeRevision in the SAME transaction as the mutation, while the session\n// workflow advances observedWakeRevision only after it has re-evaluated the\n// allocator. Temporal signals are therefore repairable nudges rather than the\n// source of truth. No credential material or provider response is stored here.\n//\n// The session/goal/turn foreign keys are declared in migration 0053 so the\n// table keeps the same composite workspace-integrity posture as credential\n// leases. Control is evaluated independently at admission and never changes a\n// capacity waiter's identity. policy filter supplies policyHash when accepted-turn\n// pool routing lands.\nexport const codexCapacityWaiters = pgTable(\n \"codex_capacity_waiters\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n sessionId: uuid(\"session_id\").notNull(),\n goalId: uuid(\"goal_id\"),\n blockedTurnId: uuid(\"blocked_turn_id\").notNull(),\n blockedTurnGeneration: integer(\"blocked_turn_generation\").notNull(),\n workflowId: text(\"workflow_id\").notNull(),\n generation: integer(\"generation\").notNull().default(1),\n status: text(\"status\").notNull().default(\"waiting\"), // waiting | resumed | superseded\n goalVersion: integer(\"goal_version\"),\n policyHash: text(\"policy_hash\"),\n earliestResetAt: timestamp(\"earliest_reset_at\", { withTimezone: true }),\n nextCheckAt: timestamp(\"next_check_at\", { withTimezone: true }).notNull(),\n resetKind: text(\"reset_kind\").notNull(), // authoritative | bounded_refresh\n refreshAttempt: integer(\"refresh_attempt\").notNull().default(0),\n // Coalescing outbox generation. Every eligibility-affecting mutation bumps\n // wakeRevision. Duplicate/lost Temporal signals are harmless because only\n // the row-locked evaluator moves observedWakeRevision and may enqueue work.\n wakeRevision: integer(\"wake_revision\").notNull().default(1),\n observedWakeRevision: integer(\"observed_wake_revision\").notNull().default(0),\n lastWakeReason: text(\"last_wake_reason\").notNull().default(\"capacity_wait_armed\"),\n resumedUpdateId: uuid(\"resumed_update_id\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceSession: uniqueIndex(\"codex_capacity_waiters_workspace_session_idx\").on(\n table.workspaceId,\n table.sessionId,\n ),\n workspaceId: uniqueIndex(\"codex_capacity_waiters_workspace_id_idx\").on(\n table.workspaceId,\n table.id,\n ),\n pending: index(\"codex_capacity_waiters_pending_idx\").on(\n table.workspaceId,\n table.status,\n table.nextCheckAt,\n ),\n wakeRepair: index(\"codex_capacity_waiters_wake_repair_idx\").on(\n table.status,\n table.wakeRevision,\n table.observedWakeRevision,\n ),\n }),\n);\n\nexport const sessionEvents = pgTable(\n \"session_events\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n sessionId: uuid(\"session_id\")\n .notNull()\n .references(() => sessions.id, { onDelete: \"cascade\" }),\n turnId: uuid(\"turn_id\"),\n turnGeneration: integer(\"turn_generation\"),\n turnAttemptId: uuid(\"turn_attempt_id\"),\n turnAssociation: text(\"turn_association\"),\n duplicateOfEventId: uuid(\"duplicate_of_event_id\"),\n duplicateReason: text(\"duplicate_reason\"),\n sequence: integer(\"sequence\").notNull(),\n type: text(\"type\").notNull(),\n payload: jsonb(\"payload\").$type<unknown>().notNull().default({}),\n clientEventId: text(\"client_event_id\"),\n producerId: text(\"producer_id\"),\n producerSeq: integer(\"producer_seq\"),\n occurredAt: timestamp(\"occurred_at\", { withTimezone: true }).notNull().defaultNow(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAttempt: foreignKey({\n name: \"session_events_workspace_attempt_fk\",\n columns: [table.workspaceId, table.turnAttemptId],\n foreignColumns: [sessionTurnAttempts.workspaceId, sessionTurnAttempts.id],\n }).onDelete(\"restrict\"),\n sessionSequence: uniqueIndex(\"session_events_workspace_session_sequence_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.sequence,\n ),\n clientEvent: uniqueIndex(\"session_events_workspace_client_event_idx\")\n .on(table.workspaceId, table.sessionId, table.clientEventId)\n .where(sql`${table.clientEventId} is not null`),\n producer: uniqueIndex(\"session_events_workspace_producer_idx\")\n .on(table.workspaceId, table.sessionId, table.producerId, table.producerSeq)\n .where(sql`${table.producerId} is not null and ${table.producerSeq} is not null`),\n sessionCreated: index(\"session_events_workspace_session_created_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.createdAt,\n ),\n sessionTypeSequence: index(\"session_events_workspace_session_type_sequence_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.type,\n table.sequence,\n ),\n monitoringTail: index(\"session_events_workspace_session_monitoring_tail_idx\")\n .on(table.workspaceId, table.sessionId, table.sequence)\n .where(\n sql`${table.type} not in ('agent.message.delta', 'agent.reasoning.delta', 'sandbox.command.output.delta', 'terminal.pty.output.delta')`,\n ),\n duplicateOfEvent: index(\"session_events_duplicate_of_event_idx\").on(table.duplicateOfEventId),\n payloadBytes: check(\n \"session_events_payload_bytes_check\",\n sql`octet_length(${table.payload}::text) <= 65536`,\n ),\n typeBytes: check(\n \"session_events_type_bytes_check\",\n sql`octet_length(${table.type}) <= 256 and position(E'\\n' in ${table.type}) = 0 and position(E'\\r' in ${table.type}) = 0`,\n ),\n clientEventIdBytes: check(\n \"session_events_client_event_id_bytes_check\",\n sql`${table.clientEventId} is null or octet_length(${table.clientEventId}) <= 1024`,\n ),\n producerIdBytes: check(\n \"session_events_producer_id_bytes_check\",\n sql`${table.producerId} is null or octet_length(${table.producerId}) <= 1024`,\n ),\n turnAssociationBytes: check(\n \"session_events_turn_association_bytes_check\",\n sql`${table.turnAssociation} is null or octet_length(${table.turnAssociation}) <= 64`,\n ),\n duplicateReasonBytes: check(\n \"session_events_duplicate_reason_bytes_check\",\n sql`${table.duplicateReason} is null or octet_length(${table.duplicateReason}) <= 4096`,\n ),\n }),\n);\n\nexport const agentRunStates = pgTable(\"agent_run_states\", {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n sessionId: uuid(\"session_id\")\n .notNull()\n .references(() => sessions.id, { onDelete: \"cascade\" }),\n turnId: uuid(\"turn_id\").references(() => sessionTurns.id, {\n onDelete: \"set null\",\n }),\n stateVersion: integer(\"state_version\").notNull(),\n serializedRunState: text(\"serialized_run_state\").notNull(),\n pendingApprovals: jsonb(\"pending_approvals\").$type<unknown[]>().notNull().default([]),\n // Exact provider rejection marks the latest current-turn receipt only when it\n // was part of the rejected request. The serialized receipt remains durable;\n // recovery builds a temporary view without unusable opaque artifacts.\n providerArtifactInvalidatedAt: timestamp(\"provider_artifact_invalidated_at\", {\n withTimezone: true,\n }),\n providerArtifactInvalidationReason: text(\"provider_artifact_invalidation_reason\"),\n providerArtifactInvalidatedByAttemptId: uuid(\"provider_artifact_invalidated_by_attempt_id\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n});\n\n// Durable structured human-input requests. The creation attempt is immutable\n// provenance; legitimate resume attempts are newer owners of the SAME logical\n// turn. Settlement therefore fences on the active session/turn plus the\n// request's turn generation, never on creationAttemptId.\nexport const sessionHumanInputRequests = pgTable(\n \"session_human_input_requests\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n sessionId: uuid(\"session_id\").notNull(),\n turnId: uuid(\"turn_id\").notNull(),\n turnGeneration: integer(\"turn_generation\").notNull(),\n creationAttemptId: uuid(\"creation_attempt_id\").notNull(),\n toolCallId: text(\"tool_call_id\").notNull(),\n status: text(\"status\").notNull().default(\"pending\"),\n questions: jsonb(\"questions\").$type<HumanInputQuestion[]>().notNull(),\n allowSkip: boolean(\"allow_skip\").notNull().default(false),\n response: jsonb(\"response\").$type<HumanInputResponse>(),\n respondedBy: text(\"responded_by\"),\n respondedAt: timestamp(\"responded_at\", { withTimezone: true }),\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n creationAttemptOwner: foreignKey({\n name: \"session_human_input_requests_creation_attempt_fk\",\n columns: [\n table.accountId,\n table.workspaceId,\n table.sessionId,\n table.turnId,\n table.creationAttemptId,\n ],\n foreignColumns: [\n sessionTurnAttempts.accountId,\n sessionTurnAttempts.workspaceId,\n sessionTurnAttempts.sessionId,\n sessionTurnAttempts.turnId,\n sessionTurnAttempts.id,\n ],\n }).onDelete(\"cascade\"),\n toolCall: uniqueIndex(\"session_human_input_requests_tool_call_uq\").on(\n table.workspaceId,\n table.sessionId,\n table.turnId,\n table.toolCallId,\n ),\n pendingSession: index(\"session_human_input_requests_pending_session_idx\")\n .on(table.workspaceId, table.sessionId, table.createdAt, table.id)\n .where(sql`${table.status} = 'pending'`),\n pendingExpiry: index(\"session_human_input_requests_pending_expiry_idx\")\n .on(table.expiresAt, table.id)\n .where(sql`${table.status} = 'pending' and ${table.expiresAt} is not null`),\n status: check(\n \"session_human_input_requests_status_check\",\n sql`${table.status} in ('pending','answered','skipped','expired','cancelled')`,\n ),\n generation: check(\n \"session_human_input_requests_generation_check\",\n sql`${table.turnGeneration} > 0`,\n ),\n toolCallBytes: check(\n \"session_human_input_requests_tool_call_bytes_check\",\n sql`octet_length(${table.toolCallId}) between 1 and 1024`,\n ),\n questionsBytes: check(\n \"session_human_input_requests_questions_bytes_check\",\n sql`octet_length(${table.questions}::text) <= 49152`,\n ),\n responseBytes: check(\n \"session_human_input_requests_response_bytes_check\",\n sql`${table.response} is null or octet_length(${table.response}::text) <= 49152`,\n ),\n actorBytes: check(\n \"session_human_input_requests_actor_bytes_check\",\n sql`${table.respondedBy} is null or octet_length(${table.respondedBy}) <= 1024`,\n ),\n }),\n);\n\n// Conversation truth: ordered, verbatim SDK input items (issue #35). The\n// model-facing memory store — unredacted and replay-ready. session_events\n// remains the redacted human/audit timeline.\nexport const sessionHistoryItems = pgTable(\n \"session_history_items\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n sessionId: uuid(\"session_id\")\n .notNull()\n .references(() => sessions.id, { onDelete: \"cascade\" }),\n turnId: uuid(\"turn_id\").references(() => sessionTurns.id, {\n onDelete: \"set null\",\n }),\n // Numeric (not integer) so the synthetic compaction-summary row can be\n // inserted at a FRACTIONAL position (boundaryPosition - 0.5) that sorts ahead\n // of the kept tail without colliding with — and thus overwriting — the real\n // prefix row at boundaryPosition - 1. Normally-appended rows keep whole-number\n // positions; only the summary uses the half-step. `mode: \"number\"` maps the\n // postgres.js string back to a JS number so every reader stays numeric.\n position: numeric(\"position\", { mode: \"number\" }).notNull(),\n item: jsonb(\"item\").$type<Record<string, unknown>>().notNull(),\n // Live-row flag for client-side context compaction. The read path selects\n // only active rows; a compaction supersedes the summarized prefix (sets this\n // false — never deletes, so the full transcript stays as an audit trail) and\n // inserts ONE synthetic active summary row at the boundary. Defaults true so\n // every existing and normally-appended row is live.\n active: boolean(\"active\").notNull().default(true),\n // An exact provider 400 can prove that the request's active opaque artifact\n // set is no longer usable. Keep each canonical item immutable, but record the\n // attempt-fenced rejection on the exact candidate row IDs so later model\n // reads build a temporary projection. No FK: the receipt must outlive\n // operational attempt retention.\n providerArtifactInvalidatedAt: timestamp(\"provider_artifact_invalidated_at\", {\n withTimezone: true,\n }),\n providerArtifactInvalidationReason: text(\"provider_artifact_invalidation_reason\"),\n providerArtifactInvalidatedByAttemptId: uuid(\"provider_artifact_invalidated_by_attempt_id\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n positionIdx: uniqueIndex(\"session_history_items_position_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.position,\n ),\n }),\n);\n\n// Turn-lineage ledger for a tool call that the SDK emitted but has not yet\n// produced a durably reconciled result. The raw call item is model-facing truth\n// (not the redacted session-event projection). The attempt/generation identify\n// where the call originated, but the receipt survives an approval resume into a\n// newer attempt of the same logical turn. Turn-ending transactions\n// consume these rows atomically and append a valid interrupted result so a\n// recovered model sees an explicit unknown outcome instead of a silently\n// dropped call.\nexport const sessionPendingToolCalls = pgTable(\n \"session_pending_tool_calls\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n sessionId: uuid(\"session_id\")\n .notNull()\n .references(() => sessions.id, { onDelete: \"cascade\" }),\n turnId: uuid(\"turn_id\")\n .notNull()\n .references(() => sessionTurns.id, { onDelete: \"cascade\" }),\n executionGeneration: integer(\"execution_generation\").notNull(),\n attemptId: uuid(\"attempt_id\").notNull(),\n callId: text(\"call_id\").notNull(),\n callType: text(\"call_type\").notNull(),\n callItem: jsonb(\"call_item\").$type<Record<string, unknown>>().notNull(),\n modelToolOutputTruncationTokens: integer(\"model_tool_output_truncation_tokens\"),\n resultItem: jsonb(\"result_item\").$type<Record<string, unknown>>(),\n resultRecordedAt: timestamp(\"result_recorded_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceAttempt: foreignKey({\n name: \"pending_tool_calls_workspace_attempt_fk\",\n columns: [table.workspaceId, table.attemptId],\n foreignColumns: [sessionTurnAttempts.workspaceId, sessionTurnAttempts.id],\n }).onDelete(\"restrict\"),\n turnCall: uniqueIndex(\"session_pending_tool_calls_turn_call_idx\").on(\n table.workspaceId,\n table.turnId,\n table.callId,\n ),\n sessionTurn: index(\"session_pending_tool_calls_session_turn_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.turnId,\n ),\n }),\n);\n\n// Sandbox recovery descriptor, decoupled from the RunState blob: the small\n// versioned envelope (provider handle / snapshot ref / manifest) needed to\n// reattach, restore, or rebuild the session's sandbox on its next turn.\nexport const sandboxSessionEnvelopes = pgTable(\n \"sandbox_session_envelopes\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n sessionId: uuid(\"session_id\")\n .notNull()\n .references(() => sessions.id, { onDelete: \"cascade\" }),\n envelope: jsonb(\"envelope\").$type<Record<string, unknown>>().notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n sessionIdx: uniqueIndex(\"sandbox_session_envelopes_session_idx\").on(\n table.workspaceId,\n table.sessionId,\n ),\n }),\n);\n\nexport const sandboxCheckpointArtifactStateValues = [\n \"candidate\",\n \"current\",\n \"previous\",\n \"delete_pending\",\n \"deleting\",\n \"delete_failed\",\n \"deleted\",\n] as const;\n\n/**\n * Durable ownership ledger for provider-native workspace checkpoints. These\n * rows intentionally have no cascading parent FK: a workspace/lease can vanish\n * before the provider object is deleted, and global GC still needs the exact\n * non-secret provider binding and object id after that deletion.\n */\nexport const sandboxCheckpointArtifacts = pgTable(\n \"sandbox_checkpoint_artifacts\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n sandboxGroupId: uuid(\"sandbox_group_id\").notNull(),\n sourceLeaseId: uuid(\"source_lease_id\").notNull(),\n sourceLeaseEpoch: integer(\"source_lease_epoch\").notNull(),\n sourceInstanceId: text(\"source_instance_id\"),\n sourceWorkspaceGeneration: integer(\"source_workspace_generation\"),\n provenance: text(\"provenance\", {\n enum: [\"native_capture\", \"legacy_provider_adopted\"],\n }).notNull(),\n providerBackend: text(\"provider_backend\").notNull(),\n providerBindingKey: text(\"provider_binding_key\").notNull(),\n providerBinding: jsonb(\"provider_binding\").$type<Record<string, unknown>>().notNull(),\n objectKind: text(\"object_kind\", {\n enum: [\"modal_filesystem_snapshot\", \"modal_directory_snapshot\"],\n }).notNull(),\n objectId: text(\"object_id\").notNull(),\n archiveBase64: text(\"archive_base64\").notNull(),\n archiveSha256: text(\"archive_sha256\").notNull(),\n archiveBytes: integer(\"archive_bytes\").notNull(),\n descriptor: jsonb(\"descriptor\").$type<Record<string, unknown>>().notNull(),\n descriptorRevision: text(\"descriptor_revision\").notNull(),\n state: text(\"state\", { enum: sandboxCheckpointArtifactStateValues })\n .notNull()\n .default(\"candidate\"),\n deleteAfter: timestamp(\"delete_after\", { withTimezone: true }),\n deleteAttempts: integer(\"delete_attempts\").notNull().default(0),\n deleteClaimId: uuid(\"delete_claim_id\"),\n deleteClaimedAt: timestamp(\"delete_claimed_at\", { withTimezone: true }),\n lastDeleteError: text(\"last_delete_error\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n publishedAt: timestamp(\"published_at\", { withTimezone: true }),\n deletedAt: timestamp(\"deleted_at\", { withTimezone: true }),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n providerObject: uniqueIndex(\"sandbox_checkpoint_artifacts_provider_object_uq\").on(\n table.providerBackend,\n table.providerBindingKey,\n table.objectId,\n ),\n gc: index(\"sandbox_checkpoint_artifacts_gc_idx\")\n .on(table.deleteAfter, table.createdAt, table.id)\n .where(\n sql`${table.state} in (\n 'candidate', 'current', 'previous',\n 'delete_pending', 'delete_failed', 'deleting'\n )`,\n ),\n source: index(\"sandbox_checkpoint_artifacts_source_idx\").on(\n table.workspaceId,\n table.sandboxGroupId,\n table.sourceLeaseId,\n ),\n sourceValid: check(\n \"sandbox_checkpoint_artifacts_source_check\",\n sql`${table.sourceLeaseEpoch} >= 0\n and (\n (\n ${table.provenance} = 'native_capture'\n and ${table.sourceWorkspaceGeneration} is not null\n and ${table.sourceWorkspaceGeneration} >= 0\n and ${table.sourceInstanceId} is not null\n and octet_length(${table.sourceInstanceId}) between 1 and 512\n )\n or (\n ${table.provenance} = 'legacy_provider_adopted'\n and ${table.sourceWorkspaceGeneration} is null\n and ${table.sourceInstanceId} is null\n )\n )`,\n ),\n providerValid: check(\n \"sandbox_checkpoint_artifacts_provider_check\",\n sql`${table.providerBackend} = 'modal'\n and octet_length(${table.providerBindingKey}) between 1 and 1024\n and jsonb_typeof(${table.providerBinding}) = 'object'\n and ${table.providerBindingKey}::jsonb = ${table.providerBinding}\n and ${table.objectKind} in ('modal_filesystem_snapshot', 'modal_directory_snapshot')\n and octet_length(${table.objectId}) between 1 and 1024`,\n ),\n archiveValid: check(\n \"sandbox_checkpoint_artifacts_archive_check\",\n sql`${table.archiveBytes} > 0\n and octet_length(${table.archiveBase64}) > 0\n and ${table.archiveSha256} ~ '^[0-9a-f]{64}$'\n and jsonb_typeof(${table.descriptor}) = 'object'\n and octet_length(${table.descriptorRevision}) between 1 and 256`,\n ),\n stateValid: check(\n \"sandbox_checkpoint_artifacts_state_check\",\n sql`${table.state} in (\n 'candidate', 'current', 'previous', 'delete_pending',\n 'deleting', 'delete_failed', 'deleted'\n )`,\n ),\n deleteClaimValid: check(\n \"sandbox_checkpoint_artifacts_delete_claim_check\",\n sql`(${table.state} = 'deleting'\n and ${table.deleteClaimId} is not null\n and ${table.deleteClaimedAt} is not null)\n or (${table.state} <> 'deleting'\n and ${table.deleteClaimId} is null\n and ${table.deleteClaimedAt} is null)`,\n ),\n }),\n);\n\n// The 4 liveness states of the singleton lease. Exported so the query layer and\n// the stateless resume-by-id path share one source of truth for the domain.\nexport const sandboxLeaseLivenessValues = [\"cold\", \"warming\", \"warm\", \"draining\"] as const;\n\n// One row per GROUP: the SOLE enforcer of the strict-singleton-box invariant.\n// uniqueIndex(workspaceId, sandboxGroupId) + SELECT…FOR UPDATE + cold->warming\n// CAS + integer lease_epoch fence. Re-keyed to sandboxGroupId from the start\n// (addendum B.2) so today's 1:1 world (sandboxGroupId == session id, set in\n// 0018) is a behavior-preserving no-op. Mirrors the account/workspace FK chain\n// of sandboxSessionEnvelopes; sandboxGroupId is a BARE uuid (NOT an FK — the\n// value is a session id or an ancestor's, and an FK would let a founder's\n// deletion cascade-kill a box still in use by a spawned session).\nexport const sandboxLeases = pgTable(\n \"sandbox_leases\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n sandboxGroupId: uuid(\"sandbox_group_id\").notNull(),\n\n liveness: text(\"liveness\", { enum: sandboxLeaseLivenessValues }).notNull().default(\"cold\"),\n refcount: integer(\"refcount\").notNull().default(0),\n turnHolders: integer(\"turn_holders\").notNull().default(0),\n viewerHolders: integer(\"viewer_holders\").notNull().default(0),\n\n instanceId: text(\"instance_id\"),\n backend: text(\"backend\").notNull(),\n os: text(\"os\").notNull().default(\"linux\"),\n // The container IMAGE the group box runs (Modal image ref / docker image). A shared\n // box is SHARED STATE: all its sessions run the SAME filesystem, so they must run the\n // same image. This column stamps the image the live box was created with; a resume\n // whose resolved image DIFFERS is a conflict (B3): a solo holder requests a\n // capture-and-drain rotation; N-holders are rejected (SandboxImageConflictError). Nullable — a\n // legacy/cold row reads NULL = \"image unknown\", which never conflicts.\n image: text(\"image\"),\n // The frozen rig version the live box was created under (M3). Like `image`,\n // this is SHARED STATE: all the box's sessions run the same rig-baked setup,\n // so a resume resolving a DIFFERENT rig_version_id conflicts (a solo holder\n // requests capture-and-drain rotation; N-holders throw SandboxRigConflictError).\n // Nullable — a legacy/cold row or a rig-less session reads NULL = \"rig\n // unknown\", which never conflicts. No FK (symmetric with sandbox_group_id's\n // bare-uuid rationale: this lease outlives no single rig_versions row's RLS).\n rigVersionId: uuid(\"rig_version_id\"),\n dataPlaneUrl: text(\"data_plane_url\"),\n // The REAL PTY terminal (ttyd pty-ws) rides a SEPARATE provider tunnel (7681)\n // from the desktop noVNC (6080), so its resolved URL is cached independently.\n // Recorded under the epoch fence by recordLeaseTerminalDataPlaneUrl; reset to\n // null on every box re-key (warm-commit / fail / drain), symmetric with\n // data_plane_url.\n terminalDataPlaneUrl: text(\"terminal_data_plane_url\"),\n\n // integer (NOT bigint): the lease-epoch spike proved a raw int8 read returns a\n // JS STRING from postgres-js, breaking the strict epoch-fence comparison (it\n // was always-true → every turn fenced); int4 returns a JS number, the fix.\n // Epochs never approach 2^31, so the narrower type loses nothing.\n leaseEpoch: integer(\"lease_epoch\").notNull().default(0),\n\n // Monotonic mutation intent for the live workspace. Every acknowledged\n // filesystem-writing operation advances this under the exact lease epoch +\n // provider-instance fence BEFORE it reaches the provider. A verified\n // archive fold copies the exact captured value into archive_generation in\n // the same row update; equality is the only durable completeness proof.\n workspaceGeneration: integer(\"workspace_generation\").notNull().default(0),\n archiveGeneration: integer(\"archive_generation\"),\n // Provider-native capture may pause the live box. The exact claim is\n // acquired before provider I/O and cleared only after that capture settles;\n // new holders and workspace mutations fence on it. The SQL constraint also\n // requires the claimed generation to remain current, so an unaware writer\n // cannot advance generation through an active capture.\n archiveCaptureId: uuid(\"archive_capture_id\"),\n archiveCaptureGeneration: integer(\"archive_capture_generation\"),\n archiveCaptureStartedAt: timestamp(\"archive_capture_started_at\", {\n withTimezone: true,\n }),\n archiveCaptureDeadlineAt: timestamp(\"archive_capture_deadline_at\", {\n withTimezone: true,\n }),\n\n // The group box-envelope (the \"envelope split\" Critical): the small recovery\n // descriptor to resume()-by-id the group's box without a per-session join.\n resumeBackendId: text(\"resume_backend_id\"),\n resumeState: jsonb(\"resume_state\").$type<Record<string, unknown>>(),\n\n // Warm-time billing cursor: last_meter_at = accrual cursor; last_meter_tick =\n // idempotency tick (warm_seconds accrued idempotent on\n // (sandbox_group_id, lease_epoch, last_meter_tick) in P2.1).\n lastMeterAt: timestamp(\"last_meter_at\", { withTimezone: true }),\n lastMeterTick: integer(\"last_meter_tick\").notNull().default(0),\n\n providerCreatedAt: timestamp(\"provider_created_at\", { withTimezone: true }),\n providerDeadlineAt: timestamp(\"provider_deadline_at\", {\n withTimezone: true,\n }),\n rotationRequestedAt: timestamp(\"rotation_requested_at\", {\n withTimezone: true,\n }),\n rotationReason: text(\"rotation_reason\", {\n enum: [\"provider_deadline\", \"operator\"],\n }),\n // The SQL migration owns the two DEFERRABLE foreign keys and deferred\n // scope/state constraint triggers. Drizzle does not model deferrability, so\n // these remain bare UUIDs here rather than generating a stricter wrong FK.\n currentCheckpointArtifactId: uuid(\"current_checkpoint_artifact_id\"),\n previousCheckpointArtifactId: uuid(\"previous_checkpoint_artifact_id\"),\n\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }).notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n groupIdx: uniqueIndex(\"sandbox_leases_group_idx\").on(table.workspaceId, table.sandboxGroupId),\n scopedId: uniqueIndex(\"sandbox_leases_scoped_id_uq\").on(\n table.accountId,\n table.workspaceId,\n table.sandboxGroupId,\n table.id,\n ),\n accountWorkspaceId: uniqueIndex(\"sandbox_leases_account_workspace_id_uq\").on(\n table.accountId,\n table.workspaceId,\n table.id,\n ),\n reaperIdx: index(\"sandbox_leases_reaper_idx\")\n .on(table.expiresAt)\n .where(sql`${table.liveness} in ('warming','warm','draining')`),\n expiredDrainingInventory: index(\"sandbox_leases_expired_draining_inventory_idx\")\n .on(table.expiresAt, table.backend)\n .where(sql`${table.liveness} = 'draining'`),\n providerDeadline: index(\"sandbox_leases_provider_deadline_idx\")\n .on(table.providerDeadlineAt, table.id)\n .where(\n sql`${table.backend} = 'modal'\n and ${table.liveness} in ('warming', 'warm')\n and ${table.rotationRequestedAt} is null`,\n ),\n workspaceGenerationValid: check(\n \"sandbox_leases_workspace_generation_check\",\n sql`${table.workspaceGeneration} >= 0`,\n ),\n archiveGenerationValid: check(\n \"sandbox_leases_archive_generation_check\",\n sql`${table.archiveGeneration} is null\n or (${table.archiveGeneration} >= 0\n and ${table.archiveGeneration} <= ${table.workspaceGeneration})`,\n ),\n archiveCaptureValid: check(\n \"sandbox_leases_archive_capture_check\",\n sql`(\n ${table.archiveCaptureId} is null\n and ${table.archiveCaptureGeneration} is null\n and ${table.archiveCaptureStartedAt} is null\n and ${table.archiveCaptureDeadlineAt} is null\n ) or (\n ${table.archiveCaptureId} is not null\n and ${table.archiveCaptureGeneration} is not null\n and ${table.archiveCaptureGeneration} = ${table.workspaceGeneration}\n and ${table.archiveCaptureStartedAt} is not null\n and ${table.archiveCaptureDeadlineAt} > ${table.archiveCaptureStartedAt}\n )`,\n ),\n archiveCaptureDeadline: index(\"sandbox_leases_archive_capture_deadline_idx\")\n .on(table.archiveCaptureDeadlineAt, table.id)\n .where(sql`${table.archiveCaptureId} is not null`),\n providerDeadlineValid: check(\n \"sandbox_leases_provider_deadline_check\",\n sql`(${table.providerCreatedAt} is null and ${table.providerDeadlineAt} is null)\n or (${table.providerCreatedAt} is not null\n and ${table.providerDeadlineAt} is not null\n and ${table.providerDeadlineAt} > ${table.providerCreatedAt})`,\n ),\n rotationValid: check(\n \"sandbox_leases_rotation_check\",\n sql`(${table.rotationRequestedAt} is null and ${table.rotationReason} is null)\n or (${table.rotationRequestedAt} is not null\n and ${table.rotationReason} in ('provider_deadline', 'operator'))`,\n ),\n checkpointDistinct: check(\n \"sandbox_leases_checkpoint_distinct_check\",\n sql`${table.currentCheckpointArtifactId} is null\n or ${table.previousCheckpointArtifactId} is null\n or ${table.currentCheckpointArtifactId} <> ${table.previousCheckpointArtifactId}`,\n ),\n }),\n);\n\n// N rows per group: one per live holder. Makes release idempotent\n// (delete-my-row, never blind decrement) and lets the reaper recompute refcount.\nexport const sandboxLeaseHolders = pgTable(\n \"sandbox_lease_holders\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n leaseId: uuid(\"lease_id\")\n .notNull()\n .references(() => sandboxLeases.id, { onDelete: \"cascade\" }),\n kind: text(\"kind\", { enum: [\"turn\", \"viewer\", \"direct\", \"process\"] }).notNull(),\n holderId: text(\"holder_id\").notNull(),\n // The attributing session within the (possibly shared) group.\n subjectId: uuid(\"subject_id\"),\n lastHeartbeatAt: timestamp(\"last_heartbeat_at\", { withTimezone: true }).notNull().defaultNow(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n leaseScope: foreignKey({\n name: \"sandbox_lease_holders_lease_scope_fk\",\n columns: [table.accountId, table.workspaceId, table.leaseId],\n foreignColumns: [sandboxLeases.accountId, sandboxLeases.workspaceId, sandboxLeases.id],\n }).onDelete(\"cascade\"),\n holderIdx: uniqueIndex(\"sandbox_lease_holders_holder_idx\").on(\n table.leaseId,\n table.kind,\n table.holderId,\n ),\n staleIdx: index(\"sandbox_lease_holders_stale_idx\").on(table.kind, table.lastHeartbeatAt),\n leaseIdx: index(\"sandbox_lease_holders_lease_idx\").on(table.leaseId),\n }),\n);\n\nexport const sandboxWorkspaceMutationActorKindValues = [\"turn\", \"direct\", \"process\"] as const;\nexport const sandboxWorkspaceMutationHolderKindValues = [\"turn\", \"direct\", \"process\"] as const;\n\n// Durable admission ledger for every provider operation that may mutate a\n// persistable /workspace. The row is inserted atomically with the lease's\n// workspace_generation increment before the provider is invoked, then marked\n// physically settled after the provider promise resolves OR rejects. Capture\n// remains blocked by an unsettled direct/process row. A turn row may cease\n// blocking only after its exact attempt carries the authoritative quiesced_at\n// receipt. Yielded provider processes remain retained/unsettled until exact\n// exit or loss proof settles their parent admission.\nexport const sandboxWorkspaceMutationAdmissions = pgTable(\n \"sandbox_workspace_mutation_admissions\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n leaseId: uuid(\"lease_id\")\n .notNull()\n .references(() => sandboxLeases.id, { onDelete: \"cascade\" }),\n sandboxGroupId: uuid(\"sandbox_group_id\").notNull(),\n sessionId: uuid(\"session_id\").notNull(),\n actorKind: text(\"actor_kind\", { enum: sandboxWorkspaceMutationActorKindValues }).notNull(),\n actorId: uuid(\"actor_id\").notNull(),\n // Exact turn authority is present only for actor_kind='turn'. Direct HTTP\n // requests and retained processes never invent a turn or quiescence owner.\n turnId: uuid(\"turn_id\"),\n attemptId: uuid(\"attempt_id\"),\n executionGeneration: integer(\"execution_generation\"),\n holderKind: text(\"holder_kind\", {\n enum: sandboxWorkspaceMutationHolderKindValues,\n }).notNull(),\n holderId: text(\"holder_id\").notNull(),\n leaseEpoch: integer(\"lease_epoch\").notNull(),\n providerBackend: text(\"provider_backend\").notNull(),\n providerInstanceId: text(\"provider_instance_id\").notNull(),\n routeKind: text(\"route_kind\", { enum: [\"home\", \"active\"] }).notNull(),\n // null route target means the persistable home/group provider. A non-null\n // target is pinned together with the active pointer epoch observed when the\n // operation was admitted.\n routeTargetId: uuid(\"route_target_id\"),\n routeEpoch: integer(\"route_epoch\").notNull(),\n workspaceGeneration: integer(\"workspace_generation\").notNull(),\n operation: text(\"operation\").notNull(),\n providerOutcome: text(\"provider_outcome\", {\n enum: [\"resolved\", \"rejected\", \"retained\"],\n }),\n admittedAt: timestamp(\"admitted_at\", { withTimezone: true }).notNull().defaultNow(),\n settledAt: timestamp(\"settled_at\", { withTimezone: true }),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"sandbox_workspace_mutation_admissions_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n workspaceSession: foreignKey({\n name: \"sandbox_workspace_mutation_admissions_workspace_session_fk\",\n columns: [table.workspaceId, table.sessionId],\n foreignColumns: [sessions.workspaceId, sessions.id],\n }).onDelete(\"restrict\"),\n workspaceTurn: foreignKey({\n name: \"sandbox_workspace_mutation_admissions_workspace_turn_fk\",\n columns: [table.workspaceId, table.turnId],\n foreignColumns: [sessionTurns.workspaceId, sessionTurns.id],\n }).onDelete(\"restrict\"),\n workspaceAttempt: foreignKey({\n name: \"sandbox_workspace_mutation_admissions_workspace_attempt_fk\",\n columns: [table.workspaceId, table.attemptId],\n foreignColumns: [sessionTurnAttempts.workspaceId, sessionTurnAttempts.id],\n }).onDelete(\"restrict\"),\n leaseGeneration: uniqueIndex(\"sandbox_workspace_mutation_admissions_lease_generation_uq\").on(\n table.leaseId,\n table.workspaceGeneration,\n ),\n scopedId: uniqueIndex(\"sandbox_workspace_mutation_admissions_scoped_id_uq\").on(\n table.accountId,\n table.workspaceId,\n table.sessionId,\n table.leaseId,\n table.id,\n ),\n blocking: index(\"sandbox_workspace_mutation_admissions_blocking_idx\")\n .on(table.leaseId, table.workspaceGeneration)\n .where(sql`${table.settledAt} is null`),\n attempt: index(\"sandbox_workspace_mutation_admissions_attempt_idx\").on(\n table.workspaceId,\n table.attemptId,\n ),\n actor: index(\"sandbox_workspace_mutation_admissions_actor_idx\").on(\n table.workspaceId,\n table.actorKind,\n table.actorId,\n ),\n generationValid: check(\n \"sandbox_workspace_mutation_admissions_generation_check\",\n sql`${table.workspaceGeneration} > 0\n and ${table.leaseEpoch} >= 0\n and ${table.routeEpoch} >= 0\n and (${table.executionGeneration} is null or ${table.executionGeneration} > 0)`,\n ),\n actorValid: check(\n \"sandbox_workspace_mutation_admissions_actor_check\",\n sql`(\n ${table.actorKind} = 'turn'\n and ${table.actorId} = ${table.attemptId}\n and ${table.turnId} is not null\n and ${table.attemptId} is not null\n and ${table.executionGeneration} is not null\n and ${table.holderKind} = 'turn'\n ) or (\n ${table.actorKind} = 'direct'\n and ${table.turnId} is null\n and ${table.attemptId} is null\n and ${table.executionGeneration} is null\n and ${table.holderKind} = 'direct'\n ) or (\n ${table.actorKind} = 'process'\n and ${table.turnId} is null\n and ${table.attemptId} is null\n and ${table.executionGeneration} is null\n and ${table.holderKind} = 'process'\n )`,\n ),\n routeValid: check(\n \"sandbox_workspace_mutation_admissions_route_check\",\n sql`${table.actorKind} in ('turn', 'direct', 'process')\n and ${table.holderKind} in ('turn', 'direct', 'process')\n and octet_length(${table.holderId}) between 1 and 256\n and octet_length(${table.providerBackend}) between 1 and 64\n and octet_length(${table.providerInstanceId}) between 1 and 512\n and ${table.routeKind} in ('home', 'active')\n and (${table.routeKind} = 'active' or ${table.routeTargetId} is null)`,\n ),\n operationValid: check(\n \"sandbox_workspace_mutation_admissions_operation_check\",\n sql`octet_length(${table.operation}) between 1 and 128`,\n ),\n outcomeValid: check(\n \"sandbox_workspace_mutation_admissions_outcome_check\",\n sql`${table.providerOutcome} is null or ${table.providerOutcome} in ('resolved', 'rejected', 'retained')`,\n ),\n settlementConsistent: check(\n \"sandbox_workspace_mutation_admissions_settlement_check\",\n sql`(${table.providerOutcome} is null and ${table.settledAt} is null)\n or (${table.providerOutcome} = 'retained' and ${table.settledAt} is null)\n or (${table.providerOutcome} in ('resolved', 'rejected') and ${table.settledAt} is not null)`,\n ),\n }),\n);\n\nexport const sandboxRetainedProcessStateValues = [\"active\", \"exited\", \"lost\"] as const;\n\n// A yielded exec is not merely a numeric provider session id: it is a durable\n// continuation of the exact admitted mutation and owns a non-TTL process lease\n// holder until exit/loss is proven. Every later model-facing stdin write gets a\n// distinct actor_kind='process' admission tied back to this identity. Control\n// polling may use the pinned provider route without creating a new generation.\nexport const sandboxRetainedProcesses = pgTable(\n \"sandbox_retained_processes\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n sessionId: uuid(\"session_id\").notNull(),\n leaseId: uuid(\"lease_id\").notNull(),\n sandboxGroupId: uuid(\"sandbox_group_id\").notNull(),\n parentAdmissionId: uuid(\"parent_admission_id\").notNull(),\n holderId: text(\"holder_id\").notNull(),\n ownerActorKind: text(\"owner_actor_kind\", { enum: [\"turn\", \"direct\"] }).notNull(),\n ownerActorId: uuid(\"owner_actor_id\").notNull(),\n ownerTurnId: uuid(\"owner_turn_id\"),\n ownerAttemptId: uuid(\"owner_attempt_id\"),\n ownerExecutionGeneration: integer(\"owner_execution_generation\"),\n leaseEpoch: integer(\"lease_epoch\").notNull(),\n providerBackend: text(\"provider_backend\").notNull(),\n providerInstanceId: text(\"provider_instance_id\").notNull(),\n // Provider object ids are namespace-scoped. New Modal processes bind the\n // exact authenticated workspace before execution; legacy rows remain null\n // until a positive lookup proves which namespace owns the historical box.\n providerBindingKey: text(\"provider_binding_key\"),\n providerBinding: jsonb(\"provider_binding\").$type<Record<string, unknown>>(),\n routeKind: text(\"route_kind\", { enum: [\"home\", \"active\"] }).notNull(),\n routeTargetId: uuid(\"route_target_id\"),\n routeEpoch: integer(\"route_epoch\").notNull(),\n providerSessionId: integer(\"provider_session_id\").notNull(),\n state: text(\"state\", { enum: sandboxRetainedProcessStateValues }).notNull().default(\"active\"),\n exitCode: integer(\"exit_code\"),\n settlementReason: text(\"settlement_reason\"),\n startedAt: timestamp(\"started_at\", { withTimezone: true }).notNull().defaultNow(),\n settledAt: timestamp(\"settled_at\", { withTimezone: true }),\n // Coordination state for bounded terminal-owner reconciliation. While a\n // claim is live, reconcileAfter is its expiry; otherwise it is the next\n // retry time. Becoming due only licenses an exact provider probe and is\n // never exit/loss proof.\n reconcileAfter: timestamp(\"reconcile_after\", { withTimezone: true }).notNull().defaultNow(),\n reconcileClaimId: uuid(\"reconcile_claim_id\"),\n reconcileClaimedAt: timestamp(\"reconcile_claimed_at\", { withTimezone: true }),\n reconcileAttempts: integer(\"reconcile_attempts\").notNull().default(0),\n lastReconcileOutcome: text(\"last_reconcile_outcome\"),\n reconcileProofOutcome: text(\"reconcile_proof_outcome\", { enum: [\"exited\", \"lost\"] }),\n reconcileProofExitCode: integer(\"reconcile_proof_exit_code\"),\n reconcileProofReason: text(\"reconcile_proof_reason\"),\n reconcileProofObservedAt: timestamp(\"reconcile_proof_observed_at\", { withTimezone: true }),\n },\n (table) => ({\n workspaceAccount: foreignKey({\n name: \"sandbox_retained_processes_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n workspaceSession: foreignKey({\n name: \"sandbox_retained_processes_workspace_session_fk\",\n columns: [table.workspaceId, table.sessionId],\n foreignColumns: [sessions.workspaceId, sessions.id],\n }).onDelete(\"restrict\"),\n parentAdmissionScope: foreignKey({\n name: \"sandbox_retained_processes_parent_admission_scope_fk\",\n columns: [\n table.accountId,\n table.workspaceId,\n table.sessionId,\n table.leaseId,\n table.parentAdmissionId,\n ],\n foreignColumns: [\n sandboxWorkspaceMutationAdmissions.accountId,\n sandboxWorkspaceMutationAdmissions.workspaceId,\n sandboxWorkspaceMutationAdmissions.sessionId,\n sandboxWorkspaceMutationAdmissions.leaseId,\n sandboxWorkspaceMutationAdmissions.id,\n ],\n }).onDelete(\"restrict\"),\n scopedId: uniqueIndex(\"sandbox_retained_processes_scoped_id_uq\").on(\n table.accountId,\n table.workspaceId,\n table.sessionId,\n table.leaseId,\n table.id,\n ),\n parentAdmission: uniqueIndex(\"sandbox_retained_processes_parent_admission_uq\").on(\n table.parentAdmissionId,\n ),\n liveProviderSession: uniqueIndex(\"sandbox_retained_processes_live_provider_session_uq\")\n .on(\n table.leaseId,\n table.leaseEpoch,\n table.providerInstanceId,\n table.routeEpoch,\n table.providerSessionId,\n )\n .where(sql`${table.state} = 'active'`),\n holder: uniqueIndex(\"sandbox_retained_processes_holder_uq\").on(table.leaseId, table.holderId),\n active: index(\"sandbox_retained_processes_active_idx\")\n .on(table.workspaceId, table.sessionId, table.startedAt)\n .where(sql`${table.state} = 'active'`),\n reconcileDue: index(\"sandbox_retained_processes_reconcile_due_idx\")\n .on(table.reconcileAfter, table.startedAt, table.id)\n .where(sql`${table.state} = 'active'`),\n activeInventory: index(\"sandbox_retained_processes_active_inventory_idx\")\n .on(table.ownerActorKind, table.workspaceId, table.ownerTurnId, table.ownerAttemptId)\n .where(sql`${table.state} = 'active'`),\n identityValid: check(\n \"sandbox_retained_processes_identity_check\",\n sql`${table.leaseEpoch} >= 0\n and ${table.routeEpoch} >= 0\n and ${table.providerSessionId} > 0\n and octet_length(${table.holderId}) between 1 and 256\n and octet_length(${table.providerBackend}) between 1 and 64\n and octet_length(${table.providerInstanceId}) between 1 and 512\n and (${table.routeKind} = 'active' or ${table.routeTargetId} is null)`,\n ),\n ownerValid: check(\n \"sandbox_retained_processes_owner_check\",\n sql`(\n ${table.ownerActorKind} = 'turn'\n and ${table.ownerActorId} = ${table.ownerAttemptId}\n and ${table.ownerTurnId} is not null\n and ${table.ownerAttemptId} is not null\n and ${table.ownerExecutionGeneration} > 0\n ) or (\n ${table.ownerActorKind} = 'direct'\n and ${table.ownerTurnId} is null\n and ${table.ownerAttemptId} is null\n and ${table.ownerExecutionGeneration} is null\n )`,\n ),\n settlementValid: check(\n \"sandbox_retained_processes_settlement_check\",\n sql`(${table.state} = 'active' and ${table.settledAt} is null and ${table.exitCode} is null)\n or (${table.state} = 'exited' and ${table.settledAt} is not null)\n or (${table.state} = 'lost' and ${table.settledAt} is not null and ${table.exitCode} is null)`,\n ),\n reasonValid: check(\n \"sandbox_retained_processes_reason_check\",\n sql`${table.settlementReason} is null\n or octet_length(${table.settlementReason}) between 1 and 512`,\n ),\n providerBindingValid: check(\n \"sandbox_retained_processes_provider_binding_check\",\n sql`(\n ${table.providerBindingKey} is null\n and ${table.providerBinding} is null\n ) or (\n ${table.providerBackend} = 'modal'\n and octet_length(${table.providerBindingKey}) between 1 and 1024\n and jsonb_typeof(${table.providerBinding}) = 'object'\n and ${table.providerBindingKey}::jsonb = ${table.providerBinding}\n and ${table.providerBindingKey} = format(\n '{\"version\":1,\"serverUrl\":%s,\"workspaceName\":%s,\"environment\":%s}',\n to_jsonb(${table.providerBinding} ->> 'serverUrl')::text,\n to_jsonb(${table.providerBinding} ->> 'workspaceName')::text,\n to_jsonb(${table.providerBinding} ->> 'environment')::text\n )\n and ${table.providerBinding} = jsonb_build_object(\n 'version', 1,\n 'serverUrl', ${table.providerBinding} ->> 'serverUrl',\n 'workspaceName', ${table.providerBinding} ->> 'workspaceName',\n 'environment', ${table.providerBinding} ->> 'environment'\n )\n and coalesce(octet_length(${table.providerBinding} ->> 'serverUrl'), 0) > 0\n and coalesce(octet_length(${table.providerBinding} ->> 'workspaceName'), 0) > 0\n and ${table.providerBinding} ->> 'environment' is not null\n )`,\n ),\n reconcileClaimValid: check(\n \"sandbox_retained_processes_reconcile_claim_check\",\n sql`(${table.reconcileClaimId} is null and ${table.reconcileClaimedAt} is null)\n or (${table.reconcileClaimId} is not null and ${table.reconcileClaimedAt} is not null)`,\n ),\n reconcileAttemptsValid: check(\n \"sandbox_retained_processes_reconcile_attempts_check\",\n sql`${table.reconcileAttempts} >= 0`,\n ),\n reconcileOutcomeValid: check(\n \"sandbox_retained_processes_reconcile_outcome_check\",\n sql`${table.lastReconcileOutcome} is null\n or octet_length(${table.lastReconcileOutcome}) between 1 and 64`,\n ),\n reconcileProofValid: check(\n \"sandbox_retained_processes_reconcile_proof_check\",\n sql`(\n ${table.reconcileProofOutcome} is null\n and ${table.reconcileProofExitCode} is null\n and ${table.reconcileProofReason} is null\n and ${table.reconcileProofObservedAt} is null\n ) or (\n ${table.reconcileProofOutcome} = 'exited'\n and ${table.reconcileProofExitCode} is not null\n and ${table.reconcileProofReason} = 'provider_exit_banner'\n and ${table.reconcileProofObservedAt} is not null\n ) or (\n ${table.reconcileProofOutcome} = 'lost'\n and ${table.reconcileProofExitCode} is null\n and ${table.reconcileProofReason} in (\n 'provider_session_lost_banner', 'provider_instance_not_found',\n 'provider_instance_terminated'\n )\n and ${table.reconcileProofObservedAt} is not null\n )`,\n ),\n }),\n);\n\n// The recording lifecycle states (P4.3). Exported so the activity + the query\n// layer share one source of truth for the §3.1 state machine.\nexport const sessionRecordingStateValues = [\n \"recording\",\n \"finalizing\",\n \"available\",\n \"failed\",\n] as const;\nexport const sessionRecordingModeValues = [\"manual\", \"on-turn\", \"on-verify\"] as const;\nexport const sessionRecordingCodecValues = [\"h264-mp4\", \"vp9-webm\"] as const;\n\n// One row per recording — the durable index for the \"agent films itself proving\n// the fix\" loop. ffmpeg x11grab of the SAME :0 humans watch, finalized by\n// reading the bytes off the box and PUTting them to @opengeni/storage in the\n// process that holds the resumed-by-id handle (never a Temporal payload, F10).\n// Mirrors the account/workspace/session FK chain of sandboxSessionEnvelopes;\n// turnId is ON DELETE SET NULL (a deleted turn must not kill the artifact row).\nexport const sessionRecordings = pgTable(\n \"session_recordings\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n sessionId: uuid(\"session_id\")\n .notNull()\n .references(() => sessions.id, { onDelete: \"cascade\" }),\n turnId: uuid(\"turn_id\").references(() => sessionTurns.id, {\n onDelete: \"set null\",\n }),\n\n state: text(\"state\", { enum: sessionRecordingStateValues }).notNull(),\n mode: text(\"mode\", { enum: sessionRecordingModeValues }).notNull(),\n codec: text(\"codec\", { enum: sessionRecordingCodecValues }).notNull(),\n\n storageKey: text(\"storage_key\"),\n sizeBytes: bigint(\"size_bytes\", { mode: \"number\" }),\n durationSeconds: numeric(\"duration_seconds\").$type<number>(),\n\n width: integer(\"width\").notNull(),\n height: integer(\"height\").notNull(),\n\n reason: text(\"reason\"),\n\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n finalizedAt: timestamp(\"finalized_at\", { withTimezone: true }),\n },\n (table) => ({\n sessionIdx: index(\"session_recordings_session_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.createdAt,\n ),\n }),\n);\n\n// Workbench v2 turn-end workspace capture (model: sessionRecordings).\n// One row per capture revision — a point-in-time snapshot of a session's changed\n// files, probed off the live box at turn end. The manifest (tree index + per-repo\n// status/diff + file index) and each after-image blob live in @opengeni/storage;\n// this row is the durable index the read routes serve from. `revision` is\n// monotonic per session (unique (session_id, revision)); `blob_keys` records the\n// content-addressed after-image keys this revision references so the keep-latest-10\n// GC can delete only blobs no surviving revision shares (set-difference GC without\n// a storage read). `lease_epoch` fences a write: an insert whose lease was\n// superseded writes zero rows (see insertWorkspaceCapture).\nexport const workspaceCaptures = pgTable(\n \"workspace_captures\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n sessionId: uuid(\"session_id\")\n .notNull()\n .references(() => sessions.id, { onDelete: \"cascade\" }),\n turnId: uuid(\"turn_id\").references(() => sessionTurns.id, {\n onDelete: \"set null\",\n }),\n\n revision: bigint(\"revision\", { mode: \"number\" }).notNull(),\n leaseEpoch: integer(\"lease_epoch\").notNull(),\n // 'available' on a committed capture. 'failed' reserved for a future two-phase\n // write; the current synchronous capture only ever inserts 'available'.\n state: text(\"state\", { enum: [\"available\", \"failed\"] })\n .notNull()\n .default(\"available\"),\n\n // Single JSON manifest blob (tree index + repos + file refs) — the cold-paint payload.\n manifestKey: text(\"manifest_key\"),\n // The fs tree index blob, kept separate from the manifest so the API can inline\n // or sign it independently of the (usually small) manifest metadata.\n treeIndexKey: text(\"tree_index_key\"),\n // Content-addressed after-image blob keys this revision references (GC input).\n blobKeys: jsonb(\"blob_keys\").$type<string[]>().notNull().default([]),\n\n sizeBytes: bigint(\"size_bytes\", { mode: \"number\" }),\n stats: jsonb(\"stats\").$type<Record<string, unknown>>().notNull().default({}),\n\n capturedAt: timestamp(\"captured_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n sessionRevision: uniqueIndex(\"workspace_captures_session_revision_idx\").on(\n table.sessionId,\n table.revision,\n ),\n latest: index(\"workspace_captures_latest_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.revision,\n ),\n }),\n);\n\n// Interactive PTY sessions. An OPEN PTY adopts one exact retained process; the\n// provider's numeric exec-session id is only a copied locator and never authority\n// on its own. Provider/lease/route/admission identity is copied onto the row so a\n// stale pointer or box epoch cannot redirect control to a rival process. Legacy\n// numeric-only rows are closed by the maintenance cutover and may retain null\n// identity columns only in that terminal state.\nexport const sandboxPtySessions = pgTable(\n \"sandbox_pty_sessions\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(), // == ptyId on the wire\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n sessionId: uuid(\"session_id\")\n .notNull()\n .references(() => sessions.id, { onDelete: \"cascade\" }),\n leaseId: uuid(\"lease_id\"),\n sandboxGroupId: uuid(\"sandbox_group_id\"),\n retainedProcessId: uuid(\"retained_process_id\"),\n openAdmissionId: uuid(\"open_admission_id\"),\n // Copied provider locator for the adopted retained process.\n execSessionId: integer(\"exec_session_id\"),\n leaseEpoch: integer(\"lease_epoch\").notNull(),\n providerBackend: text(\"provider_backend\"),\n providerInstanceId: text(\"provider_instance_id\"),\n routeKind: text(\"route_kind\", { enum: [\"home\", \"active\"] }),\n routeTargetId: uuid(\"route_target_id\"),\n routeEpoch: integer(\"route_epoch\"),\n cols: integer(\"cols\").notNull(),\n rows: integer(\"rows\").notNull(),\n shell: text(\"shell\").notNull(),\n cwd: text(\"cwd\").notNull(),\n status: text(\"status\").notNull().default(\"open\"), // 'open' | 'closed'\n // The viewer grant/subject that opened it (free-text — access subjects are not\n // always UUIDs, M5; so a text column, never a uuid NOT NULL).\n openedBy: text(\"opened_by\").notNull(),\n lastInputAt: timestamp(\"last_input_at\", { withTimezone: true }).notNull().defaultNow(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n closedAt: timestamp(\"closed_at\", { withTimezone: true }),\n },\n (table) => ({\n retainedProcessScope: foreignKey({\n name: \"sandbox_pty_sessions_retained_process_scope_fk\",\n columns: [\n table.accountId,\n table.workspaceId,\n table.sessionId,\n table.leaseId,\n table.retainedProcessId,\n ],\n foreignColumns: [\n sandboxRetainedProcesses.accountId,\n sandboxRetainedProcesses.workspaceId,\n sandboxRetainedProcesses.sessionId,\n sandboxRetainedProcesses.leaseId,\n sandboxRetainedProcesses.id,\n ],\n }).onDelete(\"restrict\"),\n openIdx: index(\"sandbox_pty_sessions_session_idx\")\n .on(table.workspaceId, table.sessionId)\n .where(sql`${table.status} = 'open'`),\n processIdx: uniqueIndex(\"sandbox_pty_sessions_open_process_uq\")\n .on(table.retainedProcessId)\n .where(sql`${table.status} = 'open'`),\n openIdentityValid: check(\n \"sandbox_pty_sessions_open_identity_check\",\n sql`${table.status} <> 'open' or (\n ${table.leaseId} is not null\n and ${table.sandboxGroupId} is not null\n and ${table.retainedProcessId} is not null\n and ${table.openAdmissionId} is not null\n and ${table.execSessionId} > 0\n and octet_length(${table.providerBackend}) between 1 and 64\n and octet_length(${table.providerInstanceId}) between 1 and 512\n and ${table.routeKind} in ('home', 'active')\n and (${table.routeKind} = 'active' or ${table.routeTargetId} is null)\n and ${table.routeEpoch} is not null\n and ${table.leaseEpoch} >= 0\n and ${table.routeEpoch} >= 0\n )`,\n ),\n }),\n);\n\n// ============================================================================\n// Bring-your-own-compute (M2): first-class swappable sandboxes + enrollment +\n// metrics (migration 0024). The session→box\n// binding becomes a per-session mutable, epoch-fenced active_sandbox_id pointer\n// (declared on sessions above) that the routing proxy resolves PER TOOL CALL.\n\n// The lifecycle/enum domains, exported so the query layer + the migration share\n// ONE source of truth for each CHECK.\nexport const enrollmentExposureValues = [\"whole-machine\"] as const;\nexport const enrollmentStatusValues = [\"active\", \"revoked\"] as const;\nexport const enrollmentOsValues = [\"linux\", \"macos\", \"windows\"] as const;\nexport const sandboxKindValues = [\"modal\", \"selfhosted\"] as const;\n\n// One row per registered machine. The agent's ed25519 PUBLIC key IS the machine\n// identity (the NATS control-plane subject the agent subscribes to maps to it).\n// exposure is the loudly-consented access mode; has_display/allow_screen_control\n// are the desktop/computer-use consent bits (default false — opt-in). status is\n// the active|revoked lifecycle; last_seen_at the heartbeat liveness cursor the\n// Machines dashboard renders online/reconnecting/offline from.\nexport const enrollments = pgTable(\n \"enrollments\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n // The agent's ed25519 public key (the machine identity).\n pubkey: text(\"pubkey\").notNull(),\n exposure: text(\"exposure\", { enum: enrollmentExposureValues })\n .notNull()\n .default(\"whole-machine\"),\n hasDisplay: boolean(\"has_display\").notNull().default(false),\n // Refreshed from every connect Hello (Capabilities.op_stream); false for\n // agents predating the op-stream engine.\n opStream: boolean(\"op_stream\").notNull().default(false),\n // When the machine has a display it CANNOT capture (macOS Screen Recording / TCC\n // not granted), the agent reports has_display=false AND a human, actionable reason\n // here (e.g. \"grant Screen Recording in System Settings\"). NULL means capture is\n // permitted (has_display=true) or the machine is genuinely headless — the reason\n // distinguishes \"display present but capture not granted\" from plain \"no display\"\n // so the Machines dashboard / VM picker can surface the specific hint. Refreshed\n // from every connect Hello alongside has_display.\n desktopUnavailableReason: text(\"desktop_unavailable_reason\"),\n allowScreenControl: boolean(\"allow_screen_control\").notNull().default(false),\n status: text(\"status\", { enum: enrollmentStatusValues }).notNull().default(\"active\"),\n os: text(\"os\", { enum: enrollmentOsValues }).notNull().default(\"linux\"),\n arch: text(\"arch\").notNull().default(\"x86_64\"),\n // Heartbeat liveness cursor. Null until the first connect.\n lastSeenAt: timestamp(\"last_seen_at\", { withTimezone: true }),\n // Clean going-offline marker (migration 0049). Set when the machine announces a\n // typed GoingOffline (user-stop / self-update / host-shutdown); the liveness\n // derivation reads an un-cleared marker as OFFLINE immediately, regardless of a\n // still-fresh last_seen. Any newer liveness signal (a reconnect Hello or a\n // fresher heartbeat via touchEnrollmentLastSeen) clears BOTH back to NULL. NULL\n // (the default) ⇒ no goodbye pending — today's last_seen-aging behavior.\n wentOfflineAt: timestamp(\"went_offline_at\", { withTimezone: true }),\n wentOfflineReason: text(\"went_offline_reason\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n revokedAt: timestamp(\"revoked_at\", { withTimezone: true }),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n // One enrollment per (workspace, pubkey): a re-enroll is an idempotent upsert.\n workspacePubkey: uniqueIndex(\"enrollments_workspace_pubkey_idx\").on(\n table.workspaceId,\n table.pubkey,\n ),\n // List a workspace's ACTIVE machines without scanning revoked rows.\n workspaceStatus: index(\"enrollments_workspace_status_idx\").on(table.workspaceId, table.status),\n }),\n);\n\n// The OAuth 2.0 device-authorization (RFC 8628) PENDING request (M5, migration\n// 0025 / enrollment + §18 LOUD consent). An agent's `enroll` starts\n// a flow (POST /enrollments/device/start) → one short-TTL, single-use row keyed by\n// an opaque `device_code` (the agent polls with) + a short `user_code` (the user\n// types at the approve page). The user (workspace-membership / workspace:admin\n// gated) approves it (POST /enrollments/device/approve), which records WHO\n// (subject + label) consented WHEN (approved_at) to WHAT (whole-machine mandatory +\n// screen-control per allow_screen_control) and stamps the resulting enrollment_id /\n// sandbox_id. The agent then polls (POST /enrollments/device/poll) and the approved\n// row yields the EnrollmentCredentials. State machine: pending → approved | denied;\n// a pending row past expires_at is EXPIRED; once the agent has polled an approved\n// row its credentials, the row flips to consumed (single-use). NOT a long-lived\n// record — a retention sweep prunes terminal rows; the durable identity is the\n// `enrollments` row the approve produced.\nexport const deviceEnrollmentStatusValues = [\"pending\", \"approved\", \"denied\", \"consumed\"] as const;\n\nexport const deviceEnrollmentRequests = pgTable(\n \"device_enrollment_requests\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n // The opaque code the agent polls with (unguessable, single-use). Unique.\n deviceCode: text(\"device_code\").notNull(),\n // The short human-typed code (e.g. \"WDJB-MJHT\"). Unique among LIVE (pending)\n // rows via a partial unique index so a recycled code never collides with a\n // terminal row.\n userCode: text(\"user_code\").notNull(),\n // The workspace this request was started for (resolved from the deployment-edge\n // request context — the agent presents the access key, the flow binds to the\n // single managed workspace OR a workspace hint). account_id rides along for RLS.\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n // The agent's ed25519 public key (the machine identity the enrollment binds to).\n pubkey: text(\"pubkey\").notNull(),\n os: text(\"os\", { enum: enrollmentOsValues }).notNull().default(\"linux\"),\n arch: text(\"arch\").notNull().default(\"x86_64\"),\n machineName: text(\"machine_name\"),\n // The exposure the agent REQUESTED (whole-machine in v1; loudly consented at\n // approve). Mirrors the enrollment column domain.\n requestedExposure: text(\"requested_exposure\", {\n enum: enrollmentExposureValues,\n })\n .notNull()\n .default(\"whole-machine\"),\n // The agent CAN offer a display (a real screen / Xvfb is available) — gates\n // whether screen-control consent is even meaningful. has_display on the\n // resulting enrollment is derived from this.\n canOfferDisplay: boolean(\"can_offer_display\").notNull().default(false),\n // The agent REQUESTS screen control (computer-use). The user's allow_screen_control\n // at approve is the AUTHORITATIVE consent; this is only the agent's request.\n requestsScreenControl: boolean(\"requests_screen_control\").notNull().default(false),\n status: text(\"status\", { enum: deviceEnrollmentStatusValues }).notNull().default(\"pending\"),\n // ── LOUD CONSENT capture (who/when/what), stamped at approve ──────────────\n approvedBySubjectId: text(\"approved_by_subject_id\"),\n approvedBySubjectLabel: text(\"approved_by_subject_label\"),\n // The user's screen-control consent decision (whole-machine is mandatory at\n // approve; screen-control is opt-in per this flag).\n allowScreenControl: boolean(\"allow_screen_control\").notNull().default(false),\n approvedAt: timestamp(\"approved_at\", { withTimezone: true }),\n // The enrollment + sandbox the approve produced (acceptance #2: an enrollment\n // row AND a sandbox row appear). Null until approved.\n enrollmentId: uuid(\"enrollment_id\").references(() => enrollments.id, {\n onDelete: \"set null\",\n }),\n sandboxId: uuid(\"sandbox_id\").references(() => sandboxes.id, {\n onDelete: \"set null\",\n }),\n // The short-TTL expiry; a pending row past this is EXPIRED on poll.\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }).notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n // The device_code is the agent's poll key — globally unique + indexed.\n deviceCode: uniqueIndex(\"device_enrollment_requests_device_code_idx\").on(table.deviceCode),\n // The user_code must be unique among LIVE (pending) rows so the approve lookup\n // is unambiguous; a terminal row's code may be recycled.\n userCodePending: uniqueIndex(\"device_enrollment_requests_user_code_pending_idx\")\n .on(table.userCode)\n .where(sql`${table.status} = 'pending'`),\n workspaceCreated: index(\"device_enrollment_requests_workspace_created_idx\").on(\n table.workspaceId,\n table.createdAt,\n ),\n expires: index(\"device_enrollment_requests_expires_idx\").on(table.expiresAt),\n }),\n);\n\n// The first-class NAMED sandbox a session's active_sandbox_id points AT. kind\n// discriminates the backend the routing proxy resolves to: 'modal' (cloud box,\n// NULL enrollment_id) or 'selfhosted' (a user's machine, enrollment_id -> the\n// enrollment it lives on). The selfhosted-needs-enrollment invariant is pinned by\n// the sandboxes_selfhosted_enrollment_chk CHECK in migration 0024. enrollment_id\n// is ON DELETE SET NULL so deleting an enrollment never cascade-kills a sandbox a\n// session might still point at (the routing layer surfaces agent_offline instead).\nexport const sandboxes = pgTable(\n \"sandboxes\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n kind: text(\"kind\", { enum: sandboxKindValues }).notNull(),\n name: text(\"name\").notNull(),\n enrollmentId: uuid(\"enrollment_id\").references(() => enrollments.id, {\n onDelete: \"set null\",\n }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceCreated: index(\"sandboxes_workspace_created_idx\").on(\n table.workspaceId,\n table.createdAt,\n ),\n enrollment: index(\"sandboxes_enrollment_idx\")\n .on(table.enrollmentId)\n .where(sql`${table.enrollmentId} is not null`),\n }),\n);\n\n// Last-sample upsert: ONE row per enrollment, overwritten on every sample (the\n// PK on enrollment_id is the ON CONFLICT target). The §10.7 signals; nullable\n// where a platform/sample may not provide it (no GPU, headless).\nexport const machineMetricsLatest = pgTable(\n \"machine_metrics_latest\",\n {\n enrollmentId: uuid(\"enrollment_id\")\n .primaryKey()\n .references(() => enrollments.id, { onDelete: \"cascade\" }),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n cpuPercent: numeric(\"cpu_percent\").$type<number>(),\n load1: numeric(\"load1\").$type<number>(),\n load5: numeric(\"load5\").$type<number>(),\n load15: numeric(\"load15\").$type<number>(),\n memUsedBytes: bigint(\"mem_used_bytes\", { mode: \"number\" }),\n memTotalBytes: bigint(\"mem_total_bytes\", { mode: \"number\" }),\n diskUsedBytes: bigint(\"disk_used_bytes\", { mode: \"number\" }),\n diskTotalBytes: bigint(\"disk_total_bytes\", { mode: \"number\" }),\n gpuUtilPercent: numeric(\"gpu_util_percent\").$type<number>(),\n gpuMemUsedBytes: bigint(\"gpu_mem_used_bytes\", { mode: \"number\" }),\n gpuMemTotalBytes: bigint(\"gpu_mem_total_bytes\", { mode: \"number\" }),\n contention: numeric(\"contention\").$type<number>(),\n sampledAt: timestamp(\"sampled_at\", { withTimezone: true }).notNull(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspace: index(\"machine_metrics_latest_workspace_idx\").on(table.workspaceId),\n }),\n);\n\n// Append-only downsampled history (~1/min per enrollment, retained N days). Same\n// signal columns as _latest. The (enrollment_id, sampled_at) index serves the\n// dashboard time-range read AND the (later) retention sweep.\nexport const machineMetricsSeries = pgTable(\n \"machine_metrics_series\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n enrollmentId: uuid(\"enrollment_id\")\n .notNull()\n .references(() => enrollments.id, { onDelete: \"cascade\" }),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n cpuPercent: numeric(\"cpu_percent\").$type<number>(),\n load1: numeric(\"load1\").$type<number>(),\n load5: numeric(\"load5\").$type<number>(),\n load15: numeric(\"load15\").$type<number>(),\n memUsedBytes: bigint(\"mem_used_bytes\", { mode: \"number\" }),\n memTotalBytes: bigint(\"mem_total_bytes\", { mode: \"number\" }),\n diskUsedBytes: bigint(\"disk_used_bytes\", { mode: \"number\" }),\n diskTotalBytes: bigint(\"disk_total_bytes\", { mode: \"number\" }),\n gpuUtilPercent: numeric(\"gpu_util_percent\").$type<number>(),\n gpuMemUsedBytes: bigint(\"gpu_mem_used_bytes\", { mode: \"number\" }),\n gpuMemTotalBytes: bigint(\"gpu_mem_total_bytes\", { mode: \"number\" }),\n contention: numeric(\"contention\").$type<number>(),\n sampledAt: timestamp(\"sampled_at\", { withTimezone: true }).notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n enrollmentSampled: index(\"machine_metrics_series_enrollment_sampled_idx\").on(\n table.enrollmentId,\n table.sampledAt,\n ),\n sampled: index(\"machine_metrics_series_sampled_idx\").on(table.sampledAt),\n }),\n);\n\nexport const scheduledTasks = pgTable(\n \"scheduled_tasks\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n name: text(\"name\").notNull(),\n status: text(\"status\").notNull().default(\"active\"),\n schedule: jsonb(\"schedule\").$type<unknown>().notNull(),\n temporalScheduleId: text(\"temporal_schedule_id\").notNull(),\n runMode: text(\"run_mode\").notNull().default(\"new_session_per_run\"),\n overlapPolicy: text(\"overlap_policy\").notNull().default(\"allow_concurrent\"),\n agentConfig: jsonb(\"agent_config\").$type<unknown>().notNull(),\n createdByKind: text(\"created_by_kind\").notNull().default(\"service\"),\n createdBySubjectId: text(\"created_by_subject_id\").notNull().default(\"unattributed-legacy\"),\n createdByContext: jsonb(\"created_by_context\")\n .$type<Record<string, unknown>>()\n .notNull()\n .default({ backfill: true }),\n personalConnectionDelegations: jsonb(\"personal_connection_delegations\")\n .$type<McpPersonalConnectionDelegation[]>()\n .notNull()\n .default([]),\n reusableSessionId: uuid(\"reusable_session_id\").references(() => sessions.id, {\n onDelete: \"set null\",\n }),\n variableSetId: uuid(\"variable_set_id\").references(() => workspaceVariableSets.id, {\n onDelete: \"restrict\",\n }),\n // The rig this task's runs ride; the active version is resolved per fire\n // (migration 0047). NULL ⇒ no rig. FK (-> rigs(id) ON DELETE SET NULL) lives\n // in migration 0047 (forward-reference pattern). Consumed in M3.\n rigId: uuid(\"rig_id\"),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>().notNull().default({}),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n temporalScheduleId: uniqueIndex(\"scheduled_tasks_workspace_temporal_schedule_id_idx\").on(\n table.workspaceId,\n table.temporalScheduleId,\n ),\n status: index(\"scheduled_tasks_workspace_status_idx\").on(table.workspaceId, table.status),\n variableSet: index(\"scheduled_tasks_variable_set_idx\").on(\n table.workspaceId,\n table.variableSetId,\n ),\n }),\n);\n\nexport const scheduledTaskRuns = pgTable(\n \"scheduled_task_runs\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n taskId: uuid(\"task_id\")\n .notNull()\n .references(() => scheduledTasks.id, { onDelete: \"cascade\" }),\n status: text(\"status\").notNull().default(\"queued\"),\n triggerType: text(\"trigger_type\").notNull(),\n scheduledAt: timestamp(\"scheduled_at\", { withTimezone: true }),\n firedAt: timestamp(\"fired_at\", { withTimezone: true }).notNull().defaultNow(),\n sessionId: uuid(\"session_id\").references(() => sessions.id, {\n onDelete: \"set null\",\n }),\n triggerEventId: uuid(\"trigger_event_id\"),\n // Stable Temporal producer identity. Activity replay/re-dispatch returns\n // the exact run instead of allocating a second schedule source row.\n producerKey: text(\"producer_key\"),\n error: text(\"error\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n taskCreated: index(\"scheduled_task_runs_workspace_task_created_idx\").on(\n table.workspaceId,\n table.taskId,\n table.createdAt,\n ),\n session: index(\"scheduled_task_runs_workspace_session_idx\").on(\n table.workspaceId,\n table.sessionId,\n ),\n producer: uniqueIndex(\"scheduled_task_runs_producer_key_uq\")\n .on(table.workspaceId, table.producerKey)\n .where(sql`${table.producerKey} is not null`),\n }),\n);\n\nexport const githubInstallations = pgTable(\n \"github_installations\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n installationId: integer(\"installation_id\").notNull(),\n githubAccountId: bigint(\"github_account_id\", { mode: \"number\" }),\n accountLogin: text(\"account_login\"),\n accountType: text(\"account_type\"),\n repositoryScope: text(\"repository_scope\").notNull().default(\"all\"),\n linkedBySubjectId: text(\"linked_by_subject_id\"),\n githubActorId: bigint(\"github_actor_id\", { mode: \"number\" }),\n githubActorLogin: text(\"github_actor_login\"),\n authorityKind: text(\"authority_kind\"),\n authorityCheckedAt: timestamp(\"authority_checked_at\", { withTimezone: true }),\n authorityExpiresAt: timestamp(\"authority_expires_at\", { withTimezone: true }),\n authorityNonce: text(\"authority_nonce\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceInstallation: uniqueIndex(\"github_installations_workspace_installation_idx\").on(\n table.workspaceId,\n table.installationId,\n ),\n installation: index(\"github_installations_installation_idx\").on(table.installationId),\n workspace: index(\"github_installations_workspace_idx\").on(table.workspaceId),\n repositoryScopeCheck: check(\n \"github_installations_repository_scope_check\",\n sql`${table.repositoryScope} in ('all', 'selected')`,\n ),\n authorityKindCheck: check(\n \"github_installations_authority_kind_check\",\n sql`\n (\n ${table.githubAccountId} is null\n and ${table.githubActorId} is null\n and ${table.githubActorLogin} is null\n and ${table.authorityKind} is null\n and ${table.authorityCheckedAt} is null\n and ${table.authorityExpiresAt} is null\n and ${table.authorityNonce} is null\n )\n or (\n ${table.githubAccountId} is not null\n and ${table.githubAccountId} > 0\n and ${table.githubActorId} is not null\n and ${table.githubActorId} > 0\n and ${table.githubActorLogin} is not null\n and length(${table.githubActorLogin}) > 0\n and ${table.accountLogin} is not null\n and length(${table.accountLogin}) > 0\n and ${table.accountType} is not null\n and ${table.linkedBySubjectId} is not null\n and length(${table.linkedBySubjectId}) > 0\n and ${table.authorityKind} is not null\n and ${table.authorityCheckedAt} is not null\n and ${table.authorityExpiresAt} is not null\n and ${table.authorityCheckedAt} < ${table.authorityExpiresAt}\n and ${table.authorityExpiresAt} <= ${table.authorityCheckedAt} + interval '10 minutes'\n and ${table.authorityNonce} is not null\n and length(${table.authorityNonce}) > 0\n and ${table.repositoryScope} = 'selected'\n and (\n (\n ${table.authorityKind} = 'personal_owner'\n and ${table.accountType} = 'User'\n and ${table.githubActorId} = ${table.githubAccountId}\n )\n or (\n ${table.authorityKind} = 'organization_owner'\n and ${table.accountType} = 'Organization'\n )\n )\n )\n `,\n ),\n authorityNonce: uniqueIndex(\"github_installations_authority_nonce_uq\")\n .on(table.authorityNonce)\n .where(sql`${table.authorityNonce} is not null`),\n }),\n);\n\nexport const githubInstallationRepositories = pgTable(\n \"github_installation_repositories\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n installationId: integer(\"installation_id\").notNull(),\n repositoryId: bigint(\"repository_id\", { mode: \"number\" }).notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n installationRepository: uniqueIndex(\"github_install_repo_workspace_installation_repo_idx\").on(\n table.workspaceId,\n table.installationId,\n table.repositoryId,\n ),\n workspaceInstallation: index(\"github_install_repo_workspace_installation_idx\").on(\n table.workspaceId,\n table.installationId,\n ),\n workspaceAccount: foreignKey({\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n name: \"github_installation_repositories_workspace_account_fk\",\n }).onDelete(\"cascade\"),\n installationBinding: foreignKey({\n columns: [table.workspaceId, table.installationId],\n foreignColumns: [githubInstallations.workspaceId, githubInstallations.installationId],\n name: \"github_installation_repositories_installation_fk\",\n }).onDelete(\"cascade\"),\n }),\n);\n\nexport const usageEvents = pgTable(\n \"usage_events\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n subjectId: text(\"subject_id\"),\n eventType: text(\"event_type\").notNull(),\n quantity: bigint(\"quantity\", { mode: \"number\" }).notNull(),\n unit: text(\"unit\").notNull(),\n sourceResourceType: text(\"source_resource_type\"),\n sourceResourceId: text(\"source_resource_id\"),\n // Exact execution source for host usage export. These are deliberately\n // validated soft references rather than cascading foreign keys: usage is\n // an immutable billing/audit fact and must retain its source identity after\n // a session or turn is deleted.\n sessionId: uuid(\"session_id\"),\n turnId: uuid(\"turn_id\"),\n turnAttemptId: uuid(\"turn_attempt_id\"),\n initiatorKind: text(\"initiator_kind\"),\n initiatorSubjectId: text(\"initiator_subject_id\"),\n initiatorContext: jsonb(\"initiator_context\")\n .$type<Record<string, unknown>>()\n .notNull()\n .default({}),\n origin: text(\"origin\"),\n idempotencyKey: text(\"idempotency_key\").notNull(),\n occurredAt: timestamp(\"occurred_at\", { withTimezone: true }).notNull(),\n recordedAt: timestamp(\"recorded_at\", { withTimezone: true }).notNull().defaultNow(),\n exportedToBillingAt: timestamp(\"exported_to_billing_at\", {\n withTimezone: true,\n }),\n billingProviderEventId: text(\"billing_provider_event_id\"),\n },\n (table) => ({\n idempotency: uniqueIndex(\"usage_events_idempotency_idx\").on(table.idempotencyKey),\n workspaceMetric: index(\"usage_events_workspace_metric_idx\").on(\n table.workspaceId,\n table.eventType,\n table.occurredAt,\n ),\n accountMetric: index(\"usage_events_account_metric_idx\").on(\n table.accountId,\n table.eventType,\n table.occurredAt,\n ),\n workspaceSession: index(\"usage_events_workspace_session_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.occurredAt,\n ),\n contextHierarchy: check(\n \"usage_events_context_hierarchy_check\",\n sql`(${table.turnId} is null or ${table.sessionId} is not null)\n and (${table.turnAttemptId} is null or ${table.turnId} is not null)`,\n ),\n initiatorConsistent: check(\n \"usage_events_initiator_check\",\n sql`(${table.initiatorKind} is null and ${table.initiatorSubjectId} is null)\n or (${table.initiatorKind} in ('subject', 'service')\n and ${table.initiatorSubjectId} is not null\n and octet_length(${table.initiatorSubjectId}) between 1 and 1024)`,\n ),\n attributionContextBytes: check(\n \"usage_events_initiator_context_bytes_check\",\n sql`octet_length(${table.initiatorContext}::text) <= 4096`,\n ),\n originValid: check(\n \"usage_events_origin_check\",\n sql`${table.origin} is null or ${table.origin} in (\n 'user', 'scheduled_task', 'api', 'goal', 'system', 'compaction'\n )`,\n ),\n }),\n);\n\n/**\n * Per model-call Insights facts. Additive observability only — never the billing\n * ledger. Written after an authoritative `agent.model.usage` emit.\n */\nexport const modelCallFacts = pgTable(\n \"model_call_facts\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n sessionId: uuid(\"session_id\").notNull(),\n turnId: uuid(\"turn_id\").notNull(),\n turnAttemptId: uuid(\"turn_attempt_id\"),\n sourceKey: text(\"source_key\").notNull(),\n provider: text(\"provider\").notNull(),\n providerApi: text(\"provider_api\").notNull(),\n model: text(\"model\").notNull(),\n billingPath: text(\"billing_path\").notNull(),\n turnSource: text(\"turn_source\"),\n initiatorKind: text(\"initiator_kind\"),\n initiatorSubjectId: text(\"initiator_subject_id\"),\n scheduledTaskId: uuid(\"scheduled_task_id\"),\n inputTokens: bigint(\"input_tokens\", { mode: \"number\" }),\n outputTokens: bigint(\"output_tokens\", { mode: \"number\" }),\n cachedTokens: bigint(\"cached_tokens\", { mode: \"number\" }),\n cacheWriteTokens: bigint(\"cache_write_tokens\", { mode: \"number\" }),\n reasoningTokens: bigint(\"reasoning_tokens\", { mode: \"number\" }),\n totalTokens: bigint(\"total_tokens\", { mode: \"number\" }),\n pricedCostMicros: bigint(\"priced_cost_micros\", { mode: \"number\" }).notNull().default(0),\n occurredAt: timestamp(\"occurred_at\", { withTimezone: true }).notNull(),\n recordedAt: timestamp(\"recorded_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceTurnSource: uniqueIndex(\"model_call_facts_workspace_turn_source_uq\").on(\n table.workspaceId,\n table.turnId,\n table.sourceKey,\n ),\n workspaceOccurred: index(\"model_call_facts_workspace_occurred_idx\").on(\n table.workspaceId,\n table.occurredAt,\n ),\n workspaceProviderModelOccurred: index(\n \"model_call_facts_workspace_provider_model_occurred_idx\",\n ).on(table.workspaceId, table.provider, table.model, table.occurredAt),\n workspaceSessionOccurred: index(\"model_call_facts_workspace_session_occurred_idx\").on(\n table.workspaceId,\n table.sessionId,\n table.occurredAt,\n ),\n workspaceScheduledTaskOccurred: index(\"model_call_facts_workspace_scheduled_task_occurred_idx\")\n .on(table.workspaceId, table.scheduledTaskId, table.occurredAt)\n .where(sql`${table.scheduledTaskId} is not null`),\n workspaceAccount: foreignKey({\n name: \"model_call_facts_workspace_account_fk\",\n columns: [table.workspaceId, table.accountId],\n foreignColumns: [workspaces.id, workspaces.accountId],\n }).onDelete(\"cascade\"),\n billingPathValid: check(\n \"model_call_facts_billing_path_check\",\n sql`${table.billingPath} in ('opengeni_credits', 'external')`,\n ),\n pricedCostNonNegative: check(\n \"model_call_facts_priced_cost_check\",\n sql`${table.pricedCostMicros} >= 0`,\n ),\n initiatorConsistent: check(\n \"model_call_facts_initiator_check\",\n sql`(${table.initiatorKind} is null and ${table.initiatorSubjectId} is null)\n or (${table.initiatorKind} in ('subject', 'service')\n and ${table.initiatorSubjectId} is not null\n and octet_length(${table.initiatorSubjectId}) between 1 and 1024)`,\n ),\n sourceKeyBytes: check(\n \"model_call_facts_source_key_bytes_check\",\n sql`octet_length(${table.sourceKey}) between 1 and 1024`,\n ),\n providerBytes: check(\n \"model_call_facts_provider_bytes_check\",\n sql`octet_length(${table.provider}) between 1 and 256`,\n ),\n providerApiBytes: check(\n \"model_call_facts_provider_api_bytes_check\",\n sql`octet_length(${table.providerApi}) between 1 and 256`,\n ),\n modelBytes: check(\n \"model_call_facts_model_bytes_check\",\n sql`octet_length(${table.model}) between 1 and 512`,\n ),\n }),\n);\n\n/** Singleton, migration-installed gate. Standalone defaults keep both off. */\nexport const hostExportConfig = pgTable(\n \"host_export_config\",\n {\n id: integer(\"id\").primaryKey().default(1),\n sessionEventsEnabled: boolean(\"session_events_enabled\").notNull().default(false),\n usageEventsEnabled: boolean(\"usage_events_enabled\").notNull().default(false),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n singleton: check(\"host_export_config_singleton_check\", sql`${table.id} = 1`),\n }),\n);\n\n/**\n * Transactional delivery buffer. It intentionally has no tenant/source FKs:\n * a workspace deletion must not erase an already-committed, unacknowledged\n * host fact. Payloads are sanitized/bounded before they reach this table.\n */\nexport const hostExportOutbox = pgTable(\n \"host_export_outbox\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n exportKind: text(\"export_kind\").notNull(),\n exportCursor: bigint(\"export_cursor\", { mode: \"bigint\" }),\n sourceId: uuid(\"source_id\").notNull(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n sessionId: uuid(\"session_id\"),\n rootSessionId: uuid(\"root_session_id\"),\n turnId: uuid(\"turn_id\"),\n turnGeneration: integer(\"turn_generation\"),\n turnAttemptId: uuid(\"turn_attempt_id\"),\n sessionSequence: integer(\"session_sequence\"),\n clientEventId: text(\"client_event_id\"),\n turnAssociation: text(\"turn_association\"),\n duplicateOfEventId: uuid(\"duplicate_of_event_id\"),\n duplicateReason: text(\"duplicate_reason\"),\n eventType: text(\"event_type\").notNull(),\n idempotencyKey: text(\"idempotency_key\").notNull(),\n initiator: jsonb(\"initiator\").$type<Record<string, unknown> | null>(),\n initiatorContext: jsonb(\"initiator_context\")\n .$type<Record<string, unknown>>()\n .notNull()\n .default({}),\n origin: text(\"origin\"),\n payload: jsonb(\"payload\").$type<unknown>().notNull(),\n envelopeBytes: integer(\"envelope_bytes\").notNull(),\n occurredAt: timestamp(\"occurred_at\", { withTimezone: true }).notNull(),\n sourceRecordedAt: timestamp(\"source_recorded_at\", { withTimezone: true }).notNull(),\n enqueuedAt: timestamp(\"enqueued_at\", { withTimezone: true }).notNull(),\n },\n (table) => ({\n kindValid: check(\n \"host_export_outbox_kind_check\",\n sql`${table.exportKind} in ('session_event', 'usage_event')`,\n ),\n rootSessionCaptured: check(\n \"host_export_outbox_root_session_check\",\n sql`${table.sessionId} is null or ${table.rootSessionId} is not null`,\n ),\n sourceUnique: uniqueIndex(\"host_export_outbox_source_uq\").on(table.exportKind, table.sourceId),\n cursorUnique: uniqueIndex(\"host_export_outbox_cursor_uq\")\n .on(table.exportKind, table.exportCursor)\n .where(sql`${table.exportCursor} is not null`),\n unassigned: index(\"host_export_outbox_unassigned_idx\")\n .on(table.exportKind, table.enqueuedAt, table.id)\n .where(sql`${table.exportCursor} is null`),\n unassignedSession: index(\"host_export_outbox_unassigned_session_idx\")\n .on(table.exportKind, table.sessionId, table.sessionSequence)\n .where(sql`${table.exportCursor} is null and ${table.sessionId} is not null`),\n contextBytes: check(\n \"host_export_outbox_context_bytes_check\",\n sql`octet_length(${table.initiatorContext}::text) <= 4096`,\n ),\n originValid: check(\n \"host_export_outbox_origin_check\",\n sql`${table.origin} is null or ${table.origin} in (\n 'user', 'scheduled_task', 'api', 'goal', 'system', 'compaction'\n )`,\n ),\n }),\n);\n\nexport const hostExportCursorState = pgTable(\n \"host_export_cursor_state\",\n {\n exportKind: text(\"export_kind\").primaryKey(),\n nextCursor: bigint(\"next_cursor\", { mode: \"bigint\" }).notNull().default(1n),\n prunedThrough: bigint(\"pruned_through\", { mode: \"bigint\" }).notNull().default(0n),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n kindValid: check(\n \"host_export_cursor_state_kind_check\",\n sql`${table.exportKind} in ('session_event', 'usage_event')`,\n ),\n cursorValid: check(\n \"host_export_cursor_state_next_check\",\n sql`${table.nextCursor} > 0 and ${table.prunedThrough} >= 0\n and ${table.prunedThrough} < ${table.nextCursor}`,\n ),\n }),\n);\n\n/** Named at-least-once consumer checkpoint and one-batch lease. */\nexport const hostExportConsumers = pgTable(\n \"host_export_consumers\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n consumerId: text(\"consumer_id\").notNull(),\n exportKind: text(\"export_kind\").notNull(),\n checkpoint: bigint(\"checkpoint\", { mode: \"bigint\" }).notNull().default(0n),\n enabled: boolean(\"enabled\").notNull().default(true),\n leaseToken: uuid(\"lease_token\"),\n leaseHolderId: text(\"lease_holder_id\"),\n leaseExpiresAt: timestamp(\"lease_expires_at\", { withTimezone: true }),\n leaseFrom: bigint(\"lease_from\", { mode: \"bigint\" }),\n leaseThrough: bigint(\"lease_through\", { mode: \"bigint\" }),\n consecutiveFailures: integer(\"consecutive_failures\").notNull().default(0),\n nextAttemptAt: timestamp(\"next_attempt_at\", { withTimezone: true }).notNull().defaultNow(),\n lastError: text(\"last_error\"),\n lastErrorAt: timestamp(\"last_error_at\", { withTimezone: true }),\n blockedAt: timestamp(\"blocked_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n consumerKind: uniqueIndex(\"host_export_consumers_kind_id_uq\").on(\n table.exportKind,\n table.consumerId,\n ),\n kindValid: check(\n \"host_export_consumers_kind_check\",\n sql`${table.exportKind} in ('session_event', 'usage_event')`,\n ),\n checkpointValid: check(\"host_export_consumers_checkpoint_check\", sql`${table.checkpoint} >= 0`),\n due: index(\"host_export_consumers_due_idx\").on(\n table.enabled,\n table.blockedAt,\n table.nextAttemptAt,\n ),\n }),\n);\n\n/** Explicit poison-row disposition; transient failures never write here. */\nexport const hostExportDeadLetters = pgTable(\n \"host_export_dead_letters\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n consumerId: text(\"consumer_id\").notNull(),\n exportKind: text(\"export_kind\").notNull(),\n exportCursor: bigint(\"export_cursor\", { mode: \"bigint\" }).notNull(),\n sourceId: uuid(\"source_id\").notNull(),\n reason: text(\"reason\").notNull(),\n envelope: jsonb(\"envelope\").$type<Record<string, unknown>>().notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n consumerCursor: uniqueIndex(\"host_export_dead_letters_consumer_cursor_uq\").on(\n table.exportKind,\n table.consumerId,\n table.exportCursor,\n ),\n kindValid: check(\n \"host_export_dead_letters_kind_check\",\n sql`${table.exportKind} in ('session_event', 'usage_event')`,\n ),\n reasonValid: check(\n \"host_export_dead_letters_reason_check\",\n sql`length(${table.reason}) between 1 and 500`,\n ),\n envelopeBytes: check(\n \"host_export_dead_letters_envelope_bytes_check\",\n sql`pg_column_size(${table.envelope}) <= 114688`,\n ),\n }),\n);\n\nexport const creditLedgerEntries = pgTable(\n \"credit_ledger_entries\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\").references(() => workspaces.id, {\n onDelete: \"set null\",\n }),\n type: text(\"type\").notNull(),\n amountMicros: bigint(\"amount_micros\", { mode: \"number\" }).notNull(),\n currency: text(\"currency\").notNull().default(\"usd\"),\n sourceType: text(\"source_type\"),\n sourceId: text(\"source_id\"),\n idempotencyKey: text(\"idempotency_key\").notNull(),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>().notNull().default({}),\n occurredAt: timestamp(\"occurred_at\", { withTimezone: true }).notNull().defaultNow(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n idempotency: uniqueIndex(\"credit_ledger_entries_idempotency_idx\").on(table.idempotencyKey),\n accountCreated: index(\"credit_ledger_entries_account_created_idx\").on(\n table.accountId,\n table.createdAt,\n ),\n }),\n);\n\nexport const billingCustomers = pgTable(\n \"billing_customers\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n provider: text(\"provider\").notNull().default(\"stripe\"),\n providerCustomerId: text(\"provider_customer_id\").notNull(),\n email: text(\"email\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n accountProvider: uniqueIndex(\"billing_customers_account_provider_idx\").on(\n table.accountId,\n table.provider,\n ),\n providerCustomer: uniqueIndex(\"billing_customers_provider_customer_idx\").on(\n table.provider,\n table.providerCustomerId,\n ),\n }),\n);\n\nexport const stripeWebhookEvents = pgTable(\"stripe_webhook_events\", {\n id: text(\"id\").primaryKey(),\n type: text(\"type\").notNull(),\n livemode: text(\"livemode\").notNull().default(\"false\"),\n payload: jsonb(\"payload\").$type<unknown>().notNull(),\n processedAt: timestamp(\"processed_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n});\n\nexport const auditEvents = pgTable(\n \"audit_events\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").references(() => managedAccounts.id, {\n onDelete: \"set null\",\n }),\n workspaceId: uuid(\"workspace_id\").references(() => workspaces.id, {\n onDelete: \"set null\",\n }),\n subjectId: text(\"subject_id\"),\n action: text(\"action\").notNull(),\n targetType: text(\"target_type\"),\n targetId: text(\"target_id\"),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>().notNull().default({}),\n occurredAt: timestamp(\"occurred_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n accountCreated: index(\"audit_events_account_created_idx\").on(table.accountId, table.occurredAt),\n workspaceCreated: index(\"audit_events_workspace_created_idx\").on(\n table.workspaceId,\n table.occurredAt,\n ),\n }),\n);\n\nexport const packInstallations = pgTable(\n \"pack_installations\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n packId: text(\"pack_id\").notNull(),\n status: text(\"status\").notNull().default(\"active\"),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>().notNull().default({}),\n enabledAt: timestamp(\"enabled_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspacePack: uniqueIndex(\"pack_installations_workspace_pack_idx\").on(\n table.workspaceId,\n table.packId,\n ),\n status: index(\"pack_installations_workspace_status_idx\").on(table.workspaceId, table.status),\n }),\n);\n\nexport const workspacePacks = pgTable(\n \"workspace_packs\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n packId: text(\"pack_id\").notNull(),\n manifest: jsonb(\"manifest\").$type<Record<string, unknown>>().notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspacePack: uniqueIndex(\"workspace_packs_workspace_pack_idx\").on(\n table.workspaceId,\n table.packId,\n ),\n }),\n);\n\nexport const importBatches = pgTable(\n \"import_batches\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n source: text(\"source\").notNull(),\n snapshotDate: timestamp(\"snapshot_date\", { withTimezone: true }).notNull(),\n snapshotRef: text(\"snapshot_ref\"),\n attributionNote: text(\"attribution_note\").notNull(),\n importedCount: integer(\"imported_count\").notNull().default(0),\n skippedCount: integer(\"skipped_count\").notNull().default(0),\n quarantinedCount: integer(\"quarantined_count\").notNull().default(0),\n logoFailureCount: integer(\"logo_failure_count\").notNull().default(0),\n staleCount: integer(\"stale_count\").notNull().default(0),\n details: jsonb(\"details\").$type<Record<string, unknown>>().notNull().default({}),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n sourceSnapshot: index(\"import_batches_source_snapshot_idx\").on(\n table.source,\n table.snapshotDate,\n ),\n createdAt: index(\"import_batches_created_at_idx\").on(table.createdAt),\n }),\n);\n\nexport const capabilityCatalogItems = pgTable(\n \"capability_catalog_items\",\n {\n id: text(\"id\").notNull(),\n accountId: uuid(\"account_id\").references(() => managedAccounts.id, {\n onDelete: \"cascade\",\n }),\n workspaceId: uuid(\"workspace_id\").references(() => workspaces.id, {\n onDelete: \"cascade\",\n }),\n kind: text(\"kind\").notNull(),\n source: text(\"source\").notNull().default(\"manual\"),\n name: text(\"name\").notNull(),\n description: text(\"description\"),\n category: text(\"category\").notNull().default(\"custom\"),\n tags: jsonb(\"tags\").$type<string[]>().notNull().default([]),\n homepageUrl: text(\"homepage_url\"),\n endpointUrl: text(\"endpoint_url\"),\n installUrl: text(\"install_url\"),\n authModel: text(\"auth_model\"),\n providerDomain: text(\"provider_domain\"),\n surfaceType: text(\"surface_type\"),\n transport: text(\"transport\"),\n mcpUrl: text(\"mcp_url\"),\n authKind: text(\"auth_kind\"),\n credentialFacts: jsonb(\"credential_facts\")\n .$type<Array<Record<string, unknown>>>()\n .notNull()\n .default([]),\n tier: text(\"tier\"),\n provenance: text(\"provenance\"),\n logoAssetPath: text(\"logo_asset_path\"),\n importBatchId: uuid(\"import_batch_id\").references(() => importBatches.id, {\n onDelete: \"set null\",\n }),\n stale: boolean(\"stale\").notNull().default(false),\n staleAt: timestamp(\"stale_at\", { withTimezone: true }),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>().notNull().default({}),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceCapability: uniqueIndex(\"capability_catalog_items_workspace_capability_idx\").on(\n table.workspaceId,\n table.id,\n ),\n registrySurface: uniqueIndex(\"capability_catalog_items_registry_surface_idx\").on(\n table.source,\n table.providerDomain,\n table.mcpUrl,\n ),\n globalCapability: uniqueIndex(\"capability_catalog_items_global_capability_idx\")\n .on(table.id)\n .where(sql`${table.workspaceId} is null`),\n kind: index(\"capability_catalog_items_workspace_kind_idx\").on(table.workspaceId, table.kind),\n category: index(\"capability_catalog_items_workspace_category_idx\").on(\n table.workspaceId,\n table.category,\n ),\n source: index(\"capability_catalog_items_workspace_source_idx\").on(\n table.workspaceId,\n table.source,\n ),\n providerDomain: index(\"capability_catalog_items_provider_domain_idx\").on(table.providerDomain),\n importBatch: index(\"capability_catalog_items_import_batch_idx\").on(table.importBatchId),\n stale: index(\"capability_catalog_items_source_stale_idx\").on(table.source, table.stale),\n }),\n);\n\nexport const capabilityInstallations = pgTable(\n \"capability_installations\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n capabilityId: text(\"capability_id\").notNull(),\n kind: text(\"kind\").notNull(),\n status: text(\"status\").notNull().default(\"active\"),\n config: jsonb(\"config\").$type<Record<string, unknown>>().notNull().default({}),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>().notNull().default({}),\n enabledAt: timestamp(\"enabled_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceCapability: uniqueIndex(\"capability_installations_workspace_capability_idx\").on(\n table.workspaceId,\n table.capabilityId,\n ),\n kind: index(\"capability_installations_workspace_kind_idx\").on(table.workspaceId, table.kind),\n status: index(\"capability_installations_workspace_status_idx\").on(\n table.workspaceId,\n table.status,\n ),\n }),\n);\n\nexport const socialConnections = pgTable(\n \"social_connections\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n subjectId: text(\"subject_id\"),\n provider: text(\"provider\").notNull(),\n accountHandle: text(\"account_handle\").notNull(),\n accountName: text(\"account_name\"),\n externalAccountId: text(\"external_account_id\"),\n status: text(\"status\").notNull().default(\"connected\"),\n scopes: jsonb(\"scopes\").$type<string[]>().notNull().default([]),\n credentialRef: text(\"credential_ref\"),\n // AES-256-GCM envelope (environment-crypto v1 format) holding the OAuth\n // token bundle. Never exposed through contracts or MCP tools; only the\n // host-side social API client decrypts it.\n credentialEncrypted: text(\"credential_encrypted\"),\n tokenMetadata: jsonb(\"token_metadata\").$type<Record<string, unknown>>().notNull().default({}),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>().notNull().default({}),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceProviderHandle: uniqueIndex(\"social_connections_workspace_provider_handle_idx\")\n .on(table.workspaceId, table.provider, table.accountHandle)\n .where(sql`${table.subjectId} is null`),\n subjectProviderHandle: uniqueIndex(\"social_connections_subject_provider_handle_idx\")\n .on(table.workspaceId, table.subjectId, table.provider)\n .where(sql`${table.subjectId} is not null`),\n providerStatus: index(\"social_connections_workspace_provider_status_idx\").on(\n table.workspaceId,\n table.provider,\n table.status,\n ),\n subjectProviderStatus: index(\"social_connections_subject_provider_status_idx\").on(\n table.workspaceId,\n table.subjectId,\n table.provider,\n table.status,\n ),\n }),\n);\n\nexport const socialPosts = pgTable(\n \"social_posts\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n connectionId: uuid(\"connection_id\")\n .notNull()\n .references(() => socialConnections.id, { onDelete: \"cascade\" }),\n provider: text(\"provider\").notNull(),\n externalPostId: text(\"external_post_id\"),\n url: text(\"url\"),\n authorHandle: text(\"author_handle\"),\n text: text(\"text\").notNull(),\n publishedAt: timestamp(\"published_at\", { withTimezone: true }).notNull(),\n metrics: jsonb(\"metrics\").$type<Record<string, number>>().notNull().default({}),\n raw: jsonb(\"raw\").$type<Record<string, unknown>>().notNull().default({}),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n connectionExternalPost: uniqueIndex(\"social_posts_workspace_connection_external_post_idx\").on(\n table.workspaceId,\n table.connectionId,\n table.externalPostId,\n ),\n connectionPublished: index(\"social_posts_workspace_connection_published_idx\").on(\n table.workspaceId,\n table.connectionId,\n table.publishedAt,\n ),\n providerPublished: index(\"social_posts_workspace_provider_published_idx\").on(\n table.workspaceId,\n table.provider,\n table.publishedAt,\n ),\n }),\n);\n\n// Rigs (migration 0047): workspace-scoped, versioned sandbox machine definitions.\n// A rig is the named truth; each sandbox is a disposable fork of a rig version.\nexport const rigs = pgTable(\n \"rigs\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n name: text(\"name\").notNull(),\n description: text(\"description\"),\n // Attribution string: 'user:<subject>' | 'session:<id>' | 'system'.\n createdBy: text(\"created_by\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceName: uniqueIndex(\"rigs_workspace_name_idx\").on(table.workspaceId, table.name),\n workspaceCreated: index(\"rigs_workspace_created_idx\").on(table.workspaceId, table.createdAt),\n }),\n);\n\n// Append-only, content-immutable rig versions. Exactly one active per rig\n// (partial unique index). The domain layer never UPDATEs a content column; only\n// the `active` flag flips (activateRigVersion).\nexport const rigVersions = pgTable(\n \"rig_versions\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n rigId: uuid(\"rig_id\")\n .notNull()\n .references(() => rigs.id, { onDelete: \"cascade\" }),\n version: integer(\"version\").notNull(),\n image: text(\"image\"),\n setupScript: text(\"setup_script\"),\n // Self-declared health checks: [{ name, command }].\n checks: jsonb(\"checks\").$type<Array<{ name: string; command: string }>>().notNull().default([]),\n // Registered credential-hook names (resolved to hook implementations in M3).\n credentialHooks: jsonb(\"credential_hooks\").$type<string[]>().notNull().default([]),\n // Variable-set ids layered below the session's variable set at run time (M3).\n defaultVariableSetIds: jsonb(\"default_variable_set_ids\")\n .$type<string[]>()\n .notNull()\n .default([]),\n changelog: text(\"changelog\"),\n createdBy: text(\"created_by\"),\n active: boolean(\"active\").notNull().default(false),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n rigVersion: uniqueIndex(\"rig_versions_rig_version_idx\").on(table.rigId, table.version),\n // At most one active version per rig — the single-active invariant, in the DB.\n rigActive: uniqueIndex(\"rig_versions_rig_active_idx\")\n .on(table.rigId)\n .where(sql`${table.active}`),\n workspaceRig: index(\"rig_versions_workspace_rig_idx\").on(\n table.workspaceId,\n table.rigId,\n table.version,\n ),\n }),\n);\n\n// Proposed/verified rig changes (M4 substrate). M2 creates the table + CRUD only;\n// verification/auto-merge/promotion land in M4.\nexport const rigChanges = pgTable(\n \"rig_changes\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\")\n .notNull()\n .references(() => managedAccounts.id, { onDelete: \"cascade\" }),\n workspaceId: uuid(\"workspace_id\")\n .notNull()\n .references(() => workspaces.id, { onDelete: \"cascade\" }),\n rigId: uuid(\"rig_id\")\n .notNull()\n .references(() => rigs.id, { onDelete: \"cascade\" }),\n baseVersionId: uuid(\"base_version_id\").references(() => rigVersions.id, {\n onDelete: \"set null\",\n }),\n // 'setup_append' | 'definition_edit' (CHECK in migration 0047).\n kind: text(\"kind\").notNull(),\n payload: jsonb(\"payload\").$type<Record<string, unknown>>().notNull(),\n // 'proposed' | 'verifying' | 'merged' | 'rejected' | 'failed' (CHECK in 0047).\n status: text(\"status\").notNull().default(\"proposed\"),\n proposedBy: text(\"proposed_by\"),\n verification: jsonb(\"verification\").$type<Record<string, unknown>>(),\n resultVersionId: uuid(\"result_version_id\").references(() => rigVersions.id, {\n onDelete: \"set null\",\n }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceRig: index(\"rig_changes_workspace_rig_idx\").on(\n table.workspaceId,\n table.rigId,\n table.createdAt,\n ),\n workspaceStatus: index(\"rig_changes_workspace_status_idx\").on(table.workspaceId, table.status),\n }),\n);\n\nexport * from \"./workspace-instruction-policies-schema\";\nexport * from \"./preference-registry-schema\";\nexport * from \"./memory-governance-schema\";\nexport * from \"./scoped-knowledge-schema\";\nexport * from \"./transcription-recordings-schema\";\n","import { sql } from \"drizzle-orm\";\nimport type { WorkspaceInstructionPolicySnapshotEntry } from \"@opengeni/contracts\";\nimport {\n bigint,\n check,\n index,\n integer,\n jsonb,\n pgTable,\n text,\n timestamp,\n uniqueIndex,\n uuid,\n} from \"drizzle-orm/pg-core\";\n\n// Foreign keys and the cross-row revision/head integrity triggers live in the\n// SQL migration. Keeping this additive schema leaf independent avoids a cycle\n// back into schema.ts while retaining one canonical Drizzle namespace export.\n\nexport const workspaceInstructionPolicyRevisions = pgTable(\n \"workspace_instruction_policy_revisions\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n operationId: uuid(\"operation_id\"),\n requestFingerprint: text(\"request_fingerprint\"),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n revision: bigint(\"revision\", { mode: \"number\" })\n .notNull()\n .default(sql`nextval('workspace_instruction_policy_revision_seq')`),\n kind: text(\"kind\").notNull(),\n scope: text(\"scope\").notNull(),\n roleKey: text(\"role_key\"),\n content: text(\"content\").notNull(),\n contentHash: text(\"content_hash\").notNull(),\n provenanceSource: text(\"provenance_source\").notNull(),\n provenanceSourceId: text(\"provenance_source_id\"),\n supersedesRevisionId: uuid(\"supersedes_revision_id\"),\n createdBySubjectId: text(\"created_by_subject_id\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceOperation: uniqueIndex(\"workspace_instruction_policy_revisions_workspace_operation_uq\")\n .on(table.workspaceId, table.operationId)\n .where(sql`${table.operationId} is not null`),\n operationReceipt: check(\n \"workspace_instruction_policy_revisions_operation_receipt_chk\",\n sql`(\n (${table.operationId} is null and ${table.requestFingerprint} is null)\n or (\n ${table.operationId} is not null\n and ${table.requestFingerprint} ~ '^[0-9a-f]{64}$'\n )\n )`,\n ),\n workspaceRevision: uniqueIndex(\n \"workspace_instruction_policy_revisions_workspace_revision_uq\",\n ).on(table.workspaceId, table.revision),\n workspaceHistory: index(\"workspace_instruction_policy_revisions_workspace_history_idx\").on(\n table.workspaceId,\n table.kind,\n table.scope,\n table.roleKey,\n table.revision,\n ),\n target: check(\n \"workspace_instruction_policy_revisions_target_chk\",\n sql`(\n (${table.kind} = 'charter' and ${table.scope} = 'global' and ${table.roleKey} is null)\n or (${table.kind} = 'policy' and ${table.scope} = 'global' and ${table.roleKey} is null)\n or (${table.kind} = 'policy' and ${table.scope} = 'role' and ${table.roleKey} is not null)\n )`,\n ),\n }),\n);\n\nexport const workspaceInstructionPolicyHeads = pgTable(\n \"workspace_instruction_policy_heads\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n kind: text(\"kind\").notNull(),\n scope: text(\"scope\").notNull(),\n roleKey: text(\"role_key\"),\n revisionId: uuid(\"revision_id\").notNull(),\n revision: bigint(\"revision\", { mode: \"number\" }).notNull(),\n contentHash: text(\"content_hash\").notNull(),\n activationVersion: bigint(\"activation_version\", { mode: \"number\" }).notNull(),\n activatedAt: timestamp(\"activated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n charter: uniqueIndex(\"workspace_instruction_policy_heads_charter_uq\")\n .on(table.workspaceId)\n .where(sql`${table.kind} = 'charter'`),\n globalPolicy: uniqueIndex(\"workspace_instruction_policy_heads_global_policy_uq\")\n .on(table.workspaceId)\n .where(sql`${table.kind} = 'policy' and ${table.scope} = 'global'`),\n rolePolicy: uniqueIndex(\"workspace_instruction_policy_heads_role_policy_uq\")\n .on(table.workspaceId, table.roleKey)\n .where(sql`${table.kind} = 'policy' and ${table.scope} = 'role'`),\n target: check(\n \"workspace_instruction_policy_heads_target_chk\",\n sql`(\n (${table.kind} = 'charter' and ${table.scope} = 'global' and ${table.roleKey} is null)\n or (${table.kind} = 'policy' and ${table.scope} = 'global' and ${table.roleKey} is null)\n or (${table.kind} = 'policy' and ${table.scope} = 'role' and ${table.roleKey} is not null)\n )`,\n ),\n }),\n);\n\nexport const workspaceInstructionPolicyActivationEvents = pgTable(\n \"workspace_instruction_policy_activation_events\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n operationId: uuid(\"operation_id\"),\n requestFingerprint: text(\"request_fingerprint\"),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n kind: text(\"kind\").notNull(),\n scope: text(\"scope\").notNull(),\n roleKey: text(\"role_key\"),\n type: text(\"type\").notNull(),\n activationVersion: bigint(\"activation_version\", { mode: \"number\" }).notNull(),\n oldRevisionId: uuid(\"old_revision_id\"),\n oldRevision: bigint(\"old_revision\", { mode: \"number\" }),\n oldContentHash: text(\"old_content_hash\"),\n newRevisionId: uuid(\"new_revision_id\").notNull(),\n newRevision: bigint(\"new_revision\", { mode: \"number\" }).notNull(),\n newContentHash: text(\"new_content_hash\").notNull(),\n actorSubjectId: text(\"actor_subject_id\").notNull(),\n reason: text(\"reason\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceOperation: uniqueIndex(\"workspace_instruction_policy_events_workspace_operation_uq\")\n .on(table.workspaceId, table.operationId)\n .where(sql`${table.operationId} is not null`),\n operationReceipt: check(\n \"workspace_instruction_policy_events_operation_receipt_chk\",\n sql`(\n (${table.operationId} is null and ${table.requestFingerprint} is null)\n or (\n ${table.operationId} is not null\n and ${table.requestFingerprint} ~ '^[0-9a-f]{64}$'\n )\n )`,\n ),\n workspaceActivationVersion: uniqueIndex(\n \"workspace_instruction_policy_events_target_version_uq\",\n ).on(\n table.workspaceId,\n table.kind,\n table.scope,\n sql`coalesce(${table.roleKey}, '')`,\n table.activationVersion,\n ),\n workspaceTimeline: index(\"workspace_instruction_policy_events_workspace_time_idx\").on(\n table.workspaceId,\n table.createdAt,\n table.id,\n ),\n target: check(\n \"workspace_instruction_policy_activation_events_target_chk\",\n sql`(\n (${table.kind} = 'charter' and ${table.scope} = 'global' and ${table.roleKey} is null)\n or (${table.kind} = 'policy' and ${table.scope} = 'global' and ${table.roleKey} is null)\n or (${table.kind} = 'policy' and ${table.scope} = 'role' and ${table.roleKey} is not null)\n )`,\n ),\n }),\n);\n\nexport const workspaceInstructionPolicyOnboardingProposals = pgTable(\n \"workspace_instruction_policy_onboarding_proposals\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n operationId: uuid(\"operation_id\").notNull(),\n requestFingerprint: text(\"request_fingerprint\").notNull(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n kind: text(\"kind\").notNull(),\n scope: text(\"scope\").notNull(),\n roleKey: text(\"role_key\"),\n sourceId: text(\"source_id\").notNull(),\n sourceVersion: text(\"source_version\").notNull(),\n confidenceBps: integer(\"confidence_bps\").notNull(),\n baselineRevisionId: uuid(\"baseline_revision_id\"),\n baselineRevision: bigint(\"baseline_revision\", { mode: \"number\" }),\n baselineContentHash: text(\"baseline_content_hash\"),\n baselineActivationVersion: bigint(\"baseline_activation_version\", { mode: \"number\" }).notNull(),\n baselineActivatedAt: timestamp(\"baseline_activated_at\", { withTimezone: true }),\n draftRevisionId: uuid(\"draft_revision_id\").notNull(),\n draftRevision: bigint(\"draft_revision\", { mode: \"number\" }).notNull(),\n draftContentHash: text(\"draft_content_hash\").notNull(),\n status: text(\"status\").notNull().default(\"proposed\"),\n createdBySubjectId: text(\"created_by_subject_id\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n workspaceOperation: uniqueIndex(\n \"workspace_instruction_policy_onboarding_proposals_workspace_operation_uq\",\n ).on(table.workspaceId, table.operationId),\n sourceVersionTarget: uniqueIndex(\n \"workspace_instruction_policy_onboarding_proposals_source_version_target_uq\",\n ).on(\n table.workspaceId,\n table.kind,\n table.scope,\n sql`coalesce(${table.roleKey}, '')`,\n table.sourceId,\n table.sourceVersion,\n ),\n workspaceTimeline: index(\n \"workspace_instruction_policy_onboarding_proposals_workspace_time_idx\",\n ).on(table.workspaceId, table.createdAt, table.id),\n operationReceipt: check(\n \"workspace_instruction_policy_onboarding_proposals_operation_receipt_chk\",\n sql`${table.requestFingerprint} ~ '^[0-9a-f]{64}$'`,\n ),\n target: check(\n \"workspace_instruction_policy_onboarding_proposals_target_chk\",\n sql`(\n (${table.kind} = 'charter' and ${table.scope} = 'global' and ${table.roleKey} is null)\n or (${table.kind} = 'policy' and ${table.scope} = 'global' and ${table.roleKey} is null)\n or (${table.kind} = 'policy' and ${table.scope} = 'role' and ${table.roleKey} is not null)\n )`,\n ),\n source: check(\n \"workspace_instruction_policy_onboarding_proposals_source_chk\",\n sql`length(btrim(${table.sourceId})) between 1 and 512\n and length(btrim(${table.sourceVersion})) between 1 and 256\n and ${table.confidenceBps} between 0 and 10000`,\n ),\n baseline: check(\n \"workspace_instruction_policy_onboarding_proposals_baseline_chk\",\n sql`(\n ${table.baselineRevisionId} is null\n and ${table.baselineRevision} is null\n and ${table.baselineContentHash} is null\n and ${table.baselineActivationVersion} = 0\n and ${table.baselineActivatedAt} is null\n ) or (\n ${table.baselineRevisionId} is not null\n and ${table.baselineRevision} > 0\n and ${table.baselineContentHash} ~ '^[0-9a-f]{64}$'\n and ${table.baselineActivationVersion} > 0\n and ${table.baselineActivatedAt} is not null\n )`,\n ),\n draft: check(\n \"workspace_instruction_policy_onboarding_proposals_draft_chk\",\n sql`${table.draftRevision} > 0\n and ${table.draftContentHash} ~ '^[0-9a-f]{64}$'\n and ${table.status} = 'proposed'`,\n ),\n }),\n);\n\nexport const workspaceInstructionPolicySnapshots = pgTable(\n \"workspace_instruction_policy_snapshots\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n sessionId: uuid(\"session_id\").notNull(),\n turnId: uuid(\"turn_id\").notNull(),\n attemptId: uuid(\"attempt_id\").notNull(),\n executionGeneration: integer(\"execution_generation\").notNull(),\n policyRole: text(\"policy_role\"),\n roleSource: text(\"role_source\").notNull(),\n entries: jsonb(\"entries\").$type<WorkspaceInstructionPolicySnapshotEntry[]>().notNull(),\n entryHash: text(\"entry_hash\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n attempt: uniqueIndex(\"workspace_instruction_policy_snapshots_attempt_uq\").on(\n table.accountId,\n table.workspaceId,\n table.attemptId,\n ),\n workspaceTimeline: index(\"workspace_instruction_policy_snapshots_workspace_time_idx\").on(\n table.workspaceId,\n table.createdAt,\n table.id,\n ),\n entriesShape: check(\n \"workspace_instruction_policy_snapshots_entries_chk\",\n sql`jsonb_typeof(${table.entries}) = 'array' and jsonb_array_length(${table.entries}) <= 3`,\n ),\n roleSourceValid: check(\n \"workspace_instruction_policy_snapshots_role_source_chk\",\n sql`${table.roleSource} in ('session_binding', 'metadata_fallback', 'none', 'invalid_metadata_fallback')`,\n ),\n }),\n);\n","import { sql } from \"drizzle-orm\";\nimport {\n bigint,\n boolean,\n check,\n index,\n integer,\n jsonb,\n pgTable,\n text,\n timestamp,\n uniqueIndex,\n uuid,\n} from \"drizzle-orm/pg-core\";\nimport type { PreferenceRegistryDescriptor } from \"@opengeni/contracts\";\n\n// Foreign keys and cross-row integrity triggers are migration-owned. This leaf\n// stays cycle-free so schema.ts can expose the registry as one additive domain.\nexport const preferenceRegistryPreferences = pgTable(\n \"preference_registry_preferences\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n stableKey: text(\"stable_key\").notNull(),\n scope: text(\"scope\").notNull(),\n scopeWorkspaceId: uuid(\"scope_workspace_id\"),\n scopeSubjectId: text(\"scope_subject_id\"),\n status: text(\"status\").notNull().default(\"proposed\"),\n scopeVersion: integer(\"scope_version\").notNull().default(1),\n activationVersion: integer(\"activation_version\").notNull().default(0),\n activeRevisionId: uuid(\"active_revision_id\"),\n activeRevision: bigint(\"active_revision\", { mode: \"number\" }),\n activeContentHash: text(\"active_content_hash\"),\n supersededByPreferenceId: uuid(\"superseded_by_preference_id\"),\n createdBySubjectId: text(\"created_by_subject_id\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n organizationStableKey: uniqueIndex(\"preference_registry_preferences_organization_key_uq\")\n .on(table.accountId, table.stableKey)\n .where(sql`${table.scope} = 'organization'`),\n workspaceStableKey: uniqueIndex(\"preference_registry_preferences_workspace_key_uq\")\n .on(table.accountId, table.scopeWorkspaceId, table.stableKey)\n .where(sql`${table.scope} = 'workspace'`),\n userStableKey: uniqueIndex(\"preference_registry_preferences_user_key_uq\")\n .on(table.accountId, table.scopeSubjectId, table.stableKey)\n .where(sql`${table.scope} = 'user'`),\n applicable: index(\"preference_registry_preferences_applicable_idx\").on(\n table.accountId,\n table.scope,\n table.scopeWorkspaceId,\n table.scopeSubjectId,\n table.status,\n table.stableKey,\n ),\n scopeShape: check(\n \"preference_registry_preferences_scope_shape_chk\",\n sql`(\n (${table.scope} = 'organization' and ${table.scopeWorkspaceId} is null and ${table.scopeSubjectId} is null)\n or (${table.scope} = 'workspace' and ${table.scopeWorkspaceId} is not null and ${table.scopeSubjectId} is null)\n or (${table.scope} = 'user' and ${table.scopeWorkspaceId} is null and ${table.scopeSubjectId} is not null)\n )`,\n ),\n }),\n);\n\nexport const preferenceRegistryRevisions = pgTable(\n \"preference_registry_revisions\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n preferenceId: uuid(\"preference_id\").notNull(),\n revision: bigint(\"revision\", { mode: \"number\" })\n .notNull()\n .default(sql`nextval('preference_registry_revision_seq')`),\n title: text(\"title\").notNull(),\n description: text(\"description\").notNull(),\n content: text(\"content\").notNull(),\n contentHash: text(\"content_hash\").notNull(),\n precedenceRank: integer(\"precedence_rank\").notNull().default(0),\n conflictStrategy: text(\"conflict_strategy\").notNull(),\n conflictsWith: jsonb(\"conflicts_with\").$type<string[]>().notNull().default([]),\n provenanceSource: text(\"provenance_source\").notNull(),\n provenanceSourceId: text(\"provenance_source_id\"),\n trust: text(\"trust\").notNull(),\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }),\n correctsRevisionId: uuid(\"corrects_revision_id\"),\n createdBySubjectId: text(\"created_by_subject_id\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n preferenceRevision: uniqueIndex(\"preference_registry_revisions_preference_revision_uq\").on(\n table.preferenceId,\n table.revision,\n ),\n history: index(\"preference_registry_revisions_history_idx\").on(\n table.preferenceId,\n table.revision,\n ),\n }),\n);\n\nexport const preferenceRegistryEvents = pgTable(\n \"preference_registry_events\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n preferenceId: uuid(\"preference_id\").notNull(),\n type: text(\"type\").notNull(),\n version: integer(\"version\").notNull(),\n oldRevisionId: uuid(\"old_revision_id\"),\n newRevisionId: uuid(\"new_revision_id\"),\n oldScope: text(\"old_scope\"),\n oldWorkspaceId: uuid(\"old_workspace_id\"),\n oldSubjectId: text(\"old_subject_id\"),\n newScope: text(\"new_scope\"),\n newWorkspaceId: uuid(\"new_workspace_id\"),\n newSubjectId: text(\"new_subject_id\"),\n relatedPreferenceId: uuid(\"related_preference_id\"),\n actorSubjectId: text(\"actor_subject_id\").notNull(),\n reason: text(\"reason\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n preferenceVersion: uniqueIndex(\"preference_registry_events_preference_version_uq\").on(\n table.preferenceId,\n table.version,\n ),\n timeline: index(\"preference_registry_events_timeline_idx\").on(\n table.preferenceId,\n table.createdAt,\n table.id,\n ),\n }),\n);\n\nexport const preferenceRegistrySnapshots = pgTable(\n \"preference_registry_snapshots\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n sessionId: uuid(\"session_id\").notNull(),\n turnId: uuid(\"turn_id\").notNull(),\n attemptId: uuid(\"attempt_id\").notNull(),\n executionGeneration: integer(\"execution_generation\").notNull(),\n initiatingHumanSubjectId: text(\"initiating_human_subject_id\").notNull(),\n descriptors: jsonb(\"descriptors\").$type<PreferenceRegistryDescriptor[]>().notNull(),\n descriptorHash: text(\"descriptor_hash\").notNull(),\n truncated: boolean(\"truncated\").notNull().default(false),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n attempt: uniqueIndex(\"preference_registry_snapshots_attempt_uq\").on(\n table.accountId,\n table.workspaceId,\n table.attemptId,\n ),\n humanTimeline: index(\"preference_registry_snapshots_human_timeline_idx\").on(\n table.workspaceId,\n table.initiatingHumanSubjectId,\n table.createdAt,\n ),\n descriptorBytes: check(\n \"preference_registry_snapshots_descriptor_bytes_chk\",\n sql`octet_length(convert_to(${table.descriptors}::text, 'UTF8')) <= 16384`,\n ),\n }),\n);\n","import { sql } from \"drizzle-orm\";\nimport {\n check,\n index,\n integer,\n jsonb,\n pgTable,\n text,\n timestamp,\n uniqueIndex,\n uuid,\n} from \"drizzle-orm/pg-core\";\n\n// Foreign keys, immutable-history triggers, and lifecycle-only mutation guards\n// live in migration 0152. Keeping this leaf cycle-free lets schema.ts expose the\n// additive memory governance tables without importing knowledgeMemories here.\nexport const knowledgeMemoryRelationships = pgTable(\n \"knowledge_memory_relationships\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n sourceMemoryId: uuid(\"source_memory_id\").notNull(),\n targetMemoryId: uuid(\"target_memory_id\").notNull(),\n relationshipType: text(\"relationship_type\").notNull(),\n version: integer(\"version\").notNull().default(1),\n createdByEventId: uuid(\"created_by_event_id\").notNull(),\n removedByEventId: uuid(\"removed_by_event_id\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n removedAt: timestamp(\"removed_at\", { withTimezone: true }),\n },\n (table) => ({\n activeDirectedEdge: uniqueIndex(\"knowledge_memory_relationships_active_edge_uq\")\n .on(table.workspaceId, table.sourceMemoryId, table.targetMemoryId, table.relationshipType)\n .where(sql`${table.removedByEventId} is null`),\n activeSymmetricEdge: uniqueIndex(\"knowledge_memory_relationships_active_symmetric_edge_uq\")\n .on(\n table.workspaceId,\n table.relationshipType,\n sql`least(${table.sourceMemoryId}, ${table.targetMemoryId})`,\n sql`greatest(${table.sourceMemoryId}, ${table.targetMemoryId})`,\n )\n .where(\n sql`${table.removedByEventId} is null and ${table.relationshipType} in ('conflicts_with', 'related_to')`,\n ),\n source: index(\"knowledge_memory_relationships_source_idx\").on(\n table.workspaceId,\n table.sourceMemoryId,\n table.createdAt.desc(),\n table.id,\n ),\n target: index(\"knowledge_memory_relationships_target_idx\").on(\n table.workspaceId,\n table.targetMemoryId,\n table.createdAt.desc(),\n table.id,\n ),\n typeValid: check(\n \"knowledge_memory_relationships_type_chk\",\n sql`${table.relationshipType} in ('derived_from', 'supersedes', 'corrects', 'conflicts_with', 'related_to', 'depends_on', 'applies_to')`,\n ),\n distinctEndpoints: check(\n \"knowledge_memory_relationships_distinct_chk\",\n sql`${table.sourceMemoryId} <> ${table.targetMemoryId}`,\n ),\n versionPositive: check(\"knowledge_memory_relationships_version_chk\", sql`${table.version} > 0`),\n removedShape: check(\n \"knowledge_memory_relationships_removed_shape_chk\",\n sql`(${table.removedByEventId} is null and ${table.removedAt} is null) or (${table.removedByEventId} is not null and ${table.removedAt} is not null)`,\n ),\n workspaceIdentity: uniqueIndex(\"knowledge_memory_relationships_workspace_id_uq\").on(\n table.workspaceId,\n table.id,\n ),\n }),\n);\n\nexport const knowledgeMemoryLifecycleEvents = pgTable(\n \"knowledge_memory_lifecycle_events\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n operationId: uuid(\"operation_id\").notNull(),\n action: text(\"action\").notNull(),\n operationType: text(\"operation_type\").notNull(),\n targetMemoryId: uuid(\"target_memory_id\").notNull(),\n relatedMemoryId: uuid(\"related_memory_id\"),\n relationshipId: uuid(\"relationship_id\"),\n relationshipType: text(\"relationship_type\"),\n actorKind: text(\"actor_kind\").notNull(),\n actorSubjectId: text(\"actor_subject_id\").notNull(),\n actorSessionId: uuid(\"actor_session_id\"),\n actorTurnId: uuid(\"actor_turn_id\"),\n actorAttemptId: uuid(\"actor_attempt_id\"),\n actorExecutionGeneration: integer(\"actor_execution_generation\"),\n planHash: text(\"plan_hash\").notNull(),\n beforeState: jsonb(\"before_state\").$type<Record<string, unknown>>().notNull(),\n afterState: jsonb(\"after_state\").$type<Record<string, unknown>>().notNull(),\n revertsEventId: uuid(\"reverts_event_id\"),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n operationAction: uniqueIndex(\"knowledge_memory_lifecycle_events_operation_action_uq\").on(\n table.workspaceId,\n table.operationId,\n table.action,\n ),\n oneRevert: uniqueIndex(\"knowledge_memory_lifecycle_events_one_revert_uq\")\n .on(table.revertsEventId)\n .where(sql`${table.revertsEventId} is not null`),\n targetTimeline: index(\"knowledge_memory_lifecycle_events_target_timeline_idx\").on(\n table.workspaceId,\n table.targetMemoryId,\n table.createdAt.desc(),\n table.id,\n ),\n actorTimeline: index(\"knowledge_memory_lifecycle_events_actor_timeline_idx\").on(\n table.workspaceId,\n table.actorKind,\n table.actorSubjectId,\n table.createdAt.desc(),\n table.id,\n ),\n actionValid: check(\n \"knowledge_memory_lifecycle_events_action_chk\",\n sql`${table.action} in ('apply', 'revert')`,\n ),\n operationValid: check(\n \"knowledge_memory_lifecycle_events_operation_chk\",\n sql`${table.operationType} in ('reclassify', 'archive', 'relationship_add', 'relationship_remove', 'supersede', 'correct')`,\n ),\n relationshipShape: check(\n \"knowledge_memory_lifecycle_events_relationship_chk\",\n sql`(${table.operationType} in ('relationship_add', 'relationship_remove', 'supersede', 'correct') and ${table.relatedMemoryId} is not null and ${table.relationshipId} is not null and ${table.relationshipType} is not null) or (${table.operationType} in ('reclassify', 'archive') and ${table.relatedMemoryId} is null and ${table.relationshipId} is null and ${table.relationshipType} is null)`,\n ),\n actorValid: check(\n \"knowledge_memory_lifecycle_events_actor_chk\",\n sql`${table.actorKind} in ('subject', 'service') and length(btrim(${table.actorSubjectId})) between 1 and 1024`,\n ),\n attemptShape: check(\n \"knowledge_memory_lifecycle_events_attempt_shape_chk\",\n sql`(${table.actorSessionId} is null and ${table.actorTurnId} is null and ${table.actorAttemptId} is null and ${table.actorExecutionGeneration} is null) or (${table.actorSessionId} is not null and ${table.actorTurnId} is not null and ${table.actorAttemptId} is not null and ${table.actorExecutionGeneration} > 0)`,\n ),\n planHashShape: check(\n \"knowledge_memory_lifecycle_events_plan_hash_chk\",\n sql`${table.planHash} ~ '^[a-f0-9]{64}$'`,\n ),\n stateShape: check(\n \"knowledge_memory_lifecycle_events_state_chk\",\n sql`jsonb_typeof(${table.beforeState}) = 'object' and jsonb_typeof(${table.afterState}) = 'object' and not (${table.beforeState} ?| array['text', 'sourceRefs', 'source_refs', 'metadata', 'embedding']) and not (${table.afterState} ?| array['text', 'sourceRefs', 'source_refs', 'metadata', 'embedding'])`,\n ),\n revertShape: check(\n \"knowledge_memory_lifecycle_events_revert_shape_chk\",\n sql`(${table.action} = 'apply' and ${table.revertsEventId} is null) or (${table.action} = 'revert' and ${table.revertsEventId} is not null)`,\n ),\n workspaceIdentity: uniqueIndex(\"knowledge_memory_lifecycle_events_workspace_id_uq\").on(\n table.workspaceId,\n table.id,\n ),\n }),\n);\n","import { sql } from \"drizzle-orm\";\nimport {\n bigint,\n boolean,\n index,\n integer,\n jsonb,\n pgTable,\n text,\n timestamp,\n uniqueIndex,\n uuid,\n} from \"drizzle-orm/pg-core\";\n\n// Cross-row/composite foreign keys, immutable-history triggers, lifecycle\n// functions, and FORCE-RLS policies live in migration 0154. This schema leaf is\n// deliberately cycle-free so the repository module can use typed table names\n// without making the main schema declaration harder to navigate.\n\nfunction tenantScopeColumns() {\n return {\n accountId: uuid(\"account_id\").notNull(),\n scopeKind: text(\"scope_kind\").notNull(),\n scopeWorkspaceId: uuid(\"scope_workspace_id\"),\n scopeSubjectId: text(\"scope_subject_id\"),\n scopeKey: text(\"scope_key\").notNull(),\n };\n}\n\nfunction actorColumns() {\n return {\n actorKind: text(\"actor_kind\").notNull(),\n actorSubjectId: text(\"actor_subject_id\").notNull(),\n initiatingHumanSubjectId: text(\"initiating_human_subject_id\"),\n };\n}\n\nexport const knowledgeOperationReceipts = pgTable(\n \"knowledge_operation_receipts\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n ...tenantScopeColumns(),\n operationKind: text(\"operation_kind\").notNull(),\n operationNamespace: text(\"operation_namespace\").notNull(),\n operationId: text(\"operation_id\").notNull(),\n inputHash: text(\"input_hash\").notNull(),\n resultId: uuid(\"result_id\").notNull(),\n ...actorColumns(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n operation: uniqueIndex(\"knowledge_operation_receipts_operation_uq\").on(\n table.accountId,\n table.operationKind,\n table.operationNamespace,\n table.operationId,\n ),\n result: index(\"knowledge_operation_receipts_result_idx\").on(\n table.operationKind,\n table.resultId,\n ),\n }),\n);\n\nexport const knowledgeProviders = pgTable(\n \"knowledge_providers\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n ...tenantScopeColumns(),\n providerKey: text(\"provider_key\").notNull(),\n externalTenantId: text(\"external_tenant_id\").notNull(),\n lifecycleState: text(\"lifecycle_state\").notNull().default(\"active\"),\n lifecycleGeneration: bigint(\"lifecycle_generation\", { mode: \"number\" }).notNull().default(1),\n operationId: text(\"operation_id\").notNull(),\n inputHash: text(\"input_hash\").notNull(),\n ...actorColumns(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n externalIdentity: uniqueIndex(\"knowledge_providers_external_identity_uq\").on(\n table.accountId,\n table.providerKey,\n table.externalTenantId,\n ),\n operation: uniqueIndex(\"knowledge_providers_operation_uq\").on(\n table.accountId,\n table.operationId,\n ),\n scopeIdentity: uniqueIndex(\"knowledge_providers_scope_identity_uq\").on(\n table.accountId,\n table.id,\n table.scopeKey,\n ),\n scopeLifecycle: index(\"knowledge_providers_scope_lifecycle_idx\").on(\n table.accountId,\n table.scopeKey,\n table.lifecycleState,\n ),\n }),\n);\n\nexport const knowledgeSources = pgTable(\n \"knowledge_sources\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n ...tenantScopeColumns(),\n providerId: uuid(\"provider_id\").notNull(),\n externalSourceId: text(\"external_source_id\").notNull(),\n sourceKind: text(\"source_kind\").notNull(),\n sourceUri: text(\"source_uri\"),\n currentAclGeneration: bigint(\"current_acl_generation\", { mode: \"number\" }),\n syncGeneration: bigint(\"sync_generation\", { mode: \"number\" }).notNull().default(0),\n syncCursor: text(\"sync_cursor\"),\n lifecycleState: text(\"lifecycle_state\").notNull().default(\"active\"),\n lifecycleGeneration: bigint(\"lifecycle_generation\", { mode: \"number\" }).notNull().default(1),\n operationId: text(\"operation_id\").notNull(),\n inputHash: text(\"input_hash\").notNull(),\n ...actorColumns(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n externalIdentity: uniqueIndex(\"knowledge_sources_external_identity_uq\").on(\n table.providerId,\n table.externalSourceId,\n ),\n operation: uniqueIndex(\"knowledge_sources_operation_uq\").on(table.accountId, table.operationId),\n scopeIdentity: uniqueIndex(\"knowledge_sources_scope_identity_uq\").on(\n table.accountId,\n table.id,\n table.scopeKey,\n ),\n currentAcl: uniqueIndex(\"knowledge_sources_current_acl_identity_uq\").on(\n table.accountId,\n table.id,\n table.currentAclGeneration,\n ),\n provider: index(\"knowledge_sources_provider_idx\").on(table.providerId, table.externalSourceId),\n }),\n);\n\nexport const knowledgeSourceAclVersions = pgTable(\n \"knowledge_source_acl_versions\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n ...tenantScopeColumns(),\n sourceId: uuid(\"source_id\").notNull(),\n sourceScopeKey: text(\"source_scope_key\").notNull(),\n generation: bigint(\"generation\", { mode: \"number\" }).notNull(),\n aclVersion: text(\"acl_version\"),\n aclHash: text(\"acl_hash\").notNull(),\n agentAccess: boolean(\"agent_access\").notNull().default(true),\n operationId: text(\"operation_id\").notNull(),\n inputHash: text(\"input_hash\").notNull(),\n ...actorColumns(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n sourceGeneration: uniqueIndex(\"knowledge_source_acl_versions_source_generation_uq\").on(\n table.accountId,\n table.sourceId,\n table.generation,\n ),\n sourceOperation: uniqueIndex(\"knowledge_source_acl_versions_source_operation_uq\").on(\n table.sourceId,\n table.operationId,\n ),\n sourceTimeline: index(\"knowledge_source_acl_versions_source_timeline_idx\").on(\n table.sourceId,\n table.generation,\n ),\n }),\n);\n\nexport const knowledgeSyncRuns = pgTable(\n \"knowledge_sync_runs\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n ...tenantScopeColumns(),\n sourceId: uuid(\"source_id\").notNull(),\n inputSyncGeneration: bigint(\"input_sync_generation\", { mode: \"number\" }).notNull(),\n inputLifecycleGeneration: bigint(\"input_lifecycle_generation\", { mode: \"number\" }).notNull(),\n inputCursor: text(\"input_cursor\"),\n inputHash: text(\"input_hash\").notNull(),\n operationId: text(\"operation_id\").notNull(),\n state: text(\"state\").notNull().default(\"started\"),\n outputCursor: text(\"output_cursor\"),\n watermark: timestamp(\"watermark\", { withTimezone: true }),\n metadata: jsonb(\"metadata\").$type<Record<string, unknown>>().notNull().default({}),\n errorCode: text(\"error_code\"),\n completionHash: text(\"completion_hash\"),\n ...actorColumns(),\n startedAt: timestamp(\"started_at\", { withTimezone: true }).notNull().defaultNow(),\n completedAt: timestamp(\"completed_at\", { withTimezone: true }),\n },\n (table) => ({\n sourceOperation: uniqueIndex(\"knowledge_sync_runs_source_operation_uq\").on(\n table.sourceId,\n table.operationId,\n ),\n sourceState: index(\"knowledge_sync_runs_source_state_idx\").on(\n table.sourceId,\n table.state,\n table.startedAt,\n ),\n }),\n);\n\nexport const knowledgeSourceObjects = pgTable(\n \"knowledge_source_objects\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n ...tenantScopeColumns(),\n sourceId: uuid(\"source_id\").notNull(),\n externalObjectId: text(\"external_object_id\").notNull(),\n documentId: uuid(\"document_id\"),\n lifecycleState: text(\"lifecycle_state\").notNull().default(\"active\"),\n lifecycleGeneration: bigint(\"lifecycle_generation\", { mode: \"number\" }).notNull().default(1),\n versionGeneration: bigint(\"version_generation\", { mode: \"number\" }).notNull().default(0),\n currentVersionId: uuid(\"current_version_id\"),\n operationId: text(\"operation_id\").notNull(),\n inputHash: text(\"input_hash\").notNull(),\n ...actorColumns(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n externalIdentity: uniqueIndex(\"knowledge_source_objects_external_identity_uq\").on(\n table.sourceId,\n table.externalObjectId,\n ),\n sourceOperation: uniqueIndex(\"knowledge_source_objects_source_operation_uq\").on(\n table.sourceId,\n table.operationId,\n ),\n scopeIdentity: uniqueIndex(\"knowledge_source_objects_scope_identity_uq\").on(\n table.accountId,\n table.id,\n table.scopeKey,\n ),\n sourceIdentity: uniqueIndex(\"knowledge_source_objects_source_identity_uq\").on(\n table.accountId,\n table.id,\n table.sourceId,\n table.scopeKey,\n ),\n currentVersion: uniqueIndex(\"knowledge_source_objects_current_version_identity_uq\").on(\n table.accountId,\n table.id,\n table.currentVersionId,\n ),\n }),\n);\n\nexport const knowledgeDocumentVersions = pgTable(\n \"knowledge_document_versions\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n ...tenantScopeColumns(),\n sourceId: uuid(\"source_id\").notNull(),\n objectId: uuid(\"object_id\").notNull(),\n versionGeneration: bigint(\"version_generation\", { mode: \"number\" }).notNull(),\n externalVersionId: text(\"external_version_id\").notNull(),\n contentSha256: text(\"content_sha256\").notNull(),\n ingestionKey: text(\"ingestion_key\").notNull(),\n sourceCursor: text(\"source_cursor\"),\n sourceMetadata: jsonb(\"source_metadata\").$type<Record<string, unknown>>().notNull().default({}),\n sourceCreatedAt: timestamp(\"source_created_at\", { withTimezone: true }),\n sourceUpdatedAt: timestamp(\"source_updated_at\", { withTimezone: true }),\n observedAt: timestamp(\"observed_at\", { withTimezone: true }).notNull().defaultNow(),\n aclVersionId: uuid(\"acl_version_id\").notNull(),\n aclGeneration: bigint(\"acl_generation\", { mode: \"number\" }).notNull(),\n documentId: uuid(\"document_id\"),\n fileId: uuid(\"file_id\"),\n locationMetadata: jsonb(\"location_metadata\")\n .$type<Record<string, unknown>>()\n .notNull()\n .default({}),\n operationId: text(\"operation_id\").notNull(),\n inputHash: text(\"input_hash\").notNull(),\n ...actorColumns(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n objectGeneration: uniqueIndex(\"knowledge_document_versions_object_generation_uq\").on(\n table.accountId,\n table.objectId,\n table.versionGeneration,\n ),\n objectExternalVersion: uniqueIndex(\"knowledge_document_versions_object_external_version_uq\").on(\n table.objectId,\n table.externalVersionId,\n ),\n objectIngestion: uniqueIndex(\"knowledge_document_versions_object_ingestion_uq\").on(\n table.objectId,\n table.ingestionKey,\n ),\n objectOperation: uniqueIndex(\"knowledge_document_versions_object_operation_uq\").on(\n table.objectId,\n table.operationId,\n ),\n objectIdentity: uniqueIndex(\"knowledge_document_versions_object_identity_uq\").on(\n table.accountId,\n table.objectId,\n table.id,\n ),\n scopeIdentity: uniqueIndex(\"knowledge_document_versions_scope_identity_uq\").on(\n table.accountId,\n table.id,\n table.scopeKey,\n ),\n }),\n);\n\nexport const knowledgeLifecycleEvents = pgTable(\n \"knowledge_lifecycle_events\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n ...tenantScopeColumns(),\n targetKind: text(\"target_kind\").notNull(),\n providerId: uuid(\"provider_id\"),\n sourceId: uuid(\"source_id\"),\n objectId: uuid(\"object_id\"),\n eventType: text(\"event_type\").notNull(),\n oldState: text(\"old_state\").notNull(),\n newState: text(\"new_state\").notNull(),\n oldGeneration: bigint(\"old_generation\", { mode: \"number\" }).notNull(),\n newGeneration: bigint(\"new_generation\", { mode: \"number\" }).notNull(),\n operationId: text(\"operation_id\").notNull(),\n inputHash: text(\"input_hash\").notNull(),\n reasonCode: text(\"reason_code\").notNull(),\n ...actorColumns(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n targetTimeline: index(\"knowledge_lifecycle_events_target_timeline_idx\").on(\n table.targetKind,\n table.providerId,\n table.sourceId,\n table.objectId,\n table.createdAt,\n ),\n }),\n);\n\nexport const knowledgeEntities = pgTable(\n \"knowledge_entities\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n ...tenantScopeColumns(),\n entityType: text(\"entity_type\").notNull(),\n normalizedKey: text(\"normalized_key\").notNull(),\n displayName: text(\"display_name\").notNull(),\n operationId: text(\"operation_id\").notNull(),\n inputHash: text(\"input_hash\").notNull(),\n ...actorColumns(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n naturalIdentity: uniqueIndex(\"knowledge_entities_natural_identity_uq\").on(\n table.accountId,\n table.scopeKey,\n table.entityType,\n table.normalizedKey,\n ),\n operation: uniqueIndex(\"knowledge_entities_operation_uq\").on(\n table.accountId,\n table.operationId,\n ),\n scopeIdentity: uniqueIndex(\"knowledge_entities_scope_identity_uq\").on(\n table.accountId,\n table.id,\n table.scopeKey,\n ),\n }),\n);\n\nexport const knowledgeEntityAliases = pgTable(\n \"knowledge_entity_aliases\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n ...tenantScopeColumns(),\n entityId: uuid(\"entity_id\").notNull(),\n entityType: text(\"entity_type\").notNull(),\n alias: text(\"alias\").notNull(),\n normalizedAlias: text(\"normalized_alias\").notNull(),\n operationId: text(\"operation_id\").notNull(),\n inputHash: text(\"input_hash\").notNull(),\n ...actorColumns(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n naturalIdentity: uniqueIndex(\"knowledge_entity_aliases_natural_identity_uq\").on(\n table.accountId,\n table.scopeKey,\n table.entityType,\n table.normalizedAlias,\n ),\n operation: uniqueIndex(\"knowledge_entity_aliases_operation_uq\").on(\n table.accountId,\n table.operationId,\n ),\n entity: index(\"knowledge_entity_aliases_entity_idx\").on(table.entityId, table.createdAt),\n }),\n);\n\nexport const knowledgeFacts = pgTable(\n \"knowledge_facts\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n ...tenantScopeColumns(),\n subjectEntityId: uuid(\"subject_entity_id\").notNull(),\n predicateKey: text(\"predicate_key\").notNull(),\n objectKind: text(\"object_kind\").notNull(),\n objectEntityId: uuid(\"object_entity_id\"),\n objectValue: jsonb(\"object_value\").$type<unknown>(),\n objectHash: text(\"object_hash\").notNull(),\n operationId: text(\"operation_id\").notNull(),\n inputHash: text(\"input_hash\").notNull(),\n ...actorColumns(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n naturalIdentity: uniqueIndex(\"knowledge_facts_natural_identity_uq\").on(\n table.accountId,\n table.scopeKey,\n table.subjectEntityId,\n table.predicateKey,\n table.objectHash,\n ),\n operation: uniqueIndex(\"knowledge_facts_operation_uq\").on(table.accountId, table.operationId),\n scopeIdentity: uniqueIndex(\"knowledge_facts_scope_identity_uq\").on(\n table.accountId,\n table.id,\n table.scopeKey,\n ),\n }),\n);\n\nexport const knowledgeClaims = pgTable(\n \"knowledge_claims\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n ...tenantScopeColumns(),\n factId: uuid(\"fact_id\").notNull(),\n origin: text(\"origin\").notNull(),\n confidenceBps: integer(\"confidence_bps\").notNull(),\n effectiveAt: timestamp(\"effective_at\", { withTimezone: true }).notNull(),\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }),\n extractionMethod: text(\"extraction_method\").notNull(),\n extractionMetadata: jsonb(\"extraction_metadata\")\n .$type<Record<string, unknown>>()\n .notNull()\n .default({}),\n modelProvider: text(\"model_provider\"),\n modelName: text(\"model_name\"),\n modelVersion: text(\"model_version\"),\n operationId: text(\"operation_id\").notNull(),\n inputHash: text(\"input_hash\").notNull(),\n ...actorColumns(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n operation: uniqueIndex(\"knowledge_claims_operation_uq\").on(table.accountId, table.operationId),\n scopeIdentity: uniqueIndex(\"knowledge_claims_scope_identity_uq\").on(\n table.accountId,\n table.id,\n table.scopeKey,\n ),\n factTimeline: index(\"knowledge_claims_fact_timeline_idx\").on(\n table.factId,\n table.effectiveAt,\n table.createdAt,\n ),\n }),\n);\n\nexport const knowledgeClaimRelations = pgTable(\n \"knowledge_claim_relations\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n ...tenantScopeColumns(),\n relationType: text(\"relation_type\").notNull(),\n fromClaimId: uuid(\"from_claim_id\").notNull(),\n toClaimId: uuid(\"to_claim_id\").notNull(),\n operationId: text(\"operation_id\").notNull(),\n inputHash: text(\"input_hash\").notNull(),\n ...actorColumns(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n naturalIdentity: uniqueIndex(\"knowledge_claim_relations_natural_identity_uq\").on(\n table.relationType,\n table.fromClaimId,\n table.toClaimId,\n ),\n operation: uniqueIndex(\"knowledge_claim_relations_operation_uq\").on(\n table.accountId,\n table.operationId,\n ),\n }),\n);\n\nexport const knowledgeClaimEvidence = pgTable(\n \"knowledge_claim_evidence\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n ...tenantScopeColumns(),\n claimId: uuid(\"claim_id\").notNull(),\n documentVersionId: uuid(\"document_version_id\").notNull(),\n polarity: text(\"polarity\").notNull(),\n documentChunkId: uuid(\"document_chunk_id\"),\n chunkIndex: integer(\"chunk_index\"),\n locator: text(\"locator\"),\n quoteHash: text(\"quote_hash\"),\n contentHash: text(\"content_hash\").notNull(),\n operationId: text(\"operation_id\").notNull(),\n inputHash: text(\"input_hash\").notNull(),\n ...actorColumns(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n naturalIdentity: uniqueIndex(\"knowledge_claim_evidence_natural_identity_uq\").on(\n table.claimId,\n table.documentVersionId,\n table.polarity,\n sql`coalesce(${table.documentChunkId}::text, '')`,\n sql`coalesce(${table.locator}, '')`,\n ),\n operation: uniqueIndex(\"knowledge_claim_evidence_operation_uq\").on(\n table.accountId,\n table.operationId,\n ),\n claimPolarity: index(\"knowledge_claim_evidence_claim_polarity_idx\").on(\n table.claimId,\n table.polarity,\n table.createdAt,\n ),\n }),\n);\n\nexport const knowledgeClaimReviews = pgTable(\n \"knowledge_claim_reviews\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n ...tenantScopeColumns(),\n claimId: uuid(\"claim_id\").notNull(),\n reviewRevision: bigint(\"review_revision\", { mode: \"number\" })\n .notNull()\n .default(sql`nextval('knowledge_claim_review_revision_seq')`),\n state: text(\"state\").notNull(),\n reason: text(\"reason\").notNull(),\n operationId: text(\"operation_id\").notNull(),\n inputHash: text(\"input_hash\").notNull(),\n ...actorColumns(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n claimRevision: uniqueIndex(\"knowledge_claim_reviews_claim_revision_uq\").on(\n table.claimId,\n table.reviewRevision,\n ),\n operation: uniqueIndex(\"knowledge_claim_reviews_operation_uq\").on(\n table.accountId,\n table.operationId,\n ),\n claimTimeline: index(\"knowledge_claim_reviews_claim_timeline_idx\").on(\n table.claimId,\n table.reviewRevision,\n ),\n }),\n);\n\nexport const knowledgeChangeProposals = pgTable(\n \"knowledge_change_proposals\",\n {\n id: uuid(\"id\").primaryKey().defaultRandom(),\n ...tenantScopeColumns(),\n targetKind: text(\"target_kind\").notNull(),\n targetScope: text(\"target_scope\").notNull(),\n targetKey: text(\"target_key\"),\n content: text(\"content\").notNull(),\n contentHash: text(\"content_hash\").notNull(),\n claimId: uuid(\"claim_id\").notNull(),\n evidenceId: uuid(\"evidence_id\").notNull(),\n status: text(\"status\").notNull().default(\"proposed\"),\n operationId: text(\"operation_id\").notNull(),\n inputHash: text(\"input_hash\").notNull(),\n ...actorColumns(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n operation: uniqueIndex(\"knowledge_change_proposals_operation_uq\").on(\n table.accountId,\n table.operationId,\n ),\n claimTimeline: index(\"knowledge_change_proposals_claim_timeline_idx\").on(\n table.claimId,\n table.createdAt,\n ),\n }),\n);\n","import { sql } from \"drizzle-orm\";\nimport {\n boolean,\n check,\n index,\n integer,\n jsonb,\n pgTable,\n primaryKey,\n text,\n timestamp,\n uniqueIndex,\n uuid,\n} from \"drizzle-orm/pg-core\";\n\nexport const transcriptionRecordingStateValues = [\n \"uploading\",\n \"segmenting\",\n \"ready\",\n \"transcribing\",\n \"complete\",\n \"failed\",\n \"discarded\",\n] as const;\n\nexport const transcriptionRecordingChunkStateValues = [\"uploading\", \"complete\"] as const;\nexport const transcriptionRecordingObjectKindValues = [\"chunk\", \"segment\"] as const;\n\nexport const transcriptionRecordingSegmentStateValues = [\n \"preparing\",\n \"pending\",\n \"transcribing\",\n \"complete\",\n \"failed\",\n] as const;\n\nexport const transcriptionRecordings = pgTable(\n \"transcription_recordings\",\n {\n id: uuid(\"id\").primaryKey(),\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n subjectId: text(\"subject_id\").notNull(),\n mimeType: text(\"mime_type\").notNull(),\n state: text(\"state\", { enum: transcriptionRecordingStateValues })\n .notNull()\n .default(\"uploading\"),\n nextChunkNumber: integer(\"next_chunk_number\").notNull().default(0),\n chunkCount: integer(\"chunk_count\").notNull().default(0),\n totalBytes: integer(\"total_bytes\").notNull().default(0),\n totalDurationMilliseconds: integer(\"total_duration_milliseconds\").notNull().default(0),\n segmentCount: integer(\"segment_count\").notNull().default(0),\n completedSegmentCount: integer(\"completed_segment_count\").notNull().default(0),\n transcriptText: text(\"transcript_text\"),\n languages: jsonb(\"languages\").$type<string[]>().notNull().default([]),\n errorCode: text(\"error_code\"),\n retryable: boolean(\"retryable\").notNull().default(false),\n providerId: text(\"provider_id\"),\n processingGeneration: integer(\"processing_generation\").notNull().default(0),\n processingOwner: uuid(\"processing_owner\"),\n processingStartedAt: timestamp(\"processing_started_at\", { withTimezone: true }),\n objectsCleanedAt: timestamp(\"objects_cleaned_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n expiresAt: timestamp(\"expires_at\", { withTimezone: true }).notNull(),\n },\n (table) => ({\n exactAuthority: uniqueIndex(\"transcription_recordings_exact_authority_uq\").on(\n table.accountId,\n table.workspaceId,\n table.subjectId,\n table.id,\n ),\n subjectCreated: index(\"transcription_recordings_subject_created_idx\").on(\n table.workspaceId,\n table.subjectId,\n table.createdAt,\n ),\n expiry: index(\"transcription_recordings_expiry_idx\").on(table.expiresAt, table.id),\n valuesValid: check(\n \"transcription_recordings_values_check\",\n sql`${table.nextChunkNumber} >= 0\n and ${table.chunkCount} >= 0\n and ${table.totalBytes} >= 0\n and ${table.totalDurationMilliseconds} >= 0\n and ${table.segmentCount} >= 0\n and ${table.completedSegmentCount} >= 0\n and ${table.completedSegmentCount} <= ${table.segmentCount}\n and octet_length(${table.subjectId}) between 1 and 1024\n and octet_length(${table.mimeType}) between 1 and 128\n and (\n ${table.providerId} is null\n or octet_length(${table.providerId}) between 1 and 128\n )`,\n ),\n processingValid: check(\n \"transcription_recordings_processing_check\",\n sql`(\n ${table.processingOwner} is null\n and ${table.processingStartedAt} is null\n ) or (\n ${table.processingOwner} is not null\n and ${table.processingStartedAt} is not null\n )`,\n ),\n }),\n);\n\nexport const transcriptionRecordingObjects = pgTable(\n \"transcription_recording_objects\",\n {\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n subjectId: text(\"subject_id\").notNull(),\n recordingId: uuid(\"recording_id\").notNull(),\n objectKey: text(\"object_key\").primaryKey(),\n kind: text(\"kind\", { enum: transcriptionRecordingObjectKindValues }).notNull(),\n cleanupAfter: timestamp(\"cleanup_after\", { withTimezone: true }).notNull(),\n cleanupClaimId: uuid(\"cleanup_claim_id\"),\n cleanupClaimedAt: timestamp(\"cleanup_claimed_at\", { withTimezone: true }),\n cleanedAt: timestamp(\"cleaned_at\", { withTimezone: true }),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n dueCleanup: index(\"transcription_recording_objects_due_cleanup_idx\")\n .on(table.cleanupAfter, table.objectKey)\n .where(sql`${table.cleanedAt} is null`),\n claimRecovery: index(\"transcription_recording_objects_claim_recovery_idx\")\n .on(table.cleanupClaimedAt, table.objectKey)\n .where(sql`${table.cleanedAt} is null and ${table.cleanupClaimId} is not null`),\n valuesValid: check(\n \"transcription_recording_objects_values_check\",\n sql`octet_length(${table.objectKey}) between 1 and 1024\n and (\n (${table.cleanupClaimId} is null and ${table.cleanupClaimedAt} is null)\n or (${table.cleanupClaimId} is not null and ${table.cleanupClaimedAt} is not null)\n )\n and (\n ${table.cleanedAt} is null\n or (${table.cleanupClaimId} is null and ${table.cleanupClaimedAt} is null)\n )`,\n ),\n }),\n);\n\nexport const transcriptionRecordingChunks = pgTable(\n \"transcription_recording_chunks\",\n {\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n subjectId: text(\"subject_id\").notNull(),\n recordingId: uuid(\"recording_id\").notNull(),\n chunkNumber: integer(\"chunk_number\").notNull(),\n state: text(\"state\", { enum: transcriptionRecordingChunkStateValues })\n .notNull()\n .default(\"uploading\"),\n byteLength: integer(\"byte_length\").notNull(),\n sha256: text(\"sha256\").notNull(),\n startMilliseconds: integer(\"start_milliseconds\").notNull(),\n durationMilliseconds: integer(\"duration_milliseconds\").notNull(),\n objectKey: text(\"object_key\").notNull(),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n completedAt: timestamp(\"completed_at\", { withTimezone: true }),\n },\n (table) => ({\n pk: primaryKey({\n name: \"transcription_recording_chunks_pk\",\n columns: [table.recordingId, table.chunkNumber],\n }),\n recordingOrder: index(\"transcription_recording_chunks_order_idx\").on(\n table.workspaceId,\n table.recordingId,\n table.chunkNumber,\n ),\n objectKey: uniqueIndex(\"transcription_recording_chunks_object_key_uq\").on(table.objectKey),\n valuesValid: check(\n \"transcription_recording_chunks_values_check\",\n sql`${table.chunkNumber} >= 0\n and ${table.byteLength} > 0\n and ${table.startMilliseconds} >= 0\n and ${table.durationMilliseconds} >= 0\n and ${table.sha256} ~ '^[0-9a-f]{64}$'\n and octet_length(${table.objectKey}) between 1 and 1024\n and (\n (${table.state} = 'uploading' and ${table.completedAt} is null)\n or (${table.state} = 'complete' and ${table.completedAt} is not null)\n )`,\n ),\n }),\n);\n\nexport const transcriptionRecordingSegments = pgTable(\n \"transcription_recording_segments\",\n {\n accountId: uuid(\"account_id\").notNull(),\n workspaceId: uuid(\"workspace_id\").notNull(),\n subjectId: text(\"subject_id\").notNull(),\n recordingId: uuid(\"recording_id\").notNull(),\n segmentNumber: integer(\"segment_number\").notNull(),\n generation: integer(\"generation\").notNull(),\n state: text(\"state\", { enum: transcriptionRecordingSegmentStateValues })\n .notNull()\n .default(\"preparing\"),\n byteLength: integer(\"byte_length\").notNull(),\n sha256: text(\"sha256\").notNull(),\n startMilliseconds: integer(\"start_milliseconds\").notNull(),\n durationMilliseconds: integer(\"duration_milliseconds\").notNull(),\n objectKey: text(\"object_key\").notNull(),\n attemptId: uuid(\"attempt_id\"),\n attemptStartedAt: timestamp(\"attempt_started_at\", { withTimezone: true }),\n attemptDeadlineAt: timestamp(\"attempt_deadline_at\", { withTimezone: true }),\n transcriptText: text(\"transcript_text\"),\n languages: jsonb(\"languages\").$type<string[]>().notNull().default([]),\n providerId: text(\"provider_id\"),\n errorCode: text(\"error_code\"),\n retryable: boolean(\"retryable\").notNull().default(false),\n createdAt: timestamp(\"created_at\", { withTimezone: true }).notNull().defaultNow(),\n updatedAt: timestamp(\"updated_at\", { withTimezone: true }).notNull().defaultNow(),\n },\n (table) => ({\n pk: primaryKey({\n name: \"transcription_recording_segments_pk\",\n columns: [table.recordingId, table.segmentNumber],\n }),\n recordingOrder: index(\"transcription_recording_segments_order_idx\").on(\n table.workspaceId,\n table.recordingId,\n table.segmentNumber,\n ),\n objectKey: uniqueIndex(\"transcription_recording_segments_object_key_uq\").on(table.objectKey),\n valuesValid: check(\n \"transcription_recording_segments_values_check\",\n sql`${table.segmentNumber} >= 0\n and ${table.generation} > 0\n and ${table.byteLength} > 0\n and ${table.startMilliseconds} >= 0\n and ${table.durationMilliseconds} > 0\n and ${table.sha256} ~ '^[0-9a-f]{64}$'\n and octet_length(${table.objectKey}) between 1 and 1024\n and (\n (${table.attemptId} is null\n and ${table.attemptStartedAt} is null\n and ${table.attemptDeadlineAt} is null)\n or (${table.attemptId} is not null\n and ${table.attemptStartedAt} is not null\n and ${table.attemptDeadlineAt} is not null)\n )`,\n ),\n }),\n);\n"],"mappings":"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","names":["sql","bigint","boolean","check","index","integer","jsonb","pgTable","text","timestamp","uniqueIndex","uuid","sql","bigint","check","index","integer","jsonb","pgTable","text","timestamp","uniqueIndex","uuid","sql","check","index","integer","jsonb","pgTable","text","timestamp","uniqueIndex","uuid","sql","bigint","boolean","index","integer","jsonb","pgTable","text","timestamp","uniqueIndex","uuid","sql","boolean","check","index","integer","jsonb","pgTable","text","timestamp","uniqueIndex","uuid","pgTable","uuid","text","timestamp","uniqueIndex","jsonb","index","sql","check","integer","boolean","bigint"]}